;--- BEGIN ---------------------------------------------------;
BITS 16
ORG 0100h
;--- Externals -----------------------------------------------;
%include "../inc/bekernel.inc"
;--- BSS -----------------------------------------------------;
SEGMENT .bss
status: RESW 1
keyhit: RESW 1
;--- CODE ----------------------------------------------------;
SEGMENT .text
;--- Main ----------------------------------------------------;
Main: call BefTermScreen
; mov cx, 19200
mov bx, BefOS_InitCom
call BefOS
mov bx, BefOS_PlugCom
call BefOS
PollLoop: mov bx, BefOS_ReadCom
call BefOS
cmp ch, 0
je CheckKey
jmp ReadData
CheckKey: mov bx, BefOS_ReadKey
call BefOS
cmp cx, 0
je PollLoop
mov [keyhit], cx ; else retrieve
mov ax, cx
FinalAlt: cmp ax, 1000h ; Alt-Q
jne RealKey
mov bx, BefOS_UnplugCom
call BefOS
mov bx, BefOS_TextVid
call BefOS
retf
RealKey: cmp al, 0
jne ASCIIKey
ASCIIKey: mov bx, BefOS_WorkLight
call BefOS
mov cx, [keyhit]
mov bx, BefOS_WriteCom
call BefOS
mov bx, BefOS_OKLight
call BefOS
jmp PollLoop
ReadData: mov al, cl
;mov bx, BefOS_EditLight
;call BefOS
cmp al, 13
jne NotReturn
mov bx, BefOS_LeftMarg
call BefOS
jmp CheckKey
NotReturn: cmp al, 10
jne NotLineFeed
mov bx, BefOS_LineFeed
call BefOS
jmp CheckKey
NotLineFeed: cmp al, 12
jne NotFormFeed
call BefTermScreen
jmp CheckKey
NotFormFeed: xor cx, cx
mov cl, al
mov bx, BefOS_WriteByte
call BefOS
mov bx, BefOS_BufRight
call BefOS
SkipRead: jmp CheckKey
BefTermScreen: mov cx, 0
mov bx, BefOS_MoveCrsr
call BefOS
mov cl, 6dh
mov bx, BefOS_ClrScreen
call BefOS
mov bx, BefOS_RefreshStatus
jmp BefOS