58 lines
631 B
NASM
58 lines
631 B
NASM
cpu 8086
|
|
|
|
; Memory layout (starting from top)
|
|
%define self 0xF000
|
|
%define diskbuf (self-0x200)
|
|
%define stack (diskbuf) ; end addr, grows down
|
|
|
|
org self
|
|
jmp init
|
|
|
|
banner:
|
|
db "RDOS 2019-09", 0x0A, 0x0D, 0
|
|
|
|
print_banner:
|
|
mov cl, 2
|
|
mov si, banner
|
|
.loop:
|
|
mov dl, BYTE [si]
|
|
test dl, dl
|
|
jz .end
|
|
call cpm_syscall
|
|
inc si
|
|
jmp .loop
|
|
.end:
|
|
ret
|
|
|
|
init:
|
|
mov sp, stack
|
|
|
|
call print_banner
|
|
int3
|
|
|
|
cli
|
|
.halt:
|
|
hlt
|
|
jmp .halt
|
|
|
|
cpm_syscall:
|
|
cmp cl, 0x02
|
|
je putc
|
|
stc
|
|
ret
|
|
|
|
putc:
|
|
push ax
|
|
push bx
|
|
mov al, dl
|
|
mov ah, 0x0e
|
|
mov bx, 0x0000
|
|
int 0x10
|
|
pop bx
|
|
pop ax
|
|
ret
|
|
|
|
%include "string.asm"
|
|
|
|
kernel_end:
|