Metropoli BBS
VIEWER: slide.a MODE: TEXT (ASCII)
%%HP: T(3)A(R)F(.);
DIR
  SLIDE.A
"
 GOSBVL =SAVPTR
 ST=0 15
 INTOFF
*V$ variables:
*hnyb, vlin (5,5) (+0,+5)
*currow (5) (+10)
*posn (10x7) (+15)
*imgdat (71) (+85)
*hard (5) (+156)
*stime (13) (+161)
*TOTAL:174 nybbles in V$
 LC(5) 174
 GOSBVL =MAKE$N
 A=R0
 GOSBVL =GPPushA *push V$
 GOSBVL =SAVPTR *update RPL pointers
 GOSUBL ERAMENU
 GOSUBL TITLE
*V$ initialization
 GOSUBL GETV$1 *D1 -> 1st var in V$
 C=0 A
 DAT1=C A *hnyb
 D1=D1+ 5
 DAT1=C A *vlin
 D1=D1+ 5
 LC(1) 3
 DAT1=C A *currow
 D1=D1+ 5
*place random data remainder of V$
*posn array:
 LC(2) 63 * #111111b
 B=C B
 D0=(5) (=CRC)
 LC(2) 14-1 *7x2x5 nybs in posn array
~i1
 CD0EX
 A=DAT0 W
 CD0EX
 A=0 W
 A=DAT0 2
 A=A&B B
 DAT1=A A
 D1=D1+ 5
 C=C-1 B
 GONC ~i1
*imgdat array:
 LC(2) 71-1 *64+7 nybs
~i2
 CD0EX
 A=DAT0 W
 CD0EX
 A=0 W
 A=DAT0 1
 DAT1=A 1
 D1=D1+ 1
 C=C-1 B
 GONC ~i2
*hard
 GOSUBL FINK
 C=B A *get difficulty level
 DAT1=C A
*misc. init's
 GOSUBL ERA56
 GOSUBL ERAMENU
 C=0 A
 ST=C  *zero ST flags 0-11
 GOSUBL TABLE *draw goal table
 C=0 W
 LC(3) 4095 *.5 sec.
 GOSUBL DELAY
 ST=1 9
 GOSUBL TABLE *draw play table
 GOSBVL =GetTimChk
 R3=C  *save TICKS \|> R3
 GOSUB GETV$1
 AD1EX
 LC(3) 161 *stime
 A=A+C X
 AD1EX
 C=R3
 DAT1=C 13
*actual game play
poop
 LC(5) crsr_n *\|> cursor img.
 B=C A
 GOSUBL CURSOR
 C=0 W
 LC(3) 819 *.1 sec.
 GOSUBL DELAY
 GOSUBL WINK
 B=0 A * erase cursor img.
 GOSUBL CURSOR
 GOSUBL GETV$1
 D1=D1+ 10 *D1 -> currow
 A=DAT1 A *A=currow

 ?ST=0 0 *\|^ not pressed?
 GOYES ~t2
 ST=0 0
 ?A=0 A
 GOYES ~t2
 A=A-1 A
 DAT1=A A *currow-=1
~t2
 ?ST=0 2 *\|v not pressed?
 GOYES ~f1
 ST=0 2
 LC(5) 6
 ?A=C A
 GOYES ~f1
 A=A+1 A
 DAT1=A A *currow+=1
~f1
 D1=D1+ 5 *D1 -> posn arry
 A=A+A A *currowx2
 B=A A
 A=A+A A *x4
 A=A+A A *x8
 B=B+A A *x10
 B=B+CON A,5 *x10+5
 CD1EX
 C=C+B A
 D1=C
 A=DAT1 A *this row's posn

 ?ST=0 1 *\-> not pressed?
 GOYES ~f3
 ST=0 1
 ?A=0 A
 GOYES ~f3
 A=A-1 A
 DAT1=A A *posn-=1
~f3
 ?ST=0 3 *\<- not pressed?
 GOYES ~f5
 ST=0 3
 LC(5) 63
 ?A=C A
 GOYES ~f5
 A=A+1 A
 DAT1=A A *posn+=1
~f5
 ?ST=0 5
 GOYES ~win?
 GOTO quit
~win?
 ST=1 9
 GOSUBL TABLE *draw play table
 GOSUB WIN?
 ?ST=1 8
 GOYES wquit
 GOTO poop
wquit
 A=0 W
 GOSUB GETV$1
 AD1EX
 LC(3) 156 *offset to hard
 A=A+C X
 AD1EX
 A=DAT1 A *get difficulty level
 R0=A  *& save in R0
 D1=D1+ 5 *D1 -> stime
 A=DAT1 13 *get start TICKS -> A.13
 R3=A
 GOSBVL =GetTimChk *get TICKS -> C.13
 A=R3
 P= 12
 C=C-A WP *calculate play time
 P= 0
 R3=C *save in R3
 GOSUBL REWARD *bells&whistles
 C=0 W
 LC(4) 8192*4 *4 sec.
 GOSUBL DELAY
 GOSBVL =GETPTR
 GOSBVL =PopSavptr
 GOSBVL =PUSH#
 GOSBVL =SAVPTR *push to RPL data stack
 INTON
 ST=1 15
 A=R3  *retrieve play time
 P= 12
 GOSBVL =PUSHhxsLoop *push to RPL data stack;exit to RPL
quit
 C=0 W
 ST=C
 LC(4) 819*4 *.4 sec.
 GOSUBL DELAY
 INTON
 ST=1 15
 GOSBVL =GETPTR
 GOVLNG =DropLoop 
*--------------------
*subroutines
GETV$1
 GOSBVL =D1=DSKTOP
 C=DAT1 A *C=addr of V$
 D1=C
 D1=D1+ 10 *past prolog
 RTN
*--------------------
*check goal vs. play table;
*set ST8 if match
WIN?
 GOSUB GETV$1
 D1=D1+ 15 *D1 -> posn array
 B=0 A
woop
 A=DAT1 A
 D1=D1+ 5
 C=DAT1 A
 D1=D1+ 5
 ?A#C A
 RTNYES
 B=B+1 A
 LC(2) 7
 ?B<C A
 GOYES woop
 ST=1 8
 RTN
*--------------------
 INCLUDE LCD.H
 INCLUDE TBL.H
 INCLUDE CURSOR.H
 INCLUDE DELAY.H
 INCLUDE WINK.H
 INCLUDE FINK.H
 INCLUDE REWARD.H
 INCLUDE TITL.H
"
  TITL.H
"
*TITLE.H
*--------------------
*display title screen
*uses routine GETSAD
*also uses A,C,D0,D1
TITLE
 GOSUB PastTS
 NIBHEX FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
 NIBHEX FFFFFFFFFBFFFFFFFFFFFFFFFFFFFFFF70
 NIBHEX FFFFFFFFF1FFFFFFA7FFFFFFFFFFFFFF70
 NIBHEX FFFFFFFBF4EFFFFFA3FFFBFFFFFFFFFF70
 NIBHEX FFFFFFF57ECFFFFFA5F9B17D65FB93DF70
 NIBHEX FFFFFBFE2F9FFFFFA7D55B7556D57D5F70
 NIBHEX FFFFF57F9B3FFFFFA7F55B7547D13B5F70
 NIBHEX FFFFEEAFC97EFFFFA7D55B7577DD575F70
 NIBHEX FFF55FD7ECFCFFFFA7F5B7FE4FC3393F70
 NIBHEX FFBABFE37EF9FFFFAFFFFFFFFFDFFF7F70
 NIBHEX FF7DD7F93FF3FFFFAFFFFFFFFFEFFFBF70
 NIBHEX FFBEEBFC9FF7EFFFAFFFFFFFFFFFFFFF70
 NIBHEX FF57FD7E3FDFCFFFA9FFFFFFF7FFFDFF70
 NIBHEX FFBBFE3F7ECF9FFFA7FFFFBBF7FFFDFF70
 NIBHEX FFDD7F9FF4EF3FFFA7F95B11D766DCFF70
 NIBHEX FFEEBFC1E9FF7EFFABD595BB57D56DFF70
 NIBHEX FF5FD7E1C3F7ECFFABF5D1BB57D47DFF70
 NIBHEX FFBFE3FC97E37EFFADD5DDBB57557DFF70
 NIBHEX FFD7F93F3FC93FFFA1F9D37737D4FCFF70
 NIBHEX FFEBFC7E7E9C9FFFAFFDFFFF7FFFFFFF70
 NIBHEX F7FD7EFCFC3ECFFFAFFDFFFFBFFFFFFF70
 NIBHEX FBFE37F9F977EFFFAFFFFFFFFFFFFFFF70
 NIBHEX F77F93F3F3F3FFFFA9FFFFD7BFFFFF7F70
 NIBHEX FFAFC9F7E3F9FFFFA7FFFFE7BFFFFF7F70
 NIBHEX FFD7E4EFC3FCFFFFA7F9D545BDF45D6F70
 NIBHEX FFE3FFCF937EFFFFABD75D65B577655F70
 NIBHEX F7F9FF9F393FFFFFA7F35D65B577754F70
 NIBHEX FBFCFF3F7E9FFFFFA7D55D65B577757F70
 NIBHEX FD7EFF7EFECFFFFFA9F3BEEC63F4FCCE70
 NIBHEX FE3FFFFCF7EFFFFFAFFFFFFFF7FFFFFF70
 NIBHEX FD93FFF9F3FFFFFFAFFFFFFFFBFFFFFF70
 NIBHEX FBC7EFFBC9FFFFFFAFFFFFFFFFFFFFFF70
 NIBHEX F7EFCFF7ECFFFFFFA5FFFFFDFFFEFFFF70
 NIBHEX F37F9FF37EFFFFFFA5FFDFFDFBFEFFFF70
 NIBHEX F93F3FFB3FFFFFFFA5F37A9DEFCCA43370
 NIBHEX FC9F7EFF9FFFFFFFA5DD555DABAAAAEA60
 NIBHEX 7ECFFC7ECBFFFFFFA1FB555DABAAAA6A60
 NIBHEX 3FCFF937EBFFFFFFA7D7555DABAAAAAA60
 NIBHEX 7ECFF393FDFFFFFFA7F9559B9BAA9A6A60
 NIBHEX FC9FFFC9F17BFFFFFFFFFFDFBFFFFFFF70
 NIBHEX F930CFECFEADFFFFFFFFFFDFDFFFFFFF70
 NIBHEX F3702F7EF6BDFFFFFFFFFFFFFFFFFFFF70
 NIBHEX F7EF7E3F77DEFFFFFFFFFFFFFFFFFFFF70
 NIBHEX FFCF7E9F7BDEFFFFFFFFFFFFFFFFFFFF70
 NIBHEX FF9F7ECF7C3FFFFFFFFFFFFFFFFFFFFF70
 NIBHEX FF3F37EFFF7FFFFFFFFFFFFFFFFFFFFF70
 NIBHEX FF7E93FFFFBFFFFFFFFFFFFFFFFFFFFF70
 NIBHEX FFFCD9FFFFFFFFFFFFFFFFFFFFFFFFFF70
 NIBHEX FFF9FCFFFFFFFFFFFFFFFFFFFFFFFFFF70
 NIBHEX FFF37EFFFF7ED8DF8336881E9113EC6360
 NIBHEX FFF72FFFFFBDA6DF6DA5F6BFEBDA5B4D70
 NIBHEX FFFF8FFFFFB7BADFADA6CABF2B5B6B2370
 NIBHEX FFFFDFFFFFB786DF6DA5F6BF6BDA5B6F60
 NIBHEX FFFFFFFFFF74B61E633686BF9113EC6170
 NIBHEX FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70
 NIBHEX 0000000000000000000000000000000000
PastTS
 C=RSTK
 D1=C
 GOSUBL GETSAD
 LC(5) 119-1 *119x16 = 56x34
T_loop
 A=DAT1 16
 DAT0=A 16
 D0=D0+ 16
 D1=D1+ 16
 C=C-1 A
 GONC T_loop
 RTN
"
  REWARD.H
"
*REWARD.H (subroutine)
*--------------------
*flashy screen & sound f/x
*uses A,B,C,D0,R4 & 3 RSTK levels
minc EQU 3
maxc EQU #13
REWARD
 GOSBVL =getBPOFF
 D0=(5) #101
 A=DAT0 B
 R4=A.F B  *contrast -> R4
 GOSUB pale1
 GOSUB dark1
 GOSUB pale1
 GOSUB dark1
 GOSUB pale1
 GOSUB dark1
 A=R4.F B
 DAT0=A B *restore contrast
 RTN
pale1
 LC(2) minc
 ?A<=C B
 RTNYES
 A=A-1 B
 DAT0=A B
 GOSUB ~eep
 GOTO pale1
dark1
 LC(2) maxc
 ?A>=C B
 RTNYES
 A=A+1 B
 DAT0=A B
 GOSUB ~eep
 GOTO dark1
~eep
 ?ST=1 4
 GOYES ~noeep
 LC(2) 19
 B=C B
~eeploop
 LC(3) #800
 OUT=C
 C=A B
 C=C+CON B,16
 C=C+CON B,3
~ee1
 C=C-1 B
 GONC ~ee1
 C=0 A
 OUT=C
 C=A B
 C=C+CON B,16
 C=C+CON B,3
~ee2
 C=C-1 B
 GONC ~ee2
 B=B-1 B
 GONC ~eeploop
 RTN
~noeep
 LC(3) 20*30*2 *just delay, don't eep
~noeep1
 C=C-1 X
 GONC ~noeep1
 RTN
"
  FINK.H
"
*FINK.H (subroutine)
*--------------------
*FINK: first key input
*returns value of key
*pressed (0-4) in B.A
*also uses A,C & 1 RSTK level
FINK
 C=0 A
 B=0 A
floop
 LCHEX 004 *4 row
 OUT=C
 GOSBVL =AINRTN
 LCHEX 0008 *4 col
 C=C&A A
 ?C=0 A
 GOYES ~fk4
 B=B+CON A,4
 RTN
~fk4
 LCHEX 002 *123 row
 OUT=C
 GOSBVL =AINRTN
 LCHEX 0002 *3 col
 C=C&A A
 ?C=0 A
 GOYES ~fk3
 B=B+CON A,3
 RTN
~fk3
 LCHEX 0004 *2 col
 C=C&A A
 ?C=0 A
 GOYES ~fk2
 B=B+CON A,2
 RTN
~fk2
 LCHEX 0008 *1 col
 C=C&A A
 ?C=0 A
 GOYES ~fk1
 B=B+1 A
 RTN
~fk1
 LCHEX 001 *0 row
 OUT=C
 GOSBVL =AINRTN
 LCHEX 0008 *0 col
 C=C&A A
 ?C#0 A
 RTNYES
 GOTO floop
"
  WINK.H
"
*WINK.H (subroutine)
*--------------------
*WINK: wait for key input
*& set an ST flag;
*\|^ ST0, \-> ST1, \|v ST2,
*\<- ST3, ENTER&BS ST5.
*also uses A,C & 1 RSTK level
WINK
 C=0 A
kloop
 LCHEX 080 *\|^ row
 OUT=C
 GOSBVL =AINRTN
 LCHEX 0002 *\|^ col
 C=C&A A
 ?C=0 A
 GOYES ~k1
 ST=1 0
 RTN
~k1
 LCHEX 040 *\<-\|v\-> row
 OUT=C
 GOSBVL =AINRTN
 LCHEX 0001 *\-> col
 C=C&A A
 ?C=0 A
 GOYES ~k2
 ST=1 1
 RTN
~k2
 LCHEX 0002 *\|v col
 C=C&A A
 ?C=0 A
 GOYES ~k3
 ST=1 2
 RTN
~k3
 LCHEX 0004 *\<- col
 C=C&A A
 ?C=0 A
 GOYES ~k5
 ST=1 3
 RTN
~k5
 LCHEX 010 *ENTER,BS row
 OUT=C
 GOSBVL =AINRTN
 LCHEX 0011 *either
 C=C&A A
 ?C#0 A
 GOYES ~kq
 GOTO kloop
~kq
 ST=1 5
 RTN
"
  TBL.H
"
*TBL.H (subroutine)
*--------------------
*TABLE: 49 images
*uses routines GETV$1 and IMAGE
*& lots of registers(R1)
TABLE
 D=0 A *row counter
~y1
 LC(5) 7-1 *col counter
~y2
 R1=C *save col counter
 GOSUBL GETV$1
 C=R1
 C=C+C A *colx2
 ?ST=0 9
 GOYES ~o1
 C=C+CON A,16 *+16 nybs for plr's table
~o1
 C=C+1 A
 DAT1=C A *hnyb=colx2
 D1=D1+ 5
 C=D A   *0<C<6
 C=C+C A *Cx2
 C=C+C A *x4
 C=C+C A *x8
 C=C-D A *x7
 C=C+CON A,4
 DAT1=C A *vlin=row
 D1=D1+ 10 *point to posn arry
 C=D A
 C=C+C A *rowx2
 B=C A
 C=C+C A *x4
 C=C+C A *x8
 B=B+C A *x10
 ?ST=0 9
 GOYES ~o2
 B=B+CON A,5 *x10+5
~o2
 CD1EX
 C=C+B A
 D1=C
 A=DAT1 A *this row's posn
 GOSUBL GETV$1
 CD1EX
 B=C A
 LC(5) 85
 B=B+C A *point to imgdat arry
 B=B+A A *add posn offset
 C=R1
 C=C+B A *add col offset
 D1=C
 C=0 A
 C=DAT1 1
 C=C+1 A
 A=C A *A=image#
 GOSUBL GETV$1
 CD1EX
 B=C A
 LC(5) 156
 C=C+B A *C=addr of hard
 D1=C
 C=DAT1 A *C=hard
 C=C+C A *x2
 C=C+C A *x4
 C=C+C A *x8
 C=C+C A *x16
 C=C+A A *x16+image#
 B=C A
 GOSUBL IMAGE
 C=R1
 C=C-1 A
 GOC oC
 GOTO ~y2
oC
 D=D+1 A
 LC(2) 7
 ?C<=D B
 GOYES oD
 GOTO ~y1
oD
 RTN
"
  LCD.H
"
*LCD.H (subroutines)
*--------------------
*get grob address into D0
*GETMAD: menu grob addr
*GETSAD: screen addr
*use A,D0, and new supported entries (equates)
aVDISP EQU #1263A *=addrVDISP
aVDISP2 EQU #1264A *=addrVDISP2
aADISP EQU #1265A *=addrADISP
GETMAD
 D0=(5) (aVDISP2)+2
 GOTO ~g
GETSAD
 D0=(5) (aVDISP)+2
~g
 A=DAT0 A *addr of addr of grob
 D0=A
 A=DAT0 A *addr of grob
 D0=A
 D0=D0+ 10
 D0=D0+ 10 *past prolog
 RTN
*--------------------
*erase portions of LCD
*ERAMENU: menu grob
*ERA56: stack & status areas
*use A,C,D0 & 1 RSTK level
ERAMENU
 GOSUB GETMAD
 LC(5) 17-1 *17x16 = 8x34
 GOTO ~e
ERA56
 GOSUB GETSAD
 LC(5) 119-1 *119x16 = 56x34
~e
 A=0 W
 A=-A-1 W
ERAloop
 DAT0=A 16
 D0=D0+ 16
 C=C-1 A
 GONC ERAloop
 RTN
*--------------------
*OFFSET: add addr offset
*to base address in D0
*uses A,C,D0,D1 & 1 RSTK level
OFFSET
 GOSBVL =D1=DSKTOP
 C=DAT1 A
 D1=C
 D1=D1+ 15
 A=DAT1 A *A=row
 A=A+A A *A=rx2
 C=A A
 A=A+A A *A=rx4
 A=A+A A *A=rx8
 A=A+A A *A=rx16
 A=A+A A *A=rx32
 A=A+C A *A=rx34
 D1=D1- 5
 C=DAT1 A
 A=A+C A *A=rx34+n
 CD0EX
 A=A+C A *add offset to D0
 D0=A
 RTN
*--------------------
*IMAGE: draw 2nyb x 7row image
*at coordinates in V$;
*draws image# in B.A
*uses A,B,C,D0,D1 & 2 RSTK levels
IMAGE
 GOSUB GETSAD *D0\->screen RAM
 GOSUB OFFSET *plus offset
 GOSUB PastData
*img 0
 NIBHEX FFFFFFFFFFFFFF
*imgs 1-4
 NIBHEX FFFE7EFEFE7CFF
 NIBHEX FF7CBBFDFE38FF
 NIBHEX FF38FDFCBB7CFF
 NIBHEX FFFA7B38FBFBFF
*imgs 5-8
 NIBHEX FF38BF3CFBFCFF
 NIBHEX FFFDFE7CBB7CFF
 NIBHEX FF38FBFDFEFEFF
 NIBHEX FF7CBB7CBB7CFF
*imgs 9-12
 NIBHEX FF7CBB78FBFBFF
 NIBHEX FF7CBB38BBBBFF
 NIBHEX FF3CBB3CBB3CFF
 NIBHEX FF7CBBBFBF7CFF
*imgs 13-16
 NIBHEX FF3EBDBBBB3CFF
 NIBHEX FF38BF3CBF38FF
 NIBHEX FF38BF3CBFBFFF
 NIBHEX FF7CBBBBBB7CFF
*imgs 17-20
 NIBHEX 00000000000000
 NIBHEX 000000000000FF
 NIBHEX 0000000000FFFF
 NIBHEX 00000000FFFFFF
*imgs 21-24
 NIBHEX 000000FFFFFFFF
 NIBHEX 0000FFFFFFFFFF
 NIBHEX 00FFFFFFFFFFFF
 NIBHEX FFFFFFFFFFFFFF
*imgs 25-28
 NIBHEX 00FFFFFFFFFF00
 NIBHEX FFFFFFFFFFFF00
 NIBHEX FFFFFFFFFF0000
 NIBHEX FFFFFFFF000000
*imgs 29-32
 NIBHEX FFFFFF00000000
 NIBHEX FFFF0000000000
 NIBHEX FF000000000000
 NIBHEX FF0000000000FF
*imgs 33-36
 NIBHEX 0F0F0F0F0F0F0F
 NIBHEX F0F0F0F0F0F0F0
 NIBHEX FFFFFFFF000000
 NIBHEX 000000FFFFFFFF
*imgs 37-40
 NIBHEX 0000000F0F0F0F
 NIBHEX 000000F0F0F0F0
 NIBHEX 0F0F0F0F000000
 NIBHEX F0F0F0F0000000
*imgs 41-44
 NIBHEX FFFFFFFFF0F0F0
 NIBHEX FFFFFFFF0F0F0F
 NIBHEX F0F0F0FFFFFFFF
 NIBHEX 0F0F0FFFFFFFFF
*imgs 45-48
 NIBHEX FFFFFFFFFFFFFF
 NIBHEX 00000000000000
 NIBHEX 0F0F0FFFF0F0F0
 NIBHEX F0F0F0FF0F0F0F
*imgs 49-52
 NIBHEX 00000000000000
 NIBHEX 000000FF000000
 NIBHEX 81818181818181
 NIBHEX 818181FF818181
*imgs 53-56
 NIBHEX 818181FF000000
 NIBHEX 8181818F818181
 NIBHEX 000000FF818181
 NIBHEX 818181F1818181
*imgs 57-60
 NIBHEX 818181F1000000
 NIBHEX 8181818F000000
 NIBHEX 000000F1818181
 NIBHEX 0000008F818181
*imgs 61-64
 NIBHEX 818181FF818181
 NIBHEX 818181FF818181
 NIBHEX 818181FF818181
 NIBHEX 818181FF818181
*imgs 65-68
 NIBHEX 8FCFEFFFF7F3F1
 NIBHEX F1F3F7FFEFCF8F
 NIBHEX 8FCFEFFFF7F3F1
 NIBHEX F1F3F7FFEFCF8F
*imgs 69-72
 NIBHEX 8FCFEFFFFFFFFF
 NIBHEX F1F3F7FFFFFFFF
 NIBHEX FFFFFFFFF7F3F1
 NIBHEX FFFFFFFFEFCF8F
*imgs 73-76
 NIBHEX 8FCFEFFFF7F3F1
 NIBHEX F1F3F7FFEFCF8F
 NIBHEX 8FCFEFFFF7F3F1
 NIBHEX F1F3F7FFEFCF8F
*imgs 77-80
 NIBHEX 8FCFEFFFFFFFFF
 NIBHEX F1F3F7FFFFFFFF
 NIBHEX FFFFFFFFEFCF8F
 NIBHEX FFFFFFFFF7F3F1
crsr_n EQU 81
 NIBHEX FFFEFCF8FCFEFF
PastData C=RSTK
* add img#x14 to C
 B=B+B A
 C=C+B A
 B=B+B A
 C=C+B A
 B=B+B A
 C=C+B A
 D1=C  *D1->img data
 LC(2) 7-1 *7 rows in img
IMGCopy
 A=DAT1 2
 DAT0=A 2 *copy 1 row (2 nybs) of img data
 D0=D0+ 16
 D0=D0+ 16
 D0=D0+ 2 *next scrn row
 D1=D1+ 2 *next data row
 C=C-1 B
 GONC IMGCopy
 RTN
*--------------------
"
  CURSOR.H
"
*CURSOR.H
*--------------------
*draw image in B.A in cursor column
*uses routines GETV$1 and IMAGE
*& lots of registers
CURSOR
 GOSUBL GETV$1
 LC(5) 15
 DAT1=C A *hnyb=15;between tables
 D1=D1+ 10
 C=DAT1 A *C=currow
 D1=D1- 5
 D=C A
 C=C+C A *x2
 C=C+C A *x4
 C=C+C A *x8
 C=C-D A *x7
 C=C+CON A,4 *x7+4
 DAT1=C A *vlin=C
 GOSUBL IMAGE
 RTN
*--------------------
"
  DELAY.H
"
*DELAY.H (subroutine)
*--------------------
*by Doug Cannon
*DELAY C.W ticks
*uses A,B,C,D,P,D1,R1,R2,& 4 RSTK levels
DELAY
 R1=C  *R1=ticks to wait
 GOSBVL =GetTimChk
 R2=C  *R2=start tick
~delay
 GOSBVL =GetTimChk *C=current tick
 A=R2
 P= 12  *only use 13 nybs
 C=C-A WP *C=current-start tick
 A=R1  *A=ticks to wait
 ?A>=C WP
 GOYES ~delay
 P= 0
 RTN
"
END
[ RETURN TO DIRECTORY ]