home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / wunderki.zip / TCHR.ASM < prev    next >
Assembly Source File  |  1993-08-16  |  2KB  |  98 lines

  1.  
  2. ; *******************************************************
  3. ; *                            *
  4. ; *     Turbo Pascal Run-time Library                   *
  5. ; *    Textfile Character I/O                *
  6. ; *                            *
  7. ; *     Copyright (c) 1988,92 Borland International     *
  8. ; *                            *
  9. ; *******************************************************
  10.  
  11.     TITLE    TCHR
  12.  
  13.     INCLUDE    SE.ASM
  14.  
  15. DATA    SEGMENT    WORD PUBLIC
  16.  
  17. ; Externals
  18.  
  19.     EXTRN    InOutRes:WORD
  20.  
  21. DATA    ENDS
  22.  
  23. CODE    SEGMENT    BYTE PUBLIC
  24.  
  25.     ASSUME    CS:CODE,DS:DATA
  26.  
  27. ; Externals
  28.  
  29.     EXTRN    InOutProc:NEAR,WriteBlanks:NEAR
  30.  
  31. ; Publics
  32.  
  33.     PUBLIC    ReadChar,WriteChar
  34.  
  35. ; Read standard procedure (Char)
  36.  
  37. ReadChar:
  38.  
  39.     ARG    FileP,DWORD,1
  40.  
  41.     ENTRY    WINFAR
  42.     CMP    InOutRes,0
  43.     JNE    @@4
  44.     LES    BX,FileP
  45.     CMP    ES:[BX].fMode,fmInput
  46.     JNE    @@3
  47.     MOV    DI,ES:[BX].fBufPos
  48.     CMP    DI,ES:[BX].fBufEnd
  49.     JNE    @@1
  50.     CALL    InOutProc
  51.     LES    BX,FileP
  52.     MOV    DI,ES:[BX].fBufPos
  53.     CMP    DI,ES:[BX].fBufEnd
  54.     JE    @@4
  55. @@1:    INC    ES:[BX].fBufPos
  56.     LES    BX,ES:[BX].fBufPtr
  57.     MOV    AL,ES:[BX+DI]
  58. @@2:    EXIT    0
  59. @@3:    MOV    InOutRes,104
  60. @@4:    MOV    AL,eof
  61.     JMP    @@2
  62.  
  63. ; Write standard procedure (Char)
  64.  
  65. WriteChar:
  66.  
  67.     ARG    FileP,DWORD,1
  68.     ARG    Value,BYTE,2
  69.     ARG    Width,WORD,1
  70.  
  71.     ENTRY    WINFAR
  72.     LES    BX,FileP
  73.     MOV    DX,Width
  74.     DEC    DX
  75.     JLE    @@1
  76.     CALL    WriteBlanks
  77. @@1:    CMP    InOutRes,0
  78.     JNE    @@2
  79.     CMP    ES:[BX].fMode,fmOutput
  80.     JNE    @@3
  81.     INC    ES:[BX].fBufPos
  82.     MOV    DI,ES:[BX].fBufPos
  83.     MOV    DX,ES:[BX].fBufSize
  84.     LES    BX,ES:[BX].fBufPtr
  85.     MOV    AL,Value
  86.     MOV    ES:[BX+DI-1],AL
  87.     CMP    DI,DX
  88.     JNE    @@2
  89.     LES    BX,FileP
  90.     CALL    InOutProc
  91. @@2:    EXIT    4
  92. @@3:    MOV    InOutRes,105
  93.     JMP    @@2
  94.  
  95. CODE    ENDS
  96.  
  97.     END
  98.