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

  1.  
  2. ; *******************************************************
  3. ; *                            *
  4. ; *     Turbo Pascal Run-time Library                   *
  5. ; *    Textfile Character Array I/O            *
  6. ; *                            *
  7. ; *     Copyright (c) 1988,92 Borland International     *
  8. ; *                            *
  9. ; *******************************************************
  10.  
  11.     TITLE    TPCH
  12.  
  13.     INCLUDE    SE.ASM
  14.  
  15. CODE    SEGMENT    BYTE PUBLIC
  16.  
  17.     ASSUME    CS:CODE
  18.  
  19. ; Externals
  20.  
  21.     EXTRN    ReadText:NEAR,WriteBuffer:NEAR,WriteBlanks:NEAR
  22.  
  23. ; Publics
  24.  
  25.     PUBLIC    ReadPChar,WritePChar
  26.  
  27. ; Read standard procedure (PChar)
  28.  
  29.     ARG    FileP,DWORD,1
  30.     ARG    StrP,DWORD,1
  31.     ARG    StrLen,WORD,1
  32.  
  33. ReadPChar:
  34.  
  35.     ENTRY    WINFAR
  36.     LES    BX,FileP
  37.     MOV    AX,OFFSET CS:@@10
  38.     MOV    CX,StrLen
  39.     MOV    DI,StrP.ofs
  40.     MOV    DX,StrP.seg
  41.     CALL    ReadText
  42.     MOV    ES,DX
  43.     XOR    AX,AX
  44.     STOSB
  45.     EXIT    6
  46. @@10:    JCXZ    @@13
  47. @@11:    LODSB
  48.     CMP    AL,cr
  49.     JE    @@12
  50.     CMP    AL,eof
  51.     JE    @@12
  52.     STOSB
  53.     CMP    SI,BX
  54.     LOOPNE    @@11
  55.     JCXZ    @@13
  56.     MOV    AX,OFFSET CS:@@11
  57.     RET
  58. @@12:    DEC    SI
  59. @@13:    XOR    AX,AX
  60.     RET
  61.  
  62. ; Write standard procedure (PChar)
  63.  
  64. WritePChar:
  65.  
  66.     ARG    FileP,DWORD,1
  67.     ARG    StrP,DWORD,1
  68.     ARG    Width,WORD,1
  69.  
  70.     ENTRY    WINFAR
  71.     MOV    AX,StrP.ofs
  72.     OR    AX,StrP.seg
  73.     JE    @@1
  74.     LES    DI,StrP
  75.     MOV    CX,0FFFFH
  76.     XOR    AL,AL
  77.     CLD
  78.     REPNE    SCASB
  79.     MOV    AX,0FFFEH
  80.     SUB    AX,CX
  81. @@1:    LES    BX,FileP
  82.     OR    AX,AX
  83.     JS    @@2
  84.     MOV    DX,Width
  85.     SUB    DX,AX
  86.     JLE    @@2
  87.     PUSH    AX
  88.     CALL    WriteBlanks
  89.     POP    AX
  90. @@2:    OR    AX,AX
  91.     JE    @@3
  92.     MOV    SI,StrP.ofs
  93.     MOV    DX,StrP.seg
  94.     CALL    WriteBuffer
  95. @@3:    EXIT    6
  96.  
  97. CODE    ENDS
  98.  
  99.     END
  100.