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

  1. ; _TR_POKE.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.  
  9.          PUBLIC   _TR_POKE_PARMS
  10.  
  11.          INCLUDE  EXTENDA.MAC
  12.  
  13.          EXTRN    __TR_HTOI:FAR
  14.  
  15. DGROUP GROUP _DATA
  16. ;*****************************************************
  17. _DATA  SEGMENT  WORD PUBLIC 'DATA'
  18.  
  19. ;
  20. ;    Saves input segment and offset
  21. ;
  22. SEG_ADDR    DW       ?
  23. OFF_ADDR    DW       ?
  24. ;
  25. _DATA  ENDS
  26. ;*****************************************************
  27.  
  28.  
  29. ;*****************************************************
  30. _TR_POKE_TEXT SEGMENT  BYTE PUBLIC  'CODE'
  31.          ASSUME   CS:_TR_POKE_TEXT,DS:_DATA
  32. ;-----------------------------------------------------
  33. _TR_POKE_PARMS PROC       FAR
  34. ;
  35. ; Called by POKE functions
  36. ;
  37.          PUSH     DS
  38.          GET_PCOUNT              ; call _parinfo(0) to
  39.                                  ; make sure parameter was passed
  40.          CMP      AX,3           ; do we have three parameters?
  41.          JL       PO_GP_RET      ; no, go to error routine
  42.          GET_CHAR 1              ; PCOUNT OK, so get parameters
  43.          PUSH     DX             ; now pass address to _TR_HTOI
  44.          PUSH     AX
  45.          CALL     __TR_HTOI       ; returns integer in AX
  46.          ADD      SP,4
  47.          PUSH     DS             ; Save caller's DS
  48.          MOV      DX,_DATA
  49.          MOV      DS,DX
  50.          MOV      SEG_ADDR,AX    ; first parameter is segment address
  51.          POP      DS             ; restore caller's DS
  52.          GET_PTYPE 2             ; call _parinfo() to see if offset
  53.                                  ; is hex string or number
  54.          AND      AX,CHARACTER   ; is it hex string?
  55.          JNZ      PO_GP_2        ; yes, use _parc()
  56.          GET_INT  2              ; no, get offset as int
  57.          JMP      SHORT PO_GP_3
  58.  
  59. PO_GP_2:
  60.          GET_CHAR 2              ; Get parameter as char *
  61.          PUSH     DX             ; Pass it to _tr_htoi()
  62.          PUSH     AX
  63.          CALL     __TR_HTOI       ; returns offset as integer in AX
  64.          ADD      SP,4
  65. PO_GP_3:
  66.          MOV      DX,_DATA
  67.          MOV      DS,DX
  68.          MOV      OFF_ADDR,AX ; save it
  69. PO_GP_RET:
  70.          MOV      DX,SEG_ADDR
  71.          MOV      AX,OFF_ADDR
  72.          POP      DS
  73.          RET     
  74.  
  75. _TR_POKE_PARMS ENDP
  76. ;------------------------------------------------
  77. _TR_POKE_TEXT    ENDS
  78. ;************************************************
  79.          END
  80.