Home » Archimedes archive » Archimedes World » AW-1994-05-Disc1.adf » Disk1May94 » !AWMay94/Goodies/3D_Demo/!Example-1/!RunImage

!AWMay94/Goodies/3D_Demo/!Example-1/!RunImage

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 » Archimedes archive » Archimedes World » AW-1994-05-Disc1.adf » Disk1May94
Filename: !AWMay94/Goodies/3D_Demo/!Example-1/!RunImage
Read OK:
File size: 12A7 bytes
Load address: 0000
Exec address: 0000
File contents
   60ONERRORMODEMODE:REPORT:PRINT" at Line ";ERL:END
   90MODE9+128:OFF:PROCUV:PROCUW:END
  150DEFPROCUV:ORIGIN640,512:UX=13:UY=14:UZ=15:DIMUa 8*1024:PROCUb:SYS6,112,1:SYS6,113,1:CLS:!Uc=USRUd:SYS6,112,2:SYS6,113,2:CLS:!Ue=USRUd:SYS6,112,2:SYS6,113,1:!Uf=1:Ug= NOTTRUE:Uh=16*1024:DIMUi Uh:PROCUj(Ui,Uh):PROCUk(Ui,"<Example-1$Dir>.Data-Files.Sprites"):PROCUl:PROCUm:ENDPROC
  330DEFPROCUl:FORi=0 TO15:COLOURi,0,0,0:NEXTi:A%=Un:B%=!Ue:C%=40*1024 :CALLUo:COLOUR0:COLOUR128+7:PRINTTAB(2,7)"EXAMPLE 1"'"  ---------":COLOUR14:PRINTTAB(0,28)"Rotating a point on a 2-dimensional axis":PRINTTAB(7,31)"PRESS SPACE TO CONTINUE...":COLOUR128+0:CALLUp:PROCUq:REPEATUNTILINKEY(-99):REPEATUNTIL NOTINKEY(-99):ENDPROC
  500DEFPROCUq:COLOUR0,&FF,&FF,&FF:COLOUR1,&DD,&DD,&DD:COLOUR2,&BB,&BB,&BB:COLOUR3,&99,&99,&99:COLOUR4,&77,&77,&77:COLOUR5,&55,&55,&55:COLOUR6,&33,&33,&33:COLOUR7,&00,&00,&00:COLOUR8,&00,&44,&99:COLOUR9,&EE,&EE,&00:COLOUR10,&00,&CC,&00:COLOUR11,&DD,&00,&00:COLOUR12,&EE,&EE,&BB:COLOUR13,&55,&88,&00:COLOUR14,&FF,&BB,&00:COLOUR15,&00,&BB,&FF
  590ENDPROC
  620DEFPROCUm:COLOUR0,&00,&00,&00:COLOUR1,&FF,&00,&00:COLOUR2,&00,&FF,&00:COLOUR3,&FF,&FF,&00:COLOUR4,&00,&00,&FF:COLOUR5,&FF,&00,&FF:COLOUR6,&00,&FF,&FF:COLOUR7,&FF,&FF,&FF:COLOUR8,&00,&00,&00:COLOUR9,&FF,&00,&00:COLOUR10,&00,&FF,&00:COLOUR11,&FF,&FF,&00:COLOUR12,&00,&00,&FF:COLOUR13,&FF,&00,&FF:COLOUR14,&00,&FF,&FF:COLOUR15,&FF,&FF,&FF
  710ENDPROC
  740DEFPROCUW:PROCUr:PROCUs:PROCUt:PROCUu:PROCUv:ENDPROC
  830DEFPROCUr:Uw$="First of all, let's draw our standard":Ux$="2 dimensional axis (n and m)...":T=TIME:REPEAT:PROCUy:CALLUp:UNTILTIME>T+2*100:Uw$="":Ux$="":FORx=-640 TO640STEP16:GCOL0,1:LINE-640,0,x,0:PROCUz(x-8*4,0-48*4,"pencil_2"):CALLUp:NEXTx:FORy=-512 TO512STEP16:GCOL0,1:LINE-640,0,640,0:GCOL0,1:LINE0,-512,0,y
 1030PROCUz(-48*4,y-8*4,"pencil_1"):CALLUp:NEXTy:T=TIME:REPEAT:PROCVU:PROCUy:CALLUp:UNTILTIME>T+3*100:ENDPROC
 1150DEFPROCUs:Uw$="Right, now we can place our point":Ux$="somewhere on the (n,m) plane...":T=TIME:REPEAT:PROCVU:PROCUy:CALLUp:UNTILTIME>T+4*100:Uw$="":Ux$="":VV=200:VW=200:PROCVX(0):T=TIME:REPEAT:PROCVU:PROCVY:PROCUy:CALLUp:UNTILTIME>T+3*100:ENDPROC
 1380DEFPROCVZ:PROCUz(Va,Vb,"pointer"):PROCUz(-240,200,"origin"):Vc+=1:IFVc=20 THENVc=0:Vd=-Vd
 1430Va+=Vd*4:Vb-=Vd*4:ENDPROC
 1480DEFPROCUt:Uw$="Great. Now, let's rotate it around the":Ux$="origin by 10 degrees.":Vc=0:Vd=+1:Va=-180:Vb=90:T=TIME:REPEAT:PROCVU:PROCVY:PROCVZ:PROCUy:CALLUp:UNTILTIME>T+6*100:Uw$="This is where the 2 equations are used.":Ux$="(See the magazine article if in doubt)":T=TIME:REPEAT:PROCVU:PROCVY
 1630PROCUy:CALLUp:UNTILTIME>T+5*100:Uw$="Here we go! ...":Ux$="":T=TIME:REPEAT:PROCVU:PROCVY:PROCUy:CALLUp:UNTILTIME>T+3*100:FORVe=1 TO10:Uw$="Rotated to "+STR$Ve+" degrees":Ux$="":FORVf=1 TO10:WAIT:NEXTVf:PROCVX(Ve):PROCVU:PROCVY:PROCUy:CALLUp:NEXTVe:T=TIME:REPEAT:PROCVU:PROCVY:PROCUy:CALLUp:UNTILTIME>T+5*100:Uw$="Repeated enough times, the point"
 1840Ux$="would perform an entire circle.":T=TIME:REPEAT:PROCVU:PROCVY:PROCUy:CALLUp:UNTILTIME>T+5*100:Uw$="Like this...":Ux$="":T=TIME:REPEAT:PROCVU:PROCVY:PROCUy:CALLUp:UNTILTIME>T+4*100:FORVe=10 TO360+10STEP10:Uw$="Rotated to "+STR$(Ve-10)+" degrees":Ux$="":PROCVX(Ve):PROCVU:PROCVY:PROCUy:CALLUp:T=TIME:REPEATUNTILTIME>T+0.4*100:NEXTVe:Uw$=""
 2060Ux$="":T=TIME:REPEAT:PROCVU:PROCVY:PROCUy:CALLUp:UNTILTIME>T+5*100:ENDPROC
 2140DEFPROCUu:Uw$="And if the angle decreases, the point":Ux$="will move in the opposite direction...":T=TIME:REPEAT:PROCVU:PROCVY:PROCUy:CALLUp:UNTILTIME>T+3*100:FORVe=360+10 TO10STEP-1:PROCVX(Ve):PROCVU:PROCVY:PROCUy:CALLUp:NEXTVe:Uw$="":Ux$="":T=TIME:REPEAT:PROCVU:PROCVY:PROCUy:CALLUp:UNTILTIME>T+4*100:Uw$="Simple, isn't it?":Ux$=""
 2340T=TIME:REPEAT:PROCVU:PROCVY:PROCUy:CALLUp:UNTILTIME>T+4*100:ENDPROC
 2410DEFPROCUv:PRINTTAB(15,14)" THE  END ":PRINTTAB(15,15)"----------":PRINTTAB(1,20)"Press a mouse button or press SPACE...":CALLUp:ENDPROC
 2490DEFPROCVX(Vg):Vh=VV* COS(RADVg)-VW*SIN(RADVg):Vi=VV* SIN(RADVg)+VW*COS(RADVg):ENDPROC
 2550DEFPROCVY:GCOL0,2:LINE0,0,Vh,Vi:PROCUz(Vh-8*4,Vi-8*4,"acid"):ENDPROC
 2610DEFPROCUz(Vj,Vk,Vl$):MOVEVj,Vk:SYS&2E,256+28,Ui,Vl$,,,8:ENDPROC
 2670DEFPROCVU:GCOL0,1:LINE-640,0,640,0:LINE0,-512,0,512:VDU5:MOVE608,-16:PRINT"n":MOVE12,492:PRINT"m":VDU4:ENDPROC
 2780DEFPROCUy:Vm=(40-LENUw$)/2:Vn=(40-LENUx$)/2:GCOL0,7:VDU5:MOVE-640+Vm*32,-512+64:PRINTUw$:MOVE-640+Vn*32,-512+32:PRINTUx$:VDU4:ENDPROC
 2880DEFPROCUb:FORVo=0 TO2STEP2:P%=Ua:[OPT Vo:.Ud ADR r0,Vp:ADR r1,Vq:SWI "OS_ReadVduVariables":LDR r0,Vq:MOV PC,UY:.Uc DCD 0:.Ue DCD 0:.Uf DCD 0:.Vp DCD 149:DCD -1:.Vq DCD 0:.Up MOV r0,#19:SWI "OS_Byte":LDR r4,Uf:MOV r0,#112:MOV r1,r4:SWI "OS_Byte": EOR r4, r4, #3
 3230MOV r0,#113:MOV r1,r4:SWI "OS_Byte":STR r4,Uf:LDR r0,Uc : LDR r1,Ue:STR r0,Ue : STR r1,Uc:MOV r0,#12:SWI "OS_WriteC":MOV PC,UY:.Uo LDRB r4,[r0],#1:LDRB r5,[r0],#1:SUBS r2,r2,r5:MOVLT PC,UY:.Vr STRB r4,[r1],#1:SUBS r5,r5,#1:BNE Vr:CMP r2,#0:BGT Uo
 3520MOV PC,UY:.Un FNVs("Titl-Data"):]:NEXTVo:ENDPROC
 3660DEFFNVt(Vu):P%+=Vu:=Vo
 3710DEFFNVs(Vv$):Vv$="<Example-1$Dir>.Data-Files."+Vv$:Vw=OPENINVv$:Vx=EXT #Vw :CLOSE#Vw:IFVo>0 THENOSCLI"Load "+Vv$+" "+STR$~P%
 3750P%+=Vx:[OPT Vo : ALIGN :]:=Vo
 4130DEFFNVy(Vz,WU$):SYS&2E,256+40,Vz,WU$ TO,,,WV,WW,WX,WY:WZ=WV:=WZ
 4190DEFFNWa(Vz,WU$):SYS&2E,256+40,Vz,WU$ TO,,,WV,WW,WX,WY:Wb=WW:=Wb
 4250DEFFNWc(Vz,WU$):SYS&2E,256+40,Vz,WU$ TO,,,WV,WW,WX,WY:Wd=WY:=Wd
 4310DEFFNWe(Vz,WU$):SYS&2E,256+40,Vz,WU$ TO,,,WV,WW,WX,WY:=(WX=1)
 4360DEFFNWf(Vz,WU$):Wg=FNWh(Vz,WU$):Wi=Wg!32:IFWi=11*4 THEN
 4400Wj= NOTTRUE
 4410ELSE:Wj=Wg+11*4
 4430ENDIF:=Wj
 4470DEFFNWk(Vz):=Vz!4
 4510DEFFNWl(Vz,n):Wm=Vz+Vz!8:Wn=1:WHILEWn<n:Wo=Wm!0:Wm+=Wo:Wn+=1:ENDWHILE:=LEFT$(FNWp(Wm+4),12)+CHR$0
 4640DEFFNWq(Vz,WU$):SYS&2E,256+24,Vz,WU$ TO,,Wr:Ws=Wr:Wi=Ws!32:Wt=Ws+Wi:=Wt
 4720DEFFNWu(Vz,WU$):SYS&2E,256+24,Vz,WU$ TO,,Wr:Ws=Wr:Wv=Ws!36:Ww=Ws+Wv:=Ww
 4800DEFFNWh(Vz,WU$):SYS&2E,256+24,Vz,WU$ TO,,Wr:Wx=Wr:=Wx
 4860DEFPROCWy(Vz,Wz$):SYS&2E,256+12,Vz,Wz$:ENDPROC
 4910DEFPROCUk(Vz,Wz$):SYS&2E,256+10,Vz,Wz$:ENDPROC
 4960DEFPROCUj(Vz,XU):Vz!0=XU:Vz!8=16:SYS&2E,256+9,Vz:ENDPROC
 5030DEFFNXV(Vz,WU$,x,y):LOCALXW,XX:SYS&2E,256+41,Vz,WU$,x,y TO,,,,,WX,WY:XW=WX:XX=WY:=XW
 5110DEFPROCXY(Vz,WU$,x,y,XW,XX):SYS&2E,256+42,Vz,WU$,x,y,XW,XX:ENDPROC
<���:�:�" at Line ";�:�
Z�9+128:�:�UV:�UW:�
����UV:ȑ640,512:UX=13:UY=14:UZ=15:�Ua 8*1024:�Ub:ș6,112,1:ș6,113,1:�:!Uc=�Ud:ș6,112,2:ș6,113,2:�:!Ue=�Ud:ș6,112,2:ș6,113,1:!Uf=1:Ug= ��:Uh=16*1024:�Ui Uh:�Uj(Ui,Uh):�Uk(Ui,"<Example-1$Dir>.Data-Files.Sprites"):�Ul:�Um:�
J���Ul:�i=0 �15:�i,0,0,0:�i:A%=Un:B%=!Ue:C%=40*1024 :�Uo:�0:�128+7:�2,7)"EXAMPLE 1"'"  ---------":�14:�0,28)"Rotating a point on a 2-dimensional axis":�7,31)"PRESS SPACE TO CONTINUE...":�128+0:�Up:�Uq:���(-99):�� ��(-99):�
���Uq:�0,&FF,&FF,&FF:�1,&DD,&DD,&DD:�2,&BB,&BB,&BB:�3,&99,&99,&99:�4,&77,&77,&77:�5,&55,&55,&55:�6,&33,&33,&33:�7,&00,&00,&00:�8,&00,&44,&99:�9,&EE,&EE,&00:�10,&00,&CC,&00:�11,&DD,&00,&00:�12,&EE,&EE,&BB:�13,&55,&88,&00:�14,&FF,&BB,&00:�15,&00,&BB,&FF
N�
l���Um:�0,&00,&00,&00:�1,&FF,&00,&00:�2,&00,&FF,&00:�3,&FF,&FF,&00:�4,&00,&00,&FF:�5,&FF,&00,&FF:�6,&00,&FF,&FF:�7,&FF,&FF,&FF:�8,&00,&00,&00:�9,&FF,&00,&00:�10,&00,&FF,&00:�11,&FF,&FF,&00:�12,&00,&00,&FF:�13,&FF,&00,&FF:�14,&00,&FF,&FF:�15,&FF,&FF,&FF
��
���UW:�Ur:�Us:�Ut:�Uu:�Uv:�
>���Ur:Uw$="First of all, let's draw our standard":Ux$="2 dimensional axis (n and m)...":T=�:�:�Uy:�Up:��>T+2*100:Uw$="":Ux$="":�x=-640 �640�16:�0,1:�-640,0,x,0:�Uz(x-8*4,0-48*4,"pencil_2"):�Up:�x:�y=-512 �512�16:�0,1:�-640,0,640,0:�0,1:�0,-512,0,y
E�Uz(-48*4,y-8*4,"pencil_1"):�Up:�y:T=�:�:�VU:�Uy:�Up:��>T+3*100:�
~���Us:Uw$="Right, now we can place our point":Ux$="somewhere on the (n,m) plane...":T=�:�:�VU:�Uy:�Up:��>T+4*100:Uw$="":Ux$="":VV=200:VW=200:�VX(0):T=�:�:�VU:�VY:�Uy:�Up:��>T+3*100:�
dN��VZ:�Uz(Va,Vb,"pointer"):�Uz(-240,200,"origin"):Vc+=1:�Vc=20 �Vc=0:Vd=-Vd
�Va+=Vd*4:Vb-=Vd*4:�
���Ut:Uw$="Great. Now, let's rotate it around the":Ux$="origin by 10 degrees.":Vc=0:Vd=+1:Va=-180:Vb=90:T=�:�:�VU:�VY:�VZ:�Uy:�Up:��>T+6*100:Uw$="This is where the 2 equations are used.":Ux$="(See the magazine article if in doubt)":T=�:�:�VU:�VY
^��Uy:�Up:��>T+5*100:Uw$="Here we go! ...":Ux$="":T=�:�:�VU:�VY:�Uy:�Up:��>T+3*100:�Ve=1 �10:Uw$="Rotated to "+�Ve+" degrees":Ux$="":�Vf=1 �10:Ȗ:�Vf:�VX(Ve):�VU:�VY:�Uy:�Up:�Ve:T=�:�:�VU:�VY:�Uy:�Up:��>T+5*100:Uw$="Repeated enough times, the point"
0�Ux$="would perform an entire circle.":T=�:�:�VU:�VY:�Uy:�Up:��>T+5*100:Uw$="Like this...":Ux$="":T=�:�:�VU:�VY:�Uy:�Up:��>T+4*100:�Ve=10 �360+10�10:Uw$="Rotated to "+�(Ve-10)+" degrees":Ux$="":�VX(Ve):�VU:�VY:�Uy:�Up:T=�:���>T+0.4*100:�Ve:Uw$=""
-Ux$="":T=�:�:�VU:�VY:�Uy:�Up:��>T+5*100:�
\���Uu:Uw$="And if the angle decreases, the point":Ux$="will move in the opposite direction...":T=�:�:�VU:�VY:�Uy:�Up:��>T+3*100:�Ve=360+10 �10�-1:�VX(Ve):�VU:�VY:�Uy:�Up:�Ve:Uw$="":Ux$="":T=�:�:�VU:�VY:�Uy:�Up:��>T+4*100:Uw$="Simple, isn't it?":Ux$=""
	$&T=�:�:�VU:�VY:�Uy:�Up:��>T+4*100:�
	jh��Uv:�15,14)" THE  END ":�15,15)"----------":�1,20)"Press a mouse button or press SPACE...":�Up:�
	�>��VX(Vg):Vh=VV* �(�Vg)-VW*�(�Vg):Vi=VV* �(�Vg)+VW*�(�Vg):�
	�4��VY:�0,2:�0,0,Vh,Vi:�Uz(Vh-8*4,Vi-8*4,"acid"):�
24��Uz(Vj,Vk,Vl$):�Vj,Vk:ș&2E,256+28,Ui,Vl$,,,8:�
nL��VU:�0,1:�-640,0,640,0:�0,-512,0,512:�5:�608,-16:�"n":�12,492:�"m":�4:�
�e��Uy:Vm=(40-�Uw$)/2:Vn=(40-�Ux$)/2:�0,7:�5:�-640+Vm*32,-512+64:�Uw$:�-640+Vn*32,-512+32:�Ux$:�4:�
@���Ub:�Vo=0 �2�2:P%=Ua:[OPT Vo:.Ud ADR r0,Vp:ADR r1,Vq:SWI "OS_ReadVduVariables":LDR r0,Vq:MOV PC,UY:.Uc DCD 0:.Ue DCD 0:.Uf DCD 0:.Vp DCD 149:DCD -1:.Vq DCD 0:.Up MOV r0,#19:SWI "OS_Byte":LDR r4,Uf:MOV r0,#112:MOV r1,r4:SWI "OS_Byte": � r4, r4, #3
��MOV r0,#113:MOV r1,r4:SWI "OS_Byte":STR r4,Uf:LDR r0,Uc : LDR r1,Ue:STR r0,Ue : STR r1,Uc:MOV r0,#12:SWI "OS_WriteC":MOV PC,UY:.Uo LDRB r4,[r0],#1:LDRB r5,[r0],#1:SUBS r2,r2,r5:MOVLT PC,UY:.Vr STRB r4,[r1],#1:SUBS r5,r5,#1:BNE Vr:CMP r2,#0:BGT Uo

�*MOV PC,UY:.Un �Vs("Titl-Data"):]:�Vo:�
LݤVt(Vu):P%+=Vu:=Vo
~gݤVs(Vv$):Vv$="<Example-1$Dir>.Data-Files."+Vv$:Vw=�Vv$:Vx=� #Vw :�#Vw:�Vo>0 ��"Load "+Vv$+" "+�~P%
�!P%+=Vx:[OPT Vo : ALIGN :]:=Vo
">ݤVy(Vz,WU$):ș&2E,256+40,Vz,WU$ �,,,WV,WW,WX,WY:WZ=WV:=WZ
^>ݤWa(Vz,WU$):ș&2E,256+40,Vz,WU$ �,,,WV,WW,WX,WY:Wb=WW:=Wb
�>ݤWc(Vz,WU$):ș&2E,256+40,Vz,WU$ �,,,WV,WW,WX,WY:Wd=WY:=Wd
�<ݤWe(Vz,WU$):ș&2E,256+40,Vz,WU$ �,,,WV,WW,WX,WY:=(WX=1)
3ݤWf(Vz,WU$):Wg=�Wh(Vz,WU$):Wi=Wg!32:�Wi=11*4 �
0
Wj= ��
:�:Wj=Wg+11*4
N	�:=Wj
vݤWk(Vz):=Vz!4
�OݤWl(Vz,n):Wm=Vz+Vz!8:Wn=1:ȕWn<n:Wo=Wm!0:Wm+=Wo:Wn+=1:�:=��Wp(Wm+4),12)+�0
 FݤWq(Vz,WU$):ș&2E,256+24,Vz,WU$ �,,Wr:Ws=Wr:Wi=Ws!32:Wt=Ws+Wi:=Wt
pFݤWu(Vz,WU$):ș&2E,256+24,Vz,WU$ �,,Wr:Ws=Wr:Wv=Ws!36:Ww=Ws+Wv:=Ww
�4ݤWh(Vz,WU$):ș&2E,256+24,Vz,WU$ �,,Wr:Wx=Wr:=Wx
�&��Wy(Vz,Wz$):ș&2E,256+12,Vz,Wz$:�
.&��Uk(Vz,Wz$):ș&2E,256+10,Vz,Wz$:�
`0��Uj(Vz,XU):Vz!0=XU:Vz!8=16:ș&2E,256+9,Vz:�
�OݤXV(Vz,WU$,x,y):�XW,XX:ș&2E,256+41,Vz,WU$,x,y �,,,,,WX,WY:XW=WX:XX=WY:=XW
�:��XY(Vz,WU$,x,y,XW,XX):ș&2E,256+42,Vz,WU$,x,y,XW,XX:�
�
00000000  0d 00 3c 1b ee 85 eb eb  3a f6 3a f1 22 20 61 74  |..<.....:.:." at|
00000010  20 4c 69 6e 65 20 22 3b  9e 3a e0 0d 00 5a 16 eb  | Line ";.:...Z..|
00000020  39 2b 31 32 38 3a 87 3a  f2 55 56 3a f2 55 57 3a  |9+128:.:.UV:.UW:|
00000030  e0 0d 00 96 e4 dd f2 55  56 3a c8 91 36 34 30 2c  |.......UV:..640,|
00000040  35 31 32 3a 55 58 3d 31  33 3a 55 59 3d 31 34 3a  |512:UX=13:UY=14:|
00000050  55 5a 3d 31 35 3a de 55  61 20 38 2a 31 30 32 34  |UZ=15:.Ua 8*1024|
00000060  3a f2 55 62 3a c8 99 36  2c 31 31 32 2c 31 3a c8  |:.Ub:..6,112,1:.|
00000070  99 36 2c 31 31 33 2c 31  3a db 3a 21 55 63 3d ba  |.6,113,1:.:!Uc=.|
00000080  55 64 3a c8 99 36 2c 31  31 32 2c 32 3a c8 99 36  |Ud:..6,112,2:..6|
00000090  2c 31 31 33 2c 32 3a db  3a 21 55 65 3d ba 55 64  |,113,2:.:!Ue=.Ud|
000000a0  3a c8 99 36 2c 31 31 32  2c 32 3a c8 99 36 2c 31  |:..6,112,2:..6,1|
000000b0  31 33 2c 31 3a 21 55 66  3d 31 3a 55 67 3d 20 ac  |13,1:!Uf=1:Ug= .|
000000c0  b9 3a 55 68 3d 31 36 2a  31 30 32 34 3a de 55 69  |.:Uh=16*1024:.Ui|
000000d0  20 55 68 3a f2 55 6a 28  55 69 2c 55 68 29 3a f2  | Uh:.Uj(Ui,Uh):.|
000000e0  55 6b 28 55 69 2c 22 3c  45 78 61 6d 70 6c 65 2d  |Uk(Ui,"<Example-|
000000f0  31 24 44 69 72 3e 2e 44  61 74 61 2d 46 69 6c 65  |1$Dir>.Data-File|
00000100  73 2e 53 70 72 69 74 65  73 22 29 3a f2 55 6c 3a  |s.Sprites"):.Ul:|
00000110  f2 55 6d 3a e1 0d 01 4a  e3 dd f2 55 6c 3a e3 69  |.Um:...J...Ul:.i|
00000120  3d 30 20 b8 31 35 3a fb  69 2c 30 2c 30 2c 30 3a  |=0 .15:.i,0,0,0:|
00000130  ed 69 3a 41 25 3d 55 6e  3a 42 25 3d 21 55 65 3a  |.i:A%=Un:B%=!Ue:|
00000140  43 25 3d 34 30 2a 31 30  32 34 20 3a d6 55 6f 3a  |C%=40*1024 :.Uo:|
00000150  fb 30 3a fb 31 32 38 2b  37 3a f1 8a 32 2c 37 29  |.0:.128+7:..2,7)|
00000160  22 45 58 41 4d 50 4c 45  20 31 22 27 22 20 20 2d  |"EXAMPLE 1"'"  -|
00000170  2d 2d 2d 2d 2d 2d 2d 2d  22 3a fb 31 34 3a f1 8a  |--------":.14:..|
00000180  30 2c 32 38 29 22 52 6f  74 61 74 69 6e 67 20 61  |0,28)"Rotating a|
00000190  20 70 6f 69 6e 74 20 6f  6e 20 61 20 32 2d 64 69  | point on a 2-di|
000001a0  6d 65 6e 73 69 6f 6e 61  6c 20 61 78 69 73 22 3a  |mensional axis":|
000001b0  f1 8a 37 2c 33 31 29 22  50 52 45 53 53 20 53 50  |..7,31)"PRESS SP|
000001c0  41 43 45 20 54 4f 20 43  4f 4e 54 49 4e 55 45 2e  |ACE TO CONTINUE.|
000001d0  2e 2e 22 3a fb 31 32 38  2b 30 3a d6 55 70 3a f2  |..":.128+0:.Up:.|
000001e0  55 71 3a f5 fd a6 28 2d  39 39 29 3a f5 fd 20 ac  |Uq:...(-99):.. .|
000001f0  a6 28 2d 39 39 29 3a e1  0d 01 f4 fe dd f2 55 71  |.(-99):.......Uq|
00000200  3a fb 30 2c 26 46 46 2c  26 46 46 2c 26 46 46 3a  |:.0,&FF,&FF,&FF:|
00000210  fb 31 2c 26 44 44 2c 26  44 44 2c 26 44 44 3a fb  |.1,&DD,&DD,&DD:.|
00000220  32 2c 26 42 42 2c 26 42  42 2c 26 42 42 3a fb 33  |2,&BB,&BB,&BB:.3|
00000230  2c 26 39 39 2c 26 39 39  2c 26 39 39 3a fb 34 2c  |,&99,&99,&99:.4,|
00000240  26 37 37 2c 26 37 37 2c  26 37 37 3a fb 35 2c 26  |&77,&77,&77:.5,&|
00000250  35 35 2c 26 35 35 2c 26  35 35 3a fb 36 2c 26 33  |55,&55,&55:.6,&3|
00000260  33 2c 26 33 33 2c 26 33  33 3a fb 37 2c 26 30 30  |3,&33,&33:.7,&00|
00000270  2c 26 30 30 2c 26 30 30  3a fb 38 2c 26 30 30 2c  |,&00,&00:.8,&00,|
00000280  26 34 34 2c 26 39 39 3a  fb 39 2c 26 45 45 2c 26  |&44,&99:.9,&EE,&|
00000290  45 45 2c 26 30 30 3a fb  31 30 2c 26 30 30 2c 26  |EE,&00:.10,&00,&|
000002a0  43 43 2c 26 30 30 3a fb  31 31 2c 26 44 44 2c 26  |CC,&00:.11,&DD,&|
000002b0  30 30 2c 26 30 30 3a fb  31 32 2c 26 45 45 2c 26  |00,&00:.12,&EE,&|
000002c0  45 45 2c 26 42 42 3a fb  31 33 2c 26 35 35 2c 26  |EE,&BB:.13,&55,&|
000002d0  38 38 2c 26 30 30 3a fb  31 34 2c 26 46 46 2c 26  |88,&00:.14,&FF,&|
000002e0  42 42 2c 26 30 30 3a fb  31 35 2c 26 30 30 2c 26  |BB,&00:.15,&00,&|
000002f0  42 42 2c 26 46 46 0d 02  4e 05 e1 0d 02 6c fe dd  |BB,&FF..N....l..|
00000300  f2 55 6d 3a fb 30 2c 26  30 30 2c 26 30 30 2c 26  |.Um:.0,&00,&00,&|
00000310  30 30 3a fb 31 2c 26 46  46 2c 26 30 30 2c 26 30  |00:.1,&FF,&00,&0|
00000320  30 3a fb 32 2c 26 30 30  2c 26 46 46 2c 26 30 30  |0:.2,&00,&FF,&00|
00000330  3a fb 33 2c 26 46 46 2c  26 46 46 2c 26 30 30 3a  |:.3,&FF,&FF,&00:|
00000340  fb 34 2c 26 30 30 2c 26  30 30 2c 26 46 46 3a fb  |.4,&00,&00,&FF:.|
00000350  35 2c 26 46 46 2c 26 30  30 2c 26 46 46 3a fb 36  |5,&FF,&00,&FF:.6|
00000360  2c 26 30 30 2c 26 46 46  2c 26 46 46 3a fb 37 2c  |,&00,&FF,&FF:.7,|
00000370  26 46 46 2c 26 46 46 2c  26 46 46 3a fb 38 2c 26  |&FF,&FF,&FF:.8,&|
00000380  30 30 2c 26 30 30 2c 26  30 30 3a fb 39 2c 26 46  |00,&00,&00:.9,&F|
00000390  46 2c 26 30 30 2c 26 30  30 3a fb 31 30 2c 26 30  |F,&00,&00:.10,&0|
000003a0  30 2c 26 46 46 2c 26 30  30 3a fb 31 31 2c 26 46  |0,&FF,&00:.11,&F|
000003b0  46 2c 26 46 46 2c 26 30  30 3a fb 31 32 2c 26 30  |F,&FF,&00:.12,&0|
000003c0  30 2c 26 30 30 2c 26 46  46 3a fb 31 33 2c 26 46  |0,&00,&FF:.13,&F|
000003d0  46 2c 26 30 30 2c 26 46  46 3a fb 31 34 2c 26 30  |F,&00,&FF:.14,&0|
000003e0  30 2c 26 46 46 2c 26 46  46 3a fb 31 35 2c 26 46  |0,&FF,&FF:.15,&F|
000003f0  46 2c 26 46 46 2c 26 46  46 0d 02 c6 05 e1 0d 02  |F,&FF,&FF.......|
00000400  e4 1e dd f2 55 57 3a f2  55 72 3a f2 55 73 3a f2  |....UW:.Ur:.Us:.|
00000410  55 74 3a f2 55 75 3a f2  55 76 3a e1 0d 03 3e fa  |Ut:.Uu:.Uv:...>.|
00000420  dd f2 55 72 3a 55 77 24  3d 22 46 69 72 73 74 20  |..Ur:Uw$="First |
00000430  6f 66 20 61 6c 6c 2c 20  6c 65 74 27 73 20 64 72  |of all, let's dr|
00000440  61 77 20 6f 75 72 20 73  74 61 6e 64 61 72 64 22  |aw our standard"|
00000450  3a 55 78 24 3d 22 32 20  64 69 6d 65 6e 73 69 6f  |:Ux$="2 dimensio|
00000460  6e 61 6c 20 61 78 69 73  20 28 6e 20 61 6e 64 20  |nal axis (n and |
00000470  6d 29 2e 2e 2e 22 3a 54  3d 91 3a f5 3a f2 55 79  |m)...":T=.:.:.Uy|
00000480  3a d6 55 70 3a fd 91 3e  54 2b 32 2a 31 30 30 3a  |:.Up:..>T+2*100:|
00000490  55 77 24 3d 22 22 3a 55  78 24 3d 22 22 3a e3 78  |Uw$="":Ux$="":.x|
000004a0  3d 2d 36 34 30 20 b8 36  34 30 88 31 36 3a e6 30  |=-640 .640.16:.0|
000004b0  2c 31 3a 86 2d 36 34 30  2c 30 2c 78 2c 30 3a f2  |,1:.-640,0,x,0:.|
000004c0  55 7a 28 78 2d 38 2a 34  2c 30 2d 34 38 2a 34 2c  |Uz(x-8*4,0-48*4,|
000004d0  22 70 65 6e 63 69 6c 5f  32 22 29 3a d6 55 70 3a  |"pencil_2"):.Up:|
000004e0  ed 78 3a e3 79 3d 2d 35  31 32 20 b8 35 31 32 88  |.x:.y=-512 .512.|
000004f0  31 36 3a e6 30 2c 31 3a  86 2d 36 34 30 2c 30 2c  |16:.0,1:.-640,0,|
00000500  36 34 30 2c 30 3a e6 30  2c 31 3a 86 30 2c 2d 35  |640,0:.0,1:.0,-5|
00000510  31 32 2c 30 2c 79 0d 04  06 45 f2 55 7a 28 2d 34  |12,0,y...E.Uz(-4|
00000520  38 2a 34 2c 79 2d 38 2a  34 2c 22 70 65 6e 63 69  |8*4,y-8*4,"penci|
00000530  6c 5f 31 22 29 3a d6 55  70 3a ed 79 3a 54 3d 91  |l_1"):.Up:.y:T=.|
00000540  3a f5 3a f2 56 55 3a f2  55 79 3a d6 55 70 3a fd  |:.:.VU:.Uy:.Up:.|
00000550  91 3e 54 2b 33 2a 31 30  30 3a e1 0d 04 7e b9 dd  |.>T+3*100:...~..|
00000560  f2 55 73 3a 55 77 24 3d  22 52 69 67 68 74 2c 20  |.Us:Uw$="Right, |
00000570  6e 6f 77 20 77 65 20 63  61 6e 20 70 6c 61 63 65  |now we can place|
00000580  20 6f 75 72 20 70 6f 69  6e 74 22 3a 55 78 24 3d  | our point":Ux$=|
00000590  22 73 6f 6d 65 77 68 65  72 65 20 6f 6e 20 74 68  |"somewhere on th|
000005a0  65 20 28 6e 2c 6d 29 20  70 6c 61 6e 65 2e 2e 2e  |e (n,m) plane...|
000005b0  22 3a 54 3d 91 3a f5 3a  f2 56 55 3a f2 55 79 3a  |":T=.:.:.VU:.Uy:|
000005c0  d6 55 70 3a fd 91 3e 54  2b 34 2a 31 30 30 3a 55  |.Up:..>T+4*100:U|
000005d0  77 24 3d 22 22 3a 55 78  24 3d 22 22 3a 56 56 3d  |w$="":Ux$="":VV=|
000005e0  32 30 30 3a 56 57 3d 32  30 30 3a f2 56 58 28 30  |200:VW=200:.VX(0|
000005f0  29 3a 54 3d 91 3a f5 3a  f2 56 55 3a f2 56 59 3a  |):T=.:.:.VU:.VY:|
00000600  f2 55 79 3a d6 55 70 3a  fd 91 3e 54 2b 33 2a 31  |.Uy:.Up:..>T+3*1|
00000610  30 30 3a e1 0d 05 64 4e  dd f2 56 5a 3a f2 55 7a  |00:...dN..VZ:.Uz|
00000620  28 56 61 2c 56 62 2c 22  70 6f 69 6e 74 65 72 22  |(Va,Vb,"pointer"|
00000630  29 3a f2 55 7a 28 2d 32  34 30 2c 32 30 30 2c 22  |):.Uz(-240,200,"|
00000640  6f 72 69 67 69 6e 22 29  3a 56 63 2b 3d 31 3a e7  |origin"):Vc+=1:.|
00000650  56 63 3d 32 30 20 8c 56  63 3d 30 3a 56 64 3d 2d  |Vc=20 .Vc=0:Vd=-|
00000660  56 64 0d 05 96 17 56 61  2b 3d 56 64 2a 34 3a 56  |Vd....Va+=Vd*4:V|
00000670  62 2d 3d 56 64 2a 34 3a  e1 0d 05 c8 f8 dd f2 55  |b-=Vd*4:.......U|
00000680  74 3a 55 77 24 3d 22 47  72 65 61 74 2e 20 4e 6f  |t:Uw$="Great. No|
00000690  77 2c 20 6c 65 74 27 73  20 72 6f 74 61 74 65 20  |w, let's rotate |
000006a0  69 74 20 61 72 6f 75 6e  64 20 74 68 65 22 3a 55  |it around the":U|
000006b0  78 24 3d 22 6f 72 69 67  69 6e 20 62 79 20 31 30  |x$="origin by 10|
000006c0  20 64 65 67 72 65 65 73  2e 22 3a 56 63 3d 30 3a  | degrees.":Vc=0:|
000006d0  56 64 3d 2b 31 3a 56 61  3d 2d 31 38 30 3a 56 62  |Vd=+1:Va=-180:Vb|
000006e0  3d 39 30 3a 54 3d 91 3a  f5 3a f2 56 55 3a f2 56  |=90:T=.:.:.VU:.V|
000006f0  59 3a f2 56 5a 3a f2 55  79 3a d6 55 70 3a fd 91  |Y:.VZ:.Uy:.Up:..|
00000700  3e 54 2b 36 2a 31 30 30  3a 55 77 24 3d 22 54 68  |>T+6*100:Uw$="Th|
00000710  69 73 20 69 73 20 77 68  65 72 65 20 74 68 65 20  |is is where the |
00000720  32 20 65 71 75 61 74 69  6f 6e 73 20 61 72 65 20  |2 equations are |
00000730  75 73 65 64 2e 22 3a 55  78 24 3d 22 28 53 65 65  |used.":Ux$="(See|
00000740  20 74 68 65 20 6d 61 67  61 7a 69 6e 65 20 61 72  | the magazine ar|
00000750  74 69 63 6c 65 20 69 66  20 69 6e 20 64 6f 75 62  |ticle if in doub|
00000760  74 29 22 3a 54 3d 91 3a  f5 3a f2 56 55 3a f2 56  |t)":T=.:.:.VU:.V|
00000770  59 0d 06 5e fb f2 55 79  3a d6 55 70 3a fd 91 3e  |Y..^..Uy:.Up:..>|
00000780  54 2b 35 2a 31 30 30 3a  55 77 24 3d 22 48 65 72  |T+5*100:Uw$="Her|
00000790  65 20 77 65 20 67 6f 21  20 2e 2e 2e 22 3a 55 78  |e we go! ...":Ux|
000007a0  24 3d 22 22 3a 54 3d 91  3a f5 3a f2 56 55 3a f2  |$="":T=.:.:.VU:.|
000007b0  56 59 3a f2 55 79 3a d6  55 70 3a fd 91 3e 54 2b  |VY:.Uy:.Up:..>T+|
000007c0  33 2a 31 30 30 3a e3 56  65 3d 31 20 b8 31 30 3a  |3*100:.Ve=1 .10:|
000007d0  55 77 24 3d 22 52 6f 74  61 74 65 64 20 74 6f 20  |Uw$="Rotated to |
000007e0  22 2b c3 56 65 2b 22 20  64 65 67 72 65 65 73 22  |"+.Ve+" degrees"|
000007f0  3a 55 78 24 3d 22 22 3a  e3 56 66 3d 31 20 b8 31  |:Ux$="":.Vf=1 .1|
00000800  30 3a c8 96 3a ed 56 66  3a f2 56 58 28 56 65 29  |0:..:.Vf:.VX(Ve)|
00000810  3a f2 56 55 3a f2 56 59  3a f2 55 79 3a d6 55 70  |:.VU:.VY:.Uy:.Up|
00000820  3a ed 56 65 3a 54 3d 91  3a f5 3a f2 56 55 3a f2  |:.Ve:T=.:.:.VU:.|
00000830  56 59 3a f2 55 79 3a d6  55 70 3a fd 91 3e 54 2b  |VY:.Uy:.Up:..>T+|
00000840  35 2a 31 30 30 3a 55 77  24 3d 22 52 65 70 65 61  |5*100:Uw$="Repea|
00000850  74 65 64 20 65 6e 6f 75  67 68 20 74 69 6d 65 73  |ted enough times|
00000860  2c 20 74 68 65 20 70 6f  69 6e 74 22 0d 07 30 f9  |, the point"..0.|
00000870  55 78 24 3d 22 77 6f 75  6c 64 20 70 65 72 66 6f  |Ux$="would perfo|
00000880  72 6d 20 61 6e 20 65 6e  74 69 72 65 20 63 69 72  |rm an entire cir|
00000890  63 6c 65 2e 22 3a 54 3d  91 3a f5 3a f2 56 55 3a  |cle.":T=.:.:.VU:|
000008a0  f2 56 59 3a f2 55 79 3a  d6 55 70 3a fd 91 3e 54  |.VY:.Uy:.Up:..>T|
000008b0  2b 35 2a 31 30 30 3a 55  77 24 3d 22 4c 69 6b 65  |+5*100:Uw$="Like|
000008c0  20 74 68 69 73 2e 2e 2e  22 3a 55 78 24 3d 22 22  | this...":Ux$=""|
000008d0  3a 54 3d 91 3a f5 3a f2  56 55 3a f2 56 59 3a f2  |:T=.:.:.VU:.VY:.|
000008e0  55 79 3a d6 55 70 3a fd  91 3e 54 2b 34 2a 31 30  |Uy:.Up:..>T+4*10|
000008f0  30 3a e3 56 65 3d 31 30  20 b8 33 36 30 2b 31 30  |0:.Ve=10 .360+10|
00000900  88 31 30 3a 55 77 24 3d  22 52 6f 74 61 74 65 64  |.10:Uw$="Rotated|
00000910  20 74 6f 20 22 2b c3 28  56 65 2d 31 30 29 2b 22  | to "+.(Ve-10)+"|
00000920  20 64 65 67 72 65 65 73  22 3a 55 78 24 3d 22 22  | degrees":Ux$=""|
00000930  3a f2 56 58 28 56 65 29  3a f2 56 55 3a f2 56 59  |:.VX(Ve):.VU:.VY|
00000940  3a f2 55 79 3a d6 55 70  3a 54 3d 91 3a f5 fd 91  |:.Uy:.Up:T=.:...|
00000950  3e 54 2b 30 2e 34 2a 31  30 30 3a ed 56 65 3a 55  |>T+0.4*100:.Ve:U|
00000960  77 24 3d 22 22 0d 08 0c  2d 55 78 24 3d 22 22 3a  |w$=""...-Ux$="":|
00000970  54 3d 91 3a f5 3a f2 56  55 3a f2 56 59 3a f2 55  |T=.:.:.VU:.VY:.U|
00000980  79 3a d6 55 70 3a fd 91  3e 54 2b 35 2a 31 30 30  |y:.Up:..>T+5*100|
00000990  3a e1 0d 08 5c fe dd f2  55 75 3a 55 77 24 3d 22  |:...\...Uu:Uw$="|
000009a0  41 6e 64 20 69 66 20 74  68 65 20 61 6e 67 6c 65  |And if the angle|
000009b0  20 64 65 63 72 65 61 73  65 73 2c 20 74 68 65 20  | decreases, the |
000009c0  70 6f 69 6e 74 22 3a 55  78 24 3d 22 77 69 6c 6c  |point":Ux$="will|
000009d0  20 6d 6f 76 65 20 69 6e  20 74 68 65 20 6f 70 70  | move in the opp|
000009e0  6f 73 69 74 65 20 64 69  72 65 63 74 69 6f 6e 2e  |osite direction.|
000009f0  2e 2e 22 3a 54 3d 91 3a  f5 3a f2 56 55 3a f2 56  |..":T=.:.:.VU:.V|
00000a00  59 3a f2 55 79 3a d6 55  70 3a fd 91 3e 54 2b 33  |Y:.Uy:.Up:..>T+3|
00000a10  2a 31 30 30 3a e3 56 65  3d 33 36 30 2b 31 30 20  |*100:.Ve=360+10 |
00000a20  b8 31 30 88 2d 31 3a f2  56 58 28 56 65 29 3a f2  |.10.-1:.VX(Ve):.|
00000a30  56 55 3a f2 56 59 3a f2  55 79 3a d6 55 70 3a ed  |VU:.VY:.Uy:.Up:.|
00000a40  56 65 3a 55 77 24 3d 22  22 3a 55 78 24 3d 22 22  |Ve:Uw$="":Ux$=""|
00000a50  3a 54 3d 91 3a f5 3a f2  56 55 3a f2 56 59 3a f2  |:T=.:.:.VU:.VY:.|
00000a60  55 79 3a d6 55 70 3a fd  91 3e 54 2b 34 2a 31 30  |Uy:.Up:..>T+4*10|
00000a70  30 3a 55 77 24 3d 22 53  69 6d 70 6c 65 2c 20 69  |0:Uw$="Simple, i|
00000a80  73 6e 27 74 20 69 74 3f  22 3a 55 78 24 3d 22 22  |sn't it?":Ux$=""|
00000a90  0d 09 24 26 54 3d 91 3a  f5 3a f2 56 55 3a f2 56  |..$&T=.:.:.VU:.V|
00000aa0  59 3a f2 55 79 3a d6 55  70 3a fd 91 3e 54 2b 34  |Y:.Uy:.Up:..>T+4|
00000ab0  2a 31 30 30 3a e1 0d 09  6a 68 dd f2 55 76 3a f1  |*100:...jh..Uv:.|
00000ac0  8a 31 35 2c 31 34 29 22  20 54 48 45 20 20 45 4e  |.15,14)" THE  EN|
00000ad0  44 20 22 3a f1 8a 31 35  2c 31 35 29 22 2d 2d 2d  |D ":..15,15)"---|
00000ae0  2d 2d 2d 2d 2d 2d 2d 22  3a f1 8a 31 2c 32 30 29  |-------":..1,20)|
00000af0  22 50 72 65 73 73 20 61  20 6d 6f 75 73 65 20 62  |"Press a mouse b|
00000b00  75 74 74 6f 6e 20 6f 72  20 70 72 65 73 73 20 53  |utton or press S|
00000b10  50 41 43 45 2e 2e 2e 22  3a d6 55 70 3a e1 0d 09  |PACE...":.Up:...|
00000b20  ba 3e dd f2 56 58 28 56  67 29 3a 56 68 3d 56 56  |.>..VX(Vg):Vh=VV|
00000b30  2a 20 9b 28 b2 56 67 29  2d 56 57 2a b5 28 b2 56  |* .(.Vg)-VW*.(.V|
00000b40  67 29 3a 56 69 3d 56 56  2a 20 b5 28 b2 56 67 29  |g):Vi=VV* .(.Vg)|
00000b50  2b 56 57 2a 9b 28 b2 56  67 29 3a e1 0d 09 f6 34  |+VW*.(.Vg):....4|
00000b60  dd f2 56 59 3a e6 30 2c  32 3a 86 30 2c 30 2c 56  |..VY:.0,2:.0,0,V|
00000b70  68 2c 56 69 3a f2 55 7a  28 56 68 2d 38 2a 34 2c  |h,Vi:.Uz(Vh-8*4,|
00000b80  56 69 2d 38 2a 34 2c 22  61 63 69 64 22 29 3a e1  |Vi-8*4,"acid"):.|
00000b90  0d 0a 32 34 dd f2 55 7a  28 56 6a 2c 56 6b 2c 56  |..24..Uz(Vj,Vk,V|
00000ba0  6c 24 29 3a ec 56 6a 2c  56 6b 3a c8 99 26 32 45  |l$):.Vj,Vk:..&2E|
00000bb0  2c 32 35 36 2b 32 38 2c  55 69 2c 56 6c 24 2c 2c  |,256+28,Ui,Vl$,,|
00000bc0  2c 38 3a e1 0d 0a 6e 4c  dd f2 56 55 3a e6 30 2c  |,8:...nL..VU:.0,|
00000bd0  31 3a 86 2d 36 34 30 2c  30 2c 36 34 30 2c 30 3a  |1:.-640,0,640,0:|
00000be0  86 30 2c 2d 35 31 32 2c  30 2c 35 31 32 3a ef 35  |.0,-512,0,512:.5|
00000bf0  3a ec 36 30 38 2c 2d 31  36 3a f1 22 6e 22 3a ec  |:.608,-16:."n":.|
00000c00  31 32 2c 34 39 32 3a f1  22 6d 22 3a ef 34 3a e1  |12,492:."m":.4:.|
00000c10  0d 0a dc 65 dd f2 55 79  3a 56 6d 3d 28 34 30 2d  |...e..Uy:Vm=(40-|
00000c20  a9 55 77 24 29 2f 32 3a  56 6e 3d 28 34 30 2d a9  |.Uw$)/2:Vn=(40-.|
00000c30  55 78 24 29 2f 32 3a e6  30 2c 37 3a ef 35 3a ec  |Ux$)/2:.0,7:.5:.|
00000c40  2d 36 34 30 2b 56 6d 2a  33 32 2c 2d 35 31 32 2b  |-640+Vm*32,-512+|
00000c50  36 34 3a f1 55 77 24 3a  ec 2d 36 34 30 2b 56 6e  |64:.Uw$:.-640+Vn|
00000c60  2a 33 32 2c 2d 35 31 32  2b 33 32 3a f1 55 78 24  |*32,-512+32:.Ux$|
00000c70  3a ef 34 3a e1 0d 0b 40  fb dd f2 55 62 3a e3 56  |:.4:...@...Ub:.V|
00000c80  6f 3d 30 20 b8 32 88 32  3a 50 25 3d 55 61 3a 5b  |o=0 .2.2:P%=Ua:[|
00000c90  4f 50 54 20 56 6f 3a 2e  55 64 20 41 44 52 20 72  |OPT Vo:.Ud ADR r|
00000ca0  30 2c 56 70 3a 41 44 52  20 72 31 2c 56 71 3a 53  |0,Vp:ADR r1,Vq:S|
00000cb0  57 49 20 22 4f 53 5f 52  65 61 64 56 64 75 56 61  |WI "OS_ReadVduVa|
00000cc0  72 69 61 62 6c 65 73 22  3a 4c 44 52 20 72 30 2c  |riables":LDR r0,|
00000cd0  56 71 3a 4d 4f 56 20 50  43 2c 55 59 3a 2e 55 63  |Vq:MOV PC,UY:.Uc|
00000ce0  20 44 43 44 20 30 3a 2e  55 65 20 44 43 44 20 30  | DCD 0:.Ue DCD 0|
00000cf0  3a 2e 55 66 20 44 43 44  20 30 3a 2e 56 70 20 44  |:.Uf DCD 0:.Vp D|
00000d00  43 44 20 31 34 39 3a 44  43 44 20 2d 31 3a 2e 56  |CD 149:DCD -1:.V|
00000d10  71 20 44 43 44 20 30 3a  2e 55 70 20 4d 4f 56 20  |q DCD 0:.Up MOV |
00000d20  72 30 2c 23 31 39 3a 53  57 49 20 22 4f 53 5f 42  |r0,#19:SWI "OS_B|
00000d30  79 74 65 22 3a 4c 44 52  20 72 34 2c 55 66 3a 4d  |yte":LDR r4,Uf:M|
00000d40  4f 56 20 72 30 2c 23 31  31 32 3a 4d 4f 56 20 72  |OV r0,#112:MOV r|
00000d50  31 2c 72 34 3a 53 57 49  20 22 4f 53 5f 42 79 74  |1,r4:SWI "OS_Byt|
00000d60  65 22 3a 20 82 20 72 34  2c 20 72 34 2c 20 23 33  |e": . r4, r4, #3|
00000d70  0d 0c 9e fa 4d 4f 56 20  72 30 2c 23 31 31 33 3a  |....MOV r0,#113:|
00000d80  4d 4f 56 20 72 31 2c 72  34 3a 53 57 49 20 22 4f  |MOV r1,r4:SWI "O|
00000d90  53 5f 42 79 74 65 22 3a  53 54 52 20 72 34 2c 55  |S_Byte":STR r4,U|
00000da0  66 3a 4c 44 52 20 72 30  2c 55 63 20 3a 20 4c 44  |f:LDR r0,Uc : LD|
00000db0  52 20 72 31 2c 55 65 3a  53 54 52 20 72 30 2c 55  |R r1,Ue:STR r0,U|
00000dc0  65 20 3a 20 53 54 52 20  72 31 2c 55 63 3a 4d 4f  |e : STR r1,Uc:MO|
00000dd0  56 20 72 30 2c 23 31 32  3a 53 57 49 20 22 4f 53  |V r0,#12:SWI "OS|
00000de0  5f 57 72 69 74 65 43 22  3a 4d 4f 56 20 50 43 2c  |_WriteC":MOV PC,|
00000df0  55 59 3a 2e 55 6f 20 4c  44 52 42 20 72 34 2c 5b  |UY:.Uo LDRB r4,[|
00000e00  72 30 5d 2c 23 31 3a 4c  44 52 42 20 72 35 2c 5b  |r0],#1:LDRB r5,[|
00000e10  72 30 5d 2c 23 31 3a 53  55 42 53 20 72 32 2c 72  |r0],#1:SUBS r2,r|
00000e20  32 2c 72 35 3a 4d 4f 56  4c 54 20 50 43 2c 55 59  |2,r5:MOVLT PC,UY|
00000e30  3a 2e 56 72 20 53 54 52  42 20 72 34 2c 5b 72 31  |:.Vr STRB r4,[r1|
00000e40  5d 2c 23 31 3a 53 55 42  53 20 72 35 2c 72 35 2c  |],#1:SUBS r5,r5,|
00000e50  23 31 3a 42 4e 45 20 56  72 3a 43 4d 50 20 72 32  |#1:BNE Vr:CMP r2|
00000e60  2c 23 30 3a 42 47 54 20  55 6f 0d 0d c0 2a 4d 4f  |,#0:BGT Uo...*MO|
00000e70  56 20 50 43 2c 55 59 3a  2e 55 6e 20 a4 56 73 28  |V PC,UY:.Un .Vs(|
00000e80  22 54 69 74 6c 2d 44 61  74 61 22 29 3a 5d 3a ed  |"Titl-Data"):]:.|
00000e90  56 6f 3a e1 0d 0e 4c 17  dd a4 56 74 28 56 75 29  |Vo:...L...Vt(Vu)|
00000ea0  3a 50 25 2b 3d 56 75 3a  3d 56 6f 0d 0e 7e 67 dd  |:P%+=Vu:=Vo..~g.|
00000eb0  a4 56 73 28 56 76 24 29  3a 56 76 24 3d 22 3c 45  |.Vs(Vv$):Vv$="<E|
00000ec0  78 61 6d 70 6c 65 2d 31  24 44 69 72 3e 2e 44 61  |xample-1$Dir>.Da|
00000ed0  74 61 2d 46 69 6c 65 73  2e 22 2b 56 76 24 3a 56  |ta-Files."+Vv$:V|
00000ee0  77 3d 8e 56 76 24 3a 56  78 3d a2 20 23 56 77 20  |w=.Vv$:Vx=. #Vw |
00000ef0  3a d9 23 56 77 3a e7 56  6f 3e 30 20 8c ff 22 4c  |:.#Vw:.Vo>0 .."L|
00000f00  6f 61 64 20 22 2b 56 76  24 2b 22 20 22 2b c3 7e  |oad "+Vv$+" "+.~|
00000f10  50 25 0d 0e a6 21 50 25  2b 3d 56 78 3a 5b 4f 50  |P%...!P%+=Vx:[OP|
00000f20  54 20 56 6f 20 3a 20 41  4c 49 47 4e 20 3a 5d 3a  |T Vo : ALIGN :]:|
00000f30  3d 56 6f 0d 10 22 3e dd  a4 56 79 28 56 7a 2c 57  |=Vo..">..Vy(Vz,W|
00000f40  55 24 29 3a c8 99 26 32  45 2c 32 35 36 2b 34 30  |U$):..&2E,256+40|
00000f50  2c 56 7a 2c 57 55 24 20  b8 2c 2c 2c 57 56 2c 57  |,Vz,WU$ .,,,WV,W|
00000f60  57 2c 57 58 2c 57 59 3a  57 5a 3d 57 56 3a 3d 57  |W,WX,WY:WZ=WV:=W|
00000f70  5a 0d 10 5e 3e dd a4 57  61 28 56 7a 2c 57 55 24  |Z..^>..Wa(Vz,WU$|
00000f80  29 3a c8 99 26 32 45 2c  32 35 36 2b 34 30 2c 56  |):..&2E,256+40,V|
00000f90  7a 2c 57 55 24 20 b8 2c  2c 2c 57 56 2c 57 57 2c  |z,WU$ .,,,WV,WW,|
00000fa0  57 58 2c 57 59 3a 57 62  3d 57 57 3a 3d 57 62 0d  |WX,WY:Wb=WW:=Wb.|
00000fb0  10 9a 3e dd a4 57 63 28  56 7a 2c 57 55 24 29 3a  |..>..Wc(Vz,WU$):|
00000fc0  c8 99 26 32 45 2c 32 35  36 2b 34 30 2c 56 7a 2c  |..&2E,256+40,Vz,|
00000fd0  57 55 24 20 b8 2c 2c 2c  57 56 2c 57 57 2c 57 58  |WU$ .,,,WV,WW,WX|
00000fe0  2c 57 59 3a 57 64 3d 57  59 3a 3d 57 64 0d 10 d6  |,WY:Wd=WY:=Wd...|
00000ff0  3c dd a4 57 65 28 56 7a  2c 57 55 24 29 3a c8 99  |<..We(Vz,WU$):..|
00001000  26 32 45 2c 32 35 36 2b  34 30 2c 56 7a 2c 57 55  |&2E,256+40,Vz,WU|
00001010  24 20 b8 2c 2c 2c 57 56  2c 57 57 2c 57 58 2c 57  |$ .,,,WV,WW,WX,W|
00001020  59 3a 3d 28 57 58 3d 31  29 0d 11 08 33 dd a4 57  |Y:=(WX=1)...3..W|
00001030  66 28 56 7a 2c 57 55 24  29 3a 57 67 3d a4 57 68  |f(Vz,WU$):Wg=.Wh|
00001040  28 56 7a 2c 57 55 24 29  3a 57 69 3d 57 67 21 33  |(Vz,WU$):Wi=Wg!3|
00001050  32 3a e7 57 69 3d 31 31  2a 34 20 8c 0d 11 30 0a  |2:.Wi=11*4 ...0.|
00001060  57 6a 3d 20 ac b9 0d 11  3a 10 cc 3a 57 6a 3d 57  |Wj= ....:..:Wj=W|
00001070  67 2b 31 31 2a 34 0d 11  4e 09 cd 3a 3d 57 6a 0d  |g+11*4..N..:=Wj.|
00001080  11 76 12 dd a4 57 6b 28  56 7a 29 3a 3d 56 7a 21  |.v...Wk(Vz):=Vz!|
00001090  34 0d 11 9e 4f dd a4 57  6c 28 56 7a 2c 6e 29 3a  |4...O..Wl(Vz,n):|
000010a0  57 6d 3d 56 7a 2b 56 7a  21 38 3a 57 6e 3d 31 3a  |Wm=Vz+Vz!8:Wn=1:|
000010b0  c8 95 57 6e 3c 6e 3a 57  6f 3d 57 6d 21 30 3a 57  |..Wn<n:Wo=Wm!0:W|
000010c0  6d 2b 3d 57 6f 3a 57 6e  2b 3d 31 3a ce 3a 3d c0  |m+=Wo:Wn+=1:.:=.|
000010d0  a4 57 70 28 57 6d 2b 34  29 2c 31 32 29 2b bd 30  |.Wp(Wm+4),12)+.0|
000010e0  0d 12 20 46 dd a4 57 71  28 56 7a 2c 57 55 24 29  |.. F..Wq(Vz,WU$)|
000010f0  3a c8 99 26 32 45 2c 32  35 36 2b 32 34 2c 56 7a  |:..&2E,256+24,Vz|
00001100  2c 57 55 24 20 b8 2c 2c  57 72 3a 57 73 3d 57 72  |,WU$ .,,Wr:Ws=Wr|
00001110  3a 57 69 3d 57 73 21 33  32 3a 57 74 3d 57 73 2b  |:Wi=Ws!32:Wt=Ws+|
00001120  57 69 3a 3d 57 74 0d 12  70 46 dd a4 57 75 28 56  |Wi:=Wt..pF..Wu(V|
00001130  7a 2c 57 55 24 29 3a c8  99 26 32 45 2c 32 35 36  |z,WU$):..&2E,256|
00001140  2b 32 34 2c 56 7a 2c 57  55 24 20 b8 2c 2c 57 72  |+24,Vz,WU$ .,,Wr|
00001150  3a 57 73 3d 57 72 3a 57  76 3d 57 73 21 33 36 3a  |:Ws=Wr:Wv=Ws!36:|
00001160  57 77 3d 57 73 2b 57 76  3a 3d 57 77 0d 12 c0 34  |Ww=Ws+Wv:=Ww...4|
00001170  dd a4 57 68 28 56 7a 2c  57 55 24 29 3a c8 99 26  |..Wh(Vz,WU$):..&|
00001180  32 45 2c 32 35 36 2b 32  34 2c 56 7a 2c 57 55 24  |2E,256+24,Vz,WU$|
00001190  20 b8 2c 2c 57 72 3a 57  78 3d 57 72 3a 3d 57 78  | .,,Wr:Wx=Wr:=Wx|
000011a0  0d 12 fc 26 dd f2 57 79  28 56 7a 2c 57 7a 24 29  |...&..Wy(Vz,Wz$)|
000011b0  3a c8 99 26 32 45 2c 32  35 36 2b 31 32 2c 56 7a  |:..&2E,256+12,Vz|
000011c0  2c 57 7a 24 3a e1 0d 13  2e 26 dd f2 55 6b 28 56  |,Wz$:....&..Uk(V|
000011d0  7a 2c 57 7a 24 29 3a c8  99 26 32 45 2c 32 35 36  |z,Wz$):..&2E,256|
000011e0  2b 31 30 2c 56 7a 2c 57  7a 24 3a e1 0d 13 60 30  |+10,Vz,Wz$:...`0|
000011f0  dd f2 55 6a 28 56 7a 2c  58 55 29 3a 56 7a 21 30  |..Uj(Vz,XU):Vz!0|
00001200  3d 58 55 3a 56 7a 21 38  3d 31 36 3a c8 99 26 32  |=XU:Vz!8=16:..&2|
00001210  45 2c 32 35 36 2b 39 2c  56 7a 3a e1 0d 13 a6 4f  |E,256+9,Vz:....O|
00001220  dd a4 58 56 28 56 7a 2c  57 55 24 2c 78 2c 79 29  |..XV(Vz,WU$,x,y)|
00001230  3a ea 58 57 2c 58 58 3a  c8 99 26 32 45 2c 32 35  |:.XW,XX:..&2E,25|
00001240  36 2b 34 31 2c 56 7a 2c  57 55 24 2c 78 2c 79 20  |6+41,Vz,WU$,x,y |
00001250  b8 2c 2c 2c 2c 2c 57 58  2c 57 59 3a 58 57 3d 57  |.,,,,,WX,WY:XW=W|
00001260  58 3a 58 58 3d 57 59 3a  3d 58 57 0d 13 f6 3a dd  |X:XX=WY:=XW...:.|
00001270  f2 58 59 28 56 7a 2c 57  55 24 2c 78 2c 79 2c 58  |.XY(Vz,WU$,x,y,X|
00001280  57 2c 58 58 29 3a c8 99  26 32 45 2c 32 35 36 2b  |W,XX):..&2E,256+|
00001290  34 32 2c 56 7a 2c 57 55  24 2c 78 2c 79 2c 58 57  |42,Vz,WU$,x,y,XW|
000012a0  2c 58 58 3a e1 0d ff                              |,XX:...|
000012a7