Blame | Last modification | View Log | Download | RSS feed
Tue Jul 17 11:00:23 2018 Page 1
2500 A.D. 65816 Macro Assembler #26960 - Version 5.02g
-----------------------------------------------------
Input Filename : src\FE\pcode.asm
Output Filename : obj\FE\pcode.obj
Listing Has Been Relocated
2598 .LIST on
2599
2600 ;.INCLUDE inc\dirp01.inc
2601 F8FFB1 .INCLUDE inc\dpcbm.inc
2602 ;; cbm emulation
2603
2604 ;;CBMP0 .EQU $7F00
2605
2606 ; sezione COMMON -- questo permette di includere il file in piu' file
2607
2608 DPCBM: .SECTION page0, ref_only, common
2609
2610 000000 .ABSOLUTE ;; inizia sempre da $00
2611 000000 .ORG 0x00
2612
2613 ;;MAXLF .EQU $10 ; max. logical files
2614 00000B MAXLF .EQU 11 ; max. logical files
2615 000008 MAXVIEC .EQU 8 ; max. virtual iec device #
2616 000000 .DS 16
2617 000010
2618 000010 00 subflg .DB ; ($10)
2619 000011 00 .DB ; ($11)
2620 000012 00 .DB ; ($12)
2621 000013 00 .DB ; ($13)
2622 000014 0000 lineno .DW ; ($14-$15) line number used by editor
2623 000016 00 tmppt .DB ; ($16)
2624 000017 00 tcnt .DB ; ($17) temp. counter/index
2625 000018 0000 .DW ; ($18-$19)
2626 00001A 0000 .DW ; ($1A-$1B)
2627 00001C 0000 .DW ; ($1C-$1D)
2628 00001E 0000 .DW ; ($1E-$1F)
2629 000020 00 .DB ; ($20)
2630
2631 ; basic/p-code virtual machine work area
2632 000021 0000 .DW ; ($21-$22)
2633 000023 0000 .DW ; ($23-$24)
2634 000025 0000 .DW ; ($25-$26)
2635 000027 0000 .DW ; ($27-$28)
2636 000029 0000 .DW ; ($29-$2A)
2637 00002B 0000 .DW ; ($2B-$2C)
2638 00002D 0000 .DW ; ($2D-$2E)
2639 00002F 0000 arytab .DW ; ($2F-$30)
2640 000031 0000 strend .DW ; ($31-$32)
2641 000033 0000 freetop .DW ; ($33-$34)
2642 000035 0000 freespc .DW ; ($35-$36)
2643 000037 0000 memsiz .DW ; ($37-$38)
Tue Jul 17 11:00:23 2018 Page 2
2644 000039 0000 curline .DW ; ($39-$3A) current line number in execution
2645 00003B 0000 oldline .DW ; ($3B-$3C) previous line number in execution
2646 00003D 0000 oldtxt .DW ; ($3D-$3E) saved pointer to text in basic execution
2647 00003F 0000 datlin .DW ; ($3F-$40)
2648 000041 0000 datptr .DW ; ($41-$42)
2649 000043 0000 inpptr .DW ; ($43-$44)
2650 000045 0000 varnam .DW ; ($45-$46)
2651 000047 0000 varpnt .DW ; ($47-$48)
2652 000049 0000 forpnt .DW ; ($49-$4A) basic
2653 00004B 0000 opptr .DW ; ($4B-$4C) basic
2654 00004D 00 opmask .DB ; ($4D)
2655 00004E 0000 defpnt .DW ; ($4E-$4F)
2656 000050 0000 dscpnt .DW ; ($50-$51)
2657 000052 00 dsclen .DB ; ($52)
2658 000053 00 prompt .DB ; ($53) prompt flag/CMD channel - editor/basic ($13)
2659
2660 ; equates for p-code virtual machine
2661 00003B prtrap .EQU oldline ; ($3B) p-code trap errors flag
2662 00003C pcstack .EQU oldline+1 ; ($3C-$3D) p-code save stack
2663 00003E prterr .EQU oldtxt+1 ; ($3E) p-code run time error number
2664 00003F psrline .EQU datlin ; ($3F-$40) pascal source line number
2665 000041 prseed .EQU datptr ; ($41-$42) p-code random generator
2666 000043 pbrkcnt .EQU inpptr ; ($43) p-code counter for break check
2667 000044 tmpy .EQU inpptr+1 ; ($44) p-code temp. for save Y
2668 000045 inqidx .EQU varnam ; ($45) p-code index to input buffer
2669 000046 inqcnt .EQU varnam+1 ; ($46) p-code input buffer counter
2670 000047 tmpv1 .EQU varpnt ; ($47) p-code temp.
2671 000048 tmpv2 .EQU varpnt+1 ; ($48) p-code temp.
2672 000049 tmpa .EQU forpnt ; ($49) p-code temp. save A
2673 00004A tmpwa .EQU forpnt+1 ; ($4A) p-code tmp. save byte to write
2674 00004B tmpx .EQU opptr ; ($4B) p-code tmp. save X when print
2675 00004C pcterr .EQU opptr+1 ; ($4C) p-code compiler error flag
2676 00004D tmpdsk .EQU opmask ; ($4D) p-code default temp. disk unit
2677 00004E defprn .EQU defpnt ; ($4E) p-code default printer #device
2678 00004F pcdbg .EQU defpnt+1 ; ($4F) p-code debug run after error
2679 000050 pcptr .EQU dscpnt ; ($50-$51) pointer to p-code (debug)
2680 000052 autolf .EQU dsclen ; ($52) p-code auto line feed flag
2681
2682 000054 tmpwrk .DS 4 ; ($54-$57) temp. area editor/virtual iec
2683 000058 00 tmpb0 .DB ; ($58)
2684 000059 00 argbits .DB ; ($59) FAC #1 guard bits
2685 00005A 00 tmpb2 .DB ; ($5A) tmp. byte - used by fpu
2686 00005B 00 txtlen .DB ; ($5B) tmp. word length of text to insert in buffer
2687 00005C 00 tmpb1 .DB ; ($5C) tmp. byte used by editor and float point unit
2688 00005D 0000 tmpval .DW ; ($5D-$5E) temp. word used by editor/fpu
2689 00005F 0000 tlnptr .DW ; ($5F-$60) temp. line text pointer used by editor/fpu
2690 000061 00 facexp .DB ; ($61) FAC #1 exponent
2691 000062 facm .DS 4 ; ($62-$65) FAC #1 mantissa
2692 000066 00 facsgn .DB ; ($66) FAC #1 sign
2693 000067 00 sercnt .DB ; ($67) FAC #1 series evaluation
2694 000068 00 facov .DB ; ($68) FAC #1 overflow
2695 000069 00 argexp .DB ; ($69) FAC #2 exponent
2696 00006A argm .DS 4 ; ($6A-$6D) FAC #2 mantissa
2697 00006E 00 argsgn .DB ; ($6E) FAC #2 sign
2698 00006F 00 arisgn .DB ; ($6F) FAC #1 & #2 sign comparison
2699 000070 00 facbits .DB ; ($70) FAC #1 guard bits
2700 000071 0000 fbufpt .DW ; ($71-$72) FAC series evaluation pointer
Tue Jul 17 11:00:23 2018 Page 3
2701 000073 00 fbufpt2 .DB ; ($73) FAC series evaluation bank (progr. bank)
2702
2703 ; tmp. variables (equates) used by float point unit
2704 000054 factmp .EQU tmpwrk ; ($54-$57) used by fpu mult/div
2705 00005A cprmsk .EQU tmpb2 ; ($5A) used by trigs. funcs.
2706 00005B faclsb .EQU txtlen ; ($5B) used by float point unit
2707 00005D dccnt .EQU tmpval ; ($5D) digit count after decimal dot
2708 00005E expval .EQU tmpval+1 ; ($5E) exponent value when convert
2709 00005F dotfg .EQU tlnptr ; ($5F) flag decimal dot when convert
2710 000060 expsgn .EQU tlnptr+1 ; ($60) flag exponent sign when conver
2711 000067 sgnfg .EQU sercnt ; ($67) flag: minus sign when convert
2712 000071 decidx .EQU fbufpt ; ($71) string index when convert
2713 000072 s2fer .EQU fbufpt+1 ; ($72) string to float flag error
2714 000073 decidx2 .EQU fbufpt+2 ; ($73) used when convert float to str
2715
2716 000074 0000 s2fstk .DW ; ($74-$75) save stack when string to float conversion
2717 000076 longp LP ; ($76-$77-$78) temp. long pointer
2718 000079 00 s2fptr .DB ; ($79) flag trap overflow err. string to float conv.
2719
2720 00007A 0000 txtp .DW ; ($7A-$7B) current pointer to text
2721 00007C 00 pcdsk .DB ; ($7C) flag for pascal compiler
2722 ; <7> : compile in memory
2723
2724 00007D iecrp LP ; ($7D) iec: pointer to read buffer for include file
2725 000080 00 iecalt .DB ; ($80) iec: flag read from include file
2726 000081 iectp LP ; ($81) iec: pointer to read main text buffer
2727 000084 00 iecndx .DB ; ($84) iec: index main text buffer
2728 000085 00 ieceof .DB ; ($85) iec: end of file flag main text buffer
2729 000086 iecwp LP ; ($86) iec: pointer to write buffer
2730 000089 00 iecfg .DB ; ($89) iec: flag main text buffer
2731 00008A 0000 iecndx2 .DW ; ($8A) iec: index buffer include file
2732 00008C 00 iecbuf .DB ; ($8C) iec: byte buffer
2733 00008D 00 svbnk .DB ; ($8D) save vbnk when run pascal compiler
2734 00008E 00 ieceof2 .DB ; ($8E) iec: flag eof include file
2735 00008F 00 vxflag .DB ; ($8F) flag valid text in x-bank
2736 000090 00 kstat .DB ; ($90) CBM emulated IEC status
2737 000091 00 errno .DB ; ($91) saved error number
2738 000092 00 keyfg .DB ; ($92) keyboard flag: KbdFlag
2739 000093 00 keyctl .DB ; ($93) flag control key from get key
2740 000094 00 keysh .DB ; ($94) flag keyboard: KbdShift
2741 000095 00 keytg .DB ; ($95) flag keyboard: KbdToggle
2742 000096 00 basic .DB ; ($96) flag current 'basic' mode
2743 ; <7>: flag basic mode
2744 ; <6>: flag pascal compiler running
2745 000097 00 runf .DB ; ($97) flag current run mode
2746 000098 00 ldtnd .DB ; ($98) number of open files
2747 000099 00 dfltn .DB ; ($99) default input device
2748 00009A 00 dflto .DB ; ($9A) default output device
2749 00009B 00 skpbk .DB ; ($9B) skip blank flag
2750 00009C 00 w2sf .DB ; ($9C) integer to string flag conversion
2751 00009D 00 msgflg .DB ; ($9D) flag message
2752 00009E 00 autof .DB ; ($9E) flag auto-increment line numbering
2753 00009F 0000 wauto .DW ; ($9F-$A0) auto-increment for line numbering
2754 0000A1 00 tbnk .DB ; ($A1) bank that hold basic/pascal text
2755 0000A2 00 vbnk .DB ; ($A2) bank that hold basic var/pascal pcode-stack
2756 0000A3 00 cbnk .DB ; ($A3) compiler bank/temp. bank for exchange
2757 0000A4 00 jbnk .DB ; ($A4) bank for obj, when compiling (3 bank max.)
Tue Jul 17 11:00:23 2018 Page 4
2758 0000A5 00 xbnk .DB ; ($A5) exchange bank for text buffer
2759 0000A6 00 dbnk .DB ; ($A6) bank for ram disk (jbnk + 3)
2760 0000A7 0000 botmem .DW ; ($A7-$A8) start of memory on the text bank
2761 0000A9 0000 topmem .DW ; ($A9-$AA) top of memory on the text bank
2762 0000AB 0000 txtbeg .DW ; ($AB-$AC) begin of text buffer
2763 0000AD 0000 txtend .DW ; ($AD-$AE) end of text buffer + 1
2764 0000AF 0000 txttop .DW ; ($AF-$B0) top of memory + 1 reserved to text buffer
2765 0000B1 0000 varbeg .DW ; ($B1-$B2) start of basic var/pcode
2766 0000B3 0000 vartop .DW ; ($B3-$B4) top of basic var/pcode + 1
2767 0000B5 0000 xtop .DW ; ($B5-$B6) top of text + 1 in x-bank
2768 0000B7 00 fnlen .DB ; ($B7) length of current filename
2769 0000B8 00 lacur .DB ; ($B8) current logical file number
2770 0000B9 00 sacur .DB ; ($B9) current secondary address
2771 0000BA 00 facur .DB ; ($BA) current device number
2772 0000BB 0000 fnadr .DW ; ($BB-$BC) pointer to current filename
2773 0000BD 00 fnadr2 .DB ; ($BD) - bank that hold file name
2774 0000BE 00 objdsk .DB ; ($BE) compiler: option '1' specified
2775 0000BF 00 truedsk .DB ; ($BF) true disk for load pascal soource file
2776 0000C0 0000 curstk .DW ; ($C0-$C1) current stack when in edit mode
2777 0000C2 00 pcodef .DB ; ($C2) flag p-code present for execution
2778
2779 0000C3 latb .DS MAXLF ; logical files table
2780 0000CE fatb .DS MAXLF ; devices numbers table
2781 0000D9 satb .DS MAXLF ; secondary addresses table
2782
2783 ;=============================================================
2784
2785 0000E4 0000 cmdlin .DW ; command line ptr for pscal program
2786 0000E6 00 fpcflag .DB ; fpc flags (new style)
2787 ; <7>: new style compiler
2788 ; <6>: no save exec. file
2789 ; <5>: save obj. file
2790
2791 0000E6 .RELATIVE
2792 .ENDS
2793
2794 ; basic work area starting at $FF00 of bank that hold text buffer
2795 CBMHIM: .SECTION ref_only, common
2796 000000 .ABSOLUTE
2797 00FF00 .ORG $FF00
2798 ; .ORG 0
2799
2800 0000A2 TBUFMAX .EQU $A2 ; size of input buffer
2801 00AA55 VALIDSGN .EQU $AA55 ; valid signature
2802
2803 00FF00 cbmwork .DS 4 ; first 4 bytes free for insert text line
2804 00FF04 TXTBUF .DS TBUFMAX ; input buffer for text insertion
2805 00FFA6 NUMSTR .DS 32 ; room for numeric string
2806
2807 00FFC6 0000 TMPPTR .DW ; temp. pointer
2808 00FFC8 0000 .DW
2809 00FFCA 0000 .DW
2810 00FFCC 0000 .DW
2811 00FFCE 0000 .DW
2812 00FFD0 GFNAME .DS 32 ; global file name
2813 00FFF0 .DS 8
2814 00FFF8
Tue Jul 17 11:00:23 2018 Page 5
2815 ;;.ORG $FFF8
2816 00FFF8 0000 TXTEND2 .DW ; saved text end + 1
2817 00FFFA 0000 TXTVSGN .DW ; valid text buffer signature
2818 00FFFC 0000 XTOP2 .DW ; saved text end + 1 in exchange bank
2819 00FFFE 0000 XBVSGN .DW ; valid x-bank buffer signature
2820
2821 00FFFE .RELATIVE
2822 .ENDS
2823
2824 .COMMENT @
2825 cbmwork .EQU $FF00 ; first 4 bytes free for insert text line
2826 TXTBUF .EQU $FF04 ; input buffer for text insertion
2827 NUMSTR .EQU $FFA6 ; room for numeric string
2828
2829 TMPPTR .EQU $FFC6 ; temp. pointer
2830
2831 TXTEND2 .EQU $FFF8 ; saved text end + 1
2832 TXTVSGN .EQU $FFFA ; valid text buffer signature
2833 XTOP2 .EQU $FFFC ; saved text end + 1 in exchange bank
2834 XBVSGN .EQU $FFFE ; valid x-bank buffer signature
2835 @
2836
2837 ; basic/pascal work area starting at $FF00 of bank that hold variables/p-code
2838 CBMHIV: .SECTION common, ref_only
2839 000000 .ABSOLUTE
2840 00FF00 .ORG $FF00
2841 ; .ORG 0
2842
2843 00005A QINSIZ .EQU $5A ; input buffer max. 90 chars.
2844 000020 NUMSIZ .EQU $20 ; size of numeric buffer for conversion
2845 000018 MAX2LF .EQU ((MAXLF + 1) * 2) ; size of p-code logical files table
2846 000013 MAXFNLEN .EQU 19 ; max. length of file name '@x:yyyyyyyyyyyyyyyy'
2847
2848 00FF00 MINBUF .DS QINSIZ
2849 00FF5A MNUMSTR .DS NUMSIZ
2850 00FF7A 0000 MTMPW0 .DW
2851 00FF7C 0000 MTMPW1 .DW
2852 00FF7E 00 MTMPB0 .DB
2853 00FF7F MFNAME .DS 16 ; file name buffer
2854 00FF8F MTMPNAM .DS 15 ; tmp. file name
2855 00FF9E MPOW10 .DS 10 ; power of 10 table
2856 00FFA8 MTRUE .DS 6
2857 00FFAE MFALSE .DS 6
2858 00FFB4 MSTDF0 .DS 4 ; descriptor for file #0 (consolle)
2859 00FFB8 MSTDF1 .DS 4 ; descriptor for file #1 (disk command chann.)
2860 00FFBC MSTDF2 .DS 4 ; descriptor for file #2 (used by compiler)
2861 00FFC0 MMSET .DS 16 ; set variables
2862 00FFD0 MFILET .DS MAX2LF ; table of logical files: #0 consolle, #1 disk
2863 00FFE8 FAC1TMP .DS 5 ; these 3 used by float routines
2864 00FFED FAC2TMP .DS 5
2865 00FFF2 FAC3TMP .DS 5
2866 00FFF7 FAC4TMP .DS 5 ; free to use
2867 00FFFC 0000 MTPTR .DW ; used by new/dispose
2868 00FFFE 0000 MTMPW2 .DW
2869
2870 00FFFE .RELATIVE
2871 .ENDS
Tue Jul 17 11:00:23 2018 Page 6
2872
2873 .COMMENT @
2874 MINBUF .EQU $FF00
2875 MNUMSTR .EQU $FF5A
2876 MTMPW0 .EQU $FF7A
2877 MTMPW1 .EQU $FF7C
2878 MTMPB0 .EQU $FF7E
2879 MFNAME .EQU $FF7F ; file name buffer
2880 MTMPNAM .EQU $FF8F ; tmp. file name
2881 MPOW10 .EQU $FF9E ; power of 10 table
2882 MTRUE .EQU $FFA8
2883 MFALSE .EQU $FFAE
2884 MSTDF0 .EQU $FFB4 ; descriptor for file #0 (consolle)
2885 MSTDF1 .EQU $FFB8 ; descriptor for file #1 (disk command chann.)
2886 MSTDF2 .EQU $FFBC ; descriptor for file #2 (used by compiler)
2887 MMSET .EQU $FFC0 ; set variables
2888 MFILET .EQU $FFD0 ; table of logical files: #0 consolle, #1 disk
2889 FAC1TMP .EQU $FFE8 ; these 3 used by float routines
2890 FAC2TMP .EQU $FFED
2891 FAC3TMP .EQU $FFF2
2892 FAC4TMP .EQU $FFF7 ; free to use
2893 MTPTR .EQU $FFFC ; used by new/dispose
2894 MTMPW2 .EQU $FFFE
2895 @
2896
2897 ; temp. file names in x-bank
2898 00FF00 PASSRC .EQU $FF00
2899 00FF20 OBJDST .EQU $FF20
2900 00FF40 EXEDST .EQU $FF40
2901 00FF60 OBJDEL .EQU $FF60
2902
2903
2904 .CODEFE
2905 .LONGA off
2906 .LONGI off
2907
2908 .GLOBAL vpmerr, pccstart, pcexec, L0FAA
2909 .EXTERN XBBD4, XBBA2, XBC5B, XBA8C, XBB12, XBA2B, XB853, XB86A
2910 .EXTERN XBAFE, XBAE2, XBCF3P, XE26B, XE264, XE2B4, XE30E
2911 .EXTERN XBFED, XBF7B, XBF71, XB9EA, XBC49, XBB0F, XB9BC, XBBC7
2912 .EXTERN XBBA2T, XB9E0, FCON05, XB867, XBBA2L, FCON10, XBA8CK
2913 .EXTERN XBBA2K, XLN10, XBC0C, XBA28
2914
2915 FE1943
2916 ;---------------------------------------------------------------------------
2917 ; p-cpode main system
2918 ;---------------------------------------------------------------------------
2919 FE1943
2920 ; start compiler
2921 FE1943 pccstart:
2922 .EXTERN PCTORSIZ, PCROFS, PCCOMP, PCCDST
2923 ;.EXTERN PCTORAM, , PCCOMPSIZ
2924
2925 FE1943 8B phb ; save current data bank
2926 FE1944 A5 A3 lda cbnk ; the dest. bank
2927 FE1946 8F 58 19 FE sta >?10+1 ; store dest bank for mvn istruction
2928 ;sta >?12+1 ; store dest bank for mvn istruction
Tue Jul 17 11:00:23 2018 Page 7
2929 FE194A CPU16
2930 FE194A C2 30 rep #(PMFLAG.OR.PXFLAG)
2931 .LONGA on
2932 .LONGI on
2933 .MNLIST
2934 FE194C A9 FD 40 lda #PCTORSIZ-1 ; transfer type/std functio's record's
2935 FE194F A2 10 41 ldx #PCCOMP ; source address
2936 ;ldx #PCTORAM ; source address
2937 ;ldy #PCROFS
2938 FE1952 A0 00 00 ldy #0 ; dest address
2939 FE1955 84 76 sty longp
2940 FE1957 54 00 FE ?10: mvn #^pccstart, #0
2941
2942 ;lda #PCCOMPSIZ-1 ; transfer compiler p-code
2943 ;ldx #PCCOMP ; source address
2944 ;ldy #PCCDST ; dest. address
2945 ;sty longp
2946 ;?12: mvn #^pccstart, #0
2947 FE195A 98 tya
2948 FE195B 92 76 sta (longp) ; here bank = cbnk
2949 FE195D CPU08
2950 FE195D E2 30 sep #(PMFLAG.OR.PXFLAG)
2951 .LONGA off
2952 .LONGI off
2953 .MNLIST
2954 ;ldy #$01
2955 ;lda (longp),y ; p-code
2956 FE195F EB xba ; hi addess
2957 FE1960 AA tax
2958 FE1961 E8 inx
2959 ;inx
2960 ;ldy #>PCCDST
2961 FE1962 A0 00 ldy #0
2962
2963 FE1964 A9 01 lda #1
2964 FE1966 85 52 sta autolf
2965 ;inc a
2966 FE1968 85 4D sta tmpdsk
2967 FE196A A9 04 lda #$04
2968 FE196C 85 4E sta defprn
2969 ;lda #$80
2970 ;sta pcdsk
2971 FE196E A9 40 lda #$40 ; compiler flag for runf
2972 FE1970
2973 FE1970 pccrun:
2974 FE1970 20 CC 19 jsr setmem
2975 ;jsr L0E89 ; print CR
2976 FE1973 20 C3 1A jsr pcex
2977 FE1976 A5 8D lda svbnk ; restore v-bank
2978 FE1978 85 A2 sta vbnk
2979 FE197A 24 97 bit runf ; skip if run mode
2980 FE197C 30 13 bmi ?04
2981 FE197E 24 4C bit pcterr ; no link if any compilation error
2982 FE1980 30 0F bmi ?04
2983 FE1982 A5 7C lda pcdsk
2984 FE1984 30 04 bmi ?01 ; compile in memory: link
2985 FE1986 24 E6 bit fpcflag
Tue Jul 17 11:00:23 2018 Page 8
2986 FE1988 10 07 bpl ?04 ; old style compilation: no link
2987 FE198A 20 5C 1C ?01: jsr pclink
2988 FE198D A9 80 lda #$80
2989 FE198F 85 C2 sta pcodef
2990 FE1991 64 97 ?04: stz runf
2991 FE1993 64 7C stz pcdsk
2992 FE1995 AB plb
2993 FE1996 60 rts
2994
2995 FE1997 pcexec:
2996 FE1997 8B phb
2997 FE1998 A5 A2 lda vbnk
2998 FE199A 48 pha
2999 FE199B AB plb
3000 FE199C 85 78 sta longp+2
3001 FE199E 64 76 stz longp
3002 FE19A0 64 77 stz longp+1
3003 FE19A2
3004 FE19A2 ACC16CLC
3005 FE19A2 C2 21 rep #(PMFLAG.OR.PCFLAG)
3006 .LONGA on
3007 .MNLIST
3008 FE19A4 A7 76 lda [longp]
3009 FE19A6 1A inc a
3010 FE19A7 1A inc a
3011 FE19A8 89 01 00 bit #$0001
3012 FE19AB F0 01 beq ?01
3013 FE19AD 1A inc a
3014 FE19AE 85 E4 ?01: sta cmdlin
3015 FE19B0 69 80 00 adc #128 ; size of command line
3016 FE19B3 ACC08
3017 FE19B3 E2 20 sep #PMFLAG
3018 .LONGA off
3019 .MNLIST
3020 FE19B5 EB xba
3021 ;ldy #1
3022 ;lda [longp],y
3023 FE19B6 AA tax
3024 FE19B7 E8 inx
3025 ;inx
3026 FE19B8 A0 00 ldy #0
3027 FE19BA A9 01 lda #1
3028 FE19BC 85 52 sta autolf
3029 ;inc a
3030 FE19BE 85 4D sta tmpdsk
3031 FE19C0 A9 04 lda #$04
3032 FE19C2 85 4E sta defprn
3033 FE19C4 A9 80 lda #$80
3034 FE19C6 85 4F sta pcdbg ; for RUN ???
3035 ;sta pcdsk
3036 ;stz pcdsk
3037 FE19C8 A9 80 lda #$80
3038 FE19CA 80 A4 bra pccrun
3039
3040 ; memory setup
3041 ; X = start of heap, Y = start of p-code, A = run flag
3042 FE19CC setmem:
Tue Jul 17 11:00:23 2018 Page 9
3043 FE19CC 85 97 sta runf ; run flag
3044 FE19CE 64 33 STZ $33 ; $33-$34 : start of heap
3045 FE19D0 86 34 STX $34
3046 FE19D2 64 35 STZ $35 ; $35-$36 : heap free list
3047 FE19D4 64 36 STZ $36
3048 FE19D6 64 39 STZ $39 ; $39-$3A
3049 FE19D8 64 3A STZ $3A
3050 FE19DA A9 02 LDA #$02
3051 FE19DC 85 2B STA $2B ; $2B-$2C : start p-code pointer
3052 FE19DE 84 2C STY $2C
3053 FE19E0 20 E7 FF jsr FCLALL ; close all files
3054 FE19E3 A5 A2 lda vbnk
3055 FE19E5 85 8D sta svbnk ; save v-bank
3056 FE19E7 24 97 bit runf
3057 FE19E9 30 04 bmi ?01 ; run: data bank = vbank
3058 FE19EB A5 A3 lda cbnk ; compilation: data bank = cbnk
3059 FE19ED 85 A2 sta vbnk
3060 FE19EF 48 ?01: pha
3061 FE19F0 AB plb ; setup current data bank
3062 FE19F1 A2 00 ldx #$00
3063 FE19F3 9E 00 FF ?02: stz !MINBUF,x ; clear working area
3064 FE19F6 E8 inx
3065 FE19F7 D0 FA bne ?02
3066 FE19F9 ACC16
3067 FE19F9 C2 20 rep #PMFLAG
3068 .LONGA on
3069 .MNLIST
3070 FE19FB A5 AF lda txttop
3071 FE19FD 85 37 sta $37
3072 FE19FF 38 SEC
3073 FE1A00 E9 0A 00 SBC #$000A
3074 FE1A03 85 2D STA $2D ; $2D-$2E : stack pointer
3075 FE1A05 A5 37 LDA $37
3076 FE1A07 85 2F STA $2F ; $2F-$30
3077 FE1A09 85 31 STA $31 ; $31-$32
3078 FE1A0B 38 SEC
3079 FE1A0C E9 04 00 SBC #$0004
3080 FE1A0F 85 27 STA $27
3081 FE1A11 A9 BA FF lda #MSTDF1+2 ; default file #1 (disk command channel)
3082 FE1A14 92 27 sta ($27)
3083 FE1A16 A0 02 ldy #2
3084 FE1A18 A9 B6 FF lda #MSTDF0+2 ; default file #0 (consolle)
3085 FE1A1B 91 27 sta ($27),y
3086 FE1A1D 64 3F stz psrline
3087 FE1A1F A9 B6 FF lda #MSTDF0+2
3088 FE1A22 8D D0 FF sta !MFILET
3089 FE1A25 A9 BA FF lda #MSTDF1+2
3090 FE1A28 8D D2 FF sta !MFILET+2
3091 FE1A2B A6 97 ldx runf
3092 FE1A2D 10 05 bpl ?03
3093 FE1A2F 9C D4 FF stz !MFILET+4 ; file #2 free in running mode
3094 FE1A32 80 06 bra ?04
3095 FE1A34 A9 BE FF ?03: lda #MSTDF2+2 ; set file #2 for compiler
3096 FE1A37 8D D4 FF sta !MFILET+4
3097 FE1A3A ?04: ACC08
3098 FE1A3A E2 20 sep #PMFLAG
3099 .LONGA off
Tue Jul 17 11:00:23 2018 Page 10
3100 .MNLIST
3101 FE1A3C A2 30 LDX #TTMPSIZ-1
3102 FE1A3E BF 1A 3E FE ?05: LDA >TTMPNAM,X
3103 FE1A42 9D 8F FF STA !MTMPNAM,X
3104 FE1A45 CA DEX
3105 FE1A46 10 F6 BPL ?05
3106 FE1A48 A5 4D lda tmpdsk ; setup disk for tmp. file
3107 FE1A4A 09 30 ora #'0'
3108 FE1A4C 8D 8F FF sta !MTMPNAM
3109 FE1A4F A9 C0 lda #$C0
3110 FE1A51 85 3B sta prtrap
3111 FE1A53 64 3E stz prterr
3112 FE1A55 64 43 stz pbrkcnt
3113 FE1A57 64 4C stz pcterr
3114 FE1A59 64 B7 STZ $B7
3115 FE1A5B A9 01 LDA #$01
3116 FE1A5D 85 B8 STA $B8
3117 FE1A5F A9 08 LDA #$08
3118 FE1A61 85 BA STA $BA
3119 FE1A63 A9 0F LDA #$0F
3120 FE1A65 85 B9 STA $B9
3121 FE1A67 20 C0 FF JSR FOPEN
3122 FE1A6A 20 DE FF jsr RDTIM
3123 FE1A6D 85 41 STA $41
3124 FE1A6F 64 42 stz $42
3125 FE1A71 64 45 stz inqidx
3126 FE1A73 64 46 stz inqcnt
3127 FE1A75 64 44 stz tmpy
3128 FE1A77 64 49 stz tmpa
3129 FE1A79 64 47 stz tmpv1
3130 FE1A7B 64 48 stz tmpv2
3131 FE1A7D 64 4A stz tmpwa
3132 FE1A7F 64 4B stz tmpx
3133 ;stz iecerr
3134 FE1A81 64 90 stz kstat
3135
3136 FE1A83 24 97 bit runf
3137 FE1A85 30 1A bmi ?12 ; run mode
3138 FE1A87
3139 ; source name for compiler in [longp]
3140 FE1A87 ACC16
3141 FE1A87 C2 20 rep #PMFLAG
3142 .LONGA on
3143 .MNLIST
3144 FE1A89 A9 00 FF lda #PASSRC
3145 FE1A8C 85 76 sta longp
3146 FE1A8E ACC08
3147 FE1A8E E2 20 sep #PMFLAG
3148 .LONGA off
3149 .MNLIST
3150 FE1A90 A5 A5 lda xbnk
3151 FE1A92 85 78 sta longp+2
3152 FE1A94
3153 FE1A94 A0 00 ldy #0 ; copy file name to internal buffer
3154 FE1A96 B7 76 ?10: lda [longp],y
3155 FE1A98 99 00 FF sta MINBUF,y
3156 FE1A9B F0 03 beq ?11
Tue Jul 17 11:00:23 2018 Page 11
3157 FE1A9D C8 iny
3158 FE1A9E D0 F6 bne ?10
3159 FE1AA0 60 ?11: rts
3160
3161 FE1AA1 ?12: ACC16
3162 FE1AA1 C2 20 rep #PMFLAG
3163 .LONGA on
3164 .MNLIST
3165 FE1AA3 A5 7A lda txtp
3166 FE1AA5 85 76 sta longp
3167 FE1AA7 ACC08
3168 FE1AA7 E2 20 sep #PMFLAG
3169 .LONGA off
3170 .MNLIST
3171 FE1AA9 A5 A1 lda tbnk
3172 FE1AAB 85 78 sta longp+2
3173 FE1AAD A0 7F ldy #127
3174 FE1AAF A9 20 lda #' '
3175 FE1AB1 91 E4 ?12l: sta (cmdlin),y
3176 FE1AB3 88 dey
3177 FE1AB4 10 FB bpl ?12l
3178 FE1AB6 C8 iny
3179 FE1AB7 B7 76 ?13l: lda [longp],y
3180 FE1AB9 F0 07 beq ?13
3181 FE1ABB 91 E4 sta (cmdlin),y
3182 FE1ABD C8 iny
3183 FE1ABE C0 80 cpy #128
3184 FE1AC0 90 F5 bcc ?13l
3185 FE1AC2 60 ?13: rts
3186
3187 ; execute p-code
3188 FE1AC3 pcex:
3189 FE1AC3 INDEX16
3190 FE1AC3 C2 10 rep #PXFLAG
3191 .LONGI on
3192 .MNLIST
3193 FE1AC5 BA tsx
3194 FE1AC6 86 3C stx pcstack
3195 FE1AC8 INDEX08
3196 FE1AC8 E2 10 sep #PXFLAG
3197 .LONGI off
3198 .MNLIST
3199 FE1ACA C6 43 ?04: dec pbrkcnt
3200 FE1ACC D0 03 bne ?06
3201 FE1ACE 20 B8 30 jsr L0E91 ; check CTRL BREAK
3202 FE1AD1 ?06: ACC16
3203 FE1AD1 C2 20 rep #PMFLAG
3204 .LONGA on
3205 .MNLIST
3206 FE1AD3 F4 C9 1A pea #?04-1 ; return address
3207 FE1AD6 B2 2B lda ($2B)
3208 FE1AD8 AA tax
3209 FE1AD9 A5 2B lda $2B
3210 FE1ADB 85 50 sta pcptr ; save p-code pointer
3211 FE1ADD 1A inc a
3212 FE1ADE 85 2B sta $2B
3213 FE1AE0 ACC08
Tue Jul 17 11:00:23 2018 Page 12
3214 FE1AE0 E2 20 sep #PMFLAG
3215 .LONGA off
3216 .MNLIST
3217 FE1AE2 A0 00 LDY #$00
3218 FE1AE4 8A txa
3219 FE1AE5 30 2B BMI ?14 ; >= 80
3220 FE1AE7 0A ?08: ASL a
3221 FE1AE8 AA TAX
3222 FE1AE9 10 24 BPL ?12 ; 00..3F -> 0 byte
3223 FE1AEB C9 A0 CMP #$A0
3224 FE1AED 90 12 BCC ?10 ; 40..4F -> 2 bytes
3225 FE1AEF 29 02 AND #$02 ; 50..7F
3226 FE1AF1 F0 0E BEQ ?10 ; EVEN -> 50,52,54,56... -> 2 bytes
3227 FE1AF3 B2 2B LDA ($2B) ; ODD -> 51,53,55,57... -> 1 byte (byte high = 00)
3228 FE1AF5 85 23 STA $23
3229 FE1AF7 E6 2B INC $2B
3230 FE1AF9 D0 02 BNE ?09
3231 FE1AFB E6 2C INC $2C
3232 FE1AFD 84 24 ?09: STY $24
3233 FE1AFF 80 0E bra ?12
3234 FE1B01 ?10: ACC16
3235 FE1B01 C2 20 rep #PMFLAG
3236 .LONGA on
3237 .MNLIST
3238 FE1B03 B2 2B LDA ($2B)
3239 FE1B05 85 23 STA $23
3240 FE1B07 A5 2B lda $2B
3241 FE1B09 1A inc a
3242 FE1B0A 1A inc a
3243 FE1B0B 85 2B sta $2B
3244 FE1B0D ACC08
3245 FE1B0D E2 20 sep #PMFLAG
3246 .LONGA off
3247 .MNLIST
3248 FE1B0F 7C 86 3C ?12: jmp (PCODET1,x)
3249
3250 ?14: ; code negative
3251 ; P80-8D -> 0 byte, 8E -> 1 byte, 8F -> 2 bytes
3252 FE1B12 29 0F AND #$0F
3253 FE1B14 C9 0E CMP #$0E
3254 FE1B16 85 23 STA $23
3255 FE1B18 84 24 STY $24
3256 FE1B1A 30 18 BMI ?16
3257 FE1B1C 08 PHP
3258 FE1B1D B2 2B LDA ($2B)
3259 FE1B1F 85 23 STA $23
3260 FE1B21 E6 2B INC $2B
3261 FE1B23 D0 02 BNE ?15
3262 FE1B25 E6 2C INC $2C
3263 FE1B27 28 ?15: PLP
3264 FE1B28 F0 0A BEQ ?16
3265 FE1B2A B2 2B LDA ($2B)
3266 FE1B2C 85 24 STA $24
3267 FE1B2E E6 2B INC $2B
3268 FE1B30 D0 02 BNE ?16
3269 FE1B32 E6 2C INC $2C
3270 FE1B34 8A ?16: TXA
Tue Jul 17 11:00:23 2018 Page 13
3271 FE1B35 4A LSR a
3272 FE1B36 4A LSR a
3273 FE1B37 4A LSR a
3274 FE1B38 29 0E AND #$0E
3275 FE1B3A AA TAX
3276 FE1B3B BF 86 3D FE LDA >PCODET2,X
3277 FE1B3F 85 27 STA $27
3278 FE1B41 BF 87 3D FE LDA >PCODET2+1,X
3279 FE1B45 85 28 STA $28
3280 FE1B47 A5 23 LDA $23
3281 FE1B49 A6 24 LDX $24
3282 FE1B4B 6C 27 7F JMP (CBMP0+$27)
3283 FE1B4E
3284 ; error: bad p-code
3285 FE1B4E vpme07:
3286 FE1B4E A2 07 LDX #$07
3287
3288 ; runtime error handler
3289 vpmerr: ; $0C78 - $0F0D
3290 FE1B50 48 pha ; dummy stack
3291 FE1B51 48 pha
3292 FE1B52 86 3E stx $3E ; error code
3293 FE1B54 20 CC FF JSR FCLRCH
3294 FE1B57 64 3B STZ $3B
3295 FE1B59 A5 29 lda $29 ; save current file desc
3296 FE1B5B 85 71 sta fbufpt
3297 FE1B5D A5 2A lda $2A
3298 FE1B5F 85 72 sta fbufpt+1
3299 FE1B61 20 5C 31 JSR L0F9B ; reset file #1 and print CR
3300 FE1B64 A6 3E ldx $3E
3301 FE1B66 20 39 1C jsr vpmsrch ; search error string
3302 ; now format and print error message
3303 FE1B69 A5 78 lda longp+2 ; param 3: error string pointer
3304 FE1B6B 48 pha
3305 FE1B6C D4 76 pei (longp)
3306 FE1B6E A5 3E lda $3E ; param 2: error code
3307 FE1B70 48 pha
3308 FE1B71 A9 FE lda #^STRFMT2 ; param 1: format string
3309 FE1B73 48 pha
3310 FE1B74 F4 82 3E pea #STRFMT2
3311 FE1B77 A9 08 lda #$08 ; param 0: number of total bytes
3312 FE1B79 48 pha
3313 FE1B7A BPRINTF
3314 FE1B7A 02 11 cop $11
3315 .MNLIST
3316 FE1B7C vpmerr2:
3317 ?08: ;;JSR lprint ; long print error string
3318 FE1B7C 24 97 bit runf
3319 FE1B7E 10 0D bpl ?12 ; running: print always line number
3320 ; now format line number
3321 FE1B80 D4 3F pei ($3F) ; param 2: line number
3322 FE1B82 A9 FE lda #^STRFMT3
3323 FE1B84 48 pha ; param 1: format string
3324 FE1B85 F4 9A 3E pea #STRFMT3
3325 FE1B88 A9 06 lda #$06 ; param 0: number of total bytes
3326 FE1B8A 48 pha
3327 FE1B8B BPRINTF
Tue Jul 17 11:00:23 2018 Page 14
3328 FE1B8B 02 11 cop $11
3329 .MNLIST
3330
3331 ?10: ;;LDA #<TLINS ; ',line '
3332 ;;STA longp
3333 ;;LDA #>TLINS
3334 ;;STA longp+1
3335 ;;JSR lprint
3336 ?12: ;;LDA #<MDFIL+6 ; M2D92 - m35D8
3337 ;;STA $29
3338 ;;LDA #>MDFIL+6
3339 ;;STA $2A
3340 ;;bit runf
3341 ;;bpl ?14 ; running: print always line number
3342 ?13: ;;LDA $3F ; line number
3343 ;;STA $21
3344 ;;LDA $40
3345 ;;STA $22
3346 ;;LDA #$00
3347 ;;STA $23
3348 ;;JSR L0D1C
3349 FE1B8D 20 69 31 ?14: JSR L0E89 ; print CR
3350 ; report debug info after error - always for compiler
3351 FE1B90 24 97 bit runf
3352 FE1B92 10 04 bpl ?15
3353 FE1B94 24 4F bit pcdbg ; when run: only if debug enabled
3354 FE1B96 10 1E bpl ?16
3355 FE1B98 D4 71 ?15: pei (fbufpt) ; param 8: saved file ptr
3356 FE1B9A D4 33 pei ($33) ; param 7: heap ptr
3357 FE1B9C D4 2D pei ($2D) ; param 6: stack ptr
3358 FE1B9E B2 50 lda (pcptr)
3359 FE1BA0 48 pha ; param 5: op-code
3360 FE1BA1 D4 2B pei ($2B) ; param 4: current p-code ptr
3361 FE1BA3 D4 50 pei (pcptr) ; param 3: p-code ptr at error
3362 FE1BA5 A5 A2 lda vbnk
3363 FE1BA7 48 pha ; param 2: data bank
3364 FE1BA8 A9 FE lda #^STRFMT4
3365 FE1BAA 48 pha ; param 1: format string
3366 FE1BAB F4 A5 3E pea #STRFMT4
3367 FE1BAE A9 10 lda #$10 ; param 0: number of total bytes
3368 FE1BB0 48 pha
3369 FE1BB1 BPRINTF
3370 FE1BB1 02 11 cop $11
3371 .MNLIST
3372 FE1BB3 20 69 31 JSR L0E89 ; print CR
3373 FE1BB6 A9 80 ?16: lda #$80 ; report error for compiler
3374 FE1BB8 85 4C sta pcterr
3375
3376 ; terminate pascal virtual machine
3377 vpmhlt: ; $0914 - $0AC4
3378 ; if pcterr = $80 this mean compiler error(s)
3379 FE1BBA 24 97 bit runf
3380 FE1BBC 30 35 bmi ?02 ; execution
3381 FE1BBE 20 CF 30 jsr L0942 ; close all files
3382 FE1BC1 24 4C bit pcterr ; check compiler error
3383 FE1BC3 10 2A bpl ?01 ; no error
3384 ; delete file .OBJ
Tue Jul 17 11:00:23 2018 Page 15
3385 FE1BC5 A9 01 lda #$01
3386 FE1BC7 20 C3 FF jsr FCLOSE ; close command channel
3387 FE1BCA ACC16
3388 FE1BCA C2 20 rep #PMFLAG
3389 .LONGA on
3390 .MNLIST
3391 FE1BCC A9 A7 FF lda #NUMSTR+1
3392 FE1BCF 85 BB sta $BB ; file name to delete
3393 FE1BD1 ACC08
3394 FE1BD1 E2 20 sep #PMFLAG
3395 .LONGA off
3396 .MNLIST
3397 FE1BD3 A5 A1 lda tbnk ; text bank hold file name
3398 FE1BD5 85 BD sta $BD
3399 FE1BD7 8B phb
3400 FE1BD8 48 pha
3401 FE1BD9 AB plb
3402 FE1BDA AD A6 FF lda !NUMSTR ; lenght
3403 FE1BDD 85 B7 sta $B7
3404 FE1BDF AB plb
3405 FE1BE0 A9 01 lda #$01
3406 FE1BE2 85 B8 sta $B8
3407 FE1BE4 A9 0F lda #$0F
3408 FE1BE6 85 B9 sta $B9
3409 FE1BE8 A9 08 lda #$08
3410 FE1BEA 85 BA sta $BA
3411 FE1BEC 20 C0 FF jsr FOPEN ; delete obj file
3412 FE1BEF A9 01 ?01: lda #1 ; close file #1
3413 FE1BF1 80 3B bra ?04
3414 FE1BF3 20 0E 31 ?02: jsr R0B28 ; close all files
3415 FE1BF6 A9 08 LDA #$08 ; delete any tmp file
3416 FE1BF8 85 BA STA $BA ; default disk
3417 FE1BFA 85 B8 STA $B8
3418 FE1BFC A9 0F LDA #$0F
3419 FE1BFE 85 B9 STA $B9
3420 FE1C00 INDEX16
3421 FE1C00 C2 10 rep #PXFLAG
3422 .LONGI on
3423 .MNLIST
3424 FE1C02 A2 0A 3E ldx #DTMPNAM ; copy temp. name
3425 FE1C05 86 76 stx longp
3426 FE1C07 A2 D0 FF ldx #GFNAME ; buffer temp. name
3427 FE1C0A 86 BB stx $BB
3428 FE1C0C INDEX08
3429 FE1C0C E2 10 sep #PXFLAG
3430 .LONGI off
3431 .MNLIST
3432 FE1C0E A9 FE lda #^vpmhlt
3433 FE1C10 85 78 sta longp+2
3434 FE1C12 A5 A1 lda tbnk
3435 FE1C14 85 BD sta $BD
3436 FE1C16 A0 FF ldy #$FF
3437 FE1C18 C8 ?03: iny
3438 FE1C19 B7 76 lda [longp],y
3439 FE1C1B 97 BB sta [$BB],y
3440 FE1C1D D0 F9 bne ?03
3441 FE1C1F 84 B7 sty $B7
Tue Jul 17 11:00:23 2018 Page 16
3442 FE1C21 A0 01 ldy #$01
3443 FE1C23 A5 4D lda tmpdsk
3444 FE1C25 09 30 ora #'0'
3445 FE1C27 97 BB sta [$BB],y ; 'SX:...'
3446 FE1C29 20 C0 FF JSR FOPEN
3447 FE1C2C A5 B8 LDA $B8
3448 FE1C2E 20 C3 FF ?04: JSR FCLOSE
3449 FE1C31 INDEX16
3450 FE1C31 C2 10 rep #PXFLAG
3451 .LONGI on
3452 .MNLIST
3453 FE1C33 A6 3C LDX pcstack
3454 FE1C35 9A TXS
3455 FE1C36 INDEX08
3456 FE1C36 E2 10 sep #PXFLAG
3457 .LONGI off
3458 .MNLIST
3459 FE1C38 60 RTS
3460
3461 ; search error string - X = error code
3462 ; return pointer in longp
3463 FE1C39 vpmsrch:
3464 FE1C39 A9 14 LDA #<TERRS ; error's string table
3465 FE1C3B 85 76 STA longp
3466 FE1C3D A9 3F LDA #>TERRS
3467 FE1C3F 85 77 STA longp+1
3468 FE1C41 A9 FE lda #^vpmerr
3469 FE1C43 85 78 sta longp+2
3470 FE1C45 E0 1B cpx #MAXVPME ; max error number
3471 FE1C47 90 02 bcc ?02
3472 FE1C49 A2 1B ldx #MAXVPME
3473 FE1C4B CA ?02: DEX
3474 FE1C4C F0 0D BEQ ?08
3475 FE1C4E A7 76 ?04: LDA [longp]
3476 FE1C50 E6 76 INC longp
3477 FE1C52 D0 02 BNE ?06
3478 FE1C54 E6 77 INC longp+1
3479 FE1C56 A8 ?06: tay
3480 FE1C57 D0 F5 BNE ?04
3481 FE1C59 F0 F0 BEQ ?02
3482 FE1C5B 60 ?08: RTS
3483
3484 ;---------------------------------------------------------------------------
3485 ; p-code linker
3486 ;---------------------------------------------------------------------------
3487
3488 FE1C5C pclink:
3489 .GLOBAL pclink
3490
3491 FE1C5C A5 A2 lda vbnk
3492 FE1C5E 48 pha
3493 FE1C5F AB plb
3494 FE1C60 64 5F stz $5F
3495 FE1C62 64 60 stz $60
3496 FE1C64 64 3E stz prterr
3497 FE1C66 64 76 stz longp
3498 FE1C68 64 77 stz longp+1
Tue Jul 17 11:00:23 2018 Page 17
3499 FE1C6A A5 A4 lda jbnk
3500 FE1C6C 85 78 sta longp+2 ; pointer to obj. code
3501 FE1C6E 64 35 stz $35
3502 FE1C70 64 36 stz $36
3503 FE1C72 64 23 stz $23
3504 FE1C74 64 24 stz $24
3505 FE1C76 A9 02 lda #$02 ; put 'halt'
3506 FE1C78 8D 02 00 sta !$0002
3507 FE1C7B A6 24 ?02: ldx $24 ; loop scan obj. code
3508 FE1C7D E8 inx
3509 FE1C7E E4 38 cpx $38
3510 FE1C80 F0 4A beq ?08
3511 FE1C82 A0 00 ldy #0
3512 FE1C84 ?03: ACC16CLC
3513 FE1C84 C2 21 rep #(PMFLAG.OR.PCFLAG)
3514 .LONGA on
3515 .MNLIST
3516 FE1C86 98 tya
3517 FE1C87 65 76 adc longp
3518 FE1C89 C5 86 cmp iecwp
3519 FE1C8B ACC08
3520 FE1C8B E2 20 sep #PMFLAG
3521 .LONGA off
3522 .MNLIST
3523 FE1C8D A5 78 lda longp+2
3524 FE1C8F E5 88 sbc iecwp+2
3525 FE1C91 B0 1E bcs ?05 ; end of obj. code
3526 FE1C93 B7 76 lda [longp],y
3527 FE1C95 91 23 sta ($23),y
3528 FE1C97 C8 iny
3529 FE1C98 D0 EA bne ?03
3530 FE1C9A E6 77 inc longp+1 ; next block
3531 FE1C9C D0 02 bne ?04
3532 FE1C9E E6 78 inc longp+2
3533 FE1CA0 A0 FC ?04: ldy #$FC
3534 FE1CA2 B1 23 lda ($23),y
3535 FE1CA4 F0 2B beq ?10 ; if = 0
3536 FE1CA6 C9 01 cmp #$01
3537 FE1CA8 F0 36 beq ?12 ; if = 1
3538 FE1CAA C9 02 cmp #$02
3539 FE1CAC D0 CD bne ?02
3540 FE1CAE 4C 1D 1D jmp ?20 ; if = 2
3541
3542 FE1CB1 ?05: ACC16
3543 FE1CB1 C2 20 rep #PMFLAG
3544 .LONGA on
3545 .MNLIST
3546 FE1CB3 A5 35 lda $35
3547 FE1CB5 F0 12 beq ?07
3548 FE1CB7 B2 35 lda ($35)
3549 FE1CB9 85 27 sta $27
3550 FE1CBB A9 FF FF lda #$FFFF
3551 FE1CBE 92 35 sta ($35)
3552 FE1CC0 A5 27 lda $27
3553 FE1CC2 85 35 sta $35
3554 FE1CC4 ACC08
3555 FE1CC4 E2 20 sep #PMFLAG
Tue Jul 17 11:00:23 2018 Page 18
3556 .LONGA off
3557 .MNLIST
3558 FE1CC6 EB xba
3559 FE1CC7 D0 E8 bne ?05
3560 FE1CC9 ?07: ACC08
3561 FE1CC9 E2 20 sep #PMFLAG
3562 .LONGA off
3563 .MNLIST
3564 FE1CCB 60 rts
3565
3566 FE1CCC A9 80 ?08: lda #$80
3567 FE1CCE 85 4C sta pcterr
3568 FE1CD0 60 rts
3569
3570 FE1CD1 A0 FE ?10: ldy #$FE
3571 FE1CD3 B1 23 lda ($23),y
3572 FE1CD5 18 clc
3573 FE1CD6 65 23 adc $23
3574 FE1CD8 85 23 sta $23
3575 FE1CDA 90 9F bcc ?02
3576 FE1CDC E6 24 inc $24
3577 FE1CDE D0 9B bne ?02
3578
3579 FE1CE0 A0 FE ?12: ldy #$FE
3580 FE1CE2 B1 23 lda ($23),y
3581 FE1CE4 AA tax
3582 FE1CE5 A0 00 ldy #$00
3583 FE1CE7 ?14: ACC16CLC
3584 FE1CE7 C2 21 rep #(PMFLAG.OR.PCFLAG)
3585 .LONGA on
3586 .MNLIST
3587 FE1CE9 B1 23 lda ($23),y
3588 FE1CEB 65 5F adc $5F
3589 FE1CED 85 21 sta $21
3590 FE1CEF C8 iny
3591 FE1CF0 C8 iny
3592 FE1CF1 84 27 sty $27
3593 FE1CF3 ACC08
3594 FE1CF3 E2 20 sep #PMFLAG
3595 .LONGA off
3596 .MNLIST
3597 FE1CF5 A0 01 ldy #$01
3598 FE1CF7 B1 21 lda ($21),y
3599 FE1CF9 C9 FF cmp #$FF
3600 FE1CFB F0 12 beq ?16
3601 FE1CFD ACC16CLC
3602 FE1CFD C2 21 rep #(PMFLAG.OR.PCFLAG)
3603 .LONGA on
3604 .MNLIST
3605 FE1CFF B2 21 lda ($21)
3606 FE1D01 65 5F adc $5F
3607 FE1D03 92 21 sta ($21)
3608 FE1D05 ACC08
3609 FE1D05 E2 20 sep #PMFLAG
3610 .LONGA off
3611 .MNLIST
3612 FE1D07 A4 27 ?15: ldy $27
Tue Jul 17 11:00:23 2018 Page 19
3613 FE1D09 CA dex
3614 FE1D0A D0 DB bne ?14
3615 FE1D0C 4C 7B 1C jmp ?02
3616 FE1D0F ?16: ACC16
3617 FE1D0F C2 20 rep #PMFLAG
3618 .LONGA on
3619 .MNLIST
3620 FE1D11 A5 35 lda $35
3621 FE1D13 92 21 sta ($21)
3622 FE1D15 A5 21 lda $21
3623 FE1D17 85 35 sta $35
3624 FE1D19 ACC08
3625 FE1D19 E2 20 sep #PMFLAG
3626 .LONGA off
3627 .MNLIST
3628 FE1D1B 80 EA bra ?15
3629 FE1D1D
3630 FE1D1D A0 FE ?20: ldy #$FE
3631 FE1D1F B1 23 lda ($23),y
3632 FE1D21 4A lsr a
3633 FE1D22 AA tax
3634 FE1D23 A0 00 ldy #0
3635 FE1D25 ?22: ACC16CLC
3636 FE1D25 C2 21 rep #(PMFLAG.OR.PCFLAG)
3637 .LONGA on
3638 .MNLIST
3639 FE1D27 B1 23 lda ($23),y
3640 FE1D29 65 5F adc $5F
3641 FE1D2B 85 21 sta $21
3642 FE1D2D ACC08
3643 FE1D2D E2 20 sep #PMFLAG
3644 .LONGA off
3645 .MNLIST
3646 FE1D2F C8 iny
3647 FE1D30 C8 iny
3648 FE1D31 20 52 1D jsr ?30
3649 FE1D34 B1 23 lda ($23),y
3650 FE1D36 48 pha
3651 FE1D37 C8 iny
3652 FE1D38 B1 23 lda ($23),y
3653 FE1D3A C8 iny
3654 FE1D3B 84 27 sty $27
3655 FE1D3D A0 01 ldy #$01
3656 FE1D3F 90 03 bcc ?24
3657 FE1D41 18 clc
3658 FE1D42 65 60 adc $60
3659 FE1D44 91 21 ?24: sta ($21),y
3660 FE1D46 88 dey
3661 FE1D47 68 pla
3662 FE1D48 91 21 sta ($21),y
3663 FE1D4A A4 27 ldy $27
3664 FE1D4C CA dex
3665 FE1D4D D0 D6 bne ?22
3666 FE1D4F 4C 7B 1C jmp ?02
3667
3668 FE1D52 ?30: ACC16
3669 FE1D52 C2 20 rep #PMFLAG
Tue Jul 17 11:00:23 2018 Page 20
3670 .LONGA on
3671 .MNLIST
3672 FE1D54 A5 35 lda $35
3673 FE1D56 8D FE FF sta !$FFFE
3674 FE1D59 A9 FE FF lda #$FFFE
3675 FE1D5C 85 25 sta $25
3676 FE1D5E A5 25 ?32: lda $25
3677 FE1D60 85 27 sta $27
3678 FE1D62 B2 27 lda ($27)
3679 FE1D64 85 25 sta $25
3680 FE1D66 18 clc
3681 FE1D67 F0 0B beq ?34
3682 FE1D69 A5 25 lda $25
3683 FE1D6B C5 21 cmp $21
3684 FE1D6D D0 EF bne ?32
3685 FE1D6F B2 25 lda ($25)
3686 FE1D71 92 27 sta ($27)
3687 FE1D73 38 sec
3688 FE1D74 AD FE FF ?34: lda !$FFFE
3689 FE1D77 85 35 sta $35
3690 FE1D79 ACC08
3691 FE1D79 E2 20 sep #PMFLAG
3692 .LONGA off
3693 .MNLIST
3694 FE1D7B 60 rts
3695 FE1D7C
3696 ;---------------------------------------------------------------------------
3697 ; p-code execution
3698 ;---------------------------------------------------------------------------
3699
3700 PC00: ; $1119 - $13A4
3701 FE1D7C B1 2D LDA ($2D),Y
3702 FE1D7E 85 27 STA $27
3703 FE1D80 C8 INY
3704 FE1D81 B1 2D LDA ($2D),Y
3705 FE1D83 85 28 STA $28
3706 FE1D85 A9 00 LDA #$00
3707 FE1D87 91 2D STA ($2D),Y
3708 FE1D89 88 DEY
3709 FE1D8A B1 27 LDA ($27),Y
3710 FE1D8C 91 2D STA ($2D),Y
3711 FE1D8E 60 rts
3712
3713 PC3B: ; $0970 - $0B81
3714 ; 'rewrite' on disk
3715 FE1D8F 20 EB 33 JSR L09C2 ; prepare for open
3716 FE1D92 A5 3E LDA $3E
3717 FE1D94 D0 4F BNE SK04 ; if error
3718 FE1D96 24 97 bit runf
3719 FE1D98 30 2D bmi ?10 ; run mode
3720 FE1D9A 24 BE bit objdsk
3721 FE1D9C 30 08 bmi ?01 ; use disk '1': '1' option
3722 FE1D9E A5 BF lda truedsk ; need this because compiler put drive 0
3723 FE1DA0 09 30 ora #'0'
3724 FE1DA2 A0 01 ldy #1
3725 FE1DA4 97 BB sta [$BB],y
3726
Tue Jul 17 11:00:23 2018 Page 21
3727 ; copy obj. name file to NUMSTR in tbank
3728 FE1DA6 8B ?01: phb
3729 FE1DA7 A5 BD lda $BD
3730 FE1DA9 48 pha
3731 FE1DAA AB plb
3732 FE1DAB A0 FF ldy #$FF
3733 FE1DAD C8 ?02: iny
3734 FE1DAE B7 BB lda [$BB],y
3735 FE1DB0 99 A7 FF sta NUMSTR+1,y
3736 FE1DB3 D0 F8 bne ?02
3737 FE1DB5 A9 53 lda #'S' ; scratch
3738 FE1DB7 8D A7 FF sta !NUMSTR+1
3739 FE1DBA A5 B7 lda $B7
3740 FE1DBC 38 sec
3741 FE1DBD E9 04 sbc #4 ; skip ',S,W'
3742 FE1DBF 8D A6 FF sta !NUMSTR ; length
3743 FE1DC2 AA tax
3744 FE1DC3 9E A7 FF stz !NUMSTR+1,x
3745 FE1DC6 AB plb
3746 FE1DC7
3747 FE1DC7 20 C0 FF ?10: JSR FOPEN ; open
3748 FE1DCA 24 97 bit runf
3749 FE1DCC 20 45 33 JSR L0A73 ; handle disk error
3750 FE1DCF A9 A8 LDA #$A8
3751 FE1DD1 92 29 STA ($29)
3752 FE1DD3 80 10 bra SK04
3753
3754 PC01: ; $112E - $13B9
3755 FE1DD5 B2 2D LDA ($2D)
3756 FE1DD7 AA TAX
3757 FE1DD8 A0 02 ldy #2
3758 FE1DDA ACC16
3759 FE1DDA C2 20 rep #PMFLAG
3760 .LONGA on
3761 .MNLIST
3762 FE1DDC B1 2D LDA ($2D),Y
3763 FE1DDE 85 27 STA $27
3764 FE1DE0 ACC08
3765 FE1DE0 E2 20 sep #PMFLAG
3766 .LONGA off
3767 .MNLIST
3768 FE1DE2 8A TXA
3769 FE1DE3 92 27 STA ($27)
3770 FE1DE5
3771 SK04: ; $1141 - $13CC
3772 FE1DE5 ACC16CLC
3773 FE1DE5 C2 21 rep #(PMFLAG.OR.PCFLAG)
3774 .LONGA on
3775 .MNLIST
3776 FE1DE7 A5 2D LDA $2D
3777 FE1DE9 69 04 00 ADC #$0004
3778 FE1DEC 85 2D STA $2D
3779 FE1DEE ACC08
3780 FE1DEE E2 20 sep #PMFLAG
3781 .LONGA off
3782 .MNLIST
3783 FE1DF0 60 rts
Tue Jul 17 11:00:23 2018 Page 22
3784
3785 PC02: ; $114F - $13DA
3786 ; terminate procedure or program
3787 FE1DF1 24 97 bit runf
3788 FE1DF3 10 03 bpl ?02
3789 FE1DF5 20 CF 30 JSR R0AE9 ; close all local files
3790 FE1DF8 18 ?02: CLC
3791 FE1DF9 A5 2F LDA $2F
3792 FE1DFB 69 06 ADC #$06
3793 FE1DFD 85 2D STA $2D
3794 FE1DFF A5 30 LDA $30
3795 FE1E01 69 00 ADC #$00
3796 FE1E03 85 2E STA $2E
3797 FE1E05 C5 32 CMP $32
3798 FE1E07 90 09 BCC ?04
3799 FE1E09 A5 2F LDA $2F
3800 FE1E0B E5 31 SBC $31
3801 FE1E0D 90 03 BCC ?04
3802 FE1E0F 4C BA 1B JMP vpmhlt ; terminate
3803 FE1E12 A0 04 ?04: LDY #$04 ; exit from procedure/function
3804 FE1E14 ACC16
3805 FE1E14 C2 20 rep #PMFLAG
3806 .LONGA on
3807 .MNLIST
3808 FE1E16 B1 2F LDA ($2F),Y
3809 FE1E18 85 2B STA $2B
3810 FE1E1A A0 02 ldy #$02
3811 FE1E1C B1 2F LDA ($2F),Y
3812 FE1E1E 85 2F STA $2F
3813 FE1E20 ACC08
3814 FE1E20 E2 20 sep #PMFLAG
3815 .LONGA off
3816 .MNLIST
3817 FE1E22 60 rts
3818 FE1E23
3819 PC03: ; $1185 - $1410
3820 ; return from integer function
3821 FE1E23 24 97 bit runf
3822 FE1E25 10 03 bpl ?02
3823 FE1E27 20 CF 30 JSR R0AE9
3824 FE1E2A ?02: CPU16
3825 FE1E2A C2 30 rep #(PMFLAG.OR.PXFLAG)
3826 .LONGA on
3827 .LONGI on
3828 .MNLIST
3829 FE1E2C B2 2D LDA ($2D)
3830 FE1E2E AA TAX
3831 FE1E2F A5 2F LDA $2F
3832 FE1E31 85 2D STA $2D
3833 FE1E33 C8 iny
3834 FE1E34 C8 iny
3835 FE1E35 B1 2D LDA ($2D),Y
3836 FE1E37 85 2F STA $2F
3837 FE1E39 C8 iny
3838 FE1E3A C8 iny
3839 FE1E3B B1 2D LDA ($2D),Y
3840 FE1E3D 85 2B STA $2B
Tue Jul 17 11:00:23 2018 Page 23
3841 FE1E3F 8A txa
3842 FE1E40 91 2D STA ($2D),Y
3843 FE1E42 CPU08
3844 FE1E42 E2 30 sep #(PMFLAG.OR.PXFLAG)
3845 .LONGA off
3846 .LONGI off
3847 .MNLIST
3848 FE1E44 80 9F bra SK04
3849
3850 PC04: ; $11B4 - $143F
3851 ; prepare for call procedure/function
3852 FE1E46 38 SEC
3853 FE1E47 ACC16
3854 FE1E47 C2 20 rep #PMFLAG
3855 .LONGA on
3856 .MNLIST
3857 FE1E49 A5 2D LDA $2D
3858 FE1E4B E9 06 00 SBC #$0006
3859 FE1E4E 85 2D STA $2D
3860 FE1E50 A5 39 LDA $39
3861 FE1E52 92 2D STA ($2D)
3862 FE1E54 A5 2D LDA $2D
3863 FE1E56 85 39 STA $39
3864 FE1E58 ACC08
3865 FE1E58 E2 20 sep #PMFLAG
3866 .LONGA off
3867 .MNLIST
3868 FE1E5A 60 rts
3869
3870 PC09: ; $126F - 14FA
3871 ; divide 2 integer and leave result in stack
3872 FE1E5B BB tyx ; Y = X = 0
3873 FE1E5C ACC16
3874 FE1E5C C2 20 rep #PMFLAG
3875 .LONGA on
3876 .MNLIST
3877 FE1E5E B2 2D LDA ($2D)
3878 FE1E60 85 25 STA $25
3879 FE1E62 C8 iny
3880 FE1E63 C8 iny
3881 FE1E64 B1 2D LDA ($2D),y
3882 FE1E66 85 23 STA $23
3883 FE1E68 ACC08
3884 FE1E68 E2 20 sep #PMFLAG
3885 .LONGA off
3886 .MNLIST
3887 FE1E6A 20 1A 1F JSR idiv
3888 FE1E6D ACC16
3889 FE1E6D C2 20 rep #PMFLAG
3890 .LONGA on
3891 .MNLIST
3892 FE1E6F A5 21 LDA $21
3893 FE1E71 91 2D STA ($2D),Y
3894 FE1E73 ACC08
3895 FE1E73 E2 20 sep #PMFLAG
3896 .LONGA off
3897 .MNLIST
Tue Jul 17 11:00:23 2018 Page 24
3898 FE1E75 80 1E bra SK02
3899
3900 PC0B: ; $12F6 - $1581
3901 ; logic 'and' 2 bytes and leave result in stack
3902 FE1E77 B2 2D LDA ($2D)
3903 FE1E79 A0 02 LDY #$02
3904 FE1E7B 31 2D AND ($2D),Y
3905 FE1E7D 91 2D STA ($2D),Y
3906 FE1E7F 80 14 bra SK02
3907
3908 PC0C: ; $1301 - $158C
3909 ; logic 'or' 2 integer and leave result in stack
3910 FE1E81 B2 2D LDA ($2D)
3911 FE1E83 A0 02 LDY #$02
3912 FE1E85 11 2D ORA ($2D),Y
3913 FE1E87 91 2D STA ($2D),Y
3914 FE1E89 80 0A bra SK02
3915
3916 PC05: ; $11D5 - $1460
3917 ; add 2 integer and leave result in stack
3918 FE1E8B ACC16CLC
3919 FE1E8B C2 21 rep #(PMFLAG.OR.PCFLAG)
3920 .LONGA on
3921 .MNLIST
3922 FE1E8D B2 2D LDA ($2D)
3923 FE1E8F A0 02 LDY #$02
3924 FE1E91 71 2D ADC ($2D),Y
3925 FE1E93 91 2D STA ($2D),Y
3926 SK02: ; $11E7 - $1472
3927 FE1E95 ACC16CLC
3928 FE1E95 C2 21 rep #(PMFLAG.OR.PCFLAG)
3929 .LONGA on
3930 .MNLIST
3931 FE1E97 A5 2D LDA $2D
3932 FE1E99 1A inc a
3933 FE1E9A 1A inc a
3934 FE1E9B 85 2D STA $2D
3935 FE1E9D ACC08
3936 FE1E9D E2 20 sep #PMFLAG
3937 .LONGA off
3938 .MNLIST
3939 FE1E9F 60 rts
3940
3941 PC06: ; $11F5 - $1480
3942 ; subctract 2 integer and leave result in stack
3943 FE1EA0 ACC16
3944 FE1EA0 C2 20 rep #PMFLAG
3945 .LONGA on
3946 .MNLIST
3947 FE1EA2 A0 02 ldy #2
3948 FE1EA4 38 sec
3949 FE1EA5 B1 2D LDA ($2D),y
3950 FE1EA7 F2 2D sbc ($2D)
3951 FE1EA9 91 2D STA ($2D),Y
3952 FE1EAB ACC08
3953 FE1EAB E2 20 sep #PMFLAG
3954 .LONGA off
Tue Jul 17 11:00:23 2018 Page 25
3955 .MNLIST
3956 FE1EAD 80 E6 bra SK02
3957 FE1EAF
3958 PC07: ; $1210 - $149B
3959 ; mult 2 integer and leave result in stack
3960 FE1EAF BB tyx ; Y = X = 0
3961 FE1EB0 CPU16
3962 FE1EB0 C2 30 rep #(PMFLAG.OR.PXFLAG)
3963 .LONGA on
3964 .LONGI on
3965 .MNLIST
3966 FE1EB2 B2 2D LDA ($2D)
3967 FE1EB4 85 23 STA $23
3968 FE1EB6 48 pha
3969 FE1EB7 10 06 bpl ?02
3970 FE1EB9 38 sec
3971 FE1EBA 8A txa ; X = 0
3972 FE1EBB E5 23 sbc $23
3973 FE1EBD 85 23 sta $23
3974 FE1EBF C8 ?02: iny
3975 FE1EC0 C8 iny
3976 FE1EC1 B1 2D LDA ($2D),Y
3977 FE1EC3 85 25 STA $25
3978 FE1EC5 10 06 bpl ?04
3979 FE1EC7 38 sec
3980 FE1EC8 8A txa ; X = 0
3981 FE1EC9 E5 25 sbc $25
3982 FE1ECB 85 25 sta $25
3983 FE1ECD 68 ?04: PLA
3984 FE1ECE 51 2D EOR ($2D),Y ; sign comparison
3985 FE1ED0 CPU08
3986 FE1ED0 E2 30 sep #(PMFLAG.OR.PXFLAG)
3987 .LONGA off
3988 .LONGI off
3989 .MNLIST
3990 FE1ED2 08 PHP
3991 FE1ED3 20 8B 29 JSR imult ; return Z = 0 if CF = 0
3992 FE1ED6 B0 3D BCS er03
3993 FE1ED8 A5 22 LDA $22
3994 FE1EDA 30 39 BMI er03
3995 FE1EDC 28 PLP
3996 FE1EDD CPU16
3997 FE1EDD C2 30 rep #(PMFLAG.OR.PXFLAG)
3998 .LONGA on
3999 .LONGI on
4000 .MNLIST
4001 FE1EDF 10 06 BPL ?06
4002 FE1EE1 38 sec
4003 FE1EE2 8A txa ; X = 0
4004 FE1EE3 E5 21 sbc $21
4005 FE1EE5 85 21 sta $21
4006 FE1EE7 A5 21 ?06: lda $21
4007 FE1EE9 91 2D STA ($2D),Y
4008 FE1EEB CPU08
4009 FE1EEB E2 30 sep #(PMFLAG.OR.PXFLAG)
4010 .LONGA off
4011 .LONGI off
Tue Jul 17 11:00:23 2018 Page 26
4012 .MNLIST
4013 FE1EED 80 A6 bra SK02
4014
4015 PC08: ; $124D - $14D8
4016 ; compute modulo 2 integer and leave result in stack
4017 FE1EEF ACC16
4018 FE1EEF C2 20 rep #PMFLAG
4019 .LONGA on
4020 .MNLIST
4021 FE1EF1 B2 2D LDA ($2D)
4022 FE1EF3 85 25 STA $25
4023 FE1EF5 C8 iny
4024 FE1EF6 C8 iny
4025 FE1EF7 B1 2D LDA ($2D),Y
4026 FE1EF9 85 23 STA $23
4027 FE1EFB ACC08
4028 FE1EFB E2 20 sep #PMFLAG
4029 .LONGA off
4030 .MNLIST
4031 FE1EFD 20 1A 1F JSR idiv
4032 FE1F00 ACC16
4033 FE1F00 C2 20 rep #PMFLAG
4034 .LONGA on
4035 .MNLIST
4036 FE1F02 A5 23 LDA $23
4037 FE1F04 91 2D STA ($2D),Y
4038 FE1F06 ACC08
4039 FE1F06 E2 20 sep #PMFLAG
4040 .LONGA off
4041 .MNLIST
4042 FE1F08 80 8B bra SK02
4043
4044 PC0A: ; $1291 - $151C
4045 ; 2's complement integer and leave result in stack
4046 FE1F0A CPU16
4047 FE1F0A C2 30 rep #(PMFLAG.OR.PXFLAG)
4048 .LONGA on
4049 .LONGI on
4050 .MNLIST
4051 FE1F0C 38 SEC
4052 FE1F0D 98 TYA
4053 FE1F0E F2 2D SBC ($2D)
4054 FE1F10 92 2D STA ($2D)
4055 FE1F12 CPU08
4056 FE1F12 E2 30 sep #(PMFLAG.OR.PXFLAG)
4057 .LONGA off
4058 .LONGI off
4059 .MNLIST
4060 FE1F14 60 rts
4061
4062 ; integer overflow
4063 er03: ; $12A0 - $152B
4064 FE1F15 A2 03 LDX #$03
4065 FE1F17 4C 50 1B JMP vpmerr
4066
4067 ; divide integer $23-$24 and $25-$26 - quot. in $21-$22 and rem. in $23-$24
4068 ; in input X must be 0
Tue Jul 17 11:00:23 2018 Page 27
4069 FE1F1A idiv:
4070 FE1F1A A5 25 LDA $25
4071 FE1F1C 05 26 ora $26
4072 FE1F1E F0 F5 BEQ er03
4073 FE1F20 64 21 STZ $21
4074 FE1F22 64 22 STZ $22
4075 FE1F24 A5 24 lda $24
4076 FE1F26 45 26 eor $26
4077 FE1F28 08 PHP
4078 FE1F29 CPU16
4079 FE1F29 C2 30 rep #(PMFLAG.OR.PXFLAG)
4080 .LONGA on
4081 .LONGI on
4082 .MNLIST
4083 FE1F2B A5 23 LDA $23
4084 FE1F2D 10 06 BPL ?02
4085 FE1F2F 38 sec
4086 FE1F30 8A txa ; X = 0
4087 FE1F31 E5 23 sbc $23
4088 FE1F33 85 23 sta $23
4089 FE1F35 A5 25 ?02: LDA $25
4090 FE1F37 10 06 BPL ?04
4091 FE1F39 38 sec
4092 FE1F3A 8A txa ; X = 0
4093 FE1F3B E5 25 sbc $25
4094 FE1F3D 85 25 sta $25
4095 FE1F3F ?04: CPU08
4096 FE1F3F E2 30 sep #(PMFLAG.OR.PXFLAG)
4097 .LONGA off
4098 .LONGI off
4099 .MNLIST
4100 FE1F41 A2 10 LDX #$10
4101 FE1F43 06 23 ?06: ASL $23
4102 FE1F45 26 24 ROL $24
4103 FE1F47 26 21 ROL $21
4104 FE1F49 26 22 ROL $22
4105 FE1F4B 30 C8 BMI er03
4106 FE1F4D A5 21 LDA $21
4107 FE1F4F C5 25 CMP $25
4108 FE1F51 A5 22 LDA $22
4109 FE1F53 E5 26 SBC $26
4110 FE1F55 30 0F BMI ?08
4111 FE1F57 85 22 STA $22
4112 FE1F59 A5 21 LDA $21
4113 FE1F5B 38 SEC
4114 FE1F5C E5 25 SBC $25
4115 FE1F5E 85 21 STA $21
4116 FE1F60 A5 23 LDA $23
4117 FE1F62 09 01 ORA #$01
4118 FE1F64 85 23 STA $23
4119 FE1F66 CA ?08: DEX
4120 FE1F67 D0 DA BNE ?06
4121 FE1F69 28 PLP
4122 FE1F6A 10 10 BPL ?10
4123 FE1F6C CPU16
4124 FE1F6C C2 30 rep #(PMFLAG.OR.PXFLAG)
4125 .LONGA on
Tue Jul 17 11:00:23 2018 Page 28
4126 .LONGI on
4127 .MNLIST
4128 FE1F6E 38 sec
4129 FE1F6F 8A txa ; X = 0
4130 FE1F70 E5 21 sbc $21
4131 FE1F72 85 21 sta $21
4132 FE1F74 38 sec
4133 FE1F75 8A txa ; X = 0
4134 FE1F76 E5 23 sbc $23
4135 FE1F78 85 23 sta $23
4136 FE1F7A CPU08
4137 FE1F7A E2 30 sep #(PMFLAG.OR.PXFLAG)
4138 .LONGA off
4139 .LONGI off
4140 .MNLIST
4141 FE1F7C 60 ?10: RTS
4142
4143 PC0D: ; $xxxx - $2959
4144 ; page() procedure
4145 FE1F7D 24 97 bit runf
4146 FE1F7F 10 27 bpl PC0Dx
4147 FE1F81 20 62 30 JSR L17A3
4148 FE1F84 20 4B 32 JSR R0F8D
4149 FE1F87 C6 B8 DEC $B8
4150 FE1F89 F0 0D BEQ ?02 ; output (clear screen)
4151 FE1F8B 20 25 32 JSR L0EA8
4152 FE1F8E A9 0C LDA #$0C ; new page at printer
4153 FE1F90 20 E3 32 JSR L0EC4
4154 FE1F93 20 CC FF jsr FCLRCH
4155 FE1F96 80 04 bra ?04
4156 FE1F98 EA ?02: nop ; clear screen
4157 FE1F99 SCNCLR ; call system function
4158 FE1F99 02 18 cop $18
4159 FE1F9B 01 .DB $01
4160 .MNLIST
4161 FE1F9C A9 02 ?04: LDA #$02
4162 FE1F9E 18 CLC
4163 FE1F9F 65 2D ADC $2D
4164 FE1FA1 85 2D STA $2D
4165 FE1FA3 90 02 BCC ?06
4166 FE1FA5 E6 2E INC $2E
4167 FE1FA7 60 ?06: rts
4168
4169 FE1FA8 PC0Dx:
4170 FE1FA8 4C 4E 1B JMP vpme07 ; error: bad p-code
4171
4172 PC14: ; $xxxx - $2BDF ; close file
4173 FE1FAB 24 97 bit runf
4174 FE1FAD 10 F9 bpl PC0Dx
4175 FE1FAF B1 2D LDA ($2D),Y
4176 FE1FB1 85 29 STA $29
4177 FE1FB3 C8 INY
4178 FE1FB4 B1 2D LDA ($2D),Y
4179 FE1FB6 85 2A STA $2A
4180 FE1FB8 20 4B 32 JSR R0F8D
4181 FE1FBB A5 B8 LDA $B8
4182 FE1FBD C9 FF CMP #$FF
Tue Jul 17 11:00:23 2018 Page 29
4183 FE1FBF F0 0F BEQ ?02
4184 FE1FC1 0A ASL a
4185 FE1FC2 AA TAX
4186 FE1FC3 A9 00 LDA #$00
4187 FE1FC5 9D D0 FF STA !MFILET,X
4188 FE1FC8 9D D1 FF STA !MFILET+1,X
4189 FE1FCB A5 B8 LDA $B8
4190 FE1FCD 20 C3 FF JSR FCLOSE
4191 FE1FD0 4C 95 1E ?02: JMP SK02
4192
4193 PC0E: ; $130C - $1597
4194 FE1FD3 B2 2D LDA ($2D)
4195 FE1FD5 49 01 EOR #$01
4196 FE1FD7 92 2D STA ($2D)
4197 FE1FD9 60 rts
4198 FE1FDA
4199 PC0F: ; $1315 - $15A0
4200 FE1FDA B1 2D LDA ($2D),Y
4201 FE1FDC A0 02 LDY #$02
4202 FE1FDE D1 2D CMP ($2D),Y
4203 FE1FE0 C8 INY
4204 FE1FE1 B1 2D LDA ($2D),Y
4205 FE1FE3 49 80 EOR #$80
4206 FE1FE5 85 27 STA $27
4207 FE1FE7 A0 01 LDY #$01
4208 FE1FE9 B1 2D LDA ($2D),Y
4209 FE1FEB 49 80 EOR #$80
4210 FE1FED E5 27 SBC $27
4211 FE1FEF A0 03 LDY #$03
4212 FE1FF1 90 3B BCC PC11c
4213 FE1FF3 B0 2C BCS PC11a
4214
4215 PC10: ; $1330 - $15BB
4216 FE1FF5 A0 02 LDY #$02
4217 FE1FF7 B1 2D LDA ($2D),Y
4218 FE1FF9 A0 00 LDY #$00
4219 FE1FFB D1 2D CMP ($2D),Y
4220 FE1FFD C8 INY
4221 FE1FFE B1 2D LDA ($2D),Y
4222 FE2000 49 80 EOR #$80
4223 FE2002 85 27 STA $27
4224 FE2004 A0 03 LDY #$03
4225 FE2006 B1 2D LDA ($2D),Y
4226 FE2008 49 80 EOR #$80
4227 FE200A E5 27 SBC $27
4228 FE200C 90 20 BCC PC11c
4229 FE200E B0 11 BCS PC11a
4230
4231 PC11: ; $134B - $15D6
4232 FE2010 B1 2D LDA ($2D),Y
4233 FE2012 A0 02 LDY #$02
4234 FE2014 D1 2D CMP ($2D),Y
4235 FE2016 D0 15 BNE PC11b
4236 FE2018 88 DEY
4237 FE2019 B1 2D LDA ($2D),Y
4238 FE201B A0 03 LDY #$03
4239 FE201D D1 2D CMP ($2D),Y
Tue Jul 17 11:00:23 2018 Page 30
4240 FE201F D0 0D BNE PC11c
4241 PC11a: ; $135C - $15E7
4242 FE2021 A9 00 LDA #$00
4243 FE2023 91 2D STA ($2D),Y
4244 FE2025 88 DEY
4245 FE2026 A9 01 LDA #$01
4246 FE2028 91 2D STA ($2D),Y
4247 FE202A 4C 95 1E JMP SK02
4248 PC11b: ; $1368 - $15F3
4249 FE202D C8 INY
4250 PC11c: ; $1369 - $15F4
4251 FE202E A9 00 LDA #$00
4252 FE2030 91 2D STA ($2D),Y
4253 FE2032 88 DEY
4254 FE2033 91 2D STA ($2D),Y
4255 FE2035 4C 95 1E JMP SK02
4256
4257 PC12: ; $1373 - $15FE
4258 FE2038 20 49 20 JSR decstk
4259 FE203B A0 03 LDY #$03
4260 FE203D B1 2D LDA ($2D),Y
4261 FE203F A0 01 LDY #$01
4262 FE2041 91 2D STA ($2D),Y
4263 FE2043 C8 INY
4264 FE2044 B1 2D LDA ($2D),Y
4265 FE2046 92 2D STA ($2D)
4266 FE2048 60 rts
4267
4268 decstk: ; $1836 - $1ABF
4269 FE2049 A5 2D LDA $2D
4270 FE204B 38 SEC
4271 FE204C E9 02 SBC #$02
4272 FE204E 85 2D STA $2D
4273 FE2050 B0 02 BCS ?02
4274 FE2052 C6 2E DEC $2E
4275 FE2054 60 ?02: RTS
4276
4277 PC13: ; $1388 - $1613
4278 FE2055 A0 11 LDY #$11
4279 FE2057 B1 2D LDA ($2D),Y
4280 FE2059 D0 1E BNE ?04
4281 FE205B 88 DEY
4282 FE205C B1 2D LDA ($2D),Y
4283 FE205E 30 19 BMI ?04
4284 FE2060 AA TAX
4285 FE2061 4A LSR a
4286 FE2062 4A LSR a
4287 FE2063 4A LSR a
4288 FE2064 A8 TAY
4289 FE2065 8A TXA
4290 FE2066 29 07 AND #$07
4291 FE2068 AA TAX
4292 FE2069 B1 2D LDA ($2D),Y
4293 FE206B 6A ?02: ROR a
4294 FE206C CA DEX
4295 FE206D 10 FC BPL ?02
4296 FE206F 90 08 BCC ?04
Tue Jul 17 11:00:23 2018 Page 31
4297 FE2071 A0 10 LDY #$10
4298 FE2073 A9 01 LDA #$01
4299 FE2075 91 2D STA ($2D),Y
4300 FE2077 D0 09 BNE ?06
4301 FE2079 A0 10 ?04: LDY #$10
4302 FE207B A9 00 LDA #$00
4303 FE207D 91 2D STA ($2D),Y
4304 FE207F C8 INY
4305 FE2080 91 2D STA ($2D),Y
4306 FE2082 ?06:
4307 L13B5: ; $13B5 - $1640
4308 FE2082 A5 2D LDA $2D
4309 FE2084 18 CLC
4310 FE2085 69 10 ADC #$10
4311 FE2087 85 2D STA $2D
4312 FE2089 90 02 BCC ?08
4313 FE208B E6 2E INC $2E
4314 FE208D ?08:
4315 FE208D 60 PCxx: rts
4316
4317 PC15: ; $13C3 - $164E
4318 FE208E 20 03 32 JSR L1762
4319 FE2091 20 76 32 JSR L0D1C
4320 FE2094 4C CC FF JMP FCLRCH
4321
4322 PC16: ; $13CF - $165A
4323 FE2097 20 03 32 JSR L1762
4324 FE209A A5 23 LDA $23
4325 FE209C F0 EF BEQ PCxx
4326 FE209E A2 01 LDX #$01
4327 FE20A0 20 34 33 JSR L0E69
4328 FE20A3 A5 21 LDA $21
4329 FE20A5 20 E3 32 JSR L0EC4
4330 FE20A8 4C CC FF JMP FCLRCH
4331
4332 PC19: ; $1421 - $16AC
4333 ; write CR to text file
4334 FE20AB 84 3E STY $3E
4335 FE20AD 20 85 30 JSR L17AD
4336 FE20B0 20 25 32 JSR L0EA8
4337 FE20B3 A9 0D LDA #$0D
4338 FE20B5 20 E3 32 JSR L0EC4
4339
4340 FE20B8 A5 9A lda dflto
4341 FE20BA C9 03 cmp #$03
4342 FE20BC F0 05 beq ?02
4343 FE20BE A9 0A LDA #$0A
4344 FE20C0 20 E3 32 JSR L0EC4
4345 FE20C3 ?02:
4346 FE20C3 20 CC FF JSR FCLRCH
4347 FE20C6 4C 95 1E JMP SK02
4348
4349 PC1A: ; $1434 - $16BF
4350 ; read integer from input text file
4351 FE20C9 20 14 30 JSR L178B
4352 FE20CC 20 1B 21 JSR L0DA5
4353 FE20CF 90 05 BCC ?02
Tue Jul 17 11:00:23 2018 Page 32
4354 FE20D1 A2 02 LDX #$02
4355 FE20D3 20 C0 31 JSR L0FAA
4356 FE20D6 ?02:
4357 L1441: ; $1441 - $16CC
4358 FE20D6 20 8F 30 JSR L17B7
4359 L1444: ; $1444 - $16CF
4360 FE20D9 A5 21 LDA $21
4361 FE20DB A0 00 LDY #$00
4362 FE20DD 91 2D STA ($2D),Y
4363 FE20DF C8 INY
4364 FE20E0 A5 22 LDA $22
4365 FE20E2 91 2D STA ($2D),Y
4366 FE20E4 4C CC FF JMP FCLRCH
4367
4368 PC1B: ; $1455 - $16E0
4369 FE20E7 84 22 STY $22
4370 FE20E9 20 14 30 JSR L178B
4371 FE20EC 85 21 STA $21
4372 FE20EE A0 00 LDY #$00
4373 FE20F0 B1 29 LDA ($29),Y
4374 FE20F2 29 40 AND #$40
4375 FE20F4 D0 1B BNE L147F
4376 FE20F6 20 71 31 ?02: JSR L0F2B
4377 FE20F9 C9 0A CMP #$0A
4378 FE20FB F0 F9 BEQ ?02
4379 FE20FD D0 D7 BNE L1441
4380
4381 ; redln
4382 PC1C: ; $146D - $16F8
4383 FE20FF 20 14 30 JSR L178B
4384 FE2102 A0 00 LDY #$00
4385 FE2104 B1 29 LDA ($29),Y
4386 FE2106 29 40 AND #$40
4387 FE2108 D0 07 BNE L147F
4388 FE210A 20 71 31 ?02: JSR L0F2B
4389 FE210D C9 0D CMP #$0D
4390 FE210F D0 F9 BNE ?02
4391 FE2111
4392 L147F: ; $147F - $170A
4393 FE2111 A0 00 LDY #$00
4394 FE2113 B1 29 LDA ($29),Y
4395 FE2115 09 02 ORA #$02
4396 FE2117 91 29 STA ($29),Y
4397 FE2119 80 BE bra L1444
4398
4399 L0DA5: ; $0DA5 - $1030
4400 FE211B 80 03 bra ?04
4401 FE211D 20 71 31 ?02: JSR L0F2B
4402 FE2120 C9 0D ?04: CMP #$0D
4403 FE2122 F0 F9 BEQ ?02
4404 FE2124 C9 20 CMP #$20
4405 FE2126 F0 F5 BEQ ?02
4406 FE2128 C9 0A CMP #$0A
4407 FE212A F0 F1 BEQ ?02
4408 FE212C A2 00 LDX #$00
4409 FE212E 86 21 STX $21
4410 FE2130 86 22 STX $22
Tue Jul 17 11:00:23 2018 Page 33
4411 FE2132 C9 2D CMP #$2D ; minus sign
4412 FE2134 08 PHP
4413 FE2135 F0 04 BEQ ?06
4414 FE2137 C9 2B CMP #$2B
4415 FE2139 D0 03 BNE ?08 ; plus sign
4416 FE213B 20 71 31 ?06: JSR L0F2B
4417 FE213E C9 3A ?08: CMP #$3A
4418 FE2140 10 4A BPL ?18
4419 FE2142 38 SEC
4420 FE2143 E9 30 SBC #$30
4421 FE2145 30 45 BMI ?18
4422 FE2147 48 ?10: PHA
4423 FE2148 06 21 ASL $21
4424 FE214A 26 22 ROL $22
4425 FE214C A5 21 LDA $21
4426 FE214E A4 22 LDY $22
4427 FE2150 06 21 ASL $21
4428 FE2152 26 22 ROL $22
4429 FE2154 06 21 ASL $21
4430 FE2156 26 22 ROL $22
4431 FE2158 18 CLC
4432 FE2159 65 21 ADC $21
4433 FE215B 85 21 STA $21
4434 FE215D 98 TYA
4435 FE215E 65 22 ADC $22
4436 FE2160 85 22 STA $22
4437 FE2162 68 PLA
4438 FE2163 18 CLC
4439 FE2164 65 21 ADC $21
4440 FE2166 85 21 STA $21
4441 FE2168 90 02 BCC ?12
4442 FE216A E6 22 INC $22
4443 FE216C 20 71 31 ?12: JSR L0F2B
4444 FE216F AA TAX
4445 FE2170 C9 3A CMP #$3A
4446 FE2172 10 05 BPL ?14
4447 FE2174 38 SEC
4448 FE2175 E9 30 SBC #$30
4449 FE2177 10 CE BPL ?10
4450 FE2179 28 ?14: PLP
4451 FE217A D0 0D BNE ?16
4452 FE217C 38 SEC
4453 FE217D A9 00 LDA #$00
4454 FE217F E5 21 SBC $21
4455 FE2181 85 21 STA $21
4456 FE2183 A9 00 LDA #$00
4457 FE2185 E5 22 SBC $22
4458 FE2187 85 22 STA $22
4459 FE2189 8A ?16: TXA
4460 FE218A 18 CLC
4461 FE218B 60 RTS
4462 FE218C 68 ?18: PLA
4463 FE218D 8A TXA
4464 FE218E 38 SEC
4465 FE218F 60 RTS
4466
4467 PC1D: ; $29C1 - $2FA3
Tue Jul 17 11:00:23 2018 Page 34
4468 ; read a floating point number from text file
4469 FE2190 20 14 30 JSR L178B
4470 FE2193 A2 00 LDX #$00
4471 FE2195 86 3E STX $3E
4472 FE2197 C9 20 ?02: CMP #$20
4473 FE2199 F0 08 BEQ ?04
4474 FE219B C9 0D CMP #$0D
4475 FE219D F0 04 BEQ ?04
4476 FE219F C9 0A CMP #$0A
4477 FE21A1 D0 08 BNE ?08
4478 FE21A3 20 71 31 ?04: JSR L0F2B
4479 FE21A6 80 EF bra ?02
4480 FE21A8 20 71 31 ?06: JSR L0F2B
4481 FE21AB ?08:
4482 FE21AB 9D 5A FF ?10: STA !MNUMSTR,X ; buffer
4483 FE21AE 85 27 STA $27 ; last char was read
4484 FE21B0 E8 INX
4485 FE21B1 E0 1F CPX #NUMSIZ-1
4486 FE21B3 F0 3D BEQ ?26
4487 FE21B5 C9 2E CMP #$2E
4488 FE21B7 F0 EF BEQ ?06
4489 FE21B9 C9 45 CMP #'E'
4490 FE21BB F0 EB BEQ ?06
4491 FE21BD C9 65 CMP #'e'
4492 FE21BF F0 E7 BEQ ?06
4493 FE21C1 C9 2B CMP #$2B
4494 FE21C3 F0 E3 BEQ ?06
4495 FE21C5 C9 2D CMP #$2D
4496 FE21C7 F0 DF BEQ ?06
4497 FE21C9 C9 30 CMP #$30
4498 FE21CB 90 04 BCC ?12
4499 FE21CD C9 3A CMP #$3A
4500 FE21CF 90 D7 BCC ?06
4501 FE21D1 CA ?12: DEX
4502 FE21D2 F0 1E ?14: BEQ ?26
4503 FE21D4 A9 00 LDA #$00
4504 FE21D6 9D 5A FF STA !MNUMSTR,X
4505 FE21D9 ACC16
4506 FE21D9 C2 20 rep #PMFLAG
4507 .LONGA on
4508 .MNLIST
4509 FE21DB D4 7A pei ($7A)
4510 FE21DD A9 5A FF LDA #MNUMSTR
4511 FE21E0 85 7A STA $7A
4512 FE21E2 ACC08
4513 FE21E2 E2 20 sep #PMFLAG
4514 .LONGA off
4515 .MNLIST
4516 FE21E4 20 C6 98 JSR XBCF3P
4517 FE21E7 AA TAX ; X = return code from conversion
4518 FE21E8 ACC16
4519 FE21E8 C2 20 rep #PMFLAG
4520 .LONGA on
4521 .MNLIST
4522 FE21EA 68 pla
4523 FE21EB 85 7A STA $7A
4524 FE21ED ACC08
Tue Jul 17 11:00:23 2018 Page 35
4525 FE21ED E2 20 sep #PMFLAG
4526 .LONGA off
4527 .MNLIST
4528 FE21EF 8A TXA
4529 FE21F0 F0 05 BEQ ?28
4530 FE21F2 A2 0A ?26: LDX #$0A ; floating point read error
4531 FE21F4 20 C0 31 JSR L0FAA
4532 FE21F7 A5 2D ?28: LDA $2D
4533 FE21F9 38 SEC
4534 FE21FA E9 04 SBC #$04
4535 FE21FC 85 2D STA $2D
4536 FE21FE B0 02 BCS ?30
4537 FE2200 C6 2E DEC $2E
4538 FE2202 A4 2E ?30: LDY $2E
4539 FE2204 AA TAX
4540 FE2205 20 92 97 JSR XBBD4
4541 FE2208 A5 27 LDA $27
4542 FE220A 20 8F 30 JSR L17B7
4543 FE220D 4C CC FF JMP FCLRCH
4544
4545 PC1E: ; $2825 - $2E07
4546 ; write float number to text file - float point format
4547 FE2210 B1 2D LDA ($2D),Y
4548 FE2212 30 02 BMI ?02
4549 FE2214 D0 02 BNE ?04
4550 FE2216 A9 01 ?02: LDA #$01
4551 FE2218 48 ?04: PHA
4552 FE2219 A0 0A LDY #$0A
4553 FE221B 20 85 30 JSR L17AD
4554 FE221E 20 25 32 JSR L0EA8
4555 FE2221 A5 2D LDA $2D
4556 FE2223 18 CLC
4557 FE2224 69 04 ADC #$04
4558 FE2226 A4 2E LDY $2E
4559 FE2228 90 01 BCC ?06
4560 FE222A C8 INY
4561 FE222B 20 33 97 ?06: JSR XBBA2
4562 FE222E A5 66 LDA $66
4563 FE2230 48 PHA
4564 FE2231 20 EC 22 JSR L2891
4565 FE2234 68 PLA
4566 FE2235 85 66 STA $66
4567 FE2237 68 PLA
4568 FE2238 85 25 STA $25
4569 FE223A 18 CLC
4570 FE223B 65 48 ADC tmpv2
4571 FE223D 30 02 BMI ?08
4572 FE223F D0 02 BNE ?10
4573 FE2241 A9 01 ?08: LDA #$01
4574 FE2243 85 23 ?10: STA $23
4575 FE2245 20 55 23 JSR L290B
4576 FE2248 90 02 BCC ?12
4577 FE224A E6 48 INC tmpv2
4578 FE224C A5 48 ?12: LDA tmpv2
4579 FE224E 85 23 STA $23
4580 FE2250 C9 01 CMP #$01
4581 FE2252 10 02 BPL ?14
Tue Jul 17 11:00:23 2018 Page 36
4582 FE2254 A9 01 LDA #$01
4583 FE2256 18 ?14: CLC
4584 FE2257 65 25 ADC $25
4585 FE2259 69 02 ADC #$02
4586 FE225B A0 02 LDY #$02
4587 FE225D 38 SEC
4588 FE225E F1 2D SBC ($2D),Y
4589 FE2260 AA TAX
4590 FE2261 10 08 BPL ?18
4591 FE2263 A9 20 LDA #$20
4592 FE2265 20 E3 32 ?16: JSR L0EC4
4593 FE2268 E8 INX
4594 FE2269 D0 FA BNE ?16
4595 FE226B 20 2A 33 ?18: JSR L29B6
4596 FE226E 20 92 23 JSR L2948
4597 FE2271 20 CC FF JSR FCLRCH
4598 FE2274 A9 0C LDA #$0C
4599 FE2276 4C 7B 27 JMP L155E
4600
4601 PC1F: ; $27AC - $2D8E
4602 ; write float number to text file - exponential format
4603 FE2279 B1 2D LDA ($2D),Y
4604 FE227B 48 PHA
4605 FE227C A5 2D LDA $2D
4606 FE227E 18 CLC
4607 FE227F 69 02 ADC #$02
4608 FE2281 A4 2E LDY $2E
4609 FE2283 90 01 BCC ?02
4610 FE2285 C8 INY
4611 FE2286 20 33 97 ?02: JSR XBBA2
4612 FE2289 A0 08 LDY #$08
4613 FE228B 20 85 30 JSR L17AD
4614 FE228E 20 25 32 JSR L0EA8
4615 FE2291 20 2A 33 JSR L29B6
4616 FE2294 20 EC 22 JSR L2891
4617 FE2297 68 PLA
4618 FE2298 38 SEC
4619 FE2299 E9 06 SBC #$06
4620 FE229B C9 02 CMP #$02
4621 FE229D 10 02 BPL ?04
4622 FE229F A9 02 LDA #$02
4623 FE22A1 85 23 ?04: STA $23
4624 FE22A3 85 25 STA $25
4625 FE22A5 20 55 23 JSR L290B
4626 FE22A8 90 02 BCC ?06
4627 FE22AA E6 48 INC tmpv2
4628 FE22AC C6 25 ?06: DEC $25
4629 FE22AE A9 01 LDA #$01
4630 FE22B0 85 23 STA $23
4631 FE22B2 20 92 23 JSR L2948
4632 FE22B5 A9 45 LDA #$45
4633 FE22B7 20 E3 32 JSR L0EC4
4634 FE22BA C6 48 DEC tmpv2
4635 FE22BC A9 2B LDA #$2B
4636 FE22BE 24 48 BIT tmpv2
4637 FE22C0 10 09 BPL ?08
4638 FE22C2 A9 00 LDA #$00
Tue Jul 17 11:00:23 2018 Page 37
4639 FE22C4 38 SEC
4640 FE22C5 E5 48 SBC tmpv2
4641 FE22C7 85 48 STA tmpv2
4642 FE22C9 A9 2D LDA #$2D
4643 FE22CB 20 E3 32 ?08: JSR L0EC4
4644 FE22CE A2 2F LDX #$2F
4645 FE22D0 A5 48 LDA tmpv2
4646 FE22D2 E8 ?10: INX
4647 FE22D3 38 SEC
4648 FE22D4 E9 0A SBC #$0A
4649 FE22D6 10 FA BPL ?10
4650 FE22D8 48 PHA
4651 FE22D9 8A TXA
4652 FE22DA 20 E3 32 JSR L0EC4
4653 FE22DD 68 PLA
4654 FE22DE 18 CLC
4655 FE22DF 69 3A ADC #$3A
4656 FE22E1 20 E3 32 JSR L0EC4
4657 FE22E4 20 CC FF JSR FCLRCH
4658 FE22E7 A9 0A LDA #$0A
4659 FE22E9 4C 7B 27 JMP L155E
4660
4661 L2891: ; $2891 - $2E73
4662 FE22EC A9 00 LDA #$00
4663 FE22EE 85 48 STA tmpv2
4664 FE22F0 A5 61 ?02: LDA $61
4665 FE22F2 F0 16 BEQ ?06
4666 FE22F4 30 07 BMI ?04
4667 FE22F6 20 6A 96 JSR XBAE2 ; mult * 10
4668 FE22F9 C6 48 DEC tmpv2
4669 FE22FB 80 F3 bra ?02
4670 FE22FD A5 61 ?04: LDA $61
4671 FE22FF C9 81 CMP #$81
4672 FE2301 90 07 BCC ?06
4673 FE2303 20 81 96 JSR XBAFE ; div / 10
4674 FE2306 E6 48 INC tmpv2
4675 FE2308 80 F3 bra ?04
4676 FE230A ?06:
4677 FE230A A5 61 ?07: LDA $61
4678 FE230C 30 0C BMI ?08
4679 FE230E 46 62 LSR $62
4680 FE2310 66 63 ROR $63
4681 FE2312 66 64 ROR $64
4682 FE2314 66 65 ROR $65
4683 FE2316 E6 61 INC $61
4684 FE2318 10 F0 BPL ?07
4685 FE231A A2 09 ?08: LDX #$09
4686 FE231C A9 00 LDA #$00
4687 FE231E 9D 5A FF ?10: STA !MNUMSTR,X
4688 FE2321 CA DEX
4689 FE2322 10 FA BPL ?10
4690 FE2324 A0 20 LDY #$20
4691 FE2326 A2 00 ?12: LDX #$00
4692 FE2328 5E 5A FF ?14: LSR !MNUMSTR,X
4693 FE232B E8 INX
4694 FE232C 08 PHP
4695 FE232D E0 0A CPX #$0A
Tue Jul 17 11:00:23 2018 Page 38
4696 FE232F F0 0D BEQ ?16
4697 FE2331 28 PLP
4698 FE2332 90 F4 BCC ?14
4699 FE2334 BD 5A FF LDA !MNUMSTR,X
4700 FE2337 69 09 ADC #$09
4701 FE2339 9D 5A FF STA !MNUMSTR,X
4702 FE233C D0 EA BNE ?14
4703 FE233E 28 ?16: PLP
4704 FE233F 46 62 LSR $62
4705 FE2341 66 63 ROR $63
4706 FE2343 66 64 ROR $64
4707 FE2345 66 65 ROR $65
4708 FE2347 90 08 BCC ?18
4709 FE2349 AD 5A FF LDA !MNUMSTR
4710 FE234C 69 04 ADC #$04
4711 FE234E 8D 5A FF STA !MNUMSTR
4712 FE2351 88 ?18: DEY
4713 FE2352 D0 D2 BNE ?12
4714 FE2354 60 RTS
4715 FE2355
4716 L290B: ; $290B - $2EED
4717 FE2355 A5 23 LDA $23
4718 FE2357 30 25 BMI ?06
4719 FE2359 F0 23 BEQ ?06
4720 FE235B C9 0A CMP #$0A
4721 FE235D B0 1F BCS ?06
4722 FE235F AA TAX
4723 FE2360 BD 5A FF LDA !MNUMSTR,X
4724 FE2363 18 CLC
4725 FE2364 69 05 ADC #$05
4726 FE2366 9D 5A FF STA !MNUMSTR,X
4727 FE2369 BD 5A FF ?02: LDA !MNUMSTR,X
4728 FE236C 38 SEC
4729 FE236D E9 0A SBC #$0A
4730 FE236F 30 0A BMI ?04
4731 FE2371 9D 5A FF STA !MNUMSTR,X
4732 FE2374 CA DEX
4733 FE2375 30 09 BMI ?10
4734 FE2377 FE 5A FF INC !MNUMSTR,X
4735 FE237A E8 INX
4736 FE237B CA ?04: DEX
4737 FE237C 10 EB BPL ?02
4738 FE237E 18 ?06: CLC
4739 FE237F 60 ?08: RTS
4740 FE2380 A6 23 ?10: LDX $23
4741 FE2382 38 ?12: SEC
4742 FE2383 A9 01 LDA #$01
4743 FE2385 CA DEX
4744 FE2386 30 F7 BMI ?08
4745 FE2388 F0 03 BEQ ?14
4746 FE238A BD 59 FF LDA !MNUMSTR-1,X
4747 FE238D 9D 5A FF ?14: STA !MNUMSTR,X
4748 FE2390 B0 F0 BCS ?12 ; here always CF = 1
4749
4750 L2948: ; $2948 - $2F2A
4751 FE2392 A2 00 LDX #$00
4752 FE2394 A5 23 LDA $23
Tue Jul 17 11:00:23 2018 Page 39
4753 FE2396 F0 1D BEQ ?06
4754 FE2398 30 1B BMI ?06
4755 FE239A A9 00 ?02: LDA #$00
4756 FE239C E0 0A CPX #$0A
4757 FE239E F0 04 BEQ ?04
4758 FE23A0 BD 5A FF LDA !MNUMSTR,X ; buffer
4759 FE23A3 E8 INX
4760 FE23A4 18 ?04: CLC
4761 FE23A5 69 30 ADC #$30
4762 FE23A7 20 E3 32 JSR L0EC4
4763 FE23AA C6 23 DEC $23
4764 FE23AC D0 EC BNE ?02
4765 FE23AE A9 2E LDA #$2E
4766 FE23B0 20 E3 32 JSR L0EC4
4767 FE23B3 80 31 bra ?12
4768 FE23B5 A9 30 ?06: LDA #$30
4769 FE23B7 20 E3 32 JSR L0EC4
4770 FE23BA A9 2E LDA #$2E
4771 FE23BC 20 E3 32 JSR L0EC4
4772 FE23BF A9 00 LDA #$00
4773 FE23C1 38 SEC
4774 FE23C2 E5 23 SBC $23
4775 FE23C4 85 23 STA $23
4776 FE23C6 F0 1E BEQ ?12
4777 FE23C8 A5 25 LDA $25
4778 FE23CA 38 SEC
4779 FE23CB E5 23 SBC $23
4780 FE23CD C9 01 CMP #$01
4781 FE23CF 10 06 BPL ?08
4782 FE23D1 A5 25 LDA $25
4783 FE23D3 85 23 STA $23
4784 FE23D5 A9 00 LDA #$00
4785 FE23D7 85 25 ?08: STA $25
4786 FE23D9 A5 23 LDA $23
4787 FE23DB F0 09 BEQ ?12
4788 FE23DD A9 30 LDA #$30
4789 FE23DF 20 E3 32 ?10: JSR L0EC4
4790 FE23E2 C6 23 DEC $23
4791 FE23E4 D0 F9 BNE ?10
4792 FE23E6 A5 25 ?12: LDA $25
4793 FE23E8 F0 14 BEQ ?18
4794 FE23EA A9 00 ?14: LDA #$00
4795 FE23EC E0 0A CPX #$0A
4796 FE23EE F0 04 BEQ ?16
4797 FE23F0 BD 5A FF LDA !MNUMSTR,X ; buffer
4798 FE23F3 E8 INX
4799 FE23F4 18 ?16: CLC
4800 FE23F5 69 30 ADC #$30
4801 FE23F7 20 E3 32 JSR L0EC4
4802 FE23FA C6 25 DEC $25
4803 FE23FC D0 EC BNE ?14
4804 FE23FE 60 ?18: RTS
4805
4806 PC20: ; $2AC1 - $30A3
4807 FE23FF 20 62 24 JSR L2B26
4808 FE2402 A0 04 LDY #$04
4809 L2AC6: ; $2AC6 - $30A8
Tue Jul 17 11:00:23 2018 Page 40
4810 FE2404 B1 2D LDA ($2D),Y
4811 FE2406 85 27 STA $27
4812 FE2408 C8 INY
4813 FE2409 B1 2D LDA ($2D),Y
4814 FE240B 85 28 STA $28
4815 FE240D 85 23 STA $23
4816 FE240F 10 0D BPL ?02
4817 FE2411 A9 00 LDA #$00
4818 FE2413 38 SEC
4819 FE2414 E5 27 SBC $27
4820 FE2416 85 27 STA $27
4821 FE2418 A9 00 LDA #$00
4822 FE241A E5 28 SBC $28
4823 FE241C 85 28 STA $28
4824 FE241E A9 00 ?02: LDA #$00
4825 FE2420 88 DEY
4826 FE2421 91 2D STA ($2D),Y
4827 FE2423 88 DEY
4828 FE2424 91 2D STA ($2D),Y
4829 FE2426 A2 90 LDX #$90
4830 FE2428 24 28 ?04: BIT $28
4831 FE242A 30 09 BMI ?06
4832 FE242C 06 27 ASL $27
4833 FE242E 26 28 ROL $28
4834 FE2430 CA DEX
4835 FE2431 30 F5 BMI ?04
4836 FE2433 A2 00 LDX #$00
4837 FE2435 88 ?06: DEY
4838 FE2436 A5 27 LDA $27
4839 FE2438 91 2D STA ($2D),Y
4840 FE243A A5 28 LDA $28
4841 FE243C 24 23 BIT $23
4842 FE243E 30 02 BMI ?08
4843 FE2440 29 7F AND #$7F
4844 FE2442 88 ?08: DEY
4845 FE2443 91 2D STA ($2D),Y
4846 FE2445 8A TXA
4847 FE2446 88 DEY
4848 FE2447 91 2D STA ($2D),Y
4849 FE2449 60 rts
4850
4851 PC21: ; $2B0E - $30F0
4852 FE244A 20 62 24 JSR L2B26
4853 FE244D C8 ?01: INY
4854 FE244E C8 INY
4855 FE244F C8 INY
4856 FE2450 C8 INY
4857 FE2451 B1 2D LDA ($2D),Y
4858 FE2453 88 DEY
4859 FE2454 88 DEY
4860 FE2455 88 DEY
4861 FE2456 88 DEY
4862 FE2457 91 2D STA ($2D),Y
4863 FE2459 C8 INY
4864 FE245A C0 06 CPY #$06
4865 FE245C D0 EF BNE ?01
4866 FE245E A0 0A LDY #$0A
Tue Jul 17 11:00:23 2018 Page 41
4867 FE2460 D0 A2 BNE L2AC6
4868
4869 L2B26: ; $2B26 - $3108
4870 FE2462 A5 2D LDA $2D
4871 FE2464 38 SEC
4872 FE2465 E9 04 SBC #$04
4873 FE2467 85 2D STA $2D
4874 FE2469 B0 02 BCS ?01
4875 FE246B C6 2E DEC $2E
4876 FE246D 60 ?01: RTS
4877
4878 PC22: ; $2B90 - $3172
4879 FE246E 20 FE 24 JSR L2BA8
4880 FE2471 20 0D 25 JSR L2C0C
4881 FE2474 20 0C 94 JSR XB86A
4882 FE2477 80 20 bra L2BF3
4883
4884 PC23: ; $2B9C - $317E
4885 FE2479 20 FE 24 JSR L2BA8
4886 FE247C 20 0D 25 JSR L2C0C
4887 FE247F 20 F6 93 JSR XB853
4888 FE2482 80 15 bra L2BF3
4889
4890 PC24: ; $2BDE - $31C0
4891 FE2484 A0 00 LDY #$00
4892 FE2486 B1 2D LDA ($2D),Y
4893 FE2488 49 80 EOR #$80
4894 FE248A 30 07 BMI ?02
4895 FE248C 38 SEC
4896 FE248D A0 06 LDY #$06
4897 FE248F 71 2D ADC ($2D),Y
4898 FE2491 B0 32 BCS er09
4899 FE2493 20 0D 25 ?02: JSR L2C0C
4900 FE2496 20 E2 95 JSR XBA2B
4901 L2BF3: ; $2BF3 - $31D5
4902 FE2499 A5 2D LDA $2D
4903 FE249B 18 CLC
4904 FE249C 69 06 ADC #$06
4905 FE249E 85 2D STA $2D
4906 FE24A0 90 02 BCC ?02
4907 FE24A2 E6 2E INC $2E
4908 FE24A4 A4 2E ?02: LDY $2E
4909 FE24A6 AA TAX
4910 FE24A7 4C 92 97 JMP XBBD4
4911
4912 PC25: ; $2BB7 - $3199
4913 FE24AA B1 2D LDA ($2D),Y
4914 FE24AC F0 17 BEQ er09
4915 FE24AE A0 06 LDY #$06
4916 FE24B0 B1 2D LDA ($2D),Y
4917 FE24B2 A0 00 LDY #$00
4918 FE24B4 38 SEC
4919 FE24B5 F1 2D SBC ($2D),Y
4920 FE24B7 90 04 BCC ?02
4921 FE24B9 69 81 ADC #$81
4922 FE24BB B0 08 BCS er09
4923 FE24BD 20 0D 25 ?02: JSR L2C0C
Tue Jul 17 11:00:23 2018 Page 42
4924 FE24C0 20 94 96 JSR XBB12
4925 FE24C3 80 D4 bra L2BF3
4926
4927 FE24C5 er09:
4928 FE24C5 A2 09 LDX #$09 ; floating point overflow
4929 FE24C7 4C 50 1B JMP vpmerr
4930
4931 PC26: ; $2C41 - $3223
4932 FE24CA 20 21 25 JSR L2C4A
4933 FE24CD C9 FF CMP #$FF
4934 FE24CF F0 10 BEQ L2C25
4935 FE24D1 D0 12 BNE L2C28
4936
4937 PC27: ; $2C38 - $321A
4938 FE24D3 20 21 25 JSR L2C4A
4939 FE24D6 C9 01 CMP #$01
4940 FE24D8 F0 07 BEQ L2C25
4941 FE24DA D0 09 BNE L2C28
4942
4943 PC28: ; $2C20 - $3202
4944 FE24DC 20 21 25 JSR L2C4A
4945 FE24DF F0 04 BEQ L2C28
4946 L2C25: ; $2C25 - $3207
4947 FE24E1 A9 00 LDA #$00
4948 FE24E3 80 02 bra L2C2A
4949 L2C28: ; $2C28 - $320A
4950 FE24E5 A9 01 lda #$01
4951 FE24E7 L2C2A:
4952 FE24E7 A0 0A LDY #$0A
4953 FE24E9 91 2D STA ($2D),Y
4954 FE24EB C8 INY
4955 FE24EC A9 00 LDA #$00
4956 FE24EE 91 2D STA ($2D),Y
4957 FE24F0 A9 0A LDA #$0A
4958 FE24F2 4C 7B 27 JMP L155E
4959
4960 PC29: ; $2BD3 - $31B5
4961 FE24F5 A0 01 LDY #$01
4962 FE24F7 B1 2D LDA ($2D),Y
4963 FE24F9 49 80 EOR #$80
4964 FE24FB 91 2D STA ($2D),Y
4965 FE24FD 60 rts
4966
4967 L2BA8: ; $2BA8 - $318A
4968 FE24FE B1 2D LDA ($2D),Y
4969 FE2500 C9 FF CMP #$FF
4970 FE2502 F0 C1 BEQ er09
4971 FE2504 A0 06 LDY #$06
4972 FE2506 B1 2D LDA ($2D),Y
4973 FE2508 C9 FF CMP #$FF
4974 FE250A F0 B9 BEQ er09
4975 FE250C 60 RTS
4976
4977 L2C0C: ; $2C0C - $31EE
4978 FE250D A5 2D LDA $2D
4979 FE250F A4 2E LDY $2E
4980 FE2511 20 33 97 JSR XBBA2
Tue Jul 17 11:00:23 2018 Page 43
4981 FE2514 A5 2D LDA $2D
4982 FE2516 A4 2E LDY $2E
4983 FE2518 18 CLC
4984 FE2519 69 06 ADC #$06
4985 FE251B 90 01 BCC ?02
4986 FE251D C8 INY
4987 FE251E 4C 8D 93 ?02: JMP XBA8C
4988
4989 L2C4A: ; $2C4A - $322C
4990 FE2521 A5 2D LDA $2D
4991 FE2523 18 CLC
4992 FE2524 69 06 ADC #$06
4993 FE2526 A4 2E LDY $2E
4994 FE2528 90 01 BCC ?01
4995 FE252A C8 INY
4996 FE252B 20 33 97 ?01: JSR XBBA2
4997 FE252E A5 2D LDA $2D
4998 FE2530 A4 2E LDY $2E
4999 FE2532 4C 1B 98 JMP XBC5B
5000
5001 PC3A: ; $175B - $19E6
5002 FE2535 20 62 30 JSR L17A3
5003 FE2538 A9 80 LDA #$80
5004 FE253A D0 05 BNE L1749
5005
5006 PC2A: ; $1744 - $19CF
5007 FE253C 20 62 30 JSR L17A3
5008 FE253F A9 40 LDA #$40
5009 L1749: ; $1749 - $19D4
5010 FE2541 A0 00 LDY #$00
5011 FE2543 32 29 AND ($29)
5012 FE2545 F0 02 BEQ ?02
5013 FE2547 A9 01 LDA #$01
5014 FE2549 92 2D ?02: STA ($2D)
5015 FE254B A9 00 LDA #$00
5016 FE254D C8 INY
5017 FE254E 91 2D STA ($2D),Y
5018 FE2550 60 rts
5019
5020 PC2B: ; $2B32 - $3114
5021 FE2551 A5 2D LDA $2D
5022 FE2553 A4 2E LDY $2E
5023 FE2555 20 33 97 JSR XBBA2
5024 FE2558 A5 2D LDA $2D
5025 FE255A 38 SEC
5026 FE255B E9 06 SBC #$06
5027 FE255D 85 2D STA $2D
5028 FE255F B0 02 BCS ?02
5029 FE2561 C6 2E DEC $2E
5030 FE2563 A4 2E ?02: LDY $2E
5031 FE2565 AA TAX
5032 FE2566 4C 92 97 JMP XBBD4
5033
5034 PC2C: ; $2B4D - $312F
5035 FE2569 B1 2D LDA ($2D),Y
5036 FE256B 38 SEC
5037 FE256C E9 06 SBC #$06
Tue Jul 17 11:00:23 2018 Page 44
5038 FE256E AA TAX
5039 FE256F C8 INY
5040 FE2570 B1 2D LDA ($2D),Y
5041 FE2572 E9 00 SBC #$00
5042 FE2574 A8 TAY
5043 FE2575 8A TXA
5044 FE2576 20 33 97 JSR XBBA2
5045 FE2579 20 62 24 JSR L2B26
5046 FE257C A6 2D LDX $2D
5047 FE257E A4 2E LDY $2E
5048 FE2580 4C 92 97 JMP XBBD4
5049
5050 PC2D: ; $2B6A - $314C
5051 FE2583 A5 2D LDA $2D
5052 FE2585 A4 2E LDY $2E
5053 FE2587 20 33 97 JSR XBBA2
5054 FE258A A0 06 LDY #$06
5055 FE258C B1 2D LDA ($2D),Y
5056 FE258E 38 SEC
5057 FE258F E9 06 SBC #$06
5058 FE2591 AA TAX
5059 FE2592 C8 INY
5060 FE2593 B1 2D LDA ($2D),Y
5061 FE2595 E9 00 SBC #$00
5062 FE2597 A8 TAY
5063 FE2598 20 92 97 JSR XBBD4
5064 FE259B A9 08 LDA #$08
5065 FE259D 18 CLC
5066 FE259E 65 2D ADC $2D
5067 FE25A0 85 2D STA $2D
5068 FE25A2 90 02 BCC ?02
5069 FE25A4 E6 2E INC $2E
5070 FE25A6 60 ?02: rts
5071
5072 PC2E: ; $14B1 - $173C
5073 ; clear set variable (16 bytes)
5074 FE25A7 38 SEC
5075 FE25A8 A5 2D LDA $2D
5076 FE25AA E9 10 SBC #$10
5077 FE25AC 85 2D STA $2D
5078 FE25AE B0 02 BCS ?01
5079 FE25B0 C6 2E DEC $2E
5080 FE25B2 A0 0F ?01: LDY #$0F
5081 FE25B4 A9 00 LDA #$00
5082 FE25B6 91 2D ?02: STA ($2D),Y
5083 FE25B8 88 DEY
5084 FE25B9 10 FB BPL ?02
5085 FE25BB 60 rts
5086
5087 PC2F: ; $14C8 - $1753
5088 FE25BC B1 2D LDA ($2D),Y
5089 FE25BE 85 21 STA $21
5090 FE25C0 C8 INY
5091 FE25C1 B1 2D LDA ($2D),Y
5092 FE25C3 85 22 STA $22
5093 FE25C5 20 CB 25 JSR L1506
5094 FE25C8 4C 95 1E JMP SK02
Tue Jul 17 11:00:23 2018 Page 45
5095 FE25CB
5096 L1506: ; $1506 - $1791
5097 FE25CB A5 22 LDA $22
5098 FE25CD D0 1B BNE ?04 ; error
5099 FE25CF A5 21 LDA $21
5100 FE25D1 30 17 BMI ?04 ; error
5101 FE25D3 4A LSR a
5102 FE25D4 4A LSR a
5103 FE25D5 4A LSR a
5104 FE25D6 A8 TAY
5105 FE25D7 C8 INY
5106 FE25D8 C8 INY
5107 FE25D9 A5 21 LDA $21
5108 FE25DB 29 07 AND #$07
5109 FE25DD AA TAX
5110 FE25DE A9 00 LDA #$00
5111 FE25E0 38 SEC
5112 FE25E1 2A ?02: ROL a
5113 FE25E2 CA DEX
5114 FE25E3 10 FC BPL ?02
5115 FE25E5 11 2D ORA ($2D),Y
5116 FE25E7 91 2D STA ($2D),Y
5117 FE25E9 60 RTS
5118 FE25EA A2 08 ?04: LDX #$08 ; error: set value error
5119 FE25EC 4C 50 1B JMP vpmerr
5120
5121 PC30: ; $14D7 - $1762
5122 ; set variable
5123 FE25EF B2 2D LDA ($2D)
5124 FE25F1 85 23 STA $23
5125 FE25F3 ACC16
5126 FE25F3 C2 20 rep #PMFLAG
5127 .LONGA on
5128 .MNLIST
5129 FE25F5 A0 02 LDY #$02
5130 FE25F7 B1 2D LDA ($2D),Y
5131 FE25F9 85 21 STA $21
5132 FE25FB C8 INY
5133 FE25FC A5 2D LDA $2D
5134 FE25FE 1A inc a
5135 FE25FF 1A inc a
5136 FE2600 85 2D STA $2D
5137 FE2602 ACC08
5138 FE2602 E2 20 sep #PMFLAG
5139 .LONGA off
5140 .MNLIST
5141 FE2604 A5 23 ?02: LDA $23
5142 FE2606 C5 21 CMP $21
5143 FE2608 90 0B BCC ?04
5144 FE260A 20 CB 25 JSR L1506
5145 FE260D E6 21 INC $21
5146 FE260F D0 F3 BNE ?02
5147 FE2611 E6 22 INC $22
5148 FE2613 80 EF bra ?02
5149 FE2615 4C 95 1E ?04: jmp SK02
5150
5151 PC31: ; $152A - $17B5
Tue Jul 17 11:00:23 2018 Page 46
5152 ; operator 'or' for set variable
5153 FE2618 B1 2D LDA ($2D),Y
5154 FE261A 99 C0 FF STA MMSET,Y ; (16 bytes)
5155 FE261D C8 INY
5156 FE261E C0 10 CPY #$10
5157 FE2620 D0 F6 BNE PC31
5158 FE2622 B1 2D ?02: LDA ($2D),Y
5159 FE2624 19 B0 FF ORA MMSET-16,Y
5160 FE2627 91 2D STA ($2D),Y
5161 FE2629 C8 INY
5162 FE262A C0 20 CPY #$20
5163 FE262C D0 F4 BNE ?02
5164 FE262E 4C 82 20 JMP L13B5
5165
5166 PC32: ; $xxxx - $29E2
5167 FE2631 24 97 bit runf
5168 FE2633 10 69 bpl PC32x
5169 FE2635 20 57 27 JSR R29D7
5170 FE2638 B9 B0 FF ?02: LDA MMSET-16,Y
5171 FE263B 49 FF EOR #$FF
5172 FE263D 31 2D AND ($2D),Y
5173 FE263F 91 2D STA ($2D),Y
5174 FE2641 C8 INY
5175 FE2642 C0 20 CPY #$20
5176 FE2644 D0 F2 BNE ?02
5177 FE2646 F0 13 BEQ R2A04
5178
5179 PC33: ; $xxxx - $29F5
5180 FE2648 24 97 bit runf
5181 FE264A 10 52 bpl PC32x
5182 FE264C 20 57 27 JSR R29D7
5183 FE264F B9 B0 FF ?02: LDA MMSET-16,Y
5184 FE2652 31 2D AND ($2D),Y
5185 FE2654 91 2D STA ($2D),Y
5186 FE2656 C8 INY
5187 FE2657 C0 20 CPY #$20
5188 FE2659 D0 F4 BNE ?02
5189 FE265B R2A04:
5190 FE265B A9 10 LDA #$10
5191 FE265D 4C 7B 27 JMP R17E9
5192 FE2660
5193 PC34: ; $xxxx - $298F
5194 FE2660 24 97 bit runf
5195 FE2662 10 3A bpl PC32x
5196 FE2664 20 57 27 JSR R29D7
5197 FE2667 B1 2D ?02: LDA ($2D),Y
5198 FE2669 D9 B0 FF CMP MMSET-16,Y
5199 FE266C D0 09 BNE R29A1
5200 FE266E C8 INY
5201 FE266F C0 20 CPY #$20
5202 FE2671 D0 F4 BNE ?02
5203 FE2673 A9 01 R299E: LDA #$01
5204 FE2675 80 02 bra R29A3
5205 FE2677 A9 00 R29A1: lda #$00
5206 FE2679 A0 1E R29A3: LDY #$1E
5207 FE267B 91 2D STA ($2D),Y
5208 FE267D A9 00 LDA #$00
Tue Jul 17 11:00:23 2018 Page 47
5209 FE267F C8 INY
5210 FE2680 91 2D STA ($2D),Y
5211 FE2682 A9 1E LDA #$1E
5212 FE2684 4C 7B 27 JMP R17E9
5213
5214 PC35: ; $xxxx - $29C4
5215 FE2687 24 97 bit runf
5216 FE2689 10 13 bpl PC32x
5217 FE268B 20 57 27 JSR R29D7
5218 FE268E B9 B0 FF ?02: LDA MMSET-16,Y
5219 FE2691 49 FF EOR #$FF
5220 FE2693 31 2D AND ($2D),Y
5221 FE2695 D0 E0 BNE R29A1
5222 FE2697 C8 INY
5223 FE2698 C0 20 CPY #$20
5224 FE269A D0 F2 BNE ?02
5225 FE269C F0 D5 BEQ R299E
5226
5227 FE269E PC32x:
5228 FE269E 4C 4E 1B JMP vpme07 ; error: bad p-code
5229
5230 PC36: ; $xxxx - $29B1
5231 FE26A1 24 97 bit runf
5232 FE26A3 10 F9 bpl PC32x
5233 FE26A5 20 57 27 JSR R29D7
5234 FE26A8 B1 2D ?02: LDA ($2D),Y
5235 FE26AA 49 FF EOR #$FF
5236 FE26AC 39 B0 FF AND MMSET-16,Y
5237 FE26AF D0 C6 BNE R29A1
5238 FE26B1 C8 INY
5239 FE26B2 C0 20 CPY #$20
5240 FE26B4 D0 F2 BNE ?02
5241 FE26B6 F0 BB BEQ R299E
5242
5243 PC3C: ; $xxxx - $2B47
5244 ; 'reset' for generic device
5245 FE26B8 24 97 bit runf
5246 FE26BA 10 E2 bpl PC32x ; error if compiler
5247 FE26BC 20 FA 26 JSR R2B84 ; open device
5248 FE26BF A0 03 LDY #$03
5249 FE26C1 B1 2D LDA ($2D),Y ; high byte of secondary address
5250 FE26C3 D0 04 BNE ?02
5251 FE26C5 A9 A0 LDA #$A0
5252 FE26C7 80 02 bra ?04
5253 FE26C9 A9 A4 ?02: lda #$A4
5254 FE26CB 92 29 ?04: STA ($29)
5255 FE26CD R2B59:
5256 FE26CD A5 2D LDA $2D
5257 FE26CF 18 CLC
5258 FE26D0 69 08 ADC #$08
5259 FE26D2 85 2D STA $2D
5260 FE26D4 90 02 BCC ?02
5261 FE26D6 E6 2E INC $2E
5262 FE26D8 60 ?02: rts
5263
5264 PC3D: ; $xxxx - $2B67
5265 ; 'rewrite' for generic device
Tue Jul 17 11:00:23 2018 Page 48
5266 FE26D9 24 97 bit runf
5267 FE26DB 10 C1 bpl PC32x ; error if compiler
5268 FE26DD 20 FA 26 JSR R2B84 ; open device
5269 FE26E0 38 SEC
5270 FE26E1 A5 29 LDA $29
5271 FE26E3 E9 02 SBC #$02
5272 FE26E5 85 29 STA $29
5273 FE26E7 B0 02 BCS ?02
5274 FE26E9 C6 2A DEC $2A
5275 FE26EB A0 00 ?02: LDY #$00
5276 FE26ED A9 20 LDA #$20
5277 FE26EF 91 29 STA ($29),Y
5278 FE26F1 98 TYA
5279 FE26F2 C8 INY
5280 FE26F3 91 29 STA ($29),Y
5281 FE26F5 C8 INY
5282 FE26F6 91 29 STA ($29),Y
5283 FE26F8 80 D3 bra R2B59 ; branch always
5284
5285 R2B84: ; $xxxx - $2BB4
5286 ; setup params for generic device (rewrite or reset)
5287 FE26FA 64 3E STZ $3E
5288 FE26FC B1 2D LDA ($2D),Y ; offset 0: file name address
5289 FE26FE 85 BB STA $BB
5290 FE2700 C8 INY
5291 FE2701 B1 2D LDA ($2D),Y
5292 FE2703 85 BC STA $BC
5293 FE2705 A5 A1 lda tbnk
5294 FE2707 85 BD sta $BD
5295 FE2709 C8 INY
5296 FE270A B1 2D LDA ($2D),Y ; offset 2: secondary address
5297 FE270C 85 B9 STA $B9
5298 FE270E A0 04 LDY #$04
5299 FE2710 B1 2D LDA ($2D),Y ; offset 4: # device
5300 FE2712 85 BA STA $BA
5301 FE2714 A0 06 LDY #$06
5302 FE2716 B1 2D LDA ($2D),Y ; offset 6: file desc. ptr
5303 FE2718 38 SEC
5304 FE2719 E9 03 SBC #$03
5305 FE271B 91 2D STA ($2D),Y
5306 FE271D 85 29 STA $29
5307 FE271F C8 INY
5308 FE2720 B1 2D LDA ($2D),Y
5309 FE2722 E9 00 SBC #$00
5310 FE2724 91 2D STA ($2D),Y
5311 FE2726 85 2A STA $2A
5312 FE2728 A0 02 LDY #$02
5313 FE272A 91 29 STA ($29),Y
5314 FE272C 88 DEY
5315 FE272D A5 29 LDA $29
5316 FE272F 91 29 STA ($29),Y
5317 FE2731 20 4B 32 JSR R0F8D ; search file
5318 FE2734 A5 B8 LDA $B8
5319 FE2736 30 05 BMI ?02 ; not found
5320 FE2738 20 C3 FF JSR FCLOSE
5321 FE273B 80 03 bra ?04
5322 FE273D 20 CE 31 ?02: JSR R0F69 ; open internal logic file
Tue Jul 17 11:00:23 2018 Page 49
5323 FE2740 A5 3E ?04: LDA $3E
5324 FE2742 D0 1D BNE R29D7x ; if any error
5325 FE2744 A5 BB LDA $BB
5326 FE2746 05 BC ORA $BC
5327 FE2748 F0 08 BEQ ?08 ; if no filename
5328 FE274A A0 00 LDY #$00
5329 FE274C C8 ?06: INY
5330 FE274D B7 BB LDA [$BB],Y
5331 FE274F D0 FB BNE ?06
5332 FE2751 98 TYA
5333 FE2752 85 B7 ?08: STA $B7
5334 FE2754 4C C0 FF JMP FOPEN
5335
5336 R29D7: ; $xxxx - $29D7
5337 FE2757 B1 2D LDA ($2D),Y
5338 FE2759 99 C0 FF STA MMSET,Y
5339 FE275C C8 INY
5340 FE275D C0 10 CPY #$10
5341 FE275F D0 F6 BNE R29D7
5342 FE2761 60 R29D7x: RTS
5343
5344 PC38: ; $1543 - $17CE
5345 FE2762 A0 10 LDY #$10
5346 FE2764 ACC16
5347 FE2764 C2 20 rep #PMFLAG
5348 .LONGA on
5349 .MNLIST
5350 FE2766 B1 2D LDA ($2D),Y
5351 FE2768 38 SEC
5352 FE2769 E9 10 00 SBC #$0010
5353 FE276C 85 27 STA $27
5354 FE276E ACC08
5355 FE276E E2 20 sep #PMFLAG
5356 .LONGA off
5357 .MNLIST
5358 FE2770 A0 0F LDY #$0F
5359 FE2772 B1 2D ?02: LDA ($2D),Y
5360 FE2774 91 27 STA ($27),Y
5361 FE2776 88 DEY
5362 FE2777 10 F9 BPL ?02
5363 FE2779 A9 12 LDA #$12
5364 FE277B R17E9:
5365 L155E: ; $155E - $17E9
5366 FE277B 18 CLC
5367 FE277C 65 2D ADC $2D
5368 FE277E 85 2D STA $2D
5369 FE2780 90 02 BCC ?04
5370 FE2782 E6 2E INC $2E
5371 FE2784 60 ?04: rts
5372
5373 PC39: ; $2A93 - $3075
5374 ; return from real function
5375 FE2785 A5 2D LDA $2D
5376 FE2787 A4 2E LDY $2E
5377 FE2789 20 33 97 JSR XBBA2
5378 FE278C ACC16
5379 FE278C C2 20 rep #PMFLAG
Tue Jul 17 11:00:23 2018 Page 50
5380 .LONGA on
5381 .MNLIST
5382 FE278E A5 2F LDA $2F
5383 FE2790 85 2D STA $2D
5384 FE2792 A0 02 LDY #$02
5385 FE2794 B1 2D LDA ($2D),Y
5386 FE2796 85 2F STA $2F
5387 FE2798 C8 INY
5388 FE2799 C8 INY
5389 FE279A B1 2D LDA ($2D),Y
5390 FE279C 85 2B STA $2B
5391 FE279E ACC08
5392 FE279E E2 20 sep #PMFLAG
5393 .LONGA off
5394 .MNLIST
5395 FE27A0 A6 2D LDX $2D
5396 FE27A2 A4 2E LDY $2E
5397 FE27A4 4C 92 97 JMP XBBD4
5398
5399 PC52: ; $1B32 - $1DBD
5400 FE27A7 PC53:
5401 FE27A7 20 17 2A JSR L1B8B
5402 FE27AA 80 0E bra L19C1
5403
5404 PC58: ; $1B38 - $1DC3
5405 FE27AC PC59:
5406 FE27AC A2 31 LDX #$31
5407 FE27AE A5 24 LDA $24
5408 FE27B0 85 28 STA $28
5409 FE27B2 A5 23 LDA $23
5410 FE27B4 80 04 bra L19C1
5411
5412 FE27B6 L19BD:
5413 PC80: ; $19BD - $1C48
5414 FE27B6 86 28 STX $28
5415 FE27B8 A2 2F LDX #$2F
5416 L19C1: ; $19C1 - $1C4C
5417 FE27BA 0A ASL a
5418 FE27BB 26 28 ROL $28
5419 FE27BD 85 27 STA $27
5420 FE27BF ACC16
5421 FE27BF C2 20 rep #PMFLAG
5422 .LONGA on
5423 .MNLIST
5424 FE27C1 A5 2D LDA $2D
5425 FE27C3 3A dec a
5426 FE27C4 3A dec a
5427 FE27C5 85 2D STA $2D
5428 FE27C7 B5 00 LDA <$00,X
5429 FE27C9 38 SEC
5430 FE27CA E5 27 SBC $27
5431 FE27CC 92 2D STA ($2D)
5432 FE27CE ACC08
5433 FE27CE E2 20 sep #PMFLAG
5434 .LONGA off
5435 .MNLIST
5436 FE27D0 60 rts
Tue Jul 17 11:00:23 2018 Page 51
5437
5438 PC56: ; $1B26 - $1DB1
5439 FE27D1 PC57:
5440 FE27D1 20 17 2A JSR L1B8B
5441 FE27D4 80 04 bra PC90a
5442
5443 PC90: ; $195B - $1BE6
5444 FE27D6 86 28 STX $28
5445 FE27D8 A2 2F LDX #$2F
5446
5447 PC90a: ; $195F - $1BEA
5448 FE27DA 85 27 STA $27
5449 FE27DC ACC16
5450 FE27DC C2 20 rep #PMFLAG
5451 .LONGA on
5452 .MNLIST
5453 FE27DE E6 27 INC $27
5454 FE27E0 06 27 ASL $27
5455 FE27E2 38 SEC
5456 FE27E3 B5 00 LDA <$00,X
5457 FE27E5 E5 27 SBC $27
5458 FE27E7 85 27 STA $27
5459 FE27E9 A5 2D LDA $2D
5460 FE27EB 3A dec a
5461 FE27EC 3A dec a
5462 FE27ED 85 2D STA $2D
5463 FE27EF B2 27 LDA ($27)
5464 FE27F1 92 2D STA ($2D)
5465 FE27F3 ACC08
5466 FE27F3 E2 20 sep #PMFLAG
5467 .LONGA off
5468 .MNLIST
5469 FE27F5 60 rts
5470
5471 PC54: ; 1B2C - $1DB7
5472 FE27F6 PC55:
5473 FE27F6 20 17 2A JSR L1B8B
5474 FE27F9 80 0A bra L19E6
5475
5476 PCE0: ; $198F - $1C1A
5477 FE27FB 86 28 STX $28
5478 FE27FD A2 31 LDX #$31
5479 FE27FF 80 D9 BRA PC90a
5480
5481 PCA0: ; $19E2 - $1C6D
5482 FE2801 86 28 STX $28
5483 FE2803 A2 2F LDX #$2F
5484
5485 FE2805 L19E6:
5486 PCA0a: ; $19E6 - $1C71
5487 FE2805 85 27 STA $27
5488 FE2807 ACC16
5489 FE2807 C2 20 rep #PMFLAG
5490 .LONGA on
5491 .MNLIST
5492 FE2809 E6 27 INC $27
5493 FE280B 06 27 ASL $27
Tue Jul 17 11:00:23 2018 Page 52
5494 FE280D 38 SEC
5495 FE280E B5 00 LDA <$00,X
5496 FE2810 E5 27 SBC $27
5497 FE2812 85 27 STA $27
5498 FE2814 B2 2D LDA ($2D)
5499 FE2816 92 27 STA ($27)
5500 FE2818 A5 2D LDA $2D
5501 FE281A 1A inc a
5502 FE281B 1A inc a
5503 FE281C 85 2D STA $2D
5504 FE281E ACC08
5505 FE281E E2 20 sep #PMFLAG
5506 .LONGA off
5507 .MNLIST
5508 FE2820 60 rts
5509
5510 PCF0: ; $1A17 - $1CA2
5511 FE2821 86 28 STX $28
5512 FE2823 A2 31 LDX #$31
5513 FE2825 80 DE BRA PCA0a
5514
5515 PC4D: ; $1BB9 - $1E44
5516 ; place a p-code pointer in stack
5517 FE2827
5518 FE2827 24 97 bit runf
5519 FE2829 30 0A bmi ?02
5520 FE282B A5 24 lda $24
5521 FE282D 38 sec
5522 FE282E E9 30 sbc #>PCCDST
5523 FE2830 AA tax
5524 FE2831 A5 23 lda $23
5525 FE2833 80 04 bra PCB0
5526
5527 FE2835 A5 23 ?02: LDA $23
5528 FE2837 A6 24 LDX $24
5529
5530 FE2839 L1945:
5531 PCB0: ; $1945 - $1BD0
5532 ; push integer AX into stack
5533 FE2839 EB xba
5534 FE283A 8A txa ; byte high
5535 FE283B EB xba
5536 FE283C CPU16
5537 FE283C C2 30 rep #(PMFLAG.OR.PXFLAG)
5538 .LONGA on
5539 .LONGI on
5540 .MNLIST
5541 FE283E A8 tay
5542 FE283F A5 2D LDA $2D
5543 FE2841 3A dec a
5544 FE2842 3A dec a
5545 FE2843 85 2D STA $2D
5546 FE2845 98 tya
5547 FE2846 92 2D STA ($2D)
5548 FE2848 CPU08
5549 FE2848 E2 30 sep #(PMFLAG.OR.PXFLAG)
5550 .LONGA off
Tue Jul 17 11:00:23 2018 Page 53
5551 .LONGI off
5552 .MNLIST
5553 FE284A 60 rts
5554
5555 PCC0: ; $1995 - $1C20
5556 FE284B 85 27 STA $27
5557 FE284D 86 28 STX $28
5558 FE284F ACC16
5559 FE284F C2 20 rep #PMFLAG
5560 .LONGA on
5561 .MNLIST
5562 FE2851 E6 27 INC $27
5563 FE2853 06 27 ASL $27
5564 FE2855 38 SEC
5565 FE2856 B2 2D LDA ($2D)
5566 FE2858 E5 27 SBC $27
5567 FE285A 85 27 STA $27
5568 FE285C B2 27 LDA ($27)
5569 FE285E 92 2D STA ($2D)
5570 FE2860 ACC08
5571 FE2860 E2 20 sep #PMFLAG
5572 .LONGA off
5573 .MNLIST
5574 FE2862 60 rts
5575 FE2863
5576 PCD0: ; $1A1D - $1CA8
5577 FE2863 86 28 STX $28
5578 FE2865 85 27 STA $27
5579 FE2867 ACC16
5580 FE2867 C2 20 rep #PMFLAG
5581 .LONGA on
5582 .MNLIST
5583 FE2869 E6 27 INC $27
5584 FE286B 06 27 ASL $27
5585 FE286D 38 SEC
5586 FE286E A0 02 LDY #$02
5587 FE2870 B1 2D LDA ($2D),Y
5588 FE2872 E5 27 SBC $27
5589 FE2874 85 27 STA $27
5590 FE2876 B2 2D LDA ($2D)
5591 FE2878 92 27 STA ($27)
5592 FE287A 18 CLC
5593 FE287B A5 2D LDA $2D
5594 FE287D 69 04 00 ADC #$0004
5595 FE2880 85 2D STA $2D
5596 FE2882 ACC08
5597 FE2882 E2 20 sep #PMFLAG
5598 .LONGA off
5599 .MNLIST
5600 FE2884 60 rts
5601
5602 PC40: ; $156A - $17F5
5603 ; absolute jmp to p-code - update p-code pointer
5604 FE2885 ACC16
5605 FE2885 C2 20 rep #PMFLAG
5606 .LONGA on
5607 .MNLIST
Tue Jul 17 11:00:23 2018 Page 54
5608 FE2887 A5 23 LDA $23
5609 FE2889 1A inc a
5610 FE288A F0 0E beq ?02
5611 FE288C 3A dec a
5612 FE288D A6 97 ldx runf
5613 FE288F 30 04 bmi ?01
5614 FE2891 38 sec
5615 FE2892 E9 00 30 sbc #PCCDST
5616 FE2895 85 2B ?01: STA $2B
5617 FE2897 CPU08
5618 FE2897 E2 30 sep #(PMFLAG.OR.PXFLAG)
5619 .LONGA off
5620 .LONGI off
5621 .MNLIST
5622 FE2899 60 rts
5623 FE289A A2 0B ?02: LDX #$0B ; undefined goto
5624 FE289C _jer: CPU08
5625 FE289C E2 30 sep #(PMFLAG.OR.PXFLAG)
5626 .LONGA off
5627 .LONGI off
5628 .MNLIST
5629 FE289E 4C 50 1B JMP vpmerr
5630
5631 PC41: ; $1580 - $180B
5632 ; absolute conditioned jmp to p-code - update p-code pointer
5633 FE28A1 B2 2D LDA ($2D)
5634 FE28A3 6A ROR a
5635 FE28A4 B0 0F BCS ?02
5636 FE28A6 ACC16
5637 FE28A6 C2 20 rep #PMFLAG
5638 .LONGA on
5639 .MNLIST
5640 FE28A8 A5 23 LDA $23
5641 FE28AA A6 97 ldx runf
5642 FE28AC 30 03 bmi ?01
5643 FE28AE E9 FF 2F sbc #PCCDST-1 ; here CF=0
5644 FE28B1 85 2B ?01: STA $2B
5645 FE28B3 ACC08
5646 FE28B3 E2 20 sep #PMFLAG
5647 .LONGA off
5648 .MNLIST
5649 FE28B5 4C 95 1E ?02: JMP SK02
5650
5651 PC42: ; $1590 - $181B
5652 ; 'case' jmp table - update p-code pointer
5653 FE28B8 A2 06 LDX #$06 ; case error
5654 FE28BA 38 SEC
5655 FE28BB 24 97 bit runf
5656 FE28BD ACC16
5657 FE28BD C2 20 rep #PMFLAG
5658 .LONGA on
5659 .MNLIST
5660 FE28BF 30 09 bmi ?01
5661 FE28C1 A5 23 lda $23
5662 FE28C3 E9 00 30 sbc #PCCDST
5663 FE28C6 85 23 sta $23
5664 FE28C8 90 D2 bcc _jer
Tue Jul 17 11:00:23 2018 Page 55
5665 FE28CA B2 2D ?01: LDA ($2D)
5666 FE28CC F2 23 SBC ($23)
5667 FE28CE 85 27 STA $27
5668 FE28D0 30 CA BMI _jer ; error
5669 FE28D2 A5 23 LDA $23
5670 FE28D4 1A inc a
5671 FE28D5 1A inc a
5672 FE28D6 85 23 STA $23
5673 FE28D8 B2 23 LDA ($23)
5674 FE28DA 38 sec
5675 FE28DB F2 2D SBC ($2D)
5676 FE28DD 30 BD BMI _jer
5677 FE28DF 06 27 ASL $27
5678 FE28E1 A5 23 LDA $23
5679 FE28E3 65 27 ADC $27
5680 FE28E5 85 27 STA $27
5681 FE28E7 A0 02 LDY #$02
5682 FE28E9 B1 27 LDA ($27),Y
5683 FE28EB C9 00 FF cmp #$FF00
5684 FE28EE B0 AC bcs _jer ; error
5685 FE28F0 A6 97 ldx runf
5686 FE28F2 30 03 bmi ?02
5687 FE28F4 E9 FF 2F sbc #PCCDST-1 ; here CF=0
5688 FE28F7 85 2B ?02: STA $2B
5689 FE28F9 ACC08
5690 FE28F9 E2 20 sep #PMFLAG
5691 .LONGA off
5692 .MNLIST
5693 FE28FB 4C 95 1E JMP SK02
5694
5695 PC43: ; $15F8 - $1883
5696 FE28FE 24 97 bit runf
5697 FE2900 30 07 bmi ?02
5698 FE2902 38 sec
5699 FE2903 A5 24 lda $24
5700 FE2905 E9 30 sbc #>PCCDST
5701 FE2907 85 24 sta $24
5702 FE2909 20 49 29 ?02: JSR L15DB
5703 FE290C 4C 95 1E JMP SK02
5704
5705 PC44: ; $15FE - $1889
5706 FE290F 24 97 bit runf
5707 FE2911 30 07 bmi ?01
5708 FE2913 38 sec
5709 FE2914 A5 24 lda $24
5710 FE2916 E9 30 sbc #>PCCDST
5711 FE2918 85 24 sta $24
5712 FE291A A2 04 ?01: LDX #$04 ; error: array index
5713 FE291C 20 B2 29 JSR L1656
5714 FE291F 20 66 29 JSR L1626
5715 FE2922 A0 00 LDY #$00
5716 FE2924 B1 23 LDA ($23),Y
5717 FE2926 A0 02 LDY #$02
5718 FE2928 51 23 EOR ($23),Y
5719 FE292A 4A LSR a
5720 FE292B B0 06 BCS ?02
5721 FE292D E6 21 INC $21
Tue Jul 17 11:00:23 2018 Page 56
5722 FE292F D0 02 BNE ?02
5723 FE2931 E6 22 INC $22
5724 FE2933 18 ?02: CLC
5725 FE2934 20 56 29 JSR L15E8
5726 FE2937 4C 95 1E JMP SK02
5727
5728 PC45: ; $161E - $18A9
5729 FE293A A2 05 LDX #$05 ; variable out of range
5730 FE293C 24 97 bit runf
5731 FE293E 30 72 bmi L1656
5732 FE2940 38 sec
5733 FE2941 A5 24 lda $24
5734 FE2943 E9 30 sbc #>PCCDST
5735 FE2945 85 24 sta $24
5736 FE2947 80 69 bra L1656
5737
5738 L15DB: ; $15DB - $1866
5739 FE2949 R1866:
5740 FE2949 A2 04 LDX #$04 ; error: array index
5741 FE294B 20 B2 29 JSR L1656
5742 FE294E 20 66 29 JSR L1626
5743 FE2951 06 21 ASL $21
5744 FE2953 26 22 ROL $22
5745 FE2955 38 SEC
5746 L15E8: ; $15E8 - $1873
5747 FE2956 A0 02 LDY #$02
5748 FE2958 B1 2D LDA ($2D),Y
5749 FE295A E5 21 SBC $21
5750 FE295C 91 2D STA ($2D),Y
5751 FE295E C8 INY
5752 FE295F B1 2D LDA ($2D),Y
5753 FE2961 E5 22 SBC $22
5754 FE2963 91 2D STA ($2D),Y
5755 FE2965 60 RTS
5756
5757 L1626: ; $1626 - $18B1
5758 FE2966 A0 02 LDY #$02
5759 FE2968 38 SEC
5760 FE2969 ACC16
5761 FE2969 C2 20 rep #PMFLAG
5762 .LONGA on
5763 .MNLIST
5764 FE296B B1 23 LDA ($23),Y
5765 FE296D F2 2D SBC ($2D)
5766 FE296F 85 21 STA $21
5767 FE2971 ACC08
5768 FE2971 E2 20 sep #PMFLAG
5769 .LONGA off
5770 .MNLIST
5771 FE2973 A0 04 LDY #$04
5772 FE2975 B1 23 LDA ($23),Y
5773 FE2977 85 25 STA $25
5774 FE2979 4A LSR a
5775 FE297A C8 INY
5776 FE297B 11 23 ORA ($23),Y
5777 FE297D F0 5E BEQ L1681
5778 FE297F B1 23 LDA ($23),Y
Tue Jul 17 11:00:23 2018 Page 57
5779 FE2981 85 26 STA $26
5780 FE2983 A5 21 LDA $21
5781 FE2985 85 23 STA $23
5782 FE2987 A5 22 LDA $22
5783 FE2989 85 24 STA $24
5784 ;;JMP imult
5785
5786 ; mult integer $23-24 and $25-$26 and leave result in $21-$22
5787 ; $17E3 - $1A6E
5788 FE298B imult:
5789 FE298B A9 00 LDA #$00
5790 FE298D 85 21 STA $21
5791 FE298F 85 22 STA $22
5792 FE2991 A2 10 LDX #$10
5793 FE2993 66 24 ?02: ROR $24
5794 FE2995 66 23 ROR $23
5795 FE2997 90 10 BCC ?04
5796 FE2999 18 CLC
5797 FE299A A5 21 LDA $21
5798 FE299C 65 25 ADC $25
5799 FE299E 85 21 STA $21
5800 FE29A0 A5 22 LDA $22
5801 FE29A2 65 26 ADC $26
5802 FE29A4 85 22 STA $22
5803 FE29A6 90 01 BCC ?04
5804 FE29A8 60 RTS
5805 FE29A9 06 25 ?04: ASL $25
5806 FE29AB 26 26 ROL $26
5807 FE29AD CA DEX
5808 FE29AE D0 E3 BNE ?02
5809 FE29B0 18 CLC
5810 FE29B1 60 RTS
5811
5812 L1656: ; $1656 - $18E1
5813 ; enter with Y = 0
5814 FE29B2 B1 2D LDA ($2D),Y
5815 FE29B4 D1 23 CMP ($23),Y
5816 FE29B6 C8 INY
5817 FE29B7 B1 23 LDA ($23),Y
5818 FE29B9 49 80 EOR #$80
5819 FE29BB 85 27 STA $27
5820 FE29BD B1 2D LDA ($2D),Y
5821 FE29BF 49 80 EOR #$80
5822 FE29C1 E5 27 SBC $27
5823 FE29C3 90 19 BCC L1682
5824 FE29C5 C8 INY
5825 FE29C6 B1 23 LDA ($23),Y
5826 FE29C8 A0 00 LDY #$00
5827 FE29CA D1 2D CMP ($2D),Y
5828 FE29CC C8 INY
5829 FE29CD B1 2D LDA ($2D),Y
5830 FE29CF 49 80 EOR #$80
5831 FE29D1 85 27 STA $27
5832 FE29D3 A0 03 LDY #$03
5833 FE29D5 B1 23 LDA ($23),Y
5834 FE29D7 49 80 EOR #$80
5835 FE29D9 E5 27 SBC $27
Tue Jul 17 11:00:23 2018 Page 58
5836 FE29DB 90 01 BCC L1682
5837 FE29DD L1681:
5838 FE29DD 60 RTS
5839 FE29DE L1682:
5840 FE29DE 4C 50 1B JMP vpmerr
5841
5842 PC46: ; $1B85 - $1E10
5843 ; call function/procedure from procedure/function at superior level
5844 FE29E1 20 17 2A JSR L1B8B
5845 FE29E4 80 06 BRA L1B45
5846
5847 PC47: ; $1B81 - $1E0C
5848 ; call function/procedure from main program
5849 FE29E6 A2 31 LDX #$31
5850 FE29E8 80 02 BRA L1B45
5851
5852 PC48: ; $1B43 - $1DCE
5853 ; call nested function/procedure from procedure/function
5854 FE29EA A2 2F LDX #$2F
5855 L1B45: ; $1B45 - $1DD0
5856 FE29EC ACC16
5857 FE29EC C2 20 rep #PMFLAG
5858 .LONGA on
5859 .MNLIST
5860 FE29EE B2 39 LDA ($39)
5861 FE29F0 48 PHA
5862 FE29F1 B5 00 LDA <$00,X
5863 FE29F3 92 39 STA ($39)
5864 FE29F5 C8 INY
5865 FE29F6 C8 INY
5866 FE29F7 A5 2F LDA $2F
5867 FE29F9 91 39 STA ($39),Y
5868 FE29FB C8 INY
5869 FE29FC C8 INY
5870 FE29FD A5 2B LDA $2B
5871 FE29FF 91 39 STA ($39),Y
5872 FE2A01 A5 39 LDA $39
5873 FE2A03 85 2F STA $2F
5874 FE2A05 68 PLA
5875 FE2A06 85 39 STA $39
5876 FE2A08 A5 23 LDA $23
5877 FE2A0A A6 97 ldx runf
5878 FE2A0C 30 04 bmi ?02
5879 FE2A0E 38 sec
5880 FE2A0F E9 00 30 sbc #PCCDST
5881 FE2A12 85 2B ?02: STA $2B
5882 FE2A14 ACC08
5883 FE2A14 E2 20 sep #PMFLAG
5884 .LONGA off
5885 .MNLIST
5886 FE2A16 60 rts
5887
5888 L1B8B: ; $1B8B - $1E16
5889 FE2A17 B1 2B LDA ($2B),Y
5890 FE2A19 E6 2B INC $2B
5891 FE2A1B D0 02 BNE ?02
5892 FE2A1D E6 2C INC $2C
Tue Jul 17 11:00:23 2018 Page 59
5893 FE2A1F ?02:
5894 L1B93: ; $1B93 - $1E1E
5895 FE2A1F AA TAX
5896 FE2A20 A5 2F LDA $2F
5897 FE2A22 85 21 STA $21
5898 FE2A24 A5 30 LDA $30
5899 FE2A26 85 22 STA $22
5900 FE2A28 CA ?04: DEX
5901 FE2A29 30 10 BMI ?06
5902 FE2A2B B1 21 LDA ($21),Y
5903 FE2A2D 85 27 STA $27
5904 FE2A2F C8 INY
5905 FE2A30 B1 21 LDA ($21),Y
5906 FE2A32 88 DEY
5907 FE2A33 85 22 STA $22
5908 FE2A35 A5 27 LDA $27
5909 FE2A37 85 21 STA $21
5910 FE2A39 80 ED BRA ?04
5911 FE2A3B A2 21 ?06: LDX #$21
5912 FE2A3D A5 24 LDA $24
5913 FE2A3F 85 28 STA $28
5914 FE2A41 A5 23 LDA $23
5915 FE2A43 60 RTS
5916
5917 PC49: ; $2D14 - $2AD5
5918 ; compiler cause 'bad p-code' error (only in run mode)
5919 FE2A44 24 97 bit runf
5920 FE2A46 10 6F bpl er07
5921 FE2A48 A5 23 LDA $23
5922 FE2A4A F0 6A BEQ ?14
5923 FE2A4C A5 2F LDA $2F
5924 FE2A4E 85 21 STA $21
5925 FE2A50 A5 30 LDA $30
5926 FE2A52 85 22 STA $22
5927 FE2A54 B1 2F ?02: LDA ($2F),Y
5928 FE2A56 AA TAX
5929 FE2A57 C8 INY
5930 FE2A58 B1 2F LDA ($2F),Y
5931 FE2A5A 85 30 STA $30
5932 FE2A5C 86 2F STX $2F
5933 FE2A5E 88 DEY
5934 FE2A5F C6 23 DEC $23
5935 FE2A61 D0 F1 BNE ?02
5936 FE2A63 A0 02 ?04: LDY #$02
5937 FE2A65 B1 21 LDA ($21),Y
5938 FE2A67 AA TAX
5939 FE2A68 C8 INY
5940 FE2A69 B1 21 LDA ($21),Y
5941 FE2A6B E4 2F CPX $2F
5942 FE2A6D D0 04 BNE ?06
5943 FE2A6F C5 30 CMP $30
5944 FE2A71 F0 06 BEQ ?08
5945 FE2A73 86 21 ?06: STX $21
5946 FE2A75 85 22 STA $22
5947 FE2A77 D0 EA BNE ?04
5948 FE2A79 A5 39 ?08: LDA $39
5949 FE2A7B 05 3A ORA $3A
Tue Jul 17 11:00:23 2018 Page 60
5950 FE2A7D F0 2A BEQ ?12
5951 FE2A7F A5 39 LDA $39
5952 FE2A81 C5 2F CMP $2F
5953 FE2A83 A5 3A LDA $3A
5954 FE2A85 E5 30 SBC $30
5955 FE2A87 B0 20 BCS ?12
5956 FE2A89 A5 39 LDA $39
5957 FE2A8B C5 21 CMP $21
5958 FE2A8D A5 3A LDA $3A
5959 FE2A8F E5 22 SBC $22
5960 FE2A91 90 08 BCC ?10
5961 FE2A93 A5 39 LDA $39
5962 FE2A95 85 21 STA $21
5963 FE2A97 A5 3A LDA $3A
5964 FE2A99 85 22 STA $22
5965 FE2A9B A9 00 ?10: LDA #$00
5966 ;ldy #0 ; ?????
5967 FE2A9D B1 39 LDA ($39),Y
5968 FE2A9F AA TAX
5969 FE2AA0 C8 INY
5970 FE2AA1 B1 39 LDA ($39),Y
5971 FE2AA3 86 39 STX $39
5972 FE2AA5 85 3A STA $3A
5973 FE2AA7 80 D0 BRA ?08
5974 FE2AA9 A5 21 ?12: LDA $21
5975 FE2AAB 18 CLC
5976 FE2AAC 69 06 ADC #$06
5977 FE2AAE 85 2D STA $2D
5978 FE2AB0 A5 22 LDA $22
5979 FE2AB2 69 00 ADC #$00
5980 FE2AB4 85 2E STA $2E
5981 FE2AB6 60 ?14: RTS
5982
5983 FE2AB7 PC4F:
5984 FE2AB7 er07:
5985 FE2AB7 4C 4E 1B JMP vpme07 ; error: bad p-code
5986
5987 PC4A: ; $1685 - $1910
5988 ; execute an external routine - address in $23-$24
5989 ; in the same program bank
5990 FE2ABA 6C 23 7F jmp (CBMP0+$23)
5991
5992 PC4B: ; $xxxx - $32EA (run only)
5993 FE2ABD 24 97 bit runf
5994 FE2ABF 10 F6 bpl er07
5995 FE2AC1 A9 04 LDA #$04
5996 FE2AC3 A2 06 LDX #$06
5997 FE2AC5 20 2D 2B JSR R3335
5998 FE2AC8 A0 00 ?02: LDY #$00
5999 FE2ACA B1 21 LDA ($21),Y
6000 FE2ACC 91 25 STA ($25),Y
6001 FE2ACE A0 02 LDY #$02
6002 FE2AD0 B1 27 LDA ($27),Y
6003 FE2AD2 F0 06 BEQ ?04
6004 FE2AD4 E6 21 INC $21
6005 FE2AD6 D0 02 BNE ?04
6006 FE2AD8 E6 22 INC $22
Tue Jul 17 11:00:23 2018 Page 61
6007 FE2ADA 20 8D 2B ?04: JSR R3399
6008 FE2ADD D0 E9 BNE ?02
6009 FE2ADF A9 04 LDA #$04
6010 FE2AE1 4C 7B 27 JMP R17E9
6011
6012 PC4C: ; $xxxx - $330D (run only)
6013 FE2AE4 24 97 bit runf
6014 FE2AE6 10 CF bpl er07
6015 FE2AE8 A9 08 LDA #$08
6016 FE2AEA A2 04 LDX #$04
6017 FE2AEC 20 2D 2B JSR R3335
6018 FE2AEF A0 00 ?02: LDY #$00
6019 FE2AF1 B1 25 LDA ($25),Y
6020 FE2AF3 91 21 STA ($21),Y
6021 FE2AF5 A0 02 LDY #$02
6022 FE2AF7 B1 27 LDA ($27),Y
6023 FE2AF9 F0 0B BEQ ?04
6024 FE2AFB 88 DEY
6025 FE2AFC A9 00 LDA #$00
6026 FE2AFE 91 21 STA ($21),Y
6027 FE2B00 E6 21 INC $21
6028 FE2B02 D0 02 BNE ?04
6029 FE2B04 E6 22 INC $22
6030 FE2B06 20 8D 2B ?04: JSR R3399
6031 FE2B09 D0 E4 BNE ?02
6032 FE2B0B A9 06 LDA #$06
6033 FE2B0D 4C 7B 27 JMP R17E9
6034
6035 PC4E: ; $200F - $2A92
6036 FE2B10 20 1D 2B JSR L2027
6037 FE2B13 ACC16
6038 FE2B13 C2 20 rep #PMFLAG
6039 .LONGA on
6040 .MNLIST
6041 FE2B15 B2 23 LDA ($23)
6042 FE2B17 3A dec a
6043 FE2B18 92 23 STA ($23)
6044 FE2B1A ACC08
6045 FE2B1A E2 20 sep #PMFLAG
6046 .LONGA off
6047 .MNLIST
6048 FE2B1C 60 rts
6049 FE2B1D
6050 L2027: ; $2027 - $2AA6
6051 FE2B1D ACC16
6052 FE2B1D C2 20 rep #PMFLAG
6053 .LONGA on
6054 .MNLIST
6055 FE2B1F E6 23 INC $23
6056 FE2B21 06 23 ASL $23
6057 FE2B23 A5 2F LDA $2F
6058 FE2B25 38 SEC
6059 FE2B26 E5 23 SBC $23
6060 FE2B28 85 23 STA $23
6061 FE2B2A ACC08
6062 FE2B2A E2 20 sep #PMFLAG
6063 .LONGA off
Tue Jul 17 11:00:23 2018 Page 62
6064 .MNLIST
6065 FE2B2C 60 RTS
6066
6067 R3335: ; $xxxx - $3335 (run only)
6068 FE2B2D 48 PHA
6069 FE2B2E A5 2D LDA $2D
6070 FE2B30 48 PHA
6071 FE2B31 8A TXA
6072 FE2B32 18 CLC
6073 FE2B33 65 2D ADC $2D
6074 FE2B35 85 2D STA $2D
6075 FE2B37 A5 2E LDA $2E
6076 FE2B39 48 PHA
6077 FE2B3A 69 00 ADC #$00
6078 FE2B3C 85 2E STA $2E
6079 FE2B3E A0 04 LDY #$04
6080 FE2B40 B1 23 LDA ($23),Y
6081 FE2B42 0A ASL a
6082 FE2B43 85 47 STA tmpv1
6083 FE2B45 C8 INY
6084 FE2B46 B1 23 LDA ($23),Y
6085 FE2B48 2A ROL a
6086 FE2B49 85 48 STA tmpv2
6087 FE2B4B A0 00 LDY #$00
6088 FE2B4D 20 49 29 JSR R1866
6089 FE2B50 A0 02 LDY #$02
6090 FE2B52 B1 2D LDA ($2D),Y
6091 FE2B54 38 SEC
6092 FE2B55 E5 47 SBC tmpv1
6093 FE2B57 85 21 STA $21
6094 FE2B59 C8 INY
6095 FE2B5A B1 2D LDA ($2D),Y
6096 FE2B5C E5 48 SBC tmpv2
6097 FE2B5E 85 22 STA $22
6098 FE2B60 68 PLA
6099 FE2B61 85 28 STA $28
6100 FE2B63 68 PLA
6101 FE2B64 85 27 STA $27
6102 FE2B66 A0 00 LDY #$00
6103 FE2B68 B1 27 LDA ($27),Y
6104 FE2B6A 85 23 STA $23
6105 FE2B6C 18 CLC
6106 FE2B6D 69 01 ADC #$01
6107 FE2B6F 29 FE AND #$FE
6108 FE2B71 85 25 STA $25
6109 FE2B73 C8 INY
6110 FE2B74 B1 27 LDA ($27),Y
6111 FE2B76 85 24 STA $24
6112 FE2B78 69 00 ADC #$00
6113 FE2B7A 85 26 STA $26
6114 FE2B7C 68 PLA
6115 FE2B7D A8 TAY
6116 FE2B7E 38 SEC
6117 FE2B7F B1 27 LDA ($27),Y
6118 FE2B81 E5 25 SBC $25
6119 FE2B83 85 25 STA $25
6120 FE2B85 C8 INY
Tue Jul 17 11:00:23 2018 Page 63
6121 FE2B86 B1 27 LDA ($27),Y
6122 FE2B88 E5 26 SBC $26
6123 FE2B8A 85 26 STA $26
6124 FE2B8C 60 RTS
6125
6126 R3399: ; $xxxx - $3399 (compiler only)
6127 FE2B8D ACC16
6128 FE2B8D C2 20 rep #PMFLAG
6129 .LONGA on
6130 .MNLIST
6131 FE2B8F E6 21 INC $21
6132 FE2B91 E6 25 INC $25
6133 FE2B93 C6 23 dec $23
6134 FE2B95 ACC08
6135 FE2B95 E2 20 sep #PMFLAG
6136 .LONGA off
6137 .MNLIST
6138 FE2B97 A5 24 lda $24
6139 FE2B99 05 23 ORA $23
6140 FE2B9B 60 RTS
6141
6142 ; line number (run only)
6143 PC50: ; not in compiler - $2984
6144 ; store line number in $3F-$40
6145 FE2B9C PC51:
6146 FE2B9C 24 97 bit runf
6147 FE2B9E 30 03 bmi ?02
6148 FE2BA0 4C 4E 1B jmp vpme07
6149 FE2BA3 A5 23 ?02: LDA $23
6150 FE2BA5 85 3F STA $3F
6151 FE2BA7 A5 24 LDA $24
6152 FE2BA9 85 40 STA $40
6153 FE2BAB 60 rts
6154
6155 PC5A: ; $2CF0 - $33B5
6156 PC5B: ; simple 'new' for compiler
6157 FE2BAC ACC16
6158 FE2BAC C2 20 rep #PMFLAG
6159 .LONGA on
6160 .MNLIST
6161 FE2BAE A5 2D LDA $2D
6162 FE2BB0 3A dec a
6163 FE2BB1 3A dec a
6164 FE2BB2 85 2D STA $2D
6165 FE2BB4 ACC08
6166 FE2BB4 E2 20 sep #PMFLAG
6167 .LONGA off
6168 .MNLIST
6169 FE2BB6 24 97 bit runf
6170 FE2BB8 30 12 bmi ?01
6171 FE2BBA ACC16
6172 FE2BBA C2 20 rep #PMFLAG
6173 .LONGA on
6174 .MNLIST
6175 FE2BBC 06 23 ASL $23
6176 FE2BBE 18 CLC
6177 FE2BBF A5 33 LDA $33
Tue Jul 17 11:00:23 2018 Page 64
6178 FE2BC1 65 23 ADC $23
6179 FE2BC3 85 33 STA $33
6180 FE2BC5 92 2D STA ($2D)
6181 FE2BC7 ACC08
6182 FE2BC7 E2 20 sep #PMFLAG
6183 .LONGA off
6184 .MNLIST
6185 FE2BC9 4C 3E 2C JMP L1A97
6186 ; p-code execution - new
6187 FE2BCC 20 23 2D ?01: JSR R3511
6188 FE2BCF 20 3F 2D ?02: JSR R3527
6189 FE2BD2 F0 42 BEQ ?08
6190 FE2BD4 A0 02 LDY #$02
6191 FE2BD6 B1 21 LDA ($21),Y
6192 FE2BD8 38 SEC
6193 FE2BD9 E5 23 SBC $23
6194 FE2BDB 85 25 STA $25
6195 FE2BDD C8 INY
6196 FE2BDE B1 21 LDA ($21),Y
6197 FE2BE0 E5 24 SBC $24
6198 FE2BE2 85 26 STA $26
6199 FE2BE4 90 E9 BCC ?02
6200 FE2BE6 D0 08 BNE ?04
6201 FE2BE8 A5 25 LDA $25
6202 FE2BEA F0 17 BEQ ?06
6203 FE2BEC 4A LSR a
6204 FE2BED 4A LSR a
6205 FE2BEE F0 DF BEQ ?02
6206 FE2BF0 20 50 2C ?04: JSR R3431
6207 FE2BF3 ACC16
6208 FE2BF3 C2 20 rep #PMFLAG
6209 .LONGA on
6210 .MNLIST
6211 FE2BF5 A0 02 LDY #$02
6212 FE2BF7 A5 25 LDA $25
6213 FE2BF9 91 21 STA ($21),Y
6214 FE2BFB AD FC FF lda !MTPTR
6215 FE2BFE 85 35 sta $35
6216 FE2C00 ACC08
6217 FE2C00 E2 20 sep #PMFLAG
6218 .LONGA off
6219 .MNLIST
6220 FE2C02 60 rts
6221 FE2C03 20 50 2C ?06: JSR R3431
6222 FE2C06 A0 00 LDY #$00
6223 FE2C08 ACC08
6224 FE2C08 E2 20 sep #PMFLAG
6225 .LONGA off
6226 .MNLIST
6227 FE2C0A B1 21 LDA ($21),Y
6228 FE2C0C 91 27 STA ($27),Y
6229 FE2C0E AD FC FF lda !MTPTR
6230 FE2C11 85 35 sta $35
6231 FE2C13 ACC08
6232 FE2C13 E2 20 sep #PMFLAG
6233 .LONGA off
6234 .MNLIST
Tue Jul 17 11:00:23 2018 Page 65
6235 FE2C15 60 rts
6236 FE2C16 ?08: ACC16CLC
6237 FE2C16 C2 21 rep #(PMFLAG.OR.PCFLAG)
6238 .LONGA on
6239 .MNLIST
6240 FE2C18 AD FC FF lda !MTPTR
6241 FE2C1B 85 35 sta $35
6242 FE2C1D A5 23 LDA $23
6243 FE2C1F 65 33 ADC $33
6244 FE2C21 85 33 STA $33
6245 FE2C23 92 2D STA ($2D)
6246 FE2C25 69 28 00 ADC #$0028
6247 FE2C28 C5 2D CMP $2D
6248 FE2C2A ACC08
6249 FE2C2A E2 20 sep #PMFLAG
6250 .LONGA off
6251 .MNLIST
6252 FE2C2C 90 21 BCC PC61x
6253 FE2C2E er01:
6254 FE2C2E A2 01 LDX #$01 ; stack overflow error
6255 FE2C30 4C 50 1B JMP vpmerr
6256
6257 PC60: ; $1A86 - $1D11
6258 PC61: ; reserve room in stack
6259 FE2C33 ACC16
6260 FE2C33 C2 20 rep #PMFLAG
6261 .LONGA on
6262 .MNLIST
6263 FE2C35 06 23 ASL $23
6264 FE2C37 38 SEC
6265 FE2C38 A5 2D LDA $2D
6266 FE2C3A E5 23 SBC $23
6267 FE2C3C 85 2D STA $2D
6268 L1A97: ; $1A97 - $1D22
6269 FE2C3E ACC16CLC
6270 FE2C3E C2 21 rep #(PMFLAG.OR.PCFLAG)
6271 .LONGA on
6272 .MNLIST
6273 FE2C40 A5 33 LDA $33
6274 FE2C42 69 28 00 ADC #$0028
6275 FE2C45 85 27 STA $27
6276 FE2C47 A5 2D LDA $2D
6277 FE2C49 C5 27 CMP $27
6278 FE2C4B ACC08
6279 FE2C4B E2 20 sep #PMFLAG
6280 .LONGA off
6281 .MNLIST
6282 FE2C4D 90 DF BCC er01
6283 FE2C4F PC61x:
6284 FE2C4F 60 rts
6285
6286 R3431: ; $xxxx - $3431
6287 FE2C50 20 15 2D JSR R3503
6288 FE2C53 A0 01 LDY #$01
6289 FE2C55 91 2D STA ($2D),Y
6290 FE2C57 88 DEY
6291 FE2C58 8A TXA
Tue Jul 17 11:00:23 2018 Page 66
6292 FE2C59 91 2D STA ($2D),Y
6293 FE2C5B 60 RTS
6294
6295 PC5C: ; $xxxx - $343D
6296 PC5D: ; dispose
6297 FE2C5C 24 97 bit runf
6298 FE2C5E 30 03 bmi ?02
6299 FE2C60 4C 4E 1B jmp vpme07
6300 FE2C63 20 23 2D ?02: JSR R3511
6301 FE2C66 20 3F 2D ?04: JSR R3527
6302 FE2C69 F0 65 BEQ ?12
6303 FE2C6B A0 00 LDY #$00
6304 FE2C6D B1 2D LDA ($2D),Y
6305 FE2C6F C5 21 CMP $21
6306 FE2C71 D0 27 BNE ?08
6307 FE2C73 C8 INY
6308 FE2C74 B1 2D LDA ($2D),Y
6309 FE2C76 C5 22 CMP $22
6310 FE2C78 D0 20 BNE ?08
6311 FE2C7A A5 21 LDA $21
6312 FE2C7C 38 SEC
6313 FE2C7D E5 23 SBC $23
6314 FE2C7F 85 25 STA $25
6315 FE2C81 A5 22 LDA $22
6316 FE2C83 E5 24 SBC $24
6317 FE2C85 85 26 STA $26
6318 FE2C87 A0 03 LDY #$03
6319 FE2C89 B1 21 ?06: LDA ($21),Y
6320 FE2C8B 91 25 STA ($25),Y
6321 FE2C8D 88 DEY
6322 FE2C8E 10 F9 BPL ?06
6323 FE2C90 A5 25 LDA $25
6324 FE2C92 85 21 STA $21
6325 FE2C94 A5 26 LDA $26
6326 FE2C96 85 22 STA $22
6327 FE2C98 80 19 bra ?10
6328 FE2C9A A0 00 ?08: LDY #$00
6329 FE2C9C ACC16
6330 FE2C9C C2 20 rep #PMFLAG
6331 .LONGA on
6332 .MNLIST
6333 FE2C9E B1 2D LDA ($2D),Y
6334 FE2CA0 38 SEC
6335 FE2CA1 E5 23 SBC $23
6336 FE2CA3 85 25 STA $25
6337 FE2CA5 C8 INY
6338 FE2CA6 ACC08
6339 FE2CA6 E2 20 sep #PMFLAG
6340 .LONGA off
6341 .MNLIST
6342 FE2CA8 20 15 2D JSR R3503
6343 FE2CAB C5 26 CMP $26
6344 FE2CAD D0 B7 BNE ?04
6345 FE2CAF E4 25 CPX $25
6346 FE2CB1 D0 B3 BNE ?04
6347 FE2CB3 A0 02 ?10: LDY #$02
6348 FE2CB5 ACC16CLC
Tue Jul 17 11:00:23 2018 Page 67
6349 FE2CB5 C2 21 rep #(PMFLAG.OR.PCFLAG)
6350 .LONGA on
6351 .MNLIST
6352 FE2CB7 B1 21 LDA ($21),Y
6353 FE2CB9 65 23 ADC $23
6354 FE2CBB 85 23 STA $23
6355 FE2CBD 91 21 STA ($21),Y
6356 FE2CBF A0 01 LDY #$01
6357 FE2CC1 B2 21 LDA ($21)
6358 FE2CC3 92 27 STA ($27)
6359 FE2CC5 ACC08
6360 FE2CC5 E2 20 sep #PMFLAG
6361 .LONGA off
6362 .MNLIST
6363 FE2CC7 20 50 2C JSR R3431
6364 FE2CCA 88 DEY
6365 FE2CCB 20 30 2D JSR R351E
6366 FE2CCE 80 96 bra ?04
6367 FE2CD0 20 15 2D ?12: JSR R3503
6368 FE2CD3 A0 00 LDY #$00
6369 FE2CD5 B1 2D LDA ($2D),Y
6370 FE2CD7 C5 33 CMP $33
6371 FE2CD9 D0 1A BNE ?14
6372 FE2CDB C8 INY
6373 FE2CDC B1 2D LDA ($2D),Y
6374 FE2CDE C5 34 CMP $34
6375 FE2CE0 D0 13 BNE ?14
6376 FE2CE2 ACC16
6377 FE2CE2 C2 20 rep #PMFLAG
6378 .LONGA on
6379 .MNLIST
6380 FE2CE4 A5 33 LDA $33
6381 FE2CE6 38 SEC
6382 FE2CE7 E5 23 SBC $23
6383 FE2CE9 85 33 STA $33
6384 FE2CEB AD FC FF lda !MTPTR
6385 FE2CEE 85 35 sta $35
6386 FE2CF0 ACC08
6387 FE2CF0 E2 20 sep #PMFLAG
6388 .LONGA off
6389 .MNLIST
6390 FE2CF2 4C 95 1E JMP SK02
6391 FE2CF5 A0 00 ?14: LDY #$00
6392 FE2CF7 CPU16
6393 FE2CF7 C2 30 rep #(PMFLAG.OR.PXFLAG)
6394 .LONGA on
6395 .LONGI on
6396 .MNLIST
6397 FE2CF9 B2 2D LDA ($2D)
6398 FE2CFB 38 SEC
6399 FE2CFC E5 23 SBC $23
6400 FE2CFE 92 27 STA ($27)
6401 FE2D00 85 21 STA $21
6402 FE2D02 98 TYA
6403 FE2D03 91 21 STA ($21),Y
6404 FE2D05 C8 INY
6405 FE2D06 C8 INY
Tue Jul 17 11:00:23 2018 Page 68
6406 FE2D07 A5 23 LDA $23
6407 FE2D09 91 21 STA ($21),Y
6408 FE2D0B AD FC FF lda !MTPTR
6409 FE2D0E 85 35 sta $35
6410 FE2D10 CPU08
6411 FE2D10 E2 30 sep #(PMFLAG.OR.PXFLAG)
6412 .LONGA off
6413 .LONGI off
6414 .MNLIST
6415 FE2D12 4C 95 1E JMP SK02
6416
6417 R3503: ; $xxxx - $3503
6418 FE2D15 A0 02 LDY #$02
6419 FE2D17 18 CLC
6420 FE2D18 A5 21 LDA $21
6421 FE2D1A 71 21 ADC ($21),Y
6422 FE2D1C AA TAX
6423 FE2D1D C8 INY
6424 FE2D1E A5 22 LDA $22
6425 FE2D20 71 21 ADC ($21),Y
6426 FE2D22 60 RTS
6427
6428 R3511: ; $xxxx - $3511
6429 FE2D23 A5 23 LDA $23
6430 FE2D25 4A LSR a
6431 FE2D26 05 24 ORA $24
6432 FE2D28 D0 02 BNE ?02
6433 FE2D2A E6 23 INC $23
6434 FE2D2C 06 23 ?02: ASL $23
6435 FE2D2E 26 24 ROL $24
6436 R351E: ; $xxxx - $351E
6437 FE2D30 ACC16
6438 FE2D30 C2 20 rep #PMFLAG
6439 .LONGA on
6440 .MNLIST
6441 FE2D32 A5 35 lda $35
6442 FE2D34 8D FC FF sta !MTPTR
6443 FE2D37 A9 FC FF lda #MTPTR
6444 FE2D3A 85 21 sta $21
6445 FE2D3C ACC08
6446 FE2D3C E2 20 sep #PMFLAG
6447 .LONGA off
6448 .MNLIST
6449 ;LDA #$35
6450 ;STA $21
6451 ;LDA #$00
6452 ;STA $22
6453 FE2D3E 60 RTS
6454
6455 R3527: ; $xxxx - $3527
6456 FE2D3F A5 21 LDA $21
6457 FE2D41 85 27 STA $27
6458 FE2D43 A5 22 LDA $22
6459 FE2D45 85 28 STA $28
6460 FE2D47 A0 00 LDY #$00
6461 FE2D49 B1 21 LDA ($21),Y
6462 FE2D4B AA TAX
Tue Jul 17 11:00:23 2018 Page 69
6463 FE2D4C C8 INY
6464 FE2D4D B1 21 LDA ($21),Y
6465 FE2D4F 85 22 STA $22
6466 FE2D51 86 21 STX $21
6467 FE2D53 05 21 ORA $21
6468 FE2D55 60 RTS
6469
6470 PC5E: ; $1A54 - $1CDF
6471 FE2D56 PC5F:
6472 FE2D56 ACC16
6473 FE2D56 C2 20 rep #PMFLAG
6474 .LONGA on
6475 .MNLIST
6476 FE2D58 06 23 ASL $23
6477 FE2D5A 38 SEC
6478 FE2D5B B2 2D LDA ($2D)
6479 FE2D5D E5 23 SBC $23
6480 FE2D5F 85 25 STA $25
6481 FE2D61 C8 INY
6482 FE2D62 C8 INY
6483 FE2D63 38 SEC
6484 FE2D64 B1 2D LDA ($2D),Y
6485 FE2D66 E5 23 SBC $23
6486 FE2D68 85 21 STA $21
6487 FE2D6A ACC08
6488 FE2D6A E2 20 sep #PMFLAG
6489 .LONGA off
6490 .MNLIST
6491 FE2D6C 20 99 2D JSR L1AFF
6492 FE2D6F A5 2D LDA $2D
6493 FE2D71 18 CLC
6494 FE2D72 69 04 ADC #$04
6495 FE2D74 85 2D STA $2D
6496 FE2D76 90 02 BCC ?02
6497 FE2D78 E6 2E INC $2E
6498 FE2D7A 60 ?02: RTS
6499
6500 PC37: ; $1B1E - $1DA9
6501 FE2D7B A9 08 LDA #$08
6502 FE2D7D 85 23 STA $23
6503 FE2D7F 84 24 STY $24
6504
6505 PC6A: ; $1ACB - $1D56
6506 FE2D81 PC6B:
6507 FE2D81 ACC16
6508 FE2D81 C2 20 rep #PMFLAG
6509 .LONGA on
6510 .MNLIST
6511 FE2D83 06 23 ASL $23
6512 FE2D85 B2 2D LDA ($2D)
6513 FE2D87 38 SEC
6514 FE2D88 E5 23 SBC $23
6515 FE2D8A 85 25 STA $25
6516 FE2D8C A5 2D LDA $2D
6517 FE2D8E 1A inc a
6518 FE2D8F 1A inc a
6519 FE2D90 38 SEC
Tue Jul 17 11:00:23 2018 Page 70
6520 FE2D91 E5 23 SBC $23
6521 FE2D93 85 2D STA $2D
6522 FE2D95 85 21 STA $21
6523 FE2D97 ACC08
6524 FE2D97 E2 20 sep #PMFLAG
6525 .LONGA off
6526 .MNLIST
6527 FE2D99
6528 L1AFF: ; $1AFF - $1D8A
6529 FE2D99 A0 00 LDY #$00
6530 FE2D9B C6 24 DEC $24
6531 FE2D9D 30 0D BMI ?04
6532 FE2D9F B1 25 ?02: LDA ($25),Y
6533 FE2DA1 91 21 STA ($21),Y
6534 FE2DA3 C8 INY
6535 FE2DA4 D0 F9 BNE ?02
6536 FE2DA6 E6 26 INC $26
6537 FE2DA8 E6 22 INC $22
6538 FE2DAA D0 ED BNE L1AFF
6539 FE2DAC C4 23 ?04: CPY $23
6540 FE2DAE F0 07 BEQ ?06
6541 FE2DB0 B1 25 LDA ($25),Y
6542 FE2DB2 91 21 STA ($21),Y
6543 FE2DB4 C8 INY
6544 FE2DB5 D0 F5 BNE ?04
6545 FE2DB7 60 ?06: RTS
6546
6547 PC62: ; $1AB6 - $1D41
6548 FE2DB8 PC63:
6549 FE2DB8 ACC16
6550 FE2DB8 C2 20 rep #PMFLAG
6551 .LONGA on
6552 .MNLIST
6553 FE2DBA 06 23 ASL $23
6554 FE2DBC 38 SEC
6555 FE2DBD B2 2D LDA ($2D)
6556 FE2DBF E5 23 SBC $23
6557 FE2DC1 92 2D STA ($2D)
6558 FE2DC3 ACC08
6559 FE2DC3 E2 20 sep #PMFLAG
6560 .LONGA off
6561 .MNLIST
6562 FE2DC5 60 rts
6563
6564 PC64: ; $2068 - $2A09
6565 FE2DC6 PC65:
6566 FE2DC6 20 23 2E JSR L2095
6567 FE2DC9 B1 25 ?00: LDA ($25),Y
6568 FE2DCB D1 21 CMP ($21),Y
6569 FE2DCD D0 0C BNE PC65b
6570 FE2DCF 0A ASL a
6571 FE2DD0 F0 05 BEQ ?01
6572 FE2DD2 C8 INY
6573 FE2DD3 C4 23 CPY $23
6574 FE2DD5 D0 F2 BNE ?00
6575 FE2DD7 ?01:
6576 FE2DD7 A9 01 PC65a: LDA #$01 ; R2A1A
Tue Jul 17 11:00:23 2018 Page 71
6577 FE2DD9 80 02 bra PC65c
6578 FE2DDB A9 00 PC65b: lda #0 ; R2A1D
6579 FE2DDD A0 02 PC65c: LDY #$02
6580 FE2DDF 91 2D STA ($2D),Y
6581 FE2DE1 A9 00 LDA #$00
6582 FE2DE3 C8 INY
6583 FE2DE4 91 2D STA ($2D),Y
6584 FE2DE6 A9 02 LDA #$02
6585 FE2DE8 4C 7B 27 jmp L155E
6586 FE2DEB
6587 PC66: ; $xxxx - $2A42
6588 FE2DEB PC67:
6589 FE2DEB 24 97 bit runf
6590 FE2DED 30 03 bmi ?02
6591 FE2DEF 4C 4E 1B jmp vpme07
6592 FE2DF2 20 23 2E ?02: JSR R2A57
6593 FE2DF5 B1 25 ?04: LDA ($25),Y
6594 FE2DF7 D1 21 CMP ($21),Y
6595 FE2DF9 30 E0 BMI PC65b
6596 FE2DFB D0 DA BNE PC65a
6597 FE2DFD 0A ASL a
6598 FE2DFE F0 D7 BEQ PC65a
6599 FE2E00 C8 INY
6600 FE2E01 C4 23 CPY $23
6601 FE2E03 D0 F0 BNE ?04
6602 FE2E05 F0 D0 BEQ PC65a
6603
6604 PC68: ; $xxxx - $2A2D
6605 FE2E07 PC69:
6606 FE2E07 24 97 bit runf
6607 FE2E09 30 03 bmi ?02
6608 FE2E0B 4C 4E 1B jmp vpme07
6609 FE2E0E 20 23 2E ?02: JSR R2A57
6610 FE2E11 B1 21 ?04: LDA ($21),Y
6611 FE2E13 D1 25 CMP ($25),Y
6612 FE2E15 30 C4 BMI PC65b
6613 FE2E17 D0 BE BNE PC65a
6614 FE2E19 0A ASL a
6615 FE2E1A F0 BB BEQ PC65a
6616 FE2E1C C8 INY
6617 FE2E1D C4 23 CPY $23
6618 FE2E1F D0 F0 BNE ?04
6619 FE2E21 F0 B4 BEQ PC65a
6620
6621 FE2E23 R2A57:
6622 L2095: ; $2095 - $2A57
6623 FE2E23 ACC16
6624 FE2E23 C2 20 rep #PMFLAG
6625 .LONGA on
6626 .MNLIST
6627 FE2E25 B2 2D LDA ($2D)
6628 FE2E27 85 25 STA $25
6629 FE2E29 C8 INY
6630 FE2E2A C8 iny
6631 FE2E2B B1 2D LDA ($2D),Y
6632 FE2E2D 85 21 STA $21
6633 FE2E2F ACC08
Tue Jul 17 11:00:23 2018 Page 72
6634 FE2E2F E2 20 sep #PMFLAG
6635 .LONGA off
6636 .MNLIST
6637 FE2E31 A0 00 LDY #$00
6638 FE2E33 60 RTS
6639
6640 PC6E: ; $0B48 - $0D4E
6641 FE2E34 PC6F:
6642 FE2E34 20 DB 2E JSR L0B7F
6643 FE2E37 A0 00 LDY #$00
6644 FE2E39 B1 29 LDA ($29),Y
6645 FE2E3B 29 10 AND #$10
6646 FE2E3D D0 1B BNE ?06
6647 FE2E3F 20 25 32 JSR L0EA8
6648 FE2E42 A0 00 ?02: LDY #$00
6649 FE2E44 B1 21 LDA ($21),Y
6650 FE2E46 20 E3 32 JSR L0EC4
6651 FE2E49 E6 21 INC $21
6652 FE2E4B D0 02 BNE ?04
6653 FE2E4D E6 22 INC $22
6654 FE2E4F 20 CD 2E ?04: JSR L0B71
6655 FE2E52 D0 EE BNE ?02
6656 FE2E54 20 CC FF jsr FCLRCH
6657 FE2E57 4C 95 1E JMP SK02
6658 FE2E5A ?06:
6659 FE2E5A PC76:
6660 FE2E5A PC77:
6661 FE2E5A PC78:
6662 FE2E5A PC79:
6663 FE2E5A 4C 4E 1B JMP vpme07
6664
6665 PC6Cx: ; $0983 - $0B94
6666 FE2E5D 4C E5 1D jmp SK04
6667 FE2E60
6668 PC6C: ; $0991 - $0B97
6669 PC6D: ; 'reset' on disk
6670 FE2E60 20 EB 33 JSR L09C2
6671 FE2E63 A5 3E LDA $3E
6672 FE2E65 D0 F6 BNE PC6Cx
6673 FE2E67 E6 BB INC $BB ; skip '@'
6674 FE2E69 D0 02 BNE ?02
6675 FE2E6B E6 BC INC $BC
6676 FE2E6D A4 B7 ?02: ldy $B7 ; flength
6677 FE2E6F 88 dey
6678 FE2E70 84 B7 sty $B7
6679 FE2E72 88 dey
6680 FE2E73 A9 52 lda #'R' ; read
6681 FE2E75 97 BB sta [$BB],y
6682 ;SEC
6683 ;SBC #$05
6684 ;dec a ; skip '@' ???
6685 ;STA $B7
6686 ;lda #$C0
6687 ;trb $B9
6688 FE2E77 20 C0 FF JSR FOPEN
6689 FE2E7A 20 45 33 JSR L0A73
6690 FE2E7D A5 3E LDA $3E
Tue Jul 17 11:00:23 2018 Page 73
6691 FE2E7F D0 DC BNE PC6Cx
6692 FE2E81 A9 00 LDA #$00
6693 FE2E83 A8 TAY
6694 FE2E84 91 29 STA ($29),Y
6695 FE2E86 A5 2D LDA $2D
6696 FE2E88 18 CLC
6697 FE2E89 69 02 ADC #$02
6698 FE2E8B 85 2D STA $2D
6699 FE2E8D 90 02 BCC ?04
6700 FE2E8F E6 2E INC $2E
6701 FE2E91 ?04:
6702 PC70: ; $0B0C - $0D12
6703 FE2E91 PC71:
6704 FE2E91 20 DB 2E JSR L0B7F
6705 FE2E94 A0 00 LDY #$00
6706 FE2E96 B1 29 LDA ($29),Y
6707 FE2E98 29 10 AND #$10
6708 FE2E9A D0 2E BNE ?10
6709 FE2E9C 20 EF 31 JSR L0F11
6710 FE2E9F 20 71 31 ?02: JSR L0F2B
6711 FE2EA2 A0 00 LDY #$00
6712 FE2EA4 91 21 STA ($21),Y
6713 FE2EA6 E6 21 INC $21
6714 FE2EA8 D0 02 BNE ?04
6715 FE2EAA E6 22 INC $22
6716 FE2EAC AA ?04: TAX
6717 FE2EAD A0 00 LDY #$00
6718 FE2EAF B1 29 LDA ($29),Y
6719 FE2EB1 29 80 AND #$80
6720 FE2EB3 D0 0F BNE ?06
6721 FE2EB5 20 CD 2E JSR L0B71
6722 FE2EB8 D0 E5 BNE ?02
6723 FE2EBA E0 0D CPX #$0D
6724 FE2EBC D0 06 BNE ?06
6725 FE2EBE B1 29 LDA ($29),Y
6726 FE2EC0 09 40 ORA #$40
6727 FE2EC2 91 29 STA ($29),Y
6728 FE2EC4 20 CC FF ?06: JSR FCLRCH
6729 FE2EC7 4C 95 1E ?08: JMP SK02
6730 FE2ECA 4C 4E 1B ?10: JMP vpme07
6731
6732 L0B71: ; $0B71 - $0D77
6733 FE2ECD A5 23 LDA $23
6734 FE2ECF 38 SEC
6735 FE2ED0 E9 01 SBC #$01
6736 FE2ED2 85 23 STA $23
6737 FE2ED4 B0 02 BCS ?02
6738 FE2ED6 C6 24 DEC $24
6739 FE2ED8 05 24 ?02: ORA $24
6740 FE2EDA 60 RTS
6741
6742 L0B7F: ; $0B7F - $0D85
6743 FE2EDB ACC16
6744 FE2EDB C2 20 rep #PMFLAG
6745 .LONGA on
6746 .MNLIST
6747 FE2EDD B1 2D LDA ($2D),Y
Tue Jul 17 11:00:23 2018 Page 74
6748 FE2EDF C8 iny
6749 FE2EE0 85 29 STA $29
6750 FE2EE2 06 23 ASL $23
6751 FE2EE4 38 SEC
6752 FE2EE5 A5 29 LDA $29
6753 FE2EE7 E5 23 SBC $23
6754 FE2EE9 85 21 STA $21
6755 FE2EEB A5 23 LDA $23
6756 FE2EED ACC08
6757 FE2EED E2 20 sep #PMFLAG
6758 .LONGA off
6759 .MNLIST
6760 FE2EEF D0 13 BNE ?04
6761 FE2EF1 E6 23 INC $23
6762 FE2EF3 A5 21 LDA $21
6763 FE2EF5 38 SEC
6764 FE2EF6 E9 02 SBC #$02
6765 FE2EF8 85 21 STA $21
6766 FE2EFA B0 02 BCS ?02
6767 FE2EFC C6 22 DEC $22
6768 FE2EFE A9 00 ?02: LDA #$00
6769 FE2F00 A0 01 LDY #$01
6770 FE2F02 91 21 STA ($21),Y
6771 FE2F04 60 ?04: RTS
6772
6773 PC18: ; $13FF - $168A
6774 ; load string 'true ' or 'false'
6775 FE2F05 20 03 32 JSR L1762
6776 FE2F08 66 21 ROR $21 ; CF = 1 if TRUE
6777 FE2F0A INDEX16
6778 FE2F0A C2 10 rep #PXFLAG
6779 .LONGI on
6780 .MNLIST
6781 FE2F0C A2 AE FF ldx #MFALSE ; false
6782 FE2F0F 90 03 BCC ?02
6783 FE2F11 A2 A8 FF ldx #MTRUE ; true
6784 FE2F14 86 21 ?02: stx $21
6785 FE2F16 INDEX08
6786 FE2F16 E2 10 sep #PXFLAG
6787 .LONGI off
6788 .MNLIST
6789 FE2F18 80 03 bra L13E9
6790
6791 PC17: ; $13E6 - $1671
6792 FE2F1A 20 03 32 JSR L1762
6793 L13E9: ; $13E9 - $1674
6794 FE2F1D A0 00 LDY #$00
6795 FE2F1F C8 ?02: INY
6796 FE2F20 B1 21 LDA ($21),Y
6797 FE2F22 D0 FB BNE ?02
6798 FE2F24 A5 23 LDA $23
6799 FE2F26 25 24 AND $24
6800 FE2F28 49 FF EOR #$FF
6801 FE2F2A D0 02 BNE ?04
6802 FE2F2C 84 23 STY $23
6803 FE2F2E 84 25 ?04: STY $25
6804 FE2F30 80 1C bra L16AA
Tue Jul 17 11:00:23 2018 Page 75
6805
6806 PC72: ; $168E - $1919
6807 FE2F32 PC73:
6808 FE2F32 A5 24 LDA $24
6809 FE2F34 85 26 STA $26
6810 FE2F36 A5 23 LDA $23
6811 FE2F38 85 25 STA $25
6812 FE2F3A 20 03 32 JSR L1762
6813 FE2F3D A5 25 LDA $25
6814 FE2F3F 49 01 EOR #$01
6815 FE2F41 6A ROR a
6816 FE2F42 A5 21 LDA $21
6817 FE2F44 E5 25 SBC $25
6818 FE2F46 85 21 STA $21
6819 FE2F48 A5 22 LDA $22
6820 FE2F4A E5 26 SBC $26
6821 FE2F4C 85 22 STA $22
6822 L16AA: ; $16AA - $1935
6823 FE2F4E A6 25 LDX $25
6824 FE2F50 20 34 33 JSR L0E69
6825 FE2F53 A6 25 LDX $25
6826 FE2F55 A5 23 LDA $23
6827 FE2F57 C5 25 CMP $25
6828 FE2F59 B0 01 BCS ?02
6829 FE2F5B AA TAX
6830 FE2F5C A0 00 ?02: LDY #$00
6831 FE2F5E CA DEX
6832 FE2F5F 30 0D BMI ?04
6833 FE2F61 B1 21 LDA ($21),Y
6834 FE2F63 20 E3 32 JSR L0EC4
6835 FE2F66 E6 21 INC $21
6836 FE2F68 D0 F2 BNE ?02
6837 FE2F6A E6 22 INC $22
6838 FE2F6C D0 EE BNE ?02
6839 FE2F6E 4C CC FF ?04: JMP FCLRCH
6840
6841 PC74: ; $1BC0 - $1E4B
6842 FE2F71 PC75:
6843 FE2F71 20 17 2A JSR L1B8B
6844 FE2F74 A5 21 LDA $21
6845 FE2F76 38 SEC
6846 FE2F77 E9 04 SBC #$04
6847 FE2F79 B0 02 BCS ?02
6848 FE2F7B C6 22 DEC $22
6849 FE2F7D 06 23 ?02: ASL $23
6850 FE2F7F 26 24 ROL $24
6851 FE2F81 38 SEC
6852 FE2F82 E5 23 SBC $23
6853 FE2F84 85 21 STA $21
6854 FE2F86 A5 22 LDA $22
6855 FE2F88 E5 24 SBC $24
6856 FE2F8A 85 22 STA $22
6857 FE2F8C A0 00 LDY #$00
6858 FE2F8E B1 21 LDA ($21),Y
6859 FE2F90 85 23 STA $23
6860 FE2F92 C8 INY
6861 FE2F93 B1 21 LDA ($21),Y
Tue Jul 17 11:00:23 2018 Page 76
6862 FE2F95 85 24 STA $24
6863 FE2F97 C8 INY
6864 FE2F98 B1 21 LDA ($21),Y
6865 FE2F9A A0 00 LDY #$00
6866 FE2F9C 20 1F 2A JSR L1B93
6867 FE2F9F 4C EC 29 JMP L1B45
6868
6869 ; read string
6870 PC7A: ; $16D0 - $195B
6871 FE2FA2 PC7B:
6872 FE2FA2 20 14 30 JSR L178B
6873 FE2FA5 48 PHA
6874 FE2FA6 A5 23 LDA $23
6875 FE2FA8 49 01 EOR #$01
6876 FE2FAA 6A ROR a
6877 FE2FAB A0 02 LDY #$02
6878 FE2FAD B1 2D LDA ($2D),Y
6879 FE2FAF E5 23 SBC $23
6880 FE2FB1 85 21 STA $21
6881 FE2FB3 C8 INY
6882 FE2FB4 B1 2D LDA ($2D),Y
6883 FE2FB6 E5 24 SBC $24
6884 FE2FB8 85 22 STA $22
6885 FE2FBA 68 PLA
6886 FE2FBB C9 20 ?02: CMP #$20
6887 FE2FBD F0 08 BEQ ?04
6888 FE2FBF C9 0D CMP #$0D
6889 FE2FC1 F0 04 BEQ ?04
6890 FE2FC3 C9 0A CMP #$0A
6891 FE2FC5 D0 05 BNE ?06
6892 FE2FC7 20 71 31 ?04: JSR L0F2B
6893 FE2FCA 80 EF bra ?02
6894 FE2FCC A0 00 ?06: LDY #$00
6895 FE2FCE C9 0D CMP #$0D
6896 FE2FD0 F0 25 BEQ ?12
6897 FE2FD2 91 21 STA ($21),Y
6898 FE2FD4 E6 21 INC $21
6899 FE2FD6 D0 02 BNE ?08
6900 FE2FD8 E6 22 INC $22
6901 FE2FDA A5 23 ?08: LDA $23
6902 FE2FDC 38 SEC
6903 FE2FDD E9 01 SBC #$01
6904 FE2FDF 85 23 STA $23
6905 FE2FE1 B0 02 BCS ?09
6906 FE2FE3 C6 24 DEC $24
6907 FE2FE5 05 24 ?09: ORA $24
6908 FE2FE7 F0 05 BEQ ?10
6909 FE2FE9 20 71 31 JSR L0F2B
6910 FE2FEC 80 DE bra ?06
6911 FE2FEE 20 71 31 ?10: JSR L0F2B
6912 FE2FF1 C9 0D CMP #$0D
6913 FE2FF3 D0 F9 BNE ?10
6914 FE2FF5 F0 17 BEQ ?14
6915 FE2FF7 A0 FF ?12: LDY #$FF
6916 FE2FF9 A9 20 LDA #$20
6917 FE2FFB C8 ?13a: INY
6918 FE2FFC C4 23 CPY $23
Tue Jul 17 11:00:23 2018 Page 77
6919 FE2FFE F0 04 BEQ ?13
6920 FE3000 91 21 STA ($21),Y
6921 FE3002 D0 F7 BNE ?13a
6922 FE3004 A9 FF ?13: LDA #$FF
6923 FE3006 85 23 STA $23
6924 FE3008 C6 24 DEC $24
6925 FE300A 10 EB BPL ?12
6926 FE300C A9 0D LDA #$0D
6927 FE300E 20 8F 30 ?14: JSR L17B7
6928 FE3011 4C E5 1D JMP SK04
6929
6930 L178B: ; $178B - $1A16
6931 FE3014 20 62 30 JSR L17A3
6932 FE3017 20 EF 31 JSR L0F11
6933 FE301A 38 SEC
6934 FE301B A5 29 LDA $29
6935 FE301D E9 02 SBC #$02
6936 FE301F 85 27 STA $27
6937 FE3021 A5 2A LDA $2A
6938 FE3023 E9 00 SBC #$00
6939 FE3025 85 28 STA $28
6940 FE3027 A0 00 LDY #$00
6941 FE3029 B1 27 LDA ($27),Y
6942 FE302B 60 RTS
6943
6944 PC7C: ; $203F - $2ABE
6945 PC7D: ; execute function/procedure
6946 FE302C A5 23 LDA $23
6947 FE302E 0A ASL a
6948 FE302F AA TAX
6949 FE3030 24 97 bit runf
6950 FE3032 30 03 bmi ?02
6951 FE3034 7C 96 3D jmp (CFUNCT,X) ; compiling
6952 FE3037 7C A8 3D ?02: jmp (RFUNCT,X) ; running
6953
6954 PC7E: ; $1FEA - $2A6D
6955 PC7F: ; change p-code pointer
6956 FE303A 20 1D 2B JSR L2027
6957 FE303D ACC16
6958 FE303D C2 20 rep #PMFLAG
6959 .LONGA on
6960 .MNLIST
6961 FE303F B2 23 LDA ($23)
6962 FE3041 1A inc a
6963 FE3042 92 23 STA ($23)
6964 FE3044 ACC08
6965 FE3044 E2 20 sep #PMFLAG
6966 .LONGA off
6967 .MNLIST
6968 FE3046 EB xba
6969 FE3047 49 80 EOR #$80
6970 FE3049 12 23 ORA ($23)
6971 FE304B D0 0B BNE ?04
6972 FE304D 18 CLC
6973 FE304E A5 2B LDA $2B
6974 FE3050 69 03 ADC #$03
6975 FE3052 85 2B STA $2B
Tue Jul 17 11:00:23 2018 Page 78
6976 FE3054 90 02 BCC ?04
6977 FE3056 E6 2C INC $2C
6978 FE3058 60 ?04: rts
6979
6980 PC3E: ; $xxxx - $3240 (CHAIN)
6981 FE3059 4C 4E 1B jmp vpme07
6982
6983 PC3F: ; $14A7 - $1732
6984 FE305C 20 85 30 JSR L17AD
6985 FE305F 88 DEY
6986 FE3060 80 07 bra L148A
6987
6988 L17A3: ; $17A3 - $1A2E
6989 FE3062 64 3E STZ $3E ; clear error
6990 FE3064 A0 00 ldy #0
6991 FE3066 20 85 30 JSR L17AD
6992
6993 L148A: ; $148A - $1715
6994 FE3069 A0 00 LDY #$00
6995 FE306B B2 29 LDA ($29)
6996 FE306D 29 02 AND #$02
6997 FE306F F0 1D BEQ L17B0
6998 FE3071 52 29 EOR ($29)
6999 FE3073 92 29 STA ($29)
7000 FE3075 20 EF 31 JSR L0F11
7001 FE3078 20 71 31 ?02: JSR L0F2B
7002 FE307B C9 0A CMP #$0A
7003 FE307D F0 F9 BEQ ?02
7004 FE307F 20 8F 30 jsr L17B7
7005 FE3082 4C CC FF JMP FCLRCH
7006
7007 L17AD: ; $17AD - $1A38
7008 FE3085 B1 2D LDA ($2D),Y
7009 FE3087 85 29 STA $29
7010 FE3089 C8 INY
7011 FE308A B1 2D LDA ($2D),Y
7012 FE308C 85 2A STA $2A
7013 FE308E L17B0:
7014 FE308E 60 RTS
7015
7016 L17B7: ; $17B7 - $1A42
7017 ; store char
7018 FE308F A2 00 LDX #$00
7019 FE3091 C9 0D CMP #$0D
7020 FE3093 D0 04 BNE ?02
7021 FE3095 A9 20 LDA #$20
7022 FE3097 A2 40 LDX #$40
7023 FE3099 48 ?02: PHA
7024 FE309A 86 27 STX $27
7025 FE309C A0 00 LDY #$00
7026 FE309E B2 29 LDA ($29)
7027 FE30A0 29 BF AND #$BF
7028 FE30A2 05 27 ORA $27
7029 FE30A4 92 29 STA ($29)
7030 FE30A6 ACC16
7031 FE30A6 C2 20 rep #PMFLAG
7032 .LONGA on
Tue Jul 17 11:00:23 2018 Page 79
7033 .MNLIST
7034 FE30A8 A5 29 LDA $29
7035 FE30AA 3A dec a
7036 FE30AB 3A dec a
7037 FE30AC 85 27 STA $27
7038 FE30AE ACC08
7039 FE30AE E2 20 sep #PMFLAG
7040 .LONGA off
7041 .MNLIST
7042 FE30B0 68 PLA
7043 FE30B1 92 27 STA ($27) ; store char
7044 FE30B3 98 TYA
7045 FE30B4 C8 INY
7046 FE30B5 91 27 STA ($27),Y
7047 FE30B7 60 RTS
7048 FE30B8
7049 ;---------------------------------------------------------------------------
7050 ; I/O subsystem
7051 ;---------------------------------------------------------------------------
7052
7053 L0E91: ; $0E91 - $111C
7054 ; check break from keyboard
7055 FE30B8 A5 3B LDA $3B
7056 FE30BA 29 40 AND #$40
7057 FE30BC F0 0A BEQ ?02 ; no detect break
7058 FE30BE 20 E1 FF JSR CHKSTOP
7059 FE30C1 D0 05 bne ?02 ; no break detected
7060 FE30C3 A2 13 ldx #$13 ; break error
7061 FE30C5 4C 50 1B jmp vpmerr
7062 FE30C8 A5 42 ?02: lda $42
7063 FE30CA 69 05 adc #$05
7064 FE30CC 85 42 sta $42
7065 FE30CE 60 rts
7066
7067 FE30CF R0AE9:
7068 L0942: ; $0942 - $0AE9
7069 ; close all open files (10 files from #2 to #11)
7070 FE30CF A2 12 LDX #MAX2LF-6 ; skip first 2 entry (#0 and #1)
7071 FE30D1 BD D5 FF ?01: LDA !MFILET+5,X ; file table
7072 FE30D4 D0 05 BNE ?04
7073 FE30D6 CA ?02: DEX
7074 FE30D7 CA DEX
7075 FE30D8 10 F7 BPL ?01
7076 FE30DA 60 RTS
7077 FE30DB BD D5 FF ?04: LDA !MFILET+5,X
7078 FE30DE 85 2A STA $2A
7079 FE30E0 BD D4 FF LDA !MFILET+4,X
7080 FE30E3 85 29 sta $29
7081 FE30E5 24 97 bit runf
7082 FE30E7 10 12 bpl ?06
7083 FE30E9 C5 2F cmp $2F
7084 FE30EB A5 2A lda $2A
7085 FE30ED E5 30 sbc $30
7086 FE30EF B0 E5 bcs ?02
7087 FE30F1 A5 29 lda $29
7088 FE30F3 C5 33 cmp $33
7089 FE30F5 A5 2A lda $2A
Tue Jul 17 11:00:23 2018 Page 80
7090 FE30F7 E5 34 sbc $34
7091 FE30F9 90 DB bcc ?02
7092 FE30FB 9E D4 FF ?06: STZ MFILET+4,X
7093 FE30FE 9E D5 FF STZ MFILET+5,X
7094 FE3101 8A TXA
7095 FE3102 DA phx
7096 FE3103 4A LSR a
7097 FE3104 69 02 ADC #$02 ; skip file#0 and file #1
7098 FE3106 85 B8 STA $B8
7099 FE3108 20 21 31 JSR L0A5B ; R0C61
7100 FE310B FA PLX
7101 FE310C 80 C8 bra ?02
7102
7103 R0B28: ; $xxxx - $0B28
7104 ; close all files in running mode
7105 FE310E A2 00 LDX #$00
7106 FE3110 86 33 STX $33
7107 FE3112 86 34 STX $34
7108 FE3114 CA DEX
7109 FE3115 86 2F STX $2F
7110 FE3117 86 30 STX $30
7111 FE3119 20 CF 30 JSR R0AE9
7112 FE311C A9 01 LDA #$01 ; close #1 reserved to command channel
7113 FE311E 4C C3 FF JMP FCLOSE
7114
7115 ; CLOSE ???
7116 L0A5B: ; $0A5B - $0C61
7117 ; close
7118 FE3121 A0 00 LDY #$00
7119 FE3123 B1 29 LDA ($29),Y
7120 FE3125 29 08 AND #$08
7121 FE3127 F0 0A BEQ ?02
7122 FE3129 48 pha
7123 FE312A A6 B8 LDX $B8
7124 FE312C 20 C9 FF jsr FSETOUT ; set file for output
7125 FE312F 68 pla
7126 FE3130
7127 ;;jsr FCHROUT
7128 FE3130
7129 FE3130 20 CC FF jsr FCLRCH
7130 FE3133 A5 B8 ?02: LDA $B8 ; close
7131 FE3135 4C C3 FF JMP FCLOSE
7132
7133 FE3138 63 6C 6F 73 65 ?20: .DB 'close %bu', $0D
20 25 62 75 0D
7134
7135 L0E7C: ; $0E7C - $1107
7136 ; print string zero-terminated
7137 FE3142 A0 00 LDY #$00
7138 FE3144 B1 21 ?01: LDA ($21),Y
7139 FE3146 F0 06 BEQ ?02
7140 FE3148 20 D2 FF JSR FCHROUT
7141 FE314B C8 INY
7142 FE314C D0 F6 BNE ?01
7143 FE314E 60 ?02: RTS
7144
7145 lprint: ; long print string zero-terminated
Tue Jul 17 11:00:23 2018 Page 81
7146 FE314F A0 00 LDY #$00
7147 FE3151 B7 76 ?01: LDA [longp],Y
7148 FE3153 F0 06 BEQ ?02
7149 FE3155 20 D2 FF JSR FCHROUT
7150 FE3158 C8 INY
7151 FE3159 D0 F6 BNE ?01
7152 FE315B 60 ?02: RTS
7153
7154 L0F9B: ; $0F9B - $1226
7155 FE315C A9 01 LDA #$01
7156 FE315E 85 B8 STA $B8
7157 FE3160 ACC16
7158 FE3160 C2 20 rep #PMFLAG
7159 .LONGA on
7160 .MNLIST
7161 FE3162 A9 BA FF lda #MSTDF1+2 ; default file #1 (disk command channel)
7162 FE3165 85 29 STA $29
7163 FE3167 ACC08
7164 FE3167 E2 20 sep #PMFLAG
7165 .LONGA off
7166 .MNLIST
7167
7168 L0E89: ; $0E89 - $1114
7169 ; print CR
7170 FE3169 48 PHA
7171 FE316A A9 0D LDA #$0D
7172 FE316C 20 D2 FF JSR FCHROUT
7173 FE316F 68 PLA
7174 FE3170 60 RTS
7175
7176 L0F2B: ; $0F2B - $11B6
7177 FE3171 84 27 STY $27
7178 FE3173 A5 B8 LDA $B8
7179 FE3175 D0 11 BNE ?01
7180 FE3177 20 B8 30 JSR L0E91 ; R111C
7181 FE317A DA phx
7182 FE317B 5A phy
7183 FE317C 20 DE FF jsr RDTIM
7184 FE317F 85 41 STA $41
7185 FE3181 7A ply
7186 FE3182 FA plx
7187 FE3183 20 C9 34 JSR L0F73 ; R11FE
7188 ;JSR L2C5E ; R0DEF
7189 FE3186 80 19 bra ?03
7190 ?01: ; $0F41 - $11CC
7191 FE3188 A0 00 LDY #$00
7192 FE318A 84 90 STY $90
7193 FE318C B1 29 LDA ($29),Y
7194 FE318E 29 80 AND #$80
7195 FE3190 D0 1E BNE ?06
7196 FE3192 A5 3E LDA $3E ; current run-time error
7197 FE3194 D0 09 BNE ?02
7198 FE3196 20 CF FF JSR FCHRIN ; input byte
7199 FE3199 85 28 STA $28
7200 FE319B A5 90 LDA $90
7201 FE319D D0 05 BNE ?04
7202 FE319F A5 28 ?02: LDA $28
Tue Jul 17 11:00:23 2018 Page 82
7203 FE31A1 A4 27 ?03: LDY $27
7204 FE31A3 60 RTS
7205 FE31A4 C9 40 ?04: CMP #$40 ; end of file ?
7206 FE31A6 D0 0C BNE ?08
7207 FE31A8 B1 29 LDA ($29),Y
7208 FE31AA 09 80 ORA #$80
7209 FE31AC 91 29 STA ($29),Y
7210 FE31AE D0 EF BNE ?02
7211 FE31B0 A2 0F ?06: LDX #$0F ; error: end of file
7212 FE31B2 80 02 bra ?10
7213 FE31B4 A2 11 ?08: ldx #$11 ; error: device read error
7214 FE31B6 A4 27 ?10: LDY $27
7215 FE31B8 80 06 bra L0FAA
7216 FE31BA
7217 L0F25: ; $0F25 - $11B0
7218 FE31BA A2 0D ldx #$0D ; error: file not open for reading
7219 FE31BC 80 02 bra L0FAA
7220 L0EBE: ; $0EBE - $1149
7221 FE31BE A2 0E ldx #$0E ; error: file not open for writing
7222 L0FAA: ; $0FAA - $1235
7223 FE31C0 24 3B bit $3B ; bit 7 = 1: no errors trap
7224 FE31C2 30 07 bmi ?04 ; print error
7225 FE31C4 A5 3E LDA $3E
7226 FE31C6 D0 02 BNE ?02
7227 FE31C8 86 3E STX $3E ; runtime error
7228 FE31CA 60 ?02: RTS
7229 FE31CB 4C 50 1B ?04: JMP vpmerr
7230
7231 FE31CE R0F69:
7232 L0CDE: ; $0CDE - $0F69
7233 ; open file in internal table (24 bytes, 12 files)
7234 FE31CE A2 00 LDX #$00
7235 FE31D0 ACC16
7236 FE31D0 C2 20 rep #PMFLAG
7237 .LONGA on
7238 .MNLIST
7239 FE31D2 BD D0 FF ?02: LDA !MFILET,X ; logical file table (#0 and #1 permanent)
7240 FE31D5 F0 0C BEQ ?04 ; free entry
7241 FE31D7 E8 INX
7242 FE31D8 E8 INX
7243 FE31D9 E0 18 CPX #MAX2LF ; max files * 2 (22)
7244 FE31DB D0 F5 BNE ?02
7245 FE31DD ACC08
7246 FE31DD E2 20 sep #PMFLAG
7247 .LONGA off
7248 .MNLIST
7249 FE31DF A2 10 LDX #$10 ; error: no free i/o channels
7250 FE31E1 80 DD bra L0FAA
7251 FE31E3 A5 29 ?04: LDA $29 ; word
7252 FE31E5 9D D0 FF STA !MFILET,X ; fill entry on table M2CDA
7253 L0CFD: ; $0CFD - $0F88
7254 FE31E8 ACC08
7255 FE31E8 E2 20 sep #PMFLAG
7256 .LONGA off
7257 .MNLIST
7258 FE31EA 8A TXA
7259 FE31EB 4A LSR a ; file number
Tue Jul 17 11:00:23 2018 Page 83
7260 FE31EC 85 B8 STA $B8
7261 FE31EE 60 L0F10: RTS
7262
7263 L0F11: ; $0F11 - $119C
7264 FE31EF A0 00 LDY #$00
7265 FE31F1 B1 29 LDA ($29),Y
7266 FE31F3 29 20 AND #$20
7267 FE31F5 D0 C3 BNE L0F25
7268 FE31F7 20 4B 32 JSR L0D02
7269 FE31FA A6 B8 LDX $B8
7270 FE31FC 30 BC BMI L0F25
7271 FE31FE F0 EE BEQ L0F10
7272 FE3200 4C C6 FF JMP FSETIN ; set file for input
7273
7274 L1762: ; $1762 - $19ED
7275 FE3203 A0 00 LDY #$00
7276 FE3205 84 3E STY $3E
7277 FE3207 ACC16
7278 FE3207 C2 20 rep #PMFLAG
7279 .LONGA on
7280 .MNLIST
7281 FE3209 B1 2D LDA ($2D),Y
7282 FE320B 85 23 STA $23
7283 FE320D C8 INY
7284 FE320E C8 INY
7285 FE320F B1 2D LDA ($2D),Y
7286 FE3211 85 21 STA $21
7287 FE3213 C8 INY
7288 FE3214 C8 INY
7289 FE3215 ACC08
7290 FE3215 E2 20 sep #PMFLAG
7291 .LONGA off
7292 .MNLIST
7293 FE3217 20 85 30 JSR L17AD
7294 FE321A A5 2D LDA $2D
7295 FE321C 18 CLC
7296 FE321D 69 06 ADC #$06
7297 FE321F 85 2D STA $2D
7298 FE3221 90 02 BCC ?02
7299 FE3223 E6 2E INC $2E
7300 ?02: ;;;JMP L0EA8
7301
7302 L0EA8: ; $0EA8 - $1133
7303 FE3225 A0 00 LDY #$00
7304 FE3227 B1 29 LDA ($29),Y
7305 FE3229 29 30 AND #$30
7306 FE322B F0 91 BEQ L0EBE
7307 FE322D 20 4B 32 JSR L0D02
7308 FE3230 A6 B8 LDX $B8
7309 FE3232 30 8A BMI L0EBE
7310 FE3234 C9 01 CMP #$01
7311 FE3236 F0 B6 BEQ L0F10
7312 FE3238 4C C9 FF JMP FSETOUT ; set file for output
7313
7314 L1FC5: ; $1FC5
7315 FE323B ACC16
7316 FE323B C2 20 rep #PMFLAG
Tue Jul 17 11:00:23 2018 Page 84
7317 .LONGA on
7318 .MNLIST
7319 FE323D B2 2D LDA ($2D)
7320 FE323F 85 21 STA $21
7321 FE3241 C8 INY
7322 FE3242 C8 INY
7323 FE3243 B1 2D LDA ($2D),Y
7324 FE3245 85 29 STA $29
7325 FE3247 ACC08
7326 FE3247 E2 20 sep #PMFLAG
7327 .LONGA off
7328 .MNLIST
7329 FE3249 80 DA bra L0EA8
7330
7331 FE324B R0F8D:
7332 L0D02: ; $0D02 - $0F8D
7333 ; search file in internal table
7334 FE324B A2 FF LDX #$FF
7335 FE324D 86 B8 STX $B8 ; invalid file
7336 FE324F E8 INX
7337 FE3250 ACC16
7338 FE3250 C2 20 rep #PMFLAG
7339 .LONGA on
7340 .MNLIST
7341 FE3252 BD D0 FF ?02: LDA !MFILET,X ; scan logical file table
7342 FE3255 C5 29 CMP $29
7343 FE3257 F0 8F BEQ L0CFD ; found
7344 FE3259 E8 INX
7345 FE325A E8 INX
7346 FE325B E0 18 CPX #MAX2LF ; max files * 2
7347 FE325D D0 F3 BNE ?02
7348 FE325F ACC08
7349 FE325F E2 20 sep #PMFLAG
7350 .LONGA off
7351 .MNLIST
7352 FE3261 60 _?rs: rts
7353
7354 L2CAA: ; $2CAA - $0E3B
7355 ; send char to printer
7356 FE3262 85 49 STA tmpa
7357 FE3264 20 A8 FF JSR CIOUT
7358 FE3267 A5 49 LDA tmpa
7359 FE3269 C9 0D CMP #$0D
7360 FE326B D0 F4 BNE _?rs
7361 FE326D A5 52 LDA autolf ; send LF if not zero
7362 FE326F F0 F0 BEQ _?rs ; auto line feed flag
7363 FE3271 A9 0A LDA #$0A
7364 FE3273 4C A8 FF JMP CIOUT
7365
7366 L0D1C: ; $0D1C - $0FA7
7367 ; print integer - $21-$22 = integer, $23 = size of the print field
7368 FE3276 A2 00 LDX #$00
7369 FE3278 A5 22 LDA $22 ; $21-$22 = integer
7370 FE327A 08 PHP
7371 FE327B 24 97 bit runf ; when compile print unsigned
7372 FE327D ACC16
7373 FE327D C2 20 rep #PMFLAG
Tue Jul 17 11:00:23 2018 Page 85
7374 .LONGA on
7375 .MNLIST
7376 FE327F 10 0B bpl ?02 ; compiler: no 2's complement
7377 FE3281 A5 21 LDA $21 ; $21-$22 = integer
7378 FE3283 10 07 bpl ?02
7379 FE3285 49 FF FF eor #$FFFF
7380 FE3288 1A inc a
7381 FE3289 85 21 STA $21
7382 FE328B E8 INX
7383 FE328C A0 00 ?02: LDY #$00
7384 FE328E 38 sec
7385 FE328F E8 ?04: INX
7386 ;SEC
7387 FE3290 A5 21 LDA $21
7388 FE3292 F9 9E FF SBC !MPOW10,y
7389 FE3295 C8 INY
7390 FE3296 C8 INY
7391 FE3297 B0 F6 BCS ?04
7392 FE3299 ACC08
7393 FE3299 E2 20 sep #PMFLAG
7394 .LONGA off
7395 .MNLIST
7396 FE329B 20 34 33 JSR L0E69 ; print blanks
7397 FE329E 28 PLP
7398 FE329F 10 09 BPL ?06
7399 FE32A1 24 97 bit runf ; when compile print unsigned
7400 FE32A3 10 05 bpl ?06
7401 FE32A5 A9 2D LDA #$2D
7402 FE32A7 20 E3 32 JSR L0EC4 ; print sign
7403 FE32AA 38 ?06: SEC
7404 FE32AB 08 PHP
7405 FE32AC A0 08 LDY #$08
7406 FE32AE ACC16
7407 FE32AE C2 20 rep #PMFLAG
7408 .LONGA on
7409 .MNLIST
7410 FE32B0 A2 2F ?08: LDX #$2F
7411 FE32B2 38 sec
7412 FE32B3 E8 ?10: INX
7413 ;SEC
7414 FE32B4 A5 21 LDA $21
7415 FE32B6 F9 9C FF SBC !MPOW10-2,y
7416 FE32B9 85 21 STA $21
7417 FE32BB B0 F6 BCS ?10
7418 FE32BD ACC08
7419 FE32BD E2 20 sep #PMFLAG
7420 .LONGA off
7421 .MNLIST
7422 FE32BF 8A txa
7423 FE32C0 C9 30 CMP #$30
7424 FE32C2 D0 04 BNE ?12
7425 FE32C4 28 PLP
7426 FE32C5 B0 06 BCS ?14
7427 FE32C7 08 PHP
7428 FE32C8 20 E3 32 ?12: JSR L0EC4 ; print digit
7429 FE32CB 28 PLP
7430 FE32CC 18 clc
Tue Jul 17 11:00:23 2018 Page 86
7431 FE32CD 08 ?14: php
7432 FE32CE ACC16CLC
7433 FE32CE C2 21 rep #(PMFLAG.OR.PCFLAG)
7434 .LONGA on
7435 .MNLIST
7436 FE32D0 A5 21 LDA $21
7437 FE32D2 79 9C FF ADC !MPOW10-2,y
7438 FE32D5 85 21 STA $21
7439 FE32D7 88 DEY
7440 FE32D8 88 DEY
7441 FE32D9 D0 D5 BNE ?08
7442 FE32DB ACC08
7443 FE32DB E2 20 sep #PMFLAG
7444 .LONGA off
7445 .MNLIST
7446 FE32DD 28 plp
7447 FE32DE A5 21 LDA $21
7448 FE32E0 18 CLC
7449 FE32E1 69 30 ADC #$30
7450
7451 L0EC4: ; $0EC4 - $114F
7452 ; write char to text device
7453 FE32E3 08 PHP
7454 FE32E4 85 4A sta tmpwa
7455 FE32E6 84 44 STY tmpy
7456 FE32E8 86 4B stx tmpx
7457 FE32EA A4 B8 LDY $B8
7458 FE32EC C0 01 CPY #$01
7459 FE32EE F0 2C BEQ ?03 ; to command channel
7460 FE32F0 A4 BA LDY $BA
7461 FE32F2 C0 03 CPY #$03
7462 FE32F4 F0 26 BEQ ?03 ; to screen
7463 FE32F6 90 24 BCC ?03
7464 FE32F8 A8 tay
7465 FE32F9 B2 29 LDA ($29)
7466 FE32FB 89 04 bit #$04
7467 FE32FD F0 06 BEQ ?01 ; no printer
7468 FE32FF 98 tya
7469 FE3300 20 62 32 JSR L2CAA ; send to printer
7470 FE3303 80 1A bra ?04
7471 FE3305 29 08 ?01: AND #$08
7472 FE3307 A8 TAY
7473 FE3308 A5 4A lda tmpwa
7474 FE330A C0 00 CPY #$00
7475 FE330C D0 0E BNE ?03
7476 FE330E C9 0D CMP #$0D
7477 FE3310 F0 05 BEQ ?02
7478 FE3312 20 A8 FF JSR CIOUT
7479 FE3315 80 08 bra ?04
7480 FE3317 20 A8 FF ?02: JSR CIOUT
7481 FE331A 80 03 bra ?04
7482 FE331C 20 D2 FF ?03: JSR FCHROUT
7483 FE331F 20 B8 30 ?04: JSR L0E91
7484 FE3322 A6 4B ldx tmpx
7485 FE3324 A4 44 LDY tmpy
7486 FE3326 A5 4A lda tmpwa
7487 FE3328 28 PLP
Tue Jul 17 11:00:23 2018 Page 87
7488 FE3329 60 _?rs1: RTS
7489
7490 L29B6: ; $29B6 - $2F98
7491 ; print a blank or minus sign
7492 FE332A A9 20 LDA #$20
7493 FE332C 24 66 BIT $66
7494 FE332E 10 B3 BPL L0EC4
7495 FE3330 A9 2D LDA #$2D
7496 FE3332 80 AF bra L0EC4
7497
7498 L0E69: ; $0E69 - $10F4
7499 FE3334 8A TXA
7500 FE3335 49 FF EOR #$FF
7501 FE3337 38 SEC
7502 FE3338 65 23 ADC $23
7503 FE333A AA TAX
7504 FE333B CA ?01: DEX
7505 FE333C 30 EB BMI _?rs1
7506 FE333E A9 20 LDA #$20
7507 FE3340 20 E3 32 JSR L0EC4
7508 FE3343 80 F6 bra ?01
7509
7510 L0A73: ; $0A73 - $0C79
7511 ; handle disk error
7512 ;LDX #$01 ; file #1
7513 ;JSR FSETIN ; channel command in input
7514 FE3345 20 CC FF jsr FCLRCH
7515 FE3348 24 7C bit pcdsk
7516 FE334A 10 06 bpl ?rd ; compile/exec on real disk
7517 FE334C 64 21 stz $21 ; no real disk error
7518 FE334E
7519 FE334E A9 00 lda #0 ; no error
7520 FE3350 80 36 bra ?rd2
7521 FE3352
7522 FE3352 A5 A1 ?rd: lda tbnk ; destination buffer
7523 FE3354 48 pha
7524 FE3355 F4 04 FF pea #TXTBUF
7525 FE3358 F4 A1 00 pea #TBUFMAX-1 ; size
7526 FE335B A9 0F lda #$0F ; command chnl
7527 FE335D 48 pha
7528 FE335E CBMFSRD ; get error string
7529 FE335E 02 81 cop FN_CBMFSRW
7530 FE3360 00 .DB $00
7531 .MNLIST
7532 FE3361 8B phb
7533 FE3362 A5 A1 lda tbnk
7534 FE3364 48 pha
7535 FE3365 AB plb
7536 FE3366 AD 04 FF lda !TXTBUF
7537 FE3369 29 0F and #$0F
7538 FE336B 0A asl a
7539 FE336C 85 21 sta $21
7540 FE336E 0A asl a
7541 FE336F 0A asl a
7542 FE3370 65 21 adc $21
7543 FE3372 85 21 sta $21
7544 FE3374 AD 05 FF lda !TXTBUF+1
Tue Jul 17 11:00:23 2018 Page 88
7545 FE3377 AB plb
7546 FE3378 29 0F and #$0F
7547 FE337A 65 21 adc $21
7548 FE337C 85 21 sta $21
7549 FE337E F0 08 beq ?rd2 ; no error
7550 FE3380 C9 14 cmp #20 ; below 20 no disk error
7551 FE3382 A9 00 lda #0
7552 FE3384 90 02 bcc ?rd2
7553 FE3386 A9 1B lda #MAXVPME ; disk error
7554 FE3388 85 3E ?rd2: sta $3E
7555 FE338A
7556 ;jsr FCHRIN ; get error code
7557 ;sta $21
7558 ;jsr FCLRCH
7559 ;LDA $21 ; error code
7560 ;STA $3E ; error code from disk
7561 FE338A
7562 FE338A F0 9D BEQ _?rs1 ; no disk error
7563 FE338C A5 3B LDA $3B
7564 FE338E 29 80 AND #$80
7565 FE3390 F0 97 BEQ _?rs1 ; trap i/o error
7566 FE3392 A5 29 lda $29 ; save current file desc
7567 FE3394 85 71 sta fbufpt
7568 FE3396 A5 2A lda $2A
7569 FE3398 85 72 sta fbufpt+1
7570 FE339A 20 5C 31 JSR L0F9B ; reset file #1 and print CR
7571 FE339D 64 3B stz $3B
7572 FE339F A6 3E ldx $3E ; error code
7573 FE33A1 E0 1B cpx #MAXVPME
7574 FE33A3 90 12 bcc ?er0 ; no disk error
7575 FE33A5 A5 A1 lda tbnk
7576 FE33A7 85 78 sta longp+2 ; error string from disk
7577 FE33A9 A9 04 lda #<TXTBUF
7578 FE33AB 85 76 sta longp
7579 FE33AD A9 FF lda #>TXTBUF
7580 FE33AF 85 77 sta longp+1
7581 FE33B1 A5 21 lda $21
7582 FE33B3 85 3E sta $3E ; disk error code
7583 FE33B5 80 03 bra ?er1
7584 FE33B7 20 39 1C ?er0: jsr vpmsrch ; search error string - store ptr in longp
7585
7586 ; now format and print error message
7587 FE33BA
7588 FE33BA A4 B7 ?er1: ldy $B7
7589 FE33BC D0 12 bne ?02a ; file name
7590
7591 FE33BE A5 78 lda longp+2 ; param 3: error string pointer
7592 FE33C0 48 pha
7593 FE33C1 D4 76 pei (longp)
7594 FE33C3 A5 3E lda $3E ; param 2: error code
7595 FE33C5 48 pha
7596 FE33C6 A9 FE lda #^STRFMT1A ; param 1: format string
7597 FE33C8 48 pha
7598 FE33C9 F4 6D 3E pea #STRFMT1A
7599 FE33CC A9 08 lda #$08 ; param 0: number of total bytes
7600 FE33CE 80 15 bra ?pr
7601
Tue Jul 17 11:00:23 2018 Page 89
7602 ;stz !MTMPB0
7603 ;ACC16
7604 ;lda $BB ; set an empty string if no file name
7605 ;bne ?02a
7606 ;lda #MTMPB0
7607 ;sta $BB
7608 ?02a: ;ACC08
7609
7610 FE33D0 A5 BD lda $BD ; param 4: file name pointer
7611 FE33D2 48 pha
7612 FE33D3 D4 BB pei ($BB)
7613 FE33D5 A5 78 lda longp+2 ; param 3: error string pointer
7614 FE33D7 48 pha
7615 FE33D8 D4 76 pei (longp)
7616 FE33DA A5 3E lda $3E ; param 2: error code
7617 FE33DC 48 pha
7618 FE33DD A9 FE lda #^STRFMT1 ; param 1: format string
7619 FE33DF 48 pha
7620 FE33E0 F4 4B 3E pea #STRFMT1
7621 FE33E3 A9 0B lda #$0B ; param 0: number of total bytes
7622 FE33E5 48 ?pr: pha
7623 FE33E6 BPRINTF
7624 FE33E6 02 11 cop $11
7625 .MNLIST
7626 ;;JSR L0E89
7627 FE33E8 4C 7C 1B JMP vpmerr2
7628
7629 L09C2: ; $09C2 - $0BC8
7630 ; prepare for open a disk file
7631 FE33EB 64 3E STZ $3E ; clear runtime error
7632 FE33ED ACC16
7633 FE33ED C2 20 rep #PMFLAG
7634 .LONGA on
7635 .MNLIST
7636 FE33EF B2 2D LDA ($2D)
7637 FE33F1 85 21 STA $21
7638 FE33F3 C8 INY
7639 FE33F4 C8 INY
7640 FE33F5 B1 2D LDA ($2D),Y
7641 FE33F7 38 SEC
7642 FE33F8 E9 03 00 SBC #$0003
7643 FE33FB 91 2D STA ($2D),Y
7644 FE33FD 85 29 STA $29
7645 FE33FF 88 dey
7646 FE3400 91 29 STA ($29),Y
7647 FE3402 ACC08
7648 FE3402 E2 20 sep #PMFLAG
7649 .LONGA off
7650 .MNLIST
7651 FE3404 20 4B 32 JSR L0D02 ; search file
7652 FE3407 A5 B8 LDA $B8
7653 FE3409 30 05 BMI ?02 ; no file in internal table
7654 FE340B 20 21 31 JSR L0A5B ; close file
7655 FE340E 80 03 bra ?04
7656 FE3410 20 CE 31 ?02: JSR L0CDE ; open file in internal table
7657 FE3413 A5 3E ?04: LDA $3E
7658 FE3415 F0 01 beq ?044
Tue Jul 17 11:00:23 2018 Page 90
7659 FE3417 60 rts
7660 ;BNE ?14 ; exit if any error
7661 FE3418 A5 21 ?044: LDA $21
7662 FE341A 05 22 ORA $22
7663 ;;BNE ?06 ; file name was specified
7664 FE341C F0 3E beq ?05 ; file name was not specified
7665
7666 FE341E B2 21 lda ($21)
7667 FE3420 C9 40 cmp #'@'
7668 FE3422 D0 06 bne ?04a
7669 FE3424 E6 21 inc $21
7670 FE3426 D0 02 bne ?04a
7671 FE3428 E6 22 inc $22
7672 FE342A A0 01 ?04a: ldy #1
7673 FE342C B1 21 lda ($21),y
7674 FE342E C9 3A cmp #':'
7675 FE3430 F0 3A beq ?06 ; drive present 'x:'
7676 FE3432 88 dey
7677 FE3433 B1 21 ?04b: lda ($21),y
7678 FE3435 99 7E FF sta MTMPB0,y
7679 FE3438 F0 0E beq ?04c
7680 FE343A C9 20 cmp #' '
7681 FE343C F0 0A beq ?04c
7682 FE343E C8 iny
7683 FE343F C0 11 cpy #17
7684 FE3441 90 F0 bcc ?04b
7685 FE3443 A9 00 lda #0
7686 FE3445 99 7D FF sta MTMPB0-1,y
7687 FE3448 A9 30 ?04c: lda #'0'
7688 FE344A 8D 7C FF sta !MTMPB0-2
7689 FE344D A9 3A lda #':'
7690 FE344F 8D 7D FF sta !MTMPB0-1
7691 FE3452 A9 7C LDA #<MTMPW1 ; local buffer file name
7692 FE3454 85 21 STA $21
7693 FE3456 A9 FF LDA #>MTMPW1
7694 FE3458 85 22 STA $22
7695 FE345A 80 10 bra ?06
7696 FE345C
7697 FE345C A9 8F ?05: lda #<MTMPNAM ; setup temp. file
7698 FE345E 85 21 sta $21
7699 FE3460 A9 FF lda #>MTMPNAM ; temp. file name '0:PCODEV01.XTN'
7700 FE3462 85 22 sta $22
7701 FE3464 A5 B8 lda $B8 ; #file number 2..11
7702 FE3466 18 clc
7703 FE3467 69 2E adc #$2E ; '0'..'9'
7704 FE3469 8D 9C FF sta !MTMPNAM+$0D ; N = '0'..'9'
7705 ?06: ; compiler bug -- store one more '@' in front
7706 ; avoid this - skip '@' if one at beginning
7707 FE346C B2 21 lda ($21)
7708 FE346E C9 40 cmp #'@'
7709 FE3470 D0 06 bne ?07
7710 FE3472 E6 21 inc $21
7711 FE3474 D0 02 bne ?07
7712 FE3476 E6 22 inc $22
7713 FE3478 A9 D0 ?07: LDA #<GFNAME ; global buffer file name
7714 FE347A 85 BB STA $BB
7715 FE347C A9 FF LDA #>GFNAME
Tue Jul 17 11:00:23 2018 Page 91
7716 FE347E 85 BC STA $BC
7717 FE3480 A5 A1 lda tbnk ; text bank
7718 FE3482 85 BD sta $BD ; bank
7719 FE3484 A0 00 LDY #$00
7720 FE3486 A9 40 LDA #$40 ; put '@' - replace file on disk if write
7721 FE3488 97 BB STA [$BB],Y
7722 FE348A B1 21 ?08: LDA ($21),Y
7723 FE348C C8 INY
7724 FE348D C9 61 CMP #'a'
7725 FE348F 90 06 BCC ?10
7726 FE3491 C9 7B CMP #'z'+1
7727 FE3493 B0 02 BCS ?10
7728 FE3495 29 DF and #$DF
7729 FE3497 C9 00 ?10: CMP #$00 ; #0 is string terminator
7730 FE3499 F0 0B BEQ ?12
7731 FE349B C9 20 CMP #$20
7732 FE349D F0 07 BEQ ?12 ; blank is a string terminator
7733 FE349F 97 BB STA [$BB],Y
7734 FE34A1 C0 12 CPY #MAXFNLEN-1 ; one more room for '@'
7735 FE34A3 90 E5 bcc ?08
7736 FE34A5 C8 INY ; trunc file name if exceed
7737 FE34A6 A9 2C ?12: lda #',' ; put final ',s,w'
7738 FE34A8 97 BB sta [$BB],y
7739 FE34AA C8 iny
7740 FE34AB A9 53 lda #'S'
7741 FE34AD 97 BB sta [$BB],y
7742 FE34AF C8 iny
7743 FE34B0 A9 2C lda #','
7744 FE34B2 97 BB sta [$BB],y
7745 FE34B4 C8 iny
7746 FE34B5 A9 57 lda #'W'
7747 FE34B7 97 BB sta [$BB],y
7748 FE34B9 C8 iny
7749 FE34BA A9 00 lda #0
7750 FE34BC 97 BB STA [$BB],Y ; store terminator
7751 FE34BE 84 B7 STY $B7 ; filename lenght
7752 FE34C0 A5 B8 LDA $B8
7753 ;and #$3F
7754 ;ora #$80
7755 FE34C2 85 B9 STA $B9 ; secondary address = file number
7756 FE34C4 A9 08 LDA #$08 ; virtual iec disk #number
7757 FE34C6 85 BA STA $BA
7758 FE34C8 60 ?14: RTS
7759
7760 L0F73: ; $0F73 - $11FE
7761 ; get byte from input buffer -- with boundary check
7762 FE34C9 A4 45 LDY inqidx
7763 FE34CB C4 46 CPY inqcnt
7764 FE34CD D0 1F BNE ?04
7765 FE34CF A0 00 LDY #$00
7766 FE34D1 84 45 STY inqidx
7767 FE34D3 20 CF FF ?02: JSR FCHRIN
7768 FE34D6 99 00 FF STA !MINBUF,Y
7769 FE34D9 C8 INY
7770 FE34DA C0 5A cpy #QINSIZ ; check boundary
7771 FE34DC 90 05 bcc ?03 ; room available
7772 FE34DE A9 0D lda #$0D ; terminate input
Tue Jul 17 11:00:23 2018 Page 92
7773 FE34E0 99 FF FE STA !MINBUF-1,Y
7774 ;sta $ff00-1,y
7775 FE34E3 C9 0D ?03: CMP #$0D
7776 FE34E5 D0 EC BNE ?02
7777 FE34E7 84 46 STY inqcnt
7778 FE34E9 20 D2 FF JSR FCHROUT
7779 FE34EC A4 45 LDY inqidx
7780 FE34EE E6 45 ?04: INC inqidx
7781 FE34F0 B9 00 FF LDA !MINBUF,Y
7782 FE34F3 60 RTS
7783
7784 ;---------------------------------------------------------------------------
7785 ; external function's used by compiler
7786 ;---------------------------------------------------------------------------
7787
7788 L084E: ; $1C33 - ($084E)
7789 ; evaluate floating point constant
7790 .GLOBAL L084E
7791 FE34F4 ACC16
7792 FE34F4 C2 20 rep #PMFLAG
7793 .LONGA on
7794 .MNLIST
7795 FE34F6 38 SEC
7796 FE34F7 B1 2D LDA ($2D),Y
7797 FE34F9 E9 50 00 SBC #$0050
7798 FE34FC 85 7A STA $7A
7799 FE34FE ACC08
7800 FE34FE E2 20 sep #PMFLAG
7801 .LONGA off
7802 .MNLIST
7803 FE3500 20 C6 98 JSR XBCF3P
7804 FE3503 AA TAX ; X = 0 if all ok
7805 FE3504 ACC16
7806 FE3504 C2 20 rep #PMFLAG
7807 .LONGA on
7808 .MNLIST
7809 FE3506 A0 02 LDY #$02
7810 FE3508 B1 2D LDA ($2D),Y
7811 FE350A 3A dec a
7812 FE350B 3A dec a
7813 FE350C 85 27 STA $27
7814 FE350E C8 INY
7815 FE350F C8 iny
7816 FE3510 B1 2D LDA ($2D),Y
7817 FE3512 3A dec a
7818 FE3513 3A dec a
7819 FE3514 85 23 STA $23
7820 FE3516 C8 INY
7821 FE3517 C8 iny
7822 FE3518 B1 2D LDA ($2D),Y
7823 FE351A 3A dec a
7824 FE351B 3A dec a
7825 FE351C 85 25 STA $25
7826 FE351E C8 iny
7827 FE351F ACC08
7828 FE351F E2 20 sep #PMFLAG
7829 .LONGA off
Tue Jul 17 11:00:23 2018 Page 93
7830 .MNLIST
7831 FE3521 A9 00 LDA #$00
7832 FE3523 91 2D STA ($2D),Y
7833 FE3525 E0 00 CPX #$00
7834 FE3527 D0 04 BNE ?16
7835 FE3529 A9 01 LDA #$01
7836 FE352B 91 2D STA ($2D),Y
7837 FE352D 88 ?16: DEY
7838 FE352E 91 2D STA ($2D),Y
7839 FE3530 ACC16
7840 FE3530 C2 20 rep #PMFLAG
7841 .LONGA on
7842 .MNLIST
7843 FE3532 AD E8 FF lda !FAC1TMP
7844 FE3535 92 25 STA ($25)
7845 FE3537 AD EA FF lda !FAC1TMP+2
7846 FE353A 92 27 STA ($27)
7847 FE353C ACC08
7848 FE353C E2 20 sep #PMFLAG
7849 .LONGA off
7850 .MNLIST
7851 FE353E A9 00 lda #$00
7852 FE3540 EB xba
7853 FE3541 AD EC FF lda !FAC1TMP+4
7854 FE3544 ACC16CLC
7855 FE3544 C2 21 rep #(PMFLAG.OR.PCFLAG)
7856 .LONGA on
7857 .MNLIST
7858 FE3546 92 23 STA ($23)
7859 FE3548 A5 2D LDA $2D
7860 FE354A 69 06 00 ADC #$0006
7861 FE354D 85 2D STA $2D
7862 FE354F ACC08
7863 FE354F E2 20 sep #PMFLAG
7864 .LONGA off
7865 .MNLIST
7866 FE3551 60 RTS
7867
7868 L0851: ; $1D1C ($0851)
7869 ; search reserved words
7870 .EXTERN PCRSWD
7871 .GLOBAL L0851
7872 FE3552 38 SEC
7873 FE3553 ACC16
7874 FE3553 C2 20 rep #PMFLAG
7875 .LONGA on
7876 .MNLIST
7877 FE3555 B2 2D LDA ($2D)
7878 FE3557 E9 08 00 SBC #$0008
7879 FE355A 85 23 STA $23
7880 FE355C ACC08
7881 FE355C E2 20 sep #PMFLAG
7882 .LONGA off
7883 .MNLIST
7884 FE355E A9 FF LDA #$FF
7885 FE3560 85 21 STA $21
7886 FE3562 A2 00 LDX #$00
Tue Jul 17 11:00:23 2018 Page 94
7887 FE3564 A0 00 ?02: LDY #$00
7888 FE3566 E6 21 INC $21
7889 FE3568 B1 23 ?04: LDA ($23),Y
7890 FE356A DF 0E 82 FE CMP >PCRSWD,X
7891 FE356E D0 15 BNE ?10
7892 FE3570 C8 INY
7893 FE3571 C9 20 CMP #$20
7894 FE3573 F0 01 BEQ ?06
7895 FE3575 E8 INX
7896 FE3576 C0 08 ?06: CPY #$08
7897 FE3578 D0 EE BNE ?04
7898 FE357A A5 21 LDA $21
7899 FE357C A0 00 ?08: LDY #$00
7900 FE357E 92 2D STA ($2D)
7901 FE3580 98 TYA
7902 FE3581 C8 INY
7903 FE3582 91 2D STA ($2D),Y
7904 FE3584 60 RTS
7905 FE3585 BF 0E 82 FE ?10: LDA >PCRSWD,X
7906 FE3589 E8 INX
7907 FE358A C9 20 CMP #$20
7908 FE358C D0 F7 BNE ?10
7909 FE358E BF 0E 82 FE LDA >PCRSWD,X
7910 FE3592 D0 D0 BNE ?02
7911 FE3594 A9 27 LDA #$27
7912 FE3596 D0 E4 BNE ?08
7913
7914 L083C: ; $1E16 ($083C)
7915 ; load an error message in compile mode
7916 .EXTERN PCERRS
7917 .GLOBAL L083C
7918 FE3598 ACC16
7919 FE3598 C2 20 rep #PMFLAG
7920 .LONGA on
7921 .MNLIST
7922 FE359A B2 2D lda ($2D)
7923 FE359C 38 sec
7924 FE359D E9 80 00 sbc #$0080
7925 FE35A0 85 21 sta $21
7926 FE35A2 ACC08
7927 FE35A2 E2 20 sep #PMFLAG
7928 .LONGA off
7929 .MNLIST
7930 FE35A4 A0 02 ldy #$02
7931 FE35A6 B1 2D lda ($2D),y ; error code
7932 FE35A8 A8 tay ; Y = error code
7933 FE35A9 A9 80 lda #$80
7934 FE35AB 85 4C sta pcterr ; set error flag
7935 FE35AD A2 00 ldx #0 ; index
7936 FE35AF INDEX16
7937 FE35AF C2 10 rep #PXFLAG
7938 .LONGI on
7939 .MNLIST
7940 FE35B1 98 tya
7941 FE35B2 F0 14 beq ?04 ; error code = 0 should not occur
7942 FE35B4 D0 04 bne ?02
7943 FE35B6 AA ?01: tax
Tue Jul 17 11:00:23 2018 Page 95
7944 FE35B7 A8 tay
7945 FE35B8 F0 0E beq ?04
7946 FE35BA BF E5 82 FE ?02: lda >PCERRS,x ; offset of error string's
7947 FE35BE F0 F6 beq ?01 ; end of strings table
7948 FE35C0 E8 inx
7949 FE35C1 C9 0D cmp #$0D
7950 FE35C3 D0 F5 bne ?02
7951 FE35C5 88 dey
7952 FE35C6 D0 F2 bne ?02
7953 FE35C8 BF E5 82 FE ?04: lda >PCERRS,x ; here Y = 0 at first time
7954 FE35CC E8 inx
7955 FE35CD 91 21 sta ($21),y
7956 FE35CF C8 iny
7957 FE35D0 C9 0D cmp #$0D
7958 FE35D2 D0 F4 bne ?04 ; until carriage return
7959 FE35D4 88 dey
7960 FE35D5 A9 24 lda #$24 ; change CR
7961 FE35D7 91 21 sta ($21),y
7962 FE35D9 CPU16
7963 FE35D9 C2 30 rep #(PMFLAG.OR.PXFLAG)
7964 .LONGA on
7965 .LONGI on
7966 .MNLIST
7967 FE35DB A5 2D lda $2D
7968 FE35DD 69 04 00 adc #$0004
7969 FE35E0 85 2D sta $2D
7970 FE35E2 CPU08
7971 FE35E2 E2 30 sep #(PMFLAG.OR.PXFLAG)
7972 .LONGA off
7973 .LONGI off
7974 .MNLIST
7975 FE35E4 60 rts
7976
7977 L0836: ; $1DC9 ($0836)
7978 ; search standard procedure/function/identifier
7979 .EXTERN PCSFADDR
7980 .GLOBAL L0836
7981 FE35E5 ACC16
7982 FE35E5 C2 20 rep #PMFLAG
7983 .LONGA on
7984 .MNLIST
7985 FE35E7 A9 5E 3A LDA #PCSFADDR
7986 FE35EA 85 23 sta $23
7987 FE35EC 80 0C bra L1D79
7988
7989 L084B: ; $1D63 ($084B)
7990 ; search user procedure/function/identifier
7991 .GLOBAL L084B
7992 FE35EE ACC16
7993 FE35EE C2 20 rep #PMFLAG
7994 .LONGA on
7995 .MNLIST
7996 FE35F0 B2 2D LDA ($2D)
7997 FE35F2 85 23 STA $23
7998 FE35F4 A5 2D LDA $2D
7999 FE35F6 1A inc a
8000 FE35F7 1A inc a
Tue Jul 17 11:00:23 2018 Page 96
8001 FE35F8 85 2D STA $2D
8002 FE35FA L1D79:
8003 FE35FA B2 2D LDA ($2D)
8004 FE35FC 38 SEC
8005 FE35FD E9 08 00 SBC #$0008
8006 FE3600 85 21 STA $21
8007 FE3602 A5 23 ?02: LDA $23
8008 FE3604 F0 25 BEQ ?08
8009 FE3606 38 SEC
8010 FE3607 E9 10 00 SBC #$0010
8011 FE360A 85 27 sta $27
8012 FE360C ACC08
8013 FE360C E2 20 sep #PMFLAG
8014 .LONGA off
8015 .MNLIST
8016 FE360E A0 00 LDY #$00
8017 FE3610 B1 21 ?04: LDA ($21),Y
8018 FE3612 D1 27 CMP ($27),Y
8019 FE3614 D0 0B BNE ?06
8020 FE3616 C8 INY
8021 FE3617 C0 08 CPY #$08
8022 FE3619 D0 F5 BNE ?04
8023 FE361B ACC16
8024 FE361B C2 20 rep #PMFLAG
8025 .LONGA on
8026 .MNLIST
8027 FE361D A5 23 LDA $23
8028 FE361F 80 0A bra ?08
8029 FE3621 A0 0E ?06: LDY #$0E
8030 FE3623 ACC16
8031 FE3623 C2 20 rep #PMFLAG
8032 .LONGA on
8033 .MNLIST
8034 FE3625 B1 27 LDA ($27),Y
8035 FE3627 85 23 STA $23
8036 FE3629 D0 D7 BNE ?02
8037 FE362B 92 2D ?08: STA ($2D)
8038 FE362D ACC08
8039 FE362D E2 20 sep #PMFLAG
8040 .LONGA off
8041 .MNLIST
8042 FE362F L1E79x:
8043 FE362F 60 RTS
8044
8045 L083F: ; $1E79 ($083F)
8046 .GLOBAL L083F
8047 FE3630 A0 00 LDY #$00
8048 FE3632 B2 0F LDA ($0F)
8049 FE3634 F0 F9 BEQ L1E79x
8050 FE3636 ACC16
8051 FE3636 C2 20 rep #PMFLAG
8052 .LONGA on
8053 .MNLIST
8054 FE3638 B2 1B LDA ($1B)
8055 FE363A 85 29 STA $29
8056 FE363C ACC08
8057 FE363C E2 20 sep #PMFLAG
Tue Jul 17 11:00:23 2018 Page 97
8058 .LONGA off
8059 .MNLIST
8060 FE363E B2 0D LDA ($0D)
8061 FE3640 F0 08 BEQ ?02
8062 FE3642 ACC16
8063 FE3642 C2 20 rep #PMFLAG
8064 .LONGA on
8065 .MNLIST
8066 FE3644 B2 19 LDA ($19)
8067 FE3646 85 29 STA $29
8068 FE3648 ACC08
8069 FE3648 E2 20 sep #PMFLAG
8070 .LONGA off
8071 .MNLIST
8072 FE364A B2 29 ?02: LDA ($29)
8073 FE364C 29 80 AND #$80
8074 FE364E F0 03 BEQ ?04
8075 FE3650 4C DC 36 jmp ?10
8076 FE3653 ?04: ACC16
8077 FE3653 C2 20 rep #PMFLAG
8078 .LONGA on
8079 .MNLIST
8080 FE3655 A5 29 LDA $29
8081 FE3657 3A dec a
8082 FE3658 3A dec a
8083 FE3659 85 21 STA $21
8084 FE365B ACC08
8085 FE365B E2 20 sep #PMFLAG
8086 .LONGA off
8087 .MNLIST
8088 FE365D B2 21 LDA ($21)
8089 FE365F 92 0F STA ($0F)
8090 FE3661 20 EF 31 JSR L0F11
8091 FE3664 20 71 31 ?05: JSR L0F2B
8092 FE3667 C9 0A CMP #$0A
8093 FE3669 F0 F9 BEQ ?05
8094 FE366B 92 21 STA ($21)
8095 FE366D 20 CC FF JSR FCLRCH
8096 FE3670 B2 0F LDA ($0F)
8097 FE3672 C9 0D CMP #$0D
8098 FE3674 D0 3C BNE ?06
8099 FE3676 A9 20 ?05a: LDA #$20
8100 FE3678 92 0F STA ($0F)
8101 FE367A CPU16
8102 FE367A C2 30 rep #(PMFLAG.OR.PXFLAG)
8103 .LONGA on
8104 .LONGI on
8105 .MNLIST
8106 FE367C B2 13 LDA ($13) ; line number?
8107 FE367E 1A inc a
8108 FE367F 92 13 STA ($13)
8109
8110 ;ldx srcdsk
8111 ;cpx #$08
8112 ;beq ?05b
8113 ;lda psrline
8114 ;STA ($13)
Tue Jul 17 11:00:23 2018 Page 98
8115
8116 FE3681 98 ?05b: tya
8117 FE3682 92 11 STA ($11)
8118 FE3684 CPU08
8119 FE3684 E2 30 sep #(PMFLAG.OR.PXFLAG)
8120 .LONGA off
8121 .LONGI off
8122 .MNLIST
8123 FE3686 A9 01 LDA #$01
8124 FE3688 92 0B STA ($0B)
8125 FE368A B2 07 LDA ($07)
8126 FE368C F0 24 BEQ ?06
8127 FE368E ACC16
8128 FE368E C2 20 rep #PMFLAG
8129 .LONGA on
8130 .MNLIST
8131 FE3690 B2 17 LDA ($17)
8132 FE3692 85 29 STA $29
8133 FE3694 ACC08
8134 FE3694 E2 20 sep #PMFLAG
8135 .LONGA off
8136 .MNLIST
8137 FE3696 20 25 32 JSR L0EA8
8138 FE3699 A9 0D LDA #$0D
8139 FE369B 20 E3 32 JSR L0EC4
8140 FE369E A0 00 LDY #$00
8141 FE36A0 ACC16
8142 FE36A0 C2 20 rep #PMFLAG
8143 .LONGA on
8144 .MNLIST
8145 FE36A2 B2 13 LDA ($13)
8146 FE36A4 85 21 STA $21
8147 FE36A6 ACC08
8148 FE36A6 E2 20 sep #PMFLAG
8149 .LONGA off
8150 .MNLIST
8151 FE36A8 A9 05 LDA #$05 ; line number 4 chars
8152 FE36AA 85 23 STA $23
8153 FE36AC 20 76 32 JSR L0D1C ; print line number
8154 FE36AF 20 CC FF JSR FCLRCH
8155 FE36B2 A0 00 ?06: LDY #$00
8156 FE36B4 B2 07 LDA ($07)
8157 FE36B6 F0 23 BEQ ?08
8158 FE36B8 ACC16
8159 FE36B8 C2 20 rep #PMFLAG
8160 .LONGA on
8161 .MNLIST
8162 FE36BA B2 17 LDA ($17)
8163 FE36BC 85 29 STA $29
8164 FE36BE ACC08
8165 FE36BE E2 20 sep #PMFLAG
8166 .LONGA off
8167 .MNLIST
8168 FE36C0 20 25 32 JSR L0EA8
8169 FE36C3 A0 00 LDY #$00
8170 FE36C5 B2 0F LDA ($0F)
8171 FE36C7 20 E3 32 JSR L0EC4
Tue Jul 17 11:00:23 2018 Page 99
8172 FE36CA AA TAX
8173 FE36CB B2 11 LDA ($11)
8174 FE36CD C9 64 CMP #$64
8175 FE36CF B0 0A BCS ?08
8176 FE36D1 1A inc a
8177 FE36D2 92 11 STA ($11)
8178 FE36D4 A8 TAY
8179 FE36D5 8A TXA
8180 FE36D6 91 15 STA ($15),Y
8181 FE36D8 20 CC FF JSR FCLRCH
8182 FE36DB 60 ?08: RTS
8183 FE36DC A0 00 ?10: LDY #$00
8184 FE36DE B2 0D LDA ($0D)
8185 FE36E0 F0 05 BEQ ?12
8186 FE36E2 98 TYA
8187 FE36E3 92 0D STA ($0D)
8188 FE36E5 80 8F bra ?05a
8189 FE36E7 92 0F ?12: STA ($0F)
8190 FE36E9 A9 01 LDA #$01
8191 FE36EB 92 09 STA ($09)
8192 FE36ED 60 RTS
8193
8194 L0842: ; $1F4C ($0842)
8195 ; setup group of 11 pointer from $07-$08 to $1B-$1C
8196 .GLOBAL L0842
8197 FE36EE DA phx
8198 FE36EF A0 00 LDY #$00
8199 FE36F1 BB tyx
8200 FE36F2 ACC16
8201 FE36F2 C2 20 rep #PMFLAG
8202 .LONGA on
8203 .MNLIST
8204 FE36F4 B1 2D ?02: LDA ($2D),Y
8205 FE36F6 3A dec a
8206 FE36F7 3A dec a
8207 FE36F8 95 07 STA <$07,x
8208 FE36FA E8 inx
8209 FE36FB E8 inx
8210 FE36FC C8 iny
8211 FE36FD C8 iny
8212 FE36FE C0 16 cpy #$16
8213 FE3700 D0 F2 bne ?02
8214 FE3702 18 clc
8215 FE3703 A5 2D lda $2D
8216 FE3705 69 16 00 adc #$0016
8217 FE3708 85 2D sta $2D
8218 FE370A 38 sec
8219 FE370B A5 15 lda $15
8220 FE370D E9 63 00 sbc #$0063
8221 FE3710 85 15 sta $15
8222 FE3712 ACC08
8223 FE3712 E2 20 sep #PMFLAG
8224 .LONGA off
8225 .MNLIST
8226 FE3714 FA plx
8227 FE3715 60 rts
8228
Tue Jul 17 11:00:23 2018 Page 100
8229 L0845: ; $1DD3 ($0845)
8230 ; setup pointer to standard basic type records
8231 .EXTERN PCTYPEREC
8232 .GLOBAL L0845
8233 FE3716 A2 00 LDX #$00
8234 FE3718 ACC16
8235 FE3718 C2 20 rep #PMFLAG
8236 .LONGA on
8237 .MNLIST
8238 FE371A B2 2D ?02: LDA ($2D)
8239 FE371C 3A dec a
8240 FE371D 3A dec a
8241 FE371E 85 27 STA $27
8242 FE3720 BF D1 82 FE LDA >PCTYPEREC,X
8243 FE3724 92 27 sta ($27)
8244 FE3726 A5 2D lda $2D
8245 FE3728 1A inc a
8246 FE3729 1A inc a
8247 FE372A 85 2D sta $2D
8248 FE372C E8 inx
8249 FE372D E8 inx
8250 FE372E E0 14 cpx #$14
8251 FE3730 D0 E8 bne ?02
8252 FE3732 ACC08
8253 FE3732 E2 20 sep #PMFLAG
8254 .LONGA off
8255 .MNLIST
8256 FE3734 60 rts
8257
8258 L0857: ; $1C2D ($0857)
8259 .GLOBAL L0857, L0854
8260 FE3735 A9 50 LDA #<MINBUF+$50 ; buffer 0250?
8261 FE3737 A2 FF LDX #>MINBUF+$50
8262 ;lda #$00
8263 ;ldx #$02
8264 FE3739 80 22 bra L1C14
8265
8266 L0854: ; $1BF1 ($0854)
8267 FE373B A5 4E LDA defprn ; open file for printer
8268 FE373D 85 BA STA $BA
8269 FE373F A9 02 LDA #$02
8270 FE3741 85 B8 STA $B8
8271 FE3743 A9 00 LDA #$00
8272 FE3745 85 B9 STA $B9
8273 FE3747 85 B7 STA $B7
8274 FE3749 20 C0 FF JSR FOPEN
8275 FE374C A5 2D LDA $2D
8276 FE374E 18 CLC
8277 FE374F 69 02 ADC #$02
8278 FE3751 85 2D STA $2D
8279 FE3753 90 02 BCC ?02
8280 FE3755 E6 2E INC $2E
8281 FE3757 AD D4 FF ?02: LDA !MFILET+4 ; default printer file descriptor
8282 FE375A AE D5 FF LDX !MFILET+5
8283 L1C14: ; $1C14
8284 FE375D EB xba
8285 FE375E 8A txa ; high byte
Tue Jul 17 11:00:23 2018 Page 101
8286 FE375F EB xba
8287 FE3760 CPU16
8288 FE3760 C2 30 rep #(PMFLAG.OR.PXFLAG)
8289 .LONGA on
8290 .LONGI on
8291 .MNLIST
8292 FE3762 AA tax
8293 FE3763 B2 2D LDA ($2D)
8294 FE3765 3A dec a
8295 FE3766 3A dec a
8296 FE3767 85 27 STA $27
8297 FE3769 8A TXA
8298 FE376A 92 27 STA ($27)
8299 FE376C CPU08
8300 FE376C E2 30 sep #(PMFLAG.OR.PXFLAG)
8301 .LONGA off
8302 .LONGI off
8303 .MNLIST
8304 FE376E 80 5C bra L1FDB
8305
8306 ;---------------------------------------------------------------------------
8307 ; function's in 'compile' mode
8308 ;---------------------------------------------------------------------------
8309
8310 CF00: ; $1FAE
8311 FE3770 B2 2D LDA ($2D)
8312 FE3772 29 7F AND #$7F
8313 FE3774 92 2D STA ($2D)
8314 FE3776 98 TYA
8315 FE3777 C8 INY
8316 FE3778 91 2D STA ($2D),Y
8317 CF08: ; $1FB8
8318 FE377A 60 RTS
8319
8320 ; procedure wrhexb(n: integer)
8321 FE377B RF22:
8322 FE377B A9 01 lda #1
8323 FE377D A2 00 ldx #0
8324 FE377F 20 FB 27 jsr PCE0 ; set text to std. 'output'
8325 FE3782 A0 02 ldy #2 ; swap text var with integer
8326 FE3784 CPU16
8327 FE3784 C2 30 rep #(PMFLAG.OR.PXFLAG)
8328 .LONGA on
8329 .LONGI on
8330 .MNLIST
8331 FE3786 B2 2D lda ($2D)
8332 FE3788 AA tax
8333 FE3789 B1 2D lda ($2D),y
8334 FE378B 92 2D sta ($2D)
8335 FE378D 8A txa
8336 FE378E 91 2D sta ($2D),y
8337 FE3790 CPU08
8338 FE3790 E2 30 sep #(PMFLAG.OR.PXFLAG)
8339 .LONGA off
8340 .LONGI off
8341 .MNLIST
8342 FE3792 A0 00 ldy #0
Tue Jul 17 11:00:23 2018 Page 102
8343
8344 ; procedure fwrhexb(f: text, n: integer)
8345 FE3794 RF07:
8346 FE3794 20 3B 32 JSR L1FC5
8347 FE3797 A5 21 LDA $21
8348 FE3799 20 0C 38 jsr R353E
8349 FE379C 80 1F bra CF01x
8350
8351 ; procedure wrhexw(n: integer)
8352 FE379E RF21:
8353 FE379E A9 01 lda #1
8354 FE37A0 A2 00 ldx #0
8355 FE37A2 20 FB 27 jsr PCE0 ; set text to std. 'output'
8356 FE37A5 A0 02 ldy #2 ; swap text var with integer
8357 FE37A7 CPU16
8358 FE37A7 C2 30 rep #(PMFLAG.OR.PXFLAG)
8359 .LONGA on
8360 .LONGI on
8361 .MNLIST
8362 FE37A9 B2 2D lda ($2D)
8363 FE37AB AA tax
8364 FE37AC B1 2D lda ($2D),y
8365 FE37AE 92 2D sta ($2D)
8366 FE37B0 8A txa
8367 FE37B1 91 2D sta ($2D),y
8368 FE37B3 CPU08
8369 FE37B3 E2 30 sep #(PMFLAG.OR.PXFLAG)
8370 .LONGA off
8371 .LONGI off
8372 .MNLIST
8373 FE37B5 A0 00 ldy #0
8374 FE37B7
8375 ; procedure fwrhexw(f: text, n: integer)
8376 FE37B7 RF06:
8377 CF01: ; $1FB9
8378 ; print hex
8379 FE37B7 20 3B 32 JSR L1FC5
8380 FE37BA 20 05 38 JSR L0D9B
8381 FE37BD CF01x:
8382 FE37BD 20 CC FF JSR FCLRCH
8383 FE37C0 A9 04 lda #$04
8384
8385 L1FE0: ; $1FE0
8386 FE37C2 18 CLC
8387 FE37C3 65 2D ADC $2D
8388 FE37C5 85 2D STA $2D
8389 FE37C7 90 02 BCC ?02
8390 FE37C9 E6 2E INC $2E
8391 FE37CB 60 ?02: RTS
8392
8393 L1FDB: ; $1FDB
8394 FE37CC A9 02 LDA #$02
8395 FE37CE 80 F2 bra L1FE0
8396
8397 CF03: ; $1F7A
8398 FE37D0 C8 INY
8399 FE37D1 B1 2D LDA ($2D),Y
Tue Jul 17 11:00:23 2018 Page 103
8400 FE37D3 D0 22 BNE ?04
8401 FE37D5 88 DEY
8402 FE37D6 B1 2D LDA ($2D),Y
8403 FE37D8 F0 F2 BEQ L1FDB
8404 FE37DA C9 10 CMP #$10
8405 FE37DC B0 19 BCS ?04
8406 FE37DE AA TAX
8407 FE37DF A0 02 LDY #$02
8408 FE37E1 B1 2D LDA ($2D),Y
8409 FE37E3 85 27 STA $27
8410 FE37E5 C8 INY
8411 FE37E6 B1 2D LDA ($2D),Y
8412 FE37E8 06 27 ?02: ASL $27
8413 FE37EA 2A ROL a
8414 FE37EB CA DEX
8415 FE37EC D0 FA BNE ?02
8416 FE37EE 91 2D STA ($2D),Y
8417 FE37F0 88 DEY
8418 FE37F1 A5 27 LDA $27
8419 FE37F3 91 2D STA ($2D),Y
8420 FE37F5 80 D5 bra L1FDB
8421 FE37F7 A0 02 ?04: LDY #$02
8422 FE37F9 A9 00 LDA #$00
8423 FE37FB 91 2D STA ($2D),Y
8424 FE37FD C8 INY
8425 FE37FE 91 2D STA ($2D),Y
8426 FE3800 80 CA bra L1FDB
8427
8428 FE3802 CF02:
8429 FE3802 CF04:
8430 FE3802 CF05:
8431 FE3802 CF06:
8432 FE3802 CF07:
8433 FE3802 4C 4E 1B jmp vpme07
8434
8435 L0D9B: ; $0D9B
8436 ; print hex $21-$22
8437 FE3805 A5 22 LDA $22
8438 FE3807 20 0C 38 JSR R353E
8439 FE380A A5 21 LDA $21
8440 FE380C
8441 FE380C R353E:
8442 FE380C 48 ?10: PHA
8443 FE380D 4A LSR a
8444 FE380E 4A LSR a
8445 FE380F 4A LSR a
8446 FE3810 4A LSR a
8447 FE3811 20 24 38 JSR ?20
8448 FE3814 AA TAX
8449 FE3815 68 PLA
8450 FE3816 29 0F AND #$0F
8451 FE3818 20 24 38 JSR ?20
8452 FE381B 48 PHA
8453 FE381C 8A TXA
8454 FE381D 20 D2 FF JSR FCHROUT
8455 FE3820 68 PLA
8456 FE3821 4C D2 FF JMP FCHROUT
Tue Jul 17 11:00:23 2018 Page 104
8457 FE3824 18 ?20: CLC
8458 FE3825 69 F6 ADC #$F6
8459 FE3827 90 02 BCC ?30
8460 FE3829 69 06 ADC #$06
8461 FE382B 69 3A ?30: ADC #$3A
8462 FE382D 60 RTS
8463
8464 ;---------------------------------------------------------------------------
8465 ; function's in 'run' mode
8466 ;---------------------------------------------------------------------------
8467
8468 ; function peekb(address: integer): $00..$FF
8469 FE382E RF00:
8470 FE382E ACC16
8471 FE382E C2 20 rep #PMFLAG
8472 .LONGA on
8473 .MNLIST
8474 FE3830 B2 2D lda ($2D)
8475 FE3832 85 27 sta $27
8476 FE3834 ACC08
8477 FE3834 E2 20 sep #PMFLAG
8478 .LONGA off
8479 .MNLIST
8480 FE3836 98 tya
8481 FE3837 C8 iny
8482 FE3838 91 2D sta ($2D),y
8483 FE383A B2 27 lda ($27)
8484 FE383C 92 2D sta ($2D)
8485 FE383E 60 rts
8486
8487 ; function peekw(address: integer): integer
8488 FE383F RF01:
8489 FE383F ACC16
8490 FE383F C2 20 rep #PMFLAG
8491 .LONGA on
8492 .MNLIST
8493 FE3841 B2 2D lda ($2D)
8494 FE3843 85 27 sta $27
8495 FE3845 B2 27 lda ($27)
8496 FE3847 92 2D sta ($2D)
8497 FE3849 ACC08
8498 FE3849 E2 20 sep #PMFLAG
8499 .LONGA off
8500 .MNLIST
8501 FE384B 60 rts
8502
8503 ; function peekbz(address: $00..$FF): $00..$FF
8504 FE384C RF02:
8505 FE384C B2 2D lda ($2D)
8506 FE384E AA tax
8507 FE384F B5 00 lda <$00,x
8508 FE3851 92 2D sta ($2D)
8509 FE3853 98 tya
8510 FE3854 C8 iny
8511 FE3855 91 2D sta ($2D),y
8512 FE3857 60 rts
8513
Tue Jul 17 11:00:23 2018 Page 105
8514 ; function peekwz(address: $00..$FF): integer
8515 FE3858 RF03:
8516 FE3858 B2 2D lda ($2D)
8517 FE385A AA tax
8518 FE385B ACC16
8519 FE385B C2 20 rep #PMFLAG
8520 .LONGA on
8521 .MNLIST
8522 FE385D B5 00 lda <$00,x
8523 FE385F 92 2D sta ($2D)
8524 FE3861 ACC08
8525 FE3861 E2 20 sep #PMFLAG
8526 .LONGA off
8527 .MNLIST
8528 FE3863 60 rts
8529
8530 ; function odd(n: integer): boolean
8531 FE3864 RF04:
8532 FE3864 A9 01 lda #$01
8533 FE3866 32 2D and ($2D)
8534 FE3868 92 2D sta ($2D)
8535 FE386A
8536 ; function chr(n:integer): char
8537 ; function asc(c:char): integer
8538 FE386A RF05:
8539 FE386A 98 tya
8540 FE386B C8 iny
8541 FE386C 91 2D sta ($2D),y
8542 FE386E 60 rts
8543
8544 ; function sin(x: real): real
8545 FE386F RF08:
8546 FE386F A9 36 lda #<XE26B
8547 FE3871 A0 9C ldy #>XE26B
8548 FE3873 80 00 bra _math
8549 FE3875
8550 FE3875 _math:
8551 FE3875 85 27 sta $27
8552 FE3877 84 28 sty $28
8553 FE3879 A5 2D lda $2D
8554 FE387B A4 2E ldy $2E
8555 FE387D 20 33 97 jsr XBBA2
8556 FE3880 20 8A 38 jsr _mathj
8557 FE3883 A6 2D ldx $2D
8558 FE3885 A4 2E ldy $2E
8559 FE3887 4C 92 97 jmp XBBD4
8560 FE388A _mathj:
8561 FE388A 6C 27 7F jmp (CBMP0+$0027)
8562
8563 ; function cos(x: real): real
8564 FE388D RF09:
8565 FE388D A9 2F lda #<XE264
8566 FE388F A0 9C ldy #>XE264
8567 FE3891 80 E2 bra _math
8568
8569 ; function cos(x: real): real
8570 FE3893 RF0A:
Tue Jul 17 11:00:23 2018 Page 106
8571 FE3893 A9 7D lda #<XE2B4
8572 FE3895 A0 9C ldy #>XE2B4
8573 FE3897 80 DC bra _math
8574
8575 ; function arctan(x: real): real
8576 FE3899 RF0B:
8577 FE3899 A9 FE lda #<XE30E
8578 FE389B A0 9B ldy #>XE30E
8579 FE389D 80 D6 bra _math
8580
8581 ; function exp(x: real): real
8582 FE389F RF0C:
8583 FE389F A9 55 lda #<XBFED
8584 FE38A1 A0 9B ldy #>XBFED
8585 FE38A3 80 D0 bra _math
8586
8587 ; function ln(x: real): real
8588 FE38A5 RF0D:
8589 FE38A5 A9 8E lda #<XB9EA
8590 FE38A7 A0 95 ldy #>XB9EA
8591 FE38A9 80 CA bra _math
8592
8593 ; function sqrt(x: real): real
8594 FE38AB RF0E:
8595 FE38AB A9 0A lda #<XBF71
8596 FE38AD A0 9B ldy #>XBF71
8597 FE38AF 80 C4 bra _math
8598
8599 ; function raisexy(x,y: real): real
8600 FE38B1 RF0F:
8601 FE38B1 A5 2D lda $2D
8602 FE38B3 A4 2E ldy $2E
8603 FE38B5 18 clc
8604 FE38B6 69 06 adc #$06
8605 FE38B8 90 01 bcc ?02
8606 FE38BA C8 iny
8607 FE38BB 20 8D 93 ?02: jsr XBA8C ; move x to FAC #2
8608 FE38BE A5 2D lda $2D
8609 FE38C0 A4 2E ldy $2E
8610 FE38C2 20 33 97 jsr XBBA2 ; move y to FAC #1
8611 FE38C5 20 14 9B jsr XBF7B ; compute x^y
8612 FE38C8 A5 2D lda $2D
8613 FE38CA A4 2E ldy $2E
8614 FE38CC 18 clc
8615 FE38CD 69 06 adc #$06
8616 FE38CF 90 01 bcc ?04
8617 FE38D1 C8 iny
8618 FE38D2 85 2D ?04: sta $2D
8619 FE38D4 84 2E sty $2E
8620 FE38D6 AA tax
8621 FE38D7 4C 92 97 jmp XBBD4
8622
8623 ; function nroot(x: real; n: integer): real
8624 FE38DA RF10:
8625 FE38DA B2 2D lda ($2D)
8626 FE38DC AA tax
8627 FE38DD C8 iny
Tue Jul 17 11:00:23 2018 Page 107
8628 FE38DE B1 2D lda ($2D),y
8629 FE38E0 85 62 sta $62
8630 FE38E2 85 21 sta $21
8631 FE38E4 86 63 stx $63
8632 FE38E6 10 0D bpl ?02
8633 FE38E8 A9 00 lda #$00
8634 FE38EA 38 sec
8635 FE38EB E5 63 sbc $63
8636 FE38ED 85 63 sta $63
8637 FE38EF A9 00 lda #$00
8638 FE38F1 E5 62 sbc $62
8639 FE38F3 85 62 sta $62
8640 FE38F5 A2 90 ?02: ldx #$90
8641 FE38F7 38 sec
8642 FE38F8 20 09 98 jsr XBC49 ; convert integer to float
8643 FE38FB A5 21 lda $21
8644 FE38FD 85 66 sta $66
8645 FE38FF A9 A2 lda #<XB9BC ; move costant 1.0 to FAC #2
8646 FE3901 A0 9C ldy #>XB9BC
8647 FE3903 A2 FE ldx #^RF10
8648 FE3905 20 91 96 jsr XBB0F ; and compute 1/n
8649 FE3908 20 72 97 jsr XBBC7 ; round and move to FAC1TMP
8650 FE390B A5 2D lda $2D
8651 FE390D A4 2E ldy $2E
8652 FE390F 18 clc
8653 FE3910 69 02 adc #$02
8654 FE3912 90 01 bcc ?04
8655 FE3914 C8 iny
8656 FE3915 85 2D ?04: sta $2D
8657 FE3917 84 2E sty $2E
8658 FE3919 20 8D 93 jsr XBA8C ; move x to FAC #2
8659 FE391C A9 E8 lda #<FAC1TMP
8660 FE391E A0 FF ldy #>FAC1TMP
8661 FE3920 20 41 97 jsr XBBA2T ; move 1/n to FAC #1
8662 FE3923 20 14 9B jsr XBF7B ; compute x^(1/n)
8663 FE3926 A6 2D ldx $2D
8664 FE3928 A4 2E ldy $2E
8665 FE392A 4C 92 97 jmp XBBD4
8666
8667 ; procedure swapw(var n,m: integer)
8668 FE392D RF11:
8669 FE392D A0 02 ldy #$02
8670 FE392F CPU16
8671 FE392F C2 30 rep #(PMFLAG.OR.PXFLAG)
8672 .LONGA on
8673 .LONGI on
8674 .MNLIST
8675 FE3931 B2 2D lda ($2D)
8676 FE3933 3A dec a
8677 FE3934 3A dec a
8678 FE3935 85 25 sta $25 ; pointer to m
8679 FE3937 B1 2D lda ($2D),y
8680 FE3939 3A dec a
8681 FE393A 3A dec a
8682 FE393B 85 27 sta $27 ; pointer to n
8683 FE393D B2 25 lda ($25)
8684 FE393F AA tax
Tue Jul 17 11:00:23 2018 Page 108
8685 FE3940 B2 27 lda ($27)
8686 FE3942 92 25 sta ($25)
8687 FE3944 8A txa
8688 FE3945 92 27 sta ($27)
8689 FE3947 CPU08
8690 FE3947 E2 30 sep #(PMFLAG.OR.PXFLAG)
8691 .LONGA off
8692 .LONGI off
8693 .MNLIST
8694 FE3949 4C E5 1D jmp SK04
8695
8696 ; procedure passign(var p: pointer; adr:integer)
8697 FE394C RF12:
8698 FE394C A0 02 ldy #$02
8699 FE394E ACC16
8700 FE394E C2 20 rep #PMFLAG
8701 .LONGA on
8702 .MNLIST
8703 FE3950 B1 2D lda ($2D),y ; pointer to p
8704 FE3952 3A dec a
8705 FE3953 3A dec a
8706 FE3954 85 27 sta $27
8707 FE3956 B2 2D lda ($2D) ; load adr
8708 FE3958 92 27 sta ($27) ; assign to p
8709 FE395A ACC08
8710 FE395A E2 20 sep #PMFLAG
8711 .LONGA off
8712 .MNLIST
8713 FE395C 4C E5 1D jmp SK04
8714
8715 ; function trunc(x: real): integer
8716 FE395F RF13:
8717 FE395F A5 2D lda $2D
8718 FE3961 A4 2E ldy $2E
8719 FE3963 20 33 97 jsr XBBA2
8720 FE3966 RF13x:
8721 FE3966 A5 61 lda $61
8722 FE3968 F0 2E beq ?08 ; zero
8723 FE396A 10 2C bpl ?08 ; less than 1
8724 FE396C 38 sec
8725 FE396D E9 90 sbc #$90
8726 FE396F 10 2D bpl ?10 ; integer overflow
8727 FE3971 AA tax
8728 FE3972 46 62 ?02: lsr $62
8729 FE3974 66 63 ror $63
8730 FE3976 E8 inx
8731 FE3977 D0 F9 bne ?02
8732 FE3979 A5 66 ?04: lda $66
8733 FE397B 10 0D bpl ?06
8734 FE397D A9 00 lda #$00
8735 FE397F 38 sec
8736 FE3980 E5 63 sbc $63
8737 FE3982 85 63 sta $63
8738 FE3984 A9 00 lda #$00
8739 FE3986 E5 62 sbc $62
8740 FE3988 85 62 sta $62
8741 FE398A A0 04 ?06: ldy #$04
Tue Jul 17 11:00:23 2018 Page 109
8742 FE398C ACC16
8743 FE398C C2 20 rep #PMFLAG
8744 .LONGA on
8745 .MNLIST
8746 FE398E A5 62 lda $62
8747 FE3990 EB xba
8748 FE3991 91 2D sta ($2D),y
8749 FE3993 ACC08
8750 FE3993 E2 20 sep #PMFLAG
8751 .LONGA off
8752 .MNLIST
8753 FE3995 4C E5 1D jmp SK04
8754 FE3998 64 62 ?08: stz $62
8755 FE399A 64 63 stz $63
8756 FE399C 80 EC bra ?06
8757 FE399E A2 03 ?10: ldx #$03 ; integer overflow
8758 FE39A0 4C 50 1B jmp vpmerr
8759
8760 ; function round(x: real): integer
8761 FE39A3 RF14:
8762 FE39A3 A5 2D lda $2D
8763 FE39A5 A4 2E ldy $2E
8764 FE39A7 20 33 97 jsr XBBA2
8765 FE39AA A9 AC lda #<FCON05 ; float 0.5
8766 FE39AC A0 9C ldy #>FCON05
8767 FE39AE A6 66 ldx $66
8768 FE39B0 10 04 bpl ?02 ; add 0.5
8769 FE39B2 A9 D0 lda #<XB9E0 ; float -0.5
8770 FE39B4 A0 9C ldy #>XB9E0
8771 FE39B6 20 09 94 ?02: jsr XB867 ; add =/- 0.5
8772 FE39B9 80 AB bra RF13x ; and trunc
8773
8774 ; function random: integer
8775 FE39BB RF15:
8776 FE39BB 20 49 20 jsr decstk ; decrement stack
8777 FE39BE A5 41 lda $41
8778 FE39C0 0A asl a
8779 FE39C1 69 00 adc #$00
8780 FE39C3 45 41 eor $41
8781 FE39C5 4A lsr a
8782 FE39C6 90 02 bcc ?02
8783 FE39C8 09 80 ora #$80
8784 FE39CA E6 42 ?02: inc $42
8785 FE39CC 65 42 adc $42
8786 FE39CE 85 41 sta $41
8787 FE39D0 50 02 bvc ?04
8788 FE39D2 E6 42 inc $42
8789 FE39D4 92 2D ?04: sta ($2D)
8790 FE39D6 98 tya
8791 FE39D7 C8 iny
8792 FE39D8 91 2D sta ($2D),y
8793 FE39DA 60 rts
8794
8795 ; procedure iotrap(boolean)
8796 FE39DB RF16:
8797 FE39DB B2 2D lda ($2D)
8798 FE39DD 08 php
Tue Jul 17 11:00:23 2018 Page 110
8799 FE39DE A5 3B lda prtrap
8800 FE39E0 09 80 ora #$80
8801 FE39E2 28 plp
8802 FE39E3 D0 02 bne ?02
8803 FE39E5 49 80 eor #$80
8804 FE39E7 85 3B ?02: sta prtrap
8805 FE39E9 4C 95 1E jmp SK02
8806
8807 ; procedure breaks(boolean)
8808 FE39EC RF17:
8809 FE39EC B2 2D lda ($2D)
8810 FE39EE 08 php
8811 FE39EF A5 3B lda prtrap
8812 FE39F1 09 40 ora #$40
8813 FE39F3 28 plp
8814 FE39F4 D0 02 bne ?02
8815 FE39F6 49 40 eor #$40
8816 FE39F8 85 3B ?02: sta prtrap
8817 FE39FA 4C 95 1E jmp SK02
8818
8819 ; function ioerror: integer
8820 FE39FD RF18:
8821 FE39FD 20 49 20 jsr decstk ; decrement stack
8822 FE3A00 A5 3E lda prterr
8823 FE3A02 RF18x:
8824 FE3A02 92 2D sta ($2D)
8825 FE3A04 98 tya
8826 FE3A05 C8 iny
8827 FE3A06 91 2D sta ($2D),y
8828 FE3A08 60 rts
8829 FE3A09
8830 ; function getkey: char
8831 FE3A09 RF19:
8832 FE3A09 20 49 20 jsr decstk ; decrement stack
8833 FE3A0C 20 E4 FF jsr FGETIN
8834 FE3A0F 80 F1 bra RF18x
8835
8836 ; function rdhex: integer;
8837 FE3A11 RF20:
8838 FE3A11 A9 00 lda #0
8839 FE3A13 AA tax
8840 FE3A14 20 FB 27 jsr PCE0 ; set text to std. 'input'
8841 FE3A17
8842 ; function frdhex(file: text): integer;
8843 FE3A17 RF1A:
8844 FE3A17 20 14 30 jsr L178B
8845 FE3A1A 20 34 3A jsr R10A6
8846 FE3A1D 90 05 bcc ?02
8847 FE3A1F A2 02 ldx #$02
8848 FE3A21 20 C0 31 jsr L0FAA
8849 FE3A24 20 8F 30 ?02: jsr L17B7
8850 FE3A27 A0 01 ldy #1
8851 FE3A29 A5 21 lda $21
8852 FE3A2B 92 2D sta ($2D)
8853 FE3A2D A5 22 lda $22
8854 FE3A2F 91 2D sta ($2D),y
8855 FE3A31 4C CC FF jmp FCLRCH
Tue Jul 17 11:00:23 2018 Page 111
8856 FE3A34
8857 FE3A34 R10A6:
8858 FE3A34 A2 00 ldx #0
8859 FE3A36 86 21 stx $21
8860 FE3A38 86 22 stx $22
8861 FE3A3A C9 20 cmp #$20
8862 FE3A3C F0 08 beq ?02
8863 FE3A3E C9 0D cmp #$0D
8864 FE3A40 F0 04 beq ?02
8865 FE3A42 C9 0A cmp #$0A
8866 FE3A44 D0 03 bne ?04
8867 FE3A46 20 71 31 ?02: jsr L0F2B
8868 FE3A49 AA ?04: tax
8869 FE3A4A 20 68 3A jsr R10DA
8870 FE3A4D B0 17 bcs ?10
8871 FE3A4F A0 04 ?06: ldy #$04
8872 FE3A51 06 21 ?08: asl $21
8873 FE3A53 26 22 rol $22
8874 FE3A55 88 dey
8875 FE3A56 D0 F9 bne ?08
8876 FE3A58 05 21 ora $21
8877 FE3A5A 85 21 sta $21
8878 FE3A5C 20 71 31 jsr L0F2B
8879 FE3A5F AA tax
8880 FE3A60 20 68 3A jsr R10DA
8881 FE3A63 90 EA bcc ?06
8882 FE3A65 18 clc
8883 FE3A66 8A ?10: txa
8884 FE3A67 60 rts
8885 FE3A68
8886 FE3A68 R10DA:
8887 FE3A68 38 sec
8888 FE3A69 E9 30 sbc #$30
8889 FE3A6B 90 13 bcc ?02
8890 FE3A6D C9 0A cmp #$0A
8891 FE3A6F 90 10 bcc ?04
8892 FE3A71 38 sec
8893 FE3A72 E9 07 sbc #$07
8894 FE3A74 90 0A bcc ?02
8895 FE3A76 C9 10 cmp #$10
8896 FE3A78 90 07 bcc ?04
8897 FE3A7A 38 sec
8898 FE3A7B E9 20 sbc #$20
8899 FE3A7D C9 10 cmp #$10
8900 FE3A7F 60 rts
8901 FE3A80 38 ?02: sec
8902 FE3A81 60 ?04: rts
8903
8904 ; function andw(a,b: integer): integer
8905 FE3A82 RF1B:
8906 FE3A82 A0 02 ldy #$02
8907 FE3A84 ACC16
8908 FE3A84 C2 20 rep #PMFLAG
8909 .LONGA on
8910 .MNLIST
8911 FE3A86 B2 2D lda ($2D) ; a
8912 FE3A88 31 2D and ($2D),y ; and b
Tue Jul 17 11:00:23 2018 Page 112
8913 FE3A8A 91 2D sta ($2D),y ; store in b
8914 FE3A8C ACC08
8915 FE3A8C E2 20 sep #PMFLAG
8916 .LONGA off
8917 .MNLIST
8918 FE3A8E 4C 95 1E jmp SK02
8919
8920 ; function orw(a,b: integer): integer
8921 FE3A91 RF1C:
8922 FE3A91 A0 02 ldy #$02
8923 FE3A93 ACC16
8924 FE3A93 C2 20 rep #PMFLAG
8925 .LONGA on
8926 .MNLIST
8927 FE3A95 B2 2D lda ($2D) ; a
8928 FE3A97 11 2D ora ($2D),y ; or b
8929 FE3A99 91 2D sta ($2D),y ; store in b
8930 FE3A9B ACC08
8931 FE3A9B E2 20 sep #PMFLAG
8932 .LONGA off
8933 .MNLIST
8934 FE3A9D 4C 95 1E jmp SK02
8935
8936 ; function xorw(a,b: integer): integer
8937 FE3AA0 RF1D:
8938 FE3AA0 A0 02 ldy #$02
8939 FE3AA2 ACC16
8940 FE3AA2 C2 20 rep #PMFLAG
8941 .LONGA on
8942 .MNLIST
8943 FE3AA4 B2 2D lda ($2D) ; a
8944 FE3AA6 51 2D eor ($2D),y ; xor b
8945 FE3AA8 91 2D sta ($2D),y ; store in b
8946 FE3AAA ACC08
8947 FE3AAA E2 20 sep #PMFLAG
8948 .LONGA off
8949 .MNLIST
8950 FE3AAC 4C 95 1E jmp SK02
8951 FE3AAF
8952 ; function notw(a: integer): integer
8953 FE3AAF RF1E:
8954 FE3AAF ACC16
8955 FE3AAF C2 20 rep #PMFLAG
8956 .LONGA on
8957 .MNLIST
8958 FE3AB1 B2 2D lda ($2D) ; a
8959 FE3AB3 49 FF FF eor #$FFFF
8960 FE3AB6 92 2D sta ($2D)
8961 FE3AB8 ACC08
8962 FE3AB8 E2 20 sep #PMFLAG
8963 .LONGA off
8964 .MNLIST
8965 FE3ABA 60 rts
8966 FE3ABB
8967 ; function negw(a: integer): integer
8968 FE3ABB RF1F:
8969 FE3ABB ACC16
Tue Jul 17 11:00:23 2018 Page 113
8970 FE3ABB C2 20 rep #PMFLAG
8971 .LONGA on
8972 .MNLIST
8973 FE3ABD B2 2D lda ($2D) ; a
8974 FE3ABF 49 FF FF eor #$FFFF
8975 FE3AC2 1A inc a
8976 FE3AC3 92 2D sta ($2D)
8977 FE3AC5 ACC08
8978 FE3AC5 E2 20 sep #PMFLAG
8979 .LONGA off
8980 .MNLIST
8981 FE3AC7 60 rts
8982
8983 ; function lpeekb(bank: $00..$FF; address: integer): $00..$FF
8984 FE3AC8 RF23:
8985 FE3AC8 ACC16
8986 FE3AC8 C2 20 rep #PMFLAG
8987 .LONGA on
8988 .MNLIST
8989 FE3ACA B2 2D lda ($2D)
8990 FE3ACC 85 76 sta longp
8991 FE3ACE ACC08
8992 FE3ACE E2 20 sep #PMFLAG
8993 .LONGA off
8994 .MNLIST
8995 FE3AD0 98 tya
8996 FE3AD1 A0 03 ldy #3
8997 FE3AD3 91 2D sta ($2D),y
8998 FE3AD5 88 dey
8999 FE3AD6 B1 2D lda ($2D),y
9000 FE3AD8 85 78 sta longp+2
9001 FE3ADA A7 76 lda [longp]
9002 FE3ADC 91 2D sta ($2D),y
9003 FE3ADE 4C 95 1E jmp SK02
9004
9005 ; function lpeekw(bank: $00..$FF; address: integer): integer
9006 FE3AE1 RF24:
9007 FE3AE1 ACC16
9008 FE3AE1 C2 20 rep #PMFLAG
9009 .LONGA on
9010 .MNLIST
9011 FE3AE3 B2 2D lda ($2D)
9012 FE3AE5 85 76 sta longp
9013 FE3AE7 ACC08
9014 FE3AE7 E2 20 sep #PMFLAG
9015 .LONGA off
9016 .MNLIST
9017 FE3AE9 A0 02 ldy #2
9018 FE3AEB B1 2D lda ($2D),y
9019 FE3AED 85 78 sta longp+2
9020 FE3AEF ACC16
9021 FE3AEF C2 20 rep #PMFLAG
9022 .LONGA on
9023 .MNLIST
9024 FE3AF1 A7 76 lda [longp]
9025 FE3AF3 91 2D sta ($2D),y
9026 FE3AF5 ACC08
Tue Jul 17 11:00:23 2018 Page 114
9027 FE3AF5 E2 20 sep #PMFLAG
9028 .LONGA off
9029 .MNLIST
9030 FE3AF7 4C 95 1E jmp SK02
9031
9032 ; procedure pokeb(address, val: integer)
9033 FE3AFA RF25:
9034 FE3AFA A0 02 ldy #2
9035 FE3AFC ACC16
9036 FE3AFC C2 20 rep #PMFLAG
9037 .LONGA on
9038 .MNLIST
9039 FE3AFE B1 2D lda ($2D),y
9040 FE3B00 85 27 sta $27
9041 FE3B02 ACC08
9042 FE3B02 E2 20 sep #PMFLAG
9043 .LONGA off
9044 .MNLIST
9045 FE3B04 B2 2D lda ($2D)
9046 FE3B06 92 27 sta ($27)
9047 FE3B08 4C E5 1D jmp SK04
9048 FE3B0B
9049 ; procedure pokew(address, val: integer)
9050 FE3B0B RF26:
9051 FE3B0B A0 02 ldy #2
9052 FE3B0D ACC16
9053 FE3B0D C2 20 rep #PMFLAG
9054 .LONGA on
9055 .MNLIST
9056 FE3B0F B1 2D lda ($2D),y
9057 FE3B11 85 27 sta $27
9058 FE3B13 B2 2D lda ($2D)
9059 FE3B15 92 27 sta ($27)
9060 FE3B17 ACC08
9061 FE3B17 E2 20 sep #PMFLAG
9062 .LONGA off
9063 .MNLIST
9064 FE3B19 4C E5 1D jmp SK04
9065
9066 ; procedure pokebz(zp, val: integer)
9067 FE3B1C RF27:
9068 FE3B1C A0 02 ldy #2
9069 FE3B1E B1 2D lda ($2D),y
9070 FE3B20 AA tax
9071 FE3B21 B2 2D lda ($2D)
9072 FE3B23 95 00 sta <$00,x
9073 FE3B25 4C E5 1D jmp SK04
9074
9075 ; procedure pokewz(zp, val: integer)
9076 FE3B28 RF28:
9077 FE3B28 A0 02 ldy #2
9078 FE3B2A B1 2D lda ($2D),y
9079 FE3B2C AA tax
9080 FE3B2D ACC16
9081 FE3B2D C2 20 rep #PMFLAG
9082 .LONGA on
9083 .MNLIST
Tue Jul 17 11:00:23 2018 Page 115
9084 FE3B2F B2 2D lda ($2D)
9085 FE3B31 95 00 sta <$00,x
9086 FE3B33 ACC08
9087 FE3B33 E2 20 sep #PMFLAG
9088 .LONGA off
9089 .MNLIST
9090 FE3B35 4C E5 1D jmp SK04
9091
9092 ; procedure lpokeb(bank, address, val: integer)
9093 FE3B38 RF29:
9094 FE3B38 A0 02 ldy #2
9095 FE3B3A ACC16
9096 FE3B3A C2 20 rep #PMFLAG
9097 .LONGA on
9098 .MNLIST
9099 FE3B3C B1 2D lda ($2D),y
9100 FE3B3E 85 76 sta longp
9101 FE3B40 ACC08
9102 FE3B40 E2 20 sep #PMFLAG
9103 .LONGA off
9104 .MNLIST
9105 FE3B42 A0 04 ldy #4
9106 FE3B44 B1 2D lda ($2D),y
9107 FE3B46 85 78 sta longp+2
9108 FE3B48 B2 2D lda ($2D)
9109 FE3B4A 87 76 sta [longp]
9110 FE3B4C 80 16 bra RF2Ax
9111 FE3B4E
9112 ; procedure lpokew(bank, address, val: integer)
9113 FE3B4E RF2A:
9114 FE3B4E A0 02 ldy #2
9115 FE3B50 ACC16
9116 FE3B50 C2 20 rep #PMFLAG
9117 .LONGA on
9118 .MNLIST
9119 FE3B52 B1 2D lda ($2D),y
9120 FE3B54 85 76 sta longp
9121 FE3B56 ACC08
9122 FE3B56 E2 20 sep #PMFLAG
9123 .LONGA off
9124 .MNLIST
9125 FE3B58 A0 04 ldy #4
9126 FE3B5A B1 2D lda ($2D),y
9127 FE3B5C 85 78 sta longp+2
9128 FE3B5E ACC16
9129 FE3B5E C2 20 rep #PMFLAG
9130 .LONGA on
9131 .MNLIST
9132 FE3B60 B2 2D lda ($2D)
9133 FE3B62 87 76 sta [longp]
9134 FE3B64 RF2Ax: ACC16CLC
9135 FE3B64 C2 21 rep #(PMFLAG.OR.PCFLAG)
9136 .LONGA on
9137 .MNLIST
9138 FE3B66 A5 2D lda $2D
9139 FE3B68 69 06 00 adc #$0006
9140 FE3B6B 85 2D sta $2D
Tue Jul 17 11:00:23 2018 Page 116
9141 FE3B6D ACC08
9142 FE3B6D E2 20 sep #PMFLAG
9143 .LONGA off
9144 .MNLIST
9145 FE3B6F 60 rts
9146
9147 ; function shl(val, shift: integer): integer
9148 FE3B70 RF2B:
9149 FE3B70 C8 iny
9150 FE3B71 B1 2D lda ($2D),y
9151 FE3B73 30 29 bmi RF2Bz
9152 FE3B75 D0 1B bne RF2Bx
9153 FE3B77 88 dey
9154 FE3B78 B1 2D lda ($2D),y
9155 FE3B7A F0 1F beq RF2By
9156 FE3B7C C9 10 R1EE6: cmp #$10
9157 FE3B7E B0 12 bcs RF2Bx
9158 FE3B80 AA tax
9159 FE3B81 A0 02 ldy #2
9160 FE3B83 ACC16
9161 FE3B83 C2 20 rep #PMFLAG
9162 .LONGA on
9163 .MNLIST
9164 FE3B85 B1 2D lda ($2D),y
9165 FE3B87 0A ?02: asl a
9166 FE3B88 CA dex
9167 FE3B89 D0 FC bne ?02
9168 FE3B8B 91 2D sta ($2D),y
9169 FE3B8D ACC08
9170 FE3B8D E2 20 sep #PMFLAG
9171 .LONGA off
9172 .MNLIST
9173 FE3B8F 4C 95 1E jmp SK02
9174
9175 FE3B92 A0 02 RF2Bx: ldy #2
9176 FE3B94 A9 00 lda #0
9177 FE3B96 91 2D sta ($2D),y
9178 FE3B98 C8 iny
9179 FE3B99 91 2D sta ($2D),y
9180 FE3B9B 4C 95 1E RF2By: jmp SK02
9181
9182 FE3B9E 49 FF RF2Bz: eor #$FF
9183 FE3BA0 D0 F0 bne RF2Bx
9184 FE3BA2 88 dey
9185 FE3BA3 38 sec
9186 FE3BA4 F1 2D sbc ($2D),y
9187 FE3BA6 90 16 bcc R1F1C
9188 FE3BA8 49 FF R1F3C: eor #$FF
9189 FE3BAA D0 E6 bne RF2Bx
9190 FE3BAC 88 dey
9191 FE3BAD 38 sec
9192 FE3BAE F1 2D sbc ($2D),y
9193 FE3BB0 80 CA bra R1EE6
9194
9195 ; function shr(val, shift: integer): integer
9196 FE3BB2 RF2C:
9197 FE3BB2 C8 iny
Tue Jul 17 11:00:23 2018 Page 117
9198 FE3BB3 B1 2D lda ($2D),y
9199 FE3BB5 30 F1 bmi R1F3C
9200 FE3BB7 D0 D9 bne RF2Bx
9201 FE3BB9 88 dey
9202 FE3BBA B1 2D lda ($2D),y
9203 FE3BBC F0 DD beq RF2By
9204 FE3BBE C9 10 R1F1C: cmp #$10
9205 FE3BC0 B0 D0 bcs RF2Bx
9206 FE3BC2 AA tax
9207 FE3BC3 A0 02 ldy #2
9208 FE3BC5 ACC16
9209 FE3BC5 C2 20 rep #PMFLAG
9210 .LONGA on
9211 .MNLIST
9212 FE3BC7 B1 2D lda ($2D),y
9213 FE3BC9 4A ?02: lsr a
9214 FE3BCA CA dex
9215 FE3BCB D0 FC bne ?02
9216 FE3BCD 91 2D sta ($2D),y
9217 FE3BCF ACC08
9218 FE3BCF E2 20 sep #PMFLAG
9219 .LONGA off
9220 .MNLIST
9221 FE3BD1 4C 95 1E jmp SK02
9222
9223 ; function exp10(x: real): real
9224 FE3BD4 RF2D:
9225 FE3BD4 A9 A7 lda #<FCON10
9226 FE3BD6 A0 9C ldy #>FCON10
9227 FE3BD8 20 B8 93 jsr XBA8CK ; move float 10 to FAC #2
9228 FE3BDB A5 2D lda $2D
9229 FE3BDD A4 2E ldy $2E
9230 FE3BDF 20 33 97 jsr XBBA2 ; move x to FAC #1
9231 FE3BE2 20 14 9B jsr XBF7B ; compute 10^x
9232 FE3BE5 A6 2D ldx $2D
9233 FE3BE7 A4 2E ldy $2E
9234 FE3BE9 4C 92 97 jmp XBBD4
9235
9236 ; function log(x:real):real
9237 FE3BEC RF2E:
9238 FE3BEC A5 2D lda $2D
9239 FE3BEE A4 2E ldy $2E
9240 FE3BF0 20 33 97 jsr XBBA2 ; move x to FAC #1
9241 FE3BF3 20 8E 95 jsr XB9EA ; compute ln(x)
9242 FE3BF6 20 CE 97 jsr XBC0C ; round FAC #1 and move to FAC #2
9243 FE3BF9 A9 DF lda #<XLN10
9244 FE3BFB A0 9C ldy #>XLN10
9245 FE3BFD 20 49 97 jsr XBBA2K ; move ln(10) to FAC #1
9246 FE3C00 20 94 96 jsr XBB12 ; compute ln(x)/ln(10)
9247 FE3C03 A6 2D ldx $2D
9248 FE3C05 A4 2E ldy $2E
9249 FE3C07 4C 92 97 jmp XBBD4
9250
9251 ;function nraise(x: real; n: integer): real
9252 FE3C0A RF2F:
9253 FE3C0A 64 23 stz $23
9254 FE3C0C A2 FF ldx #$FF
Tue Jul 17 11:00:23 2018 Page 118
9255 FE3C0E ACC16
9256 FE3C0E C2 20 rep #PMFLAG
9257 .LONGA on
9258 .MNLIST
9259 FE3C10 B2 2D lda ($2D)
9260 FE3C12 85 21 sta $21
9261 FE3C14 A5 2D lda $2D
9262 FE3C16 1A inc a
9263 FE3C17 1A inc a
9264 FE3C18 85 2D sta $2D
9265 FE3C1A A5 21 lda $21
9266 FE3C1C 10 08 bpl ?02
9267 FE3C1E 98 tya
9268 FE3C1F 38 sec
9269 FE3C20 E5 21 sbc $21
9270 FE3C22 85 21 sta $21
9271 FE3C24 86 23 stx $23
9272 FE3C26 F0 33 ?02: beq ?20 ; if n = 0 return 1
9273 FE3C28 3A dec a
9274 FE3C29 85 21 sta $21 ; counter
9275 FE3C2B ACC08
9276 FE3C2B E2 20 sep #PMFLAG
9277 .LONGA off
9278 .MNLIST
9279 FE3C2D 08 php
9280 FE3C2E A5 2D lda $2D
9281 FE3C30 A4 2E ldy $2E
9282 FE3C32 20 33 97 jsr XBBA2 ; move x to FAC #1
9283 FE3C35 28 plp
9284 FE3C36 F0 14 beq ?14 ; if n = 1 return x, if n = -1 return 1/x
9285 FE3C38 20 CE 97 ?06: jsr XBC0C ; round FAC #1 and move to FAC #2
9286 FE3C3B A5 2D lda $2D
9287 FE3C3D A4 2E ldy $2E
9288 FE3C3F A6 A2 ldx vbnk
9289 FE3C41 20 DF 95 jsr XBA28 ; x*x
9290 FE3C44 ACC16
9291 FE3C44 C2 20 rep #PMFLAG
9292 .LONGA on
9293 .MNLIST
9294 FE3C46 C6 21 dec $21
9295 FE3C48 ACC08
9296 FE3C48 E2 20 sep #PMFLAG
9297 .LONGA off
9298 .MNLIST
9299 FE3C4A D0 EC bne ?06
9300 FE3C4C 24 23 ?14: bit $23
9301 FE3C4E 10 1B bpl ?22 ; return value
9302 FE3C50 A9 A2 lda #<XB9BC ; compute 1/x
9303 FE3C52 A0 9C ldy #>XB9BC
9304 FE3C54 A2 FE ldx #^RF2F
9305 FE3C56 20 91 96 jsr XBB0F
9306 FE3C59 80 10 bra ?22
9307 FE3C5B ?20: ACC08 ; return 1.0
9308 FE3C5B E2 20 sep #PMFLAG
9309 .LONGA off
9310 .MNLIST
9311 FE3C5D A9 81 lda #$81
Tue Jul 17 11:00:23 2018 Page 119
9312 FE3C5F 85 61 sta $61
9313 FE3C61 64 62 stz $62
9314 FE3C63 64 63 stz $63
9315 FE3C65 64 64 stz $64
9316 FE3C67 64 65 stz $65
9317 FE3C69 64 66 stz $66
9318 FE3C6B A6 2D ?22: ldx $2D
9319 FE3C6D A4 2E ldy $2E
9320 FE3C6F 4C 92 97 jmp XBBD4
9321
9322 ; pcmdlin(var p)
9323 FE3C72 RF30:
9324 FE3C72 ACC16CLC
9325 FE3C72 C2 21 rep #(PMFLAG.OR.PCFLAG)
9326 .LONGA on
9327 .MNLIST
9328 FE3C74 B2 2D lda ($2D) ; pointer to p
9329 FE3C76 3A dec a
9330 FE3C77 3A dec a
9331 FE3C78 85 27 sta $27
9332 FE3C7A A5 E4 lda cmdlin ; load adr
9333 FE3C7C 69 80 00 adc #128
9334 FE3C7F 92 27 sta ($27) ; assign to p
9335 FE3C81 ACC08
9336 FE3C81 E2 20 sep #PMFLAG
9337 .LONGA off
9338 .MNLIST
9339 FE3C83 4C 95 1E jmp SK02
9340 FE3C86
9341 ;---------------------------------------------------------------------------
9342 ; address table's
9343 ;---------------------------------------------------------------------------
9344
9345 ; function's table for p-code tokens $00..$7F
9346 FE3C86 PCODET1:
9347 FE3C86 7C1D D51D F11D .DW PC00, PC01, PC02, PC03, PC04, PC05, PC06, PC07
231E 461E 8B1E
A01E AF1E
9348 FE3C96 EF1E 5B1E 0A1F .DW PC08, PC09, PC0A, PC0B, PC0C, PC0D, PC0E, PC0F
771E 811E 7D1F
D31F DA1F
9349 FE3CA6 F51F 1020 3820 .DW PC10, PC11, PC12, PC13, PC14, PC15, PC16, PC17
5520 AB1F 8E20
9720 1A2F
9350 FE3CB6 052F AB20 C920 .DW PC18, PC19, PC1A, PC1B, PC1C, PC1D, PC1E, PC1F
E720 FF20 9021
1022 7922
9351 FE3CC6 FF23 4A24 6E24 .DW PC20, PC21, PC22, PC23, PC24, PC25, PC26, PC27
7924 8424 AA24
CA24 D324
9352 FE3CD6 DC24 F524 3C25 .DW PC28, PC29, PC2A, PC2B, PC2C, PC2D, PC2E, PC2F
5125 6925 8325
A725 BC25
9353 FE3CE6 EF25 1826 3126 .DW PC30, PC31, PC32, PC33, PC34, PC35, PC36, PC37
4826 6026 8726
A126 7B2D
9354 FE3CF6 6227 8527 3525 .DW PC38, PC39, PC3A, PC3B, PC3C, PC3D, PC3E, PC3F
Tue Jul 17 11:00:23 2018 Page 120
8F1D B826 D926
5930 5C30
9355 FE3D06 8528 A128 B828 .DW PC40, PC41, PC42, PC43, PC44, PC45, PC46, PC47
FE28 0F29 3A29
E129 E629
9356 FE3D16 EA29 442A BA2A .DW PC48, PC49, PC4A, PC4B, PC4C, PC4D, PC4E, PC4F
BD2A E42A 2728
102B B72A
9357 FE3D26 9C2B 9C2B A727 .DW PC50, PC51, PC52, PC53, PC54, PC55, PC56, PC57
A727 F627 F627
D127 D127
9358 FE3D36 AC27 AC27 AC2B .DW PC58, PC59, PC5A, PC5B, PC5C, PC5D, PC5E, PC5F
AC2B 5C2C 5C2C
562D 562D
9359 FE3D46 332C 332C B82D .DW PC60, PC61, PC62, PC63, PC64, PC65, PC66, PC67
B82D C62D C62D
EB2D EB2D
9360 FE3D56 072E 072E 812D .DW PC68, PC69, PC6A, PC6B, PC6C, PC6D, PC6E, PC6F
812D 602E 602E
342E 342E
9361 FE3D66 912E 912E 322F .DW PC70, PC71, PC72, PC73, PC74, PC75, PC76, PC77
322F 712F 712F
5A2E 5A2E
9362 FE3D76 5A2E 5A2E A22F .DW PC78, PC79, PC7A, PC7B, PC7C, PC7D, PC7E, PC7F
A22F 2C30 2C30
3A30 3A30
9363
9364 ; function's table for p-code tokens $80..$FF
9365 FE3D86 PCODET2:
9366 FE3D86 B627 D627 0128 .DW PC80, PC90, PCA0, PCB0, PCC0, PCD0, PCE0, PCF0
3928 4B28 6328
FB27 2128
9367
9368 ; function's in 'compile' mode
9369 FE3D96 CFUNCT:
9370 FE3D96 7037 B737 0238 .DW CF00, CF01, CF02, CF03, CF04, CF05, CF06, CF07, CF08
D037 0238 0238
0238 0238 7A37
9371 FE3DA8
9372 FE3DA8 RFUNCT:
9373 FE3DA8 2E38 3F38 4C38 .DW RF00, RF01, RF02, RF03, RF04, RF05, RF06, RF07
5838 6438 6A38
B737 9437
9374 FE3DB8 6F38 8D38 9338 .DW RF08, RF09, RF0A, RF0B, RF0C, RF0D, RF0E, RF0F
9938 9F38 A538
AB38 B138
9375 FE3DC8 DA38 2D39 4C39 .DW RF10, RF11, RF12, RF13, RF14, RF15, RF16, RF17
5F39 A339 BB39
DB39 EC39
9376 FE3DD8 FD39 093A 173A .DW RF18, RF19, RF1A, RF1B, RF1C, RF1D, RF1E, RF1F
823A 913A A03A
AF3A BB3A
9377 FE3DE8 113A 9E37 7B37 .DW RF20, RF21, RF22, RF23, RF24, RF25, RF26, RF27
C83A E13A FA3A
0B3B 1C3B
9378 FE3DF8 283B 383B 4E3B .DW RF28, RF29, RF2A, RF2B, RF2C, RF2D, RF2E, RF2F
703B B23B D43B
Tue Jul 17 11:00:23 2018 Page 121
EC3B 0A3C
9379 FE3E08 723C .DW RF30
9380
9381 ; tmp. file name: delete
9382 FE3E0A DTMPNAM:
9383 FE3E0A 53 30 3A 50 43 .DB 'S0:PCODEV01.XT?', $00
4F 44 45 56 30
31 2E 58 54 3F
00
9384
9385 ; temp. file name (copy in ram)
9386 FE3E1A TTMPNAM:
9387 FE3E1A 30 3A 50 43 4F .DB '0:PCODEV01.XTN', $00
44 45 56 30 31
2E 58 54 4E 00
9388 FE3E29 0A00 6400 E803 .DW 10, 100, 1000, 10000, 40000
1027 409C
9389 FE3E33 74 72 75 65 20 .DB 'true ', $00
00
9390 FE3E39 66 61 6C 73 65 .DB 'false', $00
00
9391 FE3E3F 20 00 42 00 20 .DB $20, $00, $42, $00, $20, $00, $A0, $00, $20, $00, $A4, $00
00 A0 00 20 00
A4 00
9392 000031 TTMPSIZ .EQU ($ - TTMPNAM)
9393
9394 FE3E4B STRFMT1:
9395 FE3E4B 64 69 73 6B 20 .DB 'disk error(#%bu): %s - file: "%s"', $00
65 72 72 6F 72
28 23 25 62 75
29 3A 20 25 73
20 2D 20 66 69
6C 65 3A 20 22
25 73 22 00
9396 FE3E6D STRFMT1A:
9397 FE3E6D 64 69 73 6B 20 .DB 'disk error(#%bu): %s', $00
65 72 72 6F 72
28 23 25 62 75
29 3A 20 25 73
00
9398 FE3E82 STRFMT2:
9399 FE3E82 72 75 6E 74 69 .DB 'runtime error(#%bu): %s', $00
6D 65 20 65 72
72 6F 72 28 23
25 62 75 29 3A
20 25 73 00
9400 FE3E9A STRFMT3:
9401 FE3E9A 2C 20 6C 69 6E .DB ', line %hu', $00
65 20 25 68 75
00
9402 FE3EA5 STRFMT4:
9403 FE3EA5 62 61 6E 6B 3A .DB 'bank: $%02bX, pcptr: $%04hX (current: $%04hX), opcode: $%02bX', $0D
20 24 25 30 32
62 58 2C 20 70
63 70 74 72 3A
20 24 25 30 34
68 58 20 28 63
Tue Jul 17 11:00:23 2018 Page 122
75 72 72 65 6E
74 3A 20 24 25
30 34 68 58 29
2C 20 6F 70 63
6F 64 65 3A 20
24 25 30 32 62
58 0D
9404 FE3EE3 73 74 61 63 6B .DB 'stackptr:$%04hX, heapptr:$%04hX, fileptr: $%04hX', $00
70 74 72 3A 24
25 30 34 68 58
2C 20 68 65 61
70 70 74 72 3A
24 25 30 34 68
58 2C 20 66 69
6C 65 70 74 72
3A 20 24 25 30
34 68 58 00
9405 FE3F14
9406 ; run-time error string's
9407 FE3F14 TERRS:
9408 FE3F14 73 74 61 63 6B .DB 'stack overflow', 0 ; 01
20 6F 76 65 72
66 6C 6F 77 00
9409 FE3F23 69 6E 74 65 67 .DB 'integer read error', 0 ; 02
65 72 20 72 65
61 64 20 65 72
72 6F 72 00
9410 FE3F36 69 6E 74 65 67 .DB 'integer overflow', 0 ; 03
65 72 20 6F 76
65 72 66 6C 6F
77 00
9411 FE3F47 61 72 72 61 79 .DB 'array index error', 0 ; 04
20 69 6E 64 65
78 20 65 72 72
6F 72 00
9412 FE3F59 76 61 72 69 61 .DB 'variable out of range', 0 ; 05
62 6C 65 20 6F
75 74 20 6F 66
20 72 61 6E 67
65 00
9413 FE3F6F 63 61 73 65 20 .DB 'case error', 0 ; 06
65 72 72 6F 72
00
9414 FE3F7A 62 61 64 20 70 .DB 'bad p-code', 0 ; 07
2D 63 6F 64 65
00
9415 FE3F85 73 65 74 20 76 .DB 'set value error', 0 ; 08
61 6C 75 65 20
65 72 72 6F 72
00
9416 FE3F95 66 6C 6F 61 74 .DB 'floating point overflow', 0 ; 09
69 6E 67 20 70
6F 69 6E 74 20
6F 76 65 72 66
6C 6F 77 00
9417 FE3FAD 66 6C 6F 61 74 .DB 'floating point read error', 0 ; 0A
69 6E 67 20 70
Tue Jul 17 11:00:23 2018 Page 123
6F 69 6E 74 20
72 65 61 64 20
65 72 72 6F 72
00
9418 FE3FC7 75 6E 64 65 66 .DB 'undefined goto', 0 ; 0B
69 6E 65 64 20
67 6F 74 6F 00
9419 FE3FD6 63 6F 6D 70 6C .DB 'complex log or square root', 0 ; 0C
65 78 20 6C 6F
67 20 6F 72 20
73 71 75 61 72
65 20 72 6F 6F
74 00
9420 FE3FF1 66 69 6C 65 20 .DB 'file not open for reading', 0 ; 0D
6E 6F 74 20 6F
70 65 6E 20 66
6F 72 20 72 65
61 64 69 6E 67
00
9421 FE400B 66 69 6C 65 20 .DB 'file not open for writing', 0 ; 0E
6E 6F 74 20 6F
70 65 6E 20 66
6F 72 20 77 72
69 74 69 6E 67
00
9422 FE4025 65 6E 64 20 6F .DB 'end of file', 0 ; 0F
66 20 66 69 6C
65 00
9423 FE4031 6E 6F 20 66 72 .DB 'no free i/o channels', 0 ; 10
65 65 20 69 2F
6F 20 63 68 61
6E 6E 65 6C 73
00
9424 FE4046 64 65 76 69 63 .DB 'device read error', 0 ; 11
65 20 72 65 61
64 20 65 72 72
6F 72 00
9425 FE4058 64 69 76 69 73 .DB 'division by zero', 0 ; 12
69 6F 6E 20 62
79 20 7A 65 72
6F 00
9426 FE4069 62 72 65 61 6B .DB 'break', 0 ; 13
00
9427 FE406F 6D 69 73 73 69 .DB 'missing drive number', 0 ; 14
6E 67 20 64 72
69 76 65 20 6E
75 6D 62 65 72
00
9428 FE4084 6C 6F 67 69 63 .DB 'logical file not open', 0 ; 15
61 6C 20 66 69
6C 65 20 6E 6F
74 20 6F 70 65
6E 00
9429 FE409A 6C 6F 67 69 63 .DB 'logical file already open', 0 ; 16
61 6C 20 66 69
6C 65 20 61 6C
72 65 61 64 79
Tue Jul 17 11:00:23 2018 Page 124
20 6F 70 65 6E
00
9430 FE40B4 66 69 6C 65 20 .DB 'file not found', 0 ; 17
6E 6F 74 20 66
6F 75 6E 64 00
9431 FE40C3 64 65 76 69 63 .DB 'device not present', 0 ; 18
65 20 6E 6F 74
20 70 72 65 73
65 6E 74 00
9432 FE40D6 6D 69 73 73 69 .DB 'missing file name', 0 ; 19
6E 67 20 66 69
6C 65 20 6E 61
6D 65 00
9433 FE40E8 69 6C 6C 65 67 .DB 'illegal device number', 0 ; 1A
61 6C 20 64 65
76 69 63 65 20
6E 75 6D 62 65
72 00
9434 FE40FE 73 68 6F 75 6C .DB 'should not occur', 0
64 20 6E 6F 74
20 6F 63 63 75
72 00
9435 FE410F 00 .DB $00
Lines Assembled : 8587 Errors : 0