]> 4ch.mooo.com Git - plz.git/blobdiff - asmyt.c
dang it!!
[plz.git] / asmyt.c
diff --git a/asmyt.c b/asmyt.c
index d906446b629b1536e30397c13a8fa174ee44f384..5f985787ad76ceb929ec6fdb7d63665b8b120645 100755 (executable)
--- a/asmyt.c
+++ b/asmyt.c
 #include "asmyt.h"\r
-void set_plzstart(word start)\r
+// __asm{\r
+// PUBLIC C plzline, C setplzparas, C psini, C lsini4, C lsini16\r
+//\r
+// LABEL psini BYTE\r
+// INCLUDE 'psini.inc'\r
+// ;       db      16384 dup(?)\r
+//\r
+// LABEL lsini4 WORD\r
+// INCLUDE 'lsini4.inc'\r
+// ;       db      16384 dup(?)\r
+//\r
+// LABEL lsini16 WORD\r
+// INCLUDE 'lsini16.inc'\r
+// ;       db      16384 dup(?)\r
+// }\r
+\r
+int ccc;\r
+\r
+word set_plzstart(word start)\r
 {\r
 __asm{\r
        mov     dx, 3d4h\r
        mov     al, 18h         ; linecompare\r
-       mov     ah, [Byte start]\r
+       mov     ah, [Byte PTR start]\r
        out     dx, ax\r
        mov     al, 07h\r
-       mov     ah, [Byte start+1]\r
-       shl     ah, 4d\r
+       mov     ah, [Byte PTR start+1]\r
+       shl     ah, 1d\r
+       shl     ah, 1d\r
+       shl     ah, 1d\r
+       shl     ah, 1d\r
        and     ah, 10h\r
        or      ah, 0fh\r
        out     dx, ax                  ; 8th bit\r
 }\r
        return start;\r
 }\r
+/*\r
+int plzline(int y, int vseg)\r
+{\r
+       // vseg represented a segment, so multiply by sixteen (shift left by 4)\r
+       // to convert into an offset.\r
+       var nVgaYOffset = vseg * 16;\r
+\r
+       var cccTable =\r
+       [\r
+               3,2,1,0,7,6,5,4,11,10,9,8,15,14,13,12,19,18,17,16,23,22,21,20,27,26,25,24,31,30,29,28,35,34,33,32,39,38,37,36,43,42,41,40,47,46,45,44,51,50,49,48,55,54,53,52,59,58,57,56,63,62,61,60,67,66,65,64,71,70,69,68,75,74,73,72,79,78,77,76,83,82,81,80\r
+       ];\r
+       var nCount = 84;\r
+\r
+       var ah = 0;\r
+       var al = 0;\r
+       var eax = 0;\r
+\r
+       for (var nIndex = 0; nIndex < nCount; nIndex++)\r
+       {\r
+               var ccc = cccTable[nIndex];\r
+\r
+               if ((ccc & 1) == 1)\r
+               {\r
+                       var nByteOffset = 0;\r
+                       var bx = 0;\r
+\r
+                       nByteOffset = (y * 2) + anSelfModifyOffsets_ReadWord((2 * 84) + ccc);\r
+                       nByteOffset &= 0xFFFF;\r
+                       bx = psini_ReadWord(nByteOffset);\r
+\r
+                       nByteOffset = bx + anSelfModifyOffsets_ReadWord((1 * 84) + ccc);\r
+                       nByteOffset &= 0xFFFF;\r
+                       ah = psini_ReadByte(nByteOffset);\r
+\r
+                       nByteOffset = (y * 2) + anSelfModifyOffsets_ReadWord((4 * 84) + ccc);\r
+                       nByteOffset &= 0xFFFF;\r
+                       bx = psini_ReadWord(nByteOffset);\r
+\r
+                       nByteOffset = bx + (y * 2) + anSelfModifyOffsets_ReadWord((3 * 84) + ccc);\r
+                       nByteOffset &= 0xFFFF;\r
+                       ah += psini_ReadByte(nByteOffset);\r
+                       ah &= 0xFF;\r
+               }\r
+               else\r
+               {\r
+                       var nByteOffset = 0;\r
+                       var bx = 0;\r
+\r
+                       nByteOffset = (y * 2) + anSelfModifyOffsets_ReadWord((2 * 84) + ccc);\r
+                       nByteOffset &= 0xFFFF;\r
+                       bx = psini_ReadWord(nByteOffset);\r
+\r
+                       nByteOffset = bx + anSelfModifyOffsets_ReadWord((1 * 84) + ccc);\r
+                       nByteOffset &= 0xFFFF;\r
+                       al = psini_ReadByte(nByteOffset);\r
+\r
+                       nByteOffset = (y * 2) + anSelfModifyOffsets_ReadWord((4 * 84) + ccc);\r
+                       nByteOffset &= 0xFFFF;\r
+                       bx = psini_ReadWord(nByteOffset);\r
+\r
+                       nByteOffset = bx + (y * 2) + anSelfModifyOffsets_ReadWord((3 * 84) + ccc);\r
+                       nByteOffset &= 0xFFFF;\r
+                       al += psini_ReadByte(nByteOffset);\r
+                       al &= 0xFF;\r
+               }\r
+\r
+               if ((ccc & 3) == 2)\r
+               {\r
+                       eax = (ah << 8) | (al << 0);\r
+                       eax <<= 16;\r
+               }\r
+\r
+               if ((ccc & 3) == 0)\r
+               {\r
+                       eax |= (ah << 8) | (al << 0);\r
+\r
+                       VGA_WriteDword(nVgaYOffset + ccc, eax);\r
+               }\r
+       }\r
+\r
+       return 0;\r
+}\r
+\r
+*/\r
+int setplzparas(int c1, int c2, int c3, int c4)\r
+{\r
+       __asm{\r
+LABEL psini BYTE\r
+INCLUDE 'psini.inc'\r
+\r
+LABEL lsini4 WORD\r
+INCLUDE 'lsini4.inc'\r
+\r
+LABEL lsini16 WORD\r
+INCLUDE 'lsini16.inc'\r
+\r
+               IRP ccc, <0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83>\r
+               mov     ax, [c1]\r
+               add     ax, OFFSET psini+ccc*8\r
+               mov     [word (cs:lc1_&ccc)], ax\r
+               mov     ax, [c2]\r
+               shl     ax, 1d\r
+               add     ax, OFFSET lsini16-ccc*8+80*8\r
+               mov     [word (cs:lc2_&ccc)], ax\r
+               mov     ax, [c3]\r
+               add     ax, OFFSET psini-ccc*4+80*4\r
+               mov     [word (cs:lc3_&ccc)], ax\r
+               mov     ax, [c4]\r
+               shl     ax, 1d\r
+               add     ax, OFFSET lsini4+ccc*32\r
+               mov     [word (cs:lc4_&ccc)], ax\r
+               ENDM\r
+               ret\r
+       }\r
+}\r
+/*     var psiniOffset = 0;\r
+       var lsini16Offset = lsini16_GetOffset();\r
+       var lsini4Offset = lsini4_GetOffset();\r
+\r
+       for (var ccc = 0; ccc < 84; ccc++)\r
+       {\r
+               var lc1 = c1 + psiniOffset + (ccc * 8);\r
+               lc1 &= 0xFFFF;\r
+               anSelfModifyOffsets_WriteWord((1 * 84) + ccc, lc1);\r
+\r
+               var lc2 = (c2 * 2) + lsini16Offset - (ccc * 8) + (80 * 8);\r
+               lc2 &= 0xFFFF;\r
+               anSelfModifyOffsets_WriteWord((2 * 84) + ccc, lc2);\r
+\r
+               var lc3 = c3 + psiniOffset - (ccc * 4) + (80 * 4);\r
+               lc3 &= 0xFFFF;\r
+               anSelfModifyOffsets_WriteWord((3 * 84) + ccc, lc3);\r
+\r
+               var lc4 = (c4 * 2) + lsini4Offset + (ccc * 32);\r
+               lc4 &= 0xFFFF;\r
+               anSelfModifyOffsets_WriteWord((4 * 84) + ccc, lc4);\r
+       }\r
+\r
+       return 0;\r
+}*/\r