]> 4ch.mooo.com Git - 16.git/blobdiff - 16/xw__/modex.def
trying to translate that lib into open watcom...
[16.git] / 16 / xw__ / modex.def
diff --git a/16/xw__/modex.def b/16/xw__/modex.def
new file mode 100755 (executable)
index 0000000..7977a4a
--- /dev/null
@@ -0,0 +1,163 @@
+;------------------------------------------------------------\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