S-C DocuMentor — Applesoft

               SAVE S.E1B8
               1010 *--------------------------------
               1020 *      CREATE A NEW ARRAY, UNLESS CALLED FROM GETARYPT
               1030 *--------------------------------
               1040 MAKE.NEW.ARRAY
E1B8- A5 14    1050        LDA SUBFLG   CALLED FROM GETARYPT?
E1BA- F0 05    1060        BEQ .1       NO
E1BC- A2 2A    1070        LDX #ERR.NODATA   YES, GIVE "OUT OF DATA" ERROR
E1BE- 4C 12 D4 1080        JMP ERROR
E1C1- 20 ED E0 1090 .1     JSR GETARY   PUT ADDR OF 1ST ELEMENT IN ARYPNT
E1C4- 20 E3 D3 1100        JSR REASON   MAKE SURE ENOUGH MEMORY LEFT
               1110 *--------------------------------
               1120 *      <<< NEXT 3 LINES COULD BE WRITTEN:   >>>
               1130 *      LDY #0
               1140 *      STY STRNG2+1
               1150 *--------------------------------
E1C7- A9 00    1160        LDA #0       POINT Y-REG AT VARIABLE NAME SLOT
E1C9- A8       1170        TAY
E1CA- 85 AE    1180        STA STRNG2+1 START SIZE COMPUTATION
E1CC- A2 05    1190        LDX #5       ASSUME 5-BYTES PER ELEMENT
E1CE- A5 81    1200        LDA VARNAM   STUFF VARIABLE NAME IN ARRAY
E1D0- 91 9B    1210        STA (LOWTR),Y
E1D2- 10 01    1220        BPL .2       NOT INTEGER ARRAY
E1D4- CA       1230        DEX          INTEGER ARRAY, DECR. SIZE TO 4-BYTES
E1D5- C8       1240 .2     INY          POINT Y-REG AT NEXT CHAR OF NAME
E1D6- A5 82    1250        LDA VARNAM+1 REST OF ARRAY NAME
E1D8- 91 9B    1260        STA (LOWTR),Y
E1DA- 10 02    1270        BPL .3       REAL ARRAY, STICK WITH SIZE = 5 BYTES
E1DC- CA       1280        DEX          INTEGER OR STRING ARRAY, ADJUST SIZE
E1DD- CA       1290        DEX          TO INTEGER=3, STRING=2 BYTES
E1DE- 86 AD    1300 .3     STX STRNG2   STORE LOW-BYTE OF ARRAY ELEMENT SIZE
E1E0- A5 0F    1310        LDA NUMDIM   STORE NUMBER OF DIMENSIONS 
E1E2- C8       1320        INY          IN 5TH BYTE OF ARRAY
E1E3- C8       1330        INY
E1E4- C8       1340        INY
E1E5- 91 9B    1350        STA (LOWTR),Y
E1E7- A2 0B    1360 .4     LDX #11      DEFAULT DIMENSION = 11 ELEMENTS
E1E9- A9 00    1370        LDA #0       FOR HI-BYTE OF DIMENSION IF DEFAULT
E1EB- 24 10    1380        BIT DIMFLG   DIMENSIONED ARRAY?
E1ED- 50 08    1390        BVC .5       NO, USE DEFAULT VALUE
E1EF- 68       1400        PLA          GET SPECIFIED DIM IN A,X
E1F0- 18       1410        CLC          # ELEMENTS IS 1 LARGER THAN
E1F1- 69 01    1420        ADC #1       DIMENSION VALUE
E1F3- AA       1430        TAX
E1F4- 68       1440        PLA
E1F5- 69 00    1450        ADC #0
E1F7- C8       1460 .5     INY          ADD THIS DIMENSION TO ARRAY DESCRIPTOR
E1F8- 91 9B    1470        STA (LOWTR),Y
E1FA- C8       1480        INY
E1FB- 8A       1490        TXA
E1FC- 91 9B    1500        STA (LOWTR),Y
E1FE- 20 AD E2 1510        JSR MULTIPLY.SUBSCRIPT     MULTIPLY THIS
               1520 *                   DIMENSION BY RUNNING SIZE
               1530 *                   ((LOWTR)) * (STRNG2) --> A,X
E201- 86 AD    1540        STX STRNG2   STORE RUNNING SIZE IN STRNG2
E203- 85 AE    1550        STA STRNG2+1
E205- A4 5E    1560        LDY INDEX    RETRIEVE Y SAVED BY MULTIPLY.SUBSCRIPT
E207- C6 0F    1570        DEC NUMDIM   COUNT DOWN # DIMS
E209- D0 DC    1580        BNE .4       LOOP TILL DONE
               1590 *--------------------------------
               1600 *      NOW A,X HAS TOTAL # BYTES OF ARRAY ELEMENTS
               1610 *--------------------------------
E20B- 65 95    1620        ADC ARYPNT+1 COMPUTE ADDRESS OF END OF THIS ARRAY
E20D- B0 5D    1630        BCS GME      ...TOO LARGE, ERROR
E20F- 85 95    1640        STA ARYPNT+1
E211- A8       1650        TAY
E212- 8A       1660        TXA
E213- 65 94    1670        ADC ARYPNT
E215- 90 03    1680        BCC .6
E217- C8       1690        INY
E218- F0 52    1700        BEQ GME      ...TOO LARGE, ERROR
E21A- 20 E3 D3 1710 .6     JSR REASON   MAKE SURE THERE IS ROOM UP TO Y,A
E21D- 85 6D    1720        STA STREND   THERE IS ROOM SO SAVE NEW END OF TABLE
E21F- 84 6E    1730        STY STREND+1      AND ZERO THE ARRAY
E221- A9 00    1740        LDA #0
E223- E6 AE    1750        INC STRNG2+1 PREPARE FOR FAST ZEROING LOOP
E225- A4 AD    1760        LDY STRNG2   # BYTES MOD 256
E227- F0 05    1770        BEQ .8       FULL PAGE
E229- 88       1780 .7     DEY          CLEAR PAGE FULL
E22A- 91 94    1790        STA (ARYPNT),Y
E22C- D0 FB    1800        BNE .7
E22E- C6 95    1810 .8     DEC ARYPNT+1 POINT TO NEXT PAGE
E230- C6 AE    1820        DEC STRNG2+1 COUNT THE PAGES
E232- D0 F5    1830        BNE .7       STILL MORE TO CLEAR
E234- E6 95    1840        INC ARYPNT+1 RECOVER LAST DEC, POINT AT 1ST ELEMENT
E236- 38       1850        SEC
E237- A5 6D    1860        LDA STREND   COMPUTE OFFSET TO END OF ARRAYS
E239- E5 9B    1870        SBC LOWTR    AND STORE IN ARRAY DESCRIPTOR
E23B- A0 02    1880        LDY #2
E23D- 91 9B    1890        STA (LOWTR),Y
E23F- A5 6E    1900        LDA STREND+1
E241- C8       1910        INY
E242- E5 9C    1920        SBC LOWTR+1
E244- 91 9B    1930        STA (LOWTR),Y
E246- A5 10    1940        LDA DIMFLG   WAS THIS CALLED FROM "DIM" STATEMENT?
E248- D0 62    1950        BNE RTS.9    YES, WE ARE FINISHED
E24A- C8       1960        INY          NO, NOW NEED TO FIND THE ELEMENT
               1970 *--------------------------------
               1980 *      FIND SPECIFIED ARRAY ELEMENT
               1990 *
               2000 *      (LOWTR),Y POINTS AT # OF DIMS IN ARRAY DESCRIPTOR
               2010 *      THE SUBSCRIPTS ARE ALL ON THE STACK AS INTEGERS
               2020 *--------------------------------
               2030 FIND.ARRAY.ELEMENT
E24B- B1 9B    2040        LDA (LOWTR),Y     GET # OF DIMENSIONS
E24D- 85 0F    2050        STA NUMDIM
E24F- A9 00    2060        LDA #0       ZERO SUBSCRIPT ACCUMULATOR
E251- 85 AD    2070        STA STRNG2
E253- 85 AE    2080 FAE.1  STA STRNG2+1
E255- C8       2090        INY
E256- 68       2100        PLA          PULL NEXT SUBSCRIPT FROM STACK
E257- AA       2110        TAX          SAVE IN FAC+3,4
E258- 85 A0    2120        STA FAC+3    AND COMPARE WITH DIMENSIONED SIZE
E25A- 68       2130        PLA
E25B- 85 A1    2140        STA FAC+4
E25D- D1 9B    2150        CMP (LOWTR),Y
E25F- 90 0E    2160        BCC FAE.2    SUBSCRIPT NOT TOO LARGE
E261- D0 06    2170        BNE GSE      SUBSCRIPT IS TOO LARGE
E263- C8       2180        INY          CHECK LOW-BYTE OF SUBSCRIPT
E264- 8A       2190        TXA
E265- D1 9B    2200        CMP (LOWTR),Y
E267- 90 07    2210        BCC FAE.3    NOT TOO LARGE
               2220 *--------------------------------
E269- 4C 96 E1 2230 GSE    JMP SUBERR   BAD SUBSCRIPTS ERROR
E26C- 4C 10 D4 2240 GME    JMP MEMERR   MEM FULL ERROR
               2250 *--------------------------------
E26F- C8       2260 FAE.2  INY          BUMP POINTER INTO DESCRIPTOR
E270- A5 AE    2270 FAE.3  LDA STRNG2+1 BYPASS MULTIPLICATION IF VALUE SO
E272- 05 AD    2280        ORA STRNG2   FAR = 0
E274- 18       2290        CLC
E275- F0 0A    2300        BEQ .1       IT IS ZERO SO FAR
E277- 20 AD E2 2310        JSR MULTIPLY.SUBSCRIPT     NOT ZERO, SO MULTIPLY
E27A- 8A       2320        TXA          ADD CURRENT SUBSCRIPT
E27B- 65 A0    2330        ADC FAC+3
E27D- AA       2340        TAX
E27E- 98       2350        TYA
E27F- A4 5E    2360        LDY INDEX    RETRIEVE Y SAVED BY MULTIPLY.SUBSCRIPT
E281- 65 A1    2370 .1     ADC FAC+4    FINISH ADDING CURRENT SUBSCRIPT
E283- 86 AD    2380        STX STRNG2   STORE ACCUMULATED OFFSET
E285- C6 0F    2390        DEC NUMDIM   LAST SUBSCRIPT YET?
E287- D0 CA    2400        BNE FAE.1    NO, LOOP TILL DONE
E289- 85 AE    2410        STA STRNG2+1 YES, NOW MULTIPLY BE ELEMENT SIZE
E28B- A2 05    2420        LDX #5       START WITH SIZE = 5
E28D- A5 81    2430        LDA VARNAM   DETERMINE VARIABLE TYPE
E28F- 10 01    2440        BPL .2       NOT INTEGER
E291- CA       2450        DEX          INTEGER, BACK DOWN SIZE TO 4 BYTES
E292- A5 82    2460 .2     LDA VARNAM+1 DISCRIMINATE BETWEEN REAL AND STR
E294- 10 02    2470        BPL .3       IT IS REAL
E296- CA       2480        DEX          SIZE = 3 IF STRING, =2 IF INTEGER
E297- CA       2490        DEX
E298- 86 64    2500 .3     STX RESULT+2 SET UP MULTIPLIER
E29A- A9 00    2510        LDA #0       HI-BYTE OF MULTIPLIER
E29C- 20 B6 E2 2520        JSR MULTIPLY.SUBS.1   (STRNG2) BY ELEMENT SIZE
E29F- 8A       2530        TXA          ADD ACCUMULATED OFFSET
E2A0- 65 94    2540        ADC ARYPNT   TO ADDRESS OF 1ST ELEMENT
E2A2- 85 83    2550        STA VARPNT   TO GET ADDRESS OF SPECIFIED ELEMENT
E2A4- 98       2560        TYA
E2A5- 65 95    2570        ADC ARYPNT+1
E2A7- 85 84    2580        STA VARPNT+1
E2A9- A8       2590        TAY          RETURN WITH ADDR IN VARPNT
E2AA- A5 83    2600        LDA VARPNT        AND IN Y,A
E2AC- 60       2610 RTS.9  RTS
               2620 *--------------------------------
               2630 *      MULTIPLY (STRNG2) BY ((LOWTR),Y)
               2640 *      LEAVING PRODUCT IN A,X.  (HI-BYTE ALSO IN Y.)
               2650 *      USED ONLY BY ARRAY SUBSCRIPT ROUTINES
               2660 *--------------------------------
E2AD- 84 5E    2670 MULTIPLY.SUBSCRIPT   STY INDEX    SAVE Y-REG
E2AF- B1 9B    2680        LDA (LOWTR),Y     GET MULTIPLIER
E2B1- 85 64    2690        STA RESULT+2      SAVE IN RESULT+2,3
E2B3- 88       2700        DEY
E2B4- B1 9B    2710        LDA (LOWTR),Y
               2720 *--------------------------------
               2730 MULTIPLY.SUBS.1
E2B6- 85 65    2740        STA RESULT+3      LOW BYTE OF MULTIPLIER
E2B8- A9 10    2750        LDA #16      MULTIPLY 16 BITS
E2BA- 85 99    2760        STA INDX
E2BC- A2 00    2770        LDX #0       PRODUCT = 0 INITIALLY
E2BE- A0 00    2780        LDY #0
E2C0- 8A       2790 .1     TXA          DOUBLE PRODUCT
E2C1- 0A       2800        ASL          LOW BYTE
E2C2- AA       2810        TAX
E2C3- 98       2820        TYA          HIGH BYTE
E2C4- 2A       2830        ROL          IF TOO LARGE, SET CARRY
E2C5- A8       2840        TAY
E2C6- B0 A4    2850        BCS GME      TOO LARGE, "MEM FULL ERROR"
E2C8- 06 AD    2860        ASL STRNG2   NEXT BIT OF MUTLPLICAND
E2CA- 26 AE    2870        ROL STRNG2+1      INTO CARRY
E2CC- 90 0B    2880        BCC .2       BIT=0, DON'T NEED TO ADD
E2CE- 18       2890        CLC          BIT=1, ADD INTO PARTIAL PRODUCT
E2CF- 8A       2900        TXA
E2D0- 65 64    2910        ADC RESULT+2
E2D2- AA       2920        TAX
E2D3- 98       2930        TYA
E2D4- 65 65    2940        ADC RESULT+3
E2D6- A8       2950        TAY
E2D7- B0 93    2960        BCS GME      TOO LARGE, "MEM FULL ERROR"
E2D9- C6 99    2970 .2     DEC INDX     16-BITS YET?
E2DB- D0 E3    2980        BNE .1       NO, KEEP SHUFFLING
E2DD- 60       2990        RTS          YES, PRODUCT IN Y,X AND A,X
               3000 *--------------------------------
               3010 *      "FRE" FUNCTION
               3020 *
               3030 *      COLLECTS GARBAGE AND RETURNS # BYTES OF MEMORY LEFT
               3040 *--------------------------------
E2DE- A5 11    3050 FRE    LDA VALTYP   LOOK AT VALUE OF ARGUMENT
E2E0- F0 03    3060        BEQ .1       =0 MEANS REAL, =$FF MEANS STRING
E2E2- 20 00 E6 3070        JSR FREFAC   STRING, SO SET IT FREE IS TEMP
E2E5- 20 84 E4 3080 .1     JSR GARBAG   COLLECT ALL THE GARBAGE IN SIGHT
E2E8- 38       3090        SEC          COMPUTE SPACE BETWEEN ARRAYS AND
E2E9- A5 6F    3100        LDA FRETOP   STRING TEMP AREA
E2EB- E5 6D    3110        SBC STREND
E2ED- A8       3120        TAY
E2EE- A5 70    3130        LDA FRETOP+1
E2F0- E5 6E    3140        SBC STREND+1 FREE SPACE IN Y,A
               3150 *      FALL INTO GIVAYF TO FLOAT THE VALUE
               3160 *      NOTE THAT VALUES OVER 32767 WILL RETURN AS NEGATIVE
               3170 *--------------------------------
               3180 *      FLOAT THE SIGNED INTEGER IN A,Y
               3190 *--------------------------------
E2F2- A2 00    3200 GIVAYF LDX #0       MARK FAC VALUE TYPE REAL
E2F4- 86 11    3210        STX VALTYP
E2F6- 85 9E    3220        STA FAC+1    SAVE VALUE FROM A,Y IN MANTISSA
E2F8- 84 9F    3230        STY FAC+2
E2FA- A2 90    3240        LDX #$90     SET EXPONENT TO 2^16
E2FC- 4C 9B EB 3250        JMP FLOAT.1  CONVERT TO SIGNED FP
               3260 *--------------------------------
               3270 *      "POS" FUNCTION
               3280 *
               3290 *      RETURNS CURRENT LINE POSITION FROM MON.CH
               3300 *--------------------------------
E2FF- A4 24    3310 POS    LDY MON.CH   GET A,Y = (MON.CH, GO TO GIVAYF
               3320 *--------------------------------
               3330 *      FLOAT (Y) INTO FAC, GIVING VALUE 0-255
               3340 *--------------------------------
E301- A9 00    3350 SNGFLT LDA #0       MSB = 0
E303- 38       3360        SEC          <<< NO PURPOSE WHATSOEVER >>>
E304- F0 EC    3370        BEQ GIVAYF   ...ALWAYS
               3380 *--------------------------------
               3390 *      CHECK FOR DIRECT OR RUNNING MODE
               3400 *      GIVING ERROR IF DIRECT MODE
               3410 *--------------------------------
E306- A6 76    3420 ERRDIR LDX CURLIN+1 =$FF IF DIRECT MODE
E308- E8       3430        INX          MAKES $FF INTO ZERO
E309- D0 A1    3440        BNE RTS.9    RETURN IF RUNNING MODE
E30B- A2 95    3450        LDX #ERR.ILLDIR   DIRECT MODE, GIVE ERROR
E30D- 2C       3460        .HS 2C       TRICK TO SKIP NEXT 2 BYTES
               3470 *--------------------------------
E30E- A2 E0    3480 UNDFNC LDX #ERR.UNDEFFUNC  UNDEFINDED FUNCTION ERROR
E310- 4C 12 D4 3490        JMP ERROR
               3500 *--------------------------------
               3510 *      "DEF" STATEMENT
               3520 *--------------------------------
E313- 20 41 E3 3530 DEF    JSR FNC.     PARSE "FN", FUNCTION NAME
E316- 20 06 E3 3540        JSR ERRDIR   ERROR IF IN DIRECT MODE
E319- 20 BB DE 3550        JSR CHKOPN   NEED "("
E31C- A9 80    3560        LDA #$80     FLAG PTRGET THAT CALLED FROM "DEF FN"
E31E- 85 14    3570        STA SUBFLG   ALLOW ONLY SIMPLE FP VARIABLE FOR ARG
E320- 20 E3 DF 3580        JSR PTRGET   GET PNTR TO ARGUMENT
E323- 20 6A DD 3590        JSR CHKNUM   MUST BE NUMERIC
E326- 20 B8 DE 3600        JSR CHKCLS   MUST HAVE ")" NOW
E329- A9 D0    3610        LDA #TOKEN.EQUAL  NOW NEED "="
E32B- 20 C0 DE 3620        JSR SYNCHR   OR ELSE SYNTAX ERROR
E32E- 48       3630        PHA          SAVE CHAR AFTER "="
E32F- A5 84    3640        LDA VARPNT+1 SAVE PNTR TO ARGUMENT
E331- 48       3650        PHA
E332- A5 83    3660        LDA VARPNT
E334- 48       3670        PHA
E335- A5 B9    3680        LDA TXTPTR+1 SAVE TXTPTR
E337- 48       3690        PHA
E338- A5 B8    3700        LDA TXTPTR
E33A- 48       3710        PHA
E33B- 20 95 D9 3720        JSR DATA     SCAN TO NEXT STATEMENT
E33E- 4C AF E3 3730        JMP FNCDATA  STORE ABOVE 5 BYTES IN "VALUE"
               3740 *--------------------------------
               3750 *      COMMON ROUTINE FOR "DEFFN" AND "FN", TO
               3760 *      PARSE "FN" AND THE FUNCTION NAME
               3770 *--------------------------------
E341- A9 C2    3780 FNC.   LDA #TOKEN.FN     MUST NOW SEE "FN" TOKEN
E343- 20 C0 DE 3790        JSR SYNCHR        OR ELSE SYNTAX ERROR
E346- 09 80    3800        ORA #$80     SET SIGN BIT ON 1ST CHAR OF NAME,
E348- 85 14    3810        STA SUBFLG   MAKING $C0 < SUBFLG < $DB
E34A- 20 EA DF 3820        JSR PTRGET3  WHICH TELLS PTRGET WHO CALLED
E34D- 85 8A    3830        STA FNCNAM   FOUND VALID FUNCTION NAME, SO
E34F- 84 8B    3840        STY FNCNAM+1      SAVE ADDRESS
E351- 4C 6A DD 3850        JMP CHKNUM   MUST BE NUMERIC
               3860 *--------------------------------
               3870 *      "FN" FUNCTION CALL
               3880 *--------------------------------
E354- 20 41 E3 3890 FUNCT  JSR FNC.     PARSE "FN", FUNCTION NAME
E357- A5 8B    3900        LDA FNCNAM+1 STACK FUNCTION ADDRESS
E359- 48       3910        PHA               IN CASE OF A NESTED FN CALL
E35A- A5 8A    3920        LDA FNCNAM
E35C- 48       3930        PHA
E35D- 20 B2 DE 3940        JSR PARCHK   MUST NOW HAVE "(EXPRESSION)"
E360- 20 6A DD 3950        JSR CHKNUM   MUST BE NUMERIC EXPRESSION
E363- 68       3960        PLA          GET FUNCTION ADDRESS BACK
E364- 85 8A    3970        STA FNCNAM
E366- 68       3980        PLA
E367- 85 8B    3990        STA FNCNAM+1
E369- A0 02    4000        LDY #2       POINT AT ADD OF ARGUMENT VARIABLE
E36B- B1 8A    4010        LDA (FNCNAM),Y
E36D- 85 83    4020        STA VARPNT
E36F- AA       4030        TAX
E370- C8       4040        INY
E371- B1 8A    4050        LDA (FNCNAM),Y
E373- F0 99    4060        BEQ UNDFNC   UNDEFINED FUNCTION
E375- 85 84    4070        STA VARPNT+1
E377- C8       4080        INY          Y=4 NOW
E378- B1 83    4090 .1     LDA (VARPNT),Y  SAVE OLD VALUE OF ARGUMENT VARIABLE
E37A- 48       4100        PHA             ON STACK, IN CASE ALSO USED AS
E37B- 88       4110        DEY             A NORMAL VARIABLE!
E37C- 10 FA    4120        BPL .1
E37E- A4 84    4130        LDY VARPNT+1 (Y,X)= ADDRESS, STORE FAC IN VARIABLE
E380- 20 2B EB 4140        JSR STORE.FAC.AT.YX.ROUNDED
E383- A5 B9    4150        LDA TXTPTR+1 REMEMBER TXTPTR AFTER FN CALL
E385- 48       4160        PHA
E386- A5 B8    4170        LDA TXTPTR
E388- 48       4180        PHA
E389- B1 8A    4190        LDA (FNCNAM),Y  Y=0 FROM MOVMF
E38B- 85 B8    4200        STA TXTPTR      POINT TO FUNCTION DEF'N
E38D- C8       4210        INY
E38E- B1 8A    4220        LDA (FNCNAM),Y
E390- 85 B9    4230        STA TXTPTR+1
E392- A5 84    4240        LDA VARPNT+1 SAVE ADDRESS OF ARGUMENT VARIABLE
E394- 48       4250        PHA
E395- A5 83    4260        LDA VARPNT
E397- 48       4270        PHA
E398- 20 67 DD 4280        JSR FRMNUM   EVALUATE THE FUNCTION EXPRESSION
E39B- 68       4290        PLA          GET ADDRESS OF ARGUMENT VARIABLE
E39C- 85 8A    4300        STA FNCNAM        AND SAVE IT
E39E- 68       4310        PLA
E39F- 85 8B    4320        STA FNCNAM+1
E3A1- 20 B7 00 4330        JSR CHRGOT   MUST BE AT ":" OR EOL
E3A4- F0 03    4340        BEQ .2       WE ARE
E3A6- 4C C9 DE 4350        JMP SYNERR   WE ARE NOT, SLYNTAX ERROR
E3A9- 68       4360 .2     PLA          RETRIEVE TXTPTR AFTER "FN" CALL
E3AA- 85 B8    4370        STA TXTPTR
E3AC- 68       4380        PLA
E3AD- 85 B9    4390        STA TXTPTR+1
               4400 *                   STACK NOW HAS 5-BYTE VALUE
               4410 *                   OF THE ARGUMENT VARIABLE,
               4420 *                   AND FNCNAM POINTS AT THE VARIABLE
               4430 *--------------------------------
               4440 *      STORE FIVE BYTES FROM STACK AT (FNCNAM)
               4450 *--------------------------------
               4460 FNCDATA
E3AF- A0 00    4470        LDY #0
E3B1- 68       4480        PLA
E3B2- 91 8A    4490        STA (FNCNAM),Y
E3B4- 68       4500        PLA
E3B5- C8       4510        INY
E3B6- 91 8A    4520        STA (FNCNAM),Y
E3B8- 68       4530        PLA
E3B9- C8       4540        INY
E3BA- 91 8A    4550        STA (FNCNAM),Y
E3BC- 68       4560        PLA
E3BD- C8       4570        INY
E3BE- 91 8A    4580        STA (FNCNAM),Y
E3C0- 68       4590        PLA
E3C1- C8       4600        INY
E3C2- 91 8A    4610        STA (FNCNAM),Y
E3C4- 60       4620        RTS