Home » Archimedes archive » Acorn User » AU 1997-02 B.adf » Regulars » StarInfo/circles/Atkins/WHAT?
StarInfo/circles/Atkins/WHAT?
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 » Acorn User » AU 1997-02 B.adf » Regulars |
Filename: | StarInfo/circles/Atkins/WHAT? |
Read OK: | ✔ |
File size: | 6B2D bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
10REM>!WHAT 20ON ERROR PRINT TAB(1,1) REPORT$ " AT LINE " ERL:END 30 40REM----------------------------------------------------------------------------------------- 50REM OPERATIONAL PARAMETERS 60 70 MAXPNT = 30 80 PMINB = -1000 90 PMAXB = 00 100 PV_X=640 : PV_Y = 512 : PV_Z =400 :REM POINTS OF VIEW 110 120REM----------------------------------------------------------------------------------------- 130 PROC_INIT 140 PROC_INIT_A 150 PROC_START_UP 160 PROC_MAINLINE 170 STOP 180REM--------------------------------------------------------------------------------------- 190 DEF PROC_MAINLINE 200 210 PROC_SCENE1 220 REPEAT 230 PROC_ORBIT 240 PROC_DISPLAY 250 C$ = INKEY$(0) 260 IF C$="r" OR C$="R" THEN !COM_SHOW = NOT !COM_SHOW:DOCLG=TRUE 270 IF C$="t" OR C$="T" THEN DOCLG = NOT DOCLG 280 UNTIL C$="Q" OR C$="q" 290 300 PROC_SCENE2 310 REPEAT 320 PROC_ORBIT 330 PROC_DISPLAY 340 C$ = INKEY$(0) 350 UNTIL C$="Q" OR C$="q" 360 SYS "OS_Byte",112,1 370 SYS "OS_Byte",113,1 380 ENDPROC 390REM----------------------------------------------------------------------------------------- 400REM DEFINE GRAPHIC DATA BASE FOR !WHAT 410 420 DEF PROC_SCENE1 430 440 P=0:MAXSCAN=0 450 460REM SET UP COLOUR FADE TABLES (SEE DEF FN_SETCOL FOR PARAMETER DETAILS). 470 480 Red =FN_SETCOL(255,0,0,100,0,0) 490 Green =FN_SETCOL(0,255,0,0,100,0) 500 Blue =FN_SETCOL(0,0,255,0,0,100) 510 Magenta =FN_SETCOL(255,0,255,100,0,100) 520 Yellow =FN_SETCOL(255,255,0,100,100,0) 530 Cyan =FN_SETCOL(0,255,255,0,100,100) 540 RedYellow =FN_SETCOL(255,255,0,255,100,0) 550 Grey =FN_SETCOL(255,255,255,0,0,0) 560 570REM SET UP EPICYCLIC DEFINTIONS 580REM SEE DEF FN_TD_PNT FOR PARAMETER DETAILS. 590 600 W=1280:H=1000:R=H/2:S=3000:F=.5:s=1.9 610 620 P0 =FN_TD_PNT(128,W/2,H/2,500,0,0,600,0,0,0,R,5000,Red) 630 R=R*F 640 P1 =FN_TD_PNT(128+1,P0,0,0,R,R,0,0,90,0,R,S,Green) 650 R=R*F:S=S*s 660 P2 =FN_TD_PNT(128+1,P1,0,0,R,R,0,90,0,0,R,S,Blue) 670 R=R*F:S=S*s 680 P3 =FN_TD_PNT(128+1,P2,0,0,R,R,0,90,0,0,R,S,Magenta) 690 R=R*F:S=S*s 700 P4 =FN_TD_PNT(128+1,P3,0,0,R,R,0,90,0,0,R,S,Grey) 710 R=R*F:S=S*s 720 Dot =FN_TD_PNT(1,P4,0,0,R,R,0,0,90,0,R,S,Red) 730 740 L1$="What is the dot doing?." 750 L2$="Press ""t"" to track, ""r"" to reveal or ""q"" to quit" 760 A%=XYZ_A%:B%=XYZ_D%:C%=MAXSCAN*ROW_LEN:CALL MV_DATA 770 ENDPROC 780REM----------------------------------------------------------------------------------------- 790REM DEFINE GRAPHIC DATA BASE FOR !WHAT 800 810 DEF PROC_SCENE2 820 830 P=0:MAXSCAN=0 840 850REM SEE DEF FN_TD_PNT FOR PARAMETER DETAILS. 860 870 xc=640:yc=700 880 890 CENTRE =FN_TD_PNT(0,xc,yc,0,200,300,200,0,0,0,2,1000,Red) 900 NEUTRON =FN_TD_PNT(1,CENTRE,20,20,20,20,20,40,0,0,10,5000,Red) 910 PROTON =FN_TD_PNT(1,CENTRE,20,20,20,20,20,40,0,90,10,5000,Yellow) 920 930 ATOM01 =FN_TD_PNT(1,CENTRE,20,20,100,100,100,40,0,90,5,5000,Green) 940 ATOM02 =FN_TD_PNT(3,CENTRE,20,20,100,100,100,0,100,90,5,5000,Cyan) 950 ATOM03 =FN_TD_PNT(1,CENTRE,20,20,100,100,100,40,160,0,5,5000,Magenta) 960 ATOM04 =FN_TD_PNT(3,CENTRE,20,20,100,100,100,100,100,45,5,5000,Blue) 970 980 xc=300:yc=400 990 CENTRE1 =FN_TD_PNT(0,xc,yc,0,0,0,200,0,0,0,2,1000,Grey) 1000 NEUTRON1 =FN_TD_PNT(1,CENTRE1,20,20,20,20,20,40,0,0,20,5000,Green) 1010 PROTON1 =FN_TD_PNT(1,CENTRE1,20,20,20,20,20,40,0,90,20,5000,Cyan) 1020 1030 ATOM011 =FN_TD_PNT(1,CENTRE1,20,20,100,100,100,40,0,90,5,5000,Green) 1040 ATOM021 =FN_TD_PNT(3,CENTRE1,20,20,100,100,100,0,100,90,5,5000,Cyan) 1050 ATOM031 =FN_TD_PNT(1,CENTRE1,20,20,100,100,100,40,160,0,5,5000,Magenta) 1060 ATOM041 =FN_TD_PNT(3,CENTRE1,20,20,100,100,100,100,100,45,5,5000,Blue) 1070 1080 xc=800:yc=500 1090 CENTRE2 =FN_TD_PNT(0,xc,yc,0,0,0,200,0,0,0,2,100,Blue) 1100 NEUTRON2 =FN_TD_PNT(1,CENTRE2,20,20,20,20,20,40,0,0,20,200,Blue) 1110 PROTON2 =FN_TD_PNT(1,CENTRE2,20,20,20,20,20,40,0,90,20,200,Magenta) 1120 1130 ATOM012 =FN_TD_PNT(1,CENTRE2,20,20,50,50,50,40,0,90,5,5000,Green) 1140 ATOM022 =FN_TD_PNT(3,CENTRE2,20,20,50,50,50,0,50,90,5,5000,Cyan) 1150 ATOM032 =FN_TD_PNT(1,CENTRE2,20,20,50,50,50,40,160,0,5,5000,Magenta) 1160 ATOM042 =FN_TD_PNT(3,CENTRE2,20,20,50,50,50,100,100,45,5,5000,Blue) 1170 1180 L1$="Atoms...............Press ""q"" to quit" 1190 L2$="" 1200 A%=XYZ_A%:B%=XYZ_D%:C%=MAXSCAN*ROW_LEN:CALL MV_DATA 1210 ENDPROC 1220 1230REM---------------------------------------------------------------------------------------- 1240 DEF PROC_ORBIT 1250 FOR I% = 0 TO (MAXSCAN-1)*ROW_LEN STEP ROW_LEN 1260 XYZ_A%!(I%+ROW_ANGLE) += XYZ_A%!(I%+ROW_SPEED) 1270 ANGLE = XYZ_A%!(I%+ROW_ANGLE)/1000 1280 IF ANGLE > 360 THEN XYZ_A%!(I%+ROW_ANGLE) = 0 1290 IF XYZ_A%!(I%+ROW_XC) > 10000 THEN 1300 C% = XYZ_A%!(I%+ROW_XC) 1310 XC = C%!ROW_X 1320 YC = C%!ROW_Y 1330 ZC = C%!ROW_Z+1 1340 ELSE 1350 XC = XYZ_A%!(I%+ROW_XC) 1360 YC = XYZ_A%!(I%+ROW_YC) 1370 ZC = XYZ_A%!(I%+ROW_ZC) 1380 ENDIF 1390 CASE XYZ_A%!(I%+ROW_SIZE) OF 1400 WHEN 0: 1410 XYZ_A%!(I%+ROW_X) += XYZ_A%!(I%+ROW_XL) 1420 XYZ_A%!(I%+ROW_Z) = ZC+XYZ_A%!(I%+ROW_ZL)*SINRAD(ANGLE+XYZ_A%!(I%+ROW_ZP)) 1430 IF XYZ_A%!(I%+ROW_X) >= 1280 THEN XYZ_A%!(I%+ROW_X)= 0 1440 OTHERWISE: 1450 XYZ_A%!(I%+ROW_X) = XC+XYZ_A%!(I%+ROW_XL)*SINRAD(ANGLE+XYZ_A%!(I%+ROW_XP)) 1460 XYZ_A%!(I%+ROW_Y) = YC+XYZ_A%!(I%+ROW_YL)*SINRAD(ANGLE+XYZ_A%!(I%+ROW_YP)) 1470 XYZ_A%!(I%+ROW_Z) = ZC+XYZ_A%!(I%+ROW_ZL)*SINRAD(ANGLE+XYZ_A%!(I%+ROW_ZP)) 1480 ENDCASE 1490 NEXT I% 1500 ENDPROC 1510 1520REM----------------------------------------------------------------------------------------- 1530REM DEFINE POINTS PROCEDURE 1540 1550 DEF FN_TD_PNT(TYPE,XC,YC,ZC,XL,YL,ZL,XP,YP,ZP,SIZE,SPEED,RGBTAB) 1560 1570REM TYPE - POINT TYPE 0=Circle, 1=Circle Filled 1580REM XC,YC,ZC - ORBIT FOCUS. IF XC>10000 THEN IT IS A POINTER TO ANOTHER ENTRY WHICH 1590REM WILL FORM THE FOCUS FOR THIS ENTRY. 1600REM XL,YL,ZL - ORBIT LIMITS FROM FOCUS. 1610REM XP,YP,ZP - ORBIT PHASE ANGLES. 1620REM SIZE - CIRCLE SIZE 1630REM SPEED - ORBIT VELOCITY. 1640REM RGBTAB - NAME OF AN RGB TABLE AS DEFINED BY FN_SETCOL 1650 1660 XYZ_A%!(P+ROW_TYPE) = TYPE 1670 XYZ_A%!(P+ROW_X) = 0 1680 XYZ_A%!(P+ROW_Y) = 0 1690 XYZ_A%!(P+ROW_Z) = 0 1700 1710 XYZ_A%!(P+ROW_XL) = XL 1720 XYZ_A%!(P+ROW_YL) = YL 1730 XYZ_A%!(P+ROW_ZL) = ZL 1740 1750 XYZ_A%!(P+ROW_XP) = XP 1760 XYZ_A%!(P+ROW_YP) = YP 1770 XYZ_A%!(P+ROW_ZP) = ZP 1780 1790 XYZ_A%!(P+ROW_XC) = XC 1800 XYZ_A%!(P+ROW_YC) = YC 1810 XYZ_A%!(P+ROW_ZC) = -ZC 1820 1830 XYZ_A%!(P+ROW_SIZE) = SIZE<<10 :REM MAINTAIN PRECISION 1840 XYZ_A%!(P+ROW_RGB) = 0 1850 XYZ_A%!(P+ROW_RGBTAB) = RGBTAB :REM ADDRESS OF RGB TABLE 1860 XYZ_A%!(P+ROW_SPEED) = SPEED 1870 XYZ_A%!(P+ROW_ANGLE) = 0 1880 1890 P += ROW_LEN:MAXSCAN+=1 1900 =XYZ_A%+P-ROW_LEN 1910REM----------------------------------------------------------------------------------------- 1920REM DEFINE COLOURS (RGB FADE TABLES) 1930REM L1,L2,L3 - LOW VALUES OF RED,GREEN & BLUE (0-255) 1940REM H1,H2,H3 - HIGH VALUES OF RED,GREEN & BLUE (0-255) 1950 1960 DEF FN_SETCOL(L1,L2,L3,H1,H2,H3) 1970 LOCAL COLTAB% 1980 DIM COLTAB% 256*4 1990 PRFAC=(H1-L1)/256 2000 PGFAC= (H2-L2)/256 2010 PBFAC=(H3-L3)/256 2020 FOR I%=0 TO 255 STEP 1 2030 R = L1+I%*PRFAC:G = L2+I%*PGFAC:B = L3+I%*PBFAC 2040 COLTAB%!(I%*4)= (((R)<<8) + ((G)<<16) + ((B)<<24)) 2050 NEXT I% 2060 = COLTAB% 2070REM----------------------------------------------------------------------------------------- 2080REM DISPLAY STRUCTURE 2090 2100 DEF PROC_DISPLAY 2110 2120 IF DOCLG THEN WAIT:CLG 2130 A%=XYZ_A%:B%=XYZ_D%:C%=ROW_LEN1: 2140 FOR I% = 0 TO MAXSCAN-1 2150 CALL MV_DATA 2160 A%+=ROW_LEN:B%+=ROW_LEN 2170 NEXT I% 2180 A%=MAXSCAN:B%=XYZ_W%:C%=XYZ_D% 2190 CALL SORT :REM SORT BY Z FOR DISPLAY ORDER 2200 A%=PV_X:B%=PV_Y:C%=PV_Z:D%=PMAXB:E%=PMINB:F%=XYZ_D%:G%=MAXSCAN 2210 CALL PROJECT 2220 A%=XYZ_W%:B%=MAXSCAN 2230 CALL DISPLAY 2240 PRINT TAB(1,1);L1$ 2250 PRINT TAB(1,3);L2$ 2260 IF BANKS THEN 2270 SYS "OS_Byte",112,BANK1 2280 SYS "OS_Byte",113,BANK2 2290 SWAP BANK1,BANK2 2300 ENDIF 2310 IF NOT DOCLG THEN CALL DISPLAY 2320 2330 ENDPROC 2340REM----------------------------------------------------------------------------------------- 2350 DEF PROC_START_UP 2360 *FX112,1 2370 *FX113,1 2380 CLG 2390 *FX112,2 2400 *FX113,2 2410 CLG 2420 ENDPROC 2430REM----------------------------------------------------------------------------------------- 2440REM INITIALISATION PROCEDURE 2450 2460 DEF PROC_INIT 2470 2480 SYS "OS_SWINumberFromString",,"ColourTrans_SetGCOL" TO CTSG% 2490 SYS "OS_SWINumberFromString",,"ColourTrans_SetGCOL" TO CTSG% 2500 SYS "OS_ReadModeVariable",-1,11 TO ,,x 2510 SYS "OS_ReadModeVariable",-1,12 TO ,,y 2520 SYS "OS_ReadModeVariable",-1,4 TO ,,ex 2530 SYS "OS_ReadModeVariable",-1,5 TO ,,ey 2540 MaxWidth=(x+1)<<ex:MaxHeight=(y+1)<<ey 2550 2560 BANK1 = 1 2570 BANK2 = 2 2580 MAXSCAN = 1 2590 MAXLINE = 30 2600 MODE 28+128 2610 DOCLG=TRUE:BANKS=TRUE 2620 2630 ENDPROC 2640 2650REM----------------------------------------------------------------------------------------- 2660 DEF PROC_ROW_METRICS 2670 2680 ROW_X = 0 2690 ROW_Y = 4 2700 ROW_Z = 8 2710 2720 ROW_XL = 12 2730 ROW_YL = 16 2740 ROW_ZL = 20 2750 2760 ROW_XP = 24 2770 ROW_YP = 28 2780 ROW_ZP = 32 2790 2800 ROW_XC = 36 2810 ROW_YC = 40 2820 ROW_ZC = 44 2830 2840 ROW_SIZE = 48 2850 ROW_RGB = 52 2860 ROW_RGBTAB = 56 2870 2880 ROW_ANGLE = 60 2890 ROW_SPEED = 64 2900 ROW_SPRITE = 68 2910 2920 ROW_TYPE = 72 :REM 0=CIRCLE, 1=FILLED CIRCLE 2930 ROW_RGBNUM = 76 2940 2950 ROW_WORDS = 80/4 2960 ROW_LEN = ROW_WORDS*4 2970 ROW_LEN1 = 80 2980 ENDPROC 2990REM----------------------------------------------------------------------------------------- 3000REM INITIALISE ARRAYS 3010REM 3020 DEF PROC_INIT_A 3030 PROC_ROW_METRICS 3040 DIM XYZ_A% MAXPNT*ROW_LEN 3050 DIM XYZ_D% MAXPNT*ROW_LEN 3060 DIM XYZ_W% MAXPNT*4 3070 D%=XYZ_D% 3080 FOR I% = 0 TO MAXPNT*4 STEP 4 3090 XYZ_W%!(I%) = D% 3100 D%+=ROW_LEN 3110 NEXT I% 3120 PROC_ASSEMBLE 3130 ENDPROC 3140 3150REM----------------------------------------------------------------------------------------- 3160 DEF PROC_ASSEMBLE 3170DIM ASSEMBLY 4096 3180 FOR PASS = 0 TO 2 STEP 2 3190 P% = ASSEMBLY 3200[OPT PASS 3210 .COM_SHOW EQUD 0 ;1=Force display 3220] 3230REM SHELL SORT 3240REM A% = COUNT, B% = WORK AREA, C% = SORT DATA 3250REM CALL SORT 3260REM B% IS A NON DIMENSIONED ARRAY, EACH ELEMENT IS A POINTER TO OBJ DATA 3270REM C% IS SORTED AND ORDERED ADDRESSES PUT TO B%. 3280 3290 COMP = ROW_Z :REM SORT ARGUMENT INTEGER POSITION 3300 3310 S_NUM = 0 3320 S_W = 1 3330 S_A = 2 3340 S_WINDEX1 = 3 3350 S_WINDEX2 = 4 3360 S_WK1 = 5 3370 S_WK2 = 6 3380 S_CMP1 = 7 3390 S_CMP2 = 8 3400 S_CNT = 9 3410 S_WK3 = 10 3420 S_SPLIT = 11 3430 S_WINDEX3 = 12 :S_ROW = 12 3440 [ OPT PASS 3450 3460.SORT 3470 MOV S_NUM,R0 3480 CMP R0,#2 3490 MOVLE PC,14 3500 MOV S_NUM,R0 3510 MOV S_W,R1 3520 3530; 3540; FILL WORK WITH ENTRY ADDRESSES 3550; 3560 MOV S_ROW,R2 3570 MOV S_WK1,R1 3580 MOV S_WK2,R0 3590.FLL 3600 STR S_ROW,[S_WK1,#0] 3610 ADD S_WK1,S_WK1,#4 3620 ADD S_ROW,S_ROW,#ROW_LEN 3630 SUBS S_WK2,S_WK2,#1 3640 BGE FLL 3650 3660 MOV S_W,R1 3670 3680 3690; S_SPLIT = (NUMBER-1)/2 3700 3710 SUB S_SPLIT,S_NUM,#1 3720 MOV S_SPLIT,S_SPLIT,LSR#1 3730;REPEAT 3740.R1 3750 3760; FOR S_WINDEX1 = S_SPLIT+1 TO NUMBER STEP 1 3770 3780 3790 ADD S_WINDEX1,S_SPLIT,#1 3800 MOV S_CNT,S_NUM 3810.F1 3820 3830;FOR S_WINDEX2 = S_WINDEX1 - S_SPLIT TO 0 STEP -S_SPLIT 3840 3850 SUB S_WINDEX2,S_WINDEX1,S_SPLIT 3860.F2 3870 LDR S_CMP1,[S_W,S_WINDEX2,LSL#2] ;GET INDEX 1 3880 ADD S_WINDEX3,S_WINDEX2,S_SPLIT ;ADD S_SPLIT TO INDEX 3890 LDR S_CMP2,[S_W,S_WINDEX3,LSL#2] ;AND GET INDEX 2 3900 3910 LDR S_WK1,[S_CMP1,#COMP] ;GET REF VALUE 3920 LDR S_WK2,[S_CMP2,#COMP] ;AND NEXT 3930 CMP S_WK1,S_WK2 ;COMPARE VALUES 3940 BLT NOSWAP ;AND...... 3950; 3960; SWAP B% INDEX VALUES ONLY 3970; 3980 MOV S_WK3,S_CMP1 3990 MOV S_CMP1,S_CMP2 4000 MOV S_CMP2,S_WK3 4010 STR S_CMP1,[S_W,S_WINDEX2,LSL#2] 4020 STR S_CMP2,[S_W,S_WINDEX3,LSL#2] 4030; 4040.NOSWAP 4050; 4060;NEXT S_WINDEX2 4070 4080 SUBS S_WINDEX2,S_WINDEX2,S_SPLIT ;STEP - S_SPLIT 4090 BGE F2 ;TO 0 4100 4110;NEXT S_WINDEX1 4120 4130 ADD S_WINDEX1,S_WINDEX1,#1 ;STEP 1 4140 CMP S_NUM,S_WINDEX1 4150 BNE F1 ;TO NUM - 1 4160 4170 MOVS S_SPLIT,S_SPLIT,LSR#1 ;S_SPLIT = S_SPLIT/2 4180;UNTIL S_SPLIT = 0 4190 BGT R1 4200 MOV PC,R14 4210 ] 4220REM DIVIDE ROUTINE 4230 4240V_NUMBER = 0 :REM NUMBER TO BE DIVIDED 4250V_DIVISOR = 1 :REM DIVIDED BY 4260V_QUOTIENT = 2 :REM RESULT 4270V_REMAINDER = 3 :REM REMAINDER 4280V_PLACE = 4 :REM WORK REGISTER 4290V_MSIGN = 6 4300V_DSIGN = 7 4310REM RESULTS - R0 = QUOTIENT,DVD_QUOTIENT = QUOTIENT,DVD_REMAINDER = REMAINDER 4320 4330[ OPT PASS 4340.DVD 4350 STMFD R13!,{R1-R12,R14} 4360 ANDS V_MSIGN,V_NUMBER,#1<<31 ;SET SIGNS 4370 RSBMI V_NUMBER,V_NUMBER,#0 ;MAKE POSITIVE 4380 EOR V_DSIGN,V_MSIGN,V_DIVISOR 4390 CMP V_DIVISOR,#0 4400 RSBMI V_DIVISOR,V_DIVISOR,#1 ;MAKE POSITIVE 4410 4420 MOV V_QUOTIENT,#0 4430 MOV V_REMAINDER,#0 4440 MOV V_PLACE,#1<<31 4450.division_loop 4460 MOVS V_NUMBER,V_NUMBER,ASL#1 ; DOUBLE SHIFT LEFT 4470 ADC V_REMAINDER,V_REMAINDER,V_REMAINDER 4480 CMP V_REMAINDER,V_DIVISOR ;DIVIDE 1ST BIN. DIGITS ? 4490 SUBGE V_REMAINDER,V_REMAINDER,V_DIVISOR ;1 DIGIT DIVIDE 4500 ORRGE V_QUOTIENT,V_QUOTIENT,V_PLACE ;PARTIAL RESULT 4510 MOVS V_PLACE,V_PLACE,LSR#1 ; NEXT 4520 BNE division_loop 4530 4540 CMP V_DSIGN,#0 4550 RSBMI V_QUOTIENT,V_QUOTIENT,#0 4560 CMP V_MSIGN,#0 4570 RSBMI V_REMAINDER,V_REMAINDER,#0 4580 4590 STR V_REMAINDER,DVD_REMAINDER 4600 STR V_QUOTIENT,DVD_QUOTIENT 4610 MOV R0,V_QUOTIENT 4620 LDMFD R13!,{R1-R12,R14} 4630 MOV PC,R14 4640.DVD_QUOTIENT EQUD 0 4650.DVD_REMAINDER EQUD 0 4660 ] 4670REM 4680REM PROJECTION TRANSFORMS FOR !WHAT 4690REM A% = PV_X R0 4700REM B% = PV_Y R1 4710REM C% = PV_Z R2 4720REM D% = PMAXB R3 4730REM E% = PMINB R4 4740REM F% = XYZ_A% R5 4750REM G% = MAXSCAN R6 4760REM CALL PROJECT 4770 4780 P_WK1 = 0 :P_NUMBER = 0 4790 P_WK2 = 1 4800 P_WK3 = 2 4810 4820 P_XVAL = 3 :P_PMAXB = 3 4830 P_YVAL = 4 :P_PMINB = 4 4840 P_ZVAL = 5 4850 4860 P_DIVISOR = 6 4870 P_PVX = 7 4880 P_PVY = 8 4890 P_PARMS = 9 :P_BVAL = 9 4900 P_NUM = 10 4910 P_ROW = 11 4920 P_PVZ = 12 4930 4940 [ OPT PASS 4950.PROJECT 4960 STMFD R13!,{R0-R12,R14} 4970 4980 MOV P_PVX,R0 4990 STR R3,SVE_PMAXB 5000 STR R4,SVE_PMINB 5010 MOV P_ROW,R5 5020 MOV P_NUM,R6 5030 MOV P_PVY,R1 5040 MOV P_PVZ,R2 5050 5060; FOR P_ROW = FIRST TO LAST 5070.F1 5080 LDR P_WK1,[P_ROW,#ROW_SIZE] 5090 CMP P_WK1,#0 5100 BLE PNXT_ROW 5110 LDR P_XVAL,[P_ROW,#ROW_X] 5120 LDR P_YVAL,[P_ROW,#ROW_Y] 5130 LDR P_ZVAL,[P_ROW,#ROW_Z] 5140 5150; ARRAY(ROW,X) = ( ARRAY(ROW,Z)*PV_X-ARRAY(ROW,X)*PV_Z)/(ARRAY(ROW,Z)-PV_Z) 5160 5170 5180 MUL P_WK1,P_ZVAL,P_PVX 5190 MUL P_WK2,P_XVAL,P_PVZ 5200 SUB P_NUMBER,P_WK1,P_WK2 5210 SUB P_DIVISOR,P_ZVAL,P_PVZ 5220 MOV R1,P_DIVISOR 5230 BL DVD 5240 MOV P_WK1,R0 5250 STR P_WK1,[P_ROW,#ROW_X] 5260 5270; ARRAY(ROW,Y) = (ARRAY(ROW,Z)*PV_Y-ARRAY(ROW,Y)*PV_Z)/(ARRAY(ROW,Z)-PV_Z) 5280 5290 MUL P_WK1,P_ZVAL,P_PVY 5300 MUL P_WK2,P_YVAL,P_PVZ 5310 SUB P_NUMBER,P_WK1,P_WK2 5320 MOV R1,P_DIVISOR 5330 BL DVD 5340 MOV P_WK1,R0 5350 STR P_WK1,[P_ROW,#ROW_Y] 5360 5370; ARRAY(ROW,SIZE) = (ARRAY(ROW,SIZE)*PV_Z)/(ARRAY(ROW,Z)-PV_Z) 5380 5390 LDR P_BVAL,[P_ROW,#ROW_SIZE] 5400 MUL P_NUMBER,P_BVAL,P_PVZ 5410 SUB P_DIVISOR,P_ZVAL,P_PVZ 5420 MOV R1,P_DIVISOR 5430 BL DVD ;EXTENAL REF 5440 MOV P_WK1,R0 5450 RSB P_WK1,P_WK1,#0 5460 STR P_WK1,[P_ROW,#ROW_SIZE] 5470 5480; ARRAY(ROW,RGB) = (ARRAY(ROW,Z) - PMAXB)*256/(PMAXB - PMINB) 5490 5500 5510 LDR P_PMAXB,SVE_PMAXB 5520 LDR P_PMINB,SVE_PMINB 5530 SUB P_DIVISOR,P_PMAXB,P_PMINB 5540 5550 SUB P_WK2,P_ZVAL,P_PMAXB 5560 MOV P_NUMBER,P_WK2,LSL #8 5570 MOV R1,P_DIVISOR 5580 BL DVD ;EXTERNAL REF 5590 5600 MOV P_WK1,R0 5610 RSB P_WK1,P_WK1,#0 5620 CMP P_WK1,#255 5630 MOVGT P_WK1,#255 5640 CMP P_WK1,#0 5650 MOVLT P_WK1,#0 5660 STR P_WK1,[P_ROW,#ROW_RGBNUM] 5670 MOV P_WK1,P_WK1,LSL#2 5680 LDR P_WK2,[P_ROW,#ROW_RGBTAB] 5690 LDR P_WK1,[P_WK2,P_WK1] 5700 STR P_WK1,[P_ROW,#ROW_RGB] 5710 5720.PNXT_ROW 5730 ADD P_ROW,P_ROW,#ROW_LEN ;STEP 1 5740 SUBS P_NUM,P_NUM,#1 5750 BGT F1 ;TO MAX 5760 LDMFD R13!,{R0-R12,PC} 5770.SVE_PMAXB EQUD 0 5780.SVE_PMINB EQUD 0 5790 ] 5800REM 5810REM DISPLAY FOR !WHAT 5820REM R0...A%=XYZ_W:R1...B%=CONT:R2...C%=SPRITE AREA ADDRESS 5830REM CALL DISPLAY 5840 5850 vdu = 256 5860 PlotMove = 4 5870 PlotFilledCircle = 153 5880 PlotCircle = 145 5890 5900 D_W1 = 0 5910 D_DW1 = 7 5920 D_SIZE = 8 5930 D_SAREA = 9 5940 D_WINDEX = 10 5950 D_NUM = 11 5960 D_ROW = 12 5970 5980 D_TAILX = 1 5990 D_TAILY = 2 6000 D_RGB = 3 6010 D_TSIZE = 4 6020 D_TAILCNT = 5 6030 D_TAIL = 6 6040 D_TAILOX = 7 6050 D_TAILOY = 8 6060 D_TW1 = 9 6070 D_SINC = 10 6080 6090 [ OPT PASS 6100 .DISPLAY 6110 MOV D_NUM,R1 6120 MOV D_WINDEX,R0 6130 MOV D_SAREA,R2 6140 MOV R0,#19 ;WAIT VSYNC 6150 SWI "OS_Byte" 6160; 6170; FOR D_ROW = FIRST TO LAST 6180.F1 6190 LDR D_ROW,[D_WINDEX] 6200 LDR R0,[D_ROW,#ROW_RGB] ;RGB COLOUR ENTRY 6210 MOV R3,#%100000000 ;FLAGS 6220 MOV R4,#8 6230 SWI &40743 ;COLOUR TRANS SET GCOL 6240 LDR D_SIZE,[D_ROW,#ROW_SIZE] 6250 LDR D_DW1,[D_ROW,#ROW_TYPE] 6260 LDR R0,COM_SHOW 6270 CMP R0,#0 6280 BNE D_SHOW 6290 CMP D_DW1,#127 6300 BGT DNXT_ROW 6310.D_SHOW 6320 LDR R1,[D_ROW,#ROW_X] 6330 LDR R2,[D_ROW,#ROW_Y] 6340 MOV R0,#PlotMove ;MOVE 6350 SWI "OS_Plot" 6360 6370 LDR R0,[D_ROW,#ROW_TYPE] 6380 AND R0,R0,#%1111111 6390 CMP R0,#0 6400 MOVNE R0,#PlotFilledCircle 6410 MOVEQ R0,#PlotCircle ;FILLED CIRCLE PLOT 6420 LDR R1,[D_ROW,#ROW_SIZE] 6430 MOV R1,R1,LSR #10 6440 MOV R2,#0 6450 SWI "OS_Plot" 6460 6470.DNXT_ROW 6480 ADD D_WINDEX,D_WINDEX,#4 ;STEP 1 6490 SUBS D_NUM,D_NUM,#1 ; 6500 BGT F1 ;TO MAX 6510 MOV PC,R14 6520 6530 ] 6540REM--------------------------------------------------------------------- 6550REM FAST DATA MOVE ROUTINE 6560 6570 6580 6590REM ON ENTRY : R0 = FROM ADDRESS 6600REM R1 = TO ADDRESS 6610REM R2 = BYTE LENGTH 6620 6630 R_FROM = 0:RF=0 6640 R_TO = 1:RT=1 6650 RL = 2 6660 RSR = 3 6670 RSL = 14 6680 6690 6700REM ONLY USED IN FAST MOVE 6710 6720 RC8 = 3 6730 RMB = 4 6740 RW = 12 6750 RW1 = 11 6760 6770[OPT PASS 6780.MV_DATA 6790 6800 CMP RL,#0 6810 MOVLE PC,R14 6820 STMFD R13!,{0-12,R14} 6830 6840;IF FROM AND TO ADDRESS ON SAME BOUNDARY ALIGN THEN USE FAST ELSE USE BYTE BY BYTE SHIFTING 6850 6860 CMP RL,#4 6870 BLE MB280 6880 TST R_TO,#%11 ;IS TARGET ALIGNED? 6890 BEQ MBLOOP20 ;BRANCH IF YES 6900.MBLOOP10 6910 LDRB R4,[R_FROM],#1 6920 STRB R4,[R_TO],#1 6930 SUBS RL,RL,#1 6940 BEQ MVEXIT ;FINISHED 6950 TST R_TO,#%11 6960 BNE MBLOOP10 6970.MBLOOP20 ;TARGET IS WORD ALIGNED 6980 TST R_FROM,#%11 6990 BNE MB200 ;BRANCH IF SOURCE NOT ALIGNED 7000;TARGET AND SOURCE ARE IN SAME ALIGNMENT - USE FAST MOVE 7010.MBLOOP100 ; MOVE ODD ( 0 TO 7 ) WORDS 7020 7030 AND RW,RL,#%11100 7040 MOV RW,RW,LSL#1 7050 ADR RMB,MTAB1E 7060 SUB RMB,RMB,RW 7070 MOV PC,RMB 7080 7090 LDR R4,[R_FROM],#4 7100 STR R4,[R_TO],#4 ;7 WORDS 7110 LDR R4,[R_FROM],#4 7120 STR R4,[R_TO],#4 ;6 WORDS 7130 LDR R4,[R_FROM],#4 7140 STR R4,[R_TO],#4 ;5 WORDS 7150 LDR R4,[R_FROM],#4 7160 STR R4,[R_TO],#4 ;4 WORDS 7170 LDR R4,[R_FROM],#4 7180 STR R4,[R_TO],#4 ;3 WORDS 7190 LDR R4,[R_FROM],#4 7200 STR R4,[R_TO],#4 ;2 WORDS 7210 LDR R4,[R_FROM],#4 7220 STR R4,[R_TO],#4 ;1 WORDS 7230.MTAB1E 7240;MOVE BLOCKS OF 8 WORDS 7250 7260 AND RW,RL,#%11100000 7270 MOV RW,RW,LSR#2 7280 ADR RMB,MTAB8E 7290 SUB RMB,RMB,RW 7300 LDR RW,EMASK 7310 AND RC8,RL,RW 7320 MOV RC8,RC8,LSR#8 7330 MOV PC,RMB 7340 7350.MVLOOP8 7360 7370 LDMIA (R_FROM)!,{R5-R12} 7380 STMIA (R_TO)!,{R5-R12} ;8*8 WORDS 7390 LDMIA (R_FROM)!,{R5-R12} 7400 STMIA (R_TO)!,{R5-R12} ;7*8 WORDS 7410 LDMIA (R_FROM)!,{R5-R12} 7420 STMIA (R_TO)!,{R5-R12} ;6*8 WORDS 7430 LDMIA (R_FROM)!,{R5-R12} 7440 STMIA (R_TO)!,{R5-R12} ;5*8 WORDS 7450 LDMIA (R_FROM)!,{R5-R12} 7460 STMIA (R_TO)!,{R5-R12} ;4*8 WORDS 7470 LDMIA (R_FROM)!,{R5-R12} 7480 STMIA (R_TO)!,{R5-R12} ;3*8 WORDS 7490 LDMIA (R_FROM)!,{R5-R12} 7500 STMIA (R_TO)!,{R5-R12} ;2*8 WORDS 7510 LDMIA (R_FROM)!,{R5-R12} 7520 STMIA (R_TO)!,{R5-R12} ;1*8 WORDS 7530.MTAB8E 7540 SUBS RC8,RC8,#1 7550 BGE MVLOOP8 7560 7570;MOVE ODD ( 0 TO 3 ) BYTES 7580 7590 AND RW,RL,#%11 7600 MOV RW,RW,LSL#3 7610 ADR RMB,MTABBE 7620 SUB RMB,RMB,RW 7630 MOV PC,RMB 7640 7650 LDRB R5,[R_FROM],#1 ;3 BYTES 7660 STRB R5,[R_TO],#1 7670 LDRB R5,[R_FROM],#1 ;2 BYTES 7680 STRB R5,[R_TO],#1 7690 LDRB R5,[R_FROM],#1 ;1 BYTE 7700 STRB R5,[R_TO],#1 7710.MTABBE 7720.MVEXIT 7730 LDMFD R13!,{0-12,R14} 7740 MOV PC,R14 7750 7760.MB200 ;TARGET IS ALIGNED SOURCE IS NOT 7770 AND RSR,R_FROM,#%11 ;OFFSET IN WORD 7780 BIC R_FROM,R_FROM,#%11 ;ALIGN SOURCE (LOW) 7790 MOV RSR,RSR,LSL#3 ;RIGHT SHIFT 7800 RSB RSL,RSR,#32 ;LEFT SHIFT 7810 7820;NOW DETERMINE BLOCK MOVES 7830 7840.MB210 7850 CMP RL,#8*4 7860 BLT MB240 ;BRANCH LESS THAN 8 7870 LDMIA (R_FROM),{R4-R12} 7880 MOV R4,R4,LSR RSR 7890 ORR R4,R4,R5,LSL RSL 7900 7910 MOV R5,R5,LSR RSR 7920 ORR R5,R5,R6,LSL RSL 7930 7940 MOV R6,R6,LSR RSR 7950 ORR R6,R6,R7,LSL RSL 7960 7970 MOV R7,R7,LSR RSR 7980 ORR R7,R7,R8,LSL RSL 7990 8000 MOV R8,R8,LSR RSR 8010 ORR R8,R8,R9,LSL RSL 8020 8030 MOV R9,R9,LSR RSR 8040 ORR R9,R9,R10,LSL RSL 8050 8060 MOV R10,R10,LSR RSR 8070 ORR R10,R10,R11,LSL RSL 8080 8090 MOV R11,R11,LSR RSR 8100 ORR R11,R11,R12,LSL RSL 8110 8120 STMIA (R_TO)!,{R4-R11} 8130 ADD R_FROM,R_FROM,#4*8 8140 SUBS RL,RL,#8*4 8150 BGT MB210 ;GO DO ANOTHER 8 WORDS 8160.MB240 8170 CMP RL,#4*4 8180 BLT MB250 ;BRANCH LESS THAN 4 8190 8200 LDMIA (R_FROM),{R4-R8} 8210 MOV R4,R4,LSR RSR 8220 ORR R4,R4,R5,LSL RSL 8230 8240 MOV R5,R5,LSR RSR 8250 ORR R5,R5,R6,LSL RSL 8260 8270 MOV R6,R6,LSR RSR 8280 ORR R6,R6,R7,LSL RSL 8290 8300 MOV R7,R7,LSR RSR 8310 ORR R7,R7,R8,LSL RSL 8320 8330 STMIA (R_TO)!,{R4-R7} 8340 SUB RL,RL,#4*4 8350 ADD R_FROM,R_FROM,#4*4 8360.MB250 8370 CMP RL,#2*4 8380 BLT MB260 ;BRANCH LESS THAN 2 WORDS TO GO 8390 LDMIA (R_FROM),{R4-R6} 8400 MOV R4,R4,LSR RSR 8410 ORR R4,R4,R5,LSL RSL 8420 MOV R5,R5,LSR RSR 8430 ORR R5,R5,R6,LSL RSL 8440 STMIA (R_TO)!,{R4-R5} 8450 SUB RL,RL,#4*2 8460 ADD R_FROM,R_FROM,#4*2 8470.MB260 8480 CMP RL,#4 8490 BLT MB270 ;BRANCH LESS THAN 1 WORD 8500 LDMIA (R_FROM),{R4-R5} 8510 MOV R4,R4,LSR RSR 8520 ORR R4,R4,R5,LSL RSL 8530 SUB RL,RL,#4 8540 STMIA (R_TO)!,{R4} 8550 ADD R_FROM,R_FROM,#4 8560.MB270 ;LAST FEW BYTES 8570 CMP RL,#0 8580 BLE MVEXIT 8590 LDMIA (R_FROM),{R4-R5} 8600 MOV R4,R4,LSR RSR 8610 ORR R4,R4,R5,LSL RSL 8620.MB275 8630 8640 STRB R4,[R_TO],#1 8650 MOV R4,R4,LSR #8 8660 SUBS RL,RL,#1 8670 BGT MB275 8680 BAL MVEXIT 8690.MB280 ;LESS THAN 4 BYTES 8700 LDRB R4,[R_FROM],#1 8710 STRB R4,[R_TO],#1 8720 SUBS RL,RL,#1 8730 BEQ MVEXIT ;FINISHED 8740 BAL MB280 8750.EMASK EQUD &FFFFFF00 8760] 8770 8780 NEXT PASS 8790 ENDPROC 8800REM----------------------------------------------------------------------------------------- 8810 DEF PROC_W 8820 PRINT " ARRAY XYZ_W%" 8830 PRINT 8840 FOR X = 0 TO (MAXPNT-1)*4 STEP 4 8850 PRINT "ENTRY=";X/4;" VALUE=";XYZ_W%!X 8860 NEXT X 8870 ENDPROC 8880REM----------------------------------------------------------------------------------------- 8890 DEF PROC_D 8900 PRINT " ARRAY XYZ_D%" 8910 FOR X = 0 TO (MAXSCAN-1)*ROW_LEN STEP ROW_LEN 8920 PRINT " X=";XYZ_D%!X;" Y="; XYZ_D%!(X+4);" Z="; XYZ_D%!(X+8);" XI="; XYZ_D%!(X+12);" YI="; XYZ_D%!(X+16);" ZI="; XYZ_D%!(X+20);" SIZE="; XYZ_D%!(X+ROW_SIZE);" RGB="; XYZ_D%!(X+28);" RGBTAB=&";~ XYZ_D%!(X+32) 8930 NEXT X 8940 ENDPROC 8950REM----------------------------------------------------------------------------------------- 8960 DEF PROC_A 8970 PRINT " ARRAY XYZ_A%" 8980 FOR X = 0 TO (MAXSCAN-1)*ROW_LEN STEP ROW_LEN 8990 PRINT " X=";XYZ_A%!X;" Y="; XYZ_A%!(X+4);" Z="; XYZ_A%!(X+8);" Xc="; XYZ_A%!(X+36);" YC="; XYZ_A%!(X+40);" ZC="; XYZ_A%!(X+44);" SIZE="; XYZ_A%!(X+48);" RGBTAB=&";~ XYZ_A%!(X+56);" SPRITE=";~ XYZ_A%!(X+ROW_SPRITE) 9000 NEXT X 9010 ENDPROC 9020REM---------------------------------------------------------------------------------------
�>!WHAT "� � � �1,1) �$ " AT LINE " �:� (^�----------------------------------------------------------------------------------------- 2� OPERATIONAL PARAMETERS < F MAXPNT = 30 P PMINB = -1000 Z PMAXB = 00 d@ PV_X=640 : PV_Y = 512 : PV_Z =400 :� POINTS OF VIEW n x^�----------------------------------------------------------------------------------------- � �_INIT � �_INIT_A � �_START_UP � �_MAINLINE � � �\�--------------------------------------------------------------------------------------- � � �_MAINLINE � � �_SCENE1 � � � �_ORBIT � �_DISPLAY � C$ = �(0) ? � C$="r" � C$="R" � !COM_SHOW = � !COM_SHOW:DOCLG=� / � C$="t" � C$="T" � DOCLG = � DOCLG � C$="Q" � C$="q" " , �_SCENE2 6 � @ �_ORBIT J �_DISPLAY T C$ = �(0) ^ � C$="Q" � C$="q" h ș "OS_Byte",112,1 r ș "OS_Byte",113,1 | � �^�----------------------------------------------------------------------------------------- �(� DEFINE GRAPHIC DATA BASE FOR !WHAT � � � �_SCENE1 � � P=0:MAXSCAN=0 � �J� SET UP COLOUR FADE TABLES (SEE DEF FN_SETCOL FOR PARAMETER DETAILS). � �. Red =�_SETCOL(255,0,0,100,0,0) �. Green =�_SETCOL(0,255,0,0,100,0) �. Blue =�_SETCOL(0,0,255,0,0,100) �2 Magenta =�_SETCOL(255,0,255,100,0,100) 2 Yellow =�_SETCOL(255,255,0,100,100,0) 2 Cyan =�_SETCOL(0,255,255,0,100,100) 2 RedYellow =�_SETCOL(255,255,0,255,100,0) &0 Grey =�_SETCOL(255,255,255,0,0,0) 0 :!� SET UP EPICYCLIC DEFINTIONS D.� SEE DEF FN_TD_PNT FOR PARAMETER DETAILS. N X/ W=1280:H=1000:R=H/2:S=3000:F=.5:s=1.9 b lD P0 =�_TD_PNT(128,W/2,H/2,500,0,0,600,0,0,0,R,5000,Red) v R=R*F �? P1 =�_TD_PNT(128+1,P0,0,0,R,R,0,0,90,0,R,S,Green) � R=R*F:S=S*s �> P2 =�_TD_PNT(128+1,P1,0,0,R,R,0,90,0,0,R,S,Blue) � R=R*F:S=S*s �A P3 =�_TD_PNT(128+1,P2,0,0,R,R,0,90,0,0,R,S,Magenta) � R=R*F:S=S*s �> P4 =�_TD_PNT(128+1,P3,0,0,R,R,0,90,0,0,R,S,Grey) � R=R*F:S=S*s �: Dot =�_TD_PNT(1,P4,0,0,R,R,0,0,90,0,R,S,Red) � �' L1$="What is the dot doing?." �F L2$="Press ""t"" to track, ""r"" to reveal or ""q"" to quit" �: A%=XYZ_A%:B%=XYZ_D%:C%=MAXSCAN*ROW_LEN:� MV_DATA � ^�----------------------------------------------------------------------------------------- (� DEFINE GRAPHIC DATA BASE FOR !WHAT * � �_SCENE2 4 > P=0:MAXSCAN=0 H R.� SEE DEF FN_TD_PNT FOR PARAMETER DETAILS. \ f xc=640:yc=700 p zG CENTRE =�_TD_PNT(0,xc,yc,0,200,300,200,0,0,0,2,1000,Red) �K NEUTRON =�_TD_PNT(1,CENTRE,20,20,20,20,20,40,0,0,10,5000,Red) �O PROTON =�_TD_PNT(1,CENTRE,20,20,20,20,20,40,0,90,10,5000,Yellow) � �P ATOM01 =�_TD_PNT(1,CENTRE,20,20,100,100,100,40,0,90,5,5000,Green) �P ATOM02 =�_TD_PNT(3,CENTRE,20,20,100,100,100,0,100,90,5,5000,Cyan) �S ATOM03 =�_TD_PNT(1,CENTRE,20,20,100,100,100,40,160,0,5,5000,Magenta) �R ATOM04 =�_TD_PNT(3,CENTRE,20,20,100,100,100,100,100,45,5,5000,Blue) � � xc=300:yc=400 �E CENTRE1 =�_TD_PNT(0,xc,yc,0,0,0,200,0,0,0,2,1000,Grey) �O NEUTRON1 =�_TD_PNT(1,CENTRE1,20,20,20,20,20,40,0,0,20,5000,Green) �O PROTON1 =�_TD_PNT(1,CENTRE1,20,20,20,20,20,40,0,90,20,5000,Cyan) � R ATOM011 =�_TD_PNT(1,CENTRE1,20,20,100,100,100,40,0,90,5,5000,Green) R ATOM021 =�_TD_PNT(3,CENTRE1,20,20,100,100,100,0,100,90,5,5000,Cyan) U ATOM031 =�_TD_PNT(1,CENTRE1,20,20,100,100,100,40,160,0,5,5000,Magenta) $T ATOM041 =�_TD_PNT(3,CENTRE1,20,20,100,100,100,100,100,45,5,5000,Blue) . 8 xc=800:yc=500 BD CENTRE2 =�_TD_PNT(0,xc,yc,0,0,0,200,0,0,0,2,100,Blue) LM NEUTRON2 =�_TD_PNT(1,CENTRE2,20,20,20,20,20,40,0,0,20,200,Blue) VQ PROTON2 =�_TD_PNT(1,CENTRE2,20,20,20,20,20,40,0,90,20,200,Magenta) ` jO ATOM012 =�_TD_PNT(1,CENTRE2,20,20,50,50,50,40,0,90,5,5000,Green) tN ATOM022 =�_TD_PNT(3,CENTRE2,20,20,50,50,50,0,50,90,5,5000,Cyan) ~R ATOM032 =�_TD_PNT(1,CENTRE2,20,20,50,50,50,40,160,0,5,5000,Magenta) �Q ATOM042 =�_TD_PNT(3,CENTRE2,20,20,50,50,50,100,100,45,5,5000,Blue) � �7 L1$="Atoms...............Press ""q"" to quit" � L2$="" �: A%=XYZ_A%:B%=XYZ_D%:C%=MAXSCAN*ROW_LEN:� MV_DATA � � � �]�---------------------------------------------------------------------------------------- � � �_ORBIT �2 � I% = 0 � (MAXSCAN-1)*ROW_LEN � ROW_LEN �: XYZ_A%!(I%+ROW_ANGLE) += XYZ_A%!(I%+ROW_SPEED) �. ANGLE = XYZ_A%!(I%+ROW_ANGLE)/1000 5 � ANGLE > 360 � XYZ_A%!(I%+ROW_ANGLE) = 0 * � XYZ_A%!(I%+ROW_XC) > 10000 � % C% = XYZ_A%!(I%+ROW_XC) XC = C%!ROW_X ( YC = C%!ROW_Y 2 ZC = C%!ROW_Z+1 < � F% XC = XYZ_A%!(I%+ROW_XC) P% YC = XYZ_A%!(I%+ROW_YC) Z% ZC = XYZ_A%!(I%+ROW_ZC) d � n& Ȏ XYZ_A%!(I%+ROW_SIZE) � x � 0: �5 XYZ_A%!(I%+ROW_X) += XYZ_A%!(I%+ROW_XL) �T XYZ_A%!(I%+ROW_Z) = ZC+XYZ_A%!(I%+ROW_ZL)*��(ANGLE+XYZ_A%!(I%+ROW_ZP)) �@ � XYZ_A%!(I%+ROW_X) >= 1280 � XYZ_A%!(I%+ROW_X)= 0 � : �T XYZ_A%!(I%+ROW_X) = XC+XYZ_A%!(I%+ROW_XL)*��(ANGLE+XYZ_A%!(I%+ROW_XP)) �T XYZ_A%!(I%+ROW_Y) = YC+XYZ_A%!(I%+ROW_YL)*��(ANGLE+XYZ_A%!(I%+ROW_YP)) �T XYZ_A%!(I%+ROW_Z) = ZC+XYZ_A%!(I%+ROW_ZL)*��(ANGLE+XYZ_A%!(I%+ROW_ZP)) � � � � I% � � � �^�----------------------------------------------------------------------------------------- �� DEFINE POINTS PROCEDURE E � �_TD_PNT(TYPE,XC,YC,ZC,XL,YL,ZL,XP,YP,ZP,SIZE,SPEED,RGBTAB) "5� TYPE - POINT TYPE 0=Circle, 1=Circle Filled ,U� XC,YC,ZC - ORBIT FOCUS. IF XC>10000 THEN IT IS A POINTER TO ANOTHER ENTRY WHICH 64� WILL FORM THE FOCUS FOR THIS ENTRY. @)� XL,YL,ZL - ORBIT LIMITS FROM FOCUS. J$� XP,YP,ZP - ORBIT PHASE ANGLES. T� SIZE - CIRCLE SIZE ^ � SPEED - ORBIT VELOCITY. h=� RGBTAB - NAME OF AN RGB TABLE AS DEFINED BY FN_SETCOL r |# XYZ_A%!(P+ROW_TYPE) = TYPE � XYZ_A%!(P+ROW_X) = 0 � XYZ_A%!(P+ROW_Y) = 0 � XYZ_A%!(P+ROW_Z) = 0 � �! XYZ_A%!(P+ROW_XL) = XL �! XYZ_A%!(P+ROW_YL) = YL �! XYZ_A%!(P+ROW_ZL) = ZL � �! XYZ_A%!(P+ROW_XP) = XP �! XYZ_A%!(P+ROW_YP) = YP �! XYZ_A%!(P+ROW_ZP) = ZP � �! XYZ_A%!(P+ROW_XC) = XC ! XYZ_A%!(P+ROW_YC) = YC " XYZ_A%!(P+ROW_ZC) = -ZC &K XYZ_A%!(P+ROW_SIZE) = SIZE<<10 :� MAINTAIN PRECISION 0 XYZ_A%!(P+ROW_RGB) = 0 :M XYZ_A%!(P+ROW_RGBTAB) = RGBTAB :� ADDRESS OF RGB TABLE D& XYZ_A%!(P+ROW_SPEED) = SPEED N" XYZ_A%!(P+ROW_ANGLE) = 0 X b P += ROW_LEN:MAXSCAN+=1 l =XYZ_A%+P-ROW_LEN v^�----------------------------------------------------------------------------------------- �&� DEFINE COLOURS (RGB FADE TABLES) �8� L1,L2,L3 - LOW VALUES OF RED,GREEN & BLUE (0-255) �9� H1,H2,H3 - HIGH VALUES OF RED,GREEN & BLUE (0-255) � �% � �_SETCOL(L1,L2,L3,H1,H2,H3) � � COLTAB% � � COLTAB% 256*4 � PRFAC=(H1-L1)/256 � PGFAC= (H2-L2)/256 � PBFAC=(H3-L3)/256 � � I%=0 � 255 � 1 �: R = L1+I%*PRFAC:G = L2+I%*PGFAC:B = L3+I%*PBFAC �= COLTAB%!(I%*4)= (((R)<<8) + ((G)<<16) + ((B)<<24)) � I% = COLTAB% ^�----------------------------------------------------------------------------------------- � DISPLAY STRUCTURE * 4 � �_DISPLAY > H � DOCLG � Ȗ:� R* A%=XYZ_A%:B%=XYZ_D%:C%=ROW_LEN1: \ � I% = 0 � MAXSCAN-1 f � MV_DATA p# A%+=ROW_LEN:B%+=ROW_LEN z � I% �( A%=MAXSCAN:B%=XYZ_W%:C%=XYZ_D% �< � SORT :� SORT BY Z FOR DISPLAY ORDER �H A%=PV_X:B%=PV_Y:C%=PV_Z:D%=PMAXB:E%=PMINB:F%=XYZ_D%:G%=MAXSCAN � � PROJECT � A%=XYZ_W%:B%=MAXSCAN � � DISPLAY � � �1,1);L1$ � � �1,3);L2$ � � BANKS � �! ș "OS_Byte",112,BANK1 �! ș "OS_Byte",113,BANK2 � Ȕ BANK1,BANK2 � � � � DOCLG � � DISPLAY � $^�----------------------------------------------------------------------------------------- . � �_START_UP 8 *FX112,1 B *FX113,1 L � V *FX112,2 ` *FX113,2 j � t � ~^�----------------------------------------------------------------------------------------- �� INITIALISATION PROCEDURE � � � �_INIT � �C ș "OS_SWINumberFromString",,"ColourTrans_SetGCOL" � CTSG% �C ș "OS_SWINumberFromString",,"ColourTrans_SetGCOL" � CTSG% �- ș "OS_ReadModeVariable",-1,11 � ,,x �- ș "OS_ReadModeVariable",-1,12 � ,,y �- ș "OS_ReadModeVariable",-1,4 � ,,ex �- ș "OS_ReadModeVariable",-1,5 � ,,ey �/ MaxWidth=(x+1)<<ex:MaxHeight=(y+1)<<ey � BANK1 = 1 BANK2 = 2 MAXSCAN = 1 MAXLINE = 30 ( � 28+128 2 DOCLG=�:BANKS=� < F � P Z^�----------------------------------------------------------------------------------------- d � �_ROW_METRICS n x ROW_X = 0 � ROW_Y = 4 � ROW_Z = 8 � � ROW_XL = 12 � ROW_YL = 16 � ROW_ZL = 20 � � ROW_XP = 24 � ROW_YP = 28 � ROW_ZP = 32 � � ROW_XC = 36 � ROW_YC = 40 ROW_ZC = 44 ROW_SIZE = 48 " ROW_RGB = 52 , ROW_RGBTAB = 56 6 @ ROW_ANGLE = 60 J ROW_SPEED = 64 T ROW_SPRITE = 68 ^ hN ROW_TYPE = 72 :� 0=CIRCLE, 1=FILLED CIRCLE r ROW_RGBNUM = 76 | � ROW_WORDS = 80/4 �" ROW_LEN = ROW_WORDS*4 � ROW_LEN1 = 80 � � �^�----------------------------------------------------------------------------------------- �� INITIALISE ARRAYS �� � � �_INIT_A � �_ROW_METRICS �! � XYZ_A% MAXPNT*ROW_LEN �! � XYZ_D% MAXPNT*ROW_LEN � � XYZ_W% MAXPNT*4 � D%=XYZ_D% ! � I% = 0 � MAXPNT*4 � 4 XYZ_W%!(I%) = D% D%+=ROW_LEN & � I% 0 �_ASSEMBLE : � D N^�----------------------------------------------------------------------------------------- X � �_ASSEMBLE b� ASSEMBLY 4096 l � PASS = 0 � 2 � 2 v P% = ASSEMBLY � [OPT PASS �: .COM_SHOW EQUD 0 ;1=Force display �] �� SHELL SORT �0� A% = COUNT, B% = WORK AREA, C% = SORT DATA �� CALL SORT �J� B% IS A NON DIMENSIONED ARRAY, EACH ELEMENT IS A POINTER TO OBJ DATA �3� C% IS SORTED AND ORDERED ADDRESSES PUT TO B%. � �F COMP = ROW_Z :� SORT ARGUMENT INTEGER POSITION � � S_NUM = 0 � S_W = 1 S_A = 2 S_WINDEX1 = 3 S_WINDEX2 = 4 S_WK1 = 5 * S_WK2 = 6 4 S_CMP1 = 7 > S_CMP2 = 8 H S_CNT = 9 R S_WK3 = 10 \ S_SPLIT = 11 f1 S_WINDEX3 = 12 :S_ROW = 12 p [ OPT PASS z � .SORT � MOV S_NUM,R0 � CMP R0,#2 � MOVLE PC,14 � MOV S_NUM,R0 � MOV S_W,R1 � �; �"; Ȑ WORK WITH ENTRY ADDRESSES �; � MOV S_ROW,R2 � MOV S_WK1,R1 � MOV S_WK2,R0 .FLL STR S_ROW,[S_WK1,#0] ADD S_WK1,S_WK1,#4 $$ ADD S_ROW,S_ROW,#ROW_LEN . SUBS S_WK2,S_WK2,#1 8 BGE FLL B L MOV S_W,R1 V ` j; S_SPLIT = (NUMBER-1)/2 t ~ SUB S_SPLIT,S_NUM,#1 �% MOV S_SPLIT,S_SPLIT,LSR#1 �;� �.R1 � �*; � S_WINDEX1 = S_SPLIT+1 � NUMBER � 1 � � �$ ADD S_WINDEX1,S_SPLIT,#1 � MOV S_CNT,S_NUM �.F1 � �5;� S_WINDEX2 = S_WINDEX1 - S_SPLIT � 0 � -S_SPLIT + SUB S_WINDEX2,S_WINDEX1,S_SPLIT .F2 : LDR S_CMP1,[S_W,S_WINDEX2,LSL#2] ;� INDEX 1 (D ADD S_WINDEX3,S_WINDEX2,S_SPLIT ;ADD S_SPLIT � INDEX 2< LDR S_CMP2,[S_W,S_WINDEX3,LSL#2] ;� � INDEX 2 < F8 LDR S_WK1,[S_CMP1,#COMP] ;� REF �UE P2 LDR S_WK2,[S_CMP2,#COMP] ;� � Z; CMP S_WK1,S_WK2 ;COMPARE �UES d6 BLT NOSWAP ;�...... n; x; Ȕ B% INDEX �UES �LY �; � MOV S_WK3,S_CMP1 � MOV S_CMP1,S_CMP2 � MOV S_CMP2,S_WK3 �, STR S_CMP1,[S_W,S_WINDEX2,LSL#2] �, STR S_CMP2,[S_W,S_WINDEX3,LSL#2] �; �.NOSWAP �; �;� S_WINDEX2 � �: SUBS S_WINDEX2,S_WINDEX2,S_SPLIT ;� - S_SPLIT �2 BGE F2 ;� 0 ;� S_WINDEX1 "3 ADD S_WINDEX1,S_WINDEX1,#1 ;� 1 , CMP S_NUM,S_WINDEX1 68 BNE F1 ;� NUM - 1 @ JB MOVS S_SPLIT,S_SPLIT,LSR#1 ;S_SPLIT = S_SPLIT/2 T;� S_SPLIT = 0 ^ BGT R1 h MOV PC,R14 r ] |� DIVIDE ROUTINE � �1V_NUMBER = 0 :� NUMBER TO BE DIVIDED �'V_DIVISOR = 1 :� DIVIDED BY �#V_QUOTIENT = 2 :� RESULT �&V_REMAINDER = 3 :� REMAINDER �*V_PLACE = 4 :� WORK REGISTER �V_MSIGN = 6 �V_DSIGN = 7 �S� RESULTS - R0 = QUOTIENT,DVD_QUOTIENT = QUOTIENT,DVD_REMAINDER = REMAINDER � �[ OPT PASS �.DVD �& STMFD R13!,{R1-R12,R14} 7 �S V_MSIGN,V_NUMBER,#1<<31 ;SET SIGNS < RSBMI V_NUMBER,V_NUMBER,#0 ;MAKE POSITIVE , � V_DSIGN,V_MSIGN,V_DIVISOR &! CMP V_DIVISOR,#0 0< RSBMI V_DIVISOR,V_DIVISOR,#1 ;MAKE POSITIVE : D" MOV V_QUOTIENT,#0 N# MOV V_REMAINDER,#0 X# MOV V_PLACE,#1<<31 b.division_loop lK MOVS V_NUMBER,V_NUMBER,ASL#1 ; DOUBLE SHIFT LEFT v8 ADC V_REMAINDER,V_REMAINDER,V_REMAINDER �N CMP V_REMAINDER,V_DIVISOR ;�IDE 1ST BIN. DIGITS ? �D SUBGE V_REMAINDER,V_REMAINDER,V_DIVISOR ;1 DIGIT �IDE �E �RGE V_QUOTIENT,V_QUOTIENT,V_PLACE ;PARTIAL RESULT �; MOVS V_PLACE,V_PLACE,LSR#1 ; � �" BNE division_loop � � CMP V_DSIGN,#0 �- RSBMI V_QUOTIENT,V_QUOTIENT,#0 � CMP V_MSIGN,#0 �/ RSBMI V_REMAINDER,V_REMAINDER,#0 � �. STR V_REMAINDER,DVD_REMAINDER �, STR V_QUOTIENT,DVD_QUOTIENT " MOV R0,V_QUOTIENT & LDMFD R13!,{R1-R12,R14} MOV PC,R14 .DVD_QUOTIENT EQUD 0 *.DVD_REMAINDER EQUD 0 4 ] >� H%� PROJECTION TRANSFORMS FOR !WHAT R� A% = PV_X R0 \� B% = PV_Y R1 f� C% = PV_Z R2 p� D% = PMAXB R3 z� E% = PMINB R4 �� F% = XYZ_A% R5 �� G% = MAXSCAN R6 �� CALL PROJECT � �* P_WK1 = 0 :P_NUMBER = 0 � P_WK2 = 1 � P_WK3 = 2 � �* P_XVAL = 3 :P_PMAXB = 3 �* P_YVAL = 4 :P_PMINB = 4 � P_ZVAL = 5 � � P_DIVISOR = 6 P_PVX = 7 P_PVY = 8 * P_PARMS = 9 :P_BVAL = 9 $ P_NUM = 10 . P_ROW = 11 8 P_PVZ = 12 B L [ OPT PASS V.PROJECT `& STMFD R13!,{R0-R12,R14} j t MOV P_PVX,R0 ~ STR R3,SVE_PMAXB � STR R4,SVE_PMINB � MOV P_ROW,R5 � MOV P_NUM,R6 � MOV P_PVY,R1 � MOV P_PVZ,R2 � �; � P_ROW = FIRST � LAST �.F1 �) LDR P_WK1,[P_ROW,#ROW_SIZE] � CMP P_WK1,#0 � BLE PNXT_ROW �' LDR P_XVAL,[P_ROW,#ROW_X] ' LDR P_YVAL,[P_ROW,#ROW_Y] ' LDR P_ZVAL,[P_ROW,#ROW_Z] O; ARRAY(ROW,X) = ( ARRAY(ROW,Z)*PV_X-ARRAY(ROW,X)*PV_Z)/(ARRAY(ROW,Z)-PV_Z) ( 2 <$ MUL P_WK1,P_ZVAL,P_PVX F$ MUL P_WK2,P_XVAL,P_PVZ P& SUB P_NUMBER,P_WK1,P_WK2 Z( SUB P_DIVISOR,P_ZVAL,P_PVZ d MOV R1,P_DIVISOR n BL DVD x MOV P_WK1,R0 �& STR P_WK1,[P_ROW,#ROW_X] � �N; ARRAY(ROW,Y) = (ARRAY(ROW,Z)*PV_Y-ARRAY(ROW,Y)*PV_Z)/(ARRAY(ROW,Z)-PV_Z) � �$ MUL P_WK1,P_ZVAL,P_PVY �$ MUL P_WK2,P_YVAL,P_PVZ �& SUB P_NUMBER,P_WK1,P_WK2 � MOV R1,P_DIVISOR � BL DVD � MOV P_WK1,R0 �& STR P_WK1,[P_ROW,#ROW_Y] � �B; ARRAY(ROW,SIZE) = (ARRAY(ROW,SIZE)*PV_Z)/(ARRAY(ROW,Z)-PV_Z) * LDR P_BVAL,[P_ROW,#ROW_SIZE] ' MUL P_NUMBER,P_BVAL,P_PVZ "( SUB P_DIVISOR,P_ZVAL,P_PVZ , MOV R1,P_DIVISOR 67 BL DVD ;EXTENAL REF @ MOV P_WK1,R0 J RSB P_WK1,P_WK1,#0 T) STR P_WK1,[P_ROW,#ROW_SIZE] ^ hA; ARRAY(ROW,RGB) = (ARRAY(ROW,Z) - PMAXB)*256/(PMAXB - PMINB) r | �# LDR P_PMAXB,SVE_PMAXB �# LDR P_PMINB,SVE_PMINB �+ SUB P_DIVISOR,P_PMAXB,P_PMINB � �& SUB P_WK2,P_ZVAL,P_PMAXB �' MOV P_NUMBER,P_WK2,LSL #8 � MOV R1,P_DIVISOR �8 BL DVD ;EXTERNAL REF � � MOV P_WK1,R0 � RSB P_WK1,P_WK1,#0 � CMP P_WK1,#255 � MOVGT P_WK1,#255 CMP P_WK1,#0 MOVLT P_WK1,#0 + STR P_WK1,[P_ROW,#ROW_RGBNUM] &# MOV P_WK1,P_WK1,LSL#2 0+ LDR P_WK2,[P_ROW,#ROW_RGBTAB] :% LDR P_WK1,[P_WK2,P_WK1] D( STR P_WK1,[P_ROW,#ROW_RGB] N X .PNXT_ROW b2 ADD P_ROW,P_ROW,#ROW_LEN ;� 1 l! SUBS P_NUM,P_NUM,#1 v4 BGT F1 ;� MAX �$ LDMFD R13!,{R0-R12,PC} �.SVE_PMAXB EQUD 0 �.SVE_PMINB EQUD 0 � ] �� �� DISPLAY FOR !WHAT �<� R0...A%=XYZ_W:R1...B%=CONT:R2...C%=SPRITE AREA ADDRESS �� CALL DISPLAY � � vdu = 256 � PlotMove = 4 �! PlotFilledCircle = 153 �! PlotCircle = 145 D_W1 = 0 D_DW1 = 7 D_SIZE = 8 * D_SAREA = 9 4 D_WINDEX = 10 > D_NUM = 11 H D_ROW = 12 R \ D_TAILX = 1 f D_TAILY = 2 p D_RGB = 3 z D_TSIZE = 4 � D_TAILCNT = 5 � D_TAIL = 6 � D_TAILOX = 7 � D_TAILOY = 8 � D_TW1 = 9 � D_SINC = 10 � � [ OPT PASS � .DISPLAY � MOV D_NUM,R1 � MOV D_WINDEX,R0 � MOV D_SAREA,R2 �7 MOV R0,#19 ;Ȗ VSYNC SWI "OS_Byte" ; ; � D_ROW = FIRST � LAST $.F1 ." LDR D_ROW,[D_WINDEX] 8; LDR R0,[D_ROW,#ROW_RGB] ;RGB � ENTRY B5 MOV R3,#%100000000 ;FLAGS L MOV R4,#8 V= SWI &40743 ;� TRANS SET � `* LDR D_SIZE,[D_ROW,#ROW_SIZE] j) LDR D_DW1,[D_ROW,#ROW_TYPE] t LDR R0,COM_SHOW ~ CMP R0,#0 � BNE D_SHOW � CMP D_DW1,#127 � BGT DNXT_ROW �.D_SHOW �# LDR R1,[D_ROW,#ROW_X] �# LDR R2,[D_ROW,#ROW_Y] �2 MOV R0,#PlotMove ;� � SWI "OS_Plot" � �& LDR R0,[D_ROW,#ROW_TYPE] � � R0,R0,#%1111111 � CMP R0,#0 ( MOVNE R0,#PlotFilledCircle 8 �Q R0,#PlotCircle ;ȐED ȏ � & LDR R1,[D_ROW,#ROW_SIZE] MOV R1,R1,LSR #10 ( MOV R2,#0 2 SWI "OS_Plot" < F .DNXT_ROW P2 ADD D_WINDEX,D_WINDEX,#4 ;� 1 Z/ SUBS D_NUM,D_NUM,#1 ; d4 BGT F1 ;� MAX n MOV PC,R14 x � ] �J�--------------------------------------------------------------------- �� FAST DATA MOVE ROUTINE � � � �"� ON ENTRY : R0 = FROM ADDRESS � � R1 = TO ADDRESS �!� R2 = BYTE LENGTH � � R_FROM = 0:RF=0 � R_TO = 1:RT=1 � RL = 2 RSR = 3 RSL = 14 " ,� ONLY USED IN FAST MOVE 6 @ RC8 = 3 J RMB = 4 T RW = 12 ^ RW1 = 11 h r [OPT PASS |.MV_DATA � � CMP RL,#0 � MOVLE PC,R14 � STMFD R13!,{0-12,R14} � �T;� FROM � � ADDRESS � SAME BOUNDARY ALIGN � USE FAST � USE BYTE BY BYTE SHIFTING � � CMP RL,#4 � BLE MB280 �C TST R_TO,#%11 ;IS TARGET ALIGNED? �= BEQ MBLOOP20 ;BRANCH � YES � .MBLOOP10 � LDRB R4,[R_FROM],#1 STRB R4,[R_TO],#1 SUBS RL,RL,#1 9 BEQ MVEXIT ;FINISHED & TST R_TO,#%11 0 BNE MBLOOP10 :G.MBLOOP20 ;TARGET IS WORD ALIGNED D TST R_FROM,#%11 NJ BNE MB200 ;BRANCH � SOURCE � ALIGNED X7;TARGET � SOURCE ARE IN SAME ALIGNMENT - USE FAST � bG.MBLOOP100 ; � ODD ( 0 � 7 ) WORDS l v � RW,RL,#%11100 � MOV RW,RW,LSL#1 � ADR RMB,MTAB1E � SUB RMB,RMB,RW � MOV PC,RMB � � LDR R4,[R_FROM],#4 �1 STR R4,[R_TO],#4 ;7 WORDS � LDR R4,[R_FROM],#4 �1 STR R4,[R_TO],#4 ;6 WORDS � LDR R4,[R_FROM],#4 �1 STR R4,[R_TO],#4 ;5 WORDS � LDR R4,[R_FROM],#4 �1 STR R4,[R_TO],#4 ;4 WORDS LDR R4,[R_FROM],#4 1 STR R4,[R_TO],#4 ;3 WORDS LDR R4,[R_FROM],#4 1 STR R4,[R_TO],#4 ;2 WORDS * LDR R4,[R_FROM],#4 41 STR R4,[R_TO],#4 ;1 WORDS >.MTAB1E H;� BLOCKS � 8 WORDS R \ � RW,RL,#%11100000 f MOV RW,RW,LSR#2 p ADR RMB,MTAB8E z SUB RMB,RMB,RW � LDR RW,EMASK � � RC8,RL,RW � MOV RC8,RC8,LSR#8 � MOV PC,RMB � �.MVLOOP8 � �! LDMIA (R_FROM)!,{R5-R12} �6 STMIA (R_TO)!,{R5-R12} ;8*8 WORDS �! LDMIA (R_FROM)!,{R5-R12} �6 STMIA (R_TO)!,{R5-R12} ;7*8 WORDS �! LDMIA (R_FROM)!,{R5-R12} �6 STMIA (R_TO)!,{R5-R12} ;6*8 WORDS ! LDMIA (R_FROM)!,{R5-R12} 6 STMIA (R_TO)!,{R5-R12} ;5*8 WORDS ! LDMIA (R_FROM)!,{R5-R12} $6 STMIA (R_TO)!,{R5-R12} ;4*8 WORDS .! LDMIA (R_FROM)!,{R5-R12} 86 STMIA (R_TO)!,{R5-R12} ;3*8 WORDS B! LDMIA (R_FROM)!,{R5-R12} L6 STMIA (R_TO)!,{R5-R12} ;2*8 WORDS V! LDMIA (R_FROM)!,{R5-R12} `6 STMIA (R_TO)!,{R5-R12} ;1*8 WORDS j.MTAB8E t SUBS RC8,RC8,#1 ~ BGE MVLOOP8 � �;� ODD ( 0 � 3 ) BYTES � � � RW,RL,#%11 � MOV RW,RW,LSL#3 � ADR RMB,MTABBE � SUB RMB,RMB,RW � MOV PC,RMB � �5 LDRB R5,[R_FROM],#1 ;3 BYTES � STRB R5,[R_TO],#1 �5 LDRB R5,[R_FROM],#1 ;2 BYTES STRB R5,[R_TO],#1 4 LDRB R5,[R_FROM],#1 ;1 BYTE STRB R5,[R_TO],#1 .MTABBE (.MVEXIT 2 LDMFD R13!,{0-12,R14} < MOV PC,R14 F PK.MB200 ;TARGET IS ALIGNED SOURCE IS � Z8 � RSR,R_FROM,#%11 ;�SET IN WORD d@ BIC R_FROM,R_FROM,#%11 ;ALIGN SOURCE (LOW) n9 MOV RSR,RSR,LSL#3 ;RIGHT SHIFT x8 RSB RSL,RSR,#32 ;LEFT SHIFT � �;NOW DETERMINE BLOCK �S � � .MB210 � CMP RL,#8*4 �< BLT MB240 ;BRANCH LESS THAN 8 � LDMIA (R_FROM),{R4-R12} � MOV R4,R4,LSR RSR � �R R4,R4,R5,LSL RSL � � MOV R5,R5,LSR RSR � �R R5,R5,R6,LSL RSL � MOV R6,R6,LSR RSR �R R6,R6,R7,LSL RSL " MOV R7,R7,LSR RSR , �R R7,R7,R8,LSL RSL 6 @ MOV R8,R8,LSR RSR J �R R8,R8,R9,LSL RSL T ^ MOV R9,R9,LSR RSR h �R R9,R9,R10,LSL RSL r | MOV R10,R10,LSR RSR �! �R R10,R10,R11,LSL RSL � � MOV R11,R11,LSR RSR �! �R R11,R11,R12,LSL RSL � � STMIA (R_TO)!,{R4-R11} �! ADD R_FROM,R_FROM,#4*8 � SUBS RL,RL,#8*4 �? BGT MB210 ;GO DO ANOTHER 8 WORDS � .MB240 � CMP RL,#4*4 �< BLT MB250 ;BRANCH LESS THAN 4 � LDMIA (R_FROM),{R4-R8} MOV R4,R4,LSR RSR �R R4,R4,R5,LSL RSL & 0 MOV R5,R5,LSR RSR : �R R5,R5,R6,LSL RSL D N MOV R6,R6,LSR RSR X �R R6,R6,R7,LSL RSL b l MOV R7,R7,LSR RSR v �R R7,R7,R8,LSL RSL � � STMIA (R_TO)!,{R4-R7} � SUB RL,RL,#4*4 �! ADD R_FROM,R_FROM,#4*4 � .MB250 � CMP RL,#2*4 �G BLT MB260 ;BRANCH LESS THAN 2 WORDS � GO � LDMIA (R_FROM),{R4-R6} � MOV R4,R4,LSR RSR � �R R4,R4,R5,LSL RSL � MOV R5,R5,LSR RSR � �R R5,R5,R6,LSL RSL � STMIA (R_TO)!,{R4-R5} ! SUB RL,RL,#4*2 !! ADD R_FROM,R_FROM,#4*2 ! .MB260 ! CMP RL,#4 !*A BLT MB270 ;BRANCH LESS THAN 1 WORD !4 LDMIA (R_FROM),{R4-R5} !> MOV R4,R4,LSR RSR !H �R R4,R4,R5,LSL RSL !R SUB RL,RL,#4 !\ STMIA (R_TO)!,{R4} !f ADD R_FROM,R_FROM,#4 !p8.MB270 ;LAST FEW BYTES !z CMP RL,#0 !� BLE MVEXIT !� LDMIA (R_FROM),{R4-R5} !� MOV R4,R4,LSR RSR !� �R R4,R4,R5,LSL RSL !� .MB275 !� !� STRB R4,[R_TO],#1 !� MOV R4,R4,LSR #8 !� SUBS RL,RL,#1 !� BGT MB275 !� BAL MVEXIT !�=.MB280 ;LESS THAN 4 BYTES !� LDRB R4,[R_FROM],#1 " STRB R4,[R_TO],#1 " SUBS RL,RL,#1 "9 BEQ MVEXIT ;FINISHED "$ BAL MB280 "..EMASK EQUD &FFFFFF00 "8] "B "L � PASS "V � "`^�----------------------------------------------------------------------------------------- "j � �_W "t � " ARRAY XYZ_W%" "~ � "�' � X = 0 � (MAXPNT-1)*4 � 4 "�/ � "ENTRY=";X/4;" VALUE=";XYZ_W%!X "� � X "� � "�^�----------------------------------------------------------------------------------------- "� � �_D "� � " ARRAY XYZ_D%" "�5 � X = 0 � (MAXSCAN-1)*ROW_LEN � ROW_LEN "�� � " X=";XYZ_D%!X;" Y="; XYZ_D%!(X+4);" Z="; XYZ_D%!(X+8);" XI="; XYZ_D%!(X+12);" YI="; XYZ_D%!(X+16);" ZI="; XYZ_D%!(X+20);" SIZE="; XYZ_D%!(X+ROW_SIZE);" RGB="; XYZ_D%!(X+28);" RGBTAB=&";~ XYZ_D%!(X+32) "� � X "� � "�^�----------------------------------------------------------------------------------------- # � �_A # � " ARRAY XYZ_A%" #5 � X = 0 � (MAXSCAN-1)*ROW_LEN � ROW_LEN #� � " X=";XYZ_A%!X;" Y="; XYZ_A%!(X+4);" Z="; XYZ_A%!(X+8);" Xc="; XYZ_A%!(X+36);" YC="; XYZ_A%!(X+40);" ZC="; XYZ_A%!(X+44);" SIZE="; XYZ_A%!(X+48);" RGBTAB=&";~ XYZ_A%!(X+56);" SPRITE=";~ XYZ_A%!(X+ROW_SPRITE) #( � X #2 � #<\�--------------------------------------------------------------------------------------- �
00000000 0d 00 0a 0b f4 3e 21 57 48 41 54 0d 00 14 22 ee |.....>!WHAT...".| 00000010 20 85 20 f1 20 8a 31 2c 31 29 20 f6 24 20 22 20 | . . .1,1) .$ " | 00000020 41 54 20 4c 49 4e 45 20 22 20 9e 3a e0 0d 00 1e |AT LINE " .:....| 00000030 04 0d 00 28 5e f4 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |...(^.----------| 00000040 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00000080 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d |---------------.| 00000090 00 32 1c f4 20 4f 50 45 52 41 54 49 4f 4e 41 4c |.2.. OPERATIONAL| 000000a0 20 50 41 52 41 4d 45 54 45 52 53 0d 00 3c 04 0d | PARAMETERS..<..| 000000b0 00 46 15 20 20 20 20 20 20 4d 41 58 50 4e 54 20 |.F. MAXPNT | 000000c0 3d 20 33 30 0d 00 50 18 20 20 20 20 20 20 50 4d |= 30..P. PM| 000000d0 49 4e 42 20 20 3d 20 2d 31 30 30 30 0d 00 5a 15 |INB = -1000..Z.| 000000e0 20 20 20 20 20 20 50 4d 41 58 42 20 20 3d 20 30 | PMAXB = 0| 000000f0 30 0d 00 64 40 20 20 20 20 20 20 50 56 5f 58 3d |0..d@ PV_X=| 00000100 36 34 30 20 3a 20 50 56 5f 59 20 3d 20 35 31 32 |640 : PV_Y = 512| 00000110 20 3a 20 50 56 5f 5a 20 3d 34 30 30 20 20 20 20 | : PV_Z =400 | 00000120 3a f4 20 50 4f 49 4e 54 53 20 4f 46 20 56 49 45 |:. POINTS OF VIE| 00000130 57 0d 00 6e 04 0d 00 78 5e f4 2d 2d 2d 2d 2d 2d |W..n...x^.------| 00000140 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00000190 2d 2d 2d 0d 00 82 10 20 20 20 20 20 20 f2 5f 49 |---.... ._I| 000001a0 4e 49 54 0d 00 8c 12 20 20 20 20 20 20 f2 5f 49 |NIT.... ._I| 000001b0 4e 49 54 5f 41 0d 00 96 14 20 20 20 20 20 20 f2 |NIT_A.... .| 000001c0 5f 53 54 41 52 54 5f 55 50 0d 00 a0 14 20 20 20 |_START_UP.... | 000001d0 20 20 20 f2 5f 4d 41 49 4e 4c 49 4e 45 0d 00 aa | ._MAINLINE...| 000001e0 0b 20 20 20 20 20 20 fa 0d 00 b4 5c f4 2d 2d 2d |. ....\.---| 000001f0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00000240 2d 2d 2d 2d 0d 00 be 16 20 20 20 20 20 20 dd 20 |----.... . | 00000250 f2 5f 4d 41 49 4e 4c 49 4e 45 0d 00 c8 04 0d 00 |._MAINLINE......| 00000260 d2 13 20 20 20 20 20 20 20 f2 5f 53 43 45 4e 45 |.. ._SCENE| 00000270 31 0d 00 dc 0c 20 20 20 20 20 20 20 f5 0d 00 e6 |1.... ....| 00000280 13 20 20 20 20 20 20 20 20 f2 5f 4f 52 42 49 54 |. ._ORBIT| 00000290 0d 00 f0 15 20 20 20 20 20 20 20 20 f2 5f 44 49 |.... ._DI| 000002a0 53 50 4c 41 59 0d 00 fa 15 20 20 20 20 20 20 20 |SPLAY.... | 000002b0 20 43 24 20 3d 20 bf 28 30 29 0d 01 04 3f 20 20 | C$ = .(0)...? | 000002c0 20 20 20 20 20 20 e7 20 43 24 3d 22 72 22 20 84 | . C$="r" .| 000002d0 20 43 24 3d 22 52 22 20 8c 20 21 43 4f 4d 5f 53 | C$="R" . !COM_S| 000002e0 48 4f 57 20 3d 20 ac 20 21 43 4f 4d 5f 53 48 4f |HOW = . !COM_SHO| 000002f0 57 3a 44 4f 43 4c 47 3d b9 0d 01 0e 2f 20 20 20 |W:DOCLG=..../ | 00000300 20 20 20 20 20 e7 20 43 24 3d 22 74 22 20 84 20 | . C$="t" . | 00000310 43 24 3d 22 54 22 20 8c 20 44 4f 43 4c 47 20 3d |C$="T" . DOCLG =| 00000320 20 ac 20 44 4f 43 4c 47 0d 01 18 1c 20 20 20 20 | . DOCLG.... | 00000330 20 20 20 fd 20 43 24 3d 22 51 22 20 84 20 43 24 | . C$="Q" . C$| 00000340 3d 22 71 22 0d 01 22 04 0d 01 2c 13 20 20 20 20 |="q".."...,. | 00000350 20 20 20 f2 5f 53 43 45 4e 45 32 0d 01 36 0c 20 | ._SCENE2..6. | 00000360 20 20 20 20 20 20 f5 0d 01 40 13 20 20 20 20 20 | ...@. | 00000370 20 20 20 f2 5f 4f 52 42 49 54 0d 01 4a 15 20 20 | ._ORBIT..J. | 00000380 20 20 20 20 20 20 f2 5f 44 49 53 50 4c 41 59 0d | ._DISPLAY.| 00000390 01 54 15 20 20 20 20 20 20 20 20 43 24 20 3d 20 |.T. C$ = | 000003a0 bf 28 30 29 0d 01 5e 1c 20 20 20 20 20 20 20 fd |.(0)..^. .| 000003b0 20 43 24 3d 22 51 22 20 84 20 43 24 3d 22 71 22 | C$="Q" . C$="q"| 000003c0 0d 01 68 1d 20 20 20 20 20 20 20 c8 99 20 22 4f |..h. .. "O| 000003d0 53 5f 42 79 74 65 22 2c 31 31 32 2c 31 0d 01 72 |S_Byte",112,1..r| 000003e0 1d 20 20 20 20 20 20 20 c8 99 20 22 4f 53 5f 42 |. .. "OS_B| 000003f0 79 74 65 22 2c 31 31 33 2c 31 0d 01 7c 0b 20 20 |yte",113,1..|. | 00000400 20 20 20 20 e1 0d 01 86 5e f4 2d 2d 2d 2d 2d 2d | ....^.------| 00000410 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00000460 2d 2d 2d 0d 01 90 28 f4 20 44 45 46 49 4e 45 20 |---...(. DEFINE | 00000470 47 52 41 50 48 49 43 20 44 41 54 41 20 42 41 53 |GRAPHIC DATA BAS| 00000480 45 20 46 4f 52 20 21 57 48 41 54 0d 01 9a 04 0d |E FOR !WHAT.....| 00000490 01 a4 14 20 20 20 20 20 20 dd 20 f2 5f 53 43 45 |... . ._SCE| 000004a0 4e 45 31 0d 01 ae 04 0d 01 b8 17 20 20 20 20 20 |NE1........ | 000004b0 20 50 3d 30 3a 4d 41 58 53 43 41 4e 3d 30 0d 01 | P=0:MAXSCAN=0..| 000004c0 c2 04 0d 01 cc 4a f4 20 53 45 54 20 55 50 20 43 |.....J. SET UP C| 000004d0 4f 4c 4f 55 52 20 46 41 44 45 20 54 41 42 4c 45 |OLOUR FADE TABLE| 000004e0 53 20 28 53 45 45 20 44 45 46 20 46 4e 5f 53 45 |S (SEE DEF FN_SE| 000004f0 54 43 4f 4c 20 46 4f 52 20 50 41 52 41 4d 45 54 |TCOL FOR PARAMET| 00000500 45 52 20 44 45 54 41 49 4c 53 29 2e 0d 01 d6 04 |ER DETAILS).....| 00000510 0d 01 e0 2e 20 20 20 20 20 20 52 65 64 20 20 20 |.... Red | 00000520 20 20 20 20 3d a4 5f 53 45 54 43 4f 4c 28 32 35 | =._SETCOL(25| 00000530 35 2c 30 2c 30 2c 31 30 30 2c 30 2c 30 29 0d 01 |5,0,0,100,0,0)..| 00000540 ea 2e 20 20 20 20 20 20 47 72 65 65 6e 20 20 20 |.. Green | 00000550 20 20 3d a4 5f 53 45 54 43 4f 4c 28 30 2c 32 35 | =._SETCOL(0,25| 00000560 35 2c 30 2c 30 2c 31 30 30 2c 30 29 0d 01 f4 2e |5,0,0,100,0)....| 00000570 20 20 20 20 20 20 42 6c 75 65 20 20 20 20 20 20 | Blue | 00000580 3d a4 5f 53 45 54 43 4f 4c 28 30 2c 30 2c 32 35 |=._SETCOL(0,0,25| 00000590 35 2c 30 2c 30 2c 31 30 30 29 0d 01 fe 32 20 20 |5,0,0,100)...2 | 000005a0 20 20 20 20 4d 61 67 65 6e 74 61 20 20 20 3d a4 | Magenta =.| 000005b0 5f 53 45 54 43 4f 4c 28 32 35 35 2c 30 2c 32 35 |_SETCOL(255,0,25| 000005c0 35 2c 31 30 30 2c 30 2c 31 30 30 29 0d 02 08 32 |5,100,0,100)...2| 000005d0 20 20 20 20 20 20 59 65 6c 6c 6f 77 20 20 20 20 | Yellow | 000005e0 3d a4 5f 53 45 54 43 4f 4c 28 32 35 35 2c 32 35 |=._SETCOL(255,25| 000005f0 35 2c 30 2c 31 30 30 2c 31 30 30 2c 30 29 0d 02 |5,0,100,100,0)..| 00000600 12 32 20 20 20 20 20 20 43 79 61 6e 20 20 20 20 |.2 Cyan | 00000610 20 20 3d a4 5f 53 45 54 43 4f 4c 28 30 2c 32 35 | =._SETCOL(0,25| 00000620 35 2c 32 35 35 2c 30 2c 31 30 30 2c 31 30 30 29 |5,255,0,100,100)| 00000630 0d 02 1c 32 20 20 20 20 20 20 52 65 64 59 65 6c |...2 RedYel| 00000640 6c 6f 77 20 3d a4 5f 53 45 54 43 4f 4c 28 32 35 |low =._SETCOL(25| 00000650 35 2c 32 35 35 2c 30 2c 32 35 35 2c 31 30 30 2c |5,255,0,255,100,| 00000660 30 29 0d 02 26 30 20 20 20 20 20 20 47 72 65 79 |0)..&0 Grey| 00000670 20 20 20 20 20 20 3d a4 5f 53 45 54 43 4f 4c 28 | =._SETCOL(| 00000680 32 35 35 2c 32 35 35 2c 32 35 35 2c 30 2c 30 2c |255,255,255,0,0,| 00000690 30 29 0d 02 30 04 0d 02 3a 21 f4 20 53 45 54 20 |0)..0...:!. SET | 000006a0 55 50 20 45 50 49 43 59 43 4c 49 43 20 44 45 46 |UP EPICYCLIC DEF| 000006b0 49 4e 54 49 4f 4e 53 0d 02 44 2e f4 20 53 45 45 |INTIONS..D.. SEE| 000006c0 20 44 45 46 20 46 4e 5f 54 44 5f 50 4e 54 20 46 | DEF FN_TD_PNT F| 000006d0 4f 52 20 50 41 52 41 4d 45 54 45 52 20 44 45 54 |OR PARAMETER DET| 000006e0 41 49 4c 53 2e 0d 02 4e 04 0d 02 58 2f 20 20 20 |AILS...N...X/ | 000006f0 20 20 20 57 3d 31 32 38 30 3a 48 3d 31 30 30 30 | W=1280:H=1000| 00000700 3a 52 3d 48 2f 32 3a 53 3d 33 30 30 30 3a 46 3d |:R=H/2:S=3000:F=| 00000710 2e 35 3a 73 3d 31 2e 39 0d 02 62 04 0d 02 6c 44 |.5:s=1.9..b...lD| 00000720 20 20 20 20 20 20 50 30 20 20 20 20 20 3d a4 5f | P0 =._| 00000730 54 44 5f 50 4e 54 28 31 32 38 2c 57 2f 32 2c 48 |TD_PNT(128,W/2,H| 00000740 2f 32 2c 35 30 30 2c 30 2c 30 2c 36 30 30 2c 30 |/2,500,0,0,600,0| 00000750 2c 30 2c 30 2c 52 2c 35 30 30 30 2c 52 65 64 29 |,0,0,R,5000,Red)| 00000760 0d 02 76 0f 20 20 20 20 20 20 52 3d 52 2a 46 0d |..v. R=R*F.| 00000770 02 80 3f 20 20 20 20 20 20 50 31 20 20 20 20 20 |..? P1 | 00000780 3d a4 5f 54 44 5f 50 4e 54 28 31 32 38 2b 31 2c |=._TD_PNT(128+1,| 00000790 50 30 2c 30 2c 30 2c 52 2c 52 2c 30 2c 30 2c 39 |P0,0,0,R,R,0,0,9| 000007a0 30 2c 30 2c 52 2c 53 2c 47 72 65 65 6e 29 0d 02 |0,0,R,S,Green)..| 000007b0 8a 15 20 20 20 20 20 20 52 3d 52 2a 46 3a 53 3d |.. R=R*F:S=| 000007c0 53 2a 73 0d 02 94 3e 20 20 20 20 20 20 50 32 20 |S*s...> P2 | 000007d0 20 20 20 20 3d a4 5f 54 44 5f 50 4e 54 28 31 32 | =._TD_PNT(12| 000007e0 38 2b 31 2c 50 31 2c 30 2c 30 2c 52 2c 52 2c 30 |8+1,P1,0,0,R,R,0| 000007f0 2c 39 30 2c 30 2c 30 2c 52 2c 53 2c 42 6c 75 65 |,90,0,0,R,S,Blue| 00000800 29 0d 02 9e 15 20 20 20 20 20 20 52 3d 52 2a 46 |).... R=R*F| 00000810 3a 53 3d 53 2a 73 0d 02 a8 41 20 20 20 20 20 20 |:S=S*s...A | 00000820 50 33 20 20 20 20 20 3d a4 5f 54 44 5f 50 4e 54 |P3 =._TD_PNT| 00000830 28 31 32 38 2b 31 2c 50 32 2c 30 2c 30 2c 52 2c |(128+1,P2,0,0,R,| 00000840 52 2c 30 2c 39 30 2c 30 2c 30 2c 52 2c 53 2c 4d |R,0,90,0,0,R,S,M| 00000850 61 67 65 6e 74 61 29 0d 02 b2 15 20 20 20 20 20 |agenta).... | 00000860 20 52 3d 52 2a 46 3a 53 3d 53 2a 73 0d 02 bc 3e | R=R*F:S=S*s...>| 00000870 20 20 20 20 20 20 50 34 20 20 20 20 20 3d a4 5f | P4 =._| 00000880 54 44 5f 50 4e 54 28 31 32 38 2b 31 2c 50 33 2c |TD_PNT(128+1,P3,| 00000890 30 2c 30 2c 52 2c 52 2c 30 2c 39 30 2c 30 2c 30 |0,0,R,R,0,90,0,0| 000008a0 2c 52 2c 53 2c 47 72 65 79 29 0d 02 c6 15 20 20 |,R,S,Grey).... | 000008b0 20 20 20 20 52 3d 52 2a 46 3a 53 3d 53 2a 73 0d | R=R*F:S=S*s.| 000008c0 02 d0 3a 20 20 20 20 20 20 44 6f 74 20 20 20 20 |..: Dot | 000008d0 20 3d a4 5f 54 44 5f 50 4e 54 28 31 2c 50 34 2c | =._TD_PNT(1,P4,| 000008e0 30 2c 30 2c 52 2c 52 2c 30 2c 30 2c 39 30 2c 30 |0,0,R,R,0,0,90,0| 000008f0 2c 52 2c 53 2c 52 65 64 29 0d 02 da 04 0d 02 e4 |,R,S,Red).......| 00000900 27 20 20 20 20 20 20 4c 31 24 3d 22 57 68 61 74 |' L1$="What| 00000910 20 69 73 20 74 68 65 20 64 6f 74 20 64 6f 69 6e | is the dot doin| 00000920 67 3f 2e 22 0d 02 ee 46 20 20 20 20 20 20 4c 32 |g?."...F L2| 00000930 24 3d 22 50 72 65 73 73 20 22 22 74 22 22 20 74 |$="Press ""t"" t| 00000940 6f 20 74 72 61 63 6b 2c 20 22 22 72 22 22 20 74 |o track, ""r"" t| 00000950 6f 20 72 65 76 65 61 6c 20 6f 72 20 22 22 71 22 |o reveal or ""q"| 00000960 22 20 74 6f 20 71 75 69 74 22 0d 02 f8 3a 20 20 |" to quit"...: | 00000970 20 20 20 20 41 25 3d 58 59 5a 5f 41 25 3a 42 25 | A%=XYZ_A%:B%| 00000980 3d 58 59 5a 5f 44 25 3a 43 25 3d 4d 41 58 53 43 |=XYZ_D%:C%=MAXSC| 00000990 41 4e 2a 52 4f 57 5f 4c 45 4e 3a d6 20 4d 56 5f |AN*ROW_LEN:. MV_| 000009a0 44 41 54 41 0d 03 02 0b 20 20 20 20 20 20 e1 0d |DATA.... ..| 000009b0 03 0c 5e f4 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |..^.------------| 000009c0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00000a00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 03 16 |-------------...| 00000a10 28 f4 20 44 45 46 49 4e 45 20 47 52 41 50 48 49 |(. DEFINE GRAPHI| 00000a20 43 20 44 41 54 41 20 42 41 53 45 20 46 4f 52 20 |C DATA BASE FOR | 00000a30 21 57 48 41 54 0d 03 20 04 0d 03 2a 14 20 20 20 |!WHAT.. ...*. | 00000a40 20 20 20 dd 20 f2 5f 53 43 45 4e 45 32 0d 03 34 | . ._SCENE2..4| 00000a50 04 0d 03 3e 17 20 20 20 20 20 20 50 3d 30 3a 4d |...>. P=0:M| 00000a60 41 58 53 43 41 4e 3d 30 0d 03 48 04 0d 03 52 2e |AXSCAN=0..H...R.| 00000a70 f4 20 53 45 45 20 44 45 46 20 46 4e 5f 54 44 5f |. SEE DEF FN_TD_| 00000a80 50 4e 54 20 46 4f 52 20 50 41 52 41 4d 45 54 45 |PNT FOR PARAMETE| 00000a90 52 20 44 45 54 41 49 4c 53 2e 0d 03 5c 04 0d 03 |R DETAILS...\...| 00000aa0 66 17 20 20 20 20 20 20 78 63 3d 36 34 30 3a 79 |f. xc=640:y| 00000ab0 63 3d 37 30 30 0d 03 70 04 0d 03 7a 47 20 20 20 |c=700..p...zG | 00000ac0 20 20 20 43 45 4e 54 52 45 20 20 20 20 20 20 3d | CENTRE =| 00000ad0 a4 5f 54 44 5f 50 4e 54 28 30 2c 78 63 2c 79 63 |._TD_PNT(0,xc,yc| 00000ae0 2c 30 2c 32 30 30 2c 33 30 30 2c 32 30 30 2c 30 |,0,200,300,200,0| 00000af0 2c 30 2c 30 2c 32 2c 31 30 30 30 2c 52 65 64 29 |,0,0,2,1000,Red)| 00000b00 0d 03 84 4b 20 20 20 20 20 20 4e 45 55 54 52 4f |...K NEUTRO| 00000b10 4e 20 20 20 20 20 3d a4 5f 54 44 5f 50 4e 54 28 |N =._TD_PNT(| 00000b20 31 2c 43 45 4e 54 52 45 2c 32 30 2c 32 30 2c 32 |1,CENTRE,20,20,2| 00000b30 30 2c 32 30 2c 32 30 2c 34 30 2c 30 2c 30 2c 31 |0,20,20,40,0,0,1| 00000b40 30 2c 35 30 30 30 2c 52 65 64 29 0d 03 8e 4f 20 |0,5000,Red)...O | 00000b50 20 20 20 20 20 50 52 4f 54 4f 4e 20 20 20 20 20 | PROTON | 00000b60 20 3d a4 5f 54 44 5f 50 4e 54 28 31 2c 43 45 4e | =._TD_PNT(1,CEN| 00000b70 54 52 45 2c 32 30 2c 32 30 2c 32 30 2c 32 30 2c |TRE,20,20,20,20,| 00000b80 32 30 2c 34 30 2c 30 2c 39 30 2c 31 30 2c 35 30 |20,40,0,90,10,50| 00000b90 30 30 2c 59 65 6c 6c 6f 77 29 0d 03 98 04 0d 03 |00,Yellow)......| 00000ba0 a2 50 20 20 20 20 20 20 41 54 4f 4d 30 31 20 20 |.P ATOM01 | 00000bb0 20 20 20 20 3d a4 5f 54 44 5f 50 4e 54 28 31 2c | =._TD_PNT(1,| 00000bc0 43 45 4e 54 52 45 2c 32 30 2c 32 30 2c 31 30 30 |CENTRE,20,20,100| 00000bd0 2c 31 30 30 2c 31 30 30 2c 34 30 2c 30 2c 39 30 |,100,100,40,0,90| 00000be0 2c 35 2c 35 30 30 30 2c 47 72 65 65 6e 29 0d 03 |,5,5000,Green)..| 00000bf0 ac 50 20 20 20 20 20 20 41 54 4f 4d 30 32 20 20 |.P ATOM02 | 00000c00 20 20 20 20 3d a4 5f 54 44 5f 50 4e 54 28 33 2c | =._TD_PNT(3,| 00000c10 43 45 4e 54 52 45 2c 32 30 2c 32 30 2c 31 30 30 |CENTRE,20,20,100| 00000c20 2c 31 30 30 2c 31 30 30 2c 30 2c 31 30 30 2c 39 |,100,100,0,100,9| 00000c30 30 2c 35 2c 35 30 30 30 2c 43 79 61 6e 29 0d 03 |0,5,5000,Cyan)..| 00000c40 b6 53 20 20 20 20 20 20 41 54 4f 4d 30 33 20 20 |.S ATOM03 | 00000c50 20 20 20 20 3d a4 5f 54 44 5f 50 4e 54 28 31 2c | =._TD_PNT(1,| 00000c60 43 45 4e 54 52 45 2c 32 30 2c 32 30 2c 31 30 30 |CENTRE,20,20,100| 00000c70 2c 31 30 30 2c 31 30 30 2c 34 30 2c 31 36 30 2c |,100,100,40,160,| 00000c80 30 2c 35 2c 35 30 30 30 2c 4d 61 67 65 6e 74 61 |0,5,5000,Magenta| 00000c90 29 0d 03 c0 52 20 20 20 20 20 20 41 54 4f 4d 30 |)...R ATOM0| 00000ca0 34 20 20 20 20 20 20 3d a4 5f 54 44 5f 50 4e 54 |4 =._TD_PNT| 00000cb0 28 33 2c 43 45 4e 54 52 45 2c 32 30 2c 32 30 2c |(3,CENTRE,20,20,| 00000cc0 31 30 30 2c 31 30 30 2c 31 30 30 2c 31 30 30 2c |100,100,100,100,| 00000cd0 31 30 30 2c 34 35 2c 35 2c 35 30 30 30 2c 42 6c |100,45,5,5000,Bl| 00000ce0 75 65 29 0d 03 ca 04 0d 03 d4 17 20 20 20 20 20 |ue)........ | 00000cf0 20 78 63 3d 33 30 30 3a 79 63 3d 34 30 30 0d 03 | xc=300:yc=400..| 00000d00 de 45 20 20 20 20 20 20 43 45 4e 54 52 45 31 20 |.E CENTRE1 | 00000d10 20 20 20 20 20 3d a4 5f 54 44 5f 50 4e 54 28 30 | =._TD_PNT(0| 00000d20 2c 78 63 2c 79 63 2c 30 2c 30 2c 30 2c 32 30 30 |,xc,yc,0,0,0,200| 00000d30 2c 30 2c 30 2c 30 2c 32 2c 31 30 30 30 2c 47 72 |,0,0,0,2,1000,Gr| 00000d40 65 79 29 0d 03 e8 4f 20 20 20 20 20 20 4e 45 55 |ey)...O NEU| 00000d50 54 52 4f 4e 31 20 20 20 20 20 3d a4 5f 54 44 5f |TRON1 =._TD_| 00000d60 50 4e 54 28 31 2c 43 45 4e 54 52 45 31 2c 32 30 |PNT(1,CENTRE1,20| 00000d70 2c 32 30 2c 32 30 2c 32 30 2c 32 30 2c 34 30 2c |,20,20,20,20,40,| 00000d80 30 2c 30 2c 32 30 2c 35 30 30 30 2c 47 72 65 65 |0,0,20,5000,Gree| 00000d90 6e 29 0d 03 f2 4f 20 20 20 20 20 20 50 52 4f 54 |n)...O PROT| 00000da0 4f 4e 31 20 20 20 20 20 20 3d a4 5f 54 44 5f 50 |ON1 =._TD_P| 00000db0 4e 54 28 31 2c 43 45 4e 54 52 45 31 2c 32 30 2c |NT(1,CENTRE1,20,| 00000dc0 32 30 2c 32 30 2c 32 30 2c 32 30 2c 34 30 2c 30 |20,20,20,20,40,0| 00000dd0 2c 39 30 2c 32 30 2c 35 30 30 30 2c 43 79 61 6e |,90,20,5000,Cyan| 00000de0 29 0d 03 fc 04 0d 04 06 52 20 20 20 20 20 20 41 |).......R A| 00000df0 54 4f 4d 30 31 31 20 20 20 20 20 20 3d a4 5f 54 |TOM011 =._T| 00000e00 44 5f 50 4e 54 28 31 2c 43 45 4e 54 52 45 31 2c |D_PNT(1,CENTRE1,| 00000e10 32 30 2c 32 30 2c 31 30 30 2c 31 30 30 2c 31 30 |20,20,100,100,10| 00000e20 30 2c 34 30 2c 30 2c 39 30 2c 35 2c 35 30 30 30 |0,40,0,90,5,5000| 00000e30 2c 47 72 65 65 6e 29 0d 04 10 52 20 20 20 20 20 |,Green)...R | 00000e40 20 41 54 4f 4d 30 32 31 20 20 20 20 20 20 3d a4 | ATOM021 =.| 00000e50 5f 54 44 5f 50 4e 54 28 33 2c 43 45 4e 54 52 45 |_TD_PNT(3,CENTRE| 00000e60 31 2c 32 30 2c 32 30 2c 31 30 30 2c 31 30 30 2c |1,20,20,100,100,| 00000e70 31 30 30 2c 30 2c 31 30 30 2c 39 30 2c 35 2c 35 |100,0,100,90,5,5| 00000e80 30 30 30 2c 43 79 61 6e 29 0d 04 1a 55 20 20 20 |000,Cyan)...U | 00000e90 20 20 20 41 54 4f 4d 30 33 31 20 20 20 20 20 20 | ATOM031 | 00000ea0 3d a4 5f 54 44 5f 50 4e 54 28 31 2c 43 45 4e 54 |=._TD_PNT(1,CENT| 00000eb0 52 45 31 2c 32 30 2c 32 30 2c 31 30 30 2c 31 30 |RE1,20,20,100,10| 00000ec0 30 2c 31 30 30 2c 34 30 2c 31 36 30 2c 30 2c 35 |0,100,40,160,0,5| 00000ed0 2c 35 30 30 30 2c 4d 61 67 65 6e 74 61 29 0d 04 |,5000,Magenta)..| 00000ee0 24 54 20 20 20 20 20 20 41 54 4f 4d 30 34 31 20 |$T ATOM041 | 00000ef0 20 20 20 20 20 3d a4 5f 54 44 5f 50 4e 54 28 33 | =._TD_PNT(3| 00000f00 2c 43 45 4e 54 52 45 31 2c 32 30 2c 32 30 2c 31 |,CENTRE1,20,20,1| 00000f10 30 30 2c 31 30 30 2c 31 30 30 2c 31 30 30 2c 31 |00,100,100,100,1| 00000f20 30 30 2c 34 35 2c 35 2c 35 30 30 30 2c 42 6c 75 |00,45,5,5000,Blu| 00000f30 65 29 0d 04 2e 04 0d 04 38 17 20 20 20 20 20 20 |e)......8. | 00000f40 78 63 3d 38 30 30 3a 79 63 3d 35 30 30 0d 04 42 |xc=800:yc=500..B| 00000f50 44 20 20 20 20 20 20 43 45 4e 54 52 45 32 20 20 |D CENTRE2 | 00000f60 20 20 20 20 3d a4 5f 54 44 5f 50 4e 54 28 30 2c | =._TD_PNT(0,| 00000f70 78 63 2c 79 63 2c 30 2c 30 2c 30 2c 32 30 30 2c |xc,yc,0,0,0,200,| 00000f80 30 2c 30 2c 30 2c 32 2c 31 30 30 2c 42 6c 75 65 |0,0,0,2,100,Blue| 00000f90 29 0d 04 4c 4d 20 20 20 20 20 20 4e 45 55 54 52 |)..LM NEUTR| 00000fa0 4f 4e 32 20 20 20 20 20 3d a4 5f 54 44 5f 50 4e |ON2 =._TD_PN| 00000fb0 54 28 31 2c 43 45 4e 54 52 45 32 2c 32 30 2c 32 |T(1,CENTRE2,20,2| 00000fc0 30 2c 32 30 2c 32 30 2c 32 30 2c 34 30 2c 30 2c |0,20,20,20,40,0,| 00000fd0 30 2c 32 30 2c 32 30 30 2c 42 6c 75 65 29 0d 04 |0,20,200,Blue)..| 00000fe0 56 51 20 20 20 20 20 20 50 52 4f 54 4f 4e 32 20 |VQ PROTON2 | 00000ff0 20 20 20 20 20 3d a4 5f 54 44 5f 50 4e 54 28 31 | =._TD_PNT(1| 00001000 2c 43 45 4e 54 52 45 32 2c 32 30 2c 32 30 2c 32 |,CENTRE2,20,20,2| 00001010 30 2c 32 30 2c 32 30 2c 34 30 2c 30 2c 39 30 2c |0,20,20,40,0,90,| 00001020 32 30 2c 32 30 30 2c 4d 61 67 65 6e 74 61 29 0d |20,200,Magenta).| 00001030 04 60 04 0d 04 6a 4f 20 20 20 20 20 20 41 54 4f |.`...jO ATO| 00001040 4d 30 31 32 20 20 20 20 20 20 3d a4 5f 54 44 5f |M012 =._TD_| 00001050 50 4e 54 28 31 2c 43 45 4e 54 52 45 32 2c 32 30 |PNT(1,CENTRE2,20| 00001060 2c 32 30 2c 35 30 2c 35 30 2c 35 30 2c 34 30 2c |,20,50,50,50,40,| 00001070 30 2c 39 30 2c 35 2c 35 30 30 30 2c 47 72 65 65 |0,90,5,5000,Gree| 00001080 6e 29 0d 04 74 4e 20 20 20 20 20 20 41 54 4f 4d |n)..tN ATOM| 00001090 30 32 32 20 20 20 20 20 20 3d a4 5f 54 44 5f 50 |022 =._TD_P| 000010a0 4e 54 28 33 2c 43 45 4e 54 52 45 32 2c 32 30 2c |NT(3,CENTRE2,20,| 000010b0 32 30 2c 35 30 2c 35 30 2c 35 30 2c 30 2c 35 30 |20,50,50,50,0,50| 000010c0 2c 39 30 2c 35 2c 35 30 30 30 2c 43 79 61 6e 29 |,90,5,5000,Cyan)| 000010d0 0d 04 7e 52 20 20 20 20 20 20 41 54 4f 4d 30 33 |..~R ATOM03| 000010e0 32 20 20 20 20 20 20 3d a4 5f 54 44 5f 50 4e 54 |2 =._TD_PNT| 000010f0 28 31 2c 43 45 4e 54 52 45 32 2c 32 30 2c 32 30 |(1,CENTRE2,20,20| 00001100 2c 35 30 2c 35 30 2c 35 30 2c 34 30 2c 31 36 30 |,50,50,50,40,160| 00001110 2c 30 2c 35 2c 35 30 30 30 2c 4d 61 67 65 6e 74 |,0,5,5000,Magent| 00001120 61 29 0d 04 88 51 20 20 20 20 20 20 41 54 4f 4d |a)...Q ATOM| 00001130 30 34 32 20 20 20 20 20 20 3d a4 5f 54 44 5f 50 |042 =._TD_P| 00001140 4e 54 28 33 2c 43 45 4e 54 52 45 32 2c 32 30 2c |NT(3,CENTRE2,20,| 00001150 32 30 2c 35 30 2c 35 30 2c 35 30 2c 31 30 30 2c |20,50,50,50,100,| 00001160 31 30 30 2c 34 35 2c 35 2c 35 30 30 30 2c 42 6c |100,45,5,5000,Bl| 00001170 75 65 29 0d 04 92 04 0d 04 9c 37 20 20 20 20 20 |ue).......7 | 00001180 20 4c 31 24 3d 22 41 74 6f 6d 73 2e 2e 2e 2e 2e | L1$="Atoms.....| 00001190 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 50 72 65 73 73 20 |..........Press | 000011a0 22 22 71 22 22 20 74 6f 20 71 75 69 74 22 0d 04 |""q"" to quit"..| 000011b0 a6 10 20 20 20 20 20 20 4c 32 24 3d 22 22 0d 04 |.. L2$=""..| 000011c0 b0 3a 20 20 20 20 20 20 41 25 3d 58 59 5a 5f 41 |.: A%=XYZ_A| 000011d0 25 3a 42 25 3d 58 59 5a 5f 44 25 3a 43 25 3d 4d |%:B%=XYZ_D%:C%=M| 000011e0 41 58 53 43 41 4e 2a 52 4f 57 5f 4c 45 4e 3a d6 |AXSCAN*ROW_LEN:.| 000011f0 20 4d 56 5f 44 41 54 41 0d 04 ba 0b 20 20 20 20 | MV_DATA.... | 00001200 20 20 e1 0d 04 c4 04 0d 04 ce 5d f4 2d 2d 2d 2d | ........].----| 00001210 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00001260 2d 2d 2d 2d 0d 04 d8 11 20 20 20 20 dd 20 f2 5f |----.... . ._| 00001270 4f 52 42 49 54 0d 04 e2 32 20 20 20 20 20 20 e3 |ORBIT...2 .| 00001280 20 49 25 20 3d 20 30 20 b8 20 28 4d 41 58 53 43 | I% = 0 . (MAXSC| 00001290 41 4e 2d 31 29 2a 52 4f 57 5f 4c 45 4e 20 88 20 |AN-1)*ROW_LEN . | 000012a0 52 4f 57 5f 4c 45 4e 0d 04 ec 3a 20 20 20 20 20 |ROW_LEN...: | 000012b0 20 20 20 58 59 5a 5f 41 25 21 28 49 25 2b 52 4f | XYZ_A%!(I%+RO| 000012c0 57 5f 41 4e 47 4c 45 29 20 2b 3d 20 58 59 5a 5f |W_ANGLE) += XYZ_| 000012d0 41 25 21 28 49 25 2b 52 4f 57 5f 53 50 45 45 44 |A%!(I%+ROW_SPEED| 000012e0 29 0d 04 f6 2e 20 20 20 20 20 20 20 20 41 4e 47 |).... ANG| 000012f0 4c 45 20 3d 20 58 59 5a 5f 41 25 21 28 49 25 2b |LE = XYZ_A%!(I%+| 00001300 52 4f 57 5f 41 4e 47 4c 45 29 2f 31 30 30 30 0d |ROW_ANGLE)/1000.| 00001310 05 00 35 20 20 20 20 20 20 20 20 e7 20 41 4e 47 |..5 . ANG| 00001320 4c 45 20 3e 20 33 36 30 20 8c 20 58 59 5a 5f 41 |LE > 360 . XYZ_A| 00001330 25 21 28 49 25 2b 52 4f 57 5f 41 4e 47 4c 45 29 |%!(I%+ROW_ANGLE)| 00001340 20 3d 20 30 0d 05 0a 2a 20 20 20 20 20 20 20 20 | = 0...* | 00001350 e7 20 58 59 5a 5f 41 25 21 28 49 25 2b 52 4f 57 |. XYZ_A%!(I%+ROW| 00001360 5f 58 43 29 20 3e 20 31 30 30 30 30 20 8c 0d 05 |_XC) > 10000 ...| 00001370 14 25 20 20 20 20 20 20 20 20 20 20 43 25 20 3d |.% C% =| 00001380 20 58 59 5a 5f 41 25 21 28 49 25 2b 52 4f 57 5f | XYZ_A%!(I%+ROW_| 00001390 58 43 29 0d 05 1e 1b 20 20 20 20 20 20 20 20 20 |XC).... | 000013a0 20 58 43 20 3d 20 43 25 21 52 4f 57 5f 58 0d 05 | XC = C%!ROW_X..| 000013b0 28 1b 20 20 20 20 20 20 20 20 20 20 59 43 20 3d |(. YC =| 000013c0 20 43 25 21 52 4f 57 5f 59 0d 05 32 1d 20 20 20 | C%!ROW_Y..2. | 000013d0 20 20 20 20 20 20 20 5a 43 20 3d 20 43 25 21 52 | ZC = C%!R| 000013e0 4f 57 5f 5a 2b 31 0d 05 3c 0d 20 20 20 20 20 20 |OW_Z+1..<. | 000013f0 20 20 cc 0d 05 46 25 20 20 20 20 20 20 20 20 20 | ...F% | 00001400 20 58 43 20 3d 20 58 59 5a 5f 41 25 21 28 49 25 | XC = XYZ_A%!(I%| 00001410 2b 52 4f 57 5f 58 43 29 0d 05 50 25 20 20 20 20 |+ROW_XC)..P% | 00001420 20 20 20 20 20 20 59 43 20 3d 20 58 59 5a 5f 41 | YC = XYZ_A| 00001430 25 21 28 49 25 2b 52 4f 57 5f 59 43 29 0d 05 5a |%!(I%+ROW_YC)..Z| 00001440 25 20 20 20 20 20 20 20 20 20 20 5a 43 20 3d 20 |% ZC = | 00001450 58 59 5a 5f 41 25 21 28 49 25 2b 52 4f 57 5f 5a |XYZ_A%!(I%+ROW_Z| 00001460 43 29 0d 05 64 0d 20 20 20 20 20 20 20 20 cd 0d |C)..d. ..| 00001470 05 6e 26 20 20 20 20 20 20 20 20 c8 8e 20 20 58 |.n& .. X| 00001480 59 5a 5f 41 25 21 28 49 25 2b 52 4f 57 5f 53 49 |YZ_A%!(I%+ROW_SI| 00001490 5a 45 29 20 ca 0d 05 78 11 20 20 20 20 20 20 20 |ZE) ...x. | 000014a0 20 20 c9 20 30 3a 0d 05 82 35 20 20 20 20 20 20 | . 0:...5 | 000014b0 20 20 20 20 58 59 5a 5f 41 25 21 28 49 25 2b 52 | XYZ_A%!(I%+R| 000014c0 4f 57 5f 58 29 20 2b 3d 20 58 59 5a 5f 41 25 21 |OW_X) += XYZ_A%!| 000014d0 28 49 25 2b 52 4f 57 5f 58 4c 29 0d 05 8c 54 20 |(I%+ROW_XL)...T | 000014e0 20 20 20 20 20 20 20 20 20 58 59 5a 5f 41 25 21 | XYZ_A%!| 000014f0 28 49 25 2b 52 4f 57 5f 5a 29 20 3d 20 5a 43 2b |(I%+ROW_Z) = ZC+| 00001500 58 59 5a 5f 41 25 21 28 49 25 2b 52 4f 57 5f 5a |XYZ_A%!(I%+ROW_Z| 00001510 4c 29 2a b5 b2 28 41 4e 47 4c 45 2b 58 59 5a 5f |L)*..(ANGLE+XYZ_| 00001520 41 25 21 28 49 25 2b 52 4f 57 5f 5a 50 29 29 0d |A%!(I%+ROW_ZP)).| 00001530 05 96 40 20 20 20 20 20 20 20 20 20 20 e7 20 58 |..@ . X| 00001540 59 5a 5f 41 25 21 28 49 25 2b 52 4f 57 5f 58 29 |YZ_A%!(I%+ROW_X)| 00001550 20 3e 3d 20 31 32 38 30 20 8c 20 58 59 5a 5f 41 | >= 1280 . XYZ_A| 00001560 25 21 28 49 25 2b 52 4f 57 5f 58 29 3d 20 30 0d |%!(I%+ROW_X)= 0.| 00001570 05 a0 0f 20 20 20 20 20 20 20 20 20 7f 3a 0d 05 |... .:..| 00001580 aa 54 20 20 20 20 20 20 20 20 20 20 58 59 5a 5f |.T XYZ_| 00001590 41 25 21 28 49 25 2b 52 4f 57 5f 58 29 20 3d 20 |A%!(I%+ROW_X) = | 000015a0 58 43 2b 58 59 5a 5f 41 25 21 28 49 25 2b 52 4f |XC+XYZ_A%!(I%+RO| 000015b0 57 5f 58 4c 29 2a b5 b2 28 41 4e 47 4c 45 2b 58 |W_XL)*..(ANGLE+X| 000015c0 59 5a 5f 41 25 21 28 49 25 2b 52 4f 57 5f 58 50 |YZ_A%!(I%+ROW_XP| 000015d0 29 29 0d 05 b4 54 20 20 20 20 20 20 20 20 20 20 |))...T | 000015e0 58 59 5a 5f 41 25 21 28 49 25 2b 52 4f 57 5f 59 |XYZ_A%!(I%+ROW_Y| 000015f0 29 20 3d 20 59 43 2b 58 59 5a 5f 41 25 21 28 49 |) = YC+XYZ_A%!(I| 00001600 25 2b 52 4f 57 5f 59 4c 29 2a b5 b2 28 41 4e 47 |%+ROW_YL)*..(ANG| 00001610 4c 45 2b 58 59 5a 5f 41 25 21 28 49 25 2b 52 4f |LE+XYZ_A%!(I%+RO| 00001620 57 5f 59 50 29 29 0d 05 be 54 20 20 20 20 20 20 |W_YP))...T | 00001630 20 20 20 20 58 59 5a 5f 41 25 21 28 49 25 2b 52 | XYZ_A%!(I%+R| 00001640 4f 57 5f 5a 29 20 3d 20 5a 43 2b 58 59 5a 5f 41 |OW_Z) = ZC+XYZ_A| 00001650 25 21 28 49 25 2b 52 4f 57 5f 5a 4c 29 2a b5 b2 |%!(I%+ROW_ZL)*..| 00001660 28 41 4e 47 4c 45 2b 58 59 5a 5f 41 25 21 28 49 |(ANGLE+XYZ_A%!(I| 00001670 25 2b 52 4f 57 5f 5a 50 29 29 0d 05 c8 0d 20 20 |%+ROW_ZP)).... | 00001680 20 20 20 20 20 20 cb 0d 05 d2 0e 20 20 20 20 20 | ..... | 00001690 20 ed 20 49 25 0d 05 dc 09 20 20 20 20 e1 0d 05 | . I%.... ...| 000016a0 e6 04 0d 05 f0 5e f4 2d 2d 2d 2d 2d 2d 2d 2d 2d |.....^.---------| 000016b0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00001700 0d 05 fa 1d f4 20 44 45 46 49 4e 45 20 50 4f 49 |..... DEFINE POI| 00001710 4e 54 53 20 50 52 4f 43 45 44 55 52 45 0d 06 04 |NTS PROCEDURE...| 00001720 04 0d 06 0e 45 20 20 20 20 dd 20 a4 5f 54 44 5f |....E . ._TD_| 00001730 50 4e 54 28 54 59 50 45 2c 58 43 2c 59 43 2c 5a |PNT(TYPE,XC,YC,Z| 00001740 43 2c 58 4c 2c 59 4c 2c 5a 4c 2c 58 50 2c 59 50 |C,XL,YL,ZL,XP,YP| 00001750 2c 5a 50 2c 53 49 5a 45 2c 53 50 45 45 44 2c 52 |,ZP,SIZE,SPEED,R| 00001760 47 42 54 41 42 29 0d 06 18 04 0d 06 22 35 f4 20 |GBTAB)......"5. | 00001770 54 59 50 45 20 20 20 20 20 2d 20 50 4f 49 4e 54 |TYPE - POINT| 00001780 20 54 59 50 45 20 30 3d 43 69 72 63 6c 65 2c 20 | TYPE 0=Circle, | 00001790 31 3d 43 69 72 63 6c 65 20 46 69 6c 6c 65 64 0d |1=Circle Filled.| 000017a0 06 2c 55 f4 20 58 43 2c 59 43 2c 5a 43 20 2d 20 |.,U. XC,YC,ZC - | 000017b0 4f 52 42 49 54 20 46 4f 43 55 53 2e 20 49 46 20 |ORBIT FOCUS. IF | 000017c0 58 43 3e 31 30 30 30 30 20 54 48 45 4e 20 49 54 |XC>10000 THEN IT| 000017d0 20 49 53 20 41 20 50 4f 49 4e 54 45 52 20 54 4f | IS A POINTER TO| 000017e0 20 41 4e 4f 54 48 45 52 20 45 4e 54 52 59 20 57 | ANOTHER ENTRY W| 000017f0 48 49 43 48 0d 06 36 34 f4 20 20 20 20 20 20 20 |HICH..64. | 00001800 20 20 20 20 20 57 49 4c 4c 20 46 4f 52 4d 20 54 | WILL FORM T| 00001810 48 45 20 46 4f 43 55 53 20 46 4f 52 20 54 48 49 |HE FOCUS FOR THI| 00001820 53 20 45 4e 54 52 59 2e 0d 06 40 29 f4 20 58 4c |S ENTRY...@). XL| 00001830 2c 59 4c 2c 5a 4c 20 2d 20 4f 52 42 49 54 20 4c |,YL,ZL - ORBIT L| 00001840 49 4d 49 54 53 20 46 52 4f 4d 20 46 4f 43 55 53 |IMITS FROM FOCUS| 00001850 2e 0d 06 4a 24 f4 20 58 50 2c 59 50 2c 5a 50 20 |...J$. XP,YP,ZP | 00001860 2d 20 4f 52 42 49 54 20 50 48 41 53 45 20 41 4e |- ORBIT PHASE AN| 00001870 47 4c 45 53 2e 0d 06 54 1c f4 20 53 49 5a 45 20 |GLES...T.. SIZE | 00001880 20 20 20 20 2d 20 43 49 52 43 4c 45 20 53 49 5a | - CIRCLE SIZ| 00001890 45 0d 06 5e 20 f4 20 53 50 45 45 44 20 20 20 20 |E..^ . SPEED | 000018a0 2d 20 4f 52 42 49 54 20 56 45 4c 4f 43 49 54 59 |- ORBIT VELOCITY| 000018b0 2e 0d 06 68 3d f4 20 52 47 42 54 41 42 20 20 20 |...h=. RGBTAB | 000018c0 2d 20 4e 41 4d 45 20 4f 46 20 41 4e 20 52 47 42 |- NAME OF AN RGB| 000018d0 20 54 41 42 4c 45 20 41 53 20 44 45 46 49 4e 45 | TABLE AS DEFINE| 000018e0 44 20 42 59 20 46 4e 5f 53 45 54 43 4f 4c 0d 06 |D BY FN_SETCOL..| 000018f0 72 04 0d 06 7c 23 20 20 20 20 20 58 59 5a 5f 41 |r...|# XYZ_A| 00001900 25 21 28 50 2b 52 4f 57 5f 54 59 50 45 29 20 3d |%!(P+ROW_TYPE) =| 00001910 20 54 59 50 45 0d 06 86 20 20 20 20 20 20 58 59 | TYPE... XY| 00001920 5a 5f 41 25 21 28 50 2b 52 4f 57 5f 58 29 20 20 |Z_A%!(P+ROW_X) | 00001930 20 20 3d 20 30 0d 06 90 20 20 20 20 20 20 58 59 | = 0... XY| 00001940 5a 5f 41 25 21 28 50 2b 52 4f 57 5f 59 29 20 20 |Z_A%!(P+ROW_Y) | 00001950 20 20 3d 20 30 0d 06 9a 20 20 20 20 20 20 58 59 | = 0... XY| 00001960 5a 5f 41 25 21 28 50 2b 52 4f 57 5f 5a 29 20 20 |Z_A%!(P+ROW_Z) | 00001970 20 20 3d 20 30 0d 06 a4 04 0d 06 ae 21 20 20 20 | = 0.......! | 00001980 20 20 58 59 5a 5f 41 25 21 28 50 2b 52 4f 57 5f | XYZ_A%!(P+ROW_| 00001990 58 4c 29 20 20 20 3d 20 58 4c 0d 06 b8 21 20 20 |XL) = XL...! | 000019a0 20 20 20 58 59 5a 5f 41 25 21 28 50 2b 52 4f 57 | XYZ_A%!(P+ROW| 000019b0 5f 59 4c 29 20 20 20 3d 20 59 4c 0d 06 c2 21 20 |_YL) = YL...! | 000019c0 20 20 20 20 58 59 5a 5f 41 25 21 28 50 2b 52 4f | XYZ_A%!(P+RO| 000019d0 57 5f 5a 4c 29 20 20 20 3d 20 5a 4c 0d 06 cc 04 |W_ZL) = ZL....| 000019e0 0d 06 d6 21 20 20 20 20 20 58 59 5a 5f 41 25 21 |...! XYZ_A%!| 000019f0 28 50 2b 52 4f 57 5f 58 50 29 20 20 20 3d 20 58 |(P+ROW_XP) = X| 00001a00 50 0d 06 e0 21 20 20 20 20 20 58 59 5a 5f 41 25 |P...! XYZ_A%| 00001a10 21 28 50 2b 52 4f 57 5f 59 50 29 20 20 20 3d 20 |!(P+ROW_YP) = | 00001a20 59 50 0d 06 ea 21 20 20 20 20 20 58 59 5a 5f 41 |YP...! XYZ_A| 00001a30 25 21 28 50 2b 52 4f 57 5f 5a 50 29 20 20 20 3d |%!(P+ROW_ZP) =| 00001a40 20 5a 50 0d 06 f4 04 0d 06 fe 21 20 20 20 20 20 | ZP.......! | 00001a50 58 59 5a 5f 41 25 21 28 50 2b 52 4f 57 5f 58 43 |XYZ_A%!(P+ROW_XC| 00001a60 29 20 20 20 3d 20 58 43 0d 07 08 21 20 20 20 20 |) = XC...! | 00001a70 20 58 59 5a 5f 41 25 21 28 50 2b 52 4f 57 5f 59 | XYZ_A%!(P+ROW_Y| 00001a80 43 29 20 20 20 3d 20 59 43 0d 07 12 22 20 20 20 |C) = YC..." | 00001a90 20 20 58 59 5a 5f 41 25 21 28 50 2b 52 4f 57 5f | XYZ_A%!(P+ROW_| 00001aa0 5a 43 29 20 20 20 3d 20 2d 5a 43 0d 07 1c 04 0d |ZC) = -ZC.....| 00001ab0 07 26 4b 20 20 20 20 20 58 59 5a 5f 41 25 21 28 |.&K XYZ_A%!(| 00001ac0 50 2b 52 4f 57 5f 53 49 5a 45 29 20 3d 20 53 49 |P+ROW_SIZE) = SI| 00001ad0 5a 45 3c 3c 31 30 20 20 20 20 20 20 20 20 20 20 |ZE<<10 | 00001ae0 20 20 20 20 20 3a f4 20 4d 41 49 4e 54 41 49 4e | :. MAINTAIN| 00001af0 20 50 52 45 43 49 53 49 4f 4e 0d 07 30 20 20 20 | PRECISION..0 | 00001b00 20 20 20 58 59 5a 5f 41 25 21 28 50 2b 52 4f 57 | XYZ_A%!(P+ROW| 00001b10 5f 52 47 42 29 20 20 3d 20 30 0d 07 3a 4d 20 20 |_RGB) = 0..:M | 00001b20 20 20 20 58 59 5a 5f 41 25 21 28 50 2b 52 4f 57 | XYZ_A%!(P+ROW| 00001b30 5f 52 47 42 54 41 42 29 20 3d 20 52 47 42 54 41 |_RGBTAB) = RGBTA| 00001b40 42 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |B | 00001b50 3a f4 20 41 44 44 52 45 53 53 20 4f 46 20 52 47 |:. ADDRESS OF RG| 00001b60 42 20 54 41 42 4c 45 0d 07 44 26 20 20 20 20 20 |B TABLE..D& | 00001b70 58 59 5a 5f 41 25 21 28 50 2b 52 4f 57 5f 53 50 |XYZ_A%!(P+ROW_SP| 00001b80 45 45 44 29 20 20 3d 20 53 50 45 45 44 0d 07 4e |EED) = SPEED..N| 00001b90 22 20 20 20 20 20 58 59 5a 5f 41 25 21 28 50 2b |" XYZ_A%!(P+| 00001ba0 52 4f 57 5f 41 4e 47 4c 45 29 20 20 3d 20 30 0d |ROW_ANGLE) = 0.| 00001bb0 07 58 04 0d 07 62 20 20 20 20 20 20 50 20 2b 3d |.X...b P +=| 00001bc0 20 52 4f 57 5f 4c 45 4e 3a 4d 41 58 53 43 41 4e | ROW_LEN:MAXSCAN| 00001bd0 2b 3d 31 0d 07 6c 19 20 20 20 20 3d 58 59 5a 5f |+=1..l. =XYZ_| 00001be0 41 25 2b 50 2d 52 4f 57 5f 4c 45 4e 0d 07 76 5e |A%+P-ROW_LEN..v^| 00001bf0 f4 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |.---------------| 00001c00 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00001c40 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 07 80 26 f4 20 |----------...&. | 00001c50 44 45 46 49 4e 45 20 43 4f 4c 4f 55 52 53 20 28 |DEFINE COLOURS (| 00001c60 52 47 42 20 46 41 44 45 20 54 41 42 4c 45 53 29 |RGB FADE TABLES)| 00001c70 0d 07 8a 38 f4 20 4c 31 2c 4c 32 2c 4c 33 20 20 |...8. L1,L2,L3 | 00001c80 2d 20 4c 4f 57 20 56 41 4c 55 45 53 20 4f 46 20 |- LOW VALUES OF | 00001c90 52 45 44 2c 47 52 45 45 4e 20 26 20 42 4c 55 45 |RED,GREEN & BLUE| 00001ca0 20 28 30 2d 32 35 35 29 0d 07 94 39 f4 20 48 31 | (0-255)...9. H1| 00001cb0 2c 48 32 2c 48 33 20 20 2d 20 48 49 47 48 20 56 |,H2,H3 - HIGH V| 00001cc0 41 4c 55 45 53 20 4f 46 20 52 45 44 2c 47 52 45 |ALUES OF RED,GRE| 00001cd0 45 4e 20 26 20 42 4c 55 45 20 28 30 2d 32 35 35 |EN & BLUE (0-255| 00001ce0 29 0d 07 9e 04 0d 07 a8 25 20 20 20 20 dd 20 a4 |).......% . .| 00001cf0 5f 53 45 54 43 4f 4c 28 4c 31 2c 4c 32 2c 4c 33 |_SETCOL(L1,L2,L3| 00001d00 2c 48 31 2c 48 32 2c 48 33 29 0d 07 b2 12 20 20 |,H1,H2,H3).... | 00001d10 20 20 20 ea 20 43 4f 4c 54 41 42 25 0d 07 bc 18 | . COLTAB%....| 00001d20 20 20 20 20 20 de 20 43 4f 4c 54 41 42 25 20 32 | . COLTAB% 2| 00001d30 35 36 2a 34 0d 07 c6 1a 20 20 20 20 20 50 52 46 |56*4.... PRF| 00001d40 41 43 3d 28 48 31 2d 4c 31 29 2f 32 35 36 0d 07 |AC=(H1-L1)/256..| 00001d50 d0 1b 20 20 20 20 20 50 47 46 41 43 3d 20 28 48 |.. PGFAC= (H| 00001d60 32 2d 4c 32 29 2f 32 35 36 0d 07 da 1a 20 20 20 |2-L2)/256.... | 00001d70 20 20 50 42 46 41 43 3d 28 48 33 2d 4c 33 29 2f | PBFAC=(H3-L3)/| 00001d80 32 35 36 0d 07 e4 19 20 20 20 20 20 e3 20 49 25 |256.... . I%| 00001d90 3d 30 20 b8 20 32 35 35 20 88 20 31 0d 07 ee 3a |=0 . 255 . 1...:| 00001da0 20 20 20 20 20 20 20 52 20 3d 20 4c 31 2b 49 25 | R = L1+I%| 00001db0 2a 50 52 46 41 43 3a 47 20 3d 20 4c 32 2b 49 25 |*PRFAC:G = L2+I%| 00001dc0 2a 50 47 46 41 43 3a 42 20 3d 20 4c 33 2b 49 25 |*PGFAC:B = L3+I%| 00001dd0 2a 50 42 46 41 43 0d 07 f8 3d 20 20 20 20 20 20 |*PBFAC...= | 00001de0 20 43 4f 4c 54 41 42 25 21 28 49 25 2a 34 29 3d | COLTAB%!(I%*4)=| 00001df0 20 28 28 28 52 29 3c 3c 38 29 20 2b 20 28 28 47 | (((R)<<8) + ((G| 00001e00 29 3c 3c 31 36 29 20 2b 20 28 28 42 29 3c 3c 32 |)<<16) + ((B)<<2| 00001e10 34 29 29 0d 08 02 0d 20 20 20 20 20 ed 20 49 25 |4)).... . I%| 00001e20 0d 08 0c 10 20 20 20 3d 20 43 4f 4c 54 41 42 25 |.... = COLTAB%| 00001e30 0d 08 16 5e f4 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |...^.-----------| 00001e40 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00001e80 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 08 |--------------..| 00001e90 20 17 f4 20 44 49 53 50 4c 41 59 20 53 54 52 55 | .. DISPLAY STRU| 00001ea0 43 54 55 52 45 0d 08 2a 04 0d 08 34 13 20 20 20 |CTURE..*...4. | 00001eb0 20 dd 20 f2 5f 44 49 53 50 4c 41 59 0d 08 3e 04 | . ._DISPLAY..>.| 00001ec0 0d 08 48 18 20 20 20 20 20 20 e7 20 44 4f 43 4c |..H. . DOCL| 00001ed0 47 20 8c 20 c8 96 3a da 0d 08 52 2a 20 20 20 20 |G . ..:...R* | 00001ee0 20 20 41 25 3d 58 59 5a 5f 41 25 3a 42 25 3d 58 | A%=XYZ_A%:B%=X| 00001ef0 59 5a 5f 44 25 3a 43 25 3d 52 4f 57 5f 4c 45 4e |YZ_D%:C%=ROW_LEN| 00001f00 31 3a 0d 08 5c 1e 20 20 20 20 20 20 e3 20 49 25 |1:..\. . I%| 00001f10 20 3d 20 30 20 b8 20 4d 41 58 53 43 41 4e 2d 31 | = 0 . MAXSCAN-1| 00001f20 0d 08 66 15 20 20 20 20 20 20 20 20 d6 20 4d 56 |..f. . MV| 00001f30 5f 44 41 54 41 0d 08 70 23 20 20 20 20 20 20 20 |_DATA..p# | 00001f40 20 41 25 2b 3d 52 4f 57 5f 4c 45 4e 3a 42 25 2b | A%+=ROW_LEN:B%+| 00001f50 3d 52 4f 57 5f 4c 45 4e 0d 08 7a 0e 20 20 20 20 |=ROW_LEN..z. | 00001f60 20 20 ed 20 49 25 0d 08 84 28 20 20 20 20 20 20 | . I%...( | 00001f70 41 25 3d 4d 41 58 53 43 41 4e 3a 42 25 3d 58 59 |A%=MAXSCAN:B%=XY| 00001f80 5a 5f 57 25 3a 43 25 3d 58 59 5a 5f 44 25 0d 08 |Z_W%:C%=XYZ_D%..| 00001f90 8e 3c 20 20 20 20 20 20 d6 20 53 4f 52 54 20 20 |.< . SORT | 00001fa0 20 20 20 20 20 20 20 20 20 20 20 20 3a f4 20 53 | :. S| 00001fb0 4f 52 54 20 42 59 20 5a 20 46 4f 52 20 44 49 53 |ORT BY Z FOR DIS| 00001fc0 50 4c 41 59 20 4f 52 44 45 52 0d 08 98 48 20 20 |PLAY ORDER...H | 00001fd0 20 20 20 20 41 25 3d 50 56 5f 58 3a 42 25 3d 50 | A%=PV_X:B%=P| 00001fe0 56 5f 59 3a 43 25 3d 50 56 5f 5a 3a 44 25 3d 50 |V_Y:C%=PV_Z:D%=P| 00001ff0 4d 41 58 42 3a 45 25 3d 50 4d 49 4e 42 3a 46 25 |MAXB:E%=PMINB:F%| 00002000 3d 58 59 5a 5f 44 25 3a 47 25 3d 4d 41 58 53 43 |=XYZ_D%:G%=MAXSC| 00002010 41 4e 0d 08 a2 13 20 20 20 20 20 20 d6 20 50 52 |AN.... . PR| 00002020 4f 4a 45 43 54 0d 08 ac 1e 20 20 20 20 20 20 41 |OJECT.... A| 00002030 25 3d 58 59 5a 5f 57 25 3a 42 25 3d 4d 41 58 53 |%=XYZ_W%:B%=MAXS| 00002040 43 41 4e 0d 08 b6 13 20 20 20 20 20 20 d6 20 44 |CAN.... . D| 00002050 49 53 50 4c 41 59 0d 08 c0 1a 20 20 20 20 20 20 |ISPLAY.... | 00002060 20 20 20 20 20 f1 20 8a 31 2c 31 29 3b 4c 31 24 | . .1,1);L1$| 00002070 0d 08 ca 1a 20 20 20 20 20 20 20 20 20 20 20 f1 |.... .| 00002080 20 8a 31 2c 33 29 3b 4c 32 24 0d 08 d4 13 20 20 | .1,3);L2$.... | 00002090 20 20 20 20 e7 20 42 41 4e 4b 53 20 8c 0d 08 de | . BANKS ....| 000020a0 21 20 20 20 20 20 20 20 c8 99 20 22 4f 53 5f 42 |! .. "OS_B| 000020b0 79 74 65 22 2c 31 31 32 2c 42 41 4e 4b 31 0d 08 |yte",112,BANK1..| 000020c0 e8 21 20 20 20 20 20 20 20 c8 99 20 22 4f 53 5f |.! .. "OS_| 000020d0 42 79 74 65 22 2c 31 31 33 2c 42 41 4e 4b 32 0d |Byte",113,BANK2.| 000020e0 08 f2 19 20 20 20 20 20 20 20 c8 94 20 42 41 4e |... .. BAN| 000020f0 4b 31 2c 42 41 4e 4b 32 0d 08 fc 0b 20 20 20 20 |K1,BANK2.... | 00002100 20 20 cd 0d 09 06 1f 20 20 20 20 20 20 e7 20 ac | ..... . .| 00002110 20 44 4f 43 4c 47 20 8c 20 d6 20 44 49 53 50 4c | DOCLG . . DISPL| 00002120 41 59 0d 09 10 04 0d 09 1a 0a 20 20 20 20 20 e1 |AY........ .| 00002130 0d 09 24 5e f4 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |..$^.-----------| 00002140 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00002180 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 09 |--------------..| 00002190 2e 13 20 20 20 dd 20 f2 5f 53 54 41 52 54 5f 55 |.. . ._START_U| 000021a0 50 0d 09 38 12 20 20 20 20 20 20 2a 46 58 31 31 |P..8. *FX11| 000021b0 32 2c 31 0d 09 42 12 20 20 20 20 20 20 2a 46 58 |2,1..B. *FX| 000021c0 31 31 33 2c 31 0d 09 4c 0b 20 20 20 20 20 20 da |113,1..L. .| 000021d0 0d 09 56 12 20 20 20 20 20 20 2a 46 58 31 31 32 |..V. *FX112| 000021e0 2c 32 0d 09 60 12 20 20 20 20 20 20 2a 46 58 31 |,2..`. *FX1| 000021f0 31 33 2c 32 0d 09 6a 0b 20 20 20 20 20 20 da 0d |13,2..j. ..| 00002200 09 74 09 20 20 20 20 e1 0d 09 7e 5e f4 2d 2d 2d |.t. ...~^.---| 00002210 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00002260 2d 2d 2d 2d 2d 2d 0d 09 88 1e f4 20 49 4e 49 54 |------..... INIT| 00002270 49 41 4c 49 53 41 54 49 4f 4e 20 50 52 4f 43 45 |IALISATION PROCE| 00002280 44 55 52 45 0d 09 92 04 0d 09 9c 10 20 20 20 20 |DURE........ | 00002290 dd 20 f2 5f 49 4e 49 54 0d 09 a6 04 0d 09 b0 43 |. ._INIT.......C| 000022a0 20 20 20 20 20 c8 99 20 22 4f 53 5f 53 57 49 4e | .. "OS_SWIN| 000022b0 75 6d 62 65 72 46 72 6f 6d 53 74 72 69 6e 67 22 |umberFromString"| 000022c0 2c 2c 22 43 6f 6c 6f 75 72 54 72 61 6e 73 5f 53 |,,"ColourTrans_S| 000022d0 65 74 47 43 4f 4c 22 20 b8 20 43 54 53 47 25 0d |etGCOL" . CTSG%.| 000022e0 09 ba 43 20 20 20 20 20 c8 99 20 22 4f 53 5f 53 |..C .. "OS_S| 000022f0 57 49 4e 75 6d 62 65 72 46 72 6f 6d 53 74 72 69 |WINumberFromStri| 00002300 6e 67 22 2c 2c 22 43 6f 6c 6f 75 72 54 72 61 6e |ng",,"ColourTran| 00002310 73 5f 53 65 74 47 43 4f 4c 22 20 b8 20 43 54 53 |s_SetGCOL" . CTS| 00002320 47 25 0d 09 c4 2d 20 20 20 20 20 c8 99 20 22 4f |G%...- .. "O| 00002330 53 5f 52 65 61 64 4d 6f 64 65 56 61 72 69 61 62 |S_ReadModeVariab| 00002340 6c 65 22 2c 2d 31 2c 31 31 20 b8 20 2c 2c 78 0d |le",-1,11 . ,,x.| 00002350 09 ce 2d 20 20 20 20 20 c8 99 20 22 4f 53 5f 52 |..- .. "OS_R| 00002360 65 61 64 4d 6f 64 65 56 61 72 69 61 62 6c 65 22 |eadModeVariable"| 00002370 2c 2d 31 2c 31 32 20 b8 20 2c 2c 79 0d 09 d8 2d |,-1,12 . ,,y...-| 00002380 20 20 20 20 20 c8 99 20 22 4f 53 5f 52 65 61 64 | .. "OS_Read| 00002390 4d 6f 64 65 56 61 72 69 61 62 6c 65 22 2c 2d 31 |ModeVariable",-1| 000023a0 2c 34 20 b8 20 2c 2c 65 78 0d 09 e2 2d 20 20 20 |,4 . ,,ex...- | 000023b0 20 20 c8 99 20 22 4f 53 5f 52 65 61 64 4d 6f 64 | .. "OS_ReadMod| 000023c0 65 56 61 72 69 61 62 6c 65 22 2c 2d 31 2c 35 20 |eVariable",-1,5 | 000023d0 b8 20 2c 2c 65 79 0d 09 ec 2f 20 20 20 20 20 4d |. ,,ey.../ M| 000023e0 61 78 57 69 64 74 68 3d 28 78 2b 31 29 3c 3c 65 |axWidth=(x+1)<<e| 000023f0 78 3a 4d 61 78 48 65 69 67 68 74 3d 28 79 2b 31 |x:MaxHeight=(y+1| 00002400 29 3c 3c 65 79 0d 09 f6 04 0d 0a 00 15 20 20 20 |)<<ey........ | 00002410 20 20 20 42 41 4e 4b 31 20 20 20 3d 20 31 0d 0a | BANK1 = 1..| 00002420 0a 15 20 20 20 20 20 20 42 41 4e 4b 32 20 20 20 |.. BANK2 | 00002430 3d 20 32 0d 0a 14 15 20 20 20 20 20 20 4d 41 58 |= 2.... MAX| 00002440 53 43 41 4e 20 3d 20 31 0d 0a 1e 16 20 20 20 20 |SCAN = 1.... | 00002450 20 20 4d 41 58 4c 49 4e 45 20 3d 20 33 30 0d 0a | MAXLINE = 30..| 00002460 28 13 20 20 20 20 20 20 eb 20 20 32 38 2b 31 32 |(. . 28+12| 00002470 38 0d 0a 32 19 20 20 20 20 20 20 44 4f 43 4c 47 |8..2. DOCLG| 00002480 3d b9 3a 42 41 4e 4b 53 3d b9 0d 0a 3c 04 0d 0a |=.:BANKS=...<...| 00002490 46 09 20 20 20 20 e1 0d 0a 50 04 0d 0a 5a 5e f4 |F. ...P...Z^.| 000024a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 000024f0 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 0a 64 17 20 20 20 |---------..d. | 00002500 20 dd 20 f2 5f 52 4f 57 5f 4d 45 54 52 49 43 53 | . ._ROW_METRICS| 00002510 0d 0a 6e 04 0d 0a 78 17 20 20 20 20 20 52 4f 57 |..n...x. ROW| 00002520 5f 58 20 20 20 20 20 20 3d 20 30 0d 0a 82 17 20 |_X = 0.... | 00002530 20 20 20 20 52 4f 57 5f 59 20 20 20 20 20 20 3d | ROW_Y =| 00002540 20 34 0d 0a 8c 17 20 20 20 20 20 52 4f 57 5f 5a | 4.... ROW_Z| 00002550 20 20 20 20 20 20 3d 20 38 0d 0a 96 04 0d 0a a0 | = 8.......| 00002560 18 20 20 20 20 20 52 4f 57 5f 58 4c 20 20 20 20 |. ROW_XL | 00002570 20 3d 20 31 32 0d 0a aa 18 20 20 20 20 20 52 4f | = 12.... RO| 00002580 57 5f 59 4c 20 20 20 20 20 3d 20 31 36 0d 0a b4 |W_YL = 16...| 00002590 18 20 20 20 20 20 52 4f 57 5f 5a 4c 20 20 20 20 |. ROW_ZL | 000025a0 20 3d 20 32 30 0d 0a be 04 0d 0a c8 18 20 20 20 | = 20........ | 000025b0 20 20 52 4f 57 5f 58 50 20 20 20 20 20 3d 20 32 | ROW_XP = 2| 000025c0 34 0d 0a d2 18 20 20 20 20 20 52 4f 57 5f 59 50 |4.... ROW_YP| 000025d0 20 20 20 20 20 3d 20 32 38 0d 0a dc 18 20 20 20 | = 28.... | 000025e0 20 20 52 4f 57 5f 5a 50 20 20 20 20 20 3d 20 33 | ROW_ZP = 3| 000025f0 32 0d 0a e6 04 0d 0a f0 18 20 20 20 20 20 52 4f |2........ RO| 00002600 57 5f 58 43 20 20 20 20 20 3d 20 33 36 0d 0a fa |W_XC = 36...| 00002610 18 20 20 20 20 20 52 4f 57 5f 59 43 20 20 20 20 |. ROW_YC | 00002620 20 3d 20 34 30 0d 0b 04 18 20 20 20 20 20 52 4f | = 40.... RO| 00002630 57 5f 5a 43 20 20 20 20 20 3d 20 34 34 0d 0b 0e |W_ZC = 44...| 00002640 04 0d 0b 18 18 20 20 20 20 20 52 4f 57 5f 53 49 |..... ROW_SI| 00002650 5a 45 20 20 20 3d 20 34 38 0d 0b 22 18 20 20 20 |ZE = 48..". | 00002660 20 20 52 4f 57 5f 52 47 42 20 20 20 20 3d 20 35 | ROW_RGB = 5| 00002670 32 0d 0b 2c 18 20 20 20 20 20 52 4f 57 5f 52 47 |2..,. ROW_RG| 00002680 42 54 41 42 20 3d 20 35 36 0d 0b 36 04 0d 0b 40 |BTAB = 56..6...@| 00002690 18 20 20 20 20 20 52 4f 57 5f 41 4e 47 4c 45 20 |. ROW_ANGLE | 000026a0 20 3d 20 36 30 0d 0b 4a 18 20 20 20 20 20 52 4f | = 60..J. RO| 000026b0 57 5f 53 50 45 45 44 20 20 3d 20 36 34 0d 0b 54 |W_SPEED = 64..T| 000026c0 18 20 20 20 20 20 52 4f 57 5f 53 50 52 49 54 45 |. ROW_SPRITE| 000026d0 20 3d 20 36 38 0d 0b 5e 04 0d 0b 68 4e 20 20 20 | = 68..^...hN | 000026e0 20 20 52 4f 57 5f 54 59 50 45 20 20 20 20 3d 20 | ROW_TYPE = | 000026f0 37 32 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |72 | 00002700 20 20 20 20 20 20 20 20 20 20 20 3a f4 20 30 3d | :. 0=| 00002710 43 49 52 43 4c 45 2c 20 31 3d 46 49 4c 4c 45 44 |CIRCLE, 1=FILLED| 00002720 20 43 49 52 43 4c 45 0d 0b 72 19 20 20 20 20 20 | CIRCLE..r. | 00002730 52 4f 57 5f 52 47 42 4e 55 4d 20 20 3d 20 37 36 |ROW_RGBNUM = 76| 00002740 0d 0b 7c 04 0d 0b 86 1b 20 20 20 20 20 52 4f 57 |..|..... ROW| 00002750 5f 57 4f 52 44 53 20 20 20 3d 20 38 30 2f 34 0d |_WORDS = 80/4.| 00002760 0b 90 22 20 20 20 20 20 52 4f 57 5f 4c 45 4e 20 |.." ROW_LEN | 00002770 20 20 20 20 3d 20 52 4f 57 5f 57 4f 52 44 53 2a | = ROW_WORDS*| 00002780 34 0d 0b 9a 19 20 20 20 20 20 52 4f 57 5f 4c 45 |4.... ROW_LE| 00002790 4e 31 20 20 20 20 3d 20 38 30 0d 0b a4 09 20 20 |N1 = 80.... | 000027a0 20 20 e1 0d 0b ae 5e f4 2d 2d 2d 2d 2d 2d 2d 2d | ....^.--------| 000027b0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00002800 2d 0d 0b b8 17 f4 20 49 4e 49 54 49 41 4c 49 53 |-..... INITIALIS| 00002810 45 20 41 52 52 41 59 53 0d 0b c2 05 f4 0d 0b cc |E ARRAYS........| 00002820 12 20 20 20 20 dd 20 f2 5f 49 4e 49 54 5f 41 0d |. . ._INIT_A.| 00002830 0b d6 17 20 20 20 20 20 20 f2 5f 52 4f 57 5f 4d |... ._ROW_M| 00002840 45 54 52 49 43 53 0d 0b e0 21 20 20 20 20 20 20 |ETRICS...! | 00002850 de 20 58 59 5a 5f 41 25 20 4d 41 58 50 4e 54 2a |. XYZ_A% MAXPNT*| 00002860 52 4f 57 5f 4c 45 4e 0d 0b ea 21 20 20 20 20 20 |ROW_LEN...! | 00002870 20 de 20 58 59 5a 5f 44 25 20 4d 41 58 50 4e 54 | . XYZ_D% MAXPNT| 00002880 2a 52 4f 57 5f 4c 45 4e 0d 0b f4 1b 20 20 20 20 |*ROW_LEN.... | 00002890 20 20 de 20 58 59 5a 5f 57 25 20 4d 41 58 50 4e | . XYZ_W% MAXPN| 000028a0 54 2a 34 0d 0b fe 13 20 20 20 20 20 20 44 25 3d |T*4.... D%=| 000028b0 58 59 5a 5f 44 25 0d 0c 08 21 20 20 20 20 20 20 |XYZ_D%...! | 000028c0 e3 20 49 25 20 3d 20 30 20 b8 20 4d 41 58 50 4e |. I% = 0 . MAXPN| 000028d0 54 2a 34 20 88 20 34 0d 0c 12 1c 20 20 20 20 20 |T*4 . 4.... | 000028e0 20 20 20 58 59 5a 5f 57 25 21 28 49 25 29 20 3d | XYZ_W%!(I%) =| 000028f0 20 44 25 0d 0c 1c 17 20 20 20 20 20 20 20 20 44 | D%.... D| 00002900 25 2b 3d 52 4f 57 5f 4c 45 4e 0d 0c 26 0e 20 20 |%+=ROW_LEN..&. | 00002910 20 20 20 20 ed 20 49 25 0d 0c 30 14 20 20 20 20 | . I%..0. | 00002920 20 20 f2 5f 41 53 53 45 4d 42 4c 45 0d 0c 3a 09 | ._ASSEMBLE..:.| 00002930 20 20 20 20 e1 0d 0c 44 04 0d 0c 4e 5e f4 2d 2d | ...D...N^.--| 00002940 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00002990 2d 2d 2d 2d 2d 2d 2d 0d 0c 58 14 20 20 20 20 dd |-------..X. .| 000029a0 20 f2 5f 41 53 53 45 4d 42 4c 45 0d 0c 62 13 de | ._ASSEMBLE..b..| 000029b0 20 41 53 53 45 4d 42 4c 59 20 34 30 39 36 0d 0c | ASSEMBLY 4096..| 000029c0 6c 17 20 e3 20 50 41 53 53 20 3d 20 30 20 b8 20 |l. . PASS = 0 . | 000029d0 32 20 88 20 32 0d 0c 76 12 20 50 25 20 3d 20 41 |2 . 2..v. P% = A| 000029e0 53 53 45 4d 42 4c 59 0d 0c 80 0d 5b 4f 50 54 20 |SSEMBLY....[OPT | 000029f0 50 41 53 53 0d 0c 8a 3a 20 20 20 20 20 2e 43 4f |PASS...: .CO| 00002a00 4d 5f 53 48 4f 57 20 45 51 55 44 20 20 20 20 30 |M_SHOW EQUD 0| 00002a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 31 | ;1| 00002a20 3d 46 6f 72 63 65 20 64 69 73 70 6c 61 79 0d 0c |=Force display..| 00002a30 94 05 5d 0d 0c 9e 10 f4 20 53 48 45 4c 4c 20 53 |..]..... SHELL S| 00002a40 4f 52 54 0d 0c a8 30 f4 20 41 25 20 3d 20 43 4f |ORT...0. A% = CO| 00002a50 55 4e 54 2c 20 42 25 20 3d 20 57 4f 52 4b 20 41 |UNT, B% = WORK A| 00002a60 52 45 41 2c 20 43 25 20 3d 20 53 4f 52 54 20 44 |REA, C% = SORT D| 00002a70 41 54 41 0d 0c b2 0f f4 20 43 41 4c 4c 20 53 4f |ATA..... CALL SO| 00002a80 52 54 0d 0c bc 4a f4 20 42 25 20 49 53 20 41 20 |RT...J. B% IS A | 00002a90 4e 4f 4e 20 44 49 4d 45 4e 53 49 4f 4e 45 44 20 |NON DIMENSIONED | 00002aa0 41 52 52 41 59 2c 20 45 41 43 48 20 45 4c 45 4d |ARRAY, EACH ELEM| 00002ab0 45 4e 54 20 49 53 20 41 20 50 4f 49 4e 54 45 52 |ENT IS A POINTER| 00002ac0 20 54 4f 20 4f 42 4a 20 44 41 54 41 0d 0c c6 33 | TO OBJ DATA...3| 00002ad0 f4 20 43 25 20 49 53 20 53 4f 52 54 45 44 20 41 |. C% IS SORTED A| 00002ae0 4e 44 20 4f 52 44 45 52 45 44 20 41 44 44 52 45 |ND ORDERED ADDRE| 00002af0 53 53 45 53 20 50 55 54 20 54 4f 20 42 25 2e 0d |SSES PUT TO B%..| 00002b00 0c d0 04 0d 0c da 46 20 20 20 20 20 43 4f 4d 50 |......F COMP| 00002b10 20 20 20 20 20 20 3d 20 52 4f 57 5f 5a 20 20 20 | = ROW_Z | 00002b20 20 20 20 20 20 20 20 20 3a f4 20 53 4f 52 54 20 | :. SORT | 00002b30 41 52 47 55 4d 45 4e 54 20 49 4e 54 45 47 45 52 |ARGUMENT INTEGER| 00002b40 20 50 4f 53 49 54 49 4f 4e 0d 0c e4 04 0d 0c ee | POSITION.......| 00002b50 16 20 20 20 20 20 53 5f 4e 55 4d 20 20 20 20 20 |. S_NUM | 00002b60 3d 20 30 0d 0c f8 16 20 20 20 20 20 53 5f 57 20 |= 0.... S_W | 00002b70 20 20 20 20 20 20 3d 20 31 0d 0d 02 16 20 20 20 | = 1.... | 00002b80 20 20 53 5f 41 20 20 20 20 20 20 20 3d 20 32 0d | S_A = 2.| 00002b90 0d 0c 16 20 20 20 20 20 53 5f 57 49 4e 44 45 58 |... S_WINDEX| 00002ba0 31 20 3d 20 33 0d 0d 16 16 20 20 20 20 20 53 5f |1 = 3.... S_| 00002bb0 57 49 4e 44 45 58 32 20 3d 20 34 0d 0d 20 16 20 |WINDEX2 = 4.. . | 00002bc0 20 20 20 20 53 5f 57 4b 31 20 20 20 20 20 3d 20 | S_WK1 = | 00002bd0 35 0d 0d 2a 16 20 20 20 20 20 53 5f 57 4b 32 20 |5..*. S_WK2 | 00002be0 20 20 20 20 3d 20 36 0d 0d 34 16 20 20 20 20 20 | = 6..4. | 00002bf0 53 5f 43 4d 50 31 20 20 20 20 3d 20 37 0d 0d 3e |S_CMP1 = 7..>| 00002c00 16 20 20 20 20 20 53 5f 43 4d 50 32 20 20 20 20 |. S_CMP2 | 00002c10 3d 20 38 0d 0d 48 16 20 20 20 20 20 53 5f 43 4e |= 8..H. S_CN| 00002c20 54 20 20 20 20 20 3d 20 39 0d 0d 52 17 20 20 20 |T = 9..R. | 00002c30 20 20 53 5f 57 4b 33 20 20 20 20 20 3d 20 31 30 | S_WK3 = 10| 00002c40 0d 0d 5c 17 20 20 20 20 20 53 5f 53 50 4c 49 54 |..\. S_SPLIT| 00002c50 20 20 20 3d 20 31 31 0d 0d 66 31 20 20 20 20 20 | = 11..f1 | 00002c60 53 5f 57 49 4e 44 45 58 33 20 3d 20 31 32 20 20 |S_WINDEX3 = 12 | 00002c70 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 53 5f | :S_| 00002c80 52 4f 57 20 3d 20 31 32 0d 0d 70 0f 20 5b 20 4f |ROW = 12..p. [ O| 00002c90 50 54 20 50 41 53 53 0d 0d 7a 04 0d 0d 84 09 2e |PT PASS..z......| 00002ca0 53 4f 52 54 0d 0d 8e 18 20 20 20 20 20 20 20 20 |SORT.... | 00002cb0 4d 4f 56 20 53 5f 4e 55 4d 2c 52 30 0d 0d 98 15 |MOV S_NUM,R0....| 00002cc0 20 20 20 20 20 20 20 20 43 4d 50 20 52 30 2c 23 | CMP R0,#| 00002cd0 32 0d 0d a2 17 20 20 20 20 20 20 20 20 4d 4f 56 |2.... MOV| 00002ce0 4c 45 20 50 43 2c 31 34 0d 0d ac 18 20 20 20 20 |LE PC,14.... | 00002cf0 20 20 20 20 4d 4f 56 20 53 5f 4e 55 4d 2c 52 30 | MOV S_NUM,R0| 00002d00 0d 0d b6 16 20 20 20 20 20 20 20 20 4d 4f 56 20 |.... MOV | 00002d10 53 5f 57 2c 52 31 0d 0d c0 04 0d 0d ca 05 3b 0d |S_W,R1........;.| 00002d20 0d d4 22 3b 20 c8 90 20 57 4f 52 4b 20 57 49 54 |.."; .. WORK WIT| 00002d30 48 20 45 4e 54 52 59 20 41 44 44 52 45 53 53 45 |H ENTRY ADDRESSE| 00002d40 53 0d 0d de 05 3b 0d 0d e8 18 20 20 20 20 20 20 |S....;.... | 00002d50 20 20 4d 4f 56 20 53 5f 52 4f 57 2c 52 32 0d 0d | MOV S_ROW,R2..| 00002d60 f2 18 20 20 20 20 20 20 20 20 4d 4f 56 20 53 5f |.. MOV S_| 00002d70 57 4b 31 2c 52 31 0d 0d fc 18 20 20 20 20 20 20 |WK1,R1.... | 00002d80 20 20 4d 4f 56 20 53 5f 57 4b 32 2c 52 30 0d 0e | MOV S_WK2,R0..| 00002d90 06 08 2e 46 4c 4c 0d 0e 10 20 20 20 20 20 20 20 |...FLL... | 00002da0 20 20 53 54 52 20 53 5f 52 4f 57 2c 5b 53 5f 57 | STR S_ROW,[S_W| 00002db0 4b 31 2c 23 30 5d 0d 0e 1a 1e 20 20 20 20 20 20 |K1,#0].... | 00002dc0 20 20 41 44 44 20 53 5f 57 4b 31 2c 53 5f 57 4b | ADD S_WK1,S_WK| 00002dd0 31 2c 23 34 0d 0e 24 24 20 20 20 20 20 20 20 20 |1,#4..$$ | 00002de0 41 44 44 20 53 5f 52 4f 57 2c 53 5f 52 4f 57 2c |ADD S_ROW,S_ROW,| 00002df0 23 52 4f 57 5f 4c 45 4e 0d 0e 2e 1f 20 20 20 20 |#ROW_LEN.... | 00002e00 20 20 20 20 53 55 42 53 20 53 5f 57 4b 32 2c 53 | SUBS S_WK2,S| 00002e10 5f 57 4b 32 2c 23 31 0d 0e 38 13 20 20 20 20 20 |_WK2,#1..8. | 00002e20 20 20 20 42 47 45 20 46 4c 4c 0d 0e 42 04 0d 0e | BGE FLL..B...| 00002e30 4c 16 20 20 20 20 20 20 20 20 4d 4f 56 20 53 5f |L. MOV S_| 00002e40 57 2c 52 31 0d 0e 56 04 0d 0e 60 04 0d 0e 6a 1c |W,R1..V...`...j.| 00002e50 3b 20 53 5f 53 50 4c 49 54 20 3d 20 28 4e 55 4d |; S_SPLIT = (NUM| 00002e60 42 45 52 2d 31 29 2f 32 0d 0e 74 04 0d 0e 7e 20 |BER-1)/2..t...~ | 00002e70 20 20 20 20 20 20 20 20 53 55 42 20 53 5f 53 50 | SUB S_SP| 00002e80 4c 49 54 2c 53 5f 4e 55 4d 2c 23 31 0d 0e 88 25 |LIT,S_NUM,#1...%| 00002e90 20 20 20 20 20 20 20 20 4d 4f 56 20 53 5f 53 50 | MOV S_SP| 00002ea0 4c 49 54 2c 53 5f 53 50 4c 49 54 2c 4c 53 52 23 |LIT,S_SPLIT,LSR#| 00002eb0 31 0d 0e 92 06 3b f5 0d 0e 9c 07 2e 52 31 0d 0e |1....;......R1..| 00002ec0 a6 04 0d 0e b0 2a 3b 20 e3 20 53 5f 57 49 4e 44 |.....*; . S_WIND| 00002ed0 45 58 31 20 3d 20 53 5f 53 50 4c 49 54 2b 31 20 |EX1 = S_SPLIT+1 | 00002ee0 b8 20 4e 55 4d 42 45 52 20 88 20 31 0d 0e ba 04 |. NUMBER . 1....| 00002ef0 0d 0e c4 04 0d 0e ce 24 20 20 20 20 20 20 20 20 |.......$ | 00002f00 41 44 44 20 53 5f 57 49 4e 44 45 58 31 2c 53 5f |ADD S_WINDEX1,S_| 00002f10 53 50 4c 49 54 2c 23 31 0d 0e d8 1b 20 20 20 20 |SPLIT,#1.... | 00002f20 20 20 20 20 4d 4f 56 20 53 5f 43 4e 54 2c 53 5f | MOV S_CNT,S_| 00002f30 4e 55 4d 0d 0e e2 07 2e 46 31 0d 0e ec 04 0d 0e |NUM.....F1......| 00002f40 f6 35 3b e3 20 53 5f 57 49 4e 44 45 58 32 20 3d |.5;. S_WINDEX2 =| 00002f50 20 53 5f 57 49 4e 44 45 58 31 20 2d 20 53 5f 53 | S_WINDEX1 - S_S| 00002f60 50 4c 49 54 20 b8 20 30 20 88 20 2d 53 5f 53 50 |PLIT . 0 . -S_SP| 00002f70 4c 49 54 0d 0f 00 04 0d 0f 0a 2b 20 20 20 20 20 |LIT.......+ | 00002f80 20 20 20 53 55 42 20 53 5f 57 49 4e 44 45 58 32 | SUB S_WINDEX2| 00002f90 2c 53 5f 57 49 4e 44 45 58 31 2c 53 5f 53 50 4c |,S_WINDEX1,S_SPL| 00002fa0 49 54 0d 0f 14 07 2e 46 32 0d 0f 1e 3a 20 20 20 |IT.....F2...: | 00002fb0 20 20 20 20 20 4c 44 52 20 53 5f 43 4d 50 31 2c | LDR S_CMP1,| 00002fc0 5b 53 5f 57 2c 53 5f 57 49 4e 44 45 58 32 2c 4c |[S_W,S_WINDEX2,L| 00002fd0 53 4c 23 32 5d 20 20 20 20 3b a5 20 49 4e 44 45 |SL#2] ;. INDE| 00002fe0 58 20 31 0d 0f 28 44 20 20 20 20 20 20 20 20 41 |X 1..(D A| 00002ff0 44 44 20 53 5f 57 49 4e 44 45 58 33 2c 53 5f 57 |DD S_WINDEX3,S_W| 00003000 49 4e 44 45 58 32 2c 53 5f 53 50 4c 49 54 20 20 |INDEX2,S_SPLIT | 00003010 20 20 20 3b 41 44 44 20 53 5f 53 50 4c 49 54 20 | ;ADD S_SPLIT | 00003020 b8 20 49 4e 44 45 58 0d 0f 32 3c 20 20 20 20 20 |. INDEX..2< | 00003030 20 20 20 4c 44 52 20 53 5f 43 4d 50 32 2c 5b 53 | LDR S_CMP2,[S| 00003040 5f 57 2c 53 5f 57 49 4e 44 45 58 33 2c 4c 53 4c |_W,S_WINDEX3,LSL| 00003050 23 32 5d 20 20 20 20 3b 80 20 a5 20 49 4e 44 45 |#2] ;. . INDE| 00003060 58 20 32 0d 0f 3c 04 0d 0f 46 38 20 20 20 20 20 |X 2..<...F8 | 00003070 20 20 20 4c 44 52 20 53 5f 57 4b 31 2c 5b 53 5f | LDR S_WK1,[S_| 00003080 43 4d 50 31 2c 23 43 4f 4d 50 5d 20 20 20 20 20 |CMP1,#COMP] | 00003090 20 20 20 20 20 3b a5 20 52 45 46 20 bb 55 45 0d | ;. REF .UE.| 000030a0 0f 50 32 20 20 20 20 20 20 20 20 4c 44 52 20 53 |.P2 LDR S| 000030b0 5f 57 4b 32 2c 5b 53 5f 43 4d 50 32 2c 23 43 4f |_WK2,[S_CMP2,#CO| 000030c0 4d 50 5d 20 20 20 20 20 20 20 20 20 20 3b 80 20 |MP] ;. | 000030d0 ed 0d 0f 5a 3b 20 20 20 20 20 20 20 20 43 4d 50 |...Z; CMP| 000030e0 20 53 5f 57 4b 31 2c 53 5f 57 4b 32 20 20 20 20 | S_WK1,S_WK2 | 000030f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b | ;| 00003100 43 4f 4d 50 41 52 45 20 bb 55 45 53 0d 0f 64 36 |COMPARE .UES..d6| 00003110 20 20 20 20 20 20 20 20 42 4c 54 20 4e 4f 53 57 | BLT NOSW| 00003120 41 50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |AP | 00003130 20 20 20 20 20 20 20 20 20 20 3b 80 2e 2e 2e 2e | ;.....| 00003140 2e 2e 0d 0f 6e 05 3b 0d 0f 78 1a 3b 20 c8 94 20 |....n.;..x.; .. | 00003150 42 25 20 49 4e 44 45 58 20 bb 55 45 53 20 ee 4c |B% INDEX .UES .L| 00003160 59 0d 0f 82 05 3b 0d 0f 8c 1c 20 20 20 20 20 20 |Y....;.... | 00003170 20 20 4d 4f 56 20 53 5f 57 4b 33 2c 53 5f 43 4d | MOV S_WK3,S_CM| 00003180 50 31 0d 0f 96 1d 20 20 20 20 20 20 20 20 4d 4f |P1.... MO| 00003190 56 20 53 5f 43 4d 50 31 2c 53 5f 43 4d 50 32 0d |V S_CMP1,S_CMP2.| 000031a0 0f a0 1c 20 20 20 20 20 20 20 20 4d 4f 56 20 53 |... MOV S| 000031b0 5f 43 4d 50 32 2c 53 5f 57 4b 33 0d 0f aa 2c 20 |_CMP2,S_WK3..., | 000031c0 20 20 20 20 20 20 20 53 54 52 20 53 5f 43 4d 50 | STR S_CMP| 000031d0 31 2c 5b 53 5f 57 2c 53 5f 57 49 4e 44 45 58 32 |1,[S_W,S_WINDEX2| 000031e0 2c 4c 53 4c 23 32 5d 0d 0f b4 2c 20 20 20 20 20 |,LSL#2]..., | 000031f0 20 20 20 53 54 52 20 53 5f 43 4d 50 32 2c 5b 53 | STR S_CMP2,[S| 00003200 5f 57 2c 53 5f 57 49 4e 44 45 58 33 2c 4c 53 4c |_W,S_WINDEX3,LSL| 00003210 23 32 5d 0d 0f be 05 3b 0d 0f c8 0b 2e 4e 4f 53 |#2]....;.....NOS| 00003220 57 41 50 0d 0f d2 05 3b 0d 0f dc 10 3b ed 20 53 |WAP....;....;. S| 00003230 5f 57 49 4e 44 45 58 32 0d 0f e6 04 0d 0f f0 3a |_WINDEX2.......:| 00003240 20 20 20 20 20 20 20 53 55 42 53 20 53 5f 57 49 | SUBS S_WI| 00003250 4e 44 45 58 32 2c 53 5f 57 49 4e 44 45 58 32 2c |NDEX2,S_WINDEX2,| 00003260 53 5f 53 50 4c 49 54 20 20 20 3b 88 20 2d 20 53 |S_SPLIT ;. - S| 00003270 5f 53 50 4c 49 54 0d 0f fa 32 20 20 20 20 20 20 |_SPLIT...2 | 00003280 20 42 47 45 20 46 32 20 20 20 20 20 20 20 20 20 | BGE F2 | 00003290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000032a0 20 20 20 20 3b b8 20 30 0d 10 04 04 0d 10 0e 10 | ;. 0........| 000032b0 3b ed 20 53 5f 57 49 4e 44 45 58 31 0d 10 18 04 |;. S_WINDEX1....| 000032c0 0d 10 22 33 20 20 20 20 20 20 20 41 44 44 20 20 |.."3 ADD | 000032d0 53 5f 57 49 4e 44 45 58 31 2c 53 5f 57 49 4e 44 |S_WINDEX1,S_WIND| 000032e0 45 58 31 2c 23 31 20 20 20 20 20 20 20 20 20 3b |EX1,#1 ;| 000032f0 88 20 31 0d 10 2c 1f 20 20 20 20 20 20 20 43 4d |. 1..,. CM| 00003300 50 20 20 53 5f 4e 55 4d 2c 53 5f 57 49 4e 44 45 |P S_NUM,S_WINDE| 00003310 58 31 0d 10 36 38 20 20 20 20 20 20 20 42 4e 45 |X1..68 BNE| 00003320 20 46 31 20 20 20 20 20 20 20 20 20 20 20 20 20 | F1 | 00003330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00003340 3b b8 20 4e 55 4d 20 2d 20 31 0d 10 40 04 0d 10 |;. NUM - 1..@...| 00003350 4a 42 20 20 20 20 20 20 20 4d 4f 56 53 20 53 5f |JB MOVS S_| 00003360 53 50 4c 49 54 2c 53 5f 53 50 4c 49 54 2c 4c 53 |SPLIT,S_SPLIT,LS| 00003370 52 23 31 20 20 20 20 20 20 20 20 20 3b 53 5f 53 |R#1 ;S_S| 00003380 50 4c 49 54 20 3d 20 53 5f 53 50 4c 49 54 2f 32 |PLIT = S_SPLIT/2| 00003390 0d 10 54 12 3b fd 20 53 5f 53 50 4c 49 54 20 3d |..T.;. S_SPLIT =| 000033a0 20 30 0d 10 5e 11 20 20 20 20 20 20 20 42 47 54 | 0..^. BGT| 000033b0 20 52 31 0d 10 68 15 20 20 20 20 20 20 20 4d 4f | R1..h. MO| 000033c0 56 20 50 43 2c 52 31 34 0d 10 72 0a 20 20 20 20 |V PC,R14..r. | 000033d0 20 5d 0d 10 7c 15 f4 20 20 44 49 56 49 44 45 20 | ]..|.. DIVIDE | 000033e0 52 4f 55 54 49 4e 45 0d 10 86 04 0d 10 90 31 56 |ROUTINE.......1V| 000033f0 5f 4e 55 4d 42 45 52 20 20 20 20 3d 20 30 20 20 |_NUMBER = 0 | 00003400 20 20 20 20 20 3a f4 20 4e 55 4d 42 45 52 20 54 | :. NUMBER T| 00003410 4f 20 42 45 20 44 49 56 49 44 45 44 0d 10 9a 27 |O BE DIVIDED...'| 00003420 56 5f 44 49 56 49 53 4f 52 20 20 20 3d 20 31 20 |V_DIVISOR = 1 | 00003430 20 20 20 20 20 20 3a f4 20 44 49 56 49 44 45 44 | :. DIVIDED| 00003440 20 42 59 0d 10 a4 23 56 5f 51 55 4f 54 49 45 4e | BY...#V_QUOTIEN| 00003450 54 20 20 3d 20 32 20 20 20 20 20 20 20 3a f4 20 |T = 2 :. | 00003460 52 45 53 55 4c 54 0d 10 ae 26 56 5f 52 45 4d 41 |RESULT...&V_REMA| 00003470 49 4e 44 45 52 20 3d 20 33 20 20 20 20 20 20 20 |INDER = 3 | 00003480 3a f4 20 52 45 4d 41 49 4e 44 45 52 0d 10 b8 2a |:. REMAINDER...*| 00003490 56 5f 50 4c 41 43 45 20 20 20 20 20 3d 20 34 20 |V_PLACE = 4 | 000034a0 20 20 20 20 20 20 3a f4 20 57 4f 52 4b 20 52 45 | :. WORK RE| 000034b0 47 49 53 54 45 52 0d 10 c2 13 56 5f 4d 53 49 47 |GISTER....V_MSIG| 000034c0 4e 20 20 20 20 20 3d 20 36 0d 10 cc 13 56 5f 44 |N = 6....V_D| 000034d0 53 49 47 4e 20 20 20 20 20 3d 20 37 0d 10 d6 53 |SIGN = 7...S| 000034e0 f4 20 52 45 53 55 4c 54 53 20 20 20 20 20 2d 20 |. RESULTS - | 000034f0 52 30 20 3d 20 51 55 4f 54 49 45 4e 54 2c 44 56 |R0 = QUOTIENT,DV| 00003500 44 5f 51 55 4f 54 49 45 4e 54 20 3d 20 51 55 4f |D_QUOTIENT = QUO| 00003510 54 49 45 4e 54 2c 44 56 44 5f 52 45 4d 41 49 4e |TIENT,DVD_REMAIN| 00003520 44 45 52 20 3d 20 52 45 4d 41 49 4e 44 45 52 0d |DER = REMAINDER.| 00003530 10 e0 04 0d 10 ea 0e 5b 20 4f 50 54 20 50 41 53 |.......[ OPT PAS| 00003540 53 0d 10 f4 08 2e 44 56 44 0d 10 fe 26 20 20 20 |S.....DVD...& | 00003550 20 20 20 20 20 20 20 20 53 54 4d 46 44 20 52 31 | STMFD R1| 00003560 33 21 2c 7b 52 31 2d 52 31 32 2c 52 31 34 7d 0d |3!,{R1-R12,R14}.| 00003570 11 08 37 20 20 20 20 20 20 20 20 20 20 20 80 53 |..7 .S| 00003580 20 20 56 5f 4d 53 49 47 4e 2c 56 5f 4e 55 4d 42 | V_MSIGN,V_NUMB| 00003590 45 52 2c 23 31 3c 3c 33 31 20 20 20 3b 53 45 54 |ER,#1<<31 ;SET| 000035a0 20 53 49 47 4e 53 0d 11 12 3c 20 20 20 20 20 20 | SIGNS...< | 000035b0 20 20 20 20 20 52 53 42 4d 49 20 56 5f 4e 55 4d | RSBMI V_NUM| 000035c0 42 45 52 2c 56 5f 4e 55 4d 42 45 52 2c 23 30 20 |BER,V_NUMBER,#0 | 000035d0 20 20 20 20 3b 4d 41 4b 45 20 50 4f 53 49 54 49 | ;MAKE POSITI| 000035e0 56 45 0d 11 1c 2c 20 20 20 20 20 20 20 20 20 20 |VE..., | 000035f0 20 82 20 20 20 56 5f 44 53 49 47 4e 2c 56 5f 4d | . V_DSIGN,V_M| 00003600 53 49 47 4e 2c 56 5f 44 49 56 49 53 4f 52 0d 11 |SIGN,V_DIVISOR..| 00003610 26 21 20 20 20 20 20 20 20 20 20 20 20 43 4d 50 |&! CMP| 00003620 20 20 20 56 5f 44 49 56 49 53 4f 52 2c 23 30 0d | V_DIVISOR,#0.| 00003630 11 30 3c 20 20 20 20 20 20 20 20 20 20 20 52 53 |.0< RS| 00003640 42 4d 49 20 56 5f 44 49 56 49 53 4f 52 2c 56 5f |BMI V_DIVISOR,V_| 00003650 44 49 56 49 53 4f 52 2c 23 31 20 20 20 3b 4d 41 |DIVISOR,#1 ;MA| 00003660 4b 45 20 50 4f 53 49 54 49 56 45 0d 11 3a 04 0d |KE POSITIVE..:..| 00003670 11 44 22 20 20 20 20 20 20 20 20 20 20 20 4d 4f |.D" MO| 00003680 56 20 20 20 56 5f 51 55 4f 54 49 45 4e 54 2c 23 |V V_QUOTIENT,#| 00003690 30 0d 11 4e 23 20 20 20 20 20 20 20 20 20 20 20 |0..N# | 000036a0 4d 4f 56 20 20 20 56 5f 52 45 4d 41 49 4e 44 45 |MOV V_REMAINDE| 000036b0 52 2c 23 30 0d 11 58 23 20 20 20 20 20 20 20 20 |R,#0..X# | 000036c0 20 20 20 4d 4f 56 20 20 20 56 5f 50 4c 41 43 45 | MOV V_PLACE| 000036d0 2c 23 31 3c 3c 33 31 0d 11 62 12 2e 64 69 76 69 |,#1<<31..b..divi| 000036e0 73 69 6f 6e 5f 6c 6f 6f 70 0d 11 6c 4b 20 20 20 |sion_loop..lK | 000036f0 20 20 20 20 20 20 20 20 4d 4f 56 53 20 20 56 5f | MOVS V_| 00003700 4e 55 4d 42 45 52 2c 56 5f 4e 55 4d 42 45 52 2c |NUMBER,V_NUMBER,| 00003710 41 53 4c 23 31 20 20 20 20 20 20 20 20 20 20 20 |ASL#1 | 00003720 20 3b 20 44 4f 55 42 4c 45 20 53 48 49 46 54 20 | ; DOUBLE SHIFT | 00003730 4c 45 46 54 0d 11 76 38 20 20 20 20 20 20 20 20 |LEFT..v8 | 00003740 20 20 20 41 44 43 20 20 20 56 5f 52 45 4d 41 49 | ADC V_REMAI| 00003750 4e 44 45 52 2c 56 5f 52 45 4d 41 49 4e 44 45 52 |NDER,V_REMAINDER| 00003760 2c 56 5f 52 45 4d 41 49 4e 44 45 52 0d 11 80 4e |,V_REMAINDER...N| 00003770 20 20 20 20 20 20 20 20 20 20 20 43 4d 50 20 20 | CMP | 00003780 20 56 5f 52 45 4d 41 49 4e 44 45 52 2c 56 5f 44 | V_REMAINDER,V_D| 00003790 49 56 49 53 4f 52 20 20 20 20 20 20 20 20 20 20 |IVISOR | 000037a0 20 20 20 3b 81 49 44 45 20 31 53 54 20 42 49 4e | ;.IDE 1ST BIN| 000037b0 2e 20 44 49 47 49 54 53 20 3f 0d 11 8a 44 20 20 |. DIGITS ?...D | 000037c0 20 20 20 20 20 20 20 20 20 53 55 42 47 45 20 56 | SUBGE V| 000037d0 5f 52 45 4d 41 49 4e 44 45 52 2c 56 5f 52 45 4d |_REMAINDER,V_REM| 000037e0 41 49 4e 44 45 52 2c 56 5f 44 49 56 49 53 4f 52 |AINDER,V_DIVISOR| 000037f0 20 3b 31 20 44 49 47 49 54 20 81 49 44 45 0d 11 | ;1 DIGIT .IDE..| 00003800 94 45 20 20 20 20 20 20 20 20 20 20 20 84 52 47 |.E .RG| 00003810 45 20 56 5f 51 55 4f 54 49 45 4e 54 2c 56 5f 51 |E V_QUOTIENT,V_Q| 00003820 55 4f 54 49 45 4e 54 2c 56 5f 50 4c 41 43 45 20 |UOTIENT,V_PLACE | 00003830 20 20 20 20 3b 50 41 52 54 49 41 4c 20 52 45 53 | ;PARTIAL RES| 00003840 55 4c 54 0d 11 9e 3b 20 20 20 20 20 20 20 20 20 |ULT...; | 00003850 20 20 4d 4f 56 53 20 20 56 5f 50 4c 41 43 45 2c | MOVS V_PLACE,| 00003860 56 5f 50 4c 41 43 45 2c 4c 53 52 23 31 20 20 20 |V_PLACE,LSR#1 | 00003870 20 20 20 20 20 20 20 20 20 20 20 3b 20 ed 0d 11 | ; ...| 00003880 a8 22 20 20 20 20 20 20 20 20 20 20 20 42 4e 45 |." BNE| 00003890 20 20 20 64 69 76 69 73 69 6f 6e 5f 6c 6f 6f 70 | division_loop| 000038a0 0d 11 b2 04 0d 11 bc 1f 20 20 20 20 20 20 20 20 |........ | 000038b0 20 20 20 43 4d 50 20 20 20 56 5f 44 53 49 47 4e | CMP V_DSIGN| 000038c0 2c 23 30 0d 11 c6 2d 20 20 20 20 20 20 20 20 20 |,#0...- | 000038d0 20 20 52 53 42 4d 49 20 56 5f 51 55 4f 54 49 45 | RSBMI V_QUOTIE| 000038e0 4e 54 2c 56 5f 51 55 4f 54 49 45 4e 54 2c 23 30 |NT,V_QUOTIENT,#0| 000038f0 0d 11 d0 1f 20 20 20 20 20 20 20 20 20 20 20 43 |.... C| 00003900 4d 50 20 20 20 56 5f 4d 53 49 47 4e 2c 23 30 0d |MP V_MSIGN,#0.| 00003910 11 da 2f 20 20 20 20 20 20 20 20 20 20 20 52 53 |../ RS| 00003920 42 4d 49 20 56 5f 52 45 4d 41 49 4e 44 45 52 2c |BMI V_REMAINDER,| 00003930 56 5f 52 45 4d 41 49 4e 44 45 52 2c 23 30 0d 11 |V_REMAINDER,#0..| 00003940 e4 04 0d 11 ee 2e 20 20 20 20 20 20 20 20 20 20 |...... | 00003950 20 53 54 52 20 20 20 56 5f 52 45 4d 41 49 4e 44 | STR V_REMAIND| 00003960 45 52 2c 44 56 44 5f 52 45 4d 41 49 4e 44 45 52 |ER,DVD_REMAINDER| 00003970 0d 11 f8 2c 20 20 20 20 20 20 20 20 20 20 20 53 |..., S| 00003980 54 52 20 20 20 56 5f 51 55 4f 54 49 45 4e 54 2c |TR V_QUOTIENT,| 00003990 44 56 44 5f 51 55 4f 54 49 45 4e 54 0d 12 02 22 |DVD_QUOTIENT..."| 000039a0 20 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 20 | MOV | 000039b0 20 52 30 2c 56 5f 51 55 4f 54 49 45 4e 54 0d 12 | R0,V_QUOTIENT..| 000039c0 0c 26 20 20 20 20 20 20 20 20 20 20 20 4c 44 4d |.& LDM| 000039d0 46 44 20 52 31 33 21 2c 7b 52 31 2d 52 31 32 2c |FD R13!,{R1-R12,| 000039e0 52 31 34 7d 0d 12 16 1b 20 20 20 20 20 20 20 20 |R14}.... | 000039f0 20 20 20 4d 4f 56 20 20 20 50 43 2c 52 31 34 0d | MOV PC,R14.| 00003a00 12 20 19 2e 44 56 44 5f 51 55 4f 54 49 45 4e 54 |. ..DVD_QUOTIENT| 00003a10 20 20 45 51 55 44 20 30 0d 12 2a 19 2e 44 56 44 | EQUD 0..*..DVD| 00003a20 5f 52 45 4d 41 49 4e 44 45 52 20 45 51 55 44 20 |_REMAINDER EQUD | 00003a30 30 0d 12 34 0a 20 20 20 20 20 5d 0d 12 3e 05 f4 |0..4. ]..>..| 00003a40 0d 12 48 25 f4 20 50 52 4f 4a 45 43 54 49 4f 4e |..H%. PROJECTION| 00003a50 20 54 52 41 4e 53 46 4f 52 4d 53 20 46 4f 52 20 | TRANSFORMS FOR | 00003a60 21 57 48 41 54 0d 12 52 15 f4 20 41 25 20 3d 20 |!WHAT..R.. A% = | 00003a70 50 56 5f 58 20 20 20 20 52 30 0d 12 5c 15 f4 20 |PV_X R0..\.. | 00003a80 42 25 20 3d 20 50 56 5f 59 20 20 20 20 52 31 0d |B% = PV_Y R1.| 00003a90 12 66 15 f4 20 43 25 20 3d 20 50 56 5f 5a 20 20 |.f.. C% = PV_Z | 00003aa0 20 20 52 32 0d 12 70 15 f4 20 44 25 20 3d 20 50 | R2..p.. D% = P| 00003ab0 4d 41 58 42 20 20 20 52 33 0d 12 7a 15 f4 20 45 |MAXB R3..z.. E| 00003ac0 25 20 3d 20 50 4d 49 4e 42 20 20 20 52 34 0d 12 |% = PMINB R4..| 00003ad0 84 15 f4 20 46 25 20 3d 20 58 59 5a 5f 41 25 20 |... F% = XYZ_A% | 00003ae0 20 52 35 0d 12 8e 15 f4 20 47 25 20 3d 20 4d 41 | R5..... G% = MA| 00003af0 58 53 43 41 4e 20 52 36 0d 12 98 12 f4 20 43 41 |XSCAN R6..... CA| 00003b00 4c 4c 20 50 52 4f 4a 45 43 54 0d 12 a2 04 0d 12 |LL PROJECT......| 00003b10 ac 2a 20 20 20 20 20 50 5f 57 4b 31 20 20 20 20 |.* P_WK1 | 00003b20 3d 20 30 20 20 20 20 20 20 20 3a 50 5f 4e 55 4d |= 0 :P_NUM| 00003b30 42 45 52 20 20 3d 20 30 0d 12 b6 15 20 20 20 20 |BER = 0.... | 00003b40 20 50 5f 57 4b 32 20 20 20 20 3d 20 31 0d 12 c0 | P_WK2 = 1...| 00003b50 15 20 20 20 20 20 50 5f 57 4b 33 20 20 20 20 3d |. P_WK3 =| 00003b60 20 32 0d 12 ca 04 0d 12 d4 2a 20 20 20 20 20 50 | 2.......* P| 00003b70 5f 58 56 41 4c 20 20 20 3d 20 33 20 20 20 20 20 |_XVAL = 3 | 00003b80 20 20 3a 50 5f 50 4d 41 58 42 20 20 20 3d 20 33 | :P_PMAXB = 3| 00003b90 0d 12 de 2a 20 20 20 20 20 50 5f 59 56 41 4c 20 |...* P_YVAL | 00003ba0 20 20 3d 20 34 20 20 20 20 20 20 20 3a 50 5f 50 | = 4 :P_P| 00003bb0 4d 49 4e 42 20 20 20 3d 20 34 0d 12 e8 15 20 20 |MINB = 4.... | 00003bc0 20 20 20 50 5f 5a 56 41 4c 20 20 20 3d 20 35 0d | P_ZVAL = 5.| 00003bd0 12 f2 04 0d 12 fc 16 20 20 20 20 20 50 5f 44 49 |....... P_DI| 00003be0 56 49 53 4f 52 20 3d 20 36 0d 13 06 16 20 20 20 |VISOR = 6.... | 00003bf0 20 20 50 5f 50 56 58 20 20 20 20 3d 20 20 37 0d | P_PVX = 7.| 00003c00 13 10 16 20 20 20 20 20 50 5f 50 56 59 20 20 20 |... P_PVY | 00003c10 20 3d 20 20 38 0d 13 1a 2a 20 20 20 20 20 50 5f | = 8...* P_| 00003c20 50 41 52 4d 53 20 20 3d 20 20 39 20 20 20 20 20 |PARMS = 9 | 00003c30 20 3a 50 5f 42 56 41 4c 20 20 20 20 3d 20 39 0d | :P_BVAL = 9.| 00003c40 13 24 16 20 20 20 20 20 50 5f 4e 55 4d 20 20 20 |.$. P_NUM | 00003c50 20 3d 20 31 30 0d 13 2e 16 20 20 20 20 20 50 5f | = 10.... P_| 00003c60 52 4f 57 20 20 20 20 3d 20 31 31 0d 13 38 16 20 |ROW = 11..8. | 00003c70 20 20 20 20 50 5f 50 56 5a 20 20 20 20 3d 20 31 | P_PVZ = 1| 00003c80 32 0d 13 42 04 0d 13 4c 0f 20 5b 20 4f 50 54 20 |2..B...L. [ OPT | 00003c90 50 41 53 53 0d 13 56 0c 2e 50 52 4f 4a 45 43 54 |PASS..V..PROJECT| 00003ca0 0d 13 60 26 20 20 20 20 20 20 20 20 20 20 20 53 |..`& S| 00003cb0 54 4d 46 44 20 52 31 33 21 2c 7b 52 30 2d 52 31 |TMFD R13!,{R0-R1| 00003cc0 32 2c 52 31 34 7d 0d 13 6a 04 0d 13 74 1b 20 20 |2,R14}..j...t. | 00003cd0 20 20 20 20 20 20 20 20 20 4d 4f 56 20 50 5f 50 | MOV P_P| 00003ce0 56 58 2c 52 30 0d 13 7e 1f 20 20 20 20 20 20 20 |VX,R0..~. | 00003cf0 20 20 20 20 53 54 52 20 52 33 2c 53 56 45 5f 50 | STR R3,SVE_P| 00003d00 4d 41 58 42 0d 13 88 1f 20 20 20 20 20 20 20 20 |MAXB.... | 00003d10 20 20 20 53 54 52 20 52 34 2c 53 56 45 5f 50 4d | STR R4,SVE_PM| 00003d20 49 4e 42 0d 13 92 1b 20 20 20 20 20 20 20 20 20 |INB.... | 00003d30 20 20 4d 4f 56 20 50 5f 52 4f 57 2c 52 35 0d 13 | MOV P_ROW,R5..| 00003d40 9c 1b 20 20 20 20 20 20 20 20 20 20 20 4d 4f 56 |.. MOV| 00003d50 20 50 5f 4e 55 4d 2c 52 36 0d 13 a6 1b 20 20 20 | P_NUM,R6.... | 00003d60 20 20 20 20 20 20 20 20 4d 4f 56 20 50 5f 50 56 | MOV P_PV| 00003d70 59 2c 52 31 0d 13 b0 1b 20 20 20 20 20 20 20 20 |Y,R1.... | 00003d80 20 20 20 4d 4f 56 20 50 5f 50 56 5a 2c 52 32 0d | MOV P_PVZ,R2.| 00003d90 13 ba 04 0d 13 c4 1c 3b 20 e3 20 50 5f 52 4f 57 |.......; . P_ROW| 00003da0 20 3d 20 46 49 52 53 54 20 b8 20 4c 41 53 54 0d | = FIRST . LAST.| 00003db0 13 ce 07 2e 46 31 0d 13 d8 29 20 20 20 20 20 20 |....F1...) | 00003dc0 20 20 20 20 4c 44 52 20 50 5f 57 4b 31 2c 5b 50 | LDR P_WK1,[P| 00003dd0 5f 52 4f 57 2c 23 52 4f 57 5f 53 49 5a 45 5d 0d |_ROW,#ROW_SIZE].| 00003de0 13 e2 1a 20 20 20 20 20 20 20 20 20 20 43 4d 50 |... CMP| 00003df0 20 50 5f 57 4b 31 2c 23 30 0d 13 ec 1a 20 20 20 | P_WK1,#0.... | 00003e00 20 20 20 20 20 20 20 42 4c 45 20 50 4e 58 54 5f | BLE PNXT_| 00003e10 52 4f 57 0d 13 f6 27 20 20 20 20 20 20 20 20 20 |ROW...' | 00003e20 20 4c 44 52 20 50 5f 58 56 41 4c 2c 5b 50 5f 52 | LDR P_XVAL,[P_R| 00003e30 4f 57 2c 23 52 4f 57 5f 58 5d 0d 14 00 27 20 20 |OW,#ROW_X]...' | 00003e40 20 20 20 20 20 20 20 20 4c 44 52 20 50 5f 59 56 | LDR P_YV| 00003e50 41 4c 2c 5b 50 5f 52 4f 57 2c 23 52 4f 57 5f 59 |AL,[P_ROW,#ROW_Y| 00003e60 5d 0d 14 0a 27 20 20 20 20 20 20 20 20 20 20 4c |]...' L| 00003e70 44 52 20 50 5f 5a 56 41 4c 2c 5b 50 5f 52 4f 57 |DR P_ZVAL,[P_ROW| 00003e80 2c 23 52 4f 57 5f 5a 5d 0d 14 14 04 0d 14 1e 4f |,#ROW_Z].......O| 00003e90 3b 20 41 52 52 41 59 28 52 4f 57 2c 58 29 20 3d |; ARRAY(ROW,X) =| 00003ea0 20 28 20 41 52 52 41 59 28 52 4f 57 2c 5a 29 2a | ( ARRAY(ROW,Z)*| 00003eb0 50 56 5f 58 2d 41 52 52 41 59 28 52 4f 57 2c 58 |PV_X-ARRAY(ROW,X| 00003ec0 29 2a 50 56 5f 5a 29 2f 28 41 52 52 41 59 28 52 |)*PV_Z)/(ARRAY(R| 00003ed0 4f 57 2c 5a 29 2d 50 56 5f 5a 29 0d 14 28 04 0d |OW,Z)-PV_Z)..(..| 00003ee0 14 32 04 0d 14 3c 24 20 20 20 20 20 20 20 20 20 |.2...<$ | 00003ef0 20 4d 55 4c 20 50 5f 57 4b 31 2c 50 5f 5a 56 41 | MUL P_WK1,P_ZVA| 00003f00 4c 2c 50 5f 50 56 58 0d 14 46 24 20 20 20 20 20 |L,P_PVX..F$ | 00003f10 20 20 20 20 20 4d 55 4c 20 50 5f 57 4b 32 2c 50 | MUL P_WK2,P| 00003f20 5f 58 56 41 4c 2c 50 5f 50 56 5a 0d 14 50 26 20 |_XVAL,P_PVZ..P& | 00003f30 20 20 20 20 20 20 20 20 20 53 55 42 20 50 5f 4e | SUB P_N| 00003f40 55 4d 42 45 52 2c 50 5f 57 4b 31 2c 50 5f 57 4b |UMBER,P_WK1,P_WK| 00003f50 32 0d 14 5a 28 20 20 20 20 20 20 20 20 20 20 53 |2..Z( S| 00003f60 55 42 20 50 5f 44 49 56 49 53 4f 52 2c 50 5f 5a |UB P_DIVISOR,P_Z| 00003f70 56 41 4c 2c 50 5f 50 56 5a 0d 14 64 1e 20 20 20 |VAL,P_PVZ..d. | 00003f80 20 20 20 20 20 20 20 4d 4f 56 20 52 31 2c 50 5f | MOV R1,P_| 00003f90 44 49 56 49 53 4f 52 0d 14 6e 15 20 20 20 20 20 |DIVISOR..n. | 00003fa0 20 20 20 20 20 42 4c 20 20 44 56 44 0d 14 78 1a | BL DVD..x.| 00003fb0 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 50 5f | MOV P_| 00003fc0 57 4b 31 2c 52 30 0d 14 82 26 20 20 20 20 20 20 |WK1,R0...& | 00003fd0 20 20 20 20 53 54 52 20 50 5f 57 4b 31 2c 5b 50 | STR P_WK1,[P| 00003fe0 5f 52 4f 57 2c 23 52 4f 57 5f 58 5d 0d 14 8c 04 |_ROW,#ROW_X]....| 00003ff0 0d 14 96 4e 3b 20 41 52 52 41 59 28 52 4f 57 2c |...N; ARRAY(ROW,| 00004000 59 29 20 3d 20 28 41 52 52 41 59 28 52 4f 57 2c |Y) = (ARRAY(ROW,| 00004010 5a 29 2a 50 56 5f 59 2d 41 52 52 41 59 28 52 4f |Z)*PV_Y-ARRAY(RO| 00004020 57 2c 59 29 2a 50 56 5f 5a 29 2f 28 41 52 52 41 |W,Y)*PV_Z)/(ARRA| 00004030 59 28 52 4f 57 2c 5a 29 2d 50 56 5f 5a 29 0d 14 |Y(ROW,Z)-PV_Z)..| 00004040 a0 04 0d 14 aa 24 20 20 20 20 20 20 20 20 20 20 |.....$ | 00004050 4d 55 4c 20 50 5f 57 4b 31 2c 50 5f 5a 56 41 4c |MUL P_WK1,P_ZVAL| 00004060 2c 50 5f 50 56 59 0d 14 b4 24 20 20 20 20 20 20 |,P_PVY...$ | 00004070 20 20 20 20 4d 55 4c 20 50 5f 57 4b 32 2c 50 5f | MUL P_WK2,P_| 00004080 59 56 41 4c 2c 50 5f 50 56 5a 0d 14 be 26 20 20 |YVAL,P_PVZ...& | 00004090 20 20 20 20 20 20 20 20 53 55 42 20 50 5f 4e 55 | SUB P_NU| 000040a0 4d 42 45 52 2c 50 5f 57 4b 31 2c 50 5f 57 4b 32 |MBER,P_WK1,P_WK2| 000040b0 0d 14 c8 1e 20 20 20 20 20 20 20 20 20 20 4d 4f |.... MO| 000040c0 56 20 52 31 2c 50 5f 44 49 56 49 53 4f 52 0d 14 |V R1,P_DIVISOR..| 000040d0 d2 15 20 20 20 20 20 20 20 20 20 20 42 4c 20 20 |.. BL | 000040e0 44 56 44 0d 14 dc 1a 20 20 20 20 20 20 20 20 20 |DVD.... | 000040f0 20 4d 4f 56 20 50 5f 57 4b 31 2c 52 30 0d 14 e6 | MOV P_WK1,R0...| 00004100 26 20 20 20 20 20 20 20 20 20 20 53 54 52 20 50 |& STR P| 00004110 5f 57 4b 31 2c 5b 50 5f 52 4f 57 2c 23 52 4f 57 |_WK1,[P_ROW,#ROW| 00004120 5f 59 5d 0d 14 f0 04 0d 14 fa 42 3b 20 41 52 52 |_Y].......B; ARR| 00004130 41 59 28 52 4f 57 2c 53 49 5a 45 29 20 3d 20 28 |AY(ROW,SIZE) = (| 00004140 41 52 52 41 59 28 52 4f 57 2c 53 49 5a 45 29 2a |ARRAY(ROW,SIZE)*| 00004150 50 56 5f 5a 29 2f 28 41 52 52 41 59 28 52 4f 57 |PV_Z)/(ARRAY(ROW| 00004160 2c 5a 29 2d 50 56 5f 5a 29 0d 15 04 04 0d 15 0e |,Z)-PV_Z).......| 00004170 2a 20 20 20 20 20 20 20 20 20 20 4c 44 52 20 50 |* LDR P| 00004180 5f 42 56 41 4c 2c 5b 50 5f 52 4f 57 2c 23 52 4f |_BVAL,[P_ROW,#RO| 00004190 57 5f 53 49 5a 45 5d 0d 15 18 27 20 20 20 20 20 |W_SIZE]...' | 000041a0 20 20 20 20 20 4d 55 4c 20 50 5f 4e 55 4d 42 45 | MUL P_NUMBE| 000041b0 52 2c 50 5f 42 56 41 4c 2c 50 5f 50 56 5a 0d 15 |R,P_BVAL,P_PVZ..| 000041c0 22 28 20 20 20 20 20 20 20 20 20 20 53 55 42 20 |"( SUB | 000041d0 50 5f 44 49 56 49 53 4f 52 2c 50 5f 5a 56 41 4c |P_DIVISOR,P_ZVAL| 000041e0 2c 50 5f 50 56 5a 0d 15 2c 1e 20 20 20 20 20 20 |,P_PVZ..,. | 000041f0 20 20 20 20 4d 4f 56 20 52 31 2c 50 5f 44 49 56 | MOV R1,P_DIV| 00004200 49 53 4f 52 0d 15 36 37 20 20 20 20 20 20 20 20 |ISOR..67 | 00004210 20 20 42 4c 20 20 44 56 44 20 20 20 20 20 20 20 | BL DVD | 00004220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b | ;| 00004230 45 58 54 45 4e 41 4c 20 52 45 46 0d 15 40 1a 20 |EXTENAL REF..@. | 00004240 20 20 20 20 20 20 20 20 20 4d 4f 56 20 50 5f 57 | MOV P_W| 00004250 4b 31 2c 52 30 0d 15 4a 20 20 20 20 20 20 20 20 |K1,R0..J | 00004260 20 20 20 52 53 42 20 50 5f 57 4b 31 2c 50 5f 57 | RSB P_WK1,P_W| 00004270 4b 31 2c 23 30 0d 15 54 29 20 20 20 20 20 20 20 |K1,#0..T) | 00004280 20 20 20 53 54 52 20 50 5f 57 4b 31 2c 5b 50 5f | STR P_WK1,[P_| 00004290 52 4f 57 2c 23 52 4f 57 5f 53 49 5a 45 5d 0d 15 |ROW,#ROW_SIZE]..| 000042a0 5e 04 0d 15 68 41 3b 20 41 52 52 41 59 28 52 4f |^...hA; ARRAY(RO| 000042b0 57 2c 52 47 42 29 20 3d 20 28 41 52 52 41 59 28 |W,RGB) = (ARRAY(| 000042c0 52 4f 57 2c 5a 29 20 2d 20 50 4d 41 58 42 29 2a |ROW,Z) - PMAXB)*| 000042d0 32 35 36 2f 28 50 4d 41 58 42 20 2d 20 50 4d 49 |256/(PMAXB - PMI| 000042e0 4e 42 29 0d 15 72 04 0d 15 7c 04 0d 15 86 23 20 |NB)..r...|....# | 000042f0 20 20 20 20 20 20 20 20 20 4c 44 52 20 50 5f 50 | LDR P_P| 00004300 4d 41 58 42 2c 53 56 45 5f 50 4d 41 58 42 0d 15 |MAXB,SVE_PMAXB..| 00004310 90 23 20 20 20 20 20 20 20 20 20 20 4c 44 52 20 |.# LDR | 00004320 50 5f 50 4d 49 4e 42 2c 53 56 45 5f 50 4d 49 4e |P_PMINB,SVE_PMIN| 00004330 42 0d 15 9a 2b 20 20 20 20 20 20 20 20 20 20 53 |B...+ S| 00004340 55 42 20 50 5f 44 49 56 49 53 4f 52 2c 50 5f 50 |UB P_DIVISOR,P_P| 00004350 4d 41 58 42 2c 50 5f 50 4d 49 4e 42 0d 15 a4 04 |MAXB,P_PMINB....| 00004360 0d 15 ae 26 20 20 20 20 20 20 20 20 20 20 53 55 |...& SU| 00004370 42 20 50 5f 57 4b 32 2c 50 5f 5a 56 41 4c 2c 50 |B P_WK2,P_ZVAL,P| 00004380 5f 50 4d 41 58 42 0d 15 b8 27 20 20 20 20 20 20 |_PMAXB...' | 00004390 20 20 20 20 4d 4f 56 20 50 5f 4e 55 4d 42 45 52 | MOV P_NUMBER| 000043a0 2c 50 5f 57 4b 32 2c 4c 53 4c 20 23 38 0d 15 c2 |,P_WK2,LSL #8...| 000043b0 1e 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 52 |. MOV R| 000043c0 31 2c 50 5f 44 49 56 49 53 4f 52 0d 15 cc 38 20 |1,P_DIVISOR...8 | 000043d0 20 20 20 20 20 20 20 20 20 42 4c 20 20 44 56 44 | BL DVD| 000043e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000043f0 20 20 20 20 20 20 3b 45 58 54 45 52 4e 41 4c 20 | ;EXTERNAL | 00004400 52 45 46 0d 15 d6 04 0d 15 e0 1a 20 20 20 20 20 |REF........ | 00004410 20 20 20 20 20 4d 4f 56 20 50 5f 57 4b 31 2c 52 | MOV P_WK1,R| 00004420 30 0d 15 ea 20 20 20 20 20 20 20 20 20 20 20 52 |0... R| 00004430 53 42 20 50 5f 57 4b 31 2c 50 5f 57 4b 31 2c 23 |SB P_WK1,P_WK1,#| 00004440 30 0d 15 f4 1c 20 20 20 20 20 20 20 20 20 20 43 |0.... C| 00004450 4d 50 20 50 5f 57 4b 31 2c 23 32 35 35 0d 15 fe |MP P_WK1,#255...| 00004460 1e 20 20 20 20 20 20 20 20 20 20 4d 4f 56 47 54 |. MOVGT| 00004470 20 50 5f 57 4b 31 2c 23 32 35 35 0d 16 08 1a 20 | P_WK1,#255.... | 00004480 20 20 20 20 20 20 20 20 20 43 4d 50 20 50 5f 57 | CMP P_W| 00004490 4b 31 2c 23 30 0d 16 12 1c 20 20 20 20 20 20 20 |K1,#0.... | 000044a0 20 20 20 4d 4f 56 4c 54 20 50 5f 57 4b 31 2c 23 | MOVLT P_WK1,#| 000044b0 30 0d 16 1c 2b 20 20 20 20 20 20 20 20 20 20 53 |0...+ S| 000044c0 54 52 20 50 5f 57 4b 31 2c 5b 50 5f 52 4f 57 2c |TR P_WK1,[P_ROW,| 000044d0 23 52 4f 57 5f 52 47 42 4e 55 4d 5d 0d 16 26 23 |#ROW_RGBNUM]..&#| 000044e0 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 50 5f | MOV P_| 000044f0 57 4b 31 2c 50 5f 57 4b 31 2c 4c 53 4c 23 32 0d |WK1,P_WK1,LSL#2.| 00004500 16 30 2b 20 20 20 20 20 20 20 20 20 20 4c 44 52 |.0+ LDR| 00004510 20 50 5f 57 4b 32 2c 5b 50 5f 52 4f 57 2c 23 52 | P_WK2,[P_ROW,#R| 00004520 4f 57 5f 52 47 42 54 41 42 5d 0d 16 3a 25 20 20 |OW_RGBTAB]..:% | 00004530 20 20 20 20 20 20 20 20 4c 44 52 20 50 5f 57 4b | LDR P_WK| 00004540 31 2c 5b 50 5f 57 4b 32 2c 50 5f 57 4b 31 5d 0d |1,[P_WK2,P_WK1].| 00004550 16 44 28 20 20 20 20 20 20 20 20 20 20 53 54 52 |.D( STR| 00004560 20 50 5f 57 4b 31 2c 5b 50 5f 52 4f 57 2c 23 52 | P_WK1,[P_ROW,#R| 00004570 4f 57 5f 52 47 42 5d 0d 16 4e 04 0d 16 58 0d 2e |OW_RGB]..N...X..| 00004580 50 4e 58 54 5f 52 4f 57 0d 16 62 32 20 20 20 20 |PNXT_ROW..b2 | 00004590 20 20 20 20 20 20 41 44 44 20 20 50 5f 52 4f 57 | ADD P_ROW| 000045a0 2c 50 5f 52 4f 57 2c 23 52 4f 57 5f 4c 45 4e 20 |,P_ROW,#ROW_LEN | 000045b0 20 20 20 20 20 20 3b 88 20 31 0d 16 6c 21 20 20 | ;. 1..l! | 000045c0 20 20 20 20 20 20 20 20 53 55 42 53 20 50 5f 4e | SUBS P_N| 000045d0 55 4d 2c 50 5f 4e 55 4d 2c 23 31 0d 16 76 34 20 |UM,P_NUM,#1..v4 | 000045e0 20 20 20 20 20 20 20 20 20 42 47 54 20 20 46 31 | BGT F1| 000045f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00004600 20 20 20 20 20 20 20 20 20 3b b8 20 4d 41 58 0d | ;. MAX.| 00004610 16 80 24 20 20 20 20 20 20 20 20 20 20 4c 44 4d |..$ LDM| 00004620 46 44 20 52 31 33 21 2c 7b 52 30 2d 52 31 32 2c |FD R13!,{R0-R12,| 00004630 50 43 7d 0d 16 8a 16 2e 53 56 45 5f 50 4d 41 58 |PC}.....SVE_PMAX| 00004640 42 20 20 45 51 55 44 20 30 0d 16 94 16 2e 53 56 |B EQUD 0.....SV| 00004650 45 5f 50 4d 49 4e 42 20 20 45 51 55 44 20 30 0d |E_PMINB EQUD 0.| 00004660 16 9e 0a 20 20 20 20 20 5d 0d 16 a8 05 f4 0d 16 |... ].......| 00004670 b2 17 f4 20 44 49 53 50 4c 41 59 20 46 4f 52 20 |... DISPLAY FOR | 00004680 21 57 48 41 54 0d 16 bc 3c f4 20 52 30 2e 2e 2e |!WHAT...<. R0...| 00004690 41 25 3d 58 59 5a 5f 57 3a 52 31 2e 2e 2e 42 25 |A%=XYZ_W:R1...B%| 000046a0 3d 43 4f 4e 54 3a 52 32 2e 2e 2e 43 25 3d 53 50 |=CONT:R2...C%=SP| 000046b0 52 49 54 45 20 41 52 45 41 20 41 44 44 52 45 53 |RITE AREA ADDRES| 000046c0 53 0d 16 c6 12 f4 20 43 41 4c 4c 20 44 49 53 50 |S..... CALL DISP| 000046d0 4c 41 59 0d 16 d0 04 0d 16 da 1a 20 20 20 20 20 |LAY........ | 000046e0 76 64 75 20 20 20 20 20 20 20 20 20 3d 20 32 35 |vdu = 25| 000046f0 36 0d 16 e4 1f 20 20 20 20 20 50 6c 6f 74 4d 6f |6.... PlotMo| 00004700 76 65 20 20 20 20 20 20 20 20 20 20 20 3d 20 34 |ve = 4| 00004710 0d 16 ee 21 20 20 20 20 20 50 6c 6f 74 46 69 6c |...! PlotFil| 00004720 6c 65 64 43 69 72 63 6c 65 20 20 20 3d 20 31 35 |ledCircle = 15| 00004730 33 0d 16 f8 21 20 20 20 20 20 50 6c 6f 74 43 69 |3...! PlotCi| 00004740 72 63 6c 65 20 20 20 20 20 20 20 20 20 3d 20 31 |rcle = 1| 00004750 34 35 0d 17 02 04 0d 17 0c 15 20 20 20 20 20 44 |45........ D| 00004760 5f 57 31 20 20 20 20 20 3d 20 30 0d 17 16 15 20 |_W1 = 0.... | 00004770 20 20 20 20 44 5f 44 57 31 20 20 20 20 3d 20 37 | D_DW1 = 7| 00004780 0d 17 20 15 20 20 20 20 20 44 5f 53 49 5a 45 20 |.. . D_SIZE | 00004790 20 20 3d 20 38 0d 17 2a 15 20 20 20 20 20 44 5f | = 8..*. D_| 000047a0 53 41 52 45 41 20 20 3d 20 39 0d 17 34 16 20 20 |SAREA = 9..4. | 000047b0 20 20 20 44 5f 57 49 4e 44 45 58 20 3d 20 31 30 | D_WINDEX = 10| 000047c0 0d 17 3e 16 20 20 20 20 20 44 5f 4e 55 4d 20 20 |..>. D_NUM | 000047d0 20 20 3d 20 31 31 0d 17 48 16 20 20 20 20 20 44 | = 11..H. D| 000047e0 5f 52 4f 57 20 20 20 20 3d 20 31 32 0d 17 52 04 |_ROW = 12..R.| 000047f0 0d 17 5c 16 20 20 20 20 20 44 5f 54 41 49 4c 58 |..\. D_TAILX| 00004800 20 20 20 3d 20 31 0d 17 66 16 20 20 20 20 20 44 | = 1..f. D| 00004810 5f 54 41 49 4c 59 20 20 20 3d 20 32 0d 17 70 16 |_TAILY = 2..p.| 00004820 20 20 20 20 20 44 5f 52 47 42 20 20 20 20 20 3d | D_RGB =| 00004830 20 33 0d 17 7a 16 20 20 20 20 20 44 5f 54 53 49 | 3..z. D_TSI| 00004840 5a 45 20 20 20 3d 20 34 0d 17 84 16 20 20 20 20 |ZE = 4.... | 00004850 20 44 5f 54 41 49 4c 43 4e 54 20 3d 20 35 0d 17 | D_TAILCNT = 5..| 00004860 8e 16 20 20 20 20 20 44 5f 54 41 49 4c 20 20 20 |.. D_TAIL | 00004870 20 3d 20 36 0d 17 98 16 20 20 20 20 20 44 5f 54 | = 6.... D_T| 00004880 41 49 4c 4f 58 20 20 3d 20 37 0d 17 a2 16 20 20 |AILOX = 7.... | 00004890 20 20 20 44 5f 54 41 49 4c 4f 59 20 20 3d 20 38 | D_TAILOY = 8| 000048a0 0d 17 ac 16 20 20 20 20 20 44 5f 54 57 31 20 20 |.... D_TW1 | 000048b0 20 20 20 3d 20 39 0d 17 b6 17 20 20 20 20 20 44 | = 9.... D| 000048c0 5f 53 49 4e 43 20 20 20 20 3d 20 31 30 0d 17 c0 |_SINC = 10...| 000048d0 04 0d 17 ca 0f 20 5b 20 4f 50 54 20 50 41 53 53 |..... [ OPT PASS| 000048e0 0d 17 d4 11 20 20 20 20 20 2e 44 49 53 50 4c 41 |.... .DISPLA| 000048f0 59 0d 17 de 1a 20 20 20 20 20 20 20 20 20 20 4d |Y.... M| 00004900 4f 56 20 44 5f 4e 55 4d 2c 52 31 0d 17 e8 1d 20 |OV D_NUM,R1.... | 00004910 20 20 20 20 20 20 20 20 20 4d 4f 56 20 44 5f 57 | MOV D_W| 00004920 49 4e 44 45 58 2c 52 30 0d 17 f2 1c 20 20 20 20 |INDEX,R0.... | 00004930 20 20 20 20 20 20 4d 4f 56 20 44 5f 53 41 52 45 | MOV D_SARE| 00004940 41 2c 52 32 0d 17 fc 37 20 20 20 20 20 20 20 20 |A,R2...7 | 00004950 20 20 4d 4f 56 20 52 30 2c 23 31 39 20 20 20 20 | MOV R0,#19 | 00004960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00004970 20 20 3b c8 96 20 56 53 59 4e 43 0d 18 06 1b 20 | ;.. VSYNC.... | 00004980 20 20 20 20 20 20 20 20 20 53 57 49 20 22 4f 53 | SWI "OS| 00004990 5f 42 79 74 65 22 0d 18 10 05 3b 0d 18 1a 1c 3b |_Byte"....;....;| 000049a0 20 e3 20 44 5f 52 4f 57 20 3d 20 46 49 52 53 54 | . D_ROW = FIRST| 000049b0 20 b8 20 4c 41 53 54 0d 18 24 07 2e 46 31 0d 18 | . LAST..$..F1..| 000049c0 2e 22 20 20 20 20 20 20 20 20 20 20 4c 44 52 20 |." LDR | 000049d0 44 5f 52 4f 57 2c 5b 44 5f 57 49 4e 44 45 58 5d |D_ROW,[D_WINDEX]| 000049e0 0d 18 38 3b 20 20 20 20 20 20 20 20 20 20 4c 44 |..8; LD| 000049f0 52 20 52 30 2c 5b 44 5f 52 4f 57 2c 23 52 4f 57 |R R0,[D_ROW,#ROW| 00004a00 5f 52 47 42 5d 20 20 20 20 20 20 20 20 20 20 3b |_RGB] ;| 00004a10 52 47 42 20 fb 20 45 4e 54 52 59 0d 18 42 35 20 |RGB . ENTRY..B5 | 00004a20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 52 33 2c | MOV R3,| 00004a30 23 25 31 30 30 30 30 30 30 30 30 20 20 20 20 20 |#%100000000 | 00004a40 20 20 20 20 20 20 20 20 20 20 3b 46 4c 41 47 53 | ;FLAGS| 00004a50 0d 18 4c 17 20 20 20 20 20 20 20 20 20 20 4d 4f |..L. MO| 00004a60 56 20 52 34 2c 23 38 0d 18 56 3d 20 20 20 20 20 |V R4,#8..V= | 00004a70 20 20 20 20 20 53 57 49 20 26 34 30 37 34 33 20 | SWI &40743 | 00004a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00004a90 20 20 20 20 20 20 3b fb 20 54 52 41 4e 53 20 53 | ;. TRANS S| 00004aa0 45 54 20 e6 0d 18 60 2a 20 20 20 20 20 20 20 20 |ET ...`* | 00004ab0 20 20 4c 44 52 20 44 5f 53 49 5a 45 2c 5b 44 5f | LDR D_SIZE,[D_| 00004ac0 52 4f 57 2c 23 52 4f 57 5f 53 49 5a 45 5d 0d 18 |ROW,#ROW_SIZE]..| 00004ad0 6a 29 20 20 20 20 20 20 20 20 20 20 4c 44 52 20 |j) LDR | 00004ae0 44 5f 44 57 31 2c 5b 44 5f 52 4f 57 2c 23 52 4f |D_DW1,[D_ROW,#RO| 00004af0 57 5f 54 59 50 45 5d 0d 18 74 1d 20 20 20 20 20 |W_TYPE]..t. | 00004b00 20 20 20 20 20 4c 44 52 20 52 30 2c 43 4f 4d 5f | LDR R0,COM_| 00004b10 53 48 4f 57 0d 18 7e 17 20 20 20 20 20 20 20 20 |SHOW..~. | 00004b20 20 20 43 4d 50 20 52 30 2c 23 30 0d 18 88 18 20 | CMP R0,#0.... | 00004b30 20 20 20 20 20 20 20 20 20 42 4e 45 20 44 5f 53 | BNE D_S| 00004b40 48 4f 57 0d 18 92 1c 20 20 20 20 20 20 20 20 20 |HOW.... | 00004b50 20 43 4d 50 20 44 5f 44 57 31 2c 23 31 32 37 0d | CMP D_DW1,#127.| 00004b60 18 9c 1a 20 20 20 20 20 20 20 20 20 20 42 47 54 |... BGT| 00004b70 20 44 4e 58 54 5f 52 4f 57 0d 18 a6 0b 2e 44 5f | DNXT_ROW.....D_| 00004b80 53 48 4f 57 0d 18 b0 23 20 20 20 20 20 20 20 20 |SHOW...# | 00004b90 20 20 4c 44 52 20 52 31 2c 5b 44 5f 52 4f 57 2c | LDR R1,[D_ROW,| 00004ba0 23 52 4f 57 5f 58 5d 0d 18 ba 23 20 20 20 20 20 |#ROW_X]...# | 00004bb0 20 20 20 20 20 4c 44 52 20 52 32 2c 5b 44 5f 52 | LDR R2,[D_R| 00004bc0 4f 57 2c 23 52 4f 57 5f 59 5d 0d 18 c4 32 20 20 |OW,#ROW_Y]...2 | 00004bd0 20 20 20 20 20 20 20 20 4d 4f 56 20 52 30 2c 23 | MOV R0,#| 00004be0 50 6c 6f 74 4d 6f 76 65 20 20 20 20 20 20 20 20 |PlotMove | 00004bf0 20 20 20 20 20 20 20 20 20 20 3b ec 0d 18 ce 1b | ;.....| 00004c00 20 20 20 20 20 20 20 20 20 20 53 57 49 20 22 4f | SWI "O| 00004c10 53 5f 50 6c 6f 74 22 0d 18 d8 04 0d 18 e2 26 20 |S_Plot".......& | 00004c20 20 20 20 20 20 20 20 20 20 4c 44 52 20 52 30 2c | LDR R0,| 00004c30 5b 44 5f 52 4f 57 2c 23 52 4f 57 5f 54 59 50 45 |[D_ROW,#ROW_TYPE| 00004c40 5d 0d 18 ec 1f 20 20 20 20 20 20 20 20 20 20 80 |].... .| 00004c50 20 52 30 2c 52 30 2c 23 25 31 31 31 31 31 31 31 | R0,R0,#%1111111| 00004c60 0d 18 f6 17 20 20 20 20 20 20 20 20 20 20 43 4d |.... CM| 00004c70 50 20 52 30 2c 23 30 0d 19 00 28 20 20 20 20 20 |P R0,#0...( | 00004c80 20 20 20 20 20 4d 4f 56 4e 45 20 52 30 2c 23 50 | MOVNE R0,#P| 00004c90 6c 6f 74 46 69 6c 6c 65 64 43 69 72 63 6c 65 0d |lotFilledCircle.| 00004ca0 19 0a 38 20 20 20 20 20 20 20 20 20 20 ec 51 20 |..8 .Q | 00004cb0 52 30 2c 23 50 6c 6f 74 43 69 72 63 6c 65 20 20 |R0,#PlotCircle | 00004cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 3b c8 90 | ;..| 00004cd0 45 44 20 c8 8f 20 f0 0d 19 14 26 20 20 20 20 20 |ED .. ....& | 00004ce0 20 20 20 20 20 4c 44 52 20 52 31 2c 5b 44 5f 52 | LDR R1,[D_R| 00004cf0 4f 57 2c 23 52 4f 57 5f 53 49 5a 45 5d 0d 19 1e |OW,#ROW_SIZE]...| 00004d00 1f 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 52 |. MOV R| 00004d10 31 2c 52 31 2c 4c 53 52 20 23 31 30 0d 19 28 17 |1,R1,LSR #10..(.| 00004d20 20 20 20 20 20 20 20 20 20 20 4d 4f 56 20 52 32 | MOV R2| 00004d30 2c 23 30 0d 19 32 1b 20 20 20 20 20 20 20 20 20 |,#0..2. | 00004d40 20 53 57 49 20 22 4f 53 5f 50 6c 6f 74 22 0d 19 | SWI "OS_Plot"..| 00004d50 3c 04 0d 19 46 0d 2e 44 4e 58 54 5f 52 4f 57 0d |<...F..DNXT_ROW.| 00004d60 19 50 32 20 20 20 20 20 20 20 20 20 20 41 44 44 |.P2 ADD| 00004d70 20 20 44 5f 57 49 4e 44 45 58 2c 44 5f 57 49 4e | D_WINDEX,D_WIN| 00004d80 44 45 58 2c 23 34 20 20 20 20 20 20 20 3b 88 20 |DEX,#4 ;. | 00004d90 31 0d 19 5a 2f 20 20 20 20 20 20 20 20 20 20 53 |1..Z/ S| 00004da0 55 42 53 20 44 5f 4e 55 4d 2c 44 5f 4e 55 4d 2c |UBS D_NUM,D_NUM,| 00004db0 23 31 20 20 20 20 20 20 20 20 20 20 20 20 20 3b |#1 ;| 00004dc0 0d 19 64 34 20 20 20 20 20 20 20 20 20 20 42 47 |..d4 BG| 00004dd0 54 20 20 46 31 20 20 20 20 20 20 20 20 20 20 20 |T F1 | 00004de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b b8 | ;.| 00004df0 20 4d 41 58 0d 19 6e 18 20 20 20 20 20 20 20 20 | MAX..n. | 00004e00 20 20 4d 4f 56 20 50 43 2c 52 31 34 0d 19 78 04 | MOV PC,R14..x.| 00004e10 0d 19 82 0a 20 20 20 20 20 5d 0d 19 8c 4a f4 2d |.... ]...J.-| 00004e20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00004e60 2d 2d 2d 2d 0d 19 96 1d f4 20 20 46 41 53 54 20 |----..... FAST | 00004e70 44 41 54 41 20 4d 4f 56 45 20 52 4f 55 54 49 4e |DATA MOVE ROUTIN| 00004e80 45 0d 19 a0 04 0d 19 aa 04 0d 19 b4 04 0d 19 be |E...............| 00004e90 22 f4 20 4f 4e 20 45 4e 54 52 59 20 3a 20 52 30 |". ON ENTRY : R0| 00004ea0 20 3d 20 46 52 4f 4d 20 41 44 44 52 45 53 53 0d | = FROM ADDRESS.| 00004eb0 19 c8 20 f4 20 20 20 20 20 20 20 20 20 20 20 20 |.. . | 00004ec0 52 31 20 3d 20 54 4f 20 41 44 44 52 45 53 53 0d |R1 = TO ADDRESS.| 00004ed0 19 d2 21 f4 20 20 20 20 20 20 20 20 20 20 20 20 |..!. | 00004ee0 52 32 20 3d 20 42 59 54 45 20 4c 45 4e 47 54 48 |R2 = BYTE LENGTH| 00004ef0 0d 19 dc 04 0d 19 e6 17 20 20 20 20 52 5f 46 52 |........ R_FR| 00004f00 4f 4d 20 3d 20 30 3a 52 46 3d 30 0d 19 f0 17 20 |OM = 0:RF=0.... | 00004f10 20 20 20 52 5f 54 4f 20 20 20 3d 20 31 3a 52 54 | R_TO = 1:RT| 00004f20 3d 31 0d 19 fa 12 20 20 20 20 52 4c 20 20 20 20 |=1.... RL | 00004f30 20 3d 20 32 0d 1a 04 12 20 20 20 20 52 53 52 20 | = 2.... RSR | 00004f40 20 20 20 3d 20 33 0d 1a 0e 13 20 20 20 20 52 53 | = 3.... RS| 00004f50 4c 20 20 20 20 3d 20 31 34 0d 1a 18 04 0d 1a 22 |L = 14......"| 00004f60 04 0d 1a 2c 1c f4 20 4f 4e 4c 59 20 55 53 45 44 |...,.. ONLY USED| 00004f70 20 49 4e 20 46 41 53 54 20 4d 4f 56 45 0d 1a 36 | IN FAST MOVE..6| 00004f80 04 0d 1a 40 11 20 20 20 20 52 43 38 20 20 20 3d |...@. RC8 =| 00004f90 20 33 0d 1a 4a 11 20 20 20 20 52 4d 42 20 20 20 | 3..J. RMB | 00004fa0 3d 20 34 0d 1a 54 12 20 20 20 20 52 57 20 20 20 |= 4..T. RW | 00004fb0 20 3d 20 31 32 0d 1a 5e 12 20 20 20 20 52 57 31 | = 12..^. RW1| 00004fc0 20 20 20 3d 20 31 31 0d 1a 68 04 0d 1a 72 0d 5b | = 11..h...r.[| 00004fd0 4f 50 54 20 50 41 53 53 0d 1a 7c 0c 2e 4d 56 5f |OPT PASS..|..MV_| 00004fe0 44 41 54 41 0d 1a 86 04 0d 1a 90 14 20 20 20 20 |DATA........ | 00004ff0 20 43 4d 50 20 20 20 52 4c 2c 23 30 0d 1a 9a 15 | CMP RL,#0....| 00005000 20 20 20 20 20 4d 4f 56 4c 45 20 50 43 2c 52 31 | MOVLE PC,R1| 00005010 34 0d 1a a4 1e 20 20 20 20 20 53 54 4d 46 44 20 |4.... STMFD | 00005020 52 31 33 21 2c 7b 30 2d 31 32 2c 52 31 34 7d 0d |R13!,{0-12,R14}.| 00005030 1a ae 04 0d 1a b8 54 3b e7 20 46 52 4f 4d 20 80 |......T;. FROM .| 00005040 20 b8 20 41 44 44 52 45 53 53 20 ee 20 53 41 4d | . ADDRESS . SAM| 00005050 45 20 42 4f 55 4e 44 41 52 59 20 41 4c 49 47 4e |E BOUNDARY ALIGN| 00005060 20 8c 20 55 53 45 20 46 41 53 54 20 8b 20 55 53 | . USE FAST . US| 00005070 45 20 42 59 54 45 20 42 59 20 42 59 54 45 20 53 |E BYTE BY BYTE S| 00005080 48 49 46 54 49 4e 47 0d 1a c2 04 0d 1a cc 13 20 |HIFTING........ | 00005090 20 20 20 20 43 4d 50 20 20 52 4c 2c 23 34 0d 1a | CMP RL,#4..| 000050a0 d6 13 20 20 20 20 20 42 4c 45 20 20 4d 42 32 38 |.. BLE MB28| 000050b0 30 0d 1a e0 43 20 20 20 20 20 54 53 54 20 20 52 |0...C TST R| 000050c0 5f 54 4f 2c 23 25 31 31 20 20 20 20 20 20 20 20 |_TO,#%11 | 000050d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000050e0 20 3b 49 53 20 54 41 52 47 45 54 20 41 4c 49 47 | ;IS TARGET ALIG| 000050f0 4e 45 44 3f 0d 1a ea 3d 20 20 20 20 20 42 45 51 |NED?...= BEQ| 00005100 20 20 4d 42 4c 4f 4f 50 32 30 20 20 20 20 20 20 | MBLOOP20 | 00005110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00005120 20 20 20 20 3b 42 52 41 4e 43 48 20 e7 20 59 45 | ;BRANCH . YE| 00005130 53 0d 1a f4 0d 2e 4d 42 4c 4f 4f 50 31 30 0d 1a |S.....MBLOOP10..| 00005140 fe 1c 20 20 20 20 20 4c 44 52 42 20 52 34 2c 5b |.. LDRB R4,[| 00005150 52 5f 46 52 4f 4d 5d 2c 23 31 0d 1b 08 1a 20 20 |R_FROM],#1.... | 00005160 20 20 20 53 54 52 42 20 52 34 2c 5b 52 5f 54 4f | STRB R4,[R_TO| 00005170 5d 2c 23 31 0d 1b 12 16 20 20 20 20 20 53 55 42 |],#1.... SUB| 00005180 53 20 52 4c 2c 52 4c 2c 23 31 0d 1b 1c 39 20 20 |S RL,RL,#1...9 | 00005190 20 20 20 42 45 51 20 20 4d 56 45 58 49 54 20 20 | BEQ MVEXIT | 000051a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000051b0 20 20 20 20 20 20 20 20 20 20 3b 46 49 4e 49 53 | ;FINIS| 000051c0 48 45 44 0d 1b 26 17 20 20 20 20 20 54 53 54 20 |HED..&. TST | 000051d0 20 52 5f 54 4f 2c 23 25 31 31 0d 1b 30 16 20 20 | R_TO,#%11..0. | 000051e0 20 20 20 42 4e 45 20 20 4d 42 4c 4f 4f 50 31 30 | BNE MBLOOP10| 000051f0 0d 1b 3a 47 2e 4d 42 4c 4f 4f 50 32 30 20 20 20 |..:G.MBLOOP20 | 00005200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | * 00005220 3b 54 41 52 47 45 54 20 49 53 20 57 4f 52 44 20 |;TARGET IS WORD | 00005230 41 4c 49 47 4e 45 44 0d 1b 44 19 20 20 20 20 20 |ALIGNED..D. | 00005240 54 53 54 20 20 52 5f 46 52 4f 4d 2c 23 25 31 31 |TST R_FROM,#%11| 00005250 0d 1b 4e 4a 20 20 20 20 20 42 4e 45 20 20 4d 42 |..NJ BNE MB| 00005260 32 30 30 20 20 20 20 20 20 20 20 20 20 20 20 20 |200 | 00005270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00005280 3b 42 52 41 4e 43 48 20 e7 20 53 4f 55 52 43 45 |;BRANCH . SOURCE| 00005290 20 ac 20 41 4c 49 47 4e 45 44 0d 1b 58 37 3b 54 | . ALIGNED..X7;T| 000052a0 41 52 47 45 54 20 80 20 53 4f 55 52 43 45 20 41 |ARGET . SOURCE A| 000052b0 52 45 20 49 4e 20 53 41 4d 45 20 41 4c 49 47 4e |RE IN SAME ALIGN| 000052c0 4d 45 4e 54 20 2d 20 55 53 45 20 46 41 53 54 20 |MENT - USE FAST | 000052d0 ec 0d 1b 62 47 2e 4d 42 4c 4f 4f 50 31 30 30 20 |...bG.MBLOOP100 | 000052e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | * 00005300 20 3b 20 ec 20 4f 44 44 20 28 20 30 20 b8 20 37 | ; . ODD ( 0 . 7| 00005310 20 29 20 57 4f 52 44 53 0d 1b 6c 04 0d 1b 76 19 | ) WORDS..l...v.| 00005320 20 20 20 20 20 80 20 20 52 57 2c 52 4c 2c 23 25 | . RW,RL,#%| 00005330 31 31 31 30 30 0d 1b 80 19 20 20 20 20 20 4d 4f |11100.... MO| 00005340 56 20 20 52 57 2c 52 57 2c 4c 53 4c 23 31 0d 1b |V RW,RW,LSL#1..| 00005350 8a 18 20 20 20 20 20 41 44 52 20 20 52 4d 42 2c |.. ADR RMB,| 00005360 4d 54 41 42 31 45 0d 1b 94 18 20 20 20 20 20 53 |MTAB1E.... S| 00005370 55 42 20 20 52 4d 42 2c 52 4d 42 2c 52 57 0d 1b |UB RMB,RMB,RW..| 00005380 9e 14 20 20 20 20 20 4d 4f 56 20 20 50 43 2c 52 |.. MOV PC,R| 00005390 4d 42 0d 1b a8 04 0d 1b b2 1c 20 20 20 20 20 4c |MB........ L| 000053a0 44 52 20 20 52 34 2c 5b 52 5f 46 52 4f 4d 5d 2c |DR R4,[R_FROM],| 000053b0 23 34 0d 1b bc 31 20 20 20 20 20 53 54 52 20 20 |#4...1 STR | 000053c0 52 34 2c 5b 52 5f 54 4f 5d 2c 23 34 20 20 20 20 |R4,[R_TO],#4 | 000053d0 20 20 20 20 20 20 20 20 20 20 20 3b 37 20 57 4f | ;7 WO| 000053e0 52 44 53 0d 1b c6 1c 20 20 20 20 20 4c 44 52 20 |RDS.... LDR | 000053f0 20 52 34 2c 5b 52 5f 46 52 4f 4d 5d 2c 23 34 0d | R4,[R_FROM],#4.| 00005400 1b d0 31 20 20 20 20 20 53 54 52 20 20 52 34 2c |..1 STR R4,| 00005410 5b 52 5f 54 4f 5d 2c 23 34 20 20 20 20 20 20 20 |[R_TO],#4 | 00005420 20 20 20 20 20 20 20 20 3b 36 20 57 4f 52 44 53 | ;6 WORDS| 00005430 0d 1b da 1c 20 20 20 20 20 4c 44 52 20 20 52 34 |.... LDR R4| 00005440 2c 5b 52 5f 46 52 4f 4d 5d 2c 23 34 0d 1b e4 31 |,[R_FROM],#4...1| 00005450 20 20 20 20 20 53 54 52 20 20 52 34 2c 5b 52 5f | STR R4,[R_| 00005460 54 4f 5d 2c 23 34 20 20 20 20 20 20 20 20 20 20 |TO],#4 | 00005470 20 20 20 20 20 3b 35 20 57 4f 52 44 53 0d 1b ee | ;5 WORDS...| 00005480 1c 20 20 20 20 20 4c 44 52 20 20 52 34 2c 5b 52 |. LDR R4,[R| 00005490 5f 46 52 4f 4d 5d 2c 23 34 0d 1b f8 31 20 20 20 |_FROM],#4...1 | 000054a0 20 20 53 54 52 20 20 52 34 2c 5b 52 5f 54 4f 5d | STR R4,[R_TO]| 000054b0 2c 23 34 20 20 20 20 20 20 20 20 20 20 20 20 20 |,#4 | 000054c0 20 20 3b 34 20 57 4f 52 44 53 0d 1c 02 1c 20 20 | ;4 WORDS.... | 000054d0 20 20 20 4c 44 52 20 20 52 34 2c 5b 52 5f 46 52 | LDR R4,[R_FR| 000054e0 4f 4d 5d 2c 23 34 0d 1c 0c 31 20 20 20 20 20 53 |OM],#4...1 S| 000054f0 54 52 20 20 52 34 2c 5b 52 5f 54 4f 5d 2c 23 34 |TR R4,[R_TO],#4| 00005500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b | ;| 00005510 33 20 57 4f 52 44 53 0d 1c 16 1c 20 20 20 20 20 |3 WORDS.... | 00005520 4c 44 52 20 20 52 34 2c 5b 52 5f 46 52 4f 4d 5d |LDR R4,[R_FROM]| 00005530 2c 23 34 0d 1c 20 31 20 20 20 20 20 53 54 52 20 |,#4.. 1 STR | 00005540 20 52 34 2c 5b 52 5f 54 4f 5d 2c 23 34 20 20 20 | R4,[R_TO],#4 | 00005550 20 20 20 20 20 20 20 20 20 20 20 20 3b 32 20 57 | ;2 W| 00005560 4f 52 44 53 0d 1c 2a 1c 20 20 20 20 20 4c 44 52 |ORDS..*. LDR| 00005570 20 20 52 34 2c 5b 52 5f 46 52 4f 4d 5d 2c 23 34 | R4,[R_FROM],#4| 00005580 0d 1c 34 31 20 20 20 20 20 53 54 52 20 20 52 34 |..41 STR R4| 00005590 2c 5b 52 5f 54 4f 5d 2c 23 34 20 20 20 20 20 20 |,[R_TO],#4 | 000055a0 20 20 20 20 20 20 20 20 20 3b 31 20 57 4f 52 44 | ;1 WORD| 000055b0 53 0d 1c 3e 0b 2e 4d 54 41 42 31 45 0d 1c 48 17 |S..>..MTAB1E..H.| 000055c0 3b ec 20 42 4c 4f 43 4b 53 20 ca 20 38 20 57 4f |;. BLOCKS . 8 WO| 000055d0 52 44 53 0d 1c 52 04 0d 1c 5c 1c 20 20 20 20 20 |RDS..R...\. | 000055e0 80 20 20 52 57 2c 52 4c 2c 23 25 31 31 31 30 30 |. RW,RL,#%11100| 000055f0 30 30 30 0d 1c 66 19 20 20 20 20 20 4d 4f 56 20 |000..f. MOV | 00005600 20 52 57 2c 52 57 2c 4c 53 52 23 32 0d 1c 70 18 | RW,RW,LSR#2..p.| 00005610 20 20 20 20 20 41 44 52 20 20 52 4d 42 2c 4d 54 | ADR RMB,MT| 00005620 41 42 38 45 0d 1c 7a 18 20 20 20 20 20 53 55 42 |AB8E..z. SUB| 00005630 20 20 52 4d 42 2c 52 4d 42 2c 52 57 0d 1c 84 16 | RMB,RMB,RW....| 00005640 20 20 20 20 20 4c 44 52 20 20 52 57 2c 45 4d 41 | LDR RW,EMA| 00005650 53 4b 0d 1c 8e 15 20 20 20 20 20 80 20 20 52 43 |SK.... . RC| 00005660 38 2c 52 4c 2c 52 57 0d 1c 98 1b 20 20 20 20 20 |8,RL,RW.... | 00005670 4d 4f 56 20 20 52 43 38 2c 52 43 38 2c 4c 53 52 |MOV RC8,RC8,LSR| 00005680 23 38 0d 1c a2 14 20 20 20 20 20 4d 4f 56 20 20 |#8.... MOV | 00005690 50 43 2c 52 4d 42 0d 1c ac 04 0d 1c b6 0c 2e 4d |PC,RMB.........M| 000056a0 56 4c 4f 4f 50 38 0d 1c c0 04 0d 1c ca 21 20 20 |VLOOP8.......! | 000056b0 20 20 20 4c 44 4d 49 41 20 28 52 5f 46 52 4f 4d | LDMIA (R_FROM| 000056c0 29 21 2c 7b 52 35 2d 52 31 32 7d 0d 1c d4 36 20 |)!,{R5-R12}...6 | 000056d0 20 20 20 20 53 54 4d 49 41 20 28 52 5f 54 4f 29 | STMIA (R_TO)| 000056e0 21 2c 7b 52 35 2d 52 31 32 7d 20 20 20 20 20 20 |!,{R5-R12} | 000056f0 20 20 20 20 20 20 20 3b 38 2a 38 20 57 4f 52 44 | ;8*8 WORD| 00005700 53 0d 1c de 21 20 20 20 20 20 4c 44 4d 49 41 20 |S...! LDMIA | 00005710 28 52 5f 46 52 4f 4d 29 21 2c 7b 52 35 2d 52 31 |(R_FROM)!,{R5-R1| 00005720 32 7d 0d 1c e8 36 20 20 20 20 20 53 54 4d 49 41 |2}...6 STMIA| 00005730 20 28 52 5f 54 4f 29 21 2c 7b 52 35 2d 52 31 32 | (R_TO)!,{R5-R12| 00005740 7d 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 37 |} ;7| 00005750 2a 38 20 57 4f 52 44 53 0d 1c f2 21 20 20 20 20 |*8 WORDS...! | 00005760 20 4c 44 4d 49 41 20 28 52 5f 46 52 4f 4d 29 21 | LDMIA (R_FROM)!| 00005770 2c 7b 52 35 2d 52 31 32 7d 0d 1c fc 36 20 20 20 |,{R5-R12}...6 | 00005780 20 20 53 54 4d 49 41 20 28 52 5f 54 4f 29 21 2c | STMIA (R_TO)!,| 00005790 7b 52 35 2d 52 31 32 7d 20 20 20 20 20 20 20 20 |{R5-R12} | 000057a0 20 20 20 20 20 3b 36 2a 38 20 57 4f 52 44 53 0d | ;6*8 WORDS.| 000057b0 1d 06 21 20 20 20 20 20 4c 44 4d 49 41 20 28 52 |..! LDMIA (R| 000057c0 5f 46 52 4f 4d 29 21 2c 7b 52 35 2d 52 31 32 7d |_FROM)!,{R5-R12}| 000057d0 0d 1d 10 36 20 20 20 20 20 53 54 4d 49 41 20 28 |...6 STMIA (| 000057e0 52 5f 54 4f 29 21 2c 7b 52 35 2d 52 31 32 7d 20 |R_TO)!,{R5-R12} | 000057f0 20 20 20 20 20 20 20 20 20 20 20 20 3b 35 2a 38 | ;5*8| 00005800 20 57 4f 52 44 53 0d 1d 1a 21 20 20 20 20 20 4c | WORDS...! L| 00005810 44 4d 49 41 20 28 52 5f 46 52 4f 4d 29 21 2c 7b |DMIA (R_FROM)!,{| 00005820 52 35 2d 52 31 32 7d 0d 1d 24 36 20 20 20 20 20 |R5-R12}..$6 | 00005830 53 54 4d 49 41 20 28 52 5f 54 4f 29 21 2c 7b 52 |STMIA (R_TO)!,{R| 00005840 35 2d 52 31 32 7d 20 20 20 20 20 20 20 20 20 20 |5-R12} | 00005850 20 20 20 3b 34 2a 38 20 57 4f 52 44 53 0d 1d 2e | ;4*8 WORDS...| 00005860 21 20 20 20 20 20 4c 44 4d 49 41 20 28 52 5f 46 |! LDMIA (R_F| 00005870 52 4f 4d 29 21 2c 7b 52 35 2d 52 31 32 7d 0d 1d |ROM)!,{R5-R12}..| 00005880 38 36 20 20 20 20 20 53 54 4d 49 41 20 28 52 5f |86 STMIA (R_| 00005890 54 4f 29 21 2c 7b 52 35 2d 52 31 32 7d 20 20 20 |TO)!,{R5-R12} | 000058a0 20 20 20 20 20 20 20 20 20 20 3b 33 2a 38 20 57 | ;3*8 W| 000058b0 4f 52 44 53 0d 1d 42 21 20 20 20 20 20 4c 44 4d |ORDS..B! LDM| 000058c0 49 41 20 28 52 5f 46 52 4f 4d 29 21 2c 7b 52 35 |IA (R_FROM)!,{R5| 000058d0 2d 52 31 32 7d 0d 1d 4c 36 20 20 20 20 20 53 54 |-R12}..L6 ST| 000058e0 4d 49 41 20 28 52 5f 54 4f 29 21 2c 7b 52 35 2d |MIA (R_TO)!,{R5-| 000058f0 52 31 32 7d 20 20 20 20 20 20 20 20 20 20 20 20 |R12} | 00005900 20 3b 32 2a 38 20 57 4f 52 44 53 0d 1d 56 21 20 | ;2*8 WORDS..V! | 00005910 20 20 20 20 4c 44 4d 49 41 20 28 52 5f 46 52 4f | LDMIA (R_FRO| 00005920 4d 29 21 2c 7b 52 35 2d 52 31 32 7d 0d 1d 60 36 |M)!,{R5-R12}..`6| 00005930 20 20 20 20 20 53 54 4d 49 41 20 28 52 5f 54 4f | STMIA (R_TO| 00005940 29 21 2c 7b 52 35 2d 52 31 32 7d 20 20 20 20 20 |)!,{R5-R12} | 00005950 20 20 20 20 20 20 20 20 3b 31 2a 38 20 57 4f 52 | ;1*8 WOR| 00005960 44 53 0d 1d 6a 0b 2e 4d 54 41 42 38 45 0d 1d 74 |DS..j..MTAB8E..t| 00005970 19 20 20 20 20 20 53 55 42 53 20 20 52 43 38 2c |. SUBS RC8,| 00005980 52 43 38 2c 23 31 0d 1d 7e 16 20 20 20 20 20 42 |RC8,#1..~. B| 00005990 47 45 20 20 20 4d 56 4c 4f 4f 50 38 0d 1d 88 04 |GE MVLOOP8....| 000059a0 0d 1d 92 1a 3b ec 20 4f 44 44 20 28 20 30 20 b8 |....;. ODD ( 0 .| 000059b0 20 33 20 29 20 42 59 54 45 53 0d 1d 9c 04 0d 1d | 3 ) BYTES......| 000059c0 a6 16 20 20 20 20 20 80 20 20 52 57 2c 52 4c 2c |.. . RW,RL,| 000059d0 23 25 31 31 0d 1d b0 19 20 20 20 20 20 4d 4f 56 |#%11.... MOV| 000059e0 20 20 52 57 2c 52 57 2c 4c 53 4c 23 33 0d 1d ba | RW,RW,LSL#3...| 000059f0 18 20 20 20 20 20 41 44 52 20 20 52 4d 42 2c 4d |. ADR RMB,M| 00005a00 54 41 42 42 45 0d 1d c4 18 20 20 20 20 20 53 55 |TABBE.... SU| 00005a10 42 20 20 52 4d 42 2c 52 4d 42 2c 52 57 0d 1d ce |B RMB,RMB,RW...| 00005a20 14 20 20 20 20 20 4d 4f 56 20 20 50 43 2c 52 4d |. MOV PC,RM| 00005a30 42 0d 1d d8 04 0d 1d e2 35 20 20 20 20 20 4c 44 |B.......5 LD| 00005a40 52 42 20 52 35 2c 5b 52 5f 46 52 4f 4d 5d 2c 23 |RB R5,[R_FROM],#| 00005a50 31 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |1 | 00005a60 20 20 3b 33 20 42 59 54 45 53 0d 1d ec 1a 20 20 | ;3 BYTES.... | 00005a70 20 20 20 53 54 52 42 20 52 35 2c 5b 52 5f 54 4f | STRB R5,[R_TO| 00005a80 5d 2c 23 31 0d 1d f6 35 20 20 20 20 20 4c 44 52 |],#1...5 LDR| 00005a90 42 20 52 35 2c 5b 52 5f 46 52 4f 4d 5d 2c 23 31 |B R5,[R_FROM],#1| 00005aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00005ab0 20 3b 32 20 42 59 54 45 53 0d 1e 00 1a 20 20 20 | ;2 BYTES.... | 00005ac0 20 20 53 54 52 42 20 52 35 2c 5b 52 5f 54 4f 5d | STRB R5,[R_TO]| 00005ad0 2c 23 31 0d 1e 0a 34 20 20 20 20 20 4c 44 52 42 |,#1...4 LDRB| 00005ae0 20 52 35 2c 5b 52 5f 46 52 4f 4d 5d 2c 23 31 20 | R5,[R_FROM],#1 | 00005af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00005b00 3b 31 20 42 59 54 45 0d 1e 14 1a 20 20 20 20 20 |;1 BYTE.... | 00005b10 53 54 52 42 20 52 35 2c 5b 52 5f 54 4f 5d 2c 23 |STRB R5,[R_TO],#| 00005b20 31 0d 1e 1e 0b 2e 4d 54 41 42 42 45 0d 1e 28 0b |1.....MTABBE..(.| 00005b30 2e 4d 56 45 58 49 54 0d 1e 32 1e 20 20 20 20 20 |.MVEXIT..2. | 00005b40 4c 44 4d 46 44 20 52 31 33 21 2c 7b 30 2d 31 32 |LDMFD R13!,{0-12| 00005b50 2c 52 31 34 7d 0d 1e 3c 15 20 20 20 20 20 4d 4f |,R14}..<. MO| 00005b60 56 20 20 20 50 43 2c 52 31 34 0d 1e 46 04 0d 1e |V PC,R14..F...| 00005b70 50 4b 2e 4d 42 32 30 30 20 20 20 20 20 20 20 20 |PK.MB200 | 00005b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00005b90 20 20 20 20 20 20 20 20 20 20 20 3b 54 41 52 47 | ;TARG| 00005ba0 45 54 20 49 53 20 41 4c 49 47 4e 45 44 20 53 4f |ET IS ALIGNED SO| 00005bb0 55 52 43 45 20 49 53 20 ac 0d 1e 5a 38 20 20 20 |URCE IS ...Z8 | 00005bc0 20 20 80 20 20 20 52 53 52 2c 52 5f 46 52 4f 4d | . RSR,R_FROM| 00005bd0 2c 23 25 31 31 20 20 20 20 20 20 20 20 20 20 20 |,#%11 | 00005be0 20 20 20 20 3b 87 53 45 54 20 49 4e 20 57 4f 52 | ;.SET IN WOR| 00005bf0 44 0d 1e 64 40 20 20 20 20 20 42 49 43 20 20 20 |D..d@ BIC | 00005c00 52 5f 46 52 4f 4d 2c 52 5f 46 52 4f 4d 2c 23 25 |R_FROM,R_FROM,#%| 00005c10 31 31 20 20 20 20 20 20 20 20 20 20 20 20 3b 41 |11 ;A| 00005c20 4c 49 47 4e 20 53 4f 55 52 43 45 20 28 4c 4f 57 |LIGN SOURCE (LOW| 00005c30 29 0d 1e 6e 39 20 20 20 20 20 4d 4f 56 20 20 20 |)..n9 MOV | 00005c40 52 53 52 2c 52 53 52 2c 4c 53 4c 23 33 20 20 20 |RSR,RSR,LSL#3 | 00005c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 52 | ;R| 00005c60 49 47 48 54 20 53 48 49 46 54 0d 1e 78 38 20 20 |IGHT SHIFT..x8 | 00005c70 20 20 20 52 53 42 20 20 20 52 53 4c 2c 52 53 52 | RSB RSL,RSR| 00005c80 2c 23 33 32 20 20 20 20 20 20 20 20 20 20 20 20 |,#32 | 00005c90 20 20 20 20 20 20 20 3b 4c 45 46 54 20 53 48 49 | ;LEFT SHI| 00005ca0 46 54 0d 1e 82 04 0d 1e 8c 1b 3b 4e 4f 57 20 44 |FT........;NOW D| 00005cb0 45 54 45 52 4d 49 4e 45 20 42 4c 4f 43 4b 20 ec |ETERMINE BLOCK .| 00005cc0 53 0d 1e 96 04 0d 1e a0 0a 2e 4d 42 32 31 30 0d |S.........MB210.| 00005cd0 1e aa 16 20 20 20 20 20 43 4d 50 20 20 20 52 4c |... CMP RL| 00005ce0 2c 23 38 2a 34 0d 1e b4 3c 20 20 20 20 20 42 4c |,#8*4...< BL| 00005cf0 54 20 20 20 4d 42 32 34 30 20 20 20 20 20 20 20 |T MB240 | 00005d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 42 | ;B| 00005d10 52 41 4e 43 48 20 4c 45 53 53 20 54 48 41 4e 20 |RANCH LESS THAN | 00005d20 38 0d 1e be 20 20 20 20 20 20 4c 44 4d 49 41 20 |8... LDMIA | 00005d30 28 52 5f 46 52 4f 4d 29 2c 7b 52 34 2d 52 31 32 |(R_FROM),{R4-R12| 00005d40 7d 0d 1e c8 1c 20 20 20 20 20 4d 4f 56 20 20 20 |}.... MOV | 00005d50 52 34 2c 52 34 2c 4c 53 52 20 52 53 52 0d 1e d2 |R4,R4,LSR RSR...| 00005d60 1e 20 20 20 20 20 84 52 20 20 20 52 34 2c 52 34 |. .R R4,R4| 00005d70 2c 52 35 2c 4c 53 4c 20 52 53 4c 0d 1e dc 04 0d |,R5,LSL RSL.....| 00005d80 1e e6 1c 20 20 20 20 20 4d 4f 56 20 20 20 52 35 |... MOV R5| 00005d90 2c 52 35 2c 4c 53 52 20 52 53 52 0d 1e f0 1e 20 |,R5,LSR RSR.... | 00005da0 20 20 20 20 84 52 20 20 20 52 35 2c 52 35 2c 52 | .R R5,R5,R| 00005db0 36 2c 4c 53 4c 20 52 53 4c 0d 1e fa 04 0d 1f 04 |6,LSL RSL.......| 00005dc0 1c 20 20 20 20 20 4d 4f 56 20 20 20 52 36 2c 52 |. MOV R6,R| 00005dd0 36 2c 4c 53 52 20 52 53 52 0d 1f 0e 1e 20 20 20 |6,LSR RSR.... | 00005de0 20 20 84 52 20 20 20 52 36 2c 52 36 2c 52 37 2c | .R R6,R6,R7,| 00005df0 4c 53 4c 20 52 53 4c 0d 1f 18 04 0d 1f 22 1c 20 |LSL RSL......". | 00005e00 20 20 20 20 4d 4f 56 20 20 20 52 37 2c 52 37 2c | MOV R7,R7,| 00005e10 4c 53 52 20 52 53 52 0d 1f 2c 1e 20 20 20 20 20 |LSR RSR..,. | 00005e20 84 52 20 20 20 52 37 2c 52 37 2c 52 38 2c 4c 53 |.R R7,R7,R8,LS| 00005e30 4c 20 52 53 4c 0d 1f 36 04 0d 1f 40 1c 20 20 20 |L RSL..6...@. | 00005e40 20 20 4d 4f 56 20 20 20 52 38 2c 52 38 2c 4c 53 | MOV R8,R8,LS| 00005e50 52 20 52 53 52 0d 1f 4a 1e 20 20 20 20 20 84 52 |R RSR..J. .R| 00005e60 20 20 20 52 38 2c 52 38 2c 52 39 2c 4c 53 4c 20 | R8,R8,R9,LSL | 00005e70 52 53 4c 0d 1f 54 04 0d 1f 5e 1c 20 20 20 20 20 |RSL..T...^. | 00005e80 4d 4f 56 20 20 20 52 39 2c 52 39 2c 4c 53 52 20 |MOV R9,R9,LSR | 00005e90 52 53 52 0d 1f 68 1f 20 20 20 20 20 84 52 20 20 |RSR..h. .R | 00005ea0 20 52 39 2c 52 39 2c 52 31 30 2c 4c 53 4c 20 52 | R9,R9,R10,LSL R| 00005eb0 53 4c 0d 1f 72 04 0d 1f 7c 1e 20 20 20 20 20 4d |SL..r...|. M| 00005ec0 4f 56 20 20 20 52 31 30 2c 52 31 30 2c 4c 53 52 |OV R10,R10,LSR| 00005ed0 20 52 53 52 0d 1f 86 21 20 20 20 20 20 84 52 20 | RSR...! .R | 00005ee0 20 20 52 31 30 2c 52 31 30 2c 52 31 31 2c 4c 53 | R10,R10,R11,LS| 00005ef0 4c 20 52 53 4c 0d 1f 90 04 0d 1f 9a 1e 20 20 20 |L RSL........ | 00005f00 20 20 4d 4f 56 20 20 20 52 31 31 2c 52 31 31 2c | MOV R11,R11,| 00005f10 4c 53 52 20 52 53 52 0d 1f a4 21 20 20 20 20 20 |LSR RSR...! | 00005f20 84 52 20 20 20 52 31 31 2c 52 31 31 2c 52 31 32 |.R R11,R11,R12| 00005f30 2c 4c 53 4c 20 52 53 4c 0d 1f ae 04 0d 1f b8 1f |,LSL RSL........| 00005f40 20 20 20 20 20 53 54 4d 49 41 20 28 52 5f 54 4f | STMIA (R_TO| 00005f50 29 21 2c 7b 52 34 2d 52 31 31 7d 0d 1f c2 21 20 |)!,{R4-R11}...! | 00005f60 20 20 20 20 41 44 44 20 20 20 52 5f 46 52 4f 4d | ADD R_FROM| 00005f70 2c 52 5f 46 52 4f 4d 2c 23 34 2a 38 0d 1f cc 19 |,R_FROM,#4*8....| 00005f80 20 20 20 20 20 53 55 42 53 20 20 52 4c 2c 52 4c | SUBS RL,RL| 00005f90 2c 23 38 2a 34 0d 1f d6 3f 20 20 20 20 20 42 47 |,#8*4...? BG| 00005fa0 54 20 20 20 4d 42 32 31 30 20 20 20 20 20 20 20 |T MB210 | 00005fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 47 | ;G| 00005fc0 4f 20 44 4f 20 41 4e 4f 54 48 45 52 20 38 20 57 |O DO ANOTHER 8 W| 00005fd0 4f 52 44 53 0d 1f e0 0a 2e 4d 42 32 34 30 0d 1f |ORDS.....MB240..| 00005fe0 ea 16 20 20 20 20 20 43 4d 50 20 20 20 52 4c 2c |.. CMP RL,| 00005ff0 23 34 2a 34 0d 1f f4 3c 20 20 20 20 20 42 4c 54 |#4*4...< BLT| 00006000 20 20 20 4d 42 32 35 30 20 20 20 20 20 20 20 20 | MB250 | 00006010 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 42 52 | ;BR| 00006020 41 4e 43 48 20 4c 45 53 53 20 54 48 41 4e 20 34 |ANCH LESS THAN 4| 00006030 0d 1f fe 04 0d 20 08 1f 20 20 20 20 20 4c 44 4d |..... .. LDM| 00006040 49 41 20 28 52 5f 46 52 4f 4d 29 2c 7b 52 34 2d |IA (R_FROM),{R4-| 00006050 52 38 7d 0d 20 12 1c 20 20 20 20 20 4d 4f 56 20 |R8}. .. MOV | 00006060 20 20 52 34 2c 52 34 2c 4c 53 52 20 52 53 52 0d | R4,R4,LSR RSR.| 00006070 20 1c 1e 20 20 20 20 20 84 52 20 20 20 52 34 2c | .. .R R4,| 00006080 52 34 2c 52 35 2c 4c 53 4c 20 52 53 4c 0d 20 26 |R4,R5,LSL RSL. &| 00006090 04 0d 20 30 1c 20 20 20 20 20 4d 4f 56 20 20 20 |.. 0. MOV | 000060a0 52 35 2c 52 35 2c 4c 53 52 20 52 53 52 0d 20 3a |R5,R5,LSR RSR. :| 000060b0 1e 20 20 20 20 20 84 52 20 20 20 52 35 2c 52 35 |. .R R5,R5| 000060c0 2c 52 36 2c 4c 53 4c 20 52 53 4c 0d 20 44 04 0d |,R6,LSL RSL. D..| 000060d0 20 4e 1c 20 20 20 20 20 4d 4f 56 20 20 20 52 36 | N. MOV R6| 000060e0 2c 52 36 2c 4c 53 52 20 52 53 52 0d 20 58 1e 20 |,R6,LSR RSR. X. | 000060f0 20 20 20 20 84 52 20 20 20 52 36 2c 52 36 2c 52 | .R R6,R6,R| 00006100 37 2c 4c 53 4c 20 52 53 4c 0d 20 62 04 0d 20 6c |7,LSL RSL. b.. l| 00006110 1c 20 20 20 20 20 4d 4f 56 20 20 20 52 37 2c 52 |. MOV R7,R| 00006120 37 2c 4c 53 52 20 52 53 52 0d 20 76 1e 20 20 20 |7,LSR RSR. v. | 00006130 20 20 84 52 20 20 20 52 37 2c 52 37 2c 52 38 2c | .R R7,R7,R8,| 00006140 4c 53 4c 20 52 53 4c 0d 20 80 04 0d 20 8a 1e 20 |LSL RSL. ... .. | 00006150 20 20 20 20 53 54 4d 49 41 20 28 52 5f 54 4f 29 | STMIA (R_TO)| 00006160 21 2c 7b 52 34 2d 52 37 7d 0d 20 94 19 20 20 20 |!,{R4-R7}. .. | 00006170 20 20 53 55 42 20 20 20 52 4c 2c 52 4c 2c 23 34 | SUB RL,RL,#4| 00006180 2a 34 0d 20 9e 21 20 20 20 20 20 41 44 44 20 20 |*4. .! ADD | 00006190 20 52 5f 46 52 4f 4d 2c 52 5f 46 52 4f 4d 2c 23 | R_FROM,R_FROM,#| 000061a0 34 2a 34 0d 20 a8 0a 2e 4d 42 32 35 30 0d 20 b2 |4*4. ...MB250. .| 000061b0 16 20 20 20 20 20 43 4d 50 20 20 20 52 4c 2c 23 |. CMP RL,#| 000061c0 32 2a 34 0d 20 bc 47 20 20 20 20 20 42 4c 54 20 |2*4. .G BLT | 000061d0 20 20 4d 42 32 36 30 20 20 20 20 20 20 20 20 20 | MB260 | 000061e0 20 20 20 20 20 20 20 20 20 20 20 20 3b 42 52 41 | ;BRA| 000061f0 4e 43 48 20 4c 45 53 53 20 54 48 41 4e 20 32 20 |NCH LESS THAN 2 | 00006200 57 4f 52 44 53 20 b8 20 47 4f 0d 20 c6 1f 20 20 |WORDS . GO. .. | 00006210 20 20 20 4c 44 4d 49 41 20 28 52 5f 46 52 4f 4d | LDMIA (R_FROM| 00006220 29 2c 7b 52 34 2d 52 36 7d 0d 20 d0 1c 20 20 20 |),{R4-R6}. .. | 00006230 20 20 4d 4f 56 20 20 20 52 34 2c 52 34 2c 4c 53 | MOV R4,R4,LS| 00006240 52 20 52 53 52 0d 20 da 1e 20 20 20 20 20 84 52 |R RSR. .. .R| 00006250 20 20 20 52 34 2c 52 34 2c 52 35 2c 4c 53 4c 20 | R4,R4,R5,LSL | 00006260 52 53 4c 0d 20 e4 1c 20 20 20 20 20 4d 4f 56 20 |RSL. .. MOV | 00006270 20 20 52 35 2c 52 35 2c 4c 53 52 20 52 53 52 0d | R5,R5,LSR RSR.| 00006280 20 ee 1e 20 20 20 20 20 84 52 20 20 20 52 35 2c | .. .R R5,| 00006290 52 35 2c 52 36 2c 4c 53 4c 20 52 53 4c 0d 20 f8 |R5,R6,LSL RSL. .| 000062a0 1e 20 20 20 20 20 53 54 4d 49 41 20 28 52 5f 54 |. STMIA (R_T| 000062b0 4f 29 21 2c 7b 52 34 2d 52 35 7d 0d 21 02 19 20 |O)!,{R4-R5}.!.. | 000062c0 20 20 20 20 53 55 42 20 20 20 52 4c 2c 52 4c 2c | SUB RL,RL,| 000062d0 23 34 2a 32 0d 21 0c 21 20 20 20 20 20 41 44 44 |#4*2.!.! ADD| 000062e0 20 20 20 52 5f 46 52 4f 4d 2c 52 5f 46 52 4f 4d | R_FROM,R_FROM| 000062f0 2c 23 34 2a 32 0d 21 16 0a 2e 4d 42 32 36 30 0d |,#4*2.!...MB260.| 00006300 21 20 14 20 20 20 20 20 43 4d 50 20 20 20 52 4c |! . CMP RL| 00006310 2c 23 34 0d 21 2a 41 20 20 20 20 20 42 4c 54 20 |,#4.!*A BLT | 00006320 20 20 4d 42 32 37 30 20 20 20 20 20 20 20 20 20 | MB270 | 00006330 20 20 20 20 20 20 20 20 20 20 20 20 3b 42 52 41 | ;BRA| 00006340 4e 43 48 20 4c 45 53 53 20 54 48 41 4e 20 31 20 |NCH LESS THAN 1 | 00006350 57 4f 52 44 0d 21 34 1f 20 20 20 20 20 4c 44 4d |WORD.!4. LDM| 00006360 49 41 20 28 52 5f 46 52 4f 4d 29 2c 7b 52 34 2d |IA (R_FROM),{R4-| 00006370 52 35 7d 0d 21 3e 1c 20 20 20 20 20 4d 4f 56 20 |R5}.!>. MOV | 00006380 20 20 52 34 2c 52 34 2c 4c 53 52 20 52 53 52 0d | R4,R4,LSR RSR.| 00006390 21 48 1e 20 20 20 20 20 84 52 20 20 20 52 34 2c |!H. .R R4,| 000063a0 52 34 2c 52 35 2c 4c 53 4c 20 52 53 4c 0d 21 52 |R4,R5,LSL RSL.!R| 000063b0 17 20 20 20 20 20 53 55 42 20 20 20 52 4c 2c 52 |. SUB RL,R| 000063c0 4c 2c 23 34 0d 21 5c 1b 20 20 20 20 20 53 54 4d |L,#4.!\. STM| 000063d0 49 41 20 28 52 5f 54 4f 29 21 2c 7b 52 34 7d 0d |IA (R_TO)!,{R4}.| 000063e0 21 66 1f 20 20 20 20 20 41 44 44 20 20 20 52 5f |!f. ADD R_| 000063f0 46 52 4f 4d 2c 52 5f 46 52 4f 4d 2c 23 34 0d 21 |FROM,R_FROM,#4.!| 00006400 70 38 2e 4d 42 32 37 30 20 20 20 20 20 20 20 20 |p8.MB270 | 00006410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00006420 20 20 20 20 20 20 20 3b 4c 41 53 54 20 46 45 57 | ;LAST FEW| 00006430 20 42 59 54 45 53 0d 21 7a 14 20 20 20 20 20 43 | BYTES.!z. C| 00006440 4d 50 20 20 20 52 4c 2c 23 30 0d 21 84 15 20 20 |MP RL,#0.!.. | 00006450 20 20 20 42 4c 45 20 20 20 4d 56 45 58 49 54 0d | BLE MVEXIT.| 00006460 21 8e 1f 20 20 20 20 20 4c 44 4d 49 41 20 28 52 |!.. LDMIA (R| 00006470 5f 46 52 4f 4d 29 2c 7b 52 34 2d 52 35 7d 0d 21 |_FROM),{R4-R5}.!| 00006480 98 1c 20 20 20 20 20 4d 4f 56 20 20 20 52 34 2c |.. MOV R4,| 00006490 52 34 2c 4c 53 52 20 52 53 52 0d 21 a2 1e 20 20 |R4,LSR RSR.!.. | 000064a0 20 20 20 84 52 20 20 20 52 34 2c 52 34 2c 52 35 | .R R4,R4,R5| 000064b0 2c 4c 53 4c 20 52 53 4c 0d 21 ac 0a 2e 4d 42 32 |,LSL RSL.!...MB2| 000064c0 37 35 0d 21 b6 04 0d 21 c0 1b 20 20 20 20 20 53 |75.!...!.. S| 000064d0 54 52 42 20 20 52 34 2c 5b 52 5f 54 4f 5d 2c 23 |TRB R4,[R_TO],#| 000064e0 31 0d 21 ca 1b 20 20 20 20 20 4d 4f 56 20 20 20 |1.!.. MOV | 000064f0 52 34 2c 52 34 2c 4c 53 52 20 23 38 0d 21 d4 17 |R4,R4,LSR #8.!..| 00006500 20 20 20 20 20 53 55 42 53 20 20 52 4c 2c 52 4c | SUBS RL,RL| 00006510 2c 23 31 0d 21 de 14 20 20 20 20 20 42 47 54 20 |,#1.!.. BGT | 00006520 20 20 4d 42 32 37 35 0d 21 e8 15 20 20 20 20 20 | MB275.!.. | 00006530 42 41 4c 20 20 20 4d 56 45 58 49 54 0d 21 f2 3d |BAL MVEXIT.!.=| 00006540 2e 4d 42 32 38 30 20 20 20 20 20 20 20 20 20 20 |.MB280 | 00006550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00006560 20 20 20 20 20 20 20 3b 4c 45 53 53 20 54 48 41 | ;LESS THA| 00006570 4e 20 34 20 42 59 54 45 53 0d 21 fc 1c 20 20 20 |N 4 BYTES.!.. | 00006580 20 20 4c 44 52 42 20 52 34 2c 5b 52 5f 46 52 4f | LDRB R4,[R_FRO| 00006590 4d 5d 2c 23 31 0d 22 06 1a 20 20 20 20 20 53 54 |M],#1.".. ST| 000065a0 52 42 20 52 34 2c 5b 52 5f 54 4f 5d 2c 23 31 0d |RB R4,[R_TO],#1.| 000065b0 22 10 16 20 20 20 20 20 53 55 42 53 20 52 4c 2c |".. SUBS RL,| 000065c0 52 4c 2c 23 31 0d 22 1a 39 20 20 20 20 20 42 45 |RL,#1.".9 BE| 000065d0 51 20 20 4d 56 45 58 49 54 20 20 20 20 20 20 20 |Q MVEXIT | 000065e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 000065f0 20 20 20 20 20 3b 46 49 4e 49 53 48 45 44 0d 22 | ;FINISHED."| 00006600 24 13 20 20 20 20 20 42 41 4c 20 20 4d 42 32 38 |$. BAL MB28| 00006610 30 0d 22 2e 19 2e 45 4d 41 53 4b 20 45 51 55 44 |0."...EMASK EQUD| 00006620 20 26 46 46 46 46 46 46 30 30 0d 22 38 05 5d 0d | &FFFFFF00."8.].| 00006630 22 42 04 0d 22 4c 0b 20 ed 20 50 41 53 53 0d 22 |"B.."L. . PASS."| 00006640 56 06 20 e1 0d 22 60 5e f4 2d 2d 2d 2d 2d 2d 2d |V. .."`^.-------| 00006650 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 000066a0 2d 2d 0d 22 6a 10 20 20 20 20 20 20 20 dd 20 f2 |--."j. . .| 000066b0 5f 57 0d 22 74 1e 20 20 20 20 20 20 20 20 20 f1 |_W."t. .| 000066c0 20 22 20 41 52 52 41 59 20 58 59 5a 5f 57 25 22 | " ARRAY XYZ_W%"| 000066d0 0d 22 7e 0e 20 20 20 20 20 20 20 20 20 f1 0d 22 |."~. .."| 000066e0 88 27 20 20 20 20 20 20 20 20 20 e3 20 58 20 3d |.' . X =| 000066f0 20 30 20 b8 20 28 4d 41 58 50 4e 54 2d 31 29 2a | 0 . (MAXPNT-1)*| 00006700 34 20 88 20 34 0d 22 92 2f 20 20 20 20 20 20 20 |4 . 4."./ | 00006710 20 20 20 f1 20 22 45 4e 54 52 59 3d 22 3b 58 2f | . "ENTRY=";X/| 00006720 34 3b 22 20 56 41 4c 55 45 3d 22 3b 58 59 5a 5f |4;" VALUE=";XYZ_| 00006730 57 25 21 58 0d 22 9c 10 20 20 20 20 20 20 20 20 |W%!X.".. | 00006740 20 ed 20 58 0d 22 a6 0c 20 20 20 20 20 20 20 e1 | . X.".. .| 00006750 0d 22 b0 5e f4 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |.".^.-----------| 00006760 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 000067a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 22 |--------------."| 000067b0 ba 10 20 20 20 20 20 20 20 dd 20 f2 5f 44 0d 22 |.. . ._D."| 000067c0 c4 1f 20 20 20 20 20 20 20 20 20 20 f1 20 22 20 |.. . " | 000067d0 41 52 52 41 59 20 58 59 5a 5f 44 25 22 0d 22 ce |ARRAY XYZ_D%".".| 000067e0 35 20 20 20 20 20 20 20 20 20 20 e3 20 58 20 3d |5 . X =| 000067f0 20 30 20 b8 20 28 4d 41 58 53 43 41 4e 2d 31 29 | 0 . (MAXSCAN-1)| 00006800 2a 52 4f 57 5f 4c 45 4e 20 88 20 52 4f 57 5f 4c |*ROW_LEN . ROW_L| 00006810 45 4e 0d 22 d8 dc 20 20 20 20 20 20 20 20 20 20 |EN.".. | 00006820 20 f1 20 22 20 20 20 58 3d 22 3b 58 59 5a 5f 44 | . " X=";XYZ_D| 00006830 25 21 58 3b 22 20 59 3d 22 3b 20 58 59 5a 5f 44 |%!X;" Y="; XYZ_D| 00006840 25 21 28 58 2b 34 29 3b 22 20 5a 3d 22 3b 20 58 |%!(X+4);" Z="; X| 00006850 59 5a 5f 44 25 21 28 58 2b 38 29 3b 22 20 58 49 |YZ_D%!(X+8);" XI| 00006860 3d 22 3b 20 58 59 5a 5f 44 25 21 28 58 2b 31 32 |="; XYZ_D%!(X+12| 00006870 29 3b 22 20 59 49 3d 22 3b 20 58 59 5a 5f 44 25 |);" YI="; XYZ_D%| 00006880 21 28 58 2b 31 36 29 3b 22 20 5a 49 3d 22 3b 20 |!(X+16);" ZI="; | 00006890 58 59 5a 5f 44 25 21 28 58 2b 32 30 29 3b 22 20 |XYZ_D%!(X+20);" | 000068a0 53 49 5a 45 3d 22 3b 20 58 59 5a 5f 44 25 21 28 |SIZE="; XYZ_D%!(| 000068b0 58 2b 52 4f 57 5f 53 49 5a 45 29 3b 22 20 52 47 |X+ROW_SIZE);" RG| 000068c0 42 3d 22 3b 20 58 59 5a 5f 44 25 21 28 58 2b 32 |B="; XYZ_D%!(X+2| 000068d0 38 29 3b 22 20 52 47 42 54 41 42 3d 26 22 3b 7e |8);" RGBTAB=&";~| 000068e0 20 58 59 5a 5f 44 25 21 28 58 2b 33 32 29 0d 22 | XYZ_D%!(X+32)."| 000068f0 e2 11 20 20 20 20 20 20 20 20 20 20 ed 20 58 0d |.. . X.| 00006900 22 ec 0c 20 20 20 20 20 20 20 e1 0d 22 f6 5e f4 |".. ..".^.| 00006910 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00006960 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 23 00 10 20 20 20 |---------.#.. | 00006970 20 20 20 20 dd 20 f2 5f 41 0d 23 0a 1f 20 20 20 | . ._A.#.. | 00006980 20 20 20 20 20 20 20 f1 20 22 20 41 52 52 41 59 | . " ARRAY| 00006990 20 58 59 5a 5f 41 25 22 0d 23 14 35 20 20 20 20 | XYZ_A%".#.5 | 000069a0 20 20 20 20 20 20 e3 20 58 20 3d 20 30 20 b8 20 | . X = 0 . | 000069b0 28 4d 41 58 53 43 41 4e 2d 31 29 2a 52 4f 57 5f |(MAXSCAN-1)*ROW_| 000069c0 4c 45 4e 20 88 20 52 4f 57 5f 4c 45 4e 0d 23 1e |LEN . ROW_LEN.#.| 000069d0 e2 20 20 20 20 20 20 20 20 20 20 20 f1 20 22 20 |. . " | 000069e0 20 20 58 3d 22 3b 58 59 5a 5f 41 25 21 58 3b 22 | X=";XYZ_A%!X;"| 000069f0 20 59 3d 22 3b 20 58 59 5a 5f 41 25 21 28 58 2b | Y="; XYZ_A%!(X+| 00006a00 34 29 3b 22 20 5a 3d 22 3b 20 58 59 5a 5f 41 25 |4);" Z="; XYZ_A%| 00006a10 21 28 58 2b 38 29 3b 22 20 58 63 3d 22 3b 20 58 |!(X+8);" Xc="; X| 00006a20 59 5a 5f 41 25 21 28 58 2b 33 36 29 3b 22 20 59 |YZ_A%!(X+36);" Y| 00006a30 43 3d 22 3b 20 58 59 5a 5f 41 25 21 28 58 2b 34 |C="; XYZ_A%!(X+4| 00006a40 30 29 3b 22 20 5a 43 3d 22 3b 20 58 59 5a 5f 41 |0);" ZC="; XYZ_A| 00006a50 25 21 28 58 2b 34 34 29 3b 22 20 53 49 5a 45 3d |%!(X+44);" SIZE=| 00006a60 22 3b 20 58 59 5a 5f 41 25 21 28 58 2b 34 38 29 |"; XYZ_A%!(X+48)| 00006a70 3b 22 20 52 47 42 54 41 42 3d 26 22 3b 7e 20 58 |;" RGBTAB=&";~ X| 00006a80 59 5a 5f 41 25 21 28 58 2b 35 36 29 3b 22 20 53 |YZ_A%!(X+56);" S| 00006a90 50 52 49 54 45 3d 22 3b 7e 20 58 59 5a 5f 41 25 |PRITE=";~ XYZ_A%| 00006aa0 21 28 58 2b 52 4f 57 5f 53 50 52 49 54 45 29 0d |!(X+ROW_SPRITE).| 00006ab0 23 28 11 20 20 20 20 20 20 20 20 20 20 ed 20 58 |#(. . X| 00006ac0 0d 23 32 0f 20 20 20 20 20 20 20 20 20 20 e1 0d |.#2. ..| 00006ad0 23 3c 5c f4 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |#<\.------------| 00006ae0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00006b20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d ff |-----------..| 00006b2d