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
|
Z80_instr_F3: ; DI
|
||||||
|
|
||||||
lda #$00
|
lda #$00
|
||||||
+skip_2_bytes_trash_nvz
|
sta REG_IFF1
|
||||||
|
sta REG_IFF2
|
||||||
; FALLTROUGH
|
jmp ZVM_next
|
||||||
|
|
||||||
Z80_instr_FB: ; EI
|
Z80_instr_FB: ; EI
|
||||||
|
|
||||||
|
|||||||
+174
-1
@@ -3,4 +3,177 @@
|
|||||||
; Z80 Virtual Machine BIOS for CP/M
|
; 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
|
asl
|
||||||
tax
|
tax
|
||||||
bcs @1
|
bcs @1
|
||||||
jmp (.TAB_LO) ; execute opcode $00-$7F
|
jmp (.TAB_LO,x) ; execute opcode $00-$7F
|
||||||
@1: jmp (.TAB_HI) ; execute opcode $80-$FF
|
@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_27: ; DAA
|
||||||
Z80_instr_29: ; ADD HL,HL
|
Z80_instr_29: ; ADD HL,HL
|
||||||
Z80_instr_2A: ; LD HL,(nn)
|
Z80_instr_2A: ; LD HL,(nn)
|
||||||
Z80_instr_2F: ; CPL
|
|
||||||
Z80_instr_31: ; LD SP,nn
|
Z80_instr_31: ; LD SP,nn
|
||||||
Z80_instr_32: ; LD (nn),A
|
Z80_instr_32: ; LD (nn),A
|
||||||
Z80_instr_37: ; SCF
|
|
||||||
Z80_instr_39: ; ADD HL,SP
|
Z80_instr_39: ; ADD HL,SP
|
||||||
Z80_instr_3A: ; LD A,(nn)
|
Z80_instr_3A: ; LD A,(nn)
|
||||||
Z80_instr_3F: ; CCF
|
|
||||||
Z80_instr_76: ; HALT
|
|
||||||
Z80_instr_80: ; ADD A,B
|
Z80_instr_80: ; ADD A,B
|
||||||
Z80_instr_81: ; ADD A,C
|
Z80_instr_81: ; ADD A,C
|
||||||
Z80_instr_82: ; ADD A,D
|
Z80_instr_82: ; ADD A,D
|
||||||
|
|||||||
Reference in new issue
Block a user