Implement file descriptor table and CON as file descriptor
This commit is contained in:
parent
65564b78af
commit
f9b180ea57
@ -2,8 +2,10 @@
|
|||||||
org 0x500
|
org 0x500
|
||||||
jmp 0:(init+0x7C00-$$)
|
jmp 0:(init+0x7C00-$$)
|
||||||
|
|
||||||
%include "inc/bpb.asm"
|
%include "kernel/fd.asm"
|
||||||
%include "inc/mbr.asm"
|
%include "kernel/con.asm"
|
||||||
|
%include "inc/bpb.asm"
|
||||||
|
%include "inc/mbr.asm"
|
||||||
|
|
||||||
; Far call via interrupt vector
|
; Far call via interrupt vector
|
||||||
%macro intcall 1
|
%macro intcall 1
|
||||||
@ -217,10 +219,11 @@ intlp: movsw
|
|||||||
stosw
|
stosw
|
||||||
loop intlp
|
loop intlp
|
||||||
|
|
||||||
; print banner to indicate we are booted
|
; print banner
|
||||||
mov si, banner
|
mov dx, banner
|
||||||
mov ah, 9
|
mov cx, 13
|
||||||
int 0x21
|
mov bx, 0
|
||||||
|
call con_write
|
||||||
|
|
||||||
call dnconv
|
call dnconv
|
||||||
mov al, dl
|
mov al, dl
|
||||||
|
22
kernel/con.asm
Normal file
22
kernel/con.asm
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
con_ftab: dw con_read
|
||||||
|
dw con_write
|
||||||
|
|
||||||
|
con_read: stc
|
||||||
|
ret
|
||||||
|
|
||||||
|
con_write: push si
|
||||||
|
push bx
|
||||||
|
push cx
|
||||||
|
test cx, cx
|
||||||
|
jz .end
|
||||||
|
mov si, dx
|
||||||
|
mov ah, 0x0E
|
||||||
|
xor bx, bx
|
||||||
|
.loop: lodsb
|
||||||
|
int 0x10
|
||||||
|
loop .loop
|
||||||
|
pop cx
|
||||||
|
.end: pop bx
|
||||||
|
pop si
|
||||||
|
ret
|
||||||
|
|
32
kernel/fd.asm
Normal file
32
kernel/fd.asm
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
%define fd_num 32
|
||||||
|
|
||||||
|
section .bss
|
||||||
|
|
||||||
|
fd_table: resb (0x10 * fd_num)
|
||||||
|
|
||||||
|
section .text
|
||||||
|
|
||||||
|
fd_to_ptr: push cx
|
||||||
|
mov cl, 4
|
||||||
|
sal bx, cl
|
||||||
|
add bx, fd_table
|
||||||
|
pop cx
|
||||||
|
ret
|
||||||
|
|
||||||
|
fd_read: cmp bx, fd_num
|
||||||
|
jnc fd_inv_hnd
|
||||||
|
call fd_to_ptr
|
||||||
|
; read ptr to ftab
|
||||||
|
mov bx, [bx]
|
||||||
|
; jmp to addr in ftab[0]
|
||||||
|
jmp [bx]
|
||||||
|
|
||||||
|
fd_write: cmp bx, fd_num
|
||||||
|
jnc fd_inv_hnd
|
||||||
|
call fd_to_ptr
|
||||||
|
mov bx, [bx]
|
||||||
|
jmp [bx+2]
|
||||||
|
|
||||||
|
fd_inv_hnd: mov ax, 6
|
||||||
|
stc
|
||||||
|
ret
|
Loading…
Reference in New Issue
Block a user