mirror of
https://github.com/bobbimanners/Applecorn.git
synced 2024-06-15 19:29:32 +00:00
Fixed warmstart - only relocate on cold start!
This commit is contained in:
parent
7bb65cdca8
commit
83c048b603
BIN
applecorn.po
BIN
applecorn.po
Binary file not shown.
39
applecorn.s
39
applecorn.s
|
@ -190,12 +190,14 @@ SETPRFX LDA GPFXCMD
|
||||||
:S1 RTS
|
:S1 RTS
|
||||||
|
|
||||||
* Reset handler
|
* Reset handler
|
||||||
* XFER to AUXMOS1 in aux, AuxZP on
|
* XFER to AUXMOS ($C000) in aux, AuxZP on, LC on
|
||||||
RESET TSX
|
RESET TSX
|
||||||
STX $0100
|
STX $0100
|
||||||
LDA #<AUXMOS1
|
LDA $C08B ; Rd/Wt LC, bank one
|
||||||
|
LDA $C08B
|
||||||
|
LDA #<AUXMOS
|
||||||
STA STRTL
|
STA STRTL
|
||||||
LDA #>AUXMOS1
|
LDA #>AUXMOS
|
||||||
STA STRTH
|
STA STRTH
|
||||||
SEC
|
SEC
|
||||||
BIT $FF58
|
BIT $FF58
|
||||||
|
@ -518,6 +520,7 @@ ZP2 EQU $92
|
||||||
|
|
||||||
ROW EQU $94 ; Cursor row
|
ROW EQU $94 ; Cursor row
|
||||||
COL EQU $95 ; Cursor column
|
COL EQU $95 ; Cursor column
|
||||||
|
WARMSTRT EQU $9F ; Cold or warm start
|
||||||
FAULT EQU $FD ; Error message pointer
|
FAULT EQU $FD ; Error message pointer
|
||||||
ESCFLAG EQU $FF ; Escape status
|
ESCFLAG EQU $FF ; Escape status
|
||||||
BRKV EQU $202 ; BRK vector
|
BRKV EQU $202 ; BRK vector
|
||||||
|
@ -533,6 +536,8 @@ BPUTV EQU $218 ; OSBPUT vector
|
||||||
GBPBV EQU $21A ; OSGBPB vector
|
GBPBV EQU $21A ; OSGBPB vector
|
||||||
FINDV EQU $21C ; OSFIND vector
|
FINDV EQU $21C ; OSFIND vector
|
||||||
|
|
||||||
|
MAGIC EQU $BC ; Arbitrary value
|
||||||
|
|
||||||
MOSSHIM
|
MOSSHIM
|
||||||
ORG AUXMOS ; MOS shim implementation
|
ORG AUXMOS ; MOS shim implementation
|
||||||
|
|
||||||
|
@ -550,6 +555,10 @@ MOSINIT
|
||||||
LDA $C08B ; LC RAM Rd/Wt, 1st 4K bank
|
LDA $C08B ; LC RAM Rd/Wt, 1st 4K bank
|
||||||
LDA $C08B
|
LDA $C08B
|
||||||
|
|
||||||
|
LDA WARMSTRT ; Don't relocate on restart
|
||||||
|
CMP #MAGIC
|
||||||
|
BEQ :NORELOC
|
||||||
|
|
||||||
LDA #<AUXMOS1 ; Relocate MOS shim
|
LDA #<AUXMOS1 ; Relocate MOS shim
|
||||||
STA A1L
|
STA A1L
|
||||||
LDA #>AUXMOS1
|
LDA #>AUXMOS1
|
||||||
|
@ -608,6 +617,7 @@ MOSINIT
|
||||||
INC A4H
|
INC A4H
|
||||||
:S7 BRA :L2
|
:S7 BRA :L2
|
||||||
|
|
||||||
|
:NORELOC
|
||||||
:S8 STA $C00D ; 80 col on
|
:S8 STA $C00D ; 80 col on
|
||||||
STA $C003 ; Alt charset off
|
STA $C003 ; Alt charset off
|
||||||
STA $C055 ; PAGE2
|
STA $C055 ; PAGE2
|
||||||
|
@ -668,18 +678,27 @@ MOSINIT
|
||||||
LDA #>OSFIND
|
LDA #>OSFIND
|
||||||
STA FINDV+1
|
STA FINDV+1
|
||||||
|
|
||||||
LDA #<HELLO2
|
LDA #<:HELLO
|
||||||
LDY #>HELLO2
|
LDY #>:HELLO
|
||||||
JSR PRSTR
|
JSR PRSTR
|
||||||
|
|
||||||
|
LDA WARMSTRT
|
||||||
|
CMP #MAGIC
|
||||||
|
BNE :S9
|
||||||
|
LDA #<:OLDM
|
||||||
|
LDY #>:OLDM
|
||||||
|
JSR PRSTR
|
||||||
|
|
||||||
|
:S9 LDA #MAGIC ; So we do not reloc again
|
||||||
|
STA WARMSTRT
|
||||||
|
|
||||||
LDA #$01
|
LDA #$01
|
||||||
JMP AUXADDR ; Start Acorn ROM
|
JMP AUXADDR ; Start Acorn ROM
|
||||||
* No return
|
* No return
|
||||||
HELLO2 ASC 'AppleMOS v0.01'
|
:HELLO ASC 'AppleMOS v0.01'
|
||||||
DB $0D,$0A
|
DB $0D,$0A,$0D,$0A,$00
|
||||||
ASC '=============='
|
:OLDM ASC '(Use OLD to recover any program)'
|
||||||
DB $0D,$0A,$00
|
DB $0D,$0A,$0D,$0A,$00
|
||||||
|
|
||||||
* Clear to EOL
|
* Clear to EOL
|
||||||
CLREOL LDA ROW
|
CLREOL LDA ROW
|
||||||
ASL
|
ASL
|
||||||
|
|
Loading…
Reference in New Issue
Block a user