git @ Cat's Eye Technologies BefOS / master src / apps / befterm.s
master

Tree @master (Download .tar.gz)

befterm.s @masterraw · history · blame

;--- 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