home *** CD-ROM | disk | FTP | other *** search
/ Collection of Hack-Phreak Scene Programs / cleanhpvac.zip / cleanhpvac / XLIBP202.ZIP / XLIB2.INC < prev    next >
Text File  |  1994-06-12  |  13KB  |  466 lines

  1. ACINDEX       EQU  03c0h    ; Attribute controller index register
  2. MISCOUTPUT    EQU  03c2h    ; Miscellaneous Output register
  3. SCINDEX       EQU  03c4h    ; SEQUence Controller Index 1
  4. SCINDEX2      EQU  03c5h    ; SEQUence Controller Index 2
  5. GCINDEX       EQU  03ceh    ; Graphics controller Index
  6. CRTCINDEX     EQU  03d4h    ; CRT Controller Index
  7. DACREADINDEX  EQU  03c7h    ;
  8. DACWRITEINDEX EQU  03c8h    ;
  9. DACDATA       EQU  03c9h    ;
  10. INPUTSTATUS0  EQU  03dah    ; Input status 0 register
  11.  
  12. MAPMASK       EQU  02h      ; index in SC of Map Mask register
  13. READMAP       EQU  04h      ; index in GC of the Read Map register
  14. BITMASK       EQU  08h      ; index in GC of Bit Mask register
  15.  
  16. OVERFLOW      EQU  07h      ; CRTC overflow register index
  17. MAXSCANLINE   EQU  09h      ; CRTC maximum scan line register index
  18. ADDRHIGH      EQU  0ch      ; Index of Start Address High reg in CRTC
  19. ADDRLOW       EQU  0dh      ;                        Low
  20. CRTCOFFSET    EQU  13h      ; CRTC offset register index
  21. UNDERLINE     EQU  14h      ; CRTC underline location register index
  22. MODECONTROL   EQU  17h      ; CRTC mode control register index
  23. LINECOMPARE   EQU  18h      ; CRTC line compare reg. index (bits 0-7 of
  24.                                                         ; split screen scan line
  25.  
  26. ACMODECONTROL EQU  10h      ; Index of Mode COntrol register in AC
  27. PELPANNING    EQU  13h      ; Pel panning register index in AC
  28.  
  29. PATTERNBUFFER EQU  0fffch   ; offset in screen memory of pattern buffer
  30.  
  31. TRUE          EQU 1
  32. FALSE         EQU 0
  33.  
  34. OK            EQU 0
  35. ERROR         EQU 1
  36. LASTXMODE     EQU 17
  37.  
  38. i86           EQU 0
  39. i186          EQU 1
  40. i286          EQU 2
  41. i386sx        EQU 3
  42. i386dx        EQU 4
  43. i486          EQU 5
  44.  
  45.  
  46. NONE          EQU 0
  47. MDA           EQU 1
  48. CGA           EQU 2
  49. EGAMono       EQU 3
  50. EGAColor      EQU 4
  51. VGAMono       EQU 5
  52. VGAColor      EQU 6
  53. MCGAMono      EQU 7
  54. MCGAColor     EQU 8
  55.  
  56. LowWord       EQU 0
  57. HighWord      EQU 2
  58.  
  59. XCoord        EQU 4
  60. YCoord        EQU 0
  61.  
  62. E1Src         EQU 48
  63. C1Src         EQU 40
  64. C2Src         EQU 32
  65. E2Src         EQU 24
  66.  
  67. E1Dest        EQU 48
  68. P1Dest        EQU 40
  69. P4Dest        EQU 32
  70. P6Dest        EQU 24
  71. P5Dest        EQU 16
  72. P2Dest        EQU 8
  73. E2Dest        EQU 0
  74.  
  75. E1Draw        EQU 24
  76. C1Draw        EQU 16
  77. C2Draw        EQU 8
  78. E2Draw        EQU 0
  79.  
  80. AlignData     EQU 6
  81.  
  82. TIMERVECT     equ 08h
  83.  
  84. PICCMD        equ 20h
  85. NONSPECEOI    equ 20h
  86. TIMERMODE     equ 34h
  87. TIMERCONTROL  equ 43h
  88. TIMER0        equ 40h
  89.  
  90. LATCHCOUNT    equ 00h
  91. INTINADVANCE  equ 100
  92.  
  93. DOSGETVECT    equ 3500h
  94. DOSSETVECT    equ 2500h
  95.  
  96. IFDEF _DPMI_
  97.  
  98. ; DPMI interrupt vector
  99.  
  100. DPMI            EQU     31H
  101.  
  102. ; DPMI function codes
  103.  
  104. dpmiGetDesc       EQU   0000H           ;Allocate descriptors
  105. dpmiFreeDesc    EQU     0001H           ;Free descriptor
  106. dpmiSegToDesc   EQU     0002H           ;Map segment to descriptor
  107. dpmiGetSelInc   EQU     0003H           ;Get selector increment value
  108. dpmiGetSegBase  EQU     0006H   ;Get segment base address
  109. dpmiSetSegBase  EQU     0007H   ;Set segment base address
  110. dpmiSetSegSize  EQU     0008H   ;Set segment size
  111. dpmiGetRealInt  EQU     0200H   ;Get real mode int handler
  112. dpmiSetRealInt  EQU     0201H   ;Set real mode int handler
  113. dpmiGetExcept   EQU     0202H           ;Get exception handler
  114. dpmiSetExcept   EQU     0203H           ;Set exception handler
  115. dpmiGetInt        EQU   0204H           ;Get interrupt handler
  116. dpmiSetInt        EQU   0205H           ;Set interrupt handler
  117. dpmiGetRMCB       EQU   0303H           ;Get real mode call-back
  118. dpmiGetVersion  EQU     0400H           ;Get version information
  119.  
  120. ENDIF
  121.  
  122.  
  123.  
  124. ; ***************************************************************************
  125. ; **                               Macros                                  **
  126. ; ***************************************************************************
  127.  
  128. WaitVsyncStart  MACRO
  129.     LOCAL WaitNotVsync,WaitVsync
  130.  
  131.     mov     dx,INPUTSTATUS0
  132.  
  133. WaitNotVsync:
  134.     in      al,dx
  135.     test    al,08h
  136.     jnz     WaitNotVsync
  137.  
  138. WaitVsync:
  139.     in      al,dx
  140.     test    al,08h
  141.     jz      WaitVsync
  142.  
  143.     ENDM
  144.  
  145. WaitVsyncEnd  MACRO
  146.     LOCAL WaitNotVsync,WaitVsync
  147.  
  148.     mov     dx,INPUTSTATUS0
  149.  
  150. WaitVsync2:
  151.     in      al,dx
  152.     test    al,08h
  153.     jz      WaitVsync2
  154.  
  155. WaitNotVsync2:
  156.     in      al,dx
  157.     test    al,08h
  158.     jnz     WaitNotVsync2
  159.  
  160.     ENDM
  161.  
  162. WordOut MACRO
  163.     IFDEF nw
  164.         out  dx,al
  165.         inc  dx
  166.         xchg al,ah
  167.         out  dx,al
  168.         xchg al,ah
  169.         dec  dx
  170.     ELSE
  171.         out  dx,al
  172.     ENDIF
  173.  
  174.     ENDM
  175.  
  176. LoadV0 macro loc, field
  177.         mov ax, word ptr [bp + loc + field + LowWord]
  178.         mov di, word ptr [bp + loc + field + HighWord]
  179.         endm
  180.  
  181. LoadV1 macro loc, field
  182.         mov bx, word ptr [bp + loc + field + LowWord]
  183.         mov si, word ptr [bp + loc + field + HighWord]
  184.         endm
  185.  
  186. LoadV2 macro loc, field
  187.         mov dx, word ptr [bp + loc + field + LowWord]
  188.         mov cx, word ptr [bp + loc + field + HighWord]
  189.         endm
  190.  
  191. ; to store data --
  192.  
  193. StoreV0 macro loc, field
  194.         mov word ptr [bp + loc + field + LowWord], ax
  195.         mov word ptr [bp + loc + field + HighWord], di
  196.         endm
  197.  
  198. StoreV1 macro loc, field
  199.         mov word ptr [bp + loc + field + LowWord], bx
  200.         mov word ptr [bp + loc + field + HighWord], si
  201.         endm
  202.  
  203.  
  204. ; to take the average of two registers (result is in first register) --
  205.  
  206. AverageV0nV1 macro
  207.     add ax, bx
  208.     adc di, si
  209.     shr di, 1
  210.     rcr ax, 1
  211.     endm
  212.  
  213. AverageV0nV2 macro
  214.     add ax, dx
  215.     adc di, cx
  216.     shr di, 1
  217.     rcr ax, 1
  218.     endm
  219.  
  220. AverageV1nV2 macro
  221.     add bx, dx
  222.     adc si, cx
  223.     shr si, 1
  224.     rcr bx, 1
  225.     endm
  226.  
  227.  
  228. ; to take the average of a register and data --
  229.  
  230. AverageV1nData macro loc, field
  231.         add bx, word ptr [bp + loc + field + LowWord]
  232.         adc si, word ptr [bp + loc + field + HighWord]
  233.         shr si, 1
  234.         rcr bx, 1
  235.         endm
  236.  
  237. AverageV2nData macro loc, field
  238.         add dx, word ptr [bp + loc + field + LowWord]
  239.         adc cx, word ptr [bp + loc + field + HighWord]
  240.         shr cx, 1
  241.         rcr dx, 1
  242.         endm
  243.  
  244.  
  245. ; to turn a 32-bit fixed point data into a regular integer --
  246.  
  247. Extract macro reg, source, field
  248.     mov reg, word ptr [bp + source + field + HighWord]
  249.     shr reg, 3
  250.     adc reg, 0          ; round
  251.     endm
  252.  
  253.  
  254. ; to turn an integer argument into a 32-bit fixed point number
  255. ; and store it as local data --
  256.  
  257. Convert macro source, dest, field
  258.     mov ax, source
  259.     add ax, 1024
  260.     shl ax, 3
  261.     push ax
  262.     push 0
  263.     endm
  264.  
  265.  
  266. ; ***************************************************************************
  267. ; **                              Globals                                  **
  268. ; ***************************************************************************
  269.  
  270.     .DATA
  271.  
  272.     GLOBAL InGraphics              :BYTE
  273.     GLOBAL CurrXMode               :WORD
  274.     GLOBAL ScrnPhysicalByteWidth   :WORD
  275.     GLOBAL ScrnPhysicalPixelWidth  :WORD
  276.     GLOBAL ScrnPhysicalHeight      :WORD
  277.     GLOBAL ErrorValue              :BYTE
  278.     GLOBAL ModeTable               :BYTE
  279.     GLOBAL ScreenSeg               :WORD
  280.     GLOBAL Seg0000                 :WORD
  281. IFDEF _DPMI_
  282.     GLOBAL __A000H                 :ABS
  283.     GLOBAL __C000H                 :ABS
  284.     GLOBAL __AHIncr                :ABS
  285.     GLOBAL __0000H                 :ABS
  286. ENDIF
  287.  
  288.     GLOBAL SplitScrnOffs           :WORD
  289.     GLOBAL SplitScrnScanLine       :WORD
  290.     GLOBAL SplitScrnVisibleHeight  :WORD
  291.     GLOBAL SplitScrnActive         :BYTE
  292.     GLOBAL Page0Offs               :WORD
  293.     GLOBAL Page1Offs               :WORD
  294.     GLOBAL Page2Offs               :WORD
  295.     GLOBAL ScrnLogicalByteWidth    :WORD
  296.     GLOBAL ScrnLogicalPixelWidth   :WORD
  297.     GLOBAL ScrnLogicalHeight       :WORD
  298.  
  299.     GLOBAL MaxScrollX              :WORD
  300.     GLOBAL MaxScrollY              :WORD
  301.     GLOBAL DoubleBufferActive      :WORD
  302.     GLOBAL TripleBufferActive      :WORD
  303.     GLOBAL VisiblePageIdx          :WORD
  304.     GLOBAL VisiblePageOffs         :WORD
  305.     GLOBAL HiddenPageOffs          :WORD
  306.     GLOBAL WaitingPageOffs         :WORD
  307.     GLOBAL NonVisualOffs           :WORD
  308.     GLOBAL TopClip                 :WORD
  309.     GLOBAL BottomClip              :WORD
  310.     GLOBAL LeftClip                :WORD
  311.     GLOBAL RightClip               :WORD
  312.  
  313.     GLOBAL PhysicalStartByteX      :WORD
  314.     GLOBAL PhysicalStartPixelX     :WORD
  315.     GLOBAL PhysicalStartY          :WORD
  316.  
  317.     GLOBAL VsyncHandlerActive      :WORD
  318.     GLOBAL MouseRefreshFlag        :WORD
  319.     GLOBAL StartAddressFlag        :WORD
  320.     GLOBAL WaitingStartLow         :WORD
  321.     GLOBAL WaitingStartHigh        :WORD
  322.     GLOBAL WaitingPelPan           :WORD
  323.     GLOBAL VsyncPaletteStart       :WORD
  324.     GLOBAL VsyncPaletteCount       :WORD
  325.     GLOBAL VsyncPaletteBuffer      :BYTE
  326.  
  327.     GLOBAL xcircle                 :PROC
  328.     GLOBAL xfilledcircle           :PROC
  329.  
  330.     GLOBAL LeftBound               :WORD
  331.     GLOBAL RightBound              :WORD
  332.     GLOBAL TopBound                :WORD
  333.     GLOBAL BottomBound             :WORD
  334.  
  335.     GLOBAL MouseButtonCount        :WORD
  336.     GLOBAL MouseVersion            :WORD
  337.     GLOBAL MouseType               :BYTE
  338.     GLOBAL MouseIRQ                :BYTE
  339.  
  340.  
  341.     GLOBAL xgraphicscard           :PROC
  342.     GLOBAL xprocessor              :PROC
  343.     GLOBAL xcoprocessor            :PROC
  344.     GLOBAL xmousedriver            :PROC
  345.  
  346.     GLOBAL xfloodfill              :PROC
  347.     GLOBAL xboundaryfill           :PROC
  348.  
  349.     GLOBAL xbezier                 :PROC
  350.  
  351.     GLOBAL xline                   :PROC
  352.  
  353.     GLOBAL xsetmode                :PROC
  354.     GLOBAL xpageflip               :PROC
  355.     GLOBAL xsetstartaddr           :PROC
  356.     GLOBAL xsetsplitscreen         :PROC
  357.     GLOBAL xtextmode               :PROC
  358.     GLOBAL xsetmode                :PROC
  359.     GLOBAL xselectdefaultplane     :PROC
  360.     GLOBAL xhidesplitscreen        :PROC
  361.     GLOBAL xshowsplitscreen        :PROC
  362.     GLOBAL xadjustsplitscreen      :PROC
  363.     GLOBAL xsetdoublebuffer        :PROC
  364.     GLOBAL xsettriplebuffer        :PROC
  365.     GLOBAL xsetcliprect            :PROC
  366.     GLOBAL xwaitvsync              :PROC
  367.  
  368.     GLOBAL xputcursor              :PROC
  369.     GLOBAL xmouseinit              :PROC
  370.     GLOBAL xdefinemousecursor      :PROC
  371.     GLOBAL xmousewindow            :PROC
  372.     GLOBAL xshowmouse              :PROC
  373.     GLOBAL xhidemouse              :PROC
  374.     GLOBAL xmouseremove            :PROC
  375.     GLOBAL xpositionmouse          :PROC
  376.     GLOBAL xupdatemouse            :PROC
  377.  
  378.  
  379.     GLOBAL xgetpalstruc            :PROC
  380.     GLOBAL xgetpalraw              :PROC
  381.     GLOBAL xputpalstruc            :PROC
  382.     GLOBAL xputpalraw              :PROC
  383.     GLOBAL xsetrgb                 :PROC
  384.     GLOBAL xrotpalstruc            :PROC
  385.     GLOBAL xrotpalraw              :PROC
  386.     GLOBAL xputcontrastpalstruc    :PROC
  387.     GLOBAL xtransposepalstruc      :PROC
  388.     GLOBAL xcpcontrastpalstruc     :PROC
  389.  
  390.     GLOBAL xputpix                 :PROC
  391.     GLOBAL xgetpix                 :PROC
  392.  
  393.     GLOBAL xtriangle               :PROC
  394.     GLOBAL xpolygon                :PROC
  395.  
  396.     GLOBAL xrectfill               :PROC
  397.     GLOBAL xrectfillclipped        :PROC
  398.     GLOBAL xrectpattern            :PROC
  399.     GLOBAL xrectpatternclipped     :PROC
  400.     GLOBAL xcpvidpage              :PROC
  401.     GLOBAL xcpvidrect              :PROC
  402.     GLOBAL xshiftrect              :PROC
  403.  
  404.     GLOBAL xtextinit               :PROC
  405.     GLOBAL xsetfont                :PROC
  406.     GLOBAL xcharput                :PROC
  407.     GLOBAL xregisteruserfont       :PROC
  408.     GLOBAL xgetcharwidth           :PROC
  409.  
  410.     GLOBAL CharHeight              :BYTE
  411.     GLOBAL CharWidth               :BYTE
  412.     GLOBAL FontPtr                 :WORD:2
  413.     GLOBAL FirstChar               :BYTE
  414.     GLOBAL UserFontPtr             :WORD:2
  415.     GLOBAL UserChHeight            :BYTE
  416.     GLOBAL UserChWidth             :BYTE
  417.     GLOBAL UserFirstCh             :BYTE
  418.  
  419.     GLOBAL xstorevbmimage          :PROC
  420.     GLOBAL xputmaskedvbm           :PROC
  421.     GLOBAL xputmaskedvbmclipx      :PROC
  422.     GLOBAL xputmaskedvbmclipy      :PROC
  423.     GLOBAL xputmaskedvbmclipxy     :PROC
  424.  
  425.     GLOBAL xstorevbmimage          :PROC
  426.     GLOBAL xinstallvsynchandler    :PROC
  427.     GLOBAL xremovevsynchandler     :PROC
  428.     GLOBAL xsetuservsynchandler    :PROC
  429.  
  430.     GLOBAL PelPanMask              :BYTE
  431.  
  432.     GLOBAL DoubleScanFlag          :BYTE
  433.  
  434.     GLOBAL ColumnMask              :BYTE
  435.     GLOBAL LeftMaskTable           :BYTE
  436.     GLOBAL RightMaskTable          :BYTE
  437.     GLOBAL PelPanMask              :BYTE
  438.     GLOBAL LeftClipPlaneMask       :BYTE
  439.     GLOBAL RightClipPlaneMask      :BYTE
  440.     GLOBAL MirrorTable             :BYTE
  441.     GLOBAL LeftDelay               :BYTE
  442.     GLOBAL RightDelay              :BYTE
  443.     GLOBAL F8x8Ptr                 :WORD:2
  444.     GLOBAL F8x14Ptr                :WORD:2
  445.     GLOBAL MirrorTableOffs         :WORD
  446.     GLOBAL FontDriverActive        :BYTE
  447.  
  448.     GLOBAL PS2Cards                :BYTE
  449.  
  450.     GLOBAL MouseMask               :BYTE
  451.     GLOBAL InHandler               :BYTE
  452.     GLOBAL BGSaveOffs              :WORD
  453.     GLOBAL MouseInstalled          :WORD
  454.     GLOBAL MouseHidden             :WORD
  455.     GLOBAL MouseButtonStatus       :WORD
  456.     GLOBAL MouseX                  :WORD
  457.     GLOBAL MouseY                  :WORD
  458.     GLOBAL MouseFrozen             :BYTE
  459.     GLOBAL MouseColor              :BYTE
  460.     GLOBAL InitMouseDef            :BYTE
  461.  
  462.     GLOBAL WhenToDraw              :BYTE
  463.  
  464.     GLOBAL SelectorInc             :WORD
  465.     
  466.