------+---------------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- Line | # File Line | Line Type | MX | Reloc | Size | Address Object Code | Source Code ------+---------------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- 1 | 1 applecorn.s 1 | Comment | 11 | | 0 | 00/8000 | * APPLECORN.S 2 | 1 applecorn.s 2 | Comment | 11 | | 0 | 00/8000 | * (c) Bobbi 2021 GPLv3 3 | 1 applecorn.s 3 | Comment | 11 | | 0 | 00/8000 | * 4 | 1 applecorn.s 4 | Comment | 11 | | 0 | 00/8000 | * Load an Acorn BBC Micro ROM in aux memory and 5 | 1 applecorn.s 5 | Comment | 11 | | 0 | 00/8000 | * Provide an environment where it can run 6 | 1 applecorn.s 6 | Comment | 11 | | 0 | 00/8000 | * 7 | 1 applecorn.s 7 | Comment | 11 | | 0 | 00/8000 | * Assembled with the Merlin 8 v2.58 assembler on Apple II. 8 | 1 applecorn.s 8 | Empty | 11 | | 0 | 00/8000 | 9 | 1 applecorn.s 9 | Comment | 11 | | 0 | 00/8000 | * 14-Oct-2021 XF2MAIN, ENTAUX no longer save/restore STRTL/STRTH. 10 | 1 applecorn.s 10 | Empty | 11 | | 0 | 00/8000 | 11 | 1 applecorn.s 11 | Empty | 11 | | 0 | 00/8000 | 12 | 1 applecorn.s 12 | Directive | 11 | | 0 | 00/8000 | XC ; 65c02 13 | 1 applecorn.s 13 | Directive | 11 | | 0 | 00/8000 | ORG $4000 ; Load addr of loader in main memory 14 | 1 applecorn.s 14 | Comment | 11 | | 0 | 00/4000 | ; Clear of first HGR frame buffer 15 | 1 applecorn.s 15 | Empty | 11 | | 0 | 00/4000 | 16 | 1 applecorn.s 16 | Comment | 11 | | 0 | 00/4000 | * Monitor routines 17 | 1 applecorn.s 17 | Equivalence | 11 | | 0 | 00/4000 | BELL EQU $FBDD 18 | 1 applecorn.s 18 | Equivalence | 11 | | 0 | 00/4000 | PRBYTE EQU $FDDA 19 | 1 applecorn.s 19 | Equivalence | 11 | | 0 | 00/4000 | COUT1 EQU $FDED 20 | 1 applecorn.s 20 | Equivalence | 11 | | 0 | 00/4000 | CROUT EQU $FD8E 21 | 1 applecorn.s 21 | Equivalence | 11 | | 0 | 00/4000 | HOME EQU $FC58 22 | 1 applecorn.s 22 | Equivalence | 11 | | 0 | 00/4000 | AUXMOVE EQU $C311 23 | 1 applecorn.s 23 | Equivalence | 11 | | 0 | 00/4000 | XFER EQU $C314 24 | 1 applecorn.s 24 | Empty | 11 | | 0 | 00/4000 | 25 | 1 applecorn.s 25 | Comment | 11 | | 0 | 00/4000 | * Monitor ZP locations 26 | 1 applecorn.s 26 | Equivalence | 11 | | 0 | 00/4000 | A1L EQU $3C 27 | 1 applecorn.s 27 | Equivalence | 11 | | 0 | 00/4000 | A1H EQU $3D 28 | 1 applecorn.s 28 | Equivalence | 11 | | 0 | 00/4000 | A2L EQU $3E 29 | 1 applecorn.s 29 | Equivalence | 11 | | 0 | 00/4000 | A2H EQU $3F 30 | 1 applecorn.s 30 | Equivalence | 11 | | 0 | 00/4000 | A4L EQU $42 31 | 1 applecorn.s 31 | Equivalence | 11 | | 0 | 00/4000 | A4H EQU $43 32 | 1 applecorn.s 32 | Empty | 11 | | 0 | 00/4000 | 33 | 1 applecorn.s 33 | Comment | 11 | | 0 | 00/4000 | * ProDOS ZP locations 34 | 1 applecorn.s 34 | Comment | 11 | | 0 | 00/4000 | * $38-$4F 35 | 1 applecorn.s 35 | Empty | 11 | | 0 | 00/4000 | 36 | 1 applecorn.s 36 | Comment | 11 | | 0 | 00/4000 | * Used by MOS support code 37 | 1 applecorn.s 37 | Equivalence | 11 | | 0 | 00/4000 | ZP30 EQU $30 38 | 1 applecorn.s 38 | Equivalence | 11 | | 0 | 00/4000 | ZP32 EQU $32 39 | 1 applecorn.s 39 | Equivalence | 11 | | 0 | 00/4000 | ZP34 EQU $34 40 | 1 applecorn.s 40 | Equivalence | 11 | | 0 | 00/4000 | ZP36 EQU $36 41 | 1 applecorn.s 41 | Empty | 11 | | 0 | 00/4000 | 42 | 1 applecorn.s 42 | Comment | 11 | | 0 | 00/4000 | * Used by XFER 43 | 1 applecorn.s 43 | Equivalence | 11 | | 0 | 00/4000 | STRTL EQU $3ED 44 | 1 applecorn.s 44 | Equivalence | 11 | | 0 | 00/4000 | STRTH EQU $3EE 45 | 1 applecorn.s 45 | Empty | 11 | | 0 | 00/4000 | 46 | 1 applecorn.s 46 | Comment | 11 | | 0 | 00/4000 | * Reset vector (2 bytes + 1 byte checksum) 47 | 1 applecorn.s 47 | Equivalence | 11 | | 0 | 00/4000 | RSTV EQU $3F2 48 | 1 applecorn.s 48 | Empty | 11 | | 0 | 00/4000 | 49 | 1 applecorn.s 49 | Comment | 11 | | 0 | 00/4000 | * IRQ vector 50 | 1 applecorn.s 50 | Equivalence | 11 | | 0 | 00/4000 | A2IRQV EQU $3FE 51 | 1 applecorn.s 51 | Empty | 11 | | 0 | 00/4000 | 52 | 1 applecorn.s 52 | Comment | 11 | | 0 | 00/4000 | * MLI entry point 53 | 1 applecorn.s 53 | Equivalence | 11 | | 0 | 00/4000 | MLI EQU $BF00 54 | 1 applecorn.s 54 | Empty | 11 | | 0 | 00/4000 | 55 | 1 applecorn.s 55 | Comment | 11 | | 0 | 00/4000 | * IO Buffer for reading file (1024 bytes) 56 | 1 applecorn.s 56 | Equivalence | 11 | | 0 | 00/4000 | IOBUF0 EQU $0C00 ; For loading/saving, OSFILE, *. 57 | 1 applecorn.s 57 | Equivalence | 11 | | 0 | 00/4000 | IOBUF1 EQU $1000 ; Four open files for langs 58 | 1 applecorn.s 58 | Equivalence | 11 | | 0 | 00/4000 | IOBUF2 EQU $1400 59 | 1 applecorn.s 59 | Equivalence | 11 | | 0 | 00/4000 | IOBUF3 EQU $1800 60 | 1 applecorn.s 60 | Equivalence | 11 | | 0 | 00/4000 | IOBUF4 EQU $1C00 61 | 1 applecorn.s 61 | Empty | 11 | | 0 | 00/4000 | 62 | 1 applecorn.s 62 | Comment | 11 | | 0 | 00/4000 | * 512 byte buffer sufficient for one disk block 63 | 1 applecorn.s 63 | Equivalence | 11 | | 0 | 00/4000 | BLKBUF EQU $9000 ; Can't use $400 as ProDOS uses 64 | 1 applecorn.s 64 | Equivalence | 11 | | 0 | 00/4000 | BLKBUFEND EQU $9200 ; 'hidden' bytes within screen 65 | 1 applecorn.s 65 | Empty | 11 | | 0 | 00/4000 | 66 | 1 applecorn.s 66 | Comment | 11 | | 0 | 00/4000 | * 512 byte buffer for file copy (*COPY) 67 | 1 applecorn.s 67 | Equivalence | 11 | | 0 | 00/4000 | COPYBUF EQU $9200 ; File copy needs separate buffer 68 | 1 applecorn.s 68 | Comment | 11 | | 0 | 00/4000 | *COPYBUFEND EQU $9400 69 | 1 applecorn.s 69 | Empty | 11 | | 0 | 00/4000 | 70 | 1 applecorn.s 70 | Comment | 11 | | 0 | 00/4000 | * Location of FDraw library in main memory 71 | 1 applecorn.s 71 | Equivalence | 11 | | 0 | 00/4000 | FDRAWADDR EQU $9400 72 | 1 applecorn.s 72 | Empty | 11 | | 0 | 00/4000 | 73 | 1 applecorn.s 73 | Comment | 11 | | 0 | 00/4000 | * Location of FDraw library in main memory 74 | 1 applecorn.s 74 | Equivalence | 11 | | 0 | 00/4000 | FONTADDR EQU $A900 75 | 1 applecorn.s 75 | Empty | 11 | | 0 | 00/4000 | 76 | 1 applecorn.s 76 | Comment | 11 | | 0 | 00/4000 | * Address in aux memory where ROM will be loaded 77 | 1 applecorn.s 77 | Equivalence | 11 | | 0 | 00/4000 | AUXADDR EQU $8000 78 | 1 applecorn.s 78 | Empty | 11 | | 0 | 00/4000 | 79 | 1 applecorn.s 79 | Comment | 11 | | 0 | 00/4000 | * Address in aux memory where the MOS shim is located 80 | 1 applecorn.s 80 | Equivalence | 11 | | 0 | 00/4000 | AUXMOS1 EQU $2000 ; Temp staging area in Aux 81 | 1 applecorn.s 81 | Equivalence | 11 | | 0 | 00/4000 | EAUXMOS1 EQU $5000 ; End of staging area 82 | 1 applecorn.s 82 | Equivalence | 11 | | 0 | 00/4000 | AUXMOS EQU $D000 ; Final location in aux LC 83 | 1 applecorn.s 83 | Empty | 11 | | 0 | 00/4000 | 84 | 1 applecorn.s 84 | Comment | 11 | | 0 | 00/4000 | * Called by code running in main mem to invoke a 85 | 1 applecorn.s 85 | Comment | 11 | | 0 | 00/4000 | * routine in aux memory 86 | 1 applecorn.s 86 | Directive | 11 | | 0 | 00/4000 | XF2AUX MAC 87 | 1 applecorn.s 87 | Directive | 11 | | 0 | 00/4000 | LDX $C08B ; R/W LC RAM, bank 1 88 | 1 applecorn.s 88 | Directive | 11 | | 0 | 00/4000 | LDX $C08B 89 | 1 applecorn.s 89 | Directive | 11 | | 0 | 00/4000 | LDX #<]1 90 | 1 applecorn.s 90 | Directive | 11 | | 0 | 00/4000 | STX {$3ED} 91 | 1 applecorn.s 91 | Directive | 11 | | 0 | 00/4000 | LDX #>]1 92 | 1 applecorn.s 92 | Directive | 11 | | 0 | 00/4000 | STX {$3EE} 93 | 1 applecorn.s 93 | Directive | 11 | | 0 | 00/4000 | SEI ; Disable IRQ before XFER 94 | 1 applecorn.s 94 | Directive | 11 | | 0 | 00/4000 | SEC ; Use aux memory 95 | 1 applecorn.s 95 | Directive | 11 | | 0 | 00/4000 | BIT $FF58 ; Set V: use alt ZP and LC 96 | 1 applecorn.s 96 | Directive | 11 | | 0 | 00/4000 | JMP {$C314} 97 | 1 applecorn.s 97 | Directive | 11 | | 0 | 00/4000 | EOM 98 | 1 applecorn.s 98 | Empty | 11 | | 0 | 00/4000 | 99 | 1 applecorn.s 99 | Comment | 11 | | 0 | 00/4000 | * Called by code running in aux mem to invoke a 100 | 1 applecorn.s 100 | Comment | 11 | | 0 | 00/4000 | * routine in main memory 101 | 1 applecorn.s 101 | Directive | 11 | | 0 | 00/4000 | XF2MAIN MAC 102 | 1 applecorn.s 102 | Directive | 11 | | 0 | 00/4000 | 103 | 1 applecorn.s 103 | Directive | 11 | | 0 | 00/4000 | 104 | 1 applecorn.s 104 | Directive | 11 | | 0 | 00/4000 | 105 | 1 applecorn.s 105 | Directive | 11 | | 0 | 00/4000 | 106 | 1 applecorn.s 106 | Directive | 11 | | 0 | 00/4000 | LDX #<]1 107 | 1 applecorn.s 107 | Directive | 11 | | 0 | 00/4000 | STX {$3ED} 108 | 1 applecorn.s 108 | Directive | 11 | | 0 | 00/4000 | LDX #>]1 109 | 1 applecorn.s 109 | Directive | 11 | | 0 | 00/4000 | STX {$3EE} 110 | 1 applecorn.s 110 | Directive | 11 | | 0 | 00/4000 | SEI ; Disable IRQ before XFER 111 | 1 applecorn.s 111 | Directive | 11 | | 0 | 00/4000 | TSX 112 | 1 applecorn.s 112 | Directive | 11 | | 0 | 00/4000 | STX $0101 ; Save alt SP 113 | 1 applecorn.s 113 | Directive | 11 | | 0 | 00/4000 | LDX $0100 ; Load main SP into X 114 | 1 applecorn.s 114 | Directive | 11 | | 0 | 00/4000 | CLC ; Use main mem 115 | 1 applecorn.s 115 | Directive | 11 | | 0 | 00/4000 | CLV ; Use main ZP and LC 116 | 1 applecorn.s 116 | Directive | 11 | | 0 | 00/4000 | JMP {$C314} 117 | 1 applecorn.s 117 | Directive | 11 | | 0 | 00/4000 | EOM 118 | 1 applecorn.s 118 | Empty | 11 | | 0 | 00/4000 | 119 | 1 applecorn.s 119 | Comment | 11 | | 0 | 00/4000 | * Macro called on re-entry to aux memory 120 | 1 applecorn.s 120 | Comment | 11 | | 0 | 00/4000 | * Careful: This enables IRQ - not for use in ISR 121 | 1 applecorn.s 121 | Directive | 11 | | 0 | 00/4000 | ENTAUX MAC 122 | 1 applecorn.s 122 | Directive | 11 | | 0 | 00/4000 | LDX $0101 ; Recover alt SP 123 | 1 applecorn.s 123 | Directive | 11 | | 0 | 00/4000 | TXS 124 | 1 applecorn.s 124 | Directive | 11 | | 0 | 00/4000 | CLI ; Re-enable IRQ after XFER 125 | 1 applecorn.s 125 | Directive | 11 | | 0 | 00/4000 | 126 | 1 applecorn.s 126 | Directive | 11 | | 0 | 00/4000 | 127 | 1 applecorn.s 127 | Directive | 11 | | 0 | 00/4000 | 128 | 1 applecorn.s 128 | Directive | 11 | | 0 | 00/4000 | 129 | 1 applecorn.s 129 | Directive | 11 | | 0 | 00/4000 | EOM 130 | 1 applecorn.s 130 | Empty | 11 | | 0 | 00/4000 | 131 | 1 applecorn.s 131 | Comment | 11 | | 0 | 00/4000 | * Macro called on re-entry to main memory 132 | 1 applecorn.s 132 | Comment | 11 | | 0 | 00/4000 | * Careful: This enables IRQ - not for use in ISR 133 | 1 applecorn.s 133 | Directive | 11 | | 0 | 00/4000 | ENTMAIN MAC 134 | 1 applecorn.s 134 | Directive | 11 | | 0 | 00/4000 | TXS ; Main SP already in X 135 | 1 applecorn.s 135 | Directive | 11 | | 0 | 00/4000 | LDX $C081 ; Bank in ROM 136 | 1 applecorn.s 136 | Directive | 11 | | 0 | 00/4000 | LDX $C081 137 | 1 applecorn.s 137 | Directive | 11 | | 0 | 00/4000 | CLI ; Re-enable IRQ after XFER 138 | 1 applecorn.s 138 | Directive | 11 | | 0 | 00/4000 | EOM 139 | 1 applecorn.s 139 | Empty | 11 | | 0 | 00/4000 | 140 | 1 applecorn.s 140 | Comment | 11 | | 0 | 00/4000 | * Macro called on re-entry to aux memory 141 | 1 applecorn.s 141 | Comment | 11 | | 0 | 00/4000 | * For use in interrupt handlers (no CLI!) 142 | 1 applecorn.s 142 | Directive | 11 | | 0 | 00/4000 | IENTAUX MAC 143 | 1 applecorn.s 143 | Directive | 11 | | 0 | 00/4000 | LDX $0101 ; Recover alt SP 144 | 1 applecorn.s 144 | Directive | 11 | | 0 | 00/4000 | TXS 145 | 1 applecorn.s 145 | Directive | 11 | | 0 | 00/4000 | 146 | 1 applecorn.s 146 | Directive | 11 | | 0 | 00/4000 | 147 | 1 applecorn.s 147 | Directive | 11 | | 0 | 00/4000 | 148 | 1 applecorn.s 148 | Directive | 11 | | 0 | 00/4000 | 149 | 1 applecorn.s 149 | Directive | 11 | | 0 | 00/4000 | EOM 150 | 1 applecorn.s 150 | Empty | 11 | | 0 | 00/4000 | 151 | 1 applecorn.s 151 | Comment | 11 | | 0 | 00/4000 | * Macro called on re-entry to main memory 152 | 1 applecorn.s 152 | Comment | 11 | | 0 | 00/4000 | * For use in interrupt handlers (no CLI!) 153 | 1 applecorn.s 153 | Directive | 11 | | 0 | 00/4000 | IENTMAIN MAC 154 | 1 applecorn.s 154 | Directive | 11 | | 0 | 00/4000 | TXS ; Main SP already in X 155 | 1 applecorn.s 155 | Directive | 11 | | 0 | 00/4000 | LDX $C081 ; Bank in ROM 156 | 1 applecorn.s 156 | Directive | 11 | | 0 | 00/4000 | LDX $C081 157 | 1 applecorn.s 157 | Directive | 11 | | 0 | 00/4000 | EOM 158 | 1 applecorn.s 158 | Empty | 11 | | 0 | 00/4000 | 159 | 1 applecorn.s 159 | Comment | 11 | | 0 | 00/4000 | * Enable writing to main memory (for code running in aux) 160 | 1 applecorn.s 160 | Directive | 11 | | 0 | 00/4000 | WRTMAIN MAC 161 | 1 applecorn.s 161 | Directive | 11 | | 0 | 00/4000 | SEI ; Keeps IRQ handler easy 162 | 1 applecorn.s 162 | Directive | 11 | | 0 | 00/4000 | STA $C004 ; Write to main memory 163 | 1 applecorn.s 163 | Directive | 11 | | 0 | 00/4000 | EOM 164 | 1 applecorn.s 164 | Empty | 11 | | 0 | 00/4000 | 165 | 1 applecorn.s 165 | Comment | 11 | | 0 | 00/4000 | * Go back to writing to aux (for code running in aux) 166 | 1 applecorn.s 166 | Directive | 11 | | 0 | 00/4000 | WRTAUX MAC 167 | 1 applecorn.s 167 | Directive | 11 | | 0 | 00/4000 | STA $C005 ; Write to aux memory 168 | 1 applecorn.s 168 | Directive | 11 | | 0 | 00/4000 | CLI ; Normal service resumed 169 | 1 applecorn.s 169 | Directive | 11 | | 0 | 00/4000 | EOM 170 | 1 applecorn.s 170 | Empty | 11 | | 0 | 00/4000 | 171 | 1 applecorn.s 171 | Comment | 11 | | 0 | 00/4000 | * Manually enable AltZP (for code running in main) 172 | 1 applecorn.s 172 | Directive | 11 | | 0 | 00/4000 | ALTZP MAC 173 | 1 applecorn.s 173 | Directive | 11 | | 0 | 00/4000 | SEI ; Disable IRQ when AltZP on 174 | 1 applecorn.s 174 | Directive | 11 | | 0 | 00/4000 | LDA $C08B ; R/W LC bank 1 175 | 1 applecorn.s 175 | Directive | 11 | | 0 | 00/4000 | LDA $C08B 176 | 1 applecorn.s 176 | Directive | 11 | | 0 | 00/4000 | STA $C009 ; Alt ZP and LC 177 | 1 applecorn.s 177 | Directive | 11 | | 0 | 00/4000 | EOM 178 | 1 applecorn.s 178 | Empty | 11 | | 0 | 00/4000 | 179 | 1 applecorn.s 179 | Comment | 11 | | 0 | 00/4000 | * Manually disable AltZP (for code running in main) 180 | 1 applecorn.s 180 | Directive | 11 | | 0 | 00/4000 | MAINZP MAC 181 | 1 applecorn.s 181 | Directive | 11 | | 0 | 00/4000 | STA $C008 ; Main ZP and LC 182 | 1 applecorn.s 182 | Directive | 11 | | 0 | 00/4000 | LDA $C081 ; Bank ROM back in 183 | 1 applecorn.s 183 | Directive | 11 | | 0 | 00/4000 | LDA $C081 184 | 1 applecorn.s 184 | Directive | 11 | | 0 | 00/4000 | CLI ; Turn IRQ back on 185 | 1 applecorn.s 185 | Directive | 11 | | 0 | 00/4000 | EOM 186 | 1 applecorn.s 186 | Empty | 11 | | 0 | 00/4000 | 187 | 1 applecorn.s 187 | Comment | 11 | | 0 | 00/4000 | * Code is all included from PUT files below ... 188 | 1 applecorn.s 188 | Comment | 11 | | 0 | 00/4000 | * ... order matters! 189 | 1 applecorn.s 189 | Directive | 11 | | 0 | 00/4000 | PUT MAINMEM.LDR 190 | 2 MAINMEM.LDR.s 1 | Comment | 11 | | 0 | 00/4000 | * MAINMEM.LDR.S 191 | 2 MAINMEM.LDR.s 2 | Comment | 11 | | 0 | 00/4000 | * (c) Bobbi 2021 GPLv3 192 | 2 MAINMEM.LDR.s 3 | Comment | 11 | | 0 | 00/4000 | * 193 | 2 MAINMEM.LDR.s 4 | Comment | 11 | | 0 | 00/4000 | * Applecorn loader code. Runs in main memory. 194 | 2 MAINMEM.LDR.s 5 | Comment | 11 | | 0 | 00/4000 | * 01-Oct-2021 Copies MOS code to whole $D000-$FFFF. 195 | 2 MAINMEM.LDR.s 6 | Comment | 11 | | 0 | 00/4000 | * 13-Nov-2021 LOADCODE uses absolute path to Applecorn directory. 196 | 2 MAINMEM.LDR.s 7 | Empty | 11 | | 0 | 00/4000 | 197 | 2 MAINMEM.LDR.s 8 | Empty | 11 | | 0 | 00/4000 | 198 | 2 MAINMEM.LDR.s 9 | Comment | 11 | | 0 | 00/4000 | * Loads Acorn ROM file (16KB) from disk and writes it 199 | 2 MAINMEM.LDR.s 10 | Comment | 11 | | 0 | 00/4000 | * to aux memory starting at $08000. Copies Applecorn MOS 200 | 2 MAINMEM.LDR.s 11 | Comment | 11 | | 0 | 00/4000 | * to aux memory starting at AUXMOS1 and jumps to it. 201 | 2 MAINMEM.LDR.s 12 | Comment | 11 | | 0 | 00/4000 | * (Note that the MOS code will copy itself to $D000.) 202 | 2 MAINMEM.LDR.s 13 | Empty | 11 | | 0 | 00/4000 | 203 | 2 MAINMEM.LDR.s 14 | Code | 11 | | 3 | 00/4000 : 20 8E FD | START JSR {$FD8E} 204 | 2 MAINMEM.LDR.s 15 | Code | 11 | | 3 | 00/4003 : 20 E4 43 | JSR SETPRFX 205 | 2 MAINMEM.LDR.s 16 | Code | 11 | | 3 | 00/4006 : 20 2A 44 | JSR DISCONN 206 | 2 MAINMEM.LDR.s 17 | Empty | 11 | | 0 | 00/4009 | 207 | 2 MAINMEM.LDR.s 18 | Code | 11 | | 2 | 00/4009 : A9 20 | LDA #$20 ; PAGE2 shadow on ROM3 GS 208 | 2 MAINMEM.LDR.s 19 | Code | 11 | | 3 | 00/400B : 1C 35 C0 | TRB $C035 209 | 2 MAINMEM.LDR.s 20 | Empty | 11 | | 0 | 00/400E | 210 | 2 MAINMEM.LDR.s 21 | Code | 11 | | 3 | 00/400E : 20 9B 41 | JSR ROMMENU 211 | 2 MAINMEM.LDR.s 22 | Comment | 11 | | 0 | 00/4011 | * LDA #>AUXADDR ; Address in aux 212 | 2 MAINMEM.LDR.s 23 | Comment | 11 | | 0 | 00/4011 | * LDX #_FDFILE 219 | 2 MAINMEM.LDR.s 30 | Code | 11 | | 3 | 00/4018 : 8D 5E 56 | STA OPENPL+2 220 | 2 MAINMEM.LDR.s 31 | Code | 11 | | 2 | 00/401B : A9 94 | LDA #>{$9400} ; Address in main 221 | 2 MAINMEM.LDR.s 32 | Code | 11 | | 2 | 00/401D : A2 00 | LDX #<{$9400} 222 | 2 MAINMEM.LDR.s 33 | Code | 11 | | 1 | 00/401F : 18 | CLC ; Load into main 223 | 2 MAINMEM.LDR.s 34 | Code | 11 | | 3 | 00/4020 : 20 A3 40 | JSR LOADCODE 224 | 2 MAINMEM.LDR.s 35 | Empty | 11 | | 0 | 00/4023 | 225 | 2 MAINMEM.LDR.s 36 | Code | 11 | | 2 | 00/4023 : A9 9A | LDA #<_FNTFILE 226 | 2 MAINMEM.LDR.s 37 | Code | 11 | | 3 | 00/4025 : 8D 5D 56 | STA OPENPL+1 227 | 2 MAINMEM.LDR.s 38 | Code | 11 | | 2 | 00/4028 : A9 40 | LDA #>_FNTFILE 228 | 2 MAINMEM.LDR.s 39 | Code | 11 | | 3 | 00/402A : 8D 5E 56 | STA OPENPL+2 229 | 2 MAINMEM.LDR.s 40 | Code | 11 | | 2 | 00/402D : A9 A9 | LDA #>{$A900} ; Address in main 230 | 2 MAINMEM.LDR.s 41 | Code | 11 | | 2 | 00/402F : A2 00 | LDX #<{$A900} 231 | 2 MAINMEM.LDR.s 42 | Code | 11 | | 1 | 00/4031 : 18 | CLC ; Load into main 232 | 2 MAINMEM.LDR.s 43 | Code | 11 | | 3 | 00/4032 : 20 A3 40 | JSR LOADCODE 233 | 2 MAINMEM.LDR.s 44 | Empty | 11 | | 0 | 00/4035 | 234 | 2 MAINMEM.LDR.s 45 | Code | 11 | | 2 | 00/4035 : A9 08 | LDA #MOSSHIM 237 | 2 MAINMEM.LDR.s 48 | Code | 11 | | 2 | 00/403B : 85 3D | STA {$3D} 238 | 2 MAINMEM.LDR.s 49 | Empty | 11 | | 0 | 00/403D | 239 | 2 MAINMEM.LDR.s 50 | Code | 11 | | 2 | 00/403D : A9 08 | LDA #MOSSHIM+$3000 242 | 2 MAINMEM.LDR.s 53 | Code | 11 | | 2 | 00/4043 : 85 3F | STA {$3F} 243 | 2 MAINMEM.LDR.s 54 | Empty | 11 | | 0 | 00/4045 | 244 | 2 MAINMEM.LDR.s 55 | Code | 11 | | 2 | 00/4045 : A9 00 | LDA #<{$2000} ; To AUXMOS1 in aux memory 245 | 2 MAINMEM.LDR.s 56 | Code | 11 | | 2 | 00/4047 : 85 42 | STA {$42} 246 | 2 MAINMEM.LDR.s 57 | Code | 11 | | 2 | 00/4049 : A9 20 | LDA #>{$2000} 247 | 2 MAINMEM.LDR.s 58 | Code | 11 | | 2 | 00/404B : 85 43 | STA {$43} 248 | 2 MAINMEM.LDR.s 59 | Empty | 11 | | 0 | 00/404D | 249 | 2 MAINMEM.LDR.s 60 | Code | 11 | | 1 | 00/404D : 38 | SEC ; Copy MOS from Main->Aux 250 | 2 MAINMEM.LDR.s 61 | Code | 11 | | 3 | 00/404E : 20 11 C3 | JSR {$C311} 251 | 2 MAINMEM.LDR.s 62 | Empty | 11 | | 0 | 00/4051 | 252 | 2 MAINMEM.LDR.s 63 | Code | 11 | | 2 | 00/4051 : A9 81 | LDA #RESET 253 | 2 MAINMEM.LDR.s 64 | Code | 11 | | 3 | 00/4053 : 8D F2 03 | STA {$3F2} 254 | 2 MAINMEM.LDR.s 65 | Code | 11 | | 2 | 00/4056 : A9 44 | LDA #>RESET 255 | 2 MAINMEM.LDR.s 66 | Code | 11 | | 3 | 00/4058 : 8D F3 03 | STA {$3F2}+1 256 | 2 MAINMEM.LDR.s 67 | Code | 11 | | 2 | 00/405B : 49 A5 | EOR #$A5 ; Checksum 257 | 2 MAINMEM.LDR.s 68 | Code | 11 | | 3 | 00/405D : 8D F4 03 | STA {$3F2}+2 258 | 2 MAINMEM.LDR.s 69 | Empty | 11 | | 0 | 00/4060 | 259 | 2 MAINMEM.LDR.s 70 | Code | 11 | | 2 | 00/4060 : A9 CC | LDA #GSBRK 262 | 2 MAINMEM.LDR.s 73 | Code | 11 | | 3 | 00/4067 : 8D F1 03 | STA $3F0+1 263 | 2 MAINMEM.LDR.s 74 | Empty | 11 | | 0 | 00/406A | 264 | 2 MAINMEM.LDR.s 75 | Code | 11 | | 3 | 00/406A : 20 BC 4F | JSR GFXINIT ; Initialize FDraw graphics 265 | 2 MAINMEM.LDR.s 76 | Empty | 11 | | 0 | 00/406D | 266 | 2 MAINMEM.LDR.s 77 | Code | 11 | | 1 | 00/406D : BA | TSX ; Save SP at $0100 in aux 267 | 2 MAINMEM.LDR.s 78 | Code | 11 | | 3 | 00/406E : 8D 05 C0 | STA $C005 ; Write to aux 268 | 2 MAINMEM.LDR.s 79 | Code | 11 | | 3 | 00/4071 : 8E 00 01 | STX $0100 269 | 2 MAINMEM.LDR.s 80 | Code | 11 | | 3 | 00/4074 : 8D 04 C0 | STA $C004 ; Write to main 270 | 2 MAINMEM.LDR.s 81 | Macro | 11 | | 0 | 00/4077 | >>> XF2AUX,{$2000} 271 | 2 MAINMEM.LDR.s 81 | Code | 11 | | 3 | 00/4077 : AE 8B C0 | LDX $C08B ; R/W LC RAM, bank 1 272 | 2 MAINMEM.LDR.s 81 | Code | 11 | | 3 | 00/407A : AE 8B C0 | LDX $C08B 273 | 2 MAINMEM.LDR.s 81 | Code | 11 | | 2 | 00/407D : A2 00 | LDX #<{$2000} 274 | 2 MAINMEM.LDR.s 81 | Code | 11 | | 3 | 00/407F : 8E ED 03 | STX {$3ED} 275 | 2 MAINMEM.LDR.s 81 | Code | 11 | | 2 | 00/4082 : A2 20 | LDX #>{$2000} 276 | 2 MAINMEM.LDR.s 81 | Code | 11 | | 3 | 00/4084 : 8E EE 03 | STX {$3EE} 277 | 2 MAINMEM.LDR.s 81 | Code | 11 | | 1 | 00/4087 : 78 | SEI ; Disable IRQ before XFER 278 | 2 MAINMEM.LDR.s 81 | Code | 11 | | 1 | 00/4088 : 38 | SEC ; Use aux memory 279 | 2 MAINMEM.LDR.s 81 | Code | 11 | | 3 | 00/4089 : 2C 58 FF | BIT $FF58 ; Set V: use alt ZP and LC 280 | 2 MAINMEM.LDR.s 81 | Code | 11 | | 3 | 00/408C : 4C 14 C3 | JMP {$C314} 281 | 2 MAINMEM.LDR.s 82 | Empty | 11 | | 0 | 00/408F | 282 | 2 MAINMEM.LDR.s 83 | Data | 11 | | 11 | 00/408F : 0A C6 C4 D2 | _FDFILE STR "FDRAW.FAST" ; Filename for FDraw lib | | | | | | C1 D7 AE C6 | | | | | | | C1 D3 D4 | 283 | 2 MAINMEM.LDR.s 84 | Data | 11 | | 9 | 00/409A : 08 C6 CF CE | _FNTFILE STR "FONT.DAT" ; Filename for bitmap font | | | | | | D4 AE C4 C1 | | | | | | | D4 | 284 | 2 MAINMEM.LDR.s 85 | Empty | 11 | | 0 | 00/40A3 | 285 | 2 MAINMEM.LDR.s 86 | Comment | 11 | | 0 | 00/40A3 | * Load image from file into memory 286 | 2 MAINMEM.LDR.s 87 | Comment | 11 | | 0 | 00/40A3 | * On entry: OPENPL set up to point to leafname of file to load 287 | 2 MAINMEM.LDR.s 88 | Comment | 11 | | 0 | 00/40A3 | * Loads file from directory applecorn started from 288 | 2 MAINMEM.LDR.s 89 | Comment | 11 | | 0 | 00/40A3 | * Uses BLKBUF at loading buffer 289 | 2 MAINMEM.LDR.s 90 | Comment | 11 | | 0 | 00/40A3 | * Load address in A,X 290 | 2 MAINMEM.LDR.s 91 | Comment | 11 | | 0 | 00/40A3 | * Carry set->load to aux, carry clear->load to main 291 | 2 MAINMEM.LDR.s 92 | Code | 11 | | 1 | 00/40A3 : 08 | LOADCODE PHP ; Save carry flag 292 | 2 MAINMEM.LDR.s 93 | Code | 11 | | 3 | 00/40A4 : 8D 88 41 | STA _ADDRH ; MSB of load address 293 | 2 MAINMEM.LDR.s 94 | Code | 11 | | 3 | 00/40A7 : 8E 87 41 | STX _ADDRL ; LSB of load address 294 | 2 MAINMEM.LDR.s 95 | Code | 11 | | 3 | 00/40AA : 9C 89 41 | STZ ozunid_10 295 | 2 MAINMEM.LDR.s 96 | Empty | 11 | | 0 | 00/40AD | 296 | 2 MAINMEM.LDR.s 97 | Code | 11 | | 2 | 00/40AD : A2 00 | LDX #0 297 | 2 MAINMEM.LDR.s 98 | Code | 11 | | 3 | 00/40AF : BD 81 02 | ozunid_1 LDA {$0280}+1,X ; Copy Applecorn path to MOSFILE 298 | 2 MAINMEM.LDR.s 99 | Code | 11 | | 3 | 00/40B2 : 9D 42 03 | STA {$0341}+1,X 299 | 2 MAINMEM.LDR.s 100 | Code | 11 | | 1 | 00/40B5 : E8 | INX 300 | 2 MAINMEM.LDR.s 101 | Code | 11 | | 3 | 00/40B6 : EC 80 02 | CPX {$0280} 301 | 2 MAINMEM.LDR.s 102 | Code | 11 | | 2 | 00/40B9 : 90 F4 | BCC ozunid_1 302 | 2 MAINMEM.LDR.s 103 | Code | 11 | | 1 | 00/40BB : CA | _LP2 DEX 303 | 2 MAINMEM.LDR.s 104 | Code | 11 | | 3 | 00/40BC : BD 42 03 | LDA {$0341}+1,X 304 | 2 MAINMEM.LDR.s 105 | Code | 11 | | 2 | 00/40BF : C9 2F | CMP #'/' 305 | 2 MAINMEM.LDR.s 106 | Code | 11 | | 2 | 00/40C1 : D0 F8 | BNE _LP2 306 | 2 MAINMEM.LDR.s 107 | Code | 11 | | 3 | 00/40C3 : AD 5D 56 | LDA OPENPL+1 307 | 2 MAINMEM.LDR.s 108 | Code | 11 | | 2 | 00/40C6 : 85 3C | STA {$3C} 308 | 2 MAINMEM.LDR.s 109 | Code | 11 | | 3 | 00/40C8 : AD 5E 56 | LDA OPENPL+2 309 | 2 MAINMEM.LDR.s 110 | Code | 11 | | 2 | 00/40CB : 85 3D | STA {$3D} 310 | 2 MAINMEM.LDR.s 111 | Code | 11 | | 2 | 00/40CD : A0 01 | LDY #1 311 | 2 MAINMEM.LDR.s 112 | Code | 11 | | 2 | 00/40CF : B1 3C | LDA ({$3C}),Y 312 | 2 MAINMEM.LDR.s 113 | Code | 11 | | 2 | 00/40D1 : C9 2F | CMP #'/' 313 | 2 MAINMEM.LDR.s 114 | Code | 11 | | 2 | 00/40D3 : F0 1C | BEQ ozunid_2 ; Already absolute path 314 | 2 MAINMEM.LDR.s 115 | Code | 11 | | 2 | 00/40D5 : B1 3C | _LP3 LDA ({$3C}),Y 315 | 2 MAINMEM.LDR.s 116 | Code | 11 | | 3 | 00/40D7 : 9D 43 03 | STA {$0341}+2,X 316 | 2 MAINMEM.LDR.s 117 | Code | 11 | | 1 | 00/40DA : E8 | INX 317 | 2 MAINMEM.LDR.s 118 | Code | 11 | | 1 | 00/40DB : C8 | INY 318 | 2 MAINMEM.LDR.s 119 | Code | 11 | | 1 | 00/40DC : 98 | TYA 319 | 2 MAINMEM.LDR.s 120 | Code | 11 | | 2 | 00/40DD : D2 3C | CMP ({$3C}) 320 | 2 MAINMEM.LDR.s 121 | Code | 11 | | 2 | 00/40DF : 90 F4 | BCC _LP3 321 | 2 MAINMEM.LDR.s 122 | Code | 11 | | 2 | 00/40E1 : F0 F2 | BEQ _LP3 322 | 2 MAINMEM.LDR.s 123 | Code | 11 | | 1 | 00/40E3 : E8 | INX 323 | 2 MAINMEM.LDR.s 124 | Code | 11 | | 3 | 00/40E4 : 8E 41 03 | STX {$0341}+0 324 | 2 MAINMEM.LDR.s 125 | Code | 11 | | 2 | 00/40E7 : A9 41 | LDA #<{$0341} ; Point to absolute path 325 | 2 MAINMEM.LDR.s 126 | Code | 11 | | 3 | 00/40E9 : 8D 5D 56 | STA OPENPL+1 326 | 2 MAINMEM.LDR.s 127 | Code | 11 | | 2 | 00/40EC : A9 03 | LDA #>{$0341} 327 | 2 MAINMEM.LDR.s 128 | Code | 11 | | 3 | 00/40EE : 8D 5E 56 | STA OPENPL+2 328 | 2 MAINMEM.LDR.s 129 | Empty | 11 | | 0 | 00/40F1 | 329 | 2 MAINMEM.LDR.s 130 | Code | 11 | | 3 | 00/40F1 : 20 E1 57 | ozunid_2 JSR OPENFILE ; Open ROM file 330 | 2 MAINMEM.LDR.s 131 | Code | 11 | | 2 | 00/40F4 : 90 37 | BCC ozunid_4 331 | 2 MAINMEM.LDR.s 132 | Code | 11 | | 1 | 00/40F6 : 28 | PLP 332 | 2 MAINMEM.LDR.s 133 | Code | 11 | | 2 | 00/40F7 : 90 01 | BCC _L1A ; Load to main, report error 333 | 2 MAINMEM.LDR.s 134 | Code | 11 | | 1 | 00/40F9 : 60 | RTS ; Load to aux, return CS=Failed 334 | 2 MAINMEM.LDR.s 135 | Code | 11 | | 2 | 00/40FA : A2 00 | _L1A LDX #$00 335 | 2 MAINMEM.LDR.s 136 | Code | 11 | | 3 | 00/40FC : BD 8B 41 | _L1B LDA _CANTOPEN,X ; Part one of error msg 336 | 2 MAINMEM.LDR.s 137 | Code | 11 | | 2 | 00/40FF : F0 06 | BEQ ozunid_3 337 | 2 MAINMEM.LDR.s 138 | Code | 11 | | 3 | 00/4101 : 20 ED FD | JSR {$FDED} 338 | 2 MAINMEM.LDR.s 139 | Code | 11 | | 1 | 00/4104 : E8 | INX 339 | 2 MAINMEM.LDR.s 140 | Code | 11 | | 2 | 00/4105 : 80 F5 | BRA _L1B 340 | 2 MAINMEM.LDR.s 141 | Code | 11 | | 3 | 00/4107 : AD 5D 56 | ozunid_3 LDA OPENPL+1 ; Print filename 341 | 2 MAINMEM.LDR.s 142 | Code | 11 | | 2 | 00/410A : 85 3C | STA {$3C} 342 | 2 MAINMEM.LDR.s 143 | Code | 11 | | 3 | 00/410C : AD 5E 56 | LDA OPENPL+2 343 | 2 MAINMEM.LDR.s 144 | Code | 11 | | 2 | 00/410F : 85 3D | STA {$3D} 344 | 2 MAINMEM.LDR.s 145 | Code | 11 | | 2 | 00/4111 : A0 00 | LDY #$00 345 | 2 MAINMEM.LDR.s 146 | Code | 11 | | 2 | 00/4113 : B1 3C | LDA ({$3C}),Y 346 | 2 MAINMEM.LDR.s 147 | Code | 11 | | 3 | 00/4115 : 8D 8A 41 | STA _LEN 347 | 2 MAINMEM.LDR.s 148 | Code | 11 | | 3 | 00/4118 : CC 8A 41 | _L1C CPY _LEN 348 | 2 MAINMEM.LDR.s 149 | Code | 11 | | 2 | 00/411B : F0 08 | BEQ _ERR1 349 | 2 MAINMEM.LDR.s 150 | Code | 11 | | 1 | 00/411D : C8 | INY 350 | 2 MAINMEM.LDR.s 151 | Code | 11 | | 2 | 00/411E : B1 3C | LDA ({$3C}),Y 351 | 2 MAINMEM.LDR.s 152 | Code | 11 | | 3 | 00/4120 : 20 ED FD | JSR {$FDED} 352 | 2 MAINMEM.LDR.s 153 | Code | 11 | | 2 | 00/4123 : 80 F3 | BRA _L1C 353 | 2 MAINMEM.LDR.s 154 | Code | 11 | | 3 | 00/4125 : 20 8E FD | _ERR1 JSR {$FD8E} 354 | 2 MAINMEM.LDR.s 155 | Code | 11 | | 3 | 00/4128 : 20 DD FB | JSR {$FBDD} 355 | 2 MAINMEM.LDR.s 156 | Code | 11 | | 2 | 00/412B : 80 FE | _SPIN BRA _SPIN 356 | 2 MAINMEM.LDR.s 157 | Code | 11 | | 3 | 00/412D : AD 61 56 | ozunid_4 LDA OPENPL+5 ; File reference number 357 | 2 MAINMEM.LDR.s 158 | Code | 11 | | 3 | 00/4130 : 8D 7D 56 | STA READPL+1 358 | 2 MAINMEM.LDR.s 159 | Code | 11 | | 1 | 00/4133 : 28 | ozunid_5 PLP 359 | 2 MAINMEM.LDR.s 160 | Code | 11 | | 1 | 00/4134 : 08 | PHP 360 | 2 MAINMEM.LDR.s 161 | Code | 11 | | 2 | 00/4135 : B0 05 | BCS _L2A ; Loading to aux, skip dots 361 | 2 MAINMEM.LDR.s 162 | Code | 11 | | 2 | 00/4137 : A9 AE | LDA #'.'+$80 ; Print progress dots 362 | 2 MAINMEM.LDR.s 163 | Code | 11 | | 3 | 00/4139 : 20 ED FD | JSR {$FDED} 363 | 2 MAINMEM.LDR.s 164 | Code | 11 | | 3 | 00/413C : 20 EF 57 | _L2A JSR RDFILE ; Read file block by block 364 | 2 MAINMEM.LDR.s 165 | Code | 11 | | 2 | 00/413F : B0 37 | BCS ozunid_9 ; EOF (0 bytes left) or some error 365 | 2 MAINMEM.LDR.s 166 | Code | 11 | | 2 | 00/4141 : A9 00 | LDA #<{$9000} ; Source start addr -> A1L,A1H 366 | 2 MAINMEM.LDR.s 167 | Code | 11 | | 2 | 00/4143 : 85 3C | STA {$3C} 367 | 2 MAINMEM.LDR.s 168 | Code | 11 | | 2 | 00/4145 : A9 90 | LDA #>{$9000} 368 | 2 MAINMEM.LDR.s 169 | Code | 11 | | 2 | 00/4147 : 85 3D | STA {$3D} 369 | 2 MAINMEM.LDR.s 170 | Code | 11 | | 2 | 00/4149 : A9 00 | LDA #<{$9200} ; Source end addr -> A2L,A2H 370 | 2 MAINMEM.LDR.s 171 | Code | 11 | | 2 | 00/414B : 85 3E | STA {$3E} 371 | 2 MAINMEM.LDR.s 172 | Code | 11 | | 2 | 00/414D : A9 92 | LDA #>{$9200} 372 | 2 MAINMEM.LDR.s 173 | Code | 11 | | 2 | 00/414F : 85 3F | STA {$3F} 373 | 2 MAINMEM.LDR.s 174 | Code | 11 | | 3 | 00/4151 : AD 87 41 | LDA _ADDRL ; Dest in aux -> A4L, A4H 374 | 2 MAINMEM.LDR.s 175 | Code | 11 | | 2 | 00/4154 : 85 42 | STA {$42} 375 | 2 MAINMEM.LDR.s 176 | Code | 11 | | 3 | 00/4156 : AD 88 41 | LDA _ADDRH 376 | 2 MAINMEM.LDR.s 177 | Code | 11 | | 3 | 00/4159 : AE 89 41 | LDX ozunid_10 377 | 2 MAINMEM.LDR.s 178 | Code | 11 | | 2 | 00/415C : E0 00 | ozunid_6 CPX #$00 378 | 2 MAINMEM.LDR.s 179 | Code | 11 | | 2 | 00/415E : F0 05 | BEQ ozunid_7 379 | 2 MAINMEM.LDR.s 180 | Code | 11 | | 1 | 00/4160 : 1A | INC 380 | 2 MAINMEM.LDR.s 181 | Code | 11 | | 1 | 00/4161 : 1A | INC 381 | 2 MAINMEM.LDR.s 182 | Code | 11 | | 1 | 00/4162 : CA | DEX 382 | 2 MAINMEM.LDR.s 183 | Code | 11 | | 2 | 00/4163 : 80 F7 | BRA ozunid_6 383 | 2 MAINMEM.LDR.s 184 | Code | 11 | | 2 | 00/4165 : 85 43 | ozunid_7 STA {$43} 384 | 2 MAINMEM.LDR.s 185 | Code | 11 | | 1 | 00/4167 : 28 | PLP ; Recover carry flag 385 | 2 MAINMEM.LDR.s 186 | Code | 11 | | 1 | 00/4168 : 08 | PHP 386 | 2 MAINMEM.LDR.s 187 | Code | 11 | | 2 | 00/4169 : B0 05 | BCS _TOAUX 387 | 2 MAINMEM.LDR.s 188 | Code | 11 | | 3 | 00/416B : 20 D8 56 | JSR MEMCPY ; Destination in main mem 388 | 2 MAINMEM.LDR.s 189 | Code | 11 | | 2 | 00/416E : 80 03 | BRA ozunid_8 389 | 2 MAINMEM.LDR.s 190 | Code | 11 | | 3 | 00/4170 : 20 11 C3 | _TOAUX JSR {$C311} ; Carry already set (so to aux) 390 | 2 MAINMEM.LDR.s 191 | Code | 11 | | 3 | 00/4173 : EE 89 41 | ozunid_8 INC ozunid_10 391 | 2 MAINMEM.LDR.s 192 | Code | 11 | | 2 | 00/4176 : 80 BB | BRA ozunid_5 392 | 2 MAINMEM.LDR.s 193 | Code | 11 | | 3 | 00/4178 : AD 61 56 | ozunid_9 LDA OPENPL+5 ; File reference number 393 | 2 MAINMEM.LDR.s 194 | Code | 11 | | 3 | 00/417B : 8D A5 56 | STA CLSPL+1 394 | 2 MAINMEM.LDR.s 195 | Code | 11 | | 3 | 00/417E : 20 E8 57 | JSR CLSFILE 395 | 2 MAINMEM.LDR.s 196 | Code | 11 | | 3 | 00/4181 : 20 8E FD | JSR {$FD8E} 396 | 2 MAINMEM.LDR.s 197 | Code | 11 | | 1 | 00/4184 : 28 | PLP 397 | 2 MAINMEM.LDR.s 198 | Code | 11 | | 1 | 00/4185 : 18 | CLC ; CC=Ok 398 | 2 MAINMEM.LDR.s 199 | Code | 11 | | 1 | 00/4186 : 60 | RTS 399 | 2 MAINMEM.LDR.s 200 | Data | 11 | | 1 | 00/4187 : 00 | _ADDRL DB $00 ; Destination address (LSB) 400 | 2 MAINMEM.LDR.s 201 | Data | 11 | | 1 | 00/4188 : 00 | _ADDRH DB $00 ; Destination address (MSB) 401 | 2 MAINMEM.LDR.s 202 | Data | 11 | | 1 | 00/4189 : 00 | ozunid_10 DB $00 ; Counter for blocks read 402 | 2 MAINMEM.LDR.s 203 | Data | 11 | | 1 | 00/418A : 00 | _LEN DB $00 ; Length of filename 403 | 2 MAINMEM.LDR.s 204 | Data | 11 | | 15 | 00/418B : D5 EE E1 E2 | _CANTOPEN ASC "Unable to open " | | | | | | EC E5 A0 F4 | | | | | | | EF A0 EF F0 | | | | | | | E5 EE A0 | 404 | 2 MAINMEM.LDR.s 205 | Data | 11 | | 1 | 00/419A : 00 | DB $00 405 | 2 MAINMEM.LDR.s 206 | Empty | 11 | | 0 | 00/419B | 406 | 2 MAINMEM.LDR.s 207 | Empty | 11 | | 0 | 00/419B | 407 | 2 MAINMEM.LDR.s 208 | Empty | 11 | | 0 | 00/419B | 408 | 2 MAINMEM.LDR.s 209 | Empty | 11 | | 0 | 00/419B | 409 | 2 MAINMEM.LDR.s 210 | Empty | 11 | | 0 | 00/419B | 410 | 2 MAINMEM.LDR.s 211 | Empty | 11 | | 0 | 00/419B | 411 | 2 MAINMEM.LDR.s 212 | Empty | 11 | | 0 | 00/419B | 412 | 2 MAINMEM.LDR.s 213 | Empty | 11 | | 0 | 00/419B | 413 | 2 MAINMEM.LDR.s 214 | Empty | 11 | | 0 | 00/419B | 414 | 2 MAINMEM.LDR.s 215 | Empty | 11 | | 0 | 00/419B | 415 | 2 MAINMEM.LDR.s 216 | Empty | 11 | | 0 | 00/419B | 416 | 2 MAINMEM.LDR.s 217 | Empty | 11 | | 0 | 00/419B | 417 | 2 MAINMEM.LDR.s 218 | Empty | 11 | | 0 | 00/419B | 418 | 2 MAINMEM.LDR.s 219 | Empty | 11 | | 0 | 00/419B | 419 | 2 MAINMEM.LDR.s 220 | Empty | 11 | | 0 | 00/419B | 420 | 2 MAINMEM.LDR.s 221 | Empty | 11 | | 0 | 00/419B | 421 | 2 MAINMEM.LDR.s 222 | Empty | 11 | | 0 | 00/419B | 422 | 2 MAINMEM.LDR.s 223 | Empty | 11 | | 0 | 00/419B | 423 | 1 applecorn.s 190 | Directive | 11 | | 0 | 00/419B | PUT MAINMEM.MENU 424 | 3 MAINMEM.MENU.s 1 | Comment | 11 | | 0 | 00/419B | * MAINMEM.MENU.S 425 | 3 MAINMEM.MENU.s 2 | Comment | 11 | | 0 | 00/419B | * (c) Bobbi 2021 GPL3 426 | 3 MAINMEM.MENU.s 3 | Comment | 11 | | 0 | 00/419B | * 427 | 3 MAINMEM.MENU.s 4 | Comment | 11 | | 0 | 00/419B | * Applecorn ROM menu. Runs in main memory. 428 | 3 MAINMEM.MENU.s 5 | Empty | 11 | | 0 | 00/419B | 429 | 3 MAINMEM.MENU.s 6 | Comment | 11 | | 0 | 00/419B | * 13-Nov-2021 List of selected ROMs kept locally. 430 | 3 MAINMEM.MENU.s 7 | Empty | 11 | | 0 | 00/419B | 431 | 3 MAINMEM.MENU.s 8 | Empty | 11 | | 0 | 00/419B | 432 | 3 MAINMEM.MENU.s 9 | Equivalence | 11 | | 0 | 00/419B | ROMMAX EQU $0382 433 | 3 MAINMEM.MENU.s 10 | Equivalence | 11 | | 0 | 00/419B | ROMTHIS EQU $0383 434 | 3 MAINMEM.MENU.s 11 | Equivalence | 11 | | 0 | 00/419B | ROMADDRS EQU $0384 ; List of ROM filename addresses 435 | 3 MAINMEM.MENU.s 12 | Empty | 11 | | 0 | 00/419B | 436 | 3 MAINMEM.MENU.s 13 | Code | 11 | | 3 | 00/419B : 20 58 FC | ROMMENU JSR {$FC58} ; Clear screen 437 | 3 MAINMEM.MENU.s 14 | Code | 11 | | 2 | 00/419E : A2 00 | LDX #0 438 | 3 MAINMEM.MENU.s 15 | Code | 11 | | 3 | 00/41A0 : BD 4B 42 | _LP0 LDA TITLE1,X ; Print title 439 | 3 MAINMEM.MENU.s 16 | Code | 11 | | 2 | 00/41A3 : F0 06 | BEQ ozunid_11 440 | 3 MAINMEM.MENU.s 17 | Code | 11 | | 3 | 00/41A5 : 20 ED FD | JSR {$FDED} 441 | 3 MAINMEM.MENU.s 18 | Code | 11 | | 1 | 00/41A8 : E8 | INX 442 | 3 MAINMEM.MENU.s 19 | Code | 11 | | 2 | 00/41A9 : D0 F5 | BNE _LP0 443 | 3 MAINMEM.MENU.s 20 | Empty | 11 | | 0 | 00/41AB | ozunid_11 444 | 3 MAINMEM.MENU.s 21 | Empty | 11 | | 0 | 00/41AB | 445 | 3 MAINMEM.MENU.s 22 | Comment | 11 | | 0 | 00/41AB | * LDA #TITLE1 448 | 3 MAINMEM.MENU.s 25 | Comment | 11 | | 0 | 00/41AB | * STA A1H 449 | 3 MAINMEM.MENU.s 26 | Comment | 11 | | 0 | 00/41AB | * JSR PRSTRA1 450 | 3 MAINMEM.MENU.s 27 | Code | 11 | | 3 | 00/41AB : 20 8E FD | JSR {$FD8E} 451 | 3 MAINMEM.MENU.s 28 | Comment | 11 | | 0 | 00/41AE | * TEMP 452 | 3 MAINMEM.MENU.s 29 | Comment | 11 | | 0 | 00/41AE | ; LDA #$00 453 | 3 MAINMEM.MENU.s 30 | Comment | 11 | | 0 | 00/41AE | ; JMP :KEYOK 454 | 3 MAINMEM.MENU.s 31 | Comment | 11 | | 0 | 00/41AE | * TEMP 455 | 3 MAINMEM.MENU.s 32 | Comment | 11 | | 0 | 00/41AE | * JSR CROUT 456 | 3 MAINMEM.MENU.s 33 | Comment | 11 | | 0 | 00/41AE | * LDA #TITLE2 459 | 3 MAINMEM.MENU.s 36 | Comment | 11 | | 0 | 00/41AE | * STA A1H 460 | 3 MAINMEM.MENU.s 37 | Comment | 11 | | 0 | 00/41AE | * JSR PRSTRA1 461 | 3 MAINMEM.MENU.s 38 | Comment | 11 | | 0 | 00/41AE | * JSR CROUT 462 | 3 MAINMEM.MENU.s 39 | Comment | 11 | | 0 | 00/41AE | * JSR CROUT 463 | 3 MAINMEM.MENU.s 40 | Comment | 11 | | 0 | 00/41AE | * JSR CROUT 464 | 3 MAINMEM.MENU.s 41 | Comment | 11 | | 0 | 00/41AE | * 465 | 3 MAINMEM.MENU.s 42 | Comment | 11 | | 0 | 00/41AE | * LDX #$00 ; Print menu 466 | 3 MAINMEM.MENU.s 43 | Comment | 11 | | 0 | 00/41AE | *:L1 LDA MSGTBL,X 467 | 3 MAINMEM.MENU.s 44 | Comment | 11 | | 0 | 00/41AE | * STA A1L 468 | 3 MAINMEM.MENU.s 45 | Comment | 11 | | 0 | 00/41AE | * INX 469 | 3 MAINMEM.MENU.s 46 | Comment | 11 | | 0 | 00/41AE | * LDA MSGTBL,X 470 | 3 MAINMEM.MENU.s 47 | Comment | 11 | | 0 | 00/41AE | * STA A1H 471 | 3 MAINMEM.MENU.s 48 | Comment | 11 | | 0 | 00/41AE | * INX 472 | 3 MAINMEM.MENU.s 49 | Comment | 11 | | 0 | 00/41AE | * JSR PRSTRA1 473 | 3 MAINMEM.MENU.s 50 | Comment | 11 | | 0 | 00/41AE | * JSR CROUT 474 | 3 MAINMEM.MENU.s 51 | Comment | 11 | | 0 | 00/41AE | * JSR CROUT 475 | 3 MAINMEM.MENU.s 52 | Comment | 11 | | 0 | 00/41AE | * CPX #8*2 476 | 3 MAINMEM.MENU.s 53 | Comment | 11 | | 0 | 00/41AE | * BEQ :KEYIN 477 | 3 MAINMEM.MENU.s 54 | Comment | 11 | | 0 | 00/41AE | * BRA :L1 478 | 3 MAINMEM.MENU.s 55 | Empty | 11 | | 0 | 00/41AE | 479 | 3 MAINMEM.MENU.s 56 | Code | 11 | | 3 | 00/41AE : AD 00 C0 | _KEYIN LDA $C000 ; Kdb data / strobe 480 | 3 MAINMEM.MENU.s 57 | Code | 11 | | 2 | 00/41B1 : 10 FB | BPL _KEYIN ; Wait for keystroke 481 | 3 MAINMEM.MENU.s 58 | Code | 11 | | 3 | 00/41B3 : 8D 10 C0 | STA $C010 ; Clear strobe 482 | 3 MAINMEM.MENU.s 59 | Code | 11 | | 2 | 00/41B6 : 29 7F | AND #$7F 483 | 3 MAINMEM.MENU.s 60 | Code | 11 | | 1 | 00/41B8 : 38 | SEC 484 | 3 MAINMEM.MENU.s 61 | Code | 11 | | 2 | 00/41B9 : E9 31 | SBC #'1' ; '1'->0, '2'->1 etc. 485 | 3 MAINMEM.MENU.s 62 | Code | 11 | | 2 | 00/41BB : C9 08 | CMP #8 486 | 3 MAINMEM.MENU.s 63 | Code | 11 | | 2 | 00/41BD : 90 05 | BCC _KEYOK 487 | 3 MAINMEM.MENU.s 64 | Code | 11 | | 3 | 00/41BF : 20 DD FB | JSR {$FBDD} ; Invalid - beep 488 | 3 MAINMEM.MENU.s 65 | Code | 11 | | 2 | 00/41C2 : 80 EA | BRA _KEYIN ; Go again 489 | 3 MAINMEM.MENU.s 66 | Code | 11 | | 3 | 00/41C4 : 8D A5 43 | _KEYOK STA USERSEL ; Record selection 490 | 3 MAINMEM.MENU.s 67 | Empty | 11 | | 0 | 00/41C7 | 491 | 3 MAINMEM.MENU.s 68 | Comment | 11 | | 0 | 00/41C7 | * Make list of ROMs 492 | 3 MAINMEM.MENU.s 69 | Code | 11 | | 2 | 00/41C7 : A2 3F | LDX #63 493 | 3 MAINMEM.MENU.s 70 | Code | 11 | | 2 | 00/41C9 : A9 00 | LDA #0 494 | 3 MAINMEM.MENU.s 71 | Code | 11 | | 3 | 00/41CB : 9D 84 03 | _INITLP1 STA {$0384},X 495 | 3 MAINMEM.MENU.s 72 | Code | 11 | | 1 | 00/41CE : CA | DEX 496 | 3 MAINMEM.MENU.s 73 | Code | 11 | | 2 | 00/41CF : 10 FA | BPL _INITLP1 497 | 3 MAINMEM.MENU.s 74 | Code | 11 | | 3 | 00/41D1 : 8E 83 03 | STX {$0383} ; Current ROM=none 498 | 3 MAINMEM.MENU.s 75 | Code | 11 | | 3 | 00/41D4 : AC A5 43 | LDY USERSEL ; Index to ROM to load 499 | 3 MAINMEM.MENU.s 76 | Code | 11 | | 2 | 00/41D7 : A9 00 | LDA #0 ; Load it to bank 0 500 | 3 MAINMEM.MENU.s 77 | Code | 11 | | 2 | 00/41D9 : C0 06 | CPY #6 501 | 3 MAINMEM.MENU.s 78 | Code | 11 | | 2 | 00/41DB : 90 0A | BCC _INITROM2 ; <6, single ROM 502 | 3 MAINMEM.MENU.s 79 | Code | 11 | | 2 | 00/41DD : A9 01 | LDA #1 ; Load to bank 1 and 0 503 | 3 MAINMEM.MENU.s 80 | Code | 11 | | 2 | 00/41DF : C0 07 | CPY #7 504 | 3 MAINMEM.MENU.s 81 | Code | 11 | | 2 | 00/41E1 : 90 04 | BCC _INITROM2 ; =7, two ROMs 505 | 3 MAINMEM.MENU.s 82 | Code | 11 | | 2 | 00/41E3 : A9 07 | LDA #7 ; Load to bank 7 to 0 506 | 3 MAINMEM.MENU.s 83 | Code | 11 | | 2 | 00/41E5 : A0 00 | LDY #0 ; Starting at ROM 0 507 | 3 MAINMEM.MENU.s 84 | Code | 11 | | 3 | 00/41E7 : 8D 82 03 | _INITROM2 STA {$0382} 508 | 3 MAINMEM.MENU.s 85 | Code | 11 | | 1 | 00/41EA : 0A | ASL A 509 | 3 MAINMEM.MENU.s 86 | Code | 11 | | 1 | 00/41EB : AA | TAX ; X=>ROM address table 510 | 3 MAINMEM.MENU.s 87 | Code | 11 | | 1 | 00/41EC : 98 | TYA 511 | 3 MAINMEM.MENU.s 88 | Code | 11 | | 1 | 00/41ED : 0A | ASL A 512 | 3 MAINMEM.MENU.s 89 | Code | 11 | | 1 | 00/41EE : A8 | TAY ; Y=>ROM addresses 513 | 3 MAINMEM.MENU.s 90 | Code | 11 | | 3 | 00/41EF : B9 2E 43 | _INITROM3 LDA ROMLIST+0,Y 514 | 3 MAINMEM.MENU.s 91 | Code | 11 | | 3 | 00/41F2 : 9D 84 03 | STA {$0384}+0,X 515 | 3 MAINMEM.MENU.s 92 | Code | 11 | | 3 | 00/41F5 : B9 2F 43 | LDA ROMLIST+1,Y 516 | 3 MAINMEM.MENU.s 93 | Code | 11 | | 3 | 00/41F8 : 9D 85 03 | STA {$0384}+1,X 517 | 3 MAINMEM.MENU.s 94 | Code | 11 | | 1 | 00/41FB : C8 | INY 518 | 3 MAINMEM.MENU.s 95 | Code | 11 | | 1 | 00/41FC : C8 | INY 519 | 3 MAINMEM.MENU.s 96 | Code | 11 | | 1 | 00/41FD : CA | DEX 520 | 3 MAINMEM.MENU.s 97 | Code | 11 | | 1 | 00/41FE : CA | DEX 521 | 3 MAINMEM.MENU.s 98 | Code | 11 | | 2 | 00/41FF : 10 EE | BPL _INITROM3 522 | 3 MAINMEM.MENU.s 99 | Code | 11 | | 1 | 00/4201 : 60 | RTS 523 | 3 MAINMEM.MENU.s 100 | Empty | 11 | | 0 | 00/4202 | 524 | 3 MAINMEM.MENU.s 101 | Macro | 11 | | 0 | 00/4202 | SELECTROM >>> ENTMAIN 525 | 3 MAINMEM.MENU.s 101 | Code | 11 | | 1 | 00/4202 : 9A | TXS ; Main SP already in X 526 | 3 MAINMEM.MENU.s 101 | Code | 11 | | 3 | 00/4203 : AE 81 C0 | LDX $C081 ; Bank in ROM 527 | 3 MAINMEM.MENU.s 101 | Code | 11 | | 3 | 00/4206 : AE 81 C0 | LDX $C081 528 | 3 MAINMEM.MENU.s 101 | Code | 11 | | 1 | 00/4209 : 58 | CLI ; Re-enable IRQ after XFER 529 | 3 MAINMEM.MENU.s 102 | Code | 11 | | 3 | 00/420A : CD 83 03 | CMP {$0383} 530 | 3 MAINMEM.MENU.s 103 | Code | 11 | | 2 | 00/420D : F0 24 | BEQ _SELECTDONE ; Already selected 531 | 3 MAINMEM.MENU.s 104 | Code | 11 | | 3 | 00/420F : CD 82 03 | CMP {$0382} 532 | 3 MAINMEM.MENU.s 105 | Code | 11 | | 2 | 00/4212 : 90 02 | BCC _GETROM 533 | 3 MAINMEM.MENU.s 106 | Code | 11 | | 2 | 00/4214 : D0 1D | BNE _SELECTDONE ; Out of range 534 | 3 MAINMEM.MENU.s 107 | Code | 11 | | 1 | 00/4216 : 48 | _GETROM PHA 535 | 3 MAINMEM.MENU.s 108 | Code | 11 | | 1 | 00/4217 : 0A | ASL A 536 | 3 MAINMEM.MENU.s 109 | Code | 11 | | 1 | 00/4218 : AA | TAX 537 | 3 MAINMEM.MENU.s 110 | Code | 11 | | 3 | 00/4219 : BD 84 03 | LDA {$0384}+0,X ; ROM filename 538 | 3 MAINMEM.MENU.s 111 | Code | 11 | | 3 | 00/421C : 8D 5D 56 | STA OPENPL+1 539 | 3 MAINMEM.MENU.s 112 | Code | 11 | | 3 | 00/421F : BD 85 03 | LDA {$0384}+1,X 540 | 3 MAINMEM.MENU.s 113 | Code | 11 | | 3 | 00/4222 : 8D 5E 56 | STA OPENPL+2 541 | 3 MAINMEM.MENU.s 114 | Code | 11 | | 2 | 00/4225 : A9 80 | LDA #$80 ; Load address $8000 542 | 3 MAINMEM.MENU.s 115 | Code | 11 | | 2 | 00/4227 : A2 00 | LDX #$00 543 | 3 MAINMEM.MENU.s 116 | Code | 11 | | 1 | 00/4229 : 38 | SEC ; Aux memory 544 | 3 MAINMEM.MENU.s 117 | Code | 11 | | 3 | 00/422A : 20 A3 40 | JSR LOADCODE ; Try and fetch it 545 | 3 MAINMEM.MENU.s 118 | Code | 11 | | 1 | 00/422D : 68 | PLA ; Get bank back 546 | 3 MAINMEM.MENU.s 119 | Code | 11 | | 2 | 00/422E : B0 03 | BCS _SELECTDONE ; Failed 547 | 3 MAINMEM.MENU.s 120 | Code | 11 | | 3 | 00/4230 : 8D 83 03 | STA {$0383} ; It is paged in 548 | 3 MAINMEM.MENU.s 121 | Macro | 11 | | 0 | 00/4233 | _SELECTDONE >>> XF2AUX,ROMSELDONE 549 | 3 MAINMEM.MENU.s 121 | Code | 11 | | 3 | 00/4233 : AE 8B C0 | LDX $C08B ; R/W LC RAM, bank 1 550 | 3 MAINMEM.MENU.s 121 | Code | 11 | | 3 | 00/4236 : AE 8B C0 | LDX $C08B 551 | 3 MAINMEM.MENU.s 121 | Code | 11 | | 2 | 00/4239 : A2 06 | LDX #ROMSELDONE 554 | 3 MAINMEM.MENU.s 121 | Code | 11 | | 3 | 00/4240 : 8E EE 03 | STX {$3EE} 555 | 3 MAINMEM.MENU.s 121 | Code | 11 | | 1 | 00/4243 : 78 | SEI ; Disable IRQ before XFER 556 | 3 MAINMEM.MENU.s 121 | Code | 11 | | 1 | 00/4244 : 38 | SEC ; Use aux memory 557 | 3 MAINMEM.MENU.s 121 | Code | 11 | | 3 | 00/4245 : 2C 58 FF | BIT $FF58 ; Set V: use alt ZP and LC 558 | 3 MAINMEM.MENU.s 121 | Code | 11 | | 3 | 00/4248 : 4C 14 C3 | JMP {$C314} 559 | 3 MAINMEM.MENU.s 122 | Empty | 11 | | 0 | 00/424B | 560 | 3 MAINMEM.MENU.s 123 | Empty | 11 | | 0 | 00/424B | 561 | 3 MAINMEM.MENU.s 124 | Comment | 11 | | 0 | 00/424B | ** Print a string pointed to by A1L/A1H 562 | 3 MAINMEM.MENU.s 125 | Comment | 11 | | 0 | 00/424B | ** Trashes A, preserves X and Y 563 | 3 MAINMEM.MENU.s 126 | Comment | 11 | | 0 | 00/424B | *PRSTRA1 PHY 564 | 3 MAINMEM.MENU.s 127 | Comment | 11 | | 0 | 00/424B | * LDY #$00 565 | 3 MAINMEM.MENU.s 128 | Comment | 11 | | 0 | 00/424B | *:L1 LDA (A1L),Y 566 | 3 MAINMEM.MENU.s 129 | Comment | 11 | | 0 | 00/424B | * BEQ :NULL 567 | 3 MAINMEM.MENU.s 130 | Comment | 11 | | 0 | 00/424B | * JSR COUT1 568 | 3 MAINMEM.MENU.s 131 | Comment | 11 | | 0 | 00/424B | * INY 569 | 3 MAINMEM.MENU.s 132 | Comment | 11 | | 0 | 00/424B | * BRA :L1 570 | 3 MAINMEM.MENU.s 133 | Comment | 11 | | 0 | 00/424B | *:NULL PLY 571 | 3 MAINMEM.MENU.s 134 | Comment | 11 | | 0 | 00/424B | * RTS 572 | 3 MAINMEM.MENU.s 135 | Empty | 11 | | 0 | 00/424B | 573 | 3 MAINMEM.MENU.s 136 | Data | 11 | | 15 | 00/424B : AA AA A0 C1 | TITLE1 ASC "** APPLECORN **" | | | | | | D0 D0 CC C5 | | | | | | | C3 CF D2 CE | | | | | | | A0 AA AA | 574 | 3 MAINMEM.MENU.s 137 | Data | 11 | | 2 | 00/425A : 8D 8D | DB $8D,$8D 575 | 3 MAINMEM.MENU.s 138 | Data | 11 | | 23 | 00/425C : C3 E8 EF EF | TITLE2 ASC "Choose a BBC Micro ROM:" | | | | | | F3 E5 A0 E1 | | | | | | | A0 C2 C2 C3 | | | | | | | A0 CD E9 E3 | | | | | | | F2 EF A0 D2 | | | | | | | CF CD BA | 576 | 3 MAINMEM.MENU.s 139 | Data | 11 | | 2 | 00/4273 : 8D 8D | DB $8D,$8D 577 | 3 MAINMEM.MENU.s 140 | Empty | 11 | | 0 | 00/4275 | 578 | 3 MAINMEM.MENU.s 141 | Comment | 11 | | 0 | 00/4275 | *MSGTBL DW MSG1 579 | 3 MAINMEM.MENU.s 142 | Comment | 11 | | 0 | 00/4275 | * DW MSG2 580 | 3 MAINMEM.MENU.s 143 | Comment | 11 | | 0 | 00/4275 | * DW MSG3 581 | 3 MAINMEM.MENU.s 144 | Comment | 11 | | 0 | 00/4275 | * DW MSG4 582 | 3 MAINMEM.MENU.s 145 | Comment | 11 | | 0 | 00/4275 | * DW MSG5 583 | 3 MAINMEM.MENU.s 146 | Comment | 11 | | 0 | 00/4275 | * DW MSG6 584 | 3 MAINMEM.MENU.s 147 | Comment | 11 | | 0 | 00/4275 | * DW MSG7 585 | 3 MAINMEM.MENU.s 148 | Comment | 11 | | 0 | 00/4275 | * DW MSG8 586 | 3 MAINMEM.MENU.s 149 | Empty | 11 | | 0 | 00/4275 | 587 | 3 MAINMEM.MENU.s 150 | Data | 11 | | 13 | 00/4275 : A0 B1 AE A0 | MSG1 ASC " 1. BBC BASIC" | | | | | | C2 C2 C3 A0 | | | | | | | C2 C1 D3 C9 | | | | | | | C3 | 588 | 3 MAINMEM.MENU.s 151 | Data | 11 | | 2 | 00/4282 : 8D 8D | DB $8D,$8D 589 | 3 MAINMEM.MENU.s 152 | Data | 11 | | 19 | 00/4284 : A0 B2 AE A0 | MSG2 ASC " 2. Acornsoft COMAL" | | | | | | C1 E3 EF F2 | | | | | | | EE F3 EF E6 | | | | | | | F4 A0 C3 CF | | | | | | | CD C1 CC | 590 | 3 MAINMEM.MENU.s 153 | Data | 11 | | 2 | 00/4297 : 8D 8D | DB $8D,$8D 591 | 3 MAINMEM.MENU.s 154 | Data | 11 | | 18 | 00/4299 : A0 B3 AE A0 | MSG3 ASC " 3. Acornsoft Lisp" | | | | | | C1 E3 EF F2 | | | | | | | EE F3 EF E6 | | | | | | | F4 A0 CC E9 | | | | | | | F3 F0 | 592 | 3 MAINMEM.MENU.s 155 | Data | 11 | | 2 | 00/42AB : 8D 8D | DB $8D,$8D 593 | 3 MAINMEM.MENU.s 156 | Data | 11 | | 19 | 00/42AD : A0 B4 AE A0 | MSG4 ASC " 4. Acornsoft Forth" | | | | | | C1 E3 EF F2 | | | | | | | EE F3 EF E6 | | | | | | | F4 A0 C6 EF | | | | | | | F2 F4 E8 | 594 | 3 MAINMEM.MENU.s 157 | Data | 11 | | 2 | 00/42C0 : 8D 8D | DB $8D,$8D 595 | 3 MAINMEM.MENU.s 158 | Data | 11 | | 25 | 00/42C2 : A0 B5 AE A0 | MSG5 ASC " 5. Acornsoft MicroProlog" | | | | | | C1 E3 EF F2 | | | | | | | EE F3 EF E6 | | | | | | | F4 A0 CD E9 | | | | | | | E3 F2 EF D0 | | | | | | | F2 EF EC EF | | | | | | | E7 | 596 | 3 MAINMEM.MENU.s 159 | Data | 11 | | 2 | 00/42DB : 8D 8D | DB $8D,$8D 597 | 3 MAINMEM.MENU.s 160 | Data | 11 | | 18 | 00/42DD : A0 B6 AE A0 | MSG6 ASC " 6. Acornsoft BCPL" | | | | | | C1 E3 EF F2 | | | | | | | EE F3 EF E6 | | | | | | | F4 A0 C2 C3 | | | | | | | D0 CC | 598 | 3 MAINMEM.MENU.s 161 | Data | 11 | | 2 | 00/42EF : 8D 8D | DB $8D,$8D 599 | 3 MAINMEM.MENU.s 162 | Data | 11 | | 33 | 00/42F1 : A0 B7 AE A0 | MSG7 ASC " 7. Acornsoft ISO Pascal (2 ROMs)" | | | | | | C1 E3 EF F2 | | | | | | | EE F3 EF E6 | | | | | | | F4 A0 C9 D3 | | | | | | | CF A0 D0 E1 | | | | | | | F3 E3 E1 EC | | | | | | | A0 A8 B2 A0 | | | | | | | D2 CF CD F3 | | | | | | | A9 | 600 | 3 MAINMEM.MENU.s 163 | Data | 11 | | 2 | 00/4312 : 8D 8D | DB $8D,$8D 601 | 3 MAINMEM.MENU.s 164 | Data | 11 | | 24 | 00/4314 : A0 B8 AE A0 | MSG8 ASC " 8. Everything! (8 ROMs)" | | | | | | C5 F6 E5 F2 | | | | | | | F9 F4 E8 E9 | | | | | | | EE E7 A1 A0 | | | | | | | A8 B8 A0 D2 | | | | | | | CF CD F3 A9 | 602 | 3 MAINMEM.MENU.s 165 | Data | 11 | | 1 | 00/432C : 8D | DB $8D 603 | 3 MAINMEM.MENU.s 166 | Data | 11 | | 1 | 00/432D : 00 | DB $00 604 | 3 MAINMEM.MENU.s 167 | Empty | 11 | | 0 | 00/432E | 605 | 3 MAINMEM.MENU.s 168 | Empty | 11 | | 0 | 00/432E | 606 | 3 MAINMEM.MENU.s 169 | Data | 11 | | 2 | 00/432E : 3E 43 | ROMLIST DW ROM1 607 | 3 MAINMEM.MENU.s 170 | Data | 11 | | 2 | 00/4330 : 49 43 | DW ROM2 608 | 3 MAINMEM.MENU.s 171 | Data | 11 | | 2 | 00/4332 : 53 43 | DW ROM3 609 | 3 MAINMEM.MENU.s 172 | Data | 11 | | 2 | 00/4334 : 5F 43 | DW ROM4 610 | 3 MAINMEM.MENU.s 173 | Data | 11 | | 2 | 00/4336 : 6C 43 | DW ROM5 611 | 3 MAINMEM.MENU.s 174 | Data | 11 | | 2 | 00/4338 : 7B 43 | DW ROM6 612 | 3 MAINMEM.MENU.s 175 | Data | 11 | | 2 | 00/433A : 87 43 | DW ROM7 613 | 3 MAINMEM.MENU.s 176 | Data | 11 | | 2 | 00/433C : 96 43 | DW ROM8 614 | 3 MAINMEM.MENU.s 177 | Empty | 11 | | 0 | 00/433E | 615 | 3 MAINMEM.MENU.s 178 | Data | 11 | | 11 | 00/433E : 0A C2 C1 D3 | ROM1 STR "BASIC2.ROM" | | | | | | C9 C3 B2 AE | | | | | | | D2 CF CD | 616 | 3 MAINMEM.MENU.s 179 | Data | 11 | | 10 | 00/4349 : 09 C3 CF CD | ROM2 STR "COMAL.ROM" | | | | | | C1 CC AE D2 | | | | | | | CF CD | 617 | 3 MAINMEM.MENU.s 180 | Data | 11 | | 12 | 00/4353 : 0B CC C9 D3 | ROM3 STR "LISP501.ROM" | | | | | | D0 B5 B0 B1 | | | | | | | AE D2 CF CD | 618 | 3 MAINMEM.MENU.s 181 | Data | 11 | | 13 | 00/435F : 0C C6 CF D2 | ROM4 STR "FORTH103.ROM" | | | | | | D4 C8 B1 B0 | | | | | | | B3 AE D2 CF | | | | | | | CD | 619 | 3 MAINMEM.MENU.s 182 | Data | 11 | | 15 | 00/436C : 0E CD D0 D2 | ROM5 STR "MPROLOG310.ROM" | | | | | | CF CC CF C7 | | | | | | | B3 B1 B0 AE | | | | | | | D2 CF CD | 620 | 3 MAINMEM.MENU.s 183 | Data | 11 | | 12 | 00/437B : 0B C2 C3 D0 | ROM6 STR "BCPL700.ROM" | | | | | | CC B7 B0 B0 | | | | | | | AE D2 CF CD | 621 | 3 MAINMEM.MENU.s 184 | Data | 11 | | 15 | 00/4387 : 0E D0 C1 D3 | ROM7 STR "PASCAL110A.ROM" | | | | | | C3 C1 CC B1 | | | | | | | B1 B0 C1 AE | | | | | | | D2 CF CD | 622 | 3 MAINMEM.MENU.s 185 | Data | 11 | | 15 | 00/4396 : 0E D0 C1 D3 | ROM8 STR "PASCAL110B.ROM" | | | | | | C3 C1 CC B1 | | | | | | | B1 B0 C2 AE | | | | | | | D2 CF CD | 623 | 3 MAINMEM.MENU.s 186 | Empty | 11 | | 0 | 00/43A5 | 624 | 3 MAINMEM.MENU.s 187 | Data | 11 | | 1 | 00/43A5 : 00 | USERSEL DB $00 625 | 3 MAINMEM.MENU.s 188 | Empty | 11 | | 0 | 00/43A6 | 626 | 3 MAINMEM.MENU.s 189 | Empty | 11 | | 0 | 00/43A6 | 627 | 3 MAINMEM.MENU.s 190 | Empty | 11 | | 0 | 00/43A6 | 628 | 3 MAINMEM.MENU.s 191 | Empty | 11 | | 0 | 00/43A6 | 629 | 1 applecorn.s 191 | Directive | 11 | | 0 | 00/43A6 | PUT MAINMEM.FSEQU 630 | 4 MAINMEM.FSEQU.s 1 | Comment | 11 | | 0 | 00/43A6 | * MAINMEM.FSEQU.S 631 | 4 MAINMEM.FSEQU.s 2 | Comment | 11 | | 0 | 00/43A6 | * (c) Bobbi 2021 GPL v3 632 | 4 MAINMEM.FSEQU.s 3 | Comment | 11 | | 0 | 00/43A6 | * 633 | 4 MAINMEM.FSEQU.s 4 | Comment | 11 | | 0 | 00/43A6 | * Constant definitions for ProDOS filesystem code that 634 | 4 MAINMEM.FSEQU.s 5 | Comment | 11 | | 0 | 00/43A6 | * resides in main memory. 635 | 4 MAINMEM.FSEQU.s 6 | Empty | 11 | | 0 | 00/43A6 | 636 | 4 MAINMEM.FSEQU.s 7 | Comment | 11 | | 0 | 00/43A6 | * ProDOS string buffers 637 | 4 MAINMEM.FSEQU.s 8 | Equivalence | 11 | | 0 | 00/43A6 | RTCBUF EQU $0200 ; Use by RTC calls, 40 bytes 638 | 4 MAINMEM.FSEQU.s 9 | Comment | 11 | | 0 | 00/43A6 | * ; $0228-$023D 639 | 4 MAINMEM.FSEQU.s 10 | Equivalence | 11 | | 0 | 00/43A6 | DRVBUF1 EQU $023E 640 | 4 MAINMEM.FSEQU.s 11 | Equivalence | 11 | | 0 | 00/43A6 | DRVBUF2 EQU $023F ; Prefix on current drive, len+64 641 | 4 MAINMEM.FSEQU.s 12 | Equivalence | 11 | | 0 | 00/43A6 | CMDPATH EQU $0280 ; Path used to start Applecorn 642 | 4 MAINMEM.FSEQU.s 13 | Empty | 11 | | 0 | 00/43A6 | 643 | 4 MAINMEM.FSEQU.s 14 | Comment | 11 | | 0 | 00/43A6 | * Filename string buffers 644 | 4 MAINMEM.FSEQU.s 15 | Equivalence | 11 | | 0 | 00/43A6 | MOSFILE1 EQU $0300 ; length + 64 bytes 645 | 4 MAINMEM.FSEQU.s 16 | Equivalence | 11 | | 0 | 00/43A6 | MOSFILE2 EQU $0341 ; length + 64 bytes 646 | 4 MAINMEM.FSEQU.s 17 | Equivalence | 11 | | 0 | 00/43A6 | MOSFILE EQU {$0300} 647 | 4 MAINMEM.FSEQU.s 18 | Comment | 11 | | 0 | 00/43A6 | * $0382 ; $3C bytes here 648 | 4 MAINMEM.FSEQU.s 19 | Comment | 11 | | 0 | 00/43A6 | * 649 | 4 MAINMEM.FSEQU.s 20 | Equivalence | 11 | | 0 | 00/43A6 | FILEBLK EQU $03BE 650 | 4 MAINMEM.FSEQU.s 21 | Equivalence | 11 | | 0 | 00/43A6 | FBPTR EQU {$03BE}+0 ; Pointer to name (in aux) 651 | 4 MAINMEM.FSEQU.s 22 | Equivalence | 11 | | 0 | 00/43A6 | FBLOAD EQU {$03BE}+2 ; Load address 652 | 4 MAINMEM.FSEQU.s 23 | Equivalence | 11 | | 0 | 00/43A6 | FBEXEC EQU {$03BE}+6 ; Exec address 653 | 4 MAINMEM.FSEQU.s 24 | Equivalence | 11 | | 0 | 00/43A6 | FBSIZE EQU {$03BE}+10 ; Size 654 | 4 MAINMEM.FSEQU.s 25 | Equivalence | 11 | | 0 | 00/43A6 | FBSTRT EQU {$03BE}+10 ; Start address for SAVE 655 | 4 MAINMEM.FSEQU.s 26 | Equivalence | 11 | | 0 | 00/43A6 | FBATTR EQU {$03BE}+14 ; Attributes 656 | 4 MAINMEM.FSEQU.s 27 | Equivalence | 11 | | 0 | 00/43A6 | FBEND EQU {$03BE}+14 ; End address for SAVE 657 | 4 MAINMEM.FSEQU.s 28 | Empty | 11 | | 0 | 00/43A6 | 658 | 4 MAINMEM.FSEQU.s 29 | Comment | 11 | | 0 | 00/43A6 | * ProDOS MLI command numbers 659 | 4 MAINMEM.FSEQU.s 30 | Equivalence | 11 | | 0 | 00/43A6 | QUITCMD EQU $65 660 | 4 MAINMEM.FSEQU.s 31 | Equivalence | 11 | | 0 | 00/43A6 | GTIMECMD EQU $82 661 | 4 MAINMEM.FSEQU.s 32 | Equivalence | 11 | | 0 | 00/43A6 | CREATCMD EQU $C0 662 | 4 MAINMEM.FSEQU.s 33 | Equivalence | 11 | | 0 | 00/43A6 | DESTCMD EQU $C1 663 | 4 MAINMEM.FSEQU.s 34 | Equivalence | 11 | | 0 | 00/43A6 | RENCMD EQU $C2 664 | 4 MAINMEM.FSEQU.s 35 | Equivalence | 11 | | 0 | 00/43A6 | SINFOCMD EQU $C3 665 | 4 MAINMEM.FSEQU.s 36 | Equivalence | 11 | | 0 | 00/43A6 | GINFOCMD EQU $C4 666 | 4 MAINMEM.FSEQU.s 37 | Equivalence | 11 | | 0 | 00/43A6 | ONLNCMD EQU $C5 667 | 4 MAINMEM.FSEQU.s 38 | Equivalence | 11 | | 0 | 00/43A6 | SPFXCMD EQU $C6 668 | 4 MAINMEM.FSEQU.s 39 | Equivalence | 11 | | 0 | 00/43A6 | GPFXCMD EQU $C7 669 | 4 MAINMEM.FSEQU.s 40 | Equivalence | 11 | | 0 | 00/43A6 | OPENCMD EQU $C8 670 | 4 MAINMEM.FSEQU.s 41 | Equivalence | 11 | | 0 | 00/43A6 | READCMD EQU $CA 671 | 4 MAINMEM.FSEQU.s 42 | Equivalence | 11 | | 0 | 00/43A6 | WRITECMD EQU $CB 672 | 4 MAINMEM.FSEQU.s 43 | Equivalence | 11 | | 0 | 00/43A6 | CLSCMD EQU $CC 673 | 4 MAINMEM.FSEQU.s 44 | Equivalence | 11 | | 0 | 00/43A6 | FLSHCMD EQU $CD 674 | 4 MAINMEM.FSEQU.s 45 | Equivalence | 11 | | 0 | 00/43A6 | SMARKCMD EQU $CE 675 | 4 MAINMEM.FSEQU.s 46 | Equivalence | 11 | | 0 | 00/43A6 | GMARKCMD EQU $CF 676 | 4 MAINMEM.FSEQU.s 47 | Equivalence | 11 | | 0 | 00/43A6 | GEOFCMD EQU $D1 677 | 4 MAINMEM.FSEQU.s 48 | Empty | 11 | | 0 | 00/43A6 | 678 | 4 MAINMEM.FSEQU.s 49 | Empty | 11 | | 0 | 00/43A6 | 679 | 4 MAINMEM.FSEQU.s 50 | Empty | 11 | | 0 | 00/43A6 | 680 | 4 MAINMEM.FSEQU.s 51 | Empty | 11 | | 0 | 00/43A6 | 681 | 4 MAINMEM.FSEQU.s 52 | Empty | 11 | | 0 | 00/43A6 | 682 | 4 MAINMEM.FSEQU.s 53 | Empty | 11 | | 0 | 00/43A6 | 683 | 4 MAINMEM.FSEQU.s 54 | Empty | 11 | | 0 | 00/43A6 | 684 | 4 MAINMEM.FSEQU.s 55 | Empty | 11 | | 0 | 00/43A6 | 685 | 4 MAINMEM.FSEQU.s 56 | Empty | 11 | | 0 | 00/43A6 | 686 | 4 MAINMEM.FSEQU.s 57 | Empty | 11 | | 0 | 00/43A6 | 687 | 4 MAINMEM.FSEQU.s 58 | Empty | 11 | | 0 | 00/43A6 | 688 | 4 MAINMEM.FSEQU.s 59 | Empty | 11 | | 0 | 00/43A6 | 689 | 4 MAINMEM.FSEQU.s 60 | Empty | 11 | | 0 | 00/43A6 | 690 | 4 MAINMEM.FSEQU.s 61 | Empty | 11 | | 0 | 00/43A6 | 691 | 4 MAINMEM.FSEQU.s 62 | Empty | 11 | | 0 | 00/43A6 | 692 | 4 MAINMEM.FSEQU.s 63 | Empty | 11 | | 0 | 00/43A6 | 693 | 4 MAINMEM.FSEQU.s 64 | Empty | 11 | | 0 | 00/43A6 | 694 | 4 MAINMEM.FSEQU.s 65 | Empty | 11 | | 0 | 00/43A6 | 695 | 4 MAINMEM.FSEQU.s 66 | Empty | 11 | | 0 | 00/43A6 | 696 | 4 MAINMEM.FSEQU.s 67 | Empty | 11 | | 0 | 00/43A6 | 697 | 4 MAINMEM.FSEQU.s 68 | Empty | 11 | | 0 | 00/43A6 | 698 | 4 MAINMEM.FSEQU.s 69 | Empty | 11 | | 0 | 00/43A6 | 699 | 4 MAINMEM.FSEQU.s 70 | Empty | 11 | | 0 | 00/43A6 | 700 | 4 MAINMEM.FSEQU.s 71 | Empty | 11 | | 0 | 00/43A6 | 701 | 4 MAINMEM.FSEQU.s 72 | Empty | 11 | | 0 | 00/43A6 | 702 | 4 MAINMEM.FSEQU.s 73 | Empty | 11 | | 0 | 00/43A6 | 703 | 4 MAINMEM.FSEQU.s 74 | Empty | 11 | | 0 | 00/43A6 | 704 | 4 MAINMEM.FSEQU.s 75 | Empty | 11 | | 0 | 00/43A6 | 705 | 4 MAINMEM.FSEQU.s 76 | Empty | 11 | | 0 | 00/43A6 | 706 | 4 MAINMEM.FSEQU.s 77 | Empty | 11 | | 0 | 00/43A6 | 707 | 4 MAINMEM.FSEQU.s 78 | Empty | 11 | | 0 | 00/43A6 | 708 | 4 MAINMEM.FSEQU.s 79 | Empty | 11 | | 0 | 00/43A6 | 709 | 4 MAINMEM.FSEQU.s 80 | Empty | 11 | | 0 | 00/43A6 | 710 | 4 MAINMEM.FSEQU.s 81 | Empty | 11 | | 0 | 00/43A6 | 711 | 4 MAINMEM.FSEQU.s 82 | Empty | 11 | | 0 | 00/43A6 | 712 | 4 MAINMEM.FSEQU.s 83 | Empty | 11 | | 0 | 00/43A6 | 713 | 4 MAINMEM.FSEQU.s 84 | Empty | 11 | | 0 | 00/43A6 | 714 | 4 MAINMEM.FSEQU.s 85 | Empty | 11 | | 0 | 00/43A6 | 715 | 4 MAINMEM.FSEQU.s 86 | Empty | 11 | | 0 | 00/43A6 | 716 | 4 MAINMEM.FSEQU.s 87 | Empty | 11 | | 0 | 00/43A6 | 717 | 4 MAINMEM.FSEQU.s 88 | Empty | 11 | | 0 | 00/43A6 | 718 | 4 MAINMEM.FSEQU.s 89 | Empty | 11 | | 0 | 00/43A6 | 719 | 4 MAINMEM.FSEQU.s 90 | Empty | 11 | | 0 | 00/43A6 | 720 | 4 MAINMEM.FSEQU.s 91 | Empty | 11 | | 0 | 00/43A6 | 721 | 4 MAINMEM.FSEQU.s 92 | Empty | 11 | | 0 | 00/43A6 | 722 | 4 MAINMEM.FSEQU.s 93 | Empty | 11 | | 0 | 00/43A6 | 723 | 4 MAINMEM.FSEQU.s 94 | Empty | 11 | | 0 | 00/43A6 | 724 | 4 MAINMEM.FSEQU.s 95 | Empty | 11 | | 0 | 00/43A6 | 725 | 1 applecorn.s 192 | Directive | 11 | | 0 | 00/43A6 | PUT MAINMEM.INIT 726 | 5 MAINMEM.INIT.s 1 | Comment | 11 | | 0 | 00/43A6 | * MAINMEM.INIT.S 727 | 5 MAINMEM.INIT.s 2 | Comment | 11 | | 0 | 00/43A6 | * (c) Bobbi 2021 GPLv3 728 | 5 MAINMEM.INIT.s 3 | Comment | 11 | | 0 | 00/43A6 | * 729 | 5 MAINMEM.INIT.s 4 | Comment | 11 | | 0 | 00/43A6 | * Initialization, interrupt handling and reset handling code 730 | 5 MAINMEM.INIT.s 5 | Comment | 11 | | 0 | 00/43A6 | * that resides in main memory. 731 | 5 MAINMEM.INIT.s 6 | Empty | 11 | | 0 | 00/43A6 | 732 | 5 MAINMEM.INIT.s 7 | Comment | 11 | | 0 | 00/43A6 | * 14-Nov-2021 If started from CSD, gets prefix to CMDBUF. 733 | 5 MAINMEM.INIT.s 8 | Empty | 11 | | 0 | 00/43A6 | 734 | 5 MAINMEM.INIT.s 9 | Empty | 11 | | 0 | 00/43A6 | 735 | 5 MAINMEM.INIT.s 10 | Comment | 11 | | 0 | 00/43A6 | * Trampoline in main memory used by aux memory IRQ handler 736 | 5 MAINMEM.INIT.s 11 | Comment | 11 | | 0 | 00/43A6 | * to invoke Apple II / ProDOS IRQs in main memory 737 | 5 MAINMEM.INIT.s 12 | Macro | 11 | | 0 | 00/43A6 | A2IRQ >>> IENTMAIN ; IENTMAIN does not do CLI 738 | 5 MAINMEM.INIT.s 12 | Code | 11 | | 1 | 00/43A6 : 9A | TXS ; Main SP already in X 739 | 5 MAINMEM.INIT.s 12 | Code | 11 | | 3 | 00/43A7 : AE 81 C0 | LDX $C081 ; Bank in ROM 740 | 5 MAINMEM.INIT.s 12 | Code | 11 | | 3 | 00/43AA : AE 81 C0 | LDX $C081 741 | 5 MAINMEM.INIT.s 13 | Code | 11 | | 3 | 00/43AD : 20 C8 43 | JSR A2IRQ2 742 | 5 MAINMEM.INIT.s 14 | Macro | 11 | | 0 | 00/43B0 | >>> XF2AUX,IRQBRKRET 743 | 5 MAINMEM.INIT.s 14 | Code | 11 | | 3 | 00/43B0 : AE 8B C0 | LDX $C08B ; R/W LC RAM, bank 1 744 | 5 MAINMEM.INIT.s 14 | Code | 11 | | 3 | 00/43B3 : AE 8B C0 | LDX $C08B 745 | 5 MAINMEM.INIT.s 14 | Code | 11 | | 2 | 00/43B6 : A2 82 | LDX #IRQBRKRET 748 | 5 MAINMEM.INIT.s 14 | Code | 11 | | 3 | 00/43BD : 8E EE 03 | STX {$3EE} 749 | 5 MAINMEM.INIT.s 14 | Code | 11 | | 1 | 00/43C0 : 78 | SEI ; Disable IRQ before XFER 750 | 5 MAINMEM.INIT.s 14 | Code | 11 | | 1 | 00/43C1 : 38 | SEC ; Use aux memory 751 | 5 MAINMEM.INIT.s 14 | Code | 11 | | 3 | 00/43C2 : 2C 58 FF | BIT $FF58 ; Set V: use alt ZP and LC 752 | 5 MAINMEM.INIT.s 14 | Code | 11 | | 3 | 00/43C5 : 4C 14 C3 | JMP {$C314} 753 | 5 MAINMEM.INIT.s 15 | Code | 11 | | 1 | 00/43C8 : 08 | A2IRQ2 PHP ; Fake things to look like IRQ 754 | 5 MAINMEM.INIT.s 16 | Code | 11 | | 3 | 00/43C9 : 6C FE 03 | JMP ({$3FE}) ; Call Apple II ProDOS ISR 755 | 5 MAINMEM.INIT.s 17 | Empty | 11 | | 0 | 00/43CC | 756 | 5 MAINMEM.INIT.s 18 | Comment | 11 | | 0 | 00/43CC | * BRK handler in main memory. Used on Apple IIgs only. 757 | 5 MAINMEM.INIT.s 19 | Macro | 11 | | 0 | 00/43CC | GSBRK >>> XF2AUX,GSBRKAUX 758 | 5 MAINMEM.INIT.s 19 | Code | 11 | | 3 | 00/43CC : AE 8B C0 | LDX $C08B ; R/W LC RAM, bank 1 759 | 5 MAINMEM.INIT.s 19 | Code | 11 | | 3 | 00/43CF : AE 8B C0 | LDX $C08B 760 | 5 MAINMEM.INIT.s 19 | Code | 11 | | 2 | 00/43D2 : A2 2B | LDX #GSBRKAUX 763 | 5 MAINMEM.INIT.s 19 | Code | 11 | | 3 | 00/43D9 : 8E EE 03 | STX {$3EE} 764 | 5 MAINMEM.INIT.s 19 | Code | 11 | | 1 | 00/43DC : 78 | SEI ; Disable IRQ before XFER 765 | 5 MAINMEM.INIT.s 19 | Code | 11 | | 1 | 00/43DD : 38 | SEC ; Use aux memory 766 | 5 MAINMEM.INIT.s 19 | Code | 11 | | 3 | 00/43DE : 2C 58 FF | BIT $FF58 ; Set V: use alt ZP and LC 767 | 5 MAINMEM.INIT.s 19 | Code | 11 | | 3 | 00/43E1 : 4C 14 C3 | JMP {$C314} 768 | 5 MAINMEM.INIT.s 20 | Empty | 11 | | 0 | 00/43E4 | 769 | 5 MAINMEM.INIT.s 21 | Comment | 11 | | 0 | 00/43E4 | * Set prefix if not already set 770 | 5 MAINMEM.INIT.s 22 | Code | 11 | | 2 | 00/43E4 : A9 C7 | SETPRFX LDA #{$C7} 771 | 5 MAINMEM.INIT.s 23 | Code | 11 | | 3 | 00/43E6 : 8D EC 43 | STA _OPC7 ; Initialize cmd byte to $C7 772 | 5 MAINMEM.INIT.s 24 | Code | 11 | | 3 | 00/43E9 : 20 00 BF | ozunid_12 JSR {$BF00} 773 | 5 MAINMEM.INIT.s 25 | Data | 11 | | 1 | 00/43EC : 00 | _OPC7 DB $00 774 | 5 MAINMEM.INIT.s 26 | Data | 11 | | 2 | 00/43ED : AC 56 | DW GSPFXPL 775 | 5 MAINMEM.INIT.s 27 | Code | 11 | | 3 | 00/43EF : AE 3E 02 | LDX {$023E} ; was $0300 776 | 5 MAINMEM.INIT.s 28 | Code | 11 | | 2 | 00/43F2 : D0 20 | BNE RTSINST 777 | 5 MAINMEM.INIT.s 29 | Code | 11 | | 3 | 00/43F4 : AD 30 BF | LDA $BF30 778 | 5 MAINMEM.INIT.s 30 | Code | 11 | | 3 | 00/43F7 : 8D A9 56 | STA ONLNPL+1 ; Device number 779 | 5 MAINMEM.INIT.s 31 | Code | 11 | | 3 | 00/43FA : 20 00 BF | JSR {$BF00} 780 | 5 MAINMEM.INIT.s 32 | Data | 11 | | 1 | 00/43FD : C5 | DB {$C5} 781 | 5 MAINMEM.INIT.s 33 | Data | 11 | | 2 | 00/43FE : A8 56 | DW ONLNPL 782 | 5 MAINMEM.INIT.s 34 | Code | 11 | | 3 | 00/4400 : AD 3F 02 | LDA {$023F} ; was $0301 783 | 5 MAINMEM.INIT.s 35 | Code | 11 | | 2 | 00/4403 : 29 0F | AND #$0F 784 | 5 MAINMEM.INIT.s 36 | Code | 11 | | 1 | 00/4405 : AA | TAX 785 | 5 MAINMEM.INIT.s 37 | Code | 11 | | 1 | 00/4406 : E8 | INX 786 | 5 MAINMEM.INIT.s 38 | Code | 11 | | 3 | 00/4407 : 8E 3E 02 | STX {$023E} ; was $0300 787 | 5 MAINMEM.INIT.s 39 | Code | 11 | | 2 | 00/440A : A9 2F | LDA #'/' 788 | 5 MAINMEM.INIT.s 40 | Code | 11 | | 3 | 00/440C : 8D 3F 02 | STA {$023F} ; was $0301 789 | 5 MAINMEM.INIT.s 41 | Code | 11 | | 3 | 00/440F : CE EC 43 | DEC _OPC7 790 | 5 MAINMEM.INIT.s 42 | Code | 11 | | 2 | 00/4412 : D0 D5 | BNE ozunid_12 791 | 5 MAINMEM.INIT.s 43 | Code | 11 | | 3 | 00/4414 : AD 80 02 | RTSINST LDA {$0280} 792 | 5 MAINMEM.INIT.s 44 | Code | 11 | | 2 | 00/4417 : F0 07 | BEQ _GETPFX ; CMDPATH empty 793 | 5 MAINMEM.INIT.s 45 | Code | 11 | | 3 | 00/4419 : AD 81 02 | LDA {$0280}+1 794 | 5 MAINMEM.INIT.s 46 | Code | 11 | | 2 | 00/441C : C9 2F | CMP #'/' 795 | 5 MAINMEM.INIT.s 47 | Code | 11 | | 2 | 00/441E : F0 06 | BEQ _GETPFXDONE ; CMDPATH already absolute path 796 | 5 MAINMEM.INIT.s 48 | Code | 11 | | 3 | 00/4420 : 20 00 BF | _GETPFX JSR {$BF00} 797 | 5 MAINMEM.INIT.s 49 | Data | 11 | | 1 | 00/4423 : C7 | DB $C7 ; Get Prefix 798 | 5 MAINMEM.INIT.s 50 | Data | 11 | | 2 | 00/4424 : 27 44 | DW _GETADDR 799 | 5 MAINMEM.INIT.s 51 | Code | 11 | | 1 | 00/4426 : 60 | _GETPFXDONE RTS 800 | 5 MAINMEM.INIT.s 52 | Data | 11 | | 1 | 00/4427 : 01 | _GETADDR HEX 01 ; One parameter 801 | 5 MAINMEM.INIT.s 53 | Data | 11 | | 2 | 00/4428 : 80 02 | DW {$0280} ; Get prefix to CMDPATH 802 | 5 MAINMEM.INIT.s 54 | Empty | 11 | | 0 | 00/442A | 803 | 5 MAINMEM.INIT.s 55 | Empty | 11 | | 0 | 00/442A | 804 | 5 MAINMEM.INIT.s 56 | Comment | 11 | | 0 | 00/442A | * Disconnect /RAM ramdrive to avoid aux corruption 805 | 5 MAINMEM.INIT.s 57 | Comment | 11 | | 0 | 00/442A | * Stolen from Beagle Bros Extra K 806 | 5 MAINMEM.INIT.s 58 | Code | 11 | | 3 | 00/442A : AD 98 BF | DISCONN LDA $BF98 807 | 5 MAINMEM.INIT.s 59 | Code | 11 | | 2 | 00/442D : 29 30 | AND #$30 808 | 5 MAINMEM.INIT.s 60 | Code | 11 | | 2 | 00/442F : C9 30 | CMP #$30 809 | 5 MAINMEM.INIT.s 61 | Code | 11 | | 2 | 00/4431 : D0 4D | BNE ozunid_18 810 | 5 MAINMEM.INIT.s 62 | Code | 11 | | 3 | 00/4433 : AD 26 BF | LDA $BF26 811 | 5 MAINMEM.INIT.s 63 | Code | 11 | | 3 | 00/4436 : CD 10 BF | CMP $BF10 812 | 5 MAINMEM.INIT.s 64 | Code | 11 | | 2 | 00/4439 : D0 08 | BNE ozunid_13 813 | 5 MAINMEM.INIT.s 65 | Code | 11 | | 3 | 00/443B : AD 27 BF | LDA $BF27 814 | 5 MAINMEM.INIT.s 66 | Code | 11 | | 3 | 00/443E : CD 11 BF | CMP $BF11 815 | 5 MAINMEM.INIT.s 67 | Code | 11 | | 2 | 00/4441 : F0 3D | BEQ ozunid_18 816 | 5 MAINMEM.INIT.s 68 | Code | 11 | | 3 | 00/4443 : AC 31 BF | ozunid_13 LDY $BF31 817 | 5 MAINMEM.INIT.s 69 | Code | 11 | | 3 | 00/4446 : B9 32 BF | ozunid_14 LDA $BF32,Y 818 | 5 MAINMEM.INIT.s 70 | Code | 11 | | 2 | 00/4449 : 29 F3 | AND #$F3 819 | 5 MAINMEM.INIT.s 71 | Code | 11 | | 2 | 00/444B : C9 B3 | CMP #$B3 820 | 5 MAINMEM.INIT.s 72 | Code | 11 | | 2 | 00/444D : F0 05 | BEQ ozunid_15 821 | 5 MAINMEM.INIT.s 73 | Code | 11 | | 1 | 00/444F : 88 | DEY 822 | 5 MAINMEM.INIT.s 74 | Code | 11 | | 2 | 00/4450 : 10 F4 | BPL ozunid_14 823 | 5 MAINMEM.INIT.s 75 | Code | 11 | | 2 | 00/4452 : 30 2C | BMI ozunid_18 824 | 5 MAINMEM.INIT.s 76 | Code | 11 | | 3 | 00/4454 : B9 32 BF | ozunid_15 LDA $BF32,Y 825 | 5 MAINMEM.INIT.s 77 | Code | 11 | | 3 | 00/4457 : 8D 40 02 | STA {$023F}+1 ; was $0302 826 | 5 MAINMEM.INIT.s 78 | Code | 11 | | 3 | 00/445A : B9 33 BF | ozunid_16 LDA $BF33,Y 827 | 5 MAINMEM.INIT.s 79 | Code | 11 | | 3 | 00/445D : 99 32 BF | STA $BF32,Y 828 | 5 MAINMEM.INIT.s 80 | Code | 11 | | 2 | 00/4460 : F0 03 | BEQ ozunid_17 829 | 5 MAINMEM.INIT.s 81 | Code | 11 | | 1 | 00/4462 : C8 | INY 830 | 5 MAINMEM.INIT.s 82 | Code | 11 | | 2 | 00/4463 : D0 F5 | BNE ozunid_16 831 | 5 MAINMEM.INIT.s 83 | Code | 11 | | 3 | 00/4465 : AD 26 BF | ozunid_17 LDA $BF26 832 | 5 MAINMEM.INIT.s 84 | Code | 11 | | 3 | 00/4468 : 8D 3E 02 | STA {$023E} ; was $0300 833 | 5 MAINMEM.INIT.s 85 | Code | 11 | | 3 | 00/446B : AD 27 BF | LDA $BF27 834 | 5 MAINMEM.INIT.s 86 | Code | 11 | | 3 | 00/446E : 8D 3F 02 | STA {$023F} ; was $0301 835 | 5 MAINMEM.INIT.s 87 | Code | 11 | | 3 | 00/4471 : AD 10 BF | LDA $BF10 836 | 5 MAINMEM.INIT.s 88 | Code | 11 | | 3 | 00/4474 : 8D 26 BF | STA $BF26 837 | 5 MAINMEM.INIT.s 89 | Code | 11 | | 3 | 00/4477 : AD 11 BF | LDA $BF11 838 | 5 MAINMEM.INIT.s 90 | Code | 11 | | 3 | 00/447A : 8D 27 BF | STA $BF27 839 | 5 MAINMEM.INIT.s 91 | Code | 11 | | 3 | 00/447D : CE 31 BF | DEC $BF31 840 | 5 MAINMEM.INIT.s 92 | Code | 11 | | 1 | 00/4480 : 60 | ozunid_18 RTS 841 | 5 MAINMEM.INIT.s 93 | Empty | 11 | | 0 | 00/4481 | 842 | 5 MAINMEM.INIT.s 94 | Comment | 11 | | 0 | 00/4481 | * Reset handler - invoked on Ctrl-Reset 843 | 5 MAINMEM.INIT.s 95 | Comment | 11 | | 0 | 00/4481 | * XFER to AUXMOS ($C000) in aux, AuxZP on, LC on 844 | 5 MAINMEM.INIT.s 96 | Code | 11 | | 1 | 00/4481 : BA | RESET TSX 845 | 5 MAINMEM.INIT.s 97 | Code | 11 | | 3 | 00/4482 : 8E 00 01 | STX $0100 846 | 5 MAINMEM.INIT.s 98 | Code | 11 | | 3 | 00/4485 : AD 58 C0 | LDA $C058 ; AN0 off 847 | 5 MAINMEM.INIT.s 99 | Code | 11 | | 3 | 00/4488 : AD 5A C0 | LDA $C05A ; AN1 off 848 | 5 MAINMEM.INIT.s 100 | Code | 11 | | 3 | 00/448B : AD 5D C0 | LDA $C05D ; AN2 on 849 | 5 MAINMEM.INIT.s 101 | Code | 11 | | 3 | 00/448E : AD 5F C0 | LDA $C05F ; AN3 on 850 | 5 MAINMEM.INIT.s 102 | Code | 11 | | 2 | 00/4491 : A9 20 | LDA #$20 ; Turn off PAGE2 shadow on ROM3 GS 851 | 5 MAINMEM.INIT.s 103 | Code | 11 | | 3 | 00/4493 : 0C 35 C0 | TSB $C035 852 | 5 MAINMEM.INIT.s 104 | Macro | 11 | | 0 | 00/4496 | >>> XF2AUX,{$D000} 853 | 5 MAINMEM.INIT.s 104 | Code | 11 | | 3 | 00/4496 : AE 8B C0 | LDX $C08B ; R/W LC RAM, bank 1 854 | 5 MAINMEM.INIT.s 104 | Code | 11 | | 3 | 00/4499 : AE 8B C0 | LDX $C08B 855 | 5 MAINMEM.INIT.s 104 | Code | 11 | | 2 | 00/449C : A2 00 | LDX #<{$D000} 856 | 5 MAINMEM.INIT.s 104 | Code | 11 | | 3 | 00/449E : 8E ED 03 | STX {$3ED} 857 | 5 MAINMEM.INIT.s 104 | Code | 11 | | 2 | 00/44A1 : A2 D0 | LDX #>{$D000} 858 | 5 MAINMEM.INIT.s 104 | Code | 11 | | 3 | 00/44A3 : 8E EE 03 | STX {$3EE} 859 | 5 MAINMEM.INIT.s 104 | Code | 11 | | 1 | 00/44A6 : 78 | SEI ; Disable IRQ before XFER 860 | 5 MAINMEM.INIT.s 104 | Code | 11 | | 1 | 00/44A7 : 38 | SEC ; Use aux memory 861 | 5 MAINMEM.INIT.s 104 | Code | 11 | | 3 | 00/44A8 : 2C 58 FF | BIT $FF58 ; Set V: use alt ZP and LC 862 | 5 MAINMEM.INIT.s 104 | Code | 11 | | 3 | 00/44AB : 4C 14 C3 | JMP {$C314} 863 | 5 MAINMEM.INIT.s 105 | Code | 11 | | 1 | 00/44AE : 60 | RTS 864 | 5 MAINMEM.INIT.s 106 | Empty | 11 | | 0 | 00/44AF | 865 | 5 MAINMEM.INIT.s 107 | Empty | 11 | | 0 | 00/44AF | 866 | 1 applecorn.s 193 | Directive | 11 | | 0 | 00/44AF | PUT MAINMEM.SVC 867 | 6 MAINMEM.SVC.s 1 | Comment | 11 | | 0 | 00/44AF | * MAINMEM.SVC.S 868 | 6 MAINMEM.SVC.s 2 | Comment | 11 | | 0 | 00/44AF | * (c) Bobbi 2021 GPLv3 869 | 6 MAINMEM.SVC.s 3 | Comment | 11 | | 0 | 00/44AF | * 870 | 6 MAINMEM.SVC.s 4 | Comment | 11 | | 0 | 00/44AF | * Main memory entry points called by Applecorn MOS running in 871 | 6 MAINMEM.SVC.s 5 | Comment | 11 | | 0 | 00/44AF | * aux memory. Each entry point performs some ProDOS service, 872 | 6 MAINMEM.SVC.s 6 | Comment | 11 | | 0 | 00/44AF | * then returns to aux memory. 873 | 6 MAINMEM.SVC.s 7 | Empty | 11 | | 0 | 00/44AF | 874 | 6 MAINMEM.SVC.s 8 | Comment | 11 | | 0 | 00/44AF | * 12-Oct-2021 OSFIND exits with bad filename, allows OPENIN(dir), 875 | 6 MAINMEM.SVC.s 9 | Comment | 11 | | 0 | 00/44AF | * exits with MFI error, returns error if no more buffers, 876 | 6 MAINMEM.SVC.s 10 | Comment | 11 | | 0 | 00/44AF | * OPENOUT doesn't try to delete if nothing to delete. 877 | 6 MAINMEM.SVC.s 11 | Comment | 11 | | 0 | 00/44AF | * 13-Oct-2021 OSFIND implementes CLOSE#0. 878 | 6 MAINMEM.SVC.s 12 | Comment | 11 | | 0 | 00/44AF | * 13-Oct-2021 FIND, BGET, BPUT optimised passing registers to main. 879 | 6 MAINMEM.SVC.s 13 | Comment | 11 | | 0 | 00/44AF | * 13-Oct-2021 ARGS, EOF returns errors, optimised. 880 | 6 MAINMEM.SVC.s 14 | Comment | 11 | | 0 | 00/44AF | * 15-Oct-2021 LOADFILE updated. 881 | 6 MAINMEM.SVC.s 15 | Comment | 11 | | 0 | 00/44AF | * 16-Oct-2021 LOADFILE only reads object info once. 882 | 6 MAINMEM.SVC.s 16 | Comment | 11 | | 0 | 00/44AF | * 17-Oct-2021 SAVEFILE updated. 883 | 6 MAINMEM.SVC.s 17 | Comment | 11 | | 0 | 00/44AF | * 18-Oct-2021 Optimised CREATE, removed dead code, RDDATA and WRDATA. 884 | 6 MAINMEM.SVC.s 18 | Comment | 11 | | 0 | 00/44AF | * 23-Oct-2021 Moved all the OSFILE routines together. 885 | 6 MAINMEM.SVC.s 19 | Comment | 11 | | 0 | 00/44AF | * Optimised entry and return from OSFILE routines. 886 | 6 MAINMEM.SVC.s 20 | Comment | 11 | | 0 | 00/44AF | * DELETE returns 'Dir not empty' when appropriate. 887 | 6 MAINMEM.SVC.s 21 | Comment | 11 | | 0 | 00/44AF | * 29-Oct-2021 DRVINFO reads current drive if "". 888 | 6 MAINMEM.SVC.s 22 | Comment | 11 | | 0 | 00/44AF | * 01-Nov-2021 DRVINFO checks reading info on a root directory. 889 | 6 MAINMEM.SVC.s 23 | Comment | 11 | | 0 | 00/44AF | * 02-Nov-2021 SETPERMS passed parsed access byte. 890 | 6 MAINMEM.SVC.s 24 | Comment | 11 | | 0 | 00/44AF | * 03-Nov-2021 Optimised CAT/EX/INFO, DESTROY. 891 | 6 MAINMEM.SVC.s 25 | Comment | 11 | | 0 | 00/44AF | * *BUG* RENAME won't rename between directories, eg RENAME CHARS VDU/CHARS. 892 | 6 MAINMEM.SVC.s 26 | Empty | 11 | | 0 | 00/44AF | 893 | 6 MAINMEM.SVC.s 27 | Empty | 11 | | 0 | 00/44AF | 894 | 6 MAINMEM.SVC.s 28 | Comment | 11 | | 0 | 00/44AF | * ProDOS file handling to rename a file 895 | 6 MAINMEM.SVC.s 29 | Macro | 11 | | 0 | 00/44AF | RENFILE >>> ENTMAIN 896 | 6 MAINMEM.SVC.s 29 | Code | 11 | | 1 | 00/44AF : 9A | TXS ; Main SP already in X 897 | 6 MAINMEM.SVC.s 29 | Code | 11 | | 3 | 00/44B0 : AE 81 C0 | LDX $C081 ; Bank in ROM 898 | 6 MAINMEM.SVC.s 29 | Code | 11 | | 3 | 00/44B3 : AE 81 C0 | LDX $C081 899 | 6 MAINMEM.SVC.s 29 | Code | 11 | | 1 | 00/44B6 : 58 | CLI ; Re-enable IRQ after XFER 900 | 6 MAINMEM.SVC.s 30 | Code | 11 | | 3 | 00/44B7 : 20 10 51 | JSR PREPATH ; Preprocess arg1 901 | 6 MAINMEM.SVC.s 31 | Code | 11 | | 3 | 00/44BA : 20 90 52 | JSR MFtoTMP ; Stash arg1 902 | 6 MAINMEM.SVC.s 32 | Code | 11 | | 3 | 00/44BD : 20 E0 52 | JSR COPYMF21 ; Copy arg2 903 | 6 MAINMEM.SVC.s 33 | Code | 11 | | 3 | 00/44C0 : 20 10 51 | JSR PREPATH ; Preprocess arg2 904 | 6 MAINMEM.SVC.s 34 | Code | 11 | | 3 | 00/44C3 : 20 CC 52 | JSR COPYMF12 ; Put it back in MOSFILE2 905 | 6 MAINMEM.SVC.s 35 | Code | 11 | | 3 | 00/44C6 : 20 A4 52 | JSR TMPtoMF ; Recover arg1->MOSFILE 906 | 6 MAINMEM.SVC.s 36 | Code | 11 | | 2 | 00/44C9 : A9 00 | LDA #<{{$0300}} 907 | 6 MAINMEM.SVC.s 37 | Code | 11 | | 3 | 00/44CB : 8D 78 56 | STA RENPL+1 908 | 6 MAINMEM.SVC.s 38 | Code | 11 | | 2 | 00/44CE : A9 03 | LDA #>{{$0300}} 909 | 6 MAINMEM.SVC.s 39 | Code | 11 | | 3 | 00/44D0 : 8D 79 56 | STA RENPL+2 910 | 6 MAINMEM.SVC.s 40 | Code | 11 | | 2 | 00/44D3 : A9 41 | LDA #<{$0341} 911 | 6 MAINMEM.SVC.s 41 | Code | 11 | | 3 | 00/44D5 : 8D 7A 56 | STA RENPL+3 912 | 6 MAINMEM.SVC.s 42 | Code | 11 | | 2 | 00/44D8 : A9 03 | LDA #>{$0341} 913 | 6 MAINMEM.SVC.s 43 | Code | 11 | | 3 | 00/44DA : 8D 7B 56 | STA RENPL+4 914 | 6 MAINMEM.SVC.s 44 | Code | 11 | | 3 | 00/44DD : 20 00 BF | JSR {$BF00} 915 | 6 MAINMEM.SVC.s 45 | Data | 11 | | 1 | 00/44E0 : C2 | DB {$C2} 916 | 6 MAINMEM.SVC.s 46 | Data | 11 | | 2 | 00/44E1 : 77 56 | DW RENPL 917 | 6 MAINMEM.SVC.s 47 | Macro | 11 | | 0 | 00/44E3 | >>> XF2AUX,RENRET 918 | 6 MAINMEM.SVC.s 47 | Code | 11 | | 3 | 00/44E3 : AE 8B C0 | LDX $C08B ; R/W LC RAM, bank 1 919 | 6 MAINMEM.SVC.s 47 | Code | 11 | | 3 | 00/44E6 : AE 8B C0 | LDX $C08B 920 | 6 MAINMEM.SVC.s 47 | Code | 11 | | 2 | 00/44E9 : A2 2D | LDX #RENRET 923 | 6 MAINMEM.SVC.s 47 | Code | 11 | | 3 | 00/44F0 : 8E EE 03 | STX {$3EE} 924 | 6 MAINMEM.SVC.s 47 | Code | 11 | | 1 | 00/44F3 : 78 | SEI ; Disable IRQ before XFER 925 | 6 MAINMEM.SVC.s 47 | Code | 11 | | 1 | 00/44F4 : 38 | SEC ; Use aux memory 926 | 6 MAINMEM.SVC.s 47 | Code | 11 | | 3 | 00/44F5 : 2C 58 FF | BIT $FF58 ; Set V: use alt ZP and LC 927 | 6 MAINMEM.SVC.s 47 | Code | 11 | | 3 | 00/44F8 : 4C 14 C3 | JMP {$C314} 928 | 6 MAINMEM.SVC.s 48 | Empty | 11 | | 0 | 00/44FB | 929 | 6 MAINMEM.SVC.s 49 | Comment | 11 | | 0 | 00/44FB | * ProDOS file handling for file copying 930 | 6 MAINMEM.SVC.s 50 | Comment | 11 | | 0 | 00/44FB | * Returns with ProDOS error code in A 931 | 6 MAINMEM.SVC.s 51 | Macro | 11 | | 0 | 00/44FB | COPYFILE >>> ENTMAIN 932 | 6 MAINMEM.SVC.s 51 | Code | 11 | | 1 | 00/44FB : 9A | TXS ; Main SP already in X 933 | 6 MAINMEM.SVC.s 51 | Code | 11 | | 3 | 00/44FC : AE 81 C0 | LDX $C081 ; Bank in ROM 934 | 6 MAINMEM.SVC.s 51 | Code | 11 | | 3 | 00/44FF : AE 81 C0 | LDX $C081 935 | 6 MAINMEM.SVC.s 51 | Code | 11 | | 1 | 00/4502 : 58 | CLI ; Re-enable IRQ after XFER 936 | 6 MAINMEM.SVC.s 52 | Code | 11 | | 3 | 00/4503 : 20 90 52 | JSR MFtoTMP ; Swap MOSFILE & MOSFILE2 937 | 6 MAINMEM.SVC.s 53 | Code | 11 | | 3 | 00/4506 : 20 E0 52 | JSR COPYMF21 938 | 6 MAINMEM.SVC.s 54 | Code | 11 | | 3 | 00/4509 : 20 B8 52 | JSR TMPtoMF2 939 | 6 MAINMEM.SVC.s 55 | Code | 11 | | 3 | 00/450C : 20 10 51 | JSR PREPATH ; Preprocess arg2 (in MOSFILE) 940 | 6 MAINMEM.SVC.s 56 | Code | 11 | | 3 | 00/450F : 20 8A 53 | JSR WILDONE ; Handle any wildcards 941 | 6 MAINMEM.SVC.s 57 | Code | 11 | | 3 | 00/4512 : 20 5C 57 | JSR EXISTS ; See if destination exists 942 | 6 MAINMEM.SVC.s 58 | Code | 11 | | 3 | 00/4515 : 8D BC 45 | STA _DESTTYPE ; Stash for later 943 | 6 MAINMEM.SVC.s 59 | Code | 11 | | 3 | 00/4518 : 20 90 52 | JSR MFtoTMP ; Swap MOSFILE & MOSFILE2 again 944 | 6 MAINMEM.SVC.s 60 | Code | 11 | | 3 | 00/451B : 20 E0 52 | JSR COPYMF21 945 | 6 MAINMEM.SVC.s 61 | Code | 11 | | 3 | 00/451E : 20 B8 52 | JSR TMPtoMF2 946 | 6 MAINMEM.SVC.s 62 | Code | 11 | | 3 | 00/4521 : 20 10 51 | JSR PREPATH ; Preprocess arg1 947 | 6 MAINMEM.SVC.s 63 | Code | 11 | | 1 | 00/4524 : 38 | SEC ; Force wildcard lookup 948 | 6 MAINMEM.SVC.s 64 | Code | 11 | | 3 | 00/4525 : 20 92 53 | JSR WILDCARD ; Handle any wildcards in arg1 949 | 6 MAINMEM.SVC.s 65 | Code | 11 | | 2 | 00/4528 : B0 76 | BCS ozunid_23 950 | 6 MAINMEM.SVC.s 66 | Code | 11 | | 3 | 00/452A : 20 73 54 | JSR HASWILD 951 | 6 MAINMEM.SVC.s 67 | Code | 11 | | 2 | 00/452D : 90 09 | BCC ozunid_20 ; No wildcards in final segment 952 | 6 MAINMEM.SVC.s 68 | Code | 11 | | 3 | 00/452F : AD BC 45 | LDA _DESTTYPE ; Wildcards, check dest type 953 | 6 MAINMEM.SVC.s 69 | Code | 11 | | 2 | 00/4532 : C9 02 | CMP #$02 ; Existing directory? 954 | 6 MAINMEM.SVC.s 70 | Code | 11 | | 2 | 00/4534 : D0 71 | BNE _BADDEST ; If not, error 955 | 6 MAINMEM.SVC.s 71 | Code | 11 | | 2 | 00/4536 : 80 00 | BRA ozunid_20 ; Source: wildcard, dest: dir 956 | 6 MAINMEM.SVC.s 72 | Empty | 11 | | 0 | 00/4538 | ozunid_19 957 | 6 MAINMEM.SVC.s 73 | Empty | 11 | | 0 | 00/4538 | ozunid_20 958 | 6 MAINMEM.SVC.s 74 | Code | 11 | | 3 | 00/4538 : AD 41 03 | LDA {$0341} ; Length 959 | 6 MAINMEM.SVC.s 75 | Code | 11 | | 3 | 00/453B : 8D BD 45 | STA _OLDLEN 960 | 6 MAINMEM.SVC.s 76 | Code | 11 | | 3 | 00/453E : 20 5C 57 | JSR EXISTS ; See if source is file or dir 961 | 6 MAINMEM.SVC.s 77 | Code | 11 | | 2 | 00/4541 : C9 02 | CMP #$02 ; Directory 962 | 6 MAINMEM.SVC.s 78 | Code | 11 | | 2 | 00/4543 : F0 33 | BEQ _SKIP ; Skip directories 963 | 6 MAINMEM.SVC.s 79 | Code | 11 | | 3 | 00/4545 : AD BC 45 | LDA _DESTTYPE ; Check dest type 964 | 6 MAINMEM.SVC.s 80 | Code | 11 | | 2 | 00/4548 : C9 02 | CMP #$02 ; Existing directory? 965 | 6 MAINMEM.SVC.s 81 | Code | 11 | | 2 | 00/454A : D0 24 | BNE ozunid_21 966 | 6 MAINMEM.SVC.s 82 | Code | 11 | | 3 | 00/454C : AC 41 03 | LDY {$0341} ; Dest idx = length 967 | 6 MAINMEM.SVC.s 83 | Code | 11 | | 3 | 00/454F : B9 41 03 | LDA {$0341},Y ; Get last char 968 | 6 MAINMEM.SVC.s 84 | Code | 11 | | 2 | 00/4552 : C9 2F | CMP #'/' ; Is it slash? 969 | 6 MAINMEM.SVC.s 85 | Code | 11 | | 2 | 00/4554 : F0 06 | BEQ _HASSLSH 970 | 6 MAINMEM.SVC.s 86 | Code | 11 | | 2 | 00/4556 : A9 2F | LDA #'/' ; Add a '/' separator 971 | 6 MAINMEM.SVC.s 87 | Code | 11 | | 3 | 00/4558 : 99 42 03 | STA {$0341}+1,Y 972 | 6 MAINMEM.SVC.s 88 | Code | 11 | | 1 | 00/455B : C8 | INY 973 | 6 MAINMEM.SVC.s 89 | Code | 11 | | 2 | 00/455C : A2 00 | _HASSLSH LDX #$00 ; Source id 974 | 6 MAINMEM.SVC.s 90 | Code | 11 | | 3 | 00/455E : EC 1B 56 | _APPLOOP CPX MATCHBUF ; At end? 975 | 6 MAINMEM.SVC.s 91 | Code | 11 | | 2 | 00/4561 : F0 0A | BEQ _DONEAPP 976 | 6 MAINMEM.SVC.s 92 | Code | 11 | | 3 | 00/4563 : BD 1C 56 | LDA MATCHBUF+1,X ; Appending MATCHBUF to MOSFILE2 977 | 6 MAINMEM.SVC.s 93 | Code | 11 | | 3 | 00/4566 : 99 42 03 | STA {$0341}+1,Y 978 | 6 MAINMEM.SVC.s 94 | Code | 11 | | 1 | 00/4569 : E8 | INX 979 | 6 MAINMEM.SVC.s 95 | Code | 11 | | 1 | 00/456A : C8 | INY 980 | 6 MAINMEM.SVC.s 96 | Code | 11 | | 2 | 00/456B : 80 F1 | BRA _APPLOOP 981 | 6 MAINMEM.SVC.s 97 | Code | 11 | | 3 | 00/456D : 8C 41 03 | _DONEAPP STY {$0341} ; Update length 982 | 6 MAINMEM.SVC.s 98 | Code | 11 | | 3 | 00/4570 : AD BC 45 | ozunid_21 LDA _DESTTYPE ; Recover destination type 983 | 6 MAINMEM.SVC.s 99 | Code | 11 | | 3 | 00/4573 : 20 BE 45 | JSR COPY1FILE ; Copy an individual file 984 | 6 MAINMEM.SVC.s 100 | Code | 11 | | 2 | 00/4576 : B0 3D | BCS _COPYERR 985 | 6 MAINMEM.SVC.s 101 | Code | 11 | | 3 | 00/4578 : 20 F6 53 | _SKIP JSR WILDNEXT 986 | 6 MAINMEM.SVC.s 102 | Code | 11 | | 2 | 00/457B : B0 31 | BCS ozunid_24 987 | 6 MAINMEM.SVC.s 103 | Code | 11 | | 3 | 00/457D : AD BD 45 | LDA _OLDLEN ; Restore MOSFILE2 988 | 6 MAINMEM.SVC.s 104 | Code | 11 | | 3 | 00/4580 : 8D 41 03 | STA {$0341} 989 | 6 MAINMEM.SVC.s 105 | Code | 11 | | 2 | 00/4583 : 80 B3 | BRA ozunid_20 990 | 6 MAINMEM.SVC.s 106 | Code | 11 | | 3 | 00/4585 : 20 01 55 | JSR CLSDIR 991 | 6 MAINMEM.SVC.s 107 | Macro | 11 | | 0 | 00/4588 | ozunid_22 >>> XF2AUX,COPYRET 992 | 6 MAINMEM.SVC.s 107 | Code | 11 | | 3 | 00/4588 : AE 8B C0 | LDX $C08B ; R/W LC RAM, bank 1 993 | 6 MAINMEM.SVC.s 107 | Code | 11 | | 3 | 00/458B : AE 8B C0 | LDX $C08B 994 | 6 MAINMEM.SVC.s 107 | Code | 11 | | 2 | 00/458E : A2 2D | LDX #COPYRET 997 | 6 MAINMEM.SVC.s 107 | Code | 11 | | 3 | 00/4595 : 8E EE 03 | STX {$3EE} 998 | 6 MAINMEM.SVC.s 107 | Code | 11 | | 1 | 00/4598 : 78 | SEI ; Disable IRQ before XFER 999 | 6 MAINMEM.SVC.s 107 | Code | 11 | | 1 | 00/4599 : 38 | SEC ; Use aux memory 1000 | 6 MAINMEM.SVC.s 107 | Code | 11 | | 3 | 00/459A : 2C 58 FF | BIT $FF58 ; Set V: use alt ZP and LC 1001 | 6 MAINMEM.SVC.s 107 | Code | 11 | | 3 | 00/459D : 4C 14 C3 | JMP {$C314} 1002 | 6 MAINMEM.SVC.s 108 | Code | 11 | | 3 | 00/45A0 : 20 01 55 | ozunid_23 JSR CLSDIR 1003 | 6 MAINMEM.SVC.s 109 | Code | 11 | | 2 | 00/45A3 : A9 46 | LDA #$46 ; 'File not found' 1004 | 6 MAINMEM.SVC.s 110 | Code | 11 | | 2 | 00/45A5 : 80 E1 | BRA ozunid_22 1005 | 6 MAINMEM.SVC.s 111 | Code | 11 | | 3 | 00/45A7 : 20 01 55 | _BADDEST JSR CLSDIR 1006 | 6 MAINMEM.SVC.s 112 | Code | 11 | | 2 | 00/45AA : A9 5E | LDA #$5E ; 'Wildcards' error 1007 | 6 MAINMEM.SVC.s 113 | Code | 11 | | 2 | 00/45AC : 80 DA | BRA ozunid_22 1008 | 6 MAINMEM.SVC.s 114 | Code | 11 | | 3 | 00/45AE : 20 01 55 | ozunid_24 JSR CLSDIR 1009 | 6 MAINMEM.SVC.s 115 | Code | 11 | | 2 | 00/45B1 : A9 00 | LDA #$00 1010 | 6 MAINMEM.SVC.s 116 | Code | 11 | | 2 | 00/45B3 : 80 D3 | BRA ozunid_22 1011 | 6 MAINMEM.SVC.s 117 | Code | 11 | | 1 | 00/45B5 : 48 | _COPYERR PHA 1012 | 6 MAINMEM.SVC.s 118 | Code | 11 | | 3 | 00/45B6 : 20 01 55 | JSR CLSDIR 1013 | 6 MAINMEM.SVC.s 119 | Code | 11 | | 1 | 00/45B9 : 68 | PLA 1014 | 6 MAINMEM.SVC.s 120 | Code | 11 | | 2 | 00/45BA : 80 CC | BRA ozunid_22 1015 | 6 MAINMEM.SVC.s 121 | Data | 11 | | 1 | 00/45BC : 00 | _DESTTYPE DB $00 1016 | 6 MAINMEM.SVC.s 122 | Data | 11 | | 1 | 00/45BD : 00 | _OLDLEN DB $00 1017 | 6 MAINMEM.SVC.s 123 | Empty | 11 | | 0 | 00/45BE | 1018 | 6 MAINMEM.SVC.s 124 | Comment | 11 | | 0 | 00/45BE | * Copy a single file 1019 | 6 MAINMEM.SVC.s 125 | Comment | 11 | | 0 | 00/45BE | * Source is in MOSFILE, DEST in MOSFILE2 1020 | 6 MAINMEM.SVC.s 126 | Comment | 11 | | 0 | 00/45BE | * Returns with carry set if error, carry clear otherwise 1021 | 6 MAINMEM.SVC.s 127 | Comment | 11 | | 0 | 00/45BE | * Returns with ProDOS error code in A 1022 | 6 MAINMEM.SVC.s 128 | Comment | 11 | | 0 | 00/45BE | * Buffer COPYBUF is used for the file copy, to avoid trashing 1023 | 6 MAINMEM.SVC.s 129 | Comment | 11 | | 0 | 00/45BE | * directory block in RDBUF (when doing wilcard search) 1024 | 6 MAINMEM.SVC.s 130 | Code | 11 | | 2 | 00/45BE : A9 00 | COPY1FILE LDA #<{{$0300}} 1025 | 6 MAINMEM.SVC.s 131 | Code | 11 | | 3 | 00/45C0 : 8D C0 56 | STA GINFOPL+1 1026 | 6 MAINMEM.SVC.s 132 | Code | 11 | | 3 | 00/45C3 : 8D 63 56 | STA OPENPL2+1 1027 | 6 MAINMEM.SVC.s 133 | Code | 11 | | 2 | 00/45C6 : A9 03 | LDA #>{{$0300}} 1028 | 6 MAINMEM.SVC.s 134 | Code | 11 | | 3 | 00/45C8 : 8D C1 56 | STA GINFOPL+2 1029 | 6 MAINMEM.SVC.s 135 | Code | 11 | | 3 | 00/45CB : 8D 64 56 | STA OPENPL2+2 1030 | 6 MAINMEM.SVC.s 136 | Code | 11 | | 3 | 00/45CE : 20 8D 57 | JSR GETINFO ; GET_FILE_INFO 1031 | 6 MAINMEM.SVC.s 137 | Code | 11 | | 2 | 00/45D1 : B0 4A | BCS ozunid_25 1032 | 6 MAINMEM.SVC.s 138 | Code | 11 | | 2 | 00/45D3 : A9 41 | LDA #<{$0341} 1033 | 6 MAINMEM.SVC.s 139 | Code | 11 | | 3 | 00/45D5 : 8D C0 56 | STA GINFOPL+1 1034 | 6 MAINMEM.SVC.s 140 | Code | 11 | | 3 | 00/45D8 : 8D 75 56 | STA DESTPL+1 1035 | 6 MAINMEM.SVC.s 141 | Code | 11 | | 2 | 00/45DB : A9 03 | LDA #>{$0341} 1036 | 6 MAINMEM.SVC.s 142 | Code | 11 | | 3 | 00/45DD : 8D C1 56 | STA GINFOPL+2 1037 | 6 MAINMEM.SVC.s 143 | Code | 11 | | 3 | 00/45E0 : 8D 76 56 | STA DESTPL+2 1038 | 6 MAINMEM.SVC.s 144 | Code | 11 | | 3 | 00/45E3 : 20 00 BF | JSR {$BF00} ; DESTROY 1039 | 6 MAINMEM.SVC.s 145 | Data | 11 | | 1 | 00/45E6 : C1 | DB {$C1} 1040 | 6 MAINMEM.SVC.s 146 | Data | 11 | | 2 | 00/45E7 : 74 56 | DW DESTPL 1041 | 6 MAINMEM.SVC.s 147 | Code | 11 | | 2 | 00/45E9 : A9 07 | LDA #$07 ; Fix num parms in PL 1042 | 6 MAINMEM.SVC.s 148 | Code | 11 | | 3 | 00/45EB : 8D BF 56 | STA GINFOPL 1043 | 6 MAINMEM.SVC.s 149 | Code | 11 | | 2 | 00/45EE : A9 C3 | LDA #$C3 ; Default permissions 1044 | 6 MAINMEM.SVC.s 150 | Code | 11 | | 3 | 00/45F0 : 8D C2 56 | STA GINFOPL+3 1045 | 6 MAINMEM.SVC.s 151 | Code | 11 | | 3 | 00/45F3 : 20 00 BF | JSR {$BF00} ; Call CREATE with .. 1046 | 6 MAINMEM.SVC.s 152 | Data | 11 | | 1 | 00/45F6 : C0 | DB {$C0} ; .. PL from GET_FILE_INFO 1047 | 6 MAINMEM.SVC.s 153 | Data | 11 | | 2 | 00/45F7 : BF 56 | DW GINFOPL 1048 | 6 MAINMEM.SVC.s 154 | Code | 11 | | 2 | 00/45F9 : A2 0A | LDX #$0A ; Num parms back as we found it 1049 | 6 MAINMEM.SVC.s 155 | Code | 11 | | 3 | 00/45FB : 8E BF 56 | STX GINFOPL 1050 | 6 MAINMEM.SVC.s 156 | Code | 11 | | 2 | 00/45FE : B0 1D | BCS ozunid_25 ; Error creating dest file 1051 | 6 MAINMEM.SVC.s 157 | Code | 11 | | 2 | 00/4600 : A9 00 | LDA #$00 ; Look for empty slot 1052 | 6 MAINMEM.SVC.s 158 | Code | 11 | | 3 | 00/4602 : 20 23 57 | JSR FINDBUF 1053 | 6 MAINMEM.SVC.s 159 | Code | 11 | | 3 | 00/4605 : 8E B0 46 | STX _BUFIDX1 1054 | 6 MAINMEM.SVC.s 160 | Code | 11 | | 3 | 00/4608 : 20 32 57 | JSR BUFADDR 1055 | 6 MAINMEM.SVC.s 161 | Code | 11 | | 2 | 00/460B : B0 10 | BCS ozunid_25 ; No I/O bufs available 1056 | 6 MAINMEM.SVC.s 162 | Code | 11 | | 3 | 00/460D : 8D 65 56 | STA OPENPL2+3 1057 | 6 MAINMEM.SVC.s 163 | Code | 11 | | 3 | 00/4610 : 8C 66 56 | STY OPENPL2+4 1058 | 6 MAINMEM.SVC.s 164 | Code | 11 | | 3 | 00/4613 : 20 00 BF | JSR {$BF00} 1059 | 6 MAINMEM.SVC.s 165 | Data | 11 | | 1 | 00/4616 : C8 | DB {$C8} 1060 | 6 MAINMEM.SVC.s 166 | Data | 11 | | 2 | 00/4617 : 62 56 | DW OPENPL2 1061 | 6 MAINMEM.SVC.s 167 | Code | 11 | | 2 | 00/4619 : B0 02 | BCS ozunid_25 ; Open error 1062 | 6 MAINMEM.SVC.s 168 | Code | 11 | | 2 | 00/461B : 80 02 | BRA ozunid_26 1063 | 6 MAINMEM.SVC.s 169 | Code | 11 | | 1 | 00/461D : 38 | ozunid_25 SEC ; Report error 1064 | 6 MAINMEM.SVC.s 170 | Code | 11 | | 1 | 00/461E : 60 | RTS 1065 | 6 MAINMEM.SVC.s 171 | Code | 11 | | 3 | 00/461F : AD 67 56 | ozunid_26 LDA OPENPL2+5 ; File ref num 1066 | 6 MAINMEM.SVC.s 172 | Code | 11 | | 3 | 00/4622 : 8D 8D 56 | STA RDPLCP+1 1067 | 6 MAINMEM.SVC.s 173 | Code | 11 | | 3 | 00/4625 : AE B0 46 | LDX _BUFIDX1 1068 | 6 MAINMEM.SVC.s 174 | Code | 11 | | 3 | 00/4628 : 9D 04 58 | STA FILEREFS,X ; Record the ref number 1069 | 6 MAINMEM.SVC.s 175 | Code | 11 | | 2 | 00/462B : A9 41 | LDA #<{$0341} 1070 | 6 MAINMEM.SVC.s 176 | Code | 11 | | 3 | 00/462D : 8D 63 56 | STA OPENPL2+1 1071 | 6 MAINMEM.SVC.s 177 | Code | 11 | | 2 | 00/4630 : A9 03 | LDA #>{$0341} 1072 | 6 MAINMEM.SVC.s 178 | Code | 11 | | 3 | 00/4632 : 8D 64 56 | STA OPENPL2+2 1073 | 6 MAINMEM.SVC.s 179 | Code | 11 | | 2 | 00/4635 : A9 00 | LDA #$00 ; Look for empty slot 1074 | 6 MAINMEM.SVC.s 180 | Code | 11 | | 3 | 00/4637 : 20 23 57 | JSR FINDBUF 1075 | 6 MAINMEM.SVC.s 181 | Code | 11 | | 3 | 00/463A : 8E B1 46 | STX _BUFIDX2 1076 | 6 MAINMEM.SVC.s 182 | Code | 11 | | 3 | 00/463D : 20 32 57 | JSR BUFADDR 1077 | 6 MAINMEM.SVC.s 183 | Code | 11 | | 2 | 00/4640 : B0 64 | BCS _ERRCLS1 ; No I/O bufs available 1078 | 6 MAINMEM.SVC.s 184 | Code | 11 | | 3 | 00/4642 : 8D 65 56 | STA OPENPL2+3 1079 | 6 MAINMEM.SVC.s 185 | Code | 11 | | 3 | 00/4645 : 8C 66 56 | STY OPENPL2+4 1080 | 6 MAINMEM.SVC.s 186 | Code | 11 | | 3 | 00/4648 : 20 00 BF | JSR {$BF00} 1081 | 6 MAINMEM.SVC.s 187 | Data | 11 | | 1 | 00/464B : C8 | DB {$C8} 1082 | 6 MAINMEM.SVC.s 188 | Data | 11 | | 2 | 00/464C : 62 56 | DW OPENPL2 1083 | 6 MAINMEM.SVC.s 189 | Code | 11 | | 2 | 00/464E : B0 56 | BCS _ERRCLS1 1084 | 6 MAINMEM.SVC.s 190 | Code | 11 | | 3 | 00/4650 : AD 67 56 | LDA OPENPL2+5 ; File ref num 1085 | 6 MAINMEM.SVC.s 191 | Code | 11 | | 3 | 00/4653 : 8D 9D 56 | STA WRTPLCP+1 1086 | 6 MAINMEM.SVC.s 192 | Code | 11 | | 3 | 00/4656 : AE B1 46 | LDX _BUFIDX2 1087 | 6 MAINMEM.SVC.s 193 | Code | 11 | | 3 | 00/4659 : 9D 04 58 | STA FILEREFS,X ; Record the ref number 1088 | 6 MAINMEM.SVC.s 194 | Code | 11 | | 3 | 00/465C : 20 00 BF | ozunid_27 JSR {$BF00} ; Read a block 1089 | 6 MAINMEM.SVC.s 195 | Data | 11 | | 1 | 00/465F : CA | DB {$CA} 1090 | 6 MAINMEM.SVC.s 196 | Data | 11 | | 2 | 00/4660 : 8C 56 | DW RDPLCP 1091 | 6 MAINMEM.SVC.s 197 | Code | 11 | | 2 | 00/4662 : 90 06 | BCC _RDOKAY 1092 | 6 MAINMEM.SVC.s 198 | Code | 11 | | 2 | 00/4664 : C9 4C | CMP #$4C ; Is it EOF? 1093 | 6 MAINMEM.SVC.s 199 | Code | 11 | | 2 | 00/4666 : F0 18 | BEQ _EOFEXIT 1094 | 6 MAINMEM.SVC.s 200 | Code | 11 | | 2 | 00/4668 : 80 41 | BRA _ERRCLS2 ; Any other error 1095 | 6 MAINMEM.SVC.s 201 | Code | 11 | | 3 | 00/466A : AD 92 56 | _RDOKAY LDA RDPLCP+6 ; Trans count MSB 1096 | 6 MAINMEM.SVC.s 202 | Code | 11 | | 3 | 00/466D : 8D A0 56 | STA WRTPLCP+4 ; Request count MSB 1097 | 6 MAINMEM.SVC.s 203 | Code | 11 | | 3 | 00/4670 : AD 93 56 | LDA RDPLCP+7 ; Trans count MSB 1098 | 6 MAINMEM.SVC.s 204 | Code | 11 | | 3 | 00/4673 : 8D A1 56 | STA WRTPLCP+5 ; Request count MSB 1099 | 6 MAINMEM.SVC.s 205 | Code | 11 | | 3 | 00/4676 : 20 00 BF | JSR {$BF00} ; Write a block 1100 | 6 MAINMEM.SVC.s 206 | Data | 11 | | 1 | 00/4679 : CB | DB {$CB} 1101 | 6 MAINMEM.SVC.s 207 | Data | 11 | | 2 | 00/467A : 9C 56 | DW WRTPLCP 1102 | 6 MAINMEM.SVC.s 208 | Code | 11 | | 2 | 00/467C : B0 2D | BCS _ERRCLS2 ; Write error 1103 | 6 MAINMEM.SVC.s 209 | Code | 11 | | 2 | 00/467E : 80 DC | BRA ozunid_27 1104 | 6 MAINMEM.SVC.s 210 | Code | 11 | | 1 | 00/4680 : 18 | _EOFEXIT CLC ; No error 1105 | 6 MAINMEM.SVC.s 211 | Code | 11 | | 1 | 00/4681 : 08 | PHP 1106 | 6 MAINMEM.SVC.s 212 | Code | 11 | | 2 | 00/4682 : A9 00 | LDA #$00 1107 | 6 MAINMEM.SVC.s 213 | Code | 11 | | 1 | 00/4684 : 48 | PHA 1108 | 6 MAINMEM.SVC.s 214 | Code | 11 | | 3 | 00/4685 : AD 9D 56 | _CLOSE2 LDA WRTPLCP+1 ; Close output file 1109 | 6 MAINMEM.SVC.s 215 | Code | 11 | | 3 | 00/4688 : 8D A5 56 | STA CLSPL+1 1110 | 6 MAINMEM.SVC.s 216 | Code | 11 | | 3 | 00/468B : 20 E8 57 | JSR CLSFILE 1111 | 6 MAINMEM.SVC.s 217 | Code | 11 | | 3 | 00/468E : AE B1 46 | LDX _BUFIDX2 1112 | 6 MAINMEM.SVC.s 218 | Code | 11 | | 3 | 00/4691 : 9E 04 58 | STZ FILEREFS,X 1113 | 6 MAINMEM.SVC.s 219 | Code | 11 | | 3 | 00/4694 : AD 8D 56 | _CLOSE1 LDA RDPLCP+1 ; Close input file 1114 | 6 MAINMEM.SVC.s 220 | Code | 11 | | 3 | 00/4697 : 8D A5 56 | STA CLSPL+1 1115 | 6 MAINMEM.SVC.s 221 | Code | 11 | | 3 | 00/469A : 20 E8 57 | JSR CLSFILE 1116 | 6 MAINMEM.SVC.s 222 | Code | 11 | | 3 | 00/469D : AE B0 46 | LDX _BUFIDX1 1117 | 6 MAINMEM.SVC.s 223 | Code | 11 | | 3 | 00/46A0 : 9E 04 58 | STZ FILEREFS,X 1118 | 6 MAINMEM.SVC.s 224 | Code | 11 | | 1 | 00/46A3 : 68 | PLA 1119 | 6 MAINMEM.SVC.s 225 | Code | 11 | | 1 | 00/46A4 : 28 | PLP 1120 | 6 MAINMEM.SVC.s 226 | Code | 11 | | 1 | 00/46A5 : 60 | RTS 1121 | 6 MAINMEM.SVC.s 227 | Code | 11 | | 1 | 00/46A6 : 38 | _ERRCLS1 SEC 1122 | 6 MAINMEM.SVC.s 228 | Code | 11 | | 1 | 00/46A7 : 08 | PHP 1123 | 6 MAINMEM.SVC.s 229 | Code | 11 | | 1 | 00/46A8 : 48 | PHA 1124 | 6 MAINMEM.SVC.s 230 | Code | 11 | | 2 | 00/46A9 : 80 E9 | BRA _CLOSE1 1125 | 6 MAINMEM.SVC.s 231 | Code | 11 | | 1 | 00/46AB : 38 | _ERRCLS2 SEC 1126 | 6 MAINMEM.SVC.s 232 | Code | 11 | | 1 | 00/46AC : 08 | PHP 1127 | 6 MAINMEM.SVC.s 233 | Code | 11 | | 1 | 00/46AD : 48 | PHA 1128 | 6 MAINMEM.SVC.s 234 | Code | 11 | | 2 | 00/46AE : 80 D5 | BRA _CLOSE2 1129 | 6 MAINMEM.SVC.s 235 | Data | 11 | | 1 | 00/46B0 : 00 | _BUFIDX1 DB $00 1130 | 6 MAINMEM.SVC.s 236 | Data | 11 | | 1 | 00/46B1 : 00 | _BUFIDX2 DB $00 1131 | 6 MAINMEM.SVC.s 237 | Empty | 11 | | 0 | 00/46B2 | 1132 | 6 MAINMEM.SVC.s 238 | Empty | 11 | | 0 | 00/46B2 | 1133 | 6 MAINMEM.SVC.s 239 | Comment | 11 | | 0 | 00/46B2 | * ProDOS file handling for MOS OSFIND OPEN call 1134 | 6 MAINMEM.SVC.s 240 | Comment | 11 | | 0 | 00/46B2 | * Options in A: $40 'r', $80 'w', $C0 'rw' 1135 | 6 MAINMEM.SVC.s 241 | Macro | 11 | | 0 | 00/46B2 | OFILE >>> ENTMAIN 1136 | 6 MAINMEM.SVC.s 241 | Code | 11 | | 1 | 00/46B2 : 9A | TXS ; Main SP already in X 1137 | 6 MAINMEM.SVC.s 241 | Code | 11 | | 3 | 00/46B3 : AE 81 C0 | LDX $C081 ; Bank in ROM 1138 | 6 MAINMEM.SVC.s 241 | Code | 11 | | 3 | 00/46B6 : AE 81 C0 | LDX $C081 1139 | 6 MAINMEM.SVC.s 241 | Code | 11 | | 1 | 00/46B9 : 58 | CLI ; Re-enable IRQ after XFER 1140 | 6 MAINMEM.SVC.s 242 | Code | 11 | | 2 | 00/46BA : 29 C0 | AND #$C0 ; Keep just action bits 1141 | 6 MAINMEM.SVC.s 243 | Code | 11 | | 1 | 00/46BC : 48 | PHA ; Preserve arg for later 1142 | 6 MAINMEM.SVC.s 244 | Code | 11 | | 3 | 00/46BD : 20 10 51 | JSR PREPATH ; Preprocess pathname 1143 | 6 MAINMEM.SVC.s 245 | Code | 11 | | 2 | 00/46C0 : B0 17 | BCS _JMPEXIT1 ; Bad filename 1144 | 6 MAINMEM.SVC.s 246 | Code | 11 | | 1 | 00/46C2 : 68 | PLA 1145 | 6 MAINMEM.SVC.s 247 | Code | 11 | | 1 | 00/46C3 : 48 | PHA 1146 | 6 MAINMEM.SVC.s 248 | Code | 11 | | 2 | 00/46C4 : C9 80 | CMP #$80 ; Is it "w"? 1147 | 6 MAINMEM.SVC.s 249 | Code | 11 | | 2 | 00/46C6 : F0 03 | BEQ ozunid_28 ; If so, no wildcards 1148 | 6 MAINMEM.SVC.s 250 | Code | 11 | | 3 | 00/46C8 : 20 8A 53 | JSR WILDONE ; Handle any wildcards 1149 | 6 MAINMEM.SVC.s 251 | Code | 11 | | 3 | 00/46CB : 20 5C 57 | ozunid_28 JSR EXISTS ; See if file exists ... 1150 | 6 MAINMEM.SVC.s 252 | Code | 11 | | 1 | 00/46CE : AA | TAX 1151 | 6 MAINMEM.SVC.s 253 | Code | 11 | | 2 | 00/46CF : C9 02 | CMP #$02 ; ... and is a directory 1152 | 6 MAINMEM.SVC.s 254 | Code | 11 | | 2 | 00/46D1 : D0 0A | BNE ozunid_30 1153 | 6 MAINMEM.SVC.s 255 | Code | 11 | | 1 | 00/46D3 : 68 | PLA ; Get action back 1154 | 6 MAINMEM.SVC.s 256 | Code | 11 | | 2 | 00/46D4 : 10 08 | BPL _NOTDIR2 ; OPENIN(dir) allowed 1155 | 6 MAINMEM.SVC.s 257 | Code | 11 | | 2 | 00/46D6 : A9 41 | LDA #$41 ; $41=Directory exists 1156 | 6 MAINMEM.SVC.s 258 | Code | 11 | | 1 | 00/46D8 : 48 | PHA ; Balance PLA 1157 | 6 MAINMEM.SVC.s 259 | Code | 11 | | 1 | 00/46D9 : 68 | _JMPEXIT1 PLA 1158 | 6 MAINMEM.SVC.s 260 | Code | 11 | | 3 | 00/46DA : 4C 21 47 | ozunid_29 JMP FINDEXIT 1159 | 6 MAINMEM.SVC.s 261 | Code | 11 | | 1 | 00/46DD : 68 | ozunid_30 PLA 1160 | 6 MAINMEM.SVC.s 262 | Code | 11 | | 2 | 00/46DE : C9 80 | _NOTDIR2 CMP #$80 ; Write mode 1161 | 6 MAINMEM.SVC.s 263 | Code | 11 | | 2 | 00/46E0 : D0 11 | BNE ozunid_32 1162 | 6 MAINMEM.SVC.s 264 | Code | 11 | | 1 | 00/46E2 : 8A | TXA 1163 | 6 MAINMEM.SVC.s 265 | Code | 11 | | 2 | 00/46E3 : F0 05 | BEQ ozunid_31 ; No file, don't try to delete 1164 | 6 MAINMEM.SVC.s 266 | Code | 11 | | 3 | 00/46E5 : 20 30 49 | JSR DODELETE 1165 | 6 MAINMEM.SVC.s 267 | Code | 11 | | 2 | 00/46E8 : B0 37 | BCS FINDEXIT ; Abort if error 1166 | 6 MAINMEM.SVC.s 268 | Code | 11 | | 2 | 00/46EA : A2 00 | ozunid_31 LDX #$00 ; LOAD=$0000 1167 | 6 MAINMEM.SVC.s 269 | Code | 11 | | 2 | 00/46EC : A0 00 | LDY #$00 1168 | 6 MAINMEM.SVC.s 270 | Code | 11 | | 3 | 00/46EE : 20 D6 4A | JSR CREATEFILE 1169 | 6 MAINMEM.SVC.s 271 | Code | 11 | | 2 | 00/46F1 : B0 2E | BCS FINDEXIT ; Abort if error 1170 | 6 MAINMEM.SVC.s 272 | Comment | 11 | | 0 | 00/46F3 | * Looking for a buffer should be done before creating a file 1171 | 6 MAINMEM.SVC.s 273 | Code | 11 | | 2 | 00/46F3 : A9 00 | ozunid_32 LDA #$00 ; Look for empty slot 1172 | 6 MAINMEM.SVC.s 274 | Code | 11 | | 3 | 00/46F5 : 20 23 57 | JSR FINDBUF 1173 | 6 MAINMEM.SVC.s 275 | Code | 11 | | 3 | 00/46F8 : 8E 40 47 | STX BUFIDX 1174 | 6 MAINMEM.SVC.s 276 | Code | 11 | | 3 | 00/46FB : 20 32 57 | JSR BUFADDR 1175 | 6 MAINMEM.SVC.s 277 | Code | 11 | | 2 | 00/46FE : B0 3C | BCS NOBUFFS ; No empty slot (BUFIDX=FF) 1176 | 6 MAINMEM.SVC.s 278 | Code | 11 | | 3 | 00/4700 : 8D 65 56 | STA OPENPL2+3 1177 | 6 MAINMEM.SVC.s 279 | Code | 11 | | 3 | 00/4703 : 8C 66 56 | STY OPENPL2+4 1178 | 6 MAINMEM.SVC.s 280 | Code | 11 | | 2 | 00/4706 : A9 00 | LDA #<{{$0300}} 1179 | 6 MAINMEM.SVC.s 281 | Code | 11 | | 3 | 00/4708 : 8D 63 56 | STA OPENPL2+1 1180 | 6 MAINMEM.SVC.s 282 | Code | 11 | | 2 | 00/470B : A9 03 | LDA #>{{$0300}} 1181 | 6 MAINMEM.SVC.s 283 | Code | 11 | | 3 | 00/470D : 8D 64 56 | STA OPENPL2+2 1182 | 6 MAINMEM.SVC.s 284 | Code | 11 | | 3 | 00/4710 : 20 00 BF | JSR {$BF00} 1183 | 6 MAINMEM.SVC.s 285 | Data | 11 | | 1 | 00/4713 : C8 | DB {$C8} 1184 | 6 MAINMEM.SVC.s 286 | Data | 11 | | 2 | 00/4714 : 62 56 | DW OPENPL2 1185 | 6 MAINMEM.SVC.s 287 | Code | 11 | | 2 | 00/4716 : B0 09 | BCS FINDEXIT 1186 | 6 MAINMEM.SVC.s 288 | Code | 11 | | 3 | 00/4718 : AD 67 56 | LDA OPENPL2+5 ; File ref number 1187 | 6 MAINMEM.SVC.s 289 | Code | 11 | | 3 | 00/471B : AE 40 47 | LDX BUFIDX 1188 | 6 MAINMEM.SVC.s 290 | Code | 11 | | 3 | 00/471E : 9D 04 58 | STA FILEREFS,X ; Record the ref number 1189 | 6 MAINMEM.SVC.s 291 | Code | 11 | | 3 | 00/4721 : 20 A9 4B | FINDEXIT JSR CHKNOTFND ; Convert NotFound to $00 1190 | 6 MAINMEM.SVC.s 292 | Macro | 11 | | 0 | 00/4724 | >>> XF2AUX,OSFINDRET 1191 | 6 MAINMEM.SVC.s 292 | Code | 11 | | 3 | 00/4724 : AE 8B C0 | LDX $C08B ; R/W LC RAM, bank 1 1192 | 6 MAINMEM.SVC.s 292 | Code | 11 | | 3 | 00/4727 : AE 8B C0 | LDX $C08B 1193 | 6 MAINMEM.SVC.s 292 | Code | 11 | | 2 | 00/472A : A2 B7 | LDX #OSFINDRET 1196 | 6 MAINMEM.SVC.s 292 | Code | 11 | | 3 | 00/4731 : 8E EE 03 | STX {$3EE} 1197 | 6 MAINMEM.SVC.s 292 | Code | 11 | | 1 | 00/4734 : 78 | SEI ; Disable IRQ before XFER 1198 | 6 MAINMEM.SVC.s 292 | Code | 11 | | 1 | 00/4735 : 38 | SEC ; Use aux memory 1199 | 6 MAINMEM.SVC.s 292 | Code | 11 | | 3 | 00/4736 : 2C 58 FF | BIT $FF58 ; Set V: use alt ZP and LC 1200 | 6 MAINMEM.SVC.s 292 | Code | 11 | | 3 | 00/4739 : 4C 14 C3 | JMP {$C314} 1201 | 6 MAINMEM.SVC.s 293 | Code | 11 | | 2 | 00/473C : A9 42 | NOBUFFS LDA #$42 ; $42=File buffers full 1202 | 6 MAINMEM.SVC.s 294 | Code | 11 | | 2 | 00/473E : D0 E1 | BNE FINDEXIT 1203 | 6 MAINMEM.SVC.s 295 | Data | 11 | | 1 | 00/4740 : 00 | BUFIDX DB $00 1204 | 6 MAINMEM.SVC.s 296 | Empty | 11 | | 0 | 00/4741 | 1205 | 6 MAINMEM.SVC.s 297 | Comment | 11 | | 0 | 00/4741 | * ProDOS file handling for MOS OSFIND CLOSE call 1206 | 6 MAINMEM.SVC.s 298 | Comment | 11 | | 0 | 00/4741 | * ProDOS can do CLOSE#0 but we need to manually update FILEREFS 1207 | 6 MAINMEM.SVC.s 299 | Macro | 11 | | 0 | 00/4741 | CFILE >>> ENTMAIN 1208 | 6 MAINMEM.SVC.s 299 | Code | 11 | | 1 | 00/4741 : 9A | TXS ; Main SP already in X 1209 | 6 MAINMEM.SVC.s 299 | Code | 11 | | 3 | 00/4742 : AE 81 C0 | LDX $C081 ; Bank in ROM 1210 | 6 MAINMEM.SVC.s 299 | Code | 11 | | 3 | 00/4745 : AE 81 C0 | LDX $C081 1211 | 6 MAINMEM.SVC.s 299 | Code | 11 | | 1 | 00/4748 : 58 | CLI ; Re-enable IRQ after XFER 1212 | 6 MAINMEM.SVC.s 300 | Code | 11 | | 2 | 00/4749 : A2 00 | LDX #$00 ; Prepare for one file 1213 | 6 MAINMEM.SVC.s 301 | Code | 11 | | 1 | 00/474B : 98 | TYA ; File ref number 1214 | 6 MAINMEM.SVC.s 302 | Code | 11 | | 2 | 00/474C : D0 07 | BNE _CFILE1 ; Close one file 1215 | 6 MAINMEM.SVC.s 303 | Code | 11 | | 2 | 00/474E : A2 03 | LDX #$03 ; Loop through all files 1216 | 6 MAINMEM.SVC.s 304 | Code | 11 | | 3 | 00/4750 : BD 04 58 | _CFILE0 LDA FILEREFS,X 1217 | 6 MAINMEM.SVC.s 305 | Code | 11 | | 2 | 00/4753 : F0 16 | BEQ _CFILE3 ; Not open, try next 1218 | 6 MAINMEM.SVC.s 306 | Code | 11 | | 1 | 00/4755 : DA | _CFILE1 PHX 1219 | 6 MAINMEM.SVC.s 307 | Code | 11 | | 1 | 00/4756 : 48 | PHA 1220 | 6 MAINMEM.SVC.s 308 | Code | 11 | | 3 | 00/4757 : 8D A5 56 | STA CLSPL+1 1221 | 6 MAINMEM.SVC.s 309 | Code | 11 | | 3 | 00/475A : 20 E8 57 | JSR CLSFILE 1222 | 6 MAINMEM.SVC.s 310 | Code | 11 | | 2 | 00/475D : B0 13 | BCS _CFILEERR ; Error occured during closing 1223 | 6 MAINMEM.SVC.s 311 | Code | 11 | | 1 | 00/475F : 68 | PLA 1224 | 6 MAINMEM.SVC.s 312 | Code | 11 | | 3 | 00/4760 : 20 23 57 | JSR FINDBUF 1225 | 6 MAINMEM.SVC.s 313 | Code | 11 | | 2 | 00/4763 : D0 05 | BNE _CFILE2 1226 | 6 MAINMEM.SVC.s 314 | Code | 11 | | 2 | 00/4765 : A9 00 | LDA #$00 1227 | 6 MAINMEM.SVC.s 315 | Code | 11 | | 3 | 00/4767 : 9D 04 58 | STA FILEREFS,X ; Release buffer 1228 | 6 MAINMEM.SVC.s 316 | Code | 11 | | 1 | 00/476A : FA | _CFILE2 PLX 1229 | 6 MAINMEM.SVC.s 317 | Code | 11 | | 1 | 00/476B : CA | _CFILE3 DEX 1230 | 6 MAINMEM.SVC.s 318 | Code | 11 | | 2 | 00/476C : 10 E2 | BPL _CFILE0 ; Loop to close all files 1231 | 6 MAINMEM.SVC.s 319 | Code | 11 | | 2 | 00/476E : A9 00 | LDA #$00 1232 | 6 MAINMEM.SVC.s 320 | Code | 11 | | 2 | 00/4770 : F0 AF | BEQ FINDEXIT 1233 | 6 MAINMEM.SVC.s 321 | Code | 11 | | 1 | 00/4772 : FA | _CFILEERR PLX ; Balance stack 1234 | 6 MAINMEM.SVC.s 322 | Code | 11 | | 1 | 00/4773 : FA | PLX 1235 | 6 MAINMEM.SVC.s 323 | Code | 11 | | 2 | 00/4774 : B0 AB | BCS FINDEXIT 1236 | 6 MAINMEM.SVC.s 324 | Empty | 11 | | 0 | 00/4776 | 1237 | 6 MAINMEM.SVC.s 325 | Empty | 11 | | 0 | 00/4776 | 1238 | 6 MAINMEM.SVC.s 326 | Comment | 11 | | 0 | 00/4776 | * ProDOS file handling for MOS OSBGET call 1239 | 6 MAINMEM.SVC.s 327 | Comment | 11 | | 0 | 00/4776 | * Returns with char read in A and error num in Y (or 0) 1240 | 6 MAINMEM.SVC.s 328 | Macro | 11 | | 0 | 00/4776 | FILEGET >>> ENTMAIN 1241 | 6 MAINMEM.SVC.s 328 | Code | 11 | | 1 | 00/4776 : 9A | TXS ; Main SP already in X 1242 | 6 MAINMEM.SVC.s 328 | Code | 11 | | 3 | 00/4777 : AE 81 C0 | LDX $C081 ; Bank in ROM 1243 | 6 MAINMEM.SVC.s 328 | Code | 11 | | 3 | 00/477A : AE 81 C0 | LDX $C081 1244 | 6 MAINMEM.SVC.s 328 | Code | 11 | | 1 | 00/477D : 58 | CLI ; Re-enable IRQ after XFER 1245 | 6 MAINMEM.SVC.s 329 | Code | 11 | | 3 | 00/477E : 8C 85 56 | STY READPL2+1 ; File ref number 1246 | 6 MAINMEM.SVC.s 330 | Code | 11 | | 3 | 00/4781 : 20 00 BF | JSR {$BF00} 1247 | 6 MAINMEM.SVC.s 331 | Data | 11 | | 1 | 00/4784 : CA | DB {$CA} 1248 | 6 MAINMEM.SVC.s 332 | Data | 11 | | 2 | 00/4785 : 84 56 | DW READPL2 1249 | 6 MAINMEM.SVC.s 333 | Code | 11 | | 1 | 00/4787 : A8 | TAY ; Error number in Y 1250 | 6 MAINMEM.SVC.s 334 | Code | 11 | | 2 | 00/4788 : B0 05 | BCS ozunid_33 1251 | 6 MAINMEM.SVC.s 335 | Code | 11 | | 2 | 00/478A : A0 00 | LDY #$00 ; 0=Ok 1252 | 6 MAINMEM.SVC.s 336 | Code | 11 | | 3 | 00/478C : AD 00 90 | LDA {$9000} 1253 | 6 MAINMEM.SVC.s 337 | Macro | 11 | | 0 | 00/478F | ozunid_33 >>> XF2AUX,OSBGETRET 1254 | 6 MAINMEM.SVC.s 337 | Code | 11 | | 3 | 00/478F : AE 8B C0 | LDX $C08B ; R/W LC RAM, bank 1 1255 | 6 MAINMEM.SVC.s 337 | Code | 11 | | 3 | 00/4792 : AE 8B C0 | LDX $C08B 1256 | 6 MAINMEM.SVC.s 337 | Code | 11 | | 2 | 00/4795 : A2 15 | LDX #OSBGETRET 1259 | 6 MAINMEM.SVC.s 337 | Code | 11 | | 3 | 00/479C : 8E EE 03 | STX {$3EE} 1260 | 6 MAINMEM.SVC.s 337 | Code | 11 | | 1 | 00/479F : 78 | SEI ; Disable IRQ before XFER 1261 | 6 MAINMEM.SVC.s 337 | Code | 11 | | 1 | 00/47A0 : 38 | SEC ; Use aux memory 1262 | 6 MAINMEM.SVC.s 337 | Code | 11 | | 3 | 00/47A1 : 2C 58 FF | BIT $FF58 ; Set V: use alt ZP and LC 1263 | 6 MAINMEM.SVC.s 337 | Code | 11 | | 3 | 00/47A4 : 4C 14 C3 | JMP {$C314} 1264 | 6 MAINMEM.SVC.s 338 | Empty | 11 | | 0 | 00/47A7 | 1265 | 6 MAINMEM.SVC.s 339 | Empty | 11 | | 0 | 00/47A7 | 1266 | 6 MAINMEM.SVC.s 340 | Comment | 11 | | 0 | 00/47A7 | * ProDOS file handling for MOS OSBPUT call 1267 | 6 MAINMEM.SVC.s 341 | Comment | 11 | | 0 | 00/47A7 | * Enters with char to write in A 1268 | 6 MAINMEM.SVC.s 342 | Macro | 11 | | 0 | 00/47A7 | FILEPUT >>> ENTMAIN 1269 | 6 MAINMEM.SVC.s 342 | Code | 11 | | 1 | 00/47A7 : 9A | TXS ; Main SP already in X 1270 | 6 MAINMEM.SVC.s 342 | Code | 11 | | 3 | 00/47A8 : AE 81 C0 | LDX $C081 ; Bank in ROM 1271 | 6 MAINMEM.SVC.s 342 | Code | 11 | | 3 | 00/47AB : AE 81 C0 | LDX $C081 1272 | 6 MAINMEM.SVC.s 342 | Code | 11 | | 1 | 00/47AE : 58 | CLI ; Re-enable IRQ after XFER 1273 | 6 MAINMEM.SVC.s 343 | Code | 11 | | 3 | 00/47AF : 8D 00 90 | STA {$9000} ; Byte to write 1274 | 6 MAINMEM.SVC.s 344 | Code | 11 | | 3 | 00/47B2 : 8C 95 56 | STY WRITEPL+1 ; File ref number 1275 | 6 MAINMEM.SVC.s 345 | Code | 11 | | 2 | 00/47B5 : A9 01 | LDA #$01 ; Bytes to write 1276 | 6 MAINMEM.SVC.s 346 | Code | 11 | | 3 | 00/47B7 : 8D 98 56 | STA WRITEPL+4 1277 | 6 MAINMEM.SVC.s 347 | Code | 11 | | 2 | 00/47BA : A9 00 | LDA #$00 1278 | 6 MAINMEM.SVC.s 348 | Code | 11 | | 3 | 00/47BC : 8D 99 56 | STA WRITEPL+5 1279 | 6 MAINMEM.SVC.s 349 | Code | 11 | | 3 | 00/47BF : 20 F6 57 | JSR WRTFILE 1280 | 6 MAINMEM.SVC.s 350 | Code | 11 | | 2 | 00/47C2 : B0 02 | BCS _FILEPUT2 1281 | 6 MAINMEM.SVC.s 351 | Code | 11 | | 2 | 00/47C4 : A9 00 | LDA #$00 ; 0=Ok 1282 | 6 MAINMEM.SVC.s 352 | Macro | 11 | | 0 | 00/47C6 | _FILEPUT2 >>> XF2AUX,OSBPUTRET 1283 | 6 MAINMEM.SVC.s 352 | Code | 11 | | 3 | 00/47C6 : AE 8B C0 | LDX $C08B ; R/W LC RAM, bank 1 1284 | 6 MAINMEM.SVC.s 352 | Code | 11 | | 3 | 00/47C9 : AE 8B C0 | LDX $C08B 1285 | 6 MAINMEM.SVC.s 352 | Code | 11 | | 2 | 00/47CC : A2 EF | LDX #OSBPUTRET 1288 | 6 MAINMEM.SVC.s 352 | Code | 11 | | 3 | 00/47D3 : 8E EE 03 | STX {$3EE} 1289 | 6 MAINMEM.SVC.s 352 | Code | 11 | | 1 | 00/47D6 : 78 | SEI ; Disable IRQ before XFER 1290 | 6 MAINMEM.SVC.s 352 | Code | 11 | | 1 | 00/47D7 : 38 | SEC ; Use aux memory 1291 | 6 MAINMEM.SVC.s 352 | Code | 11 | | 3 | 00/47D8 : 2C 58 FF | BIT $FF58 ; Set V: use alt ZP and LC 1292 | 6 MAINMEM.SVC.s 352 | Code | 11 | | 3 | 00/47DB : 4C 14 C3 | JMP {$C314} 1293 | 6 MAINMEM.SVC.s 353 | Empty | 11 | | 0 | 00/47DE | 1294 | 6 MAINMEM.SVC.s 354 | Empty | 11 | | 0 | 00/47DE | 1295 | 6 MAINMEM.SVC.s 355 | Comment | 11 | | 0 | 00/47DE | * ProDOS file handling for FSC $01 called by OSBYTE $7F EOF 1296 | 6 MAINMEM.SVC.s 356 | Comment | 11 | | 0 | 00/47DE | * Returns EOF status in A ($FF for EOF, $00 otherwise) 1297 | 6 MAINMEM.SVC.s 357 | Comment | 11 | | 0 | 00/47DE | * A=channel to test 1298 | 6 MAINMEM.SVC.s 358 | Macro | 11 | | 0 | 00/47DE | FILEEOF >>> ENTMAIN 1299 | 6 MAINMEM.SVC.s 358 | Code | 11 | | 1 | 00/47DE : 9A | TXS ; Main SP already in X 1300 | 6 MAINMEM.SVC.s 358 | Code | 11 | | 3 | 00/47DF : AE 81 C0 | LDX $C081 ; Bank in ROM 1301 | 6 MAINMEM.SVC.s 358 | Code | 11 | | 3 | 00/47E2 : AE 81 C0 | LDX $C081 1302 | 6 MAINMEM.SVC.s 358 | Code | 11 | | 1 | 00/47E5 : 58 | CLI ; Re-enable IRQ after XFER 1303 | 6 MAINMEM.SVC.s 359 | Code | 11 | | 3 | 00/47E6 : 8D BB 56 | STA GEOFPL+1 1304 | 6 MAINMEM.SVC.s 360 | Code | 11 | | 3 | 00/47E9 : 8D B6 56 | STA GMARKPL+1 1305 | 6 MAINMEM.SVC.s 361 | Code | 11 | | 3 | 00/47EC : 20 00 BF | JSR {$BF00} 1306 | 6 MAINMEM.SVC.s 362 | Data | 11 | | 1 | 00/47EF : D1 | DB {$D1} 1307 | 6 MAINMEM.SVC.s 363 | Data | 11 | | 2 | 00/47F0 : BA 56 | DW GEOFPL 1308 | 6 MAINMEM.SVC.s 364 | Code | 11 | | 1 | 00/47F2 : A8 | TAY 1309 | 6 MAINMEM.SVC.s 365 | Code | 11 | | 2 | 00/47F3 : B0 36 | BCS ozunid_34 ; Abort with any error 1310 | 6 MAINMEM.SVC.s 366 | Code | 11 | | 3 | 00/47F5 : 20 00 BF | JSR {$BF00} 1311 | 6 MAINMEM.SVC.s 367 | Data | 11 | | 1 | 00/47F8 : CF | DB {$CF} 1312 | 6 MAINMEM.SVC.s 368 | Data | 11 | | 2 | 00/47F9 : B5 56 | DW GMARKPL 1313 | 6 MAINMEM.SVC.s 369 | Code | 11 | | 1 | 00/47FB : A8 | TAY 1314 | 6 MAINMEM.SVC.s 370 | Code | 11 | | 2 | 00/47FC : B0 2D | BCS ozunid_34 ; Abort with any error 1315 | 6 MAINMEM.SVC.s 371 | Empty | 11 | | 0 | 00/47FE | 1316 | 6 MAINMEM.SVC.s 372 | Code | 11 | | 1 | 00/47FE : 38 | SEC 1317 | 6 MAINMEM.SVC.s 373 | Code | 11 | | 3 | 00/47FF : AD BC 56 | LDA GEOFPL+2 ; Subtract Mark from EOF 1318 | 6 MAINMEM.SVC.s 374 | Code | 11 | | 3 | 00/4802 : ED B7 56 | SBC GMARKPL+2 1319 | 6 MAINMEM.SVC.s 375 | Code | 11 | | 3 | 00/4805 : 8D BC 56 | STA GEOFPL+2 1320 | 6 MAINMEM.SVC.s 376 | Code | 11 | | 3 | 00/4808 : AD BD 56 | LDA GEOFPL+3 1321 | 6 MAINMEM.SVC.s 377 | Code | 11 | | 3 | 00/480B : ED B8 56 | SBC GMARKPL+3 1322 | 6 MAINMEM.SVC.s 378 | Code | 11 | | 3 | 00/480E : 8D BD 56 | STA GEOFPL+3 1323 | 6 MAINMEM.SVC.s 379 | Code | 11 | | 3 | 00/4811 : AD BE 56 | LDA GEOFPL+4 1324 | 6 MAINMEM.SVC.s 380 | Code | 11 | | 3 | 00/4814 : ED B9 56 | SBC GMARKPL+4 1325 | 6 MAINMEM.SVC.s 381 | Code | 11 | | 3 | 00/4817 : 8D BE 56 | STA GEOFPL+4 1326 | 6 MAINMEM.SVC.s 382 | Empty | 11 | | 0 | 00/481A | 1327 | 6 MAINMEM.SVC.s 383 | Code | 11 | | 3 | 00/481A : AD BC 56 | LDA GEOFPL+2 ; Check bytes remaining 1328 | 6 MAINMEM.SVC.s 384 | Code | 11 | | 3 | 00/481D : 0D BD 56 | ORA GEOFPL+3 1329 | 6 MAINMEM.SVC.s 385 | Code | 11 | | 3 | 00/4820 : 0D BE 56 | ORA GEOFPL+4 1330 | 6 MAINMEM.SVC.s 386 | Code | 11 | | 2 | 00/4823 : F0 02 | BEQ _ISEOF ; EOF -> $00 1331 | 6 MAINMEM.SVC.s 387 | Code | 11 | | 2 | 00/4825 : A9 FF | LDA #$FF ; Not EOF -> $FF 1332 | 6 MAINMEM.SVC.s 388 | Code | 11 | | 2 | 00/4827 : 49 FF | _ISEOF EOR #$FF ; EOF -> $FF, Not EOF ->$00 1333 | 6 MAINMEM.SVC.s 389 | Code | 11 | | 2 | 00/4829 : A0 00 | LDY #$00 ; 0=No error 1334 | 6 MAINMEM.SVC.s 390 | Macro | 11 | | 0 | 00/482B | ozunid_34 >>> XF2AUX,CHKEOFRET 1335 | 6 MAINMEM.SVC.s 390 | Code | 11 | | 3 | 00/482B : AE 8B C0 | LDX $C08B ; R/W LC RAM, bank 1 1336 | 6 MAINMEM.SVC.s 390 | Code | 11 | | 3 | 00/482E : AE 8B C0 | LDX $C08B 1337 | 6 MAINMEM.SVC.s 390 | Code | 11 | | 2 | 00/4831 : A2 04 | LDX #CHKEOFRET 1340 | 6 MAINMEM.SVC.s 390 | Code | 11 | | 3 | 00/4838 : 8E EE 03 | STX {$3EE} 1341 | 6 MAINMEM.SVC.s 390 | Code | 11 | | 1 | 00/483B : 78 | SEI ; Disable IRQ before XFER 1342 | 6 MAINMEM.SVC.s 390 | Code | 11 | | 1 | 00/483C : 38 | SEC ; Use aux memory 1343 | 6 MAINMEM.SVC.s 390 | Code | 11 | | 3 | 00/483D : 2C 58 FF | BIT $FF58 ; Set V: use alt ZP and LC 1344 | 6 MAINMEM.SVC.s 390 | Code | 11 | | 3 | 00/4840 : 4C 14 C3 | JMP {$C314} 1345 | 6 MAINMEM.SVC.s 391 | Empty | 11 | | 0 | 00/4843 | 1346 | 6 MAINMEM.SVC.s 392 | Empty | 11 | | 0 | 00/4843 | 1347 | 6 MAINMEM.SVC.s 393 | Comment | 11 | | 0 | 00/4843 | * ProDOS file handling for OSARGS flush commands 1348 | 6 MAINMEM.SVC.s 394 | Macro | 11 | | 0 | 00/4843 | FLUSH >>> ENTMAIN 1349 | 6 MAINMEM.SVC.s 394 | Code | 11 | | 1 | 00/4843 : 9A | TXS ; Main SP already in X 1350 | 6 MAINMEM.SVC.s 394 | Code | 11 | | 3 | 00/4844 : AE 81 C0 | LDX $C081 ; Bank in ROM 1351 | 6 MAINMEM.SVC.s 394 | Code | 11 | | 3 | 00/4847 : AE 81 C0 | LDX $C081 1352 | 6 MAINMEM.SVC.s 394 | Code | 11 | | 1 | 00/484A : 58 | CLI ; Re-enable IRQ after XFER 1353 | 6 MAINMEM.SVC.s 395 | Code | 11 | | 3 | 00/484B : 8C A7 56 | STY FLSHPL+1 ; File ref number 1354 | 6 MAINMEM.SVC.s 396 | Code | 11 | | 3 | 00/484E : 20 00 BF | JSR {$BF00} 1355 | 6 MAINMEM.SVC.s 397 | Data | 11 | | 1 | 00/4851 : CD | DB {$CD} 1356 | 6 MAINMEM.SVC.s 398 | Data | 11 | | 2 | 00/4852 : A6 56 | DW FLSHPL 1357 | 6 MAINMEM.SVC.s 399 | Code | 11 | | 3 | 00/4854 : 4C AE 48 | JMP TELLEXIT 1358 | 6 MAINMEM.SVC.s 400 | Empty | 11 | | 0 | 00/4857 | 1359 | 6 MAINMEM.SVC.s 401 | Empty | 11 | | 0 | 00/4857 | 1360 | 6 MAINMEM.SVC.s 402 | Comment | 11 | | 0 | 00/4857 | * ProDOS file handling for OSARGS set ptr command 1361 | 6 MAINMEM.SVC.s 403 | Comment | 11 | | 0 | 00/4857 | * GMARKPL+1=channel, GMARKPL+2,+3,+4=offset already set 1362 | 6 MAINMEM.SVC.s 404 | Macro | 11 | | 0 | 00/4857 | SEEK >>> ENTMAIN 1363 | 6 MAINMEM.SVC.s 404 | Code | 11 | | 1 | 00/4857 : 9A | TXS ; Main SP already in X 1364 | 6 MAINMEM.SVC.s 404 | Code | 11 | | 3 | 00/4858 : AE 81 C0 | LDX $C081 ; Bank in ROM 1365 | 6 MAINMEM.SVC.s 404 | Code | 11 | | 3 | 00/485B : AE 81 C0 | LDX $C081 1366 | 6 MAINMEM.SVC.s 404 | Code | 11 | | 1 | 00/485E : 58 | CLI ; Re-enable IRQ after XFER 1367 | 6 MAINMEM.SVC.s 405 | Code | 11 | | 3 | 00/485F : 20 00 BF | JSR {$BF00} 1368 | 6 MAINMEM.SVC.s 406 | Data | 11 | | 1 | 00/4862 : CE | DB {$CE} 1369 | 6 MAINMEM.SVC.s 407 | Data | 11 | | 2 | 00/4863 : B5 56 | DW GMARKPL 1370 | 6 MAINMEM.SVC.s 408 | Code | 11 | | 3 | 00/4865 : 4C AE 48 | JMP TELLEXIT 1371 | 6 MAINMEM.SVC.s 409 | Empty | 11 | | 0 | 00/4868 | 1372 | 6 MAINMEM.SVC.s 410 | Empty | 11 | | 0 | 00/4868 | 1373 | 6 MAINMEM.SVC.s 411 | Comment | 11 | | 0 | 00/4868 | * ProDOS file handling for OSARGS get ptr command 1374 | 6 MAINMEM.SVC.s 412 | Comment | 11 | | 0 | 00/4868 | * and for OSARGs get length command 1375 | 6 MAINMEM.SVC.s 413 | Comment | 11 | | 0 | 00/4868 | * A=ZP, Y=channel 1376 | 6 MAINMEM.SVC.s 414 | Code | 11 | | 2 | 00/4868 : A2 02 | SIZE LDX #$02 ; $02=SIZE, Read EXT 1377 | 6 MAINMEM.SVC.s 415 | Code | 11 | | 2 | 00/486A : D0 02 | BNE TELL2 1378 | 6 MAINMEM.SVC.s 416 | Code | 11 | | 2 | 00/486C : A2 00 | TELL LDX #$00 ; $00=TELL, Read PTR 1379 | 6 MAINMEM.SVC.s 417 | Code | 11 | | 3 | 00/486E : 8C B6 56 | TELL2 STY GMARKPL+1 ; File ref number 1380 | 6 MAINMEM.SVC.s 418 | Code | 11 | | 1 | 00/4871 : 48 | PHA ; Pointer to zero page 1381 | 6 MAINMEM.SVC.s 419 | Code | 11 | | 2 | 00/4872 : E0 00 | CPX #$00 ; OSARGS parameter 1382 | 6 MAINMEM.SVC.s 420 | Code | 11 | | 2 | 00/4874 : F0 08 | BEQ _POS 1383 | 6 MAINMEM.SVC.s 421 | Code | 11 | | 3 | 00/4876 : 20 00 BF | JSR {$BF00} 1384 | 6 MAINMEM.SVC.s 422 | Data | 11 | | 1 | 00/4879 : D1 | DB {$D1} 1385 | 6 MAINMEM.SVC.s 423 | Data | 11 | | 2 | 00/487A : B5 56 | DW GMARKPL ; MARK parms same as EOF parms 1386 | 6 MAINMEM.SVC.s 424 | Code | 11 | | 2 | 00/487C : 80 06 | BRA ozunid_35 1387 | 6 MAINMEM.SVC.s 425 | Code | 11 | | 3 | 00/487E : 20 00 BF | _POS JSR {$BF00} 1388 | 6 MAINMEM.SVC.s 426 | Data | 11 | | 1 | 00/4881 : CF | DB {$CF} 1389 | 6 MAINMEM.SVC.s 427 | Data | 11 | | 2 | 00/4882 : B5 56 | DW GMARKPL 1390 | 6 MAINMEM.SVC.s 428 | Code | 11 | | 1 | 00/4884 : FA | ozunid_35 PLX ; Pointer to ZP control block 1391 | 6 MAINMEM.SVC.s 429 | Code | 11 | | 2 | 00/4885 : B0 27 | BCS TELLEXIT ; Exit with error 1392 | 6 MAINMEM.SVC.s 430 | Macro | 11 | | 0 | 00/4887 | >>> ALTZP ; Alt ZP & Alt LC on 1393 | 6 MAINMEM.SVC.s 430 | Code | 11 | | 1 | 00/4887 : 78 | SEI ; Disable IRQ when AltZP on 1394 | 6 MAINMEM.SVC.s 430 | Code | 11 | | 3 | 00/4888 : AD 8B C0 | LDA $C08B ; R/W LC bank 1 1395 | 6 MAINMEM.SVC.s 430 | Code | 11 | | 3 | 00/488B : AD 8B C0 | LDA $C08B 1396 | 6 MAINMEM.SVC.s 430 | Code | 11 | | 3 | 00/488E : 8D 09 C0 | STA $C009 ; Alt ZP and LC 1397 | 6 MAINMEM.SVC.s 431 | Code | 11 | | 3 | 00/4891 : AD B7 56 | LDA GMARKPL+2 1398 | 6 MAINMEM.SVC.s 432 | Code | 11 | | 2 | 00/4894 : 95 00 | STA $00,X 1399 | 6 MAINMEM.SVC.s 433 | Code | 11 | | 3 | 00/4896 : AD B8 56 | LDA GMARKPL+3 1400 | 6 MAINMEM.SVC.s 434 | Code | 11 | | 2 | 00/4899 : 95 01 | STA $01,X 1401 | 6 MAINMEM.SVC.s 435 | Code | 11 | | 3 | 00/489B : AD B9 56 | LDA GMARKPL+4 1402 | 6 MAINMEM.SVC.s 436 | Code | 11 | | 2 | 00/489E : 95 02 | STA $02,X 1403 | 6 MAINMEM.SVC.s 437 | Code | 11 | | 2 | 00/48A0 : 74 03 | STZ $03,X ; Sizes are $00xxxxxx 1404 | 6 MAINMEM.SVC.s 438 | Macro | 11 | | 0 | 00/48A2 | >>> MAINZP ; Alt ZP off, ROM back in 1405 | 6 MAINMEM.SVC.s 438 | Code | 11 | | 3 | 00/48A2 : 8D 08 C0 | STA $C008 ; Main ZP and LC 1406 | 6 MAINMEM.SVC.s 438 | Code | 11 | | 3 | 00/48A5 : AD 81 C0 | LDA $C081 ; Bank ROM back in 1407 | 6 MAINMEM.SVC.s 438 | Code | 11 | | 3 | 00/48A8 : AD 81 C0 | LDA $C081 1408 | 6 MAINMEM.SVC.s 438 | Code | 11 | | 1 | 00/48AB : 58 | CLI ; Turn IRQ back on 1409 | 6 MAINMEM.SVC.s 439 | Code | 11 | | 2 | 00/48AC : A9 00 | LDA #$00 ; 0=Ok 1410 | 6 MAINMEM.SVC.s 440 | Macro | 11 | | 0 | 00/48AE | TELLEXIT >>> XF2AUX,OSARGSRET 1411 | 6 MAINMEM.SVC.s 440 | Code | 11 | | 3 | 00/48AE : AE 8B C0 | LDX $C08B ; R/W LC RAM, bank 1 1412 | 6 MAINMEM.SVC.s 440 | Code | 11 | | 3 | 00/48B1 : AE 8B C0 | LDX $C08B 1413 | 6 MAINMEM.SVC.s 440 | Code | 11 | | 2 | 00/48B4 : A2 E7 | LDX #OSARGSRET 1416 | 6 MAINMEM.SVC.s 440 | Code | 11 | | 3 | 00/48BB : 8E EE 03 | STX {$3EE} 1417 | 6 MAINMEM.SVC.s 440 | Code | 11 | | 1 | 00/48BE : 78 | SEI ; Disable IRQ before XFER 1418 | 6 MAINMEM.SVC.s 440 | Code | 11 | | 1 | 00/48BF : 38 | SEC ; Use aux memory 1419 | 6 MAINMEM.SVC.s 440 | Code | 11 | | 3 | 00/48C0 : 2C 58 FF | BIT $FF58 ; Set V: use alt ZP and LC 1420 | 6 MAINMEM.SVC.s 440 | Code | 11 | | 3 | 00/48C3 : 4C 14 C3 | JMP {$C314} 1421 | 6 MAINMEM.SVC.s 441 | Empty | 11 | | 0 | 00/48C6 | 1422 | 6 MAINMEM.SVC.s 442 | Empty | 11 | | 0 | 00/48C6 | 1423 | 6 MAINMEM.SVC.s 443 | Equivalence | 11 | | 0 | 00/48C6 | ZPMOS EQU $30 1424 | 6 MAINMEM.SVC.s 444 | Empty | 11 | | 0 | 00/48C6 | 1425 | 6 MAINMEM.SVC.s 445 | Comment | 11 | | 0 | 00/48C6 | * ProDOS file MOS OSFILE calls 1426 | 6 MAINMEM.SVC.s 446 | Macro | 11 | | 0 | 00/48C6 | CALLFILE >>> ENTMAIN 1427 | 6 MAINMEM.SVC.s 446 | Code | 11 | | 1 | 00/48C6 : 9A | TXS ; Main SP already in X 1428 | 6 MAINMEM.SVC.s 446 | Code | 11 | | 3 | 00/48C7 : AE 81 C0 | LDX $C081 ; Bank in ROM 1429 | 6 MAINMEM.SVC.s 446 | Code | 11 | | 3 | 00/48CA : AE 81 C0 | LDX $C081 1430 | 6 MAINMEM.SVC.s 446 | Code | 11 | | 1 | 00/48CD : 58 | CLI ; Re-enable IRQ after XFER 1431 | 6 MAINMEM.SVC.s 447 | Code | 11 | | 3 | 00/48CE : 20 E9 48 | JSR FILEDISPATCH 1432 | 6 MAINMEM.SVC.s 448 | Macro | 11 | | 0 | 00/48D1 | >>> XF2AUX,OSFILERET 1433 | 6 MAINMEM.SVC.s 448 | Code | 11 | | 3 | 00/48D1 : AE 8B C0 | LDX $C08B ; R/W LC RAM, bank 1 1434 | 6 MAINMEM.SVC.s 448 | Code | 11 | | 3 | 00/48D4 : AE 8B C0 | LDX $C08B 1435 | 6 MAINMEM.SVC.s 448 | Code | 11 | | 2 | 00/48D7 : A2 38 | LDX #OSFILERET 1438 | 6 MAINMEM.SVC.s 448 | Code | 11 | | 3 | 00/48DE : 8E EE 03 | STX {$3EE} 1439 | 6 MAINMEM.SVC.s 448 | Code | 11 | | 1 | 00/48E1 : 78 | SEI ; Disable IRQ before XFER 1440 | 6 MAINMEM.SVC.s 448 | Code | 11 | | 1 | 00/48E2 : 38 | SEC ; Use aux memory 1441 | 6 MAINMEM.SVC.s 448 | Code | 11 | | 3 | 00/48E3 : 2C 58 FF | BIT $FF58 ; Set V: use alt ZP and LC 1442 | 6 MAINMEM.SVC.s 448 | Code | 11 | | 3 | 00/48E6 : 4C 14 C3 | JMP {$C314} 1443 | 6 MAINMEM.SVC.s 449 | Code | 11 | | 2 | 00/48E9 : C9 00 | FILEDISPATCH CMP #$00 1444 | 6 MAINMEM.SVC.s 450 | Code | 11 | | 2 | 00/48EB : F0 0F | BEQ SVCSAVE ; A=00 -> SAVE 1445 | 6 MAINMEM.SVC.s 451 | Code | 11 | | 2 | 00/48ED : C9 FF | CMP #$FF 1446 | 6 MAINMEM.SVC.s 452 | Code | 11 | | 2 | 00/48EF : F0 0E | BEQ SVCLOAD ; A=FF -> LOAD 1447 | 6 MAINMEM.SVC.s 453 | Code | 11 | | 2 | 00/48F1 : C9 06 | CMP #$06 1448 | 6 MAINMEM.SVC.s 454 | Code | 11 | | 2 | 00/48F3 : F0 13 | BEQ DELFILE ; A=06 -> DELETE 1449 | 6 MAINMEM.SVC.s 455 | Code | 11 | | 2 | 00/48F5 : 90 0B | BCC INFOFILE ; A=01-05 -> INFO 1450 | 6 MAINMEM.SVC.s 456 | Code | 11 | | 2 | 00/48F7 : C9 08 | CMP #$08 1451 | 6 MAINMEM.SVC.s 457 | Code | 11 | | 2 | 00/48F9 : F0 46 | BEQ MAKEDIR ; A=08 -> MKDIR 1452 | 6 MAINMEM.SVC.s 458 | Code | 11 | | 1 | 00/48FB : 60 | RTS 1453 | 6 MAINMEM.SVC.s 459 | Code | 11 | | 3 | 00/48FC : 4C E9 49 | SVCSAVE JMP SAVEFILE 1454 | 6 MAINMEM.SVC.s 460 | Code | 11 | | 3 | 00/48FF : 4C 5F 49 | SVCLOAD JMP LOADFILE 1455 | 6 MAINMEM.SVC.s 461 | Empty | 11 | | 0 | 00/4902 | 1456 | 6 MAINMEM.SVC.s 462 | Code | 11 | | 3 | 00/4902 : 20 E9 4A | INFOFILE JSR UPDPATH ; Process path and get info 1457 | 6 MAINMEM.SVC.s 463 | Code | 11 | | 3 | 00/4905 : 4C 77 57 | JMP COPYFB ; Copy back to aux mem 1458 | 6 MAINMEM.SVC.s 464 | Empty | 11 | | 0 | 00/4908 | 1459 | 6 MAINMEM.SVC.s 465 | Empty | 11 | | 0 | 00/4908 | 1460 | 6 MAINMEM.SVC.s 466 | Comment | 11 | | 0 | 00/4908 | * ProDOS file handling to delete a file 1461 | 6 MAINMEM.SVC.s 467 | Comment | 11 | | 0 | 00/4908 | * Called by AppleMOS OSFILE 1462 | 6 MAINMEM.SVC.s 468 | Comment | 11 | | 0 | 00/4908 | * Return A=0 no object, A=1 file deleted, A=2 dir deleted 1463 | 6 MAINMEM.SVC.s 469 | Comment | 11 | | 0 | 00/4908 | * A>$1F ProDOS error 1464 | 6 MAINMEM.SVC.s 470 | Code | 11 | | 3 | 00/4908 : 20 E9 4A | DELFILE JSR UPDPATH ; Process path and get info 1465 | 6 MAINMEM.SVC.s 471 | Code | 11 | | 3 | 00/490B : 20 77 57 | JSR COPYFB ; Copy back to aux mem 1466 | 6 MAINMEM.SVC.s 472 | Code | 11 | | 1 | 00/490E : 48 | PHA ; Save object type 1467 | 6 MAINMEM.SVC.s 473 | Code | 11 | | 3 | 00/490F : 20 30 49 | JSR DODELETE 1468 | 6 MAINMEM.SVC.s 474 | Code | 11 | | 2 | 00/4912 : 90 1A | BCC _DELETED ; Success 1469 | 6 MAINMEM.SVC.s 475 | Empty | 11 | | 0 | 00/4914 | 1470 | 6 MAINMEM.SVC.s 476 | Code | 11 | | 1 | 00/4914 : AA | TAX ; X=error code 1471 | 6 MAINMEM.SVC.s 477 | Code | 11 | | 1 | 00/4915 : 68 | PLA ; Get object back 1472 | 6 MAINMEM.SVC.s 478 | Code | 11 | | 2 | 00/4916 : E0 4E | CPX #$4E 1473 | 6 MAINMEM.SVC.s 479 | Code | 11 | | 2 | 00/4918 : D0 0F | BNE _DELERROR ; Not 'Insuff. access', return it 1474 | 6 MAINMEM.SVC.s 480 | Code | 11 | | 2 | 00/491A : A2 4F | LDX #$4F ; Change to 'Locked' 1475 | 6 MAINMEM.SVC.s 481 | Empty | 11 | | 0 | 00/491C | 1476 | 6 MAINMEM.SVC.s 482 | Code | 11 | | 2 | 00/491C : C9 02 | CMP #$02 1477 | 6 MAINMEM.SVC.s 483 | Code | 11 | | 2 | 00/491E : D0 09 | BNE _DELERROR ; Wasn't a directory, return 'Locked' 1478 | 6 MAINMEM.SVC.s 484 | Code | 11 | | 3 | 00/4920 : AD CC 03 | LDA {{$03BE}+14}+0 1479 | 6 MAINMEM.SVC.s 485 | Code | 11 | | 2 | 00/4923 : 29 08 | AND #$08 1480 | 6 MAINMEM.SVC.s 486 | Code | 11 | | 2 | 00/4925 : D0 02 | BNE _DELERROR ; Dir locked, return 'Locked' 1481 | 6 MAINMEM.SVC.s 487 | Code | 11 | | 2 | 00/4927 : A2 54 | LDX #$54 ; Change to 'Dir not empty' 1482 | 6 MAINMEM.SVC.s 488 | Empty | 11 | | 0 | 00/4929 | 1483 | 6 MAINMEM.SVC.s 489 | Code | 11 | | 1 | 00/4929 : 8A | _DELERROR TXA 1484 | 6 MAINMEM.SVC.s 490 | Code | 11 | | 3 | 00/492A : 20 A9 4B | JSR CHKNOTFND 1485 | 6 MAINMEM.SVC.s 491 | Code | 11 | | 1 | 00/492D : 48 | PHA 1486 | 6 MAINMEM.SVC.s 492 | Code | 11 | | 1 | 00/492E : 68 | _DELETED PLA ; Get object back 1487 | 6 MAINMEM.SVC.s 493 | Code | 11 | | 1 | 00/492F : 60 | ozunid_36 RTS 1488 | 6 MAINMEM.SVC.s 494 | Empty | 11 | | 0 | 00/4930 | 1489 | 6 MAINMEM.SVC.s 495 | Code | 11 | | 2 | 00/4930 : A9 00 | DODELETE LDA #<{{$0300}} ; Attempt to destroy file 1490 | 6 MAINMEM.SVC.s 496 | Code | 11 | | 3 | 00/4932 : 8D 75 56 | STA DESTPL+1 1491 | 6 MAINMEM.SVC.s 497 | Code | 11 | | 2 | 00/4935 : A9 03 | LDA #>{{$0300}} 1492 | 6 MAINMEM.SVC.s 498 | Code | 11 | | 3 | 00/4937 : 8D 76 56 | STA DESTPL+2 1493 | 6 MAINMEM.SVC.s 499 | Code | 11 | | 3 | 00/493A : 20 00 BF | JSR {$BF00} 1494 | 6 MAINMEM.SVC.s 500 | Data | 11 | | 1 | 00/493D : C1 | DB {$C1} 1495 | 6 MAINMEM.SVC.s 501 | Data | 11 | | 2 | 00/493E : 74 56 | DW DESTPL 1496 | 6 MAINMEM.SVC.s 502 | Code | 11 | | 1 | 00/4940 : 60 | RTS 1497 | 6 MAINMEM.SVC.s 503 | Empty | 11 | | 0 | 00/4941 | 1498 | 6 MAINMEM.SVC.s 504 | Empty | 11 | | 0 | 00/4941 | 1499 | 6 MAINMEM.SVC.s 505 | Comment | 11 | | 0 | 00/4941 | * ProDOS file handling to create a directory 1500 | 6 MAINMEM.SVC.s 506 | Comment | 11 | | 0 | 00/4941 | * Invoked by AppleMOS OSFILE 1501 | 6 MAINMEM.SVC.s 507 | Comment | 11 | | 0 | 00/4941 | * Return A=$02 on success (ie: 'directory') 1502 | 6 MAINMEM.SVC.s 508 | Comment | 11 | | 0 | 00/4941 | * A>$1F ProDOS error, translated by OSFILE handler 1503 | 6 MAINMEM.SVC.s 509 | Code | 11 | | 3 | 00/4941 : 20 E9 4A | MAKEDIR JSR UPDPATH ; Process path and get info 1504 | 6 MAINMEM.SVC.s 510 | Code | 11 | | 2 | 00/4944 : C9 02 | CMP #$02 1505 | 6 MAINMEM.SVC.s 511 | Code | 11 | | 2 | 00/4946 : F0 13 | BEQ ozunid_37 ; Dir already exists 1506 | 6 MAINMEM.SVC.s 512 | Empty | 11 | | 0 | 00/4948 | 1507 | 6 MAINMEM.SVC.s 513 | Code | 11 | | 2 | 00/4948 : A9 0D | LDA #$0D ; OBJT='Directory' 1508 | 6 MAINMEM.SVC.s 514 | Code | 11 | | 3 | 00/494A : 8D 6F 56 | STA CREATEPL+7 ; ->Storage type 1509 | 6 MAINMEM.SVC.s 515 | Code | 11 | | 2 | 00/494D : A9 0F | LDA #$0F ; TYPE='Directory' 1510 | 6 MAINMEM.SVC.s 516 | Code | 11 | | 2 | 00/494F : A2 00 | LDX #$00 ; LOAD=$0000 1511 | 6 MAINMEM.SVC.s 517 | Code | 11 | | 2 | 00/4951 : A0 00 | LDY #$00 1512 | 6 MAINMEM.SVC.s 518 | Code | 11 | | 3 | 00/4953 : 20 DD 4A | JSR CREATEOBJ 1513 | 6 MAINMEM.SVC.s 519 | Code | 11 | | 2 | 00/4956 : B0 06 | BCS ozunid_38 ; Failed, exit with ProDOS result 1514 | 6 MAINMEM.SVC.s 520 | Code | 11 | | 3 | 00/4958 : 20 EF 4A | JSR UPDFB ; Update FILEBLK, returns A=$02 1515 | 6 MAINMEM.SVC.s 521 | Code | 11 | | 3 | 00/495B : 20 77 57 | ozunid_37 JSR COPYFB ; Copy FILEBLK to aux mem 1516 | 6 MAINMEM.SVC.s 522 | Code | 11 | | 1 | 00/495E : 60 | ozunid_38 RTS 1517 | 6 MAINMEM.SVC.s 523 | Empty | 11 | | 0 | 00/495F | 1518 | 6 MAINMEM.SVC.s 524 | Empty | 11 | | 0 | 00/495F | 1519 | 6 MAINMEM.SVC.s 525 | Comment | 11 | | 0 | 00/495F | * ProDOS file handling for MOS OSFILE LOAD call 1520 | 6 MAINMEM.SVC.s 526 | Comment | 11 | | 0 | 00/495F | * Invoked by AppleMOS OSFILE 1521 | 6 MAINMEM.SVC.s 527 | Comment | 11 | | 0 | 00/495F | * Return A=01 if successful (meaning 'file') 1522 | 6 MAINMEM.SVC.s 528 | Comment | 11 | | 0 | 00/495F | * A>$1F ProDOS error, translated by FILERET 1523 | 6 MAINMEM.SVC.s 529 | Code | 11 | | 2 | 00/495F : A2 04 | LOADFILE LDX #4 1524 | 6 MAINMEM.SVC.s 530 | Code | 11 | | 3 | 00/4961 : BD C0 03 | _LP LDA {{$03BE}+2},X ; Get address to load to 1525 | 6 MAINMEM.SVC.s 531 | Code | 11 | | 2 | 00/4964 : 95 30 | STA {$30},X 1526 | 6 MAINMEM.SVC.s 532 | Code | 11 | | 1 | 00/4966 : CA | DEX 1527 | 6 MAINMEM.SVC.s 533 | Code | 11 | | 2 | 00/4967 : 10 F8 | BPL _LP 1528 | 6 MAINMEM.SVC.s 534 | Code | 11 | | 3 | 00/4969 : 20 10 51 | JSR PREPATH ; Preprocess pathname 1529 | 6 MAINMEM.SVC.s 535 | Code | 11 | | 3 | 00/496C : 20 8A 53 | JSR WILDONE ; Handle any wildcards 1530 | 6 MAINMEM.SVC.s 536 | Code | 11 | | 3 | 00/496F : 20 EF 4A | JSR UPDFB ; Get object info 1531 | 6 MAINMEM.SVC.s 537 | Code | 11 | | 2 | 00/4972 : C9 20 | CMP #$20 1532 | 6 MAINMEM.SVC.s 538 | Code | 11 | | 2 | 00/4974 : B0 09 | BCS ozunid_39 ; Error occured 1533 | 6 MAINMEM.SVC.s 539 | Code | 11 | | 2 | 00/4976 : C9 01 | CMP #$01 ; Is it a file 1534 | 6 MAINMEM.SVC.s 540 | Code | 11 | | 2 | 00/4978 : F0 08 | BEQ _ISFILE 1535 | 6 MAINMEM.SVC.s 541 | Code | 11 | | 1 | 00/497A : 2A | ROL A ; 0->0, 2->5 1536 | 6 MAINMEM.SVC.s 542 | Code | 11 | | 2 | 00/497B : 49 05 | EOR #$05 ; 0->5, 2->0 1537 | 6 MAINMEM.SVC.s 543 | Code | 11 | | 2 | 00/497D : 69 41 | ADC #$41 ; 0->$46, 2->$41 1538 | 6 MAINMEM.SVC.s 544 | Code | 11 | | 3 | 00/497F : 4C AD 49 | ozunid_39 JMP ozunid_41 ; Return error 1539 | 6 MAINMEM.SVC.s 545 | Empty | 11 | | 0 | 00/4982 | 1540 | 6 MAINMEM.SVC.s 546 | Code | 11 | | 2 | 00/4982 : A5 34 | _ISFILE LDA {$30}+4 ; If FBEXEC is zero, use addr 1541 | 6 MAINMEM.SVC.s 547 | Code | 11 | | 2 | 00/4984 : F0 0A | BEQ _CBADDR ; in the control block 1542 | 6 MAINMEM.SVC.s 548 | Code | 11 | | 3 | 00/4986 : AD C0 03 | LDA {{$03BE}+2}+0 ; Otherwise, use file's address 1543 | 6 MAINMEM.SVC.s 549 | Code | 11 | | 2 | 00/4989 : 85 30 | STA {$30}+0 1544 | 6 MAINMEM.SVC.s 550 | Code | 11 | | 3 | 00/498B : AD C1 03 | LDA {{$03BE}+2}+1 1545 | 6 MAINMEM.SVC.s 551 | Code | 11 | | 2 | 00/498E : 85 31 | STA {$30}+1 1546 | 6 MAINMEM.SVC.s 552 | Empty | 11 | | 0 | 00/4990 | 1547 | 6 MAINMEM.SVC.s 553 | Code | 11 | | 3 | 00/4990 : 20 D7 57 | _CBADDR JSR OPENMOSFILE 1548 | 6 MAINMEM.SVC.s 554 | Code | 11 | | 2 | 00/4993 : B0 18 | BCS ozunid_41 ; File not opened 1549 | 6 MAINMEM.SVC.s 555 | Empty | 11 | | 0 | 00/4995 | 1550 | 6 MAINMEM.SVC.s 556 | Code | 11 | | 3 | 00/4995 : AD 61 56 | ozunid_40 LDA OPENPL+5 ; File ref number 1551 | 6 MAINMEM.SVC.s 557 | Code | 11 | | 3 | 00/4998 : 20 AE 49 | JSR READDATA ; Read data from open file 1552 | 6 MAINMEM.SVC.s 558 | Empty | 11 | | 0 | 00/499B | 1553 | 6 MAINMEM.SVC.s 559 | Code | 11 | | 1 | 00/499B : 48 | PHA ; Save result 1554 | 6 MAINMEM.SVC.s 560 | Code | 11 | | 3 | 00/499C : AD 61 56 | LDA OPENPL+5 ; File ref num 1555 | 6 MAINMEM.SVC.s 561 | Code | 11 | | 3 | 00/499F : 8D A5 56 | STA CLSPL+1 1556 | 6 MAINMEM.SVC.s 562 | Code | 11 | | 3 | 00/49A2 : 20 E8 57 | JSR CLSFILE 1557 | 6 MAINMEM.SVC.s 563 | Code | 11 | | 1 | 00/49A5 : 68 | PLA 1558 | 6 MAINMEM.SVC.s 564 | Code | 11 | | 2 | 00/49A6 : D0 05 | BNE ozunid_41 1559 | 6 MAINMEM.SVC.s 565 | Code | 11 | | 3 | 00/49A8 : 20 77 57 | JSR COPYFB ; Copy FILEBLK to auxmem 1560 | 6 MAINMEM.SVC.s 566 | Code | 11 | | 2 | 00/49AB : A9 01 | LDA #$01 ; $01=File 1561 | 6 MAINMEM.SVC.s 567 | Code | 11 | | 1 | 00/49AD : 60 | ozunid_41 RTS 1562 | 6 MAINMEM.SVC.s 568 | Empty | 11 | | 0 | 00/49AE | 1563 | 6 MAINMEM.SVC.s 569 | Empty | 11 | | 0 | 00/49AE | 1564 | 6 MAINMEM.SVC.s 570 | Comment | 11 | | 0 | 00/49AE | * A=channel, MOSZP+0/1=address to load to, TO DO: MOS+4/5=length to read 1565 | 6 MAINMEM.SVC.s 571 | Code | 11 | | 3 | 00/49AE : 8D 7D 56 | READDATA STA READPL+1 1566 | 6 MAINMEM.SVC.s 572 | Code | 11 | | 3 | 00/49B1 : 20 EF 57 | _RDLP JSR RDFILE 1567 | 6 MAINMEM.SVC.s 573 | Code | 11 | | 2 | 00/49B4 : B0 2C | BCS _READERR ; Close file and return any error 1568 | 6 MAINMEM.SVC.s 574 | Empty | 11 | | 0 | 00/49B6 | 1569 | 6 MAINMEM.SVC.s 575 | Code | 11 | | 2 | 00/49B6 : A9 00 | LDA #<{$9000} ; LSB of start of data buffer 1570 | 6 MAINMEM.SVC.s 576 | Code | 11 | | 2 | 00/49B8 : 85 3C | STA {$3C} ; A1=>start of data buffer 1571 | 6 MAINMEM.SVC.s 577 | Code | 11 | | 3 | 00/49BA : 6D 82 56 | ADC READPL+6 ; LSB of trans count 1572 | 6 MAINMEM.SVC.s 578 | Code | 11 | | 1 | 00/49BD : AA | TAX ; X=>LSB end of data buffer 1573 | 6 MAINMEM.SVC.s 579 | Empty | 11 | | 0 | 00/49BE | 1574 | 6 MAINMEM.SVC.s 580 | Code | 11 | | 2 | 00/49BE : A9 90 | LDA #>{$9000} ; MSB of start of data buffer 1575 | 6 MAINMEM.SVC.s 581 | Code | 11 | | 2 | 00/49C0 : 85 3D | STA {$3D} ; A1=>start of data buffer 1576 | 6 MAINMEM.SVC.s 582 | Code | 11 | | 3 | 00/49C2 : 6D 83 56 | ADC READPL+7 ; MSB of trans count 1577 | 6 MAINMEM.SVC.s 583 | Code | 11 | | 1 | 00/49C5 : A8 | TAY ; Y=>MSB end of data buffer 1578 | 6 MAINMEM.SVC.s 584 | Empty | 11 | | 0 | 00/49C6 | 1579 | 6 MAINMEM.SVC.s 585 | Code | 11 | | 1 | 00/49C6 : 8A | TXA 1580 | 6 MAINMEM.SVC.s 586 | Code | 11 | | 2 | 00/49C7 : D0 01 | BNE ozunid_42 1581 | 6 MAINMEM.SVC.s 587 | Code | 11 | | 1 | 00/49C9 : 88 | DEY 1582 | 6 MAINMEM.SVC.s 588 | Code | 11 | | 1 | 00/49CA : CA | ozunid_42 DEX ; XY=XY-1, end address is start+len-1 1583 | 6 MAINMEM.SVC.s 589 | Code | 11 | | 2 | 00/49CB : 86 3E | STX {$3E} ; A2=>end of data buffer 1584 | 6 MAINMEM.SVC.s 590 | Code | 11 | | 2 | 00/49CD : 84 3F | STY {$3F} 1585 | 6 MAINMEM.SVC.s 591 | Empty | 11 | | 0 | 00/49CF | 1586 | 6 MAINMEM.SVC.s 592 | Code | 11 | | 2 | 00/49CF : A5 30 | LDA {$30}+0 ; A4=>address to load to 1587 | 6 MAINMEM.SVC.s 593 | Code | 11 | | 2 | 00/49D1 : 85 42 | STA {$42} 1588 | 6 MAINMEM.SVC.s 594 | Code | 11 | | 2 | 00/49D3 : A5 31 | LDA {$30}+1 1589 | 6 MAINMEM.SVC.s 595 | Code | 11 | | 2 | 00/49D5 : 85 43 | STA {$43} 1590 | 6 MAINMEM.SVC.s 596 | Code | 11 | | 2 | 00/49D7 : E6 31 | INC {$30}+1 ; Step to next block 1591 | 6 MAINMEM.SVC.s 597 | Code | 11 | | 2 | 00/49D9 : E6 31 | INC {$30}+1 1592 | 6 MAINMEM.SVC.s 598 | Empty | 11 | | 0 | 00/49DB | 1593 | 6 MAINMEM.SVC.s 599 | Code | 11 | | 1 | 00/49DB : 38 | SEC ; Main -> AUX 1594 | 6 MAINMEM.SVC.s 600 | Code | 11 | | 3 | 00/49DC : 20 11 C3 | JSR {$C311} ; A4 updated to next address 1595 | 6 MAINMEM.SVC.s 601 | Code | 11 | | 3 | 00/49DF : 4C B1 49 | JMP _RDLP 1596 | 6 MAINMEM.SVC.s 602 | Empty | 11 | | 0 | 00/49E2 | 1597 | 6 MAINMEM.SVC.s 603 | Code | 11 | | 2 | 00/49E2 : C9 4C | _READERR CMP #$4C 1598 | 6 MAINMEM.SVC.s 604 | Code | 11 | | 2 | 00/49E4 : D0 02 | BNE _EXITERR 1599 | 6 MAINMEM.SVC.s 605 | Code | 11 | | 2 | 00/49E6 : A9 00 | _EXITOK LDA #$00 ; $00=Success 1600 | 6 MAINMEM.SVC.s 606 | Code | 11 | | 1 | 00/49E8 : 60 | _EXITERR RTS 1601 | 6 MAINMEM.SVC.s 607 | Empty | 11 | | 0 | 00/49E9 | 1602 | 6 MAINMEM.SVC.s 608 | Empty | 11 | | 0 | 00/49E9 | 1603 | 6 MAINMEM.SVC.s 609 | Comment | 11 | | 0 | 00/49E9 | * ProDOS file handling for MOS OSFILE SAVE call 1604 | 6 MAINMEM.SVC.s 610 | Comment | 11 | | 0 | 00/49E9 | * Invoked by AppleMOS OSFILE 1605 | 6 MAINMEM.SVC.s 611 | Comment | 11 | | 0 | 00/49E9 | * Return A=01 if successful (ie: 'file') 1606 | 6 MAINMEM.SVC.s 612 | Comment | 11 | | 0 | 00/49E9 | * A>$1F ProDOS error translated by FILERET 1607 | 6 MAINMEM.SVC.s 613 | Code | 11 | | 1 | 00/49E9 : 38 | SAVEFILE SEC ; Compute file length 1608 | 6 MAINMEM.SVC.s 614 | Code | 11 | | 3 | 00/49EA : AD CC 03 | LDA {{$03BE}+14}+0 1609 | 6 MAINMEM.SVC.s 615 | Code | 11 | | 3 | 00/49ED : ED C8 03 | SBC {{$03BE}+10}+0 1610 | 6 MAINMEM.SVC.s 616 | Code | 11 | | 3 | 00/49F0 : 8D D4 4A | STA LENREM+0 1611 | 6 MAINMEM.SVC.s 617 | Code | 11 | | 3 | 00/49F3 : AD CD 03 | LDA {{$03BE}+14}+1 1612 | 6 MAINMEM.SVC.s 618 | Code | 11 | | 3 | 00/49F6 : ED C9 03 | SBC {{$03BE}+10}+1 1613 | 6 MAINMEM.SVC.s 619 | Code | 11 | | 3 | 00/49F9 : 8D D5 4A | STA LENREM+1 1614 | 6 MAINMEM.SVC.s 620 | Code | 11 | | 3 | 00/49FC : AD CE 03 | LDA {{$03BE}+14}+2 1615 | 6 MAINMEM.SVC.s 621 | Code | 11 | | 3 | 00/49FF : ED CA 03 | SBC {{$03BE}+10}+2 1616 | 6 MAINMEM.SVC.s 622 | Code | 11 | | 2 | 00/4A02 : D0 08 | BNE _TOOBIG ; >64K 1617 | 6 MAINMEM.SVC.s 623 | Code | 11 | | 3 | 00/4A04 : AD CF 03 | LDA {{$03BE}+14}+3 1618 | 6 MAINMEM.SVC.s 624 | Code | 11 | | 3 | 00/4A07 : ED CB 03 | SBC {{$03BE}+10}+3 1619 | 6 MAINMEM.SVC.s 625 | Code | 11 | | 2 | 00/4A0A : F0 03 | BEQ _L0 ; >16M 1620 | 6 MAINMEM.SVC.s 626 | Code | 11 | | 2 | 00/4A0C : A9 2C | _TOOBIG LDA #$2C ; Bad byte count - file too long 1621 | 6 MAINMEM.SVC.s 627 | Code | 11 | | 1 | 00/4A0E : 60 | RTS 1622 | 6 MAINMEM.SVC.s 628 | Empty | 11 | | 0 | 00/4A0F | 1623 | 6 MAINMEM.SVC.s 629 | Code | 11 | | 3 | 00/4A0F : 20 10 51 | _L0 JSR PREPATH ; Preprocess pathname 1624 | 6 MAINMEM.SVC.s 630 | Code | 11 | | 3 | 00/4A12 : 20 5C 57 | JSR EXISTS ; See if file exists ... 1625 | 6 MAINMEM.SVC.s 631 | Code | 11 | | 2 | 00/4A15 : C9 01 | CMP #$01 1626 | 6 MAINMEM.SVC.s 632 | Code | 11 | | 2 | 00/4A17 : F0 0B | BEQ ozunid_43 ; Overwrite file 1627 | 6 MAINMEM.SVC.s 633 | Code | 11 | | 2 | 00/4A19 : 90 1B | BCC _NOFILE ; Create new file 1628 | 6 MAINMEM.SVC.s 634 | Code | 11 | | 2 | 00/4A1B : C9 02 | CMP #$02 1629 | 6 MAINMEM.SVC.s 635 | Code | 11 | | 2 | 00/4A1D : D0 02 | BNE _JMPEXIT2 1630 | 6 MAINMEM.SVC.s 636 | Code | 11 | | 2 | 00/4A1F : A9 41 | LDA #$41 ; Dir exists, return $41 1631 | 6 MAINMEM.SVC.s 637 | Code | 11 | | 3 | 00/4A21 : 4C 61 4A | _JMPEXIT2 JMP ozunid_45 1632 | 6 MAINMEM.SVC.s 638 | Empty | 11 | | 0 | 00/4A24 | 1633 | 6 MAINMEM.SVC.s 639 | Code | 11 | | 2 | 00/4A24 : A9 00 | ozunid_43 LDA #<{{$0300}} ; Attempt to destroy file 1634 | 6 MAINMEM.SVC.s 640 | Code | 11 | | 3 | 00/4A26 : 8D 75 56 | STA DESTPL+1 1635 | 6 MAINMEM.SVC.s 641 | Code | 11 | | 2 | 00/4A29 : A9 03 | LDA #>{{$0300}} 1636 | 6 MAINMEM.SVC.s 642 | Code | 11 | | 3 | 00/4A2B : 8D 76 56 | STA DESTPL+2 1637 | 6 MAINMEM.SVC.s 643 | Code | 11 | | 3 | 00/4A2E : 20 00 BF | JSR {$BF00} 1638 | 6 MAINMEM.SVC.s 644 | Data | 11 | | 1 | 00/4A31 : C1 | DB {$C1} 1639 | 6 MAINMEM.SVC.s 645 | Data | 11 | | 2 | 00/4A32 : 74 56 | DW DESTPL 1640 | 6 MAINMEM.SVC.s 646 | Code | 11 | | 2 | 00/4A34 : B0 2B | BCS ozunid_45 ; Error trying to delete 1641 | 6 MAINMEM.SVC.s 647 | Empty | 11 | | 0 | 00/4A36 | 1642 | 6 MAINMEM.SVC.s 648 | Code | 11 | | 3 | 00/4A36 : AE C0 03 | _NOFILE LDX {{$03BE}+2}+0 ; Auxtype = load address 1643 | 6 MAINMEM.SVC.s 649 | Code | 11 | | 3 | 00/4A39 : AC C1 03 | LDY {{$03BE}+2}+1 1644 | 6 MAINMEM.SVC.s 650 | Code | 11 | | 3 | 00/4A3C : 20 D6 4A | JSR CREATEFILE 1645 | 6 MAINMEM.SVC.s 651 | Code | 11 | | 2 | 00/4A3F : B0 E0 | BCS _JMPEXIT2 ; Error trying to create 1646 | 6 MAINMEM.SVC.s 652 | Code | 11 | | 3 | 00/4A41 : 20 D7 57 | JSR OPENMOSFILE 1647 | 6 MAINMEM.SVC.s 653 | Code | 11 | | 2 | 00/4A44 : B0 DB | BCS _JMPEXIT2 ; Error trying to open 1648 | 6 MAINMEM.SVC.s 654 | Code | 11 | | 3 | 00/4A46 : AD 61 56 | LDA OPENPL+5 ; File ref number 1649 | 6 MAINMEM.SVC.s 655 | Code | 11 | | 3 | 00/4A49 : 20 68 4A | JSR WRITEDATA 1650 | 6 MAINMEM.SVC.s 656 | Empty | 11 | | 0 | 00/4A4C | 1651 | 6 MAINMEM.SVC.s 657 | Code | 11 | | 1 | 00/4A4C : 48 | ozunid_44 PHA ; Save result 1652 | 6 MAINMEM.SVC.s 658 | Code | 11 | | 3 | 00/4A4D : AD 61 56 | LDA OPENPL+5 ; File ref num 1653 | 6 MAINMEM.SVC.s 659 | Code | 11 | | 3 | 00/4A50 : 8D A5 56 | STA CLSPL+1 1654 | 6 MAINMEM.SVC.s 660 | Code | 11 | | 3 | 00/4A53 : 20 E8 57 | JSR CLSFILE 1655 | 6 MAINMEM.SVC.s 661 | Code | 11 | | 1 | 00/4A56 : 68 | PLA 1656 | 6 MAINMEM.SVC.s 662 | Code | 11 | | 2 | 00/4A57 : D0 08 | BNE ozunid_45 ; Error returned 1657 | 6 MAINMEM.SVC.s 663 | Code | 11 | | 3 | 00/4A59 : 20 EF 4A | JSR UPDFB ; Update FILEBLK 1658 | 6 MAINMEM.SVC.s 664 | Code | 11 | | 3 | 00/4A5C : 20 77 57 | JSR COPYFB ; Copy FILEBLK to aux mem 1659 | 6 MAINMEM.SVC.s 665 | Code | 11 | | 2 | 00/4A5F : A9 01 | LDA #$01 ; Return A='File' 1660 | 6 MAINMEM.SVC.s 666 | Code | 11 | | 2 | 00/4A61 : C9 4E | ozunid_45 CMP #$4E 1661 | 6 MAINMEM.SVC.s 667 | Code | 11 | | 2 | 00/4A63 : D0 02 | BNE _EXIT3 ; Change 'Insuff. access' 1662 | 6 MAINMEM.SVC.s 668 | Code | 11 | | 2 | 00/4A65 : A9 4F | LDA #$4F ; to 'Locked' 1663 | 6 MAINMEM.SVC.s 669 | Code | 11 | | 1 | 00/4A67 : 60 | _EXIT3 RTS 1664 | 6 MAINMEM.SVC.s 670 | Empty | 11 | | 0 | 00/4A68 | 1665 | 6 MAINMEM.SVC.s 671 | Empty | 11 | | 0 | 00/4A68 | 1666 | 6 MAINMEM.SVC.s 672 | Comment | 11 | | 0 | 00/4A68 | * A=channel, FBSTRT+0/1=address to save from 1667 | 6 MAINMEM.SVC.s 673 | Comment | 11 | | 0 | 00/4A68 | * LENREM+0/1=length to write 1668 | 6 MAINMEM.SVC.s 674 | Code | 11 | | 3 | 00/4A68 : 8D 95 56 | WRITEDATA STA WRITEPL+1 1669 | 6 MAINMEM.SVC.s 675 | Code | 11 | | 2 | 00/4A6B : A9 00 | ozunid_46 LDA #$00 ; 512 bytes request count 1670 | 6 MAINMEM.SVC.s 676 | Code | 11 | | 3 | 00/4A6D : 8D 98 56 | STA WRITEPL+4 1671 | 6 MAINMEM.SVC.s 677 | Code | 11 | | 2 | 00/4A70 : A9 02 | LDA #$02 1672 | 6 MAINMEM.SVC.s 678 | Code | 11 | | 3 | 00/4A72 : 8D 99 56 | STA WRITEPL+5 1673 | 6 MAINMEM.SVC.s 679 | Empty | 11 | | 0 | 00/4A75 | 1674 | 6 MAINMEM.SVC.s 680 | Code | 11 | | 3 | 00/4A75 : AD D5 4A | LDA LENREM+1 1675 | 6 MAINMEM.SVC.s 681 | Code | 11 | | 2 | 00/4A78 : C9 02 | CMP #$02 1676 | 6 MAINMEM.SVC.s 682 | Code | 11 | | 2 | 00/4A7A : B0 0E | BCS _L15 ; More than 511 bytes remaining 1677 | 6 MAINMEM.SVC.s 683 | Code | 11 | | 3 | 00/4A7C : 8D 99 56 | STA WRITEPL+5 1678 | 6 MAINMEM.SVC.s 684 | Code | 11 | | 3 | 00/4A7F : AD D4 4A | LDA LENREM+0 1679 | 6 MAINMEM.SVC.s 685 | Code | 11 | | 3 | 00/4A82 : 8D 98 56 | STA WRITEPL+4 1680 | 6 MAINMEM.SVC.s 686 | Code | 11 | | 3 | 00/4A85 : 0D 99 56 | ORA WRITEPL+5 1681 | 6 MAINMEM.SVC.s 687 | Code | 11 | | 2 | 00/4A88 : F0 49 | BEQ _SAVEOK ; Zero bytes remaining 1682 | 6 MAINMEM.SVC.s 688 | Empty | 11 | | 0 | 00/4A8A | 1683 | 6 MAINMEM.SVC.s 689 | Code | 11 | | 1 | 00/4A8A : 38 | _L15 SEC 1684 | 6 MAINMEM.SVC.s 690 | Code | 11 | | 3 | 00/4A8B : AD D4 4A | LDA LENREM+0 ; LENREM=LENREM-count 1685 | 6 MAINMEM.SVC.s 691 | Code | 11 | | 3 | 00/4A8E : ED 98 56 | SBC WRITEPL+4 1686 | 6 MAINMEM.SVC.s 692 | Code | 11 | | 3 | 00/4A91 : 8D D4 4A | STA LENREM+0 1687 | 6 MAINMEM.SVC.s 693 | Code | 11 | | 3 | 00/4A94 : AD D5 4A | LDA LENREM+1 1688 | 6 MAINMEM.SVC.s 694 | Code | 11 | | 3 | 00/4A97 : ED 99 56 | SBC WRITEPL+5 1689 | 6 MAINMEM.SVC.s 695 | Code | 11 | | 3 | 00/4A9A : 8D D5 4A | STA LENREM+1 1690 | 6 MAINMEM.SVC.s 696 | Empty | 11 | | 0 | 00/4A9D | 1691 | 6 MAINMEM.SVC.s 697 | Code | 11 | | 1 | 00/4A9D : 18 | CLC 1692 | 6 MAINMEM.SVC.s 698 | Code | 11 | | 3 | 00/4A9E : AD C8 03 | LDA {{$03BE}+10}+0 1693 | 6 MAINMEM.SVC.s 699 | Code | 11 | | 2 | 00/4AA1 : 85 3C | STA {$3C} ; A1=>start of this block 1694 | 6 MAINMEM.SVC.s 700 | Code | 11 | | 3 | 00/4AA3 : 6D 98 56 | ADC WRITEPL+4 1695 | 6 MAINMEM.SVC.s 701 | Code | 11 | | 3 | 00/4AA6 : 8D C8 03 | STA {{$03BE}+10}+0 ; Update FBSTRT=>start of next block 1696 | 6 MAINMEM.SVC.s 702 | Code | 11 | | 1 | 00/4AA9 : AA | TAX ; X=>end of this block 1697 | 6 MAINMEM.SVC.s 703 | Empty | 11 | | 0 | 00/4AAA | 1698 | 6 MAINMEM.SVC.s 704 | Code | 11 | | 3 | 00/4AAA : AD C9 03 | LDA {{$03BE}+10}+1 1699 | 6 MAINMEM.SVC.s 705 | Code | 11 | | 2 | 00/4AAD : 85 3D | STA {$3D} 1700 | 6 MAINMEM.SVC.s 706 | Code | 11 | | 3 | 00/4AAF : 6D 99 56 | ADC WRITEPL+5 1701 | 6 MAINMEM.SVC.s 707 | Code | 11 | | 3 | 00/4AB2 : 8D C9 03 | STA {{$03BE}+10}+1 1702 | 6 MAINMEM.SVC.s 708 | Code | 11 | | 1 | 00/4AB5 : A8 | TAY 1703 | 6 MAINMEM.SVC.s 709 | Empty | 11 | | 0 | 00/4AB6 | 1704 | 6 MAINMEM.SVC.s 710 | Code | 11 | | 1 | 00/4AB6 : 8A | TXA 1705 | 6 MAINMEM.SVC.s 711 | Code | 11 | | 2 | 00/4AB7 : D0 01 | BNE ozunid_47 1706 | 6 MAINMEM.SVC.s 712 | Code | 11 | | 1 | 00/4AB9 : 88 | DEY 1707 | 6 MAINMEM.SVC.s 713 | Code | 11 | | 1 | 00/4ABA : CA | ozunid_47 DEX ; XY=XY-1, end address is start+len-1 1708 | 6 MAINMEM.SVC.s 714 | Code | 11 | | 2 | 00/4ABB : 86 3E | STX {$3E} ; A2=>end of data buffer 1709 | 6 MAINMEM.SVC.s 715 | Code | 11 | | 2 | 00/4ABD : 84 3F | STY {$3F} 1710 | 6 MAINMEM.SVC.s 716 | Empty | 11 | | 0 | 00/4ABF | 1711 | 6 MAINMEM.SVC.s 717 | Code | 11 | | 2 | 00/4ABF : A9 00 | ozunid_48 LDA #<{$9000} 1712 | 6 MAINMEM.SVC.s 718 | Code | 11 | | 2 | 00/4AC1 : 85 42 | STA {$42} 1713 | 6 MAINMEM.SVC.s 719 | Code | 11 | | 2 | 00/4AC3 : A9 90 | LDA #>{$9000} 1714 | 6 MAINMEM.SVC.s 720 | Code | 11 | | 2 | 00/4AC5 : 85 43 | STA {$43} 1715 | 6 MAINMEM.SVC.s 721 | Code | 11 | | 1 | 00/4AC7 : 18 | CLC ; Aux -> Main 1716 | 6 MAINMEM.SVC.s 722 | Code | 11 | | 3 | 00/4AC8 : 20 11 C3 | JSR {$C311} ; Copy data from aux to local buffer 1717 | 6 MAINMEM.SVC.s 723 | Empty | 11 | | 0 | 00/4ACB | 1718 | 6 MAINMEM.SVC.s 724 | Code | 11 | | 3 | 00/4ACB : 20 F6 57 | JSR WRTFILE ; Write the data 1719 | 6 MAINMEM.SVC.s 725 | Code | 11 | | 2 | 00/4ACE : B0 03 | BCS _WRITEERR 1720 | 6 MAINMEM.SVC.s 726 | Code | 11 | | 3 | 00/4AD0 : 4C 6B 4A | JMP ozunid_46 ; Loop back for next block 1721 | 6 MAINMEM.SVC.s 727 | Empty | 11 | | 0 | 00/4AD3 | _SAVEOK ; Enter here with A=$00 1722 | 6 MAINMEM.SVC.s 728 | Code | 11 | | 1 | 00/4AD3 : 60 | _WRITEERR RTS 1723 | 6 MAINMEM.SVC.s 729 | Data | 11 | | 2 | 00/4AD4 : 00 00 | LENREM DW $0000 ; Remaining length 1724 | 6 MAINMEM.SVC.s 730 | Empty | 11 | | 0 | 00/4AD6 | 1725 | 6 MAINMEM.SVC.s 731 | Empty | 11 | | 0 | 00/4AD6 | 1726 | 6 MAINMEM.SVC.s 732 | Code | 11 | | 2 | 00/4AD6 : A9 01 | CREATEFILE LDA #$01 ; Storage type - file 1727 | 6 MAINMEM.SVC.s 733 | Code | 11 | | 3 | 00/4AD8 : 8D 6F 56 | STA CREATEPL+7 1728 | 6 MAINMEM.SVC.s 734 | Code | 11 | | 2 | 00/4ADB : A9 06 | LDA #$06 ; Filetype BIN 1729 | 6 MAINMEM.SVC.s 735 | Empty | 11 | | 0 | 00/4ADD | 1730 | 6 MAINMEM.SVC.s 736 | Code | 11 | | 3 | 00/4ADD : 8D 6C 56 | CREATEOBJ STA CREATEPL+4 ; Type = BIN or DIR 1731 | 6 MAINMEM.SVC.s 737 | Code | 11 | | 3 | 00/4AE0 : 8E 6D 56 | STX CREATEPL+5 ; Auxtype = load address 1732 | 6 MAINMEM.SVC.s 738 | Code | 11 | | 3 | 00/4AE3 : 8C 6E 56 | STY CREATEPL+6 1733 | 6 MAINMEM.SVC.s 739 | Code | 11 | | 3 | 00/4AE6 : 4C A5 57 | JMP CRTFILE 1734 | 6 MAINMEM.SVC.s 740 | Empty | 11 | | 0 | 00/4AE9 | 1735 | 6 MAINMEM.SVC.s 741 | Empty | 11 | | 0 | 00/4AE9 | 1736 | 6 MAINMEM.SVC.s 742 | Comment | 11 | | 0 | 00/4AE9 | * Process pathname and read object info 1737 | 6 MAINMEM.SVC.s 743 | Code | 11 | | 3 | 00/4AE9 : 20 10 51 | UPDPATH JSR PREPATH ; Process pathname 1738 | 6 MAINMEM.SVC.s 744 | Code | 11 | | 2 | 00/4AEC : 90 01 | BCC UPDFB ; If no error, update control block 1739 | 6 MAINMEM.SVC.s 745 | Code | 11 | | 1 | 00/4AEE : 60 | RTS 1740 | 6 MAINMEM.SVC.s 746 | Empty | 11 | | 0 | 00/4AEF | 1741 | 6 MAINMEM.SVC.s 747 | Comment | 11 | | 0 | 00/4AEF | * Update FILEBLK before returning to aux memory 1742 | 6 MAINMEM.SVC.s 748 | Comment | 11 | | 0 | 00/4AEF | * Returns A=object type or ProDOS error 1743 | 6 MAINMEM.SVC.s 749 | Code | 11 | | 2 | 00/4AEF : A9 00 | UPDFB LDA #<{{$0300}} 1744 | 6 MAINMEM.SVC.s 750 | Code | 11 | | 3 | 00/4AF1 : 8D C0 56 | STA GINFOPL+1 1745 | 6 MAINMEM.SVC.s 751 | Code | 11 | | 2 | 00/4AF4 : A9 03 | LDA #>{{$0300}} 1746 | 6 MAINMEM.SVC.s 752 | Code | 11 | | 3 | 00/4AF6 : 8D C1 56 | STA GINFOPL+2 1747 | 6 MAINMEM.SVC.s 753 | Code | 11 | | 3 | 00/4AF9 : 20 8D 57 | JSR GETINFO ; Call GET_FILE_INFO 1748 | 6 MAINMEM.SVC.s 754 | Code | 11 | | 2 | 00/4AFC : 90 03 | BCC _UPDFB1 1749 | 6 MAINMEM.SVC.s 755 | Code | 11 | | 3 | 00/4AFE : 4C A9 4B | JMP CHKNOTFND 1750 | 6 MAINMEM.SVC.s 756 | Empty | 11 | | 0 | 00/4B01 | 1751 | 6 MAINMEM.SVC.s 757 | Code | 11 | | 3 | 00/4B01 : AD C4 56 | _UPDFB1 LDA GINFOPL+5 ; Aux type LSB 1752 | 6 MAINMEM.SVC.s 758 | Code | 11 | | 3 | 00/4B04 : 8D C0 03 | STA {{$03BE}+2} 1753 | 6 MAINMEM.SVC.s 759 | Code | 11 | | 3 | 00/4B07 : 8D C4 03 | STA {{$03BE}+6} 1754 | 6 MAINMEM.SVC.s 760 | Code | 11 | | 3 | 00/4B0A : AD C5 56 | LDA GINFOPL+6 ; Aux type MSB 1755 | 6 MAINMEM.SVC.s 761 | Code | 11 | | 3 | 00/4B0D : 8D C1 03 | STA {{$03BE}+2}+1 1756 | 6 MAINMEM.SVC.s 762 | Code | 11 | | 3 | 00/4B10 : 8D C5 03 | STA {{$03BE}+6}+1 1757 | 6 MAINMEM.SVC.s 763 | Code | 11 | | 3 | 00/4B13 : 9C C2 03 | STZ {{$03BE}+2}+2 1758 | 6 MAINMEM.SVC.s 764 | Code | 11 | | 3 | 00/4B16 : 9C C6 03 | STZ {{$03BE}+6}+2 1759 | 6 MAINMEM.SVC.s 765 | Code | 11 | | 3 | 00/4B19 : 9C C3 03 | STZ {{$03BE}+2}+3 1760 | 6 MAINMEM.SVC.s 766 | Code | 11 | | 3 | 00/4B1C : 9C C7 03 | STZ {{$03BE}+6}+3 1761 | 6 MAINMEM.SVC.s 767 | Comment | 11 | | 0 | 00/4B1F | * 1762 | 6 MAINMEM.SVC.s 768 | Code | 11 | | 3 | 00/4B1F : AD C2 56 | LDA GINFOPL+3 ; Access byte 1763 | 6 MAINMEM.SVC.s 769 | Code | 11 | | 2 | 00/4B22 : C9 40 | CMP #$40 ; Locked? 1764 | 6 MAINMEM.SVC.s 770 | Code | 11 | | 2 | 00/4B24 : 29 03 | AND #$03 ; ------wr 1765 | 6 MAINMEM.SVC.s 771 | Code | 11 | | 1 | 00/4B26 : 08 | PHP 1766 | 6 MAINMEM.SVC.s 772 | Code | 11 | | 3 | 00/4B27 : 8D CC 03 | STA {{$03BE}+14}+0 1767 | 6 MAINMEM.SVC.s 773 | Code | 11 | | 1 | 00/4B2A : 0A | ASL A ; -----wr- 1768 | 6 MAINMEM.SVC.s 774 | Code | 11 | | 1 | 00/4B2B : 0A | ASL A ; ----wr-- 1769 | 6 MAINMEM.SVC.s 775 | Code | 11 | | 1 | 00/4B2C : 0A | ASL A ; ---wr--- 1770 | 6 MAINMEM.SVC.s 776 | Code | 11 | | 1 | 00/4B2D : 0A | ASL A ; --wr---- 1771 | 6 MAINMEM.SVC.s 777 | Code | 11 | | 1 | 00/4B2E : 28 | PLP 1772 | 6 MAINMEM.SVC.s 778 | Code | 11 | | 2 | 00/4B2F : B0 02 | BCS _UPDFB2 1773 | 6 MAINMEM.SVC.s 779 | Code | 11 | | 2 | 00/4B31 : 09 08 | ORA #$08 ; --wrl--- 1774 | 6 MAINMEM.SVC.s 780 | Code | 11 | | 3 | 00/4B33 : 0D CC 03 | _UPDFB2 ORA {{$03BE}+14}+0 ; --wrl-wr 1775 | 6 MAINMEM.SVC.s 781 | Code | 11 | | 3 | 00/4B36 : 8D CC 03 | STA {{$03BE}+14}+0 1776 | 6 MAINMEM.SVC.s 782 | Comment | 11 | | 0 | 00/4B39 | * 1777 | 6 MAINMEM.SVC.s 783 | Code | 11 | | 3 | 00/4B39 : AD CA 56 | LDA GINFOPL+11 ; yyyyyyym 1778 | 6 MAINMEM.SVC.s 784 | Code | 11 | | 1 | 00/4B3C : 48 | PHA 1779 | 6 MAINMEM.SVC.s 785 | Code | 11 | | 1 | 00/4B3D : 6A | ROR A ; ?yyyyyyy m 1780 | 6 MAINMEM.SVC.s 786 | Code | 11 | | 3 | 00/4B3E : AD C9 56 | LDA GINFOPL+10 ; mmmddddd m 1781 | 6 MAINMEM.SVC.s 787 | Code | 11 | | 1 | 00/4B41 : 48 | PHA 1782 | 6 MAINMEM.SVC.s 788 | Code | 11 | | 1 | 00/4B42 : 6A | ROR A ; mmmmdddd 1783 | 6 MAINMEM.SVC.s 789 | Code | 11 | | 1 | 00/4B43 : 4A | LSR A ; -mmmmddd 1784 | 6 MAINMEM.SVC.s 790 | Code | 11 | | 1 | 00/4B44 : 4A | LSR A ; --mmmmdd 1785 | 6 MAINMEM.SVC.s 791 | Code | 11 | | 1 | 00/4B45 : 4A | LSR A ; ---mmmmd 1786 | 6 MAINMEM.SVC.s 792 | Code | 11 | | 1 | 00/4B46 : 4A | LSR A ; ----mmmm 1787 | 6 MAINMEM.SVC.s 793 | Code | 11 | | 3 | 00/4B47 : 8D CE 03 | STA {{$03BE}+14}+2 1788 | 6 MAINMEM.SVC.s 794 | Code | 11 | | 1 | 00/4B4A : 68 | PLA ; mmmddddd 1789 | 6 MAINMEM.SVC.s 795 | Code | 11 | | 2 | 00/4B4B : 29 1F | AND #31 ; ---ddddd 1790 | 6 MAINMEM.SVC.s 796 | Code | 11 | | 3 | 00/4B4D : 8D CD 03 | STA {{$03BE}+14}+1 1791 | 6 MAINMEM.SVC.s 797 | Code | 11 | | 1 | 00/4B50 : 68 | PLA ; yyyyyyym 1792 | 6 MAINMEM.SVC.s 798 | Code | 11 | | 1 | 00/4B51 : 38 | SEC 1793 | 6 MAINMEM.SVC.s 799 | Code | 11 | | 2 | 00/4B52 : E9 A2 | SBC #81*2 ; Offset from 1981 1794 | 6 MAINMEM.SVC.s 800 | Code | 11 | | 2 | 00/4B54 : B0 02 | BCS _UPDFB3 ; 1981-1999 -> 00-18 1795 | 6 MAINMEM.SVC.s 801 | Code | 11 | | 2 | 00/4B56 : 69 C8 | ADC #100*2 ; 2000-2080 -> 19-99 1796 | 6 MAINMEM.SVC.s 802 | Code | 11 | | 1 | 00/4B58 : 48 | _UPDFB3 PHA ; yyyyyyym 1797 | 6 MAINMEM.SVC.s 803 | Code | 11 | | 2 | 00/4B59 : 29 E0 | AND #$E0 ; yyy----- 1798 | 6 MAINMEM.SVC.s 804 | Code | 11 | | 3 | 00/4B5B : 0D CD 03 | ORA {{$03BE}+14}+1 ; yyyddddd 1799 | 6 MAINMEM.SVC.s 805 | Code | 11 | | 3 | 00/4B5E : 8D CD 03 | STA {{$03BE}+14}+1 1800 | 6 MAINMEM.SVC.s 806 | Code | 11 | | 1 | 00/4B61 : 68 | PLA ; yyyyyyym 1801 | 6 MAINMEM.SVC.s 807 | Code | 11 | | 2 | 00/4B62 : 29 FE | AND #$FE ; yyyyyyy0 1802 | 6 MAINMEM.SVC.s 808 | Code | 11 | | 1 | 00/4B64 : 0A | ASL A ; yyyyyy00 1803 | 6 MAINMEM.SVC.s 809 | Code | 11 | | 1 | 00/4B65 : 0A | ASL A ; yyyyy000 1804 | 6 MAINMEM.SVC.s 810 | Code | 11 | | 1 | 00/4B66 : 0A | ASL A ; yyyy0000 1805 | 6 MAINMEM.SVC.s 811 | Code | 11 | | 3 | 00/4B67 : 0D CE 03 | ORA {{$03BE}+14}+2 ; yyyymmmm 1806 | 6 MAINMEM.SVC.s 812 | Code | 11 | | 3 | 00/4B6A : 8D CE 03 | STA {{$03BE}+14}+2 1807 | 6 MAINMEM.SVC.s 813 | Code | 11 | | 3 | 00/4B6D : 9C CF 03 | STZ {{$03BE}+14}+3 1808 | 6 MAINMEM.SVC.s 814 | Empty | 11 | | 0 | 00/4B70 | 1809 | 6 MAINMEM.SVC.s 815 | Code | 11 | | 3 | 00/4B70 : 20 D7 57 | JSR OPENMOSFILE ; Open file 1810 | 6 MAINMEM.SVC.s 816 | Code | 11 | | 2 | 00/4B73 : B0 34 | BCS ozunid_49 1811 | 6 MAINMEM.SVC.s 817 | Code | 11 | | 3 | 00/4B75 : AD 61 56 | LDA OPENPL+5 ; File ref number 1812 | 6 MAINMEM.SVC.s 818 | Code | 11 | | 3 | 00/4B78 : 8D B6 56 | STA GMARKPL+1 1813 | 6 MAINMEM.SVC.s 819 | Code | 11 | | 3 | 00/4B7B : 20 00 BF | JSR {$BF00} ; Call GET_EOF MLI 1814 | 6 MAINMEM.SVC.s 820 | Data | 11 | | 1 | 00/4B7E : D1 | DB {$D1} 1815 | 6 MAINMEM.SVC.s 821 | Data | 11 | | 2 | 00/4B7F : B5 56 | DW GMARKPL ; MARK parms same as EOF 1816 | 6 MAINMEM.SVC.s 822 | Code | 11 | | 3 | 00/4B81 : AD B7 56 | LDA GMARKPL+2 1817 | 6 MAINMEM.SVC.s 823 | Code | 11 | | 3 | 00/4B84 : 8D C8 03 | STA {{$03BE}+10}+0 1818 | 6 MAINMEM.SVC.s 824 | Code | 11 | | 3 | 00/4B87 : AD B8 56 | LDA GMARKPL+3 1819 | 6 MAINMEM.SVC.s 825 | Code | 11 | | 3 | 00/4B8A : 8D C9 03 | STA {{$03BE}+10}+1 1820 | 6 MAINMEM.SVC.s 826 | Code | 11 | | 3 | 00/4B8D : AD B9 56 | LDA GMARKPL+4 1821 | 6 MAINMEM.SVC.s 827 | Code | 11 | | 3 | 00/4B90 : 8D CA 03 | STA {{$03BE}+10}+2 1822 | 6 MAINMEM.SVC.s 828 | Code | 11 | | 3 | 00/4B93 : 9C CB 03 | STZ {{$03BE}+10}+3 1823 | 6 MAINMEM.SVC.s 829 | Code | 11 | | 3 | 00/4B96 : AD 61 56 | LDA OPENPL+5 ; File ref number 1824 | 6 MAINMEM.SVC.s 830 | Code | 11 | | 3 | 00/4B99 : 8D A5 56 | STA CLSPL+1 1825 | 6 MAINMEM.SVC.s 831 | Code | 11 | | 3 | 00/4B9C : 20 E8 57 | JSR CLSFILE 1826 | 6 MAINMEM.SVC.s 832 | Code | 11 | | 2 | 00/4B9F : A9 01 | LDA #$01 ; Prepare A=file 1827 | 6 MAINMEM.SVC.s 833 | Code | 11 | | 3 | 00/4BA1 : AE C6 56 | LDX GINFOPL+7 1828 | 6 MAINMEM.SVC.s 834 | Code | 11 | | 2 | 00/4BA4 : E0 0D | CPX #$0D ; Is it a directory? 1829 | 6 MAINMEM.SVC.s 835 | Code | 11 | | 2 | 00/4BA6 : 69 00 | ADC #$00 ; Becomes A=2 for directory 1830 | 6 MAINMEM.SVC.s 836 | Code | 11 | | 1 | 00/4BA8 : 60 | _UPDFB5 RTS 1831 | 6 MAINMEM.SVC.s 837 | Empty | 11 | | 0 | 00/4BA9 | 1832 | 6 MAINMEM.SVC.s 838 | Empty | 11 | | 0 | 00/4BA9 | ozunid_49 1833 | 6 MAINMEM.SVC.s 839 | Code | 11 | | 2 | 00/4BA9 : C9 44 | CHKNOTFND CMP #$44 ; Convert ProDOS 'not found' 1834 | 6 MAINMEM.SVC.s 840 | Code | 11 | | 2 | 00/4BAB : F0 08 | BEQ ozunid_50 ; into result=$00 1835 | 6 MAINMEM.SVC.s 841 | Code | 11 | | 2 | 00/4BAD : C9 45 | CMP #$45 1836 | 6 MAINMEM.SVC.s 842 | Code | 11 | | 2 | 00/4BAF : F0 04 | BEQ ozunid_50 1837 | 6 MAINMEM.SVC.s 843 | Code | 11 | | 2 | 00/4BB1 : C9 46 | CMP #$46 1838 | 6 MAINMEM.SVC.s 844 | Code | 11 | | 2 | 00/4BB3 : D0 02 | BNE _CHKNOTFND2 1839 | 6 MAINMEM.SVC.s 845 | Code | 11 | | 2 | 00/4BB5 : A9 00 | ozunid_50 LDA #$00 1840 | 6 MAINMEM.SVC.s 846 | Code | 11 | | 1 | 00/4BB7 : 60 | _CHKNOTFND2 RTS 1841 | 6 MAINMEM.SVC.s 847 | Empty | 11 | | 0 | 00/4BB8 | 1842 | 6 MAINMEM.SVC.s 848 | Empty | 11 | | 0 | 00/4BB8 | 1843 | 6 MAINMEM.SVC.s 849 | Comment | 11 | | 0 | 00/4BB8 | * Quit to ProDOS 1844 | 6 MAINMEM.SVC.s 850 | Code | 11 | | 3 | 00/4BB8 : EE F4 03 | QUIT INC $03F4 ; Invalidate powerup byte 1845 | 6 MAINMEM.SVC.s 851 | Code | 11 | | 3 | 00/4BBB : 8D 54 C0 | STA $C054 ; PAGE2 off 1846 | 6 MAINMEM.SVC.s 852 | Code | 11 | | 3 | 00/4BBE : 8D 0E C0 | STA $C00E ; Alt font off 1847 | 6 MAINMEM.SVC.s 853 | Code | 11 | | 3 | 00/4BC1 : 20 00 BF | JSR {$BF00} 1848 | 6 MAINMEM.SVC.s 854 | Data | 11 | | 1 | 00/4BC4 : 65 | DB {$65} 1849 | 6 MAINMEM.SVC.s 855 | Data | 11 | | 2 | 00/4BC5 : D1 56 | DW QUITPL 1850 | 6 MAINMEM.SVC.s 856 | Code | 11 | | 1 | 00/4BC7 : 60 | RTS 1851 | 6 MAINMEM.SVC.s 857 | Empty | 11 | | 0 | 00/4BC8 | 1852 | 6 MAINMEM.SVC.s 858 | Comment | 11 | | 0 | 00/4BC8 | * Used for *CAT, *EX and *INFO 1853 | 6 MAINMEM.SVC.s 859 | Comment | 11 | | 0 | 00/4BC8 | * On entry: b7=0 - short info (*CAT) 1854 | 6 MAINMEM.SVC.s 860 | Comment | 11 | | 0 | 00/4BC8 | * b7=1 - long info (*INFO, *EX) 1855 | 6 MAINMEM.SVC.s 861 | Comment | 11 | | 0 | 00/4BC8 | * b6=0 - single entry, parameter is object (*INFO) 1856 | 6 MAINMEM.SVC.s 862 | Comment | 11 | | 0 | 00/4BC8 | * b6=1 - multiple items, parameter is dir (*CAT, *EX) 1857 | 6 MAINMEM.SVC.s 863 | Comment | 11 | | 0 | 00/4BC8 | * 1858 | 6 MAINMEM.SVC.s 864 | Macro | 11 | | 0 | 00/4BC8 | CATALOG >>> ENTMAIN 1859 | 6 MAINMEM.SVC.s 864 | Code | 11 | | 1 | 00/4BC8 : 9A | TXS ; Main SP already in X 1860 | 6 MAINMEM.SVC.s 864 | Code | 11 | | 3 | 00/4BC9 : AE 81 C0 | LDX $C081 ; Bank in ROM 1861 | 6 MAINMEM.SVC.s 864 | Code | 11 | | 3 | 00/4BCC : AE 81 C0 | LDX $C081 1862 | 6 MAINMEM.SVC.s 864 | Code | 11 | | 1 | 00/4BCF : 58 | CLI ; Re-enable IRQ after XFER 1863 | 6 MAINMEM.SVC.s 865 | Code | 11 | | 3 | 00/4BD0 : 8D B1 4C | STA CATARG ; Stash argument 1864 | 6 MAINMEM.SVC.s 866 | Code | 11 | | 2 | 00/4BD3 : C9 80 | CMP #$80 ; Is it *INFO? 1865 | 6 MAINMEM.SVC.s 867 | Code | 11 | | 2 | 00/4BD5 : D0 03 | BNE _NOTINFO 1866 | 6 MAINMEM.SVC.s 868 | Code | 11 | | 3 | 00/4BD7 : 4C 5B 4C | JMP INFO ; Handle entry for *INFO 1867 | 6 MAINMEM.SVC.s 869 | Code | 11 | | 3 | 00/4BDA : AD 00 03 | _NOTINFO LDA {{$0300}} ; Length of pathname 1868 | 6 MAINMEM.SVC.s 870 | Code | 11 | | 2 | 00/4BDD : F0 15 | BEQ _NOPATH ; If zero use prefix 1869 | 6 MAINMEM.SVC.s 871 | Code | 11 | | 3 | 00/4BDF : 20 10 51 | JSR PREPATH ; Preprocess pathname 1870 | 6 MAINMEM.SVC.s 872 | Code | 11 | | 3 | 00/4BE2 : 20 8A 53 | JSR WILDONE ; Handle any wildcards 1871 | 6 MAINMEM.SVC.s 873 | Code | 11 | | 3 | 00/4BE5 : 20 5C 57 | JSR EXISTS ; See if path exists ... 1872 | 6 MAINMEM.SVC.s 874 | Code | 11 | | 2 | 00/4BE8 : F0 06 | BEQ ozunid_51 ; Not found 1873 | 6 MAINMEM.SVC.s 875 | Code | 11 | | 2 | 00/4BEA : C9 02 | CMP #$02 1874 | 6 MAINMEM.SVC.s 876 | Code | 11 | | 2 | 00/4BEC : F0 0F | BEQ _DIRFOUND 1875 | 6 MAINMEM.SVC.s 877 | Code | 11 | | 2 | 00/4BEE : A9 0D | LDA #$0D ; Becomes Not a directory 1876 | 6 MAINMEM.SVC.s 878 | Code | 11 | | 2 | 00/4BF0 : 49 46 | ozunid_51 EOR #$46 ; $00->$46, $xx->$4B 1877 | 6 MAINMEM.SVC.s 879 | Code | 11 | | 2 | 00/4BF2 : D0 4F | BNE CATEXIT 1878 | 6 MAINMEM.SVC.s 880 | Empty | 11 | | 0 | 00/4BF4 | 1879 | 6 MAINMEM.SVC.s 881 | Code | 11 | | 3 | 00/4BF4 : 20 FD 57 | _NOPATH JSR GETPREF ; Fetch prefix into PREFIX 1880 | 6 MAINMEM.SVC.s 882 | Code | 11 | | 2 | 00/4BF7 : A2 49 | LDX #prefix 1881 | 6 MAINMEM.SVC.s 883 | Code | 11 | | 2 | 00/4BF9 : A0 53 | LDY #>PREFIX 1882 | 6 MAINMEM.SVC.s 884 | Code | 11 | | 2 | 00/4BFB : 80 04 | BRA _OPEN 1883 | 6 MAINMEM.SVC.s 885 | Code | 11 | | 2 | 00/4BFD : A2 00 | _DIRFOUND LDX #<{{$0300}} ; XY=>specified directory 1884 | 6 MAINMEM.SVC.s 886 | Code | 11 | | 2 | 00/4BFF : A0 03 | LDY #>{{$0300}} 1885 | 6 MAINMEM.SVC.s 887 | Empty | 11 | | 0 | 00/4C01 | 1886 | 6 MAINMEM.SVC.s 888 | Code | 11 | | 3 | 00/4C01 : 8E 5D 56 | _OPEN STX OPENPL+1 ; Open the specified directory 1887 | 6 MAINMEM.SVC.s 889 | Code | 11 | | 3 | 00/4C04 : 8C 5E 56 | STY OPENPL+2 1888 | 6 MAINMEM.SVC.s 890 | Code | 11 | | 3 | 00/4C07 : 20 E1 57 | JSR OPENFILE 1889 | 6 MAINMEM.SVC.s 891 | Code | 11 | | 2 | 00/4C0A : B0 37 | BCS CATEXIT ; Can't open dir 1890 | 6 MAINMEM.SVC.s 892 | Empty | 11 | | 0 | 00/4C0C | 1891 | 6 MAINMEM.SVC.s 893 | Code | 11 | | 3 | 00/4C0C : AD 61 56 | CATREENTRY LDA OPENPL+5 ; File ref num 1892 | 6 MAINMEM.SVC.s 894 | Code | 11 | | 3 | 00/4C0F : 8D 7D 56 | STA READPL+1 1893 | 6 MAINMEM.SVC.s 895 | Code | 11 | | 3 | 00/4C12 : 20 EF 57 | JSR RDFILE 1894 | 6 MAINMEM.SVC.s 896 | Code | 11 | | 2 | 00/4C15 : B0 1B | BCS _CATERR 1895 | 6 MAINMEM.SVC.s 897 | Code | 11 | | 3 | 00/4C17 : 20 F7 56 | JSR COPYAUXBLK 1896 | 6 MAINMEM.SVC.s 898 | Macro | 11 | | 0 | 00/4C1A | >>> XF2AUX,PRONEBLK 1897 | 6 MAINMEM.SVC.s 898 | Code | 11 | | 3 | 00/4C1A : AE 8B C0 | LDX $C08B ; R/W LC RAM, bank 1 1898 | 6 MAINMEM.SVC.s 898 | Code | 11 | | 3 | 00/4C1D : AE 8B C0 | LDX $C08B 1899 | 6 MAINMEM.SVC.s 898 | Code | 11 | | 2 | 00/4C20 : A2 97 | LDX #PRONEBLK 1902 | 6 MAINMEM.SVC.s 898 | Code | 11 | | 3 | 00/4C27 : 8E EE 03 | STX {$3EE} 1903 | 6 MAINMEM.SVC.s 898 | Code | 11 | | 1 | 00/4C2A : 78 | SEI ; Disable IRQ before XFER 1904 | 6 MAINMEM.SVC.s 898 | Code | 11 | | 1 | 00/4C2B : 38 | SEC ; Use aux memory 1905 | 6 MAINMEM.SVC.s 898 | Code | 11 | | 3 | 00/4C2C : 2C 58 FF | BIT $FF58 ; Set V: use alt ZP and LC 1906 | 6 MAINMEM.SVC.s 898 | Code | 11 | | 3 | 00/4C2F : 4C 14 C3 | JMP {$C314} 1907 | 6 MAINMEM.SVC.s 899 | Empty | 11 | | 0 | 00/4C32 | 1908 | 6 MAINMEM.SVC.s 900 | Code | 11 | | 2 | 00/4C32 : C9 4C | _CATERR CMP #$4C ; EOF 1909 | 6 MAINMEM.SVC.s 901 | Code | 11 | | 2 | 00/4C34 : D0 02 | BNE _NOTEOF 1910 | 6 MAINMEM.SVC.s 902 | Code | 11 | | 2 | 00/4C36 : A9 00 | LDA #$00 1911 | 6 MAINMEM.SVC.s 903 | Code | 11 | | 1 | 00/4C38 : 48 | _NOTEOF PHA 1912 | 6 MAINMEM.SVC.s 904 | Code | 11 | | 3 | 00/4C39 : AD 61 56 | LDA OPENPL+5 ; File ref num 1913 | 6 MAINMEM.SVC.s 905 | Code | 11 | | 3 | 00/4C3C : 8D A5 56 | STA CLSPL+1 1914 | 6 MAINMEM.SVC.s 906 | Code | 11 | | 3 | 00/4C3F : 20 E8 57 | JSR CLSFILE 1915 | 6 MAINMEM.SVC.s 907 | Code | 11 | | 1 | 00/4C42 : 68 | PLA 1916 | 6 MAINMEM.SVC.s 908 | Macro | 11 | | 0 | 00/4C43 | CATEXIT >>> XF2AUX,STARCATRET 1917 | 6 MAINMEM.SVC.s 908 | Code | 11 | | 3 | 00/4C43 : AE 8B C0 | LDX $C08B ; R/W LC RAM, bank 1 1918 | 6 MAINMEM.SVC.s 908 | Code | 11 | | 3 | 00/4C46 : AE 8B C0 | LDX $C08B 1919 | 6 MAINMEM.SVC.s 908 | Code | 11 | | 2 | 00/4C49 : A2 89 | LDX #STARCATRET 1922 | 6 MAINMEM.SVC.s 908 | Code | 11 | | 3 | 00/4C50 : 8E EE 03 | STX {$3EE} 1923 | 6 MAINMEM.SVC.s 908 | Code | 11 | | 1 | 00/4C53 : 78 | SEI ; Disable IRQ before XFER 1924 | 6 MAINMEM.SVC.s 908 | Code | 11 | | 1 | 00/4C54 : 38 | SEC ; Use aux memory 1925 | 6 MAINMEM.SVC.s 908 | Code | 11 | | 3 | 00/4C55 : 2C 58 FF | BIT $FF58 ; Set V: use alt ZP and LC 1926 | 6 MAINMEM.SVC.s 908 | Code | 11 | | 3 | 00/4C58 : 4C 14 C3 | JMP {$C314} 1927 | 6 MAINMEM.SVC.s 909 | Empty | 11 | | 0 | 00/4C5B | 1928 | 6 MAINMEM.SVC.s 910 | Comment | 11 | | 0 | 00/4C5B | * Handle *INFO 1929 | 6 MAINMEM.SVC.s 911 | Code | 11 | | 3 | 00/4C5B : 20 10 51 | INFO JSR PREPATH ; Preprocess pathname 1930 | 6 MAINMEM.SVC.s 912 | Code | 11 | | 1 | 00/4C5E : 38 | SEC 1931 | 6 MAINMEM.SVC.s 913 | Code | 11 | | 3 | 00/4C5F : 20 92 53 | JSR WILDCARD ; Handle any wildcards 1932 | 6 MAINMEM.SVC.s 914 | Code | 11 | | 3 | 00/4C62 : 20 5C 57 | JSR EXISTS ; Check matches something 1933 | 6 MAINMEM.SVC.s 915 | Code | 11 | | 2 | 00/4C65 : D0 23 | BNE INFOFIRST ; Match found, start listing 1934 | 6 MAINMEM.SVC.s 916 | Code | 11 | | 2 | 00/4C67 : A9 46 | LDA #$46 ; No match, error Not found 1935 | 6 MAINMEM.SVC.s 917 | Code | 11 | | 2 | 00/4C69 : C9 4C | INFOEXIT CMP #$4C ; EOF 1936 | 6 MAINMEM.SVC.s 918 | Code | 11 | | 2 | 00/4C6B : D0 02 | BNE INFOCLS 1937 | 6 MAINMEM.SVC.s 919 | Code | 11 | | 2 | 00/4C6D : A9 00 | LDA #$00 ; EOF is not an error 1938 | 6 MAINMEM.SVC.s 920 | Code | 11 | | 1 | 00/4C6F : 48 | INFOCLS PHA 1939 | 6 MAINMEM.SVC.s 921 | Code | 11 | | 3 | 00/4C70 : 20 01 55 | JSR CLSDIR ; Be sure to close it! 1940 | 6 MAINMEM.SVC.s 922 | Code | 11 | | 1 | 00/4C73 : 68 | PLA 1941 | 6 MAINMEM.SVC.s 923 | Code | 11 | | 2 | 00/4C74 : 80 CD | BRA CATEXIT 1942 | 6 MAINMEM.SVC.s 924 | Empty | 11 | | 0 | 00/4C76 | 1943 | 6 MAINMEM.SVC.s 925 | Comment | 11 | | 0 | 00/4C76 | * PRONEBLK call returns here ... 1944 | 6 MAINMEM.SVC.s 926 | Macro | 11 | | 0 | 00/4C76 | CATALOGRET >>> ENTMAIN 1945 | 6 MAINMEM.SVC.s 926 | Code | 11 | | 1 | 00/4C76 : 9A | TXS ; Main SP already in X 1946 | 6 MAINMEM.SVC.s 926 | Code | 11 | | 3 | 00/4C77 : AE 81 C0 | LDX $C081 ; Bank in ROM 1947 | 6 MAINMEM.SVC.s 926 | Code | 11 | | 3 | 00/4C7A : AE 81 C0 | LDX $C081 1948 | 6 MAINMEM.SVC.s 926 | Code | 11 | | 1 | 00/4C7D : 58 | CLI ; Re-enable IRQ after XFER 1949 | 6 MAINMEM.SVC.s 927 | Code | 11 | | 3 | 00/4C7E : AD B1 4C | LDA CATARG 1950 | 6 MAINMEM.SVC.s 928 | Code | 11 | | 2 | 00/4C81 : C9 80 | CMP #$80 ; Is this an *INFO call? 1951 | 6 MAINMEM.SVC.s 929 | Code | 11 | | 2 | 00/4C83 : D0 87 | BNE CATREENTRY ; No, go back and do another CAT/EX 1952 | 6 MAINMEM.SVC.s 930 | Empty | 11 | | 0 | 00/4C85 | 1953 | 6 MAINMEM.SVC.s 931 | Code | 11 | | 3 | 00/4C85 : 20 23 54 | INFOREENTRY JSR WILDNEXT2 ; Start of new block 1954 | 6 MAINMEM.SVC.s 932 | Code | 11 | | 2 | 00/4C88 : B0 DF | BCS INFOEXIT ; No more matches 1955 | 6 MAINMEM.SVC.s 933 | Code | 11 | | 3 | 00/4C8A : AD CD 54 | INFOFIRST LDA WILDIDX 1956 | 6 MAINMEM.SVC.s 934 | Code | 11 | | 2 | 00/4C8D : C9 FF | CMP #$FF ; Is WILDNEXT about to read new blk? 1957 | 6 MAINMEM.SVC.s 935 | Code | 11 | | 2 | 00/4C8F : F0 05 | BEQ _DONEBLK ; If so, print this blk first 1958 | 6 MAINMEM.SVC.s 936 | Code | 11 | | 3 | 00/4C91 : 20 23 54 | JSR WILDNEXT2 1959 | 6 MAINMEM.SVC.s 937 | Code | 11 | | 2 | 00/4C94 : 90 F4 | BCC INFOFIRST ; Find more entries 1960 | 6 MAINMEM.SVC.s 938 | Code | 11 | | 3 | 00/4C96 : 20 F7 56 | _DONEBLK JSR COPYAUXBLK 1961 | 6 MAINMEM.SVC.s 939 | Macro | 11 | | 0 | 00/4C99 | >>> XF2AUX,PRONEBLK 1962 | 6 MAINMEM.SVC.s 939 | Code | 11 | | 3 | 00/4C99 : AE 8B C0 | LDX $C08B ; R/W LC RAM, bank 1 1963 | 6 MAINMEM.SVC.s 939 | Code | 11 | | 3 | 00/4C9C : AE 8B C0 | LDX $C08B 1964 | 6 MAINMEM.SVC.s 939 | Code | 11 | | 2 | 00/4C9F : A2 97 | LDX #PRONEBLK 1967 | 6 MAINMEM.SVC.s 939 | Code | 11 | | 3 | 00/4CA6 : 8E EE 03 | STX {$3EE} 1968 | 6 MAINMEM.SVC.s 939 | Code | 11 | | 1 | 00/4CA9 : 78 | SEI ; Disable IRQ before XFER 1969 | 6 MAINMEM.SVC.s 939 | Code | 11 | | 1 | 00/4CAA : 38 | SEC ; Use aux memory 1970 | 6 MAINMEM.SVC.s 939 | Code | 11 | | 3 | 00/4CAB : 2C 58 FF | BIT $FF58 ; Set V: use alt ZP and LC 1971 | 6 MAINMEM.SVC.s 939 | Code | 11 | | 3 | 00/4CAE : 4C 14 C3 | JMP {$C314} 1972 | 6 MAINMEM.SVC.s 940 | Empty | 11 | | 0 | 00/4CB1 | 1973 | 6 MAINMEM.SVC.s 941 | Data | 11 | | 1 | 00/4CB1 : 00 | CATARG DB $00 1974 | 6 MAINMEM.SVC.s 942 | Empty | 11 | | 0 | 00/4CB2 | 1975 | 6 MAINMEM.SVC.s 943 | Empty | 11 | | 0 | 00/4CB2 | 1976 | 6 MAINMEM.SVC.s 944 | Comment | 11 | | 0 | 00/4CB2 | * Set prefix. Used by *CHDIR/*DRIVE to change directory 1977 | 6 MAINMEM.SVC.s 945 | Comment | 11 | | 0 | 00/4CB2 | * Y= $00 - CHDIR, select any directory 1978 | 6 MAINMEM.SVC.s 946 | Comment | 11 | | 0 | 00/4CB2 | * Y<>$00 - DRIVE, must select root 1979 | 6 MAINMEM.SVC.s 947 | Comment | 11 | | 0 | 00/4CB2 | * 1980 | 6 MAINMEM.SVC.s 948 | Macro | 11 | | 0 | 00/4CB2 | SETPFX >>> ENTMAIN 1981 | 6 MAINMEM.SVC.s 948 | Code | 11 | | 1 | 00/4CB2 : 9A | TXS ; Main SP already in X 1982 | 6 MAINMEM.SVC.s 948 | Code | 11 | | 3 | 00/4CB3 : AE 81 C0 | LDX $C081 ; Bank in ROM 1983 | 6 MAINMEM.SVC.s 948 | Code | 11 | | 3 | 00/4CB6 : AE 81 C0 | LDX $C081 1984 | 6 MAINMEM.SVC.s 948 | Code | 11 | | 1 | 00/4CB9 : 58 | CLI ; Re-enable IRQ after XFER 1985 | 6 MAINMEM.SVC.s 949 | Code | 11 | | 1 | 00/4CBA : 5A | PHY ; Save CHDIR/DRIVE flag 1986 | 6 MAINMEM.SVC.s 950 | Code | 11 | | 3 | 00/4CBB : 20 10 51 | JSR PREPATH ; Preprocess pathname 1987 | 6 MAINMEM.SVC.s 951 | Code | 11 | | 2 | 00/4CBE : B0 17 | BCS ozunid_52 1988 | 6 MAINMEM.SVC.s 952 | Code | 11 | | 3 | 00/4CC0 : 20 8A 53 | JSR WILDONE ; Handle any wildcards 1989 | 6 MAINMEM.SVC.s 953 | Code | 11 | | 2 | 00/4CC3 : A9 2E | LDA #$2E 1990 | 6 MAINMEM.SVC.s 954 | Code | 11 | | 2 | 00/4CC5 : B0 10 | BCS ozunid_52 ; Exit with wildcard path 1991 | 6 MAINMEM.SVC.s 955 | Comment | 11 | | 0 | 00/4CC7 | * TO DO: If DRIVE disallow selecting a directory 1992 | 6 MAINMEM.SVC.s 956 | Comment | 11 | | 0 | 00/4CC7 | * 1993 | 6 MAINMEM.SVC.s 957 | Code | 11 | | 2 | 00/4CC7 : A9 00 | LDA #<{{$0300}} 1994 | 6 MAINMEM.SVC.s 958 | Code | 11 | | 3 | 00/4CC9 : 8D B3 56 | STA SPFXPL+1 1995 | 6 MAINMEM.SVC.s 959 | Code | 11 | | 2 | 00/4CCC : A9 03 | LDA #>{{$0300}} 1996 | 6 MAINMEM.SVC.s 960 | Code | 11 | | 3 | 00/4CCE : 8D B4 56 | STA SPFXPL+2 1997 | 6 MAINMEM.SVC.s 961 | Code | 11 | | 3 | 00/4CD1 : 20 00 BF | JSR {$BF00} ; SET_PREFIX 1998 | 6 MAINMEM.SVC.s 962 | Data | 11 | | 1 | 00/4CD4 : C6 | DB {$C6} 1999 | 6 MAINMEM.SVC.s 963 | Data | 11 | | 2 | 00/4CD5 : B2 56 | DW SPFXPL 2000 | 6 MAINMEM.SVC.s 964 | Empty | 11 | | 0 | 00/4CD7 | 2001 | 6 MAINMEM.SVC.s 965 | Code | 11 | | 1 | 00/4CD7 : 7A | ozunid_52 PLY ; Drop CHDIR/DRIVE flag 2002 | 6 MAINMEM.SVC.s 966 | Macro | 11 | | 0 | 00/4CD8 | >>> XF2AUX,CHDIRRET 2003 | 6 MAINMEM.SVC.s 966 | Code | 11 | | 3 | 00/4CD8 : AE 8B C0 | LDX $C08B ; R/W LC RAM, bank 1 2004 | 6 MAINMEM.SVC.s 966 | Code | 11 | | 3 | 00/4CDB : AE 8B C0 | LDX $C08B 2005 | 6 MAINMEM.SVC.s 966 | Code | 11 | | 2 | 00/4CDE : A2 2D | LDX #CHDIRRET 2008 | 6 MAINMEM.SVC.s 966 | Code | 11 | | 3 | 00/4CE5 : 8E EE 03 | STX {$3EE} 2009 | 6 MAINMEM.SVC.s 966 | Code | 11 | | 1 | 00/4CE8 : 78 | SEI ; Disable IRQ before XFER 2010 | 6 MAINMEM.SVC.s 966 | Code | 11 | | 1 | 00/4CE9 : 38 | SEC ; Use aux memory 2011 | 6 MAINMEM.SVC.s 966 | Code | 11 | | 3 | 00/4CEA : 2C 58 FF | BIT $FF58 ; Set V: use alt ZP and LC 2012 | 6 MAINMEM.SVC.s 966 | Code | 11 | | 3 | 00/4CED : 4C 14 C3 | JMP {$C314} 2013 | 6 MAINMEM.SVC.s 967 | Empty | 11 | | 0 | 00/4CF0 | 2014 | 6 MAINMEM.SVC.s 968 | Empty | 11 | | 0 | 00/4CF0 | 2015 | 6 MAINMEM.SVC.s 969 | Comment | 11 | | 0 | 00/4CF0 | * Obtain info on total/used blocks 2016 | 6 MAINMEM.SVC.s 970 | Macro | 11 | | 0 | 00/4CF0 | DRVINFO >>> ENTMAIN 2017 | 6 MAINMEM.SVC.s 970 | Code | 11 | | 1 | 00/4CF0 : 9A | TXS ; Main SP already in X 2018 | 6 MAINMEM.SVC.s 970 | Code | 11 | | 3 | 00/4CF1 : AE 81 C0 | LDX $C081 ; Bank in ROM 2019 | 6 MAINMEM.SVC.s 970 | Code | 11 | | 3 | 00/4CF4 : AE 81 C0 | LDX $C081 2020 | 6 MAINMEM.SVC.s 970 | Code | 11 | | 1 | 00/4CF7 : 58 | CLI ; Re-enable IRQ after XFER 2021 | 6 MAINMEM.SVC.s 971 | Code | 11 | | 3 | 00/4CF8 : AD 00 03 | LDA {{$0300}} 2022 | 6 MAINMEM.SVC.s 972 | Code | 11 | | 2 | 00/4CFB : D0 08 | BNE _DRVINF2 2023 | 6 MAINMEM.SVC.s 973 | Code | 11 | | 3 | 00/4CFD : EE 00 03 | INC {{$0300}} 2024 | 6 MAINMEM.SVC.s 974 | Code | 11 | | 2 | 00/4D00 : A9 40 | LDA #'@' 2025 | 6 MAINMEM.SVC.s 975 | Code | 11 | | 3 | 00/4D02 : 8D 01 03 | STA {{$0300}}+1 ; Convert "" to "@" 2026 | 6 MAINMEM.SVC.s 976 | Code | 11 | | 3 | 00/4D05 : 20 10 51 | _DRVINF2 JSR PREPATH 2027 | 6 MAINMEM.SVC.s 977 | Code | 11 | | 2 | 00/4D08 : B0 44 | BCS ozunid_53 2028 | 6 MAINMEM.SVC.s 978 | Code | 11 | | 2 | 00/4D0A : A9 00 | LDA #<{{$0300}} 2029 | 6 MAINMEM.SVC.s 979 | Code | 11 | | 3 | 00/4D0C : 8D C0 56 | STA GINFOPL+1 2030 | 6 MAINMEM.SVC.s 980 | Code | 11 | | 2 | 00/4D0F : A9 03 | LDA #>{{$0300}} 2031 | 6 MAINMEM.SVC.s 981 | Code | 11 | | 3 | 00/4D11 : 8D C1 56 | STA GINFOPL+2 2032 | 6 MAINMEM.SVC.s 982 | Code | 11 | | 3 | 00/4D14 : 20 8D 57 | JSR GETINFO ; GET_FILE_INFO 2033 | 6 MAINMEM.SVC.s 983 | Code | 11 | | 2 | 00/4D17 : B0 35 | BCS ozunid_53 2034 | 6 MAINMEM.SVC.s 984 | Code | 11 | | 3 | 00/4D19 : AD C6 56 | LDA GINFOPL+7 2035 | 6 MAINMEM.SVC.s 985 | Code | 11 | | 2 | 00/4D1C : C9 0F | CMP #$0F 2036 | 6 MAINMEM.SVC.s 986 | Code | 11 | | 2 | 00/4D1E : D0 32 | BNE ozunid_54 ; Not a drive, exit with 'Bad drive' 2037 | 6 MAINMEM.SVC.s 987 | Empty | 11 | | 0 | 00/4D20 | 2038 | 6 MAINMEM.SVC.s 988 | Macro | 11 | | 0 | 00/4D20 | >>> ALTZP ; Alt ZP & Alt LC on 2039 | 6 MAINMEM.SVC.s 988 | Code | 11 | | 1 | 00/4D20 : 78 | SEI ; Disable IRQ when AltZP on 2040 | 6 MAINMEM.SVC.s 988 | Code | 11 | | 3 | 00/4D21 : AD 8B C0 | LDA $C08B ; R/W LC bank 1 2041 | 6 MAINMEM.SVC.s 988 | Code | 11 | | 3 | 00/4D24 : AD 8B C0 | LDA $C08B 2042 | 6 MAINMEM.SVC.s 988 | Code | 11 | | 3 | 00/4D27 : 8D 09 C0 | STA $C009 ; Alt ZP and LC 2043 | 6 MAINMEM.SVC.s 989 | Code | 11 | | 3 | 00/4D2A : AD C7 56 | LDA GINFOPL+8 ; Blocks used LSB 2044 | 6 MAINMEM.SVC.s 990 | Code | 11 | | 3 | 00/4D2D : 8D 54 EE | STA AUXBLK+0 2045 | 6 MAINMEM.SVC.s 991 | Code | 11 | | 3 | 00/4D30 : AD C8 56 | LDA GINFOPL+9 ; Blocks used MSB 2046 | 6 MAINMEM.SVC.s 992 | Code | 11 | | 3 | 00/4D33 : 8D 55 EE | STA AUXBLK+1 2047 | 6 MAINMEM.SVC.s 993 | Code | 11 | | 3 | 00/4D36 : AD C4 56 | LDA GINFOPL+5 ; Total blocks LSB 2048 | 6 MAINMEM.SVC.s 994 | Code | 11 | | 3 | 00/4D39 : 8D 56 EE | STA AUXBLK+2 2049 | 6 MAINMEM.SVC.s 995 | Code | 11 | | 3 | 00/4D3C : AD C5 56 | LDA GINFOPL+6 ; Total blocks MSB 2050 | 6 MAINMEM.SVC.s 996 | Code | 11 | | 3 | 00/4D3F : 8D 57 EE | STA AUXBLK+3 2051 | 6 MAINMEM.SVC.s 997 | Macro | 11 | | 0 | 00/4D42 | >>> MAINZP ; ALt ZP off, ROM back in 2052 | 6 MAINMEM.SVC.s 997 | Code | 11 | | 3 | 00/4D42 : 8D 08 C0 | STA $C008 ; Main ZP and LC 2053 | 6 MAINMEM.SVC.s 997 | Code | 11 | | 3 | 00/4D45 : AD 81 C0 | LDA $C081 ; Bank ROM back in 2054 | 6 MAINMEM.SVC.s 997 | Code | 11 | | 3 | 00/4D48 : AD 81 C0 | LDA $C081 2055 | 6 MAINMEM.SVC.s 997 | Code | 11 | | 1 | 00/4D4B : 58 | CLI ; Turn IRQ back on 2056 | 6 MAINMEM.SVC.s 998 | Code | 11 | | 2 | 00/4D4C : A9 00 | LDA #$00 ; $00=Ok 2057 | 6 MAINMEM.SVC.s 999 | Empty | 11 | | 0 | 00/4D4E | 2058 | 6 MAINMEM.SVC.s 1000 | Code | 11 | | 2 | 00/4D4E : C9 46 | ozunid_53 CMP #$46 2059 | 6 MAINMEM.SVC.s 1001 | Code | 11 | | 2 | 00/4D50 : D0 02 | BNE ozunid_55 2060 | 6 MAINMEM.SVC.s 1002 | Code | 11 | | 2 | 00/4D52 : A9 2A | ozunid_54 LDA #$2A ; Change 'Not found' to 'Bad drive' 2061 | 6 MAINMEM.SVC.s 1003 | Macro | 11 | | 0 | 00/4D54 | ozunid_55 >>> XF2AUX,FREERET 2062 | 6 MAINMEM.SVC.s 1003 | Code | 11 | | 3 | 00/4D54 : AE 8B C0 | LDX $C08B ; R/W LC RAM, bank 1 2063 | 6 MAINMEM.SVC.s 1003 | Code | 11 | | 3 | 00/4D57 : AE 8B C0 | LDX $C08B 2064 | 6 MAINMEM.SVC.s 1003 | Code | 11 | | 2 | 00/4D5A : A2 F2 | LDX #FREERET 2067 | 6 MAINMEM.SVC.s 1003 | Code | 11 | | 3 | 00/4D61 : 8E EE 03 | STX {$3EE} 2068 | 6 MAINMEM.SVC.s 1003 | Code | 11 | | 1 | 00/4D64 : 78 | SEI ; Disable IRQ before XFER 2069 | 6 MAINMEM.SVC.s 1003 | Code | 11 | | 1 | 00/4D65 : 38 | SEC ; Use aux memory 2070 | 6 MAINMEM.SVC.s 1003 | Code | 11 | | 3 | 00/4D66 : 2C 58 FF | BIT $FF58 ; Set V: use alt ZP and LC 2071 | 6 MAINMEM.SVC.s 1003 | Code | 11 | | 3 | 00/4D69 : 4C 14 C3 | JMP {$C314} 2072 | 6 MAINMEM.SVC.s 1004 | Empty | 11 | | 0 | 00/4D6C | 2073 | 6 MAINMEM.SVC.s 1005 | Empty | 11 | | 0 | 00/4D6C | 2074 | 6 MAINMEM.SVC.s 1006 | Comment | 11 | | 0 | 00/4D6C | * Change file permissions, for *ACCESS 2075 | 6 MAINMEM.SVC.s 1007 | Comment | 11 | | 0 | 00/4D6C | * Filename in MOSFILE, access mask in A 2076 | 6 MAINMEM.SVC.s 1008 | Comment | 11 | | 0 | 00/4D6C | * 2077 | 6 MAINMEM.SVC.s 1009 | Macro | 11 | | 0 | 00/4D6C | SETPERM >>> ENTMAIN 2078 | 6 MAINMEM.SVC.s 1009 | Code | 11 | | 1 | 00/4D6C : 9A | TXS ; Main SP already in X 2079 | 6 MAINMEM.SVC.s 1009 | Code | 11 | | 3 | 00/4D6D : AE 81 C0 | LDX $C081 ; Bank in ROM 2080 | 6 MAINMEM.SVC.s 1009 | Code | 11 | | 3 | 00/4D70 : AE 81 C0 | LDX $C081 2081 | 6 MAINMEM.SVC.s 1009 | Code | 11 | | 1 | 00/4D73 : 58 | CLI ; Re-enable IRQ after XFER 2082 | 6 MAINMEM.SVC.s 1010 | Code | 11 | | 1 | 00/4D74 : 48 | PHA ; Save access mask 2083 | 6 MAINMEM.SVC.s 1011 | Code | 11 | | 3 | 00/4D75 : 20 10 51 | JSR PREPATH ; Preprocess pathname 2084 | 6 MAINMEM.SVC.s 1012 | Code | 11 | | 2 | 00/4D78 : B0 08 | BCS _SYNERR 2085 | 6 MAINMEM.SVC.s 1013 | Code | 11 | | 1 | 00/4D7A : 18 | CLC 2086 | 6 MAINMEM.SVC.s 1014 | Code | 11 | | 3 | 00/4D7B : 20 92 53 | JSR WILDCARD ; Handle any wildcards 2087 | 6 MAINMEM.SVC.s 1015 | Code | 11 | | 2 | 00/4D7E : B0 06 | BCS ozunid_56 2088 | 6 MAINMEM.SVC.s 1016 | Code | 11 | | 2 | 00/4D80 : 90 0B | BCC ozunid_57 2089 | 6 MAINMEM.SVC.s 1017 | Comment | 11 | | 0 | 00/4D82 | * STZ :LFLAG 2090 | 6 MAINMEM.SVC.s 1018 | Comment | 11 | | 0 | 00/4D82 | * STZ :WFLAG 2091 | 6 MAINMEM.SVC.s 1019 | Comment | 11 | | 0 | 00/4D82 | * STZ :RFLAG 2092 | 6 MAINMEM.SVC.s 1020 | Comment | 11 | | 0 | 00/4D82 | * LDX MOSFILE2 ; Length of arg2 2093 | 6 MAINMEM.SVC.s 1021 | Comment | 11 | | 0 | 00/4D82 | * INX 2094 | 6 MAINMEM.SVC.s 1022 | Comment | 11 | | 0 | 00/4D82 | *:L1 DEX 2095 | 6 MAINMEM.SVC.s 1023 | Comment | 11 | | 0 | 00/4D82 | * CPX #$00 2096 | 6 MAINMEM.SVC.s 1024 | Comment | 11 | | 0 | 00/4D82 | * BEQ :MAINLOOP 2097 | 6 MAINMEM.SVC.s 1025 | Comment | 11 | | 0 | 00/4D82 | * LDA MOSFILE2,X ; Read arg2 char 2098 | 6 MAINMEM.SVC.s 1026 | Comment | 11 | | 0 | 00/4D82 | * CMP #'L' ; L=Locked 2099 | 6 MAINMEM.SVC.s 1027 | Comment | 11 | | 0 | 00/4D82 | * BNE :S1 2100 | 6 MAINMEM.SVC.s 1028 | Comment | 11 | | 0 | 00/4D82 | * STA :LFLAG 2101 | 6 MAINMEM.SVC.s 1029 | Comment | 11 | | 0 | 00/4D82 | * BRA :L1 2102 | 6 MAINMEM.SVC.s 1030 | Comment | 11 | | 0 | 00/4D82 | *:S1 CMP #'R' ; R=Readable 2103 | 6 MAINMEM.SVC.s 1031 | Comment | 11 | | 0 | 00/4D82 | * BNE :S2 2104 | 6 MAINMEM.SVC.s 1032 | Comment | 11 | | 0 | 00/4D82 | * STA :RFLAG 2105 | 6 MAINMEM.SVC.s 1033 | Comment | 11 | | 0 | 00/4D82 | * BRA :L1 2106 | 6 MAINMEM.SVC.s 1034 | Comment | 11 | | 0 | 00/4D82 | *:S2 CMP #'W' ; W=Writable 2107 | 6 MAINMEM.SVC.s 1035 | Comment | 11 | | 0 | 00/4D82 | * BNE :ERR2 ; Bad attribute 2108 | 6 MAINMEM.SVC.s 1036 | Comment | 11 | | 0 | 00/4D82 | * STA :WFLAG 2109 | 6 MAINMEM.SVC.s 1037 | Comment | 11 | | 0 | 00/4D82 | * BRA :L1 2110 | 6 MAINMEM.SVC.s 1038 | Empty | 11 | | 0 | 00/4D82 | 2111 | 6 MAINMEM.SVC.s 1039 | Code | 11 | | 2 | 00/4D82 : A9 40 | _SYNERR LDA #$40 ; Invalid pathname syn 2112 | 6 MAINMEM.SVC.s 1040 | Code | 11 | | 2 | 00/4D84 : 80 28 | BRA ozunid_60 2113 | 6 MAINMEM.SVC.s 1041 | Code | 11 | | 3 | 00/4D86 : 20 01 55 | ozunid_56 JSR CLSDIR 2114 | 6 MAINMEM.SVC.s 1042 | Code | 11 | | 2 | 00/4D89 : A9 46 | LDA #$46 ; 'File not found' 2115 | 6 MAINMEM.SVC.s 1043 | Code | 11 | | 2 | 00/4D8B : 80 21 | BRA ozunid_60 2116 | 6 MAINMEM.SVC.s 1044 | Code | 11 | | 2 | 00/4D8D : A9 00 | ozunid_57 LDA #<{{$0300}} 2117 | 6 MAINMEM.SVC.s 1045 | Code | 11 | | 3 | 00/4D8F : 8D C0 56 | STA GINFOPL+1 2118 | 6 MAINMEM.SVC.s 1046 | Code | 11 | | 2 | 00/4D92 : A9 03 | LDA #>{{$0300}} 2119 | 6 MAINMEM.SVC.s 1047 | Code | 11 | | 3 | 00/4D94 : 8D C1 56 | STA GINFOPL+2 2120 | 6 MAINMEM.SVC.s 1048 | Code | 11 | | 3 | 00/4D97 : 20 8D 57 | JSR GETINFO ; GET_FILE_INFO 2121 | 6 MAINMEM.SVC.s 1049 | Code | 11 | | 2 | 00/4D9A : B0 12 | BCS ozunid_60 2122 | 6 MAINMEM.SVC.s 1050 | Code | 11 | | 1 | 00/4D9C : 68 | PLA ; Access byte 2123 | 6 MAINMEM.SVC.s 1051 | Code | 11 | | 1 | 00/4D9D : 48 | PHA 2124 | 6 MAINMEM.SVC.s 1052 | Empty | 11 | | 0 | 00/4D9E | 2125 | 6 MAINMEM.SVC.s 1053 | Comment | 11 | | 0 | 00/4D9E | * LDA GINFOPL+3 ; Access byte 2126 | 6 MAINMEM.SVC.s 1054 | Comment | 11 | | 0 | 00/4D9E | * AND #$03 ; Start with R, W off 2127 | 6 MAINMEM.SVC.s 1055 | Comment | 11 | | 0 | 00/4D9E | * ORA #$C0 ; Start with dest/ren on 2128 | 6 MAINMEM.SVC.s 1056 | Comment | 11 | | 0 | 00/4D9E | * LDX :RFLAG 2129 | 6 MAINMEM.SVC.s 1057 | Comment | 11 | | 0 | 00/4D9E | * BEQ :S3 2130 | 6 MAINMEM.SVC.s 1058 | Comment | 11 | | 0 | 00/4D9E | * ORA #$01 ; Turn on read enable 2131 | 6 MAINMEM.SVC.s 1059 | Comment | 11 | | 0 | 00/4D9E | *:S3 LDX :WFLAG 2132 | 6 MAINMEM.SVC.s 1060 | Comment | 11 | | 0 | 00/4D9E | * BEQ :S4 2133 | 6 MAINMEM.SVC.s 1061 | Comment | 11 | | 0 | 00/4D9E | * ORA #$02 ; Turn on write enable 2134 | 6 MAINMEM.SVC.s 1062 | Comment | 11 | | 0 | 00/4D9E | *:S4 LDX :LFLAG 2135 | 6 MAINMEM.SVC.s 1063 | Comment | 11 | | 0 | 00/4D9E | * BEQ :S5 2136 | 6 MAINMEM.SVC.s 1064 | Comment | 11 | | 0 | 00/4D9E | * AND #$3D ; Turn off destroy/ren/write 2137 | 6 MAINMEM.SVC.s 1065 | Empty | 11 | | 0 | 00/4D9E | 2138 | 6 MAINMEM.SVC.s 1066 | Code | 11 | | 3 | 00/4D9E : 8D C2 56 | ozunid_58 STA GINFOPL+3 ; Access byte 2139 | 6 MAINMEM.SVC.s 1067 | Code | 11 | | 3 | 00/4DA1 : 20 94 57 | JSR SETINFO ; SET_FILE_INFO 2140 | 6 MAINMEM.SVC.s 1068 | Code | 11 | | 3 | 00/4DA4 : 20 F6 53 | JSR WILDNEXT 2141 | 6 MAINMEM.SVC.s 1069 | Code | 11 | | 2 | 00/4DA7 : 90 E4 | BCC ozunid_57 2142 | 6 MAINMEM.SVC.s 1070 | Comment | 11 | | 0 | 00/4DA9 | * BCS :NOMORE 2143 | 6 MAINMEM.SVC.s 1071 | Code | 11 | | 3 | 00/4DA9 : 20 01 55 | ozunid_59 JSR CLSDIR 2144 | 6 MAINMEM.SVC.s 1072 | Code | 11 | | 2 | 00/4DAC : A9 00 | LDA #$00 2145 | 6 MAINMEM.SVC.s 1073 | Comment | 11 | | 0 | 00/4DAE | * BRA :EXIT 2146 | 6 MAINMEM.SVC.s 1074 | Code | 11 | | 1 | 00/4DAE : FA | ozunid_60 PLX ; Drop access byte 2147 | 6 MAINMEM.SVC.s 1075 | Macro | 11 | | 0 | 00/4DAF | >>> XF2AUX,ACCRET 2148 | 6 MAINMEM.SVC.s 1075 | Code | 11 | | 3 | 00/4DAF : AE 8B C0 | LDX $C08B ; R/W LC RAM, bank 1 2149 | 6 MAINMEM.SVC.s 1075 | Code | 11 | | 3 | 00/4DB2 : AE 8B C0 | LDX $C08B 2150 | 6 MAINMEM.SVC.s 1075 | Code | 11 | | 2 | 00/4DB5 : A2 2D | LDX #ACCRET 2153 | 6 MAINMEM.SVC.s 1075 | Code | 11 | | 3 | 00/4DBC : 8E EE 03 | STX {$3EE} 2154 | 6 MAINMEM.SVC.s 1075 | Code | 11 | | 1 | 00/4DBF : 78 | SEI ; Disable IRQ before XFER 2155 | 6 MAINMEM.SVC.s 1075 | Code | 11 | | 1 | 00/4DC0 : 38 | SEC ; Use aux memory 2156 | 6 MAINMEM.SVC.s 1075 | Code | 11 | | 3 | 00/4DC1 : 2C 58 FF | BIT $FF58 ; Set V: use alt ZP and LC 2157 | 6 MAINMEM.SVC.s 1075 | Code | 11 | | 3 | 00/4DC4 : 4C 14 C3 | JMP {$C314} 2158 | 6 MAINMEM.SVC.s 1076 | Code | 11 | | 2 | 00/4DC7 : A9 53 | _ERR2 LDA #$53 ; Invalid parameter 2159 | 6 MAINMEM.SVC.s 1077 | Code | 11 | | 2 | 00/4DC9 : 80 E3 | BRA ozunid_60 2160 | 6 MAINMEM.SVC.s 1078 | Empty | 11 | | 0 | 00/4DCB | 2161 | 6 MAINMEM.SVC.s 1079 | Comment | 11 | | 0 | 00/4DCB | *:LFLAG DB $00 ; 'L' attribute 2162 | 6 MAINMEM.SVC.s 1080 | Comment | 11 | | 0 | 00/4DCB | *:WFLAG DB $00 ; 'W' attribute 2163 | 6 MAINMEM.SVC.s 1081 | Comment | 11 | | 0 | 00/4DCB | *:RFLAG DB $00 ; 'R' attribute 2164 | 6 MAINMEM.SVC.s 1082 | Empty | 11 | | 0 | 00/4DCB | 2165 | 6 MAINMEM.SVC.s 1083 | Empty | 11 | | 0 | 00/4DCB | 2166 | 6 MAINMEM.SVC.s 1084 | Comment | 11 | | 0 | 00/4DCB | * Multi file delete, for *DESTROY 2167 | 6 MAINMEM.SVC.s 1085 | Comment | 11 | | 0 | 00/4DCB | * Filename in MOSFILE 2168 | 6 MAINMEM.SVC.s 1086 | Comment | 11 | | 0 | 00/4DCB | * 2169 | 6 MAINMEM.SVC.s 1087 | Macro | 11 | | 0 | 00/4DCB | MULTIDEL >>> ENTMAIN 2170 | 6 MAINMEM.SVC.s 1087 | Code | 11 | | 1 | 00/4DCB : 9A | TXS ; Main SP already in X 2171 | 6 MAINMEM.SVC.s 1087 | Code | 11 | | 3 | 00/4DCC : AE 81 C0 | LDX $C081 ; Bank in ROM 2172 | 6 MAINMEM.SVC.s 1087 | Code | 11 | | 3 | 00/4DCF : AE 81 C0 | LDX $C081 2173 | 6 MAINMEM.SVC.s 1087 | Code | 11 | | 1 | 00/4DD2 : 58 | CLI ; Re-enable IRQ after XFER 2174 | 6 MAINMEM.SVC.s 1088 | Code | 11 | | 3 | 00/4DD3 : 20 10 51 | JSR PREPATH ; Preprocess pathname 2175 | 6 MAINMEM.SVC.s 1089 | Code | 11 | | 2 | 00/4DD6 : B0 1A | BCS ozunid_62 2176 | 6 MAINMEM.SVC.s 1090 | Comment | 11 | | 0 | 00/4DD8 | * CLC ; CC already set 2177 | 6 MAINMEM.SVC.s 1091 | Code | 11 | | 3 | 00/4DD8 : 20 92 53 | JSR WILDCARD ; Handle any wildcards 2178 | 6 MAINMEM.SVC.s 1092 | Code | 11 | | 2 | 00/4DDB : 90 04 | BCC ozunid_61 2179 | 6 MAINMEM.SVC.s 1093 | Code | 11 | | 2 | 00/4DDD : A9 46 | LDA #$46 ; 'File not found' 2180 | 6 MAINMEM.SVC.s 1094 | Code | 11 | | 2 | 00/4DDF : 80 0C | BRA _DELERR 2181 | 6 MAINMEM.SVC.s 1095 | Code | 11 | | 3 | 00/4DE1 : 20 30 49 | ozunid_61 JSR DODELETE 2182 | 6 MAINMEM.SVC.s 1096 | Code | 11 | | 2 | 00/4DE4 : B0 07 | BCS _DELERR 2183 | 6 MAINMEM.SVC.s 1097 | Code | 11 | | 3 | 00/4DE6 : 20 F6 53 | JSR WILDNEXT 2184 | 6 MAINMEM.SVC.s 1098 | Code | 11 | | 2 | 00/4DE9 : 90 F6 | BCC ozunid_61 ; More to do 2185 | 6 MAINMEM.SVC.s 1099 | Code | 11 | | 2 | 00/4DEB : A9 00 | LDA #$00 ; $00=Done 2186 | 6 MAINMEM.SVC.s 1100 | Code | 11 | | 1 | 00/4DED : 48 | _DELERR PHA 2187 | 6 MAINMEM.SVC.s 1101 | Code | 11 | | 3 | 00/4DEE : 20 01 55 | JSR CLSDIR 2188 | 6 MAINMEM.SVC.s 1102 | Code | 11 | | 1 | 00/4DF1 : 68 | PLA 2189 | 6 MAINMEM.SVC.s 1103 | Macro | 11 | | 0 | 00/4DF2 | ozunid_62 >>> XF2AUX,DESTRET 2190 | 6 MAINMEM.SVC.s 1103 | Code | 11 | | 3 | 00/4DF2 : AE 8B C0 | LDX $C08B ; R/W LC RAM, bank 1 2191 | 6 MAINMEM.SVC.s 1103 | Code | 11 | | 3 | 00/4DF5 : AE 8B C0 | LDX $C08B 2192 | 6 MAINMEM.SVC.s 1103 | Code | 11 | | 2 | 00/4DF8 : A2 2D | LDX #DESTRET 2195 | 6 MAINMEM.SVC.s 1103 | Code | 11 | | 3 | 00/4DFF : 8E EE 03 | STX {$3EE} 2196 | 6 MAINMEM.SVC.s 1103 | Code | 11 | | 1 | 00/4E02 : 78 | SEI ; Disable IRQ before XFER 2197 | 6 MAINMEM.SVC.s 1103 | Code | 11 | | 1 | 00/4E03 : 38 | SEC ; Use aux memory 2198 | 6 MAINMEM.SVC.s 1103 | Code | 11 | | 3 | 00/4E04 : 2C 58 FF | BIT $FF58 ; Set V: use alt ZP and LC 2199 | 6 MAINMEM.SVC.s 1103 | Code | 11 | | 3 | 00/4E07 : 4C 14 C3 | JMP {$C314} 2200 | 6 MAINMEM.SVC.s 1104 | Empty | 11 | | 0 | 00/4E0A | 2201 | 6 MAINMEM.SVC.s 1105 | Empty | 11 | | 0 | 00/4E0A | 2202 | 6 MAINMEM.SVC.s 1106 | Comment | 11 | | 0 | 00/4E0A | * Read machid from auxmem 2203 | 6 MAINMEM.SVC.s 1107 | Code | 11 | | 3 | 00/4E0A : AD 81 C0 | MACHRD LDA $C081 2204 | 6 MAINMEM.SVC.s 1108 | Code | 11 | | 3 | 00/4E0D : AD 81 C0 | LDA $C081 2205 | 6 MAINMEM.SVC.s 1109 | Code | 11 | | 3 | 00/4E10 : AD C0 FB | LDA $FBC0 2206 | 6 MAINMEM.SVC.s 1110 | Code | 11 | | 1 | 00/4E13 : 38 | SEC 2207 | 6 MAINMEM.SVC.s 1111 | Code | 11 | | 3 | 00/4E14 : 20 1F FE | JSR $FE1F 2208 | 6 MAINMEM.SVC.s 1112 | Code | 11 | | 2 | 00/4E17 : 80 0C | BRA MAINRDEXIT 2209 | 6 MAINMEM.SVC.s 1113 | Empty | 11 | | 0 | 00/4E19 | 2210 | 6 MAINMEM.SVC.s 1114 | Comment | 11 | | 0 | 00/4E19 | * Read mainmem from auxmem 2211 | 6 MAINMEM.SVC.s 1115 | Code | 11 | | 2 | 00/4E19 : 85 3C | MAINRDMEM STA {$3C} 2212 | 6 MAINMEM.SVC.s 1116 | Code | 11 | | 2 | 00/4E1B : 84 3D | STY {$3D} 2213 | 6 MAINMEM.SVC.s 1117 | Code | 11 | | 3 | 00/4E1D : AD 81 C0 | LDA $C081 2214 | 6 MAINMEM.SVC.s 1118 | Code | 11 | | 3 | 00/4E20 : AD 81 C0 | LDA $C081 2215 | 6 MAINMEM.SVC.s 1119 | Code | 11 | | 2 | 00/4E23 : B2 3C | LDA ({$3C}) 2216 | 6 MAINMEM.SVC.s 1120 | Macro | 11 | | 0 | 00/4E25 | MAINRDEXIT >>> XF2AUX,NULLRTS ; Back to an RTS 2217 | 6 MAINMEM.SVC.s 1120 | Code | 11 | | 3 | 00/4E25 : AE 8B C0 | LDX $C08B ; R/W LC RAM, bank 1 2218 | 6 MAINMEM.SVC.s 1120 | Code | 11 | | 3 | 00/4E28 : AE 8B C0 | LDX $C08B 2219 | 6 MAINMEM.SVC.s 1120 | Code | 11 | | 2 | 00/4E2B : A2 96 | LDX #NULLRTS 2222 | 6 MAINMEM.SVC.s 1120 | Code | 11 | | 3 | 00/4E32 : 8E EE 03 | STX {$3EE} 2223 | 6 MAINMEM.SVC.s 1120 | Code | 11 | | 1 | 00/4E35 : 78 | SEI ; Disable IRQ before XFER 2224 | 6 MAINMEM.SVC.s 1120 | Code | 11 | | 1 | 00/4E36 : 38 | SEC ; Use aux memory 2225 | 6 MAINMEM.SVC.s 1120 | Code | 11 | | 3 | 00/4E37 : 2C 58 FF | BIT $FF58 ; Set V: use alt ZP and LC 2226 | 6 MAINMEM.SVC.s 1120 | Code | 11 | | 3 | 00/4E3A : 4C 14 C3 | JMP {$C314} 2227 | 6 MAINMEM.SVC.s 1121 | Empty | 11 | | 0 | 00/4E3D | 2228 | 6 MAINMEM.SVC.s 1122 | Empty | 11 | | 0 | 00/4E3D | 2229 | 1 applecorn.s 194 | Directive | 11 | | 0 | 00/4E3D | PUT MAINMEM.GFX 2230 | 7 MAINMEM.GFX.s 1 | Comment | 11 | | 0 | 00/4E3D | * MAINMEM.GFX.S 2231 | 7 MAINMEM.GFX.s 2 | Comment | 11 | | 0 | 00/4E3D | * (c) Bobbi 2021 GPLv3 2232 | 7 MAINMEM.GFX.s 3 | Comment | 11 | | 0 | 00/4E3D | * 2233 | 7 MAINMEM.GFX.s 4 | Comment | 11 | | 0 | 00/4E3D | * Main memory HGR graphics routines. 2234 | 7 MAINMEM.GFX.s 5 | Empty | 11 | | 0 | 00/4E3D | 2235 | 7 MAINMEM.GFX.s 6 | Comment | 11 | | 0 | 00/4E3D | * Call FDraw Clear routine 2236 | 7 MAINMEM.GFX.s 7 | Macro | 11 | | 0 | 00/4E3D | CLRHGR >>> ENTMAIN 2237 | 7 MAINMEM.GFX.s 7 | Code | 11 | | 1 | 00/4E3D : 9A | TXS ; Main SP already in X 2238 | 7 MAINMEM.GFX.s 7 | Code | 11 | | 3 | 00/4E3E : AE 81 C0 | LDX $C081 ; Bank in ROM 2239 | 7 MAINMEM.GFX.s 7 | Code | 11 | | 3 | 00/4E41 : AE 81 C0 | LDX $C081 2240 | 7 MAINMEM.GFX.s 7 | Code | 11 | | 1 | 00/4E44 : 58 | CLI ; Re-enable IRQ after XFER 2241 | 7 MAINMEM.GFX.s 8 | Code | 11 | | 3 | 00/4E45 : AD DB 50 | LDA BGCOLOR 2242 | 7 MAINMEM.GFX.s 9 | Code | 11 | | 3 | 00/4E48 : 8D 05 94 | STA {$9400}+5 2243 | 7 MAINMEM.GFX.s 10 | Code | 11 | | 3 | 00/4E4B : 20 10 94 | JSR {$9400}+16 ; FDRAW: SetColor 2244 | 7 MAINMEM.GFX.s 11 | Code | 11 | | 3 | 00/4E4E : 20 16 94 | JSR {$9400}+22 ; FDRAW: Clear 2245 | 7 MAINMEM.GFX.s 12 | Code | 11 | | 3 | 00/4E51 : AD DA 50 | LDA FGCOLOR 2246 | 7 MAINMEM.GFX.s 13 | Code | 11 | | 3 | 00/4E54 : 8D 05 94 | STA {$9400}+5 2247 | 7 MAINMEM.GFX.s 14 | Code | 11 | | 3 | 00/4E57 : 20 10 94 | JSR {$9400}+16 ; FDRAW: SetColor 2248 | 7 MAINMEM.GFX.s 15 | Macro | 11 | | 0 | 00/4E5A | >>> XF2AUX,VDU16RET 2249 | 7 MAINMEM.GFX.s 15 | Code | 11 | | 3 | 00/4E5A : AE 8B C0 | LDX $C08B ; R/W LC RAM, bank 1 2250 | 7 MAINMEM.GFX.s 15 | Code | 11 | | 3 | 00/4E5D : AE 8B C0 | LDX $C08B 2251 | 7 MAINMEM.GFX.s 15 | Code | 11 | | 2 | 00/4E60 : A2 D6 | LDX #VDU16RET 2254 | 7 MAINMEM.GFX.s 15 | Code | 11 | | 3 | 00/4E67 : 8E EE 03 | STX {$3EE} 2255 | 7 MAINMEM.GFX.s 15 | Code | 11 | | 1 | 00/4E6A : 78 | SEI ; Disable IRQ before XFER 2256 | 7 MAINMEM.GFX.s 15 | Code | 11 | | 1 | 00/4E6B : 38 | SEC ; Use aux memory 2257 | 7 MAINMEM.GFX.s 15 | Code | 11 | | 3 | 00/4E6C : 2C 58 FF | BIT $FF58 ; Set V: use alt ZP and LC 2258 | 7 MAINMEM.GFX.s 15 | Code | 11 | | 3 | 00/4E6F : 4C 14 C3 | JMP {$C314} 2259 | 7 MAINMEM.GFX.s 16 | Empty | 11 | | 0 | 00/4E72 | 2260 | 7 MAINMEM.GFX.s 17 | Comment | 11 | | 0 | 00/4E72 | * Call FDraw SetLineMode routine 2261 | 7 MAINMEM.GFX.s 18 | Macro | 11 | | 0 | 00/4E72 | SETLINE >>> ENTMAIN 2262 | 7 MAINMEM.GFX.s 18 | Code | 11 | | 1 | 00/4E72 : 9A | TXS ; Main SP already in X 2263 | 7 MAINMEM.GFX.s 18 | Code | 11 | | 3 | 00/4E73 : AE 81 C0 | LDX $C081 ; Bank in ROM 2264 | 7 MAINMEM.GFX.s 18 | Code | 11 | | 3 | 00/4E76 : AE 81 C0 | LDX $C081 2265 | 7 MAINMEM.GFX.s 18 | Code | 11 | | 1 | 00/4E79 : 58 | CLI ; Re-enable IRQ after XFER 2266 | 7 MAINMEM.GFX.s 19 | Code | 11 | | 3 | 00/4E7A : 20 2B 94 | JSR {$9400}+43 ; FDRAW: SetLineMode 2267 | 7 MAINMEM.GFX.s 20 | Macro | 11 | | 0 | 00/4E7D | >>> XF2AUX,VDU18RET1 2268 | 7 MAINMEM.GFX.s 20 | Code | 11 | | 3 | 00/4E7D : AE 8B C0 | LDX $C08B ; R/W LC RAM, bank 1 2269 | 7 MAINMEM.GFX.s 20 | Code | 11 | | 3 | 00/4E80 : AE 8B C0 | LDX $C08B 2270 | 7 MAINMEM.GFX.s 20 | Code | 11 | | 2 | 00/4E83 : A2 1C | LDX #VDU18RET1 2273 | 7 MAINMEM.GFX.s 20 | Code | 11 | | 3 | 00/4E8A : 8E EE 03 | STX {$3EE} 2274 | 7 MAINMEM.GFX.s 20 | Code | 11 | | 1 | 00/4E8D : 78 | SEI ; Disable IRQ before XFER 2275 | 7 MAINMEM.GFX.s 20 | Code | 11 | | 1 | 00/4E8E : 38 | SEC ; Use aux memory 2276 | 7 MAINMEM.GFX.s 20 | Code | 11 | | 3 | 00/4E8F : 2C 58 FF | BIT $FF58 ; Set V: use alt ZP and LC 2277 | 7 MAINMEM.GFX.s 20 | Code | 11 | | 3 | 00/4E92 : 4C 14 C3 | JMP {$C314} 2278 | 7 MAINMEM.GFX.s 21 | Empty | 11 | | 0 | 00/4E95 | 2279 | 7 MAINMEM.GFX.s 22 | Comment | 11 | | 0 | 00/4E95 | * Helper function to set up colors 2280 | 7 MAINMEM.GFX.s 23 | Code | 11 | | 3 | 00/4E95 : AD DD 50 | SETCOLOR LDA PLOTMODE 2281 | 7 MAINMEM.GFX.s 24 | Code | 11 | | 2 | 00/4E98 : 29 03 | AND #$03 2282 | 7 MAINMEM.GFX.s 25 | Code | 11 | | 2 | 00/4E9A : C9 01 | CMP #$01 ; Draw in foreground colour 2283 | 7 MAINMEM.GFX.s 26 | Code | 11 | | 2 | 00/4E9C : D0 05 | BNE ozunid_63 2284 | 7 MAINMEM.GFX.s 27 | Code | 11 | | 3 | 00/4E9E : AD DA 50 | LDA FGCOLOR 2285 | 7 MAINMEM.GFX.s 28 | Code | 11 | | 2 | 00/4EA1 : 80 0F | BRA _SETCOLOR 2286 | 7 MAINMEM.GFX.s 29 | Code | 11 | | 2 | 00/4EA3 : C9 02 | ozunid_63 CMP #$02 ; Draw in inverse colour 2287 | 7 MAINMEM.GFX.s 30 | Code | 11 | | 2 | 00/4EA5 : D0 08 | BNE ozunid_64 2288 | 7 MAINMEM.GFX.s 31 | Code | 11 | | 1 | 00/4EA7 : 38 | SEC 2289 | 7 MAINMEM.GFX.s 32 | Code | 11 | | 2 | 00/4EA8 : A9 07 | LDA #$07 2290 | 7 MAINMEM.GFX.s 33 | Code | 11 | | 3 | 00/4EAA : ED DA 50 | SBC FGCOLOR 2291 | 7 MAINMEM.GFX.s 34 | Code | 11 | | 2 | 00/4EAD : 80 03 | BRA _SETCOLOR 2292 | 7 MAINMEM.GFX.s 35 | Code | 11 | | 3 | 00/4EAF : AD DB 50 | ozunid_64 LDA BGCOLOR ; Draw in background colour 2293 | 7 MAINMEM.GFX.s 36 | Code | 11 | | 3 | 00/4EB2 : 8D 05 94 | _SETCOLOR STA {$9400}+5 2294 | 7 MAINMEM.GFX.s 37 | Code | 11 | | 3 | 00/4EB5 : 4C 10 94 | JMP {$9400}+16 ; FDRAW: SetColor 2295 | 7 MAINMEM.GFX.s 38 | Empty | 11 | | 0 | 00/4EB8 | 2296 | 7 MAINMEM.GFX.s 39 | Comment | 11 | | 0 | 00/4EB8 | * Call FDraw DrawLine routine 2297 | 7 MAINMEM.GFX.s 40 | Macro | 11 | | 0 | 00/4EB8 | DRAWLINE >>> ENTMAIN 2298 | 7 MAINMEM.GFX.s 40 | Code | 11 | | 1 | 00/4EB8 : 9A | TXS ; Main SP already in X 2299 | 7 MAINMEM.GFX.s 40 | Code | 11 | | 3 | 00/4EB9 : AE 81 C0 | LDX $C081 ; Bank in ROM 2300 | 7 MAINMEM.GFX.s 40 | Code | 11 | | 3 | 00/4EBC : AE 81 C0 | LDX $C081 2301 | 7 MAINMEM.GFX.s 40 | Code | 11 | | 1 | 00/4EBF : 58 | CLI ; Re-enable IRQ after XFER 2302 | 7 MAINMEM.GFX.s 41 | Code | 11 | | 3 | 00/4EC0 : 20 95 4E | JSR SETCOLOR 2303 | 7 MAINMEM.GFX.s 42 | Code | 11 | | 3 | 00/4EC3 : 20 1C 94 | JSR {$9400}+28 ; FDRAW: DrawLine 2304 | 7 MAINMEM.GFX.s 43 | Macro | 11 | | 0 | 00/4EC6 | >>> XF2AUX,VDU25RET 2305 | 7 MAINMEM.GFX.s 43 | Code | 11 | | 3 | 00/4EC6 : AE 8B C0 | LDX $C08B ; R/W LC RAM, bank 1 2306 | 7 MAINMEM.GFX.s 43 | Code | 11 | | 3 | 00/4EC9 : AE 8B C0 | LDX $C08B 2307 | 7 MAINMEM.GFX.s 43 | Code | 11 | | 2 | 00/4ECC : A2 B4 | LDX #VDU25RET 2310 | 7 MAINMEM.GFX.s 43 | Code | 11 | | 3 | 00/4ED3 : 8E EE 03 | STX {$3EE} 2311 | 7 MAINMEM.GFX.s 43 | Code | 11 | | 1 | 00/4ED6 : 78 | SEI ; Disable IRQ before XFER 2312 | 7 MAINMEM.GFX.s 43 | Code | 11 | | 1 | 00/4ED7 : 38 | SEC ; Use aux memory 2313 | 7 MAINMEM.GFX.s 43 | Code | 11 | | 3 | 00/4ED8 : 2C 58 FF | BIT $FF58 ; Set V: use alt ZP and LC 2314 | 7 MAINMEM.GFX.s 43 | Code | 11 | | 3 | 00/4EDB : 4C 14 C3 | JMP {$C314} 2315 | 7 MAINMEM.GFX.s 44 | Empty | 11 | | 0 | 00/4EDE | 2316 | 7 MAINMEM.GFX.s 45 | Comment | 11 | | 0 | 00/4EDE | * Call FDraw DrawPoint routine 2317 | 7 MAINMEM.GFX.s 46 | Macro | 11 | | 0 | 00/4EDE | DRAWPNT >>> ENTMAIN 2318 | 7 MAINMEM.GFX.s 46 | Code | 11 | | 1 | 00/4EDE : 9A | TXS ; Main SP already in X 2319 | 7 MAINMEM.GFX.s 46 | Code | 11 | | 3 | 00/4EDF : AE 81 C0 | LDX $C081 ; Bank in ROM 2320 | 7 MAINMEM.GFX.s 46 | Code | 11 | | 3 | 00/4EE2 : AE 81 C0 | LDX $C081 2321 | 7 MAINMEM.GFX.s 46 | Code | 11 | | 1 | 00/4EE5 : 58 | CLI ; Re-enable IRQ after XFER 2322 | 7 MAINMEM.GFX.s 47 | Code | 11 | | 3 | 00/4EE6 : 20 95 4E | JSR SETCOLOR 2323 | 7 MAINMEM.GFX.s 48 | Code | 11 | | 3 | 00/4EE9 : 20 19 94 | JSR {$9400}+25 ; FDRAW: DrawPoint 2324 | 7 MAINMEM.GFX.s 49 | Macro | 11 | | 0 | 00/4EEC | >>> XF2AUX,VDU25RET 2325 | 7 MAINMEM.GFX.s 49 | Code | 11 | | 3 | 00/4EEC : AE 8B C0 | LDX $C08B ; R/W LC RAM, bank 1 2326 | 7 MAINMEM.GFX.s 49 | Code | 11 | | 3 | 00/4EEF : AE 8B C0 | LDX $C08B 2327 | 7 MAINMEM.GFX.s 49 | Code | 11 | | 2 | 00/4EF2 : A2 B4 | LDX #VDU25RET 2330 | 7 MAINMEM.GFX.s 49 | Code | 11 | | 3 | 00/4EF9 : 8E EE 03 | STX {$3EE} 2331 | 7 MAINMEM.GFX.s 49 | Code | 11 | | 1 | 00/4EFC : 78 | SEI ; Disable IRQ before XFER 2332 | 7 MAINMEM.GFX.s 49 | Code | 11 | | 1 | 00/4EFD : 38 | SEC ; Use aux memory 2333 | 7 MAINMEM.GFX.s 49 | Code | 11 | | 3 | 00/4EFE : 2C 58 FF | BIT $FF58 ; Set V: use alt ZP and LC 2334 | 7 MAINMEM.GFX.s 49 | Code | 11 | | 3 | 00/4F01 : 4C 14 C3 | JMP {$C314} 2335 | 7 MAINMEM.GFX.s 50 | Empty | 11 | | 0 | 00/4F04 | 2336 | 7 MAINMEM.GFX.s 51 | Comment | 11 | | 0 | 00/4F04 | * Call FDraw DrawCircle routine 2337 | 7 MAINMEM.GFX.s 52 | Macro | 11 | | 0 | 00/4F04 | DRAWCIRC >>> ENTMAIN 2338 | 7 MAINMEM.GFX.s 52 | Code | 11 | | 1 | 00/4F04 : 9A | TXS ; Main SP already in X 2339 | 7 MAINMEM.GFX.s 52 | Code | 11 | | 3 | 00/4F05 : AE 81 C0 | LDX $C081 ; Bank in ROM 2340 | 7 MAINMEM.GFX.s 52 | Code | 11 | | 3 | 00/4F08 : AE 81 C0 | LDX $C081 2341 | 7 MAINMEM.GFX.s 52 | Code | 11 | | 1 | 00/4F0B : 58 | CLI ; Re-enable IRQ after XFER 2342 | 7 MAINMEM.GFX.s 53 | Code | 11 | | 3 | 00/4F0C : 20 95 4E | JSR SETCOLOR 2343 | 7 MAINMEM.GFX.s 54 | Code | 11 | | 3 | 00/4F0F : 20 25 94 | JSR {$9400}+37 ; FDRAW: DrawCircle 2344 | 7 MAINMEM.GFX.s 55 | Macro | 11 | | 0 | 00/4F12 | >>> XF2AUX,VDU25RET 2345 | 7 MAINMEM.GFX.s 55 | Code | 11 | | 3 | 00/4F12 : AE 8B C0 | LDX $C08B ; R/W LC RAM, bank 1 2346 | 7 MAINMEM.GFX.s 55 | Code | 11 | | 3 | 00/4F15 : AE 8B C0 | LDX $C08B 2347 | 7 MAINMEM.GFX.s 55 | Code | 11 | | 2 | 00/4F18 : A2 B4 | LDX #VDU25RET 2350 | 7 MAINMEM.GFX.s 55 | Code | 11 | | 3 | 00/4F1F : 8E EE 03 | STX {$3EE} 2351 | 7 MAINMEM.GFX.s 55 | Code | 11 | | 1 | 00/4F22 : 78 | SEI ; Disable IRQ before XFER 2352 | 7 MAINMEM.GFX.s 55 | Code | 11 | | 1 | 00/4F23 : 38 | SEC ; Use aux memory 2353 | 7 MAINMEM.GFX.s 55 | Code | 11 | | 3 | 00/4F24 : 2C 58 FF | BIT $FF58 ; Set V: use alt ZP and LC 2354 | 7 MAINMEM.GFX.s 55 | Code | 11 | | 3 | 00/4F27 : 4C 14 C3 | JMP {$C314} 2355 | 7 MAINMEM.GFX.s 56 | Empty | 11 | | 0 | 00/4F2A | 2356 | 7 MAINMEM.GFX.s 57 | Comment | 11 | | 0 | 00/4F2A | * Call FDraw FillCircle routine 2357 | 7 MAINMEM.GFX.s 58 | Macro | 11 | | 0 | 00/4F2A | FILLCIRC >>> ENTMAIN 2358 | 7 MAINMEM.GFX.s 58 | Code | 11 | | 1 | 00/4F2A : 9A | TXS ; Main SP already in X 2359 | 7 MAINMEM.GFX.s 58 | Code | 11 | | 3 | 00/4F2B : AE 81 C0 | LDX $C081 ; Bank in ROM 2360 | 7 MAINMEM.GFX.s 58 | Code | 11 | | 3 | 00/4F2E : AE 81 C0 | LDX $C081 2361 | 7 MAINMEM.GFX.s 58 | Code | 11 | | 1 | 00/4F31 : 58 | CLI ; Re-enable IRQ after XFER 2362 | 7 MAINMEM.GFX.s 59 | Code | 11 | | 3 | 00/4F32 : 20 95 4E | JSR SETCOLOR 2363 | 7 MAINMEM.GFX.s 60 | Code | 11 | | 3 | 00/4F35 : 20 28 94 | JSR {$9400}+40 ; FDRAW: FillCircle 2364 | 7 MAINMEM.GFX.s 61 | Macro | 11 | | 0 | 00/4F38 | >>> XF2AUX,VDU25RET 2365 | 7 MAINMEM.GFX.s 61 | Code | 11 | | 3 | 00/4F38 : AE 8B C0 | LDX $C08B ; R/W LC RAM, bank 1 2366 | 7 MAINMEM.GFX.s 61 | Code | 11 | | 3 | 00/4F3B : AE 8B C0 | LDX $C08B 2367 | 7 MAINMEM.GFX.s 61 | Code | 11 | | 2 | 00/4F3E : A2 B4 | LDX #VDU25RET 2370 | 7 MAINMEM.GFX.s 61 | Code | 11 | | 3 | 00/4F45 : 8E EE 03 | STX {$3EE} 2371 | 7 MAINMEM.GFX.s 61 | Code | 11 | | 1 | 00/4F48 : 78 | SEI ; Disable IRQ before XFER 2372 | 7 MAINMEM.GFX.s 61 | Code | 11 | | 1 | 00/4F49 : 38 | SEC ; Use aux memory 2373 | 7 MAINMEM.GFX.s 61 | Code | 11 | | 3 | 00/4F4A : 2C 58 FF | BIT $FF58 ; Set V: use alt ZP and LC 2374 | 7 MAINMEM.GFX.s 61 | Code | 11 | | 3 | 00/4F4D : 4C 14 C3 | JMP {$C314} 2375 | 7 MAINMEM.GFX.s 62 | Empty | 11 | | 0 | 00/4F50 | 2376 | 7 MAINMEM.GFX.s 63 | Comment | 11 | | 0 | 00/4F50 | * Call FDraw FillRect routine 2377 | 7 MAINMEM.GFX.s 64 | Macro | 11 | | 0 | 00/4F50 | FILLRECT >>> ENTMAIN 2378 | 7 MAINMEM.GFX.s 64 | Code | 11 | | 1 | 00/4F50 : 9A | TXS ; Main SP already in X 2379 | 7 MAINMEM.GFX.s 64 | Code | 11 | | 3 | 00/4F51 : AE 81 C0 | LDX $C081 ; Bank in ROM 2380 | 7 MAINMEM.GFX.s 64 | Code | 11 | | 3 | 00/4F54 : AE 81 C0 | LDX $C081 2381 | 7 MAINMEM.GFX.s 64 | Code | 11 | | 1 | 00/4F57 : 58 | CLI ; Re-enable IRQ after XFER 2382 | 7 MAINMEM.GFX.s 65 | Code | 11 | | 3 | 00/4F58 : 20 95 4E | JSR SETCOLOR 2383 | 7 MAINMEM.GFX.s 66 | Code | 11 | | 3 | 00/4F5B : AD 08 94 | LDA {$9400}+8 ; Y1 2384 | 7 MAINMEM.GFX.s 67 | Code | 11 | | 3 | 00/4F5E : CD 0B 94 | CMP {$9400}+11 ; Y2 2385 | 7 MAINMEM.GFX.s 68 | Code | 11 | | 2 | 00/4F61 : F0 02 | BEQ ozunid_65 2386 | 7 MAINMEM.GFX.s 69 | Code | 11 | | 2 | 00/4F63 : B0 2F | BCS _SWAPY ; Y1>Y2 then swap 2387 | 7 MAINMEM.GFX.s 70 | Code | 11 | | 3 | 00/4F65 : AD 07 94 | ozunid_65 LDA {$9400}+7 ; MSB of X1 2388 | 7 MAINMEM.GFX.s 71 | Code | 11 | | 3 | 00/4F68 : CD 0A 94 | CMP {$9400}+10 ; MSB of X2 2389 | 7 MAINMEM.GFX.s 72 | Code | 11 | | 2 | 00/4F6B : F0 02 | BEQ ozunid_66 2390 | 7 MAINMEM.GFX.s 73 | Code | 11 | | 2 | 00/4F6D : B0 33 | BCS _SWAPX ; MSB X1 > MSB X2 2391 | 7 MAINMEM.GFX.s 74 | Code | 11 | | 3 | 00/4F6F : AD 06 94 | ozunid_66 LDA {$9400}+6 ; LSB of X1 2392 | 7 MAINMEM.GFX.s 75 | Code | 11 | | 3 | 00/4F72 : CD 09 94 | CMP {$9400}+9 ; MSB of X2 2393 | 7 MAINMEM.GFX.s 76 | Code | 11 | | 2 | 00/4F75 : F0 02 | BEQ ozunid_67 2394 | 7 MAINMEM.GFX.s 77 | Code | 11 | | 2 | 00/4F77 : B0 29 | BCS _SWAPX ; LSB X1 > LSB X2 2395 | 7 MAINMEM.GFX.s 78 | Code | 11 | | 3 | 00/4F79 : 20 22 94 | ozunid_67 JSR {$9400}+34 ; FDRAW: FillRect 2396 | 7 MAINMEM.GFX.s 79 | Macro | 11 | | 0 | 00/4F7C | >>> XF2AUX,VDU25RET 2397 | 7 MAINMEM.GFX.s 79 | Code | 11 | | 3 | 00/4F7C : AE 8B C0 | LDX $C08B ; R/W LC RAM, bank 1 2398 | 7 MAINMEM.GFX.s 79 | Code | 11 | | 3 | 00/4F7F : AE 8B C0 | LDX $C08B 2399 | 7 MAINMEM.GFX.s 79 | Code | 11 | | 2 | 00/4F82 : A2 B4 | LDX #VDU25RET 2402 | 7 MAINMEM.GFX.s 79 | Code | 11 | | 3 | 00/4F89 : 8E EE 03 | STX {$3EE} 2403 | 7 MAINMEM.GFX.s 79 | Code | 11 | | 1 | 00/4F8C : 78 | SEI ; Disable IRQ before XFER 2404 | 7 MAINMEM.GFX.s 79 | Code | 11 | | 1 | 00/4F8D : 38 | SEC ; Use aux memory 2405 | 7 MAINMEM.GFX.s 79 | Code | 11 | | 3 | 00/4F8E : 2C 58 FF | BIT $FF58 ; Set V: use alt ZP and LC 2406 | 7 MAINMEM.GFX.s 79 | Code | 11 | | 3 | 00/4F91 : 4C 14 C3 | JMP {$C314} 2407 | 7 MAINMEM.GFX.s 80 | Code | 11 | | 3 | 00/4F94 : AD 08 94 | _SWAPY LDA {$9400}+8 2408 | 7 MAINMEM.GFX.s 81 | Code | 11 | | 3 | 00/4F97 : AC 0B 94 | LDY {$9400}+11 2409 | 7 MAINMEM.GFX.s 82 | Code | 11 | | 3 | 00/4F9A : 8C 08 94 | STY {$9400}+8 2410 | 7 MAINMEM.GFX.s 83 | Code | 11 | | 3 | 00/4F9D : 8D 0B 94 | STA {$9400}+11 2411 | 7 MAINMEM.GFX.s 84 | Code | 11 | | 2 | 00/4FA0 : 80 C3 | BRA ozunid_65 2412 | 7 MAINMEM.GFX.s 85 | Code | 11 | | 3 | 00/4FA2 : AD 07 94 | _SWAPX LDA {$9400}+7 2413 | 7 MAINMEM.GFX.s 86 | Code | 11 | | 3 | 00/4FA5 : AC 0A 94 | LDY {$9400}+10 2414 | 7 MAINMEM.GFX.s 87 | Code | 11 | | 3 | 00/4FA8 : 8C 07 94 | STY {$9400}+7 2415 | 7 MAINMEM.GFX.s 88 | Code | 11 | | 3 | 00/4FAB : 8D 0A 94 | STA {$9400}+10 2416 | 7 MAINMEM.GFX.s 89 | Code | 11 | | 3 | 00/4FAE : AD 06 94 | LDA {$9400}+6 2417 | 7 MAINMEM.GFX.s 90 | Code | 11 | | 3 | 00/4FB1 : AC 09 94 | LDY {$9400}+9 2418 | 7 MAINMEM.GFX.s 91 | Code | 11 | | 3 | 00/4FB4 : 8C 06 94 | STY {$9400}+6 2419 | 7 MAINMEM.GFX.s 92 | Code | 11 | | 3 | 00/4FB7 : 8D 09 94 | STA {$9400}+9 2420 | 7 MAINMEM.GFX.s 93 | Code | 11 | | 2 | 00/4FBA : 80 BD | BRA ozunid_67 2421 | 7 MAINMEM.GFX.s 94 | Empty | 11 | | 0 | 00/4FBC | 2422 | 7 MAINMEM.GFX.s 95 | Comment | 11 | | 0 | 00/4FBC | * Reset colours and linetype 2423 | 7 MAINMEM.GFX.s 96 | Code | 11 | | 3 | 00/4FBC : 20 00 94 | GFXINIT JSR {$9400}+0 ; Initialize FDRAW library 2424 | 7 MAINMEM.GFX.s 97 | Code | 11 | | 2 | 00/4FBF : A9 20 | LDA #$20 2425 | 7 MAINMEM.GFX.s 98 | Code | 11 | | 3 | 00/4FC1 : 8D 05 94 | STA {$9400}+5 2426 | 7 MAINMEM.GFX.s 99 | Code | 11 | | 3 | 00/4FC4 : 20 13 94 | JSR {$9400}+19 ; FDRAW: Set page $2000 2427 | 7 MAINMEM.GFX.s 100 | Code | 11 | | 3 | 00/4FC7 : 9C DC 50 | STZ LINETYPE 2428 | 7 MAINMEM.GFX.s 101 | Code | 11 | | 3 | 00/4FCA : 9C 05 94 | STZ {$9400}+5 2429 | 7 MAINMEM.GFX.s 102 | Code | 11 | | 3 | 00/4FCD : 20 2B 94 | JSR {$9400}+43 ; FDRAW: SetLineMode 2430 | 7 MAINMEM.GFX.s 103 | Code | 11 | | 2 | 00/4FD0 : A9 07 | LDA #$07 2431 | 7 MAINMEM.GFX.s 104 | Code | 11 | | 3 | 00/4FD2 : 8D DA 50 | STA FGCOLOR 2432 | 7 MAINMEM.GFX.s 105 | Code | 11 | | 3 | 00/4FD5 : 8D 05 94 | STA {$9400}+5 2433 | 7 MAINMEM.GFX.s 106 | Code | 11 | | 3 | 00/4FD8 : 20 10 94 | JSR {$9400}+16 ; FDRAW: SetColor 2434 | 7 MAINMEM.GFX.s 107 | Code | 11 | | 3 | 00/4FDB : 9C DB 50 | STZ BGCOLOR 2435 | 7 MAINMEM.GFX.s 108 | Code | 11 | | 3 | 00/4FDE : 20 16 94 | JSR {$9400}+22 ; FDRAW: clear HGR screen 2436 | 7 MAINMEM.GFX.s 109 | Code | 11 | | 1 | 00/4FE1 : 60 | RTS 2437 | 7 MAINMEM.GFX.s 110 | Empty | 11 | | 0 | 00/4FE2 | 2438 | 7 MAINMEM.GFX.s 111 | Comment | 11 | | 0 | 00/4FE2 | * Plot bitmap character on the HGR screen 2439 | 7 MAINMEM.GFX.s 112 | Comment | 11 | | 0 | 00/4FE2 | * On entry: char is in A 2440 | 7 MAINMEM.GFX.s 113 | Macro | 11 | | 0 | 00/4FE2 | DRAWCHAR >>> ENTMAIN 2441 | 7 MAINMEM.GFX.s 113 | Code | 11 | | 1 | 00/4FE2 : 9A | TXS ; Main SP already in X 2442 | 7 MAINMEM.GFX.s 113 | Code | 11 | | 3 | 00/4FE3 : AE 81 C0 | LDX $C081 ; Bank in ROM 2443 | 7 MAINMEM.GFX.s 113 | Code | 11 | | 3 | 00/4FE6 : AE 81 C0 | LDX $C081 2444 | 7 MAINMEM.GFX.s 113 | Code | 11 | | 1 | 00/4FE9 : 58 | CLI ; Re-enable IRQ after XFER 2445 | 7 MAINMEM.GFX.s 114 | Comment | 11 | | 0 | 00/4FEA | * AND #$7F ; Don't! 2446 | 7 MAINMEM.GFX.s 115 | Code | 11 | | 2 | 00/4FEA : 85 3C | STA {$3C} ; A*8 -> A1L,A1H 2447 | 7 MAINMEM.GFX.s 116 | Code | 11 | | 2 | 00/4FEC : 64 3D | STZ {$3D} 2448 | 7 MAINMEM.GFX.s 117 | Code | 11 | | 2 | 00/4FEE : 06 3C | ASL {$3C} 2449 | 7 MAINMEM.GFX.s 118 | Code | 11 | | 2 | 00/4FF0 : 26 3D | ROL {$3D} 2450 | 7 MAINMEM.GFX.s 119 | Code | 11 | | 2 | 00/4FF2 : 06 3C | ASL {$3C} 2451 | 7 MAINMEM.GFX.s 120 | Code | 11 | | 2 | 00/4FF4 : 26 3D | ROL {$3D} 2452 | 7 MAINMEM.GFX.s 121 | Code | 11 | | 2 | 00/4FF6 : 06 3C | ASL {$3C} 2453 | 7 MAINMEM.GFX.s 122 | Code | 11 | | 2 | 00/4FF8 : 26 3D | ROL {$3D} 2454 | 7 MAINMEM.GFX.s 123 | Code | 11 | | 1 | 00/4FFA : 18 | CLC ; FONTADDR+A*8 -> A1L,A1H 2455 | 7 MAINMEM.GFX.s 124 | Code | 11 | | 2 | 00/4FFB : A5 3C | LDA {$3C} 2456 | 7 MAINMEM.GFX.s 125 | Code | 11 | | 2 | 00/4FFD : 69 00 | ADC #<{$A900} 2457 | 7 MAINMEM.GFX.s 126 | Code | 11 | | 2 | 00/4FFF : 85 3C | STA {$3C} 2458 | 7 MAINMEM.GFX.s 127 | Code | 11 | | 2 | 00/5001 : A5 3D | LDA {$3D} 2459 | 7 MAINMEM.GFX.s 128 | Code | 11 | | 2 | 00/5003 : 69 A9 | ADC #>{$A900} 2460 | 7 MAINMEM.GFX.s 129 | Code | 11 | | 2 | 00/5005 : 85 3D | STA {$3D} 2461 | 7 MAINMEM.GFX.s 130 | Code | 11 | | 3 | 00/5007 : AD DE 50 | LDA HGRADDR+0 ; HGRADDR -> A4L,A4H 2462 | 7 MAINMEM.GFX.s 131 | Code | 11 | | 2 | 00/500A : 85 42 | STA {$42} 2463 | 7 MAINMEM.GFX.s 132 | Code | 11 | | 3 | 00/500C : AD DF 50 | LDA HGRADDR+1 2464 | 7 MAINMEM.GFX.s 133 | Code | 11 | | 2 | 00/500F : 85 43 | STA {$43} 2465 | 7 MAINMEM.GFX.s 134 | Code | 11 | | 2 | 00/5011 : A0 00 | LDY #$00 2466 | 7 MAINMEM.GFX.s 135 | Code | 11 | | 2 | 00/5013 : B1 3C | ozunid_68 LDA ({$3C}),Y ; Load line of pixels from font 2467 | 7 MAINMEM.GFX.s 136 | Code | 11 | | 2 | 00/5015 : 92 42 | STA ({$42}) ; Store them on screen 2468 | 7 MAINMEM.GFX.s 137 | Code | 11 | | 2 | 00/5017 : E6 43 | INC {$43} ; Skip 1024 bytes to next row 2469 | 7 MAINMEM.GFX.s 138 | Code | 11 | | 2 | 00/5019 : E6 43 | INC {$43} 2470 | 7 MAINMEM.GFX.s 139 | Code | 11 | | 2 | 00/501B : E6 43 | INC {$43} 2471 | 7 MAINMEM.GFX.s 140 | Code | 11 | | 2 | 00/501D : E6 43 | INC {$43} 2472 | 7 MAINMEM.GFX.s 141 | Code | 11 | | 1 | 00/501F : C8 | INY 2473 | 7 MAINMEM.GFX.s 142 | Code | 11 | | 2 | 00/5020 : C0 08 | CPY #$08 ; All eight rows done? 2474 | 7 MAINMEM.GFX.s 143 | Code | 11 | | 2 | 00/5022 : D0 EF | BNE ozunid_68 2475 | 7 MAINMEM.GFX.s 144 | Macro | 11 | | 0 | 00/5024 | >>> XF2AUX,PUTCHRET 2476 | 7 MAINMEM.GFX.s 144 | Code | 11 | | 3 | 00/5024 : AE 8B C0 | LDX $C08B ; R/W LC RAM, bank 1 2477 | 7 MAINMEM.GFX.s 144 | Code | 11 | | 3 | 00/5027 : AE 8B C0 | LDX $C08B 2478 | 7 MAINMEM.GFX.s 144 | Code | 11 | | 2 | 00/502A : A2 6C | LDX #PUTCHRET 2481 | 7 MAINMEM.GFX.s 144 | Code | 11 | | 3 | 00/5031 : 8E EE 03 | STX {$3EE} 2482 | 7 MAINMEM.GFX.s 144 | Code | 11 | | 1 | 00/5034 : 78 | SEI ; Disable IRQ before XFER 2483 | 7 MAINMEM.GFX.s 144 | Code | 11 | | 1 | 00/5035 : 38 | SEC ; Use aux memory 2484 | 7 MAINMEM.GFX.s 144 | Code | 11 | | 3 | 00/5036 : 2C 58 FF | BIT $FF58 ; Set V: use alt ZP and LC 2485 | 7 MAINMEM.GFX.s 144 | Code | 11 | | 3 | 00/5039 : 4C 14 C3 | JMP {$C314} 2486 | 7 MAINMEM.GFX.s 145 | Empty | 11 | | 0 | 00/503C | 2487 | 7 MAINMEM.GFX.s 146 | Comment | 11 | | 0 | 00/503C | * Copy text line A+1 to line A 2488 | 7 MAINMEM.GFX.s 147 | Macro | 11 | | 0 | 00/503C | HGRSCR1L >>> ENTMAIN 2489 | 7 MAINMEM.GFX.s 147 | Code | 11 | | 1 | 00/503C : 9A | TXS ; Main SP already in X 2490 | 7 MAINMEM.GFX.s 147 | Code | 11 | | 3 | 00/503D : AE 81 C0 | LDX $C081 ; Bank in ROM 2491 | 7 MAINMEM.GFX.s 147 | Code | 11 | | 3 | 00/5040 : AE 81 C0 | LDX $C081 2492 | 7 MAINMEM.GFX.s 147 | Code | 11 | | 1 | 00/5043 : 58 | CLI ; Re-enable IRQ after XFER 2493 | 7 MAINMEM.GFX.s 148 | Code | 11 | | 1 | 00/5044 : 0A | ASL ; Dest addr->A4L,A4H 2494 | 7 MAINMEM.GFX.s 149 | Code | 11 | | 1 | 00/5045 : AA | TAX 2495 | 7 MAINMEM.GFX.s 150 | Code | 11 | | 3 | 00/5046 : BD E0 50 | LDA MHGRTAB,X 2496 | 7 MAINMEM.GFX.s 151 | Code | 11 | | 2 | 00/5049 : 85 42 | STA {$42} 2497 | 7 MAINMEM.GFX.s 152 | Code | 11 | | 3 | 00/504B : BD E1 50 | LDA MHGRTAB+1,X 2498 | 7 MAINMEM.GFX.s 153 | Code | 11 | | 2 | 00/504E : 85 43 | STA {$43} 2499 | 7 MAINMEM.GFX.s 154 | Code | 11 | | 1 | 00/5050 : E8 | INX ; Source addr->A1L,A1H 2500 | 7 MAINMEM.GFX.s 155 | Code | 11 | | 1 | 00/5051 : E8 | INX 2501 | 7 MAINMEM.GFX.s 156 | Code | 11 | | 3 | 00/5052 : BD E0 50 | LDA MHGRTAB,X 2502 | 7 MAINMEM.GFX.s 157 | Code | 11 | | 2 | 00/5055 : 85 3C | STA {$3C} 2503 | 7 MAINMEM.GFX.s 158 | Code | 11 | | 3 | 00/5057 : BD E1 50 | LDA MHGRTAB+1,X 2504 | 7 MAINMEM.GFX.s 159 | Code | 11 | | 2 | 00/505A : 85 3D | STA {$3D} 2505 | 7 MAINMEM.GFX.s 160 | Code | 11 | | 2 | 00/505C : A2 00 | LDX #$00 2506 | 7 MAINMEM.GFX.s 161 | Code | 11 | | 2 | 00/505E : A0 00 | ozunid_69 LDY #$00 2507 | 7 MAINMEM.GFX.s 162 | Code | 11 | | 2 | 00/5060 : B1 3C | ozunid_70 LDA ({$3C}),Y 2508 | 7 MAINMEM.GFX.s 163 | Code | 11 | | 2 | 00/5062 : 91 42 | STA ({$42}),Y 2509 | 7 MAINMEM.GFX.s 164 | Code | 11 | | 1 | 00/5064 : C8 | INY 2510 | 7 MAINMEM.GFX.s 165 | Code | 11 | | 2 | 00/5065 : C0 28 | CPY #40 ; 40 chars in line 2511 | 7 MAINMEM.GFX.s 166 | Code | 11 | | 2 | 00/5067 : D0 F7 | BNE ozunid_70 2512 | 7 MAINMEM.GFX.s 167 | Code | 11 | | 2 | 00/5069 : E6 3D | INC {$3D} ; Advance source 1024 bytes 2513 | 7 MAINMEM.GFX.s 168 | Code | 11 | | 2 | 00/506B : E6 3D | INC {$3D} 2514 | 7 MAINMEM.GFX.s 169 | Code | 11 | | 2 | 00/506D : E6 3D | INC {$3D} 2515 | 7 MAINMEM.GFX.s 170 | Code | 11 | | 2 | 00/506F : E6 3D | INC {$3D} 2516 | 7 MAINMEM.GFX.s 171 | Code | 11 | | 2 | 00/5071 : E6 43 | INC {$43} ; Advance dest 1024 bytes 2517 | 7 MAINMEM.GFX.s 172 | Code | 11 | | 2 | 00/5073 : E6 43 | INC {$43} 2518 | 7 MAINMEM.GFX.s 173 | Code | 11 | | 2 | 00/5075 : E6 43 | INC {$43} 2519 | 7 MAINMEM.GFX.s 174 | Code | 11 | | 2 | 00/5077 : E6 43 | INC {$43} 2520 | 7 MAINMEM.GFX.s 175 | Code | 11 | | 1 | 00/5079 : E8 | INX 2521 | 7 MAINMEM.GFX.s 176 | Code | 11 | | 2 | 00/507A : E0 08 | CPX #8 ; 8 pixel rows in character 2522 | 7 MAINMEM.GFX.s 177 | Code | 11 | | 2 | 00/507C : D0 E0 | BNE ozunid_69 2523 | 7 MAINMEM.GFX.s 178 | Macro | 11 | | 0 | 00/507E | >>> XF2AUX,HSCR1RET 2524 | 7 MAINMEM.GFX.s 178 | Code | 11 | | 3 | 00/507E : AE 8B C0 | LDX $C08B ; R/W LC RAM, bank 1 2525 | 7 MAINMEM.GFX.s 178 | Code | 11 | | 3 | 00/5081 : AE 8B C0 | LDX $C08B 2526 | 7 MAINMEM.GFX.s 178 | Code | 11 | | 2 | 00/5084 : A2 89 | LDX #HSCR1RET 2529 | 7 MAINMEM.GFX.s 178 | Code | 11 | | 3 | 00/508B : 8E EE 03 | STX {$3EE} 2530 | 7 MAINMEM.GFX.s 178 | Code | 11 | | 1 | 00/508E : 78 | SEI ; Disable IRQ before XFER 2531 | 7 MAINMEM.GFX.s 178 | Code | 11 | | 1 | 00/508F : 38 | SEC ; Use aux memory 2532 | 7 MAINMEM.GFX.s 178 | Code | 11 | | 3 | 00/5090 : 2C 58 FF | BIT $FF58 ; Set V: use alt ZP and LC 2533 | 7 MAINMEM.GFX.s 178 | Code | 11 | | 3 | 00/5093 : 4C 14 C3 | JMP {$C314} 2534 | 7 MAINMEM.GFX.s 179 | Empty | 11 | | 0 | 00/5096 | 2535 | 7 MAINMEM.GFX.s 180 | Comment | 11 | | 0 | 00/5096 | * Clear one text line on HGR screen 2536 | 7 MAINMEM.GFX.s 181 | Macro | 11 | | 0 | 00/5096 | HCLRLINE >>> ENTMAIN 2537 | 7 MAINMEM.GFX.s 181 | Code | 11 | | 1 | 00/5096 : 9A | TXS ; Main SP already in X 2538 | 7 MAINMEM.GFX.s 181 | Code | 11 | | 3 | 00/5097 : AE 81 C0 | LDX $C081 ; Bank in ROM 2539 | 7 MAINMEM.GFX.s 181 | Code | 11 | | 3 | 00/509A : AE 81 C0 | LDX $C081 2540 | 7 MAINMEM.GFX.s 181 | Code | 11 | | 1 | 00/509D : 58 | CLI ; Re-enable IRQ after XFER 2541 | 7 MAINMEM.GFX.s 182 | Code | 11 | | 3 | 00/509E : AD DE 50 | LDA HGRADDR+0 ; HGRADDR -> A4L,A4H 2542 | 7 MAINMEM.GFX.s 183 | Code | 11 | | 2 | 00/50A1 : 85 42 | STA {$42} 2543 | 7 MAINMEM.GFX.s 184 | Code | 11 | | 3 | 00/50A3 : AD DF 50 | LDA HGRADDR+1 2544 | 7 MAINMEM.GFX.s 185 | Code | 11 | | 2 | 00/50A6 : 85 43 | STA {$43} 2545 | 7 MAINMEM.GFX.s 186 | Code | 11 | | 2 | 00/50A8 : A9 00 | LDA #$00 2546 | 7 MAINMEM.GFX.s 187 | Code | 11 | | 2 | 00/50AA : A2 00 | LDX #$00 2547 | 7 MAINMEM.GFX.s 188 | Code | 11 | | 2 | 00/50AC : A0 00 | ozunid_71 LDY #$00 2548 | 7 MAINMEM.GFX.s 189 | Code | 11 | | 2 | 00/50AE : 91 42 | ozunid_72 STA ({$42}),Y 2549 | 7 MAINMEM.GFX.s 190 | Code | 11 | | 1 | 00/50B0 : C8 | INY 2550 | 7 MAINMEM.GFX.s 191 | Comment | 11 | | 0 | 00/50B1 | * CPY #$39 2551 | 7 MAINMEM.GFX.s 192 | Code | 11 | | 2 | 00/50B1 : C0 28 | CPY #40 2552 | 7 MAINMEM.GFX.s 193 | Code | 11 | | 2 | 00/50B3 : D0 F9 | BNE ozunid_72 2553 | 7 MAINMEM.GFX.s 194 | Code | 11 | | 2 | 00/50B5 : E6 43 | INC {$43} 2554 | 7 MAINMEM.GFX.s 195 | Code | 11 | | 2 | 00/50B7 : E6 43 | INC {$43} 2555 | 7 MAINMEM.GFX.s 196 | Code | 11 | | 2 | 00/50B9 : E6 43 | INC {$43} 2556 | 7 MAINMEM.GFX.s 197 | Code | 11 | | 2 | 00/50BB : E6 43 | INC {$43} 2557 | 7 MAINMEM.GFX.s 198 | Code | 11 | | 1 | 00/50BD : E8 | INX 2558 | 7 MAINMEM.GFX.s 199 | Code | 11 | | 2 | 00/50BE : E0 08 | CPX #$08 2559 | 7 MAINMEM.GFX.s 200 | Code | 11 | | 2 | 00/50C0 : D0 EA | BNE ozunid_71 2560 | 7 MAINMEM.GFX.s 201 | Macro | 11 | | 0 | 00/50C2 | >>> XF2AUX,CLRLNRET 2561 | 7 MAINMEM.GFX.s 201 | Code | 11 | | 3 | 00/50C2 : AE 8B C0 | LDX $C08B ; R/W LC RAM, bank 1 2562 | 7 MAINMEM.GFX.s 201 | Code | 11 | | 3 | 00/50C5 : AE 8B C0 | LDX $C08B 2563 | 7 MAINMEM.GFX.s 201 | Code | 11 | | 2 | 00/50C8 : A2 E7 | LDX #CLRLNRET 2566 | 7 MAINMEM.GFX.s 201 | Code | 11 | | 3 | 00/50CF : 8E EE 03 | STX {$3EE} 2567 | 7 MAINMEM.GFX.s 201 | Code | 11 | | 1 | 00/50D2 : 78 | SEI ; Disable IRQ before XFER 2568 | 7 MAINMEM.GFX.s 201 | Code | 11 | | 1 | 00/50D3 : 38 | SEC ; Use aux memory 2569 | 7 MAINMEM.GFX.s 201 | Code | 11 | | 3 | 00/50D4 : 2C 58 FF | BIT $FF58 ; Set V: use alt ZP and LC 2570 | 7 MAINMEM.GFX.s 201 | Code | 11 | | 3 | 00/50D7 : 4C 14 C3 | JMP {$C314} 2571 | 7 MAINMEM.GFX.s 202 | Empty | 11 | | 0 | 00/50DA | 2572 | 7 MAINMEM.GFX.s 203 | Data | 11 | | 1 | 00/50DA : 00 | FGCOLOR DB $00 ; Foreground colour 2573 | 7 MAINMEM.GFX.s 204 | Data | 11 | | 1 | 00/50DB : 00 | BGCOLOR DB $00 ; Background colour 2574 | 7 MAINMEM.GFX.s 205 | Data | 11 | | 1 | 00/50DC : 00 | LINETYPE DB $00 ; 0 normal, 1 XOR 2575 | 7 MAINMEM.GFX.s 206 | Data | 11 | | 1 | 00/50DD : 00 | PLOTMODE DB $00 ; K value for PLOT K,X,Y 2576 | 7 MAINMEM.GFX.s 207 | Data | 11 | | 2 | 00/50DE : 00 00 | HGRADDR DW $0000 ; Address 1st line of HGR char 2577 | 7 MAINMEM.GFX.s 208 | Empty | 11 | | 0 | 00/50E0 | 2578 | 7 MAINMEM.GFX.s 209 | Comment | 11 | | 0 | 00/50E0 | * Addresses of start of pixel rows in PAGE1 2579 | 7 MAINMEM.GFX.s 210 | Data | 11 | | 16 | 00/50E0 : 00 20 80 20 | MHGRTAB DW $2000,$2080,$2100,$2180,$2200,$2280,$2300,$2380 | | | | | | 00 21 80 21 | | | | | | | 00 22 80 22 | | | | | | | 00 23 80 23 | 2580 | 7 MAINMEM.GFX.s 211 | Data | 11 | | 16 | 00/50F0 : 28 20 A8 20 | DW $2028,$20A8,$2128,$21A8,$2228,$22A8,$2328,$23A8 | | | | | | 28 21 A8 21 | | | | | | | 28 22 A8 22 | | | | | | | 28 23 A8 23 | 2581 | 7 MAINMEM.GFX.s 212 | Data | 11 | | 16 | 00/5100 : 50 20 D0 20 | DW $2050,$20D0,$2150,$21D0,$2250,$22D0,$2350,$23D0 | | | | | | 50 21 D0 21 | | | | | | | 50 22 D0 22 | | | | | | | 50 23 D0 23 | 2582 | 7 MAINMEM.GFX.s 213 | Empty | 11 | | 0 | 00/5110 | 2583 | 7 MAINMEM.GFX.s 214 | Empty | 11 | | 0 | 00/5110 | 2584 | 7 MAINMEM.GFX.s 215 | Empty | 11 | | 0 | 00/5110 | 2585 | 7 MAINMEM.GFX.s 216 | Empty | 11 | | 0 | 00/5110 | 2586 | 7 MAINMEM.GFX.s 217 | Empty | 11 | | 0 | 00/5110 | 2587 | 7 MAINMEM.GFX.s 218 | Empty | 11 | | 0 | 00/5110 | 2588 | 7 MAINMEM.GFX.s 219 | Empty | 11 | | 0 | 00/5110 | 2589 | 7 MAINMEM.GFX.s 220 | Empty | 11 | | 0 | 00/5110 | 2590 | 7 MAINMEM.GFX.s 221 | Empty | 11 | | 0 | 00/5110 | 2591 | 7 MAINMEM.GFX.s 222 | Empty | 11 | | 0 | 00/5110 | 2592 | 7 MAINMEM.GFX.s 223 | Empty | 11 | | 0 | 00/5110 | 2593 | 7 MAINMEM.GFX.s 224 | Empty | 11 | | 0 | 00/5110 | 2594 | 7 MAINMEM.GFX.s 225 | Empty | 11 | | 0 | 00/5110 | 2595 | 7 MAINMEM.GFX.s 226 | Empty | 11 | | 0 | 00/5110 | 2596 | 7 MAINMEM.GFX.s 227 | Empty | 11 | | 0 | 00/5110 | 2597 | 7 MAINMEM.GFX.s 228 | Empty | 11 | | 0 | 00/5110 | 2598 | 7 MAINMEM.GFX.s 229 | Empty | 11 | | 0 | 00/5110 | 2599 | 7 MAINMEM.GFX.s 230 | Empty | 11 | | 0 | 00/5110 | 2600 | 7 MAINMEM.GFX.s 231 | Empty | 11 | | 0 | 00/5110 | 2601 | 7 MAINMEM.GFX.s 232 | Empty | 11 | | 0 | 00/5110 | 2602 | 7 MAINMEM.GFX.s 233 | Empty | 11 | | 0 | 00/5110 | 2603 | 7 MAINMEM.GFX.s 234 | Empty | 11 | | 0 | 00/5110 | 2604 | 1 applecorn.s 195 | Directive | 11 | | 0 | 00/5110 | PUT MAINMEM.PATH 2605 | 8 MAINMEM.PATH.s 1 | Comment | 11 | | 0 | 00/5110 | * MAINMEM.PATH.S 2606 | 8 MAINMEM.PATH.s 2 | Comment | 11 | | 0 | 00/5110 | * (c) Bobbi 2021 GPLv3 2607 | 8 MAINMEM.PATH.s 3 | Comment | 11 | | 0 | 00/5110 | * 2608 | 8 MAINMEM.PATH.s 4 | Comment | 11 | | 0 | 00/5110 | * Code for handling Applecorn paths and converting them to 2609 | 8 MAINMEM.PATH.s 5 | Comment | 11 | | 0 | 00/5110 | * ProDOS paths. Runs in main memory. 2610 | 8 MAINMEM.PATH.s 6 | Comment | 11 | | 0 | 00/5110 | * TO DO: check range in :sd 2611 | 8 MAINMEM.PATH.s 7 | Comment | 11 | | 0 | 00/5110 | * TO DO: need separate reference to current root and drive by name 2612 | 8 MAINMEM.PATH.s 8 | Comment | 11 | | 0 | 00/5110 | * TO DO: check for pathname too long 2613 | 8 MAINMEM.PATH.s 9 | Comment | 11 | | 0 | 00/5110 | * ie /filename should be filename in root 2614 | 8 MAINMEM.PATH.s 10 | Empty | 11 | | 0 | 00/5110 | 2615 | 8 MAINMEM.PATH.s 11 | Empty | 11 | | 0 | 00/5110 | 2616 | 8 MAINMEM.PATH.s 12 | Comment | 11 | | 0 | 00/5110 | * Preprocess path in MOSFILE, handles: 2617 | 8 MAINMEM.PATH.s 13 | Comment | 11 | | 0 | 00/5110 | * 1) ':sd' type slot and drive prefix (s,d are digits) 2618 | 8 MAINMEM.PATH.s 14 | Comment | 11 | | 0 | 00/5110 | * 2) '.' or '@' for current working directory 2619 | 8 MAINMEM.PATH.s 15 | Comment | 11 | | 0 | 00/5110 | * 3) '..' or '^' for parent directory 2620 | 8 MAINMEM.PATH.s 16 | Comment | 11 | | 0 | 00/5110 | * Carry set on error, clear otherwise 2621 | 8 MAINMEM.PATH.s 17 | Code | 11 | | 3 | 00/5110 : AE 00 03 | PREPATH LDX {{$0300}} ; Length 2622 | 8 MAINMEM.PATH.s 18 | Code | 11 | | 2 | 00/5113 : D0 03 | BNE ozunid_73 2623 | 8 MAINMEM.PATH.s 19 | Code | 11 | | 3 | 00/5115 : 4C A4 51 | JMP ozunid_75 ; If zero length 2624 | 8 MAINMEM.PATH.s 20 | Code | 11 | | 3 | 00/5118 : AD 01 03 | ozunid_73 LDA {{$0300}}+1 ; 1st char of pathname 2625 | 8 MAINMEM.PATH.s 21 | Code | 11 | | 2 | 00/511B : C9 3A | CMP #':' 2626 | 8 MAINMEM.PATH.s 22 | Code | 11 | | 2 | 00/511D : D0 35 | BNE _NOTCOLN ; Not colon 2627 | 8 MAINMEM.PATH.s 23 | Code | 11 | | 2 | 00/511F : E0 03 | CPX #$03 ; Length >= 3? 2628 | 8 MAINMEM.PATH.s 24 | Code | 11 | | 2 | 00/5121 : B0 03 | BCS ozunid_74 2629 | 8 MAINMEM.PATH.s 25 | Code | 11 | | 3 | 00/5123 : 4C A9 51 | JMP ozunid_76 ; If not 2630 | 8 MAINMEM.PATH.s 26 | Code | 11 | | 3 | 00/5126 : AD 03 03 | ozunid_74 LDA {{$0300}}+3 ; Drive 2631 | 8 MAINMEM.PATH.s 27 | Code | 11 | | 1 | 00/5129 : 38 | SEC 2632 | 8 MAINMEM.PATH.s 28 | Code | 11 | | 2 | 00/512A : E9 31 | SBC #'1' 2633 | 8 MAINMEM.PATH.s 29 | Code | 11 | | 1 | 00/512C : AA | TAX 2634 | 8 MAINMEM.PATH.s 30 | Code | 11 | | 3 | 00/512D : AD 02 03 | LDA {{$0300}}+2 ; Slot 2635 | 8 MAINMEM.PATH.s 31 | Code | 11 | | 1 | 00/5130 : 38 | SEC 2636 | 8 MAINMEM.PATH.s 32 | Code | 11 | | 2 | 00/5131 : E9 30 | SBC #'0' 2637 | 8 MAINMEM.PATH.s 33 | Code | 11 | | 3 | 00/5133 : 20 C5 51 | JSR DRV2PFX ; Slot/drv->pfx in PREFIX 2638 | 8 MAINMEM.PATH.s 34 | Code | 11 | | 3 | 00/5136 : 20 F7 51 | JSR DEL1CHAR ; Delete ':' from MOSFILE 2639 | 8 MAINMEM.PATH.s 35 | Code | 11 | | 3 | 00/5139 : 20 F7 51 | JSR DEL1CHAR ; Delete slot from MOSFILE 2640 | 8 MAINMEM.PATH.s 36 | Code | 11 | | 3 | 00/513C : 20 F7 51 | JSR DEL1CHAR ; Delete drive from MOSFILE 2641 | 8 MAINMEM.PATH.s 37 | Code | 11 | | 3 | 00/513F : AD 00 03 | LDA {{$0300}} ; Is there more? 2642 | 8 MAINMEM.PATH.s 38 | Code | 11 | | 2 | 00/5142 : F0 5A | BEQ _APPEND ; Only ':sd' 2643 | 8 MAINMEM.PATH.s 39 | Code | 11 | | 2 | 00/5144 : C9 02 | CMP #$02 ; Length >= 2 2644 | 8 MAINMEM.PATH.s 40 | Code | 11 | | 2 | 00/5146 : 90 61 | BCC ozunid_76 ; If not 2645 | 8 MAINMEM.PATH.s 41 | Code | 11 | | 3 | 00/5148 : AD 01 03 | LDA {{$0300}}+1 ; 1st char of filename 2646 | 8 MAINMEM.PATH.s 42 | Code | 11 | | 2 | 00/514B : C9 2F | CMP #'/' 2647 | 8 MAINMEM.PATH.s 43 | Code | 11 | | 2 | 00/514D : D0 5A | BNE ozunid_76 2648 | 8 MAINMEM.PATH.s 44 | Code | 11 | | 3 | 00/514F : 20 F7 51 | JSR DEL1CHAR ; Delete '/' from MOSFILE 2649 | 8 MAINMEM.PATH.s 45 | Code | 11 | | 2 | 00/5152 : 80 4A | BRA _APPEND 2650 | 8 MAINMEM.PATH.s 46 | Code | 11 | | 3 | 00/5154 : 20 FD 57 | _NOTCOLN JSR GETPREF ; Current pfx -> PREFIX 2651 | 8 MAINMEM.PATH.s 47 | Code | 11 | | 3 | 00/5157 : AD 01 03 | _REENTER LDA {{$0300}}+1 ; First char of dirname 2652 | 8 MAINMEM.PATH.s 48 | Code | 11 | | 2 | 00/515A : C9 40 | CMP #'@' ; '@' means current working dir 2653 | 8 MAINMEM.PATH.s 49 | Code | 11 | | 2 | 00/515C : F0 28 | BEQ _CWD 2654 | 8 MAINMEM.PATH.s 50 | Code | 11 | | 2 | 00/515E : C9 5E | CMP #'^' ; '^' means parent dir 2655 | 8 MAINMEM.PATH.s 51 | Code | 11 | | 2 | 00/5160 : F0 21 | BEQ _CARET 2656 | 8 MAINMEM.PATH.s 52 | Code | 11 | | 2 | 00/5162 : C9 2F | CMP #'/' ; Absolute path 2657 | 8 MAINMEM.PATH.s 53 | Code | 11 | | 2 | 00/5164 : F0 3E | BEQ ozunid_75 ; Nothing to do 2658 | 8 MAINMEM.PATH.s 54 | Code | 11 | | 2 | 00/5166 : C9 2E | CMP #'.' ; ... 2659 | 8 MAINMEM.PATH.s 55 | Code | 11 | | 2 | 00/5168 : F0 02 | BEQ _UPDIR1 2660 | 8 MAINMEM.PATH.s 56 | Code | 11 | | 2 | 00/516A : 80 32 | BRA _APPEND 2661 | 8 MAINMEM.PATH.s 57 | Code | 11 | | 3 | 00/516C : AD 00 03 | _UPDIR1 LDA {{$0300}} ; Length 2662 | 8 MAINMEM.PATH.s 58 | Code | 11 | | 2 | 00/516F : C9 01 | CMP #$01 2663 | 8 MAINMEM.PATH.s 59 | Code | 11 | | 2 | 00/5171 : F0 13 | BEQ _CWD ; '.' on its own 2664 | 8 MAINMEM.PATH.s 60 | Code | 11 | | 3 | 00/5173 : AD 02 03 | LDA {{$0300}}+2 2665 | 8 MAINMEM.PATH.s 61 | Code | 11 | | 2 | 00/5176 : C9 2E | CMP #'.' ; '..' 2666 | 8 MAINMEM.PATH.s 62 | Code | 11 | | 2 | 00/5178 : F0 06 | BEQ _DOTDOT 2667 | 8 MAINMEM.PATH.s 63 | Code | 11 | | 2 | 00/517A : C9 2F | CMP #'/' ; './' 2668 | 8 MAINMEM.PATH.s 64 | Code | 11 | | 2 | 00/517C : F0 08 | BEQ _CWD 2669 | 8 MAINMEM.PATH.s 65 | Code | 11 | | 2 | 00/517E : 80 29 | BRA ozunid_76 2670 | 8 MAINMEM.PATH.s 66 | Code | 11 | | 3 | 00/5180 : 20 F7 51 | _DOTDOT JSR DEL1CHAR ; Delete first char of MOSFILE 2671 | 8 MAINMEM.PATH.s 67 | Code | 11 | | 3 | 00/5183 : 20 AD 51 | _CARET JSR PARENT ; Parent dir -> PREFIX 2672 | 8 MAINMEM.PATH.s 68 | Code | 11 | | 3 | 00/5186 : 20 F7 51 | _CWD JSR DEL1CHAR ; Delete first char of MOSFILE 2673 | 8 MAINMEM.PATH.s 69 | Code | 11 | | 3 | 00/5189 : AD 00 03 | LDA {{$0300}} ; Is there more? 2674 | 8 MAINMEM.PATH.s 70 | Code | 11 | | 2 | 00/518C : F0 10 | BEQ _APPEND ; No more 2675 | 8 MAINMEM.PATH.s 71 | Code | 11 | | 2 | 00/518E : C9 02 | CMP #$02 ; Len at least two? 2676 | 8 MAINMEM.PATH.s 72 | Code | 11 | | 2 | 00/5190 : 90 17 | BCC ozunid_76 ; Too short! 2677 | 8 MAINMEM.PATH.s 73 | Code | 11 | | 3 | 00/5192 : AD 01 03 | LDA {{$0300}}+1 ; What is next char? 2678 | 8 MAINMEM.PATH.s 74 | Code | 11 | | 2 | 00/5195 : C9 2F | CMP #'/' ; Is it slash? 2679 | 8 MAINMEM.PATH.s 75 | Code | 11 | | 2 | 00/5197 : D0 10 | BNE ozunid_76 ; Nope! 2680 | 8 MAINMEM.PATH.s 76 | Code | 11 | | 3 | 00/5199 : 20 F7 51 | JSR DEL1CHAR ; Delete '/' from MOSFILE 2681 | 8 MAINMEM.PATH.s 77 | Code | 11 | | 2 | 00/519C : 80 B9 | BRA _REENTER ; Go again! 2682 | 8 MAINMEM.PATH.s 78 | Code | 11 | | 3 | 00/519E : 20 12 52 | _APPEND JSR APFXMF ; Append MOSFILE->PREFIX 2683 | 8 MAINMEM.PATH.s 79 | Code | 11 | | 3 | 00/51A1 : 20 F4 52 | JSR PFXtoMF ; Copy back to MOSFILE 2684 | 8 MAINMEM.PATH.s 80 | Code | 11 | | 3 | 00/51A4 : 20 2A 52 | ozunid_75 JSR DIGCONV ; Handle initial digits 2685 | 8 MAINMEM.PATH.s 81 | Code | 11 | | 1 | 00/51A7 : 18 | CLC 2686 | 8 MAINMEM.PATH.s 82 | Code | 11 | | 1 | 00/51A8 : 60 | RTS 2687 | 8 MAINMEM.PATH.s 83 | Code | 11 | | 2 | 00/51A9 : A9 40 | ozunid_76 LDA #$40 ; $40=Bad filename 2688 | 8 MAINMEM.PATH.s 84 | Code | 11 | | 1 | 00/51AB : 38 | SEC 2689 | 8 MAINMEM.PATH.s 85 | Code | 11 | | 1 | 00/51AC : 60 | RTS 2690 | 8 MAINMEM.PATH.s 86 | Empty | 11 | | 0 | 00/51AD | 2691 | 8 MAINMEM.PATH.s 87 | Comment | 11 | | 0 | 00/51AD | * Convert path in PREFIX by removing leaf dir to leave 2692 | 8 MAINMEM.PATH.s 88 | Comment | 11 | | 0 | 00/51AD | * parent directory. If already at top, return unchanged. 2693 | 8 MAINMEM.PATH.s 89 | Code | 11 | | 3 | 00/51AD : AE 49 53 | PARENT LDX PREFIX ; Length of string 2694 | 8 MAINMEM.PATH.s 90 | Code | 11 | | 2 | 00/51B0 : F0 12 | BEQ ozunid_79 ; Prefix len zero 2695 | 8 MAINMEM.PATH.s 91 | Code | 11 | | 1 | 00/51B2 : CA | DEX ; Ignore trailing '/' 2696 | 8 MAINMEM.PATH.s 92 | Code | 11 | | 3 | 00/51B3 : BD 49 53 | ozunid_77 LDA PREFIX,X 2697 | 8 MAINMEM.PATH.s 93 | Code | 11 | | 2 | 00/51B6 : C9 2F | CMP #'/' 2698 | 8 MAINMEM.PATH.s 94 | Code | 11 | | 2 | 00/51B8 : F0 07 | BEQ ozunid_78 2699 | 8 MAINMEM.PATH.s 95 | Code | 11 | | 1 | 00/51BA : CA | DEX 2700 | 8 MAINMEM.PATH.s 96 | Code | 11 | | 2 | 00/51BB : E0 01 | CPX #$01 2701 | 8 MAINMEM.PATH.s 97 | Code | 11 | | 2 | 00/51BD : D0 F4 | BNE ozunid_77 2702 | 8 MAINMEM.PATH.s 98 | Code | 11 | | 2 | 00/51BF : 80 03 | BRA ozunid_79 ; No slash found 2703 | 8 MAINMEM.PATH.s 99 | Code | 11 | | 3 | 00/51C1 : 8E 49 53 | ozunid_78 STX PREFIX ; Truncate string 2704 | 8 MAINMEM.PATH.s 100 | Code | 11 | | 1 | 00/51C4 : 60 | ozunid_79 RTS 2705 | 8 MAINMEM.PATH.s 101 | Empty | 11 | | 0 | 00/51C5 | 2706 | 8 MAINMEM.PATH.s 102 | Comment | 11 | | 0 | 00/51C5 | * Convert slot/drive to prefix 2707 | 8 MAINMEM.PATH.s 103 | Comment | 11 | | 0 | 00/51C5 | * Expect slot number (1..7) in A, drive (0..1) in X 2708 | 8 MAINMEM.PATH.s 104 | Comment | 11 | | 0 | 00/51C5 | * Puts prefix (or empty string) in PREFIX 2709 | 8 MAINMEM.PATH.s 105 | Code | 11 | | 1 | 00/51C5 : 18 | DRV2PFX CLC ; Cy=0 A=00000sss 2710 | 8 MAINMEM.PATH.s 106 | Code | 11 | | 1 | 00/51C6 : 6A | ROR A ; s 000000ss 2711 | 8 MAINMEM.PATH.s 107 | Code | 11 | | 1 | 00/51C7 : 6A | ROR A ; s s000000s 2712 | 8 MAINMEM.PATH.s 108 | Code | 11 | | 1 | 00/51C8 : 6A | ROR A ; s ss000000 2713 | 8 MAINMEM.PATH.s 109 | Code | 11 | | 1 | 00/51C9 : 6A | ROR A ; 0 sss00000 2714 | 8 MAINMEM.PATH.s 110 | Code | 11 | | 2 | 00/51CA : E0 01 | CPX #1 ; d sss00000 2715 | 8 MAINMEM.PATH.s 111 | Code | 11 | | 1 | 00/51CC : 6A | ROR A ; 0 dsss0000 2716 | 8 MAINMEM.PATH.s 112 | Empty | 11 | | 0 | 00/51CD | 2717 | 8 MAINMEM.PATH.s 113 | Code | 11 | | 3 | 00/51CD : 8D A9 56 | STA ONLNPL+1 ; Device number 2718 | 8 MAINMEM.PATH.s 114 | Code | 11 | | 3 | 00/51D0 : 20 00 BF | JSR {$BF00} ; Call ON_LINE 2719 | 8 MAINMEM.PATH.s 115 | Data | 11 | | 1 | 00/51D3 : C5 | DB {$C5} 2720 | 8 MAINMEM.PATH.s 116 | Data | 11 | | 2 | 00/51D4 : A8 56 | DW ONLNPL ; Buffer set to DRVBUF2 (was $301) 2721 | 8 MAINMEM.PATH.s 117 | Code | 11 | | 3 | 00/51D6 : AD 3F 02 | LDA {$023F} ; Slot/Drive/Length 2722 | 8 MAINMEM.PATH.s 118 | Code | 11 | | 2 | 00/51D9 : 29 0F | AND #$0F ; Mask to get length 2723 | 8 MAINMEM.PATH.s 119 | Code | 11 | | 1 | 00/51DB : AA | TAX 2724 | 8 MAINMEM.PATH.s 120 | Code | 11 | | 1 | 00/51DC : 1A | INC ; Plus '/' at each end 2725 | 8 MAINMEM.PATH.s 121 | Code | 11 | | 1 | 00/51DD : 1A | INC 2726 | 8 MAINMEM.PATH.s 122 | Code | 11 | | 3 | 00/51DE : 8D 49 53 | STA PREFIX ; Store length 2727 | 8 MAINMEM.PATH.s 123 | Code | 11 | | 2 | 00/51E1 : A9 2F | LDA #'/' 2728 | 8 MAINMEM.PATH.s 124 | Code | 11 | | 3 | 00/51E3 : 8D 4A 53 | STA PREFIX+1 2729 | 8 MAINMEM.PATH.s 125 | Code | 11 | | 3 | 00/51E6 : 9D 4B 53 | STA PREFIX+2,X 2730 | 8 MAINMEM.PATH.s 126 | Code | 11 | | 2 | 00/51E9 : E0 00 | ozunid_80 CPX #$00 ; Copy -> PREFIX 2731 | 8 MAINMEM.PATH.s 127 | Code | 11 | | 2 | 00/51EB : F0 09 | BEQ ozunid_81 2732 | 8 MAINMEM.PATH.s 128 | Code | 11 | | 3 | 00/51ED : BD 3F 02 | LDA {$023F},X 2733 | 8 MAINMEM.PATH.s 129 | Code | 11 | | 3 | 00/51F0 : 9D 4A 53 | STA PREFIX+1,X 2734 | 8 MAINMEM.PATH.s 130 | Code | 11 | | 1 | 00/51F3 : CA | DEX 2735 | 8 MAINMEM.PATH.s 131 | Code | 11 | | 2 | 00/51F4 : 80 F3 | BRA ozunid_80 2736 | 8 MAINMEM.PATH.s 132 | Code | 11 | | 1 | 00/51F6 : 60 | ozunid_81 RTS 2737 | 8 MAINMEM.PATH.s 133 | Empty | 11 | | 0 | 00/51F7 | 2738 | 8 MAINMEM.PATH.s 134 | Comment | 11 | | 0 | 00/51F7 | * Delete first char of MOSFILE 2739 | 8 MAINMEM.PATH.s 135 | Code | 11 | | 3 | 00/51F7 : AE 00 03 | DEL1CHAR LDX {{$0300}} ; Length 2740 | 8 MAINMEM.PATH.s 136 | Code | 11 | | 2 | 00/51FA : F0 15 | BEQ ozunid_85 ; Nothing to delete 2741 | 8 MAINMEM.PATH.s 137 | Code | 11 | | 2 | 00/51FC : A0 02 | LDY #$02 ; Second char 2742 | 8 MAINMEM.PATH.s 138 | Code | 11 | | 3 | 00/51FE : CC 00 03 | ozunid_82 CPY {{$0300}} 2743 | 8 MAINMEM.PATH.s 139 | Code | 11 | | 2 | 00/5201 : F0 02 | BEQ ozunid_83 ; If Y=MOSFILE okay 2744 | 8 MAINMEM.PATH.s 140 | Code | 11 | | 2 | 00/5203 : B0 09 | BCS ozunid_84 ; If Y>MOSFILE done 2745 | 8 MAINMEM.PATH.s 141 | Code | 11 | | 3 | 00/5205 : B9 00 03 | ozunid_83 LDA {{$0300}},Y 2746 | 8 MAINMEM.PATH.s 142 | Code | 11 | | 3 | 00/5208 : 99 FF 02 | STA {{$0300}}-1,Y 2747 | 8 MAINMEM.PATH.s 143 | Code | 11 | | 1 | 00/520B : C8 | INY 2748 | 8 MAINMEM.PATH.s 144 | Code | 11 | | 2 | 00/520C : 80 F0 | BRA ozunid_82 2749 | 8 MAINMEM.PATH.s 145 | Code | 11 | | 3 | 00/520E : CE 00 03 | ozunid_84 DEC {{$0300}} 2750 | 8 MAINMEM.PATH.s 146 | Code | 11 | | 1 | 00/5211 : 60 | ozunid_85 RTS 2751 | 8 MAINMEM.PATH.s 147 | Empty | 11 | | 0 | 00/5212 | 2752 | 8 MAINMEM.PATH.s 148 | Comment | 11 | | 0 | 00/5212 | * Append MOSFILE to PREFIX 2753 | 8 MAINMEM.PATH.s 149 | Code | 11 | | 3 | 00/5212 : AC 49 53 | APFXMF LDY PREFIX ; Length of PREFIX 2754 | 8 MAINMEM.PATH.s 150 | Code | 11 | | 2 | 00/5215 : A2 00 | LDX #$00 ; Index into MOSFILE 2755 | 8 MAINMEM.PATH.s 151 | Code | 11 | | 3 | 00/5217 : EC 00 03 | ozunid_86 CPX {{$0300}} ; Length of MOSFILE 2756 | 8 MAINMEM.PATH.s 152 | Code | 11 | | 2 | 00/521A : F0 0A | BEQ ozunid_87 2757 | 8 MAINMEM.PATH.s 153 | Code | 11 | | 3 | 00/521C : BD 01 03 | LDA {{$0300}}+1,X 2758 | 8 MAINMEM.PATH.s 154 | Code | 11 | | 3 | 00/521F : 99 4A 53 | STA PREFIX+1,Y 2759 | 8 MAINMEM.PATH.s 155 | Code | 11 | | 1 | 00/5222 : E8 | INX 2760 | 8 MAINMEM.PATH.s 156 | Code | 11 | | 1 | 00/5223 : C8 | INY 2761 | 8 MAINMEM.PATH.s 157 | Code | 11 | | 2 | 00/5224 : 80 F1 | BRA ozunid_86 2762 | 8 MAINMEM.PATH.s 158 | Code | 11 | | 3 | 00/5226 : 8C 49 53 | ozunid_87 STY PREFIX ; Update length PREFIX 2763 | 8 MAINMEM.PATH.s 159 | Code | 11 | | 1 | 00/5229 : 60 | RTS 2764 | 8 MAINMEM.PATH.s 160 | Empty | 11 | | 0 | 00/522A | 2765 | 8 MAINMEM.PATH.s 161 | Comment | 11 | | 0 | 00/522A | * Scan pathname in MOSFILE converting files/dirs 2766 | 8 MAINMEM.PATH.s 162 | Comment | 11 | | 0 | 00/522A | * starting with digit by adding 'N' before. 2767 | 8 MAINMEM.PATH.s 163 | Code | 11 | | 2 | 00/522A : A0 01 | DIGCONV LDY #$01 ; First char 2768 | 8 MAINMEM.PATH.s 164 | Code | 11 | | 3 | 00/522C : CC 00 03 | ozunid_88 CPY {{$0300}} ; String length 2769 | 8 MAINMEM.PATH.s 165 | Code | 11 | | 2 | 00/522F : F0 02 | BEQ _KEEPON ; Last char 2770 | 8 MAINMEM.PATH.s 166 | Code | 11 | | 2 | 00/5231 : B0 1E | BCS ozunid_89 ; Y>MOSFILE 2771 | 8 MAINMEM.PATH.s 167 | Code | 11 | | 3 | 00/5233 : B9 00 03 | _KEEPON LDA {{$0300}},Y ; Load char 2772 | 8 MAINMEM.PATH.s 168 | Code | 11 | | 3 | 00/5236 : 20 52 52 | JSR ISDIGIT ; Is it a digit? 2773 | 8 MAINMEM.PATH.s 169 | Code | 11 | | 2 | 00/5239 : 90 13 | BCC _NOINS ; No .. skip 2774 | 8 MAINMEM.PATH.s 170 | Code | 11 | | 2 | 00/523B : C0 01 | CPY #$01 ; First char? 2775 | 8 MAINMEM.PATH.s 171 | Code | 11 | | 2 | 00/523D : F0 09 | BEQ _INS ; First char is digit 2776 | 8 MAINMEM.PATH.s 172 | Code | 11 | | 3 | 00/523F : B9 FF 02 | LDA {{$0300}}-1,Y ; Prev char 2777 | 8 MAINMEM.PATH.s 173 | Code | 11 | | 2 | 00/5242 : C9 2F | CMP #'/' ; Slash 2778 | 8 MAINMEM.PATH.s 174 | Code | 11 | | 2 | 00/5244 : F0 02 | BEQ _INS ; Slash followed by digit 2779 | 8 MAINMEM.PATH.s 175 | Code | 11 | | 2 | 00/5246 : 80 06 | BRA _NOINS ; Otherwise leave it alone 2780 | 8 MAINMEM.PATH.s 176 | Code | 11 | | 2 | 00/5248 : A9 4E | _INS LDA #'N' ; Char to insert 2781 | 8 MAINMEM.PATH.s 177 | Code | 11 | | 3 | 00/524A : 20 5E 52 | JSR INSMF ; Insert it 2782 | 8 MAINMEM.PATH.s 178 | Code | 11 | | 1 | 00/524D : C8 | INY 2783 | 8 MAINMEM.PATH.s 179 | Code | 11 | | 1 | 00/524E : C8 | _NOINS INY ; Next char 2784 | 8 MAINMEM.PATH.s 180 | Code | 11 | | 2 | 00/524F : 80 DB | BRA ozunid_88 2785 | 8 MAINMEM.PATH.s 181 | Code | 11 | | 1 | 00/5251 : 60 | ozunid_89 RTS 2786 | 8 MAINMEM.PATH.s 182 | Empty | 11 | | 0 | 00/5252 | 2787 | 8 MAINMEM.PATH.s 183 | Comment | 11 | | 0 | 00/5252 | * Is char in A a digit? Set carry if so 2788 | 8 MAINMEM.PATH.s 184 | Code | 11 | | 2 | 00/5252 : C9 3A | ISDIGIT CMP #'9'+1 2789 | 8 MAINMEM.PATH.s 185 | Code | 11 | | 2 | 00/5254 : B0 06 | BCS _NOTDIG 2790 | 8 MAINMEM.PATH.s 186 | Code | 11 | | 2 | 00/5256 : C9 30 | CMP #'0' 2791 | 8 MAINMEM.PATH.s 187 | Code | 11 | | 2 | 00/5258 : 90 02 | BCC _NOTDIG 2792 | 8 MAINMEM.PATH.s 188 | Code | 11 | | 1 | 00/525A : 38 | SEC 2793 | 8 MAINMEM.PATH.s 189 | Code | 11 | | 1 | 00/525B : 60 | RTS 2794 | 8 MAINMEM.PATH.s 190 | Code | 11 | | 1 | 00/525C : 18 | _NOTDIG CLC 2795 | 8 MAINMEM.PATH.s 191 | Code | 11 | | 1 | 00/525D : 60 | RTS 2796 | 8 MAINMEM.PATH.s 192 | Empty | 11 | | 0 | 00/525E | 2797 | 8 MAINMEM.PATH.s 193 | Comment | 11 | | 0 | 00/525E | * Insert char in A into MOSFILE at posn Y 2798 | 8 MAINMEM.PATH.s 194 | Comment | 11 | | 0 | 00/525E | * Preserves regs 2799 | 8 MAINMEM.PATH.s 195 | Code | 11 | | 1 | 00/525E : 48 | INSMF PHA ; Preserve char 2800 | 8 MAINMEM.PATH.s 196 | Code | 11 | | 3 | 00/525F : 8C 7C 52 | STY _INSIDX ; Stash index for later 2801 | 8 MAINMEM.PATH.s 197 | Code | 11 | | 3 | 00/5262 : AC 00 03 | LDY {{$0300}} ; String length 2802 | 8 MAINMEM.PATH.s 198 | Code | 11 | | 1 | 00/5265 : C8 | INY ; Start with Y=len+1 2803 | 8 MAINMEM.PATH.s 199 | Code | 11 | | 3 | 00/5266 : CC 7C 52 | ozunid_90 CPY _INSIDX ; Back to ins point? 2804 | 8 MAINMEM.PATH.s 200 | Code | 11 | | 2 | 00/5269 : F0 09 | BEQ ozunid_91 ; Yes, done moving 2805 | 8 MAINMEM.PATH.s 201 | Code | 11 | | 3 | 00/526B : B9 FF 02 | LDA {{$0300}}-1,Y ; Move one char 2806 | 8 MAINMEM.PATH.s 202 | Code | 11 | | 3 | 00/526E : 99 00 03 | STA {{$0300}},Y 2807 | 8 MAINMEM.PATH.s 203 | Code | 11 | | 1 | 00/5271 : 88 | DEY 2808 | 8 MAINMEM.PATH.s 204 | Code | 11 | | 2 | 00/5272 : 80 F2 | BRA ozunid_90 2809 | 8 MAINMEM.PATH.s 205 | Code | 11 | | 1 | 00/5274 : 68 | ozunid_91 PLA ; Char to insert 2810 | 8 MAINMEM.PATH.s 206 | Code | 11 | | 3 | 00/5275 : 99 00 03 | STA {{$0300}},Y ; Insert it 2811 | 8 MAINMEM.PATH.s 207 | Code | 11 | | 3 | 00/5278 : EE 00 03 | INC {{$0300}} ; One char longer 2812 | 8 MAINMEM.PATH.s 208 | Code | 11 | | 1 | 00/527B : 60 | RTS 2813 | 8 MAINMEM.PATH.s 209 | Data | 11 | | 1 | 00/527C : 00 | _INSIDX DB $00 2814 | 8 MAINMEM.PATH.s 210 | Empty | 11 | | 0 | 00/527D | 2815 | 8 MAINMEM.PATH.s 211 | Comment | 11 | | 0 | 00/527D | * Copy Pascal-style string 2816 | 8 MAINMEM.PATH.s 212 | Comment | 11 | | 0 | 00/527D | * Source in A1L/A1H, dest in A4L/A4H 2817 | 8 MAINMEM.PATH.s 213 | Code | 11 | | 2 | 00/527D : A0 00 | STRCPY LDY #$00 2818 | 8 MAINMEM.PATH.s 214 | Code | 11 | | 2 | 00/527F : B1 3C | LDA ({$3C}),Y ; Length of source 2819 | 8 MAINMEM.PATH.s 215 | Code | 11 | | 2 | 00/5281 : 91 42 | STA ({$42}),Y ; Copy length byte 2820 | 8 MAINMEM.PATH.s 216 | Code | 11 | | 1 | 00/5283 : A8 | TAY 2821 | 8 MAINMEM.PATH.s 217 | Code | 11 | | 2 | 00/5284 : C0 00 | ozunid_92 CPY #$00 2822 | 8 MAINMEM.PATH.s 218 | Code | 11 | | 2 | 00/5286 : F0 07 | BEQ ozunid_93 2823 | 8 MAINMEM.PATH.s 219 | Code | 11 | | 2 | 00/5288 : B1 3C | LDA ({$3C}),Y 2824 | 8 MAINMEM.PATH.s 220 | Code | 11 | | 2 | 00/528A : 91 42 | STA ({$42}),Y 2825 | 8 MAINMEM.PATH.s 221 | Code | 11 | | 1 | 00/528C : 88 | DEY 2826 | 8 MAINMEM.PATH.s 222 | Code | 11 | | 2 | 00/528D : 80 F5 | BRA ozunid_92 2827 | 8 MAINMEM.PATH.s 223 | Code | 11 | | 1 | 00/528F : 60 | ozunid_93 RTS 2828 | 8 MAINMEM.PATH.s 224 | Empty | 11 | | 0 | 00/5290 | 2829 | 8 MAINMEM.PATH.s 225 | Comment | 11 | | 0 | 00/5290 | * Copy MOSFILE to MFTEMP 2830 | 8 MAINMEM.PATH.s 226 | Code | 11 | | 2 | 00/5290 : A9 00 | MFtoTMP LDA #<{{$0300}} 2831 | 8 MAINMEM.PATH.s 227 | Code | 11 | | 2 | 00/5292 : 85 3C | STA {$3C} 2832 | 8 MAINMEM.PATH.s 228 | Code | 11 | | 2 | 00/5294 : A9 03 | LDA #>{{$0300}} 2833 | 8 MAINMEM.PATH.s 229 | Code | 11 | | 2 | 00/5296 : 85 3D | STA {$3D} 2834 | 8 MAINMEM.PATH.s 230 | Code | 11 | | 2 | 00/5298 : A9 08 | LDA #MFTEMP 2837 | 8 MAINMEM.PATH.s 233 | Code | 11 | | 2 | 00/529E : 85 43 | STA {$43} 2838 | 8 MAINMEM.PATH.s 234 | Code | 11 | | 3 | 00/52A0 : 20 7D 52 | JSR STRCPY 2839 | 8 MAINMEM.PATH.s 235 | Code | 11 | | 1 | 00/52A3 : 60 | RTS 2840 | 8 MAINMEM.PATH.s 236 | Empty | 11 | | 0 | 00/52A4 | 2841 | 8 MAINMEM.PATH.s 237 | Comment | 11 | | 0 | 00/52A4 | * Copy MFTEMP to MOSFILE 2842 | 8 MAINMEM.PATH.s 238 | Code | 11 | | 2 | 00/52A4 : A9 08 | TMPtoMF LDA #MFTEMP 2845 | 8 MAINMEM.PATH.s 241 | Code | 11 | | 2 | 00/52AA : 85 3D | STA {$3D} 2846 | 8 MAINMEM.PATH.s 242 | Code | 11 | | 2 | 00/52AC : A9 00 | LDA #<{{$0300}} 2847 | 8 MAINMEM.PATH.s 243 | Code | 11 | | 2 | 00/52AE : 85 42 | STA {$42} 2848 | 8 MAINMEM.PATH.s 244 | Code | 11 | | 2 | 00/52B0 : A9 03 | LDA #>{{$0300}} 2849 | 8 MAINMEM.PATH.s 245 | Code | 11 | | 2 | 00/52B2 : 85 43 | STA {$43} 2850 | 8 MAINMEM.PATH.s 246 | Code | 11 | | 3 | 00/52B4 : 20 7D 52 | JSR STRCPY 2851 | 8 MAINMEM.PATH.s 247 | Code | 11 | | 1 | 00/52B7 : 60 | RTS 2852 | 8 MAINMEM.PATH.s 248 | Empty | 11 | | 0 | 00/52B8 | 2853 | 8 MAINMEM.PATH.s 249 | Comment | 11 | | 0 | 00/52B8 | * Copy MFTEMP to MOSFILE2 2854 | 8 MAINMEM.PATH.s 250 | Code | 11 | | 2 | 00/52B8 : A9 08 | TMPtoMF2 LDA #MFTEMP 2857 | 8 MAINMEM.PATH.s 253 | Code | 11 | | 2 | 00/52BE : 85 3D | STA {$3D} 2858 | 8 MAINMEM.PATH.s 254 | Code | 11 | | 2 | 00/52C0 : A9 41 | LDA #<{$0341} 2859 | 8 MAINMEM.PATH.s 255 | Code | 11 | | 2 | 00/52C2 : 85 42 | STA {$42} 2860 | 8 MAINMEM.PATH.s 256 | Code | 11 | | 2 | 00/52C4 : A9 03 | LDA #>{$0341} 2861 | 8 MAINMEM.PATH.s 257 | Code | 11 | | 2 | 00/52C6 : 85 43 | STA {$43} 2862 | 8 MAINMEM.PATH.s 258 | Code | 11 | | 3 | 00/52C8 : 20 7D 52 | JSR STRCPY 2863 | 8 MAINMEM.PATH.s 259 | Code | 11 | | 1 | 00/52CB : 60 | RTS 2864 | 8 MAINMEM.PATH.s 260 | Empty | 11 | | 0 | 00/52CC | 2865 | 8 MAINMEM.PATH.s 261 | Comment | 11 | | 0 | 00/52CC | * Copy MOSFILE to MOSFILE2 2866 | 8 MAINMEM.PATH.s 262 | Code | 11 | | 2 | 00/52CC : A9 00 | COPYMF12 LDA #<{{$0300}} 2867 | 8 MAINMEM.PATH.s 263 | Code | 11 | | 2 | 00/52CE : 85 3C | STA {$3C} 2868 | 8 MAINMEM.PATH.s 264 | Code | 11 | | 2 | 00/52D0 : A9 03 | LDA #>{{$0300}} 2869 | 8 MAINMEM.PATH.s 265 | Code | 11 | | 2 | 00/52D2 : 85 3D | STA {$3D} 2870 | 8 MAINMEM.PATH.s 266 | Code | 11 | | 2 | 00/52D4 : A9 41 | LDA #<{$0341} 2871 | 8 MAINMEM.PATH.s 267 | Code | 11 | | 2 | 00/52D6 : 85 42 | STA {$42} 2872 | 8 MAINMEM.PATH.s 268 | Code | 11 | | 2 | 00/52D8 : A9 03 | LDA #>{$0341} 2873 | 8 MAINMEM.PATH.s 269 | Code | 11 | | 2 | 00/52DA : 85 43 | STA {$43} 2874 | 8 MAINMEM.PATH.s 270 | Code | 11 | | 3 | 00/52DC : 20 7D 52 | JSR STRCPY 2875 | 8 MAINMEM.PATH.s 271 | Code | 11 | | 1 | 00/52DF : 60 | RTS 2876 | 8 MAINMEM.PATH.s 272 | Empty | 11 | | 0 | 00/52E0 | 2877 | 8 MAINMEM.PATH.s 273 | Comment | 11 | | 0 | 00/52E0 | * Copy MOSFILE2 to MOSFILE 2878 | 8 MAINMEM.PATH.s 274 | Code | 11 | | 2 | 00/52E0 : A9 41 | COPYMF21 LDA #<{$0341} 2879 | 8 MAINMEM.PATH.s 275 | Code | 11 | | 2 | 00/52E2 : 85 3C | STA {$3C} 2880 | 8 MAINMEM.PATH.s 276 | Code | 11 | | 2 | 00/52E4 : A9 03 | LDA #>{$0341} 2881 | 8 MAINMEM.PATH.s 277 | Code | 11 | | 2 | 00/52E6 : 85 3D | STA {$3D} 2882 | 8 MAINMEM.PATH.s 278 | Code | 11 | | 2 | 00/52E8 : A9 00 | LDA #<{{$0300}} 2883 | 8 MAINMEM.PATH.s 279 | Code | 11 | | 2 | 00/52EA : 85 42 | STA {$42} 2884 | 8 MAINMEM.PATH.s 280 | Code | 11 | | 2 | 00/52EC : A9 03 | LDA #>{{$0300}} 2885 | 8 MAINMEM.PATH.s 281 | Code | 11 | | 2 | 00/52EE : 85 43 | STA {$43} 2886 | 8 MAINMEM.PATH.s 282 | Code | 11 | | 3 | 00/52F0 : 20 7D 52 | JSR STRCPY 2887 | 8 MAINMEM.PATH.s 283 | Code | 11 | | 1 | 00/52F3 : 60 | RTS 2888 | 8 MAINMEM.PATH.s 284 | Empty | 11 | | 0 | 00/52F4 | 2889 | 8 MAINMEM.PATH.s 285 | Comment | 11 | | 0 | 00/52F4 | * Copy PREFIX to MOSFILE 2890 | 8 MAINMEM.PATH.s 286 | Code | 11 | | 2 | 00/52F4 : A9 49 | PFXtoMF LDA #PREFIX 2893 | 8 MAINMEM.PATH.s 289 | Code | 11 | | 2 | 00/52FA : 85 3D | STA {$3D} 2894 | 8 MAINMEM.PATH.s 290 | Code | 11 | | 2 | 00/52FC : A9 00 | LDA #<{{$0300}} 2895 | 8 MAINMEM.PATH.s 291 | Code | 11 | | 2 | 00/52FE : 85 42 | STA {$42} 2896 | 8 MAINMEM.PATH.s 292 | Code | 11 | | 2 | 00/5300 : A9 03 | LDA #>{{$0300}} 2897 | 8 MAINMEM.PATH.s 293 | Code | 11 | | 2 | 00/5302 : 85 43 | STA {$43} 2898 | 8 MAINMEM.PATH.s 294 | Code | 11 | | 3 | 00/5304 : 20 7D 52 | JSR STRCPY 2899 | 8 MAINMEM.PATH.s 295 | Code | 11 | | 1 | 00/5307 : 60 | RTS 2900 | 8 MAINMEM.PATH.s 296 | Empty | 11 | | 0 | 00/5308 | 2901 | 8 MAINMEM.PATH.s 297 | Data | 11 | | 65 | 00/5308 : 00 00 00 00 | MFTEMP DS 65 ; Temp copy of MOSFILE | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 | 2902 | 8 MAINMEM.PATH.s 298 | Data | 11 | | 65 | 00/5349 : 00 00 00 00 | PREFIX DS 65 ; Buffer for ProDOS prefix | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 | 2903 | 8 MAINMEM.PATH.s 299 | Empty | 11 | | 0 | 00/538A | 2904 | 8 MAINMEM.PATH.s 300 | Empty | 11 | | 0 | 00/538A | 2905 | 8 MAINMEM.PATH.s 301 | Empty | 11 | | 0 | 00/538A | 2906 | 8 MAINMEM.PATH.s 302 | Empty | 11 | | 0 | 00/538A | 2907 | 8 MAINMEM.PATH.s 303 | Empty | 11 | | 0 | 00/538A | 2908 | 8 MAINMEM.PATH.s 304 | Empty | 11 | | 0 | 00/538A | 2909 | 8 MAINMEM.PATH.s 305 | Empty | 11 | | 0 | 00/538A | 2910 | 8 MAINMEM.PATH.s 306 | Empty | 11 | | 0 | 00/538A | 2911 | 8 MAINMEM.PATH.s 307 | Empty | 11 | | 0 | 00/538A | 2912 | 8 MAINMEM.PATH.s 308 | Empty | 11 | | 0 | 00/538A | 2913 | 8 MAINMEM.PATH.s 309 | Empty | 11 | | 0 | 00/538A | 2914 | 8 MAINMEM.PATH.s 310 | Empty | 11 | | 0 | 00/538A | 2915 | 8 MAINMEM.PATH.s 311 | Empty | 11 | | 0 | 00/538A | 2916 | 8 MAINMEM.PATH.s 312 | Empty | 11 | | 0 | 00/538A | 2917 | 8 MAINMEM.PATH.s 313 | Empty | 11 | | 0 | 00/538A | 2918 | 8 MAINMEM.PATH.s 314 | Empty | 11 | | 0 | 00/538A | 2919 | 8 MAINMEM.PATH.s 315 | Empty | 11 | | 0 | 00/538A | 2920 | 8 MAINMEM.PATH.s 316 | Empty | 11 | | 0 | 00/538A | 2921 | 8 MAINMEM.PATH.s 317 | Empty | 11 | | 0 | 00/538A | 2922 | 8 MAINMEM.PATH.s 318 | Empty | 11 | | 0 | 00/538A | 2923 | 1 applecorn.s 196 | Directive | 11 | | 0 | 00/538A | PUT MAINMEM.WILD 2924 | 9 MAINMEM.WILD.s 1 | Comment | 11 | | 0 | 00/538A | * MAINMEM.WILD.S 2925 | 9 MAINMEM.WILD.s 2 | Comment | 11 | | 0 | 00/538A | * (c) Bobbi 2021 GPLv3 2926 | 9 MAINMEM.WILD.s 3 | Comment | 11 | | 0 | 00/538A | * 2927 | 9 MAINMEM.WILD.s 4 | Comment | 11 | | 0 | 00/538A | * Wildcard support 2928 | 9 MAINMEM.WILD.s 5 | Empty | 11 | | 0 | 00/538A | 2929 | 9 MAINMEM.WILD.s 6 | Comment | 11 | | 0 | 00/538A | * Performs wildcard matching for operations that only require the 2930 | 9 MAINMEM.WILD.s 7 | Comment | 11 | | 0 | 00/538A | * first match. <*obj-spec*> in Acorn ADFS terminology. 2931 | 9 MAINMEM.WILD.s 8 | Code | 11 | | 1 | 00/538A : 18 | WILDONE CLC 2932 | 9 MAINMEM.WILD.s 9 | Code | 11 | | 3 | 00/538B : 20 92 53 | JSR WILDCARD 2933 | 9 MAINMEM.WILD.s 10 | Code | 11 | | 3 | 00/538E : 20 01 55 | JSR CLSDIR 2934 | 9 MAINMEM.WILD.s 11 | Code | 11 | | 1 | 00/5391 : 60 | RTS 2935 | 9 MAINMEM.WILD.s 12 | Empty | 11 | | 0 | 00/5392 | 2936 | 9 MAINMEM.WILD.s 13 | Comment | 11 | | 0 | 00/5392 | * Scan path in MOSFILE, break it into segments (ie: chunks delimited 2937 | 9 MAINMEM.WILD.s 14 | Comment | 11 | | 0 | 00/5392 | * by '/'), and for each segment see if it contains wildcard chars. 2938 | 9 MAINMEM.WILD.s 15 | Comment | 11 | | 0 | 00/5392 | * If so, pass it to SRCHBLK to expand the wildcard. If not, just 2939 | 9 MAINMEM.WILD.s 16 | Comment | 11 | | 0 | 00/5392 | * append the segment as it is. Uses MFTEMP to build up the path. 2940 | 9 MAINMEM.WILD.s 17 | Comment | 11 | | 0 | 00/5392 | * On entry: SEC to force leaf node lookup even if no wildcard, 2941 | 9 MAINMEM.WILD.s 18 | Comment | 11 | | 0 | 00/5392 | * CLC otherwise 2942 | 9 MAINMEM.WILD.s 19 | Comment | 11 | | 0 | 00/5392 | * Returns with carry set if wildcard match fails, clear otherwise 2943 | 9 MAINMEM.WILD.s 20 | Code | 11 | | 3 | 00/5392 : 9C F5 53 | WILDCARD STZ _ALWAYS ; Set :ALWAYS if carry set 2944 | 9 MAINMEM.WILD.s 21 | Code | 11 | | 2 | 00/5395 : 90 03 | BCC _NORMAL 2945 | 9 MAINMEM.WILD.s 22 | Code | 11 | | 3 | 00/5397 : CE F5 53 | DEC _ALWAYS 2946 | 9 MAINMEM.WILD.s 23 | Code | 11 | | 3 | 00/539A : 9C F4 53 | _NORMAL STZ _LAST 2947 | 9 MAINMEM.WILD.s 24 | Code | 11 | | 2 | 00/539D : A2 00 | LDX #$00 ; Start with first char 2948 | 9 MAINMEM.WILD.s 25 | Code | 11 | | 3 | 00/539F : 8E 08 53 | STX MFTEMP ; Clear MFTEMP (len=0) 2949 | 9 MAINMEM.WILD.s 26 | Code | 11 | | 1 | 00/53A2 : DA | PHX 2950 | 9 MAINMEM.WILD.s 27 | Code | 11 | | 1 | 00/53A3 : FA | ozunid_94 PLX 2951 | 9 MAINMEM.WILD.s 28 | Code | 11 | | 3 | 00/53A4 : 20 49 54 | JSR SEGMENT ; Extract segment of pathname 2952 | 9 MAINMEM.WILD.s 29 | Code | 11 | | 3 | 00/53A7 : 20 01 55 | JSR CLSDIR ; Close open dir, if any 2953 | 9 MAINMEM.WILD.s 30 | Code | 11 | | 2 | 00/53AA : A9 F0 | LDA #$F0 ; WILDIDX=$F0 denotes new search 2954 | 9 MAINMEM.WILD.s 31 | Code | 11 | | 3 | 00/53AC : 8D CD 54 | STA WILDIDX 2955 | 9 MAINMEM.WILD.s 32 | Code | 11 | | 2 | 00/53AF : 90 03 | BCC _NOTLST 2956 | 9 MAINMEM.WILD.s 33 | Code | 11 | | 3 | 00/53B1 : CE F4 53 | DEC _LAST 2957 | 9 MAINMEM.WILD.s 34 | Code | 11 | | 1 | 00/53B4 : DA | _NOTLST PHX 2958 | 9 MAINMEM.WILD.s 35 | Code | 11 | | 3 | 00/53B5 : AD DA 55 | LDA SEGBUF ; Length of segment 2959 | 9 MAINMEM.WILD.s 36 | Code | 11 | | 2 | 00/53B8 : D0 05 | BNE ozunid_95 ; Check for zero length segments 2960 | 9 MAINMEM.WILD.s 37 | Code | 11 | | 3 | 00/53BA : AD F4 53 | LDA _LAST ; If not the last segment ... 2961 | 9 MAINMEM.WILD.s 38 | Code | 11 | | 2 | 00/53BD : F0 E4 | BEQ ozunid_94 ; ... go again 2962 | 9 MAINMEM.WILD.s 39 | Code | 11 | | 3 | 00/53BF : 20 73 54 | ozunid_95 JSR HASWILD ; See if it has '*'/'#'/'?' 2963 | 9 MAINMEM.WILD.s 40 | Code | 11 | | 2 | 00/53C2 : B0 0F | BCS ozunid_97 ; It does 2964 | 9 MAINMEM.WILD.s 41 | Code | 11 | | 3 | 00/53C4 : AD F5 53 | LDA _ALWAYS ; Always do leaf-node lookup? 2965 | 9 MAINMEM.WILD.s 42 | Code | 11 | | 2 | 00/53C7 : F0 05 | BEQ ozunid_96 2966 | 9 MAINMEM.WILD.s 43 | Code | 11 | | 3 | 00/53C9 : AD F4 53 | LDA _LAST ; If it is the last segment do .. 2967 | 9 MAINMEM.WILD.s 44 | Code | 11 | | 2 | 00/53CC : D0 05 | BNE ozunid_97 ; .. wildcard lookup anyhow (for *INFO) 2968 | 9 MAINMEM.WILD.s 45 | Code | 11 | | 3 | 00/53CE : 20 90 54 | ozunid_96 JSR APPSEG ; Not wild: Append SEGBUF to MFTEMP 2969 | 9 MAINMEM.WILD.s 46 | Code | 11 | | 2 | 00/53D1 : 80 0C | BRA ozunid_99 2970 | 9 MAINMEM.WILD.s 47 | Code | 11 | | 2 | 00/53D3 : A2 08 | ozunid_97 LDX #MFTEMP ; in the directory path MFTEMP 2972 | 9 MAINMEM.WILD.s 49 | Code | 11 | | 3 | 00/53D7 : 20 CE 54 | ozunid_98 JSR SRCHBLK 2973 | 9 MAINMEM.WILD.s 50 | Code | 11 | | 2 | 00/53DA : 90 0E | BCC ozunid_100 ; Wildcard did not match anything 2974 | 9 MAINMEM.WILD.s 51 | Code | 11 | | 3 | 00/53DC : 20 AE 54 | JSR APPMATCH ; Append MATCHBUF to MFTEMP 2975 | 9 MAINMEM.WILD.s 52 | Code | 11 | | 3 | 00/53DF : AD F4 53 | ozunid_99 LDA _LAST 2976 | 9 MAINMEM.WILD.s 53 | Code | 11 | | 2 | 00/53E2 : F0 BF | BEQ ozunid_94 2977 | 9 MAINMEM.WILD.s 54 | Code | 11 | | 1 | 00/53E4 : FA | PLX 2978 | 9 MAINMEM.WILD.s 55 | Code | 11 | | 3 | 00/53E5 : 20 A4 52 | JSR TMPtoMF ; Copy the path we built to MOSFILE 2979 | 9 MAINMEM.WILD.s 56 | Code | 11 | | 1 | 00/53E8 : 18 | CLC 2980 | 9 MAINMEM.WILD.s 57 | Code | 11 | | 1 | 00/53E9 : 60 | RTS 2981 | 9 MAINMEM.WILD.s 58 | Code | 11 | | 3 | 00/53EA : AD CD 54 | ozunid_100 LDA WILDIDX ; See if there are more blocks 2982 | 9 MAINMEM.WILD.s 59 | Code | 11 | | 2 | 00/53ED : C9 FF | CMP #$FF 2983 | 9 MAINMEM.WILD.s 60 | Code | 11 | | 2 | 00/53EF : F0 E6 | BEQ ozunid_98 ; Yes, go again 2984 | 9 MAINMEM.WILD.s 61 | Code | 11 | | 1 | 00/53F1 : FA | PLX 2985 | 9 MAINMEM.WILD.s 62 | Code | 11 | | 1 | 00/53F2 : 38 | SEC 2986 | 9 MAINMEM.WILD.s 63 | Code | 11 | | 1 | 00/53F3 : 60 | RTS 2987 | 9 MAINMEM.WILD.s 64 | Data | 11 | | 1 | 00/53F4 : 00 | _LAST DB $00 ; Flag for last segment 2988 | 9 MAINMEM.WILD.s 65 | Data | 11 | | 1 | 00/53F5 : 00 | _ALWAYS DB $00 ; Flag to always lookup leafnode 2989 | 9 MAINMEM.WILD.s 66 | Empty | 11 | | 0 | 00/53F6 | 2990 | 9 MAINMEM.WILD.s 67 | Comment | 11 | | 0 | 00/53F6 | * Obtain subsequent wildcard matches 2991 | 9 MAINMEM.WILD.s 68 | Comment | 11 | | 0 | 00/53F6 | * WILDCARD must have been called first 2992 | 9 MAINMEM.WILD.s 69 | Comment | 11 | | 0 | 00/53F6 | * Returns with carry set if wildcard match fails, clear otherwise 2993 | 9 MAINMEM.WILD.s 70 | Comment | 11 | | 0 | 00/53F6 | * Caller should check WILDIDX and call again if value is $FF 2994 | 9 MAINMEM.WILD.s 71 | Code | 11 | | 3 | 00/53F6 : AE 08 53 | WILDNEXT LDX MFTEMP ; Length of MFTEMP 2995 | 9 MAINMEM.WILD.s 72 | Code | 11 | | 2 | 00/53F9 : E0 00 | ozunid_101 CPX #$00 ; Find final segment (previous match) 2996 | 9 MAINMEM.WILD.s 73 | Code | 11 | | 2 | 00/53FB : F0 10 | BEQ ozunid_103 2997 | 9 MAINMEM.WILD.s 74 | Code | 11 | | 3 | 00/53FD : BD 08 53 | LDA MFTEMP,X 2998 | 9 MAINMEM.WILD.s 75 | Code | 11 | | 2 | 00/5400 : C9 2F | CMP #'/' 2999 | 9 MAINMEM.WILD.s 76 | Code | 11 | | 2 | 00/5402 : D0 06 | BNE ozunid_102 3000 | 9 MAINMEM.WILD.s 77 | Code | 11 | | 1 | 00/5404 : CA | DEX 3001 | 9 MAINMEM.WILD.s 78 | Code | 11 | | 3 | 00/5405 : 8E 08 53 | STX MFTEMP ; Trim MFTEMP 3002 | 9 MAINMEM.WILD.s 79 | Code | 11 | | 2 | 00/5408 : 80 03 | BRA ozunid_103 3003 | 9 MAINMEM.WILD.s 80 | Code | 11 | | 1 | 00/540A : CA | ozunid_102 DEX 3004 | 9 MAINMEM.WILD.s 81 | Code | 11 | | 2 | 00/540B : 80 EC | BRA ozunid_101 3005 | 9 MAINMEM.WILD.s 82 | Code | 11 | | 3 | 00/540D : 20 CE 54 | ozunid_103 JSR SRCHBLK 3006 | 9 MAINMEM.WILD.s 83 | Code | 11 | | 2 | 00/5410 : 90 08 | BCC ozunid_104 3007 | 9 MAINMEM.WILD.s 84 | Code | 11 | | 3 | 00/5412 : 20 AE 54 | JSR APPMATCH ; Append MATCHBUF to MFTEMP 3008 | 9 MAINMEM.WILD.s 85 | Code | 11 | | 3 | 00/5415 : 20 A4 52 | JSR TMPtoMF ; Copy back to MOSFILE 3009 | 9 MAINMEM.WILD.s 86 | Code | 11 | | 1 | 00/5418 : 18 | CLC 3010 | 9 MAINMEM.WILD.s 87 | Code | 11 | | 1 | 00/5419 : 60 | RTS 3011 | 9 MAINMEM.WILD.s 88 | Code | 11 | | 3 | 00/541A : AD CD 54 | ozunid_104 LDA WILDIDX ; See if there are more blocks 3012 | 9 MAINMEM.WILD.s 89 | Code | 11 | | 2 | 00/541D : C9 FF | CMP #$FF 3013 | 9 MAINMEM.WILD.s 90 | Code | 11 | | 2 | 00/541F : F0 EC | BEQ ozunid_103 ; Yes, go again 3014 | 9 MAINMEM.WILD.s 91 | Code | 11 | | 1 | 00/5421 : 38 | SEC 3015 | 9 MAINMEM.WILD.s 92 | Code | 11 | | 1 | 00/5422 : 60 | RTS 3016 | 9 MAINMEM.WILD.s 93 | Empty | 11 | | 0 | 00/5423 | 3017 | 9 MAINMEM.WILD.s 94 | Comment | 11 | | 0 | 00/5423 | * Different version of WILDNEXT which is used by the *INFO handler 3018 | 9 MAINMEM.WILD.s 95 | Comment | 11 | | 0 | 00/5423 | * Because it needs to intercept each block. 3019 | 9 MAINMEM.WILD.s 96 | Comment | 11 | | 0 | 00/5423 | * TODO: Once this works, refactor/cleanup 3020 | 9 MAINMEM.WILD.s 97 | Code | 11 | | 3 | 00/5423 : AE 08 53 | WILDNEXT2 LDX MFTEMP ; Length of MFTEMP 3021 | 9 MAINMEM.WILD.s 98 | Code | 11 | | 2 | 00/5426 : E0 00 | ozunid_105 CPX #$00 ; Find final segment (previous match) 3022 | 9 MAINMEM.WILD.s 99 | Code | 11 | | 2 | 00/5428 : F0 10 | BEQ ozunid_107 3023 | 9 MAINMEM.WILD.s 100 | Code | 11 | | 3 | 00/542A : BD 08 53 | LDA MFTEMP,X 3024 | 9 MAINMEM.WILD.s 101 | Code | 11 | | 2 | 00/542D : C9 2F | CMP #'/' 3025 | 9 MAINMEM.WILD.s 102 | Code | 11 | | 2 | 00/542F : D0 06 | BNE ozunid_106 3026 | 9 MAINMEM.WILD.s 103 | Code | 11 | | 1 | 00/5431 : CA | DEX 3027 | 9 MAINMEM.WILD.s 104 | Code | 11 | | 3 | 00/5432 : 8E 08 53 | STX MFTEMP ; Trim MFTEMP 3028 | 9 MAINMEM.WILD.s 105 | Code | 11 | | 2 | 00/5435 : 80 03 | BRA ozunid_107 3029 | 9 MAINMEM.WILD.s 106 | Code | 11 | | 1 | 00/5437 : CA | ozunid_106 DEX 3030 | 9 MAINMEM.WILD.s 107 | Code | 11 | | 2 | 00/5438 : 80 EC | BRA ozunid_105 3031 | 9 MAINMEM.WILD.s 108 | Code | 11 | | 3 | 00/543A : 20 CE 54 | ozunid_107 JSR SRCHBLK 3032 | 9 MAINMEM.WILD.s 109 | Code | 11 | | 2 | 00/543D : 90 08 | BCC ozunid_108 3033 | 9 MAINMEM.WILD.s 110 | Code | 11 | | 3 | 00/543F : 20 AE 54 | JSR APPMATCH ; Append MATCHBUF to MFTEMP 3034 | 9 MAINMEM.WILD.s 111 | Code | 11 | | 3 | 00/5442 : 20 A4 52 | JSR TMPtoMF ; Copy back to MOSFILE 3035 | 9 MAINMEM.WILD.s 112 | Code | 11 | | 1 | 00/5445 : 18 | CLC 3036 | 9 MAINMEM.WILD.s 113 | Code | 11 | | 1 | 00/5446 : 60 | RTS 3037 | 9 MAINMEM.WILD.s 114 | Code | 11 | | 1 | 00/5447 : 38 | ozunid_108 SEC 3038 | 9 MAINMEM.WILD.s 115 | Code | 11 | | 1 | 00/5448 : 60 | RTS 3039 | 9 MAINMEM.WILD.s 116 | Empty | 11 | | 0 | 00/5449 | 3040 | 9 MAINMEM.WILD.s 117 | Comment | 11 | | 0 | 00/5449 | * Copy a segment of the path into SEGBUF 3041 | 9 MAINMEM.WILD.s 118 | Comment | 11 | | 0 | 00/5449 | * PREPATH makes all paths absolute, so always begins with '/' 3042 | 9 MAINMEM.WILD.s 119 | Comment | 11 | | 0 | 00/5449 | * On entry: X contains index of first char in MOSFILE to process 3043 | 9 MAINMEM.WILD.s 120 | Comment | 11 | | 0 | 00/5449 | * Set carry if no more segments, clear otherwise 3044 | 9 MAINMEM.WILD.s 121 | Code | 11 | | 2 | 00/5449 : A0 00 | SEGMENT LDY #$00 3045 | 9 MAINMEM.WILD.s 122 | Code | 11 | | 3 | 00/544B : EC 00 03 | ozunid_109 CPX {{$0300}} ; See if we are done 3046 | 9 MAINMEM.WILD.s 123 | Code | 11 | | 2 | 00/544E : F0 19 | BEQ ozunid_111 3047 | 9 MAINMEM.WILD.s 124 | Code | 11 | | 3 | 00/5450 : BD 01 03 | LDA {{$0300}}+1,X 3048 | 9 MAINMEM.WILD.s 125 | Code | 11 | | 2 | 00/5453 : C9 2F | CMP #'/' 3049 | 9 MAINMEM.WILD.s 126 | Code | 11 | | 2 | 00/5455 : F0 07 | BEQ ozunid_110 3050 | 9 MAINMEM.WILD.s 127 | Code | 11 | | 3 | 00/5457 : 99 DB 55 | STA SEGBUF+1,Y 3051 | 9 MAINMEM.WILD.s 128 | Code | 11 | | 1 | 00/545A : E8 | INX 3052 | 9 MAINMEM.WILD.s 129 | Code | 11 | | 1 | 00/545B : C8 | INY 3053 | 9 MAINMEM.WILD.s 130 | Code | 11 | | 2 | 00/545C : 80 ED | BRA ozunid_109 3054 | 9 MAINMEM.WILD.s 131 | Code | 11 | | 3 | 00/545E : 8C DA 55 | ozunid_110 STY SEGBUF ; Record the length 3055 | 9 MAINMEM.WILD.s 132 | Code | 11 | | 2 | 00/5461 : A9 00 | LDA #$00 3056 | 9 MAINMEM.WILD.s 133 | Code | 11 | | 3 | 00/5463 : 99 DB 55 | STA SEGBUF+1,Y ; Null terminate for MATCH 3057 | 9 MAINMEM.WILD.s 134 | Code | 11 | | 1 | 00/5466 : E8 | INX ; Skip the slash 3058 | 9 MAINMEM.WILD.s 135 | Code | 11 | | 1 | 00/5467 : 18 | CLC ; Not the last one 3059 | 9 MAINMEM.WILD.s 136 | Code | 11 | | 1 | 00/5468 : 60 | RTS 3060 | 9 MAINMEM.WILD.s 137 | Code | 11 | | 3 | 00/5469 : 8C DA 55 | ozunid_111 STY SEGBUF ; Record the length 3061 | 9 MAINMEM.WILD.s 138 | Code | 11 | | 2 | 00/546C : A9 00 | LDA #$00 3062 | 9 MAINMEM.WILD.s 139 | Code | 11 | | 3 | 00/546E : 99 DB 55 | STA SEGBUF+1,Y ; Null terminate for MATCH 3063 | 9 MAINMEM.WILD.s 140 | Code | 11 | | 1 | 00/5471 : 38 | SEC ; Last segment 3064 | 9 MAINMEM.WILD.s 141 | Code | 11 | | 1 | 00/5472 : 60 | RTS 3065 | 9 MAINMEM.WILD.s 142 | Empty | 11 | | 0 | 00/5473 | 3066 | 9 MAINMEM.WILD.s 143 | Comment | 11 | | 0 | 00/5473 | * See if SEGBUF contains any of '*', '#', '?' 3067 | 9 MAINMEM.WILD.s 144 | Comment | 11 | | 0 | 00/5473 | * Set carry if wild, clear otherwise 3068 | 9 MAINMEM.WILD.s 145 | Code | 11 | | 2 | 00/5473 : A2 00 | HASWILD LDX #$00 3069 | 9 MAINMEM.WILD.s 146 | Code | 11 | | 3 | 00/5475 : EC DA 55 | ozunid_112 CPX SEGBUF ; At end? 3070 | 9 MAINMEM.WILD.s 147 | Code | 11 | | 2 | 00/5478 : F0 12 | BEQ _NOTWILD 3071 | 9 MAINMEM.WILD.s 148 | Code | 11 | | 3 | 00/547A : BD DB 55 | LDA SEGBUF+1,X 3072 | 9 MAINMEM.WILD.s 149 | Code | 11 | | 2 | 00/547D : C9 2A | CMP #'*' 3073 | 9 MAINMEM.WILD.s 150 | Code | 11 | | 2 | 00/547F : F0 0D | BEQ ozunid_113 3074 | 9 MAINMEM.WILD.s 151 | Code | 11 | | 2 | 00/5481 : C9 23 | CMP #'#' 3075 | 9 MAINMEM.WILD.s 152 | Code | 11 | | 2 | 00/5483 : F0 09 | BEQ ozunid_113 3076 | 9 MAINMEM.WILD.s 153 | Code | 11 | | 2 | 00/5485 : C9 3F | CMP #'?' 3077 | 9 MAINMEM.WILD.s 154 | Code | 11 | | 2 | 00/5487 : F0 05 | BEQ ozunid_113 3078 | 9 MAINMEM.WILD.s 155 | Code | 11 | | 1 | 00/5489 : E8 | INX 3079 | 9 MAINMEM.WILD.s 156 | Code | 11 | | 2 | 00/548A : 80 E9 | BRA ozunid_112 3080 | 9 MAINMEM.WILD.s 157 | Code | 11 | | 1 | 00/548C : 18 | _NOTWILD CLC 3081 | 9 MAINMEM.WILD.s 158 | Code | 11 | | 1 | 00/548D : 60 | RTS 3082 | 9 MAINMEM.WILD.s 159 | Code | 11 | | 1 | 00/548E : 38 | ozunid_113 SEC 3083 | 9 MAINMEM.WILD.s 160 | Code | 11 | | 1 | 00/548F : 60 | RTS 3084 | 9 MAINMEM.WILD.s 161 | Empty | 11 | | 0 | 00/5490 | 3085 | 9 MAINMEM.WILD.s 162 | Comment | 11 | | 0 | 00/5490 | * Append SEGBUF to MFTEMP 3086 | 9 MAINMEM.WILD.s 163 | Code | 11 | | 3 | 00/5490 : AC 08 53 | APPSEG LDY MFTEMP ; Dest idx = length 3087 | 9 MAINMEM.WILD.s 164 | Code | 11 | | 2 | 00/5493 : A9 2F | LDA #'/' ; Add a '/' separator 3088 | 9 MAINMEM.WILD.s 165 | Code | 11 | | 3 | 00/5495 : 99 09 53 | STA MFTEMP+1,Y 3089 | 9 MAINMEM.WILD.s 166 | Code | 11 | | 1 | 00/5498 : C8 | INY 3090 | 9 MAINMEM.WILD.s 167 | Code | 11 | | 2 | 00/5499 : A2 00 | LDX #$00 ; Source idx 3091 | 9 MAINMEM.WILD.s 168 | Code | 11 | | 3 | 00/549B : EC DA 55 | ozunid_114 CPX SEGBUF ; At end? 3092 | 9 MAINMEM.WILD.s 169 | Code | 11 | | 2 | 00/549E : F0 0A | BEQ ozunid_115 3093 | 9 MAINMEM.WILD.s 170 | Code | 11 | | 3 | 00/54A0 : BD DB 55 | LDA SEGBUF+1,X 3094 | 9 MAINMEM.WILD.s 171 | Code | 11 | | 3 | 00/54A3 : 99 09 53 | STA MFTEMP+1,Y 3095 | 9 MAINMEM.WILD.s 172 | Code | 11 | | 1 | 00/54A6 : E8 | INX 3096 | 9 MAINMEM.WILD.s 173 | Code | 11 | | 1 | 00/54A7 : C8 | INY 3097 | 9 MAINMEM.WILD.s 174 | Code | 11 | | 2 | 00/54A8 : 80 F1 | BRA ozunid_114 3098 | 9 MAINMEM.WILD.s 175 | Code | 11 | | 3 | 00/54AA : 8C 08 53 | ozunid_115 STY MFTEMP ; Update length 3099 | 9 MAINMEM.WILD.s 176 | Code | 11 | | 1 | 00/54AD : 60 | RTS 3100 | 9 MAINMEM.WILD.s 177 | Empty | 11 | | 0 | 00/54AE | 3101 | 9 MAINMEM.WILD.s 178 | Comment | 11 | | 0 | 00/54AE | * Append MATCHBUF to MFTEMP 3102 | 9 MAINMEM.WILD.s 179 | Code | 11 | | 3 | 00/54AE : AC 08 53 | APPMATCH LDY MFTEMP ; Dest idx = length 3103 | 9 MAINMEM.WILD.s 180 | Code | 11 | | 2 | 00/54B1 : A9 2F | LDA #'/' ; Add a '/' separator 3104 | 9 MAINMEM.WILD.s 181 | Code | 11 | | 3 | 00/54B3 : 99 09 53 | STA MFTEMP+1,Y 3105 | 9 MAINMEM.WILD.s 182 | Code | 11 | | 1 | 00/54B6 : C8 | INY 3106 | 9 MAINMEM.WILD.s 183 | Code | 11 | | 2 | 00/54B7 : A2 00 | LDX #$00 ; Source idx 3107 | 9 MAINMEM.WILD.s 184 | Code | 11 | | 3 | 00/54B9 : EC 1B 56 | ozunid_116 CPX MATCHBUF ; At end? 3108 | 9 MAINMEM.WILD.s 185 | Code | 11 | | 2 | 00/54BC : F0 0A | BEQ ozunid_117 3109 | 9 MAINMEM.WILD.s 186 | Code | 11 | | 3 | 00/54BE : BD 1C 56 | LDA MATCHBUF+1,X 3110 | 9 MAINMEM.WILD.s 187 | Code | 11 | | 3 | 00/54C1 : 99 09 53 | STA MFTEMP+1,Y 3111 | 9 MAINMEM.WILD.s 188 | Code | 11 | | 1 | 00/54C4 : E8 | INX 3112 | 9 MAINMEM.WILD.s 189 | Code | 11 | | 1 | 00/54C5 : C8 | INY 3113 | 9 MAINMEM.WILD.s 190 | Code | 11 | | 2 | 00/54C6 : 80 F1 | BRA ozunid_116 3114 | 9 MAINMEM.WILD.s 191 | Code | 11 | | 3 | 00/54C8 : 8C 08 53 | ozunid_117 STY MFTEMP ; Update length 3115 | 9 MAINMEM.WILD.s 192 | Code | 11 | | 1 | 00/54CB : 60 | RTS 3116 | 9 MAINMEM.WILD.s 193 | Empty | 11 | | 0 | 00/54CC | 3117 | 9 MAINMEM.WILD.s 194 | Comment | 11 | | 0 | 00/54CC | * The following is required in order to be able to resume 3118 | 9 MAINMEM.WILD.s 195 | Comment | 11 | | 0 | 00/54CC | * a directory search 3119 | 9 MAINMEM.WILD.s 196 | Data | 11 | | 1 | 00/54CC : 00 | WILDFILE DB $00 ; File ref num for open dir 3120 | 9 MAINMEM.WILD.s 197 | Data | 11 | | 1 | 00/54CD : 00 | WILDIDX DB $00 ; Dirent idx in current block 3121 | 9 MAINMEM.WILD.s 198 | Empty | 11 | | 0 | 00/54CE | 3122 | 9 MAINMEM.WILD.s 199 | Comment | 11 | | 0 | 00/54CE | * Read directory block, apply wildcard match 3123 | 9 MAINMEM.WILD.s 200 | Comment | 11 | | 0 | 00/54CE | * Inputs: directory name in XY (Pascal string) 3124 | 9 MAINMEM.WILD.s 201 | Comment | 11 | | 0 | 00/54CE | * On exit: set carry if match, clear carry otherwise 3125 | 9 MAINMEM.WILD.s 202 | Comment | 11 | | 0 | 00/54CE | * Leaves the directory open to allow resumption of search. 3126 | 9 MAINMEM.WILD.s 203 | Code | 11 | | 3 | 00/54CE : AD CD 54 | SRCHBLK LDA WILDIDX 3127 | 9 MAINMEM.WILD.s 204 | Code | 11 | | 2 | 00/54D1 : C9 F0 | CMP #$F0 ; Is it a new search? 3128 | 9 MAINMEM.WILD.s 205 | Code | 11 | | 2 | 00/54D3 : F0 06 | BEQ ozunid_118 3129 | 9 MAINMEM.WILD.s 206 | Code | 11 | | 2 | 00/54D5 : C9 FF | CMP #$FF ; Time to load another blk? 3130 | 9 MAINMEM.WILD.s 207 | Code | 11 | | 2 | 00/54D7 : F0 16 | BEQ _READ ; Continue search in next blk 3131 | 9 MAINMEM.WILD.s 208 | Code | 11 | | 2 | 00/54D9 : 80 22 | BRA ozunid_119 ; Continue search in curr blk 3132 | 9 MAINMEM.WILD.s 209 | Code | 11 | | 3 | 00/54DB : 8E 5D 56 | ozunid_118 STX OPENPL+1 3133 | 9 MAINMEM.WILD.s 210 | Code | 11 | | 3 | 00/54DE : 8C 5E 56 | STY OPENPL+2 3134 | 9 MAINMEM.WILD.s 211 | Code | 11 | | 3 | 00/54E1 : 20 E1 57 | JSR OPENFILE 3135 | 9 MAINMEM.WILD.s 212 | Code | 11 | | 2 | 00/54E4 : B0 15 | BCS _NODIR 3136 | 9 MAINMEM.WILD.s 213 | Code | 11 | | 3 | 00/54E6 : AD 61 56 | LDA OPENPL+5 ; File ref num 3137 | 9 MAINMEM.WILD.s 214 | Code | 11 | | 3 | 00/54E9 : 8D CC 54 | STA WILDFILE ; Stash for later 3138 | 9 MAINMEM.WILD.s 215 | Code | 11 | | 3 | 00/54EC : 8D 7D 56 | STA READPL+1 3139 | 9 MAINMEM.WILD.s 216 | Code | 11 | | 3 | 00/54EF : 20 EF 57 | _READ JSR RDFILE ; Read->BLKBUF 3140 | 9 MAINMEM.WILD.s 217 | Code | 11 | | 2 | 00/54F2 : 90 09 | BCC ozunid_119 3141 | 9 MAINMEM.WILD.s 218 | Code | 11 | | 2 | 00/54F4 : C9 4C | CMP #$4C ; EOF 3142 | 9 MAINMEM.WILD.s 219 | Code | 11 | | 2 | 00/54F6 : D0 03 | BNE _BADDIR 3143 | 9 MAINMEM.WILD.s 220 | Code | 11 | | 3 | 00/54F8 : 9C CD 54 | STZ WILDIDX ; So caller knows not to call again 3144 | 9 MAINMEM.WILD.s 221 | Empty | 11 | | 0 | 00/54FB | _EOF 3145 | 9 MAINMEM.WILD.s 222 | Empty | 11 | | 0 | 00/54FB | _BADDIR 3146 | 9 MAINMEM.WILD.s 223 | Empty | 11 | | 0 | 00/54FB | _NODIR 3147 | 9 MAINMEM.WILD.s 224 | Code | 11 | | 1 | 00/54FB : 18 | CLC ; No match, caller checks WILDIDX .. 3148 | 9 MAINMEM.WILD.s 225 | Code | 11 | | 1 | 00/54FC : 60 | RTS ; .. to see if another block 3149 | 9 MAINMEM.WILD.s 226 | Empty | 11 | | 0 | 00/54FD | 3150 | 9 MAINMEM.WILD.s 227 | Code | 11 | | 3 | 00/54FD : 20 14 55 | ozunid_119 JSR SRCHBLK2 ; Handle one block 3151 | 9 MAINMEM.WILD.s 228 | Code | 11 | | 1 | 00/5500 : 60 | RTS 3152 | 9 MAINMEM.WILD.s 229 | Empty | 11 | | 0 | 00/5501 | 3153 | 9 MAINMEM.WILD.s 230 | Comment | 11 | | 0 | 00/5501 | * Close directory, if it was open 3154 | 9 MAINMEM.WILD.s 231 | Comment | 11 | | 0 | 00/5501 | * Preserves A and flags 3155 | 9 MAINMEM.WILD.s 232 | Code | 11 | | 1 | 00/5501 : 08 | CLSDIR PHP 3156 | 9 MAINMEM.WILD.s 233 | Code | 11 | | 1 | 00/5502 : 48 | PHA 3157 | 9 MAINMEM.WILD.s 234 | Code | 11 | | 3 | 00/5503 : AD CC 54 | LDA WILDFILE ; File ref num for open dir 3158 | 9 MAINMEM.WILD.s 235 | Code | 11 | | 2 | 00/5506 : F0 09 | BEQ _ALREADY ; Already been closed 3159 | 9 MAINMEM.WILD.s 236 | Code | 11 | | 3 | 00/5508 : 8D A5 56 | STA CLSPL+1 3160 | 9 MAINMEM.WILD.s 237 | Code | 11 | | 3 | 00/550B : 20 E8 57 | JSR CLSFILE 3161 | 9 MAINMEM.WILD.s 238 | Code | 11 | | 3 | 00/550E : 9C CC 54 | STZ WILDFILE ; Not strictly necessary 3162 | 9 MAINMEM.WILD.s 239 | Code | 11 | | 1 | 00/5511 : 68 | _ALREADY PLA 3163 | 9 MAINMEM.WILD.s 240 | Code | 11 | | 1 | 00/5512 : 28 | PLP 3164 | 9 MAINMEM.WILD.s 241 | Code | 11 | | 1 | 00/5513 : 60 | RTS 3165 | 9 MAINMEM.WILD.s 242 | Empty | 11 | | 0 | 00/5514 | 3166 | 9 MAINMEM.WILD.s 243 | Comment | 11 | | 0 | 00/5514 | * Apply wildcard match to a directory block 3167 | 9 MAINMEM.WILD.s 244 | Comment | 11 | | 0 | 00/5514 | * Directory block is in BLKBUF 3168 | 9 MAINMEM.WILD.s 245 | Comment | 11 | | 0 | 00/5514 | * On exit: set carry if match, clear carry otherwise 3169 | 9 MAINMEM.WILD.s 246 | Code | 11 | | 3 | 00/5514 : AE CD 54 | SRCHBLK2 LDX WILDIDX 3170 | 9 MAINMEM.WILD.s 247 | Code | 11 | | 2 | 00/5517 : E0 F0 | CPX #$F0 ; Is it a new search? 3171 | 9 MAINMEM.WILD.s 248 | Code | 11 | | 2 | 00/5519 : F0 02 | BEQ ozunid_120 3172 | 9 MAINMEM.WILD.s 249 | Code | 11 | | 2 | 00/551B : 80 16 | BRA ozunid_123 3173 | 9 MAINMEM.WILD.s 250 | Code | 11 | | 3 | 00/551D : AD 04 90 | ozunid_120 LDA {$9000}+4 ; Obtain storage type 3174 | 9 MAINMEM.WILD.s 251 | Code | 11 | | 2 | 00/5520 : 29 E0 | AND #$E0 ; Mask 3 MSBs 3175 | 9 MAINMEM.WILD.s 252 | Code | 11 | | 2 | 00/5522 : C9 E0 | CMP #$E0 3176 | 9 MAINMEM.WILD.s 253 | Code | 11 | | 2 | 00/5524 : D0 04 | BNE ozunid_121 ; Not key block 3177 | 9 MAINMEM.WILD.s 254 | Code | 11 | | 2 | 00/5526 : A2 01 | LDX #$01 ; Skip dir name 3178 | 9 MAINMEM.WILD.s 255 | Code | 11 | | 2 | 00/5528 : 80 02 | BRA ozunid_122 3179 | 9 MAINMEM.WILD.s 256 | Code | 11 | | 2 | 00/552A : A2 00 | ozunid_121 LDX #$00 3180 | 9 MAINMEM.WILD.s 257 | Code | 11 | | 1 | 00/552C : DA | ozunid_122 PHX 3181 | 9 MAINMEM.WILD.s 258 | Code | 11 | | 3 | 00/552D : 20 3F 55 | JSR MATCHENT 3182 | 9 MAINMEM.WILD.s 259 | Code | 11 | | 1 | 00/5530 : FA | PLX 3183 | 9 MAINMEM.WILD.s 260 | Code | 11 | | 2 | 00/5531 : B0 08 | BCS ozunid_124 3184 | 9 MAINMEM.WILD.s 261 | Code | 11 | | 1 | 00/5533 : E8 | ozunid_123 INX 3185 | 9 MAINMEM.WILD.s 262 | Code | 11 | | 2 | 00/5534 : E0 0D | CPX #13 ; Number of dirents in blk 3186 | 9 MAINMEM.WILD.s 263 | Code | 11 | | 2 | 00/5536 : D0 F4 | BNE ozunid_122 3187 | 9 MAINMEM.WILD.s 264 | Code | 11 | | 2 | 00/5538 : A2 FF | LDX #$FF ; Reset index to -1 for nxt blk 3188 | 9 MAINMEM.WILD.s 265 | Code | 11 | | 1 | 00/553A : 18 | CLC ; Fell off end, no match 3189 | 9 MAINMEM.WILD.s 266 | Code | 11 | | 3 | 00/553B : 8E CD 54 | ozunid_124 STX WILDIDX ; Record dirent idx for resume 3190 | 9 MAINMEM.WILD.s 267 | Code | 11 | | 1 | 00/553E : 60 | RTS 3191 | 9 MAINMEM.WILD.s 268 | Empty | 11 | | 0 | 00/553F | 3192 | 9 MAINMEM.WILD.s 269 | Comment | 11 | | 0 | 00/553F | * Apply wildcard match to a directory entry 3193 | 9 MAINMEM.WILD.s 270 | Comment | 11 | | 0 | 00/553F | * On entry: X = dirent index in BLKBUF 3194 | 9 MAINMEM.WILD.s 271 | Comment | 11 | | 0 | 00/553F | * On exit: set carry if match, clear carry otherwise 3195 | 9 MAINMEM.WILD.s 272 | Code | 11 | | 2 | 00/553F : A9 04 | MATCHENT LDA #<{$9000}+4 ; Skip pointers 3196 | 9 MAINMEM.WILD.s 273 | Code | 11 | | 2 | 00/5541 : 85 3C | STA {$3C} 3197 | 9 MAINMEM.WILD.s 274 | Code | 11 | | 2 | 00/5543 : A9 90 | LDA #>{$9000}+4 3198 | 9 MAINMEM.WILD.s 275 | Code | 11 | | 2 | 00/5545 : 85 3D | STA {$3D} 3199 | 9 MAINMEM.WILD.s 276 | Code | 11 | | 2 | 00/5547 : E0 00 | ozunid_125 CPX #$00 3200 | 9 MAINMEM.WILD.s 277 | Code | 11 | | 2 | 00/5549 : F0 10 | BEQ ozunid_126 3201 | 9 MAINMEM.WILD.s 278 | Code | 11 | | 1 | 00/554B : 18 | CLC 3202 | 9 MAINMEM.WILD.s 279 | Code | 11 | | 2 | 00/554C : A9 27 | LDA #$27 ; Size of dirent 3203 | 9 MAINMEM.WILD.s 280 | Code | 11 | | 2 | 00/554E : 65 3C | ADC {$3C} 3204 | 9 MAINMEM.WILD.s 281 | Code | 11 | | 2 | 00/5550 : 85 3C | STA {$3C} 3205 | 9 MAINMEM.WILD.s 282 | Code | 11 | | 2 | 00/5552 : A9 00 | LDA #$00 3206 | 9 MAINMEM.WILD.s 283 | Code | 11 | | 2 | 00/5554 : 65 3D | ADC {$3D} 3207 | 9 MAINMEM.WILD.s 284 | Code | 11 | | 2 | 00/5556 : 85 3D | STA {$3D} 3208 | 9 MAINMEM.WILD.s 285 | Code | 11 | | 1 | 00/5558 : CA | DEX 3209 | 9 MAINMEM.WILD.s 286 | Code | 11 | | 2 | 00/5559 : 80 EC | BRA ozunid_125 3210 | 9 MAINMEM.WILD.s 287 | Code | 11 | | 2 | 00/555B : A0 00 | ozunid_126 LDY #$00 3211 | 9 MAINMEM.WILD.s 288 | Code | 11 | | 2 | 00/555D : B1 3C | LDA ({$3C}),Y ; Length byte 3212 | 9 MAINMEM.WILD.s 289 | Code | 11 | | 2 | 00/555F : F0 35 | BEQ ozunid_131 ; Inactive entry 3213 | 9 MAINMEM.WILD.s 290 | Code | 11 | | 2 | 00/5561 : 29 0F | AND #$0F 3214 | 9 MAINMEM.WILD.s 291 | Code | 11 | | 1 | 00/5563 : A8 | TAY 3215 | 9 MAINMEM.WILD.s 292 | Code | 11 | | 1 | 00/5564 : C8 | INY 3216 | 9 MAINMEM.WILD.s 293 | Code | 11 | | 2 | 00/5565 : A9 00 | LDA #$00 3217 | 9 MAINMEM.WILD.s 294 | Code | 11 | | 2 | 00/5567 : 91 3C | STA ({$3C}),Y ; Null terminate filename for MATCH 3218 | 9 MAINMEM.WILD.s 295 | Code | 11 | | 2 | 00/5569 : E6 3C | INC {$3C} ; Inc ptr, skip length byte 3219 | 9 MAINMEM.WILD.s 296 | Code | 11 | | 2 | 00/556B : D0 02 | BNE ozunid_127 3220 | 9 MAINMEM.WILD.s 297 | Code | 11 | | 2 | 00/556D : E6 3D | INC {$3D} 3221 | 9 MAINMEM.WILD.s 298 | Code | 11 | | 3 | 00/556F : 20 9E 55 | ozunid_127 JSR MATCH ; Try wildcard match 3222 | 9 MAINMEM.WILD.s 299 | Code | 11 | | 1 | 00/5572 : 08 | PHP 3223 | 9 MAINMEM.WILD.s 300 | Code | 11 | | 2 | 00/5573 : A5 3C | LDA {$3C} ; Decrement ptr again 3224 | 9 MAINMEM.WILD.s 301 | Code | 11 | | 2 | 00/5575 : D0 02 | BNE ozunid_128 3225 | 9 MAINMEM.WILD.s 302 | Code | 11 | | 2 | 00/5577 : C6 3D | DEC {$3D} 3226 | 9 MAINMEM.WILD.s 303 | Code | 11 | | 2 | 00/5579 : C6 3C | ozunid_128 DEC {$3C} 3227 | 9 MAINMEM.WILD.s 304 | Code | 11 | | 1 | 00/557B : 28 | PLP 3228 | 9 MAINMEM.WILD.s 305 | Code | 11 | | 2 | 00/557C : 90 18 | BCC ozunid_131 3229 | 9 MAINMEM.WILD.s 306 | Code | 11 | | 2 | 00/557E : A0 00 | LDY #$00 ; If matches, copy matching filename 3230 | 9 MAINMEM.WILD.s 307 | Code | 11 | | 2 | 00/5580 : B1 3C | LDA ({$3C}),Y ; Length of filename 3231 | 9 MAINMEM.WILD.s 308 | Code | 11 | | 2 | 00/5582 : 29 0F | AND #$0F ; Mask out other ProDOS stuff 3232 | 9 MAINMEM.WILD.s 309 | Code | 11 | | 3 | 00/5584 : 8D 1B 56 | STA MATCHBUF 3233 | 9 MAINMEM.WILD.s 310 | Code | 11 | | 1 | 00/5587 : A8 | TAY 3234 | 9 MAINMEM.WILD.s 311 | Code | 11 | | 2 | 00/5588 : C0 00 | ozunid_129 CPY #$00 3235 | 9 MAINMEM.WILD.s 312 | Code | 11 | | 2 | 00/558A : F0 08 | BEQ ozunid_130 3236 | 9 MAINMEM.WILD.s 313 | Code | 11 | | 2 | 00/558C : B1 3C | LDA ({$3C}),Y 3237 | 9 MAINMEM.WILD.s 314 | Code | 11 | | 3 | 00/558E : 99 1B 56 | STA MATCHBUF,Y 3238 | 9 MAINMEM.WILD.s 315 | Code | 11 | | 1 | 00/5591 : 88 | DEY 3239 | 9 MAINMEM.WILD.s 316 | Code | 11 | | 2 | 00/5592 : 80 F4 | BRA ozunid_129 3240 | 9 MAINMEM.WILD.s 317 | Code | 11 | | 1 | 00/5594 : 38 | ozunid_130 SEC 3241 | 9 MAINMEM.WILD.s 318 | Code | 11 | | 1 | 00/5595 : 60 | RTS 3242 | 9 MAINMEM.WILD.s 319 | Code | 11 | | 2 | 00/5596 : A9 00 | ozunid_131 LDA #$00 3243 | 9 MAINMEM.WILD.s 320 | Code | 11 | | 2 | 00/5598 : A0 00 | LDY #$00 3244 | 9 MAINMEM.WILD.s 321 | Code | 11 | | 2 | 00/559A : 91 3C | STA ({$3C}),Y ; Pretend entry is deleted 3245 | 9 MAINMEM.WILD.s 322 | Code | 11 | | 1 | 00/559C : 18 | CLC 3246 | 9 MAINMEM.WILD.s 323 | Code | 11 | | 1 | 00/559D : 60 | RTS 3247 | 9 MAINMEM.WILD.s 324 | Empty | 11 | | 0 | 00/559E | 3248 | 9 MAINMEM.WILD.s 325 | Comment | 11 | | 0 | 00/559E | * From: http://6502.org/source/strings/patmatch.htm 3249 | 9 MAINMEM.WILD.s 326 | Comment | 11 | | 0 | 00/559E | * Input: A NUL-terminated, <255-length pattern at address PATTERN. 3250 | 9 MAINMEM.WILD.s 327 | Comment | 11 | | 0 | 00/559E | * A NUL-terminated, <255-length string pointed to by STR. 3251 | 9 MAINMEM.WILD.s 328 | Comment | 11 | | 0 | 00/559E | * Output: Carry bit = 1 if the string matches the pattern, = 0 if not. 3252 | 9 MAINMEM.WILD.s 329 | Comment | 11 | | 0 | 00/559E | * Notes: Clobbers A, X, Y. Each * in the pattern uses 4 bytes of stack. 3253 | 9 MAINMEM.WILD.s 330 | Empty | 11 | | 0 | 00/559E | 3254 | 9 MAINMEM.WILD.s 331 | Equivalence | 11 | | 0 | 00/559E | MATCH1 EQU '?' ; Matches exactly 1 character 3255 | 9 MAINMEM.WILD.s 332 | Equivalence | 11 | | 0 | 00/559E | MATCH1A EQU '#' ; Matches exactly 1 character (alternate) 3256 | 9 MAINMEM.WILD.s 333 | Equivalence | 11 | | 0 | 00/559E | MATCHN EQU '*' ; Matches any string (including "") 3257 | 9 MAINMEM.WILD.s 334 | Equivalence | 11 | | 0 | 00/559E | STR EQU {$3C} ; Pointer to string to match 3258 | 9 MAINMEM.WILD.s 335 | Empty | 11 | | 0 | 00/559E | 3259 | 9 MAINMEM.WILD.s 336 | Code | 11 | | 2 | 00/559E : A2 00 | MATCH LDX #$00 ; X is an index in the pattern 3260 | 9 MAINMEM.WILD.s 337 | Code | 11 | | 2 | 00/55A0 : A0 FF | LDY #$FF ; Y is an index in the string 3261 | 9 MAINMEM.WILD.s 338 | Code | 11 | | 3 | 00/55A2 : BD DB 55 | ozunid_132 LDA SEGBUF+1,X ; Look at next pattern character 3262 | 9 MAINMEM.WILD.s 339 | Code | 11 | | 2 | 00/55A5 : C9 2A | CMP #{'*'} ; Is it a star? 3263 | 9 MAINMEM.WILD.s 340 | Code | 11 | | 2 | 00/55A7 : F0 17 | BEQ _STAR ; Yes, do the complicated stuff 3264 | 9 MAINMEM.WILD.s 341 | Code | 11 | | 1 | 00/55A9 : C8 | INY ; No, let's look at the string 3265 | 9 MAINMEM.WILD.s 342 | Code | 11 | | 2 | 00/55AA : C9 3F | CMP #{'?'} ; Is the pattern caracter a ques? 3266 | 9 MAINMEM.WILD.s 343 | Code | 11 | | 2 | 00/55AC : F0 04 | BEQ _QUEST ; Yes 3267 | 9 MAINMEM.WILD.s 344 | Code | 11 | | 2 | 00/55AE : C9 23 | CMP #{'#'} ; Alternate pattern char (hash) 3268 | 9 MAINMEM.WILD.s 345 | Code | 11 | | 2 | 00/55B0 : D0 04 | BNE _REG ; No 3269 | 9 MAINMEM.WILD.s 346 | Code | 11 | | 2 | 00/55B2 : B1 3C | _QUEST LDA ({{$3C}}),Y ; Yes, so it will match anything 3270 | 9 MAINMEM.WILD.s 347 | Code | 11 | | 2 | 00/55B4 : F0 22 | BEQ _FAIL ; except the end of string 3271 | 9 MAINMEM.WILD.s 348 | Code | 11 | | 2 | 00/55B6 : D1 3C | _REG CMP ({{$3C}}),Y ; Are both characters the same? 3272 | 9 MAINMEM.WILD.s 349 | Code | 11 | | 2 | 00/55B8 : D0 1E | BNE _FAIL ; No, so no match 3273 | 9 MAINMEM.WILD.s 350 | Code | 11 | | 1 | 00/55BA : E8 | INX ; Yes, keep checking 3274 | 9 MAINMEM.WILD.s 351 | Code | 11 | | 2 | 00/55BB : C9 00 | CMP #0 ; Are we at end of string? 3275 | 9 MAINMEM.WILD.s 352 | Code | 11 | | 2 | 00/55BD : D0 E3 | BNE ozunid_132 ; Not yet, loop 3276 | 9 MAINMEM.WILD.s 353 | Code | 11 | | 1 | 00/55BF : 60 | ozunid_133 RTS ; Success, return with C=1 3277 | 9 MAINMEM.WILD.s 354 | Empty | 11 | | 0 | 00/55C0 | 3278 | 9 MAINMEM.WILD.s 355 | Code | 11 | | 1 | 00/55C0 : E8 | _STAR INX ; Skip star in pattern 3279 | 9 MAINMEM.WILD.s 356 | Code | 11 | | 3 | 00/55C1 : DD DB 55 | CMP SEGBUF+1,X ; String of stars equals one star 3280 | 9 MAINMEM.WILD.s 357 | Code | 11 | | 2 | 00/55C4 : F0 FA | BEQ _STAR ; so skip them also 3281 | 9 MAINMEM.WILD.s 358 | Code | 11 | | 1 | 00/55C6 : 8A | _STLOOP TXA ; We first try to match with * = "" 3282 | 9 MAINMEM.WILD.s 359 | Code | 11 | | 1 | 00/55C7 : 48 | PHA ; and grow it by 1 character every 3283 | 9 MAINMEM.WILD.s 360 | Code | 11 | | 1 | 00/55C8 : 98 | TYA ; time we loop 3284 | 9 MAINMEM.WILD.s 361 | Code | 11 | | 1 | 00/55C9 : 48 | PHA ; Save X and Y on stack 3285 | 9 MAINMEM.WILD.s 362 | Code | 11 | | 3 | 00/55CA : 20 A2 55 | JSR ozunid_132 ; Recursive call 3286 | 9 MAINMEM.WILD.s 363 | Code | 11 | | 1 | 00/55CD : 68 | PLA ; Restore X and Y 3287 | 9 MAINMEM.WILD.s 364 | Code | 11 | | 1 | 00/55CE : A8 | TAY 3288 | 9 MAINMEM.WILD.s 365 | Code | 11 | | 1 | 00/55CF : 68 | PLA 3289 | 9 MAINMEM.WILD.s 366 | Code | 11 | | 1 | 00/55D0 : AA | TAX 3290 | 9 MAINMEM.WILD.s 367 | Code | 11 | | 2 | 00/55D1 : B0 EC | BCS ozunid_133 ; We found a match, return with C=1 3291 | 9 MAINMEM.WILD.s 368 | Code | 11 | | 1 | 00/55D3 : C8 | INY ; No match yet, try to grow * string 3292 | 9 MAINMEM.WILD.s 369 | Code | 11 | | 2 | 00/55D4 : B1 3C | LDA ({{$3C}}),Y ; Are we at the end of string? 3293 | 9 MAINMEM.WILD.s 370 | Code | 11 | | 2 | 00/55D6 : D0 EE | BNE _STLOOP ; Not yet, add a character 3294 | 9 MAINMEM.WILD.s 371 | Code | 11 | | 1 | 00/55D8 : 18 | _FAIL CLC ; Yes, no match found, return with C=0 3295 | 9 MAINMEM.WILD.s 372 | Code | 11 | | 1 | 00/55D9 : 60 | RTS 3296 | 9 MAINMEM.WILD.s 373 | Empty | 11 | | 0 | 00/55DA | 3297 | 9 MAINMEM.WILD.s 374 | Data | 11 | | 65 | 00/55DA : 00 00 00 00 | SEGBUF DS 65 ; For storing path segments (Pascal str) | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 | 3298 | 9 MAINMEM.WILD.s 375 | Data | 11 | | 65 | 00/561B : 00 00 00 00 | MATCHBUF DS 65 ; For storing match results (Pascal str) | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 | 3299 | 9 MAINMEM.WILD.s 376 | Empty | 11 | | 0 | 00/565C | 3300 | 9 MAINMEM.WILD.s 377 | Empty | 11 | | 0 | 00/565C | 3301 | 9 MAINMEM.WILD.s 378 | Empty | 11 | | 0 | 00/565C | 3302 | 9 MAINMEM.WILD.s 379 | Empty | 11 | | 0 | 00/565C | 3303 | 9 MAINMEM.WILD.s 380 | Empty | 11 | | 0 | 00/565C | 3304 | 9 MAINMEM.WILD.s 381 | Empty | 11 | | 0 | 00/565C | 3305 | 9 MAINMEM.WILD.s 382 | Empty | 11 | | 0 | 00/565C | 3306 | 9 MAINMEM.WILD.s 383 | Empty | 11 | | 0 | 00/565C | 3307 | 9 MAINMEM.WILD.s 384 | Empty | 11 | | 0 | 00/565C | 3308 | 9 MAINMEM.WILD.s 385 | Empty | 11 | | 0 | 00/565C | 3309 | 9 MAINMEM.WILD.s 386 | Empty | 11 | | 0 | 00/565C | 3310 | 9 MAINMEM.WILD.s 387 | Empty | 11 | | 0 | 00/565C | 3311 | 9 MAINMEM.WILD.s 388 | Empty | 11 | | 0 | 00/565C | 3312 | 9 MAINMEM.WILD.s 389 | Empty | 11 | | 0 | 00/565C | 3313 | 9 MAINMEM.WILD.s 390 | Empty | 11 | | 0 | 00/565C | 3314 | 9 MAINMEM.WILD.s 391 | Empty | 11 | | 0 | 00/565C | 3315 | 1 applecorn.s 197 | Directive | 11 | | 0 | 00/565C | PUT MAINMEM.LISTS 3316 | 10 MAINMEM.LISTS.s 1 | Comment | 11 | | 0 | 00/565C | * MAINMEM.LISTS.S 3317 | 10 MAINMEM.LISTS.s 2 | Comment | 11 | | 0 | 00/565C | * (c) Bobbi 2021 GPLv3 3318 | 10 MAINMEM.LISTS.s 3 | Comment | 11 | | 0 | 00/565C | * 3319 | 10 MAINMEM.LISTS.s 4 | Comment | 11 | | 0 | 00/565C | * ProDOS parameter list for MLI calls. 3320 | 10 MAINMEM.LISTS.s 5 | Empty | 11 | | 0 | 00/565C | 3321 | 10 MAINMEM.LISTS.s 6 | Data | 11 | | 1 | 00/565C : 03 | OPENPL HEX 03 ; Number of parameters 3322 | 10 MAINMEM.LISTS.s 7 | Data | 11 | | 2 | 00/565D : 00 00 | DW $0000 ; Pointer to filename 3323 | 10 MAINMEM.LISTS.s 8 | Data | 11 | | 2 | 00/565F : 00 0C | DW {$0C00} ; Pointer to IO buffer 3324 | 10 MAINMEM.LISTS.s 9 | Data | 11 | | 1 | 00/5661 : 00 | DB $00 ; Reference number returned 3325 | 10 MAINMEM.LISTS.s 10 | Empty | 11 | | 0 | 00/5662 | 3326 | 10 MAINMEM.LISTS.s 11 | Data | 11 | | 1 | 00/5662 : 03 | OPENPL2 HEX 03 ; Number of parameters 3327 | 10 MAINMEM.LISTS.s 12 | Data | 11 | | 2 | 00/5663 : 00 00 | DW $0000 ; Pointer to filename 3328 | 10 MAINMEM.LISTS.s 13 | Data | 11 | | 2 | 00/5665 : 00 00 | DW $0000 ; Pointer to IO buffer 3329 | 10 MAINMEM.LISTS.s 14 | Data | 11 | | 1 | 00/5667 : 00 | DB $00 ; Reference number returned 3330 | 10 MAINMEM.LISTS.s 15 | Empty | 11 | | 0 | 00/5668 | 3331 | 10 MAINMEM.LISTS.s 16 | Data | 11 | | 1 | 00/5668 : 07 | CREATEPL HEX 07 ; Number of parameters 3332 | 10 MAINMEM.LISTS.s 17 | Data | 11 | | 2 | 00/5669 : 00 00 | DW $0000 ; Pointer to filename 3333 | 10 MAINMEM.LISTS.s 18 | Data | 11 | | 1 | 00/566B : 00 | DB $00 ; Access 3334 | 10 MAINMEM.LISTS.s 19 | Data | 11 | | 1 | 00/566C : 00 | DB $00 ; File type 3335 | 10 MAINMEM.LISTS.s 20 | Data | 11 | | 2 | 00/566D : 00 00 | DW $0000 ; Aux type 3336 | 10 MAINMEM.LISTS.s 21 | Data | 11 | | 1 | 00/566F : 00 | DB $00 ; Storage type 3337 | 10 MAINMEM.LISTS.s 22 | Data | 11 | | 2 | 00/5670 : 00 00 | DW $0000 ; Create date 3338 | 10 MAINMEM.LISTS.s 23 | Data | 11 | | 2 | 00/5672 : 00 00 | DW $0000 ; Create time 3339 | 10 MAINMEM.LISTS.s 24 | Empty | 11 | | 0 | 00/5674 | 3340 | 10 MAINMEM.LISTS.s 25 | Data | 11 | | 1 | 00/5674 : 01 | DESTPL HEX 01 ; Number of parameters 3341 | 10 MAINMEM.LISTS.s 26 | Data | 11 | | 2 | 00/5675 : 00 00 | DW $0000 ; Pointer to filename 3342 | 10 MAINMEM.LISTS.s 27 | Empty | 11 | | 0 | 00/5677 | 3343 | 10 MAINMEM.LISTS.s 28 | Data | 11 | | 1 | 00/5677 : 02 | RENPL HEX 02 ; Number of parameters 3344 | 10 MAINMEM.LISTS.s 29 | Data | 11 | | 2 | 00/5678 : 00 00 | DW $0000 ; Pointer to existing name 3345 | 10 MAINMEM.LISTS.s 30 | Data | 11 | | 2 | 00/567A : 00 00 | DW $0000 ; Pointer to new filename 3346 | 10 MAINMEM.LISTS.s 31 | Empty | 11 | | 0 | 00/567C | 3347 | 10 MAINMEM.LISTS.s 32 | Data | 11 | | 1 | 00/567C : 04 | READPL HEX 04 ; Number of parameters 3348 | 10 MAINMEM.LISTS.s 33 | Data | 11 | | 1 | 00/567D : 00 | DB $00 ; Reference number 3349 | 10 MAINMEM.LISTS.s 34 | Data | 11 | | 2 | 00/567E : 00 90 | DW {$9000} ; Pointer to data buffer 3350 | 10 MAINMEM.LISTS.s 35 | Data | 11 | | 2 | 00/5680 : 00 02 | DW 512 ; Request count 3351 | 10 MAINMEM.LISTS.s 36 | Data | 11 | | 2 | 00/5682 : 00 00 | DW $0000 ; Trans count 3352 | 10 MAINMEM.LISTS.s 37 | Empty | 11 | | 0 | 00/5684 | 3353 | 10 MAINMEM.LISTS.s 38 | Data | 11 | | 1 | 00/5684 : 04 | READPL2 HEX 04 ; Number of parameters 3354 | 10 MAINMEM.LISTS.s 39 | Data | 11 | | 1 | 00/5685 : 00 | DB #00 ; Reference number 3355 | 10 MAINMEM.LISTS.s 40 | Data | 11 | | 2 | 00/5686 : 00 90 | DW {$9000} ; Pointer to data buffer 3356 | 10 MAINMEM.LISTS.s 41 | Data | 11 | | 2 | 00/5688 : 01 00 | DW 1 ; Request count 3357 | 10 MAINMEM.LISTS.s 42 | Data | 11 | | 2 | 00/568A : 00 00 | DW $0000 ; Trans count 3358 | 10 MAINMEM.LISTS.s 43 | Empty | 11 | | 0 | 00/568C | 3359 | 10 MAINMEM.LISTS.s 44 | Comment | 11 | | 0 | 00/568C | * Used for file copy only because we can't trash BLKBUF 3360 | 10 MAINMEM.LISTS.s 45 | Data | 11 | | 1 | 00/568C : 04 | RDPLCP HEX 04 ; Number of parameters 3361 | 10 MAINMEM.LISTS.s 46 | Data | 11 | | 1 | 00/568D : 00 | DB $00 ; Reference number 3362 | 10 MAINMEM.LISTS.s 47 | Data | 11 | | 2 | 00/568E : 00 92 | DW {$9200} ; Pointer to data buffer 3363 | 10 MAINMEM.LISTS.s 48 | Data | 11 | | 2 | 00/5690 : 00 02 | DW 512 ; Request count 3364 | 10 MAINMEM.LISTS.s 49 | Data | 11 | | 2 | 00/5692 : 00 00 | DW $0000 ; Trans count 3365 | 10 MAINMEM.LISTS.s 50 | Empty | 11 | | 0 | 00/5694 | 3366 | 10 MAINMEM.LISTS.s 51 | Data | 11 | | 1 | 00/5694 : 04 | WRITEPL HEX 04 ; Number of parameters 3367 | 10 MAINMEM.LISTS.s 52 | Data | 11 | | 1 | 00/5695 : 01 | DB $01 ; Reference number 3368 | 10 MAINMEM.LISTS.s 53 | Data | 11 | | 2 | 00/5696 : 00 90 | DW {$9000} ; Pointer to data buffer 3369 | 10 MAINMEM.LISTS.s 54 | Data | 11 | | 2 | 00/5698 : 00 00 | DW $0000 ; Request count 3370 | 10 MAINMEM.LISTS.s 55 | Data | 11 | | 2 | 00/569A : 00 00 | DW $0000 ; Trans count 3371 | 10 MAINMEM.LISTS.s 56 | Empty | 11 | | 0 | 00/569C | 3372 | 10 MAINMEM.LISTS.s 57 | Comment | 11 | | 0 | 00/569C | * Used for file copy only because we can't trash BLKBUF 3373 | 10 MAINMEM.LISTS.s 58 | Data | 11 | | 1 | 00/569C : 04 | WRTPLCP HEX 04 ; Number of parameters 3374 | 10 MAINMEM.LISTS.s 59 | Data | 11 | | 1 | 00/569D : 01 | DB $01 ; Reference number 3375 | 10 MAINMEM.LISTS.s 60 | Data | 11 | | 2 | 00/569E : 00 92 | DW {$9200} ; Pointer to data buffer 3376 | 10 MAINMEM.LISTS.s 61 | Data | 11 | | 2 | 00/56A0 : 00 00 | DW $0000 ; Request count 3377 | 10 MAINMEM.LISTS.s 62 | Data | 11 | | 2 | 00/56A2 : 00 00 | DW $0000 ; Trans count 3378 | 10 MAINMEM.LISTS.s 63 | Empty | 11 | | 0 | 00/56A4 | 3379 | 10 MAINMEM.LISTS.s 64 | Data | 11 | | 1 | 00/56A4 : 01 | CLSPL HEX 01 ; Number of parameters 3380 | 10 MAINMEM.LISTS.s 65 | Data | 11 | | 1 | 00/56A5 : 00 | DB $00 ; Reference number 3381 | 10 MAINMEM.LISTS.s 66 | Empty | 11 | | 0 | 00/56A6 | 3382 | 10 MAINMEM.LISTS.s 67 | Data | 11 | | 1 | 00/56A6 : 01 | FLSHPL HEX 01 ; Number of parameters 3383 | 10 MAINMEM.LISTS.s 68 | Data | 11 | | 1 | 00/56A7 : 00 | DB $00 ; Reference number 3384 | 10 MAINMEM.LISTS.s 69 | Empty | 11 | | 0 | 00/56A8 | 3385 | 10 MAINMEM.LISTS.s 70 | Data | 11 | | 1 | 00/56A8 : 02 | ONLNPL HEX 02 ; Number of parameters 3386 | 10 MAINMEM.LISTS.s 71 | Data | 11 | | 1 | 00/56A9 : 00 | DB $00 ; Unit num 3387 | 10 MAINMEM.LISTS.s 72 | Data | 11 | | 2 | 00/56AA : 3F 02 | DW {$023F} ; Buffer 3388 | 10 MAINMEM.LISTS.s 73 | Empty | 11 | | 0 | 00/56AC | 3389 | 10 MAINMEM.LISTS.s 74 | Data | 11 | | 1 | 00/56AC : 01 | GSPFXPL HEX 01 ; Number of parameters 3390 | 10 MAINMEM.LISTS.s 75 | Data | 11 | | 2 | 00/56AD : 3E 02 | DW {$023E} ; Buffer 3391 | 10 MAINMEM.LISTS.s 76 | Empty | 11 | | 0 | 00/56AF | 3392 | 10 MAINMEM.LISTS.s 77 | Data | 11 | | 1 | 00/56AF : 01 | GPFXPL HEX 01 ; Number of parameters 3393 | 10 MAINMEM.LISTS.s 78 | Data | 11 | | 2 | 00/56B0 : 49 53 | DW PREFIX ; Buffer 3394 | 10 MAINMEM.LISTS.s 79 | Empty | 11 | | 0 | 00/56B2 | 3395 | 10 MAINMEM.LISTS.s 80 | Data | 11 | | 1 | 00/56B2 : 01 | SPFXPL HEX 01 ; Number of parameters 3396 | 10 MAINMEM.LISTS.s 81 | Data | 11 | | 2 | 00/56B3 : 00 03 | DW {{$0300}} ; Buffer 3397 | 10 MAINMEM.LISTS.s 82 | Empty | 11 | | 0 | 00/56B5 | 3398 | 10 MAINMEM.LISTS.s 83 | Data | 11 | | 1 | 00/56B5 : 02 | GMARKPL HEX 02 ; Number of parameters 3399 | 10 MAINMEM.LISTS.s 84 | Data | 11 | | 1 | 00/56B6 : 00 | DB $00 ; File reference number 3400 | 10 MAINMEM.LISTS.s 85 | Data | 11 | | 1 | 00/56B7 : 00 | DB $00 ; Mark (24 bit) 3401 | 10 MAINMEM.LISTS.s 86 | Data | 11 | | 1 | 00/56B8 : 00 | DB $00 3402 | 10 MAINMEM.LISTS.s 87 | Data | 11 | | 1 | 00/56B9 : 00 | DB $00 3403 | 10 MAINMEM.LISTS.s 88 | Empty | 11 | | 0 | 00/56BA | 3404 | 10 MAINMEM.LISTS.s 89 | Data | 11 | | 1 | 00/56BA : 02 | GEOFPL HEX 02 ; Number of parameters 3405 | 10 MAINMEM.LISTS.s 90 | Data | 11 | | 1 | 00/56BB : 00 | DB $00 ; File reference number 3406 | 10 MAINMEM.LISTS.s 91 | Data | 11 | | 1 | 00/56BC : 00 | DB $00 ; EOF (24 bit) 3407 | 10 MAINMEM.LISTS.s 92 | Data | 11 | | 1 | 00/56BD : 00 | DB $00 3408 | 10 MAINMEM.LISTS.s 93 | Data | 11 | | 1 | 00/56BE : 00 | DB $00 3409 | 10 MAINMEM.LISTS.s 94 | Empty | 11 | | 0 | 00/56BF | 3410 | 10 MAINMEM.LISTS.s 95 | Data | 11 | | 1 | 00/56BF : 0A | GINFOPL HEX 0A ; Number of parameters 3411 | 10 MAINMEM.LISTS.s 96 | Data | 11 | | 2 | 00/56C0 : 00 00 | DW $0000 ; Pointer to filename 3412 | 10 MAINMEM.LISTS.s 97 | Data | 11 | | 1 | 00/56C2 : 00 | DB $00 ; Access 3413 | 10 MAINMEM.LISTS.s 98 | Data | 11 | | 1 | 00/56C3 : 00 | DB $00 ; File type 3414 | 10 MAINMEM.LISTS.s 99 | Data | 11 | | 2 | 00/56C4 : 00 00 | DW $0000 ; Aux type 3415 | 10 MAINMEM.LISTS.s 100 | Data | 11 | | 1 | 00/56C6 : 00 | DB $00 ; Storage type 3416 | 10 MAINMEM.LISTS.s 101 | Data | 11 | | 2 | 00/56C7 : 00 00 | DW $0000 ; Blocks used 3417 | 10 MAINMEM.LISTS.s 102 | Data | 11 | | 2 | 00/56C9 : 00 00 | DW $0000 ; Mod date 3418 | 10 MAINMEM.LISTS.s 103 | Data | 11 | | 2 | 00/56CB : 00 00 | DW $0000 ; Mod time 3419 | 10 MAINMEM.LISTS.s 104 | Data | 11 | | 2 | 00/56CD : 00 00 | DW $0000 ; Create date 3420 | 10 MAINMEM.LISTS.s 105 | Data | 11 | | 2 | 00/56CF : 00 00 | DW $0000 ; Create time 3421 | 10 MAINMEM.LISTS.s 106 | Empty | 11 | | 0 | 00/56D1 | 3422 | 10 MAINMEM.LISTS.s 107 | Data | 11 | | 1 | 00/56D1 : 04 | QUITPL HEX 04 ; Number of parameters 3423 | 10 MAINMEM.LISTS.s 108 | Data | 11 | | 1 | 00/56D2 : 00 | DB $00 3424 | 10 MAINMEM.LISTS.s 109 | Data | 11 | | 2 | 00/56D3 : 00 00 | DW $0000 3425 | 10 MAINMEM.LISTS.s 110 | Data | 11 | | 1 | 00/56D5 : 00 | DB $00 3426 | 10 MAINMEM.LISTS.s 111 | Data | 11 | | 2 | 00/56D6 : 00 00 | DW $0000 3427 | 10 MAINMEM.LISTS.s 112 | Empty | 11 | | 0 | 00/56D8 | 3428 | 10 MAINMEM.LISTS.s 113 | Empty | 11 | | 0 | 00/56D8 | 3429 | 10 MAINMEM.LISTS.s 114 | Empty | 11 | | 0 | 00/56D8 | 3430 | 10 MAINMEM.LISTS.s 115 | Empty | 11 | | 0 | 00/56D8 | 3431 | 10 MAINMEM.LISTS.s 116 | Empty | 11 | | 0 | 00/56D8 | 3432 | 10 MAINMEM.LISTS.s 117 | Empty | 11 | | 0 | 00/56D8 | 3433 | 10 MAINMEM.LISTS.s 118 | Empty | 11 | | 0 | 00/56D8 | 3434 | 10 MAINMEM.LISTS.s 119 | Empty | 11 | | 0 | 00/56D8 | 3435 | 10 MAINMEM.LISTS.s 120 | Empty | 11 | | 0 | 00/56D8 | 3436 | 10 MAINMEM.LISTS.s 121 | Empty | 11 | | 0 | 00/56D8 | 3437 | 10 MAINMEM.LISTS.s 122 | Empty | 11 | | 0 | 00/56D8 | 3438 | 10 MAINMEM.LISTS.s 123 | Empty | 11 | | 0 | 00/56D8 | 3439 | 10 MAINMEM.LISTS.s 124 | Empty | 11 | | 0 | 00/56D8 | 3440 | 10 MAINMEM.LISTS.s 125 | Empty | 11 | | 0 | 00/56D8 | 3441 | 10 MAINMEM.LISTS.s 126 | Empty | 11 | | 0 | 00/56D8 | 3442 | 10 MAINMEM.LISTS.s 127 | Empty | 11 | | 0 | 00/56D8 | 3443 | 10 MAINMEM.LISTS.s 128 | Empty | 11 | | 0 | 00/56D8 | 3444 | 10 MAINMEM.LISTS.s 129 | Empty | 11 | | 0 | 00/56D8 | 3445 | 10 MAINMEM.LISTS.s 130 | Empty | 11 | | 0 | 00/56D8 | 3446 | 10 MAINMEM.LISTS.s 131 | Empty | 11 | | 0 | 00/56D8 | 3447 | 1 applecorn.s 198 | Directive | 11 | | 0 | 00/56D8 | PUT MAINMEM.MISC 3448 | 11 MAINMEM.MISC.s 1 | Comment | 11 | | 0 | 00/56D8 | * MAINMEM.MISC.S 3449 | 11 MAINMEM.MISC.s 2 | Comment | 11 | | 0 | 00/56D8 | * (c) Bobbi 2021 GPLv3 3450 | 11 MAINMEM.MISC.s 3 | Comment | 11 | | 0 | 00/56D8 | * 3451 | 11 MAINMEM.MISC.s 4 | Comment | 11 | | 0 | 00/56D8 | * Miscellaneous routines used by main memory code. 3452 | 11 MAINMEM.MISC.s 5 | Empty | 11 | | 0 | 00/56D8 | 3453 | 11 MAINMEM.MISC.s 6 | Comment | 11 | | 0 | 00/56D8 | * Copy a block of main memory 3454 | 11 MAINMEM.MISC.s 7 | Comment | 11 | | 0 | 00/56D8 | * A1L/A1H: Start address 3455 | 11 MAINMEM.MISC.s 8 | Comment | 11 | | 0 | 00/56D8 | * A2L/A2H: End address 3456 | 11 MAINMEM.MISC.s 9 | Comment | 11 | | 0 | 00/56D8 | * A4L/A4H: Destination start address 3457 | 11 MAINMEM.MISC.s 10 | Code | 11 | | 2 | 00/56D8 : B2 3C | MEMCPY LDA ({$3C}) 3458 | 11 MAINMEM.MISC.s 11 | Code | 11 | | 2 | 00/56DA : 92 42 | STA ({$42}) 3459 | 11 MAINMEM.MISC.s 12 | Code | 11 | | 2 | 00/56DC : A5 3D | LDA {$3D} 3460 | 11 MAINMEM.MISC.s 13 | Code | 11 | | 2 | 00/56DE : C5 3F | CMP {$3F} 3461 | 11 MAINMEM.MISC.s 14 | Code | 11 | | 2 | 00/56E0 : D0 07 | BNE ozunid_135 3462 | 11 MAINMEM.MISC.s 15 | Code | 11 | | 2 | 00/56E2 : A5 3C | LDA {$3C} 3463 | 11 MAINMEM.MISC.s 16 | Code | 11 | | 2 | 00/56E4 : C5 3E | CMP {$3E} 3464 | 11 MAINMEM.MISC.s 17 | Code | 11 | | 2 | 00/56E6 : D0 01 | BNE ozunid_135 3465 | 11 MAINMEM.MISC.s 18 | Code | 11 | | 1 | 00/56E8 : 60 | ozunid_134 RTS 3466 | 11 MAINMEM.MISC.s 19 | Code | 11 | | 2 | 00/56E9 : E6 3C | ozunid_135 INC {$3C} 3467 | 11 MAINMEM.MISC.s 20 | Code | 11 | | 2 | 00/56EB : D0 02 | BNE ozunid_136 3468 | 11 MAINMEM.MISC.s 21 | Code | 11 | | 2 | 00/56ED : E6 3D | INC {$3D} 3469 | 11 MAINMEM.MISC.s 22 | Code | 11 | | 2 | 00/56EF : E6 42 | ozunid_136 INC {$42} 3470 | 11 MAINMEM.MISC.s 23 | Code | 11 | | 2 | 00/56F1 : D0 02 | BNE ozunid_137 3471 | 11 MAINMEM.MISC.s 24 | Code | 11 | | 2 | 00/56F3 : E6 43 | INC {$43} 3472 | 11 MAINMEM.MISC.s 25 | Code | 11 | | 2 | 00/56F5 : 80 E1 | ozunid_137 BRA MEMCPY 3473 | 11 MAINMEM.MISC.s 26 | Empty | 11 | | 0 | 00/56F7 | 3474 | 11 MAINMEM.MISC.s 27 | Comment | 11 | | 0 | 00/56F7 | * Copy 512 bytes from BLKBUF to AUXBLK in aux LC 3475 | 11 MAINMEM.MISC.s 28 | Macro | 11 | | 0 | 00/56F7 | COPYAUXBLK >>> ALTZP ; Alt ZP & Alt LC on 3476 | 11 MAINMEM.MISC.s 28 | Code | 11 | | 1 | 00/56F7 : 78 | SEI ; Disable IRQ when AltZP on 3477 | 11 MAINMEM.MISC.s 28 | Code | 11 | | 3 | 00/56F8 : AD 8B C0 | LDA $C08B ; R/W LC bank 1 3478 | 11 MAINMEM.MISC.s 28 | Code | 11 | | 3 | 00/56FB : AD 8B C0 | LDA $C08B 3479 | 11 MAINMEM.MISC.s 28 | Code | 11 | | 3 | 00/56FE : 8D 09 C0 | STA $C009 ; Alt ZP and LC 3480 | 11 MAINMEM.MISC.s 29 | Code | 11 | | 2 | 00/5701 : A0 00 | LDY #$00 3481 | 11 MAINMEM.MISC.s 30 | Code | 11 | | 3 | 00/5703 : 8D 05 C0 | STA $C005 ; Write aux mem 3482 | 11 MAINMEM.MISC.s 31 | Code | 11 | | 3 | 00/5706 : B9 00 90 | ozunid_138 LDA {$9000}+$000,Y 3483 | 11 MAINMEM.MISC.s 32 | Code | 11 | | 3 | 00/5709 : 99 54 EE | STA AUXBLK+$000,Y 3484 | 11 MAINMEM.MISC.s 33 | Code | 11 | | 3 | 00/570C : B9 00 91 | LDA {$9000}+$100,Y 3485 | 11 MAINMEM.MISC.s 34 | Code | 11 | | 3 | 00/570F : 99 54 EF | STA AUXBLK+$100,Y 3486 | 11 MAINMEM.MISC.s 35 | Code | 11 | | 1 | 00/5712 : C8 | INY 3487 | 11 MAINMEM.MISC.s 36 | Code | 11 | | 2 | 00/5713 : D0 F1 | BNE ozunid_138 3488 | 11 MAINMEM.MISC.s 37 | Code | 11 | | 3 | 00/5715 : 8D 04 C0 | STA $C004 ; Write main mem 3489 | 11 MAINMEM.MISC.s 38 | Macro | 11 | | 0 | 00/5718 | ozunid_139 >>> MAINZP ; Alt ZP off, ROM back in 3490 | 11 MAINMEM.MISC.s 38 | Code | 11 | | 3 | 00/5718 : 8D 08 C0 | STA $C008 ; Main ZP and LC 3491 | 11 MAINMEM.MISC.s 38 | Code | 11 | | 3 | 00/571B : AD 81 C0 | LDA $C081 ; Bank ROM back in 3492 | 11 MAINMEM.MISC.s 38 | Code | 11 | | 3 | 00/571E : AD 81 C0 | LDA $C081 3493 | 11 MAINMEM.MISC.s 38 | Code | 11 | | 1 | 00/5721 : 58 | CLI ; Turn IRQ back on 3494 | 11 MAINMEM.MISC.s 39 | Code | 11 | | 1 | 00/5722 : 60 | RTS 3495 | 11 MAINMEM.MISC.s 40 | Empty | 11 | | 0 | 00/5723 | 3496 | 11 MAINMEM.MISC.s 41 | Comment | 11 | | 0 | 00/5723 | * Search FILEREFS for value in A 3497 | 11 MAINMEM.MISC.s 42 | Comment | 11 | | 0 | 00/5723 | * On return, buffer number is in X (or $FF if no bufs) 3498 | 11 MAINMEM.MISC.s 43 | Code | 11 | | 2 | 00/5723 : A2 00 | FINDBUF LDX #$00 3499 | 11 MAINMEM.MISC.s 44 | Code | 11 | | 3 | 00/5725 : DD 04 58 | ozunid_140 CMP FILEREFS,X 3500 | 11 MAINMEM.MISC.s 45 | Code | 11 | | 2 | 00/5728 : F0 07 | BEQ _END 3501 | 11 MAINMEM.MISC.s 46 | Code | 11 | | 1 | 00/572A : E8 | INX 3502 | 11 MAINMEM.MISC.s 47 | Code | 11 | | 2 | 00/572B : E0 04 | CPX #$04 3503 | 11 MAINMEM.MISC.s 48 | Code | 11 | | 2 | 00/572D : D0 F6 | BNE ozunid_140 3504 | 11 MAINMEM.MISC.s 49 | Code | 11 | | 2 | 00/572F : A2 FF | LDX #$FF ; $FF for not found 3505 | 11 MAINMEM.MISC.s 50 | Code | 11 | | 1 | 00/5731 : 60 | _END RTS 3506 | 11 MAINMEM.MISC.s 51 | Empty | 11 | | 0 | 00/5732 | 3507 | 11 MAINMEM.MISC.s 52 | Comment | 11 | | 0 | 00/5732 | * Obtain I/O buffer address 3508 | 11 MAINMEM.MISC.s 53 | Comment | 11 | | 0 | 00/5732 | * On entry: buffer number in X 3509 | 11 MAINMEM.MISC.s 54 | Comment | 11 | | 0 | 00/5732 | * On exit: buffer address in AY 3510 | 11 MAINMEM.MISC.s 55 | Comment | 11 | | 0 | 00/5732 | * Carry set if no bufs, clear otherwise 3511 | 11 MAINMEM.MISC.s 56 | Code | 11 | | 2 | 00/5732 : E0 00 | BUFADDR CPX #$00 3512 | 11 MAINMEM.MISC.s 57 | Code | 11 | | 2 | 00/5734 : D0 06 | BNE ozunid_141 3513 | 11 MAINMEM.MISC.s 58 | Code | 11 | | 2 | 00/5736 : A9 00 | LDA #<{$1000} 3514 | 11 MAINMEM.MISC.s 59 | Code | 11 | | 2 | 00/5738 : A0 10 | LDY #>{$1000} 3515 | 11 MAINMEM.MISC.s 60 | Code | 11 | | 2 | 00/573A : 80 1C | BRA ozunid_144 3516 | 11 MAINMEM.MISC.s 61 | Code | 11 | | 2 | 00/573C : E0 01 | ozunid_141 CPX #$01 3517 | 11 MAINMEM.MISC.s 62 | Code | 11 | | 2 | 00/573E : D0 06 | BNE ozunid_142 3518 | 11 MAINMEM.MISC.s 63 | Code | 11 | | 2 | 00/5740 : A9 00 | LDA #<{$1400} 3519 | 11 MAINMEM.MISC.s 64 | Code | 11 | | 2 | 00/5742 : A0 14 | LDY #>{$1400} 3520 | 11 MAINMEM.MISC.s 65 | Code | 11 | | 2 | 00/5744 : 80 12 | BRA ozunid_144 3521 | 11 MAINMEM.MISC.s 66 | Code | 11 | | 2 | 00/5746 : E0 02 | ozunid_142 CPX #$02 3522 | 11 MAINMEM.MISC.s 67 | Code | 11 | | 2 | 00/5748 : D0 06 | BNE ozunid_143 3523 | 11 MAINMEM.MISC.s 68 | Code | 11 | | 2 | 00/574A : A9 00 | LDA #<{$1800} 3524 | 11 MAINMEM.MISC.s 69 | Code | 11 | | 2 | 00/574C : A0 18 | LDY #>{$1800} 3525 | 11 MAINMEM.MISC.s 70 | Code | 11 | | 2 | 00/574E : 80 08 | BRA ozunid_144 3526 | 11 MAINMEM.MISC.s 71 | Code | 11 | | 2 | 00/5750 : E0 03 | ozunid_143 CPX #$03 3527 | 11 MAINMEM.MISC.s 72 | Code | 11 | | 2 | 00/5752 : D0 06 | BNE _NOBUFS 3528 | 11 MAINMEM.MISC.s 73 | Code | 11 | | 2 | 00/5754 : A9 00 | LDA #<{$1C00} 3529 | 11 MAINMEM.MISC.s 74 | Code | 11 | | 2 | 00/5756 : A0 1C | LDY #>{$1C00} 3530 | 11 MAINMEM.MISC.s 75 | Code | 11 | | 1 | 00/5758 : 18 | ozunid_144 CLC 3531 | 11 MAINMEM.MISC.s 76 | Code | 11 | | 1 | 00/5759 : 60 | RTS 3532 | 11 MAINMEM.MISC.s 77 | Code | 11 | | 1 | 00/575A : 38 | _NOBUFS SEC 3533 | 11 MAINMEM.MISC.s 78 | Code | 11 | | 1 | 00/575B : 60 | RTS 3534 | 11 MAINMEM.MISC.s 79 | Empty | 11 | | 0 | 00/575C | 3535 | 11 MAINMEM.MISC.s 80 | Empty | 11 | | 0 | 00/575C | 3536 | 11 MAINMEM.MISC.s 81 | Comment | 11 | | 0 | 00/575C | * Check if file exists 3537 | 11 MAINMEM.MISC.s 82 | Comment | 11 | | 0 | 00/575C | * Returns A=0 if doesn't exist, A=1 file, A=2 dir 3538 | 11 MAINMEM.MISC.s 83 | Code | 11 | | 2 | 00/575C : A9 00 | EXISTS LDA #<{{$0300}} 3539 | 11 MAINMEM.MISC.s 84 | Code | 11 | | 3 | 00/575E : 8D C0 56 | STA GINFOPL+1 3540 | 11 MAINMEM.MISC.s 85 | Code | 11 | | 2 | 00/5761 : A9 03 | LDA #>{{$0300}} 3541 | 11 MAINMEM.MISC.s 86 | Code | 11 | | 3 | 00/5763 : 8D C1 56 | STA GINFOPL+2 3542 | 11 MAINMEM.MISC.s 87 | Code | 11 | | 3 | 00/5766 : 20 8D 57 | JSR GETINFO ; GET_FILE_INFO 3543 | 11 MAINMEM.MISC.s 88 | Code | 11 | | 2 | 00/5769 : A9 00 | LDA #$00 3544 | 11 MAINMEM.MISC.s 89 | Code | 11 | | 2 | 00/576B : B0 09 | BCS ozunid_145 ; Any error -> $00 3545 | 11 MAINMEM.MISC.s 90 | Code | 11 | | 3 | 00/576D : AD C6 56 | LDA GINFOPL+7 ; Storage type 3546 | 11 MAINMEM.MISC.s 91 | Code | 11 | | 2 | 00/5770 : C9 0D | CMP #$0D 3547 | 11 MAINMEM.MISC.s 92 | Code | 11 | | 2 | 00/5772 : A9 01 | LDA #$01 ; File -> $01 3548 | 11 MAINMEM.MISC.s 93 | Code | 11 | | 2 | 00/5774 : 69 00 | ADC #$00 ; Dir. -> $02 3549 | 11 MAINMEM.MISC.s 94 | Code | 11 | | 1 | 00/5776 : 60 | ozunid_145 RTS 3550 | 11 MAINMEM.MISC.s 95 | Empty | 11 | | 0 | 00/5777 | 3551 | 11 MAINMEM.MISC.s 96 | Empty | 11 | | 0 | 00/5777 | 3552 | 11 MAINMEM.MISC.s 97 | Comment | 11 | | 0 | 00/5777 | * Copy FILEBLK to OSFILECB in aux memory 3553 | 11 MAINMEM.MISC.s 98 | Comment | 11 | | 0 | 00/5777 | * Preserves A 3554 | 11 MAINMEM.MISC.s 99 | Code | 11 | | 1 | 00/5777 : 48 | COPYFB PHA 3555 | 11 MAINMEM.MISC.s 100 | Code | 11 | | 2 | 00/5778 : A2 11 | LDX #$11 ; 18 bytes in FILEBLK 3556 | 11 MAINMEM.MISC.s 101 | Macro | 11 | | 0 | 00/577A | >>> WRTAUX ; Write to Aux mem 3557 | 11 MAINMEM.MISC.s 101 | Code | 11 | | 3 | 00/577A : 8D 05 C0 | STA $C005 ; Write to aux memory 3558 | 11 MAINMEM.MISC.s 101 | Code | 11 | | 1 | 00/577D : 58 | CLI ; Normal service resumed 3559 | 11 MAINMEM.MISC.s 102 | Code | 11 | | 3 | 00/577E : BD BE 03 | ozunid_146 LDA {$03BE},X 3560 | 11 MAINMEM.MISC.s 103 | Code | 11 | | 3 | 00/5781 : 9D EE 02 | STA {$2EE},X 3561 | 11 MAINMEM.MISC.s 104 | Code | 11 | | 1 | 00/5784 : CA | DEX 3562 | 11 MAINMEM.MISC.s 105 | Code | 11 | | 2 | 00/5785 : 10 F7 | BPL ozunid_146 3563 | 11 MAINMEM.MISC.s 106 | Macro | 11 | | 0 | 00/5787 | >>> WRTMAIN ; Back to Main mem 3564 | 11 MAINMEM.MISC.s 106 | Code | 11 | | 1 | 00/5787 : 78 | SEI ; Keeps IRQ handler easy 3565 | 11 MAINMEM.MISC.s 106 | Code | 11 | | 3 | 00/5788 : 8D 04 C0 | STA $C004 ; Write to main memory 3566 | 11 MAINMEM.MISC.s 107 | Code | 11 | | 1 | 00/578B : 68 | PLA 3567 | 11 MAINMEM.MISC.s 108 | Code | 11 | | 1 | 00/578C : 60 | RTS 3568 | 11 MAINMEM.MISC.s 109 | Empty | 11 | | 0 | 00/578D | 3569 | 11 MAINMEM.MISC.s 110 | Comment | 11 | | 0 | 00/578D | * Get file info 3570 | 11 MAINMEM.MISC.s 111 | Code | 11 | | 3 | 00/578D : 20 00 BF | GETINFO JSR {$BF00} 3571 | 11 MAINMEM.MISC.s 112 | Data | 11 | | 1 | 00/5790 : C4 | DB {$C4} 3572 | 11 MAINMEM.MISC.s 113 | Data | 11 | | 2 | 00/5791 : BF 56 | DW GINFOPL 3573 | 11 MAINMEM.MISC.s 114 | Code | 11 | | 1 | 00/5793 : 60 | RTS 3574 | 11 MAINMEM.MISC.s 115 | Empty | 11 | | 0 | 00/5794 | 3575 | 11 MAINMEM.MISC.s 116 | Comment | 11 | | 0 | 00/5794 | * Set file info 3576 | 11 MAINMEM.MISC.s 117 | Code | 11 | | 2 | 00/5794 : A9 07 | SETINFO LDA #$07 ; SET_FILE_INFO 7 parms 3577 | 11 MAINMEM.MISC.s 118 | Code | 11 | | 3 | 00/5796 : 8D BF 56 | STA GINFOPL 3578 | 11 MAINMEM.MISC.s 119 | Code | 11 | | 3 | 00/5799 : 20 00 BF | JSR {$BF00} 3579 | 11 MAINMEM.MISC.s 120 | Data | 11 | | 1 | 00/579C : C3 | DB {$C3} 3580 | 11 MAINMEM.MISC.s 121 | Data | 11 | | 2 | 00/579D : BF 56 | DW GINFOPL ; Re-use PL from GFI 3581 | 11 MAINMEM.MISC.s 122 | Code | 11 | | 2 | 00/579F : A9 0A | LDA #$0A ; GET_FILE_INFO 10 parms 3582 | 11 MAINMEM.MISC.s 123 | Code | 11 | | 3 | 00/57A1 : 8D BF 56 | STA GINFOPL 3583 | 11 MAINMEM.MISC.s 124 | Code | 11 | | 1 | 00/57A4 : 60 | RTS 3584 | 11 MAINMEM.MISC.s 125 | Empty | 11 | | 0 | 00/57A5 | 3585 | 11 MAINMEM.MISC.s 126 | Comment | 11 | | 0 | 00/57A5 | * Create disk file 3586 | 11 MAINMEM.MISC.s 127 | Comment | 11 | | 0 | 00/57A5 | * Uses filename in MOSFILE 3587 | 11 MAINMEM.MISC.s 128 | Code | 11 | | 3 | 00/57A5 : 20 00 BF | CRTFILE JSR {$BF00} ; GET_TIME 3588 | 11 MAINMEM.MISC.s 129 | Data | 11 | | 1 | 00/57A8 : 82 | DB {$82} 3589 | 11 MAINMEM.MISC.s 130 | Code | 11 | | 2 | 00/57A9 : A9 00 | LDA #<{{$0300}} 3590 | 11 MAINMEM.MISC.s 131 | Code | 11 | | 3 | 00/57AB : 8D 69 56 | STA CREATEPL+1 3591 | 11 MAINMEM.MISC.s 132 | Code | 11 | | 2 | 00/57AE : A9 03 | LDA #>{{$0300}} 3592 | 11 MAINMEM.MISC.s 133 | Code | 11 | | 3 | 00/57B0 : 8D 6A 56 | STA CREATEPL+2 3593 | 11 MAINMEM.MISC.s 134 | Code | 11 | | 2 | 00/57B3 : A9 C3 | LDA #$C3 ; Open permissions 3594 | 11 MAINMEM.MISC.s 135 | Code | 11 | | 3 | 00/57B5 : 8D 6B 56 | STA CREATEPL+3 3595 | 11 MAINMEM.MISC.s 136 | Code | 11 | | 3 | 00/57B8 : AD 90 BF | LDA $BF90 ; Current date 3596 | 11 MAINMEM.MISC.s 137 | Code | 11 | | 3 | 00/57BB : 8D 70 56 | STA CREATEPL+8 3597 | 11 MAINMEM.MISC.s 138 | Code | 11 | | 3 | 00/57BE : AD 91 BF | LDA $BF91 3598 | 11 MAINMEM.MISC.s 139 | Code | 11 | | 3 | 00/57C1 : 8D 71 56 | STA CREATEPL+9 3599 | 11 MAINMEM.MISC.s 140 | Code | 11 | | 3 | 00/57C4 : AD 92 BF | LDA $BF92 ; Current time 3600 | 11 MAINMEM.MISC.s 141 | Code | 11 | | 3 | 00/57C7 : 8D 72 56 | STA CREATEPL+10 3601 | 11 MAINMEM.MISC.s 142 | Code | 11 | | 3 | 00/57CA : AD 93 BF | LDA $BF93 3602 | 11 MAINMEM.MISC.s 143 | Code | 11 | | 3 | 00/57CD : 8D 73 56 | STA CREATEPL+11 3603 | 11 MAINMEM.MISC.s 144 | Code | 11 | | 3 | 00/57D0 : 20 00 BF | JSR {$BF00} 3604 | 11 MAINMEM.MISC.s 145 | Data | 11 | | 1 | 00/57D3 : C0 | DB {$C0} 3605 | 11 MAINMEM.MISC.s 146 | Data | 11 | | 2 | 00/57D4 : 68 56 | DW CREATEPL 3606 | 11 MAINMEM.MISC.s 147 | Code | 11 | | 1 | 00/57D6 : 60 | RTS 3607 | 11 MAINMEM.MISC.s 148 | Empty | 11 | | 0 | 00/57D7 | 3608 | 11 MAINMEM.MISC.s 149 | Comment | 11 | | 0 | 00/57D7 | * Open disk file 3609 | 11 MAINMEM.MISC.s 150 | Code | 11 | | 2 | 00/57D7 : A9 00 | OPENMOSFILE LDA #<{{$0300}} ; Open filename in MOSFILE 3610 | 11 MAINMEM.MISC.s 151 | Code | 11 | | 3 | 00/57D9 : 8D 5D 56 | STA OPENPL+1 3611 | 11 MAINMEM.MISC.s 152 | Code | 11 | | 2 | 00/57DC : A9 03 | LDA #>{{$0300}} 3612 | 11 MAINMEM.MISC.s 153 | Code | 11 | | 3 | 00/57DE : 8D 5E 56 | STA OPENPL+2 3613 | 11 MAINMEM.MISC.s 154 | Code | 11 | | 3 | 00/57E1 : 20 00 BF | OPENFILE JSR {$BF00} 3614 | 11 MAINMEM.MISC.s 155 | Data | 11 | | 1 | 00/57E4 : C8 | DB {$C8} 3615 | 11 MAINMEM.MISC.s 156 | Data | 11 | | 2 | 00/57E5 : 5C 56 | DW OPENPL 3616 | 11 MAINMEM.MISC.s 157 | Code | 11 | | 1 | 00/57E7 : 60 | RTS 3617 | 11 MAINMEM.MISC.s 158 | Empty | 11 | | 0 | 00/57E8 | 3618 | 11 MAINMEM.MISC.s 159 | Comment | 11 | | 0 | 00/57E8 | * Close disk file 3619 | 11 MAINMEM.MISC.s 160 | Code | 11 | | 3 | 00/57E8 : 20 00 BF | CLSFILE JSR {$BF00} 3620 | 11 MAINMEM.MISC.s 161 | Data | 11 | | 1 | 00/57EB : CC | DB {$CC} 3621 | 11 MAINMEM.MISC.s 162 | Data | 11 | | 2 | 00/57EC : A4 56 | DW CLSPL 3622 | 11 MAINMEM.MISC.s 163 | Code | 11 | | 1 | 00/57EE : 60 | RTS 3623 | 11 MAINMEM.MISC.s 164 | Empty | 11 | | 0 | 00/57EF | 3624 | 11 MAINMEM.MISC.s 165 | Comment | 11 | | 0 | 00/57EF | * Read 512 bytes into BLKBUF 3625 | 11 MAINMEM.MISC.s 166 | Code | 11 | | 3 | 00/57EF : 20 00 BF | RDFILE JSR {$BF00} 3626 | 11 MAINMEM.MISC.s 167 | Data | 11 | | 1 | 00/57F2 : CA | DB {$CA} 3627 | 11 MAINMEM.MISC.s 168 | Data | 11 | | 2 | 00/57F3 : 7C 56 | DW READPL 3628 | 11 MAINMEM.MISC.s 169 | Code | 11 | | 1 | 00/57F5 : 60 | RTS 3629 | 11 MAINMEM.MISC.s 170 | Empty | 11 | | 0 | 00/57F6 | 3630 | 11 MAINMEM.MISC.s 171 | Comment | 11 | | 0 | 00/57F6 | * Write data in BLKBUF to disk 3631 | 11 MAINMEM.MISC.s 172 | Code | 11 | | 3 | 00/57F6 : 20 00 BF | WRTFILE JSR {$BF00} 3632 | 11 MAINMEM.MISC.s 173 | Data | 11 | | 1 | 00/57F9 : CB | DB {$CB} 3633 | 11 MAINMEM.MISC.s 174 | Data | 11 | | 2 | 00/57FA : 94 56 | DW WRITEPL 3634 | 11 MAINMEM.MISC.s 175 | Code | 11 | | 1 | 00/57FC : 60 | RTS 3635 | 11 MAINMEM.MISC.s 176 | Empty | 11 | | 0 | 00/57FD | 3636 | 11 MAINMEM.MISC.s 177 | Comment | 11 | | 0 | 00/57FD | * Put ProDOS prefix in PREFIX 3637 | 11 MAINMEM.MISC.s 178 | Code | 11 | | 3 | 00/57FD : 20 00 BF | GETPREF JSR {$BF00} 3638 | 11 MAINMEM.MISC.s 179 | Data | 11 | | 1 | 00/5800 : C7 | DB {$C7} 3639 | 11 MAINMEM.MISC.s 180 | Data | 11 | | 2 | 00/5801 : AF 56 | DW GPFXPL 3640 | 11 MAINMEM.MISC.s 181 | Code | 11 | | 1 | 00/5803 : 60 | RTS 3641 | 11 MAINMEM.MISC.s 182 | Empty | 11 | | 0 | 00/5804 | 3642 | 11 MAINMEM.MISC.s 183 | Comment | 11 | | 0 | 00/5804 | * Map of file reference numbers to IOBUF1..4 3643 | 11 MAINMEM.MISC.s 184 | Data | 11 | | 4 | 00/5804 : 00 00 00 00 | FILEREFS DB $00,$00,$00,$00 3644 | 11 MAINMEM.MISC.s 185 | Empty | 11 | | 0 | 00/5808 | 3645 | 11 MAINMEM.MISC.s 186 | Empty | 11 | | 0 | 00/5808 | 3646 | 1 applecorn.s 199 | Directive | 11 | | 0 | 00/5808 | PUT AUXMEM.MOSEQU 3647 | 12 AUXMEM.MOSEQU.s 1 | Comment | 11 | | 0 | 00/5808 | * AUXMEM.MOSEQU.S 3648 | 12 AUXMEM.MOSEQU.s 2 | Comment | 11 | | 0 | 00/5808 | * (c) Bobbi 2021 GPLv3 3649 | 12 AUXMEM.MOSEQU.s 3 | Comment | 11 | | 0 | 00/5808 | * 3650 | 12 AUXMEM.MOSEQU.s 4 | Empty | 11 | | 0 | 00/5808 | 3651 | 12 AUXMEM.MOSEQU.s 5 | Comment | 11 | | 0 | 00/5808 | ******************************* 3652 | 12 AUXMEM.MOSEQU.s 6 | Comment | 11 | | 0 | 00/5808 | * BBC MOS WORKSPACE LOCATIONS * 3653 | 12 AUXMEM.MOSEQU.s 7 | Comment | 11 | | 0 | 00/5808 | ******************************* 3654 | 12 AUXMEM.MOSEQU.s 8 | Empty | 11 | | 0 | 00/5808 | 3655 | 12 AUXMEM.MOSEQU.s 9 | Comment | 11 | | 0 | 00/5808 | * $00-$8F Language workspace 3656 | 12 AUXMEM.MOSEQU.s 10 | Comment | 11 | | 0 | 00/5808 | * $90-$9F Network workspace 3657 | 12 AUXMEM.MOSEQU.s 11 | Comment | 11 | | 0 | 00/5808 | * $A0-$A7 NMI workspace 3658 | 12 AUXMEM.MOSEQU.s 12 | Comment | 11 | | 0 | 00/5808 | * $A8-$AF Non-MOS *command workspace 3659 | 12 AUXMEM.MOSEQU.s 13 | Comment | 11 | | 0 | 00/5808 | * $B0-$BF Temporary filing system workspace 3660 | 12 AUXMEM.MOSEQU.s 14 | Comment | 11 | | 0 | 00/5808 | * $C0-$CF Persistant filing system workspace 3661 | 12 AUXMEM.MOSEQU.s 15 | Comment | 11 | | 0 | 00/5808 | * $D0-$DF VDU driver workspace 3662 | 12 AUXMEM.MOSEQU.s 16 | Comment | 11 | | 0 | 00/5808 | * $E0-$EE Internal MOS workspace 3663 | 12 AUXMEM.MOSEQU.s 17 | Comment | 11 | | 0 | 00/5808 | * $EF-$FF MOS API workspace 3664 | 12 AUXMEM.MOSEQU.s 18 | Empty | 11 | | 0 | 00/5808 | 3665 | 12 AUXMEM.MOSEQU.s 19 | Comment | 11 | | 0 | 00/5808 | * DEBUG EQU $00 ; $00=*OPT 255 debug code removed 3666 | 12 AUXMEM.MOSEQU.s 20 | Equivalence | 11 | | 0 | 00/5808 | DEBUG EQU $E0 ; $E0=*OPT 255 debug code included 3667 | 12 AUXMEM.MOSEQU.s 21 | Comment | 11 | | 0 | 00/5808 | * ; $E1 3668 | 12 AUXMEM.MOSEQU.s 22 | Equivalence | 11 | | 0 | 00/5808 | FSFLAG1 EQU $E2 ; $E2 3669 | 12 AUXMEM.MOSEQU.s 23 | Equivalence | 11 | | 0 | 00/5808 | FSFLAG2 EQU $E3 ; $E3 HOSTFS *OPT settings 3670 | 12 AUXMEM.MOSEQU.s 24 | Equivalence | 11 | | 0 | 00/5808 | GSFLAG EQU $E4 ; $E4 GSREAD processing flags 3671 | 12 AUXMEM.MOSEQU.s 25 | Equivalence | 11 | | 0 | 00/5808 | GSCHAR EQU $E5 ; $E5 GSREAD accumulator 3672 | 12 AUXMEM.MOSEQU.s 26 | Equivalence | 11 | | 0 | 00/5808 | OSTEXT EQU $E6 ; $E6 => text string $E6 OSNUM+0 3673 | 12 AUXMEM.MOSEQU.s 27 | Equivalence | 11 | | 0 | 00/5808 | MAXLEN EQU {$E6}+2 ; $E8 $E8 OSNUM+2 3674 | 12 AUXMEM.MOSEQU.s 28 | Equivalence | 11 | | 0 | 00/5808 | MINCHAR EQU {$E6}+3 ; $E9 $E9 OSNUM+3 3675 | 12 AUXMEM.MOSEQU.s 29 | Equivalence | 11 | | 0 | 00/5808 | MAXCHAR EQU {$E6}+4 ; $EA $EA OSPAD 3676 | 12 AUXMEM.MOSEQU.s 30 | Equivalence | 11 | | 0 | 00/5808 | OSTEMP EQU $EB ; $EB $EB OSTEMP 3677 | 12 AUXMEM.MOSEQU.s 31 | Equivalence | 11 | | 0 | 00/5808 | OSKBD1 EQU $EC ; $EC kbd ws 3678 | 12 AUXMEM.MOSEQU.s 32 | Equivalence | 11 | | 0 | 00/5808 | OSKBD2 EQU {$EC}+1 ; $ED kbd ws 3679 | 12 AUXMEM.MOSEQU.s 33 | Equivalence | 11 | | 0 | 00/5808 | OSKBD3 EQU {$EC}+2 ; $EE kbd ws 3680 | 12 AUXMEM.MOSEQU.s 34 | Equivalence | 11 | | 0 | 00/5808 | OSAREG EQU $EF ; $EF A register 3681 | 12 AUXMEM.MOSEQU.s 35 | Equivalence | 11 | | 0 | 00/5808 | OSXREG EQU {$EF}+1 ; $F0 X register 3682 | 12 AUXMEM.MOSEQU.s 36 | Equivalence | 11 | | 0 | 00/5808 | OSYREG EQU {{$EF}+1}+1 ; $F1 Y register 3683 | 12 AUXMEM.MOSEQU.s 37 | Equivalence | 11 | | 0 | 00/5808 | OSCTRL EQU {{$EF}+1} ; $F0 (XY)=>control block 3684 | 12 AUXMEM.MOSEQU.s 38 | Equivalence | 11 | | 0 | 00/5808 | OSLPTR EQU $F2 ; $F2 => command line 3685 | 12 AUXMEM.MOSEQU.s 39 | Equivalence | 11 | | 0 | 00/5808 | ROMID EQU $F4 ; $F4 current ROM 3686 | 12 AUXMEM.MOSEQU.s 40 | Equivalence | 11 | | 0 | 00/5808 | ROMTMP EQU $F5 ; $F5 3687 | 12 AUXMEM.MOSEQU.s 41 | Equivalence | 11 | | 0 | 00/5808 | ROMPTR EQU $F6 ; $F6 => 3688 | 12 AUXMEM.MOSEQU.s 42 | Comment | 11 | | 0 | 00/5808 | * ; $F8 *TEMP* pseudo-SROM settings 3689 | 12 AUXMEM.MOSEQU.s 43 | Comment | 11 | | 0 | 00/5808 | * ; $F9 *TEMP* pseudo-SROM settings 3690 | 12 AUXMEM.MOSEQU.s 44 | Equivalence | 11 | | 0 | 00/5808 | OSINTWS EQU $FA ; $FA IRQ ZP pointer, use when IRQs off 3691 | 12 AUXMEM.MOSEQU.s 45 | Equivalence | 11 | | 0 | 00/5808 | OSINTA EQU $FC ; $FC IRQ register A store 3692 | 12 AUXMEM.MOSEQU.s 46 | Equivalence | 11 | | 0 | 00/5808 | FAULT EQU $FD ; $FD Error message pointer 3693 | 12 AUXMEM.MOSEQU.s 47 | Equivalence | 11 | | 0 | 00/5808 | ESCFLAG EQU $FF ; $FF Escape status 3694 | 12 AUXMEM.MOSEQU.s 48 | Empty | 11 | | 0 | 00/5808 | 3695 | 12 AUXMEM.MOSEQU.s 49 | Empty | 11 | | 0 | 00/5808 | 3696 | 12 AUXMEM.MOSEQU.s 50 | Comment | 11 | | 0 | 00/5808 | * $0200-$0235 Vectors 3697 | 12 AUXMEM.MOSEQU.s 51 | Comment | 11 | | 0 | 00/5808 | * $0236-$028F OSBYTE variables ($190+BYTENUM) 3698 | 12 AUXMEM.MOSEQU.s 52 | Comment | 11 | | 0 | 00/5808 | * $0290-$02ED 3699 | 12 AUXMEM.MOSEQU.s 53 | Comment | 11 | | 0 | 00/5808 | * $02EE-$02FF MOS control block 3700 | 12 AUXMEM.MOSEQU.s 54 | Empty | 11 | | 0 | 00/5808 | 3701 | 12 AUXMEM.MOSEQU.s 55 | Equivalence | 11 | | 0 | 00/5808 | USERV EQU $200 ; USER vector 3702 | 12 AUXMEM.MOSEQU.s 56 | Equivalence | 11 | | 0 | 00/5808 | BRKV EQU $202 ; BRK vector 3703 | 12 AUXMEM.MOSEQU.s 57 | Equivalence | 11 | | 0 | 00/5808 | CLIV EQU $208 ; OSCLI vector 3704 | 12 AUXMEM.MOSEQU.s 58 | Equivalence | 11 | | 0 | 00/5808 | BYTEV EQU $20A ; OSBYTE vector 3705 | 12 AUXMEM.MOSEQU.s 59 | Equivalence | 11 | | 0 | 00/5808 | WORDV EQU $20C ; OSWORD vector 3706 | 12 AUXMEM.MOSEQU.s 60 | Equivalence | 11 | | 0 | 00/5808 | WRCHV EQU $20E ; OSWRCH vector 3707 | 12 AUXMEM.MOSEQU.s 61 | Equivalence | 11 | | 0 | 00/5808 | RDCHV EQU $210 ; OSRDCH vector 3708 | 12 AUXMEM.MOSEQU.s 62 | Equivalence | 11 | | 0 | 00/5808 | FILEV EQU $212 ; OSFILE vector 3709 | 12 AUXMEM.MOSEQU.s 63 | Equivalence | 11 | | 0 | 00/5808 | ARGSV EQU $214 ; OSARGS vector 3710 | 12 AUXMEM.MOSEQU.s 64 | Equivalence | 11 | | 0 | 00/5808 | BGETV EQU $216 ; OSBGET vector 3711 | 12 AUXMEM.MOSEQU.s 65 | Equivalence | 11 | | 0 | 00/5808 | BPUTV EQU $218 ; OSBPUT vector 3712 | 12 AUXMEM.MOSEQU.s 66 | Equivalence | 11 | | 0 | 00/5808 | GBPBV EQU $21A ; OSGBPB vector 3713 | 12 AUXMEM.MOSEQU.s 67 | Equivalence | 11 | | 0 | 00/5808 | FINDV EQU $21C ; OSFIND vector 3714 | 12 AUXMEM.MOSEQU.s 68 | Equivalence | 11 | | 0 | 00/5808 | FSCV EQU $21E ; FSCV misc file ops 3715 | 12 AUXMEM.MOSEQU.s 69 | Empty | 11 | | 0 | 00/5808 | 3716 | 12 AUXMEM.MOSEQU.s 70 | Equivalence | 11 | | 0 | 00/5808 | BYTEVARBASE EQU $190 ; Base of OSBYTE variables 3717 | 12 AUXMEM.MOSEQU.s 71 | Equivalence | 11 | | 0 | 00/5808 | OSFILECB EQU $2EE ; OSFILE control block 3718 | 12 AUXMEM.MOSEQU.s 72 | Equivalence | 11 | | 0 | 00/5808 | OSGBPBCB EQU {$2EE}+1 ; OSGBPB control block 3719 | 12 AUXMEM.MOSEQU.s 73 | Empty | 11 | | 0 | 00/5808 | 3720 | 12 AUXMEM.MOSEQU.s 74 | Empty | 11 | | 0 | 00/5808 | 3721 | 12 AUXMEM.MOSEQU.s 75 | Comment | 11 | | 0 | 00/5808 | * $0300-$03DF 3722 | 12 AUXMEM.MOSEQU.s 76 | Comment | 11 | | 0 | 00/5808 | * $03E0-$03FF Used for interfacing with ProDOS XFER 3723 | 12 AUXMEM.MOSEQU.s 77 | Empty | 11 | | 0 | 00/5808 | 3724 | 1 applecorn.s 200 | Directive | 11 | | 0 | 00/5808 | PUT AUXMEM.INIT 3725 | 13 AUXMEM.INIT.s 1 | Comment | 11 | | 0 | 00/5808 | * AUXMEM.INIT.S 3726 | 13 AUXMEM.INIT.s 2 | Comment | 11 | | 0 | 00/5808 | * (c) Bobbi 2021 GPL v3 3727 | 13 AUXMEM.INIT.s 3 | Comment | 11 | | 0 | 00/5808 | * 3728 | 13 AUXMEM.INIT.s 4 | Comment | 11 | | 0 | 00/5808 | * Initialization code running in Apple //e aux memory 3729 | 13 AUXMEM.INIT.s 5 | Empty | 11 | | 0 | 00/5808 | 3730 | 13 AUXMEM.INIT.s 6 | Comment | 11 | | 0 | 00/5808 | *********************************************************** 3731 | 13 AUXMEM.INIT.s 7 | Comment | 11 | | 0 | 00/5808 | * BBC Micro 'virtual machine' in Apple //e aux memory 3732 | 13 AUXMEM.INIT.s 8 | Comment | 11 | | 0 | 00/5808 | *********************************************************** 3733 | 13 AUXMEM.INIT.s 9 | Empty | 11 | | 0 | 00/5808 | 3734 | 13 AUXMEM.INIT.s 10 | Equivalence | 11 | | 0 | 00/5808 | MAXROM EQU $F9 ; Max sideways ROM number 3735 | 13 AUXMEM.INIT.s 11 | Empty | 11 | | 0 | 00/5808 | 3736 | 13 AUXMEM.INIT.s 12 | Equivalence | 11 | | 0 | 00/5808 | ZP1 EQU $90 ; $90-$9f are spare Econet space 3737 | 13 AUXMEM.INIT.s 13 | Comment | 11 | | 0 | 00/5808 | ; so safe to use 3738 | 13 AUXMEM.INIT.s 14 | Equivalence | 11 | | 0 | 00/5808 | ZP2 EQU $92 3739 | 13 AUXMEM.INIT.s 15 | Equivalence | 11 | | 0 | 00/5808 | ZP3 EQU $94 3740 | 13 AUXMEM.INIT.s 16 | Empty | 11 | | 0 | 00/5808 | 3741 | 13 AUXMEM.INIT.s 17 | Equivalence | 11 | | 0 | 00/5808 | STRTBCKL EQU $9D ; *TO DO* No longer needed to preserve 3742 | 13 AUXMEM.INIT.s 18 | Equivalence | 11 | | 0 | 00/5808 | STRTBCKH EQU $9E 3743 | 13 AUXMEM.INIT.s 19 | Empty | 11 | | 0 | 00/5808 | 3744 | 13 AUXMEM.INIT.s 20 | Empty | 11 | | 0 | 00/5808 | MOSSHIM 3745 | 13 AUXMEM.INIT.s 21 | Directive | 11 | | 0 | 00/5808 | ORG {$D000} ; MOS shim implementation 3746 | 13 AUXMEM.INIT.s 22 | Empty | 11 | | 0 | 00/D000 | 3747 | 13 AUXMEM.INIT.s 23 | Comment | 11 | | 0 | 00/D000 | * 3748 | 13 AUXMEM.INIT.s 24 | Comment | 11 | | 0 | 00/D000 | * Shim code to service Acorn MOS entry points using 3749 | 13 AUXMEM.INIT.s 25 | Comment | 11 | | 0 | 00/D000 | * Apple II monitor routines 3750 | 13 AUXMEM.INIT.s 26 | Comment | 11 | | 0 | 00/D000 | * This code is initially loaded into aux mem at AUXMOS1 3751 | 13 AUXMEM.INIT.s 27 | Comment | 11 | | 0 | 00/D000 | * Then relocated into aux LC at AUXMOS by MOSINIT 3752 | 13 AUXMEM.INIT.s 28 | Comment | 11 | | 0 | 00/D000 | * 3753 | 13 AUXMEM.INIT.s 29 | Comment | 11 | | 0 | 00/D000 | * Initially executing at $3000 until copied to $D000 3754 | 13 AUXMEM.INIT.s 30 | Empty | 11 | | 0 | 00/D000 | 3755 | 13 AUXMEM.INIT.s 31 | Code | 11 | | 2 | 00/D000 : A2 FF | MOSINIT LDX #$FF ; Initialize Alt SP to $1FF 3756 | 13 AUXMEM.INIT.s 32 | Code | 11 | | 1 | 00/D002 : 9A | TXS 3757 | 13 AUXMEM.INIT.s 33 | Empty | 11 | | 0 | 00/D003 | 3758 | 13 AUXMEM.INIT.s 34 | Code | 11 | | 3 | 00/D003 : 8D 05 C0 | STA $C005 ; Make sure we are writing aux 3759 | 13 AUXMEM.INIT.s 35 | Code | 11 | | 3 | 00/D006 : 8D 00 C0 | STA $C000 ; Make sure 80STORE is off 3760 | 13 AUXMEM.INIT.s 36 | Empty | 11 | | 0 | 00/D009 | 3761 | 13 AUXMEM.INIT.s 37 | Code | 11 | | 3 | 00/D009 : AD 8B C0 | LDA $C08B ; LC RAM Rd/Wt, 1st 4K bank 3762 | 13 AUXMEM.INIT.s 38 | Code | 11 | | 3 | 00/D00C : AD 8B C0 | LDA $C08B 3763 | 13 AUXMEM.INIT.s 39 | Empty | 11 | | 0 | 00/D00F | 3764 | 13 AUXMEM.INIT.s 40 | Code | 11 | | 2 | 00/D00F : 80 0A | _MODBRA BRA _RELOC ; NOPped out on first run 3765 | 13 AUXMEM.INIT.s 41 | Code | 11 | | 2 | 00/D011 : 80 78 | BRA _NORELOC 3766 | 13 AUXMEM.INIT.s 42 | Empty | 11 | | 0 | 00/D013 | 3767 | 13 AUXMEM.INIT.s 43 | Code | 11 | | 2 | 00/D013 : A9 EA | LDA #$EA ; NOP opcode 3768 | 13 AUXMEM.INIT.s 44 | Code | 11 | | 3 | 00/D015 : 8D 0F D0 | STA _MODBRA 3769 | 13 AUXMEM.INIT.s 45 | Code | 11 | | 3 | 00/D018 : 8D 10 D0 | STA _MODBRA+1 3770 | 13 AUXMEM.INIT.s 46 | Empty | 11 | | 0 | 00/D01B | 3771 | 13 AUXMEM.INIT.s 47 | Code | 11 | | 2 | 00/D01B : A9 00 | _RELOC LDA #<{$2000} ; Relocate MOS shim 3772 | 13 AUXMEM.INIT.s 48 | Code | 11 | | 2 | 00/D01D : 85 3C | STA {$3C} 3773 | 13 AUXMEM.INIT.s 49 | Code | 11 | | 2 | 00/D01F : A9 20 | LDA #>{$2000} 3774 | 13 AUXMEM.INIT.s 50 | Code | 11 | | 2 | 00/D021 : 85 3D | STA {$3D} 3775 | 13 AUXMEM.INIT.s 51 | Code | 11 | | 2 | 00/D023 : A9 00 | LDA #<{$5000} 3776 | 13 AUXMEM.INIT.s 52 | Code | 11 | | 2 | 00/D025 : 85 3E | STA {$3E} 3777 | 13 AUXMEM.INIT.s 53 | Code | 11 | | 2 | 00/D027 : A9 50 | LDA #>{$5000} 3778 | 13 AUXMEM.INIT.s 54 | Code | 11 | | 2 | 00/D029 : 85 3F | STA {$3F} 3779 | 13 AUXMEM.INIT.s 55 | Code | 11 | | 2 | 00/D02B : A9 00 | LDA #<{$D000} 3780 | 13 AUXMEM.INIT.s 56 | Code | 11 | | 2 | 00/D02D : 85 42 | STA {$42} 3781 | 13 AUXMEM.INIT.s 57 | Code | 11 | | 2 | 00/D02F : A9 D0 | LDA #>{$D000} 3782 | 13 AUXMEM.INIT.s 58 | Code | 11 | | 2 | 00/D031 : 85 43 | STA {$43} 3783 | 13 AUXMEM.INIT.s 59 | Code | 11 | | 2 | 00/D033 : B2 3C | ozunid_147 LDA ({$3C}) 3784 | 13 AUXMEM.INIT.s 60 | Code | 11 | | 2 | 00/D035 : 92 42 | STA ({$42}) 3785 | 13 AUXMEM.INIT.s 61 | Code | 11 | | 2 | 00/D037 : A5 3D | LDA {$3D} 3786 | 13 AUXMEM.INIT.s 62 | Code | 11 | | 2 | 00/D039 : C5 3F | CMP {$3F} 3787 | 13 AUXMEM.INIT.s 63 | Code | 11 | | 2 | 00/D03B : D0 08 | BNE ozunid_148 3788 | 13 AUXMEM.INIT.s 64 | Code | 11 | | 2 | 00/D03D : A5 3C | LDA {$3C} 3789 | 13 AUXMEM.INIT.s 65 | Code | 11 | | 2 | 00/D03F : C5 3E | CMP {$3E} 3790 | 13 AUXMEM.INIT.s 66 | Code | 11 | | 2 | 00/D041 : D0 02 | BNE ozunid_148 3791 | 13 AUXMEM.INIT.s 67 | Code | 11 | | 2 | 00/D043 : 80 0E | BRA ozunid_151 3792 | 13 AUXMEM.INIT.s 68 | Code | 11 | | 2 | 00/D045 : E6 3C | ozunid_148 INC {$3C} 3793 | 13 AUXMEM.INIT.s 69 | Code | 11 | | 2 | 00/D047 : D0 02 | BNE ozunid_149 3794 | 13 AUXMEM.INIT.s 70 | Code | 11 | | 2 | 00/D049 : E6 3D | INC {$3D} 3795 | 13 AUXMEM.INIT.s 71 | Code | 11 | | 2 | 00/D04B : E6 42 | ozunid_149 INC {$42} 3796 | 13 AUXMEM.INIT.s 72 | Code | 11 | | 2 | 00/D04D : D0 02 | BNE ozunid_150 3797 | 13 AUXMEM.INIT.s 73 | Code | 11 | | 2 | 00/D04F : E6 43 | INC {$43} 3798 | 13 AUXMEM.INIT.s 74 | Code | 11 | | 2 | 00/D051 : 80 E0 | ozunid_150 BRA ozunid_147 3799 | 13 AUXMEM.INIT.s 75 | Empty | 11 | | 0 | 00/D053 | 3800 | 13 AUXMEM.INIT.s 76 | Code | 11 | | 2 | 00/D053 : A9 E9 | ozunid_151 LDA #MOSVEC-MOSINIT+{$2000} 3803 | 13 AUXMEM.INIT.s 79 | Code | 11 | | 2 | 00/D059 : 85 3D | STA {$3D} 3804 | 13 AUXMEM.INIT.s 80 | Code | 11 | | 2 | 00/D05B : A9 54 | LDA #MOSVEND-MOSINIT+{$2000} 3807 | 13 AUXMEM.INIT.s 83 | Code | 11 | | 2 | 00/D061 : 85 3F | STA {$3F} 3808 | 13 AUXMEM.INIT.s 84 | Code | 11 | | 2 | 00/D063 : A9 95 | LDA #<{$FF95} 3809 | 13 AUXMEM.INIT.s 85 | Code | 11 | | 2 | 00/D065 : 85 42 | STA {$42} 3810 | 13 AUXMEM.INIT.s 86 | Code | 11 | | 2 | 00/D067 : A9 FF | LDA #>{$FF95} 3811 | 13 AUXMEM.INIT.s 87 | Code | 11 | | 2 | 00/D069 : 85 43 | STA {$43} 3812 | 13 AUXMEM.INIT.s 88 | Code | 11 | | 2 | 00/D06B : B2 3C | ozunid_152 LDA ({$3C}) 3813 | 13 AUXMEM.INIT.s 89 | Code | 11 | | 2 | 00/D06D : 92 42 | STA ({$42}) 3814 | 13 AUXMEM.INIT.s 90 | Code | 11 | | 2 | 00/D06F : A5 3D | LDA {$3D} 3815 | 13 AUXMEM.INIT.s 91 | Code | 11 | | 2 | 00/D071 : C5 3F | CMP {$3F} 3816 | 13 AUXMEM.INIT.s 92 | Code | 11 | | 2 | 00/D073 : D0 08 | BNE ozunid_153 3817 | 13 AUXMEM.INIT.s 93 | Code | 11 | | 2 | 00/D075 : A5 3C | LDA {$3C} 3818 | 13 AUXMEM.INIT.s 94 | Code | 11 | | 2 | 00/D077 : C5 3E | CMP {$3E} 3819 | 13 AUXMEM.INIT.s 95 | Code | 11 | | 2 | 00/D079 : D0 02 | BNE ozunid_153 3820 | 13 AUXMEM.INIT.s 96 | Code | 11 | | 2 | 00/D07B : 80 0E | BRA _S8 3821 | 13 AUXMEM.INIT.s 97 | Code | 11 | | 2 | 00/D07D : E6 3C | ozunid_153 INC {$3C} 3822 | 13 AUXMEM.INIT.s 98 | Code | 11 | | 2 | 00/D07F : D0 02 | BNE _S6 3823 | 13 AUXMEM.INIT.s 99 | Code | 11 | | 2 | 00/D081 : E6 3D | INC {$3D} 3824 | 13 AUXMEM.INIT.s 100 | Code | 11 | | 2 | 00/D083 : E6 42 | _S6 INC {$42} 3825 | 13 AUXMEM.INIT.s 101 | Code | 11 | | 2 | 00/D085 : D0 02 | BNE _S7 3826 | 13 AUXMEM.INIT.s 102 | Code | 11 | | 2 | 00/D087 : E6 43 | INC {$43} 3827 | 13 AUXMEM.INIT.s 103 | Code | 11 | | 2 | 00/D089 : 80 E0 | _S7 BRA ozunid_152 3828 | 13 AUXMEM.INIT.s 104 | Empty | 11 | | 0 | 00/D08B | 3829 | 13 AUXMEM.INIT.s 105 | Empty | 11 | | 0 | 00/D08B | _NORELOC 3830 | 13 AUXMEM.INIT.s 106 | Code | 11 | | 3 | 00/D08B : 8D 0D C0 | _S8 STA $C00D ; 80 col on 3831 | 13 AUXMEM.INIT.s 107 | Code | 11 | | 3 | 00/D08E : 8D 03 C0 | STA $C003 ; Alt charset off 3832 | 13 AUXMEM.INIT.s 108 | Code | 11 | | 3 | 00/D091 : 8D 55 C0 | STA $C055 ; PAGE2 3833 | 13 AUXMEM.INIT.s 109 | Code | 11 | | 3 | 00/D094 : 4C 97 D0 | JMP MOSHIGH ; Ensure executing in high memory here 3834 | 13 AUXMEM.INIT.s 110 | Empty | 11 | | 0 | 00/D097 | 3835 | 13 AUXMEM.INIT.s 111 | Code | 11 | | 1 | 00/D097 : 78 | MOSHIGH SEI 3836 | 13 AUXMEM.INIT.s 112 | Code | 11 | | 2 | 00/D098 : A2 FF | LDX #$FF 3837 | 13 AUXMEM.INIT.s 113 | Code | 11 | | 1 | 00/D09A : 9A | TXS ; Initialise stack 3838 | 13 AUXMEM.INIT.s 114 | Code | 11 | | 1 | 00/D09B : E8 | INX ; X=$00 3839 | 13 AUXMEM.INIT.s 115 | Code | 11 | | 1 | 00/D09C : 8A | TXA 3840 | 13 AUXMEM.INIT.s 116 | Code | 11 | | 2 | 00/D09D : 95 00 | _SCLR STA $0000,X ; Clear Kernel memory 3841 | 13 AUXMEM.INIT.s 117 | Code | 11 | | 3 | 00/D09F : 9D 00 02 | STA $0200,X 3842 | 13 AUXMEM.INIT.s 118 | Code | 11 | | 3 | 00/D0A2 : 9D 00 03 | STA $0300,X 3843 | 13 AUXMEM.INIT.s 119 | Code | 11 | | 1 | 00/D0A5 : E8 | INX 3844 | 13 AUXMEM.INIT.s 120 | Code | 11 | | 2 | 00/D0A6 : D0 F5 | BNE _SCLR 3845 | 13 AUXMEM.INIT.s 121 | Empty | 11 | | 0 | 00/D0A8 | 3846 | 13 AUXMEM.INIT.s 122 | Code | 11 | | 2 | 00/D0A8 : A2 35 | LDX #ENDVEC-DEFVEC-1 3847 | 13 AUXMEM.INIT.s 123 | Code | 11 | | 3 | 00/D0AA : BD B3 ED | _INITPG2 LDA DEFVEC,X ; Set up vectors 3848 | 13 AUXMEM.INIT.s 124 | Code | 11 | | 3 | 00/D0AD : 9D 00 02 | STA $200,X 3849 | 13 AUXMEM.INIT.s 125 | Code | 11 | | 1 | 00/D0B0 : CA | DEX 3850 | 13 AUXMEM.INIT.s 126 | Code | 11 | | 2 | 00/D0B1 : 10 F7 | BPL _INITPG2 3851 | 13 AUXMEM.INIT.s 127 | Empty | 11 | | 0 | 00/D0B3 | 3852 | 13 AUXMEM.INIT.s 128 | Code | 11 | | 3 | 00/D0B3 : 20 13 ED | JSR ROMINIT ; Build list of sideways ROMs 3853 | 13 AUXMEM.INIT.s 129 | Code | 11 | | 3 | 00/D0B6 : 20 C8 E9 | JSR KBDINIT ; Returns A=startup MODE 3854 | 13 AUXMEM.INIT.s 130 | Code | 11 | | 3 | 00/D0B9 : 20 8A D4 | JSR VDUINIT ; Initialise VDU driver 3855 | 13 AUXMEM.INIT.s 131 | Code | 11 | | 3 | 00/D0BC : 20 0F D1 | JSR PRHELLO 3856 | 13 AUXMEM.INIT.s 132 | Code | 11 | | 2 | 00/D0BF : A9 07 | LDA #7 3857 | 13 AUXMEM.INIT.s 133 | Code | 11 | | 3 | 00/D0C1 : 20 EE FF | JSR OSWRCH 3858 | 13 AUXMEM.INIT.s 134 | Code | 11 | | 3 | 00/D0C4 : 20 E7 FF | JSR OSNEWL 3859 | 13 AUXMEM.INIT.s 135 | Code | 11 | | 2 | 00/D0C7 : A6 F9 | LDX {$F9} ; TEMP X=language to enter 3860 | 13 AUXMEM.INIT.s 136 | Code | 11 | | 1 | 00/D0C9 : 18 | CLC 3861 | 13 AUXMEM.INIT.s 137 | Empty | 11 | | 0 | 00/D0CA | 3862 | 13 AUXMEM.INIT.s 138 | Comment | 11 | | 0 | 00/D0CA | * OSBYTE $8E - Enter language ROM 3863 | 13 AUXMEM.INIT.s 139 | Comment | 11 | | 0 | 00/D0CA | * X=ROM number to select 3864 | 13 AUXMEM.INIT.s 140 | Comment | 11 | | 0 | 00/D0CA | * 3865 | 13 AUXMEM.INIT.s 141 | Code | 11 | | 1 | 00/D0CA : 08 | BYTE8E PHP ; Save CLC=RESET, SEC=Not RESET 3866 | 13 AUXMEM.INIT.s 142 | Code | 11 | | 3 | 00/D0CB : 20 E9 EC | JSR ROMSELECT ; Bring ROM X into memory 3867 | 13 AUXMEM.INIT.s 143 | Code | 11 | | 3 | 00/D0CE : 8E 8C 02 | STX {$190}+$FC ; Set current language ROM 3868 | 13 AUXMEM.INIT.s 144 | Code | 11 | | 2 | 00/D0D1 : A9 00 | LDA #$00 3869 | 13 AUXMEM.INIT.s 145 | Code | 11 | | 2 | 00/D0D3 : 85 FD | STA {$FD}+0 3870 | 13 AUXMEM.INIT.s 146 | Code | 11 | | 2 | 00/D0D5 : A9 80 | LDA #$80 3871 | 13 AUXMEM.INIT.s 147 | Code | 11 | | 2 | 00/D0D7 : 85 FE | STA {$FD}+1 3872 | 13 AUXMEM.INIT.s 148 | Code | 11 | | 2 | 00/D0D9 : A0 09 | LDY #$09 3873 | 13 AUXMEM.INIT.s 149 | Code | 11 | | 3 | 00/D0DB : 20 8C ED | JSR PRERRLP ; Print ROM name with PRERR to set 3874 | 13 AUXMEM.INIT.s 150 | Code | 11 | | 2 | 00/D0DE : 84 FD | STY {$FD}+0 ; FAULT pointing to version string 3875 | 13 AUXMEM.INIT.s 151 | Code | 11 | | 3 | 00/D0E0 : 20 E7 FF | JSR OSNEWL 3876 | 13 AUXMEM.INIT.s 152 | Code | 11 | | 3 | 00/D0E3 : 20 E7 FF | JSR OSNEWL 3877 | 13 AUXMEM.INIT.s 153 | Code | 11 | | 1 | 00/D0E6 : 28 | PLP ; Get entry type back 3878 | 13 AUXMEM.INIT.s 154 | Code | 11 | | 2 | 00/D0E7 : A9 01 | LDA #$01 3879 | 13 AUXMEM.INIT.s 155 | Code | 11 | | 3 | 00/D0E9 : 4C 00 80 | JMP {$8000} 3880 | 13 AUXMEM.INIT.s 156 | Empty | 11 | | 0 | 00/D0EC | 3881 | 13 AUXMEM.INIT.s 157 | Comment | 11 | | 0 | 00/D0EC | * OSBYTE $8F - Issue service call 3882 | 13 AUXMEM.INIT.s 158 | Comment | 11 | | 0 | 00/D0EC | * X=service call, Y=parameter 3883 | 13 AUXMEM.INIT.s 159 | Comment | 11 | | 0 | 00/D0EC | * 3884 | 13 AUXMEM.INIT.s 160 | Code | 11 | | 1 | 00/D0EC : AA | SERVICE TAX ; Enter here with A=Service Num 3885 | 13 AUXMEM.INIT.s 161 | Empty | 11 | | 0 | 00/D0ED | BYTE8F 3886 | 13 AUXMEM.INIT.s 162 | Code | 11 | | 2 | 00/D0ED : A5 F4 | SERVICEX LDA $F4 3887 | 13 AUXMEM.INIT.s 163 | Code | 11 | | 1 | 00/D0EF : 48 | PHA ; Save current ROM 3888 | 13 AUXMEM.INIT.s 164 | Empty | 11 | | 0 | 00/D0F0 | 3889 | 13 AUXMEM.INIT.s 165 | Comment | 11 | | 0 | 00/D0F0 | * LDA $E0 ; *DEBUG* 3890 | 13 AUXMEM.INIT.s 166 | Comment | 11 | | 0 | 00/D0F0 | * AND #$20 3891 | 13 AUXMEM.INIT.s 167 | Comment | 11 | | 0 | 00/D0F0 | * BEQ :SERVDEBUG 3892 | 13 AUXMEM.INIT.s 168 | Comment | 11 | | 0 | 00/D0F0 | * TXA 3893 | 13 AUXMEM.INIT.s 169 | Comment | 11 | | 0 | 00/D0F0 | * JSR PRHEX 3894 | 13 AUXMEM.INIT.s 170 | Comment | 11 | | 0 | 00/D0F0 | * LDA OSLPTR+1 3895 | 13 AUXMEM.INIT.s 171 | Comment | 11 | | 0 | 00/D0F0 | * JSR PRHEX 3896 | 13 AUXMEM.INIT.s 172 | Comment | 11 | | 0 | 00/D0F0 | * LDA OSLPTR+0 3897 | 13 AUXMEM.INIT.s 173 | Comment | 11 | | 0 | 00/D0F0 | * JSR PRHEX ; *DEBUG* 3898 | 13 AUXMEM.INIT.s 174 | Comment | 11 | | 0 | 00/D0F0 | *:SERVDEBUG 3899 | 13 AUXMEM.INIT.s 175 | Empty | 11 | | 0 | 00/D0F0 | 3900 | 13 AUXMEM.INIT.s 176 | Code | 11 | | 1 | 00/D0F0 : 8A | TXA 3901 | 13 AUXMEM.INIT.s 177 | Code | 11 | | 2 | 00/D0F1 : A6 F9 | LDX {$F9} ; Start at highest ROM 3902 | 13 AUXMEM.INIT.s 178 | Code | 11 | | 3 | 00/D0F3 : 20 E9 EC | _SERVLP JSR ROMSELECT ; Bring it into memory 3903 | 13 AUXMEM.INIT.s 179 | Code | 11 | | 3 | 00/D0F6 : 2C 06 80 | BIT $8006 3904 | 13 AUXMEM.INIT.s 180 | Code | 11 | | 2 | 00/D0F9 : 10 06 | BPL _SERVSKIP ; No service entry 3905 | 13 AUXMEM.INIT.s 181 | Code | 11 | | 3 | 00/D0FB : 20 03 80 | JSR $8003 ; Call service entry 3906 | 13 AUXMEM.INIT.s 182 | Code | 11 | | 1 | 00/D0FE : AA | TAX 3907 | 13 AUXMEM.INIT.s 183 | Code | 11 | | 2 | 00/D0FF : F0 05 | BEQ _SERVDONE 3908 | 13 AUXMEM.INIT.s 184 | Code | 11 | | 2 | 00/D101 : A6 F4 | _SERVSKIP LDX $F4 ; Restore X=current ROM 3909 | 13 AUXMEM.INIT.s 185 | Code | 11 | | 1 | 00/D103 : CA | DEX ; Step down to next 3910 | 13 AUXMEM.INIT.s 186 | Code | 11 | | 2 | 00/D104 : 10 ED | BPL _SERVLP ; Loop until ROM 0 done 3911 | 13 AUXMEM.INIT.s 187 | Code | 11 | | 1 | 00/D106 : 68 | _SERVDONE PLA ; Get caller's ROM back 3912 | 13 AUXMEM.INIT.s 188 | Code | 11 | | 1 | 00/D107 : DA | PHX ; Save return from service call 3913 | 13 AUXMEM.INIT.s 189 | Code | 11 | | 1 | 00/D108 : AA | TAX 3914 | 13 AUXMEM.INIT.s 190 | Code | 11 | | 3 | 00/D109 : 20 E9 EC | JSR ROMSELECT ; Restore caller's ROM 3915 | 13 AUXMEM.INIT.s 191 | Code | 11 | | 1 | 00/D10C : FA | PLX ; Get return value back 3916 | 13 AUXMEM.INIT.s 192 | Code | 11 | | 1 | 00/D10D : 8A | TXA ; Return in A and X and set EQ/NE 3917 | 13 AUXMEM.INIT.s 193 | Code | 11 | | 1 | 00/D10E : 60 | RTS 3918 | 13 AUXMEM.INIT.s 194 | Empty | 11 | | 0 | 00/D10F | 3919 | 13 AUXMEM.INIT.s 195 | Empty | 11 | | 0 | 00/D10F | 3920 | 13 AUXMEM.INIT.s 196 | Code | 11 | | 2 | 00/D10F : A9 20 | PRHELLO LDA #HELLO 3922 | 13 AUXMEM.INIT.s 198 | Code | 11 | | 3 | 00/D113 : 20 EB EB | JSR PRSTR 3923 | 13 AUXMEM.INIT.s 199 | Code | 11 | | 3 | 00/D116 : 4C E7 FF | JMP OSNEWL 3924 | 13 AUXMEM.INIT.s 200 | Empty | 11 | | 0 | 00/D119 | 3925 | 13 AUXMEM.INIT.s 201 | Empty | 11 | | 0 | 00/D119 | BYTE00XX 3926 | 13 AUXMEM.INIT.s 202 | Code | 11 | | 2 | 00/D119 : F0 03 | BYTE00 BEQ BYTE00A ; OSBYTE 0,0 - generate error 3927 | 13 AUXMEM.INIT.s 203 | Code | 11 | | 2 | 00/D11B : A2 0A | LDX #$0A ; Identify Host 3928 | 13 AUXMEM.INIT.s 204 | Code | 11 | | 1 | 00/D11D : 60 | RTS ; %000x1xxx host type, 'A'pple 3929 | 13 AUXMEM.INIT.s 205 | Code | 11 | | 1 | 00/D11E : 00 | BYTE00A BRK 3930 | 13 AUXMEM.INIT.s 206 | Data | 11 | | 1 | 00/D11F : F7 | DB $F7 3931 | 13 AUXMEM.INIT.s 207 | Data | 11 | | 24 | 00/D120 : 41 70 70 6C | HELLO ASC 'Applecorn MOS 2021-10-27' | | | | | | 65 63 6F 72 | | | | | | | 6E 20 4D 4F | | | | | | | 53 20 32 30 | | | | | | | 32 31 2D 31 | | | | | | | 30 2D 32 37 | 3932 | 13 AUXMEM.INIT.s 208 | Data | 11 | | 1 | 00/D138 : 00 | DB $00 ; Unify MOS messages 3933 | 13 AUXMEM.INIT.s 209 | Empty | 11 | | 0 | 00/D139 | 3934 | 13 AUXMEM.INIT.s 210 | Empty | 11 | | 0 | 00/D139 | 3935 | 13 AUXMEM.INIT.s 211 | Empty | 11 | | 0 | 00/D139 | 3936 | 1 applecorn.s 201 | Directive | 11 | | 0 | 00/D139 | PUT AUXMEM.VDU 3937 | 14 AUXMEM.VDU.s 1 | Comment | 11 | | 0 | 00/D139 | * AUXMEM.VDU.S 3938 | 14 AUXMEM.VDU.s 2 | Comment | 11 | | 0 | 00/D139 | * (c) Bobbi 2021 GPLv3 3939 | 14 AUXMEM.VDU.s 3 | Comment | 11 | | 0 | 00/D139 | * 3940 | 14 AUXMEM.VDU.s 4 | Comment | 11 | | 0 | 00/D139 | * Apple //e VDU Driver for 40/80 column mode (PAGE2) 3941 | 14 AUXMEM.VDU.s 5 | Comment | 11 | | 0 | 00/D139 | * 3942 | 14 AUXMEM.VDU.s 6 | Comment | 11 | | 0 | 00/D139 | * 15-Aug-2021 Optimised address calculations and PRCHRC. 3943 | 14 AUXMEM.VDU.s 7 | Comment | 11 | | 0 | 00/D139 | * Entry point to move copy cursor. 3944 | 14 AUXMEM.VDU.s 8 | Comment | 11 | | 0 | 00/D139 | * Start to consolidate VDU workspace. 3945 | 14 AUXMEM.VDU.s 9 | Comment | 11 | | 0 | 00/D139 | * 16-Aug-2021 Added COPY cursor handling. 3946 | 14 AUXMEM.VDU.s 10 | Comment | 11 | | 0 | 00/D139 | * 21-Aug-2021 CHR$(&80+n) is inverse of CHR$(&00+n) 3947 | 14 AUXMEM.VDU.s 11 | Comment | 11 | | 0 | 00/D139 | * 21-Aug-2021 If screen scrolls, copy cursor adjusted. 3948 | 14 AUXMEM.VDU.s 12 | Comment | 11 | | 0 | 00/D139 | * 05-Sep-2021 Starting to prepare VDU workspace. 3949 | 14 AUXMEM.VDU.s 13 | Comment | 11 | | 0 | 00/D139 | * 09-Sep-2021 New dispatch routine. 3950 | 14 AUXMEM.VDU.s 14 | Comment | 11 | | 0 | 00/D139 | * 22-Sep-2021 More VDU workspace, started MODE definitions. 3951 | 14 AUXMEM.VDU.s 15 | Comment | 11 | | 0 | 00/D139 | * 23-Sep-2021 More or less sorted VDU workspace. 3952 | 14 AUXMEM.VDU.s 16 | Comment | 11 | | 0 | 00/D139 | * 26-Sep-2021 Merged together JGH VDU updates and Bobbi GFX updates. 3953 | 14 AUXMEM.VDU.s 17 | Comment | 11 | | 0 | 00/D139 | * Moved all graphics screen access code to gfx.s 3954 | 14 AUXMEM.VDU.s 18 | Comment | 11 | | 0 | 00/D139 | * All 65816-specific code disabled. 3955 | 14 AUXMEM.VDU.s 19 | Comment | 11 | | 0 | 00/D139 | * 29-Sep-2021 Windows VDU 26, VDU 28, VDU 29, colours VDU 20. 3956 | 14 AUXMEM.VDU.s 20 | Comment | 11 | | 0 | 00/D139 | * 01-Oct-2021 VDU 18 (GCOL), start on updating VDU 25 (PLOT). 3957 | 14 AUXMEM.VDU.s 21 | Empty | 11 | | 0 | 00/D139 | 3958 | 14 AUXMEM.VDU.s 22 | Empty | 11 | | 0 | 00/D139 | 3959 | 14 AUXMEM.VDU.s 23 | Comment | 11 | | 0 | 00/D139 | ********************************** 3960 | 14 AUXMEM.VDU.s 24 | Comment | 11 | | 0 | 00/D139 | * VDU DRIVER WORKSPACE LOCATIONS * 3961 | 14 AUXMEM.VDU.s 25 | Comment | 11 | | 0 | 00/D139 | ********************************** 3962 | 14 AUXMEM.VDU.s 26 | Comment | 11 | | 0 | 00/D139 | * # marks variables that can't be moved 3963 | 14 AUXMEM.VDU.s 27 | Comment | 11 | | 0 | 00/D139 | * 3964 | 14 AUXMEM.VDU.s 28 | Comment | 11 | | 0 | 00/D139 | * VDU DRIVER ZERO PAGE 3965 | 14 AUXMEM.VDU.s 29 | Comment | 11 | | 0 | 00/D139 | ********************** 3966 | 14 AUXMEM.VDU.s 30 | Comment | 11 | | 0 | 00/D139 | * $00D0-$00DF VDU driver zero page workspace 3967 | 14 AUXMEM.VDU.s 31 | Equivalence | 11 | | 0 | 00/D139 | VDUSTATUS EQU $D0 ; $D0 # VDU status 3968 | 14 AUXMEM.VDU.s 32 | Comment | 11 | | 0 | 00/D139 | * bit 7 = VDU 21 VDU disabled 3969 | 14 AUXMEM.VDU.s 33 | Comment | 11 | | 0 | 00/D139 | * bit 6 = COPY cursor active 3970 | 14 AUXMEM.VDU.s 34 | Comment | 11 | | 0 | 00/D139 | * bit 5 = VDU 5 Text at graphics cursor 3971 | 14 AUXMEM.VDU.s 35 | Comment | 11 | | 0 | 00/D139 | * bit 4 = (Master shadow display) 3972 | 14 AUXMEM.VDU.s 36 | Comment | 11 | | 0 | 00/D139 | * bit 3 = VDU 28 Text window defined 3973 | 14 AUXMEM.VDU.s 37 | Comment | 11 | | 0 | 00/D139 | * bit 2 = VDU 14 Paged scrolling active 3974 | 14 AUXMEM.VDU.s 38 | Comment | 11 | | 0 | 00/D139 | * bit 1 = Don't scroll (COPY cursor or VDU 5 mode) 3975 | 14 AUXMEM.VDU.s 39 | Comment | 11 | | 0 | 00/D139 | * bit 0 = VDU 2 printer echo active 3976 | 14 AUXMEM.VDU.s 40 | Comment | 11 | | 0 | 00/D139 | * 3977 | 14 AUXMEM.VDU.s 41 | Equivalence | 11 | | 0 | 00/D139 | VDUCHAR EQU {$D0}+1 ; $D1 current control character 3978 | 14 AUXMEM.VDU.s 42 | Equivalence | 11 | | 0 | 00/D139 | VDUTEMP EQU {{$D0}+1} ; &D1 3979 | 14 AUXMEM.VDU.s 43 | Equivalence | 11 | | 0 | 00/D139 | VDUADDR EQU {$D0}+2 ; $D2 address of current char cell 3980 | 14 AUXMEM.VDU.s 44 | Equivalence | 11 | | 0 | 00/D139 | VDUBANK EQU {{$D0}+2}+2 ; $D4 screen bank 3981 | 14 AUXMEM.VDU.s 45 | Equivalence | 11 | | 0 | 00/D139 | VDUADDR2 EQU {{$D0}+2}+3 ; $D5 address being scrolled 3982 | 14 AUXMEM.VDU.s 46 | Equivalence | 11 | | 0 | 00/D139 | VDUBANK2 EQU {{{$D0}+2}+2}+3 ; $D7 screen bank being scrolled 3983 | 14 AUXMEM.VDU.s 47 | Equivalence | 11 | | 0 | 00/D139 | PLOTACTION EQU {$D0}+8 ; &D8 3984 | 14 AUXMEM.VDU.s 48 | Comment | 11 | | 0 | 00/D139 | * 3985 | 14 AUXMEM.VDU.s 49 | Equivalence | 11 | | 0 | 00/D139 | OLDCHAR EQU {$EC} ; &EC character under cursor 3986 | 14 AUXMEM.VDU.s 50 | Equivalence | 11 | | 0 | 00/D139 | COPYCHAR EQU {{$EC}+1} ; &ED character under copy cursor 3987 | 14 AUXMEM.VDU.s 51 | Empty | 11 | | 0 | 00/D139 | 3988 | 14 AUXMEM.VDU.s 52 | Comment | 11 | | 0 | 00/D139 | * VDU DRIVER MAIN WORKSPACE 3989 | 14 AUXMEM.VDU.s 53 | Comment | 11 | | 0 | 00/D139 | *************************** 3990 | 14 AUXMEM.VDU.s 54 | Equivalence | 11 | | 0 | 00/D139 | FXLINES EQU {$190}+217 ; Paged scrolling line counter 3991 | 14 AUXMEM.VDU.s 55 | Equivalence | 11 | | 0 | 00/D139 | FXVDUQLEN EQU {$190}+218 ; Length of pending VDU queue 3992 | 14 AUXMEM.VDU.s 56 | Equivalence | 11 | | 0 | 00/D139 | VDUVARS EQU $290 3993 | 14 AUXMEM.VDU.s 57 | Equivalence | 11 | | 0 | 00/D139 | VDUVAREND EQU $2ED 3994 | 14 AUXMEM.VDU.s 58 | Empty | 11 | | 0 | 00/D139 | 3995 | 14 AUXMEM.VDU.s 59 | Equivalence | 11 | | 0 | 00/D139 | GFXWINLFT EQU {$290}+$00 ; # graphics window left 3996 | 14 AUXMEM.VDU.s 60 | Equivalence | 11 | | 0 | 00/D139 | GFXWINBOT EQU {$290}+$02 ; # graphics window bottom \ window 3997 | 14 AUXMEM.VDU.s 61 | Equivalence | 11 | | 0 | 00/D139 | GFXWINRGT EQU {$290}+$04 ; # graphics window right / size 3998 | 14 AUXMEM.VDU.s 62 | Equivalence | 11 | | 0 | 00/D139 | GFXWINTOP EQU {$290}+$06 ; # graphics window top 3999 | 14 AUXMEM.VDU.s 63 | Equivalence | 11 | | 0 | 00/D139 | TXTWINLFT EQU {$290}+$08 ; # text window left 4000 | 14 AUXMEM.VDU.s 64 | Equivalence | 11 | | 0 | 00/D139 | TXTWINBOT EQU {$290}+$09 ; # text window bottom \ window 4001 | 14 AUXMEM.VDU.s 65 | Equivalence | 11 | | 0 | 00/D139 | TXTWINRGT EQU {$290}+$0A ; # text window right / size 4002 | 14 AUXMEM.VDU.s 66 | Equivalence | 11 | | 0 | 00/D139 | TXTWINTOP EQU {$290}+$0B ; # text window top 4003 | 14 AUXMEM.VDU.s 67 | Equivalence | 11 | | 0 | 00/D139 | GFXORIGX EQU {$290}+$0C ; graphics X origin 4004 | 14 AUXMEM.VDU.s 68 | Equivalence | 11 | | 0 | 00/D139 | GFXORIGY EQU {$290}+$0E ; graphics Y origin 4005 | 14 AUXMEM.VDU.s 69 | Comment | 11 | | 0 | 00/D139 | * 4006 | 14 AUXMEM.VDU.s 70 | Equivalence | 11 | | 0 | 00/D139 | GFXPOSNX EQU {$290}+$10 ; current graphics X posn 4007 | 14 AUXMEM.VDU.s 71 | Equivalence | 11 | | 0 | 00/D139 | GFXPOSNY EQU {$290}+$12 ; current graphics Y posn 4008 | 14 AUXMEM.VDU.s 72 | Equivalence | 11 | | 0 | 00/D139 | GFXLASTX EQU {$290}+$14 ; last graphics X posn 4009 | 14 AUXMEM.VDU.s 73 | Equivalence | 11 | | 0 | 00/D139 | GFXLASTY EQU {$290}+$16 ; last graphics Y posn 4010 | 14 AUXMEM.VDU.s 74 | Equivalence | 11 | | 0 | 00/D139 | VDUTEXTX EQU {$290}+$18 ; # absolute text X posn = POS+WINLFT 4011 | 14 AUXMEM.VDU.s 75 | Equivalence | 11 | | 0 | 00/D139 | VDUTEXTY EQU {$290}+$19 ; # absolute text Y posn = VPOS+WINTOP 4012 | 14 AUXMEM.VDU.s 76 | Equivalence | 11 | | 0 | 00/D139 | VDUCOPYX EQU {$290}+$1A ; absolute COPY text X posn 4013 | 14 AUXMEM.VDU.s 77 | Equivalence | 11 | | 0 | 00/D139 | VDUCOPYY EQU {$290}+$1B ; absolute COPY text Y posn 4014 | 14 AUXMEM.VDU.s 78 | Comment | 11 | | 0 | 00/D139 | * 4015 | 14 AUXMEM.VDU.s 79 | Equivalence | 11 | | 0 | 00/D139 | PIXELPLOTX EQU {$290}+$1C ; PLOT graphics X in pixels 4016 | 14 AUXMEM.VDU.s 80 | Equivalence | 11 | | 0 | 00/D139 | PIXELPLOTY EQU {$290}+$1E ; PLOT graphics Y in pixels 4017 | 14 AUXMEM.VDU.s 81 | Equivalence | 11 | | 0 | 00/D139 | PIXELPOSNX EQU {$290}+$20 ; current graphics X in pixels 4018 | 14 AUXMEM.VDU.s 82 | Equivalence | 11 | | 0 | 00/D139 | PIXELPOSNY EQU {$290}+$22 ; current graphics Y in pixels 4019 | 14 AUXMEM.VDU.s 83 | Equivalence | 11 | | 0 | 00/D139 | PIXELLASTX EQU {$290}+$24 ; last graphics X in pixels 4020 | 14 AUXMEM.VDU.s 84 | Equivalence | 11 | | 0 | 00/D139 | PIXELLASTY EQU {$290}+$26 ; last graphics Y in pixels 4021 | 14 AUXMEM.VDU.s 85 | Equivalence | 11 | | 0 | 00/D139 | VDUWINEND EQU {{$290}+$26}+1 ; VDU 26 clears up to here 4022 | 14 AUXMEM.VDU.s 86 | Comment | 11 | | 0 | 00/D139 | * 4023 | 14 AUXMEM.VDU.s 87 | Equivalence | 11 | | 0 | 00/D139 | CURSOR EQU {$290}+$28 ; character used for cursor 4024 | 14 AUXMEM.VDU.s 88 | Equivalence | 11 | | 0 | 00/D139 | CURSORCP EQU {$290}+$29 ; character used for copy cursor 4025 | 14 AUXMEM.VDU.s 89 | Equivalence | 11 | | 0 | 00/D139 | CURSORED EQU {$290}+$2A ; character used for edit cursor 4026 | 14 AUXMEM.VDU.s 90 | Comment | 11 | | 0 | 00/D139 | * 4027 | 14 AUXMEM.VDU.s 91 | Equivalence | 11 | | 0 | 00/D139 | VDUQ EQU {$290}+$2B ; $2B..$33 4028 | 14 AUXMEM.VDU.s 92 | Equivalence | 11 | | 0 | 00/D139 | VDUQGFXWIND EQU {{$290}+$2B}+1 ; Neatly becomes VDUVARS+$2C 4029 | 14 AUXMEM.VDU.s 93 | Equivalence | 11 | | 0 | 00/D139 | VDUQPLOT EQU {{$290}+$2B}+5 ; Neatly becomes VDUVARS+$30 4030 | 14 AUXMEM.VDU.s 94 | Equivalence | 11 | | 0 | 00/D139 | VDUQCOORD EQU {{$290}+$2B}+5 4031 | 14 AUXMEM.VDU.s 95 | Comment | 11 | | 0 | 00/D139 | * 4032 | 14 AUXMEM.VDU.s 96 | Equivalence | 11 | | 0 | 00/D139 | VDUVAR34 EQU {$290}+$34 4033 | 14 AUXMEM.VDU.s 97 | Equivalence | 11 | | 0 | 00/D139 | VDUMODE EQU {$290}+$35 ; # current MODE 4034 | 14 AUXMEM.VDU.s 98 | Equivalence | 11 | | 0 | 00/D139 | VDUSCREEN EQU {$290}+$36 ; # MODE type 4035 | 14 AUXMEM.VDU.s 99 | Equivalence | 11 | | 0 | 00/D139 | TXTFGD EQU {$290}+$37 ; # Text foreground 4036 | 14 AUXMEM.VDU.s 100 | Equivalence | 11 | | 0 | 00/D139 | TXTBGD EQU {$290}+$38 ; # Text background 4037 | 14 AUXMEM.VDU.s 101 | Equivalence | 11 | | 0 | 00/D139 | GFXFGD EQU {$290}+$39 ; # Graphics foreground 4038 | 14 AUXMEM.VDU.s 102 | Equivalence | 11 | | 0 | 00/D139 | GFXBGD EQU {$290}+$3A ; # Graphics background 4039 | 14 AUXMEM.VDU.s 103 | Equivalence | 11 | | 0 | 00/D139 | GFXPLOTFGD EQU {$290}+$3B ; # Foreground GCOL action 4040 | 14 AUXMEM.VDU.s 104 | Equivalence | 11 | | 0 | 00/D139 | GFXPLOTBGD EQU {$290}+$3C ; # Background GCOL action 4041 | 14 AUXMEM.VDU.s 105 | Equivalence | 11 | | 0 | 00/D139 | VDUBORDER EQU {$290}+$3D ; Border colour 4042 | 14 AUXMEM.VDU.s 106 | Equivalence | 11 | | 0 | 00/D139 | VDUCOLEND EQU {{$290}+$3D} ; VDU 20 clears up to here 4043 | 14 AUXMEM.VDU.s 107 | Comment | 11 | | 0 | 00/D139 | * 4044 | 14 AUXMEM.VDU.s 108 | Equivalence | 11 | | 0 | 00/D139 | VDUVAR3E EQU {$290}+$3E 4045 | 14 AUXMEM.VDU.s 109 | Equivalence | 11 | | 0 | 00/D139 | VDUBYTES EQU {$290}+$3F ; bytes per char, 1=text only 4046 | 14 AUXMEM.VDU.s 110 | Equivalence | 11 | | 0 | 00/D139 | VDUCOLOURS EQU {$290}+$40 ; # colours-1 4047 | 14 AUXMEM.VDU.s 111 | Equivalence | 11 | | 0 | 00/D139 | VDUPIXELS EQU {$290}+$41 ; # pixels per byte 4048 | 14 AUXMEM.VDU.s 112 | Equivalence | 11 | | 0 | 00/D139 | VDUWORKSP EQU {$290}+$42 ; 28 bytes of general workspace 4049 | 14 AUXMEM.VDU.s 113 | Equivalence | 11 | | 0 | 00/D139 | VDUWORKSZ EQU {$2ED}-{{$290}+$42}+1 4050 | 14 AUXMEM.VDU.s 114 | Comment | 11 | | 0 | 00/D139 | * 4051 | 14 AUXMEM.VDU.s 115 | Empty | 11 | | 0 | 00/D139 | 4052 | 14 AUXMEM.VDU.s 116 | Comment | 11 | | 0 | 00/D139 | * Screen definitions 4053 | 14 AUXMEM.VDU.s 117 | Comment | 11 | | 0 | 00/D139 | * 1 3 6 7 ; MODEs sort-of completed 4054 | 14 AUXMEM.VDU.s 118 | Data | 11 | | 8 | 00/D139 : 4F 27 13 4F | SCNTXTMAXX DB 79,39,19,79,39,19,39,39; Max text column | | | | | | 27 13 27 27 | 4055 | 14 AUXMEM.VDU.s 119 | Data | 11 | | 8 | 00/D141 : 17 17 17 17 | SCNTXTMAXY DB 23,23,23,23,23,23,23,23; Max text row | | | | | | 17 17 17 17 | 4056 | 14 AUXMEM.VDU.s 120 | Data | 11 | | 8 | 00/D149 : 01 08 01 01 | SCNBYTES DB 01,08,01,01,01,01,01,01; Bytes per character | | | | | | 01 01 01 01 | 4057 | 14 AUXMEM.VDU.s 121 | Data | 11 | | 8 | 00/D151 : 0F 07 0F 01 | SCNCOLOURS DB 15,07,15,01,01,15,01,01; Colours-1 | | | | | | 01 0F 01 01 | 4058 | 14 AUXMEM.VDU.s 122 | Data | 11 | | 8 | 00/D159 : 00 07 00 00 | SCNPIXELS DB 00,07,00,00,00,00,00,00; Pixels per byte | | | | | | 00 00 00 00 | 4059 | 14 AUXMEM.VDU.s 123 | Data | 11 | | 8 | 00/D161 : 01 80 00 01 | SCNTYPE DB 01,128,0,01,00,00,00,64; Screen type | | | | | | 00 00 00 40 | 4060 | 14 AUXMEM.VDU.s 124 | Comment | 11 | | 0 | 00/D169 | * b7=FastDraw 4061 | 14 AUXMEM.VDU.s 125 | Comment | 11 | | 0 | 00/D169 | * b6=Teletext 4062 | 14 AUXMEM.VDU.s 126 | Comment | 11 | | 0 | 00/D169 | * b0=40COL/80COL 4063 | 14 AUXMEM.VDU.s 127 | Empty | 11 | | 0 | 00/D169 | 4064 | 14 AUXMEM.VDU.s 128 | Comment | 11 | | 0 | 00/D169 | * Colour table 4065 | 14 AUXMEM.VDU.s 129 | Data | 11 | | 8 | 00/D169 : 00 01 04 08 | CLRTRANS16 DB 00,01,04,08,02,14,11,10 | | | | | | 02 0E 0B 0A | 4066 | 14 AUXMEM.VDU.s 130 | Data | 11 | | 8 | 00/D171 : 05 09 0C 0D | DB 05,09,12,13,06,03,07,15 | | | | | | 06 03 07 0F | 4067 | 14 AUXMEM.VDU.s 131 | Data | 11 | | 8 | 00/D179 : 00 05 01 01 | CLRTRANS8 DB 00,05,01,01,06,02,02,07 | | | | | | 06 02 02 07 | 4068 | 14 AUXMEM.VDU.s 132 | Empty | 11 | | 0 | 00/D181 | 4069 | 14 AUXMEM.VDU.s 133 | Comment | 11 | | 0 | 00/D181 | ******************************************************************** 4070 | 14 AUXMEM.VDU.s 134 | Comment | 11 | | 0 | 00/D181 | * Note that we use PAGE2 80 column mode ($800-$BFF in main and aux) 4071 | 14 AUXMEM.VDU.s 135 | Comment | 11 | | 0 | 00/D181 | * and PAGE1 HGR mode ($2000-$23ff in main only) 4072 | 14 AUXMEM.VDU.s 136 | Comment | 11 | | 0 | 00/D181 | ******************************************************************** 4073 | 14 AUXMEM.VDU.s 137 | Empty | 11 | | 0 | 00/D181 | 4074 | 14 AUXMEM.VDU.s 138 | Comment | 11 | | 0 | 00/D181 | * Addresses of start of text rows in PAGE2 4075 | 14 AUXMEM.VDU.s 139 | Data | 11 | | 16 | 00/D181 : 00 08 80 08 | SCNTAB DW $800,$880,$900,$980,$A00,$A80,$B00,$B80 | | | | | | 00 09 80 09 | | | | | | | 00 0A 80 0A | | | | | | | 00 0B 80 0B | 4076 | 14 AUXMEM.VDU.s 140 | Data | 11 | | 16 | 00/D191 : 28 08 A8 08 | DW $828,$8A8,$928,$9A8,$A28,$AA8,$B28,$BA8 | | | | | | 28 09 A8 09 | | | | | | | 28 0A A8 0A | | | | | | | 28 0B A8 0B | 4077 | 14 AUXMEM.VDU.s 141 | Data | 11 | | 16 | 00/D1A1 : 50 08 D0 08 | DW $850,$8D0,$950,$9D0,$A50,$AD0,$B50,$BD0 | | | | | | 50 09 D0 09 | | | | | | | 50 0A D0 0A | | | | | | | 50 0B D0 0B | 4078 | 14 AUXMEM.VDU.s 142 | Empty | 11 | | 0 | 00/D1B1 | 4079 | 14 AUXMEM.VDU.s 143 | Comment | 11 | | 0 | 00/D1B1 | * Addresses of start of pixel rows in PAGE1 4080 | 14 AUXMEM.VDU.s 144 | Data | 11 | | 16 | 00/D1B1 : 00 20 80 20 | HGRTAB DW $2000,$2080,$2100,$2180,$2200,$2280,$2300,$2380 | | | | | | 00 21 80 21 | | | | | | | 00 22 80 22 | | | | | | | 00 23 80 23 | 4081 | 14 AUXMEM.VDU.s 145 | Data | 11 | | 16 | 00/D1C1 : 28 20 A8 20 | DW $2028,$20A8,$2128,$21A8,$2228,$22A8,$2328,$23A8 | | | | | | 28 21 A8 21 | | | | | | | 28 22 A8 22 | | | | | | | 28 23 A8 23 | 4082 | 14 AUXMEM.VDU.s 146 | Data | 11 | | 16 | 00/D1D1 : 50 20 D0 20 | DW $2050,$20D0,$2150,$21D0,$2250,$22D0,$2350,$23D0 | | | | | | 50 21 D0 21 | | | | | | | 50 22 D0 22 | | | | | | | 50 23 D0 23 | 4083 | 14 AUXMEM.VDU.s 147 | Empty | 11 | | 0 | 00/D1E1 | 4084 | 14 AUXMEM.VDU.s 148 | Comment | 11 | | 0 | 00/D1E1 | * Output character to VDU driver 4085 | 14 AUXMEM.VDU.s 149 | Comment | 11 | | 0 | 00/D1E1 | ******************************** 4086 | 14 AUXMEM.VDU.s 150 | Comment | 11 | | 0 | 00/D1E1 | * On entry: A=character 4087 | 14 AUXMEM.VDU.s 151 | Comment | 11 | | 0 | 00/D1E1 | * On exit: All registers trashable 4088 | 14 AUXMEM.VDU.s 152 | Comment | 11 | | 0 | 00/D1E1 | * CS if printer echo enabled for this character 4089 | 14 AUXMEM.VDU.s 153 | Comment | 11 | | 0 | 00/D1E1 | * 4090 | 14 AUXMEM.VDU.s 154 | Code | 11 | | 3 | 00/D1E1 : AE 6A 02 | OUTCHAR LDX {{$190}+218} 4091 | 14 AUXMEM.VDU.s 155 | Code | 11 | | 2 | 00/D1E4 : D0 30 | BNE ADDTOQ ; Waiting for chars 4092 | 14 AUXMEM.VDU.s 156 | Code | 11 | | 2 | 00/D1E6 : C9 7F | CMP #$7F 4093 | 14 AUXMEM.VDU.s 157 | Code | 11 | | 2 | 00/D1E8 : F0 13 | BEQ CTRLDEL ; =$7F - control char 4094 | 14 AUXMEM.VDU.s 158 | Code | 11 | | 2 | 00/D1EA : C9 20 | CMP #$20 4095 | 14 AUXMEM.VDU.s 159 | Code | 11 | | 2 | 00/D1EC : 90 11 | BCC CTRLCHAR ; <$20 - control char 4096 | 14 AUXMEM.VDU.s 160 | Code | 11 | | 2 | 00/D1EE : 24 D0 | BIT {$D0} 4097 | 14 AUXMEM.VDU.s 161 | Code | 11 | | 2 | 00/D1F0 : 30 06 | BMI OUTCHEXIT ; VDU disabled 4098 | 14 AUXMEM.VDU.s 162 | Code | 11 | | 3 | 00/D1F2 : 20 0A D3 | OUTCHARCP JSR PRCHRC ; Store char, checking keypress 4099 | 14 AUXMEM.VDU.s 163 | Code | 11 | | 3 | 00/D1F5 : 20 1B D4 | JSR VDU09 ; Move cursor right 4100 | 14 AUXMEM.VDU.s 164 | Empty | 11 | | 0 | 00/D1F8 | 4101 | 14 AUXMEM.VDU.s 165 | Comment | 11 | | 0 | 00/D1F8 | * OSBYTE &75 - Read VDUSTATUS 4102 | 14 AUXMEM.VDU.s 166 | Comment | 11 | | 0 | 00/D1F8 | ***************************** 4103 | 14 AUXMEM.VDU.s 167 | Empty | 11 | | 0 | 00/D1F8 | BYTE75 4104 | 14 AUXMEM.VDU.s 168 | Code | 11 | | 2 | 00/D1F8 : A5 D0 | OUTCHEXIT LDA {$D0} 4105 | 14 AUXMEM.VDU.s 169 | Code | 11 | | 1 | 00/D1FA : AA | TAX 4106 | 14 AUXMEM.VDU.s 170 | Code | 11 | | 1 | 00/D1FB : 4A | LSR A ; Return Cy=Printer Echo Enabled 4107 | 14 AUXMEM.VDU.s 171 | Code | 11 | | 1 | 00/D1FC : 60 | RTS 4108 | 14 AUXMEM.VDU.s 172 | Empty | 11 | | 0 | 00/D1FD | 4109 | 14 AUXMEM.VDU.s 173 | Code | 11 | | 2 | 00/D1FD : A9 20 | CTRLDEL LDA #$20 ; $7F becomes $20 4110 | 14 AUXMEM.VDU.s 174 | Code | 11 | | 2 | 00/D1FF : C9 01 | CTRLCHAR CMP #$01 4111 | 14 AUXMEM.VDU.s 175 | Code | 11 | | 2 | 00/D201 : F0 04 | BEQ ADDQ ; One param 4112 | 14 AUXMEM.VDU.s 176 | Code | 11 | | 2 | 00/D203 : C9 11 | CMP #$11 4113 | 14 AUXMEM.VDU.s 177 | Code | 11 | | 2 | 00/D205 : 90 19 | BCC CTRLCHARGO ; Zero params 4114 | 14 AUXMEM.VDU.s 178 | Code | 11 | | 2 | 00/D207 : 85 D1 | ADDQ STA {{$D0}+1} ; Save initial character 4115 | 14 AUXMEM.VDU.s 179 | Code | 11 | | 2 | 00/D209 : 29 0F | AND #$0F 4116 | 14 AUXMEM.VDU.s 180 | Code | 11 | | 1 | 00/D20B : AA | TAX 4117 | 14 AUXMEM.VDU.s 181 | Code | 11 | | 3 | 00/D20C : BD 45 D2 | LDA QLEN,X 4118 | 14 AUXMEM.VDU.s 182 | Code | 11 | | 3 | 00/D20F : 8D 6A 02 | STA {{$190}+218} ; Number of params to queue 4119 | 14 AUXMEM.VDU.s 183 | Code | 11 | | 2 | 00/D212 : F0 0A | BEQ CTRLCHARGO1 ; Zero, do it now 4120 | 14 AUXMEM.VDU.s 184 | Code | 11 | | 1 | 00/D214 : 18 | QDONE CLC ; CLC=Don't echo VDU queue to printer 4121 | 14 AUXMEM.VDU.s 185 | Code | 11 | | 1 | 00/D215 : 60 | RTS 4122 | 14 AUXMEM.VDU.s 186 | Code | 11 | | 3 | 00/D216 : 9D C4 01 | ADDTOQ STA {{$290}+$2B}-256+9,X 4123 | 14 AUXMEM.VDU.s 187 | Code | 11 | | 3 | 00/D219 : EE 6A 02 | INC {{$190}+218} 4124 | 14 AUXMEM.VDU.s 188 | Code | 11 | | 2 | 00/D21C : D0 F6 | BNE QDONE 4125 | 14 AUXMEM.VDU.s 189 | Code | 11 | | 2 | 00/D21E : A5 D1 | CTRLCHARGO1 LDA {{$D0}+1} 4126 | 14 AUXMEM.VDU.s 190 | Code | 11 | | 1 | 00/D220 : 0A | CTRLCHARGO ASL A 4127 | 14 AUXMEM.VDU.s 191 | Code | 11 | | 1 | 00/D221 : A8 | TAY 4128 | 14 AUXMEM.VDU.s 192 | Code | 11 | | 2 | 00/D222 : C9 10 | CMP #$10 ; 8*2 4129 | 14 AUXMEM.VDU.s 193 | Code | 11 | | 2 | 00/D224 : 90 04 | BCC CTRLCHARGO2 ; ctrl<$08, don't echo to printer 4130 | 14 AUXMEM.VDU.s 194 | Code | 11 | | 2 | 00/D226 : 49 FF | EOR #$FF ; ctrl>$0D, don't echo to printer 4131 | 14 AUXMEM.VDU.s 195 | Code | 11 | | 2 | 00/D228 : C9 E5 | CMP #$E5 ; (13*2) EOR 255 4132 | 14 AUXMEM.VDU.s 196 | Code | 11 | | 1 | 00/D22A : 08 | CTRLCHARGO2 PHP ; Save CS=(ctrl>=8 && ctrl<=13) 4133 | 14 AUXMEM.VDU.s 197 | Code | 11 | | 3 | 00/D22B : 20 34 D2 | JSR CTRLCHARJMP ; Call routine 4134 | 14 AUXMEM.VDU.s 198 | Code | 11 | | 1 | 00/D22E : 28 | PLP 4135 | 14 AUXMEM.VDU.s 199 | Code | 11 | | 2 | 00/D22F : B0 C7 | BCS OUTCHEXIT ; If echoable, test if printer enabled 4136 | 14 AUXMEM.VDU.s 200 | Code | 11 | | 1 | 00/D231 : 60 | RTS ; Return, CC=Don't echo to printer 4137 | 14 AUXMEM.VDU.s 201 | Empty | 11 | | 0 | 00/D232 | 4138 | 14 AUXMEM.VDU.s 202 | Code | 11 | | 1 | 00/D232 : 0A | OUTCHARGO ASL A ; Entry point to move COPY cursor 4139 | 14 AUXMEM.VDU.s 203 | Code | 11 | | 1 | 00/D233 : A8 | TAY 4140 | 14 AUXMEM.VDU.s 204 | Code | 11 | | 2 | 00/D234 : C0 0C | CTRLCHARJMP CPY #6*2 4141 | 14 AUXMEM.VDU.s 205 | Code | 11 | | 2 | 00/D236 : F0 04 | BEQ CTRLCHAR6 ; Always allow VDU 6 through 4142 | 14 AUXMEM.VDU.s 206 | Code | 11 | | 2 | 00/D238 : 24 D0 | BIT {$D0} 4143 | 14 AUXMEM.VDU.s 207 | Code | 11 | | 2 | 00/D23A : 30 08 | BMI VDU00 ; VDU disabled 4144 | 14 AUXMEM.VDU.s 208 | Code | 11 | | 3 | 00/D23C : B9 56 D2 | CTRLCHAR6 LDA CTRLADDRS+1,Y 4145 | 14 AUXMEM.VDU.s 209 | Code | 11 | | 1 | 00/D23F : 48 | PHA 4146 | 14 AUXMEM.VDU.s 210 | Code | 11 | | 3 | 00/D240 : B9 55 D2 | LDA CTRLADDRS+0,Y 4147 | 14 AUXMEM.VDU.s 211 | Code | 11 | | 1 | 00/D243 : 48 | PHA 4148 | 14 AUXMEM.VDU.s 212 | Empty | 11 | | 0 | 00/D244 | VDU27 4149 | 14 AUXMEM.VDU.s 213 | Code | 11 | | 1 | 00/D244 : 60 | VDU00 RTS 4150 | 14 AUXMEM.VDU.s 214 | Empty | 11 | | 0 | 00/D245 | 4151 | 14 AUXMEM.VDU.s 215 | Data | 11 | | 8 | 00/D245 : 00 FF FE FB | QLEN DB -0,-1,-2,-5,-0,-0,-1,-9; 32,1 or 17,18,19,20,21,22,23 | | | | | | 00 00 FF F7 | 4152 | 14 AUXMEM.VDU.s 216 | Data | 11 | | 8 | 00/D24D : F8 FB 00 00 | DB -8,-5,-0,-0,-4,-4,-0,-2; 24,25,26,27,28,29,30,31 | | | | | | FC FC 00 FE | 4153 | 14 AUXMEM.VDU.s 217 | Data | 11 | | 8 | 00/D255 : 43 D2 28 D7 | CTRLADDRS DW VDU00-1,VDU01-1,VDU02-1,VDU03-1 | | | | | | 96 D2 B1 D2 | 4154 | 14 AUXMEM.VDU.s 218 | Data | 11 | | 8 | 00/D25D : B5 D2 9A D2 | DW VDU04-1,VDU05-1,VDU06-1,BEEP-1 | | | | | | BD D2 D5 EB | 4155 | 14 AUXMEM.VDU.s 219 | Data | 11 | | 8 | 00/D265 : FB D3 1A D4 | DW VDU08-1,VDU09-1,VDU10-1,VDU11-1 | | | | | | 44 D4 52 D4 | 4156 | 14 AUXMEM.VDU.s 220 | Data | 11 | | 8 | 00/D26D : E7 D4 5B D4 | DW VDU12-1,VDU13-1,VDU14-1,VDU15-1 | | | | | | A3 D2 B9 D2 | 4157 | 14 AUXMEM.VDU.s 221 | Data | 11 | | 8 | 00/D275 : EA D5 20 D6 | DW VDU16-1,VDU17-1,VDU18-1,VDU19-1 | | | | | | 37 D6 5B D6 | 4158 | 14 AUXMEM.VDU.s 222 | Data | 11 | | 8 | 00/D27D : ED D5 AA D2 | DW VDU20-1,VDU21-1,VDU22-1,VDU23-1 | | | | | | 8C D4 12 D7 | 4159 | 14 AUXMEM.VDU.s 223 | Data | 11 | | 8 | 00/D285 : C7 D6 E3 D6 | DW VDU24-1,VDU25-1,VDU26-1,VDU27-1 | | | | | | 5C D6 43 D2 | 4160 | 14 AUXMEM.VDU.s 224 | Data | 11 | | 8 | 00/D28D : A2 D6 CE D6 | DW VDU28-1,VDU29-1,VDU30-1,VDU31-1 | | | | | | 64 D4 6B D4 | 4161 | 14 AUXMEM.VDU.s 225 | Data | 11 | | 2 | 00/D295 : 02 D3 | DW VDU127-1 4162 | 14 AUXMEM.VDU.s 226 | Empty | 11 | | 0 | 00/D297 | 4163 | 14 AUXMEM.VDU.s 227 | Empty | 11 | | 0 | 00/D297 | 4164 | 14 AUXMEM.VDU.s 228 | Comment | 11 | | 0 | 00/D297 | * Turn things on and off 4165 | 14 AUXMEM.VDU.s 229 | Comment | 11 | | 0 | 00/D297 | ************************ 4166 | 14 AUXMEM.VDU.s 230 | Empty | 11 | | 0 | 00/D297 | 4167 | 14 AUXMEM.VDU.s 231 | Comment | 11 | | 0 | 00/D297 | * VDU 2 - Start print job 4168 | 14 AUXMEM.VDU.s 232 | Empty | 11 | | 0 | 00/D297 | VDU02 4169 | 14 AUXMEM.VDU.s 233 | Comment | 11 | | 0 | 00/D297 | * JSR select printer 4170 | 14 AUXMEM.VDU.s 234 | Code | 11 | | 2 | 00/D297 : A9 01 | LDA #$01 ; Set PrinterEcho On 4171 | 14 AUXMEM.VDU.s 235 | Code | 11 | | 2 | 00/D299 : D0 12 | BNE SETSTATUS 4172 | 14 AUXMEM.VDU.s 236 | Empty | 11 | | 0 | 00/D29B | 4173 | 14 AUXMEM.VDU.s 237 | Comment | 11 | | 0 | 00/D29B | * VDU 5 - Text at graphics cursor 4174 | 14 AUXMEM.VDU.s 238 | Code | 11 | | 3 | 00/D29B : AE D1 02 | VDU05 LDX {{$290}+$41} 4175 | 14 AUXMEM.VDU.s 239 | Code | 11 | | 2 | 00/D29E : F0 11 | BEQ SETEXIT ; 0 pixels per char, text only 4176 | 14 AUXMEM.VDU.s 240 | Comment | 11 | | 0 | 00/D2A0 | * Turn cursor off and other stuff 4177 | 14 AUXMEM.VDU.s 241 | Code | 11 | | 2 | 00/D2A0 : A9 20 | LDA #$20 ; Set VDU 5 mode 4178 | 14 AUXMEM.VDU.s 242 | Code | 11 | | 2 | 00/D2A2 : D0 09 | BNE SETSTATUS 4179 | 14 AUXMEM.VDU.s 243 | Empty | 11 | | 0 | 00/D2A4 | 4180 | 14 AUXMEM.VDU.s 244 | Comment | 11 | | 0 | 00/D2A4 | * VDU 14 - Select paged scrolling 4181 | 14 AUXMEM.VDU.s 245 | Code | 11 | | 3 | 00/D2A4 : 9C 69 02 | VDU14 STZ {{$190}+217} ; Reset line counter 4182 | 14 AUXMEM.VDU.s 246 | Code | 11 | | 2 | 00/D2A7 : A9 04 | LDA #$04 ; Set Paged Mode 4183 | 14 AUXMEM.VDU.s 247 | Code | 11 | | 2 | 00/D2A9 : D0 02 | BNE SETSTATUS 4184 | 14 AUXMEM.VDU.s 248 | Empty | 11 | | 0 | 00/D2AB | 4185 | 14 AUXMEM.VDU.s 249 | Comment | 11 | | 0 | 00/D2AB | * VDU 21 - Disable VDU 4186 | 14 AUXMEM.VDU.s 250 | Code | 11 | | 2 | 00/D2AB : A9 80 | VDU21 LDA #$80 ; Set VDU disabled 4187 | 14 AUXMEM.VDU.s 251 | Empty | 11 | | 0 | 00/D2AD | 4188 | 14 AUXMEM.VDU.s 252 | Code | 11 | | 2 | 00/D2AD : 05 D0 | SETSTATUS ORA {$D0} ; Set bits in VDU STATUS 4189 | 14 AUXMEM.VDU.s 253 | Code | 11 | | 2 | 00/D2AF : 85 D0 | STA {$D0} 4190 | 14 AUXMEM.VDU.s 254 | Code | 11 | | 1 | 00/D2B1 : 60 | SETEXIT RTS 4191 | 14 AUXMEM.VDU.s 255 | Empty | 11 | | 0 | 00/D2B2 | 4192 | 14 AUXMEM.VDU.s 256 | Comment | 11 | | 0 | 00/D2B2 | * VDU 3 - End print job 4193 | 14 AUXMEM.VDU.s 257 | Empty | 11 | | 0 | 00/D2B2 | VDU03 4194 | 14 AUXMEM.VDU.s 258 | Comment | 11 | | 0 | 00/D2B2 | * JSR flush printer 4195 | 14 AUXMEM.VDU.s 259 | Code | 11 | | 2 | 00/D2B2 : A9 FE | LDA #$FE ; Clear Printer Echo 4196 | 14 AUXMEM.VDU.s 260 | Code | 11 | | 2 | 00/D2B4 : D0 0A | BNE CLRSTATUS 4197 | 14 AUXMEM.VDU.s 261 | Empty | 11 | | 0 | 00/D2B6 | 4198 | 14 AUXMEM.VDU.s 262 | Comment | 11 | | 0 | 00/D2B6 | * VDU 4 - Text at text cursor 4199 | 14 AUXMEM.VDU.s 263 | Empty | 11 | | 0 | 00/D2B6 | VDU04 4200 | 14 AUXMEM.VDU.s 264 | Comment | 11 | | 0 | 00/D2B6 | * Turn cursor on and other stuff 4201 | 14 AUXMEM.VDU.s 265 | Code | 11 | | 2 | 00/D2B6 : A9 DF | LDA #$DF ; Clear VDU 5 mode 4202 | 14 AUXMEM.VDU.s 266 | Code | 11 | | 2 | 00/D2B8 : D0 06 | BNE CLRSTATUS 4203 | 14 AUXMEM.VDU.s 267 | Empty | 11 | | 0 | 00/D2BA | 4204 | 14 AUXMEM.VDU.s 268 | Comment | 11 | | 0 | 00/D2BA | * VDU 15 - Disable paged scrolling 4205 | 14 AUXMEM.VDU.s 269 | Code | 11 | | 2 | 00/D2BA : A9 FB | VDU15 LDA #$FB ; Clear paged scrolling 4206 | 14 AUXMEM.VDU.s 270 | Code | 11 | | 2 | 00/D2BC : 80 02 | BRA CLRSTATUS 4207 | 14 AUXMEM.VDU.s 271 | Empty | 11 | | 0 | 00/D2BE | 4208 | 14 AUXMEM.VDU.s 272 | Comment | 11 | | 0 | 00/D2BE | * VDU 6 - Enable VDU 4209 | 14 AUXMEM.VDU.s 273 | Code | 11 | | 2 | 00/D2BE : A9 7F | VDU06 LDA #$7F ; Clear VDU disabled 4210 | 14 AUXMEM.VDU.s 274 | Empty | 11 | | 0 | 00/D2C0 | 4211 | 14 AUXMEM.VDU.s 275 | Code | 11 | | 2 | 00/D2C0 : 25 D0 | CLRSTATUS AND {$D0} 4212 | 14 AUXMEM.VDU.s 276 | Code | 11 | | 2 | 00/D2C2 : 85 D0 | STA {$D0} 4213 | 14 AUXMEM.VDU.s 277 | Code | 11 | | 1 | 00/D2C4 : 60 | RTS 4214 | 14 AUXMEM.VDU.s 278 | Empty | 11 | | 0 | 00/D2C5 | 4215 | 14 AUXMEM.VDU.s 279 | Empty | 11 | | 0 | 00/D2C5 | 4216 | 14 AUXMEM.VDU.s 280 | Comment | 11 | | 0 | 00/D2C5 | * Editing cursor 4217 | 14 AUXMEM.VDU.s 281 | Comment | 11 | | 0 | 00/D2C5 | **************** 4218 | 14 AUXMEM.VDU.s 282 | Comment | 11 | | 0 | 00/D2C5 | * Move editing cursor 4219 | 14 AUXMEM.VDU.s 283 | Comment | 11 | | 0 | 00/D2C5 | * A=cursor key, CS from caller 4220 | 14 AUXMEM.VDU.s 284 | Code | 11 | | 1 | 00/D2C5 : 48 | COPYMOVE PHA 4221 | 14 AUXMEM.VDU.s 285 | Code | 11 | | 2 | 00/D2C6 : 24 D0 | BIT {$D0} 4222 | 14 AUXMEM.VDU.s 286 | Code | 11 | | 2 | 00/D2C8 : 70 1B | BVS COPYMOVE2 ; Edit cursor already on 4223 | 14 AUXMEM.VDU.s 287 | Code | 11 | | 3 | 00/D2CA : 20 77 D3 | JSR GETCHRC 4224 | 14 AUXMEM.VDU.s 288 | Code | 11 | | 2 | 00/D2CD : 85 ED | STA {{{$EC}+1}} 4225 | 14 AUXMEM.VDU.s 289 | Code | 11 | | 3 | 00/D2CF : AD BA 02 | LDA {{$290}+$2A} 4226 | 14 AUXMEM.VDU.s 290 | Code | 11 | | 3 | 00/D2D2 : 20 36 D3 | JSR PUTCHRC ; Edit cursor 4227 | 14 AUXMEM.VDU.s 291 | Code | 11 | | 1 | 00/D2D5 : 38 | SEC 4228 | 14 AUXMEM.VDU.s 292 | Code | 11 | | 3 | 00/D2D6 : 20 EE D2 | JSR COPYSWAP2 ; Initialise copy cursor 4229 | 14 AUXMEM.VDU.s 293 | Code | 11 | | 3 | 00/D2D9 : 6E 40 02 | ROR {{$190}+176} 4230 | 14 AUXMEM.VDU.s 294 | Code | 11 | | 3 | 00/D2DC : 0E 40 02 | ASL {{$190}+176} ; Ensure b0=0 4231 | 14 AUXMEM.VDU.s 295 | Code | 11 | | 2 | 00/D2DF : A9 42 | LDA #$42 4232 | 14 AUXMEM.VDU.s 296 | Code | 11 | | 2 | 00/D2E1 : 05 D0 | ORA {$D0} 4233 | 14 AUXMEM.VDU.s 297 | Code | 11 | | 2 | 00/D2E3 : 85 D0 | STA {$D0} ; Turn cursor editing on 4234 | 14 AUXMEM.VDU.s 298 | Code | 11 | | 1 | 00/D2E5 : 68 | COPYMOVE2 PLA 4235 | 14 AUXMEM.VDU.s 299 | Code | 11 | | 2 | 00/D2E6 : 29 03 | AND #3 ; Convert to 8/9/10/11 4236 | 14 AUXMEM.VDU.s 300 | Code | 11 | | 2 | 00/D2E8 : 09 08 | ORA #8 4237 | 14 AUXMEM.VDU.s 301 | Code | 11 | | 3 | 00/D2EA : 4C 32 D2 | COPYMOVE3 JMP OUTCHARGO ; Move edit cursor 4238 | 14 AUXMEM.VDU.s 302 | Empty | 11 | | 0 | 00/D2ED | 4239 | 14 AUXMEM.VDU.s 303 | Comment | 11 | | 0 | 00/D2ED | * Swap between edit and copy cursors 4240 | 14 AUXMEM.VDU.s 304 | Code | 11 | | 1 | 00/D2ED : 18 | COPYSWAP1 CLC ; CC=Swap TEXT and COPY 4241 | 14 AUXMEM.VDU.s 305 | Code | 11 | | 2 | 00/D2EE : A2 01 | COPYSWAP2 LDX #1 4242 | 14 AUXMEM.VDU.s 306 | Code | 11 | | 3 | 00/D2F0 : BC AA 02 | COPYSWAPLP LDY {{$290}+$1A},X 4243 | 14 AUXMEM.VDU.s 307 | Code | 11 | | 3 | 00/D2F3 : BD A8 02 | LDA {{$290}+$18},X 4244 | 14 AUXMEM.VDU.s 308 | Code | 11 | | 3 | 00/D2F6 : 9D AA 02 | STA {{$290}+$1A},X 4245 | 14 AUXMEM.VDU.s 309 | Code | 11 | | 2 | 00/D2F9 : B0 04 | BCS COPYSWAP3 ; CS=Copy TEXT to COPY 4246 | 14 AUXMEM.VDU.s 310 | Code | 11 | | 1 | 00/D2FB : 98 | TYA 4247 | 14 AUXMEM.VDU.s 311 | Code | 11 | | 3 | 00/D2FC : 9D A8 02 | STA {{$290}+$18},X 4248 | 14 AUXMEM.VDU.s 312 | Code | 11 | | 1 | 00/D2FF : CA | COPYSWAP3 DEX 4249 | 14 AUXMEM.VDU.s 313 | Code | 11 | | 2 | 00/D300 : 10 EE | BPL COPYSWAPLP 4250 | 14 AUXMEM.VDU.s 314 | Code | 11 | | 1 | 00/D302 : 60 | COPYSWAP4 RTS 4251 | 14 AUXMEM.VDU.s 315 | Empty | 11 | | 0 | 00/D303 | 4252 | 14 AUXMEM.VDU.s 316 | Empty | 11 | | 0 | 00/D303 | 4253 | 14 AUXMEM.VDU.s 317 | Comment | 11 | | 0 | 00/D303 | * Write character to screen 4254 | 14 AUXMEM.VDU.s 318 | Comment | 11 | | 0 | 00/D303 | *************************** 4255 | 14 AUXMEM.VDU.s 319 | Comment | 11 | | 0 | 00/D303 | * Perform backspace & delete operation 4256 | 14 AUXMEM.VDU.s 320 | Code | 11 | | 3 | 00/D303 : 20 FC D3 | VDU127 JSR VDU08 ; Move cursor back 4257 | 14 AUXMEM.VDU.s 321 | Code | 11 | | 2 | 00/D306 : A9 20 | LDA #' ' ; Overwrite with a space 4258 | 14 AUXMEM.VDU.s 322 | Code | 11 | | 2 | 00/D308 : D0 2C | BNE PUTCHRC 4259 | 14 AUXMEM.VDU.s 323 | Empty | 11 | | 0 | 00/D30A | 4260 | 14 AUXMEM.VDU.s 324 | Comment | 11 | | 0 | 00/D30A | * Display character at current (TEXTX,TEXTY) 4261 | 14 AUXMEM.VDU.s 325 | Code | 11 | | 1 | 00/D30A : 48 | PRCHRC PHA ; Save character 4262 | 14 AUXMEM.VDU.s 326 | Code | 11 | | 3 | 00/D30B : AD 00 C0 | LDA $C000 4263 | 14 AUXMEM.VDU.s 327 | Code | 11 | | 2 | 00/D30E : 10 25 | BPL _RESUME ; No key pressed 4264 | 14 AUXMEM.VDU.s 328 | Code | 11 | | 2 | 00/D310 : 49 80 | EOR #$80 4265 | 14 AUXMEM.VDU.s 329 | Code | 11 | | 3 | 00/D312 : 20 83 EB | _PAUSE1 JSR KBDCHKESC ; Ask KBD to test if Escape 4266 | 14 AUXMEM.VDU.s 330 | Code | 11 | | 2 | 00/D315 : 24 FF | BIT {$FF} 4267 | 14 AUXMEM.VDU.s 331 | Code | 11 | | 2 | 00/D317 : 30 19 | BMI _RESUMEACK ; Escape, skip pausing 4268 | 14 AUXMEM.VDU.s 332 | Code | 11 | | 2 | 00/D319 : C9 13 | CMP #$13 4269 | 14 AUXMEM.VDU.s 333 | Code | 11 | | 2 | 00/D31B : D0 18 | BNE _RESUME ; Not Ctrl-S 4270 | 14 AUXMEM.VDU.s 334 | Code | 11 | | 3 | 00/D31D : 8D 10 C0 | STA $C010 ; Ack. keypress 4271 | 14 AUXMEM.VDU.s 335 | Code | 11 | | 3 | 00/D320 : AD 00 C0 | _PAUSE2 LDA $C000 4272 | 14 AUXMEM.VDU.s 336 | Code | 11 | | 2 | 00/D323 : 10 FB | BPL _PAUSE2 ; Loop until keypress 4273 | 14 AUXMEM.VDU.s 337 | Code | 11 | | 2 | 00/D325 : 49 80 | EOR #$80 4274 | 14 AUXMEM.VDU.s 338 | Code | 11 | | 2 | 00/D327 : C9 11 | CMP #$11 ; Ctrl-Q 4275 | 14 AUXMEM.VDU.s 339 | Code | 11 | | 2 | 00/D329 : F0 07 | BEQ _RESUMEACK ; Stop pausing 4276 | 14 AUXMEM.VDU.s 340 | Code | 11 | | 3 | 00/D32B : 20 83 EB | JSR KBDCHKESC ; Ask KBD to test if Escape 4277 | 14 AUXMEM.VDU.s 341 | Code | 11 | | 2 | 00/D32E : 24 FF | BIT {$FF} 4278 | 14 AUXMEM.VDU.s 342 | Code | 11 | | 2 | 00/D330 : 10 EE | BPL _PAUSE2 ; No Escape, keep pausing 4279 | 14 AUXMEM.VDU.s 343 | Code | 11 | | 3 | 00/D332 : 8D 10 C0 | _RESUMEACK STA $C010 ; Ack. keypress 4280 | 14 AUXMEM.VDU.s 344 | Code | 11 | | 1 | 00/D335 : 68 | _RESUME PLA 4281 | 14 AUXMEM.VDU.s 345 | Empty | 11 | | 0 | 00/D336 | 4282 | 14 AUXMEM.VDU.s 346 | Comment | 11 | | 0 | 00/D336 | * Put character to screen 4283 | 14 AUXMEM.VDU.s 347 | Comment | 11 | | 0 | 00/D336 | * Puts character to text screen buffer, then in graphics mode, 4284 | 14 AUXMEM.VDU.s 348 | Comment | 11 | | 0 | 00/D336 | * writes bitmap to graphics screen 4285 | 14 AUXMEM.VDU.s 349 | Code | 11 | | 1 | 00/D336 : 48 | PUTCHRC PHA 4286 | 14 AUXMEM.VDU.s 350 | Code | 11 | | 2 | 00/D337 : 49 80 | EOR #$80 ; Convert character to screen code 4287 | 14 AUXMEM.VDU.s 351 | Code | 11 | | 1 | 00/D339 : AA | TAX 4288 | 14 AUXMEM.VDU.s 352 | Code | 11 | | 2 | 00/D33A : 29 A0 | AND #$A0 4289 | 14 AUXMEM.VDU.s 353 | Code | 11 | | 2 | 00/D33C : D0 0F | BNE PRCHR4 4290 | 14 AUXMEM.VDU.s 354 | Code | 11 | | 2 | 00/D33E : E0 20 | CPX #$20 4291 | 14 AUXMEM.VDU.s 355 | Code | 11 | | 2 | 00/D340 : B0 07 | BCS PRCHR3 ; Not $80-$9F 4292 | 14 AUXMEM.VDU.s 356 | Code | 11 | | 3 | 00/D342 : 2C C6 02 | BIT {{$290}+$36} 4293 | 14 AUXMEM.VDU.s 357 | Code | 11 | | 2 | 00/D345 : 50 02 | BVC PRCHR3 ; Not teletext 4294 | 14 AUXMEM.VDU.s 358 | Code | 11 | | 2 | 00/D347 : A2 E0 | LDX #$E0 ; Convert $80-$9F to space 4295 | 14 AUXMEM.VDU.s 359 | Code | 11 | | 1 | 00/D349 : 8A | PRCHR3 TXA 4296 | 14 AUXMEM.VDU.s 360 | Code | 11 | | 2 | 00/D34A : 49 40 | EOR #$40 4297 | 14 AUXMEM.VDU.s 361 | Code | 11 | | 1 | 00/D34C : AA | TAX 4298 | 14 AUXMEM.VDU.s 362 | Code | 11 | | 3 | 00/D34D : 20 C1 D3 | PRCHR4 JSR CHARADDR ; Find character address 4299 | 14 AUXMEM.VDU.s 363 | Code | 11 | | 1 | 00/D350 : 8A | TXA ; Get character back 4300 | 14 AUXMEM.VDU.s 364 | Code | 11 | | 2 | 00/D351 : 24 D4 | BIT {{{$D0}+2}+2} 4301 | 14 AUXMEM.VDU.s 365 | Code | 11 | | 2 | 00/D353 : 10 0C | BPL PRCHR5 ; Not AppleGS, use short write 4302 | 14 AUXMEM.VDU.s 366 | Macro | 11 | | 0 | 00/D355 | >>> WRTMAIN 4303 | 14 AUXMEM.VDU.s 366 | Code | 11 | | 1 | 00/D355 : 78 | SEI ; Keeps IRQ handler easy 4304 | 14 AUXMEM.VDU.s 366 | Code | 11 | | 3 | 00/D356 : 8D 04 C0 | STA $C004 ; Write to main memory 4305 | 14 AUXMEM.VDU.s 367 | Code | 11 | | 2 | 00/D359 : 97 D2 | STA [{{$D0}+2}],Y 4306 | 14 AUXMEM.VDU.s 368 | Macro | 11 | | 0 | 00/D35B | >>> WRTAUX 4307 | 14 AUXMEM.VDU.s 368 | Code | 11 | | 3 | 00/D35B : 8D 05 C0 | STA $C005 ; Write to aux memory 4308 | 14 AUXMEM.VDU.s 368 | Code | 11 | | 1 | 00/D35E : 58 | CLI ; Normal service resumed 4309 | 14 AUXMEM.VDU.s 369 | Code | 11 | | 2 | 00/D35F : 80 0D | BRA PRCHR8 4310 | 14 AUXMEM.VDU.s 370 | Code | 11 | | 1 | 00/D361 : 08 | PRCHR5 PHP ; Disable IRQs while 4311 | 14 AUXMEM.VDU.s 371 | Code | 11 | | 1 | 00/D362 : 78 | SEI ; toggling memory 4312 | 14 AUXMEM.VDU.s 372 | Code | 11 | | 2 | 00/D363 : 90 03 | BCC PRCHR6 ; Aux memory 4313 | 14 AUXMEM.VDU.s 373 | Code | 11 | | 3 | 00/D365 : 8D 04 C0 | STA $C004 ; Switch to main memory 4314 | 14 AUXMEM.VDU.s 374 | Code | 11 | | 2 | 00/D368 : 91 D2 | PRCHR6 STA ({{$D0}+2}),Y ; Store it 4315 | 14 AUXMEM.VDU.s 375 | Code | 11 | | 3 | 00/D36A : 8D 05 C0 | PRCHR7 STA $C005 ; Back to aux memory 4316 | 14 AUXMEM.VDU.s 376 | Code | 11 | | 1 | 00/D36D : 28 | PLP ; Restore IRQs 4317 | 14 AUXMEM.VDU.s 377 | Code | 11 | | 1 | 00/D36E : 68 | PRCHR8 PLA 4318 | 14 AUXMEM.VDU.s 378 | Code | 11 | | 3 | 00/D36F : 2C C6 02 | BIT {{$290}+$36} 4319 | 14 AUXMEM.VDU.s 379 | Code | 11 | | 2 | 00/D372 : 10 27 | BPL GETCHROK 4320 | 14 AUXMEM.VDU.s 380 | Code | 11 | | 3 | 00/D374 : 4C 2A D7 | JMP PRCHRSOFT ; Write character to graphics 4321 | 14 AUXMEM.VDU.s 381 | Empty | 11 | | 0 | 00/D377 | 4322 | 14 AUXMEM.VDU.s 382 | Comment | 11 | | 0 | 00/D377 | * OSBYTE &87 - Read character at cursor 4323 | 14 AUXMEM.VDU.s 383 | Comment | 11 | | 0 | 00/D377 | *************************************** 4324 | 14 AUXMEM.VDU.s 384 | Comment | 11 | | 0 | 00/D377 | * Fetch character from screen at (TEXTX,TEXTY) and return MODE in Y 4325 | 14 AUXMEM.VDU.s 385 | Comment | 11 | | 0 | 00/D377 | * Always read from text screen (which we maintain even in graphics mode) 4326 | 14 AUXMEM.VDU.s 386 | Empty | 11 | | 0 | 00/D377 | BYTE87 4327 | 14 AUXMEM.VDU.s 387 | Code | 11 | | 3 | 00/D377 : 20 C1 D3 | GETCHRC JSR CHARADDR ; Find character address 4328 | 14 AUXMEM.VDU.s 388 | Code | 11 | | 2 | 00/D37A : 24 D4 | BIT {{{$D0}+2}+2} 4329 | 14 AUXMEM.VDU.s 389 | Code | 11 | | 2 | 00/D37C : 30 1E | BMI GETCHRGS 4330 | 14 AUXMEM.VDU.s 390 | Code | 11 | | 1 | 00/D37E : 08 | PHP ; Disable IRQs while 4331 | 14 AUXMEM.VDU.s 391 | Code | 11 | | 1 | 00/D37F : 78 | SEI ; toggling memory 4332 | 14 AUXMEM.VDU.s 392 | Code | 11 | | 2 | 00/D380 : 90 03 | BCC GETCHR6 ; Aux memory 4333 | 14 AUXMEM.VDU.s 393 | Code | 11 | | 3 | 00/D382 : 8D 02 C0 | STA $C002 ; Switch to main memory 4334 | 14 AUXMEM.VDU.s 394 | Code | 11 | | 2 | 00/D385 : B1 D2 | GETCHR6 LDA ({{$D0}+2}),Y ; Get character 4335 | 14 AUXMEM.VDU.s 395 | Code | 11 | | 3 | 00/D387 : 8D 03 C0 | STA $C003 ; Back to aux memory 4336 | 14 AUXMEM.VDU.s 396 | Code | 11 | | 1 | 00/D38A : 28 | PLP ; Restore IRQs 4337 | 14 AUXMEM.VDU.s 397 | Code | 11 | | 1 | 00/D38B : A8 | TAY ; Convert character 4338 | 14 AUXMEM.VDU.s 398 | Code | 11 | | 2 | 00/D38C : 29 A0 | AND #$A0 4339 | 14 AUXMEM.VDU.s 399 | Code | 11 | | 2 | 00/D38E : D0 04 | BNE GETCHR7 4340 | 14 AUXMEM.VDU.s 400 | Code | 11 | | 1 | 00/D390 : 98 | TYA 4341 | 14 AUXMEM.VDU.s 401 | Code | 11 | | 2 | 00/D391 : 49 40 | EOR #$40 4342 | 14 AUXMEM.VDU.s 402 | Code | 11 | | 1 | 00/D393 : A8 | TAY 4343 | 14 AUXMEM.VDU.s 403 | Code | 11 | | 1 | 00/D394 : 98 | GETCHR7 TYA 4344 | 14 AUXMEM.VDU.s 404 | Code | 11 | | 2 | 00/D395 : 49 80 | EOR #$80 4345 | 14 AUXMEM.VDU.s 405 | Code | 11 | | 3 | 00/D397 : AC C5 02 | LDY {{$290}+$35} ; Y=MODE 4346 | 14 AUXMEM.VDU.s 406 | Code | 11 | | 1 | 00/D39A : AA | TAX ; X=char 4347 | 14 AUXMEM.VDU.s 407 | Code | 11 | | 1 | 00/D39B : 60 | GETCHROK RTS 4348 | 14 AUXMEM.VDU.s 408 | Code | 11 | | 1 | 00/D39C : 08 | GETCHRGS PHP ; Disable IRQs while 4349 | 14 AUXMEM.VDU.s 409 | Code | 11 | | 1 | 00/D39D : 78 | SEI ; toggling memory 4350 | 14 AUXMEM.VDU.s 410 | Code | 11 | | 2 | 00/D39E : 90 03 | BCC GETCHR8 ; Aux memory 4351 | 14 AUXMEM.VDU.s 411 | Code | 11 | | 3 | 00/D3A0 : 8D 02 C0 | STA $C002 ; Switch to main memory 4352 | 14 AUXMEM.VDU.s 412 | Code | 11 | | 2 | 00/D3A3 : B7 D2 | GETCHR8 LDA [{{$D0}+2}],Y ; Get character 4353 | 14 AUXMEM.VDU.s 413 | Code | 11 | | 3 | 00/D3A5 : 8D 03 C0 | STA $C003 ; Back to aux memory 4354 | 14 AUXMEM.VDU.s 414 | Code | 11 | | 1 | 00/D3A8 : 28 | PLP ; Restore IRQs 4355 | 14 AUXMEM.VDU.s 415 | Code | 11 | | 1 | 00/D3A9 : A8 | TAY ; Convert character 4356 | 14 AUXMEM.VDU.s 416 | Code | 11 | | 2 | 00/D3AA : 29 A0 | AND #$A0 4357 | 14 AUXMEM.VDU.s 417 | Code | 11 | | 2 | 00/D3AC : D0 04 | BNE GETCHR9 4358 | 14 AUXMEM.VDU.s 418 | Code | 11 | | 1 | 00/D3AE : 98 | TYA 4359 | 14 AUXMEM.VDU.s 419 | Code | 11 | | 2 | 00/D3AF : 49 40 | EOR #$40 4360 | 14 AUXMEM.VDU.s 420 | Code | 11 | | 1 | 00/D3B1 : A8 | TAY 4361 | 14 AUXMEM.VDU.s 421 | Code | 11 | | 1 | 00/D3B2 : 98 | GETCHR9 TYA 4362 | 14 AUXMEM.VDU.s 422 | Code | 11 | | 2 | 00/D3B3 : 49 80 | EOR #$80 4363 | 14 AUXMEM.VDU.s 423 | Code | 11 | | 3 | 00/D3B5 : AC C5 02 | LDY {{$290}+$35} ; Y=MODE 4364 | 14 AUXMEM.VDU.s 424 | Code | 11 | | 1 | 00/D3B8 : AA | TAX ; X=char, set EQ/NE 4365 | 14 AUXMEM.VDU.s 425 | Code | 11 | | 1 | 00/D3B9 : 60 | RTS 4366 | 14 AUXMEM.VDU.s 426 | Empty | 11 | | 0 | 00/D3BA | 4367 | 14 AUXMEM.VDU.s 427 | Empty | 11 | | 0 | 00/D3BA | 4368 | 14 AUXMEM.VDU.s 428 | Comment | 11 | | 0 | 00/D3BA | * OSBYTE &86 - Get text cursor position 4369 | 14 AUXMEM.VDU.s 429 | Comment | 11 | | 0 | 00/D3BA | *************************************** 4370 | 14 AUXMEM.VDU.s 430 | Code | 11 | | 3 | 00/D3BA : AC A9 02 | BYTE86 LDY {{$290}+$19} 4371 | 14 AUXMEM.VDU.s 431 | Code | 11 | | 3 | 00/D3BD : AE A8 02 | LDX {{$290}+$18} 4372 | 14 AUXMEM.VDU.s 432 | Code | 11 | | 1 | 00/D3C0 : 60 | RTS 4373 | 14 AUXMEM.VDU.s 433 | Empty | 11 | | 0 | 00/D3C1 | 4374 | 14 AUXMEM.VDU.s 434 | Comment | 11 | | 0 | 00/D3C1 | * Calculate character address 4375 | 14 AUXMEM.VDU.s 435 | Comment | 11 | | 0 | 00/D3C1 | ***************************** 4376 | 14 AUXMEM.VDU.s 436 | Comment | 11 | | 0 | 00/D3C1 | * NB: VDUBANK at VDUADDR+2 is set by VDU22 4377 | 14 AUXMEM.VDU.s 437 | Code | 11 | | 3 | 00/D3C1 : AD A9 02 | CHARADDR LDA {{$290}+$19} 4378 | 14 AUXMEM.VDU.s 438 | Code | 11 | | 1 | 00/D3C4 : 0A | CHARADDRY ASL 4379 | 14 AUXMEM.VDU.s 439 | Code | 11 | | 1 | 00/D3C5 : A8 | TAY 4380 | 14 AUXMEM.VDU.s 440 | Code | 11 | | 3 | 00/D3C6 : B9 81 D1 | LDA SCNTAB+0,Y ; LSB of row address 4381 | 14 AUXMEM.VDU.s 441 | Code | 11 | | 2 | 00/D3C9 : 85 D2 | STA {{$D0}+2}+0 4382 | 14 AUXMEM.VDU.s 442 | Code | 11 | | 3 | 00/D3CB : B9 82 D1 | LDA SCNTAB+1,Y ; MSB of row address 4383 | 14 AUXMEM.VDU.s 443 | Code | 11 | | 2 | 00/D3CE : 85 D3 | STA {{$D0}+2}+1 4384 | 14 AUXMEM.VDU.s 444 | Code | 11 | | 3 | 00/D3D0 : AD A8 02 | LDA {{$290}+$18} 4385 | 14 AUXMEM.VDU.s 445 | Code | 11 | | 3 | 00/D3D3 : 2C 1F C0 | BIT $C01F 4386 | 14 AUXMEM.VDU.s 446 | Code | 11 | | 1 | 00/D3D6 : 38 | SEC 4387 | 14 AUXMEM.VDU.s 447 | Code | 11 | | 2 | 00/D3D7 : 10 01 | BPL CHARADDR40 ; 40-col 4388 | 14 AUXMEM.VDU.s 448 | Code | 11 | | 1 | 00/D3D9 : 4A | LSR A 4389 | 14 AUXMEM.VDU.s 449 | Code | 11 | | 1 | 00/D3DA : A8 | CHARADDR40 TAY ; Y=offset into this row 4390 | 14 AUXMEM.VDU.s 450 | Code | 11 | | 2 | 00/D3DB : A5 D4 | LDA {{{$D0}+2}+2} 4391 | 14 AUXMEM.VDU.s 451 | Code | 11 | | 2 | 00/D3DD : 29 FE | AND #$FE 4392 | 14 AUXMEM.VDU.s 452 | Code | 11 | | 2 | 00/D3DF : B0 02 | BCS CHARADDROK 4393 | 14 AUXMEM.VDU.s 453 | Code | 11 | | 2 | 00/D3E1 : 09 01 | ORA #$01 4394 | 14 AUXMEM.VDU.s 454 | Code | 11 | | 2 | 00/D3E3 : 85 D4 | CHARADDROK STA {{{$D0}+2}+2} 4395 | 14 AUXMEM.VDU.s 455 | Code | 11 | | 1 | 00/D3E5 : 60 | RTS 4396 | 14 AUXMEM.VDU.s 456 | Comment | 11 | | 0 | 00/D3E6 | * (VDUADDR),Y=>character address 4397 | 14 AUXMEM.VDU.s 457 | Comment | 11 | | 0 | 00/D3E6 | * VDUBANK = AppleGS screen bank 4398 | 14 AUXMEM.VDU.s 458 | Comment | 11 | | 0 | 00/D3E6 | * CC=auxmem, CS=mainmem, X=preserved 4399 | 14 AUXMEM.VDU.s 459 | Empty | 11 | | 0 | 00/D3E6 | 4400 | 14 AUXMEM.VDU.s 460 | Comment | 11 | | 0 | 00/D3E6 | * Calculate character address in HGR screen memory 4401 | 14 AUXMEM.VDU.s 461 | Comment | 11 | | 0 | 00/D3E6 | * This is the address of the first pixel row of the char 4402 | 14 AUXMEM.VDU.s 462 | Comment | 11 | | 0 | 00/D3E6 | * Add $0400 for each subsequent row of the char 4403 | 14 AUXMEM.VDU.s 463 | Code | 11 | | 3 | 00/D3E6 : AD A9 02 | HCHARADDR LDA {{$290}+$19} 4404 | 14 AUXMEM.VDU.s 464 | Code | 11 | | 1 | 00/D3E9 : 0A | ASL 4405 | 14 AUXMEM.VDU.s 465 | Code | 11 | | 1 | 00/D3EA : A8 | TAY 4406 | 14 AUXMEM.VDU.s 466 | Code | 11 | | 1 | 00/D3EB : 18 | CLC 4407 | 14 AUXMEM.VDU.s 467 | Code | 11 | | 3 | 00/D3EC : B9 B1 D1 | LDA HGRTAB+0,Y ; LSB of row address 4408 | 14 AUXMEM.VDU.s 468 | Code | 11 | | 3 | 00/D3EF : 6D A8 02 | ADC {{$290}+$18} 4409 | 14 AUXMEM.VDU.s 469 | Code | 11 | | 2 | 00/D3F2 : 85 D2 | STA {{$D0}+2}+0 4410 | 14 AUXMEM.VDU.s 470 | Code | 11 | | 3 | 00/D3F4 : B9 B2 D1 | LDA HGRTAB+1,Y ; MSB of row address 4411 | 14 AUXMEM.VDU.s 471 | Code | 11 | | 2 | 00/D3F7 : 69 00 | ADC #$00 4412 | 14 AUXMEM.VDU.s 472 | Code | 11 | | 2 | 00/D3F9 : 85 D3 | STA {{$D0}+2}+1 4413 | 14 AUXMEM.VDU.s 473 | Code | 11 | | 1 | 00/D3FB : 60 | RTS 4414 | 14 AUXMEM.VDU.s 474 | Comment | 11 | | 0 | 00/D3FC | * (VDUADDR)=>character address, X=preserved 4415 | 14 AUXMEM.VDU.s 475 | Empty | 11 | | 0 | 00/D3FC | 4416 | 14 AUXMEM.VDU.s 476 | Empty | 11 | | 0 | 00/D3FC | 4417 | 14 AUXMEM.VDU.s 477 | Comment | 11 | | 0 | 00/D3FC | * Move text cursor position 4418 | 14 AUXMEM.VDU.s 478 | Comment | 11 | | 0 | 00/D3FC | *************************** 4419 | 14 AUXMEM.VDU.s 479 | Comment | 11 | | 0 | 00/D3FC | * Move cursor left 4420 | 14 AUXMEM.VDU.s 480 | Code | 11 | | 3 | 00/D3FC : AD A8 02 | VDU08 LDA {{$290}+$18} ; COL 4421 | 14 AUXMEM.VDU.s 481 | Code | 11 | | 2 | 00/D3FF : F0 05 | BEQ ozunid_154 4422 | 14 AUXMEM.VDU.s 482 | Code | 11 | | 3 | 00/D401 : CE A8 02 | DEC {{$290}+$18} ; COL 4423 | 14 AUXMEM.VDU.s 483 | Code | 11 | | 2 | 00/D404 : 80 14 | BRA ozunid_156 4424 | 14 AUXMEM.VDU.s 484 | Code | 11 | | 3 | 00/D406 : AD A9 02 | ozunid_154 LDA {{$290}+$19} ; ROW 4425 | 14 AUXMEM.VDU.s 485 | Code | 11 | | 2 | 00/D409 : F0 0F | BEQ ozunid_156 4426 | 14 AUXMEM.VDU.s 486 | Code | 11 | | 3 | 00/D40B : CE A9 02 | DEC {{$290}+$19} ; ROW 4427 | 14 AUXMEM.VDU.s 487 | Code | 11 | | 2 | 00/D40E : A9 27 | LDA #39 4428 | 14 AUXMEM.VDU.s 488 | Code | 11 | | 3 | 00/D410 : 2C 1F C0 | BIT $C01F 4429 | 14 AUXMEM.VDU.s 489 | Code | 11 | | 2 | 00/D413 : 10 02 | BPL ozunid_155 4430 | 14 AUXMEM.VDU.s 490 | Code | 11 | | 2 | 00/D415 : A9 4F | LDA #79 4431 | 14 AUXMEM.VDU.s 491 | Code | 11 | | 3 | 00/D417 : 8D A8 02 | ozunid_155 STA {{$290}+$18} ; COL 4432 | 14 AUXMEM.VDU.s 492 | Code | 11 | | 1 | 00/D41A : 60 | ozunid_156 RTS 4433 | 14 AUXMEM.VDU.s 493 | Empty | 11 | | 0 | 00/D41B | 4434 | 14 AUXMEM.VDU.s 494 | Comment | 11 | | 0 | 00/D41B | * Move cursor right 4435 | 14 AUXMEM.VDU.s 495 | Code | 11 | | 3 | 00/D41B : AD A8 02 | VDU09 LDA {{$290}+$18} ; COL 4436 | 14 AUXMEM.VDU.s 496 | Code | 11 | | 2 | 00/D41E : C9 27 | CMP #39 4437 | 14 AUXMEM.VDU.s 497 | Code | 11 | | 2 | 00/D420 : 90 17 | BCC ozunid_158 4438 | 14 AUXMEM.VDU.s 498 | Code | 11 | | 3 | 00/D422 : 2C 1F C0 | BIT $C01F 4439 | 14 AUXMEM.VDU.s 499 | Code | 11 | | 2 | 00/D425 : 10 04 | BPL _T11 4440 | 14 AUXMEM.VDU.s 500 | Code | 11 | | 2 | 00/D427 : C9 4F | CMP #79 4441 | 14 AUXMEM.VDU.s 501 | Code | 11 | | 2 | 00/D429 : 90 0E | BCC ozunid_158 4442 | 14 AUXMEM.VDU.s 502 | Code | 11 | | 3 | 00/D42B : 9C A8 02 | _T11 STZ {{$290}+$18} ; COL 4443 | 14 AUXMEM.VDU.s 503 | Code | 11 | | 3 | 00/D42E : AD A9 02 | LDA {{$290}+$19} ; ROW 4444 | 14 AUXMEM.VDU.s 504 | Code | 11 | | 2 | 00/D431 : C9 17 | CMP #23 4445 | 14 AUXMEM.VDU.s 505 | Code | 11 | | 2 | 00/D433 : F0 09 | BEQ SCROLL 4446 | 14 AUXMEM.VDU.s 506 | Code | 11 | | 3 | 00/D435 : EE A9 02 | INC {{$290}+$19} ; ROW 4447 | 14 AUXMEM.VDU.s 507 | Code | 11 | | 1 | 00/D438 : 60 | ozunid_157 RTS 4448 | 14 AUXMEM.VDU.s 508 | Code | 11 | | 3 | 00/D439 : EE A8 02 | ozunid_158 INC {{$290}+$18} ; COL 4449 | 14 AUXMEM.VDU.s 509 | Code | 11 | | 2 | 00/D43C : 80 FA | BRA ozunid_157 4450 | 14 AUXMEM.VDU.s 510 | Code | 11 | | 3 | 00/D43E : 20 67 D5 | SCROLL JSR SCROLLER 4451 | 14 AUXMEM.VDU.s 511 | Code | 11 | | 3 | 00/D441 : 20 1E D5 | JSR CLRLINE 4452 | 14 AUXMEM.VDU.s 512 | Code | 11 | | 1 | 00/D444 : 60 | RTS 4453 | 14 AUXMEM.VDU.s 513 | Empty | 11 | | 0 | 00/D445 | 4454 | 14 AUXMEM.VDU.s 514 | Comment | 11 | | 0 | 00/D445 | * Move cursor down 4455 | 14 AUXMEM.VDU.s 515 | Code | 11 | | 3 | 00/D445 : AD A9 02 | VDU10 LDA {{$290}+$19} ; ROW 4456 | 14 AUXMEM.VDU.s 516 | Code | 11 | | 2 | 00/D448 : C9 17 | CMP #23 4457 | 14 AUXMEM.VDU.s 517 | Code | 11 | | 2 | 00/D44A : F0 04 | BEQ _TOSCRL ; JGH 4458 | 14 AUXMEM.VDU.s 518 | Code | 11 | | 3 | 00/D44C : EE A9 02 | INC {{$290}+$19} ; ROW 4459 | 14 AUXMEM.VDU.s 519 | Code | 11 | | 1 | 00/D44F : 60 | RTS 4460 | 14 AUXMEM.VDU.s 520 | Code | 11 | | 3 | 00/D450 : 4C 3E D4 | _TOSCRL JMP SCROLL ; JGH 4461 | 14 AUXMEM.VDU.s 521 | Empty | 11 | | 0 | 00/D453 | 4462 | 14 AUXMEM.VDU.s 522 | Comment | 11 | | 0 | 00/D453 | * Move cursor up 4463 | 14 AUXMEM.VDU.s 523 | Code | 11 | | 3 | 00/D453 : AD A9 02 | VDU11 LDA {{$290}+$19} ; ROW 4464 | 14 AUXMEM.VDU.s 524 | Code | 11 | | 2 | 00/D456 : F0 03 | BEQ ozunid_159 4465 | 14 AUXMEM.VDU.s 525 | Code | 11 | | 3 | 00/D458 : CE A9 02 | DEC {{$290}+$19} ; ROW 4466 | 14 AUXMEM.VDU.s 526 | Code | 11 | | 1 | 00/D45B : 60 | ozunid_159 RTS 4467 | 14 AUXMEM.VDU.s 527 | Empty | 11 | | 0 | 00/D45C | 4468 | 14 AUXMEM.VDU.s 528 | Comment | 11 | | 0 | 00/D45C | * Move to start of line 4469 | 14 AUXMEM.VDU.s 529 | Code | 11 | | 2 | 00/D45C : A9 BF | VDU13 LDA #$BF 4470 | 14 AUXMEM.VDU.s 530 | Code | 11 | | 3 | 00/D45E : 20 C0 D2 | JSR CLRSTATUS ; Turn copy cursor off 4471 | 14 AUXMEM.VDU.s 531 | Code | 11 | | 3 | 00/D461 : 9C A8 02 | STZ {{$290}+$18} ; COL 4472 | 14 AUXMEM.VDU.s 532 | Code | 11 | | 1 | 00/D464 : 60 | RTS 4473 | 14 AUXMEM.VDU.s 533 | Empty | 11 | | 0 | 00/D465 | 4474 | 14 AUXMEM.VDU.s 534 | Comment | 11 | | 0 | 00/D465 | * Move to (0,0) 4475 | 14 AUXMEM.VDU.s 535 | Code | 11 | | 3 | 00/D465 : 9C A9 02 | VDU30 STZ {{$290}+$19} ; ROW 4476 | 14 AUXMEM.VDU.s 536 | Code | 11 | | 3 | 00/D468 : 9C A8 02 | STZ {{$290}+$18} ; COL 4477 | 14 AUXMEM.VDU.s 537 | Code | 11 | | 1 | 00/D46B : 60 | RTS 4478 | 14 AUXMEM.VDU.s 538 | Empty | 11 | | 0 | 00/D46C | 4479 | 14 AUXMEM.VDU.s 539 | Comment | 11 | | 0 | 00/D46C | * Move to (X,Y) 4480 | 14 AUXMEM.VDU.s 540 | Code | 11 | | 3 | 00/D46C : AC C3 02 | VDU31 LDY {{$290}+$2B}+8 4481 | 14 AUXMEM.VDU.s 541 | Code | 11 | | 2 | 00/D46F : C0 18 | CPY #24 4482 | 14 AUXMEM.VDU.s 542 | Code | 11 | | 2 | 00/D471 : B0 16 | BCS ozunid_160 4483 | 14 AUXMEM.VDU.s 543 | Code | 11 | | 3 | 00/D473 : AE C2 02 | LDX {{$290}+$2B}+7 4484 | 14 AUXMEM.VDU.s 544 | Code | 11 | | 2 | 00/D476 : E0 50 | CPX #80 4485 | 14 AUXMEM.VDU.s 545 | Code | 11 | | 2 | 00/D478 : B0 0F | BCS ozunid_160 4486 | 14 AUXMEM.VDU.s 546 | Code | 11 | | 3 | 00/D47A : 2C 1F C0 | BIT $C01F 4487 | 14 AUXMEM.VDU.s 547 | Code | 11 | | 2 | 00/D47D : 30 04 | BMI _T9A 4488 | 14 AUXMEM.VDU.s 548 | Code | 11 | | 2 | 00/D47F : E0 28 | CPX #40 4489 | 14 AUXMEM.VDU.s 549 | Code | 11 | | 2 | 00/D481 : B0 06 | BCS ozunid_160 4490 | 14 AUXMEM.VDU.s 550 | Code | 11 | | 3 | 00/D483 : 8E A8 02 | _T9A STX {{$290}+$18} ; COL 4491 | 14 AUXMEM.VDU.s 551 | Code | 11 | | 3 | 00/D486 : 8C A9 02 | STY {{$290}+$19} ; ROW 4492 | 14 AUXMEM.VDU.s 552 | Code | 11 | | 1 | 00/D489 : 60 | ozunid_160 RTS 4493 | 14 AUXMEM.VDU.s 553 | Empty | 11 | | 0 | 00/D48A | 4494 | 14 AUXMEM.VDU.s 554 | Empty | 11 | | 0 | 00/D48A | 4495 | 14 AUXMEM.VDU.s 555 | Comment | 11 | | 0 | 00/D48A | * Initialise VDU driver 4496 | 14 AUXMEM.VDU.s 556 | Comment | 11 | | 0 | 00/D48A | *********************** 4497 | 14 AUXMEM.VDU.s 557 | Comment | 11 | | 0 | 00/D48A | * On entry, A=MODE to start in 4498 | 14 AUXMEM.VDU.s 558 | Comment | 11 | | 0 | 00/D48A | * 4499 | 14 AUXMEM.VDU.s 559 | Code | 11 | | 3 | 00/D48A : 8D C3 02 | VDUINIT STA {{$290}+$2B}+8 4500 | 14 AUXMEM.VDU.s 560 | Comment | 11 | | 0 | 00/D48D | * JSR FONTIMPLODE ; Reset VDU 23 font 4501 | 14 AUXMEM.VDU.s 561 | Empty | 11 | | 0 | 00/D48D | 4502 | 14 AUXMEM.VDU.s 562 | Comment | 11 | | 0 | 00/D48D | * VDU 22 - MODE n 4503 | 14 AUXMEM.VDU.s 563 | Comment | 11 | | 0 | 00/D48D | ***************** 4504 | 14 AUXMEM.VDU.s 564 | Comment | 11 | | 0 | 00/D48D | * At the moment only MODEs available: 4505 | 14 AUXMEM.VDU.s 565 | Comment | 11 | | 0 | 00/D48D | * MODE 1 - 280x192 HGR graphics, 40 cols bitmap text 4506 | 14 AUXMEM.VDU.s 566 | Comment | 11 | | 0 | 00/D48D | * MODE 3 - 80x24 text 4507 | 14 AUXMEM.VDU.s 567 | Comment | 11 | | 0 | 00/D48D | * MODE 6 - 40x24 text 4508 | 14 AUXMEM.VDU.s 568 | Comment | 11 | | 0 | 00/D48D | * MODE 7 - 40x24 with $80-$9F converted to spaces 4509 | 14 AUXMEM.VDU.s 569 | Comment | 11 | | 0 | 00/D48D | * MODE 0 defaults to MODE 3 4510 | 14 AUXMEM.VDU.s 570 | Comment | 11 | | 0 | 00/D48D | * All others default to MODE 6 4511 | 14 AUXMEM.VDU.s 571 | Comment | 11 | | 0 | 00/D48D | * 4512 | 14 AUXMEM.VDU.s 572 | Comment | 11 | | 0 | 00/D48D | * Wait for VSync? 4513 | 14 AUXMEM.VDU.s 573 | Code | 11 | | 3 | 00/D48D : AD C3 02 | VDU22 LDA {{$290}+$2B}+8 4514 | 14 AUXMEM.VDU.s 574 | Code | 11 | | 2 | 00/D490 : 29 07 | AND #$07 4515 | 14 AUXMEM.VDU.s 575 | Code | 11 | | 1 | 00/D492 : AA | TAX ; Set up MODE 4516 | 14 AUXMEM.VDU.s 576 | Code | 11 | | 3 | 00/D493 : 8E C5 02 | STX {{$290}+$35} ; Screen MODE 4517 | 14 AUXMEM.VDU.s 577 | Code | 11 | | 3 | 00/D496 : BD 51 D1 | LDA SCNCOLOURS,X 4518 | 14 AUXMEM.VDU.s 578 | Code | 11 | | 3 | 00/D499 : 8D D0 02 | STA {{$290}+$40} ; Colours-1 4519 | 14 AUXMEM.VDU.s 579 | Code | 11 | | 3 | 00/D49C : BD 49 D1 | LDA SCNBYTES,X 4520 | 14 AUXMEM.VDU.s 580 | Code | 11 | | 3 | 00/D49F : 8D CF 02 | STA {{$290}+$3F} ; Bytes per char 4521 | 14 AUXMEM.VDU.s 581 | Code | 11 | | 3 | 00/D4A2 : BD 59 D1 | LDA SCNPIXELS,X 4522 | 14 AUXMEM.VDU.s 582 | Code | 11 | | 3 | 00/D4A5 : 8D D1 02 | STA {{$290}+$41} ; Pixels per byte 4523 | 14 AUXMEM.VDU.s 583 | Code | 11 | | 3 | 00/D4A8 : BD 61 D1 | LDA SCNTYPE,X 4524 | 14 AUXMEM.VDU.s 584 | Code | 11 | | 3 | 00/D4AB : 8D C6 02 | STA {{$290}+$36} ; Screen type 4525 | 14 AUXMEM.VDU.s 585 | Code | 11 | | 3 | 00/D4AE : 20 A5 EA | JSR NEGCALL ; Find machine type 4526 | 14 AUXMEM.VDU.s 586 | Code | 11 | | 2 | 00/D4B1 : 29 0F | AND #$0F 4527 | 14 AUXMEM.VDU.s 587 | Code | 11 | | 2 | 00/D4B3 : F0 02 | BEQ _MODEGS ; MCHID=$x0 -> Not AppleGS, bank=0 4528 | 14 AUXMEM.VDU.s 588 | Code | 11 | | 2 | 00/D4B5 : A9 E0 | LDA #$E0 ; Not $x0 -> AppleGS, point to screen bank 4529 | 14 AUXMEM.VDU.s 589 | Code | 11 | | 2 | 00/D4B7 : 85 D4 | _MODEGS STA {{{$D0}+2}+2} 4530 | 14 AUXMEM.VDU.s 590 | Code | 11 | | 2 | 00/D4B9 : A9 01 | LDA #$01 4531 | 14 AUXMEM.VDU.s 591 | Code | 11 | | 3 | 00/D4BB : 20 C0 D2 | JSR CLRSTATUS ; Clear everything except PrinterEcho 4532 | 14 AUXMEM.VDU.s 592 | Code | 11 | | 2 | 00/D4BE : A9 5F | LDA #'_' ; Set up default cursors 4533 | 14 AUXMEM.VDU.s 593 | Code | 11 | | 3 | 00/D4C0 : 8D B8 02 | STA {{$290}+$28} ; Normal cursor 4534 | 14 AUXMEM.VDU.s 594 | Code | 11 | | 3 | 00/D4C3 : 8D B9 02 | STA {{$290}+$29} ; Copy cursor when editing 4535 | 14 AUXMEM.VDU.s 595 | Code | 11 | | 2 | 00/D4C6 : A9 A0 | LDA #$A0 4536 | 14 AUXMEM.VDU.s 596 | Code | 11 | | 3 | 00/D4C8 : 8D BA 02 | STA {{$290}+$2A} ; Edit cursor when editing 4537 | 14 AUXMEM.VDU.s 597 | Code | 11 | | 3 | 00/D4CB : 20 EE D5 | JSR VDU20 ; Default colours 4538 | 14 AUXMEM.VDU.s 598 | Code | 11 | | 3 | 00/D4CE : 20 5D D6 | JSR VDU26 ; Default windows 4539 | 14 AUXMEM.VDU.s 599 | Code | 11 | | 3 | 00/D4D1 : 8D 52 C0 | STA $C052 ; Clear MIXED 4540 | 14 AUXMEM.VDU.s 600 | Code | 11 | | 3 | 00/D4D4 : AD C6 02 | LDA {{$290}+$36} 4541 | 14 AUXMEM.VDU.s 601 | Code | 11 | | 2 | 00/D4D7 : 30 36 | BMI VDU22G ; b7=1, graphics mode 4542 | 14 AUXMEM.VDU.s 602 | Code | 11 | | 2 | 00/D4D9 : 29 01 | AND #$01 ; 40col/80col bit 4543 | 14 AUXMEM.VDU.s 603 | Code | 11 | | 1 | 00/D4DB : AA | TAX 4544 | 14 AUXMEM.VDU.s 604 | Code | 11 | | 3 | 00/D4DC : 9D 0C C0 | STA $C00C,X ; Select 40col/80col 4545 | 14 AUXMEM.VDU.s 605 | Code | 11 | | 3 | 00/D4DF : 8D 51 C0 | STA $C051 ; Enable Text 4546 | 14 AUXMEM.VDU.s 606 | Code | 11 | | 3 | 00/D4E2 : 8D 55 C0 | STA $C055 ; PAGE2 4547 | 14 AUXMEM.VDU.s 607 | Code | 11 | | 3 | 00/D4E5 : 8D 0F C0 | STA $C00F ; Enable alt charset 4548 | 14 AUXMEM.VDU.s 608 | Comment | 11 | | 0 | 00/D4E8 | * Fall through into CLS 4549 | 14 AUXMEM.VDU.s 609 | Empty | 11 | | 0 | 00/D4E8 | 4550 | 14 AUXMEM.VDU.s 610 | Empty | 11 | | 0 | 00/D4E8 | 4551 | 14 AUXMEM.VDU.s 611 | Comment | 11 | | 0 | 00/D4E8 | * Clear areas of the screen 4552 | 14 AUXMEM.VDU.s 612 | Comment | 11 | | 0 | 00/D4E8 | *************************** 4553 | 14 AUXMEM.VDU.s 613 | Code | 11 | | 3 | 00/D4E8 : 9C 69 02 | VDU12 STZ {{$190}+217} 4554 | 14 AUXMEM.VDU.s 614 | Code | 11 | | 3 | 00/D4EB : 9C A8 02 | STZ {{$290}+$18} 4555 | 14 AUXMEM.VDU.s 615 | Code | 11 | | 3 | 00/D4EE : 9C A9 02 | STZ {{$290}+$19} 4556 | 14 AUXMEM.VDU.s 616 | Empty | 11 | | 0 | 00/D4F1 | 4557 | 14 AUXMEM.VDU.s 617 | Comment | 11 | | 0 | 00/D4F1 | * Clear the text screen buffer 4558 | 14 AUXMEM.VDU.s 618 | Code | 11 | | 3 | 00/D4F1 : 20 1E D5 | ozunid_161 JSR CLREOL 4559 | 14 AUXMEM.VDU.s 619 | Code | 11 | | 3 | 00/D4F4 : AD A9 02 | ozunid_162 LDA {{$290}+$19} ; ROW 4560 | 14 AUXMEM.VDU.s 620 | Code | 11 | | 2 | 00/D4F7 : C9 17 | CMP #23 4561 | 14 AUXMEM.VDU.s 621 | Code | 11 | | 2 | 00/D4F9 : F0 05 | BEQ ozunid_163 4562 | 14 AUXMEM.VDU.s 622 | Code | 11 | | 3 | 00/D4FB : EE A9 02 | INC {{$290}+$19} ; ROW 4563 | 14 AUXMEM.VDU.s 623 | Code | 11 | | 2 | 00/D4FE : 80 F1 | BRA ozunid_161 4564 | 14 AUXMEM.VDU.s 624 | Code | 11 | | 3 | 00/D500 : 9C A9 02 | ozunid_163 STZ {{$290}+$19} ; ROW 4565 | 14 AUXMEM.VDU.s 625 | Code | 11 | | 3 | 00/D503 : 9C A8 02 | STZ {{$290}+$18} ; COL 4566 | 14 AUXMEM.VDU.s 626 | Code | 11 | | 3 | 00/D506 : 2C C6 02 | BIT {{$290}+$36} 4567 | 14 AUXMEM.VDU.s 627 | Code | 11 | | 2 | 00/D509 : 30 01 | BMI VDU12SOFT ; Graphics mode 4568 | 14 AUXMEM.VDU.s 628 | Code | 11 | | 1 | 00/D50B : 60 | RTS 4569 | 14 AUXMEM.VDU.s 629 | Comment | 11 | | 0 | 00/D50C | * Clear the graphics screen buffer 4570 | 14 AUXMEM.VDU.s 630 | Code | 11 | | 3 | 00/D50C : 4C EB D5 | VDU12SOFT JMP VDU16 ; *TEMP* 4571 | 14 AUXMEM.VDU.s 631 | Empty | 11 | | 0 | 00/D50F | 4572 | 14 AUXMEM.VDU.s 632 | Code | 11 | | 3 | 00/D50F : 8D 50 C0 | VDU22G STA $C050 ; Enable Graphics 4573 | 14 AUXMEM.VDU.s 633 | Code | 11 | | 3 | 00/D512 : 8D 57 C0 | STA $C057 ; Hi-Res 4574 | 14 AUXMEM.VDU.s 634 | Code | 11 | | 3 | 00/D515 : 8D 54 C0 | STA $C054 ; PAGE1 4575 | 14 AUXMEM.VDU.s 635 | Code | 11 | | 3 | 00/D518 : 8D 0C C0 | STA $C00C ; Select 40col text 4576 | 14 AUXMEM.VDU.s 636 | Code | 11 | | 3 | 00/D51B : 4C E8 D4 | JMP VDU12 ; Clear text and HGR screen 4577 | 14 AUXMEM.VDU.s 637 | Empty | 11 | | 0 | 00/D51E | 4578 | 14 AUXMEM.VDU.s 638 | Comment | 11 | | 0 | 00/D51E | * Clear to EOL 4579 | 14 AUXMEM.VDU.s 639 | Empty | 11 | | 0 | 00/D51E | CLRLINE 4580 | 14 AUXMEM.VDU.s 640 | Code | 11 | | 3 | 00/D51E : 20 C1 D3 | CLREOL JSR CHARADDR ; Set VDUADDR=>start of line 4581 | 14 AUXMEM.VDU.s 641 | Code | 11 | | 2 | 00/D521 : 24 D4 | BIT {{{$D0}+2}+2} 4582 | 14 AUXMEM.VDU.s 642 | Code | 11 | | 2 | 00/D523 : 30 1D | BMI CLREOLGS ; AppleGS 4583 | 14 AUXMEM.VDU.s 643 | Code | 11 | | 2 | 00/D525 : A0 27 | LDY #39 4584 | 14 AUXMEM.VDU.s 644 | Code | 11 | | 2 | 00/D527 : A9 A0 | LDA #$A0 4585 | 14 AUXMEM.VDU.s 645 | Code | 11 | | 2 | 00/D529 : 91 D2 | ozunid_164 STA ({{$D0}+2}),Y 4586 | 14 AUXMEM.VDU.s 646 | Code | 11 | | 1 | 00/D52B : 08 | PHP 4587 | 14 AUXMEM.VDU.s 647 | Code | 11 | | 1 | 00/D52C : 78 | SEI 4588 | 14 AUXMEM.VDU.s 648 | Code | 11 | | 3 | 00/D52D : 8D 04 C0 | STA $C004 4589 | 14 AUXMEM.VDU.s 649 | Code | 11 | | 2 | 00/D530 : 91 D2 | STA ({{$D0}+2}),Y 4590 | 14 AUXMEM.VDU.s 650 | Code | 11 | | 3 | 00/D532 : 8D 05 C0 | STA $C005 4591 | 14 AUXMEM.VDU.s 651 | Code | 11 | | 1 | 00/D535 : 28 | PLP 4592 | 14 AUXMEM.VDU.s 652 | Code | 11 | | 1 | 00/D536 : 88 | DEY 4593 | 14 AUXMEM.VDU.s 653 | Code | 11 | | 2 | 00/D537 : 10 F0 | BPL ozunid_164 4594 | 14 AUXMEM.VDU.s 654 | Code | 11 | | 3 | 00/D539 : 2C C6 02 | BIT {{$290}+$36} 4595 | 14 AUXMEM.VDU.s 655 | Code | 11 | | 2 | 00/D53C : 10 03 | BPL CLREOLOK 4596 | 14 AUXMEM.VDU.s 656 | Code | 11 | | 3 | 00/D53E : 4C 8F D7 | JMP HSCRCLREOL ; Clear an HGR line 4597 | 14 AUXMEM.VDU.s 657 | Code | 11 | | 1 | 00/D541 : 60 | CLREOLOK RTS 4598 | 14 AUXMEM.VDU.s 658 | Code | 11 | | 2 | 00/D542 : A2 01 | CLREOLGS LDX #1 4599 | 14 AUXMEM.VDU.s 659 | Code | 11 | | 2 | 00/D544 : A0 27 | ozunid_165 LDY #39 4600 | 14 AUXMEM.VDU.s 660 | Code | 11 | | 2 | 00/D546 : A9 A0 | LDA #$A0 4601 | 14 AUXMEM.VDU.s 661 | Macro | 11 | | 0 | 00/D548 | ozunid_166 >>> WRTMAIN 4602 | 14 AUXMEM.VDU.s 661 | Code | 11 | | 1 | 00/D548 : 78 | SEI ; Keeps IRQ handler easy 4603 | 14 AUXMEM.VDU.s 661 | Code | 11 | | 3 | 00/D549 : 8D 04 C0 | STA $C004 ; Write to main memory 4604 | 14 AUXMEM.VDU.s 662 | Code | 11 | | 2 | 00/D54C : 97 D2 | STA [{{$D0}+2}],Y 4605 | 14 AUXMEM.VDU.s 663 | Macro | 11 | | 0 | 00/D54E | >>> WRTAUX 4606 | 14 AUXMEM.VDU.s 663 | Code | 11 | | 3 | 00/D54E : 8D 05 C0 | STA $C005 ; Write to aux memory 4607 | 14 AUXMEM.VDU.s 663 | Code | 11 | | 1 | 00/D551 : 58 | CLI ; Normal service resumed 4608 | 14 AUXMEM.VDU.s 664 | Code | 11 | | 1 | 00/D552 : 88 | DEY 4609 | 14 AUXMEM.VDU.s 665 | Code | 11 | | 2 | 00/D553 : 10 F3 | BPL ozunid_166 4610 | 14 AUXMEM.VDU.s 666 | Code | 11 | | 2 | 00/D555 : A5 D4 | LDA {{{$D0}+2}+2} 4611 | 14 AUXMEM.VDU.s 667 | Code | 11 | | 2 | 00/D557 : 49 01 | EOR #$01 4612 | 14 AUXMEM.VDU.s 668 | Code | 11 | | 2 | 00/D559 : 85 D4 | STA {{{$D0}+2}+2} 4613 | 14 AUXMEM.VDU.s 669 | Code | 11 | | 1 | 00/D55B : CA | DEX 4614 | 14 AUXMEM.VDU.s 670 | Code | 11 | | 2 | 00/D55C : 10 E6 | BPL ozunid_165 4615 | 14 AUXMEM.VDU.s 671 | Code | 11 | | 3 | 00/D55E : 2C C6 02 | BIT {{$290}+$36} 4616 | 14 AUXMEM.VDU.s 672 | Code | 11 | | 2 | 00/D561 : 10 DE | BPL CLREOLOK 4617 | 14 AUXMEM.VDU.s 673 | Code | 11 | | 3 | 00/D563 : 4C 8F D7 | JMP HSCRCLREOL ; Clear an HGR line 4618 | 14 AUXMEM.VDU.s 674 | Code | 11 | | 1 | 00/D566 : 60 | RTS 4619 | 14 AUXMEM.VDU.s 675 | Empty | 11 | | 0 | 00/D567 | 4620 | 14 AUXMEM.VDU.s 676 | Empty | 11 | | 0 | 00/D567 | 4621 | 14 AUXMEM.VDU.s 677 | Comment | 11 | | 0 | 00/D567 | * Scroll areas of the screen 4622 | 14 AUXMEM.VDU.s 678 | Comment | 11 | | 0 | 00/D567 | **************************** 4623 | 14 AUXMEM.VDU.s 679 | Comment | 11 | | 0 | 00/D567 | * Scroll whole screen one line 4624 | 14 AUXMEM.VDU.s 680 | Code | 11 | | 2 | 00/D567 : A9 00 | SCROLLER LDA #$00 4625 | 14 AUXMEM.VDU.s 681 | Code | 11 | | 1 | 00/D569 : 48 | ozunid_167 PHA 4626 | 14 AUXMEM.VDU.s 682 | Code | 11 | | 3 | 00/D56A : 20 83 D5 | JSR SCR1LINE 4627 | 14 AUXMEM.VDU.s 683 | Code | 11 | | 1 | 00/D56D : 68 | PLA 4628 | 14 AUXMEM.VDU.s 684 | Code | 11 | | 1 | 00/D56E : 1A | INC 4629 | 14 AUXMEM.VDU.s 685 | Code | 11 | | 2 | 00/D56F : C9 17 | CMP #23 4630 | 14 AUXMEM.VDU.s 686 | Code | 11 | | 2 | 00/D571 : D0 F6 | BNE ozunid_167 4631 | 14 AUXMEM.VDU.s 687 | Code | 11 | | 2 | 00/D573 : 24 D0 | BIT {$D0} 4632 | 14 AUXMEM.VDU.s 688 | Code | 11 | | 2 | 00/D575 : 50 0B | BVC ozunid_168 ; Copy cursor not active 4633 | 14 AUXMEM.VDU.s 689 | Code | 11 | | 3 | 00/D577 : 20 ED D2 | JSR COPYSWAP1 4634 | 14 AUXMEM.VDU.s 690 | Code | 11 | | 2 | 00/D57A : A9 0B | LDA #11 4635 | 14 AUXMEM.VDU.s 691 | Code | 11 | | 3 | 00/D57C : 20 32 D2 | JSR OUTCHARGO 4636 | 14 AUXMEM.VDU.s 692 | Code | 11 | | 3 | 00/D57F : 20 ED D2 | JSR COPYSWAP1 4637 | 14 AUXMEM.VDU.s 693 | Code | 11 | | 1 | 00/D582 : 60 | ozunid_168 RTS 4638 | 14 AUXMEM.VDU.s 694 | Empty | 11 | | 0 | 00/D583 | 4639 | 14 AUXMEM.VDU.s 695 | Comment | 11 | | 0 | 00/D583 | * Copy line A+1 to line A 4640 | 14 AUXMEM.VDU.s 696 | Code | 11 | | 1 | 00/D583 : 48 | SCR1LINE PHA 4641 | 14 AUXMEM.VDU.s 697 | Code | 11 | | 3 | 00/D584 : 20 C4 D3 | JSR CHARADDRY ; VDUADDR=>line A 4642 | 14 AUXMEM.VDU.s 698 | Code | 11 | | 2 | 00/D587 : A2 02 | LDX #2 4643 | 14 AUXMEM.VDU.s 699 | Code | 11 | | 2 | 00/D589 : B5 D2 | ozunid_169 LDA {{$D0}+2},X ; Copy to VDUADDR2 4644 | 14 AUXMEM.VDU.s 700 | Code | 11 | | 2 | 00/D58B : 95 D5 | STA {{{$D0}+2}+3},X 4645 | 14 AUXMEM.VDU.s 701 | Code | 11 | | 1 | 00/D58D : CA | DEX 4646 | 14 AUXMEM.VDU.s 702 | Code | 11 | | 2 | 00/D58E : 10 F9 | BPL ozunid_169 4647 | 14 AUXMEM.VDU.s 703 | Code | 11 | | 1 | 00/D590 : 68 | PLA 4648 | 14 AUXMEM.VDU.s 704 | Code | 11 | | 1 | 00/D591 : 48 | PHA 4649 | 14 AUXMEM.VDU.s 705 | Code | 11 | | 1 | 00/D592 : 1A | INC A 4650 | 14 AUXMEM.VDU.s 706 | Code | 11 | | 3 | 00/D593 : 20 C4 D3 | JSR CHARADDRY ; VDUADDR=>line A+1 4651 | 14 AUXMEM.VDU.s 707 | Code | 11 | | 2 | 00/D596 : 24 D4 | BIT {{{$D0}+2}+2} 4652 | 14 AUXMEM.VDU.s 708 | Code | 11 | | 2 | 00/D598 : 30 23 | BMI SCROLLGS 4653 | 14 AUXMEM.VDU.s 709 | Code | 11 | | 2 | 00/D59A : A0 27 | LDY #39 4654 | 14 AUXMEM.VDU.s 710 | Code | 11 | | 2 | 00/D59C : B1 D2 | ozunid_170 LDA ({{$D0}+2}),Y 4655 | 14 AUXMEM.VDU.s 711 | Code | 11 | | 2 | 00/D59E : 91 D5 | STA ({{{$D0}+2}+3}),Y 4656 | 14 AUXMEM.VDU.s 712 | Code | 11 | | 1 | 00/D5A0 : 08 | PHP 4657 | 14 AUXMEM.VDU.s 713 | Code | 11 | | 1 | 00/D5A1 : 78 | SEI 4658 | 14 AUXMEM.VDU.s 714 | Code | 11 | | 3 | 00/D5A2 : 8D 02 C0 | STA $C002 ; Read main mem 4659 | 14 AUXMEM.VDU.s 715 | Code | 11 | | 3 | 00/D5A5 : 8D 04 C0 | STA $C004 ; Write main mem 4660 | 14 AUXMEM.VDU.s 716 | Code | 11 | | 2 | 00/D5A8 : B1 D2 | LDA ({{$D0}+2}),Y 4661 | 14 AUXMEM.VDU.s 717 | Code | 11 | | 2 | 00/D5AA : 91 D5 | STA ({{{$D0}+2}+3}),Y 4662 | 14 AUXMEM.VDU.s 718 | Code | 11 | | 3 | 00/D5AC : 8D 03 C0 | STA $C003 ; Read aux mem 4663 | 14 AUXMEM.VDU.s 719 | Code | 11 | | 3 | 00/D5AF : 8D 05 C0 | STA $C005 ; Write aux mem 4664 | 14 AUXMEM.VDU.s 720 | Code | 11 | | 1 | 00/D5B2 : 28 | PLP 4665 | 14 AUXMEM.VDU.s 721 | Code | 11 | | 1 | 00/D5B3 : 88 | DEY 4666 | 14 AUXMEM.VDU.s 722 | Code | 11 | | 2 | 00/D5B4 : 10 E6 | BPL ozunid_170 4667 | 14 AUXMEM.VDU.s 723 | Code | 11 | | 1 | 00/D5B6 : 68 | PLA 4668 | 14 AUXMEM.VDU.s 724 | Code | 11 | | 3 | 00/D5B7 : 2C C6 02 | BIT {{$290}+$36} ; Also screen graphics screen 4669 | 14 AUXMEM.VDU.s 725 | Code | 11 | | 2 | 00/D5BA : 30 2C | BMI SCR1SOFT 4670 | 14 AUXMEM.VDU.s 726 | Code | 11 | | 1 | 00/D5BC : 60 | RTS 4671 | 14 AUXMEM.VDU.s 727 | Code | 11 | | 2 | 00/D5BD : A2 01 | SCROLLGS LDX #1 4672 | 14 AUXMEM.VDU.s 728 | Code | 11 | | 2 | 00/D5BF : A0 27 | ozunid_171 LDY #39 4673 | 14 AUXMEM.VDU.s 729 | Macro | 11 | | 0 | 00/D5C1 | _L5 >>> WRTMAIN 4674 | 14 AUXMEM.VDU.s 729 | Code | 11 | | 1 | 00/D5C1 : 78 | SEI ; Keeps IRQ handler easy 4675 | 14 AUXMEM.VDU.s 729 | Code | 11 | | 3 | 00/D5C2 : 8D 04 C0 | STA $C004 ; Write to main memory 4676 | 14 AUXMEM.VDU.s 730 | Code | 11 | | 3 | 00/D5C5 : 8D 02 C0 | STA $C002 ; Read main mem 4677 | 14 AUXMEM.VDU.s 731 | Code | 11 | | 2 | 00/D5C8 : B7 D2 | LDA [{{$D0}+2}],Y 4678 | 14 AUXMEM.VDU.s 732 | Code | 11 | | 2 | 00/D5CA : 97 D5 | STA [{{{$D0}+2}+3}],Y 4679 | 14 AUXMEM.VDU.s 733 | Code | 11 | | 3 | 00/D5CC : 8D 03 C0 | STA $C003 ; Read aux mem 4680 | 14 AUXMEM.VDU.s 734 | Macro | 11 | | 0 | 00/D5CF | >>> WRTAUX 4681 | 14 AUXMEM.VDU.s 734 | Code | 11 | | 3 | 00/D5CF : 8D 05 C0 | STA $C005 ; Write to aux memory 4682 | 14 AUXMEM.VDU.s 734 | Code | 11 | | 1 | 00/D5D2 : 58 | CLI ; Normal service resumed 4683 | 14 AUXMEM.VDU.s 735 | Code | 11 | | 1 | 00/D5D3 : 88 | DEY 4684 | 14 AUXMEM.VDU.s 736 | Code | 11 | | 2 | 00/D5D4 : 10 EB | BPL _L5 4685 | 14 AUXMEM.VDU.s 737 | Code | 11 | | 2 | 00/D5D6 : A5 D4 | LDA {{{$D0}+2}+2} 4686 | 14 AUXMEM.VDU.s 738 | Code | 11 | | 2 | 00/D5D8 : 49 01 | EOR #$01 4687 | 14 AUXMEM.VDU.s 739 | Code | 11 | | 2 | 00/D5DA : 85 D4 | STA {{{$D0}+2}+2} 4688 | 14 AUXMEM.VDU.s 740 | Code | 11 | | 2 | 00/D5DC : 85 D7 | STA {{{{$D0}+2}+2}+3} 4689 | 14 AUXMEM.VDU.s 741 | Code | 11 | | 1 | 00/D5DE : CA | DEX 4690 | 14 AUXMEM.VDU.s 742 | Code | 11 | | 2 | 00/D5DF : 10 DE | BPL ozunid_171 4691 | 14 AUXMEM.VDU.s 743 | Code | 11 | | 1 | 00/D5E1 : 68 | PLA 4692 | 14 AUXMEM.VDU.s 744 | Code | 11 | | 3 | 00/D5E2 : 2C C6 02 | BIT {{$290}+$36} ; Also screen graphics screen 4693 | 14 AUXMEM.VDU.s 745 | Code | 11 | | 2 | 00/D5E5 : 30 01 | BMI SCR1SOFT 4694 | 14 AUXMEM.VDU.s 746 | Code | 11 | | 1 | 00/D5E7 : 60 | RTS 4695 | 14 AUXMEM.VDU.s 747 | Empty | 11 | | 0 | 00/D5E8 | 4696 | 14 AUXMEM.VDU.s 748 | Comment | 11 | | 0 | 00/D5E8 | * Copy text line A+1 to line A for HGR bitmap gfx mode 4697 | 14 AUXMEM.VDU.s 749 | Code | 11 | | 3 | 00/D5E8 : 4C 72 D7 | SCR1SOFT JMP HSCR1LINE 4698 | 14 AUXMEM.VDU.s 750 | Empty | 11 | | 0 | 00/D5EB | 4699 | 14 AUXMEM.VDU.s 751 | Comment | 11 | | 0 | 00/D5EB | * VDU 16 - CLG, clear graphics window 4700 | 14 AUXMEM.VDU.s 752 | Code | 11 | | 3 | 00/D5EB : 4C BF D7 | VDU16 JMP HSCRCLEAR 4701 | 14 AUXMEM.VDU.s 753 | Empty | 11 | | 0 | 00/D5EE | 4702 | 14 AUXMEM.VDU.s 754 | Empty | 11 | | 0 | 00/D5EE | 4703 | 14 AUXMEM.VDU.s 755 | Comment | 11 | | 0 | 00/D5EE | * Colour control 4704 | 14 AUXMEM.VDU.s 756 | Comment | 11 | | 0 | 00/D5EE | **************** 4705 | 14 AUXMEM.VDU.s 757 | Comment | 11 | | 0 | 00/D5EE | * VDU 20 - Reset to default colours 4706 | 14 AUXMEM.VDU.s 758 | Code | 11 | | 2 | 00/D5EE : A9 F0 | VDU20 LDA #$F0 4707 | 14 AUXMEM.VDU.s 759 | Code | 11 | | 3 | 00/D5F0 : 8D 22 C0 | STA $C022 ; Set text palette 4708 | 14 AUXMEM.VDU.s 760 | Code | 11 | | 2 | 00/D5F3 : A2 06 | LDX #{{{$290}+$3D}}-{{$290}+$37} 4709 | 14 AUXMEM.VDU.s 761 | Code | 11 | | 2 | 00/D5F5 : A9 00 | LDA #$00 4710 | 14 AUXMEM.VDU.s 762 | Code | 11 | | 3 | 00/D5F7 : 9D C7 02 | VDU20LP STA {{$290}+$37},X ; Clear all colours 4711 | 14 AUXMEM.VDU.s 763 | Code | 11 | | 1 | 00/D5FA : CA | DEX ; and gcol actions 4712 | 14 AUXMEM.VDU.s 764 | Code | 11 | | 2 | 00/D5FB : 10 FA | BPL VDU20LP 4713 | 14 AUXMEM.VDU.s 765 | Code | 11 | | 3 | 00/D5FD : 8D 34 C0 | STA $C034 ; Set border 4714 | 14 AUXMEM.VDU.s 766 | Code | 11 | | 2 | 00/D600 : A9 80 | LDA #$80 4715 | 14 AUXMEM.VDU.s 767 | Code | 11 | | 3 | 00/D602 : 20 ED D7 | JSR HSCRSETTCOL ; Set txt background 4716 | 14 AUXMEM.VDU.s 768 | Code | 11 | | 2 | 00/D605 : A2 00 | LDX #$00 4717 | 14 AUXMEM.VDU.s 769 | Code | 11 | | 2 | 00/D607 : A9 80 | LDA #$80 4718 | 14 AUXMEM.VDU.s 770 | Code | 11 | | 3 | 00/D609 : 20 EE D7 | JSR HSCRSETGCOL ; Set gfx background 4719 | 14 AUXMEM.VDU.s 771 | Code | 11 | | 3 | 00/D60C : AD D0 02 | LDA {{$290}+$40} 4720 | 14 AUXMEM.VDU.s 772 | Code | 11 | | 2 | 00/D60F : 29 07 | AND #$07 4721 | 14 AUXMEM.VDU.s 773 | Code | 11 | | 1 | 00/D611 : 48 | PHA 4722 | 14 AUXMEM.VDU.s 774 | Code | 11 | | 3 | 00/D612 : 8D C7 02 | STA {{$290}+$37} ; Note txt foreground 4723 | 14 AUXMEM.VDU.s 775 | Code | 11 | | 3 | 00/D615 : 20 ED D7 | JSR HSCRSETTCOL ; Set txt foreground 4724 | 14 AUXMEM.VDU.s 776 | Code | 11 | | 2 | 00/D618 : A2 00 | LDX #$00 4725 | 14 AUXMEM.VDU.s 777 | Code | 11 | | 1 | 00/D61A : 68 | PLA 4726 | 14 AUXMEM.VDU.s 778 | Code | 11 | | 3 | 00/D61B : 8D C9 02 | STA {{$290}+$39} ; Note gfx foreground 4727 | 14 AUXMEM.VDU.s 779 | Code | 11 | | 3 | 00/D61E : 4C EE D7 | JMP HSCRSETGCOL ; Set gfx foreground 4728 | 14 AUXMEM.VDU.s 780 | Empty | 11 | | 0 | 00/D621 | 4729 | 14 AUXMEM.VDU.s 781 | Comment | 11 | | 0 | 00/D621 | * VDU 17 - COLOUR n - select text or border colour 4730 | 14 AUXMEM.VDU.s 782 | Code | 11 | | 3 | 00/D621 : AD C3 02 | VDU17 LDA {{$290}+$2B}+8 4731 | 14 AUXMEM.VDU.s 783 | Code | 11 | | 2 | 00/D624 : C9 C0 | CMP #$C0 4732 | 14 AUXMEM.VDU.s 784 | Code | 11 | | 2 | 00/D626 : B0 03 | BCS VDU17BORDER 4733 | 14 AUXMEM.VDU.s 785 | Comment | 11 | | 0 | 00/D628 | * TO DO * 4734 | 14 AUXMEM.VDU.s 786 | Code | 11 | | 3 | 00/D628 : 4C ED D7 | JMP HSCRSETTCOL 4735 | 14 AUXMEM.VDU.s 787 | Code | 11 | | 2 | 00/D62B : 29 0F | VDU17BORDER AND #$0F 4736 | 14 AUXMEM.VDU.s 788 | Code | 11 | | 3 | 00/D62D : 8D CD 02 | STA {{$290}+$3D} 4737 | 14 AUXMEM.VDU.s 789 | Code | 11 | | 1 | 00/D630 : AA | TAX 4738 | 14 AUXMEM.VDU.s 790 | Code | 11 | | 3 | 00/D631 : BD 69 D1 | LDA CLRTRANS16,X 4739 | 14 AUXMEM.VDU.s 791 | Code | 11 | | 3 | 00/D634 : 8D 34 C0 | STA $C034 4740 | 14 AUXMEM.VDU.s 792 | Code | 11 | | 1 | 00/D637 : 60 | RTS 4741 | 14 AUXMEM.VDU.s 793 | Empty | 11 | | 0 | 00/D638 | 4742 | 14 AUXMEM.VDU.s 794 | Comment | 11 | | 0 | 00/D638 | * VDU 18 - GCOL k,a - select graphics colour and plot action 4743 | 14 AUXMEM.VDU.s 795 | Code | 11 | | 2 | 00/D638 : A0 02 | VDU18 LDY #$02 ; Y=>gfd settings 4744 | 14 AUXMEM.VDU.s 796 | Code | 11 | | 3 | 00/D63A : AD C3 02 | LDA {{$290}+$2B}+8 ; GCOL colour 4745 | 14 AUXMEM.VDU.s 797 | Code | 11 | | 1 | 00/D63D : 48 | PHA 4746 | 14 AUXMEM.VDU.s 798 | Code | 11 | | 2 | 00/D63E : C9 80 | CMP #$80 4747 | 14 AUXMEM.VDU.s 799 | Code | 11 | | 2 | 00/D640 : 90 01 | BCC VDU18A 4748 | 14 AUXMEM.VDU.s 800 | Code | 11 | | 1 | 00/D642 : C8 | INY ; Y=>bgd settings 4749 | 14 AUXMEM.VDU.s 801 | Code | 11 | | 3 | 00/D643 : AD C2 02 | VDU18A LDA {{$290}+$2B}+7 ; GCOL action 4750 | 14 AUXMEM.VDU.s 802 | Code | 11 | | 3 | 00/D646 : 99 C9 02 | STA {{$290}+$3B}-2,Y ; Store GCOL action 4751 | 14 AUXMEM.VDU.s 803 | Code | 11 | | 1 | 00/D649 : AA | TAX ; X=GCOL action 4752 | 14 AUXMEM.VDU.s 804 | Code | 11 | | 1 | 00/D64A : 68 | PLA 4753 | 14 AUXMEM.VDU.s 805 | Code | 11 | | 3 | 00/D64B : 2D D0 02 | AND {{$290}+$40} 4754 | 14 AUXMEM.VDU.s 806 | Code | 11 | | 3 | 00/D64E : 99 C7 02 | STA {{$290}+$39}-2,Y ; Store GCOL colour 4755 | 14 AUXMEM.VDU.s 807 | Code | 11 | | 1 | 00/D651 : A8 | TAY 4756 | 14 AUXMEM.VDU.s 808 | Code | 11 | | 3 | 00/D652 : B9 79 D1 | LDA CLRTRANS8,Y ; Trans. to physical 4757 | 14 AUXMEM.VDU.s 809 | Code | 11 | | 1 | 00/D655 : 08 | PHP 4758 | 14 AUXMEM.VDU.s 810 | Code | 11 | | 1 | 00/D656 : 2A | ROL A 4759 | 14 AUXMEM.VDU.s 811 | Code | 11 | | 1 | 00/D657 : 28 | PLP 4760 | 14 AUXMEM.VDU.s 812 | Code | 11 | | 1 | 00/D658 : 6A | ROR A ; Get bit 7 back 4761 | 14 AUXMEM.VDU.s 813 | Code | 11 | | 3 | 00/D659 : 4C EE D7 | JMP HSCRSETGCOL 4762 | 14 AUXMEM.VDU.s 814 | Empty | 11 | | 0 | 00/D65C | 4763 | 14 AUXMEM.VDU.s 815 | Comment | 11 | | 0 | 00/D65C | * VDU 19 - Select palette colours 4764 | 14 AUXMEM.VDU.s 816 | Code | 11 | | 1 | 00/D65C : 60 | VDU19 RTS 4765 | 14 AUXMEM.VDU.s 817 | Empty | 11 | | 0 | 00/D65D | 4766 | 14 AUXMEM.VDU.s 818 | Empty | 11 | | 0 | 00/D65D | 4767 | 14 AUXMEM.VDU.s 819 | Comment | 11 | | 0 | 00/D65D | * Window (viewport) control 4768 | 14 AUXMEM.VDU.s 820 | Comment | 11 | | 0 | 00/D65D | *************************** 4769 | 14 AUXMEM.VDU.s 821 | Comment | 11 | | 0 | 00/D65D | * VDU 26 - Reset to default windows 4770 | 14 AUXMEM.VDU.s 822 | Code | 11 | | 2 | 00/D65D : A9 F7 | VDU26 LDA #$F7 4771 | 14 AUXMEM.VDU.s 823 | Code | 11 | | 3 | 00/D65F : 20 C0 D2 | JSR CLRSTATUS ; Clear 'soft window' 4772 | 14 AUXMEM.VDU.s 824 | Code | 11 | | 2 | 00/D662 : A2 27 | VDU26A LDX #{{{$290}+$26}+1}-{$290} 4773 | 14 AUXMEM.VDU.s 825 | Code | 11 | | 2 | 00/D664 : A9 00 | LDA #$00 4774 | 14 AUXMEM.VDU.s 826 | Code | 11 | | 3 | 00/D666 : 9D 90 02 | VDU26LP STA {$290},X ; Clear all windows 4775 | 14 AUXMEM.VDU.s 827 | Code | 11 | | 1 | 00/D669 : CA | DEX ; and all coords 4776 | 14 AUXMEM.VDU.s 828 | Code | 11 | | 2 | 00/D66A : 10 FA | BPL VDU26LP ; and origin, etc. 4777 | 14 AUXMEM.VDU.s 829 | Code | 11 | | 3 | 00/D66C : AC C5 02 | LDY {{$290}+$35} 4778 | 14 AUXMEM.VDU.s 830 | Code | 11 | | 3 | 00/D66F : B9 41 D1 | LDA SCNTXTMAXY,Y 4779 | 14 AUXMEM.VDU.s 831 | Code | 11 | | 3 | 00/D672 : 8D 99 02 | STA {{$290}+$09} ; Text window height 4780 | 14 AUXMEM.VDU.s 832 | Code | 11 | | 3 | 00/D675 : B9 39 D1 | LDA SCNTXTMAXX,Y 4781 | 14 AUXMEM.VDU.s 833 | Code | 11 | | 3 | 00/D678 : 8D 9A 02 | STA {{$290}+$0A} ; Text window width 4782 | 14 AUXMEM.VDU.s 834 | Code | 11 | | 3 | 00/D67B : AC D1 02 | LDY {{$290}+$41} 4783 | 14 AUXMEM.VDU.s 835 | Code | 11 | | 2 | 00/D67E : F0 22 | BEQ VDU26QUIT ; No graphics 4784 | 14 AUXMEM.VDU.s 836 | Code | 11 | | 2 | 00/D680 : A2 04 | LDX #{{$290}+$04}-{$290} 4785 | 14 AUXMEM.VDU.s 837 | Code | 11 | | 3 | 00/D682 : 20 8C D6 | JSR VDU26SCALE ; GFXWID=TXTWID*PIXELS-1 4786 | 14 AUXMEM.VDU.s 838 | Code | 11 | | 3 | 00/D685 : AD 99 02 | LDA {{$290}+$09} 4787 | 14 AUXMEM.VDU.s 839 | Code | 11 | | 2 | 00/D688 : A0 08 | LDY #8 ; GFXHGT=TXTHGT*8-1 4788 | 14 AUXMEM.VDU.s 840 | Code | 11 | | 2 | 00/D68A : A2 06 | LDX #{{$290}+$06}-{$290} 4789 | 14 AUXMEM.VDU.s 841 | Comment | 11 | | 0 | 00/D68C | * 4790 | 14 AUXMEM.VDU.s 842 | Comment | 11 | | 0 | 00/D68C | * Convert text count to pixel count 4791 | 14 AUXMEM.VDU.s 843 | Comment | 11 | | 0 | 00/D68C | * VDUVARS,X=(A+1)*Y-1 4792 | 14 AUXMEM.VDU.s 844 | Code | 11 | | 1 | 00/D68C : 48 | VDU26SCALE PHA 4793 | 14 AUXMEM.VDU.s 845 | Code | 11 | | 1 | 00/D68D : 18 | CLC 4794 | 14 AUXMEM.VDU.s 846 | Code | 11 | | 3 | 00/D68E : 7D 90 02 | ADC {$290}+0,X 4795 | 14 AUXMEM.VDU.s 847 | Code | 11 | | 2 | 00/D691 : 09 01 | ORA #$01 4796 | 14 AUXMEM.VDU.s 848 | Code | 11 | | 3 | 00/D693 : 9D 90 02 | STA {$290}+0,X 4797 | 14 AUXMEM.VDU.s 849 | Code | 11 | | 3 | 00/D696 : BD 91 02 | LDA {$290}+1,X 4798 | 14 AUXMEM.VDU.s 850 | Code | 11 | | 2 | 00/D699 : 69 00 | ADC #$00 4799 | 14 AUXMEM.VDU.s 851 | Code | 11 | | 3 | 00/D69B : 9D 91 02 | STA {$290}+1,X 4800 | 14 AUXMEM.VDU.s 852 | Code | 11 | | 1 | 00/D69E : 68 | PLA 4801 | 14 AUXMEM.VDU.s 853 | Code | 11 | | 1 | 00/D69F : 88 | DEY 4802 | 14 AUXMEM.VDU.s 854 | Code | 11 | | 2 | 00/D6A0 : D0 EA | BNE VDU26SCALE 4803 | 14 AUXMEM.VDU.s 855 | Code | 11 | | 1 | 00/D6A2 : 60 | VDU26QUIT RTS 4804 | 14 AUXMEM.VDU.s 856 | Empty | 11 | | 0 | 00/D6A3 | 4805 | 14 AUXMEM.VDU.s 857 | Comment | 11 | | 0 | 00/D6A3 | * VDU 28,left,bottom,right,top - define text window 4806 | 14 AUXMEM.VDU.s 858 | Code | 11 | | 3 | 00/D6A3 : AE C5 02 | VDU28 LDX {{$290}+$35} 4807 | 14 AUXMEM.VDU.s 859 | Code | 11 | | 3 | 00/D6A6 : AD C2 02 | LDA {{{$290}+$2B}+5}+2 ; right 4808 | 14 AUXMEM.VDU.s 860 | Code | 11 | | 3 | 00/D6A9 : CD C0 02 | CMP {{{$290}+$2B}+5}+0 ; left 4809 | 14 AUXMEM.VDU.s 861 | Code | 11 | | 2 | 00/D6AC : 90 35 | BCC VDUCOPYEXIT ; rightwidth 4813 | 14 AUXMEM.VDU.s 865 | Code | 11 | | 3 | 00/D6B5 : AD C1 02 | VDU28B LDA {{{$290}+$2B}+5}+1 ; bottom 4814 | 14 AUXMEM.VDU.s 866 | Code | 11 | | 3 | 00/D6B8 : CD C3 02 | CMP {{{$290}+$2B}+5}+3 ; top 4815 | 14 AUXMEM.VDU.s 867 | Code | 11 | | 2 | 00/D6BB : 90 26 | BCC VDUCOPYEXIT ; bottomheight 4819 | 14 AUXMEM.VDU.s 871 | Code | 11 | | 2 | 00/D6C4 : A0 0B | VDU28C LDY #{{$290}+$08}+3-{$290}; Copy to txt window params 4820 | 14 AUXMEM.VDU.s 872 | Code | 11 | | 2 | 00/D6C6 : D0 09 | BNE VDUCOPY4 4821 | 14 AUXMEM.VDU.s 873 | Empty | 11 | | 0 | 00/D6C8 | 4822 | 14 AUXMEM.VDU.s 874 | Comment | 11 | | 0 | 00/D6C8 | * VDU 24,left;bottom;right;top; - define graphics window 4823 | 14 AUXMEM.VDU.s 875 | Code | 11 | | 1 | 00/D6C8 : 60 | VDU24 RTS 4824 | 14 AUXMEM.VDU.s 876 | Comment | 11 | | 0 | 00/D6C9 | * If rightwidth, exit 4826 | 14 AUXMEM.VDU.s 878 | Comment | 11 | | 0 | 00/D6C9 | * If topheight, exit 4828 | 14 AUXMEM.VDU.s 880 | Comment | 11 | | 0 | 00/D6C9 | * scale parameters 4829 | 14 AUXMEM.VDU.s 881 | Code | 11 | | 2 | 00/D6C9 : A0 07 | LDY #{{$290}+$00}+7-{$290}; Copy to gfx window params 4830 | 14 AUXMEM.VDU.s 882 | Code | 11 | | 2 | 00/D6CB : A9 08 | LDA #$08 4831 | 14 AUXMEM.VDU.s 883 | Code | 11 | | 2 | 00/D6CD : D0 04 | BNE COPYVDUQ 4832 | 14 AUXMEM.VDU.s 884 | Empty | 11 | | 0 | 00/D6CF | 4833 | 14 AUXMEM.VDU.s 885 | Comment | 11 | | 0 | 00/D6CF | * VDU 29,x;y; - define graphics origin 4834 | 14 AUXMEM.VDU.s 886 | Code | 11 | | 2 | 00/D6CF : A0 0F | VDU29 LDY #{{$290}+$0C}+3-{$290}; Copy to ORIGIN 4835 | 14 AUXMEM.VDU.s 887 | Empty | 11 | | 0 | 00/D6D1 | 4836 | 14 AUXMEM.VDU.s 888 | Comment | 11 | | 0 | 00/D6D1 | * Copy four bytes from VDU queue to VDU workspace 4837 | 14 AUXMEM.VDU.s 889 | Code | 11 | | 2 | 00/D6D1 : A9 04 | VDUCOPY4 LDA #$04 ; 4 bytes to copy 4838 | 14 AUXMEM.VDU.s 890 | Empty | 11 | | 0 | 00/D6D3 | 4839 | 14 AUXMEM.VDU.s 891 | Comment | 11 | | 0 | 00/D6D3 | * Copy parameters in VDU Queue to VDU workspace 4840 | 14 AUXMEM.VDU.s 892 | Code | 11 | | 2 | 00/D6D3 : A2 33 | COPYVDUQ LDX #{{$290}+$2B}+$08-{$290}; End of VDU queue 4841 | 14 AUXMEM.VDU.s 893 | Empty | 11 | | 0 | 00/D6D5 | 4842 | 14 AUXMEM.VDU.s 894 | Comment | 11 | | 0 | 00/D6D5 | * Copy A bytes from VDUVARS,X to VDUVARS,Y 4843 | 14 AUXMEM.VDU.s 895 | Code | 11 | | 2 | 00/D6D5 : 85 D1 | VDUCOPY STA {{{$D0}+1}} 4844 | 14 AUXMEM.VDU.s 896 | Code | 11 | | 3 | 00/D6D7 : BD 90 02 | VDUCOPYLP LDA {$290},X 4845 | 14 AUXMEM.VDU.s 897 | Code | 11 | | 3 | 00/D6DA : 99 90 02 | STA {$290},Y 4846 | 14 AUXMEM.VDU.s 898 | Code | 11 | | 1 | 00/D6DD : CA | DEX 4847 | 14 AUXMEM.VDU.s 899 | Code | 11 | | 1 | 00/D6DE : 88 | DEY 4848 | 14 AUXMEM.VDU.s 900 | Code | 11 | | 2 | 00/D6DF : C6 D1 | DEC {{{$D0}+1}} 4849 | 14 AUXMEM.VDU.s 901 | Code | 11 | | 2 | 00/D6E1 : D0 F4 | BNE VDUCOPYLP 4850 | 14 AUXMEM.VDU.s 902 | Code | 11 | | 1 | 00/D6E3 : 60 | VDUCOPYEXIT RTS 4851 | 14 AUXMEM.VDU.s 903 | Empty | 11 | | 0 | 00/D6E4 | 4852 | 14 AUXMEM.VDU.s 904 | Empty | 11 | | 0 | 00/D6E4 | 4853 | 14 AUXMEM.VDU.s 905 | Comment | 11 | | 0 | 00/D6E4 | * PLOT master dispatch 4854 | 14 AUXMEM.VDU.s 906 | Comment | 11 | | 0 | 00/D6E4 | ********************** 4855 | 14 AUXMEM.VDU.s 907 | Comment | 11 | | 0 | 00/D6E4 | * VDU 25,k,x;y; - PLOT k,x,y - PLOT point, line, etc. 4856 | 14 AUXMEM.VDU.s 908 | Comment | 11 | | 0 | 00/D6E4 | * 4857 | 14 AUXMEM.VDU.s 909 | Comment | 11 | | 0 | 00/D6E4 | * The PLOT canvass extends in four directions, with the visible 4858 | 14 AUXMEM.VDU.s 910 | Comment | 11 | | 0 | 00/D6E4 | * screen a portion in the positive quadrant. 4859 | 14 AUXMEM.VDU.s 911 | Comment | 11 | | 0 | 00/D6E4 | * | 4860 | 14 AUXMEM.VDU.s 912 | Comment | 11 | | 0 | 00/D6E4 | * (-ve,+ve) | (+ve,+ve) 4861 | 14 AUXMEM.VDU.s 913 | Comment | 11 | | 0 | 00/D6E4 | * +---------+ 4862 | 14 AUXMEM.VDU.s 914 | Comment | 11 | | 0 | 00/D6E4 | * | | 4863 | 14 AUXMEM.VDU.s 915 | Comment | 11 | | 0 | 00/D6E4 | * | visible | 4864 | 14 AUXMEM.VDU.s 916 | Comment | 11 | | 0 | 00/D6E4 | * | screen | 4865 | 14 AUXMEM.VDU.s 917 | Comment | 11 | | 0 | 00/D6E4 | * ------------+---------+-- 4866 | 14 AUXMEM.VDU.s 918 | Comment | 11 | | 0 | 00/D6E4 | * (0,0) 4867 | 14 AUXMEM.VDU.s 919 | Comment | 11 | | 0 | 00/D6E4 | * | 4868 | 14 AUXMEM.VDU.s 920 | Comment | 11 | | 0 | 00/D6E4 | * | 4869 | 14 AUXMEM.VDU.s 921 | Comment | 11 | | 0 | 00/D6E4 | * (-ve,-ve) | (+ve,-ve) 4870 | 14 AUXMEM.VDU.s 922 | Comment | 11 | | 0 | 00/D6E4 | * | 4871 | 14 AUXMEM.VDU.s 923 | Comment | 11 | | 0 | 00/D6E4 | * | 4872 | 14 AUXMEM.VDU.s 924 | Comment | 11 | | 0 | 00/D6E4 | * 4873 | 14 AUXMEM.VDU.s 925 | Comment | 11 | | 0 | 00/D6E4 | * PLOT actions occur over the whole canvas, with the result of 4874 | 14 AUXMEM.VDU.s 926 | Comment | 11 | | 0 | 00/D6E4 | * the actions that cross the visible screen written to the graphics 4875 | 14 AUXMEM.VDU.s 927 | Comment | 11 | | 0 | 00/D6E4 | * buffer. For example, a trangle draw between (-100,-100), (-100,+100), 4876 | 14 AUXMEM.VDU.s 928 | Comment | 11 | | 0 | 00/D6E4 | * (+100,+150) will draw a partial triangle in the visible screen. 4877 | 14 AUXMEM.VDU.s 929 | Comment | 11 | | 0 | 00/D6E4 | * 4878 | 14 AUXMEM.VDU.s 930 | Comment | 11 | | 0 | 00/D6E4 | * k is in VDUQ+4 4879 | 14 AUXMEM.VDU.s 931 | Comment | 11 | | 0 | 00/D6E4 | * x is in VDUQ+5,VDUQ+6 4880 | 14 AUXMEM.VDU.s 932 | Comment | 11 | | 0 | 00/D6E4 | * y is in VDUQ+7,VDUQ+8 4881 | 14 AUXMEM.VDU.s 933 | Comment | 11 | | 0 | 00/D6E4 | * 4882 | 14 AUXMEM.VDU.s 934 | Code | 11 | | 3 | 00/D6E4 : AD D1 02 | VDU25 LDA {{$290}+$41} 4883 | 14 AUXMEM.VDU.s 935 | Code | 11 | | 2 | 00/D6E7 : F0 03 | BEQ VDU25NULL 4884 | 14 AUXMEM.VDU.s 936 | Comment | 11 | | 0 | 00/D6E9 | * TO DO: 4885 | 14 AUXMEM.VDU.s 937 | Comment | 11 | | 0 | 00/D6E9 | * coord=coord+origin 4886 | 14 AUXMEM.VDU.s 938 | Comment | 11 | | 0 | 00/D6E9 | * scale coord 4887 | 14 AUXMEM.VDU.s 939 | Comment | 11 | | 0 | 00/D6E9 | * clip to viewport 4888 | 14 AUXMEM.VDU.s 940 | Empty | 11 | | 0 | 00/D6E9 | 4889 | 14 AUXMEM.VDU.s 941 | Code | 11 | | 3 | 00/D6E9 : 20 3E D8 | JSR HGRPLOTTER 4890 | 14 AUXMEM.VDU.s 942 | Empty | 11 | | 0 | 00/D6EC | 4891 | 14 AUXMEM.VDU.s 943 | Code | 11 | | 2 | 00/D6EC : A2 07 | VDU25NULL LDX #7 4892 | 14 AUXMEM.VDU.s 944 | Code | 11 | | 3 | 00/D6EE : BD AC 02 | VDU25BACKUP1 LDA {{$290}+$1C}+0,X ; Copy pixel coords 4893 | 14 AUXMEM.VDU.s 945 | Code | 11 | | 3 | 00/D6F1 : 9D B0 02 | STA {{$290}+$1C}+4,X ; POSN becomes LAST 4894 | 14 AUXMEM.VDU.s 946 | Code | 11 | | 1 | 00/D6F4 : CA | DEX ; and PLOT becomes POSN 4895 | 14 AUXMEM.VDU.s 947 | Code | 11 | | 2 | 00/D6F5 : 10 F7 | BPL VDU25BACKUP1 4896 | 14 AUXMEM.VDU.s 948 | Code | 11 | | 2 | 00/D6F7 : A2 03 | LDX #3 ; Copy PLOT coords 4897 | 14 AUXMEM.VDU.s 949 | Code | 11 | | 3 | 00/D6F9 : BD A0 02 | VDU25BACKUP2 LDA {{$290}+$10},X ; POSN becomes LAST 4898 | 14 AUXMEM.VDU.s 950 | Code | 11 | | 3 | 00/D6FC : 9D A4 02 | STA {{$290}+$14},X 4899 | 14 AUXMEM.VDU.s 951 | Code | 11 | | 3 | 00/D6FF : BD C0 02 | LDA {{{$290}+$2B}+5},X ; and PLOT becomes POSN 4900 | 14 AUXMEM.VDU.s 952 | Code | 11 | | 3 | 00/D702 : 9D A0 02 | STA {{$290}+$10},X 4901 | 14 AUXMEM.VDU.s 953 | Code | 11 | | 1 | 00/D705 : CA | DEX 4902 | 14 AUXMEM.VDU.s 954 | Code | 11 | | 2 | 00/D706 : 10 F1 | BPL VDU25BACKUP2 4903 | 14 AUXMEM.VDU.s 955 | Code | 11 | | 3 | 00/D708 : AD 00 C0 | LDA $C000 ; This and PRCHRC need to be 4904 | 14 AUXMEM.VDU.s 956 | Code | 11 | | 2 | 00/D70B : 49 80 | EOR #$80 ; made more generalised 4905 | 14 AUXMEM.VDU.s 957 | Code | 11 | | 2 | 00/D70D : 30 03 | BMI VDU25EXIT ; No key pressed 4906 | 14 AUXMEM.VDU.s 958 | Code | 11 | | 3 | 00/D70F : 20 83 EB | JSR KBDCHKESC ; Ask KBD to test if Escape 4907 | 14 AUXMEM.VDU.s 959 | Code | 11 | | 1 | 00/D712 : 60 | VDU25EXIT RTS 4908 | 14 AUXMEM.VDU.s 960 | Empty | 11 | | 0 | 00/D713 | 4909 | 14 AUXMEM.VDU.s 961 | Empty | 11 | | 0 | 00/D713 | 4910 | 14 AUXMEM.VDU.s 962 | Comment | 11 | | 0 | 00/D713 | * Program video system and define characters 4911 | 14 AUXMEM.VDU.s 963 | Comment | 11 | | 0 | 00/D713 | ******************************************** 4912 | 14 AUXMEM.VDU.s 964 | Code | 11 | | 1 | 00/D713 : 60 | VDU23 RTS 4913 | 14 AUXMEM.VDU.s 965 | Empty | 11 | | 0 | 00/D714 | 4914 | 14 AUXMEM.VDU.s 966 | Empty | 11 | | 0 | 00/D714 | 4915 | 14 AUXMEM.VDU.s 967 | Comment | 11 | | 0 | 00/D714 | * Read from VDU system 4916 | 14 AUXMEM.VDU.s 968 | Comment | 11 | | 0 | 00/D714 | ********************** 4917 | 14 AUXMEM.VDU.s 969 | Comment | 11 | | 0 | 00/D714 | * OSWORD &09 - Read POINT 4918 | 14 AUXMEM.VDU.s 970 | Code | 11 | | 1 | 00/D714 : 60 | WORD09 RTS 4919 | 14 AUXMEM.VDU.s 971 | Empty | 11 | | 0 | 00/D715 | 4920 | 14 AUXMEM.VDU.s 972 | Comment | 11 | | 0 | 00/D715 | * OSWORD &0A - Read character bitmap 4921 | 14 AUXMEM.VDU.s 973 | Code | 11 | | 1 | 00/D715 : 60 | WORD0A RTS 4922 | 14 AUXMEM.VDU.s 974 | Empty | 11 | | 0 | 00/D716 | 4923 | 14 AUXMEM.VDU.s 975 | Comment | 11 | | 0 | 00/D716 | * OSWORD &0B - Read palette 4924 | 14 AUXMEM.VDU.s 976 | Code | 11 | | 1 | 00/D716 : 60 | WORD0B RTS 4925 | 14 AUXMEM.VDU.s 977 | Empty | 11 | | 0 | 00/D717 | 4926 | 14 AUXMEM.VDU.s 978 | Comment | 11 | | 0 | 00/D717 | * OSWORD &0C - Write palette 4927 | 14 AUXMEM.VDU.s 979 | Code | 11 | | 1 | 00/D717 : 60 | WORD0C RTS 4928 | 14 AUXMEM.VDU.s 980 | Empty | 11 | | 0 | 00/D718 | 4929 | 14 AUXMEM.VDU.s 981 | Comment | 11 | | 0 | 00/D718 | * OSWORD &0D - Read gfx coords 4930 | 14 AUXMEM.VDU.s 982 | Code | 11 | | 1 | 00/D718 : 60 | WORD0D RTS 4931 | 14 AUXMEM.VDU.s 983 | Empty | 11 | | 0 | 00/D719 | 4932 | 14 AUXMEM.VDU.s 984 | Comment | 11 | | 0 | 00/D719 | * OSBYTE &A0 - Read VDU variable 4933 | 14 AUXMEM.VDU.s 985 | Code | 11 | | 2 | 00/D719 : E0 40 | BYTEA0 CPX #$40 ; Index into VDU variables 4934 | 14 AUXMEM.VDU.s 986 | Code | 11 | | 2 | 00/D71B : 90 04 | BCC BYTEA02 4935 | 14 AUXMEM.VDU.s 987 | Code | 11 | | 1 | 00/D71D : 8A | TXA 4936 | 14 AUXMEM.VDU.s 988 | Code | 11 | | 2 | 00/D71E : E9 20 | SBC #$20 4937 | 14 AUXMEM.VDU.s 989 | Code | 11 | | 1 | 00/D720 : AA | TAX 4938 | 14 AUXMEM.VDU.s 990 | Code | 11 | | 3 | 00/D721 : BC 91 02 | BYTEA02 LDY {$290}+1,X 4939 | 14 AUXMEM.VDU.s 991 | Code | 11 | | 3 | 00/D724 : BD 90 02 | LDA {$290}+0,X 4940 | 14 AUXMEM.VDU.s 992 | Code | 11 | | 1 | 00/D727 : AA | TAX 4941 | 14 AUXMEM.VDU.s 993 | Code | 11 | | 1 | 00/D728 : 60 | RTS 4942 | 14 AUXMEM.VDU.s 994 | Empty | 11 | | 0 | 00/D729 | 4943 | 14 AUXMEM.VDU.s 995 | Empty | 11 | | 0 | 00/D729 | 4944 | 14 AUXMEM.VDU.s 996 | Comment | 11 | | 0 | 00/D729 | * PRINTER DRIVER 4945 | 14 AUXMEM.VDU.s 997 | Comment | 11 | | 0 | 00/D729 | **************** 4946 | 14 AUXMEM.VDU.s 998 | Comment | 11 | | 0 | 00/D729 | * VDU 1 - Send one character to printer 4947 | 14 AUXMEM.VDU.s 999 | Code | 11 | | 1 | 00/D729 : 60 | VDU01 RTS 4948 | 14 AUXMEM.VDU.s 1000 | Empty | 11 | | 0 | 00/D72A | 4949 | 14 AUXMEM.VDU.s 1001 | Empty | 11 | | 0 | 00/D72A | 4950 | 1 applecorn.s 202 | Directive | 11 | | 0 | 00/D72A | PUT AUXMEM.GFX 4951 | 15 AUXMEM.GFX.s 1 | Comment | 11 | | 0 | 00/D72A | * AUXMEM.GFX.S 4952 | 15 AUXMEM.GFX.s 2 | Comment | 11 | | 0 | 00/D72A | * (c) Bobbi 2021 GPLv3 4953 | 15 AUXMEM.GFX.s 3 | Comment | 11 | | 0 | 00/D72A | * 4954 | 15 AUXMEM.GFX.s 4 | Comment | 11 | | 0 | 00/D72A | * Graphics operations 4955 | 15 AUXMEM.GFX.s 5 | Comment | 11 | | 0 | 00/D72A | * 4956 | 15 AUXMEM.GFX.s 6 | Comment | 11 | | 0 | 00/D72A | * 26-Sep-2021 All graphics screen code moved to here. 4957 | 15 AUXMEM.GFX.s 7 | Comment | 11 | | 0 | 00/D72A | * 02-Oct-2021 Added temp'y wrapper to HGRPLOT. 4958 | 15 AUXMEM.GFX.s 8 | Empty | 11 | | 0 | 00/D72A | 4959 | 15 AUXMEM.GFX.s 9 | Empty | 11 | | 0 | 00/D72A | 4960 | 15 AUXMEM.GFX.s 10 | Comment | 11 | | 0 | 00/D72A | * Write character to HGR screen 4961 | 15 AUXMEM.GFX.s 11 | Code | 11 | | 2 | 00/D72A : C9 A0 | PRCHRSOFT CMP #$A0 ; Convert to screen code 4962 | 15 AUXMEM.GFX.s 12 | Code | 11 | | 2 | 00/D72C : B0 06 | BCS _B0 4963 | 15 AUXMEM.GFX.s 13 | Code | 11 | | 2 | 00/D72E : C9 80 | CMP #$80 4964 | 15 AUXMEM.GFX.s 14 | Code | 11 | | 2 | 00/D730 : 90 02 | BCC _B0 4965 | 15 AUXMEM.GFX.s 15 | Code | 11 | | 2 | 00/D732 : 49 80 | EOR #$80 4966 | 15 AUXMEM.GFX.s 16 | Code | 11 | | 1 | 00/D734 : AA | _B0 TAX 4967 | 15 AUXMEM.GFX.s 17 | Code | 11 | | 2 | 00/D735 : 29 20 | AND #$20 4968 | 15 AUXMEM.GFX.s 18 | Code | 11 | | 2 | 00/D737 : D0 04 | BNE _B1 4969 | 15 AUXMEM.GFX.s 19 | Code | 11 | | 1 | 00/D739 : 8A | TXA 4970 | 15 AUXMEM.GFX.s 20 | Code | 11 | | 2 | 00/D73A : 49 40 | EOR #$40 4971 | 15 AUXMEM.GFX.s 21 | Code | 11 | | 1 | 00/D73C : AA | TAX 4972 | 15 AUXMEM.GFX.s 22 | Code | 11 | | 1 | 00/D73D : DA | _B1 PHX 4973 | 15 AUXMEM.GFX.s 23 | Code | 11 | | 3 | 00/D73E : 20 E6 D3 | JSR HCHARADDR ; Addr in VDUADDR 4974 | 15 AUXMEM.GFX.s 24 | Code | 11 | | 1 | 00/D741 : 08 | PHP ; Disable IRQs while 4975 | 15 AUXMEM.GFX.s 25 | Code | 11 | | 1 | 00/D742 : 78 | SEI ; toggling memory 4976 | 15 AUXMEM.GFX.s 26 | Code | 11 | | 3 | 00/D743 : 8D 04 C0 | STA $C004 ; Write to main 4977 | 15 AUXMEM.GFX.s 27 | Code | 11 | | 2 | 00/D746 : A5 D2 | LDA {{$D0}+2}+0 4978 | 15 AUXMEM.GFX.s 28 | Code | 11 | | 3 | 00/D748 : 8D DE 50 | STA HGRADDR+0 4979 | 15 AUXMEM.GFX.s 29 | Code | 11 | | 2 | 00/D74B : A5 D3 | LDA {{$D0}+2}+1 4980 | 15 AUXMEM.GFX.s 30 | Code | 11 | | 3 | 00/D74D : 8D DF 50 | STA HGRADDR+1 4981 | 15 AUXMEM.GFX.s 31 | Code | 11 | | 3 | 00/D750 : 8D 05 C0 | STA $C005 ; Write to aux 4982 | 15 AUXMEM.GFX.s 32 | Code | 11 | | 1 | 00/D753 : 28 | PLP ; Restore IRQs 4983 | 15 AUXMEM.GFX.s 33 | Code | 11 | | 1 | 00/D754 : 68 | PLA ; Recover character 4984 | 15 AUXMEM.GFX.s 34 | Macro | 11 | | 0 | 00/D755 | >>> XF2MAIN,DRAWCHAR ; Plot char on HGR screen 4985 | 15 AUXMEM.GFX.s 34 | Empty | 11 | | 0 | 00/D755 | 4986 | 15 AUXMEM.GFX.s 34 | Empty | 11 | | 0 | 00/D755 | 4987 | 15 AUXMEM.GFX.s 34 | Empty | 11 | | 0 | 00/D755 | 4988 | 15 AUXMEM.GFX.s 34 | Empty | 11 | | 0 | 00/D755 | 4989 | 15 AUXMEM.GFX.s 34 | Code | 11 | | 2 | 00/D755 : A2 E2 | LDX #DRAWCHAR 4992 | 15 AUXMEM.GFX.s 34 | Code | 11 | | 3 | 00/D75C : 8E EE 03 | STX {$3EE} 4993 | 15 AUXMEM.GFX.s 34 | Code | 11 | | 1 | 00/D75F : 78 | SEI ; Disable IRQ before XFER 4994 | 15 AUXMEM.GFX.s 34 | Code | 11 | | 1 | 00/D760 : BA | TSX 4995 | 15 AUXMEM.GFX.s 34 | Code | 11 | | 3 | 00/D761 : 8E 01 01 | STX $0101 ; Save alt SP 4996 | 15 AUXMEM.GFX.s 34 | Code | 11 | | 3 | 00/D764 : AE 00 01 | LDX $0100 ; Load main SP into X 4997 | 15 AUXMEM.GFX.s 34 | Code | 11 | | 1 | 00/D767 : 18 | CLC ; Use main mem 4998 | 15 AUXMEM.GFX.s 34 | Code | 11 | | 1 | 00/D768 : B8 | CLV ; Use main ZP and LC 4999 | 15 AUXMEM.GFX.s 34 | Code | 11 | | 3 | 00/D769 : 4C 14 C3 | JMP {$C314} 5000 | 15 AUXMEM.GFX.s 35 | Macro | 11 | | 0 | 00/D76C | PUTCHRET >>> ENTAUX 5001 | 15 AUXMEM.GFX.s 35 | Code | 11 | | 3 | 00/D76C : AE 01 01 | LDX $0101 ; Recover alt SP 5002 | 15 AUXMEM.GFX.s 35 | Code | 11 | | 1 | 00/D76F : 9A | TXS 5003 | 15 AUXMEM.GFX.s 35 | Code | 11 | | 1 | 00/D770 : 58 | CLI ; Re-enable IRQ after XFER 5004 | 15 AUXMEM.GFX.s 35 | Empty | 11 | | 0 | 00/D771 | 5005 | 15 AUXMEM.GFX.s 35 | Empty | 11 | | 0 | 00/D771 | 5006 | 15 AUXMEM.GFX.s 35 | Empty | 11 | | 0 | 00/D771 | 5007 | 15 AUXMEM.GFX.s 35 | Empty | 11 | | 0 | 00/D771 | 5008 | 15 AUXMEM.GFX.s 36 | Code | 11 | | 1 | 00/D771 : 60 | RTS 5009 | 15 AUXMEM.GFX.s 37 | Empty | 11 | | 0 | 00/D772 | 5010 | 15 AUXMEM.GFX.s 38 | Macro | 11 | | 0 | 00/D772 | HSCR1LINE >>> XF2MAIN,HGRSCR1L 5011 | 15 AUXMEM.GFX.s 38 | Empty | 11 | | 0 | 00/D772 | 5012 | 15 AUXMEM.GFX.s 38 | Empty | 11 | | 0 | 00/D772 | 5013 | 15 AUXMEM.GFX.s 38 | Empty | 11 | | 0 | 00/D772 | 5014 | 15 AUXMEM.GFX.s 38 | Empty | 11 | | 0 | 00/D772 | 5015 | 15 AUXMEM.GFX.s 38 | Code | 11 | | 2 | 00/D772 : A2 3C | LDX #HGRSCR1L 5018 | 15 AUXMEM.GFX.s 38 | Code | 11 | | 3 | 00/D779 : 8E EE 03 | STX {$3EE} 5019 | 15 AUXMEM.GFX.s 38 | Code | 11 | | 1 | 00/D77C : 78 | SEI ; Disable IRQ before XFER 5020 | 15 AUXMEM.GFX.s 38 | Code | 11 | | 1 | 00/D77D : BA | TSX 5021 | 15 AUXMEM.GFX.s 38 | Code | 11 | | 3 | 00/D77E : 8E 01 01 | STX $0101 ; Save alt SP 5022 | 15 AUXMEM.GFX.s 38 | Code | 11 | | 3 | 00/D781 : AE 00 01 | LDX $0100 ; Load main SP into X 5023 | 15 AUXMEM.GFX.s 38 | Code | 11 | | 1 | 00/D784 : 18 | CLC ; Use main mem 5024 | 15 AUXMEM.GFX.s 38 | Code | 11 | | 1 | 00/D785 : B8 | CLV ; Use main ZP and LC 5025 | 15 AUXMEM.GFX.s 38 | Code | 11 | | 3 | 00/D786 : 4C 14 C3 | JMP {$C314} 5026 | 15 AUXMEM.GFX.s 39 | Macro | 11 | | 0 | 00/D789 | HSCR1RET >>> ENTAUX 5027 | 15 AUXMEM.GFX.s 39 | Code | 11 | | 3 | 00/D789 : AE 01 01 | LDX $0101 ; Recover alt SP 5028 | 15 AUXMEM.GFX.s 39 | Code | 11 | | 1 | 00/D78C : 9A | TXS 5029 | 15 AUXMEM.GFX.s 39 | Code | 11 | | 1 | 00/D78D : 58 | CLI ; Re-enable IRQ after XFER 5030 | 15 AUXMEM.GFX.s 39 | Empty | 11 | | 0 | 00/D78E | 5031 | 15 AUXMEM.GFX.s 39 | Empty | 11 | | 0 | 00/D78E | 5032 | 15 AUXMEM.GFX.s 39 | Empty | 11 | | 0 | 00/D78E | 5033 | 15 AUXMEM.GFX.s 39 | Empty | 11 | | 0 | 00/D78E | 5034 | 15 AUXMEM.GFX.s 40 | Code | 11 | | 1 | 00/D78E : 60 | RTS 5035 | 15 AUXMEM.GFX.s 41 | Empty | 11 | | 0 | 00/D78F | 5036 | 15 AUXMEM.GFX.s 42 | Code | 11 | | 3 | 00/D78F : AD A9 02 | HSCRCLREOL LDA {{$290}+$19} 5037 | 15 AUXMEM.GFX.s 43 | Code | 11 | | 1 | 00/D792 : 0A | ASL 5038 | 15 AUXMEM.GFX.s 44 | Code | 11 | | 1 | 00/D793 : AA | TAX 5039 | 15 AUXMEM.GFX.s 45 | Macro | 11 | | 0 | 00/D794 | >>> WRTMAIN 5040 | 15 AUXMEM.GFX.s 45 | Code | 11 | | 1 | 00/D794 : 78 | SEI ; Keeps IRQ handler easy 5041 | 15 AUXMEM.GFX.s 45 | Code | 11 | | 3 | 00/D795 : 8D 04 C0 | STA $C004 ; Write to main memory 5042 | 15 AUXMEM.GFX.s 46 | Code | 11 | | 3 | 00/D798 : BD B1 D1 | LDA HGRTAB+0,X 5043 | 15 AUXMEM.GFX.s 47 | Code | 11 | | 3 | 00/D79B : 8D DE 50 | STA HGRADDR+0 5044 | 15 AUXMEM.GFX.s 48 | Code | 11 | | 3 | 00/D79E : BD B2 D1 | LDA HGRTAB+1,X 5045 | 15 AUXMEM.GFX.s 49 | Code | 11 | | 3 | 00/D7A1 : 8D DF 50 | STA HGRADDR+1 5046 | 15 AUXMEM.GFX.s 50 | Macro | 11 | | 0 | 00/D7A4 | >>> WRTAUX 5047 | 15 AUXMEM.GFX.s 50 | Code | 11 | | 3 | 00/D7A4 : 8D 05 C0 | STA $C005 ; Write to aux memory 5048 | 15 AUXMEM.GFX.s 50 | Code | 11 | | 1 | 00/D7A7 : 58 | CLI ; Normal service resumed 5049 | 15 AUXMEM.GFX.s 51 | Macro | 11 | | 0 | 00/D7A8 | >>> XF2MAIN,HCLRLINE 5050 | 15 AUXMEM.GFX.s 51 | Empty | 11 | | 0 | 00/D7A8 | 5051 | 15 AUXMEM.GFX.s 51 | Empty | 11 | | 0 | 00/D7A8 | 5052 | 15 AUXMEM.GFX.s 51 | Empty | 11 | | 0 | 00/D7A8 | 5053 | 15 AUXMEM.GFX.s 51 | Empty | 11 | | 0 | 00/D7A8 | 5054 | 15 AUXMEM.GFX.s 51 | Code | 11 | | 2 | 00/D7A8 : A2 96 | LDX #HCLRLINE 5057 | 15 AUXMEM.GFX.s 51 | Code | 11 | | 3 | 00/D7AF : 8E EE 03 | STX {$3EE} 5058 | 15 AUXMEM.GFX.s 51 | Code | 11 | | 1 | 00/D7B2 : 78 | SEI ; Disable IRQ before XFER 5059 | 15 AUXMEM.GFX.s 51 | Code | 11 | | 1 | 00/D7B3 : BA | TSX 5060 | 15 AUXMEM.GFX.s 51 | Code | 11 | | 3 | 00/D7B4 : 8E 01 01 | STX $0101 ; Save alt SP 5061 | 15 AUXMEM.GFX.s 51 | Code | 11 | | 3 | 00/D7B7 : AE 00 01 | LDX $0100 ; Load main SP into X 5062 | 15 AUXMEM.GFX.s 51 | Code | 11 | | 1 | 00/D7BA : 18 | CLC ; Use main mem 5063 | 15 AUXMEM.GFX.s 51 | Code | 11 | | 1 | 00/D7BB : B8 | CLV ; Use main ZP and LC 5064 | 15 AUXMEM.GFX.s 51 | Code | 11 | | 3 | 00/D7BC : 4C 14 C3 | JMP {$C314} 5065 | 15 AUXMEM.GFX.s 52 | Empty | 11 | | 0 | 00/D7BF | 5066 | 15 AUXMEM.GFX.s 53 | Macro | 11 | | 0 | 00/D7BF | HSCRCLEAR >>> XF2MAIN,CLRHGR 5067 | 15 AUXMEM.GFX.s 53 | Empty | 11 | | 0 | 00/D7BF | 5068 | 15 AUXMEM.GFX.s 53 | Empty | 11 | | 0 | 00/D7BF | 5069 | 15 AUXMEM.GFX.s 53 | Empty | 11 | | 0 | 00/D7BF | 5070 | 15 AUXMEM.GFX.s 53 | Empty | 11 | | 0 | 00/D7BF | 5071 | 15 AUXMEM.GFX.s 53 | Code | 11 | | 2 | 00/D7BF : A2 3D | LDX #CLRHGR 5074 | 15 AUXMEM.GFX.s 53 | Code | 11 | | 3 | 00/D7C6 : 8E EE 03 | STX {$3EE} 5075 | 15 AUXMEM.GFX.s 53 | Code | 11 | | 1 | 00/D7C9 : 78 | SEI ; Disable IRQ before XFER 5076 | 15 AUXMEM.GFX.s 53 | Code | 11 | | 1 | 00/D7CA : BA | TSX 5077 | 15 AUXMEM.GFX.s 53 | Code | 11 | | 3 | 00/D7CB : 8E 01 01 | STX $0101 ; Save alt SP 5078 | 15 AUXMEM.GFX.s 53 | Code | 11 | | 3 | 00/D7CE : AE 00 01 | LDX $0100 ; Load main SP into X 5079 | 15 AUXMEM.GFX.s 53 | Code | 11 | | 1 | 00/D7D1 : 18 | CLC ; Use main mem 5080 | 15 AUXMEM.GFX.s 53 | Code | 11 | | 1 | 00/D7D2 : B8 | CLV ; Use main ZP and LC 5081 | 15 AUXMEM.GFX.s 53 | Code | 11 | | 3 | 00/D7D3 : 4C 14 C3 | JMP {$C314} 5082 | 15 AUXMEM.GFX.s 54 | Macro | 11 | | 0 | 00/D7D6 | VDU16RET >>> ENTAUX 5083 | 15 AUXMEM.GFX.s 54 | Code | 11 | | 3 | 00/D7D6 : AE 01 01 | LDX $0101 ; Recover alt SP 5084 | 15 AUXMEM.GFX.s 54 | Code | 11 | | 1 | 00/D7D9 : 9A | TXS 5085 | 15 AUXMEM.GFX.s 54 | Code | 11 | | 1 | 00/D7DA : 58 | CLI ; Re-enable IRQ after XFER 5086 | 15 AUXMEM.GFX.s 54 | Empty | 11 | | 0 | 00/D7DB | 5087 | 15 AUXMEM.GFX.s 54 | Empty | 11 | | 0 | 00/D7DB | 5088 | 15 AUXMEM.GFX.s 54 | Empty | 11 | | 0 | 00/D7DB | 5089 | 15 AUXMEM.GFX.s 54 | Empty | 11 | | 0 | 00/D7DB | 5090 | 15 AUXMEM.GFX.s 55 | Code | 11 | | 3 | 00/D7DB : 9C CC D9 | STZ XPIXEL+0 5091 | 15 AUXMEM.GFX.s 56 | Code | 11 | | 3 | 00/D7DE : 9C CD D9 | STZ XPIXEL+1 5092 | 15 AUXMEM.GFX.s 57 | Code | 11 | | 2 | 00/D7E1 : A9 BF | LDA #191 5093 | 15 AUXMEM.GFX.s 58 | Code | 11 | | 3 | 00/D7E3 : 8D CE D9 | STA YPIXEL 5094 | 15 AUXMEM.GFX.s 59 | Code | 11 | | 1 | 00/D7E6 : 60 | RTS 5095 | 15 AUXMEM.GFX.s 60 | Macro | 11 | | 0 | 00/D7E7 | CLRLNRET >>> ENTAUX 5096 | 15 AUXMEM.GFX.s 60 | Code | 11 | | 3 | 00/D7E7 : AE 01 01 | LDX $0101 ; Recover alt SP 5097 | 15 AUXMEM.GFX.s 60 | Code | 11 | | 1 | 00/D7EA : 9A | TXS 5098 | 15 AUXMEM.GFX.s 60 | Code | 11 | | 1 | 00/D7EB : 58 | CLI ; Re-enable IRQ after XFER 5099 | 15 AUXMEM.GFX.s 60 | Empty | 11 | | 0 | 00/D7EC | 5100 | 15 AUXMEM.GFX.s 60 | Empty | 11 | | 0 | 00/D7EC | 5101 | 15 AUXMEM.GFX.s 60 | Empty | 11 | | 0 | 00/D7EC | 5102 | 15 AUXMEM.GFX.s 60 | Empty | 11 | | 0 | 00/D7EC | 5103 | 15 AUXMEM.GFX.s 61 | Code | 11 | | 1 | 00/D7EC : 60 | RTS 5104 | 15 AUXMEM.GFX.s 62 | Empty | 11 | | 0 | 00/D7ED | 5105 | 15 AUXMEM.GFX.s 63 | Empty | 11 | | 0 | 00/D7ED | 5106 | 15 AUXMEM.GFX.s 64 | Comment | 11 | | 0 | 00/D7ED | * A=txt colour 5107 | 15 AUXMEM.GFX.s 65 | Code | 11 | | 1 | 00/D7ED : 60 | HSCRSETTCOL RTS 5108 | 15 AUXMEM.GFX.s 66 | Empty | 11 | | 0 | 00/D7EE | 5109 | 15 AUXMEM.GFX.s 67 | Empty | 11 | | 0 | 00/D7EE | 5110 | 15 AUXMEM.GFX.s 68 | Comment | 11 | | 0 | 00/D7EE | * A=gfx colour, X=gcol action 5111 | 15 AUXMEM.GFX.s 69 | Comment | 11 | | 0 | 00/D7EE | * GCOL actions: 5112 | 15 AUXMEM.GFX.s 70 | Comment | 11 | | 0 | 00/D7EE | * 0 = SET pixel 5113 | 15 AUXMEM.GFX.s 71 | Comment | 11 | | 0 | 00/D7EE | * 1 = ORA with pixel 5114 | 15 AUXMEM.GFX.s 72 | Comment | 11 | | 0 | 00/D7EE | * 2 = AND with pixel 5115 | 15 AUXMEM.GFX.s 73 | Comment | 11 | | 0 | 00/D7EE | * 3 = XOR with pixel 5116 | 15 AUXMEM.GFX.s 74 | Comment | 11 | | 0 | 00/D7EE | * 4 = NOT pixel 5117 | 15 AUXMEM.GFX.s 75 | Comment | 11 | | 0 | 00/D7EE | * 5 = NUL no change to pixel 5118 | 15 AUXMEM.GFX.s 76 | Comment | 11 | | 0 | 00/D7EE | * 6 = CLR clear pixel to background 5119 | 15 AUXMEM.GFX.s 77 | Comment | 11 | | 0 | 00/D7EE | * 7 = UND undefined 5120 | 15 AUXMEM.GFX.s 78 | Code | 11 | | 1 | 00/D7EE : 48 | HSCRSETGCOL PHA 5121 | 15 AUXMEM.GFX.s 79 | Code | 11 | | 2 | 00/D7EF : A9 00 | LDA #$00 ; Normal drawing mode 5122 | 15 AUXMEM.GFX.s 80 | Code | 11 | | 2 | 00/D7F1 : E0 04 | CPX #$04 ; k=4 means toggle 5123 | 15 AUXMEM.GFX.s 81 | Code | 11 | | 2 | 00/D7F3 : D0 02 | BNE ozunid_172 5124 | 15 AUXMEM.GFX.s 82 | Code | 11 | | 2 | 00/D7F5 : A9 01 | LDA #$01 ; Change to toggle mode 5125 | 15 AUXMEM.GFX.s 83 | Macro | 11 | | 0 | 00/D7F7 | ozunid_172 >>> WRTMAIN 5126 | 15 AUXMEM.GFX.s 83 | Code | 11 | | 1 | 00/D7F7 : 78 | SEI ; Keeps IRQ handler easy 5127 | 15 AUXMEM.GFX.s 83 | Code | 11 | | 3 | 00/D7F8 : 8D 04 C0 | STA $C004 ; Write to main memory 5128 | 15 AUXMEM.GFX.s 84 | Code | 11 | | 3 | 00/D7FB : 8D DC 50 | STA LINETYPE 5129 | 15 AUXMEM.GFX.s 85 | Code | 11 | | 3 | 00/D7FE : 8D 05 94 | STA {$9400}+5 5130 | 15 AUXMEM.GFX.s 86 | Macro | 11 | | 0 | 00/D801 | >>> WRTAUX 5131 | 15 AUXMEM.GFX.s 86 | Code | 11 | | 3 | 00/D801 : 8D 05 C0 | STA $C005 ; Write to aux memory 5132 | 15 AUXMEM.GFX.s 86 | Code | 11 | | 1 | 00/D804 : 58 | CLI ; Normal service resumed 5133 | 15 AUXMEM.GFX.s 87 | Macro | 11 | | 0 | 00/D805 | >>> XF2MAIN,SETLINE 5134 | 15 AUXMEM.GFX.s 87 | Empty | 11 | | 0 | 00/D805 | 5135 | 15 AUXMEM.GFX.s 87 | Empty | 11 | | 0 | 00/D805 | 5136 | 15 AUXMEM.GFX.s 87 | Empty | 11 | | 0 | 00/D805 | 5137 | 15 AUXMEM.GFX.s 87 | Empty | 11 | | 0 | 00/D805 | 5138 | 15 AUXMEM.GFX.s 87 | Code | 11 | | 2 | 00/D805 : A2 72 | LDX #SETLINE 5141 | 15 AUXMEM.GFX.s 87 | Code | 11 | | 3 | 00/D80C : 8E EE 03 | STX {$3EE} 5142 | 15 AUXMEM.GFX.s 87 | Code | 11 | | 1 | 00/D80F : 78 | SEI ; Disable IRQ before XFER 5143 | 15 AUXMEM.GFX.s 87 | Code | 11 | | 1 | 00/D810 : BA | TSX 5144 | 15 AUXMEM.GFX.s 87 | Code | 11 | | 3 | 00/D811 : 8E 01 01 | STX $0101 ; Save alt SP 5145 | 15 AUXMEM.GFX.s 87 | Code | 11 | | 3 | 00/D814 : AE 00 01 | LDX $0100 ; Load main SP into X 5146 | 15 AUXMEM.GFX.s 87 | Code | 11 | | 1 | 00/D817 : 18 | CLC ; Use main mem 5147 | 15 AUXMEM.GFX.s 87 | Code | 11 | | 1 | 00/D818 : B8 | CLV ; Use main ZP and LC 5148 | 15 AUXMEM.GFX.s 87 | Code | 11 | | 3 | 00/D819 : 4C 14 C3 | JMP {$C314} 5149 | 15 AUXMEM.GFX.s 88 | Macro | 11 | | 0 | 00/D81C | VDU18RET1 >>> ENTAUX 5150 | 15 AUXMEM.GFX.s 88 | Code | 11 | | 3 | 00/D81C : AE 01 01 | LDX $0101 ; Recover alt SP 5151 | 15 AUXMEM.GFX.s 88 | Code | 11 | | 1 | 00/D81F : 9A | TXS 5152 | 15 AUXMEM.GFX.s 88 | Code | 11 | | 1 | 00/D820 : 58 | CLI ; Re-enable IRQ after XFER 5153 | 15 AUXMEM.GFX.s 88 | Empty | 11 | | 0 | 00/D821 | 5154 | 15 AUXMEM.GFX.s 88 | Empty | 11 | | 0 | 00/D821 | 5155 | 15 AUXMEM.GFX.s 88 | Empty | 11 | | 0 | 00/D821 | 5156 | 15 AUXMEM.GFX.s 88 | Empty | 11 | | 0 | 00/D821 | 5157 | 15 AUXMEM.GFX.s 89 | Code | 11 | | 1 | 00/D821 : 68 | ozunid_173 PLA ; Colour 5158 | 15 AUXMEM.GFX.s 90 | Code | 11 | | 2 | 00/D822 : 10 0E | BPL _FOREGND ; <128 is foreground 5159 | 15 AUXMEM.GFX.s 91 | Macro | 11 | | 0 | 00/D824 | >>> WRTMAIN 5160 | 15 AUXMEM.GFX.s 91 | Code | 11 | | 1 | 00/D824 : 78 | SEI ; Keeps IRQ handler easy 5161 | 15 AUXMEM.GFX.s 91 | Code | 11 | | 3 | 00/D825 : 8D 04 C0 | STA $C004 ; Write to main memory 5162 | 15 AUXMEM.GFX.s 92 | Code | 11 | | 2 | 00/D828 : 29 7F | AND #$7F 5163 | 15 AUXMEM.GFX.s 93 | Code | 11 | | 3 | 00/D82A : 8D DB 50 | STA BGCOLOR ; Stored in main memory 5164 | 15 AUXMEM.GFX.s 94 | Macro | 11 | | 0 | 00/D82D | >>> WRTAUX 5165 | 15 AUXMEM.GFX.s 94 | Code | 11 | | 3 | 00/D82D : 8D 05 C0 | STA $C005 ; Write to aux memory 5166 | 15 AUXMEM.GFX.s 94 | Code | 11 | | 1 | 00/D830 : 58 | CLI ; Normal service resumed 5167 | 15 AUXMEM.GFX.s 95 | Code | 11 | | 1 | 00/D831 : 60 | RTS 5168 | 15 AUXMEM.GFX.s 96 | Macro | 11 | | 0 | 00/D832 | _FOREGND >>> WRTMAIN 5169 | 15 AUXMEM.GFX.s 96 | Code | 11 | | 1 | 00/D832 : 78 | SEI ; Keeps IRQ handler easy 5170 | 15 AUXMEM.GFX.s 96 | Code | 11 | | 3 | 00/D833 : 8D 04 C0 | STA $C004 ; Write to main memory 5171 | 15 AUXMEM.GFX.s 97 | Code | 11 | | 3 | 00/D836 : 8D DA 50 | STA FGCOLOR ; Stored in main memory 5172 | 15 AUXMEM.GFX.s 98 | Macro | 11 | | 0 | 00/D839 | >>> WRTAUX 5173 | 15 AUXMEM.GFX.s 98 | Code | 11 | | 3 | 00/D839 : 8D 05 C0 | STA $C005 ; Write to aux memory 5174 | 15 AUXMEM.GFX.s 98 | Code | 11 | | 1 | 00/D83C : 58 | CLI ; Normal service resumed 5175 | 15 AUXMEM.GFX.s 99 | Code | 11 | | 1 | 00/D83D : 60 | RTS 5176 | 15 AUXMEM.GFX.s 100 | Empty | 11 | | 0 | 00/D83E | 5177 | 15 AUXMEM.GFX.s 101 | Comment | 11 | | 0 | 00/D83E | * TEMP * 5178 | 15 AUXMEM.GFX.s 102 | Code | 11 | | 2 | 00/D83E : A2 03 | HGRPLOTTER LDX #3 5179 | 15 AUXMEM.GFX.s 103 | Code | 11 | | 3 | 00/D840 : BD C0 02 | HGRPLOTTER1 LDA {{$290}+$2B}+5,X 5180 | 15 AUXMEM.GFX.s 104 | Code | 11 | | 1 | 00/D843 : 48 | PHA 5181 | 15 AUXMEM.GFX.s 105 | Code | 11 | | 1 | 00/D844 : CA | DEX 5182 | 15 AUXMEM.GFX.s 106 | Code | 11 | | 2 | 00/D845 : 10 F9 | BPL HGRPLOTTER1 5183 | 15 AUXMEM.GFX.s 107 | Code | 11 | | 3 | 00/D847 : 20 5C D8 | JSR HGRPLOT 5184 | 15 AUXMEM.GFX.s 108 | Code | 11 | | 2 | 00/D84A : A2 00 | LDX #0 5185 | 15 AUXMEM.GFX.s 109 | Code | 11 | | 3 | 00/D84C : BD C0 02 | HGRPLOTTER2 LDA {{$290}+$2B}+5,X 5186 | 15 AUXMEM.GFX.s 110 | Code | 11 | | 3 | 00/D84F : 9D AC 02 | STA {{$290}+$1C},X 5187 | 15 AUXMEM.GFX.s 111 | Code | 11 | | 1 | 00/D852 : 68 | PLA 5188 | 15 AUXMEM.GFX.s 112 | Code | 11 | | 3 | 00/D853 : 9D C0 02 | STA {{$290}+$2B}+5,X 5189 | 15 AUXMEM.GFX.s 113 | Code | 11 | | 1 | 00/D856 : E8 | INX 5190 | 15 AUXMEM.GFX.s 114 | Code | 11 | | 2 | 00/D857 : E0 04 | CPX #4 5191 | 15 AUXMEM.GFX.s 115 | Code | 11 | | 2 | 00/D859 : 90 F1 | BCC HGRPLOTTER2 5192 | 15 AUXMEM.GFX.s 116 | Code | 11 | | 1 | 00/D85B : 60 | RTS 5193 | 15 AUXMEM.GFX.s 117 | Comment | 11 | | 0 | 00/D85C | * TEMP * 5194 | 15 AUXMEM.GFX.s 118 | Empty | 11 | | 0 | 00/D85C | 5195 | 15 AUXMEM.GFX.s 119 | Comment | 11 | | 0 | 00/D85C | * Plot actions, PLOT k,x,y 5196 | 15 AUXMEM.GFX.s 120 | Comment | 11 | | 0 | 00/D85C | * k is in VDUQ+4 5197 | 15 AUXMEM.GFX.s 121 | Comment | 11 | | 0 | 00/D85C | * x is in VDUQ+5,VDUQ+6 5198 | 15 AUXMEM.GFX.s 122 | Comment | 11 | | 0 | 00/D85C | * y is in VDUQ+7,VDUQ+8 5199 | 15 AUXMEM.GFX.s 123 | Comment | 11 | | 0 | 00/D85C | * 5200 | 15 AUXMEM.GFX.s 124 | Comment | 11 | | 0 | 00/D85C | * Plot actions capable with FastDraw: 5201 | 15 AUXMEM.GFX.s 125 | Comment | 11 | | 0 | 00/D85C | * $00+x - move/draw lines 5202 | 15 AUXMEM.GFX.s 126 | Comment | 11 | | 0 | 00/D85C | * $40+x - plot point 5203 | 15 AUXMEM.GFX.s 127 | Comment | 11 | | 0 | 00/D85C | * $50+x - fill triangle 5204 | 15 AUXMEM.GFX.s 128 | Comment | 11 | | 0 | 00/D85C | * $60+x - fill rectangle 5205 | 15 AUXMEM.GFX.s 129 | Comment | 11 | | 0 | 00/D85C | * $90+x - draw circle 5206 | 15 AUXMEM.GFX.s 130 | Comment | 11 | | 0 | 00/D85C | * $98+x - fill circle 5207 | 15 AUXMEM.GFX.s 131 | Comment | 11 | | 0 | 00/D85C | * 5208 | 15 AUXMEM.GFX.s 132 | Code | 11 | | 3 | 00/D85C : 20 D0 D9 | HGRPLOT JSR CVTCOORD ; Convert coordinate system 5209 | 15 AUXMEM.GFX.s 133 | Code | 11 | | 3 | 00/D85F : AD BF 02 | HGRPLOT2 LDA {{$290}+$2B}+4 5210 | 15 AUXMEM.GFX.s 134 | Code | 11 | | 2 | 00/D862 : 29 04 | AND #$04 ; Bit 2 set -> absolute 5211 | 15 AUXMEM.GFX.s 135 | Code | 11 | | 2 | 00/D864 : D0 03 | BNE HGRPLOTABS 5212 | 15 AUXMEM.GFX.s 136 | Code | 11 | | 3 | 00/D866 : 20 5F DA | JSR RELCOORD ; Add coords to XPIXEL/YPIXEL 5213 | 15 AUXMEM.GFX.s 137 | Code | 11 | | 3 | 00/D869 : AD BF 02 | HGRPLOTABS LDA {{$290}+$2B}+4 5214 | 15 AUXMEM.GFX.s 138 | Code | 11 | | 2 | 00/D86C : 29 03 | AND #$03 5215 | 15 AUXMEM.GFX.s 139 | Code | 11 | | 2 | 00/D86E : C9 00 | CMP #$0 ; Bits 0,1 clear -> just move 5216 | 15 AUXMEM.GFX.s 140 | Code | 11 | | 2 | 00/D870 : D0 03 | BNE HGRPLOTACT 5217 | 15 AUXMEM.GFX.s 141 | Code | 11 | | 3 | 00/D872 : 4C B9 D9 | HGRPLOTPOS JMP HGRPOS ; Just update pos 5218 | 15 AUXMEM.GFX.s 142 | Code | 11 | | 3 | 00/D875 : AD BF 02 | HGRPLOTACT LDA {{$290}+$2B}+4 5219 | 15 AUXMEM.GFX.s 143 | Code | 11 | | 2 | 00/D878 : 29 F0 | AND #$F0 5220 | 15 AUXMEM.GFX.s 144 | Code | 11 | | 2 | 00/D87A : C9 00 | CMP #$00 5221 | 15 AUXMEM.GFX.s 145 | Code | 11 | | 2 | 00/D87C : F0 4A | BEQ _LINE 5222 | 15 AUXMEM.GFX.s 146 | Code | 11 | | 2 | 00/D87E : C9 40 | CMP #$40 5223 | 15 AUXMEM.GFX.s 147 | Code | 11 | | 2 | 00/D880 : F0 0F | BEQ _POINT 5224 | 15 AUXMEM.GFX.s 148 | Code | 11 | | 2 | 00/D882 : C9 60 | CMP #$60 5225 | 15 AUXMEM.GFX.s 149 | Code | 11 | | 2 | 00/D884 : D0 03 | BNE ozunid_174 5226 | 15 AUXMEM.GFX.s 150 | Code | 11 | | 3 | 00/D886 : 4C 11 D9 | JMP _RECT 5227 | 15 AUXMEM.GFX.s 151 | Code | 11 | | 2 | 00/D889 : C9 90 | ozunid_174 CMP #$90 5228 | 15 AUXMEM.GFX.s 152 | Code | 11 | | 2 | 00/D88B : D0 03 | BNE _UNDEF 5229 | 15 AUXMEM.GFX.s 153 | Code | 11 | | 3 | 00/D88D : 4C 5A D9 | JMP _CIRC 5230 | 15 AUXMEM.GFX.s 154 | Code | 11 | | 1 | 00/D890 : 60 | _UNDEF RTS 5231 | 15 AUXMEM.GFX.s 155 | Macro | 11 | | 0 | 00/D891 | _POINT >>> WRTMAIN 5232 | 15 AUXMEM.GFX.s 155 | Code | 11 | | 1 | 00/D891 : 78 | SEI ; Keeps IRQ handler easy 5233 | 15 AUXMEM.GFX.s 155 | Code | 11 | | 3 | 00/D892 : 8D 04 C0 | STA $C004 ; Write to main memory 5234 | 15 AUXMEM.GFX.s 156 | Code | 11 | | 3 | 00/D895 : AD BF 02 | LDA {{$290}+$2B}+4 5235 | 15 AUXMEM.GFX.s 157 | Code | 11 | | 3 | 00/D898 : 8D DD 50 | STA PLOTMODE 5236 | 15 AUXMEM.GFX.s 158 | Code | 11 | | 3 | 00/D89B : AD C0 02 | LDA {{$290}+$2B}+5 5237 | 15 AUXMEM.GFX.s 159 | Code | 11 | | 3 | 00/D89E : 8D 06 94 | STA {$9400}+6 ; LSB of X1 5238 | 15 AUXMEM.GFX.s 160 | Code | 11 | | 3 | 00/D8A1 : AD C1 02 | LDA {{$290}+$2B}+6 5239 | 15 AUXMEM.GFX.s 161 | Code | 11 | | 3 | 00/D8A4 : 8D 07 94 | STA {$9400}+7 ; MSB of X1 5240 | 15 AUXMEM.GFX.s 162 | Code | 11 | | 3 | 00/D8A7 : AD C2 02 | LDA {{$290}+$2B}+7 5241 | 15 AUXMEM.GFX.s 163 | Code | 11 | | 3 | 00/D8AA : 8D 08 94 | STA {$9400}+8 ; Y1 5242 | 15 AUXMEM.GFX.s 164 | Macro | 11 | | 0 | 00/D8AD | >>> WRTAUX 5243 | 15 AUXMEM.GFX.s 164 | Code | 11 | | 3 | 00/D8AD : 8D 05 C0 | STA $C005 ; Write to aux memory 5244 | 15 AUXMEM.GFX.s 164 | Code | 11 | | 1 | 00/D8B0 : 58 | CLI ; Normal service resumed 5245 | 15 AUXMEM.GFX.s 165 | Macro | 11 | | 0 | 00/D8B1 | >>> XF2MAIN,DRAWPNT 5246 | 15 AUXMEM.GFX.s 165 | Empty | 11 | | 0 | 00/D8B1 | 5247 | 15 AUXMEM.GFX.s 165 | Empty | 11 | | 0 | 00/D8B1 | 5248 | 15 AUXMEM.GFX.s 165 | Empty | 11 | | 0 | 00/D8B1 | 5249 | 15 AUXMEM.GFX.s 165 | Empty | 11 | | 0 | 00/D8B1 | 5250 | 15 AUXMEM.GFX.s 165 | Code | 11 | | 2 | 00/D8B1 : A2 DE | LDX #DRAWPNT 5253 | 15 AUXMEM.GFX.s 165 | Code | 11 | | 3 | 00/D8B8 : 8E EE 03 | STX {$3EE} 5254 | 15 AUXMEM.GFX.s 165 | Code | 11 | | 1 | 00/D8BB : 78 | SEI ; Disable IRQ before XFER 5255 | 15 AUXMEM.GFX.s 165 | Code | 11 | | 1 | 00/D8BC : BA | TSX 5256 | 15 AUXMEM.GFX.s 165 | Code | 11 | | 3 | 00/D8BD : 8E 01 01 | STX $0101 ; Save alt SP 5257 | 15 AUXMEM.GFX.s 165 | Code | 11 | | 3 | 00/D8C0 : AE 00 01 | LDX $0100 ; Load main SP into X 5258 | 15 AUXMEM.GFX.s 165 | Code | 11 | | 1 | 00/D8C3 : 18 | CLC ; Use main mem 5259 | 15 AUXMEM.GFX.s 165 | Code | 11 | | 1 | 00/D8C4 : B8 | CLV ; Use main ZP and LC 5260 | 15 AUXMEM.GFX.s 165 | Code | 11 | | 3 | 00/D8C5 : 4C 14 C3 | JMP {$C314} 5261 | 15 AUXMEM.GFX.s 166 | Macro | 11 | | 0 | 00/D8C8 | _LINE >>> WRTMAIN 5262 | 15 AUXMEM.GFX.s 166 | Code | 11 | | 1 | 00/D8C8 : 78 | SEI ; Keeps IRQ handler easy 5263 | 15 AUXMEM.GFX.s 166 | Code | 11 | | 3 | 00/D8C9 : 8D 04 C0 | STA $C004 ; Write to main memory 5264 | 15 AUXMEM.GFX.s 167 | Code | 11 | | 3 | 00/D8CC : AD BF 02 | LDA {{$290}+$2B}+4 5265 | 15 AUXMEM.GFX.s 168 | Code | 11 | | 3 | 00/D8CF : 8D DD 50 | STA PLOTMODE 5266 | 15 AUXMEM.GFX.s 169 | Code | 11 | | 3 | 00/D8D2 : AD CC D9 | LDA XPIXEL+0 5267 | 15 AUXMEM.GFX.s 170 | Code | 11 | | 3 | 00/D8D5 : 8D 06 94 | STA {$9400}+6 ; LSB of X1 5268 | 15 AUXMEM.GFX.s 171 | Code | 11 | | 3 | 00/D8D8 : AD CD D9 | LDA XPIXEL+1 5269 | 15 AUXMEM.GFX.s 172 | Code | 11 | | 3 | 00/D8DB : 8D 07 94 | STA {$9400}+7 ; MSB of X1 5270 | 15 AUXMEM.GFX.s 173 | Code | 11 | | 3 | 00/D8DE : AD CE D9 | LDA YPIXEL 5271 | 15 AUXMEM.GFX.s 174 | Code | 11 | | 3 | 00/D8E1 : 8D 08 94 | STA {$9400}+8 ; Y1 5272 | 15 AUXMEM.GFX.s 175 | Code | 11 | | 3 | 00/D8E4 : AD C0 02 | LDA {{$290}+$2B}+5 5273 | 15 AUXMEM.GFX.s 176 | Code | 11 | | 3 | 00/D8E7 : 8D 09 94 | STA {$9400}+9 ; LSB of X2 5274 | 15 AUXMEM.GFX.s 177 | Code | 11 | | 3 | 00/D8EA : AD C1 02 | LDA {{$290}+$2B}+6 5275 | 15 AUXMEM.GFX.s 178 | Code | 11 | | 3 | 00/D8ED : 8D 0A 94 | STA {$9400}+10 ; MSB of X2 5276 | 15 AUXMEM.GFX.s 179 | Code | 11 | | 3 | 00/D8F0 : AD C2 02 | LDA {{$290}+$2B}+7 5277 | 15 AUXMEM.GFX.s 180 | Code | 11 | | 3 | 00/D8F3 : 8D 0B 94 | STA {$9400}+11 ; Y2 5278 | 15 AUXMEM.GFX.s 181 | Macro | 11 | | 0 | 00/D8F6 | >>> WRTAUX 5279 | 15 AUXMEM.GFX.s 181 | Code | 11 | | 3 | 00/D8F6 : 8D 05 C0 | STA $C005 ; Write to aux memory 5280 | 15 AUXMEM.GFX.s 181 | Code | 11 | | 1 | 00/D8F9 : 58 | CLI ; Normal service resumed 5281 | 15 AUXMEM.GFX.s 182 | Macro | 11 | | 0 | 00/D8FA | >>> XF2MAIN,DRAWLINE 5282 | 15 AUXMEM.GFX.s 182 | Empty | 11 | | 0 | 00/D8FA | 5283 | 15 AUXMEM.GFX.s 182 | Empty | 11 | | 0 | 00/D8FA | 5284 | 15 AUXMEM.GFX.s 182 | Empty | 11 | | 0 | 00/D8FA | 5285 | 15 AUXMEM.GFX.s 182 | Empty | 11 | | 0 | 00/D8FA | 5286 | 15 AUXMEM.GFX.s 182 | Code | 11 | | 2 | 00/D8FA : A2 B8 | LDX #DRAWLINE 5289 | 15 AUXMEM.GFX.s 182 | Code | 11 | | 3 | 00/D901 : 8E EE 03 | STX {$3EE} 5290 | 15 AUXMEM.GFX.s 182 | Code | 11 | | 1 | 00/D904 : 78 | SEI ; Disable IRQ before XFER 5291 | 15 AUXMEM.GFX.s 182 | Code | 11 | | 1 | 00/D905 : BA | TSX 5292 | 15 AUXMEM.GFX.s 182 | Code | 11 | | 3 | 00/D906 : 8E 01 01 | STX $0101 ; Save alt SP 5293 | 15 AUXMEM.GFX.s 182 | Code | 11 | | 3 | 00/D909 : AE 00 01 | LDX $0100 ; Load main SP into X 5294 | 15 AUXMEM.GFX.s 182 | Code | 11 | | 1 | 00/D90C : 18 | CLC ; Use main mem 5295 | 15 AUXMEM.GFX.s 182 | Code | 11 | | 1 | 00/D90D : B8 | CLV ; Use main ZP and LC 5296 | 15 AUXMEM.GFX.s 182 | Code | 11 | | 3 | 00/D90E : 4C 14 C3 | JMP {$C314} 5297 | 15 AUXMEM.GFX.s 183 | Macro | 11 | | 0 | 00/D911 | _RECT >>> WRTMAIN 5298 | 15 AUXMEM.GFX.s 183 | Code | 11 | | 1 | 00/D911 : 78 | SEI ; Keeps IRQ handler easy 5299 | 15 AUXMEM.GFX.s 183 | Code | 11 | | 3 | 00/D912 : 8D 04 C0 | STA $C004 ; Write to main memory 5300 | 15 AUXMEM.GFX.s 184 | Code | 11 | | 3 | 00/D915 : AD BF 02 | LDA {{$290}+$2B}+4 5301 | 15 AUXMEM.GFX.s 185 | Code | 11 | | 3 | 00/D918 : 8D DD 50 | STA PLOTMODE 5302 | 15 AUXMEM.GFX.s 186 | Code | 11 | | 3 | 00/D91B : AD CC D9 | LDA XPIXEL+0 5303 | 15 AUXMEM.GFX.s 187 | Code | 11 | | 3 | 00/D91E : 8D 06 94 | STA {$9400}+6 ; LSB of X1 5304 | 15 AUXMEM.GFX.s 188 | Code | 11 | | 3 | 00/D921 : AD CD D9 | LDA XPIXEL+1 5305 | 15 AUXMEM.GFX.s 189 | Code | 11 | | 3 | 00/D924 : 8D 07 94 | STA {$9400}+7 ; MSB of X1 5306 | 15 AUXMEM.GFX.s 190 | Code | 11 | | 3 | 00/D927 : AD CE D9 | LDA YPIXEL 5307 | 15 AUXMEM.GFX.s 191 | Code | 11 | | 3 | 00/D92A : 8D 08 94 | STA {$9400}+8 ; Y1 5308 | 15 AUXMEM.GFX.s 192 | Code | 11 | | 3 | 00/D92D : AD C0 02 | LDA {{$290}+$2B}+5 5309 | 15 AUXMEM.GFX.s 193 | Code | 11 | | 3 | 00/D930 : 8D 09 94 | STA {$9400}+9 ; LSB of X2 5310 | 15 AUXMEM.GFX.s 194 | Code | 11 | | 3 | 00/D933 : AD C1 02 | LDA {{$290}+$2B}+6 5311 | 15 AUXMEM.GFX.s 195 | Code | 11 | | 3 | 00/D936 : 8D 0A 94 | STA {$9400}+10 ; MSB of X2 5312 | 15 AUXMEM.GFX.s 196 | Code | 11 | | 3 | 00/D939 : AD C2 02 | LDA {{$290}+$2B}+7 5313 | 15 AUXMEM.GFX.s 197 | Code | 11 | | 3 | 00/D93C : 8D 0B 94 | STA {$9400}+11 ; Y2 5314 | 15 AUXMEM.GFX.s 198 | Macro | 11 | | 0 | 00/D93F | >>> WRTAUX 5315 | 15 AUXMEM.GFX.s 198 | Code | 11 | | 3 | 00/D93F : 8D 05 C0 | STA $C005 ; Write to aux memory 5316 | 15 AUXMEM.GFX.s 198 | Code | 11 | | 1 | 00/D942 : 58 | CLI ; Normal service resumed 5317 | 15 AUXMEM.GFX.s 199 | Macro | 11 | | 0 | 00/D943 | >>> XF2MAIN,FILLRECT 5318 | 15 AUXMEM.GFX.s 199 | Empty | 11 | | 0 | 00/D943 | 5319 | 15 AUXMEM.GFX.s 199 | Empty | 11 | | 0 | 00/D943 | 5320 | 15 AUXMEM.GFX.s 199 | Empty | 11 | | 0 | 00/D943 | 5321 | 15 AUXMEM.GFX.s 199 | Empty | 11 | | 0 | 00/D943 | 5322 | 15 AUXMEM.GFX.s 199 | Code | 11 | | 2 | 00/D943 : A2 50 | LDX #FILLRECT 5325 | 15 AUXMEM.GFX.s 199 | Code | 11 | | 3 | 00/D94A : 8E EE 03 | STX {$3EE} 5326 | 15 AUXMEM.GFX.s 199 | Code | 11 | | 1 | 00/D94D : 78 | SEI ; Disable IRQ before XFER 5327 | 15 AUXMEM.GFX.s 199 | Code | 11 | | 1 | 00/D94E : BA | TSX 5328 | 15 AUXMEM.GFX.s 199 | Code | 11 | | 3 | 00/D94F : 8E 01 01 | STX $0101 ; Save alt SP 5329 | 15 AUXMEM.GFX.s 199 | Code | 11 | | 3 | 00/D952 : AE 00 01 | LDX $0100 ; Load main SP into X 5330 | 15 AUXMEM.GFX.s 199 | Code | 11 | | 1 | 00/D955 : 18 | CLC ; Use main mem 5331 | 15 AUXMEM.GFX.s 199 | Code | 11 | | 1 | 00/D956 : B8 | CLV ; Use main ZP and LC 5332 | 15 AUXMEM.GFX.s 199 | Code | 11 | | 3 | 00/D957 : 4C 14 C3 | JMP {$C314} 5333 | 15 AUXMEM.GFX.s 200 | Macro | 11 | | 0 | 00/D95A | _CIRC >>> WRTMAIN 5334 | 15 AUXMEM.GFX.s 200 | Code | 11 | | 1 | 00/D95A : 78 | SEI ; Keeps IRQ handler easy 5335 | 15 AUXMEM.GFX.s 200 | Code | 11 | | 3 | 00/D95B : 8D 04 C0 | STA $C004 ; Write to main memory 5336 | 15 AUXMEM.GFX.s 201 | Code | 11 | | 3 | 00/D95E : AD CC D9 | LDA XPIXEL+0 5337 | 15 AUXMEM.GFX.s 202 | Code | 11 | | 3 | 00/D961 : 8D 06 94 | STA {$9400}+6 5338 | 15 AUXMEM.GFX.s 203 | Code | 11 | | 3 | 00/D964 : AD CD D9 | LDA XPIXEL+1 5339 | 15 AUXMEM.GFX.s 204 | Code | 11 | | 3 | 00/D967 : 8D 07 94 | STA {$9400}+7 5340 | 15 AUXMEM.GFX.s 205 | Code | 11 | | 3 | 00/D96A : AD CE D9 | LDA YPIXEL 5341 | 15 AUXMEM.GFX.s 206 | Code | 11 | | 3 | 00/D96D : 8D 08 94 | STA {$9400}+8 5342 | 15 AUXMEM.GFX.s 207 | Code | 11 | | 3 | 00/D970 : AD C0 02 | LDA {{$290}+$2B}+5 5343 | 15 AUXMEM.GFX.s 208 | Code | 11 | | 3 | 00/D973 : 8D 0C 94 | STA {$9400}+12 ; Radius 5344 | 15 AUXMEM.GFX.s 209 | Code | 11 | | 3 | 00/D976 : AD BF 02 | LDA {{$290}+$2B}+4 5345 | 15 AUXMEM.GFX.s 210 | Code | 11 | | 3 | 00/D979 : 8D DD 50 | STA PLOTMODE 5346 | 15 AUXMEM.GFX.s 211 | Macro | 11 | | 0 | 00/D97C | >>> WRTAUX 5347 | 15 AUXMEM.GFX.s 211 | Code | 11 | | 3 | 00/D97C : 8D 05 C0 | STA $C005 ; Write to aux memory 5348 | 15 AUXMEM.GFX.s 211 | Code | 11 | | 1 | 00/D97F : 58 | CLI ; Normal service resumed 5349 | 15 AUXMEM.GFX.s 212 | Code | 11 | | 2 | 00/D980 : 29 F8 | AND #$F8 5350 | 15 AUXMEM.GFX.s 213 | Code | 11 | | 2 | 00/D982 : C9 98 | CMP #$98 5351 | 15 AUXMEM.GFX.s 214 | Code | 11 | | 2 | 00/D984 : F0 17 | BEQ _FILLCIRC 5352 | 15 AUXMEM.GFX.s 215 | Macro | 11 | | 0 | 00/D986 | >>> XF2MAIN,DRAWCIRC 5353 | 15 AUXMEM.GFX.s 215 | Empty | 11 | | 0 | 00/D986 | 5354 | 15 AUXMEM.GFX.s 215 | Empty | 11 | | 0 | 00/D986 | 5355 | 15 AUXMEM.GFX.s 215 | Empty | 11 | | 0 | 00/D986 | 5356 | 15 AUXMEM.GFX.s 215 | Empty | 11 | | 0 | 00/D986 | 5357 | 15 AUXMEM.GFX.s 215 | Code | 11 | | 2 | 00/D986 : A2 04 | LDX #DRAWCIRC 5360 | 15 AUXMEM.GFX.s 215 | Code | 11 | | 3 | 00/D98D : 8E EE 03 | STX {$3EE} 5361 | 15 AUXMEM.GFX.s 215 | Code | 11 | | 1 | 00/D990 : 78 | SEI ; Disable IRQ before XFER 5362 | 15 AUXMEM.GFX.s 215 | Code | 11 | | 1 | 00/D991 : BA | TSX 5363 | 15 AUXMEM.GFX.s 215 | Code | 11 | | 3 | 00/D992 : 8E 01 01 | STX $0101 ; Save alt SP 5364 | 15 AUXMEM.GFX.s 215 | Code | 11 | | 3 | 00/D995 : AE 00 01 | LDX $0100 ; Load main SP into X 5365 | 15 AUXMEM.GFX.s 215 | Code | 11 | | 1 | 00/D998 : 18 | CLC ; Use main mem 5366 | 15 AUXMEM.GFX.s 215 | Code | 11 | | 1 | 00/D999 : B8 | CLV ; Use main ZP and LC 5367 | 15 AUXMEM.GFX.s 215 | Code | 11 | | 3 | 00/D99A : 4C 14 C3 | JMP {$C314} 5368 | 15 AUXMEM.GFX.s 216 | Macro | 11 | | 0 | 00/D99D | _FILLCIRC >>> XF2MAIN,FILLCIRC 5369 | 15 AUXMEM.GFX.s 216 | Empty | 11 | | 0 | 00/D99D | 5370 | 15 AUXMEM.GFX.s 216 | Empty | 11 | | 0 | 00/D99D | 5371 | 15 AUXMEM.GFX.s 216 | Empty | 11 | | 0 | 00/D99D | 5372 | 15 AUXMEM.GFX.s 216 | Empty | 11 | | 0 | 00/D99D | 5373 | 15 AUXMEM.GFX.s 216 | Code | 11 | | 2 | 00/D99D : A2 2A | LDX #FILLCIRC 5376 | 15 AUXMEM.GFX.s 216 | Code | 11 | | 3 | 00/D9A4 : 8E EE 03 | STX {$3EE} 5377 | 15 AUXMEM.GFX.s 216 | Code | 11 | | 1 | 00/D9A7 : 78 | SEI ; Disable IRQ before XFER 5378 | 15 AUXMEM.GFX.s 216 | Code | 11 | | 1 | 00/D9A8 : BA | TSX 5379 | 15 AUXMEM.GFX.s 216 | Code | 11 | | 3 | 00/D9A9 : 8E 01 01 | STX $0101 ; Save alt SP 5380 | 15 AUXMEM.GFX.s 216 | Code | 11 | | 3 | 00/D9AC : AE 00 01 | LDX $0100 ; Load main SP into X 5381 | 15 AUXMEM.GFX.s 216 | Code | 11 | | 1 | 00/D9AF : 18 | CLC ; Use main mem 5382 | 15 AUXMEM.GFX.s 216 | Code | 11 | | 1 | 00/D9B0 : B8 | CLV ; Use main ZP and LC 5383 | 15 AUXMEM.GFX.s 216 | Code | 11 | | 3 | 00/D9B1 : 4C 14 C3 | JMP {$C314} 5384 | 15 AUXMEM.GFX.s 217 | Macro | 11 | | 0 | 00/D9B4 | VDU25RET >>> ENTAUX 5385 | 15 AUXMEM.GFX.s 217 | Code | 11 | | 3 | 00/D9B4 : AE 01 01 | LDX $0101 ; Recover alt SP 5386 | 15 AUXMEM.GFX.s 217 | Code | 11 | | 1 | 00/D9B7 : 9A | TXS 5387 | 15 AUXMEM.GFX.s 217 | Code | 11 | | 1 | 00/D9B8 : 58 | CLI ; Re-enable IRQ after XFER 5388 | 15 AUXMEM.GFX.s 217 | Empty | 11 | | 0 | 00/D9B9 | 5389 | 15 AUXMEM.GFX.s 217 | Empty | 11 | | 0 | 00/D9B9 | 5390 | 15 AUXMEM.GFX.s 217 | Empty | 11 | | 0 | 00/D9B9 | 5391 | 15 AUXMEM.GFX.s 217 | Empty | 11 | | 0 | 00/D9B9 | 5392 | 15 AUXMEM.GFX.s 218 | Comment | 11 | | 0 | 00/D9B9 | * Fall through into HGRPOS 5393 | 15 AUXMEM.GFX.s 219 | Comment | 11 | | 0 | 00/D9B9 | * Save pixel X,Y position 5394 | 15 AUXMEM.GFX.s 220 | Code | 11 | | 3 | 00/D9B9 : AD C0 02 | HGRPOS LDA {{$290}+$2B}+5 5395 | 15 AUXMEM.GFX.s 221 | Code | 11 | | 3 | 00/D9BC : 8D CC D9 | STA XPIXEL+0 5396 | 15 AUXMEM.GFX.s 222 | Code | 11 | | 3 | 00/D9BF : AD C1 02 | LDA {{$290}+$2B}+6 5397 | 15 AUXMEM.GFX.s 223 | Code | 11 | | 3 | 00/D9C2 : 8D CD D9 | STA XPIXEL+1 5398 | 15 AUXMEM.GFX.s 224 | Code | 11 | | 3 | 00/D9C5 : AD C2 02 | LDA {{$290}+$2B}+7 5399 | 15 AUXMEM.GFX.s 225 | Code | 11 | | 3 | 00/D9C8 : 8D CE D9 | STA YPIXEL 5400 | 15 AUXMEM.GFX.s 226 | Code | 11 | | 1 | 00/D9CB : 60 | RTS 5401 | 15 AUXMEM.GFX.s 227 | Data | 11 | | 2 | 00/D9CC : 00 00 | XPIXEL DW $0000 ; Previous plot x-coord 5402 | 15 AUXMEM.GFX.s 228 | Data | 11 | | 2 | 00/D9CE : 00 00 | YPIXEL DW $0000 ; Previous plot y-coord 5403 | 15 AUXMEM.GFX.s 229 | Empty | 11 | | 0 | 00/D9D0 | 5404 | 15 AUXMEM.GFX.s 230 | Comment | 11 | | 0 | 00/D9D0 | * Convert high-resolution screen coordinates 5405 | 15 AUXMEM.GFX.s 231 | Comment | 11 | | 0 | 00/D9D0 | * from 1280x1024 to 280x192 5406 | 15 AUXMEM.GFX.s 232 | Empty | 11 | | 0 | 00/D9D0 | CVTCOORD 5407 | 15 AUXMEM.GFX.s 233 | Comment | 11 | | 0 | 00/D9D0 | * X-coordinate in VDUQ+5,+6 1280*7/32=280 5408 | 15 AUXMEM.GFX.s 234 | Code | 11 | | 3 | 00/D9D0 : AD C1 02 | LDA {{$290}+$2B}+6 ; MSB of X-coord 5409 | 15 AUXMEM.GFX.s 235 | Code | 11 | | 2 | 00/D9D3 : C9 05 | CMP #$05 ; $500 is 1280 5410 | 15 AUXMEM.GFX.s 236 | Code | 11 | | 2 | 00/D9D5 : B0 7C | BCS _BIGX ; Value >=1280 5411 | 15 AUXMEM.GFX.s 237 | Code | 11 | | 2 | 00/D9D7 : 85 91 | STA {$90}+1 ; X-coord -> ZP1 and ZP2 5412 | 15 AUXMEM.GFX.s 238 | Code | 11 | | 2 | 00/D9D9 : 85 93 | STA {$92}+1 5413 | 15 AUXMEM.GFX.s 239 | Code | 11 | | 3 | 00/D9DB : AD C0 02 | LDA {{$290}+$2B}+5 5414 | 15 AUXMEM.GFX.s 240 | Code | 11 | | 2 | 00/D9DE : 85 90 | STA {$90}+0 5415 | 15 AUXMEM.GFX.s 241 | Code | 11 | | 1 | 00/D9E0 : 0A | ASL A ; ZP2 *= 8 5416 | 15 AUXMEM.GFX.s 242 | Code | 11 | | 2 | 00/D9E1 : 26 93 | ROL {$92}+1 5417 | 15 AUXMEM.GFX.s 243 | Code | 11 | | 1 | 00/D9E3 : 0A | ASL A 5418 | 15 AUXMEM.GFX.s 244 | Code | 11 | | 2 | 00/D9E4 : 26 93 | ROL {$92}+1 5419 | 15 AUXMEM.GFX.s 245 | Code | 11 | | 1 | 00/D9E6 : 0A | ASL A 5420 | 15 AUXMEM.GFX.s 246 | Code | 11 | | 2 | 00/D9E7 : 26 93 | ROL {$92}+1 5421 | 15 AUXMEM.GFX.s 247 | Code | 11 | | 1 | 00/D9E9 : 38 | SEC ; ZP2-ZP1->ZP2 5422 | 15 AUXMEM.GFX.s 248 | Code | 11 | | 2 | 00/D9EA : E5 90 | SBC {$90}+0 5423 | 15 AUXMEM.GFX.s 249 | Code | 11 | | 2 | 00/D9EC : 85 92 | STA {$92}+0 5424 | 15 AUXMEM.GFX.s 250 | Code | 11 | | 2 | 00/D9EE : A5 93 | LDA {$92}+1 5425 | 15 AUXMEM.GFX.s 251 | Code | 11 | | 2 | 00/D9F0 : E5 91 | SBC {$90}+1 5426 | 15 AUXMEM.GFX.s 252 | Code | 11 | | 1 | 00/D9F2 : 4A | LSR A ; ZP2 /= 32 5427 | 15 AUXMEM.GFX.s 253 | Code | 11 | | 2 | 00/D9F3 : 66 92 | ROR {$92}+0 5428 | 15 AUXMEM.GFX.s 254 | Code | 11 | | 1 | 00/D9F5 : 4A | LSR A 5429 | 15 AUXMEM.GFX.s 255 | Code | 11 | | 2 | 00/D9F6 : 66 92 | ROR {$92}+0 5430 | 15 AUXMEM.GFX.s 256 | Code | 11 | | 1 | 00/D9F8 : 4A | LSR A 5431 | 15 AUXMEM.GFX.s 257 | Code | 11 | | 2 | 00/D9F9 : 66 92 | ROR {$92}+0 5432 | 15 AUXMEM.GFX.s 258 | Code | 11 | | 1 | 00/D9FB : 4A | LSR A 5433 | 15 AUXMEM.GFX.s 259 | Code | 11 | | 2 | 00/D9FC : 66 92 | ROR {$92}+0 5434 | 15 AUXMEM.GFX.s 260 | Code | 11 | | 1 | 00/D9FE : 4A | LSR A 5435 | 15 AUXMEM.GFX.s 261 | Code | 11 | | 2 | 00/D9FF : 66 92 | ROR {$92}+0 5436 | 15 AUXMEM.GFX.s 262 | Code | 11 | | 3 | 00/DA01 : 8D C1 02 | STA {{$290}+$2B}+6 ; ZP2 -> X-coord 5437 | 15 AUXMEM.GFX.s 263 | Code | 11 | | 2 | 00/DA04 : A5 92 | LDA {$92}+0 5438 | 15 AUXMEM.GFX.s 264 | Code | 11 | | 3 | 00/DA06 : 8D C0 02 | STA {{$290}+$2B}+5 5439 | 15 AUXMEM.GFX.s 265 | Empty | 11 | | 0 | 00/DA09 | 5440 | 15 AUXMEM.GFX.s 266 | Comment | 11 | | 0 | 00/DA09 | * Y-coordinate in VDUQ+7,+8 1024*3/16=192 5441 | 15 AUXMEM.GFX.s 267 | Code | 11 | | 3 | 00/DA09 : AD C3 02 | _YCOORD LDA {{$290}+$2B}+8 ; MSB of Y-coord 5442 | 15 AUXMEM.GFX.s 268 | Code | 11 | | 2 | 00/DA0C : 29 FC | AND #$FC 5443 | 15 AUXMEM.GFX.s 269 | Code | 11 | | 2 | 00/DA0E : D0 3C | BNE _BIGY ; Y>1023 5444 | 15 AUXMEM.GFX.s 270 | Code | 11 | | 3 | 00/DA10 : AD C3 02 | LDA {{$290}+$2B}+8 ; Y-coord -> ZP1 5445 | 15 AUXMEM.GFX.s 271 | Code | 11 | | 2 | 00/DA13 : 85 91 | STA {$90}+1 5446 | 15 AUXMEM.GFX.s 272 | Code | 11 | | 2 | 00/DA15 : 85 93 | STA {$92}+1 5447 | 15 AUXMEM.GFX.s 273 | Code | 11 | | 3 | 00/DA17 : AD C2 02 | LDA {{$290}+$2B}+7 5448 | 15 AUXMEM.GFX.s 274 | Code | 11 | | 2 | 00/DA1A : 85 90 | STA {$90}+0 5449 | 15 AUXMEM.GFX.s 275 | Comment | 11 | | 0 | 00/DA1C | * 5450 | 15 AUXMEM.GFX.s 276 | Code | 11 | | 2 | 00/DA1C : 85 92 | STA {$92}+0 5451 | 15 AUXMEM.GFX.s 277 | Code | 11 | | 3 | 00/DA1E : AD C3 02 | LDA {{$290}+$2B}+8 5452 | 15 AUXMEM.GFX.s 278 | Code | 11 | | 3 | 00/DA21 : 4C 36 DA | JMP _YCOORD4 5453 | 15 AUXMEM.GFX.s 279 | Comment | 11 | | 0 | 00/DA24 | * 5454 | 15 AUXMEM.GFX.s 280 | Code | 11 | | 1 | 00/DA24 : 0A | ASL A ; ZP2 *= 2 5455 | 15 AUXMEM.GFX.s 281 | Code | 11 | | 2 | 00/DA25 : 26 93 | ROL {$92}+1 5456 | 15 AUXMEM.GFX.s 282 | Code | 11 | | 1 | 00/DA27 : 18 | CLC ; ZP2+ZP1->ZP2 5457 | 15 AUXMEM.GFX.s 283 | Code | 11 | | 2 | 00/DA28 : 65 90 | ADC {$90}+0 5458 | 15 AUXMEM.GFX.s 284 | Code | 11 | | 2 | 00/DA2A : 85 92 | STA {$92}+0 5459 | 15 AUXMEM.GFX.s 285 | Code | 11 | | 2 | 00/DA2C : A5 93 | LDA {$92}+1 5460 | 15 AUXMEM.GFX.s 286 | Code | 11 | | 2 | 00/DA2E : 65 91 | ADC {$90}+1 5461 | 15 AUXMEM.GFX.s 287 | Code | 11 | | 1 | 00/DA30 : 4A | LSR A ; ZP2 /= 16 5462 | 15 AUXMEM.GFX.s 288 | Code | 11 | | 2 | 00/DA31 : 66 92 | ROR {$92}+0 5463 | 15 AUXMEM.GFX.s 289 | Code | 11 | | 1 | 00/DA33 : 4A | LSR A 5464 | 15 AUXMEM.GFX.s 290 | Code | 11 | | 2 | 00/DA34 : 66 92 | ROR {$92}+0 5465 | 15 AUXMEM.GFX.s 291 | Code | 11 | | 1 | 00/DA36 : 4A | _YCOORD4 LSR A 5466 | 15 AUXMEM.GFX.s 292 | Code | 11 | | 2 | 00/DA37 : 66 92 | ROR {$92}+0 5467 | 15 AUXMEM.GFX.s 293 | Code | 11 | | 1 | 00/DA39 : 4A | LSR A 5468 | 15 AUXMEM.GFX.s 294 | Code | 11 | | 2 | 00/DA3A : 66 92 | ROR {$92}+0 5469 | 15 AUXMEM.GFX.s 295 | Code | 11 | | 3 | 00/DA3C : 9C C3 02 | STZ {{$290}+$2B}+8 ; MSB always zero 5470 | 15 AUXMEM.GFX.s 296 | Code | 11 | | 1 | 00/DA3F : 38 | SEC 5471 | 15 AUXMEM.GFX.s 297 | Code | 11 | | 2 | 00/DA40 : A9 BF | LDA #191 ; 191 - ZP2 -> Y-coord 5472 | 15 AUXMEM.GFX.s 298 | Code | 11 | | 2 | 00/DA42 : E5 92 | SBC {$92}+0 5473 | 15 AUXMEM.GFX.s 299 | Code | 11 | | 3 | 00/DA44 : 8D C2 02 | STA {{$290}+$2B}+7 5474 | 15 AUXMEM.GFX.s 300 | Code | 11 | | 2 | 00/DA47 : C9 C0 | CMP #192 5475 | 15 AUXMEM.GFX.s 301 | Code | 11 | | 2 | 00/DA49 : B0 01 | BCS _BIGY 5476 | 15 AUXMEM.GFX.s 302 | Code | 11 | | 1 | 00/DA4B : 60 | RTS 5477 | 15 AUXMEM.GFX.s 303 | Code | 11 | | 3 | 00/DA4C : 9C C2 02 | _BIGY STZ {{$290}+$2B}+7 ; Y too large, row zero 5478 | 15 AUXMEM.GFX.s 304 | Code | 11 | | 3 | 00/DA4F : 9C C3 02 | STZ {{$290}+$2B}+8 5479 | 15 AUXMEM.GFX.s 305 | Code | 11 | | 1 | 00/DA52 : 60 | RTS 5480 | 15 AUXMEM.GFX.s 306 | Code | 11 | | 2 | 00/DA53 : A9 17 | _BIGX LDA #$17 ; X too large, use 279 5481 | 15 AUXMEM.GFX.s 307 | Code | 11 | | 3 | 00/DA55 : 8D C0 02 | STA {{$290}+$2B}+5 5482 | 15 AUXMEM.GFX.s 308 | Code | 11 | | 2 | 00/DA58 : A9 01 | LDA #$01 5483 | 15 AUXMEM.GFX.s 309 | Code | 11 | | 3 | 00/DA5A : 8D C1 02 | STA {{$290}+$2B}+6 5484 | 15 AUXMEM.GFX.s 310 | Code | 11 | | 2 | 00/DA5D : 80 AA | BRA _YCOORD 5485 | 15 AUXMEM.GFX.s 311 | Empty | 11 | | 0 | 00/DA5F | 5486 | 15 AUXMEM.GFX.s 312 | Comment | 11 | | 0 | 00/DA5F | * Add coordinates to XPIXEL, YPIXEL 5487 | 15 AUXMEM.GFX.s 313 | Code | 11 | | 1 | 00/DA5F : 18 | RELCOORD CLC 5488 | 15 AUXMEM.GFX.s 314 | Code | 11 | | 3 | 00/DA60 : AD CC D9 | LDA XPIXEL+0 5489 | 15 AUXMEM.GFX.s 315 | Code | 11 | | 3 | 00/DA63 : 6D C0 02 | ADC {{$290}+$2B}+5 5490 | 15 AUXMEM.GFX.s 316 | Code | 11 | | 3 | 00/DA66 : 8D C0 02 | STA {{$290}+$2B}+5 5491 | 15 AUXMEM.GFX.s 317 | Code | 11 | | 3 | 00/DA69 : AD CD D9 | LDA XPIXEL+1 5492 | 15 AUXMEM.GFX.s 318 | Code | 11 | | 3 | 00/DA6C : 6D C1 02 | ADC {{$290}+$2B}+6 5493 | 15 AUXMEM.GFX.s 319 | Code | 11 | | 3 | 00/DA6F : 8D C1 02 | STA {{$290}+$2B}+6 5494 | 15 AUXMEM.GFX.s 320 | Code | 11 | | 1 | 00/DA72 : 18 | CLC 5495 | 15 AUXMEM.GFX.s 321 | Code | 11 | | 3 | 00/DA73 : AD CE D9 | LDA YPIXEL 5496 | 15 AUXMEM.GFX.s 322 | Code | 11 | | 3 | 00/DA76 : 6D C2 02 | ADC {{$290}+$2B}+7 5497 | 15 AUXMEM.GFX.s 323 | Code | 11 | | 3 | 00/DA79 : 8D C2 02 | STA {{$290}+$2B}+7 5498 | 15 AUXMEM.GFX.s 324 | Code | 11 | | 1 | 00/DA7C : 60 | RTS 5499 | 15 AUXMEM.GFX.s 325 | Empty | 11 | | 0 | 00/DA7D | 5500 | 15 AUXMEM.GFX.s 326 | Empty | 11 | | 0 | 00/DA7D | 5501 | 15 AUXMEM.GFX.s 327 | Empty | 11 | | 0 | 00/DA7D | 5502 | 15 AUXMEM.GFX.s 328 | Empty | 11 | | 0 | 00/DA7D | 5503 | 15 AUXMEM.GFX.s 329 | Empty | 11 | | 0 | 00/DA7D | 5504 | 15 AUXMEM.GFX.s 330 | Empty | 11 | | 0 | 00/DA7D | 5505 | 15 AUXMEM.GFX.s 331 | Empty | 11 | | 0 | 00/DA7D | 5506 | 15 AUXMEM.GFX.s 332 | Empty | 11 | | 0 | 00/DA7D | 5507 | 15 AUXMEM.GFX.s 333 | Empty | 11 | | 0 | 00/DA7D | 5508 | 15 AUXMEM.GFX.s 334 | Empty | 11 | | 0 | 00/DA7D | 5509 | 15 AUXMEM.GFX.s 335 | Empty | 11 | | 0 | 00/DA7D | 5510 | 15 AUXMEM.GFX.s 336 | Empty | 11 | | 0 | 00/DA7D | 5511 | 1 applecorn.s 203 | Directive | 11 | | 0 | 00/DA7D | PUT AUXMEM.HOSTFS 5512 | 16 AUXMEM.HOSTFS.s 1 | Comment | 11 | | 0 | 00/DA7D | * AUXMEM.HOSTFS.S 5513 | 16 AUXMEM.HOSTFS.s 2 | Comment | 11 | | 0 | 00/DA7D | * (c) Bobbi 2021 GPL v3 5514 | 16 AUXMEM.HOSTFS.s 3 | Comment | 11 | | 0 | 00/DA7D | * 5515 | 16 AUXMEM.HOSTFS.s 4 | Comment | 11 | | 0 | 00/DA7D | * AppleMOS Host File System 5516 | 16 AUXMEM.HOSTFS.s 5 | Comment | 11 | | 0 | 00/DA7D | * 29-Aug-2021 Generalised CHKERROR routone, checks for and 5517 | 16 AUXMEM.HOSTFS.s 6 | Comment | 11 | | 0 | 00/DA7D | * translates ProDOS errors into Acorn errors 5518 | 16 AUXMEM.HOSTFS.s 7 | Comment | 11 | | 0 | 00/DA7D | * Set &E0=&FF for testing to report ProDOS errors 5519 | 16 AUXMEM.HOSTFS.s 8 | Comment | 11 | | 0 | 00/DA7D | * 30-Aug-2021 FSC commands moved to here 5520 | 16 AUXMEM.HOSTFS.s 9 | Comment | 11 | | 0 | 00/DA7D | * Command line set by *RUN, and read by OSARGS 5521 | 16 AUXMEM.HOSTFS.s 10 | Comment | 11 | | 0 | 00/DA7D | * 20-Sep-2021 *FREE uses new PRDECIMAL routine 5522 | 16 AUXMEM.HOSTFS.s 11 | Comment | 11 | | 0 | 00/DA7D | * 12-Oct-2021 OSFIND checks return value from calling maincode. 5523 | 16 AUXMEM.HOSTFS.s 12 | Comment | 11 | | 0 | 00/DA7D | * 12-Oct-2021 BGET and BPUT check for returned error. 5524 | 16 AUXMEM.HOSTFS.s 13 | Comment | 11 | | 0 | 00/DA7D | * 13-Oct-2021 FIND, BGET, BPUT optimised passing registers to main. 5525 | 16 AUXMEM.HOSTFS.s 14 | Comment | 11 | | 0 | 00/DA7D | * 13-Oct-2021 ARGS, EOF returns errors, optimised passing registers. 5526 | 16 AUXMEM.HOSTFS.s 15 | Comment | 11 | | 0 | 00/DA7D | * 14-Oct-2021 Tidied FILE handler. 5527 | 16 AUXMEM.HOSTFS.s 16 | Comment | 11 | | 0 | 00/DA7D | * 23-Oct-2021 Uses single dispatch to mainmem FILE handler. 5528 | 16 AUXMEM.HOSTFS.s 17 | Comment | 11 | | 0 | 00/DA7D | * 24-Oct-2021 Tidied FSC handler. Optimised CATALOG, CAT shows access. 5529 | 16 AUXMEM.HOSTFS.s 18 | Comment | 11 | | 0 | 00/DA7D | * *EX can use two columns. *OPT stored. 5530 | 16 AUXMEM.HOSTFS.s 19 | Comment | 11 | | 0 | 00/DA7D | * 29-Oct-2021 Bad *command->Bad command, bad *RUN->File not found. 5531 | 16 AUXMEM.HOSTFS.s 20 | Comment | 11 | | 0 | 00/DA7D | * Optimised RENAME, COPY, CHDIR, DRIVE. FREE allowed. 5532 | 16 AUXMEM.HOSTFS.s 21 | Comment | 11 | | 0 | 00/DA7D | * 01-Oct-2021 DRIVE, CHDIR shares same code, checking moved to maincode. 5533 | 16 AUXMEM.HOSTFS.s 22 | Comment | 11 | | 0 | 00/DA7D | * 02-Oct-2021 ACCESS uses generic access byte parsing. 5534 | 16 AUXMEM.HOSTFS.s 23 | Comment | 11 | | 0 | 00/DA7D | * PRACCESS shares code with ACCESS. 5535 | 16 AUXMEM.HOSTFS.s 24 | Comment | 11 | | 0 | 00/DA7D | * 03-Oct-2021 PARSNAME checks filename length<64. 5536 | 16 AUXMEM.HOSTFS.s 25 | Empty | 11 | | 0 | 00/DA7D | 5537 | 16 AUXMEM.HOSTFS.s 26 | Empty | 11 | | 0 | 00/DA7D | 5538 | 16 AUXMEM.HOSTFS.s 27 | Comment | 11 | | 0 | 00/DA7D | * $B0-$BF Temporary filing system workspace 5539 | 16 AUXMEM.HOSTFS.s 28 | Comment | 11 | | 0 | 00/DA7D | * $C0-$CF Persistant filing system workspace 5540 | 16 AUXMEM.HOSTFS.s 29 | Equivalence | 11 | | 0 | 00/DA7D | FSXREG EQU $C0 5541 | 16 AUXMEM.HOSTFS.s 30 | Equivalence | 11 | | 0 | 00/DA7D | FSYREG EQU $C1 5542 | 16 AUXMEM.HOSTFS.s 31 | Equivalence | 11 | | 0 | 00/DA7D | FSAREG EQU $C2 5543 | 16 AUXMEM.HOSTFS.s 32 | Equivalence | 11 | | 0 | 00/DA7D | FSZPC3 EQU $C3 ; (unused so far) 5544 | 16 AUXMEM.HOSTFS.s 33 | Equivalence | 11 | | 0 | 00/DA7D | FSCTRL EQU {$C0} ; =>control block 5545 | 16 AUXMEM.HOSTFS.s 34 | Equivalence | 11 | | 0 | 00/DA7D | FSPTR1 EQU $C4 ; =>directory entry 5546 | 16 AUXMEM.HOSTFS.s 35 | Equivalence | 11 | | 0 | 00/DA7D | FSPTR2 EQU $C6 ; (unused so far) 5547 | 16 AUXMEM.HOSTFS.s 36 | Equivalence | 11 | | 0 | 00/DA7D | FSNUM EQU $C8 ; 32-bit number, cat file count 5548 | 16 AUXMEM.HOSTFS.s 37 | Equivalence | 11 | | 0 | 00/DA7D | FSACCBYTE EQU {$C8}+1 ; access bits 5549 | 16 AUXMEM.HOSTFS.s 38 | Equivalence | 11 | | 0 | 00/DA7D | FSZPCC EQU $CC ; (unused so far) 5550 | 16 AUXMEM.HOSTFS.s 39 | Equivalence | 11 | | 0 | 00/DA7D | FSCMDLINE EQU $CE ; command line address 5551 | 16 AUXMEM.HOSTFS.s 40 | Empty | 11 | | 0 | 00/DA7D | 5552 | 16 AUXMEM.HOSTFS.s 41 | Empty | 11 | | 0 | 00/DA7D | 5553 | 16 AUXMEM.HOSTFS.s 42 | Comment | 11 | | 0 | 00/DA7D | * OSFIND - open/close a file for byte access 5554 | 16 AUXMEM.HOSTFS.s 43 | Code | 11 | | 1 | 00/DA7D : DA | FINDHND PHX 5555 | 16 AUXMEM.HOSTFS.s 44 | Code | 11 | | 1 | 00/DA7E : 5A | PHY 5556 | 16 AUXMEM.HOSTFS.s 45 | Code | 11 | | 1 | 00/DA7F : 48 | PHA 5557 | 16 AUXMEM.HOSTFS.s 46 | Code | 11 | | 2 | 00/DA80 : C9 00 | CMP #$00 ; A=$00 = close 5558 | 16 AUXMEM.HOSTFS.s 47 | Code | 11 | | 2 | 00/DA82 : F0 1C | BEQ ozunid_175 5559 | 16 AUXMEM.HOSTFS.s 48 | Code | 11 | | 1 | 00/DA84 : 48 | PHA 5560 | 16 AUXMEM.HOSTFS.s 49 | Code | 11 | | 3 | 00/DA85 : 20 06 E1 | JSR PARSNAME ; Copy filename->MOSFILE 5561 | 16 AUXMEM.HOSTFS.s 50 | Code | 11 | | 1 | 00/DA88 : 68 | PLA ; Recover options 5562 | 16 AUXMEM.HOSTFS.s 51 | Macro | 11 | | 0 | 00/DA89 | >>> XF2MAIN,OFILE 5563 | 16 AUXMEM.HOSTFS.s 51 | Empty | 11 | | 0 | 00/DA89 | 5564 | 16 AUXMEM.HOSTFS.s 51 | Empty | 11 | | 0 | 00/DA89 | 5565 | 16 AUXMEM.HOSTFS.s 51 | Empty | 11 | | 0 | 00/DA89 | 5566 | 16 AUXMEM.HOSTFS.s 51 | Empty | 11 | | 0 | 00/DA89 | 5567 | 16 AUXMEM.HOSTFS.s 51 | Code | 11 | | 2 | 00/DA89 : A2 B2 | LDX #OFILE 5570 | 16 AUXMEM.HOSTFS.s 51 | Code | 11 | | 3 | 00/DA90 : 8E EE 03 | STX {$3EE} 5571 | 16 AUXMEM.HOSTFS.s 51 | Code | 11 | | 1 | 00/DA93 : 78 | SEI ; Disable IRQ before XFER 5572 | 16 AUXMEM.HOSTFS.s 51 | Code | 11 | | 1 | 00/DA94 : BA | TSX 5573 | 16 AUXMEM.HOSTFS.s 51 | Code | 11 | | 3 | 00/DA95 : 8E 01 01 | STX $0101 ; Save alt SP 5574 | 16 AUXMEM.HOSTFS.s 51 | Code | 11 | | 3 | 00/DA98 : AE 00 01 | LDX $0100 ; Load main SP into X 5575 | 16 AUXMEM.HOSTFS.s 51 | Code | 11 | | 1 | 00/DA9B : 18 | CLC ; Use main mem 5576 | 16 AUXMEM.HOSTFS.s 51 | Code | 11 | | 1 | 00/DA9C : B8 | CLV ; Use main ZP and LC 5577 | 16 AUXMEM.HOSTFS.s 51 | Code | 11 | | 3 | 00/DA9D : 4C 14 C3 | JMP {$C314} 5578 | 16 AUXMEM.HOSTFS.s 52 | Macro | 11 | | 0 | 00/DAA0 | ozunid_175 >>> XF2MAIN,CFILE ; Pass A,Y to main code 5579 | 16 AUXMEM.HOSTFS.s 52 | Empty | 11 | | 0 | 00/DAA0 | 5580 | 16 AUXMEM.HOSTFS.s 52 | Empty | 11 | | 0 | 00/DAA0 | 5581 | 16 AUXMEM.HOSTFS.s 52 | Empty | 11 | | 0 | 00/DAA0 | 5582 | 16 AUXMEM.HOSTFS.s 52 | Empty | 11 | | 0 | 00/DAA0 | 5583 | 16 AUXMEM.HOSTFS.s 52 | Code | 11 | | 2 | 00/DAA0 : A2 41 | LDX #CFILE 5586 | 16 AUXMEM.HOSTFS.s 52 | Code | 11 | | 3 | 00/DAA7 : 8E EE 03 | STX {$3EE} 5587 | 16 AUXMEM.HOSTFS.s 52 | Code | 11 | | 1 | 00/DAAA : 78 | SEI ; Disable IRQ before XFER 5588 | 16 AUXMEM.HOSTFS.s 52 | Code | 11 | | 1 | 00/DAAB : BA | TSX 5589 | 16 AUXMEM.HOSTFS.s 52 | Code | 11 | | 3 | 00/DAAC : 8E 01 01 | STX $0101 ; Save alt SP 5590 | 16 AUXMEM.HOSTFS.s 52 | Code | 11 | | 3 | 00/DAAF : AE 00 01 | LDX $0100 ; Load main SP into X 5591 | 16 AUXMEM.HOSTFS.s 52 | Code | 11 | | 1 | 00/DAB2 : 18 | CLC ; Use main mem 5592 | 16 AUXMEM.HOSTFS.s 52 | Code | 11 | | 1 | 00/DAB3 : B8 | CLV ; Use main ZP and LC 5593 | 16 AUXMEM.HOSTFS.s 52 | Code | 11 | | 3 | 00/DAB4 : 4C 14 C3 | JMP {$C314} 5594 | 16 AUXMEM.HOSTFS.s 53 | Macro | 11 | | 0 | 00/DAB7 | OSFINDRET >>> ENTAUX 5595 | 16 AUXMEM.HOSTFS.s 53 | Code | 11 | | 3 | 00/DAB7 : AE 01 01 | LDX $0101 ; Recover alt SP 5596 | 16 AUXMEM.HOSTFS.s 53 | Code | 11 | | 1 | 00/DABA : 9A | TXS 5597 | 16 AUXMEM.HOSTFS.s 53 | Code | 11 | | 1 | 00/DABB : 58 | CLI ; Re-enable IRQ after XFER 5598 | 16 AUXMEM.HOSTFS.s 53 | Empty | 11 | | 0 | 00/DABC | 5599 | 16 AUXMEM.HOSTFS.s 53 | Empty | 11 | | 0 | 00/DABC | 5600 | 16 AUXMEM.HOSTFS.s 53 | Empty | 11 | | 0 | 00/DABC | 5601 | 16 AUXMEM.HOSTFS.s 53 | Empty | 11 | | 0 | 00/DABC | 5602 | 16 AUXMEM.HOSTFS.s 54 | Code | 11 | | 3 | 00/DABC : 20 64 E1 | JSR CHKERROR ; Check if error returned 5603 | 16 AUXMEM.HOSTFS.s 55 | Code | 11 | | 1 | 00/DABF : 7A | PLY ; Value of A on entry 5604 | 16 AUXMEM.HOSTFS.s 56 | Code | 11 | | 2 | 00/DAC0 : D0 01 | BNE ozunid_176 ; It wasn't close 5605 | 16 AUXMEM.HOSTFS.s 57 | Code | 11 | | 1 | 00/DAC2 : 98 | TYA ; Preserve A for close 5606 | 16 AUXMEM.HOSTFS.s 58 | Code | 11 | | 1 | 00/DAC3 : 7A | ozunid_176 PLY 5607 | 16 AUXMEM.HOSTFS.s 59 | Code | 11 | | 1 | 00/DAC4 : FA | PLX 5608 | 16 AUXMEM.HOSTFS.s 60 | Code | 11 | | 1 | 00/DAC5 : 60 | RTS 5609 | 16 AUXMEM.HOSTFS.s 61 | Empty | 11 | | 0 | 00/DAC6 | 5610 | 16 AUXMEM.HOSTFS.s 62 | Comment | 11 | | 0 | 00/DAC6 | * OSGBPB - Get/Put a block of bytes to/from an open file 5611 | 16 AUXMEM.HOSTFS.s 63 | Code | 11 | | 2 | 00/DAC6 : A9 CD | GBPBHND LDA #OSGBPBM 5613 | 16 AUXMEM.HOSTFS.s 65 | Code | 11 | | 3 | 00/DACA : 4C EB EB | JMP PRSTR 5614 | 16 AUXMEM.HOSTFS.s 66 | Data | 11 | | 7 | 00/DACD : 4F 53 47 42 | OSGBPBM ASC 'OSGBPB.' | | | | | | 50 42 2E | 5615 | 16 AUXMEM.HOSTFS.s 67 | Data | 11 | | 1 | 00/DAD4 : 00 | DB $00 5616 | 16 AUXMEM.HOSTFS.s 68 | Empty | 11 | | 0 | 00/DAD5 | 5617 | 16 AUXMEM.HOSTFS.s 69 | Comment | 11 | | 0 | 00/DAD5 | * OSBPUT - write one byte to an open file 5618 | 16 AUXMEM.HOSTFS.s 70 | Code | 11 | | 1 | 00/DAD5 : DA | BPUTHND PHX 5619 | 16 AUXMEM.HOSTFS.s 71 | Code | 11 | | 1 | 00/DAD6 : 5A | PHY 5620 | 16 AUXMEM.HOSTFS.s 72 | Code | 11 | | 1 | 00/DAD7 : 48 | PHA ; Stash char to write 5621 | 16 AUXMEM.HOSTFS.s 73 | Macro | 11 | | 0 | 00/DAD8 | >>> XF2MAIN,FILEPUT ; Pass A,Y to main code 5622 | 16 AUXMEM.HOSTFS.s 73 | Empty | 11 | | 0 | 00/DAD8 | 5623 | 16 AUXMEM.HOSTFS.s 73 | Empty | 11 | | 0 | 00/DAD8 | 5624 | 16 AUXMEM.HOSTFS.s 73 | Empty | 11 | | 0 | 00/DAD8 | 5625 | 16 AUXMEM.HOSTFS.s 73 | Empty | 11 | | 0 | 00/DAD8 | 5626 | 16 AUXMEM.HOSTFS.s 73 | Code | 11 | | 2 | 00/DAD8 : A2 A7 | LDX #FILEPUT 5629 | 16 AUXMEM.HOSTFS.s 73 | Code | 11 | | 3 | 00/DADF : 8E EE 03 | STX {$3EE} 5630 | 16 AUXMEM.HOSTFS.s 73 | Code | 11 | | 1 | 00/DAE2 : 78 | SEI ; Disable IRQ before XFER 5631 | 16 AUXMEM.HOSTFS.s 73 | Code | 11 | | 1 | 00/DAE3 : BA | TSX 5632 | 16 AUXMEM.HOSTFS.s 73 | Code | 11 | | 3 | 00/DAE4 : 8E 01 01 | STX $0101 ; Save alt SP 5633 | 16 AUXMEM.HOSTFS.s 73 | Code | 11 | | 3 | 00/DAE7 : AE 00 01 | LDX $0100 ; Load main SP into X 5634 | 16 AUXMEM.HOSTFS.s 73 | Code | 11 | | 1 | 00/DAEA : 18 | CLC ; Use main mem 5635 | 16 AUXMEM.HOSTFS.s 73 | Code | 11 | | 1 | 00/DAEB : B8 | CLV ; Use main ZP and LC 5636 | 16 AUXMEM.HOSTFS.s 73 | Code | 11 | | 3 | 00/DAEC : 4C 14 C3 | JMP {$C314} 5637 | 16 AUXMEM.HOSTFS.s 74 | Macro | 11 | | 0 | 00/DAEF | OSBPUTRET >>> ENTAUX 5638 | 16 AUXMEM.HOSTFS.s 74 | Code | 11 | | 3 | 00/DAEF : AE 01 01 | LDX $0101 ; Recover alt SP 5639 | 16 AUXMEM.HOSTFS.s 74 | Code | 11 | | 1 | 00/DAF2 : 9A | TXS 5640 | 16 AUXMEM.HOSTFS.s 74 | Code | 11 | | 1 | 00/DAF3 : 58 | CLI ; Re-enable IRQ after XFER 5641 | 16 AUXMEM.HOSTFS.s 74 | Empty | 11 | | 0 | 00/DAF4 | 5642 | 16 AUXMEM.HOSTFS.s 74 | Empty | 11 | | 0 | 00/DAF4 | 5643 | 16 AUXMEM.HOSTFS.s 74 | Empty | 11 | | 0 | 00/DAF4 | 5644 | 16 AUXMEM.HOSTFS.s 74 | Empty | 11 | | 0 | 00/DAF4 | 5645 | 16 AUXMEM.HOSTFS.s 75 | Code | 11 | | 3 | 00/DAF4 : 20 64 E1 | JSR CHKERROR 5646 | 16 AUXMEM.HOSTFS.s 76 | Code | 11 | | 1 | 00/DAF7 : 18 | CLC ; Means no error 5647 | 16 AUXMEM.HOSTFS.s 77 | Code | 11 | | 1 | 00/DAF8 : 68 | PLA 5648 | 16 AUXMEM.HOSTFS.s 78 | Code | 11 | | 1 | 00/DAF9 : 7A | PLY 5649 | 16 AUXMEM.HOSTFS.s 79 | Code | 11 | | 1 | 00/DAFA : FA | PLX 5650 | 16 AUXMEM.HOSTFS.s 80 | Code | 11 | | 1 | 00/DAFB : 60 | RTS 5651 | 16 AUXMEM.HOSTFS.s 81 | Empty | 11 | | 0 | 00/DAFC | 5652 | 16 AUXMEM.HOSTFS.s 82 | Comment | 11 | | 0 | 00/DAFC | * OSBGET - read one byte from an open file 5653 | 16 AUXMEM.HOSTFS.s 83 | Code | 11 | | 1 | 00/DAFC : DA | BGETHND PHX 5654 | 16 AUXMEM.HOSTFS.s 84 | Code | 11 | | 1 | 00/DAFD : 5A | PHY 5655 | 16 AUXMEM.HOSTFS.s 85 | Macro | 11 | | 0 | 00/DAFE | >>> XF2MAIN,FILEGET ; Pass A,Y to main code 5656 | 16 AUXMEM.HOSTFS.s 85 | Empty | 11 | | 0 | 00/DAFE | 5657 | 16 AUXMEM.HOSTFS.s 85 | Empty | 11 | | 0 | 00/DAFE | 5658 | 16 AUXMEM.HOSTFS.s 85 | Empty | 11 | | 0 | 00/DAFE | 5659 | 16 AUXMEM.HOSTFS.s 85 | Empty | 11 | | 0 | 00/DAFE | 5660 | 16 AUXMEM.HOSTFS.s 85 | Code | 11 | | 2 | 00/DAFE : A2 76 | LDX #FILEGET 5663 | 16 AUXMEM.HOSTFS.s 85 | Code | 11 | | 3 | 00/DB05 : 8E EE 03 | STX {$3EE} 5664 | 16 AUXMEM.HOSTFS.s 85 | Code | 11 | | 1 | 00/DB08 : 78 | SEI ; Disable IRQ before XFER 5665 | 16 AUXMEM.HOSTFS.s 85 | Code | 11 | | 1 | 00/DB09 : BA | TSX 5666 | 16 AUXMEM.HOSTFS.s 85 | Code | 11 | | 3 | 00/DB0A : 8E 01 01 | STX $0101 ; Save alt SP 5667 | 16 AUXMEM.HOSTFS.s 85 | Code | 11 | | 3 | 00/DB0D : AE 00 01 | LDX $0100 ; Load main SP into X 5668 | 16 AUXMEM.HOSTFS.s 85 | Code | 11 | | 1 | 00/DB10 : 18 | CLC ; Use main mem 5669 | 16 AUXMEM.HOSTFS.s 85 | Code | 11 | | 1 | 00/DB11 : B8 | CLV ; Use main ZP and LC 5670 | 16 AUXMEM.HOSTFS.s 85 | Code | 11 | | 3 | 00/DB12 : 4C 14 C3 | JMP {$C314} 5671 | 16 AUXMEM.HOSTFS.s 86 | Macro | 11 | | 0 | 00/DB15 | OSBGETRET >>> ENTAUX 5672 | 16 AUXMEM.HOSTFS.s 86 | Code | 11 | | 3 | 00/DB15 : AE 01 01 | LDX $0101 ; Recover alt SP 5673 | 16 AUXMEM.HOSTFS.s 86 | Code | 11 | | 1 | 00/DB18 : 9A | TXS 5674 | 16 AUXMEM.HOSTFS.s 86 | Code | 11 | | 1 | 00/DB19 : 58 | CLI ; Re-enable IRQ after XFER 5675 | 16 AUXMEM.HOSTFS.s 86 | Empty | 11 | | 0 | 00/DB1A | 5676 | 16 AUXMEM.HOSTFS.s 86 | Empty | 11 | | 0 | 00/DB1A | 5677 | 16 AUXMEM.HOSTFS.s 86 | Empty | 11 | | 0 | 00/DB1A | 5678 | 16 AUXMEM.HOSTFS.s 86 | Empty | 11 | | 0 | 00/DB1A | 5679 | 16 AUXMEM.HOSTFS.s 87 | Code | 11 | | 2 | 00/DB1A : C0 01 | CPY #$01 5680 | 16 AUXMEM.HOSTFS.s 88 | Code | 11 | | 2 | 00/DB1C : 90 0A | BCC ozunid_177 ; If no error, return CC 5681 | 16 AUXMEM.HOSTFS.s 89 | Code | 11 | | 2 | 00/DB1E : A9 FE | LDA #$FE 5682 | 16 AUXMEM.HOSTFS.s 90 | Code | 11 | | 2 | 00/DB20 : C0 4C | CPY #$4C 5683 | 16 AUXMEM.HOSTFS.s 91 | Code | 11 | | 2 | 00/DB22 : F0 04 | BEQ ozunid_177 ; If at EOF, return CS 5684 | 16 AUXMEM.HOSTFS.s 92 | Code | 11 | | 1 | 00/DB24 : 98 | TYA 5685 | 16 AUXMEM.HOSTFS.s 93 | Code | 11 | | 3 | 00/DB25 : 20 64 E1 | JSR CHKERROR 5686 | 16 AUXMEM.HOSTFS.s 94 | Code | 11 | | 1 | 00/DB28 : 7A | ozunid_177 PLY 5687 | 16 AUXMEM.HOSTFS.s 95 | Code | 11 | | 1 | 00/DB29 : FA | PLX 5688 | 16 AUXMEM.HOSTFS.s 96 | Code | 11 | | 1 | 00/DB2A : 60 | RTS 5689 | 16 AUXMEM.HOSTFS.s 97 | Empty | 11 | | 0 | 00/DB2B | 5690 | 16 AUXMEM.HOSTFS.s 98 | Comment | 11 | | 0 | 00/DB2B | * OSARGS - adjust file arguments 5691 | 16 AUXMEM.HOSTFS.s 99 | Comment | 11 | | 0 | 00/DB2B | * On entry, A=action 5692 | 16 AUXMEM.HOSTFS.s 100 | Comment | 11 | | 0 | 00/DB2B | * X=>4 byte ZP control block 5693 | 16 AUXMEM.HOSTFS.s 101 | Comment | 11 | | 0 | 00/DB2B | * Y=file handle 5694 | 16 AUXMEM.HOSTFS.s 102 | Comment | 11 | | 0 | 00/DB2B | * Y<>0 A=FF Flush channel Y 5695 | 16 AUXMEM.HOSTFS.s 103 | Comment | 11 | | 0 | 00/DB2B | * A=00 Read PTR#Y 5696 | 16 AUXMEM.HOSTFS.s 104 | Comment | 11 | | 0 | 00/DB2B | * A=01 Write PTR#Y 5697 | 16 AUXMEM.HOSTFS.s 105 | Comment | 11 | | 0 | 00/DB2B | * A=02 Read EXT#Y 5698 | 16 AUXMEM.HOSTFS.s 106 | Comment | 11 | | 0 | 00/DB2B | * A=03 Write EXT#Y 5699 | 16 AUXMEM.HOSTFS.s 107 | Comment | 11 | | 0 | 00/DB2B | * (A=04 Read alloc#Y) 5700 | 16 AUXMEM.HOSTFS.s 108 | Comment | 11 | | 0 | 00/DB2B | * (A=05 Read EOF#Y) 5701 | 16 AUXMEM.HOSTFS.s 109 | Comment | 11 | | 0 | 00/DB2B | * (A=06 Write alloc#Y) 5702 | 16 AUXMEM.HOSTFS.s 110 | Comment | 11 | | 0 | 00/DB2B | * Y=0 A=FF Flush all channels 5703 | 16 AUXMEM.HOSTFS.s 111 | Comment | 11 | | 0 | 00/DB2B | * A=00 Return filing system number in A 5704 | 16 AUXMEM.HOSTFS.s 112 | Comment | 11 | | 0 | 00/DB2B | * A=01 Read command line address 5705 | 16 AUXMEM.HOSTFS.s 113 | Comment | 11 | | 0 | 00/DB2B | * (A=02 Read NFS bugfix flag) 5706 | 16 AUXMEM.HOSTFS.s 114 | Comment | 11 | | 0 | 00/DB2B | * (A=03 Read LIBFS filing system) 5707 | 16 AUXMEM.HOSTFS.s 115 | Comment | 11 | | 0 | 00/DB2B | * (A=04 Read used disk space) 5708 | 16 AUXMEM.HOSTFS.s 116 | Comment | 11 | | 0 | 00/DB2B | * (A=05 Read free disk space) 5709 | 16 AUXMEM.HOSTFS.s 117 | Comment | 11 | | 0 | 00/DB2B | * On exit, A=0 - implemented (except ARGS 0,0) 5710 | 16 AUXMEM.HOSTFS.s 118 | Comment | 11 | | 0 | 00/DB2B | * A - preserved=unimplemented 5711 | 16 AUXMEM.HOSTFS.s 119 | Comment | 11 | | 0 | 00/DB2B | * X,Y - preserved 5712 | 16 AUXMEM.HOSTFS.s 120 | Comment | 11 | | 0 | 00/DB2B | * control block updated for 'read' calls 5713 | 16 AUXMEM.HOSTFS.s 121 | Comment | 11 | | 0 | 00/DB2B | * control block preserved otherwise 5714 | 16 AUXMEM.HOSTFS.s 122 | Comment | 11 | | 0 | 00/DB2B | * 5715 | 16 AUXMEM.HOSTFS.s 123 | Code | 11 | | 1 | 00/DB2B : DA | ARGSHND PHX 5716 | 16 AUXMEM.HOSTFS.s 124 | Code | 11 | | 1 | 00/DB2C : 5A | PHY 5717 | 16 AUXMEM.HOSTFS.s 125 | Code | 11 | | 1 | 00/DB2D : 48 | PHA 5718 | 16 AUXMEM.HOSTFS.s 126 | Code | 11 | | 2 | 00/DB2E : C0 00 | CPY #$00 5719 | 16 AUXMEM.HOSTFS.s 127 | Code | 11 | | 2 | 00/DB30 : D0 29 | BNE _HASFILE 5720 | 16 AUXMEM.HOSTFS.s 128 | Code | 11 | | 2 | 00/DB32 : C9 00 | CMP #$00 ; Y=0,A=0 => current file sys 5721 | 16 AUXMEM.HOSTFS.s 129 | Code | 11 | | 2 | 00/DB34 : D0 06 | BNE ozunid_178 5722 | 16 AUXMEM.HOSTFS.s 130 | Code | 11 | | 1 | 00/DB36 : 68 | PLA 5723 | 16 AUXMEM.HOSTFS.s 131 | Code | 11 | | 2 | 00/DB37 : A9 69 | LDA #105 ; 105=AppleFS filing system 5724 | 16 AUXMEM.HOSTFS.s 132 | Code | 11 | | 1 | 00/DB39 : 7A | PLY 5725 | 16 AUXMEM.HOSTFS.s 133 | Code | 11 | | 1 | 00/DB3A : FA | PLX 5726 | 16 AUXMEM.HOSTFS.s 134 | Code | 11 | | 1 | 00/DB3B : 60 | RTS 5727 | 16 AUXMEM.HOSTFS.s 135 | Empty | 11 | | 0 | 00/DB3C | 5728 | 16 AUXMEM.HOSTFS.s 136 | Code | 11 | | 2 | 00/DB3C : C9 01 | ozunid_178 CMP #$01 ; Y=0,A=1 => addr of CLI 5729 | 16 AUXMEM.HOSTFS.s 137 | Code | 11 | | 2 | 00/DB3E : D0 11 | BNE ozunid_179 5730 | 16 AUXMEM.HOSTFS.s 138 | Code | 11 | | 2 | 00/DB40 : A5 CE | LDA {$CE}+0 5731 | 16 AUXMEM.HOSTFS.s 139 | Code | 11 | | 2 | 00/DB42 : 95 00 | STA $00,X 5732 | 16 AUXMEM.HOSTFS.s 140 | Code | 11 | | 2 | 00/DB44 : A5 CF | LDA {$CE}+1 5733 | 16 AUXMEM.HOSTFS.s 141 | Code | 11 | | 2 | 00/DB46 : 95 01 | STA $01,X 5734 | 16 AUXMEM.HOSTFS.s 142 | Code | 11 | | 2 | 00/DB48 : A9 FF | LDA #$FF 5735 | 16 AUXMEM.HOSTFS.s 143 | Code | 11 | | 2 | 00/DB4A : 95 02 | STA $02,X 5736 | 16 AUXMEM.HOSTFS.s 144 | Code | 11 | | 2 | 00/DB4C : 95 03 | STA $03,X 5737 | 16 AUXMEM.HOSTFS.s 145 | Code | 11 | | 3 | 00/DB4E : 4C EF DB | JMP OSARGSDONE ; Implemented 5738 | 16 AUXMEM.HOSTFS.s 146 | Empty | 11 | | 0 | 00/DB51 | 5739 | 16 AUXMEM.HOSTFS.s 147 | Code | 11 | | 2 | 00/DB51 : C9 FF | ozunid_179 CMP #$FF ; Y=0,A=FF => flush all files 5740 | 16 AUXMEM.HOSTFS.s 148 | Code | 11 | | 2 | 00/DB53 : D0 03 | BNE _IEXIT 5741 | 16 AUXMEM.HOSTFS.s 149 | Code | 11 | | 3 | 00/DB55 : 4C CC DB | JMP _FLUSH 5742 | 16 AUXMEM.HOSTFS.s 150 | Code | 11 | | 3 | 00/DB58 : 4C E3 DB | _IEXIT JMP ozunid_183 ; Exit preserved 5743 | 16 AUXMEM.HOSTFS.s 151 | Empty | 11 | | 0 | 00/DB5B | 5744 | 16 AUXMEM.HOSTFS.s 152 | Code | 11 | | 2 | 00/DB5B : C9 00 | _HASFILE CMP #$00 ; Y!=0,A=0 => read seq ptr 5745 | 16 AUXMEM.HOSTFS.s 153 | Code | 11 | | 2 | 00/DB5D : D0 18 | BNE ozunid_180 5746 | 16 AUXMEM.HOSTFS.s 154 | Code | 11 | | 1 | 00/DB5F : 8A | TXA 5747 | 16 AUXMEM.HOSTFS.s 155 | Macro | 11 | | 0 | 00/DB60 | >>> XF2MAIN,TELL ; A=ZP, Y=channel 5748 | 16 AUXMEM.HOSTFS.s 155 | Empty | 11 | | 0 | 00/DB60 | 5749 | 16 AUXMEM.HOSTFS.s 155 | Empty | 11 | | 0 | 00/DB60 | 5750 | 16 AUXMEM.HOSTFS.s 155 | Empty | 11 | | 0 | 00/DB60 | 5751 | 16 AUXMEM.HOSTFS.s 155 | Empty | 11 | | 0 | 00/DB60 | 5752 | 16 AUXMEM.HOSTFS.s 155 | Code | 11 | | 2 | 00/DB60 : A2 6C | LDX #TELL 5755 | 16 AUXMEM.HOSTFS.s 155 | Code | 11 | | 3 | 00/DB67 : 8E EE 03 | STX {$3EE} 5756 | 16 AUXMEM.HOSTFS.s 155 | Code | 11 | | 1 | 00/DB6A : 78 | SEI ; Disable IRQ before XFER 5757 | 16 AUXMEM.HOSTFS.s 155 | Code | 11 | | 1 | 00/DB6B : BA | TSX 5758 | 16 AUXMEM.HOSTFS.s 155 | Code | 11 | | 3 | 00/DB6C : 8E 01 01 | STX $0101 ; Save alt SP 5759 | 16 AUXMEM.HOSTFS.s 155 | Code | 11 | | 3 | 00/DB6F : AE 00 01 | LDX $0100 ; Load main SP into X 5760 | 16 AUXMEM.HOSTFS.s 155 | Code | 11 | | 1 | 00/DB72 : 18 | CLC ; Use main mem 5761 | 16 AUXMEM.HOSTFS.s 155 | Code | 11 | | 1 | 00/DB73 : B8 | CLV ; Use main ZP and LC 5762 | 16 AUXMEM.HOSTFS.s 155 | Code | 11 | | 3 | 00/DB74 : 4C 14 C3 | JMP {$C314} 5763 | 16 AUXMEM.HOSTFS.s 156 | Empty | 11 | | 0 | 00/DB77 | 5764 | 16 AUXMEM.HOSTFS.s 157 | Code | 11 | | 2 | 00/DB77 : C9 01 | ozunid_180 CMP #$01 ; Y!=0,A=1 => write seq ptr 5765 | 16 AUXMEM.HOSTFS.s 158 | Code | 11 | | 2 | 00/DB79 : D0 31 | BNE ozunid_181 5766 | 16 AUXMEM.HOSTFS.s 159 | Macro | 11 | | 0 | 00/DB7B | >>> WRTMAIN 5767 | 16 AUXMEM.HOSTFS.s 159 | Code | 11 | | 1 | 00/DB7B : 78 | SEI ; Keeps IRQ handler easy 5768 | 16 AUXMEM.HOSTFS.s 159 | Code | 11 | | 3 | 00/DB7C : 8D 04 C0 | STA $C004 ; Write to main memory 5769 | 16 AUXMEM.HOSTFS.s 160 | Code | 11 | | 3 | 00/DB7F : 8C B6 56 | STY GMARKPL+1 ; Write to MLI control block 5770 | 16 AUXMEM.HOSTFS.s 161 | Code | 11 | | 2 | 00/DB82 : B5 00 | LDA $00,X 5771 | 16 AUXMEM.HOSTFS.s 162 | Code | 11 | | 3 | 00/DB84 : 8D B7 56 | STA GMARKPL+2 5772 | 16 AUXMEM.HOSTFS.s 163 | Code | 11 | | 2 | 00/DB87 : B5 01 | LDA $01,X 5773 | 16 AUXMEM.HOSTFS.s 164 | Code | 11 | | 3 | 00/DB89 : 8D B8 56 | STA GMARKPL+3 5774 | 16 AUXMEM.HOSTFS.s 165 | Code | 11 | | 2 | 00/DB8C : B5 02 | LDA $02,X 5775 | 16 AUXMEM.HOSTFS.s 166 | Code | 11 | | 3 | 00/DB8E : 8D B9 56 | STA GMARKPL+4 5776 | 16 AUXMEM.HOSTFS.s 167 | Macro | 11 | | 0 | 00/DB91 | >>> WRTAUX 5777 | 16 AUXMEM.HOSTFS.s 167 | Code | 11 | | 3 | 00/DB91 : 8D 05 C0 | STA $C005 ; Write to aux memory 5778 | 16 AUXMEM.HOSTFS.s 167 | Code | 11 | | 1 | 00/DB94 : 58 | CLI ; Normal service resumed 5779 | 16 AUXMEM.HOSTFS.s 168 | Macro | 11 | | 0 | 00/DB95 | >>> XF2MAIN,SEEK ; A=???, Y=channel 5780 | 16 AUXMEM.HOSTFS.s 168 | Empty | 11 | | 0 | 00/DB95 | 5781 | 16 AUXMEM.HOSTFS.s 168 | Empty | 11 | | 0 | 00/DB95 | 5782 | 16 AUXMEM.HOSTFS.s 168 | Empty | 11 | | 0 | 00/DB95 | 5783 | 16 AUXMEM.HOSTFS.s 168 | Empty | 11 | | 0 | 00/DB95 | 5784 | 16 AUXMEM.HOSTFS.s 168 | Code | 11 | | 2 | 00/DB95 : A2 57 | LDX #SEEK 5787 | 16 AUXMEM.HOSTFS.s 168 | Code | 11 | | 3 | 00/DB9C : 8E EE 03 | STX {$3EE} 5788 | 16 AUXMEM.HOSTFS.s 168 | Code | 11 | | 1 | 00/DB9F : 78 | SEI ; Disable IRQ before XFER 5789 | 16 AUXMEM.HOSTFS.s 168 | Code | 11 | | 1 | 00/DBA0 : BA | TSX 5790 | 16 AUXMEM.HOSTFS.s 168 | Code | 11 | | 3 | 00/DBA1 : 8E 01 01 | STX $0101 ; Save alt SP 5791 | 16 AUXMEM.HOSTFS.s 168 | Code | 11 | | 3 | 00/DBA4 : AE 00 01 | LDX $0100 ; Load main SP into X 5792 | 16 AUXMEM.HOSTFS.s 168 | Code | 11 | | 1 | 00/DBA7 : 18 | CLC ; Use main mem 5793 | 16 AUXMEM.HOSTFS.s 168 | Code | 11 | | 1 | 00/DBA8 : B8 | CLV ; Use main ZP and LC 5794 | 16 AUXMEM.HOSTFS.s 168 | Code | 11 | | 3 | 00/DBA9 : 4C 14 C3 | JMP {$C314} 5795 | 16 AUXMEM.HOSTFS.s 169 | Empty | 11 | | 0 | 00/DBAC | 5796 | 16 AUXMEM.HOSTFS.s 170 | Code | 11 | | 2 | 00/DBAC : C9 02 | ozunid_181 CMP #$02 ; Y!=0,A=2 => read file len 5797 | 16 AUXMEM.HOSTFS.s 171 | Code | 11 | | 2 | 00/DBAE : D0 18 | BNE ozunid_182 5798 | 16 AUXMEM.HOSTFS.s 172 | Code | 11 | | 1 | 00/DBB0 : 8A | TXA 5799 | 16 AUXMEM.HOSTFS.s 173 | Macro | 11 | | 0 | 00/DBB1 | >>> XF2MAIN,SIZE ; A=ZP, Y=channel 5800 | 16 AUXMEM.HOSTFS.s 173 | Empty | 11 | | 0 | 00/DBB1 | 5801 | 16 AUXMEM.HOSTFS.s 173 | Empty | 11 | | 0 | 00/DBB1 | 5802 | 16 AUXMEM.HOSTFS.s 173 | Empty | 11 | | 0 | 00/DBB1 | 5803 | 16 AUXMEM.HOSTFS.s 173 | Empty | 11 | | 0 | 00/DBB1 | 5804 | 16 AUXMEM.HOSTFS.s 173 | Code | 11 | | 2 | 00/DBB1 : A2 68 | LDX #SIZE 5807 | 16 AUXMEM.HOSTFS.s 173 | Code | 11 | | 3 | 00/DBB8 : 8E EE 03 | STX {$3EE} 5808 | 16 AUXMEM.HOSTFS.s 173 | Code | 11 | | 1 | 00/DBBB : 78 | SEI ; Disable IRQ before XFER 5809 | 16 AUXMEM.HOSTFS.s 173 | Code | 11 | | 1 | 00/DBBC : BA | TSX 5810 | 16 AUXMEM.HOSTFS.s 173 | Code | 11 | | 3 | 00/DBBD : 8E 01 01 | STX $0101 ; Save alt SP 5811 | 16 AUXMEM.HOSTFS.s 173 | Code | 11 | | 3 | 00/DBC0 : AE 00 01 | LDX $0100 ; Load main SP into X 5812 | 16 AUXMEM.HOSTFS.s 173 | Code | 11 | | 1 | 00/DBC3 : 18 | CLC ; Use main mem 5813 | 16 AUXMEM.HOSTFS.s 173 | Code | 11 | | 1 | 00/DBC4 : B8 | CLV ; Use main ZP and LC 5814 | 16 AUXMEM.HOSTFS.s 173 | Code | 11 | | 3 | 00/DBC5 : 4C 14 C3 | JMP {$C314} 5815 | 16 AUXMEM.HOSTFS.s 174 | Empty | 11 | | 0 | 00/DBC8 | 5816 | 16 AUXMEM.HOSTFS.s 175 | Code | 11 | | 2 | 00/DBC8 : C9 FF | ozunid_182 CMP #$FF ; Y!=0,A=FF => flush file 5817 | 16 AUXMEM.HOSTFS.s 176 | Code | 11 | | 2 | 00/DBCA : D0 17 | BNE ozunid_183 5818 | 16 AUXMEM.HOSTFS.s 177 | Macro | 11 | | 0 | 00/DBCC | _FLUSH >>> XF2MAIN,FLUSH 5819 | 16 AUXMEM.HOSTFS.s 177 | Empty | 11 | | 0 | 00/DBCC | 5820 | 16 AUXMEM.HOSTFS.s 177 | Empty | 11 | | 0 | 00/DBCC | 5821 | 16 AUXMEM.HOSTFS.s 177 | Empty | 11 | | 0 | 00/DBCC | 5822 | 16 AUXMEM.HOSTFS.s 177 | Empty | 11 | | 0 | 00/DBCC | 5823 | 16 AUXMEM.HOSTFS.s 177 | Code | 11 | | 2 | 00/DBCC : A2 43 | LDX #FLUSH 5826 | 16 AUXMEM.HOSTFS.s 177 | Code | 11 | | 3 | 00/DBD3 : 8E EE 03 | STX {$3EE} 5827 | 16 AUXMEM.HOSTFS.s 177 | Code | 11 | | 1 | 00/DBD6 : 78 | SEI ; Disable IRQ before XFER 5828 | 16 AUXMEM.HOSTFS.s 177 | Code | 11 | | 1 | 00/DBD7 : BA | TSX 5829 | 16 AUXMEM.HOSTFS.s 177 | Code | 11 | | 3 | 00/DBD8 : 8E 01 01 | STX $0101 ; Save alt SP 5830 | 16 AUXMEM.HOSTFS.s 177 | Code | 11 | | 3 | 00/DBDB : AE 00 01 | LDX $0100 ; Load main SP into X 5831 | 16 AUXMEM.HOSTFS.s 177 | Code | 11 | | 1 | 00/DBDE : 18 | CLC ; Use main mem 5832 | 16 AUXMEM.HOSTFS.s 177 | Code | 11 | | 1 | 00/DBDF : B8 | CLV ; Use main ZP and LC 5833 | 16 AUXMEM.HOSTFS.s 177 | Code | 11 | | 3 | 00/DBE0 : 4C 14 C3 | JMP {$C314} 5834 | 16 AUXMEM.HOSTFS.s 178 | Empty | 11 | | 0 | 00/DBE3 | 5835 | 16 AUXMEM.HOSTFS.s 179 | Code | 11 | | 1 | 00/DBE3 : 68 | ozunid_183 PLA ; Unimplemented 5836 | 16 AUXMEM.HOSTFS.s 180 | Code | 11 | | 1 | 00/DBE4 : 7A | PLY 5837 | 16 AUXMEM.HOSTFS.s 181 | Code | 11 | | 1 | 00/DBE5 : FA | PLX 5838 | 16 AUXMEM.HOSTFS.s 182 | Code | 11 | | 1 | 00/DBE6 : 60 | RTS 5839 | 16 AUXMEM.HOSTFS.s 183 | Empty | 11 | | 0 | 00/DBE7 | 5840 | 16 AUXMEM.HOSTFS.s 184 | Macro | 11 | | 0 | 00/DBE7 | OSARGSRET >>> ENTAUX 5841 | 16 AUXMEM.HOSTFS.s 184 | Code | 11 | | 3 | 00/DBE7 : AE 01 01 | LDX $0101 ; Recover alt SP 5842 | 16 AUXMEM.HOSTFS.s 184 | Code | 11 | | 1 | 00/DBEA : 9A | TXS 5843 | 16 AUXMEM.HOSTFS.s 184 | Code | 11 | | 1 | 00/DBEB : 58 | CLI ; Re-enable IRQ after XFER 5844 | 16 AUXMEM.HOSTFS.s 184 | Empty | 11 | | 0 | 00/DBEC | 5845 | 16 AUXMEM.HOSTFS.s 184 | Empty | 11 | | 0 | 00/DBEC | 5846 | 16 AUXMEM.HOSTFS.s 184 | Empty | 11 | | 0 | 00/DBEC | 5847 | 16 AUXMEM.HOSTFS.s 184 | Empty | 11 | | 0 | 00/DBEC | 5848 | 16 AUXMEM.HOSTFS.s 185 | Code | 11 | | 3 | 00/DBEC : 20 64 E1 | JSR CHKERROR 5849 | 16 AUXMEM.HOSTFS.s 186 | Code | 11 | | 1 | 00/DBEF : 68 | OSARGSDONE PLA 5850 | 16 AUXMEM.HOSTFS.s 187 | Code | 11 | | 2 | 00/DBF0 : A9 00 | LDA #0 ; Implemented 5851 | 16 AUXMEM.HOSTFS.s 188 | Code | 11 | | 1 | 00/DBF2 : 7A | PLY 5852 | 16 AUXMEM.HOSTFS.s 189 | Code | 11 | | 1 | 00/DBF3 : FA | PLX 5853 | 16 AUXMEM.HOSTFS.s 190 | Code | 11 | | 1 | 00/DBF4 : 60 | RTS 5854 | 16 AUXMEM.HOSTFS.s 191 | Empty | 11 | | 0 | 00/DBF5 | 5855 | 16 AUXMEM.HOSTFS.s 192 | Empty | 11 | | 0 | 00/DBF5 | 5856 | 16 AUXMEM.HOSTFS.s 193 | Comment | 11 | | 0 | 00/DBF5 | * OSFILE - perform actions on entire files/objects 5857 | 16 AUXMEM.HOSTFS.s 194 | Comment | 11 | | 0 | 00/DBF5 | * On entry, A=action 5858 | 16 AUXMEM.HOSTFS.s 195 | Comment | 11 | | 0 | 00/DBF5 | * XY=>control block 5859 | 16 AUXMEM.HOSTFS.s 196 | Comment | 11 | | 0 | 00/DBF5 | * On exit, A=preserved if unimplemented 5860 | 16 AUXMEM.HOSTFS.s 197 | Comment | 11 | | 0 | 00/DBF5 | * A=0 object not found (not load/save) 5861 | 16 AUXMEM.HOSTFS.s 198 | Comment | 11 | | 0 | 00/DBF5 | * A=1 file found 5862 | 16 AUXMEM.HOSTFS.s 199 | Comment | 11 | | 0 | 00/DBF5 | * A=2 directory found (not load/save) 5863 | 16 AUXMEM.HOSTFS.s 200 | Comment | 11 | | 0 | 00/DBF5 | * XY preserved 5864 | 16 AUXMEM.HOSTFS.s 201 | Comment | 11 | | 0 | 00/DBF5 | * control block updated 5865 | 16 AUXMEM.HOSTFS.s 202 | Comment | 11 | | 0 | 00/DBF5 | * 5866 | 16 AUXMEM.HOSTFS.s 203 | Equivalence | 11 | | 0 | 00/DBF5 | OSFILEMIN EQU $FF ; $FF=LOAD 5867 | 16 AUXMEM.HOSTFS.s 204 | Equivalence | 11 | | 0 | 00/DBF5 | OSFILEMAX EQU $08 ; $08=MKDIR 5868 | 16 AUXMEM.HOSTFS.s 205 | Empty | 11 | | 0 | 00/DBF5 | 5869 | 16 AUXMEM.HOSTFS.s 206 | Code | 11 | | 1 | 00/DBF5 : DA | FILEHND PHX 5870 | 16 AUXMEM.HOSTFS.s 207 | Code | 11 | | 1 | 00/DBF6 : 5A | PHY 5871 | 16 AUXMEM.HOSTFS.s 208 | Code | 11 | | 1 | 00/DBF7 : 48 | PHA 5872 | 16 AUXMEM.HOSTFS.s 209 | Code | 11 | | 1 | 00/DBF8 : 18 | CLC 5873 | 16 AUXMEM.HOSTFS.s 210 | Code | 11 | | 2 | 00/DBF9 : 69 01 | ADC #256-{$FF} 5874 | 16 AUXMEM.HOSTFS.s 211 | Code | 11 | | 2 | 00/DBFB : C9 0A | CMP #{$08}+257-{$FF} ; NB: LtoR evaluation 5875 | 16 AUXMEM.HOSTFS.s 212 | Code | 11 | | 2 | 00/DBFD : B0 4C | BCS FILEIGNORE 5876 | 16 AUXMEM.HOSTFS.s 213 | Empty | 11 | | 0 | 00/DBFF | 5877 | 16 AUXMEM.HOSTFS.s 214 | Code | 11 | | 2 | 00/DBFF : 86 C0 | STX {{$C0}}+0 ; FSCTRL=>control block 5878 | 16 AUXMEM.HOSTFS.s 215 | Code | 11 | | 2 | 00/DC01 : 84 C1 | STY {{$C0}}+1 5879 | 16 AUXMEM.HOSTFS.s 216 | Code | 11 | | 2 | 00/DC03 : B2 C0 | LDA ({{$C0}}) ; XY=>filename 5880 | 16 AUXMEM.HOSTFS.s 217 | Code | 11 | | 1 | 00/DC05 : AA | TAX 5881 | 16 AUXMEM.HOSTFS.s 218 | Code | 11 | | 2 | 00/DC06 : A0 01 | LDY #$01 5882 | 16 AUXMEM.HOSTFS.s 219 | Code | 11 | | 2 | 00/DC08 : B1 C0 | LDA ({{$C0}}),Y 5883 | 16 AUXMEM.HOSTFS.s 220 | Code | 11 | | 1 | 00/DC0A : A8 | TAY 5884 | 16 AUXMEM.HOSTFS.s 221 | Code | 11 | | 3 | 00/DC0B : 20 06 E1 | JSR PARSNAME ; Copy filename->MOSFILE 5885 | 16 AUXMEM.HOSTFS.s 222 | Empty | 11 | | 0 | 00/DC0E | 5886 | 16 AUXMEM.HOSTFS.s 223 | Code | 11 | | 2 | 00/DC0E : A0 11 | LDY #$11 5887 | 16 AUXMEM.HOSTFS.s 224 | Macro | 11 | | 0 | 00/DC10 | >>> WRTMAIN 5888 | 16 AUXMEM.HOSTFS.s 224 | Code | 11 | | 1 | 00/DC10 : 78 | SEI ; Keeps IRQ handler easy 5889 | 16 AUXMEM.HOSTFS.s 224 | Code | 11 | | 3 | 00/DC11 : 8D 04 C0 | STA $C004 ; Write to main memory 5890 | 16 AUXMEM.HOSTFS.s 225 | Code | 11 | | 2 | 00/DC14 : B1 C0 | ozunid_184 LDA ({{$C0}}),Y ; Copy control block to auxmem 5891 | 16 AUXMEM.HOSTFS.s 226 | Code | 11 | | 3 | 00/DC16 : 99 BE 03 | STA {$03BE},Y 5892 | 16 AUXMEM.HOSTFS.s 227 | Code | 11 | | 1 | 00/DC19 : 88 | DEY 5893 | 16 AUXMEM.HOSTFS.s 228 | Code | 11 | | 2 | 00/DC1A : 10 F8 | BPL ozunid_184 5894 | 16 AUXMEM.HOSTFS.s 229 | Macro | 11 | | 0 | 00/DC1C | >>> WRTAUX 5895 | 16 AUXMEM.HOSTFS.s 229 | Code | 11 | | 3 | 00/DC1C : 8D 05 C0 | STA $C005 ; Write to aux memory 5896 | 16 AUXMEM.HOSTFS.s 229 | Code | 11 | | 1 | 00/DC1F : 58 | CLI ; Normal service resumed 5897 | 16 AUXMEM.HOSTFS.s 230 | Code | 11 | | 1 | 00/DC20 : 68 | PLA ; Get action back 5898 | 16 AUXMEM.HOSTFS.s 231 | Macro | 11 | | 0 | 00/DC21 | >>> XF2MAIN,CALLFILE 5899 | 16 AUXMEM.HOSTFS.s 231 | Empty | 11 | | 0 | 00/DC21 | 5900 | 16 AUXMEM.HOSTFS.s 231 | Empty | 11 | | 0 | 00/DC21 | 5901 | 16 AUXMEM.HOSTFS.s 231 | Empty | 11 | | 0 | 00/DC21 | 5902 | 16 AUXMEM.HOSTFS.s 231 | Empty | 11 | | 0 | 00/DC21 | 5903 | 16 AUXMEM.HOSTFS.s 231 | Code | 11 | | 2 | 00/DC21 : A2 C6 | LDX #CALLFILE 5906 | 16 AUXMEM.HOSTFS.s 231 | Code | 11 | | 3 | 00/DC28 : 8E EE 03 | STX {$3EE} 5907 | 16 AUXMEM.HOSTFS.s 231 | Code | 11 | | 1 | 00/DC2B : 78 | SEI ; Disable IRQ before XFER 5908 | 16 AUXMEM.HOSTFS.s 231 | Code | 11 | | 1 | 00/DC2C : BA | TSX 5909 | 16 AUXMEM.HOSTFS.s 231 | Code | 11 | | 3 | 00/DC2D : 8E 01 01 | STX $0101 ; Save alt SP 5910 | 16 AUXMEM.HOSTFS.s 231 | Code | 11 | | 3 | 00/DC30 : AE 00 01 | LDX $0100 ; Load main SP into X 5911 | 16 AUXMEM.HOSTFS.s 231 | Code | 11 | | 1 | 00/DC33 : 18 | CLC ; Use main mem 5912 | 16 AUXMEM.HOSTFS.s 231 | Code | 11 | | 1 | 00/DC34 : B8 | CLV ; Use main ZP and LC 5913 | 16 AUXMEM.HOSTFS.s 231 | Code | 11 | | 3 | 00/DC35 : 4C 14 C3 | JMP {$C314} 5914 | 16 AUXMEM.HOSTFS.s 232 | Empty | 11 | | 0 | 00/DC38 | 5915 | 16 AUXMEM.HOSTFS.s 233 | Comment | 11 | | 0 | 00/DC38 | * On return here, A<$20 return to caller, A>$1F ProDOS error 5916 | 16 AUXMEM.HOSTFS.s 234 | Macro | 11 | | 0 | 00/DC38 | OSFILERET >>> ENTAUX 5917 | 16 AUXMEM.HOSTFS.s 234 | Code | 11 | | 3 | 00/DC38 : AE 01 01 | LDX $0101 ; Recover alt SP 5918 | 16 AUXMEM.HOSTFS.s 234 | Code | 11 | | 1 | 00/DC3B : 9A | TXS 5919 | 16 AUXMEM.HOSTFS.s 234 | Code | 11 | | 1 | 00/DC3C : 58 | CLI ; Re-enable IRQ after XFER 5920 | 16 AUXMEM.HOSTFS.s 234 | Empty | 11 | | 0 | 00/DC3D | 5921 | 16 AUXMEM.HOSTFS.s 234 | Empty | 11 | | 0 | 00/DC3D | 5922 | 16 AUXMEM.HOSTFS.s 234 | Empty | 11 | | 0 | 00/DC3D | 5923 | 16 AUXMEM.HOSTFS.s 234 | Empty | 11 | | 0 | 00/DC3D | 5924 | 16 AUXMEM.HOSTFS.s 235 | Code | 11 | | 3 | 00/DC3D : 20 64 E1 | JSR CHKERROR ; Check if error returned 5925 | 16 AUXMEM.HOSTFS.s 236 | Code | 11 | | 1 | 00/DC40 : 48 | PHA 5926 | 16 AUXMEM.HOSTFS.s 237 | Code | 11 | | 2 | 00/DC41 : A0 11 | LDY #$11 ; Copy updated control block back 5927 | 16 AUXMEM.HOSTFS.s 238 | Code | 11 | | 3 | 00/DC43 : B9 EE 02 | ozunid_185 LDA {$2EE},Y ; Mainmem left it in OSFILECB 5928 | 16 AUXMEM.HOSTFS.s 239 | Code | 11 | | 2 | 00/DC46 : 91 C0 | STA ({{$C0}}),Y 5929 | 16 AUXMEM.HOSTFS.s 240 | Code | 11 | | 1 | 00/DC48 : 88 | DEY 5930 | 16 AUXMEM.HOSTFS.s 241 | Code | 11 | | 2 | 00/DC49 : 10 F8 | BPL ozunid_185 5931 | 16 AUXMEM.HOSTFS.s 242 | Empty | 11 | | 0 | 00/DC4B | 5932 | 16 AUXMEM.HOSTFS.s 243 | Code | 11 | | 1 | 00/DC4B : 68 | FILEIGNORE PLA ; Returned object type 5933 | 16 AUXMEM.HOSTFS.s 244 | Code | 11 | | 1 | 00/DC4C : 7A | PLY ; No error, return to caller 5934 | 16 AUXMEM.HOSTFS.s 245 | Code | 11 | | 1 | 00/DC4D : FA | PLX 5935 | 16 AUXMEM.HOSTFS.s 246 | Code | 11 | | 1 | 00/DC4E : 60 | RTS 5936 | 16 AUXMEM.HOSTFS.s 247 | Empty | 11 | | 0 | 00/DC4F | 5937 | 16 AUXMEM.HOSTFS.s 248 | Empty | 11 | | 0 | 00/DC4F | 5938 | 16 AUXMEM.HOSTFS.s 249 | Comment | 11 | | 0 | 00/DC4F | * FSC Command Table 5939 | 16 AUXMEM.HOSTFS.s 250 | Comment | 11 | | 0 | 00/DC4F | ******************* 5940 | 16 AUXMEM.HOSTFS.s 251 | Comment | 11 | | 0 | 00/DC4F | * These are commands specific to the filing system that can't be 5941 | 16 AUXMEM.HOSTFS.s 252 | Comment | 11 | | 0 | 00/DC4F | * called via OSFILE, OSFSC, etc. 5942 | 16 AUXMEM.HOSTFS.s 253 | Comment | 11 | | 0 | 00/DC4F | * 5943 | 16 AUXMEM.HOSTFS.s 254 | Data | 11 | | 5 | 00/DC4F : 43 48 44 49 | FSCCOMMAND ASC 'CHDIR' | | | | | | 52 | 5944 | 16 AUXMEM.HOSTFS.s 255 | Data | 11 | | 1 | 00/DC54 : 80 | DB $80 5945 | 16 AUXMEM.HOSTFS.s 256 | Data | 11 | | 2 | 00/DC55 : 79 DF | DW FSCCHDIR-1 ; Change directory, LPTR=>params 5946 | 16 AUXMEM.HOSTFS.s 257 | Data | 11 | | 2 | 00/DC57 : 43 44 | ASC 'CD' 5947 | 16 AUXMEM.HOSTFS.s 258 | Data | 11 | | 1 | 00/DC59 : 80 | DB $80 5948 | 16 AUXMEM.HOSTFS.s 259 | Data | 11 | | 2 | 00/DC5A : 79 DF | DW FSCCHDIR-1 ; Change directory, LPTR=>params 5949 | 16 AUXMEM.HOSTFS.s 260 | Data | 11 | | 3 | 00/DC5C : 44 49 52 | ASC 'DIR' 5950 | 16 AUXMEM.HOSTFS.s 261 | Data | 11 | | 1 | 00/DC5F : 80 | DB $80 5951 | 16 AUXMEM.HOSTFS.s 262 | Data | 11 | | 2 | 00/DC60 : 79 DF | DW FSCCHDIR-1 ; Change directory, LPTR=>params 5952 | 16 AUXMEM.HOSTFS.s 263 | Data | 11 | | 5 | 00/DC62 : 44 52 49 56 | ASC 'DRIVE' | | | | | | 45 | 5953 | 16 AUXMEM.HOSTFS.s 264 | Data | 11 | | 1 | 00/DC67 : 80 | DB $80 5954 | 16 AUXMEM.HOSTFS.s 265 | Data | 11 | | 2 | 00/DC68 : AB DF | DW FSCDRIVE-1 ; Select drive, LPTR=>params 5955 | 16 AUXMEM.HOSTFS.s 266 | Data | 11 | | 4 | 00/DC6A : 46 52 45 45 | ASC 'FREE' 5956 | 16 AUXMEM.HOSTFS.s 267 | Data | 11 | | 1 | 00/DC6E : 80 | DB $80 5957 | 16 AUXMEM.HOSTFS.s 268 | Data | 11 | | 2 | 00/DC6F : D7 DF | DW FSCFREE-1 ; FREE , LPTR=>params 5958 | 16 AUXMEM.HOSTFS.s 269 | Data | 11 | | 6 | 00/DC71 : 41 43 43 45 | ASC 'ACCESS' | | | | | | 53 53 | 5959 | 16 AUXMEM.HOSTFS.s 270 | Data | 11 | | 1 | 00/DC77 : 80 | DB $80 5960 | 16 AUXMEM.HOSTFS.s 271 | Data | 11 | | 2 | 00/DC78 : 69 E0 | DW FSCACCESS-1 ; ACCESS , LPTR=>params 5961 | 16 AUXMEM.HOSTFS.s 272 | Data | 11 | | 5 | 00/DC7A : 54 49 54 4C | ASC 'TITLE' | | | | | | 45 | 5962 | 16 AUXMEM.HOSTFS.s 273 | Data | 11 | | 1 | 00/DC7F : 80 | DB $80 5963 | 16 AUXMEM.HOSTFS.s 274 | Data | 11 | | 2 | 00/DC80 : 04 E1 | DW FSCTITLE-1 ; TITLE () , LPTR=>params 5964 | 16 AUXMEM.HOSTFS.s 275 | Data | 11 | | 7 | 00/DC82 : 44 45 53 54 | ASC 'DESTROY' | | | | | | 52 4F 59 | 5965 | 16 AUXMEM.HOSTFS.s 276 | Data | 11 | | 1 | 00/DC89 : 80 | DB $80 5966 | 16 AUXMEM.HOSTFS.s 277 | Data | 11 | | 2 | 00/DC8A : CB E0 | DW FSCDESTROY-1 ; DESTROY <objlist>, LPTR=>params 5967 | 16 AUXMEM.HOSTFS.s 278 | Data | 11 | | 4 | 00/DC8C : 43 4F 50 59 | ASC 'COPY' 5968 | 16 AUXMEM.HOSTFS.s 279 | Data | 11 | | 1 | 00/DC90 : 80 | DB $80 5969 | 16 AUXMEM.HOSTFS.s 280 | Data | 11 | | 2 | 00/DC91 : 34 DF | DW FSCCOPY-1 ; COPY <source> <dest>, LPTR=>params 5970 | 16 AUXMEM.HOSTFS.s 281 | Comment | 11 | | 0 | 00/DC93 | * 5971 | 16 AUXMEM.HOSTFS.s 282 | Data | 11 | | 1 | 00/DC93 : FF | DB $FF ; Terminator 5972 | 16 AUXMEM.HOSTFS.s 283 | Empty | 11 | | 0 | 00/DC94 | 5973 | 16 AUXMEM.HOSTFS.s 284 | Comment | 11 | | 0 | 00/DC94 | * FSC Dispatch Table 5974 | 16 AUXMEM.HOSTFS.s 285 | Comment | 11 | | 0 | 00/DC94 | ******************** 5975 | 16 AUXMEM.HOSTFS.s 286 | Data | 11 | | 2 | 00/DC94 : C8 DC | FSCDISPATCH DW FSCOPT-1 ; A=0 - *OPT 5976 | 16 AUXMEM.HOSTFS.s 287 | Data | 11 | | 2 | 00/DC96 : EB DC | DW CHKEOF-1 ; A=1 - Read EOF 5977 | 16 AUXMEM.HOSTFS.s 288 | Data | 11 | | 2 | 00/DC98 : 1E DD | DW FSCRUN-1 ; A=2 - */filename 5978 | 16 AUXMEM.HOSTFS.s 289 | Data | 11 | | 2 | 00/DC9A : 0D DD | DW FSC03-1 ; A=3 - *command 5979 | 16 AUXMEM.HOSTFS.s 290 | Data | 11 | | 2 | 00/DC9C : 1E DD | DW FSCRUN-1 ; A=4 - *RUN 5980 | 16 AUXMEM.HOSTFS.s 291 | Data | 11 | | 2 | 00/DC9E : 63 DD | DW FSCCAT-1 ; A=5 - *CAT 5981 | 16 AUXMEM.HOSTFS.s 292 | Data | 11 | | 2 | 00/DCA0 : C7 DC | DW FSCUKN-1 ; A=6 5982 | 16 AUXMEM.HOSTFS.s 293 | Data | 11 | | 2 | 00/DCA2 : C7 DC | DW FSCUKN-1 ; A=7 5983 | 16 AUXMEM.HOSTFS.s 294 | Data | 11 | | 2 | 00/DCA4 : C7 DC | DW FSCUKN-1 ; A=8 5984 | 16 AUXMEM.HOSTFS.s 295 | Data | 11 | | 2 | 00/DCA6 : 63 DD | DW FSCCAT-1 ; A=9 - *EX 5985 | 16 AUXMEM.HOSTFS.s 296 | Data | 11 | | 2 | 00/DCA8 : 63 DD | DW FSCCAT-1 ; A=10 - *INFO 5986 | 16 AUXMEM.HOSTFS.s 297 | Data | 11 | | 2 | 00/DCAA : C7 DC | DW FSCUKN-1 ; A=11 5987 | 16 AUXMEM.HOSTFS.s 298 | Data | 11 | | 2 | 00/DCAC : E6 DE | DW FSCRENAME-1 ; A=12 - *RENAME 5988 | 16 AUXMEM.HOSTFS.s 299 | Empty | 11 | | 0 | 00/DCAE | 5989 | 16 AUXMEM.HOSTFS.s 300 | Comment | 11 | | 0 | 00/DCAE | * OSFSC - miscellanous file system calls 5990 | 16 AUXMEM.HOSTFS.s 301 | Comment | 11 | | 0 | 00/DCAE | ***************************************** 5991 | 16 AUXMEM.HOSTFS.s 302 | Comment | 11 | | 0 | 00/DCAE | * On entry, A=action, XY=>command line 5992 | 16 AUXMEM.HOSTFS.s 303 | Comment | 11 | | 0 | 00/DCAE | * or A=action, X=param1, Y=param2 5993 | 16 AUXMEM.HOSTFS.s 304 | Comment | 11 | | 0 | 00/DCAE | * On exit, A=preserved if unimplemented 5994 | 16 AUXMEM.HOSTFS.s 305 | Comment | 11 | | 0 | 00/DCAE | * A=0 if implemented 5995 | 16 AUXMEM.HOSTFS.s 306 | Comment | 11 | | 0 | 00/DCAE | * X,Y=any return values 5996 | 16 AUXMEM.HOSTFS.s 307 | Comment | 11 | | 0 | 00/DCAE | * 5997 | 16 AUXMEM.HOSTFS.s 308 | Code | 11 | | 2 | 00/DCAE : C9 0D | FSCHND CMP #13 5998 | 16 AUXMEM.HOSTFS.s 309 | Code | 11 | | 2 | 00/DCB0 : B0 16 | BCS FSCUKN 5999 | 16 AUXMEM.HOSTFS.s 310 | Code | 11 | | 2 | 00/DCB2 : 85 C2 | STA {$C2} 6000 | 16 AUXMEM.HOSTFS.s 311 | Code | 11 | | 2 | 00/DCB4 : 86 C0 | STX {$C0} 6001 | 16 AUXMEM.HOSTFS.s 312 | Code | 11 | | 2 | 00/DCB6 : 84 C1 | STY {$C1} 6002 | 16 AUXMEM.HOSTFS.s 313 | Code | 11 | | 1 | 00/DCB8 : 0A | ASL A 6003 | 16 AUXMEM.HOSTFS.s 314 | Code | 11 | | 1 | 00/DCB9 : AA | TAX 6004 | 16 AUXMEM.HOSTFS.s 315 | Code | 11 | | 3 | 00/DCBA : BD 95 DC | LDA FSCDISPATCH+1,X 6005 | 16 AUXMEM.HOSTFS.s 316 | Code | 11 | | 1 | 00/DCBD : 48 | PHA 6006 | 16 AUXMEM.HOSTFS.s 317 | Code | 11 | | 3 | 00/DCBE : BD 94 DC | LDA FSCDISPATCH+0,X 6007 | 16 AUXMEM.HOSTFS.s 318 | Code | 11 | | 1 | 00/DCC1 : 48 | PHA 6008 | 16 AUXMEM.HOSTFS.s 319 | Code | 11 | | 2 | 00/DCC2 : A5 C2 | FSCNULL LDA {$C2} 6009 | 16 AUXMEM.HOSTFS.s 320 | Code | 11 | | 2 | 00/DCC4 : A4 C1 | LDY {$C1} 6010 | 16 AUXMEM.HOSTFS.s 321 | Code | 11 | | 2 | 00/DCC6 : A6 C0 | LDX {$C0} ; Set EQ/NE from X 6011 | 16 AUXMEM.HOSTFS.s 322 | Empty | 11 | | 0 | 00/DCC8 | FSCUKN 6012 | 16 AUXMEM.HOSTFS.s 323 | Code | 11 | | 1 | 00/DCC8 : 60 | FSCRET RTS 6013 | 16 AUXMEM.HOSTFS.s 324 | Empty | 11 | | 0 | 00/DCC9 | 6014 | 16 AUXMEM.HOSTFS.s 325 | Comment | 11 | | 0 | 00/DCC9 | * OSFSC 00 - *OPT function 6015 | 16 AUXMEM.HOSTFS.s 326 | Comment | 11 | | 0 | 00/DCC9 | * Entered with A=$00 and EQ/NE from X 6016 | 16 AUXMEM.HOSTFS.s 327 | Code | 11 | | 2 | 00/DCC9 : F0 16 | FSCOPT BEQ _OPT0 6017 | 16 AUXMEM.HOSTFS.s 328 | Code | 11 | | 2 | 00/DCCB : E0 05 | CPX #$05 6018 | 16 AUXMEM.HOSTFS.s 329 | Code | 11 | | 2 | 00/DCCD : B0 14 | BCS _OPTNULL 6019 | 16 AUXMEM.HOSTFS.s 330 | Code | 11 | | 2 | 00/DCCF : C0 04 | CPY #$04 6020 | 16 AUXMEM.HOSTFS.s 331 | Code | 11 | | 2 | 00/DCD1 : B0 10 | BCS _OPTNULL 6021 | 16 AUXMEM.HOSTFS.s 332 | Code | 11 | | 2 | 00/DCD3 : A5 E3 | LDA {$E3} 6022 | 16 AUXMEM.HOSTFS.s 333 | Code | 11 | | 3 | 00/DCD5 : 3D E3 DC | AND _OPTMSK-1,X 6023 | 16 AUXMEM.HOSTFS.s 334 | Code | 11 | | 3 | 00/DCD8 : 59 E8 DC | EOR _OPTSET-0,Y 6024 | 16 AUXMEM.HOSTFS.s 335 | Code | 11 | | 3 | 00/DCDB : 3D E3 DC | AND _OPTMSK-1,X 6025 | 16 AUXMEM.HOSTFS.s 336 | Code | 11 | | 3 | 00/DCDE : 59 E8 DC | EOR _OPTSET-0,Y 6026 | 16 AUXMEM.HOSTFS.s 337 | Code | 11 | | 2 | 00/DCE1 : 85 E3 | _OPT0 STA {$E3} 6027 | 16 AUXMEM.HOSTFS.s 338 | Code | 11 | | 1 | 00/DCE3 : 60 | _OPTNULL RTS 6028 | 16 AUXMEM.HOSTFS.s 339 | Data | 11 | | 4 | 00/DCE4 : 3F CF F3 FC | _OPTMSK DB $3F,$CF,$F3,$FC 6029 | 16 AUXMEM.HOSTFS.s 340 | Data | 11 | | 4 | 00/DCE8 : 00 55 AA FF | _OPTSET DB $00,$55,$AA,$FF 6030 | 16 AUXMEM.HOSTFS.s 341 | Empty | 11 | | 0 | 00/DCEC | 6031 | 16 AUXMEM.HOSTFS.s 342 | Comment | 11 | | 0 | 00/DCEC | *FSCUKN 6032 | 16 AUXMEM.HOSTFS.s 343 | Comment | 11 | | 0 | 00/DCEC | * DO DEBUG 6033 | 16 AUXMEM.HOSTFS.s 344 | Comment | 11 | | 0 | 00/DCEC | * PHA 6034 | 16 AUXMEM.HOSTFS.s 345 | Comment | 11 | | 0 | 00/DCEC | * LDA #<OSFSCM 6035 | 16 AUXMEM.HOSTFS.s 346 | Comment | 11 | | 0 | 00/DCEC | * LDY #>OSFSCM 6036 | 16 AUXMEM.HOSTFS.s 347 | Comment | 11 | | 0 | 00/DCEC | * JSR PRSTR 6037 | 16 AUXMEM.HOSTFS.s 348 | Comment | 11 | | 0 | 00/DCEC | * PLA 6038 | 16 AUXMEM.HOSTFS.s 349 | Comment | 11 | | 0 | 00/DCEC | * FIN 6039 | 16 AUXMEM.HOSTFS.s 350 | Comment | 11 | | 0 | 00/DCEC | * RTS 6040 | 16 AUXMEM.HOSTFS.s 351 | Comment | 11 | | 0 | 00/DCEC | * DO DEBUG 6041 | 16 AUXMEM.HOSTFS.s 352 | Comment | 11 | | 0 | 00/DCEC | *OSFSCM ASC 'OSFSC.' 6042 | 16 AUXMEM.HOSTFS.s 353 | Comment | 11 | | 0 | 00/DCEC | * DB $00 6043 | 16 AUXMEM.HOSTFS.s 354 | Comment | 11 | | 0 | 00/DCEC | * FIN 6044 | 16 AUXMEM.HOSTFS.s 355 | Empty | 11 | | 0 | 00/DCEC | 6045 | 16 AUXMEM.HOSTFS.s 356 | Empty | 11 | | 0 | 00/DCEC | 6046 | 16 AUXMEM.HOSTFS.s 357 | Comment | 11 | | 0 | 00/DCEC | * OSFSC 01 - Read EOF function 6047 | 16 AUXMEM.HOSTFS.s 358 | Comment | 11 | | 0 | 00/DCEC | * X=File ref number 6048 | 16 AUXMEM.HOSTFS.s 359 | Comment | 11 | | 0 | 00/DCEC | * 6049 | 16 AUXMEM.HOSTFS.s 360 | Code | 11 | | 1 | 00/DCEC : 8A | CHKEOF TXA ; A=channel 6050 | 16 AUXMEM.HOSTFS.s 361 | Macro | 11 | | 0 | 00/DCED | >>> XF2MAIN,FILEEOF 6051 | 16 AUXMEM.HOSTFS.s 361 | Empty | 11 | | 0 | 00/DCED | 6052 | 16 AUXMEM.HOSTFS.s 361 | Empty | 11 | | 0 | 00/DCED | 6053 | 16 AUXMEM.HOSTFS.s 361 | Empty | 11 | | 0 | 00/DCED | 6054 | 16 AUXMEM.HOSTFS.s 361 | Empty | 11 | | 0 | 00/DCED | 6055 | 16 AUXMEM.HOSTFS.s 361 | Code | 11 | | 2 | 00/DCED : A2 DE | LDX #<FILEEOF 6056 | 16 AUXMEM.HOSTFS.s 361 | Code | 11 | | 3 | 00/DCEF : 8E ED 03 | STX {$3ED} 6057 | 16 AUXMEM.HOSTFS.s 361 | Code | 11 | | 2 | 00/DCF2 : A2 47 | LDX #>FILEEOF 6058 | 16 AUXMEM.HOSTFS.s 361 | Code | 11 | | 3 | 00/DCF4 : 8E EE 03 | STX {$3EE} 6059 | 16 AUXMEM.HOSTFS.s 361 | Code | 11 | | 1 | 00/DCF7 : 78 | SEI ; Disable IRQ before XFER 6060 | 16 AUXMEM.HOSTFS.s 361 | Code | 11 | | 1 | 00/DCF8 : BA | TSX 6061 | 16 AUXMEM.HOSTFS.s 361 | Code | 11 | | 3 | 00/DCF9 : 8E 01 01 | STX $0101 ; Save alt SP 6062 | 16 AUXMEM.HOSTFS.s 361 | Code | 11 | | 3 | 00/DCFC : AE 00 01 | LDX $0100 ; Load main SP into X 6063 | 16 AUXMEM.HOSTFS.s 361 | Code | 11 | | 1 | 00/DCFF : 18 | CLC ; Use main mem 6064 | 16 AUXMEM.HOSTFS.s 361 | Code | 11 | | 1 | 00/DD00 : B8 | CLV ; Use main ZP and LC 6065 | 16 AUXMEM.HOSTFS.s 361 | Code | 11 | | 3 | 00/DD01 : 4C 14 C3 | JMP {$C314} 6066 | 16 AUXMEM.HOSTFS.s 362 | Macro | 11 | | 0 | 00/DD04 | CHKEOFRET >>> ENTAUX 6067 | 16 AUXMEM.HOSTFS.s 362 | Code | 11 | | 3 | 00/DD04 : AE 01 01 | LDX $0101 ; Recover alt SP 6068 | 16 AUXMEM.HOSTFS.s 362 | Code | 11 | | 1 | 00/DD07 : 9A | TXS 6069 | 16 AUXMEM.HOSTFS.s 362 | Code | 11 | | 1 | 00/DD08 : 58 | CLI ; Re-enable IRQ after XFER 6070 | 16 AUXMEM.HOSTFS.s 362 | Empty | 11 | | 0 | 00/DD09 | 6071 | 16 AUXMEM.HOSTFS.s 362 | Empty | 11 | | 0 | 00/DD09 | 6072 | 16 AUXMEM.HOSTFS.s 362 | Empty | 11 | | 0 | 00/DD09 | 6073 | 16 AUXMEM.HOSTFS.s 362 | Empty | 11 | | 0 | 00/DD09 | 6074 | 16 AUXMEM.HOSTFS.s 363 | Code | 11 | | 1 | 00/DD09 : AA | TAX ; Return code -> X 6075 | 16 AUXMEM.HOSTFS.s 364 | Code | 11 | | 1 | 00/DD0A : 98 | TYA ; Y=any ProDOS error 6076 | 16 AUXMEM.HOSTFS.s 365 | Code | 11 | | 3 | 00/DD0B : 4C 64 E1 | JMP CHKERROR 6077 | 16 AUXMEM.HOSTFS.s 366 | Empty | 11 | | 0 | 00/DD0E | 6078 | 16 AUXMEM.HOSTFS.s 367 | Empty | 11 | | 0 | 00/DD0E | 6079 | 16 AUXMEM.HOSTFS.s 368 | Comment | 11 | | 0 | 00/DD0E | * OSFSC 03 - *command, fall back to *RUN command 6080 | 16 AUXMEM.HOSTFS.s 369 | Comment | 11 | | 0 | 00/DD0E | * XY=>command line 6081 | 16 AUXMEM.HOSTFS.s 370 | Comment | 11 | | 0 | 00/DD0E | * 6082 | 16 AUXMEM.HOSTFS.s 371 | Code | 11 | | 3 | 00/DD0E : 20 4D E6 | FSC03 JSR XYtoLPTR 6083 | 16 AUXMEM.HOSTFS.s 372 | Code | 11 | | 2 | 00/DD11 : A2 4F | LDX #<FSCCOMMAND 6084 | 16 AUXMEM.HOSTFS.s 373 | Code | 11 | | 2 | 00/DD13 : A0 DC | LDY #>FSCCOMMAND 6085 | 16 AUXMEM.HOSTFS.s 374 | Code | 11 | | 3 | 00/DD15 : 20 86 E4 | JSR CLILOOKUP 6086 | 16 AUXMEM.HOSTFS.s 375 | Code | 11 | | 2 | 00/DD18 : F0 AE | BEQ FSCRET ; Matched, return 6087 | 16 AUXMEM.HOSTFS.s 376 | Code | 11 | | 3 | 00/DD1A : 20 42 E6 | JSR LPTRtoXY ; Fall through to *RUN 6088 | 16 AUXMEM.HOSTFS.s 377 | Code | 11 | | 2 | 00/DD1D : A9 FE | LDA #$FE ; Will become A=$05 6089 | 16 AUXMEM.HOSTFS.s 378 | Empty | 11 | | 0 | 00/DD1F | 6090 | 16 AUXMEM.HOSTFS.s 379 | Comment | 11 | | 0 | 00/DD1F | * OSFSC 02 - */filename, OSFSC 04 - *RUN filename 6091 | 16 AUXMEM.HOSTFS.s 380 | Comment | 11 | | 0 | 00/DD1F | * XY=>pathname 6092 | 16 AUXMEM.HOSTFS.s 381 | Comment | 11 | | 0 | 00/DD1F | * 6093 | 16 AUXMEM.HOSTFS.s 382 | Code | 11 | | 1 | 00/DD1F : 48 | FSCRUN PHA 6094 | 16 AUXMEM.HOSTFS.s 383 | Code | 11 | | 3 | 00/DD20 : 8E EE 02 | STX {$2EE}+0 ; Pointer to filename 6095 | 16 AUXMEM.HOSTFS.s 384 | Code | 11 | | 3 | 00/DD23 : 8C EF 02 | STY {$2EE}+1 6096 | 16 AUXMEM.HOSTFS.s 385 | Code | 11 | | 3 | 00/DD26 : 20 4D E6 | JSR XYtoLPTR 6097 | 16 AUXMEM.HOSTFS.s 386 | Code | 11 | | 2 | 00/DD29 : B1 F2 | FSCRUNLP LDA ({$F2}),Y ; Look for command line 6098 | 16 AUXMEM.HOSTFS.s 387 | Code | 11 | | 1 | 00/DD2B : C8 | INY 6099 | 16 AUXMEM.HOSTFS.s 388 | Code | 11 | | 2 | 00/DD2C : C9 21 | CMP #'!' 6100 | 16 AUXMEM.HOSTFS.s 389 | Code | 11 | | 2 | 00/DD2E : B0 F9 | BCS FSCRUNLP 6101 | 16 AUXMEM.HOSTFS.s 390 | Code | 11 | | 1 | 00/DD30 : 88 | DEY 6102 | 16 AUXMEM.HOSTFS.s 391 | Code | 11 | | 3 | 00/DD31 : 20 2F E6 | JSR SKIPSPC 6103 | 16 AUXMEM.HOSTFS.s 392 | Code | 11 | | 3 | 00/DD34 : 20 42 E6 | JSR LPTRtoXY 6104 | 16 AUXMEM.HOSTFS.s 393 | Code | 11 | | 2 | 00/DD37 : 86 CE | STX {$CE}+0 ; Set CMDLINE=>command line 6105 | 16 AUXMEM.HOSTFS.s 394 | Code | 11 | | 2 | 00/DD39 : 84 CF | STY {$CE}+1 ; Collected by OSARGS 1,0 6106 | 16 AUXMEM.HOSTFS.s 395 | Code | 11 | | 1 | 00/DD3B : 68 | PLA 6107 | 16 AUXMEM.HOSTFS.s 396 | Code | 11 | | 2 | 00/DD3C : 49 FB | EOR #$FB ; Convert $FE->$05, $02/$04->$Fx 6108 | 16 AUXMEM.HOSTFS.s 397 | Code | 11 | | 2 | 00/DD3E : 30 09 | BMI _FSCRUN2 ; *RUN, go direct to LOAD 6109 | 16 AUXMEM.HOSTFS.s 398 | Code | 11 | | 3 | 00/DD40 : 20 57 DD | JSR _FSCCALL ; Do an initial INFO 6110 | 16 AUXMEM.HOSTFS.s 399 | Code | 11 | | 1 | 00/DD43 : 3A | DEC A ; $01->$00 6111 | 16 AUXMEM.HOSTFS.s 400 | Code | 11 | | 2 | 00/DD44 : F0 03 | BEQ _FSCRUN2 ; A file, load and run it 6112 | 16 AUXMEM.HOSTFS.s 401 | Code | 11 | | 3 | 00/DD46 : 4C C2 DC | JMP FSCNULL ; Not a file, return all preserved 6113 | 16 AUXMEM.HOSTFS.s 402 | Code | 11 | | 2 | 00/DD49 : A9 FF | _FSCRUN2 LDA #$FF ; A=LOAD 6114 | 16 AUXMEM.HOSTFS.s 403 | Code | 11 | | 3 | 00/DD4B : 8D F4 02 | STA {$2EE}+6 ; Use file's address 6115 | 16 AUXMEM.HOSTFS.s 404 | Code | 11 | | 3 | 00/DD4E : 20 57 DD | JSR _FSCCALL ; LOAD the file 6116 | 16 AUXMEM.HOSTFS.s 405 | Code | 11 | | 3 | 00/DD51 : 20 5E DD | JSR _CALLCODE ; Call the loaded code 6117 | 16 AUXMEM.HOSTFS.s 406 | Code | 11 | | 2 | 00/DD54 : A9 00 | LDA #$00 ; A=0 on return 6118 | 16 AUXMEM.HOSTFS.s 407 | Code | 11 | | 1 | 00/DD56 : 60 | RTS 6119 | 16 AUXMEM.HOSTFS.s 408 | Code | 11 | | 2 | 00/DD57 : A2 EE | _FSCCALL LDX #<{$2EE} ; Pointer to control block 6120 | 16 AUXMEM.HOSTFS.s 409 | Code | 11 | | 2 | 00/DD59 : A0 02 | LDY #>{$2EE} 6121 | 16 AUXMEM.HOSTFS.s 410 | Code | 11 | | 3 | 00/DD5B : 4C DD FF | JMP OSFILE 6122 | 16 AUXMEM.HOSTFS.s 411 | Code | 11 | | 2 | 00/DD5E : A9 01 | _CALLCODE LDA #$01 ; A=1 - entering code 6123 | 16 AUXMEM.HOSTFS.s 412 | Code | 11 | | 1 | 00/DD60 : 38 | SEC ; Not from RESET 6124 | 16 AUXMEM.HOSTFS.s 413 | Code | 11 | | 3 | 00/DD61 : 6C F4 02 | JMP ({$2EE}+6) ; Jump to EXEC addr 6125 | 16 AUXMEM.HOSTFS.s 414 | Empty | 11 | | 0 | 00/DD64 | 6126 | 16 AUXMEM.HOSTFS.s 415 | Empty | 11 | | 0 | 00/DD64 | 6127 | 16 AUXMEM.HOSTFS.s 416 | Comment | 11 | | 0 | 00/DD64 | * Display catalog entries and info 6128 | 16 AUXMEM.HOSTFS.s 417 | Comment | 11 | | 0 | 00/DD64 | * A=5 *CAT, A=9 *EX, A=10 *INFO 6129 | 16 AUXMEM.HOSTFS.s 418 | Comment | 11 | | 0 | 00/DD64 | * XY=>pathname 6130 | 16 AUXMEM.HOSTFS.s 419 | Comment | 11 | | 0 | 00/DD64 | * 6131 | 16 AUXMEM.HOSTFS.s 420 | Code | 11 | | 2 | 00/DD64 : 49 06 | FSCCAT EOR #$06 6132 | 16 AUXMEM.HOSTFS.s 421 | Code | 11 | | 1 | 00/DD66 : 18 | CLC 6133 | 16 AUXMEM.HOSTFS.s 422 | Code | 11 | | 1 | 00/DD67 : 6A | ROR A ; 01100000=*CAT 6134 | 16 AUXMEM.HOSTFS.s 423 | Code | 11 | | 1 | 00/DD68 : 6A | ROR A ; 11100000=*EX 6135 | 16 AUXMEM.HOSTFS.s 424 | Code | 11 | | 1 | 00/DD69 : 6A | ROR A ; 10000000=*INFO 6136 | 16 AUXMEM.HOSTFS.s 425 | Code | 11 | | 1 | 00/DD6A : 6A | ROR A ; b7=long info 6137 | 16 AUXMEM.HOSTFS.s 426 | Code | 11 | | 2 | 00/DD6B : 85 C2 | STA {$C2} ; b6=multiple items 6138 | 16 AUXMEM.HOSTFS.s 427 | Code | 11 | | 3 | 00/DD6D : 20 06 E1 | JSR PARSNAME ; Copy filename->MOSFILE 6139 | 16 AUXMEM.HOSTFS.s 428 | Code | 11 | | 2 | 00/DD70 : A5 C2 | LDA {$C2} ; Get ARG back 6140 | 16 AUXMEM.HOSTFS.s 429 | Macro | 11 | | 0 | 00/DD72 | >>> XF2MAIN,CATALOG 6141 | 16 AUXMEM.HOSTFS.s 429 | Empty | 11 | | 0 | 00/DD72 | 6142 | 16 AUXMEM.HOSTFS.s 429 | Empty | 11 | | 0 | 00/DD72 | 6143 | 16 AUXMEM.HOSTFS.s 429 | Empty | 11 | | 0 | 00/DD72 | 6144 | 16 AUXMEM.HOSTFS.s 429 | Empty | 11 | | 0 | 00/DD72 | 6145 | 16 AUXMEM.HOSTFS.s 429 | Code | 11 | | 2 | 00/DD72 : A2 C8 | LDX #<CATALOG 6146 | 16 AUXMEM.HOSTFS.s 429 | Code | 11 | | 3 | 00/DD74 : 8E ED 03 | STX {$3ED} 6147 | 16 AUXMEM.HOSTFS.s 429 | Code | 11 | | 2 | 00/DD77 : A2 4B | LDX #>CATALOG 6148 | 16 AUXMEM.HOSTFS.s 429 | Code | 11 | | 3 | 00/DD79 : 8E EE 03 | STX {$3EE} 6149 | 16 AUXMEM.HOSTFS.s 429 | Code | 11 | | 1 | 00/DD7C : 78 | SEI ; Disable IRQ before XFER 6150 | 16 AUXMEM.HOSTFS.s 429 | Code | 11 | | 1 | 00/DD7D : BA | TSX 6151 | 16 AUXMEM.HOSTFS.s 429 | Code | 11 | | 3 | 00/DD7E : 8E 01 01 | STX $0101 ; Save alt SP 6152 | 16 AUXMEM.HOSTFS.s 429 | Code | 11 | | 3 | 00/DD81 : AE 00 01 | LDX $0100 ; Load main SP into X 6153 | 16 AUXMEM.HOSTFS.s 429 | Code | 11 | | 1 | 00/DD84 : 18 | CLC ; Use main mem 6154 | 16 AUXMEM.HOSTFS.s 429 | Code | 11 | | 1 | 00/DD85 : B8 | CLV ; Use main ZP and LC 6155 | 16 AUXMEM.HOSTFS.s 429 | Code | 11 | | 3 | 00/DD86 : 4C 14 C3 | JMP {$C314} 6156 | 16 AUXMEM.HOSTFS.s 430 | Macro | 11 | | 0 | 00/DD89 | STARCATRET >>> ENTAUX 6157 | 16 AUXMEM.HOSTFS.s 430 | Code | 11 | | 3 | 00/DD89 : AE 01 01 | LDX $0101 ; Recover alt SP 6158 | 16 AUXMEM.HOSTFS.s 430 | Code | 11 | | 1 | 00/DD8C : 9A | TXS 6159 | 16 AUXMEM.HOSTFS.s 430 | Code | 11 | | 1 | 00/DD8D : 58 | CLI ; Re-enable IRQ after XFER 6160 | 16 AUXMEM.HOSTFS.s 430 | Empty | 11 | | 0 | 00/DD8E | 6161 | 16 AUXMEM.HOSTFS.s 430 | Empty | 11 | | 0 | 00/DD8E | 6162 | 16 AUXMEM.HOSTFS.s 430 | Empty | 11 | | 0 | 00/DD8E | 6163 | 16 AUXMEM.HOSTFS.s 430 | Empty | 11 | | 0 | 00/DD8E | 6164 | 16 AUXMEM.HOSTFS.s 431 | Code | 11 | | 3 | 00/DD8E : 20 64 E1 | JSR CHKERROR ; See if error occurred 6165 | 16 AUXMEM.HOSTFS.s 432 | Code | 11 | | 3 | 00/DD91 : 20 FF EB | JSR FORCENL 6166 | 16 AUXMEM.HOSTFS.s 433 | Code | 11 | | 2 | 00/DD94 : A9 00 | LDA #0 ; 0=OK 6167 | 16 AUXMEM.HOSTFS.s 434 | Code | 11 | | 1 | 00/DD96 : 60 | RTS 6168 | 16 AUXMEM.HOSTFS.s 435 | Empty | 11 | | 0 | 00/DD97 | 6169 | 16 AUXMEM.HOSTFS.s 436 | Comment | 11 | | 0 | 00/DD97 | * Print one block of a catalog. Called by CATALOG 6170 | 16 AUXMEM.HOSTFS.s 437 | Comment | 11 | | 0 | 00/DD97 | * Block is in AUXBLK 6171 | 16 AUXMEM.HOSTFS.s 438 | Macro | 11 | | 0 | 00/DD97 | PRONEBLK >>> ENTAUX 6172 | 16 AUXMEM.HOSTFS.s 438 | Code | 11 | | 3 | 00/DD97 : AE 01 01 | LDX $0101 ; Recover alt SP 6173 | 16 AUXMEM.HOSTFS.s 438 | Code | 11 | | 1 | 00/DD9A : 9A | TXS 6174 | 16 AUXMEM.HOSTFS.s 438 | Code | 11 | | 1 | 00/DD9B : 58 | CLI ; Re-enable IRQ after XFER 6175 | 16 AUXMEM.HOSTFS.s 438 | Empty | 11 | | 0 | 00/DD9C | 6176 | 16 AUXMEM.HOSTFS.s 438 | Empty | 11 | | 0 | 00/DD9C | 6177 | 16 AUXMEM.HOSTFS.s 438 | Empty | 11 | | 0 | 00/DD9C | 6178 | 16 AUXMEM.HOSTFS.s 438 | Empty | 11 | | 0 | 00/DD9C | 6179 | 16 AUXMEM.HOSTFS.s 439 | Code | 11 | | 2 | 00/DD9C : A9 58 | LDA #<AUXBLK+4 ; FSPTR1=>first entry 6180 | 16 AUXMEM.HOSTFS.s 440 | Code | 11 | | 2 | 00/DD9E : 85 C4 | STA {$C4}+0 6181 | 16 AUXMEM.HOSTFS.s 441 | Code | 11 | | 2 | 00/DDA0 : A9 EE | LDA #>AUXBLK+4 6182 | 16 AUXMEM.HOSTFS.s 442 | Code | 11 | | 2 | 00/DDA2 : 85 C5 | STA {$C4}+1 6183 | 16 AUXMEM.HOSTFS.s 443 | Code | 11 | | 2 | 00/DDA4 : A9 0D | LDA #13 ; Max 13 entries per block 6184 | 16 AUXMEM.HOSTFS.s 444 | Code | 11 | | 2 | 00/DDA6 : 85 C8 | STA {$C8} 6185 | 16 AUXMEM.HOSTFS.s 445 | Code | 11 | | 2 | 00/DDA8 : A0 00 | _CATLP LDY #$00 6186 | 16 AUXMEM.HOSTFS.s 446 | Code | 11 | | 2 | 00/DDAA : B1 C4 | LDA ({$C4}),Y ; Get storage type 6187 | 16 AUXMEM.HOSTFS.s 447 | Code | 11 | | 2 | 00/DDAC : C9 E0 | CMP #$E0 6188 | 16 AUXMEM.HOSTFS.s 448 | Code | 11 | | 2 | 00/DDAE : 90 08 | BCC ozunid_186 ; Not a key block 6189 | 16 AUXMEM.HOSTFS.s 449 | Empty | 11 | | 0 | 00/DDB0 | 6190 | 16 AUXMEM.HOSTFS.s 450 | Comment | 11 | | 0 | 00/DDB0 | * Print directory name 6191 | 16 AUXMEM.HOSTFS.s 451 | Code | 11 | | 2 | 00/DDB0 : A9 E3 | LDA #<_DIRM 6192 | 16 AUXMEM.HOSTFS.s 452 | Code | 11 | | 2 | 00/DDB2 : A0 DD | LDY #>_DIRM 6193 | 16 AUXMEM.HOSTFS.s 453 | Code | 11 | | 3 | 00/DDB4 : 20 EB EB | JSR PRSTR 6194 | 16 AUXMEM.HOSTFS.s 454 | Code | 11 | | 1 | 00/DDB7 : 38 | SEC 6195 | 16 AUXMEM.HOSTFS.s 455 | Code | 11 | | 3 | 00/DDB8 : 20 EF DD | ozunid_186 JSR PRONEENT ; CC=entry, CS=header 6196 | 16 AUXMEM.HOSTFS.s 456 | Code | 11 | | 1 | 00/DDBB : 18 | CLC ; Step to next entry 6197 | 16 AUXMEM.HOSTFS.s 457 | Code | 11 | | 2 | 00/DDBC : A5 C4 | LDA {$C4}+0 6198 | 16 AUXMEM.HOSTFS.s 458 | Code | 11 | | 2 | 00/DDBE : 69 27 | ADC #$27 6199 | 16 AUXMEM.HOSTFS.s 459 | Code | 11 | | 2 | 00/DDC0 : 85 C4 | STA {$C4}+0 6200 | 16 AUXMEM.HOSTFS.s 460 | Code | 11 | | 2 | 00/DDC2 : A5 C5 | LDA {$C4}+1 6201 | 16 AUXMEM.HOSTFS.s 461 | Code | 11 | | 2 | 00/DDC4 : 69 00 | ADC #$00 6202 | 16 AUXMEM.HOSTFS.s 462 | Code | 11 | | 2 | 00/DDC6 : 85 C5 | STA {$C4}+1 6203 | 16 AUXMEM.HOSTFS.s 463 | Code | 11 | | 2 | 00/DDC8 : C6 C8 | DEC {$C8} 6204 | 16 AUXMEM.HOSTFS.s 464 | Code | 11 | | 2 | 00/DDCA : D0 DC | BNE _CATLP ; Loop for all entries 6205 | 16 AUXMEM.HOSTFS.s 465 | Macro | 11 | | 0 | 00/DDCC | >>> XF2MAIN,CATALOGRET 6206 | 16 AUXMEM.HOSTFS.s 465 | Empty | 11 | | 0 | 00/DDCC | 6207 | 16 AUXMEM.HOSTFS.s 465 | Empty | 11 | | 0 | 00/DDCC | 6208 | 16 AUXMEM.HOSTFS.s 465 | Empty | 11 | | 0 | 00/DDCC | 6209 | 16 AUXMEM.HOSTFS.s 465 | Empty | 11 | | 0 | 00/DDCC | 6210 | 16 AUXMEM.HOSTFS.s 465 | Code | 11 | | 2 | 00/DDCC : A2 76 | LDX #<CATALOGRET 6211 | 16 AUXMEM.HOSTFS.s 465 | Code | 11 | | 3 | 00/DDCE : 8E ED 03 | STX {$3ED} 6212 | 16 AUXMEM.HOSTFS.s 465 | Code | 11 | | 2 | 00/DDD1 : A2 4C | LDX #>CATALOGRET 6213 | 16 AUXMEM.HOSTFS.s 465 | Code | 11 | | 3 | 00/DDD3 : 8E EE 03 | STX {$3EE} 6214 | 16 AUXMEM.HOSTFS.s 465 | Code | 11 | | 1 | 00/DDD6 : 78 | SEI ; Disable IRQ before XFER 6215 | 16 AUXMEM.HOSTFS.s 465 | Code | 11 | | 1 | 00/DDD7 : BA | TSX 6216 | 16 AUXMEM.HOSTFS.s 465 | Code | 11 | | 3 | 00/DDD8 : 8E 01 01 | STX $0101 ; Save alt SP 6217 | 16 AUXMEM.HOSTFS.s 465 | Code | 11 | | 3 | 00/DDDB : AE 00 01 | LDX $0100 ; Load main SP into X 6218 | 16 AUXMEM.HOSTFS.s 465 | Code | 11 | | 1 | 00/DDDE : 18 | CLC ; Use main mem 6219 | 16 AUXMEM.HOSTFS.s 465 | Code | 11 | | 1 | 00/DDDF : B8 | CLV ; Use main ZP and LC 6220 | 16 AUXMEM.HOSTFS.s 465 | Code | 11 | | 3 | 00/DDE0 : 4C 14 C3 | JMP {$C314} 6221 | 16 AUXMEM.HOSTFS.s 466 | Data | 11 | | 11 | 00/DDE3 : 44 69 72 65 | _DIRM ASC 'Directory: ' | | | | | | 63 74 6F 72 | | | | | | | 79 3A 20 | 6222 | 16 AUXMEM.HOSTFS.s 467 | Data | 11 | | 1 | 00/DDEE : 00 | DB $00 6223 | 16 AUXMEM.HOSTFS.s 468 | Empty | 11 | | 0 | 00/DDEF | 6224 | 16 AUXMEM.HOSTFS.s 469 | Comment | 11 | | 0 | 00/DDEF | * Print a single directory entry 6225 | 16 AUXMEM.HOSTFS.s 470 | Comment | 11 | | 0 | 00/DDEF | * On entry: A = dirent index in AUXBLK 6226 | 16 AUXMEM.HOSTFS.s 471 | Comment | 11 | | 0 | 00/DDEF | * CC=entry, CS=header 6227 | 16 AUXMEM.HOSTFS.s 472 | Code | 11 | | 2 | 00/DDEF : A0 00 | PRONEENT LDY #$00 ; Characters printed 6228 | 16 AUXMEM.HOSTFS.s 473 | Code | 11 | | 2 | 00/DDF1 : B1 C4 | LDA ({$C4}),Y 6229 | 16 AUXMEM.HOSTFS.s 474 | Code | 11 | | 2 | 00/DDF3 : 29 0F | AND #$0F ; Len of filename 6230 | 16 AUXMEM.HOSTFS.s 475 | Code | 11 | | 2 | 00/DDF5 : F0 42 | BEQ NULLENT ; Inactive entry 6231 | 16 AUXMEM.HOSTFS.s 476 | Code | 11 | | 1 | 00/DDF7 : 08 | PHP 6232 | 16 AUXMEM.HOSTFS.s 477 | Code | 11 | | 1 | 00/DDF8 : AA | TAX 6233 | 16 AUXMEM.HOSTFS.s 478 | Code | 11 | | 1 | 00/DDF9 : C8 | ozunid_187 INY 6234 | 16 AUXMEM.HOSTFS.s 479 | Code | 11 | | 2 | 00/DDFA : B1 C4 | LDA ({$C4}),Y 6235 | 16 AUXMEM.HOSTFS.s 480 | Code | 11 | | 3 | 00/DDFC : 20 EE FF | JSR OSWRCH ; Print filename 6236 | 16 AUXMEM.HOSTFS.s 481 | Code | 11 | | 1 | 00/DDFF : CA | DEX 6237 | 16 AUXMEM.HOSTFS.s 482 | Code | 11 | | 2 | 00/DE00 : D0 F7 | BNE ozunid_187 6238 | 16 AUXMEM.HOSTFS.s 483 | Code | 11 | | 1 | 00/DE02 : 28 | ozunid_188 PLP 6239 | 16 AUXMEM.HOSTFS.s 484 | Code | 11 | | 2 | 00/DE03 : B0 0A | BCS _EXITHDR ; Header entry, no info 6240 | 16 AUXMEM.HOSTFS.s 485 | Code | 11 | | 3 | 00/DE05 : 20 31 DE | JSR PRSPACES ; Pad after filename 6241 | 16 AUXMEM.HOSTFS.s 486 | Code | 11 | | 2 | 00/DE08 : 24 C2 | BIT {$C2} 6242 | 16 AUXMEM.HOSTFS.s 487 | Code | 11 | | 2 | 00/DE0A : 30 06 | BMI _CATINFO ; Display object info 6243 | 16 AUXMEM.HOSTFS.s 488 | Code | 11 | | 3 | 00/DE0C : 4C 9E DE | JMP PRACCESS 6244 | 16 AUXMEM.HOSTFS.s 489 | Code | 11 | | 3 | 00/DE0F : 4C E7 FF | _EXITHDR JMP OSNEWL 6245 | 16 AUXMEM.HOSTFS.s 490 | Empty | 11 | | 0 | 00/DE12 | 6246 | 16 AUXMEM.HOSTFS.s 491 | Comment | 11 | | 0 | 00/DE12 | * Print object catalog info 6247 | 16 AUXMEM.HOSTFS.s 492 | Code | 11 | | 2 | 00/DE12 : A0 21 | _CATINFO LDY #$21 6248 | 16 AUXMEM.HOSTFS.s 493 | Code | 11 | | 2 | 00/DE14 : A2 03 | LDX #3 6249 | 16 AUXMEM.HOSTFS.s 494 | Code | 11 | | 2 | 00/DE16 : A9 00 | LDA #0 6250 | 16 AUXMEM.HOSTFS.s 495 | Code | 11 | | 3 | 00/DE18 : 20 DA DE | JSR PRADDR0 6251 | 16 AUXMEM.HOSTFS.s 496 | Code | 11 | | 2 | 00/DE1B : A9 2B | LDA #'+' 6252 | 16 AUXMEM.HOSTFS.s 497 | Code | 11 | | 3 | 00/DE1D : 20 EE FF | JSR OSWRCH 6253 | 16 AUXMEM.HOSTFS.s 498 | Code | 11 | | 2 | 00/DE20 : A0 17 | LDY #$17 6254 | 16 AUXMEM.HOSTFS.s 499 | Code | 11 | | 3 | 00/DE22 : 20 D6 DE | JSR PRADDR 6255 | 16 AUXMEM.HOSTFS.s 500 | Code | 11 | | 3 | 00/DE25 : 20 E2 DE | JSR PRSPACE 6256 | 16 AUXMEM.HOSTFS.s 501 | Code | 11 | | 3 | 00/DE28 : 20 9E DE | JSR PRACCESS 6257 | 16 AUXMEM.HOSTFS.s 502 | Code | 11 | | 2 | 00/DE2B : 24 E3 | BIT {$E3} 6258 | 16 AUXMEM.HOSTFS.s 503 | Code | 11 | | 2 | 00/DE2D : 30 0B | BMI CATLONG ; *OPT 1,2 - detailed EX display 6259 | 16 AUXMEM.HOSTFS.s 504 | Code | 11 | | 2 | 00/DE2F : A0 0A | LDY #$0A 6260 | 16 AUXMEM.HOSTFS.s 505 | Code | 11 | | 3 | 00/DE31 : 20 E2 DE | PRSPACES JSR PRSPACE 6261 | 16 AUXMEM.HOSTFS.s 506 | Code | 11 | | 1 | 00/DE34 : C8 | INY 6262 | 16 AUXMEM.HOSTFS.s 507 | Code | 11 | | 2 | 00/DE35 : C0 10 | CPY #$10 6263 | 16 AUXMEM.HOSTFS.s 508 | Code | 11 | | 2 | 00/DE37 : 90 F8 | BCC PRSPACES 6264 | 16 AUXMEM.HOSTFS.s 509 | Code | 11 | | 1 | 00/DE39 : 60 | NULLENT RTS 6265 | 16 AUXMEM.HOSTFS.s 510 | Empty | 11 | | 0 | 00/DE3A | 6266 | 16 AUXMEM.HOSTFS.s 511 | Comment | 11 | | 0 | 00/DE3A | * Print extended catalog info 6267 | 16 AUXMEM.HOSTFS.s 512 | Code | 11 | | 2 | 00/DE3A : A0 21 | CATLONG LDY #$21 6268 | 16 AUXMEM.HOSTFS.s 513 | Code | 11 | | 3 | 00/DE3C : 20 47 DE | JSR PRDATETIME 6269 | 16 AUXMEM.HOSTFS.s 514 | Code | 11 | | 2 | 00/DE3F : A0 18 | LDY #$18 6270 | 16 AUXMEM.HOSTFS.s 515 | Code | 11 | | 3 | 00/DE41 : 20 47 DE | JSR PRDATETIME 6271 | 16 AUXMEM.HOSTFS.s 516 | Code | 11 | | 3 | 00/DE44 : 4C E7 FF | JMP OSNEWL 6272 | 16 AUXMEM.HOSTFS.s 517 | Code | 11 | | 3 | 00/DE47 : 20 E2 DE | PRDATETIME JSR PRSPACE 6273 | 16 AUXMEM.HOSTFS.s 518 | Code | 11 | | 3 | 00/DE4A : 20 E2 DE | JSR PRSPACE 6274 | 16 AUXMEM.HOSTFS.s 519 | Code | 11 | | 2 | 00/DE4D : B1 C4 | LDA ({$C4}),Y 6275 | 16 AUXMEM.HOSTFS.s 520 | Code | 11 | | 1 | 00/DE4F : 48 | PHA 6276 | 16 AUXMEM.HOSTFS.s 521 | Code | 11 | | 2 | 00/DE50 : 29 1F | AND #$1F 6277 | 16 AUXMEM.HOSTFS.s 522 | Code | 11 | | 3 | 00/DE52 : 20 96 DE | JSR PRDECSLH ; Day 6278 | 16 AUXMEM.HOSTFS.s 523 | Code | 11 | | 1 | 00/DE55 : C8 | INY 6279 | 16 AUXMEM.HOSTFS.s 524 | Code | 11 | | 2 | 00/DE56 : B1 C4 | LDA ({$C4}),Y 6280 | 16 AUXMEM.HOSTFS.s 525 | Code | 11 | | 1 | 00/DE58 : 0A | ASL A 6281 | 16 AUXMEM.HOSTFS.s 526 | Code | 11 | | 1 | 00/DE59 : 68 | PLA 6282 | 16 AUXMEM.HOSTFS.s 527 | Code | 11 | | 1 | 00/DE5A : 2A | ROL A 6283 | 16 AUXMEM.HOSTFS.s 528 | Code | 11 | | 1 | 00/DE5B : 2A | ROL A 6284 | 16 AUXMEM.HOSTFS.s 529 | Code | 11 | | 1 | 00/DE5C : 2A | ROL A 6285 | 16 AUXMEM.HOSTFS.s 530 | Code | 11 | | 1 | 00/DE5D : 2A | ROL A 6286 | 16 AUXMEM.HOSTFS.s 531 | Code | 11 | | 2 | 00/DE5E : 29 0F | AND #$0F 6287 | 16 AUXMEM.HOSTFS.s 532 | Code | 11 | | 3 | 00/DE60 : 20 96 DE | JSR PRDECSLH ; Month 6288 | 16 AUXMEM.HOSTFS.s 533 | Code | 11 | | 2 | 00/DE63 : B1 C4 | LDA ({$C4}),Y 6289 | 16 AUXMEM.HOSTFS.s 534 | Code | 11 | | 1 | 00/DE65 : 48 | PHA 6290 | 16 AUXMEM.HOSTFS.s 535 | Code | 11 | | 2 | 00/DE66 : C9 50 | CMP #80 6291 | 16 AUXMEM.HOSTFS.s 536 | Code | 11 | | 2 | 00/DE68 : A9 19 | LDA #$19 6292 | 16 AUXMEM.HOSTFS.s 537 | Code | 11 | | 2 | 00/DE6A : B0 02 | BCS _CENTURY 6293 | 16 AUXMEM.HOSTFS.s 538 | Code | 11 | | 2 | 00/DE6C : A9 20 | LDA #$20 6294 | 16 AUXMEM.HOSTFS.s 539 | Code | 11 | | 3 | 00/DE6E : 20 AA FF | _CENTURY JSR PRHEX ; Century 6295 | 16 AUXMEM.HOSTFS.s 540 | Code | 11 | | 1 | 00/DE71 : 68 | PLA 6296 | 16 AUXMEM.HOSTFS.s 541 | Code | 11 | | 1 | 00/DE72 : 4A | LSR A 6297 | 16 AUXMEM.HOSTFS.s 542 | Code | 11 | | 3 | 00/DE73 : 20 88 DE | JSR PRDEC ; Year 6298 | 16 AUXMEM.HOSTFS.s 543 | Code | 11 | | 3 | 00/DE76 : 20 E2 DE | JSR PRSPACE 6299 | 16 AUXMEM.HOSTFS.s 544 | Code | 11 | | 1 | 00/DE79 : C8 | INY 6300 | 16 AUXMEM.HOSTFS.s 545 | Code | 11 | | 1 | 00/DE7A : C8 | INY 6301 | 16 AUXMEM.HOSTFS.s 546 | Code | 11 | | 2 | 00/DE7B : B1 C4 | LDA ({$C4}),Y 6302 | 16 AUXMEM.HOSTFS.s 547 | Code | 11 | | 3 | 00/DE7D : 20 88 DE | JSR PRDEC ; Hour 6303 | 16 AUXMEM.HOSTFS.s 548 | Code | 11 | | 2 | 00/DE80 : A9 3A | LDA #$3A 6304 | 16 AUXMEM.HOSTFS.s 549 | Code | 11 | | 3 | 00/DE82 : 20 EE FF | JSR OSWRCH 6305 | 16 AUXMEM.HOSTFS.s 550 | Code | 11 | | 1 | 00/DE85 : 88 | DEY 6306 | 16 AUXMEM.HOSTFS.s 551 | Code | 11 | | 2 | 00/DE86 : B1 C4 | LDA ({$C4}),Y ; Minute 6307 | 16 AUXMEM.HOSTFS.s 552 | Code | 11 | | 1 | 00/DE88 : AA | PRDEC TAX 6308 | 16 AUXMEM.HOSTFS.s 553 | Code | 11 | | 2 | 00/DE89 : A9 99 | LDA #$99 6309 | 16 AUXMEM.HOSTFS.s 554 | Code | 11 | | 1 | 00/DE8B : F8 | SED 6310 | 16 AUXMEM.HOSTFS.s 555 | Code | 11 | | 1 | 00/DE8C : 18 | _PRDECLP CLC 6311 | 16 AUXMEM.HOSTFS.s 556 | Code | 11 | | 2 | 00/DE8D : 69 01 | ADC #$01 6312 | 16 AUXMEM.HOSTFS.s 557 | Code | 11 | | 1 | 00/DE8F : CA | DEX 6313 | 16 AUXMEM.HOSTFS.s 558 | Code | 11 | | 2 | 00/DE90 : 10 FA | BPL _PRDECLP 6314 | 16 AUXMEM.HOSTFS.s 559 | Code | 11 | | 1 | 00/DE92 : D8 | CLD 6315 | 16 AUXMEM.HOSTFS.s 560 | Code | 11 | | 3 | 00/DE93 : 4C AA FF | JMP PRHEX 6316 | 16 AUXMEM.HOSTFS.s 561 | Code | 11 | | 3 | 00/DE96 : 20 88 DE | PRDECSLH JSR PRDEC 6317 | 16 AUXMEM.HOSTFS.s 562 | Code | 11 | | 2 | 00/DE99 : A9 2F | LDA #'/' 6318 | 16 AUXMEM.HOSTFS.s 563 | Code | 11 | | 3 | 00/DE9B : 4C EE FF | JMP OSWRCH 6319 | 16 AUXMEM.HOSTFS.s 564 | Empty | 11 | | 0 | 00/DE9E | 6320 | 16 AUXMEM.HOSTFS.s 565 | Comment | 11 | | 0 | 00/DE9E | * Print object access string 6321 | 16 AUXMEM.HOSTFS.s 566 | Code | 11 | | 2 | 00/DE9E : A2 04 | PRACCESS LDX #$04 ; Offset to 'D' char 6322 | 16 AUXMEM.HOSTFS.s 567 | Code | 11 | | 2 | 00/DEA0 : A0 00 | LDY #$00 6323 | 16 AUXMEM.HOSTFS.s 568 | Code | 11 | | 2 | 00/DEA2 : B1 C4 | LDA ({$C4}),Y 6324 | 16 AUXMEM.HOSTFS.s 569 | Code | 11 | | 2 | 00/DEA4 : C9 D0 | CMP #$D0 ; CS=Directory 6325 | 16 AUXMEM.HOSTFS.s 570 | Code | 11 | | 2 | 00/DEA6 : A0 1E | LDY #$1E 6326 | 16 AUXMEM.HOSTFS.s 571 | Code | 11 | | 2 | 00/DEA8 : B1 C4 | LDA ({$C4}),Y ; Permission byte 6327 | 16 AUXMEM.HOSTFS.s 572 | Code | 11 | | 2 | 00/DEAA : A0 0C | LDY #$0C ; Char counter 6328 | 16 AUXMEM.HOSTFS.s 573 | Code | 11 | | 2 | 00/DEAC : 49 C0 | EOR #$C0 6329 | 16 AUXMEM.HOSTFS.s 574 | Comment | 11 | | 0 | 00/DEAE | * AND #$E3 ; Keep LLB---WR 6330 | 16 AUXMEM.HOSTFS.s 575 | Code | 11 | | 2 | 00/DEAE : 29 C3 | AND #$C3 ; Keep LL----WR 6331 | 16 AUXMEM.HOSTFS.s 576 | Code | 11 | | 2 | 00/DEB0 : 90 02 | BCC _PRACC1 ; Not a directory 6332 | 16 AUXMEM.HOSTFS.s 577 | Code | 11 | | 2 | 00/DEB2 : 29 FC | AND #$FC ; Drop 'WR' bits 6333 | 16 AUXMEM.HOSTFS.s 578 | Code | 11 | | 2 | 00/DEB4 : 85 C9 | _PRACC1 STA {{$C8}+1} 6334 | 16 AUXMEM.HOSTFS.s 579 | Code | 11 | | 2 | 00/DEB6 : B0 07 | BCS _PRACC2 ; Jump to print 'D' 6335 | 16 AUXMEM.HOSTFS.s 580 | Code | 11 | | 2 | 00/DEB8 : A5 C9 | _PRACCLP LDA {{$C8}+1} 6336 | 16 AUXMEM.HOSTFS.s 581 | Code | 11 | | 3 | 00/DEBA : 3D D1 DE | AND ACCESSBITS,X ; Is bit set? 6337 | 16 AUXMEM.HOSTFS.s 582 | Code | 11 | | 2 | 00/DEBD : F0 07 | BEQ _PRACC3 6338 | 16 AUXMEM.HOSTFS.s 583 | Code | 11 | | 3 | 00/DEBF : BD CC DE | _PRACC2 LDA ACCESSCHRS,X ; If so, print character 6339 | 16 AUXMEM.HOSTFS.s 584 | Code | 11 | | 3 | 00/DEC2 : 20 EE FF | JSR OSWRCH 6340 | 16 AUXMEM.HOSTFS.s 585 | Code | 11 | | 1 | 00/DEC5 : C8 | INY ; Inc. char counter 6341 | 16 AUXMEM.HOSTFS.s 586 | Code | 11 | | 1 | 00/DEC6 : CA | _PRACC3 DEX 6342 | 16 AUXMEM.HOSTFS.s 587 | Code | 11 | | 2 | 00/DEC7 : 10 EF | BPL _PRACCLP ; Loop for all chars 6343 | 16 AUXMEM.HOSTFS.s 588 | Code | 11 | | 3 | 00/DEC9 : 4C 31 DE | JMP PRSPACES ; Pad 6344 | 16 AUXMEM.HOSTFS.s 589 | Empty | 11 | | 0 | 00/DECC | 6345 | 16 AUXMEM.HOSTFS.s 590 | Comment | 11 | | 0 | 00/DECC | * LDX #$04 ; Offset to chars 6346 | 16 AUXMEM.HOSTFS.s 591 | Comment | 11 | | 0 | 00/DECC | * LDY #$1E 6347 | 16 AUXMEM.HOSTFS.s 592 | Comment | 11 | | 0 | 00/DECC | * LDA (FSPTR1),Y 6348 | 16 AUXMEM.HOSTFS.s 593 | Comment | 11 | | 0 | 00/DECC | * PHA 6349 | 16 AUXMEM.HOSTFS.s 594 | Comment | 11 | | 0 | 00/DECC | * LDY #$00 ; Chars printed 6350 | 16 AUXMEM.HOSTFS.s 595 | Comment | 11 | | 0 | 00/DECC | * LDA (FSPTR1),Y 6351 | 16 AUXMEM.HOSTFS.s 596 | Comment | 11 | | 0 | 00/DECC | * CMP #$D0 6352 | 16 AUXMEM.HOSTFS.s 597 | Comment | 11 | | 0 | 00/DECC | * JSR :PRACCCHR ; 'D' 6353 | 16 AUXMEM.HOSTFS.s 598 | Comment | 11 | | 0 | 00/DECC | * PLA 6354 | 16 AUXMEM.HOSTFS.s 599 | Comment | 11 | | 0 | 00/DECC | * CPY #$01 ; Has 'D' been printed? 6355 | 16 AUXMEM.HOSTFS.s 600 | Comment | 11 | | 0 | 00/DECC | * PHP 6356 | 16 AUXMEM.HOSTFS.s 601 | Comment | 11 | | 0 | 00/DECC | * PHA 6357 | 16 AUXMEM.HOSTFS.s 602 | Comment | 11 | | 0 | 00/DECC | * EOR #$C0 6358 | 16 AUXMEM.HOSTFS.s 603 | Comment | 11 | | 0 | 00/DECC | * CMP #$40 6359 | 16 AUXMEM.HOSTFS.s 604 | Comment | 11 | | 0 | 00/DECC | * JSR :PRACCCHR ; 'L' 6360 | 16 AUXMEM.HOSTFS.s 605 | Comment | 11 | | 0 | 00/DECC | * PLA 6361 | 16 AUXMEM.HOSTFS.s 606 | Comment | 11 | | 0 | 00/DECC | * PLP 6362 | 16 AUXMEM.HOSTFS.s 607 | Comment | 11 | | 0 | 00/DECC | * BCS :PRACCDONE ; Dir, skip 'WR' 6363 | 16 AUXMEM.HOSTFS.s 608 | Comment | 11 | | 0 | 00/DECC | * ROR A 6364 | 16 AUXMEM.HOSTFS.s 609 | Comment | 11 | | 0 | 00/DECC | * PHP 6365 | 16 AUXMEM.HOSTFS.s 610 | Comment | 11 | | 0 | 00/DECC | * ROR A 6366 | 16 AUXMEM.HOSTFS.s 611 | Comment | 11 | | 0 | 00/DECC | * JSR :PRACCCHR ; 'W' 6367 | 16 AUXMEM.HOSTFS.s 612 | Comment | 11 | | 0 | 00/DECC | * PLP 6368 | 16 AUXMEM.HOSTFS.s 613 | Comment | 11 | | 0 | 00/DECC | * JSR :PRACCCHR ; 'R' 6369 | 16 AUXMEM.HOSTFS.s 614 | Comment | 11 | | 0 | 00/DECC | *:PRACCDONE LDA #$20 6370 | 16 AUXMEM.HOSTFS.s 615 | Comment | 11 | | 0 | 00/DECC | *:PRACCLP JSR :PRSPACE 6371 | 16 AUXMEM.HOSTFS.s 616 | Comment | 11 | | 0 | 00/DECC | * CPY #$04 6372 | 16 AUXMEM.HOSTFS.s 617 | Comment | 11 | | 0 | 00/DECC | * BCC :PRACCLP 6373 | 16 AUXMEM.HOSTFS.s 618 | Comment | 11 | | 0 | 00/DECC | *:PRSKIP RTS 6374 | 16 AUXMEM.HOSTFS.s 619 | Comment | 11 | | 0 | 00/DECC | *:PRACCCHR DEX 6375 | 16 AUXMEM.HOSTFS.s 620 | Comment | 11 | | 0 | 00/DECC | * BCC :PRSKIP 6376 | 16 AUXMEM.HOSTFS.s 621 | Comment | 11 | | 0 | 00/DECC | * LDA ACCESSCHRS,X 6377 | 16 AUXMEM.HOSTFS.s 622 | Comment | 11 | | 0 | 00/DECC | *:PRSPACE INY 6378 | 16 AUXMEM.HOSTFS.s 623 | Comment | 11 | | 0 | 00/DECC | * JMP OSWRCH 6379 | 16 AUXMEM.HOSTFS.s 624 | Empty | 11 | | 0 | 00/DECC | 6380 | 16 AUXMEM.HOSTFS.s 625 | Data | 11 | | 5 | 00/DECC : 52 57 42 4C | ACCESSCHRS ASC 'RWBLD' | | | | | | 44 | 6381 | 16 AUXMEM.HOSTFS.s 626 | Data | 11 | | 5 | 00/DED1 : 01 02 20 C0 | ACCESSBITS DB $01,$02,$20,$C0,$00 | | | | | | 00 | 6382 | 16 AUXMEM.HOSTFS.s 627 | Empty | 11 | | 0 | 00/DED6 | 6383 | 16 AUXMEM.HOSTFS.s 628 | Comment | 11 | | 0 | 00/DED6 | * Print object addresses 6384 | 16 AUXMEM.HOSTFS.s 629 | Code | 11 | | 2 | 00/DED6 : A2 03 | PRADDR LDX #3 6385 | 16 AUXMEM.HOSTFS.s 630 | Code | 11 | | 2 | 00/DED8 : B1 C4 | PRADDRLP LDA ({$C4}),Y 6386 | 16 AUXMEM.HOSTFS.s 631 | Code | 11 | | 3 | 00/DEDA : 20 0F EC | PRADDR0 JSR OUTHEX 6387 | 16 AUXMEM.HOSTFS.s 632 | Code | 11 | | 1 | 00/DEDD : 88 | DEY 6388 | 16 AUXMEM.HOSTFS.s 633 | Code | 11 | | 1 | 00/DEDE : CA | DEX 6389 | 16 AUXMEM.HOSTFS.s 634 | Code | 11 | | 2 | 00/DEDF : D0 F7 | BNE PRADDRLP 6390 | 16 AUXMEM.HOSTFS.s 635 | Code | 11 | | 1 | 00/DEE1 : 60 | PRADDROK RTS 6391 | 16 AUXMEM.HOSTFS.s 636 | Code | 11 | | 2 | 00/DEE2 : A9 20 | PRSPACE LDA #' ' 6392 | 16 AUXMEM.HOSTFS.s 637 | Code | 11 | | 3 | 00/DEE4 : 4C EE FF | PRCHAR JMP OSWRCH 6393 | 16 AUXMEM.HOSTFS.s 638 | Empty | 11 | | 0 | 00/DEE7 | 6394 | 16 AUXMEM.HOSTFS.s 639 | Empty | 11 | | 0 | 00/DEE7 | 6395 | 16 AUXMEM.HOSTFS.s 640 | Comment | 11 | | 0 | 00/DEE7 | * OSFSC $0C - RENAME function 6396 | 16 AUXMEM.HOSTFS.s 641 | Comment | 11 | | 0 | 00/DEE7 | * XY=>pathnames 6397 | 16 AUXMEM.HOSTFS.s 642 | Comment | 11 | | 0 | 00/DEE7 | * 6398 | 16 AUXMEM.HOSTFS.s 643 | Code | 11 | | 3 | 00/DEE7 : 20 06 E1 | FSCRENAME JSR PARSNAME ; Copy Arg1->MOSFILE 6399 | 16 AUXMEM.HOSTFS.s 644 | Code | 11 | | 2 | 00/DEEA : F0 1C | BEQ ozunid_189 ; No <oldname> 6400 | 16 AUXMEM.HOSTFS.s 645 | Code | 11 | | 3 | 00/DEEC : 20 37 E1 | JSR PARSLPTR2 ; Copy Arg2->MOSFILE2 6401 | 16 AUXMEM.HOSTFS.s 646 | Code | 11 | | 2 | 00/DEEF : F0 17 | BEQ ozunid_189 ; No <newname> 6402 | 16 AUXMEM.HOSTFS.s 647 | Macro | 11 | | 0 | 00/DEF1 | >>> XF2MAIN,RENFILE 6403 | 16 AUXMEM.HOSTFS.s 647 | Empty | 11 | | 0 | 00/DEF1 | 6404 | 16 AUXMEM.HOSTFS.s 647 | Empty | 11 | | 0 | 00/DEF1 | 6405 | 16 AUXMEM.HOSTFS.s 647 | Empty | 11 | | 0 | 00/DEF1 | 6406 | 16 AUXMEM.HOSTFS.s 647 | Empty | 11 | | 0 | 00/DEF1 | 6407 | 16 AUXMEM.HOSTFS.s 647 | Code | 11 | | 2 | 00/DEF1 : A2 AF | LDX #<RENFILE 6408 | 16 AUXMEM.HOSTFS.s 647 | Code | 11 | | 3 | 00/DEF3 : 8E ED 03 | STX {$3ED} 6409 | 16 AUXMEM.HOSTFS.s 647 | Code | 11 | | 2 | 00/DEF6 : A2 44 | LDX #>RENFILE 6410 | 16 AUXMEM.HOSTFS.s 647 | Code | 11 | | 3 | 00/DEF8 : 8E EE 03 | STX {$3EE} 6411 | 16 AUXMEM.HOSTFS.s 647 | Code | 11 | | 1 | 00/DEFB : 78 | SEI ; Disable IRQ before XFER 6412 | 16 AUXMEM.HOSTFS.s 647 | Code | 11 | | 1 | 00/DEFC : BA | TSX 6413 | 16 AUXMEM.HOSTFS.s 647 | Code | 11 | | 3 | 00/DEFD : 8E 01 01 | STX $0101 ; Save alt SP 6414 | 16 AUXMEM.HOSTFS.s 647 | Code | 11 | | 3 | 00/DF00 : AE 00 01 | LDX $0100 ; Load main SP into X 6415 | 16 AUXMEM.HOSTFS.s 647 | Code | 11 | | 1 | 00/DF03 : 18 | CLC ; Use main mem 6416 | 16 AUXMEM.HOSTFS.s 647 | Code | 11 | | 1 | 00/DF04 : B8 | CLV ; Use main ZP and LC 6417 | 16 AUXMEM.HOSTFS.s 647 | Code | 11 | | 3 | 00/DF05 : 4C 14 C3 | JMP {$C314} 6418 | 16 AUXMEM.HOSTFS.s 648 | Code | 11 | | 1 | 00/DF08 : 00 | ozunid_189 BRK 6419 | 16 AUXMEM.HOSTFS.s 649 | Data | 11 | | 1 | 00/DF09 : DC | DB $DC 6420 | 16 AUXMEM.HOSTFS.s 650 | Data | 11 | | 34 | 00/DF0A : 53 79 6E 74 | ASC 'Syntax: RENAME <oldspec> <newspec>' | | | | | | 61 78 3A 20 | | | | | | | 52 45 4E 41 | | | | | | | 4D 45 20 3C | | | | | | | 6F 6C 64 73 | | | | | | | 70 65 63 3E | | | | | | | 20 3C 6E 65 | | | | | | | 77 73 70 65 | | | | | | | 63 3E | 6421 | 16 AUXMEM.HOSTFS.s 651 | Code | 11 | | 1 | 00/DF2C : 00 | BRK 6422 | 16 AUXMEM.HOSTFS.s 652 | Comment | 11 | | 0 | 00/DF2D | * ProDOS returns $40 (Bad filename) for bad renames. 6423 | 16 AUXMEM.HOSTFS.s 653 | Comment | 11 | | 0 | 00/DF2D | * Not easy to seperate out, so leave as Bad filename error. 6424 | 16 AUXMEM.HOSTFS.s 654 | Empty | 11 | | 0 | 00/DF2D | ACCRET 6425 | 16 AUXMEM.HOSTFS.s 655 | Empty | 11 | | 0 | 00/DF2D | RENRET 6426 | 16 AUXMEM.HOSTFS.s 656 | Empty | 11 | | 0 | 00/DF2D | COPYRET 6427 | 16 AUXMEM.HOSTFS.s 657 | Empty | 11 | | 0 | 00/DF2D | DESTRET 6428 | 16 AUXMEM.HOSTFS.s 658 | Macro | 11 | | 0 | 00/DF2D | CHDIRRET >>> ENTAUX 6429 | 16 AUXMEM.HOSTFS.s 658 | Code | 11 | | 3 | 00/DF2D : AE 01 01 | LDX $0101 ; Recover alt SP 6430 | 16 AUXMEM.HOSTFS.s 658 | Code | 11 | | 1 | 00/DF30 : 9A | TXS 6431 | 16 AUXMEM.HOSTFS.s 658 | Code | 11 | | 1 | 00/DF31 : 58 | CLI ; Re-enable IRQ after XFER 6432 | 16 AUXMEM.HOSTFS.s 658 | Empty | 11 | | 0 | 00/DF32 | 6433 | 16 AUXMEM.HOSTFS.s 658 | Empty | 11 | | 0 | 00/DF32 | 6434 | 16 AUXMEM.HOSTFS.s 658 | Empty | 11 | | 0 | 00/DF32 | 6435 | 16 AUXMEM.HOSTFS.s 658 | Empty | 11 | | 0 | 00/DF32 | 6436 | 16 AUXMEM.HOSTFS.s 659 | Code | 11 | | 3 | 00/DF32 : 4C 64 E1 | JMP CHKERROR 6437 | 16 AUXMEM.HOSTFS.s 660 | Empty | 11 | | 0 | 00/DF35 | 6438 | 16 AUXMEM.HOSTFS.s 661 | Empty | 11 | | 0 | 00/DF35 | 6439 | 16 AUXMEM.HOSTFS.s 662 | Comment | 11 | | 0 | 00/DF35 | * Handle *COPY command 6440 | 16 AUXMEM.HOSTFS.s 663 | Comment | 11 | | 0 | 00/DF35 | * LPTR=>parameters string 6441 | 16 AUXMEM.HOSTFS.s 664 | Comment | 11 | | 0 | 00/DF35 | * 6442 | 16 AUXMEM.HOSTFS.s 665 | Code | 11 | | 3 | 00/DF35 : 20 09 E1 | FSCCOPY JSR PARSLPTR ; Copy Arg1->MOSFILE 6443 | 16 AUXMEM.HOSTFS.s 666 | Code | 11 | | 2 | 00/DF38 : F0 1C | BEQ ozunid_190 ; No <source> 6444 | 16 AUXMEM.HOSTFS.s 667 | Code | 11 | | 3 | 00/DF3A : 20 37 E1 | JSR PARSLPTR2 ; Copy Arg2->MOSFILE2 6445 | 16 AUXMEM.HOSTFS.s 668 | Code | 11 | | 2 | 00/DF3D : F0 17 | BEQ ozunid_190 ; No <dest> 6446 | 16 AUXMEM.HOSTFS.s 669 | Macro | 11 | | 0 | 00/DF3F | >>> XF2MAIN,COPYFILE ; Do the heavy lifting 6447 | 16 AUXMEM.HOSTFS.s 669 | Empty | 11 | | 0 | 00/DF3F | 6448 | 16 AUXMEM.HOSTFS.s 669 | Empty | 11 | | 0 | 00/DF3F | 6449 | 16 AUXMEM.HOSTFS.s 669 | Empty | 11 | | 0 | 00/DF3F | 6450 | 16 AUXMEM.HOSTFS.s 669 | Empty | 11 | | 0 | 00/DF3F | 6451 | 16 AUXMEM.HOSTFS.s 669 | Code | 11 | | 2 | 00/DF3F : A2 FB | LDX #<COPYFILE 6452 | 16 AUXMEM.HOSTFS.s 669 | Code | 11 | | 3 | 00/DF41 : 8E ED 03 | STX {$3ED} 6453 | 16 AUXMEM.HOSTFS.s 669 | Code | 11 | | 2 | 00/DF44 : A2 44 | LDX #>COPYFILE 6454 | 16 AUXMEM.HOSTFS.s 669 | Code | 11 | | 3 | 00/DF46 : 8E EE 03 | STX {$3EE} 6455 | 16 AUXMEM.HOSTFS.s 669 | Code | 11 | | 1 | 00/DF49 : 78 | SEI ; Disable IRQ before XFER 6456 | 16 AUXMEM.HOSTFS.s 669 | Code | 11 | | 1 | 00/DF4A : BA | TSX 6457 | 16 AUXMEM.HOSTFS.s 669 | Code | 11 | | 3 | 00/DF4B : 8E 01 01 | STX $0101 ; Save alt SP 6458 | 16 AUXMEM.HOSTFS.s 669 | Code | 11 | | 3 | 00/DF4E : AE 00 01 | LDX $0100 ; Load main SP into X 6459 | 16 AUXMEM.HOSTFS.s 669 | Code | 11 | | 1 | 00/DF51 : 18 | CLC ; Use main mem 6460 | 16 AUXMEM.HOSTFS.s 669 | Code | 11 | | 1 | 00/DF52 : B8 | CLV ; Use main ZP and LC 6461 | 16 AUXMEM.HOSTFS.s 669 | Code | 11 | | 3 | 00/DF53 : 4C 14 C3 | JMP {$C314} 6462 | 16 AUXMEM.HOSTFS.s 670 | Code | 11 | | 1 | 00/DF56 : 00 | ozunid_190 BRK 6463 | 16 AUXMEM.HOSTFS.s 671 | Data | 11 | | 1 | 00/DF57 : DC | DB $DC 6464 | 16 AUXMEM.HOSTFS.s 672 | Data | 11 | | 33 | 00/DF58 : 53 79 6E 74 | ASC 'Syntax: COPY <srcspec> <destspec>' | | | | | | 61 78 3A 20 | | | | | | | 43 4F 50 59 | | | | | | | 20 3C 73 72 | | | | | | | 63 73 70 65 | | | | | | | 63 3E 20 3C | | | | | | | 64 65 73 74 | | | | | | | 73 70 65 63 | | | | | | | 3E | 6465 | 16 AUXMEM.HOSTFS.s 673 | Code | 11 | | 1 | 00/DF79 : 00 | BRK 6466 | 16 AUXMEM.HOSTFS.s 674 | Empty | 11 | | 0 | 00/DF7A | 6467 | 16 AUXMEM.HOSTFS.s 675 | Empty | 11 | | 0 | 00/DF7A | 6468 | 16 AUXMEM.HOSTFS.s 676 | Comment | 11 | | 0 | 00/DF7A | * Handle *DIR/*CHDIR/*CD (directory change) command 6469 | 16 AUXMEM.HOSTFS.s 677 | Comment | 11 | | 0 | 00/DF7A | * LPTR=>parameters string 6470 | 16 AUXMEM.HOSTFS.s 678 | Comment | 11 | | 0 | 00/DF7A | * 6471 | 16 AUXMEM.HOSTFS.s 679 | Code | 11 | | 3 | 00/DF7A : 20 09 E1 | FSCCHDIR JSR PARSLPTR ; Copy filename->MOSFILE 6472 | 16 AUXMEM.HOSTFS.s 680 | Code | 11 | | 2 | 00/DF7D : F0 19 | BEQ ERRCHDIR ; No <dir> 6473 | 16 AUXMEM.HOSTFS.s 681 | Code | 11 | | 2 | 00/DF7F : A0 00 | LDY #$00 ; Y=$00 - CHDIR 6474 | 16 AUXMEM.HOSTFS.s 682 | Macro | 11 | | 0 | 00/DF81 | FSCCHDIR2 >>> XF2MAIN,SETPFX 6475 | 16 AUXMEM.HOSTFS.s 682 | Empty | 11 | | 0 | 00/DF81 | 6476 | 16 AUXMEM.HOSTFS.s 682 | Empty | 11 | | 0 | 00/DF81 | 6477 | 16 AUXMEM.HOSTFS.s 682 | Empty | 11 | | 0 | 00/DF81 | 6478 | 16 AUXMEM.HOSTFS.s 682 | Empty | 11 | | 0 | 00/DF81 | 6479 | 16 AUXMEM.HOSTFS.s 682 | Code | 11 | | 2 | 00/DF81 : A2 B2 | LDX #<SETPFX 6480 | 16 AUXMEM.HOSTFS.s 682 | Code | 11 | | 3 | 00/DF83 : 8E ED 03 | STX {$3ED} 6481 | 16 AUXMEM.HOSTFS.s 682 | Code | 11 | | 2 | 00/DF86 : A2 4C | LDX #>SETPFX 6482 | 16 AUXMEM.HOSTFS.s 682 | Code | 11 | | 3 | 00/DF88 : 8E EE 03 | STX {$3EE} 6483 | 16 AUXMEM.HOSTFS.s 682 | Code | 11 | | 1 | 00/DF8B : 78 | SEI ; Disable IRQ before XFER 6484 | 16 AUXMEM.HOSTFS.s 682 | Code | 11 | | 1 | 00/DF8C : BA | TSX 6485 | 16 AUXMEM.HOSTFS.s 682 | Code | 11 | | 3 | 00/DF8D : 8E 01 01 | STX $0101 ; Save alt SP 6486 | 16 AUXMEM.HOSTFS.s 682 | Code | 11 | | 3 | 00/DF90 : AE 00 01 | LDX $0100 ; Load main SP into X 6487 | 16 AUXMEM.HOSTFS.s 682 | Code | 11 | | 1 | 00/DF93 : 18 | CLC ; Use main mem 6488 | 16 AUXMEM.HOSTFS.s 682 | Code | 11 | | 1 | 00/DF94 : B8 | CLV ; Use main ZP and LC 6489 | 16 AUXMEM.HOSTFS.s 682 | Code | 11 | | 3 | 00/DF95 : 4C 14 C3 | JMP {$C314} 6490 | 16 AUXMEM.HOSTFS.s 683 | Code | 11 | | 1 | 00/DF98 : 00 | ERRCHDIR BRK 6491 | 16 AUXMEM.HOSTFS.s 684 | Data | 11 | | 1 | 00/DF99 : DC | DB $DC 6492 | 16 AUXMEM.HOSTFS.s 685 | Data | 11 | | 17 | 00/DF9A : 53 79 6E 74 | ASC 'Syntax: DIR <dir>' | | | | | | 61 78 3A 20 | | | | | | | 44 49 52 20 | | | | | | | 3C 64 69 72 | | | | | | | 3E | 6493 | 16 AUXMEM.HOSTFS.s 686 | Code | 11 | | 1 | 00/DFAB : 00 | BRK 6494 | 16 AUXMEM.HOSTFS.s 687 | Empty | 11 | | 0 | 00/DFAC | 6495 | 16 AUXMEM.HOSTFS.s 688 | Empty | 11 | | 0 | 00/DFAC | 6496 | 16 AUXMEM.HOSTFS.s 689 | Comment | 11 | | 0 | 00/DFAC | * Handle *DRIVE command, which is similar to CHDIR 6497 | 16 AUXMEM.HOSTFS.s 690 | Comment | 11 | | 0 | 00/DFAC | * LPTR=>parameters string 6498 | 16 AUXMEM.HOSTFS.s 691 | Comment | 11 | | 0 | 00/DFAC | * 6499 | 16 AUXMEM.HOSTFS.s 692 | Code | 11 | | 3 | 00/DFAC : 20 09 E1 | FSCDRIVE JSR PARSLPTR ; Copy arg->MOSFILE 6500 | 16 AUXMEM.HOSTFS.s 693 | Code | 11 | | 1 | 00/DFAF : A8 | TAY ; Y<>$00 - DRIVE 6501 | 16 AUXMEM.HOSTFS.s 694 | Code | 11 | | 2 | 00/DFB0 : D0 CF | BNE FSCCHDIR2 ; Pass on as CHDIR 6502 | 16 AUXMEM.HOSTFS.s 695 | Code | 11 | | 1 | 00/DFB2 : 00 | ozunid_191 BRK 6503 | 16 AUXMEM.HOSTFS.s 696 | Data | 11 | | 1 | 00/DFB3 : DC | DB $DC 6504 | 16 AUXMEM.HOSTFS.s 697 | Data | 11 | | 35 | 00/DFB4 : 53 79 6E 74 | ASC 'Syntax: DRIVE <drv> (eg: DRIVE :61)' | | | | | | 61 78 3A 20 | | | | | | | 44 52 49 56 | | | | | | | 45 20 3C 64 | | | | | | | 72 76 3E 20 | | | | | | | 28 65 67 3A | | | | | | | 20 44 52 49 | | | | | | | 56 45 20 3A | | | | | | | 36 31 29 | 6505 | 16 AUXMEM.HOSTFS.s 698 | Code | 11 | | 1 | 00/DFD7 : 00 | BRK 6506 | 16 AUXMEM.HOSTFS.s 699 | Empty | 11 | | 0 | 00/DFD8 | 6507 | 16 AUXMEM.HOSTFS.s 700 | Empty | 11 | | 0 | 00/DFD8 | 6508 | 16 AUXMEM.HOSTFS.s 701 | Comment | 11 | | 0 | 00/DFD8 | * Handle *FREE command 6509 | 16 AUXMEM.HOSTFS.s 702 | Comment | 11 | | 0 | 00/DFD8 | * LPTR=>parameters string 6510 | 16 AUXMEM.HOSTFS.s 703 | Comment | 11 | | 0 | 00/DFD8 | * Syntax is FREE (<drv>) 6511 | 16 AUXMEM.HOSTFS.s 704 | Comment | 11 | | 0 | 00/DFD8 | * 6512 | 16 AUXMEM.HOSTFS.s 705 | Code | 11 | | 3 | 00/DFD8 : 20 09 E1 | FSCFREE JSR PARSLPTR ; Copy arg->MOSFILE 6513 | 16 AUXMEM.HOSTFS.s 706 | Macro | 11 | | 0 | 00/DFDB | >>> XF2MAIN,DRVINFO 6514 | 16 AUXMEM.HOSTFS.s 706 | Empty | 11 | | 0 | 00/DFDB | 6515 | 16 AUXMEM.HOSTFS.s 706 | Empty | 11 | | 0 | 00/DFDB | 6516 | 16 AUXMEM.HOSTFS.s 706 | Empty | 11 | | 0 | 00/DFDB | 6517 | 16 AUXMEM.HOSTFS.s 706 | Empty | 11 | | 0 | 00/DFDB | 6518 | 16 AUXMEM.HOSTFS.s 706 | Code | 11 | | 2 | 00/DFDB : A2 F0 | LDX #<DRVINFO 6519 | 16 AUXMEM.HOSTFS.s 706 | Code | 11 | | 3 | 00/DFDD : 8E ED 03 | STX {$3ED} 6520 | 16 AUXMEM.HOSTFS.s 706 | Code | 11 | | 2 | 00/DFE0 : A2 4C | LDX #>DRVINFO 6521 | 16 AUXMEM.HOSTFS.s 706 | Code | 11 | | 3 | 00/DFE2 : 8E EE 03 | STX {$3EE} 6522 | 16 AUXMEM.HOSTFS.s 706 | Code | 11 | | 1 | 00/DFE5 : 78 | SEI ; Disable IRQ before XFER 6523 | 16 AUXMEM.HOSTFS.s 706 | Code | 11 | | 1 | 00/DFE6 : BA | TSX 6524 | 16 AUXMEM.HOSTFS.s 706 | Code | 11 | | 3 | 00/DFE7 : 8E 01 01 | STX $0101 ; Save alt SP 6525 | 16 AUXMEM.HOSTFS.s 706 | Code | 11 | | 3 | 00/DFEA : AE 00 01 | LDX $0100 ; Load main SP into X 6526 | 16 AUXMEM.HOSTFS.s 706 | Code | 11 | | 1 | 00/DFED : 18 | CLC ; Use main mem 6527 | 16 AUXMEM.HOSTFS.s 706 | Code | 11 | | 1 | 00/DFEE : B8 | CLV ; Use main ZP and LC 6528 | 16 AUXMEM.HOSTFS.s 706 | Code | 11 | | 3 | 00/DFEF : 4C 14 C3 | JMP {$C314} 6529 | 16 AUXMEM.HOSTFS.s 707 | Macro | 11 | | 0 | 00/DFF2 | FREERET >>> ENTAUX 6530 | 16 AUXMEM.HOSTFS.s 707 | Code | 11 | | 3 | 00/DFF2 : AE 01 01 | LDX $0101 ; Recover alt SP 6531 | 16 AUXMEM.HOSTFS.s 707 | Code | 11 | | 1 | 00/DFF5 : 9A | TXS 6532 | 16 AUXMEM.HOSTFS.s 707 | Code | 11 | | 1 | 00/DFF6 : 58 | CLI ; Re-enable IRQ after XFER 6533 | 16 AUXMEM.HOSTFS.s 707 | Empty | 11 | | 0 | 00/DFF7 | 6534 | 16 AUXMEM.HOSTFS.s 707 | Empty | 11 | | 0 | 00/DFF7 | 6535 | 16 AUXMEM.HOSTFS.s 707 | Empty | 11 | | 0 | 00/DFF7 | 6536 | 16 AUXMEM.HOSTFS.s 707 | Empty | 11 | | 0 | 00/DFF7 | 6537 | 16 AUXMEM.HOSTFS.s 708 | Code | 11 | | 3 | 00/DFF7 : 20 64 E1 | JSR CHKERROR 6538 | 16 AUXMEM.HOSTFS.s 709 | Comment | 11 | | 0 | 00/DFFA | * 6539 | 16 AUXMEM.HOSTFS.s 710 | Comment | 11 | | 0 | 00/DFFA | * Disk size is two-byte 512-byte block count 6540 | 16 AUXMEM.HOSTFS.s 711 | Comment | 11 | | 0 | 00/DFFA | * Maximum disk size is $FFFF blocks = 1FFFF00 bytes = 33554176 bytes = 32M-512 6541 | 16 AUXMEM.HOSTFS.s 712 | Code | 11 | | 1 | 00/DFFA : 38 | _NOERR SEC 6542 | 16 AUXMEM.HOSTFS.s 713 | Code | 11 | | 3 | 00/DFFB : AD 56 EE | LDA AUXBLK+2 ; LSB of total blocks 6543 | 16 AUXMEM.HOSTFS.s 714 | Code | 11 | | 3 | 00/DFFE : ED 54 EE | SBC AUXBLK+0 ; LSB of blocks used 6544 | 16 AUXMEM.HOSTFS.s 715 | Code | 11 | | 1 | 00/E001 : AA | TAX ; X=b0-b7 of blocks free 6545 | 16 AUXMEM.HOSTFS.s 716 | Code | 11 | | 3 | 00/E002 : AD 57 EE | LDA AUXBLK+3 ; MSB of total blocks 6546 | 16 AUXMEM.HOSTFS.s 717 | Code | 11 | | 3 | 00/E005 : ED 55 EE | SBC AUXBLK+1 ; MSB of blocks used 6547 | 16 AUXMEM.HOSTFS.s 718 | Code | 11 | | 1 | 00/E008 : A8 | TAY ; Y=b8-b15 of blocks free 6548 | 16 AUXMEM.HOSTFS.s 719 | Code | 11 | | 2 | 00/E009 : A9 00 | LDA #$00 ; A=b16-b23 of blocks free 6549 | 16 AUXMEM.HOSTFS.s 720 | Code | 11 | | 3 | 00/E00B : 20 27 E0 | JSR _FREEDEC ; Print 'AAYYXX blocks aaayyyxxx bytes ' 6550 | 16 AUXMEM.HOSTFS.s 721 | Code | 11 | | 2 | 00/E00E : A2 5E | LDX #<_FREE 6551 | 16 AUXMEM.HOSTFS.s 722 | Code | 11 | | 2 | 00/E010 : A0 E0 | LDY #>_FREE 6552 | 16 AUXMEM.HOSTFS.s 723 | Code | 11 | | 3 | 00/E012 : 20 EA EB | JSR OUTSTR ; Print 'free'<nl> 6553 | 16 AUXMEM.HOSTFS.s 724 | Empty | 11 | | 0 | 00/E015 | 6554 | 16 AUXMEM.HOSTFS.s 725 | Code | 11 | | 3 | 00/E015 : AE 54 EE | LDX AUXBLK+0 ; X=b0-b7 of blocks used 6555 | 16 AUXMEM.HOSTFS.s 726 | Code | 11 | | 3 | 00/E018 : AC 55 EE | LDY AUXBLK+1 ; Y=b8-b15 of blocks used 6556 | 16 AUXMEM.HOSTFS.s 727 | Code | 11 | | 2 | 00/E01B : A9 00 | LDA #$00 ; A=b16-b23 of blocks used 6557 | 16 AUXMEM.HOSTFS.s 728 | Code | 11 | | 3 | 00/E01D : 20 27 E0 | JSR _FREEDEC ; Print 'AAYYXX blocks aaayyyxxx bytes ' 6558 | 16 AUXMEM.HOSTFS.s 729 | Code | 11 | | 2 | 00/E020 : A2 64 | LDX #<_USED 6559 | 16 AUXMEM.HOSTFS.s 730 | Code | 11 | | 2 | 00/E022 : A0 E0 | LDY #>_USED 6560 | 16 AUXMEM.HOSTFS.s 731 | Code | 11 | | 3 | 00/E024 : 4C EA EB | JMP OUTSTR ; Print 'used'<nl> 6561 | 16 AUXMEM.HOSTFS.s 732 | Empty | 11 | | 0 | 00/E027 | 6562 | 16 AUXMEM.HOSTFS.s 733 | Code | 11 | | 2 | 00/E027 : 86 C9 | _FREEDEC STX {$C8}+1 6563 | 16 AUXMEM.HOSTFS.s 734 | Code | 11 | | 2 | 00/E029 : 84 CA | STY {$C8}+2 6564 | 16 AUXMEM.HOSTFS.s 735 | Code | 11 | | 2 | 00/E02B : 85 CB | STA {$C8}+3 6565 | 16 AUXMEM.HOSTFS.s 736 | Comment | 11 | | 0 | 00/E02D | * JSR PRHEX ; Blocks b16-b23 in hex 6566 | 16 AUXMEM.HOSTFS.s 737 | Code | 11 | | 3 | 00/E02D : 20 AD FF | JSR PR2HEX ; Blocks b0-b15 in hex 6567 | 16 AUXMEM.HOSTFS.s 738 | Code | 11 | | 2 | 00/E030 : A2 4D | LDX #<ozunid_192 6568 | 16 AUXMEM.HOSTFS.s 739 | Code | 11 | | 2 | 00/E032 : A0 E0 | LDY #>ozunid_192 6569 | 16 AUXMEM.HOSTFS.s 740 | Code | 11 | | 3 | 00/E034 : 20 EA EB | JSR OUTSTR ; ' blocks ' 6570 | 16 AUXMEM.HOSTFS.s 741 | Code | 11 | | 2 | 00/E037 : 64 C8 | STZ {$C8}+0 ; FSNUM=blocks*512 6571 | 16 AUXMEM.HOSTFS.s 742 | Code | 11 | | 2 | 00/E039 : 06 C9 | ASL {$C8}+1 6572 | 16 AUXMEM.HOSTFS.s 743 | Code | 11 | | 2 | 00/E03B : 26 CA | ROL {$C8}+2 6573 | 16 AUXMEM.HOSTFS.s 744 | Code | 11 | | 2 | 00/E03D : 26 CB | ROL {$C8}+3 6574 | 16 AUXMEM.HOSTFS.s 745 | Code | 11 | | 2 | 00/E03F : A2 C8 | LDX #{$C8} ; X=>number to print 6575 | 16 AUXMEM.HOSTFS.s 746 | Code | 11 | | 2 | 00/E041 : A0 08 | LDY #8 ; Y=pad up to 8 digits 6576 | 16 AUXMEM.HOSTFS.s 747 | Code | 11 | | 3 | 00/E043 : 20 2C EC | JSR PRINTDEC ; Print it in decimal 6577 | 16 AUXMEM.HOSTFS.s 748 | Code | 11 | | 2 | 00/E046 : A2 56 | LDX #<_BYTES 6578 | 16 AUXMEM.HOSTFS.s 749 | Code | 11 | | 2 | 00/E048 : A0 E0 | LDY #>_BYTES 6579 | 16 AUXMEM.HOSTFS.s 750 | Code | 11 | | 3 | 00/E04A : 4C EA EB | JMP OUTSTR ; ' bytes ' 6580 | 16 AUXMEM.HOSTFS.s 751 | Data | 11 | | 8 | 00/E04D : 20 62 6C 6F | ozunid_192 ASC ' blocks ' | | | | | | 63 6B 73 20 | 6581 | 16 AUXMEM.HOSTFS.s 752 | Data | 11 | | 1 | 00/E055 : 00 | DB 0 6582 | 16 AUXMEM.HOSTFS.s 753 | Data | 11 | | 7 | 00/E056 : 20 62 79 74 | _BYTES ASC ' bytes ' | | | | | | 65 73 20 | 6583 | 16 AUXMEM.HOSTFS.s 754 | Data | 11 | | 1 | 00/E05D : 00 | DB 0 6584 | 16 AUXMEM.HOSTFS.s 755 | Data | 11 | | 4 | 00/E05E : 66 72 65 65 | _FREE ASC 'free' 6585 | 16 AUXMEM.HOSTFS.s 756 | Data | 11 | | 2 | 00/E062 : 0D 00 | DB 13,0 6586 | 16 AUXMEM.HOSTFS.s 757 | Data | 11 | | 4 | 00/E064 : 75 73 65 64 | _USED ASC 'used' 6587 | 16 AUXMEM.HOSTFS.s 758 | Data | 11 | | 2 | 00/E068 : 0D 00 | DB 13,0 6588 | 16 AUXMEM.HOSTFS.s 759 | Empty | 11 | | 0 | 00/E06A | 6589 | 16 AUXMEM.HOSTFS.s 760 | Empty | 11 | | 0 | 00/E06A | 6590 | 16 AUXMEM.HOSTFS.s 761 | Comment | 11 | | 0 | 00/E06A | * Handle *ACCESS command 6591 | 16 AUXMEM.HOSTFS.s 762 | Comment | 11 | | 0 | 00/E06A | * LPTR=>parameters string 6592 | 16 AUXMEM.HOSTFS.s 763 | Comment | 11 | | 0 | 00/E06A | * 6593 | 16 AUXMEM.HOSTFS.s 764 | Code | 11 | | 3 | 00/E06A : 20 09 E1 | FSCACCESS JSR PARSLPTR ; Copy filename->MOSFILE 6594 | 16 AUXMEM.HOSTFS.s 765 | Code | 11 | | 2 | 00/E06D : F0 39 | BEQ ozunid_193 ; No filename 6595 | 16 AUXMEM.HOSTFS.s 766 | Code | 11 | | 2 | 00/E06F : 64 C9 | STZ {{$C8}+1} ; Initialise access to "" 6596 | 16 AUXMEM.HOSTFS.s 767 | Code | 11 | | 2 | 00/E071 : B1 F2 | _ACCESSLP1 LDA ({$F2}),Y ; Get access character 6597 | 16 AUXMEM.HOSTFS.s 768 | Code | 11 | | 2 | 00/E073 : C9 0D | CMP #$0D 6598 | 16 AUXMEM.HOSTFS.s 769 | Code | 11 | | 2 | 00/E075 : F0 16 | BEQ _ACCESSGO ; End of line, action it 6599 | 16 AUXMEM.HOSTFS.s 770 | Code | 11 | | 1 | 00/E077 : C8 | INY 6600 | 16 AUXMEM.HOSTFS.s 771 | Code | 11 | | 2 | 00/E078 : 29 DF | AND #$DF ; Upper case 6601 | 16 AUXMEM.HOSTFS.s 772 | Code | 11 | | 2 | 00/E07A : A2 04 | LDX #$04 ; Check five chars 'DLBWR' 6602 | 16 AUXMEM.HOSTFS.s 773 | Code | 11 | | 3 | 00/E07C : DD CC DE | _ACCESSLP2 CMP ACCESSCHRS,X 6603 | 16 AUXMEM.HOSTFS.s 774 | Code | 11 | | 2 | 00/E07F : D0 07 | BNE _ACCESSNXT 6604 | 16 AUXMEM.HOSTFS.s 775 | Code | 11 | | 3 | 00/E081 : BD D1 DE | LDA ACCESSBITS,X ; Add this to access mask 6605 | 16 AUXMEM.HOSTFS.s 776 | Code | 11 | | 2 | 00/E084 : 05 C9 | ORA {{$C8}+1} 6606 | 16 AUXMEM.HOSTFS.s 777 | Code | 11 | | 2 | 00/E086 : 85 C9 | STA {{$C8}+1} 6607 | 16 AUXMEM.HOSTFS.s 778 | Code | 11 | | 1 | 00/E088 : CA | _ACCESSNXT DEX 6608 | 16 AUXMEM.HOSTFS.s 779 | Code | 11 | | 2 | 00/E089 : 10 F1 | BPL _ACCESSLP2 6609 | 16 AUXMEM.HOSTFS.s 780 | Code | 11 | | 2 | 00/E08B : 30 E4 | BMI _ACCESSLP1 ; Check next character 6610 | 16 AUXMEM.HOSTFS.s 781 | Code | 11 | | 2 | 00/E08D : A5 C9 | _ACCESSGO LDA {{$C8}+1} 6611 | 16 AUXMEM.HOSTFS.s 782 | Code | 11 | | 2 | 00/E08F : 49 C0 | EOR #$C0 ; MOSFILE=filename, A=access mask 6612 | 16 AUXMEM.HOSTFS.s 783 | Macro | 11 | | 0 | 00/E091 | >>> XF2MAIN,SETPERM 6613 | 16 AUXMEM.HOSTFS.s 783 | Empty | 11 | | 0 | 00/E091 | 6614 | 16 AUXMEM.HOSTFS.s 783 | Empty | 11 | | 0 | 00/E091 | 6615 | 16 AUXMEM.HOSTFS.s 783 | Empty | 11 | | 0 | 00/E091 | 6616 | 16 AUXMEM.HOSTFS.s 783 | Empty | 11 | | 0 | 00/E091 | 6617 | 16 AUXMEM.HOSTFS.s 783 | Code | 11 | | 2 | 00/E091 : A2 6C | LDX #<SETPERM 6618 | 16 AUXMEM.HOSTFS.s 783 | Code | 11 | | 3 | 00/E093 : 8E ED 03 | STX {$3ED} 6619 | 16 AUXMEM.HOSTFS.s 783 | Code | 11 | | 2 | 00/E096 : A2 4D | LDX #>SETPERM 6620 | 16 AUXMEM.HOSTFS.s 783 | Code | 11 | | 3 | 00/E098 : 8E EE 03 | STX {$3EE} 6621 | 16 AUXMEM.HOSTFS.s 783 | Code | 11 | | 1 | 00/E09B : 78 | SEI ; Disable IRQ before XFER 6622 | 16 AUXMEM.HOSTFS.s 783 | Code | 11 | | 1 | 00/E09C : BA | TSX 6623 | 16 AUXMEM.HOSTFS.s 783 | Code | 11 | | 3 | 00/E09D : 8E 01 01 | STX $0101 ; Save alt SP 6624 | 16 AUXMEM.HOSTFS.s 783 | Code | 11 | | 3 | 00/E0A0 : AE 00 01 | LDX $0100 ; Load main SP into X 6625 | 16 AUXMEM.HOSTFS.s 783 | Code | 11 | | 1 | 00/E0A3 : 18 | CLC ; Use main mem 6626 | 16 AUXMEM.HOSTFS.s 783 | Code | 11 | | 1 | 00/E0A4 : B8 | CLV ; Use main ZP and LC 6627 | 16 AUXMEM.HOSTFS.s 783 | Code | 11 | | 3 | 00/E0A5 : 4C 14 C3 | JMP {$C314} 6628 | 16 AUXMEM.HOSTFS.s 784 | Code | 11 | | 1 | 00/E0A8 : 00 | ozunid_193 BRK 6629 | 16 AUXMEM.HOSTFS.s 785 | Data | 11 | | 1 | 00/E0A9 : DC | DB $DC 6630 | 16 AUXMEM.HOSTFS.s 786 | Data | 11 | | 33 | 00/E0AA : 53 79 6E 74 | ASC 'Syntax: ACCESS <listspec> <L|W|R>' | | | | | | 61 78 3A 20 | | | | | | | 41 43 43 45 | | | | | | | 53 53 20 3C | | | | | | | 6C 69 73 74 | | | | | | | 73 70 65 63 | | | | | | | 3E 20 3C 4C | | | | | | | 7C 57 7C 52 | | | | | | | 3E | 6631 | 16 AUXMEM.HOSTFS.s 787 | Code | 11 | | 1 | 00/E0CB : 00 | BRK 6632 | 16 AUXMEM.HOSTFS.s 788 | Empty | 11 | | 0 | 00/E0CC | 6633 | 16 AUXMEM.HOSTFS.s 789 | Empty | 11 | | 0 | 00/E0CC | 6634 | 16 AUXMEM.HOSTFS.s 790 | Comment | 11 | | 0 | 00/E0CC | * Handle *DESTROY command 6635 | 16 AUXMEM.HOSTFS.s 791 | Comment | 11 | | 0 | 00/E0CC | * LPTR=>parameters string 6636 | 16 AUXMEM.HOSTFS.s 792 | Comment | 11 | | 0 | 00/E0CC | * 6637 | 16 AUXMEM.HOSTFS.s 793 | Empty | 11 | | 0 | 00/E0CC | FSCDESTROY 6638 | 16 AUXMEM.HOSTFS.s 794 | Code | 11 | | 3 | 00/E0CC : 20 09 E1 | DESTROY JSR PARSLPTR ; Copy filename->MOSFILE 6639 | 16 AUXMEM.HOSTFS.s 795 | Code | 11 | | 2 | 00/E0CF : F0 17 | BEQ ozunid_194 ; No filename 6640 | 16 AUXMEM.HOSTFS.s 796 | Macro | 11 | | 0 | 00/E0D1 | >>> XF2MAIN,MULTIDEL 6641 | 16 AUXMEM.HOSTFS.s 796 | Empty | 11 | | 0 | 00/E0D1 | 6642 | 16 AUXMEM.HOSTFS.s 796 | Empty | 11 | | 0 | 00/E0D1 | 6643 | 16 AUXMEM.HOSTFS.s 796 | Empty | 11 | | 0 | 00/E0D1 | 6644 | 16 AUXMEM.HOSTFS.s 796 | Empty | 11 | | 0 | 00/E0D1 | 6645 | 16 AUXMEM.HOSTFS.s 796 | Code | 11 | | 2 | 00/E0D1 : A2 CB | LDX #<MULTIDEL 6646 | 16 AUXMEM.HOSTFS.s 796 | Code | 11 | | 3 | 00/E0D3 : 8E ED 03 | STX {$3ED} 6647 | 16 AUXMEM.HOSTFS.s 796 | Code | 11 | | 2 | 00/E0D6 : A2 4D | LDX #>MULTIDEL 6648 | 16 AUXMEM.HOSTFS.s 796 | Code | 11 | | 3 | 00/E0D8 : 8E EE 03 | STX {$3EE} 6649 | 16 AUXMEM.HOSTFS.s 796 | Code | 11 | | 1 | 00/E0DB : 78 | SEI ; Disable IRQ before XFER 6650 | 16 AUXMEM.HOSTFS.s 796 | Code | 11 | | 1 | 00/E0DC : BA | TSX 6651 | 16 AUXMEM.HOSTFS.s 796 | Code | 11 | | 3 | 00/E0DD : 8E 01 01 | STX $0101 ; Save alt SP 6652 | 16 AUXMEM.HOSTFS.s 796 | Code | 11 | | 3 | 00/E0E0 : AE 00 01 | LDX $0100 ; Load main SP into X 6653 | 16 AUXMEM.HOSTFS.s 796 | Code | 11 | | 1 | 00/E0E3 : 18 | CLC ; Use main mem 6654 | 16 AUXMEM.HOSTFS.s 796 | Code | 11 | | 1 | 00/E0E4 : B8 | CLV ; Use main ZP and LC 6655 | 16 AUXMEM.HOSTFS.s 796 | Code | 11 | | 3 | 00/E0E5 : 4C 14 C3 | JMP {$C314} 6656 | 16 AUXMEM.HOSTFS.s 797 | Code | 11 | | 1 | 00/E0E8 : 00 | ozunid_194 BRK 6657 | 16 AUXMEM.HOSTFS.s 798 | Data | 11 | | 1 | 00/E0E9 : DC | DB $DC 6658 | 16 AUXMEM.HOSTFS.s 799 | Data | 11 | | 26 | 00/E0EA : 53 79 6E 74 | ASC 'Syntax: DESTROY <listspec>' | | | | | | 61 78 3A 20 | | | | | | | 44 45 53 54 | | | | | | | 52 4F 59 20 | | | | | | | 3C 6C 69 73 | | | | | | | 74 73 70 65 | | | | | | | 63 3E | 6659 | 16 AUXMEM.HOSTFS.s 800 | Code | 11 | | 1 | 00/E104 : 00 | BRK 6660 | 16 AUXMEM.HOSTFS.s 801 | Empty | 11 | | 0 | 00/E105 | 6661 | 16 AUXMEM.HOSTFS.s 802 | Empty | 11 | | 0 | 00/E105 | 6662 | 16 AUXMEM.HOSTFS.s 803 | Comment | 11 | | 0 | 00/E105 | * Handle *TITLE command 6663 | 16 AUXMEM.HOSTFS.s 804 | Comment | 11 | | 0 | 00/E105 | * LPTR=>parameters string 6664 | 16 AUXMEM.HOSTFS.s 805 | Comment | 11 | | 0 | 00/E105 | * Syntax: *TITLE (<drive>) <title> 6665 | 16 AUXMEM.HOSTFS.s 806 | Comment | 11 | | 0 | 00/E105 | * 6666 | 16 AUXMEM.HOSTFS.s 807 | Code | 11 | | 1 | 00/E105 : 60 | FSCTITLE RTS 6667 | 16 AUXMEM.HOSTFS.s 808 | Empty | 11 | | 0 | 00/E106 | 6668 | 16 AUXMEM.HOSTFS.s 809 | Empty | 11 | | 0 | 00/E106 | 6669 | 16 AUXMEM.HOSTFS.s 810 | Comment | 11 | | 0 | 00/E106 | * Parse filename pointed to by XY 6670 | 16 AUXMEM.HOSTFS.s 811 | Comment | 11 | | 0 | 00/E106 | * Write filename to MOSFILE in main memory 6671 | 16 AUXMEM.HOSTFS.s 812 | Comment | 11 | | 0 | 00/E106 | * Returns length in A with EQ/NE set 6672 | 16 AUXMEM.HOSTFS.s 813 | Code | 11 | | 3 | 00/E106 : 20 4D E6 | PARSNAME JSR XYtoLPTR 6673 | 16 AUXMEM.HOSTFS.s 814 | Code | 11 | | 1 | 00/E109 : 18 | PARSLPTR CLC ; Means parsing a filename 6674 | 16 AUXMEM.HOSTFS.s 815 | Code | 11 | | 3 | 00/E10A : 20 C2 FF | JSR GSINIT ; Init general string handling 6675 | 16 AUXMEM.HOSTFS.s 816 | Code | 11 | | 1 | 00/E10D : 08 | PHP 6676 | 16 AUXMEM.HOSTFS.s 817 | Code | 11 | | 1 | 00/E10E : 78 | SEI ; Disable IRQs 6677 | 16 AUXMEM.HOSTFS.s 818 | Code | 11 | | 2 | 00/E10F : A2 00 | LDX #$00 ; Length 6678 | 16 AUXMEM.HOSTFS.s 819 | Code | 11 | | 3 | 00/E111 : 20 C5 FF | ozunid_195 JSR GSREAD ; Handle next char 6679 | 16 AUXMEM.HOSTFS.s 820 | Code | 11 | | 2 | 00/E114 : B0 12 | BCS ozunid_196 6680 | 16 AUXMEM.HOSTFS.s 821 | Code | 11 | | 3 | 00/E116 : 8D 04 C0 | STA $C004 ; Write to main mem 6681 | 16 AUXMEM.HOSTFS.s 822 | Code | 11 | | 3 | 00/E119 : 9D 01 03 | STA {{$0300}}+1,X 6682 | 16 AUXMEM.HOSTFS.s 823 | Code | 11 | | 3 | 00/E11C : 8D 05 C0 | STA $C005 ; Write to aux mem 6683 | 16 AUXMEM.HOSTFS.s 824 | Code | 11 | | 1 | 00/E11F : E8 | INX 6684 | 16 AUXMEM.HOSTFS.s 825 | Code | 11 | | 2 | 00/E120 : E0 40 | CPX #$40 6685 | 16 AUXMEM.HOSTFS.s 826 | Code | 11 | | 2 | 00/E122 : D0 ED | BNE ozunid_195 ; Name not too long 6686 | 16 AUXMEM.HOSTFS.s 827 | Code | 11 | | 1 | 00/E124 : 8A | TXA ; $40=Bad filename 6687 | 16 AUXMEM.HOSTFS.s 828 | Code | 11 | | 3 | 00/E125 : 4C 68 E1 | JMP MKERROR 6688 | 16 AUXMEM.HOSTFS.s 829 | Code | 11 | | 3 | 00/E128 : 8D 04 C0 | ozunid_196 STA $C004 ; Write to main mem 6689 | 16 AUXMEM.HOSTFS.s 830 | Code | 11 | | 3 | 00/E12B : 8E 00 03 | STX {{$0300}} ; Length byte (Pascal) 6690 | 16 AUXMEM.HOSTFS.s 831 | Code | 11 | | 3 | 00/E12E : 8D 05 C0 | STA $C005 ; Back to aux 6691 | 16 AUXMEM.HOSTFS.s 832 | Code | 11 | | 1 | 00/E131 : 28 | PLP ; IRQs back as they were 6692 | 16 AUXMEM.HOSTFS.s 833 | Code | 11 | | 1 | 00/E132 : 8A | TXA ; Return len in A 6693 | 16 AUXMEM.HOSTFS.s 834 | Code | 11 | | 1 | 00/E133 : 60 | RTS 6694 | 16 AUXMEM.HOSTFS.s 835 | Empty | 11 | | 0 | 00/E134 | 6695 | 16 AUXMEM.HOSTFS.s 836 | Comment | 11 | | 0 | 00/E134 | * Parse filename pointed to by (OSLPTR),Y 6696 | 16 AUXMEM.HOSTFS.s 837 | Comment | 11 | | 0 | 00/E134 | * Write filename to MOSFILE2 in main memory 6697 | 16 AUXMEM.HOSTFS.s 838 | Comment | 11 | | 0 | 00/E134 | * Returns length in A with EQ/NE set 6698 | 16 AUXMEM.HOSTFS.s 839 | Code | 11 | | 3 | 00/E134 : 20 4D E6 | PARSNAME2 JSR XYtoLPTR 6699 | 16 AUXMEM.HOSTFS.s 840 | Code | 11 | | 1 | 00/E137 : 18 | PARSLPTR2 CLC ; Means parsing a filename 6700 | 16 AUXMEM.HOSTFS.s 841 | Code | 11 | | 3 | 00/E138 : 20 C2 FF | JSR GSINIT ; Init gen string handling 6701 | 16 AUXMEM.HOSTFS.s 842 | Code | 11 | | 1 | 00/E13B : 08 | PHP 6702 | 16 AUXMEM.HOSTFS.s 843 | Code | 11 | | 1 | 00/E13C : 78 | SEI ; Disable IRQs 6703 | 16 AUXMEM.HOSTFS.s 844 | Code | 11 | | 2 | 00/E13D : A2 00 | LDX #$00 ; Length 6704 | 16 AUXMEM.HOSTFS.s 845 | Code | 11 | | 3 | 00/E13F : 20 C5 FF | ozunid_197 JSR GSREAD ; Handle next char 6705 | 16 AUXMEM.HOSTFS.s 846 | Code | 11 | | 2 | 00/E142 : B0 12 | BCS ozunid_198 6706 | 16 AUXMEM.HOSTFS.s 847 | Code | 11 | | 3 | 00/E144 : 8D 04 C0 | STA $C004 ; Write to main mem 6707 | 16 AUXMEM.HOSTFS.s 848 | Code | 11 | | 3 | 00/E147 : 9D 42 03 | STA {$0341}+1,X 6708 | 16 AUXMEM.HOSTFS.s 849 | Code | 11 | | 3 | 00/E14A : 8D 05 C0 | STA $C005 ; Write to aux mem 6709 | 16 AUXMEM.HOSTFS.s 850 | Code | 11 | | 1 | 00/E14D : E8 | INX 6710 | 16 AUXMEM.HOSTFS.s 851 | Code | 11 | | 2 | 00/E14E : E0 40 | CPX #$40 6711 | 16 AUXMEM.HOSTFS.s 852 | Code | 11 | | 2 | 00/E150 : D0 ED | BNE ozunid_197 ; Name not too long 6712 | 16 AUXMEM.HOSTFS.s 853 | Code | 11 | | 1 | 00/E152 : 8A | TXA ; $40=Bad filename 6713 | 16 AUXMEM.HOSTFS.s 854 | Code | 11 | | 3 | 00/E153 : 4C 68 E1 | JMP MKERROR 6714 | 16 AUXMEM.HOSTFS.s 855 | Code | 11 | | 3 | 00/E156 : 8D 04 C0 | ozunid_198 STA $C004 ; Write to main mem 6715 | 16 AUXMEM.HOSTFS.s 856 | Code | 11 | | 3 | 00/E159 : 8E 41 03 | STX {$0341} ; Length byte (Pascal) 6716 | 16 AUXMEM.HOSTFS.s 857 | Code | 11 | | 3 | 00/E15C : 8D 05 C0 | STA $C005 ; Back to aux 6717 | 16 AUXMEM.HOSTFS.s 858 | Code | 11 | | 1 | 00/E15F : 28 | PLP ; IRQs back as they were 6718 | 16 AUXMEM.HOSTFS.s 859 | Code | 11 | | 1 | 00/E160 : 8A | TXA ; Return len in A 6719 | 16 AUXMEM.HOSTFS.s 860 | Code | 11 | | 1 | 00/E161 : 60 | NOTERROR RTS 6720 | 16 AUXMEM.HOSTFS.s 861 | Empty | 11 | | 0 | 00/E162 | 6721 | 16 AUXMEM.HOSTFS.s 862 | Empty | 11 | | 0 | 00/E162 | 6722 | 16 AUXMEM.HOSTFS.s 863 | Code | 11 | | 2 | 00/E162 : A9 46 | ERRNOTFND LDA #$46 ; File not found 6723 | 16 AUXMEM.HOSTFS.s 864 | Empty | 11 | | 0 | 00/E164 | 6724 | 16 AUXMEM.HOSTFS.s 865 | Comment | 11 | | 0 | 00/E164 | * Check returned code for return code or error code 6725 | 16 AUXMEM.HOSTFS.s 866 | Comment | 11 | | 0 | 00/E164 | * A<$20 - return to user, A>$1F - generate error 6726 | 16 AUXMEM.HOSTFS.s 867 | Comment | 11 | | 0 | 00/E164 | * 6727 | 16 AUXMEM.HOSTFS.s 868 | Code | 11 | | 2 | 00/E164 : C9 20 | CHKERROR CMP #$20 6728 | 16 AUXMEM.HOSTFS.s 869 | Code | 11 | | 2 | 00/E166 : 90 F9 | BCC NOTERROR 6729 | 16 AUXMEM.HOSTFS.s 870 | Empty | 11 | | 0 | 00/E168 | MKERROR 6730 | 16 AUXMEM.HOSTFS.s 871 | Directive | 11 | | 0 | 00/E168 | DO {$E0} 6731 | 16 AUXMEM.HOSTFS.s 872 | Code | 11 | | 2 | 00/E168 : 24 E0 | BIT $E0 6732 | 16 AUXMEM.HOSTFS.s 873 | Code | 11 | | 2 | 00/E16A : 10 38 | BPL MKERROR1 ; *DEBUG* 6733 | 16 AUXMEM.HOSTFS.s 874 | Code | 11 | | 1 | 00/E16C : 48 | PHA 6734 | 16 AUXMEM.HOSTFS.s 875 | Code | 11 | | 2 | 00/E16D : A2 0F | LDX #15 6735 | 16 AUXMEM.HOSTFS.s 876 | Code | 11 | | 3 | 00/E16F : BD 99 E1 | MKERRLP LDA ERRMSG,X 6736 | 16 AUXMEM.HOSTFS.s 877 | Code | 11 | | 3 | 00/E172 : 9D 00 01 | STA $100,X 6737 | 16 AUXMEM.HOSTFS.s 878 | Code | 11 | | 1 | 00/E175 : CA | DEX 6738 | 16 AUXMEM.HOSTFS.s 879 | Code | 11 | | 2 | 00/E176 : 10 F7 | BPL MKERRLP 6739 | 16 AUXMEM.HOSTFS.s 880 | Code | 11 | | 1 | 00/E178 : 68 | PLA 6740 | 16 AUXMEM.HOSTFS.s 881 | Code | 11 | | 1 | 00/E179 : 48 | PHA 6741 | 16 AUXMEM.HOSTFS.s 882 | Code | 11 | | 1 | 00/E17A : 4A | LSR A 6742 | 16 AUXMEM.HOSTFS.s 883 | Code | 11 | | 1 | 00/E17B : 4A | LSR A 6743 | 16 AUXMEM.HOSTFS.s 884 | Code | 11 | | 1 | 00/E17C : 4A | LSR A 6744 | 16 AUXMEM.HOSTFS.s 885 | Code | 11 | | 1 | 00/E17D : 4A | LSR A 6745 | 16 AUXMEM.HOSTFS.s 886 | Code | 11 | | 3 | 00/E17E : 20 8E E1 | JSR ERRHEX 6746 | 16 AUXMEM.HOSTFS.s 887 | Code | 11 | | 3 | 00/E181 : 8D 08 01 | STA $108 6747 | 16 AUXMEM.HOSTFS.s 888 | Code | 11 | | 1 | 00/E184 : 68 | PLA 6748 | 16 AUXMEM.HOSTFS.s 889 | Code | 11 | | 3 | 00/E185 : 20 8E E1 | JSR ERRHEX 6749 | 16 AUXMEM.HOSTFS.s 890 | Code | 11 | | 3 | 00/E188 : 8D 09 01 | STA $109 6750 | 16 AUXMEM.HOSTFS.s 891 | Code | 11 | | 3 | 00/E18B : 4C 00 01 | JMP $100 6751 | 16 AUXMEM.HOSTFS.s 892 | Code | 11 | | 2 | 00/E18E : 29 0F | ERRHEX AND #15 6752 | 16 AUXMEM.HOSTFS.s 893 | Code | 11 | | 2 | 00/E190 : C9 0A | CMP #10 6753 | 16 AUXMEM.HOSTFS.s 894 | Code | 11 | | 2 | 00/E192 : 90 02 | BCC ERRHEX1 6754 | 16 AUXMEM.HOSTFS.s 895 | Code | 11 | | 2 | 00/E194 : 69 06 | ADC #6 6755 | 16 AUXMEM.HOSTFS.s 896 | Code | 11 | | 2 | 00/E196 : 69 30 | ERRHEX1 ADC #48 6756 | 16 AUXMEM.HOSTFS.s 897 | Code | 11 | | 1 | 00/E198 : 60 | RTS 6757 | 16 AUXMEM.HOSTFS.s 898 | Code | 11 | | 1 | 00/E199 : 00 | ERRMSG BRK 6758 | 16 AUXMEM.HOSTFS.s 899 | Data | 11 | | 1 | 00/E19A : FF | DB $FF 6759 | 16 AUXMEM.HOSTFS.s 900 | Data | 11 | | 8 | 00/E19B : 45 52 52 3A | ASC 'ERR: $00' | | | | | | 20 24 30 30 | 6760 | 16 AUXMEM.HOSTFS.s 901 | Code | 11 | | 1 | 00/E1A3 : 00 | BRK 6761 | 16 AUXMEM.HOSTFS.s 902 | Directive | 11 | | 0 | 00/E1A4 | FIN 6762 | 16 AUXMEM.HOSTFS.s 903 | Empty | 11 | | 0 | 00/E1A4 | 6763 | 16 AUXMEM.HOSTFS.s 904 | Comment | 11 | | 0 | 00/E1A4 | * Translate ProDOS error code into BBC error 6764 | 16 AUXMEM.HOSTFS.s 905 | Code | 11 | | 2 | 00/E1A4 : C9 40 | MKERROR1 CMP #$40 6765 | 16 AUXMEM.HOSTFS.s 906 | Code | 11 | | 2 | 00/E1A6 : B0 02 | BCS MKERROR2 6766 | 16 AUXMEM.HOSTFS.s 907 | Code | 11 | | 2 | 00/E1A8 : 09 30 | ORA #$30 ; <$40 -> $30-$3F 6767 | 16 AUXMEM.HOSTFS.s 908 | Code | 11 | | 1 | 00/E1AA : 38 | MKERROR2 SEC 6768 | 16 AUXMEM.HOSTFS.s 909 | Code | 11 | | 2 | 00/E1AB : E9 38 | SBC #$38 6769 | 16 AUXMEM.HOSTFS.s 910 | Code | 11 | | 2 | 00/E1AD : C9 28 | CMP #$28 6770 | 16 AUXMEM.HOSTFS.s 911 | Code | 11 | | 2 | 00/E1AF : 90 02 | BCC MKERROR3 ; $28-$30, $40-$5F 6771 | 16 AUXMEM.HOSTFS.s 912 | Code | 11 | | 2 | 00/E1B1 : A9 27 | LDA #$27 ; Otherwise I/O error 6772 | 16 AUXMEM.HOSTFS.s 913 | Code | 11 | | 1 | 00/E1B3 : 0A | MKERROR3 ASL A 6773 | 16 AUXMEM.HOSTFS.s 914 | Code | 11 | | 1 | 00/E1B4 : AA | TAX 6774 | 16 AUXMEM.HOSTFS.s 915 | Code | 11 | | 3 | 00/E1B5 : BD C0 E1 | LDA MKERROR4+1,X 6775 | 16 AUXMEM.HOSTFS.s 916 | Code | 11 | | 1 | 00/E1B8 : 48 | PHA 6776 | 16 AUXMEM.HOSTFS.s 917 | Code | 11 | | 3 | 00/E1B9 : BD BF E1 | LDA MKERROR4+0,X 6777 | 16 AUXMEM.HOSTFS.s 918 | Code | 11 | | 1 | 00/E1BC : 48 | PHA 6778 | 16 AUXMEM.HOSTFS.s 919 | Code | 11 | | 1 | 00/E1BD : 08 | PHP 6779 | 16 AUXMEM.HOSTFS.s 920 | Code | 11 | | 1 | 00/E1BE : 40 | RTI 6780 | 16 AUXMEM.HOSTFS.s 921 | Data | 11 | | 16 | 00/E1BF : 0F E2 F4 E3 | MKERROR4 DW ERROR28,ERROR27,ERROR2A,ERROR2B,ERROR2C,ERROR27,ERROR2E,ERROR27 | | | | | | 21 E2 2C E2 | | | | | | | 46 E2 F4 E3 | | | | | | | 54 E2 F4 E3 | 6781 | 16 AUXMEM.HOSTFS.s 922 | Data | 11 | | 16 | 00/E1CF : 62 E2 70 E2 | DW ERROR40,ERROR41,ERROR42,ERROR43,ERROR44,ERROR45,ERROR46,ERROR47 | | | | | | 80 E2 8F E2 | | | | | | | A1 E2 B1 E2 | | | | | | | A1 E2 C1 E2 | 6782 | 16 AUXMEM.HOSTFS.s 923 | Data | 11 | | 16 | 00/E1DF : CE E2 D9 E2 | DW ERROR48,ERROR49,ERROR4A,ERROR4B,ERROR4C,ERROR4D,ERROR4E,ERROR4F | | | | | | E9 E2 FE E2 | | | | | | | 0F E3 1C E3 | | | | | | | 31 E3 46 E3 | 6783 | 16 AUXMEM.HOSTFS.s 924 | Data | 11 | | 16 | 00/E1EF : 54 E3 67 E3 | DW ERROR50,ERROR51,ERROR52,ERROR53,ERROR54,ERROR55,ERROR56,ERROR57 | | | | | | E9 E2 79 E3 | | | | | | | 8C E3 A1 E3 | | | | | | | B3 E3 C5 E3 | 6784 | 16 AUXMEM.HOSTFS.s 925 | Data | 11 | | 16 | 00/E1FF : F4 E3 F4 E3 | DW ERROR27,ERROR27,ERROR5A,ERROR27,ERROR27,ERROR27,ERROR5E,ERROR27 | | | | | | D7 E3 F4 E3 | | | | | | | F4 E3 F4 E3 | | | | | | | E9 E3 F4 E3 | 6785 | 16 AUXMEM.HOSTFS.s 926 | Empty | 11 | | 0 | 00/E20F | 6786 | 16 AUXMEM.HOSTFS.s 927 | Comment | 11 | | 0 | 00/E20F | * $27 - I/O error (disk not formatted) 6787 | 16 AUXMEM.HOSTFS.s 928 | Comment | 11 | | 0 | 00/E20F | * $28 - No device con'd (drive not present) Drive not present 6788 | 16 AUXMEM.HOSTFS.s 929 | Comment | 11 | | 0 | 00/E20F | * $29 -(GSOS Driver is busy) 6789 | 16 AUXMEM.HOSTFS.s 930 | Comment | 11 | | 0 | 00/E20F | * $2A -(Not a drive specifier) DRIVE/FREE: Bad drive 6790 | 16 AUXMEM.HOSTFS.s 931 | Comment | 11 | | 0 | 00/E20F | * $2B - Disk write protected. Disk write protected 6791 | 16 AUXMEM.HOSTFS.s 932 | Comment | 11 | | 0 | 00/E20F | * $2C - Bad byte count - file too long File too long 6792 | 16 AUXMEM.HOSTFS.s 933 | Comment | 11 | | 0 | 00/E20F | * $2D -(GSOS bad block number) (Sector not found?) 6793 | 16 AUXMEM.HOSTFS.s 934 | Comment | 11 | | 0 | 00/E20F | * $2E - Disk switched Disk changed 6794 | 16 AUXMEM.HOSTFS.s 935 | Comment | 11 | | 0 | 00/E20F | * $2F - Device is offline (drive empty/absent) 6795 | 16 AUXMEM.HOSTFS.s 936 | Empty | 11 | | 0 | 00/E20F | 6796 | 16 AUXMEM.HOSTFS.s 937 | Comment | 11 | | 0 | 00/E20F | * $40 - Invalid pathname syntax. Bad filename 6797 | 16 AUXMEM.HOSTFS.s 938 | Comment | 11 | | 0 | 00/E20F | * $41 -(Duplicate filename. split from $47) Is a directory 6798 | 16 AUXMEM.HOSTFS.s 939 | Comment | 11 | | 0 | 00/E20F | * $42 - File Control Block table full. Too many open 6799 | 16 AUXMEM.HOSTFS.s 940 | Comment | 11 | | 0 | 00/E20F | * $43 - Invalid reference number. Channel not open 6800 | 16 AUXMEM.HOSTFS.s 941 | Comment | 11 | | 0 | 00/E20F | * $44 - Path not found. (Dir not found) File not found 6801 | 16 AUXMEM.HOSTFS.s 942 | Comment | 11 | | 0 | 00/E20F | * $45 - Volume directory not found. Disk not found 6802 | 16 AUXMEM.HOSTFS.s 943 | Comment | 11 | | 0 | 00/E20F | * $46 - File not found. File not found 6803 | 16 AUXMEM.HOSTFS.s 944 | Comment | 11 | | 0 | 00/E20F | * $47 - Duplicate filename. (see also $41) File exists 6804 | 16 AUXMEM.HOSTFS.s 945 | Comment | 11 | | 0 | 00/E20F | * $48 - Overrun error. Disk full 6805 | 16 AUXMEM.HOSTFS.s 946 | Comment | 11 | | 0 | 00/E20F | * $49 - Volume directory full. Directory full 6806 | 16 AUXMEM.HOSTFS.s 947 | Comment | 11 | | 0 | 00/E20F | * $4A - Incompatible file format. Disk not recognised 6807 | 16 AUXMEM.HOSTFS.s 948 | Comment | 11 | | 0 | 00/E20F | * $4B - Unsupported storage_type. Not a directory 6808 | 16 AUXMEM.HOSTFS.s 949 | Comment | 11 | | 0 | 00/E20F | * $4C - End of file has been encountered. End of file 6809 | 16 AUXMEM.HOSTFS.s 950 | Comment | 11 | | 0 | 00/E20F | * $4D - Position out of range. Past end of file 6810 | 16 AUXMEM.HOSTFS.s 951 | Comment | 11 | | 0 | 00/E20F | * $4E - Access error. (see also $4F) RD/WR: Insufficient access 6811 | 16 AUXMEM.HOSTFS.s 952 | Comment | 11 | | 0 | 00/E20F | * $4F -(Access error. split from $4E) REN/DEL/SAV: Locked 6812 | 16 AUXMEM.HOSTFS.s 953 | Comment | 11 | | 0 | 00/E20F | * $50 - File already open. Can't - file open 6813 | 16 AUXMEM.HOSTFS.s 954 | Comment | 11 | | 0 | 00/E20F | * $51 - Directory count error. Broken directory 6814 | 16 AUXMEM.HOSTFS.s 955 | Comment | 11 | | 0 | 00/E20F | * $52 - Not a ProDOS disk. Disk not recognised 6815 | 16 AUXMEM.HOSTFS.s 956 | Comment | 11 | | 0 | 00/E20F | * $53 - Invalid parameter. Invalid parameter 6816 | 16 AUXMEM.HOSTFS.s 957 | Comment | 11 | | 0 | 00/E20F | * $54 -(Dir not empty when deleting, cf $4E) DEL: Directory not empty 6817 | 16 AUXMEM.HOSTFS.s 958 | Comment | 11 | | 0 | 00/E20F | * $55 - Volume Control Block table full. (Too many disks mounted) 6818 | 16 AUXMEM.HOSTFS.s 959 | Comment | 11 | | 0 | 00/E20F | * $56 - Bad buffer address. 6819 | 16 AUXMEM.HOSTFS.s 960 | Comment | 11 | | 0 | 00/E20F | * $57 - Duplicate volume. 6820 | 16 AUXMEM.HOSTFS.s 961 | Comment | 11 | | 0 | 00/E20F | * $58 - Bad volume bitmap/Not block device. 6821 | 16 AUXMEM.HOSTFS.s 962 | Comment | 11 | | 0 | 00/E20F | * $59 -(GSOS File level out of range) 6822 | 16 AUXMEM.HOSTFS.s 963 | Comment | 11 | | 0 | 00/E20F | * $5A - Bit map disk address is impossible. Sector not found 6823 | 16 AUXMEM.HOSTFS.s 964 | Comment | 11 | | 0 | 00/E20F | * $5B -(GSOS Bad ChangePath pathname) 6824 | 16 AUXMEM.HOSTFS.s 965 | Comment | 11 | | 0 | 00/E20F | * $5C -(GSOS Not executable file) 6825 | 16 AUXMEM.HOSTFS.s 966 | Comment | 11 | | 0 | 00/E20F | * $5D -(GSOS OS/FS not found) 6826 | 16 AUXMEM.HOSTFS.s 967 | Comment | 11 | | 0 | 00/E20F | * $5E -(Destination filename has wildcards) Wildcards 6827 | 16 AUXMEM.HOSTFS.s 968 | Comment | 11 | | 0 | 00/E20F | * $5F -(GSOS Too many applications) 6828 | 16 AUXMEM.HOSTFS.s 969 | Comment | 11 | | 0 | 00/E20F | * $60+ - (GSOS) 6829 | 16 AUXMEM.HOSTFS.s 970 | Empty | 11 | | 0 | 00/E20F | 6830 | 16 AUXMEM.HOSTFS.s 971 | Empty | 11 | | 0 | 00/E20F | 6831 | 16 AUXMEM.HOSTFS.s 972 | Comment | 11 | | 0 | 00/E20F | * AcornOS ProDOS 6832 | 16 AUXMEM.HOSTFS.s 973 | Data | 11 | | 2 | 00/E20F : 00 D2 | ERROR28 DW $D200 6833 | 16 AUXMEM.HOSTFS.s 974 | Data | 11 | | 16 | 00/E211 : 44 69 73 6B | ASC 'Disk not present' ; $28 - No device detected/connected | | | | | | 20 6E 6F 74 | | | | | | | 20 70 72 65 | | | | | | | 73 65 6E 74 | 6834 | 16 AUXMEM.HOSTFS.s 975 | Data | 11 | | 2 | 00/E221 : 00 CD | ERROR2A DW $CD00 6835 | 16 AUXMEM.HOSTFS.s 976 | Data | 11 | | 9 | 00/E223 : 42 61 64 20 | ASC 'Bad drive' ; $2A - Not a drive specifier | | | | | | 64 72 69 76 | | | | | | | 65 | 6836 | 16 AUXMEM.HOSTFS.s 977 | Data | 11 | | 2 | 00/E22C : 00 C9 | ERROR2B DW $C900 6837 | 16 AUXMEM.HOSTFS.s 978 | Data | 11 | | 24 | 00/E22E : 44 69 73 6B | ASC 'Disk write protected';$2B-Diskwriteprotected | | | | | | 20 77 72 69 | | | | | | | 74 65 20 70 | | | | | | | 72 6F 74 65 | | | | | | | 63 74 65 64 | | | | | | | 2B DE EC ED | 6838 | 16 AUXMEM.HOSTFS.s 979 | Data | 11 | | 2 | 00/E246 : 00 C6 | ERROR2C DW $C600 6839 | 16 AUXMEM.HOSTFS.s 980 | Data | 11 | | 12 | 00/E248 : 46 69 6C 65 | ASC 'File too big' ; $2C - Too big to save | | | | | | 20 74 6F 6F | | | | | | | 20 62 69 67 | 6840 | 16 AUXMEM.HOSTFS.s 981 | Data | 11 | | 2 | 00/E254 : 00 C8 | ERROR2E DW $C800 6841 | 16 AUXMEM.HOSTFS.s 982 | Data | 11 | | 12 | 00/E256 : 44 69 73 6B | ASC 'Disk changed' ; $2E - Disk switched | | | | | | 20 63 68 61 | | | | | | | 6E 67 65 64 | 6842 | 16 AUXMEM.HOSTFS.s 983 | Data | 11 | | 2 | 00/E262 : 00 CC | ERROR40 DW $CC00 6843 | 16 AUXMEM.HOSTFS.s 984 | Data | 11 | | 12 | 00/E264 : 42 61 64 20 | ASC 'Bad filename' ; $40 - Invalid pathname syntax | | | | | | 66 69 6C 65 | | | | | | | 6E 61 6D 65 | 6844 | 16 AUXMEM.HOSTFS.s 985 | Data | 11 | | 2 | 00/E270 : 00 C4 | ERROR41 DW $C400 6845 | 16 AUXMEM.HOSTFS.s 986 | Data | 11 | | 14 | 00/E272 : 49 73 20 61 | ASC 'Is a directory' ; $41 - Duplicate filename (split from $47) | | | | | | 20 64 69 72 | | | | | | | 65 63 74 6F | | | | | | | 72 79 | 6846 | 16 AUXMEM.HOSTFS.s 987 | Data | 11 | | 2 | 00/E280 : 00 C0 | ERROR42 DW $C000 6847 | 16 AUXMEM.HOSTFS.s 988 | Data | 11 | | 13 | 00/E282 : 54 6F 6F 20 | ASC 'Too many open' ; $42 - File Control Block table full | | | | | | 6D 61 6E 79 | | | | | | | 20 6F 70 65 | | | | | | | 6E | 6848 | 16 AUXMEM.HOSTFS.s 989 | Data | 11 | | 2 | 00/E28F : 00 DE | ERROR43 DW $DE00 6849 | 16 AUXMEM.HOSTFS.s 990 | Data | 11 | | 16 | 00/E291 : 43 68 61 6E | ASC 'Channel not open' ; $43 - Invalid reference number | | | | | | 6E 65 6C 20 | | | | | | | 6E 6F 74 20 | | | | | | | 6F 70 65 6E | 6850 | 16 AUXMEM.HOSTFS.s 991 | Empty | 11 | | 0 | 00/E2A1 | ERROR44 ; $44 - Path not found 6851 | 16 AUXMEM.HOSTFS.s 992 | Data | 11 | | 2 | 00/E2A1 : 00 D6 | ERROR46 DW $D600 6852 | 16 AUXMEM.HOSTFS.s 993 | Data | 11 | | 14 | 00/E2A3 : 46 69 6C 65 | ASC 'File not found' ; $46 - File not found | | | | | | 20 6E 6F 74 | | | | | | | 20 66 6F 75 | | | | | | | 6E 64 | 6853 | 16 AUXMEM.HOSTFS.s 994 | Data | 11 | | 2 | 00/E2B1 : 00 D6 | ERROR45 DW $D600 6854 | 16 AUXMEM.HOSTFS.s 995 | Data | 11 | | 14 | 00/E2B3 : 44 69 73 6B | ASC 'Disk not found' ; $45 - Volume directory not found | | | | | | 20 6E 6F 74 | | | | | | | 20 66 6F 75 | | | | | | | 6E 64 | 6855 | 16 AUXMEM.HOSTFS.s 996 | Data | 11 | | 2 | 00/E2C1 : 00 C4 | ERROR47 DW $C400 6856 | 16 AUXMEM.HOSTFS.s 997 | Data | 11 | | 11 | 00/E2C3 : 46 69 6C 65 | ASC 'File exists' ; $47 - Duplicate filename (see also $41) | | | | | | 20 65 78 69 | | | | | | | 73 74 73 | 6857 | 16 AUXMEM.HOSTFS.s 998 | Data | 11 | | 2 | 00/E2CE : 00 C6 | ERROR48 DW $C600 6858 | 16 AUXMEM.HOSTFS.s 999 | Data | 11 | | 9 | 00/E2D0 : 44 69 73 6B | ASC 'Disk full' ; $48 - Overrun error | | | | | | 20 66 75 6C | | | | | | | 6C | 6859 | 16 AUXMEM.HOSTFS.s 1000 | Data | 11 | | 2 | 00/E2D9 : 00 B3 | ERROR49 DW $B300 6860 | 16 AUXMEM.HOSTFS.s 1001 | Data | 11 | | 14 | 00/E2DB : 44 69 72 65 | ASC 'Directory full' ; $49 - Volume directory full | | | | | | 63 74 6F 72 | | | | | | | 79 20 66 75 | | | | | | | 6C 6C | 6861 | 16 AUXMEM.HOSTFS.s 1002 | Empty | 11 | | 0 | 00/E2E9 | ERROR4A ; $4A - Incompatible file format 6862 | 16 AUXMEM.HOSTFS.s 1003 | Data | 11 | | 2 | 00/E2E9 : 00 C8 | ERROR52 DW $C800 6863 | 16 AUXMEM.HOSTFS.s 1004 | Data | 11 | | 19 | 00/E2EB : 44 69 73 6B | ASC 'Disk not recognised'; $52 - Not a ProDOS disk | | | | | | 20 6E 6F 74 | | | | | | | 20 72 65 63 | | | | | | | 6F 67 6E 69 | | | | | | | 73 65 64 | 6864 | 16 AUXMEM.HOSTFS.s 1005 | Data | 11 | | 2 | 00/E2FE : 00 BE | ERROR4B DW $BE00 ; $4B - Unsupported storage_type 6865 | 16 AUXMEM.HOSTFS.s 1006 | Data | 11 | | 15 | 00/E300 : 4E 6F 74 20 | ASC 'Not a directory' | | | | | | 61 20 64 69 | | | | | | | 72 65 63 74 | | | | | | | 6F 72 79 | 6866 | 16 AUXMEM.HOSTFS.s 1007 | Data | 11 | | 2 | 00/E30F : 00 DF | ERROR4C DW $DF00 6867 | 16 AUXMEM.HOSTFS.s 1008 | Data | 11 | | 11 | 00/E311 : 45 6E 64 20 | ASC 'End of file' ; $4C - End of file has been encountered | | | | | | 6F 66 20 66 | | | | | | | 69 6C 65 | 6868 | 16 AUXMEM.HOSTFS.s 1009 | Data | 11 | | 2 | 00/E31C : 00 C1 | ERROR4D DW $C100 6869 | 16 AUXMEM.HOSTFS.s 1010 | Data | 11 | | 19 | 00/E31E : 4E 6F 74 20 | ASC 'Not open for update'; $4D - Position out of range | | | | | | 6F 70 65 6E | | | | | | | 20 66 6F 72 | | | | | | | 20 75 70 64 | | | | | | | 61 74 65 | 6870 | 16 AUXMEM.HOSTFS.s 1011 | Data | 11 | | 2 | 00/E331 : 00 BD | ERROR4E DW $BD00 6871 | 16 AUXMEM.HOSTFS.s 1012 | Data | 11 | | 19 | 00/E333 : 49 6E 73 75 | ASC 'Insufficient access'; $4E - Access error (see also $4F) | | | | | | 66 66 69 63 | | | | | | | 69 65 6E 74 | | | | | | | 20 61 63 63 | | | | | | | 65 73 73 | 6872 | 16 AUXMEM.HOSTFS.s 1013 | Data | 11 | | 2 | 00/E346 : 00 C3 | ERROR4F DW $C300 6873 | 16 AUXMEM.HOSTFS.s 1014 | Data | 11 | | 12 | 00/E348 : 45 6E 74 72 | ASC 'Entry locked' ; $4F - Access error (split from $4E) | | | | | | 79 20 6C 6F | | | | | | | 63 6B 65 64 | 6874 | 16 AUXMEM.HOSTFS.s 1015 | Data | 11 | | 2 | 00/E354 : 00 C2 | ERROR50 DW $C200 6875 | 16 AUXMEM.HOSTFS.s 1016 | Data | 11 | | 3 | 00/E356 : 43 61 6E | ASC 'Can' 6876 | 16 AUXMEM.HOSTFS.s 1017 | Data | 11 | | 1 | 00/E359 : 27 | DB $27 6877 | 16 AUXMEM.HOSTFS.s 1018 | Data | 11 | | 13 | 00/E35A : 74 20 2D 20 | ASC 't - file open' ; $50 - File is open | | | | | | 66 69 6C 65 | | | | | | | 20 6F 70 65 | | | | | | | 6E | 6878 | 16 AUXMEM.HOSTFS.s 1019 | Data | 11 | | 2 | 00/E367 : 00 A8 | ERROR51 DW $A800 6879 | 16 AUXMEM.HOSTFS.s 1020 | Data | 11 | | 16 | 00/E369 : 42 72 6F 6B | ASC 'Broken directory' ; $51 - Directory count error | | | | | | 65 6E 20 64 | | | | | | | 69 72 65 63 | | | | | | | 74 6F 72 79 | 6880 | 16 AUXMEM.HOSTFS.s 1021 | Data | 11 | | 2 | 00/E379 : 00 DC | ERROR53 DW $DC00 6881 | 16 AUXMEM.HOSTFS.s 1022 | Data | 11 | | 17 | 00/E37B : 49 6E 76 61 | ASC 'Invalid parameter' ; $53 - Invalid parameter | | | | | | 6C 69 64 20 | | | | | | | 70 61 72 61 | | | | | | | 6D 65 74 65 | | | | | | | 72 | 6882 | 16 AUXMEM.HOSTFS.s 1023 | Data | 11 | | 2 | 00/E38C : 00 D4 | ERROR54 DW $D400 6883 | 16 AUXMEM.HOSTFS.s 1024 | Data | 11 | | 19 | 00/E38E : 44 69 72 65 | ASC 'Directory not empty'; $54 - Directory not empty (split from $4E) | | | | | | 63 74 6F 72 | | | | | | | 79 20 6E 6F | | | | | | | 74 20 65 6D | | | | | | | 70 74 79 | 6884 | 16 AUXMEM.HOSTFS.s 1025 | Data | 11 | | 2 | 00/E3A1 : 00 FF | ERROR55 DW $FF00 6885 | 16 AUXMEM.HOSTFS.s 1026 | Data | 11 | | 16 | 00/E3A3 : 50 72 6F 44 | ASC 'ProDOS: VCB full' ; $55 - Volume Control Block table full | | | | | | 4F 53 3A 20 | | | | | | | 56 43 42 20 | | | | | | | 66 75 6C 6C | 6886 | 16 AUXMEM.HOSTFS.s 1027 | Data | 11 | | 2 | 00/E3B3 : 00 FF | ERROR56 DW $FF00 6887 | 16 AUXMEM.HOSTFS.s 1028 | Data | 11 | | 16 | 00/E3B5 : 50 72 6F 44 | ASC 'ProDOS: Bad addr' ; $56 - Bad buffer address | | | | | | 4F 53 3A 20 | | | | | | | 42 61 64 20 | | | | | | | 61 64 64 72 | 6888 | 16 AUXMEM.HOSTFS.s 1029 | Data | 11 | | 2 | 00/E3C5 : 00 FF | ERROR57 DW $FF00 6889 | 16 AUXMEM.HOSTFS.s 1030 | Data | 11 | | 16 | 00/E3C7 : 50 72 6F 44 | ASC 'ProDOS: Dup volm' ; $57 - Duplicate volume | | | | | | 4F 53 3A 20 | | | | | | | 44 75 70 20 | | | | | | | 76 6F 6C 6D | 6890 | 16 AUXMEM.HOSTFS.s 1031 | Data | 11 | | 2 | 00/E3D7 : 00 FF | ERROR5A DW $FF00 6891 | 16 AUXMEM.HOSTFS.s 1032 | Data | 11 | | 16 | 00/E3D9 : 53 65 63 74 | ASC 'Sector not found' ; $5A - Bit map disk address is impossible | | | | | | 6F 72 20 6E | | | | | | | 6F 74 20 66 | | | | | | | 6F 75 6E 64 | 6892 | 16 AUXMEM.HOSTFS.s 1033 | Data | 11 | | 2 | 00/E3E9 : 00 FD | ERROR5E DW $FD00 6893 | 16 AUXMEM.HOSTFS.s 1034 | Data | 11 | | 9 | 00/E3EB : 57 69 6C 64 | ASC 'Wildcards' ; $5E - Can't use wildcards in dest filename | | | | | | 63 61 72 64 | | | | | | | 73 | 6894 | 16 AUXMEM.HOSTFS.s 1035 | Data | 11 | | 2 | 00/E3F4 : 00 FF | ERROR27 DW $FF00 6895 | 16 AUXMEM.HOSTFS.s 1036 | Data | 11 | | 9 | 00/E3F6 : 49 2F 4F 20 | ASC 'I/O error' ; $27 - I/O error | | | | | | 65 72 72 6F | | | | | | | 72 | 6896 | 16 AUXMEM.HOSTFS.s 1037 | Data | 11 | | 1 | 00/E3FF : 00 | DB $00 6897 | 16 AUXMEM.HOSTFS.s 1038 | Empty | 11 | | 0 | 00/E400 | 6898 | 1 applecorn.s 204 | Directive | 11 | | 0 | 00/E400 | PUT AUXMEM.OSCLI 6899 | 17 AUXMEM.OSCLI.s 1 | Comment | 11 | | 0 | 00/E400 | * AUXMEM.OSCLI.S 6900 | 17 AUXMEM.OSCLI.s 2 | Comment | 11 | | 0 | 00/E400 | * (c) BOBBI 2021 GPLv3 6901 | 17 AUXMEM.OSCLI.s 3 | Comment | 11 | | 0 | 00/E400 | * 6902 | 17 AUXMEM.OSCLI.s 4 | Comment | 11 | | 0 | 00/E400 | * Handle OSCLI system calls 6903 | 17 AUXMEM.OSCLI.s 5 | Empty | 11 | | 0 | 00/E400 | 6904 | 17 AUXMEM.OSCLI.s 6 | Comment | 11 | | 0 | 00/E400 | * 22-Aug-2021 Uses dispatch table 6905 | 17 AUXMEM.OSCLI.s 7 | Comment | 11 | | 0 | 00/E400 | * Prepares parameters and hands on to API call 6906 | 17 AUXMEM.OSCLI.s 8 | Comment | 11 | | 0 | 00/E400 | * 24-Aug-2021 Combined *LOAD and *SAVE, full address parsing. 6907 | 17 AUXMEM.OSCLI.s 9 | Comment | 11 | | 0 | 00/E400 | * 02-Sep-2021 *LOAD/*SAVE now uses GSTRANS. 6908 | 17 AUXMEM.OSCLI.s 10 | Comment | 11 | | 0 | 00/E400 | * 12-Sep-2021 *HELP uses subject lookup, *HELP MOS, *HELP HOSTFS. 6909 | 17 AUXMEM.OSCLI.s 11 | Comment | 11 | | 0 | 00/E400 | * 25-Oct-2021 Implemented *BASIC. 6910 | 17 AUXMEM.OSCLI.s 12 | Empty | 11 | | 0 | 00/E400 | 6911 | 17 AUXMEM.OSCLI.s 13 | Empty | 11 | | 0 | 00/E400 | 6912 | 17 AUXMEM.OSCLI.s 14 | Comment | 11 | | 0 | 00/E400 | * COMMAND TABLE 6913 | 17 AUXMEM.OSCLI.s 15 | Comment | 11 | | 0 | 00/E400 | *************** 6914 | 17 AUXMEM.OSCLI.s 16 | Comment | 11 | | 0 | 00/E400 | * Table structure is: { string, byte OR $80, destword-1 } $00 6915 | 17 AUXMEM.OSCLI.s 17 | Comment | 11 | | 0 | 00/E400 | * fsc commands 6916 | 17 AUXMEM.OSCLI.s 18 | Data | 11 | | 3 | 00/E400 : 43 41 54 | CMDTABLE ASC 'CAT' ; Must be first command so matches '*.' 6917 | 17 AUXMEM.OSCLI.s 19 | Data | 11 | | 1 | 00/E403 : 85 | DB $85 6918 | 17 AUXMEM.OSCLI.s 20 | Data | 11 | | 2 | 00/E404 : 3F E5 | DW STARFSC-1 ; CAT -> FSC 5, XY=>params 6919 | 17 AUXMEM.OSCLI.s 21 | Data | 11 | | 3 | 00/E406 : 52 55 4E | ASC 'RUN' 6920 | 17 AUXMEM.OSCLI.s 22 | Data | 11 | | 1 | 00/E409 : 84 | DB $84 6921 | 17 AUXMEM.OSCLI.s 23 | Data | 11 | | 2 | 00/E40A : 3F E5 | DW STARFSC-1 ; RUN -> FSC 4, XY=>params 6922 | 17 AUXMEM.OSCLI.s 24 | Data | 11 | | 2 | 00/E40C : 45 58 | ASC 'EX' 6923 | 17 AUXMEM.OSCLI.s 25 | Data | 11 | | 1 | 00/E40E : 89 | DB $89 6924 | 17 AUXMEM.OSCLI.s 26 | Data | 11 | | 2 | 00/E40F : 3F E5 | DW STARFSC-1 ; EX -> FSC 9, XY=>params 6925 | 17 AUXMEM.OSCLI.s 27 | Data | 11 | | 4 | 00/E411 : 49 4E 46 4F | ASC 'INFO' 6926 | 17 AUXMEM.OSCLI.s 28 | Data | 11 | | 1 | 00/E415 : 8A | DB $8A 6927 | 17 AUXMEM.OSCLI.s 29 | Data | 11 | | 2 | 00/E416 : 3F E5 | DW STARFSC-1 ; INFO -> FSC 10, XY=>params 6928 | 17 AUXMEM.OSCLI.s 30 | Data | 11 | | 6 | 00/E418 : 52 45 4E 41 | ASC 'RENAME' | | | | | | 4D 45 | 6929 | 17 AUXMEM.OSCLI.s 31 | Data | 11 | | 1 | 00/E41E : 8C | DB $8C 6930 | 17 AUXMEM.OSCLI.s 32 | Data | 11 | | 2 | 00/E41F : 3F E5 | DW STARFSC-1 ; RENAME -> FSC 12, XY=>params 6931 | 17 AUXMEM.OSCLI.s 33 | Comment | 11 | | 0 | 00/E421 | * osfile commands 6932 | 17 AUXMEM.OSCLI.s 34 | Data | 11 | | 4 | 00/E421 : 4C 4F 41 44 | ASC 'LOAD' 6933 | 17 AUXMEM.OSCLI.s 35 | Data | 11 | | 1 | 00/E425 : FF | DB $FF 6934 | 17 AUXMEM.OSCLI.s 36 | Data | 11 | | 2 | 00/E426 : D7 E6 | DW STARLOAD-1 ; LOAD -> OSFILE FF, CBLK=>filename 6935 | 17 AUXMEM.OSCLI.s 37 | Data | 11 | | 4 | 00/E428 : 53 41 56 45 | ASC 'SAVE' 6936 | 17 AUXMEM.OSCLI.s 38 | Data | 11 | | 1 | 00/E42C : FF | DB $FF 6937 | 17 AUXMEM.OSCLI.s 39 | Data | 11 | | 2 | 00/E42D : D5 E6 | DW STARSAVE-1 ; SAVE -> OSFILE 00, CBLK=>filename 6938 | 17 AUXMEM.OSCLI.s 40 | Data | 11 | | 6 | 00/E42F : 44 45 4C 45 | ASC 'DELETE' | | | | | | 54 45 | 6939 | 17 AUXMEM.OSCLI.s 41 | Data | 11 | | 1 | 00/E435 : 86 | DB $86 6940 | 17 AUXMEM.OSCLI.s 42 | Data | 11 | | 2 | 00/E436 : 49 E7 | DW STARFILE-1 ; DELETE -> OSFILE 06, CBLK=>filename 6941 | 17 AUXMEM.OSCLI.s 43 | Data | 11 | | 5 | 00/E438 : 4D 4B 44 49 | ASC 'MKDIR' | | | | | | 52 | 6942 | 17 AUXMEM.OSCLI.s 44 | Data | 11 | | 1 | 00/E43D : 88 | DB $88 6943 | 17 AUXMEM.OSCLI.s 45 | Data | 11 | | 2 | 00/E43E : 49 E7 | DW STARFILE-1 ; MKDIR -> OSFILE 08, CBLK=>filename 6944 | 17 AUXMEM.OSCLI.s 46 | Data | 11 | | 4 | 00/E440 : 43 44 49 52 | ASC 'CDIR' 6945 | 17 AUXMEM.OSCLI.s 47 | Data | 11 | | 1 | 00/E444 : 88 | DB $88 6946 | 17 AUXMEM.OSCLI.s 48 | Data | 11 | | 2 | 00/E445 : 49 E7 | DW STARFILE-1 ; CDIR -> OSFILE 08, CBLK=>filename 6947 | 17 AUXMEM.OSCLI.s 49 | Comment | 11 | | 0 | 00/E447 | * osbyte commands 6948 | 17 AUXMEM.OSCLI.s 50 | Data | 11 | | 2 | 00/E447 : 46 58 | ASC 'FX' 6949 | 17 AUXMEM.OSCLI.s 51 | Data | 11 | | 1 | 00/E449 : 80 | DB $80 6950 | 17 AUXMEM.OSCLI.s 52 | Data | 11 | | 2 | 00/E44A : 6E E5 | DW STARFX-1 ; FX -> OSBYTE A,X,Y (LPTR)=>params 6951 | 17 AUXMEM.OSCLI.s 53 | Data | 11 | | 3 | 00/E44C : 4F 50 54 | ASC 'OPT' 6952 | 17 AUXMEM.OSCLI.s 54 | Data | 11 | | 1 | 00/E44F : 8B | DB $8B 6953 | 17 AUXMEM.OSCLI.s 55 | Data | 11 | | 2 | 00/E450 : 73 E5 | DW STARBYTE-1 ; OPT -> OSBYTE &8B,X,Y XY=>params 6954 | 17 AUXMEM.OSCLI.s 56 | Comment | 11 | | 0 | 00/E452 | * others 6955 | 17 AUXMEM.OSCLI.s 57 | Data | 11 | | 4 | 00/E452 : 51 55 49 54 | ASC 'QUIT' 6956 | 17 AUXMEM.OSCLI.s 58 | Data | 11 | | 1 | 00/E456 : 80 | DB $80 6957 | 17 AUXMEM.OSCLI.s 59 | Data | 11 | | 2 | 00/E457 : BE E6 | DW STARQUIT-1 ; QUIT -> (LPTR)=>params 6958 | 17 AUXMEM.OSCLI.s 60 | Data | 11 | | 4 | 00/E459 : 48 45 4C 50 | ASC 'HELP' 6959 | 17 AUXMEM.OSCLI.s 61 | Data | 11 | | 1 | 00/E45D : FF | DB $FF 6960 | 17 AUXMEM.OSCLI.s 62 | Data | 11 | | 2 | 00/E45E : 53 E6 | DW STARHELP-1 ; HELP -> XY=>params 6961 | 17 AUXMEM.OSCLI.s 63 | Data | 11 | | 5 | 00/E460 : 42 41 53 49 | ASC 'BASIC' | | | | | | 43 | 6962 | 17 AUXMEM.OSCLI.s 64 | Data | 11 | | 1 | 00/E465 : 80 | DB $80 6963 | 17 AUXMEM.OSCLI.s 65 | Data | 11 | | 2 | 00/E466 : 5F E7 | DW STARBASIC-1 ; BASIC -> (LPTR)=>params 6964 | 17 AUXMEM.OSCLI.s 66 | Data | 11 | | 3 | 00/E468 : 4B 45 59 | ASC 'KEY' 6965 | 17 AUXMEM.OSCLI.s 67 | Data | 11 | | 1 | 00/E46B : 80 | DB $80 6966 | 17 AUXMEM.OSCLI.s 68 | Data | 11 | | 2 | 00/E46C : 5E E7 | DW STARKEY-1 ; KEY -> (LPTR)=>params 6967 | 17 AUXMEM.OSCLI.s 69 | Data | 11 | | 4 | 00/E46E : 45 43 48 4F | ASC 'ECHO' 6968 | 17 AUXMEM.OSCLI.s 70 | Data | 11 | | 1 | 00/E472 : 80 | DB $80 6969 | 17 AUXMEM.OSCLI.s 71 | Data | 11 | | 2 | 00/E473 : 72 E7 | DW ECHO-1 ; ECHO -> (LPTR)=>params 6970 | 17 AUXMEM.OSCLI.s 72 | Comment | 11 | | 0 | 00/E475 | * DUMP <file> 6971 | 17 AUXMEM.OSCLI.s 73 | Comment | 11 | | 0 | 00/E475 | * TYPE <file> 6972 | 17 AUXMEM.OSCLI.s 74 | Comment | 11 | | 0 | 00/E475 | * BUILD <file> 6973 | 17 AUXMEM.OSCLI.s 75 | Comment | 11 | | 0 | 00/E475 | * terminator 6974 | 17 AUXMEM.OSCLI.s 76 | Data | 11 | | 1 | 00/E475 : FF | DB $FF 6975 | 17 AUXMEM.OSCLI.s 77 | Empty | 11 | | 0 | 00/E476 | 6976 | 17 AUXMEM.OSCLI.s 78 | Comment | 11 | | 0 | 00/E476 | * *HELP TABLE 6977 | 17 AUXMEM.OSCLI.s 79 | Comment | 11 | | 0 | 00/E476 | ************* 6978 | 17 AUXMEM.OSCLI.s 80 | Data | 11 | | 3 | 00/E476 : 4D 4F 53 | HLPTABLE ASC 'MOS' 6979 | 17 AUXMEM.OSCLI.s 81 | Data | 11 | | 1 | 00/E479 : 80 | DB $80 6980 | 17 AUXMEM.OSCLI.s 82 | Data | 11 | | 2 | 00/E47A : 7F E6 | DW HELPMOS-1 ; *HELP MOS 6981 | 17 AUXMEM.OSCLI.s 83 | Data | 11 | | 6 | 00/E47C : 48 4F 53 54 | ASC 'HOSTFS' | | | | | | 46 53 | 6982 | 17 AUXMEM.OSCLI.s 84 | Data | 11 | | 1 | 00/E482 : 80 | DB $80 6983 | 17 AUXMEM.OSCLI.s 85 | Data | 11 | | 2 | 00/E483 : 79 E6 | DW HELPHOSTFS-1 ; *HELP HOSTFS 6984 | 17 AUXMEM.OSCLI.s 86 | Data | 11 | | 1 | 00/E485 : FF | DB $FF 6985 | 17 AUXMEM.OSCLI.s 87 | Empty | 11 | | 0 | 00/E486 | 6986 | 17 AUXMEM.OSCLI.s 88 | Empty | 11 | | 0 | 00/E486 | 6987 | 17 AUXMEM.OSCLI.s 89 | Comment | 11 | | 0 | 00/E486 | * Command table lookup 6988 | 17 AUXMEM.OSCLI.s 90 | Comment | 11 | | 0 | 00/E486 | * On entry, (OSLPTR)=>command string 6989 | 17 AUXMEM.OSCLI.s 91 | Comment | 11 | | 0 | 00/E486 | * XY=>command table 6990 | 17 AUXMEM.OSCLI.s 92 | Comment | 11 | | 0 | 00/E486 | * On exit, A=0 done, command called 6991 | 17 AUXMEM.OSCLI.s 93 | Comment | 11 | | 0 | 00/E486 | * A<>0 no match 6992 | 17 AUXMEM.OSCLI.s 94 | Comment | 11 | | 0 | 00/E486 | * 6993 | 17 AUXMEM.OSCLI.s 95 | Comment | 11 | | 0 | 00/E486 | * Search command table 6994 | 17 AUXMEM.OSCLI.s 96 | Code | 11 | | 2 | 00/E486 : 86 E6 | CLILOOKUP STX {$E6}+0 ; Start of command table 6995 | 17 AUXMEM.OSCLI.s 97 | Code | 11 | | 2 | 00/E488 : 84 E7 | STY {$E6}+1 6996 | 17 AUXMEM.OSCLI.s 98 | Code | 11 | | 2 | 00/E48A : A2 00 | LDX #0 ; (ZP,X)=>command table 6997 | 17 AUXMEM.OSCLI.s 99 | Code | 11 | | 2 | 00/E48C : A0 00 | CLILP4 LDY #0 ; Start of command line 6998 | 17 AUXMEM.OSCLI.s 100 | Code | 11 | | 2 | 00/E48E : A1 E6 | CLILP5 LDA ({$E6},X) 6999 | 17 AUXMEM.OSCLI.s 101 | Code | 11 | | 2 | 00/E490 : 30 2F | BMI CLIMATCH ; End of table string 7000 | 17 AUXMEM.OSCLI.s 102 | Code | 11 | | 2 | 00/E492 : 51 F2 | EOR ({$F2}),Y 7001 | 17 AUXMEM.OSCLI.s 103 | Code | 11 | | 2 | 00/E494 : 29 DF | AND #$DF ; Force upper case match 7002 | 17 AUXMEM.OSCLI.s 104 | Code | 11 | | 2 | 00/E496 : D0 06 | BNE CLINOMATCH 7003 | 17 AUXMEM.OSCLI.s 105 | Code | 11 | | 3 | 00/E498 : 20 EE E4 | JSR CLISTEP ; Step to next table char 7004 | 17 AUXMEM.OSCLI.s 106 | Code | 11 | | 1 | 00/E49B : C8 | INY ; Step to next command char 7005 | 17 AUXMEM.OSCLI.s 107 | Code | 11 | | 2 | 00/E49C : D0 F0 | BNE CLILP5 ; Loop to check 7006 | 17 AUXMEM.OSCLI.s 108 | Empty | 11 | | 0 | 00/E49E | 7007 | 17 AUXMEM.OSCLI.s 109 | Code | 11 | | 2 | 00/E49E : B1 F2 | CLINOMATCH LDA ({$F2}),Y 7008 | 17 AUXMEM.OSCLI.s 110 | Code | 11 | | 2 | 00/E4A0 : C9 2E | CMP #'.' ; Abbreviation? 7009 | 17 AUXMEM.OSCLI.s 111 | Code | 11 | | 2 | 00/E4A2 : F0 11 | BEQ CLIDOT 7010 | 17 AUXMEM.OSCLI.s 112 | Code | 11 | | 3 | 00/E4A4 : 20 EE E4 | CLINEXT JSR CLISTEP ; No match, step to next entry 7011 | 17 AUXMEM.OSCLI.s 113 | Code | 11 | | 2 | 00/E4A7 : 10 FB | BPL CLINEXT 7012 | 17 AUXMEM.OSCLI.s 114 | Code | 11 | | 3 | 00/E4A9 : 20 EE E4 | CLINEXT2 JSR CLISTEP ; Step past byte, address 7013 | 17 AUXMEM.OSCLI.s 115 | Code | 11 | | 3 | 00/E4AC : 20 EE E4 | JSR CLISTEP 7014 | 17 AUXMEM.OSCLI.s 116 | Code | 11 | | 3 | 00/E4AF : 20 EE E4 | JSR CLISTEP 7015 | 17 AUXMEM.OSCLI.s 117 | Code | 11 | | 2 | 00/E4B2 : 10 D8 | BPL CLILP4 ; Loop to check next 7016 | 17 AUXMEM.OSCLI.s 118 | Code | 11 | | 1 | 00/E4B4 : 60 | RTS ; Exit, A>$7F 7017 | 17 AUXMEM.OSCLI.s 119 | Empty | 11 | | 0 | 00/E4B5 | 7018 | 17 AUXMEM.OSCLI.s 120 | Code | 11 | | 2 | 00/E4B5 : A1 E6 | CLIDOT LDA ({$E6},X) 7019 | 17 AUXMEM.OSCLI.s 121 | Code | 11 | | 2 | 00/E4B7 : 30 F0 | BMI CLINEXT2 ; Dot after full word, no match 7020 | 17 AUXMEM.OSCLI.s 122 | Code | 11 | | 3 | 00/E4B9 : 20 EE E4 | CLIDOT2 JSR CLISTEP ; Step to command address 7021 | 17 AUXMEM.OSCLI.s 123 | Code | 11 | | 2 | 00/E4BC : 10 FB | BPL CLIDOT2 7022 | 17 AUXMEM.OSCLI.s 124 | Code | 11 | | 1 | 00/E4BE : C8 | INY ; Step past dot 7023 | 17 AUXMEM.OSCLI.s 125 | Code | 11 | | 2 | 00/E4BF : D0 0A | BNE CLIMATCH2 ; Jump to this command 7024 | 17 AUXMEM.OSCLI.s 126 | Empty | 11 | | 0 | 00/E4C1 | 7025 | 17 AUXMEM.OSCLI.s 127 | Code | 11 | | 2 | 00/E4C1 : B1 F2 | CLIMATCH LDA ({$F2}),Y 7026 | 17 AUXMEM.OSCLI.s 128 | Code | 11 | | 2 | 00/E4C3 : C9 2E | CMP #'.' 7027 | 17 AUXMEM.OSCLI.s 129 | Code | 11 | | 2 | 00/E4C5 : F0 DD | BEQ CLINEXT ; Longer abbreviation, eg 'CAT.' 7028 | 17 AUXMEM.OSCLI.s 130 | Code | 11 | | 2 | 00/E4C7 : C9 41 | CMP #'A' 7029 | 17 AUXMEM.OSCLI.s 131 | Code | 11 | | 2 | 00/E4C9 : B0 D9 | BCS CLINEXT ; More letters, eg 'HELPER' 7030 | 17 AUXMEM.OSCLI.s 132 | Code | 11 | | 3 | 00/E4CB : 20 D1 E4 | CLIMATCH2 JSR CLIMATCH3 ; Call the routine 7031 | 17 AUXMEM.OSCLI.s 133 | Code | 11 | | 2 | 00/E4CE : A9 00 | LDA #0 7032 | 17 AUXMEM.OSCLI.s 134 | Code | 11 | | 1 | 00/E4D0 : 60 | RTS ; Return A=0 to claim 7033 | 17 AUXMEM.OSCLI.s 135 | Empty | 11 | | 0 | 00/E4D1 | 7034 | 17 AUXMEM.OSCLI.s 136 | Code | 11 | | 3 | 00/E4D1 : 20 2F E6 | CLIMATCH3 JSR SKIPSPC ; (OSLPTR),Y=>parameters 7035 | 17 AUXMEM.OSCLI.s 137 | Code | 11 | | 2 | 00/E4D4 : A1 E6 | LDA ({$E6},X) ; Command byte 7036 | 17 AUXMEM.OSCLI.s 138 | Code | 11 | | 1 | 00/E4D6 : 48 | PHA 7037 | 17 AUXMEM.OSCLI.s 139 | Code | 11 | | 3 | 00/E4D7 : 20 EE E4 | JSR CLISTEP ; Address low byte 7038 | 17 AUXMEM.OSCLI.s 140 | Code | 11 | | 2 | 00/E4DA : 85 EB | STA {$EB} 7039 | 17 AUXMEM.OSCLI.s 141 | Code | 11 | | 3 | 00/E4DC : 20 EE E4 | JSR CLISTEP ; Address high byte 7040 | 17 AUXMEM.OSCLI.s 142 | Code | 11 | | 1 | 00/E4DF : FA | PLX ; Get command byte 7041 | 17 AUXMEM.OSCLI.s 143 | Code | 11 | | 1 | 00/E4E0 : 48 | PHA ; Push address high 7042 | 17 AUXMEM.OSCLI.s 144 | Code | 11 | | 2 | 00/E4E1 : A5 EB | LDA {$EB} 7043 | 17 AUXMEM.OSCLI.s 145 | Code | 11 | | 1 | 00/E4E3 : 48 | PHA ; Push address low 7044 | 17 AUXMEM.OSCLI.s 146 | Code | 11 | | 1 | 00/E4E4 : 8A | TXA ; Command byte 7045 | 17 AUXMEM.OSCLI.s 147 | Code | 11 | | 1 | 00/E4E5 : 48 | PHA 7046 | 17 AUXMEM.OSCLI.s 148 | Code | 11 | | 1 | 00/E4E6 : 0A | ASL A ; Drop bit 7 7047 | 17 AUXMEM.OSCLI.s 149 | Code | 11 | | 2 | 00/E4E7 : F0 03 | BEQ CLICALL ; If $80 don't convert LPTR 7048 | 17 AUXMEM.OSCLI.s 150 | Code | 11 | | 3 | 00/E4E9 : 20 42 E6 | JSR LPTRtoXY ; XY=>parameters 7049 | 17 AUXMEM.OSCLI.s 151 | Code | 11 | | 1 | 00/E4EC : 68 | CLICALL PLA ; A=command parameter 7050 | 17 AUXMEM.OSCLI.s 152 | Code | 11 | | 1 | 00/E4ED : 60 | RTS ; Call command routine 7051 | 17 AUXMEM.OSCLI.s 153 | Empty | 11 | | 0 | 00/E4EE | 7052 | 17 AUXMEM.OSCLI.s 154 | Code | 11 | | 2 | 00/E4EE : F6 E6 | CLISTEP INC {$E6}+0,X ; Point to next table byte 7053 | 17 AUXMEM.OSCLI.s 155 | Code | 11 | | 2 | 00/E4F0 : D0 02 | BNE CLISTEP2 7054 | 17 AUXMEM.OSCLI.s 156 | Code | 11 | | 2 | 00/E4F2 : F6 E7 | INC {$E6}+1,X 7055 | 17 AUXMEM.OSCLI.s 157 | Code | 11 | | 2 | 00/E4F4 : A1 E6 | CLISTEP2 LDA ({$E6},X) ; Get next byte 7056 | 17 AUXMEM.OSCLI.s 158 | Code | 11 | | 1 | 00/E4F6 : 60 | RTS 7057 | 17 AUXMEM.OSCLI.s 159 | Empty | 11 | | 0 | 00/E4F7 | 7058 | 17 AUXMEM.OSCLI.s 160 | Empty | 11 | | 0 | 00/E4F7 | 7059 | 17 AUXMEM.OSCLI.s 161 | Comment | 11 | | 0 | 00/E4F7 | * OSCLI HANDLER 7060 | 17 AUXMEM.OSCLI.s 162 | Comment | 11 | | 0 | 00/E4F7 | * On entry, XY=>command string 7061 | 17 AUXMEM.OSCLI.s 163 | Comment | 11 | | 0 | 00/E4F7 | * On exit, AXY corrupted or error generated 7062 | 17 AUXMEM.OSCLI.s 164 | Comment | 11 | | 0 | 00/E4F7 | * 7063 | 17 AUXMEM.OSCLI.s 165 | Code | 11 | | 3 | 00/E4F7 : 20 4D E6 | CLIHND JSR XYtoLPTR ; LPTR=>command line 7064 | 17 AUXMEM.OSCLI.s 166 | Code | 11 | | 2 | 00/E4FA : B1 F2 | CLILP1 LDA ({$F2}),Y 7065 | 17 AUXMEM.OSCLI.s 167 | Code | 11 | | 2 | 00/E4FC : C9 0D | CMP #$0D 7066 | 17 AUXMEM.OSCLI.s 168 | Code | 11 | | 2 | 00/E4FE : F0 04 | BEQ CLI2 7067 | 17 AUXMEM.OSCLI.s 169 | Code | 11 | | 1 | 00/E500 : C8 | INY 7068 | 17 AUXMEM.OSCLI.s 170 | Code | 11 | | 2 | 00/E501 : D0 F7 | BNE CLILP1 7069 | 17 AUXMEM.OSCLI.s 171 | Code | 11 | | 1 | 00/E503 : 60 | CLIEXIT1 RTS ; No terminating <cr> 7070 | 17 AUXMEM.OSCLI.s 172 | Code | 11 | | 2 | 00/E504 : A0 FF | CLI2 LDY #$FF 7071 | 17 AUXMEM.OSCLI.s 173 | Code | 11 | | 3 | 00/E506 : 20 2E E6 | CLILP2 JSR SKIPSPC1 ; Skip leading spaces 7072 | 17 AUXMEM.OSCLI.s 174 | Code | 11 | | 2 | 00/E509 : C9 2A | CMP #'*' ; Skip leading stars 7073 | 17 AUXMEM.OSCLI.s 175 | Code | 11 | | 2 | 00/E50B : F0 F9 | BEQ CLILP2 7074 | 17 AUXMEM.OSCLI.s 176 | Code | 11 | | 2 | 00/E50D : C9 0D | CMP #$0D 7075 | 17 AUXMEM.OSCLI.s 177 | Code | 11 | | 2 | 00/E50F : F0 F2 | BEQ CLIEXIT1 ; Null string 7076 | 17 AUXMEM.OSCLI.s 178 | Code | 11 | | 2 | 00/E511 : C9 7C | CMP #'|' 7077 | 17 AUXMEM.OSCLI.s 179 | Code | 11 | | 2 | 00/E513 : F0 EE | BEQ CLIEXIT1 ; Comment 7078 | 17 AUXMEM.OSCLI.s 180 | Code | 11 | | 2 | 00/E515 : C9 2F | CMP #'/' 7079 | 17 AUXMEM.OSCLI.s 181 | Code | 11 | | 2 | 00/E517 : F0 10 | BEQ CLISLASH 7080 | 17 AUXMEM.OSCLI.s 182 | Code | 11 | | 3 | 00/E519 : 20 42 E6 | JSR LPTRtoXY ; Add Y to LPTR 7081 | 17 AUXMEM.OSCLI.s 183 | Code | 11 | | 3 | 00/E51C : 20 4D E6 | JSR XYtoLPTR ; LPTR=>start of actual command 7082 | 17 AUXMEM.OSCLI.s 184 | Code | 11 | | 2 | 00/E51F : A2 00 | LDX #<CMDTABLE ; XY=>command table 7083 | 17 AUXMEM.OSCLI.s 185 | Code | 11 | | 2 | 00/E521 : A0 E4 | LDY #>CMDTABLE 7084 | 17 AUXMEM.OSCLI.s 186 | Code | 11 | | 3 | 00/E523 : 20 86 E4 | JSR CLILOOKUP ; Look for command 7085 | 17 AUXMEM.OSCLI.s 187 | Code | 11 | | 2 | 00/E526 : D0 0A | BNE CLIUNKNOWN ; No match 7086 | 17 AUXMEM.OSCLI.s 188 | Code | 11 | | 1 | 00/E528 : 60 | CLIDONE RTS 7087 | 17 AUXMEM.OSCLI.s 189 | Empty | 11 | | 0 | 00/E529 | 7088 | 17 AUXMEM.OSCLI.s 190 | Code | 11 | | 3 | 00/E529 : 20 2E E6 | CLISLASH JSR SKIPSPC1 7089 | 17 AUXMEM.OSCLI.s 191 | Code | 11 | | 2 | 00/E52C : F0 FA | BEQ CLIDONE ; */<cr> 7090 | 17 AUXMEM.OSCLI.s 192 | Code | 11 | | 2 | 00/E52E : A9 02 | LDA #$02 7091 | 17 AUXMEM.OSCLI.s 193 | Code | 11 | | 2 | 00/E530 : D0 09 | BNE STARFSC2 ; FSC 2 = */filename 7092 | 17 AUXMEM.OSCLI.s 194 | Empty | 11 | | 0 | 00/E532 | 7093 | 17 AUXMEM.OSCLI.s 195 | Code | 11 | | 2 | 00/E532 : A9 04 | CLIUNKNOWN LDA #$04 7094 | 17 AUXMEM.OSCLI.s 196 | Code | 11 | | 3 | 00/E534 : 20 EC D0 | JSR SERVICE ; Offer to sideways ROM(s) 7095 | 17 AUXMEM.OSCLI.s 197 | Code | 11 | | 2 | 00/E537 : F0 EF | BEQ CLIDONE ; Claimed 7096 | 17 AUXMEM.OSCLI.s 198 | Code | 11 | | 2 | 00/E539 : A9 03 | LDA #$03 ; FSC 3 = unknown command 7097 | 17 AUXMEM.OSCLI.s 199 | Code | 11 | | 1 | 00/E53B : 48 | STARFSC2 PHA 7098 | 17 AUXMEM.OSCLI.s 200 | Code | 11 | | 3 | 00/E53C : 20 42 E6 | JSR LPTRtoXY ; XY=>command 7099 | 17 AUXMEM.OSCLI.s 201 | Code | 11 | | 1 | 00/E53F : 68 | PLA 7100 | 17 AUXMEM.OSCLI.s 202 | Code | 11 | | 2 | 00/E540 : 29 7F | STARFSC AND #$7F ; A=command, XY=>parameters 7101 | 17 AUXMEM.OSCLI.s 203 | Code | 11 | | 3 | 00/E542 : 20 7D E9 | JSR CALLFSCV ; Hand on to filing system 7102 | 17 AUXMEM.OSCLI.s 204 | Code | 11 | | 1 | 00/E545 : AA | TAX 7103 | 17 AUXMEM.OSCLI.s 205 | Code | 11 | | 2 | 00/E546 : F0 E0 | BEQ CLIDONE ; A=0, FSC call implemented 7104 | 17 AUXMEM.OSCLI.s 206 | Code | 11 | | 1 | 00/E548 : 00 | ERRBADCMD BRK 7105 | 17 AUXMEM.OSCLI.s 207 | Data | 11 | | 1 | 00/E549 : FE | DB $FE 7106 | 17 AUXMEM.OSCLI.s 208 | Data | 11 | | 11 | 00/E54A : 42 61 64 20 | ASC 'Bad command' | | | | | | 63 6F 6D 6D | | | | | | | 61 6E 64 | 7107 | 17 AUXMEM.OSCLI.s 209 | Code | 11 | | 1 | 00/E555 : 00 | ERRBADNUM BRK 7108 | 17 AUXMEM.OSCLI.s 210 | Data | 11 | | 1 | 00/E556 : FC | DB $FC 7109 | 17 AUXMEM.OSCLI.s 211 | Data | 11 | | 10 | 00/E557 : 42 61 64 20 | ASC 'Bad number' | | | | | | 6E 75 6D 62 | | | | | | | 65 72 | 7110 | 17 AUXMEM.OSCLI.s 212 | Code | 11 | | 1 | 00/E561 : 00 | ERRBADADD BRK 7111 | 17 AUXMEM.OSCLI.s 213 | Data | 11 | | 1 | 00/E562 : FC | DB $FC 7112 | 17 AUXMEM.OSCLI.s 214 | Data | 11 | | 11 | 00/E563 : 42 61 64 20 | ASC 'Bad address' | | | | | | 61 64 64 72 | | | | | | | 65 73 73 | 7113 | 17 AUXMEM.OSCLI.s 215 | Code | 11 | | 1 | 00/E56E : 00 | BRK 7114 | 17 AUXMEM.OSCLI.s 216 | Empty | 11 | | 0 | 00/E56F | 7115 | 17 AUXMEM.OSCLI.s 217 | Empty | 11 | | 0 | 00/E56F | 7116 | 17 AUXMEM.OSCLI.s 218 | Comment | 11 | | 0 | 00/E56F | * *FX num(,num(,num)) 7117 | 17 AUXMEM.OSCLI.s 219 | Comment | 11 | | 0 | 00/E56F | ********************* 7118 | 17 AUXMEM.OSCLI.s 220 | Code | 11 | | 3 | 00/E56F : 20 A4 E5 | STARFX JSR SCANDEC 7119 | 17 AUXMEM.OSCLI.s 221 | Code | 11 | | 2 | 00/E572 : 80 03 | BRA STARBYTE1 7120 | 17 AUXMEM.OSCLI.s 222 | Empty | 11 | | 0 | 00/E574 | 7121 | 17 AUXMEM.OSCLI.s 223 | Comment | 11 | | 0 | 00/E574 | * Commands passed to OSBYTE 7122 | 17 AUXMEM.OSCLI.s 224 | Comment | 11 | | 0 | 00/E574 | *************************** 7123 | 17 AUXMEM.OSCLI.s 225 | Code | 11 | | 3 | 00/E574 : 20 4D E6 | STARBYTE JSR XYtoLPTR 7124 | 17 AUXMEM.OSCLI.s 226 | Code | 11 | | 2 | 00/E577 : 85 EF | STARBYTE1 STA {$EF} ; Save OSBYTE number 7125 | 17 AUXMEM.OSCLI.s 227 | Code | 11 | | 2 | 00/E579 : A9 00 | LDA #$00 ; Default X and Y 7126 | 17 AUXMEM.OSCLI.s 228 | Code | 11 | | 2 | 00/E57B : 85 F0 | STA {{$EF}+1} 7127 | 17 AUXMEM.OSCLI.s 229 | Code | 11 | | 2 | 00/E57D : 85 F1 | STA {{{$EF}+1}+1} 7128 | 17 AUXMEM.OSCLI.s 230 | Code | 11 | | 3 | 00/E57F : 20 28 E6 | JSR SKIPCOMMA ; Step past any comma/spaces 7129 | 17 AUXMEM.OSCLI.s 231 | Code | 11 | | 2 | 00/E582 : F0 14 | BEQ STARBYTE2 ; End of line, do it 7130 | 17 AUXMEM.OSCLI.s 232 | Code | 11 | | 3 | 00/E584 : 20 A4 E5 | JSR SCANDEC ; Scan for X param 7131 | 17 AUXMEM.OSCLI.s 233 | Code | 11 | | 2 | 00/E587 : 85 F0 | STA {{$EF}+1} ; Store it 7132 | 17 AUXMEM.OSCLI.s 234 | Code | 11 | | 3 | 00/E589 : 20 28 E6 | JSR SKIPCOMMA ; Step past any comma/spaces 7133 | 17 AUXMEM.OSCLI.s 235 | Code | 11 | | 2 | 00/E58C : F0 0A | BEQ STARBYTE2 ; End of line, do it 7134 | 17 AUXMEM.OSCLI.s 236 | Code | 11 | | 3 | 00/E58E : 20 A4 E5 | JSR SCANDEC ; Scan for Y param 7135 | 17 AUXMEM.OSCLI.s 237 | Code | 11 | | 2 | 00/E591 : 85 F1 | STA {{{$EF}+1}+1} ; Store it 7136 | 17 AUXMEM.OSCLI.s 238 | Code | 11 | | 3 | 00/E593 : 20 2F E6 | JSR SKIPSPC 7137 | 17 AUXMEM.OSCLI.s 239 | Code | 11 | | 2 | 00/E596 : D0 B0 | BNE ERRBADCMD ; More params, error 7138 | 17 AUXMEM.OSCLI.s 240 | Code | 11 | | 2 | 00/E598 : A4 F1 | STARBYTE2 LDY {{{$EF}+1}+1} 7139 | 17 AUXMEM.OSCLI.s 241 | Code | 11 | | 2 | 00/E59A : A6 F0 | LDX {{$EF}+1} 7140 | 17 AUXMEM.OSCLI.s 242 | Code | 11 | | 2 | 00/E59C : A5 EF | LDA {$EF} 7141 | 17 AUXMEM.OSCLI.s 243 | Code | 11 | | 3 | 00/E59E : 20 F4 FF | JSR OSBYTE 7142 | 17 AUXMEM.OSCLI.s 244 | Code | 11 | | 2 | 00/E5A1 : 70 A5 | BVS ERRBADCMD 7143 | 17 AUXMEM.OSCLI.s 245 | Code | 11 | | 1 | 00/E5A3 : 60 | RTS 7144 | 17 AUXMEM.OSCLI.s 246 | Empty | 11 | | 0 | 00/E5A4 | 7145 | 17 AUXMEM.OSCLI.s 247 | Comment | 11 | | 0 | 00/E5A4 | * Scan decimal number 7146 | 17 AUXMEM.OSCLI.s 248 | Code | 11 | | 3 | 00/E5A4 : 20 2F E6 | SCANDEC JSR SKIPSPC 7147 | 17 AUXMEM.OSCLI.s 249 | Code | 11 | | 3 | 00/E5A7 : 20 CC E5 | JSR SCANDIGIT ; Check first digit 7148 | 17 AUXMEM.OSCLI.s 250 | Code | 11 | | 2 | 00/E5AA : B0 A9 | BCS ERRBADNUM ; Doesn't start with a digit 7149 | 17 AUXMEM.OSCLI.s 251 | Code | 11 | | 2 | 00/E5AC : 85 EB | SCANDECLP STA {$EB} ; Store as current number 7150 | 17 AUXMEM.OSCLI.s 252 | Code | 11 | | 3 | 00/E5AE : 20 CC E5 | JSR SCANDIGIT ; Check next digit 7151 | 17 AUXMEM.OSCLI.s 253 | Code | 11 | | 2 | 00/E5B1 : B0 15 | BCS SCANDECOK ; No more digits 7152 | 17 AUXMEM.OSCLI.s 254 | Code | 11 | | 1 | 00/E5B3 : 48 | PHA 7153 | 17 AUXMEM.OSCLI.s 255 | Code | 11 | | 2 | 00/E5B4 : A5 EB | LDA {$EB} 7154 | 17 AUXMEM.OSCLI.s 256 | Code | 11 | | 2 | 00/E5B6 : C9 1A | CMP #26 7155 | 17 AUXMEM.OSCLI.s 257 | Code | 11 | | 2 | 00/E5B8 : B0 9B | BCS ERRBADNUM ; num>25, num*25>255 7156 | 17 AUXMEM.OSCLI.s 258 | Code | 11 | | 1 | 00/E5BA : 0A | ASL A ; num*2 7157 | 17 AUXMEM.OSCLI.s 259 | Code | 11 | | 1 | 00/E5BB : 0A | ASL A ; num*4 7158 | 17 AUXMEM.OSCLI.s 260 | Code | 11 | | 2 | 00/E5BC : 65 EB | ADC {$EB} ; num*4+num = num*5 7159 | 17 AUXMEM.OSCLI.s 261 | Code | 11 | | 1 | 00/E5BE : 0A | ASL A ; num*10 7160 | 17 AUXMEM.OSCLI.s 262 | Code | 11 | | 2 | 00/E5BF : 85 EB | STA {$EB} 7161 | 17 AUXMEM.OSCLI.s 263 | Code | 11 | | 1 | 00/E5C1 : 68 | PLA 7162 | 17 AUXMEM.OSCLI.s 264 | Code | 11 | | 2 | 00/E5C2 : 65 EB | ADC {$EB} ; num=num*10+digit 7163 | 17 AUXMEM.OSCLI.s 265 | Code | 11 | | 2 | 00/E5C4 : 90 E6 | BCC SCANDECLP 7164 | 17 AUXMEM.OSCLI.s 266 | Code | 11 | | 2 | 00/E5C6 : B0 8D | BCS ERRBADNUM ; Overflowed 7165 | 17 AUXMEM.OSCLI.s 267 | Empty | 11 | | 0 | 00/E5C8 | 7166 | 17 AUXMEM.OSCLI.s 268 | Code | 11 | | 2 | 00/E5C8 : A5 EB | SCANDECOK LDA {$EB} ; Return A=number 7167 | 17 AUXMEM.OSCLI.s 269 | Code | 11 | | 1 | 00/E5CA : 38 | SCANDIG2 SEC 7168 | 17 AUXMEM.OSCLI.s 270 | Code | 11 | | 1 | 00/E5CB : 60 | RTS 7169 | 17 AUXMEM.OSCLI.s 271 | Empty | 11 | | 0 | 00/E5CC | 7170 | 17 AUXMEM.OSCLI.s 272 | Code | 11 | | 2 | 00/E5CC : B1 F2 | SCANDIGIT LDA ({$F2}),Y 7171 | 17 AUXMEM.OSCLI.s 273 | Code | 11 | | 2 | 00/E5CE : C9 30 | CMP #'0' 7172 | 17 AUXMEM.OSCLI.s 274 | Code | 11 | | 2 | 00/E5D0 : 90 F8 | BCC SCANDIG2 ; <'0' 7173 | 17 AUXMEM.OSCLI.s 275 | Code | 11 | | 2 | 00/E5D2 : C9 3A | CMP #'9'+1 7174 | 17 AUXMEM.OSCLI.s 276 | Code | 11 | | 2 | 00/E5D4 : B0 F4 | BCS SCANDIG2 ; >'9' 7175 | 17 AUXMEM.OSCLI.s 277 | Code | 11 | | 1 | 00/E5D6 : C8 | INY 7176 | 17 AUXMEM.OSCLI.s 278 | Code | 11 | | 2 | 00/E5D7 : 29 0F | AND #$0F 7177 | 17 AUXMEM.OSCLI.s 279 | Code | 11 | | 1 | 00/E5D9 : 60 | RTS 7178 | 17 AUXMEM.OSCLI.s 280 | Empty | 11 | | 0 | 00/E5DA | 7179 | 17 AUXMEM.OSCLI.s 281 | Code | 11 | | 3 | 00/E5DA : 20 CC E5 | HEXDIGIT JSR SCANDIGIT 7180 | 17 AUXMEM.OSCLI.s 282 | Code | 11 | | 2 | 00/E5DD : 90 0E | BCC HEXDIGIT2 ; Decimal digit 7181 | 17 AUXMEM.OSCLI.s 283 | Code | 11 | | 2 | 00/E5DF : 29 DF | AND #$DF 7182 | 17 AUXMEM.OSCLI.s 284 | Code | 11 | | 2 | 00/E5E1 : C9 41 | CMP #'A' 7183 | 17 AUXMEM.OSCLI.s 285 | Code | 11 | | 2 | 00/E5E3 : 90 E5 | BCC SCANDIG2 ; Bad hex character 7184 | 17 AUXMEM.OSCLI.s 286 | Code | 11 | | 2 | 00/E5E5 : C9 47 | CMP #'G' 7185 | 17 AUXMEM.OSCLI.s 287 | Code | 11 | | 2 | 00/E5E7 : B0 04 | BCS HEXDIGIT2 ; Bad hex character 7186 | 17 AUXMEM.OSCLI.s 288 | Code | 11 | | 2 | 00/E5E9 : E9 36 | SBC #$36 ; Convert 'A'-'F' to $0A-$0F 7187 | 17 AUXMEM.OSCLI.s 289 | Code | 11 | | 1 | 00/E5EB : C8 | INY 7188 | 17 AUXMEM.OSCLI.s 290 | Code | 11 | | 1 | 00/E5EC : 18 | CLC 7189 | 17 AUXMEM.OSCLI.s 291 | Code | 11 | | 1 | 00/E5ED : 60 | HEXDIGIT2 RTS 7190 | 17 AUXMEM.OSCLI.s 292 | Empty | 11 | | 0 | 00/E5EE | 7191 | 17 AUXMEM.OSCLI.s 293 | Comment | 11 | | 0 | 00/E5EE | * Scan hex address 7192 | 17 AUXMEM.OSCLI.s 294 | Comment | 11 | | 0 | 00/E5EE | * (OSLPTR),Y=>first character 7193 | 17 AUXMEM.OSCLI.s 295 | Comment | 11 | | 0 | 00/E5EE | * $200,X = 4-byte accumulator 7194 | 17 AUXMEM.OSCLI.s 296 | Code | 11 | | 3 | 00/E5EE : 20 DA E5 | SCANHEX JSR HEXDIGIT ; Get first digit 7195 | 17 AUXMEM.OSCLI.s 297 | Code | 11 | | 2 | 00/E5F1 : B0 32 | BCS ERRBADADD1 ; Not a hex character 7196 | 17 AUXMEM.OSCLI.s 298 | Code | 11 | | 3 | 00/E5F3 : 9D 00 02 | STA $200,X ; Store first digit 7197 | 17 AUXMEM.OSCLI.s 299 | Code | 11 | | 2 | 00/E5F6 : A9 00 | LDA #0 7198 | 17 AUXMEM.OSCLI.s 300 | Code | 11 | | 3 | 00/E5F8 : 9D 01 02 | STA $201,X ; Clear rest of accumulator 7199 | 17 AUXMEM.OSCLI.s 301 | Code | 11 | | 3 | 00/E5FB : 9D 02 02 | STA $202,X 7200 | 17 AUXMEM.OSCLI.s 302 | Code | 11 | | 3 | 00/E5FE : 9D 03 02 | STA $203,X 7201 | 17 AUXMEM.OSCLI.s 303 | Code | 11 | | 3 | 00/E601 : 20 DA E5 | SCANHEXLP1 JSR HEXDIGIT ; Get next digit 7202 | 17 AUXMEM.OSCLI.s 304 | Code | 11 | | 2 | 00/E604 : B0 29 | BCS SKIPSPC ; Done, exit by skipping spaces 7203 | 17 AUXMEM.OSCLI.s 305 | Code | 11 | | 2 | 00/E606 : 84 EB | STY {$EB} 7204 | 17 AUXMEM.OSCLI.s 306 | Code | 11 | | 2 | 00/E608 : A0 04 | LDY #4 ; Four bits to rotate 7205 | 17 AUXMEM.OSCLI.s 307 | Code | 11 | | 3 | 00/E60A : 1E 00 02 | SCANHEXLP2 ASL $200,X ; Multiple accumulator by 16 7206 | 17 AUXMEM.OSCLI.s 308 | Code | 11 | | 3 | 00/E60D : 3E 01 02 | ROL $201,X 7207 | 17 AUXMEM.OSCLI.s 309 | Code | 11 | | 3 | 00/E610 : 3E 02 02 | ROL $202,X 7208 | 17 AUXMEM.OSCLI.s 310 | Code | 11 | | 3 | 00/E613 : 3E 03 02 | ROL $203,X 7209 | 17 AUXMEM.OSCLI.s 311 | Code | 11 | | 2 | 00/E616 : B0 0D | BCS ERRBADADD1 ; Overflowed 7210 | 17 AUXMEM.OSCLI.s 312 | Code | 11 | | 1 | 00/E618 : 88 | DEY 7211 | 17 AUXMEM.OSCLI.s 313 | Code | 11 | | 2 | 00/E619 : D0 EF | BNE SCANHEXLP2 ; Loop for four bits 7212 | 17 AUXMEM.OSCLI.s 314 | Code | 11 | | 3 | 00/E61B : 1D 00 02 | ORA $200,X ; Add in current digit 7213 | 17 AUXMEM.OSCLI.s 315 | Code | 11 | | 3 | 00/E61E : 9D 00 02 | STA $200,X 7214 | 17 AUXMEM.OSCLI.s 316 | Code | 11 | | 2 | 00/E621 : A4 EB | LDY {$EB} ; Get Y back 7215 | 17 AUXMEM.OSCLI.s 317 | Code | 11 | | 2 | 00/E623 : D0 DC | BNE SCANHEXLP1 7216 | 17 AUXMEM.OSCLI.s 318 | Code | 11 | | 3 | 00/E625 : 4C 61 E5 | ERRBADADD1 JMP ERRBADADD 7217 | 17 AUXMEM.OSCLI.s 319 | Empty | 11 | | 0 | 00/E628 | 7218 | 17 AUXMEM.OSCLI.s 320 | Code | 11 | | 2 | 00/E628 : B1 F2 | SKIPCOMMA LDA ({$F2}),Y 7219 | 17 AUXMEM.OSCLI.s 321 | Code | 11 | | 2 | 00/E62A : C9 2C | CMP #$2C 7220 | 17 AUXMEM.OSCLI.s 322 | Code | 11 | | 2 | 00/E62C : D0 01 | BNE SKIPSPC ; Drop through 7221 | 17 AUXMEM.OSCLI.s 323 | Comment | 11 | | 0 | 00/E62E | * 7222 | 17 AUXMEM.OSCLI.s 324 | Comment | 11 | | 0 | 00/E62E | * Skip spaces 7223 | 17 AUXMEM.OSCLI.s 325 | Code | 11 | | 1 | 00/E62E : C8 | SKIPSPC1 INY ; Step past a character 7224 | 17 AUXMEM.OSCLI.s 326 | Code | 11 | | 2 | 00/E62F : B1 F2 | SKIPSPC LDA ({$F2}),Y 7225 | 17 AUXMEM.OSCLI.s 327 | Code | 11 | | 2 | 00/E631 : C9 20 | CMP #' ' 7226 | 17 AUXMEM.OSCLI.s 328 | Code | 11 | | 2 | 00/E633 : F0 F9 | BEQ SKIPSPC1 7227 | 17 AUXMEM.OSCLI.s 329 | Code | 11 | | 2 | 00/E635 : C9 0D | CMP #$0D ; Return EQ=<cr> 7228 | 17 AUXMEM.OSCLI.s 330 | Code | 11 | | 1 | 00/E637 : 60 | RTS 7229 | 17 AUXMEM.OSCLI.s 331 | Empty | 11 | | 0 | 00/E638 | 7230 | 17 AUXMEM.OSCLI.s 332 | Comment | 11 | | 0 | 00/E638 | * Skip a string 7231 | 17 AUXMEM.OSCLI.s 333 | Code | 11 | | 1 | 00/E638 : 18 | SKIPWORD CLC 7232 | 17 AUXMEM.OSCLI.s 334 | Code | 11 | | 3 | 00/E639 : 20 C2 FF | JSR GSINIT 7233 | 17 AUXMEM.OSCLI.s 335 | Code | 11 | | 3 | 00/E63C : 20 C5 FF | SKIPWORDLP JSR GSREAD 7234 | 17 AUXMEM.OSCLI.s 336 | Code | 11 | | 2 | 00/E63F : 90 FB | BCC SKIPWORDLP 7235 | 17 AUXMEM.OSCLI.s 337 | Code | 11 | | 1 | 00/E641 : 60 | RTS 7236 | 17 AUXMEM.OSCLI.s 338 | Empty | 11 | | 0 | 00/E642 | 7237 | 17 AUXMEM.OSCLI.s 339 | Comment | 11 | | 0 | 00/E642 | * Convert (LPTR),Y to XY 7238 | 17 AUXMEM.OSCLI.s 340 | Code | 11 | | 1 | 00/E642 : 18 | LPTRtoXY CLC 7239 | 17 AUXMEM.OSCLI.s 341 | Code | 11 | | 1 | 00/E643 : 98 | TYA 7240 | 17 AUXMEM.OSCLI.s 342 | Code | 11 | | 2 | 00/E644 : 65 F2 | ADC {$F2}+0 7241 | 17 AUXMEM.OSCLI.s 343 | Code | 11 | | 1 | 00/E646 : AA | TAX 7242 | 17 AUXMEM.OSCLI.s 344 | Code | 11 | | 2 | 00/E647 : A9 00 | LDA #0 7243 | 17 AUXMEM.OSCLI.s 345 | Code | 11 | | 2 | 00/E649 : 65 F3 | ADC {$F2}+1 7244 | 17 AUXMEM.OSCLI.s 346 | Code | 11 | | 1 | 00/E64B : A8 | TAY 7245 | 17 AUXMEM.OSCLI.s 347 | Code | 11 | | 1 | 00/E64C : 60 | RTS 7246 | 17 AUXMEM.OSCLI.s 348 | Empty | 11 | | 0 | 00/E64D | 7247 | 17 AUXMEM.OSCLI.s 349 | Comment | 11 | | 0 | 00/E64D | * Convert XY to (LPTR),Y 7248 | 17 AUXMEM.OSCLI.s 350 | Code | 11 | | 2 | 00/E64D : 86 F2 | XYtoLPTR STX {$F2}+0 7249 | 17 AUXMEM.OSCLI.s 351 | Code | 11 | | 2 | 00/E64F : 84 F3 | STY {$F2}+1 7250 | 17 AUXMEM.OSCLI.s 352 | Code | 11 | | 2 | 00/E651 : A0 00 | LDY #0 7251 | 17 AUXMEM.OSCLI.s 353 | Code | 11 | | 1 | 00/E653 : 60 | RTS 7252 | 17 AUXMEM.OSCLI.s 354 | Empty | 11 | | 0 | 00/E654 | 7253 | 17 AUXMEM.OSCLI.s 355 | Comment | 11 | | 0 | 00/E654 | * Print *HELP text 7254 | 17 AUXMEM.OSCLI.s 356 | Code | 11 | | 3 | 00/E654 : 20 4D E6 | STARHELP JSR XYtoLPTR ; (OSLPTR),Y=>parameters 7255 | 17 AUXMEM.OSCLI.s 357 | Code | 11 | | 3 | 00/E657 : 20 0F D1 | JSR PRHELLO ; Unify version message 7256 | 17 AUXMEM.OSCLI.s 358 | Code | 11 | | 2 | 00/E65A : A2 76 | LDX #<HLPTABLE ; XY=>command table 7257 | 17 AUXMEM.OSCLI.s 359 | Code | 11 | | 2 | 00/E65C : A0 E4 | LDY #>HLPTABLE 7258 | 17 AUXMEM.OSCLI.s 360 | Code | 11 | | 3 | 00/E65E : 20 86 E4 | JSR CLILOOKUP ; Look for *HELP subject 7259 | 17 AUXMEM.OSCLI.s 361 | Code | 11 | | 3 | 00/E661 : AD 06 80 | LDA $8006 ; Does ROM have service entry? 7260 | 17 AUXMEM.OSCLI.s 362 | Code | 11 | | 2 | 00/E664 : 30 0D | BMI STARHELP6 ; Yes, send service call 7261 | 17 AUXMEM.OSCLI.s 363 | Code | 11 | | 3 | 00/E666 : 20 E7 FF | JSR OSNEWL 7262 | 17 AUXMEM.OSCLI.s 364 | Code | 11 | | 2 | 00/E669 : A9 09 | LDA #$09 ; Language name 7263 | 17 AUXMEM.OSCLI.s 365 | Code | 11 | | 2 | 00/E66B : A0 80 | LDY #$80 ; *TO DO* make this and BYTE8E 7264 | 17 AUXMEM.OSCLI.s 366 | Code | 11 | | 3 | 00/E66D : 20 EB EB | JSR PRSTR ; use same code 7265 | 17 AUXMEM.OSCLI.s 367 | Code | 11 | | 3 | 00/E670 : 20 E7 FF | JSR OSNEWL 7266 | 17 AUXMEM.OSCLI.s 368 | Code | 11 | | 2 | 00/E673 : A0 00 | STARHELP6 LDY #0 ; (OSLPTR),Y=>parameters 7267 | 17 AUXMEM.OSCLI.s 369 | Code | 11 | | 2 | 00/E675 : A9 09 | LDA #9 7268 | 17 AUXMEM.OSCLI.s 370 | Code | 11 | | 3 | 00/E677 : 4C EC D0 | JMP SERVICE ; Pass to sideways ROM(s) 7269 | 17 AUXMEM.OSCLI.s 371 | Empty | 11 | | 0 | 00/E67A | 7270 | 17 AUXMEM.OSCLI.s 372 | Empty | 11 | | 0 | 00/E67A | 7271 | 17 AUXMEM.OSCLI.s 373 | Code | 11 | | 2 | 00/E67A : A2 4F | HELPHOSTFS LDX #<FSCCOMMAND ; *HELP HOSTFS 7272 | 17 AUXMEM.OSCLI.s 374 | Code | 11 | | 2 | 00/E67C : A0 DC | LDY #>FSCCOMMAND 7273 | 17 AUXMEM.OSCLI.s 375 | Code | 11 | | 2 | 00/E67E : D0 04 | BNE HELPLIST 7274 | 17 AUXMEM.OSCLI.s 376 | Code | 11 | | 2 | 00/E680 : A2 00 | HELPMOS LDX #<CMDTABLE ; *HELP MOS 7275 | 17 AUXMEM.OSCLI.s 377 | Code | 11 | | 2 | 00/E682 : A0 E4 | LDY #>CMDTABLE 7276 | 17 AUXMEM.OSCLI.s 378 | Empty | 11 | | 0 | 00/E684 | 7277 | 17 AUXMEM.OSCLI.s 379 | Code | 11 | | 2 | 00/E684 : 86 E6 | HELPLIST STX {$E6}+0 ; Start of command table 7278 | 17 AUXMEM.OSCLI.s 380 | Code | 11 | | 2 | 00/E686 : 84 E7 | STY {$E6}+1 7279 | 17 AUXMEM.OSCLI.s 381 | Code | 11 | | 2 | 00/E688 : A2 00 | LDX #0 7280 | 17 AUXMEM.OSCLI.s 382 | Code | 11 | | 2 | 00/E68A : A9 20 | HELPLP1 LDA #32 7281 | 17 AUXMEM.OSCLI.s 383 | Code | 11 | | 3 | 00/E68C : 20 EE FF | JSR OSWRCH 7282 | 17 AUXMEM.OSCLI.s 384 | Code | 11 | | 3 | 00/E68F : 20 EE FF | JSR OSWRCH 7283 | 17 AUXMEM.OSCLI.s 385 | Code | 11 | | 2 | 00/E692 : A0 0A | HELPLP2 LDY #10 7284 | 17 AUXMEM.OSCLI.s 386 | Code | 11 | | 2 | 00/E694 : A1 E6 | HELPLP3 LDA ({$E6},X) 7285 | 17 AUXMEM.OSCLI.s 387 | Code | 11 | | 2 | 00/E696 : 30 09 | BMI HELPLP4 7286 | 17 AUXMEM.OSCLI.s 388 | Code | 11 | | 3 | 00/E698 : 20 EE FF | JSR OSWRCH 7287 | 17 AUXMEM.OSCLI.s 389 | Code | 11 | | 1 | 00/E69B : 88 | DEY 7288 | 17 AUXMEM.OSCLI.s 390 | Code | 11 | | 3 | 00/E69C : 20 EE E4 | JSR CLISTEP 7289 | 17 AUXMEM.OSCLI.s 391 | Code | 11 | | 2 | 00/E69F : 10 F3 | BPL HELPLP3 7290 | 17 AUXMEM.OSCLI.s 392 | Code | 11 | | 2 | 00/E6A1 : A9 20 | HELPLP4 LDA #32 7291 | 17 AUXMEM.OSCLI.s 393 | Code | 11 | | 3 | 00/E6A3 : 20 EE FF | JSR OSWRCH 7292 | 17 AUXMEM.OSCLI.s 394 | Code | 11 | | 1 | 00/E6A6 : 88 | DEY 7293 | 17 AUXMEM.OSCLI.s 395 | Code | 11 | | 2 | 00/E6A7 : D0 F8 | BNE HELPLP4 7294 | 17 AUXMEM.OSCLI.s 396 | Code | 11 | | 3 | 00/E6A9 : 20 EE E4 | JSR CLISTEP 7295 | 17 AUXMEM.OSCLI.s 397 | Code | 11 | | 3 | 00/E6AC : 20 EE E4 | JSR CLISTEP 7296 | 17 AUXMEM.OSCLI.s 398 | Code | 11 | | 3 | 00/E6AF : 20 EE E4 | JSR CLISTEP 7297 | 17 AUXMEM.OSCLI.s 399 | Code | 11 | | 2 | 00/E6B2 : 10 DE | BPL HELPLP2 7298 | 17 AUXMEM.OSCLI.s 400 | Code | 11 | | 2 | 00/E6B4 : A9 08 | STARHELP4 LDA #$08 7299 | 17 AUXMEM.OSCLI.s 401 | Code | 11 | | 3 | 00/E6B6 : 20 EE FF | JSR OSWRCH 7300 | 17 AUXMEM.OSCLI.s 402 | Code | 11 | | 3 | 00/E6B9 : 20 EE FF | JSR OSWRCH 7301 | 17 AUXMEM.OSCLI.s 403 | Code | 11 | | 3 | 00/E6BC : 4C FF EB | JMP FORCENL 7302 | 17 AUXMEM.OSCLI.s 404 | Empty | 11 | | 0 | 00/E6BF | 7303 | 17 AUXMEM.OSCLI.s 405 | Empty | 11 | | 0 | 00/E6BF | 7304 | 17 AUXMEM.OSCLI.s 406 | Comment | 11 | | 0 | 00/E6BF | * Handle *QUIT command 7305 | 17 AUXMEM.OSCLI.s 407 | Macro | 11 | | 0 | 00/E6BF | STARQUIT >>> XF2MAIN,QUIT 7306 | 17 AUXMEM.OSCLI.s 407 | Empty | 11 | | 0 | 00/E6BF | 7307 | 17 AUXMEM.OSCLI.s 407 | Empty | 11 | | 0 | 00/E6BF | 7308 | 17 AUXMEM.OSCLI.s 407 | Empty | 11 | | 0 | 00/E6BF | 7309 | 17 AUXMEM.OSCLI.s 407 | Empty | 11 | | 0 | 00/E6BF | 7310 | 17 AUXMEM.OSCLI.s 407 | Code | 11 | | 2 | 00/E6BF : A2 B8 | LDX #<QUIT 7311 | 17 AUXMEM.OSCLI.s 407 | Code | 11 | | 3 | 00/E6C1 : 8E ED 03 | STX {$3ED} 7312 | 17 AUXMEM.OSCLI.s 407 | Code | 11 | | 2 | 00/E6C4 : A2 4B | LDX #>QUIT 7313 | 17 AUXMEM.OSCLI.s 407 | Code | 11 | | 3 | 00/E6C6 : 8E EE 03 | STX {$3EE} 7314 | 17 AUXMEM.OSCLI.s 407 | Code | 11 | | 1 | 00/E6C9 : 78 | SEI ; Disable IRQ before XFER 7315 | 17 AUXMEM.OSCLI.s 407 | Code | 11 | | 1 | 00/E6CA : BA | TSX 7316 | 17 AUXMEM.OSCLI.s 407 | Code | 11 | | 3 | 00/E6CB : 8E 01 01 | STX $0101 ; Save alt SP 7317 | 17 AUXMEM.OSCLI.s 407 | Code | 11 | | 3 | 00/E6CE : AE 00 01 | LDX $0100 ; Load main SP into X 7318 | 17 AUXMEM.OSCLI.s 407 | Code | 11 | | 1 | 00/E6D1 : 18 | CLC ; Use main mem 7319 | 17 AUXMEM.OSCLI.s 407 | Code | 11 | | 1 | 00/E6D2 : B8 | CLV ; Use main ZP and LC 7320 | 17 AUXMEM.OSCLI.s 407 | Code | 11 | | 3 | 00/E6D3 : 4C 14 C3 | JMP {$C314} 7321 | 17 AUXMEM.OSCLI.s 408 | Empty | 11 | | 0 | 00/E6D6 | 7322 | 17 AUXMEM.OSCLI.s 409 | Empty | 11 | | 0 | 00/E6D6 | 7323 | 17 AUXMEM.OSCLI.s 410 | Code | 11 | | 2 | 00/E6D6 : A9 00 | STARSAVE LDA #$00 ; Set A=0 - SAVE 7324 | 17 AUXMEM.OSCLI.s 411 | Code | 11 | | 1 | 00/E6D8 : 48 | STARLOAD PHA ; Entered with A=$FF - LOAD 7325 | 17 AUXMEM.OSCLI.s 412 | Code | 11 | | 3 | 00/E6D9 : 20 4D E6 | JSR XYtoLPTR ; OSLPTR=>filename 7326 | 17 AUXMEM.OSCLI.s 413 | Code | 11 | | 3 | 00/E6DC : 20 38 E6 | JSR SKIPWORD ; Step past filename 7327 | 17 AUXMEM.OSCLI.s 414 | Code | 11 | | 2 | 00/E6DF : D0 0D | BNE STARLDSV3 ; filename followed by addr 7328 | 17 AUXMEM.OSCLI.s 415 | Comment | 11 | | 0 | 00/E6E1 | * 7329 | 17 AUXMEM.OSCLI.s 416 | Comment | 11 | | 0 | 00/E6E1 | * filename followed by no address, must be *LOAD name 7330 | 17 AUXMEM.OSCLI.s 417 | Code | 11 | | 2 | 00/E6E1 : A9 FF | STARLDSV1 LDA #$FF ; $FF=load to file's address 7331 | 17 AUXMEM.OSCLI.s 418 | Code | 11 | | 3 | 00/E6E3 : 8D F4 02 | STARLOAD2 STA {$2EE}+6 7332 | 17 AUXMEM.OSCLI.s 419 | Code | 11 | | 1 | 00/E6E6 : 68 | PLA 7333 | 17 AUXMEM.OSCLI.s 420 | Code | 11 | | 2 | 00/E6E7 : F0 58 | BEQ ERRBADADD2 ; *save name <no addr> 7334 | 17 AUXMEM.OSCLI.s 421 | Code | 11 | | 2 | 00/E6E9 : A9 7F | LDA #$7F ; Will become A=$FF 7335 | 17 AUXMEM.OSCLI.s 422 | Code | 11 | | 3 | 00/E6EB : 4C 46 E7 | JMP STARLDSVGO ; Do the load 7336 | 17 AUXMEM.OSCLI.s 423 | Empty | 11 | | 0 | 00/E6EE | 7337 | 17 AUXMEM.OSCLI.s 424 | Comment | 11 | | 0 | 00/E6EE | * At least one address specified 7338 | 17 AUXMEM.OSCLI.s 425 | Code | 11 | | 2 | 00/E6EE : A2 F0 | STARLDSV3 LDX #{$2EE}+2-$200 ; X=>load 7339 | 17 AUXMEM.OSCLI.s 426 | Code | 11 | | 3 | 00/E6F0 : 20 EE E5 | JSR SCANHEX 7340 | 17 AUXMEM.OSCLI.s 427 | Code | 11 | | 2 | 00/E6F3 : D0 04 | BNE STARSAVE3 ; Another address 7341 | 17 AUXMEM.OSCLI.s 428 | Code | 11 | | 2 | 00/E6F5 : A9 00 | LDA #$00 ; $00=load to supplied address 7342 | 17 AUXMEM.OSCLI.s 429 | Code | 11 | | 2 | 00/E6F7 : F0 EA | BEQ STARLOAD2 ; Only one address, must be *LOAD 7343 | 17 AUXMEM.OSCLI.s 430 | Empty | 11 | | 0 | 00/E6F9 | 7344 | 17 AUXMEM.OSCLI.s 431 | Comment | 11 | | 0 | 00/E6F9 | * More than one address, must be *SAVE 7345 | 17 AUXMEM.OSCLI.s 432 | Code | 11 | | 1 | 00/E6F9 : 68 | STARSAVE3 PLA 7346 | 17 AUXMEM.OSCLI.s 433 | Code | 11 | | 2 | 00/E6FA : D0 45 | BNE ERRBADADD2 ; Can't be *LOAD 7347 | 17 AUXMEM.OSCLI.s 434 | Code | 11 | | 2 | 00/E6FC : A2 03 | LDX #3 7348 | 17 AUXMEM.OSCLI.s 435 | Code | 11 | | 3 | 00/E6FE : BD F0 02 | STARSAVE4 LDA {$2EE}+2,X ; Get load 7349 | 17 AUXMEM.OSCLI.s 436 | Code | 11 | | 3 | 00/E701 : 9D F4 02 | STA {$2EE}+6,X ; copy to exec 7350 | 17 AUXMEM.OSCLI.s 437 | Code | 11 | | 3 | 00/E704 : 9D F8 02 | STA {$2EE}+10,X ; and to start 7351 | 17 AUXMEM.OSCLI.s 438 | Code | 11 | | 1 | 00/E707 : CA | DEX 7352 | 17 AUXMEM.OSCLI.s 439 | Code | 11 | | 2 | 00/E708 : 10 F4 | BPL STARSAVE4 7353 | 17 AUXMEM.OSCLI.s 440 | Code | 11 | | 2 | 00/E70A : B1 F2 | LDA ({$F2}),Y 7354 | 17 AUXMEM.OSCLI.s 441 | Code | 11 | | 2 | 00/E70C : C9 2B | CMP #'+' 7355 | 17 AUXMEM.OSCLI.s 442 | Code | 11 | | 1 | 00/E70E : 08 | PHP 7356 | 17 AUXMEM.OSCLI.s 443 | Code | 11 | | 2 | 00/E70F : D0 03 | BNE STARSAVE5 ; Not start+length 7357 | 17 AUXMEM.OSCLI.s 444 | Code | 11 | | 3 | 00/E711 : 20 2E E6 | JSR SKIPSPC1 ; Step past '+' and spaces 7358 | 17 AUXMEM.OSCLI.s 445 | Code | 11 | | 2 | 00/E714 : A2 FC | STARSAVE5 LDX #{$2EE}+14-$200 7359 | 17 AUXMEM.OSCLI.s 446 | Code | 11 | | 3 | 00/E716 : 20 EE E5 | JSR SCANHEX ; Get end or length 7360 | 17 AUXMEM.OSCLI.s 447 | Code | 11 | | 1 | 00/E719 : 28 | PLP 7361 | 17 AUXMEM.OSCLI.s 448 | Code | 11 | | 2 | 00/E71A : D0 12 | BNE STARSAVE7 ; Not +length 7362 | 17 AUXMEM.OSCLI.s 449 | Code | 11 | | 2 | 00/E71C : A2 00 | LDX #0 7363 | 17 AUXMEM.OSCLI.s 450 | Code | 11 | | 1 | 00/E71E : 18 | CLC 7364 | 17 AUXMEM.OSCLI.s 451 | Code | 11 | | 3 | 00/E71F : BD F8 02 | STARSAVE6 LDA {$2EE}+10,X ; end=start+length 7365 | 17 AUXMEM.OSCLI.s 452 | Code | 11 | | 3 | 00/E722 : 7D FC 02 | ADC {$2EE}+14,X 7366 | 17 AUXMEM.OSCLI.s 453 | Code | 11 | | 3 | 00/E725 : 9D FC 02 | STA {$2EE}+14,X 7367 | 17 AUXMEM.OSCLI.s 454 | Code | 11 | | 1 | 00/E728 : E8 | INX 7368 | 17 AUXMEM.OSCLI.s 455 | Code | 11 | | 1 | 00/E729 : 8A | TXA 7369 | 17 AUXMEM.OSCLI.s 456 | Code | 11 | | 2 | 00/E72A : 29 03 | AND #3 7370 | 17 AUXMEM.OSCLI.s 457 | Code | 11 | | 2 | 00/E72C : D0 F1 | BNE STARSAVE6 7371 | 17 AUXMEM.OSCLI.s 458 | Comment | 11 | | 0 | 00/E72E | * load =start 7372 | 17 AUXMEM.OSCLI.s 459 | Comment | 11 | | 0 | 00/E72E | * exec =start 7373 | 17 AUXMEM.OSCLI.s 460 | Comment | 11 | | 0 | 00/E72E | * start=start 7374 | 17 AUXMEM.OSCLI.s 461 | Comment | 11 | | 0 | 00/E72E | * end =end or start+length 7375 | 17 AUXMEM.OSCLI.s 462 | Code | 11 | | 3 | 00/E72E : 20 2F E6 | STARSAVE7 JSR SKIPSPC 7376 | 17 AUXMEM.OSCLI.s 463 | Code | 11 | | 2 | 00/E731 : F0 11 | BEQ STARSAVE10 ; No more, do it 7377 | 17 AUXMEM.OSCLI.s 464 | Code | 11 | | 2 | 00/E733 : A2 F4 | LDX #{$2EE}+6-$200 7378 | 17 AUXMEM.OSCLI.s 465 | Code | 11 | | 3 | 00/E735 : 20 EE E5 | JSR SCANHEX ; Get exec 7379 | 17 AUXMEM.OSCLI.s 466 | Code | 11 | | 2 | 00/E738 : F0 0A | BEQ STARSAVE10 ; No more, do it 7380 | 17 AUXMEM.OSCLI.s 467 | Code | 11 | | 2 | 00/E73A : A2 F0 | LDX #{$2EE}+2-$200 7381 | 17 AUXMEM.OSCLI.s 468 | Code | 11 | | 3 | 00/E73C : 20 EE E5 | JSR SCANHEX ; Get load 7382 | 17 AUXMEM.OSCLI.s 469 | Code | 11 | | 2 | 00/E73F : F0 03 | BEQ STARSAVE10 ; No more, do it 7383 | 17 AUXMEM.OSCLI.s 470 | Code | 11 | | 3 | 00/E741 : 4C 61 E5 | ERRBADADD2 JMP ERRBADADD ; Too many parameters 7384 | 17 AUXMEM.OSCLI.s 471 | Empty | 11 | | 0 | 00/E744 | 7385 | 17 AUXMEM.OSCLI.s 472 | Code | 11 | | 2 | 00/E744 : A9 80 | STARSAVE10 LDA #$80 ; Will become $00 - SAVE 7386 | 17 AUXMEM.OSCLI.s 473 | Code | 11 | | 2 | 00/E746 : A6 F2 | STARLDSVGO LDX {$F2}+0 7387 | 17 AUXMEM.OSCLI.s 474 | Code | 11 | | 2 | 00/E748 : A4 F3 | LDY {$F2}+1 ; Continue through... 7388 | 17 AUXMEM.OSCLI.s 475 | Comment | 11 | | 0 | 00/E74A | * 7389 | 17 AUXMEM.OSCLI.s 476 | Empty | 11 | | 0 | 00/E74A | 7390 | 17 AUXMEM.OSCLI.s 477 | Comment | 11 | | 0 | 00/E74A | * Commands passed to OSFILE 7391 | 17 AUXMEM.OSCLI.s 478 | Comment | 11 | | 0 | 00/E74A | *************************** 7392 | 17 AUXMEM.OSCLI.s 479 | Code | 11 | | 2 | 00/E74A : 49 80 | STARFILE EOR #$80 7393 | 17 AUXMEM.OSCLI.s 480 | Code | 11 | | 3 | 00/E74C : 8E EE 02 | STX {$2EE}+0 7394 | 17 AUXMEM.OSCLI.s 481 | Code | 11 | | 3 | 00/E74F : 8C EF 02 | STY {$2EE}+1 7395 | 17 AUXMEM.OSCLI.s 482 | Code | 11 | | 2 | 00/E752 : A2 EE | LDX #<{$2EE} 7396 | 17 AUXMEM.OSCLI.s 483 | Code | 11 | | 2 | 00/E754 : A0 02 | LDY #>{$2EE} 7397 | 17 AUXMEM.OSCLI.s 484 | Code | 11 | | 3 | 00/E756 : 20 DD FF | JSR OSFILE 7398 | 17 AUXMEM.OSCLI.s 485 | Code | 11 | | 1 | 00/E759 : AA | TAX 7399 | 17 AUXMEM.OSCLI.s 486 | Code | 11 | | 2 | 00/E75A : D0 03 | BNE STARDONE 7400 | 17 AUXMEM.OSCLI.s 487 | Code | 11 | | 3 | 00/E75C : 4C 62 E1 | JMP ERRNOTFND 7401 | 17 AUXMEM.OSCLI.s 488 | Empty | 11 | | 0 | 00/E75F | 7402 | 17 AUXMEM.OSCLI.s 489 | Empty | 11 | | 0 | 00/E75F | STARKEY 7403 | 17 AUXMEM.OSCLI.s 490 | Code | 11 | | 1 | 00/E75F : 60 | STARDONE RTS 7404 | 17 AUXMEM.OSCLI.s 491 | Empty | 11 | | 0 | 00/E760 | 7405 | 17 AUXMEM.OSCLI.s 492 | Empty | 11 | | 0 | 00/E760 | 7406 | 17 AUXMEM.OSCLI.s 493 | Comment | 11 | | 0 | 00/E760 | * *BASIC 7407 | 17 AUXMEM.OSCLI.s 494 | Comment | 11 | | 0 | 00/E760 | ******** 7408 | 17 AUXMEM.OSCLI.s 495 | Code | 11 | | 2 | 00/E760 : A6 F9 | STARBASIC LDX {$F9} 7409 | 17 AUXMEM.OSCLI.s 496 | Code | 11 | | 3 | 00/E762 : 20 E9 EC | _BASICLP JSR ROMSELECT 7410 | 17 AUXMEM.OSCLI.s 497 | Code | 11 | | 3 | 00/E765 : 2C 06 80 | BIT $8006 7411 | 17 AUXMEM.OSCLI.s 498 | Code | 11 | | 2 | 00/E768 : 10 06 | BPL _BASICGO ; No service, must be BASIC 7412 | 17 AUXMEM.OSCLI.s 499 | Code | 11 | | 1 | 00/E76A : CA | DEX 7413 | 17 AUXMEM.OSCLI.s 500 | Code | 11 | | 2 | 00/E76B : 10 F5 | BPL _BASICLP 7414 | 17 AUXMEM.OSCLI.s 501 | Code | 11 | | 3 | 00/E76D : 4C 48 E5 | JMP ERRBADCMD ; No BASIC, give an error 7415 | 17 AUXMEM.OSCLI.s 502 | Code | 11 | | 3 | 00/E770 : 4C CA D0 | _BASICGO JMP BYTE8E 7416 | 17 AUXMEM.OSCLI.s 503 | Empty | 11 | | 0 | 00/E773 | 7417 | 17 AUXMEM.OSCLI.s 504 | Empty | 11 | | 0 | 00/E773 | 7418 | 17 AUXMEM.OSCLI.s 505 | Comment | 11 | | 0 | 00/E773 | * *ECHO <GSTRANS string> 7419 | 17 AUXMEM.OSCLI.s 506 | Comment | 11 | | 0 | 00/E773 | ************************ 7420 | 17 AUXMEM.OSCLI.s 507 | Code | 11 | | 1 | 00/E773 : 38 | ECHO SEC 7421 | 17 AUXMEM.OSCLI.s 508 | Code | 11 | | 3 | 00/E774 : 20 C2 FF | ECHO0 JSR GSINIT 7422 | 17 AUXMEM.OSCLI.s 509 | Code | 11 | | 3 | 00/E777 : 20 C5 FF | ECHOLP1 JSR GSREAD 7423 | 17 AUXMEM.OSCLI.s 510 | Code | 11 | | 2 | 00/E77A : B0 E3 | BCS STARDONE 7424 | 17 AUXMEM.OSCLI.s 511 | Code | 11 | | 3 | 00/E77C : 20 EE FF | JSR OSWRCH 7425 | 17 AUXMEM.OSCLI.s 512 | Code | 11 | | 3 | 00/E77F : 4C 77 E7 | JMP ECHOLP1 7426 | 17 AUXMEM.OSCLI.s 513 | Empty | 11 | | 0 | 00/E782 | 7427 | 17 AUXMEM.OSCLI.s 514 | Empty | 11 | | 0 | 00/E782 | 7428 | 1 applecorn.s 205 | Directive | 11 | | 0 | 00/E782 | PUT AUXMEM.BYTWRD 7429 | 18 AUXMEM.BYTWRD.s 1 | Comment | 11 | | 0 | 00/E782 | * AUXMEM.BYTWRD.S 7430 | 18 AUXMEM.BYTWRD.s 2 | Comment | 11 | | 0 | 00/E782 | * (c) Bobbi 2021 GPLv3 7431 | 18 AUXMEM.BYTWRD.s 3 | Comment | 11 | | 0 | 00/E782 | * 7432 | 18 AUXMEM.BYTWRD.s 4 | Comment | 11 | | 0 | 00/E782 | * Applecorn OSBYTE and OSWORD handlers 7433 | 18 AUXMEM.BYTWRD.s 5 | Comment | 11 | | 0 | 00/E782 | * 7434 | 18 AUXMEM.BYTWRD.s 6 | Comment | 11 | | 0 | 00/E782 | * 15-Aug-2021 Added 'set variable' OSBYTEs 1-6. 7435 | 18 AUXMEM.BYTWRD.s 7 | Comment | 11 | | 0 | 00/E782 | * 02-Sep-2021 OSWORD 5 can read from Main Memory ROM. 7436 | 18 AUXMEM.BYTWRD.s 8 | Comment | 11 | | 0 | 00/E782 | * 04-Sep-2021 Extended VDU table to add $75 and $A0 for VDU driver. 7437 | 18 AUXMEM.BYTWRD.s 9 | Comment | 11 | | 0 | 00/E782 | * 09-Sep-2021 Moved keyboard and VDU OSBYTEs to Keyboard and VDU. 7438 | 18 AUXMEM.BYTWRD.s 10 | Empty | 11 | | 0 | 00/E782 | 7439 | 18 AUXMEM.BYTWRD.s 11 | Empty | 11 | | 0 | 00/E782 | 7440 | 18 AUXMEM.BYTWRD.s 12 | Directive | 11 | | 0 | 00/E782 | XC ; 65c02 7441 | 18 AUXMEM.BYTWRD.s 13 | Empty | 11 | | 0 | 00/E782 | 7442 | 18 AUXMEM.BYTWRD.s 14 | Comment | 11 | | 0 | 00/E782 | ************************* 7443 | 18 AUXMEM.BYTWRD.s 15 | Comment | 11 | | 0 | 00/E782 | * OSBYTE DISPATCH TABLE * 7444 | 18 AUXMEM.BYTWRD.s 16 | Comment | 11 | | 0 | 00/E782 | ************************* 7445 | 18 AUXMEM.BYTWRD.s 17 | Data | 11 | | 2 | 00/E782 : 19 D1 | BYTWRDADDR DW BYTE00 ; OSBYTE 0 - Machine host - INIT.s 7446 | 18 AUXMEM.BYTWRD.s 18 | Data | 11 | | 2 | 00/E784 : 4E E9 | DW BYTE01 ; OSBYTE 1 - User flag 7447 | 18 AUXMEM.BYTWRD.s 19 | Data | 11 | | 2 | 00/E786 : 4A E9 | DW BYTE02 ; OSBYTE 2 - OSRDCH source 7448 | 18 AUXMEM.BYTWRD.s 20 | Data | 11 | | 2 | 00/E788 : 50 E9 | DW BYTE03 ; OSBYTE 3 - OSWRCH dest 7449 | 18 AUXMEM.BYTWRD.s 21 | Data | 11 | | 2 | 00/E78A : 50 E9 | DW BYTE04 ; OSBYTE 4 - Cursor keys 7450 | 18 AUXMEM.BYTWRD.s 22 | Data | 11 | | 2 | 00/E78C : 4E E9 | DW BYTE05 ; OSBYTE 5 - Printer destination 7451 | 18 AUXMEM.BYTWRD.s 23 | Data | 11 | | 2 | 00/E78E : 4E E9 | DW BYTE06 ; OSBYTE 6 - Printer ignore 7452 | 18 AUXMEM.BYTWRD.s 24 | Data | 11 | | 2 | 00/E790 : 6D E8 | DW BYTENULL ; OSBYTE 7 - Serial Rx Speed 7453 | 18 AUXMEM.BYTWRD.s 25 | Data | 11 | | 2 | 00/E792 : 6D E8 | DW BYTENULL ; OSBYTE 8 - Serial Tx Speed 7454 | 18 AUXMEM.BYTWRD.s 26 | Data | 11 | | 2 | 00/E794 : 6D E8 | DW BYTENULL ; OSBYTE 9 - Flash period space 7455 | 18 AUXMEM.BYTWRD.s 27 | Data | 11 | | 2 | 00/E796 : 6D E8 | DW BYTENULL ; OSBYTE 10 - Flash period mark 7456 | 18 AUXMEM.BYTWRD.s 28 | Data | 11 | | 2 | 00/E798 : 6D E8 | DW BYTENULL ; OSBYTE 11 - Autorepeat delay 7457 | 18 AUXMEM.BYTWRD.s 29 | Data | 11 | | 2 | 00/E79A : 6D E8 | DW BYTENULL ; OSBYTE 12 - Autorepeat repeat 7458 | 18 AUXMEM.BYTWRD.s 30 | Data | 11 | | 2 | 00/E79C : 6D E8 | DW BYTENULL ; OSBYTE 13 - Disable event 7459 | 18 AUXMEM.BYTWRD.s 31 | Data | 11 | | 2 | 00/E79E : 6D E8 | DW BYTENULL ; OSBYTE 14 - Enable event 7460 | 18 AUXMEM.BYTWRD.s 32 | Data | 11 | | 2 | 00/E7A0 : 6D E8 | DW BYTENULL ; OSBYTE 15 - Flush buffer 7461 | 18 AUXMEM.BYTWRD.s 33 | Empty | 11 | | 0 | 00/E7A2 | BYTWRDLOW 7462 | 18 AUXMEM.BYTWRD.s 34 | Equivalence | 11 | | 0 | 00/E7A2 | BYTESZLO EQU BYTWRDLOW-BYTWRDADDR 7463 | 18 AUXMEM.BYTWRD.s 35 | Equivalence | 11 | | 0 | 00/E7A2 | BYTELOW EQU {BYTWRDLOW-BYTWRDADDR}/2-1; Maximum low OSBYTE 7464 | 18 AUXMEM.BYTWRD.s 36 | Equivalence | 11 | | 0 | 00/E7A2 | BYTEHIGH EQU $75 ; First high OSBYTE 7465 | 18 AUXMEM.BYTWRD.s 37 | Data | 11 | | 2 | 00/E7A2 : F8 D1 | DW BYTE75 ; OSBYTE 117 - Read VDU status - VDU.s 7466 | 18 AUXMEM.BYTWRD.s 38 | Data | 11 | | 2 | 00/E7A4 : AD EB | DW BYTE76 ; OSBYTE 118 - Update kbd LEDs - CHARIO.s 7467 | 18 AUXMEM.BYTWRD.s 39 | Data | 11 | | 2 | 00/E7A6 : 6D E8 | DW BYTENULL ; OSBYTE 119 7468 | 18 AUXMEM.BYTWRD.s 40 | Data | 11 | | 2 | 00/E7A8 : 6D E8 | DW BYTENULL ; OSBYTE 120 7469 | 18 AUXMEM.BYTWRD.s 41 | Data | 11 | | 2 | 00/E7AA : 6D E8 | DW BYTENULL ; OSBYTE 121 7470 | 18 AUXMEM.BYTWRD.s 42 | Data | 11 | | 2 | 00/E7AC : 6D E8 | DW BYTENULL ; OSBYTE 122 7471 | 18 AUXMEM.BYTWRD.s 43 | Data | 11 | | 2 | 00/E7AE : 6D E8 | DW BYTENULL ; OSBYTE 123 7472 | 18 AUXMEM.BYTWRD.s 44 | Data | 11 | | 2 | 00/E7B0 : A9 EB | DW BYTE7C ; OSBYTE 124 - Clear Escape - CHARIO.s 7473 | 18 AUXMEM.BYTWRD.s 45 | Data | 11 | | 2 | 00/E7B2 : AA EB | DW BYTE7D ; OSBYTE 125 - Set Escape - CHARIO.s 7474 | 18 AUXMEM.BYTWRD.s 46 | Data | 11 | | 2 | 00/E7B4 : 98 EB | DW BYTE7E ; OSBYTE 126 - Ack. Escape - CHARIO.s 7475 | 18 AUXMEM.BYTWRD.s 47 | Data | 11 | | 2 | 00/E7B6 : 7B E9 | DW BYTE7F ; OSBYTE 127 - Read EOF 7476 | 18 AUXMEM.BYTWRD.s 48 | Data | 11 | | 2 | 00/E7B8 : B0 EB | DW BYTE80 ; OSBYTE 128 - ADVAL - MISC.s 7477 | 18 AUXMEM.BYTWRD.s 49 | Data | 11 | | 2 | 00/E7BA : 75 EA | DW BYTE81 ; OSBYTE 129 - INKEY - CHARIO.s 7478 | 18 AUXMEM.BYTWRD.s 50 | Data | 11 | | 2 | 00/E7BC : 63 E9 | DW BYTE82 ; OSBYTE 130 - Memory high word 7479 | 18 AUXMEM.BYTWRD.s 51 | Data | 11 | | 2 | 00/E7BE : 68 E9 | DW BYTE83 ; OSBYTE 131 - MEMBOT 7480 | 18 AUXMEM.BYTWRD.s 52 | Data | 11 | | 2 | 00/E7C0 : 6D E9 | DW BYTE84 ; OSBYTE 132 - MEMTOP 7481 | 18 AUXMEM.BYTWRD.s 53 | Data | 11 | | 2 | 00/E7C2 : 6D E9 | DW BYTE85 ; OSBYTE 133 - MEMTOP for MODE 7482 | 18 AUXMEM.BYTWRD.s 54 | Data | 11 | | 2 | 00/E7C4 : BA D3 | DW BYTE86 ; OSBYTE 134 - POS, VPOS - VDU.s 7483 | 18 AUXMEM.BYTWRD.s 55 | Data | 11 | | 2 | 00/E7C6 : 77 D3 | DW BYTE87 ; OSBYTE 135 - Character, MODE - VDU.s 7484 | 18 AUXMEM.BYTWRD.s 56 | Data | 11 | | 2 | 00/E7C8 : 45 E9 | DW BYTE88 ; OSBYTE 136 - *CODE 7485 | 18 AUXMEM.BYTWRD.s 57 | Data | 11 | | 2 | 00/E7CA : 6D E8 | DW BYTENULL ; OSBYTE 137 - *MOTOR 7486 | 18 AUXMEM.BYTWRD.s 58 | Data | 11 | | 2 | 00/E7CC : 6D E8 | DW BYTENULL ; OSBYTE 138 - Buffer insert 7487 | 18 AUXMEM.BYTWRD.s 59 | Data | 11 | | 2 | 00/E7CE : 72 E9 | DW BYTE8B ; OSBYTE 139 - *OPT 7488 | 18 AUXMEM.BYTWRD.s 60 | Data | 11 | | 2 | 00/E7D0 : 6D E8 | DW BYTENULL ; OSBYTE 140 - *TAPE 7489 | 18 AUXMEM.BYTWRD.s 61 | Data | 11 | | 2 | 00/E7D2 : 6D E8 | DW BYTENULL ; OSBYTE 141 - *ROM 7490 | 18 AUXMEM.BYTWRD.s 62 | Data | 11 | | 2 | 00/E7D4 : CA D0 | DW BYTE8E ; OSBYTE 142 - Enter language - INIT.s 7491 | 18 AUXMEM.BYTWRD.s 63 | Data | 11 | | 2 | 00/E7D6 : ED D0 | DW BYTE8F ; OSBYTE 143 - Service call - INIT.s 7492 | 18 AUXMEM.BYTWRD.s 64 | Data | 11 | | 2 | 00/E7D8 : 6D E8 | DW BYTENULL ; OSBYTE 144 7493 | 18 AUXMEM.BYTWRD.s 65 | Data | 11 | | 2 | 00/E7DA : 6D E8 | DW BYTENULL ; OSBYTE 145 7494 | 18 AUXMEM.BYTWRD.s 66 | Data | 11 | | 2 | 00/E7DC : 6D E8 | DW BYTENULL ; OSBYTE 146 7495 | 18 AUXMEM.BYTWRD.s 67 | Data | 11 | | 2 | 00/E7DE : 6D E8 | DW BYTENULL ; OSBYTE 147 7496 | 18 AUXMEM.BYTWRD.s 68 | Data | 11 | | 2 | 00/E7E0 : 6D E8 | DW BYTENULL ; OSBYTE 148 7497 | 18 AUXMEM.BYTWRD.s 69 | Data | 11 | | 2 | 00/E7E2 : 6D E8 | DW BYTENULL ; OSBYTE 149 7498 | 18 AUXMEM.BYTWRD.s 70 | Data | 11 | | 2 | 00/E7E4 : 6D E8 | DW BYTENULL ; OSBYTE 150 7499 | 18 AUXMEM.BYTWRD.s 71 | Data | 11 | | 2 | 00/E7E6 : 6D E8 | DW BYTENULL ; OSBYTE 151 7500 | 18 AUXMEM.BYTWRD.s 72 | Data | 11 | | 2 | 00/E7E8 : 6D E8 | DW BYTENULL ; OSBYTE 152 7501 | 18 AUXMEM.BYTWRD.s 73 | Data | 11 | | 2 | 00/E7EA : 6D E8 | DW BYTENULL ; OSBYTE 153 7502 | 18 AUXMEM.BYTWRD.s 74 | Data | 11 | | 2 | 00/E7EC : 6D E8 | DW BYTENULL ; OSBYTE 154 7503 | 18 AUXMEM.BYTWRD.s 75 | Data | 11 | | 2 | 00/E7EE : 6D E8 | DW BYTENULL ; OSBYTE 155 7504 | 18 AUXMEM.BYTWRD.s 76 | Data | 11 | | 2 | 00/E7F0 : 6D E8 | DW BYTENULL ; OSBYTE 156 7505 | 18 AUXMEM.BYTWRD.s 77 | Data | 11 | | 2 | 00/E7F2 : 6D E8 | DW BYTENULL ; OSBYTE 157 7506 | 18 AUXMEM.BYTWRD.s 78 | Data | 11 | | 2 | 00/E7F4 : 6D E8 | DW BYTENULL ; OSBYTE 158 7507 | 18 AUXMEM.BYTWRD.s 79 | Data | 11 | | 2 | 00/E7F6 : 6D E8 | DW BYTENULL ; OSBYTE 159 7508 | 18 AUXMEM.BYTWRD.s 80 | Data | 11 | | 2 | 00/E7F8 : 19 D7 | DW BYTEA0 ; OSBYTE 160 - Read VDU variable - VDU.s 7509 | 18 AUXMEM.BYTWRD.s 81 | Empty | 11 | | 0 | 00/E7FA | BYTWRDTOP 7510 | 18 AUXMEM.BYTWRD.s 82 | Data | 11 | | 2 | 00/E7FA : 52 E9 | DW BYTEVAR ; OSBYTE 166+ - Read/Write OSBYTE variable 7511 | 18 AUXMEM.BYTWRD.s 83 | Comment | 11 | | 0 | 00/E7FC | * Maximum high OSBYTE 7512 | 18 AUXMEM.BYTWRD.s 84 | Equivalence | 11 | | 0 | 00/E7FC | BYTESZHI EQU BYTWRDTOP-BYTWRDLOW 7513 | 18 AUXMEM.BYTWRD.s 85 | Equivalence | 11 | | 0 | 00/E7FC | BYTEMAX EQU {BYTWRDTOP-BYTWRDLOW}/2+{$75}-1 7514 | 18 AUXMEM.BYTWRD.s 86 | Empty | 11 | | 0 | 00/E7FC | 7515 | 18 AUXMEM.BYTWRD.s 87 | Comment | 11 | | 0 | 00/E7FC | ************************* 7516 | 18 AUXMEM.BYTWRD.s 88 | Comment | 11 | | 0 | 00/E7FC | * OSWORD DISPATCH TABLE * 7517 | 18 AUXMEM.BYTWRD.s 89 | Comment | 11 | | 0 | 00/E7FC | ************************* 7518 | 18 AUXMEM.BYTWRD.s 90 | Data | 11 | | 2 | 00/E7FC : 8B E8 | OSWBASE DW WORD00 ; OSWORD 0 - Read input line 7519 | 18 AUXMEM.BYTWRD.s 91 | Data | 11 | | 2 | 00/E7FE : E8 E8 | DW WORD01 ; OSWORD 1 - Read elapsed time 7520 | 18 AUXMEM.BYTWRD.s 92 | Data | 11 | | 2 | 00/E800 : F0 E8 | DW WORD02 ; OSWORD 2 - Write eleapsed time 7521 | 18 AUXMEM.BYTWRD.s 93 | Data | 11 | | 2 | 00/E802 : F0 E8 | DW WORD03 ; OSWORD 3 - Read interval timer 7522 | 18 AUXMEM.BYTWRD.s 94 | Data | 11 | | 2 | 00/E804 : F0 E8 | DW WORD04 ; OSWORD 4 - Write interval timer 7523 | 18 AUXMEM.BYTWRD.s 95 | Data | 11 | | 2 | 00/E806 : F1 E8 | DW WORD05 ; OSWORD 5 - Read I/O memory 7524 | 18 AUXMEM.BYTWRD.s 96 | Data | 11 | | 2 | 00/E808 : 24 E9 | DW WORD06 ; OSWORD 6 - Write I/O memory 7525 | 18 AUXMEM.BYTWRD.s 97 | Comment | 11 | | 0 | 00/E80A | * DW WORD07 ; OSWORD 7 - SOUND 7526 | 18 AUXMEM.BYTWRD.s 98 | Comment | 11 | | 0 | 00/E80A | * DW WORD08 ; OSWORD 8 - ENVELOPE 7527 | 18 AUXMEM.BYTWRD.s 99 | Comment | 11 | | 0 | 00/E80A | * DW WORD09 ; OSWORD 9 - POINT 7528 | 18 AUXMEM.BYTWRD.s 100 | Comment | 11 | | 0 | 00/E80A | * DW WORD0A ; OSWORD 10 - Read character bitmap 7529 | 18 AUXMEM.BYTWRD.s 101 | Comment | 11 | | 0 | 00/E80A | * DW WORD0B ; OSWORD 11 - Read palette 7530 | 18 AUXMEM.BYTWRD.s 102 | Comment | 11 | | 0 | 00/E80A | * DW WORD0C ; OSWORD 12 - Write palette 7531 | 18 AUXMEM.BYTWRD.s 103 | Comment | 11 | | 0 | 00/E80A | * DW WORD0D ; OSWORD 13 - Read coordinates 7532 | 18 AUXMEM.BYTWRD.s 104 | Empty | 11 | | 0 | 00/E80A | OSWEND 7533 | 18 AUXMEM.BYTWRD.s 105 | Data | 11 | | 2 | 00/E80A : 47 E9 | DW WORDE0 ; OSWORD &E0+ - User OSWORD 7534 | 18 AUXMEM.BYTWRD.s 106 | Empty | 11 | | 0 | 00/E80C | 7535 | 18 AUXMEM.BYTWRD.s 107 | Comment | 11 | | 0 | 00/E80C | * Offset to start of OSWORD table 7536 | 18 AUXMEM.BYTWRD.s 108 | Equivalence | 11 | | 0 | 00/E80C | WORDSZOFF EQU OSWBASE-BYTWRDADDR 7537 | 18 AUXMEM.BYTWRD.s 109 | Equivalence | 11 | | 0 | 00/E80C | WORDOFF EQU {OSWBASE-BYTWRDADDR}/2 7538 | 18 AUXMEM.BYTWRD.s 110 | Comment | 11 | | 0 | 00/E80C | * Maximum OSWORD 7539 | 18 AUXMEM.BYTWRD.s 111 | Equivalence | 11 | | 0 | 00/E80C | WORDSZ EQU OSWEND-OSWBASE 7540 | 18 AUXMEM.BYTWRD.s 112 | Equivalence | 11 | | 0 | 00/E80C | WORDMAX EQU {OSWEND-OSWBASE}/2-1 7541 | 18 AUXMEM.BYTWRD.s 113 | Empty | 11 | | 0 | 00/E80C | 7542 | 18 AUXMEM.BYTWRD.s 114 | Empty | 11 | | 0 | 00/E80C | 7543 | 18 AUXMEM.BYTWRD.s 115 | Comment | 11 | | 0 | 00/E80C | ************************ 7544 | 18 AUXMEM.BYTWRD.s 116 | Comment | 11 | | 0 | 00/E80C | * OSWORD/OSBYTE dispatch 7545 | 18 AUXMEM.BYTWRD.s 117 | Comment | 11 | | 0 | 00/E80C | ************************ 7546 | 18 AUXMEM.BYTWRD.s 118 | Comment | 11 | | 0 | 00/E80C | * OSWORD: 7547 | 18 AUXMEM.BYTWRD.s 119 | Comment | 11 | | 0 | 00/E80C | * On entry, A=action 7548 | 18 AUXMEM.BYTWRD.s 120 | Comment | 11 | | 0 | 00/E80C | * XY=>control block 7549 | 18 AUXMEM.BYTWRD.s 121 | Comment | 11 | | 0 | 00/E80C | * On exit, A=preserved 7550 | 18 AUXMEM.BYTWRD.s 122 | Comment | 11 | | 0 | 00/E80C | * X,Y,Cy trashed (except OSWORD 0) 7551 | 18 AUXMEM.BYTWRD.s 123 | Comment | 11 | | 0 | 00/E80C | * control block updated 7552 | 18 AUXMEM.BYTWRD.s 124 | Comment | 11 | | 0 | 00/E80C | * 7553 | 18 AUXMEM.BYTWRD.s 125 | Code | 11 | | 1 | 00/E80C : 48 | WORDHND PHA 7554 | 18 AUXMEM.BYTWRD.s 126 | Code | 11 | | 1 | 00/E80D : 08 | PHP 7555 | 18 AUXMEM.BYTWRD.s 127 | Code | 11 | | 1 | 00/E80E : 78 | SEI 7556 | 18 AUXMEM.BYTWRD.s 128 | Code | 11 | | 2 | 00/E80F : 85 EF | STA {$EF} ; Store registers 7557 | 18 AUXMEM.BYTWRD.s 129 | Code | 11 | | 2 | 00/E811 : 86 F0 | STX {{{$EF}+1}}+0 ; Point to control block 7558 | 18 AUXMEM.BYTWRD.s 130 | Code | 11 | | 2 | 00/E813 : 84 F1 | STY {{{$EF}+1}}+1 7559 | 18 AUXMEM.BYTWRD.s 131 | Code | 11 | | 2 | 00/E815 : A2 08 | LDX #$08 ; X=SERVWORD 7560 | 18 AUXMEM.BYTWRD.s 132 | Code | 11 | | 2 | 00/E817 : C9 E0 | CMP #$E0 ; User OSWORD 7561 | 18 AUXMEM.BYTWRD.s 133 | Code | 11 | | 2 | 00/E819 : B0 08 | BCS WORDGO1 7562 | 18 AUXMEM.BYTWRD.s 134 | Code | 11 | | 2 | 00/E81B : C9 07 | CMP #{{OSWEND-OSWBASE}/2-1}+1 7563 | 18 AUXMEM.BYTWRD.s 135 | Code | 11 | | 2 | 00/E81D : B0 4F | BCS BYTWRDFAIL ; Pass on to service call 7564 | 18 AUXMEM.BYTWRD.s 136 | Code | 11 | | 2 | 00/E81F : 69 3D | ADC #{{OSWBASE-BYTWRDADDR}/2} 7565 | 18 AUXMEM.BYTWRD.s 137 | Code | 11 | | 2 | 00/E821 : 90 29 | BCC BYTWRDCALL ; Call OSWORD routine 7566 | 18 AUXMEM.BYTWRD.s 138 | Code | 11 | | 2 | 00/E823 : A9 44 | WORDGO1 LDA #{{OSWBASE-BYTWRDADDR}/2}+{{OSWEND-OSWBASE}/2-1}+1 7567 | 18 AUXMEM.BYTWRD.s 139 | Code | 11 | | 2 | 00/E825 : B0 25 | BCS BYTWRDCALL ; Call User OSWORD routine 7568 | 18 AUXMEM.BYTWRD.s 140 | Empty | 11 | | 0 | 00/E827 | 7569 | 18 AUXMEM.BYTWRD.s 141 | Comment | 11 | | 0 | 00/E827 | * OSBYTE: 7570 | 18 AUXMEM.BYTWRD.s 142 | Comment | 11 | | 0 | 00/E827 | * On entry, A=action 7571 | 18 AUXMEM.BYTWRD.s 143 | Comment | 11 | | 0 | 00/E827 | * X=first parameter 7572 | 18 AUXMEM.BYTWRD.s 144 | Comment | 11 | | 0 | 00/E827 | * Y=second parameter if A>$7F 7573 | 18 AUXMEM.BYTWRD.s 145 | Comment | 11 | | 0 | 00/E827 | * On exit, A=preserved 7574 | 18 AUXMEM.BYTWRD.s 146 | Comment | 11 | | 0 | 00/E827 | * X=first returned result 7575 | 18 AUXMEM.BYTWRD.s 147 | Comment | 11 | | 0 | 00/E827 | * Y=second returned result if A>$7F 7576 | 18 AUXMEM.BYTWRD.s 148 | Comment | 11 | | 0 | 00/E827 | * Cy=any returned status if A>$7F 7577 | 18 AUXMEM.BYTWRD.s 149 | Comment | 11 | | 0 | 00/E827 | * 7578 | 18 AUXMEM.BYTWRD.s 150 | Code | 11 | | 1 | 00/E827 : 48 | BYTEHND PHA 7579 | 18 AUXMEM.BYTWRD.s 151 | Code | 11 | | 1 | 00/E828 : 08 | PHP 7580 | 18 AUXMEM.BYTWRD.s 152 | Code | 11 | | 1 | 00/E829 : 78 | SEI 7581 | 18 AUXMEM.BYTWRD.s 153 | Code | 11 | | 2 | 00/E82A : 85 EF | STA {$EF} ; Store registers 7582 | 18 AUXMEM.BYTWRD.s 154 | Code | 11 | | 2 | 00/E82C : 86 F0 | STX {{$EF}+1} 7583 | 18 AUXMEM.BYTWRD.s 155 | Code | 11 | | 2 | 00/E82E : 84 F1 | STY {{{$EF}+1}+1} 7584 | 18 AUXMEM.BYTWRD.s 156 | Code | 11 | | 2 | 00/E830 : A2 07 | LDX #$07 ; X=SERVBYTE 7585 | 18 AUXMEM.BYTWRD.s 157 | Code | 11 | | 2 | 00/E832 : C9 A6 | CMP #$A6 7586 | 18 AUXMEM.BYTWRD.s 158 | Code | 11 | | 2 | 00/E834 : B0 10 | BCS BYTEGO1 ; OSBYTE &A6+ 7587 | 18 AUXMEM.BYTWRD.s 159 | Code | 11 | | 2 | 00/E836 : C9 A1 | CMP #{{BYTWRDTOP-BYTWRDLOW}/2+{$75}-1}+1 7588 | 18 AUXMEM.BYTWRD.s 160 | Code | 11 | | 2 | 00/E838 : B0 34 | BCS BYTWRDFAIL ; Pass on to service call 7589 | 18 AUXMEM.BYTWRD.s 161 | Code | 11 | | 2 | 00/E83A : C9 75 | CMP #{$75} 7590 | 18 AUXMEM.BYTWRD.s 162 | Code | 11 | | 2 | 00/E83C : B0 0A | BCS BYTEGO2 ; High OSBYTEs 7591 | 18 AUXMEM.BYTWRD.s 163 | Code | 11 | | 2 | 00/E83E : C9 10 | CMP #{{BYTWRDLOW-BYTWRDADDR}/2-1}+1 7592 | 18 AUXMEM.BYTWRD.s 164 | Code | 11 | | 2 | 00/E840 : B0 2C | BCS BYTWRDFAIL ; Pass on to service call 7593 | 18 AUXMEM.BYTWRD.s 165 | Code | 11 | | 2 | 00/E842 : 64 F1 | STZ {{{$EF}+1}+1} ; Prepare Y=0 for low OSBYTEs 7594 | 18 AUXMEM.BYTWRD.s 166 | Code | 11 | | 2 | 00/E844 : 90 04 | BCC BYTEGO3 7595 | 18 AUXMEM.BYTWRD.s 167 | Empty | 11 | | 0 | 00/E846 | 7596 | 18 AUXMEM.BYTWRD.s 168 | Code | 11 | | 2 | 00/E846 : A9 A1 | BYTEGO1 LDA #{{BYTWRDTOP-BYTWRDLOW}/2+{$75}-1}+1; Index for BYTEVAR 7597 | 18 AUXMEM.BYTWRD.s 169 | Code | 11 | | 2 | 00/E848 : E9 65 | BYTEGO2 SBC #{$75}-{{BYTWRDLOW-BYTWRDADDR}/2-1}-1; Reduce OSBYTE number 7598 | 18 AUXMEM.BYTWRD.s 170 | Code | 11 | | 2 | 00/E84A : 09 80 | BYTEGO3 ORA #$80 ; Will become CS=OSBYTE call 7599 | 18 AUXMEM.BYTWRD.s 171 | Empty | 11 | | 0 | 00/E84C | 7600 | 18 AUXMEM.BYTWRD.s 172 | Code | 11 | | 1 | 00/E84C : 0A | BYTWRDCALL ASL A ; Index into dispatch table 7601 | 18 AUXMEM.BYTWRD.s 173 | Code | 11 | | 1 | 00/E84D : A8 | TAY ; Y=offset into dispatch table 7602 | 18 AUXMEM.BYTWRD.s 174 | Comment | 11 | | 0 | 00/E84E | * BIT FXNETCLAIM ; Check Econet intercept flag 7603 | 18 AUXMEM.BYTWRD.s 175 | Comment | 11 | | 0 | 00/E84E | * BPL BYTWRDNONET ; No intercept, skip past 7604 | 18 AUXMEM.BYTWRD.s 176 | Comment | 11 | | 0 | 00/E84E | * TXA ; Set A=BYTE or WORD call 7605 | 18 AUXMEM.BYTWRD.s 177 | Comment | 11 | | 0 | 00/E84E | * CLV ; Clear V 7606 | 18 AUXMEM.BYTWRD.s 178 | Comment | 11 | | 0 | 00/E84E | * JSR CALLNET ; Call Econet with X=call type 7607 | 18 AUXMEM.BYTWRD.s 179 | Comment | 11 | | 0 | 00/E84E | * BVS BYTWRDEXIT ; V now set, claimed by NETV 7608 | 18 AUXMEM.BYTWRD.s 180 | Empty | 11 | | 0 | 00/E84E | 7609 | 18 AUXMEM.BYTWRD.s 181 | Code | 11 | | 3 | 00/E84E : B9 83 E7 | BYTWRDNONET LDA BYTWRDADDR+1,Y ; Get routine address 7610 | 18 AUXMEM.BYTWRD.s 182 | Code | 11 | | 2 | 00/E851 : 85 FB | STA {$FA}+1 7611 | 18 AUXMEM.BYTWRD.s 183 | Code | 11 | | 3 | 00/E853 : B9 82 E7 | LDA BYTWRDADDR+0,Y 7612 | 18 AUXMEM.BYTWRD.s 184 | Code | 11 | | 2 | 00/E856 : 85 FA | STA {$FA}+0 7613 | 18 AUXMEM.BYTWRD.s 185 | Code | 11 | | 2 | 00/E858 : A5 EF | LDA {$EF} ; Get A parameter back 7614 | 18 AUXMEM.BYTWRD.s 186 | Code | 11 | | 2 | 00/E85A : A4 F1 | LDY {{{$EF}+1}+1} ; Get Y parameter back 7615 | 18 AUXMEM.BYTWRD.s 187 | Code | 11 | | 2 | 00/E85C : A6 F0 | LDX {{$EF}+1} ; Get X parameter, set EQ from it 7616 | 18 AUXMEM.BYTWRD.s 188 | Code | 11 | | 2 | 00/E85E : B0 05 | BCS BYTWRDGO ; Skip if OSBYTE call 7617 | 18 AUXMEM.BYTWRD.s 189 | Code | 11 | | 2 | 00/E860 : A0 00 | LDY #$00 ; OSWORD call, enter with Y=0 7618 | 18 AUXMEM.BYTWRD.s 190 | Code | 11 | | 2 | 00/E862 : B1 F0 | LDA ({{{$EF}+1}}),Y ; and A=first byte in control block 7619 | 18 AUXMEM.BYTWRD.s 191 | Code | 11 | | 1 | 00/E864 : 38 | SEC ; Enter routine with CS 7620 | 18 AUXMEM.BYTWRD.s 192 | Code | 11 | | 3 | 00/E865 : 20 88 E8 | BYTWRDGO JSR JMPADDR ; Call the routine 7621 | 18 AUXMEM.BYTWRD.s 193 | Comment | 11 | | 0 | 00/E868 | * Routines are entered with: 7622 | 18 AUXMEM.BYTWRD.s 194 | Comment | 11 | | 0 | 00/E868 | * A=OSBYTE call or first byte of OSWORD control block 7623 | 18 AUXMEM.BYTWRD.s 195 | Comment | 11 | | 0 | 00/E868 | * X=X parameter 7624 | 18 AUXMEM.BYTWRD.s 196 | Comment | 11 | | 0 | 00/E868 | * Y=OSBYTE Y parameter for A>$7F 7625 | 18 AUXMEM.BYTWRD.s 197 | Comment | 11 | | 0 | 00/E868 | * Y=$00 for OSBYTE A<$80 7626 | 18 AUXMEM.BYTWRD.s 198 | Comment | 11 | | 0 | 00/E868 | * Y=$00 for OSWORD so (OSCTRL),Y => first byte 7627 | 18 AUXMEM.BYTWRD.s 199 | Comment | 11 | | 0 | 00/E868 | * Carry Set 7628 | 18 AUXMEM.BYTWRD.s 200 | Comment | 11 | | 0 | 00/E868 | * EQ set from OSBYTE X or from OSWORD first byte 7629 | 18 AUXMEM.BYTWRD.s 201 | Comment | 11 | | 0 | 00/E868 | * X,Y,Cy from routine returned to caller 7630 | 18 AUXMEM.BYTWRD.s 202 | Empty | 11 | | 0 | 00/E868 | 7631 | 18 AUXMEM.BYTWRD.s 203 | Code | 11 | | 1 | 00/E868 : 6A | BYTWRDEXIT ROR A ; Move Carry to A 7632 | 18 AUXMEM.BYTWRD.s 204 | Code | 11 | | 1 | 00/E869 : 28 | PLP ; Restore original flags and IRQs 7633 | 18 AUXMEM.BYTWRD.s 205 | Code | 11 | | 1 | 00/E86A : 2A | ROL A ; Move Carry back to flags 7634 | 18 AUXMEM.BYTWRD.s 206 | Code | 11 | | 1 | 00/E86B : 68 | PLA ; Restore A 7635 | 18 AUXMEM.BYTWRD.s 207 | Code | 11 | | 1 | 00/E86C : B8 | CLV ; Clear V = Actioned 7636 | 18 AUXMEM.BYTWRD.s 208 | Code | 11 | | 1 | 00/E86D : 60 | BYTENULL RTS 7637 | 18 AUXMEM.BYTWRD.s 209 | Empty | 11 | | 0 | 00/E86E | 7638 | 18 AUXMEM.BYTWRD.s 210 | Code | 11 | | 1 | 00/E86E : DA | BYTWRDFAIL PHX ; *DEBUG* 7639 | 18 AUXMEM.BYTWRD.s 211 | Code | 11 | | 3 | 00/E86F : 20 ED D0 | JSR SERVICEX ; Offer to sideways ROMs as service X 7640 | 18 AUXMEM.BYTWRD.s 212 | Code | 11 | | 2 | 00/E872 : A6 F0 | LDX {{$EF}+1} ; Get returned X, returned Y is in Y 7641 | 18 AUXMEM.BYTWRD.s 213 | Code | 11 | | 2 | 00/E874 : C9 01 | CMP #$01 7642 | 18 AUXMEM.BYTWRD.s 214 | Code | 11 | | 1 | 00/E876 : 68 | PLA ; *DEBUG* 7643 | 18 AUXMEM.BYTWRD.s 215 | Code | 11 | | 2 | 00/E877 : 90 EF | BCC BYTWRDEXIT ; Claimed, return 7644 | 18 AUXMEM.BYTWRD.s 216 | Code | 11 | | 2 | 00/E879 : 24 E0 | BIT $E0 ; *DEBUG* 7645 | 18 AUXMEM.BYTWRD.s 217 | Code | 11 | | 2 | 00/E87B : 50 03 | BVC BYTEFAIL1 ; Debug turned off 7646 | 18 AUXMEM.BYTWRD.s 218 | Code | 11 | | 3 | 00/E87D : 20 80 E9 | JSR UNSUPBYTWRD ; *DEBUG* 7647 | 18 AUXMEM.BYTWRD.s 219 | Code | 11 | | 2 | 00/E880 : A2 FF | BYTEFAIL1 LDX #$FF ; X=&FF if unclaimed 7648 | 18 AUXMEM.BYTWRD.s 220 | Code | 11 | | 1 | 00/E882 : 28 | PLP ; Restore original flags and IRQs 7649 | 18 AUXMEM.BYTWRD.s 221 | Code | 11 | | 1 | 00/E883 : 68 | PLA ; Restore A 7650 | 18 AUXMEM.BYTWRD.s 222 | Code | 11 | | 3 | 00/E884 : 2C 88 E8 | BIT SETV ; Set V = Not actioned 7651 | 18 AUXMEM.BYTWRD.s 223 | Code | 11 | | 1 | 00/E887 : 60 | RTS 7652 | 18 AUXMEM.BYTWRD.s 224 | Empty | 11 | | 0 | 00/E888 | 7653 | 18 AUXMEM.BYTWRD.s 225 | Empty | 11 | | 0 | 00/E888 | SETV ; JMP() is $6C, bit 6 set to set V 7654 | 18 AUXMEM.BYTWRD.s 226 | Comment | 11 | | 0 | 00/E888 | * JMPADDR JMP (OSINTWS) 7655 | 18 AUXMEM.BYTWRD.s 227 | Comment | 11 | | 0 | 00/E888 | * Merlin doesn't like the above 7656 | 18 AUXMEM.BYTWRD.s 228 | Code | 11 | | 3 | 00/E888 : 6C FA 00 | JMPADDR JMP ($00FA) 7657 | 18 AUXMEM.BYTWRD.s 229 | Empty | 11 | | 0 | 00/E88B | 7658 | 18 AUXMEM.BYTWRD.s 230 | Comment | 11 | | 0 | 00/E88B | * OSWORD &00 - Read a line of input 7659 | 18 AUXMEM.BYTWRD.s 231 | Comment | 11 | | 0 | 00/E88B | *********************************** 7660 | 18 AUXMEM.BYTWRD.s 232 | Comment | 11 | | 0 | 00/E88B | * On entry, (OSCTRL)=>control block 7661 | 18 AUXMEM.BYTWRD.s 233 | Comment | 11 | | 0 | 00/E88B | * Y=0, A=(OSCTRL) 7662 | 18 AUXMEM.BYTWRD.s 234 | Comment | 11 | | 0 | 00/E88B | * On exit, Y=length of line, offset to <cr> 7663 | 18 AUXMEM.BYTWRD.s 235 | Comment | 11 | | 0 | 00/E88B | * CC = Ok, CS = Escape 7664 | 18 AUXMEM.BYTWRD.s 236 | Comment | 11 | | 0 | 00/E88B | * 7665 | 18 AUXMEM.BYTWRD.s 237 | Empty | 11 | | 0 | 00/E88B | 7666 | 18 AUXMEM.BYTWRD.s 238 | Directive | 11 | | 0 | 00/E88B | WORD00 IF {{$E6}+2}-{$E6}-2 7667 | 18 AUXMEM.BYTWRD.s 250 | Directive | 11 | | 0 | 00/E88B | ELSE 7668 | 18 AUXMEM.BYTWRD.s 251 | Code | 11 | | 2 | 00/E88B : A0 04 | LDY #$04 ; Copy control block 7669 | 18 AUXMEM.BYTWRD.s 252 | Code | 11 | | 2 | 00/E88D : B1 F0 | _WORD00LP3 LDA ({{{$EF}+1}}),Y ; 0,1 => text 7670 | 18 AUXMEM.BYTWRD.s 253 | Code | 11 | | 3 | 00/E88F : 99 E6 00 | STA {$E6},Y ; 2 = MAXLEN 7671 | 18 AUXMEM.BYTWRD.s 254 | Code | 11 | | 1 | 00/E892 : 88 | DEY ; 3 = MINCHAR 7672 | 18 AUXMEM.BYTWRD.s 255 | Code | 11 | | 2 | 00/E893 : 10 F8 | BPL _WORD00LP3 ; 4 = MAXCHAR 7673 | 18 AUXMEM.BYTWRD.s 256 | Code | 11 | | 1 | 00/E895 : C8 | INY ; Initial line length = zero 7674 | 18 AUXMEM.BYTWRD.s 257 | Directive | 11 | | 0 | 00/E896 | FIN 7675 | 18 AUXMEM.BYTWRD.s 258 | Comment | 11 | | 0 | 00/E896 | * STY FXLINES ; Reset line counter 7676 | 18 AUXMEM.BYTWRD.s 259 | Code | 11 | | 1 | 00/E896 : 58 | CLI 7677 | 18 AUXMEM.BYTWRD.s 260 | Code | 11 | | 2 | 00/E897 : F0 07 | BEQ _WORD00LP ; Enter main loop 7678 | 18 AUXMEM.BYTWRD.s 261 | Empty | 11 | | 0 | 00/E899 | 7679 | 18 AUXMEM.BYTWRD.s 262 | Code | 11 | | 2 | 00/E899 : A9 07 | _WORD00BELL LDA #$07 ; $07=BELL 7680 | 18 AUXMEM.BYTWRD.s 263 | Code | 11 | | 1 | 00/E89B : 88 | DEY ; Balance next INY 7681 | 18 AUXMEM.BYTWRD.s 264 | Code | 11 | | 1 | 00/E89C : C8 | _WORD00NEXT INY ; Step to next character 7682 | 18 AUXMEM.BYTWRD.s 265 | Code | 11 | | 3 | 00/E89D : 20 EE FF | _WORD00ECHO JSR OSWRCH ; Print character 7683 | 18 AUXMEM.BYTWRD.s 266 | Empty | 11 | | 0 | 00/E8A0 | 7684 | 18 AUXMEM.BYTWRD.s 267 | Code | 11 | | 3 | 00/E8A0 : 20 E0 FF | _WORD00LP JSR OSRDCH 7685 | 18 AUXMEM.BYTWRD.s 268 | Code | 11 | | 2 | 00/E8A3 : B0 3F | BCS _WORD00ESC ; Escape 7686 | 18 AUXMEM.BYTWRD.s 269 | Comment | 11 | | 0 | 00/E8A5 | * TAX ; Save character in X 7687 | 18 AUXMEM.BYTWRD.s 270 | Comment | 11 | | 0 | 00/E8A5 | * LDA FXVAR03 ; Get FX3 destination 7688 | 18 AUXMEM.BYTWRD.s 271 | Comment | 11 | | 0 | 00/E8A5 | * ROR A 7689 | 18 AUXMEM.BYTWRD.s 272 | Comment | 11 | | 0 | 00/E8A5 | * ROR A ; Move bit 1 into Carry 7690 | 18 AUXMEM.BYTWRD.s 273 | Comment | 11 | | 0 | 00/E8A5 | * TXA ; Get character back 7691 | 18 AUXMEM.BYTWRD.s 274 | Comment | 11 | | 0 | 00/E8A5 | * BCS :WORD00TEST ; VDU disabled, ignore 7692 | 18 AUXMEM.BYTWRD.s 275 | Code | 11 | | 3 | 00/E8A5 : AE 6A 02 | LDX {{$190}+218} ; Get length of VDU queue 7693 | 18 AUXMEM.BYTWRD.s 276 | Code | 11 | | 2 | 00/E8A8 : D0 F3 | BNE _WORD00ECHO ; Not zero, just print 7694 | 18 AUXMEM.BYTWRD.s 277 | Code | 11 | | 2 | 00/E8AA : C9 7F | _WORD00TEST CMP #$7F ; Delete 7695 | 18 AUXMEM.BYTWRD.s 278 | Code | 11 | | 2 | 00/E8AC : F0 06 | BEQ _WORD00DEL 7696 | 18 AUXMEM.BYTWRD.s 279 | Code | 11 | | 2 | 00/E8AE : C9 08 | CMP #$08 ; If KBD has no DELETE key 7697 | 18 AUXMEM.BYTWRD.s 280 | Code | 11 | | 2 | 00/E8B0 : D0 09 | BNE _WORD00CHAR 7698 | 18 AUXMEM.BYTWRD.s 281 | Code | 11 | | 2 | 00/E8B2 : A9 7F | LDA #$7F 7699 | 18 AUXMEM.BYTWRD.s 282 | Code | 11 | | 2 | 00/E8B4 : C0 00 | _WORD00DEL CPY #$00 7700 | 18 AUXMEM.BYTWRD.s 283 | Code | 11 | | 2 | 00/E8B6 : F0 E8 | BEQ _WORD00LP ; Nothing to delete 7701 | 18 AUXMEM.BYTWRD.s 284 | Code | 11 | | 1 | 00/E8B8 : 88 | DEY ; Back up one character 7702 | 18 AUXMEM.BYTWRD.s 285 | Code | 11 | | 2 | 00/E8B9 : B0 E2 | BCS _WORD00ECHO ; Loop back to print DEL 7703 | 18 AUXMEM.BYTWRD.s 286 | Code | 11 | | 2 | 00/E8BB : C9 15 | _WORD00CHAR CMP #$15 ; Ctrl-U 7704 | 18 AUXMEM.BYTWRD.s 287 | Code | 11 | | 2 | 00/E8BD : D0 0C | BNE _WORD00INS ; No, insert character 7705 | 18 AUXMEM.BYTWRD.s 288 | Code | 11 | | 2 | 00/E8BF : A9 7F | LDA #$7F ; Delete character 7706 | 18 AUXMEM.BYTWRD.s 289 | Code | 11 | | 1 | 00/E8C1 : C8 | INY ; Balance first DEY 7707 | 18 AUXMEM.BYTWRD.s 290 | Code | 11 | | 1 | 00/E8C2 : 88 | _WORD00ALL DEY ; Back up one character 7708 | 18 AUXMEM.BYTWRD.s 291 | Code | 11 | | 2 | 00/E8C3 : F0 DB | BEQ _WORD00LP ; Beginning of line 7709 | 18 AUXMEM.BYTWRD.s 292 | Code | 11 | | 3 | 00/E8C5 : 20 EE FF | JSR OSWRCH ; Print DELETE 7710 | 18 AUXMEM.BYTWRD.s 293 | Code | 11 | | 3 | 00/E8C8 : 4C C2 E8 | JMP _WORD00ALL ; Loop to delete all 7711 | 18 AUXMEM.BYTWRD.s 294 | Code | 11 | | 2 | 00/E8CB : 91 E6 | _WORD00INS STA ({$E6}),Y ; Store the character 7712 | 18 AUXMEM.BYTWRD.s 295 | Code | 11 | | 2 | 00/E8CD : C9 0D | CMP #$0D 7713 | 18 AUXMEM.BYTWRD.s 296 | Code | 11 | | 2 | 00/E8CF : F0 10 | BEQ _WORD00CR ; CR - Done 7714 | 18 AUXMEM.BYTWRD.s 297 | Code | 11 | | 2 | 00/E8D1 : C4 E8 | CPY {{$E6}+2} 7715 | 18 AUXMEM.BYTWRD.s 298 | Code | 11 | | 2 | 00/E8D3 : B0 C4 | BCS _WORD00BELL ; Too long, beep 7716 | 18 AUXMEM.BYTWRD.s 299 | Code | 11 | | 2 | 00/E8D5 : C5 E9 | CMP {{$E6}+3} 7717 | 18 AUXMEM.BYTWRD.s 300 | Code | 11 | | 2 | 00/E8D7 : 90 C4 | BCC _WORD00ECHO ; <MINCHAR, don't step to next 7718 | 18 AUXMEM.BYTWRD.s 301 | Code | 11 | | 2 | 00/E8D9 : C5 EA | CMP {{$E6}+4} 7719 | 18 AUXMEM.BYTWRD.s 302 | Code | 11 | | 2 | 00/E8DB : 90 BF | BCC _WORD00NEXT ; <MAXCHAR, step to next 7720 | 18 AUXMEM.BYTWRD.s 303 | Code | 11 | | 2 | 00/E8DD : F0 BD | BEQ _WORD00NEXT ; =MAXCHAR, step to next 7721 | 18 AUXMEM.BYTWRD.s 304 | Code | 11 | | 2 | 00/E8DF : B0 BC | BCS _WORD00ECHO ; >MAXCHAR, don't step to next 7722 | 18 AUXMEM.BYTWRD.s 305 | Empty | 11 | | 0 | 00/E8E1 | 7723 | 18 AUXMEM.BYTWRD.s 306 | Code | 11 | | 3 | 00/E8E1 : 20 E7 FF | _WORD00CR JSR OSNEWL 7724 | 18 AUXMEM.BYTWRD.s 307 | Comment | 11 | | 0 | 00/E8E4 | * JSR CALLNET ; Call Econet Vector, A=13 7725 | 18 AUXMEM.BYTWRD.s 308 | Code | 11 | | 2 | 00/E8E4 : A5 FF | _WORD00ESC LDA {$FF} ; Get Escape flag 7726 | 18 AUXMEM.BYTWRD.s 309 | Code | 11 | | 1 | 00/E8E6 : 2A | ROL A ; Carry=Escape state 7727 | 18 AUXMEM.BYTWRD.s 310 | Code | 11 | | 1 | 00/E8E7 : 60 | RTS 7728 | 18 AUXMEM.BYTWRD.s 311 | Empty | 11 | | 0 | 00/E8E8 | 7729 | 18 AUXMEM.BYTWRD.s 312 | Empty | 11 | | 0 | 00/E8E8 | 7730 | 18 AUXMEM.BYTWRD.s 313 | Comment | 11 | | 0 | 00/E8E8 | * OSWORD &01 - Read elapsed time 7731 | 18 AUXMEM.BYTWRD.s 314 | Comment | 11 | | 0 | 00/E8E8 | * OSWORD &02 - Write elapsed time 7732 | 18 AUXMEM.BYTWRD.s 315 | Comment | 11 | | 0 | 00/E8E8 | * OSWORD &03 - Read countdown timer 7733 | 18 AUXMEM.BYTWRD.s 316 | Comment | 11 | | 0 | 00/E8E8 | * OSWORD &04 - Write countdown timer 7734 | 18 AUXMEM.BYTWRD.s 317 | Comment | 11 | | 0 | 00/E8E8 | ************************************ 7735 | 18 AUXMEM.BYTWRD.s 318 | Comment | 11 | | 0 | 00/E8E8 | * On entry, (OSCTRL)=>control block 7736 | 18 AUXMEM.BYTWRD.s 319 | Comment | 11 | | 0 | 00/E8E8 | * Y=0 7737 | 18 AUXMEM.BYTWRD.s 320 | Empty | 11 | | 0 | 00/E8E8 | 7738 | 18 AUXMEM.BYTWRD.s 321 | Code | 11 | | 1 | 00/E8E8 : 98 | WORD01 TYA ; Dummy, just return zero 7739 | 18 AUXMEM.BYTWRD.s 322 | Code | 11 | | 2 | 00/E8E9 : 91 F0 | _WORD01LP STA ({{{$EF}+1}}),Y 7740 | 18 AUXMEM.BYTWRD.s 323 | Code | 11 | | 1 | 00/E8EB : C8 | INY 7741 | 18 AUXMEM.BYTWRD.s 324 | Code | 11 | | 2 | 00/E8EC : C0 05 | CPY #$05 7742 | 18 AUXMEM.BYTWRD.s 325 | Code | 11 | | 2 | 00/E8EE : 90 F9 | BCC _WORD01LP 7743 | 18 AUXMEM.BYTWRD.s 326 | Empty | 11 | | 0 | 00/E8F0 | WORD04 7744 | 18 AUXMEM.BYTWRD.s 327 | Empty | 11 | | 0 | 00/E8F0 | WORD03 7745 | 18 AUXMEM.BYTWRD.s 328 | Code | 11 | | 1 | 00/E8F0 : 60 | WORD02 RTS ; Dummy, do nothing 7746 | 18 AUXMEM.BYTWRD.s 329 | Empty | 11 | | 0 | 00/E8F1 | 7747 | 18 AUXMEM.BYTWRD.s 330 | Comment | 11 | | 0 | 00/E8F1 | * OSWORD &05 - Read I/O memory 7748 | 18 AUXMEM.BYTWRD.s 331 | Comment | 11 | | 0 | 00/E8F1 | * OSWORD &06 - Write I/O memory 7749 | 18 AUXMEM.BYTWRD.s 332 | Comment | 11 | | 0 | 00/E8F1 | *********************************** 7750 | 18 AUXMEM.BYTWRD.s 333 | Comment | 11 | | 0 | 00/E8F1 | * On entry, (OSCTRL)+0 address 7751 | 18 AUXMEM.BYTWRD.s 334 | Comment | 11 | | 0 | 00/E8F1 | * (OSCTRL)+4 byte read or written 7752 | 18 AUXMEM.BYTWRD.s 335 | Comment | 11 | | 0 | 00/E8F1 | * Y=0, A=(OSCTRL) 7753 | 18 AUXMEM.BYTWRD.s 336 | Comment | 11 | | 0 | 00/E8F1 | * IRQs are disabled, so we don't have to preserve IRQ state 7754 | 18 AUXMEM.BYTWRD.s 337 | Comment | 11 | | 0 | 00/E8F1 | * 7755 | 18 AUXMEM.BYTWRD.s 338 | Code | 11 | | 3 | 00/E8F1 : 20 36 E9 | WORD05 JSR GETADDR ; Point to address, set Y=>data 7756 | 18 AUXMEM.BYTWRD.s 339 | Code | 11 | | 2 | 00/E8F4 : D0 26 | BNE WORD05A 7757 | 18 AUXMEM.BYTWRD.s 340 | Code | 11 | | 3 | 00/E8F6 : 20 FE E8 | JSR WORD05IO 7758 | 18 AUXMEM.BYTWRD.s 341 | Code | 11 | | 2 | 00/E8F9 : A0 04 | LDY #$04 7759 | 18 AUXMEM.BYTWRD.s 342 | Code | 11 | | 2 | 00/E8FB : 91 F0 | STA ({{{$EF}+1}}),Y ; Store it 7760 | 18 AUXMEM.BYTWRD.s 343 | Code | 11 | | 1 | 00/E8FD : 60 | WORD05RET RTS 7761 | 18 AUXMEM.BYTWRD.s 344 | Empty | 11 | | 0 | 00/E8FE | 7762 | 18 AUXMEM.BYTWRD.s 345 | Code | 11 | | 2 | 00/E8FE : A5 FA | WORD05IO LDA {$FA}+0 ; X CORRUPTED BY XF2MAIN 7763 | 18 AUXMEM.BYTWRD.s 346 | Code | 11 | | 2 | 00/E900 : A4 FB | LDY {$FA}+1 7764 | 18 AUXMEM.BYTWRD.s 347 | Macro | 11 | | 0 | 00/E902 | WORD05IO1 >>> XF2MAIN,MAINRDMEM 7765 | 18 AUXMEM.BYTWRD.s 347 | Empty | 11 | | 0 | 00/E902 | 7766 | 18 AUXMEM.BYTWRD.s 347 | Empty | 11 | | 0 | 00/E902 | 7767 | 18 AUXMEM.BYTWRD.s 347 | Empty | 11 | | 0 | 00/E902 | 7768 | 18 AUXMEM.BYTWRD.s 347 | Empty | 11 | | 0 | 00/E902 | 7769 | 18 AUXMEM.BYTWRD.s 347 | Code | 11 | | 2 | 00/E902 : A2 19 | LDX #<MAINRDMEM 7770 | 18 AUXMEM.BYTWRD.s 347 | Code | 11 | | 3 | 00/E904 : 8E ED 03 | STX {$3ED} 7771 | 18 AUXMEM.BYTWRD.s 347 | Code | 11 | | 2 | 00/E907 : A2 4E | LDX #>MAINRDMEM 7772 | 18 AUXMEM.BYTWRD.s 347 | Code | 11 | | 3 | 00/E909 : 8E EE 03 | STX {$3EE} 7773 | 18 AUXMEM.BYTWRD.s 347 | Code | 11 | | 1 | 00/E90C : 78 | SEI ; Disable IRQ before XFER 7774 | 18 AUXMEM.BYTWRD.s 347 | Code | 11 | | 1 | 00/E90D : BA | TSX 7775 | 18 AUXMEM.BYTWRD.s 347 | Code | 11 | | 3 | 00/E90E : 8E 01 01 | STX $0101 ; Save alt SP 7776 | 18 AUXMEM.BYTWRD.s 347 | Code | 11 | | 3 | 00/E911 : AE 00 01 | LDX $0100 ; Load main SP into X 7777 | 18 AUXMEM.BYTWRD.s 347 | Code | 11 | | 1 | 00/E914 : 18 | CLC ; Use main mem 7778 | 18 AUXMEM.BYTWRD.s 347 | Code | 11 | | 1 | 00/E915 : B8 | CLV ; Use main ZP and LC 7779 | 18 AUXMEM.BYTWRD.s 347 | Code | 11 | | 3 | 00/E916 : 4C 14 C3 | JMP {$C314} 7780 | 18 AUXMEM.BYTWRD.s 348 | Empty | 11 | | 0 | 00/E919 | 7781 | 18 AUXMEM.BYTWRD.s 349 | Comment | 11 | | 0 | 00/E919 | * <8000xxxx language memory 7782 | 18 AUXMEM.BYTWRD.s 350 | Comment | 11 | | 0 | 00/E919 | * ????xxxx main memory RAM paged in via STA $C002 7783 | 18 AUXMEM.BYTWRD.s 351 | Comment | 11 | | 0 | 00/E919 | * ????xxxx main memory ROM paged in via XFER 7784 | 18 AUXMEM.BYTWRD.s 352 | Empty | 11 | | 0 | 00/E919 | 7785 | 18 AUXMEM.BYTWRD.s 353 | Code | 11 | | 3 | 00/E919 : 8D 02 C0 | STA $C002 ; Switch to main memory 7786 | 18 AUXMEM.BYTWRD.s 354 | Code | 11 | | 2 | 00/E91C : B2 FA | WORD05A LDA ({$FA}) ; Get byte 7787 | 18 AUXMEM.BYTWRD.s 355 | Code | 11 | | 3 | 00/E91E : 8D 03 C0 | STA $C003 ; Back to aux memory 7788 | 18 AUXMEM.BYTWRD.s 356 | Code | 11 | | 2 | 00/E921 : 91 F0 | STA ({{{$EF}+1}}),Y ; Store it 7789 | 18 AUXMEM.BYTWRD.s 357 | Code | 11 | | 1 | 00/E923 : 60 | RTS 7790 | 18 AUXMEM.BYTWRD.s 358 | Empty | 11 | | 0 | 00/E924 | 7791 | 18 AUXMEM.BYTWRD.s 359 | Code | 11 | | 3 | 00/E924 : 20 36 E9 | WORD06 JSR GETADDR ; Point to address, set Y=>data 7792 | 18 AUXMEM.BYTWRD.s 360 | Code | 11 | | 1 | 00/E927 : 08 | PHP 7793 | 18 AUXMEM.BYTWRD.s 361 | Code | 11 | | 2 | 00/E928 : B1 F0 | LDA ({{{$EF}+1}}),Y ; Get byte 7794 | 18 AUXMEM.BYTWRD.s 362 | Code | 11 | | 1 | 00/E92A : 28 | PLP 7795 | 18 AUXMEM.BYTWRD.s 363 | Code | 11 | | 2 | 00/E92B : D0 03 | BNE WORD06A 7796 | 18 AUXMEM.BYTWRD.s 364 | Code | 11 | | 3 | 00/E92D : 8D 04 C0 | STA $C004 ; Switch to main memory 7797 | 18 AUXMEM.BYTWRD.s 365 | Code | 11 | | 2 | 00/E930 : 92 FA | WORD06A STA ({$FA}) ; Store it 7798 | 18 AUXMEM.BYTWRD.s 366 | Code | 11 | | 3 | 00/E932 : 8D 05 C0 | STA $C005 ; Back to aux memory 7799 | 18 AUXMEM.BYTWRD.s 367 | Code | 11 | | 1 | 00/E935 : 60 | RTS 7800 | 18 AUXMEM.BYTWRD.s 368 | Empty | 11 | | 0 | 00/E936 | 7801 | 18 AUXMEM.BYTWRD.s 369 | Code | 11 | | 2 | 00/E936 : 85 FA | GETADDR STA {$FA}+0 ; (OSINTWS)=>byte to read/write 7802 | 18 AUXMEM.BYTWRD.s 370 | Code | 11 | | 1 | 00/E938 : C8 | INY 7803 | 18 AUXMEM.BYTWRD.s 371 | Code | 11 | | 2 | 00/E939 : B1 F0 | LDA ({{{$EF}+1}}),Y 7804 | 18 AUXMEM.BYTWRD.s 372 | Code | 11 | | 2 | 00/E93B : 85 FB | STA {$FA}+1 7805 | 18 AUXMEM.BYTWRD.s 373 | Code | 11 | | 1 | 00/E93D : C8 | INY 7806 | 18 AUXMEM.BYTWRD.s 374 | Code | 11 | | 1 | 00/E93E : C8 | INY 7807 | 18 AUXMEM.BYTWRD.s 375 | Code | 11 | | 2 | 00/E93F : B1 F0 | LDA ({{{$EF}+1}}),Y ; Get address high byte 7808 | 18 AUXMEM.BYTWRD.s 376 | Code | 11 | | 1 | 00/E941 : C8 | INY ; Point Y to data byte 7809 | 18 AUXMEM.BYTWRD.s 377 | Code | 11 | | 2 | 00/E942 : C9 80 | CMP #$80 ; *TO DO* Needs an appropriate value 7810 | 18 AUXMEM.BYTWRD.s 378 | Code | 11 | | 1 | 00/E944 : 60 | RTS 7811 | 18 AUXMEM.BYTWRD.s 379 | Empty | 11 | | 0 | 00/E945 | 7812 | 18 AUXMEM.BYTWRD.s 380 | Empty | 11 | | 0 | 00/E945 | 7813 | 18 AUXMEM.BYTWRD.s 381 | Comment | 11 | | 0 | 00/E945 | * OSBYTE routines 7814 | 18 AUXMEM.BYTWRD.s 382 | Comment | 11 | | 0 | 00/E945 | ***************** 7815 | 18 AUXMEM.BYTWRD.s 383 | Empty | 11 | | 0 | 00/E945 | 7816 | 18 AUXMEM.BYTWRD.s 384 | Code | 11 | | 2 | 00/E945 : A9 01 | BYTE88 LDA #$01 ; $88 = *CODE 7817 | 18 AUXMEM.BYTWRD.s 385 | Code | 11 | | 3 | 00/E947 : 6C 00 02 | WORDE0 JMP ({$200}) ; OSWORD &E0+ 7818 | 18 AUXMEM.BYTWRD.s 386 | Empty | 11 | | 0 | 00/E94A | 7819 | 18 AUXMEM.BYTWRD.s 387 | Comment | 11 | | 0 | 00/E94A | * Low OSBYTE converted into Set Variable 7820 | 18 AUXMEM.BYTWRD.s 388 | Code | 11 | | 2 | 00/E94A : A9 F7 | BYTE02 LDA #$F7 ; -> &B1 7821 | 18 AUXMEM.BYTWRD.s 389 | Comment | 11 | | 0 | 00/E94C | * 7822 | 18 AUXMEM.BYTWRD.s 390 | Empty | 11 | | 0 | 00/E94C | BYTE09 ; -> &C2 7823 | 18 AUXMEM.BYTWRD.s 391 | Empty | 11 | | 0 | 00/E94C | BYTE0A ; -> &C3 7824 | 18 AUXMEM.BYTWRD.s 392 | Empty | 11 | | 0 | 00/E94C | BYTE0B ; -> &C4 7825 | 18 AUXMEM.BYTWRD.s 393 | Code | 11 | | 2 | 00/E94C : 69 C9 | BYTE0C ADC #$C9 ; -> &C5 7826 | 18 AUXMEM.BYTWRD.s 394 | Comment | 11 | | 0 | 00/E94E | * 7827 | 18 AUXMEM.BYTWRD.s 395 | Empty | 11 | | 0 | 00/E94E | BYTE01 ; -> &F1 7828 | 18 AUXMEM.BYTWRD.s 396 | Empty | 11 | | 0 | 00/E94E | BYTE05 ; -> &F5 7829 | 18 AUXMEM.BYTWRD.s 397 | Code | 11 | | 2 | 00/E94E : 69 07 | BYTE06 ADC #$07 ; -> &F6 7830 | 18 AUXMEM.BYTWRD.s 398 | Comment | 11 | | 0 | 00/E950 | * 7831 | 18 AUXMEM.BYTWRD.s 399 | Empty | 11 | | 0 | 00/E950 | BYTE03 ; -> &EC 7832 | 18 AUXMEM.BYTWRD.s 400 | Code | 11 | | 2 | 00/E950 : 69 E8 | BYTE04 ADC #$E8 ; -> &ED 7833 | 18 AUXMEM.BYTWRD.s 401 | Comment | 11 | | 0 | 00/E952 | * 7834 | 18 AUXMEM.BYTWRD.s 402 | Comment | 11 | | 0 | 00/E952 | * Read/Write OSBYTE variable 7835 | 18 AUXMEM.BYTWRD.s 403 | Code | 11 | | 1 | 00/E952 : A8 | BYTEVAR TAY ; offset to variable 7836 | 18 AUXMEM.BYTWRD.s 404 | Code | 11 | | 3 | 00/E953 : B9 90 01 | LDA {$190}+0,Y 7837 | 18 AUXMEM.BYTWRD.s 405 | Code | 11 | | 1 | 00/E956 : AA | TAX ; X=old value 7838 | 18 AUXMEM.BYTWRD.s 406 | Code | 11 | | 2 | 00/E957 : 25 F1 | AND {{{$EF}+1}+1} 7839 | 18 AUXMEM.BYTWRD.s 407 | Code | 11 | | 2 | 00/E959 : 45 F0 | EOR {{$EF}+1} 7840 | 18 AUXMEM.BYTWRD.s 408 | Code | 11 | | 3 | 00/E95B : 99 90 01 | STA {$190}+0,Y ; update variable 7841 | 18 AUXMEM.BYTWRD.s 409 | Code | 11 | | 3 | 00/E95E : B9 91 01 | LDA {$190}+1,Y 7842 | 18 AUXMEM.BYTWRD.s 410 | Code | 11 | | 1 | 00/E961 : A8 | TAY ; Y=next value 7843 | 18 AUXMEM.BYTWRD.s 411 | Code | 11 | | 1 | 00/E962 : 60 | RTS 7844 | 18 AUXMEM.BYTWRD.s 412 | Empty | 11 | | 0 | 00/E963 | 7845 | 18 AUXMEM.BYTWRD.s 413 | Comment | 11 | | 0 | 00/E963 | * Memory layout 7846 | 18 AUXMEM.BYTWRD.s 414 | Empty | 11 | | 0 | 00/E963 | BYTE82 ; $82 = read high order address 7847 | 18 AUXMEM.BYTWRD.s 415 | Comment | 11 | | 0 | 00/E963 | * Should return $0000, but BCPL, Lisp and View try to move 7848 | 18 AUXMEM.BYTWRD.s 416 | Comment | 11 | | 0 | 00/E963 | * up to $F800 overwriting Apple II stuff 7849 | 18 AUXMEM.BYTWRD.s 417 | Code | 11 | | 2 | 00/E963 : A0 FF | LDY #$FF ; $FFFF for I/O processor 7850 | 18 AUXMEM.BYTWRD.s 418 | Code | 11 | | 2 | 00/E965 : A2 FF | LDX #$FF 7851 | 18 AUXMEM.BYTWRD.s 419 | Code | 11 | | 1 | 00/E967 : 60 | RTS 7852 | 18 AUXMEM.BYTWRD.s 420 | Empty | 11 | | 0 | 00/E968 | 7853 | 18 AUXMEM.BYTWRD.s 421 | Code | 11 | | 2 | 00/E968 : A0 0E | BYTE83 LDY #$0E ; $83 = read bottom of user mem 7854 | 18 AUXMEM.BYTWRD.s 422 | Code | 11 | | 2 | 00/E96A : A2 00 | LDX #$00 ; $0E00 7855 | 18 AUXMEM.BYTWRD.s 423 | Code | 11 | | 1 | 00/E96C : 60 | RTS 7856 | 18 AUXMEM.BYTWRD.s 424 | Empty | 11 | | 0 | 00/E96D | 7857 | 18 AUXMEM.BYTWRD.s 425 | Empty | 11 | | 0 | 00/E96D | BYTE85 ; $85 = top user mem for mode 7858 | 18 AUXMEM.BYTWRD.s 426 | Code | 11 | | 2 | 00/E96D : A0 80 | BYTE84 LDY #$80 ; $84 = read top of user mem 7859 | 18 AUXMEM.BYTWRD.s 427 | Code | 11 | | 2 | 00/E96F : A2 00 | LDX #$00 7860 | 18 AUXMEM.BYTWRD.s 428 | Code | 11 | | 1 | 00/E971 : 60 | RTS 7861 | 18 AUXMEM.BYTWRD.s 429 | Empty | 11 | | 0 | 00/E972 | 7862 | 18 AUXMEM.BYTWRD.s 430 | Comment | 11 | | 0 | 00/E972 | * Passed on to filing system 7863 | 18 AUXMEM.BYTWRD.s 431 | Code | 11 | | 2 | 00/E972 : E0 FF | BYTE8B CPX #$FF ; *DEBUG* 7864 | 18 AUXMEM.BYTWRD.s 432 | Code | 11 | | 2 | 00/E974 : D0 03 | BNE BYTE8BA ; *DEBUG* 7865 | 18 AUXMEM.BYTWRD.s 433 | Code | 11 | | 2 | 00/E976 : 84 E0 | STY $E0 ; *DEBUG* 7866 | 18 AUXMEM.BYTWRD.s 434 | Code | 11 | | 1 | 00/E978 : 60 | RTS ; *DEBUG* 7867 | 18 AUXMEM.BYTWRD.s 435 | Code | 11 | | 2 | 00/E979 : A9 00 | BYTE8BA LDA #$00 ; &00 -> &00 - *OPT 7868 | 18 AUXMEM.BYTWRD.s 436 | Code | 11 | | 2 | 00/E97B : 29 01 | BYTE7F AND #$01 ; &7F -> &01 - EOF 7869 | 18 AUXMEM.BYTWRD.s 437 | Code | 11 | | 3 | 00/E97D : 6C 1E 02 | CALLFSCV JMP ({$21E}) ; Hand over to filing system 7870 | 18 AUXMEM.BYTWRD.s 438 | Empty | 11 | | 0 | 00/E980 | 7871 | 18 AUXMEM.BYTWRD.s 439 | Empty | 11 | | 0 | 00/E980 | 7872 | 18 AUXMEM.BYTWRD.s 440 | Comment | 11 | | 0 | 00/E980 | * Test/Debug code 7873 | 18 AUXMEM.BYTWRD.s 441 | Code | 11 | | 1 | 00/E980 : AA | UNSUPBYTWRD TAX 7874 | 18 AUXMEM.BYTWRD.s 442 | Code | 11 | | 2 | 00/E981 : A9 9F | LDA #<OSBYTEM 7875 | 18 AUXMEM.BYTWRD.s 443 | Code | 11 | | 2 | 00/E983 : A0 E9 | LDY #>OSBYTEM 7876 | 18 AUXMEM.BYTWRD.s 444 | Code | 11 | | 2 | 00/E985 : E0 07 | CPX #7 7877 | 18 AUXMEM.BYTWRD.s 445 | Code | 11 | | 2 | 00/E987 : F0 04 | BEQ UNSUPGO 7878 | 18 AUXMEM.BYTWRD.s 446 | Code | 11 | | 2 | 00/E989 : A9 A8 | LDA #<OSWORDM 7879 | 18 AUXMEM.BYTWRD.s 447 | Code | 11 | | 2 | 00/E98B : A0 E9 | LDY #>OSWORDM 7880 | 18 AUXMEM.BYTWRD.s 448 | Code | 11 | | 3 | 00/E98D : 20 EB EB | UNSUPGO JSR PRSTR 7881 | 18 AUXMEM.BYTWRD.s 449 | Code | 11 | | 2 | 00/E990 : A5 EF | LDA {$EF} 7882 | 18 AUXMEM.BYTWRD.s 450 | Code | 11 | | 3 | 00/E992 : 20 0F EC | JSR OUTHEX 7883 | 18 AUXMEM.BYTWRD.s 451 | Comment | 11 | | 0 | 00/E995 | * LDA #$2C 7884 | 18 AUXMEM.BYTWRD.s 452 | Comment | 11 | | 0 | 00/E995 | * LDA OSXREG 7885 | 18 AUXMEM.BYTWRD.s 453 | Comment | 11 | | 0 | 00/E995 | * JSR OUTHEX 7886 | 18 AUXMEM.BYTWRD.s 454 | Comment | 11 | | 0 | 00/E995 | * LDA #$2C 7887 | 18 AUXMEM.BYTWRD.s 455 | Comment | 11 | | 0 | 00/E995 | * LDA OSYREG 7888 | 18 AUXMEM.BYTWRD.s 456 | Comment | 11 | | 0 | 00/E995 | * JSR OUTHEX 7889 | 18 AUXMEM.BYTWRD.s 457 | Code | 11 | | 2 | 00/E995 : A9 B1 | LDA #<OSBM2 7890 | 18 AUXMEM.BYTWRD.s 458 | Code | 11 | | 2 | 00/E997 : A0 E9 | LDY #>OSBM2 7891 | 18 AUXMEM.BYTWRD.s 459 | Code | 11 | | 3 | 00/E999 : 20 EB EB | JSR PRSTR 7892 | 18 AUXMEM.BYTWRD.s 460 | Comment | 11 | | 0 | 00/E99C | * JSR OSRDCH 7893 | 18 AUXMEM.BYTWRD.s 461 | Code | 11 | | 2 | 00/E99C : A5 EF | LDA {$EF} 7894 | 18 AUXMEM.BYTWRD.s 462 | Code | 11 | | 1 | 00/E99E : 60 | RTS 7895 | 18 AUXMEM.BYTWRD.s 463 | Empty | 11 | | 0 | 00/E99F | 7896 | 18 AUXMEM.BYTWRD.s 464 | Data | 11 | | 8 | 00/E99F : 4F 53 42 59 | OSBYTEM ASC 'OSBYTE($' | | | | | | 54 45 28 24 | 7897 | 18 AUXMEM.BYTWRD.s 465 | Data | 11 | | 1 | 00/E9A7 : 00 | DB $00 7898 | 18 AUXMEM.BYTWRD.s 466 | Data | 11 | | 8 | 00/E9A8 : 4F 53 57 4F | OSWORDM ASC 'OSWORD($' | | | | | | 52 44 28 24 | 7899 | 18 AUXMEM.BYTWRD.s 467 | Data | 11 | | 1 | 00/E9B0 : 00 | DB $00 7900 | 18 AUXMEM.BYTWRD.s 468 | Data | 11 | | 2 | 00/E9B1 : 29 2E | OSBM2 ASC ').' 7901 | 18 AUXMEM.BYTWRD.s 469 | Data | 11 | | 1 | 00/E9B3 : 00 | DB $00 7902 | 18 AUXMEM.BYTWRD.s 470 | Empty | 11 | | 0 | 00/E9B4 | 7903 | 1 applecorn.s 206 | Directive | 11 | | 0 | 00/E9B4 | PUT AUXMEM.CHARIO 7904 | 19 AUXMEM.CHARIO.s 1 | Comment | 11 | | 0 | 00/E9B4 | * AUXMEM.CHARIO.S 7905 | 19 AUXMEM.CHARIO.s 2 | Comment | 11 | | 0 | 00/E9B4 | * (c) Bobbi 2021 GPLv3 7906 | 19 AUXMEM.CHARIO.s 3 | Comment | 11 | | 0 | 00/E9B4 | * 7907 | 19 AUXMEM.CHARIO.s 4 | Comment | 11 | | 0 | 00/E9B4 | * AppleMOS Character I/O 7908 | 19 AUXMEM.CHARIO.s 5 | Empty | 11 | | 0 | 00/E9B4 | 7909 | 19 AUXMEM.CHARIO.s 6 | Empty | 11 | | 0 | 00/E9B4 | 7910 | 19 AUXMEM.CHARIO.s 7 | Comment | 11 | | 0 | 00/E9B4 | * KERNEL/CHARIO.S 7911 | 19 AUXMEM.CHARIO.s 8 | Comment | 11 | | 0 | 00/E9B4 | ***************** 7912 | 19 AUXMEM.CHARIO.s 9 | Comment | 11 | | 0 | 00/E9B4 | * Character read and write 7913 | 19 AUXMEM.CHARIO.s 10 | Comment | 11 | | 0 | 00/E9B4 | * 7914 | 19 AUXMEM.CHARIO.s 11 | Comment | 11 | | 0 | 00/E9B4 | * 14-Aug-2021 Flashing cursor and INKEY sync'd to frame rate 7915 | 19 AUXMEM.CHARIO.s 12 | Comment | 11 | | 0 | 00/E9B4 | * with VBLK. Ensured cursor turned on straightaway. 7916 | 19 AUXMEM.CHARIO.s 13 | Comment | 11 | | 0 | 00/E9B4 | * 15-Aug-2021 Cursor keys move copy cursor, copy reads char. 7917 | 19 AUXMEM.CHARIO.s 14 | Comment | 11 | | 0 | 00/E9B4 | * Copy cursor not visible yet. 7918 | 19 AUXMEM.CHARIO.s 15 | Comment | 11 | | 0 | 00/E9B4 | * 16-Aug-2021 Copy cursor and Edit cursor visible. 7919 | 19 AUXMEM.CHARIO.s 16 | Comment | 11 | | 0 | 00/E9B4 | * 17-Aug-2021 OSBYTE 4 for cursors, OSBYTE 221-228 for topbit 7920 | 19 AUXMEM.CHARIO.s 17 | Comment | 11 | | 0 | 00/E9B4 | * keys. 7921 | 19 AUXMEM.CHARIO.s 18 | Comment | 11 | | 0 | 00/E9B4 | * 21-Aug-2021 FIXED: If screen scrolls, copy cursor ends on 7922 | 19 AUXMEM.CHARIO.s 19 | Comment | 11 | | 0 | 00/E9B4 | * wrong line. 7923 | 19 AUXMEM.CHARIO.s 20 | Comment | 11 | | 0 | 00/E9B4 | * FIXED: KBDREAD has several paths that don't 7924 | 19 AUXMEM.CHARIO.s 21 | Comment | 11 | | 0 | 00/E9B4 | * test ESCHAR. 7925 | 19 AUXMEM.CHARIO.s 22 | Comment | 11 | | 0 | 00/E9B4 | * FIXED: INKEY doesn't restore cursor on timeout. 7926 | 19 AUXMEM.CHARIO.s 23 | Comment | 11 | | 0 | 00/E9B4 | * The three separate cursors can be set seperately. 7927 | 19 AUXMEM.CHARIO.s 24 | Comment | 11 | | 0 | 00/E9B4 | * 02-Sep-2021 INKEY-256 tests Apple IIe vs IIc. 7928 | 19 AUXMEM.CHARIO.s 25 | Comment | 11 | | 0 | 00/E9B4 | * 05-Sep-2021 KBDINIT returns startup value to pass to VDUINT. 7929 | 19 AUXMEM.CHARIO.s 26 | Comment | 11 | | 0 | 00/E9B4 | * 09-Sep-2021 Moved keyboard OSBYTEs to here. 7930 | 19 AUXMEM.CHARIO.s 27 | Comment | 11 | | 0 | 00/E9B4 | * 12-Sep-2021 COPY calls new VDU entry point. 7931 | 19 AUXMEM.CHARIO.s 28 | Comment | 11 | | 0 | 00/E9B4 | * 15-Sep-2021 INKEY(0) tests once and returns immediately. 7932 | 19 AUXMEM.CHARIO.s 29 | Comment | 11 | | 0 | 00/E9B4 | * TO DO: CHKESC should go through translations before testing. 7933 | 19 AUXMEM.CHARIO.s 30 | Comment | 11 | | 0 | 00/E9B4 | * *BUG* When *FX4,2 TAB returns soft key instead of $09. 7934 | 19 AUXMEM.CHARIO.s 31 | Empty | 11 | | 0 | 00/E9B4 | 7935 | 19 AUXMEM.CHARIO.s 32 | Empty | 11 | | 0 | 00/E9B4 | 7936 | 19 AUXMEM.CHARIO.s 33 | Equivalence | 11 | | 0 | 00/E9B4 | FLASHER EQU {$190}+176 ; VSync counter for flashing cursor 7937 | 19 AUXMEM.CHARIO.s 34 | Equivalence | 11 | | 0 | 00/E9B4 | FXEXEC EQU {$190}+198 7938 | 19 AUXMEM.CHARIO.s 35 | Equivalence | 11 | | 0 | 00/E9B4 | FXSPOOL EQU {$190}+199 7939 | 19 AUXMEM.CHARIO.s 36 | Empty | 11 | | 0 | 00/E9B4 | 7940 | 19 AUXMEM.CHARIO.s 37 | Equivalence | 11 | | 0 | 00/E9B4 | FXTABCHAR EQU {$190}+219 7941 | 19 AUXMEM.CHARIO.s 38 | Equivalence | 11 | | 0 | 00/E9B4 | FXESCCHAR EQU {$190}+220 7942 | 19 AUXMEM.CHARIO.s 39 | Equivalence | 11 | | 0 | 00/E9B4 | FXKEYBASE EQU {$190}+221 7943 | 19 AUXMEM.CHARIO.s 40 | Equivalence | 11 | | 0 | 00/E9B4 | FXESCON EQU {$190}+229 7944 | 19 AUXMEM.CHARIO.s 41 | Equivalence | 11 | | 0 | 00/E9B4 | FXESCEFFECT EQU {$190}+230 7945 | 19 AUXMEM.CHARIO.s 42 | Equivalence | 11 | | 0 | 00/E9B4 | FX200VAR EQU {$190}+200 7946 | 19 AUXMEM.CHARIO.s 43 | Equivalence | 11 | | 0 | 00/E9B4 | FX254VAR EQU {$190}+254 7947 | 19 AUXMEM.CHARIO.s 44 | Equivalence | 11 | | 0 | 00/E9B4 | FX2VAR EQU {$190}+$B1 7948 | 19 AUXMEM.CHARIO.s 45 | Equivalence | 11 | | 0 | 00/E9B4 | FX3VAR EQU {$190}+$EC 7949 | 19 AUXMEM.CHARIO.s 46 | Equivalence | 11 | | 0 | 00/E9B4 | FX4VAR EQU {$190}+$ED 7950 | 19 AUXMEM.CHARIO.s 47 | Empty | 11 | | 0 | 00/E9B4 | 7951 | 19 AUXMEM.CHARIO.s 48 | Empty | 11 | | 0 | 00/E9B4 | 7952 | 19 AUXMEM.CHARIO.s 49 | Comment | 11 | | 0 | 00/E9B4 | * OSWRCH handler 7953 | 19 AUXMEM.CHARIO.s 50 | Comment | 11 | | 0 | 00/E9B4 | **************** 7954 | 19 AUXMEM.CHARIO.s 51 | Comment | 11 | | 0 | 00/E9B4 | * Send a character to current output 7955 | 19 AUXMEM.CHARIO.s 52 | Comment | 11 | | 0 | 00/E9B4 | * All registers preserved 7956 | 19 AUXMEM.CHARIO.s 53 | Comment | 11 | | 0 | 00/E9B4 | * 7957 | 19 AUXMEM.CHARIO.s 54 | Code | 11 | | 1 | 00/E9B4 : 48 | WRCHHND PHA 7958 | 19 AUXMEM.CHARIO.s 55 | Code | 11 | | 1 | 00/E9B5 : DA | PHX 7959 | 19 AUXMEM.CHARIO.s 56 | Code | 11 | | 1 | 00/E9B6 : 5A | PHY 7960 | 19 AUXMEM.CHARIO.s 57 | Comment | 11 | | 0 | 00/E9B7 | * TO DO Check any output redirections 7961 | 19 AUXMEM.CHARIO.s 58 | Comment | 11 | | 0 | 00/E9B7 | * PHA 7962 | 19 AUXMEM.CHARIO.s 59 | Empty | 11 | | 0 | 00/E9B7 | 7963 | 19 AUXMEM.CHARIO.s 60 | Code | 11 | | 3 | 00/E9B7 : 20 E1 D1 | JSR OUTCHAR 7964 | 19 AUXMEM.CHARIO.s 61 | Comment | 11 | | 0 | 00/E9BA | * TO DO Check any printer output 7965 | 19 AUXMEM.CHARIO.s 62 | Comment | 11 | | 0 | 00/E9BA | * BCC WRCHHND3 7966 | 19 AUXMEM.CHARIO.s 63 | Comment | 11 | | 0 | 00/E9BA | * PLA 7967 | 19 AUXMEM.CHARIO.s 64 | Comment | 11 | | 0 | 00/E9BA | * PHA 7968 | 19 AUXMEM.CHARIO.s 65 | Comment | 11 | | 0 | 00/E9BA | * JSR PRNCHAR 7969 | 19 AUXMEM.CHARIO.s 66 | Comment | 11 | | 0 | 00/E9BA | * WRCHHND3 7970 | 19 AUXMEM.CHARIO.s 67 | Empty | 11 | | 0 | 00/E9BA | 7971 | 19 AUXMEM.CHARIO.s 68 | Comment | 11 | | 0 | 00/E9BA | * TO DO Check any spool output 7972 | 19 AUXMEM.CHARIO.s 69 | Comment | 11 | | 0 | 00/E9BA | * LDY FXSPOOL 7973 | 19 AUXMEM.CHARIO.s 70 | Comment | 11 | | 0 | 00/E9BA | * BEQ WRCHHND4 7974 | 19 AUXMEM.CHARIO.s 71 | Comment | 11 | | 0 | 00/E9BA | * PLA 7975 | 19 AUXMEM.CHARIO.s 72 | Comment | 11 | | 0 | 00/E9BA | * PHA 7976 | 19 AUXMEM.CHARIO.s 73 | Comment | 11 | | 0 | 00/E9BA | * JSR OSBPUT 7977 | 19 AUXMEM.CHARIO.s 74 | Comment | 11 | | 0 | 00/E9BA | * WRCHHND4 7978 | 19 AUXMEM.CHARIO.s 75 | Comment | 11 | | 0 | 00/E9BA | * PLA 7979 | 19 AUXMEM.CHARIO.s 76 | Comment | 11 | | 0 | 00/E9BA | * 7980 | 19 AUXMEM.CHARIO.s 77 | Code | 11 | | 1 | 00/E9BA : 7A | PLY 7981 | 19 AUXMEM.CHARIO.s 78 | Code | 11 | | 1 | 00/E9BB : FA | PLX 7982 | 19 AUXMEM.CHARIO.s 79 | Code | 11 | | 1 | 00/E9BC : 68 | PLA 7983 | 19 AUXMEM.CHARIO.s 80 | Code | 11 | | 1 | 00/E9BD : 60 | RTS 7984 | 19 AUXMEM.CHARIO.s 81 | Empty | 11 | | 0 | 00/E9BE | 7985 | 19 AUXMEM.CHARIO.s 82 | Empty | 11 | | 0 | 00/E9BE | 7986 | 19 AUXMEM.CHARIO.s 83 | Comment | 11 | | 0 | 00/E9BE | * Character Input 7987 | 19 AUXMEM.CHARIO.s 84 | Comment | 11 | | 0 | 00/E9BE | ***************** 7988 | 19 AUXMEM.CHARIO.s 85 | Comment | 11 | | 0 | 00/E9BE | * Default keyboard OSBYTE variables 7989 | 19 AUXMEM.CHARIO.s 86 | Comment | 11 | | 0 | 00/E9BE | *DEFBYTELOW EQU 219 ; First default OSBYTE value 7990 | 19 AUXMEM.CHARIO.s 87 | Comment | 11 | | 0 | 00/E9BE | *DEFBYTE DB $09,$1B ; Default key codes 7991 | 19 AUXMEM.CHARIO.s 88 | Comment | 11 | | 0 | 00/E9BE | * DB $01,$D0,$E0,$F0 ; Default key expansion 7992 | 19 AUXMEM.CHARIO.s 89 | Comment | 11 | | 0 | 00/E9BE | * DB $01,$80,$90,$00 ; Default key expansion 7993 | 19 AUXMEM.CHARIO.s 90 | Comment | 11 | | 0 | 00/E9BE | *DEFBYTEEND 7994 | 19 AUXMEM.CHARIO.s 91 | Empty | 11 | | 0 | 00/E9BE | 7995 | 19 AUXMEM.CHARIO.s 92 | Comment | 11 | | 0 | 00/E9BE | * TEMP as no *KEY 7996 | 19 AUXMEM.CHARIO.s 93 | Comment | 11 | | 0 | 00/E9BE | * Default keyboard OSBYTE variables 7997 | 19 AUXMEM.CHARIO.s 94 | Equivalence | 11 | | 0 | 00/E9BE | DEFBYTELOW EQU 219 ; First default OSBYTE value 7998 | 19 AUXMEM.CHARIO.s 95 | Data | 11 | | 2 | 00/E9BE : 09 1B | DEFBYTE DB $09,$1B ; Default key codes 7999 | 19 AUXMEM.CHARIO.s 96 | Data | 11 | | 4 | 00/E9C0 : C0 D0 E0 F0 | DB $C0,$D0,$E0,$F0 ; Default key expansion 8000 | 19 AUXMEM.CHARIO.s 97 | Data | 11 | | 4 | 00/E9C4 : 80 90 A0 B0 | DB $80,$90,$A0,$B0 ; Default key expansion 8001 | 19 AUXMEM.CHARIO.s 98 | Empty | 11 | | 0 | 00/E9C8 | DEFBYTEEND 8002 | 19 AUXMEM.CHARIO.s 99 | Empty | 11 | | 0 | 00/E9C8 | 8003 | 19 AUXMEM.CHARIO.s 100 | Code | 11 | | 2 | 00/E9C8 : A2 09 | KBDINIT LDX #DEFBYTEEND-DEFBYTE-1 8004 | 19 AUXMEM.CHARIO.s 101 | Code | 11 | | 3 | 00/E9CA : BD BE E9 | _KBDINITLP LDA DEFBYTE,X ; Initialise KBD OSBYTE variables 8005 | 19 AUXMEM.CHARIO.s 102 | Code | 11 | | 3 | 00/E9CD : 9D 6B 02 | STA {$190}+{219},X 8006 | 19 AUXMEM.CHARIO.s 103 | Code | 11 | | 1 | 00/E9D0 : CA | DEX 8007 | 19 AUXMEM.CHARIO.s 104 | Code | 11 | | 2 | 00/E9D1 : 10 F7 | BPL _KBDINITLP 8008 | 19 AUXMEM.CHARIO.s 105 | Code | 11 | | 2 | 00/E9D3 : A2 C0 | LDX #$C0 8009 | 19 AUXMEM.CHARIO.s 106 | Code | 11 | | 3 | 00/E9D5 : 8E 8E 02 | STX {{$190}+254} ; b7-b4=default KBD map, b3-b0=default MODE 8010 | 19 AUXMEM.CHARIO.s 107 | Code | 11 | | 3 | 00/E9D8 : 2C 88 E8 | BIT SETV 8011 | 19 AUXMEM.CHARIO.s 108 | Code | 11 | | 3 | 00/E9DB : 20 30 EB | JSR KBDTEST 8012 | 19 AUXMEM.CHARIO.s 109 | Code | 11 | | 2 | 00/E9DE : B0 04 | BCS _KBDINITOK ; Return default MODE=0 8013 | 19 AUXMEM.CHARIO.s 110 | Code | 11 | | 3 | 00/E9E0 : 8D 10 C0 | STA $C010 ; Ack. keypress 8014 | 19 AUXMEM.CHARIO.s 111 | Code | 11 | | 1 | 00/E9E3 : AA | TAX ; Use keypress as default MODE 8015 | 19 AUXMEM.CHARIO.s 112 | Code | 11 | | 1 | 00/E9E4 : 8A | _KBDINITOK TXA 8016 | 19 AUXMEM.CHARIO.s 113 | Code | 11 | | 1 | 00/E9E5 : 60 | RTS 8017 | 19 AUXMEM.CHARIO.s 114 | Empty | 11 | | 0 | 00/E9E6 | 8018 | 19 AUXMEM.CHARIO.s 115 | Comment | 11 | | 0 | 00/E9E6 | * OSRDCH/INKEY handler 8019 | 19 AUXMEM.CHARIO.s 116 | Comment | 11 | | 0 | 00/E9E6 | ********************** 8020 | 19 AUXMEM.CHARIO.s 117 | Comment | 11 | | 0 | 00/E9E6 | * Read a character from current input 8021 | 19 AUXMEM.CHARIO.s 118 | Comment | 11 | | 0 | 00/E9E6 | * All registers preserved except A, Carry 8022 | 19 AUXMEM.CHARIO.s 119 | Comment | 11 | | 0 | 00/E9E6 | * Flashes a soft cursor while waiting for input 8023 | 19 AUXMEM.CHARIO.s 120 | Comment | 11 | | 0 | 00/E9E6 | * 8024 | 19 AUXMEM.CHARIO.s 121 | Code | 11 | | 2 | 00/E9E6 : A9 80 | RDCHHND LDA #$80 ; flag=wait forever 8025 | 19 AUXMEM.CHARIO.s 122 | Code | 11 | | 1 | 00/E9E8 : 5A | PHY 8026 | 19 AUXMEM.CHARIO.s 123 | Code | 11 | | 1 | 00/E9E9 : A8 | TAY 8027 | 19 AUXMEM.CHARIO.s 124 | Code | 11 | | 2 | 00/E9EA : 80 01 | BRA INKEYGO ; Wait forever for input 8028 | 19 AUXMEM.CHARIO.s 125 | Empty | 11 | | 0 | 00/E9EC | 8029 | 19 AUXMEM.CHARIO.s 126 | Comment | 11 | | 0 | 00/E9EC | * XY<$8000 - wait for a keypress 8030 | 19 AUXMEM.CHARIO.s 127 | Code | 11 | | 1 | 00/E9EC : 5A | INKEY PHY ; Dummy PHY to balance RDCH 8031 | 19 AUXMEM.CHARIO.s 128 | Code | 11 | | 1 | 00/E9ED : DA | INKEYGO PHX ; Save registers 8032 | 19 AUXMEM.CHARIO.s 129 | Code | 11 | | 1 | 00/E9EE : 5A | PHY 8033 | 19 AUXMEM.CHARIO.s 130 | Code | 11 | | 2 | 00/E9EF : 24 D0 | BIT {$D0} ; Enable editing cursor 8034 | 19 AUXMEM.CHARIO.s 131 | Code | 11 | | 2 | 00/E9F1 : 50 0E | BVC INKEYGO2 ; No editing cursor 8035 | 19 AUXMEM.CHARIO.s 132 | Code | 11 | | 3 | 00/E9F3 : 20 77 D3 | JSR GETCHRC ; Get character under cursor 8036 | 19 AUXMEM.CHARIO.s 133 | Code | 11 | | 2 | 00/E9F6 : 85 ED | STA {{{$EC}+1}} ; Save char under edit cursor 8037 | 19 AUXMEM.CHARIO.s 134 | Code | 11 | | 3 | 00/E9F8 : AD BA 02 | LDA {{$290}+$2A} 8038 | 19 AUXMEM.CHARIO.s 135 | Code | 11 | | 3 | 00/E9FB : 20 36 D3 | JSR PUTCHRC ; Display edit cursor 8039 | 19 AUXMEM.CHARIO.s 136 | Code | 11 | | 3 | 00/E9FE : 20 ED D2 | JSR COPYSWAP1 ; Swap to copy cursor 8040 | 19 AUXMEM.CHARIO.s 137 | Code | 11 | | 3 | 00/EA01 : 20 77 D3 | INKEYGO2 JSR GETCHRC ; Get character under cursor 8041 | 19 AUXMEM.CHARIO.s 138 | Code | 11 | | 2 | 00/EA04 : 85 EC | STA {{$EC}} 8042 | 19 AUXMEM.CHARIO.s 139 | Code | 11 | | 1 | 00/EA06 : 58 | CLI 8043 | 19 AUXMEM.CHARIO.s 140 | Code | 11 | | 2 | 00/EA07 : 80 19 | BRA INKEY1 ; Turn cursor on 8044 | 19 AUXMEM.CHARIO.s 141 | Empty | 11 | | 0 | 00/EA09 | 8045 | 19 AUXMEM.CHARIO.s 142 | Code | 11 | | 1 | 00/EA09 : 18 | INKEYLP CLC 8046 | 19 AUXMEM.CHARIO.s 143 | Code | 11 | | 2 | 00/EA0A : A9 01 | LDA #$01 ; Slow flash, every 32 frames 8047 | 19 AUXMEM.CHARIO.s 144 | Code | 11 | | 2 | 00/EA0C : 24 D0 | BIT {$D0} 8048 | 19 AUXMEM.CHARIO.s 145 | Code | 11 | | 2 | 00/EA0E : 50 01 | BVC INKEY0 8049 | 19 AUXMEM.CHARIO.s 146 | Code | 11 | | 1 | 00/EA10 : 0A | ASL A ; Fast flash, every 16 frames 8050 | 19 AUXMEM.CHARIO.s 147 | Code | 11 | | 3 | 00/EA11 : 6D 40 02 | INKEY0 ADC {{$190}+176} 8051 | 19 AUXMEM.CHARIO.s 148 | Code | 11 | | 3 | 00/EA14 : 8D 40 02 | STA {{$190}+176} 8052 | 19 AUXMEM.CHARIO.s 149 | Code | 11 | | 2 | 00/EA17 : 29 0F | AND #15 8053 | 19 AUXMEM.CHARIO.s 150 | Code | 11 | | 2 | 00/EA19 : D0 14 | BNE INKEY3 ; Not time to toggle yet 8054 | 19 AUXMEM.CHARIO.s 151 | Code | 11 | | 2 | 00/EA1B : A5 EC | LDA {{$EC}} ; Prepare to remove cursor 8055 | 19 AUXMEM.CHARIO.s 152 | Code | 11 | | 3 | 00/EA1D : 2C 40 02 | BIT {{$190}+176} 8056 | 19 AUXMEM.CHARIO.s 153 | Code | 11 | | 2 | 00/EA20 : 30 0A | BMI INKEY2 ; Remove cursor 8057 | 19 AUXMEM.CHARIO.s 154 | Code | 11 | | 3 | 00/EA22 : AD B8 02 | INKEY1 LDA {{$290}+$28} ; Add cursor 8058 | 19 AUXMEM.CHARIO.s 155 | Code | 11 | | 2 | 00/EA25 : 24 D0 | BIT {$D0} 8059 | 19 AUXMEM.CHARIO.s 156 | Code | 11 | | 2 | 00/EA27 : 50 03 | BVC INKEY2 8060 | 19 AUXMEM.CHARIO.s 157 | Code | 11 | | 3 | 00/EA29 : AD B9 02 | LDA {{$290}+$29} 8061 | 19 AUXMEM.CHARIO.s 158 | Code | 11 | | 3 | 00/EA2C : 20 36 D3 | INKEY2 JSR PUTCHRC ; Toggle cursor 8062 | 19 AUXMEM.CHARIO.s 159 | Code | 11 | | 2 | 00/EA2F : A5 FF | INKEY3 LDA {$FF} 8063 | 19 AUXMEM.CHARIO.s 160 | Code | 11 | | 2 | 00/EA31 : 30 25 | BMI INKEYOK ; Escape pending, return it 8064 | 19 AUXMEM.CHARIO.s 161 | Code | 11 | | 3 | 00/EA33 : 20 BC EA | INKEY4 JSR KEYREAD ; Test for input, all can be trashed 8065 | 19 AUXMEM.CHARIO.s 162 | Code | 11 | | 1 | 00/EA36 : 7A | PLY 8066 | 19 AUXMEM.CHARIO.s 163 | Code | 11 | | 2 | 00/EA37 : 90 1F | BCC INKEYOK ; Char returned, return it 8067 | 19 AUXMEM.CHARIO.s 164 | Code | 11 | | 2 | 00/EA39 : 30 09 | BMI INKEY6 ; Loop forever, skip countdown 8068 | 19 AUXMEM.CHARIO.s 165 | Code | 11 | | 1 | 00/EA3B : FA | PLX 8069 | 19 AUXMEM.CHARIO.s 166 | Code | 11 | | 2 | 00/EA3C : D0 04 | BNE INKEY5 8070 | 19 AUXMEM.CHARIO.s 167 | Code | 11 | | 1 | 00/EA3E : 98 | TYA 8071 | 19 AUXMEM.CHARIO.s 168 | Code | 11 | | 2 | 00/EA3F : F0 14 | BEQ INKEYOUT ; XY=0, timed out 8072 | 19 AUXMEM.CHARIO.s 169 | Code | 11 | | 1 | 00/EA41 : 88 | DEY ; 16-bit decrement 8073 | 19 AUXMEM.CHARIO.s 170 | Code | 11 | | 1 | 00/EA42 : CA | INKEY5 DEX 8074 | 19 AUXMEM.CHARIO.s 171 | Code | 11 | | 1 | 00/EA43 : DA | PHX 8075 | 19 AUXMEM.CHARIO.s 172 | Code | 11 | | 1 | 00/EA44 : 5A | INKEY6 PHY 8076 | 19 AUXMEM.CHARIO.s 173 | Comment | 11 | | 0 | 00/EA45 | * 8077 | 19 AUXMEM.CHARIO.s 174 | Comment | 11 | | 0 | 00/EA45 | * VBLK pulses at 50Hz/60Hz, toggles at 100Hz/120Hz 8078 | 19 AUXMEM.CHARIO.s 175 | Code | 11 | | 3 | 00/EA45 : AE 19 C0 | LDX $C019 ; Get initial VBLK state 8079 | 19 AUXMEM.CHARIO.s 176 | Code | 11 | | 3 | 00/EA48 : 2C 00 C0 | INKEY8 BIT $C000 8080 | 19 AUXMEM.CHARIO.s 177 | Code | 11 | | 2 | 00/EA4B : 30 E6 | BMI INKEY4 ; Key pressed 8081 | 19 AUXMEM.CHARIO.s 178 | Code | 11 | | 1 | 00/EA4D : 8A | TXA 8082 | 19 AUXMEM.CHARIO.s 179 | Code | 11 | | 3 | 00/EA4E : 4D 19 C0 | EOR $C019 8083 | 19 AUXMEM.CHARIO.s 180 | Code | 11 | | 2 | 00/EA51 : 10 F5 | BPL INKEY8 ; Wait for VBLK change 8084 | 19 AUXMEM.CHARIO.s 181 | Code | 11 | | 2 | 00/EA53 : 30 B4 | BMI INKEYLP ; Loop back to key test 8085 | 19 AUXMEM.CHARIO.s 182 | Empty | 11 | | 0 | 00/EA55 | 8086 | 19 AUXMEM.CHARIO.s 183 | Code | 11 | | 1 | 00/EA55 : 68 | INKEYOUT PLA ; Drop stacked Y 8087 | 19 AUXMEM.CHARIO.s 184 | Code | 11 | | 2 | 00/EA56 : A9 FF | LDA #$FF ; Prepare to stack $FF 8088 | 19 AUXMEM.CHARIO.s 185 | Comment | 11 | | 0 | 00/EA58 | * 8089 | 19 AUXMEM.CHARIO.s 186 | Code | 11 | | 1 | 00/EA58 : 48 | INKEYOK PHA ; Save key or timeout 8090 | 19 AUXMEM.CHARIO.s 187 | Code | 11 | | 1 | 00/EA59 : 08 | PHP ; Save CC=key, CS=timeout 8091 | 19 AUXMEM.CHARIO.s 188 | Code | 11 | | 2 | 00/EA5A : A5 EC | LDA {{$EC}} ; Prepare for main cursor 8092 | 19 AUXMEM.CHARIO.s 189 | Code | 11 | | 2 | 00/EA5C : 24 D0 | BIT {$D0} 8093 | 19 AUXMEM.CHARIO.s 190 | Code | 11 | | 2 | 00/EA5E : 50 08 | BVC INKEYOFF2 ; No editing cursor 8094 | 19 AUXMEM.CHARIO.s 191 | Code | 11 | | 3 | 00/EA60 : 20 36 D3 | JSR PUTCHRC ; Remove cursor 8095 | 19 AUXMEM.CHARIO.s 192 | Code | 11 | | 3 | 00/EA63 : 20 ED D2 | JSR COPYSWAP1 ; Swap cursor back 8096 | 19 AUXMEM.CHARIO.s 193 | Code | 11 | | 2 | 00/EA66 : A5 ED | LDA {{{$EC}+1}} ; Remove main cursor 8097 | 19 AUXMEM.CHARIO.s 194 | Code | 11 | | 3 | 00/EA68 : 20 36 D3 | INKEYOFF2 JSR PUTCHRC ; Remove cursor 8098 | 19 AUXMEM.CHARIO.s 195 | Comment | 11 | | 0 | 00/EA6B | * 8099 | 19 AUXMEM.CHARIO.s 196 | Code | 11 | | 1 | 00/EA6B : 28 | PLP 8100 | 19 AUXMEM.CHARIO.s 197 | Code | 11 | | 2 | 00/EA6C : B0 05 | BCS INKEYOK3 ; Timeout 8101 | 19 AUXMEM.CHARIO.s 198 | Code | 11 | | 2 | 00/EA6E : A5 FF | LDA {$FF} ; Keypress, test for Escape 8102 | 19 AUXMEM.CHARIO.s 199 | Code | 11 | | 1 | 00/EA70 : 0A | ASL A ; Cy=Escape flag 8103 | 19 AUXMEM.CHARIO.s 200 | Code | 11 | | 1 | 00/EA71 : 68 | PLA ; Get char back 8104 | 19 AUXMEM.CHARIO.s 201 | Code | 11 | | 1 | 00/EA72 : FA | PLX ; Restore X,Y for key pressed 8105 | 19 AUXMEM.CHARIO.s 202 | Code | 11 | | 1 | 00/EA73 : 7A | INKEYOK3 PLY ; Or pop TimeOut 8106 | 19 AUXMEM.CHARIO.s 203 | Code | 11 | | 1 | 00/EA74 : 60 | RTS 8107 | 19 AUXMEM.CHARIO.s 204 | Comment | 11 | | 0 | 00/EA75 | * RDCH Character read: CC, A=char, X=restored, Y=restored 8108 | 19 AUXMEM.CHARIO.s 205 | Comment | 11 | | 0 | 00/EA75 | * RDCH Escape: CS, A=char, X=restored, Y=restored 8109 | 19 AUXMEM.CHARIO.s 206 | Comment | 11 | | 0 | 00/EA75 | * INKEY Character read: CC, A=char, X=???, Y<$80 8110 | 19 AUXMEM.CHARIO.s 207 | Comment | 11 | | 0 | 00/EA75 | * INKEY Escape: CS, A=char, X=???, Y<$80 8111 | 19 AUXMEM.CHARIO.s 208 | Comment | 11 | | 0 | 00/EA75 | * INKEY Timeout: CS, A=???, X=???, Y=$FF 8112 | 19 AUXMEM.CHARIO.s 209 | Empty | 11 | | 0 | 00/EA75 | 8113 | 19 AUXMEM.CHARIO.s 210 | Empty | 11 | | 0 | 00/EA75 | 8114 | 19 AUXMEM.CHARIO.s 211 | Code | 11 | | 1 | 00/EA75 : 98 | BYTE81 TYA 8115 | 19 AUXMEM.CHARIO.s 212 | Code | 11 | | 2 | 00/EA76 : 30 0E | BMI NEGINKEY ; XY<0, scan for keypress 8116 | 19 AUXMEM.CHARIO.s 213 | Code | 11 | | 3 | 00/EA78 : 20 EC E9 | JSR INKEY ; XY>=0, wait for keypress 8117 | 19 AUXMEM.CHARIO.s 214 | Comment | 11 | | 0 | 00/EA7B | * Character read: CC, A=char, X=???, Y<$80 8118 | 19 AUXMEM.CHARIO.s 215 | Comment | 11 | | 0 | 00/EA7B | * Escape: CS, A=char, X=???, Y<$80 8119 | 19 AUXMEM.CHARIO.s 216 | Comment | 11 | | 0 | 00/EA7B | * Timeout: CS, A=???, X=???, Y=$FF 8120 | 19 AUXMEM.CHARIO.s 217 | Code | 11 | | 1 | 00/EA7B : AA | TAX ; X=character returned 8121 | 19 AUXMEM.CHARIO.s 218 | Code | 11 | | 1 | 00/EA7C : 98 | TYA 8122 | 19 AUXMEM.CHARIO.s 219 | Code | 11 | | 2 | 00/EA7D : 30 06 | BMI BYTE81DONE ; Y=$FF, timeout 8123 | 19 AUXMEM.CHARIO.s 220 | Code | 11 | | 2 | 00/EA7F : A0 00 | LDY #$00 8124 | 19 AUXMEM.CHARIO.s 221 | Code | 11 | | 2 | 00/EA81 : 90 02 | BCC BYTE81DONE ; CC, not Escape 8125 | 19 AUXMEM.CHARIO.s 222 | Code | 11 | | 2 | 00/EA83 : A0 1B | LDY #$1B ; Y=27 8126 | 19 AUXMEM.CHARIO.s 223 | Code | 11 | | 1 | 00/EA85 : 60 | BYTE81DONE RTS 8127 | 19 AUXMEM.CHARIO.s 224 | Comment | 11 | | 0 | 00/EA86 | * Returns: Y=$FF, X=???, CS - timeout 8128 | 19 AUXMEM.CHARIO.s 225 | Comment | 11 | | 0 | 00/EA86 | * Y=$1B, X=???, CS - escape 8129 | 19 AUXMEM.CHARIO.s 226 | Comment | 11 | | 0 | 00/EA86 | * Y=$00, X=char, CC - keypress 8130 | 19 AUXMEM.CHARIO.s 227 | Empty | 11 | | 0 | 00/EA86 | 8131 | 19 AUXMEM.CHARIO.s 228 | Empty | 11 | | 0 | 00/EA86 | 8132 | 19 AUXMEM.CHARIO.s 229 | Code | 11 | | 2 | 00/EA86 : E0 01 | NEGINKEY CPX #$01 8133 | 19 AUXMEM.CHARIO.s 230 | Code | 11 | | 2 | 00/EA88 : A2 00 | LDX #$00 ; Unimplemented 8134 | 19 AUXMEM.CHARIO.s 231 | Code | 11 | | 2 | 00/EA8A : B0 15 | BCS NEGINKEY0 8135 | 19 AUXMEM.CHARIO.s 232 | Empty | 11 | | 0 | 00/EA8C | 8136 | 19 AUXMEM.CHARIO.s 233 | Code | 11 | | 3 | 00/EA8C : 20 A5 EA | JSR NEGCALL ; Read machine ID from aux 8137 | 19 AUXMEM.CHARIO.s 234 | Code | 11 | | 1 | 00/EA8F : AA | TAX ; *TEST* 8138 | 19 AUXMEM.CHARIO.s 235 | Code | 11 | | 2 | 00/EA90 : 24 E0 | BIT $E0 ; *TEST* 8139 | 19 AUXMEM.CHARIO.s 236 | Code | 11 | | 2 | 00/EA92 : 70 0F | BVS NEGINKEY1 ; *TEST* 8140 | 19 AUXMEM.CHARIO.s 237 | Code | 11 | | 2 | 00/EA94 : A2 2C | LDX #$2C 8141 | 19 AUXMEM.CHARIO.s 238 | Code | 11 | | 1 | 00/EA96 : A8 | TAY 8142 | 19 AUXMEM.CHARIO.s 239 | Code | 11 | | 2 | 00/EA97 : F0 08 | BEQ NEGINKEY0 ; $00 = Apple IIc -> INKEY-256 = $2C 8143 | 19 AUXMEM.CHARIO.s 240 | Code | 11 | | 2 | 00/EA99 : A2 2E | LDX #$2E 8144 | 19 AUXMEM.CHARIO.s 241 | Code | 11 | | 2 | 00/EA9B : 29 0F | AND #$0F 8145 | 19 AUXMEM.CHARIO.s 242 | Code | 11 | | 2 | 00/EA9D : F0 02 | BEQ NEGINKEY0 ; $x0 = Apple IIe -> INKEY-256 = $2E 8146 | 19 AUXMEM.CHARIO.s 243 | Code | 11 | | 2 | 00/EA9F : A2 2A | LDX #$2A ; else = Apple IIgs -> INKEY-256 = $2A 8147 | 19 AUXMEM.CHARIO.s 244 | Code | 11 | | 2 | 00/EAA1 : A0 00 | NEGINKEY0 LDY #$00 8148 | 19 AUXMEM.CHARIO.s 245 | Code | 11 | | 1 | 00/EAA3 : 18 | NEGINKEY1 CLC 8149 | 19 AUXMEM.CHARIO.s 246 | Code | 11 | | 1 | 00/EAA4 : 60 | RTS 8150 | 19 AUXMEM.CHARIO.s 247 | Empty | 11 | | 0 | 00/EAA5 | 8151 | 19 AUXMEM.CHARIO.s 248 | Macro | 11 | | 0 | 00/EAA5 | NEGCALL >>> XF2MAIN,MACHRD ; Try to read Machine ID 8152 | 19 AUXMEM.CHARIO.s 248 | Empty | 11 | | 0 | 00/EAA5 | 8153 | 19 AUXMEM.CHARIO.s 248 | Empty | 11 | | 0 | 00/EAA5 | 8154 | 19 AUXMEM.CHARIO.s 248 | Empty | 11 | | 0 | 00/EAA5 | 8155 | 19 AUXMEM.CHARIO.s 248 | Empty | 11 | | 0 | 00/EAA5 | 8156 | 19 AUXMEM.CHARIO.s 248 | Code | 11 | | 2 | 00/EAA5 : A2 0A | LDX #<MACHRD 8157 | 19 AUXMEM.CHARIO.s 248 | Code | 11 | | 3 | 00/EAA7 : 8E ED 03 | STX {$3ED} 8158 | 19 AUXMEM.CHARIO.s 248 | Code | 11 | | 2 | 00/EAAA : A2 4E | LDX #>MACHRD 8159 | 19 AUXMEM.CHARIO.s 248 | Code | 11 | | 3 | 00/EAAC : 8E EE 03 | STX {$3EE} 8160 | 19 AUXMEM.CHARIO.s 248 | Code | 11 | | 1 | 00/EAAF : 78 | SEI ; Disable IRQ before XFER 8161 | 19 AUXMEM.CHARIO.s 248 | Code | 11 | | 1 | 00/EAB0 : BA | TSX 8162 | 19 AUXMEM.CHARIO.s 248 | Code | 11 | | 3 | 00/EAB1 : 8E 01 01 | STX $0101 ; Save alt SP 8163 | 19 AUXMEM.CHARIO.s 248 | Code | 11 | | 3 | 00/EAB4 : AE 00 01 | LDX $0100 ; Load main SP into X 8164 | 19 AUXMEM.CHARIO.s 248 | Code | 11 | | 1 | 00/EAB7 : 18 | CLC ; Use main mem 8165 | 19 AUXMEM.CHARIO.s 248 | Code | 11 | | 1 | 00/EAB8 : B8 | CLV ; Use main ZP and LC 8166 | 19 AUXMEM.CHARIO.s 248 | Code | 11 | | 3 | 00/EAB9 : 4C 14 C3 | JMP {$C314} 8167 | 19 AUXMEM.CHARIO.s 249 | Empty | 11 | | 0 | 00/EABC | 8168 | 19 AUXMEM.CHARIO.s 250 | Empty | 11 | | 0 | 00/EABC | 8169 | 19 AUXMEM.CHARIO.s 251 | Comment | 11 | | 0 | 00/EABC | * KERNEL/KEYBOARD.S 8170 | 19 AUXMEM.CHARIO.s 252 | Comment | 11 | | 0 | 00/EABC | ******************* 8171 | 19 AUXMEM.CHARIO.s 253 | Empty | 11 | | 0 | 00/EABC | 8172 | 19 AUXMEM.CHARIO.s 254 | Comment | 11 | | 0 | 00/EABC | * KEYREAD 8173 | 19 AUXMEM.CHARIO.s 255 | Comment | 11 | | 0 | 00/EABC | ************************ 8174 | 19 AUXMEM.CHARIO.s 256 | Comment | 11 | | 0 | 00/EABC | * Test for and read from input, 8175 | 19 AUXMEM.CHARIO.s 257 | Comment | 11 | | 0 | 00/EABC | * expanding keyboard special keys 8176 | 19 AUXMEM.CHARIO.s 258 | Comment | 11 | | 0 | 00/EABC | * 8177 | 19 AUXMEM.CHARIO.s 259 | Comment | 11 | | 0 | 00/EABC | * On exit, CS=no keypress 8178 | 19 AUXMEM.CHARIO.s 260 | Comment | 11 | | 0 | 00/EABC | * CC=keypress 8179 | 19 AUXMEM.CHARIO.s 261 | Comment | 11 | | 0 | 00/EABC | * A =keycode, X,Y=corrupted 8180 | 19 AUXMEM.CHARIO.s 262 | Empty | 11 | | 0 | 00/EABC | KEYREAD 8181 | 19 AUXMEM.CHARIO.s 263 | Comment | 11 | | 0 | 00/EABC | * TO DO: check *EXEC source 8182 | 19 AUXMEM.CHARIO.s 264 | Comment | 11 | | 0 | 00/EABC | * LDY FXEXEC 8183 | 19 AUXMEM.CHARIO.s 265 | Comment | 11 | | 0 | 00/EABC | * BEQ KEYREAD1 8184 | 19 AUXMEM.CHARIO.s 266 | Comment | 11 | | 0 | 00/EABC | * JSR OSBGET 8185 | 19 AUXMEM.CHARIO.s 267 | Comment | 11 | | 0 | 00/EABC | * BCC KEYREADOK 8186 | 19 AUXMEM.CHARIO.s 268 | Comment | 11 | | 0 | 00/EABC | * LDA #0 8187 | 19 AUXMEM.CHARIO.s 269 | Comment | 11 | | 0 | 00/EABC | * STA FXVAREXEC 8188 | 19 AUXMEM.CHARIO.s 270 | Comment | 11 | | 0 | 00/EABC | * JSR OSFIND 8189 | 19 AUXMEM.CHARIO.s 271 | Comment | 11 | | 0 | 00/EABC | * KEYREAD1 8190 | 19 AUXMEM.CHARIO.s 272 | Comment | 11 | | 0 | 00/EABC | * 8191 | 19 AUXMEM.CHARIO.s 273 | Comment | 11 | | 0 | 00/EABC | * TO DO: expand current soft key 8192 | 19 AUXMEM.CHARIO.s 274 | Comment | 11 | | 0 | 00/EABC | * LDA SOFTKEYLEN 8193 | 19 AUXMEM.CHARIO.s 275 | Comment | 11 | | 0 | 00/EABC | * BEQ KEYREAD2 8194 | 19 AUXMEM.CHARIO.s 276 | Comment | 11 | | 0 | 00/EABC | * LDX SOFTKEYOFF 8195 | 19 AUXMEM.CHARIO.s 277 | Comment | 11 | | 0 | 00/EABC | * LDA SOFTKEYS,X 8196 | 19 AUXMEM.CHARIO.s 278 | Comment | 11 | | 0 | 00/EABC | * INC SOFTKEYOFF 8197 | 19 AUXMEM.CHARIO.s 279 | Comment | 11 | | 0 | 00/EABC | * DEC SOFTKEYLEN 8198 | 19 AUXMEM.CHARIO.s 280 | Comment | 11 | | 0 | 00/EABC | * CLC 8199 | 19 AUXMEM.CHARIO.s 281 | Comment | 11 | | 0 | 00/EABC | * RTS 8200 | 19 AUXMEM.CHARIO.s 282 | Comment | 11 | | 0 | 00/EABC | * KEYREAD2 8201 | 19 AUXMEM.CHARIO.s 283 | Comment | 11 | | 0 | 00/EABC | * 8202 | 19 AUXMEM.CHARIO.s 284 | Code | 11 | | 3 | 00/EABC : 20 2F EB | JSR KBDREAD ; Fetch character from KBD "buffer" 8203 | 19 AUXMEM.CHARIO.s 285 | Code | 11 | | 2 | 00/EABF : B0 1D | BCS KEYREADOK ; Nothing pending 8204 | 19 AUXMEM.CHARIO.s 286 | Comment | 11 | | 0 | 00/EAC1 | * 8205 | 19 AUXMEM.CHARIO.s 287 | Code | 11 | | 1 | 00/EAC1 : A8 | TAY 8206 | 19 AUXMEM.CHARIO.s 288 | Code | 11 | | 2 | 00/EAC2 : 10 1A | BPL KEYREADOK ; Not top-bit key 8207 | 19 AUXMEM.CHARIO.s 289 | Code | 11 | | 2 | 00/EAC4 : 29 CF | AND #$CF 8208 | 19 AUXMEM.CHARIO.s 290 | Code | 11 | | 2 | 00/EAC6 : C9 C9 | CMP #$C9 8209 | 19 AUXMEM.CHARIO.s 291 | Code | 11 | | 2 | 00/EAC8 : 90 1F | BCC KEYSOFT ; Not cursor key 8210 | 19 AUXMEM.CHARIO.s 292 | Code | 11 | | 3 | 00/EACA : AE 7D 02 | LDX {{$190}+$ED} 8211 | 19 AUXMEM.CHARIO.s 293 | Code | 11 | | 2 | 00/EACD : F0 32 | BEQ KEYCURSOR ; *FX4,0 - editing keys 8212 | 19 AUXMEM.CHARIO.s 294 | Comment | 11 | | 0 | 00/EACF | ; 8213 | 19 AUXMEM.CHARIO.s 295 | Code | 11 | | 3 | 00/EACF : AC 6B 02 | LDY {{$190}+219} 8214 | 19 AUXMEM.CHARIO.s 296 | Code | 11 | | 2 | 00/EAD2 : C9 C9 | CMP #$C9 8215 | 19 AUXMEM.CHARIO.s 297 | Code | 11 | | 2 | 00/EAD4 : F0 06 | BEQ KEYREADOKY ; TAB key 8216 | 19 AUXMEM.CHARIO.s 298 | Comment | 11 | | 0 | 00/EAD6 | ; 8217 | 19 AUXMEM.CHARIO.s 299 | Code | 11 | | 1 | 00/EAD6 : CA | DEX 8218 | 19 AUXMEM.CHARIO.s 300 | Code | 11 | | 2 | 00/EAD7 : D0 06 | BNE KEYSOFT1 ; Not *FX4,1 - soft key 8219 | 19 AUXMEM.CHARIO.s 301 | Comment | 11 | | 0 | 00/EAD9 | ; LDY FXTABCHAR 8220 | 19 AUXMEM.CHARIO.s 302 | Comment | 11 | | 0 | 00/EAD9 | ; CMP #$C9 8221 | 19 AUXMEM.CHARIO.s 303 | Comment | 11 | | 0 | 00/EAD9 | ; BEQ KEYREADOKY ; TAB key 8222 | 19 AUXMEM.CHARIO.s 304 | Code | 11 | | 2 | 00/EAD9 : E9 44 | SBC #$44 ; Return $88-$8B 8223 | 19 AUXMEM.CHARIO.s 305 | Code | 11 | | 1 | 00/EADB : A8 | TAY 8224 | 19 AUXMEM.CHARIO.s 306 | Code | 11 | | 1 | 00/EADC : 98 | KEYREADOKY TYA 8225 | 19 AUXMEM.CHARIO.s 307 | Code | 11 | | 1 | 00/EADD : 18 | KEYREADOK1 CLC 8226 | 19 AUXMEM.CHARIO.s 308 | Code | 11 | | 1 | 00/EADE : 60 | KEYREADOK RTS 8227 | 19 AUXMEM.CHARIO.s 309 | Comment | 11 | | 0 | 00/EADF | * 8228 | 19 AUXMEM.CHARIO.s 310 | Comment | 11 | | 0 | 00/EADF | * Process soft key 8229 | 19 AUXMEM.CHARIO.s 311 | Code | 11 | | 3 | 00/EADF : AE 8E 02 | KEYSOFT1 LDX {{$190}+254} 8230 | 19 AUXMEM.CHARIO.s 312 | Code | 11 | | 2 | 00/EAE2 : E0 C0 | CPX #$C0 8231 | 19 AUXMEM.CHARIO.s 313 | Code | 11 | | 2 | 00/EAE4 : 90 03 | BCC KEYSOFT 8232 | 19 AUXMEM.CHARIO.s 314 | Code | 11 | | 2 | 00/EAE6 : 29 BF | AND #$BF 8233 | 19 AUXMEM.CHARIO.s 315 | Code | 11 | | 1 | 00/EAE8 : A8 | TAY 8234 | 19 AUXMEM.CHARIO.s 316 | Code | 11 | | 1 | 00/EAE9 : 98 | KEYSOFT TYA 8235 | 19 AUXMEM.CHARIO.s 317 | Code | 11 | | 1 | 00/EAEA : 4A | LSR A 8236 | 19 AUXMEM.CHARIO.s 318 | Code | 11 | | 1 | 00/EAEB : 4A | LSR A 8237 | 19 AUXMEM.CHARIO.s 319 | Code | 11 | | 1 | 00/EAEC : 4A | LSR A 8238 | 19 AUXMEM.CHARIO.s 320 | Code | 11 | | 1 | 00/EAED : 4A | LSR A ; A=key DIV 16 8239 | 19 AUXMEM.CHARIO.s 321 | Code | 11 | | 2 | 00/EAEE : 49 04 | EOR #$04 ; Offset into KEYBASE 8240 | 19 AUXMEM.CHARIO.s 322 | Code | 11 | | 1 | 00/EAF0 : AA | TAX 8241 | 19 AUXMEM.CHARIO.s 323 | Code | 11 | | 3 | 00/EAF1 : BD 65 02 | LDA {{$190}+221}-8,X 8242 | 19 AUXMEM.CHARIO.s 324 | Comment | 11 | | 0 | 00/EAF4 | * TO DO: 8243 | 19 AUXMEM.CHARIO.s 325 | Comment | 11 | | 0 | 00/EAF4 | *BEQ KEYNONE ; $00=ignored 8244 | 19 AUXMEM.CHARIO.s 326 | Comment | 11 | | 0 | 00/EAF4 | *DEC A 8245 | 19 AUXMEM.CHARIO.s 327 | Comment | 11 | | 0 | 00/EAF4 | *BEQ expandfunction 8246 | 19 AUXMEM.CHARIO.s 328 | Code | 11 | | 2 | 00/EAF4 : C9 02 | CMP #2 ; *TEMP* 8247 | 19 AUXMEM.CHARIO.s 329 | Code | 11 | | 2 | 00/EAF6 : 90 1C | BCC KEYNONE ; *TEMP* 8248 | 19 AUXMEM.CHARIO.s 330 | Code | 11 | | 1 | 00/EAF8 : 98 | TYA 8249 | 19 AUXMEM.CHARIO.s 331 | Code | 11 | | 2 | 00/EAF9 : 29 0F | AND #$0F 8250 | 19 AUXMEM.CHARIO.s 332 | Code | 11 | | 1 | 00/EAFB : 18 | CLC 8251 | 19 AUXMEM.CHARIO.s 333 | Code | 11 | | 3 | 00/EAFC : 7D 65 02 | ADC {{$190}+221}-8,X 8252 | 19 AUXMEM.CHARIO.s 334 | Code | 11 | | 1 | 00/EAFF : 18 | CLC 8253 | 19 AUXMEM.CHARIO.s 335 | Code | 11 | | 1 | 00/EB00 : 60 | RTS 8254 | 19 AUXMEM.CHARIO.s 336 | Empty | 11 | | 0 | 00/EB01 | 8255 | 19 AUXMEM.CHARIO.s 337 | Comment | 11 | | 0 | 00/EB01 | * Process cursor keys 8256 | 19 AUXMEM.CHARIO.s 338 | Code | 11 | | 2 | 00/EB01 : C9 C9 | KEYCURSOR CMP #$C9 8257 | 19 AUXMEM.CHARIO.s 339 | Code | 11 | | 2 | 00/EB03 : F0 11 | BEQ KEYCOPY 8258 | 19 AUXMEM.CHARIO.s 340 | Code | 11 | | 1 | 00/EB05 : 48 | PHA 8259 | 19 AUXMEM.CHARIO.s 341 | Code | 11 | | 2 | 00/EB06 : A5 EC | LDA {{$EC}} 8260 | 19 AUXMEM.CHARIO.s 342 | Code | 11 | | 3 | 00/EB08 : 20 36 D3 | JSR PUTCHRC ; Remove cursor 8261 | 19 AUXMEM.CHARIO.s 343 | Code | 11 | | 1 | 00/EB0B : 68 | PLA 8262 | 19 AUXMEM.CHARIO.s 344 | Code | 11 | | 3 | 00/EB0C : 20 C5 D2 | JSR COPYMOVE ; Move copy cursor 8263 | 19 AUXMEM.CHARIO.s 345 | Code | 11 | | 3 | 00/EB0F : 20 77 D3 | JSR GETCHRC ; Save char under cursor 8264 | 19 AUXMEM.CHARIO.s 346 | Code | 11 | | 2 | 00/EB12 : 85 EC | STA {{$EC}} 8265 | 19 AUXMEM.CHARIO.s 347 | Code | 11 | | 1 | 00/EB14 : 38 | KEYNONE SEC 8266 | 19 AUXMEM.CHARIO.s 348 | Code | 11 | | 1 | 00/EB15 : 60 | RTS 8267 | 19 AUXMEM.CHARIO.s 349 | Empty | 11 | | 0 | 00/EB16 | 8268 | 19 AUXMEM.CHARIO.s 350 | Code | 11 | | 3 | 00/EB16 : AD 6B 02 | KEYCOPY LDA {{$190}+219} ; Prepare TAB if no copy cursor 8269 | 19 AUXMEM.CHARIO.s 351 | Code | 11 | | 2 | 00/EB19 : 24 D0 | BIT {$D0} 8270 | 19 AUXMEM.CHARIO.s 352 | Code | 11 | | 2 | 00/EB1B : 50 C0 | BVC KEYREADOK1 ; No copy cursor, return TAB 8271 | 19 AUXMEM.CHARIO.s 353 | Code | 11 | | 2 | 00/EB1D : A5 EC | LDA {{$EC}} ; Get the char under cursor 8272 | 19 AUXMEM.CHARIO.s 354 | Code | 11 | | 1 | 00/EB1F : 48 | PHA 8273 | 19 AUXMEM.CHARIO.s 355 | Code | 11 | | 3 | 00/EB20 : 20 F2 D1 | JSR OUTCHARCP ; Output it to restore and move cursor 8274 | 19 AUXMEM.CHARIO.s 356 | Code | 11 | | 3 | 00/EB23 : 20 77 D3 | JSR GETCHRC ; Save char under cursor 8275 | 19 AUXMEM.CHARIO.s 357 | Code | 11 | | 2 | 00/EB26 : 85 EC | STA {{$EC}} 8276 | 19 AUXMEM.CHARIO.s 358 | Code | 11 | | 1 | 00/EB28 : 68 | PLA 8277 | 19 AUXMEM.CHARIO.s 359 | Code | 11 | | 2 | 00/EB29 : D0 B2 | BNE KEYREADOK1 ; Ok character 8278 | 19 AUXMEM.CHARIO.s 360 | Code | 11 | | 1 | 00/EB2B : 38 | SEC 8279 | 19 AUXMEM.CHARIO.s 361 | Code | 11 | | 3 | 00/EB2C : 4C D6 EB | JMP BEEP ; Beep and return CS=No char 8280 | 19 AUXMEM.CHARIO.s 362 | Empty | 11 | | 0 | 00/EB2F | 8281 | 19 AUXMEM.CHARIO.s 363 | Empty | 11 | | 0 | 00/EB2F | 8282 | 19 AUXMEM.CHARIO.s 364 | Comment | 11 | | 0 | 00/EB2F | * KBDREAD 8283 | 19 AUXMEM.CHARIO.s 365 | Comment | 11 | | 0 | 00/EB2F | ************************ 8284 | 19 AUXMEM.CHARIO.s 366 | Comment | 11 | | 0 | 00/EB2F | * Test for and fetch key from keyboard 8285 | 19 AUXMEM.CHARIO.s 367 | Comment | 11 | | 0 | 00/EB2F | * 8286 | 19 AUXMEM.CHARIO.s 368 | Comment | 11 | | 0 | 00/EB2F | * On exit, CS=no keypress 8287 | 19 AUXMEM.CHARIO.s 369 | Comment | 11 | | 0 | 00/EB2F | * CC=keypress 8288 | 19 AUXMEM.CHARIO.s 370 | Comment | 11 | | 0 | 00/EB2F | * A =keycode, X=corrupted 8289 | 19 AUXMEM.CHARIO.s 371 | Comment | 11 | | 0 | 00/EB2F | * Apple+Letter -> Ctrl+Letter 8290 | 19 AUXMEM.CHARIO.s 372 | Comment | 11 | | 0 | 00/EB2F | * Apple+Digits -> 80+x, 90+x, A0+x 8291 | 19 AUXMEM.CHARIO.s 373 | Comment | 11 | | 0 | 00/EB2F | * TAB -> $C9 8292 | 19 AUXMEM.CHARIO.s 374 | Comment | 11 | | 0 | 00/EB2F | * Cursors -> $CC-$CF 8293 | 19 AUXMEM.CHARIO.s 375 | Comment | 11 | | 0 | 00/EB2F | * 8294 | 19 AUXMEM.CHARIO.s 376 | Code | 11 | | 1 | 00/EB2F : B8 | KBDREAD CLV ; VC=return keypress 8295 | 19 AUXMEM.CHARIO.s 377 | Code | 11 | | 3 | 00/EB30 : AD 00 C0 | KBDTEST LDA $C000 ; VS here to test for keypress 8296 | 19 AUXMEM.CHARIO.s 378 | Code | 11 | | 2 | 00/EB33 : 49 80 | EOR #$80 ; Toggle bit 7 8297 | 19 AUXMEM.CHARIO.s 379 | Code | 11 | | 2 | 00/EB35 : C9 80 | CMP #$80 8298 | 19 AUXMEM.CHARIO.s 380 | Code | 11 | | 2 | 00/EB37 : B0 5E | BCS KBDDONE ; No key pressed 8299 | 19 AUXMEM.CHARIO.s 381 | Code | 11 | | 2 | 00/EB39 : 70 5C | BVS KBDDONE ; VS=test for keypress 8300 | 19 AUXMEM.CHARIO.s 382 | Code | 11 | | 3 | 00/EB3B : 8D 10 C0 | STA $C010 ; Ack. keypress 8301 | 19 AUXMEM.CHARIO.s 383 | Code | 11 | | 3 | 00/EB3E : 2C 61 C0 | BIT $C061 8302 | 19 AUXMEM.CHARIO.s 384 | Code | 11 | | 2 | 00/EB41 : 30 1E | BMI KBDLALT ; Left Apple pressed 8303 | 19 AUXMEM.CHARIO.s 385 | Code | 11 | | 3 | 00/EB43 : 2C 62 C0 | BIT $C062 8304 | 19 AUXMEM.CHARIO.s 386 | Code | 11 | | 2 | 00/EB46 : 30 19 | BMI KBDRALT ; Right Apple pressed 8305 | 19 AUXMEM.CHARIO.s 387 | Code | 11 | | 2 | 00/EB48 : C9 09 | CMP #$09 8306 | 19 AUXMEM.CHARIO.s 388 | Code | 11 | | 2 | 00/EB4A : F0 0E | BEQ KBDTAB ; TAB is dual action TAB/COPY 8307 | 19 AUXMEM.CHARIO.s 389 | Code | 11 | | 2 | 00/EB4C : C9 08 | CMP #$08 8308 | 19 AUXMEM.CHARIO.s 390 | Code | 11 | | 2 | 00/EB4E : 90 33 | BCC KBDCHKESC ; <$08 not cursor key 8309 | 19 AUXMEM.CHARIO.s 391 | Code | 11 | | 2 | 00/EB50 : C9 0C | CMP #$0C 8310 | 19 AUXMEM.CHARIO.s 392 | Code | 11 | | 2 | 00/EB52 : 90 08 | BCC KBDCURSR ; $08-$0B are cursor keys 8311 | 19 AUXMEM.CHARIO.s 393 | Code | 11 | | 2 | 00/EB54 : C9 15 | CMP #$15 8312 | 19 AUXMEM.CHARIO.s 394 | Code | 11 | | 2 | 00/EB56 : D0 2B | BNE KBDCHKESC ; $15 is cursor key 8313 | 19 AUXMEM.CHARIO.s 395 | Comment | 11 | | 0 | 00/EB58 | * 8314 | 19 AUXMEM.CHARIO.s 396 | Code | 11 | | 2 | 00/EB58 : A9 0D | KBDCUR15 LDA #$0D ; Convert RGT to $09 8315 | 19 AUXMEM.CHARIO.s 397 | Code | 11 | | 2 | 00/EB5A : E9 04 | KBDTAB SBC #$04 ; Convert TAB to &C9 8316 | 19 AUXMEM.CHARIO.s 398 | Code | 11 | | 1 | 00/EB5C : 18 | KBDCURSR CLC 8317 | 19 AUXMEM.CHARIO.s 399 | Code | 11 | | 2 | 00/EB5D : 69 C4 | ADC #$C4 ; Cursor keys $C0+x 8318 | 19 AUXMEM.CHARIO.s 400 | Code | 11 | | 2 | 00/EB5F : 80 22 | BRA KBDCHKESC 8319 | 19 AUXMEM.CHARIO.s 401 | Empty | 11 | | 0 | 00/EB61 | 8320 | 19 AUXMEM.CHARIO.s 402 | Empty | 11 | | 0 | 00/EB61 | KBDRALT ; Right Apple key pressed 8321 | 19 AUXMEM.CHARIO.s 403 | Code | 11 | | 2 | 00/EB61 : C9 40 | KBDLALT CMP #$40 ; Left Apple key pressed 8322 | 19 AUXMEM.CHARIO.s 404 | Code | 11 | | 2 | 00/EB63 : B0 1C | BCS KBDCTRL 8323 | 19 AUXMEM.CHARIO.s 405 | Code | 11 | | 2 | 00/EB65 : C9 30 | CMP #$30 8324 | 19 AUXMEM.CHARIO.s 406 | Code | 11 | | 2 | 00/EB67 : 90 1A | BCC KBDCHKESC ; <'0' 8325 | 19 AUXMEM.CHARIO.s 407 | Code | 11 | | 2 | 00/EB69 : C9 3A | CMP #$3A 8326 | 19 AUXMEM.CHARIO.s 408 | Code | 11 | | 2 | 00/EB6B : B0 16 | BCS KBDCHKESC ; >'9' 8327 | 19 AUXMEM.CHARIO.s 409 | Code | 11 | | 2 | 00/EB6D : 29 0F | KBDFUNC AND #$0F ; Convert Apple-Num to function key 8328 | 19 AUXMEM.CHARIO.s 410 | Code | 11 | | 2 | 00/EB6F : 09 80 | ORA #$80 8329 | 19 AUXMEM.CHARIO.s 411 | Code | 11 | | 3 | 00/EB71 : 2C 62 C0 | BIT $C062 8330 | 19 AUXMEM.CHARIO.s 412 | Code | 11 | | 2 | 00/EB74 : 10 0D | BPL KBDCHKESC ; Left+Digit -> $8x 8331 | 19 AUXMEM.CHARIO.s 413 | Code | 11 | | 2 | 00/EB76 : 09 90 | ORA #$90 ; Right+Digit -> $9x 8332 | 19 AUXMEM.CHARIO.s 414 | Code | 11 | | 3 | 00/EB78 : 2C 61 C0 | BIT $C061 8333 | 19 AUXMEM.CHARIO.s 415 | Code | 11 | | 2 | 00/EB7B : 10 06 | BPL KBDCHKESC 8334 | 19 AUXMEM.CHARIO.s 416 | Code | 11 | | 2 | 00/EB7D : 49 30 | EOR #$30 ; Left+Right+Digit -> $Ax 8335 | 19 AUXMEM.CHARIO.s 417 | Code | 11 | | 2 | 00/EB7F : 80 02 | BRA KBDCHKESC 8336 | 19 AUXMEM.CHARIO.s 418 | Empty | 11 | | 0 | 00/EB81 | 8337 | 19 AUXMEM.CHARIO.s 419 | Code | 11 | | 2 | 00/EB81 : 29 1F | KBDCTRL AND #$1F ; Apple-Letter -> Ctrl-Letter 8338 | 19 AUXMEM.CHARIO.s 420 | Comment | 11 | | 0 | 00/EB83 | * 8339 | 19 AUXMEM.CHARIO.s 421 | Comment | 11 | | 0 | 00/EB83 | * Test for Escape key 8340 | 19 AUXMEM.CHARIO.s 422 | Code | 11 | | 1 | 00/EB83 : AA | KBDCHKESC TAX ; X=keycode 8341 | 19 AUXMEM.CHARIO.s 423 | Code | 11 | | 3 | 00/EB84 : 4D 6C 02 | EOR {{$190}+220} ; Current ESCAPE char? 8342 | 19 AUXMEM.CHARIO.s 424 | Code | 11 | | 3 | 00/EB87 : 0D 75 02 | ORA {{$190}+229} ; Is ESCAPE an ASCII char? 8343 | 19 AUXMEM.CHARIO.s 425 | Code | 11 | | 2 | 00/EB8A : D0 09 | BNE KBDNOESC ; Not ESCAPE or ESCAPE=ASCII 8344 | 19 AUXMEM.CHARIO.s 426 | Code | 11 | | 3 | 00/EB8C : AD 58 02 | LDA {{$190}+200} ; Is ESCAPE ignored? 8345 | 19 AUXMEM.CHARIO.s 427 | Code | 11 | | 1 | 00/EB8F : 4A | LSR A ; Check bit 0 8346 | 19 AUXMEM.CHARIO.s 428 | Code | 11 | | 2 | 00/EB90 : B0 05 | BCS KBDDONE ; ESCAPE completely ignored 8347 | 19 AUXMEM.CHARIO.s 429 | Code | 11 | | 1 | 00/EB92 : 38 | SEC 8348 | 19 AUXMEM.CHARIO.s 430 | Code | 11 | | 2 | 00/EB93 : 66 FF | ROR {$FF} ; Set Escape flag 8349 | 19 AUXMEM.CHARIO.s 431 | Code | 11 | | 1 | 00/EB95 : 8A | KBDNOESC TXA ; A=keycode 8350 | 19 AUXMEM.CHARIO.s 432 | Code | 11 | | 1 | 00/EB96 : 18 | CLC ; CLC=Ok 8351 | 19 AUXMEM.CHARIO.s 433 | Code | 11 | | 1 | 00/EB97 : 60 | KBDDONE RTS 8352 | 19 AUXMEM.CHARIO.s 434 | Empty | 11 | | 0 | 00/EB98 | 8353 | 19 AUXMEM.CHARIO.s 435 | Comment | 11 | | 0 | 00/EB98 | * Process pending Escape state 8354 | 19 AUXMEM.CHARIO.s 436 | Code | 11 | | 2 | 00/EB98 : A2 00 | BYTE7E LDX #$00 ; $7E = ack detection of ESC 8355 | 19 AUXMEM.CHARIO.s 437 | Code | 11 | | 2 | 00/EB9A : 24 FF | BIT {$FF} 8356 | 19 AUXMEM.CHARIO.s 438 | Code | 11 | | 2 | 00/EB9C : 10 0E | BPL BYTE7DOK ; No Escape pending 8357 | 19 AUXMEM.CHARIO.s 439 | Code | 11 | | 3 | 00/EB9E : AD 76 02 | LDA {{$190}+230} ; Process Escape effects 8358 | 19 AUXMEM.CHARIO.s 440 | Code | 11 | | 2 | 00/EBA1 : F0 04 | BEQ BYTE7E2 8359 | 19 AUXMEM.CHARIO.s 441 | Code | 11 | | 1 | 00/EBA3 : 58 | CLI ; Allow IRQs while flushing 8360 | 19 AUXMEM.CHARIO.s 442 | Code | 11 | | 3 | 00/EBA4 : 8D 69 02 | STA {{$190}+217} ; Clear scroll counter 8361 | 19 AUXMEM.CHARIO.s 443 | Comment | 11 | | 0 | 00/EBA7 | * JSR STAREXEC0 ; Close any EXEC file 8362 | 19 AUXMEM.CHARIO.s 444 | Comment | 11 | | 0 | 00/EBA7 | * JSR FLUSHALL ; Flush all buffers 8363 | 19 AUXMEM.CHARIO.s 445 | Code | 11 | | 2 | 00/EBA7 : A2 FF | BYTE7E2 LDX #$FF ; X=$FF, Escape was pending 8364 | 19 AUXMEM.CHARIO.s 446 | Code | 11 | | 1 | 00/EBA9 : 18 | BYTE7C CLC ; &7C = clear escape condition 8365 | 19 AUXMEM.CHARIO.s 447 | Code | 11 | | 2 | 00/EBAA : 66 FF | BYTE7D ROR {$FF} ; $7D = set escape condition 8366 | 19 AUXMEM.CHARIO.s 448 | Code | 11 | | 1 | 00/EBAC : 60 | BYTE7DOK RTS 8367 | 19 AUXMEM.CHARIO.s 449 | Empty | 11 | | 0 | 00/EBAD | 8368 | 19 AUXMEM.CHARIO.s 450 | Code | 11 | | 2 | 00/EBAD : A2 00 | BYTE76 LDX #$00 ; Update LEDs and return X=SHIFT 8369 | 19 AUXMEM.CHARIO.s 451 | Code | 11 | | 1 | 00/EBAF : 60 | RTS ; Not possible with Apple 8370 | 19 AUXMEM.CHARIO.s 452 | Empty | 11 | | 0 | 00/EBB0 | 8371 | 1 applecorn.s 207 | Directive | 11 | | 0 | 00/EBB0 | PUT AUXMEM.MISC 8372 | 20 AUXMEM.MISC.s 1 | Comment | 11 | | 0 | 00/EBB0 | * AUXMEM.MISC.S 8373 | 20 AUXMEM.MISC.s 2 | Comment | 11 | | 0 | 00/EBB0 | * (c) Bobbi 2021 GPLv3 8374 | 20 AUXMEM.MISC.s 3 | Comment | 11 | | 0 | 00/EBB0 | * 8375 | 20 AUXMEM.MISC.s 4 | Comment | 11 | | 0 | 00/EBB0 | * Misc functions and API entry block 8376 | 20 AUXMEM.MISC.s 5 | Comment | 11 | | 0 | 00/EBB0 | * 02-Sep-2021 Written GSINIT/GSREAD 8377 | 20 AUXMEM.MISC.s 6 | Comment | 11 | | 0 | 00/EBB0 | * 11-Sep-2021 PR16DEC uses OS workspace, added rest of default vectors/etc. 8378 | 20 AUXMEM.MISC.s 7 | Comment | 11 | | 0 | 00/EBB0 | * 20-Sep-2021 Updated PRDECIMAL routine, prints up to 32 bits. 8379 | 20 AUXMEM.MISC.s 8 | Comment | 11 | | 0 | 00/EBB0 | * 25-Oct-2021 Initial pseudo-sideways ROM selection code. 8380 | 20 AUXMEM.MISC.s 9 | Comment | 11 | | 0 | 00/EBB0 | * 26-Oct-2021 Corrected entry parameters to OSRDRM. 8381 | 20 AUXMEM.MISC.s 10 | Comment | 11 | | 0 | 00/EBB0 | * 03-Nov-2021 Temp'y fix, if can't find SROM, ignores it. 8382 | 20 AUXMEM.MISC.s 11 | Comment | 11 | | 0 | 00/EBB0 | * 13-Nov-2021 ROMSELECT calls mainmem to load ROM. 8383 | 20 AUXMEM.MISC.s 12 | Empty | 11 | | 0 | 00/EBB0 | 8384 | 20 AUXMEM.MISC.s 13 | Empty | 11 | | 0 | 00/EBB0 | 8385 | 20 AUXMEM.MISC.s 14 | Comment | 11 | | 0 | 00/EBB0 | * OSBYTE $80 - ADVAL 8386 | 20 AUXMEM.MISC.s 15 | Comment | 11 | | 0 | 00/EBB0 | ************************************ 8387 | 20 AUXMEM.MISC.s 16 | Comment | 11 | | 0 | 00/EBB0 | * Read input device or buffer status 8388 | 20 AUXMEM.MISC.s 17 | Empty | 11 | | 0 | 00/EBB0 | 8389 | 20 AUXMEM.MISC.s 18 | Code | 11 | | 2 | 00/EBB0 : A0 00 | BYTE80 LDY #$00 ; Prepare return=&00xx 8390 | 20 AUXMEM.MISC.s 19 | Code | 11 | | 1 | 00/EBB2 : 8A | TXA ; X<0 - info about buffers 8391 | 20 AUXMEM.MISC.s 20 | Code | 11 | | 2 | 00/EBB3 : 30 11 | BMI ADVALBUF ; X>=0 - read input devices 8392 | 20 AUXMEM.MISC.s 21 | Code | 11 | | 2 | 00/EBB5 : E0 7F | CPX #$7F 8393 | 20 AUXMEM.MISC.s 22 | Code | 11 | | 2 | 00/EBB7 : D0 0A | BNE ADVALNONE 8394 | 20 AUXMEM.MISC.s 23 | Code | 11 | | 3 | 00/EBB9 : 20 2F EB | ADVALWAIT JSR KBDREAD 8395 | 20 AUXMEM.MISC.s 24 | Code | 11 | | 2 | 00/EBBC : B0 FB | BCS ADVALWAIT 8396 | 20 AUXMEM.MISC.s 25 | Code | 11 | | 1 | 00/EBBE : AA | TAX 8397 | 20 AUXMEM.MISC.s 26 | Code | 11 | | 2 | 00/EBBF : 10 01 | BPL ADVALOK1 ; &00xx for normal keys 8398 | 20 AUXMEM.MISC.s 27 | Code | 11 | | 1 | 00/EBC1 : C8 | INY ; &01xx for function/edit keys 8399 | 20 AUXMEM.MISC.s 28 | Code | 11 | | 1 | 00/EBC2 : 60 | ADVALOK1 RTS 8400 | 20 AUXMEM.MISC.s 29 | Code | 11 | | 2 | 00/EBC3 : A2 00 | ADVALNONE LDX #$00 ; Input, just return 0 8401 | 20 AUXMEM.MISC.s 30 | Code | 11 | | 1 | 00/EBC5 : 60 | RTS 8402 | 20 AUXMEM.MISC.s 31 | Code | 11 | | 1 | 00/EBC6 : E8 | ADVALBUF INX 8403 | 20 AUXMEM.MISC.s 32 | Code | 11 | | 2 | 00/EBC7 : F0 06 | BEQ _ADVALKBD ; Fake keyboard buffer 8404 | 20 AUXMEM.MISC.s 33 | Code | 11 | | 1 | 00/EBC9 : E8 | INX 8405 | 20 AUXMEM.MISC.s 34 | Code | 11 | | 2 | 00/EBCA : F0 09 | BEQ _ADVALOK ; Serial input, return 0 8406 | 20 AUXMEM.MISC.s 35 | Code | 11 | | 2 | 00/EBCC : A2 01 | LDX #$01 ; For outputs, return 1 char free 8407 | 20 AUXMEM.MISC.s 36 | Code | 11 | | 1 | 00/EBCE : 60 | RTS 8408 | 20 AUXMEM.MISC.s 37 | Code | 11 | | 3 | 00/EBCF : 2C 00 C0 | _ADVALKBD BIT $C000 ; Test keyboard data/strobe 8409 | 20 AUXMEM.MISC.s 38 | Code | 11 | | 2 | 00/EBD2 : 10 01 | BPL _ADVALOK ; No Strobe, return 0 8410 | 20 AUXMEM.MISC.s 39 | Code | 11 | | 1 | 00/EBD4 : E8 | INX ; Strobe, return 1 8411 | 20 AUXMEM.MISC.s 40 | Code | 11 | | 1 | 00/EBD5 : 60 | _ADVALOK RTS 8412 | 20 AUXMEM.MISC.s 41 | Empty | 11 | | 0 | 00/EBD6 | 8413 | 20 AUXMEM.MISC.s 42 | Empty | 11 | | 0 | 00/EBD6 | 8414 | 20 AUXMEM.MISC.s 43 | Comment | 11 | | 0 | 00/EBD6 | ****************** 8415 | 20 AUXMEM.MISC.s 44 | Comment | 11 | | 0 | 00/EBD6 | * Helper functions 8416 | 20 AUXMEM.MISC.s 45 | Comment | 11 | | 0 | 00/EBD6 | ****************** 8417 | 20 AUXMEM.MISC.s 46 | Empty | 11 | | 0 | 00/EBD6 | 8418 | 20 AUXMEM.MISC.s 47 | Comment | 11 | | 0 | 00/EBD6 | * Beep 8419 | 20 AUXMEM.MISC.s 48 | Comment | 11 | | 0 | 00/EBD6 | * 8420 | 20 AUXMEM.MISC.s 49 | Comment | 11 | | 0 | 00/EBD6 | * Sound measurement shows the tone formula is: 8421 | 20 AUXMEM.MISC.s 50 | Comment | 11 | | 0 | 00/EBD6 | * 1.230 MHz 8422 | 20 AUXMEM.MISC.s 51 | Comment | 11 | | 0 | 00/EBD6 | * ------------- = cycles 8423 | 20 AUXMEM.MISC.s 52 | Comment | 11 | | 0 | 00/EBD6 | * 8 * frequency 8424 | 20 AUXMEM.MISC.s 53 | Comment | 11 | | 0 | 00/EBD6 | * 8425 | 20 AUXMEM.MISC.s 54 | Comment | 11 | | 0 | 00/EBD6 | * cycles = BEEPX*5+10 8426 | 20 AUXMEM.MISC.s 55 | Comment | 11 | | 0 | 00/EBD6 | * 8427 | 20 AUXMEM.MISC.s 56 | Comment | 11 | | 0 | 00/EBD6 | * So: 8428 | 20 AUXMEM.MISC.s 57 | Comment | 11 | | 0 | 00/EBD6 | * BEEPX = (cycles-10)/5 8429 | 20 AUXMEM.MISC.s 58 | Comment | 11 | | 0 | 00/EBD6 | * So: 8430 | 20 AUXMEM.MISC.s 59 | Comment | 11 | | 0 | 00/EBD6 | * BEEPX = ( 1.230 MHz ) 8431 | 20 AUXMEM.MISC.s 60 | Comment | 11 | | 0 | 00/EBD6 | * (------------- - 10 ) / 5 8432 | 20 AUXMEM.MISC.s 61 | Comment | 11 | | 0 | 00/EBD6 | * (8 * frequency ) 8433 | 20 AUXMEM.MISC.s 62 | Empty | 11 | | 0 | 00/EBD6 | 8434 | 20 AUXMEM.MISC.s 63 | Comment | 11 | | 0 | 00/EBD6 | * BEEPX EQU #57 ; note=C5 8435 | 20 AUXMEM.MISC.s 64 | Equivalence | 11 | | 0 | 00/EBD6 | BEEPX EQU #116 ; note=C4 8436 | 20 AUXMEM.MISC.s 65 | Code | 11 | | 1 | 00/EBD6 : 48 | BEEP PHA 8437 | 20 AUXMEM.MISC.s 66 | Code | 11 | | 1 | 00/EBD7 : DA | PHX 8438 | 20 AUXMEM.MISC.s 67 | Code | 11 | | 1 | 00/EBD8 : 5A | PHY 8439 | 20 AUXMEM.MISC.s 68 | Code | 11 | | 2 | 00/EBD9 : A0 00 | LDY #$00 ; duration 8440 | 20 AUXMEM.MISC.s 69 | Code | 11 | | 2 | 00/EBDB : A2 74 | ozunid_199 LDX #{#116} ; 2cy pitch 2cy 8441 | 20 AUXMEM.MISC.s 70 | Comment | 11 | | 0 | 00/EBDD | *------------------------------------------------------ 8442 | 20 AUXMEM.MISC.s 71 | Code | 11 | | 1 | 00/EBDD : CA | ozunid_200 DEX ; 2cy BEEPX * 2cy 8443 | 20 AUXMEM.MISC.s 72 | Code | 11 | | 2 | 00/EBDE : D0 FD | BNE ozunid_200 ; 3cy/2cy (BEEPX-1) * 3cy + 1 * 2cy 8444 | 20 AUXMEM.MISC.s 73 | Comment | 11 | | 0 | 00/EBE0 | *------------------------------------------------------ 8445 | 20 AUXMEM.MISC.s 74 | Comment | 11 | | 0 | 00/EBE0 | * BEEPX*5-1cy 8446 | 20 AUXMEM.MISC.s 75 | Code | 11 | | 3 | 00/EBE0 : AD 30 C0 | LDA $C030 ; 4cy BEEPX*5+5 8447 | 20 AUXMEM.MISC.s 76 | Code | 11 | | 1 | 00/EBE3 : 88 | DEY ; 2cy BEEPX*5+7 8448 | 20 AUXMEM.MISC.s 77 | Code | 11 | | 2 | 00/EBE4 : D0 F5 | BNE ozunid_199 ; 3cy/2cy BEEPX*5+10 8449 | 20 AUXMEM.MISC.s 78 | Code | 11 | | 1 | 00/EBE6 : 7A | PLY ; 8450 | 20 AUXMEM.MISC.s 79 | Code | 11 | | 1 | 00/EBE7 : FA | PLX 8451 | 20 AUXMEM.MISC.s 80 | Code | 11 | | 1 | 00/EBE8 : 68 | PLA 8452 | 20 AUXMEM.MISC.s 81 | Code | 11 | | 1 | 00/EBE9 : 60 | RTS 8453 | 20 AUXMEM.MISC.s 82 | Empty | 11 | | 0 | 00/EBEA | 8454 | 20 AUXMEM.MISC.s 83 | Empty | 11 | | 0 | 00/EBEA | 8455 | 20 AUXMEM.MISC.s 84 | Comment | 11 | | 0 | 00/EBEA | * Print string pointed to by X,Y to the screen 8456 | 20 AUXMEM.MISC.s 85 | Code | 11 | | 1 | 00/EBEA : 8A | OUTSTR TXA 8457 | 20 AUXMEM.MISC.s 86 | Empty | 11 | | 0 | 00/EBEB | 8458 | 20 AUXMEM.MISC.s 87 | Comment | 11 | | 0 | 00/EBEB | * Print string pointed to by A,Y to the screen 8459 | 20 AUXMEM.MISC.s 88 | Code | 11 | | 2 | 00/EBEB : 85 E6 | PRSTR STA {$E6}+0 ; String in A,Y 8460 | 20 AUXMEM.MISC.s 89 | Code | 11 | | 2 | 00/EBED : 84 E7 | STY {$E6}+1 8461 | 20 AUXMEM.MISC.s 90 | Code | 11 | | 2 | 00/EBEF : B2 E6 | ozunid_201 LDA ({$E6}) ; Ptr to string in OSTEXT 8462 | 20 AUXMEM.MISC.s 91 | Code | 11 | | 2 | 00/EBF1 : F0 0B | BEQ PRSTROK 8463 | 20 AUXMEM.MISC.s 92 | Code | 11 | | 3 | 00/EBF3 : 20 E3 FF | JSR OSASCI 8464 | 20 AUXMEM.MISC.s 93 | Code | 11 | | 2 | 00/EBF6 : E6 E6 | INC {$E6} 8465 | 20 AUXMEM.MISC.s 94 | Code | 11 | | 2 | 00/EBF8 : D0 F5 | BNE ozunid_201 8466 | 20 AUXMEM.MISC.s 95 | Code | 11 | | 2 | 00/EBFA : E6 E7 | INC {$E6}+1 8467 | 20 AUXMEM.MISC.s 96 | Code | 11 | | 2 | 00/EBFC : 80 F1 | BRA ozunid_201 8468 | 20 AUXMEM.MISC.s 97 | Code | 11 | | 1 | 00/EBFE : 60 | PRSTROK RTS 8469 | 20 AUXMEM.MISC.s 98 | Empty | 11 | | 0 | 00/EBFF | 8470 | 20 AUXMEM.MISC.s 99 | Comment | 11 | | 0 | 00/EBFF | * Print NL if not already at column 0 8471 | 20 AUXMEM.MISC.s 100 | Code | 11 | | 2 | 00/EBFF : A9 86 | FORCENL LDA #$86 8472 | 20 AUXMEM.MISC.s 101 | Code | 11 | | 3 | 00/EC01 : 20 F4 FF | JSR OSBYTE 8473 | 20 AUXMEM.MISC.s 102 | Code | 11 | | 1 | 00/EC04 : 8A | TXA 8474 | 20 AUXMEM.MISC.s 103 | Code | 11 | | 2 | 00/EC05 : F0 F7 | BEQ PRSTROK 8475 | 20 AUXMEM.MISC.s 104 | Code | 11 | | 3 | 00/EC07 : 4C E7 FF | JMP OSNEWL 8476 | 20 AUXMEM.MISC.s 105 | Empty | 11 | | 0 | 00/EC0A | 8477 | 20 AUXMEM.MISC.s 106 | Comment | 11 | | 0 | 00/EC0A | * Print XY in hex 8478 | 20 AUXMEM.MISC.s 107 | Code | 11 | | 1 | 00/EC0A : 98 | OUT2HEX TYA 8479 | 20 AUXMEM.MISC.s 108 | Code | 11 | | 3 | 00/EC0B : 20 0F EC | JSR OUTHEX 8480 | 20 AUXMEM.MISC.s 109 | Code | 11 | | 1 | 00/EC0E : 8A | TXA ; Continue into OUTHEX 8481 | 20 AUXMEM.MISC.s 110 | Empty | 11 | | 0 | 00/EC0F | 8482 | 20 AUXMEM.MISC.s 111 | Comment | 11 | | 0 | 00/EC0F | * Print hex byte in A 8483 | 20 AUXMEM.MISC.s 112 | Code | 11 | | 1 | 00/EC0F : 48 | OUTHEX PHA 8484 | 20 AUXMEM.MISC.s 113 | Code | 11 | | 1 | 00/EC10 : 4A | LSR 8485 | 20 AUXMEM.MISC.s 114 | Code | 11 | | 1 | 00/EC11 : 4A | LSR 8486 | 20 AUXMEM.MISC.s 115 | Code | 11 | | 1 | 00/EC12 : 4A | LSR 8487 | 20 AUXMEM.MISC.s 116 | Code | 11 | | 1 | 00/EC13 : 4A | LSR 8488 | 20 AUXMEM.MISC.s 117 | Code | 11 | | 2 | 00/EC14 : 29 0F | AND #$0F 8489 | 20 AUXMEM.MISC.s 118 | Code | 11 | | 3 | 00/EC16 : 20 1C EC | JSR PRNIB 8490 | 20 AUXMEM.MISC.s 119 | Code | 11 | | 1 | 00/EC19 : 68 | PLA 8491 | 20 AUXMEM.MISC.s 120 | Code | 11 | | 2 | 00/EC1A : 29 0F | AND #$0F ; Continue into PRNIB 8492 | 20 AUXMEM.MISC.s 121 | Empty | 11 | | 0 | 00/EC1C | 8493 | 20 AUXMEM.MISC.s 122 | Comment | 11 | | 0 | 00/EC1C | * Print hex nibble in A 8494 | 20 AUXMEM.MISC.s 123 | Code | 11 | | 2 | 00/EC1C : C9 0A | PRNIB CMP #$0A 8495 | 20 AUXMEM.MISC.s 124 | Code | 11 | | 2 | 00/EC1E : 90 07 | BCC ozunid_202 8496 | 20 AUXMEM.MISC.s 125 | Code | 11 | | 1 | 00/EC20 : 18 | CLC ; >= $0A 8497 | 20 AUXMEM.MISC.s 126 | Code | 11 | | 2 | 00/EC21 : 69 37 | ADC #'A'-$0A 8498 | 20 AUXMEM.MISC.s 127 | Code | 11 | | 3 | 00/EC23 : 20 EE FF | JSR OSWRCH 8499 | 20 AUXMEM.MISC.s 128 | Code | 11 | | 1 | 00/EC26 : 60 | RTS 8500 | 20 AUXMEM.MISC.s 129 | Code | 11 | | 2 | 00/EC27 : 69 30 | ozunid_202 ADC #'0' ; < $0A 8501 | 20 AUXMEM.MISC.s 130 | Code | 11 | | 3 | 00/EC29 : 4C EE FF | JMP OSWRCH 8502 | 20 AUXMEM.MISC.s 131 | Empty | 11 | | 0 | 00/EC2C | 8503 | 20 AUXMEM.MISC.s 132 | Comment | 11 | | 0 | 00/EC2C | * TEMP ENTRY * 8504 | 20 AUXMEM.MISC.s 133 | Comment | 11 | | 0 | 00/EC2C | * Print 16-bit value in XY in decimal 8505 | 20 AUXMEM.MISC.s 134 | Equivalence | 11 | | 0 | 00/EC2C | OSNUM EQU {$E6}+0 8506 | 20 AUXMEM.MISC.s 135 | Equivalence | 11 | | 0 | 00/EC2C | OSPAD EQU {$E6}+4 8507 | 20 AUXMEM.MISC.s 136 | Comment | 11 | | 0 | 00/EC2C | *PRDECXY 8508 | 20 AUXMEM.MISC.s 137 | Comment | 11 | | 0 | 00/EC2C | *PRDECPAD STX OSNUM+0 8509 | 20 AUXMEM.MISC.s 138 | Comment | 11 | | 0 | 00/EC2C | * STY OSNUM+1 8510 | 20 AUXMEM.MISC.s 139 | Comment | 11 | | 0 | 00/EC2C | * STZ OSNUM+2 8511 | 20 AUXMEM.MISC.s 140 | Comment | 11 | | 0 | 00/EC2C | * STZ OSNUM+3 8512 | 20 AUXMEM.MISC.s 141 | Comment | 11 | | 0 | 00/EC2C | *:PRDEC16 LDY #$05 ; 5 digits 8513 | 20 AUXMEM.MISC.s 142 | Comment | 11 | | 0 | 00/EC2C | * LDX #OSNUM ; number stored in OSNUM 8514 | 20 AUXMEM.MISC.s 143 | Empty | 11 | | 0 | 00/EC2C | 8515 | 20 AUXMEM.MISC.s 144 | Comment | 11 | | 0 | 00/EC2C | * Print up to 32-bit decimal number 8516 | 20 AUXMEM.MISC.s 145 | Comment | 11 | | 0 | 00/EC2C | * See forum.6502.org/viewtopic.php?f=2&t=4894 8517 | 20 AUXMEM.MISC.s 146 | Comment | 11 | | 0 | 00/EC2C | * and groups.google.com/g/comp.sys.apple2/c/_y27d_TxDHA 8518 | 20 AUXMEM.MISC.s 147 | Comment | 11 | | 0 | 00/EC2C | * 8519 | 20 AUXMEM.MISC.s 148 | Comment | 11 | | 0 | 00/EC2C | * X=>four byte zero page locations 8520 | 20 AUXMEM.MISC.s 149 | Comment | 11 | | 0 | 00/EC2C | * Y= number of digits to pad to, 0 for no padding 8521 | 20 AUXMEM.MISC.s 150 | Comment | 11 | | 0 | 00/EC2C | * 8522 | 20 AUXMEM.MISC.s 151 | Code | 11 | | 2 | 00/EC2C : 84 EA | PRINTDEC sty {{$E6}+4} ; Number of padding+digits 8523 | 20 AUXMEM.MISC.s 152 | Code | 11 | | 2 | 00/EC2E : A0 00 | ldy #0 ; Digit counter 8524 | 20 AUXMEM.MISC.s 153 | Code | 11 | | 2 | 00/EC30 : A9 20 | PRDECDIGIT lda #32 ; 32-bit divide 8525 | 20 AUXMEM.MISC.s 154 | Code | 11 | | 2 | 00/EC32 : 85 EB | sta {$EB} 8526 | 20 AUXMEM.MISC.s 155 | Code | 11 | | 2 | 00/EC34 : A9 00 | lda #0 ; Remainder=0 8527 | 20 AUXMEM.MISC.s 156 | Code | 11 | | 1 | 00/EC36 : B8 | clv ; V=0 means div result = 0 8528 | 20 AUXMEM.MISC.s 157 | Code | 11 | | 2 | 00/EC37 : C9 05 | PRDECDIV10 cmp #10/2 ; Calculate OSNUM/10 8529 | 20 AUXMEM.MISC.s 158 | Code | 11 | | 2 | 00/EC39 : 90 03 | bcc PRDEC10 8530 | 20 AUXMEM.MISC.s 159 | Code | 11 | | 2 | 00/EC3B : E9 85 | sbc #10/2+$80 ; Remove digit & set V=1 to show div result > 0 8531 | 20 AUXMEM.MISC.s 160 | Code | 11 | | 1 | 00/EC3D : 38 | sec ; Shift 1 into div result 8532 | 20 AUXMEM.MISC.s 161 | Code | 11 | | 2 | 00/EC3E : 36 00 | PRDEC10 rol 0,x ; Shift /10 result into OSNUM 8533 | 20 AUXMEM.MISC.s 162 | Code | 11 | | 2 | 00/EC40 : 36 01 | rol 1,x 8534 | 20 AUXMEM.MISC.s 163 | Code | 11 | | 2 | 00/EC42 : 36 02 | rol 2,x 8535 | 20 AUXMEM.MISC.s 164 | Code | 11 | | 2 | 00/EC44 : 36 03 | rol 3,x 8536 | 20 AUXMEM.MISC.s 165 | Code | 11 | | 1 | 00/EC46 : 2A | rol a ; Shift bits of input into acc (input mod 10) 8537 | 20 AUXMEM.MISC.s 166 | Code | 11 | | 2 | 00/EC47 : C6 EB | dec {$EB} 8538 | 20 AUXMEM.MISC.s 167 | Code | 11 | | 2 | 00/EC49 : D0 EC | bne PRDECDIV10 ; Continue 32-bit divide 8539 | 20 AUXMEM.MISC.s 168 | Code | 11 | | 2 | 00/EC4B : 09 30 | ora #48 8540 | 20 AUXMEM.MISC.s 169 | Code | 11 | | 1 | 00/EC4D : 48 | pha ; Push low digit 0-9 to print 8541 | 20 AUXMEM.MISC.s 170 | Code | 11 | | 1 | 00/EC4E : C8 | iny 8542 | 20 AUXMEM.MISC.s 171 | Code | 11 | | 2 | 00/EC4F : 70 DF | bvs PRDECDIGIT ; If V=1, result of /10 was > 0 & do next digit 8543 | 20 AUXMEM.MISC.s 172 | Code | 11 | | 2 | 00/EC51 : A9 20 | lda #32 8544 | 20 AUXMEM.MISC.s 173 | Code | 11 | | 2 | 00/EC53 : C4 EA | PRDECLP1 cpy {{$E6}+4} 8545 | 20 AUXMEM.MISC.s 174 | Code | 11 | | 2 | 00/EC55 : B0 04 | bcs PRDECLP2 ; Enough padding pushed 8546 | 20 AUXMEM.MISC.s 175 | Code | 11 | | 1 | 00/EC57 : 48 | pha ; Push leading space characters 8547 | 20 AUXMEM.MISC.s 176 | Code | 11 | | 1 | 00/EC58 : C8 | iny 8548 | 20 AUXMEM.MISC.s 177 | Code | 11 | | 2 | 00/EC59 : D0 F8 | bne PRDECLP1 8549 | 20 AUXMEM.MISC.s 178 | Code | 11 | | 1 | 00/EC5B : 68 | PRDECLP2 pla ; Pop character left to right 8550 | 20 AUXMEM.MISC.s 179 | Code | 11 | | 3 | 00/EC5C : 20 EE FF | jsr OSWRCH ; Print it 8551 | 20 AUXMEM.MISC.s 180 | Code | 11 | | 1 | 00/EC5F : 88 | dey 8552 | 20 AUXMEM.MISC.s 181 | Code | 11 | | 2 | 00/EC60 : D0 F9 | bne PRDECLP2 8553 | 20 AUXMEM.MISC.s 182 | Code | 11 | | 1 | 00/EC62 : 60 | rts 8554 | 20 AUXMEM.MISC.s 183 | Empty | 11 | | 0 | 00/EC63 | 8555 | 20 AUXMEM.MISC.s 184 | Empty | 11 | | 0 | 00/EC63 | 8556 | 20 AUXMEM.MISC.s 185 | Comment | 11 | | 0 | 00/EC63 | * GSINIT - Initialise for GSTRANS string parsing 8557 | 20 AUXMEM.MISC.s 186 | Comment | 11 | | 0 | 00/EC63 | ************************************************ 8558 | 20 AUXMEM.MISC.s 187 | Comment | 11 | | 0 | 00/EC63 | * On entry, 8559 | 20 AUXMEM.MISC.s 188 | Comment | 11 | | 0 | 00/EC63 | * (OSLPTR),Y=>start of string (spaces will be skipped) 8560 | 20 AUXMEM.MISC.s 189 | Comment | 11 | | 0 | 00/EC63 | * CLC = filename style parsing 8561 | 20 AUXMEM.MISC.s 190 | Comment | 11 | | 0 | 00/EC63 | * SEC = *KEY style parsing 8562 | 20 AUXMEM.MISC.s 191 | Comment | 11 | | 0 | 00/EC63 | * On exit, 8563 | 20 AUXMEM.MISC.s 192 | Comment | 11 | | 0 | 00/EC63 | * X = preserved 8564 | 20 AUXMEM.MISC.s 193 | Comment | 11 | | 0 | 00/EC63 | * Y = prepared for future calls to GSREAD 8565 | 20 AUXMEM.MISC.s 194 | Comment | 11 | | 0 | 00/EC63 | * EQ = end of line (nb: not "" null string) 8566 | 20 AUXMEM.MISC.s 195 | Comment | 11 | | 0 | 00/EC63 | * NE = not end of line 8567 | 20 AUXMEM.MISC.s 196 | Comment | 11 | | 0 | 00/EC63 | * 8568 | 20 AUXMEM.MISC.s 197 | Comment | 11 | | 0 | 00/EC63 | * Very difficult to write this without it being a direct clone 8569 | 20 AUXMEM.MISC.s 198 | Comment | 11 | | 0 | 00/EC63 | * from the BBC MOS. ;) 8570 | 20 AUXMEM.MISC.s 199 | Comment | 11 | | 0 | 00/EC63 | * 8571 | 20 AUXMEM.MISC.s 200 | Code | 11 | | 2 | 00/EC63 : 66 E4 | GSINTGO ROR {$E4} ; CY initially into bit 7 8572 | 20 AUXMEM.MISC.s 201 | Code | 11 | | 3 | 00/EC65 : 20 2F E6 | JSR SKIPSPC ; Skip any spaces 8573 | 20 AUXMEM.MISC.s 202 | Code | 11 | | 1 | 00/EC68 : C8 | INY ; Step past in case it's a quote 8574 | 20 AUXMEM.MISC.s 203 | Code | 11 | | 2 | 00/EC69 : C9 22 | CMP #$22 ; Is it a quote? 8575 | 20 AUXMEM.MISC.s 204 | Code | 11 | | 2 | 00/EC6B : F0 02 | BEQ GSINTGO1 8576 | 20 AUXMEM.MISC.s 205 | Code | 11 | | 1 | 00/EC6D : 88 | DEY ; Wasn't a quote, step back 8577 | 20 AUXMEM.MISC.s 206 | Code | 11 | | 1 | 00/EC6E : 18 | CLC ; Prepare CC=no leading quote 8578 | 20 AUXMEM.MISC.s 207 | Code | 11 | | 2 | 00/EC6F : 66 E4 | GSINTGO1 ROR {$E4} ; Rotate 'leading-quote' into flags 8579 | 20 AUXMEM.MISC.s 208 | Code | 11 | | 2 | 00/EC71 : C9 0D | CMP #$0D 8580 | 20 AUXMEM.MISC.s 209 | Code | 11 | | 1 | 00/EC73 : 60 | RTS ; Return EQ if end of line 8581 | 20 AUXMEM.MISC.s 210 | Comment | 11 | | 0 | 00/EC74 | * GSFLAG set to: 8582 | 20 AUXMEM.MISC.s 211 | Comment | 11 | | 0 | 00/EC74 | * bit7: leading quote found 8583 | 20 AUXMEM.MISC.s 212 | Comment | 11 | | 0 | 00/EC74 | * bit6: CC=filename CS=*KEY 8584 | 20 AUXMEM.MISC.s 213 | Empty | 11 | | 0 | 00/EC74 | 8585 | 20 AUXMEM.MISC.s 214 | Comment | 11 | | 0 | 00/EC74 | * GSREAD - Read a character from a GSTRANS parsed string 8586 | 20 AUXMEM.MISC.s 215 | Comment | 11 | | 0 | 00/EC74 | ******************************************************** 8587 | 20 AUXMEM.MISC.s 216 | Comment | 11 | | 0 | 00/EC74 | * On entry, 8588 | 20 AUXMEM.MISC.s 217 | Comment | 11 | | 0 | 00/EC74 | * (OSLPTR),Y=>current string pointer 8589 | 20 AUXMEM.MISC.s 218 | Comment | 11 | | 0 | 00/EC74 | * On exit, 8590 | 20 AUXMEM.MISC.s 219 | Comment | 11 | | 0 | 00/EC74 | * A = parsed character 8591 | 20 AUXMEM.MISC.s 220 | Comment | 11 | | 0 | 00/EC74 | * X = preserved 8592 | 20 AUXMEM.MISC.s 221 | Comment | 11 | | 0 | 00/EC74 | * CS = end of string (space or <cr> or ") 8593 | 20 AUXMEM.MISC.s 222 | Comment | 11 | | 0 | 00/EC74 | * Y =updated to start of next word or end of line 8594 | 20 AUXMEM.MISC.s 223 | Comment | 11 | | 0 | 00/EC74 | * EQ=end of line after this string 8595 | 20 AUXMEM.MISC.s 224 | Comment | 11 | | 0 | 00/EC74 | * NE=not end of line, more words follow 8596 | 20 AUXMEM.MISC.s 225 | Comment | 11 | | 0 | 00/EC74 | * CC = not end of string 8597 | 20 AUXMEM.MISC.s 226 | Comment | 11 | | 0 | 00/EC74 | * Y =updated for future calls to GSREAD 8598 | 20 AUXMEM.MISC.s 227 | Comment | 11 | | 0 | 00/EC74 | * VS=7-bit control character, (char AND $7F)<$20 8599 | 20 AUXMEM.MISC.s 228 | Comment | 11 | | 0 | 00/EC74 | * VC=not 7-bit control character (char AND $7F)>$1F 8600 | 20 AUXMEM.MISC.s 229 | Comment | 11 | | 0 | 00/EC74 | * EQ= char=$00, NE= char>$00 8601 | 20 AUXMEM.MISC.s 230 | Comment | 11 | | 0 | 00/EC74 | * PL= char<$80, MI= char>$7F 8602 | 20 AUXMEM.MISC.s 231 | Comment | 11 | | 0 | 00/EC74 | * 8603 | 20 AUXMEM.MISC.s 232 | Comment | 11 | | 0 | 00/EC74 | * No string present is checked for with: 8604 | 20 AUXMEM.MISC.s 233 | Comment | 11 | | 0 | 00/EC74 | * JSR GSINIT:BEQ missingstring 8605 | 20 AUXMEM.MISC.s 234 | Comment | 11 | | 0 | 00/EC74 | * 8606 | 20 AUXMEM.MISC.s 235 | Comment | 11 | | 0 | 00/EC74 | * A null string is checked for with: 8607 | 20 AUXMEM.MISC.s 236 | Comment | 11 | | 0 | 00/EC74 | * JSR GSINIT:JSR GSREAD:BCS nullstring 8608 | 20 AUXMEM.MISC.s 237 | Comment | 11 | | 0 | 00/EC74 | * 8609 | 20 AUXMEM.MISC.s 238 | Comment | 11 | | 0 | 00/EC74 | * A string is skipped with: 8610 | 20 AUXMEM.MISC.s 239 | Comment | 11 | | 0 | 00/EC74 | * JSR GSINIT 8611 | 20 AUXMEM.MISC.s 240 | Comment | 11 | | 0 | 00/EC74 | * loop 8612 | 20 AUXMEM.MISC.s 241 | Comment | 11 | | 0 | 00/EC74 | * JSR GSREAD:BCC loop 8613 | 20 AUXMEM.MISC.s 242 | Comment | 11 | | 0 | 00/EC74 | * 8614 | 20 AUXMEM.MISC.s 243 | Comment | 11 | | 0 | 00/EC74 | * A string is copied with: 8615 | 20 AUXMEM.MISC.s 244 | Comment | 11 | | 0 | 00/EC74 | * JSR GSINIT 8616 | 20 AUXMEM.MISC.s 245 | Comment | 11 | | 0 | 00/EC74 | * LDX #0 8617 | 20 AUXMEM.MISC.s 246 | Comment | 11 | | 0 | 00/EC74 | * loop 8618 | 20 AUXMEM.MISC.s 247 | Comment | 11 | | 0 | 00/EC74 | * JSR GSREAD:BCS done 8619 | 20 AUXMEM.MISC.s 248 | Comment | 11 | | 0 | 00/EC74 | * STA data,X 8620 | 20 AUXMEM.MISC.s 249 | Comment | 11 | | 0 | 00/EC74 | * INX:BNE loop 8621 | 20 AUXMEM.MISC.s 250 | Comment | 11 | | 0 | 00/EC74 | * done 8622 | 20 AUXMEM.MISC.s 251 | Comment | 11 | | 0 | 00/EC74 | * 8623 | 20 AUXMEM.MISC.s 252 | Code | 11 | | 2 | 00/EC74 : A9 00 | GSRDGO LDA #$00 ; Prepare to clear accumulator 8624 | 20 AUXMEM.MISC.s 253 | Code | 11 | | 2 | 00/EC76 : 85 E5 | GSREADLP STA {$E5} ; Update accumulator 8625 | 20 AUXMEM.MISC.s 254 | Code | 11 | | 2 | 00/EC78 : B1 F2 | LDA ({$F2}),Y ; Get current character 8626 | 20 AUXMEM.MISC.s 255 | Code | 11 | | 2 | 00/EC7A : C9 0D | CMP #$0D ; End of line? 8627 | 20 AUXMEM.MISC.s 256 | Code | 11 | | 2 | 00/EC7C : D0 11 | BNE GSREAD2 ; No, check character 8628 | 20 AUXMEM.MISC.s 257 | Code | 11 | | 2 | 00/EC7E : 24 E4 | BIT {$E4} 8629 | 20 AUXMEM.MISC.s 258 | Code | 11 | | 2 | 00/EC80 : 10 28 | BPL GSREADEND ; We aren't waiting for a closing quote 8630 | 20 AUXMEM.MISC.s 259 | Comment | 11 | | 0 | 00/EC82 | * ; End of line before closing quote 8631 | 20 AUXMEM.MISC.s 260 | Code | 11 | | 1 | 00/EC82 : 00 | ERRBADSTR BRK 8632 | 20 AUXMEM.MISC.s 261 | Data | 11 | | 1 | 00/EC83 : FD | DB $FD 8633 | 20 AUXMEM.MISC.s 262 | Data | 11 | | 10 | 00/EC84 : 42 61 64 20 | ASC 'Bad string' | | | | | | 73 74 72 69 | | | | | | | 6E 67 | 8634 | 20 AUXMEM.MISC.s 263 | Code | 11 | | 1 | 00/EC8E : 00 | BRK 8635 | 20 AUXMEM.MISC.s 264 | Empty | 11 | | 0 | 00/EC8F | 8636 | 20 AUXMEM.MISC.s 265 | Code | 11 | | 2 | 00/EC8F : C9 20 | GSREAD2 CMP #' ' 8637 | 20 AUXMEM.MISC.s 266 | Code | 11 | | 2 | 00/EC91 : 90 EF | BCC ERRBADSTR ; Embedded control char 8638 | 20 AUXMEM.MISC.s 267 | Code | 11 | | 2 | 00/EC93 : D0 06 | BNE GSREAD3 ; Not a space, process it 8639 | 20 AUXMEM.MISC.s 268 | Code | 11 | | 2 | 00/EC95 : 24 E4 | BIT {$E4} ; Can space terminate string? 8640 | 20 AUXMEM.MISC.s 269 | Code | 11 | | 2 | 00/EC97 : 30 3D | BMI GSREADCHAR ; We're waiting for a terminating quote 8641 | 20 AUXMEM.MISC.s 270 | Comment | 11 | | 0 | 00/EC99 | * ; so return the space character 8642 | 20 AUXMEM.MISC.s 271 | Code | 11 | | 2 | 00/EC99 : 50 0F | BVC GSREADEND ; Space is a terminator, finish 8643 | 20 AUXMEM.MISC.s 272 | Code | 11 | | 2 | 00/EC9B : C9 22 | GSREAD3 CMP #$22 ; Is it a quote? 8644 | 20 AUXMEM.MISC.s 273 | Code | 11 | | 2 | 00/EC9D : D0 10 | BNE GSREADESC ; Not quote, check for escapes 8645 | 20 AUXMEM.MISC.s 274 | Code | 11 | | 2 | 00/EC9F : 24 E4 | BIT {$E4} ; Was there an opening quote? 8646 | 20 AUXMEM.MISC.s 275 | Code | 11 | | 2 | 00/ECA1 : 10 33 | BPL GSREADCHAR ; Not waiting for a closing quote 8647 | 20 AUXMEM.MISC.s 276 | Code | 11 | | 1 | 00/ECA3 : C8 | INY ; Waiting for quote, check next character 8648 | 20 AUXMEM.MISC.s 277 | Code | 11 | | 2 | 00/ECA4 : B1 F2 | LDA ({$F2}),Y 8649 | 20 AUXMEM.MISC.s 278 | Code | 11 | | 2 | 00/ECA6 : C9 22 | CMP #$22 ; Is it another quote? 8650 | 20 AUXMEM.MISC.s 279 | Code | 11 | | 2 | 00/ECA8 : F0 2C | BEQ GSREADCHAR ; Quote-Quote, expand to single quote 8651 | 20 AUXMEM.MISC.s 280 | Comment | 11 | | 0 | 00/ECAA | * End of string 8652 | 20 AUXMEM.MISC.s 281 | Comment | 11 | | 0 | 00/ECAA | * Either closing quote, or a space seperator, or end of line 8653 | 20 AUXMEM.MISC.s 282 | Code | 11 | | 3 | 00/ECAA : 20 2F E6 | GSREADEND JSR SKIPSPC ; Skip any spaces to next word 8654 | 20 AUXMEM.MISC.s 283 | Code | 11 | | 1 | 00/ECAD : 38 | SEC ; SEC=end of string 8655 | 20 AUXMEM.MISC.s 284 | Code | 11 | | 1 | 00/ECAE : 60 | RTS ; and (OSLPTR),Y=>next word or end of line 8656 | 20 AUXMEM.MISC.s 285 | Comment | 11 | | 0 | 00/ECAF | * CS=end of string 8657 | 20 AUXMEM.MISC.s 286 | Comment | 11 | | 0 | 00/ECAF | * EQ=end of line 8658 | 20 AUXMEM.MISC.s 287 | Comment | 11 | | 0 | 00/ECAF | * NE=not end of line, more words follow 8659 | 20 AUXMEM.MISC.s 288 | Empty | 11 | | 0 | 00/ECAF | 8660 | 20 AUXMEM.MISC.s 289 | Code | 11 | | 2 | 00/ECAF : C9 7C | GSREADESC CMP #$7C ; Is it '|' escape character 8661 | 20 AUXMEM.MISC.s 290 | Code | 11 | | 2 | 00/ECB1 : D0 23 | BNE GSREADCHAR ; No, return as character 8662 | 20 AUXMEM.MISC.s 291 | Code | 11 | | 1 | 00/ECB3 : C8 | INY ; Step to next character 8663 | 20 AUXMEM.MISC.s 292 | Code | 11 | | 2 | 00/ECB4 : B1 F2 | LDA ({$F2}),Y 8664 | 20 AUXMEM.MISC.s 293 | Code | 11 | | 2 | 00/ECB6 : C9 7C | CMP #$7C 8665 | 20 AUXMEM.MISC.s 294 | Code | 11 | | 2 | 00/ECB8 : F0 1C | BEQ GSREADCHAR ; bar-bar expands to bar 8666 | 20 AUXMEM.MISC.s 295 | Code | 11 | | 2 | 00/ECBA : C9 22 | CMP #$22 8667 | 20 AUXMEM.MISC.s 296 | Code | 11 | | 2 | 00/ECBC : F0 18 | BEQ GSREADCHAR ; bar-quote expands to quote 8668 | 20 AUXMEM.MISC.s 297 | Code | 11 | | 2 | 00/ECBE : C9 21 | CMP #'!' ; Is it bar-pling? 8669 | 20 AUXMEM.MISC.s 298 | Code | 11 | | 2 | 00/ECC0 : D0 05 | BNE GSREAD5 ; No, check for bar-letter 8670 | 20 AUXMEM.MISC.s 299 | Code | 11 | | 1 | 00/ECC2 : C8 | INY ; Step past it 8671 | 20 AUXMEM.MISC.s 300 | Code | 11 | | 2 | 00/ECC3 : A9 80 | LDA #$80 ; Set bit 7 in accumulator 8672 | 20 AUXMEM.MISC.s 301 | Code | 11 | | 2 | 00/ECC5 : D0 AF | BNE GSREADLP ; Loop back to check next character(s) 8673 | 20 AUXMEM.MISC.s 302 | Empty | 11 | | 0 | 00/ECC7 | 8674 | 20 AUXMEM.MISC.s 303 | Code | 11 | | 2 | 00/ECC7 : C9 3F | GSREAD5 CMP #'?' ; Check for '?' 8675 | 20 AUXMEM.MISC.s 304 | Code | 11 | | 2 | 00/ECC9 : 90 B7 | BCC ERRBADSTR ; <'?', bad character 8676 | 20 AUXMEM.MISC.s 305 | Code | 11 | | 2 | 00/ECCB : F0 07 | BEQ GSREADDEL ; bar-query -> DEL 8677 | 20 AUXMEM.MISC.s 306 | Code | 11 | | 2 | 00/ECCD : 29 1F | AND #$1F ; Convert bar-letter to control code 8678 | 20 AUXMEM.MISC.s 307 | Code | 11 | | 3 | 00/ECCF : 2C 88 E8 | BIT SETV ; SEV=control character 8679 | 20 AUXMEM.MISC.s 308 | Code | 11 | | 2 | 00/ECD2 : 70 03 | BVS GSREADOK 8680 | 20 AUXMEM.MISC.s 309 | Code | 11 | | 2 | 00/ECD4 : A9 7F | GSREADDEL LDA #$7F 8681 | 20 AUXMEM.MISC.s 310 | Code | 11 | | 1 | 00/ECD6 : B8 | GSREADCHAR CLV ; CLV=not control character 8682 | 20 AUXMEM.MISC.s 311 | Code | 11 | | 1 | 00/ECD7 : C8 | GSREADOK INY ; Step to next character 8683 | 20 AUXMEM.MISC.s 312 | Code | 11 | | 2 | 00/ECD8 : 05 E5 | ORA {$E5} ; Add in any bit 7 from |! prefix 8684 | 20 AUXMEM.MISC.s 313 | Code | 11 | | 1 | 00/ECDA : 18 | CLC ; CLC=not end of string 8685 | 20 AUXMEM.MISC.s 314 | Code | 11 | | 1 | 00/ECDB : 60 | RTS 8686 | 20 AUXMEM.MISC.s 315 | Comment | 11 | | 0 | 00/ECDC | * CC=not end of string 8687 | 20 AUXMEM.MISC.s 316 | Comment | 11 | | 0 | 00/ECDC | * VS=control character 8688 | 20 AUXMEM.MISC.s 317 | Comment | 11 | | 0 | 00/ECDC | * VC=not control character 8689 | 20 AUXMEM.MISC.s 318 | Empty | 11 | | 0 | 00/ECDC | 8690 | 20 AUXMEM.MISC.s 319 | Empty | 11 | | 0 | 00/ECDC | 8691 | 20 AUXMEM.MISC.s 320 | Comment | 11 | | 0 | 00/ECDC | * Read a byte from sideways ROM 8692 | 20 AUXMEM.MISC.s 321 | Comment | 11 | | 0 | 00/ECDC | * On entry, Y=ROM to read from 8693 | 20 AUXMEM.MISC.s 322 | Comment | 11 | | 0 | 00/ECDC | * On exit, A=byte read, X=current ROM, Y=$00 8694 | 20 AUXMEM.MISC.s 323 | Code | 11 | | 2 | 00/ECDC : A5 F4 | RDROM LDA $F4 8695 | 20 AUXMEM.MISC.s 324 | Code | 11 | | 1 | 00/ECDE : 48 | PHA ; Save current ROM 8696 | 20 AUXMEM.MISC.s 325 | Code | 11 | | 1 | 00/ECDF : 98 | TYA 8697 | 20 AUXMEM.MISC.s 326 | Code | 11 | | 1 | 00/ECE0 : AA | TAX ; X=ROM to read from 8698 | 20 AUXMEM.MISC.s 327 | Code | 11 | | 3 | 00/ECE1 : 20 E9 EC | JSR ROMSELECT ; Page in the required ROM 8699 | 20 AUXMEM.MISC.s 328 | Code | 11 | | 2 | 00/ECE4 : A0 00 | LDY #$00 8700 | 20 AUXMEM.MISC.s 329 | Code | 11 | | 2 | 00/ECE6 : B1 F6 | LDA ($F6),Y ; Read the byte 8701 | 20 AUXMEM.MISC.s 330 | Code | 11 | | 1 | 00/ECE8 : FA | PLX 8702 | 20 AUXMEM.MISC.s 331 | Empty | 11 | | 0 | 00/ECE9 | 8703 | 20 AUXMEM.MISC.s 332 | Comment | 11 | | 0 | 00/ECE9 | * Select a sideways ROM 8704 | 20 AUXMEM.MISC.s 333 | Comment | 11 | | 0 | 00/ECE9 | * X=ROM to select 8705 | 20 AUXMEM.MISC.s 334 | Comment | 11 | | 0 | 00/ECE9 | * All registers must be preserved 8706 | 20 AUXMEM.MISC.s 335 | Empty | 11 | | 0 | 00/ECE9 | ROMSELECT 8707 | 20 AUXMEM.MISC.s 336 | Comment | 11 | | 0 | 00/ECE9 | * Insert code here for faking sideways ROMs by loading or otherwise 8708 | 20 AUXMEM.MISC.s 337 | Comment | 11 | | 0 | 00/ECE9 | * fetching code to $8000. All registers must be preserved. 8709 | 20 AUXMEM.MISC.s 338 | Code | 11 | | 1 | 00/ECE9 : 08 | _ROMSEL PHP 8710 | 20 AUXMEM.MISC.s 339 | Code | 11 | | 1 | 00/ECEA : 48 | PHA 8711 | 20 AUXMEM.MISC.s 340 | Code | 11 | | 1 | 00/ECEB : DA | PHX 8712 | 20 AUXMEM.MISC.s 341 | Code | 11 | | 1 | 00/ECEC : 5A | PHY 8713 | 20 AUXMEM.MISC.s 342 | Code | 11 | | 1 | 00/ECED : 78 | SEI 8714 | 20 AUXMEM.MISC.s 343 | Code | 11 | | 1 | 00/ECEE : 8A | TXA ; A=ROM to select 8715 | 20 AUXMEM.MISC.s 344 | Macro | 11 | | 0 | 00/ECEF | >>> XF2MAIN,SELECTROM 8716 | 20 AUXMEM.MISC.s 344 | Empty | 11 | | 0 | 00/ECEF | 8717 | 20 AUXMEM.MISC.s 344 | Empty | 11 | | 0 | 00/ECEF | 8718 | 20 AUXMEM.MISC.s 344 | Empty | 11 | | 0 | 00/ECEF | 8719 | 20 AUXMEM.MISC.s 344 | Empty | 11 | | 0 | 00/ECEF | 8720 | 20 AUXMEM.MISC.s 344 | Code | 11 | | 2 | 00/ECEF : A2 02 | LDX #<SELECTROM 8721 | 20 AUXMEM.MISC.s 344 | Code | 11 | | 3 | 00/ECF1 : 8E ED 03 | STX {$3ED} 8722 | 20 AUXMEM.MISC.s 344 | Code | 11 | | 2 | 00/ECF4 : A2 42 | LDX #>SELECTROM 8723 | 20 AUXMEM.MISC.s 344 | Code | 11 | | 3 | 00/ECF6 : 8E EE 03 | STX {$3EE} 8724 | 20 AUXMEM.MISC.s 344 | Code | 11 | | 1 | 00/ECF9 : 78 | SEI ; Disable IRQ before XFER 8725 | 20 AUXMEM.MISC.s 344 | Code | 11 | | 1 | 00/ECFA : BA | TSX 8726 | 20 AUXMEM.MISC.s 344 | Code | 11 | | 3 | 00/ECFB : 8E 01 01 | STX $0101 ; Save alt SP 8727 | 20 AUXMEM.MISC.s 344 | Code | 11 | | 3 | 00/ECFE : AE 00 01 | LDX $0100 ; Load main SP into X 8728 | 20 AUXMEM.MISC.s 344 | Code | 11 | | 1 | 00/ED01 : 18 | CLC ; Use main mem 8729 | 20 AUXMEM.MISC.s 344 | Code | 11 | | 1 | 00/ED02 : B8 | CLV ; Use main ZP and LC 8730 | 20 AUXMEM.MISC.s 344 | Code | 11 | | 3 | 00/ED03 : 4C 14 C3 | JMP {$C314} 8731 | 20 AUXMEM.MISC.s 345 | Macro | 11 | | 0 | 00/ED06 | ROMSELDONE >>> ENTAUX 8732 | 20 AUXMEM.MISC.s 345 | Code | 11 | | 3 | 00/ED06 : AE 01 01 | LDX $0101 ; Recover alt SP 8733 | 20 AUXMEM.MISC.s 345 | Code | 11 | | 1 | 00/ED09 : 9A | TXS 8734 | 20 AUXMEM.MISC.s 345 | Code | 11 | | 1 | 00/ED0A : 58 | CLI ; Re-enable IRQ after XFER 8735 | 20 AUXMEM.MISC.s 345 | Empty | 11 | | 0 | 00/ED0B | 8736 | 20 AUXMEM.MISC.s 345 | Empty | 11 | | 0 | 00/ED0B | 8737 | 20 AUXMEM.MISC.s 345 | Empty | 11 | | 0 | 00/ED0B | 8738 | 20 AUXMEM.MISC.s 345 | Empty | 11 | | 0 | 00/ED0B | 8739 | 20 AUXMEM.MISC.s 346 | Code | 11 | | 1 | 00/ED0B : 7A | PLY 8740 | 20 AUXMEM.MISC.s 347 | Code | 11 | | 1 | 00/ED0C : FA | PLX 8741 | 20 AUXMEM.MISC.s 348 | Code | 11 | | 1 | 00/ED0D : 68 | PLA 8742 | 20 AUXMEM.MISC.s 349 | Code | 11 | | 1 | 00/ED0E : 28 | PLP 8743 | 20 AUXMEM.MISC.s 350 | Code | 11 | | 2 | 00/ED0F : 86 F4 | _ROMSELOK STX $F4 ; Set Current ROM number 8744 | 20 AUXMEM.MISC.s 351 | Code | 11 | | 1 | 00/ED11 : 60 | RTS 8745 | 20 AUXMEM.MISC.s 352 | Empty | 11 | | 0 | 00/ED12 | 8746 | 20 AUXMEM.MISC.s 353 | Empty | 11 | | 0 | 00/ED12 | 8747 | 20 AUXMEM.MISC.s 354 | Empty | 11 | | 0 | 00/ED12 | ROMXX 8748 | 20 AUXMEM.MISC.s 355 | Comment | 11 | | 0 | 00/ED12 | * CPX $F8 8749 | 20 AUXMEM.MISC.s 356 | Comment | 11 | | 0 | 00/ED12 | * BEQ :ROMSELOK ; Already selected 8750 | 20 AUXMEM.MISC.s 357 | Comment | 11 | | 0 | 00/ED12 | * 8751 | 20 AUXMEM.MISC.s 358 | Comment | 11 | | 0 | 00/ED12 | ** Insert code here for faking sideways ROMs by loading or otherwise 8752 | 20 AUXMEM.MISC.s 359 | Comment | 11 | | 0 | 00/ED12 | ** fetching code to $8000. All registers must be preserved. 8753 | 20 AUXMEM.MISC.s 360 | Comment | 11 | | 0 | 00/ED12 | * CPX MAXROM 8754 | 20 AUXMEM.MISC.s 361 | Comment | 11 | | 0 | 00/ED12 | * BEQ :ROMSEL 8755 | 20 AUXMEM.MISC.s 362 | Comment | 11 | | 0 | 00/ED12 | * BCS :ROMSELOK ; Out of range, ignore 8756 | 20 AUXMEM.MISC.s 363 | Comment | 11 | | 0 | 00/ED12 | *:ROMSEL PHA 8757 | 20 AUXMEM.MISC.s 364 | Comment | 11 | | 0 | 00/ED12 | * PHX 8758 | 20 AUXMEM.MISC.s 365 | Comment | 11 | | 0 | 00/ED12 | * PHY 8759 | 20 AUXMEM.MISC.s 366 | Comment | 11 | | 0 | 00/ED12 | * 8760 | 20 AUXMEM.MISC.s 367 | Comment | 11 | | 0 | 00/ED12 | * LDA OSLPTR+0 8761 | 20 AUXMEM.MISC.s 368 | Comment | 11 | | 0 | 00/ED12 | * PHA 8762 | 20 AUXMEM.MISC.s 369 | Comment | 11 | | 0 | 00/ED12 | * LDA OSLPTR+1 8763 | 20 AUXMEM.MISC.s 370 | Comment | 11 | | 0 | 00/ED12 | * PHA 8764 | 20 AUXMEM.MISC.s 371 | Comment | 11 | | 0 | 00/ED12 | * 8765 | 20 AUXMEM.MISC.s 372 | Comment | 11 | | 0 | 00/ED12 | * TXA 8766 | 20 AUXMEM.MISC.s 373 | Comment | 11 | | 0 | 00/ED12 | * ASL A 8767 | 20 AUXMEM.MISC.s 374 | Comment | 11 | | 0 | 00/ED12 | * TAX 8768 | 20 AUXMEM.MISC.s 375 | Comment | 11 | | 0 | 00/ED12 | * LDA ROMTAB+0,X ; LSB of pointer to name 8769 | 20 AUXMEM.MISC.s 376 | Comment | 11 | | 0 | 00/ED12 | * STA OSFILECB+0 8770 | 20 AUXMEM.MISC.s 377 | Comment | 11 | | 0 | 00/ED12 | * LDA ROMTAB+1,X ; MSB of pointer to name 8771 | 20 AUXMEM.MISC.s 378 | Comment | 11 | | 0 | 00/ED12 | * STA OSFILECB+1 8772 | 20 AUXMEM.MISC.s 379 | Comment | 11 | | 0 | 00/ED12 | * 8773 | 20 AUXMEM.MISC.s 380 | Comment | 11 | | 0 | 00/ED12 | * LDX #<OSFILECB 8774 | 20 AUXMEM.MISC.s 381 | Comment | 11 | | 0 | 00/ED12 | * LDY #>OSFILECB 8775 | 20 AUXMEM.MISC.s 382 | Comment | 11 | | 0 | 00/ED12 | * LDA #$05 ; Means 'INFO' 8776 | 20 AUXMEM.MISC.s 383 | Comment | 11 | | 0 | 00/ED12 | * JSR OSFILE 8777 | 20 AUXMEM.MISC.s 384 | Comment | 11 | | 0 | 00/ED12 | * CMP #$01 8778 | 20 AUXMEM.MISC.s 385 | Comment | 11 | | 0 | 00/ED12 | * BNE :ROMNOTFND ; File not found 8779 | 20 AUXMEM.MISC.s 386 | Comment | 11 | | 0 | 00/ED12 | * 8780 | 20 AUXMEM.MISC.s 387 | Comment | 11 | | 0 | 00/ED12 | * STZ OSFILECB+2 ; Dest address $8000 8781 | 20 AUXMEM.MISC.s 388 | Comment | 11 | | 0 | 00/ED12 | * LDA #$80 8782 | 20 AUXMEM.MISC.s 389 | Comment | 11 | | 0 | 00/ED12 | * STA OSFILECB+3 8783 | 20 AUXMEM.MISC.s 390 | Comment | 11 | | 0 | 00/ED12 | * STZ OSFILECB+4 8784 | 20 AUXMEM.MISC.s 391 | Comment | 11 | | 0 | 00/ED12 | * STZ OSFILECB+5 8785 | 20 AUXMEM.MISC.s 392 | Comment | 11 | | 0 | 00/ED12 | * STZ OSFILECB+6 ; Load to specified address 8786 | 20 AUXMEM.MISC.s 393 | Comment | 11 | | 0 | 00/ED12 | * LDX #<OSFILECB 8787 | 20 AUXMEM.MISC.s 394 | Comment | 11 | | 0 | 00/ED12 | * LDY #>OSFILECB 8788 | 20 AUXMEM.MISC.s 395 | Comment | 11 | | 0 | 00/ED12 | * LDA #$FF ; Means 'LOAD' 8789 | 20 AUXMEM.MISC.s 396 | Comment | 11 | | 0 | 00/ED12 | * JSR OSFILE 8790 | 20 AUXMEM.MISC.s 397 | Comment | 11 | | 0 | 00/ED12 | *:ROMNOTFND 8791 | 20 AUXMEM.MISC.s 398 | Comment | 11 | | 0 | 00/ED12 | * PLA 8792 | 20 AUXMEM.MISC.s 399 | Comment | 11 | | 0 | 00/ED12 | * STA OSLPTR+1 8793 | 20 AUXMEM.MISC.s 400 | Comment | 11 | | 0 | 00/ED12 | * PLA 8794 | 20 AUXMEM.MISC.s 401 | Comment | 11 | | 0 | 00/ED12 | * STA OSLPTR+0 8795 | 20 AUXMEM.MISC.s 402 | Comment | 11 | | 0 | 00/ED12 | * PLY 8796 | 20 AUXMEM.MISC.s 403 | Comment | 11 | | 0 | 00/ED12 | * PLX 8797 | 20 AUXMEM.MISC.s 404 | Comment | 11 | | 0 | 00/ED12 | * PLA 8798 | 20 AUXMEM.MISC.s 405 | Comment | 11 | | 0 | 00/ED12 | * STX $F8 ; Set ROM loaded 8799 | 20 AUXMEM.MISC.s 406 | Comment | 11 | | 0 | 00/ED12 | *:ROMSELOK STX $F4 ; Set Current ROM number 8800 | 20 AUXMEM.MISC.s 407 | Code | 11 | | 1 | 00/ED12 : 60 | EVENT RTS 8801 | 20 AUXMEM.MISC.s 408 | Empty | 11 | | 0 | 00/ED13 | 8802 | 20 AUXMEM.MISC.s 409 | Comment | 11 | | 0 | 00/ED13 | *BASICROM ASC 'BASIC2.ROM' 8803 | 20 AUXMEM.MISC.s 410 | Comment | 11 | | 0 | 00/ED13 | * DB $0D,$00 8804 | 20 AUXMEM.MISC.s 411 | Comment | 11 | | 0 | 00/ED13 | * 8805 | 20 AUXMEM.MISC.s 412 | Comment | 11 | | 0 | 00/ED13 | *COMALROM ASC 'COMAL.ROM' 8806 | 20 AUXMEM.MISC.s 413 | Comment | 11 | | 0 | 00/ED13 | * DB $0D,$00 8807 | 20 AUXMEM.MISC.s 414 | Comment | 11 | | 0 | 00/ED13 | * 8808 | 20 AUXMEM.MISC.s 415 | Comment | 11 | | 0 | 00/ED13 | *LISPROM ASC 'LISP501.ROM' 8809 | 20 AUXMEM.MISC.s 416 | Comment | 11 | | 0 | 00/ED13 | * DB $0D,$00 8810 | 20 AUXMEM.MISC.s 417 | Comment | 11 | | 0 | 00/ED13 | * 8811 | 20 AUXMEM.MISC.s 418 | Comment | 11 | | 0 | 00/ED13 | *FORTHROM ASC 'FORTH103.ROM' 8812 | 20 AUXMEM.MISC.s 419 | Comment | 11 | | 0 | 00/ED13 | * DB $0D,$00 8813 | 20 AUXMEM.MISC.s 420 | Comment | 11 | | 0 | 00/ED13 | * 8814 | 20 AUXMEM.MISC.s 421 | Comment | 11 | | 0 | 00/ED13 | *PROLOGROM ASC 'MPROLOG310.ROM' 8815 | 20 AUXMEM.MISC.s 422 | Comment | 11 | | 0 | 00/ED13 | * DB $0D,$00 8816 | 20 AUXMEM.MISC.s 423 | Comment | 11 | | 0 | 00/ED13 | * 8817 | 20 AUXMEM.MISC.s 424 | Comment | 11 | | 0 | 00/ED13 | *BCPLROM ASC 'BCPL7.0.ROM' 8818 | 20 AUXMEM.MISC.s 425 | Comment | 11 | | 0 | 00/ED13 | * DB $0D,$00 8819 | 20 AUXMEM.MISC.s 426 | Comment | 11 | | 0 | 00/ED13 | * 8820 | 20 AUXMEM.MISC.s 427 | Comment | 11 | | 0 | 00/ED13 | *PASCROM1 ASC 'PASC.1.10.1.ROM' 8821 | 20 AUXMEM.MISC.s 428 | Comment | 11 | | 0 | 00/ED13 | * DB $0D,$00 8822 | 20 AUXMEM.MISC.s 429 | Comment | 11 | | 0 | 00/ED13 | * 8823 | 20 AUXMEM.MISC.s 430 | Comment | 11 | | 0 | 00/ED13 | *PASCROM2 ASC 'PASC.1.10.2.ROM' 8824 | 20 AUXMEM.MISC.s 431 | Comment | 11 | | 0 | 00/ED13 | * DB $0D,$00 8825 | 20 AUXMEM.MISC.s 432 | Comment | 11 | | 0 | 00/ED13 | * 8826 | 20 AUXMEM.MISC.s 433 | Empty | 11 | | 0 | 00/ED13 | 8827 | 20 AUXMEM.MISC.s 434 | Comment | 11 | | 0 | 00/ED13 | * Initialize ROMTAB according to user selection in menu 8828 | 20 AUXMEM.MISC.s 435 | Code | 11 | | 2 | 00/ED13 : 64 F9 | ROMINIT STZ {$F9} ; One sideways ROM only 8829 | 20 AUXMEM.MISC.s 436 | Code | 11 | | 3 | 00/ED15 : 8D 02 C0 | STA $C002 ; Read main mem 8830 | 20 AUXMEM.MISC.s 437 | Code | 11 | | 3 | 00/ED18 : AD A5 43 | LDA USERSEL 8831 | 20 AUXMEM.MISC.s 438 | Code | 11 | | 3 | 00/ED1B : 8D 03 C0 | STA $C003 ; Read aux mem 8832 | 20 AUXMEM.MISC.s 439 | Empty | 11 | | 0 | 00/ED1E | 8833 | 20 AUXMEM.MISC.s 440 | Code | 11 | | 2 | 00/ED1E : C9 06 | CMP #6 8834 | 20 AUXMEM.MISC.s 441 | Code | 11 | | 2 | 00/ED20 : D0 02 | BNE _X1 8835 | 20 AUXMEM.MISC.s 442 | Code | 11 | | 2 | 00/ED22 : E6 F9 | INC {$F9} 8836 | 20 AUXMEM.MISC.s 443 | Code | 11 | | 2 | 00/ED24 : C9 07 | _X1 CMP #7 8837 | 20 AUXMEM.MISC.s 444 | Code | 11 | | 2 | 00/ED26 : D0 02 | BNE _X2 8838 | 20 AUXMEM.MISC.s 445 | Code | 11 | | 2 | 00/ED28 : 85 F9 | STA {$F9} 8839 | 20 AUXMEM.MISC.s 446 | Code | 11 | | 1 | 00/ED2A : 60 | _X2 RTS 8840 | 20 AUXMEM.MISC.s 447 | Empty | 11 | | 0 | 00/ED2B | 8841 | 20 AUXMEM.MISC.s 448 | Comment | 11 | | 0 | 00/ED2B | * ASL ; x2 8842 | 20 AUXMEM.MISC.s 449 | Comment | 11 | | 0 | 00/ED2B | * CLC 8843 | 20 AUXMEM.MISC.s 450 | Comment | 11 | | 0 | 00/ED2B | * ADC #<ROMS 8844 | 20 AUXMEM.MISC.s 451 | Comment | 11 | | 0 | 00/ED2B | * STA OSLPTR+0 8845 | 20 AUXMEM.MISC.s 452 | Comment | 11 | | 0 | 00/ED2B | * LDA #>ROMS 8846 | 20 AUXMEM.MISC.s 453 | Comment | 11 | | 0 | 00/ED2B | * ADC #$00 8847 | 20 AUXMEM.MISC.s 454 | Comment | 11 | | 0 | 00/ED2B | * STA OSLPTR+1 8848 | 20 AUXMEM.MISC.s 455 | Comment | 11 | | 0 | 00/ED2B | * LDY #$00 8849 | 20 AUXMEM.MISC.s 456 | Comment | 11 | | 0 | 00/ED2B | * LDA (OSLPTR),Y 8850 | 20 AUXMEM.MISC.s 457 | Comment | 11 | | 0 | 00/ED2B | * STA ROMTAB+0 8851 | 20 AUXMEM.MISC.s 458 | Comment | 11 | | 0 | 00/ED2B | * INY 8852 | 20 AUXMEM.MISC.s 459 | Comment | 11 | | 0 | 00/ED2B | * LDA (OSLPTR),Y 8853 | 20 AUXMEM.MISC.s 460 | Comment | 11 | | 0 | 00/ED2B | * STA ROMTAB+1 8854 | 20 AUXMEM.MISC.s 461 | Comment | 11 | | 0 | 00/ED2B | * STA $C002 ; Read main mem 8855 | 20 AUXMEM.MISC.s 462 | Comment | 11 | | 0 | 00/ED2B | * LDA USERSEL 8856 | 20 AUXMEM.MISC.s 463 | Comment | 11 | | 0 | 00/ED2B | * STA $C003 ; Read aux mem 8857 | 20 AUXMEM.MISC.s 464 | Comment | 11 | | 0 | 00/ED2B | * CMP #6 ; Menu entry 7 has two ROMs 8858 | 20 AUXMEM.MISC.s 465 | Comment | 11 | | 0 | 00/ED2B | * BNE :S1 8859 | 20 AUXMEM.MISC.s 466 | Comment | 11 | | 0 | 00/ED2B | * LDA #<PASCROM2 8860 | 20 AUXMEM.MISC.s 467 | Comment | 11 | | 0 | 00/ED2B | * STA ROMTAB+2 8861 | 20 AUXMEM.MISC.s 468 | Comment | 11 | | 0 | 00/ED2B | * LDA #>PASCROM2 8862 | 20 AUXMEM.MISC.s 469 | Comment | 11 | | 0 | 00/ED2B | * STA ROMTAB+3 8863 | 20 AUXMEM.MISC.s 470 | Comment | 11 | | 0 | 00/ED2B | * INC MAXROM ; Two ROMs 8864 | 20 AUXMEM.MISC.s 471 | Comment | 11 | | 0 | 00/ED2B | * BRA :DONE 8865 | 20 AUXMEM.MISC.s 472 | Comment | 11 | | 0 | 00/ED2B | *:S1 CMP #7 ; Menu entry 8 8866 | 20 AUXMEM.MISC.s 473 | Comment | 11 | | 0 | 00/ED2B | * BNE :DONE 8867 | 20 AUXMEM.MISC.s 474 | Comment | 11 | | 0 | 00/ED2B | * LDA #<PASCROM1 8868 | 20 AUXMEM.MISC.s 475 | Comment | 11 | | 0 | 00/ED2B | * STA ROMTAB+0 8869 | 20 AUXMEM.MISC.s 476 | Comment | 11 | | 0 | 00/ED2B | * LDA #>PASCROM1 8870 | 20 AUXMEM.MISC.s 477 | Comment | 11 | | 0 | 00/ED2B | * STA ROMTAB+1 8871 | 20 AUXMEM.MISC.s 478 | Comment | 11 | | 0 | 00/ED2B | * LDA #<PASCROM2 8872 | 20 AUXMEM.MISC.s 479 | Comment | 11 | | 0 | 00/ED2B | * STA ROMTAB+2 8873 | 20 AUXMEM.MISC.s 480 | Comment | 11 | | 0 | 00/ED2B | * LDA #>PASCROM2 8874 | 20 AUXMEM.MISC.s 481 | Comment | 11 | | 0 | 00/ED2B | * STA ROMTAB+3 8875 | 20 AUXMEM.MISC.s 482 | Comment | 11 | | 0 | 00/ED2B | * LDA #<LISPROM 8876 | 20 AUXMEM.MISC.s 483 | Comment | 11 | | 0 | 00/ED2B | * STA ROMTAB+4 8877 | 20 AUXMEM.MISC.s 484 | Comment | 11 | | 0 | 00/ED2B | * LDA #>LISPROM 8878 | 20 AUXMEM.MISC.s 485 | Comment | 11 | | 0 | 00/ED2B | * STA ROMTAB+5 8879 | 20 AUXMEM.MISC.s 486 | Comment | 11 | | 0 | 00/ED2B | * LDA #<FORTHROM 8880 | 20 AUXMEM.MISC.s 487 | Comment | 11 | | 0 | 00/ED2B | * STA ROMTAB+6 8881 | 20 AUXMEM.MISC.s 488 | Comment | 11 | | 0 | 00/ED2B | * LDA #>FORTHROM 8882 | 20 AUXMEM.MISC.s 489 | Comment | 11 | | 0 | 00/ED2B | * STA ROMTAB+7 8883 | 20 AUXMEM.MISC.s 490 | Comment | 11 | | 0 | 00/ED2B | * LDA #<PROLOGROM 8884 | 20 AUXMEM.MISC.s 491 | Comment | 11 | | 0 | 00/ED2B | * STA ROMTAB+8 8885 | 20 AUXMEM.MISC.s 492 | Comment | 11 | | 0 | 00/ED2B | * LDA #>PROLOGROM 8886 | 20 AUXMEM.MISC.s 493 | Comment | 11 | | 0 | 00/ED2B | * STA ROMTAB+9 8887 | 20 AUXMEM.MISC.s 494 | Comment | 11 | | 0 | 00/ED2B | * LDA #<BCPLROM 8888 | 20 AUXMEM.MISC.s 495 | Comment | 11 | | 0 | 00/ED2B | * STA ROMTAB+10 8889 | 20 AUXMEM.MISC.s 496 | Comment | 11 | | 0 | 00/ED2B | * LDA #>BCPLROM 8890 | 20 AUXMEM.MISC.s 497 | Comment | 11 | | 0 | 00/ED2B | * STA ROMTAB+11 8891 | 20 AUXMEM.MISC.s 498 | Comment | 11 | | 0 | 00/ED2B | * LDA #<COMALROM 8892 | 20 AUXMEM.MISC.s 499 | Comment | 11 | | 0 | 00/ED2B | * STA ROMTAB+12 8893 | 20 AUXMEM.MISC.s 500 | Comment | 11 | | 0 | 00/ED2B | * LDA #>COMALROM 8894 | 20 AUXMEM.MISC.s 501 | Comment | 11 | | 0 | 00/ED2B | * STA ROMTAB+13 8895 | 20 AUXMEM.MISC.s 502 | Comment | 11 | | 0 | 00/ED2B | * LDA #<BASICROM 8896 | 20 AUXMEM.MISC.s 503 | Comment | 11 | | 0 | 00/ED2B | * STA ROMTAB+14 8897 | 20 AUXMEM.MISC.s 504 | Comment | 11 | | 0 | 00/ED2B | * LDA #>BASICROM 8898 | 20 AUXMEM.MISC.s 505 | Comment | 11 | | 0 | 00/ED2B | * STA ROMTAB+15 8899 | 20 AUXMEM.MISC.s 506 | Comment | 11 | | 0 | 00/ED2B | * LDA #7 ; 8 sideways ROMs 8900 | 20 AUXMEM.MISC.s 507 | Comment | 11 | | 0 | 00/ED2B | * STA MAXROM 8901 | 20 AUXMEM.MISC.s 508 | Comment | 11 | | 0 | 00/ED2B | *:DONE LDA #$FF 8902 | 20 AUXMEM.MISC.s 509 | Comment | 11 | | 0 | 00/ED2B | * STA $F8 ; Force ROM to load 8903 | 20 AUXMEM.MISC.s 510 | Comment | 11 | | 0 | 00/ED2B | * RTS 8904 | 20 AUXMEM.MISC.s 511 | Comment | 11 | | 0 | 00/ED2B | * 8905 | 20 AUXMEM.MISC.s 512 | Comment | 11 | | 0 | 00/ED2B | ** Active sideways ROMs 8906 | 20 AUXMEM.MISC.s 513 | Comment | 11 | | 0 | 00/ED2B | *ROMTAB DW $0000 ; ROM0 8907 | 20 AUXMEM.MISC.s 514 | Comment | 11 | | 0 | 00/ED2B | * DW $0000 ; ROM1 8908 | 20 AUXMEM.MISC.s 515 | Comment | 11 | | 0 | 00/ED2B | * DW $0000 ; ROM2 8909 | 20 AUXMEM.MISC.s 516 | Comment | 11 | | 0 | 00/ED2B | * DW $0000 ; ROM3 8910 | 20 AUXMEM.MISC.s 517 | Comment | 11 | | 0 | 00/ED2B | * DW $0000 ; ROM4 8911 | 20 AUXMEM.MISC.s 518 | Comment | 11 | | 0 | 00/ED2B | * DW $0000 ; ROM5 8912 | 20 AUXMEM.MISC.s 519 | Comment | 11 | | 0 | 00/ED2B | * DW $0000 ; ROM6 8913 | 20 AUXMEM.MISC.s 520 | Comment | 11 | | 0 | 00/ED2B | * DW $0000 ; ROM7 8914 | 20 AUXMEM.MISC.s 521 | Comment | 11 | | 0 | 00/ED2B | * DW $0000 ; ROM8 8915 | 20 AUXMEM.MISC.s 522 | Comment | 11 | | 0 | 00/ED2B | * DW $0000 ; ROM9 8916 | 20 AUXMEM.MISC.s 523 | Comment | 11 | | 0 | 00/ED2B | * DW $0000 ; ROMA 8917 | 20 AUXMEM.MISC.s 524 | Comment | 11 | | 0 | 00/ED2B | * DW $0000 ; ROMB 8918 | 20 AUXMEM.MISC.s 525 | Comment | 11 | | 0 | 00/ED2B | * DW $0000 ; ROMC 8919 | 20 AUXMEM.MISC.s 526 | Comment | 11 | | 0 | 00/ED2B | * DW $0000 ; ROMD 8920 | 20 AUXMEM.MISC.s 527 | Comment | 11 | | 0 | 00/ED2B | * DW $0000 ; ROME 8921 | 20 AUXMEM.MISC.s 528 | Comment | 11 | | 0 | 00/ED2B | * DW $0000 ; ROMF 8922 | 20 AUXMEM.MISC.s 529 | Comment | 11 | | 0 | 00/ED2B | * 8923 | 20 AUXMEM.MISC.s 530 | Comment | 11 | | 0 | 00/ED2B | ** ROM filenames in same order as in the menu 8924 | 20 AUXMEM.MISC.s 531 | Comment | 11 | | 0 | 00/ED2B | ** ROMMENU copies these to ROMTAB upon user selection 8925 | 20 AUXMEM.MISC.s 532 | Comment | 11 | | 0 | 00/ED2B | *ROMS DW BASICROM 8926 | 20 AUXMEM.MISC.s 533 | Comment | 11 | | 0 | 00/ED2B | * DW COMALROM 8927 | 20 AUXMEM.MISC.s 534 | Comment | 11 | | 0 | 00/ED2B | * DW LISPROM 8928 | 20 AUXMEM.MISC.s 535 | Comment | 11 | | 0 | 00/ED2B | * DW FORTHROM 8929 | 20 AUXMEM.MISC.s 536 | Comment | 11 | | 0 | 00/ED2B | * DW PROLOGROM 8930 | 20 AUXMEM.MISC.s 537 | Comment | 11 | | 0 | 00/ED2B | * DW BCPLROM 8931 | 20 AUXMEM.MISC.s 538 | Comment | 11 | | 0 | 00/ED2B | * DW PASCROM1 8932 | 20 AUXMEM.MISC.s 539 | Comment | 11 | | 0 | 00/ED2B | * DW PASCROM2 8933 | 20 AUXMEM.MISC.s 540 | Empty | 11 | | 0 | 00/ED2B | 8934 | 20 AUXMEM.MISC.s 541 | Comment | 11 | | 0 | 00/ED2B | *EVENT LDA #<OSEVENM 8935 | 20 AUXMEM.MISC.s 542 | Comment | 11 | | 0 | 00/ED2B | * LDY #>OSEVENM 8936 | 20 AUXMEM.MISC.s 543 | Comment | 11 | | 0 | 00/ED2B | * JMP PRSTR 8937 | 20 AUXMEM.MISC.s 544 | Comment | 11 | | 0 | 00/ED2B | *OSEVENM ASC 'OSEVEN.' 8938 | 20 AUXMEM.MISC.s 545 | Comment | 11 | | 0 | 00/ED2B | * DB $00 8939 | 20 AUXMEM.MISC.s 546 | Empty | 11 | | 0 | 00/ED2B | 8940 | 20 AUXMEM.MISC.s 547 | Empty | 11 | | 0 | 00/ED2B | 8941 | 20 AUXMEM.MISC.s 548 | Comment | 11 | | 0 | 00/ED2B | ********************************************************** 8942 | 20 AUXMEM.MISC.s 549 | Comment | 11 | | 0 | 00/ED2B | * Interrupt Handlers, MOS redirection vectors etc. 8943 | 20 AUXMEM.MISC.s 550 | Comment | 11 | | 0 | 00/ED2B | ********************************************************** 8944 | 20 AUXMEM.MISC.s 551 | Empty | 11 | | 0 | 00/ED2B | 8945 | 20 AUXMEM.MISC.s 552 | Comment | 11 | | 0 | 00/ED2B | * Invoked from GSBRK in main memory. On IIgs only. 8946 | 20 AUXMEM.MISC.s 553 | Macro | 11 | | 0 | 00/ED2B | GSBRKAUX >>> IENTAUX ; IENTAUX does not do CLI 8947 | 20 AUXMEM.MISC.s 553 | Code | 11 | | 3 | 00/ED2B : AE 01 01 | LDX $0101 ; Recover alt SP 8948 | 20 AUXMEM.MISC.s 553 | Code | 11 | | 1 | 00/ED2E : 9A | TXS 8949 | 20 AUXMEM.MISC.s 553 | Empty | 11 | | 0 | 00/ED2F | 8950 | 20 AUXMEM.MISC.s 553 | Empty | 11 | | 0 | 00/ED2F | 8951 | 20 AUXMEM.MISC.s 553 | Empty | 11 | | 0 | 00/ED2F | 8952 | 20 AUXMEM.MISC.s 553 | Empty | 11 | | 0 | 00/ED2F | 8953 | 20 AUXMEM.MISC.s 554 | Comment | 11 | | 0 | 00/ED2F | * Continue into IRQBRKHDLR 8954 | 20 AUXMEM.MISC.s 555 | Comment | 11 | | 0 | 00/ED2F | * TO DO: Check, IENTAUX modifies X 8955 | 20 AUXMEM.MISC.s 556 | Empty | 11 | | 0 | 00/ED2F | 8956 | 20 AUXMEM.MISC.s 557 | Comment | 11 | | 0 | 00/ED2F | * IRQ/BRK handler 8957 | 20 AUXMEM.MISC.s 558 | Code | 11 | | 1 | 00/ED2F : 48 | IRQBRKHDLR PHA 8958 | 20 AUXMEM.MISC.s 559 | Comment | 11 | | 0 | 00/ED30 | * Mustn't enable IRQs within the IRQ handler 8959 | 20 AUXMEM.MISC.s 560 | Comment | 11 | | 0 | 00/ED30 | * Do not use WRTMAIN/WRTAUX macros 8960 | 20 AUXMEM.MISC.s 561 | Code | 11 | | 3 | 00/ED30 : 8D 04 C0 | STA $C004 ; Write to main memory 8961 | 20 AUXMEM.MISC.s 562 | Code | 11 | | 2 | 00/ED33 : 85 45 | STA $45 ; $45=A for ProDOS IRQ handlers 8962 | 20 AUXMEM.MISC.s 563 | Code | 11 | | 3 | 00/ED35 : 8D 05 C0 | STA $C005 ; Write to aux memory 8963 | 20 AUXMEM.MISC.s 564 | Empty | 11 | | 0 | 00/ED38 | 8964 | 20 AUXMEM.MISC.s 565 | Code | 11 | | 1 | 00/ED38 : 8A | TXA 8965 | 20 AUXMEM.MISC.s 566 | Code | 11 | | 1 | 00/ED39 : 48 | PHA 8966 | 20 AUXMEM.MISC.s 567 | Code | 11 | | 1 | 00/ED3A : D8 | CLD 8967 | 20 AUXMEM.MISC.s 568 | Code | 11 | | 1 | 00/ED3B : BA | TSX 8968 | 20 AUXMEM.MISC.s 569 | Code | 11 | | 3 | 00/ED3C : BD 03 01 | LDA $103,X ; Get PSW from stack 8969 | 20 AUXMEM.MISC.s 570 | Code | 11 | | 2 | 00/ED3F : 29 10 | AND #$10 8970 | 20 AUXMEM.MISC.s 571 | Code | 11 | | 2 | 00/ED41 : F0 28 | BEQ _IRQ ; IRQ 8971 | 20 AUXMEM.MISC.s 572 | Code | 11 | | 1 | 00/ED43 : 38 | SEC 8972 | 20 AUXMEM.MISC.s 573 | Code | 11 | | 3 | 00/ED44 : BD 04 01 | LDA $0104,X 8973 | 20 AUXMEM.MISC.s 574 | Code | 11 | | 2 | 00/ED47 : E9 01 | SBC #$01 8974 | 20 AUXMEM.MISC.s 575 | Code | 11 | | 2 | 00/ED49 : 85 FD | STA {$FD}+0 ; FAULT=>error block after BRK 8975 | 20 AUXMEM.MISC.s 576 | Code | 11 | | 3 | 00/ED4B : BD 05 01 | LDA $0105,X 8976 | 20 AUXMEM.MISC.s 577 | Code | 11 | | 2 | 00/ED4E : E9 00 | SBC #$00 8977 | 20 AUXMEM.MISC.s 578 | Code | 11 | | 2 | 00/ED50 : 85 FE | STA {$FD}+1 8978 | 20 AUXMEM.MISC.s 579 | Empty | 11 | | 0 | 00/ED52 | 8979 | 20 AUXMEM.MISC.s 580 | Code | 11 | | 2 | 00/ED52 : A5 F4 | LDA $F4 ; Get current ROM 8980 | 20 AUXMEM.MISC.s 581 | Code | 11 | | 3 | 00/ED54 : 8D 4A 02 | STA {$190}+$BA ; Set ROM at last BRK 8981 | 20 AUXMEM.MISC.s 582 | Code | 11 | | 2 | 00/ED57 : 86 F0 | STX {{$EF}+1} ; Pass stack pointer 8982 | 20 AUXMEM.MISC.s 583 | Code | 11 | | 2 | 00/ED59 : A9 06 | LDA #$06 ; Service Call 6 = BRK occured 8983 | 20 AUXMEM.MISC.s 584 | Code | 11 | | 3 | 00/ED5B : 20 EC D0 | JSR SERVICE 8984 | 20 AUXMEM.MISC.s 585 | Code | 11 | | 3 | 00/ED5E : AE 8C 02 | LDX {$190}+$FC ; Get current language 8985 | 20 AUXMEM.MISC.s 586 | Code | 11 | | 3 | 00/ED61 : 20 E9 EC | JSR ROMSELECT ; Bring it into memory 8986 | 20 AUXMEM.MISC.s 587 | Empty | 11 | | 0 | 00/ED64 | 8987 | 20 AUXMEM.MISC.s 588 | Code | 11 | | 1 | 00/ED64 : 68 | PLA 8988 | 20 AUXMEM.MISC.s 589 | Code | 11 | | 1 | 00/ED65 : AA | TAX 8989 | 20 AUXMEM.MISC.s 590 | Code | 11 | | 1 | 00/ED66 : 68 | PLA 8990 | 20 AUXMEM.MISC.s 591 | Code | 11 | | 1 | 00/ED67 : 58 | CLI 8991 | 20 AUXMEM.MISC.s 592 | Code | 11 | | 3 | 00/ED68 : 6C 02 02 | JMP ({$202}) ; Pass on to BRK handler 8992 | 20 AUXMEM.MISC.s 593 | Empty | 11 | | 0 | 00/ED6B | 8993 | 20 AUXMEM.MISC.s 594 | Macro | 11 | | 0 | 00/ED6B | _IRQ >>> XF2MAIN,A2IRQ ; Bounce to Apple IRQ handler 8994 | 20 AUXMEM.MISC.s 594 | Empty | 11 | | 0 | 00/ED6B | 8995 | 20 AUXMEM.MISC.s 594 | Empty | 11 | | 0 | 00/ED6B | 8996 | 20 AUXMEM.MISC.s 594 | Empty | 11 | | 0 | 00/ED6B | 8997 | 20 AUXMEM.MISC.s 594 | Empty | 11 | | 0 | 00/ED6B | 8998 | 20 AUXMEM.MISC.s 594 | Code | 11 | | 2 | 00/ED6B : A2 A6 | LDX #<A2IRQ 8999 | 20 AUXMEM.MISC.s 594 | Code | 11 | | 3 | 00/ED6D : 8E ED 03 | STX {$3ED} 9000 | 20 AUXMEM.MISC.s 594 | Code | 11 | | 2 | 00/ED70 : A2 43 | LDX #>A2IRQ 9001 | 20 AUXMEM.MISC.s 594 | Code | 11 | | 3 | 00/ED72 : 8E EE 03 | STX {$3EE} 9002 | 20 AUXMEM.MISC.s 594 | Code | 11 | | 1 | 00/ED75 : 78 | SEI ; Disable IRQ before XFER 9003 | 20 AUXMEM.MISC.s 594 | Code | 11 | | 1 | 00/ED76 : BA | TSX 9004 | 20 AUXMEM.MISC.s 594 | Code | 11 | | 3 | 00/ED77 : 8E 01 01 | STX $0101 ; Save alt SP 9005 | 20 AUXMEM.MISC.s 594 | Code | 11 | | 3 | 00/ED7A : AE 00 01 | LDX $0100 ; Load main SP into X 9006 | 20 AUXMEM.MISC.s 594 | Code | 11 | | 1 | 00/ED7D : 18 | CLC ; Use main mem 9007 | 20 AUXMEM.MISC.s 594 | Code | 11 | | 1 | 00/ED7E : B8 | CLV ; Use main ZP and LC 9008 | 20 AUXMEM.MISC.s 594 | Code | 11 | | 3 | 00/ED7F : 4C 14 C3 | JMP {$C314} 9009 | 20 AUXMEM.MISC.s 595 | Empty | 11 | | 0 | 00/ED82 | IRQBRKRET 9010 | 20 AUXMEM.MISC.s 596 | Macro | 11 | | 0 | 00/ED82 | >>> IENTAUX ; IENTAUX does not do CLI 9011 | 20 AUXMEM.MISC.s 596 | Code | 11 | | 3 | 00/ED82 : AE 01 01 | LDX $0101 ; Recover alt SP 9012 | 20 AUXMEM.MISC.s 596 | Code | 11 | | 1 | 00/ED85 : 9A | TXS 9013 | 20 AUXMEM.MISC.s 596 | Empty | 11 | | 0 | 00/ED86 | 9014 | 20 AUXMEM.MISC.s 596 | Empty | 11 | | 0 | 00/ED86 | 9015 | 20 AUXMEM.MISC.s 596 | Empty | 11 | | 0 | 00/ED86 | 9016 | 20 AUXMEM.MISC.s 596 | Empty | 11 | | 0 | 00/ED86 | 9017 | 20 AUXMEM.MISC.s 597 | Code | 11 | | 1 | 00/ED86 : 68 | PLA ; TODO: Pass on to IRQ1V 9018 | 20 AUXMEM.MISC.s 598 | Code | 11 | | 1 | 00/ED87 : AA | TAX 9019 | 20 AUXMEM.MISC.s 599 | Code | 11 | | 1 | 00/ED88 : 68 | PLA 9020 | 20 AUXMEM.MISC.s 600 | Code | 11 | | 1 | 00/ED89 : 40 | NULLRTI RTI 9021 | 20 AUXMEM.MISC.s 601 | Empty | 11 | | 0 | 00/ED8A | 9022 | 20 AUXMEM.MISC.s 602 | Code | 11 | | 2 | 00/ED8A : A0 01 | PRERR LDY #$01 9023 | 20 AUXMEM.MISC.s 603 | Code | 11 | | 2 | 00/ED8C : B1 FD | PRERRLP LDA ({$FD}),Y 9024 | 20 AUXMEM.MISC.s 604 | Code | 11 | | 2 | 00/ED8E : F0 06 | BEQ PRERR1 9025 | 20 AUXMEM.MISC.s 605 | Code | 11 | | 3 | 00/ED90 : 20 EE FF | JSR OSWRCH 9026 | 20 AUXMEM.MISC.s 606 | Code | 11 | | 1 | 00/ED93 : C8 | INY 9027 | 20 AUXMEM.MISC.s 607 | Code | 11 | | 2 | 00/ED94 : D0 F6 | BNE PRERRLP 9028 | 20 AUXMEM.MISC.s 608 | Empty | 11 | | 0 | 00/ED96 | NULLRTS 9029 | 20 AUXMEM.MISC.s 609 | Code | 11 | | 1 | 00/ED96 : 60 | PRERR1 RTS 9030 | 20 AUXMEM.MISC.s 610 | Empty | 11 | | 0 | 00/ED97 | 9031 | 20 AUXMEM.MISC.s 611 | Code | 11 | | 2 | 00/ED97 : A9 AA | MOSBRKHDLR LDA #<MSGBRK 9032 | 20 AUXMEM.MISC.s 612 | Code | 11 | | 2 | 00/ED99 : A0 ED | LDY #>MSGBRK 9033 | 20 AUXMEM.MISC.s 613 | Code | 11 | | 3 | 00/ED9B : 20 EB EB | JSR PRSTR 9034 | 20 AUXMEM.MISC.s 614 | Code | 11 | | 3 | 00/ED9E : 20 8A ED | JSR PRERR 9035 | 20 AUXMEM.MISC.s 615 | Code | 11 | | 3 | 00/EDA1 : 20 E7 FF | JSR OSNEWL 9036 | 20 AUXMEM.MISC.s 616 | Code | 11 | | 3 | 00/EDA4 : 20 E7 FF | JSR OSNEWL 9037 | 20 AUXMEM.MISC.s 617 | Code | 11 | | 3 | 00/EDA7 : 4C A7 ED | STOP JMP STOP ; Cannot return from a BRK 9038 | 20 AUXMEM.MISC.s 618 | Empty | 11 | | 0 | 00/EDAA | 9039 | 20 AUXMEM.MISC.s 619 | Data | 11 | | 1 | 00/EDAA : 0D | MSGBRK DB $0D 9040 | 20 AUXMEM.MISC.s 620 | Data | 11 | | 7 | 00/EDAB : 45 52 52 4F | ASC 'ERROR: ' | | | | | | 52 3A 20 | 9041 | 20 AUXMEM.MISC.s 621 | Data | 11 | | 1 | 00/EDB2 : 00 | DB $00 9042 | 20 AUXMEM.MISC.s 622 | Empty | 11 | | 0 | 00/EDB3 | 9043 | 20 AUXMEM.MISC.s 623 | Empty | 11 | | 0 | 00/EDB3 | 9044 | 20 AUXMEM.MISC.s 624 | Comment | 11 | | 0 | 00/EDB3 | * Default page 2 contents 9045 | 20 AUXMEM.MISC.s 625 | Data | 11 | | 2 | 00/EDB3 : 96 ED | DEFVEC DW NULLRTS ; $200 USERV 9046 | 20 AUXMEM.MISC.s 626 | Data | 11 | | 2 | 00/EDB5 : 97 ED | DW MOSBRKHDLR ; $202 BRKV 9047 | 20 AUXMEM.MISC.s 627 | Data | 11 | | 2 | 00/EDB7 : 89 ED | DW NULLRTI ; $204 IRQ1V 9048 | 20 AUXMEM.MISC.s 628 | Data | 11 | | 2 | 00/EDB9 : 89 ED | DW NULLRTI ; $206 IRQ2V 9049 | 20 AUXMEM.MISC.s 629 | Data | 11 | | 2 | 00/EDBB : F7 E4 | DW CLIHND ; $208 CLIV 9050 | 20 AUXMEM.MISC.s 630 | Data | 11 | | 2 | 00/EDBD : 27 E8 | DW BYTEHND ; $20A BYTEV 9051 | 20 AUXMEM.MISC.s 631 | Data | 11 | | 2 | 00/EDBF : 0C E8 | DW WORDHND ; $20C WORDV 9052 | 20 AUXMEM.MISC.s 632 | Data | 11 | | 2 | 00/EDC1 : B4 E9 | DW WRCHHND ; $20E WRCHV 9053 | 20 AUXMEM.MISC.s 633 | Data | 11 | | 2 | 00/EDC3 : E6 E9 | DW RDCHHND ; $210 RDCHV 9054 | 20 AUXMEM.MISC.s 634 | Data | 11 | | 2 | 00/EDC5 : F5 DB | DW FILEHND ; $212 FILEV 9055 | 20 AUXMEM.MISC.s 635 | Data | 11 | | 2 | 00/EDC7 : 2B DB | DW ARGSHND ; $214 ARGSV 9056 | 20 AUXMEM.MISC.s 636 | Data | 11 | | 2 | 00/EDC9 : FC DA | DW BGETHND ; $216 BGETV 9057 | 20 AUXMEM.MISC.s 637 | Data | 11 | | 2 | 00/EDCB : D5 DA | DW BPUTHND ; $218 BPUTV 9058 | 20 AUXMEM.MISC.s 638 | Data | 11 | | 2 | 00/EDCD : C6 DA | DW GBPBHND ; $21A GBPBV 9059 | 20 AUXMEM.MISC.s 639 | Data | 11 | | 2 | 00/EDCF : 7D DA | DW FINDHND ; $21C FINDV 9060 | 20 AUXMEM.MISC.s 640 | Data | 11 | | 2 | 00/EDD1 : AE DC | DW FSCHND ; $21E FSCV 9061 | 20 AUXMEM.MISC.s 641 | Data | 11 | | 2 | 00/EDD3 : 96 ED | DW NULLRTS ; $220 EVENTV 9062 | 20 AUXMEM.MISC.s 642 | Data | 11 | | 2 | 00/EDD5 : 96 ED | DW NULLRTS ; $222 9063 | 20 AUXMEM.MISC.s 643 | Data | 11 | | 2 | 00/EDD7 : 96 ED | DW NULLRTS ; $224 9064 | 20 AUXMEM.MISC.s 644 | Data | 11 | | 2 | 00/EDD9 : 96 ED | DW NULLRTS ; $226 9065 | 20 AUXMEM.MISC.s 645 | Data | 11 | | 2 | 00/EDDB : 96 ED | DW NULLRTS ; $228 9066 | 20 AUXMEM.MISC.s 646 | Data | 11 | | 2 | 00/EDDD : 96 ED | DW NULLRTS ; $22A 9067 | 20 AUXMEM.MISC.s 647 | Data | 11 | | 2 | 00/EDDF : 96 ED | DW NULLRTS ; $22C 9068 | 20 AUXMEM.MISC.s 648 | Data | 11 | | 2 | 00/EDE1 : 96 ED | DW NULLRTS ; $22E 9069 | 20 AUXMEM.MISC.s 649 | Data | 11 | | 2 | 00/EDE3 : 96 ED | DW NULLRTS ; $230 SPARE1V 9070 | 20 AUXMEM.MISC.s 650 | Data | 11 | | 2 | 00/EDE5 : 96 ED | DW NULLRTS ; $232 SPARE2V 9071 | 20 AUXMEM.MISC.s 651 | Data | 11 | | 2 | 00/EDE7 : 96 ED | DW NULLRTS ; $234 SPARE3V 9072 | 20 AUXMEM.MISC.s 652 | Empty | 11 | | 0 | 00/EDE9 | ENDVEC 9073 | 20 AUXMEM.MISC.s 653 | Empty | 11 | | 0 | 00/EDE9 | 9074 | 20 AUXMEM.MISC.s 654 | Comment | 11 | | 0 | 00/EDE9 | * 9075 | 20 AUXMEM.MISC.s 655 | Comment | 11 | | 0 | 00/EDE9 | * Acorn MOS entry points at the top of RAM 9076 | 20 AUXMEM.MISC.s 656 | Comment | 11 | | 0 | 00/EDE9 | * Copied from loaded code to high memory 9077 | 20 AUXMEM.MISC.s 657 | Comment | 11 | | 0 | 00/EDE9 | * 9078 | 20 AUXMEM.MISC.s 658 | Empty | 11 | | 0 | 00/EDE9 | 9079 | 20 AUXMEM.MISC.s 659 | Comment | 11 | | 0 | 00/EDE9 | * Base of API entries here in loaded code 9080 | 20 AUXMEM.MISC.s 660 | Empty | 11 | | 0 | 00/EDE9 | MOSVEC 9081 | 20 AUXMEM.MISC.s 661 | Comment | 11 | | 0 | 00/EDE9 | * Real base of API entries in real memory 9082 | 20 AUXMEM.MISC.s 662 | Equivalence | 11 | | 0 | 00/EDE9 | MOSAPI EQU $FF95 9083 | 20 AUXMEM.MISC.s 663 | Directive | 11 | | 0 | 00/EDE9 | ORG {$FF95} 9084 | 20 AUXMEM.MISC.s 664 | Empty | 11 | | 0 | 00/FF95 | 9085 | 20 AUXMEM.MISC.s 665 | Comment | 11 | | 0 | 00/FF95 | * OPTIONAL ENTRIES 9086 | 20 AUXMEM.MISC.s 666 | Comment | 11 | | 0 | 00/FF95 | * ---------------- 9087 | 20 AUXMEM.MISC.s 667 | Code | 11 | | 3 | 00/FF95 : 4C EC D0 | OSSERV JMP SERVICE ; FF95 OSSERV 9088 | 20 AUXMEM.MISC.s 668 | Code | 11 | | 3 | 00/FF98 : 4C 96 ED | OSCOLD JMP NULLRTS ; FF98 OSCOLD 9089 | 20 AUXMEM.MISC.s 669 | Code | 11 | | 3 | 00/FF9B : 4C EA EB | OSPRSTR JMP OUTSTR ; FF9B OSPRSTR 9090 | 20 AUXMEM.MISC.s 670 | Code | 11 | | 3 | 00/FF9E : 4C A4 E5 | OSSCANDEC JMP SCANDEC ; FF9E SCANDEC 9091 | 20 AUXMEM.MISC.s 671 | Code | 11 | | 3 | 00/FFA1 : 4C EE E5 | OSSCANHEX JMP SCANHEX ; FFA1 SCANHEX 9092 | 20 AUXMEM.MISC.s 672 | Code | 11 | | 3 | 00/FFA4 : 4C 96 ED | OSFFA4 JMP NULLRTS ; FFA4 (DISKACC) 9093 | 20 AUXMEM.MISC.s 673 | Code | 11 | | 3 | 00/FFA7 : 4C 96 ED | OSFFA7 JMP NULLRTS ; FFA7 (DISKCCP) 9094 | 20 AUXMEM.MISC.s 674 | Code | 11 | | 3 | 00/FFAA : 4C 0F EC | PRHEX JMP OUTHEX ; FFAA PRHEX 9095 | 20 AUXMEM.MISC.s 675 | Code | 11 | | 3 | 00/FFAD : 4C 0A EC | PR2HEX JMP OUT2HEX ; FFAD PR2HEX 9096 | 20 AUXMEM.MISC.s 676 | Code | 11 | | 3 | 00/FFB0 : 4C 2C EC | OSFFB0 JMP PRINTDEC ; FFB0 (USERINT) 9097 | 20 AUXMEM.MISC.s 677 | Code | 11 | | 3 | 00/FFB3 : 4C 96 ED | OSWRRM JMP NULLRTS ; FFB3 OSWRRM 9098 | 20 AUXMEM.MISC.s 678 | Empty | 11 | | 0 | 00/FFB6 | 9099 | 20 AUXMEM.MISC.s 679 | Comment | 11 | | 0 | 00/FFB6 | * COMPULSARY ENTRIES 9100 | 20 AUXMEM.MISC.s 680 | Comment | 11 | | 0 | 00/FFB6 | * ------------------ 9101 | 20 AUXMEM.MISC.s 681 | Data | 11 | | 1 | 00/FFB6 : 36 | VECSIZE DB ENDVEC-DEFVEC ; FFB6 VECSIZE Size of vectors 9102 | 20 AUXMEM.MISC.s 682 | Data | 11 | | 2 | 00/FFB7 : B3 ED | VECBASE DW DEFVEC ; FFB7 VECBASE Base of default vectors 9103 | 20 AUXMEM.MISC.s 683 | Code | 11 | | 3 | 00/FFB9 : 4C DC EC | OSRDRM JMP RDROM ; FFB9 OSRDRM Read byte from paged ROM 9104 | 20 AUXMEM.MISC.s 684 | Code | 11 | | 3 | 00/FFBC : 4C E1 D1 | OSCHROUT JMP OUTCHAR ; FFBC CHROUT Send char to VDU driver 9105 | 20 AUXMEM.MISC.s 685 | Code | 11 | | 3 | 00/FFBF : 4C 12 ED | OSEVEN JMP EVENT ; FFBF OSEVEN Signal an event 9106 | 20 AUXMEM.MISC.s 686 | Code | 11 | | 3 | 00/FFC2 : 4C 63 EC | GSINIT JMP GSINTGO ; FFC2 GSINIT Init string reading 9107 | 20 AUXMEM.MISC.s 687 | Code | 11 | | 3 | 00/FFC5 : 4C 74 EC | GSREAD JMP GSRDGO ; FFC5 GSREAD Parse general string 9108 | 20 AUXMEM.MISC.s 688 | Code | 11 | | 3 | 00/FFC8 : 4C B4 E9 | NVWRCH JMP WRCHHND ; FFC8 NVWRCH Nonvectored WRCH 9109 | 20 AUXMEM.MISC.s 689 | Code | 11 | | 3 | 00/FFCB : 4C E6 E9 | NVRDCH JMP RDCHHND ; FFCB NVRDCH Nonvectored RDCH 9110 | 20 AUXMEM.MISC.s 690 | Code | 11 | | 3 | 00/FFCE : 6C 1C 02 | OSFIND JMP ({$21C}) ; FFCE OSFIND 9111 | 20 AUXMEM.MISC.s 691 | Code | 11 | | 3 | 00/FFD1 : 6C 1A 02 | OSGBPB JMP ({$21A}) ; FFD1 OSGBPB 9112 | 20 AUXMEM.MISC.s 692 | Code | 11 | | 3 | 00/FFD4 : 6C 18 02 | OSBPUT JMP ({$218}) ; FFD4 OSBPUT 9113 | 20 AUXMEM.MISC.s 693 | Code | 11 | | 3 | 00/FFD7 : 6C 16 02 | OSBGET JMP ({$216}) ; FFD7 OSBGET 9114 | 20 AUXMEM.MISC.s 694 | Code | 11 | | 3 | 00/FFDA : 6C 14 02 | OSARGS JMP ({$214}) ; FFDA OSARGS 9115 | 20 AUXMEM.MISC.s 695 | Code | 11 | | 3 | 00/FFDD : 6C 12 02 | OSFILE JMP ({$212}) ; FFDD OSFILE 9116 | 20 AUXMEM.MISC.s 696 | Code | 11 | | 3 | 00/FFE0 : 6C 10 02 | OSRDCH JMP ({$210}) ; FFE0 OSRDCH 9117 | 20 AUXMEM.MISC.s 697 | Code | 11 | | 2 | 00/FFE3 : C9 0D | OSASCI CMP #$0D ; FFE3 OSASCI 9118 | 20 AUXMEM.MISC.s 698 | Code | 11 | | 2 | 00/FFE5 : D0 07 | BNE OSWRCH 9119 | 20 AUXMEM.MISC.s 699 | Code | 11 | | 2 | 00/FFE7 : A9 0A | OSNEWL LDA #$0A ; FFE7 OSNEWL 9120 | 20 AUXMEM.MISC.s 700 | Code | 11 | | 3 | 00/FFE9 : 20 EE FF | JSR OSWRCH 9121 | 20 AUXMEM.MISC.s 701 | Code | 11 | | 2 | 00/FFEC : A9 0D | OSWRCR LDA #$0D ; FFEC OSWRCR 9122 | 20 AUXMEM.MISC.s 702 | Code | 11 | | 3 | 00/FFEE : 6C 0E 02 | OSWRCH JMP ({$20E}) ; FFEE OSWRCH 9123 | 20 AUXMEM.MISC.s 703 | Code | 11 | | 3 | 00/FFF1 : 6C 0C 02 | OSWORD JMP ({$20C}) ; FFF1 OSWORD 9124 | 20 AUXMEM.MISC.s 704 | Code | 11 | | 3 | 00/FFF4 : 6C 0A 02 | OSBYTE JMP ({$20A}) ; FFF4 OSBYTE 9125 | 20 AUXMEM.MISC.s 705 | Code | 11 | | 3 | 00/FFF7 : 6C 08 02 | OSCLI JMP ({$208}) ; FFF7 OSCLI 9126 | 20 AUXMEM.MISC.s 706 | Data | 11 | | 2 | 00/FFFA : 89 ED | NMIVEC DW NULLRTI ; FFFA NMIVEC 9127 | 20 AUXMEM.MISC.s 707 | Data | 11 | | 2 | 00/FFFC : A7 ED | RSTVEC DW STOP ; FFFC RSTVEC 9128 | 20 AUXMEM.MISC.s 708 | Empty | 11 | | 0 | 00/FFFE | IRQVEC 9129 | 20 AUXMEM.MISC.s 709 | Empty | 11 | | 0 | 00/FFFE | 9130 | 20 AUXMEM.MISC.s 710 | Comment | 11 | | 0 | 00/FFFE | * Assembler doesn't like running up to $FFFF, so we bodge a bit 9131 | 20 AUXMEM.MISC.s 711 | Empty | 11 | | 0 | 00/FFFE | MOSEND 9132 | 20 AUXMEM.MISC.s 712 | Directive | 11 | | 0 | 00/FFFE | ORG MOSEND-{$FF95}+MOSVEC 9133 | 20 AUXMEM.MISC.s 713 | Data | 11 | | 2 | 00/EE52 : 2F ED | DW IRQBRKHDLR ; FFFE IRQVEC 9134 | 20 AUXMEM.MISC.s 714 | Empty | 11 | | 0 | 00/EE54 | MOSVEND 9135 | 20 AUXMEM.MISC.s 715 | Empty | 11 | | 0 | 00/EE54 | 9136 | 20 AUXMEM.MISC.s 716 | Comment | 11 | | 0 | 00/EE54 | * Buffer for one 512 byte disk block in aux mem 9137 | 20 AUXMEM.MISC.s 717 | Data | 11 | | 13 | 00/EE54 : 2A 2A 45 4E | AUXBLK ASC '**ENDOFCODE**' | | | | | | 44 4F 46 43 | | | | | | | 4F 44 45 2A | | | | | | | 2A | 9138 | 20 AUXMEM.MISC.s 718 | Data | 11 | | 499 | 00/EE61 : 00 00 00 00 | DS $200-13 | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 00 | | | | | | | 00 00 00 | 9139 | 20 AUXMEM.MISC.s 719 | Empty | 11 | | 0 | 00/F054 | 9140 | 20 AUXMEM.MISC.s 720 | Empty | 11 | | 0 | 00/F054 | 9141 | 20 AUXMEM.MISC.s 721 | Empty | 11 | | 0 | 00/F054 | 9142 | 20 AUXMEM.MISC.s 722 | Empty | 11 | | 0 | 00/F054 | 9143 | 1 applecorn.s 208 | Empty | 11 | | 0 | 00/F054 | 9144 | 1 applecorn.s 209 | Comment | 11 | | 0 | 00/F054 | * Automatically save the object file: 9145 | 1 applecorn.s 210 | Directive | 11 | | 0 | 00/F054 | SAV APPLECORN 9146 | 1 applecorn.s 211 | Empty | 11 | | 0 | 00/F054 | 9147 | 1 applecorn.s 212 | Empty | 11 | | 0 | 00/F054 | 9148 | 1 applecorn.s 213 | Empty | 11 | | 0 | 00/F054 | 9149 | 1 applecorn.s 214 | Empty | 11 | | 0 | 00/F054 | 9150 | 1 applecorn.s 215 | Empty | 11 | | 0 | 00/F054 | 9151 | 1 applecorn.s 216 | Empty | 11 | | 0 | 00/F054 | 9152 | 1 applecorn.s 217 | Empty | 11 | | 0 | 00/F054 | 9153 | 1 applecorn.s 218 | Empty | 11 | | 0 | 00/F054 | 9154 | 1 applecorn.s 219 | Empty | 11 | | 0 | 00/F054 | 9155 | 1 applecorn.s 220 | Empty | 11 | | 0 | 00/F054 | 9156 | 1 applecorn.s 221 | Empty | 11 | | 0 | 00/F054 | 9157 | 1 applecorn.s 222 | Empty | 11 | | 0 | 00/F054 | 9158 | 1 applecorn.s 223 | Empty | 11 | | 0 | 00/F054 | 9159 | 1 applecorn.s 224 | Empty | 11 | | 0 | 00/F054 | 9160 | 1 applecorn.s 225 | Empty | 11 | | 0 | 00/F054 | 9161 | 1 applecorn.s 226 | Empty | 11 | | 0 | 00/F054 | 9162 | 1 applecorn.s 227 | Empty | 11 | | 0 | 00/F054 | 9163 | 1 applecorn.s 228 | Empty | 11 | | 0 | 00/F054 | 9164 | 1 applecorn.s 229 | Empty | 11 | | 0 | 00/F054 | 9165 | 1 applecorn.s 230 | Empty | 11 | | 0 | 00/F054 | 9166 | 1 applecorn.s 231 | Empty | 11 | | 0 | 00/F054 | 9167 | 1 applecorn.s 232 | Empty | 11 | | 0 | 00/F054 | 9168 | 1 applecorn.s 233 | Empty | 11 | | 0 | 00/F054 | 9169 | 1 applecorn.s 234 | Empty | 11 | | 0 | 00/F054 | 9170 | 1 applecorn.s 235 | Empty | 11 | | 0 | 00/F054 | 9171 | 1 applecorn.s 236 | Empty | 11 | | 0 | 00/F054 | 9172 | 1 applecorn.s 237 | Empty | 11 | | 0 | 00/F054 | 9173 | 1 applecorn.s 238 | Empty | 11 | | 0 | 00/F054 | 9174 | 1 applecorn.s 239 | Empty | 11 | | 0 | 00/F054 | 9175 | 1 applecorn.s 240 | Empty | 11 | | 0 | 00/F054 | ------+---------------------------+-------------+----+---------+------+-----------------------+-------------------------------------------------------------------