From 12cece87847ad1c7ef32251a002c0df182da2f34 Mon Sep 17 00:00:00 2001 From: minjaesong Date: Tue, 31 May 2022 00:35:23 +0900 Subject: [PATCH] prawwper app crash handling on command.js --- assets/disk0/tvdos/TVDOS.SYS | 16 ++-------------- assets/disk0/tvdos/bin/command.js | 7 ++++--- 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/assets/disk0/tvdos/TVDOS.SYS b/assets/disk0/tvdos/TVDOS.SYS index 1738f89..4e4a73b 100644 --- a/assets/disk0/tvdos/TVDOS.SYS +++ b/assets/disk0/tvdos/TVDOS.SYS @@ -397,20 +397,7 @@ var execApp = (cmdsrc, args) => { `var _appStub=function(exec_args){${injectIntChk(cmdsrc, intchkFunName)}\n};` + `_appStub`); // making 'exec_args' a app-level global - try { execAppPrg(args); - } - catch (e) { -printerrln( -` - \\|/ ____ \\|/ - "@'/ ,. \\'@" - /_| \\__/ |_\\ - \\__U_/ -Kernel panic - ${e.stack}` -) -serial.printerr(e.stack) - } } /////////////////////////////////////////////////////////////////////////////// @@ -419,4 +406,5 @@ serial.printerr(e.stack) serial.println("TVDOS.SYS initialised, running boot script..."); var _G = {}; filesystem.open("A", "tvdos/bin/command.js", "R"); -execApp(filesystem.readAll("A"), ["", "/c", "\\AUTOEXEC.BAT"]); +eval(`var _appStub=function(exec_args){${filesystem.readAll("A")}\n};` + + `_appStub`)(["", "/c", "\\AUTOEXEC.BAT"]) diff --git a/assets/disk0/tvdos/bin/command.js b/assets/disk0/tvdos/bin/command.js index 649b448..95d77b0 100644 --- a/assets/disk0/tvdos/bin/command.js +++ b/assets/disk0/tvdos/bin/command.js @@ -378,9 +378,9 @@ shell.coreutils = { // TODO just print out what's there print(contents); }, - /*panic: function(args) { - throw Error("Artificial Kernel Panic Triggered") - }*/ + panic: function(args) { + throw Error("Panicking command.js") + } }; shell.coreutils.chdir = shell.coreutils.cd; Object.freeze(shell.coreutils); @@ -530,6 +530,7 @@ shell.execute = function(line) { gotError = true; serial.printerr(`[command.js] program quit with ${e}:\n${e.stack || '(stack trace unavailable)'}`); + printerrln(`Program quit with error:\n${e.stack || '(stack trace unavailable)'}`); if (`${e}`.startsWith("InterruptedException")) errorlevel = SIGTERM.name;