Added drom/erom/bank0/bank1 commands to basic

This commit is contained in:
Joppe Blondel
2026-10-07 17:04:23 +02:00
parent c77469e1a1
commit 322c54d2b9
4 changed files with 131 additions and 19 deletions
+56 -14
View File
@@ -14,6 +14,7 @@
; - BIOS calls instead of using RST
; - Unsupported functions cause FCERR, not a reset or REM
; - modern backspace handling
; - Added DROM/EROM/BANK0/BANK1 commands
;
;==================================================================================
; The updates to the original BASIC within this file are copyright Grant Searle
@@ -45,6 +46,8 @@ MC_BIOS_TRY_GETC .EQU BIOS_TRY_GETC
MC_BIOS_GETC .EQU BIOS_GETC
MC_BIOS_FLUSH .EQU BIOS_FLUSH
MC_BIOS_MONITOR .EQU BIOS_RAM_START
MC_BIOS_ROM .EQU BIOS_ROM
MC_BIOS_BANK .EQU BIOS_BANK
MC_CODE_START .EQU BASIC_RAM_START
MC_RAM_START .EQU BASIC_RAM_START + BASIC_ROM_SIZE
MC_RAM_END .EQU 0FFFFH
@@ -377,7 +380,10 @@ WORDS: .BYTE 'E'+80H,"ND"
.BYTE 'L'+80H,"EFT$"
.BYTE 'R'+80H,"IGHT$"
.BYTE 'M'+80H,"ID$"
.BYTE 'H'+80H,"ELLO"
.BYTE 'D'+80H,"ROM"
.BYTE 'E'+80H,"ROM"
.BYTE 'B'+80H,"ANK0"
.BYTE 'B'+80H,"ANK1"
.BYTE 80H ; End of list marker
; KEYWORD ADDRESS TABLE
@@ -450,7 +456,10 @@ ZLTH .EQU 0B5H ; <
ZSGN .EQU 0B6H ; SGN
ZPOINT .EQU 0C7H ; POINT
ZLEFT .EQU 0CDH +2 ; LEFT$
ZHELLO .EQU 0D2H
ZDROM .EQU 0D2H
ZEROM .EQU 0D3H
ZBANK0 .EQU 0D4H
ZBANK1 .EQU 0D5H
; ARITHMETIC PRECEDENCE TABLE
@@ -1258,12 +1267,30 @@ IFJMP: RET Z ; Go to RUNCNT if end of STMT
ONJMP:
; Own commands
; ------------
CHKHELLO:
CP ZHELLO
JP NZ,STDONJMP
ld BC,HELLO
CHKDROM:
CP ZDROM
JP NZ,CHKEROM
ld BC,DROM
PUSH BC
jp GETCHR
CHKEROM:
CP ZEROM
JP NZ,CHKBANK0
LD BC,EROM
PUSH BC
JP GETCHR
CHKBANK0:
CP ZBANK0
JP NZ,CHKBANK1
LD BC,BANK0
PUSH BC
JP GETCHR
CHKBANK1:
CP ZBANK1
JP NZ,STDONJMP
LD BC,BANK1
PUSH BC
JP GETCHR
; ------------
STDONJMP:
SUB ZEND ; Is it a token?
@@ -4379,8 +4406,8 @@ MONOUT: JP MC_BIOS_PUTC ; output a char
MONITR: CALL MC_BIOS_FLUSH
JP MC_BIOS_MONITOR ; Restart (Normally Monitor Start)
CALL EROM ; enable rom
JP 0 ; reboot
INITST: LD A,0 ; Clear break flag
LD (BRKFLG),A
@@ -4399,14 +4426,29 @@ TSTBIT: PUSH AF ; Save bit mask
OUTNCR: CALL OUTC ; Output character in A
JP PRNTCRLF ; Output CRLF
HELLO:
DROM: ; disable ROM
RET NZ
PUSH HL
LD HL,HELLOMSG
CALL PRS
POP HL
LD A,0
call MC_BIOS_ROM
RET
EROM: ; enable ROM
RET NZ
LD A,1
call MC_BIOS_ROM
RET
BANK0: ; Bank 0
RET NZ
LD A,0
call MC_BIOS_BANK
RET
BANK1: ; Bank 1
RET NZ
LD A,1
call MC_BIOS_BANK
RET
HELLOMSG: .asciz "Hello!"
.end