|
eCFFF = $cfff ;(0000)
getadr = $b7f7 ;(0000)
eBBD4 = $bbd4 ;(0000)
eBBCA = $bbca ;(0000)
mov2f = $bbc7 ;(0000)
negop = $bfb4 ;(0000)
e03A9 = $03a9 ;(0000)
e3FA9 = $3fa9 ;(0000)
e07A9 = $07a9 ;(0000)
movfm = $bba2 ;(0000)
eB79E = $b79e ;(0000)
e0330 = $0330 ;(0000)
e0332 = $0332 ;(0000)
e032C = $032c ;(0000)
e0328 = $0328 ;(0000)
e032A = $032a ;(0000)
e0324 = $0324 ;(0000)
e0326 = $0326 ;(0000)
e0320 = $0320 ;(0000)
e0322 = $0322 ;(0000)
strout = $ab1e ;(0000) output string (ptr in a/y)
e031C = $031c ;(0000)
e031E = $031e ;(0000)
BRKVEC = $0318 ;(0000) Kernal BRK Ptr
e031A = $031a ;(0000)
IRQVEC = $0314 ;(0000) Kernal IRQ Ptr
NMIVEC = $0316 ;(0000) Kernal NMI Ptr
e0315 = $0315 ;(0000)
e0310 = $0310 ;(0000)
e0311 = $0311 ;(0000)
e0312 = $0312 ;(0000)
fdivt = $bb0f ;(0000)
e030F = $030f ;(0000)
e030C = $030c ;(0000)
e030D = $030d ;(0000)
e030E = $030e ;(0000)
synerr = $af08 ;(0000)
fdiv = $bb07 ;(0000)
e0300 = $0300 ;(0000)
eAEFD = $aefd ;(0000)
mldvex = $bad4 ;(0000)
eBAB9 = $bab9 ;(0000)
e02A9 = $02a9 ;(0000)
e06A9 = $06a9 ;(0000)
e02A5 = $02a5 ;(0000)
e02A6 = $02a6 ;(0000)
e02A4 = $02a4 ;(0000)
frestr = $b6a3 ;(0000)
e02A1 = $02a1 ;(0000)
e02A2 = $02a2 ;(0000)
e02A0 = $02a0 ;(0000)
e02A3 = $02a3 ;(0000)
e029D = $029d ;(0000)
e029E = $029e ;(0000)
e029C = $029c ;(0000)
e029F = $029f ;(0000)
e0298 = $0298 ;(0000)
e029B = $029b ;(0000)
e0299 = $0299 ;(0000)
e029A = $029a ;(0000)
e0294 = $0294 ;(0000)
e0297 = $0297 ;(0000)
e0296 = $0296 ;(0000)
e0295 = $0295 ;(0000)
e0291 = $0291 ;(0000)
e0290 = $0290 ;(0000)
e0292 = $0292 ;(0000)
e0293 = $0293 ;(0000)
eAE91 = $ae91 ;(0000)
stxpt = $a68e ;(0000)
e028F = $028f ;(0000)
e028C = $028c ;(0000)
e028D = $028d ;(0000)
e028E = $028e ;(0000)
e0289 = $0289 ;(0000)
e028B = $028b ;(0000)
e0288 = $0288 ;(0000)
e028A = $028a ;(0000)
e0286 = $0286 ;(0000)
e0287 = $0287 ;(0000)
e0285 = $0285 ;(0000)
e0284 = $0284 ;(0000)
e0282 = $0282 ;(0000)
e0283 = $0283 ;(0000)
e0281 = $0281 ;(0000)
eA67A = $a67a ;(0000)
e0278 = $0278 ;(0000)
eA677 = $a677 ;(0000)
e0277 = $0277 ;(0000)
e0276 = $0276 ;(0000)
e026D = $026d ;(0000)
eA663 = $a663 ;(0000)
e0263 = $0263 ;(0000)
e0259 = $0259 ;(0000)
eA650 = $a650 ;(0000)
eA644 = $a644 ;(0000)
fmult = $ba28 ;(0000)
e0200 = $0200 ;(0000)
e01FD = $01fd ;(0000)
e01FC = $01fc ;(0000)
eBDCD = $bdcd ;(0000)
e05A9 = $05a9 ;(0000)
e09A9 = $09a9 ;(0000)
frmevl = $ad9e ;(0000)
frmnum = $ad8a ;(0000)
linkprg = $a533 ;(0000)
eA52A = $a52a ;(0000)
eDD0D = $dd0d ;(0000)
eDD0E = $dd0e ;(0000)
eDD0F = $dd0f ;(0000)
eDD04 = $dd04 ;(0000)
eDD05 = $dd05 ;(0000)
eDD06 = $dd06 ;(0000)
eDD07 = $dd07 ;(0000)
e0104 = $0104 ;(0000)
__STACK__ = $0100 ;(0000) CPU Stack
CIA2 = $dd00 ;(0000) Complex Adapter Interface 2
ROBUF = $00f9 ;(0000) RS232 Output Buffer Pointer.
zpF8 = $00f8 ;(0000)
KEYTAB = $00f5 ;(0000) Vector: Current Keyboard decoding Table. ($EB81)
RIBUF = $00f7 ;(0000) RS232 Input Buffer Pointer.
zpF4 = $00f4 ;(0000)
USER = $00f3 ;(0000) Pointer: Current Colour RAM Location.
zpF1 = $00f1 ;(0000)
eB0E6 = $b0e6 ;(0000)
INSRT = $00d8 ;(0000) Count of number of inserts outstanding.
LDTB1 = $00d9 ;(0000) Screen Line link Table/Editor temporaries. High Byte of Line Screen Memory Location.
QTSW = $00d4 ;(0000) Flag: Editor in Quote Mode $00 = Not.
LNMX = $00d5 ;(0000) Current logical Line length: 39 or 79.
TBLX = $00d6 ;(0000) Current Screen Line number of Cursor.
SCHAR = $00d7 ;(0000) Screen value of current Input Character/Last Character Output.
eB8D7 = $b8d7 ;(0000)
CRSW = $00d0 ;(0000) Flag: Input from Screen = $03
PNTR = $00d3 ;(0000) Cursor Column on current Line
PNT = $00d1 ;(0000) Pointer: Current Screen Line Address.
BLNSW = $00cc ;(0000) Flag: Cursor blink $00 = Enabled
BLNCT = $00cd ;(0000) Timer: Count down for Cursor blink toggle.
GDBLN = $00ce ;(0000) Character under Cursor while Cursor Inverted.
BLNON = $00cf ;(0000) Flag: Cursor Status $00 = Off
int = $bccc ;(0000)
INDX = $00c8 ;(0000) Pointer: End of Line for Input (Used to suppress trailing spaces).
SFDX = $00cb ;(0000) Flag: Print shifted Characters.
LXSP = $00c9 ;(0000) Cursor X/Y (Line/Column) position at start of Input.
LSTX = $00c5 ;(0000) Matrix value of last Key pressed No Key = $40.
NDX = $00c6 ;(0000) Number of Characters in Keyboard Buffer queue.
RVS = $00c7 ;(0000) Flag: Reverse On/Off On = $01
zpC4 = $00c4 ;(0000)
CAS1 = $00c0 ;(0000) Tape Motor Switch.
STAL = $00c1 ;(0000) Start Address for LOAD and Cassette Write.
MEMUSS = $00c3 ;(0000) Pointer: Type 3 Tape LOAD and general use.
ROPRTY = $00bd ;(0000) RS232 Output Parity/Tape Byte to be Input or Output.
FSBLK = $00be ;(0000) Tape Input/Output Block count.
MYCH = $00bf ;(0000) Serial Word Buffer.
zpBC = $00bc ;(0000)
LA = $00b8 ;(0000) Current File - Logical File number.
SA = $00b9 ;(0000) Current File - Secondary Address.
FA = $00ba ;(0000) Current File - First Address (Device number).
FNADR = $00bb ;(0000) Pointer: Current File name Address.
BITTS = $00b4 ;(0000) RS232 Write bit count/Tape Read timing Flag.
NXTBIT = $00b5 ;(0000) RS232 Next Bit to send/Tape Read - End of Tape.
RODATA = $00b6 ;(0000) RS232 Output Byte Buffer/Tape Read Error Flag.
FNLEN = $00b7 ;(0000) Number of Characters in Filename.
CMPO = $00b0 ;(0000) Tape timing Constants.
TAPE1 = $00b2 ;(0000) Pointer: Start Address of Tape Buffer ($033C).
SAL = $00ac ;(0000) Pointer: Tape Buffer/Screen scrolling.
EAL = $00ae ;(0000) Tape End Address/End of Program.
BITC1 = $00a8 ;(0000) RS232 Input Bit count/Tape temporary.
RINONE = $00a9 ;(0000) RS232 Flag: Start Bit check/Tape temporary.
RIDATA = $00aa ;(0000) RS232 Input Byte Buffer/Tape temporary.
RIPRTY = $00ab ;(0000) RS232 Input parity/Tape temporary.
e10A9 = $10a9 ;(0000)
e04A9 = $04a9 ;(0000)
e80A9 = $80a9 ;(0000)
e08A9 = $08a9 ;(0000)
TBTCNT = $00a4 ;(0000) Pulse Counter Tape Read or Write/Serial Bus shift Counter.
CNTDN = $00a5 ;(0000) Tape Synchronising count down.
BUFPNT = $00a6 ;(0000) Pointer: Tape I/O buffer.
INBIT = $00a7 ;(0000) RS232 temporary for received Bit/Tape temporary.
TSFCNT = $00a3 ;(0000) Bit Counter Tape Read or Write/Serial Bus EOI (End Of Input) Flag.
TIME = $00a0 ;(0000) Real-time jiffy Clock (Updated by IRQ Interrupt approx. every 1/60 of Second); Update Routine: UDTIMK ($F69B).
DPSW = $009c ;(0000) Flag: Byte received from Tape.
MSGFLG = $009d ;(0000) Flag: $00 = Program mode: Suppress Error Messages
PTR1 = $009e ;(0000) Tape Error log pass 1.
PTR2 = $009f ;(0000) Tape Error log pass 2.
LDTND = $0098 ;(0000) Number of Open Files/Index to File Table.
DFLTN = $0099 ;(0000) Default Input Device (0).
DFLTO = $009a ;(0000) Default Output Device (3).
PRTY = $009b ;(0000) Parity of Byte Output to Tape.
C3PO = $0094 ;(0000) Flag: Serial Bus - Output Character buffered.
BSOUR = $0095 ;(0000) Buffered Character for Serial Bus.
SYNO = $0096 ;(0000) Cassette Sync. number.
TEMPY = $0097 ;(0000) Temporary storage of Y Register during RS232 fetch.
STATUS = $0090 ;(0000) Kernal I/O Status Word ST.
STKEY = $0091 ;(0000) Flag: $7F = STOP key.
SVXT = $0092 ;(0000) Timing Constant for Tape.
VERCKK = $0093 ;(0000) Flag: 0 = Load
CHRGOT = $0079 ;(0000) Entry to Get same Byte again.
TXTPTR = $007a ;(0000) Pointer: Current Byte of BASIC Text.
ready = $a474 ;(0000)
CHRGET = $0073 ;(0000) basic chrget
FACOV = $0070 ;(0000) FAC low-order rounding.
FBUFPT = $0071 ;(0000) Pointer: Used during CRUNCH/ASCII conversion.
ARGSGN = $006e ;(0000) AFAC Sign.
ARISGN = $006f ;(0000) Sign of result of Arithmetic Evaluation.
BITS = $0068 ;(0000) Bit Overflow Area during normalisation Routine.
AFAC = $0069 ;(0000) Auxiliary Floating point Accumulator.
FACSGN = $0066 ;(0000) FAC Sign.
SGNFLG = $0067 ;(0000) Pointer: Series Evaluation Constant.
fadd = $b867 ;(0000)
zp64 = $0064 ;(0000)
zp65 = $0065 ;(0000)
FAC = $0061 ;(0000) Main Floating point Accumulator.
FACHO = $0062 ;(0000) FAC Mantissa.
JMPER = $0054 ;(0000) Jump Vector used in Function Evaluation - JMP followed by Address ($4C
FOUR6 = $0053 ;(0000) Length of String Variable during Garbege collection.
fsub = $b850 ;(0000)
eB853 = $b853 ;(0000)
FORPNT = $0049 ;(0000) Pointer: Index Variable for FOR/NEXT loop.
faddh = $b849 ;(0000)
zp38 = $0038 ;(0000)
eA43A = $a43a ;(0000)
MEMSIZ = $0037 ;(0000) Pointer: Highest Address available to BASIC ($A000).
error = $a437 ;(0000)
zp34 = $0034 ;(0000)
FRETOP = $0033 ;(0000) Pointer: Bottom of String space.
VARTAB = $002d ;(0000) Pointer: Start of BASIC Variables.
zp2C = $002c ;(0000)
TXTTAB = $002b ;(0000) Pointer: Start of BASIC Text Area ($0801).
sign = $bc2b ;(0000)
INDEX1 = $0022 ;(0000) First Utility Pointer.
VIC_CHRSCRN = $d018 ;(0000) char and screen base
VIC_IRR = $d019 ;(0000) interupt request register
_FILTVOL_ = $d418 ;(0000) Filter/Volume
zp18 = $0018 ;(0000)
VIC_XSCROLL = $d016 ;(0000) X-Scroll/Colmode
TEMPPT = $0016 ;(0000) Pointer: Temporary String Stack.
LINNUM = $0014 ;(0000) Temporary: Integer value.
VIC_YSCROLL = $d011 ;(0000) Y-Scroll/Gfxmode
VIC_CURLINE = $d012 ;(0000) current Rasterline
TANSGN = $0012 ;(0000) Flag: TAN sign/Comparative result.
CHANNL = $0013 ;(0000) File number of current Input Device.
movaf = $bc0c ;(0000)
eBC0F = $bc0f ;(0000)
eDC0D = $dc0d ;(0000)
eDC0F = $dc0f ;(0000)
eDC0E = $dc0e ;(0000)
VERCK = $000a ;(0000) Flag: 0=Load 1=Verify.
reason = $a408 ;(0000)
e2009 = $2009 ;(0000)
ADRAY2 = $0005 ;(0000) Jump Vector: Convert Integer in (A/Y) to Floating point in (FAC); ($B391).
INTEGR = $0007 ;(0000) Temporary Integer during OR/AND.
zp04 = $0004 ;(0000)
eDC07 = $dc07 ;(0000)
eDC06 = $dc06 ;(0000)
eDC04 = $dc04 ;(0000)
eDC05 = $dc05 ;(0000)
__CPUIO0__ = $0000 ;(0000) Cpu-Port Data-Direction
__CPUIO1__ = $0001 ;(0000) Cpu-Port Data
TEMP = $0002 ;(0000) Unused. Free for user programs.
__CIA1__ = $dc00 ;(0000) Complex Interface Adapter 1
ADRAY1 = $0003 ;(0000) Jump Vector: Convert FAC to Integer in (A/Y)($B1AA).
BASIC = $a000 ;(0000) Basic ROM
e8000 = $8000 ;(0000)
e8003 = $8003 ;(0000)
e8002 = $8002 ;(0000)
eA002 = $a002 ;(0000)
*= $E000 ;(e000)
;------------------------------------------------------------------------
;IO Kernal ROM
;------------------------------------------------------------------------
sta JMPER+$0002 ;(e000 85 56) Jump Vector used in Function Evaluation - JMP followed by Address ($4C
;IO Kernal ROM
;------------------------------------------------------------------------
jsr eBC0F ;(e002 20 0F BC)
lda FAC ;(e005 A5 61) Main Floating point Accumulator.
cmp #$88 ;(e007 C9 88)
bcc iE00E ;(e009 90 03)
iE00B: jsr mldvex ;(e00b 20 D4 BA)
iE00E: jsr int ;(e00e 20 CC BC)
lda INTEGR ;(e011 A5 07) Temporary Integer during OR/AND.
clc ;(e013 18)
adc #$81 ;(e014 69 81)
beq iE00B ;(e016 F0 F3)
sec ;(e018 38)
sbc #$01 ;(e019 E9 01)
pha ;(e01b 48)
ldx #$05 ;(e01c A2 05)
iE01E: lda AFAC,X ;(e01e B5 69) Auxiliary Floating point Accumulator.
ldy FAC,X ;(e020 B4 61) Main Floating point Accumulator.
sta FAC,X ;(e022 95 61) Main Floating point Accumulator.
sty AFAC,X ;(e024 94 69) Auxiliary Floating point Accumulator.
dex ;(e026 CA)
bpl iE01E ;(e027 10 F5)
lda JMPER+$0002 ;(e029 A5 56) Jump Vector used in Function Evaluation - JMP followed by Address ($4C
sta FACOV ;(e02b 85 70) FAC low-order rounding.
jsr eB853 ;(e02d 20 53 B8)
jsr negop ;(e030 20 B4 BF)
lda #$C4 ;(e033 A9 C4)
ldy #$BF ;(e035 A0 BF)
jsr entry_e059 ;(e037 20 59 E0) entrypoint at $e059
lda #$00 ;(e03a A9 00)
sta ARISGN ;(e03c 85 6F) Sign of result of Arithmetic Evaluation.
pla ;(e03e 68)
jsr eBAB9 ;(e03f 20 B9 BA)
rts ;(e042 60)
;------------------------------------------------------------------------
polyx: sta FBUFPT ;(e043 85 71) Pointer: Used during CRUNCH/ASCII conversion.
sty FBUFPT+$0001 ;(e045 84 72) Pointer: Used during CRUNCH/ASCII conversion.
jsr eBBCA ;(e047 20 CA BB)
lda #$57 ;(e04a A9 57)
jsr fmult ;(e04c 20 28 BA)
jsr iE05D ;(e04f 20 5D E0)
lda #$57 ;(e052 A9 57)
ldy #$00 ;(e054 A0 00)
jmp fmult ;(e056 4C 28 BA)
;------------------------------------------------------------------------
;entrypoint at $e059
;------------------------------------------------------------------------
entry_e059: sta FBUFPT ;(e059 85 71) Pointer: Used during CRUNCH/ASCII conversion.
sty FBUFPT+$0001 ;(e05b 84 72) Pointer: Used during CRUNCH/ASCII conversion.
iE05D: jsr mov2f ;(e05d 20 C7 BB)
lda (FBUFPT),Y ;(e060 B1 71) Pointer: Used during CRUNCH/ASCII conversion.
sta SGNFLG ;(e062 85 67) Pointer: Series Evaluation Constant.
ldy FBUFPT ;(e064 A4 71) Pointer: Used during CRUNCH/ASCII conversion.
iny ;(e066 C8)
tya ;(e067 98)
bne iE06C ;(e068 D0 02)
inc FBUFPT+$0001 ;(e06a E6 72) Pointer: Used during CRUNCH/ASCII conversion.
iE06C: sta FBUFPT ;(e06c 85 71) Pointer: Used during CRUNCH/ASCII conversion.
ldy FBUFPT+$0001 ;(e06e A4 72) Pointer: Used during CRUNCH/ASCII conversion.
iE070: jsr fmult ;(e070 20 28 BA)
lda FBUFPT ;(e073 A5 71) Pointer: Used during CRUNCH/ASCII conversion.
ldy FBUFPT+$0001 ;(e075 A4 72) Pointer: Used during CRUNCH/ASCII conversion.
clc ;(e077 18)
adc #$05 ;(e078 69 05)
bcc iE07D ;(e07a 90 01)
iny ;(e07c C8)
iE07D: sta FBUFPT ;(e07d 85 71) Pointer: Used during CRUNCH/ASCII conversion.
sty FBUFPT+$0001 ;(e07f 84 72) Pointer: Used during CRUNCH/ASCII conversion.
jsr fadd ;(e081 20 67 B8)
lda #$5C ;(e084 A9 5C)
ldy #$00 ;(e086 A0 00)
dec SGNFLG ;(e088 C6 67) Pointer: Series Evaluation Constant.
bne iE070 ;(e08a D0 E4)
rts ;(e08c 60)
;------------------------------------------------------------------------
;data
;------------------------------------------------------------------------
.byte $98,$35,$44,$7A,$00,$68,$28,$B1;(e08d) (e08d .5d...(.)
.byte $46,$00 ;(e095) (e095 f.)
jsr sign ;(e097 20 2B BC)
bmi iE0D3 ;(e09a 30 37)
bne iE0BE ;(e09c D0 20)
jsr iobase ;(e09e 20 F3 FF)
stx INDEX1 ;(e0a1 86 22) First Utility Pointer.
sty INDEX1+$0001 ;(e0a3 84 23) First Utility Pointer.
ldy #$04 ;(e0a5 A0 04)
lda (INDEX1),Y ;(e0a7 B1 22) First Utility Pointer.
sta FACHO ;(e0a9 85 62) FAC Mantissa.
iny ;(e0ab C8)
lda (INDEX1),Y ;(e0ac B1 22) First Utility Pointer.
sta zp64 ;(e0ae 85 64)
ldy #$08 ;(e0b0 A0 08)
lda (INDEX1),Y ;(e0b2 B1 22) First Utility Pointer.
sta FACHO+$0001 ;(e0b4 85 63) FAC Mantissa.
iny ;(e0b6 C8)
lda (INDEX1),Y ;(e0b7 B1 22) First Utility Pointer.
sta zp65 ;(e0b9 85 65)
jmp iE0E3 ;(e0bb 4C E3 E0)
;------------------------------------------------------------------------
iE0BE: lda #$8B ;(e0be A9 8B)
ldy #$00 ;(e0c0 A0 00)
jsr movfm ;(e0c2 20 A2 BB)
lda #$8D ;(e0c5 A9 8D)
ldy #$E0 ;(e0c7 A0 E0)
jsr fmult ;(e0c9 20 28 BA)
lda #$92 ;(e0cc A9 92)
ldy #$E0 ;(e0ce A0 E0)
jsr fadd ;(e0d0 20 67 B8)
iE0D3: ldx zp65 ;(e0d3 A6 65)
lda FACHO ;(e0d5 A5 62) FAC Mantissa.
sta zp65 ;(e0d7 85 65)
stx FACHO ;(e0d9 86 62) FAC Mantissa.
ldx FACHO+$0001 ;(e0db A6 63) FAC Mantissa.
lda zp64 ;(e0dd A5 64)
sta FACHO+$0001 ;(e0df 85 63) FAC Mantissa.
stx zp64 ;(e0e1 86 64)
iE0E3: lda #$00 ;(e0e3 A9 00)
sta FACSGN ;(e0e5 85 66) FAC Sign.
lda FAC ;(e0e7 A5 61) Main Floating point Accumulator.
sta FACOV ;(e0e9 85 70) FAC low-order rounding.
lda #$80 ;(e0eb A9 80)
sta FAC ;(e0ed 85 61) Main Floating point Accumulator.
jsr eB8D7 ;(e0ef 20 D7 B8)
ldx #$8B ;(e0f2 A2 8B)
ldy #$00 ;(e0f4 A0 00)
iE0F6: jmp eBBD4 ;(e0f6 4C D4 BB)
;------------------------------------------------------------------------
bioerr: cmp #$F0 ;(e0f9 C9 F0)
bne iE104 ;(e0fb D0 07)
sty zp38 ;(e0fd 84 38)
stx MEMSIZ ;(e0ff 86 37) Pointer: Highest Address available to BASIC ($A000).
jmp eA663 ;(e101 4C 63 A6)
;------------------------------------------------------------------------
iE104: tax ;(e104 AA)
bne iE109 ;(e105 D0 02)
ldx #$1E ;(e107 A2 1E)
iE109: jmp error ;(e109 4C 37 A4)
;------------------------------------------------------------------------
jsr entry_ffd2 ;(e10c 20 D2 FF) entrypoint at $ffd2
bcs bioerr ;(e10f B0 E8)
rts ;(e111 60)
;------------------------------------------------------------------------
jsr entry_ffcf ;(e112 20 CF FF) entrypoint at $ffcf
bcs bioerr ;(e115 B0 E2)
rts ;(e117 60)
;------------------------------------------------------------------------
jsr iE4AD ;(e118 20 AD E4)
bcs bioerr ;(e11b B0 DC)
rts ;(e11d 60)
;------------------------------------------------------------------------
jsr entry_ffc6 ;(e11e 20 C6 FF) entrypoint at $ffc6
bcs bioerr ;(e121 B0 D6)
rts ;(e123 60)
;------------------------------------------------------------------------
jsr entry_ffe4 ;(e124 20 E4 FF) entrypoint at $ffe4
bcs bioerr ;(e127 B0 D0)
rts ;(e129 60)
;------------------------------------------------------------------------
jsr frmnum ;(e12a 20 8A AD)
jsr getadr ;(e12d 20 F7 B7)
lda #$E1 ;(e130 A9 E1)
pha ;(e132 48)
lda #$46 ;(e133 A9 46)
pha ;(e135 48)
lda e030F ;(e136 AD 0F 03)
pha ;(e139 48)
lda e030C ;(e13a AD 0C 03)
ldx e030D ;(e13d AE 0D 03)
ldy e030E ;(e140 AC 0E 03)
plp ;(e143 28)
jmp (LINNUM) ;(e144 6C 14 00) *($0014)=$0000 Temporary: Integer value.
;------------------------------------------------------------------------
;entrypoint at $e147
;------------------------------------------------------------------------
php ;(e147 08)
sta e030C ;(e148 8D 0C 03)
stx e030D ;(e14b 8E 0D 03)
sty e030E ;(e14e 8C 0E 03)
pla ;(e151 68)
sta e030F ;(e152 8D 0F 03)
rts ;(e155 60)
;------------------------------------------------------------------------
.byte $20,$D4,$E1,$A6,$2D,$A4,$2E,$A9;(e156) (e156 T..-...)
.byte $2B,$20,$D8,$FF,$B0,$95,$60;(e15e) (e15e + X....)
lda #$01 ;(e165 A9 01)
.byte $2C,<RINONE ,>RINONE ;(e167) (e167 ,..)
sta VERCK ;(e16a 85 0A) Flag: 0=Load 1=Verify.
jsr slpara ;(e16c 20 D4 E1)
lda VERCK ;(e16f A5 0A) Flag: 0=Load 1=Verify.
ldx TXTTAB ;(e171 A6 2B) Pointer: Start of BASIC Text Area ($0801).
ldy zp2C ;(e173 A4 2C)
jsr entry_ffd5 ;(e175 20 D5 FF) entrypoint at $ffd5
bcs iE1D1 ;(e178 B0 57)
lda VERCK ;(e17a A5 0A) Flag: 0=Load 1=Verify.
beq iE195 ;(e17c F0 17)
ldx #$1C ;(e17e A2 1C)
jsr readst ;(e180 20 B7 FF)
and #$10 ;(e183 29 10)
bne iE19E ;(e185 D0 17)
lda TXTPTR ;(e187 A5 7A) Pointer: Current Byte of BASIC Text.
cmp #$02 ;(e189 C9 02)
beq iE194 ;(e18b F0 07)
lda #$64 ;(e18d A9 64)
ldy #$A3 ;(e18f A0 A3)
jmp strout ;(e191 4C 1E AB) output string (ptr in a/y)
;------------------------------------------------------------------------
iE194: rts ;(e194 60)
;------------------------------------------------------------------------
iE195: jsr readst ;(e195 20 B7 FF)
and #$BF ;(e198 29 BF)
beq iE1A1 ;(e19a F0 05)
ldx #$1D ;(e19c A2 1D)
iE19E: jmp error ;(e19e 4C 37 A4)
;------------------------------------------------------------------------
iE1A1: lda TXTPTR+$0001 ;(e1a1 A5 7B) Pointer: Current Byte of BASIC Text.
cmp #$02 ;(e1a3 C9 02)
bne iE1B5 ;(e1a5 D0 0E)
stx VARTAB ;(e1a7 86 2D) Pointer: Start of BASIC Variables.
sty VARTAB+$0001 ;(e1a9 84 2E) Pointer: Start of BASIC Variables.
lda #$76 ;(e1ab A9 76)
ldy #$A3 ;(e1ad A0 A3)
jsr strout ;(e1af 20 1E AB) output string (ptr in a/y)
jmp eA52A ;(e1b2 4C 2A A5)
;------------------------------------------------------------------------
iE1B5: jsr stxpt ;(e1b5 20 8E A6)
jsr linkprg ;(e1b8 20 33 A5)
jmp eA677 ;(e1bb 4C 77 A6)
;------------------------------------------------------------------------
jsr ocpara ;(e1be 20 19 E2)
jsr entry_ffc0 ;(e1c1 20 C0 FF) entrypoint at $ffc0
bcs iE1D1 ;(e1c4 B0 0B)
rts ;(e1c6 60)
;------------------------------------------------------------------------
jsr ocpara ;(e1c7 20 19 E2)
lda FORPNT ;(e1ca A5 49) Pointer: Index Variable for FOR/NEXT loop.
jsr entry_ffc3 ;(e1cc 20 C3 FF) entrypoint at $ffc3
bcc iE194 ;(e1cf 90 C3)
iE1D1: jmp bioerr ;(e1d1 4C F9 E0)
;------------------------------------------------------------------------
slpara: lda #$00 ;(e1d4 A9 00)
jsr setnam ;(e1d6 20 BD FF)
ldx #$01 ;(e1d9 A2 01)
ldy #$00 ;(e1db A0 00)
jsr setlfs ;(e1dd 20 BA FF)
jsr deflt ;(e1e0 20 06 E2)
jsr iE257 ;(e1e3 20 57 E2)
jsr deflt ;(e1e6 20 06 E2)
jsr combyt ;(e1e9 20 00 E2)
ldy #$00 ;(e1ec A0 00)
stx FORPNT ;(e1ee 86 49) Pointer: Index Variable for FOR/NEXT loop.
jsr setlfs ;(e1f0 20 BA FF)
jsr deflt ;(e1f3 20 06 E2)
jsr combyt ;(e1f6 20 00 E2)
txa ;(e1f9 8A)
tay ;(e1fa A8)
ldx FORPNT ;(e1fb A6 49) Pointer: Index Variable for FOR/NEXT loop.
jmp setlfs ;(e1fd 4C BA FF)
;------------------------------------------------------------------------
combyt: jsr cmmerr ;(e200 20 0E E2)
jmp eB79E ;(e203 4C 9E B7)
;------------------------------------------------------------------------
deflt: jsr CHRGOT ;(e206 20 79 00) Entry to Get same Byte again.
bne iE20D ;(e209 D0 02)
pla ;(e20b 68)
pla ;(e20c 68)
iE20D: rts ;(e20d 60)
;------------------------------------------------------------------------
cmmerr: jsr eAEFD ;(e20e 20 FD AE)
iE211: jsr CHRGOT ;(e211 20 79 00) Entry to Get same Byte again.
bne iE20D ;(e214 D0 F7)
jmp synerr ;(e216 4C 08 AF)
;------------------------------------------------------------------------
ocpara: lda #$00 ;(e219 A9 00)
jsr setnam ;(e21b 20 BD FF)
jsr iE211 ;(e21e 20 11 E2)
jsr eB79E ;(e221 20 9E B7)
stx FORPNT ;(e224 86 49) Pointer: Index Variable for FOR/NEXT loop.
txa ;(e226 8A)
ldx #$01 ;(e227 A2 01)
ldy #$00 ;(e229 A0 00)
jsr setlfs ;(e22b 20 BA FF)
jsr deflt ;(e22e 20 06 E2)
jsr combyt ;(e231 20 00 E2)
stx FORPNT+$0001 ;(e234 86 4A) Pointer: Index Variable for FOR/NEXT loop.
ldy #$00 ;(e236 A0 00)
lda FORPNT ;(e238 A5 49) Pointer: Index Variable for FOR/NEXT loop.
cpx #$03 ;(e23a E0 03)
bcc iE23F ;(e23c 90 01)
dey ;(e23e 88)
iE23F: jsr setlfs ;(e23f 20 BA FF)
jsr deflt ;(e242 20 06 E2)
jsr combyt ;(e245 20 00 E2)
txa ;(e248 8A)
tay ;(e249 A8)
ldx FORPNT+$0001 ;(e24a A6 4A) Pointer: Index Variable for FOR/NEXT loop.
lda FORPNT ;(e24c A5 49) Pointer: Index Variable for FOR/NEXT loop.
jsr setlfs ;(e24e 20 BA FF)
jsr deflt ;(e251 20 06 E2)
jsr cmmerr ;(e254 20 0E E2)
iE257: jsr frmevl ;(e257 20 9E AD)
jsr frestr ;(e25a 20 A3 B6)
ldx INDEX1 ;(e25d A6 22) First Utility Pointer.
ldy INDEX1+$0001 ;(e25f A4 23) First Utility Pointer.
jmp setnam ;(e261 4C BD FF)
;------------------------------------------------------------------------
lda #$E0 ;(e264 A9 E0)
ldy #$E2 ;(e266 A0 E2)
jsr fadd ;(e268 20 67 B8)
sin: jsr movaf ;(e26b 20 0C BC)
lda #$E5 ;(e26e A9 E5)
ldy #$E2 ;(e270 A0 E2)
ldx ARGSGN ;(e272 A6 6E) AFAC Sign.
jsr fdiv ;(e274 20 07 BB)
jsr movaf ;(e277 20 0C BC)
jsr int ;(e27a 20 CC BC)
lda #$00 ;(e27d A9 00)
sta ARISGN ;(e27f 85 6F) Sign of result of Arithmetic Evaluation.
jsr eB853 ;(e281 20 53 B8)
lda #$EA ;(e284 A9 EA)
ldy #$E2 ;(e286 A0 E2)
jsr fsub ;(e288 20 50 B8)
lda FACSGN ;(e28b A5 66) FAC Sign.
pha ;(e28d 48)
bpl iE29D ;(e28e 10 0D)
jsr faddh ;(e290 20 49 B8)
lda FACSGN ;(e293 A5 66) FAC Sign.
bmi iE2A0 ;(e295 30 09)
lda TANSGN ;(e297 A5 12) Flag: TAN sign/Comparative result.
eor #$FF ;(e299 49 FF)
sta TANSGN ;(e29b 85 12) Flag: TAN sign/Comparative result.
iE29D: jsr negop ;(e29d 20 B4 BF)
iE2A0: lda #$EA ;(e2a0 A9 EA)
ldy #$E2 ;(e2a2 A0 E2)
jsr fadd ;(e2a4 20 67 B8)
pla ;(e2a7 68)
bpl iE2AD ;(e2a8 10 03)
jsr negop ;(e2aa 20 B4 BF)
iE2AD: lda #$EF ;(e2ad A9 EF)
ldy #$E2 ;(e2af A0 E2)
jmp polyx ;(e2b1 4C 43 E0)
;------------------------------------------------------------------------
jsr eBBCA ;(e2b4 20 CA BB)
lda #$00 ;(e2b7 A9 00)
sta TANSGN ;(e2b9 85 12) Flag: TAN sign/Comparative result.
jsr sin ;(e2bb 20 6B E2)
ldx #$4E ;(e2be A2 4E)
ldy #$00 ;(e2c0 A0 00)
jsr iE0F6 ;(e2c2 20 F6 E0)
lda #$57 ;(e2c5 A9 57)
ldy #$00 ;(e2c7 A0 00)
jsr movfm ;(e2c9 20 A2 BB)
lda #$00 ;(e2cc A9 00)
sta FACSGN ;(e2ce 85 66) FAC Sign.
lda TANSGN ;(e2d0 A5 12) Flag: TAN sign/Comparative result.
jsr iE2DC ;(e2d2 20 DC E2)
lda #$4E ;(e2d5 A9 4E)
ldy #$00 ;(e2d7 A0 00)
jmp fdivt ;(e2d9 4C 0F BB)
;------------------------------------------------------------------------
iE2DC: pha ;(e2dc 48)
jmp iE29D ;(e2dd 4C 9D E2)
;------------------------------------------------------------------------
;data
;------------------------------------------------------------------------
.byte $81,$49,$0F,$DA,$A2,$83,$49,$0F;(e2e0) (e2e0 .i.Z..i.)
.byte $DA,$A2,$7F,$00,$00,$00,$00,$05;(e2e8) (e2e8 Z.......)
.byte $84,$E6,$1A,$2D,$1B,$86,$28,$07;(e2f0) (e2f0 ...-..(.)
.byte $FB,$F8,$87,$99,$68,$89,$01,$87;(e2f8) (e2f8 ........)
.byte $23,$35,$DF,$E1,$86,$A5,$5D,$E7;(e300) (e300 #5....].)
.byte $28,$83,$49,$0F,$DA,$A2;(e308) (e308 (.i.Z.)
lda FACSGN ;(e30e A5 66) FAC Sign.
pha ;(e310 48)
bpl iE316 ;(e311 10 03)
jsr negop ;(e313 20 B4 BF)
iE316: lda FAC ;(e316 A5 61) Main Floating point Accumulator.
pha ;(e318 48)
cmp #$81 ;(e319 C9 81)
bcc iE324 ;(e31b 90 07)
lda #$BC ;(e31d A9 BC)
ldy #$B9 ;(e31f A0 B9)
jsr fdivt ;(e321 20 0F BB)
iE324: lda #$3E ;(e324 A9 3E)
ldy #$E3 ;(e326 A0 E3)
jsr polyx ;(e328 20 43 E0)
pla ;(e32b 68)
cmp #$81 ;(e32c C9 81)
bcc iE337 ;(e32e 90 07)
lda #$E0 ;(e330 A9 E0)
ldy #$E2 ;(e332 A0 E2)
jsr fsub ;(e334 20 50 B8)
iE337: pla ;(e337 68)
bpl iE33D ;(e338 10 03)
jmp negop ;(e33a 4C B4 BF)
;------------------------------------------------------------------------
iE33D: rts ;(e33d 60)
;------------------------------------------------------------------------
;data
;------------------------------------------------------------------------
.byte $0B,$76,$B3,$83,$BD,$D3,$79,$1E;(e33e) (e33e .....S..)
.byte $F4,$A6,$F5,$7B,$83,$FC,$B0,$10;(e346) (e346 ........)
.byte $7C,$0C,$1F,$67,$CA,$7C,$DE,$53;(e34e) (e34e ....J..s)
.byte $CB,$C1,$7D,$14,$64,$70,$4C,$7D;(e356) (e356 KA....l.)
.byte $B7,$EA,$51,$7A,$7D,$63,$30,$88;(e35e) (e35e ..q...0.)
.byte $7E,$7E,$92,$44,$99,$3A,$7E,$4C;(e366) (e366 ...d.:.l)
.byte $CC,$91,$C7,$7F,$AA,$AA,$AA,$13;(e36e) (e36e L.G.....)
.byte $81,$00,$00,$00,$00 ;(e376) (e376 .....)
jsr entry_ffcc ;(e37b 20 CC FF) entrypoint at $ffcc
lda #$00 ;(e37e A9 00)
sta CHANNL ;(e380 85 13) File number of current Input Device.
jsr eA67A ;(e382 20 7A A6)
cli ;(e385 58)
iE386: ldx #$80 ;(e386 A2 80)
jmp (e0300) ;(e388 6C 00 03) *($0300)=$e38b
;------------------------------------------------------------------------
txa ;(e38b 8A)
bmi iE391 ;(e38c 30 03)
jmp eA43A ;(e38e 4C 3A A4)
;------------------------------------------------------------------------
iE391: jmp ready ;(e391 4C 74 A4)
;------------------------------------------------------------------------
jsr initv ;(e394 20 53 E4)
jsr initcz ;(e397 20 BF E3)
jsr initms ;(e39a 20 22 E4)
ldx #$FB ;(e39d A2 FB)
txs ;(e39f 9A)
bne iE386 ;(e3a0 D0 E4)
initat: inc TXTPTR ;(e3a2 E6 7A) Pointer: Current Byte of BASIC Text.
bne iE3A8 ;(e3a4 D0 02)
inc TXTPTR+$0001 ;(e3a6 E6 7B) Pointer: Current Byte of BASIC Text.
iE3A8: lda iEA60 ;(e3a8 AD 60 EA)
cmp #$3A ;(e3ab C9 3A)
bcs iE3B9 ;(e3ad B0 0A)
cmp #$20 ;(e3af C9 20)
beq initat ;(e3b1 F0 EF)
sec ;(e3b3 38)
sbc #$30 ;(e3b4 E9 30)
sec ;(e3b6 38)
sbc #$D0 ;(e3b7 E9 D0)
iE3B9: rts ;(e3b9 60)
;------------------------------------------------------------------------
;Random Seed
;------------------------------------------------------------------------
.byte $80,$4F,$C7,$52,$58 ;(e3ba) (e3ba .oGrx)
initcz: lda #$4C ;(e3bf A9 4C)
sta JMPER ;(e3c1 85 54) Jump Vector used in Function Evaluation - JMP followed by Address ($4C
sta e0310 ;(e3c3 8D 10 03)
lda #$48 ;(e3c6 A9 48)
ldy #$B2 ;(e3c8 A0 B2)
sta e0311 ;(e3ca 8D 11 03)
sty e0312 ;(e3cd 8C 12 03)
lda #$91 ;(e3d0 A9 91)
ldy #$B3 ;(e3d2 A0 B3)
sta ADRAY2 ;(e3d4 85 05) Jump Vector: Convert Integer in (A/Y) to Floating point in (FAC); ($B391).
sty ADRAY2+$0001 ;(e3d6 84 06) Jump Vector: Convert Integer in (A/Y) to Floating point in (FAC); ($B391).
lda #$AA ;(e3d8 A9 AA)
ldy #$B1 ;(e3da A0 B1)
sta ADRAY1 ;(e3dc 85 03) Jump Vector: Convert FAC to Integer in (A/Y)($B1AA).
sty zp04 ;(e3de 84 04)
ldx #$1C ;(e3e0 A2 1C)
iE3E2: lda initat,X ;(e3e2 BD A2 E3)
sta CHRGET,X ;(e3e5 95 73) basic chrget
dex ;(e3e7 CA)
bpl iE3E2 ;(e3e8 10 F8)
lda #$03 ;(e3ea A9 03)
sta FOUR6 ;(e3ec 85 53) Length of String Variable during Garbege collection.
lda #$00 ;(e3ee A9 00)
sta BITS ;(e3f0 85 68) Bit Overflow Area during normalisation Routine.
sta CHANNL ;(e3f2 85 13) File number of current Input Device.
sta zp18 ;(e3f4 85 18)
ldx #$01 ;(e3f6 A2 01)
stx e01FD ;(e3f8 8E FD 01)
stx e01FC ;(e3fb 8E FC 01)
ldx #$19 ;(e3fe A2 19)
;IO Kernal ROM
;------------------------------------------------------------------------
stx TEMPPT ;(e400 86 16) Pointer: Temporary String Stack.
;IO Kernal ROM
;------------------------------------------------------------------------
sec ;(e402 38)
;IO Kernal ROM
;------------------------------------------------------------------------
jsr entry_ff9c ;(e403 20 9C FF) entrypoint at $ff9c
stx TXTTAB ;(e406 86 2B) Pointer: Start of BASIC Text Area ($0801).
sty zp2C ;(e408 84 2C)
sec ;(e40a 38)
jsr memtop ;(e40b 20 99 FF)
stx MEMSIZ ;(e40e 86 37) Pointer: Highest Address available to BASIC ($A000).
sty zp38 ;(e410 84 38)
stx FRETOP ;(e412 86 33) Pointer: Bottom of String space.
sty zp34 ;(e414 84 34)
ldy #$00 ;(e416 A0 00)
tya ;(e418 98)
sta (TXTTAB),Y ;(e419 91 2B) Pointer: Start of BASIC Text Area ($0801).
inc TXTTAB ;(e41b E6 2B) Pointer: Start of BASIC Text Area ($0801).
bne iE421 ;(e41d D0 02)
inc zp2C ;(e41f E6 2C)
iE421: rts ;(e421 60)
;------------------------------------------------------------------------
initms: lda TXTTAB ;(e422 A5 2B) Pointer: Start of BASIC Text Area ($0801).
ldy zp2C ;(e424 A4 2C)
jsr reason ;(e426 20 08 A4)
lda #$73 ;(e429 A9 73)
ldy #$E4 ;(e42b A0 E4)
jsr strout ;(e42d 20 1E AB) output string (ptr in a/y)
lda MEMSIZ ;(e430 A5 37) Pointer: Highest Address available to BASIC ($A000).
sec ;(e432 38)
sbc TXTTAB ;(e433 E5 2B) Pointer: Start of BASIC Text Area ($0801).
tax ;(e435 AA)
lda zp38 ;(e436 A5 38)
sbc zp2C ;(e438 E5 2C)
jsr eBDCD ;(e43a 20 CD BD)
lda #$60 ;(e43d A9 60)
ldy #$E4 ;(e43f A0 E4)
jsr strout ;(e441 20 1E AB) output string (ptr in a/y)
jmp eA644 ;(e444 4C 44 A6)
;------------------------------------------------------------------------
;Basic Vectors
;------------------------------------------------------------------------
bvtrs: .byte $8B,$E3,$83,$A4,$7C,$A5,$1A,$A7;(e447) (e447 ........)
.byte $E4,$A7,$86,$AE ;(e44f) (e44f ....)
initv: ldx #$0B ;(e453 A2 0B)
iE455: lda bvtrs,X ;(e455 BD 47 E4) Basic Vectors
sta e0300,X ;(e458 9D 00 03)
dex ;(e45b CA)
bpl iE455 ;(e45c 10 F7)
rts ;(e45e 60)
;------------------------------------------------------------------------
;Reset Messages
;------------------------------------------------------------------------
.byte $00,$20,$42,$41,$53,$49,$43,$20;(e45f) (e45f . basic )
.byte $42,$59,$54,$45,$53,$20,$46,$52;(e467) (e467 bytes fr)
.byte $45,$45,$0D,$00,$93,$0D,$20,$20;(e46f) (e46f ee.... )
.byte $20,$20,$2A,$2A,$2A,$2A,$20,$43;(e477) (e477 **** c)
.byte $4F,$4D,$4D,$4F,$44,$4F,$52,$45;(e47f) (e47f ommodore)
.byte $20,$36,$34,$20,$42,$41,$53,$49;(e487) (e487 64 basi)
.byte $43,$20,$56,$32,$20,$2A,$2A,$2A;(e48f) (e48f c v2 ***)
.byte $2A,$0D,$0D,$20,$36,$34,$4B,$20;(e497) (e497 *.. 64k )
.byte $52,$41,$4D,$20,$53,$59,$53,$54;(e49f) (e49f ram syst)
.byte $45,$4D,$20,$20,$00,$5C;(e4a7) (e4a7 em ..)
iE4AD: pha ;(e4ad 48)
jsr entry_ffc9 ;(e4ae 20 C9 FF) entrypoint at $ffc9
tax ;(e4b1 AA)
pla ;(e4b2 68)
bcc iE4B6 ;(e4b3 90 01)
txa ;(e4b5 8A)
iE4B6: rts ;(e4b6 60)
;------------------------------------------------------------------------
.byte $AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA;(e4b7) (e4b7 ........)
.byte $AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA;(e4bf) (e4bf ........)
.byte $AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA;(e4c7) (e4c7 ........)
.byte $AA,$AA,$AA,$AA,$AA,$AA,$AA,$AA;(e4cf) (e4cf ........)
.byte $AA,$AA,$AA ;(e4d7) (e4d7 ...)
iE4DA: lda e0286 ;(e4da AD 86 02)
sta (USER),Y ;(e4dd 91 F3) Pointer: Current Colour RAM Location.
rts ;(e4df 60)
;------------------------------------------------------------------------
iE4E0: adc #$02 ;(e4e0 69 02)
iE4E2: ldy STKEY ;(e4e2 A4 91) Flag: $7F = STOP key.
iny ;(e4e4 C8)
bne iE4EB ;(e4e5 D0 04)
cmp TIME+$0001 ;(e4e7 C5 A1) Real-time jiffy Clock (Updated by IRQ Interrupt approx. every 1/60 of Second); Update Routine: UDTIMK ($F69B).
iE4E9: ;(e4e9) RS232 Input Buffer Pointer.
iE4EA = iE4E9+$01 ;(e4ea)
bne iE4E2 ;(e4e9 D0 F7)
iE4EB: rts ;(e4eb 60)
;------------------------------------------------------------------------
.byte $19,$26,$44,$19,$1A,$11,$E8,$0D;(e4ec) (e4ec .&d.....)
.byte $70,$0C,$06,$06,$D1,$02,$37,$01;(e4f4) (e4f4 ....Q.7.)
.byte $AE,$00,$69,$00 ;(e4fc) (e4fc ....)
iobase_direct: ldx #$00 ;(e500 A2 00)
ldy #$DC ;(e502 A0 DC)
rts ;(e504 60)
;------------------------------------------------------------------------
iE505: ldx #$28 ;(e505 A2 28)
ldy #$19 ;(e507 A0 19)
rts ;(e509 60)
;------------------------------------------------------------------------
iE50A: bcs iE513 ;(e50a B0 07)
stx TBLX ;(e50c 86 D6) Current Screen Line number of Cursor.
sty PNTR ;(e50e 84 D3) Cursor Column on current Line
jsr iE56C ;(e510 20 6C E5)
iE513: ldx TBLX ;(e513 A6 D6) Current Screen Line number of Cursor.
ldy PNTR ;(e515 A4 D3) Cursor Column on current Line
rts ;(e517 60)
;------------------------------------------------------------------------
cint1: jsr iE5A0 ;(e518 20 A0 E5)
lda #$00 ;(e51b A9 00)
sta e0291 ;(e51d 8D 91 02)
sta BLNON ;(e520 85 CF) Flag: Cursor Status $00 = Off
lda #$48 ;(e522 A9 48)
sta e028F ;(e524 8D 8F 02)
lda #$EB ;(e527 A9 EB)
sta e0290 ;(e529 8D 90 02)
lda #$0A ;(e52c A9 0A)
sta e0289 ;(e52e 8D 89 02)
sta e028C ;(e531 8D 8C 02)
lda #$0E ;(e534 A9 0E)
sta e0286 ;(e536 8D 86 02)
lda #$04 ;(e539 A9 04)
sta e028B ;(e53b 8D 8B 02)
lda #$0C ;(e53e A9 0C)
sta BLNCT ;(e540 85 CD) Timer: Count down for Cursor blink toggle.
sta BLNSW ;(e542 85 CC) Flag: Cursor blink $00 = Enabled
iE544: lda e0288 ;(e544 AD 88 02)
ora #$80 ;(e547 09 80)
tay ;(e549 A8)
lda #$00 ;(e54a A9 00)
tax ;(e54c AA)
iE54D: sty LDTB1,X ;(e54d 94 D9) Screen Line link Table/Editor temporaries. High Byte of Line Screen Memory Location.
clc ;(e54f 18)
adc #$28 ;(e550 69 28)
bcc iE555 ;(e552 90 01)
iny ;(e554 C8)
iE555: inx ;(e555 E8)
cpx #$1A ;(e556 E0 1A)
bne iE54D ;(e558 D0 F3)
lda #$FF ;(e55a A9 FF)
sta LDTB1,X ;(e55c 95 D9) Screen Line link Table/Editor temporaries. High Byte of Line Screen Memory Location.
ldx #$18 ;(e55e A2 18)
iE560: jsr iE9FF ;(e560 20 FF E9)
dex ;(e563 CA)
bpl iE560 ;(e564 10 FA)
iE566: ldy #$00 ;(e566 A0 00)
sty PNTR ;(e568 84 D3) Cursor Column on current Line
sty TBLX ;(e56a 84 D6) Current Screen Line number of Cursor.
iE56C: ldx TBLX ;(e56c A6 D6) Current Screen Line number of Cursor.
lda PNTR ;(e56e A5 D3) Cursor Column on current Line
iE570: ldy LDTB1,X ;(e570 B4 D9) Screen Line link Table/Editor temporaries. High Byte of Line Screen Memory Location.
bmi iE57C ;(e572 30 08)
clc ;(e574 18)
adc #$28 ;(e575 69 28)
sta PNTR ;(e577 85 D3) Cursor Column on current Line
dex ;(e579 CA)
bpl iE570 ;(e57a 10 F4)
iE57C: lda LDTB1,X ;(e57c B5 D9) Screen Line link Table/Editor temporaries. High Byte of Line Screen Memory Location.
and #$03 ;(e57e 29 03)
ora e0288 ;(e580 0D 88 02)
sta PNT+$0001 ;(e583 85 D2) Pointer: Current Screen Line Address.
lda scrnlsbtab,X ;(e585 BD F0 EC) Screenlines LSB Table
sta PNT ;(e588 85 D1) Pointer: Current Screen Line Address.
lda #$27 ;(e58a A9 27)
inx ;(e58c E8)
iE58D: ldy LDTB1,X ;(e58d B4 D9) Screen Line link Table/Editor temporaries. High Byte of Line Screen Memory Location.
bmi iE597 ;(e58f 30 06)
clc ;(e591 18)
adc #$28 ;(e592 69 28)
inx ;(e594 E8)
bpl iE58D ;(e595 10 F6)
iE597: sta LNMX ;(e597 85 D5) Current logical Line length: 39 or 79.
rts ;(e599 60)
;------------------------------------------------------------------------
;entrypoint at $e59a
;------------------------------------------------------------------------
jsr iE5A0 ;(e59a 20 A0 E5)
jmp iE566 ;(e59d 4C 66 E5)
;------------------------------------------------------------------------
iE5A0: lda #$03 ;(e5a0 A9 03)
sta DFLTO ;(e5a2 85 9A) Default Output Device (3).
lda #$00 ;(e5a4 A9 00)
sta DFLTN ;(e5a6 85 99) Default Input Device (0).
ldx #$2F ;(e5a8 A2 2F)
iE5AA: lda iECB8,X ;(e5aa BD B8 EC)
sta eCFFF,X ;(e5ad 9D FF CF)
dex ;(e5b0 CA)
bne iE5AA ;(e5b1 D0 F7)
rts ;(e5b3 60)
;------------------------------------------------------------------------
iE5B4: ldy e0277 ;(e5b4 AC 77 02)
ldx #$00 ;(e5b7 A2 00)
iE5B9: lda e0278,X ;(e5b9 BD 78 02)
sta e0277,X ;(e5bc 9D 77 02)
inx ;(e5bf E8)
cpx NDX ;(e5c0 E4 C6) Number of Characters in Keyboard Buffer queue.
bne iE5B9 ;(e5c2 D0 F5)
dec NDX ;(e5c4 C6 C6) Number of Characters in Keyboard Buffer queue.
tya ;(e5c6 98)
cli ;(e5c7 58)
clc ;(e5c8 18)
rts ;(e5c9 60)
;------------------------------------------------------------------------
iE5CA: jsr iE716 ;(e5ca 20 16 E7)
iE5CD: lda NDX ;(e5cd A5 C6) Number of Characters in Keyboard Buffer queue.
sta BLNSW ;(e5cf 85 CC) Flag: Cursor blink $00 = Enabled
sta e0292 ;(e5d1 8D 92 02)
beq iE5CD ;(e5d4 F0 F7)
sei ;(e5d6 78)
lda BLNON ;(e5d7 A5 CF) Flag: Cursor Status $00 = Off
beq iE5E7 ;(e5d9 F0 0C)
lda GDBLN ;(e5db A5 CE) Character under Cursor while Cursor Inverted.
ldx e0287 ;(e5dd AE 87 02)
ldy #$00 ;(e5e0 A0 00)
sty BLNON ;(e5e2 84 CF) Flag: Cursor Status $00 = Off
jsr iEA13 ;(e5e4 20 13 EA)
iE5E7: jsr iE5B4 ;(e5e7 20 B4 E5)
cmp #$83 ;(e5ea C9 83)
bne iE5FE ;(e5ec D0 10)
ldx #$09 ;(e5ee A2 09)
sei ;(e5f0 78)
stx NDX ;(e5f1 86 C6) Number of Characters in Keyboard Buffer queue.
iE5F3: lda iECE6,X ;(e5f3 BD E6 EC)
sta e0276,X ;(e5f6 9D 76 02)
dex ;(e5f9 CA)
bne iE5F3 ;(e5fa D0 F7)
beq iE5CD ;(e5fc F0 CF)
iE5FE: cmp #$0D ;(e5fe C9 0D)
bne iE5CA ;(e600 D0 C8)
ldy LNMX ;(e602 A4 D5) Current logical Line length: 39 or 79.
sty CRSW ;(e604 84 D0) Flag: Input from Screen = $03
iE606: lda (PNT),Y ;(e606 B1 D1) Pointer: Current Screen Line Address.
cmp #$20 ;(e608 C9 20)
bne iE60F ;(e60a D0 03)
dey ;(e60c 88)
bne iE606 ;(e60d D0 F7)
iE60F: iny ;(e60f C8)
sty INDX ;(e610 84 C8) Pointer: End of Line for Input (Used to suppress trailing spaces).
ldy #$00 ;(e612 A0 00)
sty e0292 ;(e614 8C 92 02)
sty PNTR ;(e617 84 D3) Cursor Column on current Line
sty QTSW ;(e619 84 D4) Flag: Editor in Quote Mode $00 = Not.
lda LXSP ;(e61b A5 C9) Cursor X/Y (Line/Column) position at start of Input.
bmi iE63A ;(e61d 30 1B)
ldx TBLX ;(e61f A6 D6) Current Screen Line number of Cursor.
jsr iE6ED ;(e621 20 ED E6)
cpx LXSP ;(e624 E4 C9) Cursor X/Y (Line/Column) position at start of Input.
bne iE63A ;(e626 D0 12)
lda LXSP+$0001 ;(e628 A5 CA) Cursor X/Y (Line/Column) position at start of Input.
sta PNTR ;(e62a 85 D3) Cursor Column on current Line
cmp INDX ;(e62c C5 C8) Pointer: End of Line for Input (Used to suppress trailing spaces).
bcc iE63A ;(e62e 90 0A)
bcs iE65D ;(e630 B0 2B)
iE632: tya ;(e632 98)
pha ;(e633 48)
txa ;(e634 8A)
pha ;(e635 48)
lda CRSW ;(e636 A5 D0) Flag: Input from Screen = $03
beq iE5CD ;(e638 F0 93)
iE63A: ldy PNTR ;(e63a A4 D3) Cursor Column on current Line
lda (PNT),Y ;(e63c B1 D1) Pointer: Current Screen Line Address.
sta SCHAR ;(e63e 85 D7) Screen value of current Input Character/Last Character Output.
and #$3F ;(e640 29 3F)
asl SCHAR ;(e642 06 D7) Screen value of current Input Character/Last Character Output.
bit SCHAR ;(e644 24 D7) Screen value of current Input Character/Last Character Output.
bpl iE64A ;(e646 10 02)
ora #$80 ;(e648 09 80)
iE64A: bcc iE650 ;(e64a 90 04)
ldx QTSW ;(e64c A6 D4) Flag: Editor in Quote Mode $00 = Not.
bne iE654 ;(e64e D0 04)
iE650: bvs iE654 ;(e650 70 02)
ora #$40 ;(e652 09 40)
iE654: inc PNTR ;(e654 E6 D3) Cursor Column on current Line
jsr iE684 ;(e656 20 84 E6)
cpy INDX ;(e659 C4 C8) Pointer: End of Line for Input (Used to suppress trailing spaces).
bne iE674 ;(e65b D0 17)
iE65D: lda #$00 ;(e65d A9 00)
sta CRSW ;(e65f 85 D0) Flag: Input from Screen = $03
lda #$0D ;(e661 A9 0D)
ldx DFLTN ;(e663 A6 99) Default Input Device (0).
cpx #$03 ;(e665 E0 03)
beq iE66F ;(e667 F0 06)
ldx DFLTO ;(e669 A6 9A) Default Output Device (3).
cpx #$03 ;(e66b E0 03)
beq iE672 ;(e66d F0 03)
iE66F: jsr iE716 ;(e66f 20 16 E7)
iE672: lda #$0D ;(e672 A9 0D)
iE674: sta SCHAR ;(e674 85 D7) Screen value of current Input Character/Last Character Output.
pla ;(e676 68)
tax ;(e677 AA)
pla ;(e678 68)
tay ;(e679 A8)
lda SCHAR ;(e67a A5 D7) Screen value of current Input Character/Last Character Output.
cmp #$DE ;(e67c C9 DE)
bne iE682 ;(e67e D0 02)
lda #$FF ;(e680 A9 FF)
iE682: clc ;(e682 18)
rts ;(e683 60)
;------------------------------------------------------------------------
iE684: cmp #$22 ;(e684 C9 22)
bne iE690 ;(e686 D0 08)
lda QTSW ;(e688 A5 D4) Flag: Editor in Quote Mode $00 = Not.
eor #$01 ;(e68a 49 01)
sta QTSW ;(e68c 85 D4) Flag: Editor in Quote Mode $00 = Not.
lda #$22 ;(e68e A9 22)
iE690: rts ;(e690 60)
;------------------------------------------------------------------------
iE691: ora #$40 ;(e691 09 40)
iE693: ldx RVS ;(e693 A6 C7) Flag: Reverse On/Off On = $01
beq iE699 ;(e695 F0 02)
iE697: ora #$80 ;(e697 09 80)
iE699: ldx INSRT ;(e699 A6 D8) Count of number of inserts outstanding.
beq iE69F ;(e69b F0 02)
dec INSRT ;(e69d C6 D8) Count of number of inserts outstanding.
iE69F: ldx e0286 ;(e69f AE 86 02)
jsr iEA13 ;(e6a2 20 13 EA)
jsr iE6B6 ;(e6a5 20 B6 E6)
iE6A8: pla ;(e6a8 68)
tay ;(e6a9 A8)
lda INSRT ;(e6aa A5 D8) Count of number of inserts outstanding.
beq iE6B0 ;(e6ac F0 02)
lsr QTSW ;(e6ae 46 D4) Flag: Editor in Quote Mode $00 = Not.
iE6B0: pla ;(e6b0 68)
tax ;(e6b1 AA)
pla ;(e6b2 68)
clc ;(e6b3 18)
cli ;(e6b4 58)
rts ;(e6b5 60)
;------------------------------------------------------------------------
iE6B6: jsr iE8B3 ;(e6b6 20 B3 E8)
inc PNTR ;(e6b9 E6 D3) Cursor Column on current Line
lda LNMX ;(e6bb A5 D5) Current logical Line length: 39 or 79.
cmp PNTR ;(e6bd C5 D3) Cursor Column on current Line
bcs iE700 ;(e6bf B0 3F)
cmp #$4F ;(e6c1 C9 4F)
beq iE6F7 ;(e6c3 F0 32)
lda e0292 ;(e6c5 AD 92 02)
beq iE6CD ;(e6c8 F0 03)
jmp iE967 ;(e6ca 4C 67 E9)
;------------------------------------------------------------------------
iE6CD: ldx TBLX ;(e6cd A6 D6) Current Screen Line number of Cursor.
cpx #$19 ;(e6cf E0 19)
bcc iE6DA ;(e6d1 90 07)
jsr iE8EA ;(e6d3 20 EA E8)
dec TBLX ;(e6d6 C6 D6) Current Screen Line number of Cursor.
ldx TBLX ;(e6d8 A6 D6) Current Screen Line number of Cursor.
iE6DA: asl LDTB1,X ;(e6da 16 D9) Screen Line link Table/Editor temporaries. High Byte of Line Screen Memory Location.
lsr LDTB1,X ;(e6dc 56 D9) Screen Line link Table/Editor temporaries. High Byte of Line Screen Memory Location.
inx ;(e6de E8)
lda LDTB1,X ;(e6df B5 D9) Screen Line link Table/Editor temporaries. High Byte of Line Screen Memory Location.
ora #$80 ;(e6e1 09 80)
sta LDTB1,X ;(e6e3 95 D9) Screen Line link Table/Editor temporaries. High Byte of Line Screen Memory Location.
dex ;(e6e5 CA)
lda LNMX ;(e6e6 A5 D5) Current logical Line length: 39 or 79.
clc ;(e6e8 18)
adc #$28 ;(e6e9 69 28)
sta LNMX ;(e6eb 85 D5) Current logical Line length: 39 or 79.
iE6ED: lda LDTB1,X ;(e6ed B5 D9) Screen Line link Table/Editor temporaries. High Byte of Line Screen Memory Location.
bmi iE6F4 ;(e6ef 30 03)
dex ;(e6f1 CA)
bne iE6ED ;(e6f2 D0 F9)
iE6F4: jmp iE9F0 ;(e6f4 4C F0 E9)
;------------------------------------------------------------------------
iE6F7: dec TBLX ;(e6f7 C6 D6) Current Screen Line number of Cursor.
jsr iE87C ;(e6f9 20 7C E8)
lda #$00 ;(e6fc A9 00)
sta PNTR ;(e6fe 85 D3) Cursor Column on current Line
iE700: rts ;(e700 60)
;------------------------------------------------------------------------
iE701: ldx TBLX ;(e701 A6 D6) Current Screen Line number of Cursor.
bne iE70B ;(e703 D0 06)
stx PNTR ;(e705 86 D3) Cursor Column on current Line
pla ;(e707 68)
pla ;(e708 68)
bne iE6A8 ;(e709 D0 9D)
iE70B: dex ;(e70b CA)
stx TBLX ;(e70c 86 D6) Current Screen Line number of Cursor.
jsr iE56C ;(e70e 20 6C E5)
ldy LNMX ;(e711 A4 D5) Current logical Line length: 39 or 79.
sty PNTR ;(e713 84 D3) Cursor Column on current Line
rts ;(e715 60)
;------------------------------------------------------------------------
iE716: pha ;(e716 48)
sta SCHAR ;(e717 85 D7) Screen value of current Input Character/Last Character Output.
txa ;(e719 8A)
pha ;(e71a 48)
tya ;(e71b 98)
pha ;(e71c 48)
lda #$00 ;(e71d A9 00)
sta CRSW ;(e71f 85 D0) Flag: Input from Screen = $03
ldy PNTR ;(e721 A4 D3) Cursor Column on current Line
lda SCHAR ;(e723 A5 D7) Screen value of current Input Character/Last Character Output.
bpl iE72A ;(e725 10 03)
jmp iE7D4 ;(e727 4C D4 E7)
;------------------------------------------------------------------------
iE72A: cmp #$0D ;(e72a C9 0D)
bne iE731 ;(e72c D0 03)
jmp iE891 ;(e72e 4C 91 E8)
;------------------------------------------------------------------------
iE731: cmp #$20 ;(e731 C9 20)
bcc iE745 ;(e733 90 10)
cmp #$60 ;(e735 C9 60)
bcc iE73D ;(e737 90 04)
and #$DF ;(e739 29 DF)
bne iE73F ;(e73b D0 02)
iE73D: and #$3F ;(e73d 29 3F)
iE73F: jsr iE684 ;(e73f 20 84 E6)
jmp iE693 ;(e742 4C 93 E6)
;------------------------------------------------------------------------
iE745: ldx INSRT ;(e745 A6 D8) Count of number of inserts outstanding.
beq iE74C ;(e747 F0 03)
jmp iE697 ;(e749 4C 97 E6)
;------------------------------------------------------------------------
iE74C: cmp #$14 ;(e74c C9 14)
bne iE77E ;(e74e D0 2E)
tya ;(e750 98)
bne iE759 ;(e751 D0 06)
jsr iE701 ;(e753 20 01 E7)
jmp iE773 ;(e756 4C 73 E7)
;------------------------------------------------------------------------
iE759: jsr iE8A1 ;(e759 20 A1 E8)
dey ;(e75c 88)
sty PNTR ;(e75d 84 D3) Cursor Column on current Line
jsr iEA24 ;(e75f 20 24 EA)
iE762: iny ;(e762 C8)
lda (PNT),Y ;(e763 B1 D1) Pointer: Current Screen Line Address.
dey ;(e765 88)
sta (PNT),Y ;(e766 91 D1) Pointer: Current Screen Line Address.
iny ;(e768 C8)
lda (USER),Y ;(e769 B1 F3) Pointer: Current Colour RAM Location.
dey ;(e76b 88)
sta (USER),Y ;(e76c 91 F3) Pointer: Current Colour RAM Location.
iny ;(e76e C8)
cpy LNMX ;(e76f C4 D5) Current logical Line length: 39 or 79.
bne iE762 ;(e771 D0 EF)
iE773: lda #$20 ;(e773 A9 20)
sta (PNT),Y ;(e775 91 D1) Pointer: Current Screen Line Address.
lda e0286 ;(e777 AD 86 02)
sta (USER),Y ;(e77a 91 F3) Pointer: Current Colour RAM Location.
bpl iE7CB ;(e77c 10 4D)
iE77E: ldx QTSW ;(e77e A6 D4) Flag: Editor in Quote Mode $00 = Not.
beq iE785 ;(e780 F0 03)
jmp iE697 ;(e782 4C 97 E6)
;------------------------------------------------------------------------
iE785: cmp #$12 ;(e785 C9 12)
bne iE78B ;(e787 D0 02)
sta RVS ;(e789 85 C7) Flag: Reverse On/Off On = $01
iE78B: cmp #$13 ;(e78b C9 13)
bne iE792 ;(e78d D0 03)
jsr iE566 ;(e78f 20 66 E5)
iE792: cmp #$1D ;(e792 C9 1D)
bne iE7AD ;(e794 D0 17)
iny ;(e796 C8)
jsr iE8B3 ;(e797 20 B3 E8)
sty PNTR ;(e79a 84 D3) Cursor Column on current Line
dey ;(e79c 88)
cpy LNMX ;(e79d C4 D5) Current logical Line length: 39 or 79.
bcc iE7AA ;(e79f 90 09)
dec TBLX ;(e7a1 C6 D6) Current Screen Line number of Cursor.
jsr iE87C ;(e7a3 20 7C E8)
ldy #$00 ;(e7a6 A0 00)
iE7A8: sty PNTR ;(e7a8 84 D3) Cursor Column on current Line
iE7AA: jmp iE6A8 ;(e7aa 4C A8 E6)
;------------------------------------------------------------------------
iE7AD: cmp #$11 ;(e7ad C9 11)
bne iE7CE ;(e7af D0 1D)
clc ;(e7b1 18)
tya ;(e7b2 98)
adc #$28 ;(e7b3 69 28)
tay ;(e7b5 A8)
inc TBLX ;(e7b6 E6 D6) Current Screen Line number of Cursor.
cmp LNMX ;(e7b8 C5 D5) Current logical Line length: 39 or 79.
bcc iE7A8 ;(e7ba 90 EC)
beq iE7A8 ;(e7bc F0 EA)
dec TBLX ;(e7be C6 D6) Current Screen Line number of Cursor.
iE7C0: sbc #$28 ;(e7c0 E9 28)
bcc iE7C8 ;(e7c2 90 04)
sta PNTR ;(e7c4 85 D3) Cursor Column on current Line
bne iE7C0 ;(e7c6 D0 F8)
iE7C8: jsr iE87C ;(e7c8 20 7C E8)
iE7CB: jmp iE6A8 ;(e7cb 4C A8 E6)
;------------------------------------------------------------------------
iE7CE: jsr iE8CB ;(e7ce 20 CB E8)
jmp iEC44 ;(e7d1 4C 44 EC)
;------------------------------------------------------------------------
iE7D4: and #$7F ;(e7d4 29 7F)
cmp #$7F ;(e7d6 C9 7F)
bne iE7DC ;(e7d8 D0 02)
lda #$5E ;(e7da A9 5E)
iE7DC: cmp #$20 ;(e7dc C9 20)
bcc iE7E3 ;(e7de 90 03)
jmp iE691 ;(e7e0 4C 91 E6)
;------------------------------------------------------------------------
iE7E3: cmp #$0D ;(e7e3 C9 0D)
bne iE7EA ;(e7e5 D0 03)
jmp iE891 ;(e7e7 4C 91 E8)
;------------------------------------------------------------------------
iE7EA: ldx QTSW ;(e7ea A6 D4) Flag: Editor in Quote Mode $00 = Not.
bne iE82D ;(e7ec D0 3F)
cmp #$14 ;(e7ee C9 14)
bne iE829 ;(e7f0 D0 37)
ldy LNMX ;(e7f2 A4 D5) Current logical Line length: 39 or 79.
lda (PNT),Y ;(e7f4 B1 D1) Pointer: Current Screen Line Address.
cmp #$20 ;(e7f6 C9 20)
bne iE7FE ;(e7f8 D0 04)
cpy PNTR ;(e7fa C4 D3) Cursor Column on current Line
bne iE805 ;(e7fc D0 07)
iE7FE: cpy #$4F ;(e7fe C0 4F)
;IO Kernal ROM
;------------------------------------------------------------------------
beq iE826 ;(e800 F0 24)
;IO Kernal ROM
;------------------------------------------------------------------------
jsr iE965 ;(e802 20 65 E9)
iE805: ldy LNMX ;(e805 A4 D5) Current logical Line length: 39 or 79.
jsr iEA24 ;(e807 20 24 EA)
iE80A: dey ;(e80a 88)
lda (PNT),Y ;(e80b B1 D1) Pointer: Current Screen Line Address.
iny ;(e80d C8)
sta (PNT),Y ;(e80e 91 D1) Pointer: Current Screen Line Address.
dey ;(e810 88)
lda (USER),Y ;(e811 B1 F3) Pointer: Current Colour RAM Location.
iny ;(e813 C8)
sta (USER),Y ;(e814 91 F3) Pointer: Current Colour RAM Location.
dey ;(e816 88)
cpy PNTR ;(e817 C4 D3) Cursor Column on current Line
bne iE80A ;(e819 D0 EF)
lda #$20 ;(e81b A9 20)
sta (PNT),Y ;(e81d 91 D1) Pointer: Current Screen Line Address.
lda e0286 ;(e81f AD 86 02)
sta (USER),Y ;(e822 91 F3) Pointer: Current Colour RAM Location.
inc INSRT ;(e824 E6 D8) Count of number of inserts outstanding.
iE826: jmp iE6A8 ;(e826 4C A8 E6)
;------------------------------------------------------------------------
iE829: ldx INSRT ;(e829 A6 D8) Count of number of inserts outstanding.
beq iE832 ;(e82b F0 05)
iE82D: ora #$40 ;(e82d 09 40)
jmp iE697 ;(e82f 4C 97 E6)
;------------------------------------------------------------------------
iE832: cmp #$11 ;(e832 C9 11)
bne iE84C ;(e834 D0 16)
ldx TBLX ;(e836 A6 D6) Current Screen Line number of Cursor.
beq iE871 ;(e838 F0 37)
dec TBLX ;(e83a C6 D6) Current Screen Line number of Cursor.
lda PNTR ;(e83c A5 D3) Cursor Column on current Line
sec ;(e83e 38)
sbc #$28 ;(e83f E9 28)
bcc iE847 ;(e841 90 04)
sta PNTR ;(e843 85 D3) Cursor Column on current Line
bpl iE871 ;(e845 10 2A)
iE847: jsr iE56C ;(e847 20 6C E5)
bne iE871 ;(e84a D0 25)
iE84C: cmp #$12 ;(e84c C9 12)
bne iE854 ;(e84e D0 04)
lda #$00 ;(e850 A9 00)
sta RVS ;(e852 85 C7) Flag: Reverse On/Off On = $01
iE854: cmp #$1D ;(e854 C9 1D)
bne iE86A ;(e856 D0 12)
tya ;(e858 98)
beq iE864 ;(e859 F0 09)
jsr iE8A1 ;(e85b 20 A1 E8)
dey ;(e85e 88)
sty PNTR ;(e85f 84 D3) Cursor Column on current Line
jmp iE6A8 ;(e861 4C A8 E6)
;------------------------------------------------------------------------
iE864: jsr iE701 ;(e864 20 01 E7)
jmp iE6A8 ;(e867 4C A8 E6)
;------------------------------------------------------------------------
iE86A: cmp #$13 ;(e86a C9 13)
bne iE874 ;(e86c D0 06)
jsr iE544 ;(e86e 20 44 E5)
iE871: jmp iE6A8 ;(e871 4C A8 E6)
;------------------------------------------------------------------------
iE874: ora #$80 ;(e874 09 80)
jsr iE8CB ;(e876 20 CB E8)
jmp iEC4F ;(e879 4C 4F EC)
;------------------------------------------------------------------------
iE87C: lsr LXSP ;(e87c 46 C9) Cursor X/Y (Line/Column) position at start of Input.
ldx TBLX ;(e87e A6 D6) Current Screen Line number of Cursor.
iE880: inx ;(e880 E8)
cpx #$19 ;(e881 E0 19)
bne iE888 ;(e883 D0 03)
jsr iE8EA ;(e885 20 EA E8)
iE888: lda LDTB1,X ;(e888 B5 D9) Screen Line link Table/Editor temporaries. High Byte of Line Screen Memory Location.
bpl iE880 ;(e88a 10 F4)
stx TBLX ;(e88c 86 D6) Current Screen Line number of Cursor.
jmp iE56C ;(e88e 4C 6C E5)
;------------------------------------------------------------------------
iE891: ldx #$00 ;(e891 A2 00)
stx INSRT ;(e893 86 D8) Count of number of inserts outstanding.
stx RVS ;(e895 86 C7) Flag: Reverse On/Off On = $01
stx QTSW ;(e897 86 D4) Flag: Editor in Quote Mode $00 = Not.
stx PNTR ;(e899 86 D3) Cursor Column on current Line
jsr iE87C ;(e89b 20 7C E8)
jmp iE6A8 ;(e89e 4C A8 E6)
;------------------------------------------------------------------------
iE8A1: ldx #$02 ;(e8a1 A2 02)
lda #$00 ;(e8a3 A9 00)
iE8A5: cmp PNTR ;(e8a5 C5 D3) Cursor Column on current Line
beq iE8B0 ;(e8a7 F0 07)
clc ;(e8a9 18)
adc #$28 ;(e8aa 69 28)
dex ;(e8ac CA)
bne iE8A5 ;(e8ad D0 F6)
rts ;(e8af 60)
;------------------------------------------------------------------------
iE8B0: dec TBLX ;(e8b0 C6 D6) Current Screen Line number of Cursor.
rts ;(e8b2 60)
;------------------------------------------------------------------------
iE8B3: ldx #$02 ;(e8b3 A2 02)
lda #$27 ;(e8b5 A9 27)
iE8B7: cmp PNTR ;(e8b7 C5 D3) Cursor Column on current Line
beq iE8C2 ;(e8b9 F0 07)
clc ;(e8bb 18)
adc #$28 ;(e8bc 69 28)
dex ;(e8be CA)
bne iE8B7 ;(e8bf D0 F6)
rts ;(e8c1 60)
;------------------------------------------------------------------------
iE8C2: ldx TBLX ;(e8c2 A6 D6) Current Screen Line number of Cursor.
cpx #$19 ;(e8c4 E0 19)
beq iE8CA ;(e8c6 F0 02)
inc TBLX ;(e8c8 E6 D6) Current Screen Line number of Cursor.
iE8CA: rts ;(e8ca 60)
;------------------------------------------------------------------------
iE8CB: ldx #$0F ;(e8cb A2 0F)
iE8CD: cmp cgcolorcodes,X ;(e8cd DD DA E8) CBM Color Codes Table
beq iE8D6 ;(e8d0 F0 04)
dex ;(e8d2 CA)
bpl iE8CD ;(e8d3 10 F8)
rts ;(e8d5 60)
;------------------------------------------------------------------------
iE8D6: stx e0286 ;(e8d6 8E 86 02)
rts ;(e8d9 60)
;------------------------------------------------------------------------
;CBM Color Codes Table
;------------------------------------------------------------------------
cgcolorcodes: .byte $90,$05,$1C,$9F,$9C,$1E,$1F,$9E;(e8da) (e8da ........)
.byte $81,$95,$96,$97,$98,$99,$9A,$9B;(e8e2) (e8e2 ........)
iE8EA: lda SAL ;(e8ea A5 AC) Pointer: Tape Buffer/Screen scrolling.
pha ;(e8ec 48)
lda SAL+$0001 ;(e8ed A5 AD) Pointer: Tape Buffer/Screen scrolling.
pha ;(e8ef 48)
lda EAL ;(e8f0 A5 AE) Tape End Address/End of Program.
pha ;(e8f2 48)
lda EAL+$0001 ;(e8f3 A5 AF) Tape End Address/End of Program.
pha ;(e8f5 48)
iE8F6: ldx #$FF ;(e8f6 A2 FF)
dec TBLX ;(e8f8 C6 D6) Current Screen Line number of Cursor.
dec LXSP ;(e8fa C6 C9) Cursor X/Y (Line/Column) position at start of Input.
dec e02A5 ;(e8fc CE A5 02)
iE8FF: inx ;(e8ff E8)
jsr iE9F0 ;(e900 20 F0 E9)
cpx #$18 ;(e903 E0 18)
bcs iE913 ;(e905 B0 0C)
lda scrnlsbtab+$0001,X ;(e907 BD F1 EC) Screenlines LSB Table
sta SAL ;(e90a 85 AC) Pointer: Tape Buffer/Screen scrolling.
lda LDTB1+$0001,X ;(e90c B5 DA) Screen Line link Table/Editor temporaries. High Byte of Line Screen Memory Location.
jsr iE9C8 ;(e90e 20 C8 E9)
bmi iE8FF ;(e911 30 EC)
iE913: jsr iE9FF ;(e913 20 FF E9)
ldx #$00 ;(e916 A2 00)
iE918: lda LDTB1,X ;(e918 B5 D9) Screen Line link Table/Editor temporaries. High Byte of Line Screen Memory Location.
and #$7F ;(e91a 29 7F)
ldy LDTB1+$0001,X ;(e91c B4 DA) Screen Line link Table/Editor temporaries. High Byte of Line Screen Memory Location.
bpl iE922 ;(e91e 10 02)
ora #$80 ;(e920 09 80)
iE922: sta LDTB1,X ;(e922 95 D9) Screen Line link Table/Editor temporaries. High Byte of Line Screen Memory Location.
inx ;(e924 E8)
cpx #$18 ;(e925 E0 18)
bne iE918 ;(e927 D0 EF)
lda zpF1 ;(e929 A5 F1)
ora #$80 ;(e92b 09 80)
sta zpF1 ;(e92d 85 F1)
lda LDTB1 ;(e92f A5 D9) Screen Line link Table/Editor temporaries. High Byte of Line Screen Memory Location.
bpl iE8F6 ;(e931 10 C3)
inc TBLX ;(e933 E6 D6) Current Screen Line number of Cursor.
inc e02A5 ;(e935 EE A5 02)
lda #$7F ;(e938 A9 7F)
sta __CIA1__ ;(e93a 8D 00 DC) Complex Interface Adapter 1
lda __CIA1__+$0001 ;(e93d AD 01 DC) Complex Interface Adapter 1
cmp #$FB ;(e940 C9 FB)
php ;(e942 08)
lda #$7F ;(e943 A9 7F)
sta __CIA1__ ;(e945 8D 00 DC) Complex Interface Adapter 1
plp ;(e948 28)
bne iE956 ;(e949 D0 0B)
ldy #$00 ;(e94b A0 00)
iE94D: nop ;(e94d EA)
dex ;(e94e CA)
bne iE94D ;(e94f D0 FC)
dey ;(e951 88)
bne iE94D ;(e952 D0 F9)
sty NDX ;(e954 84 C6) Number of Characters in Keyboard Buffer queue.
iE956: ldx TBLX ;(e956 A6 D6) Current Screen Line number of Cursor.
iE958: pla ;(e958 68)
sta EAL+$0001 ;(e959 85 AF) Tape End Address/End of Program.
pla ;(e95b 68)
sta EAL ;(e95c 85 AE) Tape End Address/End of Program.
pla ;(e95e 68)
sta SAL+$0001 ;(e95f 85 AD) Pointer: Tape Buffer/Screen scrolling.
pla ;(e961 68)
sta SAL ;(e962 85 AC) Pointer: Tape Buffer/Screen scrolling.
rts ;(e964 60)
;------------------------------------------------------------------------
iE965: ldx TBLX ;(e965 A6 D6) Current Screen Line number of Cursor.
iE967: inx ;(e967 E8)
lda LDTB1,X ;(e968 B5 D9) Screen Line link Table/Editor temporaries. High Byte of Line Screen Memory Location.
bpl iE967 ;(e96a 10 FB)
stx e02A5 ;(e96c 8E A5 02)
cpx #$18 ;(e96f E0 18)
beq iE981 ;(e971 F0 0E)
bcc iE981 ;(e973 90 0C)
jsr iE8EA ;(e975 20 EA E8)
ldx e02A5 ;(e978 AE A5 02)
dex ;(e97b CA)
dec TBLX ;(e97c C6 D6) Current Screen Line number of Cursor.
jmp iE6DA ;(e97e 4C DA E6)
;------------------------------------------------------------------------
iE981: lda SAL ;(e981 A5 AC) Pointer: Tape Buffer/Screen scrolling.
pha ;(e983 48)
lda SAL+$0001 ;(e984 A5 AD) Pointer: Tape Buffer/Screen scrolling.
pha ;(e986 48)
lda EAL ;(e987 A5 AE) Tape End Address/End of Program.
pha ;(e989 48)
lda EAL+$0001 ;(e98a A5 AF) Tape End Address/End of Program.
pha ;(e98c 48)
ldx #$19 ;(e98d A2 19)
iE98F: dex ;(e98f CA)
jsr iE9F0 ;(e990 20 F0 E9)
cpx e02A5 ;(e993 EC A5 02)
bcc iE9A6 ;(e996 90 0E)
beq iE9A6 ;(e998 F0 0C)
lda iECEF,X ;(e99a BD EF EC)
sta SAL ;(e99d 85 AC) Pointer: Tape Buffer/Screen scrolling.
lda INSRT ,X ;(e99f B5 D8) Count of number of inserts outstanding.
jsr iE9C8 ;(e9a1 20 C8 E9)
bmi iE98F ;(e9a4 30 E9)
iE9A6: jsr iE9FF ;(e9a6 20 FF E9)
ldx #$17 ;(e9a9 A2 17)
iE9AB: cpx e02A5 ;(e9ab EC A5 02)
bcc iE9BF ;(e9ae 90 0F)
lda LDTB1+$0001,X ;(e9b0 B5 DA) Screen Line link Table/Editor temporaries. High Byte of Line Screen Memory Location.
and #$7F ;(e9b2 29 7F)
ldy LDTB1,X ;(e9b4 B4 D9) Screen Line link Table/Editor temporaries. High Byte of Line Screen Memory Location.
bpl iE9BA ;(e9b6 10 02)
ora #$80 ;(e9b8 09 80)
iE9BA: sta LDTB1+$0001,X ;(e9ba 95 DA) Screen Line link Table/Editor temporaries. High Byte of Line Screen Memory Location.
dex ;(e9bc CA)
bne iE9AB ;(e9bd D0 EC)
iE9BF: ldx e02A5 ;(e9bf AE A5 02)
jsr iE6DA ;(e9c2 20 DA E6)
jmp iE958 ;(e9c5 4C 58 E9)
;------------------------------------------------------------------------
iE9C8: and #$03 ;(e9c8 29 03)
ora e0288 ;(e9ca 0D 88 02)
sta SAL+$0001 ;(e9cd 85 AD) Pointer: Tape Buffer/Screen scrolling.
jsr iE9E0 ;(e9cf 20 E0 E9)
ldy #$27 ;(e9d2 A0 27)
iE9D4: lda (SAL),Y ;(e9d4 B1 AC) Pointer: Tape Buffer/Screen scrolling.
sta (PNT),Y ;(e9d6 91 D1) Pointer: Current Screen Line Address.
lda (EAL),Y ;(e9d8 B1 AE) Tape End Address/End of Program.
sta (USER),Y ;(e9da 91 F3) Pointer: Current Colour RAM Location.
dey ;(e9dc 88)
bpl iE9D4 ;(e9dd 10 F5)
rts ;(e9df 60)
;------------------------------------------------------------------------
iE9E0: jsr iEA24 ;(e9e0 20 24 EA)
lda SAL ;(e9e3 A5 AC) Pointer: Tape Buffer/Screen scrolling.
sta EAL ;(e9e5 85 AE) Tape End Address/End of Program.
lda SAL+$0001 ;(e9e7 A5 AD) Pointer: Tape Buffer/Screen scrolling.
and #$03 ;(e9e9 29 03)
ora #$D8 ;(e9eb 09 D8)
sta EAL+$0001 ;(e9ed 85 AF) Tape End Address/End of Program.
rts ;(e9ef 60)
;------------------------------------------------------------------------
iE9F0: lda scrnlsbtab,X ;(e9f0 BD F0 EC) Screenlines LSB Table
sta PNT ;(e9f3 85 D1) Pointer: Current Screen Line Address.
lda LDTB1,X ;(e9f5 B5 D9) Screen Line link Table/Editor temporaries. High Byte of Line Screen Memory Location.
and #$03 ;(e9f7 29 03)
ora e0288 ;(e9f9 0D 88 02)
sta PNT+$0001 ;(e9fc 85 D2) Pointer: Current Screen Line Address.
rts ;(e9fe 60)
;------------------------------------------------------------------------
iE9FF: ldy #$27 ;(e9ff A0 27)
jsr iE9F0 ;(ea01 20 F0 E9)
jsr iEA24 ;(ea04 20 24 EA)
iEA07: lda #$20 ;(ea07 A9 20)
sta (PNT),Y ;(ea09 91 D1) Pointer: Current Screen Line Address.
jsr iE4DA ;(ea0b 20 DA E4)
nop ;(ea0e EA)
dey ;(ea0f 88)
bpl iEA07 ;(ea10 10 F5)
rts ;(ea12 60)
;------------------------------------------------------------------------
iEA13: tay ;(ea13 A8)
lda #$02 ;(ea14 A9 02)
sta BLNCT ;(ea16 85 CD) Timer: Count down for Cursor blink toggle.
jsr iEA24 ;(ea18 20 24 EA)
tya ;(ea1b 98)
iEA1C: ldy PNTR ;(ea1c A4 D3) Cursor Column on current Line
sta (PNT),Y ;(ea1e 91 D1) Pointer: Current Screen Line Address.
txa ;(ea20 8A)
sta (USER),Y ;(ea21 91 F3) Pointer: Current Colour RAM Location.
rts ;(ea23 60)
;------------------------------------------------------------------------
iEA24: lda PNT ;(ea24 A5 D1) Pointer: Current Screen Line Address.
sta USER ;(ea26 85 F3) Pointer: Current Colour RAM Location.
lda PNT+$0001 ;(ea28 A5 D2) Pointer: Current Screen Line Address.
and #$03 ;(ea2a 29 03)
ora #$D8 ;(ea2c 09 D8)
sta zpF4 ;(ea2e 85 F4)
rts ;(ea30 60)
;------------------------------------------------------------------------
;entrypoint at $ea31
;------------------------------------------------------------------------
jsr udtim ;(ea31 20 EA FF)
lda BLNSW ;(ea34 A5 CC) Flag: Cursor blink $00 = Enabled
bne iEA61 ;(ea36 D0 29)
dec BLNCT ;(ea38 C6 CD) Timer: Count down for Cursor blink toggle.
bne iEA61 ;(ea3a D0 25)
lda #$14 ;(ea3c A9 14)
sta BLNCT ;(ea3e 85 CD) Timer: Count down for Cursor blink toggle.
ldy PNTR ;(ea40 A4 D3) Cursor Column on current Line
lsr BLNON ;(ea42 46 CF) Flag: Cursor Status $00 = Off
ldx e0287 ;(ea44 AE 87 02)
lda (PNT),Y ;(ea47 B1 D1) Pointer: Current Screen Line Address.
bcs iEA5C ;(ea49 B0 11)
inc BLNON ;(ea4b E6 CF) Flag: Cursor Status $00 = Off
sta GDBLN ;(ea4d 85 CE) Character under Cursor while Cursor Inverted.
jsr iEA24 ;(ea4f 20 24 EA)
lda (USER),Y ;(ea52 B1 F3) Pointer: Current Colour RAM Location.
sta e0287 ;(ea54 8D 87 02)
ldx e0286 ;(ea57 AE 86 02)
lda GDBLN ;(ea5a A5 CE) Character under Cursor while Cursor Inverted.
iEA5C: eor #$80 ;(ea5c 49 80)
iEA5E: ;(ea5e)
iEA60 = iEA5E+$02 ;(ea60)
jsr iEA1C ;(ea5e 20 1C EA)
iEA61: lda __CPUIO1__ ;(ea61 A5 01) Cpu-Port Data
and #$10 ;(ea63 29 10)
beq iEA71 ;(ea65 F0 0A)
ldy #$00 ;(ea67 A0 00)
sty CAS1 ;(ea69 84 C0) Tape Motor Switch.
lda __CPUIO1__ ;(ea6b A5 01) Cpu-Port Data
ora #$20 ;(ea6d 09 20)
bne iEA79 ;(ea6f D0 08)
iEA71: lda CAS1 ;(ea71 A5 C0) Tape Motor Switch.
bne iEA7B ;(ea73 D0 06)
lda __CPUIO1__ ;(ea75 A5 01) Cpu-Port Data
and #$1F ;(ea77 29 1F)
iEA79: sta __CPUIO1__ ;(ea79 85 01) Cpu-Port Data
iEA7B: jsr iEA87 ;(ea7b 20 87 EA)
lda eDC0D ;(ea7e AD 0D DC)
pla ;(ea81 68)
tay ;(ea82 A8)
pla ;(ea83 68)
tax ;(ea84 AA)
pla ;(ea85 68)
rti ;(ea86 40)
iEA87: lda #$00 ;(ea87 A9 00)
sta e028D ;(ea89 8D 8D 02)
ldy #$40 ;(ea8c A0 40)
sty SFDX ;(ea8e 84 CB) Flag: Print shifted Characters.
sta __CIA1__ ;(ea90 8D 00 DC) Complex Interface Adapter 1
ldx __CIA1__+$0001 ;(ea93 AE 01 DC) Complex Interface Adapter 1
cpx #$FF ;(ea96 E0 FF)
beq iEAFB ;(ea98 F0 61)
tay ;(ea9a A8)
lda #$81 ;(ea9b A9 81)
sta KEYTAB ;(ea9d 85 F5) Vector: Current Keyboard decoding Table. ($EB81)
lda #$EB ;(ea9f A9 EB)
sta KEYTAB+$0001 ;(eaa1 85 F6) Vector: Current Keyboard decoding Table. ($EB81)
lda #$FE ;(eaa3 A9 FE)
sta __CIA1__ ;(eaa5 8D 00 DC) Complex Interface Adapter 1
iEAA8: ldx #$08 ;(eaa8 A2 08)
pha ;(eaaa 48)
iEAAB: lda __CIA1__+$0001 ;(eaab AD 01 DC) Complex Interface Adapter 1
cmp __CIA1__+$0001 ;(eaae CD 01 DC) Complex Interface Adapter 1
bne iEAAB ;(eab1 D0 F8)
iEAB3: lsr A ;(eab3 4A)
bcs iEACC ;(eab4 B0 16)
pha ;(eab6 48)
lda (KEYTAB),Y ;(eab7 B1 F5) Vector: Current Keyboard decoding Table. ($EB81)
cmp #$05 ;(eab9 C9 05)
bcs iEAC9 ;(eabb B0 0C)
cmp #$03 ;(eabd C9 03)
beq iEAC9 ;(eabf F0 08)
ora e028D ;(eac1 0D 8D 02)
sta e028D ;(eac4 8D 8D 02)
bpl iEACB ;(eac7 10 02)
iEAC9: sty SFDX ;(eac9 84 CB) Flag: Print shifted Characters.
iEACB: pla ;(eacb 68)
iEACC: iny ;(eacc C8)
cpy #$41 ;(eacd C0 41)
bcs iEADC ;(eacf B0 0B)
dex ;(ead1 CA)
bne iEAB3 ;(ead2 D0 DF)
sec ;(ead4 38)
pla ;(ead5 68)
rol A ;(ead6 2A)
sta __CIA1__ ;(ead7 8D 00 DC) Complex Interface Adapter 1
bne iEAA8 ;(eada D0 CC)
iEADC: pla ;(eadc 68)
jmp (e028F) ;(eadd 6C 8F 02) *($028f)=$0000
;------------------------------------------------------------------------
iEAE0: ldy SFDX ;(eae0 A4 CB) Flag: Print shifted Characters.
lda (KEYTAB),Y ;(eae2 B1 F5) Vector: Current Keyboard decoding Table. ($EB81)
tax ;(eae4 AA)
cpy LSTX ;(eae5 C4 C5) Matrix value of last Key pressed No Key = $40.
beq iEAF0 ;(eae7 F0 07)
ldy #$10 ;(eae9 A0 10)
sty e028C ;(eaeb 8C 8C 02)
bne iEB26 ;(eaee D0 36)
iEAF0: and #$7F ;(eaf0 29 7F)
bit e028A ;(eaf2 2C 8A 02)
bmi iEB0D ;(eaf5 30 16)
bvs iEB42 ;(eaf7 70 49)
cmp #$7F ;(eaf9 C9 7F)
iEAFB: beq iEB26 ;(eafb F0 29)
cmp #$14 ;(eafd C9 14)
beq iEB0D ;(eaff F0 0C)
cmp #$20 ;(eb01 C9 20)
beq iEB0D ;(eb03 F0 08)
cmp #$1D ;(eb05 C9 1D)
beq iEB0D ;(eb07 F0 04)
cmp #$11 ;(eb09 C9 11)
bne iEB42 ;(eb0b D0 35)
iEB0D: ldy e028C ;(eb0d AC 8C 02)
beq iEB17 ;(eb10 F0 05)
dec e028C ;(eb12 CE 8C 02)
bne iEB42 ;(eb15 D0 2B)
iEB17: dec e028B ;(eb17 CE 8B 02)
bne iEB42 ;(eb1a D0 26)
ldy #$04 ;(eb1c A0 04)
sty e028B ;(eb1e 8C 8B 02)
ldy NDX ;(eb21 A4 C6) Number of Characters in Keyboard Buffer queue.
dey ;(eb23 88)
bpl iEB42 ;(eb24 10 1C)
iEB26: ldy SFDX ;(eb26 A4 CB) Flag: Print shifted Characters.
sty LSTX ;(eb28 84 C5) Matrix value of last Key pressed No Key = $40.
ldy e028D ;(eb2a AC 8D 02)
sty e028E ;(eb2d 8C 8E 02)
cpx #$FF ;(eb30 E0 FF)
beq iEB42 ;(eb32 F0 0E)
txa ;(eb34 8A)
ldx NDX ;(eb35 A6 C6) Number of Characters in Keyboard Buffer queue.
cpx e0289 ;(eb37 EC 89 02)
bcs iEB42 ;(eb3a B0 06)
sta e0277,X ;(eb3c 9D 77 02)
inx ;(eb3f E8)
stx NDX ;(eb40 86 C6) Number of Characters in Keyboard Buffer queue.
iEB42: lda #$7F ;(eb42 A9 7F)
sta __CIA1__ ;(eb44 8D 00 DC) Complex Interface Adapter 1
rts ;(eb47 60)
;------------------------------------------------------------------------
;entrypoint at $eb48
;------------------------------------------------------------------------
lda e028D ;(eb48 AD 8D 02)
cmp #$03 ;(eb4b C9 03)
bne iEB64 ;(eb4d D0 15)
cmp e028E ;(eb4f CD 8E 02)
beq iEB42 ;(eb52 F0 EE)
lda e0291 ;(eb54 AD 91 02)
bmi iEB76 ;(eb57 30 1D)
lda VIC_CHRSCRN ;(eb59 AD 18 D0) char and screen base
eor #$02 ;(eb5c 49 02)
sta VIC_CHRSCRN ;(eb5e 8D 18 D0) char and screen base
jmp iEB76 ;(eb61 4C 76 EB)
;------------------------------------------------------------------------
iEB64: asl A ;(eb64 0A)
cmp #$08 ;(eb65 C9 08)
bcc iEB6B ;(eb67 90 02)
lda #$06 ;(eb69 A9 06)
iEB6B: tax ;(eb6b AA)
lda keytabptr,X ;(eb6c BD 79 EB) Pointer to Keyboard decoding tables 1-4
sta KEYTAB ;(eb6f 85 F5) Vector: Current Keyboard decoding Table. ($EB81)
lda keytabptr+$0001,X ;(eb71 BD 7A EB) Pointer to Keyboard decoding tables 1-4
sta KEYTAB+$0001 ;(eb74 85 F6) Vector: Current Keyboard decoding Table. ($EB81)
iEB76: jmp iEAE0 ;(eb76 4C E0 EA)
;------------------------------------------------------------------------
keytabptr: ;(eb79)
iEB7A = keytabptr+$01 ;(eb7a)
;Pointer to Keyboard decoding tables 1-4
;------------------------------------------------------------------------
.byte $81,$EB,$C2,$EB,$03,$EC,$78,$EC;(eb79) (eb79 ..B.....)
;Keyboard decoding table 1
;------------------------------------------------------------------------
.byte $14,$0D,$1D,$88,$85,$86,$87,$11;(eb81) (eb81 ........)
.byte $33,$57,$41,$34,$5A,$53,$45,$01;(eb89) (eb89 3wa4zse.)
.byte $35,$52,$44,$36,$43,$46,$54,$58;(eb91) (eb91 5rd6cftx)
.byte $37,$59,$47,$38,$42,$48,$55,$56;(eb99) (eb99 7yg8bhuv)
.byte $39,$49,$4A,$30,$4D,$4B,$4F,$4E;(eba1) (eba1 9ij0mkon)
.byte $2B,$50,$4C,$2D,$2E,$3A,$40,$2C;(eba9) (eba9 +pl-.:@,)
.byte $5C,$2A,$3B,$13,$01,$3D,$5E,$2F;(ebb1) (ebb1 .*;..=^/)
.byte $31,$5F,$04,$32,$20,$02,$51,$03;(ebb9) (ebb9 1..2 .q.)
.byte $FF,$94,$8D,$9D,$8C,$89,$8A,$8B;(ebc1) (ebc1 ........)
.byte $91,$23,$D7,$C1,$24,$DA,$D3,$C5;(ebc9) (ebc9 .#WA$ZSE)
.byte $01,$25,$D2,$C4,$26,$C3,$C6,$D4;(ebd1) (ebd1 .%RD&CFT)
.byte $D8,$27,$D9,$C7,$28,$C2,$C8,$D5;(ebd9) (ebd9 X'YG(BHU)
.byte $D6,$29,$C9,$CA,$30,$CD,$CB,$CF;(ebe1) (ebe1 V)IJ0MKO)
.byte $CE,$DB,$D0,$CC,$DD,$3E,$5B,$BA;(ebe9) (ebe9 N.PL.>[.)
.byte $3C,$A9,$C0,$5D,$93,$01,$3D,$DE;(ebf1) (ebf1 <..]..=.)
.byte $3F,$21,$5F,$04,$22,$A0,$02,$D1;(ebf9) (ebf9 ?!.."..Q)
;IO Kernal ROM
;------------------------------------------------------------------------
.byte $83,$FF,$94,$8D,$9D,$8C,$89,$8A;(ec01) (ec01 ........)
.byte $8B,$91,$96,$B3,$B0,$97,$AD,$AE;(ec09) (ec09 ........)
.byte $B1,$01,$98,$B2,$AC,$99,$BC,$BB;(ec11) (ec11 ........)
.byte $A3,$BD,$9A,$B7,$A5,$9B,$BF,$B4;(ec19) (ec19 ........)
.byte $B8,$BE,$29,$A2,$B5,$30,$A7,$A1;(ec21) (ec21 ..)..0..)
.byte $B9,$AA,$A6,$AF,$B6,$DC,$3E,$5B;(ec29) (ec29 ..._..>[)
.byte $A4,$3C,$A8,$DF,$5D,$93,$01,$3D;(ec31) (ec31 .<..]..=)
.byte $DE,$3F,$81,$5F,$04,$95,$A0,$02;(ec39) (ec39 .?......)
.byte $AB,$83,$FF ;(ec41) (ec41 ...)
iEC44: cmp #$0E ;(ec44 C9 0E)
bne iEC4F ;(ec46 D0 07)
lda VIC_CHRSCRN ;(ec48 AD 18 D0) char and screen base
ora #$02 ;(ec4b 09 02)
bne iEC58 ;(ec4d D0 09)
iEC4F: cmp #$8E ;(ec4f C9 8E)
bne iEC5E ;(ec51 D0 0B)
lda VIC_CHRSCRN ;(ec53 AD 18 D0) char and screen base
and #$FD ;(ec56 29 FD)
iEC58: sta VIC_CHRSCRN ;(ec58 8D 18 D0) char and screen base
iEC5B: jmp iE6A8 ;(ec5b 4C A8 E6)
;------------------------------------------------------------------------
iEC5E: cmp #$08 ;(ec5e C9 08)
bne iEC69 ;(ec60 D0 07)
lda #$80 ;(ec62 A9 80)
ora e0291 ;(ec64 0D 91 02)
bmi iEC72 ;(ec67 30 09)
iEC69: cmp #$09 ;(ec69 C9 09)
bne iEC5B ;(ec6b D0 EE)
lda #$7F ;(ec6d A9 7F)
and e0291 ;(ec6f 2D 91 02)
iEC72: sta e0291 ;(ec72 8D 91 02)
jmp iE6A8 ;(ec75 4C A8 E6)
;------------------------------------------------------------------------
;Keyboard decoding table 4 with ctrl
;------------------------------------------------------------------------
.byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF;(ec78) (ec78 ........)
.byte $1C,$17,$01,$9F,$1A,$13,$05,$FF;(ec80) (ec80 ........)
.byte $9C,$12,$04,$1E,$03,$06,$14,$18;(ec88) (ec88 ........)
.byte $1F,$19,$07,$9E,$02,$08,$15,$16;(ec90) (ec90 ........)
.byte $12,$09,$0A,$92,$0D,$0B,$0F,$0E;(ec98) (ec98 ........)
.byte $FF,$10,$0C,$FF,$FF,$1B,$00,$FF;(eca0) (eca0 ........)
.byte $1C,$FF,$1D,$FF,$FF,$1F,$1E,$FF;(eca8) (eca8 ........)
.byte $90,$06,$FF,$05,$FF,$FF,$11,$FF;(ecb0) (ecb0 ........)
iECB8: .byte $FF,$00,$00,$00,$00,$00,$00,$00;(ecb8) (ecb8 ........)
.byte $00,$00,$00,$00,$00,$00,$00,$00;(ecc0) (ecc0 ........)
.byte $00,$00,$9B,$37,$00,$00,$00,$08;(ecc8) (ecc8 ...7....)
.byte $00,$14,$0F,$00,$00,$00,$00,$00;(ecd0) (ecd0 ........)
.byte $00,$0E,$06,$01,$02,$03,$04,$00;(ecd8) (ecd8 ........)
iECE0: ;(ece0) Unused. Free for user programs.
iECE6 = iECE0+$06 ;(ece6)
.byte $01,$02,$03,$04,$05,$06,$07,$4C;(ece0) (ece0 .......l)
iECE8: ;(ece8) Pointer: Used by READ - current DATA Item Address.
iECEF = iECE8+$07 ;(ecef)
.byte $4F,$41,$44,$0D,$52,$55,$4E,$0D;(ece8) (ece8 oad.run.)
scrnlsbtab: ;(ecf0)
iECF1 = scrnlsbtab+$01 ;(ecf1)
;Screenlines LSB Table
;------------------------------------------------------------------------
.byte $00,$28,$50,$78,$A0,$C8,$F0,$18;(ecf0) (ecf0 .(p..H..)
.byte $40,$68,$90,$B8,$E0,$08,$30,$58;(ecf8) (ecf8 @.....0x)
.byte $80,$A8,$D0,$F8,$20,$48,$70,$98;(ed00) (ed00 ..P. h..)
.byte $C0 ;(ed08) (ed08 .)
iED09: ora #$40 ;(ed09 09 40)
iED0B: ;(ed0b) Screen Column for last TAB.
iED0C = iED0B+$01 ;(ed0c)
bit e2009 ;(ed0b 2C 09 20)
jsr iF0A4 ;(ed0e 20 A4 F0)
iED11: pha ;(ed11 48)
bit C3PO ;(ed12 24 94) Flag: Serial Bus - Output Character buffered.
bpl iED20 ;(ed14 10 0A)
sec ;(ed16 38)
ror TSFCNT ;(ed17 66 A3) Bit Counter Tape Read or Write/Serial Bus EOI (End Of Input) Flag.
jsr iED40 ;(ed19 20 40 ED)
lsr C3PO ;(ed1c 46 94) Flag: Serial Bus - Output Character buffered.
lsr TSFCNT ;(ed1e 46 A3) Bit Counter Tape Read or Write/Serial Bus EOI (End Of Input) Flag.
iED20: pla ;(ed20 68)
sta BSOUR ;(ed21 85 95) Buffered Character for Serial Bus.
sei ;(ed23 78)
jsr iEE97 ;(ed24 20 97 EE)
cmp #$3F ;(ed27 C9 3F)
bne iED2E ;(ed29 D0 03)
jsr iEE85 ;(ed2b 20 85 EE)
iED2E: lda CIA2 ;(ed2e AD 00 DD) Complex Adapter Interface 2
ora #$08 ;(ed31 09 08)
sta CIA2 ;(ed33 8D 00 DD) Complex Adapter Interface 2
iED36: sei ;(ed36 78)
jsr iEE8E ;(ed37 20 8E EE)
jsr iEE97 ;(ed3a 20 97 EE)
jsr iEEB3 ;(ed3d 20 B3 EE)
iED40: sei ;(ed40 78)
jsr iEE97 ;(ed41 20 97 EE)
jsr iEEA9 ;(ed44 20 A9 EE)
bcs iEDAD ;(ed47 B0 64)
jsr iEE85 ;(ed49 20 85 EE)
bit TSFCNT ;(ed4c 24 A3) Bit Counter Tape Read or Write/Serial Bus EOI (End Of Input) Flag.
bpl iED5A ;(ed4e 10 0A)
iED50: jsr iEEA9 ;(ed50 20 A9 EE)
bcc iED50 ;(ed53 90 FB)
iED55: jsr iEEA9 ;(ed55 20 A9 EE)
bcs iED55 ;(ed58 B0 FB)
iED5A: jsr iEEA9 ;(ed5a 20 A9 EE)
bcc iED5A ;(ed5d 90 FB)
jsr iEE8E ;(ed5f 20 8E EE)
lda #$08 ;(ed62 A9 08)
sta CNTDN ;(ed64 85 A5) Tape Synchronising count down.
iED66: lda CIA2 ;(ed66 AD 00 DD) Complex Adapter Interface 2
cmp CIA2 ;(ed69 CD 00 DD) Complex Adapter Interface 2
bne iED66 ;(ed6c D0 F8)
asl A ;(ed6e 0A)
bcc iEDB0 ;(ed6f 90 3F)
ror BSOUR ;(ed71 66 95) Buffered Character for Serial Bus.
bcs iED7A ;(ed73 B0 05)
jsr iEEA0 ;(ed75 20 A0 EE)
bne iED7D ;(ed78 D0 03)
iED7A: jsr iEE97 ;(ed7a 20 97 EE)
iED7D: jsr iEE85 ;(ed7d 20 85 EE)
nop ;(ed80 EA)
nop ;(ed81 EA)
nop ;(ed82 EA)
nop ;(ed83 EA)
lda CIA2 ;(ed84 AD 00 DD) Complex Adapter Interface 2
and #$DF ;(ed87 29 DF)
ora #$10 ;(ed89 09 10)
sta CIA2 ;(ed8b 8D 00 DD) Complex Adapter Interface 2
dec CNTDN ;(ed8e C6 A5) Tape Synchronising count down.
bne iED66 ;(ed90 D0 D4)
lda #$04 ;(ed92 A9 04)
sta eDC07 ;(ed94 8D 07 DC)
lda #$19 ;(ed97 A9 19)
sta eDC0F ;(ed99 8D 0F DC)
lda eDC0D ;(ed9c AD 0D DC)
iED9F: lda eDC0D ;(ed9f AD 0D DC)
and #$02 ;(eda2 29 02)
bne iEDB0 ;(eda4 D0 0A)
jsr iEEA9 ;(eda6 20 A9 EE)
bcs iED9F ;(eda9 B0 F4)
cli ;(edab 58)
rts ;(edac 60)
;------------------------------------------------------------------------
iEDAD: lda #$80 ;(edad A9 80)
iEDAF: ;(edaf) RS232 Flag: Start Bit check/Tape temporary.
iEDB0 = iEDAF+$01 ;(edb0)
bit e03A9 ;(edaf 2C A9 03)
iEDB2: jsr iFE1C ;(edb2 20 1C FE)
cli ;(edb5 58)
clc ;(edb6 18)
bcc iEE03 ;(edb7 90 4A)
iEDB9: sta BSOUR ;(edb9 85 95) Buffered Character for Serial Bus.
jsr iED36 ;(edbb 20 36 ED)
iEDBE: lda CIA2 ;(edbe AD 00 DD) Complex Adapter Interface 2
and #$F7 ;(edc1 29 F7)
sta CIA2 ;(edc3 8D 00 DD) Complex Adapter Interface 2
rts ;(edc6 60)
;------------------------------------------------------------------------
iEDC7: sta BSOUR ;(edc7 85 95) Buffered Character for Serial Bus.
jsr iED36 ;(edc9 20 36 ED)
iEDCC: sei ;(edcc 78)
jsr iEEA0 ;(edcd 20 A0 EE)
jsr iEDBE ;(edd0 20 BE ED)
jsr iEE85 ;(edd3 20 85 EE)
iEDD6: jsr iEEA9 ;(edd6 20 A9 EE)
bmi iEDD6 ;(edd9 30 FB)
cli ;(eddb 58)
rts ;(eddc 60)
;------------------------------------------------------------------------
iEDDD: bit C3PO ;(eddd 24 94) Flag: Serial Bus - Output Character buffered.
bmi iEDE6 ;(eddf 30 05)
sec ;(ede1 38)
ror C3PO ;(ede2 66 94) Flag: Serial Bus - Output Character buffered.
bne iEDEB ;(ede4 D0 05)
iEDE6: pha ;(ede6 48)
jsr iED40 ;(ede7 20 40 ED)
pla ;(edea 68)
iEDEB: sta BSOUR ;(edeb 85 95) Buffered Character for Serial Bus.
clc ;(eded 18)
rts ;(edee 60)
;------------------------------------------------------------------------
iEDEF: sei ;(edef 78)
jsr iEE8E ;(edf0 20 8E EE)
lda CIA2 ;(edf3 AD 00 DD) Complex Adapter Interface 2
ora #$08 ;(edf6 09 08)
sta CIA2 ;(edf8 8D 00 DD) Complex Adapter Interface 2
lda #$5F ;(edfb A9 5F)
iEDFD: ;(edfd) RS232 Flag: Start Bit check/Tape temporary.
iEDFE = iEDFD+$01 ;(edfe)
bit e3FA9 ;(edfd 2C A9 3F)
jsr iED11 ;(ee00 20 11 ED)
iEE03: jsr iEDBE ;(ee03 20 BE ED)
iEE06: txa ;(ee06 8A)
ldx #$0A ;(ee07 A2 0A)
iEE09: dex ;(ee09 CA)
bne iEE09 ;(ee0a D0 FD)
tax ;(ee0c AA)
jsr iEE85 ;(ee0d 20 85 EE)
jmp iEE97 ;(ee10 4C 97 EE)
;------------------------------------------------------------------------
iEE13: sei ;(ee13 78)
lda #$00 ;(ee14 A9 00)
sta CNTDN ;(ee16 85 A5) Tape Synchronising count down.
jsr iEE85 ;(ee18 20 85 EE)
iEE1B: jsr iEEA9 ;(ee1b 20 A9 EE)
bpl iEE1B ;(ee1e 10 FB)
iEE20: lda #$01 ;(ee20 A9 01)
sta eDC07 ;(ee22 8D 07 DC)
lda #$19 ;(ee25 A9 19)
sta eDC0F ;(ee27 8D 0F DC)
jsr iEE97 ;(ee2a 20 97 EE)
lda eDC0D ;(ee2d AD 0D DC)
iEE30: lda eDC0D ;(ee30 AD 0D DC)
and #$02 ;(ee33 29 02)
bne iEE3E ;(ee35 D0 07)
jsr iEEA9 ;(ee37 20 A9 EE)
bmi iEE30 ;(ee3a 30 F4)
bpl iEE56 ;(ee3c 10 18)
iEE3E: lda CNTDN ;(ee3e A5 A5) Tape Synchronising count down.
beq iEE47 ;(ee40 F0 05)
lda #$02 ;(ee42 A9 02)
jmp iEDB2 ;(ee44 4C B2 ED)
;------------------------------------------------------------------------
iEE47: jsr iEEA0 ;(ee47 20 A0 EE)
jsr iEE85 ;(ee4a 20 85 EE)
lda #$40 ;(ee4d A9 40)
jsr iFE1C ;(ee4f 20 1C FE)
inc CNTDN ;(ee52 E6 A5) Tape Synchronising count down.
bne iEE20 ;(ee54 D0 CA)
iEE56: lda #$08 ;(ee56 A9 08)
sta CNTDN ;(ee58 85 A5) Tape Synchronising count down.
iEE5A: lda CIA2 ;(ee5a AD 00 DD) Complex Adapter Interface 2
cmp CIA2 ;(ee5d CD 00 DD) Complex Adapter Interface 2
bne iEE5A ;(ee60 D0 F8)
asl A ;(ee62 0A)
bpl iEE5A ;(ee63 10 F5)
ror TBTCNT ;(ee65 66 A4) Pulse Counter Tape Read or Write/Serial Bus shift Counter.
iEE67: lda CIA2 ;(ee67 AD 00 DD) Complex Adapter Interface 2
cmp CIA2 ;(ee6a CD 00 DD) Complex Adapter Interface 2
bne iEE67 ;(ee6d D0 F8)
asl A ;(ee6f 0A)
bmi iEE67 ;(ee70 30 F5)
dec CNTDN ;(ee72 C6 A5) Tape Synchronising count down.
bne iEE5A ;(ee74 D0 E4)
jsr iEEA0 ;(ee76 20 A0 EE)
bit STATUS ;(ee79 24 90) Kernal I/O Status Word ST.
bvc iEE80 ;(ee7b 50 03)
jsr iEE06 ;(ee7d 20 06 EE)
iEE80: lda TBTCNT ;(ee80 A5 A4) Pulse Counter Tape Read or Write/Serial Bus shift Counter.
cli ;(ee82 58)
clc ;(ee83 18)
rts ;(ee84 60)
;------------------------------------------------------------------------
iEE85: lda CIA2 ;(ee85 AD 00 DD) Complex Adapter Interface 2
and #$EF ;(ee88 29 EF)
sta CIA2 ;(ee8a 8D 00 DD) Complex Adapter Interface 2
rts ;(ee8d 60)
;------------------------------------------------------------------------
iEE8E: lda CIA2 ;(ee8e AD 00 DD) Complex Adapter Interface 2
ora #$10 ;(ee91 09 10)
sta CIA2 ;(ee93 8D 00 DD) Complex Adapter Interface 2
rts ;(ee96 60)
;------------------------------------------------------------------------
iEE97: lda CIA2 ;(ee97 AD 00 DD) Complex Adapter Interface 2
and #$DF ;(ee9a 29 DF)
sta CIA2 ;(ee9c 8D 00 DD) Complex Adapter Interface 2
rts ;(ee9f 60)
;------------------------------------------------------------------------
iEEA0: lda CIA2 ;(eea0 AD 00 DD) Complex Adapter Interface 2
ora #$20 ;(eea3 09 20)
sta CIA2 ;(eea5 8D 00 DD) Complex Adapter Interface 2
rts ;(eea8 60)
;------------------------------------------------------------------------
iEEA9: lda CIA2 ;(eea9 AD 00 DD) Complex Adapter Interface 2
cmp CIA2 ;(eeac CD 00 DD) Complex Adapter Interface 2
bne iEEA9 ;(eeaf D0 F8)
asl A ;(eeb1 0A)
rts ;(eeb2 60)
;------------------------------------------------------------------------
iEEB3: txa ;(eeb3 8A)
ldx #$B8 ;(eeb4 A2 B8)
iEEB6: dex ;(eeb6 CA)
bne iEEB6 ;(eeb7 D0 FD)
tax ;(eeb9 AA)
rts ;(eeba 60)
;------------------------------------------------------------------------
iEEBB: lda BITTS ;(eebb A5 B4) RS232 Write bit count/Tape Read timing Flag.
beq iEF06 ;(eebd F0 47)
bmi iEF00 ;(eebf 30 3F)
lsr RODATA ;(eec1 46 B6) RS232 Output Byte Buffer/Tape Read Error Flag.
ldx #$00 ;(eec3 A2 00)
bcc iEEC8 ;(eec5 90 01)
dex ;(eec7 CA)
iEEC8: txa ;(eec8 8A)
eor ROPRTY ;(eec9 45 BD) RS232 Output Parity/Tape Byte to be Input or Output.
sta ROPRTY ;(eecb 85 BD) RS232 Output Parity/Tape Byte to be Input or Output.
dec BITTS ;(eecd C6 B4) RS232 Write bit count/Tape Read timing Flag.
beq iEED7 ;(eecf F0 06)
iEED1: txa ;(eed1 8A)
and #$04 ;(eed2 29 04)
sta NXTBIT ;(eed4 85 B5) RS232 Next Bit to send/Tape Read - End of Tape.
rts ;(eed6 60)
;------------------------------------------------------------------------
iEED7: lda #$20 ;(eed7 A9 20)
bit e0294 ;(eed9 2C 94 02)
beq iEEF2 ;(eedc F0 14)
bmi iEEFC ;(eede 30 1C)
bvs iEEF6 ;(eee0 70 14)
lda ROPRTY ;(eee2 A5 BD) RS232 Output Parity/Tape Byte to be Input or Output.
bne iEEE7 ;(eee4 D0 01)
iEEE6: dex ;(eee6 CA)
iEEE7: dec BITTS ;(eee7 C6 B4) RS232 Write bit count/Tape Read timing Flag.
lda e0293 ;(eee9 AD 93 02)
bpl iEED1 ;(eeec 10 E3)
dec BITTS ;(eeee C6 B4) RS232 Write bit count/Tape Read timing Flag.
bne iEED1 ;(eef0 D0 DF)
iEEF2: inc BITTS ;(eef2 E6 B4) RS232 Write bit count/Tape Read timing Flag.
bne iEEE6 ;(eef4 D0 F0)
iEEF6: lda ROPRTY ;(eef6 A5 BD) RS232 Output Parity/Tape Byte to be Input or Output.
beq iEEE7 ;(eef8 F0 ED)
bne iEEE6 ;(eefa D0 EA)
iEEFC: bvs iEEE7 ;(eefc 70 E9)
bvc iEEE6 ;(eefe 50 E6)
iEF00: inc BITTS ;(ef00 E6 B4) RS232 Write bit count/Tape Read timing Flag.
ldx #$FF ;(ef02 A2 FF)
bne iEED1 ;(ef04 D0 CB)
iEF06: lda e0294 ;(ef06 AD 94 02)
lsr A ;(ef09 4A)
bcc iEF13 ;(ef0a 90 07)
bit CIA2+$0001 ;(ef0c 2C 01 DD) Complex Adapter Interface 2
bpl iEF2E ;(ef0f 10 1D)
bvc iEF31 ;(ef11 50 1E)
iEF13: lda #$00 ;(ef13 A9 00)
sta ROPRTY ;(ef15 85 BD) RS232 Output Parity/Tape Byte to be Input or Output.
sta NXTBIT ;(ef17 85 B5) RS232 Next Bit to send/Tape Read - End of Tape.
ldx e0298 ;(ef19 AE 98 02)
stx BITTS ;(ef1c 86 B4) RS232 Write bit count/Tape Read timing Flag.
ldy e029D ;(ef1e AC 9D 02)
cpy e029E ;(ef21 CC 9E 02)
beq iEF39 ;(ef24 F0 13)
lda (ROBUF),Y ;(ef26 B1 F9) RS232 Output Buffer Pointer.
sta RODATA ;(ef28 85 B6) RS232 Output Byte Buffer/Tape Read Error Flag.
inc e029D ;(ef2a EE 9D 02)
rts ;(ef2d 60)
;------------------------------------------------------------------------
iEF2E: lda #$40 ;(ef2e A9 40)
iEF30: ;(ef30) RS232 Flag: Start Bit check/Tape temporary.
iEF31 = iEF30+$01 ;(ef31)
bit e10A9 ;(ef30 2C A9 10)
ora e0297 ;(ef33 0D 97 02)
sta e0297 ;(ef36 8D 97 02)
iEF39: lda #$01 ;(ef39 A9 01)
iEF3B: sta eDD0D ;(ef3b 8D 0D DD)
eor e02A1 ;(ef3e 4D A1 02)
ora #$80 ;(ef41 09 80)
sta e02A1 ;(ef43 8D A1 02)
sta eDD0D ;(ef46 8D 0D DD)
rts ;(ef49 60)
;------------------------------------------------------------------------
iEF4A: ldx #$09 ;(ef4a A2 09)
lda #$20 ;(ef4c A9 20)
bit e0293 ;(ef4e 2C 93 02)
beq iEF54 ;(ef51 F0 01)
dex ;(ef53 CA)
iEF54: bvc iEF58 ;(ef54 50 02)
dex ;(ef56 CA)
dex ;(ef57 CA)
iEF58: rts ;(ef58 60)
;------------------------------------------------------------------------
iEF59: ldx RINONE ;(ef59 A6 A9) RS232 Flag: Start Bit check/Tape temporary.
bne iEF90 ;(ef5b D0 33)
dec BITC1 ;(ef5d C6 A8) RS232 Input Bit count/Tape temporary.
beq iEF97 ;(ef5f F0 36)
bmi iEF70 ;(ef61 30 0D)
lda INBIT ;(ef63 A5 A7) RS232 temporary for received Bit/Tape temporary.
eor RIPRTY ;(ef65 45 AB) RS232 Input parity/Tape temporary.
sta RIPRTY ;(ef67 85 AB) RS232 Input parity/Tape temporary.
lsr INBIT ;(ef69 46 A7) RS232 temporary for received Bit/Tape temporary.
ror RIDATA ;(ef6b 66 AA) RS232 Input Byte Buffer/Tape temporary.
iEF6D: rts ;(ef6d 60)
;------------------------------------------------------------------------
iEF6E: dec BITC1 ;(ef6e C6 A8) RS232 Input Bit count/Tape temporary.
iEF70: lda INBIT ;(ef70 A5 A7) RS232 temporary for received Bit/Tape temporary.
beq iEFDB ;(ef72 F0 67)
lda e0293 ;(ef74 AD 93 02)
asl A ;(ef77 0A)
lda #$01 ;(ef78 A9 01)
adc BITC1 ;(ef7a 65 A8) RS232 Input Bit count/Tape temporary.
bne iEF6D ;(ef7c D0 EF)
iEF7E: lda #$90 ;(ef7e A9 90)
sta eDD0D ;(ef80 8D 0D DD)
ora e02A1 ;(ef83 0D A1 02)
sta e02A1 ;(ef86 8D A1 02)
sta RINONE ;(ef89 85 A9) RS232 Flag: Start Bit check/Tape temporary.
lda #$02 ;(ef8b A9 02)
jmp iEF3B ;(ef8d 4C 3B EF)
;------------------------------------------------------------------------
iEF90: lda INBIT ;(ef90 A5 A7) RS232 temporary for received Bit/Tape temporary.
bne iEF7E ;(ef92 D0 EA)
sta RINONE ;(ef94 85 A9) RS232 Flag: Start Bit check/Tape temporary.
rts ;(ef96 60)
;------------------------------------------------------------------------
iEF97: ldy e029B ;(ef97 AC 9B 02)
iny ;(ef9a C8)
cpy e029C ;(ef9b CC 9C 02)
beq iEFCA ;(ef9e F0 2A)
sty e029B ;(efa0 8C 9B 02)
dey ;(efa3 88)
lda RIDATA ;(efa4 A5 AA) RS232 Input Byte Buffer/Tape temporary.
ldx e0298 ;(efa6 AE 98 02)
iEFA9: cpx #$09 ;(efa9 E0 09)
beq iEFB1 ;(efab F0 04)
lsr A ;(efad 4A)
inx ;(efae E8)
bne iEFA9 ;(efaf D0 F8)
iEFB1: sta (RIBUF),Y ;(efb1 91 F7) RS232 Input Buffer Pointer.
lda #$20 ;(efb3 A9 20)
bit e0294 ;(efb5 2C 94 02)
beq iEF6E ;(efb8 F0 B4)
bmi iEF6D ;(efba 30 B1)
lda INBIT ;(efbc A5 A7) RS232 temporary for received Bit/Tape temporary.
eor RIPRTY ;(efbe 45 AB) RS232 Input parity/Tape temporary.
beq iEFC5 ;(efc0 F0 03)
bvs iEF6D ;(efc2 70 A9)
iEFC4: ;(efc4)
iEFC5 = iEFC4+$01 ;(efc5)
bit eA650 ;(efc4 2C 50 A6)
lda #$01 ;(efc7 A9 01)
iEFC9: ;(efc9) RS232 Flag: Start Bit check/Tape temporary.
iEFCA = iEFC9+$01 ;(efca)
bit e04A9 ;(efc9 2C A9 04)
iEFCC: ;(efcc) RS232 Flag: Start Bit check/Tape temporary.
iEFCD = iEFCC+$01 ;(efcd)
bit e80A9 ;(efcc 2C A9 80)
iEFCF: ;(efcf) RS232 Flag: Start Bit check/Tape temporary.
iEFD0 = iEFCF+$01 ;(efd0)
bit e02A9 ;(efcf 2C A9 02)
ora e0297 ;(efd2 0D 97 02)
sta e0297 ;(efd5 8D 97 02)
jmp iEF7E ;(efd8 4C 7E EF)
;------------------------------------------------------------------------
iEFDB: lda RIDATA ;(efdb A5 AA) RS232 Input Byte Buffer/Tape temporary.
bne iEFD0 ;(efdd D0 F1)
beq iEFCD ;(efdf F0 EC)
iEFE1: sta DFLTO ;(efe1 85 9A) Default Output Device (3).
lda e0294 ;(efe3 AD 94 02)
lsr A ;(efe6 4A)
bcc iF012 ;(efe7 90 29)
lda #$02 ;(efe9 A9 02)
bit CIA2+$0001 ;(efeb 2C 01 DD) Complex Adapter Interface 2
bpl iF00D ;(efee 10 1D)
bne iF012 ;(eff0 D0 20)
iEFF2: lda e02A1 ;(eff2 AD A1 02)
and #$02 ;(eff5 29 02)
bne iEFF2 ;(eff7 D0 F9)
iEFF9: bit CIA2+$0001 ;(eff9 2C 01 DD) Complex Adapter Interface 2
bvs iEFF9 ;(effc 70 FB)
lda CIA2+$0001 ;(effe AD 01 DD) Complex Adapter Interface 2
;IO Kernal ROM
;------------------------------------------------------------------------
ora #$02 ;(f001 09 02)
;IO Kernal ROM
;------------------------------------------------------------------------
sta CIA2+$0001 ;(f003 8D 01 DD) Complex Adapter Interface 2
iF006: bit CIA2+$0001 ;(f006 2C 01 DD) Complex Adapter Interface 2
bvs iF012 ;(f009 70 07)
bmi iF006 ;(f00b 30 F9)
iF00D: lda #$40 ;(f00d A9 40)
sta e0297 ;(f00f 8D 97 02)
iF012: clc ;(f012 18)
rts ;(f013 60)
;------------------------------------------------------------------------
iF014: jsr iF028 ;(f014 20 28 F0)
iF017: ldy e029E ;(f017 AC 9E 02)
iny ;(f01a C8)
cpy e029D ;(f01b CC 9D 02)
beq iF014 ;(f01e F0 F4)
sty e029E ;(f020 8C 9E 02)
dey ;(f023 88)
lda PTR1 ;(f024 A5 9E) Tape Error log pass 1.
sta (ROBUF),Y ;(f026 91 F9) RS232 Output Buffer Pointer.
iF028: lda e02A1 ;(f028 AD A1 02)
lsr A ;(f02b 4A)
bcs iF04C ;(f02c B0 1E)
lda #$10 ;(f02e A9 10)
sta eDD0E ;(f030 8D 0E DD)
lda e0299 ;(f033 AD 99 02)
sta eDD04 ;(f036 8D 04 DD)
lda e029A ;(f039 AD 9A 02)
sta eDD05 ;(f03c 8D 05 DD)
lda #$81 ;(f03f A9 81)
jsr iEF3B ;(f041 20 3B EF)
jsr iEF06 ;(f044 20 06 EF)
lda #$11 ;(f047 A9 11)
sta eDD0E ;(f049 8D 0E DD)
iF04C: rts ;(f04c 60)
;------------------------------------------------------------------------
iF04D: sta DFLTN ;(f04d 85 99) Default Input Device (0).
lda e0294 ;(f04f AD 94 02)
lsr A ;(f052 4A)
bcc iF07D ;(f053 90 28)
and #$08 ;(f055 29 08)
beq iF07D ;(f057 F0 24)
lda #$02 ;(f059 A9 02)
bit CIA2+$0001 ;(f05b 2C 01 DD) Complex Adapter Interface 2
bpl iF00D ;(f05e 10 AD)
beq iF084 ;(f060 F0 22)
iF062: lda e02A1 ;(f062 AD A1 02)
lsr A ;(f065 4A)
bcs iF062 ;(f066 B0 FA)
lda CIA2+$0001 ;(f068 AD 01 DD) Complex Adapter Interface 2
and #$FD ;(f06b 29 FD)
sta CIA2+$0001 ;(f06d 8D 01 DD) Complex Adapter Interface 2
iF070: lda CIA2+$0001 ;(f070 AD 01 DD) Complex Adapter Interface 2
and #$04 ;(f073 29 04)
beq iF070 ;(f075 F0 F9)
iF077: lda #$90 ;(f077 A9 90)
clc ;(f079 18)
jmp iEF3B ;(f07a 4C 3B EF)
;------------------------------------------------------------------------
iF07D: lda e02A1 ;(f07d AD A1 02)
and #$12 ;(f080 29 12)
beq iF077 ;(f082 F0 F3)
iF084: clc ;(f084 18)
rts ;(f085 60)
;------------------------------------------------------------------------
iF086: lda e0297 ;(f086 AD 97 02)
ldy e029C ;(f089 AC 9C 02)
cpy e029B ;(f08c CC 9B 02)
beq iF09C ;(f08f F0 0B)
and #$F7 ;(f091 29 F7)
sta e0297 ;(f093 8D 97 02)
lda (RIBUF),Y ;(f096 B1 F7) RS232 Input Buffer Pointer.
inc e029C ;(f098 EE 9C 02)
rts ;(f09b 60)
;------------------------------------------------------------------------
iF09C: ora #$08 ;(f09c 09 08)
sta e0297 ;(f09e 8D 97 02)
lda #$00 ;(f0a1 A9 00)
rts ;(f0a3 60)
;------------------------------------------------------------------------
iF0A4: pha ;(f0a4 48)
lda e02A1 ;(f0a5 AD A1 02)
beq iF0BB ;(f0a8 F0 11)
iF0AA: lda e02A1 ;(f0aa AD A1 02)
and #$03 ;(f0ad 29 03)
bne iF0AA ;(f0af D0 F9)
lda #$10 ;(f0b1 A9 10)
sta eDD0D ;(f0b3 8D 0D DD)
lda #$00 ;(f0b6 A9 00)
sta e02A1 ;(f0b8 8D A1 02)
iF0BB: pla ;(f0bb 68)
rts ;(f0bc 60)
;------------------------------------------------------------------------
;System Messages
;------------------------------------------------------------------------
sysmsgs: .byte $0D,$49,$2F,$4F,$20,$45,$52,$52;(f0bd) (f0bd .i/o err)
.byte $4F,$52,$20,$A3,$0D,$53,$45,$41;(f0c5) (f0c5 or ..sea)
.byte $52,$43,$48,$49,$4E,$47,$A0,$46;(f0cd) (f0cd rching.f)
.byte $4F,$52,$A0,$0D,$50,$52,$45,$53;(f0d5) (f0d5 or..pres)
.byte $53,$20,$50,$4C,$41,$59,$20,$4F;(f0dd) (f0dd s play o)
.byte $4E,$20,$54,$41,$50,$C5,$50,$52;(f0e5) (f0e5 n tapEpr)
.byte $45,$53,$53,$20,$52,$45,$43,$4F;(f0ed) (f0ed ess reco)
.byte $52,$44,$20,$26,$20,$50,$4C,$41;(f0f5) (f0f5 rd & pla)
.byte $59,$20,$4F,$4E,$20,$54,$41,$50;(f0fd) (f0fd y on tap)
.byte $C5,$0D,$4C,$4F,$41,$44,$49,$4E;(f105) (f105 E.loadin)
.byte $C7,$0D,$53,$41,$56,$49,$4E,$47;(f10d) (f10d G.saving)
.byte $A0,$0D,$56,$45,$52,$49,$46,$59;(f115) (f115 ..verify)
.byte $49,$4E,$C7,$0D,$46,$4F,$55,$4E;(f11d) (f11d inG.foun)
.byte $44,$A0,$0D,$4F,$4B,$8D;(f125) (f125 d..ok.)
iF12B: bit MSGFLG ;(f12b 24 9D) Flag: $00 = Program mode: Suppress Error Messages
bpl iF13C ;(f12d 10 0D)
iF12F: lda sysmsgs,Y ;(f12f B9 BD F0) System Messages
php ;(f132 08)
and #$7F ;(f133 29 7F)
jsr entry_ffd2 ;(f135 20 D2 FF) entrypoint at $ffd2
iny ;(f138 C8)
plp ;(f139 28)
bpl iF12F ;(f13a 10 F3)
iF13C: clc ;(f13c 18)
rts ;(f13d 60)
;------------------------------------------------------------------------
lda DFLTN ;(f13e A5 99) Default Input Device (0).
bne iF14A ;(f140 D0 08)
lda NDX ;(f142 A5 C6) Number of Characters in Keyboard Buffer queue.
beq iF155 ;(f144 F0 0F)
sei ;(f146 78)
jmp iE5B4 ;(f147 4C B4 E5)
;------------------------------------------------------------------------
iF14A: cmp #$02 ;(f14a C9 02)
bne iF166 ;(f14c D0 18)
iF14E: sty TEMPY ;(f14e 84 97) Temporary storage of Y Register during RS232 fetch.
jsr iF086 ;(f150 20 86 F0)
ldy TEMPY ;(f153 A4 97) Temporary storage of Y Register during RS232 fetch.
iF155: clc ;(f155 18)
rts ;(f156 60)
;------------------------------------------------------------------------
lda DFLTN ;(f157 A5 99) Default Input Device (0).
bne iF166 ;(f159 D0 0B)
lda PNTR ;(f15b A5 D3) Cursor Column on current Line
sta LXSP+$0001 ;(f15d 85 CA) Cursor X/Y (Line/Column) position at start of Input.
lda TBLX ;(f15f A5 D6) Current Screen Line number of Cursor.
sta LXSP ;(f161 85 C9) Cursor X/Y (Line/Column) position at start of Input.
jmp iE632 ;(f163 4C 32 E6)
;------------------------------------------------------------------------
iF166: cmp #$03 ;(f166 C9 03)
bne iF173 ;(f168 D0 09)
sta CRSW ;(f16a 85 D0) Flag: Input from Screen = $03
lda LNMX ;(f16c A5 D5) Current logical Line length: 39 or 79.
sta INDX ;(f16e 85 C8) Pointer: End of Line for Input (Used to suppress trailing spaces).
jmp iE632 ;(f170 4C 32 E6)
;------------------------------------------------------------------------
iF173: bcs iF1AD ;(f173 B0 38)
cmp #$02 ;(f175 C9 02)
beq iF1B8 ;(f177 F0 3F)
stx TEMPY ;(f179 86 97) Temporary storage of Y Register during RS232 fetch.
jsr iF199 ;(f17b 20 99 F1)
bcs iF196 ;(f17e B0 16)
pha ;(f180 48)
jsr iF199 ;(f181 20 99 F1)
bcs iF193 ;(f184 B0 0D)
bne iF18D ;(f186 D0 05)
lda #$40 ;(f188 A9 40)
jsr iFE1C ;(f18a 20 1C FE)
iF18D: dec BUFPNT ;(f18d C6 A6) Pointer: Tape I/O buffer.
ldx TEMPY ;(f18f A6 97) Temporary storage of Y Register during RS232 fetch.
pla ;(f191 68)
rts ;(f192 60)
;------------------------------------------------------------------------
iF193: tax ;(f193 AA)
pla ;(f194 68)
txa ;(f195 8A)
iF196: ldx TEMPY ;(f196 A6 97) Temporary storage of Y Register during RS232 fetch.
rts ;(f198 60)
;------------------------------------------------------------------------
iF199: jsr iF80D ;(f199 20 0D F8)
bne iF1A9 ;(f19c D0 0B)
jsr iF841 ;(f19e 20 41 F8)
bcs iF1B4 ;(f1a1 B0 11)
lda #$00 ;(f1a3 A9 00)
sta BUFPNT ;(f1a5 85 A6) Pointer: Tape I/O buffer.
beq iF199 ;(f1a7 F0 F0)
iF1A9: lda (TAPE1),Y ;(f1a9 B1 B2) Pointer: Start Address of Tape Buffer ($033C).
clc ;(f1ab 18)
rts ;(f1ac 60)
;------------------------------------------------------------------------
iF1AD: lda STATUS ;(f1ad A5 90) Kernal I/O Status Word ST.
beq iF1B5 ;(f1af F0 04)
iF1B1: lda #$0D ;(f1b1 A9 0D)
iF1B3: clc ;(f1b3 18)
iF1B4: rts ;(f1b4 60)
;------------------------------------------------------------------------
iF1B5: jmp iEE13 ;(f1b5 4C 13 EE)
;------------------------------------------------------------------------
iF1B8: jsr iF14E ;(f1b8 20 4E F1)
bcs iF1B4 ;(f1bb B0 F7)
cmp #$00 ;(f1bd C9 00)
bne iF1B3 ;(f1bf D0 F2)
lda e0297 ;(f1c1 AD 97 02)
and #$60 ;(f1c4 29 60)
bne iF1B1 ;(f1c6 D0 E9)
beq iF1B8 ;(f1c8 F0 EE)
pha ;(f1ca 48)
lda DFLTO ;(f1cb A5 9A) Default Output Device (3).
cmp #$03 ;(f1cd C9 03)
bne iF1D5 ;(f1cf D0 04)
pla ;(f1d1 68)
jmp iE716 ;(f1d2 4C 16 E7)
;------------------------------------------------------------------------
iF1D5: bcc iF1DB ;(f1d5 90 04)
pla ;(f1d7 68)
jmp iEDDD ;(f1d8 4C DD ED)
;------------------------------------------------------------------------
iF1DB: lsr A ;(f1db 4A)
pla ;(f1dc 68)
iF1DD: sta PTR1 ;(f1dd 85 9E) Tape Error log pass 1.
txa ;(f1df 8A)
pha ;(f1e0 48)
tya ;(f1e1 98)
pha ;(f1e2 48)
bcc iF208 ;(f1e3 90 23)
jsr iF80D ;(f1e5 20 0D F8)
bne iF1F8 ;(f1e8 D0 0E)
jsr iF864 ;(f1ea 20 64 F8)
bcs iF1FD ;(f1ed B0 0E)
lda #$02 ;(f1ef A9 02)
ldy #$00 ;(f1f1 A0 00)
sta (TAPE1),Y ;(f1f3 91 B2) Pointer: Start Address of Tape Buffer ($033C).
iny ;(f1f5 C8)
sty BUFPNT ;(f1f6 84 A6) Pointer: Tape I/O buffer.
iF1F8: lda PTR1 ;(f1f8 A5 9E) Tape Error log pass 1.
sta (TAPE1),Y ;(f1fa 91 B2) Pointer: Start Address of Tape Buffer ($033C).
iF1FC: clc ;(f1fc 18)
iF1FD: pla ;(f1fd 68)
tay ;(f1fe A8)
pla ;(f1ff 68)
tax ;(f200 AA)
lda PTR1 ;(f201 A5 9E) Tape Error log pass 1.
bcc iF207 ;(f203 90 02)
lda #$00 ;(f205 A9 00)
iF207: rts ;(f207 60)
;------------------------------------------------------------------------
iF208: jsr iF017 ;(f208 20 17 F0)
jmp iF1FC ;(f20b 4C FC F1)
;------------------------------------------------------------------------
jsr iF30F ;(f20e 20 0F F3)
beq iF216 ;(f211 F0 03)
jmp iF701 ;(f213 4C 01 F7)
;------------------------------------------------------------------------
iF216: jsr iF31F ;(f216 20 1F F3)
lda FA ;(f219 A5 BA) Current File - First Address (Device number).
beq iF233 ;(f21b F0 16)
cmp #$03 ;(f21d C9 03)
beq iF233 ;(f21f F0 12)
bcs iF237 ;(f221 B0 14)
cmp #$02 ;(f223 C9 02)
bne iF22A ;(f225 D0 03)
jmp iF04D ;(f227 4C 4D F0)
;------------------------------------------------------------------------
iF22A: ldx SA ;(f22a A6 B9) Current File - Secondary Address.
cpx #$60 ;(f22c E0 60)
beq iF233 ;(f22e F0 03)
jmp iF70A ;(f230 4C 0A F7)
;------------------------------------------------------------------------
iF233: sta DFLTN ;(f233 85 99) Default Input Device (0).
clc ;(f235 18)
rts ;(f236 60)
;------------------------------------------------------------------------
iF237: tax ;(f237 AA)
jsr iED09 ;(f238 20 09 ED)
lda SA ;(f23b A5 B9) Current File - Secondary Address.
bpl iF245 ;(f23d 10 06)
jsr iEDCC ;(f23f 20 CC ED)
jmp iF248 ;(f242 4C 48 F2)
;------------------------------------------------------------------------
iF245: jsr iEDC7 ;(f245 20 C7 ED)
iF248: txa ;(f248 8A)
bit STATUS ;(f249 24 90) Kernal I/O Status Word ST.
bpl iF233 ;(f24b 10 E6)
jmp iF707 ;(f24d 4C 07 F7)
;------------------------------------------------------------------------
jsr iF30F ;(f250 20 0F F3)
beq iF258 ;(f253 F0 03)
jmp iF701 ;(f255 4C 01 F7)
;------------------------------------------------------------------------
iF258: jsr iF31F ;(f258 20 1F F3)
lda FA ;(f25b A5 BA) Current File - First Address (Device number).
bne iF262 ;(f25d D0 03)
iF25F: jmp iF70D ;(f25f 4C 0D F7)
;------------------------------------------------------------------------
iF262: cmp #$03 ;(f262 C9 03)
beq iF275 ;(f264 F0 0F)
bcs iF279 ;(f266 B0 11)
cmp #$02 ;(f268 C9 02)
bne iF26F ;(f26a D0 03)
jmp iEFE1 ;(f26c 4C E1 EF)
;------------------------------------------------------------------------
iF26F: ldx SA ;(f26f A6 B9) Current File - Secondary Address.
cpx #$60 ;(f271 E0 60)
beq iF25F ;(f273 F0 EA)
iF275: sta DFLTO ;(f275 85 9A) Default Output Device (3).
clc ;(f277 18)
rts ;(f278 60)
;------------------------------------------------------------------------
iF279: tax ;(f279 AA)
jsr iED0C ;(f27a 20 0C ED)
lda SA ;(f27d A5 B9) Current File - Secondary Address.
bpl iF286 ;(f27f 10 05)
jsr iEDBE ;(f281 20 BE ED)
bne iF289 ;(f284 D0 03)
iF286: jsr iEDB9 ;(f286 20 B9 ED)
iF289: txa ;(f289 8A)
bit STATUS ;(f28a 24 90) Kernal I/O Status Word ST.
bpl iF275 ;(f28c 10 E7)
jmp iF707 ;(f28e 4C 07 F7)
;------------------------------------------------------------------------
jsr iF314 ;(f291 20 14 F3)
beq iF298 ;(f294 F0 02)
clc ;(f296 18)
rts ;(f297 60)
;------------------------------------------------------------------------
iF298: jsr iF31F ;(f298 20 1F F3)
txa ;(f29b 8A)
pha ;(f29c 48)
lda FA ;(f29d A5 BA) Current File - First Address (Device number).
beq iF2F1 ;(f29f F0 50)
cmp #$03 ;(f2a1 C9 03)
beq iF2F1 ;(f2a3 F0 4C)
bcs iF2EE ;(f2a5 B0 47)
cmp #$02 ;(f2a7 C9 02)
bne iF2C8 ;(f2a9 D0 1D)
pla ;(f2ab 68)
jsr iF2F2 ;(f2ac 20 F2 F2)
jsr iF483 ;(f2af 20 83 F4)
jsr iFE27 ;(f2b2 20 27 FE)
lda zpF8 ;(f2b5 A5 F8)
beq iF2BA ;(f2b7 F0 01)
iny ;(f2b9 C8)
iF2BA: lda ROBUF+$0001 ;(f2ba A5 FA) RS232 Output Buffer Pointer.
beq iF2BF ;(f2bc F0 01)
iny ;(f2be C8)
iF2BF: lda #$00 ;(f2bf A9 00)
sta zpF8 ;(f2c1 85 F8)
sta ROBUF+$0001 ;(f2c3 85 FA) RS232 Output Buffer Pointer.
jmp iF47D ;(f2c5 4C 7D F4)
;------------------------------------------------------------------------
iF2C8: lda SA ;(f2c8 A5 B9) Current File - Secondary Address.
and #$0F ;(f2ca 29 0F)
beq iF2F1 ;(f2cc F0 23)
jsr iF7D0 ;(f2ce 20 D0 F7)
lda #$00 ;(f2d1 A9 00)
sec ;(f2d3 38)
jsr iF1DD ;(f2d4 20 DD F1)
jsr iF864 ;(f2d7 20 64 F8)
bcc iF2E0 ;(f2da 90 04)
pla ;(f2dc 68)
lda #$00 ;(f2dd A9 00)
rts ;(f2df 60)
;------------------------------------------------------------------------
iF2E0: lda SA ;(f2e0 A5 B9) Current File - Secondary Address.
cmp #$62 ;(f2e2 C9 62)
bne iF2F1 ;(f2e4 D0 0B)
lda #$05 ;(f2e6 A9 05)
jsr iF76A ;(f2e8 20 6A F7)
jmp iF2F1 ;(f2eb 4C F1 F2)
;------------------------------------------------------------------------
iF2EE: jsr iF642 ;(f2ee 20 42 F6)
iF2F1: pla ;(f2f1 68)
iF2F2: tax ;(f2f2 AA)
dec LDTND ;(f2f3 C6 98) Number of Open Files/Index to File Table.
cpx LDTND ;(f2f5 E4 98) Number of Open Files/Index to File Table.
beq iF30D ;(f2f7 F0 14)
ldy LDTND ;(f2f9 A4 98) Number of Open Files/Index to File Table.
lda e0259,Y ;(f2fb B9 59 02)
sta e0259,X ;(f2fe 9D 59 02)
lda e0263,Y ;(f301 B9 63 02)
sta e0263,X ;(f304 9D 63 02)
lda e026D,Y ;(f307 B9 6D 02)
sta e026D,X ;(f30a 9D 6D 02)
iF30D: clc ;(f30d 18)
rts ;(f30e 60)
;------------------------------------------------------------------------
iF30F: lda #$00 ;(f30f A9 00)
sta STATUS ;(f311 85 90) Kernal I/O Status Word ST.
txa ;(f313 8A)
iF314: ldx LDTND ;(f314 A6 98) Number of Open Files/Index to File Table.
iF316: dex ;(f316 CA)
bmi iF32E ;(f317 30 15)
cmp e0259,X ;(f319 DD 59 02)
bne iF316 ;(f31c D0 F8)
rts ;(f31e 60)
;------------------------------------------------------------------------
iF31F: lda e0259,X ;(f31f BD 59 02)
sta LA ;(f322 85 B8) Current File - Logical File number.
lda e0263,X ;(f324 BD 63 02)
sta FA ;(f327 85 BA) Current File - First Address (Device number).
lda e026D,X ;(f329 BD 6D 02)
sta SA ;(f32c 85 B9) Current File - Secondary Address.
iF32E: rts ;(f32e 60)
;------------------------------------------------------------------------
lda #$00 ;(f32f A9 00)
sta LDTND ;(f331 85 98) Number of Open Files/Index to File Table.
ldx #$03 ;(f333 A2 03)
cpx DFLTO ;(f335 E4 9A) Default Output Device (3).
bcs iF33C ;(f337 B0 03)
jsr iEDFE ;(f339 20 FE ED)
iF33C: cpx DFLTN ;(f33c E4 99) Default Input Device (0).
bcs iF343 ;(f33e B0 03)
jsr iEDEF ;(f340 20 EF ED)
iF343: stx DFLTO ;(f343 86 9A) Default Output Device (3).
lda #$00 ;(f345 A9 00)
sta DFLTN ;(f347 85 99) Default Input Device (0).
rts ;(f349 60)
;------------------------------------------------------------------------
ldx LA ;(f34a A6 B8) Current File - Logical File number.
bne iF351 ;(f34c D0 03)
jmp iF70A ;(f34e 4C 0A F7)
;------------------------------------------------------------------------
iF351: jsr iF30F ;(f351 20 0F F3)
bne iF359 ;(f354 D0 03)
jmp iF6FE ;(f356 4C FE F6)
;------------------------------------------------------------------------
iF359: ldx LDTND ;(f359 A6 98) Number of Open Files/Index to File Table.
cpx #$0A ;(f35b E0 0A)
bcc iF362 ;(f35d 90 03)
jmp iF6FB ;(f35f 4C FB F6)
;------------------------------------------------------------------------
iF362: inc LDTND ;(f362 E6 98) Number of Open Files/Index to File Table.
lda LA ;(f364 A5 B8) Current File - Logical File number.
sta e0259,X ;(f366 9D 59 02)
lda SA ;(f369 A5 B9) Current File - Secondary Address.
ora #$60 ;(f36b 09 60)
sta SA ;(f36d 85 B9) Current File - Secondary Address.
sta e026D,X ;(f36f 9D 6D 02)
lda FA ;(f372 A5 BA) Current File - First Address (Device number).
sta e0263,X ;(f374 9D 63 02)
beq iF3D3 ;(f377 F0 5A)
cmp #$03 ;(f379 C9 03)
beq iF3D3 ;(f37b F0 56)
bcc iF384 ;(f37d 90 05)
jsr iF3D5 ;(f37f 20 D5 F3)
bcc iF3D3 ;(f382 90 4F)
iF384: cmp #$02 ;(f384 C9 02)
bne iF38B ;(f386 D0 03)
jmp iF409 ;(f388 4C 09 F4)
;------------------------------------------------------------------------
iF38B: jsr iF7D0 ;(f38b 20 D0 F7)
bcs iF393 ;(f38e B0 03)
jmp iF713 ;(f390 4C 13 F7)
;------------------------------------------------------------------------
iF393: lda SA ;(f393 A5 B9) Current File - Secondary Address.
and #$0F ;(f395 29 0F)
bne iF3B8 ;(f397 D0 1F)
jsr iF817 ;(f399 20 17 F8)
bcs iF3D4 ;(f39c B0 36)
jsr iF5AF ;(f39e 20 AF F5)
lda FNLEN ;(f3a1 A5 B7) Number of Characters in Filename.
beq iF3AF ;(f3a3 F0 0A)
jsr iF7EA ;(f3a5 20 EA F7)
bcc iF3C2 ;(f3a8 90 18)
beq iF3D4 ;(f3aa F0 28)
iF3AC: jmp iF704 ;(f3ac 4C 04 F7)
;------------------------------------------------------------------------
iF3AF: jsr iF72C ;(f3af 20 2C F7)
beq iF3D4 ;(f3b2 F0 20)
bcc iF3C2 ;(f3b4 90 0C)
bcs iF3AC ;(f3b6 B0 F4)
iF3B8: jsr iF838 ;(f3b8 20 38 F8)
bcs iF3D4 ;(f3bb B0 17)
lda #$04 ;(f3bd A9 04)
jsr iF76A ;(f3bf 20 6A F7)
iF3C2: lda #$BF ;(f3c2 A9 BF)
ldy SA ;(f3c4 A4 B9) Current File - Secondary Address.
cpy #$60 ;(f3c6 C0 60)
beq iF3D1 ;(f3c8 F0 07)
ldy #$00 ;(f3ca A0 00)
lda #$02 ;(f3cc A9 02)
sta (TAPE1),Y ;(f3ce 91 B2) Pointer: Start Address of Tape Buffer ($033C).
tya ;(f3d0 98)
iF3D1: sta BUFPNT ;(f3d1 85 A6) Pointer: Tape I/O buffer.
iF3D3: clc ;(f3d3 18)
iF3D4: rts ;(f3d4 60)
;------------------------------------------------------------------------
iF3D5: lda SA ;(f3d5 A5 B9) Current File - Secondary Address.
bmi iF3D3 ;(f3d7 30 FA)
ldy FNLEN ;(f3d9 A4 B7) Number of Characters in Filename.
beq iF3D3 ;(f3db F0 F6)
lda #$00 ;(f3dd A9 00)
sta STATUS ;(f3df 85 90) Kernal I/O Status Word ST.
lda FA ;(f3e1 A5 BA) Current File - First Address (Device number).
jsr iED0C ;(f3e3 20 0C ED)
lda SA ;(f3e6 A5 B9) Current File - Secondary Address.
ora #$F0 ;(f3e8 09 F0)
jsr iEDB9 ;(f3ea 20 B9 ED)
lda STATUS ;(f3ed A5 90) Kernal I/O Status Word ST.
bpl iF3F6 ;(f3ef 10 05)
pla ;(f3f1 68)
pla ;(f3f2 68)
jmp iF707 ;(f3f3 4C 07 F7)
;------------------------------------------------------------------------
iF3F6: lda FNLEN ;(f3f6 A5 B7) Number of Characters in Filename.
beq iF406 ;(f3f8 F0 0C)
ldy #$00 ;(f3fa A0 00)
iF3FC: lda (FNADR),Y ;(f3fc B1 BB) Pointer: Current File name Address.
jsr iEDDD ;(f3fe 20 DD ED)
;IO Kernal ROM
;------------------------------------------------------------------------
iny ;(f401 C8)
;IO Kernal ROM
;------------------------------------------------------------------------
cpy FNLEN ;(f402 C4 B7) Number of Characters in Filename.
bne iF3FC ;(f404 D0 F6)
iF406: jmp iF654 ;(f406 4C 54 F6)
;------------------------------------------------------------------------
iF409: jsr iF483 ;(f409 20 83 F4)
sty e0297 ;(f40c 8C 97 02)
iF40F: cpy FNLEN ;(f40f C4 B7) Number of Characters in Filename.
beq iF41D ;(f411 F0 0A)
lda (FNADR),Y ;(f413 B1 BB) Pointer: Current File name Address.
sta e0293,Y ;(f415 99 93 02)
iny ;(f418 C8)
cpy #$04 ;(f419 C0 04)
bne iF40F ;(f41b D0 F2)
iF41D: jsr iEF4A ;(f41d 20 4A EF)
stx e0298 ;(f420 8E 98 02)
lda e0293 ;(f423 AD 93 02)
and #$0F ;(f426 29 0F)
beq iF446 ;(f428 F0 1C)
asl A ;(f42a 0A)
tax ;(f42b AA)
lda e02A6 ;(f42c AD A6 02)
bne iF43A ;(f42f D0 09)
ldy iFEC1,X ;(f431 BC C1 FE)
lda iFEC0,X ;(f434 BD C0 FE)
jmp iF440 ;(f437 4C 40 F4)
;------------------------------------------------------------------------
iF43A: ldy iE4EB,X ;(f43a BC EB E4)
lda iE4EA,X ;(f43d BD EA E4)
iF440: sty e0296 ;(f440 8C 96 02)
sta e0295 ;(f443 8D 95 02)
iF446: lda e0295 ;(f446 AD 95 02)
asl A ;(f449 0A)
jsr entry_ff2e ;(f44a 20 2E FF) entrypoint at $ff2e
lda e0294 ;(f44d AD 94 02)
lsr A ;(f450 4A)
bcc iF45C ;(f451 90 09)
lda CIA2+$0001 ;(f453 AD 01 DD) Complex Adapter Interface 2
asl A ;(f456 0A)
bcs iF45C ;(f457 B0 03)
jsr iF00D ;(f459 20 0D F0)
iF45C: lda e029B ;(f45c AD 9B 02)
sta e029C ;(f45f 8D 9C 02)
lda e029E ;(f462 AD 9E 02)
sta e029D ;(f465 8D 9D 02)
jsr iFE27 ;(f468 20 27 FE)
lda zpF8 ;(f46b A5 F8)
bne iF474 ;(f46d D0 05)
dey ;(f46f 88)
sty zpF8 ;(f470 84 F8)
stx RIBUF ;(f472 86 F7) RS232 Input Buffer Pointer.
iF474: lda ROBUF+$0001 ;(f474 A5 FA) RS232 Output Buffer Pointer.
bne iF47D ;(f476 D0 05)
dey ;(f478 88)
sty ROBUF+$0001 ;(f479 84 FA) RS232 Output Buffer Pointer.
stx ROBUF ;(f47b 86 F9) RS232 Output Buffer Pointer.
iF47D: sec ;(f47d 38)
lda #$F0 ;(f47e A9 F0)
jmp iFE2D ;(f480 4C 2D FE)
;------------------------------------------------------------------------
iF483: lda #$7F ;(f483 A9 7F)
sta eDD0D ;(f485 8D 0D DD)
lda #$06 ;(f488 A9 06)
sta CIA2+$0003 ;(f48a 8D 03 DD) Complex Adapter Interface 2
sta CIA2+$0001 ;(f48d 8D 01 DD) Complex Adapter Interface 2
lda #$04 ;(f490 A9 04)
ora CIA2 ;(f492 0D 00 DD) Complex Adapter Interface 2
sta CIA2 ;(f495 8D 00 DD) Complex Adapter Interface 2
ldy #$00 ;(f498 A0 00)
sty e02A1 ;(f49a 8C A1 02)
rts ;(f49d 60)
;------------------------------------------------------------------------
iF49E: stx MEMUSS ;(f49e 86 C3) Pointer: Type 3 Tape LOAD and general use.
sty zpC4 ;(f4a0 84 C4)
jmp (e0330) ;(f4a2 6C 30 03) *($0330)=$f4a5
;------------------------------------------------------------------------
sta VERCKK ;(f4a5 85 93) Flag: 0 = Load
lda #$00 ;(f4a7 A9 00)
sta STATUS ;(f4a9 85 90) Kernal I/O Status Word ST.
lda FA ;(f4ab A5 BA) Current File - First Address (Device number).
bne iF4B2 ;(f4ad D0 03)
iF4AF: jmp iF713 ;(f4af 4C 13 F7)
;------------------------------------------------------------------------
iF4B2: cmp #$03 ;(f4b2 C9 03)
beq iF4AF ;(f4b4 F0 F9)
bcc iF533 ;(f4b6 90 7B)
ldy FNLEN ;(f4b8 A4 B7) Number of Characters in Filename.
bne iF4BF ;(f4ba D0 03)
jmp iF710 ;(f4bc 4C 10 F7)
;------------------------------------------------------------------------
iF4BF: ldx SA ;(f4bf A6 B9) Current File - Secondary Address.
jsr iF5AF ;(f4c1 20 AF F5)
lda #$60 ;(f4c4 A9 60)
sta SA ;(f4c6 85 B9) Current File - Secondary Address.
jsr iF3D5 ;(f4c8 20 D5 F3)
lda FA ;(f4cb A5 BA) Current File - First Address (Device number).
jsr iED09 ;(f4cd 20 09 ED)
lda SA ;(f4d0 A5 B9) Current File - Secondary Address.
jsr iEDC7 ;(f4d2 20 C7 ED)
jsr iEE13 ;(f4d5 20 13 EE)
sta EAL ;(f4d8 85 AE) Tape End Address/End of Program.
lda STATUS ;(f4da A5 90) Kernal I/O Status Word ST.
lsr A ;(f4dc 4A)
lsr A ;(f4dd 4A)
bcs iF530 ;(f4de B0 50)
jsr iEE13 ;(f4e0 20 13 EE)
sta EAL+$0001 ;(f4e3 85 AF) Tape End Address/End of Program.
txa ;(f4e5 8A)
bne iF4F0 ;(f4e6 D0 08)
lda MEMUSS ;(f4e8 A5 C3) Pointer: Type 3 Tape LOAD and general use.
sta EAL ;(f4ea 85 AE) Tape End Address/End of Program.
lda zpC4 ;(f4ec A5 C4)
sta EAL+$0001 ;(f4ee 85 AF) Tape End Address/End of Program.
iF4F0: jsr iF5D2 ;(f4f0 20 D2 F5)
iF4F3: lda #$FD ;(f4f3 A9 FD)
and STATUS ;(f4f5 25 90) Kernal I/O Status Word ST.
sta STATUS ;(f4f7 85 90) Kernal I/O Status Word ST.
jsr stop ;(f4f9 20 E1 FF)
bne iF501 ;(f4fc D0 03)
jmp iF633 ;(f4fe 4C 33 F6)
;------------------------------------------------------------------------
iF501: jsr iEE13 ;(f501 20 13 EE)
tax ;(f504 AA)
lda STATUS ;(f505 A5 90) Kernal I/O Status Word ST.
lsr A ;(f507 4A)
lsr A ;(f508 4A)
bcs iF4F3 ;(f509 B0 E8)
txa ;(f50b 8A)
ldy VERCKK ;(f50c A4 93) Flag: 0 = Load
beq iF51C ;(f50e F0 0C)
ldy #$00 ;(f510 A0 00)
cmp (EAL),Y ;(f512 D1 AE) Tape End Address/End of Program.
beq iF51E ;(f514 F0 08)
lda #$10 ;(f516 A9 10)
jsr iFE1C ;(f518 20 1C FE)
iF51B: ;(f51b) Flag: $7F = STOP key.
iF51C = iF51B+$01 ;(f51c)
bit eAE91 ;(f51b 2C 91 AE)
iF51E: inc EAL ;(f51e E6 AE) Tape End Address/End of Program.
bne iF524 ;(f520 D0 02)
inc EAL+$0001 ;(f522 E6 AF) Tape End Address/End of Program.
iF524: bit STATUS ;(f524 24 90) Kernal I/O Status Word ST.
bvc iF4F3 ;(f526 50 CB)
jsr iEDEF ;(f528 20 EF ED)
jsr iF642 ;(f52b 20 42 F6)
bcc iF5A9 ;(f52e 90 79)
iF530: jmp iF704 ;(f530 4C 04 F7)
;------------------------------------------------------------------------
iF533: lsr A ;(f533 4A)
bcs iF539 ;(f534 B0 03)
jmp iF713 ;(f536 4C 13 F7)
;------------------------------------------------------------------------
iF539: jsr iF7D0 ;(f539 20 D0 F7)
bcs iF541 ;(f53c B0 03)
jmp iF713 ;(f53e 4C 13 F7)
;------------------------------------------------------------------------
iF541: jsr iF817 ;(f541 20 17 F8)
bcs iF5AE ;(f544 B0 68)
jsr iF5AF ;(f546 20 AF F5)
iF549: lda FNLEN ;(f549 A5 B7) Number of Characters in Filename.
beq iF556 ;(f54b F0 09)
jsr iF7EA ;(f54d 20 EA F7)
bcc iF55D ;(f550 90 0B)
beq iF5AE ;(f552 F0 5A)
bcs iF530 ;(f554 B0 DA)
iF556: jsr iF72C ;(f556 20 2C F7)
beq iF5AE ;(f559 F0 53)
bcs iF530 ;(f55b B0 D3)
iF55D: lda STATUS ;(f55d A5 90) Kernal I/O Status Word ST.
and #$10 ;(f55f 29 10)
sec ;(f561 38)
bne iF5AE ;(f562 D0 4A)
cpx #$01 ;(f564 E0 01)
beq iF579 ;(f566 F0 11)
cpx #$03 ;(f568 E0 03)
bne iF549 ;(f56a D0 DD)
iF56C: ldy #$01 ;(f56c A0 01)
lda (TAPE1),Y ;(f56e B1 B2) Pointer: Start Address of Tape Buffer ($033C).
sta MEMUSS ;(f570 85 C3) Pointer: Type 3 Tape LOAD and general use.
iny ;(f572 C8)
lda (TAPE1),Y ;(f573 B1 B2) Pointer: Start Address of Tape Buffer ($033C).
sta zpC4 ;(f575 85 C4)
bcs iF57D ;(f577 B0 04)
iF579: lda SA ;(f579 A5 B9) Current File - Secondary Address.
bne iF56C ;(f57b D0 EF)
iF57D: ldy #$03 ;(f57d A0 03)
lda (TAPE1),Y ;(f57f B1 B2) Pointer: Start Address of Tape Buffer ($033C).
ldy #$01 ;(f581 A0 01)
sbc (TAPE1),Y ;(f583 F1 B2) Pointer: Start Address of Tape Buffer ($033C).
tax ;(f585 AA)
ldy #$04 ;(f586 A0 04)
lda (TAPE1),Y ;(f588 B1 B2) Pointer: Start Address of Tape Buffer ($033C).
ldy #$02 ;(f58a A0 02)
sbc (TAPE1),Y ;(f58c F1 B2) Pointer: Start Address of Tape Buffer ($033C).
tay ;(f58e A8)
clc ;(f58f 18)
txa ;(f590 8A)
adc MEMUSS ;(f591 65 C3) Pointer: Type 3 Tape LOAD and general use.
sta EAL ;(f593 85 AE) Tape End Address/End of Program.
tya ;(f595 98)
adc zpC4 ;(f596 65 C4)
sta EAL+$0001 ;(f598 85 AF) Tape End Address/End of Program.
lda MEMUSS ;(f59a A5 C3) Pointer: Type 3 Tape LOAD and general use.
sta STAL ;(f59c 85 C1) Start Address for LOAD and Cassette Write.
lda zpC4 ;(f59e A5 C4)
sta STAL+$0001 ;(f5a0 85 C2) Start Address for LOAD and Cassette Write.
jsr iF5D2 ;(f5a2 20 D2 F5)
jsr iF84A ;(f5a5 20 4A F8)
iF5A8: ;(f5a8)
iF5A9 = iF5A8+$01 ;(f5a9)
bit zp18 ;(f5a8 24 18)
ldx EAL ;(f5aa A6 AE) Tape End Address/End of Program.
ldy EAL+$0001 ;(f5ac A4 AF) Tape End Address/End of Program.
iF5AE: rts ;(f5ae 60)
;------------------------------------------------------------------------
iF5AF: lda MSGFLG ;(f5af A5 9D) Flag: $00 = Program mode: Suppress Error Messages
bpl iF5D1 ;(f5b1 10 1E)
ldy #$0C ;(f5b3 A0 0C)
jsr iF12F ;(f5b5 20 2F F1)
lda FNLEN ;(f5b8 A5 B7) Number of Characters in Filename.
beq iF5D1 ;(f5ba F0 15)
ldy #$17 ;(f5bc A0 17)
jsr iF12F ;(f5be 20 2F F1)
iF5C1: ldy FNLEN ;(f5c1 A4 B7) Number of Characters in Filename.
beq iF5D1 ;(f5c3 F0 0C)
ldy #$00 ;(f5c5 A0 00)
iF5C7: lda (FNADR),Y ;(f5c7 B1 BB) Pointer: Current File name Address.
jsr entry_ffd2 ;(f5c9 20 D2 FF) entrypoint at $ffd2
iny ;(f5cc C8)
cpy FNLEN ;(f5cd C4 B7) Number of Characters in Filename.
bne iF5C7 ;(f5cf D0 F6)
iF5D1: rts ;(f5d1 60)
;------------------------------------------------------------------------
iF5D2: ldy #$49 ;(f5d2 A0 49)
lda VERCKK ;(f5d4 A5 93) Flag: 0 = Load
beq iF5DA ;(f5d6 F0 02)
ldy #$59 ;(f5d8 A0 59)
iF5DA: jmp iF12B ;(f5da 4C 2B F1)
;------------------------------------------------------------------------
iF5DD: stx EAL ;(f5dd 86 AE) Tape End Address/End of Program.
sty EAL+$0001 ;(f5df 84 AF) Tape End Address/End of Program.
tax ;(f5e1 AA)
lda __CPUIO0__,X ;(f5e2 B5 00) Cpu-Port Data-Direction
sta STAL ;(f5e4 85 C1) Start Address for LOAD and Cassette Write.
lda __CPUIO1__,X ;(f5e6 B5 01) Cpu-Port Data
sta STAL+$0001 ;(f5e8 85 C2) Start Address for LOAD and Cassette Write.
jmp (e0332) ;(f5ea 6C 32 03) *($0332)=$f5ed
;------------------------------------------------------------------------
lda FA ;(f5ed A5 BA) Current File - First Address (Device number).
bne iF5F4 ;(f5ef D0 03)
iF5F1: jmp iF713 ;(f5f1 4C 13 F7)
;------------------------------------------------------------------------
iF5F4: cmp #$03 ;(f5f4 C9 03)
beq iF5F1 ;(f5f6 F0 F9)
bcc iF659 ;(f5f8 90 5F)
lda #$61 ;(f5fa A9 61)
sta SA ;(f5fc 85 B9) Current File - Secondary Address.
ldy FNLEN ;(f5fe A4 B7) Number of Characters in Filename.
bne iF605 ;(f600 D0 03)
jmp iF710 ;(f602 4C 10 F7)
;------------------------------------------------------------------------
iF605: jsr iF3D5 ;(f605 20 D5 F3)
jsr iF68F ;(f608 20 8F F6)
lda FA ;(f60b A5 BA) Current File - First Address (Device number).
jsr iED0C ;(f60d 20 0C ED)
lda SA ;(f610 A5 B9) Current File - Secondary Address.
jsr iEDB9 ;(f612 20 B9 ED)
ldy #$00 ;(f615 A0 00)
jsr iFB8E ;(f617 20 8E FB)
lda SAL ;(f61a A5 AC) Pointer: Tape Buffer/Screen scrolling.
jsr iEDDD ;(f61c 20 DD ED)
lda SAL+$0001 ;(f61f A5 AD) Pointer: Tape Buffer/Screen scrolling.
jsr iEDDD ;(f621 20 DD ED)
iF624: jsr iFCD1 ;(f624 20 D1 FC)
bcs iF63F ;(f627 B0 16)
lda (SAL),Y ;(f629 B1 AC) Pointer: Tape Buffer/Screen scrolling.
jsr iEDDD ;(f62b 20 DD ED)
jsr stop ;(f62e 20 E1 FF)
bne iF63A ;(f631 D0 07)
iF633: jsr iF642 ;(f633 20 42 F6)
lda #$00 ;(f636 A9 00)
sec ;(f638 38)
rts ;(f639 60)
;------------------------------------------------------------------------
iF63A: jsr iFCDB ;(f63a 20 DB FC)
bne iF624 ;(f63d D0 E5)
iF63F: jsr iEDFE ;(f63f 20 FE ED)
iF642: bit SA ;(f642 24 B9) Current File - Secondary Address.
bmi iF657 ;(f644 30 11)
lda FA ;(f646 A5 BA) Current File - First Address (Device number).
jsr iED0C ;(f648 20 0C ED)
lda SA ;(f64b A5 B9) Current File - Secondary Address.
and #$EF ;(f64d 29 EF)
ora #$E0 ;(f64f 09 E0)
jsr iEDB9 ;(f651 20 B9 ED)
iF654: jsr iEDFE ;(f654 20 FE ED)
iF657: clc ;(f657 18)
rts ;(f658 60)
;------------------------------------------------------------------------
iF659: lsr A ;(f659 4A)
bcs iF65F ;(f65a B0 03)
jmp iF713 ;(f65c 4C 13 F7)
;------------------------------------------------------------------------
iF65F: jsr iF7D0 ;(f65f 20 D0 F7)
bcc iF5F1 ;(f662 90 8D)
jsr iF838 ;(f664 20 38 F8)
bcs iF68E ;(f667 B0 25)
jsr iF68F ;(f669 20 8F F6)
ldx #$03 ;(f66c A2 03)
lda SA ;(f66e A5 B9) Current File - Secondary Address.
and #$01 ;(f670 29 01)
bne iF676 ;(f672 D0 02)
ldx #$01 ;(f674 A2 01)
iF676: txa ;(f676 8A)
jsr iF76A ;(f677 20 6A F7)
bcs iF68E ;(f67a B0 12)
jsr iF867 ;(f67c 20 67 F8)
bcs iF68E ;(f67f B0 0D)
lda SA ;(f681 A5 B9) Current File - Secondary Address.
and #$02 ;(f683 29 02)
beq iF68D ;(f685 F0 06)
lda #$05 ;(f687 A9 05)
jsr iF76A ;(f689 20 6A F7)
iF68C: ;(f68c)
iF68D = iF68C+$01 ;(f68d)
bit zp18 ;(f68c 24 18)
iF68E: rts ;(f68e 60)
;------------------------------------------------------------------------
iF68F: lda MSGFLG ;(f68f A5 9D) Flag: $00 = Program mode: Suppress Error Messages
bpl iF68E ;(f691 10 FB)
ldy #$51 ;(f693 A0 51)
jsr iF12F ;(f695 20 2F F1)
jmp iF5C1 ;(f698 4C C1 F5)
;------------------------------------------------------------------------
udtim_direct: ldx #$00 ;(f69b A2 00)
inc TIME+$0002 ;(f69d E6 A2) Real-time jiffy Clock (Updated by IRQ Interrupt approx. every 1/60 of Second); Update Routine: UDTIMK ($F69B).
bne iF6A7 ;(f69f D0 06)
inc TIME+$0001 ;(f6a1 E6 A1) Real-time jiffy Clock (Updated by IRQ Interrupt approx. every 1/60 of Second); Update Routine: UDTIMK ($F69B).
bne iF6A7 ;(f6a3 D0 02)
inc TIME ;(f6a5 E6 A0) Real-time jiffy Clock (Updated by IRQ Interrupt approx. every 1/60 of Second); Update Routine: UDTIMK ($F69B).
iF6A7: sec ;(f6a7 38)
lda TIME+$0002 ;(f6a8 A5 A2) Real-time jiffy Clock (Updated by IRQ Interrupt approx. every 1/60 of Second); Update Routine: UDTIMK ($F69B).
sbc #$01 ;(f6aa E9 01)
lda TIME+$0001 ;(f6ac A5 A1) Real-time jiffy Clock (Updated by IRQ Interrupt approx. every 1/60 of Second); Update Routine: UDTIMK ($F69B).
sbc #$1A ;(f6ae E9 1A)
lda TIME ;(f6b0 A5 A0) Real-time jiffy Clock (Updated by IRQ Interrupt approx. every 1/60 of Second); Update Routine: UDTIMK ($F69B).
sbc #$4F ;(f6b2 E9 4F)
bcc iF6BC ;(f6b4 90 06)
stx TIME ;(f6b6 86 A0) Real-time jiffy Clock (Updated by IRQ Interrupt approx. every 1/60 of Second); Update Routine: UDTIMK ($F69B).
stx TIME+$0001 ;(f6b8 86 A1) Real-time jiffy Clock (Updated by IRQ Interrupt approx. every 1/60 of Second); Update Routine: UDTIMK ($F69B).
stx TIME+$0002 ;(f6ba 86 A2) Real-time jiffy Clock (Updated by IRQ Interrupt approx. every 1/60 of Second); Update Routine: UDTIMK ($F69B).
iF6BC: lda __CIA1__+$0001 ;(f6bc AD 01 DC) Complex Interface Adapter 1
cmp __CIA1__+$0001 ;(f6bf CD 01 DC) Complex Interface Adapter 1
bne iF6BC ;(f6c2 D0 F8)
tax ;(f6c4 AA)
bmi iF6DA ;(f6c5 30 13)
ldx #$BD ;(f6c7 A2 BD)
stx __CIA1__ ;(f6c9 8E 00 DC) Complex Interface Adapter 1
iF6CC: ldx __CIA1__+$0001 ;(f6cc AE 01 DC) Complex Interface Adapter 1
cpx __CIA1__+$0001 ;(f6cf EC 01 DC) Complex Interface Adapter 1
bne iF6CC ;(f6d2 D0 F8)
sta __CIA1__ ;(f6d4 8D 00 DC) Complex Interface Adapter 1
inx ;(f6d7 E8)
bne iF6DC ;(f6d8 D0 02)
iF6DA: sta STKEY ;(f6da 85 91) Flag: $7F = STOP key.
iF6DC: rts ;(f6dc 60)
;------------------------------------------------------------------------
iF6DD: sei ;(f6dd 78)
lda TIME+$0002 ;(f6de A5 A2) Real-time jiffy Clock (Updated by IRQ Interrupt approx. every 1/60 of Second); Update Routine: UDTIMK ($F69B).
ldx TIME+$0001 ;(f6e0 A6 A1) Real-time jiffy Clock (Updated by IRQ Interrupt approx. every 1/60 of Second); Update Routine: UDTIMK ($F69B).
ldy TIME ;(f6e2 A4 A0) Real-time jiffy Clock (Updated by IRQ Interrupt approx. every 1/60 of Second); Update Routine: UDTIMK ($F69B).
iF6E4: sei ;(f6e4 78)
sta TIME+$0002 ;(f6e5 85 A2) Real-time jiffy Clock (Updated by IRQ Interrupt approx. every 1/60 of Second); Update Routine: UDTIMK ($F69B).
stx TIME+$0001 ;(f6e7 86 A1) Real-time jiffy Clock (Updated by IRQ Interrupt approx. every 1/60 of Second); Update Routine: UDTIMK ($F69B).
sty TIME ;(f6e9 84 A0) Real-time jiffy Clock (Updated by IRQ Interrupt approx. every 1/60 of Second); Update Routine: UDTIMK ($F69B).
cli ;(f6eb 58)
rts ;(f6ec 60)
;------------------------------------------------------------------------
lda STKEY ;(f6ed A5 91) Flag: $7F = STOP key.
cmp #$7F ;(f6ef C9 7F)
bne iF6FA ;(f6f1 D0 07)
php ;(f6f3 08)
jsr entry_ffcc ;(f6f4 20 CC FF) entrypoint at $ffcc
sta NDX ;(f6f7 85 C6) Number of Characters in Keyboard Buffer queue.
plp ;(f6f9 28)
iF6FA: rts ;(f6fa 60)
;------------------------------------------------------------------------
iF6FB: lda #$01 ;(f6fb A9 01)
iF6FD: ;(f6fd) RS232 Flag: Start Bit check/Tape temporary.
iF6FE = iF6FD+$01 ;(f6fe)
bit e02A9 ;(f6fd 2C A9 02)
iF700: ;(f700) RS232 Flag: Start Bit check/Tape temporary.
iF701 = iF700+$01 ;(f701)
bit e03A9 ;(f700 2C A9 03)
iF703: ;(f703) RS232 Flag: Start Bit check/Tape temporary.
iF704 = iF703+$01 ;(f704)
bit e04A9 ;(f703 2C A9 04)
iF706: ;(f706) RS232 Flag: Start Bit check/Tape temporary.
iF707 = iF706+$01 ;(f707)
bit e05A9 ;(f706 2C A9 05)
iF709: ;(f709) RS232 Flag: Start Bit check/Tape temporary.
iF70A = iF709+$01 ;(f70a)
bit e06A9 ;(f709 2C A9 06)
iF70C: ;(f70c) RS232 Flag: Start Bit check/Tape temporary.
iF70D = iF70C+$01 ;(f70d)
bit e07A9 ;(f70c 2C A9 07)
iF70F: ;(f70f) RS232 Flag: Start Bit check/Tape temporary.
iF710 = iF70F+$01 ;(f710)
bit e08A9 ;(f70f 2C A9 08)
iF712: ;(f712) RS232 Flag: Start Bit check/Tape temporary.
iF713 = iF712+$01 ;(f713)
bit e09A9 ;(f712 2C A9 09)
pha ;(f715 48)
jsr entry_ffcc ;(f716 20 CC FF) entrypoint at $ffcc
ldy #$00 ;(f719 A0 00)
bit MSGFLG ;(f71b 24 9D) Flag: $00 = Program mode: Suppress Error Messages
bvc iF729 ;(f71d 50 0A)
jsr iF12F ;(f71f 20 2F F1)
pla ;(f722 68)
pha ;(f723 48)
ora #$30 ;(f724 09 30)
jsr entry_ffd2 ;(f726 20 D2 FF) entrypoint at $ffd2
iF729: pla ;(f729 68)
sec ;(f72a 38)
rts ;(f72b 60)
;------------------------------------------------------------------------
iF72C: lda VERCKK ;(f72c A5 93) Flag: 0 = Load
pha ;(f72e 48)
jsr iF841 ;(f72f 20 41 F8)
pla ;(f732 68)
sta VERCKK ;(f733 85 93) Flag: 0 = Load
bcs iF769 ;(f735 B0 32)
ldy #$00 ;(f737 A0 00)
lda (TAPE1),Y ;(f739 B1 B2) Pointer: Start Address of Tape Buffer ($033C).
cmp #$05 ;(f73b C9 05)
beq iF769 ;(f73d F0 2A)
cmp #$01 ;(f73f C9 01)
beq iF74B ;(f741 F0 08)
cmp #$03 ;(f743 C9 03)
beq iF74B ;(f745 F0 04)
cmp #$04 ;(f747 C9 04)
bne iF72C ;(f749 D0 E1)
iF74B: tax ;(f74b AA)
bit MSGFLG ;(f74c 24 9D) Flag: $00 = Program mode: Suppress Error Messages
bpl iF767 ;(f74e 10 17)
ldy #$63 ;(f750 A0 63)
jsr iF12F ;(f752 20 2F F1)
ldy #$05 ;(f755 A0 05)
iF757: lda (TAPE1),Y ;(f757 B1 B2) Pointer: Start Address of Tape Buffer ($033C).
jsr entry_ffd2 ;(f759 20 D2 FF) entrypoint at $ffd2
iny ;(f75c C8)
cpy #$15 ;(f75d C0 15)
bne iF757 ;(f75f D0 F6)
lda TIME+$0001 ;(f761 A5 A1) Real-time jiffy Clock (Updated by IRQ Interrupt approx. every 1/60 of Second); Update Routine: UDTIMK ($F69B).
jsr iE4E0 ;(f763 20 E0 E4)
nop ;(f766 EA)
iF767: clc ;(f767 18)
dey ;(f768 88)
iF769: rts ;(f769 60)
;------------------------------------------------------------------------
iF76A: sta PTR1 ;(f76a 85 9E) Tape Error log pass 1.
jsr iF7D0 ;(f76c 20 D0 F7)
bcc iF7CF ;(f76f 90 5E)
lda STAL+$0001 ;(f771 A5 C2) Start Address for LOAD and Cassette Write.
pha ;(f773 48)
lda STAL ;(f774 A5 C1) Start Address for LOAD and Cassette Write.
pha ;(f776 48)
lda EAL+$0001 ;(f777 A5 AF) Tape End Address/End of Program.
pha ;(f779 48)
lda EAL ;(f77a A5 AE) Tape End Address/End of Program.
pha ;(f77c 48)
ldy #$BF ;(f77d A0 BF)
lda #$20 ;(f77f A9 20)
iF781: sta (TAPE1),Y ;(f781 91 B2) Pointer: Start Address of Tape Buffer ($033C).
dey ;(f783 88)
bne iF781 ;(f784 D0 FB)
lda PTR1 ;(f786 A5 9E) Tape Error log pass 1.
sta (TAPE1),Y ;(f788 91 B2) Pointer: Start Address of Tape Buffer ($033C).
iny ;(f78a C8)
lda STAL ;(f78b A5 C1) Start Address for LOAD and Cassette Write.
sta (TAPE1),Y ;(f78d 91 B2) Pointer: Start Address of Tape Buffer ($033C).
iny ;(f78f C8)
lda STAL+$0001 ;(f790 A5 C2) Start Address for LOAD and Cassette Write.
sta (TAPE1),Y ;(f792 91 B2) Pointer: Start Address of Tape Buffer ($033C).
iny ;(f794 C8)
lda EAL ;(f795 A5 AE) Tape End Address/End of Program.
sta (TAPE1),Y ;(f797 91 B2) Pointer: Start Address of Tape Buffer ($033C).
iny ;(f799 C8)
lda EAL+$0001 ;(f79a A5 AF) Tape End Address/End of Program.
sta (TAPE1),Y ;(f79c 91 B2) Pointer: Start Address of Tape Buffer ($033C).
iny ;(f79e C8)
sty PTR2 ;(f79f 84 9F) Tape Error log pass 2.
ldy #$00 ;(f7a1 A0 00)
sty PTR1 ;(f7a3 84 9E) Tape Error log pass 1.
iF7A5: ldy PTR1 ;(f7a5 A4 9E) Tape Error log pass 1.
cpy FNLEN ;(f7a7 C4 B7) Number of Characters in Filename.
beq iF7B7 ;(f7a9 F0 0C)
lda (FNADR),Y ;(f7ab B1 BB) Pointer: Current File name Address.
ldy PTR2 ;(f7ad A4 9F) Tape Error log pass 2.
sta (TAPE1),Y ;(f7af 91 B2) Pointer: Start Address of Tape Buffer ($033C).
inc PTR1 ;(f7b1 E6 9E) Tape Error log pass 1.
inc PTR2 ;(f7b3 E6 9F) Tape Error log pass 2.
bne iF7A5 ;(f7b5 D0 EE)
iF7B7: jsr iF7D7 ;(f7b7 20 D7 F7)
lda #$69 ;(f7ba A9 69)
sta RIPRTY ;(f7bc 85 AB) RS232 Input parity/Tape temporary.
jsr iF86B ;(f7be 20 6B F8)
tay ;(f7c1 A8)
pla ;(f7c2 68)
sta EAL ;(f7c3 85 AE) Tape End Address/End of Program.
pla ;(f7c5 68)
sta EAL+$0001 ;(f7c6 85 AF) Tape End Address/End of Program.
pla ;(f7c8 68)
sta STAL ;(f7c9 85 C1) Start Address for LOAD and Cassette Write.
pla ;(f7cb 68)
sta STAL+$0001 ;(f7cc 85 C2) Start Address for LOAD and Cassette Write.
tya ;(f7ce 98)
iF7CF: rts ;(f7cf 60)
;------------------------------------------------------------------------
iF7D0: ldx TAPE1 ;(f7d0 A6 B2) Pointer: Start Address of Tape Buffer ($033C).
ldy TAPE1+$0001 ;(f7d2 A4 B3) Pointer: Start Address of Tape Buffer ($033C).
cpy #$02 ;(f7d4 C0 02)
rts ;(f7d6 60)
;------------------------------------------------------------------------
iF7D7: jsr iF7D0 ;(f7d7 20 D0 F7)
txa ;(f7da 8A)
sta STAL ;(f7db 85 C1) Start Address for LOAD and Cassette Write.
clc ;(f7dd 18)
adc #$C0 ;(f7de 69 C0)
sta EAL ;(f7e0 85 AE) Tape End Address/End of Program.
tya ;(f7e2 98)
sta STAL+$0001 ;(f7e3 85 C2) Start Address for LOAD and Cassette Write.
adc #$00 ;(f7e5 69 00)
sta EAL+$0001 ;(f7e7 85 AF) Tape End Address/End of Program.
rts ;(f7e9 60)
;------------------------------------------------------------------------
iF7EA: jsr iF72C ;(f7ea 20 2C F7)
bcs iF80C ;(f7ed B0 1D)
ldy #$05 ;(f7ef A0 05)
sty PTR2 ;(f7f1 84 9F) Tape Error log pass 2.
ldy #$00 ;(f7f3 A0 00)
sty PTR1 ;(f7f5 84 9E) Tape Error log pass 1.
iF7F7: cpy FNLEN ;(f7f7 C4 B7) Number of Characters in Filename.
beq iF80B ;(f7f9 F0 10)
lda (FNADR),Y ;(f7fb B1 BB) Pointer: Current File name Address.
ldy PTR2 ;(f7fd A4 9F) Tape Error log pass 2.
cmp (TAPE1),Y ;(f7ff D1 B2) Pointer: Start Address of Tape Buffer ($033C).
;IO Kernal ROM
;------------------------------------------------------------------------
bne iF7EA ;(f801 D0 E7)
;IO Kernal ROM
;------------------------------------------------------------------------
inc PTR1 ;(f803 E6 9E) Tape Error log pass 1.
inc PTR2 ;(f805 E6 9F) Tape Error log pass 2.
ldy PTR1 ;(f807 A4 9E) Tape Error log pass 1.
bne iF7F7 ;(f809 D0 EC)
iF80B: clc ;(f80b 18)
iF80C: rts ;(f80c 60)
;------------------------------------------------------------------------
iF80D: jsr iF7D0 ;(f80d 20 D0 F7)
inc BUFPNT ;(f810 E6 A6) Pointer: Tape I/O buffer.
ldy BUFPNT ;(f812 A4 A6) Pointer: Tape I/O buffer.
cpy #$C0 ;(f814 C0 C0)
rts ;(f816 60)
;------------------------------------------------------------------------
iF817: jsr iF82E ;(f817 20 2E F8)
beq iF836 ;(f81a F0 1A)
ldy #$1B ;(f81c A0 1B)
iF81E: jsr iF12F ;(f81e 20 2F F1)
iF821: jsr iF8D0 ;(f821 20 D0 F8)
jsr iF82E ;(f824 20 2E F8)
bne iF821 ;(f827 D0 F8)
ldy #$6A ;(f829 A0 6A)
jmp iF12F ;(f82b 4C 2F F1)
;------------------------------------------------------------------------
iF82E: lda #$10 ;(f82e A9 10)
bit __CPUIO1__ ;(f830 24 01) Cpu-Port Data
bne iF836 ;(f832 D0 02)
bit __CPUIO1__ ;(f834 24 01) Cpu-Port Data
iF836: clc ;(f836 18)
rts ;(f837 60)
;------------------------------------------------------------------------
iF838: jsr iF82E ;(f838 20 2E F8)
beq iF836 ;(f83b F0 F9)
ldy #$2E ;(f83d A0 2E)
bne iF81E ;(f83f D0 DD)
iF841: lda #$00 ;(f841 A9 00)
sta STATUS ;(f843 85 90) Kernal I/O Status Word ST.
sta VERCKK ;(f845 85 93) Flag: 0 = Load
jsr iF7D7 ;(f847 20 D7 F7)
iF84A: jsr iF817 ;(f84a 20 17 F8)
bcs iF86E ;(f84d B0 1F)
sei ;(f84f 78)
lda #$00 ;(f850 A9 00)
sta RIDATA ;(f852 85 AA) RS232 Input Byte Buffer/Tape temporary.
sta BITTS ;(f854 85 B4) RS232 Write bit count/Tape Read timing Flag.
sta CMPO ;(f856 85 B0) Tape timing Constants.
sta PTR1 ;(f858 85 9E) Tape Error log pass 1.
sta PTR2 ;(f85a 85 9F) Tape Error log pass 2.
sta DPSW ;(f85c 85 9C) Flag: Byte received from Tape.
lda #$90 ;(f85e A9 90)
ldx #$0E ;(f860 A2 0E)
bne iF875 ;(f862 D0 11)
iF864: jsr iF7D7 ;(f864 20 D7 F7)
iF867: lda #$14 ;(f867 A9 14)
sta RIPRTY ;(f869 85 AB) RS232 Input parity/Tape temporary.
iF86B: jsr iF838 ;(f86b 20 38 F8)
iF86E: bcs iF8DC ;(f86e B0 6C)
sei ;(f870 78)
lda #$82 ;(f871 A9 82)
ldx #$08 ;(f873 A2 08)
iF875: ldy #$7F ;(f875 A0 7F)
sty eDC0D ;(f877 8C 0D DC)
sta eDC0D ;(f87a 8D 0D DC)
lda eDC0E ;(f87d AD 0E DC)
ora #$19 ;(f880 09 19)
sta eDC0F ;(f882 8D 0F DC)
and #$91 ;(f885 29 91)
sta e02A2 ;(f887 8D A2 02)
jsr iF0A4 ;(f88a 20 A4 F0)
lda VIC_YSCROLL ;(f88d AD 11 D0) Y-Scroll/Gfxmode
and #$EF ;(f890 29 EF)
sta VIC_YSCROLL ;(f892 8D 11 D0) Y-Scroll/Gfxmode
lda IRQVEC ;(f895 AD 14 03) Kernal IRQ Ptr
sta e029F ;(f898 8D 9F 02)
lda e0315 ;(f89b AD 15 03)
sta e02A0 ;(f89e 8D A0 02)
jsr iFCBD ;(f8a1 20 BD FC)
lda #$02 ;(f8a4 A9 02)
sta FSBLK ;(f8a6 85 BE) Tape Input/Output Block count.
jsr iFB97 ;(f8a8 20 97 FB)
lda __CPUIO1__ ;(f8ab A5 01) Cpu-Port Data
and #$1F ;(f8ad 29 1F)
sta __CPUIO1__ ;(f8af 85 01) Cpu-Port Data
sta CAS1 ;(f8b1 85 C0) Tape Motor Switch.
ldx #$FF ;(f8b3 A2 FF)
iF8B5: ldy #$FF ;(f8b5 A0 FF)
iF8B7: dey ;(f8b7 88)
bne iF8B7 ;(f8b8 D0 FD)
dex ;(f8ba CA)
bne iF8B5 ;(f8bb D0 F8)
cli ;(f8bd 58)
iF8BE: lda e02A0 ;(f8be AD A0 02)
cmp e0315 ;(f8c1 CD 15 03)
clc ;(f8c4 18)
beq iF8DC ;(f8c5 F0 15)
jsr iF8D0 ;(f8c7 20 D0 F8)
jsr iF6BC ;(f8ca 20 BC F6)
jmp iF8BE ;(f8cd 4C BE F8)
;------------------------------------------------------------------------
iF8D0: jsr stop ;(f8d0 20 E1 FF)
clc ;(f8d3 18)
bne iF8E1 ;(f8d4 D0 0B)
jsr entry_fc93 ;(f8d6 20 93 FC) entrypoint at $fc93
sec ;(f8d9 38)
pla ;(f8da 68)
pla ;(f8db 68)
iF8DC: lda #$00 ;(f8dc A9 00)
sta e02A0 ;(f8de 8D A0 02)
iF8E1: rts ;(f8e1 60)
;------------------------------------------------------------------------
;entrypoint at $f8e2
;------------------------------------------------------------------------
entry_f8e2: stx CMPO+$0001 ;(f8e2 86 B1) Tape timing Constants.
lda CMPO ;(f8e4 A5 B0) Tape timing Constants.
asl A ;(f8e6 0A)
asl A ;(f8e7 0A)
clc ;(f8e8 18)
adc CMPO ;(f8e9 65 B0) Tape timing Constants.
clc ;(f8eb 18)
adc CMPO+$0001 ;(f8ec 65 B1) Tape timing Constants.
sta CMPO+$0001 ;(f8ee 85 B1) Tape timing Constants.
lda #$00 ;(f8f0 A9 00)
bit CMPO ;(f8f2 24 B0) Tape timing Constants.
bmi iF8F7 ;(f8f4 30 01)
rol A ;(f8f6 2A)
iF8F7: asl CMPO+$0001 ;(f8f7 06 B1) Tape timing Constants.
rol A ;(f8f9 2A)
asl CMPO+$0001 ;(f8fa 06 B1) Tape timing Constants.
rol A ;(f8fc 2A)
tax ;(f8fd AA)
iF8FE: lda eDC06 ;(f8fe AD 06 DC)
cmp #$16 ;(f901 C9 16)
bcc iF8FE ;(f903 90 F9)
adc CMPO+$0001 ;(f905 65 B1) Tape timing Constants.
sta eDC04 ;(f907 8D 04 DC)
txa ;(f90a 8A)
adc eDC07 ;(f90b 6D 07 DC)
sta eDC05 ;(f90e 8D 05 DC)
lda e02A2 ;(f911 AD A2 02)
sta eDC0E ;(f914 8D 0E DC)
sta e02A4 ;(f917 8D A4 02)
lda eDC0D ;(f91a AD 0D DC)
and #$10 ;(f91d 29 10)
beq iF92A ;(f91f F0 09)
lda #$F9 ;(f921 A9 F9)
pha ;(f923 48)
lda #$2A ;(f924 A9 2A)
pha ;(f926 48)
jmp entry_ff43 ;(f927 4C 43 FF) entrypoint at $ff43
;------------------------------------------------------------------------
iF92A: cli ;(f92a 58)
rts ;(f92b 60)
;------------------------------------------------------------------------
;entrypoint at $f92c
;------------------------------------------------------------------------
entry_f92c: ldx eDC07 ;(f92c AE 07 DC)
ldy #$FF ;(f92f A0 FF)
tya ;(f931 98)
sbc eDC06 ;(f932 ED 06 DC)
cpx eDC07 ;(f935 EC 07 DC)
bne entry_f92c ;(f938 D0 F2) entrypoint at $f92c
stx CMPO+$0001 ;(f93a 86 B1) Tape timing Constants.
tax ;(f93c AA)
sty eDC06 ;(f93d 8C 06 DC)
sty eDC07 ;(f940 8C 07 DC)
lda #$19 ;(f943 A9 19)
sta eDC0F ;(f945 8D 0F DC)
lda eDC0D ;(f948 AD 0D DC)
sta e02A3 ;(f94b 8D A3 02)
tya ;(f94e 98)
sbc CMPO+$0001 ;(f94f E5 B1) Tape timing Constants.
stx CMPO+$0001 ;(f951 86 B1) Tape timing Constants.
lsr A ;(f953 4A)
ror CMPO+$0001 ;(f954 66 B1) Tape timing Constants.
lsr A ;(f956 4A)
ror CMPO+$0001 ;(f957 66 B1) Tape timing Constants.
lda CMPO ;(f959 A5 B0) Tape timing Constants.
clc ;(f95b 18)
adc #$3C ;(f95c 69 3C)
cmp CMPO+$0001 ;(f95e C5 B1) Tape timing Constants.
bcs iF9AC ;(f960 B0 4A)
ldx DPSW ;(f962 A6 9C) Flag: Byte received from Tape.
beq iF969 ;(f964 F0 03)
jmp iFA60 ;(f966 4C 60 FA)
;------------------------------------------------------------------------
iF969: ldx TSFCNT ;(f969 A6 A3) Bit Counter Tape Read or Write/Serial Bus EOI (End Of Input) Flag.
bmi iF988 ;(f96b 30 1B)
ldx #$00 ;(f96d A2 00)
adc #$30 ;(f96f 69 30)
adc CMPO ;(f971 65 B0) Tape timing Constants.
cmp CMPO+$0001 ;(f973 C5 B1) Tape timing Constants.
bcs iF993 ;(f975 B0 1C)
inx ;(f977 E8)
adc #$26 ;(f978 69 26)
adc CMPO ;(f97a 65 B0) Tape timing Constants.
cmp CMPO+$0001 ;(f97c C5 B1) Tape timing Constants.
bcs iF997 ;(f97e B0 17)
adc #$2C ;(f980 69 2C)
adc CMPO ;(f982 65 B0) Tape timing Constants.
cmp CMPO+$0001 ;(f984 C5 B1) Tape timing Constants.
bcc iF98B ;(f986 90 03)
iF988: jmp iFA10 ;(f988 4C 10 FA)
;------------------------------------------------------------------------
iF98B: lda BITTS ;(f98b A5 B4) RS232 Write bit count/Tape Read timing Flag.
beq iF9AC ;(f98d F0 1D)
sta BITC1 ;(f98f 85 A8) RS232 Input Bit count/Tape temporary.
bne iF9AC ;(f991 D0 19)
iF993: inc RINONE ;(f993 E6 A9) RS232 Flag: Start Bit check/Tape temporary.
bcs iF999 ;(f995 B0 02)
iF997: dec RINONE ;(f997 C6 A9) RS232 Flag: Start Bit check/Tape temporary.
iF999: sec ;(f999 38)
sbc #$13 ;(f99a E9 13)
sbc CMPO+$0001 ;(f99c E5 B1) Tape timing Constants.
adc SVXT ;(f99e 65 92) Timing Constant for Tape.
sta SVXT ;(f9a0 85 92) Timing Constant for Tape.
lda TBTCNT ;(f9a2 A5 A4) Pulse Counter Tape Read or Write/Serial Bus shift Counter.
eor #$01 ;(f9a4 49 01)
sta TBTCNT ;(f9a6 85 A4) Pulse Counter Tape Read or Write/Serial Bus shift Counter.
beq iF9D5 ;(f9a8 F0 2B)
stx SCHAR ;(f9aa 86 D7) Screen value of current Input Character/Last Character Output.
iF9AC: lda BITTS ;(f9ac A5 B4) RS232 Write bit count/Tape Read timing Flag.
beq iF9D2 ;(f9ae F0 22)
lda e02A3 ;(f9b0 AD A3 02)
and #$01 ;(f9b3 29 01)
bne iF9BC ;(f9b5 D0 05)
lda e02A4 ;(f9b7 AD A4 02)
bne iF9D2 ;(f9ba D0 16)
iF9BC: lda #$00 ;(f9bc A9 00)
sta TBTCNT ;(f9be 85 A4) Pulse Counter Tape Read or Write/Serial Bus shift Counter.
sta e02A4 ;(f9c0 8D A4 02)
lda TSFCNT ;(f9c3 A5 A3) Bit Counter Tape Read or Write/Serial Bus EOI (End Of Input) Flag.
bpl iF9F7 ;(f9c5 10 30)
bmi iF988 ;(f9c7 30 BF)
iF9C9: ldx #$A6 ;(f9c9 A2 A6)
jsr entry_f8e2 ;(f9cb 20 E2 F8) entrypoint at $f8e2
lda PRTY ;(f9ce A5 9B) Parity of Byte Output to Tape.
bne iF98B ;(f9d0 D0 B9)
iF9D2: jmp entry_febc ;(f9d2 4C BC FE) entrypoint at $febc
;------------------------------------------------------------------------
iF9D5: lda SVXT ;(f9d5 A5 92) Timing Constant for Tape.
beq iF9E0 ;(f9d7 F0 07)
bmi iF9DE ;(f9d9 30 03)
dec CMPO ;(f9db C6 B0) Tape timing Constants.
iF9DD: ;(f9dd)
iF9DE = iF9DD+$01 ;(f9de)
bit eB0E6 ;(f9dd 2C E6 B0)
iF9E0: lda #$00 ;(f9e0 A9 00)
sta SVXT ;(f9e2 85 92) Timing Constant for Tape.
cpx SCHAR ;(f9e4 E4 D7) Screen value of current Input Character/Last Character Output.
bne iF9F7 ;(f9e6 D0 0F)
txa ;(f9e8 8A)
bne iF98B ;(f9e9 D0 A0)
lda RINONE ;(f9eb A5 A9) RS232 Flag: Start Bit check/Tape temporary.
bmi iF9AC ;(f9ed 30 BD)
cmp #$10 ;(f9ef C9 10)
bcc iF9AC ;(f9f1 90 B9)
sta SYNO ;(f9f3 85 96) Cassette Sync. number.
bcs iF9AC ;(f9f5 B0 B5)
iF9F7: txa ;(f9f7 8A)
eor PRTY ;(f9f8 45 9B) Parity of Byte Output to Tape.
sta PRTY ;(f9fa 85 9B) Parity of Byte Output to Tape.
lda BITTS ;(f9fc A5 B4) RS232 Write bit count/Tape Read timing Flag.
beq iF9D2 ;(f9fe F0 D2)
dec TSFCNT ;(fa00 C6 A3) Bit Counter Tape Read or Write/Serial Bus EOI (End Of Input) Flag.
bmi iF9C9 ;(fa02 30 C5)
lsr SCHAR ;(fa04 46 D7) Screen value of current Input Character/Last Character Output.
ror MYCH ;(fa06 66 BF) Serial Word Buffer.
ldx #$DA ;(fa08 A2 DA)
jsr entry_f8e2 ;(fa0a 20 E2 F8) entrypoint at $f8e2
jmp entry_febc ;(fa0d 4C BC FE) entrypoint at $febc
;------------------------------------------------------------------------
iFA10: lda SYNO ;(fa10 A5 96) Cassette Sync. number.
beq iFA18 ;(fa12 F0 04)
lda BITTS ;(fa14 A5 B4) RS232 Write bit count/Tape Read timing Flag.
beq iFA1F ;(fa16 F0 07)
iFA18: lda TSFCNT ;(fa18 A5 A3) Bit Counter Tape Read or Write/Serial Bus EOI (End Of Input) Flag.
bmi iFA1F ;(fa1a 30 03)
jmp iF997 ;(fa1c 4C 97 F9)
;------------------------------------------------------------------------
iFA1F: lsr CMPO+$0001 ;(fa1f 46 B1) Tape timing Constants.
lda #$93 ;(fa21 A9 93)
sec ;(fa23 38)
sbc CMPO+$0001 ;(fa24 E5 B1) Tape timing Constants.
adc CMPO ;(fa26 65 B0) Tape timing Constants.
asl A ;(fa28 0A)
tax ;(fa29 AA)
jsr entry_f8e2 ;(fa2a 20 E2 F8) entrypoint at $f8e2
inc DPSW ;(fa2d E6 9C) Flag: Byte received from Tape.
lda BITTS ;(fa2f A5 B4) RS232 Write bit count/Tape Read timing Flag.
bne iFA44 ;(fa31 D0 11)
lda SYNO ;(fa33 A5 96) Cassette Sync. number.
beq iFA5D ;(fa35 F0 26)
sta BITC1 ;(fa37 85 A8) RS232 Input Bit count/Tape temporary.
lda #$00 ;(fa39 A9 00)
sta SYNO ;(fa3b 85 96) Cassette Sync. number.
lda #$81 ;(fa3d A9 81)
sta eDC0D ;(fa3f 8D 0D DC)
sta BITTS ;(fa42 85 B4) RS232 Write bit count/Tape Read timing Flag.
iFA44: lda SYNO ;(fa44 A5 96) Cassette Sync. number.
sta NXTBIT ;(fa46 85 B5) RS232 Next Bit to send/Tape Read - End of Tape.
beq iFA53 ;(fa48 F0 09)
lda #$00 ;(fa4a A9 00)
sta BITTS ;(fa4c 85 B4) RS232 Write bit count/Tape Read timing Flag.
lda #$01 ;(fa4e A9 01)
sta eDC0D ;(fa50 8D 0D DC)
iFA53: lda MYCH ;(fa53 A5 BF) Serial Word Buffer.
sta ROPRTY ;(fa55 85 BD) RS232 Output Parity/Tape Byte to be Input or Output.
lda BITC1 ;(fa57 A5 A8) RS232 Input Bit count/Tape temporary.
ora RINONE ;(fa59 05 A9) RS232 Flag: Start Bit check/Tape temporary.
sta RODATA ;(fa5b 85 B6) RS232 Output Byte Buffer/Tape Read Error Flag.
iFA5D: jmp entry_febc ;(fa5d 4C BC FE) entrypoint at $febc
;------------------------------------------------------------------------
iFA60: jsr iFB97 ;(fa60 20 97 FB)
sta DPSW ;(fa63 85 9C) Flag: Byte received from Tape.
ldx #$DA ;(fa65 A2 DA)
jsr entry_f8e2 ;(fa67 20 E2 F8) entrypoint at $f8e2
lda FSBLK ;(fa6a A5 BE) Tape Input/Output Block count.
beq iFA70 ;(fa6c F0 02)
sta INBIT ;(fa6e 85 A7) RS232 temporary for received Bit/Tape temporary.
iFA70: lda #$0F ;(fa70 A9 0F)
bit RIDATA ;(fa72 24 AA) RS232 Input Byte Buffer/Tape temporary.
bpl iFA8D ;(fa74 10 17)
lda NXTBIT ;(fa76 A5 B5) RS232 Next Bit to send/Tape Read - End of Tape.
bne iFA86 ;(fa78 D0 0C)
ldx FSBLK ;(fa7a A6 BE) Tape Input/Output Block count.
dex ;(fa7c CA)
bne iFA8A ;(fa7d D0 0B)
lda #$08 ;(fa7f A9 08)
jsr iFE1C ;(fa81 20 1C FE)
bne iFA8A ;(fa84 D0 04)
iFA86: lda #$00 ;(fa86 A9 00)
sta RIDATA ;(fa88 85 AA) RS232 Input Byte Buffer/Tape temporary.
iFA8A: jmp entry_febc ;(fa8a 4C BC FE) entrypoint at $febc
;------------------------------------------------------------------------
iFA8D: bvs iFAC0 ;(fa8d 70 31)
bne iFAA9 ;(fa8f D0 18)
lda NXTBIT ;(fa91 A5 B5) RS232 Next Bit to send/Tape Read - End of Tape.
bne iFA8A ;(fa93 D0 F5)
lda RODATA ;(fa95 A5 B6) RS232 Output Byte Buffer/Tape Read Error Flag.
bne iFA8A ;(fa97 D0 F1)
lda INBIT ;(fa99 A5 A7) RS232 temporary for received Bit/Tape temporary.
lsr A ;(fa9b 4A)
lda ROPRTY ;(fa9c A5 BD) RS232 Output Parity/Tape Byte to be Input or Output.
bmi iFAA3 ;(fa9e 30 03)
bcc iFABA ;(faa0 90 18)
clc ;(faa2 18)
iFAA3: bcs iFABA ;(faa3 B0 15)
and #$0F ;(faa5 29 0F)
sta RIDATA ;(faa7 85 AA) RS232 Input Byte Buffer/Tape temporary.
iFAA9: dec RIDATA ;(faa9 C6 AA) RS232 Input Byte Buffer/Tape temporary.
bne iFA8A ;(faab D0 DD)
lda #$40 ;(faad A9 40)
sta RIDATA ;(faaf 85 AA) RS232 Input Byte Buffer/Tape temporary.
jsr iFB8E ;(fab1 20 8E FB)
lda #$00 ;(fab4 A9 00)
sta RIPRTY ;(fab6 85 AB) RS232 Input parity/Tape temporary.
beq iFA8A ;(fab8 F0 D0)
iFABA: lda #$80 ;(faba A9 80)
sta RIDATA ;(fabc 85 AA) RS232 Input Byte Buffer/Tape temporary.
bne iFA8A ;(fabe D0 CA)
iFAC0: lda NXTBIT ;(fac0 A5 B5) RS232 Next Bit to send/Tape Read - End of Tape.
beq iFACE ;(fac2 F0 0A)
lda #$04 ;(fac4 A9 04)
jsr iFE1C ;(fac6 20 1C FE)
lda #$00 ;(fac9 A9 00)
jmp iFB4A ;(facb 4C 4A FB)
;------------------------------------------------------------------------
iFACE: jsr iFCD1 ;(face 20 D1 FC)
bcc iFAD6 ;(fad1 90 03)
jmp iFB48 ;(fad3 4C 48 FB)
;------------------------------------------------------------------------
iFAD6: ldx INBIT ;(fad6 A6 A7) RS232 temporary for received Bit/Tape temporary.
dex ;(fad8 CA)
beq iFB08 ;(fad9 F0 2D)
lda VERCKK ;(fadb A5 93) Flag: 0 = Load
beq iFAEB ;(fadd F0 0C)
ldy #$00 ;(fadf A0 00)
lda ROPRTY ;(fae1 A5 BD) RS232 Output Parity/Tape Byte to be Input or Output.
cmp (SAL),Y ;(fae3 D1 AC) Pointer: Tape Buffer/Screen scrolling.
beq iFAEB ;(fae5 F0 04)
lda #$01 ;(fae7 A9 01)
sta RODATA ;(fae9 85 B6) RS232 Output Byte Buffer/Tape Read Error Flag.
iFAEB: lda RODATA ;(faeb A5 B6) RS232 Output Byte Buffer/Tape Read Error Flag.
beq iFB3A ;(faed F0 4B)
ldx #$3D ;(faef A2 3D)
cpx PTR1 ;(faf1 E4 9E) Tape Error log pass 1.
bcc iFB33 ;(faf3 90 3E)
ldx PTR1 ;(faf5 A6 9E) Tape Error log pass 1.
lda SAL+$0001 ;(faf7 A5 AD) Pointer: Tape Buffer/Screen scrolling.
sta __STACK__+$0001,X ;(faf9 9D 01 01) CPU Stack
lda SAL ;(fafc A5 AC) Pointer: Tape Buffer/Screen scrolling.
sta __STACK__,X ;(fafe 9D 00 01) CPU Stack
inx ;(fb01 E8)
inx ;(fb02 E8)
stx PTR1 ;(fb03 86 9E) Tape Error log pass 1.
jmp iFB3A ;(fb05 4C 3A FB)
;------------------------------------------------------------------------
iFB08: ldx PTR2 ;(fb08 A6 9F) Tape Error log pass 2.
cpx PTR1 ;(fb0a E4 9E) Tape Error log pass 1.
beq iFB43 ;(fb0c F0 35)
lda SAL ;(fb0e A5 AC) Pointer: Tape Buffer/Screen scrolling.
cmp __STACK__,X ;(fb10 DD 00 01) CPU Stack
bne iFB43 ;(fb13 D0 2E)
lda SAL+$0001 ;(fb15 A5 AD) Pointer: Tape Buffer/Screen scrolling.
cmp __STACK__+$0001,X ;(fb17 DD 01 01) CPU Stack
bne iFB43 ;(fb1a D0 27)
inc PTR2 ;(fb1c E6 9F) Tape Error log pass 2.
inc PTR2 ;(fb1e E6 9F) Tape Error log pass 2.
lda VERCKK ;(fb20 A5 93) Flag: 0 = Load
beq iFB2F ;(fb22 F0 0B)
lda ROPRTY ;(fb24 A5 BD) RS232 Output Parity/Tape Byte to be Input or Output.
ldy #$00 ;(fb26 A0 00)
cmp (SAL),Y ;(fb28 D1 AC) Pointer: Tape Buffer/Screen scrolling.
beq iFB43 ;(fb2a F0 17)
iny ;(fb2c C8)
sty RODATA ;(fb2d 84 B6) RS232 Output Byte Buffer/Tape Read Error Flag.
iFB2F: lda RODATA ;(fb2f A5 B6) RS232 Output Byte Buffer/Tape Read Error Flag.
beq iFB3A ;(fb31 F0 07)
iFB33: lda #$10 ;(fb33 A9 10)
jsr iFE1C ;(fb35 20 1C FE)
bne iFB43 ;(fb38 D0 09)
iFB3A: lda VERCKK ;(fb3a A5 93) Flag: 0 = Load
bne iFB43 ;(fb3c D0 05)
tay ;(fb3e A8)
lda ROPRTY ;(fb3f A5 BD) RS232 Output Parity/Tape Byte to be Input or Output.
sta (SAL),Y ;(fb41 91 AC) Pointer: Tape Buffer/Screen scrolling.
iFB43: jsr iFCDB ;(fb43 20 DB FC)
bne iFB8B ;(fb46 D0 43)
iFB48: lda #$80 ;(fb48 A9 80)
iFB4A: sta RIDATA ;(fb4a 85 AA) RS232 Input Byte Buffer/Tape temporary.
sei ;(fb4c 78)
ldx #$01 ;(fb4d A2 01)
stx eDC0D ;(fb4f 8E 0D DC)
ldx eDC0D ;(fb52 AE 0D DC)
ldx FSBLK ;(fb55 A6 BE) Tape Input/Output Block count.
dex ;(fb57 CA)
bmi iFB5C ;(fb58 30 02)
stx FSBLK ;(fb5a 86 BE) Tape Input/Output Block count.
iFB5C: dec INBIT ;(fb5c C6 A7) RS232 temporary for received Bit/Tape temporary.
beq iFB68 ;(fb5e F0 08)
lda PTR1 ;(fb60 A5 9E) Tape Error log pass 1.
bne iFB8B ;(fb62 D0 27)
sta FSBLK ;(fb64 85 BE) Tape Input/Output Block count.
beq iFB8B ;(fb66 F0 23)
iFB68: jsr entry_fc93 ;(fb68 20 93 FC) entrypoint at $fc93
jsr iFB8E ;(fb6b 20 8E FB)
ldy #$00 ;(fb6e A0 00)
sty RIPRTY ;(fb70 84 AB) RS232 Input parity/Tape temporary.
iFB72: lda (SAL),Y ;(fb72 B1 AC) Pointer: Tape Buffer/Screen scrolling.
eor RIPRTY ;(fb74 45 AB) RS232 Input parity/Tape temporary.
sta RIPRTY ;(fb76 85 AB) RS232 Input parity/Tape temporary.
jsr iFCDB ;(fb78 20 DB FC)
jsr iFCD1 ;(fb7b 20 D1 FC)
bcc iFB72 ;(fb7e 90 F2)
lda RIPRTY ;(fb80 A5 AB) RS232 Input parity/Tape temporary.
eor ROPRTY ;(fb82 45 BD) RS232 Output Parity/Tape Byte to be Input or Output.
beq iFB8B ;(fb84 F0 05)
lda #$20 ;(fb86 A9 20)
jsr iFE1C ;(fb88 20 1C FE)
iFB8B: jmp entry_febc ;(fb8b 4C BC FE) entrypoint at $febc
;------------------------------------------------------------------------
iFB8E: lda STAL+$0001 ;(fb8e A5 C2) Start Address for LOAD and Cassette Write.
sta SAL+$0001 ;(fb90 85 AD) Pointer: Tape Buffer/Screen scrolling.
lda STAL ;(fb92 A5 C1) Start Address for LOAD and Cassette Write.
sta SAL ;(fb94 85 AC) Pointer: Tape Buffer/Screen scrolling.
rts ;(fb96 60)
;------------------------------------------------------------------------
iFB97: lda #$08 ;(fb97 A9 08)
sta TSFCNT ;(fb99 85 A3) Bit Counter Tape Read or Write/Serial Bus EOI (End Of Input) Flag.
lda #$00 ;(fb9b A9 00)
sta TBTCNT ;(fb9d 85 A4) Pulse Counter Tape Read or Write/Serial Bus shift Counter.
sta BITC1 ;(fb9f 85 A8) RS232 Input Bit count/Tape temporary.
sta PRTY ;(fba1 85 9B) Parity of Byte Output to Tape.
sta RINONE ;(fba3 85 A9) RS232 Flag: Start Bit check/Tape temporary.
rts ;(fba5 60)
;------------------------------------------------------------------------
;entrypoint at $fba6
;------------------------------------------------------------------------
entry_fba6: lda ROPRTY ;(fba6 A5 BD) RS232 Output Parity/Tape Byte to be Input or Output.
lsr A ;(fba8 4A)
lda #$60 ;(fba9 A9 60)
bcc iFBAF ;(fbab 90 02)
iFBAD: lda #$B0 ;(fbad A9 B0)
iFBAF: ldx #$00 ;(fbaf A2 00)
iFBB1: sta eDC06 ;(fbb1 8D 06 DC)
stx eDC07 ;(fbb4 8E 07 DC)
lda eDC0D ;(fbb7 AD 0D DC)
lda #$19 ;(fbba A9 19)
sta eDC0F ;(fbbc 8D 0F DC)
lda __CPUIO1__ ;(fbbf A5 01) Cpu-Port Data
eor #$08 ;(fbc1 49 08)
sta __CPUIO1__ ;(fbc3 85 01) Cpu-Port Data
and #$08 ;(fbc5 29 08)
rts ;(fbc7 60)
;------------------------------------------------------------------------
iFBC8: sec ;(fbc8 38)
ror RODATA ;(fbc9 66 B6) RS232 Output Byte Buffer/Tape Read Error Flag.
bmi iFC09 ;(fbcb 30 3C)
;entrypoint at $fbcd
;------------------------------------------------------------------------
lda BITC1 ;(fbcd A5 A8) RS232 Input Bit count/Tape temporary.
bne iFBE3 ;(fbcf D0 12)
lda #$10 ;(fbd1 A9 10)
ldx #$01 ;(fbd3 A2 01)
jsr iFBB1 ;(fbd5 20 B1 FB)
bne iFC09 ;(fbd8 D0 2F)
inc BITC1 ;(fbda E6 A8) RS232 Input Bit count/Tape temporary.
lda RODATA ;(fbdc A5 B6) RS232 Output Byte Buffer/Tape Read Error Flag.
bpl iFC09 ;(fbde 10 29)
jmp iFC57 ;(fbe0 4C 57 FC)
;------------------------------------------------------------------------
iFBE3: lda RINONE ;(fbe3 A5 A9) RS232 Flag: Start Bit check/Tape temporary.
bne iFBF0 ;(fbe5 D0 09)
jsr iFBAD ;(fbe7 20 AD FB)
bne iFC09 ;(fbea D0 1D)
inc RINONE ;(fbec E6 A9) RS232 Flag: Start Bit check/Tape temporary.
bne iFC09 ;(fbee D0 19)
iFBF0: jsr entry_fba6 ;(fbf0 20 A6 FB) entrypoint at $fba6
bne iFC09 ;(fbf3 D0 14)
lda TBTCNT ;(fbf5 A5 A4) Pulse Counter Tape Read or Write/Serial Bus shift Counter.
eor #$01 ;(fbf7 49 01)
sta TBTCNT ;(fbf9 85 A4) Pulse Counter Tape Read or Write/Serial Bus shift Counter.
beq iFC0C ;(fbfb F0 0F)
lda ROPRTY ;(fbfd A5 BD) RS232 Output Parity/Tape Byte to be Input or Output.
eor #$01 ;(fbff 49 01)
;IO Kernal ROM
;------------------------------------------------------------------------
sta ROPRTY ;(fc01 85 BD) RS232 Output Parity/Tape Byte to be Input or Output.
;IO Kernal ROM
;------------------------------------------------------------------------
and #$01 ;(fc03 29 01)
eor PRTY ;(fc05 45 9B) Parity of Byte Output to Tape.
sta PRTY ;(fc07 85 9B) Parity of Byte Output to Tape.
iFC09: jmp entry_febc ;(fc09 4C BC FE) entrypoint at $febc
;------------------------------------------------------------------------
iFC0C: lsr ROPRTY ;(fc0c 46 BD) RS232 Output Parity/Tape Byte to be Input or Output.
dec TSFCNT ;(fc0e C6 A3) Bit Counter Tape Read or Write/Serial Bus EOI (End Of Input) Flag.
lda TSFCNT ;(fc10 A5 A3) Bit Counter Tape Read or Write/Serial Bus EOI (End Of Input) Flag.
beq iFC4E ;(fc12 F0 3A)
bpl iFC09 ;(fc14 10 F3)
iFC16: jsr iFB97 ;(fc16 20 97 FB)
cli ;(fc19 58)
lda CNTDN ;(fc1a A5 A5) Tape Synchronising count down.
beq iFC30 ;(fc1c F0 12)
ldx #$00 ;(fc1e A2 00)
stx SCHAR ;(fc20 86 D7) Screen value of current Input Character/Last Character Output.
dec CNTDN ;(fc22 C6 A5) Tape Synchronising count down.
ldx FSBLK ;(fc24 A6 BE) Tape Input/Output Block count.
cpx #$02 ;(fc26 E0 02)
bne iFC2C ;(fc28 D0 02)
ora #$80 ;(fc2a 09 80)
iFC2C: sta ROPRTY ;(fc2c 85 BD) RS232 Output Parity/Tape Byte to be Input or Output.
bne iFC09 ;(fc2e D0 D9)
iFC30: jsr iFCD1 ;(fc30 20 D1 FC)
bcc iFC3F ;(fc33 90 0A)
bne iFBC8 ;(fc35 D0 91)
inc SAL+$0001 ;(fc37 E6 AD) Pointer: Tape Buffer/Screen scrolling.
lda SCHAR ;(fc39 A5 D7) Screen value of current Input Character/Last Character Output.
sta ROPRTY ;(fc3b 85 BD) RS232 Output Parity/Tape Byte to be Input or Output.
bcs iFC09 ;(fc3d B0 CA)
iFC3F: ldy #$00 ;(fc3f A0 00)
lda (SAL),Y ;(fc41 B1 AC) Pointer: Tape Buffer/Screen scrolling.
sta ROPRTY ;(fc43 85 BD) RS232 Output Parity/Tape Byte to be Input or Output.
eor SCHAR ;(fc45 45 D7) Screen value of current Input Character/Last Character Output.
sta SCHAR ;(fc47 85 D7) Screen value of current Input Character/Last Character Output.
jsr iFCDB ;(fc49 20 DB FC)
bne iFC09 ;(fc4c D0 BB)
iFC4E: lda PRTY ;(fc4e A5 9B) Parity of Byte Output to Tape.
eor #$01 ;(fc50 49 01)
sta ROPRTY ;(fc52 85 BD) RS232 Output Parity/Tape Byte to be Input or Output.
iFC54: jmp entry_febc ;(fc54 4C BC FE) entrypoint at $febc
;------------------------------------------------------------------------
iFC57: dec FSBLK ;(fc57 C6 BE) Tape Input/Output Block count.
bne iFC5E ;(fc59 D0 03)
jsr iFCCA ;(fc5b 20 CA FC)
iFC5E: lda #$50 ;(fc5e A9 50)
sta INBIT ;(fc60 85 A7) RS232 temporary for received Bit/Tape temporary.
ldx #$08 ;(fc62 A2 08)
sei ;(fc64 78)
jsr iFCBD ;(fc65 20 BD FC)
bne iFC54 ;(fc68 D0 EA)
lda #$78 ;(fc6a A9 78)
jsr iFBAF ;(fc6c 20 AF FB)
bne iFC54 ;(fc6f D0 E3)
dec INBIT ;(fc71 C6 A7) RS232 temporary for received Bit/Tape temporary.
bne iFC54 ;(fc73 D0 DF)
jsr iFB97 ;(fc75 20 97 FB)
dec RIPRTY ;(fc78 C6 AB) RS232 Input parity/Tape temporary.
bpl iFC54 ;(fc7a 10 D8)
ldx #$0A ;(fc7c A2 0A)
jsr iFCBD ;(fc7e 20 BD FC)
cli ;(fc81 58)
inc RIPRTY ;(fc82 E6 AB) RS232 Input parity/Tape temporary.
lda FSBLK ;(fc84 A5 BE) Tape Input/Output Block count.
beq entry_fcb8 ;(fc86 F0 30) entrypoint at $fcb8
jsr iFB8E ;(fc88 20 8E FB)
ldx #$09 ;(fc8b A2 09)
stx CNTDN ;(fc8d 86 A5) Tape Synchronising count down.
stx RODATA ;(fc8f 86 B6) RS232 Output Byte Buffer/Tape Read Error Flag.
bne iFC16 ;(fc91 D0 83)
;entrypoint at $fc93
;------------------------------------------------------------------------
entry_fc93: php ;(fc93 08)
sei ;(fc94 78)
lda VIC_YSCROLL ;(fc95 AD 11 D0) Y-Scroll/Gfxmode
ora #$10 ;(fc98 09 10)
sta VIC_YSCROLL ;(fc9a 8D 11 D0) Y-Scroll/Gfxmode
jsr iFCCA ;(fc9d 20 CA FC)
lda #$7F ;(fca0 A9 7F)
sta eDC0D ;(fca2 8D 0D DC)
jsr iFDDD ;(fca5 20 DD FD)
lda e02A0 ;(fca8 AD A0 02)
beq iFCB6 ;(fcab F0 09)
sta e0315 ;(fcad 8D 15 03)
lda e029F ;(fcb0 AD 9F 02)
sta IRQVEC ;(fcb3 8D 14 03) Kernal IRQ Ptr
iFCB6: plp ;(fcb6 28)
rts ;(fcb7 60)
;------------------------------------------------------------------------
;entrypoint at $fcb8
;------------------------------------------------------------------------
entry_fcb8: jsr entry_fc93 ;(fcb8 20 93 FC) entrypoint at $fc93
beq iFC54 ;(fcbb F0 97)
iFCBD: lda iFD93,X ;(fcbd BD 93 FD)
sta IRQVEC ;(fcc0 8D 14 03) Kernal IRQ Ptr
lda iFD94,X ;(fcc3 BD 94 FD)
sta e0315 ;(fcc6 8D 15 03)
rts ;(fcc9 60)
;------------------------------------------------------------------------
iFCCA: lda __CPUIO1__ ;(fcca A5 01) Cpu-Port Data
ora #$20 ;(fccc 09 20)
sta __CPUIO1__ ;(fcce 85 01) Cpu-Port Data
rts ;(fcd0 60)
;------------------------------------------------------------------------
iFCD1: sec ;(fcd1 38)
lda SAL ;(fcd2 A5 AC) Pointer: Tape Buffer/Screen scrolling.
sbc EAL ;(fcd4 E5 AE) Tape End Address/End of Program.
lda SAL+$0001 ;(fcd6 A5 AD) Pointer: Tape Buffer/Screen scrolling.
sbc EAL+$0001 ;(fcd8 E5 AF) Tape End Address/End of Program.
rts ;(fcda 60)
;------------------------------------------------------------------------
iFCDB: inc SAL ;(fcdb E6 AC) Pointer: Tape Buffer/Screen scrolling.
bne iFCE1 ;(fcdd D0 02)
inc SAL+$0001 ;(fcdf E6 AD) Pointer: Tape Buffer/Screen scrolling.
iFCE1: rts ;(fce1 60)
;------------------------------------------------------------------------
;entrypoint at $fce2
;------------------------------------------------------------------------
ldx #$FF ;(fce2 A2 FF)
sei ;(fce4 78)
txs ;(fce5 9A)
cld ;(fce6 D8)
jsr iFD02 ;(fce7 20 02 FD)
bne iFCEF ;(fcea D0 03)
jmp (e8000) ;(fcec 6C 00 80) *($8000)=$0000
;------------------------------------------------------------------------
iFCEF: stx VIC_XSCROLL ;(fcef 8E 16 D0) X-Scroll/Colmode
jsr iFDA3 ;(fcf2 20 A3 FD)
jsr iFD50 ;(fcf5 20 50 FD)
jsr iFD15 ;(fcf8 20 15 FD)
jsr iFF5B ;(fcfb 20 5B FF)
cli ;(fcfe 58)
jmp (BASIC) ;(fcff 6C 00 A0) *($a000)=$e394 Basic ROM
;------------------------------------------------------------------------
iFD02: ldx #$05 ;(fd02 A2 05)
iFD04: lda iFD0F,X ;(fd04 BD 0F FD)
cmp e8003,X ;(fd07 DD 03 80)
bne iFD0F ;(fd0a D0 03)
dex ;(fd0c CA)
bne iFD04 ;(fd0d D0 F5)
iFD0F: rts ;(fd0f 60)
;------------------------------------------------------------------------
;CBM80 Text
;------------------------------------------------------------------------
.byte $C3,$C2,$CD,$38,$30 ;(fd10) (fd10 CBM80)
iFD15: ldx #$30 ;(fd15 A2 30)
ldy #$FD ;(fd17 A0 FD)
clc ;(fd19 18)
iFD1A: stx MEMUSS ;(fd1a 86 C3) Pointer: Type 3 Tape LOAD and general use.
sty zpC4 ;(fd1c 84 C4)
ldy #$1F ;(fd1e A0 1F)
iFD20: lda IRQVEC,Y ;(fd20 B9 14 03) Kernal IRQ Ptr
bcs iFD27 ;(fd23 B0 02)
lda (MEMUSS),Y ;(fd25 B1 C3) Pointer: Type 3 Tape LOAD and general use.
iFD27: sta (MEMUSS),Y ;(fd27 91 C3) Pointer: Type 3 Tape LOAD and general use.
sta IRQVEC,Y ;(fd29 99 14 03) Kernal IRQ Ptr
dey ;(fd2c 88)
bpl iFD20 ;(fd2d 10 F1)
rts ;(fd2f 60)
;------------------------------------------------------------------------
;Kernal IO Vectors
;------------------------------------------------------------------------
.byte $31,$EA,$66,$FE,$47,$FE,$4A,$F3;(fd30) (fd30 1...g.j.)
.byte $91,$F2,$0E,$F2,$50,$F2,$33,$F3;(fd38) (fd38 ....p.3.)
.byte $57,$F1,$CA,$F1,$ED,$F6,$3E,$F1;(fd40) (fd40 w.J...>.)
.byte $2F,$F3,$66,$FE,$A5,$F4,$ED,$F5;(fd48) (fd48 /.......)
iFD50: lda #$00 ;(fd50 A9 00)
tay ;(fd52 A8)
iFD53: .byte $99,<TEMP,>TEMP ;(fd53) (fd53 ...)
sta e0200,Y ;(fd56 99 00 02)
sta e0300,Y ;(fd59 99 00 03)
iny ;(fd5c C8)
bne iFD53 ;(fd5d D0 F4)
ldx #$3C ;(fd5f A2 3C)
ldy #$03 ;(fd61 A0 03)
stx TAPE1 ;(fd63 86 B2) Pointer: Start Address of Tape Buffer ($033C).
sty TAPE1+$0001 ;(fd65 84 B3) Pointer: Start Address of Tape Buffer ($033C).
tay ;(fd67 A8)
lda #$03 ;(fd68 A9 03)
sta STAL+$0001 ;(fd6a 85 C2) Start Address for LOAD and Cassette Write.
iFD6C: inc STAL+$0001 ;(fd6c E6 C2) Start Address for LOAD and Cassette Write.
iFD6E: lda (STAL),Y ;(fd6e B1 C1) Start Address for LOAD and Cassette Write.
tax ;(fd70 AA)
lda #$55 ;(fd71 A9 55)
sta (STAL),Y ;(fd73 91 C1) Start Address for LOAD and Cassette Write.
cmp (STAL),Y ;(fd75 D1 C1) Start Address for LOAD and Cassette Write.
bne iFD88 ;(fd77 D0 0F)
rol A ;(fd79 2A)
sta (STAL),Y ;(fd7a 91 C1) Start Address for LOAD and Cassette Write.
cmp (STAL),Y ;(fd7c D1 C1) Start Address for LOAD and Cassette Write.
bne iFD88 ;(fd7e D0 08)
txa ;(fd80 8A)
sta (STAL),Y ;(fd81 91 C1) Start Address for LOAD and Cassette Write.
iny ;(fd83 C8)
bne iFD6E ;(fd84 D0 E8)
beq iFD6C ;(fd86 F0 E4)
iFD88: tya ;(fd88 98)
tax ;(fd89 AA)
ldy STAL+$0001 ;(fd8a A4 C2) Start Address for LOAD and Cassette Write.
clc ;(fd8c 18)
jsr iFE2D ;(fd8d 20 2D FE)
lda #$08 ;(fd90 A9 08)
iFD92: ;(fd92)
iFD93 = iFD92+$01 ;(fd93)
iFD94 = iFD92+$02 ;(fd94) Cpu-Port Data-Direction
sta e0282 ;(fd92 8D 82 02)
lda #$04 ;(fd95 A9 04)
sta e0288 ;(fd97 8D 88 02)
rts ;(fd9a 60)
;------------------------------------------------------------------------
;Kernal Interupt Vectors
;------------------------------------------------------------------------
.byte $6A,$FC,$CD,$FB,$31,$EA,$2C,$F9;(fd9b) (fd9b ..M.1.,.)
iFDA3: lda #$7F ;(fda3 A9 7F)
sta eDC0D ;(fda5 8D 0D DC)
sta eDD0D ;(fda8 8D 0D DD)
sta __CIA1__ ;(fdab 8D 00 DC) Complex Interface Adapter 1
lda #$08 ;(fdae A9 08)
sta eDC0E ;(fdb0 8D 0E DC)
sta eDD0E ;(fdb3 8D 0E DD)
sta eDC0F ;(fdb6 8D 0F DC)
sta eDD0F ;(fdb9 8D 0F DD)
ldx #$00 ;(fdbc A2 00)
stx __CIA1__+$0003 ;(fdbe 8E 03 DC) Complex Interface Adapter 1
stx CIA2+$0003 ;(fdc1 8E 03 DD) Complex Adapter Interface 2
stx _FILTVOL_ ;(fdc4 8E 18 D4) Filter/Volume
dex ;(fdc7 CA)
stx __CIA1__+$0002 ;(fdc8 8E 02 DC) Complex Interface Adapter 1
lda #$07 ;(fdcb A9 07)
sta CIA2 ;(fdcd 8D 00 DD) Complex Adapter Interface 2
lda #$3F ;(fdd0 A9 3F)
sta CIA2+$0002 ;(fdd2 8D 02 DD) Complex Adapter Interface 2
lda #$E7 ;(fdd5 A9 E7)
sta __CPUIO1__ ;(fdd7 85 01) Cpu-Port Data
lda #$2F ;(fdd9 A9 2F)
sta __CPUIO0__ ;(fddb 85 00) Cpu-Port Data-Direction
iFDDD: lda e02A6 ;(fddd AD A6 02)
beq iFDEC ;(fde0 F0 0A)
lda #$25 ;(fde2 A9 25)
sta eDC04 ;(fde4 8D 04 DC)
lda #$40 ;(fde7 A9 40)
jmp iFDF3 ;(fde9 4C F3 FD)
;------------------------------------------------------------------------
iFDEC: lda #$95 ;(fdec A9 95)
sta eDC04 ;(fdee 8D 04 DC)
lda #$42 ;(fdf1 A9 42)
iFDF3: sta eDC05 ;(fdf3 8D 05 DC)
jmp iFF6E ;(fdf6 4C 6E FF)
;------------------------------------------------------------------------
setnam_direct: sta FNLEN ;(fdf9 85 B7) Number of Characters in Filename.
stx FNADR ;(fdfb 86 BB) Pointer: Current File name Address.
sty zpBC ;(fdfd 84 BC)
rts ;(fdff 60)
;------------------------------------------------------------------------
setlfs_direct: sta LA ;(fe00 85 B8) Current File - Logical File number.
stx FA ;(fe02 86 BA) Current File - First Address (Device number).
sty SA ;(fe04 84 B9) Current File - Secondary Address.
rts ;(fe06 60)
;------------------------------------------------------------------------
readst_direct: lda FA ;(fe07 A5 BA) Current File - First Address (Device number).
cmp #$02 ;(fe09 C9 02)
bne iFE1A ;(fe0b D0 0D)
lda e0297 ;(fe0d AD 97 02)
pha ;(fe10 48)
lda #$00 ;(fe11 A9 00)
sta e0297 ;(fe13 8D 97 02)
pla ;(fe16 68)
rts ;(fe17 60)
;------------------------------------------------------------------------
iFE18: sta MSGFLG ;(fe18 85 9D) Flag: $00 = Program mode: Suppress Error Messages
iFE1A: lda STATUS ;(fe1a A5 90) Kernal I/O Status Word ST.
iFE1C: ora STATUS ;(fe1c 05 90) Kernal I/O Status Word ST.
sta STATUS ;(fe1e 85 90) Kernal I/O Status Word ST.
rts ;(fe20 60)
;------------------------------------------------------------------------
iFE21: sta e0285 ;(fe21 8D 85 02)
rts ;(fe24 60)
;------------------------------------------------------------------------
memtop_direct: bcc iFE2D ;(fe25 90 06)
iFE27: ldx e0283 ;(fe27 AE 83 02)
ldy e0284 ;(fe2a AC 84 02)
iFE2D: stx e0283 ;(fe2d 8E 83 02)
sty e0284 ;(fe30 8C 84 02)
rts ;(fe33 60)
;------------------------------------------------------------------------
iFE34: bcc iFE3C ;(fe34 90 06)
ldx e0281 ;(fe36 AE 81 02)
ldy e0282 ;(fe39 AC 82 02)
iFE3C: stx e0281 ;(fe3c 8E 81 02)
sty e0282 ;(fe3f 8C 82 02)
rts ;(fe42 60)
;------------------------------------------------------------------------
;entrypoint at $fe43
;------------------------------------------------------------------------
sei ;(fe43 78)
jmp (BRKVEC) ;(fe44 6C 18 03) *($0318)=$fe47 Kernal BRK Ptr
;------------------------------------------------------------------------
pha ;(fe47 48)
txa ;(fe48 8A)
pha ;(fe49 48)
tya ;(fe4a 98)
pha ;(fe4b 48)
lda #$7F ;(fe4c A9 7F)
sta eDD0D ;(fe4e 8D 0D DD)
ldy eDD0D ;(fe51 AC 0D DD)
bmi iFE72 ;(fe54 30 1C)
jsr iFD02 ;(fe56 20 02 FD)
bne iFE5E ;(fe59 D0 03)
jmp (e8002) ;(fe5b 6C 02 80) *($8002)=$0000
;------------------------------------------------------------------------
iFE5E: jsr iF6BC ;(fe5e 20 BC F6)
jsr stop ;(fe61 20 E1 FF)
bne iFE72 ;(fe64 D0 0C)
jsr iFD15 ;(fe66 20 15 FD)
jsr iFDA3 ;(fe69 20 A3 FD)
jsr cint1 ;(fe6c 20 18 E5)
jmp (eA002) ;(fe6f 6C 02 A0) *($a002)=$e37b
;------------------------------------------------------------------------
iFE72: tya ;(fe72 98)
and e02A1 ;(fe73 2D A1 02)
tax ;(fe76 AA)
and #$01 ;(fe77 29 01)
beq iFEA3 ;(fe79 F0 28)
lda CIA2 ;(fe7b AD 00 DD) Complex Adapter Interface 2
and #$FB ;(fe7e 29 FB)
ora NXTBIT ;(fe80 05 B5) RS232 Next Bit to send/Tape Read - End of Tape.
sta CIA2 ;(fe82 8D 00 DD) Complex Adapter Interface 2
lda e02A1 ;(fe85 AD A1 02)
sta eDD0D ;(fe88 8D 0D DD)
txa ;(fe8b 8A)
and #$12 ;(fe8c 29 12)
beq iFE9D ;(fe8e F0 0D)
and #$02 ;(fe90 29 02)
beq iFE9A ;(fe92 F0 06)
jsr entry_fed6 ;(fe94 20 D6 FE) entrypoint at $fed6
jmp iFE9D ;(fe97 4C 9D FE)
;------------------------------------------------------------------------
iFE9A: jsr entry_ff07 ;(fe9a 20 07 FF) entrypoint at $ff07
iFE9D: jsr iEEBB ;(fe9d 20 BB EE)
jmp iFEB6 ;(fea0 4C B6 FE)
;------------------------------------------------------------------------
iFEA3: txa ;(fea3 8A)
and #$02 ;(fea4 29 02)
beq iFEAE ;(fea6 F0 06)
jsr entry_fed6 ;(fea8 20 D6 FE) entrypoint at $fed6
jmp iFEB6 ;(feab 4C B6 FE)
;------------------------------------------------------------------------
iFEAE: txa ;(feae 8A)
and #$10 ;(feaf 29 10)
beq iFEB6 ;(feb1 F0 03)
jsr entry_ff07 ;(feb3 20 07 FF) entrypoint at $ff07
iFEB6: lda e02A1 ;(feb6 AD A1 02)
sta eDD0D ;(feb9 8D 0D DD)
;entrypoint at $febc
;------------------------------------------------------------------------
entry_febc: pla ;(febc 68)
tay ;(febd A8)
pla ;(febe 68)
tax ;(febf AA)
iFEC0: pla ;(fec0 68)
iFEC1: rti ;(fec1 40)
.byte $C1,$27,$3E,$1A,$C5,$11,$74,$0E;(fec2) (fec2 A'>.E...)
.byte $ED,$0C,$45,$06,$F0,$02,$46,$01;(feca) (feca ..e...f.)
.byte $B8,$00,$71,$00 ;(fed2) (fed2 ....)
;entrypoint at $fed6
;------------------------------------------------------------------------
entry_fed6: lda CIA2+$0001 ;(fed6 AD 01 DD) Complex Adapter Interface 2
and #$01 ;(fed9 29 01)
sta INBIT ;(fedb 85 A7) RS232 temporary for received Bit/Tape temporary.
lda eDD06 ;(fedd AD 06 DD)
sbc #$1C ;(fee0 E9 1C)
adc e0299 ;(fee2 6D 99 02)
sta eDD06 ;(fee5 8D 06 DD)
lda eDD07 ;(fee8 AD 07 DD)
adc e029A ;(feeb 6D 9A 02)
sta eDD07 ;(feee 8D 07 DD)
lda #$11 ;(fef1 A9 11)
sta eDD0F ;(fef3 8D 0F DD)
lda e02A1 ;(fef6 AD A1 02)
sta eDD0D ;(fef9 8D 0D DD)
lda #$FF ;(fefc A9 FF)
sta eDD06 ;(fefe 8D 06 DD)
sta eDD07 ;(ff01 8D 07 DD)
jmp iEF59 ;(ff04 4C 59 EF)
;------------------------------------------------------------------------
;entrypoint at $ff07
;------------------------------------------------------------------------
entry_ff07: lda e0295 ;(ff07 AD 95 02)
sta eDD06 ;(ff0a 8D 06 DD)
lda e0296 ;(ff0d AD 96 02)
sta eDD07 ;(ff10 8D 07 DD)
lda #$11 ;(ff13 A9 11)
sta eDD0F ;(ff15 8D 0F DD)
lda #$12 ;(ff18 A9 12)
eor e02A1 ;(ff1a 4D A1 02)
sta e02A1 ;(ff1d 8D A1 02)
lda #$FF ;(ff20 A9 FF)
sta eDD06 ;(ff22 8D 06 DD)
sta eDD07 ;(ff25 8D 07 DD)
ldx e0298 ;(ff28 AE 98 02)
stx BITC1 ;(ff2b 86 A8) RS232 Input Bit count/Tape temporary.
rts ;(ff2d 60)
;------------------------------------------------------------------------
;entrypoint at $ff2e
;------------------------------------------------------------------------
entry_ff2e: tax ;(ff2e AA)
lda e0296 ;(ff2f AD 96 02)
rol A ;(ff32 2A)
tay ;(ff33 A8)
txa ;(ff34 8A)
adc #$C8 ;(ff35 69 C8)
sta e0299 ;(ff37 8D 99 02)
tya ;(ff3a 98)
adc #$00 ;(ff3b 69 00)
sta e029A ;(ff3d 8D 9A 02)
rts ;(ff40 60)
;------------------------------------------------------------------------
;entrypoint at $ff41
;------------------------------------------------------------------------
nop ;(ff41 EA)
nop ;(ff42 EA)
;entrypoint at $ff43
;------------------------------------------------------------------------
entry_ff43: php ;(ff43 08)
pla ;(ff44 68)
and #$EF ;(ff45 29 EF)
pha ;(ff47 48)
pha ;(ff48 48)
txa ;(ff49 8A)
pha ;(ff4a 48)
tya ;(ff4b 98)
pha ;(ff4c 48)
tsx ;(ff4d BA)
lda e0104,X ;(ff4e BD 04 01)
and #$10 ;(ff51 29 10)
beq iFF58 ;(ff53 F0 03)
jmp (NMIVEC) ;(ff55 6C 16 03) *($0316)=$fe66 Kernal NMI Ptr
;------------------------------------------------------------------------
iFF58: jmp (IRQVEC) ;(ff58 6C 14 03) *($0314)=$ea31 Kernal IRQ Ptr
;------------------------------------------------------------------------
iFF5B: jsr cint1 ;(ff5b 20 18 E5)
iFF5E: lda VIC_CURLINE ;(ff5e AD 12 D0) current Rasterline
bne iFF5E ;(ff61 D0 FB)
lda VIC_IRR ;(ff63 AD 19 D0) interupt request register
and #$01 ;(ff66 29 01)
sta e02A6 ;(ff68 8D A6 02)
jmp iFDDD ;(ff6b 4C DD FD)
;------------------------------------------------------------------------
iFF6E: lda #$81 ;(ff6e A9 81)
sta eDC0D ;(ff70 8D 0D DC)
lda eDC0E ;(ff73 AD 0E DC)
and #$80 ;(ff76 29 80)
ora #$11 ;(ff78 09 11)
sta eDC0E ;(ff7a 8D 0E DC)
jmp iEE8E ;(ff7d 4C 8E EE)
;------------------------------------------------------------------------
.byte $00 ;(ff80) (ff80 .)
;entrypoint at $ff81
;------------------------------------------------------------------------
jmp iFF5B ;(ff81 4C 5B FF)
;------------------------------------------------------------------------
;entrypoint at $ff84
;------------------------------------------------------------------------
jmp iFDA3 ;(ff84 4C A3 FD)
;------------------------------------------------------------------------
;entrypoint at $ff87
;------------------------------------------------------------------------
jmp iFD50 ;(ff87 4C 50 FD)
;------------------------------------------------------------------------
;entrypoint at $ff8a
;------------------------------------------------------------------------
jmp iFD15 ;(ff8a 4C 15 FD)
;------------------------------------------------------------------------
;entrypoint at $ff8d
;------------------------------------------------------------------------
jmp iFD1A ;(ff8d 4C 1A FD)
;------------------------------------------------------------------------
;entrypoint at $ff90
;------------------------------------------------------------------------
jmp iFE18 ;(ff90 4C 18 FE)
;------------------------------------------------------------------------
;entrypoint at $ff93
;------------------------------------------------------------------------
jmp iEDB9 ;(ff93 4C B9 ED)
;------------------------------------------------------------------------
;entrypoint at $ff96
;------------------------------------------------------------------------
jmp iEDC7 ;(ff96 4C C7 ED)
;------------------------------------------------------------------------
memtop: jmp memtop_direct ;(ff99 4C 25 FE)
;------------------------------------------------------------------------
;entrypoint at $ff9c
;------------------------------------------------------------------------
entry_ff9c: jmp iFE34 ;(ff9c 4C 34 FE)
;------------------------------------------------------------------------
;entrypoint at $ff9f
;------------------------------------------------------------------------
jmp iEA87 ;(ff9f 4C 87 EA)
;------------------------------------------------------------------------
;entrypoint at $ffa2
;------------------------------------------------------------------------
jmp iFE21 ;(ffa2 4C 21 FE)
;------------------------------------------------------------------------
;entrypoint at $ffa5
;------------------------------------------------------------------------
jmp iEE13 ;(ffa5 4C 13 EE)
;------------------------------------------------------------------------
;entrypoint at $ffa8
;------------------------------------------------------------------------
jmp iEDDD ;(ffa8 4C DD ED)
;------------------------------------------------------------------------
;entrypoint at $ffab
;------------------------------------------------------------------------
jmp iEDEF ;(ffab 4C EF ED)
;------------------------------------------------------------------------
jmp iEDFE ;(ffae 4C FE ED)
;------------------------------------------------------------------------
jmp iED0C ;(ffb1 4C 0C ED)
;------------------------------------------------------------------------
;entrypoint at $ffb4
;------------------------------------------------------------------------
jmp iED09 ;(ffb4 4C 09 ED)
;------------------------------------------------------------------------
readst: jmp readst_direct ;(ffb7 4C 07 FE)
;------------------------------------------------------------------------
setlfs: jmp setlfs_direct ;(ffba 4C 00 FE)
;------------------------------------------------------------------------
setnam: jmp setnam_direct ;(ffbd 4C F9 FD)
;------------------------------------------------------------------------
;entrypoint at $ffc0
;------------------------------------------------------------------------
entry_ffc0: jmp (e031A) ;(ffc0 6C 1A 03) *($031a)=$f34a
;------------------------------------------------------------------------
;entrypoint at $ffc3
;------------------------------------------------------------------------
entry_ffc3: jmp (e031C) ;(ffc3 6C 1C 03) *($031c)=$f291
;------------------------------------------------------------------------
;entrypoint at $ffc6
;------------------------------------------------------------------------
entry_ffc6: jmp (e031E) ;(ffc6 6C 1E 03) *($031e)=$f20e
;------------------------------------------------------------------------
;entrypoint at $ffc9
;------------------------------------------------------------------------
entry_ffc9: jmp (e0320) ;(ffc9 6C 20 03) *($0320)=$f250
;------------------------------------------------------------------------
;entrypoint at $ffcc
;------------------------------------------------------------------------
entry_ffcc: jmp (e0322) ;(ffcc 6C 22 03) *($0322)=$f333
;------------------------------------------------------------------------
;entrypoint at $ffcf
;------------------------------------------------------------------------
entry_ffcf: jmp (e0324) ;(ffcf 6C 24 03) *($0324)=$f157
;------------------------------------------------------------------------
;entrypoint at $ffd2
;------------------------------------------------------------------------
entry_ffd2: jmp (e0326) ;(ffd2 6C 26 03) *($0326)=$f1ca
;------------------------------------------------------------------------
;entrypoint at $ffd5
;------------------------------------------------------------------------
entry_ffd5: jmp iF49E ;(ffd5 4C 9E F4)
;------------------------------------------------------------------------
;entrypoint at $ffd8
;------------------------------------------------------------------------
jmp iF5DD ;(ffd8 4C DD F5)
;------------------------------------------------------------------------
;entrypoint at $ffdb
;------------------------------------------------------------------------
jmp iF6E4 ;(ffdb 4C E4 F6)
;------------------------------------------------------------------------
;entrypoint at $ffde
;------------------------------------------------------------------------
jmp iF6DD ;(ffde 4C DD F6)
;------------------------------------------------------------------------
stop: jmp (e0328) ;(ffe1 6C 28 03) *($0328)=$f6ed
;------------------------------------------------------------------------
;entrypoint at $ffe4
;------------------------------------------------------------------------
entry_ffe4: jmp (e032A) ;(ffe4 6C 2A 03) *($032a)=$f13e
;------------------------------------------------------------------------
;entrypoint at $ffe7
;------------------------------------------------------------------------
jmp (e032C) ;(ffe7 6C 2C 03) *($032c)=$f32f
;------------------------------------------------------------------------
udtim: jmp udtim_direct ;(ffea 4C 9B F6)
;------------------------------------------------------------------------
;entrypoint at $ffed
;------------------------------------------------------------------------
jmp iE505 ;(ffed 4C 05 E5)
;------------------------------------------------------------------------
;entrypoint at $fff0
;------------------------------------------------------------------------
jmp iE50A ;(fff0 4C 0A E5)
;------------------------------------------------------------------------
iobase: jmp iobase_direct ;(fff3 4C 00 E5)
;------------------------------------------------------------------------
.byte $52,$52,$42,$59,$43,$FE,$E2,$FC;(fff6) (fff6 rrbyc...)
.byte $48,$FF ;
|
| |