home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / xbase / library / clipper / rettig / source / peekdbl.asm < prev    next >
Assembly Source File  |  1990-10-21  |  2KB  |  59 lines

  1. ; PEEKDBL.ASM
  2. ;
  3. ; by Ralph Davis
  4. ; modified by Leonard Zerman
  5. ;
  6. ; Placed in the public domain by Tom Rettig Associates, 10/22/1990.
  7. ;
  8.          PUBLIC   PEEKDBL
  9.  
  10.          EXTRN    _TR_PEEK_PARMS:FAR, __TR_ITOD:FAR
  11.  
  12.          INCLUDE  EXTENDA.MAC
  13.  
  14. ;*****************************************************
  15. PEEKDBL_TEXT SEGMENT BYTE PUBLIC 'CODE'
  16.          ASSUME   CS:PEEKDBL_TEXT
  17. ;-----------------------------------------------------
  18. ;     PEEKDBL(segment, offset)
  19. ;
  20. ;        segment = SPACE(4)    && hexadecimal string
  21. ;        offset  = number < 65536 or hexadecimal string
  22. ;
  23. ;        Returns:  8-byte floating number at segment:offset
  24. ;                  -1 if less than two parameters passed
  25. ;--------------
  26. PEEKDBL PROC     FAR
  27.          PUSH     BP
  28.          MOV      BP,SP
  29.          PUSH     DS
  30.          PUSH     ES
  31.          PUSH     SI
  32.          CALL     _TR_PEEK_PARMS
  33.          JL       PEEKDBL_ERR    ; Sign flag set means less than 2 parms
  34.          MOV      DS,SI
  35.          MOV      SI,AX          ; DS:SI now points to requested 
  36.                                  ; floating-point number
  37.          MOV      DX,[SI]        ; pick it up
  38.          MOV      CX,[SI+2]      ; AX:BX:CX:DX
  39.          MOV      BX,[SI+4]
  40.          MOV      AX,[SI+6]
  41.          JMP      SHORT PEEKDBL_EXIT   ; and we're done
  42. PEEKDBL_ERR:
  43.          MOV      AX,-1          ; return -1 for error condition
  44.          PUSH     AX
  45.          CALL     __TR_ITOD      ; converts int in AX to double in AX:BX:CX:DX
  46.          ADD      SP,2
  47. PEEKDBL_EXIT:
  48.          POP      SI
  49.          POP      ES
  50.          POP      DS
  51.          POP      BP
  52.          RET_DBL  AX,BX,CX,DX    ; return double precision value to caller
  53.          RET
  54. PEEKDBL ENDP
  55. ;------------------------------------------------
  56. PEEKDBL_TEXT   ENDS
  57. ;************************************************
  58.          END
  59.