Reworked ROM menu to use sideways ROM loading.
This commit is contained in:
parent
0ca2cb0689
commit
fb997fec6d
BIN
applecorn.po
BIN
applecorn.po
Binary file not shown.
|
@ -7,7 +7,7 @@
|
|||
* BBC Micro 'virtual machine' in Apple //e aux memory
|
||||
***********************************************************
|
||||
|
||||
MAXROM EQU $00 ; Only one sideways ROM
|
||||
MAXROM EQU $00 ; Just one ROM
|
||||
|
||||
ZP1 EQU $90 ; $90-$9f are spare Econet space
|
||||
; so safe to use
|
||||
|
@ -125,6 +125,8 @@ MOSHIGH SEI
|
|||
DEX
|
||||
BPL :INITPG2
|
||||
|
||||
JSR INITROMS ; Initialize sideways ROM table
|
||||
|
||||
JSR KBDINIT ; Returns A=startup MODE
|
||||
JSR VDUINIT ; Initialise VDU driver
|
||||
JSR PRHELLO
|
||||
|
|
|
@ -327,15 +327,108 @@ RDROM LDA $F4
|
|||
* X=ROM to select
|
||||
* All registers must be preserved
|
||||
ROMSELECT CPX $F4
|
||||
BNE :ROMSELOK ; Already selected
|
||||
BEQ :ROMSELOK ; Already selected
|
||||
|
||||
* Insert code here for faking sideways ROMs by loading or otherwise
|
||||
* fetching code to $8000. All registers must be preserved.
|
||||
|
||||
PHA
|
||||
PHX
|
||||
PHY
|
||||
TXA
|
||||
ASL A
|
||||
TAX
|
||||
LDA ROMTAB,X ; LSB of pointer to name
|
||||
STA OSFILECB+0
|
||||
LDA ROMTAB+1,X ; MSB of pointer to name
|
||||
STA OSFILECB+1
|
||||
STZ OSFILECB+2 ; Dest address $8000
|
||||
LDA #$80
|
||||
STA OSFILECB+3
|
||||
LDX #<OSFILECB
|
||||
LDY #>OSFILECB
|
||||
LDA #$FF ; Means 'LOAD'
|
||||
JSR OSFILE
|
||||
PLY
|
||||
PLX
|
||||
PLA
|
||||
STX $F4 ; Set Current ROM number
|
||||
:ROMSELOK
|
||||
EVENT RTS
|
||||
|
||||
BASICROM ASC 'BASIC2.ROM'
|
||||
DB $0D,$00
|
||||
|
||||
COMALROM ASC 'COMAL.ROM'
|
||||
DB $0D,$00
|
||||
|
||||
LISPROM ASC 'LISP501.ROM'
|
||||
DB $0D,$00
|
||||
|
||||
FORTHROM ASC 'FORTH103.ROM'
|
||||
DB $0D,$00
|
||||
|
||||
PROLOGROM ASC 'MPROLOG310.ROM'
|
||||
DB $0D,$00
|
||||
|
||||
BCPLROM ASC 'BCPL7.0.ROM'
|
||||
DB $0D,$00
|
||||
|
||||
PASCROM1 ASC 'USERROM2.ROM'
|
||||
DB $0D,$00
|
||||
|
||||
PASCROM2 ASC 'USERROM1.ROM'
|
||||
DB $0D,$00
|
||||
|
||||
* Initialize ROMTAB according to user selection in menu
|
||||
INITROMS STA $C002 ; Read main mem
|
||||
LDA USERSEL
|
||||
STA $C003 ; Read aux mem
|
||||
ASL ; x2
|
||||
CLC
|
||||
ADC #<ROMS
|
||||
STA OSLPTR+0
|
||||
LDA #>ROMS
|
||||
ADC #$00
|
||||
STA OSLPTR+1
|
||||
LDY #$00
|
||||
LDA (OSLPTR),Y
|
||||
STA ROMTAB+0
|
||||
INY
|
||||
LDA (OSLPTR),Y
|
||||
STA ROMTAB+1
|
||||
LDA #$FF
|
||||
STA $F4 ; Force ROM to load
|
||||
RTS
|
||||
|
||||
* Active sideways ROMs
|
||||
ROMTAB DW $0000 ; ROM0
|
||||
DW $0000 ; ROM1
|
||||
DW $0000 ; ROM2
|
||||
DW $0000 ; ROM3
|
||||
DW $0000 ; ROM4
|
||||
DW $0000 ; ROM5
|
||||
DW $0000 ; ROM6
|
||||
DW $0000 ; ROM7
|
||||
DW $0000 ; ROM8
|
||||
DW $0000 ; ROM9
|
||||
DW $0000 ; ROMA
|
||||
DW $0000 ; ROMB
|
||||
DW $0000 ; ROMC
|
||||
DW $0000 ; ROMD
|
||||
DW $0000 ; ROME
|
||||
DW $0000 ; ROMF
|
||||
|
||||
* ROM filenames in same order as in the menu
|
||||
* ROMMENU copies these to ROMTAB upon user selection
|
||||
ROMS DW BASICROM
|
||||
DW COMALROM
|
||||
DW LISPROM
|
||||
DW FORTHROM
|
||||
DW PROLOGROM
|
||||
DW BCPLROM
|
||||
DW PASCROM1
|
||||
DW PASCROM2
|
||||
|
||||
*EVENT LDA #<OSEVENM
|
||||
* LDY #>OSEVENM
|
||||
* JMP PRSTR
|
||||
|
|
|
@ -17,10 +17,10 @@ START JSR CROUT
|
|||
TRB $C035
|
||||
|
||||
JSR ROMMENU
|
||||
LDA #>AUXADDR ; Address in aux
|
||||
LDX #<AUXADDR
|
||||
SEC ; Load into aux
|
||||
JSR LOADCODE ; Load lang ROM
|
||||
* LDA #>AUXADDR ; Address in aux
|
||||
* LDX #<AUXADDR
|
||||
* SEC ; Load into aux
|
||||
* JSR LOADCODE ; Load lang ROM
|
||||
|
||||
LDA #<:FDFILE
|
||||
STA OPENPL+1
|
||||
|
|
|
@ -44,12 +44,7 @@ ROMMENU JSR HOME ; Clear screen
|
|||
BCC :KEYOK
|
||||
JSR BELL ; Invalid - beep
|
||||
BRA :KEYIN ; Go again
|
||||
:KEYOK ASL ; x2
|
||||
TAX
|
||||
LDA ROMTBL,X ; Fetch ROM filename ...
|
||||
STA OPENPL+1 ; ... and put in MLI OPEN PL
|
||||
LDA ROMTBL+1,X
|
||||
STA OPENPL+2
|
||||
:KEYOK STA USERSEL ; Record selection
|
||||
RTS
|
||||
|
||||
* Print a string pointed to by A1L/A1H
|
||||
|
@ -78,94 +73,29 @@ MSGTBL DW MSG1
|
|||
DW MSG7
|
||||
DW MSG8
|
||||
|
||||
ROMTBL DW ROM1
|
||||
DW ROM2
|
||||
DW ROM3
|
||||
DW ROM4
|
||||
DW ROM5
|
||||
DW ROM6
|
||||
DW ROM7
|
||||
DW ROM8
|
||||
|
||||
MSG1 ASC " 1. BBC BASIC"
|
||||
DB $00
|
||||
ROM1 STR "BASIC2.ROM"
|
||||
|
||||
MSG2 ASC " 2. Acornsoft COMAL"
|
||||
DB $00
|
||||
ROM2 STR "COMAL.ROM"
|
||||
|
||||
MSG3 ASC " 3. Acornsoft Lisp"
|
||||
DB $00
|
||||
ROM3 STR "LISP501.ROM"
|
||||
|
||||
MSG4 ASC " 4. Acornsoft Forth"
|
||||
DB $00
|
||||
ROM4 STR "FORTH103.ROM"
|
||||
|
||||
MSG5 ASC " 5. Acornsoft MicroProlog"
|
||||
DB $00
|
||||
ROM5 STR "MPROLOG310.ROM"
|
||||
|
||||
MSG6 ASC " 6. Acornsoft BCPL"
|
||||
DB $00
|
||||
ROM6 STR "BCPL7.0.ROM"
|
||||
|
||||
MSG7 ASC " 7. USERROM1.ROM"
|
||||
DB $00
|
||||
ROM7 STR "USERROM1.ROM"
|
||||
|
||||
MSG8 ASC " 8. USERROM2.ROM"
|
||||
DB $00
|
||||
ROM8 STR "USERROM2.ROM"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
USERSEL DB $00
|
||||
|
||||
|
|
Loading…
Reference in New Issue