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

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