use16
mov ax, 9ch
mov ss, ax
mov sp, 4096d
mov ax, 7c0h
mov ds, ax
mov ah, 02h
mov dx, 0000h
int 10h
;----------------------------------------
loadup:

	mov ah, 00h
	mov dl, 00h
	int 13h
	mov ah, 01h
	mov dl, 00h
	int 13h
	cmp al, 00h
	jne stop
	;; Load the int 21h code (For later implementation)
	mov ah, 02h
	mov al, 01h
	mov ch, 00h
	mov dh, 00h
	mov cl, 01h
	mov dl, 00h
	mov bx, 1400h
	mov es, bx
	mov bx, 0000h
	int 13h
	mov ah, 01h
	mov dl, 00h
	int 13h
	cmp al, 00h
	jne stop
	;; Set up the IVT to recognize my int 21h
	mov ax, 0000h
	mov es, ax
	mov al, 21h
	mov bl, 04h
	mul bl
	add ax, 02h
	mov bx, ax
	mov dx, 1400h
	mov [es:bx], dx
	mov al, 21h
	mov bl, 04h
	mul bl
	mov bx, ax
	mov dx, 0000h
	mov [es:bx], dx
	;; Clear the screen
	mov ah, 02h
	mov dh, 00h
	mov dl, 00h
	int 10h
	mov ah, 07h
	mov al, 00h
	mov ch, 00h
	mov cl, 00h
	mov dh, 80d
	mov dl, 25d
	int 10h
	mov cx, 01h
	;; Display 'NOS 1.0' message
	mov ah, 09h
	mov al, 4Eh
	int 10h
	mov ah, 02h
	inc dl
	int 10h
	mov ah, 09h
	mov al, 4Fh
	int 10h
	mov ah, 02h
	inc dl
	int 10h
	mov ah, 09h
	mov ah, 53h
	int 10h
	mov ah, 02h
	inc dl
	mov ah, 09h
	mov al, 20h
	int 10h
	mov ah, 02h
	inc dl
	int 10h
	mov ah, 09h
	mov al, 31h
	int 10h
	mov ah, 02h
	inc dl
	int 10h
	mov ah, 09h
	mov al, 2Eh
	int 10h
	mov ah, 02h
	inc dl
	mov ah, 09h
	mov al, 30h
	int 10h
	mov ah, 02h
	mov dl, 00h
	add dh, 01h
	int 10h
	;; Begin setting up the environment in which the user will type
typer:
	mov ah, 00h
	int 16h
	cmp al, 0Dh
	je  print_enter
	cmp al, 08h
	je  print_back
	mov ah, 09h
	int 10h
	push ax
	cmp dl, 80d
	je  mcdn
	pop ax
	mov ah, 09h
	int 10h
	mov ah, 02h
	inc dl
	int 10h
	jmp typer
print_enter:
	cmp dh, 25d
	je  scr_dn
	mov ah, 02h
	add dh, 01h
	mov dl, 00h
	int 10h
	jmp typer
print_back:
	mov ah, 02h
	dec dl
	int 10h
	mov ah, 09h
	mov al, 20h
	int 10h
	jmp typer
scr_dn:
	mov ah, 07h
	mov al, 01h
	int 10h
	ret
mcdn:
	cmp dh, 25d
	je  scr_dn
	mov ah, 02h
	add dh, 01h
	mov dl, 00h
	int 10h
	ret

stop:
hlt
;----------------------------------------
times 510-($-$$) db 0
dw 0xAA55
