Listing 4

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