home *** CD-ROM | disk | FTP | other *** search
/ Chip 1997 April / Chip_1997-04_cd.bin / prezent / cb / data.z / READLONG.ASM < prev    next >
Assembly Source File  |  1997-01-16  |  1KB  |  83 lines

  1.  
  2. ; *******************************************************
  3. ; *                            *
  4. ; *     Delphi Runtime Library                          *
  5. ; *                            *
  6. ; *    Copyright (c) 1996 Borland International    *
  7. ; *                            *
  8. ; *******************************************************
  9.  
  10.     INCLUDE    SE.ASM
  11.     INCLUDE    FILEIO.ASM
  12.  
  13.  
  14.     .386
  15.     .MODEL    FLAT
  16.  
  17.     EXTRN    _ReadChar:NEAR, _SeekEof:NEAR, _ValLong:NEAR, SetInOutRes:NEAR
  18.  
  19.     PUBLIC    _ReadLong
  20.  
  21.     .CODE
  22.  
  23. ;    FUNCTION _ReadLong( t: Text ) : Longint;
  24.  
  25. _ReadLong PROC
  26.  
  27. ; ->    EAX    Pointer to text record
  28. ; <-    EAX    Result
  29.  
  30.     PUSH    EBX
  31.     PUSH    ESI
  32.     PUSH    EDI
  33.     SUB    ESP,36            ; var numbuf: String[32];
  34.  
  35.     MOV    ESI,EAX
  36.     CALL    _SeekEof
  37.     DEC    AL
  38.     JZ    @@eof
  39.  
  40.     MOV    EDI,ESP            ; EDI -> numBuf[0]
  41.     MOV    BL,32
  42. @@loop:
  43.     MOV    EAX,ESI
  44.     CALL    _ReadChar
  45.     CMP    AL,' '
  46.     JBE    @@endNum
  47.     STOSB
  48.     DEC    BL
  49.     JNZ    @@loop
  50. @@convert:
  51.     MOV    byte ptr [EDI],0
  52.     MOV    EAX,ESP            ; EAX -> numBuf
  53.     PUSH    EDX            ; allocate code result
  54.     MOV    EDX,ESP            ; pass pointer to code
  55.     CALL    _ValLong        ; convert
  56.     POP    EDX            ; pop code result into EDX
  57.     TEST    EDX,EDX
  58.     JZ    @@exit
  59.         MOV     EAX,106
  60.         CALL    SetInOutRes
  61.  
  62. @@exit:
  63.     ADD    ESP,36
  64.     POP    EDI
  65.     POP    ESI
  66.     POP    EBX
  67.     RET
  68.  
  69. @@endNum:
  70.     CMP    AL,eof
  71.     JE    @@convert
  72.     DEC    [ESI].BufPos
  73.     JMP    @@convert
  74.  
  75. @@eof:
  76.     XOR    EAX,EAX
  77.     JMP    @@exit
  78.  
  79.  
  80. _ReadLong ENDP
  81.  
  82.     END
  83.