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

  1.  
  2. ; *******************************************************
  3. ; *                            *
  4. ; *    Turbo Pascal Runtime Library            *
  5. ; *    Textfile String I/O                *
  6. ; *                            *
  7. ; *    Copyright (C) 1988,92 Borland International    *
  8. ; *                            *
  9. ; *******************************************************
  10.  
  11.     TITLE    TSTR
  12.  
  13.     INCLUDE    SE.ASM
  14.  
  15. CODE    SEGMENT    BYTE PUBLIC
  16.  
  17.     ASSUME    CS:CODE
  18.  
  19. ; Externals
  20.  
  21.     EXTRN    ReadText:NEAR,WriteBlanks:NEAR,WriteBuffer:NEAR
  22.  
  23. ; Publics
  24.  
  25.     PUBLIC    ReadStr,WriteStr
  26.  
  27. ; Read standard procedure (String)
  28.  
  29.     ARG    FileP,DWORD,1
  30.     ARG    StrP,DWORD,1
  31.     ARG    StrLen,WORD,1
  32.  
  33. ReadStr:
  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.     INC    DI
  42.     CALL    ReadText
  43.     MOV    AX,DI
  44.     LES    DI,StrP
  45.     SUB    AX,DI
  46.     DEC    AX
  47.     STOSB
  48.     EXIT    6
  49. @@10:    LODSB
  50.     CMP    AL,cr
  51.     JE    @@11
  52.     CMP    AL,eof
  53.     JE    @@11
  54.     STOSB
  55.     CMP    SI,BX
  56.     LOOPNE    @@10
  57.     JCXZ    @@12
  58.     MOV    AX,OFFSET CS:@@10
  59.     RET
  60. @@11:    DEC    SI
  61. @@12:    XOR    AX,AX
  62.     RET
  63.  
  64. ; Write standard procedure (String)
  65.  
  66. WriteStr:
  67.  
  68.     ARG    FileP,DWORD,1
  69.     ARG    StrP,DWORD,1
  70.     ARG    Width,WORD,1
  71.  
  72.     ENTRY    WINFAR
  73.     LES    BX,StrP
  74.     MOV    AL,ES:[BX]
  75.     XOR    AH,AH
  76.     LES    BX,FileP
  77.     MOV    DX,Width
  78.     SUB    DX,AX
  79.     JLE    @@1
  80.     PUSH    AX
  81.     CALL    WriteBlanks
  82.     POP    AX
  83. @@1:    OR    AX,AX
  84.     JE    @@2
  85.     MOV    SI,StrP.ofs
  86.     MOV    DX,StrP.seg
  87.     INC    SI
  88.     CALL    WriteBuffer
  89. @@2:    EXIT    6
  90.  
  91. CODE    ENDS
  92.  
  93.     END
  94.