Some refinement towards unicode on web.

This commit is contained in:
Brad Nelson
2022-08-02 22:37:29 -07:00
parent 243087aee1
commit 23c0f4ec98
2 changed files with 32 additions and 10 deletions

View File

@ -29,7 +29,7 @@ r|
r~ r~
context.inbuffer = []; context.inbuffer = [];
context.outbuffer = ''; context.outbuffer = [];
if (!globalObj.write) { if (!globalObj.write) {
function AddMeta(name, content) { function AddMeta(name, content) {
var meta = document.createElement('meta'); var meta = document.createElement('meta');
@ -242,8 +242,15 @@ if (!globalObj.write) {
window.onkeydown = KeyDown; window.onkeydown = KeyDown;
context.Update = function(active) { context.Update = function(active) {
var cursor = String.fromCharCode(0x2592); var cursor = String.fromCharCode(0x2592);
context.terminal.innerText = context.outbuffer + cursor; context.terminal.innerText = new TextDecoder('utf-8').decode(
new Uint8Array(context.outbuffer)) + cursor;
}; };
window.addEventListener('paste', function(e) {
var data = new TextEncoder().encode(e.clipboardData.getData('text'));
for (var i = 0; i < data.length; ++i) {
context.inbuffer.push(data[i]);
}
});
setMode(0); setMode(0);
context.Clear(); context.Clear();
} }
@ -260,12 +267,12 @@ r|
for (var i = 0; i < n; ++i) { for (var i = 0; i < n; ++i) {
var ch = u8[a + i]; var ch = u8[a + i];
if (ch == 12) { if (ch == 12) {
context.outbuffer = ''; context.outbuffer = [];
} else if (ch == 8) { } else if (ch == 8) {
context.outbuffer = context.outbuffer.slice(0, -1); context.outbuffer = context.outbuffer.slice(0, -1);
} else if (ch == 13) { } else if (ch == 13) {
} else { } else {
context.outbuffer += String.fromCharCode(ch); context.outbuffer.push(ch);
} }
} }
context.Update(); context.Update();

View File

@ -55,18 +55,33 @@ function Call(sp) {
} }
function Load(addr, content) { function Load(addr, content) {
if (globalObj.write) {
for (var i = 0; i < content.length; ++i) { for (var i = 0; i < content.length; ++i) {
u8[addr++] = content.charCodeAt(i); u8[addr++] = content.charCodeAt(i);
} }
} else {
var data = new TextEncoder().encode(content);
for (var i = 0; i < data.length; ++i) {
u8[addr++] = data[i];
}
}
return addr; return addr;
} }
function GetString(a, n) { function GetString(a, n) {
if (globalObj.write) {
var ret = ''; var ret = '';
for (var i = 0; i < n; ++i) { for (var i = 0; i < n; ++i) {
ret += String.fromCharCode(u8[a + i]); ret += String.fromCharCode(u8[a + i]);
} }
return ret; return ret;
} else {
var data = new Uint8Array(n);
for (var i = 0; i < n; ++i) {
data[i] = u8[a + i];
}
return new TextDecoder('utf-8').decode(data);
}
} }
function CELL_ALIGNED(n) { return (n + 3) & ~3; } function CELL_ALIGNED(n) { return (n + 3) & ~3; }