home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Jason Aller Floppy Collection
/
181.img
/
TASM-101.ZIP
/
OPRCBYTE.ASM
< prev
next >
Wrap
Assembly Source File
|
1989-05-02
|
3KB
|
111 lines
; FILENAME: OPRCBYTE.ASM
; Copyright (c) 1988, 1989 by Borland International, Inc.
;
; Description: This module implements the routine ProcByte. ProcByte
; processes a byte.
; This module uses MASM mode syntax and standard segment directives.
;
; ASSEMBLY INSTRUCTIONS: To assemble this module use the following
; TASM command line.
;
; TASM oprcbyte
include globals.inc
_TEXT segment
ProcByte proc
; This procedure processes an ASCII character.
; ProcByte performs the following tasks
; reads the byte
; determines the type of character
; and checks whether or not an error has occurred
;
; Input
; al - an ASCII character
; di - the buffer location
; InpBlk - input control block
; InpBuf - input buffer
; cx - bytes in the buffer
; Options - the options being used
; STR_BIT - constant set to strip high bits
; INP_EOF - designates the end of the input file
; InpSta - input status
; INP_ERR - constant set to designate an input error
; INP_EOL - constant set to designate an end-of-line condition
; Output
; di - the buffer is updated
; cx - updated
; ax - byte processed
; Registers modified
; ax
;--- read byte
push cx
push di
lea bx, InpBlk ;input control block
mov cx, 1 ;bytes to read
lea di, InpBuf ;input buffer
call FileRead ;read byte
pop di
pop cx
jc probyt5 ;jump if error or EOF
;--- check type of character
mov al, InpBuf ;load byte
probyt1:
cmp al, 32
jb probyt2
cmp al, 127
ja probyt3
;--- normal byte, 31 < AL < 128
call ByteNorm
ret
;--- low byte, AL < 32
probyt2:
call ByteLow
ret
;--- high byte, AL > 127
probyt3:
test Options, STR_BIT ;check if strip high bit
jnz probyt4
call ByteHigh
ret
probyt4:
and al, 7fh ;clear bit
jmp probyt1 ;loop back
;--- error reading
probyt5:
cmp ax, 0 ;check if EOF
jne probyt7
or InpSta, INP_EOF ;set end of file flag
or cx, cx ;check if any bytes remaining
jz probyt6
or InpSta, INP_EOL ;set end of line also
probyt6:
ret
ret
probyt7:
or InpSta, INP_ERR ;set error flag
ret
ProcByte endp
_TEXT ends
end