mirror of
https://github.com/sigmasternchen/Wish
synced 2025-03-15 07:28:56 +00:00
Merge branch 'master' of https://github.com/overflowerror/Wish
This commit is contained in:
commit
cffcd435d7
2 changed files with 0 additions and 120 deletions
|
@ -1,13 +0,0 @@
|
|||
{
|
||||
"sleep": 10,
|
||||
"default": 0,
|
||||
"systems": [
|
||||
{
|
||||
"hdd": 0,
|
||||
"partition": 0,
|
||||
"label": "wish os",
|
||||
"kernel": "kernel0.1.js",
|
||||
"parameters": ""
|
||||
}
|
||||
]
|
||||
}
|
|
@ -1,107 +0,0 @@
|
|||
var MBR = function() {
|
||||
}
|
||||
MBR.main = function(device) {
|
||||
console.log("MBR: main");
|
||||
console.log("MBR: start Boot Loader");
|
||||
Loader.main(device);
|
||||
}
|
||||
|
||||
var Loader = function() {
|
||||
}
|
||||
Loader.logo = "\033[32m" +
|
||||
" .__ .__ \n" +
|
||||
"__ _ _|__| _____| |__ \n" +
|
||||
"\\ \\/ \\/ / |/ ___/ | \\ \n" +
|
||||
" \\ /| |\\___ \\| Y \\\n" +
|
||||
" \\/\\_/ |__/____ >___| /\n" +
|
||||
" \\/ \\/ \033[31mLoader\033[0m\n";
|
||||
Loader.tickid;
|
||||
Loader.state;
|
||||
Loader.device;
|
||||
Loader.config;
|
||||
Loader.main = function(device) {
|
||||
console.log("Loader: main");
|
||||
console.log("Loader: register 100ms-timer");
|
||||
Loader.tickid = Emulator.registerTimer(100, Loader.tick);
|
||||
console.log("Loader: register key interrupt");
|
||||
Emulator.interrupts['key'] = Loader.key;
|
||||
Loader.device = device;
|
||||
var text = "\033[2J\033[0;0H\033[?25l" + Loader.logo + "\033[s";
|
||||
Emulator.output(text);
|
||||
Loader.state = 0;
|
||||
}
|
||||
Loader.key = function(keycode) {
|
||||
if (KeyCodes.isEnter(keycode)) {
|
||||
Loader.boot();
|
||||
return;
|
||||
}
|
||||
var char = KeyCodes.normalKey(keycode);
|
||||
if (char == 'w') Loader.selected--;
|
||||
if (char == 's') Loader.selected++;
|
||||
Loader.selected %= Loader.config.systems.length;
|
||||
if (Loader.selected < 0)
|
||||
Loader.selected += Loader.config.systems.length;
|
||||
Loader.outputSystems();
|
||||
}
|
||||
Loader.tick = function() {
|
||||
switch(Loader.state) {
|
||||
case 0:
|
||||
console.log("Loader: load config");
|
||||
Loader.config = JSON.parse(Emulator.Request.get(Loader.device.name + "/" + Loader.device.mbr + "/config.json", "", false, ret))
|
||||
Loader.selected = Loader.config.default;
|
||||
Loader.state++;
|
||||
break;
|
||||
case 1:
|
||||
Loader.outputSystems();
|
||||
Loader.state++;
|
||||
break;
|
||||
case 2:
|
||||
break;
|
||||
case 3:
|
||||
Emulator.output(".");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
Loader.outputSystems = function() {
|
||||
console.log("Loader: display menu");
|
||||
var systems = Loader.config.systems;
|
||||
var text = "\033[u\n\n\n\n";
|
||||
for(var i = 0; i < systems.length; i++) {
|
||||
var string = "-> " + systems[i].label + " " + systems[i].kernel;
|
||||
var length = Emulator.Output.xsize - string.length - 10
|
||||
text += "\033[5C\033[46m\033[31m" + ((i == Loader.selected) ? "->" : " ") + " \033[30m" + systems[i].label + " \033[34m" + systems[i].kernel;
|
||||
for (var j = 0; j < length; j++)
|
||||
text += " ";
|
||||
text += "\033[0m\n";
|
||||
}
|
||||
text += "\n\nSelect OS to boot... [w, s]";
|
||||
Emulator.output(text);
|
||||
}
|
||||
Loader.boot = function() {
|
||||
var device = Emulator.Devices.getHarddisks();
|
||||
var system = Loader.config.systems[Loader.selected];
|
||||
device = device[system.hdd];
|
||||
var partition = device.partitions[system.partition];
|
||||
var loadstring = device.name + "/" + partition.name + "/" + system.kernel
|
||||
Emulator.output("\n\nTrying to boot " + loadstring + "..");
|
||||
Loader.state = 3;
|
||||
Emulator.Request.include(loadstring, Loader.finished);
|
||||
}
|
||||
Loader.finished = function() {
|
||||
console.log("Loader: stop BIOS");
|
||||
console.log("loader: remove all event handlers");
|
||||
Emulator.interrupts = new Array();
|
||||
Emulator.unregisterTimer(Loader.tickid);
|
||||
console.log("Loader: start OS");
|
||||
var system = Loader.config.systems[Loader.selected];
|
||||
try {
|
||||
OS.main(system);
|
||||
Emulator.output("\nKernel loaded successfully.");
|
||||
} catch (exception) {
|
||||
console.dir(exception);
|
||||
Emulator.output("\nFailed to load kernel...\n\n");
|
||||
Emulator.output("\033[31msystem halt\033[0m");
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue