+++ /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