added BIOS skeleton
This commit is contained in:
1 parent
8de19d4be0
commit
7395fc3738
3 files changed
+230
-10
No files matched your search
@@ -4,12 +4,63 @@
|
||||
;
|
||||
|
||||
|
||||
Z80_instr_2F: ; CPL
|
||||
|
||||
lda REG_A
|
||||
eor #$FF
|
||||
sta REG_A
|
||||
|
||||
lda REG_F
|
||||
ora #(Z80_HF + Z80_NF)
|
||||
sta REG_F
|
||||
jmp ZVM_next
|
||||
|
||||
; XXX put NEG here
|
||||
|
||||
Z80_instr_3F: ; CCF
|
||||
|
||||
+Z80_PUT_0_NF
|
||||
bbs0 REG_F,@1
|
||||
@0:
|
||||
+Z80_PUT_0_HF
|
||||
+Z80_PUT_1_CF
|
||||
jmp ZVM_next
|
||||
@1:
|
||||
+Z80_PUT_1_HF
|
||||
+Z80_PUT_0_CF
|
||||
jmp ZVM_next
|
||||
|
||||
Z80_instr_37: ; SCF
|
||||
|
||||
+Z80_PUT_0_HF
|
||||
+Z80_PUT_0_NF
|
||||
+Z80_PUT_1_CF
|
||||
jmp ZVM_next
|
||||
|
||||
Z80_instr_76: ; HALT
|
||||
|
||||
; Used to call BIOS routines
|
||||
|
||||
ldx #$01 ; default BIOS function, warm start
|
||||
|
||||
lda REG_PC
|
||||
sec
|
||||
sbc #$64
|
||||
cmp #33
|
||||
bcs @1
|
||||
tax
|
||||
@1:
|
||||
txa
|
||||
asl
|
||||
tax
|
||||
jmp (zvm_BIOS_vectable,x)
|
||||
|
||||
Z80_instr_F3: ; DI
|
||||
|
||||
lda #$00
|
||||
+skip_2_bytes_trash_nvz
|
||||
|
||||
; FALLTROUGH
|
||||
sta REG_IFF1
|
||||
sta REG_IFF2
|
||||
jmp ZVM_next
|
||||
|
||||
Z80_instr_FB: ; EI
|
||||
|
||||
|
||||
+174
-1
@@ -3,4 +3,177 @@
|
||||
; Z80 Virtual Machine BIOS for CP/M
|
||||
;
|
||||
|
||||
; XXX implement
|
||||
|
||||
; Virtual BIOS memory map
|
||||
|
||||
; $FE00 - $FE63 - jumptable, 3*33 bytes
|
||||
; $FE63 - $FE84 - magic HALT instructions to select BIOS routines
|
||||
; $FE85 - $FEFF - unused
|
||||
; $FF00 - $FFFF - Disk Drive Tables, dynamically generated, $10 bytes for each one
|
||||
|
||||
|
||||
|
||||
|
||||
zvm_BIOS_vectable:
|
||||
|
||||
!word zvm_BIOS_00_BOOT
|
||||
!word zvm_BIOS_01_WBOOT
|
||||
!word zvm_BIOS_02_CONST
|
||||
!word zvm_BIOS_03_CONIN
|
||||
!word zvm_BIOS_04_CONOUT
|
||||
!word zvm_BIOS_05_LIST
|
||||
!word zvm_BIOS_06_AUXOUT
|
||||
!word zvm_BIOS_07_AUXIN
|
||||
!word zvm_BIOS_08_HOME
|
||||
!word zvm_BIOS_09_SELDSK
|
||||
!word zvm_BIOS_10_SETTRK
|
||||
!word zvm_BIOS_11_SETSEC
|
||||
!word zvm_BIOS_12_SETDMA
|
||||
!word zvm_BIOS_13_READ
|
||||
!word zvm_BIOS_14_WRITE
|
||||
!word zvm_BIOS_15_LISTST
|
||||
!word zvm_BIOS_16_SECTRN
|
||||
!word zvm_BIOS_17_CONOST
|
||||
!word zvm_BIOS_18_AUXIST
|
||||
!word zvm_BIOS_19_AUXOST
|
||||
!word zvm_BIOS_20_DEVTBL
|
||||
!word zvm_BIOS_21_DEVINI
|
||||
!word zvm_BIOS_22_DRVTBL
|
||||
!word zvm_BIOS_23_MULTIO
|
||||
!word zvm_BIOS_24_FLUSH
|
||||
!word zvm_BIOS_25_MOVE
|
||||
!word zvm_BIOS_26_TIME
|
||||
!word zvm_BIOS_27_SELMEM
|
||||
!word zvm_BIOS_28_SETBNK
|
||||
!word zvm_BIOS_29_XMOVE
|
||||
!word zvm_BIOS_30_USERF
|
||||
!word zvm_BIOS_31_RESERV1
|
||||
!word zvm_BIOS_32_RESERV2
|
||||
|
||||
zvm_BIOS_00_BOOT: ; Cold start
|
||||
|
||||
; XXX !!!
|
||||
|
||||
; FALLTROUGH
|
||||
|
||||
zvm_BIOS_01_WBOOT: ; Warm start
|
||||
zvm_BIOS_31_RESERV1: ; Reserved
|
||||
zvm_BIOS_32_RESERV2: ; Reserved
|
||||
|
||||
; XXX !!!
|
||||
|
||||
zvm_BIOS_02_CONST: ; Check if input character available
|
||||
|
||||
; XXX !!!
|
||||
|
||||
zvm_BIOS_03_CONIN: ; Console input
|
||||
|
||||
; XXX !!!
|
||||
|
||||
zvm_BIOS_04_CONOUT: ; Console output
|
||||
|
||||
; XXX
|
||||
|
||||
zvm_BIOS_05_LIST: ; Provide list of character output devices
|
||||
|
||||
; XXX
|
||||
|
||||
zvm_BIOS_06_AUXOUT: ; AUX output
|
||||
|
||||
; XXX
|
||||
|
||||
zvm_BIOS_07_AUXIN: ; AUX input
|
||||
|
||||
; XXX
|
||||
|
||||
zvm_BIOS_08_HOME: ; Go to track 0
|
||||
|
||||
; XXX !!!
|
||||
|
||||
zvm_BIOS_09_SELDSK: ; Select drive
|
||||
|
||||
; XXX !!!
|
||||
|
||||
zvm_BIOS_10_SETTRK: ; Set track number
|
||||
|
||||
; XXX !!!
|
||||
|
||||
zvm_BIOS_11_SETSEC: ; Set sector number
|
||||
|
||||
; XXX !!!
|
||||
|
||||
zvm_BIOS_12_SETDMA: ; Set DMA address
|
||||
|
||||
; XXX !!!
|
||||
|
||||
zvm_BIOS_13_READ: ; Read sector
|
||||
|
||||
; XXX !!!
|
||||
|
||||
zvm_BIOS_14_WRITE: ; Write sector
|
||||
|
||||
; XXX !!!
|
||||
|
||||
zvm_BIOS_15_LISTST: ; List status
|
||||
|
||||
; XXX
|
||||
|
||||
zvm_BIOS_16_SECTRN: ; Convert logical to physical sector
|
||||
|
||||
; XXX !!!
|
||||
|
||||
zvm_BIOS_17_CONOST: ; Console output status
|
||||
|
||||
; XXX
|
||||
|
||||
zvm_BIOS_18_AUXIST: ; AUX input status
|
||||
|
||||
; XXX
|
||||
|
||||
zvm_BIOS_19_AUXOST: ; AUX output status
|
||||
|
||||
; XXX
|
||||
|
||||
zvm_BIOS_20_DEVTBL: ; Character device table address
|
||||
|
||||
; XXX
|
||||
|
||||
zvm_BIOS_21_DEVINI: ; Initialize character device
|
||||
|
||||
; XXX
|
||||
|
||||
zvm_BIOS_22_DRVTBL: ; Disk drive table address
|
||||
|
||||
; XXX
|
||||
|
||||
zvm_BIOS_23_MULTIO: ; Set number of logically consecutive sectors
|
||||
|
||||
; XXX !!!
|
||||
|
||||
zvm_BIOS_24_FLUSH: ; Force buffer flushing for user deblocking
|
||||
|
||||
; XXX !!!
|
||||
|
||||
zvm_BIOS_25_MOVE: ; Memory move
|
||||
|
||||
; XXX
|
||||
|
||||
zvm_BIOS_26_TIME: ; Get or set time
|
||||
|
||||
; XXX !!!
|
||||
|
||||
zvm_BIOS_27_SELMEM: ; Select memory bank
|
||||
|
||||
; XXX
|
||||
|
||||
zvm_BIOS_28_SETBNK: ; Set bank for DMA operation
|
||||
|
||||
; XXX
|
||||
|
||||
zvm_BIOS_29_XMOVE: ; Set bank if buffer is in bank other than 1 or 2
|
||||
|
||||
; XXX
|
||||
|
||||
zvm_BIOS_30_USERF: ; Implementation-specific functionality
|
||||
|
||||
; XXX implement function to save RAM DISK back to SD CARD
|
||||
@@ -41,8 +41,8 @@ ZVM_store_next:
|
||||
asl
|
||||
tax
|
||||
bcs @1
|
||||
jmp (.TAB_LO) ; execute opcode $00-$7F
|
||||
@1: jmp (.TAB_HI) ; execute opcode $80-$FF
|
||||
jmp (.TAB_LO,x) ; execute opcode $00-$7F
|
||||
@1: jmp (.TAB_HI,x) ; execute opcode $80-$FF
|
||||
|
||||
}
|
||||
|
||||
@@ -114,14 +114,10 @@ Z80_instr_22: ; LD (nn),HL
|
||||
Z80_instr_27: ; DAA
|
||||
Z80_instr_29: ; ADD HL,HL
|
||||
Z80_instr_2A: ; LD HL,(nn)
|
||||
Z80_instr_2F: ; CPL
|
||||
Z80_instr_31: ; LD SP,nn
|
||||
Z80_instr_32: ; LD (nn),A
|
||||
Z80_instr_37: ; SCF
|
||||
Z80_instr_39: ; ADD HL,SP
|
||||
Z80_instr_3A: ; LD A,(nn)
|
||||
Z80_instr_3F: ; CCF
|
||||
Z80_instr_76: ; HALT
|
||||
Z80_instr_80: ; ADD A,B
|
||||
Z80_instr_81: ; ADD A,C
|
||||
Z80_instr_82: ; ADD A,D
|
||||
|
||||
Reference in new issue
Block a user