; Parse ASCIIZ string into FCB ; IN SI ptr to filename ; BX ptr to FCB fcb_parse: push si push di push ax mov di, bx inc di .cleanout: push di mov cx, 0x0A mov al, 0x20 rep stosb pop di .base_loop: call .read cmp al, 0x2E je .ext_start cmp al, 0x20 je .ret stosb jmp .base_loop .ext_start: mov di, bx add di, 9 .ext_loop: call .read cmp al, 0x20 je .ret stosb jmp .ext_loop .read: lodsb test al, al jz .eret cmp al, 0x0D je .eret ret .eret: pop ax .ret: pop ax pop di pop si ret ; Print a FCB (for debugging) ; IN BX ptr FCB fcb_print: push dx push cx push si mov si, bx inc si mov cx, 11 .loop: lodsb mov dl, al call putc loop .loop mov dl, 0x26 call putc .ret: pop si pop cx pop dx ret