home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 9 / 09.iso / l / l040 / 13.ddi / RTLSYS.ZIP / TF87.ASM < prev    next >
Encoding:
Assembly Source File  |  1992-10-28  |  1.7 KB  |  124 lines

  1.  
  2. ; *******************************************************
  3. ; *                            *
  4. ; *     Turbo Pascal Run-time Library                   *
  5. ; *    Textfile 8087 I/O                *
  6. ; *                            *
  7. ; *     Copyright (c) 1988,92 Borland International     *
  8. ; *                            *
  9. ; *******************************************************
  10.  
  11.     TITLE    TF87
  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    Str2Float:NEAR,Float2Str:NEAR,ReadText:NEAR
  30.     EXTRN    WriteBuffer:NEAR,WriteBlanks:NEAR
  31.  
  32. ; Publics
  33.  
  34.     PUBLIC    ReadFloat,WriteFloat
  35.  
  36. ; Read standard procedure (8087)
  37.  
  38. ReadFloat:
  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    Str2Float
  57.     JC    @@1
  58.     JCXZ    @@3
  59. @@1:    MOV    InOutRes,106
  60.     FSTP    ST(0)
  61. @@2:    FLDZ
  62.     FWAIT
  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 (8087)
  87.  
  88. WriteFloat:
  89.  
  90.     ARG    FileP,DWORD,1
  91.     ARG    Width,WORD,1
  92.     ARG    Decimals,WORD,1
  93.     LOC    NumBuf,BYTE,64
  94.  
  95.     ENTRY    WINFAR
  96.     MOV    CX,Decimals
  97.     OR    CX,CX
  98.     JNS    @@1
  99.     MOV    CX,8
  100.     SUB    CX,Width
  101.     CMP    CX,-2
  102.     JLE    @@1
  103.     MOV    CX,-2
  104. @@1:    LEA    DI,NumBuf
  105.     PUSH    SS
  106.     POP    ES
  107.     CALL    Float2Str
  108.     LES    BX,FileP
  109.     MOV    DX,Width
  110.     SUB    DX,CX
  111.     JLE    @@2
  112.     PUSH    CX
  113.     CALL    WriteBlanks
  114.     POP    CX
  115. @@2:    MOV    AX,CX
  116.     LEA    SI,NumBuf
  117.     MOV    DX,SS
  118.     CALL    WriteBuffer
  119.     EXIT    4
  120.  
  121. CODE    ENDS
  122.  
  123.     END
  124.