]> 4ch.mooo.com Git - 16.git/blob - src/lib/16_tail.c
fixed an issue with EMS_INT becuase i learned there is 2 wwww
[16.git] / src / lib / 16_tail.c
1 /* Project 16 Source Code~\r
2  * Copyright (C) 2012-2016 sparky4 & pngwen & andrius4669 & joncampbell123 & yakui-lover\r
3  *\r
4  * This file is part of Project 16.\r
5  *\r
6  * Project 16 is free software; you can redistribute it and/or modify\r
7  * it under the terms of the GNU General Public License as published by\r
8  * the Free Software Foundation; either version 3 of the License, or\r
9  * (at your option) any later version.\r
10  *\r
11  * Project 16 is distributed in the hope that it will be useful,\r
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
14  * GNU General Public License for more details.\r
15  *\r
16  * You should have received a copy of the GNU General Public License\r
17  * along with this program.  If not, see <http://www.gnu.org/licenses/>, or\r
18  * write to the Free Software Foundation, Inc., 51 Franklin Street,\r
19  * Fifth Floor, Boston, MA 02110-1301 USA.\r
20  *\r
21  */\r
22 /*\r
23  * 16 library\r
24  */\r
25 \r
26 #include "src/lib/16_tail.h"\r
27 \r
28 /*\r
29 ==========================\r
30 =\r
31 = Startup16\r
32 =\r
33 = Load a few things right away\r
34 =\r
35 ==========================\r
36 */\r
37 \r
38 void Startup16(global_game_variables_t *gvar)\r
39 {\r
40 #ifdef __WATCOMC__\r
41         // DOSLIB: check our environment\r
42         probe_dos();\r
43 \r
44         // DOSLIB: what CPU are we using?\r
45         // NTS: I can see from the makefile Sparky4 intends this to run on 8088 by the -0 switch in CFLAGS.\r
46         //      So this code by itself shouldn't care too much what CPU it's running on. Except that other\r
47         //      parts of this project (DOSLIB itself) rely on CPU detection to know what is appropriate for\r
48         //      the CPU to carry out tasks. --J.C.\r
49         cpu_probe();\r
50 \r
51         // DOSLIB: check for VGA\r
52         if (!probe_vga()) {\r
53                 printf("VGA probe failed\n");\r
54                 return;\r
55         }\r
56         // hardware must be VGA or higher!\r
57         if (!(vga_state.vga_flags & VGA_IS_VGA)) {\r
58                 printf("This program requires VGA or higher graphics hardware\n");\r
59                 return;\r
60         }\r
61 #endif\r
62         gvar->mm.mmstarted=0;\r
63         gvar->pm.PMStarted=0;\r
64         MM_Startup(gvar);\r
65         IN_Startup(gvar);\r
66         PM_Startup(gvar);\r
67         PM_UnlockMainMem(gvar);\r
68         CA_Startup(gvar);\r
69 \r
70 }\r
71 \r
72 //===========================================================================\r
73 \r
74 /*\r
75 ==========================\r
76 =\r
77 = Shutdown16\r
78 =\r
79 = Shuts down all ID_?? managers\r
80 =\r
81 ==========================\r
82 */\r
83 \r
84 void Shutdown16(global_game_variables_t *gvar)\r
85 {\r
86         PM_Shutdown(gvar);\r
87         IN_Shutdown(gvar);\r
88         CA_Shutdown(gvar);\r
89         MM_Shutdown(gvar);\r
90 }\r
91 \r
92 \r
93 //===========================================================================\r
94 \r
95 /*\r
96 ==================\r
97 =\r
98 = DebugMemory\r
99 =\r
100 ==================\r
101 */\r
102 \r
103 void DebugMemory_(global_game_variables_t *gvar, boolean q)\r
104 {\r
105         /*VW_FixRefreshBuffer ();\r
106         US_CenterWindow (16,7);\r
107 \r
108         US_CPrint ("Memory Usage");\r
109         US_CPrint ("------------");\r
110         US_Print ("Total     :");\r
111         US_PrintUnsigned (mminfo.mainmem/1024);\r
112         US_Print ("k\nFree      :");\r
113         US_PrintUnsigned (MM_UnusedMemory()/1024);\r
114         US_Print ("k\nWith purge:");\r
115         US_PrintUnsigned (MM_TotalFree()/1024);\r
116         US_Print ("k\n");\r
117         VW_UpdateScreen();*/\r
118         if(q){\r
119         printf("========================================\n");\r
120         printf("                DebugMemory_\n");\r
121         printf("========================================\n");}\r
122         if(q) { printf("Memory Usage\n");\r
123         printf("------------\n"); }else printf("        %c%c", 0xD3, 0xC4);\r
124         printf("Total:  "); if(q) printf("      "); printf("%uk", gvar->mmi.mainmem/1024);\r
125         if(q) printf("\n"); else printf("       ");\r
126         printf("Free:   "); if(q) printf("      "); printf("%uk", MM_UnusedMemory(gvar)/1024);\r
127         if(q) printf("\n"); else printf("       ");\r
128         printf("With purge:"); if(q) printf("   "); printf("%uk\n", MM_TotalFree(gvar)/1024);\r
129         if(q) printf("------------\n");\r
130 #ifdef __WATCOMC__\r
131         IN_Ack ();\r
132 #endif\r
133         if(q) MM_ShowMemory (gvar);\r
134 }\r
135 #ifdef __WATCOMC__\r
136 /*\r
137 ==========================\r
138 =\r
139 = Quit\r
140 =\r
141 ==========================\r
142 */\r
143 \r
144 void Quit (char *error)\r
145 {\r
146         unsigned        finscreen;\r
147         memptr  screen;\r
148         union REGS in, out;\r
149 \r
150         //ClearMemory ();\r
151         if (!*error)\r
152         {\r
153          //WriteConfig ();\r
154         }\r
155         else\r
156         {\r
157          //CA_CacheGrChunk (ERRORSCREEN);\r
158          //screen = grsegs[ERRORSCREEN];\r
159         }\r
160 \r
161         //ShutdownId ();\r
162         IN_Shutdown();\r
163         //modexLeave();\r
164         in.h.ah = 0x00;\r
165         in.h.al = 0x3;\r
166         int86(0x10, &in, &out);\r
167 \r
168         if (error && *error)\r
169         {\r
170           //movedata ((unsigned)screen,7,0xb800,0,7*160);\r
171           //gotoxy (10,4);\r
172           fprintf(stderr, "%s\n", error);\r
173           //gotoxy (1,8);\r
174           exit(1);\r
175         }\r
176         else\r
177         if (!error || !(*error))\r
178         {\r
179                 //clrscr();\r
180                 //#ifndef JAPAN\r
181                 movedata ((unsigned)screen,7,0xb800,0,4000);\r
182                 //gotoxy(1,24);\r
183                 //#endif\r
184 //asm   mov     bh,0\r
185 //asm   mov     dh,23   // row\r
186 //asm   mov     dl,0    // collumn\r
187 //asm   mov ah,2\r
188 //asm   int     0x10\r
189         }\r
190 \r
191         exit(0);\r
192 }\r
193 #endif\r
194 \r
195 //===========================================================================\r