Home » Archimedes archive » Archimedes World » AW-1993-05.adf » AWMay93 » !AWMay93/Goodies/2dWaves/!2DWaves/!Runimage

!AWMay93/Goodies/2dWaves/!2DWaves/!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-1993-05.adf » AWMay93
Filename: !AWMay93/Goodies/2dWaves/!2DWaves/!Runimage
Read OK:
File size: 5377 bytes
Load address: 0000
Exec address: 0000
File contents
   10REM >!Runimage
   20REM Wavesimulator
   30REM by Jan Vlietinck (c)
   40ON ERROR:REPORT:PRINT " at line ";ERL:END
   50MODE13:OFF
   60PROCinitass
   70PROCinit
   80PROCmain
   90END
  100
  110DEF PROCmain
  120REPEAT
  130PROCinitmenu
  140REPEAT
  150PROCmenu(MENU,WIN)
  160LX%=X%:LY%=Y%
  170CASE MENU OF
  180WHEN 0
  190CASE WIN OF
  200WHEN 1:PROCreinit:PROCauto:MOUSE TO  0,0
  210WHEN 2:PROCreinit:PROCdefine:MOUSE TO 0,0
  220WHEN 3:PROCreinit:!ex=DM1/2:!ey=DM2/2:MOUSE TO 640,512
  230X=(40-(DM1 MOD 2))*16
  240Y=(32-(DM2 MOD 2))*16
  250MOUSE TO X,Y
  260PROCwait
  270WHEN 4:PROCwait
  280ENDCASE
  290WHEN 1
  300CASE WIN OF
  310WHEN 1:CHOICE=CHOICE EOR 1:PROCmark(1)
  320WHEN 2:CHOICE=CHOICE EOR 2:PROCmark(2)
  330WHEN 3:CHOICE=CHOICE EOR 4:PROCmark(3)
  340ENDCASE
  350WHEN 2
  360CASE WIN OF
  370WHEN 1:DM1=FNinput(1)
  380WHEN 2:DM2=FNinput(2)
  390WHEN 3:DAMP=11-FNinput(3)
  400WHEN 4:PROP=12-FNinput(4)
  410WHEN 5:B%=FNinput(5):CALL newbase:BASE=B%
  420ENDCASE
  430ENDCASE
  440UNTIL MENU=0
  450IF RECOMPILE THEN PROCreass:RECOMPILE=FALSE
  460IF WIN<>4 THEN CALL init
  470ORIGIN (XW-4)*4,(YW-4)*4
  480IF (CHOICE AND 4)=0 THEN CHOICE=CHOICE OR 32
  490!choice=CHOICE+16
  500CALL start
  510ORIGIN 0,0
  520UNTIL 0
  530ENDPROC
  540
  550DEF FNinput(I)
  560LOCAL A,X,Y
  570LOCAL ERROR
  580*FX 15,0
  590A=1
  600X=WIND(2,0)/32+11
  610Y=31-WIND(2,1)/32+I
  620ON
  630PRINT TAB(X,Y) "   "
  640VDU 28,X,Y,X+3,Y
  650VDU 23,16,8,0,0,0,0,0,0,0
  660IF A<>0 THEN ON ERROR LOCAL A=-1
  670INPUT TAB(X,Y) A
  680VDU 23,16,0,0,0,0,0,0,0,0
  690VDU 26
  700IF A=-1 THEN
  710A=SETTING(I-1)
  720PRINT TAB(X,Y) "   "
  730PRINT TAB(X,Y) STR$(A)
  740ELSE
  750IF A<SETRANGE(0,I-1) OR A>SETRANGE(1,I-1) THEN
  760IF A<SETRANGE(0,I-1) THEN A=SETRANGE(0,I-1) ELSE A=SETRANGE(1,I-1)
  770ENDIF
  780PRINT TAB(X,Y) "   "
  790PRINT TAB(X,Y) STR$(A)
  800SETTING(I-1)=A
  810RECOMPILE=TRUE
  820ENDIF
  830OFF
  840RESTORE ERROR
  850PROCwait
  860=A
  870
  880DEF PROCwait
  890WHILE Z%:MOUSE X%,Y%,Z%:ENDWHILE
  900ENDPROC
  910
  920DEF PROCmark(I)
  930MOVE WIND(1,0)-36,WIND(1,1)-32*I+16
  940DRAW BY  8,-8:PLOT 33,16,16
  950PROCwait
  960ENDPROC
  970
  980DEF PROCmarker
  990CHOICE=!choice
 1000FOR I=1 TO 3
 1010IF (CHOICE AND (1<<(I-1))) <> 0 THEN
 1020MOVE WIND(1,0)-36,WIND(1,1)-32*I+16
 1030DRAW BY  8,-8:PLOT 33,16,16
 1040ENDIF
 1050NEXT
 1060ENDPROC
 1070
 1080DEF PROCprintsettings
 1090LOCAL I,X,Y
 1100FOR I=1 TO 5
 1110X=WIND(2,0)/32+11
 1120Y=31-WIND(2,1)/32+I
 1130PRINT TAB(X,Y) STR$(SETTING(I-1))
 1140NEXT
 1150ENDPROC
 1160
 1170DEF PROCinitmenu
 1180GCOL 63 TINT 64
 1190CLS
 1200SYS "OS_SpriteOp",256+34,sprite,"2DWaves",0,840
 1210VDU 5
 1220A$="By Jan Vlietinck"
 1230FOR I=1 TO 16
 1240MOVE 16*(I+5)+SIN(I*PI/8)*32,1024-32*(10+I):PRINT MID$(A$,I,1)
 1250NEXT
 1260VDU 4:OFF
 1270GCOL 63 TINT 255
 1280X1=WIND(2,0)
 1290Y1=WIND(2,1)-WIND(2,3)
 1300W1=WIND(0,2)
 1310H1=WIND(0,1)-Y1+2*32
 1320RECTANGLE X1-48,Y1-32,W1+96,H1+64
 1330X=WIND(0,0)/32
 1340Y=32-WIND(0,1)/32
 1350PRINT TAB(X,Y-2) "ACTIONS"
 1360PRINT TAB(X,Y)   "Auto"
 1370PRINT TAB(X,Y+1) "Semi-auto"
 1380PRINT TAB(X,Y+2) "Manual"
 1390PRINT TAB(X,Y+3) "Continue"
 1400X=WIND(1,0)/32
 1410Y=32-WIND(1,1)/32
 1420PRINT TAB(X,Y-2) "OPTIONS"
 1430PRINT TAB(X,Y)   "Projection"
 1440PRINT TAB(X,Y+1) "Loose Edges"
 1450PRINT TAB(X,Y+2) "Colour Lookup"
 1460X=WIND(2,0)/32
 1470Y=32-WIND(2,1)/32
 1480PRINT TAB(X,Y-2) "SETTINGS"
 1490PRINT TAB(X,Y)   "Width"
 1500PRINT TAB(X,Y+1) "Height"
 1510PRINT TAB(X,Y+2) "Viscosity"
 1520PRINT TAB(X,Y+3) "Timestep"
 1530PRINT TAB(X,Y+4) "BaseColour"
 1540PROCmarker
 1550PROCprintsettings
 1560MOUSE TO LX%,LY%
 1570M=!mo
 1580WAIT:SYS "OS_Byte",&71,M
 1590M=M EOR 3:!mo=M
 1600WIN=0
 1610ENDPROC
 1620
 1630DEF PROCmenu(RETURN MENU,RETURN WIN)
 1640LOCAL R
 1650GCOL 4,63
 1660MOUSE RECTANGLE X1,Y1,W1-4,H1
 1670LMENU=-1
 1680LWIN=-1
 1690MENU=-1
 1700WIN=-1
 1710REPEAT
 1720R=RND(1)
 1730MOUSE X%,Y%,Z%
 1740LMENU=MENU
 1750MENU=FNcheckmenu(X%,Y%)
 1760LWIN=WIN
 1770IF MENU<>-1 THEN
 1780WIN=FNcheckwin(X%,Y%,MENU)
 1790ENDIF
 1800IF LMENU<>MENU THEN
 1810IF LMENU<>-1 THEN PROCwin(LWIN,LMENU):ENDIF
 1820IF MENU<>-1 THEN
 1830PROCwin(WIN,MENU)
 1840ENDIF
 1850ELSE
 1860IF MENU<>-1 THEN
 1870IF LWIN<>WIN THEN
 1880PROCwin(LWIN,MENU)
 1890PROCwin(WIN,MENU)
 1900ENDIF
 1910ENDIF
 1920ENDIF
 1930UNTIL Z%=4 AND MENU<>-1
 1940PROCwin(WIN,MENU)
 1950MOUSE RECTANGLE 0,0,1280,1024
 1960ENDPROC
 1970
 1980DEF FNcheckwin(X%,Y%,MENU)
 1990LOCAL W,WIN
 2000WMAX=WIND(MENU,3)
 2010Y%-=WIND(MENU,1)
 2020W=0:FOUND=FALSE
 2030REPEAT
 2040W+=1
 2050IF Y%<-(W-1)*32 AND Y%>=-W*32 THEN
 2060WIN=W
 2070FOUND=TRUE
 2080ENDIF
 2090UNTIL W=WMAX OR FOUND
 2100=WIN
 2110
 2120DEF FNcheckmenu(X%,Y%)
 2130LOCAL I,X,Y
 2140M=-1
 2150FOR I=0 TO 2
 2160X=X%-WIND(I,0)
 2170Y=Y%-WIND(I,1)+WIND(I,3)
 2180IF X>=0 AND Y>=0 AND X<WIND(I,2) AND Y<WIND(I,3) THEN M=I
 2190NEXT
 2200=M
 2210
 2220DEF PROCwin(W,MENU)
 2230IF MENU<>-1 THEN
 2240RECTANGLE FILL WIND(MENU,0),WIND(MENU,1)-W*32,WIND(MENU,2),32
 2250ENDIF
 2260ENDPROC
 2270
 2280DEF PROCinit
 2290TIM=0
 2300*POINTER
 2310MOUSE ON
 2320SYS "OS_Byte",&70,2
 2330CALL init
 2340CHOICE=0
 2350WVADDR=!wavtab
 2360SNADDR=!snutab
 2370A=2^16*.95
 2380FOR I%=0 TO 1023:SNADDR!(4*I%)=-SIN(PI*I%/512)*A+0.5:NEXT
 2390!WVADDR=-1
 2400DIM WIND(2,3)
 2410WIND()=18,21,15,4, 18,14,15,3, 18,8,15,5
 2420WIND()=WIND()*32
 2430LX%=WIND(0,0)+12*32
 2440LY%=WIND(0,1)-16
 2450RECOMPILE=FALSE
 2460DIM SETTING(4)
 2470SETTING()=DM1,DM2,11-DAMP,12-PROP,BASE
 2480DIM SETRANGE(1,4)
 2490SETRANGE()=10,10,1,1,0, 80,64,10,10,255
 2500DIM sprite 28000
 2510!sprite=28000
 2520sprite!4=0
 2530sprite!8=16
 2540sprite!12=16
 2550*DIR <2DWaves$dir>
 2560SYS "OS_SpriteOp",256+10,sprite,"2Dwaves"
 2570SYS "OS_SpriteOp",256+24,sprite,"2DWaves"
 2580*DIR ^
 2590ENDPROC
 2600
 2610DEF PROCreinit
 2620!WVADDR=-1
 2630!ex=0
 2640!ey=0
 2650ENDPROC
 2660
 2670DEF PROCdefine
 2680MOUSE TO 640,512
 2690CLS
 2700S%=0
 2710M=!mo
 2720AM=200:FR=60:PH=0
 2730LZ%=4
 2740REPEAT
 2750CALL outcopy
 2760REPEAT
 2770SYS "OS_Byte",&70,M
 2780CALL incopy
 2790LZ%=Z%:MOUSE X%,Y%,Z%
 2800IF Z%=1 THEN FR=(12-X%*12/1280)*10:AM=Y%/2
 2810A$=INKEY$(0):*FX 15,1
 2820IF A$<>"" THEN
 2830CASE A$ OF
 2840WHEN "1":IF AM<512 AM+=10:IF AM>512 AM=512
 2850WHEN "2":IF FR<120 FR+=2:IF FR>120 FR=120
 2860WHEN "3":PH+=2
 2870WHEN "Q","q":IF AM>0 AM-=10:IF AM<0 AM=0
 2880WHEN "W","w":IF FR>0  FR-=2:IF FR<0 FR=0
 2890WHEN "E","e":PH-=2
 2900ENDCASE
 2910ENDIF
 2920R%=400/(1+FR/30)ANDNOT(3)
 2930L%=AM/5+10
 2940T%=PH*5.12
 2950X=X%*DM1 DIV 1280
 2960Y=Y%*DM2 DIV 1024
 2970X%=(X+0.5)*1280/DM1
 2980Y%=(Y+0.5)*1024/DM2
 2990GCOL 3,L% TINT T%
 3000CIRCLE FILL X%,Y%,R%
 3010GCOL 63 TINT 255
 3020CIRCLE X%,Y%,R%
 3030VDU 26
 3040VDU 5:MOVE 0,1023:GCOL 1,63 TINT 255
 3050PRINT "Amplitude : ";AM
 3060PRINT "Frequency : ";FR/10
 3070PRINT "Phase (PI): ";PH/20
 3080PRINT "X : ";X
 3090PRINT "Y : ";Y
 3100VDU 4:OFF
 3110E%=AM:F%=FR*25:G%=PH*25.6
 3120CALL graph
 3130WAIT:SYS "OS_Byte",&71,M:M=M EOR 3
 3140UNTIL (LZ%<>4 AND Z%=4) OR Z%=2
 3150IF Z%=4 THEN
 3160SYS "OS_Byte",&70,M
 3170CALL incopy
 3180GCOL 3,L% TINT T%
 3190CIRCLE FILL X%,Y%,R%
 3200Y=DM2-Y
 3210PO=(X+Y*80+((64-DM2)DIV 2)*80+(80-DM1)DIV 2)*8
 3220PROCset(AM*2,FR,PH*25.6,PO,S%)
 3230CALL outcopy
 3240S%+=1
 3250ENDIF
 3260UNTIL Z%=2
 3270WHILE Z%=2:MOUSE X%,Y%,Z%:ENDWHILE
 3280PROCset(-1,-1,-1,-1,S%)
 3290!mo=M
 3300GCOL 63:COLOUR 63
 3310ENDPROC
 3320
 3330DEF PROCauto
 3340!time=0
 3350FOR S%=0 TO 9
 3360AM=RND(800)
 3370FR=RND(20)
 3380PH=(RND(2)-1)*512+1024
 3390X=RND(DM1-2)+1
 3400Y=RND(DM2-2)+1
 3410PO=(X+Y*80+((64-DM2)DIV 2)*80+(80-DM1)DIV 2)*8
 3420PROCset(AM,FR,PH,PO,S%)
 3430NEXT
 3440PROCset(-1,-1,-1,-1,S%)
 3450ENDPROC
 3460
 3470DEF PROCset(AM,FR,PH,PO,S%)
 3480WVADDR!(S%*16)=PO:REM position
 3490WVADDR!(S%*16+4)=AM:REM amplitude
 3500WVADDR!(S%*16+8)=FR:REM frequency
 3510WVADDR!(S%*16+12)=PH:REM phase
 3520ENDPROC
 3530
 3540DEF PROCcoltable(CTABLE)
 3550SWP=2
 3560C=0:M=15
 3570FOR K=0 TO M
 3580PROCput(C+(K AND %1100)*5.25,K AND %11)
 3590NEXT
 3600FOR T=1 TO 3
 3610C=T:M=4*(4-T)-1
 3620PROCside(  4)
 3630PROCside(- 1)
 3640PROCside( 16)
 3650PROCside(- 4)
 3660PROCside(  1)
 3670PROCside(-16)
 3680NEXT
 3690ENDPROC
 3700
 3710DEF PROCside(RGB)
 3720FOR I=1 TO T
 3730C+=RGB
 3740IF SWP=1 THEN
 3750FOR K=0 TO M
 3760PROCput(C+(K AND %1100)*5.25,K AND %11)
 3770NEXT
 3780ELSE
 3790FOR K=M TO 0 STEP -1
 3800PROCput(C+(K AND %1100)*5.25,K AND %11)
 3810NEXT
 3820ENDIF
 3830SWP=SWP EOR 3
 3840NEXT
 3850ENDPROC
 3860
 3870DEF PROCput(C,T)
 3880B1=(C>>5) AND 1
 3890B2=(C>>4) AND 1
 3900G1=(C>>3) AND 1
 3910G2=(C>>2) AND 1
 3920R1=(C>>1) AND 1
 3930R2=(C>>0) AND 1
 3940COL=T+4*(R2+2*(B2+2*(R1+2*(G2+2*(G1+2*B1)))))
 3950?CTABLE=COL
 3960CTABLE+=1
 3970ENDPROC
 3980
 3990DEF PROCinitass
 4000DIM Q% 100000
 4010DAMP=8
 4020PROP=2
 4030DM1=80
 4040DM2=64
 4050BASE=180
 4060DIM CTABLE 256
 4070PROCcoltable(CTABLE)
 4080FOR PASS=0 TO 2 STEP 2
 4090P%=Q%
 4100[OPT PASS
 4110.scr1 EQUD 148:EQUD -1
 4120.scr2 EQUD 0
 4130.tab1 EQUD xtab
 4140.tab2 EQUD !tab1+64*80*8
 4150.ta1 EQUD 0
 4160.ta2 EQUD 0
 4170.snutab EQUD !tab1+64*80*8*2
 4180.wavtab EQUD !snutab+1024*4
 4190.ex EQUD 1
 4200.ey EQUD 1
 4210.mo EQUD 2
 4220.time EQUD 0
 4230.choice EQUD %110
 4240.name EQUS "Dump":EQUB ASC"0":EQUB 0
 4250.ALIGN
 4260]
 4270QQ%=P%
 4280PROCass
 4290NEXT
 4300ENDPROC
 4310
 4320DEF PROCreass
 4330FOR PASS=0 TO 2 STEP 2
 4340P%=QQ%
 4350PROCass
 4360NEXT
 4370ENDPROC
 4380
 4390DEF PROCass
 4400XW=((80-DM1) DIV 2)*4+4
 4410YW=((64-DM2) DIV 2)*4+4
 4420I    =0  :SNUS =0
 4430J    =1  :X2   =1  :WAVS =1  : DX  =1
 4440T    =2  :M    =2
 4450O    =3  :X    =3  :POSI =3  : OC  =3
 4460W    =4  :Z    =4  :AMPL =4  : DY  =4
 4470X1   =5  :FREQ =5  :NC   =5
 4480V    =6  :Y    =6  :PHA  =6  : C1  =6
 4490Y1   =7  :TIJD =7  :AD   =7  : C2  =7
 4500SCR  =8  :SOUR =8
 4510COL  =9  :C    =9  :DEST =9  : C3  =9
 4520TAB1 =10 :L    =10 :CO   =10 : C4  =10
 4530TAB2 =11 :CT   =11 :LL   =11 : OK  =11
 4540Y2   =12 :MASK =12 :NK   =12
 4550H    =13
 4560N    =14
 4570[OPT PASS
 4580.graph
 4590  ADR R0,scr1
 4600  ADR R1,scr2
 4610  SWI "OS_ReadVduVariables"
 4620  LDR SCR,scr2
 4630  MOV T,#320*128
 4640  ADD SCR,SCR,T
 4650  MOV MASK,#1<<10
 4660  SUB MASK,MASK,#1
 4670  LDR SNUS,snutab
 4680  MOV J,#1280
 4690  SUB J,J,#4
 4700  MOV COL,#255
 4710  MOV LL,#0
 4720  .loopgr
 4730    MUL T,J,FREQ
 4740    MOV T,T,ASR #8
 4750    ADD T,T,PHA
 4760    AND T,T,MASK
 4770    LDR T,[SNUS,T,LSL #2]
 4780    MUL L,T,AMPL
 4790    MOVS T,L,ASR #18
 4800    ADC T,T,#0
 4810    ADD T,T,T,LSL #2
 4820    MOV T,T,LSL #6
 4830    ADD T,T,J,LSR #2
 4840    ADD T,SCR,T
 4850    MOV AD,#320
 4860    CMP T,LL
 4870    RSBHI AD,AD,#0
 4880    MOV L,T
 4890    CMP LL,#0
 4900    CMPNE T,LL
 4910    ADDEQ LL,T,AD
 4920    .dal
 4930      STRB COL,[T],AD
 4940      CMP T,LL
 4950    BNE dal
 4960    SUB LL,L,#1
 4970    SUBS  J,J,#4
 4980  BNE loopgr
 4990MOV PC,R14
 5000
 5010.start
 5020  STMFD 13!,{14}
 5030  MOV R0,#&10
 5040  ADR R1,keypress
 5050  MOV R2,#0
 5060  SWI "OS_Claim"
 5070  MOV R0,#&0E
 5080  MOV R1,#11
 5090  SWI "OS_Byte"
 5100  MOV T,#(64-DM2) DIV 2
 5110  ADD T,T,T,LSL #2
 5120  MOV T,T,LSL #7
 5130  ADD T,T,#((80-DM1) DIV 2)*8
 5140  LDR TAB1,tab1
 5150  ADD TAB1,TAB1,T
 5160  STR TAB1,ta1
 5170  LDR TAB2,tab2
 5180  ADD TAB2,TAB2,T
 5190  STR TAB2,ta2
 5200  .loop
 5210    MOV R0,#&70
 5220    LDR R1,mo
 5230    SWI "OS_Byte"
 5240    LDR T,choice
 5250    TST T,#8+16
 5260    BEQ ovr7
 5270      SUB T,T,#8
 5280      STR T,choice
 5290      MOV R0,#16
 5300      SWI "OS_WriteC"
 5310    .ovr7
 5320    ADR R0,scr1
 5330    ADR R1,scr2
 5340    SWI "OS_ReadVduVariables"
 5350    LDR TAB1,ta1
 5360    LDR TAB2,ta2
 5370    STR TAB1,ta2
 5380    STR TAB2,ta1
 5390    LDR T,choice
 5400    TST T,#32
 5410    BEQ endcase
 5420    .case
 5430      BIC T,T,#32
 5440      STR T,choice
 5450      LDR TAB1,ta1
 5460      BL fix_edges
 5470      LDR TAB1,ta2
 5480      BL fix_edges
 5490    .endcase
 5500    BL mouse_control
 5510    BL sources
 5520    LDR T,choice
 5530    TST T,#2
 5540    BLNE loose_edges
 5550    LDR SCR,scr2
 5560    LDR T,choice
 5570    TST T,#1
 5580    BNE else
 5590      BL simulation_display
 5600      LDR SCR,scr2
 5610      LDR T,choice
 5620      TST T,#4
 5630      BLNE coulor_translation
 5640    BAL endif
 5650    .else
 5660      MOV R0,#16
 5670      SWI "OS_WriteC"
 5680      BL simulation
 5690      LDR SCR,scr2
 5700      LDR TAB1,ta2
 5710      LDR T,choice
 5720      TST T,#4
 5730      BLEQ wiredisplay
 5740      BLNE wiredisplayct
 5750    .endif
 5760    LDR T,choice
 5770    TST T,#64
 5780      BICNE T,T,#64
 5790      STRNE T,choice
 5800      BLNE savescreen
 5810    .wait
 5820      SWI "OS_Mouse"
 5830      CMP T,#1
 5840    BEQ wait
 5850    CMP T,#2
 5860    BEQ end
 5870    MOV R0,#&13
 5880    SWI "OS_Byte"
 5890    LDR T,mo
 5900    MOV R0,#&71
 5910    MOV R1,T
 5920    EOR T,T,#3
 5930    STR T,mo
 5940    SWI "OS_Byte"
 5950  BAL loop
 5960.end
 5970  MOV R0,#&0D
 5980  MOV R1,#11
 5990  SWI "OS_Byte"
 6000  MOV R0,#&10
 6010  ADR R1,keypress
 6020  MOV R2,#0
 6030  SWI "OS_Release"
 6040LDMFD 13!,{15}
 6050
 6060
 6070.keypress
 6080  CMP R0,#11
 6090  MOVNE PC,R14
 6100  CMP R1,#1
 6110  MOVNE PC,R14
 6120  STMFD 13!,{0-3}
 6130  LDR R1,choice
 6140  CMP R2,#&30
 6150  EOREQ R1,R1,#1
 6160  ORREQ R1,R1,#16
 6170  CMP R2,#&29
 6180  EOREQ R1,R1,#2
 6190  ORREQ R1,R1,#32
 6200  CMP R2,#&50
 6210  EOREQ R1,R1,#4
 6220  CMP R2,#&3D
 6230  ORREQ R1,R1,#64
 6240  STR R1,choice
 6250  LDMFD 13!,{0-3}
 6260MOV PC,R14
 6270
 6280.mouse_control
 6290  SWI "OS_Mouse"
 6300  CMP T,#4
 6310  BNE skip
 6320  LDR X,ex
 6330  LDR Y,ey
 6340  CMP X,#0
 6350  BEQ dont
 6360  MOV T,#80
 6370  MUL T,Y,T
 6380  ADD T,T,X
 6390  MOV T,T,LSL #3
 6400  ADD T,T,TAB1
 6410  LDMIA T,{O,V}
 6420  SUB O,O,V
 6430  MOV V,#240<<16
 6440  STMIA T,{O,V}
 6450  .dont
 6460  MOV X,I,LSR #4
 6470  MOV Y,J,LSR #4
 6480  RSB Y,Y,#(DM2-1)
 6490  CMP X,#(DM1-1)
 6500  BHS out
 6510  CMP X,#0
 6520  BLS out
 6530  CMP Y,#(DM2-1)
 6540  BHS out
 6550  CMP Y,#0
 6560  BLS out
 6570  STR X,ex
 6580  STR Y,ey
 6590  MOV PC,R14
 6600  .out
 6610  MOV X,#0
 6620  STR X,ex
 6630  MOV PC,R14
 6640  .skip
 6650  LDR X,ex
 6660  LDR Y,ey
 6670  CMP X,#0
 6680  MOVEQ PC,R14
 6690  MOV T,#80
 6700  MUL T,Y,T
 6710  ADD T,T,X
 6720  MOV T,T,LSL #3
 6730  SUB J,J,#(DM2 DIV 2)*16
 6740  MOV J,J,LSL #18
 6750  ADD J,J,#BASE<<20
 6760  STR J,[TAB1,T]
 6770MOV PC,R14
 6780
 6790.savescreen
 6800STMFD 13!,{0-3}
 6810  MOV R0,#2
 6820  ADR R2,name
 6830  MOV R3,#0
 6840  SWI "OS_SpriteOp"
 6850  LDRB R0,[R2,#4]
 6860  ADD R0,R0,#1
 6870  STRB R0,[R2,#4]
 6880LDMFD 13!,{0-3}
 6890MOV PC,R14
 6900
 6910.sources
 6920  MOV C,#(64-DM2) DIV 2
 6930  ADD C,C,C,LSL #2
 6940  MOV C,C,LSL #7
 6950  ADD C,C,#((80-DM1) DIV 2)*8
 6960  SUB TAB1,TAB1,C
 6970  MOV MASK,#1<<10
 6980  SUB MASK,MASK,#1
 6990  LDR SNUS,snutab
 7000  LDR WAVS,wavtab
 7010  LDR TIJD,time
 7020  ADD TIJD,TIJD,#1
 7030  STR TIJD,time
 7040  .loopw
 7050    LDMIA (WAVS)!,{POSI,AMPL,FREQ,PHA}
 7060    MUL T,TIJD,FREQ
 7070    ADD T,T,PHA
 7080    AND T,T,MASK
 7090    LDR T,[SNUS,T,LSL #2]
 7100    MUL AMPL,T,AMPL
 7110    CMN POSI,#1
 7120    ADD AMPL,AMPL,#BASE<<20
 7130    STRNE AMPL,[TAB1,POSI]
 7140  BNE loopw
 7150  ADD TAB1,TAB1,C
 7160MOV PC,R14
 7170
 7180.fix_edges
 7190  MOV I,#0
 7200  MOV J,#DM2
 7210  MOV T,#8*80
 7220  MUL J,T,J
 7230  MOV T,#BASE<<20
 7240  SUB T,T,#1<<19
 7250  .horz_edge1
 7260    ADD W,TAB1,I
 7270    STR T,[W]
 7280    ADD W,W,J
 7290    STR T,[W,#-80*8]
 7300    ADD I,I,#8
 7310    CMP I,#DM1*8
 7320  BNE horz_edge1
 7330  MOV I,#0
 7340  .vert_edge1
 7350    ADD W,TAB1,I
 7360    STR T,[W]
 7370    ADD W,W,#DM1*8
 7380    STR T,[W,#-8]
 7390    ADD I,I,#80*8
 7400    CMP I,J
 7410  BNE vert_edge1
 7420MOV PC,R14
 7430
 7440.loose_edges
 7450  MOV I,#0
 7460  MOV J,#DM2
 7470  MOV T,#8*80
 7480  MUL J,T,J
 7490  .horz_edge2
 7500    ADD W,TAB1,I
 7510    LDR T,[W,#80*8]
 7520    STR T,[W]
 7530    ADD W,W,J
 7540    LDR T,[W,#-2*80*8]
 7550    STR T,[W,#-80*8]
 7560    ADD I,I,#8
 7570    CMP I,#DM1*8
 7580  BNE horz_edge2
 7590  MOV I,#0
 7600  .vert_edge2
 7610    ADD W,TAB1,I
 7620    LDR T,[W,#+8]
 7630    STR T,[W]
 7640    ADD W,W,#DM1*8
 7650    LDR T,[W,#-16]
 7660    STR T,[W,#-8]
 7670    ADD I,I,#80*8
 7680    CMP I,J
 7690  BNE vert_edge2
 7700MOV PC,R14
 7710
 7720.tmp1 EQUD 0:EQUD 0:EQUD 0
 7730.simulation_display
 7740  MOV X,#XW
 7750  MOV Y,#YW
 7760  ADD T,Y,Y,LSL #2
 7770  ADD T,X,T,LSL #6
 7780  ADD SCR,SCR,T
 7790  MOV J,#DM2-2
 7800  ADD TAB1,TAB1,#80*8
 7810  ADD TAB2,TAB2,#80*8
 7820  .loopy
 7830    MOV I,#DM1-2
 7840    ADD TAB1,TAB1,#1<<3
 7850    ADD TAB2,TAB2,#1<<3
 7860    ADR W,tmp1
 7870    STMIA W,{J,13,14}
 7880    MOV N,#255
 7890    LDR X1,[TAB1,#-8]
 7900    LDR Y1,[TAB1]
 7910    LDR Y2,[TAB1,#80*8]
 7920    ADD TAB1,TAB1,#4
 7930    .loopx
 7940      MOV O,X1
 7950      MOV X1,Y1
 7960      MOV X2,Y2
 7970      LDR W,[TAB1,#-80*8-4]
 7980      LDR Y2,[TAB1,#80*8+8-4]
 7990      LDMIA (TAB1)!,{V,Y1}
 8000      ADD O,O,Y1
 8010      ADD O,O,W
 8020      ADD O,O,X2
 8030      SUB O,O,X1,LSL #2
 8040      ADD V,V,O,ASR #PROP
 8050      SUB V,V,V,ASR #DAMP
 8060      ADD O,X1,V
 8070      STMIA (TAB2)!,{O,V}
 8080      SUB DX,X2,X1
 8090      SUB DY,Y2,Y1
 8100      AND C,N,X1,LSR #20
 8110      ADD H,X1,Y1
 8120      ADD M,H,X1,LSL #1
 8130      AND M,N,M,LSR #22
 8140      ADD C,C,M,LSL #8
 8150      AND M,N,H,LSR #21
 8160      ADD C,C,M,LSL #16
 8170      ADD M,H,Y1,LSL #1
 8180      AND M,N,M,LSR #22
 8190      ADD C,C,M,LSL #24
 8200      STR COL,[SCR],#4
 8210      ADD X,X1,DX,ASR #2
 8220      ADD Y,Y1,DY,ASR #2
 8230      AND C,N,X,LSR #20
 8240      ADD H,X,Y
 8250      ADD M,H,X,LSL #1
 8260      AND M,N,M,LSR #22
 8270      ADD C,C,M,LSL #8
 8280      AND M,N,H,LSR #21
 8290      ADD C,C,M,LSL #16
 8300      ADD M,H,Y,LSL #1
 8310      AND M,N,M,LSR #22
 8320      ADD C,C,M,LSL #24
 8330      STR COL,[SCR,#320-4]
 8340      ADD X,X,DX,ASR #2
 8350      ADD Y,Y,DY,ASR #2
 8360      AND C,N,X,LSR #20
 8370      ADD H,X,Y
 8380      ADD M,H,X,LSL #1
 8390      AND M,N,M,LSR #22
 8400      ADD C,C,M,LSL #8
 8410      AND M,N,H,LSR #21
 8420      ADD C,C,M,LSL #16
 8430      ADD M,H,Y,LSL #1
 8440      AND M,N,M,LSR #22
 8450      ADD C,C,M,LSL #24
 8460      STR COL,[SCR,#640-4]
 8470      ADD X,X,DX,ASR #2
 8480      ADD Y,Y,DY,ASR #2
 8490      AND C,N,X,LSR #20
 8500      ADD H,X,Y
 8510      ADD M,H,X,LSL #1
 8520      AND M,N,M,LSR #22
 8530      ADD C,C,M,LSL #8
 8540      AND M,N,H,LSR #21
 8550      ADD C,C,M,LSL #16
 8560      ADD M,H,Y,LSL #1
 8570      AND M,N,M,LSR #22
 8580      ADD C,C,M,LSL #24
 8590      STR COL,[SCR,#960-4]
 8600      SUBS I,I,#1
 8610    BNE loopx
 8620    ADD SCR,SCR,#320-(DM1-2)*4
 8630    ADD SCR,SCR,#3*320
 8640    SUB TAB1,TAB1,#4
 8650    ADD TAB1,TAB1,#(80-DM1+1)<<3
 8660    ADD TAB2,TAB2,#(80-DM1+1)<<3
 8670    ADR W,tmp1
 8680    LDMIA W,{J,13,14}
 8690    SUBS J,J,#1
 8700  BNE loopy
 8710MOV PC,R14
 8720
 8730.tmp2 EQUD 0:EQUD 0:EQUD 0
 8740.simulation
 8750  MOV J,#DM2-2
 8760  ADD TAB1,TAB1,#80*8
 8770  ADD TAB2,TAB2,#80*8
 8780  .koopy
 8790    MOV I,#DM1-2
 8800    ADD TAB1,TAB1,#1<<3
 8810    ADD TAB2,TAB2,#1<<3
 8820    ADR W,tmp2
 8830    STMIA W,{J,13,14}
 8840    LDR X1,[TAB1,#-8]
 8850    LDR Y1,[TAB1]
 8860    ADD TAB1,TAB1,#4
 8870    .koopx
 8880      MOV O,X1
 8890      MOV X1,Y1
 8900      LDR W,[TAB1,#-80*8-4]
 8910      LDR X2,[TAB1,#80*8-4]
 8920      LDMIA (TAB1)!,{V,Y1}
 8930      ADD O,O,Y1
 8940      ADD O,O,W
 8950      ADD O,O,X2
 8960      SUB O,O,X1,LSL #2
 8970      SUB V,V,V,ASR #DAMP
 8980      ADD V,V,O,ASR #PROP
 8990      ADD O,X1,V
 9000      STMIA (TAB2)!,{O,V}
 9010      SUBS I,I,#1
 9020    BNE koopx
 9030    SUB TAB1,TAB1,#4
 9040    ADD TAB1,TAB1,#(80-DM1+1)<<3
 9050    ADD TAB2,TAB2,#(80-DM1+1)<<3
 9060    ADR W,tmp2
 9070    LDMIA W,{J,13,14}
 9080    SUBS J,J,#1
 9090  BNE koopy
 9100MOV PC,R14
 9110
 9120.reciprocal
 9130 FNfill
 9140.recipraddr EQUD reciprocal
 9150.tmp5 EQUD 0
 9160.wiredisplay
 9170  MOV COL,#255
 9180  MOV J,#DM2-2
 9190  LDR AD,recipraddr
 9200  LDR CT,ctabled
 9210  ADD TAB1,TAB1,#80*8
 9220  MOV T,#1
 9230  MOV Z,T,LSL #2
 9240  LDR Z,[AD,Z,LSL #2]
 9250  MOV X,#4
 9260  SUB X,X,#DM1*2*1.5
 9270  MUL X,Z,X
 9280  STR X,tmp5
 9290  .noopy
 9300    MOV I,#DM1-2
 9310    ADD TAB1,TAB1,#1<<3
 9320    MOV Z,J,LSL #2
 9330    LDR Z,[AD,Z,LSL #2]
 9340    MOV X,#4
 9350    SUB X,X,#DM1*2*1.5
 9360    MUL X,Z,X
 9370    LDR T,tmp5
 9380    SUB X,X,T
 9390    .noopx
 9400      LDMIA (TAB1)!,{X1,V}
 9410      SUB Y,X1,#BASE<<20
 9420      MOV Y,Y,ASR #21
 9430      ADD Y,Y,J,LSL #2
 9440      MUL Y,Z,Y
 9450      MOV Y,Y,ASR #9
 9460      ADD Y,Y,#60
 9470      RSB Y,Y,#255
 9480      ADD T,Y,Y,LSL #2
 9490      MOV T,T,LSL #6
 9500      ADD T,T,X,ASR #9
 9510      CMP T,#320*256
 9520      STRLOB COL,[T,SCR]!
 9530      ADD X,X,Z,LSL #2
 9540      SUBS I,I,#1
 9550    BNE noopx
 9560    ADD TAB1,TAB1,#(80-DM1+1)<<3
 9570    SUBS J,J,#1
 9580  BNE noopy
 9590MOV PC,R14
 9600
 9610.wiredisplayct
 9620  MOV J,#DM2-2
 9630  LDR AD,recipraddr
 9640  LDR CT,ctabled
 9650  ADD TAB1,TAB1,#80*8
 9660  MOV T,#1
 9670  MOV Z,T,LSL #2
 9680  LDR Z,[AD,Z,LSL #2]
 9690  MOV X,#4
 9700  SUB X,X,#DM1*2*1.5
 9710  MUL X,Z,X
 9720  STR X,tmp5
 9730  .moopy
 9740    MOV I,#DM1-2
 9750    ADD TAB1,TAB1,#1<<3
 9760    MOV Z,J,LSL #2
 9770    LDR Z,[AD,Z,LSL #2]
 9780    MOV X,#4
 9790    SUB X,X,#DM1*2*1.5
 9800    MUL X,Z,X
 9810    LDR T,tmp5
 9820    SUB X,X,T
 9830    .moopx
 9840      LDMIA (TAB1)!,{X1,V}
 9850      SUB Y,X1,#BASE<<20
 9860      MOV Y,Y,ASR #21
 9870      ADD Y,Y,J,LSL #2
 9880      MUL Y,Z,Y
 9890      MOV Y,Y,ASR #9
 9900      ADD Y,Y,#60
 9910      RSB Y,Y,#255
 9920      ADD T,Y,Y,LSL #2
 9930      MOV T,T,LSL #6
 9940      ADD T,T,X,ASR #9
 9950      CMP T,#320*256
 9960      AND X1,X1,#255<<20
 9970      LDRLOB COL,[CT,X1,LSR #20]
 9980      STRLOB COL,[T,SCR]!
 9990      ADD X,X,Z,LSL #2
10000      SUBS I,I,#1
10010    BNE moopx
10020    ADD TAB1,TAB1,#(80-DM1+1)<<3
10030    SUBS J,J,#1
10040  BNE moopy
10050MOV PC,R14
10060
10070.ctabled EQUD CTABLE
10080.tmp4 EQUD 0
10090.coulor_translation
10100  STR H,tmp4
10110  MOV X,#XW
10120  MOV Y,#YW
10130  ADD T,Y,Y,LSL #2
10140  ADD T,X,T,LSL #6
10150  ADD SCR,SCR,T
10160  LDR W,ctabled
10170  MOV H,#255
10180  MVN C4,#1
10190  MOV J,#4*(DM2-2)
10200  .glp2
10210    MOV I,#DM1-2
10220    .glp1
10230      LDMIA SCR,{OC,OK}
10240      AND C1,H,OC
10250      AND C2,H,OC,LSR #8
10260      AND C3,H,OC,LSR #16
10270      CMP C4,C1
10280      AND C4,H,OC,LSR #24
10290      LDRNEB T,[W,C1]
10300      MOV NC,T
10310      CMP C1,C2
10320      LDRNEB T,[W,C2]
10330      ADD NC,NC,T,LSL #8
10340      CMP C2,C3
10350      LDRNEB T,[W,C3]
10360      ADD NC,NC,T,LSL #16
10370      CMP C3,C4
10380      LDRNEB T,[W,C4]
10390      ADD NC,NC,T,LSL #24
10400      AND C1,H,OK
10410      AND C2,H,OK,LSR #8
10420      AND C3,H,OK,LSR #16
10430      CMP C4,C1
10440      AND C4,H,OK,LSR #24
10450      LDRNEB T,[W,C1]
10460      MOV NK,T
10470      CMP C1,C2
10480      LDRNEB T,[W,C2]
10490      ADD NK,NK,T,LSL #8
10500      CMP C2,C3
10510      LDRNEB T,[W,C3]
10520      ADD NK,NK,T,LSL #16
10530      CMP C3,C4
10540      LDRNEB T,[W,C4]
10550      ADD NK,NK,T,LSL #24
10560      STMIA (SCR)!,{NC,NK}
10570      SUBS I,I,#2
10580    BHI glp1
10590    ADD SCR,SCR,#320-((DM1+1)ANDNOT1)*4+8
10600    SUBS J,J,#1
10610  BHI glp2
10620  LDR H,tmp4
10630MOV PC,R14
10640
10650.init
10660  ADR W,xtab
10670  MOV I,#64*80*2
10680  MOV T,#BASE<<20
10690  SUB T,T,#1<<19
10700  MOV V,#0
10710    .lop2
10720    STMIA (W)!,{T,V}
10730    SUBS I,I,#1
10740  BNE lop2
10750MOV PC,R14
10760
10770.newbase
10780  ADR W,xtab
10790  MOV I,#64*80*2
10800    .lop2
10810    LDMIA W,{T,V}
10820    SUB T,T,#BASE<<20
10830    ADD T,T,J,LSL #20
10840    STMIA (W)!,{T,V}
10850    SUBS I,I,#1
10860  BNE lop2
10870MOV PC,R14
10880
10890.scrn1 EQUD 148:EQUD -1
10900.scrn2 EQUD 0
10910.incopy
10920  ADR R0,scrn1
10930  ADR R1,scrn2
10940  SWI "OS_ReadVduVariables"
10950  LDR DEST,scrn2
10960  ADR SOUR,xtab
10970  MOV CO,#320*256/4/8/4
10980  .loopi
10990    LDMIA (SOUR)!,{0-7}
11000    STMIA (DEST)!,{0-7}
11010    LDMIA (SOUR)!,{0-7}
11020    STMIA (DEST)!,{0-7}
11030    LDMIA (SOUR)!,{0-7}
11040    STMIA (DEST)!,{0-7}
11050    LDMIA (SOUR)!,{0-7}
11060    STMIA (DEST)!,{0-7}
11070    SUBS CO,CO,#1
11080  BNE loopi
11090MOV PC,R14
11100
11110.outcopy
11120  ADR R0,scrn1
11130  ADR R1,scrn2
11140  SWI "OS_ReadVduVariables"
11150  ADR DEST,xtab
11160  LDR SOUR,scrn2
11170  MOV CO,#320*256/4/8
11180  .loopo
11190    LDMIA (SOUR)!,{0-7}
11200    STMIA (DEST)!,{0-7}
11210    SUBS CO,CO,#1
11220  BNE loopo
11230MOV PC,R14
11240
11250.xtab
11260]
11270ENDPROC
11280
11290DEF FNfill
11300LOCAL I,F,A
11310A=4*(DM1-4)
11320F=320*2^9
11330FOR I=1 TO 256
11340[OPT PASS
11350EQUD F/(I+A)
11360]
11370NEXT
11380=""

� >!Runimage
� Wavesimulator
� by Jan Vlietinck (c)
(� �:�:� " at line ";�:�
2	�13:�
<�initass
F	�init
P	�main
Z�
d
n� �main
x�
�
�initmenu
��
��menu(MENU,WIN)
�LX%=X%:LY%=Y%
�
Ȏ MENU �
�� 0
�Ȏ WIN �
�� 1:�reinit:�auto:ȗ �  0,0
� � 2:�reinit:�define:ȗ � 0,0
�0� 3:�reinit:!ex=DM1/2:!ey=DM2/2:ȗ � 640,512
�X=(40-(DM1 � 2))*16
�Y=(32-(DM2 � 2))*16
�ȗ � X,Y
	�wait

� 4:�wait
�
"� 1
,Ȏ WIN �
6"� 1:CHOICE=CHOICE � 1:�mark(1)
@"� 2:CHOICE=CHOICE � 2:�mark(2)
J"� 3:CHOICE=CHOICE � 4:�mark(3)
T�
^� 2
hȎ WIN �
r� 1:DM1=�input(1)
|� 2:DM2=�input(2)
�� 3:DAMP=11-�input(3)
�� 4:PROP=12-�input(4)
�&� 5:B%=�input(5):� newbase:BASE=B%
��
��
�� MENU=0
�$� RECOMPILE � �reass:RECOMPILE=�
�� WIN<>4 � � init
�ȑ (XW-4)*4,(YW-4)*4
�)� (CHOICE � 4)=0 � CHOICE=CHOICE � 32
�!choice=CHOICE+16
�� start
�
ȑ 0,0
� 0
�

&� �input(I)
0� A,X,Y
:� �
D*FX 15,0
NA=1
XX=WIND(2,0)/32+11
bY=31-WIND(2,1)/32+I
l�
v� �X,Y) "   "
�� 28,X,Y,X+3,Y
�� 23,16,8,0,0,0,0,0,0,0
�� A<>0 � � � � A=-1
�
� �X,Y) A
�� 23,16,0,0,0,0,0,0,0,0
�� 26
�� A=-1 �
�A=SETTING(I-1)
�� �X,Y) "   "
�� �X,Y) �(A)
��
�-� A<SETRANGE(0,I-1) � A>SETRANGE(1,I-1) �
�?� A<SETRANGE(0,I-1) � A=SETRANGE(0,I-1) � A=SETRANGE(1,I-1)
�
� �X,Y) "   "
� �X,Y) �(A)
 SETTING(I-1)=A
*RECOMPILE=�
4�
>�
H� �
R	�wait
\=A
f
p� �wait
zȕ Z%:ȗ X%,Y%,Z%:�
��
�
�� �mark(I)
�$� WIND(1,0)-36,WIND(1,1)-32*I+16
�� BY  8,-8:� 33,16,16
�	�wait
��
�
�
� �marker
�CHOICE=!choice
�
� I=1 � 3
�"� (CHOICE � (1<<(I-1))) <> 0 �
�$� WIND(1,0)-36,WIND(1,1)-32*I+16
� BY  8,-8:� 33,16,16
�
�
$�
.
8� �printsettings
B� I,X,Y
L
� I=1 � 5
VX=WIND(2,0)/32+11
`Y=31-WIND(2,1)/32+I
j� �X,Y) �(SETTING(I-1))
t�
~�
�
�� �initmenu
�� 63 Ȝ 64
��
�2ș "OS_SpriteOp",256+34,sprite,"2DWaves",0,840
�� 5
�A$="By Jan Vlietinck"
�� I=1 � 16
�4� 16*(I+5)+�(I*�/8)*32,1024-32*(10+I):� �A$,I,1)
��
�	� 4:�
�� 63 Ȝ 255
X1=WIND(2,0)

Y1=WIND(2,1)-WIND(2,3)
W1=WIND(0,2)
H1=WIND(0,1)-Y1+2*32
(ȓ X1-48,Y1-32,W1+96,H1+64
2X=WIND(0,0)/32
<Y=32-WIND(0,1)/32
F� �X,Y-2) "ACTIONS"
P� �X,Y)   "Auto"
Z� �X,Y+1) "Semi-auto"
d� �X,Y+2) "Manual"
n� �X,Y+3) "Continue"
xX=WIND(1,0)/32
�Y=32-WIND(1,1)/32
�� �X,Y-2) "OPTIONS"
�� �X,Y)   "Projection"
�� �X,Y+1) "Loose Edges"
�� �X,Y+2) "Colour Lookup"
�X=WIND(2,0)/32
�Y=32-WIND(2,1)/32
�� �X,Y-2) "SETTINGS"
�� �X,Y)   "Width"
�� �X,Y+1) "Height"
�� �X,Y+2) "Viscosity"
�� �X,Y+3) "Timestep"
�� �X,Y+4) "BaseColour"
�marker
�printsettings
ȗ � LX%,LY%
"	M=!mo
,Ȗ:ș "OS_Byte",&71,M
6M=M � 3:!mo=M
@	WIN=0
J�
T
^� �menu(� MENU,� WIN)
h� R
r
� 4,63
|ȗ ȓ X1,Y1,W1-4,H1
�LMENU=-1
�LWIN=-1
�MENU=-1
�
WIN=-1
��
�
R=�(1)
�ȗ X%,Y%,Z%
�LMENU=MENU
�MENU=�checkmenu(X%,Y%)
�LWIN=WIN
�� MENU<>-1 �
�WIN=�checkwin(X%,Y%,MENU)
��
� LMENU<>MENU �
$� LMENU<>-1 � �win(LWIN,LMENU):�
� MENU<>-1 �
&�win(WIN,MENU)
0�
:�
D� MENU<>-1 �
N� LWIN<>WIN �
X�win(LWIN,MENU)
b�win(WIN,MENU)
l�
v�
��
�� Z%=4 � MENU<>-1
��win(WIN,MENU)
�ȗ ȓ 0,0,1280,1024
��
�
�� �checkwin(X%,Y%,MENU)
�� W,WIN
�WMAX=WIND(MENU,3)
�Y%-=WIND(MENU,1)
�W=0:FOUND=�
��
�W+=1
 � Y%<-(W-1)*32 � Y%>=-W*32 �
	WIN=W
FOUND=�
 �
*� W=WMAX � FOUND
4=WIN
>
H� �checkmenu(X%,Y%)
R� I,X,Y
\M=-1
f
� I=0 � 2
pX=X%-WIND(I,0)
zY=Y%-WIND(I,1)+WIND(I,3)
�3� X>=0 � Y>=0 � X<WIND(I,2) � Y<WIND(I,3) � M=I
��
�=M
�
�� �win(W,MENU)
�� MENU<>-1 �
�8ȓ Ȑ WIND(MENU,0),WIND(MENU,1)-W*32,WIND(MENU,2),32
��
��
�
�� �init
�	TIM=0
�*POINTER
	ȗ �
	ș "OS_Byte",&70,2
	
� init
	$CHOICE=0
	.WVADDR=!wavtab
	8SNADDR=!snutab
	BA=2^16*.95
	L4� I%=0 � 1023:SNADDR!(4*I%)=-�(�*I%/512)*A+0.5:�
	V!WVADDR=-1
	`� WIND(2,3)
	j,WIND()=18,21,15,4, 18,14,15,3, 18,8,15,5
	tWIND()=WIND()*32
	~LX%=WIND(0,0)+12*32
	�LY%=WIND(0,1)-16
	�RECOMPILE=�
	�� SETTING(4)
	�*SETTING()=DM1,DM2,11-DAMP,12-PROP,BASE
	�� SETRANGE(1,4)
	�+SETRANGE()=10,10,1,1,0, 80,64,10,10,255
	�� sprite 28000
	�!sprite=28000
	�sprite!4=0
	�sprite!8=16
	�sprite!12=16
	�*DIR <2DWaves$dir>
,ș "OS_SpriteOp",256+10,sprite,"2Dwaves"

,ș "OS_SpriteOp",256+24,sprite,"2DWaves"

*DIR ^
�
(
2
� �reinit
<!WVADDR=-1
F	!ex=0
P	!ey=0
Z�
d
n
� �define
xȗ � 640,512
��
�S%=0
�	M=!mo
�AM=200:FR=60:PH=0
�	LZ%=4
��
�
� outcopy
��
�ș "OS_Byte",&70,M
�� incopy
�LZ%=Z%:ȗ X%,Y%,Z%
�*� Z%=1 � FR=(12-X%*12/1280)*10:AM=Y%/2
�A$=�(0):*FX 15,1
� A$<>"" �
Ȏ A$ �
)� "1":� AM<512 AM+=10:� AM>512 AM=512
"(� "2":� FR<120 FR+=2:� FR>120 FR=120
,� "3":PH+=2
6'� "Q","q":� AM>0 AM-=10:� AM<0 AM=0
@'� "W","w":� FR>0  FR-=2:� FR<0 FR=0
J� "E","e":PH-=2
T�
^�
hR%=400/(1+FR/30)��(3)
rL%=AM/5+10
|T%=PH*5.12
�X=X%*DM1 � 1280
�Y=Y%*DM2 � 1024
�X%=(X+0.5)*1280/DM1
�Y%=(Y+0.5)*1024/DM2
�� 3,L% Ȝ T%
�ȏ Ȑ X%,Y%,R%
�� 63 Ȝ 255
�ȏ X%,Y%,R%
�� 26
�� 5:� 0,1023:� 1,63 Ȝ 255
�� "Amplitude : ";AM
�� "Frequency : ";FR/10
�� "Phase (PI): ";PH/20
� "X : ";X
� "Y : ";Y
	� 4:�
&E%=AM:F%=FR*25:G%=PH*25.6
0� graph
:!Ȗ:ș "OS_Byte",&71,M:M=M � 3
D� (LZ%<>4 � Z%=4) � Z%=2
N� Z%=4 �
Xș "OS_Byte",&70,M
b� incopy
l� 3,L% Ȝ T%
vȏ Ȑ X%,Y%,R%
�Y=DM2-Y
�.PO=(X+Y*80+((64-DM2)� 2)*80+(80-DM1)� 2)*8
��set(AM*2,FR,PH*25.6,PO,S%)
�
� outcopy
�	S%+=1
��
�
� Z%=2
�ȕ Z%=2:ȗ X%,Y%,Z%:�
��set(-1,-1,-1,-1,S%)
�	!mo=M
�
� 63:� 63
��
�

� �auto

!time=0

� S%=0 � 9

 
AM=�(800)

*FR=�(20)

4PH=(�(2)-1)*512+1024

>X=�(DM1-2)+1

HY=�(DM2-2)+1

R.PO=(X+Y*80+((64-DM2)� 2)*80+(80-DM1)� 2)*8

\�set(AM,FR,PH,PO,S%)

f�

p�set(-1,-1,-1,-1,S%)

z�

�

�� �set(AM,FR,PH,PO,S%)

� WVADDR!(S%*16)=PO:� position

�#WVADDR!(S%*16+4)=AM:� amplitude

�#WVADDR!(S%*16+8)=FR:� frequency

� WVADDR!(S%*16+12)=PH:� phase

��

�

�� �coltable(CTABLE)

�	SWP=2

�C=0:M=15

�
� K=0 � M

�$�put(C+(K � %1100)*5.25,K � %11)
�

� T=1 � 3
C=T:M=4*(4-T)-1
$�side(  4)
.�side(- 1)
8�side( 16)
B�side(- 4)
L�side(  1)
V�side(-16)
`�
j�
t
~� �side(RGB)
�
� I=1 � T
�
C+=RGB
�
� SWP=1 �
�
� K=0 � M
�$�put(C+(K � %1100)*5.25,K � %11)
��
��
�� K=M � 0 � -1
�$�put(C+(K � %1100)*5.25,K � %11)
��
��
�SWP=SWP � 3
�

�

� �put(C,T)
(B1=(C>>5) � 1
2B2=(C>>4) � 1
<G1=(C>>3) � 1
FG2=(C>>2) � 1
PR1=(C>>1) � 1
ZR2=(C>>0) � 1
d1COL=T+4*(R2+2*(B2+2*(R1+2*(G2+2*(G1+2*B1)))))
n?CTABLE=COL
x
CTABLE+=1
��
�
�� �initass
�� Q% 100000
�
DAMP=8
�
PROP=2
�
DM1=80
�
DM2=64
�BASE=180
�� CTABLE 256
��coltable(CTABLE)
�� PASS=0 � 2 � 2
�	P%=Q%

[OPT PASS
.scr1 EQUD 148:EQUD -1
.scr2 EQUD 0
".tab1 EQUD xtab
,.tab2 EQUD !tab1+64*80*8
6.ta1 EQUD 0
@.ta2 EQUD 0
J .snutab EQUD !tab1+64*80*8*2
T.wavtab EQUD !snutab+1024*4
^.ex EQUD 1
h.ey EQUD 1
r.mo EQUD 2
|.time EQUD 0
�.choice EQUD %110
�&.name EQUS "Dump":EQUB �"0":EQUB 0
�
.ALIGN
�]
�
QQ%=P%
��ass
��
��
�
�� �reass
�� PASS=0 � 2 � 2
�
P%=QQ%
��ass
�
�

&
� �ass
0XW=((80-DM1) � 2)*4+4
:YW=((64-DM2) � 2)*4+4
DI    =0  :SNUS =0
N)J    =1  :X2   =1  :WAVS =1  : DX  =1
XT    =2  :M    =2
b)O    =3  :X    =3  :POSI =3  : OC  =3
l)W    =4  :Z    =4  :AMPL =4  : DY  =4
vX1   =5  :FREQ =5  :NC   =5
�)V    =6  :Y    =6  :PHA  =6  : C1  =6
�)Y1   =7  :TIJD =7  :AD   =7  : C2  =7
�SCR  =8  :SOUR =8
�)COL  =9  :C    =9  :DEST =9  : C3  =9
�*TAB1 =10 :L    =10 :CO   =10 : C4  =10
�*TAB2 =11 :CT   =11 :LL   =11 : OK  =11
� Y2   =12 :MASK =12 :NK   =12
�H    =13
�N    =14
�
[OPT PASS
�
.graph
�  ADR R0,scr1
�  ADR R1,scr2
  SWI "OS_ReadVduVariables"
  LDR SCR,scr2
  MOV T,#320*128
   ADD SCR,SCR,T
*  MOV MASK,#1<<10
4  SUB MASK,MASK,#1
>  LDR SNUS,snutab
H  MOV J,#1280
R  SUB J,J,#4
\  MOV COL,#255
f  MOV LL,#0
p
  .loopgr
z    MUL T,J,FREQ
�    MOV T,T,ASR #8
�    ADD T,T,PHA
�    � T,T,MASK
�    LDR T,[SNUS,T,LSL #2]
�    MUL L,T,AMPL
�    MOVS T,L,ASR #18
�    ADC T,T,#0
�    ADD T,T,T,LSL #2
�    MOV T,T,LSL #6
�    ADD T,T,J,LSR #2
�    ADD T,SCR,T
�    MOV AD,#320
�    CMP T,LL
    RSBHI AD,AD,#0
    MOV L,T
    CMP LL,#0
$    CMPNE T,LL
.    ADDEQ LL,T,AD
8    .dal
B      STRB COL,[T],AD
L      CMP T,LL
V    BNE dal
`    SUB LL,L,#1
j    SUBS  J,J,#4
t  BNE loopgr
~MOV PC,R14
�
�
.start
�  STMFD 13!,{14}
�  MOV R0,#&10
�  ADR R1,keypress
�  MOV R2,#0
�  SWI "OS_Claim"
�  MOV R0,#&0E
�  MOV R1,#11
�  SWI "OS_Byte"
�  MOV T,#(64-DM2) � 2
�  ADD T,T,T,LSL #2
  MOV T,T,LSL #7

  ADD T,T,#((80-DM1) � 2)*8
  LDR TAB1,tab1
  ADD TAB1,TAB1,T
(  STR TAB1,ta1
2  LDR TAB2,tab2
<  ADD TAB2,TAB2,T
F  STR TAB2,ta2
P  .loop
Z    MOV R0,#&70
d    LDR R1,mo
n    SWI "OS_Byte"
x    LDR T,choice
�    TST T,#8+16
�    BEQ ovr7
�      SUB T,T,#8
�      STR T,choice
�      MOV R0,#16
�      SWI "OS_WriteC"
�
    .ovr7
�    ADR R0,scr1
�    ADR R1,scr2
�!    SWI "OS_ReadVduVariables"
�    LDR TAB1,ta1
�    LDR TAB2,ta2
�    STR TAB1,ta2
    STR TAB2,ta1
    LDR T,choice
    TST T,#32
"    BEQ endcase
,
    .case
6      BIC T,T,#32
@      STR T,choice
J      LDR TAB1,ta1
T      BL fix_edges
^      LDR TAB1,ta2
h      BL fix_edges
r    .endcase
|    BL mouse_control
�    BL sources
�    LDR T,choice
�    TST T,#2
�    BLNE loose_edges
�    LDR SCR,scr2
�    LDR T,choice
�    TST T,#1
�    BNE else
�      BL simulation_display
�      LDR SCR,scr2
�      LDR T,choice
�      TST T,#4
�!      BLNE coulor_translation
    BAL endif

    .else
      MOV R0,#16
&      SWI "OS_WriteC"
0      BL simulation
:      LDR SCR,scr2
D      LDR TAB1,ta2
N      LDR T,choice
X      TST T,#4
b      BLEQ wiredisplay
l      BLNE wiredisplayct
v    .endif
�    LDR T,choice
�    TST T,#64
�      BICNE T,T,#64
�      STRNE T,choice
�      BLNE savescreen
�
    .wait
�      SWI "OS_Mouse"
�      CMP T,#1
�    BEQ wait
�    CMP T,#2
�    BEQ end
�    MOV R0,#&13
�    SWI "OS_Byte"
    LDR T,mo
    MOV R0,#&71
    MOV R1,T
     � T,T,#3
*    STR T,mo
4    SWI "OS_Byte"
>  BAL loop
H.end
R  MOV R0,#&0D
\  MOV R1,#11
f  SWI "OS_Byte"
p  MOV R0,#&10
z  ADR R1,keypress
�  MOV R2,#0
�  SWI "OS_Release"
�LDMFD 13!,{15}
�
�
�
.keypress
�  CMP R0,#11
�  MOVNE PC,R14
�  CMP R1,#1
�  MOVNE PC,R14
�  STMFD 13!,{0-3}
�  LDR R1,choice
�  CMP R2,#&30
  �EQ R1,R1,#1
  �REQ R1,R1,#16
  CMP R2,#&29
$  �EQ R1,R1,#2
.  �REQ R1,R1,#32
8  CMP R2,#&50
B  �EQ R1,R1,#4
L  CMP R2,#&3D
V  �REQ R1,R1,#64
`  STR R1,choice
j  LDMFD 13!,{0-3}
tMOV PC,R14
~
�.mouse_control
�  SWI "OS_Mouse"
�  CMP T,#4
�  BNE skip
�  LDR X,ex
�  LDR Y,ey
�  CMP X,#0
�  BEQ dont
�  MOV T,#80
�  MUL T,Y,T
�  ADD T,T,X
�  MOV T,T,LSL #3
  ADD T,T,TAB1

  LDMIA T,{O,V}
  SUB O,O,V
  MOV V,#240<<16
(  STMIA T,{O,V}
2  .dont
<  MOV X,I,LSR #4
F  MOV Y,J,LSR #4
P  RSB Y,Y,#(DM2-1)
Z  CMP X,#(DM1-1)
d
  BHS out
n  CMP X,#0
x
  BLS out
�  CMP Y,#(DM2-1)
�
  BHS out
�  CMP Y,#0
�
  BLS out
�  STR X,ex
�  STR Y,ey
�  MOV PC,R14
�
  .out
�  MOV X,#0
�  STR X,ex
�  MOV PC,R14
�  .skip
�  LDR X,ex
  LDR Y,ey
  CMP X,#0
  �Q PC,R14
"  MOV T,#80
,  MUL T,Y,T
6  ADD T,T,X
@  MOV T,T,LSL #3
J  SUB J,J,#(DM2 � 2)*16
T  MOV J,J,LSL #18
^  ADD J,J,#BASE<<20
h  STR J,[TAB1,T]
rMOV PC,R14
|
�.savescreen
�STMFD 13!,{0-3}
�  MOV R0,#2
�  ADR R2,name
�  MOV R3,#0
�  SWI "OS_SpriteOp"
�  LDRB R0,[R2,#4]
�  ADD R0,R0,#1
�  STRB R0,[R2,#4]
�LDMFD 13!,{0-3}
�MOV PC,R14
�
�.sources
  MOV C,#(64-DM2) � 2
  ADD C,C,C,LSL #2
  MOV C,C,LSL #7
&  ADD C,C,#((80-DM1) � 2)*8
0  SUB TAB1,TAB1,C
:  MOV MASK,#1<<10
D  SUB MASK,MASK,#1
N  LDR SNUS,snutab
X  LDR WAVS,wavtab
b  LDR TIJD,time
l  ADD TIJD,TIJD,#1
v  STR TIJD,time
�  .loopw
�*    LDMIA (WAVS)!,{POSI,AMPL,FREQ,PHA}
�    MUL T,TIJD,FREQ
�    ADD T,T,PHA
�    � T,T,MASK
�    LDR T,[SNUS,T,LSL #2]
�    MUL AMPL,T,AMPL
�    CMN POSI,#1
�    ADD AMPL,AMPL,#BASE<<20
�    STRNE AMPL,[TAB1,POSI]
�  BNE loopw
�  ADD TAB1,TAB1,C
�MOV PC,R14

.fix_edges
  MOV I,#0
   MOV J,#DM2
*  MOV T,#8*80
4  MUL J,T,J
>  MOV T,#BASE<<20
H  SUB T,T,#1<<19
R  .horz_edge1
\    ADD W,TAB1,I
f    STR T,[W]
p    ADD W,W,J
z    STR T,[W,#-80*8]
�    ADD I,I,#8
�    CMP I,#DM1*8
�  BNE horz_edge1
�  MOV I,#0
�  .vert_edge1
�    ADD W,TAB1,I
�    STR T,[W]
�    ADD W,W,#DM1*8
�    STR T,[W,#-8]
�    ADD I,I,#80*8
�    CMP I,J
�  BNE vert_edge1
�MOV PC,R14

.loose_edges
  MOV I,#0
$  MOV J,#DM2
.  MOV T,#8*80
8  MUL J,T,J
B  .horz_edge2
L    ADD W,TAB1,I
V    LDR T,[W,#80*8]
`    STR T,[W]
j    ADD W,W,J
t    LDR T,[W,#-2*80*8]
~    STR T,[W,#-80*8]
�    ADD I,I,#8
�    CMP I,#DM1*8
�  BNE horz_edge2
�  MOV I,#0
�  .vert_edge2
�    ADD W,TAB1,I
�    LDR T,[W,#+8]
�    STR T,[W]
�    ADD W,W,#DM1*8
�    LDR T,[W,#-16]
�    STR T,[W,#-8]
�    ADD I,I,#80*8
    CMP I,J

  BNE vert_edge2
MOV PC,R14

(.tmp1 EQUD 0:EQUD 0:EQUD 0
2.simulation_display
<  MOV X,#XW
F  MOV Y,#YW
P  ADD T,Y,Y,LSL #2
Z  ADD T,X,T,LSL #6
d  ADD SCR,SCR,T
n  MOV J,#DM2-2
x  ADD TAB1,TAB1,#80*8
�  ADD TAB2,TAB2,#80*8
�  .loopy
�    MOV I,#DM1-2
�    ADD TAB1,TAB1,#1<<3
�    ADD TAB2,TAB2,#1<<3
�    ADR W,tmp1
�    STMIA W,{J,13,14}
�    MOV N,#255
�    LDR X1,[TAB1,#-8]
�    LDR Y1,[TAB1]
�    LDR Y2,[TAB1,#80*8]
�    ADD TAB1,TAB1,#4
�    .loopx
      MOV O,X1
      MOV X1,Y1
      MOV X2,Y2
"      LDR W,[TAB1,#-80*8-4]
,!      LDR Y2,[TAB1,#80*8+8-4]
6      LDMIA (TAB1)!,{V,Y1}
@      ADD O,O,Y1
J      ADD O,O,W
T      ADD O,O,X2
^      SUB O,O,X1,LSL #2
h      ADD V,V,O,ASR #PROP
r      SUB V,V,V,ASR #DAMP
|      ADD O,X1,V
�      STMIA (TAB2)!,{O,V}
�      SUB DX,X2,X1
�      SUB DY,Y2,Y1
�      � C,N,X1,LSR #20
�      ADD H,X1,Y1
�      ADD M,H,X1,LSL #1
�      � M,N,M,LSR #22
�      ADD C,C,M,LSL #8
�      � M,N,H,LSR #21
�      ADD C,C,M,LSL #16
�      ADD M,H,Y1,LSL #1
�      � M,N,M,LSR #22
�      ADD C,C,M,LSL #24
       STR COL,[SCR],#4
       ADD X,X1,DX,ASR #2
       ADD Y,Y1,DY,ASR #2
 &      � C,N,X,LSR #20
 0      ADD H,X,Y
 :      ADD M,H,X,LSL #1
 D      � M,N,M,LSR #22
 N      ADD C,C,M,LSL #8
 X      � M,N,H,LSR #21
 b      ADD C,C,M,LSL #16
 l      ADD M,H,Y,LSL #1
 v      � M,N,M,LSR #22
 �      ADD C,C,M,LSL #24
 �      STR COL,[SCR,#320-4]
 �      ADD X,X,DX,ASR #2
 �      ADD Y,Y,DY,ASR #2
 �      � C,N,X,LSR #20
 �      ADD H,X,Y
 �      ADD M,H,X,LSL #1
 �      � M,N,M,LSR #22
 �      ADD C,C,M,LSL #8
 �      � M,N,H,LSR #21
 �      ADD C,C,M,LSL #16
 �      ADD M,H,Y,LSL #1
 �      � M,N,M,LSR #22
!      ADD C,C,M,LSL #24
!      STR COL,[SCR,#640-4]
!      ADD X,X,DX,ASR #2
!       ADD Y,Y,DY,ASR #2
!*      � C,N,X,LSR #20
!4      ADD H,X,Y
!>      ADD M,H,X,LSL #1
!H      � M,N,M,LSR #22
!R      ADD C,C,M,LSL #8
!\      � M,N,H,LSR #21
!f      ADD C,C,M,LSL #16
!p      ADD M,H,Y,LSL #1
!z      � M,N,M,LSR #22
!�      ADD C,C,M,LSL #24
!�      STR COL,[SCR,#960-4]
!�      SUBS I,I,#1
!�    BNE loopx
!�"    ADD SCR,SCR,#320-(DM1-2)*4
!�    ADD SCR,SCR,#3*320
!�    SUB TAB1,TAB1,#4
!�$    ADD TAB1,TAB1,#(80-DM1+1)<<3
!�$    ADD TAB2,TAB2,#(80-DM1+1)<<3
!�    ADR W,tmp1
!�    LDMIA W,{J,13,14}
!�    SUBS J,J,#1
!�  BNE loopy
"MOV PC,R14
"
".tmp2 EQUD 0:EQUD 0:EQUD 0
"$.simulation
".  MOV J,#DM2-2
"8  ADD TAB1,TAB1,#80*8
"B  ADD TAB2,TAB2,#80*8
"L  .koopy
"V    MOV I,#DM1-2
"`    ADD TAB1,TAB1,#1<<3
"j    ADD TAB2,TAB2,#1<<3
"t    ADR W,tmp2
"~    STMIA W,{J,13,14}
"�    LDR X1,[TAB1,#-8]
"�    LDR Y1,[TAB1]
"�    ADD TAB1,TAB1,#4
"�    .koopx
"�      MOV O,X1
"�      MOV X1,Y1
"�      LDR W,[TAB1,#-80*8-4]
"�      LDR X2,[TAB1,#80*8-4]
"�      LDMIA (TAB1)!,{V,Y1}
"�      ADD O,O,Y1
"�      ADD O,O,W
"�      ADD O,O,X2
#      SUB O,O,X1,LSL #2
#
      SUB V,V,V,ASR #DAMP
#      ADD V,V,O,ASR #PROP
#      ADD O,X1,V
#(      STMIA (TAB2)!,{O,V}
#2      SUBS I,I,#1
#<    BNE koopx
#F    SUB TAB1,TAB1,#4
#P$    ADD TAB1,TAB1,#(80-DM1+1)<<3
#Z$    ADD TAB2,TAB2,#(80-DM1+1)<<3
#d    ADR W,tmp2
#n    LDMIA W,{J,13,14}
#x    SUBS J,J,#1
#�  BNE koopy
#�MOV PC,R14
#�
#�.reciprocal
#�
 �fill
#�.recipraddr EQUD reciprocal
#�.tmp5 EQUD 0
#�.wiredisplay
#�  MOV COL,#255
#�  MOV J,#DM2-2
#�  LDR AD,recipraddr
#�  LDR CT,ctabled
#�  ADD TAB1,TAB1,#80*8
$  MOV T,#1
$  MOV Z,T,LSL #2
$  LDR Z,[AD,Z,LSL #2]
$"  MOV X,#4
$,  SUB X,X,#DM1*2*1.5
$6  MUL X,Z,X
$@  STR X,tmp5
$J  .noopy
$T    MOV I,#DM1-2
$^    ADD TAB1,TAB1,#1<<3
$h    MOV Z,J,LSL #2
$r    LDR Z,[AD,Z,LSL #2]
$|    MOV X,#4
$�    SUB X,X,#DM1*2*1.5
$�    MUL X,Z,X
$�    LDR T,tmp5
$�    SUB X,X,T
$�    .noopx
$�      LDMIA (TAB1)!,{X1,V}
$�      SUB Y,X1,#BASE<<20
$�      MOV Y,Y,ASR #21
$�      ADD Y,Y,J,LSL #2
$�      MUL Y,Z,Y
$�      MOV Y,Y,ASR #9
$�      ADD Y,Y,#60
$�      RSB Y,Y,#255
%      ADD T,Y,Y,LSL #2
%      MOV T,T,LSL #6
%      ADD T,T,X,ASR #9
%&      CMP T,#320*256
%0      STRLOB COL,[T,SCR]!
%:      ADD X,X,Z,LSL #2
%D      SUBS I,I,#1
%N    BNE noopx
%X$    ADD TAB1,TAB1,#(80-DM1+1)<<3
%b    SUBS J,J,#1
%l  BNE noopy
%vMOV PC,R14
%�
%�.wiredisplayct
%�  MOV J,#DM2-2
%�  LDR AD,recipraddr
%�  LDR CT,ctabled
%�  ADD TAB1,TAB1,#80*8
%�  MOV T,#1
%�  MOV Z,T,LSL #2
%�  LDR Z,[AD,Z,LSL #2]
%�  MOV X,#4
%�  SUB X,X,#DM1*2*1.5
%�  MUL X,Z,X
%�  STR X,tmp5
&  .moopy
&    MOV I,#DM1-2
&    ADD TAB1,TAB1,#1<<3
&     MOV Z,J,LSL #2
&*    LDR Z,[AD,Z,LSL #2]
&4    MOV X,#4
&>    SUB X,X,#DM1*2*1.5
&H    MUL X,Z,X
&R    LDR T,tmp5
&\    SUB X,X,T
&f    .moopx
&p      LDMIA (TAB1)!,{X1,V}
&z      SUB Y,X1,#BASE<<20
&�      MOV Y,Y,ASR #21
&�      ADD Y,Y,J,LSL #2
&�      MUL Y,Z,Y
&�      MOV Y,Y,ASR #9
&�      ADD Y,Y,#60
&�      RSB Y,Y,#255
&�      ADD T,Y,Y,LSL #2
&�      MOV T,T,LSL #6
&�      ADD T,T,X,ASR #9
&�      CMP T,#320*256
&�      � X1,X1,#255<<20
&�$      LDRLOB COL,[CT,X1,LSR #20]
&�      STRLOB COL,[T,SCR]!
'      ADD X,X,Z,LSL #2
'      SUBS I,I,#1
'    BNE moopx
'$$    ADD TAB1,TAB1,#(80-DM1+1)<<3
'.    SUBS J,J,#1
'8  BNE moopy
'BMOV PC,R14
'L
'V.ctabled EQUD CTABLE
'`.tmp4 EQUD 0
'j.coulor_translation
't  STR H,tmp4
'~  MOV X,#XW
'�  MOV Y,#YW
'�  ADD T,Y,Y,LSL #2
'�  ADD T,X,T,LSL #6
'�  ADD SCR,SCR,T
'�  LDR W,ctabled
'�  MOV H,#255
'�  MVN C4,#1
'�  MOV J,#4*(DM2-2)
'�  .glp2
'�    MOV I,#DM1-2
'�
    .glp1
'�      LDMIA SCR,{OC,OK}
(      � C1,H,OC
(
      � C2,H,OC,LSR #8
(      � C3,H,OC,LSR #16
(      CMP C4,C1
((      � C4,H,OC,LSR #24
(2      LDRNEB T,[W,C1]
(<      MOV NC,T
(F      CMP C1,C2
(P      LDRNEB T,[W,C2]
(Z      ADD NC,NC,T,LSL #8
(d      CMP C2,C3
(n      LDRNEB T,[W,C3]
(x      ADD NC,NC,T,LSL #16
(�      CMP C3,C4
(�      LDRNEB T,[W,C4]
(�      ADD NC,NC,T,LSL #24
(�      � C1,H,OK
(�      � C2,H,OK,LSR #8
(�      � C3,H,OK,LSR #16
(�      CMP C4,C1
(�      � C4,H,OK,LSR #24
(�      LDRNEB T,[W,C1]
(�      MOV NK,T
(�      CMP C1,C2
(�      LDRNEB T,[W,C2]
(�      ADD NK,NK,T,LSL #8
)      CMP C2,C3
)      LDRNEB T,[W,C3]
)      ADD NK,NK,T,LSL #16
)"      CMP C3,C4
),      LDRNEB T,[W,C4]
)6      ADD NK,NK,T,LSL #24
)@      STMIA (SCR)!,{NC,NK}
)J      SUBS I,I,#2
)T    BHI glp1
)^)    ADD SCR,SCR,#320-((DM1+1)��1)*4+8
)h    SUBS J,J,#1
)r  BHI glp2
)|  LDR H,tmp4
)�MOV PC,R14
)�
)�	.init
)�  ADR W,xtab
)�  MOV I,#64*80*2
)�  MOV T,#BASE<<20
)�  SUB T,T,#1<<19
)�  MOV V,#0
)�
    .lop2
)�    STMIA (W)!,{T,V}
)�    SUBS I,I,#1
)�  BNE lop2
)�MOV PC,R14
*
*.newbase
*  ADR W,xtab
*&  MOV I,#64*80*2
*0
    .lop2
*:    LDMIA W,{T,V}
*D    SUB T,T,#BASE<<20
*N    ADD T,T,J,LSL #20
*X    STMIA (W)!,{T,V}
*b    SUBS I,I,#1
*l  BNE lop2
*vMOV PC,R14
*�
*�.scrn1 EQUD 148:EQUD -1
*�.scrn2 EQUD 0
*�.incopy
*�  ADR R0,scrn1
*�  ADR R1,scrn2
*�  SWI "OS_ReadVduVariables"
*�  LDR DEST,scrn2
*�  ADR SOUR,xtab
*�  MOV CO,#320*256/4/8/4
*�  .loopi
*�    LDMIA (SOUR)!,{0-7}
*�    STMIA (DEST)!,{0-7}
+    LDMIA (SOUR)!,{0-7}
+    STMIA (DEST)!,{0-7}
+    LDMIA (SOUR)!,{0-7}
+     STMIA (DEST)!,{0-7}
+*    LDMIA (SOUR)!,{0-7}
+4    STMIA (DEST)!,{0-7}
+>    SUBS CO,CO,#1
+H  BNE loopi
+RMOV PC,R14
+\
+f.outcopy
+p  ADR R0,scrn1
+z  ADR R1,scrn2
+�  SWI "OS_ReadVduVariables"
+�  ADR DEST,xtab
+�  LDR SOUR,scrn2
+�  MOV CO,#320*256/4/8
+�  .loopo
+�    LDMIA (SOUR)!,{0-7}
+�    STMIA (DEST)!,{0-7}
+�    SUBS CO,CO,#1
+�  BNE loopo
+�MOV PC,R14
+�
+�	.xtab
+�]
,�
,
,� �fill
,$� I,F,A
,.A=4*(DM1-4)
,8
F=320*2^9
,B� I=1 � 256
,L
[OPT PASS
,VEQUD F/(I+A)
,`]
,j�
,t=""
�
00000000  0d 00 0a 10 f4 20 3e 21  52 75 6e 69 6d 61 67 65  |..... >!Runimage|
00000010  0d 00 14 13 f4 20 57 61  76 65 73 69 6d 75 6c 61  |..... Wavesimula|
00000020  74 6f 72 0d 00 1e 1a f4  20 62 79 20 4a 61 6e 20  |tor..... by Jan |
00000030  56 6c 69 65 74 69 6e 63  6b 20 28 63 29 0d 00 28  |Vlietinck (c)..(|
00000040  1b ee 20 85 3a f6 3a f1  20 22 20 61 74 20 6c 69  |.. .:.:. " at li|
00000050  6e 65 20 22 3b 9e 3a e0  0d 00 32 09 eb 31 33 3a  |ne ";.:...2..13:|
00000060  87 0d 00 3c 0c f2 69 6e  69 74 61 73 73 0d 00 46  |...<..initass..F|
00000070  09 f2 69 6e 69 74 0d 00  50 09 f2 6d 61 69 6e 0d  |..init..P..main.|
00000080  00 5a 05 e0 0d 00 64 04  0d 00 6e 0b dd 20 f2 6d  |.Z....d...n.. .m|
00000090  61 69 6e 0d 00 78 05 f5  0d 00 82 0d f2 69 6e 69  |ain..x.......ini|
000000a0  74 6d 65 6e 75 0d 00 8c  05 f5 0d 00 96 13 f2 6d  |tmenu..........m|
000000b0  65 6e 75 28 4d 45 4e 55  2c 57 49 4e 29 0d 00 a0  |enu(MENU,WIN)...|
000000c0  11 4c 58 25 3d 58 25 3a  4c 59 25 3d 59 25 0d 00  |.LX%=X%:LY%=Y%..|
000000d0  aa 0d c8 8e 20 4d 45 4e  55 20 ca 0d 00 b4 07 c9  |.... MENU ......|
000000e0  20 30 0d 00 be 0c c8 8e  20 57 49 4e 20 ca 0d 00  | 0...... WIN ...|
000000f0  c8 1f c9 20 31 3a f2 72  65 69 6e 69 74 3a f2 61  |... 1:.reinit:.a|
00000100  75 74 6f 3a c8 97 20 b8  20 20 30 2c 30 0d 00 d2  |uto:.. .  0,0...|
00000110  20 c9 20 32 3a f2 72 65  69 6e 69 74 3a f2 64 65  | . 2:.reinit:.de|
00000120  66 69 6e 65 3a c8 97 20  b8 20 30 2c 30 0d 00 dc  |fine:.. . 0,0...|
00000130  30 c9 20 33 3a f2 72 65  69 6e 69 74 3a 21 65 78  |0. 3:.reinit:!ex|
00000140  3d 44 4d 31 2f 32 3a 21  65 79 3d 44 4d 32 2f 32  |=DM1/2:!ey=DM2/2|
00000150  3a c8 97 20 b8 20 36 34  30 2c 35 31 32 0d 00 e6  |:.. . 640,512...|
00000160  17 58 3d 28 34 30 2d 28  44 4d 31 20 83 20 32 29  |.X=(40-(DM1 . 2)|
00000170  29 2a 31 36 0d 00 f0 17  59 3d 28 33 32 2d 28 44  |)*16....Y=(32-(D|
00000180  4d 32 20 83 20 32 29 29  2a 31 36 0d 00 fa 0c c8  |M2 . 2))*16.....|
00000190  97 20 b8 20 58 2c 59 0d  01 04 09 f2 77 61 69 74  |. . X,Y.....wait|
000001a0  0d 01 0e 0d c9 20 34 3a  f2 77 61 69 74 0d 01 18  |..... 4:.wait...|
000001b0  05 cb 0d 01 22 07 c9 20  31 0d 01 2c 0c c8 8e 20  |....".. 1..,... |
000001c0  57 49 4e 20 ca 0d 01 36  22 c9 20 31 3a 43 48 4f  |WIN ...6". 1:CHO|
000001d0  49 43 45 3d 43 48 4f 49  43 45 20 82 20 31 3a f2  |ICE=CHOICE . 1:.|
000001e0  6d 61 72 6b 28 31 29 0d  01 40 22 c9 20 32 3a 43  |mark(1)..@". 2:C|
000001f0  48 4f 49 43 45 3d 43 48  4f 49 43 45 20 82 20 32  |HOICE=CHOICE . 2|
00000200  3a f2 6d 61 72 6b 28 32  29 0d 01 4a 22 c9 20 33  |:.mark(2)..J". 3|
00000210  3a 43 48 4f 49 43 45 3d  43 48 4f 49 43 45 20 82  |:CHOICE=CHOICE .|
00000220  20 34 3a f2 6d 61 72 6b  28 33 29 0d 01 54 05 cb  | 4:.mark(3)..T..|
00000230  0d 01 5e 07 c9 20 32 0d  01 68 0c c8 8e 20 57 49  |..^.. 2..h... WI|
00000240  4e 20 ca 0d 01 72 15 c9  20 31 3a 44 4d 31 3d a4  |N ...r.. 1:DM1=.|
00000250  69 6e 70 75 74 28 31 29  0d 01 7c 15 c9 20 32 3a  |input(1)..|.. 2:|
00000260  44 4d 32 3d a4 69 6e 70  75 74 28 32 29 0d 01 86  |DM2=.input(2)...|
00000270  19 c9 20 33 3a 44 41 4d  50 3d 31 31 2d a4 69 6e  |.. 3:DAMP=11-.in|
00000280  70 75 74 28 33 29 0d 01  90 19 c9 20 34 3a 50 52  |put(3)..... 4:PR|
00000290  4f 50 3d 31 32 2d a4 69  6e 70 75 74 28 34 29 0d  |OP=12-.input(4).|
000002a0  01 9a 26 c9 20 35 3a 42  25 3d a4 69 6e 70 75 74  |..&. 5:B%=.input|
000002b0  28 35 29 3a d6 20 6e 65  77 62 61 73 65 3a 42 41  |(5):. newbase:BA|
000002c0  53 45 3d 42 25 0d 01 a4  05 cb 0d 01 ae 05 cb 0d  |SE=B%...........|
000002d0  01 b8 0c fd 20 4d 45 4e  55 3d 30 0d 01 c2 24 e7  |.... MENU=0...$.|
000002e0  20 52 45 43 4f 4d 50 49  4c 45 20 8c 20 f2 72 65  | RECOMPILE . .re|
000002f0  61 73 73 3a 52 45 43 4f  4d 50 49 4c 45 3d a3 0d  |ass:RECOMPILE=..|
00000300  01 cc 15 e7 20 57 49 4e  3c 3e 34 20 8c 20 d6 20  |.... WIN<>4 . . |
00000310  69 6e 69 74 0d 01 d6 18  c8 91 20 28 58 57 2d 34  |init...... (XW-4|
00000320  29 2a 34 2c 28 59 57 2d  34 29 2a 34 0d 01 e0 29  |)*4,(YW-4)*4...)|
00000330  e7 20 28 43 48 4f 49 43  45 20 80 20 34 29 3d 30  |. (CHOICE . 4)=0|
00000340  20 8c 20 43 48 4f 49 43  45 3d 43 48 4f 49 43 45  | . CHOICE=CHOICE|
00000350  20 84 20 33 32 0d 01 ea  15 21 63 68 6f 69 63 65  | . 32....!choice|
00000360  3d 43 48 4f 49 43 45 2b  31 36 0d 01 f4 0b d6 20  |=CHOICE+16..... |
00000370  73 74 61 72 74 0d 01 fe  0a c8 91 20 30 2c 30 0d  |start...... 0,0.|
00000380  02 08 07 fd 20 30 0d 02  12 05 e1 0d 02 1c 04 0d  |.... 0..........|
00000390  02 26 0f dd 20 a4 69 6e  70 75 74 28 49 29 0d 02  |.&.. .input(I)..|
000003a0  30 0b ea 20 41 2c 58 2c  59 0d 02 3a 07 ea 20 85  |0.. A,X,Y..:.. .|
000003b0  0d 02 44 0c 2a 46 58 20  31 35 2c 30 0d 02 4e 07  |..D.*FX 15,0..N.|
000003c0  41 3d 31 0d 02 58 15 58  3d 57 49 4e 44 28 32 2c  |A=1..X.X=WIND(2,|
000003d0  30 29 2f 33 32 2b 31 31  0d 02 62 17 59 3d 33 31  |0)/32+11..b.Y=31|
000003e0  2d 57 49 4e 44 28 32 2c  31 29 2f 33 32 2b 49 0d  |-WIND(2,1)/32+I.|
000003f0  02 6c 05 ee 0d 02 76 11  f1 20 8a 58 2c 59 29 20  |.l....v.. .X,Y) |
00000400  22 20 20 20 22 0d 02 80  12 ef 20 32 38 2c 58 2c  |"   "..... 28,X,|
00000410  59 2c 58 2b 33 2c 59 0d  02 8a 1b ef 20 32 33 2c  |Y,X+3,Y..... 23,|
00000420  31 36 2c 38 2c 30 2c 30  2c 30 2c 30 2c 30 2c 30  |16,8,0,0,0,0,0,0|
00000430  2c 30 0d 02 94 17 e7 20  41 3c 3e 30 20 8c 20 ee  |,0..... A<>0 . .|
00000440  20 85 20 ea 20 41 3d 2d  31 0d 02 9e 0d e8 20 8a  | . . A=-1..... .|
00000450  58 2c 59 29 20 41 0d 02  a8 1b ef 20 32 33 2c 31  |X,Y) A..... 23,1|
00000460  36 2c 30 2c 30 2c 30 2c  30 2c 30 2c 30 2c 30 2c  |6,0,0,0,0,0,0,0,|
00000470  30 0d 02 b2 08 ef 20 32  36 0d 02 bc 0c e7 20 41  |0..... 26..... A|
00000480  3d 2d 31 20 8c 0d 02 c6  12 41 3d 53 45 54 54 49  |=-1 .....A=SETTI|
00000490  4e 47 28 49 2d 31 29 0d  02 d0 11 f1 20 8a 58 2c  |NG(I-1)..... .X,|
000004a0  59 29 20 22 20 20 20 22  0d 02 da 10 f1 20 8a 58  |Y) "   "..... .X|
000004b0  2c 59 29 20 c3 28 41 29  0d 02 e4 05 cc 0d 02 ee  |,Y) .(A)........|
000004c0  2d e7 20 41 3c 53 45 54  52 41 4e 47 45 28 30 2c  |-. A<SETRANGE(0,|
000004d0  49 2d 31 29 20 84 20 41  3e 53 45 54 52 41 4e 47  |I-1) . A>SETRANG|
000004e0  45 28 31 2c 49 2d 31 29  20 8c 0d 02 f8 3f e7 20  |E(1,I-1) ....?. |
000004f0  41 3c 53 45 54 52 41 4e  47 45 28 30 2c 49 2d 31  |A<SETRANGE(0,I-1|
00000500  29 20 8c 20 41 3d 53 45  54 52 41 4e 47 45 28 30  |) . A=SETRANGE(0|
00000510  2c 49 2d 31 29 20 8b 20  41 3d 53 45 54 52 41 4e  |,I-1) . A=SETRAN|
00000520  47 45 28 31 2c 49 2d 31  29 0d 03 02 05 cd 0d 03  |GE(1,I-1).......|
00000530  0c 11 f1 20 8a 58 2c 59  29 20 22 20 20 20 22 0d  |... .X,Y) "   ".|
00000540  03 16 10 f1 20 8a 58 2c  59 29 20 c3 28 41 29 0d  |.... .X,Y) .(A).|
00000550  03 20 12 53 45 54 54 49  4e 47 28 49 2d 31 29 3d  |. .SETTING(I-1)=|
00000560  41 0d 03 2a 0f 52 45 43  4f 4d 50 49 4c 45 3d b9  |A..*.RECOMPILE=.|
00000570  0d 03 34 05 cd 0d 03 3e  05 87 0d 03 48 07 f7 20  |..4....>....H.. |
00000580  85 0d 03 52 09 f2 77 61  69 74 0d 03 5c 06 3d 41  |...R..wait..\.=A|
00000590  0d 03 66 04 0d 03 70 0b  dd 20 f2 77 61 69 74 0d  |..f...p.. .wait.|
000005a0  03 7a 17 c8 95 20 5a 25  3a c8 97 20 58 25 2c 59  |.z... Z%:.. X%,Y|
000005b0  25 2c 5a 25 3a ce 0d 03  84 05 e1 0d 03 8e 04 0d  |%,Z%:...........|
000005c0  03 98 0e dd 20 f2 6d 61  72 6b 28 49 29 0d 03 a2  |.... .mark(I)...|
000005d0  24 ec 20 57 49 4e 44 28  31 2c 30 29 2d 33 36 2c  |$. WIND(1,0)-36,|
000005e0  57 49 4e 44 28 31 2c 31  29 2d 33 32 2a 49 2b 31  |WIND(1,1)-32*I+1|
000005f0  36 0d 03 ac 19 df 20 42  59 20 20 38 2c 2d 38 3a  |6..... BY  8,-8:|
00000600  f0 20 33 33 2c 31 36 2c  31 36 0d 03 b6 09 f2 77  |. 33,16,16.....w|
00000610  61 69 74 0d 03 c0 05 e1  0d 03 ca 04 0d 03 d4 0d  |ait.............|
00000620  dd 20 f2 6d 61 72 6b 65  72 0d 03 de 12 43 48 4f  |. .marker....CHO|
00000630  49 43 45 3d 21 63 68 6f  69 63 65 0d 03 e8 0d e3  |ICE=!choice.....|
00000640  20 49 3d 31 20 b8 20 33  0d 03 f2 22 e7 20 28 43  | I=1 . 3...". (C|
00000650  48 4f 49 43 45 20 80 20  28 31 3c 3c 28 49 2d 31  |HOICE . (1<<(I-1|
00000660  29 29 29 20 3c 3e 20 30  20 8c 0d 03 fc 24 ec 20  |))) <> 0 ....$. |
00000670  57 49 4e 44 28 31 2c 30  29 2d 33 36 2c 57 49 4e  |WIND(1,0)-36,WIN|
00000680  44 28 31 2c 31 29 2d 33  32 2a 49 2b 31 36 0d 04  |D(1,1)-32*I+16..|
00000690  06 19 df 20 42 59 20 20  38 2c 2d 38 3a f0 20 33  |... BY  8,-8:. 3|
000006a0  33 2c 31 36 2c 31 36 0d  04 10 05 cd 0d 04 1a 05  |3,16,16.........|
000006b0  ed 0d 04 24 05 e1 0d 04  2e 04 0d 04 38 14 dd 20  |...$........8.. |
000006c0  f2 70 72 69 6e 74 73 65  74 74 69 6e 67 73 0d 04  |.printsettings..|
000006d0  42 0b ea 20 49 2c 58 2c  59 0d 04 4c 0d e3 20 49  |B.. I,X,Y..L.. I|
000006e0  3d 31 20 b8 20 35 0d 04  56 15 58 3d 57 49 4e 44  |=1 . 5..V.X=WIND|
000006f0  28 32 2c 30 29 2f 33 32  2b 31 31 0d 04 60 17 59  |(2,0)/32+11..`.Y|
00000700  3d 33 31 2d 57 49 4e 44  28 32 2c 31 29 2f 33 32  |=31-WIND(2,1)/32|
00000710  2b 49 0d 04 6a 1b f1 20  8a 58 2c 59 29 20 c3 28  |+I..j.. .X,Y) .(|
00000720  53 45 54 54 49 4e 47 28  49 2d 31 29 29 0d 04 74  |SETTING(I-1))..t|
00000730  05 ed 0d 04 7e 05 e1 0d  04 88 04 0d 04 92 0f dd  |....~...........|
00000740  20 f2 69 6e 69 74 6d 65  6e 75 0d 04 9c 0e e6 20  | .initmenu..... |
00000750  36 33 20 c8 9c 20 36 34  0d 04 a6 05 db 0d 04 b0  |63 .. 64........|
00000760  32 c8 99 20 22 4f 53 5f  53 70 72 69 74 65 4f 70  |2.. "OS_SpriteOp|
00000770  22 2c 32 35 36 2b 33 34  2c 73 70 72 69 74 65 2c  |",256+34,sprite,|
00000780  22 32 44 57 61 76 65 73  22 2c 30 2c 38 34 30 0d  |"2DWaves",0,840.|
00000790  04 ba 07 ef 20 35 0d 04  c4 19 41 24 3d 22 42 79  |.... 5....A$="By|
000007a0  20 4a 61 6e 20 56 6c 69  65 74 69 6e 63 6b 22 0d  | Jan Vlietinck".|
000007b0  04 ce 0e e3 20 49 3d 31  20 b8 20 31 36 0d 04 d8  |.... I=1 . 16...|
000007c0  34 ec 20 31 36 2a 28 49  2b 35 29 2b b5 28 49 2a  |4. 16*(I+5)+.(I*|
000007d0  af 2f 38 29 2a 33 32 2c  31 30 32 34 2d 33 32 2a  |./8)*32,1024-32*|
000007e0  28 31 30 2b 49 29 3a f1  20 c1 41 24 2c 49 2c 31  |(10+I):. .A$,I,1|
000007f0  29 0d 04 e2 05 ed 0d 04  ec 09 ef 20 34 3a 87 0d  |).......... 4:..|
00000800  04 f6 0f e6 20 36 33 20  c8 9c 20 32 35 35 0d 05  |.... 63 .. 255..|
00000810  00 10 58 31 3d 57 49 4e  44 28 32 2c 30 29 0d 05  |..X1=WIND(2,0)..|
00000820  0a 1a 59 31 3d 57 49 4e  44 28 32 2c 31 29 2d 57  |..Y1=WIND(2,1)-W|
00000830  49 4e 44 28 32 2c 33 29  0d 05 14 10 57 31 3d 57  |IND(2,3)....W1=W|
00000840  49 4e 44 28 30 2c 32 29  0d 05 1e 18 48 31 3d 57  |IND(0,2)....H1=W|
00000850  49 4e 44 28 30 2c 31 29  2d 59 31 2b 32 2a 33 32  |IND(0,1)-Y1+2*32|
00000860  0d 05 28 1e c8 93 20 58  31 2d 34 38 2c 59 31 2d  |..(... X1-48,Y1-|
00000870  33 32 2c 57 31 2b 39 36  2c 48 31 2b 36 34 0d 05  |32,W1+96,H1+64..|
00000880  32 12 58 3d 57 49 4e 44  28 30 2c 30 29 2f 33 32  |2.X=WIND(0,0)/32|
00000890  0d 05 3c 15 59 3d 33 32  2d 57 49 4e 44 28 30 2c  |..<.Y=32-WIND(0,|
000008a0  31 29 2f 33 32 0d 05 46  17 f1 20 8a 58 2c 59 2d  |1)/32..F.. .X,Y-|
000008b0  32 29 20 22 41 43 54 49  4f 4e 53 22 0d 05 50 14  |2) "ACTIONS"..P.|
000008c0  f1 20 8a 58 2c 59 29 20  20 20 22 41 75 74 6f 22  |. .X,Y)   "Auto"|
000008d0  0d 05 5a 19 f1 20 8a 58  2c 59 2b 31 29 20 22 53  |..Z.. .X,Y+1) "S|
000008e0  65 6d 69 2d 61 75 74 6f  22 0d 05 64 16 f1 20 8a  |emi-auto"..d.. .|
000008f0  58 2c 59 2b 32 29 20 22  4d 61 6e 75 61 6c 22 0d  |X,Y+2) "Manual".|
00000900  05 6e 18 f1 20 8a 58 2c  59 2b 33 29 20 22 43 6f  |.n.. .X,Y+3) "Co|
00000910  6e 74 69 6e 75 65 22 0d  05 78 12 58 3d 57 49 4e  |ntinue"..x.X=WIN|
00000920  44 28 31 2c 30 29 2f 33  32 0d 05 82 15 59 3d 33  |D(1,0)/32....Y=3|
00000930  32 2d 57 49 4e 44 28 31  2c 31 29 2f 33 32 0d 05  |2-WIND(1,1)/32..|
00000940  8c 17 f1 20 8a 58 2c 59  2d 32 29 20 22 4f 50 54  |... .X,Y-2) "OPT|
00000950  49 4f 4e 53 22 0d 05 96  1a f1 20 8a 58 2c 59 29  |IONS"..... .X,Y)|
00000960  20 20 20 22 50 72 6f 6a  65 63 74 69 6f 6e 22 0d  |   "Projection".|
00000970  05 a0 1b f1 20 8a 58 2c  59 2b 31 29 20 22 4c 6f  |.... .X,Y+1) "Lo|
00000980  6f 73 65 20 45 64 67 65  73 22 0d 05 aa 1d f1 20  |ose Edges"..... |
00000990  8a 58 2c 59 2b 32 29 20  22 43 6f 6c 6f 75 72 20  |.X,Y+2) "Colour |
000009a0  4c 6f 6f 6b 75 70 22 0d  05 b4 12 58 3d 57 49 4e  |Lookup"....X=WIN|
000009b0  44 28 32 2c 30 29 2f 33  32 0d 05 be 15 59 3d 33  |D(2,0)/32....Y=3|
000009c0  32 2d 57 49 4e 44 28 32  2c 31 29 2f 33 32 0d 05  |2-WIND(2,1)/32..|
000009d0  c8 18 f1 20 8a 58 2c 59  2d 32 29 20 22 53 45 54  |... .X,Y-2) "SET|
000009e0  54 49 4e 47 53 22 0d 05  d2 15 f1 20 8a 58 2c 59  |TINGS"..... .X,Y|
000009f0  29 20 20 20 22 57 69 64  74 68 22 0d 05 dc 16 f1  |)   "Width".....|
00000a00  20 8a 58 2c 59 2b 31 29  20 22 48 65 69 67 68 74  | .X,Y+1) "Height|
00000a10  22 0d 05 e6 19 f1 20 8a  58 2c 59 2b 32 29 20 22  |"..... .X,Y+2) "|
00000a20  56 69 73 63 6f 73 69 74  79 22 0d 05 f0 18 f1 20  |Viscosity"..... |
00000a30  8a 58 2c 59 2b 33 29 20  22 54 69 6d 65 73 74 65  |.X,Y+3) "Timeste|
00000a40  70 22 0d 05 fa 1a f1 20  8a 58 2c 59 2b 34 29 20  |p"..... .X,Y+4) |
00000a50  22 42 61 73 65 43 6f 6c  6f 75 72 22 0d 06 04 0b  |"BaseColour"....|
00000a60  f2 6d 61 72 6b 65 72 0d  06 0e 12 f2 70 72 69 6e  |.marker.....prin|
00000a70  74 73 65 74 74 69 6e 67  73 0d 06 18 10 c8 97 20  |tsettings...... |
00000a80  b8 20 4c 58 25 2c 4c 59  25 0d 06 22 09 4d 3d 21  |. LX%,LY%..".M=!|
00000a90  6d 6f 0d 06 2c 19 c8 96  3a c8 99 20 22 4f 53 5f  |mo..,...:.. "OS_|
00000aa0  42 79 74 65 22 2c 26 37  31 2c 4d 0d 06 36 11 4d  |Byte",&71,M..6.M|
00000ab0  3d 4d 20 82 20 33 3a 21  6d 6f 3d 4d 0d 06 40 09  |=M . 3:!mo=M..@.|
00000ac0  57 49 4e 3d 30 0d 06 4a  05 e1 0d 06 54 04 0d 06  |WIN=0..J....T...|
00000ad0  5e 19 dd 20 f2 6d 65 6e  75 28 f8 20 4d 45 4e 55  |^.. .menu(. MENU|
00000ae0  2c f8 20 57 49 4e 29 0d  06 68 07 ea 20 52 0d 06  |,. WIN)..h.. R..|
00000af0  72 0a e6 20 34 2c 36 33  0d 06 7c 17 c8 97 20 c8  |r.. 4,63..|... .|
00000b00  93 20 58 31 2c 59 31 2c  57 31 2d 34 2c 48 31 0d  |. X1,Y1,W1-4,H1.|
00000b10  06 86 0c 4c 4d 45 4e 55  3d 2d 31 0d 06 90 0b 4c  |...LMENU=-1....L|
00000b20  57 49 4e 3d 2d 31 0d 06  9a 0b 4d 45 4e 55 3d 2d  |WIN=-1....MENU=-|
00000b30  31 0d 06 a4 0a 57 49 4e  3d 2d 31 0d 06 ae 05 f5  |1....WIN=-1.....|
00000b40  0d 06 b8 0a 52 3d b3 28  31 29 0d 06 c2 0f c8 97  |....R=.(1)......|
00000b50  20 58 25 2c 59 25 2c 5a  25 0d 06 cc 0e 4c 4d 45  | X%,Y%,Z%....LME|
00000b60  4e 55 3d 4d 45 4e 55 0d  06 d6 1a 4d 45 4e 55 3d  |NU=MENU....MENU=|
00000b70  a4 63 68 65 63 6b 6d 65  6e 75 28 58 25 2c 59 25  |.checkmenu(X%,Y%|
00000b80  29 0d 06 e0 0c 4c 57 49  4e 3d 57 49 4e 0d 06 ea  |)....LWIN=WIN...|
00000b90  10 e7 20 4d 45 4e 55 3c  3e 2d 31 20 8c 0d 06 f4  |.. MENU<>-1 ....|
00000ba0  1d 57 49 4e 3d a4 63 68  65 63 6b 77 69 6e 28 58  |.WIN=.checkwin(X|
00000bb0  25 2c 59 25 2c 4d 45 4e  55 29 0d 06 fe 05 cd 0d  |%,Y%,MENU)......|
00000bc0  07 08 13 e7 20 4c 4d 45  4e 55 3c 3e 4d 45 4e 55  |.... LMENU<>MENU|
00000bd0  20 8c 0d 07 12 24 e7 20  4c 4d 45 4e 55 3c 3e 2d  | ....$. LMENU<>-|
00000be0  31 20 8c 20 f2 77 69 6e  28 4c 57 49 4e 2c 4c 4d  |1 . .win(LWIN,LM|
00000bf0  45 4e 55 29 3a cd 0d 07  1c 10 e7 20 4d 45 4e 55  |ENU):...... MENU|
00000c00  3c 3e 2d 31 20 8c 0d 07  26 12 f2 77 69 6e 28 57  |<>-1 ...&..win(W|
00000c10  49 4e 2c 4d 45 4e 55 29  0d 07 30 05 cd 0d 07 3a  |IN,MENU)..0....:|
00000c20  05 cc 0d 07 44 10 e7 20  4d 45 4e 55 3c 3e 2d 31  |....D.. MENU<>-1|
00000c30  20 8c 0d 07 4e 11 e7 20  4c 57 49 4e 3c 3e 57 49  | ...N.. LWIN<>WI|
00000c40  4e 20 8c 0d 07 58 13 f2  77 69 6e 28 4c 57 49 4e  |N ...X..win(LWIN|
00000c50  2c 4d 45 4e 55 29 0d 07  62 12 f2 77 69 6e 28 57  |,MENU)..b..win(W|
00000c60  49 4e 2c 4d 45 4e 55 29  0d 07 6c 05 cd 0d 07 76  |IN,MENU)..l....v|
00000c70  05 cd 0d 07 80 05 cd 0d  07 8a 15 fd 20 5a 25 3d  |............ Z%=|
00000c80  34 20 80 20 4d 45 4e 55  3c 3e 2d 31 0d 07 94 12  |4 . MENU<>-1....|
00000c90  f2 77 69 6e 28 57 49 4e  2c 4d 45 4e 55 29 0d 07  |.win(WIN,MENU)..|
00000ca0  9e 17 c8 97 20 c8 93 20  30 2c 30 2c 31 32 38 30  |.... .. 0,0,1280|
00000cb0  2c 31 30 32 34 0d 07 a8  05 e1 0d 07 b2 04 0d 07  |,1024...........|
00000cc0  bc 1b dd 20 a4 63 68 65  63 6b 77 69 6e 28 58 25  |... .checkwin(X%|
00000cd0  2c 59 25 2c 4d 45 4e 55  29 0d 07 c6 0b ea 20 57  |,Y%,MENU)..... W|
00000ce0  2c 57 49 4e 0d 07 d0 15  57 4d 41 58 3d 57 49 4e  |,WIN....WMAX=WIN|
00000cf0  44 28 4d 45 4e 55 2c 33  29 0d 07 da 14 59 25 2d  |D(MENU,3)....Y%-|
00000d00  3d 57 49 4e 44 28 4d 45  4e 55 2c 31 29 0d 07 e4  |=WIND(MENU,1)...|
00000d10  0f 57 3d 30 3a 46 4f 55  4e 44 3d a3 0d 07 ee 05  |.W=0:FOUND=.....|
00000d20  f5 0d 07 f8 08 57 2b 3d  31 0d 08 02 20 e7 20 59  |.....W+=1... . Y|
00000d30  25 3c 2d 28 57 2d 31 29  2a 33 32 20 80 20 59 25  |%<-(W-1)*32 . Y%|
00000d40  3e 3d 2d 57 2a 33 32 20  8c 0d 08 0c 09 57 49 4e  |>=-W*32 .....WIN|
00000d50  3d 57 0d 08 16 0b 46 4f  55 4e 44 3d b9 0d 08 20  |=W....FOUND=... |
00000d60  05 cd 0d 08 2a 14 fd 20  57 3d 57 4d 41 58 20 84  |....*.. W=WMAX .|
00000d70  20 46 4f 55 4e 44 0d 08  34 08 3d 57 49 4e 0d 08  | FOUND..4.=WIN..|
00000d80  3e 04 0d 08 48 17 dd 20  a4 63 68 65 63 6b 6d 65  |>...H.. .checkme|
00000d90  6e 75 28 58 25 2c 59 25  29 0d 08 52 0b ea 20 49  |nu(X%,Y%)..R.. I|
00000da0  2c 58 2c 59 0d 08 5c 08  4d 3d 2d 31 0d 08 66 0d  |,X,Y..\.M=-1..f.|
00000db0  e3 20 49 3d 30 20 b8 20  32 0d 08 70 12 58 3d 58  |. I=0 . 2..p.X=X|
00000dc0  25 2d 57 49 4e 44 28 49  2c 30 29 0d 08 7a 1c 59  |%-WIND(I,0)..z.Y|
00000dd0  3d 59 25 2d 57 49 4e 44  28 49 2c 31 29 2b 57 49  |=Y%-WIND(I,1)+WI|
00000de0  4e 44 28 49 2c 33 29 0d  08 84 33 e7 20 58 3e 3d  |ND(I,3)...3. X>=|
00000df0  30 20 80 20 59 3e 3d 30  20 80 20 58 3c 57 49 4e  |0 . Y>=0 . X<WIN|
00000e00  44 28 49 2c 32 29 20 80  20 59 3c 57 49 4e 44 28  |D(I,2) . Y<WIND(|
00000e10  49 2c 33 29 20 8c 20 4d  3d 49 0d 08 8e 05 ed 0d  |I,3) . M=I......|
00000e20  08 98 06 3d 4d 0d 08 a2  04 0d 08 ac 12 dd 20 f2  |...=M......... .|
00000e30  77 69 6e 28 57 2c 4d 45  4e 55 29 0d 08 b6 10 e7  |win(W,MENU).....|
00000e40  20 4d 45 4e 55 3c 3e 2d  31 20 8c 0d 08 c0 38 c8  | MENU<>-1 ....8.|
00000e50  93 20 c8 90 20 57 49 4e  44 28 4d 45 4e 55 2c 30  |. .. WIND(MENU,0|
00000e60  29 2c 57 49 4e 44 28 4d  45 4e 55 2c 31 29 2d 57  |),WIND(MENU,1)-W|
00000e70  2a 33 32 2c 57 49 4e 44  28 4d 45 4e 55 2c 32 29  |*32,WIND(MENU,2)|
00000e80  2c 33 32 0d 08 ca 05 cd  0d 08 d4 05 e1 0d 08 de  |,32.............|
00000e90  04 0d 08 e8 0b dd 20 f2  69 6e 69 74 0d 08 f2 09  |...... .init....|
00000ea0  54 49 4d 3d 30 0d 08 fc  0c 2a 50 4f 49 4e 54 45  |TIM=0....*POINTE|
00000eb0  52 0d 09 06 08 c8 97 20  ee 0d 09 10 16 c8 99 20  |R...... ....... |
00000ec0  22 4f 53 5f 42 79 74 65  22 2c 26 37 30 2c 32 0d  |"OS_Byte",&70,2.|
00000ed0  09 1a 0a d6 20 69 6e 69  74 0d 09 24 0c 43 48 4f  |.... init..$.CHO|
00000ee0  49 43 45 3d 30 0d 09 2e  12 57 56 41 44 44 52 3d  |ICE=0....WVADDR=|
00000ef0  21 77 61 76 74 61 62 0d  09 38 12 53 4e 41 44 44  |!wavtab..8.SNADD|
00000f00  52 3d 21 73 6e 75 74 61  62 0d 09 42 0e 41 3d 32  |R=!snutab..B.A=2|
00000f10  5e 31 36 2a 2e 39 35 0d  09 4c 34 e3 20 49 25 3d  |^16*.95..L4. I%=|
00000f20  30 20 b8 20 31 30 32 33  3a 53 4e 41 44 44 52 21  |0 . 1023:SNADDR!|
00000f30  28 34 2a 49 25 29 3d 2d  b5 28 af 2a 49 25 2f 35  |(4*I%)=-.(.*I%/5|
00000f40  31 32 29 2a 41 2b 30 2e  35 3a ed 0d 09 56 0e 21  |12)*A+0.5:...V.!|
00000f50  57 56 41 44 44 52 3d 2d  31 0d 09 60 0f de 20 57  |WVADDR=-1..`.. W|
00000f60  49 4e 44 28 32 2c 33 29  0d 09 6a 2c 57 49 4e 44  |IND(2,3)..j,WIND|
00000f70  28 29 3d 31 38 2c 32 31  2c 31 35 2c 34 2c 20 31  |()=18,21,15,4, 1|
00000f80  38 2c 31 34 2c 31 35 2c  33 2c 20 31 38 2c 38 2c  |8,14,15,3, 18,8,|
00000f90  31 35 2c 35 0d 09 74 14  57 49 4e 44 28 29 3d 57  |15,5..t.WIND()=W|
00000fa0  49 4e 44 28 29 2a 33 32  0d 09 7e 17 4c 58 25 3d  |IND()*32..~.LX%=|
00000fb0  57 49 4e 44 28 30 2c 30  29 2b 31 32 2a 33 32 0d  |WIND(0,0)+12*32.|
00000fc0  09 88 14 4c 59 25 3d 57  49 4e 44 28 30 2c 31 29  |...LY%=WIND(0,1)|
00000fd0  2d 31 36 0d 09 92 0f 52  45 43 4f 4d 50 49 4c 45  |-16....RECOMPILE|
00000fe0  3d a3 0d 09 9c 10 de 20  53 45 54 54 49 4e 47 28  |=...... SETTING(|
00000ff0  34 29 0d 09 a6 2a 53 45  54 54 49 4e 47 28 29 3d  |4)...*SETTING()=|
00001000  44 4d 31 2c 44 4d 32 2c  31 31 2d 44 41 4d 50 2c  |DM1,DM2,11-DAMP,|
00001010  31 32 2d 50 52 4f 50 2c  42 41 53 45 0d 09 b0 13  |12-PROP,BASE....|
00001020  de 20 53 45 54 52 41 4e  47 45 28 31 2c 34 29 0d  |. SETRANGE(1,4).|
00001030  09 ba 2b 53 45 54 52 41  4e 47 45 28 29 3d 31 30  |..+SETRANGE()=10|
00001040  2c 31 30 2c 31 2c 31 2c  30 2c 20 38 30 2c 36 34  |,10,1,1,0, 80,64|
00001050  2c 31 30 2c 31 30 2c 32  35 35 0d 09 c4 12 de 20  |,10,10,255..... |
00001060  73 70 72 69 74 65 20 32  38 30 30 30 0d 09 ce 11  |sprite 28000....|
00001070  21 73 70 72 69 74 65 3d  32 38 30 30 30 0d 09 d8  |!sprite=28000...|
00001080  0e 73 70 72 69 74 65 21  34 3d 30 0d 09 e2 0f 73  |.sprite!4=0....s|
00001090  70 72 69 74 65 21 38 3d  31 36 0d 09 ec 10 73 70  |prite!8=16....sp|
000010a0  72 69 74 65 21 31 32 3d  31 36 0d 09 f6 16 2a 44  |rite!12=16....*D|
000010b0  49 52 20 3c 32 44 57 61  76 65 73 24 64 69 72 3e  |IR <2DWaves$dir>|
000010c0  0d 0a 00 2c c8 99 20 22  4f 53 5f 53 70 72 69 74  |...,.. "OS_Sprit|
000010d0  65 4f 70 22 2c 32 35 36  2b 31 30 2c 73 70 72 69  |eOp",256+10,spri|
000010e0  74 65 2c 22 32 44 77 61  76 65 73 22 0d 0a 0a 2c  |te,"2Dwaves"...,|
000010f0  c8 99 20 22 4f 53 5f 53  70 72 69 74 65 4f 70 22  |.. "OS_SpriteOp"|
00001100  2c 32 35 36 2b 32 34 2c  73 70 72 69 74 65 2c 22  |,256+24,sprite,"|
00001110  32 44 57 61 76 65 73 22  0d 0a 14 0a 2a 44 49 52  |2DWaves"....*DIR|
00001120  20 5e 0d 0a 1e 05 e1 0d  0a 28 04 0d 0a 32 0d dd  | ^.......(...2..|
00001130  20 f2 72 65 69 6e 69 74  0d 0a 3c 0e 21 57 56 41  | .reinit..<.!WVA|
00001140  44 44 52 3d 2d 31 0d 0a  46 09 21 65 78 3d 30 0d  |DDR=-1..F.!ex=0.|
00001150  0a 50 09 21 65 79 3d 30  0d 0a 5a 05 e1 0d 0a 64  |.P.!ey=0..Z....d|
00001160  04 0d 0a 6e 0d dd 20 f2  64 65 66 69 6e 65 0d 0a  |...n.. .define..|
00001170  78 10 c8 97 20 b8 20 36  34 30 2c 35 31 32 0d 0a  |x... . 640,512..|
00001180  82 05 db 0d 0a 8c 08 53  25 3d 30 0d 0a 96 09 4d  |.......S%=0....M|
00001190  3d 21 6d 6f 0d 0a a0 15  41 4d 3d 32 30 30 3a 46  |=!mo....AM=200:F|
000011a0  52 3d 36 30 3a 50 48 3d  30 0d 0a aa 09 4c 5a 25  |R=60:PH=0....LZ%|
000011b0  3d 34 0d 0a b4 05 f5 0d  0a be 0d d6 20 6f 75 74  |=4.......... out|
000011c0  63 6f 70 79 0d 0a c8 05  f5 0d 0a d2 16 c8 99 20  |copy........... |
000011d0  22 4f 53 5f 42 79 74 65  22 2c 26 37 30 2c 4d 0d  |"OS_Byte",&70,M.|
000011e0  0a dc 0c d6 20 69 6e 63  6f 70 79 0d 0a e6 16 4c  |.... incopy....L|
000011f0  5a 25 3d 5a 25 3a c8 97  20 58 25 2c 59 25 2c 5a  |Z%=Z%:.. X%,Y%,Z|
00001200  25 0d 0a f0 2a e7 20 5a  25 3d 31 20 8c 20 46 52  |%...*. Z%=1 . FR|
00001210  3d 28 31 32 2d 58 25 2a  31 32 2f 31 32 38 30 29  |=(12-X%*12/1280)|
00001220  2a 31 30 3a 41 4d 3d 59  25 2f 32 0d 0a fa 14 41  |*10:AM=Y%/2....A|
00001230  24 3d bf 28 30 29 3a 2a  46 58 20 31 35 2c 31 0d  |$=.(0):*FX 15,1.|
00001240  0b 04 0e e7 20 41 24 3c  3e 22 22 20 8c 0d 0b 0e  |.... A$<>"" ....|
00001250  0b c8 8e 20 41 24 20 ca  0d 0b 18 29 c9 20 22 31  |... A$ ....). "1|
00001260  22 3a e7 20 41 4d 3c 35  31 32 20 41 4d 2b 3d 31  |":. AM<512 AM+=1|
00001270  30 3a e7 20 41 4d 3e 35  31 32 20 41 4d 3d 35 31  |0:. AM>512 AM=51|
00001280  32 0d 0b 22 28 c9 20 22  32 22 3a e7 20 46 52 3c  |2.."(. "2":. FR<|
00001290  31 32 30 20 46 52 2b 3d  32 3a e7 20 46 52 3e 31  |120 FR+=2:. FR>1|
000012a0  32 30 20 46 52 3d 31 32  30 0d 0b 2c 0f c9 20 22  |20 FR=120..,.. "|
000012b0  33 22 3a 50 48 2b 3d 32  0d 0b 36 27 c9 20 22 51  |3":PH+=2..6'. "Q|
000012c0  22 2c 22 71 22 3a e7 20  41 4d 3e 30 20 41 4d 2d  |","q":. AM>0 AM-|
000012d0  3d 31 30 3a e7 20 41 4d  3c 30 20 41 4d 3d 30 0d  |=10:. AM<0 AM=0.|
000012e0  0b 40 27 c9 20 22 57 22  2c 22 77 22 3a e7 20 46  |.@'. "W","w":. F|
000012f0  52 3e 30 20 20 46 52 2d  3d 32 3a e7 20 46 52 3c  |R>0  FR-=2:. FR<|
00001300  30 20 46 52 3d 30 0d 0b  4a 13 c9 20 22 45 22 2c  |0 FR=0..J.. "E",|
00001310  22 65 22 3a 50 48 2d 3d  32 0d 0b 54 05 cb 0d 0b  |"e":PH-=2..T....|
00001320  5e 05 cd 0d 0b 68 19 52  25 3d 34 30 30 2f 28 31  |^....h.R%=400/(1|
00001330  2b 46 52 2f 33 30 29 80  ac 28 33 29 0d 0b 72 0e  |+FR/30)..(3)..r.|
00001340  4c 25 3d 41 4d 2f 35 2b  31 30 0d 0b 7c 0e 54 25  |L%=AM/5+10..|.T%|
00001350  3d 50 48 2a 35 2e 31 32  0d 0b 86 13 58 3d 58 25  |=PH*5.12....X=X%|
00001360  2a 44 4d 31 20 81 20 31  32 38 30 0d 0b 90 13 59  |*DM1 . 1280....Y|
00001370  3d 59 25 2a 44 4d 32 20  81 20 31 30 32 34 0d 0b  |=Y%*DM2 . 1024..|
00001380  9a 17 58 25 3d 28 58 2b  30 2e 35 29 2a 31 32 38  |..X%=(X+0.5)*128|
00001390  30 2f 44 4d 31 0d 0b a4  17 59 25 3d 28 59 2b 30  |0/DM1....Y%=(Y+0|
000013a0  2e 35 29 2a 31 30 32 34  2f 44 4d 32 0d 0b ae 10  |.5)*1024/DM2....|
000013b0  e6 20 33 2c 4c 25 20 c8  9c 20 54 25 0d 0b b8 12  |. 3,L% .. T%....|
000013c0  c8 8f 20 c8 90 20 58 25  2c 59 25 2c 52 25 0d 0b  |.. .. X%,Y%,R%..|
000013d0  c2 0f e6 20 36 33 20 c8  9c 20 32 35 35 0d 0b cc  |... 63 .. 255...|
000013e0  0f c8 8f 20 58 25 2c 59  25 2c 52 25 0d 0b d6 08  |... X%,Y%,R%....|
000013f0  ef 20 32 36 0d 0b e0 1e  ef 20 35 3a ec 20 30 2c  |. 26..... 5:. 0,|
00001400  31 30 32 33 3a e6 20 31  2c 36 33 20 c8 9c 20 32  |1023:. 1,63 .. 2|
00001410  35 35 0d 0b ea 17 f1 20  22 41 6d 70 6c 69 74 75  |55..... "Amplitu|
00001420  64 65 20 3a 20 22 3b 41  4d 0d 0b f4 1a f1 20 22  |de : ";AM..... "|
00001430  46 72 65 71 75 65 6e 63  79 20 3a 20 22 3b 46 52  |Frequency : ";FR|
00001440  2f 31 30 0d 0b fe 1a f1  20 22 50 68 61 73 65 20  |/10..... "Phase |
00001450  28 50 49 29 3a 20 22 3b  50 48 2f 32 30 0d 0c 08  |(PI): ";PH/20...|
00001460  0e f1 20 22 58 20 3a 20  22 3b 58 0d 0c 12 0e f1  |.. "X : ";X.....|
00001470  20 22 59 20 3a 20 22 3b  59 0d 0c 1c 09 ef 20 34  | "Y : ";Y..... 4|
00001480  3a 87 0d 0c 26 1d 45 25  3d 41 4d 3a 46 25 3d 46  |:...&.E%=AM:F%=F|
00001490  52 2a 32 35 3a 47 25 3d  50 48 2a 32 35 2e 36 0d  |R*25:G%=PH*25.6.|
000014a0  0c 30 0b d6 20 67 72 61  70 68 0d 0c 3a 21 c8 96  |.0.. graph..:!..|
000014b0  3a c8 99 20 22 4f 53 5f  42 79 74 65 22 2c 26 37  |:.. "OS_Byte",&7|
000014c0  31 2c 4d 3a 4d 3d 4d 20  82 20 33 0d 0c 44 1c fd  |1,M:M=M . 3..D..|
000014d0  20 28 4c 5a 25 3c 3e 34  20 80 20 5a 25 3d 34 29  | (LZ%<>4 . Z%=4)|
000014e0  20 84 20 5a 25 3d 32 0d  0c 4e 0c e7 20 5a 25 3d  | . Z%=2..N.. Z%=|
000014f0  34 20 8c 0d 0c 58 16 c8  99 20 22 4f 53 5f 42 79  |4 ...X... "OS_By|
00001500  74 65 22 2c 26 37 30 2c  4d 0d 0c 62 0c d6 20 69  |te",&70,M..b.. i|
00001510  6e 63 6f 70 79 0d 0c 6c  10 e6 20 33 2c 4c 25 20  |ncopy..l.. 3,L% |
00001520  c8 9c 20 54 25 0d 0c 76  12 c8 8f 20 c8 90 20 58  |.. T%..v... .. X|
00001530  25 2c 59 25 2c 52 25 0d  0c 80 0b 59 3d 44 4d 32  |%,Y%,R%....Y=DM2|
00001540  2d 59 0d 0c 8a 2e 50 4f  3d 28 58 2b 59 2a 38 30  |-Y....PO=(X+Y*80|
00001550  2b 28 28 36 34 2d 44 4d  32 29 81 20 32 29 2a 38  |+((64-DM2). 2)*8|
00001560  30 2b 28 38 30 2d 44 4d  31 29 81 20 32 29 2a 38  |0+(80-DM1). 2)*8|
00001570  0d 0c 94 1f f2 73 65 74  28 41 4d 2a 32 2c 46 52  |.....set(AM*2,FR|
00001580  2c 50 48 2a 32 35 2e 36  2c 50 4f 2c 53 25 29 0d  |,PH*25.6,PO,S%).|
00001590  0c 9e 0d d6 20 6f 75 74  63 6f 70 79 0d 0c a8 09  |.... outcopy....|
000015a0  53 25 2b 3d 31 0d 0c b2  05 cd 0d 0c bc 0a fd 20  |S%+=1.......... |
000015b0  5a 25 3d 32 0d 0c c6 19  c8 95 20 5a 25 3d 32 3a  |Z%=2...... Z%=2:|
000015c0  c8 97 20 58 25 2c 59 25  2c 5a 25 3a ce 0d 0c d0  |.. X%,Y%,Z%:....|
000015d0  18 f2 73 65 74 28 2d 31  2c 2d 31 2c 2d 31 2c 2d  |..set(-1,-1,-1,-|
000015e0  31 2c 53 25 29 0d 0c da  09 21 6d 6f 3d 4d 0d 0c  |1,S%)....!mo=M..|
000015f0  e4 0d e6 20 36 33 3a fb  20 36 33 0d 0c ee 05 e1  |... 63:. 63.....|
00001600  0d 0c f8 04 0d 0d 02 0b  dd 20 f2 61 75 74 6f 0d  |......... .auto.|
00001610  0d 0c 0b 21 74 69 6d 65  3d 30 0d 0d 16 0e e3 20  |...!time=0..... |
00001620  53 25 3d 30 20 b8 20 39  0d 0d 20 0d 41 4d 3d b3  |S%=0 . 9.. .AM=.|
00001630  28 38 30 30 29 0d 0d 2a  0c 46 52 3d b3 28 32 30  |(800)..*.FR=.(20|
00001640  29 0d 0d 34 18 50 48 3d  28 b3 28 32 29 2d 31 29  |)..4.PH=(.(2)-1)|
00001650  2a 35 31 32 2b 31 30 32  34 0d 0d 3e 10 58 3d b3  |*512+1024..>.X=.|
00001660  28 44 4d 31 2d 32 29 2b  31 0d 0d 48 10 59 3d b3  |(DM1-2)+1..H.Y=.|
00001670  28 44 4d 32 2d 32 29 2b  31 0d 0d 52 2e 50 4f 3d  |(DM2-2)+1..R.PO=|
00001680  28 58 2b 59 2a 38 30 2b  28 28 36 34 2d 44 4d 32  |(X+Y*80+((64-DM2|
00001690  29 81 20 32 29 2a 38 30  2b 28 38 30 2d 44 4d 31  |). 2)*80+(80-DM1|
000016a0  29 81 20 32 29 2a 38 0d  0d 5c 18 f2 73 65 74 28  |). 2)*8..\..set(|
000016b0  41 4d 2c 46 52 2c 50 48  2c 50 4f 2c 53 25 29 0d  |AM,FR,PH,PO,S%).|
000016c0  0d 66 05 ed 0d 0d 70 18  f2 73 65 74 28 2d 31 2c  |.f....p..set(-1,|
000016d0  2d 31 2c 2d 31 2c 2d 31  2c 53 25 29 0d 0d 7a 05  |-1,-1,-1,S%)..z.|
000016e0  e1 0d 0d 84 04 0d 0d 8e  1a dd 20 f2 73 65 74 28  |.......... .set(|
000016f0  41 4d 2c 46 52 2c 50 48  2c 50 4f 2c 53 25 29 0d  |AM,FR,PH,PO,S%).|
00001700  0d 98 20 57 56 41 44 44  52 21 28 53 25 2a 31 36  |.. WVADDR!(S%*16|
00001710  29 3d 50 4f 3a f4 20 70  6f 73 69 74 69 6f 6e 0d  |)=PO:. position.|
00001720  0d a2 23 57 56 41 44 44  52 21 28 53 25 2a 31 36  |..#WVADDR!(S%*16|
00001730  2b 34 29 3d 41 4d 3a f4  20 61 6d 70 6c 69 74 75  |+4)=AM:. amplitu|
00001740  64 65 0d 0d ac 23 57 56  41 44 44 52 21 28 53 25  |de...#WVADDR!(S%|
00001750  2a 31 36 2b 38 29 3d 46  52 3a f4 20 66 72 65 71  |*16+8)=FR:. freq|
00001760  75 65 6e 63 79 0d 0d b6  20 57 56 41 44 44 52 21  |uency... WVADDR!|
00001770  28 53 25 2a 31 36 2b 31  32 29 3d 50 48 3a f4 20  |(S%*16+12)=PH:. |
00001780  70 68 61 73 65 0d 0d c0  05 e1 0d 0d ca 04 0d 0d  |phase...........|
00001790  d4 17 dd 20 f2 63 6f 6c  74 61 62 6c 65 28 43 54  |... .coltable(CT|
000017a0  41 42 4c 45 29 0d 0d de  09 53 57 50 3d 32 0d 0d  |ABLE)....SWP=2..|
000017b0  e8 0c 43 3d 30 3a 4d 3d  31 35 0d 0d f2 0d e3 20  |..C=0:M=15..... |
000017c0  4b 3d 30 20 b8 20 4d 0d  0d fc 24 f2 70 75 74 28  |K=0 . M...$.put(|
000017d0  43 2b 28 4b 20 80 20 25  31 31 30 30 29 2a 35 2e  |C+(K . %1100)*5.|
000017e0  32 35 2c 4b 20 80 20 25  31 31 29 0d 0e 06 05 ed  |25,K . %11).....|
000017f0  0d 0e 10 0d e3 20 54 3d  31 20 b8 20 33 0d 0e 1a  |..... T=1 . 3...|
00001800  13 43 3d 54 3a 4d 3d 34  2a 28 34 2d 54 29 2d 31  |.C=T:M=4*(4-T)-1|
00001810  0d 0e 24 0e f2 73 69 64  65 28 20 20 34 29 0d 0e  |..$..side(  4)..|
00001820  2e 0e f2 73 69 64 65 28  2d 20 31 29 0d 0e 38 0e  |...side(- 1)..8.|
00001830  f2 73 69 64 65 28 20 31  36 29 0d 0e 42 0e f2 73  |.side( 16)..B..s|
00001840  69 64 65 28 2d 20 34 29  0d 0e 4c 0e f2 73 69 64  |ide(- 4)..L..sid|
00001850  65 28 20 20 31 29 0d 0e  56 0e f2 73 69 64 65 28  |e(  1)..V..side(|
00001860  2d 31 36 29 0d 0e 60 05  ed 0d 0e 6a 05 e1 0d 0e  |-16)..`....j....|
00001870  74 04 0d 0e 7e 10 dd 20  f2 73 69 64 65 28 52 47  |t...~.. .side(RG|
00001880  42 29 0d 0e 88 0d e3 20  49 3d 31 20 b8 20 54 0d  |B)..... I=1 . T.|
00001890  0e 92 0a 43 2b 3d 52 47  42 0d 0e 9c 0d e7 20 53  |...C+=RGB..... S|
000018a0  57 50 3d 31 20 8c 0d 0e  a6 0d e3 20 4b 3d 30 20  |WP=1 ...... K=0 |
000018b0  b8 20 4d 0d 0e b0 24 f2  70 75 74 28 43 2b 28 4b  |. M...$.put(C+(K|
000018c0  20 80 20 25 31 31 30 30  29 2a 35 2e 32 35 2c 4b  | . %1100)*5.25,K|
000018d0  20 80 20 25 31 31 29 0d  0e ba 05 ed 0d 0e c4 05  | . %11).........|
000018e0  cc 0d 0e ce 12 e3 20 4b  3d 4d 20 b8 20 30 20 88  |...... K=M . 0 .|
000018f0  20 2d 31 0d 0e d8 24 f2  70 75 74 28 43 2b 28 4b  | -1...$.put(C+(K|
00001900  20 80 20 25 31 31 30 30  29 2a 35 2e 32 35 2c 4b  | . %1100)*5.25,K|
00001910  20 80 20 25 31 31 29 0d  0e e2 05 ed 0d 0e ec 05  | . %11).........|
00001920  cd 0d 0e f6 0f 53 57 50  3d 53 57 50 20 82 20 33  |.....SWP=SWP . 3|
00001930  0d 0f 00 05 ed 0d 0f 0a  05 e1 0d 0f 14 04 0d 0f  |................|
00001940  1e 0f dd 20 f2 70 75 74  28 43 2c 54 29 0d 0f 28  |... .put(C,T)..(|
00001950  11 42 31 3d 28 43 3e 3e  35 29 20 80 20 31 0d 0f  |.B1=(C>>5) . 1..|
00001960  32 11 42 32 3d 28 43 3e  3e 34 29 20 80 20 31 0d  |2.B2=(C>>4) . 1.|
00001970  0f 3c 11 47 31 3d 28 43  3e 3e 33 29 20 80 20 31  |.<.G1=(C>>3) . 1|
00001980  0d 0f 46 11 47 32 3d 28  43 3e 3e 32 29 20 80 20  |..F.G2=(C>>2) . |
00001990  31 0d 0f 50 11 52 31 3d  28 43 3e 3e 31 29 20 80  |1..P.R1=(C>>1) .|
000019a0  20 31 0d 0f 5a 11 52 32  3d 28 43 3e 3e 30 29 20  | 1..Z.R2=(C>>0) |
000019b0  80 20 31 0d 0f 64 31 43  4f 4c 3d 54 2b 34 2a 28  |. 1..d1COL=T+4*(|
000019c0  52 32 2b 32 2a 28 42 32  2b 32 2a 28 52 31 2b 32  |R2+2*(B2+2*(R1+2|
000019d0  2a 28 47 32 2b 32 2a 28  47 31 2b 32 2a 42 31 29  |*(G2+2*(G1+2*B1)|
000019e0  29 29 29 29 0d 0f 6e 0f  3f 43 54 41 42 4c 45 3d  |))))..n.?CTABLE=|
000019f0  43 4f 4c 0d 0f 78 0d 43  54 41 42 4c 45 2b 3d 31  |COL..x.CTABLE+=1|
00001a00  0d 0f 82 05 e1 0d 0f 8c  04 0d 0f 96 0e dd 20 f2  |.............. .|
00001a10  69 6e 69 74 61 73 73 0d  0f a0 0f de 20 51 25 20  |initass..... Q% |
00001a20  31 30 30 30 30 30 0d 0f  aa 0a 44 41 4d 50 3d 38  |100000....DAMP=8|
00001a30  0d 0f b4 0a 50 52 4f 50  3d 32 0d 0f be 0a 44 4d  |....PROP=2....DM|
00001a40  31 3d 38 30 0d 0f c8 0a  44 4d 32 3d 36 34 0d 0f  |1=80....DM2=64..|
00001a50  d2 0c 42 41 53 45 3d 31  38 30 0d 0f dc 10 de 20  |..BASE=180..... |
00001a60  43 54 41 42 4c 45 20 32  35 36 0d 0f e6 15 f2 63  |CTABLE 256.....c|
00001a70  6f 6c 74 61 62 6c 65 28  43 54 41 42 4c 45 29 0d  |oltable(CTABLE).|
00001a80  0f f0 14 e3 20 50 41 53  53 3d 30 20 b8 20 32 20  |.... PASS=0 . 2 |
00001a90  88 20 32 0d 0f fa 09 50  25 3d 51 25 0d 10 04 0d  |. 2....P%=Q%....|
00001aa0  5b 4f 50 54 20 50 41 53  53 0d 10 0e 1a 2e 73 63  |[OPT PASS.....sc|
00001ab0  72 31 20 45 51 55 44 20  31 34 38 3a 45 51 55 44  |r1 EQUD 148:EQUD|
00001ac0  20 2d 31 0d 10 18 10 2e  73 63 72 32 20 45 51 55  | -1.....scr2 EQU|
00001ad0  44 20 30 0d 10 22 13 2e  74 61 62 31 20 45 51 55  |D 0.."..tab1 EQU|
00001ae0  44 20 78 74 61 62 0d 10  2c 1c 2e 74 61 62 32 20  |D xtab..,..tab2 |
00001af0  45 51 55 44 20 21 74 61  62 31 2b 36 34 2a 38 30  |EQUD !tab1+64*80|
00001b00  2a 38 0d 10 36 0f 2e 74  61 31 20 45 51 55 44 20  |*8..6..ta1 EQUD |
00001b10  30 0d 10 40 0f 2e 74 61  32 20 45 51 55 44 20 30  |0..@..ta2 EQUD 0|
00001b20  0d 10 4a 20 2e 73 6e 75  74 61 62 20 45 51 55 44  |..J .snutab EQUD|
00001b30  20 21 74 61 62 31 2b 36  34 2a 38 30 2a 38 2a 32  | !tab1+64*80*8*2|
00001b40  0d 10 54 1f 2e 77 61 76  74 61 62 20 45 51 55 44  |..T..wavtab EQUD|
00001b50  20 21 73 6e 75 74 61 62  2b 31 30 32 34 2a 34 0d  | !snutab+1024*4.|
00001b60  10 5e 0e 2e 65 78 20 45  51 55 44 20 31 0d 10 68  |.^..ex EQUD 1..h|
00001b70  0e 2e 65 79 20 45 51 55  44 20 31 0d 10 72 0e 2e  |..ey EQUD 1..r..|
00001b80  6d 6f 20 45 51 55 44 20  32 0d 10 7c 10 2e 74 69  |mo EQUD 2..|..ti|
00001b90  6d 65 20 45 51 55 44 20  30 0d 10 86 15 2e 63 68  |me EQUD 0.....ch|
00001ba0  6f 69 63 65 20 45 51 55  44 20 25 31 31 30 0d 10  |oice EQUD %110..|
00001bb0  90 26 2e 6e 61 6d 65 20  45 51 55 53 20 22 44 75  |.&.name EQUS "Du|
00001bc0  6d 70 22 3a 45 51 55 42  20 97 22 30 22 3a 45 51  |mp":EQUB ."0":EQ|
00001bd0  55 42 20 30 0d 10 9a 0a  2e 41 4c 49 47 4e 0d 10  |UB 0.....ALIGN..|
00001be0  a4 05 5d 0d 10 ae 0a 51  51 25 3d 50 25 0d 10 b8  |..]....QQ%=P%...|
00001bf0  08 f2 61 73 73 0d 10 c2  05 ed 0d 10 cc 05 e1 0d  |..ass...........|
00001c00  10 d6 04 0d 10 e0 0c dd  20 f2 72 65 61 73 73 0d  |........ .reass.|
00001c10  10 ea 14 e3 20 50 41 53  53 3d 30 20 b8 20 32 20  |.... PASS=0 . 2 |
00001c20  88 20 32 0d 10 f4 0a 50  25 3d 51 51 25 0d 10 fe  |. 2....P%=QQ%...|
00001c30  08 f2 61 73 73 0d 11 08  05 ed 0d 11 12 05 e1 0d  |..ass...........|
00001c40  11 1c 04 0d 11 26 0a dd  20 f2 61 73 73 0d 11 30  |.....&.. .ass..0|
00001c50  19 58 57 3d 28 28 38 30  2d 44 4d 31 29 20 81 20  |.XW=((80-DM1) . |
00001c60  32 29 2a 34 2b 34 0d 11  3a 19 59 57 3d 28 28 36  |2)*4+4..:.YW=((6|
00001c70  34 2d 44 4d 32 29 20 81  20 32 29 2a 34 2b 34 0d  |4-DM2) . 2)*4+4.|
00001c80  11 44 15 49 20 20 20 20  3d 30 20 20 3a 53 4e 55  |.D.I    =0  :SNU|
00001c90  53 20 3d 30 0d 11 4e 29  4a 20 20 20 20 3d 31 20  |S =0..N)J    =1 |
00001ca0  20 3a 58 32 20 20 20 3d  31 20 20 3a 57 41 56 53  | :X2   =1  :WAVS|
00001cb0  20 3d 31 20 20 3a 20 44  58 20 20 3d 31 0d 11 58  | =1  : DX  =1..X|
00001cc0  15 54 20 20 20 20 3d 32  20 20 3a 4d 20 20 20 20  |.T    =2  :M    |
00001cd0  3d 32 0d 11 62 29 4f 20  20 20 20 3d 33 20 20 3a  |=2..b)O    =3  :|
00001ce0  58 20 20 20 20 3d 33 20  20 3a 50 4f 53 49 20 3d  |X    =3  :POSI =|
00001cf0  33 20 20 3a 20 4f 43 20  20 3d 33 0d 11 6c 29 57  |3  : OC  =3..l)W|
00001d00  20 20 20 20 3d 34 20 20  3a 5a 20 20 20 20 3d 34  |    =4  :Z    =4|
00001d10  20 20 3a 41 4d 50 4c 20  3d 34 20 20 3a 20 44 59  |  :AMPL =4  : DY|
00001d20  20 20 3d 34 0d 11 76 1f  58 31 20 20 20 3d 35 20  |  =4..v.X1   =5 |
00001d30  20 3a 46 52 45 51 20 3d  35 20 20 3a 4e 43 20 20  | :FREQ =5  :NC  |
00001d40  20 3d 35 0d 11 80 29 56  20 20 20 20 3d 36 20 20  | =5...)V    =6  |
00001d50  3a 59 20 20 20 20 3d 36  20 20 3a 50 48 41 20 20  |:Y    =6  :PHA  |
00001d60  3d 36 20 20 3a 20 43 31  20 20 3d 36 0d 11 8a 29  |=6  : C1  =6...)|
00001d70  59 31 20 20 20 3d 37 20  20 3a 54 49 4a 44 20 3d  |Y1   =7  :TIJD =|
00001d80  37 20 20 3a 41 44 20 20  20 3d 37 20 20 3a 20 43  |7  :AD   =7  : C|
00001d90  32 20 20 3d 37 0d 11 94  15 53 43 52 20 20 3d 38  |2  =7....SCR  =8|
00001da0  20 20 3a 53 4f 55 52 20  3d 38 0d 11 9e 29 43 4f  |  :SOUR =8...)CO|
00001db0  4c 20 20 3d 39 20 20 3a  43 20 20 20 20 3d 39 20  |L  =9  :C    =9 |
00001dc0  20 3a 44 45 53 54 20 3d  39 20 20 3a 20 43 33 20  | :DEST =9  : C3 |
00001dd0  20 3d 39 0d 11 a8 2a 54  41 42 31 20 3d 31 30 20  | =9...*TAB1 =10 |
00001de0  3a 4c 20 20 20 20 3d 31  30 20 3a 43 4f 20 20 20  |:L    =10 :CO   |
00001df0  3d 31 30 20 3a 20 43 34  20 20 3d 31 30 0d 11 b2  |=10 : C4  =10...|
00001e00  2a 54 41 42 32 20 3d 31  31 20 3a 43 54 20 20 20  |*TAB2 =11 :CT   |
00001e10  3d 31 31 20 3a 4c 4c 20  20 20 3d 31 31 20 3a 20  |=11 :LL   =11 : |
00001e20  4f 4b 20 20 3d 31 31 0d  11 bc 20 59 32 20 20 20  |OK  =11... Y2   |
00001e30  3d 31 32 20 3a 4d 41 53  4b 20 3d 31 32 20 3a 4e  |=12 :MASK =12 :N|
00001e40  4b 20 20 20 3d 31 32 0d  11 c6 0c 48 20 20 20 20  |K   =12....H    |
00001e50  3d 31 33 0d 11 d0 0c 4e  20 20 20 20 3d 31 34 0d  |=13....N    =14.|
00001e60  11 da 0d 5b 4f 50 54 20  50 41 53 53 0d 11 e4 0a  |...[OPT PASS....|
00001e70  2e 67 72 61 70 68 0d 11  ee 11 20 20 41 44 52 20  |.graph....  ADR |
00001e80  52 30 2c 73 63 72 31 0d  11 f8 11 20 20 41 44 52  |R0,scr1....  ADR|
00001e90  20 52 31 2c 73 63 72 32  0d 12 02 1f 20 20 53 57  | R1,scr2....  SW|
00001ea0  49 20 22 4f 53 5f 52 65  61 64 56 64 75 56 61 72  |I "OS_ReadVduVar|
00001eb0  69 61 62 6c 65 73 22 0d  12 0c 12 20 20 4c 44 52  |iables"....  LDR|
00001ec0  20 53 43 52 2c 73 63 72  32 0d 12 16 14 20 20 4d  | SCR,scr2....  M|
00001ed0  4f 56 20 54 2c 23 33 32  30 2a 31 32 38 0d 12 20  |OV T,#320*128.. |
00001ee0  13 20 20 41 44 44 20 53  43 52 2c 53 43 52 2c 54  |.  ADD SCR,SCR,T|
00001ef0  0d 12 2a 15 20 20 4d 4f  56 20 4d 41 53 4b 2c 23  |..*.  MOV MASK,#|
00001f00  31 3c 3c 31 30 0d 12 34  16 20 20 53 55 42 20 4d  |1<<10..4.  SUB M|
00001f10  41 53 4b 2c 4d 41 53 4b  2c 23 31 0d 12 3e 15 20  |ASK,MASK,#1..>. |
00001f20  20 4c 44 52 20 53 4e 55  53 2c 73 6e 75 74 61 62  | LDR SNUS,snutab|
00001f30  0d 12 48 11 20 20 4d 4f  56 20 4a 2c 23 31 32 38  |..H.  MOV J,#128|
00001f40  30 0d 12 52 10 20 20 53  55 42 20 4a 2c 4a 2c 23  |0..R.  SUB J,J,#|
00001f50  34 0d 12 5c 12 20 20 4d  4f 56 20 43 4f 4c 2c 23  |4..\.  MOV COL,#|
00001f60  32 35 35 0d 12 66 0f 20  20 4d 4f 56 20 4c 4c 2c  |255..f.  MOV LL,|
00001f70  23 30 0d 12 70 0d 20 20  2e 6c 6f 6f 70 67 72 0d  |#0..p.  .loopgr.|
00001f80  12 7a 14 20 20 20 20 4d  55 4c 20 54 2c 4a 2c 46  |.z.    MUL T,J,F|
00001f90  52 45 51 0d 12 84 16 20  20 20 20 4d 4f 56 20 54  |REQ....    MOV T|
00001fa0  2c 54 2c 41 53 52 20 23  38 0d 12 8e 13 20 20 20  |,T,ASR #8....   |
00001fb0  20 41 44 44 20 54 2c 54  2c 50 48 41 0d 12 98 12  | ADD T,T,PHA....|
00001fc0  20 20 20 20 80 20 54 2c  54 2c 4d 41 53 4b 0d 12  |    . T,T,MASK..|
00001fd0  a2 1d 20 20 20 20 4c 44  52 20 54 2c 5b 53 4e 55  |..    LDR T,[SNU|
00001fe0  53 2c 54 2c 4c 53 4c 20  23 32 5d 0d 12 ac 14 20  |S,T,LSL #2].... |
00001ff0  20 20 20 4d 55 4c 20 4c  2c 54 2c 41 4d 50 4c 0d  |   MUL L,T,AMPL.|
00002000  12 b6 18 20 20 20 20 4d  4f 56 53 20 54 2c 4c 2c  |...    MOVS T,L,|
00002010  41 53 52 20 23 31 38 0d  12 c0 12 20 20 20 20 41  |ASR #18....    A|
00002020  44 43 20 54 2c 54 2c 23  30 0d 12 ca 18 20 20 20  |DC T,T,#0....   |
00002030  20 41 44 44 20 54 2c 54  2c 54 2c 4c 53 4c 20 23  | ADD T,T,T,LSL #|
00002040  32 0d 12 d4 16 20 20 20  20 4d 4f 56 20 54 2c 54  |2....    MOV T,T|
00002050  2c 4c 53 4c 20 23 36 0d  12 de 18 20 20 20 20 41  |,LSL #6....    A|
00002060  44 44 20 54 2c 54 2c 4a  2c 4c 53 52 20 23 32 0d  |DD T,T,J,LSR #2.|
00002070  12 e8 13 20 20 20 20 41  44 44 20 54 2c 53 43 52  |...    ADD T,SCR|
00002080  2c 54 0d 12 f2 13 20 20  20 20 4d 4f 56 20 41 44  |,T....    MOV AD|
00002090  2c 23 33 32 30 0d 12 fc  10 20 20 20 20 43 4d 50  |,#320....    CMP|
000020a0  20 54 2c 4c 4c 0d 13 06  16 20 20 20 20 52 53 42  | T,LL....    RSB|
000020b0  48 49 20 41 44 2c 41 44  2c 23 30 0d 13 10 0f 20  |HI AD,AD,#0.... |
000020c0  20 20 20 4d 4f 56 20 4c  2c 54 0d 13 1a 11 20 20  |   MOV L,T....  |
000020d0  20 20 43 4d 50 20 4c 4c  2c 23 30 0d 13 24 12 20  |  CMP LL,#0..$. |
000020e0  20 20 20 43 4d 50 4e 45  20 54 2c 4c 4c 0d 13 2e  |   CMPNE T,LL...|
000020f0  15 20 20 20 20 41 44 44  45 51 20 4c 4c 2c 54 2c  |.    ADDEQ LL,T,|
00002100  41 44 0d 13 38 0c 20 20  20 20 2e 64 61 6c 0d 13  |AD..8.    .dal..|
00002110  42 19 20 20 20 20 20 20  53 54 52 42 20 43 4f 4c  |B.      STRB COL|
00002120  2c 5b 54 5d 2c 41 44 0d  13 4c 12 20 20 20 20 20  |,[T],AD..L.     |
00002130  20 43 4d 50 20 54 2c 4c  4c 0d 13 56 0f 20 20 20  | CMP T,LL..V.   |
00002140  20 42 4e 45 20 64 61 6c  0d 13 60 13 20 20 20 20  | BNE dal..`.    |
00002150  53 55 42 20 4c 4c 2c 4c  2c 23 31 0d 13 6a 14 20  |SUB LL,L,#1..j. |
00002160  20 20 20 53 55 42 53 20  20 4a 2c 4a 2c 23 34 0d  |   SUBS  J,J,#4.|
00002170  13 74 10 20 20 42 4e 45  20 6c 6f 6f 70 67 72 0d  |.t.  BNE loopgr.|
00002180  13 7e 0e 4d 4f 56 20 50  43 2c 52 31 34 0d 13 88  |.~.MOV PC,R14...|
00002190  04 0d 13 92 0a 2e 73 74  61 72 74 0d 13 9c 14 20  |......start.... |
000021a0  20 53 54 4d 46 44 20 31  33 21 2c 7b 31 34 7d 0d  | STMFD 13!,{14}.|
000021b0  13 a6 11 20 20 4d 4f 56  20 52 30 2c 23 26 31 30  |...  MOV R0,#&10|
000021c0  0d 13 b0 15 20 20 41 44  52 20 52 31 2c 6b 65 79  |....  ADR R1,key|
000021d0  70 72 65 73 73 0d 13 ba  0f 20 20 4d 4f 56 20 52  |press....  MOV R|
000021e0  32 2c 23 30 0d 13 c4 14  20 20 53 57 49 20 22 4f  |2,#0....  SWI "O|
000021f0  53 5f 43 6c 61 69 6d 22  0d 13 ce 11 20 20 4d 4f  |S_Claim"....  MO|
00002200  56 20 52 30 2c 23 26 30  45 0d 13 d8 10 20 20 4d  |V R0,#&0E....  M|
00002210  4f 56 20 52 31 2c 23 31  31 0d 13 e2 13 20 20 53  |OV R1,#11....  S|
00002220  57 49 20 22 4f 53 5f 42  79 74 65 22 0d 13 ec 19  |WI "OS_Byte"....|
00002230  20 20 4d 4f 56 20 54 2c  23 28 36 34 2d 44 4d 32  |  MOV T,#(64-DM2|
00002240  29 20 81 20 32 0d 13 f6  16 20 20 41 44 44 20 54  |) . 2....  ADD T|
00002250  2c 54 2c 54 2c 4c 53 4c  20 23 32 0d 14 00 14 20  |,T,T,LSL #2.... |
00002260  20 4d 4f 56 20 54 2c 54  2c 4c 53 4c 20 23 37 0d  | MOV T,T,LSL #7.|
00002270  14 0a 1f 20 20 41 44 44  20 54 2c 54 2c 23 28 28  |...  ADD T,T,#((|
00002280  38 30 2d 44 4d 31 29 20  81 20 32 29 2a 38 0d 14  |80-DM1) . 2)*8..|
00002290  14 13 20 20 4c 44 52 20  54 41 42 31 2c 74 61 62  |..  LDR TAB1,tab|
000022a0  31 0d 14 1e 15 20 20 41  44 44 20 54 41 42 31 2c  |1....  ADD TAB1,|
000022b0  54 41 42 31 2c 54 0d 14  28 12 20 20 53 54 52 20  |TAB1,T..(.  STR |
000022c0  54 41 42 31 2c 74 61 31  0d 14 32 13 20 20 4c 44  |TAB1,ta1..2.  LD|
000022d0  52 20 54 41 42 32 2c 74  61 62 32 0d 14 3c 15 20  |R TAB2,tab2..<. |
000022e0  20 41 44 44 20 54 41 42  32 2c 54 41 42 32 2c 54  | ADD TAB2,TAB2,T|
000022f0  0d 14 46 12 20 20 53 54  52 20 54 41 42 32 2c 74  |..F.  STR TAB2,t|
00002300  61 32 0d 14 50 0b 20 20  2e 6c 6f 6f 70 0d 14 5a  |a2..P.  .loop..Z|
00002310  13 20 20 20 20 4d 4f 56  20 52 30 2c 23 26 37 30  |.    MOV R0,#&70|
00002320  0d 14 64 11 20 20 20 20  4c 44 52 20 52 31 2c 6d  |..d.    LDR R1,m|
00002330  6f 0d 14 6e 15 20 20 20  20 53 57 49 20 22 4f 53  |o..n.    SWI "OS|
00002340  5f 42 79 74 65 22 0d 14  78 14 20 20 20 20 4c 44  |_Byte"..x.    LD|
00002350  52 20 54 2c 63 68 6f 69  63 65 0d 14 82 13 20 20  |R T,choice....  |
00002360  20 20 54 53 54 20 54 2c  23 38 2b 31 36 0d 14 8c  |  TST T,#8+16...|
00002370  10 20 20 20 20 42 45 51  20 6f 76 72 37 0d 14 96  |.    BEQ ovr7...|
00002380  14 20 20 20 20 20 20 53  55 42 20 54 2c 54 2c 23  |.      SUB T,T,#|
00002390  38 0d 14 a0 16 20 20 20  20 20 20 53 54 52 20 54  |8....      STR T|
000023a0  2c 63 68 6f 69 63 65 0d  14 aa 14 20 20 20 20 20  |,choice....     |
000023b0  20 4d 4f 56 20 52 30 2c  23 31 36 0d 14 b4 19 20  | MOV R0,#16.... |
000023c0  20 20 20 20 20 53 57 49  20 22 4f 53 5f 57 72 69  |     SWI "OS_Wri|
000023d0  74 65 43 22 0d 14 be 0d  20 20 20 20 2e 6f 76 72  |teC"....    .ovr|
000023e0  37 0d 14 c8 13 20 20 20  20 41 44 52 20 52 30 2c  |7....    ADR R0,|
000023f0  73 63 72 31 0d 14 d2 13  20 20 20 20 41 44 52 20  |scr1....    ADR |
00002400  52 31 2c 73 63 72 32 0d  14 dc 21 20 20 20 20 53  |R1,scr2...!    S|
00002410  57 49 20 22 4f 53 5f 52  65 61 64 56 64 75 56 61  |WI "OS_ReadVduVa|
00002420  72 69 61 62 6c 65 73 22  0d 14 e6 14 20 20 20 20  |riables"....    |
00002430  4c 44 52 20 54 41 42 31  2c 74 61 31 0d 14 f0 14  |LDR TAB1,ta1....|
00002440  20 20 20 20 4c 44 52 20  54 41 42 32 2c 74 61 32  |    LDR TAB2,ta2|
00002450  0d 14 fa 14 20 20 20 20  53 54 52 20 54 41 42 31  |....    STR TAB1|
00002460  2c 74 61 32 0d 15 04 14  20 20 20 20 53 54 52 20  |,ta2....    STR |
00002470  54 41 42 32 2c 74 61 31  0d 15 0e 14 20 20 20 20  |TAB2,ta1....    |
00002480  4c 44 52 20 54 2c 63 68  6f 69 63 65 0d 15 18 11  |LDR T,choice....|
00002490  20 20 20 20 54 53 54 20  54 2c 23 33 32 0d 15 22  |    TST T,#32.."|
000024a0  13 20 20 20 20 42 45 51  20 65 6e 64 63 61 73 65  |.    BEQ endcase|
000024b0  0d 15 2c 0d 20 20 20 20  2e 63 61 73 65 0d 15 36  |..,.    .case..6|
000024c0  15 20 20 20 20 20 20 42  49 43 20 54 2c 54 2c 23  |.      BIC T,T,#|
000024d0  33 32 0d 15 40 16 20 20  20 20 20 20 53 54 52 20  |32..@.      STR |
000024e0  54 2c 63 68 6f 69 63 65  0d 15 4a 16 20 20 20 20  |T,choice..J.    |
000024f0  20 20 4c 44 52 20 54 41  42 31 2c 74 61 31 0d 15  |  LDR TAB1,ta1..|
00002500  54 16 20 20 20 20 20 20  42 4c 20 66 69 78 5f 65  |T.      BL fix_e|
00002510  64 67 65 73 0d 15 5e 16  20 20 20 20 20 20 4c 44  |dges..^.      LD|
00002520  52 20 54 41 42 31 2c 74  61 32 0d 15 68 16 20 20  |R TAB1,ta2..h.  |
00002530  20 20 20 20 42 4c 20 66  69 78 5f 65 64 67 65 73  |    BL fix_edges|
00002540  0d 15 72 10 20 20 20 20  2e 65 6e 64 63 61 73 65  |..r.    .endcase|
00002550  0d 15 7c 18 20 20 20 20  42 4c 20 6d 6f 75 73 65  |..|.    BL mouse|
00002560  5f 63 6f 6e 74 72 6f 6c  0d 15 86 12 20 20 20 20  |_control....    |
00002570  42 4c 20 73 6f 75 72 63  65 73 0d 15 90 14 20 20  |BL sources....  |
00002580  20 20 4c 44 52 20 54 2c  63 68 6f 69 63 65 0d 15  |  LDR T,choice..|
00002590  9a 10 20 20 20 20 54 53  54 20 54 2c 23 32 0d 15  |..    TST T,#2..|
000025a0  a4 18 20 20 20 20 42 4c  4e 45 20 6c 6f 6f 73 65  |..    BLNE loose|
000025b0  5f 65 64 67 65 73 0d 15  ae 14 20 20 20 20 4c 44  |_edges....    LD|
000025c0  52 20 53 43 52 2c 73 63  72 32 0d 15 b8 14 20 20  |R SCR,scr2....  |
000025d0  20 20 4c 44 52 20 54 2c  63 68 6f 69 63 65 0d 15  |  LDR T,choice..|
000025e0  c2 10 20 20 20 20 54 53  54 20 54 2c 23 31 0d 15  |..    TST T,#1..|
000025f0  cc 10 20 20 20 20 42 4e  45 20 65 6c 73 65 0d 15  |..    BNE else..|
00002600  d6 1f 20 20 20 20 20 20  42 4c 20 73 69 6d 75 6c  |..      BL simul|
00002610  61 74 69 6f 6e 5f 64 69  73 70 6c 61 79 0d 15 e0  |ation_display...|
00002620  16 20 20 20 20 20 20 4c  44 52 20 53 43 52 2c 73  |.      LDR SCR,s|
00002630  63 72 32 0d 15 ea 16 20  20 20 20 20 20 4c 44 52  |cr2....      LDR|
00002640  20 54 2c 63 68 6f 69 63  65 0d 15 f4 12 20 20 20  | T,choice....   |
00002650  20 20 20 54 53 54 20 54  2c 23 34 0d 15 fe 21 20  |   TST T,#4...! |
00002660  20 20 20 20 20 42 4c 4e  45 20 63 6f 75 6c 6f 72  |     BLNE coulor|
00002670  5f 74 72 61 6e 73 6c 61  74 69 6f 6e 0d 16 08 11  |_translation....|
00002680  20 20 20 20 42 41 4c 20  65 6e 64 69 66 0d 16 12  |    BAL endif...|
00002690  0d 20 20 20 20 2e 65 6c  73 65 0d 16 1c 14 20 20  |.    .else....  |
000026a0  20 20 20 20 4d 4f 56 20  52 30 2c 23 31 36 0d 16  |    MOV R0,#16..|
000026b0  26 19 20 20 20 20 20 20  53 57 49 20 22 4f 53 5f  |&.      SWI "OS_|
000026c0  57 72 69 74 65 43 22 0d  16 30 17 20 20 20 20 20  |WriteC"..0.     |
000026d0  20 42 4c 20 73 69 6d 75  6c 61 74 69 6f 6e 0d 16  | BL simulation..|
000026e0  3a 16 20 20 20 20 20 20  4c 44 52 20 53 43 52 2c  |:.      LDR SCR,|
000026f0  73 63 72 32 0d 16 44 16  20 20 20 20 20 20 4c 44  |scr2..D.      LD|
00002700  52 20 54 41 42 31 2c 74  61 32 0d 16 4e 16 20 20  |R TAB1,ta2..N.  |
00002710  20 20 20 20 4c 44 52 20  54 2c 63 68 6f 69 63 65  |    LDR T,choice|
00002720  0d 16 58 12 20 20 20 20  20 20 54 53 54 20 54 2c  |..X.      TST T,|
00002730  23 34 0d 16 62 1a 20 20  20 20 20 20 42 4c 45 51  |#4..b.      BLEQ|
00002740  20 77 69 72 65 64 69 73  70 6c 61 79 0d 16 6c 1c  | wiredisplay..l.|
00002750  20 20 20 20 20 20 42 4c  4e 45 20 77 69 72 65 64  |      BLNE wired|
00002760  69 73 70 6c 61 79 63 74  0d 16 76 0e 20 20 20 20  |isplayct..v.    |
00002770  2e 65 6e 64 69 66 0d 16  80 14 20 20 20 20 4c 44  |.endif....    LD|
00002780  52 20 54 2c 63 68 6f 69  63 65 0d 16 8a 11 20 20  |R T,choice....  |
00002790  20 20 54 53 54 20 54 2c  23 36 34 0d 16 94 17 20  |  TST T,#64.... |
000027a0  20 20 20 20 20 42 49 43  4e 45 20 54 2c 54 2c 23  |     BICNE T,T,#|
000027b0  36 34 0d 16 9e 18 20 20  20 20 20 20 53 54 52 4e  |64....      STRN|
000027c0  45 20 54 2c 63 68 6f 69  63 65 0d 16 a8 19 20 20  |E T,choice....  |
000027d0  20 20 20 20 42 4c 4e 45  20 73 61 76 65 73 63 72  |    BLNE savescr|
000027e0  65 65 6e 0d 16 b2 0d 20  20 20 20 2e 77 61 69 74  |een....    .wait|
000027f0  0d 16 bc 18 20 20 20 20  20 20 53 57 49 20 22 4f  |....      SWI "O|
00002800  53 5f 4d 6f 75 73 65 22  0d 16 c6 12 20 20 20 20  |S_Mouse"....    |
00002810  20 20 43 4d 50 20 54 2c  23 31 0d 16 d0 10 20 20  |  CMP T,#1....  |
00002820  20 20 42 45 51 20 77 61  69 74 0d 16 da 10 20 20  |  BEQ wait....  |
00002830  20 20 43 4d 50 20 54 2c  23 32 0d 16 e4 0f 20 20  |  CMP T,#2....  |
00002840  20 20 42 45 51 20 65 6e  64 0d 16 ee 13 20 20 20  |  BEQ end....   |
00002850  20 4d 4f 56 20 52 30 2c  23 26 31 33 0d 16 f8 15  | MOV R0,#&13....|
00002860  20 20 20 20 53 57 49 20  22 4f 53 5f 42 79 74 65  |    SWI "OS_Byte|
00002870  22 0d 17 02 10 20 20 20  20 4c 44 52 20 54 2c 6d  |"....    LDR T,m|
00002880  6f 0d 17 0c 13 20 20 20  20 4d 4f 56 20 52 30 2c  |o....    MOV R0,|
00002890  23 26 37 31 0d 17 16 10  20 20 20 20 4d 4f 56 20  |#&71....    MOV |
000028a0  52 31 2c 54 0d 17 20 10  20 20 20 20 82 20 54 2c  |R1,T.. .    . T,|
000028b0  54 2c 23 33 0d 17 2a 10  20 20 20 20 53 54 52 20  |T,#3..*.    STR |
000028c0  54 2c 6d 6f 0d 17 34 15  20 20 20 20 53 57 49 20  |T,mo..4.    SWI |
000028d0  22 4f 53 5f 42 79 74 65  22 0d 17 3e 0e 20 20 42  |"OS_Byte"..>.  B|
000028e0  41 4c 20 6c 6f 6f 70 0d  17 48 08 2e 65 6e 64 0d  |AL loop..H..end.|
000028f0  17 52 11 20 20 4d 4f 56  20 52 30 2c 23 26 30 44  |.R.  MOV R0,#&0D|
00002900  0d 17 5c 10 20 20 4d 4f  56 20 52 31 2c 23 31 31  |..\.  MOV R1,#11|
00002910  0d 17 66 13 20 20 53 57  49 20 22 4f 53 5f 42 79  |..f.  SWI "OS_By|
00002920  74 65 22 0d 17 70 11 20  20 4d 4f 56 20 52 30 2c  |te"..p.  MOV R0,|
00002930  23 26 31 30 0d 17 7a 15  20 20 41 44 52 20 52 31  |#&10..z.  ADR R1|
00002940  2c 6b 65 79 70 72 65 73  73 0d 17 84 0f 20 20 4d  |,keypress....  M|
00002950  4f 56 20 52 32 2c 23 30  0d 17 8e 16 20 20 53 57  |OV R2,#0....  SW|
00002960  49 20 22 4f 53 5f 52 65  6c 65 61 73 65 22 0d 17  |I "OS_Release"..|
00002970  98 12 4c 44 4d 46 44 20  31 33 21 2c 7b 31 35 7d  |..LDMFD 13!,{15}|
00002980  0d 17 a2 04 0d 17 ac 04  0d 17 b6 0d 2e 6b 65 79  |.............key|
00002990  70 72 65 73 73 0d 17 c0  10 20 20 43 4d 50 20 52  |press....  CMP R|
000029a0  30 2c 23 31 31 0d 17 ca  12 20 20 4d 4f 56 4e 45  |0,#11....  MOVNE|
000029b0  20 50 43 2c 52 31 34 0d  17 d4 0f 20 20 43 4d 50  | PC,R14....  CMP|
000029c0  20 52 31 2c 23 31 0d 17  de 12 20 20 4d 4f 56 4e  | R1,#1....  MOVN|
000029d0  45 20 50 43 2c 52 31 34  0d 17 e8 15 20 20 53 54  |E PC,R14....  ST|
000029e0  4d 46 44 20 31 33 21 2c  7b 30 2d 33 7d 0d 17 f2  |MFD 13!,{0-3}...|
000029f0  13 20 20 4c 44 52 20 52  31 2c 63 68 6f 69 63 65  |.  LDR R1,choice|
00002a00  0d 17 fc 11 20 20 43 4d  50 20 52 32 2c 23 26 33  |....  CMP R2,#&3|
00002a10  30 0d 18 06 12 20 20 82  45 51 20 52 31 2c 52 31  |0....  .EQ R1,R1|
00002a20  2c 23 31 0d 18 10 14 20  20 84 52 45 51 20 52 31  |,#1....  .REQ R1|
00002a30  2c 52 31 2c 23 31 36 0d  18 1a 11 20 20 43 4d 50  |,R1,#16....  CMP|
00002a40  20 52 32 2c 23 26 32 39  0d 18 24 12 20 20 82 45  | R2,#&29..$.  .E|
00002a50  51 20 52 31 2c 52 31 2c  23 32 0d 18 2e 14 20 20  |Q R1,R1,#2....  |
00002a60  84 52 45 51 20 52 31 2c  52 31 2c 23 33 32 0d 18  |.REQ R1,R1,#32..|
00002a70  38 11 20 20 43 4d 50 20  52 32 2c 23 26 35 30 0d  |8.  CMP R2,#&50.|
00002a80  18 42 12 20 20 82 45 51  20 52 31 2c 52 31 2c 23  |.B.  .EQ R1,R1,#|
00002a90  34 0d 18 4c 11 20 20 43  4d 50 20 52 32 2c 23 26  |4..L.  CMP R2,#&|
00002aa0  33 44 0d 18 56 14 20 20  84 52 45 51 20 52 31 2c  |3D..V.  .REQ R1,|
00002ab0  52 31 2c 23 36 34 0d 18  60 13 20 20 53 54 52 20  |R1,#64..`.  STR |
00002ac0  52 31 2c 63 68 6f 69 63  65 0d 18 6a 15 20 20 4c  |R1,choice..j.  L|
00002ad0  44 4d 46 44 20 31 33 21  2c 7b 30 2d 33 7d 0d 18  |DMFD 13!,{0-3}..|
00002ae0  74 0e 4d 4f 56 20 50 43  2c 52 31 34 0d 18 7e 04  |t.MOV PC,R14..~.|
00002af0  0d 18 88 12 2e 6d 6f 75  73 65 5f 63 6f 6e 74 72  |.....mouse_contr|
00002b00  6f 6c 0d 18 92 14 20 20  53 57 49 20 22 4f 53 5f  |ol....  SWI "OS_|
00002b10  4d 6f 75 73 65 22 0d 18  9c 0e 20 20 43 4d 50 20  |Mouse"....  CMP |
00002b20  54 2c 23 34 0d 18 a6 0e  20 20 42 4e 45 20 73 6b  |T,#4....  BNE sk|
00002b30  69 70 0d 18 b0 0e 20 20  4c 44 52 20 58 2c 65 78  |ip....  LDR X,ex|
00002b40  0d 18 ba 0e 20 20 4c 44  52 20 59 2c 65 79 0d 18  |....  LDR Y,ey..|
00002b50  c4 0e 20 20 43 4d 50 20  58 2c 23 30 0d 18 ce 0e  |..  CMP X,#0....|
00002b60  20 20 42 45 51 20 64 6f  6e 74 0d 18 d8 0f 20 20  |  BEQ dont....  |
00002b70  4d 4f 56 20 54 2c 23 38  30 0d 18 e2 0f 20 20 4d  |MOV T,#80....  M|
00002b80  55 4c 20 54 2c 59 2c 54  0d 18 ec 0f 20 20 41 44  |UL T,Y,T....  AD|
00002b90  44 20 54 2c 54 2c 58 0d  18 f6 14 20 20 4d 4f 56  |D T,T,X....  MOV|
00002ba0  20 54 2c 54 2c 4c 53 4c  20 23 33 0d 19 00 12 20  | T,T,LSL #3.... |
00002bb0  20 41 44 44 20 54 2c 54  2c 54 41 42 31 0d 19 0a  | ADD T,T,TAB1...|
00002bc0  13 20 20 4c 44 4d 49 41  20 54 2c 7b 4f 2c 56 7d  |.  LDMIA T,{O,V}|
00002bd0  0d 19 14 0f 20 20 53 55  42 20 4f 2c 4f 2c 56 0d  |....  SUB O,O,V.|
00002be0  19 1e 14 20 20 4d 4f 56  20 56 2c 23 32 34 30 3c  |...  MOV V,#240<|
00002bf0  3c 31 36 0d 19 28 13 20  20 53 54 4d 49 41 20 54  |<16..(.  STMIA T|
00002c00  2c 7b 4f 2c 56 7d 0d 19  32 0b 20 20 2e 64 6f 6e  |,{O,V}..2.  .don|
00002c10  74 0d 19 3c 14 20 20 4d  4f 56 20 58 2c 49 2c 4c  |t..<.  MOV X,I,L|
00002c20  53 52 20 23 34 0d 19 46  14 20 20 4d 4f 56 20 59  |SR #4..F.  MOV Y|
00002c30  2c 4a 2c 4c 53 52 20 23  34 0d 19 50 16 20 20 52  |,J,LSR #4..P.  R|
00002c40  53 42 20 59 2c 59 2c 23  28 44 4d 32 2d 31 29 0d  |SB Y,Y,#(DM2-1).|
00002c50  19 5a 14 20 20 43 4d 50  20 58 2c 23 28 44 4d 31  |.Z.  CMP X,#(DM1|
00002c60  2d 31 29 0d 19 64 0d 20  20 42 48 53 20 6f 75 74  |-1)..d.  BHS out|
00002c70  0d 19 6e 0e 20 20 43 4d  50 20 58 2c 23 30 0d 19  |..n.  CMP X,#0..|
00002c80  78 0d 20 20 42 4c 53 20  6f 75 74 0d 19 82 14 20  |x.  BLS out.... |
00002c90  20 43 4d 50 20 59 2c 23  28 44 4d 32 2d 31 29 0d  | CMP Y,#(DM2-1).|
00002ca0  19 8c 0d 20 20 42 48 53  20 6f 75 74 0d 19 96 0e  |...  BHS out....|
00002cb0  20 20 43 4d 50 20 59 2c  23 30 0d 19 a0 0d 20 20  |  CMP Y,#0....  |
00002cc0  42 4c 53 20 6f 75 74 0d  19 aa 0e 20 20 53 54 52  |BLS out....  STR|
00002cd0  20 58 2c 65 78 0d 19 b4  0e 20 20 53 54 52 20 59  | X,ex....  STR Y|
00002ce0  2c 65 79 0d 19 be 10 20  20 4d 4f 56 20 50 43 2c  |,ey....  MOV PC,|
00002cf0  52 31 34 0d 19 c8 0a 20  20 2e 6f 75 74 0d 19 d2  |R14....  .out...|
00002d00  0e 20 20 4d 4f 56 20 58  2c 23 30 0d 19 dc 0e 20  |.  MOV X,#0.... |
00002d10  20 53 54 52 20 58 2c 65  78 0d 19 e6 10 20 20 4d  | STR X,ex....  M|
00002d20  4f 56 20 50 43 2c 52 31  34 0d 19 f0 0b 20 20 2e  |OV PC,R14....  .|
00002d30  73 6b 69 70 0d 19 fa 0e  20 20 4c 44 52 20 58 2c  |skip....  LDR X,|
00002d40  65 78 0d 1a 04 0e 20 20  4c 44 52 20 59 2c 65 79  |ex....  LDR Y,ey|
00002d50  0d 1a 0e 0e 20 20 43 4d  50 20 58 2c 23 30 0d 1a  |....  CMP X,#0..|
00002d60  18 0f 20 20 ec 51 20 50  43 2c 52 31 34 0d 1a 22  |..  .Q PC,R14.."|
00002d70  0f 20 20 4d 4f 56 20 54  2c 23 38 30 0d 1a 2c 0f  |.  MOV T,#80..,.|
00002d80  20 20 4d 55 4c 20 54 2c  59 2c 54 0d 1a 36 0f 20  |  MUL T,Y,T..6. |
00002d90  20 41 44 44 20 54 2c 54  2c 58 0d 1a 40 14 20 20  | ADD T,T,X..@.  |
00002da0  4d 4f 56 20 54 2c 54 2c  4c 53 4c 20 23 33 0d 1a  |MOV T,T,LSL #3..|
00002db0  4a 1b 20 20 53 55 42 20  4a 2c 4a 2c 23 28 44 4d  |J.  SUB J,J,#(DM|
00002dc0  32 20 81 20 32 29 2a 31  36 0d 1a 54 15 20 20 4d  |2 . 2)*16..T.  M|
00002dd0  4f 56 20 4a 2c 4a 2c 4c  53 4c 20 23 31 38 0d 1a  |OV J,J,LSL #18..|
00002de0  5e 17 20 20 41 44 44 20  4a 2c 4a 2c 23 42 41 53  |^.  ADD J,J,#BAS|
00002df0  45 3c 3c 32 30 0d 1a 68  14 20 20 53 54 52 20 4a  |E<<20..h.  STR J|
00002e00  2c 5b 54 41 42 31 2c 54  5d 0d 1a 72 0e 4d 4f 56  |,[TAB1,T]..r.MOV|
00002e10  20 50 43 2c 52 31 34 0d  1a 7c 04 0d 1a 86 0f 2e  | PC,R14..|......|
00002e20  73 61 76 65 73 63 72 65  65 6e 0d 1a 90 13 53 54  |savescreen....ST|
00002e30  4d 46 44 20 31 33 21 2c  7b 30 2d 33 7d 0d 1a 9a  |MFD 13!,{0-3}...|
00002e40  0f 20 20 4d 4f 56 20 52  30 2c 23 32 0d 1a a4 11  |.  MOV R0,#2....|
00002e50  20 20 41 44 52 20 52 32  2c 6e 61 6d 65 0d 1a ae  |  ADR R2,name...|
00002e60  0f 20 20 4d 4f 56 20 52  33 2c 23 30 0d 1a b8 17  |.  MOV R3,#0....|
00002e70  20 20 53 57 49 20 22 4f  53 5f 53 70 72 69 74 65  |  SWI "OS_Sprite|
00002e80  4f 70 22 0d 1a c2 15 20  20 4c 44 52 42 20 52 30  |Op"....  LDRB R0|
00002e90  2c 5b 52 32 2c 23 34 5d  0d 1a cc 12 20 20 41 44  |,[R2,#4]....  AD|
00002ea0  44 20 52 30 2c 52 30 2c  23 31 0d 1a d6 15 20 20  |D R0,R0,#1....  |
00002eb0  53 54 52 42 20 52 30 2c  5b 52 32 2c 23 34 5d 0d  |STRB R0,[R2,#4].|
00002ec0  1a e0 13 4c 44 4d 46 44  20 31 33 21 2c 7b 30 2d  |...LDMFD 13!,{0-|
00002ed0  33 7d 0d 1a ea 0e 4d 4f  56 20 50 43 2c 52 31 34  |3}....MOV PC,R14|
00002ee0  0d 1a f4 04 0d 1a fe 0c  2e 73 6f 75 72 63 65 73  |.........sources|
00002ef0  0d 1b 08 19 20 20 4d 4f  56 20 43 2c 23 28 36 34  |....  MOV C,#(64|
00002f00  2d 44 4d 32 29 20 81 20  32 0d 1b 12 16 20 20 41  |-DM2) . 2....  A|
00002f10  44 44 20 43 2c 43 2c 43  2c 4c 53 4c 20 23 32 0d  |DD C,C,C,LSL #2.|
00002f20  1b 1c 14 20 20 4d 4f 56  20 43 2c 43 2c 4c 53 4c  |...  MOV C,C,LSL|
00002f30  20 23 37 0d 1b 26 1f 20  20 41 44 44 20 43 2c 43  | #7..&.  ADD C,C|
00002f40  2c 23 28 28 38 30 2d 44  4d 31 29 20 81 20 32 29  |,#((80-DM1) . 2)|
00002f50  2a 38 0d 1b 30 15 20 20  53 55 42 20 54 41 42 31  |*8..0.  SUB TAB1|
00002f60  2c 54 41 42 31 2c 43 0d  1b 3a 15 20 20 4d 4f 56  |,TAB1,C..:.  MOV|
00002f70  20 4d 41 53 4b 2c 23 31  3c 3c 31 30 0d 1b 44 16  | MASK,#1<<10..D.|
00002f80  20 20 53 55 42 20 4d 41  53 4b 2c 4d 41 53 4b 2c  |  SUB MASK,MASK,|
00002f90  23 31 0d 1b 4e 15 20 20  4c 44 52 20 53 4e 55 53  |#1..N.  LDR SNUS|
00002fa0  2c 73 6e 75 74 61 62 0d  1b 58 15 20 20 4c 44 52  |,snutab..X.  LDR|
00002fb0  20 57 41 56 53 2c 77 61  76 74 61 62 0d 1b 62 13  | WAVS,wavtab..b.|
00002fc0  20 20 4c 44 52 20 54 49  4a 44 2c 74 69 6d 65 0d  |  LDR TIJD,time.|
00002fd0  1b 6c 16 20 20 41 44 44  20 54 49 4a 44 2c 54 49  |.l.  ADD TIJD,TI|
00002fe0  4a 44 2c 23 31 0d 1b 76  13 20 20 53 54 52 20 54  |JD,#1..v.  STR T|
00002ff0  49 4a 44 2c 74 69 6d 65  0d 1b 80 0c 20 20 2e 6c  |IJD,time....  .l|
00003000  6f 6f 70 77 0d 1b 8a 2a  20 20 20 20 4c 44 4d 49  |oopw...*    LDMI|
00003010  41 20 28 57 41 56 53 29  21 2c 7b 50 4f 53 49 2c  |A (WAVS)!,{POSI,|
00003020  41 4d 50 4c 2c 46 52 45  51 2c 50 48 41 7d 0d 1b  |AMPL,FREQ,PHA}..|
00003030  94 17 20 20 20 20 4d 55  4c 20 54 2c 54 49 4a 44  |..    MUL T,TIJD|
00003040  2c 46 52 45 51 0d 1b 9e  13 20 20 20 20 41 44 44  |,FREQ....    ADD|
00003050  20 54 2c 54 2c 50 48 41  0d 1b a8 12 20 20 20 20  | T,T,PHA....    |
00003060  80 20 54 2c 54 2c 4d 41  53 4b 0d 1b b2 1d 20 20  |. T,T,MASK....  |
00003070  20 20 4c 44 52 20 54 2c  5b 53 4e 55 53 2c 54 2c  |  LDR T,[SNUS,T,|
00003080  4c 53 4c 20 23 32 5d 0d  1b bc 17 20 20 20 20 4d  |LSL #2]....    M|
00003090  55 4c 20 41 4d 50 4c 2c  54 2c 41 4d 50 4c 0d 1b  |UL AMPL,T,AMPL..|
000030a0  c6 13 20 20 20 20 43 4d  4e 20 50 4f 53 49 2c 23  |..    CMN POSI,#|
000030b0  31 0d 1b d0 1f 20 20 20  20 41 44 44 20 41 4d 50  |1....    ADD AMP|
000030c0  4c 2c 41 4d 50 4c 2c 23  42 41 53 45 3c 3c 32 30  |L,AMPL,#BASE<<20|
000030d0  0d 1b da 1e 20 20 20 20  53 54 52 4e 45 20 41 4d  |....    STRNE AM|
000030e0  50 4c 2c 5b 54 41 42 31  2c 50 4f 53 49 5d 0d 1b  |PL,[TAB1,POSI]..|
000030f0  e4 0f 20 20 42 4e 45 20  6c 6f 6f 70 77 0d 1b ee  |..  BNE loopw...|
00003100  15 20 20 41 44 44 20 54  41 42 31 2c 54 41 42 31  |.  ADD TAB1,TAB1|
00003110  2c 43 0d 1b f8 0e 4d 4f  56 20 50 43 2c 52 31 34  |,C....MOV PC,R14|
00003120  0d 1c 02 04 0d 1c 0c 0e  2e 66 69 78 5f 65 64 67  |.........fix_edg|
00003130  65 73 0d 1c 16 0e 20 20  4d 4f 56 20 49 2c 23 30  |es....  MOV I,#0|
00003140  0d 1c 20 10 20 20 4d 4f  56 20 4a 2c 23 44 4d 32  |.. .  MOV J,#DM2|
00003150  0d 1c 2a 11 20 20 4d 4f  56 20 54 2c 23 38 2a 38  |..*.  MOV T,#8*8|
00003160  30 0d 1c 34 0f 20 20 4d  55 4c 20 4a 2c 54 2c 4a  |0..4.  MUL J,T,J|
00003170  0d 1c 3e 15 20 20 4d 4f  56 20 54 2c 23 42 41 53  |..>.  MOV T,#BAS|
00003180  45 3c 3c 32 30 0d 1c 48  14 20 20 53 55 42 20 54  |E<<20..H.  SUB T|
00003190  2c 54 2c 23 31 3c 3c 31  39 0d 1c 52 11 20 20 2e  |,T,#1<<19..R.  .|
000031a0  68 6f 72 7a 5f 65 64 67  65 31 0d 1c 5c 14 20 20  |horz_edge1..\.  |
000031b0  20 20 41 44 44 20 57 2c  54 41 42 31 2c 49 0d 1c  |  ADD W,TAB1,I..|
000031c0  66 11 20 20 20 20 53 54  52 20 54 2c 5b 57 5d 0d  |f.    STR T,[W].|
000031d0  1c 70 11 20 20 20 20 41  44 44 20 57 2c 57 2c 4a  |.p.    ADD W,W,J|
000031e0  0d 1c 7a 18 20 20 20 20  53 54 52 20 54 2c 5b 57  |..z.    STR T,[W|
000031f0  2c 23 2d 38 30 2a 38 5d  0d 1c 84 12 20 20 20 20  |,#-80*8]....    |
00003200  41 44 44 20 49 2c 49 2c  23 38 0d 1c 8e 14 20 20  |ADD I,I,#8....  |
00003210  20 20 43 4d 50 20 49 2c  23 44 4d 31 2a 38 0d 1c  |  CMP I,#DM1*8..|
00003220  98 14 20 20 42 4e 45 20  68 6f 72 7a 5f 65 64 67  |..  BNE horz_edg|
00003230  65 31 0d 1c a2 0e 20 20  4d 4f 56 20 49 2c 23 30  |e1....  MOV I,#0|
00003240  0d 1c ac 11 20 20 2e 76  65 72 74 5f 65 64 67 65  |....  .vert_edge|
00003250  31 0d 1c b6 14 20 20 20  20 41 44 44 20 57 2c 54  |1....    ADD W,T|
00003260  41 42 31 2c 49 0d 1c c0  11 20 20 20 20 53 54 52  |AB1,I....    STR|
00003270  20 54 2c 5b 57 5d 0d 1c  ca 16 20 20 20 20 41 44  | T,[W]....    AD|
00003280  44 20 57 2c 57 2c 23 44  4d 31 2a 38 0d 1c d4 15  |D W,W,#DM1*8....|
00003290  20 20 20 20 53 54 52 20  54 2c 5b 57 2c 23 2d 38  |    STR T,[W,#-8|
000032a0  5d 0d 1c de 15 20 20 20  20 41 44 44 20 49 2c 49  |]....    ADD I,I|
000032b0  2c 23 38 30 2a 38 0d 1c  e8 0f 20 20 20 20 43 4d  |,#80*8....    CM|
000032c0  50 20 49 2c 4a 0d 1c f2  14 20 20 42 4e 45 20 76  |P I,J....  BNE v|
000032d0  65 72 74 5f 65 64 67 65  31 0d 1c fc 0e 4d 4f 56  |ert_edge1....MOV|
000032e0  20 50 43 2c 52 31 34 0d  1d 06 04 0d 1d 10 10 2e  | PC,R14.........|
000032f0  6c 6f 6f 73 65 5f 65 64  67 65 73 0d 1d 1a 0e 20  |loose_edges.... |
00003300  20 4d 4f 56 20 49 2c 23  30 0d 1d 24 10 20 20 4d  | MOV I,#0..$.  M|
00003310  4f 56 20 4a 2c 23 44 4d  32 0d 1d 2e 11 20 20 4d  |OV J,#DM2....  M|
00003320  4f 56 20 54 2c 23 38 2a  38 30 0d 1d 38 0f 20 20  |OV T,#8*80..8.  |
00003330  4d 55 4c 20 4a 2c 54 2c  4a 0d 1d 42 11 20 20 2e  |MUL J,T,J..B.  .|
00003340  68 6f 72 7a 5f 65 64 67  65 32 0d 1d 4c 14 20 20  |horz_edge2..L.  |
00003350  20 20 41 44 44 20 57 2c  54 41 42 31 2c 49 0d 1d  |  ADD W,TAB1,I..|
00003360  56 17 20 20 20 20 4c 44  52 20 54 2c 5b 57 2c 23  |V.    LDR T,[W,#|
00003370  38 30 2a 38 5d 0d 1d 60  11 20 20 20 20 53 54 52  |80*8]..`.    STR|
00003380  20 54 2c 5b 57 5d 0d 1d  6a 11 20 20 20 20 41 44  | T,[W]..j.    AD|
00003390  44 20 57 2c 57 2c 4a 0d  1d 74 1a 20 20 20 20 4c  |D W,W,J..t.    L|
000033a0  44 52 20 54 2c 5b 57 2c  23 2d 32 2a 38 30 2a 38  |DR T,[W,#-2*80*8|
000033b0  5d 0d 1d 7e 18 20 20 20  20 53 54 52 20 54 2c 5b  |]..~.    STR T,[|
000033c0  57 2c 23 2d 38 30 2a 38  5d 0d 1d 88 12 20 20 20  |W,#-80*8]....   |
000033d0  20 41 44 44 20 49 2c 49  2c 23 38 0d 1d 92 14 20  | ADD I,I,#8.... |
000033e0  20 20 20 43 4d 50 20 49  2c 23 44 4d 31 2a 38 0d  |   CMP I,#DM1*8.|
000033f0  1d 9c 14 20 20 42 4e 45  20 68 6f 72 7a 5f 65 64  |...  BNE horz_ed|
00003400  67 65 32 0d 1d a6 0e 20  20 4d 4f 56 20 49 2c 23  |ge2....  MOV I,#|
00003410  30 0d 1d b0 11 20 20 2e  76 65 72 74 5f 65 64 67  |0....  .vert_edg|
00003420  65 32 0d 1d ba 14 20 20  20 20 41 44 44 20 57 2c  |e2....    ADD W,|
00003430  54 41 42 31 2c 49 0d 1d  c4 15 20 20 20 20 4c 44  |TAB1,I....    LD|
00003440  52 20 54 2c 5b 57 2c 23  2b 38 5d 0d 1d ce 11 20  |R T,[W,#+8].... |
00003450  20 20 20 53 54 52 20 54  2c 5b 57 5d 0d 1d d8 16  |   STR T,[W]....|
00003460  20 20 20 20 41 44 44 20  57 2c 57 2c 23 44 4d 31  |    ADD W,W,#DM1|
00003470  2a 38 0d 1d e2 16 20 20  20 20 4c 44 52 20 54 2c  |*8....    LDR T,|
00003480  5b 57 2c 23 2d 31 36 5d  0d 1d ec 15 20 20 20 20  |[W,#-16]....    |
00003490  53 54 52 20 54 2c 5b 57  2c 23 2d 38 5d 0d 1d f6  |STR T,[W,#-8]...|
000034a0  15 20 20 20 20 41 44 44  20 49 2c 49 2c 23 38 30  |.    ADD I,I,#80|
000034b0  2a 38 0d 1e 00 0f 20 20  20 20 43 4d 50 20 49 2c  |*8....    CMP I,|
000034c0  4a 0d 1e 0a 14 20 20 42  4e 45 20 76 65 72 74 5f  |J....  BNE vert_|
000034d0  65 64 67 65 32 0d 1e 14  0e 4d 4f 56 20 50 43 2c  |edge2....MOV PC,|
000034e0  52 31 34 0d 1e 1e 04 0d  1e 28 1e 2e 74 6d 70 31  |R14......(..tmp1|
000034f0  20 45 51 55 44 20 30 3a  45 51 55 44 20 30 3a 45  | EQUD 0:EQUD 0:E|
00003500  51 55 44 20 30 0d 1e 32  17 2e 73 69 6d 75 6c 61  |QUD 0..2..simula|
00003510  74 69 6f 6e 5f 64 69 73  70 6c 61 79 0d 1e 3c 0f  |tion_display..<.|
00003520  20 20 4d 4f 56 20 58 2c  23 58 57 0d 1e 46 0f 20  |  MOV X,#XW..F. |
00003530  20 4d 4f 56 20 59 2c 23  59 57 0d 1e 50 16 20 20  | MOV Y,#YW..P.  |
00003540  41 44 44 20 54 2c 59 2c  59 2c 4c 53 4c 20 23 32  |ADD T,Y,Y,LSL #2|
00003550  0d 1e 5a 16 20 20 41 44  44 20 54 2c 58 2c 54 2c  |..Z.  ADD T,X,T,|
00003560  4c 53 4c 20 23 36 0d 1e  64 13 20 20 41 44 44 20  |LSL #6..d.  ADD |
00003570  53 43 52 2c 53 43 52 2c  54 0d 1e 6e 12 20 20 4d  |SCR,SCR,T..n.  M|
00003580  4f 56 20 4a 2c 23 44 4d  32 2d 32 0d 1e 78 19 20  |OV J,#DM2-2..x. |
00003590  20 41 44 44 20 54 41 42  31 2c 54 41 42 31 2c 23  | ADD TAB1,TAB1,#|
000035a0  38 30 2a 38 0d 1e 82 19  20 20 41 44 44 20 54 41  |80*8....  ADD TA|
000035b0  42 32 2c 54 41 42 32 2c  23 38 30 2a 38 0d 1e 8c  |B2,TAB2,#80*8...|
000035c0  0c 20 20 2e 6c 6f 6f 70  79 0d 1e 96 14 20 20 20  |.  .loopy....   |
000035d0  20 4d 4f 56 20 49 2c 23  44 4d 31 2d 32 0d 1e a0  | MOV I,#DM1-2...|
000035e0  1b 20 20 20 20 41 44 44  20 54 41 42 31 2c 54 41  |.    ADD TAB1,TA|
000035f0  42 31 2c 23 31 3c 3c 33  0d 1e aa 1b 20 20 20 20  |B1,#1<<3....    |
00003600  41 44 44 20 54 41 42 32  2c 54 41 42 32 2c 23 31  |ADD TAB2,TAB2,#1|
00003610  3c 3c 33 0d 1e b4 12 20  20 20 20 41 44 52 20 57  |<<3....    ADR W|
00003620  2c 74 6d 70 31 0d 1e be  19 20 20 20 20 53 54 4d  |,tmp1....    STM|
00003630  49 41 20 57 2c 7b 4a 2c  31 33 2c 31 34 7d 0d 1e  |IA W,{J,13,14}..|
00003640  c8 12 20 20 20 20 4d 4f  56 20 4e 2c 23 32 35 35  |..    MOV N,#255|
00003650  0d 1e d2 19 20 20 20 20  4c 44 52 20 58 31 2c 5b  |....    LDR X1,[|
00003660  54 41 42 31 2c 23 2d 38  5d 0d 1e dc 15 20 20 20  |TAB1,#-8]....   |
00003670  20 4c 44 52 20 59 31 2c  5b 54 41 42 31 5d 0d 1e  | LDR Y1,[TAB1]..|
00003680  e6 1b 20 20 20 20 4c 44  52 20 59 32 2c 5b 54 41  |..    LDR Y2,[TA|
00003690  42 31 2c 23 38 30 2a 38  5d 0d 1e f0 18 20 20 20  |B1,#80*8]....   |
000036a0  20 41 44 44 20 54 41 42  31 2c 54 41 42 31 2c 23  | ADD TAB1,TAB1,#|
000036b0  34 0d 1e fa 0e 20 20 20  20 2e 6c 6f 6f 70 78 0d  |4....    .loopx.|
000036c0  1f 04 12 20 20 20 20 20  20 4d 4f 56 20 4f 2c 58  |...      MOV O,X|
000036d0  31 0d 1f 0e 13 20 20 20  20 20 20 4d 4f 56 20 58  |1....      MOV X|
000036e0  31 2c 59 31 0d 1f 18 13  20 20 20 20 20 20 4d 4f  |1,Y1....      MO|
000036f0  56 20 58 32 2c 59 32 0d  1f 22 1f 20 20 20 20 20  |V X2,Y2..".     |
00003700  20 4c 44 52 20 57 2c 5b  54 41 42 31 2c 23 2d 38  | LDR W,[TAB1,#-8|
00003710  30 2a 38 2d 34 5d 0d 1f  2c 21 20 20 20 20 20 20  |0*8-4]..,!      |
00003720  4c 44 52 20 59 32 2c 5b  54 41 42 31 2c 23 38 30  |LDR Y2,[TAB1,#80|
00003730  2a 38 2b 38 2d 34 5d 0d  1f 36 1e 20 20 20 20 20  |*8+8-4]..6.     |
00003740  20 4c 44 4d 49 41 20 28  54 41 42 31 29 21 2c 7b  | LDMIA (TAB1)!,{|
00003750  56 2c 59 31 7d 0d 1f 40  14 20 20 20 20 20 20 41  |V,Y1}..@.      A|
00003760  44 44 20 4f 2c 4f 2c 59  31 0d 1f 4a 13 20 20 20  |DD O,O,Y1..J.   |
00003770  20 20 20 41 44 44 20 4f  2c 4f 2c 57 0d 1f 54 14  |   ADD O,O,W..T.|
00003780  20 20 20 20 20 20 41 44  44 20 4f 2c 4f 2c 58 32  |      ADD O,O,X2|
00003790  0d 1f 5e 1b 20 20 20 20  20 20 53 55 42 20 4f 2c  |..^.      SUB O,|
000037a0  4f 2c 58 31 2c 4c 53 4c  20 23 32 0d 1f 68 1d 20  |O,X1,LSL #2..h. |
000037b0  20 20 20 20 20 41 44 44  20 56 2c 56 2c 4f 2c 41  |     ADD V,V,O,A|
000037c0  53 52 20 23 50 52 4f 50  0d 1f 72 1d 20 20 20 20  |SR #PROP..r.    |
000037d0  20 20 53 55 42 20 56 2c  56 2c 56 2c 41 53 52 20  |  SUB V,V,V,ASR |
000037e0  23 44 41 4d 50 0d 1f 7c  14 20 20 20 20 20 20 41  |#DAMP..|.      A|
000037f0  44 44 20 4f 2c 58 31 2c  56 0d 1f 86 1d 20 20 20  |DD O,X1,V....   |
00003800  20 20 20 53 54 4d 49 41  20 28 54 41 42 32 29 21  |   STMIA (TAB2)!|
00003810  2c 7b 4f 2c 56 7d 0d 1f  90 16 20 20 20 20 20 20  |,{O,V}....      |
00003820  53 55 42 20 44 58 2c 58  32 2c 58 31 0d 1f 9a 16  |SUB DX,X2,X1....|
00003830  20 20 20 20 20 20 53 55  42 20 44 59 2c 59 32 2c  |      SUB DY,Y2,|
00003840  59 31 0d 1f a4 1a 20 20  20 20 20 20 80 20 43 2c  |Y1....      . C,|
00003850  4e 2c 58 31 2c 4c 53 52  20 23 32 30 0d 1f ae 15  |N,X1,LSR #20....|
00003860  20 20 20 20 20 20 41 44  44 20 48 2c 58 31 2c 59  |      ADD H,X1,Y|
00003870  31 0d 1f b8 1b 20 20 20  20 20 20 41 44 44 20 4d  |1....      ADD M|
00003880  2c 48 2c 58 31 2c 4c 53  4c 20 23 31 0d 1f c2 19  |,H,X1,LSL #1....|
00003890  20 20 20 20 20 20 80 20  4d 2c 4e 2c 4d 2c 4c 53  |      . M,N,M,LS|
000038a0  52 20 23 32 32 0d 1f cc  1a 20 20 20 20 20 20 41  |R #22....      A|
000038b0  44 44 20 43 2c 43 2c 4d  2c 4c 53 4c 20 23 38 0d  |DD C,C,M,LSL #8.|
000038c0  1f d6 19 20 20 20 20 20  20 80 20 4d 2c 4e 2c 48  |...      . M,N,H|
000038d0  2c 4c 53 52 20 23 32 31  0d 1f e0 1b 20 20 20 20  |,LSR #21....    |
000038e0  20 20 41 44 44 20 43 2c  43 2c 4d 2c 4c 53 4c 20  |  ADD C,C,M,LSL |
000038f0  23 31 36 0d 1f ea 1b 20  20 20 20 20 20 41 44 44  |#16....      ADD|
00003900  20 4d 2c 48 2c 59 31 2c  4c 53 4c 20 23 31 0d 1f  | M,H,Y1,LSL #1..|
00003910  f4 19 20 20 20 20 20 20  80 20 4d 2c 4e 2c 4d 2c  |..      . M,N,M,|
00003920  4c 53 52 20 23 32 32 0d  1f fe 1b 20 20 20 20 20  |LSR #22....     |
00003930  20 41 44 44 20 43 2c 43  2c 4d 2c 4c 53 4c 20 23  | ADD C,C,M,LSL #|
00003940  32 34 0d 20 08 1a 20 20  20 20 20 20 53 54 52 20  |24. ..      STR |
00003950  43 4f 4c 2c 5b 53 43 52  5d 2c 23 34 0d 20 12 1c  |COL,[SCR],#4. ..|
00003960  20 20 20 20 20 20 41 44  44 20 58 2c 58 31 2c 44  |      ADD X,X1,D|
00003970  58 2c 41 53 52 20 23 32  0d 20 1c 1c 20 20 20 20  |X,ASR #2. ..    |
00003980  20 20 41 44 44 20 59 2c  59 31 2c 44 59 2c 41 53  |  ADD Y,Y1,DY,AS|
00003990  52 20 23 32 0d 20 26 19  20 20 20 20 20 20 80 20  |R #2. &.      . |
000039a0  43 2c 4e 2c 58 2c 4c 53  52 20 23 32 30 0d 20 30  |C,N,X,LSR #20. 0|
000039b0  13 20 20 20 20 20 20 41  44 44 20 48 2c 58 2c 59  |.      ADD H,X,Y|
000039c0  0d 20 3a 1a 20 20 20 20  20 20 41 44 44 20 4d 2c  |. :.      ADD M,|
000039d0  48 2c 58 2c 4c 53 4c 20  23 31 0d 20 44 19 20 20  |H,X,LSL #1. D.  |
000039e0  20 20 20 20 80 20 4d 2c  4e 2c 4d 2c 4c 53 52 20  |    . M,N,M,LSR |
000039f0  23 32 32 0d 20 4e 1a 20  20 20 20 20 20 41 44 44  |#22. N.      ADD|
00003a00  20 43 2c 43 2c 4d 2c 4c  53 4c 20 23 38 0d 20 58  | C,C,M,LSL #8. X|
00003a10  19 20 20 20 20 20 20 80  20 4d 2c 4e 2c 48 2c 4c  |.      . M,N,H,L|
00003a20  53 52 20 23 32 31 0d 20  62 1b 20 20 20 20 20 20  |SR #21. b.      |
00003a30  41 44 44 20 43 2c 43 2c  4d 2c 4c 53 4c 20 23 31  |ADD C,C,M,LSL #1|
00003a40  36 0d 20 6c 1a 20 20 20  20 20 20 41 44 44 20 4d  |6. l.      ADD M|
00003a50  2c 48 2c 59 2c 4c 53 4c  20 23 31 0d 20 76 19 20  |,H,Y,LSL #1. v. |
00003a60  20 20 20 20 20 80 20 4d  2c 4e 2c 4d 2c 4c 53 52  |     . M,N,M,LSR|
00003a70  20 23 32 32 0d 20 80 1b  20 20 20 20 20 20 41 44  | #22. ..      AD|
00003a80  44 20 43 2c 43 2c 4d 2c  4c 53 4c 20 23 32 34 0d  |D C,C,M,LSL #24.|
00003a90  20 8a 1e 20 20 20 20 20  20 53 54 52 20 43 4f 4c  | ..      STR COL|
00003aa0  2c 5b 53 43 52 2c 23 33  32 30 2d 34 5d 0d 20 94  |,[SCR,#320-4]. .|
00003ab0  1b 20 20 20 20 20 20 41  44 44 20 58 2c 58 2c 44  |.      ADD X,X,D|
00003ac0  58 2c 41 53 52 20 23 32  0d 20 9e 1b 20 20 20 20  |X,ASR #2. ..    |
00003ad0  20 20 41 44 44 20 59 2c  59 2c 44 59 2c 41 53 52  |  ADD Y,Y,DY,ASR|
00003ae0  20 23 32 0d 20 a8 19 20  20 20 20 20 20 80 20 43  | #2. ..      . C|
00003af0  2c 4e 2c 58 2c 4c 53 52  20 23 32 30 0d 20 b2 13  |,N,X,LSR #20. ..|
00003b00  20 20 20 20 20 20 41 44  44 20 48 2c 58 2c 59 0d  |      ADD H,X,Y.|
00003b10  20 bc 1a 20 20 20 20 20  20 41 44 44 20 4d 2c 48  | ..      ADD M,H|
00003b20  2c 58 2c 4c 53 4c 20 23  31 0d 20 c6 19 20 20 20  |,X,LSL #1. ..   |
00003b30  20 20 20 80 20 4d 2c 4e  2c 4d 2c 4c 53 52 20 23  |   . M,N,M,LSR #|
00003b40  32 32 0d 20 d0 1a 20 20  20 20 20 20 41 44 44 20  |22. ..      ADD |
00003b50  43 2c 43 2c 4d 2c 4c 53  4c 20 23 38 0d 20 da 19  |C,C,M,LSL #8. ..|
00003b60  20 20 20 20 20 20 80 20  4d 2c 4e 2c 48 2c 4c 53  |      . M,N,H,LS|
00003b70  52 20 23 32 31 0d 20 e4  1b 20 20 20 20 20 20 41  |R #21. ..      A|
00003b80  44 44 20 43 2c 43 2c 4d  2c 4c 53 4c 20 23 31 36  |DD C,C,M,LSL #16|
00003b90  0d 20 ee 1a 20 20 20 20  20 20 41 44 44 20 4d 2c  |. ..      ADD M,|
00003ba0  48 2c 59 2c 4c 53 4c 20  23 31 0d 20 f8 19 20 20  |H,Y,LSL #1. ..  |
00003bb0  20 20 20 20 80 20 4d 2c  4e 2c 4d 2c 4c 53 52 20  |    . M,N,M,LSR |
00003bc0  23 32 32 0d 21 02 1b 20  20 20 20 20 20 41 44 44  |#22.!..      ADD|
00003bd0  20 43 2c 43 2c 4d 2c 4c  53 4c 20 23 32 34 0d 21  | C,C,M,LSL #24.!|
00003be0  0c 1e 20 20 20 20 20 20  53 54 52 20 43 4f 4c 2c  |..      STR COL,|
00003bf0  5b 53 43 52 2c 23 36 34  30 2d 34 5d 0d 21 16 1b  |[SCR,#640-4].!..|
00003c00  20 20 20 20 20 20 41 44  44 20 58 2c 58 2c 44 58  |      ADD X,X,DX|
00003c10  2c 41 53 52 20 23 32 0d  21 20 1b 20 20 20 20 20  |,ASR #2.! .     |
00003c20  20 41 44 44 20 59 2c 59  2c 44 59 2c 41 53 52 20  | ADD Y,Y,DY,ASR |
00003c30  23 32 0d 21 2a 19 20 20  20 20 20 20 80 20 43 2c  |#2.!*.      . C,|
00003c40  4e 2c 58 2c 4c 53 52 20  23 32 30 0d 21 34 13 20  |N,X,LSR #20.!4. |
00003c50  20 20 20 20 20 41 44 44  20 48 2c 58 2c 59 0d 21  |     ADD H,X,Y.!|
00003c60  3e 1a 20 20 20 20 20 20  41 44 44 20 4d 2c 48 2c  |>.      ADD M,H,|
00003c70  58 2c 4c 53 4c 20 23 31  0d 21 48 19 20 20 20 20  |X,LSL #1.!H.    |
00003c80  20 20 80 20 4d 2c 4e 2c  4d 2c 4c 53 52 20 23 32  |  . M,N,M,LSR #2|
00003c90  32 0d 21 52 1a 20 20 20  20 20 20 41 44 44 20 43  |2.!R.      ADD C|
00003ca0  2c 43 2c 4d 2c 4c 53 4c  20 23 38 0d 21 5c 19 20  |,C,M,LSL #8.!\. |
00003cb0  20 20 20 20 20 80 20 4d  2c 4e 2c 48 2c 4c 53 52  |     . M,N,H,LSR|
00003cc0  20 23 32 31 0d 21 66 1b  20 20 20 20 20 20 41 44  | #21.!f.      AD|
00003cd0  44 20 43 2c 43 2c 4d 2c  4c 53 4c 20 23 31 36 0d  |D C,C,M,LSL #16.|
00003ce0  21 70 1a 20 20 20 20 20  20 41 44 44 20 4d 2c 48  |!p.      ADD M,H|
00003cf0  2c 59 2c 4c 53 4c 20 23  31 0d 21 7a 19 20 20 20  |,Y,LSL #1.!z.   |
00003d00  20 20 20 80 20 4d 2c 4e  2c 4d 2c 4c 53 52 20 23  |   . M,N,M,LSR #|
00003d10  32 32 0d 21 84 1b 20 20  20 20 20 20 41 44 44 20  |22.!..      ADD |
00003d20  43 2c 43 2c 4d 2c 4c 53  4c 20 23 32 34 0d 21 8e  |C,C,M,LSL #24.!.|
00003d30  1e 20 20 20 20 20 20 53  54 52 20 43 4f 4c 2c 5b  |.      STR COL,[|
00003d40  53 43 52 2c 23 39 36 30  2d 34 5d 0d 21 98 15 20  |SCR,#960-4].!.. |
00003d50  20 20 20 20 20 53 55 42  53 20 49 2c 49 2c 23 31  |     SUBS I,I,#1|
00003d60  0d 21 a2 11 20 20 20 20  42 4e 45 20 6c 6f 6f 70  |.!..    BNE loop|
00003d70  78 0d 21 ac 22 20 20 20  20 41 44 44 20 53 43 52  |x.!."    ADD SCR|
00003d80  2c 53 43 52 2c 23 33 32  30 2d 28 44 4d 31 2d 32  |,SCR,#320-(DM1-2|
00003d90  29 2a 34 0d 21 b6 1a 20  20 20 20 41 44 44 20 53  |)*4.!..    ADD S|
00003da0  43 52 2c 53 43 52 2c 23  33 2a 33 32 30 0d 21 c0  |CR,SCR,#3*320.!.|
00003db0  18 20 20 20 20 53 55 42  20 54 41 42 31 2c 54 41  |.    SUB TAB1,TA|
00003dc0  42 31 2c 23 34 0d 21 ca  24 20 20 20 20 41 44 44  |B1,#4.!.$    ADD|
00003dd0  20 54 41 42 31 2c 54 41  42 31 2c 23 28 38 30 2d  | TAB1,TAB1,#(80-|
00003de0  44 4d 31 2b 31 29 3c 3c  33 0d 21 d4 24 20 20 20  |DM1+1)<<3.!.$   |
00003df0  20 41 44 44 20 54 41 42  32 2c 54 41 42 32 2c 23  | ADD TAB2,TAB2,#|
00003e00  28 38 30 2d 44 4d 31 2b  31 29 3c 3c 33 0d 21 de  |(80-DM1+1)<<3.!.|
00003e10  12 20 20 20 20 41 44 52  20 57 2c 74 6d 70 31 0d  |.    ADR W,tmp1.|
00003e20  21 e8 19 20 20 20 20 4c  44 4d 49 41 20 57 2c 7b  |!..    LDMIA W,{|
00003e30  4a 2c 31 33 2c 31 34 7d  0d 21 f2 13 20 20 20 20  |J,13,14}.!..    |
00003e40  53 55 42 53 20 4a 2c 4a  2c 23 31 0d 21 fc 0f 20  |SUBS J,J,#1.!.. |
00003e50  20 42 4e 45 20 6c 6f 6f  70 79 0d 22 06 0e 4d 4f  | BNE loopy."..MO|
00003e60  56 20 50 43 2c 52 31 34  0d 22 10 04 0d 22 1a 1e  |V PC,R14."..."..|
00003e70  2e 74 6d 70 32 20 45 51  55 44 20 30 3a 45 51 55  |.tmp2 EQUD 0:EQU|
00003e80  44 20 30 3a 45 51 55 44  20 30 0d 22 24 0f 2e 73  |D 0:EQUD 0."$..s|
00003e90  69 6d 75 6c 61 74 69 6f  6e 0d 22 2e 12 20 20 4d  |imulation."..  M|
00003ea0  4f 56 20 4a 2c 23 44 4d  32 2d 32 0d 22 38 19 20  |OV J,#DM2-2."8. |
00003eb0  20 41 44 44 20 54 41 42  31 2c 54 41 42 31 2c 23  | ADD TAB1,TAB1,#|
00003ec0  38 30 2a 38 0d 22 42 19  20 20 41 44 44 20 54 41  |80*8."B.  ADD TA|
00003ed0  42 32 2c 54 41 42 32 2c  23 38 30 2a 38 0d 22 4c  |B2,TAB2,#80*8."L|
00003ee0  0c 20 20 2e 6b 6f 6f 70  79 0d 22 56 14 20 20 20  |.  .koopy."V.   |
00003ef0  20 4d 4f 56 20 49 2c 23  44 4d 31 2d 32 0d 22 60  | MOV I,#DM1-2."`|
00003f00  1b 20 20 20 20 41 44 44  20 54 41 42 31 2c 54 41  |.    ADD TAB1,TA|
00003f10  42 31 2c 23 31 3c 3c 33  0d 22 6a 1b 20 20 20 20  |B1,#1<<3."j.    |
00003f20  41 44 44 20 54 41 42 32  2c 54 41 42 32 2c 23 31  |ADD TAB2,TAB2,#1|
00003f30  3c 3c 33 0d 22 74 12 20  20 20 20 41 44 52 20 57  |<<3."t.    ADR W|
00003f40  2c 74 6d 70 32 0d 22 7e  19 20 20 20 20 53 54 4d  |,tmp2."~.    STM|
00003f50  49 41 20 57 2c 7b 4a 2c  31 33 2c 31 34 7d 0d 22  |IA W,{J,13,14}."|
00003f60  88 19 20 20 20 20 4c 44  52 20 58 31 2c 5b 54 41  |..    LDR X1,[TA|
00003f70  42 31 2c 23 2d 38 5d 0d  22 92 15 20 20 20 20 4c  |B1,#-8]."..    L|
00003f80  44 52 20 59 31 2c 5b 54  41 42 31 5d 0d 22 9c 18  |DR Y1,[TAB1]."..|
00003f90  20 20 20 20 41 44 44 20  54 41 42 31 2c 54 41 42  |    ADD TAB1,TAB|
00003fa0  31 2c 23 34 0d 22 a6 0e  20 20 20 20 2e 6b 6f 6f  |1,#4."..    .koo|
00003fb0  70 78 0d 22 b0 12 20 20  20 20 20 20 4d 4f 56 20  |px."..      MOV |
00003fc0  4f 2c 58 31 0d 22 ba 13  20 20 20 20 20 20 4d 4f  |O,X1."..      MO|
00003fd0  56 20 58 31 2c 59 31 0d  22 c4 1f 20 20 20 20 20  |V X1,Y1."..     |
00003fe0  20 4c 44 52 20 57 2c 5b  54 41 42 31 2c 23 2d 38  | LDR W,[TAB1,#-8|
00003ff0  30 2a 38 2d 34 5d 0d 22  ce 1f 20 20 20 20 20 20  |0*8-4]."..      |
00004000  4c 44 52 20 58 32 2c 5b  54 41 42 31 2c 23 38 30  |LDR X2,[TAB1,#80|
00004010  2a 38 2d 34 5d 0d 22 d8  1e 20 20 20 20 20 20 4c  |*8-4]."..      L|
00004020  44 4d 49 41 20 28 54 41  42 31 29 21 2c 7b 56 2c  |DMIA (TAB1)!,{V,|
00004030  59 31 7d 0d 22 e2 14 20  20 20 20 20 20 41 44 44  |Y1}."..      ADD|
00004040  20 4f 2c 4f 2c 59 31 0d  22 ec 13 20 20 20 20 20  | O,O,Y1."..     |
00004050  20 41 44 44 20 4f 2c 4f  2c 57 0d 22 f6 14 20 20  | ADD O,O,W."..  |
00004060  20 20 20 20 41 44 44 20  4f 2c 4f 2c 58 32 0d 23  |    ADD O,O,X2.#|
00004070  00 1b 20 20 20 20 20 20  53 55 42 20 4f 2c 4f 2c  |..      SUB O,O,|
00004080  58 31 2c 4c 53 4c 20 23  32 0d 23 0a 1d 20 20 20  |X1,LSL #2.#..   |
00004090  20 20 20 53 55 42 20 56  2c 56 2c 56 2c 41 53 52  |   SUB V,V,V,ASR|
000040a0  20 23 44 41 4d 50 0d 23  14 1d 20 20 20 20 20 20  | #DAMP.#..      |
000040b0  41 44 44 20 56 2c 56 2c  4f 2c 41 53 52 20 23 50  |ADD V,V,O,ASR #P|
000040c0  52 4f 50 0d 23 1e 14 20  20 20 20 20 20 41 44 44  |ROP.#..      ADD|
000040d0  20 4f 2c 58 31 2c 56 0d  23 28 1d 20 20 20 20 20  | O,X1,V.#(.     |
000040e0  20 53 54 4d 49 41 20 28  54 41 42 32 29 21 2c 7b  | STMIA (TAB2)!,{|
000040f0  4f 2c 56 7d 0d 23 32 15  20 20 20 20 20 20 53 55  |O,V}.#2.      SU|
00004100  42 53 20 49 2c 49 2c 23  31 0d 23 3c 11 20 20 20  |BS I,I,#1.#<.   |
00004110  20 42 4e 45 20 6b 6f 6f  70 78 0d 23 46 18 20 20  | BNE koopx.#F.  |
00004120  20 20 53 55 42 20 54 41  42 31 2c 54 41 42 31 2c  |  SUB TAB1,TAB1,|
00004130  23 34 0d 23 50 24 20 20  20 20 41 44 44 20 54 41  |#4.#P$    ADD TA|
00004140  42 31 2c 54 41 42 31 2c  23 28 38 30 2d 44 4d 31  |B1,TAB1,#(80-DM1|
00004150  2b 31 29 3c 3c 33 0d 23  5a 24 20 20 20 20 41 44  |+1)<<3.#Z$    AD|
00004160  44 20 54 41 42 32 2c 54  41 42 32 2c 23 28 38 30  |D TAB2,TAB2,#(80|
00004170  2d 44 4d 31 2b 31 29 3c  3c 33 0d 23 64 12 20 20  |-DM1+1)<<3.#d.  |
00004180  20 20 41 44 52 20 57 2c  74 6d 70 32 0d 23 6e 19  |  ADR W,tmp2.#n.|
00004190  20 20 20 20 4c 44 4d 49  41 20 57 2c 7b 4a 2c 31  |    LDMIA W,{J,1|
000041a0  33 2c 31 34 7d 0d 23 78  13 20 20 20 20 53 55 42  |3,14}.#x.    SUB|
000041b0  53 20 4a 2c 4a 2c 23 31  0d 23 82 0f 20 20 42 4e  |S J,J,#1.#..  BN|
000041c0  45 20 6b 6f 6f 70 79 0d  23 8c 0e 4d 4f 56 20 50  |E koopy.#..MOV P|
000041d0  43 2c 52 31 34 0d 23 96  04 0d 23 a0 0f 2e 72 65  |C,R14.#...#...re|
000041e0  63 69 70 72 6f 63 61 6c  0d 23 aa 0a 20 a4 66 69  |ciprocal.#.. .fi|
000041f0  6c 6c 0d 23 b4 1f 2e 72  65 63 69 70 72 61 64 64  |ll.#...recipradd|
00004200  72 20 45 51 55 44 20 72  65 63 69 70 72 6f 63 61  |r EQUD reciproca|
00004210  6c 0d 23 be 10 2e 74 6d  70 35 20 45 51 55 44 20  |l.#...tmp5 EQUD |
00004220  30 0d 23 c8 10 2e 77 69  72 65 64 69 73 70 6c 61  |0.#...wiredispla|
00004230  79 0d 23 d2 12 20 20 4d  4f 56 20 43 4f 4c 2c 23  |y.#..  MOV COL,#|
00004240  32 35 35 0d 23 dc 12 20  20 4d 4f 56 20 4a 2c 23  |255.#..  MOV J,#|
00004250  44 4d 32 2d 32 0d 23 e6  17 20 20 4c 44 52 20 41  |DM2-2.#..  LDR A|
00004260  44 2c 72 65 63 69 70 72  61 64 64 72 0d 23 f0 14  |D,recipraddr.#..|
00004270  20 20 4c 44 52 20 43 54  2c 63 74 61 62 6c 65 64  |  LDR CT,ctabled|
00004280  0d 23 fa 19 20 20 41 44  44 20 54 41 42 31 2c 54  |.#..  ADD TAB1,T|
00004290  41 42 31 2c 23 38 30 2a  38 0d 24 04 0e 20 20 4d  |AB1,#80*8.$..  M|
000042a0  4f 56 20 54 2c 23 31 0d  24 0e 14 20 20 4d 4f 56  |OV T,#1.$..  MOV|
000042b0  20 5a 2c 54 2c 4c 53 4c  20 23 32 0d 24 18 19 20  | Z,T,LSL #2.$.. |
000042c0  20 4c 44 52 20 5a 2c 5b  41 44 2c 5a 2c 4c 53 4c  | LDR Z,[AD,Z,LSL|
000042d0  20 23 32 5d 0d 24 22 0e  20 20 4d 4f 56 20 58 2c  | #2].$".  MOV X,|
000042e0  23 34 0d 24 2c 18 20 20  53 55 42 20 58 2c 58 2c  |#4.$,.  SUB X,X,|
000042f0  23 44 4d 31 2a 32 2a 31  2e 35 0d 24 36 0f 20 20  |#DM1*2*1.5.$6.  |
00004300  4d 55 4c 20 58 2c 5a 2c  58 0d 24 40 10 20 20 53  |MUL X,Z,X.$@.  S|
00004310  54 52 20 58 2c 74 6d 70  35 0d 24 4a 0c 20 20 2e  |TR X,tmp5.$J.  .|
00004320  6e 6f 6f 70 79 0d 24 54  14 20 20 20 20 4d 4f 56  |noopy.$T.    MOV|
00004330  20 49 2c 23 44 4d 31 2d  32 0d 24 5e 1b 20 20 20  | I,#DM1-2.$^.   |
00004340  20 41 44 44 20 54 41 42  31 2c 54 41 42 31 2c 23  | ADD TAB1,TAB1,#|
00004350  31 3c 3c 33 0d 24 68 16  20 20 20 20 4d 4f 56 20  |1<<3.$h.    MOV |
00004360  5a 2c 4a 2c 4c 53 4c 20  23 32 0d 24 72 1b 20 20  |Z,J,LSL #2.$r.  |
00004370  20 20 4c 44 52 20 5a 2c  5b 41 44 2c 5a 2c 4c 53  |  LDR Z,[AD,Z,LS|
00004380  4c 20 23 32 5d 0d 24 7c  10 20 20 20 20 4d 4f 56  |L #2].$|.    MOV|
00004390  20 58 2c 23 34 0d 24 86  1a 20 20 20 20 53 55 42  | X,#4.$..    SUB|
000043a0  20 58 2c 58 2c 23 44 4d  31 2a 32 2a 31 2e 35 0d  | X,X,#DM1*2*1.5.|
000043b0  24 90 11 20 20 20 20 4d  55 4c 20 58 2c 5a 2c 58  |$..    MUL X,Z,X|
000043c0  0d 24 9a 12 20 20 20 20  4c 44 52 20 54 2c 74 6d  |.$..    LDR T,tm|
000043d0  70 35 0d 24 a4 11 20 20  20 20 53 55 42 20 58 2c  |p5.$..    SUB X,|
000043e0  58 2c 54 0d 24 ae 0e 20  20 20 20 2e 6e 6f 6f 70  |X,T.$..    .noop|
000043f0  78 0d 24 b8 1e 20 20 20  20 20 20 4c 44 4d 49 41  |x.$..      LDMIA|
00004400  20 28 54 41 42 31 29 21  2c 7b 58 31 2c 56 7d 0d  | (TAB1)!,{X1,V}.|
00004410  24 c2 1c 20 20 20 20 20  20 53 55 42 20 59 2c 58  |$..      SUB Y,X|
00004420  31 2c 23 42 41 53 45 3c  3c 32 30 0d 24 cc 19 20  |1,#BASE<<20.$.. |
00004430  20 20 20 20 20 4d 4f 56  20 59 2c 59 2c 41 53 52  |     MOV Y,Y,ASR|
00004440  20 23 32 31 0d 24 d6 1a  20 20 20 20 20 20 41 44  | #21.$..      AD|
00004450  44 20 59 2c 59 2c 4a 2c  4c 53 4c 20 23 32 0d 24  |D Y,Y,J,LSL #2.$|
00004460  e0 13 20 20 20 20 20 20  4d 55 4c 20 59 2c 5a 2c  |..      MUL Y,Z,|
00004470  59 0d 24 ea 18 20 20 20  20 20 20 4d 4f 56 20 59  |Y.$..      MOV Y|
00004480  2c 59 2c 41 53 52 20 23  39 0d 24 f4 15 20 20 20  |,Y,ASR #9.$..   |
00004490  20 20 20 41 44 44 20 59  2c 59 2c 23 36 30 0d 24  |   ADD Y,Y,#60.$|
000044a0  fe 16 20 20 20 20 20 20  52 53 42 20 59 2c 59 2c  |..      RSB Y,Y,|
000044b0  23 32 35 35 0d 25 08 1a  20 20 20 20 20 20 41 44  |#255.%..      AD|
000044c0  44 20 54 2c 59 2c 59 2c  4c 53 4c 20 23 32 0d 25  |D T,Y,Y,LSL #2.%|
000044d0  12 18 20 20 20 20 20 20  4d 4f 56 20 54 2c 54 2c  |..      MOV T,T,|
000044e0  4c 53 4c 20 23 36 0d 25  1c 1a 20 20 20 20 20 20  |LSL #6.%..      |
000044f0  41 44 44 20 54 2c 54 2c  58 2c 41 53 52 20 23 39  |ADD T,T,X,ASR #9|
00004500  0d 25 26 18 20 20 20 20  20 20 43 4d 50 20 54 2c  |.%&.      CMP T,|
00004510  23 33 32 30 2a 32 35 36  0d 25 30 1d 20 20 20 20  |#320*256.%0.    |
00004520  20 20 53 54 52 4c 4f 42  20 43 4f 4c 2c 5b 54 2c  |  STRLOB COL,[T,|
00004530  53 43 52 5d 21 0d 25 3a  1a 20 20 20 20 20 20 41  |SCR]!.%:.      A|
00004540  44 44 20 58 2c 58 2c 5a  2c 4c 53 4c 20 23 32 0d  |DD X,X,Z,LSL #2.|
00004550  25 44 15 20 20 20 20 20  20 53 55 42 53 20 49 2c  |%D.      SUBS I,|
00004560  49 2c 23 31 0d 25 4e 11  20 20 20 20 42 4e 45 20  |I,#1.%N.    BNE |
00004570  6e 6f 6f 70 78 0d 25 58  24 20 20 20 20 41 44 44  |noopx.%X$    ADD|
00004580  20 54 41 42 31 2c 54 41  42 31 2c 23 28 38 30 2d  | TAB1,TAB1,#(80-|
00004590  44 4d 31 2b 31 29 3c 3c  33 0d 25 62 13 20 20 20  |DM1+1)<<3.%b.   |
000045a0  20 53 55 42 53 20 4a 2c  4a 2c 23 31 0d 25 6c 0f  | SUBS J,J,#1.%l.|
000045b0  20 20 42 4e 45 20 6e 6f  6f 70 79 0d 25 76 0e 4d  |  BNE noopy.%v.M|
000045c0  4f 56 20 50 43 2c 52 31  34 0d 25 80 04 0d 25 8a  |OV PC,R14.%...%.|
000045d0  12 2e 77 69 72 65 64 69  73 70 6c 61 79 63 74 0d  |..wiredisplayct.|
000045e0  25 94 12 20 20 4d 4f 56  20 4a 2c 23 44 4d 32 2d  |%..  MOV J,#DM2-|
000045f0  32 0d 25 9e 17 20 20 4c  44 52 20 41 44 2c 72 65  |2.%..  LDR AD,re|
00004600  63 69 70 72 61 64 64 72  0d 25 a8 14 20 20 4c 44  |cipraddr.%..  LD|
00004610  52 20 43 54 2c 63 74 61  62 6c 65 64 0d 25 b2 19  |R CT,ctabled.%..|
00004620  20 20 41 44 44 20 54 41  42 31 2c 54 41 42 31 2c  |  ADD TAB1,TAB1,|
00004630  23 38 30 2a 38 0d 25 bc  0e 20 20 4d 4f 56 20 54  |#80*8.%..  MOV T|
00004640  2c 23 31 0d 25 c6 14 20  20 4d 4f 56 20 5a 2c 54  |,#1.%..  MOV Z,T|
00004650  2c 4c 53 4c 20 23 32 0d  25 d0 19 20 20 4c 44 52  |,LSL #2.%..  LDR|
00004660  20 5a 2c 5b 41 44 2c 5a  2c 4c 53 4c 20 23 32 5d  | Z,[AD,Z,LSL #2]|
00004670  0d 25 da 0e 20 20 4d 4f  56 20 58 2c 23 34 0d 25  |.%..  MOV X,#4.%|
00004680  e4 18 20 20 53 55 42 20  58 2c 58 2c 23 44 4d 31  |..  SUB X,X,#DM1|
00004690  2a 32 2a 31 2e 35 0d 25  ee 0f 20 20 4d 55 4c 20  |*2*1.5.%..  MUL |
000046a0  58 2c 5a 2c 58 0d 25 f8  10 20 20 53 54 52 20 58  |X,Z,X.%..  STR X|
000046b0  2c 74 6d 70 35 0d 26 02  0c 20 20 2e 6d 6f 6f 70  |,tmp5.&..  .moop|
000046c0  79 0d 26 0c 14 20 20 20  20 4d 4f 56 20 49 2c 23  |y.&..    MOV I,#|
000046d0  44 4d 31 2d 32 0d 26 16  1b 20 20 20 20 41 44 44  |DM1-2.&..    ADD|
000046e0  20 54 41 42 31 2c 54 41  42 31 2c 23 31 3c 3c 33  | TAB1,TAB1,#1<<3|
000046f0  0d 26 20 16 20 20 20 20  4d 4f 56 20 5a 2c 4a 2c  |.& .    MOV Z,J,|
00004700  4c 53 4c 20 23 32 0d 26  2a 1b 20 20 20 20 4c 44  |LSL #2.&*.    LD|
00004710  52 20 5a 2c 5b 41 44 2c  5a 2c 4c 53 4c 20 23 32  |R Z,[AD,Z,LSL #2|
00004720  5d 0d 26 34 10 20 20 20  20 4d 4f 56 20 58 2c 23  |].&4.    MOV X,#|
00004730  34 0d 26 3e 1a 20 20 20  20 53 55 42 20 58 2c 58  |4.&>.    SUB X,X|
00004740  2c 23 44 4d 31 2a 32 2a  31 2e 35 0d 26 48 11 20  |,#DM1*2*1.5.&H. |
00004750  20 20 20 4d 55 4c 20 58  2c 5a 2c 58 0d 26 52 12  |   MUL X,Z,X.&R.|
00004760  20 20 20 20 4c 44 52 20  54 2c 74 6d 70 35 0d 26  |    LDR T,tmp5.&|
00004770  5c 11 20 20 20 20 53 55  42 20 58 2c 58 2c 54 0d  |\.    SUB X,X,T.|
00004780  26 66 0e 20 20 20 20 2e  6d 6f 6f 70 78 0d 26 70  |&f.    .moopx.&p|
00004790  1e 20 20 20 20 20 20 4c  44 4d 49 41 20 28 54 41  |.      LDMIA (TA|
000047a0  42 31 29 21 2c 7b 58 31  2c 56 7d 0d 26 7a 1c 20  |B1)!,{X1,V}.&z. |
000047b0  20 20 20 20 20 53 55 42  20 59 2c 58 31 2c 23 42  |     SUB Y,X1,#B|
000047c0  41 53 45 3c 3c 32 30 0d  26 84 19 20 20 20 20 20  |ASE<<20.&..     |
000047d0  20 4d 4f 56 20 59 2c 59  2c 41 53 52 20 23 32 31  | MOV Y,Y,ASR #21|
000047e0  0d 26 8e 1a 20 20 20 20  20 20 41 44 44 20 59 2c  |.&..      ADD Y,|
000047f0  59 2c 4a 2c 4c 53 4c 20  23 32 0d 26 98 13 20 20  |Y,J,LSL #2.&..  |
00004800  20 20 20 20 4d 55 4c 20  59 2c 5a 2c 59 0d 26 a2  |    MUL Y,Z,Y.&.|
00004810  18 20 20 20 20 20 20 4d  4f 56 20 59 2c 59 2c 41  |.      MOV Y,Y,A|
00004820  53 52 20 23 39 0d 26 ac  15 20 20 20 20 20 20 41  |SR #9.&..      A|
00004830  44 44 20 59 2c 59 2c 23  36 30 0d 26 b6 16 20 20  |DD Y,Y,#60.&..  |
00004840  20 20 20 20 52 53 42 20  59 2c 59 2c 23 32 35 35  |    RSB Y,Y,#255|
00004850  0d 26 c0 1a 20 20 20 20  20 20 41 44 44 20 54 2c  |.&..      ADD T,|
00004860  59 2c 59 2c 4c 53 4c 20  23 32 0d 26 ca 18 20 20  |Y,Y,LSL #2.&..  |
00004870  20 20 20 20 4d 4f 56 20  54 2c 54 2c 4c 53 4c 20  |    MOV T,T,LSL |
00004880  23 36 0d 26 d4 1a 20 20  20 20 20 20 41 44 44 20  |#6.&..      ADD |
00004890  54 2c 54 2c 58 2c 41 53  52 20 23 39 0d 26 de 18  |T,T,X,ASR #9.&..|
000048a0  20 20 20 20 20 20 43 4d  50 20 54 2c 23 33 32 30  |      CMP T,#320|
000048b0  2a 32 35 36 0d 26 e8 1a  20 20 20 20 20 20 80 20  |*256.&..      . |
000048c0  58 31 2c 58 31 2c 23 32  35 35 3c 3c 32 30 0d 26  |X1,X1,#255<<20.&|
000048d0  f2 24 20 20 20 20 20 20  4c 44 52 4c 4f 42 20 43  |.$      LDRLOB C|
000048e0  4f 4c 2c 5b 43 54 2c 58  31 2c 4c 53 52 20 23 32  |OL,[CT,X1,LSR #2|
000048f0  30 5d 0d 26 fc 1d 20 20  20 20 20 20 53 54 52 4c  |0].&..      STRL|
00004900  4f 42 20 43 4f 4c 2c 5b  54 2c 53 43 52 5d 21 0d  |OB COL,[T,SCR]!.|
00004910  27 06 1a 20 20 20 20 20  20 41 44 44 20 58 2c 58  |'..      ADD X,X|
00004920  2c 5a 2c 4c 53 4c 20 23  32 0d 27 10 15 20 20 20  |,Z,LSL #2.'..   |
00004930  20 20 20 53 55 42 53 20  49 2c 49 2c 23 31 0d 27  |   SUBS I,I,#1.'|
00004940  1a 11 20 20 20 20 42 4e  45 20 6d 6f 6f 70 78 0d  |..    BNE moopx.|
00004950  27 24 24 20 20 20 20 41  44 44 20 54 41 42 31 2c  |'$$    ADD TAB1,|
00004960  54 41 42 31 2c 23 28 38  30 2d 44 4d 31 2b 31 29  |TAB1,#(80-DM1+1)|
00004970  3c 3c 33 0d 27 2e 13 20  20 20 20 53 55 42 53 20  |<<3.'..    SUBS |
00004980  4a 2c 4a 2c 23 31 0d 27  38 0f 20 20 42 4e 45 20  |J,J,#1.'8.  BNE |
00004990  6d 6f 6f 70 79 0d 27 42  0e 4d 4f 56 20 50 43 2c  |moopy.'B.MOV PC,|
000049a0  52 31 34 0d 27 4c 04 0d  27 56 18 2e 63 74 61 62  |R14.'L..'V..ctab|
000049b0  6c 65 64 20 45 51 55 44  20 43 54 41 42 4c 45 0d  |led EQUD CTABLE.|
000049c0  27 60 10 2e 74 6d 70 34  20 45 51 55 44 20 30 0d  |'`..tmp4 EQUD 0.|
000049d0  27 6a 17 2e 63 6f 75 6c  6f 72 5f 74 72 61 6e 73  |'j..coulor_trans|
000049e0  6c 61 74 69 6f 6e 0d 27  74 10 20 20 53 54 52 20  |lation.'t.  STR |
000049f0  48 2c 74 6d 70 34 0d 27  7e 0f 20 20 4d 4f 56 20  |H,tmp4.'~.  MOV |
00004a00  58 2c 23 58 57 0d 27 88  0f 20 20 4d 4f 56 20 59  |X,#XW.'..  MOV Y|
00004a10  2c 23 59 57 0d 27 92 16  20 20 41 44 44 20 54 2c  |,#YW.'..  ADD T,|
00004a20  59 2c 59 2c 4c 53 4c 20  23 32 0d 27 9c 16 20 20  |Y,Y,LSL #2.'..  |
00004a30  41 44 44 20 54 2c 58 2c  54 2c 4c 53 4c 20 23 36  |ADD T,X,T,LSL #6|
00004a40  0d 27 a6 13 20 20 41 44  44 20 53 43 52 2c 53 43  |.'..  ADD SCR,SC|
00004a50  52 2c 54 0d 27 b0 13 20  20 4c 44 52 20 57 2c 63  |R,T.'..  LDR W,c|
00004a60  74 61 62 6c 65 64 0d 27  ba 10 20 20 4d 4f 56 20  |tabled.'..  MOV |
00004a70  48 2c 23 32 35 35 0d 27  c4 0f 20 20 4d 56 4e 20  |H,#255.'..  MVN |
00004a80  43 34 2c 23 31 0d 27 ce  16 20 20 4d 4f 56 20 4a  |C4,#1.'..  MOV J|
00004a90  2c 23 34 2a 28 44 4d 32  2d 32 29 0d 27 d8 0b 20  |,#4*(DM2-2).'.. |
00004aa0  20 2e 67 6c 70 32 0d 27  e2 14 20 20 20 20 4d 4f  | .glp2.'..    MO|
00004ab0  56 20 49 2c 23 44 4d 31  2d 32 0d 27 ec 0d 20 20  |V I,#DM1-2.'..  |
00004ac0  20 20 2e 67 6c 70 31 0d  27 f6 1b 20 20 20 20 20  |  .glp1.'..     |
00004ad0  20 4c 44 4d 49 41 20 53  43 52 2c 7b 4f 43 2c 4f  | LDMIA SCR,{OC,O|
00004ae0  4b 7d 0d 28 00 13 20 20  20 20 20 20 80 20 43 31  |K}.(..      . C1|
00004af0  2c 48 2c 4f 43 0d 28 0a  1a 20 20 20 20 20 20 80  |,H,OC.(..      .|
00004b00  20 43 32 2c 48 2c 4f 43  2c 4c 53 52 20 23 38 0d  | C2,H,OC,LSR #8.|
00004b10  28 14 1b 20 20 20 20 20  20 80 20 43 33 2c 48 2c  |(..      . C3,H,|
00004b20  4f 43 2c 4c 53 52 20 23  31 36 0d 28 1e 13 20 20  |OC,LSR #16.(..  |
00004b30  20 20 20 20 43 4d 50 20  43 34 2c 43 31 0d 28 28  |    CMP C4,C1.((|
00004b40  1b 20 20 20 20 20 20 80  20 43 34 2c 48 2c 4f 43  |.      . C4,H,OC|
00004b50  2c 4c 53 52 20 23 32 34  0d 28 32 19 20 20 20 20  |,LSR #24.(2.    |
00004b60  20 20 4c 44 52 4e 45 42  20 54 2c 5b 57 2c 43 31  |  LDRNEB T,[W,C1|
00004b70  5d 0d 28 3c 12 20 20 20  20 20 20 4d 4f 56 20 4e  |].(<.      MOV N|
00004b80  43 2c 54 0d 28 46 13 20  20 20 20 20 20 43 4d 50  |C,T.(F.      CMP|
00004b90  20 43 31 2c 43 32 0d 28  50 19 20 20 20 20 20 20  | C1,C2.(P.      |
00004ba0  4c 44 52 4e 45 42 20 54  2c 5b 57 2c 43 32 5d 0d  |LDRNEB T,[W,C2].|
00004bb0  28 5a 1c 20 20 20 20 20  20 41 44 44 20 4e 43 2c  |(Z.      ADD NC,|
00004bc0  4e 43 2c 54 2c 4c 53 4c  20 23 38 0d 28 64 13 20  |NC,T,LSL #8.(d. |
00004bd0  20 20 20 20 20 43 4d 50  20 43 32 2c 43 33 0d 28  |     CMP C2,C3.(|
00004be0  6e 19 20 20 20 20 20 20  4c 44 52 4e 45 42 20 54  |n.      LDRNEB T|
00004bf0  2c 5b 57 2c 43 33 5d 0d  28 78 1d 20 20 20 20 20  |,[W,C3].(x.     |
00004c00  20 41 44 44 20 4e 43 2c  4e 43 2c 54 2c 4c 53 4c  | ADD NC,NC,T,LSL|
00004c10  20 23 31 36 0d 28 82 13  20 20 20 20 20 20 43 4d  | #16.(..      CM|
00004c20  50 20 43 33 2c 43 34 0d  28 8c 19 20 20 20 20 20  |P C3,C4.(..     |
00004c30  20 4c 44 52 4e 45 42 20  54 2c 5b 57 2c 43 34 5d  | LDRNEB T,[W,C4]|
00004c40  0d 28 96 1d 20 20 20 20  20 20 41 44 44 20 4e 43  |.(..      ADD NC|
00004c50  2c 4e 43 2c 54 2c 4c 53  4c 20 23 32 34 0d 28 a0  |,NC,T,LSL #24.(.|
00004c60  13 20 20 20 20 20 20 80  20 43 31 2c 48 2c 4f 4b  |.      . C1,H,OK|
00004c70  0d 28 aa 1a 20 20 20 20  20 20 80 20 43 32 2c 48  |.(..      . C2,H|
00004c80  2c 4f 4b 2c 4c 53 52 20  23 38 0d 28 b4 1b 20 20  |,OK,LSR #8.(..  |
00004c90  20 20 20 20 80 20 43 33  2c 48 2c 4f 4b 2c 4c 53  |    . C3,H,OK,LS|
00004ca0  52 20 23 31 36 0d 28 be  13 20 20 20 20 20 20 43  |R #16.(..      C|
00004cb0  4d 50 20 43 34 2c 43 31  0d 28 c8 1b 20 20 20 20  |MP C4,C1.(..    |
00004cc0  20 20 80 20 43 34 2c 48  2c 4f 4b 2c 4c 53 52 20  |  . C4,H,OK,LSR |
00004cd0  23 32 34 0d 28 d2 19 20  20 20 20 20 20 4c 44 52  |#24.(..      LDR|
00004ce0  4e 45 42 20 54 2c 5b 57  2c 43 31 5d 0d 28 dc 12  |NEB T,[W,C1].(..|
00004cf0  20 20 20 20 20 20 4d 4f  56 20 4e 4b 2c 54 0d 28  |      MOV NK,T.(|
00004d00  e6 13 20 20 20 20 20 20  43 4d 50 20 43 31 2c 43  |..      CMP C1,C|
00004d10  32 0d 28 f0 19 20 20 20  20 20 20 4c 44 52 4e 45  |2.(..      LDRNE|
00004d20  42 20 54 2c 5b 57 2c 43  32 5d 0d 28 fa 1c 20 20  |B T,[W,C2].(..  |
00004d30  20 20 20 20 41 44 44 20  4e 4b 2c 4e 4b 2c 54 2c  |    ADD NK,NK,T,|
00004d40  4c 53 4c 20 23 38 0d 29  04 13 20 20 20 20 20 20  |LSL #8.)..      |
00004d50  43 4d 50 20 43 32 2c 43  33 0d 29 0e 19 20 20 20  |CMP C2,C3.)..   |
00004d60  20 20 20 4c 44 52 4e 45  42 20 54 2c 5b 57 2c 43  |   LDRNEB T,[W,C|
00004d70  33 5d 0d 29 18 1d 20 20  20 20 20 20 41 44 44 20  |3].)..      ADD |
00004d80  4e 4b 2c 4e 4b 2c 54 2c  4c 53 4c 20 23 31 36 0d  |NK,NK,T,LSL #16.|
00004d90  29 22 13 20 20 20 20 20  20 43 4d 50 20 43 33 2c  |)".      CMP C3,|
00004da0  43 34 0d 29 2c 19 20 20  20 20 20 20 4c 44 52 4e  |C4.),.      LDRN|
00004db0  45 42 20 54 2c 5b 57 2c  43 34 5d 0d 29 36 1d 20  |EB T,[W,C4].)6. |
00004dc0  20 20 20 20 20 41 44 44  20 4e 4b 2c 4e 4b 2c 54  |     ADD NK,NK,T|
00004dd0  2c 4c 53 4c 20 23 32 34  0d 29 40 1e 20 20 20 20  |,LSL #24.)@.    |
00004de0  20 20 53 54 4d 49 41 20  28 53 43 52 29 21 2c 7b  |  STMIA (SCR)!,{|
00004df0  4e 43 2c 4e 4b 7d 0d 29  4a 15 20 20 20 20 20 20  |NC,NK}.)J.      |
00004e00  53 55 42 53 20 49 2c 49  2c 23 32 0d 29 54 10 20  |SUBS I,I,#2.)T. |
00004e10  20 20 20 42 48 49 20 67  6c 70 31 0d 29 5e 29 20  |   BHI glp1.)^) |
00004e20  20 20 20 41 44 44 20 53  43 52 2c 53 43 52 2c 23  |   ADD SCR,SCR,#|
00004e30  33 32 30 2d 28 28 44 4d  31 2b 31 29 80 ac 31 29  |320-((DM1+1)..1)|
00004e40  2a 34 2b 38 0d 29 68 13  20 20 20 20 53 55 42 53  |*4+8.)h.    SUBS|
00004e50  20 4a 2c 4a 2c 23 31 0d  29 72 0e 20 20 42 48 49  | J,J,#1.)r.  BHI|
00004e60  20 67 6c 70 32 0d 29 7c  10 20 20 4c 44 52 20 48  | glp2.)|.  LDR H|
00004e70  2c 74 6d 70 34 0d 29 86  0e 4d 4f 56 20 50 43 2c  |,tmp4.)..MOV PC,|
00004e80  52 31 34 0d 29 90 04 0d  29 9a 09 2e 69 6e 69 74  |R14.)...)...init|
00004e90  0d 29 a4 10 20 20 41 44  52 20 57 2c 78 74 61 62  |.)..  ADR W,xtab|
00004ea0  0d 29 ae 14 20 20 4d 4f  56 20 49 2c 23 36 34 2a  |.)..  MOV I,#64*|
00004eb0  38 30 2a 32 0d 29 b8 15  20 20 4d 4f 56 20 54 2c  |80*2.)..  MOV T,|
00004ec0  23 42 41 53 45 3c 3c 32  30 0d 29 c2 14 20 20 53  |#BASE<<20.)..  S|
00004ed0  55 42 20 54 2c 54 2c 23  31 3c 3c 31 39 0d 29 cc  |UB T,T,#1<<19.).|
00004ee0  0e 20 20 4d 4f 56 20 56  2c 23 30 0d 29 d6 0d 20  |.  MOV V,#0.).. |
00004ef0  20 20 20 2e 6c 6f 70 32  0d 29 e0 18 20 20 20 20  |   .lop2.)..    |
00004f00  53 54 4d 49 41 20 28 57  29 21 2c 7b 54 2c 56 7d  |STMIA (W)!,{T,V}|
00004f10  0d 29 ea 13 20 20 20 20  53 55 42 53 20 49 2c 49  |.)..    SUBS I,I|
00004f20  2c 23 31 0d 29 f4 0e 20  20 42 4e 45 20 6c 6f 70  |,#1.)..  BNE lop|
00004f30  32 0d 29 fe 0e 4d 4f 56  20 50 43 2c 52 31 34 0d  |2.)..MOV PC,R14.|
00004f40  2a 08 04 0d 2a 12 0c 2e  6e 65 77 62 61 73 65 0d  |*...*...newbase.|
00004f50  2a 1c 10 20 20 41 44 52  20 57 2c 78 74 61 62 0d  |*..  ADR W,xtab.|
00004f60  2a 26 14 20 20 4d 4f 56  20 49 2c 23 36 34 2a 38  |*&.  MOV I,#64*8|
00004f70  30 2a 32 0d 2a 30 0d 20  20 20 20 2e 6c 6f 70 32  |0*2.*0.    .lop2|
00004f80  0d 2a 3a 15 20 20 20 20  4c 44 4d 49 41 20 57 2c  |.*:.    LDMIA W,|
00004f90  7b 54 2c 56 7d 0d 2a 44  19 20 20 20 20 53 55 42  |{T,V}.*D.    SUB|
00004fa0  20 54 2c 54 2c 23 42 41  53 45 3c 3c 32 30 0d 2a  | T,T,#BASE<<20.*|
00004fb0  4e 19 20 20 20 20 41 44  44 20 54 2c 54 2c 4a 2c  |N.    ADD T,T,J,|
00004fc0  4c 53 4c 20 23 32 30 0d  2a 58 18 20 20 20 20 53  |LSL #20.*X.    S|
00004fd0  54 4d 49 41 20 28 57 29  21 2c 7b 54 2c 56 7d 0d  |TMIA (W)!,{T,V}.|
00004fe0  2a 62 13 20 20 20 20 53  55 42 53 20 49 2c 49 2c  |*b.    SUBS I,I,|
00004ff0  23 31 0d 2a 6c 0e 20 20  42 4e 45 20 6c 6f 70 32  |#1.*l.  BNE lop2|
00005000  0d 2a 76 0e 4d 4f 56 20  50 43 2c 52 31 34 0d 2a  |.*v.MOV PC,R14.*|
00005010  80 04 0d 2a 8a 1b 2e 73  63 72 6e 31 20 45 51 55  |...*...scrn1 EQU|
00005020  44 20 31 34 38 3a 45 51  55 44 20 2d 31 0d 2a 94  |D 148:EQUD -1.*.|
00005030  11 2e 73 63 72 6e 32 20  45 51 55 44 20 30 0d 2a  |..scrn2 EQUD 0.*|
00005040  9e 0b 2e 69 6e 63 6f 70  79 0d 2a a8 12 20 20 41  |...incopy.*..  A|
00005050  44 52 20 52 30 2c 73 63  72 6e 31 0d 2a b2 12 20  |DR R0,scrn1.*.. |
00005060  20 41 44 52 20 52 31 2c  73 63 72 6e 32 0d 2a bc  | ADR R1,scrn2.*.|
00005070  1f 20 20 53 57 49 20 22  4f 53 5f 52 65 61 64 56  |.  SWI "OS_ReadV|
00005080  64 75 56 61 72 69 61 62  6c 65 73 22 0d 2a c6 14  |duVariables".*..|
00005090  20 20 4c 44 52 20 44 45  53 54 2c 73 63 72 6e 32  |  LDR DEST,scrn2|
000050a0  0d 2a d0 13 20 20 41 44  52 20 53 4f 55 52 2c 78  |.*..  ADR SOUR,x|
000050b0  74 61 62 0d 2a da 1b 20  20 4d 4f 56 20 43 4f 2c  |tab.*..  MOV CO,|
000050c0  23 33 32 30 2a 32 35 36  2f 34 2f 38 2f 34 0d 2a  |#320*256/4/8/4.*|
000050d0  e4 0c 20 20 2e 6c 6f 6f  70 69 0d 2a ee 1b 20 20  |..  .loopi.*..  |
000050e0  20 20 4c 44 4d 49 41 20  28 53 4f 55 52 29 21 2c  |  LDMIA (SOUR)!,|
000050f0  7b 30 2d 37 7d 0d 2a f8  1b 20 20 20 20 53 54 4d  |{0-7}.*..    STM|
00005100  49 41 20 28 44 45 53 54  29 21 2c 7b 30 2d 37 7d  |IA (DEST)!,{0-7}|
00005110  0d 2b 02 1b 20 20 20 20  4c 44 4d 49 41 20 28 53  |.+..    LDMIA (S|
00005120  4f 55 52 29 21 2c 7b 30  2d 37 7d 0d 2b 0c 1b 20  |OUR)!,{0-7}.+.. |
00005130  20 20 20 53 54 4d 49 41  20 28 44 45 53 54 29 21  |   STMIA (DEST)!|
00005140  2c 7b 30 2d 37 7d 0d 2b  16 1b 20 20 20 20 4c 44  |,{0-7}.+..    LD|
00005150  4d 49 41 20 28 53 4f 55  52 29 21 2c 7b 30 2d 37  |MIA (SOUR)!,{0-7|
00005160  7d 0d 2b 20 1b 20 20 20  20 53 54 4d 49 41 20 28  |}.+ .    STMIA (|
00005170  44 45 53 54 29 21 2c 7b  30 2d 37 7d 0d 2b 2a 1b  |DEST)!,{0-7}.+*.|
00005180  20 20 20 20 4c 44 4d 49  41 20 28 53 4f 55 52 29  |    LDMIA (SOUR)|
00005190  21 2c 7b 30 2d 37 7d 0d  2b 34 1b 20 20 20 20 53  |!,{0-7}.+4.    S|
000051a0  54 4d 49 41 20 28 44 45  53 54 29 21 2c 7b 30 2d  |TMIA (DEST)!,{0-|
000051b0  37 7d 0d 2b 3e 15 20 20  20 20 53 55 42 53 20 43  |7}.+>.    SUBS C|
000051c0  4f 2c 43 4f 2c 23 31 0d  2b 48 0f 20 20 42 4e 45  |O,CO,#1.+H.  BNE|
000051d0  20 6c 6f 6f 70 69 0d 2b  52 0e 4d 4f 56 20 50 43  | loopi.+R.MOV PC|
000051e0  2c 52 31 34 0d 2b 5c 04  0d 2b 66 0c 2e 6f 75 74  |,R14.+\..+f..out|
000051f0  63 6f 70 79 0d 2b 70 12  20 20 41 44 52 20 52 30  |copy.+p.  ADR R0|
00005200  2c 73 63 72 6e 31 0d 2b  7a 12 20 20 41 44 52 20  |,scrn1.+z.  ADR |
00005210  52 31 2c 73 63 72 6e 32  0d 2b 84 1f 20 20 53 57  |R1,scrn2.+..  SW|
00005220  49 20 22 4f 53 5f 52 65  61 64 56 64 75 56 61 72  |I "OS_ReadVduVar|
00005230  69 61 62 6c 65 73 22 0d  2b 8e 13 20 20 41 44 52  |iables".+..  ADR|
00005240  20 44 45 53 54 2c 78 74  61 62 0d 2b 98 14 20 20  | DEST,xtab.+..  |
00005250  4c 44 52 20 53 4f 55 52  2c 73 63 72 6e 32 0d 2b  |LDR SOUR,scrn2.+|
00005260  a2 19 20 20 4d 4f 56 20  43 4f 2c 23 33 32 30 2a  |..  MOV CO,#320*|
00005270  32 35 36 2f 34 2f 38 0d  2b ac 0c 20 20 2e 6c 6f  |256/4/8.+..  .lo|
00005280  6f 70 6f 0d 2b b6 1b 20  20 20 20 4c 44 4d 49 41  |opo.+..    LDMIA|
00005290  20 28 53 4f 55 52 29 21  2c 7b 30 2d 37 7d 0d 2b  | (SOUR)!,{0-7}.+|
000052a0  c0 1b 20 20 20 20 53 54  4d 49 41 20 28 44 45 53  |..    STMIA (DES|
000052b0  54 29 21 2c 7b 30 2d 37  7d 0d 2b ca 15 20 20 20  |T)!,{0-7}.+..   |
000052c0  20 53 55 42 53 20 43 4f  2c 43 4f 2c 23 31 0d 2b  | SUBS CO,CO,#1.+|
000052d0  d4 0f 20 20 42 4e 45 20  6c 6f 6f 70 6f 0d 2b de  |..  BNE loopo.+.|
000052e0  0e 4d 4f 56 20 50 43 2c  52 31 34 0d 2b e8 04 0d  |.MOV PC,R14.+...|
000052f0  2b f2 09 2e 78 74 61 62  0d 2b fc 05 5d 0d 2c 06  |+...xtab.+..].,.|
00005300  05 e1 0d 2c 10 04 0d 2c  1a 0b dd 20 a4 66 69 6c  |...,...,... .fil|
00005310  6c 0d 2c 24 0b ea 20 49  2c 46 2c 41 0d 2c 2e 0f  |l.,$.. I,F,A.,..|
00005320  41 3d 34 2a 28 44 4d 31  2d 34 29 0d 2c 38 0d 46  |A=4*(DM1-4).,8.F|
00005330  3d 33 32 30 2a 32 5e 39  0d 2c 42 0f e3 20 49 3d  |=320*2^9.,B.. I=|
00005340  31 20 b8 20 32 35 36 0d  2c 4c 0d 5b 4f 50 54 20  |1 . 256.,L.[OPT |
00005350  50 41 53 53 0d 2c 56 10  45 51 55 44 20 46 2f 28  |PASS.,V.EQUD F/(|
00005360  49 2b 41 29 0d 2c 60 05  5d 0d 2c 6a 05 ed 0d 2c  |I+A).,`.].,j...,|
00005370  74 07 3d 22 22 0d ff                              |t.=""..|
00005377