home *** CD-ROM | disk | FTP | other *** search
-
- ; D2IOH.INC - include for .ASM files in d2io system - jwk - 07/25/86
- ; duplicates the definitions in D2IO.H used by C source files
-
- EOF equ (-1)
- NULL equ 0
- YES equ 1
- NO equ 0
- .xlist
-
- ftbdef macro defftb
- if defftb
- public _ftb
- _ftb ftb <,rdbit,,> ;stdin - preopened for read only
- ftb <,wrbit,,> ;stdout - preopened for write only
- ftb <,wrbit,,> ;stderr - preopened for write only
- ftb <,rdbit+wrbit,,> ;stdaux - preopened for read/write
- ftb <,rdbit+wrbit,,> ;stdlst - preopened for read/write
- rept 15
- ftb <,,,> ;;files - not open yet
- endm
- else
- extv _ftb, byte
- endif
- endm
-
- hdl macro streamptr
- local j1, j2
-
- mov ax, streamptr
- sub ax, stdin
- js j1 ; too low
- mov bx, type ftb
- div bx
- cmp ax, 20 ;;DOS limit
- jb j2 ; valid handle
- j1: mov ax, eof ; pointer bad
- j2 label near
-
- endm
-
- getftb macro stream, item, dest
- havtyp = 0
- ifidn <item>, <ugc>
- mov si, stream
- mov dest, [si]
- havtyp = 1
- endif
- ifidn <item>, <mode>
- mov si, stream
- mov dest, byte ptr item[si]
- havtyp = 1
- endif
- ifidn <item>, <crflg>
- mov si, stream
- mov dest, byte ptr item[si]
- havtyp = 1
- endif
- ifidn <item>, <ercd>
- mov si, stream
- mov dest, byte ptr item[si]
- havtyp = 1
- endif
- ife havtyp
- error item is unknown
- endif
- endm
-
- putftb macro stream, item, src
- havtyp = 0
- ifidn <item>, <ugc>
- mov si, stream
- mov [si], src
- havtyp = 1
- endif
- ifidn <item>, <mode>
- mov si, stream
- mov byte ptr item[si], src
- havtyp = 1
- endif
- ifidn <item>, <crflg>
- mov si, stream
- mov byte ptr item[si], src
- havtyp = 1
- endif
- ifidn <item>, <ercd>
- mov si, stream
- mov byte ptr item[si], src
- havtyp = 1
- endif
- ife havtyp
- error item is unknown
- endif
- endm
-
- ftb struc
- ugc dw -1 ; unget character storage
- mode db 0 ; mode bits defined by mdbit
- crflg db 0 ; flag = 1 if last char was CR
- ercd db 0 ; DOS error code if errbit==1
- ftb ends
-
- mdbit record err:1, ef:1, raw:1, wr:1, rd:1
- .list
-
- rdbit = mask rd
- wrbit = mask wr
- rawbit = mask raw
- eofbit = mask ef
- errbit = mask err
- dirty = 128
-
- stdin equ offset _ftb[ 0]
- stdout equ offset _ftb[ type ftb]
- stderr equ offset _ftb[2 * type ftb]
- stdaux equ offset _ftb[3 * type ftb]
- stdlst equ offset _ftb[4 * type ftb]
-
-