/* Project 16 Source Code~\r
- * Copyright (C) 2012-2015 sparky4 & pngwen & andrius4669\r
+ * Copyright (C) 2012-2016 sparky4 & pngwen & andrius4669 & joncampbell123\r
*\r
* This file is part of Project 16.\r
*\r
//#include "lib/16text.h"\r
#include "lib/modex16.h"\r
\r
+#include <hw/cpu/cpu.h>\r
+#include <hw/dos/dos.h>\r
+#include <hw/vga/vga.h>\r
+#include <hw/vga/vgatty.h>\r
+\r
+global_game_variables_t gvar;\r
+\r
void main(int argc, char near *argv[])\r
{\r
//JMOJI\r
- static byte e;
+ static byte e;\r
+ //word ri;\r
byte pee[2];\r
- static word chx, chy, colpee;\r
+ static byte ibmlogo[]="IIIIIII BBBBBBBBB MMMMM MMMMM\n\\r
+IIIIIII BBBBBBBBBBB MMMMMM MMMMMM\n\\r
+ III BBB BBB MMMMMM MMMMMM\n\\r
+ III BBBBBBBBB MMMMMMM MMMMMMM\n\\r
+ III BBBBBBBBB MMM MMMMMMM MMM\n\\r
+ III BBB BBB MMM MMMMM MMM\n\\r
+IIIIIII BBBBBBBBBBB MMMM MMM MMMM\n\\r
+IIIIIII BBBBBBBBB MMMM M MMMM\n\\r
+";\r
+ static byte rose[]=" :. ,..\n\\r
+ .' :~.':_.,\n\\r
+ .' ::.::'.'\n\\r
+ : ::' .:\n\\r
+ `.: .: .:/\n\\r
+ `::--.:'.::'\n\\r
+ |. _:===-'\n\\r
+ / /\n\\r
+ ,---.---. __,','\n\\r
+ (~`. \ ) )','.,---..\n\\r
+ `v`\ | ,' .-'.:,'_____ `.\n\\r
+ )|/.-~.--~~--. ~~~-. \ \n\\r
+ _/-'_.-~ ""---.._`.|\n\\r
+ _.-~~_.-~ ""'\n\\r
+ _..--~~_.(~~\n\\r
+ __...---~~~_..--~~\n\\r
+,'___...---~~~\n\\r
+";\r
+// static byte *rosa;\r
+// static word chx;//, chy, colpee;\r
+ static word z;\r
textInit();\r
- modexEnter();
+\r
+ // DOSLIB: check our environment\r
+ probe_dos();\r
+\r
+ // DOSLIB: what CPU are we using?\r
+ // NTS: I can see from the makefile Sparky4 intends this to run on 8088 by the -0 switch in CFLAGS.\r
+ // So this code by itself shouldn't care too much what CPU it's running on. Except that other\r
+ // parts of this project (DOSLIB itself) rely on CPU detection to know what is appropriate for\r
+ // the CPU to carry out tasks. --J.C.\r
+ cpu_probe();\r
+\r
+ // DOSLIB: check for VGA\r
+ if (!probe_vga()) {\r
+ printf("VGA probe failed\n");\r
+ return;\r
+ }\r
+ // hardware must be VGA or higher!\r
+ if (!(vga_state.vga_flags & VGA_IS_VGA)) {\r
+ printf("This program requires VGA or higher graphics hardware\n");\r
+ return;\r
+ }\r
+ VGAmodeX(1, 1, &gvar);\r
+ //int10_setmode(19);\r
+ __asm{\r
+ mov AH,12H\r
+ mov BL,30h\r
+ mov AL,04h\r
+ int 10\r
+ mov ax,1123h\r
+ int 10h\r
+ ;mov ax,1112h ; load 8x8 character set into RAM\r
+ ;int 10h\r
+ }\r
+ /* setup camera and screen~ */\r
+//.. gvar.video.page[0] = modexDefaultPage(&gvar.video.page[0]);\r
+ //gvar.video.page[0].width += (16*2);\r
+ //gvar.video.page[0].height += (16*2);\r
+//++++ modexShowPage(&gvar.video.page[0]);\r
//modexprint(16, 16, 1, 15, "wwww");\r
//getch();\r
- chx=0;\r
- chy=0;
- colpee=32;\r
- for(e=0x00; e<=0xFE; e++)\r
- {
- if(chx+8>(SCREEN_WIDTH/2)-16)
- {
- chx=0;
- chy+=8;
- sprintf(pee,"%u", colpee);
- modexprint(200, 200, 1, 47, 0, &pee);
- //getch();
- }
- modexprint(chx, chy, 1, 0, colpee, &e);\r
- chx+=9;
- colpee++;
- if(colpee>=32+24) colpee=32;\r
- }
+// chx=0;\r
+// chy=0;\r
+// colpee=32;\r
+ bios_cls();\r
+ /* position the cursor to home */\r
+ vga_moveto(0,0);\r
+ vga_sync_bios_cursor();\r
+ for(e=0x00, z=0; e<=0xFE; e++, z++)\r
+ {\r
+ //if(chx+8>(gvar.video.page[0].width/2))\r
+ if((z)+1>16)\r
+ {\r
+// chx=0;\r
+// chy+=8;\r
+// sprintf(pee,"%u", colpee);\r
+// modexprint(&gvar.video.page[0], 200, 200, 1, 47, 0, &pee, 1);\r
+ z=0;\r
+ printf("\n");\r
+ //getch();\r
+ }\r
+ printf("%zc", e);\r
+// modexprint(&gvar.video.page[0], chx, chy, 1, 0, colpee, &e, 1);\r
+// chx+=9;\r
+// colpee++;\r
+// if(colpee>=32+24) colpee=32;\r
+ }\r
//modexprint(100, 100, 1, 47, 0, "wwww");\r
getch();\r
- modexLeave();
- //printf("\nh=%d\n", '8');
- //printf("\n%c\n", e);
+// modexprint(0, 0, 1, 0, colpee, &rose);\r
+//++++ modexprint(&gvar.video.page[0], 0, 0, 0, 0, colpee, &ibmlogo);\r
+// modexprintbig(&gvar.video.page[0], 0, 0, 1, colpee, 0, "IBM");\r
+// modexprint(0, 0, 1, 0, colpee, ROSE);\r
+//++++ getch();\r
+ VGAmodeX(0, 1, &gvar);\r
+// rosa=malloc(sizeof(ROSE));\r
+// (*rosa)=(byte)ROSE;\r
+ printf("\n%s\n", rose);\r
+ //printf("\nh=%d\n", '8');\r
+// printf("\n%c\n", e);\r
}\r