+++ /dev/null
-;------------------------------------------------------------\r
-;\r
-; MODEX.DEF - Include file\r
-; Copyright (c) 1993-1994 by Alessandro Scotti\r
-;\r
-;JUMPS\r
-;LOCALS\r
-\r
-TRUE EQU 1 ; Boolean constants\r
-FALSE EQU 0\r
-\r
-USE286 = FALSE ; TRUE enables 80286 instructions\r
-USE386 = FALSE ; TRUE enables 80386 (and 80286) instructions\r
-\r
-IF USE286 EQ TRUE\r
- P286\r
-ENDIF\r
-\r
-IF USE386 EQ TRUE\r
- P386\r
- USE286 = TRUE\r
-ENDIF\r
-\r
-MXVERSION EQU 0128h ; Library version (1.40)\r
-\r
-;------------------------------------------------------------\r
-;\r
-; VGA definitions\r
-;\r
-MISC EQU 3C2h ; Miscellaneous output\r
-TS EQU 3C4h ; Timing Sequencer index register\r
-GDC EQU 3CEh ; Graphics Data Controller index register\r
-CRTC EQU 3D4h ; CRTC index register\r
-STATUS EQU 3DAh ; Input Status register one\r
-\r
-;------------------------------------------------------------\r
-;\r
-; Raster operators\r
-;\r
-OP_SET EQU 0\r
-OP_MOVE EQU 0 ; Same as OP_SET\r
-OP_AND EQU 1\r
-OP_OR EQU 2\r
-OP_XOR EQU 3\r
-OP_TRANS EQU 4\r
-OP_ADD EQU 5 ; Must be last op\r
-\r
-;------------------------------------------------------------\r
-;\r
-; Polygon fill functions\r
-;\r
-POLYSCANBUFSIZE EQU 4*1024\r
-\r
-;------------------------------------------------------------\r
-; Macro to push registers, variables or flags onto the stack\r
-; Usage: .push "loc16"[,"loc16"...]\r
-; where "loc16" is a 16-bit register, a word-sized variable or the\r
-; keyword "FLAGS".\r
-; Exmpl: .push ax, flags, var1\r
-; .pop ax, flags, var1\r
-;\r
-.push MACRO r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10\r
- IFNB <r10>\r
- .ERROR <.PUSH has more than 10 arguments>\r
- ENDIF\r
- IRP $reg, <r0, r1, r2, r3, r4, r5, r6, r7, r8, r9>\r
- IFB <$reg> ;; Is argument blank?\r
- EXITM ;; Yes, exit\r
- ELSEIFIDNI <$reg>, <FLAGS> ;; Is argument the keyword "FLAGS"?\r
- pushf ;; Yes, push flags\r
- ELSE\r
- push $reg ;; Push argument\r
- ENDIF\r
- ENDM\r
-ENDM\r
-\r
-;------------------------------------------------------------\r
-; Macro to pop registers, variables or flags from the stack\r
-; Usage: .pop "loc16"[,"loc16"...]\r
-; where "loc16" is a 16-bit register, a word-sized variable or the\r
-; keyword "FLAGS".\r
-; Exmpl: .push ax, flags, var1\r
-; .pop ax, flags, var1\r
-;\r
-.pop MACRO r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10\r
- IFNB <r10>\r
- .ERROR <.POP has more than 10 arguments>\r
- ENDIF\r
- IRP $reg, <r9, r8, r7, r6, r5, r4, r3, r2, r1, r0>\r
- IFNB <$reg> ;; Is argument non-blank?\r
- IFIDNI <$reg>, <FLAGS> ;; Yes, is it the keyword "FLAGS"?\r
- popf ;; Yes, pop flags\r
- ELSE\r
- pop $reg ;; Pop argument\r
- ENDIF\r
- ENDIF\r
- ENDM\r
-ENDM\r
-\r
-;------------------------------------------------------------\r
-;\r
-.enter MACRO localsize\r
- IF USE286 EQ TRUE\r
- enter localsize, 0\r
- ELSE\r
- push bp\r
- mov bp, sp\r
- sub sp, localsize\r
- ENDIF\r
-ENDM\r
-\r
-;------------------------------------------------------------\r
-;\r
-;.leave MACRO argsize\r
-; IF USE286 EQ TRUE\r
-; leave\r
-; ELSE\r
-; mov sp, bp\r
-; pop bp\r
-; ENDIF\r
-; IFNB <argspace>\r
-; ret argsize\r
-; ELSE\r
-; ret\r
-; ENDIF\r
-;ENDM\r
-\r
-;------------------------------------------------------------\r
-;\r
-;.shr MACRO arg, count\r
-; IF USE286 EQ TRUE\r
-; shr arg, count\r
-; ELSE\r
-; $temp = count\r
-; WHILE $temp GT 0\r
-; shr arg, 1\r
-; $temp = $temp-1\r
-; ENDM\r
-; ENDIF\r
-;ENDM\r
-\r
-;------------------------------------------------------------\r
-;\r
-;.shl MACRO arg, count\r
-; IF USE286 EQ TRUE\r
-; shl arg, count\r
-; ELSE\r
-; $temp = count\r
-; WHILE $temp GT 0\r
-; shl arg, 1\r
-; $temp = $temp-1\r
-; ENDM\r
-; ENDIF\r
-;ENDM\r
-\r
-;------------------------------------------------------------\r
-;\r
-;.chk386 MACRO name, jump\r
-; IF USE386 EQ FALSE\r
-; .OUT "Warning: ", <name>, " needs a 386 or better to run!"\r
-; jmp @@jump\r
-; ENDIF\r
-;ENDM\r