]> 4ch.mooo.com Git - 16.git/blobdiff - src/lib/modex/demos/c/modex.asm
16_ca needs huge amounts of work and I should remember what needs to be done soon...
[16.git] / src / lib / modex / demos / c / modex.asm
index f7d85801755f0a682079b6e11f583e5d019f4bb3..f2b1b5124db8b7d4f6132f68af8e718700e30f6d 100755 (executable)
@@ -444,7 +444,7 @@ MODE_360x400:           ; Data for 360 by 400 Pixels
 ;        MaxYpos = The Desired Virtual Screen Height\r
 ;        Pages   = The Desired # of Video Pages\r
 ;\r
-; EXIT:  AX = Success Flag:   0 = Failure / -1= Success\r
+; EXIT:  AX = Success Flag:   >0 = Failure / 0 = Success\r
 ;\r
 \r
 SVM_STACK   STRUC\r
@@ -476,7 +476,7 @@ SET_VGA_MODEX   PROC    FAR
 \r
     MOV     BX, [BP].SVM_Mode   ; Get Requested Mode #\r
     CMP     BX, NUM_MODES       ; Is it 0..7?\r
-    JAE     @SVM_BadModeSetup   ; If Not, Error out\r
+    JAE     @SVM_BadModeSetup1   ; If Not, Error out\r
 \r
     SHL     BX, 1                   ; Scale BX\r
     MOV     SI, w MODE_TABLE[BX]    ; CS:SI -> Mode Info\r
@@ -488,8 +488,8 @@ SET_VGA_MODEX   PROC    FAR
     ;CLR       CH                  ; Set Hi Word = 0!\r
     mov        ch,0                  ; Set Hi Word = 0!\r
     CMP     CL, CS:[SI].M_Pages ; Check # Pages for mode\r
-    JA      @SVM_BadModeSetup   ; Report Error if too Many Pages\r
-    JCXZ    @SVM_BadModeSetup   ; Report Error if 0 Pages\r
+    JA      @SVM_BadModeSetup2   ; Report Error if too Many Pages\r
+    JCXZ    @SVM_BadModeSetup3   ; Report Error if 0 Pages\r
 \r
     ; Check Validity of X Size\r
 \r
@@ -497,17 +497,17 @@ SET_VGA_MODEX   PROC    FAR
 \r
     MOV     AX, [BP].SVM_XSize  ; Get Logical Screen Width\r
     CMP     AX, CS:[SI].M_XSize ; Check against Displayed X\r
-    JB      @SVM_BadModeSetup   ; Report Error if too small\r
+    JB      @SVM_BadModeSetup4   ; Report Error if too small\r
     CMP     AX, CS:[SI].M_XMax  ; Check against Max X\r
-    JA      @SVM_BadModeSetup   ; Report Error if too big\r
+    JA      @SVM_BadModeSetup5   ; Report Error if too big\r
 \r
     ; Check Validity of Y Size\r
 \r
     MOV     BX, [BP].SVM_YSize  ; Get Logical Screen Height\r
     CMP     BX, CS:[SI].M_YSize ; Check against Displayed Y\r
-    JB      @SVM_BadModeSetup   ; Report Error if too small\r
+    JB      @SVM_BadModeSetup6   ; Report Error if too small\r
     CMP     BX, CS:[SI].M_YMax  ; Check against Max Y\r
-    JA      @SVM_BadModeSetup   ; Report Error if too big\r
+    JA      @SVM_BadModeSetup7   ; Report Error if too big\r
 \r
     ; Enough memory to Fit it all?\r
 \r
@@ -521,9 +521,31 @@ SET_VGA_MODEX   PROC    FAR
     OR      DX, AX              ; (DX = 1, AX = 0000)\r
     JZ      @SVM_Continue       ; if so, it's valid...\r
 \r
-@SVM_BadModeSetup:\r
+       jmp      @SVM_Continue;0000\r
 \r
-    mov ax,0                  ; Return Value = False\r
+@SVM_BadModeSetup:\r
+    mov ax,8                  ; Return Value = False\r
+    JMP     @SVM_Exit           ; Normal Exit\r
+@SVM_BadModeSetup1:\r
+    mov ax,1                  ; Return Value = False\r
+    JMP     @SVM_Exit           ; Normal Exit\r
+@SVM_BadModeSetup2:\r
+    mov ax,2                  ; Return Value = False\r
+    JMP     @SVM_Exit           ; Normal Exit\r
+@SVM_BadModeSetup3:\r
+    mov ax,3                  ; Return Value = False\r
+    JMP     @SVM_Exit           ; Normal Exit\r
+@SVM_BadModeSetup4:\r
+    mov ax,4                  ; Return Value = False\r
+    JMP     @SVM_Exit           ; Normal Exit\r
+@SVM_BadModeSetup5:\r
+    mov ax,5                  ; Return Value = False\r
+    JMP     @SVM_Exit           ; Normal Exit\r
+@SVM_BadModeSetup6:\r
+    mov ax,6                  ; Return Value = False\r
+    JMP     @SVM_Exit           ; Normal Exit\r
+@SVM_BadModeSetup7:\r
+    mov ax,7                  ; Return Value = False\r
     JMP     @SVM_Exit           ; Normal Exit\r
 \r
 @SVM_Continue:\r