home *** CD-ROM | disk | FTP | other *** search
-
- ; *******************************************************
- ; * *
- ; * Turbo Pascal Run-time Library *
- ; * Textfile Character I/O *
- ; * *
- ; * Copyright (c) 1988,92 Borland International *
- ; * *
- ; *******************************************************
-
- TITLE TCHR
-
- INCLUDE SE.ASM
-
- DATA SEGMENT WORD PUBLIC
-
- ; Externals
-
- EXTRN InOutRes:WORD
-
- DATA ENDS
-
- CODE SEGMENT BYTE PUBLIC
-
- ASSUME CS:CODE,DS:DATA
-
- ; Externals
-
- EXTRN InOutProc:NEAR,WriteBlanks:NEAR
-
- ; Publics
-
- PUBLIC ReadChar,WriteChar
-
- ; Read standard procedure (Char)
-
- ReadChar:
-
- ARG FileP,DWORD,1
-
- ENTRY WINFAR
- CMP InOutRes,0
- JNE @@4
- LES BX,FileP
- CMP ES:[BX].fMode,fmInput
- JNE @@3
- MOV DI,ES:[BX].fBufPos
- CMP DI,ES:[BX].fBufEnd
- JNE @@1
- CALL InOutProc
- LES BX,FileP
- MOV DI,ES:[BX].fBufPos
- CMP DI,ES:[BX].fBufEnd
- JE @@4
- @@1: INC ES:[BX].fBufPos
- LES BX,ES:[BX].fBufPtr
- MOV AL,ES:[BX+DI]
- @@2: EXIT 0
- @@3: MOV InOutRes,104
- @@4: MOV AL,eof
- JMP @@2
-
- ; Write standard procedure (Char)
-
- WriteChar:
-
- ARG FileP,DWORD,1
- ARG Value,BYTE,2
- ARG Width,WORD,1
-
- ENTRY WINFAR
- LES BX,FileP
- MOV DX,Width
- DEC DX
- JLE @@1
- CALL WriteBlanks
- @@1: CMP InOutRes,0
- JNE @@2
- CMP ES:[BX].fMode,fmOutput
- JNE @@3
- INC ES:[BX].fBufPos
- MOV DI,ES:[BX].fBufPos
- MOV DX,ES:[BX].fBufSize
- LES BX,ES:[BX].fBufPtr
- MOV AL,Value
- MOV ES:[BX+DI-1],AL
- CMP DI,DX
- JNE @@2
- LES BX,FileP
- CALL InOutProc
- @@2: EXIT 4
- @@3: MOV InOutRes,105
- JMP @@2
-
- CODE ENDS
-
- END
-