-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathkj.html
More file actions
94 lines (81 loc) · 2.08 KB
/
Copy pathkj.html
File metadata and controls
94 lines (81 loc) · 2.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<!DOCTYPE html>
<head><meta charset="utf-8">
<link rel=icon href="kelas16.png">
<title>k/js</title>
<style>
textarea{
position:absolute;left:5px;top:5px;width:calc(100vw - 10px);height:calc(100vh - 10px);
border:none;font-family:monospace;resize:none;outline:0px;overflow:hidden;
}
</style>
<script src="kj.js"></script>
</head>
<body>
<textarea id="tty" autocomplete="off" spellcheck="false" autocorrect="off"></textarea>
<script>
function pd(e){if(e){e.preventDefault();e.stopPropagation()}};
function ge(x){return document.getElementById(x)}
function us(s){return _te.encode(s)};_te=new TextEncoder("utf8")
function su(u){return _td.decode(u)};_td=new TextDecoder("utf8")
window.onerror=function(m,s,l,c,e){tty.value+=s+m+"\n"}
let tty=ge("tty")
tty.value = ""
let keydown=function(e){
if("Enter"==e.key){pd(e);
let v=tty.value
let p=tty.selectionEnd
let n=v.slice(p).indexOf("\n")
if(n>=0)v=v.slice(0,p+n)
tty.value=v
let i=v.lastIndexOf("\n")
let s=((i<0)?v:v.slice(i)).trim()
if(!s.length)return
evl(s); tty.scrollTop=tty.scrollHeight;
}}
tty.onkeydown=keydown
tty.focus()
function out(s){tty.value+=s;tty.scrollTop=tty.scrollHeight;}
function evl(s){out("\n");if(!special(s))try_(ku(us(s)));out(" ") }
// k system interface
let fs=[],_fbuf
const ku=u=>{let r=mk(18,u.length);_I8.set(u,_IK(r));return r}
const sk=(x,n)=>{return su(new Uint8Array(_I8.subarray(x,x+n)))}
const Write=(f,nf,src,n)=>{
if(nf==0){out(sk(src,n));return 0}
let name=sk(f,nf)
fs[name]=_I8.slice(src,src+n)
return 0;
}
const Read=(f,n,dst)=>{
if(dst!=0){_I8.set(_fbuf,dst);return 0;}
let name=sk(f,n)
if(name in fs){_fbuf=fs[name];return _fbuf.length};
return -1;
}
// k main
init()
kinit()
write(Ku(2932601077199979n))
store()
out(" ")
function special(s){
switch(s){
case "\\":
case "\\h": out("\\t (test)\n"); break;
case "\\t": ktest(); break
default: return false;
}
return true
}
function ktest(){
let k=ku(us("k.t"))
fetch("k.t").then(r=>r.text()).then(s=>{
let t=ku(us(s))
let t0=performance.now()
dofile(k,t)
let dt=performance.now()-t0
out(dt+"ms\n ")
})
}
</script>
</body></html>