:: CK0NOLASTWD RECLAIMDISP TURNMENUOFF CODE WLIM+ EQU #040 WLIM- EQU #020 WLIM0 EQU #008 GOSBVL =SAVPTR INTOFF GOSUB Demo INTON GOVLNG =GETPTRLOOP Demo GOSBVL =clrbusy GOSBVL =D0->Row1 ->row1 R1=A.F A A=0 B R2=A.F B R3=A.F B ********************************* * R1[A] ->display * R2[B] * R3[B] ********************************* Whirl GOSUB TopUpRt GOSUB DnRt GOSUB BotDnLt GOSUB StaLtUp GOSUB Generate A=R2.F B A=A+CON B,11 R2=A.F B A=R3.F B A=A+CON B,11 R3=A.F B GOSUB EndRtUp GOSUB TopUpLt GOSUB BegLtDn GOSUB BotDnRt GOSUB Generate A=R2.F B A=A+CON B,11 R2=A.F B A=R3.F B A=A+CON B,11 R3=A.F B GOSBVL =chk_attn RTNC D0=(5) =CRC A=DAT0 A LC(3) WLIM+ ?A<C X GOYES + GOTO Whirl + LC(3) WLIM- ?A>=C X GOYES Whirl- Whirl+ GOSUB TopUpRt GOSUB DnRt GOSUB BotDnLt GOSUB StaLtUp GOSUB Generate A=R2.F B A=A+CON B,9 R2=A.F B A=R3.F B A=A+CON B,9 R3=A.F B GOSBVL =chk_attn RTNC D0=(5) =CRC A=DAT0 A LC(3) WLIM0 ?A>C X GOYES Whirl+ GOTO Whirl Whirl- GOSUB EndRtUp GOSUB TopUpLt GOSUB BegLtDn GOSUB BotDnRt GOSUB Generate A=R2.F B A=A+CON B,9 R2=A.F B A=R3.F B A=A+CON B,9 R3=A.F B GOSBVL =chk_attn RTNC D0=(5) =CRC A=DAT0 X LC(3) WLIM0 ?A>C X GOYES Whirl- GOTO Whirl ********************************* Generate D0=(5) =CRC A=R1.F A LC(5) 28*34+15 A=A+C A D1=A P= 16-8 - A=DAT0 B C=DAT1 B CBIT=0 3 ?ABIT=0 3 GOYES + CBIT=1 3 + CBIT=0 4 ?ABIT=0 4 GOYES + CBIT=1 4 + DAT1=C B D1=D1+ 34 P=P+1 GONC - AD1EX LC(5) 4*34 A=A-C A AD1EX P= 16-2 - A=DAT0 B DAT1=A B D0=D0- 34 D1=D1- 34 P=P+1 GONC - RTN ********************************* * Move right R3 nibs down & right ********************************* DnRt A=R1.F A LC(5) 34*64-3 A=A+C A C=0 A C=R3.F P A=A-C A D1=A LC(5) 34 A=A-C A D0=A LC(2) 64-2 D=C B C=R3.F P P=C 0 - C=DAT1 B A=DAT0 WP A=A+A WP ?CBIT=0 0 GOYES + A=A+1 B + DAT1=A WP D0=D0- 34 D1=D1- 34 D=D-1 B GONC - P= 0 RTN ********************************* * Move left R3 nibbles up & left ********************************* StaLtUp A=R1.F A D1=A LC(5) 34 A=A+C A D0=A LC(2) 64-2 D=C B C=R3.F P P=C 0 - A=DAT0 WP C=DAT1 WP ASRB.F WP C=C+C WP GONC + LCHEX 8 A=A+C P + DAT1=A WP D0=D0+ 34 D1=D1+ 34 D=D-1 B GONC - P= 0 RTN ********************************* * Shift R2 bot rows down & left ********************************* BotDnLt C=R2.F B LA(2) #1F C=C&A B ?C=0 B RTNYES C=C-1 B D=C B A=R1.F A ->display LC(5) 64*34-18 A=A+C A D1=A ->lastrow A=R1.F A LC(5) 63*34-18 A=A+C A D0=A - A=DAT0 W D0=D0- 16 C=DAT0 W D0=D0- 18 CSRB ?ABIT=0 0 GOYES + C=C+CON S,8 + ASRB DAT1=A W D1=D1- 16 DAT1=C W D1=D1- 18 D=D-1 B GONC - RTN ********************************* * Shift R2 top rows up & right ********************************* TopUpRt C=R2.F B LA(2) #1F C=C&A B ?C=0 B RTNYES C=C-1 B D=C B A=R1.F A D0=A ->row1 LC(5) 34 A=A+C A D1=A ->row2 - A=DAT1 W word1 D1=D1+ 16 C=DAT1 W word2 D1=D1+ 18 ->row3 C=C+C W word2 << 1 A=A+A W GONC + C=C+1 B + DAT0=A W D0=D0+ 16 DAT0=C W D0=D0+ 18 D=D-1 B GONC - RTN ********************************* * Move right R3 nibs up & right ********************************* EndRtUp A=R1.F A LC(5) 34-3 A=A+C A C=0 A C=R3.F P A=A-C A D1=A LC(5) 34 A=A+C A D0=A LC(2) 64-2 D=C B C=R3.F P P=C 0 - C=DAT1 B A=DAT0 WP A=A+A WP ?CBIT=0 0 GOYES + A=A+1 B + DAT1=A WP D0=D0+ 34 D1=D1+ 34 D=D-1 B GONC - P= 0 RTN ********************************* * Move left R3 nibbles down & left ********************************* BegLtDn A=R1.F A LC(5) 63*34 A=A+C A D1=A LC(5) 34 A=A-C A D0=A LC(2) 64-2 D=C B C=R3.F P P=C 0 - A=DAT0 WP C=DAT1 WP ASRB.F WP C=C+C WP GONC + LCHEX 8 A=A+C P + DAT1=A WP D0=D0- 34 D1=D1- 34 D=D-1 B GONC - P= 0 RTN ********************************* * Shift R2 bot rows down & right ********************************* BotDnRt C=R2.F B LA(2) #1F C=C&A B ?C=0 B RTNYES C=C-1 B D=C B A=R1.F A ->display LC(5) 64*34-18 A=A+C A D1=A ->lastrow A=R1.F A LC(5) 63*34-18 A=A+C A D0=A - A=DAT0 W D0=D0- 16 C=DAT0 W D0=D0- 18 A=A+A W C=C+C W GONC + A=A+1 B + DAT1=A W D1=D1- 16 DAT1=C W D1=D1- 18 D=D-1 B GONC - RTN ********************************* * Shift R2 top rows up & left ********************************* TopUpLt C=R2.F B LA(2) #1F C=C&A B ?C=0 B RTNYES C=C-1 B D=C B A=R1.F A D1=A ->row1 LC(5) 34 A=A+C A D0=A ->row2 - A=DAT0 W D0=D0+ 16 C=DAT0 W D0=D0+ 18 ASRB ?CBIT=0 0 GOYES + A=A+CON S,8 + CSRB DAT1=A W D1=D1+ 16 DAT1=C W D1=D1+ 18 D=D-1 B GONC - RTN ********************************* ENDCODE ;