From 7e2b208062c9f7ac8b98eb55c6956c74fa3b6588 Mon Sep 17 00:00:00 2001 From: sparky4 Date: Thu, 19 Nov 2015 16:44:14 -0600 Subject: [PATCH] IT WORKS!!!! cannot multipage yet! --- src/lib/modex/demos/c/modex.asm | 39 ++++++++++++++++++++++--------- src/lib/modex/demos/c/x-demo.c | 16 ++++++++----- src/lib/modex/demos/c/x-demo.exe | Bin 40674 -> 45192 bytes 3 files changed, 38 insertions(+), 17 deletions(-) diff --git a/src/lib/modex/demos/c/modex.asm b/src/lib/modex/demos/c/modex.asm index f7d85801..2cd7c840 100755 --- a/src/lib/modex/demos/c/modex.asm +++ b/src/lib/modex/demos/c/modex.asm @@ -444,7 +444,7 @@ MODE_360x400: ; Data for 360 by 400 Pixels ; MaxYpos = The Desired Virtual Screen Height ; Pages = The Desired # of Video Pages ; -; EXIT: AX = Success Flag: 0 = Failure / -1= Success +; EXIT: AX = Success Flag: >0 = Failure / 0 = Success ; SVM_STACK STRUC @@ -476,7 +476,7 @@ SET_VGA_MODEX PROC FAR MOV BX, [BP].SVM_Mode ; Get Requested Mode # CMP BX, NUM_MODES ; Is it 0..7? - JAE @SVM_BadModeSetup ; If Not, Error out + JAE @SVM_BadModeSetup1 ; If Not, Error out SHL BX, 1 ; Scale BX MOV SI, w MODE_TABLE[BX] ; CS:SI -> Mode Info @@ -488,8 +488,8 @@ SET_VGA_MODEX PROC FAR ;CLR CH ; Set Hi Word = 0! mov ch,0 ; Set Hi Word = 0! CMP CL, CS:[SI].M_Pages ; Check # Pages for mode - JA @SVM_BadModeSetup ; Report Error if too Many Pages - JCXZ @SVM_BadModeSetup ; Report Error if 0 Pages + JA @SVM_BadModeSetup2 ; Report Error if too Many Pages + JCXZ @SVM_BadModeSetup3 ; Report Error if 0 Pages ; Check Validity of X Size @@ -497,17 +497,17 @@ SET_VGA_MODEX PROC FAR MOV AX, [BP].SVM_XSize ; Get Logical Screen Width CMP AX, CS:[SI].M_XSize ; Check against Displayed X - JB @SVM_BadModeSetup ; Report Error if too small + JB @SVM_BadModeSetup4 ; Report Error if too small CMP AX, CS:[SI].M_XMax ; Check against Max X - JA @SVM_BadModeSetup ; Report Error if too big + JA @SVM_BadModeSetup5 ; Report Error if too big ; Check Validity of Y Size MOV BX, [BP].SVM_YSize ; Get Logical Screen Height CMP BX, CS:[SI].M_YSize ; Check against Displayed Y - JB @SVM_BadModeSetup ; Report Error if too small + JB @SVM_BadModeSetup6 ; Report Error if too small CMP BX, CS:[SI].M_YMax ; Check against Max Y - JA @SVM_BadModeSetup ; Report Error if too big + JA @SVM_BadModeSetup7 ; Report Error if too big ; Enough memory to Fit it all? @@ -521,9 +521,26 @@ SET_VGA_MODEX PROC FAR OR DX, AX ; (DX = 1, AX = 0000) JZ @SVM_Continue ; if so, it's valid... -@SVM_BadModeSetup: - - mov ax,0 ; Return Value = False +@SVM_BadModeSetup1: + mov ax,1 ; Return Value = False + JMP @SVM_Exit ; Normal Exit +@SVM_BadModeSetup2: + mov ax,2 ; Return Value = False + JMP @SVM_Exit ; Normal Exit +@SVM_BadModeSetup3: + mov ax,3 ; Return Value = False + JMP @SVM_Exit ; Normal Exit +@SVM_BadModeSetup4: + mov ax,4 ; Return Value = False + JMP @SVM_Exit ; Normal Exit +@SVM_BadModeSetup5: + mov ax,5 ; Return Value = False + JMP @SVM_Exit ; Normal Exit +@SVM_BadModeSetup6: + mov ax,6 ; Return Value = False + JMP @SVM_Exit ; Normal Exit +@SVM_BadModeSetup7: + mov ax,7 ; Return Value = False JMP @SVM_Exit ; Normal Exit @SVM_Continue: diff --git a/src/lib/modex/demos/c/x-demo.c b/src/lib/modex/demos/c/x-demo.c index 249cbbd7..95d3a1e8 100755 --- a/src/lib/modex/demos/c/x-demo.c +++ b/src/lib/modex/demos/c/x-demo.c @@ -503,12 +503,12 @@ int r, d; void page_demo () { -char *Error1 = "Failure during SET_VGA_MODEX (4, 320, 240, 2) call"; +char *Error1 = "Failure during SET_VGA_MODEX (0, 320, 200, 2) call"; int Last_Objects[2], Visible_Objects; -int Screen_X = 352; -int Screen_Y = 544; +int Screen_X = 384; +int Screen_Y = 272; int x, y, z; int c, dc; @@ -524,12 +524,16 @@ int Set_Color, Prev_Color, S_Dir, P_Dir; int Demo_Running = True; int redo, code; - if (set_vga_modex(Mode_320x240, Screen_X, Screen_Y, 2) == 0) +int pee; +pee = set_vga_modex(Mode_320x240, Screen_X, Screen_Y, 1); + if ( pee > 0) { - set_modex (Mode_320x240); + set_video_mode (3); + dos_print (Error1); + fprintf(stdout, "return value is %d\n", pee); //error_out (Error1); + exit (EXIT_SUCCESS); } - //set_vga_modex(Mode_320x240, Screen_X, Screen_Y, 2); set_active_page (0); clear_vga_screen (c_BLACK); diff --git a/src/lib/modex/demos/c/x-demo.exe b/src/lib/modex/demos/c/x-demo.exe index 093be3b39120adb39dcc3433cf98fdcb98b7d723..18f7f39db0e79befd1bafd3f4c8172b243a8ec34 100755 GIT binary patch delta 13688 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 delta 9625 zcma)i3s_TEw(ve@C*d6)LgZz5h!I37AoxN8Ry-V9r64u9>$h^U z*L$zM*4lfYQ1uhr^(|{!u(S&mpl4A8+Kime^Ipgkp?BgDibk$~79B#HaJur)M1&>+ zJ{O<>KnJ)<09EjPd;&sW0K7K|q1ymqi3q(3w7&wp4BtPPjL>%g-ve9$xDW8^6oghL zBNKWv8KE612)&zy(By1{UI7^MI6}_@90uqFZ~(kG7ai`UB8P06vB9Z`1F&2<_t$`u0hL8UQW>+fI_90rg8q8A{P z43GuzEWlQPj{pt={5OCuAECUb5K1dRXd}R0fKve10fqp43K5C~m<~_~@FKtlfVTj4 z12h3>7D5CbhmX$y8UVfnxC$@?;9Uep0A>K>0gV1vVD(07>9dKJ#S7JX>2Z?9mXGCi z8fz>nfbowLQW}=F7Fd@9&scJrEo6d86kfq>ASOIEYFUKES=Qz(J5vl`P)konSm4_! z_b8Kmg$p&?qbi%d3@Hr-1}jDdR)0_{eIHID6*E(-#z0ik9x}k z>fN?2AA^fp06$a!E~}-R<6wq|Mu|up$$zS1*!|Js`TRZ9%)UIB#$g(b<^ipjMQG10mTS$V}xS*R+79~ak*GIz# ztQ}Egu~$-|r>uY2oL(9mBODP7Hfj#cUJ#Cp2Ai0F0R(=F7Mjc*)!c(Bk6gz$oa3L? z2wBnED5Xl)ONY`@^1auTDb+BokxA&K9Uu$7(>YwA+HJx~(Re}3w}IZ*NQ(Ek;4W>p z!1ajS^&N?g?E^e$YSWTc-lshHg`-n6N^0rXC@^X6X!byk{ke`h zC>lCTBRS_i)Bp8HbPy8Z6T|$GWcq}~%y@*72Rf*Omm$C|=cbc#p9xGLdCw;-qF?(k z0GvJ1DYV$5oU$2dC298wV>sgQ$p~KyTqDc(CoNqhSU-`wMt1p*CwV@8G1^C19-}Na z!O#KI5c4mC)8oj0_)bXgANSCl$ib?Q(0>@AaP~;*h@aEyNuv)g_&zh28~14R7mahJ zj%!UN5ga-x=1X8H!>wtk%7b&fmFw6ntIO~3QBCn=(u9pr6xt?p)8mj@=p93*iW2+Yc^enj< ztO>EmxFEn8frmcTsK67%kN9h>n~Bk1W0I0XEE?;7j8Z}S30QXN4+_y(KNv-f2O@YP z>+cH&$-Se9sX&BI;gYlkYph2{5urs|m2Sy{RI;5CNw0s9NiV$*%$G(n7mR31A zMiG|+kr_6#8YFLzBCZCa+k1(pk^`fN{|ZF6_j+j(NMeX`FnJ>&$Rw#Lb0{4H(;
  • FA%wb z9bd5Lx*{6S4N!FkK=1_^ZEvI#vrXs7$3T5poJ_~8m$iL%l; zyA<~uZJgr+jkOgfLNkj8pdq2VpC4hCARQ($l$Ab%JO)fQ+C0}PEYm6uuH2G&p*P}X6jUfLK4k)f#oPQ4pU zztf7*OK$~}XM@5`r-Ysz^+8D93X(%<*;>PMV0+R_b3$QPGxXGZQld09RPL1`cS`VZ z?;R4NxQF{$AdI*(g5i{VM`PR)9s)Nga%V&!u&yoV##q{>L?ApUf)FQigHv2SE!1S2 zjXi=ARwR*oAR{HcMpio@f-9`-$|qxKg9HWKnQZ8~f`=dzyV}!rE~cWf!V%a8p=Emrtq+L-vij+uz6ppGouU#*kWSefv0Xq`54s+I3z6L! z4w`fm+XvIyZAi#&psgtTstqF!hnC_R>I{h4YJ?AA0F(i0nHo>QNE!gZ1w9Xbl-wcZABj z*1g%qBCm$@Nr=VG0+shr%W;uAI-F>0LDDpmX@7ztMA@Badg(=%5Z8=7ppZ|}kUq?{ z1#a4Lplw>y{9sf5Nqm4s3!P=n&a&gqvXfBVcU=R>c`=Z)UmZ&6%P6~3f$d%RVR1;; zO~IpQ-ydvo7sf9XPiOV;M0GHDq$>2%>EKbmN{5HJp(sZADSb48f6&4W!Fmp7m|j{Z z>oX14W z+{rG@4+7e$QOPcS4cyeY%qu9(&>@U%y2>n6g6%^?u$yE1t4{mfp~{LORQik1L!KJz zVUkvY)JP8g(WS#Zo#!YGVxiPw4?+3+DC!>ZeEJw#d*8b|N&-l7r$7{NgRWwfLS$_n zP=Puz(;Zw>#e?5t@>~M5%1ptwT{h{|u+{Rt41fttU-U^*ylGsO_9YeWb!G>D}29vOW zXX!efaZlrRpaptm$5B`u+AOihF(a(1i^H`woCc0ZE8uT|@mJhAa4a6)3tz5!NhJK>5{D1I2YP+%2GF&PF8)S~2}bsHe*e*A4Qc zke4@=-DN;;%@lQJ1S*BnIFC@~6jbU}S#i_%HSFYWW+tLi4UCuy?99I@8l()vO=1s^ z@F({wEAF6*erNt2`__Ai1VyYi#fGJYnZtI4y%e@Fj0;;F_M9S{IgT{SWPBm?PUx9X zgq~xw84FXzx-iXvxq;U*Jt#+EW3Pp>VU*_vvzF;(qFEP)@?6E)z>}>=1wAgFt4ucV zM6xan<#_?GHOa=Pn9JA;pvYy6Vkpxht)aNGn-#l7V{qkt&kcP0)gDIZWVe&QM$R|w<^}zy0DAzw1lR|#pSPl2b)WMhnBjuN<4KA0SwU^(sgk;#@Ypxz z&Cc5*7eGnN6@vNzU-vh@U$>L5`iv|Jz5w z5?Fum4cgTE&#!T$H97EffRJ>MuTdT1zgD=14KQrviD_Ky{GhNTX9)|SNUF|Z_R+J; z8$%Z3GbdTJs95YCrM8;$tnPdusz2u2?Y;k8G0Z_NikvrfkNh$&-iwYr<&jn!&+g#~ zuN}t%?FDU`|DMoWV!vomS989i7I3?@aY0{F9R4+b6uMIzK_!0Ejtk!tD)v@h$4Rko zd>MM+7`_G59~MrFniIE^7u&>U%253`VEwN027LSW%TNfVodR`^?1-AB2FCB(Z@1sZ zEi&q-sNkfXysk=#@8_3zx}K#y_T`LgHUXm1SIiH}ux(Hfuqe-Fd~_l>wYMO;iJAI7 zzrjz?ehT>_Zr#P#?cr%KYCq*$7tvf&WoUsRQPA$D3~%k?v3fsGxY*bkyWJe#G6&o! zR2ixReE9+~-!lUepgf0K0?+OENZo$kr2vBkvMV-q!k2t&?LNNsKnL!Q^DMm&A0_u& zT`BA-c2mb|A!z-vF#!#{sA=RKo}%_3d^^OG`0=^Se)5O$I{5s{_$2vz2)Q&qPU#X- z#Qm>AGsw$v{)+vfB?_{6d4?V2>ehBgy8{p4`$C06G=_@j=$Lw2JK?XoJ^cSC>m(xRKF~pEGhun;2&QE; zl_W!q5AWhd8$7>;C*)`C=R7H#I7Rb0Xf|po=Xz}43^g5`0i{E>Pna!j@{0FPoD>R4Welyn3JJJ%I02EU0neX}4LEc``{@yWS!#jXEO966p4$*9TC2}LP2 znpoVLadbmu;!$mZl`3A`Z_7~4!sVVdZ5gUqT*5}Rs+U^3Ce}0b<>Nf^$4S$3=3$}x z8Tv}HwP>NxB#RwzBBwSEyIxWLh6S5i!f5HT)`dc&OqYpNzf&8Jg*LmMbWfVB2E@f` z^-LUf?kYalN(_nHo&?m9`mVgnCjU)WdvtO25u8+D={tO@!eFsWLEOYofDe@trFz5A(s$){s7P#8+vzF>gR$_q1Nccy1BSUJrCFA!XppY zJqeEmcXUK{vV*|S5Yfc_q^+Zv@!kX{QR}Msw zH>YUxqY}Ph(Z1}{F^j3s9h>x%F)HyZ*fj<3n{Z5%gn>{nwc&t2RXBlJyl?*L827?9 zwYDPrpPfQOp#k2W(wC(RmE_KpEG?I4aF+Qx%e>XnBqhA*r7u<6MZ=IV06e$JQ%TDc zw&VJZSQx50zWM%kyg{=mi!D`FHmMvvvvQgBeZr5`xs2oX=ArGFoKH$m*oo`6Q*LSV z{hhz(E+66EiAm~X38s1Q#;vGO&Jt039;)sFUu)xAR4Xxx1_yG^sijr-ElZX?v!J!f z#k&xg3#>0AwMCrrY*vvwit`*CD=Kw2-kM-YAG4jLzphrwef=HEMI#HnpiVm zcZRRC0pcWIdzAMUG#B`~<9ywDp1d zzUikSh|O`q(5;sKi~Kfq9y6EBO`E`O9V9QM#j?*05_4KSJ9Cg&)1GFp-XrStX!giG zlAN9vBHn|y+JfP3%B7SOu*Zo8U$yi)`BQoXyX+o$Cq0`DyGLy4IqbOsqMfE?4w1}h zVM#j%;FLWm7#=`A3q3U*^tH$qz%`pY?5_{iJDn6MToi^NPA?CTH>M@!XAa2J5~q_J z*fg77zGIwXS)cvZ5RDy;oY_`;7Q)cR!}-l~%h^)JQi!b3CPI8bO-8Wec99&jO?o4K zd-^JNTR&MneKk9=pPZaNhlSkqn^DhB?Av>C#vd5=tGi_OtZa6}T~aYCj$Lq<{A1QM zHsmh3JnM<16TPyhaMTxis)JKbR2hb9I>5viy>vP>8UraO=nMe&UN3n%;|+FfFX_nm zkbUJ2d3|;jYf%&5%*pI3HJOze$Hx1Um6?;+=YJ(Nnc7+NeigVOp~u|l%2w`yXc$yW zkNpa#@*#7FuG(K{%CGWw{2eYkayq*h^pfANNRYA51FRdv80C>^?Ej~ zhrF+kWYc@dL490sxUZ!oUNrQ{VHPfelfT_2clDDr?YCiGf}xMn=(^BV`SvzR%Zg{o zZDP!t9R57zFn0h?vjW-k9#9oj!Ghc5A6ZYc{kO;f9vuEyvzfbCa0R6*uV>gQm`)Xn4@H!S#M8r zJg1ADXD6S|i)SP3bp?F8Ur~L-CZ(~|D0EaVigUAhK~(^g@}iIfKVtXqQ}ha7r&uHt-e0Yqos zTOTO&3XN3As`1r2iR9)y&j);O27ZqErSqk~ z6=M5RCscJH#f%?<{sGG2Y?ThLIETR7nzK-I+_i1oHL#U?jb@cF9qyi@;ktv!K3D43 zVpQrOXx3u;1Sh13P^>T;`-E2VpHDI6xTT00BN&eMm!5aNM7+x?DMCd;qf+bG_j$AdOs$ z**GMRVCrO`Xf_*ml}vkj?o5c|Idg-q`tNPmC-oP)n89EO3Y^ zavyT4|NaBN=_-@#6l}{{QyT11KIH91Uq*u~h7Zk`pb}C}RBvr#A!IcjRUU#36saXg zCs}Qn%zoQR-ZsRtJ37gJLlx`aNwSM`;z5$Oclc3&zGg`|VQvy3&^_|3Kt&`~pqJ{d zkWY&v*)3OO*I&Fst{1On@s+*v7tdj*rz>exFQqs|?JB(GQi*!t zhzlE8VYy<9v*dB1RI%k!=^Vh4qf2KcLT%K$ILcYaS4HyITF}x^0$-gX%^OwKBN_o91^+11rS@;rIH)y^#tWCuk02^@q5QIuCT~f*= zenM!@9B`I5&TJ|>l+Yv?hqmPo&9s$&36X{*&*3q_)Ny|g4$l_oY`AOE0!!-t{v-U78J0qy%HLNmrl);W?nwl zlhP{nuVV7q@)*|CLE4t3Gj02!}}JdZHg!4*t@?@gE+9r@p;ig1GEEdx1j^neup^i$2{me`kBq;o?>&)gdUl#(p`)V|- zFa~U;$~57Bu@wpwVtiJ!4r+kD8j}X(Wf#ET3^268OU&`6J-$5H2o>lu;qw2q{WT}; znK`-U#^T=HD^@INDqL6$gl`xorNP{B_%dHthU@+flg?-7 z&`XD{MOB6w)S?2^W2W05*nl^sVTF;d&hQPU_EjusUd2mW7s}3HC<--% zd}%BEYV5w`WN2pN^_jxCFBEWDIp=^