]> 4ch.mooo.com Git - 16.git/commitdiff
wwww
authorsparky4 <sparky4@cock.li>
Mon, 22 Jun 2015 19:07:10 +0000 (14:07 -0500)
committersparky4 <sparky4@cock.li>
Mon, 22 Jun 2015 19:07:10 +0000 (14:07 -0500)
17 files changed:
16.LIB
16.exe
FTEST.EXE
emmtest.exe
emsdump.exe
fmemtest.exe
maptest.exe
maptest0.exe
palettec.exe
pcxtest.exe
scroll.exe
src/FTEST.C
src/pcxtest.c
src/text.c [new file with mode: 0644]
src/text.h [new file with mode: 0644]
test.exe
test2.exe

diff --git a/16.LIB b/16.LIB
index bdf585c9b2d0d49cdc0cb4cec3528ce88c95892e..e9ec45440d4704acb6db02ee371f3adaddddec49 100644 (file)
Binary files a/16.LIB and b/16.LIB differ
diff --git a/16.exe b/16.exe
index dc1c660c7765b6226c31e4fe1ad1b7fb182f2344..f7659310d1d4d2abeb14d0aa5e433d33693d5774 100644 (file)
Binary files a/16.exe and b/16.exe differ
index 011886329c3894b157ea550410ecbe291413273e..15bcc371892880c112b5239e685e278492efdc0e 100644 (file)
Binary files a/FTEST.EXE and b/FTEST.EXE differ
index 1afe9df7ab0f53fa981d5d4e8988f04372d9ba45..fb51561fba2318cd5e9c911d768dcabbfcce7c56 100644 (file)
Binary files a/emmtest.exe and b/emmtest.exe differ
index e19947ac5a5e6184e767a84144a91290af1f0874..9dac2237052d4c64943dd884961a976d3fd17ac3 100644 (file)
Binary files a/emsdump.exe and b/emsdump.exe differ
index 7904c7d68723ec8cab90dcb366ae7f50c3d64091..951d244027f6f6ae31868851c8f7a59e8a254534 100644 (file)
Binary files a/fmemtest.exe and b/fmemtest.exe differ
index 9d02cb1c9a3f0788609c2a04b0796e827bce0a41..36d8c98a74b553d2acbc05b9c2cf40f98efc0d97 100644 (file)
Binary files a/maptest.exe and b/maptest.exe differ
index 815756c681a1fa6b78dfce761fef435d8bb79a36..12dda10af0a71a06f5231f54b149f09a71ea8e76 100644 (file)
Binary files a/maptest0.exe and b/maptest0.exe differ
index 31612103f96f71ad430c87d1f21e1f77795a6cc1..d86b26d5c194416b753ed9c0ef5b666444bfafcd 100644 (file)
Binary files a/palettec.exe and b/palettec.exe differ
index 947344db571cc9c3e1d431431a079ae8710dd0c7..b30c56fa73afedfcd567a26873581b7e2ca624c3 100644 (file)
Binary files a/pcxtest.exe and b/pcxtest.exe differ
index daf1175c37b99eaea4bec030103accdabc504e5d..5d88dfcde4008bb6fc00d76209dfbda92de1ae2f 100644 (file)
Binary files a/scroll.exe and b/scroll.exe differ
index 5f7efa80b24c62e0069d1d8bbf0e5e495cc9a0f8..9641ba114653a711ab283cef66799fa5d33f6360 100644 (file)
@@ -1,13 +1,36 @@
+/* Project 16 Source Code~\r
+ * Copyright (C) 2012-2015 sparky4 & pngwen & andrius4669\r
+ *\r
+ * This file is part of Project 16.\r
+ *\r
+ * Project 16 is free software; you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation; either version 3 of the License, or\r
+ * (at your option) any later version.\r
+ *\r
+ * Project 16 is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>, or\r
+ * write to the Free Software Foundation, Inc., 51 Franklin Street,\r
+ * Fifth Floor, Boston, MA 02110-1301 USA.\r
+ *\r
+ */\r
 #include <stdio.h>\r
+#include <conio.h>\r
 #include "lib/types.h"\r
 #include "lib/text.h"\r
 \r
-main() {\r
+void main(int argc, char *argv[])\r
+{\r
     int i;\r
     int j;\r
-    char l[16];\r
+       char l[16];\r
     char c;\r
-    word s, o;\r
+    word s, o, t, w;\r
     word addr = (word) l;\r
     textInit();\r
 \r
@@ -20,8 +43,32 @@ main() {
     printf("Character: ");\r
     scanf("%c", &c);\r
 \r
-    s=romFonts[ROM_FONT_8x16].seg;\r
-    o=romFonts[ROM_FONT_8x16].off;\r
+       switch(*argv[1])\r
+       {\r
+                       case 0:\r
+                               t=0;\r
+                               w=14;\r
+                       break;\r
+                       case 1:\r
+                               t=1;\r
+                               w=8;\r
+                       break;\r
+                       case 2:\r
+                               t=2;\r
+                               w=8;\r
+                       break;\r
+                       case 3:\r
+                               t=3;\r
+                               w=16;\r
+                       break;\r
+                       default:\r
+                               t=3;\r
+                               w=16;\r
+       }\r
+\r
+\r
+    s=romFonts[t].seg;\r
+    o=romFonts[t].off;\r
 \r
     //load the letter 'A'\r
     __asm {\r
@@ -35,7 +82,7 @@ main() {
                SHL BX, 1\r
                SHL BX, 1\r
                ADD SI, BX      ;the address of A\r
-               MOV CX, 16\r
+               MOV CX, w\r
        L1:     MOV AX, ES:SI\r
                MOV DS:DI, AX\r
                INC SI\r
@@ -45,7 +92,7 @@ main() {
     }\r
 \r
     //render the letter in ascii art\r
-    for(i=0; i<16; i++) {\r
+    for(i=0; i<w; i++) {\r
        j=1<<8;\r
        while(j) {\r
            printf("%c", l[i] & j ? '*':' ');\r
index 4053e51a5f0c06c8ad8845108a2cd0beb5f88e90..d955fdc9858b0f9f20d7b35ccb5150532b3fe892 100644 (file)
@@ -1,37 +1,37 @@
-/* Project 16 Source Code~
- * Copyright (C) 2012-2015 sparky4 & pngwen & andrius4669
- *
- * This file is part of Project 16.
- *
- * Project 16 is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * Project 16 is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>, or
- * write to the Free Software Foundation, Inc., 51 Franklin Street,
- * Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdio.h>
-#include <dos.h>
+/* Project 16 Source Code~\r
+ * Copyright (C) 2012-2015 sparky4 & pngwen & andrius4669\r
+ *\r
+ * This file is part of Project 16.\r
+ *\r
+ * Project 16 is free software; you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation; either version 3 of the License, or\r
+ * (at your option) any later version.\r
+ *\r
+ * Project 16 is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>, or\r
+ * write to the Free Software Foundation, Inc., 51 Franklin Street,\r
+ * Fifth Floor, Boston, MA 02110-1301 USA.\r
+ *\r
+ */\r
+\r
+#include <stdio.h>\r
+#include <dos.h>\r
 #include <string.h>\r
 #include "src/lib/modex16.h"\r
-#include "src/lib/bitmap.h"
-#include "src/lib/planar.c"\r
+#include "src/lib/bitmap.h"\r
+#include "src/lib/planar.h"\r
 \r
 word far* clockw= (word far*) 0x046C; /* 18.2hz clock */\r
 \r
-/*
+/*\r
 void\r
-DrawPBuf(page_t *page, int x, int y, planar_buf_t *p, byte sprite)
+DrawPBuf(page_t *page, int x, int y, planar_buf_t *p, byte sprite)\r
 {\r
        byte plane;\r
        word px, py;\r
@@ -42,33 +42,33 @@ DrawPBuf(page_t *page, int x, int y, planar_buf_t *p, byte sprite)
        modexSelectPlane(PLANE(plane+x));\r
        for(px = plane; px < p->width; px+=4) {\r
                offset=px;\r
-               for(py=0; py<p->height/2; py++) {
+               for(py=0; py<p->height/2; py++) {\r
                SELECT_ALL_PLANES();\r
                if(!sprite || p->plane[offset])\r
                        page->data = p->plane;\r
-               //offset+=p->width;
+               //offset+=p->width;\r
                //offset++;\r
                }\r
        }\r
        }\r
 }\r
-*/
+*/\r
 \r
 void main() {\r
-       bitmap_t bmp;
+       bitmap_t bmp;\r
        planar_buf_t *p;\r
-       int i;
+       int i;\r
        page_t page;\r
-       word start;
+       word start;\r
        int plane;\r
        float t1, t2;\r
 \r
        page=modexDefaultPage();\r
 \r
-//0000 bmp = bitmapLoadPcx("data/koishi~~.pcx");
-//     bmp = bitmapLoadPcx("data/chikyuu.pcx");
-       bmp = bitmapLoadPcx("data/koishi^^.pcx");
-//     bmp = bitmapLoadPcx("16/PCX_LIB/chikyuu.pcx");
+//0000 bmp = bitmapLoadPcx("data/koishi~~.pcx");\r
+//     bmp = bitmapLoadPcx("data/chikyuu.pcx");\r
+       bmp = bitmapLoadPcx("data/koishi^^.pcx");\r
+//     bmp = bitmapLoadPcx("16/PCX_LIB/chikyuu.pcx");\r
        p = planar_buf_from_bitmap(&bmp);\r
        modexEnter();\r
 \r
@@ -78,7 +78,7 @@ void main() {
        /* clear and draw one sprite and one bitmap */\r
        modexClearRegion(&page, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, 1);\r
 \r
-       /* non sprite comparison */
+       /* non sprite comparison */\r
        start = *clockw;\r
        for(i=0; i<100 ;i++) {\r
                oldDrawBmp(VGA, 20, 20, &bmp, 0);\r
@@ -86,14 +86,14 @@ void main() {
 \r
        start = *clockw;\r
        for(i=0; i<100 ;i++) {\r
-//0000         modexDrawBmp(&page, 20, 20, &bmp);
+//0000         modexDrawBmp(&page, 20, 20, &bmp);\r
                modexDrawBmp(&page, 0, 0, &bmp);\r
        }\r
        t1 = (*clockw-start) /18.2;\r
 \r
        start = *clockw;\r
        for(i=0; i<100; i++) {\r
-//0000         modexCopyPageRegion(&page, &page, 20, 20, 128, 20, 64, 64);
+//0000         modexCopyPageRegion(&page, &page, 20, 20, 128, 20, 64, 64);\r
                modexCopyPageRegion(&page, &page, 0, 0, 0, 0, 320, 240);\r
        }\r
        t2 = (*clockw-start)/18.2;\r
@@ -107,24 +107,24 @@ void main() {
 \r
        start = *clockw;\r
        for(i=0; i<100 ;i++) {\r
-//0000         modexDrawSprite(&page, 20, 20, &bmp);
+//0000         modexDrawSprite(&page, 20, 20, &bmp);\r
                modexDrawSprite(&page, 0, 0, &bmp);\r
-       }
-       //_fmemset(MK_FP(0xA000, 0), (int)p->plane, SCREEN_WIDTH*(SCREEN_HEIGHT*2));
-       modexDrawBmp(&page, 0, 0, &bmp);
-       while(!kbhit())
-       {
-               //DrawPBuf(&page, 0, 0, p, 0);
-       }
+       }\r
+       //_fmemset(MK_FP(0xA000, 0), (int)p->plane, SCREEN_WIDTH*(SCREEN_HEIGHT*2));\r
+       modexDrawBmp(&page, 0, 0, &bmp);\r
+       while(!kbhit())\r
+       {\r
+               //DrawPBuf(&page, 0, 0, p, 0);\r
+       }\r
        modexLeave();\r
-
-       printf("\n%d\n", sizeof(p->plane));
-       printf("%d\n", sizeof(bmp));
-
-       for(i=0; i<(320*240); i++)
-       {
-               fprintf(stdout, "%d", bmp.data[i]);
-               if(i%320==0) fprintf(stdout, "\n");
+\r
+       printf("\n%d\n", sizeof(p->plane));\r
+       printf("%d\n", sizeof(bmp));\r
+\r
+       for(i=0; i<(320*240); i++)\r
+       {\r
+               fprintf(stdout, "%d", bmp.data[i]);\r
+               if(i%320==0) fprintf(stdout, "\n");\r
        }\r
        printf("CPU to VGA: %f\n", t1);\r
        printf("VGA to VGA: %f\n", t2);\r
diff --git a/src/text.c b/src/text.c
new file mode 100644 (file)
index 0000000..5101c54
--- /dev/null
@@ -0,0 +1,59 @@
+/* Project 16 Source Code~
+ * Copyright (C) 2012-2015 sparky4 & pngwen & andrius4669
+ *
+ * This file is part of Project 16.
+ *
+ * Project 16 is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Project 16 is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>, or
+ * write to the Free Software Foundation, Inc., 51 Franklin Street,
+ * Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ */
+
+#include "text.h"
+
+/* this array holds the rom font descriptors */
+font_t romFonts[4];
+
+
+static void getRomFontAddr(char fontNum, int index) {
+    word fontSeg;
+    word fontOff;
+
+    __asm {
+               PUSH BP
+               MOV AX, 0x1130          ;I can haz font info plz?
+               MOV BH, fontNum         ;  where ur fontNum
+               INT 0x10                ;kthxbae
+               MOV AX, ES              ;save teh segmentz
+               MOV BX, BP              ;and all the base!
+               POP BP                  ;u can haz ur frame back!
+               MOV fontSeg, AX         ;Storage
+               MOV fontOff, BX         ;Storage
+    }
+    romFonts[index].seg = fontSeg;
+    romFonts[index].off = fontOff;
+
+}
+
+/* This function initializes the text engine */
+void textInit() {
+    getRomFontAddr(0x02, ROM_FONT_8x14);
+    getRomFontAddr(0x03, ROM_FONT_8x8_LOW);
+    getRomFontAddr(0x04, ROM_FONT_8x8_HIGH);
+    getRomFontAddr(0x06, ROM_FONT_8x16);
+    romFonts[ROM_FONT_8x14].charSize=14;
+    romFonts[ROM_FONT_8x8_LOW].charSize=8;
+    romFonts[ROM_FONT_8x8_HIGH].charSize=8;
+    romFonts[ROM_FONT_8x16].charSize=16;
+}
diff --git a/src/text.h b/src/text.h
new file mode 100644 (file)
index 0000000..edee47a
--- /dev/null
@@ -0,0 +1,49 @@
+/* Project 16 Source Code~
+ * Copyright (C) 2012-2015 sparky4 & pngwen & andrius4669
+ *
+ * This file is part of Project 16.
+ *
+ * Project 16 is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Project 16 is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>, or
+ * write to the Free Software Foundation, Inc., 51 Franklin Street,
+ * Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ */
+/*
+ * This is the text subsystem for project 16.
+ * These functions provide for the rendering of text strings
+ * using the BIOS fonts.
+ * They copy the font characters directly to VGA.
+ */
+#ifndef TEXT_H
+#define TEXT_H
+#include "types.h"
+
+/* font information type */
+typedef struct font {
+    word  seg;       //segment for the font
+    word  off;       //offset in the segment for the font
+    byte  charSize;  //bytes in each character
+} font_t;
+
+/* storage for the rom fonts */
+extern font_t romFonts[4];
+#define ROM_FONT_8x14     0
+#define ROM_FONT_8x8_LOW  1
+#define ROM_FONT_8x8_HIGH 2
+#define ROM_FONT_8x16     3
+
+/* This function initializes the text engine */
+void textInit();
+
+#endif
index cf0005e23bed2ccc0c770314c4daabeedbd857b4..ab205aacb1ee4221182773767acc2873e57f8ec9 100644 (file)
Binary files a/test.exe and b/test.exe differ
index c19556ff3c3e5c4c2cbe705feef0b226966b5b07..1b6619aee5911cf1358e5fe8fb291ddc10ea3f3b 100644 (file)
Binary files a/test2.exe and b/test2.exe differ