PoC CBIOS
This commit is contained in:
parent
6e2b65e9c0
commit
a016fb0981
142
bios/8086.asm
Normal file
142
bios/8086.asm
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
ORG (RAM-0x600)
|
||||||
|
CPU 8086
|
||||||
|
|
||||||
|
DISKCX: EQU 0x40
|
||||||
|
DISKDL: EQU 0x42
|
||||||
|
DISKDH: EQU 0x43
|
||||||
|
DISKBX: EQU 0x44
|
||||||
|
|
||||||
|
JMP NEAR BOOT
|
||||||
|
JMP NEAR WBOOT
|
||||||
|
JMP NEAR CONST
|
||||||
|
JMP NEAR CONIN
|
||||||
|
JMP NEAR CONOUT
|
||||||
|
JMP NEAR LIST
|
||||||
|
JMP NEAR PUNCH
|
||||||
|
JMP NEAR READER
|
||||||
|
JMP NEAR HOME
|
||||||
|
JMP NEAR SELDSK
|
||||||
|
JMP NEAR SETTRK
|
||||||
|
JMP NEAR SETSEC
|
||||||
|
JMP NEAR SETDMA
|
||||||
|
JMP NEAR READ
|
||||||
|
JMP NEAR WRITE
|
||||||
|
JMP NEAR LISTST
|
||||||
|
JMP NEAR SECTRAN
|
||||||
|
|
||||||
|
BOOT:
|
||||||
|
STC
|
||||||
|
RET
|
||||||
|
|
||||||
|
WBOOT:
|
||||||
|
STC
|
||||||
|
RET
|
||||||
|
|
||||||
|
; CHAR I/O
|
||||||
|
CONST:
|
||||||
|
MOV AH, 1
|
||||||
|
INT 0x16
|
||||||
|
JZ .END
|
||||||
|
MOV AL, 0xFF
|
||||||
|
RET
|
||||||
|
.END:
|
||||||
|
XOR AL, AL
|
||||||
|
RET
|
||||||
|
|
||||||
|
CONIN:
|
||||||
|
XOR AX, AX
|
||||||
|
INT 0x16
|
||||||
|
TEST AL, AL
|
||||||
|
JZ CONIN
|
||||||
|
RET
|
||||||
|
|
||||||
|
CONOUT:
|
||||||
|
PUSH AX
|
||||||
|
PUSH BX
|
||||||
|
MOV AH, 0x0E
|
||||||
|
MOV AL, DL
|
||||||
|
XOR BX, BX
|
||||||
|
INT 0x10
|
||||||
|
POP BX
|
||||||
|
POP AX
|
||||||
|
RET
|
||||||
|
|
||||||
|
LIST:
|
||||||
|
PUSH DX
|
||||||
|
XOR AH, AH
|
||||||
|
MOV AL, DL
|
||||||
|
INT 0x17
|
||||||
|
POP DX
|
||||||
|
RET
|
||||||
|
|
||||||
|
LISTST:
|
||||||
|
STC
|
||||||
|
RET
|
||||||
|
|
||||||
|
PUNCH:
|
||||||
|
STC
|
||||||
|
RET
|
||||||
|
|
||||||
|
READER:
|
||||||
|
STC
|
||||||
|
RET
|
||||||
|
|
||||||
|
; DISK I/O
|
||||||
|
HOME:
|
||||||
|
RET
|
||||||
|
|
||||||
|
SELDSK:
|
||||||
|
MOV BYTE [DISKDL], CL
|
||||||
|
XOR BX, BX
|
||||||
|
RET
|
||||||
|
|
||||||
|
SETTRK:
|
||||||
|
PUSH CX
|
||||||
|
PUSH DX
|
||||||
|
|
||||||
|
MOV DX, CX
|
||||||
|
; CH for headnum, CL for SAL
|
||||||
|
MOV CX, 0x0006
|
||||||
|
|
||||||
|
; Take off LSB as head number
|
||||||
|
XOR CH, CH
|
||||||
|
RCR DX, 1
|
||||||
|
RCL CH, 1
|
||||||
|
MOV BYTE [DISKDH], CH
|
||||||
|
|
||||||
|
; DX is sector number now
|
||||||
|
; Shift into format for int13
|
||||||
|
; DX ------9876543210
|
||||||
|
SAL DX, CL
|
||||||
|
; DX 9876543210------
|
||||||
|
ROL DX, 1
|
||||||
|
ROL DX, 1
|
||||||
|
; DX 76543210------98
|
||||||
|
SAL DL, CL
|
||||||
|
; DX 7654321098------
|
||||||
|
AND WORD [DISKCX], 0x003F
|
||||||
|
OR WORD [DISKCX], DX
|
||||||
|
|
||||||
|
POP DX
|
||||||
|
POP CX
|
||||||
|
RET
|
||||||
|
|
||||||
|
SETSEC:
|
||||||
|
STC
|
||||||
|
RET
|
||||||
|
|
||||||
|
SETDMA:
|
||||||
|
MOV WORD [DISKBX], CX
|
||||||
|
RET
|
||||||
|
|
||||||
|
READ:
|
||||||
|
STC
|
||||||
|
RET
|
||||||
|
|
||||||
|
WRITE:
|
||||||
|
STC
|
||||||
|
RET
|
||||||
|
|
||||||
|
SECTRAN:
|
||||||
|
STC
|
||||||
|
RET
|
Loading…
Reference in New Issue
Block a user