Merge PR 147 'Startup reads prefix to CMDBUF'
This commit is contained in:
parent
cdf229f612
commit
66bb51c646
BIN
applecorn.po
BIN
applecorn.po
Binary file not shown.
|
@ -204,7 +204,7 @@ BYTE00 BEQ BYTE00A ; OSBYTE 0,0 - generate error
|
|||
RTS ; %000x1xxx host type, 'A'pple
|
||||
BYTE00A BRK
|
||||
DB $F7
|
||||
HELLO ASC 'Applecorn MOS 2021-11-13'
|
||||
HELLO ASC 'Applecorn MOS 2021-11-14'
|
||||
DB $00 ; Unify MOS messages
|
||||
|
||||
|
||||
|
|
|
@ -4,6 +4,9 @@
|
|||
* Initialization, interrupt handling and reset handling code
|
||||
* that resides in main memory.
|
||||
|
||||
* 14-Nov-2021 If started from CSD, gets prefix to CMDBUF.
|
||||
|
||||
|
||||
* Trampoline in main memory used by aux memory IRQ handler
|
||||
* to invoke Apple II / ProDOS IRQs in main memory
|
||||
A2IRQ >>> IENTMAIN ; IENTMAIN does not do CLI
|
||||
|
@ -37,7 +40,18 @@ SETPRFX LDA #GPFXCMD
|
|||
STA DRVBUF2 ; was $0301
|
||||
DEC :OPC7
|
||||
BNE :L1
|
||||
RTSINST RTS
|
||||
RTSINST LDA CMDPATH
|
||||
BEQ :GETPFX ; CMDPATH empty
|
||||
LDA CMDPATH+1
|
||||
CMP #'/'
|
||||
BEQ :GETPFXDONE ; CMDPATH already absolute path
|
||||
:GETPFX JSR MLI
|
||||
DB $C7 ; Get Prefix
|
||||
DW :GETADDR
|
||||
:GETPFXDONE RTS
|
||||
:GETADDR HEX 01 ; One parameter
|
||||
DW CMDPATH ; Get prefix to CMDPATH
|
||||
|
||||
|
||||
* Disconnect /RAM ramdrive to avoid aux corruption
|
||||
* Stolen from Beagle Bros Extra K
|
||||
|
@ -90,55 +104,3 @@ RESET TSX
|
|||
>>> XF2AUX,AUXMOS
|
||||
RTS
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
230
mainmem.menu.s
230
mainmem.menu.s
|
@ -6,17 +6,17 @@
|
|||
* 13-Nov-2021 List of selected ROMs kept locally.
|
||||
|
||||
|
||||
ROMMAX EQU $0382
|
||||
ROMTHIS EQU $0383
|
||||
ROMADDRS EQU $0384 ; List of ROM filename addresses
|
||||
ROMMAX EQU $0382
|
||||
ROMTHIS EQU $0383
|
||||
ROMADDRS EQU $0384 ; List of ROM filename addresses
|
||||
|
||||
ROMMENU JSR HOME ; Clear screen
|
||||
LDX #0
|
||||
:LP0 LDA TITLE1,X ; Print title
|
||||
BEQ :LP1
|
||||
JSR COUT1
|
||||
INX
|
||||
BNE :LP0
|
||||
ROMMENU JSR HOME ; Clear screen
|
||||
LDX #0
|
||||
:LP0 LDA TITLE1,X ; Print title
|
||||
BEQ :LP1
|
||||
JSR COUT1
|
||||
INX
|
||||
BNE :LP0
|
||||
:LP1
|
||||
|
||||
* LDA #<TITLE1 ; Print title
|
||||
|
@ -24,10 +24,10 @@ ROMMENU JSR HOME ; Clear screen
|
|||
* LDA #>TITLE1
|
||||
* STA A1H
|
||||
* JSR PRSTRA1
|
||||
JSR CROUT
|
||||
JSR CROUT
|
||||
* TEMP
|
||||
* LDA #$00
|
||||
* JMP :KEYOK
|
||||
; LDA #$00
|
||||
; JMP :KEYOK
|
||||
* TEMP
|
||||
* JSR CROUT
|
||||
* LDA #<TITLE2
|
||||
|
@ -53,72 +53,72 @@ ROMMENU JSR HOME ; Clear screen
|
|||
* BEQ :KEYIN
|
||||
* BRA :L1
|
||||
|
||||
:KEYIN LDA $C000 ; Kdb data / strobe
|
||||
BPL :KEYIN ; Wait for keystroke
|
||||
STA $C010 ; Clear strobe
|
||||
AND #$7F
|
||||
SEC
|
||||
SBC #'1' ; '1'->0, '2'->1 etc.
|
||||
CMP #8
|
||||
BCC :KEYOK
|
||||
JSR BELL ; Invalid - beep
|
||||
BRA :KEYIN ; Go again
|
||||
:KEYOK STA USERSEL ; Record selection
|
||||
:KEYIN LDA $C000 ; Kdb data / strobe
|
||||
BPL :KEYIN ; Wait for keystroke
|
||||
STA $C010 ; Clear strobe
|
||||
AND #$7F
|
||||
SEC
|
||||
SBC #'1' ; '1'->0, '2'->1 etc.
|
||||
CMP #8
|
||||
BCC :KEYOK
|
||||
JSR BELL ; Invalid - beep
|
||||
BRA :KEYIN ; Go again
|
||||
:KEYOK STA USERSEL ; Record selection
|
||||
|
||||
* Make list of ROMs
|
||||
LDX #63
|
||||
LDA #0
|
||||
:INITLP1 STA ROMADDRS,X
|
||||
DEX
|
||||
BPL :INITLP1
|
||||
STX ROMTHIS ; Current ROM=none
|
||||
LDY USERSEL ; Index to ROM to load
|
||||
LDA #0 ; Load it to bank 0
|
||||
CPY #6
|
||||
BCC :INITROM2 ; <6, single ROM
|
||||
LDA #1 ; Load to bank 1 and 0
|
||||
CPY #7
|
||||
BCC :INITROM2 ; =7, two ROMs
|
||||
LDA #7 ; Load to bank 7 to 0
|
||||
LDY #0 ; Starting at ROM 0
|
||||
:INITROM2 STA ROMMAX
|
||||
ASL A
|
||||
TAX ; X=>ROM address table
|
||||
TYA
|
||||
ASL A
|
||||
TAY ; Y=>ROM addresses
|
||||
:INITROM3 LDA ROMLIST+0,Y
|
||||
STA ROMADDRS+0,X
|
||||
LDA ROMLIST+1,Y
|
||||
STA ROMADDRS+1,X
|
||||
INY
|
||||
INY
|
||||
DEX
|
||||
DEX
|
||||
BPL :INITROM3
|
||||
RTS
|
||||
LDX #63
|
||||
LDA #0
|
||||
:INITLP1 STA ROMADDRS,X
|
||||
DEX
|
||||
BPL :INITLP1
|
||||
STX ROMTHIS ; Current ROM=none
|
||||
LDY USERSEL ; Index to ROM to load
|
||||
LDA #0 ; Load it to bank 0
|
||||
CPY #6
|
||||
BCC :INITROM2 ; <6, single ROM
|
||||
LDA #1 ; Load to bank 1 and 0
|
||||
CPY #7
|
||||
BCC :INITROM2 ; =7, two ROMs
|
||||
LDA #7 ; Load to bank 7 to 0
|
||||
LDY #0 ; Starting at ROM 0
|
||||
:INITROM2 STA ROMMAX
|
||||
ASL A
|
||||
TAX ; X=>ROM address table
|
||||
TYA
|
||||
ASL A
|
||||
TAY ; Y=>ROM addresses
|
||||
:INITROM3 LDA ROMLIST+0,Y
|
||||
STA ROMADDRS+0,X
|
||||
LDA ROMLIST+1,Y
|
||||
STA ROMADDRS+1,X
|
||||
INY
|
||||
INY
|
||||
DEX
|
||||
DEX
|
||||
BPL :INITROM3
|
||||
RTS
|
||||
|
||||
SELECTROM >>> ENTMAIN
|
||||
CMP ROMTHIS
|
||||
BEQ :SELECTDONE ; Already selected
|
||||
CMP ROMMAX
|
||||
BCC :GETROM
|
||||
BNE :SELECTDONE ; Out of range
|
||||
:GETROM PHA
|
||||
ASL A
|
||||
TAX
|
||||
LDA ROMADDRS+0,X ; ROM filename
|
||||
STA OPENPL+1
|
||||
LDA ROMADDRS+1,X
|
||||
STA OPENPL+2
|
||||
LDA #$80 ; Load address $8000
|
||||
LDX #$00
|
||||
SEC ; Aux memory
|
||||
JSR LOADCODE ; Try and fetch it
|
||||
PLA ; Get bank back
|
||||
BCS :SELECTDONE ; Failed
|
||||
STA ROMTHIS ; It is paged in
|
||||
:SELECTDONE >>> XF2AUX,ROMSELDONE
|
||||
SELECTROM >>> ENTMAIN
|
||||
CMP ROMTHIS
|
||||
BEQ :SELECTDONE ; Already selected
|
||||
CMP ROMMAX
|
||||
BCC :GETROM
|
||||
BNE :SELECTDONE ; Out of range
|
||||
:GETROM PHA
|
||||
ASL A
|
||||
TAX
|
||||
LDA ROMADDRS+0,X ; ROM filename
|
||||
STA OPENPL+1
|
||||
LDA ROMADDRS+1,X
|
||||
STA OPENPL+2
|
||||
LDA #$80 ; Load address $8000
|
||||
LDX #$00
|
||||
SEC ; Aux memory
|
||||
JSR LOADCODE ; Try and fetch it
|
||||
PLA ; Get bank back
|
||||
BCS :SELECTDONE ; Failed
|
||||
STA ROMTHIS ; It is paged in
|
||||
:SELECTDONE >>> XF2AUX,ROMSELDONE
|
||||
|
||||
|
||||
** Print a string pointed to by A1L/A1H
|
||||
|
@ -133,10 +133,10 @@ SELECTROM >>> ENTMAIN
|
|||
*:NULL PLY
|
||||
* RTS
|
||||
|
||||
TITLE1 ASC "** APPLECORN **"
|
||||
DB $8D,$8D
|
||||
TITLE2 ASC "Choose a BBC Micro ROM:"
|
||||
DB $8D,$8D
|
||||
TITLE1 ASC "** APPLECORN **"
|
||||
DB $8D,$8D
|
||||
TITLE2 ASC "Choose a BBC Micro ROM:"
|
||||
DB $8D,$8D
|
||||
|
||||
*MSGTBL DW MSG1
|
||||
* DW MSG2
|
||||
|
@ -147,46 +147,44 @@ TITLE2 ASC "Choose a BBC Micro ROM:"
|
|||
* DW MSG7
|
||||
* DW MSG8
|
||||
|
||||
MSG1 ASC " 1. BBC BASIC"
|
||||
DB $8D,$8D
|
||||
MSG2 ASC " 2. Acornsoft COMAL"
|
||||
DB $8D,$8D
|
||||
MSG3 ASC " 3. Acornsoft Lisp"
|
||||
DB $8D,$8D
|
||||
MSG4 ASC " 4. Acornsoft Forth"
|
||||
DB $8D,$8D
|
||||
MSG5 ASC " 5. Acornsoft MicroProlog"
|
||||
DB $8D,$8D
|
||||
MSG6 ASC " 6. Acornsoft BCPL"
|
||||
DB $8D,$8D
|
||||
MSG7 ASC " 7. Acornsoft ISO Pascal (2 ROMs)"
|
||||
DB $8D,$8D
|
||||
MSG8 ASC " 8. Everything! (8 ROMs)"
|
||||
DB $8D
|
||||
DB $00
|
||||
MSG1 ASC " 1. BBC BASIC"
|
||||
DB $8D,$8D
|
||||
MSG2 ASC " 2. Acornsoft COMAL"
|
||||
DB $8D,$8D
|
||||
MSG3 ASC " 3. Acornsoft Lisp"
|
||||
DB $8D,$8D
|
||||
MSG4 ASC " 4. Acornsoft Forth"
|
||||
DB $8D,$8D
|
||||
MSG5 ASC " 5. Acornsoft MicroProlog"
|
||||
DB $8D,$8D
|
||||
MSG6 ASC " 6. Acornsoft BCPL"
|
||||
DB $8D,$8D
|
||||
MSG7 ASC " 7. Acornsoft ISO Pascal (2 ROMs)"
|
||||
DB $8D,$8D
|
||||
MSG8 ASC " 8. Everything! (8 ROMs)"
|
||||
DB $8D
|
||||
DB $00
|
||||
|
||||
|
||||
ROMLIST DW ROM1
|
||||
DW ROM2
|
||||
DW ROM3
|
||||
DW ROM4
|
||||
DW ROM5
|
||||
DW ROM6
|
||||
DW ROM7
|
||||
DW ROM8
|
||||
|
||||
ROM1 STR "BASIC2.ROM"
|
||||
ROM2 STR "COMAL.ROM"
|
||||
ROM3 STR "LISP501.ROM"
|
||||
ROM4 STR "FORTH103.ROM"
|
||||
ROM5 STR "MPROLOG310.ROM"
|
||||
ROM6 STR "BCPL700.ROM"
|
||||
ROM7 STR "PASCAL110A.ROM"
|
||||
ROM8 STR "PASCAL110B.ROM"
|
||||
|
||||
USERSEL DB $00
|
||||
ROMLIST DW ROM1
|
||||
DW ROM2
|
||||
DW ROM3
|
||||
DW ROM4
|
||||
DW ROM5
|
||||
DW ROM6
|
||||
DW ROM7
|
||||
DW ROM8
|
||||
|
||||
ROM1 STR "BASIC2.ROM"
|
||||
ROM2 STR "COMAL.ROM"
|
||||
ROM3 STR "LISP501.ROM"
|
||||
ROM4 STR "FORTH103.ROM"
|
||||
ROM5 STR "MPROLOG310.ROM"
|
||||
ROM6 STR "BCPL700.ROM"
|
||||
ROM7 STR "PASCAL110A.ROM"
|
||||
ROM8 STR "PASCAL110B.ROM"
|
||||
|
||||
USERSEL DB $00
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue