From fbab63261611f235ce8e01569aff4dd137f5bf36 Mon Sep 17 00:00:00 2001 From: Nero <41307858+nero@users.noreply.github.com> Date: Fri, 19 Mar 2021 18:50:50 +0000 Subject: [PATCH] Implement file open --- kernel/fcb.asm | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/kernel/fcb.asm b/kernel/fcb.asm index f2ce2f6..61bc2f5 100644 --- a/kernel/fcb.asm +++ b/kernel/fcb.asm @@ -1,9 +1,15 @@ ; FCB layout -; 1 byte drive (0=default, 1=A:, 2=B:, ...) -; 8.3 filename -; 8.3 filename for rename -FCBSIZ equ 30 +struc FCB + +FCBDRV resb 1 ; BYTE drive (0=default, 1=A:, 2=B:, ...) +FCBFN resb 11 ; 11 BYTES filename +FCBCLUS resw 1 ; DWORD current cluster +FCBRN resb 1 ; BYTE record in cluster + +endstruc + +FCBSIZ equ FCB_size section .data @@ -136,11 +142,13 @@ fndnxt mov bp, sp ; copy over drive byte movsb ; copy filename + push ds mov ax, cs mov ds, ax mov si, bx mov cx, 11 rep movsb + pop ds ; done! xor ax, ax ret @@ -149,5 +157,12 @@ fndnxt mov bp, sp .ret: sbb al, al ret -open: - ret +open call fndfst + test al, al + jnz .ret + ; read start cluster + mov ax, [cs:bx+26] + mov [ds:bx+FCBCLUS], ax + ; reset record number + mov byte [ds:bx+FCBRN], 0 +.ret ret