Add console output controller
This commit is contained in:
@@ -1,12 +1,17 @@
|
|||||||
import {
|
import {
|
||||||
kmod_graphics_vga_clear,
|
kmod_graphics_vga_clear,
|
||||||
kmod_graphics_vga_writeChar,
|
kmod_graphics_vga_init,
|
||||||
|
kmod_graphics_vga_pushLine,
|
||||||
} from "./modules/graphics/vga";
|
} from "./modules/graphics/vga";
|
||||||
|
|
||||||
export function kmain() {
|
export function kmain() {
|
||||||
kmod_graphics_vga_clear();
|
kmod_graphics_vga_init();
|
||||||
kmod_graphics_vga_writeChar(0, 0, "H", 0x0f);
|
|
||||||
kmod_graphics_vga_writeChar(1, 0, "i", 0x0f);
|
|
||||||
|
|
||||||
throw new Error("Simulated kernel panic");
|
globalThis.console = {
|
||||||
|
log: function (msg: string) {
|
||||||
|
kmod_graphics_vga_pushLine(String(msg));
|
||||||
|
},
|
||||||
|
} as any;
|
||||||
|
|
||||||
|
eval("console.log('TS-DOS Program Started!!');");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,35 @@ import {
|
|||||||
CFG_KMOD_GRAPHICS_VGA_WIDTH,
|
CFG_KMOD_GRAPHICS_VGA_WIDTH,
|
||||||
} from "./config";
|
} from "./config";
|
||||||
|
|
||||||
|
let kmod_graphics_vga_lineBuf: string[] = [];
|
||||||
|
|
||||||
|
export function kmod_graphics_vga_init() {
|
||||||
|
kmod_graphics_vga_clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
export function kmod_graphics_vga_pushLine(line: string) {
|
||||||
|
kmod_graphics_vga_lineBuf.push(line);
|
||||||
|
|
||||||
|
if (kmod_graphics_vga_lineBuf.length > CFG_KMOD_GRAPHICS_VGA_HEIGHT) {
|
||||||
|
kmod_graphics_vga_lineBuf.shift();
|
||||||
|
}
|
||||||
|
|
||||||
|
kmod_graphics_vga_printLines();
|
||||||
|
}
|
||||||
|
|
||||||
|
export function kmod_graphics_vga_printLines() {
|
||||||
|
for (let y = 0; y < CFG_KMOD_GRAPHICS_VGA_HEIGHT; y++) {
|
||||||
|
const line = kmod_graphics_vga_lineBuf[y] || "";
|
||||||
|
|
||||||
|
for (let x = 0; x < CFG_KMOD_GRAPHICS_VGA_WIDTH; x++) {
|
||||||
|
let char = line[x];
|
||||||
|
if (!char) char = " ";
|
||||||
|
|
||||||
|
kmod_graphics_vga_writeChar(x, y, char, 0x0f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export function kmod_graphics_vga_getCharAddr(x: number, y: number): number {
|
export function kmod_graphics_vga_getCharAddr(x: number, y: number): number {
|
||||||
return (
|
return (
|
||||||
CFG_KMOD_GRAPGICS_VGA_MEM_ADDR + (y * CFG_KMOD_GRAPHICS_VGA_WIDTH + x) * 2
|
CFG_KMOD_GRAPGICS_VGA_MEM_ADDR + (y * CFG_KMOD_GRAPHICS_VGA_WIDTH + x) * 2
|
||||||
@@ -20,6 +49,8 @@ export function kmod_graphics_vga_getColorAddr(x: number, y: number): number {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function kmod_graphics_vga_clear() {
|
export function kmod_graphics_vga_clear() {
|
||||||
|
kmod_graphics_vga_lineBuf = [];
|
||||||
|
|
||||||
for (let y = 0; y < CFG_KMOD_GRAPHICS_VGA_HEIGHT; y++) {
|
for (let y = 0; y < CFG_KMOD_GRAPHICS_VGA_HEIGHT; y++) {
|
||||||
for (let x = 0; x < CFG_KMOD_GRAPHICS_VGA_WIDTH; x++) {
|
for (let x = 0; x < CFG_KMOD_GRAPHICS_VGA_WIDTH; x++) {
|
||||||
kmod_graphics_vga_writeChar(x, y, " ", 0x07);
|
kmod_graphics_vga_writeChar(x, y, " ", 0x07);
|
||||||
|
|||||||
1
src/os/src/programs/tsdos/index.ts
Normal file
1
src/os/src/programs/tsdos/index.ts
Normal file
@@ -0,0 +1 @@
|
|||||||
|
console.log("TS-DOS Program Started");
|
||||||
Reference in New Issue
Block a user