1 ;------------------------------------------------------------
\r
3 ; MODEX.DEF - Include file
\r
4 ; Copyright (c) 1993-1994 by Alessandro Scotti
\r
10 TRUE EQU 1 ; Boolean constants
\r
13 USE286 = FALSE ; TRUE enables 80286 instructions
\r
14 USE386 = FALSE ; TRUE enables 80386 (and 80286) instructions
\r
25 MXVERSION EQU 0128h ; Library version (1.40)
\r
27 ;------------------------------------------------------------
\r
31 MISC EQU 3C2h ; Miscellaneous output
\r
32 TS EQU 3C4h ; Timing Sequencer index register
\r
33 GDC EQU 3CEh ; Graphics Data Controller index register
\r
34 CRTC EQU 3D4h ; CRTC index register
\r
35 STATUS EQU 3DAh ; Input Status register one
\r
37 ;------------------------------------------------------------
\r
42 OP_MOVE EQU 0 ; Same as OP_SET
\r
47 OP_ADD EQU 5 ; Must be last op
\r
49 ;------------------------------------------------------------
\r
51 ; Polygon fill functions
\r
53 POLYSCANBUFSIZE EQU 4*1024
\r
55 ;------------------------------------------------------------
\r
56 ; Macro to push registers, variables or flags onto the stack
\r
57 ; Usage: .push "loc16"[,"loc16"...]
\r
58 ; where "loc16" is a 16-bit register, a word-sized variable or the
\r
60 ; Exmpl: .push ax, flags, var1
\r
61 ; .pop ax, flags, var1
\r
63 .push MACRO r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10
\r
65 .ERROR <.PUSH has more than 10 arguments>
\r
67 IRP $reg, <r0, r1, r2, r3, r4, r5, r6, r7, r8, r9>
\r
68 IFB <$reg> ;; Is argument blank?
\r
70 ELSEIFIDNI <$reg>, <FLAGS> ;; Is argument the keyword "FLAGS"?
\r
71 pushf ;; Yes, push flags
\r
73 push $reg ;; Push argument
\r
78 ;------------------------------------------------------------
\r
79 ; Macro to pop registers, variables or flags from the stack
\r
80 ; Usage: .pop "loc16"[,"loc16"...]
\r
81 ; where "loc16" is a 16-bit register, a word-sized variable or the
\r
83 ; Exmpl: .push ax, flags, var1
\r
84 ; .pop ax, flags, var1
\r
86 .pop MACRO r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10
\r
88 .ERROR <.POP has more than 10 arguments>
\r
90 IRP $reg, <r9, r8, r7, r6, r5, r4, r3, r2, r1, r0>
\r
91 IFNB <$reg> ;; Is argument non-blank?
\r
92 IFIDNI <$reg>, <FLAGS> ;; Yes, is it the keyword "FLAGS"?
\r
93 popf ;; Yes, pop flags
\r
95 pop $reg ;; Pop argument
\r
101 ;------------------------------------------------------------
\r
103 .enter MACRO localsize
\r
113 ;------------------------------------------------------------
\r
115 .leave MACRO argsize
\r
129 ;------------------------------------------------------------
\r
131 .shr MACRO arg, count
\r
143 ;------------------------------------------------------------
\r
145 .shl MACRO arg, count
\r
157 ;------------------------------------------------------------
\r
159 ;.chk386 MACRO name, jump
\r
160 ; IF USE386 EQ FALSE
\r
161 ; .OUT "Warning: ", <name>, " needs a 386 or better to run!"
\r