;
;
; The Complete
;
; ROM dissasembly
;
; By
; Mike Dailly
;
; (c) Copyright 1998,1999,2000,2001
; All rights reserved
;
; mike@dailly.org
;
;
; You will find MANY sections here unaccounted for,
; I would like some day to have a complete version,
; just like the famous "The Complete Spectrum Rom Disassembly"
;
; Some information was obtained from Peter Gerrard's and Kevin Bergin's
; book "The Complete COMMODORE 16 ROM Disassembly" available from
; Duckworth - ISBN 0 7156 2004 5
;
;
; Much of this will not compile due to the "extra" opcodes
; that most assemblers will not recognise. where possible
; I will include DB's or DW's
;
;
; Version
; -------
; 0.1 First public version. Small amount done just to show
; whats being done and how.
; 0.1-JK Additional comment by johann AT klasek at
;
;
; Zero page variables
;
IOdirection equ $00 ; Chip IO directional register
IO equ $01 ; Chip I/O, serial bus & tape control
; Bit: 7 - Serial IN Bit
; 6
; 5
; 4
; 3
; 2
; 1 - Serial handshake (out)
; 0 - Serial OUT line (HW inverted)
TokenSearch equ $02 ; Token value search
Renumber equ $03 ; renumber params ($03-$06)
EOLSearch equ $07 ; search char for end of line
QuoteScan equ $08 ; Scan quotes flag
TABsave equ $09 ; TAB column save
LoadVerify equ $0a ; Load=0, Verify=1
InputBuffer equ $0b ; Basic input buffer pointer/subscript no.
DIMflag equ $0c ; Default DIM flag
VARflag equ $0d ; Variable flag, $ff=string, $00=numeric.
NumericFlag equ $0e ; Numeric flag: $80=integer, $00=float
FlagMisc equ $0f ; Flag; DATA scan, LIST quote, memory.
flagFNx equ $10 ; Flag; Subscript - FNx
flagInput equ $11 ; Flag; 0=Input; 152=Read; 64=Get
flagATN equ $12 ; Flag; ATN sign - comparison evaluation
flagPrompt equ $13 ; Flag; Current I/O prompt(1=prompt off)
BasicInt16 equ $14 ; Basic stores integers here
BasicIntLo equ $14 ; LOW
BasicIntHi equ $15 ; HI
StringSP equ $16 ; Temporary string stack
StringVector equ $17 ; Last temporary string vector
StringVectorLO equ $17
StringVectorHI equ $18
StringStack equ $19 ; Stack for temporary string vector
UtilArea equ $22 ; $22-$25 temp pointer area
Address equ $24 ; General Zero Page address usage.
AddressLo equ $24
AddressHi equ $25
LastBasicLineNo equ $3b ; Previous BASIC line number
StackTop equ $7c ; Top of run-time stack
Running equ $81 ; running a basic program? $80=yes
CurrLogFileNo equ $ac ; Current logical file number
CurrSecAdd equ $ad ; Current Secondary address
CurrDev equ $ae ; Current device number
CurrentROMBank equ $fb ; this holds the current ROM selector
CrunchBasicTokenVec equ $0304 ; Crunch BASIC Tokens link
CrunchVec equ $030C ; Crunch HOOK vector
CHRGET equ $0473 ; get byte from basic ( incs LastBasicLineNo first )
CHRGOT equ $0479 ; gets current byte from basic (doesn't inc LastBasicLineNo )
USRJump equ $500 ; USR program jump
ORG $8000
;
; $8000 - COLD start
;
L8000 JMP L8019
;
; $8000 - WARM start
;
L8003 JMP L800A
db $00
db $43,$42,$4D ; "cbm" ROM validation code
JSR LFFCC ; restore IO vector
JSR L8ADB ; half way through "CLR"
STA $13 ; store current I/O prompt..
JSR LC7C9
CLI
L8016 JMP L867E ; Error routine...
L8019 JSR L8117 ; Initialize vectors
JSR L802E ; Initialize BASIC
JSR L80C2 ; print power on message "COMMODORE BASIC V3.5 ???? BYTES FREE"
JSR LFCF4 ; "phoenix" routine. page in roms and check them
LDX #$FB
TXS
BNE L8016 ; jump to error routine...
dw FixedFloat ; $9871
dw FloatFixed ; $9471
;
; $802E - Initialize BASIC
;
L802E LDA #$4C ; "JMP" opcode
STA $54 ; store in JUMP vector for functions
STA $0500 ; and in USR program jump
LDA #$1C ; point USR program jump to
LDY #$99 ; "Illegal Quantity error"
STA $0501
STY $0502
LDX #$03 ; Copy 4 bytes over for 2 vectors
L8041 LDA $802A,x ; First is Float-Fixed ($9871)
STA $02F2,x ; next is Fixed-Float ($9471)
DEX
BPL L8041
LDX #$32 ; Copy down CHARGET and CHRGOT
L804C LDA $8122,x ; routines. These are used for
STA $0472,x ; fetching data under the system
DEX ; ROM
BNE L804C
STX $68 ; store 0 in Accum #1; hi-order (overflow)
STX $13 ; current I/O prompt flag (1=off)
STX $18 ; Last temp string vector
STX $02EB ; TRACE off (on=255)
STX $1000 ; Start of BASIC RAM (lowres)
TXA ; lda #$00
LDX #$03
L8064 STA $72,x ; clear cassette buffer length
STA $02E5,x ; clear some graphics work area.
DEX
BNE L8064
NOP ; how quaint...
STX $0503 ; store 0 in... RND seed value (lowest)
INX ; store 1 in....
STX $01FD ; work area..
STX $01FC
LDX $053B ; get character colour attribute.
STX $86 ; and store in foreground colour.
LDX #$36
STX $85 ; set Multicolour colour one to $36
LDX #$19
STX $16 ; set temp string stack.
LDX #$01
LDY #$10
STX $2B ; set start of basic.
STY $2C
LDX #$05
STX $22 ; util pointer area.
LDA #$D0
STA $02E4 ; graphics work area.
LDX #$02
L8097 LDA $0532,x ; copy start of memory pointer to
STA $36,x ; end of string storage
STA $32,x ; and end of arrays.
DEX
BNE L8097
;
; This copies the "GetUnderROM" section into a few places after CHRGET/CHRGOT.
;
L80A1 LDY #$00
L80A3 LDA $8147,y ; copy get byte down into RAM
STA $04A5,x ; pages ROM out, gets byte from
INX ; ($??),y restores ROM and returns.
INY ; IRQ's are also disabled/enabled
CPY #$0B
BCC L80A3
LDY $22 ; Starts at 5 and works down...
LDA $80BC,y ; $3b,$22,$24,$6f,$5f,$64
STA $049F,x
DEC $22
BPL L80A1
RTS
L08BC db $64,$5f,$6f,$24,$22,$3b
;
; Print power on message
;
L80C2 LDA $2B
LDY $2C
JSR L8923
JSR PrintMessage
;
; Power on message
;
L80CD db $93,$0d,$20,$43,$4f,$4d,$4d,$4f ; COMMODOR
db $44,$4f,$52,$45,$20,$42,$41,$53 ; E BASIC
db $49,$43,$20,$56,$33,$2e,$35,$20 ; V3.5
db $00
L80E5 LDA $37 ; print "60671 bytes free"
SEC ; (on a plus/4)
SBC $2B
TAX
LDA $38
SBC $2C
JSR LA45F
JSR PrintMessage
db $20,$42,$59,$54,$45,$53,$20,$46 ; BYTES F
db $52,$45,$45,$0d,$00 ; REE..
jmp $8a7b ; perform "NEW"
; Vectors for $300
dw $8686 ; Error message link
dw $8712 ; Warm start link
dw $8956 ; Crunch Basic Tokens link
dw $8b6e ; Char. list link
dw $8bd6 ; Char. dispatch
dw $9417 ; Token evaluation
dw $896a ; Crunch hook vector
dw $8b88 ; List hook vector
dw $8c8b ; Execute hook vector
;
; Init jump vectors from $300 to $311
;
InitVectors:
LDX #$11 ; Copy vectors down from
L8119 LDA $8105,x ; ROM into RAM at $300
STA $0300,x
DEX
BPL L8119
RTS
;
; CHRGET/CHRGOT - This chunk of code is copied to RAM
; and run from there. It is used to get data UNDER the
; system ROM's for basic.
;
; CHRGET ($0473)
L8123 INC LastBasicLineNo ; $3b (goes to $0473 ) CHRGET
BNE L8129
INC LastBasicLineNo+1 ; $3c
;
; CHRGOT ($0479)
;
L8129 SEI
STA RAM_ON
LDY #$00
LDA (LastBasicLineNo),y ; $3b
STA ROM_ON
CLI
CMP #$3A ; ":" (colon)
BCS L8143 ; if colon, exit
CMP #$20 ; " " (space)
BEQ L8123 ; if space, get NEXT byte from basic
SEC
SBC #$30
SEC
SBC #$D0
L8143 RTS
L0494 STA $049C ; set location to get byte from.
;
; This section gets copied to $04A5
;
GetUnderROM
SEI ; IRQ's off
STA RAM_ON ; DISABLE ROM
LDA ($00),y ; get byte ($00 is at location $49C)
STA ROM_ON ; enable ROM
CLI ; IRQ's on again..
RTS ; and return...
db $00,$00,$00
;
; Error message vectors
;
L8155 LDA #$43
BNE L818B
L8159 LDA #$4E
BNE L818B
L815D LDA #$14
BNE L818B
L8161 LDA #$47
BNE L818B
L8165 LDA #$4E
BNE L818B
L8169 LDA #$5C
BNE L818B
L816D LDA #$5F
BNE L818B
L8171 LDA #$3D
BNE L818B
L8175 LDA #$57
BNE L818B
L8179 LDA #$59
BNE L818B
L817D LDA #$62
BNE L818B
L8181 LDA #$50
BNE L818B
L8185 LDA #$6C
BNE L818B
L8189 LDA #$5A
L818B JMP $0494
;
; Keywords. The end of each keyword has bit 7 set.
; So END is 'E','N','D'+$80
;
; DEFB "EN",'D'+$80
;
db $45,$4E,$C4 ; END
db $46,$4F,$D2 ; FOR
db $4E,$45,$58,$D4 ; NEXT
db $44,$41,$54,$C1 ; DATA
db $49,$4E,$50,$55,$54,$A3 ; INPUT#
db $49,$4E,$50,$55,$D4 ; INPUT
db $44,$49,$CD ; DIM
db $52,$45,$41,$C4 ; READ
db $4C,$45,$D4 ; LET
db $47,$4F,$54,$CF ; GOTO
db $52,$55,$CE ; RUN
db $49,$C6 ; IF
db $52,$45,$53,$54,$4F,$52,$C5 ; RESTORE
db $47,$4F,$53,$55,$C2 ; GOSUB
db $52,$45,$54,$55,$52,$CE ; RETURN
db $52,$45,$CD ; REM
db $53,$54,$4F,$D0 ; STOP
db $4F,$CE ; ON
db $57,$41,$49,$D4 ; WAIT
db $4C,$4F,$41,$C4 ; LOAD
db $53,$41,$56,$C5 ; SAVE
db $56,$45,$52,$49,$46,$D9 ; VERIFY
db $44,$45,$C6 ; DEF
db $50,$4F,$4B,$C5 ; POKE
db $50,$52,$49,$4E,$54,$A3 ; PRINT#
db $50,$52,$49,$4E,$D4 ; PRINT
db $43,$4F,$4E,$D4 ; CONT
db $4C,$49,$53,$D4 ; LIST
db $43,$4C,$D2 ; CLR
db $43,$4D,$C4 ; CMD
db $53,$59,$D3 ; SYS
db $4F,$50,$45,$CE ; OPEN
db $43,$4C,$4F,$53,$C5, $47,$45,$D4 ; CLOSE GET
db $4E,$45,$D7, $54,$41,$42,$A8, $54 ; NEW TAB( T
db $CF,$46,$CE,$53,$50,$43,$A8,$54 ; OFNSPC(T
db $48,$45,$CE,$4E,$4F,$D4,$53,$54 ; HENNOTST
db $45,$D0,$AB,$AD,$AA,$AF,$DE,$41 ; EP+-*/^A
db $4E,$C4,$4F,$D2,$BE,$BD,$BC,$53 ; NDOR>=<S
db $47,$CE,$49,$4E,$D4,$41,$42,$D3 ; GNINTABS
db $55,$53,$D2,$46,$52,$C5,$50,$4F ; USRFREPO
db $D3,$53,$51,$D2,$52,$4E,$C4,$4C ; SSQRRNDL
db $4F,$C7,$45,$58,$D0,$43,$4F,$D3 ; OGEXPCOS
db $53,$49,$CE,$54,$41,$CE,$41,$54 ; SINTANAT
db $CE,$50,$45,$45,$CB,$4C,$45,$CE ; NPEEKLEN
db $53,$54,$52,$A4,$56,$41,$CC,$41 ; STR$VALA
db $53,$C3,$43,$48,$52,$A4,$4C,$45 ; SCCHR$LE
db $46,$54,$A4,$52,$49,$47,$48,$54 ; FT$RIGHT
db $A4,$4D,$49,$44,$A4,$47,$CF,$52 ; $MID$GOR
db $47,$D2,$52,$43,$4C,$D2,$52,$4C ; GRRCLRRL
db $55,$CD,$4A,$4F,$D9,$52,$44,$4F ; UMJOYRDO
db $D4,$44,$45,$C3,$48,$45,$58,$A4 ; TDECHEX$
db $45,$52,$52,$A4,$49,$4E,$53,$54 ; ERR$INST
db $D2,$45,$4C,$53,$C5,$52,$45,$53 ; RELSERES
db $55,$4D,$C5,$54,$52,$41,$D0, $54 ; UMETRAP T
db $52,$4F,$CE, $54,$52,$4F,$46,$C6 ; RON TROFF
db $53,$4F,$55,$4E,$C4, $56,$4F,$CC ; SOUND VOL
db $41,$55,$54,$CF,$50,$55,$44,$45 ; AUTO PUDE
db $C6,$47,$52,$41,$50,$48,$49,$C3 ; FGRAPHIC
db $50,$41,$49,$4E,$D4,$43,$48,$41 ; PAINTCHA
db $D2,$42,$4F,$D8,$43,$49,$52,$43 ; RBOXCIRC
db $4C,$C5,$47,$53,$48,$41,$50,$C5 ; LEGSHAPE
db $53,$53,$48,$41,$50,$C5,$44,$52 ; SSHAPEDR
db $41,$D7,$4C,$4F,$43,$41,$54,$C5 ; AWLOCATE
db $43,$4F,$4C,$4F,$D2,$53,$43,$4E ; COLORSCN
db $43,$4C,$D2,$53,$43,$41,$4C,$C5 ; CLRSCALE
db $48,$45,$4C,$D0,$44,$CF,$4C,$4F ; HELPDOLO
db $4F,$D0,$45,$58,$49,$D4,$44,$49 ; OPEXITDI
db $52,$45,$43,$54,$4F,$52,$D9,$44 ; RECTORYD
db $53,$41,$56,$C5,$44,$4C,$4F,$41 ; SAVEDLOA
db $C4,$48,$45,$41,$44,$45,$D2,$53 ; DHEADERS
db $43,$52,$41,$54,$43,$C8, $43,$4F ; CRATCH CO
db $4C,$4C,$45,$43,$D4, $43,$4F,$50 ; LLECT COP
db $D9,$52,$45,$4E,$41,$4D,$C5,$42 ; YRENAMEB
db $41,$43,$4B,$55,$D0,$44,$45,$4C ; ACKUPDEL
db $45,$54,$C5,$52,$45,$4E,$55,$4D ; ETERENUM
db $42,$45,$D2,$4B,$45,$D9,$4D,$4F ; BERKEYMO
db $4E,$49,$54,$4F,$D2,$55,$53,$49 ; NITORUSI
db $4E,$C7,$55,$4E,$54,$49,$CC,$57 ; NGUNTILW
db $48,$49,$4C,$C5,$00 ; HILE@
;
; Keyword Action vectors
;
; All these vectors are -1 from the actual
; JUMP to address. these addresses are
; PUSHED onto the stack and RTS'ed to.
;
L8383 dw $8CD9, $ADC9, $9293, $8DAF ; END, FOR, NEXT, DATA/BEND
dw $90ED, $9107, $969A, $914E ; INPUT#, INPUT, DIM, READ
dw $8E7B, $8D4C, $8BBB, $8DE0 ; LET, GOTO, RUN, IF
dw $8C99, $8D2B, $8D82, $8E0A ; RESTORE, GOSUB, RETURN, REM
dw $8CD7, $8E1A, $9E69, $A7F2 ; STOP, ON, WAIT, LOAD
dw $A7DD, $A7EF, $9A9C, $9E11 ; SAVE, VERIFY, DEF, POKE
dw $8FDF, $8FFF, $8D02, $8AFE ; PRINT#, PRINT, CONT, LIST
dw $8A97, $8FE5, $A7B4, $A84C ; CLR, CMD, SYS, OPEN
dw $A859, $90B7, $8A78, $8E0A ; CLOSE, GET, NEW, ELSE
dw $B43F, $B42A, $B651, $B654 ; RESUME, TRAP, TRON, TROFF
dw $B848, $B8BC, $B6CC, $B543 ; SOUND, VOL, AUTO ($DC), PUDEF
dw $C5C2, $B8D0, $B9D3, $BAE1 ; GRAPHIC, PAINT, CHAR, BOX
dw $C01D, $BD34, $BE28, $C4D8 ; CIRCLE, GSHAPE, SSHAPE, DRAW
dw $C50E, $C519, $C566, $C5B7 ; LOCATE COLOR, SCNCLR, SCALE
dw $B6E7, $B556, $B602, $B5AB ; HELP, DO, LOOP, EXIT
dw $C8BB, $C940, $C950, $C967 ; CATALOG/DIRECTORY ($EE), DSAVE, DLOAD, HEADER
dw $C99B, $C9CB, $C9D9, $C9F3 ; SCRATCH ($F2), COLLECT ($F3), COPY ($F4), RENAME
dw $C9FF, $AE59, $AB8E, $B728 ; BACKUP ($F6), DELETE ($F7), RENUMBER, KEY
dw $FF51, $A2BE, $A358, $A2DD ; MONITOR
dw $0500, $9A62, $9A7D, $A5E4 ;
dw $A707, $A01E, $A660, $AA70
dw $AA77, $AAC0, $AB1A, $9DFA
dw $9D61, $9B66, $9D93, $9D70
dw $9CBB, $9CCF, $9D03, $9D15
dw $BF79, $BF85, $BF87, $BFC1
dw $BFFD, $9E1B, $B507, $B4BE
dw $9D79, $799E, $9E86, $7A7B
dw $7BA0, $A196, $ED7F, $50A5
dw $95FA, $F746, $7D95, $A626
dw $645A, $6494, $9627
;
; Error messages
;
; The end of each message has bit 7 set.
; db "TOO MANY FILE FILE OPE",'N'+$80
;
L8471 db $54,$4F,$4F,$20,$4D,$41,$4E,$59 ; TOO MANY FILE FILE OPEN
db $20,$46,$49,$4C,$45,$D3,$46,$49 ;
db $4C,$45,$20,$4F,$50,$45,$CE
db $46,$49,$4C,$45,$20,$4E,$4F,$54 ; FILE NOT OPEN
db $20,$4F,$50,$45,$CE
db $46,$49,$4C,$45 ; FILE
db $20,$4E,$4F,$54,$20,$46,$4F,$55 ; NOT FOU
db $4E,$C4,$44,$45,$56,$49,$43,$45 ; N DEVICE
db $20,$4E,$4F,$54,$20,$50,$52,$45 ; NOT PRE
db $53,$45,$4E,$D4,$4E,$4F,$54,$20 ; SEN NOT
db $49,$4E,$50,$55,$54,$20,$46,$49 ; INPUT FI
db $4C,$C5,$4E,$4F,$54,$20,$4F,$55 ; L NOT OU
db $54,$50,$55,$54,$20,$46,$49,$4C ; TPUT FIL
db $C5,$4D,$49,$53,$53,$49,$4E,$47 ; MISSING
db $20,$46,$49,$4C,$45,$20,$4E,$41 ; FILE NA
db $4D,$C5,$49,$4C,$4C,$45,$47,$41 ; M ILLEGA
db $4C,$20,$44,$45,$56,$49,$43,$45 ; L DEVICE
db $20,$4E,$55,$4D,$42,$45,$D2,$4E ; NUMBE N
db $45,$58,$54,$20,$57,$49,$54,$48 ; EXT WITH
db $4F,$55,$54,$20,$46,$4F,$D2,$53 ; OUT FO S
db $59,$4E,$54,$41,$D8,$52,$45,$54 ; YNTA RET
db $55,$52,$4E,$20,$57,$49,$54,$48 ; URN WITH
db $4F,$55,$54,$20,$47,$4F,$53,$55 ; OUT GOSU
db $C2,$4F,$55,$54,$20,$4F,$46,$20 ; OUT OF
db $44,$41,$54,$C1,$49,$4C,$4C,$45 ; DAT ILLE
db $47,$41,$4C,$20,$51,$55,$41,$4E ; GAL QUAN
db $54,$49,$54,$D9,$4F,$56,$45,$52 ; TIT OVER
db $46,$4C,$4F,$D7,$4F,$55,$54,$20 ; FLO OUT
db $4F,$46,$20,$4D,$45,$4D,$4F,$52 ; OF MEMOR
db $D9,$55,$4E,$44,$45,$46,$27,$44 ; UNDEF'D
db $20,$53,$54,$41,$54,$45,$4D,$45 ; STATEME
db $4E,$D4,$42,$41,$44,$20,$53,$55 ; N BAD SU
db $42,$53,$43,$52,$49,$50,$D4,$52 ; BSCRIP R
db $45,$44,$49,$4D,$27,$44,$20,$41 ; EDIM'D A
db $52,$52,$41,$D9,$44,$49,$56,$49 ; RRA DIVI
db $53,$49,$4F,$4E,$20,$42,$59,$20 ; SION BY
db $5A,$45,$52,$CF,$49,$4C,$4C,$45 ; ZER ILLE
db $47,$41,$4C,$20,$44,$49,$52,$45 ; GAL DIRE
db $43,$D4,$54,$59,$50,$45,$20,$4D ; C TYPE M
db $49,$53,$4D,$41,$54,$43,$C8,$53 ; ISMATC S
db $54,$52,$49,$4E,$47,$20,$54,$4F ; TRING TO
db $4F,$20,$4C,$4F,$4E,$C7,$46,$49 ; O LON FI
db $4C,$45,$20,$44,$41,$54,$C1,$46 ; LE DAT F
db $4F,$52,$4D,$55,$4C,$41,$20,$54 ; ORMULA T
db $4F,$4F,$20,$43,$4F,$4D,$50,$4C ; OO COMPL
db $45,$D8,$43,$41,$4E,$27,$54,$20 ; E CAN'T
db $43,$4F,$4E,$54,$49,$4E,$55,$C5 ; CONTINU
db $55,$4E,$44,$45,$46,$27,$44,$20 ; UNDEF'D
db $46,$55,$4E,$43,$54,$49,$4F,$CE ; FUNCTIO
db $56,$45,$52,$49,$46,$D9,$4C,$4F ; VERIF LO
db $41,$C4,$42,$52,$45,$41,$4B,$00 ; A BREAK@
db $A0,$43,$41,$4E,$27,$54,$20,$52 ; CAN'T R
db $45,$53,$55,$4D,$C5,$4C,$4F,$4F ; ESUM LOO
db $50,$20,$4E,$4F,$54,$20,$46,$4F ; P NOT FO
db $55,$4E,$C4,$4C,$4F,$4F,$50,$20 ; UN LOOP
db $57,$49,$54,$48,$4F,$55,$54,$20 ; WITHOUT
db $44,$CF,$44,$49,$52,$45,$43,$54 ; D DIRECT
db $20,$4D,$4F,$44,$45,$20,$4F,$4E ; MODE ON
db $4C,$D9,$4E,$4F,$20,$47,$52,$41 ; L NO GRA
db $50,$48,$49,$43,$53,$20,$41,$52 ; PHICS AR
db $45,$C1,$42,$41,$44,$20,$44,$49 ; E BAD DI
db $53,$CB
; ********************************************
;
; Find start of error message #??
; Enter: A = Message number.
;
; Exit: $24/$25 = Start address of message
; Address
;
; X = -1
; Y = 0
;
; ********************************************
L8653 TAX ; store error message number in X
LDY #$00 ; We don't actually USE y, just 0 to access
LDA #$71 ; data. set START address of error message
STA AddressLo
LDA #$84
STA AddressHi
L865E DEX ; -1 to start with....
BMI L867D ; Found message?
L8661 LDA (Address),y ; Loop through message text
PHA ; looking for an end of message marker
INC AddressLo ; (BIT 7 being set). and inc message
BNE L866A ; start address ($24/$25) till we find it.
INC AddressHi
L866A PLA ; now, check last character for end marker
BPL L8661 ; if <128 then NOT end of message...loop
BMI L865E ; JUMP back to message counter...
L866F JSR PrintMessage ; This is in fact called from below....
db $0d,$0a,$52,$45,$41,$44,$59,$2e ; READY.
db $0d,$0a,$00
L867D RTS ; FOUND message!
;
; No error...
;
L867E LDX #$80 ; NO error.. just returns.
db $2c ; make "BIT $10A2" opcode instead of "LDX #$10"
L8681 LDX #$10 ; Error message 16 - 'out of memory'
; ********************************************
;
; Error routine. "X" holds error message number.
;
; ********************************************
L8683 JMP ($0300) ; Jump through Error message vector
TXA ; get error number into
BMI L8703 ; >128? if so print message
STX $04EF ; Store LAST error number (TRAP and error logs)
BIT Running ; running a BASIC program? ($80=YES) ($81)
BPL L86C5 ; if not, then immediate mode error.
LDY #$01
L8692 LDA $0039,y ; Store CURRENT basic line number
STA $04F0,y
LDA $025B,y ; Store BASIC/DOS interface data.
STA $04F5,y
DEY
BPL L8692 ; copy...
CPX #$11 ; error $11? 'undef'd statement'?
BEQ L86C5 ; if it is... then treat like basic NOT running.
LDY $04F3 ; get line number HI?
INY ; if $ff then no basic running.
BEQ L86C5
DEY
STY $15 ; store in INT high byte
STY $04F4
LDY $04F2 ; get line number LOW
STY $14 ; store in IN low byte for "error in line ????.."
LDX #$FF ; flag as now NOT running
STX $04F3
LDX $04F7 ; get stack pointer for error trapping.
TXS ; and SET...
JSR L8D69 ; perform GOTO
JMP L8BDC ; perform RUN
L86C5 DEX
TXA
PHA
LDA #$00
STA $83
JSR LC7C9
PLA
JSR L8653 ; Find the START address of error message
JSR LFFCC
LDA #$00
STA $13
JSR L903E
JSR L90B0
LDY #$00
L86E2 LDA ($24),y
PHA
AND #$7F
JSR L90B2
INY
PLA
BPL L86E2
JSR L8AD8
JSR PrintMessage ; LFF4F
JSR $5245
HLT
LSE $0052
L86FB LDY $3A
INY
BEQ L8703
JSR LA453
L8703 JSR L866F ; Print message
;
; Ready for Basic
;
LDA #$80
JSR LFF90
LDA #$00 ; set NOT running a basic program
STA Running
L870F JMP ($0302)
LDX #$FF
STX $3A
JSR L885A
STX LastBasicLineNo
STY LastBasicLineNo+1
JSR $0473
TAX
L8721 BEQ L870F
BCC L872E
JSR L8953
JSR $0479
JMP L8BD9
L872E JSR L8E3E
JSR L8953
STY $0B
JSR L8A3D
BCC L8785
LDY #$01
JSR $04D1
STA $23
LDA $2D
STA $22
LDA $60
STA $25
DEY
JSR $04D1
CLC
SBC $5F
EOR #$FF
CLC
ADC $2D
STA $2D
STA $24
LDA $2E
ADC #$FF
STA $2E
SBC $60
TAX
SEC
LDA $5F
SBC $2D
TAY
BCS L876E
INX
DEC $25
L876E CLC
ADC $22
BCC L8776
DEC $23
CLC
L8776 JSR $04B0
STA ($24),y
INY
BNE L8776
INC $23
INC $25
DEX
BNE L8776
L8785 JSR L8A9A
JSR L8818
LDY #$00
JSR $04A5
BEQ L8721
CLC
LDA $2D
LDY $2E
STA $5A
STY $5B
ADC $0B
BCC L87A0
INY
L87A0 CLC
ADC #$04
BCC L87A6
INY
L87A6 STA $58
STY $59
JSR L88C0
LDY #$00
LDA #$01
STA ($5F),y
INY
STA ($5F),y
INY
LDA $14
STA ($5F),y
LDA $15
INY
STA ($5F),y
INY
TYA
CLC
ADC $5F
STA $5F
BCC L87CB
INC $60
L87CB LDA $31
LDY $32
STA $2D
STY $2E
LDY $0B
DEY
L87D6 JSR $04A5
STA ($5F),y
DEY
BPL L87D6
JSR L8818
JSR L8A93
LDA $73
ORA $74
BEQ L8815
LDA $14
CLC
ADC $73
STA $63
LDA $15
ADC $74
STA $62
LDX #$90
SEC
JSR LA2CE
JSR LA46F
LDX #$00
L8802 LDA $0101,x
BEQ L880D
STA $0527,x
INX
BNE L8802
L880D LDA #$1D
STA $0527,x
INX
STX $EF
L8815 JMP L870F
L8818 LDA $2B
LDY $2C
STA $22
STY $23
CLC
L8821 LDY #$00
JSR $04B0
BNE L882E
INY
JSR $04B0
BEQ L8859
L882E LDY #$04
L8830 INY
JSR $04B0
BNE L8830
INY
TYA
ADC $22
TAX
LDY #$00
STA ($22),y
TYA
ADC $23
INY
STA ($22),y
STX $22
STA $23
BCC L8821
L884B CLC
LDA $22
LDY $23
ADC #$02
BCC L8855
INY
L8855 STA $2D
STY $2E
L8859 RTS
L885A LDX #$00
L885C JSR LA791
CMP #$0D
BEQ L886E
STA $0200,x
INX
CPX #$59
BCC L885C
JMP LCC4C
L886E JMP L9031
L8871 JSR LA760
L8874 LDA $3D
CMP #$B0
BNE L8880
LDA $3E
CMP #$07
BEQ L88BD
L8880 LDY #$00
LDA $02
CMP #$81
BNE L88A3
CMP ($3D),y
BNE L88BF
LDY #$02
LDA $4A
CMP #$FF
BEQ L88BF
CMP ($3D),y
BNE L889F
DEY
LDA $49
CMP ($3D),y
BEQ L88BF
L889F LDX #$12
BNE L88B1
L88A3 LDA ($3D),y
CMP $02
BEQ L88BF
LDX #$12
CMP #$81
BEQ L88B1
LDX #$05
L88B1 TXA
CLC
ADC $3D
STA $3D
BCC L8874
INC $3E
BNE L8874
L88BD LDY #$01
L88BF RTS
L88C0 JSR L8923
STA $31
STY $32
SEC
LDA $5A
SBC $5F
STA $22
TAY
LDA $5B
SBC $60
TAX
INX
TYA
BEQ L88FD
LDA $5A
SEC
SBC $22
STA $5A
BCS L88E4
DEC $5B
SEC
L88E4 LDA $58
SBC $22
STA $58
BCS L88F5
DEC $59
BCC L88F5
L88F0 JSR L8189
STA ($58),y
L88F5 DEY
BNE L88F0
JSR L8189
STA ($58),y
L88FD DEC $5B
DEC $59
DEX
BNE L88F5
RTS
;
; Check STACK depth
;
L8905 STY $07F4
SEC
LDA StackTop
SBC $07F4
STA StackTop
LDA StackTop+1
SBC #$00
STA StackTop+1
CMP #$06
BCC L8950
BNE L8922
LDA StackTop
CMP #$EC
BCC L8950
L8922 RTS
;
; Check memory space
;
L8923 CPY $34
BCC L894F
BNE L892D
CMP $33
BCC L894F
L892D PHA
LDX #$09
TYA
L8931 PHA
LDA $57,x
DEX
BPL L8931
JSR LA954
LDX #$F7
L893C PLA
STA $61,x
INX
BMI L893C
PLA
TAY
PLA
CPY $34
BCC L894F
BNE L8950
CMP $33
BCS L8950
L894F RTS
L8950 JMP L8681
;
; Crunch tokens
;
L8953 JMP (CrunchBasicTokenVec) ; Jump through crunch token vector ($0304)
LDA LastBasicLineNo
PHA
LDA LastBasicLineNo+1
PHA
L895C JSR $0479
JMP L8965
L8962 JSR $0473
L8965 BCC L8962
JMP (CrunchVec) ; Jump CRUNCH hook vector ($30c)
BCC L89D4
CMP #$00
BEQ L89C5
CMP #$3A
BEQ L8962
CMP #$3F
BNE L897C
LDA #$99
BNE L89AA
L897C CMP #$80
BCC L898B
CMP #$FF
BEQ L8962
LDY #$01
JSR L89EA
BEQ L895C
L898B CMP #$22
BNE L899C
L898F JSR $0473
CMP #$00
BEQ L89C5
CMP #$22
BEQ L8962
BNE L898F
L899C JSR L8A03
BCC L8962
CPY #$00
BEQ L89A8
JSR L89EA
L89A8 LDA $0B
L89AA LDY #$00
STA (LastBasicLineNo),y
CMP #$8F
BEQ L89BF
CMP #$83
BNE L8962
JSR $0473
JSR L8DB0
JMP L895C
L89BF JSR $0473
JSR L8E0B
L89C5 LDX LastBasicLineNo
PLA
STA LastBasicLineNo+1
PLA
STA LastBasicLineNo
SEC
TXA
SBC LastBasicLineNo
TAY
INY
RTS
L89D4 PHA
DEY
DEY
JSR L89EA
LDY #$00
LDA #$FE
STA (LastBasicLineNo),y
INY
PLA
STA (LastBasicLineNo),y
JSR $0473
JMP L8962
L89EA CLC
TYA
ADC $3B
STA $22
LDA $3C
ADC #$00
STA $23
LDY #$00
L89F8 JSR $04B0
STA ($3B),y
INY
CMP #$00
BNE L89F8
RTS
L8A03 LDA #$81
LDY #$8E
STA $23
STY $22
LDY #$00
STY $0B
DEY
L8A10 INY
L8A11 JSR $04A5
SEC
SBC ($22),y
BEQ L8A10
CMP #$80
BEQ L8A38
L8A1D LDA ($22),y
BMI L8A24
INY
BNE L8A1D
L8A24 INY
INC $0B
CLC
TYA
ADC $22
STA $22
BCC L8A31
INC $23
L8A31 CLC
LDY #$00
LDA ($22),y
BNE L8A11
L8A38 ORA $0B
STA $0B
RTS
L8A3D LDA $2B
LDX $2C
L8A41 LDY #$01
STA $5F
STX $60
JSR $04D1
BEQ L8A77
INY
INY
JSR $04D1
STA $78
LDA $15
CMP $78
BCC L8A78
BEQ L8A5E
DEY
BNE L8A6C
L8A5E DEY
JSR $04D1
STA $78
LDA $14
CMP $78
BCC L8A78
BEQ L8A78
L8A6C DEY
JSR $04D1
TAX
DEY
JSR $04D1
BCS L8A41
L8A77 CLC
L8A78 RTS
BNE L8A78
LDA #$00
TAY
STA ($2B),y
INY
STA ($2B),y
STA $02EB
LDA $2B
CLC
ADC #$02
STA $2D
LDA $2C
ADC #$00
STA $2E
L8A93 JSR L8AF1
LDA #$00
;
; Perform [CLR]
;
BNE L8AEC
L8A9A JSR LFFE7
LDY #$00
STY $79
DEY
STY $04F3
STY $04F0
STY $04F1
STY $04EF
LDA $37
LDY $38
STA $33
STY $34
LDA #$B0
LDY #$07
STA $7C
STY $7D
LDA $2D
LDY $2E
STA $2F
STY $30
STA $31
STY $32
LDX #$03
L8ACC LDA $8AED,x
STA $04E7,x
DEX
BPL L8ACC
L8AD5 JSR L8CB1
L8AD8 LDX #$19
STX $16
PLA
TAY
PLA
LDX #$FA
TXS
PHA
TYA
PHA
LDA #$00
STA $025C
STA $10
L8AEC RTS
;
; Back up text pointer
;
JSR $2E2C
BIT $18
LDA $2B
ADC #$FF
STA $3B
LDA $2C
ADC #$FF
STA $3C
RTS
JSR LAECA
L8B02 LDY #$01
JSR $04D1
BNE L8B0F
DEY
JSR $04D1
BEQ L8B3D
L8B0F JSR L8CC0
JSR L903E
LDY #$02
JSR $04D1
TAX
INY
JSR $04D1
CMP $15
BNE L8B27
CPX $14
BEQ L8B29
L8B27 BCS L8B3D
L8B29 JSR L8B40
LDY #$00
JSR $04D1
TAX
INY
JSR $04D1
STX $5F
STA $60
JMP L8B02
L8B3D JMP L903E
L8B40 LDY #$03
STY $49
STY $0F
JSR LA45F
LDA #$20
L8B4B LDY $49
AND #$7F
L8B4F JSR L90B2
CMP #$22
BNE L8B5C
LDA $0F
EOR #$FF
STA $0F
L8B5C INY
BEQ L8B3D
BIT $53
BPL L8B66
JSR LB70C
L8B66 JSR $04D1
BEQ L8BBB
JMP ($0306)
BPL L8B4F
CMP #$FF
BEQ L8B4F
BIT $0F
BMI L8B4F
CMP #$FE
BNE L8B93
INY
JSR $04D1
BEQ L8B8E
STY $49
SEC
JMP ($030E)
BCS L8B4F
LDY #$00
BEQ L8BB2
L8B8E DEY
LDA #$FE
BNE L8B4F
L8B93 TAX
STY $49
LDY #$81
STY $23
LDY #$8E
STY $22
LDY #$00
L8BA0 DEX
BPL L8BB2
L8BA3 LDA ($22),y
PHA
INC $22
BNE L8BAC
INC $23
L8BAC PLA
BPL L8BA3
BMI L8BA0
L8BB1 INY
L8BB2 LDA ($22),y
BMI L8B4B
JSR L90B2
BNE L8BB1
L8BBB RTS
BNE L8BC4
JSR L8D20
JMP L8A93
L8BC4 JSR L8A9A
JSR $0479
JSR L8D4D
JSR L8D20
JMP L8BDC
L8BD3 JMP ($0308)
JSR $0473
L8BD9 JSR L8C25
L8BDC JSR L8CC0
BIT Running ; BASIC program running?
BPL L8BEA
JSR L8C1A
TSX
STX $04F7
L8BEA LDY #$00
JSR $04A5
BEQ L8BF4
JMP L8C93
L8BF4 BIT Running ; BASIC program running?
BPL L8C17
LDY #$02
JSR $04A5
BEQ L8C17
INY
JSR $04A5
STA $39
INY
JSR $04A5
STA $3A
TYA
CLC
ADC $3B
STA $3B
BCC L8BD3
INC $3C
BNE L8BD3
L8C17 JMP L867E
L8C1A LDA $3B
LDY $3C
STA $025B
STY $025C
L8C24 RTS
L8C25 BEQ L8C24
BIT $02EB
BPL L8C3F
BIT Running ; BASIC program running?
BPL L8C3F
PHA
LDA #$5B
JSR L90B2
JSR LA45B
LDA #$5D
JSR L90B2
PLA
L8C3F CMP #$FE
BEQ L8C82
CMP #$CB
BEQ L8C74
CMP #$CA
BEQ L8C6B
CMP #$FB
BCS L8C8D
CMP #$A3
BCC L8C59
CMP #$D5
BCC L8C8D
SBC #$32
L8C59 SEC
SBC #$80
BCC L8C90
ASL
TAY
LDA $8384,y
PHA
LDA $8383,y
PHA
JMP $0473
L8C6B LDA #$B6
PHA
LDA #$5A
PHA
L8C71 JMP $0473
L8C74 JSR $0473
CMP #$A4
BNE L8C8D
JSR $0473
JMP L8D4D
BRK
L8C82 JSR $0473
BEQ L8C8D
SEC
JMP ($0310)
BCC L8C71
L8C8D JMP L94A1
L8C90 JMP L8E7C
L8C93 CMP #$3A
BNE L8C8D
JMP L8BD3
BEQ L8CB1
JSR L9DE1
STY $14
STA $15
JSR L8A3D
BCS L8CAB
JMP L8D8F
L8CAB LDA $5F
LDY $60
BCS L8CB6
L8CB1 SEC
LDA $2B
LDY $2C
L8CB6 SBC #$01
BCS L8CBB
DEY
L8CBB STA $41
STY $42
L8CBF RTS
;
; Break
;
L8CC0 JSR LFFE1
BNE L8CBF
PHP
LDY $04F3
INY
BEQ L8CD7
L8CCC JSR LFFE1
BEQ L8CCC
PLP
LDX #$1E
JMP L8683 ; call error routine.
L8CD7 PLP
;
; Perform [STOP]
;
BCS L8CDB
;
; Perform [END]
;
LEND CLC
L8CDB BNE L8CBF
BIT Running ; BASIC program running?
BPL L8CEE
JSR L8C1A
LDA $39
LDY $3A
STA $0259
STY $025A
L8CEE PLA
PLA
BCC L8D00
JSR PrintMessage
ORA $420A
HLT
EOR $41
ALR #$00
JMP L86FB
L8D00 JMP L867E
;
; Perform [CONT]
;
LCONT BNE L8CBF
LDX #$1A
LDY $025C
BNE L8D0F
JMP L8683 ; call error routine.
L8D0F LDA $025B
STA $3B
STY $3C
LDA $0259
LDY $025A
STA $39
STY $3A
L8D20 LDA #$80 ; Set now running program
STA Running
ASL
STA $73
STA $74
JMP LFF90
;
; Perform [GOSUB]
;
LGOSUB LDY #$05
JSR L8905
DEY
LDA $3C
STA (StackTop),y
DEY
LDA $3B
STA (StackTop),y
DEY
LDA $3A
STA (StackTop),y
DEY
LDA $39
STA (StackTop),y
DEY
LDA #$8D
STA (StackTop),y
JSR $0479
;
; Perform [GOTO]
;
LGOTO
L8D4D JSR L8E3E
JSR L8DC1
SEC
LDA $39
SBC $14
LDA $3A
SBC $15
BCS L8D69
TYA
SEC
ADC $3B
LDX $3C
BCC L8D6D
INX
BCS L8D6D
L8D69 LDA $2B
LDX $2C
L8D6D JSR L8A41
BCC L8D8F
LDA $5F
SBC #$01
STA $3B
LDA $60
SBC #$00
STA $3C
BIT Running ; BASIC program running?
BPL L8D20
RTS
;
; Perform [RETURN]
;
LRETURN LDA #$8D
STA $02
JSR L8871
BEQ L8D94
LDX #$0C
BIT $11A2
JMP L8683 ; call error routine.
L8D94 JSR LA769
LDY #$05
JSR LA772
DEY
LDA ($3D),y
STA $3C
DEY
LDA ($3D),y
STA $3B
DEY
LDA ($3D),y
JSR LCD7F
LDA ($3D),y
STA $39
;
; Perform [DATA]
;
LDATA
L8DB0 JSR L8DBE
L8DB3 TYA
CLC
ADC $3B
STA $3B
BCC L8DBD
INC $3C
L8DBD RTS
;
; Scan for next statement
;
L8DBE LDX #$3A
BIT $00A2
STX $07
LDY #$00
STY $08
L8DC9 LDA $08
LDX $07
STA $07
STX $08
L8DD1 JSR $04A5
BEQ L8DBD
CMP $08
BEQ L8DBD
INY
CMP #$22
BNE L8DD1
BEQ L8DC9
JSR L932C
JSR $0479
CMP #$89
BEQ L8DF0
LDA #$A7
JSR L9493
L8DF0 LDA $61
BNE L8E10
L8DF4 JSR L8DB0
LDY #$00
JSR $04A5
BEQ L8E0B
JSR $0473
CMP #$D5
BNE L8DF4
JSR $0473
JMP L8E10
L8E0B JSR L8DC1
BEQ L8DB3
L8E10 JSR $0479
BCS L8E18
JMP L8D4D
L8E18 JMP L8C25
JSR L9D84
PHA
CMP #$8D
BEQ L8E2A
L8E23 CMP #$89
BEQ L8E2A
JMP L94A1
L8E2A DEC $65
BNE L8E32
PLA
JMP L8C3F
L8E32 JSR $0473
JSR L8E3E
CMP #$2C
BEQ L8E2A
PLA
L8E3D RTS
L8E3E LDX #$00
STX $08
STX $14
STX $15
L8E46 BCS L8E3D
INC $08
SBC #$2F
STA $07
LDA $15
STA $22
CMP #$19
BCS L8E23
LDA $14
ASL
ROL $22
ASL
ROL $22
ADC $14
STA $14
LDA $22
ADC $15
STA $15
ASL $14
ROL $15
LDA $14
ADC $07
STA $14
BCC L8E76
INC $15
L8E76 JSR $0473
JMP L8E46
L8E7C JSR L96A5
STA $49
STY $4A
LDA #$B2
JSR L9493
LDA $0E
PHA
LDA $0D
PHA
JSR L932C
PLA
ROL
JSR L931B
BNE L8EB0
PLA
L8E99 BPL L8EAD
JSR LA2A0
JSR L9886
LDY #$00
LDA $64
STA ($49),y
INY
LDA $65
STA ($49),y
RTS
L8EAD JMP LA255
L8EB0 PLA
L8EB1 LDY $4A
CPY #$04
BNE L8F29
JSR L9C4E
CMP #$06
BNE L8EFC
LDY #$00
STY $61
STY $66
L8EC4 STY $71
JSR L8EF4
JSR LA162
INC $71
LDY $71
JSR L8EF4
JSR LA291
TAX
BEQ L8EDE
INX
TXA
JSR LA16D
L8EDE LDY $71
INY
CPY #$06
BNE L8EC4
JSR LA162
JSR LA327
LDX $64
LDY $63
LDA $65
JMP LFFDB
L8EF4 JSR $04B0
JSR $0485
BCC L8EFF
L8EFC JMP L991C ; Illegal Quantity error
L8EFF SBC #$2F
JMP LA40A
L8F04 PLA
INY
L8F06 CMP $34
BCC L8F22
BNE L8F14
DEY
JSR $04DC
CMP $33
BCC L8F22
L8F14 LDY $65
CPY $2E
BCC L8F22
BNE L8F40
LDA $64
CMP $2D
BCS L8F40
L8F22 LDA $64
LDY $65
JMP L8F5E
L8F29 LDY #$02
JSR $04DC
CMP $7B
BNE L8F06
PHA
DEY
JSR $04DC
CMP $7A
BNE L8F04
LDA $79
BEQ L8F04
PLA
L8F40 LDY #$00
JSR $04DC
JSR L9B54
LDA $50
LDY $51
STA $6F
STY $70
JSR L9C1B
LDA $6F
LDY $70
JSR L9CAA
LDA #$61
LDY #$00
L8F5E STA $50
STY $51
STA $22
STY $23
JSR L9CAA
JSR L8F9C
BCC L8F79
LDY #$00
LDA $49
STA ($22),y
INY
LDA $4A
STA ($22),y
L8F79 LDA $49
STA $22
LDA $4A
STA $23
JSR L8F9C
BCC L8F8F
DEY
LDA #$FF
STA ($22),y
DEY
TXA
STA ($22),y
L8F8F LDY #$02
L8F91 LDA #$50
JSR $0494
STA ($49),y
DEY
BPL L8F91
RTS
L8F9C LDY #$00
JSR $04B0
PHA
BEQ L8FDD
INY
JSR $04B0
TAX
INY
JSR $04B0
CMP $38
BCC L8FB7
BNE L8FDD
CPX $37
BCS L8FDD
L8FB7 JSR $04B0
CMP $34
BCC L8FDD
BNE L8FC4
CPX $33
BCC L8FDD
L8FC4 CMP $7B
BNE L8FCC
CPX $7A
BEQ L8FDD
L8FCC STX $22
STA $23
PLA
TAX
CLC
ADC $22
STA $22
BCC L8FDB
INC $23
L8FDB SEC
RTS
L8FDD PLA
CLC
RTS
; ********************************************
;
; perform "Print#" command
;
; ********************************************
PerformPrintHash:
JSR L8FE6
JMP L90FE
; ********************************************
;
; Perform "CMD" command
;
; ********************************************
PerformCMD:
L8FE6 JSR L9D84 ; get BYTE paramater from basic stream
BEQ L8FF0 ; was CHRGOT answer a ":"? (or end of command)
LDA #$2C ; else Check for comma
JSR L9493 ; if not found then "?SYNTAX ERROR"
L8FF0 PHP ; remember CHRGET answer
STX $13 ; get current I/O prompt (1 = prompt off)
JSR LA797 ; perform actual "CMD" via kernal
PLP ; restore CHRGET returns...
JMP L9000 ; Perform "PRINT" - prints to channel
; ********************************************
;
; Perform "PRINT" command
;
; ********************************************
L8FFA JSR L908B ; Print from (y.a)
L8FFD JSR $0479 ; call CHRGET/CHRGOT
PerformPrint:
L9000 BEQ L903E
CMP #$FB
BNE L9009
JMP LAEF7
L9009 BEQ L904E
CMP #$A3
BEQ L905F
CMP #$A6
CLC
BEQ L905F
CMP #$2C
BEQ L904F
CMP #$3B
BEQ L907A
JSR L932C
BIT $0D
BMI L8FFA
JSR LA46F
JSR L9B74
JSR L908B
JSR L90A6
BNE L8FFD
L9031 LDA #$00
STA $0200,x
LDX #$FF
LDY #$01
LDA $13
BNE L904E
L903E LDA #$0D
JSR L90B2
BIT $13
BPL L904C
LDA #$0A
JSR L90B2
L904C EOR #$FF
L904E RTS
L904F SEC
JSR LFFF0
TYA
SEC
L9055 SBC #$0A
BCS L9055
EOR #$FF
ADC #$01
BNE L9075
L905F PHP
SEC
JSR LFFF0
STY $09
JSR L9D81
CMP #$29
BNE L9080
PLP
BCC L9076
TXA
SBC $09
BCC L907A
L9075 TAX
L9076 INX
L9077 DEX
BNE L9083
L907A JSR $0473
JMP L9009
L9080 JMP L94A1
L9083 JSR L90A6
BNE L9077
L9088 JSR L9B74
L908B JSR L9C4E
TAX
LDY #$00
INX
L9092 DEX
BEQ L904E
JSR $04B0
JSR L90B2
INY
CMP #$0D
BNE L9092
JSR L904C
JMP L9092
L90A6 LDA $13
BEQ L90AD
L90AA LDA #$20
BIT $1DA9
BIT $3FA9
L90B2 JSR LA78B
AND #$FF
RTS
JSR L9A86
STA $80
CMP #$23
BEQ L90CB
CMP #$F9
BNE L90DB
JSR $0473
JMP L90DB
L90CB JSR $0473
JSR L9D84
LDA #$2C
JSR L9493
STX $13
JSR LA7A6
L90DB LDX #$01
LDY #$02
LDA #$00
STA $0201
LDA #$40
JSR L9158
LDX $13
BNE L9100
RTS
JSR L9D84
LDA #$2C
JSR L9493
STX $13
JSR LA7A6
JSR L9117
L90FE LDA $13
L9100 JSR LFFCC
LDX #$00
STX $13
RTS
CMP #$22
BNE L9117
JSR L944E
LDA #$3B
JSR L9493
JSR L908B
L9117 JSR L9A86
LDA #$2C
STA $01FF
L911F JSR L9142
LDA $13
BEQ L9133
JSR LFFB7
AND #$02
BEQ L9133
JSR L90FE
JMP L8DB0
L9133 LDA $0200
BNE L9156
LDA $13
BNE L911F
JSR L8DBE
JMP L8DB3
L9142 LDA $13
BNE L914C
JSR L90B0
JSR L90AA
L914C JMP L885A
LDX $41
LDY $42
LDA #$98
BIT $00A9
L9158 STA $11
STX $43
STY $44
L915E JSR L96A5
STA $49
STY $4A
LDX #$01
L9167 LDA $3B,x
STA $4B,x
LDA $43,x
STA $3B,x
DEX
BPL L9167
JSR $0479
BNE L91A8
BIT $11
BVC L9195
LDA $80
CMP #$F9
BNE L9189
L9181 JSR LA7AF
TAX
BEQ L9181
BNE L918C
L9189 JSR LA7AF
L918C STA $0200
LDX #$FF
LDY #$01
BNE L91A4
L9195 BPL L919A
JMP L9240
L919A LDA $13
BNE L91A1
JSR L90B0
L91A1 JSR L9142
L91A4 STX $3B
STY $3C
L91A8 JSR $0473
BIT $0D
BPL L91E0
BIT $11
BVC L91BC
INX
STX $3B
LDA #$00
STA $07
BEQ L91C8
L91BC STA $07
CMP #$22
BEQ L91C9
LDA #$3A
STA $07
LDA #$2C
L91C8 CLC
L91C9 STA $08
LDA $3B
LDY $3C
ADC #$00
BCC L91D4
INY
L91D4 JSR L9B7A
JSR L9DC6
JSR L8EB1
JMP L91E8
L91E0 JSR LA37F
LDA $0E
JSR L8E99
L91E8 JSR $0479
BEQ L9228
CMP #$2C
BEQ L9228
LDA $11
BEQ L91FF
BMI L91FB
LDX $13
BNE L9203
L91FB LDX #$16
BNE L9205
L91FF LDA $13
BEQ L9208
L9203 LDX #$18
L9205 JMP L8683 ; call error routine.
L9208 JSR PrintMessage
RLA $4552,x
SKB $4F
JSR $5246
LSE $204D
LSE ($54),y
EOR ($52,x)
SKB $0D
BRK
LDA $025B
LDY $025C
STA $3B
STY $3C
RTS
L9228 LDX #$01
L922A LDA $3B,x
STA $43,x
LDA $4B,x
STA $3B,x
DEX
BPL L922A
JSR $0479
BEQ L926A
JSR L9491
JMP L915E
L9240 JSR L8DBE
INY
TAX
BNE L925C
LDX #$0D
INY
JSR $04A5
BEQ L92BB
INY
JSR $04A5
STA $3F
INY
JSR $04A5
INY
STA $40
L925C JSR L8DB3
JSR $0479
TAX
CPX #$83
BNE L9240
JMP L91A8
L926A LDA $43
LDY $44
LDX $11
BPL L9275
JMP L8CBB
L9275 LDY #$00
JSR L8155
BEQ L9293
LDA $13
BNE L9293
JSR PrintMessage
RLA $5845,x
SKB $52
EOR ($20,x)
EOR #$47
LSR $524F
EOR $44
ORA $6000
BNE L92A9
LDY #$FF
BNE L92AE
L929A LDY #$12
JSR LA772
JSR $0479
CMP #$2C
BNE L9313
JSR $0473
L92A9 JSR L96A5
STA $49
L92AE STY $4A
LDY #$81
STY $02
JSR L8871
BEQ L92BE
LDX #$0A
L92BB JMP L8683 ; call error routine.
L92BE JSR LA769
LDA $3D
CLC
ADC #$03
LDY $3E
BCC L92CB
INY
L92CB JSR LA21F
LDY #$08
LDA ($3D),y
STA $66
LDY #$01
LDA ($3D),y
PHA
TAX
INY
LDA ($3D),y
PHA
TAY
TXA
JSR L9E9B
PLA
TAY
PLA
TAX
JSR LA259
LDA $3D
CLC
ADC #$09
LDY $3E
BCC L92F4
INY
L92F4 JSR LA2E0
LDY #$08
SEC
SBC ($3D),y
BEQ L929A
LDY #$11
LDA ($3D),y
STA $3B
DEY
LDA ($3D),y
STA $3C
DEY
LDA ($3D),y
STA $3A
DEY
LDA ($3D),y
STA $39
L9313 RTS
; *******************************************************
;
; Typechecking - numeric of string?
;
; *******************************************************
L9314 JSR EvaluateExpression ; Evaluate expression(even if its a single number)
L9317 CLC ; force branch
BCC L931B
L931A SEC
L931B BIT VARflag ; check variable flag ($00 = numeric, $ff = string)
; (VARflag = $0d)
BMI L9322 ; if string then
BCS L9324 ; display a type mismatch error on carry set
L9321 RTS
L9322 BCS L9321
L9324 LDX #$16 ; display "?TYPE MISMATCH ERROR"
db $2c ; makes "LDX #$19" into "BIT $19A2"
L9327 LDX #$19 ; displays "?FORMULA TOO COMPLEX ERROR"
JMP L8683 ; call error routine.
; *******************************************************
;
; perform expresion evaluation on basic statement
;
; *******************************************************
EvaluateExpression
L932C LDX $3B
BNE L9332
DEC $3C
L9332 DEC $3B
LDX #$00
BIT $48
TXA
PHA
TSX
CPX #$28
BCC L9327 ; display "?FORMULA TOO COMPLEX ERROR"
JSR L9414
LDA #$00
STA $4D
L9346 JSR $0479
L9349 SEC
SBC #$B1
BCC L9365
CMP #$03
BCS L9365
CMP #$01
ROL
EOR #$01
EOR $4D
CMP $4D
BCC L93BE
STA $4D
JSR $0473
JMP L9349
L9365 LDX $4D
BNE L9395
BCS L93E9
ADC #$07
BCC L93E9
ADC $0D
BNE L9376
JMP L9BDA
L9376 ADC #$FF
STA $22
ASL
ADC $22
TAY
L937E PLA
CMP $8453,y
BCS L93EE
JSR L9317
L9387 PHA
L9388 JSR L93AE
PLA
LDY $4B
BPL L93A7
TAX
BEQ L93EC
BNE L93F7
L9395 LSR $0D
TXA
ROL
LDX $3B
BNE L939F
DEC $3C
L939F DEC $3B
LDY #$1B
STA $4D
BNE L937E
L93A7 CMP $8453,y
BCS L93F7
BCC L9387
L93AE LDA $8455,y
PHA
LDA $8454,y
PHA
JSR L93C1
LDA $4D
JMP L9337
L93BE JMP L94A1
L93C1 LDA $66
LDX $8453,y
TAY
CLC
PLA
ADC #$01
STA $22
PLA
ADC #$00
STA $23
TYA
PHA
JSR LA2A0
LDA $65
PHA
LDA $64
PHA
LDA $63
PHA
LDA $62
PHA
LDA $61
PHA
JMP ($0022)
L93E9 LDY #$FF
PLA
L93EC BEQ L9411
L93EE CMP #$64
BEQ L93F5
JSR L9317
L93F5 STY $4B
L93F7 PLA
LSR
STA $12
PLA
STA $69
PLA
STA $6A
PLA
STA $6B
PLA
STA $6C
PLA
STA $6D
PLA
STA $6E
EOR $66
STA $6F
L9411 LDA $61
RTS
L9414 JMP ($030A)
LDA #$00
STA $0D
L941B JSR $0473
BCS L9423
L9420 JMP LA37F
L9423 JSR L973A
BCC L942B
JMP L94AD
L942B CMP #$FF
BNE L943E
LDA #$39
LDY #$94
JSR LA221
JMP $0473
SKB $49
ASO $A1DA
L943E CMP #$2E
BEQ L9420
CMP #$AB
BEQ L94A6
CMP #$AA
BEQ L941B
CMP #$22
BNE L945D
L944E LDA $3B
LDY $3C
ADC #$00
BCC L9457
INY
L9457 JSR L9B74
JMP L9DC6
L945D CMP #$A8
BNE L9477
LDY #$18
BNE L94A8
JSR L9886
LDA $65
EOR #$FF
TAY
LDA $64
EOR #$FF
; Float-Fixed
L9471 JSR L9A92 ; Set NUMERIC flag, and clear mantissa.
JMP LA2C9 ; do Fixed-Float
L9477 CMP #$A5
BNE L947E
JMP L9ADE
L947E CMP #$B4
BCC L9485
JMP L9599
L9485 JSR L948E
JSR L932C
; *******************************************************
;
; Check for "(" or ")" or "," - if not found display a
; "?SYNTAX ERROR"
;
; *******************************************************
L948B LDA #$29 ; Check for ")"
db $2c ; mask "LDA #$28" with "BIT $28A9"
L948E LDA #$28 ; check for "("
db $2c ; mask "LDA #$28" with "BIT $28A9"
L9491 LDA #$2C ; check for ","
; *******************************************************
;
; Check for character in basic stream
; IN: A = char to check for
; OUT: If not found, display a syntax error
;
; *******************************************************
L9493 LDY #$00
STA $78
JSR $04A5 ; get current byte from basic
CMP $78 ; compare with selected character
BNE L94A1 ; if NOT the same, exit with "?SYNTAX ERROR"
JMP $0473 ; move onto NEXT character
L94A1 LDX #$0B ; display a "?SYNTAX ERROR"
JMP L8683 ; call error routine.
L94A6 LDY #$15
L94A8 PLA
PLA
JMP L9388
L94AD JSR L96A5 ; Search Variable
STA $64
STY $65
LDX $45
LDY $46
LDA $0D
BEQ L9501
LDA #$00
STA $70
CPX #$54 ; 'T'
BNE L94E8
CPY #$C9 ; 'I' (string) -> TI$
BNE L953E
LDA $64
CMP #$A2
BNE L953E
LDA $65
CMP #$04
BNE L953E
JSR L9531
STY $5E
DEY
STY $71
LDY #$06
STY $5D
LDY #$24
JSR LA4FA
JMP L9B70
L94E8 CPX #$44 ; 'D'
BNE L953E
CPY #$D3 ; 'S' (string) -> DS$
BNE L953E
JSR L94FA
LDA $7A
LDY $7B
JMP L9B74
L94FA LDA $79
BNE L953E
JMP LCCCF ; read DS$
L9501 BIT $0E
BPL L9514
LDY #$00
JSR $04DC
TAX
INY
JSR $04DC
TAY
TXA
JMP L9471
L9514 LDA $65
CMP #$04
BNE L9592
LDA $64
CMP #$A2
BNE L9592
CPX #$54 ; 'T'
BNE L953F
CPY #$49 ; 'I' (num)
BNE L9592
JSR L9531
TYA
LDX #$A0
JMP LA2D4
L9531 JSR LFFDE
STX $64
STY $63
STA $65
LDY #$00
STY $62
L953E RTS
L953F CPX #$53
BNE L954D
CPY #$54
BNE L9592
JSR LFFB7
JMP LA2C1
L954D CPX #$44
BNE L9577
CPY #$53
BNE L9592
JSR L94FA
LDY #$00
LDA #$7A
JSR $0494
AND #$0F
ASL
STA $0F
ASL
ASL
ADC $0F
STA $0F
INY
LDA #$7A
JSR $0494
AND #$0F
ADC $0F
JMP LA2C1
L9577 CPX #$45
BNE L9592
CPY #$52
BEQ L958C
CPY #$4C
BNE L9592
LDA $04F1
LDY $04F0
JMP L9A76
L958C LDA $04EF
JMP LA2C1
L9592 LDA $64
LDY $65
JMP LA21F
L9599 CMP #$D5
BCS L95F5
CMP #$CB
BCC L95A3
SBC #$01
L95A3 PHA
TAX
JSR $0473
CPX #$D3
BEQ L95B4
CPX #$CB
BCS L95D9
CPX #$C8
BCC L95D9
L95B4 JSR L948E
JSR L932C
JSR L9491
JSR L931A
PLA
CMP #$D3
BEQ L95F2
TAX
LDA $65
PHA
LDA $64
PHA
TXA
PHA
JSR L9D84
PLA
TAY
TXA
PHA
TYA
JMP L95DD
L95D9 JSR L9485
PLA
L95DD SEC
SBC #$B4
ASL
TAY
LDA $8416,y
STA $56
LDA $8415,y
STA $55
JSR $0054
JMP L9317
L95F2 JMP LB386
L95F5 JMP L94A1
LDY #$FF
BIT $00A0
STY $0B
JSR L9886
LDA $64
EOR $0B
STA $07
LDA $65
EOR $0B
STA $08
JSR LA281
JSR L9886
LDA $65
EOR $0B
AND $08
EOR $0B
TAY
LDA $64
EOR $0B
AND $07
EOR $0B
JMP L9471
JSR L931B
BCS L9640
LDA $6E
ORA #$7F
AND $6A
STA $6A
LDA #$69
LDY #$00
JSR LA2E0
TAX
JMP L9673
L9640 LDA #$00
STA $0D
DEC $4D
JSR L9C4E
STA $61
STX $62
STY $63
LDA $6C
LDY $6D
JSR L9C52
STX $6C
STY $6D
TAX
SEC
SBC $61
BEQ L9668
LDA #$01
BCC L9668
LDX $61
LDA #$FF
L9668 STA $66
LDY #$FF
INX
L966D INY
DEX
BNE L9678
LDX $66
L9673 BMI L968C
CLC
BCC L968C
L9678 JSR L8185
PHA
JSR L817D
STA $78
PLA
CMP $78
BEQ L966D
LDX #$FF
BCS L968C
LDX #$01
L968C INX
TXA
ROL
AND $12
BEQ L9695
LDA #$FF
L9695 JMP LA2C1
L9698 JSR L9491
TAX
JSR L96AA
JSR $0479
BNE L9698
RTS
L96A5 LDX #$00
JSR $0479
L96AA STX $0C
L96AC STA $45
JSR $0479
JSR L973A
BCS L96B9
L96B6 JMP L94A1
L96B9 LDX #$00
STX $0D
STX $0E
JSR $0473
BCC L96C9
JSR L973A
BCC L96D4
L96C9 TAX
L96CA JSR $0473
BCC L96CA
JSR L973A
BCS L96CA
L96D4 CMP #$24
BNE L96DE
LDA #$FF
STA $0D
BNE L96EE
L96DE CMP #$25
BNE L96F5
LDA $10
BNE L96B6
LDA #$80
STA $0E
ORA $45
STA $45
L96EE TXA
ORA #$80
TAX
JSR $0473
L96F5 STX $46
SEC
ORA $10
SBC #$28
BNE L9701
JMP L989B
L9701 LDY #$00
STY $10
LDA $2D
LDX $2E
L9709 STX $60
L970B STA $5F
CPX $30
BNE L9715
CMP $2F
BEQ L9744
L9715 JSR $04D1
STA $78
LDA $45
CMP $78
BNE L9730
INY
JSR $04D1
STA $78
LDA $46
CMP $78
BNE L972F
JMP L984C
L972F DEY
L9730 CLC
LDA $5F
ADC #$07
BCC L970B
INX
BNE L9709
L973A CMP #$41
BCC L9743
SBC #$5B
SEC
SBC #$A5
L9743 RTS
L9744 PLA
PHA
CMP #$AF
BNE L9774
L974A LDA #$A2
LDY #$04
RTS
L974F CPY #$C9
BEQ L974A
CPY #$49
BNE L9788
BEQ L9771
L9759 CPY #$D3
BEQ L9771
CPY #$53
BNE L9788
BEQ L9771
L9763 CPY #$54
BNE L9788
BEQ L9771
L9769 CPY #$52
BEQ L9771
CPY #$4C
BNE L9788
L9771 JMP L94A1
L9774 LDA $45
LDY $46
CMP #$54
BEQ L974F
CMP #$53
BEQ L9763
CMP #$45
BEQ L9769
CMP #$44
BEQ L9759
L9788 LDA $2F
LDY $30
STA $5F
STY $60
LDA $31
LDY $32
STA $5A
STY $5B
CLC
ADC #$07
BCC L979E
INY
L979E STA $58
STY $59
JSR L88C0
LDA $58
LDY $59
INY
STA $2F
STY $30
STA $58
STY $59
L97B2 LDA $58
LDX $59
L97B6 CPX $32
BNE L97C0
CMP $31
BNE L97C0
BEQ L9838
L97C0 STA $22
STX $23
LDY #$00
JSR $04B0
TAX
INY
JSR $04B0
PHP
INY
JSR $04B0
ADC $58
STA $58
INY
JSR $04B0
ADC $59
STA $59
PLP
BPL L97B2
TXA
BMI L97B2
INY
JSR $04B0
LDY #$00
ASL
ADC #$05
L97EE ADC $22
STA $22
BCC L97F6
INC $23
L97F6 LDX $23
CPX $59
BNE L9800
CMP $58
BEQ L97B6
L9800 LDY #$00
JSR $04B0
BEQ L982B
STA $78
INY
JSR $04B0
CLC
ADC $78
STA $5A
INY
JSR $04B0
ADC #$00
STA $5B
LDY #$00
JSR L8189
ADC #$07
STA ($5A),y
INY
JSR L8189
ADC #$00
STA ($5A),y
L982B LDA #$03
CLC
ADC $22
STA $22
BCC L97F6
INC $23
BNE L97F6
L9838 LDY #$00
LDA $45
STA ($5F),y
INY
LDA $46
STA ($5F),y
LDA #$00
L9845 INY
STA ($5F),y
CPY #$06
BNE L9845
L984C LDA $5F
CLC
ADC #$02
LDY $60
BCC L9856
INY
L9856 STA $47
STY $48
RTS
L985B LDA $0B
ASL
ADC #$05
ADC $5F
LDY $60
BCC L9867
INY
L9867 STA $58
STY $59
RTS
db $90,$80 ; 32768
db $00,$00,$00
FixedFloat:
L9871 JSR L9886 ; Fixed-Float
LDA $64 ; get top of mantissa
LDY $65
RTS
L9879 JSR $0473
JSR L932C
L987F JSR L9317
LDA $66
BMI L9893
L9886 LDA $61
CMP #$90
BCC L9898
LDA #$6C
LDY #$98
JSR LA2E0
L9893 BNE L9898
JMP L991C ; Illegal Quantity error
L9898 JMP LA327
L989B LDA $0C
ORA $0E
PHA
LDA $0D
PHA
LDY #$00
L98A5 TYA
PHA
LDA $46
PHA
LDA $45
PHA
JSR L9879
PLA
STA $45
PLA
STA $46
PLA
TAY
TSX
LDA $0102,x
PHA
LDA $0101,x
PHA
LDA $64
STA $0102,x
LDA $65
STA $0101,x
INY
STY $0B
JSR $0479
LDY $0B
CMP #$2C
BEQ L98A5
JSR L948B
PLA
STA $0D
PLA
STA $0E
AND #$7F
STA $0C
LDX $2F
LDA $30
L98E8 STX $5F
STA $60
CMP $32
BNE L98F4
CPX $31
BEQ L993A
L98F4 LDY #$00
JSR $04D1
INY
CMP $45
BNE L9909
JSR $04D1
STA $78
LDA $46
CMP $78
BEQ L9921
L9909 INY
JSR $04D1
CLC
ADC $5F
TAX
INY
JSR $04D1
ADC $60
BCC L98E8
BadSubscript:
L9919 LDX #$12 ; Bad Subscript error
db $2c ; makes LDX #$0e into BIT $0EA2 ($2c $a2 $0e)
ldx #$0E ; Illegal Quantity error
L991E JMP L8683 ; call error routine.
L9921 LDX #$13
LDA $0C
BNE L991E
JSR L985B
LDY #$04
JSR $04D1
STA $78
LDA $0B
CMP $78
BNE L9919
JMP L99C3
L993A JSR L985B
JSR L8923
LDY #$00
STY $72
LDX #$05
LDA $45
STA ($5F),y
BPL L994D
DEX
L994D INY
LDA $46
STA ($5F),y
BPL L9956
DEX
DEX
L9956 STX $71
LDA $0B
INY
INY
INY
STA ($5F),y
L995F LDX #$0B
LDA #$00
BIT $0C
BVC L996F
PLA
CLC
ADC #$01
TAX
PLA
ADC #$00
L996F INY
STA ($5F),y
INY
TXA
STA ($5F),y
JSR L9A2F
STX $71
STA $72
LDY $22
DEC $0B
BNE L995F
ADC $59
BCS L99EE
STA $59
TAY
TXA
ADC $58
BCC L9992
INY
BEQ L99EE
L9992 JSR L8923
STA $31
STY $32
LDA #$00
INC $72
LDY $71
BEQ L99A6
L99A1 DEY
STA ($58),y
BNE L99A1
L99A6 DEC $59
DEC $72
BNE L99A1
INC $59
SEC
LDA $31
SBC $5F
LDY #$02
STA ($5F),y
LDA $32
INY
SBC $60
STA ($5F),y
LDA $0C
BNE L9A2E
INY
L99C3 JSR $04D1
STA $0B
LDA #$00
STA $71
L99CC STA $72
INY
PLA
TAX
STA $64
JSR $04D1
STA $78
PLA
STA $65
CMP $78
BCC L99F1
BNE L99EB
INY
JSR $04D1
STA $78
CPX $78
BCC L99F2
L99EB JMP L9919
L99EE JMP L8681
L99F1 INY
L99F2 LDA $72
ORA $71
CLC
BEQ L9A03
JSR L9A2F
TXA
ADC $64
TAX
TYA
LDY $22
L9A03 ADC $65
STX $71
DEC $0B
BNE L99CC
STA $72
LDX #$05
LDA $45
BPL L9A14
DEX
L9A14 LDA $46
BPL L9A1A
DEX
DEX
L9A1A STX $28
LDA #$00
JSR L9A3A
TXA
ADC $58
STA $47
TYA
ADC $59
STA $48
TAY
LDA $47
L9A2E RTS
L9A2F STY $22
JSR $04D1
STA $28
DEY
JSR $04D1
L9A3A STA $29
LDA #$10
STA $5D
LDX #$00
LDY #$00
L9A44 TXA
ASL
TAX
TYA
ROL
TAY
BCS L99EE
ASL $71
ROL $72
BCC L9A5D
CLC
TXA
ADC $28
TAX
TYA
ADC $29
TAY
BCS L99EE
L9A5D DEC $5D
BNE L9A44
RTS
; *********************************************
;
; Perform "FRE" function
;
; *********************************************
L9A62 LDA $0D ; Value type
BEQ L9A69
JSR L9C4E
L9A69 JSR LA954 ; Garbage collection
SEC
LDA $33 ; String heap pointer
SBC $31 ; minus end of arrays
TAY
LDA $34
SBC $32
L9A76 JSR L9A92 ; Y/A -> FAC
SEC ; unsigned (alway positive)
JMP LA2CE ; convert integer in FAC
SEC
JSR LFFF0
L9A81 LDA #$00
JMP L9471
L9A86 BIT Running ; BASIC program running?
BMI L9A2E
LDX #$15
BIT $1BA2
JMP L8683 ; call error routine.
L9A92 LDX #$00
STX $0D
STA $62
STY $63
LDX #$90
RTS
JSR L9ACB
JSR L9A86
JSR L948E
LDA #$80
STA $10
JSR L96A5
JSR L9317
JSR L948B
LDA #$B2
JSR L9493
PHA
LDA $48
PHA
LDA $47
PHA
LDA $3C
PHA
LDA $3B
PHA
JSR L8DB0
JMP L9B3E
L9ACB LDA #$A5
JSR L9493
ORA #$80
STA $10
JSR L96AC
STA $4E
STY $4F
JMP L9317
L9ADE JSR L9ACB
LDA $4F
PHA
LDA $4E
PHA
JSR L9485
JSR L9317
PLA
STA $4E
PLA
STA $4F
LDY #$02
JSR L8159
STA $47
TAX
INY
JSR L8159
BEQ L9A8D
STA $48
INY
L9B04 JSR L8161
PHA
DEY
BPL L9B04
LDY $48
JSR LA259
LDA $3C
PHA
LDA $3B
PHA
JSR L8159
STA $3B
INY
JSR L8159
STA $3C
LDA $48
PHA
LDA $47
PHA
JSR L9314
PLA
STA $4E
PLA
STA $4F
JSR $0479
BEQ L9B38
JMP L94A1
L9B38 PLA
STA $3B
PLA
STA $3C
L9B3E LDY #$00
PLA
STA ($4E),y
PLA
INY
STA ($4E),y
PLA
INY
STA ($4E),y
PLA
INY
STA ($4E),y
PLA
INY
STA ($4E),y
RTS
L9B54 LDX $64
LDY $65
STX $50
STY $51
L9B5C JSR LA906
STX $62
STY $63
STA $61
RTS
JSR L9317
LDY #$00
JSR LA471
PLA
PLA
L9B70 LDA #$FF
LDY #$00
L9B74 LDX #$22
STX $07
STX $08
L9B7A STA $6F
STY $70
STA $62
STY $63
LDY #$FF
L9B84 INY
JSR $04C6
BEQ L9B96
CMP $07
BEQ L9B92
CMP $08
BNE L9B84
L9B92 CMP #$22
BEQ L9B97
L9B96 CLC
L9B97 STY $61
TYA
ADC $6F
STA $71
LDX $70
BCC L9BA3
INX
L9BA3 STX $72
TYA
JSR L9B54
LDX $6F
LDY $70
JSR L9C2C
L9BB0 LDX $16
CPX #$22
BNE L9BBB
LDX #$19
JMP L8683 ; call error routine.
L9BBB LDA $61
STA DIRECTION,x
LDA $62
STA IO,x
LDA $63
STA $02,x
LDY #$00
STX $64
STY $65
STY $70
DEY
STY $0D
STX $17
INX
INX
INX
STX $16
RTS
L9BDA LDA $65
PHA
LDA $64
PHA
JSR L9414
JSR L931A
PLA
STA $6F
PLA
STA $70
LDY #$00
JSR $04C6
STA $78
JSR $04DC
CLC
ADC $78
BCC L9BFE
JMP LCC4C
L9BFE JSR L9B54
JSR L9C1B
LDA $50
LDY $51
JSR L9C52
JSR L9C30
LDA $6F
LDY $70
JSR L9C52
JSR L9BB0
JMP L9346
L9C1B LDY #$00
JSR $04C6
PHA
INY
JSR $04C6
TAX
INY
JSR $04C6
TAY
PLA
L9C2C STX $22
STY $23
L9C30 TAY
BEQ L9C3E
PHA
L9C34 DEY
JSR $04B0
STA ($35),y
TYA
BNE L9C34
PLA
L9C3E CLC
ADC $35
STA $35
BCC L9C47
INC $36
L9C47 RTS
L9C48 JSR L932C
L9C4B JSR L931A
L9C4E LDA $64
LDY $65
L9C52 STA $22
STY $23
JSR L9CAA
BNE L9C94
JSR L8F9C
BCC L9C94
DEY
LDA #$FF
STA ($22),y
DEY
TXA
STA ($22),y
PHA
EOR #$FF
SEC
ADC $22
LDY $23
BCS L9C74
DEY
L9C74 STA $22
STY $23
TAX
PLA
CPY $34
BNE L9CBA
CPX $33
BNE L9CBA
PHA
SEC
ADC $33
STA $33
BCC L9C8C
INC $34
L9C8C INC $33
BNE L9C92
INC $34
L9C92 PLA
RTS
L9C94 LDY #$00
JSR $04B0
PHA
INY
JSR $04B0
TAX
INY
JSR $04B0
TAY
STX $22
STY $23
PLA
RTS
L9CAA CPY $18
BNE L9CBA
CMP $17
BNE L9CBA
STA $16
SBC #$03
STA $17
LDY #$00
L9CBA RTS
JSR L9D87
TXA
PHA
LDA #$01
JSR L9B5C
PLA
LDY #$00
STA ($62),y
L9CCA PLA
PLA
JMP L9BB0
JSR L9D46
PHA
JSR L8181
STA $78
PLA
CMP $78
TYA
L9CDC BCC L9CE3
JSR L8181
TAX
TYA
L9CE3 PHA
L9CE4 TXA
L9CE5 PHA
JSR L9B5C
LDA $50
LDY $51
JSR L9C52
PLA
TAY
PLA
CLC
ADC $22
STA $22
BCC L9CFC
INC $23
L9CFC TYA
JSR L9C30
JMP L9BB0
JSR L9D46
PHA
JSR L8181
STA $78
PLA
CLC
SBC $78
EOR #$FF
JMP L9CDC
LDA #$FF
STA $65
JSR $0479
CMP #$29
BEQ L9D26
JSR L9491
JSR L9D84
L9D26 JSR L9D46
BEQ L9D7E
DEX
TXA
PHA
LDX #$00
PHA
JSR L8181
STA $78
PLA
CLC
SBC $78
BCS L9CE4
EOR #$FF
CMP $65
BCC L9CE5
LDA $65
BCS L9CE5
L9D46 JSR L948B
PLA
TAY
PLA
STA $55
PLA
PLA
PLA
TAX
PLA
STA $50
PLA
STA $51
LDA $55
PHA
TYA
PHA
LDY #$00
TXA
RTS
JSR L9D67
JMP L9A81
L9D67 JSR L9C4B
LDX #$00
STX $0D
TAY
RTS
JSR L9D67
BEQ L9D7B
LDY #$00
JSR $04B0
TAY
L9D7B JMP L9A81
L9D7E JMP L991C ; Illegal Quantity error
; *********************************************
;
; input a byte paramater from basic
;
; This gets the next paramater from basic, evaluates
; and if >255 returns an error, else it returns
; the value in "X"
;
; *********************************************
GetByteParamFromBasic:
L9D81 JSR $0473 ; use CHRGET to fetch next paramater
L9D84 JSR L9314 ; evaluate and Check the type (int,float or string etc.)
L9D87 JSR L987F ; perform Float-Fixed
LDX $64 ; get Mantissa high (256-65535)
BNE L9D7E ; if paramater>255 display an illegal Quantity error
LDX $65 ; get actual BYTE value from paramater.
JMP $0479 ; use CHRGOT to get current basic byte. (return as well) - get ready for commas etc?
; *********************************************
;
; Perform "VAL" command
;
; *********************************************
JSR L9D67
BEQ L9DCF
LDX $3B
LDY $3C
STX $71
STY $72
LDX $22
STX $3B
CLC
ADC $22
STA $24
LDX $23
STX $3C
BCC L9DB0
INX
L9DB0 STX $25
LDY #$00
JSR $04BB
PHA
TYA
STA ($24),y
JSR $0479
JSR LA37F
PLA
LDY #$00
STA ($24),y
L9DC6 LDX $71
LDY $72
STX $3B
STY $3C
RTS
L9DCF JMP L9F2B
L9DD2 JSR L9314
JSR L9DE4
L9DD8 JSR L9491
JMP L9D84
L9DDE JSR L9491
L9DE1 JSR L9314
L9DE4 LDA $66
BMI L9D7E
L9DE8 LDA $61
CMP #$91
BCS L9D7E
JSR LA327
LDA $64
LDY $65
STY $14
STA $15
RTS
LDA $15
PHA
LDA $14
PHA
JSR L9DE4
LDY #$00
JSR L815D
TAY
PLA
STA $14
PLA
STA $15
JMP L9A81
JSR L9DD2
TXA
LDY #$00
STA ($14),y
RTS
JSR L9D67
STA $24
LDY #$00
STY $25
STY $71
STY $72
L9E28 CPY $24
BEQ L9E60
JSR $04B0
INY
CMP #$20
BEQ L9E28
INC $25
LDX $25
CPX #$05
BEQ L9E67
CMP #$30
BCC L9E67
CMP #$3A
BCC L9E4E
CMP #$41
BCC L9E67
CMP #$47
BCS L9E67
SBC #$07
L9E4E SBC #$2F
ASL
ASL
ASL
ASL
LDX #$04
L9E56 ASL
ROL $71
ROL $72
DEX
BNE L9E56
BEQ L9E28
L9E60 LDY $71
LDA $72
JMP L9A76
L9E67 JMP L991C ; Illegal Quantity error
JSR L9DD2
STX $49
LDX #$00
JSR $0479
BEQ L9E79
JSR L9DD8
L9E79 STX $4A
LDY #$00
L9E7D JSR L815D
EOR $4A
AND $49
BEQ L9E7D
L9E86 RTS
L9E87 LDA $66
EOR #$FF
STA $66
EOR $6E
STA $6F
LDA $61
JMP L9E9E
L9E96 JSR L9FCD
BCC L9ED7
L9E9B JSR LA107
L9E9E BNE L9EA3
JMP LA281
L9EA3 LDX $70
STX $56
LDX #$69
LDA $69
L9EAB TAY
BEQ L9E86
SEC
SBC $61
BEQ L9ED7
BCC L9EC7
STY $61
LDY $6E
STY $66
EOR #$FF
ADC #$00
LDY #$00
STY $56
LDX #$61
BNE L9ECB
L9EC7 LDY #$00
STY $70
L9ECB CMP #$F9
BMI L9E96
TAY
LDA $70
LSR IO,x
JSR L9FE4
L9ED7 BIT $6F
BPL L9F32
LDY #$61
CPX #$69
BEQ L9EE3
LDY #$69
L9EE3 SEC
EOR #$FF
ADC $56
STA $70
LDA $0004,y
SBC $04,x
STA $65
LDA $0003,y
SBC $03,x
STA $64
LDA $0002,y
SBC $02,x
STA $63
LDA IO,y
SBC IO,x
STA $62
L9F06 BCS L9F0B
JSR L9F7B
L9F0B LDY #$00
TYA
CLC
L9F0F LDX $62
BNE L9F5D
LDX $63
STX $62
LDX $64
STX $63
LDX $65
STX $64
LDX $70
STX $65
STY $70
ADC #$08
CMP #$20
BNE L9F0F
L9F2B LDA #$00
L9F2D STA $61
L9F2F STA $66
RTS
L9F32 ADC $56
STA $70
LDA $65
ADC $6D
STA $65
LDA $64
ADC $6C
STA $64
LDA $63
ADC $6B
STA $63
LDA $62
ADC $6A
STA $62
JMP L9F6A
L9F51 ADC #$01
ASL $70
ROL $65
ROL $64
ROL $63
ROL $62
L9F5D BPL L9F51
SEC
SBC $61
BCS L9F2B
EOR #$FF
ADC #$01
STA $61
L9F6A BCC L9F7A
L9F6C INC $61
BEQ L9FB2
ROR $62
ROR $63
ROR $64
ROR $65
ROR $70
L9F7A RTS
L9F7B LDA $66
EOR #$FF
STA $66
L9F81 LDA $62
EOR #$FF
STA $62
LDA $63
EOR #$FF
STA $63
LDA $64
EOR #$FF
STA $64
LDA $65
EOR #$FF
STA $65
LDA $70
EOR #$FF
STA $70
INC $70
BNE L9FB1
L9FA3 INC $65
BNE L9FB1
INC $64
BNE L9FB1
INC $63
BNE L9FB1
INC $62
L9FB1 RTS
L9FB2 LDX #$0F
JMP L8683 ; call error routine.
L9FB7 LDX #$25
L9FB9 LDY $04,x
STY $70
LDY $03,x
STY $04,x
LDY $02,x
STY $03,x
LDY IO,x
STY $02,x
LDY $68
STY IO,x
L9FCD ADC #$08
BMI L9FB9
BEQ L9FB9
SBC #$08
TAY
LDA $70
BCS L9FEE
L9FDA ASL IO,x
BCC L9FE0
INC IO,x
L9FE0 ROR IO,x
ROR IO,x
L9FE4 ROR $02,x
ROR $03,x
ROR $04,x
ROR
INY
BNE L9FDA
L9FEE CLC
RTS
STA (DIRECTION,x)
BRK
BRK
BRK
ASO ($7F,x)
LSR $CB56,x
ADC $1380,y
???
SKB $76
SEC
???
ASL $82,x
SEC
TAX
RLA $8020,y
AND $04,x
INS ($34),y
STA ($35,x)
SKB $F3
SKB $80
SKB DIRECTION
BRK
BRK
SKB $31
HLT
ASO $F8,x
LA01E JSR LA2B0
BEQ LA025
BPL LA028
LA025 JMP L991C ; Illegal Quantity error
LA028 LDA $61
SBC #$7F
PHA
LDA #$80
STA $61
LDA #$0A
LDY #$A0
JSR LA066
LDA #$0F
LDY #$A0
JSR LA072
LDA #$F0
LDY #$9F
JSR LA06C
LDA #$F5
LDY #$9F
JSR LA6B3
LDA #$14
LDY #$A0
JSR LA066
PLA
JSR LA40A
LDA #$19
LDY #$A0
LA05C JSR LA0DC
JMP LA07B
LA062 LDA #$A3
LDY #$A5
LA066 JSR LA0DC
JMP L9E9E
LA06C JSR LA0DC
JMP L9E87
LA072 JSR LA0DC
JMP LA197
LA078 JSR LA107
LA07B BNE LA080
JMP LA0DB
LA080 JSR LA137
LDA #$00
STA $26
STA $27
STA $28
STA $29
LDA $70
JSR LA0A9
LDA $65
JSR LA0A9
LDA $64
JSR LA0A9
LDA $63
JSR LA0A9
LDA $62
JSR LA0AE
JMP LA20C
LA0A9 BNE LA0AE
JMP L9FB7
LA0AE LSR
ORA #$80
LA0B1 TAY
BCC LA0CD
CLC
LDA $29
ADC $6D
STA $29
LDA $28
ADC $6C
STA $28
LDA $27
ADC $6B
STA $27
LDA $26
ADC $6A
STA $26
LA0CD ROR $26
ROR $27
ROR $28
ROR $29
ROR $70
TYA
LSR
BNE LA0B1
LA0DB RTS
LA0DC STA $22
STY $23
LDY #$04
LDA ($22),y
STA $6D
DEY
LDA ($22),y
STA $6C
DEY
LDA ($22),y
STA $6B
DEY
LDA ($22),y
STA $6E
EOR $66
STA $6F
LDA $6E
ORA #$80
STA $6A
DEY
LDA ($22),y
STA $69
LDA $61
RTS
LA107 STA $22
STY $23
LDY #$04
JSR $04B0
STA $6D
DEY
JSR $04B0
STA $6C
DEY
JSR $04B0
STA $6B
DEY
JSR $04B0
STA $6E
EOR $66
STA $6F
LDA $6E
ORA #$80
STA $6A
DEY
JSR $04B0
STA $69
LDA $61
RTS
LA137 LDA $69
LA139 BEQ LA15A
CLC
ADC $61
BCC LA144
BMI LA15F
CLC
BIT $1410
ADC #$80
STA $61
BNE LA14F
JMP L9F2F
LA14F LDA $6F
STA $66
RTS
LA154 LDA $66
EOR #$FF
BMI LA15F
LA15A PLA
PLA
JMP L9F2B
LA15F JMP L9FB2
LA162 JSR LA291
TAX
BEQ LA178
CLC
ADC #$02
BCS LA15F
LA16D LDX #$00
STX $6F
JSR L9EAB
INC $61
BEQ LA15F
LA178 RTS
STY $20
BRK
BRK
BRK
LA17E LDX #$14
JMP L8683 ; call error routine.
LA183 JSR LA291
LDA #$79
LDY #$A1
LDX #$00
LA18C STX $6F
JSR LA221
JMP LA197
LA194 JSR LA107
LA197 BEQ LA17E
JSR LA2A0
LDA #$00
SEC
SBC $61
STA $61
JSR LA137
INC $61
BEQ LA15F
LDX #$FC
LDA #$01
LA1AE LDY $6A
CPY $62
BNE LA1C4
LDY $6B
CPY $63
BNE LA1C4
LDY $6C
CPY $64
BNE LA1C4
LDY $6D
CPY $65
LA1C4 PHP
ROL
BCC LA1D1
INX
STA $29,x
BEQ LA1FF
BPL LA203
LDA #$01
LA1D1 PLP
BCS LA1E2
LA1D4 ASL $6D
ROL $6C
ROL $6B
ROL $6A
BCS LA1C4
BMI LA1AE
BPL LA1C4
LA1E2 TAY
LDA $6D
SBC $65
STA $6D
LDA $6C
SBC $64
STA $6C
LDA $6B
SBC $63
STA $6B
LDA $6A
SBC $62
STA $6A
TYA
JMP LA1D4
LA1FF LDA #$40
BNE LA1D1
LA203 ASL
ASL
ASL
ASL
ASL
ASL
STA $70
PLP
LA20C LDA $26
STA $62
LDA $27
STA $63
LDA $28
STA $64
LDA $29
STA $65
JMP L9F0B
LA21F CLC
BIT $38
STA $22
STY $23
LDY #$04
JSR LA320
STA $65
DEY
JSR LA320
STA $64
DEY
JSR LA320
STA $63
DEY
JSR LA320
STA $66
ORA #$80
STA $62
DEY
JSR LA320
STA $61
STY $70
RTS
LA24C LDX #$5C
BIT $57A2
LDY #$00
BEQ LA259
LA255 LDX $49
LDY $4A
LA259 JSR LA2A0
STX $22
STY $23
LDY #$04
LDA $65
STA ($22),y
DEY
LDA $64
STA ($22),y
DEY
LDA $63
STA ($22),y
DEY
LDA $66
ORA #$7F
AND $62
STA ($22),y
DEY
LDA $61
STA ($22),y
STY $70
RTS
LA281 LDA $6E
LA283 STA $66
LDX #$05
LA287 LDA $68,x
STA $60,x
DEX
BNE LA287
STX $70
RTS
LA291 JSR LA2A0
LA294 LDX #$06
LA296 LDA $60,x
STA $68,x
DEX
BNE LA296
STX $70
LA29F RTS
LA2A0 LDA $61
BEQ LA29F
ASL $70
BCC LA29F
LA2A8 JSR L9FA3
BNE LA29F
JMP L9F6C
LA2B0 LDA $61
BEQ LA2BD
LA2B4 LDA $66
LA2B6 ROL
LDA #$FF
BCS LA2BD
LDA #$01
LA2BD RTS
JSR LA2B0
LA2C1 STA $62
LDA #$00
STA $63
LDX #$88
LA2C9 LDA $62
EOR #$FF
ROL
LA2CE LDA #$00
STA $65
STA $64
LA2D4 STX $61
STA $70
STA $66
JMP L9F06
LSR $66
RTS
LA2E0 STA $24
STY $25
LDY #$00
LDA ($24),y
INY
TAX
BEQ LA2B0
LDA ($24),y
EOR $66
BMI LA2B4
CPX $61
BNE LA317
LDA ($24),y
ORA #$80
CMP $62
BNE LA317
INY
LDA ($24),y
CMP $63
BNE LA317
INY
LDA ($24),y
CMP $64
BNE LA317
INY
LDA #$7F
CMP $70
LDA ($24),y
SBC $65
BEQ LA346
LA317 LDA $66
BCC LA31D
EOR #$FF
LA31D JMP LA2B6
LA320 LDA ($22),y
BCS LA346
JMP $04B0
LA327 LDA $61
BEQ LA375
SEC
SBC #$A0
BIT $66
BPL LA33B
TAX
LDA #$FF
STA $68
JSR L9F81
TXA
LA33B LDX #$61
CMP #$F9
BPL LA347
JSR L9FCD
STY $68
LA346 RTS
LA347 TAY
LDA $66
AND #$80
LSR $62
ORA $62
STA $62
JSR L9FE4
STY $68
RTS
LA358 LDA $61
CMP #$A0
BCS LA37E
JSR LA327
STY $70
LDA $66
STY $66
EOR #$80
ROL
LDA #$A0
STA $61
LDA $65
STA $07
JMP L9F06
LA375 STA $62
STA $63
STA $64
STA $65
TAY
LA37E RTS
LA37F LDY #$00
LDX #$0A
LA383 STY $5D,x
DEX
BPL LA383
BCC LA399
CMP #$2D
BNE LA392
STX $67
BEQ LA396
LA392 CMP #$2B
BNE LA39B
LA396 JSR $0473
LA399 BCC LA3F6
LA39B CMP #$2E
BEQ LA3CD
CMP #$45
BNE LA3D3
JSR $0473
BCC LA3BF
CMP #$AB
BEQ LA3BA
CMP #$2D
BEQ LA3BA
CMP #$AA
BEQ LA3BC
CMP #$2B
BEQ LA3BC
BNE LA3C1
LA3BA ROR $60
LA3BC JSR $0473
LA3BF BCC LA41D
LA3C1 BIT $60
BPL LA3D3
LDA #$00
SEC
SBC $5E
JMP LA3D5
LA3CD ROR $5F
BIT $5F
BVC LA396
LA3D3 LDA $5E
LA3D5 SEC
SBC $5D
STA $5E
BEQ LA3EE
BPL LA3E7
LA3DE JSR LA183
INC $5E
BNE LA3DE
BEQ LA3EE
LA3E7 JSR LA162
DEC $5E
BNE LA3E7
LA3EE LDA $67
BMI LA3F3
RTS
LA3F3 JMP LA627
LA3F6 PHA
BIT $5F
BPL LA3FD
INC $5D
LA3FD JSR LA162
PLA
SEC
SBC #$30
JSR LA40A
JMP LA396
LA40A PHA
JSR LA291
PLA
JSR LA2C1
LDA $6E
EOR $66
STA $6F
LDX $61
JMP L9E9E
LA41D LDA $5E
CMP #$0A
BCC LA42C
LDA #$64
BIT $60
BMI LA43F
JMP L9FB2
LA42C ASL
ASL
CLC
ADC $5E
ASL
CLC
LDY #$00
STA $78
JSR $04A5
ADC $78
SEC
SBC #$30
LA43F STA $5E
JMP LA3BC
???
ASO $9EFD,x
ROR $276B
ORA $6E9E,x
???
LA453 JSR PrintMessage
JSR $4E49
JSR LA500
NOP
LDX $39
LA45F STA $62
STX $63
LDX #$90
SEC
JSR LA2CE
JSR LA471
JMP L9088
LA46F LDY #$01
LA471 LDA #$20
BIT $66
BPL LA479
LDA #$2D
LA479 STA $00FF,y
STA $66
STY $71
INY
LDA #$30
LDX $61
BNE LA48A
JMP LA596
LA48A LDA #$00
CPX #$80
BEQ LA492
BCS LA49B
LA492 LDA #$4E
LDY #$A4
JSR LA05C
LDA #$F7
LA49B STA $5D
LA49D LDA #$49
LDY #$A4
JSR LA2E0
BEQ LA4C4
BPL LA4BA
LA4A8 LDA #$44
LDY #$A4
JSR LA2E0
BEQ LA4B3
BPL LA4C1
LA4B3 JSR LA162
DEC $5D
BNE LA4A8
LA4BA JSR LA183
INC $5D
BNE LA49D
LA4C1 JSR LA062
LA4C4 JSR LA327
LDX #$01
LDA $5D
CLC
ADC #$0A
BMI LA4D9
CMP #$0B
BCS LA4DA
ADC #$FF
TAX
LDA #$02
LA4D9 SEC
LA4DA SBC #$02
STA $5E
STX $5D
TXA
BEQ LA4E5
BPL LA4F8
LA4E5 LDY $71
LDA #$2E
INY
STA $00FF,y
TXA
BEQ LA4F6
LDA #$30
INY
STA $00FF,y
LA4F6 STY $71
LA4F8 LDY #$00
LA4FA LDX #$80
LA4FC LDA $65
CLC
ADC $A5AB,y
STA $65
LDA $64
ADC $A5AA,y
STA $64
LDA $63
ADC $A5A9,y
STA $63
LDA $62
ADC $A5A8,y
STA $62
INX
BCS LA520
BPL LA4FC
BMI LA522
LA520 BMI LA4FC
LA522 TXA
BCC LA529
EOR #$FF
ADC #$0A
LA529 ADC #$2F
INY
INY
INY
INY
STY $47
LDY $71
INY
TAX
AND #$7F
STA $00FF,y
DEC $5D
BNE LA544
LDA #$2E
INY
STA $00FF,y
LA544 STY $71
LDY $47
TXA
EOR #$FF
AND #$80
TAX
CPY #$24
BEQ LA556
CPY #$3C
BNE LA4FC
LA556 LDY $71
LA558 LDA $00FF,y
DEY
CMP #$30
BEQ LA558
CMP #$2E
BEQ LA565
INY
LA565 LDA #$2B
LDX $5E
BEQ LA599
BPL LA575
LDA #$00
SEC
SBC $5E
TAX
LDA #$2D
LA575 STA $0101,y
LDA #$45
STA $0100,y
TXA
LDX #$2F
SEC
LA581 INX
SBC #$0A
BCS LA581
ADC #$3A
STA $0103,y
TXA
STA $0102,y
LDA #$00
STA $0104,y
BEQ LA59E
LA596 STA $00FF,y
LA599 LDA #$00
STA $0100,y
LA59E LDA #$00
LDY #$01
RTS
SKB DIRECTION
BRK
BRK
BRK
NOP
ASL
ASO DIRECTION,x
TYA
STX $80,y
INS $BDF0,x
CPY #$00
ORA ($86,x)
LDY #$FF
INS $F0D8,x
BRK
BRK
ASO ($E8,x)
INS $FFFF,x
SAY DIRECTION,x
BRK
ASL
INS $FFFF,x
INS $DFFF,x
ASL
SKB DIRECTION
ASO ($4B,x)
CPY #$FF
INS $6073,x
BRK
BRK
ASL Voice2FreqHI
LA5DD INS $A8FD,x
BRK
BRK
BRK
SKW $9120
LDX #$A9
LAX ($A0,x)
LDA $20
AND ($A2,x)
BEQ LA660
LDA $69
BNE LA5F7
JMP L9F2D
LA5F7 LDX #$4E
LDY #$00
JSR LA259
LDA $6E
BPL LA611
JSR LA358
LDA #$4E
LDY #$00
JSR LA2E0
BNE LA611
TYA
LDY $07
LA611 JSR LA283
TYA
PHA
JSR LA01E
LDA #$4E
LDY #$00
JSR LA078
JSR LA660
PLA
LSR
BCC LA631
LA627 LDA $61
BEQ LA631
LDA $66
EOR #$FF
STA $66
LA631 RTS
STA ($38,x)
TAX
RLA $0729,y
ADC ($34),y
CLI
ROL $7456,x
ASL $7E,x
LAX ($1B),y
RRA $2F,x
INC $85E3
NOP
ORA $1C84,x
ROL
SKW $5963
CLI
ASL
ROR $FD75,x
INS $C6
SKB $31
HLT
CLC
BPL LA5DD
BRK
BRK
BRK
BRK
LA660 LDA #$32
LDY #$A6
JSR LA05C
LDA $70
ADC #$50
BCC LA670
JSR LA2A8
LA670 STA $56
JSR LA294
LDA $61
CMP #$88
BCC LA67E
LA67B JSR LA154
LA67E JSR LA358
LDA $07
CLC
ADC #$81
BEQ LA67B
SEC
SBC #$01
PHA
LDX #$05
LA68E LDA $69,x
LDY $61,x
STA $61,x
STY $69,x
DEX
BPL LA68E
LDA $56
STA $70
JSR L9E87
JSR LA627
LDA #$37
LDY #$A6
JSR LA6C9
LDA #$00
STA $6F
PLA
JSR LA139
RTS
LA6B3 STA $71
STY $72
JSR LA24F
LDA #$57
JSR LA078
JSR LA6CD
LDA #$57
LDY #$00
JMP LA078
LA6C9 STA $71
STY $72
LA6CD JSR LA24C
LDA ($71),y
STA $67
LDY $71
INY
TYA
BNE LA6DC
INC $72
LA6DC STA $71
LDY $72
LA6E0 JSR LA05C
LDA $71
LDY $72
CLC
ADC #$05
BCC LA6ED
INY
LA6ED STA $71
STY $72
JSR LA066
LDA #$5C
LDY #$00
DEC $67
BNE LA6E0
RTS
TYA
AND $44,x
NOP
BRK
PLA
PLP
LDA ($46),y
BRK
; *********************************************
;
; Perform "RND" function
;
; *********************************************
JSR LA2B0 ; Signum function
BMI LA73A
BNE LA725
LDA Timer1Low ; RND(0)
STA $62
LDA Timer1High
STA $64
LDA Timer2Low
STA $63
LDA Timer2High
STA $65
JMP LA74A ; set exponent and exit
LA725 LDA #$03 ; RND(1)
LDY #$05
JSR LA221 ; A/Y to FAC1
LDA #$FD
LDY #$A6
JSR LA05C ; FAC1 * A/Y
LDA #$02
LDY #$A7
JSR LA066 ; FAC1 + A/Y
LA73A LDX $65 ; RND(-1)
LDA $62 ; shuffle FAC mantissa
STA $65
STX $62
LDX $63
LDA $64
STA $63
STX $64
LA74A LDA #$00
STA $66 ; FAC1 sign
LDA $61 ; FAC1 exponent
STA $70 ; FAC1 rounding byte
LDA #$80 ; set FAC1 exponent
STA $61 ;
JSR L9F0B ; normalize
LDX #$03 ; $0503 saved random value
LDY #$05
LA75D JMP LA259 ; store X/Y to fax
LA760 LDA $7C
STA $3D
LDA $7D
STA $3E
RTS
LA769 LDA $3D
STA $7C
LDA $3E
STA $7D
RTS
LA772 TYA
CLC
ADC $7C
STA $7C
BCC LA77C
INC $7D
LA77C RTS
LA77D TAX
BNE LA782
LDX #$1E
LA782 JMP L8683 ; call error routine.
LA785 JSR LFFC0
BCS LA77D
RTS
LA78B JSR LFFD2
BCS LA77D
RTS
LA791 JSR LFFCF
BCS LA77D
RTS
;
; CMD command jumps here for kernal processing
;
LA797 PHA
JSR LFFC9 ; Set output vector (jumps through $031e ->$ED18)
JSR LA8F8
TAX
PLA
BCC LA7A5
TXA
BCS LA77D
LA7A5 RTS
LA7A6 JSR LFFC6
JSR LA8F8
BCS LA77D
RTS
LA7AF JSR LFFE4
BCS LA77D
RTS
JSR L9DE1
LDA #$A7
PHA
LDA #$CE
PHA
LDA $07F5
PHA
LDA $07F2
LDX $07F3
LDY $07F4
PLP
JMP ($0014)
PHP
STA $07F2
STX $07F3
STY $07F4
PLA
STA $07F5
RTS
JSR LA86B
LA7E1 LDX $2D
LDY $2E
LDA #$2B
JSR LFFD8
JSR LA8F8
BCS LA77D
RTS
LDA #$01
BIT $00A9
STA $0A
JSR LA86B
LA7FA LDA $0A
LDX $2B
LDY $2C
JSR LFFD5
PHP
JSR LA8F8
PLP
BCS LA868
LDA $0A
BEQ LA824
LDX #$1C
JSR LFFB7
AND #$10
BNE LA82D
BIT Running ; BASIC program running?
BMI LA823
JSR PrintMessage
ORA $4B4F
ORA $6000
LA824 JSR LFFB7
AND #$BF
BEQ LA830
LDX #$1D
LA82D JMP L8683 ; call error routine.
LA830 BIT Running ; BASIC program running?
BMI LA844
STX $2D
STY $2E
JSR L866F
JSR L8818
JSR L8A93
JMP L870F
LA844 JSR L8AF1
JSR L8818
JMP L8AD5
JSR LA8B0
CLC
JSR LA785
JSR LA8F8
BCS LA868
RTS
JSR LA8B0
LDA $49
CLC
JSR LFFC3
JSR LA8F8
BCC LA823
LA868 JMP LA77D
LA86B LDA #$00
JSR LFFBD
LDX #$01
LDY #$00
JSR LFFBA
JSR LA89D
JSR LA8EE
JSR LA89D
JSR LA897
LDY #$00
STX $49
JSR LFFBA
JSR LA89D
JSR LA897
TXA
TAY
LDX $49
JMP LFFBA
LA897 JSR LA8A5
JMP L9D84
LA89D JSR $0479
BNE LA8A4
PLA
PLA
LA8A4 RTS
LA8A5 JSR L9491
LA8A8 JSR $0479
BNE LA8A4
JMP L94A1
LA8B0 LDA #$00
JSR LFFBD
JSR LA8A8
JSR L9D84
STX $49
TXA
LDX #$01
LDY #$00
JSR LFFBA
JSR LA89D
JSR LA897
STX $4A
LDY #$00
LDA $49
CPX #$03
BCC LA8D6
DEY
LA8D6 JSR LFFBA
JSR LA89D
JSR LA897
TXA
TAY
LDX $4A
LDA $49
JSR LFFBA
JSR LA89D
JSR LA8A5
LA8EE JSR L9C48
LDX $22
LDY $23
JMP LFFBD
LA8F8 PHP
PHA
LDA $AE
CMP #$04
BCC LA903
JSR LCD57
LA903 PLA
PLP
RTS
; ******* Allocate String
LA906 LSR $0F ; GC done flag
LA908 TAX : length
BEQ LA943 ; = 0 -> exit
PHA ; save length
LDA $33 : FRETOP low
SEC
SBC #$02 ; FRETOP - 2
LDY $34 ; FRETOP high byte
BCS LA916 ; borrow high byte?
DEY ; borrow from high byte
LA916 STA $22 ; A/Y, $22/$23 = FRETOP-2
STY $23 ; points to back-link part
TXA ; length
EOR #$FF ; negate A (two's complement)
SEC ; -length
ADC $22 ; $22/23 - length
BCS LA923 ; borrow high byte?
DEY ; borrow frmo high byte
LA923 CPY $32 ; < STREND? end of string space
BCC LA944 ; yes -> need space
BNE LA92D ; greater -> ok
CMP $31 ; STREND low byte
BCC LA944 ; yes -> need space
LA92D STA $35 ; string heap new
STY $36 ; temporary pointer
LDY #$01 ; back-link offset
LDA #$FF ; mark string
STA ($22),y ; back-link: address high: $FF
DEY
PLA ; string length
STA ($22),y ; back-link: address low: length
LDX $35 ; string heap new
LDY $36
STX $33 ; FRETOP finally set
STY $34
LA943 RTS ; finished, return length in A
LA944 LDA $0F ; GC already run?
BMI LA951 ; yes, out of memory
JSR LA954 ; try GC to free space
SEC ; set GC run flag
ROR $0F
PLA ; length into A
BNE LA908 ; try again
LA951 JMP L8681 ; out of memory error
; ******* Garbage Collection
; Setup up String Descriptor Stack Strings with Back-links,
; temporary strings will be kept and not collected
LA954 LDX $16 ; TOS of string descriptor stack
LA956 CPX #$19 ; SDS empty?
BEQ LA96A ; SDS finished
JSR LAA57 ; get descriptor from SDS into $5C/$5D
BEQ LA956 ; skip if length = 0
TXA ; SDS descriptor address low
LDY #$00
STA ($5C),y ; back-link offset 0
TYA ; 0, SDS descriptor address high
INY
STA ($5C),y ; back-link offset 1
BNE LA956 ; always, loop
; Intialisation
; opt.:
LA96A LDY #$00 ; LSR $58
STY $58 ; inactive flag = 0 (active) -
LDX $37 ; MEMTOP ->
LDY $38
STX $5F ; $5F/60 new heap pointer
STX $4E ; $4E/$4F old heap pointer
STX $35 ; $35/$36 string heap last
STY $60
STY $4F
STY $36
TXA ; A/Y current old heap pointer
; Main Loop with Next String
LA97F JSR LA9EA ; next string -> ($22)
BNE LA990 ; inactive
; Main Loop
LA984 DEY ; 0
JSR L8165 ; Getram($4E/$4F)
JSR LAA39 ; $4E/$4F -= A
SEC ; set inactive flag
ROR $58 ; = $80
BNE LA97F ; always, loop
LA990 BIT $58 ; inactive flag?
BPL LA9D6 ; -> active opt.:
LDX #$00 ; inctive LSR $58
STX $58 ; inactive flag = 0 (active) -
; Inactive - Active Loop
LDA #$02
LA99A LDY #$01 ; high byte
JSR L8165 ; Getram($4E/4F)
STA ($5F),y ; back-link high
DEY ; low byte
JSR L8165 ; Getram($4E/4F)
STA ($5F),y ; back-link low
JSR $04B0 ; Getram($22/23)
TAX ; string length, save
JSR LAA48 ; $5F/$6F -= A adjust new heap
STA $35
STY $36
TXA ; string length, restore
JSR LAA39 ; $4E/$4F -= A adjust old heap
; Copy String
TXA ; string length = count
TAY ; to Y
LA9B8 DEY ; index 0 .. length-1
JSR L8165 ; Getram($4E/$4F), old heap
STA ($5F),y ; to new heap
DEX ; length count
BNE LA9B8 ; loop
; Adjust Descriptor
LDY #$02 ; 2 bytes
LA9C3 LDA $005E,y ; new string address
STA ($22),y ; into descriptor
DEY
BNE LA9C3
LDA $4E ; old string heap position
LDY $4F
JSR LA9EA ; next string
BEQ LA984 ; inactive -> main loop
BNE LA99A ; inactive-active loop
LA9D6 LDY #$00
JSR $04B0 ; Getram($22/$23) from descriptor
TAX ; string length
JSR LAA48 ; advance $5F/$60 by length
STA $35 ; string heap last
STY $36
TXA ; string length
JSR LAA39 ; advance $4E/$4F by length
JMP LA97F ; main loop next string
; Next String
LA9EA CPY $34 ; end of strings reached
BCC LAA18 ; continue with SDS cleanup
BNE LA9F6
CMP $33 ; end of strings low
BEQ LAA18 ; continue with SDS cleanup
BCC LAA18 ; continue with SDS cleanup
LA9F6 BIT $58 ; inactive flag
BMI LA9FF ; -> inactive
LDA #$02 ;
JSR LAA48 ; advance $5F/$60 by 2
LA9FF LDA #$02
JSR LAA39 ; advance $4E/$4F by 2
LDY #$01
JSR L8165 ; Getram($4E/4F): back-link high byte
CMP #$FF ; free mark, inactive? opt.:
BNE LAA0E ; no, save back-link BEQ LAA18-1
RTS ; -
; Save Descriptor Pointer
LAA0E JSR L8165 ; Getram($4E/4F): back-link
STA $0022,y ; store to pointer
DEY
BPL LAA0E ; 2 bytes
RTS
; Free Stringstack strings
LAA18 LDX $16 ; TOS of string descriptor stack
LAA1A CPX #$19 ; SDS empty?
BEQ LAA2E ; SDS finished
JSR LAA57 ; get descriptor from SDS into $5C/$5D
BEQ LAA1A ; skip if length = 0
LDY #$00 ; string length to
STA ($5C),y ; back-link offset 0: address low
INY
LDA #$FF ; free mark to
STA ($5C),y ; back-link offset 1: address high
BNE LAA1A ; always, loop
LAA2E PLA ; remove caller's return address
PLA
LDA $35 ; new string heap end
LDY $36
STA $33 ; FRETOP
STY $34
RTS ; finished, exit
; Advance String Pointer of Old Heap
LAA39 EOR #$FF ; negate A (two's complement)
SEC
ADC $4E : $4E/$4F -= A
LDY $4F
BCS LAA43
DEY
LAA43 STA $4E
STY $4F
RTS
; Advance String Pointer of New Heap
LAA48 EOR #$FF ; negate A (two's complement)
SEC
ADC $5F ; $5F/$60 -= A
LDY $60
BCS LAA52
DEY
LAA52 STA $5F
STY $60
RTS
; Descriptor to Back-link
LAA57 DEX ; offset to SDS
LDA $00,x ; string address high
STA $5D ; string pointer high
DEX
LDA $00,x ; string address low
STA $5C ; string pointer low
DEX
LDA $00,x ; string length
PHA ; save
CLC
ADC $5C ; position to back-link
STA $5C
BCC LAA6E
INC $5D
LAA6E PLA ; restore string length
RTS
LDA #$EC
LDY #$AA
JSR LA066
LAA77 JSR LA291
LDA #$F1
LDY #$AA
LDX $6E
JSR LA18C
JSR LA291
JSR LA358
LDA #$00
STA $6F
JSR L9E87
LDA #$F6
LDY #$AA
JSR LA06C
LDA $66
PHA
BPL LAAA9
JSR LA062
LDA $66
BMI LAAAC
LDA $12
EOR #$FF
STA $12
LAAA9 JSR LA627
LAAAC LDA #$F6
LDY #$AA
JSR LA066
PLA
BPL LAAB9
JSR LA627
LAAB9 LDA #$FB
LDY #$AA
JMP LA6B3
JSR LA24F
LDA #$00
STA $12
JSR LAA77
LDX #$4E
LDY #$00
JSR LA75D
LDA #$57
LDY #$00
JSR LA221
LDA #$00
STA $66
LDA $12
JSR LAAE8
LDA #$4E
LDY #$00
JMP LA194
LAAE8 PHA
JMP LAAA9
STA ($49,x)
ASO $A2DA
AXS ($49,x)
ASO $A2DA
RRA DIRECTION,x
BRK
BRK
ORA $84
INC $1A
AND $861B
PLP
ASO $FB
SED
AXS $99
PLA
SKB IO
AXS $23
AND $DF,x
SBC ($86,x)
LDA $5D
INS $28
AXS ($49,x)
ASO $A2DA
LDA $66
PHA
BPL LAB22
JSR LA627
LAB22 LDA $61
PHA
CMP #$81
BCC LAB30
LDA #$F0
LDY #$9F
JSR LA072
LAB30 LDA #$4A
LDY #$AB
JSR LA6B3
PLA
CMP #$81
BCC LAB43
LDA #$EC
LDY #$AA
JSR LA06C
LAB43 PLA
BPL LAB49
JMP LA627
LAB49 RTS
???
ROR $B3,x
AXS ($BD,x)
DCM ($79),y
???
LDX $F5
RRA $FC83,y
BCS LAB6A
SKW $1F0C
RRA $CA
SKW $53DE
SAX #$C1
ADC $6414,x
BVS LABB5
ADC $EAB7,x
EOR ($7A),y
ADC $3063,x
DEY
ROR $927E,x
SKB $99
NOP
ROR $CC4C,x
STA ($C7),y
RRA $AAAA,x
TAX
ASO ($81),y
BRK
BRK
BRK
BRK
SKB $8A
STA $8CA7
DEC $D7,x
CMP $20,x
DEC $A9B6,x
BRK
LDX #$0A
STX $03
STA $04
STX $05
STA $06
STA $5A
STA $5B
JSR $0479
BEQ LAC0D
JSR L8E3E
LDA $08
BEQ LABB6
LDA $14
LDX $15
STA $03
STX $04
LABB6 JSR $0479
BEQ LAC0D
JSR L9491
JSR L8E3E
LDA $08
BEQ LABD5
LDA $14
LDX $15
STA $05
STX $06
BNE LABD5
TAX
BNE LABD5
LABD2 JMP L991C ; Illegal Quantity error
LABD5 JSR $0479
BEQ LAC0D
JSR L9491
JSR L8E3E
LDA $14
LDX $15
STA $5A
STX $5B
JSR L8A3D
LDA $5F
LDX $60
STA $58
STX $59
LDA $03
LDX $04
STA $14
STX $15
JSR L8A3D
LDA $60
SEC
SBC $59
BCC LABD2
BNE LAC0D
LDA $5F
SBC $58
BCC LABD2
LAC0D JSR L8AF1
LAC10 JSR LAD86
JSR LAD86
BNE LAC55
JSR LAD59
LAC1B JSR LAD86
JSR LAD86
BNE LAC26
JMP LAEB3
LAC26 JSR LAD86
STA $14
INY
JSR $04A5
SEC
SBC $5B
BCC LAC4D
BNE LAC3C
LDA $14
SBC $5A
BCC LAC4D
LAC3C LDA $62
STA ($3B),y
DEY
LDA $63
STA ($3B),y
JSR LAD86
JSR LAD73
BEQ LAC1B
LAC4D JSR LAD86
JSR LAD80
BEQ LAC1B
LAC55 JSR LAD86
JSR LAD86
LAC5B JSR LAD86
LAC5E CMP #$22
BNE LAC6D
LAC62 JSR LAD86
BEQ LAC10
CMP #$22
BNE LAC62
BEQ LAC5B
LAC6D TAX
BEQ LAC10
BPL LAC5B
LDX #$08
LAC74 CMP $AB86,x
BEQ LAC89
DEX
BNE LAC74
CMP #$CB
BNE LAC5B
JSR $0473
BEQ LAC10
CMP #$A4
BNE LAC5B
LAC89 LDA $3B
STA $0259
LDA $3C
STA $025A
JSR $0473
BCS LAC5E
JSR L8E3E
JSR LACEE
LDA $0259
STA $3B
LDA $025A
STA $3C
LDY #$00
LDX #$00
LACAC LDA $0101,x
BEQ LACCD
PHA
JSR $0473
BCC LACC5
JSR LAD42
INC $6C
JSR LADBB
INC $2D
BNE LACC5
INC $2E
LACC5 PLA
LDY #$00
STA ($3B),y
INX
BNE LACAC
LACCD JSR $0473
BCS LACE7
LACD2 JSR LAD42
DEC $6C
JSR LADA2
LDA $2D
BNE LACE0
DEC $2E
LACE0 DEC $2D
JSR $0479
BCC LACD2
LACE7 CMP #$2C
BEQ LAC89
JMP LAC5E
LACEE JSR LAD59
LACF1 JSR LAD86
BNE LAD03
JSR LAD86
BNE LAD06
LDA #$FF
STA $62
STA $63
BMI LAD2D
LAD03 JSR LAD86
LAD06 JSR LAD86
STA $58
CMP $14
BNE LAD36
JSR LAD86
STA $59
CMP $15
BNE LAD3B
SEC
SBC $5B
BCC LAD25
BNE LAD2D
LDA $14
SBC $5A
BCS LAD2D
LAD25 LDA $14
STA $63
LDA $15
STA $62
LAD2D LDX #$90
SEC
JSR LA2CE
JMP LA46F
LAD36 JSR LAD86
STA $59
LAD3B JSR LAD64
BEQ LACF1
CMP $A5EA,y
RLA $2285,y
LDA $3C
STA $23
LDA $2D
STA $24
LDA $2E
STA $25
LDY #$00
STY $0B
STY $6C
RTS
LAD59 LDA $03
STA $63
LDA $04
STA $62
JMP L8AF1
LAD64 LDA $59
SEC
SBC $5B
BCC LAD80
BNE LAD73
LDA $58
SBC $5A
BCC LAD80
LAD73 LDA $63
CLC
ADC $05
STA $63
LDA $62
ADC $06
STA $62
LAD80 JSR LAD86
BNE LAD80
RTS
LAD86 LDY #$00
INC $3B
BNE LAD8E
INC $3C
LAD8E JMP $04A5
LAD91 LDA $22
CMP $24
BNE LAD9B
LDA $23
CMP $25
LAD9B RTS
LAD9C INC $22
BNE LADA2
INC $23
LADA2 LDY $0B
INY
JSR $04B0
LDY $6C
INY
STA ($22),y
JSR LAD91
BNE LAD9C
RTS
LADB3 LDA $24
BNE LADB9
DEC $25
LADB9 DEC $24
LADBB LDY $0B
JSR $04BB
LDY $6C
STA ($24),y
JSR LAD91
BNE LADB3
RTS
LDA #$80
STA $10
JSR L8E7C
LDA #$81
STA $02
JSR L8871
BEQ LADE2
LDY #$12
JSR L8905
JSR LA760
LADE2 JSR LA769
JSR L8DBE
TYA
LDY #$11
CLC
ADC $3B
STA ($7C),y
LDA $3C
ADC #$00
DEY
STA ($7C),y
LDA $3A
DEY
STA ($7C),y
LDA $39
DEY
STA ($7C),y
LDA #$A4
JSR L9493
JSR L9317
JSR L9314
LDA $66
ORA #$7F
AND $62
STA $62
LDX #$04
LDY #$0D
LAE18 LDA $61,x
STA ($7C),y
DEX
DEY
BPL LAE18
LDA #$F0
LDY #$9F
JSR LA221
JSR $0479
CMP #$A9
BNE LAE34
JSR $0473
JSR L9314
LAE34 JSR LA2B0
PHA
JSR LA2A0
PLA
LDY #$08
LDX #$05
LAE40 STA ($7C),y
LDA $60,x
DEY
DEX
BPL LAE40
LDA $4A
STA ($7C),y
LDA $49
DEY
STA ($7C),y
LDA #$81
DEY
STA ($7C),y
RTS
LAE57 JMP L94A1
DELETE
LAE5A JSR LB6DE
JSR $0479
BEQ LAE57
JSR LAECA
LDA $5F
LDX $60
STA $24
STX $25
JSR L8A3D
BCC LAE87
LDY #$01
JSR $04D1
DEY
TAX
BNE LAE80
JSR $04D1
BEQ LAE87
LAE80 JSR $04D1
STA $5F
STX $60
LAE87 LDA $24
SEC
SBC $5F
TAX
LDA $25
SBC $60
TAY
BCS LAEB3
TXA
CLC
ADC $2D
STA $2D
TYA
ADC $2E
STA $2E
LDY #$00
LAEA1 JSR $04D1
STA ($24),y
INY
BNE LAEA1
INC $60
INC $25
LDA $2E
CMP $25
BCS LAEA1
LAEB3 JSR L8818
LDA $22
LDX $23
CLC
ADC #$02
STA $2D
BCC LAEC2
INX
LAEC2 STX $2E
JSR L8A93
JMP L867E
LAECA BEQ LAED2
BCC LAED2
CMP #$AB
BNE LAEF4
LAED2 JSR L8E3E
JSR L8A3D
JSR $0479
BEQ LAEE9
CMP #$AB
BNE LAEF4
JSR $0473
JSR L8E3E
BNE LAEF4
LAEE9 LDA $08
BNE LAEF3
LDA #$FF
STA $14
STA $15
LAEF3 RTS ; DELETE end
LAEF4 JMP L94A1
LAEF7 LDX #$FF
STX $02E0
JSR $0473
JSR L932C
JSR L931A
LDA $64
PHA
LDA $65
PHA
LDY #$02
LAF0D JSR $04DC
DEY
STA $003D,y
BNE LAF0D
JSR $04DC
STA $02DF
TAY
BEQ LAF2A
LAF1F DEY
JSR L8171
CMP #$23
BEQ LAF2D
TYA
BNE LAF1F
LAF2A JMP L94A1
LAF2D LDA #$3B
LAF2F JSR L9493
STY $76
STY $02CD
JSR L932C
BIT $0D
BPL LAF77
JSR LB170
JSR LB2B7
LDX $02D5
BEQ LAF5E
LDX #$00
SEC
LDA $02DB
SBC $77
BCC LAF5E
LDX #$3D
CPX $02D5
BNE LAF5D
LSR
ADC #$00
LAF5D TAX
LAF5E LDY #$00
LAF60 TXA
BEQ LAF68
DEX
LAF64 LDA #$20
BNE LAF70
LAF68 CPY $77
BCS LAF64
JSR $04B0
INY
LAF70 JSR LB2B0
BNE LAF60
BEQ LAF9B
LAF77 JSR LA46F
LDY #$FF
LAF7C INY
LDA $0100,y
BNE LAF7C
TYA
JSR L9B5C
LDY #$00
LAF88 LDA $0100,y
BEQ LAF92
STA ($62),y
INY
BNE LAF88
LAF92 JSR L9BB0
JSR LB170
JSR LAFBB
LAF9B JSR $0479
CMP #$2C
BEQ LAF2F
SEC
ROR $76
JSR LB2B7
PLA
TAY
PLA
JSR L9C52
JSR $0479
CMP #$3B
BEQ LAFB8
JMP L903E
LAFB8 JMP $0473
LAFBB LDA $04E7
STA $02DD
LDA #$FF
LAFC3 STA $02DC
JMP LAFCB
LAFC9 STX $82
LAFCB CPY $77
BEQ LB002
LDA $0100,y
INY
CMP #$20
BEQ LAFCB
CMP #$2D
BEQ LAFC3
CMP #$2E
BEQ LAFC9
CMP #$45
BEQ LAFF4
STA $0100,x
STX $02CE
INX
BIT $82
BPL LAFCB
INC $02D4
JMP LAFCB
LAFF4 LDA $0100,y
CMP #$2D
BNE LAFFE
ROR $02D2
LAFFE INY
STY $02D3
LB002 LDA $82
BPL LB008
STX $82
LB008 JSR LB2B7
LDA $02D6
CMP #$FF
BEQ LB03B
LDA $02D9
BEQ LB056
LDA $02D3
BNE LB02E
LDX $02CE
JSR LB145
DEC $0102,x
INX
STX $02D3
JSR LB1CC
BEQ LB053
LB02E LDY $02D8
BNE LB04A
LDY $02DC
BMI LB04A
LDA $02D6
LB03B BEQ LB0A7
DEC $02D6
BNE LB047
LDA $02D7
BEQ LB0A7
LB047 INC $02D1
LB04A JSR LB0BF
JSR LB18A
JSR LB0BF
LB053 JMP LB1ED
LB056 LDY $02D3
BEQ LB071
STA $77
SEC
ROR $02DA
LDY $82
LDA $02D2
BPL LB06E
JSR LB0F8
JMP LB07A
LB06E JSR LB0D9
LB071 LDY $82
BEQ LB07A
JSR LB1D0
BEQ LB080
LB07A JSR LB18A
JMP LB083
LB080 DEC $02D4
LB083 SEC
LDA $02D6
SBC $02D4
BCC LB0A7
STA $02D1
LDY $02D8
BNE LB0AF
LDY $02DC
BMI LB0AF
TAY
BEQ LB0A7
DEY
BNE LB0B2
LDA $02D7
ORA $02D4
BNE LB053
LB0A7 LDA #$2A
LB0A9 JSR LB2B0
BNE LB0A9
RTS
LB0AF TAY
BEQ LB053
LB0B2 LDA $02D4
BNE LB053
DEC $02D1
INC $76
JMP LB053
LB0BF SEC
LDA $02D6
SBC $02D4
BEQ LB101
LDY $82
BCC LB0E2
STA $77
LB0CE CPY $02CE
BEQ LB0D5
BCS LB0D6
LB0D5 INY
LB0D6 INC $02D4
LB0D9 JSR LB10E
DEC $77
BNE LB0CE
BEQ LB0FF
LB0E2 EOR #$FF
ADC #$01
STA $77
LB0E8 CPY $02CD
BEQ LB0F4
DEY
DEC $02D4
JMP LB0F6
LB0F4 INC $76
LB0F6 LDA #$80
LB0F8 JSR LB110
DEC $77
BNE LB0E8
LB0FF STY $82
LB101 RTS
LB102 BNE LB13D
EOR #$09
STA $0100,x
DEX
CPX $02D3
RTS
LB10E LDA #$00
LB110 LDX $02D3
INX
BIT $02DA
BMI LB129
EOR $02D2
BEQ LB129
LB11E JSR LB153
JSR LB102
BCS LB11E
JMP L9FB2
LB129 LDA $0100,x
DEC $0100,x
CMP #$30
JSR LB102
BCS LB129
BIT $02DA
BPL LB140
STY $82
LB13D PLA
PLA
RTS
LB140 LDA $02D2
EOR #$80
LB145 STA $02D2
LDA #$30
STA $0101,x
LDA #$31
STA $0102,x
RTS
LB153 LDA $0100,x
INC $0100,x
CMP #$39
RTS
LB15C CLC
INY
BEQ LB165
CPY $02DF
BCC LB169
LB165 LDY $76
BNE LB13D
LB169 JSR L8171
INC $02DB
RTS
LB170 JSR L9C4E
STA $77
LDX #$0A
LDA #$00
LB179 STA $02D1,x
DEX
BPL LB179
STX $02D0
STX $82
STX $02CF
TAX
TAY
RTS
LB18A CLC
LDA $82
ADC $02D7
BCS LB1CB
SEC
SBC $76
BCC LB1CB
CMP $02CE
BEQ LB19E
BCS LB1CB
LB19E CMP $02CD
BCC LB1CB
TAX
LDA $0100,x
CMP #$35
BCC LB1CB
LB1AB CPX $02CD
BEQ LB1BA
DEX
JSR LB153
STX $02CE
BEQ LB1AB
RTS
LB1BA LDA #$31
STA $0100,x
INX
STX $82
DEC $76
BPL LB1CB
INC $76
INC $02D4
LB1CB RTS
LB1CC LDY $82
BEQ LB1E7
LB1D0 LDY $02CD
LB1D3 LDA $0100,y
CMP #$30
RTS
LB1D9 INC $82
JSR LB10E
INC $02CD
CPY $02CE
BEQ LB1CB
INY
LB1E7 JSR LB1D3
BEQ LB1D9
RTS
LB1ED LDA $02CF
BMI LB1F4
INC $76
LB1F4 LDX $02CD
DEX
LDY $02DE
LB1FB JSR L8171
INY
CMP #$2C
BNE LB214
BIT $02D0
BMI LB20E
LDA $04E8
JMP LB276
LB20E LDA $02DD
JMP LB276
LB214 CMP #$2E
BNE LB21E
LDA $04E9
JMP LB276
LB21E CMP #$2B
BEQ LB25D
CMP #$2D
BEQ LB258
CMP #$5E
BNE LB28D
LDA #$45
JSR LB2B0
LDY $02D3
JSR LB1D3
BNE LB23D
INY
JSR LB1D3
BEQ LB244
LB23D LDA #$2D
BIT $02D2
BMI LB246
LB244 LDA #$2B
LB246 JSR LB2B0
LDX $02D3
LDA $0100,x
JSR LB2B0
LDY $02E0
JMP LB26C
LB258 LDA $02DC
BMI LB20E
LB25D LDA $02DC
JMP LB276
LB263 LDA $76
BNE LB27C
CPX $02CE
BEQ LB271
LB26C INX
LDA $0100,x
BIT $30A9
LB273 LSR $02D0
LB276 JSR LB2B0
BNE LB1FB
RTS
LB27C DEC $76
LDA $02CF
BMI LB271
SEC
ROR $02CF
LDA $04EA
JMP LB273
LB28D LDA $02D1
BEQ LB263
DEC $02D1
LB295 BEQ LB29A
JMP LB20E
LB29A LDA $02D8
BMI LB295
LB29F JSR L8171
CMP #$2C
BNE LB258
LDA $02DD
JSR LB2B0
INY
JMP LB29F
LB2B0 JSR L90B2
DEC $02DB
RTS
LB2B7 LDY $02E0
LB2BA JSR LB15C
JSR LB36C
BNE LB2D6
STY $02DE
BCC LB2E1
TAX
LB2C8 JSR LB15C
BCS LB2D2
JSR LB374
BEQ LB2DC
LB2D2 LDY $02DE
TXA
LB2D6 JSR L90B2
JMP LB2BA
LB2DC BCS LB2C8
LDY $02DE
LB2E1 LDX $76
BNE LB35F
STX $02DB
DEY
LB2E9 DEC $02DB
LB2EC JSR LB15C
BCS LB365
CMP #$2C
BEQ LB2EC
JSR LB343
BCC LB2E9
CMP #$2E
BNE LB306
INX
CPX #$02
BCC LB2EC
LB303 JMP L94A1
LB306 JSR LB378
BNE LB316
BCC LB310
STA $02D5
LB310 INC $02D6,x
JMP LB2EC
LB316 CMP #$24
BNE LB329
BIT $02CF
BPL LB310
CLC
ROR $02CF
DEC $02D6
JMP LB310
LB329 CMP #$5E
BNE LB343
LDX #$02
LB32F JSR LB15C
BCS LB303
CMP #$5E
BNE LB303
DEX
BPL LB32F
INC $02D9
JSR LB15C
BCS LB365
LB343 CMP #$2B
BNE LB360
LDA $02DC
BPL LB351
LDA #$2B
STA $02DC
LB351 LDA $02D8
BNE LB303
ROR $02D8
STY $02E0
INC $02DB
LB35F RTS
LB360 CMP #$2D
BEQ LB351
SEC
LB365 STY $02E0
DEC $02E0
RTS
LB36C CMP #$2B
BEQ LB385
CMP #$2D
BEQ LB385
LB374 CMP #$2E
BEQ LB385
LB378 CMP #$3D
BEQ LB385
CMP #$3E
BEQ LB385
CMP #$23
BNE LB385
CLC
LB385 RTS
LB386 LDA $64
STA $04EB
LDA $65
STA $04EC
JSR L932C
JSR L931A
LDA $64
STA $04ED
LDA $65
STA $04EE
LDX #$01
STX $65
JSR $0479
CMP #$29
BEQ LB3AE
JSR L9DD8
LB3AE JSR L948B
LDX $65
BNE LB3B8
JMP L991C ; Illegal Quantity error
LB3B8 DEX
STX $61
LDX #$03
LB3BD LDA $04EB,x
STA $57,x
DEX
BPL LB3BD
LDY #$02
LB3C7 JSR L8175
STA $005B,y
JSR L8179
STA $005E,y
DEY
BPL LB3C7
LDA $5E
BEQ LB411
LB3DA LDA #$00
STA $62
CLC
LDA $5E
ADC $61
BCS LB411
CMP $5B
BCC LB3EB
BNE LB411
LB3EB LDY $62
CPY $5E
BEQ LB40C
TYA
CLC
ADC $61
TAY
JSR L8169
STA $78
LDY $62
JSR L816D
CMP $78
BEQ LB408
INC $61
BNE LB3DA
LB408 INC $62
BNE LB3EB
LB40C INC $61
LDA $61
BIT $00A9
PHA
LDA $04ED
LDY $04EE
JSR L9C52
LDA $04EB
LDY $04EC
JSR L9C52
PLA
TAY
JMP L9A81
JSR L9A86
JSR $0479
BEQ LB43A
JSR L9DE1
STY $04F2
BIT $FFA9
STA $04F3
RTS
JSR L9A86
LDX $04F1
INX
BEQ LB4B9
JSR $0479
BEQ LB495
BCC LB48A
CMP #$82
BNE LB4B6
JSR LB495
LDY #$00
JSR $04A5
BNE LB484
INY
JSR $04A5
BNE LB46D
INY
JSR $04A5
BNE LB46D
JMP L867E
LB46D LDY #$03
JSR $04A5
STA $39
INY
JSR $04A5
STA $3A
TYA
CLC
ADC $3B
STA $3B
BCC LB484
INC $3C
LB484 JSR $0473
JMP L8DB0
LB48A JSR L9DE1
STA $15
JSR LB4A4
JMP L8D69
LB495 LDX #$01
LB497 LDA $04F0,x
STA $39,x
LDA $04F5,x
STA $3B,x
DEX
BPL LB497
LB4A4 LDX #$FF
STX $04EF
STX $04F0
STX $04F1
LDX $04F4
STX $04F3
RTS
LB4B6 JMP L94A1
LB4B9 LDX #$1F
JMP L8683 ; call error routine.
JSR L9D87
DEX
TXA
CMP #$24
BCS LB4FB
JSR L8653 ; Find the START address of error message.
LDY #$FF
LDX #$00
LB4CE INX
LB4CF INY
LDA ($24),y
BMI LB4DA
CMP #$20
BCC LB4CF
BCS LB4CE
LB4DA TXA
JSR L9B5C
LDX #$00
LDY #$FF
LB4E2 INY
LDA ($24),y
CMP #$20
BCC LB4E2
JSR LB4FE
PHA
AND #$7F
STA ($62),y
JSR LB4FE
INX
PLA
BPL LB4E2
JMP L9CCA
LB4FB JMP L991C ; Illegal Quantity error
LB4FE PHA
TXA
PHA
TYA
TAX
PLA
TAY
PLA
RTS
JSR L9317
LDA $14
PHA
LDA $15
PHA
JSR L9DE4
LDA #$04
JSR L9B5C
LDY #$00
LDA $15
JSR LB52D
LDA $14
JSR LB52D
PLA
STA $15
PLA
STA $14
JMP L9CCA
LB52D PHA
LSR
LSR
LSR
LSR
JSR LB536
PLA
LB536 AND #$0F
CMP #$0A
BCC LB53E
ADC #$06
LB53E ADC #$30
STA ($62),y
INY
RTS
JSR L9C48
TAY
DEY
CPY #$04
BCS LB4FB
LB54D JSR $04B0
STA $04E7,y
DEY
BPL LB54D
RTS
LB557 LDY #$01
LB559 LDA $003B,y
STA $04F8,y
LDA $0039,y
STA $04FA,y
DEY
BPL LB559
JSR $0479
BEQ LB589
CMP #$FC
BEQ LB582
CMP #$FD
BNE LB5B4
JSR LB64C
LDA $61
BNE LB589
LB57C JSR $0479
JMP LB5BA
LB582 JSR LB64C
LDA $61
BNE LB57C
LB589 LDY #$05
JSR L8905
DEY
LDA $04F9
STA ($7C),y
DEY
LDA $04F8
STA ($7C),y
DEY
LDA $04FB
STA ($7C),y
DEY
LDA $04FA
STA ($7C),y
DEY
LDA #$EB
STA ($7C),y
RTS
JSR LB614
JSR $0479
BEQ LB5BA
LB5B4 JMP L94A1
LB5B7 JSR $0473
LB5BA BEQ LB5D9
CMP #$EC
BEQ LB600
CMP #$22
BEQ LB5CE
CMP #$EB
BNE LB5B7
JSR LB5B7
JMP LB57C
LB5CE JSR $0473
BEQ LB5D9
CMP #$22
BNE LB5CE
BEQ LB5B7
LB5D9 CMP #$3A
BEQ LB5B7
BIT Running ; BASIC program running?
BPL LB625
LDY #$02
JSR $04A5
BEQ LB625
INY
JSR $04A5
STA $39
INY
JSR $04A5
STA $3A
TYA
CLC
ADC $3B
STA $3B
BCC LB5B7
INC $3C
BNE LB5B7
LB600 JMP L8DB0
BEQ LB632
CMP #$FD
BEQ LB62D
CMP #$FC
BNE LB5B4
JSR LB64C
LDA $61
BEQ LB632
LB614 LDA #$EB
STA $02
JSR L8871
BNE LB628
JSR LA769
LDY #$05
JMP LA772
LB625 LDX #$20
BIT $21A2
JMP L8683 ; call error routine.
LB62D JSR LB64C
BEQ LB614
LB632 JSR LB614
DEY
LDA ($3D),y
STA $3C
DEY
LDA ($3D),y
STA $3B
DEY
LDA ($3D),y
JSR LCD7F
LDA ($3D),y
STA $39
JMP LB557
LB64C JSR $0473
JMP L932C
LDA #$FF
BIT $00A9
STA $02EB
RTS
JSR L948E
JSR L96A5
STA $49
STY $4A
JSR L931A
JSR L9DD8
DEX
STX $77
CMP #$29
BEQ LB676
JSR L9DD8
BIT $FFA2
STX $78
JSR L948B
LDA #$B2
JSR L9493
JSR L932C
JSR L931A
LDY #$02
LB68A LDA #$49
JSR $0494
STA $005B,y
JSR $04DC
STA $005E,y
DEY
BPL LB68A
SEC
LDA $5F
SBC $77
STA $5F
BCS LB6A6
DEC $60
LB6A6 LDA $78
CMP $5E
BCC LB6AE
LDA $5E
LB6AE TAX
BEQ LB6C7
CLC
ADC $77
BCS LB6CA
CMP $5B
BCC LB6BC
BNE LB6CA
LB6BC LDY $77
LB6BE JSR L816D
STA ($5C),y
INY
DEX
BNE LB6BE
LB6C7 JMP L9C4E
LB6CA JMP L991C ; Illegal Quantity error
AUTO
LB6CD JSR LB6DE
JSR L8E3E
LDA $14
STA $73
LDA $15
STA $74
JMP L867E
LB6DE BIT Running ; BASIC program running?
BMI LB6E3
RTS
LB6E3 LDX #$22
JMP L8683 ; call error routine.
LDX $04EF
INX
BEQ LB709
LDA $04F0
LDY $04F1
STA $14
STY $15
JSR L8A3D
BCC LB709
ROR $53
JSR L903E
LDX $14
LDA $15
JSR L8B40
LB709 JMP L903E
LB70C LDX $60
TYA
CLC
ADC $5F
BCC LB715
INX
LB715 CPX $04F6
BNE LB728
CMP $04F5
BCC LB728
BEQ LB728
LSR $53
LDA #$82
JMP L90B2
LB728 RTS
BNE LB7A7
LDX #$00
LDY #$00
LB72F INX
LDA $055E,x
BEQ LB788
STA $77
STX $76
LDX #$05
LB73B LDA $CD6E,x
DEX
BNE LB743
ORA $76
LB743 JSR LFFD2
TXA
BPL LB73B
LDX #$07
LB74B LDA $0567,y
INY
PHA
STX $80
LDX #$04
LB754 CMP $B839,x
BEQ LB78D
DEX
BNE LB754
LDX $80
CPX #$08
BCC LB769
BNE LB76E
LDA #$2B
JSR LFFD2
LB769 LDA #$22
JSR LFFD2
LB76E PLA
JSR LFFD2
LDX #$09
LB774 DEC $77
BNE LB74B
CPX #$09
BCC LB781
LDA #$22
JSR LFFD2
LB781 LDA #$8D
JSR LFFD2
LDX $76
LB788 CPX #$08
BNE LB72F
RTS
LB78D LDX $80
LB78F LDA $B830,x
JSR LFFD2
DEX
CPX #$03
BCS LB78F
PLA
JSR LCD74
LDA #$29
JSR LFFD2
LDX #$08
BNE LB774
LB7A7 JSR L9D84
DEX
CPX #$08
BCC LB7B2
JMP L991C ; Illegal Quantity error
LB7B2 STX $76
JSR L9491
JSR L9C48
JSR LB7C2
BCC LB831
JMP L8681
LB7C2 STA $77
LDX #$08
JSR LB83E
STA $02CD
LDX $76
INX
JSR LB83E
STA $02CE
LDX $76
LDA $77
SEC
ORA $055F,x
BEQ LB814
BCC LB7FE
CLC
ADC $02CD
BCS LB832
CMP #$81
BCS LB832
TAX
LDY $02CD
LB7EF CPY $02CE
BEQ LB814
DEY
DEX
LDA $0567,y
STA $0567,x
BCS LB7EF
LB7FE ADC $02CE
TAX
LDY $02CE
LB805 CPY $02CD
BCS LB814
LDA $0567,y
STA $0567,x
INY
INX
BCC LB805
LB814 LDX $76
JSR LB83E
TAX
LDY $76
LDA $77
STA $055F,y
LDY #$00
LB823 JSR $04B0
DEC $77
BMI LB831
STA $0567,x
INX
INY
BNE LB823
LB831 CLC
LB832 RTS
PLP
BIT $52
PHA
LSE ($2B,x)
HLT
ORA $228D
ASO $00A9,y
CLC
LB841 DEX
BMI LB832
ADC $055F,x
BCC LB841
JSR L9D84
DEX
CPX #$03
BCS LB8B5
STX $80
JSR L9DDE
CMP #$04
BCS LB8B5
STY $7E
STA $7F
JSR L9DDE
LDX $80
CPX #$02
BNE LB868
DEX
LB868 PHA
CPY #$00
BNE LB874
CMP #$00
BNE LB874
INY
BNE LB883
LB874 TYA
PHA
LB876 JSR L8CC0
LDA $04FE,x
ORA $04FC,x
BNE LB876
PLA
TAY
LB883 TYA
EOR #$FF
CLC
ADC #$01
SEI
STA $04FC,x
PLA
EOR #$FF
ADC #$00
STA $04FE,x
LDA $7E
STA Voice1FreqLo,x
LDA $B8B8,x
TAX
LDA Voice2FreqHI,x
AND #$FC
ORA $7F
STA Voice2FreqHI,x
LDX $80
LDA $B8BA,x
ORA SoundSelector
STA SoundSelector
CLI
RTS
LB8B5 JMP L991C ; Illegal Quantity error
HLT
BRK
BPL LB8DC
RTI
JSR L9D84
CPX #$09
BCS LB8B5
STX $80
LDA SoundSelector
AND #$F0
ORA $80
STA SoundSelector
RTS
JSR LC3B6
LDX #$04
JSR LC3D9
JSR LC37B
LB8DC JSR LC3A5
CPX #$02
BCC LB8E6
JMP L991C ; Illegal Quantity error
LB8E6 TXA
LSR
ROR
STA $8B
BPL LB8F1
LDA $84
BEQ LB8F8
LB8F1 JSR LC1F3
BCS LB8F8
BNE LB8F9
LB8F8 RTS
LB8F9 JSR LA954
LDA $31
STA $22
LDA $32
STA $23
SEC
LDA $33
SBC #$03
STA $19
LDA $34
SBC #$00
STA $1A
LB911 LDX #$00
STX $89
STX $8A
LB917 LDX $02AF
BNE LB91F
DEC $02B0
LB91F DEC $02AF
JSR LC1F3
BCS LB929
BNE LB917
LB929 INC $02AF
BNE LB931
INC $02B0
LB931 JSR LC1C3
LDX $02AD
BNE LB93C
DEC $02AE
LB93C DEC $02AD
LDA $89
JSR LB99F
STA $89
CLC
LDA $02AD
ADC #$02
STA $02AD
BCC LB954
INC $02AE
LB954 LDA $8A
JSR LB99F
STA $8A
LDX $02AD
BNE LB963
DEC $02AE
LB963 DEC $02AD
INC $02AF
BNE LB96E
INC $02B0
LB96E JSR LC1F3
BCS LB975
BNE LB931
LB975 LDX #$03
LDY #$00
LDA $23
CMP $32
BNE LB985
LDA $22
CMP $31
BEQ LB99C
LB985 LDA $22
BNE LB98B
DEC $23
LB98B DEC $22
JSR $04B0
STA $02AD,x
DEX
BPL LB985
JSR L8CC0
JMP LB911
LB99C JMP LC37B
LB99F PHA
JSR LC1F3
BCS LB9D0
BEQ LB9D0
PLA
BNE LB9D3
TAX
TAY
LDA $23
CMP $1A
BCC LB9BD
BNE LB9BA
LDA $22
CMP $19
BCC LB9BD
LB9BA JMP L8681
LB9BD LDA $02AD,x
STA ($22),y
INC $22
BNE LB9C8
INC $23
LB9C8 INX
CPX #$04
BNE LB9BD
LDA #$80
RTS
LB9D0 PLA
LDA #$00
LB9D3 RTS
LB9D4 JSR LC3B9
JSR L9DD8
CPX #$28
BCS LB9E8
STX $02DA
JSR L9DD8
CPX #$19
BCC LB9EB
LB9E8 JMP L991C ; Illegal Quantity error
LB9EB STX $02DB
JSR L9491
JSR L9C48
STA $02EA
TYA
PHA
TXA
PHA
JSR LC3A5
TXA
ROR
ROR $02B9
PLA
STA $22
PLA
STA $23
LDA $83
BNE LBA28
LDX $02DB
LDY $02DA
CLC
JSR LFFF0
LDY #$00
LBA19 CPY $02EA
BEQ LBA27
JSR $04B0
JSR LFF4C
INY
BNE LBA19
LBA27 RTS
LBA28 JSR LC7BF
LDA $86
PHA
LDA $84
PHA
BIT $83
BPL LBA44
PLA
BEQ LBA4A
LSR
BEQ LBA4A
LDX $85
BCC LBA4C
LDX Colour1
BCS LBA4C
LBA44 LDX Colour0
PLA
BEQ LBA4C
LBA4A LDX $86
LBA4C STX $86
LDX $02DB
LDY #$00
STY $02DC
LBA56 LDY $02DC
INC $02DC
JSR $04B0
DEC $02EA
BMI LBA7B
LDY $02DA
JSR LBA7F
INC $02DA
CPY #$27
BCC LBA56
LDY #$00
STY $02DA
INX
CPX #$18
BCC LBA56
LBA7B PLA
STA $86
RTS
LBA7F PHA
JSR LC21A
JSR LC291
LDA #$00
STA $7E
PLA
PHA
ASL
ROL $7E
ASL
ASL
ROL $7E
STA $24
LDA $7E
ADC $02E4
STA $25
TYA
PHA
LDY #$07
LBAA0 LDA $02B9
ASL
LDA ($24),y
BCC LBAAA
EOR #$FF
LBAAA BIT $83
BPL LBAD9
AND #$AA
STA $7E
LDA $84
BNE LBAC5
LDA $7E
BCS LBAC1
LSR
EOR $7E
EOR #$AA
BNE LBAD9
LBAC1 ORA #$55
BNE LBAD9
LBAC5 CMP #$02
BNE LBACD
LDA $7E
BCS LBAD9
LBACD BCC LBAD6
LDA $7E
LSR
EOR $7E
BCC LBAD9
LBAD6 LDA $7E
LSR
LBAD9 STA ($8C),y
DEY
BPL LBAA0
PLA
TAY
PLA
RTS
JSR LC3B6
LDX #$1F
JSR LC3F4
LDX #$2B
JSR LC3D9
JSR LC38F
STY $02D0
STA $02D1
JSR LC3A5
CPX #$02
BCC LBB02
JMP L991C ; Illegal Quantity error
LBB02 STX $02E8
TXA
PHA
JSR LBBB4
PLA
BNE LBB29
BEQ LBB12
LBB0F JSR LBC36
LBB12 JSR LC0DA
LDA $02CA
BNE LBB0F
LBB1A LDX #$04
LBB1C LDA $02D7,x
STA $02AC,x
DEX
BNE LBB1C
STX $02E8
RTS
LBB29 LDX #$00
LDA $02C5
LSR
BCC LBB33
LDX #$02
LBB33 LDA $02DC,x
STA $02D6
LDA $02DD,x
STA $02D7
LDA #$00
LDX #$03
LBB43 STA $02D2,x
DEX
BPL LBB43
LBB49 LDX #$07
LBB4B LDA $02AD,x
PHA
DEX
BPL LBB4B
JSR LC0DA
LDX #$00
LBB57 PLA
STA $02AD,x
INX
CPX #$08
BNE LBB57
LBB60 LDA $02D6
BNE LBB6A
DEC $02D7
BMI LBB1A
LBB6A DEC $02D6
LDX #$25
LDY #$1B
LDA $02C5
LSR
BCC LBB79
LDY #$19
LBB79 LDA #$00
LBB7B LSR
PHA
JSR LC2F6
STA $02AD,x
TYA
STA $02AE,x
PLA
BCC LBB8C
ORA #$A0
LBB8C INX
INX
LDY #$19
LSR $02C5
BCC LBB97
LDY #$1B
LBB97 ROL $02C5
CPX #$27
BEQ LBB7B
LDX #$06
ASL
BEQ LBB60
LBBA3 BCC LBBAD
INC $02AD,x
BNE LBBAD
INC $02AE,x
LBBAD ASL
DEX
DEX
BPL LBBA3
BMI LBB49
LBBB4 LDY #$23
JSR LBC56
LDX #$1F
LDY #$2B
LBBBD TYA
PHA
JSR LC322
STA $02B1,x
STA $02B5,x
STA $02BD,x
TYA
STA $02B2,x
STA $02B6,x
STA $02BE,x
PLA
TAY
JSR LC2F6
STA $02AD,x
TYA
STA $02AE,x
LDY #$2D
INX
INX
CPX #$21
BEQ LBBBD
LDA #$90
JSR LBCD5
LDA $02C5
AND #$03
STA $02C5
TAX
LDA $BC18,x
JSR LBC36
JSR LC37B
LDA $02CA
JSR LBC36
LDX $02C5
LDA $BC18,x
AND #$F0
STA $02CB
LDA $BC1C,x
STA $02CA
RTS
LDX $41E4,y
ASO $1B41,y
LDX $46E4,y
HLT
EOR $44
JSR $0D42
SKB $45
HLT
HLT
EOR $5220,y
ORA $494D
ALR #$45
JSR $0D49
LBC36 JSR LBD05
LDX #$04
LBC3B LDA $02AE,x
ASL
ROR $02AE,x
ROR $02AD,x
BCC LBC4F
INC $02AD,x
BNE LBC4F
INC $02AE,x
LBC4F INX
INX
CPX #$06
BEQ LBC3B
RTS
LBC56 JSR LC318
LBC59 LDX #$00
LBC5B INX
SEC
SBC #$5A
BCS LBC5B
DEY
BPL LBC5B
STX $02C5
PHA
ADC #$5A
JSR LBC76
PLA
CLC
EOR #$FF
ADC #$01
DEC $02C5
LBC76 LDX #$FF
LBC78 INX
SEC
SBC #$0A
BCS LBC78
ADC #$0A
STA $8E
TXA
ASL
TAX
LDA $C4B4,x
LDY $C4B3,x
LBC8B CLC
DEC $8E
BMI LBC9C
ADC $C4C8,x
PHA
TYA
ADC $C4C7,x
TAY
PLA
BCC LBC8B
LBC9C PHA
LDX #$00
LDA $02C5
LSR
BCS LBCA7
LDX #$02
LBCA7 PLA
STA $02C6,x
TYA
STA $02C7,x
RTS
LBCB0 LDY #$19
BCC LBCB6
LDY #$1B
LBCB6 LDA $02C5
ADC #$02
LSR
LSR
PHP
JSR LC318
CPY #$FF
BCC LBCCC
TXA
TAY
JSR LC318
BCS LBCCF
LBCCC JSR LC337
LBCCF PLP
BCS LBCED
JMP LC327
LBCD5 STA $02CA
LDX #$23
LBCDA ASL $02CA
JSR LBCB0
STA $02AD,x
TYA
STA $02AE,x
INX
INX
CPX #$2B
BCC LBCDA
LBCED RTS
LBCEE LDY #$2B
LBCF0 JSR LBC56
LDX #$07
LBCF5 LDA $02DC,x
STA $02D0,x
DEX
BPL LBCF5
LDA #$50
JSR LBCD5
LDA #$10
LBD05 STA $02CA
LDY #$1F
LDX #$23
LBD0C ASL $02CB
ROL $02CA
JSR LC2F4
INX
INX
ASL $02CB
ROL $02CA
JSR LC2F0
PHA
TYA
PHA
LDY #$21
INX
INX
CPX #$27
BEQ LBD0C
LDX #$03
LBD2D PLA
STA $02B1,x
DEX
BPL LBD2D
RTS
JSR LC7BF
JSR L9C48
STA $02CF
STX $24
STY $25
LDX #$04
JSR LC3D9
JSR LC3A5
CPX #$05
BCC LBD51
JMP L991C ; Illegal Quantity error
LBD51 STX $02D0
LDX #$03
LDY $02CF
CPY #$05
BCS LBD5E
RTS
LBD5E DEY
JSR $04BB
STA $02D5,x
DEX
BPL LBD5E
STX $02D1
JSR LC37B
LDA $02D5
STA $02D9
LDA $02D6
STA $02DA
LBD7A LDA #$08
STA $02E5
INC $02D1
LDY $02D1
JSR $04BB
STA $02D3
LBD8B JSR LC1F3
STA $02D2
ASL $02D3
ROL
DEC $02E5
BIT $83
BPL LBDA3
ASL $02D3
ROL
DEC $02E5
LBDA3 LDX $02D0
CPX #$03
BCC LBDB6
BEQ LBDB1
EOR $02D2
BCS LBDC2
LBDB1 AND $02D2
BCS LBDC2
LBDB6 CPX #$01
BCC LBDC2
BEQ LBDC0
ORA $02D2
BIT $FF49
LBDC2 AND #$03
BIT $83
BMI LBDCA
AND #$01
LBDCA STA $84
JSR LC1C3
INC $02AD
BNE LBDD7
INC $02AE
LBDD7 SEC
LDA $02D9
BIT $83
BPL LBDE2
SBC #$02
BIT $01E9
STA $02D9
LDA $02DA
SBC #$00
STA $02DA
BCS LBE1E
LDX #$01
LBDF3 LDA $02D5,x
STA $02D9,x
LDA $02B1,x
STA $02AD,x
DEX
BPL LBDF3
INC $02AF
BNE LBE0A
INC $02B0
LBE0A SEC
LDA $02D7
SBC #$01
STA $02D7
LDA $02D8
SBC #$00
STA $02D8
BCS LBE26
RTS
LBE1E LDA $02E5
BEQ LBE26
JMP LBD8B
LBE26 JMP LBD7A
JSR LC7BF
JSR L96A5
STA $02DB
STY $02DC
BIT $0D
BMI LBE3C
JMP L9324
LBE3C LDX #$28
JSR LC3F4
LDX #$04
JSR LC3D9
LDX #$2A
LDY #$06
LDA #$02
STA $8E
LBE4E JSR LC322
TAX
TYA
PHA
LDY $8E
JSR LC382
BCC LBE67
LDA $02D5,y
STA $02AD,y
LDA $02D6,y
STA $02AE,y
LBE67 TXA
STA $02D5,y
STA $02DE,y
PLA
STA $02D6,y
STA $02DF,y
LDX #$28
LDY #$04
DEC $8E
DEC $8E
BEQ LBE4E
LDY #$FF
STY $02D1
LDA $02AD
STA $02D9
LDA $02AE
STA $02DA
TYA
JSR L9B5C
LBE94 JSR LC264
LDA ($8C),y
BCC LBEA9
LDA $02AD
BIT $83
BPL LBEA4
SEC
ROL
LBEA4 AND #$07
TAX
LDA #$00
LBEA9 BIT $83
BPL LBEAE
DEX
LBEAE STX $02DD
LBEB1 ASL
DEX
BPL LBEB1
ROR
STA $8E
LDA #$08
BIT $83
BPL LBEBF
LSR
LBEBF CLC
ADC $02AD
STA $02AD
BCC LBECB
INC $02AE
LBECB JSR LC264
LDA #$00
BCS LBED4
LDA ($8C),y
LBED4 STA $8F
LDX $02DD
LBED9 LSR
INX
CPX #$08
BNE LBED9
ORA $8E
INC $02D1
LDY $02D1
CPY #$FC
BCC LBEEE
JMP LCC4C
LBEEE STA ($62),y
LDX $02DD
LDA $02D5
SEC
BIT $83
BPL LBEFE
SBC #$04
BIT $08E9
STA $02D5
LDA $8F
BCS LBEB1
DEC $02D6
BPL LBEB1
LDX $02D7
BNE LBF53
DEC $02D8
BPL LBF53
BIT $83
BPL LBF20
ASL $02DE
ROL $02DF
LBF20 LDX #$00
LBF22 LDA $02DE,x
INY
STA ($62),y
INX
CPX #$04
BNE LBF22
INY
STY $02DE
LDA $62
STA $02DF
LDA $63
STA $02E0
LDA #$DE
STA $64
LDA #$02
STA $65
LDA $02DB
STA $49
LDA $02DC
STA $4A
JSR L8F40
JMP LC37B
LBF53 DEC $02D7
INC $02AF
BNE LBF5E
INC $02B0
LBF5E LDA $02D9
STA $02AD
LDA $02DA
STA $02AE
LDA $02DE
STA $02D5
LDA $02DF
STA $02D6
JMP LBE94
LDA $83
CLC
ROL
ROL
ROL
ADC #$00
TAY
JMP L9A81
SEC
BIT $18
PHP
JSR L9D87
LDA Colour4
AND #$7F
CPX #$04
BEQ LBFAE
BCS LBFBE
LDA Colour0
AND #$7F
DEX
BMI LBFAE
LDA $86
DEX
BMI LBFAE
LDA $85
DEX
BMI LBFAE
LDA Colour1
AND #$7F
LBFAE PLP
BCS LBFB6
LSR
LSR
LSR
LSR
CLC
LBFB6 ADC #$00
AND #$0F
TAY
JMP L9A81
LBFBE JMP L991C ; Illegal Quantity error
JSR L9D87
DEX
CPX #$02
BCS LBFBE
LDA $BFFB,x
TAX
SEI
LBFCE STX KeyboardLatch
LDA KeyboardLatch
STX KeyboardLatch
CMP KeyboardLatch
BNE LBFCE
CLI
EOR #$FF
TAY
AND #$0F
TAX
LDA $BFF0,x
CPY #$0F
BCC LBFEC
ORA #$80
LBFEC TAY
JMP L9A81
BRK
ORA ($05,x)
BRK
ASO $08
ASL DIRECTION
ASO ($02,x)
SKB $FA
ORA $8720,x
STA $02E0,x
BCC LC011
BNE LBFBE
JSR LC1F3
TAY
BCC LC00E
LDY #$00
LC00E JMP L9A81
LC011 TXA
ASL
TAX
LDA $02AD,x
TAY
LDA $02AE,x
JMP L9471
JSR LC3B6
LDX #$1F
JSR LC3D9
JSR LC38F
STY $02D0
STA $02D1
JSR LC38F
STY $02D2
STA $02D3
PHP
LDX #$23
JSR LC2D3
PLP
BCS LC052
LDA $02D0
STA $02D2
LDA $02D1
BIT $83
BPL LC052
ASL $02D2
ROL
LC052 STA $02D3
JSR LC38F
STY $02D8
STA $02D9
JSR LC38F
STY $02DA
STA $02DB
JSR LC38F
STA $80
TYA
LDY $80
JSR LBC59
LDX #$2D
LDY #$2B
JSR LC305
BCC LC089
LDA #$68
LDY #$01
JSR LC2F9
STA $02AD,x
TYA
STA $02AE,x
LC089 LDX #$03
LC08B LDA $02D0,x
STA $02D4,x
DEX
BPL LC08B
LDA #$90
JSR LBCD5
LDX #$07
LC09B LDA $02D0,x
STA $02DC,x
DEX
BPL LC09B
JSR LBCEE
JSR LC37B
LDX #$02
JSR LC3A7
STX $E9
CLC
LC0B2 LDA $E9
BNE LC0B9
JMP L991C ; Illegal Quantity error
LC0B9 ADC $02D8
STA $02D8
BCC LC0C4
INC $02D9
LC0C4 LDX #$2D
LDY #$2B
JSR LC305
BCS LC0D5
JSR LBCEE
JSR LC0DA
BCC LC0B2
LC0D5 LDY #$2D
JSR LBCF0
LC0DA LDX #$02
LDY #$06
LC0DE LDA #$00
STA $02B9,x
STA $02BA,x
JSR LC322
BPL LC0F3
DEC $02B9,x
DEC $02BA,x
BNE LC0FE
LC0F3 CMP #$00
BNE LC0FB
CPY #$00
BEQ LC0FE
LC0FB INC $02B9,x
LC0FE STA $02B5,x
ASL
STA $02BD,x
TYA
STA $02B6,x
ROL
STA $02BE,x
DEX
DEX
LDY #$04
CPX #$00
BEQ LC0DE
LDX #$0A
LDY #$08
JSR LC305
LDA #$00
ROL
ROL
STA $02C3
EOR #$02
STA $02C4
CLC
LDA #$10
ADC $02C3
TAY
PHA
EOR #$02
TAX
JSR LC305
STA $02AD,x
TYA
STA $02AE,x
PLA
TAY
CLC
LDA #$08
ADC $02C4
TAX
JSR LC305
STA $02C1
STY $02C2
LC14F JSR LC1A5
LDY $02C4
SEC
LDA $02B5,y
SBC #$01
STA $02B5,y
BCS LC16B
LDA $02B6,y
SBC #$00
STA $02B6,y
BCS LC16B
RTS
LC16B LDX $02C3
LDA $02C2
BMI LC179
JSR LC194
LDX $02C4
LC179 CLC
LDA $02C1
ADC $02BD,x
STA $02C1
LDA $02C2
ADC $02BE,x
STA $02C2
LDX $02C4
JSR LC194
BEQ LC14F
LC194 LDY #$02
CLC
LC197 LDA $02AD,x
ADC $02B9,x
STA $02AD,x
INX
DEY
BNE LC197
RTS
LC1A5 LDA $02E8
ORA $02E7
BEQ LC1C3
INC $02AD
BNE LC1B5
INC $02AE
LC1B5 JSR LC1C3
LDX $02AD
BNE LC1C0
DEC $02AE
LC1C0 DEC $02AD
LC1C3 JSR LC2AD
BCS LC1EC
JSR LC21A
JSR LC269
STA $02E9
LDA ($8C),y
ORA $02E9
BIT $83
BPL LC1ED
PHA
LDX $84
LDA $02E9
AND $C4AF,x
STA $02E9
PLA
LC1E7 EOR $02E9
LC1EA STA ($8C),y
LC1EC RTS
LC1ED LDX $84
BNE LC1EA
BEQ LC1E7
LC1F3 JSR LC264
BCS LC219
STA $02E9
LDA ($8C),y
AND $02E9
LC200 ROL
DEX
BPL LC200
ROL
BIT $8B
BMI LC20F
AND #$03
CMP $84
CLC
RTS
LC20F CLC
AND #$03
BEQ LC217
LDX #$00
RTS
LC217 LDX #$FF
LC219 RTS
LC21A LDA $D802,x
STA $8C
LDA $D81B,x
AND #$03
PHA
ORA #$1C
STA $8D
JSR LC238
STA ($8C),y
PLA
ORA #$18
STA $8D
JSR LC24E
STA ($8C),y
LC238 LDA $86
ASL
ASL
ASL
ASL
STA $7E
LDA Colour0
BIT $83
BPL LC249
LDA $85
LC249 AND #$0F
ORA $7E
RTS
LC24E LDA $86
LSR
LSR
LSR
LSR
STA $7E
LDA Colour0
BIT $83
BPL LC25F
LDA $85
LC25F AND #$F0
ORA $7E
RTS
LC264 JSR LC2AD
BCS LC288
LC269 JSR LC291
LDA $02AF
AND #$07
TAY
LDA $02AD
BIT $83
PHP
BPL LC27B
ASL
LC27B AND #$07
TAX
LDA $C289,x
PLP
BPL LC288
INX
ORA $C289,x
LC288 RTS
SKB $40
JSR $0810
SKB $02
ORA ($98,x)
CLC
ADC $D802,x
STA $8C
LDA $D81B,x
AND #$03
ADC #$00
ASL $8C
ROL
ASL $8C
ROL
ASL $8C
ROL
ORA #$20
STA $8D
RTS
LC2AD LDA $02AE
LSR
BNE LC2D1
LDA $02AD
ROR
LSR
BIT $83
BMI LC2BD
LSR
LC2BD TAY
CPY #$28
BCS LC2D1
LDA $02B0
BNE LC2D1
LDA $02AF
LSR
LSR
LSR
TAX
CMP $88
RTS
LC2D1 SEC
RTS
LC2D3 LDA $02E6
BEQ LC2EF
LDA $87
JSR LC2DF
LDA $88
LC2DF ASL
TAY
LDA #$00
JSR LC337
STA $02AD,x
TYA
INX
STA $02AD,x
INX
LC2EF RTS
LC2F0 BCC LC2F9
BCS LC308
LC2F4 BCS LC305
LC2F6 JSR LC318
LC2F9 CLC
ADC $02AD,x
PHA
TYA
ADC $02AE,x
TAY
PLA
RTS
LC305 JSR LC318
LC308 SEC
ORA $02AD,x
STA $57
TYA
ORA $02AE,x
TAY
PHP
LDA $57
PLP
RTS
LC318 LDA $02AD,y
PHA
LDA $02AE,y
TAY
PLA
RTS
LC322 JSR LC305
LC325 BPL LC336
LC327 PHP
CLC
EOR #$FF
ADC #$01
PHA
TYA
EOR #$FF
ADC #$00
TAY
PLA
PLP
LC336 RTS
LC337 STY $8E
STA $8F
LDA $02AD,x
LDY $02AE,x
PHP
JSR LC325
STA $02AD,x
TYA
STA $02AE,x
LDA #$00
STA $02EF
LDY #$10
LC353 LSR $8E
ROR $8F
BCC LC368
CLC
ADC $02AD,x
PHA
LDA $02EF
ADC $02AE,x
STA $02EF
PLA
LC368 LSR $02EF
ROR
DEY
BNE LC353
ADC #$00
LDY $02EF
BCC LC377
INY
LC377 PLP
JMP LC325
LC37B LDY #$00
JSR LC382
LDY #$02
LC382 LDA $02B1,y
STA $02AD,y
LDA $02B2,y
STA $02AE,y
RTS
LC38F JSR $0479
BEQ LC3A0
JSR L9491
CMP #$2C
BEQ LC3A0
JSR L9DE1
SEC
RTS
LC3A0 LDA #$00
TAY
CLC
LC3A4 RTS
LC3A5 LDX #$00
LC3A7 JSR $0479
BEQ LC3A4
JSR L9491
CMP #$2C
BEQ LC3A4
JMP L9D84
LC3B6 JSR LC7BF
LC3B9 LDX #$01
JSR $0479
LC3BE BEQ LC3D3
CMP #$2C
BEQ LC3D3
JSR L9D84
CPX #$04
BCS LC3D6
CPX #$02
BIT $83
BMI LC3D3
BCS LC3D6
LC3D3 STX $84
RTS
LC3D6 JMP L991C ; Illegal Quantity error
LC3D9 JSR $0479
BEQ LC3E5
JSR L9491
CMP #$2C
BNE LC3F7
LC3E5 LDY #$00
LC3E7 LDA $02AD,y
STA $02AD,x
INX
INY
CPY #$04
BNE LC3E7
RTS
LC3F4 JSR L9491
LC3F7 STX $02F0
JSR LC48F
JSR $0479
CMP #$2C
BEQ LC45A
CMP #$3B
BEQ LC40B
JMP L94A1
LC40B JSR $0473
JSR L9DE1
STA $80
TYA
LDY $80
JSR LBC59
LDX $02F0
LDA $02AD,x
STA $02AF,x
LDA $02AE,x
STA $02B0,x
JSR LC2D3
LDA #$0E
STA $02F1
CLC
LDX $02F0
LC434 JSR LBCB0
STA $02AD,x
TYA
STA $02AE,x
LDY #$00
LSR $02F1
BCC LC447
LDY #$02
LC447 JSR LC2F4
STA $02AD,x
TYA
STA $02AE,x
INX
INX
LSR $02F1
BNE LC434
CLC
RTS
LC45A JSR $0473
INC $02F0
INC $02F0
JSR LC48F
LDX $02F0
DEX
DEX
JSR LC2D3
LDY #$02
LDX $02F0
INX
INX
LC475 DEX
DEX
LSR $02F1
BCC LC486
JSR LC2F6
STA $02AD,x
TYA
STA $02AE,x
LC486 LDY #$00
CPX $02F0
BEQ LC475
CLC
RTS
LC48F JSR $0479
CMP #$AA
BEQ LC49B
CMP #$AB
BEQ LC49B
CLC
LC49B ROL $02F1
JSR L9314
JSR L9DE8
LDX $02F0
STA $02AE,x
TYA
STA $02AD,x
RTS
INS $55AA,x
BRK
BRK
BRK
BIT $5771
STA $0080
LDY $8F
CPY $19
CMP $F0B2,x
BCC LC4C0
SKW $FFFF
SKB $72
SKB $50
SKB $0B
ASO ($A8,x)
ASO ($28,x)
HLT
BCC LC4D5
INS (IO,x)
PLP
BRK
RRA ($20,x)
LAX $20C7,y
ADC $F004,y
HLT
LDX #$01
CMP #$A4
JSR LC3BE
LC4E8 JSR $0479
CMP #$2C
BEQ LC4F4
CMP #$A4
BEQ LC4F4
RTS
LC4F4 PHA
JSR $0473
LDX #$04
JSR LC3F7
PLA
BPL LC506
JSR LC0DA
JMP LC4E8
LC506 JSR LC37B
JSR LC1A5
JMP LC4E8
JSR LC7BF
LDX #$04
JSR LC3F7
JMP LC37B
JSR L9D84
CPX #$05
BCS LC564
STX $7E
JSR L9DD8
DEX
CPX #$10
BCS LC564
STX $7F
LDX #$07
JSR LC3A7
CPX #$08
BCS LC564
TXA
ASL
ASL
ASL
ASL
ORA $7F
LDX $7E
CPX #$01
BEQ LC54A
BCS LC551
STA Colour0
BNE LC563
LC54A STA $86
STA $053B
BEQ LC563
LC551 CPX #$03
BEQ LC55B
BCS LC560
STA $85
BNE LC563
LC55B STA Colour1
BEQ LC563
LC560 STA Colour4
LC563 RTS
LC564 JMP L991C ; Illegal Quantity error
LC567 LDA $83
BNE LC570
LC56B LDA #$93
JMP LFFD2
LC570 AND #$40
BEQ LC57F
JSR LC56B
LDX #$14
LDY #$00
CLC
JSR LFFF0
LC57F LDA #$00
LDY #$20
LDX #$20
JSR LC5A7
JSR LC238
LDY #$1C
LDX #$04
JSR LC5A7
JSR LC24E
LDY #$18
LDX #$04
JSR LC5A7
LDA #$00
LDX #$03
LC5A0 STA $02AD,x
DEX
BPL LC5A0
RTS
LC5A7 STY $8D
LDY #$00
STY $8C
LC5AD STA ($8C),y
DEY
BNE LC5AD
INC $8D
DEX
BNE LC5AD
RTS
JSR L9D84
CPX #$02
BCS LC564
STX $02E6
RTS
CMP #$9C
BNE LC5D1
JSR LC738
JSR $0473
LDA #$00
BEQ LC5DB
LC5D1 JSR L9D84
CPX #$05
BCS LC5ED
LDA $C637,x
LC5DB CMP $83
BEQ LC62A
STA $83
TAX
BNE LC5F0
JSR LC7C9
LDA #$28
LDX #$19
BNE LC626
LC5ED JMP L991C ; Illegal Quantity error
LC5F0 JSR LC63C
LDA TEDREG_06
ORA #$20
STA TEDREG_06
LDA TEDREG_07
AND #$EF
BIT $83
BPL LC606
ORA #$10
LC606 STA TEDREG_07
LDA Voice1_BitMap
AND #$C3
ORA #$08
STA Voice1_BitMap
LDA ScreenAddress
AND #$03
ORA #$18
STA ScreenAddress
LDA #$28
LDX #$19
BIT $83
BPL LC626
LSR
LC626 STA $87
STX $88
LC62A JSR LC3A5
TXA
LSR
BNE LC5ED
BCC LC636
JMP LC567
LC636 RTS
BRK
JSR LA060
CPX #$A5
ADC $F0,x
ORA ($60,x)
LDA $38
CMP #$40
BCS LC67B
JSR LA954
JSR LC86B
TXA
CLC
ADC $31
TYA
ADC $32
CMP #$18
BCS LC678
DEC $75
LDA #$00
STA $22
LDA #$18
STA $23
JSR LC7F0
LDA $22
STA $33
LDA $23
STA $34
LDA #$00
STA $37
LDA #$18
STA $38
JMP LC825
LC678 JMP L8681
LC67B JSR LA954
LDY $31
STY $5F
LDA $32
CLC
ADC #$30
BCS LC678
STA $60
CMP $34
BCC LC695
BNE LC678
CPY $33
BCS LC678
LC695 DEC $75
LDA #$00
STA $4E
LDA #$30
STA $4F
JSR LC877
LDA $5F
STA $22
LDA $60
STA $23
LDX $31
STX $24
LDA $32
STA $25
SEC
SBC #$10
TAY
JSR LC7F8
CLC
LDA $32
ADC #$30
STA $32
LDA $30
ADC #$30
STA $30
LDA $2E
ADC #$30
STA $2E
LDA $2C
ADC #$30
STA $2C
LDA $42
ADC #$30
STA $42
LC6D8 JSR L8818
JSR L884B
BIT Running ; BASIC program running?
BPL LC70F
LDX #$30
BIT $75
BMI LC6EA
LDX #$D0
LC6EA TXA
CLC
ADC $3C
STA $3C
TXA
CLC
ADC $025C
STA $025C
TXA
CLC
ADC $04F6
STA $04F6
JSR LA760
LC703 LDA $3D
CMP #$B0
BNE LC710
LDA $3E
CMP #$07
BNE LC710
LC70F RTS
LC710 LDY #$00
LDA ($3D),y
CMP #$81
BNE LC726
LDY #$02
JSR LC7AD
LDY #$10
JSR LC7AD
LDA #$12
BNE LC72D
LC726 LDY #$04
JSR LC7AD
LDA #$05
LC72D CLC
ADC $3D
STA $3D
BCC LC703
INC $3E
BNE LC703
LC738 LDA $75
BNE LC73D
RTS
LC73D LDY #$00
STY $75
LDA $38
BMI LC769
JSR LA954
JSR LC86B
LDA $0533
STA $22
LDA $0534
STA $23
JSR LC7F0
LDX #$01
LC75A LDA $0533,x
STA $37,x
LDA $22,x
STA $33,x
DEX
BPL LC75A
JMP LC825
LC769 LDY #$00
STY $75
STY $22
STY $24
LDA #$10
STA $23
LDA #$40
STA $25
LC779 JSR $04BB
STA ($22),y
INY
BNE LC779
INC $23
INC $25
LDA $32
CMP $25
BCS LC779
LDA $32
SEC
SBC #$30
STA $32
LDA $2C
SBC #$30
STA $2C
LDA $2E
SBC #$30
STA $2E
LDA $30
SBC #$30
STA $30
LDA $42
SBC #$30
STA $42
JMP LC6D8
LC7AD LDA ($3D),y
BIT $75
BNE LC7B9
SEC
SBC #$30
STA ($3D),y
RTS
LC7B9 CLC
ADC #$30
STA ($3D),y
RTS
LC7BF LDA $75
BEQ LC7C4
RTS
LC7C4 LDX #$23
JMP L8683 ; call error routine.
LC7C9 LDA TEDREG_06
AND #$DF
STA TEDREG_06
LDA TEDREG_07
AND #$EF
STA TEDREG_07
LDA ScreenAddress
AND #$07
ORA #$08
STA ScreenAddress
LDA Voice1_BitMap
ORA #$04
STA Voice1_BitMap
LDA #$00
STA $83
RTS
LC7F0 LDA $37
STA $24
LDA $38
STA $25
LC7F8 TXA
EOR #$FF
STA $4E
TYA
EOR #$FF
STA $4F
LDY #$00
LC804 INC $4E
BNE LC80C
INC $4F
BEQ LC824
LC80C LDA $22
BNE LC812
DEC $23
LC812 DEC $22
LDA $24
BNE LC81A
DEC $25
LC81A DEC $24
JSR $04BB
STA ($22),y
JMP LC804
LC824 RTS
LC825 LDA $37
LDY $38
STA $22
STY $23
LC82D SEC
LDA $33
SBC $22
LDA $34
SBC $23
BCS LC824
SEC
LDA $22
SBC #$02
STA $22
BCS LC843
DEC $23
LC843 LDY #$01
LC845 JSR $04B0
STA $0024,y
DEY
BPL LC845
INY
JSR $04BB
STA $80
LDA $22
SEC
SBC $80
STA $22
BCS LC85F
DEC $23
LC85F LDY #$02
LC861 LDA $0021,y
STA ($24),y
DEY
BNE LC861
BEQ LC82D
LC86B SEC
LDA $37
SBC $33
TAX
LDA $38
SBC $34
TAY
RTS
LC877 LDA $37
STA $22
LDA $38
STA $23
LC87F SEC
LDA $33
SBC $22
LDA $34
SBC $23
BCS LC8BB
SEC
LDA $22
SBC #$02
STA $22
BCS LC895
DEC $23
LC895 CLC
LDY #$00
LC898 JSR $04B0
STA $0024,y
ADC $004E,y
STA ($22),y
INY
CPY #$01
BNE LC898
DEY
JSR $04BB
STA $80
LDA $22
SEC
SBC $80
STA $22
BCS LC87F
DEC $23
BCC LC87F
LC8BB RTS
CATALOG
DIRECTORY
LC8BC JSR LCB1F ; parse disk arguments
AND #$E6
BNE LC93E
LDY #$00
JSR LCA3F ; expand DOS command at offset Y
LDA #$00
LDX $0277
LDY #$60
JSR LFFBA
SEC
JSR LFFC0
BCC LC8E1
PHA
JSR LC935
PLA
TAX
JMP L8683 ; call error routine.
LC8E1 LDX #$00
JSR LFFC6
LDY #$03
LC8E8 STY $02EC
LC8EB JSR LFFCF
STA $02ED
JSR LFFB7
BNE LC935
JSR LFFCF
STA $02EE
JSR LFFB7
BNE LC935
DEC $02EC
BNE LC8EB
LDX $02ED
LDA $02EE
JSR LA45F
LDA #$20
JSR LFFD2
LC914 JSR LFFCF
PHA
JSR LFFB7
BNE LC934
PLA
BEQ LC926
JSR LFFD2
JMP LC914
LC926 LDA #$0D
JSR LFFD2
JSR LFFE1
BEQ LC935
LDY #$02
BNE LC8E8
LC934 PLA
LC935 JSR LFFCC
LDA #$00
CLC
JMP LFFC3
LC93E JMP L94A1 ; syntax error
; CATALOG/DIRECTORY end
DSAVE
LDA #$66
JSR LCB21 ; parse disk arguments
JSR LCCB5 ; error if status bit 0 not set
LDY #$04
JSR LCA3F ; expand DOS command at offset Y
JMP LA7E1
DLOAD
LDA #$E6
JSR LCB21 ; parse disk arguments
JSR LCCB5
LDA #$00
STA $0278
STA $0A
LDY #$05
JSR LCA3F ; expand DOS command at offset Y
JMP LA7FA
HEADER
JSR LCB1F ; parse disk arguments
JSR LCCAF
AND #$11
CMP #$11
BEQ LC977
LC974 JMP L94A1
LC977 JSR LFFE7
JSR LCD2B
BNE LC996
LDY #$09
JSR LCA3F ; expand DOS command at offset Y
JSR LCCCF
BIT Running ; BASIC program running?
BMI LC996
LDY #$00
LDA #$7A
JSR $0494
CMP #$32
BCS LC997
LC996 RTS
LC997 LDX #$24
JMP L8683 ; call error routine.
SCRATCH
LC99C JSR LCB1F ; parse disk arguments
JSR LCCAF
JSR LCD2B
BNE LC996
LDY #$0F
JSR LCA3F ; expand DOS command at offset Y
JSR LCCCF
BIT Running ; BASIC program running?
BMI LC996
LDA #$0D
JSR LFFD2
LDY #$00
LC9BA LDA #$7A
JSR $0494
BEQ LC9C7
JSR LFFD2
INY
BNE LC9BA
LC9C7 LDA #$0D
JMP LFFD2
COLLECT
LC9CC
JSR LCB1F ; parse disk arguments
AND #$E7
BNE LC974
JSR LFFE7
LDY #$14
BNE LCA3F ; expand DOS command at offset Y
COPY
LC9DA JSR LCB1F ; parse disk arguments
AND #$30
CMP #$30
BNE LC9E9
LDA $82
AND #$C7 ; argument mask
BEQ LC9F0
LC9E9 LDA $82
JSR LCCC0
LDA $82
LC9F0 LDY #$17
BNE LCA3F ; expand DOS command at offset Y
RENAME
LDA #$E4 ; argument mask
JSR LCB21 ; parse disk arguments
JSR LCCC6
LDY #$1E
BNE LCA3F ; expand DOS command at offset Y
BACKUP
LCA00 LDA #$C7 ; argument mask
JSR LCB21 ; parse disk arguments
AND #$30 ; need source and destination drive
CMP #$30
BEQ LCA0E
JMP L94A1 ; syntax error
LCA0E JSR LFFE7
LDY #$25
JMP LCA3F ; expand DOS command at offset Y
LCA16 PHA
LDA $025D ; filename size
LDX #$7C
LDY #$02 ; command buffer
JSR LFFBD ; set fiilename parameter
LDA $0276 ; logical filenumber
LDX $0277 ; device number
LDY $0278 ; secondary address
JSR LFFBA ; set file parameter
PLA
BEQ LCA3E
LDX $025D
SEC
JSR LFFC0
LDA $0276
SEC
JMP LFFC3
LCA3E RTS
LCA3F JSR LCD57 ; parse floppy statement's arguments
LDX #$00
STX $025D ; command buffer reset
LCA47 LDA $CAF5,y ; get parsed argument command
BEQ LCA16 ; send command buffer
CMP #$80
BEQ LCA16 ; send command buffer
TAX
DEX ; code 01
BEQ LCA72 ; process source drive number if destination exists
DEX ; code 02
BEQ LCA78 ; process source drive number
DEX ; code 03
BEQ LCA7E ; proceess destination drive number
DEX ; code 04
BEQ LCA85 ; process '@' prefix
DEX ; code 05
BEQ LCA8D ; process source filename prefix
DEX ; code 06
BEQ LCA97 ; process source filename
DEX ; code 07
BEQ LCAA5 ; process destination filename prefix
DEX ; code 08
BEQ LCAAF ; process destination filename
DEX ; code 09
BEQ LCAD2 ; process drive id
LCA6C JSR LCAEB ; take character verbatim
LCA6F INY ; next argument parsing code
BNE LCA47 ; always
LCA72 LDA $82 ; destination argument mask
AND #$10 ; skip of no destination filename
BEQ LCA6F ; continue arguments
LCA78 LDA $026F ; source drive number
JMP LCA81
LCA7E LDA $0273 ; destination drive number
LCA81 ORA #$30 ; make ASCII digit
BNE LCA6C ; write digit to command buffer
LCA85 LDA #$40 ; '@'
BIT $82
BMI LCA6C ; write to command buffer
BPL LCA6F ; skip
LCA8D LDA $026E ; source filename length
BEQ LCA6F ; continue arguments
LDA #$3A ; ':'
JSR LCAEB ; write to command buffer
LCA97 TYA
PHA
LDA $0270 ; pointer to source filename
LDY $0271
LDX $026E ; length
JMP LCABA ; transfer string to command buffer
LCAA5 LDA $0272 ; destination filename length
BEQ LCA6F
LDA #$3A
JSR LCAEB
LCAAF TYA
PHA
LDA $0274 ; pointer to destination filename
LDY $0275
LDX $0272 ; length
LCABA STA $22 ; pointer to string
STY $23
STX $80 ; string length
LDY #$00
LCAC2 JSR $04B0 ; get byte
JSR LCAEB ; write to command buffer
INY
CPY $80 ; until string length
BNE LCAC2
PLA
TAY
JMP LCA6F ; continue arguments
LCAD2 LDA $0279
BEQ LCA6F ; continue arguments
LDA #$2C
JSR LCAEB ; write "," to command buffer
LDA $0279 ; write 2 character drive ID
JSR LCAEB ; to command buffer
LDA $027A
JSR LCAEB
JMP LCA6F ; continue arguments
LCAEB LDX $025D
STA $027C,x
INC $025D
RTS
LCAF5
BIT $07
ORA DIRECTION
SKB $02
NOP
ASL DIRECTION
LSR $3A02
ASL $09
SKB $53
HLT
NOP
ASL $80
LSR $02,x
SKB $43
ASO ($07,x)
AND $0502,x
SKB $52
HLT
NOP
PHP
AND $8006,x
SKB $03
AND $8002,x
; parse floppy command arguments
LCB1F LDA #$00
LCB21 PHA
LDA #$00
STA $82 ; init argument mask
LDX #$1E ; 30 characters
LCB28 STA $025E,x ; clear command channel buffer
DEX
BNE LCB28
LDX #$08 ; device 8
STX $0277
LDX #$6F ; command channel
STX $0278
LDX #$00
STX $0276
JSR $0479 ; get argument byte
BNE LCB49
LCB42 PLA
JSR LCCAA ; check argement mask
LDA $82 ; return argument mask
RTS
LCB49 CMP #$44 ; D drive number
BEQ LCB6A
CMP #$91
BEQ LCB9F
CMP #$55 ; U unit/device number
BEQ LCB64
CMP #$49 ; I disk id
BEQ LCB83
CMP #$22 ; " filename
BEQ LCBA5
CMP #$28 ; ( expression
BEQ LCBA5
LCB61 JMP L94A1
LCB64 JSR LCC58 ; unit number (device number)
JMP LCBCD
LCB6A LDA #$10
JSR LCCAA ; check argement mask
JSR LCC97
CPX #$02
BCS LCB80
STX $026F
STX $0273
LDA #$10
BNE LCBCD
LCB80 JMP LCC49
LCB83 LDA $027B
BNE LCB61
JSR $0473
STA $0279
JSR $0473
STA $027A
LDA #$FF
STA $027B
JSR $0473
JMP LCBD1
LCB9F JSR LCC51
JMP LCBCD
LCBA5 LDA #$01
JSR LCC69
STA $026E
STA $025D
LDA #$5E
STA $0270
STA $24
LDA #$02
STA $0271
STA $25
LDY #$00
LCBC0 JSR $04B0
STA ($24),y
INY
CPY $025D
BCC LCBC0
LDA #$01
LCBCD ORA $82
STA $82
LCBD1 JSR $0479
BNE LCBD9
LCBD6 JMP LCB42
LCBD9 CMP #$2C
BNE LCBE3
JSR $0473
JMP LCB49
LCBE3 CMP #$91
BEQ LCB9F
CMP #$A4
BNE LCC46
LCBEB JSR $0473
CMP #$44
BEQ LCC02
CMP #$91
BEQ LCC15
CMP #$55
BEQ LCC1B
CMP #$22
BEQ LCC21
CMP #$28
BEQ LCC21
LCC02 LDA #$20
JSR LCCAA ; check argement mask
JSR LCC97
CPX #$02
BCS LCC49
STX $0273
LDA #$20
BNE LCC31
LCC15 JSR LCC51
JMP LCC31
LCC1B JSR LCC58
JMP LCC31
LCC21 LDA #$02
JSR LCC69
STA $0272
STX $0274
STY $0275
LDA #$02
LCC31 ORA $82
STA $82
JSR $0479
BEQ LCBD6
CMP #$2C
BEQ LCBEB
CMP #$91
BEQ LCC15
CMP #$55
BEQ LCC1B
LCC46 LDX #$0B
BIT $0EA2
BIT $17A2
JMP L8683 ; call error routine.
LCC51 JSR $0473
CMP #$55
BNE LCC46
LCC58 JSR LCC97
CPX #$20
BCS LCC49
CPX #$03
BCC LCC49
STX $0277
LDA #$08
RTS
LCC69 JSR LCCAA ; check argement mask
JSR L9C48
TAX
BEQ LCC49
LDY #$00
JSR $04B0
CMP #$40
BNE LCC8D
LDA #$80
JSR LCCAA ; check argement mask
LDA $82
ORA #$80
STA $82
DEX
INC $22
BNE LCC8D
INC $23
LCC8D TXA
CMP #$11
BCS LCC4C
LDX $22
LDY $23
RTS
LCC97 JSR $0473
BEQ LCC46
BCC LCCA7
JSR L948E
JSR L9D84
JMP L948B
LCCA7 JMP L9D84
LCCAA AND $82 ; parsed argument flag
BNE LCC46 ; no match -> error
RTS
LCCAF AND #$E6
BEQ LCCB5
LCCB3 BNE LCC46
LCCB5 LDA $82
AND #$01
CMP #$01
BNE LCCB3
LDA $82
RTS
LCCC0 AND #$C4
BNE LCCB3
LDA $82
LCCC6 AND #$03
CMP #$03
BNE LCCB3
LDA $82
RTS
; ******* Read Floppy Error Channel
; out: $0079-$007B string descriptor
LCCCF LDA $79 ; buffer allocated?
BNE LCCE4 ; error already read?
LDA #$28 ; 40 character buffer
STA $79 ; string length of descriptor $79/$7A/7B
JSR LA906 ; allocate 40 char. on string heap
STX $7A ; store buffer address
STY $7B ; = string address on heap
LDY #$28 ; 40 characters max.
JSR LCDBA ; set backlink in string to descriptor address
NOP
LCCE4 LDX $0277 ; device number given?
BNE LCCEE
LDX #$08 ; no, default 8
STX $0277 ; set to default
LCCEE LDA #$00
LDY #$6F ; command channel (15 + $60)
JSR LFFBA ; set open parameters
LDA #$00 ; setup empty name für open
JSR LFFBD ; set name
JSR LFFC0 ; open
LDX #$00
JSR LFFC6 ; set input
BCS LCD1F
LDY #$FF
LCD06 INY
JSR LFFCF ; read byte
CMP #$0D ; CR?
BEQ LCD12
STA ($7A),y ; store into buffer
BNE LCD06 ; loop until CR
LCD12 LDA #$00
STA ($7A),y ; pad remaining buffer with zeros
JSR LFFCC ; reset input
LDA #$00
SEC
JMP LFFC3 ; close channel and exit
LCD1F PHA
JSR LCD12
JSR LCD57
PLA
TAX
JMP L8683 ; call error routine.
LCD2B BIT Running ; BASIC program running?
BMI LCD54
JSR PrintMessage
EOR ($52,x)
EOR $20
EOR $554F,y
JSR $5553
HLT
EOR $3F
BRK
JSR LFFCC
JSR LFFCF
PHA
LCD47 CMP #$0D
BEQ LCD50
JSR LFFCF
BNE LCD47
LCD50 PLA
CMP #$59
RTS
LCD54 LDA #$00
RTS
LCD57 TYA ; parse floppy command arguments
PHA
LDA $79
BEQ LCD67
LDY #$28
TYA
STA ($7A),y
INY
LDA #$FF
STA ($7A),y
LCD67 LDA #$00
STA $79
PLA
TAY
RTS
BIT $2030
EOR $4B45,y
LCD74 TAX
TYA
PHA
LDA #$00
JSR LA45F
PLA
TAY
RTS
LCD7F STA $3A
DEY
TAX
INX
BNE LCD88
STX Running ; Set
LCD88 RTS
CLD
ASO $0C14,y
ASO $7B
ORA ($D7,x)
CLD
ORA ($07),y
BPL LCDB3
RRA $D817,y
ASO $10
ORA $1A
NOP
ASL $7B,x
ASO $1BD8,x
BPL LCDA7
NOP
ASO $7B,x
ASO ($47),y
CLD
LDY #$21
LCDAD LDA $CD89,y
EOR #$55
JSR LFFD2
DEY
BPL LCDAD
RTS
BRK
LCDBA LDA #$79
STA ($7A),y
LDA #$00
INY
STA ($7A),y
RTS
INS $FFFF,x
INS $FFFF,x
INS $FFFF,x
INS $FFFF,x
INS $FFFF,x
INS $FFFF,x
INS $FFFF,x
INS $FFFF,x
INS $FFFF,x
INS $FFFF,x
INS $FFFF,x
INS $FFFF,x
INS $FFFF,x
INS $FFFF,x
INS $FFFF,x
INS $FFFF,x
INS $FFFF,x
INS $FFFF,x
INS $FFFF,x
INS $FFFF,x
LCE00 TSX
LDA $0104,x
AND #$10
BNE LCE0B
JMP ($0314)
LCE0B JMP ($0316)
LDA IRQ_STATUS
AND #$02
BEQ LCE18
JSR LCE60
LCE18 BIT $07D8
BPL LCE2B
LDA $FD01
STA $07D4
BPL LCE2B
JSR LEA95
JSR LEA5B
LCE2B JSR LE3E4
LDA IRQ_STATUS
AND #$02
BEQ LCE5D
STA IRQ_STATUS
BIT RasterIRQcomp
LDA #$CC
BVC LCE5A
JMP ($0312)
JSR LCFBF
LCE45 JSR LCECD
LDA $FB
PHA
LDA #$00
STA $FB
PHP
CLI
JSR LDB11
PLP
PLA
STA $FB
LDA #$A1
LCE5A STA RasterIRQcomp
LCE5D JMP LFCBE
LCE60 LDA CurrRasterHI
AND #$01
BNE LCEA0
LDA CurrRasterLO
CMP #$A3
BCS LCE9C
BIT $83
BVC LCEC4
LDA #$08
STA ScreenAddress
LDA TEDREG_06
AND #$DF
TAY
LDA TEDREG_07
AND #$EF
TAX
LDA Voice1_BitMap
ORA $07FA
PHA
LCE8A LDA CurrRasterLO
CMP #$A3
BCC LCE8A
PLA
STA Voice1_BitMap
STY TEDREG_06
STX TEDREG_07
RTS
LCE9C CMP #$CC
BCC LCEC4
LCEA0 LDX $83
BEQ LCEC4
BPL LCEAE
LDA TEDREG_07
ORA #$10
STA TEDREG_07
LCEAE LDA TEDREG_06
ORA #$20
STA TEDREG_06
LDA Voice1_BitMap
AND #$FB
STA Voice1_BitMap
LDA $07FB
STA ScreenAddress
LCEC4 RTS
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
LCECD LDX #$01
LCECF LDA $04FC,x
ORA $04FE,x
BEQ LCEEA
INC $04FC,x
BNE LCEEA
INC $04FE,x
BNE LCEEA
LDA $CEEE,x
AND SoundSelector
STA SoundSelector
LCEEA DEX
BPL LCECF
RTS
INS $E69F
LDA $D0
ASL $E6
LDY $D0
HLT
INC $A3
SEC
LDA $A5
SBC #$01
LDA $A4
SBC #$1A
LDA $A3
SBC #$4F
BCC LCF11
LDX #$00
STX $A3
STX $A4
STX $A5
LCF11 LDA #$7F
JSR LDB70
STA $EE
LDA #$7F
JSR LDB70
CMP $EE
BNE LCF11
ORA #$7F
STA $91
RTS
LCF26 SEI
LDA $A5
LDX $A4
LDY $A3
LCF2D SEI
STA $A5
STX $A4
STY $A3
CLI
RTS
ORA $4F4D
LSR $5449
LSE $8D52
ORA $5242
EOR $41
LCF44 SAX #$0D
JSR $2020
BVC LCF8E
JSR $5320
HLT
JSR $4341
JSR $5258
JSR $5259
JSR $5053
ORA $A03B
EOR ($A0,x)
JSR $5245
HLT
LSE $BDD2
ROL $CF,x
PHP
AND #$7F
JSR LFFD2
INX
PLP
BPL LCF66
RTS
LCF74 LDA #$0D
LDX $98
CPX #$03
BEQ LCF82
LDX $99
CPX #$03
BEQ LCF85
LCF82 JSR LDC49
LCF85 LDA #$0D
JMP LD9B0
LCF8A LDA $0113,x
BIT $07F9
BPL LCF95
LDA $E143,x
LCF95 RTS
LCF96 BIT $07F8
BMI LCF9E
LDA ($A1),y
RTS
LCF9E LDA #$A1
STA $07DF
JMP $07D9
LCFA6 LDA #$09
STA $FD20
ORA #$80
STA $FD20
JMP LFC1E
PHP
SEI
STA RAM_ON
LDA (DIRECTION),y
STA ROM_ON
PLP
RTS
LCFBF LDA $FD10
AND #$04
BNE LCFE1
BIT $07FC
BMI LCFD1
LDA IO
AND #$F7
STA IO
LCFD1 DEC $07FD
BPL LCFDE
LDA #$04
STA $07FD
JSR LCEF0
LCFDE JMP LCEF0
LCFE1 STA $07FC
JSR LE3B0
JMP LCFD1
LCFEA INX
STX $FEC4
STX $FEC0
LDA #$80
STA SoundSelector
RTS
db $ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff,$ff ; unused
;
; Character ROM goes here....
;
DS $800
LD800 ASL $05
BRK
PLP
BVC LD87E
LDY #$C8
BEQ LD822
RTI
PLA
BCC LD7C6
LD80E CPX #$08
BMI LD86A
SKB $A8
BNE LD80E
JSR $7048
TYA
CPY #$0C
SKW $0C0C
SKW $0C0C
LD822 ORA $0D0D
ORA $0D0D
ASL $0E0E
ASL $0E0E
ASL $0F0F
ASO $0F0F
LD834 LDX #$28
LDY #$19
RTS
LD839 BCS LD849
STX $CD
STX $C4
STY $CA
STY $C5
JSR LDE70
JSR LD8A8
LD849 LDX $CD
LDY $CA
RTS
LD84E LDA #$0C
STA $053E
LDA #$03
STA $99
LDA #$00
STA $98
STA $0547
STA $83
STA $EF
STA $F0
LDA #$7A
STA $0545
LDA #$DB
STA $0546
LDA #$0A
STA $053F
STA $054A
STA $0542
LDA #$80
STA $0540
LD87E LDA #$10
STA $053B
LDA #$04
STA $0541
JSR LDE70
LD88B JSR LD89A
LD88E JSR LD8AA
JSR LDAF7
CPX $07E5
INX
BCC LD88E
LD89A LDX $07E6
STX $CD
STX $C4
LD8A1 LDY $07E7
STY $CA
STY $C5
LD8A8 LDX $CD
LD8AA LDA $D802,x
STA $C8
LDA $D81B,x
STA $C9
LD8B4 LDA $C8
STA $EA
LDA $C9
AND #$03
ORA #$08
STA $EB
RTS
LD8C1 LDX $055D
BEQ LD8D5
LDY $055E
LDA $0567,y
DEC $055D
INC $055E
CLI
CLC
RTS
LD8D5 LDY $0527
NOP
LD8D9 LDA $0528,x
STA $0527,x
INX
CPX $EF
BNE LD8D9
DEC $EF
TYA
CLI
CLC
RTS
LD8EA JSR LDC49
LD8ED JSR LD8B4
LDY $CA
LDA ($EA),y
PHA
LDA $053B
STA ($EA),y
TYA
CLC
ADC $C8
STA CursorLO
LDA $C9
ADC #$00
SBC #$0B
STA CursorHI
LD90A LDA $EF
ORA $055D
BEQ LD90A
PLA
STA ($EA),y
LDA #$FF
STA CursorHI
STA CursorLO
JSR LD8C1
CMP #$83
BNE LD933
LDX #$09
SEI
STX $EF
LD928 LDA $E129,x
STA $0526,x
DEX
BNE LD928
LD931 BEQ LD8ED
LD933 CMP #$0D
BNE LD8EA
STA $C7
JSR LDF95
STX $0549
JSR LDF87
LDA #$00
STA $CB
LDY $07E7
LDA $C4
BMI LD960
CMP $CD
BCC LD960
LDY $C5
CMP $0549
BNE LD95C
CPY $C3
BEQ LD95E
LD95C BCS LD96F
LD95E STA $CD
LD960 STY $CA
JMP LD977
LD965 TYA
PHA
TXA
PHA
LDA $C7
BEQ LD931
BPL LD977
LD96F LDA #$00
STA $C7
JMP LCF74
NOP
LD977 JSR LD8A8
JSR LDF2F
STA $CE
AND #$3F
ASL $CE
BIT $CE
BPL LD989
ORA #$80
LD989 BCC LD98F
LDX $CB
BNE LD993
LD98F BVS LD993
ORA #$40
LD993 JSR LD9BA
LDY $CD
CPY $0549
BCC LD9A7
LDY $CA
CPY $C3
BCC LD9A7
ROR $C7
BMI LD9AA
LD9A7 JSR LDFBF
LD9AA CMP #$DE
BNE LD9B0
LDA #$FF
LD9B0 STA $CE
PLA
TAX
PLA
TAY
LDA $CE
CLC
RTS
LD9BA CMP #$22
BNE LD9C6
LDA $CB
EOR #$01
STA $CB
LDA #$22
LD9C6 RTS
LDA $CE
STA $07EB
PLA
TAY
LDA $CF
BEQ LD9D4
LSR $CB
LD9D4 PLA
TAX
PLA
CLC
RTS
LD9D9 ORA #$40
LD9DB LDX $C2
BEQ LD9E1
LD9DF ORA #$80
LD9E1 LDX $CF
BEQ LD9E7
DEC $CF
LD9E7 BIT $07EA
BPL LD9F5
PHA
JSR LDDCE
LDX #$00
STX $CF
PLA
LD9F5 JSR LE001
LD9F8 CPY $07E8
BCC LDA09
LDX $CD
CPX $07E5
BCC LDA09
BIT $07E9
BMI LDA20
LDA09 JSR LD8A8
JSR LDFBF
BCC LDA20
JSR LDF39
BCS LDA1F
SEC
BIT $07E9
BVS LDA20
JSR LDA5E
LDA1F CLC
LDA20 RTS
LDA21 LDX $CD
CPX $07E5
BCC LDA38
BIT $07E9
BPL LDA34
LDA $07E6
STA $CD
BCS LDA3A
LDA34 JSR LDA89
CLC
LDA38 INC $CD
LDA3A JMP LD8A8
LDA3D LDA $D802,x
STA $A9
STA $C0
LDA $D81B,x
STA $C1
AND #$03
ORA #$08
STA $AA
LDA4F LDA ($C0),y
STA ($C8),y
LDA ($A9),y
STA ($EA),y
CPY $07E8
INY
BCC LDA4F
RTS
LDA5E LDX $C4
BMI LDA68
CPX $CD
BCC LDA68
INC $C4
LDA68 LDX $07E5
LDA6B JSR LD8AA
LDY $07E7
CPX $CD
BEQ LDA83
DEX
JSR LDF3B
INX
JSR LDF48
DEX
JSR LDA3D
BCS LDA6B
LDA83 JSR LDAF7
JMP LDF59
LDA89 LDX $07E6
LDA8C INX
JSR LDF3B
BCC LDA9E
CPX $07E5
BCC LDA8C
LDX $07E6
INX
JSR LDF4A
LDA9E DEC $CD
BIT $C4
BMI LDAA6
DEC $C4
LDAA6 LDX $07E6
CPX $FE
BCS LDAAF
DEC $FE
LDAAF JSR LDAC5
LDX $07E6
JSR LDF3B
PHP
JSR LDF4A
PLP
BCC LDAC4
BIT $07EC
BMI LDA89
LDAC4 RTS
LDAC5 JSR LD8AA
LDY $07E7
CPX $07E5
BCS LDADE
INX
JSR LDF3B
DEX
JSR LDF48
INX
JSR LDA3D
BCS LDAC5
LDADE JSR LDAF7
LDA #$7F
JSR LDB70
CMP #$DF
BNE LDAF3
LDY #$00
LDAEC NOP
DEX
BNE LDAEC
DEY
BNE LDAEC
LDAF3 RTS
NOP
NOP
NOP
LDAF7 LDY $07E7
JSR LDF4A
LDAFD JSR LD8AA
DEY
LDB01 INY
LDA #$20
STA ($C8),y
LDA $053B
STA ($EA),y
CPY $07E8
BNE LDB01
RTS
LDB11 LDA #$00
STA $0543
LDY #$40
STY $C6
JSR LDB70
TAX
CPX #$FF
BNE LDB25
JMP LDC01
LDB25 LDY #$00
LDA #$26
STA $EC
LDA #$E0
STA $ED
LDA #$FE
LDB31 LDX #$08
PHA
LDB34 PLA
PHA
JSR LDB70
STA $EE
PLA
PHA
JSR LDB70
CMP $EE
BNE LDB34
LDB44 LSR
BCS LDB5D
PHA
LDA ($EC),y
CMP #$05
BCS LDB5A
CMP #$03
BEQ LDB5A
ORA $0543
STA $0543
BPL LDB5C
LDB5A STY $C6
LDB5C PLA
LDB5D INY
CPY #$41
BCS LDB6A
DEX
BNE LDB44
SEC
PLA
ROL
BNE LDB31
LDB6A PLA
LDA $C6
JMP ($0545)
LDB70 STA $FD30
STA KeyboardLatch
LDA KeyboardLatch
RTS
LDA $0543
CMP #$03
BNE LDB9A
LDA $0547
BMI LDBBA
LDA $0544
BNE LDBBA
LDA CharBase
EOR #$04
STA CharBase
LDA #$08
STA $0544
BNE LDBBA
LDB9A ASL
CMP #$08
BCC LDBAF
LDA #$06
LDX $07F7
BNE LDBAF
LDX $C6
CPX #$0D
BNE LDBAF
STX $F0
RTS
LDBAF TAX
LDA $E01E,x
STA $EC
LDA $E01F,x
STA $ED
LDBBA LDY $C6
LDA ($EC),y
TAX
CPY $07F6
BEQ LDBCB
LDY #$10
STY $0542
BNE LDC01
LDBCB AND #$7F
BIT $0540
BMI LDBE8
BVS LDC2B
CMP #$7F
BEQ LDC01
CMP #$14
BEQ LDBE8
CMP #$20
BEQ LDBE8
CMP #$1D
BEQ LDBE8
CMP #$11
BNE LDC2B
LDBE8 LDY $0542
BEQ LDBF2
DEC $0542
BNE LDC2B
LDBF2 DEC $0541
BNE LDC2B
LDY #$04
STY $0541
LDY $EF
DEY
BPL LDC2B
LDC01 NOP
NOP
LSR $0544
LDY $C6
STY $07F6
CPX #$FF
BEQ LDC2B
TXA
LDX #$00
STX $F0
LDX #$07
LDC16 CMP $DC41,x
BEQ LDC2C
DEX
BPL LDC16
LDX $EF
CPX $053F
BCS LDC2B
STA $0527,x
INX
STX $EF
LDC2B RTS
LDC2C LDA $055F,x
STA $055D
LDA #$00
LDC34 DEX
BMI LDC3D
CLC
ADC $055F,x
BCC LDC34
LDC3D STA $055E
RTS
STA $89
STX $8A
AXS $8B
DEY
STY $CE85
PHA
TXA
PHA
TYA
PHA
LDC50 LDA $F0
BNE LDC50
STA $C7
LDA #$D9
PHA
LDA #$C6
PHA
LDY $CA
LDA $CE
CMP #$0D
BEQ LDC8C
CMP #$8D
BEQ LDC8C
LDX $07EB
CPX #$1B
BNE LDC72
JMP LDE06
LDC72 TAX
BMI LDC89
CMP #$20
BCC LDCA7
CMP #$60
BCC LDC81
AND #$DF
BNE LDC83
LDC81 AND #$3F
LDC83 JSR LD9BA
JMP LD9DB
LDC89 JMP LDD47
LDC8C JSR LDF95
INX
JSR LDF4A
LDY $07E7
STY $CA
JSR LDA21
LDA #$00
STA $CF
STA $C2
STA $CB
STA $053C
RTS
LDCA7 CMP #$1B
BEQ LDCF9
LDX $CF
BEQ LDCB2
LDCAF JMP LD9DF
LDCB2 CMP #$14
BNE LDCB9
JMP LDD99
LDCB9 LDX $CB
BNE LDCAF
CMP #$12
BNE LDCC3
STA $C2
LDCC3 CMP #$13
BNE LDCD2
CMP $07EB
BNE LDCCF
JSR LDE70
LDCCF JMP LD89A
LDCD2 CMP #$1D
BEQ LDCFA
CMP #$11
BEQ LDD00
CMP #$0E
BEQ LDD27
CMP #$08
BEQ LDD2E
CMP #$09
BEQ LDD35
LDCE6 LDX #$0F
LDCE8 CMP $E133,x
BEQ LDCF1
DEX
BPL LDCE8
RTS
LDCF1 PHA
JSR LCF8A
STA $053B
PLA
LDCF9 RTS
LDCFA JSR LDFBF
BCS LDD03
RTS
LDD00 JSR LDA21
LDD03 JSR LDF39
BCS LDD0B
SEC
ROR $C4
LDD0B CLC
LDD0C RTS
LDD0D LDX $07E6
CPX $CD
BCS LDD0C
LDD14 JSR LDD03
DEC $CD
JMP LD8A8
LDD1C JSR LDFD4
BCS LDD0C
BNE LDD0B
INC $CD
BNE LDD14
LDD27 LDA CharBase
ORA #$04
BNE LDD43
LDD2E LDA #$80
ORA $0547
BMI LDD3A
LDD35 LDA #$7F
AND $0547
LDD3A STA $0547
RTS
LDD3E LDA CharBase
AND #$FB
LDD43 STA CharBase
RTS
LDD47 AND #$7F
CMP #$7F
BNE LDD4F
LDA #$5E
LDD4F CMP #$20
BCC LDD56
JMP LD9D9
LDD56 LDX $CB
BEQ LDD5F
LDD5A ORA #$40
JMP LD9DF
LDD5F CMP #$14
BEQ LDDCE
LDX $CF
BNE LDD5A
CMP #$11
BEQ LDD0D
CMP #$12
BNE LDD73
LDA #$00
STA $C2
LDD73 CMP #$1D
BEQ LDD1C
CMP #$13
BNE LDD7E
JMP LD88B
LDD7E CMP #$02
BNE LDD87
LDA #$80
STA $053C
LDD87 CMP #$04
BNE LDD90
LDA #$00
STA $053C
LDD90 CMP #$0E
BEQ LDD3E
ORA #$80
JMP LDCE6
LDD99 JSR LDD1C
JSR LDFF6
BCS LDDB1
LDDA1 CPY $07E8
BCC LDDBC
LDX $CD
INX
JSR LDF3B
BCS LDDBC
JSR LDFFF
LDDB1 LDA $CC
STA $CA
LDA $FE
STA $CD
JMP LD8A8
LDDBC JSR LDFBF
JSR LDF2F
JSR LDFD4
JSR LE011
JSR LDFBF
JMP LDDA1
LDDCE JSR LDFF6
JSR LDF95
CPX $FE
BNE LDDDA
CPY $CC
LDDDA BCC LDDFD
JSR LD9F8
BCS LDE03
LDDE1 JSR LDFD4
JSR LDF2F
JSR LDFBF
JSR LE011
JSR LDFD4
LDX $CD
CPX $FE
BNE LDDE1
CPY $CC
BNE LDDE1
JSR LDFFF
LDDFD INC $CF
BNE LDE03
DEC $CF
LDE03 JMP LDDB1
LDE06 AND #$7F
SEC
SBC #$41
CMP #$17
BCS LDE19
ASL
TAX
LDA $DE1B,x
PHA
LDA $DE1A,x
PHA
LDE19 RTS
PLP
DCM $DE5F,x
AND $DF
???
CLC
DEC $DE18,x
CLC
DEC $DE18,x
TXA
DEC $DF81,x
STY $DF,x
SKW $1FDF
DCM $D887,x
TXS
SKW $DEE0
DEX
DEC $DE47,x
CLC
DEC $DE5D,x
CLC
DEC $DEF5,x
ASO ($DF,x)
JSR LDE70
JSR LD88B
LDA #$01
TAX
JSR LDE7A
LDA #$17
LDX #$26
JSR LDE67
JMP LD89A
CLC
BIT $38
LDX $CA
LDA $CD
BCC LDE7A
LDE67 STA $07E5
STX $07E8
JMP LDE80
LDE70 LDA #$18
LDX #$27
JSR LDE67
LDA #$00
TAX
LDE7A STA $07E6
STX $07E7
LDE80 LDA #$00
LDX #$04
LDE84 STA $07ED,x
DEX
BNE LDE84
RTS
JSR LDA5E
JSR LD8A1
INX
JSR LDF3B
PHP
JSR LDF46
PLP
BCS LDE9F
SEC
ROR $C4
LDE9F RTS
JSR LDF87
LDA $07E6
PHA
LDA $CD
STA $07E6
LDA $07EC
PHA
LDA #$80
STA $07EC
JSR LDA9E
PLA
STA $07EC
LDA $07E6
STA $CD
PLA
STA $07E6
SEC
ROR $C4
JMP LD8A1
JSR LDFF6
LDECE JSR LDAFD
INC $CD
JSR LD8A8
LDY $07E7
JSR LDF39
BCS LDECE
LDEDE JMP LDDB1
JSR LDFF6
LDEE4 JSR LDFFF
CPY $07E7
BNE LDEF1
JSR LDF39
BCC LDEDE
LDEF1 JSR LDFD4
BCC LDEE4
JSR LDFF6
TXA
PHA
JSR LDA89
PLA
STA $FE
JMP LDEDE
JSR LDFF6
JSR LDF39
BCS LDF0F
SEC
ROR $C4
LDF0F LDA $07E6
STA $CD
JSR LDA5E
JSR LDF4A
JMP LDEDE
LDA #$00
BIT $80A9
STA $07E9
RTS
LDA #$00
BIT $FFA9
STA $07EA
RTS
LDF2F LDY $CA
LDA ($EA),y
STA $07ED
LDA ($C8),y
RTS
LDF39 LDX $CD
LDF3B JSR LDF66
AND $07EE,x
CMP #$01
JMP LDF55
LDF46 LDX $CD
LDF48 BCS LDF59
LDF4A JSR LDF66
EOR #$FF
AND $07EE,x
LDF52 STA $07EE,x
LDF55 LDX $02E9
RTS
LDF59 BIT $07E9
BVS LDF3B
JSR LDF66
ORA $07EE,x
BNE LDF52
LDF66 STX $02E9
TXA
AND #$07
TAX
LDA $DF7A,x
PHA
LDA $02E9
LSR
LSR
LSR
TAX
PLA
RTS
SKB $40
JSR $0810
SKB $02
ORA ($AC,x)
INS $07
STY $CA
LDF87 JSR LDF39
BCC LDF92
DEC $CD
BPL LDF87
INC $CD
LDF92 JMP LD8A8
LDF95 INC $CD
JSR LDF39
BCS LDF95
DEC $CD
JSR LD8A8
LDY $07E8
STY $CA
LDFA6 JSR LDF2F
CMP #$20
BNE LDFBC
CPY $07E7
BNE LDFB7
JSR LDF39
BCC LDFBC
LDFB7 JSR LDFD4
BCC LDFA6
LDFBC STY $C3
RTS
LDFBF PHA
LDY $CA
CPY $07E8
BCC LDFCF
JSR LDA21
LDY $07E7
DEY
SEC
LDFCF INY
STY $CA
PLA
RTS
LDFD4 LDY $CA
DEY
BMI LDFDE
CPY $07E7
BCS LDFEF
LDFDE LDY $07E6
CPY $CD
BCS LDFF5
DEC $CD
PHA
JSR LD8A8
PLA
LDY $07E8
LDFEF STY $CA
CPY $07E8
CLC
LDFF5 RTS
LDFF6 LDY $CA
STY $CC
LDX $CD
STX $FE
RTS
LDFFF LDA #$20
LE001 LDY $CA
STA ($C8),y
JSR LD8B4
LDA $053B
ORA $053C
STA ($EA),y
RTS
LE011 LDY $CA
STA ($C8),y
JSR LD8B4
LDA $07ED
STA ($EA),y
RTS
ROL $E0
RRA $E0
TAY
CPX #$E9
CPX #$14
ORA $8C5C
STA $89
STX $40
RLA ($57),y
EOR ($34,x)
NOP
LSE ($45),y
ORA ($35,x)
HLT
SKB $36
LSE ($46,x)
SKB $58
RLA $59,x
LSE $38
HLT
PHA
EOR $56,x
AND $4A49,y
BMI LE098
ALR #$4F
LSR $5011
JMP $2E91
NOP
AND $9D2C
ROL
RLA $1B1D,y
AND $2F2B,x
LE05E AND ($13),y
SKB $32
JSR $5102
ASO ($FF,x)
STY $8D,x
LDA #$88
TXA
AXS $8B
TSX
RLA ($D7,x)
CMP ($24,x)
NOP
DCM ($C5),y
ORA ($25,x)
HLT
CPY $26
DCM ($C6,x)
SKB $D8
RLA $D9
DCM $28
SKB $C8
CMP $D6,x
AND #$C9
DEX
LSR $CBCD,x
DCM $11CE
BNE LE05E
STA ($3E),y
LSE $3CDD,y
STA $5DC0,x
ORA $5F1B,x
DCM $213F,y
???
LDY #$02
CMP ($83),y
INS $8D94,x
TAY
DEY
TXA
AXS $8B
LDY $96
LAX ($B0),y
AXS $AD,y
LDX $01B1
TYA
HLT
LDY $BC99
???
TXS
LAX $A5,x
???
LDY $B8,x
LDX $A229,y
LDA $30,x
LAX $A1
LDA $11AA,y
LAX $91B6
ROL $DC5B,x
SKW $DF9D
EOR $1B1D,x
DEC $3FA6,x
STA ($93,x)
SKB $95
LDY #$02
OAL #$83
INS $FFFF,x
SKW $FFFF
INS $FFFF,x
SKW $0117
???
ORA $FF
SAY $0412,x
???
SKB $18
ASO $0719,x
???
ORA $16,x
HLT
ORA #$0A
HLT
ORA $0F0B
ASL $10FF
SKW $84FF
ASO $82FF,y
INS $1DFF,x
INS $061B,x
INS $90FF,x
INS $05FF,x
INS $11FF,x
INS $44FF,x
CPY $2A22
ORA $5552
LSR $900D
ORA $1C
???
???
???
STA $96,x
AXS $98,y
STA $9B9A,y
BRK
ADC ($32),y
RRA ($44,x)
AND $46,x
RRA $48,x
AND #$5A
???
ADC $5F2E
LE153 ORA #$40
; *****************************************************
;
; Check for serial
; A = device to search for ( byte to send )
;
; *****************************************************
LE155 db $2C ; mask "ORA #$20" with "BIT $2009"
LE156 ORA #$20 ; or in $20 to device...(make asci character)
LE158 PHA ; store device number
BIT $94 ; get serial bus flags
BPL LE167 ; not set?
SEC ; set carry for rotating in
ROR $A6 ; rotate serial bus usage byte (transfer byte?)
JSR LE181 ; call "send to serial bus"
LSR $94 ; shift serial bus flags
LSR $A6 ; shift serial bus control
LE167 PLA ; get Device number back
STA $95 ; store in buffered character for serial
SEI
JSR LE2C6 ; serial clock on (and $01 with $fe)
JSR LE2BF ; set $02 in $01
LDA IO
ORA #$04 ; or $04 into $01 (IO control)
STA IO
LE177 SEI
JSR LE2BF ; or $01 with $02
JSR LE2C6 ; and $01 with $fe
JSR LE2DC ; set timer to $400, and wait till it runs out.
LE181 SEI
JSR LE2C6 ; and $01 with $fe
JSR GetSerialIn ; Wait for line to settle, then clock serial bit into carry
BCS LE1E9 ; if bit set, then timeout?
JSR LE2B8 ; serial clock on ($01 and $FD)
BIT $A6
BPL LE19F
LE191 JSR GetSerialIn ; wait for serial line to settle
BCC LE191 ; if line just went LOW (bit was 0) then get again
LE196 LDA IO ; wait for line to settle
CMP IO
BNE LE196
ASL ; get serial line into carry
BCS LE196 ; if line HIGH then try again. (get order right?)
;
; Send actual byte across serial line
;
LE19F JSR GetSerialIn ; wait for line to settle
BCC LE19F ; for for line HIGH
JSR LE2BF ; or $01 with $02
LDA #$08 ; send a whole byte
STA $AA
LE1AB JSR GetSerialIn
BCC LE1EE
ROR $95 ; rotate byte to send (right to left sending)
BCS LE1B9 ; bit set? then clock high
JSR LE2CD ; serial clock off ($01 OR $01) (set)
BNE LE1BC ; force branch (always BNE)
LE1B9 JSR LE2C6 ; $01 and $fe (clear bit 0)
LE1BC JSR Delay1ms ; delay 1 millisecond
JSR LE2B8 ; $01 AND $fd (clear bit 1 - $02) set handshake
JSR Delay1ms ; delay 1 millisecond
LDA IO ; clear serial send
AND #$FE
ORA #$02 ; clock handshake
STA IO ; store
DEC $AA ; minus 1 from bits to send counter
BNE LE1AB ; loop till all sent
TXA ; Store "X" on stack
PHA
LDX #$78 ; get timeout value
LE1D5 LDA IO
CMP IO
BNE LE1D5 ; wait for serial IN to settle
ASL ; get serial IN into carry
BCC LE1E5 ; if CLEAR, then wait till ready (wait till set)
DEX ; 1 off timeout
BNE LE1D5 ; and keep going till timeout
PLA
TAX
BCS LE1EE
LE1E5 PLA ; if ready, then exit now
TAX ; restore "X" from the stack
CLI ; restore IRQ's
RTS ; and exit
LE1E9 LDA #$80 ; exit with error
JMP LE1F0
LE1EE LDA #$03
LE1F0 JSR LF41E
CLI
CLC
BCC LE242
LE1F7 STA $95
JSR LE177
LE1FC LDA IO
AND #$FB
STA IO
RTS
LE203 STA $95
JSR LE177
BIT $90
BMI LE242
LE20C SEI
JSR LE2CD
JSR LE1FC
JSR LE2B8
LE216 BIT IO
BVS LE216
CLI
RTS
INS $9424,x
BMI LE226
SEC
ROR $94
BNE LE22B
LE226 PHA
JSR LE181
PLA
LE22B STA $95
CLC
RTS
LE22F SEI
JSR LE2BF
LDA IO
ORA #$04
STA IO
LDA #$5F
BNE LE23F
LE23D LDA #$3F
LE23F JSR LE158
LE242 JSR LE1FC
LE245 TXA
LDX #$14
LE248 DEX
BNE LE248
TAX
JSR LE2B8
JMP LE2C6
LE252 SEI
LDA #$00
STA $AA
JSR LE2B8
TXA
PHA
LE25C JSR GetSerialIn
BPL LE25C
LE261 LDX #$20
JSR LE2C6
LE266 LDA IO
CMP IO
BNE LE266
ASL
BPL LE28E
DEX
BNE LE266
LDA $AA
BEQ LE27D
PLA
TAX
LDA #$02
JMP LE1F0
LE27D JSR LE2CD
LDX #$40
LE282 DEX
BNE LE282
LDA #$40
JSR LF41E
INC $AA
BNE LE261
LE28E LDX #$08
LE290 LDA IO
ASL
BPL LE290
ROR $A8
LE297 LDA IO
CMP IO
BNE LE297
ASL
BMI LE297
DEX
BNE LE290
STX $AA
PLA
TAX
JSR LE2CD
LDA #$40
BIT $90
BVC LE2B3
JSR LE245
LE2B3 LDA $A8
CLI
CLC
RTS
LE2B8 LDA IO
AND #$FD
STA IO
RTS
LE2BF LDA IO
ORA #$02
STA IO
RTS
LE2C6 LDA IO
AND #$FE
STA IO
RTS
LE2CD LDA IO
ORA #$01
STA IO
RTS
; *************************************************
;
; Wait for serial line to settle, then shift
; serial bit into carry (bit 7 is serial bit )
;
; *************************************************
GetSerialIn:
LE2D4 LDA IO ; get current IO bits
CMP IO ; wait for line to settle
BNE LE2D4
ASL ; return bit found in carry
RTS
; *************************************************
;
; Set timer to $400, and wait till it counts down
;
; *************************************************
LE2DC JSR LE2F8 ; set timer to $400
LDA #$10 ; wait for bit to be set in $ff09
LE2E1 BIT IRQ_STATUS
BEQ LE2E1
STA IRQ_STATUS ; reset (clear) IRQ bit when done. (does NOT generate an interrupt)
RTS ; and return
; *************************************************
;
; Set timer to $4000, and wait till it counts down
;
; *************************************************
LE2EA JSR LE2FC ; set timer to $4000
LDA #$10 ; wait till timer 1 sets bit $10
LE2EF BIT IRQ_STATUS ; in IRQ (wait till counted down)
BEQ LE2EF
STA IRQ_STATUS ; reset IRQ flag when done (does NOT generate an interrupt)
RTS
; *************************************************
;
; Set timer 2 to $400
;
; *************************************************
LE2F8 LDA #$04 ; get HIGH byte of timer
BNE LE2FE ; force local branch
; *************************************************
;
; Set timer 2 to $4000
;
; *************************************************
LE2FC LDA #$40
LE2FE PHP ; store flags
PHA ; store HIGH counter
SEI ; make sure interrupts are OFF
LDA #$00 ; always set LOW timer to zero
STA Timer2Low ; set value - timer is paused
PLA ; get HIGH counter value back
STA Timer2High ; set it - also sets timer going
LDA #$10 ; select timer 2 bit
STA IRQ_STATUS ; clear timer status
PLP ; restore flags
RTS ; and back
; *************************************************
;
; Delay 1 millisecond
; A is trashed
;
; *************************************************
Delay1ms:
LE311 TXA ; keep "X" safe
LDX #$05 ; count from 5 down
LE314 DEX
BNE LE314 ; delay
TAX ; restore X
RTS
LE319 SEC
BIT $18
LDA $FD10
AND #$04
BEQ LE362
PHP
JSR LFBD8
ORA $5250
EOR $53
LSE ($20),y
BVC LE37C
EOR ($59,x)
JSR $2800
BCC LE344
JSR LFBD8
ROL $20
HLT
EOR $43
LSE $4452
JSR $2000
CLD
INS $4E4F,y
JSR $4154
BVC LE393
BRK
LE34F JSR LFBCB
BCS LE363
LDA $FD10
AND #$04
BNE LE34F
JSR LFBD8
ORA $4B4F
BRK
LE362 CLC
LE363 RTS
LE364 SEI
LDA TEDREG_06
AND #$EF
STA TEDREG_06
LDA IRQ_MASK
AND #$FD
ORA #$08
STA IRQ_MASK
RTS
LE378 SEI
LDA TEDREG_06
LE37C ORA #$10
STA TEDREG_06
LDA IRQ_MASK
AND #$F7
ORA #$02
STA IRQ_MASK
CLI
RTS
LE38D PHP
SEC
ROR $07FC
LDA IO
AND #$F5
STA IO
LDX #$1E
LE39A JSR LE2EA
DEX
BNE LE39A
PLP
RTS
LSE ($31,x)
AND $3438,y
LSE ($4F,x)
EOR $4F4D
SKB $4F
HLT
EOR $A5
ORA ($09,x)
PHP
STA IO
RTS
LE3B7 LDY #$00
LDA #$20
LE3BB STA ($B6),y
INY
CPY #$C0
BNE LE3BB
RTS
LE3C3 PHA
LDA #$33
STA $B6
LDA #$03
STA $B7
PLA
RTS
LE3CE JSR LFBCB
BCC LE3E3
JSR LE3B0
JSR LE378
LDX $07BE
TXS
LDA #$00
STA $07BE
SEC
LE3E3 RTS
LE3E4 LDA IRQ_STATUS
AND IRQ_MASK
AND #$08
BNE LE3EF
RTS
LE3EF STA IRQ_STATUS
SEI
LDA #$90
STA Timer1Low
LDA #$33
STA Timer1High
LDX $07BF
TXS
SEC
RTS
LE403 LDA #$A8
STA Timer1Low
LDA #$48
STA Timer1High
LDA #$08
STA IRQ_STATUS
RTS
LE413 SEC
BCS LE417
LE416 CLC
LE417 STY $07CA
STX $07CB
LDY $07C8
LDX $07C9
LDA #$10
LE425 BIT IRQ_STATUS
BEQ LE425
STY Timer2Low
STX Timer2High
STA IRQ_STATUS
LDA IO
EOR #$02
STA IO
PHP
JSR LE3CE
PLP
LDY $07CA
LDX $07CB
BCS LE416
RTS
LE447 LDA #$4E
STA $07C8
LDA #$03
STA $07C9
RTS
LE452 LDA #$D0
STA $07C8
LDA #$00
STA $07C9
RTS
LE45D LDA #$A4
STA $07C8
LDA #$01
STA $07C9
RTS
LE468 JSR LE452
JSR LE413
JSR LE45D
JMP LE413
LE474 JSR LE45D
JSR LE413
JSR LE452
JMP LE413
LE480 JSR LE447
JSR LE413
JSR LE45D
JMP LE413
LE48C STA $A7
LDA #$01
STA $07B1
JSR LE480
LDX #$08
LE498 ROR $A7
BCS LE4A5
INC $07B1
JSR LE468
JMP LE4A8
LE4A5 JSR LE474
LE4A8 DEX
BNE LE498
ROR $07B1
BCS LE4B6
JSR LE468
JMP LE4B9
LE4B6 JSR LE474
LE4B9 RTS
LE4BA TSX
STX $07BE
LDA IO
ORA #$02
STA IO
JSR LE452
LDY #$01
STY Timer2High
LDA #$10
STA IRQ_STATUS
BIT $F7
BPL LE4D9
LDY #$40
LDX #$FE
LE4D9 JSR LE413
DEX
BNE LE4D9
DEY
BNE LE4D9
LDY #$09
LE4E4 TYA
ORA $F7
JSR LE48C
DEY
BNE LE4E4
LDA $F8
STA $F5
BEQ LE4F6
JSR LE48C
LE4F6 LDY #$00
LDA #$BA
STA $07DF
JSR $07D9
PHA
EOR $F5
STA $F5
PLA
JSR LE48C
INC $BA
BNE LE50F
INC $BB
LE50F INC $03F3
BNE LE4F6
INC $03F4
BNE LE4F6
LDA $F5
JSR LE48C
JSR LE45D
JSR LE413
JSR LE452
LDY #$01
LDX #$C2
LE52B JSR LE413
DEX
BNE LE52B
DEY
BNE LE52B
RTS
LE535 JSR LE319
JSR LE364
JSR LE38D
BCS LE566
LDA #$80
STA $F7
LE544 LDA $B6
STA $BA
LDA $B7
STA $BB
LDA #$41
STA $03F3
LDA #$FF
STA $03F4
JSR LE4BA
BCS LE566
LDA $F7
BPL LE565
LDA #$00
STA $F7
BPL LE544
LE565 CLC
LE566 JSR LE3B0
JMP LE378
LE56C JSR LE3C3
JSR LE3B7
LDY #$00
LDA $B2
STA ($B6),y
INY
LDA $B3
STA ($B6),y
INY
LDA $9D
STA ($B6),y
INY
LDA $9E
STA ($B6),y
INY
STY $07B3
LDY #$00
STY $07B2
LE590 LDY $07B2
CPY $AB
BEQ LE5AD
LDA #$AF
STA $07DF
JSR $07D9
LDY $07B3
STA ($B6),y
INC $07B2
INC $07B3
JMP LE590
LE5AD JMP LE535
LE5B0 JSR LE319
JSR LE364
JSR LE38D
BCS LE5EA
LDA #$80
STA $F7
LE5BF LDA $B2
STA $BA
LDA $B3
STA $BB
CLC
LDA $9D
SBC $B2
EOR #$FF
STA $03F3
LDA $9E
SBC $B3
EOR #$FF
STA $03F4
JSR LE4BA
BCS LE5EA
LDA $F7
BPL LE5E9
LDA #$00
STA $F7
BPL LE5BF
LE5E9 CLC
LE5EA JSR LE3B0
JMP LE378
LE5F0 JSR LE3B7
LDA #$05
STA $F8
JMP LE535
RTI
BRK
SKB $AE
CLV
ASO $AC
LDA $AD07,y
???
LDA $07BA
PHA
LDA #$10
LE60D BIT IO
BEQ LE60D
LE611 BIT IO
BNE LE611
STX Timer2Low
STY Timer2High
PLA
STA Timer3Low
PLA
STA Timer3High
LDA #$50
STA IRQ_STATUS
LE628 LDA IO
CMP IO
BNE LE628
AND #$10
BNE LE603
JSR LE3CE
LDA #$10
LE637 BIT IO
BNE LE682
BIT IRQ_STATUS
BEQ LE637
LE640 LDA IO
CMP IO
BNE LE640
AND #$10
BNE LE682
LDA #$40
LE64C BIT IRQ_STATUS
BEQ LE64C
LE651 LDA IO
CMP IO
BNE LE651
AND #$10
BNE LE687
LDA $07BC
STA Timer2Low
LDA $07BD
STA Timer2High
LDA #$10
STA IRQ_STATUS
LDA #$10
LE66E BIT IRQ_STATUS
BEQ LE66E
LE673 LDA IO
CMP IO
BNE LE673
AND #$10
BEQ LE68C
BIT $E5FC
BMI LE68A
LE682 BIT $E5FA
BVS LE68A
LE687 BIT $E5FB
LE68A CLC
RTS
LE68C SEC
RTS
RTI
BRK
SKB $20
ORA $B0E5,x
AND $1270,x
BPL LE69C
BMI LE6C3
LE69C JSR LE5FD
BCS LE6D3
BVS LE6A5
BVC LE6D3
LE6A5 BIT $E68F
CLC
RTS
JSR LE5FD
BVS LE6B3
BPL LE6BE
BMI LE6D3
LE6B3 JSR LE5FD
BCS LE6D3
BVS LE6B3
BPL LE6D3
BMI LE6C3
LE6BE BIT $E68E
CLC
RTS
LE6C3 JSR LE5FD
BCS LE6D3
BVS LE6D3
BPL LE6CE
BMI LE6D3
LE6CE BIT $E690
CLC
RTS
LE6D3 SEC
RTS
LE6D5 TSX
STX $07BF
CLC
ROR $07CC
CLI
LE6DE JSR LE691
BCS LE6DE
BVS LE6DE
BPL LE6DE
JSR LE403
CLC
RTS
LE6EC BIT $07CC
BMI LE742
JSR LE6D5
BCS LE742
LE6F6 LDA #$01
STA $07B1
LDX #$08
STX $07B5
SEC
ROR $07CC
LE704 JSR LE691
BCS LE742
BVS LE70F
BPL LE71C
BMI LE742
LE70F CLC
ROR $A7
INC $07B1
DEC $07B5
BNE LE704
BEQ LE724
LE71C SEC
ROR $A7
DEC $07B5
BNE LE704
LE724 JSR LE691
BCS LE742
BVS LE72F
BPL LE738
BMI LE742
LE72F LDA $07B1
AND #$01
BNE LE742
BEQ LE73F
LE738 LDA $07B1
AND #$01
BEQ LE742
LE73F CLC
BCC LE743
LE742 SEC
LE743 SEI
PHP
CLC
ROR $07CC
PLP
RTS
LE74B TSX
STX $07BE
LDA $93
BEQ LE756
SEC
ROR $93
JSR LE38D
;
; Load
;
LE759 JSR LE364 ; Blank screen
LDA $07C0
STA $B6
LDA $07C1
STA $B7
LDA $07C2
STA $03F5
LDA $07C3
STA $03F6
JSR LE91D
LDY #$00
STY $07B6
STY $07B7
STY $F5
STY $B1
STY $F8
LDA #$B6
STA $07DF
BIT $07B0
BPL LE7A0
JSR LE6EC
BCS LE79D
LDA $A7
STA $F8
EOR $F5
STA $F5
JMP LE7A0
LE79D SEC
ROR $F8
LE7A0 JSR LE6EC
BCS LE7BE
LDY #$00
JSR $07D9
NOP
BIT $93
BMI LE7B1
LDA $A7
LE7B1 CMP $A7
BNE LE7BE
STA ($B6),y
EOR $F5
STA $F5
JMP LE7DC
LE7BE LDY $07B6
CPY #$1E
BCS LE7D7
LDA $B6
STA $0437,y
LDA $B7
STA $0455,y
INC $07B6
INC $B1
JMP LE7DC
LE7D7 LDA #$FF
STA $07B6
LE7DC INC $B6
BNE LE7E2
INC $B7
LE7E2 INC $03F5
BNE LE7A0
INC $03F6
BNE LE7A0
LDA $07B6
STA $07B7
JSR LE6EC
LDA $07B7
BNE LE800
LDA $A7
CMP $F5
BNE LE803
LE800 JMP LE80A
LE803 LDA $F7
BMI LE80A
JMP LE8B7
LE80A LDA $F7
BMI LE819
LDA $07B7
BEQ LE816
JMP LE8B7
LE816 JMP LE8C7
LE819 LDA #$00
STA $07B6
STA $F5
LDA $07C0
STA $B6
LDA $07C1
STA $B7
LDA $07C2
STA $03F5
LDA $07C3
STA $03F6
JSR LE91D
BIT $07B0
BPL LE853
JSR LE6EC
BIT $F8
BPL LE84D
LDA $A7
STA $F8
BCC LE84D
ROR $F8
LE84D LDA $F8
EOR $F5
STA $F5
LE853 JSR LE6EC
ROR $07C4
LDA $A7
EOR $F5
STA $F5
BIT $07B7
BMI LE896
LDY $07B6
CPY $07B7
BEQ LE896
LDA $0437,y
CMP $B6
BNE LE896
LDA $0455,y
CMP $B7
BNE LE896
INC $07B6
LDA $07C4
BMI LE896
LDY #$00
JSR $07D9
NOP
BIT $93
BMI LE88E
LDA $A7
LE88E CMP $A7
BNE LE896
DEC $B1
STA ($B6),y
LE896 INC $B6
BNE LE89C
INC $B7
LE89C INC $03F5
BNE LE853
INC $03F6
BNE LE853
JSR LE6EC
LDA #$00
STA $90
LDA $F8
LDX $B1
BEQ LE8C7
BIT $93
BMI LE8BF
LE8B7 LDA #$60
STA $90
SEC
JMP LE8C8
LE8BF LDA #$10
STA $90
SEC
JMP LE8C8
LE8C7 CLC
LE8C8 JSR LE3B0
JSR LE378
RTS
RLA ($03),y
EOR ($FF,x)
LE8D3 LDY #$03
LE8D5 LDA $E8CF,y
STA $07C0,y
DEY
BPL LE8D5
STY $07B0
LDA $93
PHA
INY
STY $93
STY $0539
JSR LE74B
PLA
STA $93
JMP LE3C3
;
; init tape read
;
LE8F3 LDA $B2
STA $07C0
LDA $B3
STA $07C1
CLC
LDA $9D
SBC $B2
EOR #$FF
STA $07C2
LDA $9E
SBC $B3
EOR #$FF
STA $07C3
CLC
ROR $07B0
JMP LE74B
LE917 db $02,$01,$02,$02,$0d,$02
LDX #$05 ; Copy in timer values
LDA LE917,x
STA $07B8,x
DEX
BPL LE91F
LE928 LDA #$0A
STA $07C5
LE92D JSR LE5FD
BCS LE928
BVC LE928
DEC $07C5
BNE LE92D
LE939 LDA #$00
STA $BA
STA $BB
LDY #$10
LE941 LDX #$00
LDA #$10
LE945 BIT IO
BEQ LE945
LE949 BIT IO
BNE LE949
LE94D INX
BEQ LE939
BIT IO
BEQ LE94D
LE954 INX
BEQ LE939
BIT IO
BNE LE954
TXA
CLC
ADC $BA
STA $BA
LDA #$00
ADC $BB
STA $BB
DEY
BNE LE941
LSR $BB
ROR $BA
LSR $BB
ROR $BA
LDA $BA
STA $07B8
ASL
STA $07BA
STA $07BC
LDA $BB
STA $07B9
ROL
STA $07BB
STA $07BD
LE98A JSR LE5FD
BCS LE98A
BVS LE98A
BPL LE98A
JSR LE5FD
BCS LE98A
BVS LE98A
BMI LE98A
CLC
ROR $07CC
JSR LE403
LDA #$03
STA $07C6
JSR LE6F6
BCC LE9B0
DEC $07C6
LE9B0 JSR LE6EC
BCC LE9BD
DEC $07C6
BNE LE9BD
JMP LE91D
LE9BD LDA $A7
AND #$0F
CMP #$01
BNE LE9B0
LDA $A7
AND #$80
STA $F7
RTS
LE9CC JSR LE8D3
BCS LEA1E
LDA $F8
CMP #$05
BEQ LEA1A
CMP #$01
BEQ LE9E3
CMP #$03
BEQ LE9E3
CMP #$04
BNE LE9CC
LE9E3 TAX
BIT $9A
BPL LEA17
JSR LFBD8
ORA $4F46
EOR $4E,x
SKB $20
BRK
LDY #$04
LE9F5 LDA ($B6),y
JSR LFFD2
INY
CPY #$15
BNE LE9F5
LDX #$FF
LEA01 JSR LE2EA
JSR LE2EA
DEX
BEQ LEA17
LDA #$7F
JSR LDB70
CMP #$7F
BEQ LEA1E
CMP #$DF
BNE LEA01
LEA17 CLC
LDA $F8
LEA1A RTS
NOP
NOP
NOP
LEA1E LDA #$00
RTS
LEA21 JSR LE9CC
BCS LEA53
CMP #$05
BEQ LEA55
LDY #$FF
LEA2C INY
CPY $AB
BEQ LEA57
LDA #$AF
STA $07DF
JSR $07D9
CMP $0337,y
BEQ LEA2C
LSR $F8
BCC LEA21
LDY #$FF
STY $07C3
DEY
STY $07C2
LDY #$01
JSR LE8D5
JMP LEA21
LEA53 LDA #$00
LEA55 SEC
RTS
LEA57 CLC
LDA $F8
RTS
LEA5B LDA $07D4
AND #$10
BEQ LEA94
LDA $FD10
AND #$02
BEQ LEA94
LDX #$00
BIT $07D0
BPL LEA79
LDA $07CF
STX $07D0
JMP LEA89
LEA79 BIT $07CE
BPL LEA94
BIT $07D6
BMI LEA94
LDA $07CD
STX $07CE
LEA89 STA $FD00
LDA $07D4
AND #$EF
STA $07D4
LEA94 RTS
LEA95 LDA $07D4
AND #$08
BEQ LEAF0
LDA $07D4
AND #$F7
STA $07D4
LDA $FD00
BEQ LEAC2
STA $07D5
CMP $FC
BNE LEAB7
LDA #$00
STA $07D6
BEQ LEAF0
LEAB7 CMP $FD
BNE LEAC2
LDA #$FF
STA $07D6
BNE LEAF0
LEAC2 LDA $07D3
CMP #$3F
BEQ LEAF0
CMP #$38
BNE LEADC
LDA $FD
BEQ LEADC
STA $07CF
LDA #$FF
STA $07D0
STA $07D7
LEADC LDX $07D1
INX
TXA
AND #$3F
STA $07D1
TAX
LDA $07D5
STA $03F7,x
INC $07D3
LEAF0 RTS
LEAF1 LDA $07D3
BEQ LEB2A
PHP
SEI
LDX $07D2
INX
TXA
AND #$3F
STA $07D2
PLP
TAX
LDA $03F7,x
PHA
DEC $07D3
LDA $07D3
CMP #$08
BNE LEB2B
BIT $07D7
BPL LEB2B
LDA $FC
BEQ LEB2B
STA $07CF
SEC
ROR $07D0
LSR $07D7
LEB25 BIT $07D8
BPL LEB35
LEB2A PHA
LEB2B LDA $07D4
AND #$4F
EOR #$40
STA $90
PLA
LEB35 CLC
RTS
LEB37 BIT $07CE
BMI LEB37
STA $07CD
SEC
ROR $07CE
JMP LEB2A
LEB46 LDA #$00
LDX #$0B
LEB4A STA $07CD,x
DEX
BPL LEB4A
STA $FD01
STA $FC
STA $FD
RTS
ORA $2F49
LSE $4520
HLT
HLT
LSE $2052
LAX ($0D,x)
LSE ($45),y
EOR ($52,x)
LSE ($48,x)
EOR #$4E
LSE $A0
LSR $4F
HLT
LDY #$0D
BVC LEBC8
EOR $53
LSE ($20),y
BVC LEBC8
EOR ($59,x)
JSR $4E4F
JSR $4154
BVC LEB4B
BVC LEBDA
EOR $53
LSE ($20),y
HLT
EOR $43
LSE $4452
JSR $2026
BVC LEBE3
EOR ($59,x)
JSR $4E4F
JSR $4154
BVC LEB66
ORA $4F4C
EOR ($44,x)
EOR #$4E
DCM $0D
LSE ($41),y
LSR $49,x
LSR $A047
ORA $4556
HLT
EOR #$46
EOR $4E49,y
DCM $0D
LSR $4F
EOR $4E,x
SKB $A0
ORA $4B4F
STA $9A24
LEBC8 BPL LEBD7
LEBCA LDA $EB58,y
PHP
AND #$7F
JSR LFFD2
INY
PLP
BPL LEBCA
LEBD7 CLC
RTS
LDA $98
BNE LEBF7
LDA $EF
ORA $055D
BEQ LEC22
SEI
JMP LD8C1
LDA $98
BNE LEBF7
LDA $CA
STA $C5
LDA $CD
STA $C4
JMP LD965
LEBF7 CMP #$03
BNE LEC1A
ORA $C7
STA $C7
LDA $07E8
STA $C3
JMP LD965
LEC07 JSR LFBBA
CMP #$01
BNE LEC14
JSR LEC24
JMP LFBC4
LEC14 JSR LEAF1
JMP LFBC4
LEC1A BCC LEC07
LDA $90
BEQ LEC8B
LDA #$0D
LEC22 CLC
RTS
LEC24 LDY $0539
CPY #$BF
BCC LEC31
JSR LE8D3
BCC LEC24
RTS
LEC31 LDY $0539
LDA ($B6),y
PHA
INY
CPY #$BF
BCS LEC45
LDA ($B6),y
BNE LEC45
LDA #$40
JSR LF41E
LEC45 INC $0539
PLA
CLC
RTS
;
; Output
;
LEC4B PHA
LDA $99
CMP #$03
BNE LEC56
PLA
JMP LDC49
LEC56 BCC LEC5C
PLA
JMP LECDF
LEC5C JSR LFBB7
CMP #$01
BNE LEC84
LDY $0539
CPY #$BF
BCC LEC75
JSR LE535
BCS LEC7E
LDA #$02
STA $F8
LDY #$00
LEC75 PLA
STA ($B6),y
INY
STY $0539
BCC LEC88
LEC7E PLA
LDA #$00
JMP LFBC4
LEC84 PLA
JSR LEB37
LEC88 JMP LFBC1
LEC8B STX $BA
BIT $F9
BVS LEC96
LDX $BA
JMP LE252
LEC96 LDA $F9
AND #$30
TAX
LDA #$84
STA $FEC0,x
LECA0 LDA $FEC2,x
BMI LECA0
LDA #$00
STA $FEC3,x
STA $FEC2,x
LECAD LDA $FEC2,x
BPL LECAD
LDA $FEC1,x
AND #$03
CMP #$03
BNE LECBD
LDA #$40
LECBD JSR LF41E
LDA $FEC0,x
PHA
LDA #$40
STA $FEC2,x
LECC9 LDA $FEC2,x
BMI LECC9
LDA #$FF
STA $FEC3,x
LDA #$00
STA $FEC0,x
STA $FEC2,x
JMP LEDD4
NOP
LECDF BIT $F9
BMI LECE6
JMP LE21D
LECE6 PHA
STA $05E8
LDA #$83
LECEC STX $BA
PHA
LDA $F9
AND #$30
TAX
PLA
STA $FEC0,x
LECF8 LDA $FEC2,x
BMI LECF8
LDA $05E8
STA $FEC0,x
LDA #$00
STA $FEC2,x
LED08 LDA $FEC2,x
BPL LED08
LDA $FEC1,x
AND #$03
JSR LF41E
JMP LEDDB
;
; Set INPUT device
;
LED18 JSR LEEE8
BEQ LED20
JMP LF279
LED20 JSR LEEF8
BEQ LED36
CMP #$03
BEQ LED36
BCS LED3A
CMP #$02
BNE LED57
JSR LEB25
BCS LED39
LDA $AE
LED36 STA $98
CLC
LED39 RTS
LED3A TAX
JSR LEDFA
BIT $90
BMI LED54
LDA $AD
BPL LED4C
JSR LEE13
JMP LED4F
LED4C JSR LEE1A
LED4F TXA
BIT $90
BPL LED36
LED54 JMP LF27F
LED57 LDX $AD
CPX #$60
BEQ LED36
JMP LF282
; *****************************************
;
; Set output device
;
; 0 = Plus/4 keyboard
; 1 = cassette
; 2 = unused
; 3 = Plus/4 screen
; 4 = Printer
; 8 = (usually) Disk
; can also have more DISK devices...
;
; *****************************************
LED60 JSR LEEE8 ; get a free logical file slot
BEQ LED68 ; found one? if so jump
JMP LF279 ; display "?TOO MANY FILES ERROR" (10 files open MAX)
LED68 JSR LEEF8 ; set file values (sets CURRENT logical file number, secondary address and device)
BNE LED70 ; of current device = keyboard, then display "?NOT OUTPUT FILE ERROR"
LED6D JMP LF285
LED70 CMP #$03 ; is output device the Plus/4 screen?
BEQ LED81 ; if so, set screen
BCS LED85 ; if 4 or more, then try and set them
CMP #$02 ; else... must be tape, or ??????????? error?
BNE LEDA1 ; if NOT unused, then MUST be tape... so jump to tape.
JSR LEB25 ; try and set device, else display "?DEVICE NOT PRESENT ERROR"
BCS LED84 ; if we can't, then exit...
LDA CurrDev ; get current output device
LED81 STA $99 ; SET current output device
CLC ; exit
LED84 RTS
;
; on device >=4 then usually serial device (printed or disk)
;
LED85 TAX ; set device number
JSR LEE2C ; part of "TALK" - see if device is there?
BIT $90 ; error?
BMI LED9E ; if so...
LDA CurrSecAdd
BPL LED96
JSR LEE45
BNE LED99
LED96 JSR LEE4D
LED99 TXA
BIT $90
BPL LED81
LED9E JMP LF27F
LEDA1 LDX $AD
CPX #$60
BEQ LED6D
BNE LED81
; ***************************************************
;
; check for parallel DISK drive device connected.
; preserve "A"
;
; ***************************************************
LEDA9 PHA
STX $BA ; store device number
LDX #$30
LDA CurrDev
CMP #$08 ; is current device a disk?
BEQ LEDBA
CMP #$09 ; Disk Drive 2?
BNE LEDCF ; if NOT then try others...
LDX #$00 ; check for parallel disk drive(s)
LEDBA LDA #$55 ; using the DMA channel in the plus/4
STA $FEC0,x
EOR $FEC0,x
BNE LEDCF
LDA $FEC1,x
AND #$02
BNE LEDCF
STX $F9 ; set DMA control mask
CLC ; set parallel device found
db $24 ; mask "SEC" with "BIT $38"
LEDCF SEC ; set error, not a parallel device
LDX $BA ; get device number and return.
PLA
RTS
; ***************************************************
;
;
;
; ***************************************************
LEDD4 LDA $FEC2,x
BPL LEDD4
BMI LEDE0
LEDDB LDA #$00
STA $FEC0,x
LEDE0 LDA #$40
STA $FEC2,x
LDX $BA
PLA
CLC
RTS
LEDEA STA $FEF2
STA $FEC5
STA $FEC2
DEX
STX $FEC3
JMP LCFEA
LEDFA JSR LEDA9
BCC LEE02
JMP LE153
LEE02 PHA
LDA #$40
STA $05E8
LDA $F9
ORA #$40
STA $F9
LDA #$81
JMP LECEC
LEE13 BIT $F9
BVS LEE4C
JMP LE20C
LEE1A BIT $F9
BVS LEE21
JMP LE203
LEE21 PHA
NOP
NOP
STA $05E8
LDA #$82
JMP LECEC
;
; Check for device attached
; A = device to search for
;
LEE2C JSR LEDA9 ; Check for parallel disk drives
BCC LEE34 ; if found then skip serial check
JMP LE156 ; check serial for device
LEE34 PHA
LDA #$20
STA $05E8 ; set in DMA work area
LDA $F9 ; get dma control mask
ORA #$80 ; or in $80
STA $F9 ; store back
LDA #$81
JMP LECEC ;?????????????????????
LEE45 BIT $F9
BMI LEE4C
JMP LE1FC
LEE4C RTS
LEE4D BIT $F9
BMI LEE54
JMP LE1F7
LEE54 PHA
STA $05E8
LDA #$82
JMP LECEC
ROR $BA
JSR LEEED
BEQ LEE66
CLC
RTS
LEE66 JSR LEEF8
TXA
PHA
LDA $AE
BEQ LEECA
CMP #$03
BEQ LEECA
BCS LEEB5
CMP #$02
BNE LEE81
PHP
SEI
JSR LEB46
PLP
BEQ LEECA
LEE81 LDA $AD
AND #$0F
BEQ LEECA
LDY $0539
CPY #$BF
BCC LEE9C
JSR LE535
BCS LEEA5
LDA #$02
STA $F8
LDY #$00
STY $0539
LEE9C LDA #$00
STA ($B6),y
JSR LE535
BCC LEEA9
LEEA5 PLA
LDA #$00
RTS
LEEA9 LDA $AD
CMP #$62
BNE LEECA
JSR LE5F0
JMP LEECA
LEEB5 BIT $BA
BPL LEEC7
LDA $AE
CMP #$08
BCC LEEC7
LDA $AD
AND #$0F
CMP #$0F
BEQ LEECA
LEEC7 JSR LF211
LEECA PLA
TAX
DEC $97
CPX $97
BEQ LEEE6
LDY $97
LDA $0509,y
STA $0509,x
LDA $0513,y
STA $0513,x
LDA $051D,y
STA $051D,x
LEEE6 CLC
RTS
; *****************************************
;
; Open logical file
; Find a free logical file handle and return.
; X = -1 for error, not found.
;
; *****************************************
LEEE8 LDA #$00 ; clear I/O status word (ST)
STA $90 ; ST
TXA ; get channel number
LEEED LDX $97 ; get number of open files ( index into file area )
LEEEF DEX ; find a free slot...
BMI LEF07 ; too many files?
CMP $0509,x ; check logical file number
BNE LEEEF ; find a free file slot
RTS ; return with logical file number in "X"
LEEF8 LDA $0509,x
STA $AC
LDA $051D,x
STA $AD
LDA $0513,x
STA $AE
LEF07 RTS
LDA #$00
STA $97
LDX #$03
CPX $99
BCS LEF15
JSR LEF23
LEF15 CPX $98
BCS LEF1C
JSR LEF3B
LEF1C STX $99
LDA #$00
STA $98
RTS
LEF23 BIT $F9
BMI LEF2A
JMP LE23D
LEF2A PHA
LDA #$3F
STA $05E8
LDA $F9
AND #$7F
STA $F9
LDA #$81
JMP LECEC
LEF3B BIT $F9
BVS LEF42
JMP LE22F
LEF42 PHA
LDA #$5F
STA $05E8
LDA $F9
AND #$BF
STA $F9
LDA #$81
JMP LECEC
LDX $AC
JSR LEEE8
BNE LEF5D
JMP LF276
LEF5D LDX $97
CPX #$0A
BCC LEF66
JMP LF273
LEF66 INC $97
LDA $AC
STA $0509,x
LDA $AD
ORA #$60
STA $AD
STA $051D,x
LDA $AE
STA $0513,x
BEQ LEF86
CMP #$03
BEQ LEF86
BCC LEF88
JSR LF005
LEF86 CLC
RTS
LEF88 CMP #$02
BNE LEFB8
JSR LEB46
TAX
LEF90 INX
BEQ LEF9E
STX $FD03
CPX $FD03
BEQ LEF90
JMP LF27F
LEF9E SEC
ROR $07D8
LDA #$AF
STA $07DF
LDY #$00
JSR $07D9
STA $FD03
INY
JSR $07D9
STA $FD02
CLC
RTS
LEFB8 LDA $AD
AND #$0F
BNE LEFEA
JSR LE31B
BCS LEFE9
JSR LF160
LDA $AB
BEQ LEFD4
JSR LEA21
BCC LEFDF
BEQ LEFE9
LEFD1 JMP LF27C
LEFD4 JSR LE9CC
BEQ LEFE9
BCS LEFD1
CMP #$05
BEQ LEFD1
LEFDF LDY #$BF
STY $0539
LDA #$02
STA $F8
LEFE8 CLC
LEFE9 RTS
LEFEA JSR LE319
BCS LEFE9
LDA #$04
STA $F8
JSR LE56C
BCS LF004
LDA #$02
STA $F8
LDY #$00
STY $0539
STY $0537
LF004 RTS
LF005 LDA $AD
BMI LEFE8
LDY $AB
BEQ LEFE8
LDA #$00
STA $90
LDA $AE
JSR LEE2C
BIT $90
BMI LF025
LDA $AD
ORA #$F0
JSR LEE4D
LDA $90
BPL LF02A
LF025 PLA
PLA
JMP LF27F
LF02A LDA $AB
BEQ LF040
LDY #$00
LF030 LDA #$AF
STA $07DF
JSR $07D9
JSR LECDF
INY
CPY $AB
BNE LF030
LF040 JMP LF223
;
; $F043 - Load program
;
LF043 STX $B4 ; Store load RAM base
STY $B5 ; (lo,hi)
JMP ($032E) ; call user/kernal load routine
LF04A STA $93 ; Kernal LOAD routine
LDA #$00 ; store IO status word
STA $90
LDA $AE ; Check current device
BNE LF057 ; if we HAVE one.. carry on
LF054 JMP LF28B ; else print "I/O ERROR #9"
LF057 CMP #$03 ; Check for device "3"
BEQ LF054 ; if so exit with error
BCS LF064 ; if >3 carry on.
CMP #$02 ; Check for device "2"
BEQ LF054 ; if so else exit with error
JMP LF0F0 ; MUST be load from TAPE
;
; Load from serial
;
LF064 LDY $AB
BNE LF06B
JMP LF288
LF06B LDX $AD
JSR LF160
LDA #$60
STA $AD
JSR LF005
LDA $AE
JSR LEDFA
LDA $AD
JSR LEE1A
JSR LEC8B
STA $9D
LDA $90
LSR
LSR
BCS LF0E8
JSR LEC8B
STA $9E
TXA
BNE LF09C
LDA $B4
STA $9D
LDA $B5
STA $9E
LF09C JSR LF189
LF09F LDA #$FD
AND $90
STA $90
JSR LFFE1
BNE LF0AD
JMP LF1FF
LF0AD JSR LEC8B
TAX
LDA $90
LSR
LSR
BCS LF09F
TXA
LDY $93
BEQ LF0D4
LDY #$00
STA $07C7
LDA #$9D
STA $07DF
JSR $07D9
CMP $07C7
BEQ LF0D6
LDA #$10
JSR LF41E
BIT $9D91
LF0D6 INC $9D
BNE LF0DC
INC $9E
LF0DC BIT $90
BVC LF09F
JSR LEF3B
JSR LF211
BCC LF0EB
LF0E8 JMP LF27C ; print "I/O ERROR #4"
LF0EB LDX $9D ; get END address of file, and return it
LDY $9E ; to the calling routine.
LF0EF RTS
;
; $F0F0 - Load from TAPE
;
LF0F0 JSR LE31B ; print "PRESS PLAY ON TAPE"
BCS LF0EF ; if BREAK pressed.. exit
JSR LF160 ; print "SEARCHING"
LF0F8 LDA $AB ; get file name length
BEQ LF105 ; if ZERO.. skip loading a "filename"
JSR LEA21 ; Call "find a specific header"
BCC LF10C ; found it? yes.. carry on.
BEQ LF0EF ; break pressed?
BCS LF0E8 ; another error? exit with error.
LF105 JSR LE9CC ; Call "find ANY header"
BEQ LF0EF ; break pressed? exit.
BCS LF0E8 ; another error? exit with error.
LF10C LDA $F8 ; check to see if we FOUND the header
CMP #$01 ; if yes (A=1)
BEQ LF124 ; jump down and LOAD it
CMP #$03 ; if not the one we were looking for,
BNE LF0F8 ; loop back and try again.
LF116 LDY #$00 ; Get load address from header
LDA ($B6),y ; first 2 bytes are SAVED start address
STA $B4 ; next 2 are the END address,
INY ; then we have the name
LDA ($B6),y ; This copies the LOAD address into the
STA $B5 ; cassed buffer base address.
JMP LF128
LF124 LDA $AD ; Is there a SECONDARY address?
BNE LF116 ; if not, go back and get the base address
LF128 SEC ; This section simply subtracts the start
LDY #$02 ; and end address to get the file length
LDA ($B6),y ; It then adds on the BASE of the file
LDY #$00 ; cassette buffer (since the secondary
SBC ($B6),y ; address can move it), and stores it
TAX ; in $9d-$9e
LDY #$03
LDA ($B6),y
LDY #$01
SBC ($B6),y
TAY
CLC
TXA
ADC $B4
STA $9D
TYA
ADC $B5 ; $9d-$9e now hold the END address of
STA $9E ; the file to be loaded.
LDA $B4 ; copy the START address into a work
STA $B2 ; copy ($b2-$b3)
LDA $B5
STA $B3
JSR LF189 ; print "LOADING"
JSR LE8F3 ; init tape read
BCC LF0EB ; sucessfull? if so.. return/
LDA #$1D ; check LOAD/VERIFY flag
BIT $93
BPL LF0EF ; do we WANT to verify? if so return okay
LDA #$1C ; if it wasn't sucessful, return error.
BNE LF0EF
;
; $F160 - print "searching"
;
LF160 LDA $9A ; check current mode
BPL LF188 ; if in DIRECT mode ($80) return.
LDY #$0C ; print "searching"
JSR LEBCA
LDA $AB ; check for filename
BEQ LF188 ; if we don't have one return.
LDY #$17 ; else print " for"
JSR LEBCA
;
; $F172 Print filename
;
LF172 LDY $AB ; do we HAVE a filename?
BEQ LF188 ; if not... exit
LDY #$00 ; else print filename
LF178 LDA #$AF
STA $07DF
JSR $07D9
JSR LFFD2
INY
CPY $AB
BNE LF178
LF188 RTS
;
; $F189 - Print "LOADING" or "VERIFYING"
;
LF189 LDY #$49 ; get message to print (loading)
LDA $93 ; get loading/verifying flay
BEQ LF191 ; if loading (A=0) print that message
LDY #$59 ; else print "VERIFYING" message
LF191 JMP LEBC6
;
; $F194 - SAVE program
;
LF194 STX $9D
STY $9E
TAX
LDA DIRECTION,x
STA $B2
LDA IO,x
STA $B3
JMP ($0330) ; call user/kernal SAVE routine
;
; $F1A4 - Kernal SAVE routine
;
LF1A4 LDA $AE
BNE LF1AB
LF1A8 JMP LF28B
LF1AB CMP #$03
BEQ LF1A8
CMP #$02
BEQ LF1A8
BCC LF234
LDA #$61
STA $AD
LDY $AB
BNE LF1C0
JMP LF288
LF1C0 JSR LF005
JSR LF228
LDA $AE
JSR LEE2C
LDA $AD
JSR LEE4D
LDY #$00
LDA $B3
STA $9C
LDA $B2
STA $9B
LDA $9B
JSR LECDF
LDA $9C
JSR LECDF
LF1E4 SEC
LDA $9B
SBC $9D
LDA $9C
SBC $9E
BCS LF20E
LDA #$9B
STA $07DF
JSR $07D9
JSR LECDF
JSR LFFE1
BNE LF206
LF1FF JSR LF211
LDA #$00
SEC
RTS
LF206 INC $9B
BNE LF1E4
INC $9C
BNE LF1E4
LF20E JSR LEF23
LF211 BIT $AD
BMI LF226
LDA $AE
JSR LEE2C
LDA $AD
AND #$EF
ORA #$E0
JSR LEE4D
LF223 JSR LEF23
LF226 CLC
RTS
LF228 LDA $9A
BPL LF264
LDY #$51
JSR LEBCA
JMP LF172
LF234 JSR LE319
BCS LF262
JSR LF228
LDX #$03
LDA $AD
AND #$01
BNE LF246
LDX #$01
LF246 STX $F8
JSR LE56C
BCS LF262
LDA #$00
STA $F8
JSR LE5B0
BCS LF262
LDA $AD
AND #$02
BEQ LF261
JSR LE5F0
BCS LF262
LF261 CLC
LF262 LDA #$00
LF264 RTS
LDA $91
CMP #$7F
BNE LF272
PHP
JSR LFFCC
STA $EF
PLP
LF272 RTS
LF273 LDA #$01
BIT $02A9
BIT $03A9
BIT $04A9
BIT $05A9
BIT $06A9
BIT $07A9
BIT $08A9
BIT $09A9
PHA
JSR LFFCC
LDY #$00
BIT $9A
BVC LF2A1
JSR LEBCA
PLA
PHA
ORA #$30
JSR LFFD2
LF2A1 PLA
SEC
RTS
LF2A4 LDX #$FF
SEI
TXS
CLD
JSR LCFA6
JSR LF30B
JSR LCF11
PHP
BMI LF2BC
LDA #$A5
CMP $0508
BEQ LF2BF
LF2BC JSR LF352
LF2BF JSR LF2CE
JSR LD84E
PLP
BMI LF2CB
JMP LF445
LF2CB JMP L8000
LF2CE LDX #$EB
LDY #$F2
CLC
STX $B8
STY $B9
LDY #$1F
LF2D9 LDA $0312,y
BCS LF2E0
LDA ($B8),y
LF2E0 STA $0312,y
BCC LF2E7
STA ($B8),y
LF2E7 DEY
BPL LF2D9
RTS
HLT
DEC $CE0E
JMP $53F4
INS $EE5D
CLC
SBC $ED60
SKW $E8EF
SBC #$4B
CPX $F265
CMP $08EB,y
INS $F44C
LSR
BEQ LF2AE
SBC ($A9),y
ASO $0085
LDA #$08
STA IO
LDX #$FF
STX $FD10
STX $FEF3
INX
STX $FEF4
STX $FEF0
LDA #$40
STA $FEF5
JSR LEDEA
LF32A LDA $F338,x
STA Timer1Low,x
INX
CPX #$1A
BNE LF32A
JMP LEB46
SBC ($39),y
BRK
BRK
BRK
BRK
ASO $0008,y
BRK
HLT
CPY DIRECTION
BRK
BRK
BRK
BRK
SKB $D0
PHP
ADC ($5B),y
ADC $77,x
ROR $00A9
TAY
LF355 STA $0002,y
STA $0200,y
STA $0300,y
STA $0400,y
STA $0700,y
INY
BNE LF355
LDX #$08
STX $9F
LF36B LDA $FFF5,x
STA $FFF5,x
CMP $3FF5,x
BNE LF377
INY
LF377 CMP $7FF5,x
BNE LF37E
DEC $9F
LF37E DEX
BNE LF36B
CPY #$08
BEQ LF38C
LDA $9F
BNE LF391
LDY #$7F
BIT $3FA0
LDX #$F6
BIT $FDA0
CLC
JSR LF42F
LDA #$10
STA $0532
LDX #$3A
LF39E LDA $F3D1,x
STA $055E,x
DEX
BNE LF39E
STX $055D
LDX #$0B
LF3AC LDA $CFB3,x
STA $07D9,x
DEX
BPL LF3AC
LDX #$0F
LF3B7 LDA $E143,x
STA $0113,x
DEX
BPL LF3B7
LDA #$A5
STA $0508
LDA #$04
STA $07FA
LDA #$18
STA $07FB
RTS
NOP
NOP
ASO $06
ASL
ASO $06
SKB $05
ORA $47
HLT
EOR ($50,x)
PHA
EOR #$43
SKB $4C
LSE $4441
HLT
SKB $49
HLT
EOR $43
SKB $4F
HLT
EOR $530D,y
LSE ($4E,x)
LSE ($4C,x)
HLT
ORA $5344
EOR ($56,x)
EOR $22
HLT
EOR $4E,x
ORA $494C
LSE ($54),y
ORA $4548
JMP $0D50
LF40C STA $AB
STX $AF
STY $B0
RTS
LF413 STA $AC
STX $AE
STY $AD
RTS
LF41A STA $9A
LF41C LDA $90
LF41E ORA $90
STA $90
RTS
LF423 STA $0535
RTS
LF427 BCC LF42F
LDX $0533
LDY $0534
LF42F STX $0533
STY $0534
RTS
LF436 BCC LF43E
LDX $0531
LDY $0532
LF43E STX $0531
STY $0532
RTS
LF445 LDX #$00
STX $0554
BEQ LF458
CLD
LDX #$05
LF44F PLA
STA $0552,x
DEX
BPL LF44F
LDX #$09
LF458 STX $07F4
LDA #$C0
STA $9A
TSX
STX $0558
LDX $07F4
JSR LCF66
LDA TEDREG_06
ORA #$10
STA TEDREG_06
LDA #$00
STA $A1
STA $A2
CLI
LDX #$0F
JSR LCF66
LDA $0552
JSR LFB10
LDY #$00
LF485 LDA $0553,y
JSR LFB05
INY
CPY #$06
BCC LF485
BCS LF495
LF492 JSR LFB0B
LF495 JSR LFB3A
LDX #$00
STX $F3
LF49C JSR LFFCF
STA $0200,x
INX
CMP #$0D
BNE LF49C
DEX
STX $F4
LF4AA JSR LFB3F
BEQ LF495
CMP #$20
BEQ LF4AA
LDX #$0F
LF4B5 CMP $F570,x
BEQ LF4BF
DEX
BPL LF4B5
BMI LF492
LF4BF CPX #$0D
BCS LF4D1
TXA
ASL
TAX
LDA $F581,x
PHA
LDA $F580,x
PHA
JMP LFAAD
LF4D1 STA $055B
JMP LF66E
BCS LF4E1
JSR LFB5B
JSR LFAAD
BCC LF4E7
LF4E1 LDA #$0B
STA $F1
BNE LF4F5
LF4E7 JSR LFB64
LSR
ROR $F1
LSR
ROR $F1
LSR
ROR $F1
STA $F2
LF4F5 JSR LFFE1
BEQ LF507
JSR LF59A
LDA #$08
JSR LFB96
JSR LFB72
BCS LF4F5
LF507 JMP LF495
BCS LF507
LDA $F1
LDY $F2
STA $0553
STY $0552
LDY #$00
LF518 JSR LFAAD
BCS LF507
LDA $F1
STA $0554,y
INY
CPY #$05
BCC LF518
BCS LF507
BCS LF53E
JSR LFB5B
LDY #$00
LF530 JSR LFAAD
BCS LF53E
LDA $F1
STA ($A1),y
INY
CPY #$08
BCC LF530
LF53E JSR LFBD8
ASO $914F,y
BRK
JSR LF59A
JMP LF495
BCS LF557
LDA $F1
STA $0553
LDA $F2
STA $0552
LF557 LDX $0558
TXS
LDX #$00
LF55D LDA $0552,x
PHA
INX
CPX #$03
BNE LF55D
LDX $0556
LDY $0557
LDA $0555
RTI
CLI
EOR $4752
SKB $43
SKB $41
ROL $4648
ROL $4C3B,x
LSE ($56),y
HLT
SKB $D6
SKB $77
SKB $4A
SBC $D0,x
SBC $CD,x
SBC $23,x
INS $1E,x
SBC $F91E,y
ORA $09F6
INS $28,x
SBC $09,x
SBC $20,x
NOP
INS $3EA9,y
JSR LFFD2
JSR LFAFB
LDY #$00
LF5A7 JSR LCF96
JSR LFB05
INY
CPY #$08
BCC LF5A7
JSR LFBD8
NOP
HLT
BRK
LDY #$00
LF5BA JSR LCF96
AND #$7F
CMP #$20
BCS LF5C5
LDA #$2E
LF5C5 JSR LFFD2
INY
CPY #$08
BCC LF5BA
RTS
LDA #$00
BIT $80A9
STA $BB
JSR LFBA0
BCS LF60A
JSR LFAAD
BCS LF60A
JSR LFB3A
LDY #$00
LF5E4 JSR LCF96
BIT $BB
BPL LF5ED
STA ($F1),y
LF5ED CMP ($F1),y
BEQ LF5F9
JSR LFFE1
BEQ LF607
JSR LFAFB
LF5F9 INC $F1
BNE LF5FF
INC $F2
LF5FF JSR LFB94
JSR LFB86
BCS LF5E4
LF607 JMP LF495
LF60A JMP LF492
NOP
JSR LFBA0
BCS LF60A
LDY #$00
JSR LFB3F
CMP #$27
BNE LF62E
JSR LFB3F
LF61F STA $025D,y
INY
JSR LFB3F
BEQ LF643
CPY #$20
BNE LF61F
BEQ LF643
LF62E STY $055C
JSR LFAAB
LF634 LDA $F1
STA $025D,y
INY
JSR LFAAD
BCS LF643
CPY #$20
BNE LF634
LF643 STY $055B
JSR LFB3A
LF649 LDX #$00
LDY #$00
LF64D JSR LCF96
CMP $025D,x
BNE LF664
INY
INX
CPX $055B
BNE LF64D
JSR LFFE1
BEQ LF607
JSR LFAFB
LF664 JSR LFB94
JSR LFB86
BCS LF649
BCC LF607
LF66E LDY #$01
STY $AE
STY $AD
DEY
STY $AB
STY $90
STY $93
LDA #$02
STA $B0
LDA #$5D
STA $AF
LF683 JSR LFB3F
BEQ LF6E6
CMP #$20
BEQ LF683
CMP #$22
BNE LF6A7
LDX $F3
LF692 CPX $F4
BCS LF6E6
LDA $0200,x
INX
CMP #$22
BEQ LF6AB
STA ($AF),y
INC $AB
INY
CPY #$11
BCC LF692
LF6A7 JMP LF492
NOP
LF6AB STX $F3
JSR LFB3F
JSR LFAAD
BCS LF6E6
LDA $F1
BEQ LF6A7
CMP #$03
BEQ LF6A7
STA $AE
JSR LFAAD
BCS LF6E6
JSR LFB5B
JSR LFAAD
BCS LF6A7
JSR LFB3A
LDX $F1
LDY $F2
LDA $055B
CMP #$53
BNE LF6A7
LDA #$00
STA $AD
LDA #$A1
JSR LFFD8
LF6E3 JMP LF495
LF6E6 LDA $055B
CMP #$56
BEQ LF6F3
CMP #$4C
BNE LF6A7
LDA #$00
LF6F3 JSR LFFD5
LDA $90
AND #$10
BEQ LF6E3
LDA $055B
CMP #$4C
BEQ LF6A7
LDX #$2A
JSR LCF66
BMI LF6E3
JSR LFBA0
BCS LF6A7
JSR LFAAD
BCS LF6A7
LDY #$00
LF716 LDA $F1
STA ($A1),y
JSR LFB94
JSR LFB86
BCS LF716
BCC LF6E3
BCS LF72E
JSR LFB5B
JSR LFAAD
BCC LF734
LF72E LDA #$14
STA $F1
BNE LF737
LF734 JSR LFB64
LF737 JSR LFB3A
JSR LFFE1
BEQ LF6E3
JSR LF752
INC $F6
LDA $F6
JSR LFB96
LDA $F6
JSR LFB74
BCS LF737
BCC LF6E3
LF752 LDA #$2E
JSR LFFD2
JSR LFB08
LF75A JSR LFAFB
JSR LFB08
LDY #$00
JSR LCF96
JSR LF7D4
PHA
LDX $F6
INX
LF76C DEX
BPL LF77A
JSR LFBD8
JSR $2020
BRK
JMP LF780
NOP
LF77A JSR LCF96
JSR LFB05
LF780 INY
CPY #$03
BCC LF76C
PLA
LDX #$03
JSR LF81B
LDX #$06
LF78D CPX #$03
BNE LF7A5
LDY $F6
BEQ LF7A5
LF795 LDA $054B
CMP #$E8
JSR LCF96
BCS LF7BC
JSR LFB10
DEY
BNE LF795
LF7A5 ASL $054B
BCC LF7B8
LDA $F88E,x
JSR LFFD2
LDA $F894,x
BEQ LF7B8
JSR LFFD2
LF7B8 DEX
BNE LF78D
RTS
LF7BC JSR LF7C8
CLC
ADC #$01
BNE LF7C5
INX
LF7C5 JMP LFAFF
LF7C8 LDX $A2
TAY
BPL LF7CE
DEX
LF7CE ADC $A1
BCC LF7D3
INX
LF7D3 RTS
LF7D4 TAY
LSR
BCC LF7E3
LSR
BCS LF7F2
CMP #$22
BEQ LF7F2
AND #$07
ORA #$80
LF7E3 LSR
TAX
LDA $F83D,x
BCS LF7EE
LSR
LSR
LSR
LSR
LF7EE AND #$0F
BNE LF7F6
LF7F2 LDY #$80
LDA #$00
LF7F6 TAX
LF7F7 LDA $F881,x
STA $054B
AND #$03
STA $F6
TYA
AND #$8F
TAX
TYA
LDY #$03
CPX #$8A
BEQ LF817
LF80C LSR
BCC LF817
LSR
LF810 LSR
ORA #$20
DEY
BNE LF810
INY
LF817 DEY
BNE LF80C
RTS
LF81B TAY
LDA $F89B,y
STA $9F
LDA $F8DB,y
STA $A0
LF826 LDA #$00
LDY #$05
LF82A ASL $A0
ROL $9F
ROL
DEY
BNE LF82A
ADC #$3F
JSR LFFD2
DEX
BNE LF826
JMP LFB08
RTI
HLT
EOR $03
BNE LF84B
RTI
ORA #$30
HLT
EOR $33
BNE LF853
LF84B RTI
ORA #$40
HLT
EOR $33
BNE LF85B
LF853 RTI
ORA #$40
HLT
EOR $B3
BNE LF863
LF85B RTI
ORA #$00
HLT
SKB $33
BNE LF7EF
LF863 SKB DIRECTION
ORA ($22),y
SKB $33
BNE LF7F7
SKB $9A
BPL LF891
SKB $33
BNE LF87B
RTI
ORA #$10
HLT
SKB $33
BNE LF883
LF87B RTI
ORA #$62
ASO ($78),y
LDA #$00
AND ($81,x)
SKB DIRECTION
BRK
EOR $914D,y
HLT
STX $4A
STA $9D
BIT $2C29
RLA ($28,x)
BIT $59
BRK
CLI
BIT $24
BRK
SKW $1C8A
RLA ($5D,x)
XAA #$1B
LDA ($9D,x)
TXA
ORA $9D23,x
XAA #$1D
LDA (DIRECTION,x)
AND #$19
LDX $A869
ORA $2423,y
LSE ($1B),y
RLA ($24,x)
LSE ($19),y
LDA (DIRECTION,x)
NOP
LSE $A55B,y
ADC #$24
BIT $AE
LDX $ADA8
AND #$00
SKW $1500
SAY $9C6D,x
LDA $69
AND #$53
STY $13
SKB $11
LDA $69
RLA ($A0,x)
CLD
HLT
NOP
PHA
ROL $62
STY $88,x
SKB $44
INY
SKB $68
SKB $E8
STY DIRECTION,x
LDY $08,x
STY $74
LDY $28,x
ROR $F474
CPY $724A
HLT
LDY $8A
BRK
TAX
LDX #$A2
SKB $74
SKB $72
SKB $68
HLT
HLT
HLT
BRK
HLT
BRK
NOP
NOP
ROL $26
HLT
HLT
DEY
INY
CPY $CA
ROL $48
SKB $44
LDX #$C8
ORA $2020
JSR $0390
JMP LF492
JSR LFB5B
LF927 LDX #$00
STX $78
LF92B JSR LFB3F
BNE LF937
CPX #$00
BNE LF937
JMP LF495
LF937 CMP #$20
BEQ LF927
STA $054C,x
INX
CPX #$03
BNE LF92B
LF943 DEX
BMI LF958
LDA $054C,x
SEC
SBC #$3F
LDY #$05
LF94E LSR
ROR $78
ROR $77
DEY
BNE LF94E
BEQ LF943
LF958 LDX #$02
LF95A JSR LFB3F
BEQ LF97D
CMP #$20
BEQ LF95A
JSR LFA7D
BCS LF976
JSR LFA8B
LDY $F1
STY $F2
STA $F1
LDA #$30
STA $77,x
INX
LF976 STA $77,x
INX
CPX #$0A
BCC LF95A
LF97D STX $9F
LDX #$00
STX $054F
LF984 LDX #$00
STX $0550
LDA $054F
JSR LF7D4
LDX $054B
STX $A0
TAX
LDA $F8DB,x
JSR LFA5E
LDA $F89B,x
JSR LFA5E
LDX #$06
LF9A3 CPX #$03
BNE LF9BA
LDY $F6
BEQ LF9BA
LF9AB LDA $054B
CMP #$E8
LDA #$30
BCS LF9D2
JSR LFA5B
DEY
BNE LF9AB
LF9BA ASL $054B
BCC LF9CD
LDA $F88E,x
JSR LFA5E
LDA $F894,x
BEQ LF9CD
JSR LFA5E
LF9CD DEX
BNE LF9A3
BEQ LF9D8
LF9D2 JSR LFA5B
JSR LFA5B
LF9D8 LDA $9F
CMP $0550
BEQ LF9E2
JMP LFA6A
LF9E2 LDY $F6
BEQ LFA1A
LDA $A0
CMP #$9D
BNE LFA12
LDA $F1
SBC $A1
STA $0551
LDA $F2
SBC $A2
BCC LFA02
BNE LFA72
LDX $0551
BMI LFA72
BPL LFA0B
LFA02 TAY
INY
BNE LFA72
LDX $0551
BPL LFA72
LFA0B DEX
DEX
TXA
LDY $F6
BNE LFA15
LFA12 LDA $00F0,y
LFA15 STA ($A1),y
DEY
BNE LFA12
LFA1A LDA $054F
STA ($A1),y
JSR LFB35
LDX #$28
JSR LCF66
JSR LF75A
INC $F6
LDA $F6
JSR LFB96
LDA #$41
STA $0527
LDA #$20
STA $0528
STA $052D
LDA $A2
JSR LFB20
STA $0529
STX $052A
LDA $A1
JSR LFB20
STA $052B
STX $052C
LDA #$07
STA $EF
JMP LF495
LFA5B JSR LFA5E
LFA5E STX $07F3
LDX $0550
CMP $77,x
BEQ LFA75
PLA
PLA
LFA6A INC $054F
BEQ LFA72
JMP LF984
LFA72 JMP LF492
LFA75 INX
STX $0550
LDX $07F3
RTS
LFA7D CMP #$41
BCC LFA84
CMP #$47
RTS
LFA84 CMP #$30
BCC LFA9E
CMP #$3A
RTS
LFA8B JSR LFAA0
ASL
ASL
ASL
ASL
STA $055C
JSR LFB3F
JSR LFAA0
ORA $055C
LFA9E SEC
RTS
LFAA0 CMP #$3A
PHP
AND #$0F
PLP
BCC LFAAA
ADC #$08
LFAAA RTS
LFAAB DEC $F3
LFAAD LDA #$00
STA $F1
STA $F2
STA $07F4
LFAB6 JSR LFB3F
BEQ LFAF5
CMP #$20
BEQ LFAB6
LFABF CMP #$20
BEQ LFAF1
CMP #$2C
BEQ LFAF1
CMP #$30
BCC LFAF6
CMP #$47
BCS LFAF6
CMP #$3A
BCC LFAD9
CMP #$41
BCC LFAF6
SBC #$08
LFAD9 SBC #$2F
ASL
ASL
ASL
ASL
LDX #$04
LFAE1 ASL
ROL $F1
ROL $F2
DEX
BNE LFAE1
INC $07F4
JSR LFB3F
BNE LFABF
LFAF1 LDA $07F4
CLC
LFAF5 RTS
LFAF6 PLA
PLA
JMP LF492
LFAFB LDA $A1
LDX $A2
LFAFF PHA
TXA
JSR LFB10
PLA
LFB05 JSR LFB10
LFB08 LDA #$20
BIT $3FA9
JMP LFFD2
LFB10 STX $07F3
JSR LFB20
JSR LFFD2
TXA
LDX $07F3
JMP LFFD2
LFB20 PHA
JSR LFB2A
TAX
PLA
LSR
LSR
LSR
LSR
LFB2A AND #$0F
CMP #$0A
BCC LFB32
ADC #$06
LFB32 ADC #$30
RTS
LFB35 LDA #$91
JSR LFFD2
LFB3A LDA #$0D
JMP LFFD2
LFB3F STX $07F3
LDX $F3
CPX $F4
BCS LFB57
LDA $0200,x
CMP #$3A
BEQ LFB57
INC $F3
LFB51 PHP
LDX $07F3
PLP
RTS
LFB57 LDA #$00
BEQ LFB51
LFB5B LDA $F1
STA $A1
LDA $F2
STA $A2
RTS
LFB64 SEC
LDA $F1
SBC $A1
STA $F1
LDA $F2
SBC $A2
STA $F2
RTS
LFB72 LDA #$01
LFB74 STA $07F3
SEC
LDA $F1
SBC $07F3
STA $F1
LDA $F2
SBC #$00
STA $F2
RTS
LFB86 SEC
LDA $9F
SBC #$01
STA $9F
LDA $A0
SBC #$00
STA $A0
RTS
LFB94 LDA #$01
LFB96 CLC
ADC $A1
STA $A1
BCC LFB9F
INC $A2
LFB9F RTS
LFBA0 BCS LFBB6
JSR LFB5B
JSR LFAAD
BCS LFBB6
JSR LFB64
LDA $F1
STA $9F
LDA $F2
STA $A0
CLC
LFBB6 RTS
LFBB7 STA $0110
LFBBA STX $0112
STY $0111
RTS
LFBC1 LDA $0110
LFBC4 LDX $0112
LDY $0111
RTS
LFBCB STX $FA
JSR LCF11
LDX $FA
EOR #$80
ASL
LDA #$00
RTS
; ********************************************
;
; Output a message.
;
; Message address-1 is on the stack.
; LDA #HI (address-1)
; PHA
; LDA #LO (address-1)
; PHA
; JMP PrintMessage
;
; ********************************************
LFBD8 PHA ; First store all registers
TYA
PHA
TXA
PHA
TSX ; Next, get the base address from
INX ; the stack
INX
INX
INX
LDA $0100,x ; Get LOW byte
STA $BC
INX
LDA $0100,x ; and HIGH byte of message
STA $BD
INC $BC ; +1 to message address
BNE LFBF3
INC $BD
LFBF3 LDY #$00 ; Now print message...
LFBF5 LDA ($BC),y ; get byte from message
BEQ LFBFF ; 0? End of message byte flag?
JSR LFFD2 ; if not, output byte
INY ; next char,
BNE LFBF5 ; and loop...
LFBFF TYA ; add on message length-1 (0 at the end)
TSX
INX
INX
INX
INX
CLC ; add it onto the actual STACK param
ADC $BC
STA $0100,x ; first low...
LDA #$00
ADC $BD ; then high...
INX
STA $0100,x
PLA ; then restore registers and exit...
TAX
PLA
TAY
PLA
RTS
; *********************************************
;
; Get I/O base address (ACIA)
;
; *********************************************
LFC19 LDX #$00
LDY #$FD
RTS
; *********************************************
;
; Check for ROM's.
; Here we search for the ROM sig (cbm) at $8007
;
; *********************************************
LFC1E LDX #$03
STX $96
LDA #$00
LFC24 STA $05EC,x
DEX
BPL LFC24
LFC2A LDX $96
LDA $FC7B,x
TAX
STA $FDD0,x
LDY #$02
LFC35 LDA $8007,y
CMP $FC56,y
BNE LFC51
DEY
BPL LFC35
LDA $8006
LDX $96
STA $05EC,x
CMP #$01
BNE LFC51
STX $FB
JSR L8000
LFC51 DEC $96
BPL LFC2A
RTS
db $43,$42,$4d ; ROM ID "cbm"
; ********************************************
;
; Phoenix routine....
;
; ********************************************
LFC59 SEI
LDX #$03
LDA $05EC,X
BEQ LFC71
TAX
PHA
LDA $FC7B,x
TAX
STA $FDD0,x
STX $FB
JSR L8000
PLA
TAX
LFC71 DEX
BNE LFC5C
STA $FDD0
STX $FB
CLI
RTS
; ********************************************
;
; ROM paging index.
;
; Since the plus/4 can have 4 32k auto running
; ROM's only certain combinations can be paged in
;
; Well, this isn't really true, you only use
; this system if you want to AUTO run, otherwise
; you can make use of the 8 ROM slots however you
; want..
;
; ********************************************
db $00,$05,$0a,$0f ; ( basic, 3plus1, unused, unused )
; ********************************************
;
; Long fetch routine
;
; ********************************************
STA $FDD0,X
TAX
LDA ($BE),Y
STA $FDD0,X
RTS
; ********************************************
;
; Long jump routine
;
; ********************************************
PHA
STX $FB
STA $FDD0,x
LDX $05F3
LDA $05F4
PHA
LDA $05F2
PLP
JSR LFCB0
STA $05F2
PHP
PLA
STA $05F4
STX $05F3
PLA
STA $FB
TAX
STA $FDD0,x
RTS
LFCB0 JMP ($05F0)
;
; $FCB3 - IRQ entry
;
LFCB3 PHA ; save
TXA
PHA
TYA
PHA
LFCB8 STA $FDD0 ; LONG IRQ entry. Select kernal ROM.
JMP LCE00 ; process user/kernal IRQ
LFCBE LDX $FB ; return back to correct ROM
STA $FDD0,x ; ROM select
PLA ; restore
TAY
PLA
TAX
PLA
RTI ; exit
;
; $FCC9 - cartrage entry
;
LFCC9 LDX $FB ; for cartrage
STA $FDD0,x
JMP ($02FE)
;
; $FCD1 - ROM banking routines
;
INS $FFFF,x
INS $FFFF,x
INS $FFFF,x
INS $FFFF,x
INS $FFFF,x
INS $FFFF,x
INS $FFFF,x
INS $FFFF,x
INS $FFFF,x
INS $FFFF,x
DB $ff,$ff
LFCF1 JMP LFCC9 ; cart entry point
LFCF4 JMP LFC59
JMP LFC7F
JMP LFC89
JMP LFCB8
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
INS DIRECTION,x
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
SKB DIRECTION
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
RTI
INS $4000,x
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
XAA #$C0
NOP
TAX
RTI
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
TSX
SKW $D21E
RLA $1BD2
PHP
AND $025C,x
LDA (DIRECTION,x)
INY
BRK
BRK
BRK
BRK
SKB $D0
PHP
ADC ($5B),y
ADC $77,x
ROR $6000
INS $002E,x
SBC DIRECTION
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
BRK
INS $FFFF,x
INS $FFFF,x
INS $FFFF,x
JMP LB7C2
LFF4C JMP LDC49
PrintMessage
JMP LFBD8 ; Output Messages (LFF4F)
JMP LF445
INS $FFFF,x
INS $FFFF,x
INS $FFFF,x
INS $FFFF,x
INS $FFFF,x
INS $FFFF,x
INS $FFFF,x
INS $FFFF,x
INS $FFFF,x
INS $FFFF,x
INS $FFFF,x
INS $FFFF,x
INS $FFFF,x
INS $FFFF,x
LSR $4C85,x
LSR $4CD8
???
HLT
INS ($4C),y
DEC $4CF2
DCM ($F2),y
LFF90 JMP LF41A
JMP LEE4D
JMP LEE1A
JMP LF427
JMP LF436
JMP LDB11
JMP LF423
JMP LEC8B
JMP LECDF
JMP LEF3B
JMP LEF23
JMP LEE2C
JMP LEDFA
LFFB7 JMP LF41C ; Get status
LFFBA JMP LF413 ; set LFS
LFFBD JMP LF40C ; set NAME
LFFC0 JMP ($0318) ; do OPEN file ($EF53)
LFFC3 JMP ($031A) ; do CLOSE file ($EE5D)
LFFC6 JMP ($031C) ; set INPUT vector ($ED18)
LFFC9 JMP ($031E) ; set OUTPUT vector ($ED60)
LFFCC JMP ($0320) ; restore I/O vector ($EF0C)
LFFCF JMP ($0322) ; Input ($EBE8)
LFFD2 JMP ($0324) ; Output (print usually)($EC4B)
LFFD5 JMP LF043 ; Load a program
LFFD8 JMP LF194 ; Save a proram
LFFDB JMP LCF2D ; set TIME
LFFDE JMP LCF26 ; get TIME
LFFE1 JMP ($0326) ; test STOP ($F265)
LFFE4 JMP ($0328) ; GET ($EBD9)
LFFE7 JMP ($032A) ; Abort I/O ($EF08)
JMP LCEF0 ; Kernal UDTIM
JMP LD834 ; get screen size
LFFF0 JMP LD839 ; put/get row column
JMP LFC19 ; Get I/O address
LFFF6 STA ROM_ON ; set ROM "on"
JMP LF2A4 ; POWER on vector (hidden in JUMP)
DW LFFF6 ; RESET vector
DW LFCB3 ; IRQ vector