Added drom/erom/bank0/bank1 commands to basic
This commit is contained in:
@@ -15,7 +15,7 @@ UART_DATA .equ UART_BASE+001h
|
||||
BUF_SIZE .equ 16
|
||||
BUF_SIZE_MASK .equ 00fh
|
||||
|
||||
WORKSPACE .equ SHARED_MEM_START+00400h
|
||||
WORKSPACE .equ BIOS_WP_RAM_START
|
||||
TX_HEAD .equ WORKSPACE+000h
|
||||
TX_TAIL .equ WORKSPACE+001h
|
||||
TX_COUNT .equ WORKSPACE+002h
|
||||
@@ -25,6 +25,7 @@ RX_COUNT .equ WORKSPACE+005h
|
||||
TX_BUSY .equ WORKSPACE+006h
|
||||
TX_BUF .equ WORKSPACE+007h
|
||||
RX_BUF .equ TX_BUF+BUF_SIZE
|
||||
SYSREG_VALUE .equ RX_BUF+BUF_SIZE
|
||||
|
||||
; -------------------------------------------------------
|
||||
; entry
|
||||
@@ -39,7 +40,7 @@ boot_copy:
|
||||
; banking enabled
|
||||
; bank 1 selected
|
||||
ld a,BOOT_BANK_MAPPING
|
||||
ld (SYSTEM_REGISTER),a
|
||||
out (SYSTEM_REGISTER),a
|
||||
ld sp,BIOS_STACK_TOP
|
||||
; copy bios to top 16k
|
||||
ld hl,BIOS_ROM_START
|
||||
@@ -94,6 +95,10 @@ boot_copy:
|
||||
jp puts
|
||||
.org BIOS_FLUSH
|
||||
jp flush
|
||||
.ORG BIOS_ROM
|
||||
jp setrom
|
||||
.ORG BIOS_BANK
|
||||
jp bank
|
||||
|
||||
; -------------------------------------------------------
|
||||
; BIOS ENTRY
|
||||
@@ -116,6 +121,10 @@ init:
|
||||
ld i,a
|
||||
im 2
|
||||
|
||||
; Set boot bank mapping to sysreg shadow copy
|
||||
ld a,BOOT_BANK_MAPPING
|
||||
ld (SYSREG_VALUE),a
|
||||
out (SYSTEM_REGISTER),a
|
||||
; Initialize tx and rx buffers
|
||||
call buffers_init
|
||||
; Initialize peripherals
|
||||
@@ -452,6 +461,64 @@ flush:
|
||||
ld a,(TX_COUNT)
|
||||
cp 0
|
||||
jr nz,flush
|
||||
ld a,(TX_BUSY)
|
||||
cp 0
|
||||
jr nz,flush
|
||||
ret
|
||||
|
||||
; -------------------------------------------------------
|
||||
; ROM enable/disable
|
||||
; needs a (nonzero is enable, zero is disable)
|
||||
; -------------------------------------------------------
|
||||
setrom:
|
||||
cp 0
|
||||
jr z,1$
|
||||
; nonzero -> enable
|
||||
push bc
|
||||
ld a,ROM_DISABLE_BIT
|
||||
cpl ; get mask
|
||||
ld b,a
|
||||
ld a,(SYSREG_VALUE)
|
||||
and b
|
||||
ld (SYSREG_VALUE),a
|
||||
out (SYSTEM_REGISTER),a
|
||||
pop bc
|
||||
2$:
|
||||
ret
|
||||
1$:
|
||||
; zero -> disable
|
||||
ld a,(SYSREG_VALUE)
|
||||
or ROM_DISABLE_BIT
|
||||
ld (SYSREG_VALUE),a
|
||||
out (SYSTEM_REGISTER),a
|
||||
jr 2$
|
||||
|
||||
; -------------------------------------------------------
|
||||
; Select bank
|
||||
; needs a (nonzero is bank 1, zero is bank 0)
|
||||
; -------------------------------------------------------
|
||||
bank:
|
||||
cp 0
|
||||
jr nz,1$
|
||||
; zero -> bank 0
|
||||
push bc
|
||||
ld a,BANK_SELECT_BIT
|
||||
cpl ; get mask
|
||||
ld b,a
|
||||
ld a,(SYSREG_VALUE)
|
||||
and b
|
||||
ld (SYSREG_VALUE),a
|
||||
out (SYSTEM_REGISTER),a
|
||||
pop bc
|
||||
2$:
|
||||
ret
|
||||
1$:
|
||||
; non zero -> bank 1
|
||||
ld a,(SYSREG_VALUE)
|
||||
or BANK_SELECT_BIT
|
||||
ld (SYSREG_VALUE),a
|
||||
out (SYSTEM_REGISTER),a
|
||||
jr 2$
|
||||
|
||||
; -------------------------------------------------------
|
||||
; Strings
|
||||
|
||||
Reference in New Issue
Block a user