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