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