Files
Landon Curt Noll 09750f8899 release winning entries of IOCCC28 under the year 2024
Congratulations to:

* 2024/anders - Prize in sound coding - layered music generator
* 2024/burton - Prize in pentagrammatology - wordle hard mode solver
* 2024/cable1 - Prize in bot talk - LLM inference engine
* 2024/cable2 - Prize in murky waters - salmon recipe
* 2024/carlini - Prize in perfect timing - Intel 4004 emulation
* 2024/codemeow - Prize in tray planting - bonsai generator
* 2024/endoh1 - Prize in patient pointillism - slow ray tracer in CPP
* 2024/endoh2 - Prize in solid body physics - rotating rigid body simulation
* 2024/ferguson1 - Prize in diabolical logistics - Oregon trail pact with the devil
* 2024/ferguson2 - Prize in yil-tas - Navajo code talker translator
* 2024/howe - Nice accent eh-ward - mini vi
* 2024/kramer - Prize in linguistic arithmetic - natural language numerical calculator
* 2024/kurdyukov1 - Prize in phased periodicity - phase of the Moon
* 2024/kurdyukov2 - Prize in art restoration - JPEG artifact removal
* 2024/kurdyukov3 - Prize in virtual quietus - gaming VM and doom
* 2024/kurdyukov4 - Prize in embiggening - encode without literals
* 2024/maffiodo - Prize in creative interpretation - Jav\*script interpreter
* 2024/mills - Prize in ℤ₃ - Infocom v3 story interpreter
* 2024/stedolan - Best one liner - icon from MD5
* 2024/straadt - Prize in imitative rebooting - OpenRISC CPU and Linux
* 2024/tmarrec - Prize in cyclonic coding - 3D tornado simulation
* 2024/tompng - Prize in quasi bijection - vortex encryptor decryptor
* 2024/weaver - Sur prize - rickroll

Ran `make update` to perform the above.
 	new file:   2024/burton/.entry.json
2025-08-02 14:43:07 -07:00

177 lines
6.8 KiB
HTML

<!DOCTYPE html>
<html><head><meta charset=utf-8><title>OGVM</title></head>
<body><div id=main align=center>
<button id=start onclick="fstart()">Start</button>
<input id=cmd type=text value="test.bin 7 8 9"></input>
<select id=sel><option>[files]</option></select>
<button id=save onclick="fsave()">Save</button><br>
<div id=status>You need to enable JavaScript to run this app.</div><br>
<textarea id=out cols=80 rows=24 readonly style="resize: none;"></textarea>
</div><script>
var id=i=>document.getElementById(i);
var fl=[],fi=[],fr=(p,c,e)=>{
var n=p.substring(p.lastIndexOf('/')+1);
if(fl[n])c(fl[n].a);
else if(fi[n])e(); else fetch(p).then(r=>{
if(r.ok)r.arrayBuffer().then(f=>c(fa(n,f,'fetch')));
else fi[n]=1,e(); });
};
var fa=(n,x,t)=>{
var a=new Uint8Array(x),i=a.length,f=0; if(!fl[n]){
fl[n]={}; var o=fl[n].o=document.createElement('option');
o.value=n; id('sel').appendChild(o); }
for(;i>999;f++)i/=1e3;
fl[n].o.text=n+' ('+t+', '+i.toFixed(!!f)+' '+'kmgt'.charAt(f-1)+'B)';
out("!!! \""+n+"\" added from "+t+"\n");
return fl[n].a=a;
};
var hex=a=>'0x'+(a>>>0).toString(16).padStart(8,'0');
var out=a=>id('out').innerHTML+=a;
id('status').innerHTML='';
function fsave(){
var n=id('sel'),a=n.selectedIndex;
if(a>0){
n=n.options[a].value; a=document.createElement('a');
a.href=window.URL.createObjectURL(new Blob([fl[n].a],{type:'application/unknown'}));
a.download=n; a.click();
}
}
var y=0,z,W,D,I,f,a,b,c,d,n,b1=null,k=(1<<24)-1,m=null,cc=[];
var so=(c,b)=>c<0?-1:(out(String.fromCharCode(b)),b-10?b:(b1=b,setTimeout(vm,0),null));
var Z=(c,b)=>-1,h=[Z,so,so,Z,Z,Z,Z,Z],H=[],s=[];
var sr=(c,b)=>(f=H[c&7],c<0&&f.i<f.x.length?f.x[f.i++]:-1);
var sw=(c,b)=>{ f=H[c&7]; if(c<0||f.i>f.l)return -1;
if(f.i==f.l&&!(f.l++&65535))f.a[f.l>>16]=new Uint8Array(1<<16);
f.a[f.i>>16][f.i&65535]=b; f.i++; return b; };
var nm=()=>{ var i=0,n='',x; while(x=s[i++])n+=String.fromCharCode(x); return n; };
var E,xl={},e1=a=>(e=>{if(m){
var n=e.key; n.length==1?E.push([a,n.charCodeAt(0)]):
xl[n]?E.push([a,xl[n]]):out('Key '+n+(a?' up\n':' down\n'));
e.preventDefault(); } } );
for(a=1;a<25;a++)xl['F'+a]=a+0xffbd; b=[9,13,27,81,82,83,84,226,228,234];
'Tab Enter Escape ArrowLeft ArrowUp ArrowRight ArrowDown Shift Control Alt'.
split(' ').forEach(n=>xl[n]=b.shift()+0xff00);
f=document.addEventListener; /*id('main')*/
['dragenter','dragover','dragleave'].forEach(n=>
f(n,e=>{ e.preventDefault(); e.stopPropagation(); },false));
f('drop',e=>
[...e.dataTransfer.files].forEach(f=>{
n=new FileReader();
n.onload=e=>fa(f.name,e.target.result,'drop');
n.readAsArrayBuffer(f);
}),false);
f('keydown',e1(0),false); f('keyup',e1(1),false);
function fstart(){
f=id('cmd').value.trim().split(/\s+/);
if(!m&&f.length)fr(f[0],x=>{ b=x.length;
f.forEach(e=>b+=e.length+1);
d=new Uint8Array(c=b-1); d.set(x,0);
f.forEach(e=>{ --b; for(m=e.length; m; )d[--b]=e.charCodeAt(--m); } );
E=[]; m=new Uint32Array(k+16); cc=[];
for(b=0; b<=k&&b<c; b++)m[b>>2]+=d[b]<<b%4*8;
a=2; d=1; b1=b; setTimeout(vm,0);
id('start').disabled=id('cmd').disabled=true;
id('out').innerHTML='';
},e=>out("!!! fetch failed\n"));
}
var sc=[
(c,b)=>{ f=m[n=m[0]-4&k];
if(f>>14)out('bad opcode at '+hex(n*4)+': '+hex(f)+'\n');
else out('exit code: '+c+' ('+hex(c)+'), rtmp: '+m[1]+' ('+hex(m[1])+')\n');
if(y)id('status').removeChild(W); y=0;
id('start').disabled=id('cmd').disabled=false; return b1=m=null; },
(c,b)=>h[c&7](c,b),
(c,b)=>new Date().getTime(),
(c,b)=>(setTimeout(vm,b1=b),null),
(c,b)=>(s[c&31]=b&&b-48>9&&(b|32)-97>25&&b-46?95:b,b),
(c,b)=>{ c&=7;
if(h[c]==Z){ n=nm();
if(b){ h[c]=sw; H[c]={n:n,l:0,i:0,a:[]}; return 0; }
b1=1; setTimeout(()=>fr(n,a=>{ b1=0; h[c]=sr; H[c]={i:0,x:a}; vm(); },vm),0); return null;
}
if(h[c]==sw){
f=H[c]; n=0; b=new Uint8Array(f.l);
f.a.forEach(a=>{ b.set(a.slice(0,Math.min(f.l-n,a.length)),n); n+=a.length; });
fa(f.n,b,'app');
}
h[c]=Z; H[c]=null; return 1; },
(c,b)=>(f=H[c&7],f?c<0?f.i:(f.i=(c<8?0:c<16?f.i:f.x.length)+(b|0),0):-1),
(c,b)=>{
if(!(y||~(-c&-b)>>12)){
W=document.createElement('canvas');
W.width=y=c; W.height=z=b; D=W.getContext('2d');
id('status').appendChild(W); I=D.createImageData(y,z);
} return y?new Int8Array(new Int16Array([768]).buffer)[0]+4:0; },
(c,b)=>{ n=E.shift(); if(n){ m[1]=n[1]; return n[0]; }
setTimeout(()=>{ b1=n?(m[1]=n[1],n[0]):2; vm(); },0); return null; },
(c,b)=>{ b&=k;
if(y&&b+y*z<k){
I.data.set(new Uint8ClampedArray(m.slice(b,b+y*z).buffer),0);
D.putImageData(I,0,0); b1=b; setTimeout(vm,0); return null;
} return b; },
(c,b)=>b?cc=[]:0,b];
a=x=>{
f='d=x>>2&k;m[d]=x&2?x&1?\n';
for(var i=4; i--; f+='\n') {
n=-1>>>x*8; c=i*8; b=~(n<<c); d=b?'m[d]&'+b+'|b':'b';
if(c)d+='<<'+c; if(i-x<0)d+='&'+(n<<c);
c=32-c;
if(i&&(b=n>>>c))d='(m[d+1]=m[d+1]&'+~b+'|b>>>'+c+(x?'&'+b:'')+','+d+')';
f+=d+(i?i-2?':':':x&1?':';');
}
return new Function('x',f);
}
var w0=a(0),w1=a(1),w2=a(2),w3=a(3),rm=x=>(n=x>>2&k,x&2?x&1?(m[n]>>>24|m[n+1]<<8)>>>0:
(m[n]>>>16|m[n+1]<<16)>>>0:x&1?(m[n]>>>8|m[n+1]<<24)>>>0:m[n]);
var ti='+ - | ^ & * / % << >> == != < <= > >= |0) &65535) <<16)>>16) &255) <<24)>>24)'.split(' ');
function vm(){
var s,X,x,i; b=b1;
if(a-2){ n=a&127; if(n){ d=n>2?m[d&k]+n-65:d;
d=(n-2?(c=d*8&24,d>>2):(c=0,d))&k; n=-1>>>(a>>4&24);
m[d]=(m[d]|n<<c)^(~b&n)<<c; if(c)c=32-c,m[d+1]=(m[d+1]|n>>>c)^(~b&n)>>>c;
} else m[0]+=b?d:0; } else m[d&k]=b;
for(;;){ X=(x=m[0])&k;
if(cc[X]){ if(cc[X]())return; } else{
s='';
for(i=1; i&&++i<20; s+='\n') {
a=m[d=x&k]; x+=4;
if(a==1<<28&&m[d+1]+m[d+2]|0){ x+=m[d+3]; break; }
for(i=0; i<2; i++, a>>=7) {
c=b; b=m[++d]; n=a&127; f=b&k?'m['+(b&k)+']':x;
b=n?n>1?n>2?'rm('+f+(n-65?'+'+(n-65):'')+')':f:b&3?'rm('+b+')':(n=b>>2&k)?'m['+n+']':x:''+b;
}
d=m[d+1]; n=a>>9;
if(n>=32&&n<128){
if(n>47)f=n-80&-48?'(':'((',b=f+b,c=f+c,f=ti[(n>>4)+13],b+=f,c+=f;
b=(n-37&-17?c+(n-41?ti[n&15]:'>>>')+b:Math.imul?'Math.imul('+c+','+b+')':
(s+='b='+b+';c='+c+';',b='(c&8191)*b+((c&-8192)*b|0)'))+(n-6&15?'':'|0');
} else{
i=0; s+='m[0]='+x+';';
s+='b=sc['+(n<11?n:0)+']('+c+'|0,'+b+');if(b==null){a='+(a&511)+';d='+d+';return 1;}';
b='b';
}
f=a&127; a=a>>7&3;
switch(f){
case 0:i=0; s+='m[0]='+b+((n&15)<6?'|0?':'?')+(x+d|0)+':'+x+';'; break;
case 1:s+='b='+b+';w'+a+'('+d+');'; break;
case 2:i=(d&=k)?i:0; s+=f='m['+d+']';
if(a)n=-1>>>a*8,s+='='+(d?f:x)+'&'+~n+'|('+b+')&'+n+';'; else s+='='+b+';'; break;
default:s+='b='+b+';w'+a+'(m['+(d&k)+(f-65?']+'+(f-65):']')+');'; break;
}
}
if(i)s+='m[0]='+x+';';
s+='return 0;';
//alert('at '+hex(X*4)+':\n'+s);
cc[X]=new Function(s); }
}
}
</script></body></html>