
;
; _cio - console i/o for embedded system example
;	near version
;

_TEXT	segment	byte public 'CODE'
DGROUP	group	_DATA,_BSS
	assume	cs:_TEXT,ds:DGROUP,ss:DGROUP
_TEXT	ends

_DATA	segment word public 'DATA'
_DATA	ends

_BSS	segment word public 'BSS'
_BSS	ends


_TEXT	segment	byte public 'CODE'


;
; _cin - input to console
;	near version
;

__cin	proc	near
	public	__cin
	push	bp			; perform c entry
	mov	bp,sp
	push	bx			; save bx for c
	mov	ah,0h			; get the byte
	mov	bx,7
	int	16h			; using the bios
	mov	ah,0			; "sign extend" - convert to int
	pop	bx			; restore context
	pop	bp
	ret
__cin	endp


;
; _cout - output to console
;	near version
;

__cout	proc	near
	public	__cout
	push	bp			; c entry
	mov	bp,sp
	push	bx			; save register for c
	mov	ax,word ptr [bp+4]	; get c
	mov	ah,0eh			; and output the byte
	mov	bx,7
	int	10h			; call bios
	pop	bx			; restore context
	pop	bp
	ret
__cout	endp


;
; _cinit - console initialization
;	**** No initialization required for bios version ****
;
;	near version
;

__cinit	proc	near
	public	__cinit
	push	bp
	; perform any required hardware initialization here
	mov	ax,1			; return true for success
	pop	bp
	ret
__cinit	endp


_TEXT	ends

	end
