home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-387-Vol-3of3.iso / f / fmonitor.zip / DVAPI.INC next >
Text File  |  1988-05-04  |  6KB  |  335 lines

  1.  
  2. ;  DESQview API interfaces
  3.  
  4. ;***************************************************************
  5. ;
  6. ;  Function numbers (AX values) for the @CALL interface
  7. ;
  8. ;***************************************************************
  9.  
  10. DVC_PAUSE    EQU    1000H
  11. DVC_PRINTC    EQU    1003H
  12. DVC_GETBIT    EQU    1013H
  13. DVC_FREEBIT    EQU    1014H
  14. DVC_SETBIT    EQU    1015H
  15. DVC_ISOBJ    EQU    1016H
  16. DVC_LOCATE    EQU    1018H
  17. DVC_SOUND    EQU    1019H
  18. DVC_OSTACK    EQU    101AH
  19. DVC_BEGINC    EQU    101BH
  20. DVC_ENDC    EQU    101CH
  21. DVC_STOP    EQU    101DH
  22. DVC_START    EQU    101EH
  23. DVC_DISPEROR    EQU    101FH
  24. DVC_PGMINT    EQU    1021H
  25. DVC_POSWIN    EQU    1023H
  26. DVC_GETBUF    EQU    1024H
  27. DVC_USTACK    EQU    1025H
  28. DVC_POSTTASK    EQU    102BH
  29. DVC_NEWPROC    EQU    102CH
  30. DVC_KMOUSE    EQU    102DH
  31.  
  32. DVC_APPNUM    EQU    1107H
  33. DVC_DBGPOKE    EQU    110AH
  34. DVC_APILEVEL    EQU    110BH
  35. DVC_GETMEM    EQU    110CH
  36. DVC_PUTMEM    EQU    110DH
  37. DVC_FINDMAIL    EQU    110EH
  38. DVC_PUSHKEY    EQU    1110H
  39. DVC_JUSTIFY    EQU    1111H
  40. DVC_CSTYLE    EQU    1112H
  41.  
  42. DVC_DVPRESENT    EQU    0FFFFH
  43. DVC_SHADOW    EQU    0FFFEH
  44. DVC_UPDATE    EQU    0FFFDH
  45.  
  46. ;***************************************************************
  47. ;
  48. ;  Message numbers (BH values) for the @SEND interface
  49. ;
  50. ;***************************************************************
  51.  
  52. DVM_HANDLE    EQU    00H
  53. DVM_NEW        EQU    01H
  54. DVM_FREE    EQU    02H
  55. DVM_ADDR    EQU    03H
  56. DVM_DIR        EQU    03H
  57. DVM_READ    EQU    04H
  58. DVM_APPLY    EQU    04H
  59. DVM_WRITE    EQU    05H
  60. DVM_SIZEOF    EQU    08H
  61. DVM_LEN        EQU    09H
  62. DVM_ADDTO    EQU    0AH
  63. DVM_SUBFROM    EQU    0BH
  64. DVM_OPEN    EQU    0CH
  65. DVM_CLOSE    EQU    0DH
  66. DVM_ERASE    EQU    0EH
  67. DVM_STATUS    EQU    0FH
  68. DVM_EOF        EQU    10H
  69. DVM_AT        EQU    11H
  70. DVM_SETSCALE    EQU    11H
  71. DVM_SETNAME    EQU    11H
  72. DVM_READN    EQU    12H
  73. DVM_GETSCALE    EQU    12H
  74. DVM_REDRAW    EQU    13H
  75. DVM_SETESC    EQU    14H
  76. DVM_LOCK    EQU    14H
  77.  
  78. ;***************************************************************
  79. ;
  80. ;  Alias numbers (BL values) for the @SEND interface
  81. ;
  82. ;***************************************************************
  83.  
  84. DVA_TOS        EQU    00H
  85. DVA_ME        EQU    01H
  86. DVA_MAILTOS    EQU    02H
  87. DVA_MAILME    EQU    03H
  88. DVA_KEYTOS    EQU    04H
  89. DVA_KEYME    EQU    05H
  90. DVA_OBJQTOS    EQU    06H
  91. DVA_OBJQME    EQU    07H
  92. DVA_WINDOW    EQU    08H
  93. DVA_MAILBOX    EQU    09H
  94. DVA_KEYBOARD    EQU    0AH
  95. DVA_TIMER    EQU    0BH
  96. DVA_POINTER    EQU    0FH
  97. DVA_PANEL    EQU    10H
  98.  
  99.  
  100. ;***************************************************************
  101. ;
  102. ;  @SEND interface macro - bombs AH and BX
  103. ;
  104. ;***************************************************************
  105.  
  106. @SEND        macro    message,object
  107.         ifdef DVA_&object
  108.           MOV    BX,DVM_&message*256+DVA_&object
  109.             MOV    AH,12H
  110.           INT    15H
  111.         else        
  112.           @PUSH    &object
  113.           @SEND    &message,TOS
  114.         endif
  115.         endm
  116.  
  117. ;***************************************************************
  118. ;
  119. ;  @CALL interface macro - bombs AX
  120. ;
  121. ;***************************************************************
  122.  
  123. @CALL        macro    func
  124.             local    L1
  125.         ifndef DVC_&func
  126.           MOV    AX,&func
  127.           INT    15H
  128.         else
  129.         if (DVC_&func eq DVC_APILEVEL)
  130.           CMP    BX,200H        ; is 2.00 sufficient ?
  131.           JB    L1        ; jump if so
  132.           MOV    AX,DVC_APILEVEL    ; issue the call
  133.           INT    15H
  134.           CMP    AX,2        ; early version 2.00 ?
  135.           JNE    L1        ; jump if not
  136.           XCHG    BH,BL        ; reverse bytes
  137.           MOV    AX,DVC_APILEVEL    ; reissue call
  138.           INT    15H
  139.           XCHG    BH,BL        ; correct byte order
  140. L1:
  141.         else
  142.         if (DVC_&func eq DVC_DVPRESENT)
  143.           PUSH    BX        ; save registers
  144.           PUSH    CX
  145.           PUSH    DX
  146.           MOV    AX,2B01H    ; DOS Set Date function
  147.           XOR    BX,BX        ; in case outside DESQview
  148.           MOV    CX,'DE'        ; invalid date value
  149.           MOV    DX,'SQ'
  150.           INT    21H
  151.           MOV    AX,BX        ; version # to AX
  152.           CMP    AX,2        ; early DV 2.00 ?
  153.           JNE    L1        ; jump if not
  154.           XCHG    AH,AL        ; swap bytes if so
  155. L1:          POP    DX        ; restore registers
  156.           POP    CX
  157.           POP    BX
  158.         else
  159.         if (DVC_&func eq DVC_SHADOW)
  160.           MOV    AH,0FEH
  161.           INT    10H
  162.         else 
  163.         if (DVC_&func eq DVC_UPDATE)
  164.           MOV    AH,0FFH
  165.           INT    10H
  166.         else 
  167.           MOV    AX,DVC_&func
  168.           INT    15H
  169.         endif
  170.         endif
  171.         endif
  172.         endif
  173.         endif
  174.         endm
  175.  
  176.  
  177. ;***************************************************************
  178. ;
  179. ;  @PUSH and supporting macros - pushes 32-bit values on the stack
  180. ;
  181. ;***************************************************************
  182.  
  183. @PUSH_ESDI    macro
  184.         PUSH    ES
  185.         PUSH    DI
  186.         endm
  187.  
  188. @PUSH_DSSI    macro
  189.         PUSH    DS
  190.         PUSH    SI
  191.         endm
  192.  
  193. @PUSH_BXAX    macro
  194.         PUSH    BX
  195.         PUSH    AX
  196.         endm
  197.  
  198. @PUSH_DXCX    macro
  199.         PUSH    DX
  200.         PUSH    CX
  201.         endm
  202.  
  203. @PUSH_ESSI    macro
  204.         PUSH    ES
  205.         PUSH    SI
  206.         endm
  207.  
  208. @PUSH_DSDI    macro
  209.         PUSH    DS
  210.         PUSH    DI
  211.         endm
  212.  
  213. @PUSH        macro    parm
  214.         ifdef @PUSH_&parm
  215.           @PUSH_&parm
  216.         else          
  217.           PUSH    WORD PTR &parm+2
  218.           PUSH    WORD PTR &parm
  219.         endif
  220.         endm
  221.  
  222.  
  223. ;***************************************************************
  224. ;
  225. ;  @POP and supporting macros - pops 32-bit values from the stack
  226. ;
  227. ;***************************************************************
  228.  
  229. @POP_ESDI    macro
  230.         POP    DI
  231.         POP    ES
  232.         endm
  233.  
  234. @POP_DSSI    macro
  235.         POP    SI
  236.         POP    DS
  237.         endm
  238.  
  239. @POP_BXAX    macro
  240.         POP    AX
  241.         POP    BX
  242.         endm
  243.  
  244. @POP_DXCX    macro
  245.         POP    CX
  246.         POP    DX
  247.         endm
  248.  
  249. @POP_ESSI    macro
  250.         POP    SI
  251.         POP    ES
  252.         endm
  253.  
  254. @POP_DSDI    macro
  255.         POP    DI
  256.         POP    DS
  257.         endm
  258.  
  259. @POP        macro    parm
  260.         ifdef @POP_&parm
  261.           @POP_&parm
  262.         else          
  263.           POP    WORD PTR &parm
  264.           POP    WORD PTR &parm+2
  265.         endif
  266.         endm
  267.  
  268.  
  269. ;***************************************************************
  270. ;
  271. ;  @MOV and supporting macros - moves 32-bit values to/from memory
  272. ;
  273. ;***************************************************************
  274.  
  275. @DV_LOAD    macro    seg,off,arg
  276.         MOV    &seg,WORD PTR &arg+2
  277.         MOV    &off,WORD PTR &arg
  278.         endm
  279.  
  280. @DV_STORE    macro    seg,off,arg
  281.         MOV    WORD PTR &arg+2,&seg
  282.         MOV    WORD PTR &arg,&off
  283.         endm
  284.  
  285. @MOV_ESDI    macro    mac,arg
  286.         &mac    ES,DI,&arg
  287.         endm
  288.  
  289. @MOV_DSSI    macro    mac,arg
  290.         &mac    DS,SI,&arg
  291.         endm
  292.  
  293. @MOV_BXAX    macro    mac,arg
  294.         &mac    BX,AX,&arg
  295.         endm
  296.  
  297. @MOV_DXCX    macro    mac,arg
  298.         &mac    DX,CX,&arg
  299.         endm
  300.  
  301. @MOV_ESSI    macro    mac,arg
  302.         &mac    ES,SI,&arg
  303.         endm
  304.  
  305. @MOV_DSDI    macro    mac,arg
  306.         &mac    DS,DI,&arg
  307.         endm
  308.  
  309. @MOV        macro    dest,src
  310.         ifdef @MOV_&dest
  311.           @MOV_&dest    @DV_LOAD,&src
  312.         else
  313.           @MOV_&src    @DV_STORE,&dest
  314.         endif
  315.         endm
  316.  
  317.  
  318. ;***************************************************************
  319. ;
  320. ;  @CMP macro - compares BX:AX to DWORD in memory
  321. ;
  322. ;***************************************************************
  323.  
  324. @CMP        macro    parm
  325.         local    L1
  326.         CMP    AX,WORD PTR &parm
  327.         JNE    L1
  328.         CMP    BX,WORD PTR &parm+2
  329. L1:
  330.         endm
  331.  
  332.  
  333.  
  334.  
  335.