Improve web version.
This commit is contained in:
10
Makefile
10
Makefile
@ -238,6 +238,14 @@ $(GEN)/web_cases.js: $(GEN)/dump_web_opcodes | $(GEN)
|
|||||||
$(GEN)/web_dict.js: $(GEN)/dump_web_opcodes | $(GEN)
|
$(GEN)/web_dict.js: $(GEN)/dump_web_opcodes | $(GEN)
|
||||||
$< dict >$@
|
$< dict >$@
|
||||||
|
|
||||||
|
WEB_BOOT = $(COMMON_PHASE1) \
|
||||||
|
posix/posix.fs posix/allocation.fs posix/termios.fs \
|
||||||
|
$(COMMON_PHASE2) \
|
||||||
|
posix/autoboot.fs \
|
||||||
|
common/fini.fs
|
||||||
|
$(GEN)/web_boot.js: common/source_to_string.js $(WEB_BOOT) | $(GEN)
|
||||||
|
$< -web boot $(VERSION) $(REVISION) $(WEB_BOOT) >$@
|
||||||
|
|
||||||
# ---- RESOURCES ----
|
# ---- RESOURCES ----
|
||||||
|
|
||||||
$(RES):
|
$(RES):
|
||||||
@ -283,7 +291,7 @@ $(WEB)/terminal.html: web/terminal.html | $(WEB)
|
|||||||
$(WEB)/ueforth.js: \
|
$(WEB)/ueforth.js: \
|
||||||
web/fuse_web.js \
|
web/fuse_web.js \
|
||||||
web/web.template.js \
|
web/web.template.js \
|
||||||
common/boot.fs \
|
$(GEN)/web_boot.js \
|
||||||
$(GEN)/web_dict.js \
|
$(GEN)/web_dict.js \
|
||||||
$(GEN)/web_cases.js | $(WEB)
|
$(GEN)/web_cases.js | $(WEB)
|
||||||
$^ >$@
|
$^ >$@
|
||||||
|
|||||||
@ -31,12 +31,17 @@ function DropCopyright(source) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var is_windows = false;
|
var is_windows = false;
|
||||||
|
var is_web = false;
|
||||||
|
|
||||||
var args = process.argv.slice(2);
|
var args = process.argv.slice(2);
|
||||||
if (args.length > 0 && args[0] == '-win') {
|
if (args.length > 0 && args[0] == '-win') {
|
||||||
is_windows = true;
|
is_windows = true;
|
||||||
args.shift();
|
args.shift();
|
||||||
}
|
}
|
||||||
|
if (args.length > 0 && args[0] == '-web') {
|
||||||
|
is_web = true;
|
||||||
|
args.shift();
|
||||||
|
}
|
||||||
var name = args.shift();
|
var name = args.shift();
|
||||||
var version = args.shift();
|
var version = args.shift();
|
||||||
var revision = args.shift();
|
var revision = args.shift();
|
||||||
@ -55,6 +60,8 @@ if (is_windows) {
|
|||||||
source = source.replace(/["] ["]/g, '');
|
source = source.replace(/["] ["]/g, '');
|
||||||
source = source.replace(/["] [(] ([^)]*)[)] ["]/g, '// $1');
|
source = source.replace(/["] [(] ([^)]*)[)] ["]/g, '// $1');
|
||||||
source = 'const char ' + name + '[] =\n' + source + ';\n';
|
source = 'const char ' + name + '[] =\n' + source + ';\n';
|
||||||
|
} else if (is_web) {
|
||||||
|
source = 'const ' + name + ' = `\n' + source + '`;\n';
|
||||||
} else {
|
} else {
|
||||||
source = 'const char ' + name + '[] = R"""(\n' + source + ')""";\n';
|
source = 'const char ' + name + '[] = R"""(\n' + source + ')""";\n';
|
||||||
}
|
}
|
||||||
|
|||||||
@ -33,9 +33,9 @@ cases = ReplaceAll(cases, 'DROP', 'tos = *sp--');
|
|||||||
cases = ReplaceAll(cases, 'DUP', '*++sp = tos');
|
cases = ReplaceAll(cases, 'DUP', '*++sp = tos');
|
||||||
cases = ReplaceAll(cases, 'tos += *sp--', 'tos = (tos + *sp)|0; --sp');
|
cases = ReplaceAll(cases, 'tos += *sp--', 'tos = (tos + *sp)|0; --sp');
|
||||||
cases = ReplaceAll(cases, /tos (.)= /, 'tos = tos $1 ');
|
cases = ReplaceAll(cases, /tos (.)= /, 'tos = tos $1 ');
|
||||||
cases = ReplaceAll(cases, /[*](.)p[+][+]/, '*$1p; ++$1p');
|
cases = ReplaceAll(cases, /[*](.)p[+][+]/, '*$1p, ++$1p');
|
||||||
cases = ReplaceAll(cases, /[*](.)p[-][-]/, '*$1p; --$1p');
|
cases = ReplaceAll(cases, /[*](.)p[-][-]/, '*$1p, --$1p');
|
||||||
cases = ReplaceAll(cases, /[*][+][+](.)p/, '++$1p; *$1p');
|
cases = ReplaceAll(cases, /[*][+][+](.)p/, '++$1p, *$1p');
|
||||||
cases = ReplaceAll(cases, '*(cell_t *) tos = ', 'i32[tos>>2] = ');
|
cases = ReplaceAll(cases, '*(cell_t *) tos = ', 'i32[tos>>2] = ');
|
||||||
cases = ReplaceAll(cases, '*(int32_t *) tos = ', 'i32[tos>>2] = ');
|
cases = ReplaceAll(cases, '*(int32_t *) tos = ', 'i32[tos>>2] = ');
|
||||||
cases = ReplaceAll(cases, '*(uint8_t *) tos = ', 'u8[tos] = ');
|
cases = ReplaceAll(cases, '*(uint8_t *) tos = ', 'u8[tos] = ');
|
||||||
|
|||||||
@ -19,9 +19,7 @@
|
|||||||
const HEAP_SIZE = (1024 * 1024);
|
const HEAP_SIZE = (1024 * 1024);
|
||||||
const STACK_CELLS = 4096;
|
const STACK_CELLS = 4096;
|
||||||
|
|
||||||
const boot = `
|
|
||||||
{{boot}}
|
{{boot}}
|
||||||
`;
|
|
||||||
|
|
||||||
var heap = new ArrayBuffer(HEAP_SIZE);
|
var heap = new ArrayBuffer(HEAP_SIZE);
|
||||||
var i32 = new Int32Array(heap);
|
var i32 = new Int32Array(heap);
|
||||||
|
|||||||
Reference in New Issue
Block a user