mirror of
https://github.com/bobbimanners/Applecorn.git
synced 2024-09-25 03:54:53 +00:00
Merged PR 138 'Tweeked ROMSelect'
This commit is contained in:
parent
400b02094c
commit
e5568a1eee
BIN
applecorn.po
BIN
applecorn.po
Binary file not shown.
@ -123,7 +123,7 @@ MOSHIGH SEI
|
|||||||
DEX
|
DEX
|
||||||
BPL :INITPG2
|
BPL :INITPG2
|
||||||
|
|
||||||
JSR INITROMS ; Initialize sideways ROM table
|
JSR ROMINIT ; Initialize sideways ROM table
|
||||||
|
|
||||||
JSR KBDINIT ; Returns A=startup MODE
|
JSR KBDINIT ; Returns A=startup MODE
|
||||||
JSR VDUINIT ; Initialise VDU driver
|
JSR VDUINIT ; Initialise VDU driver
|
||||||
@ -194,6 +194,7 @@ BYTE00A BRK
|
|||||||
HELLO ASC 'Applecorn MOS 2021-10-27'
|
HELLO ASC 'Applecorn MOS 2021-10-27'
|
||||||
DB $00 ; Unify MOS messages
|
DB $00 ; Unify MOS messages
|
||||||
|
|
||||||
|
MAXROM DB $00 ; Index of highest sideways ROM
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -5,6 +5,8 @@
|
|||||||
* 02-Sep-2021 Written GSINIT/GSREAD
|
* 02-Sep-2021 Written GSINIT/GSREAD
|
||||||
* 11-Sep-2021 PR16DEC uses OS workspace, added rest of default vectors/etc.
|
* 11-Sep-2021 PR16DEC uses OS workspace, added rest of default vectors/etc.
|
||||||
* 20-Sep-2021 Updated PRDECIMAL routine, prints up to 32 bits.
|
* 20-Sep-2021 Updated PRDECIMAL routine, prints up to 32 bits.
|
||||||
|
* 25-Oct-2021 Initial pseudo-sideways ROM selection code.
|
||||||
|
* 26-Oct-2021 Corrected entry parameters to OSRDRM.
|
||||||
|
|
||||||
|
|
||||||
* OSBYTE $80 - ADVAL
|
* OSBYTE $80 - ADVAL
|
||||||
@ -314,10 +316,12 @@ GSREADOK INY ; Step to next character
|
|||||||
|
|
||||||
|
|
||||||
* Read a byte from sideways ROM
|
* Read a byte from sideways ROM
|
||||||
* On entry, X=ROM to read from
|
* On entry, Y=ROM to read from
|
||||||
* On exit, A=byte read, X=current ROM, Y=$00
|
* On exit, A=byte read, X=current ROM, Y=$00
|
||||||
RDROM LDA $F4
|
RDROM LDA $F4
|
||||||
PHA
|
PHA ; Save current ROM
|
||||||
|
TYA
|
||||||
|
TAX ; X=ROM to read from
|
||||||
JSR ROMSELECT ; Page in the required ROM
|
JSR ROMSELECT ; Page in the required ROM
|
||||||
LDY #$00
|
LDY #$00
|
||||||
LDA ($F6),Y ; Read the byte
|
LDA ($F6),Y ; Read the byte
|
||||||
@ -326,27 +330,33 @@ RDROM LDA $F4
|
|||||||
* Select a sideways ROM
|
* Select a sideways ROM
|
||||||
* X=ROM to select
|
* X=ROM to select
|
||||||
* All registers must be preserved
|
* All registers must be preserved
|
||||||
ROMSELECT CPX $F4
|
ROMSELECT CPX $F8
|
||||||
BEQ :ROMSELOK ; Already selected
|
BEQ :ROMSELOK ; Already selected
|
||||||
|
|
||||||
* Insert code here for faking sideways ROMs by loading or otherwise
|
* Insert code here for faking sideways ROMs by loading or otherwise
|
||||||
* fetching code to $8000. All registers must be preserved.
|
* fetching code to $8000. All registers must be preserved.
|
||||||
PHA
|
CPX MAXROM
|
||||||
|
BEQ :ROMSEL
|
||||||
|
BCS :ROMSELOK ; Out of range, ignore
|
||||||
|
:ROMSEL PHA
|
||||||
PHX
|
PHX
|
||||||
PHY
|
PHY
|
||||||
TXA
|
TXA
|
||||||
ASL A
|
ASL A
|
||||||
TAX
|
TAX
|
||||||
LDA ROMTAB,X ; LSB of pointer to name
|
LDA ROMTAB+0,X ; LSB of pointer to name
|
||||||
STA OSFILECB+0
|
STA OSFILECB+0
|
||||||
LDA ROMTAB+1,X ; MSB of pointer to name
|
LDA ROMTAB+1,X ; MSB of pointer to name
|
||||||
STA OSFILECB+1
|
STA OSFILECB+1
|
||||||
STZ OSFILECB+2 ; Dest address $8000
|
STZ OSFILECB+2 ; Dest address $8000
|
||||||
LDA #$80
|
LDA #$80
|
||||||
STA OSFILECB+3
|
STA OSFILECB+3
|
||||||
|
STZ OSFILECB+4
|
||||||
|
STZ OSFILECB+5
|
||||||
|
STZ OSFILECB+6 ; Load to specified address
|
||||||
LDX #<OSFILECB
|
LDX #<OSFILECB
|
||||||
LDY #>OSFILECB
|
LDY #>OSFILECB
|
||||||
LDA OSLPTR+0 ; Preserve OSLPTR
|
LDA OSLPTR+0
|
||||||
PHA
|
PHA
|
||||||
LDA OSLPTR+1
|
LDA OSLPTR+1
|
||||||
PHA
|
PHA
|
||||||
@ -359,8 +369,8 @@ ROMSELECT CPX $F4
|
|||||||
PLY
|
PLY
|
||||||
PLX
|
PLX
|
||||||
PLA
|
PLA
|
||||||
STX $F4 ; Set Current ROM number
|
STX $F8 ; Set ROM loaded
|
||||||
:ROMSELOK
|
:ROMSELOK STX $F4 ; Set Current ROM number
|
||||||
EVENT RTS
|
EVENT RTS
|
||||||
|
|
||||||
BASICROM ASC 'BASIC2.ROM'
|
BASICROM ASC 'BASIC2.ROM'
|
||||||
@ -387,10 +397,9 @@ PASCROM1 ASC 'PASC.1.10.1.ROM'
|
|||||||
PASCROM2 ASC 'PASC.1.10.2.ROM'
|
PASCROM2 ASC 'PASC.1.10.2.ROM'
|
||||||
DB $0D,$00
|
DB $0D,$00
|
||||||
|
|
||||||
MAXROM DB $00 ; Index of highest sideways ROM
|
|
||||||
|
|
||||||
* Initialize ROMTAB according to user selection in menu
|
* Initialize ROMTAB according to user selection in menu
|
||||||
INITROMS STZ MAXROM ; One sideways ROM only
|
ROMINIT STZ MAXROM ; One sideways ROM only
|
||||||
STA $C002 ; Read main mem
|
STA $C002 ; Read main mem
|
||||||
LDA USERSEL
|
LDA USERSEL
|
||||||
STA $C003 ; Read aux mem
|
STA $C003 ; Read aux mem
|
||||||
@ -455,7 +464,7 @@ INITROMS STZ MAXROM ; One sideways ROM only
|
|||||||
LDA #7 ; 8 sideways ROMs
|
LDA #7 ; 8 sideways ROMs
|
||||||
STA MAXROM
|
STA MAXROM
|
||||||
:DONE LDA #$FF
|
:DONE LDA #$FF
|
||||||
STA $F4 ; Force ROM to load
|
STA $F8 ; Force ROM to load
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
* Active sideways ROMs
|
* Active sideways ROMs
|
||||||
@ -668,5 +677,3 @@ AUXBLK ASC '**ENDOFCODE**'
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user