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

  1.  
  2. ; *******************************************************
  3. ; *                            *
  4. ; *     Turbo Pascal Run-time Library                   *
  5. ; *    Textfile Integer I/O                *
  6. ; *                            *
  7. ; *     Copyright (c) 1988,92 Borland International     *
  8. ; *                            *
  9. ; *******************************************************
  10.  
  11.     TITLE    TINT
  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    Str2Int:NEAR,Int2Str:NEAR,ReadText:NEAR
  30.     EXTRN    WriteBuffer:NEAR,WriteBlanks:NEAR
  31.  
  32. ; Publics
  33.  
  34.     PUBLIC    ReadInt,WriteInt
  35.  
  36. ; Read standard procedure (Integer)
  37.  
  38. ReadInt:
  39.  
  40.     ARG    FileP,DWORD,1
  41.     LOC    NumBuf,BYTE,32
  42.  
  43.     ENTRY    WINFAR
  44.     LES    BX,FileP
  45.     MOV    AX,OFFSET CS:@@10
  46.     MOV    CX,32
  47.     LEA    DI,NumBuf
  48.     MOV    DX,SS
  49.     CALL    ReadText
  50.     MOV    CX,DI
  51.     LEA    DI,NumBuf
  52.     SUB    CX,DI
  53.     JE    @@2
  54.     PUSH    SS
  55.     POP    ES
  56.     CALL    Str2Int
  57.     JC    @@1
  58.     JCXZ    @@3
  59. @@1:    MOV    InOutRes,106
  60. @@2:    XOR    AX,AX
  61.     MOV    DX,AX
  62. @@3:    EXIT    0
  63. @@10:    LODSB
  64.     CMP    AL,' '
  65.     JA    @@12
  66.     CMP    AL,eof
  67.     JE    @@13
  68.     CMP    SI,BX
  69.     JNE    @@10
  70.     MOV    AX,OFFSET CS:@@10
  71.     RET
  72. @@11:    LODSB
  73.     CMP    AL,' '
  74.     JBE    @@13
  75. @@12:    STOSB
  76.     CMP    SI,BX
  77.     LOOPNE    @@11
  78.     JCXZ    @@14
  79.     MOV    AX,OFFSET CS:@@11
  80.     RET
  81. @@13:    DEC    SI
  82. @@14:    XOR    AX,AX
  83.     RET
  84.  
  85. ; Write standard procedure (Integer)
  86.  
  87. WriteInt:
  88.  
  89.     ARG    FileP,DWORD,1
  90.     ARG    Value,DWORD,1
  91.     ARG    Width,WORD,1
  92.     LOC    NumBuf,BYTE,32
  93.  
  94.     ENTRY    WINFAR
  95.     MOV    AX,Value.w0
  96.     MOV    DX,Value.w2
  97.     LEA    DI,NumBuf[32]
  98.     PUSH    SS
  99.     POP    ES
  100.     CALL    Int2Str
  101.     LES    BX,FileP
  102.     MOV    DX,Width
  103.     SUB    DX,CX
  104.     JLE    @@1
  105.     PUSH    CX
  106.     PUSH    DI
  107.     CALL    WriteBlanks
  108.     POP    DI
  109.     POP    CX
  110. @@1:    MOV    AX,CX
  111.     MOV    SI,DI
  112.     MOV    DX,SS
  113.     CALL    WriteBuffer
  114.     EXIT    6
  115.  
  116. CODE    ENDS
  117.  
  118.     END
  119.