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: