Added drom/erom/bank0/bank1 commands to basic
This commit is contained in:
+56
-14
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user