mirror of
https://github.com/curioustorvald/tsvm.git
synced 2026-06-12 23:54:04 +09:00
minified bios
This commit is contained in:
@@ -1,80 +1 @@
|
|||||||
println("TERRAN Megatrends inc.");
|
println("TERRAN Megatrends inc.");let p=0;let m=[[0,255,170,85,105,15,165,30,199,113,142,227,202,254,186,190],[255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255]];con.move(2,1),print("000 KB OK");try{for(;p<8<<20;){con.move(2,1);var x=""+(p+1>>10);print(x<10?"00"+x:x<100?"0"+x:x);for(var t=0;t<m.length;t++){for(var b=0;b<m[t].length;b++)if(sys.poke(p+b,m[t][b]),m[t][b]!=sys.peek(p+b))throw"Memory Error";for(var b=0;b<m[t].length;b++)if(sys.poke(p+b,255-m[t][b]),255-m[t][b]!=sys.peek(p+b))throw"Memory Error"}p+=m[0].length}}catch(t){"Memory Error"==t?println(" Memory Error"):println(" KB OK!")}var _BIOS={FIRST_BOOTABLE_PORT:[0,1]};Object.freeze(_BIOS);let n=0,s=0;for(;n<4&&(!com.areYouThere(n)||(com.sendMessage(n,"LOADBOOT"),s=com.getStatusCode(n),0!=s));)n+=1;n<4?eval(com.fetchResponse(n).trimNull()):printerrln("No bootable medium found.");
|
||||||
//println("Main RAM:"+(system.maxmem() >> 10)+" KBytes");
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
// Perform memtest
|
|
||||||
|
|
||||||
let memptr = 0;
|
|
||||||
const memtestptn = [
|
|
||||||
[0x00,0xFF,0xAA,0x55 , 0x69,0x0F,0xA5,0x1E , 0xC7,0x71,0x8E,0xE3 , 0xCA,0xFE,0xBA,0xBE],
|
|
||||||
[0xFF,0xFF,0xFF,0xFF , 0xFF,0xFF,0xFF,0xFF , 0xFF,0xFF,0xFF,0xFF , 0xFF,0xFF,0xFF,0xFF]
|
|
||||||
];
|
|
||||||
|
|
||||||
con.move(2,1);
|
|
||||||
print("000 KB OK")
|
|
||||||
|
|
||||||
try {
|
|
||||||
while (memptr < (8 << 20)) {
|
|
||||||
// just print a number
|
|
||||||
con.move(2,1);
|
|
||||||
var memptrtext = ""+((memptr + 1) >> 10);
|
|
||||||
print((memptrtext < 10) ? "00"+memptrtext : (memptrtext < 100) ? "0"+memptrtext : memptrtext);
|
|
||||||
|
|
||||||
// perform memory test
|
|
||||||
for (var ptn = 0; ptn < memtestptn.length; ptn++) {
|
|
||||||
for (var bi = 0; bi < memtestptn[ptn].length; bi++) {
|
|
||||||
sys.poke(memptr + bi, memtestptn[ptn][bi]);
|
|
||||||
if (memtestptn[ptn][bi] != sys.peek(memptr + bi)) throw "Memory Error";
|
|
||||||
}
|
|
||||||
for (var bi = 0; bi < memtestptn[ptn].length; bi++) {
|
|
||||||
sys.poke(memptr + bi, 255 - memtestptn[ptn][bi]);
|
|
||||||
if (255 - memtestptn[ptn][bi] != sys.peek(memptr + bi)) throw "Memory Error";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
memptr += memtestptn[0].length;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (e) {
|
|
||||||
if (e == "Memory Error") {
|
|
||||||
println(" Memory Error");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
println(" KB OK!");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
// probe bootable device
|
|
||||||
|
|
||||||
var _BIOS = {};
|
|
||||||
|
|
||||||
// Syntax: [Port, Drive-number]
|
|
||||||
// Port #0-3: Serial port 1-4
|
|
||||||
// #4+ : Left for future extension
|
|
||||||
// Drive-number always starts at 1
|
|
||||||
_BIOS.FIRST_BOOTABLE_PORT = [0,1]; // ah screw it
|
|
||||||
|
|
||||||
Object.freeze(_BIOS);
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
// load a bootsector using 'LOADBOOT'
|
|
||||||
let portNumber = 0;
|
|
||||||
let driveStatus = 0;
|
|
||||||
while (portNumber < 4) {
|
|
||||||
if (com.areYouThere(portNumber)) {
|
|
||||||
com.sendMessage(portNumber, "LOADBOOT");
|
|
||||||
driveStatus = com.getStatusCode(portNumber);
|
|
||||||
if (driveStatus == 0) break;
|
|
||||||
}
|
|
||||||
portNumber += 1;
|
|
||||||
}
|
|
||||||
if (portNumber < 4) {
|
|
||||||
eval(com.fetchResponse(portNumber).trimNull());
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
printerrln("No bootable medium found.");
|
|
||||||
}
|
|
||||||
80
assets/bios_source.js
Normal file
80
assets/bios_source.js
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
println("TERRAN Megatrends inc.");
|
||||||
|
//println("Main RAM:"+(system.maxmem() >> 10)+" KBytes");
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// Perform memtest
|
||||||
|
|
||||||
|
let memptr = 0;
|
||||||
|
const memtestptn = [
|
||||||
|
[0x00,0xFF,0xAA,0x55 , 0x69,0x0F,0xA5,0x1E , 0xC7,0x71,0x8E,0xE3 , 0xCA,0xFE,0xBA,0xBE],
|
||||||
|
[0xFF,0xFF,0xFF,0xFF , 0xFF,0xFF,0xFF,0xFF , 0xFF,0xFF,0xFF,0xFF , 0xFF,0xFF,0xFF,0xFF]
|
||||||
|
];
|
||||||
|
|
||||||
|
con.move(2,1);
|
||||||
|
print("000 KB OK")
|
||||||
|
|
||||||
|
try {
|
||||||
|
while (memptr < (8 << 20)) {
|
||||||
|
// just print a number
|
||||||
|
con.move(2,1);
|
||||||
|
var memptrtext = ""+((memptr + 1) >> 10);
|
||||||
|
print((memptrtext < 10) ? "00"+memptrtext : (memptrtext < 100) ? "0"+memptrtext : memptrtext);
|
||||||
|
|
||||||
|
// perform memory test
|
||||||
|
for (var ptn = 0; ptn < memtestptn.length; ptn++) {
|
||||||
|
for (var bi = 0; bi < memtestptn[ptn].length; bi++) {
|
||||||
|
sys.poke(memptr + bi, memtestptn[ptn][bi]);
|
||||||
|
if (memtestptn[ptn][bi] != sys.peek(memptr + bi)) throw "Memory Error";
|
||||||
|
}
|
||||||
|
for (var bi = 0; bi < memtestptn[ptn].length; bi++) {
|
||||||
|
sys.poke(memptr + bi, 255 - memtestptn[ptn][bi]);
|
||||||
|
if (255 - memtestptn[ptn][bi] != sys.peek(memptr + bi)) throw "Memory Error";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
memptr += memtestptn[0].length;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
if (e == "Memory Error") {
|
||||||
|
println(" Memory Error");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
println(" KB OK!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// probe bootable device
|
||||||
|
|
||||||
|
var _BIOS = {};
|
||||||
|
|
||||||
|
// Syntax: [Port, Drive-number]
|
||||||
|
// Port #0-3: Serial port 1-4
|
||||||
|
// #4+ : Left for future extension
|
||||||
|
// Drive-number always starts at 1
|
||||||
|
_BIOS.FIRST_BOOTABLE_PORT = [0,1]; // ah screw it
|
||||||
|
|
||||||
|
Object.freeze(_BIOS);
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// load a bootsector using 'LOADBOOT'
|
||||||
|
let portNumber = 0;
|
||||||
|
let driveStatus = 0;
|
||||||
|
while (portNumber < 4) {
|
||||||
|
if (com.areYouThere(portNumber)) {
|
||||||
|
com.sendMessage(portNumber, "LOADBOOT");
|
||||||
|
driveStatus = com.getStatusCode(portNumber);
|
||||||
|
if (driveStatus == 0) break;
|
||||||
|
}
|
||||||
|
portNumber += 1;
|
||||||
|
}
|
||||||
|
if (portNumber < 4) {
|
||||||
|
eval(com.fetchResponse(portNumber).trimNull());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
printerrln("No bootable medium found.");
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user