From 7868e9cb2b33bedbdd8679c89e0ce769f6428bd7 Mon Sep 17 00:00:00 2001 From: sparky4 Date: Mon, 15 Feb 2016 15:13:16 -0600 Subject: [PATCH] wwwwwwwwwww --- copper.asm | 115 ++++++++++++++++++++++++++++++++-------------------- copper.err | 4 -- copper.o | Bin 0 -> 21218 bytes plz.o | Bin 0 -> 5309 bytes plzpart.map | 18 ++++---- tweak.o | Bin 0 -> 537 bytes 6 files changed, 81 insertions(+), 56 deletions(-) delete mode 100755 copper.err create mode 100755 copper.o create mode 100755 plz.o create mode 100755 tweak.o diff --git a/copper.asm b/copper.asm index c7a6209..77e5c50 100755 --- a/copper.asm +++ b/copper.asm @@ -1,6 +1,6 @@ IDEAL - MODEL large - P386 + MODEL huge + 8087 EXTRN C l1:word, C l2:word, C l3:word, C l4:word, C k1:word, C k2:word, C k3:word, C k4:word EXTRN C il1:word, C il2:word, C il3:word, C il4:word, C ik1:word, C ik2:word, C ik3:word, C ik4:word @@ -10,7 +10,7 @@ CODESEG PUBLIC C frame_count, C init_copper, C close_copper, C cop_drop, C cop_pal, C do_pal PUBLIC C cop_scrl, C cop_start, C cop_plz -frame_count dw 0 +frame_count dw 0 cop_drop dw 0 cop_pal dd 0 do_pal dw 0 @@ -85,7 +85,16 @@ ENDP PROC copper2 - pusha + ;pusha + push AX + push CX + push DX + push BX + push SP + push BP + push SI + push DI + push ds inc [cs:frame_count] @@ -98,7 +107,9 @@ PROC copper2 mov al, 0d out dx, al inc dx - rep outsb + ;rep outsb + movsb + movsb mov [cs:do_pal], 0d @@no_pal: cmp [cs:cop_plz], 0d @@ -111,7 +122,16 @@ PROC copper2 call do_drop @@l1: pop ds - popa + ;popa + pop AX + pop CX + pop DX + pop BX + pop SP + pop BP + pop SI + pop DI + retf ENDP @@ -119,7 +139,7 @@ PROC copper3 retf ENDP -pompi db 0 +pompi db 0 PUBLIC C pompota @@ -132,9 +152,9 @@ PROC pompota mov ax, 0f07h out dx, ax ; 8th bit mov ax, 3c18h - inc [cs:pompi] + inc [cs:pompi] test [cs:pompi], 1d - jz @@l1 + jz @@l1 mov [cs:cop_scrl], 0d mov ax, 3d18h @@l1: @@ -146,36 +166,36 @@ PUBLIC C moveplz PROC moveplz - push ds - push SEG k1 - pop ds - - add [ds:k1], -3d - and [ds:k1], 4095d - add [ds:k2], -2d - and [ds:k2], 4095d - add [ds:k3], 1d - and [ds:k3], 4095d - add [ds:k4], 2d - and [ds:k4], 4095d - - add [ds:l1], -1d - and [ds:l1], 4095d - add [ds:l2], -2d - and [ds:l2], 4095d - add [ds:l3], 2d - and [ds:l3], 4095d - add [ds:l4], 3d - and [ds:l4], 4095d - - pop ds + push ds + ;;;;push SEG k1 + pop ds + + add [ds:k1], -3d + and [ds:k1], 4095d + add [ds:k2], -2d + and [ds:k2], 4095d + add [ds:k3], 1d + and [ds:k3], 4095d + add [ds:k4], 2d + and [ds:k4], 4095d + + add [ds:l1], -1d + and [ds:l1], 4095d + add [ds:l2], -2d + and [ds:l2], 4095d + add [ds:l3], 2d + and [ds:l3], 4095d + add [ds:l4], 3d + and [ds:l4], 4095d + + pop ds ret ENDP LABEL dtau Word ccc=0 cccc=0 -REPT 65 ; 43=dy*512/dtý +REPT 65 ; 43=dy*512/dt dw ccc*ccc/4*43/128+60 ccc=ccc+1 ENDM @@ -204,7 +224,10 @@ PROC do_drop out dx, ax mov al, 07h mov ah, bh - shl ah, 4d + shl ah, 1d + shl ah, 1d + shl ah, 1d + shl ah, 1d and ah, 10h or ah, 0fh out dx, ax ; 8th bit @@ -214,18 +237,18 @@ PROC do_drop @@over: cmp [cs:cop_drop], 256d - jae @@end + jae end_ cmp [cs:cop_drop], 128 jae @@lll cmp [cs:cop_drop], 64+32d - ja @@end + ja end_ @@lll: mov [Word cs:cop_pal], OFFSET fadepal mov [Word cs:cop_pal+2], SEG fadepal mov [do_pal], 1d cmp [cs:cop_drop], 65 - je @@l5 + je l5 mov dx, 3d4h mov ax, 3c18h @@ -233,7 +256,10 @@ PROC do_drop mov ax, 0f07h out dx, ax ; 8th bit - push ds si di cx + push ds + push si + push di + push cx lds si, [cs:cop_fadepal] mov di, OFFSET fadepal @@ -251,9 +277,12 @@ PROC do_drop dec cx jnz @@l4 - pop cx di si ds + pop cx + pop di + pop si + pop ds ret -@@l5: +l5: mov dx, 3d4h mov ax, 9018h out dx, ax @@ -262,7 +291,7 @@ PROC do_drop call initpparas ret -@@end: +end_: mov [cs:cop_drop], 0d ret ENDP @@ -270,8 +299,8 @@ ENDP PROC initpparas push ax push ds - push SEG k1 - pop ds + ;;;;push SEG k1 + pop ds mov ax, [ds:il1] mov [ds:l1], ax diff --git a/copper.err b/copper.err deleted file mode 100755 index f4821ca..0000000 --- a/copper.err +++ /dev/null @@ -1,4 +0,0 @@ -copper.asm(236): Error! E065: Operator is expected -copper.asm(254): Error! E065: Operator is expected -copper.asm(256): Error! E043: Jump out of range -copper.asm(265): Error! E043: Jump out of range diff --git a/copper.o b/copper.o new file mode 100755 index 0000000000000000000000000000000000000000..8496109b16d5972f3ff1a076f56fbf2256048913 GIT binary patch literal 21218 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 z zP*HCUbfe+WfaNlDS5r4~ir#}m5kbT$j5Q=9OZ#o)qkf?V8ZYAJ82>Bs&c$9b8i4HHIVIPyLw;w^yPs3rF zMg8ek8bq^c2+hU+Ji47W&??+l*5OQjkT#M+*|eP&(i4Nsp48n7ag=nTt~~rd#OUa zk1ECWv`xI9UJ@(mWwDxk;_Gxme1kp_>*;gx0DU1Ir0>K-6fM0)!*Sd?q(-Wj-X??Y zL+-%Y{A}sTd0_sz5a*>=y1Sy+@PCQkX4`r0(~er(`7TfWq*s-1H@VYD9Rxp(MeJG- zyH?a^!e^OqQ5Jlr<#dg%6fZ{jYnJ+QRWKRRmZGG3AuBO2J^FKEb-OaWy zwMF-g>h9ef64JrV%meYuuBia;awPUb|ChbekNH}xfuPFfzt^2gNR}2g67hN+V5MMcOG0AY}e zFtDRu3SAj=6`*Akr==Ex2a0{nvV}u0F?17oQeme$yem!y-K6Vttv`{24|QVaPC`2F z^wOsaYwL5wgf?r7qN`o;DQDJ(1Rp|d&+PeT_uw<#H<2m<$tXY^3se@s&w#uT@*>DQ za{;=q0(I{A-H?9^`Bi3#;M;w?91=vQ6?O(g2Qzp=TkVR|icULc>TGAUuYUgqc z=AM4;2pJ2v)?MFxuju&kmC(kk8De+c+Jb@kL{}VThnj7daKW-&3fU?em*IT7>*3ER z?#~#YO98SBIDHnJz7UG#T(J`I@4$oPt!_hyy?_q*>Z?qi%i$lFm1cgv>T$w!t&j_y z3+$|ht}kG_ba^*!xRhSGr`gt?h9$QDc!~e@$n!g|^ZXd!&>pDRgCy7og;DM?q$UH< zZ2-hKID>ENfZD@RV^@2B$1L$Yw6__%(R5KC3a97Ifk$nFA(n5d!|6S)B@J`9|LW7| zx+dlQE0A_=Umn0cE+*B@>D_E?3^Ybp><1Bo1XgS zdJ3Ng00SCC9(4%1?wJt@4Pgk-Z@##C9}#^xSf#z%b|D1fh6|0+PU-BrK!f&O%x{Dp zwelq7DgOtjU?3~UFlpDvbe(@H2RR6!VgYI>0NspdC7uTWb}OR!F#yK}!|6#O;fF9> z9;M2YZ;{mTiliKK`CBJoG;7P{@z9}P<=;a-s$X;KiQj34Z;izbMW_AdKp{Us_(YPn z+oAGOvF`V@PIr{v(>2pny^mhfzeBP?rD($+sl@Ou9X7m26XZWpf!s>v@}KF5{1+N- z{E*feKc+)QKQ$YV)5x$BlofW8J_`FA{Wa_q=}e!{c+-Zh`!RRty_qim&>`UB?JQiI zuYFRBLf40OjG%qM#A-$25UofWrWMH}cu`~>r4@-|v?6JoRwP>l?K9JQZLmz77%Y=+ z2$solT3KXG2$qS7!7?d1SSF|N^>lyYPZ8+pt!5JRoxj5n&2~kg!^*b+9rt{PSmAI*pxy)!E-KIOIA|&Vzx0gPD6^CfS~gN5z=4krHhyBHSq9WwrJd|)R-!{^nzt}yQqVR*ko z{PFu8oIqOG;C*k}xA?fI$mm$#(;#yKc5pxpiU`_ug85yS+rM2WncsEXc-L{_UFRF1 zBB?o?3}-mP7|#TTG47e5#lXPGS5h9IUyz!YUX)mnVH6K^gdk9)IJKlGJ*gluC$*#` zH6G|)g(>Pl#mqoyRt7-^1qNFNC15D1F@!T{GDI_IF(ff)Go&&YF=Q~T?crtMiciW+ pk5A4|NsVVH?%-l*n4g!Qnp