Home » Personal collection » Acorn hard disk » misc » misc2 » dcfprogs/Graphics/SUN2

dcfprogs/Graphics/SUN2

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Personal collection » Acorn hard disk » misc » misc2
Filename: dcfprogs/Graphics/SUN2
Read OK:
File size: 159A bytes
Load address: 0000
Exec address: 0000
File contents
   10REM Sunburst II
   20REM By John Geraghty
   30REM (c) Electron User
   40:
   50T$="SUNBURST"
   60ON ERROR PROCerr
   70IF PAGE>&E00 PROCreloc
   80MODE5
   90DIM vdu% 362*5
  100PROCinit
  110MODE2
  120PROCtitle
  130:
  140REPEAT
  150PROCpattern
  160PROCfx
  170UNTIL FALSE
  180:
  190DEF PROCinit
  200*FX9,0
  210*FX16
  220I%=TRUE
  230PROCassemble
  240PROCpat_init
  250VDU23,1,0;0;0;0;29,640;512;23,240,240,240,240,240,0;0;19,0,3;0;19,2,1;0;
  260COLOUR2:PRINTTAB(6,24)"Hold on..."
  270?c1=240:?c2=240
  280L%=0
  290REPEAT
  300L%=L%+1:IF L%=6 L%=0:CALL rnd_col
  310UNTIL FNpoint
  320dummy=FNpoint+FNpoint
  330ENDPROC
  340:
  350DEF PROCpat_init
  360READ n%,deg_inc%
  370IF n%=999 RESTORE:GOTO360
  380cosi=COSRADdeg_inc%
  390sini=SINRADdeg_inc%
  400old_cosi=1:old_sini=0
  410cosn=COSRAD(deg_inc%*n%)
  420sinn=SINRAD(deg_inc%*n%)
  430old_cosn=1:old_sinn=0
  440R%=800:y%=R%:x%=0
  450vdu_ind%=vdu%-5
  460ENDPROC
  470:
  480DEF FNpoint
  490vdu_ind%=vdu_ind%+5
  500IF R%>700 ?vdu_ind%=7 ELSE ?vdu_ind%=R%*138 DIV100 MOD7+1
  510!(vdu_ind%+1)=&10000*y%+x%
  520ncos=old_cosn*cosn-old_sinn*sinn
  530old_sinn=old_sinn*cosn+old_cosn*sinn
  540old_cosn=ncos
  550R%=800*ncos
  560cos=old_cosi*cosi-old_sini*sini
  570old_sini=old_sini*cosi+old_cosi*sini
  580old_cosi=cos
  590x%=R%*old_sini:y%=R%*cos
  600=(y%>796 AND x%=0)
  610:
  620DEF PROCtitle
  630?&FE07=48
  640GCOL0,128+8
  650VDU24,0;296;1271;724;:CLG:VDU26
  660GCOL0,8
  670VDU5
  680A%=10:X%=&70:Y%=0
  690FOR char%=1 TO LENT$
  700?&70=ASCMID$(T$,char%,1)
  710CALL osword
  720?&72=?&71:?&76=?&77
  730IF char%=6 ?&74=?&74-4
  740:
  750FOR L%=1 TO 5
  760byte%=?(&71+L%)
  770vpos%=852-L%*20
  780pos%=(char%-1)*164
  790FOR I%=pos% TO pos%+120 STEP32
  800byte%=byte%*2
  810IF byte% AND 64 MOVEI%,vpos%:VDU240:MOVEI%,vpos%-552:VDU240
  820NEXT:NEXT:NEXT
  830VDU29,640;512;
  840?&FE07=16
  850ENDPROC
  860:
  870DEF PROCpattern
  880FOR C%=0 TO 7:VDU19,C%,0;0;19,C%+8,C%+8,0;0;:NEXT
  890IF I% I%=FALSE ELSE Y%=0:CALL shut_col
  900!vdu_start=vdu%:!vdu_end=vdu_ind%+5
  910CALL pattern
  920MOVE-150,-80:MOVE150,-80:PLOT85,0,150
  930GCOL0,1
  940MOVE-150,-80:DRAW150,-80:DRAW0,150:DRAW-150,-80
  950Y%=-1:X%=49:CALL colour
  960ENDPROC
  970:
  980DEF PROCfx
  990PROCpat_init
 1000delay=FALSE
 1010title%=TRUE
 1020TIME=3000
 1030REPEAT
 1040act%=RND(8+title%)-(1+title%)
 1050:
 1060FOR C%=-title% TO 7
 1070IF delay IF n%=222 IF C%<6 FOR d=0 TO 100:NEXT:GOTO1090
 1080IF delay IF FNpoint dummy=FNpoint+FNpoint:C%=7:NEXT:UNTIL TRUE:ENDPROC
 1090IF RND(100)>98 delay=NOT delay
 1100:
 1110?pb=C%+8:?(pb+1)=C%+8
 1120A%=title%:CALL palette
 1130IF delay FOR d=0 TO 30:NEXT
 1140?pb=RND(8)+7:?(pb+1)=act%+8
 1150A%=title%:CALL palette
 1160NEXT
 1170:
 1180IF TIME>3300 title%=FALSE:TIME=0
 1190IF TIME>3000 IF title%=FALSE title%=TRUE:FOR C%=0 TO 7:FOR d=0 TO 100:NEXT:VDU19,C%,0;0;:NEXT:VDU19,8,7;0;
 1200IF RND(10)>5 UNTIL FALSE
 1210Y%=RND(4)-2:X%=RND(63)
 1220IF Y%<2 CALL colour ELSE IF NOT title% IF TIME>5 CALL colour
 1230UNTIL FALSE
 1240:
 1250DEF PROCassemble
 1260screen=&70:col_addr=&72:temp=&74
 1270rows=&75:rnd=&76:c1=&77
 1280c2=&78:vdu_start=&79:vdu_end=&7B
 1290scr_hi=&34E:osword=&FFF1
 1300osbyte=&FFF4:oswrch=&FFEE
 1310:
 1320FOR pass=0 TO 2 STEP2
 1330P%=&A00
 1340[OPT pass
 1350.colour
 1360JSR super_pix:TYA:BEQ norm_col
 1370BMI rnd_col:CMP #1:BEQ jmp
 1380JMP scroll_col:.jmp JMP shut_col
 1390:
 1400.norm_col
 1410LDA #0:STA screen:LDA scr_hi
 1420STA screen+1:LDY #0
 1430.nloop
 1440LDA c1:EOR (screen),Y
 1450STA (screen),Y:INY:LDA c2
 1460EOR (screen),Y:STA (screen),Y
 1470INY:BNE nloop:INC screen+1
 1480BPL nloop:RTS
 1490:
 1500.rnd_col
 1510LDX #0
 1520.rloop1
 1530LDA #0:STA screen:STA screen+1
 1540LDY #3:LDA rnd
 1550.rloop2
 1560ASL A:ROL screen+1:DEY
 1570BNE rloop2:STA screen
 1580LDA scr_hi:CLC:ADC screen+1
 1590STA screen+1
 1600.rloop3
 1610LDY #7
 1620.rloop4
 1630TYA:AND #1:BEQ rover
 1640LDA c2:JMP rover2
 1650.rover
 1660LDA c1
 1670.rover2
 1680EOR (screen),Y:STA (screen),Y:DEY
 1690BPL rloop4:LDA screen+1:CLC
 1700ADC #8:STA screen+1:BPL rloop3
 1710LDA rnd:ASL A:ASL A:CLC
 1720ADC rnd:CLC:ADC #3:STA rnd
 1730DEX:BNE rloop1:RTS
 1740:
 1750.shut_col
 1760STY temp:LDX #7:LDY #0
 1770.sloop1
 1780STX screen:LDA scr_hi:STA screen+1
 1790.sloop2
 1800TXA:AND #1:TAY:LDA c1,Y
 1810LDY temp:BNE not_title
 1820LDA #&C0:AND (screen),Y
 1830JMP restore_title
 1840.not_title DEY:EOR (screen),Y
 1850.restore_title
 1860STA (screen),Y:LDA screen:CLC
 1870ADC #8:STA screen
 1880BCC sloop2:INC screen+1
 1890BPL sloop2:DEX:BPL sloop1
 1900RTS
 1910:
 1920.scroll_col
 1930LDX #&20:STX rows:LDX #0
 1940STX screen:LDX scr_hi:STX screen+1
 1950.scrow
 1960LDA screen:STA col_addr:CLC
 1970ADC #&80:STA screen:LDA screen+1
 1980STA col_addr+1:ADC #&02
 1990BPL scover:LDA #&30
 2000.scover
 2010STA screen+1:LDA #&13:JSR osbyte
 2020LDA screen+1:LSR A:ROR screen
 2030TAY:LDX #3:LDA #&97:JSR osbyte
 2040LDA screen:ASL screen:TAY
 2050LDX #2:STX temp
 2060LDA #&97:JSR osbyte
 2070LDY #0:LDX #&40
 2080.scloop
 2090LDA (col_addr),Y:EOR c1
 2100STA (col_addr),Y:INY
 2110LDA (col_addr),Y:EOR c2
 2120STA (col_addr),Y:INY
 2130BNE sc_hi_ok:INC col_addr+1
 2140.sc_hi_ok
 2150DEX:BNE scloop
 2160DEC temp:BNE scloop
 2170.row_end
 2180DEC rows:BNE scrow:RTS
 2190:
 2200.super_pix
 2210STX c1:TXA:AND #85
 2220ASL A:STA c2:TXA
 2230AND #170:LSR A:ORA c2
 2240STA c2:RTS
 2250:
 2260.pattern
 2270LDX #2:LDY #0
 2280.ploop
 2290LDA &FF:BMI pout
 2300LDA #&12:JSR oswrch:LDA #&03
 2310JSR oswrch:JSR read_vdu
 2320LDA #&19:JSR oswrch
 2330TXA:BEQ tri:DEX:LDA #&04
 2340BNE plot_opt
 2350.tri
 2360LDA #85
 2370.plot_opt
 2380JSR oswrch:JSR read_vdu
 2390JSR read_vdu:JSR read_vdu
 2400JSR read_vdu:LDA vdu_start
 2410CMP vdu_end:BNE ploop
 2420LDA vdu_start+1:CMP vdu_end+1
 2430BNE ploop:.pout RTS
 2440:
 2450.read_vdu
 2460LDA (vdu_start),Y:JSR oswrch
 2470INC vdu_start:BNE rend
 2480INC vdu_start+1:.rend RTS
 2490:
 2500.palette
 2510PHA:LDA #&13:JSR osbyte
 2520JSR osw12:PLA:BNE rend
 2530.fore_too
 2540LDA pb:SEC:SBC #8:STA pb
 2550LDA pb+1:SBC #8:STA pb+1
 2560.osw12
 2570LDA #&0C:LDX #pb MOD&100
 2580LDY #pb DIV&100:JMP osword
 2590:
 2600.pb
 2610EQUD 0
 2620EQUB 0
 2630]:NEXT:ENDPROC
 2640:
 2650DEF PROCreloc
 2660OSCLI("KEY0 *TAPE|M F%=PAGE:T%=&E00:?TOP=13:REPEAT $T%=$F%:L%=LEN$T%+1:T%=T%+L%:F%=F%+L%:UNTIL F%>TOP|M PAGE=&E00|M OLD|M RUN|M"):OSCLI("FX138,0,128"):END
 2670:
 2680DEF PROCerr
 2690ON ERROR OFF
 2700*FX9,25
 2710VDU22,6:HIMEM=&6000
 2720PRINT':REPORT:PRINT " at line ";ERL
 2730:
 2740DATA 222,6,264,11,330,13,342,14,24,14,320,13,999,999

� Sunburst II
� By John Geraghty
� (c) Electron User
(:
2T$="SUNBURST"
<� � �err
F� �>&E00 �reloc
P�5
Z� vdu% 362*5
d	�init
n�2
x
�title
�:
��
��pattern
��fx
�� �
�:
�� �init
�
*FX9,0
�	*FX16
�I%=�
�
�assemble
�
�pat_init
�J�23,1,0;0;0;0;29,640;512;23,240,240,240,240,240,0;0;19,0,3;0;19,2,1;0;
�2:�6,24)"Hold on..."
?c1=240:?c2=240
L%=0
"�
,!L%=L%+1:� L%=6 L%=0:� rnd_col
6� �point
@dummy=�point+�point
J�
T:
^� �pat_init
h� n%,deg_inc%
r� n%=999 �:�DhA
|cosi=��deg_inc%
�sini=��deg_inc%
�old_cosi=1:old_sini=0
�cosn=��(deg_inc%*n%)
�sinn=��(deg_inc%*n%)
�old_cosn=1:old_sinn=0
�R%=800:y%=R%:x%=0
�vdu_ind%=vdu%-5
��
�:
�� �point
�vdu_ind%=vdu_ind%+5
�5� R%>700 ?vdu_ind%=7 � ?vdu_ind%=R%*138 �100 �7+1
�!(vdu_ind%+1)=&10000*y%+x%
$ncos=old_cosn*cosn-old_sinn*sinn
(old_sinn=old_sinn*cosn+old_cosn*sinn
old_cosn=ncos
&R%=800*ncos
0#cos=old_cosi*cosi-old_sini*sini
:(old_sini=old_sini*cosi+old_cosi*sini
Dold_cosi=cos
Nx%=R%*old_sini:y%=R%*cos
X=(y%>796 � x%=0)
b:
l� �title
v
?&FE07=48
��0,128+8
��24,0;296;1271;724;:�:�26
��0,8
��5
�A%=10:X%=&70:Y%=0
�� char%=1 � �T$
�?&70=��T$,char%,1)
�� osword
�?&72=?&71:?&76=?&77
�� char%=6 ?&74=?&74-4
�:
�� L%=1 � 5
�byte%=?(&71+L%)
vpos%=852-L%*20
pos%=(char%-1)*164
� I%=pos% � pos%+120 �32
 byte%=byte%*2
*2� byte% � 64 �I%,vpos%:�240:�I%,vpos%-552:�240
4	�:�:�
>�29,640;512;
H
?&FE07=16
R�
\:
f� �pattern
p-� C%=0 � 7:�19,C%,0;0;19,C%+8,C%+8,0;0;:�
z� I% I%=� � Y%=0:� shut_col
�'!vdu_start=vdu%:!vdu_end=vdu_ind%+5
�
� pattern
� �-150,-80:�150,-80:�85,0,150
��0,1
�'�-150,-80:�150,-80:�0,150:�-150,-80
�Y%=-1:X%=49:� colour
��
�:
�	� �fx
�
�pat_init
�delay=�
�title%=�
�
�=3000
�
act%=�(8+title%)-(1+title%)
:
$� C%=-title% � 7
./� delay � n%=222 � C%<6 � d=0 � 100:�:�DBD
85� delay � �point dummy=�point+�point:C%=7:�:� �:�
B� �(100)>98 delay=� delay
L:
V?pb=C%+8:?(pb+1)=C%+8
`A%=title%:� palette
j� delay � d=0 � 30:�
t?pb=�(8)+7:?(pb+1)=act%+8
~A%=title%:� palette
��
�:
�� �>3300 title%=�:�=0
�R� �>3000 � title%=� title%=�:� C%=0 � 7:� d=0 � 100:�:�19,C%,0;0;:�:�19,8,7;0;
�� �(10)>5 � �
�Y%=�(4)-2:X%=�(63)
�/� Y%<2 � colour � � � title% � �>5 � colour
�� �
�:
�� �assemble
�$screen=&70:col_addr=&72:temp=&74
�rows=&75:rnd=&76:c1=&77
$c2=&78:vdu_start=&79:vdu_end=&7B

scr_hi=&34E:osword=&FFF1
osbyte=&FFF4:oswrch=&FFEE
:
(� pass=0 � 2 �2
2P%=&A00
<
[OPT pass
F.colour
P"JSR super_pix:TYA:BEQ norm_col
ZBMI rnd_col:CMP #1:BEQ jmp
d$JMP scroll_col:.jmp JMP shut_col
n:
x
.norm_col
� LDA #0:STA screen:LDA scr_hi
�STA screen+1:LDY #0
�
.nloop
�LDA c1:� (screen),Y
�STA (screen),Y:INY:LDA c2
�� (screen),Y:STA (screen),Y
�INY:BNE nloop:INC screen+1
�BPL nloop:RTS
�:
�.rnd_col
�
LDX #0
�.rloop1
�"LDA #0:STA screen:STA screen+1
LDY #3:LDA rnd
.rloop2
ASL A:ROL screen+1:DEY
"BNE rloop2:STA screen
,LDA scr_hi:CLC:ADC screen+1
6STA screen+1
@.rloop3
J
LDY #7
T.rloop4
^TYA:� #1:BEQ rover
hLDA c2:JMP rover2
r
.rover
|
LDA c1
�.rover2
�#� (screen),Y:STA (screen),Y:DEY
�BPL rloop4:LDA screen+1:CLC
�"ADC #8:STA screen+1:BPL rloop3
�LDA rnd:ASL A:ASL A:CLC
�ADC rnd:CLC:ADC #3:STA rnd
�DEX:BNE rloop1:RTS
�:
�
.shut_col
�STY temp:LDX #7:LDY #0
�.sloop1
�&STX screen:LDA scr_hi:STA screen+1
�.sloop2
TXA:� #1:TAY:LDA c1,Y
LDY temp:BNE not_title
LDA #&C0:� (screen),Y
&JMP restore_title
0.not_title DEY:� (screen),Y
:.restore_title
D!STA (screen),Y:LDA screen:CLC
NADC #8:STA screen
XBCC sloop2:INC screen+1
bBPL sloop2:DEX:BPL sloop1
lRTS
v:
�.scroll_col
�LDX #&20:STX rows:LDX #0
�&STX screen:LDX scr_hi:STX screen+1
�
.scrow
�LDA screen:STA col_addr:CLC
�$ADC #&80:STA screen:LDA screen+1
�STA col_addr+1:ADC #&02
�BPL scover:LDA #&30
�.scover
�$STA screen+1:LDA #&13:JSR osbyte
�!LDA screen+1:LSR A:ROR screen
�"TAY:LDX #3:LDA #&97:JSR osbyte
�LDA screen:ASL screen:TAY
LDX #2:STX temp
LDA #&97:JSR osbyte
LDY #0:LDX #&40
 .scloop
*LDA (col_addr),Y:� c1
4STA (col_addr),Y:INY
>LDA (col_addr),Y:� c2
HSTA (col_addr),Y:INY
RBNE sc_hi_ok:INC col_addr+1
\
.sc_hi_ok
fDEX:BNE scloop
pDEC temp:BNE scloop
z.row_end
�DEC rows:BNE scrow:RTS
�:
�.super_pix
�STX c1:TXA:� #85
�ASL A:STA c2:TXA
�� #170:LSR A:�A c2
�STA c2:RTS
�:
�.pattern
�LDX #2:LDY #0
�
.ploop
�LDA &FF:BMI pout
� LDA #&12:JSR oswrch:LDA #&03
	JSR oswrch:JSR read_vdu
	LDA #&19:JSR oswrch
	TXA:BEQ tri:DEX:LDA #&04
	$BNE plot_opt
	..tri
	8LDA #85
	B
.plot_opt
	LJSR oswrch:JSR read_vdu
	VJSR read_vdu:JSR read_vdu
	`JSR read_vdu:LDA vdu_start
	jCMP vdu_end:BNE ploop
	t!LDA vdu_start+1:CMP vdu_end+1
	~BNE ploop:.pout RTS
	�:
	�
.read_vdu
	� LDA (vdu_start),Y:JSR oswrch
	�INC vdu_start:BNE rend
	�INC vdu_start+1:.rend RTS
	�:
	�.palette
	�PHA:LDA #&13:JSR osbyte
	�JSR osw12:PLA:BNE rend
	�
.fore_too
	�LDA pb:SEC:SBC #8:STA pb
	�LDA pb+1:SBC #8:STA pb+1

.osw12

LDA #&0C:LDX #pb �&100
LDY #pb �&100:JMP osword
:
(.pb
2
EQUD 0
<
EQUB 0
F	]:�:�
P:
Z� �reloc
d��("KEY0 *TAPE|M F%=PAGE:T%=&E00:?TOP=13:REPEAT $T%=$F%:L%=LEN$T%+1:T%=T%+L%:F%=F%+L%:UNTIL F%>TOP|M PAGE=&E00|M OLD|M RUN|M"):�("FX138,0,128"):�
n:
x
� �err
�	� � �
�*FX9,25
��22,6:�=&6000
��':�:� " at line ";�
�:
�5� 222,6,264,11,330,13,342,14,24,14,320,13,999,999
�
00000000  0d 00 0a 11 f4 20 53 75  6e 62 75 72 73 74 20 49  |..... Sunburst I|
00000010  49 0d 00 14 16 f4 20 42  79 20 4a 6f 68 6e 20 47  |I..... By John G|
00000020  65 72 61 67 68 74 79 0d  00 1e 17 f4 20 28 63 29  |eraghty..... (c)|
00000030  20 45 6c 65 63 74 72 6f  6e 20 55 73 65 72 0d 00  | Electron User..|
00000040  28 05 3a 0d 00 32 11 54  24 3d 22 53 55 4e 42 55  |(.:..2.T$="SUNBU|
00000050  52 53 54 22 0d 00 3c 0c  ee 20 85 20 f2 65 72 72  |RST"..<.. . .err|
00000060  0d 00 46 13 e7 20 90 3e  26 45 30 30 20 f2 72 65  |..F.. .>&E00 .re|
00000070  6c 6f 63 0d 00 50 06 eb  35 0d 00 5a 10 de 20 76  |loc..P..5..Z.. v|
00000080  64 75 25 20 33 36 32 2a  35 0d 00 64 09 f2 69 6e  |du% 362*5..d..in|
00000090  69 74 0d 00 6e 06 eb 32  0d 00 78 0a f2 74 69 74  |it..n..2..x..tit|
000000a0  6c 65 0d 00 82 05 3a 0d  00 8c 05 f5 0d 00 96 0c  |le....:.........|
000000b0  f2 70 61 74 74 65 72 6e  0d 00 a0 07 f2 66 78 0d  |.pattern.....fx.|
000000c0  00 aa 07 fd 20 a3 0d 00  b4 05 3a 0d 00 be 0b dd  |.... .....:.....|
000000d0  20 f2 69 6e 69 74 0d 00  c8 0a 2a 46 58 39 2c 30  | .init....*FX9,0|
000000e0  0d 00 d2 09 2a 46 58 31  36 0d 00 dc 08 49 25 3d  |....*FX16....I%=|
000000f0  b9 0d 00 e6 0d f2 61 73  73 65 6d 62 6c 65 0d 00  |......assemble..|
00000100  f0 0d f2 70 61 74 5f 69  6e 69 74 0d 00 fa 4a ef  |...pat_init...J.|
00000110  32 33 2c 31 2c 30 3b 30  3b 30 3b 30 3b 32 39 2c  |23,1,0;0;0;0;29,|
00000120  36 34 30 3b 35 31 32 3b  32 33 2c 32 34 30 2c 32  |640;512;23,240,2|
00000130  34 30 2c 32 34 30 2c 32  34 30 2c 32 34 30 2c 30  |40,240,240,240,0|
00000140  3b 30 3b 31 39 2c 30 2c  33 3b 30 3b 31 39 2c 32  |;0;19,0,3;0;19,2|
00000150  2c 31 3b 30 3b 0d 01 04  1a fb 32 3a f1 8a 36 2c  |,1;0;.....2:..6,|
00000160  32 34 29 22 48 6f 6c 64  20 6f 6e 2e 2e 2e 22 0d  |24)"Hold on...".|
00000170  01 0e 13 3f 63 31 3d 32  34 30 3a 3f 63 32 3d 32  |...?c1=240:?c2=2|
00000180  34 30 0d 01 18 08 4c 25  3d 30 0d 01 22 05 f5 0d  |40....L%=0.."...|
00000190  01 2c 21 4c 25 3d 4c 25  2b 31 3a e7 20 4c 25 3d  |.,!L%=L%+1:. L%=|
000001a0  36 20 4c 25 3d 30 3a d6  20 72 6e 64 5f 63 6f 6c  |6 L%=0:. rnd_col|
000001b0  0d 01 36 0c fd 20 a4 70  6f 69 6e 74 0d 01 40 17  |..6.. .point..@.|
000001c0  64 75 6d 6d 79 3d a4 70  6f 69 6e 74 2b a4 70 6f  |dummy=.point+.po|
000001d0  69 6e 74 0d 01 4a 05 e1  0d 01 54 05 3a 0d 01 5e  |int..J....T.:..^|
000001e0  0f dd 20 f2 70 61 74 5f  69 6e 69 74 0d 01 68 11  |.. .pat_init..h.|
000001f0  f3 20 6e 25 2c 64 65 67  5f 69 6e 63 25 0d 01 72  |. n%,deg_inc%..r|
00000200  14 e7 20 6e 25 3d 39 39  39 20 f7 3a e5 8d 44 68  |.. n%=999 .:..Dh|
00000210  41 0d 01 7c 13 63 6f 73  69 3d 9b b2 64 65 67 5f  |A..|.cosi=..deg_|
00000220  69 6e 63 25 0d 01 86 13  73 69 6e 69 3d b5 b2 64  |inc%....sini=..d|
00000230  65 67 5f 69 6e 63 25 0d  01 90 19 6f 6c 64 5f 63  |eg_inc%....old_c|
00000240  6f 73 69 3d 31 3a 6f 6c  64 5f 73 69 6e 69 3d 30  |osi=1:old_sini=0|
00000250  0d 01 9a 18 63 6f 73 6e  3d 9b b2 28 64 65 67 5f  |....cosn=..(deg_|
00000260  69 6e 63 25 2a 6e 25 29  0d 01 a4 18 73 69 6e 6e  |inc%*n%)....sinn|
00000270  3d b5 b2 28 64 65 67 5f  69 6e 63 25 2a 6e 25 29  |=..(deg_inc%*n%)|
00000280  0d 01 ae 19 6f 6c 64 5f  63 6f 73 6e 3d 31 3a 6f  |....old_cosn=1:o|
00000290  6c 64 5f 73 69 6e 6e 3d  30 0d 01 b8 15 52 25 3d  |ld_sinn=0....R%=|
000002a0  38 30 30 3a 79 25 3d 52  25 3a 78 25 3d 30 0d 01  |800:y%=R%:x%=0..|
000002b0  c2 13 76 64 75 5f 69 6e  64 25 3d 76 64 75 25 2d  |..vdu_ind%=vdu%-|
000002c0  35 0d 01 cc 05 e1 0d 01  d6 05 3a 0d 01 e0 0c dd  |5.........:.....|
000002d0  20 a4 70 6f 69 6e 74 0d  01 ea 17 76 64 75 5f 69  | .point....vdu_i|
000002e0  6e 64 25 3d 76 64 75 5f  69 6e 64 25 2b 35 0d 01  |nd%=vdu_ind%+5..|
000002f0  f4 35 e7 20 52 25 3e 37  30 30 20 3f 76 64 75 5f  |.5. R%>700 ?vdu_|
00000300  69 6e 64 25 3d 37 20 8b  20 3f 76 64 75 5f 69 6e  |ind%=7 . ?vdu_in|
00000310  64 25 3d 52 25 2a 31 33  38 20 81 31 30 30 20 83  |d%=R%*138 .100 .|
00000320  37 2b 31 0d 01 fe 1e 21  28 76 64 75 5f 69 6e 64  |7+1....!(vdu_ind|
00000330  25 2b 31 29 3d 26 31 30  30 30 30 2a 79 25 2b 78  |%+1)=&10000*y%+x|
00000340  25 0d 02 08 24 6e 63 6f  73 3d 6f 6c 64 5f 63 6f  |%...$ncos=old_co|
00000350  73 6e 2a 63 6f 73 6e 2d  6f 6c 64 5f 73 69 6e 6e  |sn*cosn-old_sinn|
00000360  2a 73 69 6e 6e 0d 02 12  28 6f 6c 64 5f 73 69 6e  |*sinn...(old_sin|
00000370  6e 3d 6f 6c 64 5f 73 69  6e 6e 2a 63 6f 73 6e 2b  |n=old_sinn*cosn+|
00000380  6f 6c 64 5f 63 6f 73 6e  2a 73 69 6e 6e 0d 02 1c  |old_cosn*sinn...|
00000390  11 6f 6c 64 5f 63 6f 73  6e 3d 6e 63 6f 73 0d 02  |.old_cosn=ncos..|
000003a0  26 0f 52 25 3d 38 30 30  2a 6e 63 6f 73 0d 02 30  |&.R%=800*ncos..0|
000003b0  23 63 6f 73 3d 6f 6c 64  5f 63 6f 73 69 2a 63 6f  |#cos=old_cosi*co|
000003c0  73 69 2d 6f 6c 64 5f 73  69 6e 69 2a 73 69 6e 69  |si-old_sini*sini|
000003d0  0d 02 3a 28 6f 6c 64 5f  73 69 6e 69 3d 6f 6c 64  |..:(old_sini=old|
000003e0  5f 73 69 6e 69 2a 63 6f  73 69 2b 6f 6c 64 5f 63  |_sini*cosi+old_c|
000003f0  6f 73 69 2a 73 69 6e 69  0d 02 44 10 6f 6c 64 5f  |osi*sini..D.old_|
00000400  63 6f 73 69 3d 63 6f 73  0d 02 4e 1c 78 25 3d 52  |cosi=cos..N.x%=R|
00000410  25 2a 6f 6c 64 5f 73 69  6e 69 3a 79 25 3d 52 25  |%*old_sini:y%=R%|
00000420  2a 63 6f 73 0d 02 58 14  3d 28 79 25 3e 37 39 36  |*cos..X.=(y%>796|
00000430  20 80 20 78 25 3d 30 29  0d 02 62 05 3a 0d 02 6c  | . x%=0)..b.:..l|
00000440  0c dd 20 f2 74 69 74 6c  65 0d 02 76 0d 3f 26 46  |.. .title..v.?&F|
00000450  45 30 37 3d 34 38 0d 02  80 0c e6 30 2c 31 32 38  |E07=48.....0,128|
00000460  2b 38 0d 02 8a 1d ef 32  34 2c 30 3b 32 39 36 3b  |+8.....24,0;296;|
00000470  31 32 37 31 3b 37 32 34  3b 3a da 3a ef 32 36 0d  |1271;724;:.:.26.|
00000480  02 94 08 e6 30 2c 38 0d  02 9e 06 ef 35 0d 02 a8  |....0,8.....5...|
00000490  15 41 25 3d 31 30 3a 58  25 3d 26 37 30 3a 59 25  |.A%=10:X%=&70:Y%|
000004a0  3d 30 0d 02 b2 13 e3 20  63 68 61 72 25 3d 31 20  |=0..... char%=1 |
000004b0  b8 20 a9 54 24 0d 02 bc  16 3f 26 37 30 3d 97 c1  |. .T$....?&70=..|
000004c0  54 24 2c 63 68 61 72 25  2c 31 29 0d 02 c6 0c d6  |T$,char%,1).....|
000004d0  20 6f 73 77 6f 72 64 0d  02 d0 17 3f 26 37 32 3d  | osword....?&72=|
000004e0  3f 26 37 31 3a 3f 26 37  36 3d 3f 26 37 37 0d 02  |?&71:?&76=?&77..|
000004f0  da 19 e7 20 63 68 61 72  25 3d 36 20 3f 26 37 34  |... char%=6 ?&74|
00000500  3d 3f 26 37 34 2d 34 0d  02 e4 05 3a 0d 02 ee 0e  |=?&74-4....:....|
00000510  e3 20 4c 25 3d 31 20 b8  20 35 0d 02 f8 13 62 79  |. L%=1 . 5....by|
00000520  74 65 25 3d 3f 28 26 37  31 2b 4c 25 29 0d 03 02  |te%=?(&71+L%)...|
00000530  13 76 70 6f 73 25 3d 38  35 32 2d 4c 25 2a 32 30  |.vpos%=852-L%*20|
00000540  0d 03 0c 16 70 6f 73 25  3d 28 63 68 61 72 25 2d  |....pos%=(char%-|
00000550  31 29 2a 31 36 34 0d 03  16 1c e3 20 49 25 3d 70  |1)*164..... I%=p|
00000560  6f 73 25 20 b8 20 70 6f  73 25 2b 31 32 30 20 88  |os% . pos%+120 .|
00000570  33 32 0d 03 20 11 62 79  74 65 25 3d 62 79 74 65  |32.. .byte%=byte|
00000580  25 2a 32 0d 03 2a 32 e7  20 62 79 74 65 25 20 80  |%*2..*2. byte% .|
00000590  20 36 34 20 ec 49 25 2c  76 70 6f 73 25 3a ef 32  | 64 .I%,vpos%:.2|
000005a0  34 30 3a ec 49 25 2c 76  70 6f 73 25 2d 35 35 32  |40:.I%,vpos%-552|
000005b0  3a ef 32 34 30 0d 03 34  09 ed 3a ed 3a ed 0d 03  |:.240..4..:.:...|
000005c0  3e 10 ef 32 39 2c 36 34  30 3b 35 31 32 3b 0d 03  |>..29,640;512;..|
000005d0  48 0d 3f 26 46 45 30 37  3d 31 36 0d 03 52 05 e1  |H.?&FE07=16..R..|
000005e0  0d 03 5c 05 3a 0d 03 66  0e dd 20 f2 70 61 74 74  |..\.:..f.. .patt|
000005f0  65 72 6e 0d 03 70 2d e3  20 43 25 3d 30 20 b8 20  |ern..p-. C%=0 . |
00000600  37 3a ef 31 39 2c 43 25  2c 30 3b 30 3b 31 39 2c  |7:.19,C%,0;0;19,|
00000610  43 25 2b 38 2c 43 25 2b  38 2c 30 3b 30 3b 3a ed  |C%+8,C%+8,0;0;:.|
00000620  0d 03 7a 1f e7 20 49 25  20 49 25 3d a3 20 8b 20  |..z.. I% I%=. . |
00000630  59 25 3d 30 3a d6 20 73  68 75 74 5f 63 6f 6c 0d  |Y%=0:. shut_col.|
00000640  03 84 27 21 76 64 75 5f  73 74 61 72 74 3d 76 64  |..'!vdu_start=vd|
00000650  75 25 3a 21 76 64 75 5f  65 6e 64 3d 76 64 75 5f  |u%:!vdu_end=vdu_|
00000660  69 6e 64 25 2b 35 0d 03  8e 0d d6 20 70 61 74 74  |ind%+5..... patt|
00000670  65 72 6e 0d 03 98 20 ec  2d 31 35 30 2c 2d 38 30  |ern... .-150,-80|
00000680  3a ec 31 35 30 2c 2d 38  30 3a f0 38 35 2c 30 2c  |:.150,-80:.85,0,|
00000690  31 35 30 0d 03 a2 08 e6  30 2c 31 0d 03 ac 27 ec  |150.....0,1...'.|
000006a0  2d 31 35 30 2c 2d 38 30  3a df 31 35 30 2c 2d 38  |-150,-80:.150,-8|
000006b0  30 3a df 30 2c 31 35 30  3a df 2d 31 35 30 2c 2d  |0:.0,150:.-150,-|
000006c0  38 30 0d 03 b6 18 59 25  3d 2d 31 3a 58 25 3d 34  |80....Y%=-1:X%=4|
000006d0  39 3a d6 20 63 6f 6c 6f  75 72 0d 03 c0 05 e1 0d  |9:. colour......|
000006e0  03 ca 05 3a 0d 03 d4 09  dd 20 f2 66 78 0d 03 de  |...:..... .fx...|
000006f0  0d f2 70 61 74 5f 69 6e  69 74 0d 03 e8 0b 64 65  |..pat_init....de|
00000700  6c 61 79 3d a3 0d 03 f2  0c 74 69 74 6c 65 25 3d  |lay=.....title%=|
00000710  b9 0d 03 fc 0a d1 3d 33  30 30 30 0d 04 06 05 f5  |......=3000.....|
00000720  0d 04 10 1f 61 63 74 25  3d b3 28 38 2b 74 69 74  |....act%=.(8+tit|
00000730  6c 65 25 29 2d 28 31 2b  74 69 74 6c 65 25 29 0d  |le%)-(1+title%).|
00000740  04 1a 05 3a 0d 04 24 14  e3 20 43 25 3d 2d 74 69  |...:..$.. C%=-ti|
00000750  74 6c 65 25 20 b8 20 37  0d 04 2e 2f e7 20 64 65  |tle% . 7.../. de|
00000760  6c 61 79 20 e7 20 6e 25  3d 32 32 32 20 e7 20 43  |lay . n%=222 . C|
00000770  25 3c 36 20 e3 20 64 3d  30 20 b8 20 31 30 30 3a  |%<6 . d=0 . 100:|
00000780  ed 3a e5 8d 44 42 44 0d  04 38 35 e7 20 64 65 6c  |.:..DBD..85. del|
00000790  61 79 20 e7 20 a4 70 6f  69 6e 74 20 64 75 6d 6d  |ay . .point dumm|
000007a0  79 3d a4 70 6f 69 6e 74  2b a4 70 6f 69 6e 74 3a  |y=.point+.point:|
000007b0  43 25 3d 37 3a ed 3a fd  20 b9 3a e1 0d 04 42 1d  |C%=7:.:. .:...B.|
000007c0  e7 20 b3 28 31 30 30 29  3e 39 38 20 64 65 6c 61  |. .(100)>98 dela|
000007d0  79 3d ac 20 64 65 6c 61  79 0d 04 4c 05 3a 0d 04  |y=. delay..L.:..|
000007e0  56 19 3f 70 62 3d 43 25  2b 38 3a 3f 28 70 62 2b  |V.?pb=C%+8:?(pb+|
000007f0  31 29 3d 43 25 2b 38 0d  04 60 17 41 25 3d 74 69  |1)=C%+8..`.A%=ti|
00000800  74 6c 65 25 3a d6 20 70  61 6c 65 74 74 65 0d 04  |tle%:. palette..|
00000810  6a 18 e7 20 64 65 6c 61  79 20 e3 20 64 3d 30 20  |j.. delay . d=0 |
00000820  b8 20 33 30 3a ed 0d 04  74 1d 3f 70 62 3d b3 28  |. 30:...t.?pb=.(|
00000830  38 29 2b 37 3a 3f 28 70  62 2b 31 29 3d 61 63 74  |8)+7:?(pb+1)=act|
00000840  25 2b 38 0d 04 7e 17 41  25 3d 74 69 74 6c 65 25  |%+8..~.A%=title%|
00000850  3a d6 20 70 61 6c 65 74  74 65 0d 04 88 05 ed 0d  |:. palette......|
00000860  04 92 05 3a 0d 04 9c 19  e7 20 91 3e 33 33 30 30  |...:..... .>3300|
00000870  20 74 69 74 6c 65 25 3d  a3 3a d1 3d 30 0d 04 a6  | title%=.:.=0...|
00000880  52 e7 20 91 3e 33 30 30  30 20 e7 20 74 69 74 6c  |R. .>3000 . titl|
00000890  65 25 3d a3 20 74 69 74  6c 65 25 3d b9 3a e3 20  |e%=. title%=.:. |
000008a0  43 25 3d 30 20 b8 20 37  3a e3 20 64 3d 30 20 b8  |C%=0 . 7:. d=0 .|
000008b0  20 31 30 30 3a ed 3a ef  31 39 2c 43 25 2c 30 3b  | 100:.:.19,C%,0;|
000008c0  30 3b 3a ed 3a ef 31 39  2c 38 2c 37 3b 30 3b 0d  |0;:.:.19,8,7;0;.|
000008d0  04 b0 11 e7 20 b3 28 31  30 29 3e 35 20 fd 20 a3  |.... .(10)>5 . .|
000008e0  0d 04 ba 16 59 25 3d b3  28 34 29 2d 32 3a 58 25  |....Y%=.(4)-2:X%|
000008f0  3d b3 28 36 33 29 0d 04  c4 2f e7 20 59 25 3c 32  |=.(63).../. Y%<2|
00000900  20 d6 20 63 6f 6c 6f 75  72 20 8b 20 e7 20 ac 20  | . colour . . . |
00000910  74 69 74 6c 65 25 20 e7  20 91 3e 35 20 d6 20 63  |title% . .>5 . c|
00000920  6f 6c 6f 75 72 0d 04 ce  07 fd 20 a3 0d 04 d8 05  |olour..... .....|
00000930  3a 0d 04 e2 0f dd 20 f2  61 73 73 65 6d 62 6c 65  |:..... .assemble|
00000940  0d 04 ec 24 73 63 72 65  65 6e 3d 26 37 30 3a 63  |...$screen=&70:c|
00000950  6f 6c 5f 61 64 64 72 3d  26 37 32 3a 74 65 6d 70  |ol_addr=&72:temp|
00000960  3d 26 37 34 0d 04 f6 1b  72 6f 77 73 3d 26 37 35  |=&74....rows=&75|
00000970  3a 72 6e 64 3d 26 37 36  3a 63 31 3d 26 37 37 0d  |:rnd=&76:c1=&77.|
00000980  05 00 24 63 32 3d 26 37  38 3a 76 64 75 5f 73 74  |..$c2=&78:vdu_st|
00000990  61 72 74 3d 26 37 39 3a  76 64 75 5f 65 6e 64 3d  |art=&79:vdu_end=|
000009a0  26 37 42 0d 05 0a 1c 73  63 72 5f 68 69 3d 26 33  |&7B....scr_hi=&3|
000009b0  34 45 3a 6f 73 77 6f 72  64 3d 26 46 46 46 31 0d  |4E:osword=&FFF1.|
000009c0  05 14 1d 6f 73 62 79 74  65 3d 26 46 46 46 34 3a  |...osbyte=&FFF4:|
000009d0  6f 73 77 72 63 68 3d 26  46 46 45 45 0d 05 1e 05  |oswrch=&FFEE....|
000009e0  3a 0d 05 28 13 e3 20 70  61 73 73 3d 30 20 b8 20  |:..(.. pass=0 . |
000009f0  32 20 88 32 0d 05 32 0b  50 25 3d 26 41 30 30 0d  |2 .2..2.P%=&A00.|
00000a00  05 3c 0d 5b 4f 50 54 20  70 61 73 73 0d 05 46 0b  |.<.[OPT pass..F.|
00000a10  2e 63 6f 6c 6f 75 72 0d  05 50 22 4a 53 52 20 73  |.colour..P"JSR s|
00000a20  75 70 65 72 5f 70 69 78  3a 54 59 41 3a 42 45 51  |uper_pix:TYA:BEQ|
00000a30  20 6e 6f 72 6d 5f 63 6f  6c 0d 05 5a 1e 42 4d 49  | norm_col..Z.BMI|
00000a40  20 72 6e 64 5f 63 6f 6c  3a 43 4d 50 20 23 31 3a  | rnd_col:CMP #1:|
00000a50  42 45 51 20 6a 6d 70 0d  05 64 24 4a 4d 50 20 73  |BEQ jmp..d$JMP s|
00000a60  63 72 6f 6c 6c 5f 63 6f  6c 3a 2e 6a 6d 70 20 4a  |croll_col:.jmp J|
00000a70  4d 50 20 73 68 75 74 5f  63 6f 6c 0d 05 6e 05 3a  |MP shut_col..n.:|
00000a80  0d 05 78 0d 2e 6e 6f 72  6d 5f 63 6f 6c 0d 05 82  |..x..norm_col...|
00000a90  20 4c 44 41 20 23 30 3a  53 54 41 20 73 63 72 65  | LDA #0:STA scre|
00000aa0  65 6e 3a 4c 44 41 20 73  63 72 5f 68 69 0d 05 8c  |en:LDA scr_hi...|
00000ab0  17 53 54 41 20 73 63 72  65 65 6e 2b 31 3a 4c 44  |.STA screen+1:LD|
00000ac0  59 20 23 30 0d 05 96 0a  2e 6e 6c 6f 6f 70 0d 05  |Y #0.....nloop..|
00000ad0  a0 17 4c 44 41 20 63 31  3a 82 20 28 73 63 72 65  |..LDA c1:. (scre|
00000ae0  65 6e 29 2c 59 0d 05 aa  1d 53 54 41 20 28 73 63  |en),Y....STA (sc|
00000af0  72 65 65 6e 29 2c 59 3a  49 4e 59 3a 4c 44 41 20  |reen),Y:INY:LDA |
00000b00  63 32 0d 05 b4 1f 82 20  28 73 63 72 65 65 6e 29  |c2..... (screen)|
00000b10  2c 59 3a 53 54 41 20 28  73 63 72 65 65 6e 29 2c  |,Y:STA (screen),|
00000b20  59 0d 05 be 1e 49 4e 59  3a 42 4e 45 20 6e 6c 6f  |Y....INY:BNE nlo|
00000b30  6f 70 3a 49 4e 43 20 73  63 72 65 65 6e 2b 31 0d  |op:INC screen+1.|
00000b40  05 c8 11 42 50 4c 20 6e  6c 6f 6f 70 3a 52 54 53  |...BPL nloop:RTS|
00000b50  0d 05 d2 05 3a 0d 05 dc  0c 2e 72 6e 64 5f 63 6f  |....:.....rnd_co|
00000b60  6c 0d 05 e6 0a 4c 44 58  20 23 30 0d 05 f0 0b 2e  |l....LDX #0.....|
00000b70  72 6c 6f 6f 70 31 0d 05  fa 22 4c 44 41 20 23 30  |rloop1..."LDA #0|
00000b80  3a 53 54 41 20 73 63 72  65 65 6e 3a 53 54 41 20  |:STA screen:STA |
00000b90  73 63 72 65 65 6e 2b 31  0d 06 04 12 4c 44 59 20  |screen+1....LDY |
00000ba0  23 33 3a 4c 44 41 20 72  6e 64 0d 06 0e 0b 2e 72  |#3:LDA rnd.....r|
00000bb0  6c 6f 6f 70 32 0d 06 18  1a 41 53 4c 20 41 3a 52  |loop2....ASL A:R|
00000bc0  4f 4c 20 73 63 72 65 65  6e 2b 31 3a 44 45 59 0d  |OL screen+1:DEY.|
00000bd0  06 22 19 42 4e 45 20 72  6c 6f 6f 70 32 3a 53 54  |.".BNE rloop2:ST|
00000be0  41 20 73 63 72 65 65 6e  0d 06 2c 1f 4c 44 41 20  |A screen..,.LDA |
00000bf0  73 63 72 5f 68 69 3a 43  4c 43 3a 41 44 43 20 73  |scr_hi:CLC:ADC s|
00000c00  63 72 65 65 6e 2b 31 0d  06 36 10 53 54 41 20 73  |creen+1..6.STA s|
00000c10  63 72 65 65 6e 2b 31 0d  06 40 0b 2e 72 6c 6f 6f  |creen+1..@..rloo|
00000c20  70 33 0d 06 4a 0a 4c 44  59 20 23 37 0d 06 54 0b  |p3..J.LDY #7..T.|
00000c30  2e 72 6c 6f 6f 70 34 0d  06 5e 16 54 59 41 3a 80  |.rloop4..^.TYA:.|
00000c40  20 23 31 3a 42 45 51 20  72 6f 76 65 72 0d 06 68  | #1:BEQ rover..h|
00000c50  15 4c 44 41 20 63 32 3a  4a 4d 50 20 72 6f 76 65  |.LDA c2:JMP rove|
00000c60  72 32 0d 06 72 0a 2e 72  6f 76 65 72 0d 06 7c 0a  |r2..r..rover..|.|
00000c70  4c 44 41 20 63 31 0d 06  86 0b 2e 72 6f 76 65 72  |LDA c1.....rover|
00000c80  32 0d 06 90 23 82 20 28  73 63 72 65 65 6e 29 2c  |2...#. (screen),|
00000c90  59 3a 53 54 41 20 28 73  63 72 65 65 6e 29 2c 59  |Y:STA (screen),Y|
00000ca0  3a 44 45 59 0d 06 9a 1f  42 50 4c 20 72 6c 6f 6f  |:DEY....BPL rloo|
00000cb0  70 34 3a 4c 44 41 20 73  63 72 65 65 6e 2b 31 3a  |p4:LDA screen+1:|
00000cc0  43 4c 43 0d 06 a4 22 41  44 43 20 23 38 3a 53 54  |CLC..."ADC #8:ST|
00000cd0  41 20 73 63 72 65 65 6e  2b 31 3a 42 50 4c 20 72  |A screen+1:BPL r|
00000ce0  6c 6f 6f 70 33 0d 06 ae  1b 4c 44 41 20 72 6e 64  |loop3....LDA rnd|
00000cf0  3a 41 53 4c 20 41 3a 41  53 4c 20 41 3a 43 4c 43  |:ASL A:ASL A:CLC|
00000d00  0d 06 b8 1e 41 44 43 20  72 6e 64 3a 43 4c 43 3a  |....ADC rnd:CLC:|
00000d10  41 44 43 20 23 33 3a 53  54 41 20 72 6e 64 0d 06  |ADC #3:STA rnd..|
00000d20  c2 16 44 45 58 3a 42 4e  45 20 72 6c 6f 6f 70 31  |..DEX:BNE rloop1|
00000d30  3a 52 54 53 0d 06 cc 05  3a 0d 06 d6 0d 2e 73 68  |:RTS....:.....sh|
00000d40  75 74 5f 63 6f 6c 0d 06  e0 1a 53 54 59 20 74 65  |ut_col....STY te|
00000d50  6d 70 3a 4c 44 58 20 23  37 3a 4c 44 59 20 23 30  |mp:LDX #7:LDY #0|
00000d60  0d 06 ea 0b 2e 73 6c 6f  6f 70 31 0d 06 f4 26 53  |.....sloop1...&S|
00000d70  54 58 20 73 63 72 65 65  6e 3a 4c 44 41 20 73 63  |TX screen:LDA sc|
00000d80  72 5f 68 69 3a 53 54 41  20 73 63 72 65 65 6e 2b  |r_hi:STA screen+|
00000d90  31 0d 06 fe 0b 2e 73 6c  6f 6f 70 32 0d 07 08 19  |1.....sloop2....|
00000da0  54 58 41 3a 80 20 23 31  3a 54 41 59 3a 4c 44 41  |TXA:. #1:TAY:LDA|
00000db0  20 63 31 2c 59 0d 07 12  1a 4c 44 59 20 74 65 6d  | c1,Y....LDY tem|
00000dc0  70 3a 42 4e 45 20 6e 6f  74 5f 74 69 74 6c 65 0d  |p:BNE not_title.|
00000dd0  07 1c 19 4c 44 41 20 23  26 43 30 3a 80 20 28 73  |...LDA #&C0:. (s|
00000de0  63 72 65 65 6e 29 2c 59  0d 07 26 15 4a 4d 50 20  |creen),Y..&.JMP |
00000df0  72 65 73 74 6f 72 65 5f  74 69 74 6c 65 0d 07 30  |restore_title..0|
00000e00  1f 2e 6e 6f 74 5f 74 69  74 6c 65 20 44 45 59 3a  |..not_title DEY:|
00000e10  82 20 28 73 63 72 65 65  6e 29 2c 59 0d 07 3a 12  |. (screen),Y..:.|
00000e20  2e 72 65 73 74 6f 72 65  5f 74 69 74 6c 65 0d 07  |.restore_title..|
00000e30  44 21 53 54 41 20 28 73  63 72 65 65 6e 29 2c 59  |D!STA (screen),Y|
00000e40  3a 4c 44 41 20 73 63 72  65 65 6e 3a 43 4c 43 0d  |:LDA screen:CLC.|
00000e50  07 4e 15 41 44 43 20 23  38 3a 53 54 41 20 73 63  |.N.ADC #8:STA sc|
00000e60  72 65 65 6e 0d 07 58 1b  42 43 43 20 73 6c 6f 6f  |reen..X.BCC sloo|
00000e70  70 32 3a 49 4e 43 20 73  63 72 65 65 6e 2b 31 0d  |p2:INC screen+1.|
00000e80  07 62 1d 42 50 4c 20 73  6c 6f 6f 70 32 3a 44 45  |.b.BPL sloop2:DE|
00000e90  58 3a 42 50 4c 20 73 6c  6f 6f 70 31 0d 07 6c 07  |X:BPL sloop1..l.|
00000ea0  52 54 53 0d 07 76 05 3a  0d 07 80 0f 2e 73 63 72  |RTS..v.:.....scr|
00000eb0  6f 6c 6c 5f 63 6f 6c 0d  07 8a 1c 4c 44 58 20 23  |oll_col....LDX #|
00000ec0  26 32 30 3a 53 54 58 20  72 6f 77 73 3a 4c 44 58  |&20:STX rows:LDX|
00000ed0  20 23 30 0d 07 94 26 53  54 58 20 73 63 72 65 65  | #0...&STX scree|
00000ee0  6e 3a 4c 44 58 20 73 63  72 5f 68 69 3a 53 54 58  |n:LDX scr_hi:STX|
00000ef0  20 73 63 72 65 65 6e 2b  31 0d 07 9e 0a 2e 73 63  | screen+1.....sc|
00000f00  72 6f 77 0d 07 a8 1f 4c  44 41 20 73 63 72 65 65  |row....LDA scree|
00000f10  6e 3a 53 54 41 20 63 6f  6c 5f 61 64 64 72 3a 43  |n:STA col_addr:C|
00000f20  4c 43 0d 07 b2 24 41 44  43 20 23 26 38 30 3a 53  |LC...$ADC #&80:S|
00000f30  54 41 20 73 63 72 65 65  6e 3a 4c 44 41 20 73 63  |TA screen:LDA sc|
00000f40  72 65 65 6e 2b 31 0d 07  bc 1b 53 54 41 20 63 6f  |reen+1....STA co|
00000f50  6c 5f 61 64 64 72 2b 31  3a 41 44 43 20 23 26 30  |l_addr+1:ADC #&0|
00000f60  32 0d 07 c6 17 42 50 4c  20 73 63 6f 76 65 72 3a  |2....BPL scover:|
00000f70  4c 44 41 20 23 26 33 30  0d 07 d0 0b 2e 73 63 6f  |LDA #&30.....sco|
00000f80  76 65 72 0d 07 da 24 53  54 41 20 73 63 72 65 65  |ver...$STA scree|
00000f90  6e 2b 31 3a 4c 44 41 20  23 26 31 33 3a 4a 53 52  |n+1:LDA #&13:JSR|
00000fa0  20 6f 73 62 79 74 65 0d  07 e4 21 4c 44 41 20 73  | osbyte...!LDA s|
00000fb0  63 72 65 65 6e 2b 31 3a  4c 53 52 20 41 3a 52 4f  |creen+1:LSR A:RO|
00000fc0  52 20 73 63 72 65 65 6e  0d 07 ee 22 54 41 59 3a  |R screen..."TAY:|
00000fd0  4c 44 58 20 23 33 3a 4c  44 41 20 23 26 39 37 3a  |LDX #3:LDA #&97:|
00000fe0  4a 53 52 20 6f 73 62 79  74 65 0d 07 f8 1d 4c 44  |JSR osbyte....LD|
00000ff0  41 20 73 63 72 65 65 6e  3a 41 53 4c 20 73 63 72  |A screen:ASL scr|
00001000  65 65 6e 3a 54 41 59 0d  08 02 13 4c 44 58 20 23  |een:TAY....LDX #|
00001010  32 3a 53 54 58 20 74 65  6d 70 0d 08 0c 17 4c 44  |2:STX temp....LD|
00001020  41 20 23 26 39 37 3a 4a  53 52 20 6f 73 62 79 74  |A #&97:JSR osbyt|
00001030  65 0d 08 16 13 4c 44 59  20 23 30 3a 4c 44 58 20  |e....LDY #0:LDX |
00001040  23 26 34 30 0d 08 20 0b  2e 73 63 6c 6f 6f 70 0d  |#&40.. ..scloop.|
00001050  08 2a 19 4c 44 41 20 28  63 6f 6c 5f 61 64 64 72  |.*.LDA (col_addr|
00001060  29 2c 59 3a 82 20 63 31  0d 08 34 18 53 54 41 20  |),Y:. c1..4.STA |
00001070  28 63 6f 6c 5f 61 64 64  72 29 2c 59 3a 49 4e 59  |(col_addr),Y:INY|
00001080  0d 08 3e 19 4c 44 41 20  28 63 6f 6c 5f 61 64 64  |..>.LDA (col_add|
00001090  72 29 2c 59 3a 82 20 63  32 0d 08 48 18 53 54 41  |r),Y:. c2..H.STA|
000010a0  20 28 63 6f 6c 5f 61 64  64 72 29 2c 59 3a 49 4e  | (col_addr),Y:IN|
000010b0  59 0d 08 52 1f 42 4e 45  20 73 63 5f 68 69 5f 6f  |Y..R.BNE sc_hi_o|
000010c0  6b 3a 49 4e 43 20 63 6f  6c 5f 61 64 64 72 2b 31  |k:INC col_addr+1|
000010d0  0d 08 5c 0d 2e 73 63 5f  68 69 5f 6f 6b 0d 08 66  |..\..sc_hi_ok..f|
000010e0  12 44 45 58 3a 42 4e 45  20 73 63 6c 6f 6f 70 0d  |.DEX:BNE scloop.|
000010f0  08 70 17 44 45 43 20 74  65 6d 70 3a 42 4e 45 20  |.p.DEC temp:BNE |
00001100  73 63 6c 6f 6f 70 0d 08  7a 0c 2e 72 6f 77 5f 65  |scloop..z..row_e|
00001110  6e 64 0d 08 84 1a 44 45  43 20 72 6f 77 73 3a 42  |nd....DEC rows:B|
00001120  4e 45 20 73 63 72 6f 77  3a 52 54 53 0d 08 8e 05  |NE scrow:RTS....|
00001130  3a 0d 08 98 0e 2e 73 75  70 65 72 5f 70 69 78 0d  |:.....super_pix.|
00001140  08 a2 14 53 54 58 20 63  31 3a 54 58 41 3a 80 20  |...STX c1:TXA:. |
00001150  23 38 35 0d 08 ac 14 41  53 4c 20 41 3a 53 54 41  |#85....ASL A:STA|
00001160  20 63 32 3a 54 58 41 0d  08 b6 16 80 20 23 31 37  | c2:TXA..... #17|
00001170  30 3a 4c 53 52 20 41 3a  84 41 20 63 32 0d 08 c0  |0:LSR A:.A c2...|
00001180  0e 53 54 41 20 63 32 3a  52 54 53 0d 08 ca 05 3a  |.STA c2:RTS....:|
00001190  0d 08 d4 0c 2e 70 61 74  74 65 72 6e 0d 08 de 11  |.....pattern....|
000011a0  4c 44 58 20 23 32 3a 4c  44 59 20 23 30 0d 08 e8  |LDX #2:LDY #0...|
000011b0  0a 2e 70 6c 6f 6f 70 0d  08 f2 14 4c 44 41 20 26  |..ploop....LDA &|
000011c0  46 46 3a 42 4d 49 20 70  6f 75 74 0d 08 fc 20 4c  |FF:BMI pout... L|
000011d0  44 41 20 23 26 31 32 3a  4a 53 52 20 6f 73 77 72  |DA #&12:JSR oswr|
000011e0  63 68 3a 4c 44 41 20 23  26 30 33 0d 09 06 1b 4a  |ch:LDA #&03....J|
000011f0  53 52 20 6f 73 77 72 63  68 3a 4a 53 52 20 72 65  |SR oswrch:JSR re|
00001200  61 64 5f 76 64 75 0d 09  10 17 4c 44 41 20 23 26  |ad_vdu....LDA #&|
00001210  31 39 3a 4a 53 52 20 6f  73 77 72 63 68 0d 09 1a  |19:JSR oswrch...|
00001220  1c 54 58 41 3a 42 45 51  20 74 72 69 3a 44 45 58  |.TXA:BEQ tri:DEX|
00001230  3a 4c 44 41 20 23 26 30  34 0d 09 24 10 42 4e 45  |:LDA #&04..$.BNE|
00001240  20 70 6c 6f 74 5f 6f 70  74 0d 09 2e 08 2e 74 72  | plot_opt.....tr|
00001250  69 0d 09 38 0b 4c 44 41  20 23 38 35 0d 09 42 0d  |i..8.LDA #85..B.|
00001260  2e 70 6c 6f 74 5f 6f 70  74 0d 09 4c 1b 4a 53 52  |.plot_opt..L.JSR|
00001270  20 6f 73 77 72 63 68 3a  4a 53 52 20 72 65 61 64  | oswrch:JSR read|
00001280  5f 76 64 75 0d 09 56 1d  4a 53 52 20 72 65 61 64  |_vdu..V.JSR read|
00001290  5f 76 64 75 3a 4a 53 52  20 72 65 61 64 5f 76 64  |_vdu:JSR read_vd|
000012a0  75 0d 09 60 1e 4a 53 52  20 72 65 61 64 5f 76 64  |u..`.JSR read_vd|
000012b0  75 3a 4c 44 41 20 76 64  75 5f 73 74 61 72 74 0d  |u:LDA vdu_start.|
000012c0  09 6a 19 43 4d 50 20 76  64 75 5f 65 6e 64 3a 42  |.j.CMP vdu_end:B|
000012d0  4e 45 20 70 6c 6f 6f 70  0d 09 74 21 4c 44 41 20  |NE ploop..t!LDA |
000012e0  76 64 75 5f 73 74 61 72  74 2b 31 3a 43 4d 50 20  |vdu_start+1:CMP |
000012f0  76 64 75 5f 65 6e 64 2b  31 0d 09 7e 17 42 4e 45  |vdu_end+1..~.BNE|
00001300  20 70 6c 6f 6f 70 3a 2e  70 6f 75 74 20 52 54 53  | ploop:.pout RTS|
00001310  0d 09 88 05 3a 0d 09 92  0d 2e 72 65 61 64 5f 76  |....:.....read_v|
00001320  64 75 0d 09 9c 20 4c 44  41 20 28 76 64 75 5f 73  |du... LDA (vdu_s|
00001330  74 61 72 74 29 2c 59 3a  4a 53 52 20 6f 73 77 72  |tart),Y:JSR oswr|
00001340  63 68 0d 09 a6 1a 49 4e  43 20 76 64 75 5f 73 74  |ch....INC vdu_st|
00001350  61 72 74 3a 42 4e 45 20  72 65 6e 64 0d 09 b0 1d  |art:BNE rend....|
00001360  49 4e 43 20 76 64 75 5f  73 74 61 72 74 2b 31 3a  |INC vdu_start+1:|
00001370  2e 72 65 6e 64 20 52 54  53 0d 09 ba 05 3a 0d 09  |.rend RTS....:..|
00001380  c4 0c 2e 70 61 6c 65 74  74 65 0d 09 ce 1b 50 48  |...palette....PH|
00001390  41 3a 4c 44 41 20 23 26  31 33 3a 4a 53 52 20 6f  |A:LDA #&13:JSR o|
000013a0  73 62 79 74 65 0d 09 d8  1a 4a 53 52 20 6f 73 77  |sbyte....JSR osw|
000013b0  31 32 3a 50 4c 41 3a 42  4e 45 20 72 65 6e 64 0d  |12:PLA:BNE rend.|
000013c0  09 e2 0d 2e 66 6f 72 65  5f 74 6f 6f 0d 09 ec 1c  |....fore_too....|
000013d0  4c 44 41 20 70 62 3a 53  45 43 3a 53 42 43 20 23  |LDA pb:SEC:SBC #|
000013e0  38 3a 53 54 41 20 70 62  0d 09 f6 1c 4c 44 41 20  |8:STA pb....LDA |
000013f0  70 62 2b 31 3a 53 42 43  20 23 38 3a 53 54 41 20  |pb+1:SBC #8:STA |
00001400  70 62 2b 31 0d 0a 00 0a  2e 6f 73 77 31 32 0d 0a  |pb+1.....osw12..|
00001410  0a 1a 4c 44 41 20 23 26  30 43 3a 4c 44 58 20 23  |..LDA #&0C:LDX #|
00001420  70 62 20 83 26 31 30 30  0d 0a 14 1c 4c 44 59 20  |pb .&100....LDY |
00001430  23 70 62 20 81 26 31 30  30 3a 4a 4d 50 20 6f 73  |#pb .&100:JMP os|
00001440  77 6f 72 64 0d 0a 1e 05  3a 0d 0a 28 07 2e 70 62  |word....:..(..pb|
00001450  0d 0a 32 0a 45 51 55 44  20 30 0d 0a 3c 0a 45 51  |..2.EQUD 0..<.EQ|
00001460  55 42 20 30 0d 0a 46 09  5d 3a ed 3a e1 0d 0a 50  |UB 0..F.]:.:...P|
00001470  05 3a 0d 0a 5a 0c dd 20  f2 72 65 6c 6f 63 0d 0a  |.:..Z.. .reloc..|
00001480  64 94 ff 28 22 4b 45 59  30 20 2a 54 41 50 45 7c  |d..("KEY0 *TAPE||
00001490  4d 20 46 25 3d 50 41 47  45 3a 54 25 3d 26 45 30  |M F%=PAGE:T%=&E0|
000014a0  30 3a 3f 54 4f 50 3d 31  33 3a 52 45 50 45 41 54  |0:?TOP=13:REPEAT|
000014b0  20 24 54 25 3d 24 46 25  3a 4c 25 3d 4c 45 4e 24  | $T%=$F%:L%=LEN$|
000014c0  54 25 2b 31 3a 54 25 3d  54 25 2b 4c 25 3a 46 25  |T%+1:T%=T%+L%:F%|
000014d0  3d 46 25 2b 4c 25 3a 55  4e 54 49 4c 20 46 25 3e  |=F%+L%:UNTIL F%>|
000014e0  54 4f 50 7c 4d 20 50 41  47 45 3d 26 45 30 30 7c  |TOP|M PAGE=&E00||
000014f0  4d 20 4f 4c 44 7c 4d 20  52 55 4e 7c 4d 22 29 3a  |M OLD|M RUN|M"):|
00001500  ff 28 22 46 58 31 33 38  2c 30 2c 31 32 38 22 29  |.("FX138,0,128")|
00001510  3a e0 0d 0a 6e 05 3a 0d  0a 78 0a dd 20 f2 65 72  |:...n.:..x.. .er|
00001520  72 0d 0a 82 09 ee 20 85  20 87 0d 0a 8c 0b 2a 46  |r..... . .....*F|
00001530  58 39 2c 32 35 0d 0a 96  11 ef 32 32 2c 36 3a d3  |X9,25.....22,6:.|
00001540  3d 26 36 30 30 30 0d 0a  a0 18 f1 27 3a f6 3a f1  |=&6000.....':.:.|
00001550  20 22 20 61 74 20 6c 69  6e 65 20 22 3b 9e 0d 0a  | " at line ";...|
00001560  aa 05 3a 0d 0a b4 35 dc  20 32 32 32 2c 36 2c 32  |..:...5. 222,6,2|
00001570  36 34 2c 31 31 2c 33 33  30 2c 31 33 2c 33 34 32  |64,11,330,13,342|
00001580  2c 31 34 2c 32 34 2c 31  34 2c 33 32 30 2c 31 33  |,14,24,14,320,13|
00001590  2c 39 39 39 2c 39 39 39  0d ff                    |,999,999..|
0000159a