diff --git a/8025_textonly.png b/assets/8025_textonly.png similarity index 100% rename from 8025_textonly.png rename to assets/8025_textonly.png diff --git a/EGA8x14.png b/assets/EGA8x14.png similarity index 100% rename from EGA8x14.png rename to assets/EGA8x14.png diff --git a/FontROM7x14.kra b/assets/FontROM7x14.kra similarity index 100% rename from FontROM7x14.kra rename to assets/FontROM7x14.kra diff --git a/FontROM7x14.png b/assets/FontROM7x14.png similarity index 100% rename from FontROM7x14.png rename to assets/FontROM7x14.png diff --git a/FontROM7x7.kra b/assets/FontROM7x7.kra similarity index 100% rename from FontROM7x7.kra rename to assets/FontROM7x7.kra diff --git a/bin_to_js_array.lua b/assets/bin_to_js_array.lua similarity index 100% rename from bin_to_js_array.lua rename to assets/bin_to_js_array.lua diff --git a/assets/bios/tbasdist.js b/assets/bios/tbasdist.js new file mode 100644 index 0000000..f46446a --- /dev/null +++ b/assets/bios/tbasdist.js @@ -0,0 +1,39 @@ + +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 basic.js +let p = _BIOS.FIRST_BOOTABLE_PORT; +com.sendMessage(0, "DEVRST\x17"); +com.sendMessage(0, 'OPENR"tbas/basic.js",1'); +let r = com.getStatusCode(0); + +if (r == 0){ + com.sendMessage(0, "READ"); + r = com.getStatusCode(0); + if (r == 0) { + try { + let g=com.pullMessage(0); + let execAppPrg = eval("var _appStub=function(exec_args){"+g+"};_appStub;"); // making 'exec_args' a app-level global + execAppPrg(); + return 0; + } + catch (e) { + printerrln("\n"+e.stack); + return 1; + } + } + else + printerrln("I/O Error"); +} +else + printerrln("No bootable medium found."); \ No newline at end of file diff --git a/cp437_fira_code.kra b/assets/cp437_fira_code.kra similarity index 100% rename from cp437_fira_code.kra rename to assets/cp437_fira_code.kra diff --git a/cp437_fira_code.png b/assets/cp437_fira_code.png similarity index 100% rename from cp437_fira_code.png rename to assets/cp437_fira_code.png diff --git a/crt_grad.png b/assets/crt_grad.png similarity index 100% rename from crt_grad.png rename to assets/crt_grad.png diff --git a/assets/!BOOTSEC b/assets/disk0/!BOOTSEC similarity index 100% rename from assets/!BOOTSEC rename to assets/disk0/!BOOTSEC diff --git a/assets/AUTOEXEC.BAT b/assets/disk0/AUTOEXEC.BAT similarity index 100% rename from assets/AUTOEXEC.BAT rename to assets/disk0/AUTOEXEC.BAT diff --git a/assets/bf/99 b/assets/disk0/bf/99 similarity index 100% rename from assets/bf/99 rename to assets/disk0/bf/99 diff --git a/assets/bf/hello b/assets/disk0/bf/hello similarity index 100% rename from assets/bf/hello rename to assets/disk0/bf/hello diff --git a/assets/bf/scan b/assets/disk0/bf/scan similarity index 100% rename from assets/bf/scan rename to assets/disk0/bf/scan diff --git a/assets/99.bas b/assets/disk0/home/basic/99.bas similarity index 100% rename from assets/99.bas rename to assets/disk0/home/basic/99.bas diff --git a/assets/amazing.bas b/assets/disk0/home/basic/amazing.bas similarity index 100% rename from assets/amazing.bas rename to assets/disk0/home/basic/amazing.bas diff --git a/assets/blackjack.bas b/assets/disk0/home/basic/blackjack.bas similarity index 100% rename from assets/blackjack.bas rename to assets/disk0/home/basic/blackjack.bas diff --git a/assets/curryarray.bas b/assets/disk0/home/basic/curryarray.bas similarity index 100% rename from assets/curryarray.bas rename to assets/disk0/home/basic/curryarray.bas diff --git a/assets/currytest.bas b/assets/disk0/home/basic/currytest.bas similarity index 100% rename from assets/currytest.bas rename to assets/disk0/home/basic/currytest.bas diff --git a/assets/dotest.bas b/assets/disk0/home/basic/dotest.bas similarity index 100% rename from assets/dotest.bas rename to assets/disk0/home/basic/dotest.bas diff --git a/assets/downkeys.bas b/assets/disk0/home/basic/downkeys.bas similarity index 100% rename from assets/downkeys.bas rename to assets/disk0/home/basic/downkeys.bas diff --git a/assets/downkeys2.bas b/assets/disk0/home/basic/downkeys2.bas similarity index 100% rename from assets/downkeys2.bas rename to assets/disk0/home/basic/downkeys2.bas diff --git a/assets/emit.bas b/assets/disk0/home/basic/emit.bas similarity index 100% rename from assets/emit.bas rename to assets/disk0/home/basic/emit.bas diff --git a/assets/facmap.bas b/assets/disk0/home/basic/facmap.bas similarity index 100% rename from assets/facmap.bas rename to assets/disk0/home/basic/facmap.bas diff --git a/assets/facrec.bas b/assets/disk0/home/basic/facrec.bas similarity index 100% rename from assets/facrec.bas rename to assets/disk0/home/basic/facrec.bas diff --git a/assets/fib.bas b/assets/disk0/home/basic/fib.bas similarity index 100% rename from assets/fib.bas rename to assets/disk0/home/basic/fib.bas diff --git a/assets/filtercurry.bas b/assets/disk0/home/basic/filtercurry.bas similarity index 100% rename from assets/filtercurry.bas rename to assets/disk0/home/basic/filtercurry.bas diff --git a/assets/formut.bas b/assets/disk0/home/basic/formut.bas similarity index 100% rename from assets/formut.bas rename to assets/disk0/home/basic/formut.bas diff --git a/assets/gosubtest.bas b/assets/disk0/home/basic/gosubtest.bas similarity index 100% rename from assets/gosubtest.bas rename to assets/disk0/home/basic/gosubtest.bas diff --git a/assets/gugu.bas b/assets/disk0/home/basic/gugu.bas similarity index 100% rename from assets/gugu.bas rename to assets/disk0/home/basic/gugu.bas diff --git a/assets/hamurabi.bas b/assets/disk0/home/basic/hamurabi.bas similarity index 100% rename from assets/hamurabi.bas rename to assets/disk0/home/basic/hamurabi.bas diff --git a/assets/multable.bas b/assets/disk0/home/basic/multable.bas similarity index 100% rename from assets/multable.bas rename to assets/disk0/home/basic/multable.bas diff --git a/assets/onlabeltest.bas b/assets/disk0/home/basic/onlabeltest.bas similarity index 100% rename from assets/onlabeltest.bas rename to assets/disk0/home/basic/onlabeltest.bas diff --git a/assets/qsort.bas b/assets/disk0/home/basic/qsort.bas similarity index 100% rename from assets/qsort.bas rename to assets/disk0/home/basic/qsort.bas diff --git a/assets/rmaze.bas b/assets/disk0/home/basic/rmaze.bas similarity index 100% rename from assets/rmaze.bas rename to assets/disk0/home/basic/rmaze.bas diff --git a/assets/sinc.bas b/assets/disk0/home/basic/sinc.bas similarity index 100% rename from assets/sinc.bas rename to assets/disk0/home/basic/sinc.bas diff --git a/assets/sinc1.bas b/assets/disk0/home/basic/sinc1.bas similarity index 100% rename from assets/sinc1.bas rename to assets/disk0/home/basic/sinc1.bas diff --git a/assets/sinc2.bas b/assets/disk0/home/basic/sinc2.bas similarity index 100% rename from assets/sinc2.bas rename to assets/disk0/home/basic/sinc2.bas diff --git a/assets/sqrt.bas b/assets/disk0/home/basic/sqrt.bas similarity index 100% rename from assets/sqrt.bas rename to assets/disk0/home/basic/sqrt.bas diff --git a/assets/tri.bas b/assets/disk0/home/basic/tri.bas similarity index 100% rename from assets/tri.bas rename to assets/disk0/home/basic/tri.bas diff --git a/assets/bf.js b/assets/disk0/home/bf.js similarity index 100% rename from assets/bf.js rename to assets/disk0/home/bf.js diff --git a/assets/emittest.js b/assets/disk0/home/emittest.js similarity index 100% rename from assets/emittest.js rename to assets/disk0/home/emittest.js diff --git a/assets/evaltest.js b/assets/disk0/home/evaltest.js similarity index 100% rename from assets/evaltest.js rename to assets/disk0/home/evaltest.js diff --git a/assets/keytest.js b/assets/disk0/home/keytest.js similarity index 100% rename from assets/keytest.js rename to assets/disk0/home/keytest.js diff --git a/assets/labeltest b/assets/disk0/home/labeltest similarity index 100% rename from assets/labeltest rename to assets/disk0/home/labeltest diff --git a/assets/phototest.js b/assets/disk0/home/phototest.js similarity index 99% rename from assets/phototest.js rename to assets/disk0/home/phototest.js index ad1aced..7ecccfc 100644 --- a/assets/phototest.js +++ b/assets/disk0/home/phototest.js @@ -11,6 +11,5 @@ for (i = indices.length - 1; i > 0; i--) { } for (i = 0; i < 250880; i++) { graphics.plotPixel(indices[i] % 560, (indices[i] / 560)|0, image[indices[i]]); - graphics.plotPixel(indices[i] % 560, (indices[i] / 560)|0, image[indices[i]]); } con.color_fore(0); diff --git a/assets/romtest.js b/assets/disk0/home/romtest.js similarity index 100% rename from assets/romtest.js rename to assets/disk0/home/romtest.js diff --git a/assets/serialtest.js b/assets/disk0/home/serialtest.js similarity index 100% rename from assets/serialtest.js rename to assets/disk0/home/serialtest.js diff --git a/assets/test_malicious.js b/assets/disk0/home/test_malicious.js similarity index 100% rename from assets/test_malicious.js rename to assets/disk0/home/test_malicious.js diff --git a/assets/zippytest.js b/assets/disk0/home/zippytest.js similarity index 100% rename from assets/zippytest.js rename to assets/disk0/home/zippytest.js diff --git a/assets/basic.js b/assets/disk0/tbas/basic.js similarity index 99% rename from assets/basic.js rename to assets/disk0/tbas/basic.js index 4a7f97d..0f55498 100644 --- a/assets/basic.js +++ b/assets/disk0/tbas/basic.js @@ -15,18 +15,19 @@ if (exec_args !== undefined && exec_args[1] !== undefined && exec_args[1].starts let INDEX_BASE = 0; -let TRACEON = true; -let DBGON = true; +let TRACEON = false; +let DBGON = false; let DATA_CURSOR = 0; let DATA_CONSTS = []; -let DEFUNS_BUILD_DEFUNS = true; +const DEFUNS_BUILD_DEFUNS = true; +const BASIC_HOME_PATH = "/home/basic/" if (system.maxmem() < 8192) { println("Out of memory. BASIC requires 8K or more User RAM"); throw Error("Out of memory"); } -let vmemsize = system.maxmem() - 5236; +let vmemsize = system.maxmem(); let cmdbuf = []; // index: line number let gotoLabels = {}; @@ -132,7 +133,7 @@ fs.open = function(path, operationMode) { throw Error("Unknown file opening mode: " + mode); } - com.sendMessage(port[0], "OPEN"+mode+'"'+path+'",'+port[1]); + com.sendMessage(port[0], "OPEN"+mode+'"'+BASIC_HOME_PATH+path+'",'+port[1]); let response = com.getStatusCode(port[0]); return (response == 0); }; @@ -196,8 +197,14 @@ let reNumber = /([0-9]*[.][0-9]+[eE]*[\-+0-9]*[fF]*|[0-9]+[.eEfF][0-9+\-]*[fF]?) let reNum = /[0-9]+/; let tbasexit = false; +const greetText = "Terran BASIC 1.0 "+String.fromCharCode(179)+" Scratchpad Memory: "+vmemsize+" bytes"; +const greetLeftPad = (80 - greetText.length) >> 1; +const greetRightPad = 80 - greetLeftPad - greetText.length; -println("Terran BASIC 1.0 "+vmemsize+" bytes free"); +con.color_pair(0,253); +print(" ".repeat(greetLeftPad)+greetText+" ".repeat(greetRightPad)); +con.color_pair(239,255); +println(); println(prompt); // variable object constructor @@ -1887,7 +1894,7 @@ bF.isSemanticLiteral = function(token, state) { return undefined == token || "]" == token || ")" == token || "qot" == state || "num" == state || "bool" == state || "lit" == state; } -bF.parserDoDebugPrint = true; +bF.parserDoDebugPrint = false; bF.parserPrintdbg = any => { if (bF.parserDoDebugPrint) serial.println(any) }; bF.parserPrintdbg2 = function(icon, lnum, tokens, states, recDepth) { if (bF.parserDoDebugPrint) { @@ -2611,8 +2618,8 @@ bF._troNOP = function(lnum, stmtnum) { return new SyntaxTreeReturnObj("null", un bF._executeSyntaxTree = function(lnum, stmtnum, syntaxTree, recDepth) { if (lnum === undefined || stmtnum === undefined) throw Error(`Line or statement number is undefined: (${lnum},${stmtnum})`); - let _debugExec = true; - let _debugPrintCurrentLine = true; + let _debugExec = false; + let _debugPrintCurrentLine = false; let recWedge = ">".repeat(recDepth) + " "; if (_debugExec || _debugPrintCurrentLine) serial.println(recWedge+"@@ EXECUTE @@"); @@ -3050,7 +3057,7 @@ bF.catalog = function(args) { // CATALOG function }; Object.freeze(bF); -if (exec_args[1] !== undefined) { +if (exec_args !== undefined && exec_args[1] !== undefined) { bF.load(["load", exec_args[1]]); try { bF.run(); diff --git a/assets/tbas/doc/bibliography.tex b/assets/disk0/tbas/doc/bibliography.tex similarity index 100% rename from assets/tbas/doc/bibliography.tex rename to assets/disk0/tbas/doc/bibliography.tex diff --git a/assets/tbas/doc/concepts.tex b/assets/disk0/tbas/doc/concepts.tex similarity index 100% rename from assets/tbas/doc/concepts.tex rename to assets/disk0/tbas/doc/concepts.tex diff --git a/assets/tbas/doc/facmap.bas b/assets/disk0/tbas/doc/facmap.bas similarity index 100% rename from assets/tbas/doc/facmap.bas rename to assets/disk0/tbas/doc/facmap.bas diff --git a/assets/tbas/doc/facrec.bas b/assets/disk0/tbas/doc/facrec.bas similarity index 100% rename from assets/tbas/doc/facrec.bas rename to assets/disk0/tbas/doc/facrec.bas diff --git a/assets/tbas/doc/fib.bas b/assets/disk0/tbas/doc/fib.bas similarity index 100% rename from assets/tbas/doc/fib.bas rename to assets/disk0/tbas/doc/fib.bas diff --git a/assets/tbas/doc/functions.tex b/assets/disk0/tbas/doc/functions.tex similarity index 99% rename from assets/tbas/doc/functions.tex rename to assets/disk0/tbas/doc/functions.tex index 9e9f1b3..3f96068 100644 --- a/assets/tbas/doc/functions.tex +++ b/assets/disk0/tbas/doc/functions.tex @@ -206,11 +206,11 @@ Functions are a form of expression that may taks input arguments surrounded by p \subsection{PEEK} \codeline{BYTE \textbf{= PEEK(}MEM\_ADDR\textbf{)}}\par - Returns whatever the value stored in the \code{MEM\_ADDR} of the scratchpad-memory.\par + Returns whatever the value stored in the \code{MEM\_ADDR} of the Scratchpad Memory.\par Address mirroring, illegal access, etc. are entirely up to the virtual machine which the BASIC interpreter is running on. \subsection{POKE} \codeline{\textbf{POKE(}MEM\_ADDR \textbf{,} BYTE\textbf{)}}\par - Puts a \code{BYTE} into the \code{MEM\_ADDR} of the scratchpad-memory. + Puts a \code{BYTE} into the \code{MEM\_ADDR} of the Scratchpad Memory. \section{Higher-order Function} diff --git a/assets/tbas/doc/implementation.tex b/assets/disk0/tbas/doc/implementation.tex similarity index 100% rename from assets/tbas/doc/implementation.tex rename to assets/disk0/tbas/doc/implementation.tex diff --git a/assets/tbas/doc/intro.tex b/assets/disk0/tbas/doc/intro.tex similarity index 100% rename from assets/tbas/doc/intro.tex rename to assets/disk0/tbas/doc/intro.tex diff --git a/assets/tbas/doc/langguide.tex b/assets/disk0/tbas/doc/langguide.tex similarity index 100% rename from assets/tbas/doc/langguide.tex rename to assets/disk0/tbas/doc/langguide.tex diff --git a/assets/tbas/doc/langref.tex b/assets/disk0/tbas/doc/langref.tex similarity index 100% rename from assets/tbas/doc/langref.tex rename to assets/disk0/tbas/doc/langref.tex diff --git a/assets/tbas/doc/statements.tex b/assets/disk0/tbas/doc/statements.tex similarity index 100% rename from assets/tbas/doc/statements.tex rename to assets/disk0/tbas/doc/statements.tex diff --git a/assets/tbas/doc/syntax.txt b/assets/disk0/tbas/doc/syntax.txt similarity index 100% rename from assets/tbas/doc/syntax.txt rename to assets/disk0/tbas/doc/syntax.txt diff --git a/assets/tbas/doc/tbasman.tex b/assets/disk0/tbas/doc/tbasman.tex similarity index 100% rename from assets/tbas/doc/tbasman.tex rename to assets/disk0/tbas/doc/tbasman.tex diff --git a/assets/tbas/doc/technical.tex b/assets/disk0/tbas/doc/technical.tex similarity index 100% rename from assets/tbas/doc/technical.tex rename to assets/disk0/tbas/doc/technical.tex diff --git a/assets/tbas/doc/tokeniser.gv b/assets/disk0/tbas/doc/tokeniser.gv similarity index 100% rename from assets/tbas/doc/tokeniser.gv rename to assets/disk0/tbas/doc/tokeniser.gv diff --git a/assets/tbas/parser_wip.js b/assets/disk0/tbas/parser_wip.js similarity index 100% rename from assets/tbas/parser_wip.js rename to assets/disk0/tbas/parser_wip.js diff --git a/assets/tvdos/TVDOS.SYS b/assets/disk0/tvdos/TVDOS.SYS similarity index 99% rename from assets/tvdos/TVDOS.SYS rename to assets/disk0/tvdos/TVDOS.SYS index edd9ca5..881b34e 100644 --- a/assets/tvdos/TVDOS.SYS +++ b/assets/disk0/tvdos/TVDOS.SYS @@ -15,7 +15,7 @@ _TVDOS.getPath = function() { _TVDOS.variables = { DOSDIR: "\\tvdos", LANG: "EN", - PATH: "\\tvdos\\bin", + PATH: ";\\tvdos\\bin;\\tbas;\\home", PATHEXT: ".com;.bat;.js", HELPPATH: "\\tvdos\\help", OS_NAME: "Terrarum Virtual DOS", diff --git a/assets/tvdos/bin/basica.js b/assets/disk0/tvdos/bin/basica.js similarity index 100% rename from assets/tvdos/bin/basica.js rename to assets/disk0/tvdos/bin/basica.js diff --git a/assets/tvdos/bin/command.js b/assets/disk0/tvdos/bin/command.js similarity index 100% rename from assets/tvdos/bin/command.js rename to assets/disk0/tvdos/bin/command.js diff --git a/assets/tvdos/bin/false.js b/assets/disk0/tvdos/bin/false.js similarity index 100% rename from assets/tvdos/bin/false.js rename to assets/disk0/tvdos/bin/false.js diff --git a/assets/tvdos/bin/flsh.js b/assets/disk0/tvdos/bin/flsh.js similarity index 100% rename from assets/tvdos/bin/flsh.js rename to assets/disk0/tvdos/bin/flsh.js diff --git a/assets/tvdos/bin/fsh.js b/assets/disk0/tvdos/bin/fsh.js similarity index 100% rename from assets/tvdos/bin/fsh.js rename to assets/disk0/tvdos/bin/fsh.js diff --git a/assets/tvdos/bin/hexdump.js b/assets/disk0/tvdos/bin/hexdump.js similarity index 100% rename from assets/tvdos/bin/hexdump.js rename to assets/disk0/tvdos/bin/hexdump.js diff --git a/assets/tvdos/bin/less.js b/assets/disk0/tvdos/bin/less.js similarity index 100% rename from assets/tvdos/bin/less.js rename to assets/disk0/tvdos/bin/less.js diff --git a/assets/tvdos/bin/touch.js b/assets/disk0/tvdos/bin/touch.js similarity index 100% rename from assets/tvdos/bin/touch.js rename to assets/disk0/tvdos/bin/touch.js diff --git a/assets/tvdos/bin/true.js b/assets/disk0/tvdos/bin/true.js similarity index 100% rename from assets/tvdos/bin/true.js rename to assets/disk0/tvdos/bin/true.js diff --git a/assets/tvdos/filesystem.md b/assets/disk0/tvdos/filesystem.md similarity index 100% rename from assets/tvdos/filesystem.md rename to assets/disk0/tvdos/filesystem.md diff --git a/assets/tvdos/gl.js b/assets/disk0/tvdos/gl.js similarity index 100% rename from assets/tvdos/gl.js rename to assets/disk0/tvdos/gl.js diff --git a/fox.base64 b/assets/fox.base64 similarity index 100% rename from fox.base64 rename to assets/fox.base64 diff --git a/fox.bytes b/assets/fox.bytes similarity index 100% rename from fox.bytes rename to assets/fox.bytes diff --git a/fox.png b/assets/fox.png similarity index 100% rename from fox.png rename to assets/fox.png diff --git a/fox.tga b/assets/fox.tga similarity index 100% rename from fox.tga rename to assets/fox.tga diff --git a/fsh_clockdigits.png b/assets/fsh_clockdigits.png similarity index 100% rename from fsh_clockdigits.png rename to assets/fsh_clockdigits.png diff --git a/fsh_logo.png b/assets/fsh_logo.png similarity index 100% rename from fsh_logo.png rename to assets/fsh_logo.png diff --git a/guicursor.kra b/assets/guicursor.kra similarity index 100% rename from guicursor.kra rename to assets/guicursor.kra diff --git a/guicursor.png b/assets/guicursor.png similarity index 100% rename from guicursor.png rename to assets/guicursor.png diff --git a/hp2640.kra b/assets/hp2640.kra similarity index 100% rename from hp2640.kra rename to assets/hp2640.kra diff --git a/hp2640.png b/assets/hp2640.png similarity index 100% rename from hp2640.png rename to assets/hp2640.png diff --git a/lcd.png b/assets/lcd.png similarity index 100% rename from lcd.png rename to assets/lcd.png diff --git a/pal.png b/assets/pal.png similarity index 100% rename from pal.png rename to assets/pal.png diff --git a/palette.txt b/assets/palette.txt similarity index 100% rename from palette.txt rename to assets/palette.txt diff --git a/shell_mockup.kra b/assets/shell_mockup.kra similarity index 100% rename from shell_mockup.kra rename to assets/shell_mockup.kra diff --git a/smpte_bars.png b/assets/smpte_bars.png similarity index 100% rename from smpte_bars.png rename to assets/smpte_bars.png diff --git a/assets/bootsec_source.js b/assets/src/bootsec_source.js similarity index 100% rename from assets/bootsec_source.js rename to assets/src/bootsec_source.js diff --git a/tsvm-default.gpl b/assets/tsvm-default.gpl similarity index 100% rename from tsvm-default.gpl rename to assets/tsvm-default.gpl diff --git a/assets/tsvm_graphics_mockup.kra b/assets/tsvm_graphics_mockup.kra new file mode 100644 index 0000000..8221676 --- /dev/null +++ b/assets/tsvm_graphics_mockup.kra @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:700ce98519373ea313b8b177c02a2896864d3106f68b48262ff95d16fe382166 +size 402993 diff --git a/tsvm_graphics_mockup2.kra b/assets/tsvm_graphics_mockup2.kra similarity index 100% rename from tsvm_graphics_mockup2.kra rename to assets/tsvm_graphics_mockup2.kra diff --git a/tty.kra b/assets/tty.kra similarity index 100% rename from tty.kra rename to assets/tty.kra diff --git a/tty.png b/assets/tty.png similarity index 100% rename from tty.png rename to assets/tty.png diff --git a/tty_mockup.kra b/assets/tty_mockup.kra similarity index 100% rename from tty_mockup.kra rename to assets/tty_mockup.kra diff --git a/src/net/torvald/tsvm/AppLoader.java b/src/net/torvald/tsvm/AppLoader.java index d3c016c..da3a868 100644 --- a/src/net/torvald/tsvm/AppLoader.java +++ b/src/net/torvald/tsvm/AppLoader.java @@ -22,14 +22,16 @@ public class AppLoader { appConfig.resizable = false; appConfig.title = appTitle; appConfig.forceExit = true; - appConfig.width = 720;//560; - appConfig.height = 375;//448; + appConfig.width = 560; + appConfig.height = 448; // val vm = VM(64.kB(), TheRealWorld(), arrayOf(GenericBios)) - VM vm = new VM(64 << 10, new TheRealWorld(), new VMProgramRom[]{GenericBios.INSTANCE}); //VM vm = new VM(64 << 10, new TheRealWorld(), new VMProgramRom[]{BasicBios.INSTANCE, BasicRom.INSTANCE}); //VM vm = new VM(64 << 10, new TheRealWorld(), new VMProgramRom[]{OEMBios.INSTANCE, BasicRom.INSTANCE}); + + //VM vm = new VM(64 << 10, new TheRealWorld(), new VMProgramRom[]{GenericBios.INSTANCE}); + VM vm = new VM(64 << 10, new TheRealWorld(), new VMProgramRom[]{TBASRelBios.INSTANCE}); new LwjglApplication(new VMGUI(vm, appConfig), appConfig); } diff --git a/src/net/torvald/tsvm/VMGUI.kt b/src/net/torvald/tsvm/VMGUI.kt index e5bb65a..ef6a558 100644 --- a/src/net/torvald/tsvm/VMGUI.kt +++ b/src/net/torvald/tsvm/VMGUI.kt @@ -33,8 +33,8 @@ class VMGUI(val vm: VM, val appConfig: LwjglApplicationConfiguration) : Applicat override fun create() { super.create() - //gpu = GraphicsAdapter(vm, GraphicsAdapter.DEFAULT_CONFIG_COLOR_CRT) - gpu = TexticsAdapter(vm) + gpu = GraphicsAdapter(vm, GraphicsAdapter.DEFAULT_CONFIG_COLOR_CRT) + //gpu = TexticsAdapter(vm) //gpu = CharacterLCDdisplay(vm) vm.peripheralTable[1] = PeripheralEntry( diff --git a/src/net/torvald/tsvm/peripheral/CharacterLCDdisplay.kt b/src/net/torvald/tsvm/peripheral/CharacterLCDdisplay.kt index c9f261d..7302c0a 100644 --- a/src/net/torvald/tsvm/peripheral/CharacterLCDdisplay.kt +++ b/src/net/torvald/tsvm/peripheral/CharacterLCDdisplay.kt @@ -6,11 +6,11 @@ import com.badlogic.gdx.graphics.g2d.SpriteBatch import net.torvald.tsvm.VM class CharacterLCDdisplay(vm: VM) : GraphicsAdapter(vm, AdapterConfig( - "pmlcd_inverted", 960, 400, 80, 25, 249, 255, 262144L, "./lcd.png", 0.7f, TEXT_TILING_SHADER_LCD, DRAW_SHADER_FRAG_LCD + "pmlcd_inverted", 960, 400, 80, 25, 249, 255, 262144L, "lcd.png", 0.7f, TEXT_TILING_SHADER_LCD, DRAW_SHADER_FRAG_LCD ) ) { - private val machine = Texture("./8025_textonly.png") + private val machine = Texture("./assets/8025_textonly.png") override fun peek(addr: Long): Byte? { return when (addr) { diff --git a/src/net/torvald/tsvm/peripheral/GraphicsAdapter.kt b/src/net/torvald/tsvm/peripheral/GraphicsAdapter.kt index e934236..5421cee 100644 --- a/src/net/torvald/tsvm/peripheral/GraphicsAdapter.kt +++ b/src/net/torvald/tsvm/peripheral/GraphicsAdapter.kt @@ -59,7 +59,7 @@ open class GraphicsAdapter(val vm: VM, val config: AdapterConfig, val sgr: Super val channel = it % 4 rgba.shr((3 - channel) * 8).and(255) / 255f } - protected val chrrom0 = Texture(config.chrRomPath) + protected val chrrom0 = Texture("./assets/"+config.chrRomPath) protected val faketex: Texture internal val spriteAndTextArea = UnsafeHelper.allocate(10660L) @@ -1245,11 +1245,11 @@ void main() { val DEFAULT_CONFIG_COLOR_CRT = AdapterConfig( "crt_color", - 560, 448, 80, 32, 254, 255, 256.kB(), "./FontROM7x14.png", 0.32f, TEXT_TILING_SHADER_COLOUR + 560, 448, 80, 32, 254, 255, 256.kB(), "FontROM7x14.png", 0.32f, TEXT_TILING_SHADER_COLOUR ) val DEFAULT_CONFIG_PMLCD = AdapterConfig( "pmlcd_inverted", - 560, 448, 80, 32, 254, 255, 256.kB(), "./FontROM7x14.png", 0.64f, TEXT_TILING_SHADER_LCD, DRAW_SHADER_FRAG_LCD + 560, 448, 80, 32, 254, 255, 256.kB(), "FontROM7x14.png", 0.64f, TEXT_TILING_SHADER_LCD, DRAW_SHADER_FRAG_LCD ) diff --git a/src/net/torvald/tsvm/peripheral/IOSpace.kt b/src/net/torvald/tsvm/peripheral/IOSpace.kt index 34ef993..45a5ebc 100644 --- a/src/net/torvald/tsvm/peripheral/IOSpace.kt +++ b/src/net/torvald/tsvm/peripheral/IOSpace.kt @@ -39,8 +39,9 @@ class IOSpace(val vm: VM) : PeriBase, InputProcessor { private val keyEventBuffers = ByteArray(8) init { - blockTransferPorts[1].attachDevice(TestFunctionGenerator()) - blockTransferPorts[0].attachDevice(TestDiskDrive(vm, 0, File("assets/"))) + //blockTransferPorts[1].attachDevice(TestFunctionGenerator()) + //blockTransferPorts[0].attachDevice(TestDiskDrive(vm, 0, File("assets"))) + blockTransferPorts[0].attachDevice(TestDiskDrive(vm, 0, File("assets/disk0"))) } private fun composeBlockTransferStatus(portno: Int): Int { diff --git a/src/net/torvald/tsvm/peripheral/TTY.kt b/src/net/torvald/tsvm/peripheral/TTY.kt index 1269b4d..036fc9a 100644 --- a/src/net/torvald/tsvm/peripheral/TTY.kt +++ b/src/net/torvald/tsvm/peripheral/TTY.kt @@ -13,7 +13,7 @@ class TTY(val vm: VM) : GlassTty(TEXT_ROWS, TEXT_COLS), PeriBase { const val TEXT_COLS = 80 } - private val chrrom = Texture("./tty.png") + private val chrrom = Texture("./assets/tty.png") private val textBuffer = UnsafeHelper.allocate(TEXT_ROWS * TEXT_COLS * 2L) override var rawCursorPos = 0 diff --git a/src/net/torvald/tsvm/peripheral/TexticsAdapter.kt b/src/net/torvald/tsvm/peripheral/TexticsAdapter.kt index fa4e955..726c01c 100644 --- a/src/net/torvald/tsvm/peripheral/TexticsAdapter.kt +++ b/src/net/torvald/tsvm/peripheral/TexticsAdapter.kt @@ -34,7 +34,7 @@ class TexticsAdapter(vm: VM) : GraphicsAdapter(vm, AdapterConfig( 0.64f )) {*/ - private val crtGradTex = Texture("./crt_grad.png") + private val crtGradTex = Texture("./assets/crt_grad.png") companion object { val crtColor = hashMapOf( diff --git a/src/net/torvald/tsvm/peripheral/VMProgramRom.kt b/src/net/torvald/tsvm/peripheral/VMProgramRom.kt index d0b5c40..40c5f93 100644 --- a/src/net/torvald/tsvm/peripheral/VMProgramRom.kt +++ b/src/net/torvald/tsvm/peripheral/VMProgramRom.kt @@ -65,5 +65,24 @@ object BasicRom : VMProgramRom { contents.toString(VM.CHARSET) } + override fun get(addr: Int): Byte = contents[addr] +} + +object TBASRelBios : VMProgramRom { + private val contents: ByteArray + + init { + val bytes = File("./assets/bios/tbasdist.js").readBytes() + contents = bytes.sliceArray(0 until minOf(65536, bytes.size)) + } + + override fun readAll(): String { + // check if bios is compressed in gzip + return if (contents.startsWith(GZIP_HEADER)) + CompressorDelegate.decomp(contents).toString(VM.CHARSET) + else + contents.toString(VM.CHARSET) + } + override fun get(addr: Int): Byte = contents[addr] } \ No newline at end of file diff --git a/tsvm_graphics_mockup.kra b/tsvm_graphics_mockup.kra deleted file mode 100644 index 4721352..0000000 Binary files a/tsvm_graphics_mockup.kra and /dev/null differ