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~
context.inbuffer = [];
context.outbuffer = '';
context.outbuffer = [];
if (!globalObj.write) {
function AddMeta(name, content) {
var meta = document.createElement('meta');
@ -242,8 +242,15 @@ if (!globalObj.write) {
window.onkeydown = KeyDown;
context.Update = function(active) {
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);
context.Clear();
}
@ -260,12 +267,12 @@ r|
for (var i = 0; i < n; ++i) {
var ch = u8[a + i];
if (ch == 12) {
context.outbuffer = '';
context.outbuffer = [];
} else if (ch == 8) {
context.outbuffer = context.outbuffer.slice(0, -1);
} else if (ch == 13) {
} else {
context.outbuffer += String.fromCharCode(ch);
context.outbuffer.push(ch);
}
}
context.Update();

View File

@ -55,18 +55,33 @@ function Call(sp) {
}
function Load(addr, content) {
for (var i = 0; i < content.length; ++i) {
u8[addr++] = content.charCodeAt(i);
if (globalObj.write) {
for (var i = 0; i < content.length; ++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;
}
function GetString(a, n) {
var ret = '';
for (var i = 0; i < n; ++i) {
ret += String.fromCharCode(u8[a + i]);
if (globalObj.write) {
var ret = '';
for (var i = 0; i < n; ++i) {
ret += String.fromCharCode(u8[a + i]);
}
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);
}
return ret;
}
function CELL_ALIGNED(n) { return (n + 3) & ~3; }