S-C DocuMentor — Applesoft

               SAVE S.F5BA
               1010 *--------------------------------
               1020 *      TABLE OF COS(90*X/16 DEGREES)*$100 - 1
               1030 *      WITH ONE BYTE PRECISION, X=0 TO 16:
               1040 *--------------------------------
               1050 COSINE.TABLE
F5BA- FF FE FA
F5BD- F4 EC E1
F5C0- D4 C5    1060        .HS FFFEFAF4ECE1D4C5
F5C2- B4 A1 8D
F5C5- 78 61 49
F5C8- 31 18    1070        .HS B4A18D7861493118
F5CA- FF       1080        .HS FF
               1090 *--------------------------------
               1100 *    HFIND -- CALCULATES CURRENT POSITION OF HI-RES CURSOR
               1110 *      (NOT CALLED BY ANY APPLESOFT ROUTINE)
               1120 *
               1130 *      CALCULATE Y-COORD FROM GBASL,H
               1140 *            AND X-COORD FROM HORIZ AND HMASK
               1150 *--------------------------------
F5CB- A5 26    1160 HFIND  LDA MON.GBASL     GBASL = EABAB000
F5CD- 0A       1170        ASL               E INTO CARRY
F5CE- A5 27    1180        LDA MON.GBASH     GBASH = PPPFGHCD
F5D0- 29 03    1190        AND #3            000000CD
F5D2- 2A       1200        ROL               00000CDE
F5D3- 05 26    1210        ORA MON.GBASL     EABABCDE
F5D5- 0A       1220        ASL               ABABCDE0
F5D6- 0A       1230        ASL               BABCDE00
F5D7- 0A       1240        ASL               ABCDE000
F5D8- 85 E2    1250        STA HGR.Y         ALL BUT FGH
F5DA- A5 27    1260        LDA MON.GBASH     PPPFGHCD
F5DC- 4A       1270        LSR               0PPPFGHC
F5DD- 4A       1280        LSR               00PPPFGH
F5DE- 29 07    1290        AND #7            00000FGH
F5E0- 05 E2    1300        ORA HGR.Y         ABCDEFGH
F5E2- 85 E2    1310        STA HGR.Y    THAT TAKES CARE OF Y-COORDINATE!
F5E4- A5 E5    1320        LDA HGR.HORIZ     X = 7*HORIZ + BIT POS. IN HMASK
F5E6- 0A       1330        ASL               MULTIPLY BY 7
F5E7- 65 E5    1340        ADC HGR.HORIZ     3* SO FAR
F5E9- 0A       1350        ASL               6*
F5EA- AA       1360        TAX               SINCE 7* MIGHT NOT FIT IN 1 BYTE,
               1370 *                        WAIT TILL LATER FOR LAST ADD
F5EB- CA       1380        DEX
F5EC- A5 30    1390        LDA MON.HMASK     NOW FIND BIT POSITION IN HMASK
F5EE- 29 7F    1400        AND #$7F          ONLY LOOK AT LOW SEVEN
F5F0- E8       1410 .1     INX               COUNT A SHIFT
F5F1- 4A       1420        LSR
F5F2- D0 FC    1430        BNE .1            STILL IN THERE
F5F4- 85 E1    1440        STA HGR.X+1       ZERO TO HI-BYTE
F5F6- 8A       1450        TXA               6*HORIZ+LOG2(HMASK)
F5F7- 18       1460        CLC               ADD HORIZ ONE MORE TIME
F5F8- 65 E5    1470        ADC HGR.HORIZ     7*HORIZ+LOG2(HMASK)
F5FA- 90 02    1480        BCC .2            UPPER BYTE = 0
F5FC- E6 E1    1490        INC HGR.X+1       UPPER BYTE = 1
F5FE- 85 E0    1500 .2     STA HGR.X         STORE LOWER BYTE
F600- 60       1510 RTS.22 RTS
               1520 *--------------------------------
               1530 *      DRAW A SHAPE
               1540 *
               1550 *      (Y,X) = SHAPE STARTING ADDRESS
               1560 *      (A)   = ROTATION (0-3F)
               1570 *--------------------------------
               1580 *      APPLESOFT DOES NOT CALL DRAW0
               1590 *--------------------------------
F601- 86 1A    1600 DRAW0  STX HGR.SHAPE   SAVE SHAPE ADDRESS
F603- 84 1B    1610        STY HGR.SHAPE+1
               1620 *--------------------------------
               1630 *      APPLESOFT ENTERS HERE
               1640 *--------------------------------
F605- AA       1650 DRAW1  TAX          SAVE ROTATION (0-$3F)
F606- 4A       1660        LSR          DIVIDE ROTATION BY 16 TO GET
F607- 4A       1670        LSR          QUADRANT (0=UP, 1=RT, 2=DWN, 3=LFT)
F608- 4A       1680        LSR
F609- 4A       1690        LSR
F60A- 85 D3    1700        STA HGR.QUADRANT
F60C- 8A       1710        TXA          USE LOW 4 BITS OF ROTATION TO INDEX
F60D- 29 0F    1720        AND #$0F     THE TRIG TABLE
F60F- AA       1730        TAX
F610- BC BA F5 1740        LDY COSINE.TABLE,X  SAVE COSINE IN HGR.DX
F613- 84 D0    1750        STY HGR.DX
F615- 49 0F    1760        EOR #$F             AND SINE IN DY
F617- AA       1770        TAX
F618- BC BB F5 1780        LDY COSINE.TABLE+1,X
F61B- C8       1790        INY
F61C- 84 D2    1800        STY HGR.DY
F61E- A4 E5    1810        LDY HGR.HORIZ   INDEX FROM GBASL,H TO BYTE WE'RE IN
F620- A2 00    1820        LDX #0
F622- 86 EA    1830        STX HGR.COLLISIONS      CLEAR COLLISION COUNTER
F624- A1 1A    1840        LDA (HGR.SHAPE,X)    GET FIRST BYTE OF SHAPE DEFN
F626- 85 D1    1850 .1     STA HGR.DX+1      KEEP SHAPE BYTE IN HGR.DX+1
F628- A2 80    1860        LDX #$80     INITIAL VALUES FOR FRACTIONAL VECTORS
F62A- 86 D4    1870        STX HGR.E       .5 IN COSINE COMPONENT
F62C- 86 D5    1880        STX HGR.E+1       .5 IN SINE COMPONENT
F62E- A6 E7    1890        LDX HGR.SCALE   SCALE FACTOR
F630- A5 D4    1900 .2     LDA HGR.E       ADD COSINE VALUE TO X-VALUE
F632- 38       1910        SEC          IF >= 1, THEN DRAW
F633- 65 D0    1920        ADC HGR.DX
F635- 85 D4    1930        STA HGR.E       ONLY SAVE FRACTIONAL PART
F637- 90 04    1940        BCC .3       NO INTEGRAL PART
F639- 20 B3 F4 1950        JSR LRUD1    TIME TO PLOT COSINE COMPONENT
F63C- 18       1960        CLC
F63D- A5 D5    1970 .3     LDA HGR.E+1       ADD SINE VALUE TO Y-VALUE
F63F- 65 D2    1980        ADC HGR.DY       IF >= 1, THEN DRAW
F641- 85 D5    1990        STA HGR.E+1       ONLY SAVE FRACTIONAL PART
F643- 90 03    2000        BCC .4       NO INTEGRAL PART
F645- 20 B4 F4 2010        JSR LRUD2    TIME TO PLOT SINE COMPONENT
F648- CA       2020 .4     DEX          LOOP ON SCALE FACTOR.
F649- D0 E5    2030        BNE .2       STILL ON SAME SHAPE ITEM
F64B- A5 D1    2040        LDA HGR.DX+1      GET NEXT SHAPE ITEM
F64D- 4A       2050        LSR          NEXT 3 BIT VECTOR
F64E- 4A       2060        LSR
F64F- 4A       2070        LSR
F650- D0 D4    2080        BNE .1       MORE IN THIS SHAPE BYTE
F652- E6 1A    2090        INC HGR.SHAPE   GO TO NEXT SHAPE BYTE
F654- D0 02    2100        BNE .5
F656- E6 1B    2110        INC HGR.SHAPE+1
F658- A1 1A    2120 .5     LDA (HGR.SHAPE,X)  NEXT BYTE OF SHAPE DEFINITION
F65A- D0 CA    2130        BNE .1          PROCESS IF NOT ZERO
F65C- 60       2140        RTS             FINISHED
               2150 *--------------------------------
               2160 *      XDRAW A SHAPE (SAME AS DRAW, EXCEPT TOGGLES SCREEN)
               2170 *
               2180 *      (Y,X) = SHAPE STARTING ADDRESS
               2190 *      (A)   = ROTATION (0-3F)
               2200 *--------------------------------
               2210 *      APPLESOFT DOES NOT CALL XDRAW0
               2220 *--------------------------------
F65D- 86 1A    2230 XDRAW0 STX HGR.SHAPE   SAVE SHAPE ADDRESS
F65F- 84 1B    2240        STY HGR.SHAPE+1
               2250 *--------------------------------
               2260 *      APPLESOFT ENTERS HERE
               2270 *--------------------------------
F661- AA       2280 XDRAW1 TAX          SAVE ROTATION (0-$3F)
F662- 4A       2290        LSR          DIVIDE ROTATION BY 16 TO GET
F663- 4A       2300        LSR          QUADRANT (0=UP, 1=RT, 2=DWN, 3=LFT)
F664- 4A       2310        LSR
F665- 4A       2320        LSR
F666- 85 D3    2330        STA HGR.QUADRANT
F668- 8A       2340        TXA          USE LOW 4 BITS OF ROTATION TO INDEX
F669- 29 0F    2350        AND #$0F     THE TRIG TABLE
F66B- AA       2360        TAX
F66C- BC BA F5 2370        LDY COSINE.TABLE,X  SAVE COSINE IN HGR.DX
F66F- 84 D0    2380        STY HGR.DX
F671- 49 0F    2390        EOR #$F             AND SINE IN DY
F673- AA       2400        TAX
F674- BC BB F5 2410        LDY COSINE.TABLE+1,X
F677- C8       2420        INY
F678- 84 D2    2430        STY HGR.DY
F67A- A4 E5    2440        LDY HGR.HORIZ   INDEX FROM GBASL,H TO BYTE WE'RE IN
F67C- A2 00    2450        LDX #0
F67E- 86 EA    2460        STX HGR.COLLISIONS      CLEAR COLLISION COUNTER
F680- A1 1A    2470        LDA (HGR.SHAPE,X)    GET FIRST BYTE OF SHAPE DEFN
F682- 85 D1    2480 .1     STA HGR.DX+1      KEEP SHAPE BYTE IN HGR.DX+1
F684- A2 80    2490        LDX #$80     INITIAL VALUES FOR FRACTIONAL VECTORS
F686- 86 D4    2500        STX HGR.E       .5 IN COSINE COMPONENT
F688- 86 D5    2510        STX HGR.E+1       .5 IN SINE COMPONENT
F68A- A6 E7    2520        LDX HGR.SCALE   SCALE FACTOR
F68C- A5 D4    2530 .2     LDA HGR.E       ADD COSINE VALUE TO X-VALUE
F68E- 38       2540        SEC          IF >= 1, THEN DRAW
F68F- 65 D0    2550        ADC HGR.DX
F691- 85 D4    2560        STA HGR.E       ONLY SAVE FRACTIONAL PART
F693- 90 04    2570        BCC .3       NO INTEGRAL PART
F695- 20 9C F4 2580        JSR LRUDX1   TIME TO PLOT COSINE COMPONENT
F698- 18       2590        CLC
F699- A5 D5    2600 .3     LDA HGR.E+1       ADD SINE VALUE TO Y-VALUE
F69B- 65 D2    2610        ADC HGR.DY       IF >= 1, THEN DRAW
F69D- 85 D5    2620        STA HGR.E+1       ONLY SAVE FRACTIONAL PART
F69F- 90 03    2630        BCC .4       NO INTEGRAL PART
F6A1- 20 9D F4 2640        JSR LRUDX2   TIME TO PLOT SINE COMPONENT
F6A4- CA       2650 .4     DEX          LOOP ON SCALE FACTOR.
F6A5- D0 E5    2660        BNE .2       STILL ON SAME SHAPE ITEM
F6A7- A5 D1    2670        LDA HGR.DX+1      GET NEXT SHAPE ITEM
F6A9- 4A       2680        LSR          NEXT 3 BIT VECTOR
F6AA- 4A       2690        LSR
F6AB- 4A       2700        LSR
F6AC- D0 D4    2710        BNE .1       MORE IN THIS SHAPE BYTE
F6AE- E6 1A    2720        INC HGR.SHAPE   GO TO NEXT SHAPE BYTE
F6B0- D0 02    2730        BNE .5
F6B2- E6 1B    2740        INC HGR.SHAPE+1
F6B4- A1 1A    2750 .5     LDA (HGR.SHAPE,X)  NEXT BYTE OF SHAPE DEFINITION
F6B6- D0 CA    2760        BNE .1          PROCESS IF NOT ZERO
F6B8- 60       2770        RTS             FINISHED
               2780 *--------------------------------
               2790 *      GET HI-RES PLOTTING COORDINATES (0-279,0-191) FROM
               2800 *      TXTPTR.  LEAVE REGISTERS SET UP FOR HPOSN:
               2810 *          (Y,X)=X-COORD
               2820 *          (A)  =Y-COORD
               2830 *--------------------------------
F6B9- 20 67 DD 2840 HFNS   JSR FRMNUM   EVALUATE EXPRESSION, MUST BE NUMERIC
F6BC- 20 52 E7 2850        JSR GETADR   CONVERT TO 2-BYTE INTEGER IN LINNUM
F6BF- A4 51    2860        LDY LINNUM+1  GET HORIZ COOR IN X,Y
F6C1- A6 50    2870        LDX LINNUM
F6C3- C0 01    2880        CPY /280     MAKE SURE IT IS < 280
F6C5- 90 06    2890        BCC .1       IN RANGE
F6C7- D0 1D    2900        BNE GGERR
F6C9- E0 18    2910        CPX #280
F6CB- B0 19    2920        BCS GGERR
F6CD- 8A       2930 .1     TXA          SAVE HORIZ COOR ON STACK
F6CE- 48       2940        PHA
F6CF- 98       2950        TYA
F6D0- 48       2960        PHA
F6D1- A9 2C    2970        LDA #','     REQUIRE A COMMA
F6D3- 20 C0 DE 2980        JSR SYNCHR
F6D6- 20 F8 E6 2990        JSR GETBYT   EVAL EXP TO SINGLE BYTE IN X-REG
F6D9- E0 C0    3000        CPX #192     CHECK FOR RANGE
F6DB- B0 09    3010        BCS GGERR    TOO BIG
F6DD- 86 9D    3020        STX FAC      SAVE Y-COORD
F6DF- 68       3030        PLA          RETRIEVE HORIZONTAL COORDINATE
F6E0- A8       3040        TAY
F6E1- 68       3050        PLA
F6E2- AA       3060        TAX
F6E3- A5 9D    3070        LDA FAC      AND VERTICAL COORDINATE
F6E5- 60       3080        RTS
               3090 *--------------------------------
F6E6- 4C 06 F2 3100 GGERR  JMP GOERR    ILLEGAL QUANTITY ERROR
               3110 *--------------------------------
               3120 *      "HCOLOR=" STATEMENT
               3130 *--------------------------------
F6E9- 20 F8 E6 3140 HCOLOR JSR GETBYT   EVAL EXP TO SINGLE BYTE IN X
F6EC- E0 08    3150        CPX #8       VALUE MUST BE 0-7
F6EE- B0 F6    3160        BCS GGERR    TOO BIG
F6F0- BD F6 F6 3170        LDA COLORTBL,X    GET COLOR PATTERN
F6F3- 85 E4    3180        STA HGR.COLOR
F6F5- 60       3190 RTS.23 RTS
               3200 *--------------------------------
F6F6- 00 2A 55
F6F9- 7F 80 AA
F6FC- D5 FF    3210 COLORTBL .HS 002A557F80AAD5FF
               3220 *--------------------------------
               3230 *      "HPLOT" STATEMENT
               3240 *
               3250 *      HPLOT X,Y
               3260 *      HPLOT TO X,Y
               3270 *      HPLOT X1,Y1 TO X2,Y2
               3280 *--------------------------------
F6FE- C9 C1    3290 HPLOT  CMP #TOKEN.TO     "PLOT TO" FORM?
F700- F0 0D    3300        BEQ .2            YES, START FROM CURRENT LOCATION
F702- 20 B9 F6 3310        JSR HFNS          NO, GET STARTING POINT OF LINE
F705- 20 57 F4 3320        JSR HPLOT0   PLOT THE POINT, AND SET UP FOR
               3330 *                   DRAWING A LINE FROM THAT POINT
F708- 20 B7 00 3340 .1     JSR CHRGOT   CHARACTER AT END OF EXPRESSION
F70B- C9 C1    3350        CMP #TOKEN.TO     IS A LINE SPECIFIED?
F70D- D0 E6    3360        BNE RTS.23        NO, EXIT
F70F- 20 C0 DE 3370 .2     JSR SYNCHR        YES. ADV. TXTPTR (WHY NOT CHRGET)
F712- 20 B9 F6 3380        JSR HFNS     GET COORDINATES OF LINE END
F715- 84 9D    3390        STY DSCTMP   SET UP FOR LINE
F717- A8       3400        TAY
F718- 8A       3410        TXA
F719- A6 9D    3420        LDX DSCTMP
F71B- 20 3A F5 3430        JSR HGLIN    PLOT LINE
F71E- 4C 08 F7 3440        JMP .1       LOOP TILL NO MORE "TO" PHRASES
               3450 *--------------------------------
               3460 *      "ROT=" STATEMENT
               3470 *--------------------------------
F721- 20 F8 E6 3480 ROT    JSR GETBYT   EVAL EXP TO A BYTE IN X-REG
F724- 86 F9    3490        STX HGR.ROTATION
F726- 60       3500        RTS
               3510 *--------------------------------
               3520 *      "SCALE=" STATEMENT
               3530 *--------------------------------
F727- 20 F8 E6 3540 SCALE  JSR GETBYT   EVAL EXP TO A BYTE IN X-REG
F72A- 86 E7    3550        STX HGR.SCALE
F72C- 60       3560        RTS
               3570 *--------------------------------
               3580 *      SET UP FOR DRAW AND XDRAW
               3590 *--------------------------------
F72D- 20 F8 E6 3600 DRWPNT JSR GETBYT   GET SHAPE NUMBER IN X-REG
F730- A5 E8    3610        LDA HGR.SHAPE.PNTR SEARCH FOR THAT SHAPE
F732- 85 1A    3620        STA HGR.SHAPE   SET UP PNTR TO BEGINNING OF TABLE
F734- A5 E9    3630        LDA HGR.SHAPE.PNTR+1
F736- 85 1B    3640        STA HGR.SHAPE+1
F738- 8A       3650        TXA
F739- A2 00    3660        LDX #0
F73B- C1 1A    3670        CMP (HGR.SHAPE,X)  COMPARE TO # OF SHAPES IN TABLE
F73D- F0 02    3680        BEQ .1       LAST SHAPE IN TABLE
F73F- B0 A5    3690        BCS GGERR    SHAPE # TOO LARGE
F741- 0A       3700 .1     ASL          DOUBLE SHAPE# TO MAKE AN INDEX
F742- 90 03    3710        BCC .2          ADD 256 IF SHAPE # > 127
F744- E6 1B    3720        INC HGR.SHAPE+1
F746- 18       3730        CLC
F747- A8       3740 .2     TAY          USE INDEX TO LOOK UP OFFSET FOR SHAPE
F748- B1 1A    3750        LDA (HGR.SHAPE),Y    IN OFFSET TABLE
F74A- 65 1A    3760        ADC HGR.SHAPE
F74C- AA       3770        TAX
F74D- C8       3780        INY
F74E- B1 1A    3790        LDA (HGR.SHAPE),Y
F750- 65 E9    3800        ADC HGR.SHAPE.PNTR+1
F752- 85 1B    3810        STA HGR.SHAPE+1   SAVE ADDRESS OF SHAPE
F754- 86 1A    3820        STX HGR.SHAPE
F756- 20 B7 00 3830        JSR CHRGOT   IS THERE ANY "AT" PHRASE?
F759- C9 C5    3840        CMP #TOKEN.AT
F75B- D0 09    3850        BNE .3       NO, DRAW RIGHT WHERE WE ARE
F75D- 20 C0 DE 3860        JSR SYNCHR   SCAN OVER "AT"
F760- 20 B9 F6 3870        JSR HFNS     GET X- AND Y-COORDS TO START DRAWING AT
F763- 20 11 F4 3880        JSR HPOSN    SET UP CURSOR THERE
F766- A5 F9    3890 .3     LDA HGR.ROTATION     ROTATION VALUE
F768- 60       3900        RTS
               3910 *--------------------------------
               3920 *      "DRAW" STATEMENT
               3930 *--------------------------------
F769- 20 2D F7 3940 DRAW   JSR DRWPNT
F76C- 4C 05 F6 3950        JMP DRAW1
               3960 *--------------------------------
               3970 *      "XDRAW" STATEMENT
               3980 *--------------------------------
F76F- 20 2D F7 3990 XDRAW  JSR DRWPNT
F772- 4C 61 F6 4000        JMP XDRAW1
               4010 *--------------------------------
               4020 *      "SHLOAD" STATEMENT
               4030 *
               4040 *      READS A SHAPE TABLE FROM CASSETTE TAPE
               4050 *      TO A POSITION JUST BELOW HIMEM.
               4060 *      HIMEM IS THEN MOVED TO JUST BELOW THE TABLE
               4070 *--------------------------------
F775- A9 00    4080 SHLOAD LDA /LINNUM  SET UP TO READ TWO BYTES
F777- 85 3D    4090        STA MON.A1H  INTO LINNUM,LINNUM+1
F779- 85 3F    4100        STA MON.A2H
F77B- A0 50    4110        LDY #LINNUM
F77D- 84 3C    4120        STY MON.A1L
F77F- C8       4130        INY          LINNUM+1
F780- 84 3E    4140        STY MON.A2L
F782- 20 FD FE 4150        JSR MON.READ READ TAPE
F785- 18       4160        CLC          SETUP TO READ (LINNUM) BYTES
F786- A5 73    4170        LDA MEMSIZ   ENDING AT HIMEM-1
F788- AA       4180        TAX
F789- CA       4190        DEX          FORMING HIMEM-1
F78A- 86 3E    4200        STX MON.A2L
F78C- E5 50    4210        SBC LINNUM   FORMING HIMEM-(LINNUM)
F78E- 48       4220        PHA
F78F- A5 74    4230        LDA MEMSIZ+1
F791- A8       4240        TAY
F792- E8       4250        INX          SEE IF HIMEM LOW-BYTE WAS ZERO
F793- D0 01    4260        BNE .1       NO
F795- 88       4270        DEY          YES, HAVE TO DECREMENT HIGH BYTE
F796- 84 3F    4280 .1     STY MON.A2H
F798- E5 51    4290        SBC LINNUM+1
F79A- C5 6E    4300        CMP STREND+1 RUNNING INTO VARIABLES?
F79C- 90 02    4310        BCC .2       YES, OUT OF MEMORY
F79E- D0 03    4320        BNE .3       NO, STILL ROOM
F7A0- 4C 10 D4 4330 .2     JMP MEMERR   MEM FULL ERR
F7A3- 85 74    4340 .3     STA MEMSIZ+1
F7A5- 85 70    4350        STA FRETOP+1 CLEAR STRING SPACE
F7A7- 85 3D    4360        STA MON.A1H  (BUT NAMES ARE STILL IN VARTBL!)
F7A9- 85 E9    4370        STA HGR.SHAPE.PNTR+1
F7AB- 68       4380        PLA
F7AC- 85 E8    4390        STA HGR.SHAPE.PNTR
F7AE- 85 73    4400        STA MEMSIZ
F7B0- 85 6F    4410        STA FRETOP
F7B2- 85 3C    4420        STA MON.A1L
F7B4- 20 FA FC 4430        JSR MON.RD2BIT   READ TO TAPE TRANSITIONS
F7B7- A9 03    4440        LDA #3       SHORT DELAY FOR INTERMEDIATE HEADER
F7B9- 4C 02 FF 4450        JMP MON.READ2    READ SHAPES
               4460 *--------------------------------
               4470 *      CALLED FROM STORE AND RECALL
               4480 *--------------------------------
               4490 TAPEPNT
F7BC- 18       4500        CLC
F7BD- A5 9B    4510        LDA LOWTR
F7BF- 65 50    4520        ADC LINNUM
F7C1- 85 3E    4530        STA MON.A2L
F7C3- A5 9C    4540        LDA LOWTR+1
F7C5- 65 51    4550        ADC LINNUM+1
F7C7- 85 3F    4560        STA MON.A2H
F7C9- A0 04    4570        LDY #4
F7CB- B1 9B    4580        LDA (LOWTR),Y
F7CD- 20 EF E0 4590        JSR GETARY2
F7D0- A5 94    4600        LDA HIGHDS
F7D2- 85 3C    4610        STA MON.A1L
F7D4- A5 95    4620        LDA HIGHDS+1
F7D6- 85 3D    4630        STA MON.A1H
F7D8- 60       4640        RTS
               4650 *--------------------------------
               4660 *      CALLED FROM STORE AND RECALL
               4670 *--------------------------------
               4680 GETARYPT
F7D9- A9 40    4681        LDA #$40
F7DB- 85 14    4690        STA SUBFLG
F7DD- 20 E3 DF 4700        JSR PTRGET
F7E0- A9 00    4710        LDA #0
F7E2- 85 14    4720        STA SUBFLG
F7E4- 4C F0 D8 4730        JMP VARTIO
               4740 *--------------------------------
               4750 *      "HTAB" STATEMENT
               4760 *
               4770 *      NOTE THAT IF WNDLEFT IS NOT 0, HTAB CAN PRINT
               4780 *      OUTSIDE THE SCREEN (EG., IN THE PROGRAM)
               4790 *--------------------------------
F7E7- 20 F8 E6 4800 HTAB   JSR GETBYT
F7EA- CA       4810        DEX
F7EB- 8A       4820        TXA
F7EC- C9 28    4830 .1     CMP #40
F7EE- 90 0A    4840        BCC .2
F7F0- E9 28    4850        SBC #40
F7F2- 48       4860        PHA
F7F3- 20 FB DA 4870        JSR CRDO
F7F6- 68       4880        PLA
F7F7- 4C EC F7 4890        JMP .1
F7FA- 85 24    4900 .2     STA MON.CH
F7FC- 60       4910        RTS
               4920 *--------------------------------
F7FD- CB D2 D7 4930        .AS -/KRW/   SOMEONE'S INITIALS?