   rem
   rem *** Hi-Res demo sequence ***
   rem
   rem Copyright 1987 Right Answers, All Rights Reserved
   rem Do Not Distribute
   rem
   print
   print "This is an example of a hi-res 640x400"
   print "animation, combining partial page-flipping,"
   print "and random text generation.";

rem  remember the current font directory in temp:
   execute a,"assign temp: fonts:"

rem  setup our font directory:
   execute a,"assign fonts: The_Director:fonts"

   pause 20:rem  so we can read startup message
   array 300,1
   setblack 1
   load 2,":pictures/tvframes.hi"
   load 1,":pictures/tvgirl.hi"
   load 3,":pictures/singleplane"
   loadfont 1,9,"topaz.font"
   loadfont 2,11,"crazy.font"

rem  got the fonts now, restore the original font directory:
   execute a,"assign fonts: temp:"

1 	abort 0:rem  prohibit abort for now 
	display 3:rem  our text screen

   margins -1,-1:rem  insure we're running default margins
   center 1

   clear
   setfont 2:move 0,100:text "a l i e n"
   setfont 1:move 0,120:text "view"

	fade 1,3,0:pause 40:fade 0,3,0

	clear
	move 0,100:text "by"
	setfont 2:move 0,120:text "keith doyle"

	fade 1,3,0:pause 40:fade 0,3,0

	clear
	move 0,110:text "software:"

	fade 1,3,0:pause 40:fade 0,3,0

	clear
	setfont 1:style 4,0:move 0,100:text "The Director"
	style 0,0:move 0,120:text "by"
	style 2,0:move 0,140:text "the Right Answers Group"

   fade 1,3,0:pause 40:fade 0,3,0
   clear

   display 1:rem  tvgirl

   abort 1

   setfont 2

rem  init our random text flag
   Z=1

   fade 1,1,0
   pause 20
   gosub 200:rem  do a wink
   pause 20
   pen 1,14

   rem ** we control the horizontal **
   t=433:u=434
20   move t,285:draw u,285:move u,286:draw t,286
   t=t-1:u=u+1
   if t#328:goto 20:endif

   rem ** we control the vertical **
   t=2
30   blit 2,0,199-t,329,285-t,210,t+t
   t=t+2
   if t#68:goto 30:endif
   pause 20
   pick=2
   C=2

   rem *** main loop ***
   for I=1 to 25
   gosub 300+C*100

11 if pick=C
     pick=?5
	 goto 11:rem  don't do one twice in a row
   endif

   C=pick
   if C#5
   	  gosub 100:rem  do snow if not #5
   endif
   pick=?6
   next

   gosub 9000:rem  power down
   fade 0,1,1
   pause 10
   goto 1

100 rem *** snow ***
   for i=1 to 5+?10
   blit 2,211,264,329,219,210,132
   blit 2,423,264,329,219,210,132
   next
   return

300 rem *** talking girl ***
   for i=1 to 15
   t=?2
   if t
      blit 2,0,0,329,219,210,132
   else
      blit 2,211,0,329,219,210,132
   endif
   pause 1
   next
   return

rem  *** outside wink ***
200 gosub 310
   pause 3
320   blit 2,481,239,303,53,23,14:rem redisplay open eye
   pen 1,0
   blitdest 2
   rect 481,238,504,252:rem erase saved eye
   blitdest -1
   return

310 blitdest 2
   blit 1,303,53,481,239,23,14:rem save open eye
   blitdest -1
   blit 2,522,50,303,53,23,14:rem display closed eye
   return

rem *** inside display and wink ***
400 blitdest 2
   blit 2,522,50,481,239,23,14:rem save closed eye
   blit 1,303,53,522,50,23,14:rem get open eye
   blitdest -1
   blit 2,423,0,329,219,210,132:rem display in tv
   pause 8
   blit 2,481,239,428,269,23,14:rem wink closed
   pause 3
   blit 2,522,50,428,269,23,14:rem wink open
   pause 8
   pen 1,0
   blitdest 2
   blit 2,481,239,522,50,23,14:rem restore closed eye
   rect 481,238,504,252:rem erase saved eye
   blitdest -1
   return

180 rem *** winking pauser ***
   rem   this routine will do a pause P, but once in a while
   rem   will do an outside wink while pausing
   if pick=5:P=0~(P-20):endif
   if (1#?5)|(P<4)
      pause P
      return
   endif
   T=(P-4)/2
   pause T
   gosub 200:rem outside wink
   pause T
   return

500 rem *** display test pattern ***
   blit 2,0,133,329,219,210,132
   P=20:goto 180

600 rem *** display nuke ***
   blit 2,211,133,329,219,210,132
   P=20:goto 180

700 rem *** display stude ***
   blit 2,423,133,329,219,210,132
   P=20:goto 180

800   rem *** techno text 1 ***
   rem uses Z as a toggle, to draw/erase text
   if Z

rem  build some random text
	lastc=-1
      for i=0 to 225
         if (0=?3)&(lastc#32):@(i)=32
         else @(i)=65+?26:endif
		 lastc=@(i)
      next

rem  divide into 3 strings, as string length limit is 100 chars each.
      @(i)=0
	  @(98)=0
	  @(198)=0

rem  draw box
      drawmode 0:pen 1,0:rem draw fancy box
      move 415,36:draw 415,144:draw 628,144:draw 628,36:draw 415,36
      move 416,37:draw 416,143:draw 627,143:draw 627,37:draw 416,37
      move 411,32:draw 411,148:draw 632,148:draw 632,32:draw 411,32
      move 412,33:draw 412,147:draw 631,147:draw 631,33:draw 412,33

rem  do the text
      margins 425,625
      move 425,50
      center 1
      text "JOIWEJHBSO 90827"
      center 0
      move 425,65
      text $0:text $100:text $200
      pen 0,0
   else

rem  erase text box
      pen 1,15
      rect 410,4,633,176
   endif
   Z=1-Z
   margins -1,-1

rem  ** add annotations

810   drawmode 2:rem xor mode
   pen 1,15
   move 173,29:draw 213,29:draw 291,69
   move 173,30:draw 213,30:draw 291,70
   move 175,27:text "FFNAG"
   move 105,54:draw 161,54:draw 266,167
   move 105,55:draw 161,55:draw 266,168
   move 107,52:text "ZPOTZL"
   move 44,168:draw 84,168:draw 141,200
   move 44,169:draw 84,169:draw 141,201
   move 46,166:text "REWPOQ"
   move 600,331:draw 578,331:draw 543,381
   move 600,332:draw 578,332:draw 543,382
   move 580,329:text "IUYX"
   drawmode -1
   return

9000 rem ** power down **
   blit 2,0,133,329,219,210,132
   if 0=Z:gosub 800:endif:rem  kill any leftover techno text

   pause 30

rem  reset stuff
   center 0
   setfont 2
   margins -1,-1
   drawmode -1

rem  remove the vertical
   t=2
   u=2
9010 blit 2,0,264,329,219,210,t+2
   blit 2,0,396-t,329,351-t,210,t
   t=t+2
   if t#66:goto 9010:endif
   pen 1,14
   move 329,285:draw 538,285:move 538,286:draw 329,286

   rem  remove the horizontal
9020 blit 2,u-2,330,327+u,285,2,2
   blit 2,210-u,330,539-u,285,2,2
   u=u+2
   if u#106:goto 9020:endif
   for i=13 to 5
   pause 2
   pen 1,i
   move 433,285:draw 434,285:move 434,286:draw 433,286
   next
   blit 2,u-2,330,327+u,285,2,2
   return

