Implement int 0x21 AH = 0x09, write string to stdout
This commit is contained in:
parent
3b417b1794
commit
a36708e476
|
@ -27,7 +27,27 @@ wrout:
|
|||
mov dl, ' ' ; "tabs are expanded to blanks"
|
||||
.print:
|
||||
mov al, dl
|
||||
mov bl, 0x70
|
||||
call print_character
|
||||
pop bx
|
||||
ret
|
||||
|
||||
; AH = 0x09
|
||||
; write string to stdout
|
||||
; inputs:
|
||||
; DS:DX: pointer to '$'-terminated string
|
||||
; outputs:
|
||||
; AL: 0x24 ('$')
|
||||
wrout_str:
|
||||
push si
|
||||
mov si, dx
|
||||
jmp .start_loop
|
||||
.print_loop:
|
||||
mov dl, byte [si]
|
||||
call wrout
|
||||
inc si
|
||||
.start_loop:
|
||||
cmp byte [si], '$'
|
||||
jnz .print_loop
|
||||
mov al, '$'
|
||||
pop si
|
||||
ret
|
||||
|
|
|
@ -30,7 +30,7 @@ nul: stc
|
|||
; TODO figure out a way to format this table. maybe it can be autogenerated?
|
||||
; this table is misaligned for me and im the one who made it
|
||||
; x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF
|
||||
fn: dw nul, rdin_echo, wrout, nul, nul, nul, nul, nul, nul, nul, nul, nul, nul, nul, nul, nul ; 0x
|
||||
fn: dw nul, rdin_echo, wrout, nul, nul, nul, nul, nul, nul, wrout_str, nul, nul, nul, nul, nul, nul ; 0x
|
||||
dw nul, nul, nul, nul, nul, nul, nul, nul, nul, nul, nul, nul, nul, nul, nul, nul ; 1x
|
||||
dw nul, nul, nul, nul, nul, setint, nul, nul, nul, nul, nul, nul, gettime, settime, setverify, nul ; 2x
|
||||
dw getver, nul, nul, nul, nul, nul, nul, nul, nul, nul, nul, nul, nul, nul, nul, nul ; 3x
|
||||
|
|
|
@ -7,12 +7,8 @@ kjmp: ; MUST be a jmp due to loader config
|
|||
%include "int21/int21.s"
|
||||
|
||||
kernel_entry:
|
||||
mov si, hello_string
|
||||
mov bl, 0x70
|
||||
call print_string
|
||||
|
||||
mov ah, 0x2
|
||||
mov dl, '!'
|
||||
mov ah, 0x9
|
||||
mov dx, hello_string
|
||||
int 0x21
|
||||
|
||||
jmp $
|
||||
|
|
Loading…
Reference in New Issue