Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
titaniumnetwork-dev
GitHub Repository: titaniumnetwork-dev/Incognito-old
Path: blob/main/static/src/gs/public/microsoft-flight-simulator/src/main.c
1325 views
1
#include "wasm_libc_wrapper/stdio.h"
2
#include "wasm_libc_wrapper/stdlib.h"
3
4
#include"devices/ram.h"
5
#include"devices/vga.h"
6
#include"devices/pic.h"
7
#include"devices/pit.h"
8
#include"devices/rom.h"
9
#include"devices/ems.h"
10
#include"devices/screen.h"
11
#include"devices/disk.h"
12
#include"fs/fs.h"
13
#include"dos/dos.h"
14
#include"cpu/cpu.h"
15
#include"utils/exit_strategy.h"
16
17
#include"dos/mz.h"
18
#include"sdl.h"
19
#include"fs4.h"
20
#include"debug/compare.h"
21
22
//#define DEBUG
23
//#define SINGLESTEP
24
25
void disasmcsip(int count) {
26
uint16_t seg, ofs;
27
getcsip(&seg, &ofs);
28
disasmout(seg, ofs, count);
29
}
30
31
void LoadMz(char *filename) {
32
uint16_t index = 0;
33
FILEFS *file = FindFile(filename, &index);
34
if (file == NULL) {
35
printf("Error: Cannot open file '%s'\n", filename);
36
exit(1);
37
}
38
printf("open %s\n", file->filename);
39
LoadMzExe(file->data, file->size);
40
}
41
42
void UpdateScreen() {
43
VGA_Draw();
44
SDLUpdate();
45
SDLPoll();
46
}
47
48
#ifndef __wasm__
49
50
int fsize(FILE *fp) {
51
int prev = ftell(fp);
52
fseek(fp, 0L, SEEK_END);
53
int sz = ftell(fp);
54
fseek(fp, prev, SEEK_SET);
55
return sz;
56
}
57
58
void MountFs(char *filename) {
59
FILE *fp = fopen(filename, "rb");
60
if (fp == NULL) {
61
fprintf(stderr, "Error: Cannot open file '%s'\n", filename);
62
exit(1);
63
}
64
int size = fsize(fp);
65
printf("Load filesystem '%s' with size %i\n", filename, size);
66
char *data = GetMountStorage(size);
67
size_t ret = fread(data, size, 1, fp);
68
fclose(fp);
69
FinishMountStorage();
70
}
71
72
#else
73
void MountFs(char *filename) {}
74
#endif
75
76
void SetFSVersion(int _version) {
77
int fsversion = _version;
78
79
printf("Loading FS version\n");
80
if (fsversion == 1) {
81
MountFs("data/fs1.fs");
82
RunImage("fs1.img");
83
}
84
if (fsversion == 2) {
85
MountFs("data/fs2.fs");
86
RunImage("fs2.img");
87
}
88
if (fsversion == 3) {
89
MountFs("data/fs3.fs");
90
LoadMz("fs3.exe");
91
}
92
if (fsversion == 4) {
93
MountFs("data/fs4.fs");
94
LoadMz("fs4.exe");
95
}
96
if (fsversion == 5) {
97
MountFs("data/fs5.fs");
98
LoadMz("fs5.ovl");
99
//LoadMz("fs5.exe");
100
}
101
}
102
103
void Init() {
104
printf("Init system\n");
105
printf(" - Init screen\n");
106
ScreenInit();
107
printf(" - Init SDL\n");
108
SDLInit();
109
printf(" - Init RAM\n");
110
RAMInit();
111
printf(" - Init ROM\n");
112
ROMInit();
113
printf(" - Init DOS\n");
114
DOSInit();
115
printf(" - Init EMS\n");
116
EMSInit();
117
printf(" - Init PIC\n");
118
PIC_Init();
119
printf(" - Init PIT\n");
120
PIT_Init();
121
printf(" - Init VGA\n");
122
VGA_Init();
123
printf(" - Init x86\n");
124
reset86();
125
printf("Init system finished\n");
126
127
//LoadMzExeFromFile("fs/plasma/PLASMA.EXE");
128
//LoadMzExeFromFile("fs/fc/FCSLIDE1.EXE");
129
//LoadMzExeFromFile("fs/scr/cga.exe");
130
//LoadMzExeFromFile("fs/nebega/Nebega.exe");
131
//LoadMzExeFromFile("fs/tower/TOWER.EXE");
132
//LoadMzExeFromFile("fs/scr/ega.exe");
133
//LoadCOMFromFile("fs/bcctests/float.com");
134
//LoadMzExeFromFile("fs/tcc/TC/TCDEF.EXE");
135
//LoadMzExeFromFile("fs/tcc/tc2/tc2/NONAME.EXE");
136
//LoadMzExeFromFile("fs/tcc/TC/BIN/TEST.EXE");
137
//LoadMzExeFromFile("fs/tcc/TC/TEST.EXE");
138
}
139
140
static uint32_t count = 0;
141
142
void Run(int steps) {
143
if (isRestart()) {
144
printf("Restart\n");
145
Init();
146
}
147
148
#ifdef DEBUG
149
//if (count > 8890000) disasmcsip(1);
150
//exec86(0x1);
151
compare(count);
152
if ((count & 0xFFFF) == 0) UpdateScreen();
153
#elif defined SINGLESTEP
154
disasmcsip(1);
155
exec86(0x1);
156
if ((count & 0xFFFF) == 0) UpdateScreen();
157
#else
158
//disasmcsip(1);
159
exec86(steps);
160
//#ifndef __wasm__
161
if ((count&0xF) == 0) UpdateScreen();
162
//#endif
163
#endif
164
count++;
165
/*
166
int ticks = SDL_GetTicks();
167
if (c64->cpu.count / 985 - ((ticks - starttick)) > 0) {
168
SDL_Delay(c64->cpu.count / 985 - ((ticks - starttick)));
169
}
170
*/
171
}
172
173
int main() {
174
Init();
175
SetFSVersion(4);
176
//FS4Expandexe();
177
178
while (1) {
179
Run(0x5FFFF);
180
//Run(0x001FF);
181
//SDLDelay(50);
182
}
183
}
184
185