From 21f80a3a7ed069c00c607a00a02d138efe61def5 Mon Sep 17 00:00:00 2001 From: Leon van Kammen Date: Fri, 28 Jun 2024 09:23:02 +0200 Subject: [PATCH] main: work in progress [might break] --- .gitmodules | 4 + com/isoterminal.js | 37 +- com/isoterminal/bios/seabios.bin | Bin 0 -> 131072 bytes com/isoterminal/bios/vgabios.bin | Bin 0 -> 36352 bytes com/isoterminal/browser-vm | 1 + com/isoterminal/libv86.js | 628 +++++++++++++++++++++++++++++++ com/isoterminal/v86.wasm | Bin 0 -> 1166162 bytes com/isoterminal/xrsh.iso | Bin 0 -> 6156288 bytes 8 files changed, 663 insertions(+), 7 deletions(-) create mode 100644 .gitmodules create mode 100644 com/isoterminal/bios/seabios.bin create mode 100644 com/isoterminal/bios/vgabios.bin create mode 160000 com/isoterminal/browser-vm create mode 100644 com/isoterminal/libv86.js create mode 100644 com/isoterminal/v86.wasm create mode 100644 com/isoterminal/xrsh.iso diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..1760e68 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,4 @@ +[submodule "com/isoterminal/browser-vm"] + path = com/isoterminal/browser-vm + url = git@github.com:coderofsalvation/browser-vm + branch = dev diff --git a/com/isoterminal.js b/com/isoterminal.js index 38b0d52..460aef8 100644 --- a/com/isoterminal.js +++ b/com/isoterminal.js @@ -15,7 +15,8 @@ AFRAME.registerComponent('isoterminal', { winboxcss: "https://unpkg.com/winbox@0.2.82/dist/css/winbox.min.css", // xtermcss: "https://unpkg.com/xterm@3.12.0/dist/xterm.css", xtermjs: "https://unpkg.com/xterm@3.12.0/dist/xterm.js", - axterm: "https://unpkg.com/aframe-xterm-component/aframe-xterm-component.js" + v86: "com/isoterminal/libv86.js" + //axterm: "https://unpkg.com/aframe-xterm-component/aframe-xterm-component.js" }, dom: { @@ -28,7 +29,8 @@ AFRAME.registerComponent('isoterminal', { }` }, - createTerminal: async function(dom){ + createTerminal: async function(instance){ + const dom = instance.dom let s = await AFRAME.utils.require(this.requires) //this.el.object3D.visible = true @@ -40,11 +42,10 @@ AFRAME.registerComponent('isoterminal', { cols: this.data.cols, fontSize: 16 }) - debugger term.open(dom) this.canvas = dom.querySelector('.xterm-text-layer') - this.canvas.id = 'terminal-' + (terminalInstance++) + this.canvas.id = 'terminal-' + instance.uid this.canvasContext = this.canvas.getContext('2d') this.cursorCanvas = dom.querySelector('.xterm-cursor-layer') @@ -65,6 +66,28 @@ AFRAME.registerComponent('isoterminal', { const message = 'Hello from \x1B[1;3;31mWebVR\x1B[0m !\r\n$ ' term.write(message) + + this.runISO() + }, + + runISO: function(){ + console.dir(this.canvas) + var emulator = window.emulator = new V86({ + wasm_path: "com/isoterminal/v86.wasm", + memory_size: 32 * 1024 * 1024, + vga_memory_size: 2 * 1024 * 1024, + screen_container: this.canvas, + bios: { + url: "com/isoterminal/bios/seabios.bin", + }, + vga_bios: { + url: "com/isoterminal/bios/vgabios.bin", + }, + cdrom: { + url: "com/isoterminal/xrsh.iso", + }, + autostart: true, + }); }, events:{ @@ -93,12 +116,12 @@ AFRAME.registerComponent('isoterminal', { instance.object3D.quaternion.copy( AFRAME.scenes[0].camera.quaternion ) // face towards camera const setupWindow = () => { - this.createTerminal(instance.dom) + this.createTerminal(instance) const com = instance.components['isoterminal'] instance.dom.style.display = 'none' new WinBox("Hello World",{ - width: window.innerWidth*0.8, - height: window.innerHeight*0.8, + width: window.innerWidth*0.5, + height: window.innerHeight*0.5, x:"center", y:"center", id: instance.uid, // important hint for html-mesh diff --git a/com/isoterminal/bios/seabios.bin b/com/isoterminal/bios/seabios.bin new file mode 100644 index 0000000000000000000000000000000000000000..8c9ab8ffea3b4e4d5fbbbe63a43ceaf2dcb501c7 GIT binary patch literal 131072 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 XXF)C0~anmJ~f>Ryi?;uI@6PxnQ0BL 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 aCyd8G;2}oCz7S`}jXDMM=llN|9Qa?e%JH)R literal 0 HcmV?d00001 diff --git a/com/isoterminal/browser-vm b/com/isoterminal/browser-vm new file mode 160000 index 0000000..17d2200 --- /dev/null +++ b/com/isoterminal/browser-vm @@ -0,0 +1 @@ +Subproject commit 17d220089c147a75b9d5adb733b10959ccf64e87 diff --git a/com/isoterminal/libv86.js b/com/isoterminal/libv86.js new file mode 100644 index 0000000..e7d92c9 --- /dev/null +++ b/com/isoterminal/libv86.js @@ -0,0 +1,628 @@ +;(function(){'use strict';function ba(a,b){function c(x){x=x.toString(16);return"#"+"0".repeat(6-x.length)+x}function d(x,C,S,P){x.style.width="";x.style.height="";P&&(x.style.transform="");var aa=x.getBoundingClientRect();P?x.style.transform=(1===C?"":" scaleX("+C+")")+(1===S?"":" scaleY("+S+")"):(0===C%1&&0===S%1?(e.style.imageRendering="crisp-edges",e.style.imageRendering="pixelated",e.style["-ms-interpolation-mode"]="nearest-neighbor"):(e.style.imageRendering="",e.style["-ms-interpolation-mode"]=""),P=window.devicePixelRatio|| +1,0!==P%1&&(C/=P,S/=P));1!==C&&(x.style.width=aa.width*C+"px");1!==S&&(x.style.height=aa.height*S+"px")}console.assert(a,"1st argument must be a DOM container");var e=a.getElementsByTagName("canvas")[0],g=e.getContext("2d",{alpha:!1}),f=a.getElementsByTagName("div")[0],k=document.createElement("div"),l,m,n=1,p=1,t=1,q,z=!1,w,u,I,U=!1,ca=this;a=new Uint16Array([8962,199,252,233,226,228,224,229,231,234,235,232,239,238,236,196,197,201,230,198,244,246,242,251,249,255,214,220,162,163,165,8359,402,225, +237,243,250,241,209,170,186,191,8976,172,189,188,161,171,187,9617,9618,9619,9474,9508,9569,9570,9558,9557,9571,9553,9559,9565,9564,9563,9488,9492,9524,9516,9500,9472,9532,9566,9567,9562,9556,9577,9574,9568,9552,9580,9575,9576,9572,9573,9561,9560,9554,9555,9579,9578,9496,9484,9608,9604,9612,9616,9600,945,223,915,960,931,963,181,964,934,920,937,948,8734,966,949,8745,8801,177,8805,8804,8992,8993,247,8776,176,8729,183,8730,8319,178,9632,160]);for(var Bb=new Uint16Array([32,9786,9787,9829,9830,9827,9824, +8226,9688,9675,9689,9794,9792,9834,9835,9788,9658,9668,8597,8252,182,167,9644,8616,8593,8595,8594,8592,8735,8596,9650,9660]),Sa=[],eb,sa=0;256>sa;sa++)eb=126sa?Bb[sa]:sa,Sa[sa]=String.fromCharCode(eb);g.imageSmoothingEnabled=!1;k.style.position="absolute";k.style.backgroundColor="#ccc";k.style.width="7px";k.style.display="inline-block";f.style.display="block";e.style.display="none";this.bus=b;b.register("screen-set-mode",function(x){this.set_mode(x)},this);b.register("screen-fill-buffer-end", +function(x){this.update_buffer(x)},this);b.register("screen-put-char",function(x){this.put_char(x[0],x[1],x[2],x[3],x[4])},this);b.register("screen-update-cursor",function(x){this.update_cursor(x[0],x[1])},this);b.register("screen-update-cursor-scanline",function(x){this.update_cursor_scanline(x[0],x[1])},this);b.register("screen-clear",function(){this.clear_screen()},this);b.register("screen-set-size-text",function(x){this.set_size_text(x[0],x[1])},this);b.register("screen-set-size-graphical",function(x){this.set_size_graphical(x[0], +x[1],x[2],x[3])},this);this.init=function(){this.set_size_text(80,25);this.timer()};this.make_screenshot=function(){const x=new Image;if(z)x.src=e.toDataURL("image/png");else{const C=[9,16],S=document.createElement("canvas");S.width=u*C[0];S.height=I*C[1];const P=S.getContext("2d");P.imageSmoothingEnabled=!1;P.font=window.getComputedStyle(f).font;P.textBaseline="top";for(let aa=0;aaC;)f.removeChild(f.firstChild);for(;f.childNodes.length=x&&2*x{g.putImageData(C.image_data,C.screen_x-C.buffer_x,C.screen_y-C.buffer_y,C.buffer_x,C.buffer_y,C.buffer_width,C.buffer_height)})};this.init()};const da=["shared","exclusive","unlock"]; +function ea(a,b,c){this.fs=a;this.bus=c;this.configspace_tagname=[104,111,115,116,57,112];this.configspace_taglen=this.configspace_tagname.length;this.VERSION="9P2000.L";this.msize=this.BLOCKSIZE=8192;this.replybuffer=new Uint8Array(2*this.msize);this.replybuffersize=0;this.fids=[];this.virtio=new h(b,{name:"virtio-9p",pci_id:48,device_id:4169,subsystem_device_id:9,common:{initial_port:43008,queues:[{size_supported:32,notify_offset:0}],features:[0,32,29,28],on_driver_ok:()=>{}},notification:{initial_port:43264, +single_handler:!1,handlers:[d=>{if(0===d){for(;this.virtqueue.has_request();)d=this.virtqueue.pop_request(),this.ReceiveRequest(d);this.virtqueue.notify_me_after(0)}}]},isr_status:{initial_port:42752},device_specific:{initial_port:42496,struct:[{bytes:2,name:"mount tag length",read:()=>this.configspace_taglen,write:()=>{}}].concat(r.range(254).map(d=>({bytes:1,name:"mount tag name "+d,read:()=>this.configspace_tagname[d]||0,write:()=>{}})))}});this.virtqueue=this.virtio.queues[0]} +ea.prototype.get_state=function(){var a=[];a[0]=this.configspace_tagname;a[1]=this.configspace_taglen;a[2]=this.virtio;a[3]=this.VERSION;a[4]=this.BLOCKSIZE;a[5]=this.msize;a[6]=this.replybuffer;a[7]=this.replybuffersize;a[8]=this.fids.map(function(b){return[b.inodeid,b.type,b.uid,b.dbg_name]});a[9]=this.fs;return a}; +ea.prototype.set_state=function(a){this.configspace_tagname=a[0];this.configspace_taglen=a[1];this.virtio.set_state(a[2]);this.virtqueue=this.virtio.queues[0];this.VERSION=a[3];this.BLOCKSIZE=a[4];this.msize=a[5];this.replybuffer=a[6];this.replybuffersize=a[7];this.fids=a[8].map(function(b){return{inodeid:b[0],type:b[1],uid:b[2],dbg_name:b[3]}});this.fs.set_state(a[9])};ea.prototype.Createfid=function(a,b,c,d){return{inodeid:a,type:b,uid:c,dbg_name:d}}; +ea.prototype.update_dbg_name=function(a,b){for(const c of this.fids)c.inodeid===a&&(c.dbg_name=b)};ea.prototype.Reset=function(){this.fids=[]};ea.prototype.BuildReply=function(a,b,c){v.Marshall(["w","b","h"],[c+7,a+1,b],this.replybuffer,0);c+7>=this.replybuffer.length&&y.Debug("Error in 9p: payloadsize exceeds maximum length");this.replybuffersize=c+7};ea.prototype.SendError=function(a,b,c){b=v.Marshall(["w"],[c],this.replybuffer,7);this.BuildReply(6,a,b)}; +ea.prototype.SendReply=function(a){a.set_next_blob(this.replybuffer.subarray(0,this.replybuffersize));this.virtqueue.push_reply(a);this.virtqueue.flush_replies()}; +ea.prototype.ReceiveRequest=async function(a){var b=new Uint8Array(a.length_readable);a.get_next_blob(b);var c={offset:0},d=v.Unmarshall(["w","b","h"],b,c),e=d[0],g=d[1],f=d[2];switch(g){case 8:e=this.fs.GetTotalSize();b=this.fs.GetSpace();d=[16914839];d[1]=this.BLOCKSIZE;d[2]=Math.floor(b/d[1]);d[3]=d[2]-Math.floor(e/d[1]);d[4]=d[2]-Math.floor(e/d[1]);d[5]=this.fs.CountUsedInodes();d[6]=this.fs.CountFreeInodes();d[7]=0;d[8]=256;e=v.Marshall("wwddddddw".split(""),d,this.replybuffer,7);this.BuildReply(g, +f,e);this.SendReply(a);break;case 112:case 12:d=v.Unmarshall(["w","w"],b,c);var k=d[0];c=d[1];y.Debug("[open] fid="+k+", mode="+c);b=this.fids[k].inodeid;var l=this.fs.GetInode(b);y.Debug("file open "+this.fids[k].dbg_name);e=this.fs.OpenInode(b,c);this.fs.AddEvent(this.fids[k].inodeid,function(){y.Debug("file opened "+this.fids[k].dbg_name+" tag:"+f);var t=[];t[0]=l.qid;t[1]=this.msize-24;v.Marshall(["Q","w"],t,this.replybuffer,7);this.BuildReply(g,f,17);this.SendReply(a)}.bind(this));break;case 70:d= +v.Unmarshall(["w","w","s"],b,c);b=d[0];k=d[1];e=d[2];y.Debug("[link] dfid="+b+", name="+e);e=this.fs.Link(this.fids[b].inodeid,this.fids[k].inodeid,e);if(0>e){this.SendError(f,-1===e?"Operation not permitted":"Unknown error: "+-e,-e);this.SendReply(a);break}this.BuildReply(g,f,0);this.SendReply(a);break;case 16:d=v.Unmarshall(["w","s","s","w"],b,c);k=d[0];e=d[1];b=d[2];d=d[3];y.Debug("[symlink] fid="+k+", name="+e+", symgt="+b+", gid="+d);b=this.fs.CreateSymlink(e,this.fids[k].inodeid,b);l=this.fs.GetInode(b); +l.uid=this.fids[k].uid;l.gid=d;v.Marshall(["Q"],[l.qid],this.replybuffer,7);this.BuildReply(g,f,13);this.SendReply(a);break;case 18:d=v.Unmarshall("wswwww".split(""),b,c);k=d[0];e=d[1];c=d[2];b=d[3];var m=d[4];d=d[5];y.Debug("[mknod] fid="+k+", name="+e+", major="+b+", minor="+m);b=this.fs.CreateNode(e,this.fids[k].inodeid,b,m);l=this.fs.GetInode(b);l.mode=c;l.uid=this.fids[k].uid;l.gid=d;v.Marshall(["Q"],[l.qid],this.replybuffer,7);this.BuildReply(g,f,13);this.SendReply(a);break;case 22:d=v.Unmarshall(["w"], +b,c);k=d[0];l=this.fs.GetInode(this.fids[k].inodeid);y.Debug("[readlink] fid="+k+" name="+this.fids[k].dbg_name+" target="+l.symlink);e=v.Marshall(["s"],[l.symlink],this.replybuffer,7);this.BuildReply(g,f,e);this.SendReply(a);break;case 72:d=v.Unmarshall(["w","s","w","w"],b,c);k=d[0];e=d[1];c=d[2];d=d[3];y.Debug("[mkdir] fid="+k+", name="+e+", mode="+c+", gid="+d);b=this.fs.CreateDirectory(e,this.fids[k].inodeid);l=this.fs.GetInode(b);l.mode=c|ha;l.uid=this.fids[k].uid;l.gid=d;v.Marshall(["Q"],[l.qid], +this.replybuffer,7);this.BuildReply(g,f,13);this.SendReply(a);break;case 14:d=v.Unmarshall(["w","s","w","w","w"],b,c);k=d[0];e=d[1];b=d[2];c=d[3];d=d[4];this.bus.send("9p-create",[e,this.fids[k].inodeid]);y.Debug("[create] fid="+k+", name="+e+", flags="+b+", mode="+c+", gid="+d);b=this.fs.CreateFile(e,this.fids[k].inodeid);this.fids[k].inodeid=b;this.fids[k].type=1;this.fids[k].dbg_name=e;l=this.fs.GetInode(b);l.uid=this.fids[k].uid;l.gid=d;l.mode=c|ia;v.Marshall(["Q","w"],[l.qid,this.msize-24],this.replybuffer, +7);this.BuildReply(g,f,17);this.SendReply(a);break;case 52:d=v.Unmarshall("wbwddws".split(""),b,c);k=d[0];b=d[2];e=0===d[4]?Infinity:d[4];d=this.fs.DescribeLock(d[1],d[3],e,d[5],d[6]);y.Debug("[lock] fid="+k+", type="+da[d.type]+", start="+d.start+", length="+d.length+", proc_id="+d.proc_id);e=this.fs.Lock(this.fids[k].inodeid,d,b);v.Marshall(["b"],[e],this.replybuffer,7);this.BuildReply(g,f,1);this.SendReply(a);break;case 54:d=v.Unmarshall("wbddws".split(""),b,c);k=d[0];e=0===d[3]?Infinity:d[3]; +d=this.fs.DescribeLock(d[1],d[2],e,d[4],d[5]);y.Debug("[getlock] fid="+k+", type="+da[d.type]+", start="+d.start+", length="+d.length+", proc_id="+d.proc_id);e=this.fs.GetLock(this.fids[k].inodeid,d);e||(e=d,e.type=2);e=v.Marshall(["b","d","d","w","s"],[e.type,e.start,Infinity===e.length?0:e.length,e.proc_id,e.client_id],this.replybuffer,7);this.BuildReply(g,f,e);this.SendReply(a);break;case 24:d=v.Unmarshall(["w","d"],b,c);k=d[0];l=this.fs.GetInode(this.fids[k].inodeid);y.Debug("[getattr]: fid="+ +k+" name="+this.fids[k].dbg_name+" request mask="+d[1]);if(!l||l.status===ja){y.Debug("getattr: unlinked");this.SendError(f,"No such file or directory",2);this.SendReply(a);break}d[0]|=4096;d[0]=d[1];d[1]=l.qid;d[2]=l.mode;d[3]=l.uid;d[4]=l.gid;d[5]=l.nlinks;d[6]=l.major<<8|l.minor;d[7]=l.size;d[8]=this.BLOCKSIZE;d[9]=Math.floor(l.size/512+1);d[10]=l.atime;d[11]=0;d[12]=l.mtime;d[13]=0;d[14]=l.ctime;d[15]=0;d[16]=0;d[17]=0;d[18]=0;d[19]=0;v.Marshall("dQwwwddddddddddddddd".split(""),d,this.replybuffer, +7);this.BuildReply(g,f,153);this.SendReply(a);break;case 26:d=v.Unmarshall("wwwwwddddd".split(""),b,c);k=d[0];l=this.fs.GetInode(this.fids[k].inodeid);y.Debug("[setattr]: fid="+k+" request mask="+d[1]+" name="+this.fids[k].dbg_name);d[1]&1&&(l.mode=d[2]);d[1]&2&&(l.uid=d[3]);d[1]&4&&(l.gid=d[4]);d[1]&16&&(l.atime=Math.floor((new Date).getTime()/1E3));d[1]&32&&(l.mtime=Math.floor((new Date).getTime()/1E3));d[1]&64&&(l.ctime=Math.floor((new Date).getTime()/1E3));d[1]&128&&(l.atime=d[6]);d[1]&256&&(l.mtime= +d[8]);d[1]&8&&await this.fs.ChangeSize(this.fids[k].inodeid,d[5]);this.BuildReply(g,f,0);this.SendReply(a);break;case 50:d=v.Unmarshall(["w","d"],b,c);k=d[0];this.BuildReply(g,f,0);this.SendReply(a);break;case 40:case 116:d=v.Unmarshall(["w","d","w"],b,c);k=d[0];e=d[1];m=d[2];l=this.fs.GetInode(this.fids[k].inodeid);40==g&&y.Debug("[treaddir]: fid="+k+" offset="+e+" count="+m);116==g&&y.Debug("[read]: fid="+k+" ("+this.fids[k].dbg_name+") offset="+e+" count="+m+" fidtype="+this.fids[k].type);if(!l|| +l.status===ja){y.Debug("read/treaddir: unlinked");this.SendError(f,"No such file or directory",2);this.SendReply(a);break}if(2==this.fids[k].type)for(l.caps.lengthl.size&&(m=0),this.bus.send("9p-read-start",[this.fids[k].dbg_name]),d=await this.fs.Read(d, +e,m),this.bus.send("9p-read-end",[this.fids[k].dbg_name,m]),d&&this.replybuffer.set(d,11);v.Marshall(["w"],[m],this.replybuffer,7);this.BuildReply(g,f,4+m);this.SendReply(a);break;case 118:d=v.Unmarshall(["w","d","w"],b,c);k=d[0];e=d[1];m=d[2];d=this.fids[k].dbg_name;y.Debug("[write]: fid="+k+" ("+d+") offset="+e+" count="+m+" fidtype="+this.fids[k].type);if(2===this.fids[k].type){this.SendError(f,"Setxattr not supported",95);this.SendReply(a);break}else await this.fs.Write(this.fids[k].inodeid,e, +m,b.subarray(c.offset));this.bus.send("9p-write-end",[d,m]);v.Marshall(["w"],[m],this.replybuffer,7);this.BuildReply(g,f,4);this.SendReply(a);break;case 74:d=v.Unmarshall(["w","s","w","s"],b,c);e=d[0];b=d[1];c=d[2];d=d[3];y.Debug("[renameat]: oldname="+b+" newname="+d);e=await this.fs.Rename(this.fids[e].inodeid,b,this.fids[c].inodeid,d);if(0>e){this.SendError(f,-2===e?"No such file or directory":-1===e?"Operation not permitted":-39===e?"Directory not empty":"Unknown error: "+-e,-e);this.SendReply(a); +break}this.BuildReply(g,f,0);this.SendReply(a);break;case 76:d=v.Unmarshall(["w","s","w"],b,c);c=d[0];e=d[1];b=d[2];y.Debug("[unlink]: dirfd="+c+" name="+e+" flags="+b);k=this.fs.Search(this.fids[c].inodeid,e);if(-1==k){this.SendError(f,"No such file or directory",2);this.SendReply(a);break}e=this.fs.Unlink(this.fids[c].inodeid,e);if(0>e){this.SendError(f,-39===e?"Directory not empty":-1===e?"Operation not permitted":"Unknown error: "+-e,-e);this.SendReply(a);break}this.BuildReply(g,f,0);this.SendReply(a); +break;case 100:d=v.Unmarshall(["w","s"],b,c);y.Debug("[version]: msize="+d[0]+" version="+d[1]);this.msize!==d[0]&&(this.msize=d[0],this.replybuffer=new Uint8Array(Math.min(16777216,2*this.msize)));e=v.Marshall(["w","s"],[this.msize,this.VERSION],this.replybuffer,7);this.BuildReply(g,f,e);this.SendReply(a);break;case 104:d=v.Unmarshall(["w","w","s","s","w"],b,c);k=d[0];e=d[4];y.Debug("[attach]: fid="+k+" afid="+A(d[1])+" uname="+d[2]+" aname="+d[3]);this.fids[k]=this.Createfid(0,1,e,"");l=this.fs.GetInode(this.fids[k].inodeid); +v.Marshall(["Q"],[l.qid],this.replybuffer,7);this.BuildReply(g,f,13);this.SendReply(a);this.bus.send("9p-attach");break;case 108:d=v.Unmarshall(["h"],b,c);y.Debug("[flush] "+f);this.BuildReply(g,f,0);this.SendReply(a);break;case 110:d=v.Unmarshall(["w","w","h"],b,c);k=d[0];m=d[1];var n=d[2];y.Debug("[walk]: fid="+d[0]+" nwfid="+d[1]+" nwname="+n);if(0==n){this.fids[m]=this.Createfid(this.fids[k].inodeid,1,this.fids[k].uid,this.fids[k].dbg_name);v.Marshall(["h"],[0],this.replybuffer,7);this.BuildReply(g, +f,2);this.SendReply(a);break}e=[];for(d=0;db;b++)this.ports[b]=this.create_empty_entry();var c=a.memory_size[0];for(b=0;b<<17>>0,8);return 255},function(d,e){A(d>>>0,8);A(e,2)},function(d){A(d>>>0,8);return-1},function(d,e){A(d>>>0,8);A(e>>>0,8)})} +B.prototype.create_empty_entry=function(){return{read8:this.empty_port_read8,read16:this.empty_port_read16,read32:this.empty_port_read32,write8:this.empty_port_write,write16:this.empty_port_write,write32:this.empty_port_write,device:void 0}};B.prototype.empty_port_read8=function(){return 255};B.prototype.empty_port_read16=function(){return 65535};B.prototype.empty_port_read32=function(){return-1};B.prototype.empty_port_write=function(){}; +B.prototype.register_read=function(a,b,c,d,e){c&&(this.ports[a].read8=c);d&&(this.ports[a].read16=d);e&&(this.ports[a].read32=e);this.ports[a].device=b};B.prototype.register_write=function(a,b,c,d,e){c&&(this.ports[a].write8=c);d&&(this.ports[a].write16=d);e&&(this.ports[a].write32=e);this.ports[a].device=b}; +B.prototype.register_read_consecutive=function(a,b,c,d,e,g){function f(){return c.call(this)|d.call(this)<<8}function k(){return e.call(this)|g.call(this)<<8}function l(){return c.call(this)|d.call(this)<<8|e.call(this)<<16|g.call(this)<<24}e&&g?(this.register_read(a,b,c,f,l),this.register_read(a+1,b,d),this.register_read(a+2,b,e,k),this.register_read(a+3,b,g)):(this.register_read(a,b,c,f),this.register_read(a+1,b,d))}; +B.prototype.register_write_consecutive=function(a,b,c,d,e,g){function f(m){c.call(this,m&255);d.call(this,m>>8&255)}function k(m){e.call(this,m&255);g.call(this,m>>8&255)}function l(m){c.call(this,m&255);d.call(this,m>>8&255);e.call(this,m>>16&255);g.call(this,m>>>24)}e&&g?(this.register_write(a,b,c,f,l),this.register_write(a+1,b,d),this.register_write(a+2,b,e,k),this.register_write(a+3,b,g)):(this.register_write(a,b,c,f),this.register_write(a+1,b,d))}; +B.prototype.mmap_read32_shim=function(a){var b=this.cpu.memory_map_read8[a>>>17];return b(a)|b(a+1)<<8|b(a+2)<<16|b(a+3)<<24};B.prototype.mmap_write32_shim=function(a,b){var c=this.cpu.memory_map_write8[a>>>17];c(a,b&255);c(a+1,b>>8&255);c(a+2,b>>16&255);c(a+3,b>>>24)}; +B.prototype.mmap_register=function(a,b,c,d,e,g){A(a>>>0,8);A(b,8);e||(e=this.mmap_read32_shim.bind(this));g||(g=this.mmap_write32_shim.bind(this));for(a>>>=17;0>>0,8),this.get_port_description(a));return c.write32.call(c.device,b)}; +B.prototype.port_read8=function(a){var b=this.ports[a];b.read8===this.empty_port_read8&&(A(a,4),this.get_port_description(a));b=b.read8.call(b.device);A(a);return b};B.prototype.port_read16=function(a){var b=this.ports[a];b.read16===this.empty_port_read16&&(A(a,4),this.get_port_description(a));b=b.read16.call(b.device);A(a);return b};B.prototype.port_read32=function(a){var b=this.ports[a];b.read32===this.empty_port_read32&&(A(a,4),this.get_port_description(a));return b.read32.call(b.device)}; +var ka={4:"PORT_DMA_ADDR_2",5:"PORT_DMA_CNT_2",10:"PORT_DMA1_MASK_REG",11:"PORT_DMA1_MODE_REG",12:"PORT_DMA1_CLEAR_FF_REG",13:"PORT_DMA1_MASTER_CLEAR",32:"PORT_PIC1_CMD",33:"PORT_PIC1_DATA",64:"PORT_PIT_COUNTER0",65:"PORT_PIT_COUNTER1",66:"PORT_PIT_COUNTER2",67:"PORT_PIT_MODE",96:"PORT_PS2_DATA",97:"PORT_PS2_CTRLB",100:"PORT_PS2_STATUS",112:"PORT_CMOS_INDEX",113:"PORT_CMOS_DATA",128:"PORT_DIAG",129:"PORT_DMA_PAGE_2",146:"PORT_A20",160:"PORT_PIC2_CMD",161:"PORT_PIC2_DATA",178:"PORT_SMI_CMD",179:"PORT_SMI_STATUS", +212:"PORT_DMA2_MASK_REG",214:"PORT_DMA2_MODE_REG",218:"PORT_DMA2_MASTER_CLEAR",240:"PORT_MATH_CLEAR",368:"PORT_ATA2_CMD_BASE",496:"PORT_ATA1_CMD_BASE",632:"PORT_LPT2",744:"PORT_SERIAL4",760:"PORT_SERIAL2",884:"PORT_ATA2_CTRL_BASE",888:"PORT_LPT1",1E3:"PORT_SERIAL3",1008:"PORT_FD_BASE",1010:"PORT_FD_DOR",1012:"PORT_FD_STATUS",1013:"PORT_FD_DATA",1014:"PORT_HD_DATA",1015:"PORT_FD_DIR",1016:"PORT_SERIAL1",3320:"PORT_PCI_CMD",3321:"PORT_PCI_REBOOT",3324:"PORT_PCI_DATA",1026:"PORT_BIOS_DEBUG",1296:"PORT_QEMU_CFG_CTL", +1297:"PORT_QEMU_CFG_DATA",45056:"PORT_ACPI_PM_BASE",45312:"PORT_SMB_BASE",35072:"PORT_BIOS_APM"};B.prototype.get_port_description=function(a){return ka[a]?" ("+ka[a]+")":""};function D(a,b){this.stopping=this.running=!1;this.idle=!0;this.tick_counter=0;this.worker=null;this.cpu=new E(a,b,()=>{this.idle&&this.next_tick(0)});this.bus=a;a.register("cpu-init",this.init,this);a.register("cpu-run",this.run,this);a.register("cpu-stop",this.stop,this);a.register("cpu-restart",this.restart,this);this.register_yield()}D.prototype.run=function(){this.stopping=!1;this.running||(this.running=!0,this.bus.send("emulator-started"));this.next_tick(0)}; +D.prototype.do_tick=function(){if(this.stopping||!this.running)this.stopping=this.running=!1,this.bus.send("emulator-stopped");else{this.idle=!1;var a=this.cpu.main_loop();this.next_tick(a)}};D.prototype.next_tick=function(a){const b=++this.tick_counter;this.idle=!0;this.yield(a,b)};D.prototype.yield_callback=function(a){a===this.tick_counter&&this.do_tick()};D.prototype.stop=function(){this.running&&(this.stopping=!0)};D.prototype.destroy=function(){this.unregister_yield()}; +D.prototype.restart=function(){this.cpu.reset_cpu();this.cpu.load_bios()};D.prototype.init=function(a){this.cpu.init(a,this.bus);this.bus.send("emulator-ready")}; +if("undefined"!==typeof process)D.prototype.yield=function(a,b){1>a?global.setImmediate(c=>this.yield_callback(c),b):setTimeout(c=>this.yield_callback(c),a,b)},D.prototype.register_yield=function(){},D.prototype.unregister_yield=function(){};else if("undefined"!==typeof Worker){function a(){let b;globalThis.onmessage=function(c){const d=c.data.t;b=b&&clearTimeout(b);1>d?postMessage(c.data.tick):b=setTimeout(()=>postMessage(c.data.tick),d)}}D.prototype.register_yield=function(){const b=URL.createObjectURL(new Blob(["("+ +a.toString()+")()"],{type:"text/javascript"}));this.worker=new Worker(b);this.worker.onmessage=c=>this.yield_callback(c.data);URL.revokeObjectURL(b)};D.prototype.yield=function(b,c){this.worker.postMessage({t:b,tick:c})};D.prototype.unregister_yield=function(){this.worker&&this.worker.terminate();this.worker=null}}else D.prototype.yield=function(a){setTimeout(()=>{this.do_tick()},a)},D.prototype.register_yield=function(){},D.prototype.unregister_yield=function(){};D.prototype.save_state=function(){return this.cpu.save_state()}; +D.prototype.restore_state=function(a){return this.cpu.restore_state(a)};if("object"===typeof performance&&performance.now)D.microtick=performance.now.bind(performance);else if("function"===typeof require){const {performance:a}=require("perf_hooks");D.microtick=a.now.bind(a)}else D.microtick="object"===typeof process&&process.hrtime?function(){var a=process.hrtime();return 1E3*a[0]+a[1]/1E6}:Date.now;var F=F||{};F.exportSymbol=function(){};F.exportProperty=function(){};var r=r||{};r.pads=function(a,b){return(a||0===a?a+"":"").padEnd(b," ")};r.pad0=function(a,b){return(a||0===a?a+"":"").padStart(b,"0")};r.zeros=function(a){return Array(a).fill(0)};r.range=function(a){return Array.from(Array(a).keys())}; +r.view=function(a,b,c,d){return new Proxy({},{get:function(e,g){e=new a(b.buffer,c,d);const f=e[g];if("function"===typeof f)return f.bind(e);/^\d+$/.test(g);return f},set:function(e,g,f){/^\d+$/.test(g);(new a(b.buffer,c,d))[g]=f;return!0}})};function A(a,b){a=a?a.toString(16):"";return"0x"+r.pad0(a.toUpperCase(),b||1)} +if("undefined"!==typeof crypto&&crypto.getRandomValues){let a=new Int32Array(1);r.get_rand_int=function(){crypto.getRandomValues(a);return a[0]}}else if("undefined"!==typeof require){const a=require("crypto");r.get_rand_int=function(){return a.randomBytes(4).readInt32LE(0)}} +(function(){if("function"===typeof Math.clz32)r.int_log2_byte=function(d){return 31-Math.clz32(d)},r.int_log2=function(d){return 31-Math.clz32(d)};else{for(var a=new Int8Array(256),b=0,c=-2;256>b;b++)b&b-1||c++,a[b]=c;r.int_log2_byte=function(d){return a[d]};r.int_log2=function(d){d>>>=0;var e=d>>>16;if(e){var g=e>>>8;return g?24+a[g]:16+a[e]}return(g=d>>>8)?8+a[g]:a[d]}}})(); +function la(a){var b=new Uint8Array(a),c,d;this.length=0;this.push=function(e){this.length!==a&&this.length++;b[d]=e;d=d+1&a-1};this.shift=function(){if(this.length){var e=b[c];c=c+1&a-1;this.length--;return e}return-1};this.peek=function(){return this.length?b[c]:-1};this.clear=function(){this.length=d=c=0};this.clear()}function ma(a){this.size=a;this.data=new Float32Array(a);this.length=this.end=this.start=0} +ma.prototype.push=function(a){this.length===this.size?this.start=this.start+1&this.size-1:this.length++;this.data[this.end]=a;this.end=this.end+1&this.size-1};ma.prototype.shift=function(){if(this.length){var a=this.data[this.start];this.start=this.start+1&this.size-1;this.length--;return a}}; +ma.prototype.shift_block=function(a){var b=new Float32Array(a);a>this.length&&(a=this.length);var c=this.start+a,d=this.data.subarray(this.start,c);b.set(d);c>=this.size&&(c-=this.size,b.set(this.data.subarray(0,c),d.length));this.start=c;this.length-=a;return b};ma.prototype.peek=function(){if(this.length)return this.data[this.start]};ma.prototype.clear=function(){this.length=this.end=this.start=0}; +r.Bitmap=function(a){"number"===typeof a?this.view=new Uint8Array(a+7>>3):a instanceof ArrayBuffer&&(this.view=new Uint8Array(a))};r.Bitmap.prototype.set=function(a,b){const c=a>>3;a=1<<(a&7);this.view[c]=b?this.view[c]|a:this.view[c]&~a};r.Bitmap.prototype.get=function(a){return this.view[a>>3]>>(a&7)&1};r.Bitmap.prototype.get_buffer=function(){return this.view.buffer};r.load_file="undefined"===typeof XMLHttpRequest?na:oa; +function oa(a,b,c){function d(){const l=c||0;setTimeout(()=>{oa(a,b,l+1)},1E3*([1,1,2,3,5,8,13,21][l]||34))}var e=new XMLHttpRequest;e.open(b.method||"get",a,!0);e.responseType=b.as_json?"json":"arraybuffer";if(b.headers)for(var g=Object.keys(b.headers),f=0;fe.status&&d();else if(e.response){if(b.range){let l=e.getResponseHeader("Content-Encoding");l&&"identity"!==l&&console.error("Server sent Content-Encoding in response to ranged request",{filename:a,enc:l})}b.done&&b.done(e.response,e)}};e.onerror=function(l){console.error("Loading the image "+a+" failed",l);d()};b.progress&&(e.onprogress= +function(l){b.progress(l)});e.send(null)}function na(a,b){let c=require("fs");b.range?c.open(a,"r",(d,e)=>{if(d)throw d;d=b.range.length;var g=Buffer.allocUnsafe(d);c.read(e,g,0,d,b.range.start,f=>{if(f)throw f;b.done&&b.done(new Uint8Array(g));c.close(e,k=>{if(k)throw k;})})}):c.readFile(a,{encoding:b.as_json?"utf-8":null},function(d,e){d?console.log("Could not read file:",a,d):(d=e,d=b.as_json?JSON.parse(d):(new Uint8Array(d)).buffer,b.done(d))})} +r.read_sized_string_from_mem=function(a,b,c){return String.fromCharCode(...(new Uint8Array(a.buffer,b>>>0,c>>>0)))};(function(){function a(f){this.buffer=f;this.byteLength=f.byteLength;this.onprogress=this.onload=void 0}function b(f,k,l){this.filename=f;this.byteLength=k;this.block_cache=new Map;this.block_cache_is_write=new Set;this.fixed_chunk_size=l;this.cache_reads=!!l;this.onprogress=this.onload=void 0}function c(f,k,l,m,n){const p=f.match(/\.[^\.]+(\.zst)?$/);this.extension=p?p[0]:"";this.basename=f.substring(0,f.length-this.extension.length);this.is_zstd=this.extension.endsWith(".zst");this.basename.endsWith("/")|| +(this.basename+="-");this.block_cache=new Map;this.block_cache_is_write=new Set;this.byteLength=k;this.fixed_chunk_size=l;this.partfile_alt_format=!!m;this.zstd_decompress=n;this.cache_reads=!!l;this.onprogress=this.onload=void 0}function d(f){this.file=f;this.byteLength=f.size;1073741824>20)+" MB ...");this.buffer=new ArrayBuffer(f.size);this.onprogress=this.onload=void 0}function e(f){this.file=f;this.byteLength=f.size;this.block_cache= +new Map;this.block_cache_is_write=new Set;this.onprogress=this.onload=void 0}r.SyncBuffer=a;r.AsyncXHRBuffer=b;r.AsyncXHRPartfileBuffer=c;r.AsyncFileBuffer=e;r.SyncFileBuffer=d;r.buffer_from_object=function(f,k){if(f.buffer instanceof ArrayBuffer)return new r.SyncBuffer(f.buffer);if("undefined"!==typeof File&&f.buffer instanceof File)return k=f.async,void 0===k&&(k=268435456<=f.buffer.size),k?new r.AsyncFileBuffer(f.buffer):new r.SyncFileBuffer(f.buffer);if(f.url)return f.use_parts?new r.AsyncXHRPartfileBuffer(f.url, +f.size,f.fixed_chunk_size,!1,k):new r.AsyncXHRBuffer(f.url,f.size,f.fixed_chunk_size)};a.prototype.load=function(){this.onload&&this.onload({buffer:this.buffer})};a.prototype.get=function(f,k,l){l(new Uint8Array(this.buffer,f,k))};a.prototype.set=function(f,k,l){(new Uint8Array(this.buffer,f,k.byteLength)).set(k);l()};a.prototype.get_buffer=function(f){f(this.buffer)};a.prototype.get_state=function(){const f=[];f[0]=this.byteLength;f[1]=new Uint8Array(this.buffer);return f};a.prototype.set_state= +function(f){this.byteLength=f[0];this.buffer=f[1].slice().buffer};b.prototype.load=function(){void 0!==this.byteLength?this.onload&&this.onload(Object.create(null)):g(this.filename,(f,k)=>{if(f)throw Error("Cannot use: "+this.filename+". "+f);this.byteLength=k;this.onload&&this.onload(Object.create(null))})};b.prototype.get_from_cache=function(f,k){var l=k/256;f/=256;for(var m=0;m{l?k(l):k(null,m.size)})}:function(f,k){r.load_file(f,{done:(l,m)=>{l=m.getResponseHeader("Content-Range")||"";(m=l.match(/\/(\d+)\s*$/))?k(null,+m[1]):k("`Range: bytes=...` header not supported (Got `"+l+"`)")},headers:{Range:"bytes=0-0","X-Accept-Encoding":"identity"}})}})();function G(a,b,c,d,e,g){this.master=new H(this,a,b,d,e,0,g);this.slave=new H(this,a,c,!1,e,1,g);this.current_interface=this.master;this.cpu=a;0===e?(this.ata_port=496,this.irq=14,this.pci_id=240):1===e&&(this.ata_port=368,this.irq=15,this.pci_id=248);this.ata_port_high=this.ata_port|516;this.master_port=46080;this.pci_space=[134,128,16,112,5,0,160,2,0,128,1,1,0,0,0,0,this.ata_port&255|1,this.ata_port>>8,0,0,this.ata_port_high&255|1,this.ata_port_high>>8,0,0,0,0,0,0,0,0,0,0,this.master_port&255|1, +this.master_port>>8,0,0,0,0,0,0,0,0,0,0,67,16,212,130,0,0,0,0,0,0,0,0,0,0,0,0,this.irq,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];this.pci_bars=[{size:8},{size:4},void 0,void 0,{size:16}];this.name="ide"+e;this.device_control=2;a.io.register_read(this.ata_port|7,this,function(){this.cpu.device_lower_irq(this.irq);return this.read_status()});a.io.register_read(this.ata_port_high| +2,this,this.read_status);a.io.register_write(this.ata_port_high|2,this,this.write_control);a.io.register_read(this.ata_port|0,this,function(){return this.current_interface.read_data(1)},function(){return this.current_interface.read_data(2)},function(){return this.current_interface.read_data(4)});a.io.register_read(this.ata_port|1,this,function(){A(this.current_interface.error&255);return this.current_interface.error&255});a.io.register_read(this.ata_port|2,this,function(){A(this.current_interface.bytecount& +255);return this.current_interface.bytecount&255});a.io.register_read(this.ata_port|3,this,function(){A(this.current_interface.sector&255);return this.current_interface.sector&255});a.io.register_read(this.ata_port|4,this,function(){A(this.current_interface.cylinder_low&255);return this.current_interface.cylinder_low&255});a.io.register_read(this.ata_port|5,this,function(){A(this.current_interface.cylinder_high&255);return this.current_interface.cylinder_high&255});a.io.register_read(this.ata_port| +6,this,function(){return this.current_interface.drive_head&255});a.io.register_write(this.ata_port|0,this,function(f){this.current_interface.write_data_port8(f)},function(f){this.current_interface.write_data_port16(f)},function(f){this.current_interface.write_data_port32(f)});a.io.register_write(this.ata_port|1,this,function(f){A(f);this.master.lba_count=(this.master.lba_count<<8|f)&65535;this.slave.lba_count=(this.slave.lba_count<<8|f)&65535});a.io.register_write(this.ata_port|2,this,function(f){A(f); +this.master.bytecount=(this.master.bytecount<<8|f)&65535;this.slave.bytecount=(this.slave.bytecount<<8|f)&65535});a.io.register_write(this.ata_port|3,this,function(f){A(f);this.master.sector=(this.master.sector<<8|f)&65535;this.slave.sector=(this.slave.sector<<8|f)&65535});a.io.register_write(this.ata_port|4,this,function(f){A(f);this.master.cylinder_low=(this.master.cylinder_low<<8|f)&65535;this.slave.cylinder_low=(this.slave.cylinder_low<<8|f)&65535});a.io.register_write(this.ata_port|5,this,function(f){A(f); +this.master.cylinder_high=(this.master.cylinder_high<<8|f)&65535;this.slave.cylinder_high=(this.slave.cylinder_high<<8|f)&65535});a.io.register_write(this.ata_port|6,this,function(f){var k=f&16;A(f,2);this.current_interface=k?this.slave:this.master;this.master.drive_head=f;this.slave.drive_head=f;this.master.is_lba=this.slave.is_lba=f>>6&1;this.master.head=this.slave.head=f&15});this.dma_command=this.dma_status=this.prdt_addr=0;a.io.register_write(this.ata_port|7,this,function(f){this.cpu.device_lower_irq(this.irq); +this.current_interface.ata_command(f)});a.io.register_read(this.master_port|4,this,void 0,void 0,this.dma_read_addr);a.io.register_write(this.master_port|4,this,void 0,void 0,this.dma_set_addr);a.io.register_read(this.master_port,this,this.dma_read_command8,void 0,this.dma_read_command);a.io.register_write(this.master_port,this,this.dma_write_command8,void 0,this.dma_write_command);a.io.register_read(this.master_port|2,this,this.dma_read_status);a.io.register_write(this.master_port|2,this,this.dma_write_status); +a.io.register_read(this.master_port|8,this,function(){return 0});a.io.register_read(this.master_port|10,this,function(){return 0});a.devices.pci.register_device(this)}G.prototype.read_status=function(){if(this.current_interface.buffer){var a=this.current_interface.status;A(a,2);return a}return 0};G.prototype.write_control=function(a){A(a,2);a&4&&(this.cpu.device_lower_irq(this.irq),this.master.device_reset(),this.slave.device_reset());this.device_control=a}; +G.prototype.dma_read_addr=function(){A(this.prdt_addr,8);return this.prdt_addr};G.prototype.dma_set_addr=function(a){A(a,8);this.prdt_addr=a};G.prototype.dma_read_status=function(){A(this.dma_status);return this.dma_status};G.prototype.dma_write_status=function(a){A(a);this.dma_status&=~(a&6)};G.prototype.dma_read_command=function(){return this.dma_read_command8()|this.dma_read_status()<<16};G.prototype.dma_read_command8=function(){A(this.dma_command);return this.dma_command}; +G.prototype.dma_write_command=function(a){A(a);this.dma_write_command8(a&255);this.dma_write_status(a>>16&255)}; +G.prototype.dma_write_command8=function(a){A(a);let b=this.dma_command;this.dma_command=a&9;if((b&1)!==(a&1))if(0===(a&1))this.dma_status&=-2;else switch(this.dma_status|=1,this.current_interface.current_command){case 37:case 200:this.current_interface.do_ata_read_sectors_dma();break;case 202:case 53:this.current_interface.do_ata_write_sectors_dma();break;case 160:this.current_interface.do_atapi_dma();break;default:A(this.current_interface.current_command)}}; +G.prototype.push_irq=function(){0===(this.device_control&2)&&(this.dma_status|=4,this.cpu.device_raise_irq(this.irq))};G.prototype.get_state=function(){var a=[];a[0]=this.master;a[1]=this.slave;a[2]=this.ata_port;a[3]=this.irq;a[4]=this.pci_id;a[5]=this.ata_port_high;a[6]=this.master_port;a[7]=this.name;a[8]=this.device_control;a[9]=this.prdt_addr;a[10]=this.dma_status;a[11]=this.current_interface===this.master;a[12]=this.dma_command;return a}; +G.prototype.set_state=function(a){this.master.set_state(a[0]);this.slave.set_state(a[1]);this.ata_port=a[2];this.irq=a[3];this.pci_id=a[4];this.ata_port_high=a[5];this.master_port=a[6];this.name=a[7];this.device_control=a[8];this.prdt_addr=a[9];this.dma_status=a[10];this.current_interface=a[11]?this.master:this.slave;this.dma_command=a[12]}; +function H(a,b,c,d,e,g,f){this.device=a;this.bus=f;this.nr=e;this.cpu=b;this.buffer=c;this.sector_size=d?2048:512;this.is_atapi=d;this.cylinder_count=this.sectors_per_track=this.head_count=this.sector_count=0;this.buffer&&(this.sector_count=this.buffer.byteLength/this.sector_size,this.sector_count!==(this.sector_count|0)&&(this.sector_count=Math.ceil(this.sector_count)),d?(this.head_count=1,this.sectors_per_track=0):(this.head_count=16,this.sectors_per_track=63),this.cylinder_count=this.sector_count/ +this.head_count/this.sectors_per_track,this.cylinder_count!==(this.cylinder_count|0)&&(this.cylinder_count=Math.floor(this.cylinder_count)),a=b.devices.rtc,a.cmos_write(57,a.cmos_read(57)|1<<4*this.nr),a.cmos_write(18,a.cmos_read(18)&15|240),a.cmos_write(27,this.cylinder_count&255),a.cmos_write(28,this.cylinder_count>>8&255),a.cmos_write(29,this.head_count&255),a.cmos_write(30,255),a.cmos_write(31,255),a.cmos_write(32,200),a.cmos_write(33,this.cylinder_count&255),a.cmos_write(34,this.cylinder_count>> +8&255),a.cmos_write(35,this.sectors_per_track&255));this.stats={sectors_read:0,sectors_written:0,bytes_read:0,bytes_written:0,loading:!1};this.buffer=c;this.drive_head=this.head=this.cylinder_high=this.cylinder_low=this.lba_count=this.sector=this.bytecount=this.is_lba=0;this.status=80;this.sectors_per_drq=128;this.data_pointer=this.error=0;this.data=new Uint8Array(65536);this.data16=new Uint16Array(this.data.buffer);this.data32=new Int32Array(this.data.buffer);this.data_end=this.data_length=0;this.current_atapi_command= +this.current_command=-1;this.last_io_id=this.write_dest=0;this.in_progress_io_ids=new Set;this.cancelled_io_ids=new Set;Object.seal(this)}H.prototype.device_reset=function(){this.is_atapi?(this.status=0,this.sector=this.error=this.bytecount=1,this.cylinder_low=20,this.cylinder_high=235):(this.status=81,this.sector=this.error=this.bytecount=1,this.cylinder_high=this.cylinder_low=0);this.cancel_io_operations()};H.prototype.push_irq=function(){this.device.push_irq()}; +H.prototype.ata_command=function(a){A(a);if(this.buffer)switch(this.current_command=a,this.error=0,a){case 8:this.data_length=this.data_end=this.data_pointer=0;this.device_reset();this.push_irq();break;case 16:this.status=80;this.cylinder_low=0;this.push_irq();break;case 248:this.status=80;a=this.sector_count-1;this.sector=a&255;this.cylinder_low=a>>8&255;this.cylinder_high=a>>16&255;this.drive_head=this.drive_head&240|a>>24&15;this.push_irq();break;case 39:this.status=80;a=this.sector_count-1;this.sector= +a&255;this.cylinder_low=a>>8&255;this.cylinder_high=a>>16&255;this.sector|=a>>24<<8&65280;this.push_irq();break;case 32:case 36:case 41:case 196:this.ata_read_sectors(a);break;case 48:case 52:case 57:case 197:this.ata_write_sectors(a);break;case 144:this.push_irq();this.error=257;this.status=80;break;case 145:this.status=80;this.push_irq();break;case 160:this.is_atapi&&(this.status=88,this.data_allocate(12),this.data_end=12,this.bytecount=1,this.push_irq());break;case 161:this.is_atapi?(this.create_identify_packet(), +this.status=88,this.cylinder_low=20,this.cylinder_high=235):this.status=65;this.push_irq();break;case 198:A(this.bytecount&255);this.sectors_per_drq=this.bytecount&255;this.status=80;this.push_irq();break;case 37:case 200:this.ata_read_sectors_dma(a);break;case 53:case 202:this.ata_write_sectors_dma(a);break;case 64:this.status=80;this.push_irq();break;case 218:this.status=65;this.error=4;this.push_irq();break;case 224:this.status=80;this.push_irq();break;case 225:this.status=80;this.push_irq();break; +case 231:this.status=80;this.push_irq();break;case 236:if(this.is_atapi){this.status=65;this.error=4;this.push_irq();break}this.create_identify_packet();this.status=88;this.push_irq();break;case 234:this.status=80;this.push_irq();break;case 239:A(this.bytecount&255);this.status=80;this.push_irq();break;case 222:this.status=80;this.push_irq();break;case 245:this.status=80;this.push_irq();break;case 249:this.status=65;this.error=4;break;default:A(a),this.status=65,this.error=4}else this.error=4,this.status= +65,this.push_irq()}; +H.prototype.atapi_handle=function(){A(this.data[0]);this.data_pointer=0;this.current_atapi_command=this.data[0];switch(this.current_atapi_command){case 0:this.data_allocate(0);this.data_end=this.data_length;this.status=80;break;case 3:this.data_allocate(this.data[4]);this.data_end=this.data_length;this.status=88;this.data[0]=240;this.data[2]=5;this.data[7]=8;break;case 18:var a=this.data[4];this.status=88;A(this.data[1],2);this.data.set([5,128,1,49,31,0,0,0,83,79,78,89,32,32,32,32,67,68,45,82,79, +77,32,67,68,85,45,49,48,48,48,32,49,46,49,97]);this.data_end=this.data_length=Math.min(36,a);break;case 26:this.data_allocate(this.data[4]);this.data_end=this.data_length;this.status=88;break;case 30:this.data_allocate(0);this.data_end=this.data_length;this.status=80;break;case 37:a=this.sector_count-1;this.data_set(new Uint8Array([a>>24&255,a>>16&255,a>>8&255,a&255,0,0,this.sector_size>>8&255,this.sector_size&255]));this.data_end=this.data_length;this.status=88;break;case 40:this.lba_count&1?this.atapi_read_dma(this.data): +this.atapi_read(this.data);break;case 66:a=this.data[8];this.data_allocate(Math.min(8,a));this.data_end=this.data_length;this.status=88;break;case 67:a=this.data[8]|this.data[7]<<8;var b=this.data[9]>>6;this.data_allocate(a);this.data_end=this.data_length;A(b,2);A(this.data[6]);0===b?(a=this.sector_count,this.data.set(new Uint8Array([0,18,1,1,0,20,1,0,0,0,0,0,0,22,170,0,a>>24,a>>16&255,a>>8&255,a&255]))):1===b&&this.data.set(new Uint8Array([0,10,1,1,0,0,0,0,0,0,0,0]));this.status=88;break;case 70:a= +this.data[8]|this.data[7]<<8;a=Math.min(a,32);this.data_allocate(a);this.data_end=this.data_length;this.data[0]=a-4>>24&255;this.data[1]=a-4>>16&255;this.data[2]=a-4>>8&255;this.data[3]=a-4&255;this.data[6]=8;this.data[10]=3;this.status=88;break;case 81:this.data_allocate(0);this.data_end=this.data_length;this.status=80;break;case 82:A(this.data[0]);this.status=81;this.data_length=0;this.error=80;break;case 90:a=this.data[8]|this.data[7]<<8;b=this.data[2];A(b);42===b&&this.data_allocate(Math.min(30, +a));this.data_end=this.data_length;this.status=88;break;case 189:this.data_allocate(this.data[9]|this.data[8]<<8);this.data_end=this.data_length;this.data[5]=1;this.status=88;break;case 74:this.status=81;this.data_length=0;this.error=80;A(this.data[0]);break;case 190:A(this.data[0]);this.data_allocate(0);this.data_end=this.data_length;this.status=80;break;default:this.status=81,this.data_length=0,this.error=80,A(this.data[0])}this.bytecount=this.bytecount&-8|2;0===(this.status&128)&&this.push_irq(); +0===(this.status&128)&&0===this.data_length&&(this.bytecount|=1,this.status&=-9)};H.prototype.do_write=function(){this.status=80;var a=this.data.subarray(0,this.data_length);this.ata_advance(this.current_command,this.data_length/512);this.push_irq();this.buffer.set(this.write_dest,a,function(){});this.report_write(this.data_length)}; +H.prototype.atapi_read=function(a){var b=a[2]<<24|a[3]<<16|a[4]<<8|a[5],c=a[7]<<8|a[8];a=a[1];var d=c*this.sector_size,e=b*this.sector_size;J("CD read lba="+A(b)+" lbacount="+A(c)+" bytecount="+A(d)+" flags="+A(a),32768);this.data_length=0;var g=this.cylinder_high<<8&65280|this.cylinder_low&255;J(A(this.cylinder_high,2)+" "+A(this.cylinder_low,2),32768);this.cylinder_low=this.cylinder_high=0;65535===g&&g--;g>d&&(g=d);e>=this.buffer.byteLength?(pa(!1,"CD read: Outside of disk end="+A(e+d)+" size="+ +A(this.buffer.byteLength),32768),this.status=255,this.push_irq()):0===d?(this.status=80,this.data_pointer=0):(d=Math.min(d,this.buffer.byteLength-e),this.status=208,this.report_read_start(),this.read_buffer(e,d,f=>{this.data_set(f);this.status=88;this.bytecount=this.bytecount&-8|2;this.push_irq();this.data_end=g&=-4;this.data_end>this.data_length&&(this.data_end=this.data_length);this.cylinder_low=this.data_end&255;this.cylinder_high=this.data_end>>8&255;this.report_read_end(d)}))}; +H.prototype.atapi_read_dma=function(a){var b=a[2]<<24|a[3]<<16|a[4]<<8|a[5],c=a[7]<<8|a[8];a=a[1];var d=c*this.sector_size,e=b*this.sector_size;J("CD read DMA lba="+A(b)+" lbacount="+A(c)+" bytecount="+A(d)+" flags="+A(a),32768);e>=this.buffer.byteLength?(pa(!1,"CD read: Outside of disk end="+A(e+d)+" size="+A(this.buffer.byteLength),32768),this.status=255,this.push_irq()):(this.status=208,this.report_read_start(),this.read_buffer(e,d,g=>{this.report_read_end(d);this.status=88;this.bytecount=this.bytecount& +-8|2;this.data_set(g);this.do_atapi_dma()}))}; +H.prototype.do_atapi_dma=function(){if(0!==(this.device.dma_status&1)&&0!==(this.status&8)){var a=this.device.prdt_addr,b=0,c=this.data;do{var d=this.cpu.read32s(a),e=this.cpu.read16(a+4),g=this.cpu.read8(a+7)&128;e||(e=65536);A(d);A(e);A(this.data_length);this.cpu.write_blob(c.subarray(b,Math.min(b+e,this.data_length)),d);b+=e;a+=8;if(b>=this.data_length&&!g){A(b);A(this.data_length);A(this.current_command);break}}while(!g);this.status=80;this.device.dma_status&=-2;this.bytecount=this.bytecount& +-8|3;this.push_irq()}};H.prototype.read_data=function(a){if(this.data_pointer>>1]:this.data32[this.data_pointer>>>2];this.data_pointer+=a;0===(this.data_pointer&(0===(this.data_end&4095)?4095:255))&&(A(this.data[this.data_pointer],2),A(this.data_pointer),A(this.data_length));this.data_pointer>=this.data_end&&this.read_end();return b}this.data_pointer+=a;return 0}; +H.prototype.read_end=function(){A(this.current_command);A(this.data_pointer);A(this.data_end);A(this.data_length);if(160===this.current_command)if(this.data_end===this.data_length)this.status=80,this.bytecount=this.bytecount&-8|3,this.push_irq();else{this.status=88;this.bytecount=this.bytecount&-8|2;this.push_irq();var a=this.cylinder_high<<8&65280|this.cylinder_low&255;this.data_end+a>this.data_length?(this.cylinder_low=this.data_length-this.data_end&255,this.cylinder_high=this.data_length-this.data_end>> +8&255,this.data_end=this.data_length):this.data_end+=a;A(this.data_end)}else this.error=0,this.data_pointer>=this.data_length?this.status=80:(a=196===this.current_command||41===this.current_command?Math.min(this.sectors_per_drq,(this.data_length-this.data_end)/512):1,this.ata_advance(this.current_command,a),this.data_end+=512*a,this.status=88,this.push_irq())}; +H.prototype.write_data_port=function(a,b){if(this.data_pointer>=this.data_end)A(a),A(this.data_end),A(this.data_pointer);else{if(0===(this.data_pointer+b&(0===(this.data_end&4095)?4095:255))||20>this.data_end)A(a>>>0),A(this.data_end),A(this.data_pointer);1===b?this.data[this.data_pointer++]=a:2===b?(this.data16[this.data_pointer>>>1]=a,this.data_pointer+=2):(this.data32[this.data_pointer>>>2]=a,this.data_pointer+=4);this.data_pointer===this.data_end&&this.write_end()}}; +H.prototype.write_data_port8=function(a){this.write_data_port(a,1)};H.prototype.write_data_port16=function(a){this.write_data_port(a,2)};H.prototype.write_data_port32=function(a){this.write_data_port(a,4)};H.prototype.write_end=function(){160===this.current_command?this.atapi_handle():(A(this.data_pointer),A(this.data_length),this.data_pointer>=this.data_length?this.do_write():(A(this.current_command),this.status=88,this.data_end+=512,this.push_irq()))}; +H.prototype.ata_advance=function(a,b){this.bytecount-=b;36===a||41===a||52===a||57===a||37===a||53===a?(a=b+this.get_lba48(),this.sector=a&255|a>>16&65280,this.cylinder_low=a>>8&255,this.cylinder_high=a>>16&255):this.is_lba?(a=b+this.get_lba28(),this.sector=a&255,this.cylinder_low=a>>8&255,this.cylinder_high=a>>16&255,this.head=this.head&-16|a&15):(a=b+this.get_chs(),b=a/(this.head_count*this.sectors_per_track)|0,this.cylinder_low=b&255,this.cylinder_high=b>>8&255,this.head=(a/this.sectors_per_track| +0)%this.head_count&15,this.sector=a%this.sectors_per_track+1&255,this.get_chs())}; +H.prototype.ata_read_sectors=function(a){var b=36===a||41===a,c=this.get_count(b);b=this.get_lba(b);var d=32===a||36===a,e=c*this.sector_size,g=b*this.sector_size;J("ATA read cmd="+A(a)+" mode="+(this.is_lba?"lba":"chs")+" lba="+A(b)+" lbacount="+A(c)+" bytecount="+A(e),32768);g+e>this.buffer.byteLength?(this.status=255,this.push_irq()):(this.status=192,this.report_read_start(),this.read_buffer(g,e,f=>{this.data_set(f);this.status=88;this.data_end=d?512:Math.min(e,512*this.sectors_per_drq);this.ata_advance(a, +d?1:Math.min(c,this.sectors_per_track));this.push_irq();this.report_read_end(e)}))};H.prototype.ata_read_sectors_dma=function(a){var b=37===a;a=this.get_count(b);b=this.get_lba(b);var c=a*this.sector_size,d=b*this.sector_size;A(b);A(a);A(c);d+c>this.buffer.byteLength?(this.status=255,this.push_irq()):(this.status=88,this.device.dma_status|=1)}; +H.prototype.do_ata_read_sectors_dma=function(){var a=37===this.current_command,b=this.get_count(a);a=this.get_lba(a);var c=b*this.sector_size;a*=this.sector_size;this.report_read_start();this.read_buffer(a,c,d=>{var e=this.device.prdt_addr,g=0;do{var f=this.cpu.read32s(e),k=this.cpu.read16(e+4),l=this.cpu.read8(e+7)&128;k||(k=65536);A(f);A(k);this.cpu.write_blob(d.subarray(g,g+k),f);g+=k;e+=8}while(!l);this.ata_advance(this.current_command,b);this.status=80;this.device.dma_status&=-2;this.current_command= +-1;this.push_irq();this.report_read_end(c)})};H.prototype.ata_write_sectors=function(a){var b=52===a||57===a,c=this.get_count(b);b=this.get_lba(b);a=48===a||52===a;var d=c*this.sector_size,e=b*this.sector_size;A(b);A(c);A(d);e+d>this.buffer.byteLength?(this.status=255,this.push_irq()):(this.status=88,this.data_allocate_noclear(d),this.data_end=a?512:Math.min(d,512*this.sectors_per_drq),this.write_dest=e)}; +H.prototype.ata_write_sectors_dma=function(a){var b=53===a;a=this.get_count(b);b=this.get_lba(b);var c=a*this.sector_size,d=b*this.sector_size;A(b);A(a);A(c);d+c>this.buffer.byteLength?(this.status=255,this.push_irq()):(this.status=88,this.device.dma_status|=1)}; +H.prototype.do_ata_write_sectors_dma=function(){var a=53===this.current_command,b=this.get_count(a),c=this.get_lba(a);a=b*this.sector_size;c*=this.sector_size;var d=this.device.prdt_addr,e=0;J("prdt addr: "+A(d,8),32768);const g=new Uint8Array(a);do{var f=this.cpu.read32s(d),k=this.cpu.read16(d+4),l=this.cpu.read8(d+7)&128;k||(k=65536);J("dma write transfer dest="+A(f)+" prd_count="+A(k),32768);f=this.cpu.mem8.subarray(f,f+k);g.set(f,e);e+=k;d+=8}while(!l);this.buffer.set(c,g,()=>{this.ata_advance(this.current_command, +b);this.status=80;this.push_irq();this.device.dma_status&=-2;this.current_command=-1});this.report_write(a)};H.prototype.get_chs=function(){return((this.cylinder_low&255|this.cylinder_high<<8&65280)*this.head_count+this.head)*this.sectors_per_track+(this.sector&255)-1};H.prototype.get_lba28=function(){return this.sector&255|this.cylinder_low<<8&65280|this.cylinder_high<<16&16711680|(this.head&15)<<24}; +H.prototype.get_lba48=function(){return(this.sector&255|this.cylinder_low<<8&65280|this.cylinder_high<<16&16711680|this.sector>>8<<24&4278190080)>>>0};H.prototype.get_lba=function(a){return a?this.get_lba48():this.is_lba?this.get_lba28():this.get_chs()};H.prototype.get_count=function(a){a?(a=this.bytecount,0===a&&(a=65536)):(a=this.bytecount&255,0===a&&(a=256));return a}; +H.prototype.create_identify_packet=function(){if(this.drive_head&16)this.data_allocate(0);else{for(var a=0;512>a;a++)this.data[a]=0;a=Math.min(16383,this.cylinder_count);this.data_set([64,this.is_atapi?133:0,a,a>>8,0,0,this.head_count,this.head_count>>8,this.sectors_per_track/512,this.sectors_per_track/512>>8,0,2,this.sectors_per_track,this.sectors_per_track>>8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,2,4,0,0,0,0,0,0,0,0,0,56,118,32,54,68,72,32,32,32,32,32,32,32,32,32,32,32,32,32, +32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,128,0,1,0,0,2,0,0,0,2,0,2,7,0,a,a>>8,this.head_count,this.head_count>>8,this.sectors_per_track,0,this.sector_count&255,this.sector_count>>8&255,this.sector_count>>16&255,this.sector_count>>24&255,0,0,this.sector_count&255,this.sector_count>>8&255,this.sector_count>>16&255,this.sector_count>>24&255,0,0,160===this.current_command?0:7,160===this.current_command?0:4,0,0,30,0,30,0,30,0,30,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,0, +0,0,0,0,0,116,0,64,0,64,0,116,0,64,0,0,0,0,0,0,0,0,0,0,1,96,0,0,0,0,0,0,0,0,0,0,0,0,this.sector_count&255,this.sector_count>>8&255,this.sector_count>>16&255,this.sector_count>>24&255]);this.data_end=this.data_length=512}};H.prototype.data_allocate=function(a){this.data_allocate_noclear(a);for(var b=0;b>2;b++)this.data32[b]=0}; +H.prototype.data_allocate_noclear=function(a){this.data.length{this.cancelled_io_ids.delete(d)?this.in_progress_io_ids.has(d):(this.in_progress_io_ids.delete(d),c(e))})};H.prototype.cancel_io_operations=function(){for(const a of this.in_progress_io_ids)this.cancelled_io_ids.add(a);this.in_progress_io_ids.clear()}; +H.prototype.get_state=function(){var a=[];a[0]=this.bytecount;a[1]=this.cylinder_count;a[2]=this.cylinder_high;a[3]=this.cylinder_low;a[4]=this.data_pointer;a[5]=0;a[6]=0;a[7]=0;a[8]=0;a[9]=this.drive_head;a[10]=this.error;a[11]=this.head;a[12]=this.head_count;a[13]=this.is_atapi;a[14]=this.is_lba;a[15]=this.lba_count;a[16]=this.data;a[17]=this.data_length;a[18]=this.sector;a[19]=this.sector_count;a[20]=this.sector_size;a[21]=this.sectors_per_drq;a[22]=this.sectors_per_track;a[23]=this.status;a[24]= +this.write_dest;a[25]=this.current_command;a[26]=this.data_end;a[27]=this.current_atapi_command;a[28]=this.buffer;return a}; +H.prototype.set_state=function(a){this.bytecount=a[0];this.cylinder_count=a[1];this.cylinder_high=a[2];this.cylinder_low=a[3];this.data_pointer=a[4];this.drive_head=a[9];this.error=a[10];this.head=a[11];this.head_count=a[12];this.is_atapi=a[13];this.is_lba=a[14];this.lba_count=a[15];this.data=a[16];this.data_length=a[17];this.sector=a[18];this.sector_count=a[19];this.sector_size=a[20];this.sectors_per_drq=a[21];this.sectors_per_track=a[22];this.status=a[23];this.write_dest=a[24];this.current_command= +a[25];this.data_end=a[26];this.current_atapi_command=a[27];this.data16=new Uint16Array(this.data.buffer);this.data32=new Int32Array(this.data.buffer);this.buffer&&this.buffer.set_state(a[28])};function qa(a){this.pci_addr=new Uint8Array(4);this.pci_value=new Uint8Array(4);this.pci_response=new Uint8Array(4);this.pci_status=new Uint8Array(4);this.pci_addr32=new Int32Array(this.pci_addr.buffer);this.pci_value32=new Int32Array(this.pci_value.buffer);this.pci_response32=new Int32Array(this.pci_response.buffer);this.pci_status32=new Int32Array(this.pci_status.buffer);this.device_spaces=[];this.devices=[];this.cpu=a;for(var b=0;256>b;b++)this.device_spaces[b]=void 0,this.devices[b]=void 0;this.io= +a.io;a.io.register_write(3324,this,function(c){this.pci_write8(this.pci_addr32[0],c)},function(c){this.pci_write16(this.pci_addr32[0],c)},function(c){this.pci_write32(this.pci_addr32[0],c)});a.io.register_write(3325,this,function(c){this.pci_write8(this.pci_addr32[0]+1|0,c)});a.io.register_write(3326,this,function(c){this.pci_write8(this.pci_addr32[0]+2|0,c)},function(c){this.pci_write16(this.pci_addr32[0]+2|0,c)});a.io.register_write(3327,this,function(c){this.pci_write8(this.pci_addr32[0]+3|0,c)}); +a.io.register_read_consecutive(3324,this,function(){return this.pci_response[0]},function(){return this.pci_response[1]},function(){return this.pci_response[2]},function(){return this.pci_response[3]});a.io.register_read_consecutive(3320,this,function(){return this.pci_status[0]},function(){return this.pci_status[1]},function(){return this.pci_status[2]},function(){return this.pci_status[3]});a.io.register_write_consecutive(3320,this,function(c){this.pci_addr[0]=c&252},function(c){2===(this.pci_addr[1]& +6)&&6===(c&6)?a.reboot_internal():this.pci_addr[1]=c},function(c){this.pci_addr[2]=c},function(c){this.pci_addr[3]=c;this.pci_query()});this.register_device({pci_id:0,pci_space:[134,128,55,18,0,0,0,0,2,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0],pci_bars:[],name:"82441FX PMC"});this.isa_bridge={pci_id:8,pci_space:[134,128,0,112,7,0,0,2,0,0,1,6,0,0,128,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],pci_bars:[],name:"82371SB PIIX3 ISA"};this.isa_bridge_space=this.register_device(this.isa_bridge);this.isa_bridge_space8=new Uint8Array(this.isa_bridge_space.buffer)}qa.prototype.get_state=function(){for(var a=[],b=0;256>b;b++)a[b]=this.device_spaces[b];a[256]=this.pci_addr;a[257]=this.pci_value;a[258]=this.pci_response;a[259]=this.pci_status;return a}; +qa.prototype.set_state=function(a){for(var b=0;256>b;b++){var c=this.devices[b],d=a[b];if(c&&d){for(var e=0;e>3&31;var d="query enabled="+(this.pci_addr[3]>>7)+(" bdf="+A(a,4));d+=" dev="+A(c,2);d+=" addr="+A(b,2);a=this.device_spaces[a];void 0!==a?(this.pci_status32[0]=-2147483648,this.pci_response32[0]=b>2]:0,d+=" "+A(this.pci_addr32[0]>>>0,8)+" -> "+A(this.pci_response32[0]>>>0,8)):(this.pci_response32[0]=-1,this.pci_status32[0]=0)}; +qa.prototype.pci_write8=function(a,b){var c=a>>8&65535;a&=255;var d=new Uint8Array(this.device_spaces[c].buffer);A(a);A(c>>3,2);A(a,4);A(b,2);d[a]=b};qa.prototype.pci_write16=function(a,b){var c=a>>8&65535;a&=255;var d=new Uint16Array(this.device_spaces[c].buffer);16<=a&&44>a?A(a):(A(a),A(c>>3,2),A(a,4),A(b,4),d[a>>>1]=b)}; +qa.prototype.pci_write32=function(a,b){var c=a>>8&65535;a&=255;var d=this.device_spaces[c],e=this.devices[c];if(d)if(16<=a&&40>a){e=e.pci_bars[a-16>>2];A(b>>>0);A(c>>3,2);if(e){c=a>>2;var g=d[c]&1;-1===(b|3|e.size-1)?(b=~(e.size-1)|g,0===g&&(d[c]=b)):0===g&&(d[c]=e.original_bar);if(1===g){g=d[c]&65534;var f=b&65534;A(g>>>0,8);A(f>>>0,8);this.set_io_bars(e,g,f);d[c]=b|1}}else d[a>>2]=0;A(d[a>>2]>>>0)}else 48===a?(A(c>>3,2),A(b>>>0,8),d[a>>2]=e.pci_rom_size?-1===(b|2047)?-e.pci_rom_size|0:e.pci_rom_address| +0:0):4===a?(A(c>>3,2),A(a,4),A(b>>>0,8)):(A(c>>3,2),A(a,4),A(b>>>0,8),d[a>>>2]=b)};qa.prototype.register_device=function(a){var b=a.pci_id;A(b);var c=new Int32Array(64);c.set(new Int32Array((new Uint8Array(a.pci_space)).buffer));this.device_spaces[b]=c;this.devices[b]=a;b=c.slice(4,10);for(var d=0;d>8&255)-1+((a>>3)-1&255)&3)])};qa.prototype.lower_irq=function(a){this.cpu.device_lower_irq(this.isa_bridge_space8[96+((this.device_spaces[a][15]>>8&255)+(a>>3&255)-2&3)])};function K(a,b){this.io=a.io;this.cpu=a;this.dma=a.devices.dma;this.bytes_expecting=0;this.receiving_command=new Uint8Array(10);this.receiving_index=0;this.next_command=null;this.response_data=new Uint8Array(10);this.last_head=this.last_cylinder=this.drive=this.status_reg2=this.status_reg1=this.status_reg0=this.response_length=this.response_index=0;this.last_sector=1;this.dir=this.dor=0;this.fdb_image=this.fda_image=null;b?this.set_fda(b):(this.eject_fda(),this.cpu.devices.rtc.cmos_write(16,64)); +this.io.register_read(1008,this,this.port3F0_read);this.io.register_read(1010,this,this.port3F2_read);this.io.register_read(1012,this,this.port3F4_read);this.io.register_read(1013,this,this.port3F5_read);this.io.register_read(1015,this,this.port3F7_read);this.io.register_write(1010,this,this.port3F2_write);this.io.register_write(1012,this,this.port3F4_write);this.io.register_write(1013,this,this.port3F5_write)} +K.prototype.eject_fda=function(){this.fda_image=null;this.number_of_cylinders=this.number_of_heads=this.sectors_per_track=0;this.dir=128}; +K.prototype.set_fda=function(a){var b={[163840]:{type:1,tracks:40,sectors:8,heads:1},[184320]:{type:1,tracks:40,sectors:9,heads:1},[204800]:{type:1,tracks:40,sectors:10,heads:1},[327680]:{type:1,tracks:40,sectors:8,heads:2},[368640]:{type:1,tracks:40,sectors:9,heads:2},[409600]:{type:1,tracks:40,sectors:10,heads:2},[737280]:{type:3,tracks:80,sectors:9,heads:2},[1228800]:{type:2,tracks:80,sectors:15,heads:2},[1474560]:{type:4,tracks:80,sectors:18,heads:2},[1763328]:{type:5,tracks:82,sectors:21,heads:2}, +[2949120]:{type:5,tracks:80,sectors:36,heads:2},512:{type:1,tracks:1,sectors:1,heads:1}};let c=a.byteLength,d=b[c];d||(c=1474560>4);A(a);this.dor=a};K.prototype.check_drive_status=function(){this.status_reg1=this.fda_image?0:5;this.response_index=0;this.response_length=1;this.response_data[0]=0}; +K.prototype.seek=function(a){if(0===(a[0]&3)){var b=a[1];a=a[0]>>2&1;b!==this.last_cylinder&&(this.dir=0);this.status_reg1=this.fda_image?0:5;this.status_reg0=32;this.last_cylinder=b;this.last_head=a}this.raise_irq()};K.prototype.calibrate=function(a){this.seek([a[0],0])};K.prototype.check_interrupt_status=function(){this.response_index=0;this.response_length=2;this.response_data[0]=this.status_reg0;this.response_data[1]=this.last_cylinder}; +K.prototype.do_sector=function(a,b){var c=b[2],d=b[1],e=b[3],g=128<this.sectors_per_track&&(d=1,c++,c>=this.number_of_heads&&(c=0,b++)),b!==this.last_cylinder&&(this.dir=0),this.status_reg0=32,this.last_cylinder=b,this.last_head=c,this.last_sector=d,this.response_index=0,this.response_length=7,this.response_data[0]=c<<2|32,this.response_data[1]=0,this.response_data[2]=0,this.response_data[3]=b,this.response_data[4]=c,this.response_data[5]=d,this.response_data[6]=a[4],this.raise_irq())}; +K.prototype.fix_drive_data=function(a){a.slice(0,this.bytes_expecting)};K.prototype.configure=function(a){a.slice(0,this.bytes_expecting)};K.prototype.read_sector_id=function(){this.response_index=0;this.response_length=7;this.response_data[0]=0;this.response_data[1]=0;this.response_data[2]=0;this.response_data[3]=0;this.response_data[4]=0;this.response_data[5]=0;this.response_data[6]=0;this.raise_irq()};K.prototype.raise_irq=function(){this.dor&8&&this.cpu.device_raise_irq(6)};E.prototype.mmap_read8=function(a){return this.memory_map_read8[a>>>17](a)};E.prototype.mmap_write8=function(a,b){this.memory_map_write8[a>>>17](a,b)};E.prototype.mmap_read16=function(a){var b=this.memory_map_read8[a>>>17];return b(a)|b(a+1|0)<<8};E.prototype.mmap_write16=function(a,b){var c=this.memory_map_write8[a>>>17];c(a,b&255);c(a+1|0,b>>8)};E.prototype.mmap_read32=function(a){return this.memory_map_read32[a>>>17](a)}; +E.prototype.mmap_write32=function(a,b){this.memory_map_write32[a>>>17](a,b)};E.prototype.mmap_write64=function(a,b,c){var d=this.memory_map_write32[a>>>17];d(a,b);d(a+4,c)};E.prototype.mmap_write128=function(a,b,c,d,e){var g=this.memory_map_write32[a>>>17];g(a,b);g(a+4,c);g(a+8,d);g(a+12,e)};E.prototype.write_blob=function(a,b){a.length&&(this.in_mapped_range(b),this.in_mapped_range(b+a.length-1),this.jit_dirty_cache(b,b+a.length),this.mem8.set(a,b))}; +E.prototype.read_blob=function(a,b){b&&(this.in_mapped_range(a),this.in_mapped_range(a+b-1));return this.mem8.subarray(a,a+b)};function L(a){this.cpu=a;this.channel_page=new Uint8Array(8);this.channel_pagehi=new Uint8Array(8);this.channel_addr=new Uint16Array(8);this.channel_addr_init=new Uint16Array(8);this.channel_count=new Uint16Array(8);this.channel_count_init=new Uint16Array(8);this.channel_mask=new Uint8Array(8);this.channel_mode=new Uint8Array(8);this.unmask_listeners=[];this.lsb_msb_flipflop=0;a=a.io;a.register_write(0,this,this.port_addr_write.bind(this,0));a.register_write(2,this,this.port_addr_write.bind(this, +1));a.register_write(4,this,this.port_addr_write.bind(this,2));a.register_write(6,this,this.port_addr_write.bind(this,3));a.register_write(1,this,this.port_count_write.bind(this,0));a.register_write(3,this,this.port_count_write.bind(this,1));a.register_write(5,this,this.port_count_write.bind(this,2));a.register_write(7,this,this.port_count_write.bind(this,3));a.register_read(0,this,this.port_addr_read.bind(this,0));a.register_read(2,this,this.port_addr_read.bind(this,1));a.register_read(4,this,this.port_addr_read.bind(this, +2));a.register_read(6,this,this.port_addr_read.bind(this,3));a.register_read(1,this,this.port_count_read.bind(this,0));a.register_read(3,this,this.port_count_read.bind(this,1));a.register_read(5,this,this.port_count_read.bind(this,2));a.register_read(7,this,this.port_count_read.bind(this,3));a.register_write(192,this,this.port_addr_write.bind(this,4));a.register_write(196,this,this.port_addr_write.bind(this,5));a.register_write(200,this,this.port_addr_write.bind(this,6));a.register_write(204,this, +this.port_addr_write.bind(this,7));a.register_write(194,this,this.port_count_write.bind(this,4));a.register_write(198,this,this.port_count_write.bind(this,5));a.register_write(202,this,this.port_count_write.bind(this,6));a.register_write(206,this,this.port_count_write.bind(this,7));a.register_read(192,this,this.port_addr_read.bind(this,4));a.register_read(196,this,this.port_addr_read.bind(this,5));a.register_read(200,this,this.port_addr_read.bind(this,6));a.register_read(204,this,this.port_addr_read.bind(this, +7));a.register_read(194,this,this.port_count_read.bind(this,4));a.register_read(198,this,this.port_count_read.bind(this,5));a.register_read(202,this,this.port_count_read.bind(this,6));a.register_read(206,this,this.port_count_read.bind(this,7));a.register_write(135,this,this.port_page_write.bind(this,0));a.register_write(131,this,this.port_page_write.bind(this,1));a.register_write(129,this,this.port_page_write.bind(this,2));a.register_write(130,this,this.port_page_write.bind(this,3));a.register_write(143, +this,this.port_page_write.bind(this,4));a.register_write(139,this,this.port_page_write.bind(this,5));a.register_write(137,this,this.port_page_write.bind(this,6));a.register_write(138,this,this.port_page_write.bind(this,7));a.register_read(135,this,this.port_page_read.bind(this,0));a.register_read(131,this,this.port_page_read.bind(this,1));a.register_read(129,this,this.port_page_read.bind(this,2));a.register_read(130,this,this.port_page_read.bind(this,3));a.register_read(143,this,this.port_page_read.bind(this, +4));a.register_read(139,this,this.port_page_read.bind(this,5));a.register_read(137,this,this.port_page_read.bind(this,6));a.register_read(138,this,this.port_page_read.bind(this,7));a.register_write(1159,this,this.port_pagehi_write.bind(this,0));a.register_write(1155,this,this.port_pagehi_write.bind(this,1));a.register_write(1153,this,this.port_pagehi_write.bind(this,2));a.register_write(1154,this,this.port_pagehi_write.bind(this,3));a.register_write(1163,this,this.port_pagehi_write.bind(this,5)); +a.register_write(1161,this,this.port_pagehi_write.bind(this,6));a.register_write(1162,this,this.port_pagehi_write.bind(this,7));a.register_read(1159,this,this.port_pagehi_read.bind(this,0));a.register_read(1155,this,this.port_pagehi_read.bind(this,1));a.register_read(1153,this,this.port_pagehi_read.bind(this,2));a.register_read(1154,this,this.port_pagehi_read.bind(this,3));a.register_read(1163,this,this.port_pagehi_read.bind(this,5));a.register_read(1161,this,this.port_pagehi_read.bind(this,6));a.register_read(1162, +this,this.port_pagehi_read.bind(this,7));a.register_write(10,this,this.port_singlemask_write.bind(this,0));a.register_write(212,this,this.port_singlemask_write.bind(this,4));a.register_write(15,this,this.port_multimask_write.bind(this,0));a.register_write(222,this,this.port_multimask_write.bind(this,4));a.register_read(15,this,this.port_multimask_read.bind(this,0));a.register_read(222,this,this.port_multimask_read.bind(this,4));a.register_write(11,this,this.port_mode_write.bind(this,0));a.register_write(214, +this,this.port_mode_write.bind(this,4));a.register_write(12,this,this.portC_write);a.register_write(216,this,this.portC_write)}L.prototype.get_state=function(){return[this.channel_page,this.channel_pagehi,this.channel_addr,this.channel_addr_init,this.channel_count,this.channel_count_init,this.channel_mask,this.channel_mode,this.lsb_msb_flipflop]}; +L.prototype.set_state=function(a){this.channel_page=a[0];this.channel_pagehi=a[1];this.channel_addr=a[2];this.channel_addr_init=a[3];this.channel_count=a[4];this.channel_count_init=a[5];this.channel_mask=a[6];this.channel_mode=a[7];this.lsb_msb_flipflop=a[8]};L.prototype.port_count_write=function(a,b){A(b);this.channel_count[a]=this.flipflop_get(this.channel_count[a],b,!1);this.channel_count_init[a]=this.flipflop_get(this.channel_count_init[a],b,!0)}; +L.prototype.port_count_read=function(a){A(this.channel_count[a]);return this.flipflop_read(this.channel_count[a])};L.prototype.port_addr_write=function(a,b){A(b);this.channel_addr[a]=this.flipflop_get(this.channel_addr[a],b,!1);this.channel_addr_init[a]=this.flipflop_get(this.channel_addr_init[a],b,!0)};L.prototype.port_addr_read=function(a){A(this.channel_addr[a]);return this.flipflop_read(this.channel_addr[a])};L.prototype.port_pagehi_write=function(a,b){A(b);this.channel_pagehi[a]=b}; +L.prototype.port_pagehi_read=function(a){return this.channel_pagehi[a]};L.prototype.port_page_write=function(a,b){A(b);this.channel_page[a]=b};L.prototype.port_page_read=function(a){return this.channel_page[a]};L.prototype.port_singlemask_write=function(a,b){this.update_mask((b&3)+a,b&4?1:0)};L.prototype.port_multimask_write=function(a,b){A(b);for(var c=0;4>c;c++)this.update_mask(a+c,b&1<a.byteLength)e(!0);else{var k=this.cpu;this.channel_addr[d]+=g;a.get(b,g,function(l){k.write_blob(l,f);e(!1)})}}; +L.prototype.do_write=function(a,b,c,d,e){var g=this.channel_count[d]+1&65535,f=5<=d?2:1,k=g*f,l=this.address_get_8bit(d),m=!1,n=!1,p=this.channel_mode[d]&16;J("to "+A(l)+" len "+A(k),16);ck&&(n=!0);b+k>a.byteLength?e(!0):(this.channel_addr[d]+=g,this.channel_count[d]-=g,!m&&p&&(this.channel_addr[d]=this.channel_addr_init[d],this.channel_count[d]=this.channel_count_init[d]),a.set(b,this.cpu.mem8.subarray(l,l+k),()=>{n&&p?this.do_write(a,b+k,c-k,d,e):e(!1)}))}; +L.prototype.address_get_8bit=function(a){var b=this.channel_addr[a];5<=a&&(b<<=1);b=b&65535|this.channel_page[a]<<16;return b|=this.channel_pagehi[a]<<24};L.prototype.count_get_8bit=function(a){var b=this.channel_count[a]+1;5<=a&&(b*=2);return b};L.prototype.flipflop_get=function(a,b,c){c||(this.lsb_msb_flipflop^=1);return this.lsb_msb_flipflop?a&-256|b:a&-65281|b<<8};L.prototype.flipflop_read=function(a){return(this.lsb_msb_flipflop^=1)?a&255:a>>8&255};function ra(a,b){this.cpu=a;this.bus=b;this.counter_start_time=new Float64Array(3);this.counter_start_value=new Uint16Array(3);this.counter_next_low=new Uint8Array(4);this.counter_enabled=new Uint8Array(4);this.counter_mode=new Uint8Array(4);this.counter_read_mode=new Uint8Array(4);this.counter_latch=new Uint8Array(4);this.counter_latch_value=new Uint16Array(3);this.counter_reload=new Uint16Array(3);a.io.register_read(97,this,function(){var c=D.microtick(),d=66.66666666666667*c&1;c=this.did_rollover(2, +c);return d<<4|c<<5});a.io.register_write(97,this,function(c){c&1?this.bus.send("pcspeaker-enable"):this.bus.send("pcspeaker-disable")});a.io.register_read(64,this,function(){return this.counter_read(0)});a.io.register_read(65,this,function(){return this.counter_read(1)});a.io.register_read(66,this,function(){return this.counter_read(2)});a.io.register_write(64,this,function(c){this.counter_write(0,c)});a.io.register_write(65,this,function(c){this.counter_write(1,c)});a.io.register_write(66,this, +function(c){this.counter_write(2,c);this.bus.send("pcspeaker-update",[this.counter_mode[2],this.counter_reload[2]])});a.io.register_write(67,this,this.port43_write)}ra.prototype.get_state=function(){var a=[];a[0]=this.counter_next_low;a[1]=this.counter_enabled;a[2]=this.counter_mode;a[3]=this.counter_read_mode;a[4]=this.counter_latch;a[5]=this.counter_latch_value;a[6]=this.counter_reload;a[7]=this.counter_start_time;a[8]=this.counter_start_value;return a}; +ra.prototype.set_state=function(a){this.counter_next_low=a[0];this.counter_enabled=a[1];this.counter_mode=a[2];this.counter_read_mode=a[3];this.counter_latch=a[4];this.counter_latch_value=a[5];this.counter_reload=a[6];this.counter_start_time=a[7];this.counter_start_value=a[8]}; +ra.prototype.timer=function(a,b){var c=100;b||(this.counter_enabled[0]&&this.did_rollover(0,a)?(this.counter_start_value[0]=this.get_counter_value(0,a),this.counter_start_time[0]=a,this.cpu.device_lower_irq(0),this.cpu.device_raise_irq(0),0===this.counter_mode[0]&&(this.counter_enabled[0]=0)):this.cpu.device_lower_irq(0),this.counter_enabled[0]&&(c=(this.counter_start_value[0]-Math.floor(1193.1816666*(a-this.counter_start_time[0])))/1193.1816666));return c}; +ra.prototype.get_counter_value=function(a,b){if(!this.counter_enabled[a])return 0;b=this.counter_start_value[a]-Math.floor(1193.1816666*(b-this.counter_start_time[a]));a=this.counter_reload[a];b>=a?b%=a:0>b&&(b=b%a+a);return b};ra.prototype.did_rollover=function(a,b){b-=this.counter_start_time[a];return 0>b?!0:this.counter_start_value[a]>8;b=this.counter_next_low[a];3===this.counter_mode[a]&&(this.counter_next_low[a]^=1);a=this.get_counter_value(a,D.microtick());return b?a&255:a>>8}; +ra.prototype.counter_write=function(a,b){this.counter_reload[a]=this.counter_next_low[a]?this.counter_reload[a]&-256|b:this.counter_reload[a]&255|b<<8;3===this.counter_read_mode[a]&&this.counter_next_low[a]||(this.counter_reload[a]||(this.counter_reload[a]=65535),this.counter_start_value[a]=this.counter_reload[a],this.counter_enabled[a]=!0,this.counter_start_time[a]=D.microtick(),A(this.counter_reload[a]));3===this.counter_read_mode[a]&&(this.counter_next_low[a]^=1)}; +ra.prototype.port43_write=function(a){var b=a>>1&7,c=a>>6&3;a=a>>4&3;3!==c&&(0===a?(this.counter_latch[c]=2,b=this.get_counter_value(c,D.microtick()),this.counter_latch_value[c]=b?b-1:0):(6<=b&&(b&=-5),this.counter_next_low[c]=1===a?0:1,0===c&&this.cpu.device_lower_irq(0),0!==b&&3!==b&&2!==b&&A(b),this.counter_mode[c]=b,this.counter_read_mode[c]=a,2===c&&this.bus.send("pcspeaker-update",[this.counter_mode[2],this.counter_reload[2]])))};ra.prototype.dump=function(){};var ua=Uint32Array.from([655360,655360,720896,753664]),va=Uint32Array.from([131072,65536,32768,32768]); +function M(a,b,c){this.cpu=a;this.bus=b;this.vga_memory_size=c;this.cursor_address=0;this.cursor_scanline_start=14;this.cursor_scanline_end=15;this.max_cols=80;this.max_rows=25;this.virtual_height=this.virtual_width=this.screen_height=this.screen_width=0;this.layers=[];this.start_address_latched=this.start_address=0;this.crtc=new Uint8Array(25);this.line_compare=this.offset_register=this.preset_row_scan=this.underline_location_register=this.vertical_blank_start=this.vertical_display_enable_end=this.horizontal_blank_start= +this.horizontal_display_enable_end=this.crtc_mode=0;this.graphical_mode_is_linear=!0;this.graphical_mode=!1;setTimeout(()=>{b.send("screen-set-mode",this.graphical_mode)},0);this.vga256_palette=new Int32Array(256);this.latch_dword=0;this.svga_version=45253;this.svga_height=this.svga_width=0;this.svga_enabled=!1;this.svga_bpp=32;this.svga_offset_y=this.svga_offset=this.svga_bank_offset=0;this.pci_space=[52,18,17,17,3,1,0,0,0,0,0,3,0,0,0,0,8,14680064,57344,224,0,0,0,0,0,0,191,254,0,0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,244,26,0,17,0,0,190,254,0,0,0,0,0,0,0,0,0,0,0,0];this.pci_id=144;this.pci_bars=[{size:c}];this.pci_rom_size=65536;this.pci_rom_address=4272947200;this.name="vga";this.stats={is_graphical:!1,res_x:0,res_y:0,bpp:0};this.dac_state=this.dac_color_index_read=this.dac_color_index_write=this.index_crtc=0;this.dac_mask=255;this.dac_map=new Uint8Array(16);this.attribute_controller_index=-1;this.palette_source=32;this.color_select=this.horizontal_panning=this.color_plane_enable=this.attribute_mode= +0;this.sequencer_index=-1;this.plane_write_bm=15;this.clocking_mode=this.sequencer_memory_mode=0;this.graphics_index=-1;this.planar_rotate_reg=this.planar_mode=this.plane_read=0;this.planar_bitmap=255;this.max_scan_line=this.color_dont_care=this.color_compare=this.miscellaneous_graphics_register=this.planar_setreset_enable=this.planar_setreset=0;this.port_3DA_value=this.miscellaneous_output_register=255;c=a.io;c.register_write(960,this,this.port3C0_write);c.register_read(960,this,this.port3C0_read, +this.port3C0_read16);c.register_read(961,this,this.port3C1_read);c.register_write(962,this,this.port3C2_write);c.register_write_consecutive(964,this,this.port3C4_write,this.port3C5_write);c.register_read(964,this,this.port3C4_read);c.register_read(965,this,this.port3C5_read);c.register_write_consecutive(974,this,this.port3CE_write,this.port3CF_write);c.register_read(974,this,this.port3CE_read);c.register_read(975,this,this.port3CF_read);c.register_read(966,this,this.port3C6_read);c.register_write(966, +this,this.port3C6_write);c.register_write(967,this,this.port3C7_write);c.register_read(967,this,this.port3C7_read);c.register_write(968,this,this.port3C8_write);c.register_read(968,this,this.port3C8_read);c.register_write(969,this,this.port3C9_write);c.register_read(969,this,this.port3C9_read);c.register_read(972,this,this.port3CC_read);c.register_write_consecutive(980,this,this.port3D4_write,this.port3D5_write);c.register_read(980,this,this.port3D4_read);c.register_read(981,this,this.port3D5_read, +()=>this.port3D5_read());c.register_read(970,this,function(){return 0});c.register_read(986,this,this.port3DA_read);c.register_read(954,this,this.port3DA_read);this.dispi_index=-1;this.dispi_enable_value=0;c.register_write(462,this,void 0,this.port1CE_write);c.register_write(463,this,void 0,this.port1CF_write);c.register_read(463,this,void 0,this.port1CF_read);void 0===this.vga_memory_size||262144>this.vga_memory_size?this.vga_memory_size=262144:268435456>>0;this.svga_memory=r.view(Uint8Array,a.wasm_memory,d,this.vga_memory_size);this.diff_addr_min=this.vga_memory_size;this.diff_addr_max=0;this.diff_plot_min=this.vga_memory_size;this.diff_plot_max=0;this.image_data=null;b.register("screen-fill-buffer",function(){this.screen_fill_buffer()},this);this.vga_memory=new Uint8Array(262144);this.plane0=new Uint8Array(this.vga_memory.buffer, +0,65536);this.plane1=new Uint8Array(this.vga_memory.buffer,65536,65536);this.plane2=new Uint8Array(this.vga_memory.buffer,131072,65536);this.plane3=new Uint8Array(this.vga_memory.buffer,196608,65536);this.pixel_buffer=new Uint8Array(524288);var e=this;c.mmap_register(655360,131072,function(g){return e.vga_memory_read(g)},function(g,f){e.vga_memory_write(g,f)});a.devices.pci.register_device(this)} +M.prototype.get_state=function(){var a=[];a[0]=this.vga_memory_size;a[1]=this.cursor_address;a[2]=this.cursor_scanline_start;a[3]=this.cursor_scanline_end;a[4]=this.max_cols;a[5]=this.max_rows;a[6]=this.vga_memory;a[7]=this.dac_state;a[8]=this.start_address;a[9]=this.graphical_mode;a[10]=this.vga256_palette;a[11]=this.latch_dword;a[12]=this.color_compare;a[13]=this.color_dont_care;a[14]=this.miscellaneous_graphics_register;a[15]=this.svga_width;a[16]=this.svga_height;a[17]=this.crtc_mode;a[18]=this.svga_enabled; +a[19]=this.svga_bpp;a[20]=this.svga_bank_offset;a[21]=this.svga_offset;a[22]=this.index_crtc;a[23]=this.dac_color_index_write;a[24]=this.dac_color_index_read;a[25]=this.dac_map;a[26]=this.sequencer_index;a[27]=this.plane_write_bm;a[28]=this.sequencer_memory_mode;a[29]=this.graphics_index;a[30]=this.plane_read;a[31]=this.planar_mode;a[32]=this.planar_rotate_reg;a[33]=this.planar_bitmap;a[34]=this.max_scan_line;a[35]=this.miscellaneous_output_register;a[36]=this.port_3DA_value;a[37]=this.dispi_index; +a[38]=this.dispi_enable_value;a[39]=this.svga_memory;a[40]=this.graphical_mode_is_linear;a[41]=this.attribute_controller_index;a[42]=this.offset_register;a[43]=this.planar_setreset;a[44]=this.planar_setreset_enable;a[45]=this.start_address_latched;a[46]=this.crtc;a[47]=this.horizontal_display_enable_end;a[48]=this.horizontal_blank_start;a[49]=this.vertical_display_enable_end;a[50]=this.vertical_blank_start;a[51]=this.underline_location_register;a[52]=this.preset_row_scan;a[53]=this.offset_register; +a[54]=this.palette_source;a[55]=this.attribute_mode;a[56]=this.color_plane_enable;a[57]=this.horizontal_panning;a[58]=this.color_select;a[59]=this.clocking_mode;a[60]=this.line_compare;a[61]=this.pixel_buffer;a[62]=this.dac_mask;return a}; +M.prototype.set_state=function(a){this.vga_memory_size=a[0];this.cursor_address=a[1];this.cursor_scanline_start=a[2];this.cursor_scanline_end=a[3];this.max_cols=a[4];this.max_rows=a[5];a[6]&&this.vga_memory.set(a[6]);this.dac_state=a[7];this.start_address=a[8];this.graphical_mode=a[9];this.vga256_palette=a[10];this.latch_dword=a[11];this.color_compare=a[12];this.color_dont_care=a[13];this.miscellaneous_graphics_register=a[14];this.svga_width=a[15];this.svga_height=a[16];this.crtc_mode=a[17];this.svga_enabled= +a[18];this.svga_bpp=a[19];this.svga_bank_offset=a[20];this.svga_offset=a[21];this.index_crtc=a[22];this.dac_color_index_write=a[23];this.dac_color_index_read=a[24];this.dac_map=a[25];this.sequencer_index=a[26];this.plane_write_bm=a[27];this.sequencer_memory_mode=a[28];this.graphics_index=a[29];this.plane_read=a[30];this.planar_mode=a[31];this.planar_rotate_reg=a[32];this.planar_bitmap=a[33];this.max_scan_line=a[34];this.miscellaneous_output_register=a[35];this.port_3DA_value=a[36];this.dispi_index= +a[37];this.dispi_enable_value=a[38];this.svga_memory.set(a[39]);this.graphical_mode_is_linear=a[40];this.attribute_controller_index=a[41];this.offset_register=a[42];this.planar_setreset=a[43];this.planar_setreset_enable=a[44];this.start_address_latched=a[45];this.crtc.set(a[46]);this.horizontal_display_enable_end=a[47];this.horizontal_blank_start=a[48];this.vertical_display_enable_end=a[49];this.vertical_blank_start=a[50];this.underline_location_register=a[51];this.preset_row_scan=a[52];this.offset_register= +a[53];this.palette_source=a[54];this.attribute_mode=a[55];this.color_plane_enable=a[56];this.horizontal_panning=a[57];this.color_select=a[58];this.clocking_mode=a[59];this.line_compare=a[60];a[61]&&this.pixel_buffer.set(a[61]);this.dac_mask=void 0===a[62]?255:a[62];this.bus.send("screen-set-mode",this.graphical_mode);this.graphical_mode?(this.screen_height=this.screen_width=0,this.svga_enabled?(this.set_size_graphical(this.svga_width,this.svga_height,this.svga_bpp,this.svga_width,this.svga_height), +this.update_layers()):(this.update_vga_size(),this.update_layers(),this.complete_replot())):(this.set_size_text(this.max_cols,this.max_rows),this.update_cursor_scanline(),this.update_cursor());this.complete_redraw()}; +M.prototype.vga_memory_read=function(a){if(this.svga_enabled&&this.graphical_mode_is_linear)return this.cpu.read8((a-655360|this.svga_bank_offset)+3758096384|0);var b=this.miscellaneous_graphics_register>>2&3;a-=ua[b];if(0>a||a>=va[b])return A(a),0;this.latch_dword=this.plane0[a];this.latch_dword|=this.plane1[a]<<8;this.latch_dword|=this.plane2[a]<<16;this.latch_dword|=this.plane3[a]<<24;if(this.planar_mode&8)return b=255,this.color_dont_care&1&&(b&=this.plane0[a]^~(this.color_compare&1?255:0)),this.color_dont_care& +2&&(b&=this.plane1[a]^~(this.color_compare&2?255:0)),this.color_dont_care&4&&(b&=this.plane2[a]^~(this.color_compare&4?255:0)),this.color_dont_care&8&&(b&=this.plane3[a]^~(this.color_compare&8?255:0)),b;b=this.plane_read;this.graphical_mode?this.sequencer_memory_mode&8?(b=a&3,a&=-4):this.planar_mode&16&&(b=a&1,a&=-2):b=0;return this.vga_memory[b<<16|a]}; +M.prototype.vga_memory_write=function(a,b){if(this.svga_enabled&&this.graphical_mode&&this.graphical_mode_is_linear)this.cpu.write8((a-655360|this.svga_bank_offset)+3758096384|0,b);else{var c=this.miscellaneous_graphics_register>>2&3;a-=ua[c];0>a||a>=va[c]?(A(a),A(b)):this.graphical_mode?this.vga_memory_write_graphical(a,b):this.plane_write_bm&3&&this.vga_memory_write_text_mode(a,b)}}; +M.prototype.vga_memory_write_graphical=function(a,b){var c=this.planar_mode&3,d=this.apply_feed(this.planar_bitmap),e=this.apply_expand(this.planar_setreset),g=this.apply_expand(this.planar_setreset_enable);switch(c){case 0:b=this.apply_rotate(b);var f=this.apply_feed(b);f=this.apply_setreset(f,g);f=this.apply_logical(f,this.latch_dword);f=this.apply_bitmask(f,d);break;case 1:f=this.latch_dword;break;case 2:f=this.apply_expand(b);f=this.apply_logical(f,this.latch_dword);f=this.apply_bitmask(f,d); +break;case 3:b=this.apply_rotate(b),d&=this.apply_feed(b),f=this.apply_bitmask(e,d)}b=15;switch(this.sequencer_memory_mode&12){case 0:b=5<<(a&1);a&=-2;break;case 8:case 12:b=1<<(a&3),a&=-4}b&=this.plane_write_bm;b&1&&(this.plane0[a]=f>>0&255);b&2&&(this.plane1[a]=f>>8&255);b&4&&(this.plane2[a]=f>>16&255);b&8&&(this.plane3[a]=f>>24&255);a=this.vga_addr_to_pixel(a);this.partial_replot(a,a+7)};M.prototype.apply_feed=function(a){return a|a<<8|a<<16|a<<24}; +M.prototype.apply_expand=function(a){return(a&1?255:0)|(a&2?255:0)<<8|(a&4?255:0)<<16|(a&8?255:0)<<24};M.prototype.apply_rotate=function(a){return(a|a<<8)>>>(this.planar_rotate_reg&7)&255};M.prototype.apply_setreset=function(a,b){var c=this.apply_expand(this.planar_setreset);return(a|b&c)&(~b|c)};M.prototype.apply_logical=function(a,b){switch(this.planar_rotate_reg&24){case 8:return a&b;case 16:return a|b;case 24:return a^b}return a};M.prototype.apply_bitmask=function(a,b){return b&a|~b&this.latch_dword}; +M.prototype.text_mode_redraw=function(){var a=this.start_address<<1;const b=this.scan_line_to_screen_row(this.line_compare),c=Math.max(0,2*(2*this.offset_register-this.max_cols));for(var d=0;d>4&15]],this.vga256_palette[this.dac_mask&this.dac_map[f&15]]]);a+=2}a+=c}}; +M.prototype.vga_memory_write_text_mode=function(a,b){this.vga_memory[a]=b;var c=Math.max(this.max_cols,2*this.offset_register);let d;if(a>>1>=this.start_address){var e=(a>>1)-this.start_address;d=e/c|0;c=e%c}else e=a>>1,d=(e/c|0)+this.scan_line_to_screen_row(this.line_compare),c=e%c;c>=this.max_cols||d>=this.max_rows||(a&1?(e=b,b=this.vga_memory[a&-2]):e=this.vga_memory[a|1],this.bus.send("screen-put-char",[d,c,b,this.vga256_palette[this.dac_mask&this.dac_map[e>>4&15]],this.vga256_palette[this.dac_mask& +this.dac_map[e&15]]]))};M.prototype.update_cursor=function(){var a=Math.max(this.max_cols,2*this.offset_register);let b;this.cursor_address>=this.start_address?(b=(this.cursor_address-this.start_address)/a|0,a=(this.cursor_address-this.start_address)%a):(b=(this.cursor_address/a|0)+this.scan_line_to_screen_row(this.line_compare),a=this.cursor_address%a);b=Math.min(this.max_rows-1,b);a=Math.min(this.max_cols-1,a);this.bus.send("screen-update-cursor",[b,a])}; +M.prototype.complete_redraw=function(){this.graphical_mode?this.svga_enabled?this.cpu.svga_mark_dirty():(this.diff_addr_min=0,this.diff_addr_max=524288):this.text_mode_redraw()};M.prototype.complete_replot=function(){this.graphical_mode&&!this.svga_enabled&&(this.diff_plot_min=0,this.diff_plot_max=524288,this.complete_redraw())};M.prototype.partial_redraw=function(a,b){athis.diff_addr_max&&(this.diff_addr_max=b)}; +M.prototype.partial_replot=function(a,b){athis.diff_plot_max&&(this.diff_plot_max=b);this.partial_redraw(a,b)};M.prototype.reset_diffs=function(){this.diff_addr_min=this.vga_memory_size;this.diff_addr_max=0;this.diff_plot_min=this.vga_memory_size;this.diff_plot_max=0};M.prototype.destroy=function(){};M.prototype.vga_bytes_per_line=function(){var a=this.offset_register<<2;this.underline_location_register&64?a<<=1:this.crtc_mode&64&&(a>>>=1);return a}; +M.prototype.vga_addr_shift_count=function(){var a=128+(~this.underline_location_register&this.crtc_mode&64);a-=this.underline_location_register&64;a-=this.attribute_mode&64;return a>>>6}; +M.prototype.vga_addr_to_pixel=function(a){var b=this.vga_addr_shift_count();if(~this.crtc_mode&3){var c=a-this.start_address;c&=this.crtc_mode<<13|-24577;c<<=b;var d=c/this.virtual_width|0;c%=this.virtual_width;switch(this.crtc_mode&3){case 2:d=d<<1|a>>13&1;break;case 1:d=d<<1|a>>14&1;break;case 0:d=d<<2|a>>13&3}return d*this.virtual_width+c+(this.start_address<>>=1);a=Math.ceil(a/(1+(this.max_scan_line&31)));this.crtc_mode&1||(a<<=1);this.crtc_mode&2||(a<<=1);return a};M.prototype.set_size_text=function(a,b){this.max_cols=a;this.max_rows=b;this.bus.send("screen-set-size-text",[a,b])}; +M.prototype.set_size_graphical=function(a,b,c,d,e){d=Math.max(d,1);e=Math.max(e,1);if(!this.stats.is_graphical||this.stats.bpp!==c||this.screen_width!==a||this.screen_height!==b||this.virtual_width!==d||this.virtual_height!==e){this.screen_width=a;this.screen_height=b;this.virtual_width=d;this.virtual_height=e;this.stats.bpp=c;this.stats.is_graphical=!0;this.stats.res_x=a;this.stats.res_y=b;if("undefined"!==typeof ImageData){const g=d*e,f=this.cpu.svga_allocate_dest_buffer(g)>>>0;this.dest_buffet_offset= +f;this.image_data=new ImageData(new Uint8ClampedArray(this.cpu.wasm_memory.buffer,f,4*g),d,e);this.cpu.svga_mark_dirty()}this.bus.send("screen-set-size-graphical",[a,b,d,e,c])}}; +M.prototype.update_vga_size=function(){if(!this.svga_enabled){var a=Math.min(1+this.horizontal_display_enable_end,this.horizontal_blank_start),b=Math.min(1+this.vertical_display_enable_end,this.vertical_blank_start);if(a&&b)if(this.graphical_mode){a<<=3;var c=this.offset_register<<4;this.attribute_mode&64&&(a>>>=1,c>>>=1);b=this.scan_line_to_screen_row(b);var d=va[0];const e=this.vga_bytes_per_line();this.set_size_graphical(a,b,8,c,e?Math.ceil(d/e):b);this.update_vertical_retrace();this.update_layers()}else this.max_scan_line& +128&&(b>>>=1),c=b/(1+(this.max_scan_line&31))|0,a&&c&&this.set_size_text(a,c)}}; +M.prototype.update_layers=function(){this.graphical_mode||this.text_mode_redraw();if(this.svga_enabled)this.layers=[];else if(this.virtual_width&&this.screen_width)if(!this.palette_source||this.clocking_mode&32)this.layers=[],this.bus.send("screen-clear");else{var a=this.start_address_latched,b=this.horizontal_panning;this.attribute_mode&64&&(b>>>=1);var c=this.preset_row_scan>>5&3,d=this.vga_addr_to_pixel(a+c);a=d/this.virtual_width|0;var e=d%this.virtual_width+b;d=this.scan_line_to_screen_row(1+ +this.line_compare);d=Math.min(d,this.screen_height);var g=this.screen_height-d;this.layers=[];e=-e;for(var f=0;ethis.attribute_controller_index)A(this.attribute_controller_index),A(a),this.dac_map[this.attribute_controller_index]=a,this.attribute_mode&64||this.complete_redraw();else switch(this.attribute_controller_index){case 16:A(a);if(this.attribute_mode!==a){var b= +this.attribute_mode;this.attribute_mode=a;var c=0<(a&1);this.svga_enabled||this.graphical_mode===c||(this.graphical_mode=c,this.bus.send("screen-set-mode",this.graphical_mode));(b^a)&64&&this.complete_replot();this.update_vga_size();this.complete_redraw()}break;case 18:A(a);this.color_plane_enable!==a&&(this.color_plane_enable=a,this.complete_redraw());break;case 19:A(a);this.horizontal_panning!==a&&(this.horizontal_panning=a&15,this.update_layers());break;case 20:A(a);this.color_select!==a&&(this.color_select= +a,this.complete_redraw());break;default:A(this.attribute_controller_index),A(a)}this.attribute_controller_index=-1}};M.prototype.port3C0_read=function(){return(this.attribute_controller_index|this.palette_source)&255};M.prototype.port3C0_read16=function(){return this.port3C0_read()|this.port3C1_read()<<8&65280}; +M.prototype.port3C1_read=function(){if(16>this.attribute_controller_index)return A(this.attribute_controller_index),A(this.dac_map[this.attribute_controller_index]),this.dac_map[this.attribute_controller_index]&255;switch(this.attribute_controller_index){case 16:return A(this.attribute_mode),this.attribute_mode;case 18:return A(this.color_plane_enable),this.color_plane_enable;case 19:return A(this.horizontal_panning),this.horizontal_panning;case 20:return A(this.color_select),this.color_select;default:A(this.attribute_controller_index)}return 255}; +M.prototype.port3C2_write=function(a){A(a);this.miscellaneous_output_register=a};M.prototype.port3C4_write=function(a){this.sequencer_index=a};M.prototype.port3C4_read=function(){return this.sequencer_index};M.prototype.port3C5_write=function(a){switch(this.sequencer_index){case 1:A(a);var b=this.clocking_mode;this.clocking_mode=a;(b^a)&32&&this.update_layers();break;case 2:A(a);this.plane_write_bm=a;break;case 4:A(a);this.sequencer_memory_mode=a;break;default:A(this.sequencer_index),A(a)}}; +M.prototype.port3C5_read=function(){A(this.sequencer_index);switch(this.sequencer_index){case 1:return this.clocking_mode;case 2:return this.plane_write_bm;case 4:return this.sequencer_memory_mode;case 6:return 18}return 0};M.prototype.port3C6_write=function(a){this.dac_mask=a};M.prototype.port3C6_read=function(){return this.dac_mask};M.prototype.port3C7_write=function(a){A(a);this.dac_color_index_read=3*a;this.dac_state&=0};M.prototype.port3C7_read=function(){return this.dac_state}; +M.prototype.port3C8_write=function(a){this.dac_color_index_write=3*a;this.dac_state|=3};M.prototype.port3C8_read=function(){return this.dac_color_index_write/3&255}; +M.prototype.port3C9_write=function(a){var b=this.dac_color_index_write/3|0,c=this.dac_color_index_write%3,d=this.vga256_palette[b];if(0===(this.dispi_enable_value&32)){a&=63;const e=a&1;a=a<<2|e<<1|e}0===c?d=d&-16711681|a<<16:1===c?d=d&-65281|a<<8:(d=d&-256|a,A(b),A(d));this.vga256_palette[b]!==d&&(this.vga256_palette[b]=d,this.complete_redraw());this.dac_color_index_write++}; +M.prototype.port3C9_read=function(){var a=this.vga256_palette[this.dac_color_index_read/3|0]>>8*(2-this.dac_color_index_read%3)&255;this.dac_color_index_read++;return this.dispi_enable_value&32?a:a>>2};M.prototype.port3CC_read=function(){return this.miscellaneous_output_register};M.prototype.port3CE_write=function(a){this.graphics_index=a};M.prototype.port3CE_read=function(){return this.graphics_index}; +M.prototype.port3CF_write=function(a){switch(this.graphics_index){case 0:this.planar_setreset=a;A(a);break;case 1:this.planar_setreset_enable=a;A(a);break;case 2:this.color_compare=a;A(a);break;case 3:this.planar_rotate_reg=a;A(a);break;case 4:this.plane_read=a;A(a);break;case 5:var b=this.planar_mode;this.planar_mode=a;A(a);(b^a)&96&&this.complete_replot();break;case 6:A(a);this.miscellaneous_graphics_register!==a&&(this.miscellaneous_graphics_register=a,this.update_vga_size());break;case 7:this.color_dont_care= +a;A(a);break;case 8:this.planar_bitmap=a;A(a);break;default:A(this.graphics_index),A(a)}};M.prototype.port3CF_read=function(){A(this.graphics_index);switch(this.graphics_index){case 0:return this.planar_setreset;case 1:return this.planar_setreset_enable;case 2:return this.color_compare;case 3:return this.planar_rotate_reg;case 4:return this.plane_read;case 5:return this.planar_mode;case 6:return this.miscellaneous_graphics_register;case 7:return this.color_dont_care;case 8:return this.planar_bitmap}return 0}; +M.prototype.port3D4_write=function(a){this.index_crtc=a};M.prototype.port3D4_read=function(){return this.index_crtc}; +M.prototype.port3D5_write=function(a){switch(this.index_crtc){case 1:A(a);this.horizontal_display_enable_end!==a&&(this.horizontal_display_enable_end=a,this.update_vga_size());break;case 2:this.horizontal_blank_start!==a&&(this.horizontal_blank_start=a,this.update_vga_size());break;case 7:A(a);var b=this.vertical_display_enable_end;this.vertical_display_enable_end&=255;this.vertical_display_enable_end=this.vertical_display_enable_end|a<<3&512|a<<7&256;b!=this.vertical_display_enable_end&&this.update_vga_size(); +this.line_compare=this.line_compare&767|a<<4&256;b=this.vertical_blank_start;this.vertical_blank_start=this.vertical_blank_start&767|a<<5&256;b!==this.vertical_blank_start&&this.update_vga_size();this.update_layers();break;case 8:A(a);this.preset_row_scan=a;this.update_layers();break;case 9:A(a);this.max_scan_line=a;this.line_compare=this.line_compare&511|a<<3&512;b=this.vertical_blank_start;this.vertical_blank_start=this.vertical_blank_start&511|a<<4&512;b!==this.vertical_blank_start&&this.update_vga_size(); +this.update_layers();break;case 10:A(a);this.cursor_scanline_start=a;this.update_cursor_scanline();break;case 11:A(a);this.cursor_scanline_end=a;this.update_cursor_scanline();break;case 12:(this.start_address>>8&255)!==a&&(this.start_address=this.start_address&255|a<<8,this.update_layers(),~this.crtc_mode&3&&this.complete_replot());A(a);A(this.start_address,4);break;case 13:(this.start_address&255)!==a&&(this.start_address=this.start_address&65280|a,this.update_layers(),~this.crtc_mode&3&&this.complete_replot()); +A(a);A(this.start_address,4);break;case 14:A(a);this.cursor_address=this.cursor_address&255|a<<8;this.update_cursor();break;case 15:A(a);this.cursor_address=this.cursor_address&65280|a;this.update_cursor();break;case 18:A(a);(this.vertical_display_enable_end&255)!==a&&(this.vertical_display_enable_end=this.vertical_display_enable_end&768|a,this.update_vga_size());break;case 19:A(a);this.offset_register!==a&&(this.offset_register=a,this.update_vga_size(),~this.crtc_mode&3&&this.complete_replot()); +break;case 20:A(a);this.underline_location_register!==a&&(b=this.underline_location_register,this.underline_location_register=a,this.update_vga_size(),(b^a)&64&&this.complete_replot());break;case 21:A(a);(this.vertical_blank_start&255)!==a&&(this.vertical_blank_start=this.vertical_blank_start&768|a,this.update_vga_size());break;case 23:A(a);this.crtc_mode!==a&&(b=this.crtc_mode,this.crtc_mode=a,this.update_vga_size(),(b^a)&67&&this.complete_replot());break;case 24:A(a);this.line_compare=this.line_compare& +768|a;this.update_layers();break;default:this.index_crtc>7&2|this.vertical_blank_start>>5&8|this.line_compare>>4&16|this.vertical_display_enable_end>>3&64;case 8:return this.preset_row_scan;case 9:return this.max_scan_line;case 10:return this.cursor_scanline_start;case 11:return this.cursor_scanline_end;case 12:return this.start_address&255; +case 13:return this.start_address>>8;case 14:return this.cursor_address>>8;case 15:return this.cursor_address&255;case 18:return this.vertical_display_enable_end&255;case 19:return this.offset_register;case 20:return this.underline_location_register;case 21:return this.vertical_blank_start&255;case 23:return this.crtc_mode;case 24:return this.line_compare&255}return this.index_crtc=a?this.svga_version=a:A(a);break;case 1:this.svga_width=a;2560>>16;case 6:return this.screen_width?this.screen_width:1;case 8:return 0;case 9:return this.svga_offset_y;case 10:return this.vga_memory_size/65536|0;default:A(this.dispi_index)}return 255}; +M.prototype.vga_replot=function(){for(var a=this.diff_plot_min&-16,b=Math.min(this.diff_plot_max|15,524287),c=this.vga_addr_shift_count(),d=~this.crtc_mode&3,e=this.planar_mode&96,g=this.attribute_mode&64;a<=b;){var f=a>>>c;if(d){var k=a/this.virtual_width|0,l=a-this.virtual_width*k;switch(d){case 1:f=(k&1)<<13;k>>>=1;break;case 2:f=(k&1)<<14;k>>>=1;break;case 3:f=(k&3)<<13,k>>>=2}f|=(k*this.virtual_width+l>>>c)+this.start_address}k=this.plane0[f];l=this.plane1[f];var m=this.plane2[f],n=this.plane3[f]; +f=new Uint8Array(8);switch(e){case 0:k<<=0;l<<=1;m<<=2;n<<=3;for(var p=7;0<=p;p--)f[7-p]=k>>p&1|l>>p&2|m>>p&4|n>>p&8;break;case 32:f[0]=k>>6&3|m>>4&12;f[1]=k>>4&3|m>>2&12;f[2]=k>>2&3|m>>0&12;f[3]=k>>0&3|m<<2&12;f[4]=l>>6&3|n>>4&12;f[5]=l>>4&3|n>>2&12;f[6]=l>>2&3|n>>0&12;f[7]=l>>0&3|n<<2&12;break;case 64:case 96:f[0]=k>>4&15,f[1]=k>>0&15,f[2]=l>>4&15,f[3]=l>>0&15,f[4]=m>>4&15,f[5]=m>>0&15,f[6]=n>>4&15,f[7]=n>>0&15}if(g)for(k=p=0;4>p;p++,a++,k+=2)this.pixel_buffer[a]=f[k]<<4|f[k+1];else for(p=0;8>p;p++, +a++)this.pixel_buffer[a]=f[p]}}; +M.prototype.vga_redraw=function(){var a=this.diff_addr_min,b=Math.min(this.diff_addr_max,524287);const c=new Int32Array(this.cpu.wasm_memory.buffer,this.dest_buffet_offset,this.virtual_width*this.virtual_height);var d=255,e=0;this.attribute_mode&128&&(d&=207,e|=this.color_select<<4&48);if(this.attribute_mode&64)for(;a<=b;a++){var g=this.pixel_buffer[a]&d|e;g=this.vga256_palette[g];c[a]=g&65280|g<<16|g>>16|4278190080}else for(d&=63,e|=this.color_select<<4&192;a<=b;a++)g=this.dac_map[this.pixel_buffer[a]& +this.color_plane_enable]&d|e,g=this.vga256_palette[g],c[a]=g&65280|g<<16|g>>16|4278190080}; +M.prototype.screen_fill_buffer=function(){if(this.graphical_mode){if(0===this.image_data.data.byteLength){var a=new Uint8ClampedArray(this.cpu.wasm_memory.buffer,this.dest_buffet_offset,4*this.virtual_width*this.virtual_height);this.image_data=new ImageData(a,this.virtual_width,this.virtual_height);this.update_layers()}if(this.svga_enabled){a=0;let d=this.svga_height;if(8===this.svga_bpp){const e=new Int32Array(this.cpu.wasm_memory.buffer,this.dest_buffet_offset,this.screen_width*this.screen_height), +g=new Uint8Array(this.cpu.wasm_memory.buffer,this.svga_memory.byteOffset,this.vga_memory_size);for(var b=0;b>16|4278190080}}else this.cpu.svga_fill_pixel_buffer(this.svga_bpp,this.svga_offset),b=15===this.svga_bpp?2:this.svga_bpp/8,a=((this.cpu.svga_dirty_bitmap_min_offset[0]/b|0)-this.svga_offset)/this.svga_width|0,d=(((this.cpu.svga_dirty_bitmap_max_offset[0]/b|0)-this.svga_offset)/this.svga_width|0)+1;ab)<<5|(0>a)<<4|8|this.mouse_clicks;this.last_mouse_packet=Date.now();this.mouse_buffer.push(c);this.mouse_buffer.push(a);this.mouse_buffer.push(b);4===this.mouse_id?(this.mouse_buffer.push(0|this.wheel_movement&15),this.wheel_movement=0):3===this.mouse_id&&(this.mouse_buffer.push(this.wheel_movement&255),this.wheel_movement=0);this.raise_irq()}; +N.prototype.apply_scaling2=function(a){var b=a>>31;switch(Math.abs(a)){case 0:case 1:case 3:return a;case 2:return b;case 4:return 6*b;case 5:return 9*b;default:return a<<1}}; +N.prototype.port60_read=function(){this.next_byte_is_ready=!1;if(!this.kbd_buffer.length&&!this.mouse_buffer.length)return this.last_port60_byte;this.next_byte_is_aux?(this.cpu.device_lower_irq(12),this.last_port60_byte=this.mouse_buffer.shift()):(this.cpu.device_lower_irq(1),this.last_port60_byte=this.kbd_buffer.shift());A(this.last_port60_byte);(this.kbd_buffer.length||this.mouse_buffer.length)&&this.raise_irq();return this.last_port60_byte}; +N.prototype.port64_read=function(){var a=16;this.next_byte_is_ready&&(a|=1);this.next_byte_is_aux&&(a|=32);A(a);return a}; +N.prototype.port60_write=function(a){A(a);if(this.read_command_register)this.command_register=a,this.read_command_register=!1,A(this.command_register);else if(this.read_output_register)this.read_output_register=!1,this.mouse_buffer.clear(),this.mouse_buffer.push(a),this.mouse_irq();else if(this.next_read_sample){this.next_read_sample=!1;this.mouse_buffer.clear();this.mouse_buffer.push(250);this.sample_rate=a;switch(this.mouse_detect_state){case -1:60===a?(this.mouse_reset_workaround=!0,this.mouse_detect_state= +0):(this.mouse_reset_workaround=!1,this.mouse_detect_state=200===a?1:0);break;case 0:200===a&&(this.mouse_detect_state=1);break;case 1:this.mouse_detect_state=100===a?2:200===a?3:0;break;case 2:80===a&&(this.mouse_id=3);this.mouse_detect_state=-1;break;case 3:80===a&&(this.mouse_id=4),this.mouse_detect_state=-1}A(a);A(this.mouse_id);this.sample_rate||(this.sample_rate=100);this.mouse_irq()}else if(this.next_read_resolution)this.next_read_resolution=!1,this.mouse_buffer.clear(),this.mouse_buffer.push(250), +this.resolution=3>7});a.io.register_write(113,this,this.cmos_port_write);a.io.register_read(113,this,this.cmos_port_read)} +wa.prototype.get_state=function(){var a=[];a[0]=this.cmos_index;a[1]=this.cmos_data;a[2]=this.rtc_time;a[3]=this.last_update;a[4]=this.next_interrupt;a[5]=this.next_interrupt_alarm;a[6]=this.periodic_interrupt;a[7]=this.periodic_interrupt_time;a[8]=this.cmos_a;a[9]=this.cmos_b;a[10]=this.cmos_c;a[11]=this.nmi_disabled;return a}; +wa.prototype.set_state=function(a){this.cmos_index=a[0];this.cmos_data=a[1];this.rtc_time=a[2];this.last_update=a[3];this.next_interrupt=a[4];this.next_interrupt_alarm=a[5];this.periodic_interrupt=a[6];this.periodic_interrupt_time=a[7];this.cmos_a=a[8];this.cmos_b=a[9];this.cmos_c=a[10];this.nmi_disabled=a[11]}; +wa.prototype.timer=function(a){a=Date.now();this.rtc_time+=a-this.last_update;this.last_update=a;this.periodic_interrupt&&this.next_interrupt>4&15)};wa.prototype.encode_time=function(a){return this.cmos_b&4?a:this.bcd_pack(a)};wa.prototype.decode_time=function(a){return this.cmos_b&4?a:this.bcd_unpack(a)}; +wa.prototype.cmos_port_read=function(){var a=this.cmos_index;switch(a){case 0:return this.encode_time((new Date(this.rtc_time)).getUTCSeconds());case 2:return this.encode_time((new Date(this.rtc_time)).getUTCMinutes());case 4:return this.encode_time((new Date(this.rtc_time)).getUTCHours());case 7:return this.encode_time((new Date(this.rtc_time)).getUTCDate());case 8:return this.encode_time((new Date(this.rtc_time)).getUTCMonth()+1);case 9:return this.encode_time((new Date(this.rtc_time)).getUTCFullYear()% +100);case 10:return 999<=D.microtick()%1E3?this.cmos_a|128:this.cmos_a;case 11:return this.cmos_b;case 12:return this.cpu.device_lower_irq(8),a=this.cmos_c,this.cmos_c&=-241,a;case 13:return 0;case 50:return this.encode_time((new Date(this.rtc_time)).getUTCFullYear()/100|0);default:return A(a),this.cmos_data[this.cmos_index]}}; +wa.prototype.cmos_port_write=function(a){switch(this.cmos_index){case 10:this.cmos_a=a&127;this.periodic_interrupt_time=1E3/(32768>>(this.cmos_a&15)-1);A(this.cmos_a,2);break;case 11:this.cmos_b=a;this.cmos_b&64&&(this.next_interrupt=Date.now());if(this.cmos_b&32){a=new Date;const b=this.decode_time(this.cmos_data[1]),c=this.decode_time(this.cmos_data[3]),d=this.decode_time(this.cmos_data[5]);this.next_interrupt_alarm=+new Date(Date.UTC(a.getUTCFullYear(),a.getUTCMonth(),a.getUTCDate(),d,c,b))}A(this.cmos_b, +2);break;case 1:case 3:case 5:this.cmos_write(this.cmos_index,a);break;default:A(this.cmos_index),A(a)}this.periodic_interrupt=64===(this.cmos_b&64)&&0<(this.cmos_a&15)};wa.prototype.cmos_read=function(a){return this.cmos_data[a]};wa.prototype.cmos_write=function(a,b){A(a);A(b);this.cmos_data[a]=b};function xa(a,b,c){this.bus=c;this.cpu=a;this.ints=4;this.line_control=this.baud_rate=0;this.lsr=96;this.ier=this.fifo_control=0;this.iir=1;this.irq=this.scratch_register=this.modem_status=this.modem_control=0;this.input=[];this.current_line="";switch(b){case 1016:this.com=0;this.irq=4;break;case 760:this.com=1;this.irq=3;break;case 1E3:this.com=2;this.irq=4;break;case 744:this.irq=this.com=3;break;default:J("Invalid serial port: "+A(b),16384),this.com=0,this.irq=4}this.bus.register("serial"+this.com+ +"-input",function(d){this.data_received(d)},this);this.bus.register("serial"+this.com+"-modem-status-input",function(d){this.set_modem_status(d)},this);this.bus.register("serial"+this.com+"-carrier-detect-input",function(d){this.set_modem_status(d?this.modem_status|136:this.modem_status&-137)},this);this.bus.register("serial"+this.com+"-ring-indicator-input",function(d){this.set_modem_status(d?this.modem_status|68:this.modem_status&-69)},this);this.bus.register("serial"+this.com+"-data-set-ready-input", +function(d){this.set_modem_status(d?this.modem_status|34:this.modem_status&-35)},this);this.bus.register("serial"+this.com+"-clear-to-send-input",function(d){this.set_modem_status(d?this.modem_status|17:this.modem_status&-18)},this);a=a.io;a.register_write(b,this,function(d){this.write_data(d)},function(d){this.write_data(d&255);this.write_data(d>>8)});a.register_write(b|1,this,function(d){this.line_control&128?(this.baud_rate=this.baud_rate&255|d<<8,A(this.baud_rate)):(0===(this.ier&2)&&d&2&&this.ThrowInterrupt(2), +this.ier=d&15,A(d),this.CheckInterrupt())});a.register_read(b,this,function(){if(this.line_control&128)return this.baud_rate&255;let d=0;0!==this.input.length&&(d=this.input.shift(),A(d));0===this.input.length&&(this.lsr&=-2,this.ClearInterrupt(12),this.ClearInterrupt(4));return d});a.register_read(b|1,this,function(){return this.line_control&128?this.baud_rate>>8:this.ier&15});a.register_read(b|2,this,function(){var d=this.iir&15;A(this.iir);2==this.iir&&this.ClearInterrupt(2);this.fifo_control& +1&&(d|=192);return d});a.register_write(b|2,this,function(d){A(d);this.fifo_control=d});a.register_read(b|3,this,function(){A(this.line_control);return this.line_control});a.register_write(b|3,this,function(d){A(d);this.line_control=d});a.register_read(b|4,this,function(){return this.modem_control});a.register_write(b|4,this,function(d){A(d);this.modem_control=d});a.register_read(b|5,this,function(){A(this.lsr);return this.lsr});a.register_write(b|5,this,function(){});a.register_read(b|6,this,function(){A(this.modem_status); +return this.modem_status&=240});a.register_write(b|6,this,function(d){A(d);this.set_modem_status(d)});a.register_read(b|7,this,function(){return this.scratch_register});a.register_write(b|7,this,function(d){this.scratch_register=d})}xa.prototype.get_state=function(){var a=[];a[0]=this.ints;a[1]=this.baud_rate;a[2]=this.line_control;a[3]=this.lsr;a[4]=this.fifo_control;a[5]=this.ier;a[6]=this.iir;a[7]=this.modem_control;a[8]=this.modem_status;a[9]=this.scratch_register;a[10]=this.irq;return a}; +xa.prototype.set_state=function(a){this.ints=a[0];this.baud_rate=a[1];this.line_control=a[2];this.lsr=a[3];this.fifo_control=a[4];this.ier=a[5];this.iir=a[6];this.modem_control=a[7];this.modem_status=a[8];this.scratch_register=a[9];this.irq=a[10]}; +xa.prototype.CheckInterrupt=function(){this.ints&4096&&this.ier&1?(this.iir=12,this.cpu.device_raise_irq(this.irq)):this.ints&16&&this.ier&1?(this.iir=4,this.cpu.device_raise_irq(this.irq)):this.ints&4&&this.ier&2?(this.iir=2,this.cpu.device_raise_irq(this.irq)):this.ints&1&&this.ier&8?(this.iir=0,this.cpu.device_raise_irq(this.irq)):(this.iir=1,this.cpu.device_lower_irq(this.irq))};xa.prototype.ThrowInterrupt=function(a){this.ints|=1<>4;this.modem_status=a;this.modem_status=this.modem_status|c|b};function ya(a){this.cpu=a;var b=a.io;a.devices.pci.register_device({pci_id:56,pci_space:[134,128,19,113,7,0,128,2,8,0,128,6,0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,1,0,0],pci_bars:[],name:"acpi"});this.timer_imprecision_offset=this.timer_last_value=0;this.status=1;this.pm1_enable=this.pm1_status=0;this.last_timer=this.get_timer(D.microtick());this.gpe=new Uint8Array(4);b.register_read(45056,this,void 0,function(){return this.pm1_status}); +b.register_write(45056,this,void 0,function(c){A(c,4);this.pm1_status&=~c});b.register_read(45058,this,void 0,function(){return this.pm1_enable});b.register_write(45058,this,void 0,function(c){A(c);this.pm1_enable=c});b.register_read(45060,this,void 0,function(){return this.status});b.register_write(45060,this,void 0,function(c){A(c);this.status=c});b.register_read(45064,this,void 0,void 0,function(){return this.get_timer(D.microtick())&16777215});b.register_read(45024,this,function(){return this.gpe[0]}); +b.register_read(45025,this,function(){return this.gpe[1]});b.register_read(45026,this,function(){return this.gpe[2]});b.register_read(45027,this,function(){return this.gpe[3]});b.register_write(45024,this,function(c){A(c);this.gpe[0]=c});b.register_write(45025,this,function(c){A(c);this.gpe[1]=c});b.register_write(45026,this,function(c){A(c);this.gpe[2]=c});b.register_write(45027,this,function(c){A(c);this.gpe[3]=c})} +ya.prototype.timer=function(a){a=this.get_timer(a);var b=0!==((a^this.last_timer)&8388608);this.pm1_enable&1&&b?(this.pm1_status|=1,this.cpu.device_raise_irq(9)):this.cpu.device_lower_irq(9);this.last_timer=a;return 100}; +ya.prototype.get_timer=function(a){a=Math.round(3579.545*a);a===this.timer_last_value?3579.545>this.timer_imprecision_offset&&this.timer_imprecision_offset++:this.timer_last_value+this.timer_imprecision_offset<=a&&(this.timer_imprecision_offset=0,this.timer_last_value=a);return this.timer_last_value+this.timer_imprecision_offset};ya.prototype.get_state=function(){var a=[];a[0]=this.status;a[1]=this.pm1_status;a[2]=this.pm1_enable;a[3]=this.gpe;return a}; +ya.prototype.set_state=function(a){this.status=a[0];this.pm1_status=a[1];this.pm1_enable=a[2];this.gpe=a[3]};function O(a){this.cpu=a;this.timer_divider=this.apic_id=0;this.timer_divider_shift=1;this.timer_current_count=this.timer_initial_count=0;this.next_tick=D.microtick();this.lvt_error=this.lvt_int1=this.lvt_int0=this.lvt_perf_counter=this.lvt_timer=65536;this.icr1=this.icr0=this.tpr=0;this.irr=new Int32Array(8);this.isr=new Int32Array(8);this.tmr=new Int32Array(8);this.spurious_vector=254;this.destination_format=-1;this.read_error=this.error=this.local_destination=0;a.io.mmap_register(4276092928,1048576, +b=>{A(b>>>0);var c=b&3;return this.read32(b&-4)>>8*c&255},(b,c)=>{A(b);A(c)},b=>this.read32(b),(b,c)=>this.write32(b,c))} +O.prototype.read32=function(a){a=a-4276092928|0;switch(a){case 32:return this.apic_id;case 48:return 327700;case 128:return this.tpr;case 208:return this.local_destination;case 224:return this.destination_format;case 240:return this.spurious_vector;case 256:case 272:case 288:case 304:case 320:case 336:case 352:case 368:return a=a-256>>4,A(this.isr[a]>>>0,8),this.isr[a];case 384:case 400:case 416:case 432:case 448:case 464:case 480:case 496:return a=a-384>>4,A(this.tmr[a]>>>0,8),this.tmr[a];case 512:case 528:case 544:case 560:case 576:case 592:case 608:case 624:return a= +a-512>>4,A(this.irr[a]>>>0,8),this.irr[a];case 640:return A(this.read_error>>>0,8),this.read_error;case 768:return this.icr0;case 784:return this.icr1;case 800:return this.lvt_timer;case 832:return this.lvt_perf_counter;case 848:return this.lvt_int0;case 864:return this.lvt_int1;case 880:return this.lvt_error;case 992:return this.timer_divider;case 896:return this.timer_initial_count;case 912:return A(this.timer_current_count>>>0,8),this.timer_current_count;default:return A(a),0}}; +O.prototype.write32=function(a,b){a=a-4276092928|0;switch(a){case 32:A(b>>>8,8);this.apic_id=b;break;case 48:A(b>>>0,8);break;case 128:this.tpr=b&255;this.check_vector();break;case 176:b=this.highest_isr();-1!==b&&(this.register_clear_bit(this.isr,b),this.register_get_bit(this.tmr,b)&&this.cpu.devices.ioapic.remote_eoi(b),this.check_vector());break;case 208:A(b>>>0,8);this.local_destination=b&4278190080;break;case 224:A(b>>>0,8);this.destination_format=b|16777215;break;case 240:A(b>>>0,8);this.spurious_vector= +b;break;case 640:A(b>>>0,8);this.read_error=this.error;this.error=0;break;case 768:a=b&255;var c=b>>8&7,d=b>>11&1,e=b>>15&1,g=b>>18&3,f=this.icr1>>>24;A(b,8);A(a,2);this.icr0=b&-4097;0===g?this.route(a,c,e,f,d):1===g?this.deliver(a,0,e):2===g&&this.deliver(a,c,e);break;case 784:A(b>>>0,8);this.icr1=b;break;case 800:A(b>>>0,8);this.lvt_timer=b;break;case 832:A(b>>>0,8);this.lvt_perf_counter=b;break;case 848:A(b>>>0,8);this.lvt_int0=b;break;case 864:A(b>>>0,8);this.lvt_int1=b;break;case 880:A(b>>>0, +8);this.lvt_error=b;break;case 992:A(b>>>0,8);this.timer_divider=b;b=b&3|(b&8)>>1;this.timer_divider_shift=7===b?0:b+1;break;case 896:A(b>>>0,8);this.timer_initial_count=b>>>0;this.timer_current_count=b>>>0;this.next_tick=D.microtick();this.timer_active=!0;break;case 912:A(b>>>0,8);break;default:A(a),A(b>>>0,8)}}; +O.prototype.timer=function(a){if(0===this.timer_current_count)return 100;const b=1E6/(1<>>0;this.next_tick+=a/b;this.timer_current_count-=a;0>=this.timer_current_count&&(a=this.lvt_timer&393216,131072===a?(this.timer_current_count%=this.timer_initial_count,0>=this.timer_current_count&&(this.timer_current_count+=this.timer_initial_count),0===(this.lvt_timer&65536)&&this.deliver(this.lvt_timer&255,0,!1)):0===a&&(this.timer_current_count=0,0===(this.lvt_timer& +65536)&&this.deliver(this.lvt_timer&255,0,!1)));return Math.max(0,this.timer_current_count/b)};O.prototype.route=function(a,b,c){this.deliver(a,b,c)};O.prototype.deliver=function(a,b,c){5!==b&&4!==b&&(this.register_get_bit(this.irr,a)?A(a,2):(this.register_set_bit(this.irr,a),c?this.register_set_bit(this.tmr,a):this.register_clear_bit(this.tmr,a),this.check_vector()))};O.prototype.highest_irr=function(){return this.register_get_highest_bit(this.irr)};O.prototype.highest_isr=function(){return this.register_get_highest_bit(this.isr)}; +O.prototype.check_vector=function(){var a=this.highest_irr();-1!==a&&(this.highest_isr()>=a||(a&240)<=(this.tpr&240)||this.cpu.handle_irqs())};O.prototype.acknowledge_irq=function(){var a=this.highest_irr();if(-1===a||this.highest_isr()>=a||(a&240)<=(this.tpr&240))return-1;this.register_clear_bit(this.irr,a);this.register_set_bit(this.isr,a);this.check_vector();return a}; +O.prototype.get_state=function(){var a=[];a[0]=this.apic_id;a[1]=this.timer_divider;a[2]=this.timer_divider_shift;a[3]=this.timer_initial_count;a[4]=this.timer_current_count;a[5]=this.next_tick;a[6]=this.lvt_timer;a[7]=this.lvt_perf_counter;a[8]=this.lvt_int0;a[9]=this.lvt_int1;a[10]=this.lvt_error;a[11]=this.tpr;a[12]=this.icr0;a[13]=this.icr1;a[14]=this.irr;a[15]=this.isr;a[16]=this.tmr;a[17]=this.spurious_vector;a[18]=this.destination_format;a[19]=this.local_destination;a[20]=this.error;a[21]= +this.read_error;return a}; +O.prototype.set_state=function(a){this.apic_id=a[0];this.timer_divider=a[1];this.timer_divider_shift=a[2];this.timer_initial_count=a[3];this.timer_current_count=a[4];this.next_tick=a[5];this.lvt_timer=a[6];this.lvt_perf_counter=a[7];this.lvt_int0=a[8];this.lvt_int1=a[9];this.lvt_error=a[10];this.tpr=a[11];this.icr0=a[12];this.icr1=a[13];this.irr=a[14];this.isr=a[15];this.tmr=a[16];this.spurious_vector=a[17];this.destination_format=a[18];this.local_destination=a[19];this.error=a[20];this.read_error= +a[21]};O.prototype.register_get_bit=function(a,b){return a[b>>5]>>(b&31)&1};O.prototype.register_set_bit=function(a,b){a[b>>5]|=1<<(b&31)};O.prototype.register_clear_bit=function(a,b){a[b>>5]&=~(1<<(b&31))};O.prototype.register_get_highest_bit=function(a){for(var b=7;0<=b;b--){var c=a[b];if(c)return r.int_log2(c>>>0)|b<<5}return-1};function za(a){this.cpu=a;this.ioredtbl_config=new Int32Array(24);this.ioredtbl_destination=new Int32Array(24);for(var b=0;b{c=c-4273995776|0;if(16<=c&&20>c)return c-=16,A(this.ioregsel),this.read(this.ioregsel)>>8*c&255;A(c>>>0);return 0},c=>{A(c>>>0)},c=>{c=c-4273995776|0;if(0===c)return this.ioregsel;if(16===c)return this.read(this.ioregsel); +A(c>>>0);return 0},(c,d)=>{c=c-4273995776|0;0===c?this.ioregsel=d:16===c?this.write(this.ioregsel,d):(A(c>>>0),A(d>>>0,8))})}za.prototype.remote_eoi=function(a){for(var b=0;24>b;b++){var c=this.ioredtbl_config[b];(c&255)===a&&c&16384&&(A(b),this.ioredtbl_config[b]&=-16385,this.check_irq(b))}}; +za.prototype.check_irq=function(a){var b=1<>8&7,e=this.ioredtbl_destination[a]>>>24;if(0===(c&32768))this.irr&=~b;else if(this.ioredtbl_config[a]|=16384,c&16384)return;0!==d&&1!==d||this.cpu.devices.apic.route(c&255,d,32768===(c&32768),e,c>>11&1);this.ioredtbl_config[a]&=-4097}}}; +za.prototype.set_irq=function(a){if(!(24<=a)){var b=1<a){var b=a-16>>1;a=a&1?this.ioredtbl_destination[b]:this.ioredtbl_config[b];A(b);A(a,8);return a}A(a);return 0}; +za.prototype.write=function(a,b){if(0===a)this.ioapic_id=b>>>24&15;else if(1!==a&&2!==a)if(16<=a&&64>a){var c=a-16>>1;a&1?(this.ioredtbl_destination[c]=b&4278190080,A(b>>>0,8),A(c),A(b>>>24,2)):(this.ioredtbl_config[c]=b&110591|this.ioredtbl_config[c]&-110592,a=b&255,A(b>>>0,8),A(c),A(a,2),this.check_irq(c))}else A(a),A(b>>>0,8)}; +za.prototype.get_state=function(){var a=[];a[0]=this.ioredtbl_config;a[1]=this.ioredtbl_destination;a[2]=this.ioregsel;a[3]=this.ioapic_id;a[4]=this.irr;a[5]=this.irq_value;return a};za.prototype.set_state=function(a){this.ioredtbl_config=a[0];this.ioredtbl_destination=a[1];this.ioregsel=a[2];this.ioapic_id=a[3];this.irr=a[4];this.irq_value=a[5]};function Aa(a){this.message=a}Aa.prototype=Error();const Ba={Uint8Array,Int8Array,Uint16Array,Int16Array,Uint32Array,Int32Array,Float32Array,Float64Array}; +function Ca(a,b){if("object"!==typeof a||null===a)return a;if(a instanceof Array)return a.map(e=>Ca(e,b));a.constructor===Object&&console.log(a);if(a.BYTES_PER_ELEMENT){var c=new Uint8Array(a.buffer,a.byteOffset,a.length*a.BYTES_PER_ELEMENT);return{__state_type__:a.constructor.name.replace("bound ",""),buffer_id:b.push(c)-1}}a=a.get_state();c=[];for(var d=0;dq)throw new Aa("Invalid length: "+q);p=new Int32Array(p.buffer,p.byteOffset,4);if(-2039052682!==p[0])throw new Aa("Invalid header: "+A(p[0]>>>0));if(6!==p[1])throw new Aa("Version mismatch: dump="+p[1]+" we=6");if(t&&p[2]!==q)throw new Aa("Length doesn't match header: real="+q+" header="+p[2]);return p[3]}function c(p){p=(new TextDecoder).decode(p);return JSON.parse(p)}a=new Uint8Array(a);if(4247762216===(new Uint32Array(a.buffer, +0,1))[0]){var d=this.zstd_create_ctx(a.length);(new Uint8Array(this.wasm_memory.buffer,this.zstd_get_src_ptr(d),a.length)).set(a);var e=this.zstd_read(d,16),g=new Uint8Array(this.wasm_memory.buffer,e,16),f=b(g,!1);this.zstd_read_free(e,16);e=this.zstd_read(d,f);g=new Uint8Array(this.wasm_memory.buffer,e,f);g=c(g);this.zstd_read_free(e,f);e=g.state;var k=g.buffer_infos;g=[];f=16+f;for(var l of k){k=(f+3&-4)-f;if(1048576d||d+12>=a.length)throw new Aa("Invalid info block length: "+d);l=a.subarray(16,16+d);e=c(l);l=e.state;e= +e.buffer_infos;let p=16+d;p=p+3&-4;d=e.map(t=>{const q=p+t.offset;return a.buffer.slice(q,q+t.length)});l=Da(l,d);this.set_state(l)}};function Ea(a,b,c){a[0]===b[0]&&a[1]===b[1]&&a[2]===b[2]&&a[3]===b[3]&&a[4]===b[4]&&a[5]===b[5]&&(a[0]=c[0],a[1]=c[1],a[2]=c[2],a[3]=c[3],a[4]=c[4],a[5]=c[5]);a[6]===b[0]&&a[7]===b[1]&&a[8]===b[2]&&a[9]===b[3]&&a[10]===b[4]&&a[11]===b[5]&&(a[6]=c[0],a[7]=c[1],a[8]=c[2],a[9]=c[3],a[10]=c[4],a[11]=c[5]);var d=a[12]<<8|a[13];if(2048===d){if(a=a.subarray(14),4===a[0]>>4&&17===a[9]){a=a.subarray(20);d=a[0]<<8|a[1];var e=a[2]<<8|a[3];A(a[6]<<8|a[7],4);if(67===d||67===e)if(d=a.subarray(8),e=d[236]<<24|d[237]<< +16|d[238]<<8|d[239],1669485411!==e)A(e,8);else for(d[28]===b[0]&&d[29]===b[1]&&d[30]===b[2]&&d[31]===b[3]&&d[32]===b[4]&&d[33]===b[5]&&(d[28]=c[0],d[29]=c[1],d[30]=c[2],d[31]=c[3],d[32]=c[4],d[33]=c[5],a[6]=a[7]=0),e=240;e>8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,26,0,17,0,0,184,254,0,0,0,0,0,0,0,0,0,1,0,0];this.pci_id=40;this.pci_bars=[{size:32}];this.imr=this.isr=0;this.cr=1;this.tpsr=this.tcnt= +this.rcnt=this.dcfg=0;this.memory=new Uint8Array(32768);this.txcr=this.rxcr=0;this.tsr=1;this.mac=new Uint8Array([0,34,21,255*Math.random()|0,255*Math.random()|0,255*Math.random()|0]);this.mar=Uint8Array.of(255,255,255,255,255,255,255,255);this.mac_address_in_state=null;for(b=0;6>b;b++)this.memory[b<<1]=this.memory[b<<1|1]=this.mac[b];this.memory[28]=this.memory[29]=87;this.memory[30]=this.memory[31]=87;J("Mac: "+Fa(this.mac),1048576);this.rsar=0;this.pstart=64;this.pstop=128;this.boundary=this.curpg= +76;b=a.io;b.register_read(this.port|0,this,function(){return this.cr});b.register_write(this.port|0,this,function(e){this.cr=e;A(e,2);A(this.txcr,2);this.cr&1||(e&24&&0===this.rcnt&&this.do_interrupt(64),e&4&&(e=this.tpsr<<8,e=this.memory.subarray(e,e+this.tcnt),this.mac_address_in_state&&(e=new Uint8Array(e),Ea(e,this.mac_address_in_state,this.mac)),this.bus.send("net0-send",e),this.bus.send("eth-transmit-end",[e.length]),this.cr&=-5,this.do_interrupt(2),A(e.byteLength)))});b.register_read(this.port| +13,this,function(){return 1===this.get_page()?this.mar[5]:0});b.register_read(this.port|14,this,function(){return 1===this.get_page()?this.mar[6]:0},function(){this.get_page();return 0});b.register_read(this.port|15,this,function(){return 1===this.get_page()?this.mar[7]:0});b.register_read(this.port|31,this,function(){this.get_page();this.do_interrupt(128);return 0});b.register_write(this.port|31,this,function(e){this.get_page();A(e,2)});b.register_read(this.port|1,this,function(){var e=this.get_page(); +return 0===e?this.pstart:1===e?this.mac[0]:2===e?this.pstart:0});b.register_write(this.port|1,this,function(e){var g=this.get_page();0===g?(A(e,2),this.pstart=e):1===g?(A(e),this.mac[0]=e):A(e)});b.register_read(this.port|2,this,function(){var e=this.get_page();return 0===e?this.pstop:1===e?this.mac[1]:2===e?this.pstop:0});b.register_write(this.port|2,this,function(e){var g=this.get_page();0===g?(A(e,2),e>this.memory.length>>8&&(e=this.memory.length>>8,A(e)),this.pstop=e):1===g?(A(e),this.mac[1]= +e):A(e)});b.register_read(this.port|7,this,function(){var e=this.get_page();return 0===e?(A(this.isr,2),this.isr):1===e?(A(this.curpg,2),this.curpg):0});b.register_write(this.port|7,this,function(e){var g=this.get_page();0===g?(A(e,2),this.isr&=~e,this.update_irq()):1===g&&(A(e,2),this.curpg=e)});b.register_write(this.port|13,this,function(e){0===this.get_page()&&(this.txcr=e);A(e,2)});b.register_write(this.port|14,this,function(e){0===this.get_page()?(A(e,2),this.dcfg=e):A(e,2)});b.register_read(this.port| +10,this,function(){var e=this.get_page();return 0===e?80:1===e?this.mar[2]:0});b.register_write(this.port|10,this,function(e){0===this.get_page()?(A(e,2),this.rcnt=this.rcnt&65280|e&255):A(e,2)});b.register_read(this.port|11,this,function(){var e=this.get_page();return 0===e?67:1===e?this.mar[3]:0});b.register_write(this.port|11,this,function(e){0===this.get_page()?(A(e,2),this.rcnt=this.rcnt&255|e<<8&65280):A(e,2)});b.register_read(this.port|8,this,function(){var e=this.get_page();return 0===e?this.rsar& +255:1===e?this.mar[0]:0});b.register_write(this.port|8,this,function(e){0===this.get_page()?(A(e,2),this.rsar=this.rsar&65280|e&255):A(e,2)});b.register_read(this.port|9,this,function(){var e=this.get_page();return 0===e?this.rsar>>8&255:1===e?this.mar[1]:0});b.register_write(this.port|9,this,function(e){0===this.get_page()?(A(e,2),this.rsar=this.rsar&255|e<<8&65280):A(e,2)});b.register_write(this.port|15,this,function(e){0===this.get_page()?(A(e,2),A(this.isr,2),this.imr=e,this.update_irq()):A(e, +2)});b.register_read(this.port|3,this,function(){var e=this.get_page();return 0===e?(A(this.boundary,2),this.boundary):1===e?this.mac[2]:0});b.register_write(this.port|3,this,function(e){var g=this.get_page();0===g?(A(e,2),this.boundary=e):1===g?(A(e),this.mac[2]=e):A(e)});b.register_read(this.port|4,this,function(){var e=this.get_page();return 0===e?this.tsr:1===e?this.mac[3]:0});b.register_write(this.port|4,this,function(e){var g=this.get_page();0===g?(A(e,2),this.tpsr=e):1===g?(A(e),this.mac[3]= +e):A(e)});b.register_read(this.port|5,this,function(){var e=this.get_page();return 0===e?0:1===e?this.mac[4]:0});b.register_write(this.port|5,this,function(e){var g=this.get_page();0===g?(A(e,2),this.tcnt=this.tcnt&-256|e):1===g?(A(e),this.mac[4]=e):A(e)});b.register_read(this.port|6,this,function(){var e=this.get_page();return 0===e?0:1===e?this.mac[5]:0});b.register_write(this.port|6,this,function(e){var g=this.get_page();0===g?(A(e,2),this.tcnt=this.tcnt&255|e<<8):1===g?(A(e),this.mac[5]=e):A(e)}); +b.register_read(this.port|12,this,function(){var e=this.get_page();return 0===e?9:1===e?this.mar[4]:0});b.register_write(this.port|12,this,function(e){0===this.get_page()?(A(e,2),this.rxcr=e):A(e)});b.register_read(this.port|16,this,this.data_port_read8,this.data_port_read16,this.data_port_read32);b.register_write(this.port|16,this,this.data_port_write16,this.data_port_write16,this.data_port_write32);a.devices.pci.register_device(this)} +Ga.prototype.get_state=function(){var a=[];a[0]=this.isr;a[1]=this.imr;a[2]=this.cr;a[3]=this.dcfg;a[4]=this.rcnt;a[5]=this.tcnt;a[6]=this.tpsr;a[7]=this.rsar;a[8]=this.pstart;a[9]=this.curpg;a[10]=this.boundary;a[11]=this.pstop;a[12]=this.rxcr;a[13]=this.txcr;a[14]=this.tsr;a[15]=this.mac;a[16]=this.memory;return a}; +Ga.prototype.set_state=function(a){this.isr=a[0];this.imr=a[1];this.cr=a[2];this.dcfg=a[3];this.rcnt=a[4];this.tcnt=a[5];this.tpsr=a[6];this.rsar=a[7];this.pstart=a[8];this.curpg=a[9];this.boundary=a[10];this.pstop=a[11];this.rxcr=a[12];this.txcr=a[13];this.tsr=a[14];this.preserve_mac_from_state_image?(this.mac=a[15],this.memory=a[16]):this.mac_address_translation&&(this.mac_address_in_state=a[15],this.memory=a[16],Fa(this.mac_address_in_state),Fa(this.mac))}; +Ga.prototype.do_interrupt=function(a){A(a,2);this.isr|=a;this.update_irq()};Ga.prototype.update_irq=function(){this.imr&this.isr?this.pci.raise_irq(this.pci_id):this.pci.lower_irq(this.pci_id)};Ga.prototype.data_port_write=function(a){if(16>=this.rsar||16384<=this.rsar&&32768>this.rsar)this.memory[this.rsar]=a;this.rsar++;this.rcnt--;this.rsar>=this.pstop<<8&&(this.rsar+=this.pstart-this.pstop<<8);0===this.rcnt&&this.do_interrupt(64)}; +Ga.prototype.data_port_write16=function(a){this.data_port_write(a);this.dcfg&1&&this.data_port_write(a>>8)};Ga.prototype.data_port_write32=function(a){this.data_port_write(a);this.data_port_write(a>>8);this.data_port_write(a>>16);this.data_port_write(a>>24)};Ga.prototype.data_port_read=function(){let a=0;32768>this.rsar&&(a=this.memory[this.rsar]);this.rsar++;this.rcnt--;this.rsar>=this.pstop<<8&&(this.rsar+=this.pstart-this.pstop<<8);0===this.rcnt&&this.do_interrupt(64);return a}; +Ga.prototype.data_port_read8=function(){return this.data_port_read16()&255};Ga.prototype.data_port_read16=function(){return this.dcfg&1?this.data_port_read()|this.data_port_read()<<8:this.data_port_read()};Ga.prototype.data_port_read32=function(){return this.data_port_read()|this.data_port_read()<<8|this.data_port_read()<<16|this.data_port_read()<<24}; +Ga.prototype.receive=function(a){if(!(this.cr&1)&&(this.bus.send("eth-receive-end",[a.length]),this.rxcr&16||this.rxcr&4&&255===a[0]&&255===a[1]&&255===a[2]&&255===a[3]&&255===a[4]&&255===a[5]||!(this.rxcr&8&&1===(a[0]&1)||a[0]!==this.mac[0]||a[1]!==this.mac[1]||a[2]!==this.mac[2]||a[3]!==this.mac[3]||a[4]!==this.mac[4]||a[5]!==this.mac[5]))){this.mac_address_in_state&&(a=new Uint8Array(a),Ea(a,this.mac,this.mac_address_in_state));var b=this.curpg<<8,c=Math.max(60,a.length)+4,d=b+4,e=this.curpg+1+ +(c>>8),g=b+c,f=1+(c>>8),k=this.boundary>this.curpg?this.boundary-this.curpg:this.pstop-this.curpg+this.boundary-this.pstart;kthis.pstop<<8?(g=(this.pstop<<8)-d,this.memory.set(a.subarray(0,g),d),this.memory.set(a.subarray(g),this.pstart<<8),A(g)):(this.memory.set(a,d),60>a.length&&this.memory.fill(0,d+a.length,d+60)),e>=this.pstop&&(e+=this.pstart-this.pstop),this.memory[b]=1,this.memory[b+1]=e,this.memory[b+ +2]=c,this.memory[b+3]=c>>8,this.curpg=e,A(b),A(c),A(e),this.do_interrupt(1))}};Ga.prototype.get_page=function(){return this.cr>>6&3};var Ha=new Uint8Array(256),Ia=[],Ja=[],Ka=[],La=new Uint8Array(256),Ma=[]; +function Q(a,b){this.cpu=a;this.bus=b;this.write_buffer=new la(64);this.read_buffer=new la(64);this.mixer_current_address=this.command_size=this.command=this.read_buffer_lastvalue=0;this.mixer_registers=new Uint8Array(256);this.mixer_reset();this.dummy_speaker_enabled=!1;this.test_register=0;this.dsp_signed=this.dsp_16bit=this.dsp_stereo=this.dsp_highspeed=!1;this.dac_buffers=[new ma(65536),new ma(65536)];this.dma=a.devices.dma;this.dma_channel=this.dma_irq=this.dma_bytes_block=this.dma_bytes_left= +this.dma_bytes_count=this.dma_sample_count=0;this.dma_channel_8bit=1;this.dma_channel_16bit=5;this.dma_autoinit=!1;this.dma_buffer=new ArrayBuffer(65536);this.dma_buffer_int8=new Int8Array(this.dma_buffer);this.dma_buffer_uint8=new Uint8Array(this.dma_buffer);this.dma_buffer_int16=new Int16Array(this.dma_buffer);this.dma_buffer_uint16=new Uint16Array(this.dma_buffer);this.dma_syncbuffer=new r.SyncBuffer(this.dma_buffer);this.dma_paused=this.dma_waiting_transfer=!1;this.sampling_rate=22050;b.send("dac-tell-sampling-rate", +this.sampling_rate);this.bytes_per_sample=1;this.e2_value=170;this.e2_count=0;this.asp_registers=new Uint8Array(256);this.mpu_read_buffer=new la(64);this.fm_current_address1=this.fm_current_address0=this.mpu_read_buffer_lastvalue=0;this.fm_waveform_select_enable=!1;this.irq=5;this.irq_triggered=new Uint8Array(16);a.io.register_read_consecutive(544,this,this.port2x0_read,this.port2x1_read,this.port2x2_read,this.port2x3_read);a.io.register_read_consecutive(904,this,this.port2x0_read,this.port2x1_read); +a.io.register_read_consecutive(548,this,this.port2x4_read,this.port2x5_read);a.io.register_read(550,this,this.port2x6_read);a.io.register_read(551,this,this.port2x7_read);a.io.register_read(552,this,this.port2x8_read);a.io.register_read(553,this,this.port2x9_read);a.io.register_read(554,this,this.port2xA_read);a.io.register_read(555,this,this.port2xB_read);a.io.register_read(556,this,this.port2xC_read);a.io.register_read(557,this,this.port2xD_read);a.io.register_read_consecutive(558,this,this.port2xE_read, +this.port2xF_read);a.io.register_write_consecutive(544,this,this.port2x0_write,this.port2x1_write,this.port2x2_write,this.port2x3_write);a.io.register_write_consecutive(904,this,this.port2x0_write,this.port2x1_write);a.io.register_write_consecutive(548,this,this.port2x4_write,this.port2x5_write);a.io.register_write(550,this,this.port2x6_write);a.io.register_write(551,this,this.port2x7_write);a.io.register_write_consecutive(552,this,this.port2x8_write,this.port2x9_write);a.io.register_write(554,this, +this.port2xA_write);a.io.register_write(555,this,this.port2xB_write);a.io.register_write(556,this,this.port2xC_write);a.io.register_write(557,this,this.port2xD_write);a.io.register_write(558,this,this.port2xE_write);a.io.register_write(559,this,this.port2xF_write);a.io.register_read_consecutive(816,this,this.port3x0_read,this.port3x1_read);a.io.register_write_consecutive(816,this,this.port3x0_write,this.port3x1_write);this.dma.on_unmask(this.dma_on_unmask,this);b.register("dac-request-data",function(){this.dac_handle_request()}, +this);b.register("speaker-has-initialized",function(){this.mixer_reset()},this);b.send("speaker-confirm-initialized");this.dsp_reset()} +Q.prototype.dsp_reset=function(){this.write_buffer.clear();this.read_buffer.clear();this.command_size=this.command=0;this.dummy_speaker_enabled=!1;this.test_register=0;this.dsp_signed=this.dsp_16bit=this.dsp_stereo=this.dsp_highspeed=!1;this.dac_buffers[0].clear();this.dac_buffers[1].clear();this.dma_channel=this.dma_irq=this.dma_bytes_block=this.dma_bytes_left=this.dma_bytes_count=this.dma_sample_count=0;this.dma_autoinit=!1;this.dma_buffer_uint8.fill(0);this.dma_paused=this.dma_waiting_transfer= +!1;this.e2_value=170;this.e2_count=0;this.sampling_rate=22050;this.bytes_per_sample=1;this.lower_irq(1);this.irq_triggered.fill(0);this.asp_registers.fill(0);this.asp_registers[5]=1;this.asp_registers[9]=248}; +Q.prototype.get_state=function(){var a=[];a[2]=this.read_buffer_lastvalue;a[3]=this.command;a[4]=this.command_size;a[5]=this.mixer_current_address;a[6]=this.mixer_registers;a[7]=this.dummy_speaker_enabled;a[8]=this.test_register;a[9]=this.dsp_highspeed;a[10]=this.dsp_stereo;a[11]=this.dsp_16bit;a[12]=this.dsp_signed;a[15]=this.dma_sample_count;a[16]=this.dma_bytes_count;a[17]=this.dma_bytes_left;a[18]=this.dma_bytes_block;a[19]=this.dma_irq;a[20]=this.dma_channel;a[21]=this.dma_channel_8bit;a[22]= +this.dma_channel_16bit;a[23]=this.dma_autoinit;a[24]=this.dma_buffer_uint8;a[25]=this.dma_waiting_transfer;a[26]=this.dma_paused;a[27]=this.sampling_rate;a[28]=this.bytes_per_sample;a[29]=this.e2_value;a[30]=this.e2_count;a[31]=this.asp_registers;a[33]=this.mpu_read_buffer_last_value;a[34]=this.irq;a[35]=this.irq_triggered;return a}; +Q.prototype.set_state=function(a){this.read_buffer_lastvalue=a[2];this.command=a[3];this.command_size=a[4];this.mixer_current_address=a[5];this.mixer_registers=a[6];this.mixer_full_update();this.dummy_speaker_enabled=a[7];this.test_register=a[8];this.dsp_highspeed=a[9];this.dsp_stereo=a[10];this.dsp_16bit=a[11];this.dsp_signed=a[12];this.dma_sample_count=a[15];this.dma_bytes_count=a[16];this.dma_bytes_left=a[17];this.dma_bytes_block=a[18];this.dma_irq=a[19];this.dma_channel=a[20];this.dma_channel_8bit= +a[21];this.dma_channel_16bit=a[22];this.dma_autoinit=a[23];this.dma_buffer_uint8=a[24];this.dma_waiting_transfer=a[25];this.dma_paused=a[26];this.sampling_rate=a[27];this.bytes_per_sample=a[28];this.e2_value=a[29];this.e2_count=a[30];this.asp_registers=a[31];this.mpu_read_buffer_last_value=a[33];this.irq=a[34];this.irq_triggered=a[35];this.dma_buffer=this.dma_buffer_uint8.buffer;this.dma_buffer_int8=new Int8Array(this.dma_buffer);this.dma_buffer_int16=new Int16Array(this.dma_buffer);this.dma_buffer_uint16= +new Uint16Array(this.dma_buffer);this.dma_syncbuffer=new r.SyncBuffer(this.dma_buffer);this.dma_paused?this.bus.send("dac-disable"):this.bus.send("dac-enable")};Q.prototype.port2x0_read=function(){return 255};Q.prototype.port2x1_read=function(){return 255};Q.prototype.port2x2_read=function(){return 255};Q.prototype.port2x3_read=function(){return 255};Q.prototype.port2x4_read=function(){return this.mixer_current_address};Q.prototype.port2x5_read=function(){return this.mixer_read(this.mixer_current_address)}; +Q.prototype.port2x6_read=function(){return 255};Q.prototype.port2x7_read=function(){return 255};Q.prototype.port2x8_read=function(){return 255};Q.prototype.port2x9_read=function(){return 255};Q.prototype.port2xA_read=function(){this.read_buffer.length&&(this.read_buffer_lastvalue=this.read_buffer.shift());A(this.read_buffer_lastvalue);String.fromCharCode(this.read_buffer_lastvalue);return this.read_buffer_lastvalue};Q.prototype.port2xB_read=function(){return 255};Q.prototype.port2xC_read=function(){return 127}; +Q.prototype.port2xD_read=function(){return 255};Q.prototype.port2xE_read=function(){this.irq_triggered[1]&&this.lower_irq(1);return(this.read_buffer.length&&!this.dsp_highspeed)<<7|127};Q.prototype.port2xF_read=function(){this.lower_irq(2);return 0};Q.prototype.port2x0_write=function(a){A(a);this.fm_current_address0=0};Q.prototype.port2x1_write=function(a){A(a);var b=Ma[this.fm_current_address0];b||(b=this.fm_default_write);b.call(this,a,0,this.fm_current_address0)}; +Q.prototype.port2x2_write=function(a){A(a);this.fm_current_address1=0};Q.prototype.port2x3_write=function(a){A(a);var b=Ma[this.fm_current_address1];b||(b=this.fm_default_write);b.call(this,a,1,this.fm_current_address1)};Q.prototype.port2x4_write=function(a){A(a);this.mixer_current_address=a};Q.prototype.port2x5_write=function(a){A(a);this.mixer_write(this.mixer_current_address,a)}; +Q.prototype.port2x6_write=function(a){A(a);this.dsp_highspeed?this.dsp_highspeed=!1:a&&this.dsp_reset();this.read_buffer.clear();this.read_buffer.push(170)};Q.prototype.port2x7_write=function(){};Q.prototype.port2x8_write=function(){};Q.prototype.port2x9_write=function(){};Q.prototype.port2xA_write=function(){};Q.prototype.port2xB_write=function(){}; +Q.prototype.port2xC_write=function(a){0===this.command?(A(a),this.command=a,this.write_buffer.clear(),this.command_size=Ha[a]):(A(a),this.write_buffer.push(a));this.write_buffer.length>=this.command_size&&this.command_do()};Q.prototype.port2xD_write=function(){};Q.prototype.port2xE_write=function(){};Q.prototype.port2xF_write=function(){}; +Q.prototype.port3x0_read=function(){this.mpu_read_buffer.length&&(this.mpu_read_buffer_lastvalue=this.mpu_read_buffer.shift());A(this.mpu_read_buffer_lastvalue);return this.mpu_read_buffer_lastvalue};Q.prototype.port3x0_write=function(a){A(a)};Q.prototype.port3x1_read=function(){return 0|128*!this.mpu_read_buffer.length};Q.prototype.port3x1_write=function(a){A(a);255==a&&(this.mpu_read_buffer.clear(),this.mpu_read_buffer.push(254))}; +Q.prototype.command_do=function(){var a=Ia[this.command];a||(a=this.dsp_default_handler);a.call(this);this.command_size=this.command=0;this.write_buffer.clear()};Q.prototype.dsp_default_handler=function(){A(this.command)};function R(a,b,c){c||(c=Q.prototype.dsp_default_handler);for(var d=0;dc;c++)b.push(a+c);return b}R([14],2,function(){this.asp_registers[this.write_buffer.shift()]=this.write_buffer.shift()}); +R([15],1,function(){this.read_buffer.clear();this.read_buffer.push(this.asp_registers[this.write_buffer.shift()])});R([16],1,function(){var a=this.write_buffer.shift();a=Oa(a/127.5+-1,-1,1);this.dac_buffers[0].push(a);this.dac_buffers[1].push(a);this.bus.send("dac-enable")});R([20,21],2,function(){this.dma_irq=1;this.dma_channel=this.dma_channel_8bit;this.dsp_highspeed=this.dsp_16bit=this.dsp_signed=this.dma_autoinit=!1;this.dma_transfer_size_set();this.dma_transfer_start()});R([22],2);R([23],2); +R([28],0,function(){this.dma_irq=1;this.dma_channel=this.dma_channel_8bit;this.dma_autoinit=!0;this.dsp_highspeed=this.dsp_16bit=this.dsp_signed=!1;this.dma_transfer_start()});R([31],0);R([32],0,function(){this.read_buffer.clear();this.read_buffer.push(127)});R([36],2);R([44],0);R([48],0);R([49],0);R([52],0);R([53],0);R([54],0);R([55],0);R([56],0);R([64],1,function(){this.sampling_rate_change(1E6/(256-this.write_buffer.shift())/this.get_channel_count())}); +R([65,66],2,function(){this.sampling_rate_change(this.write_buffer.shift()<<8|this.write_buffer.shift())});R([72],2,function(){this.dma_transfer_size_set()});R([116],2);R([117],2);R([118],2);R([119],2);R([125],0);R([127],0);R([128],2);R([144],0,function(){this.dma_irq=1;this.dma_channel=this.dma_channel_8bit;this.dma_autoinit=!0;this.dsp_signed=!1;this.dsp_highspeed=!0;this.dsp_16bit=!1;this.dma_transfer_start()});R([145],0);R([152],0);R([153],0);R([160],0);R([168],0); +R(Na(176),3,function(){if(this.command&8)this.dsp_default_handler();else{var a=this.write_buffer.shift();this.dma_irq=2;this.dma_channel=this.dma_channel_16bit;this.dma_autoinit=!!(this.command&4);this.dsp_signed=!!(a&16);this.dsp_stereo=!!(a&32);this.dsp_16bit=!0;this.dma_transfer_size_set();this.dma_transfer_start()}}); +R(Na(192),3,function(){if(this.command&8)this.dsp_default_handler();else{var a=this.write_buffer.shift();this.dma_irq=1;this.dma_channel=this.dma_channel_8bit;this.dma_autoinit=!!(this.command&4);this.dsp_signed=!!(a&16);this.dsp_stereo=!!(a&32);this.dsp_16bit=!1;this.dma_transfer_size_set();this.dma_transfer_start()}});R([208],0,function(){this.dma_paused=!0;this.bus.send("dac-disable")});R([209],0,function(){this.dummy_speaker_enabled=!0});R([211],0,function(){this.dummy_speaker_enabled=!1}); +R([212],0,function(){this.dma_paused=!1;this.bus.send("dac-enable")});R([213],0,function(){this.dma_paused=!0;this.bus.send("dac-disable")});R([214],0,function(){this.dma_paused=!1;this.bus.send("dac-enable")});R([216],0,function(){this.read_buffer.clear();this.read_buffer.push(255*this.dummy_speaker_enabled)});R([217,218],0,function(){this.dma_autoinit=!1});R([224],1,function(){this.read_buffer.clear();this.read_buffer.push(~this.write_buffer.shift())}); +R([225],0,function(){this.read_buffer.clear();this.read_buffer.push(4);this.read_buffer.push(5)});R([226],1);R([227],0,function(){this.read_buffer.clear();for(var a=0;44>a;a++)this.read_buffer.push("COPYRIGHT (C) CREATIVE TECHNOLOGY LTD, 1992.".charCodeAt(a));this.read_buffer.push(0)});R([228],1,function(){this.test_register=this.write_buffer.shift()});R([232],0,function(){this.read_buffer.clear();this.read_buffer.push(this.test_register)});R([242,243],0,function(){this.raise_irq()});var Pa=new Uint8Array(256); +Pa[14]=255;Pa[15]=7;Pa[55]=56;R([249],1,function(){var a=this.write_buffer.shift();this.read_buffer.clear();this.read_buffer.push(Pa[a])});Q.prototype.mixer_read=function(a){var b=Ja[a];b?b=b.call(this):(b=this.mixer_registers[a],A(a),A(b));return b};Q.prototype.mixer_write=function(a,b){var c=Ka[a];c?c.call(this,b):(A(a),A(b))};Q.prototype.mixer_default_read=function(){A(this.mixer_current_address);return this.mixer_registers[this.mixer_current_address]}; +Q.prototype.mixer_default_write=function(a){A(this.mixer_current_address);A(a);this.mixer_registers[this.mixer_current_address]=a}; +Q.prototype.mixer_reset=function(){this.mixer_registers[4]=204;this.mixer_registers[34]=204;this.mixer_registers[38]=204;this.mixer_registers[40]=0;this.mixer_registers[46]=0;this.mixer_registers[10]=0;this.mixer_registers[48]=192;this.mixer_registers[49]=192;this.mixer_registers[50]=192;this.mixer_registers[51]=192;this.mixer_registers[52]=192;this.mixer_registers[53]=192;this.mixer_registers[54]=0;this.mixer_registers[55]=0;this.mixer_registers[56]=0;this.mixer_registers[57]=0;this.mixer_registers[59]= +0;this.mixer_registers[60]=31;this.mixer_registers[61]=21;this.mixer_registers[62]=11;this.mixer_registers[63]=0;this.mixer_registers[64]=0;this.mixer_registers[65]=0;this.mixer_registers[66]=0;this.mixer_registers[67]=0;this.mixer_registers[68]=128;this.mixer_registers[69]=128;this.mixer_registers[70]=128;this.mixer_registers[71]=128;this.mixer_full_update()};Q.prototype.mixer_full_update=function(){for(var a=1;a>>4};Ka[a]=function(d){this.mixer_registers[a]=d;var e=d<<4&240|this.mixer_registers[c]&15;this.mixer_write(b,d&240|this.mixer_registers[b]&15);this.mixer_write(c,e)}} +function Ua(a,b,c){Ja[a]=Q.prototype.mixer_default_read;Ka[a]=function(d){this.mixer_registers[a]=d;this.bus.send("mixer-volume",[b,c,(d>>>2)-62])}}Qa(0,function(){this.mixer_reset();return 0});Ra(0);Ta(4,50,51);Ta(34,48,49);Ta(38,52,53);Ta(40,54,55);Ta(46,56,57);Ua(48,0,0);Ua(49,0,1);Ua(50,2,0);Ua(51,2,1);Qa(59);Ra(59,function(a){this.mixer_registers[59]=a;this.bus.send("mixer-volume",[1,2,6*(a>>>6)-18])});Qa(65); +Ra(65,function(a){this.mixer_registers[65]=a;this.bus.send("mixer-gain-left",6*(a>>>6))});Qa(66);Ra(66,function(a){this.mixer_registers[66]=a;this.bus.send("mixer-gain-right",6*(a>>>6))});Qa(68);Ra(68,function(a){this.mixer_registers[68]=a;a>>>=3;this.bus.send("mixer-treble-left",a-(16>a?14:16))});Qa(69);Ra(69,function(a){this.mixer_registers[69]=a;a>>>=3;this.bus.send("mixer-treble-right",a-(16>a?14:16))});Qa(70); +Ra(70,function(a){this.mixer_registers[70]=a;a>>>=3;this.bus.send("mixer-bass-right",a-(16>a?14:16))});Qa(71);Ra(71,function(a){this.mixer_registers[71]=a;a>>>=3;this.bus.send("mixer-bass-right",a-(16>a?14:16))});Qa(128,function(){switch(this.irq){case 2:return 1;case 5:return 2;case 7:return 4;case 10:return 8;default:return 0}});Ra(128,function(a){a&1&&(this.irq=2);a&2&&(this.irq=5);a&4&&(this.irq=7);a&8&&(this.irq=10)}); +Qa(129,function(){var a=0;switch(this.dma_channel_8bit){case 0:a|=1;break;case 1:a|=2;break;case 3:a|=8}switch(this.dma_channel_16bit){case 5:a|=32;break;case 6:a|=64;break;case 7:a|=128}return a});Ra(129,function(a){a&1&&(this.dma_channel_8bit=0);a&2&&(this.dma_channel_8bit=1);a&8&&(this.dma_channel_8bit=3);a&32&&(this.dma_channel_16bit=5);a&64&&(this.dma_channel_16bit=6);a&128&&(this.dma_channel_16bit=7)});Qa(130,function(){for(var a=32,b=0;16>b;b++)a|=b*this.irq_triggered[b];return a}); +Q.prototype.fm_default_write=function(a,b,c){A(c);A(a)};function T(a,b){b||(b=Q.prototype.fm_default_write);for(var c=0;c>2&-4,32),this.dma_bytes_block);this.dma_waiting_transfer=!0;this.dma.channel_mask[this.dma_channel]||this.dma_on_unmask(this.dma_channel)}; +Q.prototype.dma_on_unmask=function(a){a===this.dma_channel&&this.dma_waiting_transfer&&(this.dma_waiting_transfer=!1,this.dma_bytes_left=this.dma_bytes_count,this.dma_paused=!1,this.bus.send("dac-enable"))}; +Q.prototype.dma_transfer_next=function(){var a=Math.min(this.dma_bytes_left,this.dma_bytes_block),b=Math.floor(a/this.bytes_per_sample);this.dma.do_write(this.dma_syncbuffer,0,a,this.dma_channel,c=>{c||(this.dma_to_dac(b),this.dma_bytes_left-=a,this.dma_bytes_left||(this.raise_irq(this.dma_irq),this.dma_autoinit&&(this.dma_bytes_left=this.dma_bytes_count)))})}; +Q.prototype.dma_to_dac=function(a){var b=this.dsp_16bit?32767.5:127.5,c=this.dsp_signed?0:-1,d=this.dsp_stereo?1:2;var e=this.dsp_16bit?this.dsp_signed?this.dma_buffer_int16:this.dma_buffer_uint16:this.dsp_signed?this.dma_buffer_int8:this.dma_buffer_uint8;for(var g=0,f=0;fc)*c+(b<=a&&a<=c)*a};function h(a,b){this.cpu=a;this.pci=a.devices.pci;this.device_id=b.device_id;this.pci_space=[244,26,b.device_id&255,b.device_id>>8,7,5,16,0,1,0,2,0,0,0,0,0,1,168,0,0,0,16,191,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,26,b.subsystem_device_id&255,b.subsystem_device_id>>8,0,0,0,0,64,0,0,0,0,0,0,0,0,1,0,0];this.pci_space=this.pci_space.concat(r.zeros(256-this.pci_space.length));this.pci_id=b.pci_id;this.pci_bars=[];this.name=b.name;this.driver_feature_select=this.device_feature_select=0;this.device_feature= +new Uint32Array(4);this.driver_feature=new Uint32Array(4);for(var c of b.common.features)this.device_feature[c>>>5]|=1<<(c&31),this.driver_feature[c>>>5]|=1<<(c&31);b.common.features.includes(32);this.features_ok=!0;this.device_status=0;this.config_has_changed=!1;this.config_generation=0;this.queues=[];for(const d of b.common.queues)this.queues.push(new W(a,this,d));this.queue_select=0;this.queue_selected=this.queues[0];this.isr_status=0;c=[];c.push(this.create_common_capability(b.common));c.push(this.create_notification_capability(b.notification)); +c.push(this.create_isr_capability(b.isr_status));b.device_specific&&c.push(this.create_device_specific_capability(b.device_specific));this.init_capabilities(c);a.devices.pci.register_device(this);this.reset()} +h.prototype.create_common_capability=function(a){return{type:1,bar:0,port:a.initial_port,use_mmio:!1,offset:0,extra:new Uint8Array(0),struct:[{bytes:4,name:"device_feature_select",read:()=>this.device_feature_select,write:b=>{this.device_feature_select=b}},{bytes:4,name:"device_feature",read:()=>this.device_feature[this.device_feature_select]||0,write:()=>{}},{bytes:4,name:"driver_feature_select",read:()=>this.driver_feature_select,write:b=>{this.driver_feature_select=b}},{bytes:4,name:"driver_feature", +read:()=>this.driver_feature[this.driver_feature_select]||0,write:b=>{const c=this.device_feature[this.driver_feature_select];this.driver_feature_select65535,write:()=>{}},{bytes:2,name:"num_queues",read:()=>this.queues.length,write:()=>{}},{bytes:1,name:"device_status",read:()=>this.device_status,write:b=>{0===b&&this.reset();b&~this.device_status& +4&&this.device_status&64&&this.notify_config_changes();this.features_ok||(b&=-9);this.device_status=b;if(b&~this.device_status&4)a.on_driver_ok()}},{bytes:1,name:"config_generation",read:()=>this.config_generation,write:()=>{}},{bytes:2,name:"queue_select",read:()=>this.queue_select,write:b=>{this.queue_select=b;this.queue_selected=this.queue_selectthis.queue_selected?this.queue_selected.size:0,write:b=> +{this.queue_selected&&(b&b-1&&(b=1<this.queue_selected.size_supported&&(b=this.queue_selected.size_supported),this.queue_selected.set_size(b))}},{bytes:2,name:"queue_msix_vector",read:()=>65535,write:()=>{}},{bytes:2,name:"queue_enable",read:()=>this.queue_selected?this.queue_selected.enabled|0:0,write:b=>{this.queue_selected&&1===b&&this.queue_selected.is_configured()&&this.queue_selected.enable()}},{bytes:2,name:"queue_notify_off",read:()=>this.queue_selected?this.queue_selected.notify_offset: +0,write:()=>{}},{bytes:4,name:"queue_desc (low dword)",read:()=>this.queue_selected?this.queue_selected.desc_addr:0,write:b=>{this.queue_selected&&(this.queue_selected.desc_addr=b)}},{bytes:4,name:"queue_desc (high dword)",read:()=>0,write:()=>{}},{bytes:4,name:"queue_avail (low dword)",read:()=>this.queue_selected?this.queue_selected.avail_addr:0,write:b=>{this.queue_selected&&(this.queue_selected.avail_addr=b)}},{bytes:4,name:"queue_avail (high dword)",read:()=>0,write:()=>{}},{bytes:4,name:"queue_used (low dword)", +read:()=>this.queue_selected?this.queue_selected.used_addr:0,write:b=>{this.queue_selected&&(this.queue_selected.used_addr=b)}},{bytes:4,name:"queue_used (high dword)",read:()=>0,write:()=>{}}]}}; +h.prototype.create_notification_capability=function(a){const b=[];let c;c=a.single_handler?0:2;for(const [d,e]of a.handlers.entries())b.push({bytes:2,name:"notify"+d,read:()=>65535,write:e||(()=>{})});return{type:2,bar:1,port:a.initial_port,use_mmio:!1,offset:0,extra:new Uint8Array([c&255,c>>8&255,c>>16&255,c>>24]),struct:b}}; +h.prototype.create_isr_capability=function(a){return{type:3,bar:2,port:a.initial_port,use_mmio:!1,offset:0,extra:new Uint8Array(0),struct:[{bytes:1,name:"isr_status",read:()=>{const b=this.isr_status;this.lower_irq();return b},write:()=>{}}]}};h.prototype.create_device_specific_capability=function(a){return{type:4,bar:3,port:a.initial_port,use_mmio:!1,offset:0,extra:new Uint8Array(0),struct:a.struct}}; +h.prototype.init_capabilities=function(a){let b=this.pci_space[52]=64;var c=b;for(const e of a){a=16+e.extra.length;c=b;b=c+a;var d=e.struct.reduce((g,f)=>g+f.bytes,0);d+=e.offset;d=16>d?16:1<>>8&255;this.pci_space[c+ +10]=e.offset>>>16&255;this.pci_space[c+11]=e.offset>>>24;this.pci_space[c+12]=d&255;this.pci_space[c+13]=d>>>8&255;this.pci_space[c+14]=d>>>16&255;this.pci_space[c+15]=d>>>24;for(const [g,f]of e.extra.entries())this.pci_space[c+16+g]=f;c=16+4*e.bar;this.pci_space[c]=e.port&254|!e.use_mmio;this.pci_space[c+1]=e.port>>>8&255;this.pci_space[c+2]=e.port>>>16&255;this.pci_space[c+3]=e.port>>>24&255;c=e.port+e.offset;for(const g of e.struct){let f=g.read;a=g.write;if(!e.use_mmio){d=function(l){return f(l& +-2)>>((l&1)<<3)&255};const k=function(l){return f(l&-4)>>((l&3)<<3)&255};switch(g.bytes){case 4:this.cpu.io.register_read(c,this,k,void 0,f);this.cpu.io.register_write(c,this,void 0,void 0,a);break;case 2:this.cpu.io.register_read(c,this,d,f);this.cpu.io.register_write(c,this,void 0,a);break;case 1:this.cpu.io.register_read(c,this,f),this.cpu.io.register_write(c,this,a)}}c+=g.bytes}}this.pci_space[b]=9;this.pci_space[b+1]=0;this.pci_space[b+2]=20;this.pci_space[b+3]=5;this.pci_space[b+4]=0;this.pci_space[b+ +5]=0;this.pci_space[b+6]=0;this.pci_space[b+7]=0;this.pci_space[b+8]=0;this.pci_space[b+9]=0;this.pci_space[b+10]=0;this.pci_space[b+11]=0;this.pci_space[b+12]=0;this.pci_space[b+13]=0;this.pci_space[b+14]=0;this.pci_space[b+15]=0;this.pci_space[b+16]=0;this.pci_space[b+17]=0;this.pci_space[b+18]=0;this.pci_space[b+19]=0}; +h.prototype.get_state=function(){let a=[];a[0]=this.device_feature_select;a[1]=this.driver_feature_select;a[2]=this.device_feature;a[3]=this.driver_feature;a[4]=this.features_ok;a[5]=this.device_status;a[6]=this.config_has_changed;a[7]=this.config_generation;a[8]=this.isr_status;a[9]=this.queue_select;return a=a.concat(this.queues)}; +h.prototype.set_state=function(a){this.device_feature_select=a[0];this.driver_feature_select=a[1];this.device_feature=a[2];this.driver_feature=a[3];this.features_ok=a[4];this.device_status=a[5];this.config_has_changed=a[6];this.config_generation=a[7];this.isr_status=a[8];this.queue_select=a[9];let b=0;for(let c of a.slice(10))this.queues[b].set_state(c),b++;this.queue_selected=this.queues[this.queue_select]||null}; +h.prototype.reset=function(){this.driver_feature_select=this.device_feature_select=0;this.driver_feature.set(this.device_feature);this.features_ok=!0;this.queue_select=this.device_status=0;this.queue_selected=this.queues[0];for(const a of this.queues)a.reset();this.config_has_changed=!1;this.config_generation=0;this.lower_irq()};h.prototype.notify_config_changes=function(){this.config_has_changed=!0;this.device_status&4&&this.raise_irq(2)}; +h.prototype.update_config_generation=function(){this.config_has_changed&&(this.config_generation++,this.config_generation&=255,this.config_has_changed=!1)};h.prototype.is_feature_negotiated=function(a){return 0<(this.driver_feature[a>>>5]&1<<(a&31))};h.prototype.needs_reset=function(){this.device_status|=64;this.device_status&4&&this.notify_config_changes()};h.prototype.raise_irq=function(a){A(a);this.isr_status|=a;this.pci.raise_irq(this.pci_id)}; +h.prototype.lower_irq=function(){this.isr_status=0;this.pci.lower_irq(this.pci_id)};function W(a,b,c){this.cpu=a;this.virtio=b;this.size_supported=this.size=c.size_supported;this.mask=this.size-1;this.enabled=!1;this.notify_offset=c.notify_offset;this.num_staged_replies=this.used_addr=this.avail_last_idx=this.avail_addr=this.desc_addr=0;this.reset()} +W.prototype.get_state=function(){const a=[];a[0]=this.size;a[1]=this.size_supported;a[2]=this.enabled;a[3]=this.notify_offset;a[4]=this.desc_addr;a[5]=this.avail_addr;a[6]=this.avail_last_idx;a[7]=this.used_addr;a[8]=this.num_staged_replies;return a}; +W.prototype.set_state=function(a){this.size=a[0];this.size_supported=a[1];this.enabled=a[2];this.notify_offset=a[3];this.desc_addr=a[4];this.avail_addr=a[5];this.avail_last_idx=a[6];this.used_addr=a[7];this.num_staged_replies=a[8];this.mask=this.size-1};W.prototype.reset=function(){this.enabled=!1;this.num_staged_replies=this.used_addr=this.avail_last_idx=this.avail_addr=this.desc_addr=0;this.set_size(this.size_supported)}; +W.prototype.is_configured=function(){return this.desc_addr&&this.avail_addr&&this.used_addr};W.prototype.enable=function(){this.is_configured();this.enabled=!0};W.prototype.set_size=function(a){this.size=a;this.mask=a-1};W.prototype.count_requests=function(){return this.avail_get_idx()-this.avail_last_idx&this.mask};W.prototype.has_request=function(){return(this.avail_get_idx()&this.mask)!==this.avail_last_idx}; +W.prototype.pop_request=function(){this.has_request();var a=this.avail_get_entry(this.avail_last_idx);a=new Wa(this,a);this.avail_last_idx=this.avail_last_idx+1&this.mask;return a};W.prototype.push_reply=function(a){const b=this.used_get_idx()+this.num_staged_replies&this.mask;this.used_set_entry(b,a.head_idx,a.length_written);this.num_staged_replies++}; +W.prototype.flush_replies=function(){if(0!==this.num_staged_replies){var a=this.used_get_idx()+this.num_staged_replies&65535;this.used_set_idx(a);this.num_staged_replies=0;this.virtio.is_feature_negotiated(29)?(this.avail_get_used_event(),this.virtio.raise_irq(1)):~this.avail_get_flags()&1&&this.virtio.raise_irq(1)}};W.prototype.notify_me_after=function(a){a=this.avail_get_idx()+a&65535;this.used_set_avail_event(a)}; +W.prototype.get_descriptor=function(a,b){return{addr_low:this.cpu.read32s(a+16*b),addr_high:this.cpu.read32s(a+16*b+4),len:this.cpu.read32s(a+16*b+8),flags:this.cpu.read16(a+16*b+12),next:this.cpu.read16(a+16*b+14)}};W.prototype.avail_get_flags=function(){return this.cpu.read16(this.avail_addr)};W.prototype.avail_get_idx=function(){return this.cpu.read16(this.avail_addr+2)};W.prototype.avail_get_entry=function(a){return this.cpu.read16(this.avail_addr+4+2*a)}; +W.prototype.avail_get_used_event=function(){return this.cpu.read16(this.avail_addr+4+2*this.size)};W.prototype.used_get_flags=function(){return this.cpu.read16(this.used_addr)};W.prototype.used_set_flags=function(a){this.cpu.write16(this.used_addr,a)};W.prototype.used_get_idx=function(){return this.cpu.read16(this.used_addr+2)};W.prototype.used_set_idx=function(a){this.cpu.write16(this.used_addr+2,a)}; +W.prototype.used_set_entry=function(a,b,c){this.cpu.write32(this.used_addr+4+8*a,b);this.cpu.write32(this.used_addr+8+8*a,c)};W.prototype.used_set_avail_event=function(a){this.cpu.write16(this.used_addr+4+8*this.size,a)}; +function Wa(a,b){this.cpu=a.cpu;this.virtio=a.virtio;this.head_idx=b;this.read_buffers=[];this.length_readable=this.read_buffer_offset=this.read_buffer_idx=0;this.write_buffers=[];this.length_writable=this.length_written=this.write_buffer_offset=this.write_buffer_idx=0;let c=a.desc_addr,d=0,e=a.size,g=!1;const f=this.virtio.is_feature_negotiated(28);do{const k=a.get_descriptor(c,b);A(k.addr_high,8);A(k.addr_low,8);A(k.len,8);A(k.flags,4);A(k.next,4);if(f&&k.flags&4)c=k.addr_low,d=b=0,e=k.len/16;else{if(k.flags& +2)g=!0,this.write_buffers.push(k),this.length_writable+=k.len;else{if(g)break;this.read_buffers.push(k);this.length_readable+=k.len}d++;if(d>e)break;if(k.flags&1)b=k.next;else break}}while(1)} +Wa.prototype.get_next_blob=function(a){let b=0,c=a.length;for(;c&&this.read_buffer_idx!==this.read_buffers.length;){var d=this.read_buffers[this.read_buffer_idx];const e=d.addr_low+this.read_buffer_offset;d=d.len-this.read_buffer_offset;d>c?(d=c,this.read_buffer_offset+=c):(this.read_buffer_idx++,this.read_buffer_offset=0);a.set(this.cpu.read_blob(e,d),b);b+=d;c-=d}return b}; +Wa.prototype.set_next_blob=function(a){let b=0,c=a.length;for(;c&&this.write_buffer_idx!==this.write_buffers.length;){var d=this.write_buffers[this.write_buffer_idx];const e=d.addr_low+this.write_buffer_offset;d=d.len-this.write_buffer_offset;d>c?(d=c,this.write_buffer_offset+=c):(this.write_buffer_idx++,this.write_buffer_offset=0);this.cpu.write_blob(a.subarray(b,b+d),e);b+=d;c-=d}this.length_written+=b;return b};function Xa(a,b){this.bus=b;this.rows=25;this.cols=80;this.ports=4;b=[{size_supported:16,notify_offset:0},{size_supported:16,notify_offset:1},{size_supported:16,notify_offset:2},{size_supported:16,notify_offset:3}];for(let c=1;c{}},notification:{initial_port:47360, +single_handler:!1,handlers:[c=>{for(c=this.virtio.queues[c];c.count_requests()>c.size-2;)c.pop_request()},c=>{let d=this.virtio.queues[c],e=3>1:0;for(;d.has_request();){const g=d.pop_request(),f=new Uint8Array(g.length_readable);g.get_next_blob(f);this.bus.send("virtio-console"+e+"-output-bytes",f);this.Ack(c,g)}},c=>{if(2==c)for(c=this.virtio.queues[c];c.count_requests()>c.size-2;)c.pop_request()},c=>{if(3==c)for(var d=this.virtio.queues[c];d.has_request();){var e=d.pop_request(),g=new Uint8Array(e.length_readable); +e.get_next_blob(g);var f=v.Unmarshall(["w","h","h"],g,{offset:0});g=f[0];f=f[1];this.Ack(c,e);switch(f){case 0:for(e=0;ethis.cols,write:()=>{}},{bytes:2,name:"rows",read:()=>this.rows, +write:()=>{}},{bytes:4,name:"max_nr_ports",read:()=>this.ports,write:()=>{}},{bytes:4,name:"emerg_wr",read:()=>0,write:()=>{}}]}});for(let c=0;cthis.wm.exports[c],b=c=>{const d=a(c);console.assert(d,"Missing import: "+c);return d};this.reset_cpu=b("reset_cpu");this.getiopl=b("getiopl");this.get_eflags=b("get_eflags");this.handle_irqs=b("handle_irqs");this.main_loop=b("main_loop");this.set_jit_config=b("set_jit_config");this.read8=b("read8");this.read16=b("read16");this.read32s=b("read32s");this.write8=b("write8");this.write16=b("write16");this.write32=b("write32");this.in_mapped_range=b("in_mapped_range"); +this.fpu_load_tag_word=b("fpu_load_tag_word");this.fpu_load_status_word=b("fpu_load_status_word");this.fpu_get_sti_f64=b("fpu_get_sti_f64");this.translate_address_system_read=b("translate_address_system_read_js");this.get_seg_cs=b("get_seg_cs");this.get_real_eip=b("get_real_eip");this.clear_tlb=b("clear_tlb");this.full_clear_tlb=b("full_clear_tlb");this.update_state_flags=b("update_state_flags");this.set_tsc=b("set_tsc");this.store_current_tsc=b("store_current_tsc");this.set_cpuid_level=b("set_cpuid_level"); +this.pic_set_irq=b("pic_set_irq");this.pic_clear_irq=b("pic_clear_irq");this.jit_clear_cache=b("jit_clear_cache_js");this.jit_dirty_cache=b("jit_dirty_cache");this.codegen_finalize_finished=b("codegen_finalize_finished");this.allocate_memory=b("allocate_memory");this.zero_memory=b("zero_memory");this.svga_allocate_memory=b("svga_allocate_memory");this.svga_allocate_dest_buffer=b("svga_allocate_dest_buffer");this.svga_fill_pixel_buffer=b("svga_fill_pixel_buffer");this.svga_mark_dirty=b("svga_mark_dirty"); +this.get_pic_addr_master=b("get_pic_addr_master");this.get_pic_addr_slave=b("get_pic_addr_slave");this.zstd_create_ctx=b("zstd_create_ctx");this.zstd_get_src_ptr=b("zstd_get_src_ptr");this.zstd_free_ctx=b("zstd_free_ctx");this.zstd_read=b("zstd_read");this.zstd_read_free=b("zstd_read_free");this.port20_read=b("port20_read");this.port21_read=b("port21_read");this.portA0_read=b("portA0_read");this.portA1_read=b("portA1_read");this.port20_write=b("port20_write");this.port21_write=b("port21_write");this.portA0_write= +b("portA0_write");this.portA1_write=b("portA1_write");this.port4D0_read=b("port4D0_read");this.port4D1_read=b("port4D1_read");this.port4D0_write=b("port4D0_write");this.port4D1_write=b("port4D1_write")};E.prototype.jit_force_generate=function(a){this.jit_force_generate_unsafe&&this.jit_force_generate_unsafe(a)};E.prototype.jit_clear_func=function(a){this.wm.wasm_table.set(a+1024,null)};E.prototype.jit_clear_all_funcs=function(){const a=this.wm.wasm_table;for(let b=0;900>b;b++)a.set(1024+b,null)}; +E.prototype.get_state=function(){var a=[];a[0]=this.memory_size[0];a[1]=new Uint8Array([...this.segment_is_null,...this.segment_access_bytes]);a[2]=this.segment_offsets;a[3]=this.segment_limits;a[4]=this.protected_mode[0];a[5]=this.idtr_offset[0];a[6]=this.idtr_size[0];a[7]=this.gdtr_offset[0];a[8]=this.gdtr_size[0];a[9]=this.page_fault[0];a[10]=this.cr;a[11]=this.cpl[0];a[13]=this.is_32[0];a[16]=this.stack_size_32[0];a[17]=this.in_hlt[0];a[18]=this.last_virt_eip[0];a[19]=this.eip_phys[0];a[22]=this.sysenter_cs[0]; +a[23]=this.sysenter_eip[0];a[24]=this.sysenter_esp[0];a[25]=this.prefixes[0];a[26]=this.flags[0];a[27]=this.flags_changed[0];a[28]=this.last_op1[0];a[30]=this.last_op_size[0];a[37]=this.instruction_pointer[0];a[38]=this.previous_ip[0];a[39]=this.reg32;a[40]=this.sreg;a[41]=this.dreg;a[42]=this.reg_pdpte;this.store_current_tsc();a[43]=this.current_tsc;a[45]=this.devices.virtio_9p;a[46]=this.devices.apic;a[47]=this.devices.rtc;a[48]=this.devices.pci;a[49]=this.devices.dma;a[50]=this.devices.acpi;a[52]= +this.devices.vga;a[53]=this.devices.ps2;a[54]=this.devices.uart0;a[55]=this.devices.fdc;a[56]=this.devices.cdrom;a[57]=this.devices.hda;a[58]=this.devices.pit;a[59]=this.devices.net;a[60]=this.get_state_pic();a[61]=this.devices.sb16;a[62]=this.fw_value;a[63]=this.devices.ioapic;a[64]=this.tss_size_32[0];a[66]=this.reg_xmm32s;a[67]=this.fpu_st;a[68]=this.fpu_stack_empty[0];a[69]=this.fpu_stack_ptr[0];a[70]=this.fpu_control_word[0];a[71]=this.fpu_ip[0];a[72]=this.fpu_ip_selector[0];a[73]=this.fpu_dp[0]; +a[74]=this.fpu_dp_selector[0];a[75]=this.fpu_opcode[0];const {packed_memory:b,bitmap:c}=this.pack_memory();a[77]=b;a[78]=new Uint8Array(c.get_buffer());a[79]=this.devices.uart1;a[80]=this.devices.uart2;a[81]=this.devices.uart3;a[82]=this.devices.virtio_console;return a}; +E.prototype.get_state_pic=function(){const a=new Uint8Array(this.wasm_memory.buffer,this.get_pic_addr_master(),13),b=new Uint8Array(this.wasm_memory.buffer,this.get_pic_addr_slave(),13),c=[],d=[];c[0]=a[0];c[1]=a[1];c[2]=a[2];c[3]=a[3];c[4]=a[4];c[5]=d;c[6]=a[6];c[7]=a[7];c[8]=a[8];c[9]=a[9];c[10]=a[10];c[11]=a[11];c[12]=a[12];d[0]=b[0];d[1]=b[1];d[2]=b[2];d[3]=b[3];d[4]=b[4];d[5]=null;d[6]=b[6];d[7]=b[7];d[8]=b[8];d[9]=b[9];d[10]=b[10];d[11]=b[11];d[12]=b[12];return c}; +E.prototype.set_state=function(a){this.memory_size[0]=a[0];this.mem8.length!==this.memory_size[0]&&console.warn("Note: Memory size mismatch. we="+this.mem8.length+" state="+this.memory_size[0]);8===a[1].length?(this.segment_is_null.set(a[1]),this.segment_access_bytes.fill(242),this.segment_access_bytes[1]=250):16===a[1].length&&(this.segment_is_null.set(a[1].subarray(0,8)),this.segment_access_bytes.set(a[1].subarray(8,16)));this.segment_offsets.set(a[2]);this.segment_limits.set(a[3]);this.protected_mode[0]= +a[4];this.idtr_offset[0]=a[5];this.idtr_size[0]=a[6];this.gdtr_offset[0]=a[7];this.gdtr_size[0]=a[8];this.page_fault[0]=a[9];this.cr.set(a[10]);this.cpl[0]=a[11];this.is_32[0]=a[13];this.stack_size_32[0]=a[16];this.in_hlt[0]=a[17];this.last_virt_eip[0]=a[18];this.eip_phys[0]=a[19];this.sysenter_cs[0]=a[22];this.sysenter_eip[0]=a[23];this.sysenter_esp[0]=a[24];this.prefixes[0]=a[25];this.flags[0]=a[26];this.flags_changed[0]=a[27];this.last_op1[0]=a[28];this.last_op_size[0]=a[30];this.instruction_pointer[0]= +a[37];this.previous_ip[0]=a[38];this.reg32.set(a[39]);this.sreg.set(a[40]);this.dreg.set(a[41]);a[42]&&this.reg_pdpte.set(a[42]);this.set_tsc(a[43][0],a[43][1]);this.devices.virtio_9p&&this.devices.virtio_9p.set_state(a[45]);this.devices.apic&&this.devices.apic.set_state(a[46]);this.devices.rtc&&this.devices.rtc.set_state(a[47]);this.devices.pci&&this.devices.pci.set_state(a[48]);this.devices.dma&&this.devices.dma.set_state(a[49]);this.devices.acpi&&this.devices.acpi.set_state(a[50]);this.devices.vga&& +this.devices.vga.set_state(a[52]);this.devices.ps2&&this.devices.ps2.set_state(a[53]);this.devices.uart0&&this.devices.uart0.set_state(a[54]);this.devices.fdc&&this.devices.fdc.set_state(a[55]);this.devices.cdrom&&this.devices.cdrom.set_state(a[56]);this.devices.hda&&this.devices.hda.set_state(a[57]);this.devices.pit&&this.devices.pit.set_state(a[58]);this.devices.net&&this.devices.net.set_state(a[59]);this.set_state_pic(a[60]);this.devices.sb16&&this.devices.sb16.set_state(a[61]);this.devices.uart1&& +this.devices.uart1.set_state(a[79]);this.devices.uart2&&this.devices.uart2.set_state(a[80]);this.devices.uart3&&this.devices.uart3.set_state(a[81]);this.devices.virtio_console&&this.devices.virtio_console.set_state(a[82]);this.fw_value=a[62];this.devices.ioapic&&this.devices.ioapic.set_state(a[63]);this.tss_size_32[0]=a[64];this.reg_xmm32s.set(a[66]);this.fpu_st.set(a[67]);this.fpu_stack_empty[0]=a[68];this.fpu_stack_ptr[0]=a[69];this.fpu_control_word[0]=a[70];this.fpu_ip[0]=a[71];this.fpu_ip_selector[0]= +a[72];this.fpu_dp[0]=a[73];this.fpu_dp_selector[0]=a[74];this.fpu_opcode[0]=a[75];const b=new r.Bitmap(a[78].buffer);this.unpack_memory(b,a[77]);this.update_state_flags();this.full_clear_tlb();this.jit_clear_cache()}; +E.prototype.set_state_pic=function(a){const b=new Uint8Array(this.wasm_memory.buffer,this.get_pic_addr_master(),13),c=new Uint8Array(this.wasm_memory.buffer,this.get_pic_addr_slave(),13);b[0]=a[0];b[1]=a[1];b[2]=a[2];b[3]=a[3];b[4]=a[4];const d=a[5];b[6]=a[6];b[7]=a[7];b[8]=a[8];b[9]=a[9];b[10]=a[10];b[11]=a[11];b[12]=a[12];c[0]=d[0];c[1]=d[1];c[2]=d[2];c[3]=d[3];c[4]=d[4];c[6]=d[6];c[7]=d[7];c[8]=d[8];c[9]=d[9];c[10]=d[10];c[11]=d[11];c[12]=d[12]}; +E.prototype.pack_memory=function(){var a=this.mem8.length>>12,b=[];for(var c=0;c>2,d+4096>>2);let e=!0;for(let g=0;g>12;let d=0;for(let g=0;ga?a=1048576:0>(a|0)&&(a=Math.pow(2,31)-131072);a=(a-1|131071)+1|0;console.assert(0===this.memory_size[0],"Expected uninitialised memory");this.memory_size[0]=a;const b=this.allocate_memory(a);this.mem8=r.view(Uint8Array,this.wasm_memory,b,a);this.mem32s=r.view(Uint32Array,this.wasm_memory,b,a>>2)};F.exportProperty(E.prototype,"create_memory",E.prototype.create_memory); +E.prototype.init=function(a,b){this.create_memory("number"===typeof a.memory_size?a.memory_size:67108864);a.disable_jit&&this.set_jit_config(0,1);a.cpuid_level&&this.set_cpuid_level(a.cpuid_level);this.acpi_enabled[0]=+a.acpi;this.reset_cpu();var c=new B(this);this.io=c;this.bios.main=a.bios;this.bios.vga=a.vga_bios;this.load_bios();if(a.bzimage){const e=$a(this.mem8,a.bzimage,a.initrd,a.cmdline||"");e&&this.option_roms.push(e)}c.register_read(179,this,function(){return 0});var d=0;c.register_read(146, +this,function(){return d});c.register_write(146,this,function(e){d=e});c.register_read(1297,this,function(){return this.fw_pointer>8|l<<8&65280}function k(l){return l<<24|l<<8&16711680|l>>8&65280|l>>>24}J("bios config port, index="+A(e));this.fw_pointer=0;if(0===e)this.fw_value=g(1431127377);else if(1===e)this.fw_value= +g(0);else if(3===e)this.fw_value=g(this.memory_size[0]);else if(5===e)this.fw_value=g(1);else if(15===e)this.fw_value=g(1);else if(13===e)this.fw_value=new Uint8Array(16);else if(25===e){e=new Int32Array(4+64*this.option_roms.length);const l=new Uint8Array(e.buffer);e[0]=k(this.option_roms.length);for(let m=0;m>2]=k(p.length);e[t+4>>2]=f(49152+m);for(let q=0;qe?this.fw_value=g(0):49152<=e&&e-49152a.byteLength){var d=new Int32Array(2048);(new Uint8Array(d.buffer)).set(new Uint8Array(a))}else d=new Int32Array(a,0,2048);for(var e=0;8192>e;e+=4){if(464367618===d[e>>2]){var g=d[e+4>>2];if(464367618+g+d[e+8>>2]|0)continue}else continue;J("Multiboot magic found, flags: "+A(g>>>0,8),2);var f=this;this.io.register_read(244,this,function(){return 0},function(){return 0},function(){var n=31860,p=0;if(c){p|=4;f.write32(31760,n);c+="\x00";var t= +(new TextEncoder).encode(c);f.write_blob(t,n);n+=t.length}if(g&2){p|=64;t=0;f.write32(31788,0);f.write32(31792,n);var q=0;var z=!1;for(let u=0;4294967296>u;u+=131072)z&&void 0!==f.memory_map_read8[u>>>17]?(f.write32(n,20),f.write32(n+4,q),f.write32(n+8,0),f.write32(n+12,u-q),f.write32(n+16,0),f.write32(n+20,1),n+=24,t+=24,z=!1):z||void 0!==f.memory_map_read8[u>>>17]||(q=u,z=!0);f.write32(31788,t)}f.write32(31744,p);t=p=0;if(g&65536){z=d[e+12>>2];p=d[e+16>>2];var w=d[e+20>>2];t=d[e+24>>2];q=d[e+28>> +2];A(z,8);A(p,8);A(w,8);A(t,8);A(q,8);z=new Uint8Array(a,e-(z-p),0===w?void 0:w-p);f.write_blob(z,p);p=q|0;t=Math.max(w,t)}else if(1179403647===d[0]){q=new DataView(a);let [u,I]=ab(q,bb);console.assert(52===I);console.assert(1179403647===u.magic,"Bad magic");console.assert(1===u.class,"Unimplemented: 64 bit elf");console.assert(1===u.data,"Unimplemented: big endian");console.assert(1===u.version0,"Bad version0");console.assert(2===u.type,"Unimplemented type");console.assert(1===u.version1,"Bad version1"); +console.assert(52===u.ehsize,"Bad header size");console.assert(32===u.phentsize,"Bad program header size");console.assert(40===u.shentsize,"Bad section header size");[p]=cb(new DataView(q.buffer,q.byteOffset+u.phoff,u.phentsize*u.phnum),db,u.phnum);cb(new DataView(q.buffer,q.byteOffset+u.shoff,u.shentsize*u.shnum),hb,u.shnum);q=u;z=p;p=q.entry;for(w of z)0!==w.type&&(1===w.type?w.paddr+w.memszp&&(p=p-w.vaddr+w.paddr)):A(w.paddr):2===w.type||3===w.type||4===w.type||6===w.type||7===w.type||1685382480===w.type||1685382481===w.type||1685382482===w.type||1685382483===w.type||A(w.type))}b&&(f.write32(31764,1),f.write32(31768,n),w=t,0!==(w&4095)&&(w=(w&-4096)+4096),t=w+b.byteLength,f.write32(n,w),f.write32(n+4,t),f.write32(n+8,0),f.write32(n+12,0),f.write_blob(new Uint8Array(b),w));f.reg32[3]=31744;f.cr[0]=1;f.protected_mode[0]=1;f.flags[0]= +2;f.is_32[0]=1;f.stack_size_32[0]=1;for(n=0;6>n;n++)f.segment_is_null[n]=0,f.segment_offsets[n]=0,f.segment_limits[n]=4294967295,f.sreg[n]=45058;f.instruction_pointer[0]=f.get_seg_cs()+p|0;f.update_state_flags();f.debug.dump_state();f.debug.dump_regs();return 732803074});this.io.register_write_consecutive(244,this,function(n){console.log("Test exited with code "+A(n,2));throw"HALT";},function(){},function(){},function(){});for(let n=0;15>=n;n++){function p(t){A(n);A(t,2);t?this.device_raise_irq(n): +this.device_lower_irq(n)}this.io.register_write(8192+n,this,p,p,p)}const l=new Uint8Array(512);(new Uint16Array(l.buffer))[0]=43605;l[2]=1;var k=3;l[k++]=102;l[k++]=229;l[k++]=244;let m=l[k]=0;for(let n=0;n>4&240);a.cmos_write(61,c&255);a.cmos_write(21,128);a.cmos_write(22,2);c=0;1048576<=this.memory_size[0]&&(c=this.memory_size[0]-1048576>>10,c=Math.min(c,65535));a.cmos_write(23,c&255);a.cmos_write(24,c>>8&255);a.cmos_write(48,c&255);a.cmos_write(49,c>>8&255);c=0;16777216<=this.memory_size[0]&&(c=this.memory_size[0]-16777216>>16,c=Math.min(c,65535));a.cmos_write(52,c&255);a.cmos_write(53,c>>8&255);a.cmos_write(91,0);a.cmos_write(92, +0);a.cmos_write(93,0);a.cmos_write(20,47);a.cmos_write(95,0);b.fastboot&&a.cmos_write(63,1)}; +E.prototype.load_bios=function(){var a=this.bios.main,b=this.bios.vga;if(a){var c=new Uint8Array(a);this.write_blob(c,1048576-a.byteLength);if(b){var d=new Uint8Array(b);this.write_blob(d,786432);this.io.mmap_register(4272947200,1048576,function(e){e=e-4272947200|0;return e>>0,e>>>0);WebAssembly.instantiate(g,{e:this.jit_imports}).then(f=>{this.wm.wasm_table.set(a+1024,f.instance.exports.f);this.codegen_finalize_finished(a,b,c);this.test_hook_did_finalize_wasm&&this.test_hook_did_finalize_wasm(g)})};E.prototype.log_uncompiled_code=function(){};E.prototype.dump_function_code=function(){}; +E.prototype.run_hardware_timers=function(a,b){const c=this.devices.pit.timer(b,!1),d=this.devices.rtc.timer(b,!1);let e=100,g=100;a&&(e=this.devices.acpi.timer(b),g=this.devices.apic.timer(b));return Math.min(c,d,e,g)};E.prototype.device_raise_irq=function(a){this.pic_set_irq(a);this.devices.ioapic&&this.devices.ioapic.set_irq(a)};E.prototype.device_lower_irq=function(a){this.pic_clear_irq(a);this.devices.ioapic&&this.devices.ioapic.clear_irq(a)}; +"undefined"!==typeof window?window.CPU=E:"undefined"!==typeof module&&"undefined"!==typeof module.exports?module.exports.CPU=E:"function"===typeof importScripts&&(self.CPU=E);E.prototype.debug_init=function(){var a=this,b={};this.debug=b;b.init=function(){};b.get_regs_short=function(){};b.dump_regs=function(){};b.get_state=function(){};b.dump_state=function(){};b.dump_stack=function(){};b.dump_page_structures=function(){if(a.cr[4]&32)for(var g=0;4>g;g++)a.read32s(a.cr[3]+8*g)};b.dump_gdt_ldt=function(){};b.dump_idt=function(){};b.get_memory_dump=function(){};b.memory_hex_dump=function(){};b.used_memory_dump=function(){};b.debug_interrupt=function(){};let c,d;b.dump_code= +function(g,f,k){if(!d){if(void 0===c&&(c="function"===typeof require?require("./capstone-x86.min.js"):window.cs,void 0===c))return;d=[new c.Capstone(c.ARCH_X86,c.MODE_16),new c.Capstone(c.ARCH_X86,c.MODE_32)]}try{d[g].disasm(f,k).forEach(function(l){J(A(l.address>>>0)+": "+r.pads(l.bytes.map(m=>A(m,2).slice(-2)).join(" "),20)+" "+l.mnemonic+" "+l.op_str)})}catch(l){J("Could not disassemble: "+Array.from(f).map(m=>A(m,2)).join(" "))}};let e;b.dump_wasm=function(g){if(void 0===e&&(e="function"===typeof require? +require("./libwabt.js"):new window.WabtModule,void 0===e))return;g=g.slice();try{var f=e.readWasm(g,{readDebugNames:!1});f.generateNames();f.applyNames();f.toText({foldExprs:!0,inlineExport:!0})}catch(m){var k=new Blob([g]),l=document.createElement("a");l.download="failed.wasm";l.href=window.URL.createObjectURL(k);l.dataset.downloadurl=["application/octet-stream",l.download,l.href].join(":");l.click();window.URL.revokeObjectURL(l.src);console.log(m.toString())}finally{f&&f.destroy()}}};let ib=DataView.prototype,jb={size:1,get:ib.getUint8,set:ib.setUint8},kb={size:2,get:ib.getUint16,set:ib.setUint16},X={size:4,get:ib.getUint32,set:ib.setUint32},bb=lb([{magic:X},{class:jb},{data:jb},{version0:jb},{osabi:jb},{abiversion:jb},{pad0:function(a){return{size:a,get:()=>-1}}(7)},{type:kb},{machine:kb},{version1:X},{entry:X},{phoff:X},{shoff:X},{flags:X},{ehsize:kb},{phentsize:kb},{phnum:kb},{shentsize:kb},{shnum:kb},{shstrndx:kb}]);console.assert(52===bb.reduce((a,b)=>a+b.size,0)); +let db=lb([{type:X},{offset:X},{vaddr:X},{paddr:X},{filesz:X},{memsz:X},{flags:X},{align:X}]);console.assert(32===db.reduce((a,b)=>a+b.size,0));let hb=lb([{name:X},{type:X},{flags:X},{addr:X},{offset:X},{size:X},{link:X},{info:X},{addralign:X},{entsize:X}]);console.assert(40===hb.reduce((a,b)=>a+b.size,0));function lb(a){return a.map(function(b){var c=Object.keys(b);console.assert(1===c.length);c=c[0];b=b[c];console.assert(0 keyCode not found: ",z,q)}};function nb(a,b){function c(u){if(!w.enabled||!w.emu_enabled)return!1;var I=b||document.body,U;if(!(U=document.pointerLockElement))a:{for(u=u.target;u.parentNode;){if(u===I){U=!0;break a}u=u.parentNode}U=!1}return U}function d(u){c(u)&&(u=u.changedTouches)&&u.length&&(u=u[u.length-1],q=u.clientX,z=u.clientY)}function e(){if(n||t||p)w.bus.send("mouse-click",[!1,!1,!1]),n=t=p=!1}function g(u){if(w.bus&&c(u)&&w.is_running){var I=0,U=0,ca=u.changedTouches;ca?ca.length&&(ca=ca[ca.length-1],I=ca.clientX- +q,U=ca.clientY-z,q=ca.clientX,z=ca.clientY,u.preventDefault()):"number"===typeof u.movementX?(I=u.movementX,U=u.movementY):"number"===typeof u.webkitMovementX?(I=u.webkitMovementX,U=u.webkitMovementY):"number"===typeof u.mozMovementX?(I=u.mozMovementX,U=u.mozMovementY):(I=u.clientX-q,U=u.clientY-z,q=u.clientX,z=u.clientY);w.bus.send("mouse-delta",[.15*I,-(.15*U)]);b&&w.bus.send("mouse-absolute",[u.pageX-b.offsetLeft,u.pageY-b.offsetTop,b.offsetWidth,b.offsetHeight])}}function f(u){c(u)&&l(u,!0)}function k(u){c(u)&& +l(u,!1)}function l(u,I){w.bus&&(1===u.which?n=I:2===u.which?t=I:3===u.which&&(p=I),w.bus.send("mouse-click",[n,t,p]),u.preventDefault())}function m(u){if(c(u)){var I=u.wheelDelta||-u.detail;0>I?I=-1:0{switch(n.data.type){case "queue":m.queue_push(n.data.value);break;case "sampling-rate":m.source_samples_per_destination=n.data.value/sampleRate}};return m}var l=[new Float32Array(256),new Float32Array(256)];Reflect.setPrototypeOf(k.prototype,AudioWorkletProcessor.prototype);Reflect.setPrototypeOf(k,AudioWorkletProcessor);k.prototype.process=k.prototype.process=function(m,n){for(m=0;mm?(m+=this.source_buffer_previous[0].length,this.source_buffer_previous[n][m]):this.source_buffer_current[n][m]};k.prototype.ensure_enough_data=function(m){var n=this.source_buffer_current[0].length;n-this.source_block_start +this.queued_samples&&this.queue_length&&this.dbg_log("Not enough samples - should not happen during midway of playback");this.source_buffer_previous=this.source_buffer_current;this.source_buffer_current=this.queue_shift();var m=this.source_buffer_current[0].length;if(256>m){for(var n=this.queue_start,p=0;256>m&&pthis.queued_samples/this.source_samples_per_destination&&this.port.postMessage({type:"pump"})};k.prototype.queue_push=function(m){this.queue_length{URL.revokeObjectURL(g);this.node_processor=new AudioWorkletNode(this.audio_context,"dac-processor",{numberOfInputs:0,numberOfOutputs:1,outputChannelCount:[2],parameterData:{},processorOptions:{}});this.node_processor.port.postMessage({type:"sampling-rate",value:this.sampling_rate});this.node_processor.port.onmessage=f=>{switch(f.data.type){case "pump":this.pump()}};this.node_processor.connect(this.node_output)}); +this.mixer_connection=c.add_source(this.node_output,2);this.mixer_connection.set_gain_hidden(3);a.register("dac-send-data",function(f){this.queue(f)},this);a.register("dac-enable",function(){this.enabled=!0},this);a.register("dac-disable",function(){this.enabled=!1},this);a.register("dac-tell-sampling-rate",function(f){this.sampling_rate=f;this.node_processor&&this.node_processor.port.postMessage({type:"sampling-rate",value:f})},this)} +pb.prototype.queue=function(a){this.node_processor&&this.node_processor.port.postMessage({type:"queue",value:a},[a[0].buffer,a[1].buffer])};pb.prototype.pump=function(){this.enabled&&this.bus.send("dac-request-data")}; +function qb(a,b,c){this.bus=a;this.audio_context=b;this.enabled=!1;this.sampling_rate=22050;this.buffered_time=0;this.rate_ratio=1;this.node_lowpass=this.audio_context.createBiquadFilter();this.node_lowpass.type="lowpass";this.node_output=this.node_lowpass;this.mixer_connection=c.add_source(this.node_output,2);this.mixer_connection.set_gain_hidden(3);a.register("dac-send-data",function(d){this.queue(d)},this);a.register("dac-enable",function(){this.enabled=!0;this.pump()},this);a.register("dac-disable", +function(){this.enabled=!1},this);a.register("dac-tell-sampling-rate",function(d){this.sampling_rate=d;this.rate_ratio=Math.ceil(8E3/d);this.node_lowpass.frequency.setValueAtTime(d/2,this.audio_context.currentTime)},this)} +qb.prototype.queue=function(a){var b=a[0].length,c=b/this.sampling_rate;if(1this.pump(),1E3*b);a.start(this.buffered_time);this.buffered_time+=c;setTimeout(()=>this.pump(),0)};qb.prototype.pump=function(){this.enabled&&(.2l?void 0===this.update_timer&&(this.update_timer=setTimeout(()=>{this.update_timer=void 0;this.last_update=Date.now();this.render()},16-l)):(void 0!==this.update_timer&&(clearTimeout(this.update_timer),this.update_timer=void 0),this.last_update=k,this.render())};this.render=function(){a.value=this.text;this.text_new_line&&(this.text_new_line= +!1,a.scrollTop=1E9)};this.send_char=function(k){f.bus&&f.bus.send("serial0-input",k)}} +function vb(a,b){this.element=a;if(window.Terminal){var c=this.term=new window.Terminal({logLevel:"off"});c.write("This is the serial console. Whatever you type or paste here will be sent to COM1");var d=c.onData(function(e){for(let g=0;ga)){this.last_connect_attempt=Date.now();try{this.socket=new WebSocket(this.url)}catch(b){console.error(b);return}this.socket.binaryType="arraybuffer";this.socket.onopen=this.handle_open.bind(this);this.socket.onmessage=this.handle_message.bind(this);this.socket.onclose=this.handle_close.bind(this); +this.socket.onerror=this.handle_error.bind(this)}}};wb.prototype.send=function(a){this.socket&&1===this.socket.readyState?this.socket.send(a):(this.send_queue.push(a),this.send_queue.length>2*this.send_queue_limit&&(this.send_queue=this.send_queue.slice(-this.send_queue_limit)),this.connect())};wb.prototype.change_proxy=function(a){this.url=a;this.socket&&(this.socket.onclose=function(){},this.socket.onerror=function(){},this.socket.close(),this.socket=void 0)};function Y(a){this.cpu_is_running=!1;this.cpu_exception_hook=function(){};var b=Ya.create();this.bus=b[0];this.emulator_bus=b[1];var c,d;const e=new WebAssembly.Table({element:"anyfunc",initial:1924});b={cpu_exception_hook:f=>this.cpu_exception_hook(f),run_hardware_timers:function(f,k){return c.run_hardware_timers(f,k)},cpu_event_halt:()=>{this.emulator_bus.send("cpu-event-halt")},abort:function(){},microtick:D.microtick,get_rand_int:function(){return r.get_rand_int()},apic_acknowledge_irq:function(){return c.devices.apic.acknowledge_irq()}, +stop_idling:function(){return c.stop_idling()},io_port_read8:function(f){return c.io.port_read8(f)},io_port_read16:function(f){return c.io.port_read16(f)},io_port_read32:function(f){return c.io.port_read32(f)},io_port_write8:function(f,k){c.io.port_write8(f,k)},io_port_write16:function(f,k){c.io.port_write16(f,k)},io_port_write32:function(f,k){c.io.port_write32(f,k)},mmap_read8:function(f){return c.mmap_read8(f)},mmap_read16:function(f){return c.mmap_read16(f)},mmap_read32:function(f){return c.mmap_read32(f)}, +mmap_write8:function(f,k){c.mmap_write8(f,k)},mmap_write16:function(f,k){c.mmap_write16(f,k)},mmap_write32:function(f,k){c.mmap_write32(f,k)},mmap_write64:function(f,k,l){c.mmap_write64(f,k,l)},mmap_write128:function(f,k,l,m,n){c.mmap_write128(f,k,l,m,n)},log_from_wasm:function(f,k){r.read_sized_string_from_mem(d,f,k)},console_log_from_wasm:function(f,k){f=r.read_sized_string_from_mem(d,f,k);console.error(f)},dbg_trace_from_wasm:function(){},codegen_finalize:(f,k,l,m,n)=>{c.codegen_finalize(f,k,l, +m,n)},jit_clear_func:f=>c.jit_clear_func(f),jit_clear_all_funcs:()=>c.jit_clear_all_funcs(),__indirect_function_table:e};let g=a.wasm_fn;g||(g=f=>new Promise(k=>{let l="v86.wasm",m="v86-fallback.wasm";if(a.wasm_path){l=a.wasm_path;const n=l.lastIndexOf("/");m=(-1===n?"":l.substr(0,n))+"/"+m}else"undefined"===typeof window&&"string"===typeof __dirname?(l=__dirname+"/"+l,m=__dirname+"/"+m):(l="build/"+l,m="build/"+m);r.load_file(l,{done:async n=>{try{const {instance:p}=await WebAssembly.instantiate(n, +f);this.wasm_source=n;k(p.exports)}catch(p){r.load_file(m,{done:async t=>{const {instance:q}=await WebAssembly.instantiate(t,f);this.wasm_source=t;k(q.exports)}})}},progress:n=>{this.emulator_bus.send("download-progress",{file_index:0,file_count:1,file_name:l,lengthComputable:n.lengthComputable,total:n.total,loaded:n.loaded})}})}));g({env:b}).then(f=>{d=f.memory;f.rust_init();f=this.v86=new D(this.emulator_bus,{exports:f,wasm_table:e});c=f.cpu;this.continue_init(f,a)});this.zstd_worker=null;this.zstd_worker_request_id= +0} +Y.prototype.continue_init=async function(a,b){function c(t,q){switch(t){case "hda":e.hda=this.disk_images.hda=q;break;case "hdb":e.hdb=this.disk_images.hdb=q;break;case "cdrom":e.cdrom=this.disk_images.cdrom=q;break;case "fda":e.fda=this.disk_images.fda=q;break;case "fdb":e.fdb=this.disk_images.fdb=q;break;case "multiboot":e.multiboot=this.disk_images.multiboot=q.buffer;break;case "bzimage":e.bzimage=this.disk_images.bzimage=q.buffer;break;case "initrd":e.initrd=this.disk_images.initrd=q.buffer;break; +case "bios":e.bios=q.buffer;break;case "vga_bios":e.vga_bios=q.buffer;break;case "initial_state":e.initial_state=q.buffer;break;case "fs9p_json":e.fs9p_json=q}}async function d(){if(e.fs9p&&e.fs9p_json&&!e.initial_state&&(e.fs9p.load_from_json(e.fs9p_json),b.bzimage_initrd_from_filesystem)){const {bzimage_path:t,initrd_path:q}=this.get_bzimage_initrd_from_filesystem(e.fs9p),[z,w]=await Promise.all([e.fs9p.read_file(q),e.fs9p.read_file(t)]);c.call(this,"initrd",new r.SyncBuffer(z.buffer));c.call(this, +"bzimage",new r.SyncBuffer(w.buffer))}this.serial_adapter&&this.serial_adapter.show&&this.serial_adapter.show();this.bus.send("cpu-init",e);e.initial_state&&(a.restore_state(e.initial_state),e.initial_state=void 0);b.autostart&&this.bus.send("cpu-run");this.emulator_bus.send("emulator-loaded")}this.bus.register("emulator-stopped",function(){this.cpu_is_running=!1},this);this.bus.register("emulator-started",function(){this.cpu_is_running=!0},this);var e={};this.disk_images={fda:void 0,fdb:void 0,hda:void 0, +hdb:void 0,cdrom:void 0};var g=b.boot_order?b.boot_order:b.fda?801:b.hda?786:291;e.acpi=b.acpi;e.disable_jit=b.disable_jit;e.load_devices=!0;e.log_level=b.log_level;e.memory_size=b.memory_size||67108864;e.vga_memory_size=b.vga_memory_size||8388608;e.boot_order=g;e.fastboot=b.fastboot||!1;e.fda=void 0;e.fdb=void 0;e.uart1=b.uart1;e.uart2=b.uart2;e.uart3=b.uart3;e.cmdline=b.cmdline;e.preserve_mac_from_state_image=b.preserve_mac_from_state_image;e.mac_address_translation=b.mac_address_translation;e.cpuid_level= +b.cpuid_level;e.virtio_console=b.virtio_console;b.network_adapter?this.network_adapter=b.network_adapter(this.bus):b.network_relay_url&&(this.network_adapter=new wb(b.network_relay_url,this.bus));e.enable_ne2k=!0;b.disable_keyboard||(this.keyboard_adapter=new mb(this.bus));b.disable_mouse||(this.mouse_adapter=new nb(this.bus,b.screen_container));b.screen_container?this.screen_adapter=new ba(b.screen_container,this.bus):b.screen_dummy&&(this.screen_adapter=new xb(this.bus));b.serial_container&&(this.serial_adapter= +new ub(b.serial_container,this.bus));b.serial_container_xtermjs&&(this.serial_adapter=new vb(b.serial_container_xtermjs,this.bus));b.disable_speaker||(this.speaker_adapter=new ob(this.bus));var f=[];g=(t,q)=>{if(q)if(q.get&&q.set&&q.load)f.push({name:t,loadable:q});else{if("bios"===t||"vga_bios"===t||"initial_state"===t||"multiboot"===t||"bzimage"===t||"initrd"===t)q.async=!1;q.url&&!q.async?f.push({name:t,url:q.url,size:q.size}):f.push({name:t,loadable:r.buffer_from_object(q,this.zstd_decompress_worker.bind(this))})}}; +b.state&&console.warn("Warning: Unknown option 'state'. Did you mean 'initial_state'?");g("bios",b.bios);g("vga_bios",b.vga_bios);g("cdrom",b.cdrom);g("hda",b.hda);g("hdb",b.hdb);g("fda",b.fda);g("fdb",b.fdb);g("initial_state",b.initial_state);g("multiboot",b.multiboot);g("bzimage",b.bzimage);g("initrd",b.initrd);if(b.filesystem){g=b.filesystem.basefs;var k=b.filesystem.baseurl;let t=new yb;k&&(t=new zb(t,k));e.fs9p=this.fs9p=new Z(t);if(g){if("object"===typeof g){var l=g.size;g=g.url}f.push({name:"fs9p_json", +url:g,size:l,as_json:!0})}}var m=this,n=f.length,p=function(t){if(t===n)setTimeout(d.bind(this),0);else{var q=f[t];q.loadable?(q.loadable.onload=function(){c.call(this,q.name,q.loadable);p(t+1)}.bind(this),q.loadable.load()):r.load_file(q.url,{done:function(z){q.url.endsWith(".zst")&&"initial_state"!==q.name&&(z=this.zstd_decompress(q.size,new Uint8Array(z)));c.call(this,q.name,q.as_json?z:new r.SyncBuffer(z));p(t+1)}.bind(this),progress:function(z){200===z.target.status?m.emulator_bus.send("download-progress", +{file_index:t,file_count:n,file_name:q.url,lengthComputable:z.lengthComputable,total:z.total||q.size,loaded:z.loaded}):m.emulator_bus.send("download-error",{file_index:t,file_count:n,file_name:q.url,request:z.target})},as_json:q.as_json})}}.bind(this);p(0)}; +Y.prototype.zstd_decompress=function(a,b){const c=this.v86.cpu;this.zstd_context=c.zstd_create_ctx(b.length);(new Uint8Array(c.wasm_memory.buffer)).set(b,c.zstd_get_src_ptr(this.zstd_context));b=c.zstd_read(this.zstd_context,a);const d=c.wasm_memory.buffer.slice(b,b+a);c.zstd_read_free(b,a);c.zstd_free_ctx(this.zstd_context);this.zstd_context=null;return d}; +Y.prototype.zstd_decompress_worker=async function(a,b){if(!this.zstd_worker){const c=URL.createObjectURL(new Blob(["("+function(){let d;globalThis.onmessage=function(e){if(d){var {src:g,decompressed_size:f,id:k}=e.data;e=d.exports;var l=e.zstd_create_ctx(g.length);(new Uint8Array(e.memory.buffer)).set(g,e.zstd_get_src_ptr(l));var m=e.zstd_read(l,f),n=e.memory.buffer.slice(m,m+f);e.zstd_read_free(m,f);e.zstd_free_ctx(l);postMessage({result:n,id:k},[n])}else l=Object.fromEntries("cpu_exception_hook run_hardware_timers cpu_event_halt microtick get_rand_int apic_acknowledge_irq stop_idling io_port_read8 io_port_read16 io_port_read32 io_port_write8 io_port_write16 io_port_write32 mmap_read8 mmap_read16 mmap_read32 mmap_write8 mmap_write16 mmap_write32 mmap_write64 mmap_write128 codegen_finalize jit_clear_func jit_clear_all_funcs".split(" ").map(p=> +[p,()=>console.error("zstd worker unexpectedly called "+p)])),l.__indirect_function_table=new WebAssembly.Table({element:"anyfunc",initial:1024}),l.abort=()=>{throw Error("zstd worker aborted");},l.log_from_wasm=l.console_log_from_wasm=(p,t)=>{console.log(String.fromCharCode(...(new Uint8Array(d.exports.memory.buffer,p,t))))},l.dbg_trace_from_wasm=()=>console.trace(),d=new WebAssembly.Instance(new WebAssembly.Module(e.data),{env:l})}}.toString()+")()"],{type:"text/javascript"}));this.zstd_worker= +new Worker(c);URL.revokeObjectURL(c);this.zstd_worker.postMessage(this.wasm_source,[this.wasm_source])}return new Promise(c=>{const d=this.zstd_worker_request_id++,e=async g=>{g.data.id===d&&(this.zstd_worker.removeEventListener("message",e),c(g.data.result))};this.zstd_worker.addEventListener("message",e);this.zstd_worker.postMessage({src:b,decompressed_size:a,id:d},[b.buffer])})}; +Y.prototype.get_bzimage_initrd_from_filesystem=function(a){const b=(a.read_dir("/")||[]).map(e=>"/"+e);a=(a.read_dir("/boot/")||[]).map(e=>"/boot/"+e);let c,d;for(let e of[].concat(b,a)){const g=/old/i.test(e)||/fallback/i.test(e),f=/vmlinuz/i.test(e)||/bzimage/i.test(e),k=/initrd/i.test(e)||/initramfs/i.test(e);!f||d&&g||(d=e);!k||c&&g||(c=e)}c&&d||(console.log("Failed to find bzimage or initrd in filesystem. Files:"),console.log(b.join(" ")),console.log(a.join(" ")));return{initrd_path:c,bzimage_path:d}}; +Y.prototype.run=async function(){this.bus.send("cpu-run")};F.exportProperty(Y.prototype,"run",Y.prototype.run);Y.prototype.stop=async function(){this.cpu_is_running&&await new Promise(a=>{const b=()=>{this.remove_listener("emulator-stopped",b);a()};this.add_listener("emulator-stopped",b);this.bus.send("cpu-stop")})};F.exportProperty(Y.prototype,"stop",Y.prototype.stop); +Y.prototype.destroy=async function(){await this.stop();this.v86.destroy();this.keyboard_adapter&&this.keyboard_adapter.destroy();this.network_adapter&&this.network_adapter.destroy();this.mouse_adapter&&this.mouse_adapter.destroy();this.screen_adapter&&this.screen_adapter.destroy();this.serial_adapter&&this.serial_adapter.destroy();this.speaker_adapter&&this.speaker_adapter.destroy()};F.exportProperty(Y.prototype,"destroy",Y.prototype.destroy);Y.prototype.restart=function(){this.bus.send("cpu-restart")}; +F.exportProperty(Y.prototype,"restart",Y.prototype.restart);Y.prototype.add_listener=function(a,b){this.bus.register(a,b,this)};F.exportProperty(Y.prototype,"add_listener",Y.prototype.add_listener);Y.prototype.remove_listener=function(a,b){this.bus.unregister(a,b)};F.exportProperty(Y.prototype,"remove_listener",Y.prototype.remove_listener);Y.prototype.restore_state=async function(a){this.v86.restore_state(a)};F.exportProperty(Y.prototype,"restore_state",Y.prototype.restore_state); +Y.prototype.save_state=async function(){return this.v86.save_state()};F.exportProperty(Y.prototype,"save_state",Y.prototype.save_state);Y.prototype.get_instruction_counter=function(){return this.v86?this.v86.cpu.instruction_counter[0]>>>0:0};F.exportProperty(Y.prototype,"get_instruction_counter",Y.prototype.get_instruction_counter);Y.prototype.is_running=function(){return this.cpu_is_running};F.exportProperty(Y.prototype,"is_running",Y.prototype.is_running); +Y.prototype.set_fda=async function(a){if(a.url&&!a.async)r.load_file(a.url,{done:b=>{this.v86.cpu.devices.fdc.set_fda(new r.SyncBuffer(b))}});else{const b=r.buffer_from_object(a,this.zstd_decompress_worker.bind(this));b.onload=()=>{this.v86.cpu.devices.fdc.set_fda(b)};await b.load()}};F.exportProperty(Y.prototype,"set_fda",Y.prototype.set_fda);Y.prototype.eject_fda=function(){this.v86.cpu.devices.fdc.eject_fda()};F.exportProperty(Y.prototype,"eject_fda",Y.prototype.eject_fda); +Y.prototype.keyboard_send_scancodes=function(a){for(var b=0;b{const k=this.fs9p.Mount(a,g);d&&(-2===k?d(new Ab):-17===k?d(new Eb):0>k?d(Error("Failed to mount. Error number: "+-k)):d(null))};b?g.load_from_json(c,()=>f()):f()};F.exportProperty(Y.prototype,"mount_fs",Y.prototype.mount_fs); +Y.prototype.create_file=async function(a,b){var c=this.fs9p;if(c){var d=a.split("/");d=d[d.length-1];a=c.SearchPath(a).parentid;if(""!==d&&-1!==a)await c.CreateBinaryFile(d,a,b);else return Promise.reject(new Ab)}};F.exportProperty(Y.prototype,"create_file",Y.prototype.create_file);Y.prototype.read_file=async function(a){var b=this.fs9p;if(b)return(a=await b.read_file(a))?a:Promise.reject(new Ab)};F.exportProperty(Y.prototype,"read_file",Y.prototype.read_file); +Y.prototype.automatically=function(a){const b=c=>{const d=c[0];if(d){var e=c.slice(1);if(d.sleep)setTimeout(()=>b(e),1E3*d.sleep);else if(d.vga_text){const g=this.screen_adapter.get_text_screen();for(let f of g)if(f.includes(d.vga_text)){b(e);return}setTimeout(()=>b(c),1E3)}else d.keyboard_send?(d.keyboard_send instanceof Array?this.keyboard_send_scancodes(d.keyboard_send):this.keyboard_send_text(d.keyboard_send),b(e)):d.call&&(d.call(),b(e))}};b(a)}; +Y.prototype.read_memory=function(a,b){return this.v86.cpu.read_blob(a,b)};Y.prototype.write_memory=function(a,b){this.v86.cpu.write_blob(a,b)};Y.prototype.set_serial_container_xtermjs=function(a){this.serial_adapter&&this.serial_adapter.destroy&&this.serial_adapter.destroy();this.serial_adapter=new vb(a,this.bus);this.serial_adapter.show()};function Eb(a){this.message=a||"File already exists"}Eb.prototype=Error.prototype;function Ab(a){this.message=a||"File not found"}Ab.prototype=Error.prototype; +"undefined"!==typeof window?(window.V86Starter=Y,window.V86=Y):"undefined"!==typeof module&&"undefined"!==typeof module.exports?(module.exports.V86Starter=Y,module.exports.V86=Y):"function"===typeof importScripts&&(self.V86Starter=Y,self.V86=Y);var Fb={Connector:function(a){this.listeners={};this.pair=a;a.addEventListener("message",function(b){b=b.data;for(var c=this.listeners[b[0]],d=0;d>20)+"m\n";b=b+"Config:\nJIT_DISABLED="+(a.wm.exports.get_jit_config(0)+"\n");b+="MAX_PAGES="+a.wm.exports.get_jit_config(1)+"\n";b+="JIT_USE_LOOP_SAFETY="+!!a.wm.exports.get_jit_config(2)+"\n";return b+="MAX_EXTRA_BASIC_BLOCKS="+a.wm.exports.get_jit_config(3)+"\n"},print_instruction_counts:function(a){return[Gb.print_instruction_counts_offset(a, +!1,!1,!1,!1),Gb.print_instruction_counts_offset(a,!0,!1,!1,!1),Gb.print_instruction_counts_offset(a,!1,!0,!1,!1),Gb.print_instruction_counts_offset(a,!1,!1,!0,!1),Gb.print_instruction_counts_offset(a,!1,!1,!1,!0)].join("\n\n")},print_instruction_counts_offset:function(a,b,c,d,e){let g="";var f=[],k=b?"compiled":c?"jit exit":d?"unguarded register":e?"wasm size":"executed";for(let n=0;256>n;n++)for(let p=0;8>p;p++)for(let t of[!1,!0]){var l=a.wm.exports.get_opstats_buffer(b,c,d,e,n,!1,t,p);f.push({opcode:n, +count:l,is_mem:t,fixed_g:p});l=a.wm.exports.get_opstats_buffer(b,c,d,e,n,!0,t,p);f.push({opcode:3840|n,count:l,is_mem:t,fixed_g:p})}a=0;b=new Set([38,46,54,62,100,101,102,103,240,242,243]);for(let {count:n,opcode:p}of f)b.has(p)||(a+=n);if(0===a)return"";c=new Uint32Array(256);b=new Uint32Array(256);for(let {opcode:n,count:p}of f)3840==(n&65280)?b[n&255]+=p:c[n&255]+=p;g=g+"------------------\nTotal: "+(a+"\n");const m=1E7Math.round(n/m)));d=String(d).length; +g+=`Instruction counts ${k} (in ${m}):\n`;for(e=0;256>e;e++)g+=e.toString(16).padStart(2,"0")+":"+r.pads(Math.round(c[e]/m),d),g=15==e%16?g+"\n":g+" ";g=g+"\n"+`Instruction counts ${k} (0f, in ${m}):\n`;for(k=0;256>k;k++)g+=(k&255).toString(16).padStart(2,"0")+":"+r.pads(Math.round(b[k]/m),d),g=15==k%16?g+"\n":g+" ";g+="\n";f=f.filter(({count:n})=>n).sort(({count:n},{count:p})=>p-n);for(let {opcode:n,is_mem:p,fixed_g:t,count:q}of f.slice(0,200))f=n.toString(16)+"_"+t+(p?"_m":"_r"),g+=f+":"+(q/a*100).toFixed(2)+ +" ";return g+"\n"}};"undefined"!==typeof module&&"undefined"!==typeof module.exports&&(module.exports.print_stats=Gb);function yb(){this.filedata=new Map}yb.prototype.read=async function(a,b,c){return(a=this.filedata.get(a))?a.subarray(b,b+c):null};yb.prototype.cache=async function(a,b){this.filedata.set(a,b)};yb.prototype.uncache=function(a){this.filedata.delete(a)};function zb(a,b){b.endsWith("/")||(b+="/");this.storage=a;this.baseurl=b}zb.prototype.load_from_server=function(a){return new Promise(b=>{r.load_file(this.baseurl+a,{done:async c=>{c=new Uint8Array(c);await this.cache(a,c);b(c)}})})}; +zb.prototype.read=async function(a,b,c){const d=await this.storage.read(a,b,c);return d?d:(await this.load_from_server(a)).subarray(b,b+c)};zb.prototype.cache=async function(a,b){return await this.storage.cache(a,b)};zb.prototype.uncache=function(a){this.storage.uncache(a)}; +"undefined"!==typeof window?(window.MemoryFileStorage=yb,window.ServerFileStorageWrapper=zb):"undefined"!==typeof module&&"undefined"!==typeof module.exports?(module.exports.MemoryFileStorage=yb,module.exports.ServerFileStorageWrapper=zb):"function"===typeof importScripts&&(self.MemoryFileStorage=yb,self.ServerFileStorageWrapper=zb);var ia=32768,ha=16384,ja=4;function Z(a,b){this.inodes=[];this.events=[];this.storage=a;this.qidcounter=b||{last_qidnumber:0};this.inodedata={};this.total_size=274877906944;this.used_size=0;this.mounts=[];this.CreateDirectory("",-1)}Z.prototype.get_state=function(){let a=[];a[0]=this.inodes;a[1]=this.qidcounter.last_qidnumber;a[2]=[];for(const [b,c]of Object.entries(this.inodedata))0===(this.inodes[b].mode&ha)&&a[2].push([b,c]);a[3]=this.total_size;a[4]=this.used_size;return a=a.concat(this.mounts)}; +Z.prototype.set_state=function(a){this.inodes=a[0].map(b=>{const c=new Hb(0);c.set_state(b);return c});this.qidcounter.last_qidnumber=a[1];this.inodedata={};for(let [b,c]of a[2])c.buffer.byteLength!==c.byteLength&&(c=c.slice()),this.inodedata[b]=c;this.total_size=a[3];this.used_size=a[4];this.mounts=a.slice(5)};Z.prototype.AddEvent=function(a,b){var c=this.inodes[a];0==c.status||2==c.status?b():this.is_forwarder(c)?this.follow_fs(c).AddEvent(c.foreign_id,b):this.events.push({id:a,OnEvent:b})}; +Z.prototype.HandleEvent=function(a){var b=this.inodes[a];this.is_forwarder(b)&&this.follow_fs(b).HandleEvent(b.foreign_id);b=[];for(var c=0;c>8;this.qid.version=a[11];this.qid.path=a[12];this.nlinks=a[13]}; +Z.prototype.divert=function(a,b){const c=this.Search(a,b),d=this.inodes[c],e=new Hb(-1);this.IsDirectory(c);Object.assign(e,d);const g=this.inodes.length;this.inodes.push(e);e.fid=g;this.is_forwarder(d)&&this.mounts[d.mount_id].backtrack.set(d.foreign_id,g);this.should_be_linked(d)&&(this.unlink_from_dir(a,b),this.link_under_dir(a,g,b));if(this.IsDirectory(c)&&!this.is_forwarder(d))for(const [f,k]of e.direntries)"."!==f&&".."!==f&&this.IsDirectory(k)&&this.inodes[k].direntries.set("..",g);this.inodedata[g]= +this.inodedata[c];delete this.inodedata[c];d.direntries=new Map;d.nlinks=0;return g};Z.prototype.copy_inode=function(a,b){Object.assign(b,a,{fid:b.fid,direntries:b.direntries,nlinks:b.nlinks})};Z.prototype.CreateInode=function(){const a=Math.round(Date.now()/1E3),b=new Hb(++this.qidcounter.last_qidnumber);b.atime=b.ctime=b.mtime=a;return b}; +Z.prototype.CreateDirectory=function(a,b){var c=this.inodes[b];if(0<=b&&this.is_forwarder(c))return b=c.foreign_id,a=this.follow_fs(c).CreateDirectory(a,b),this.create_forwarder(c.mount_id,a);c=this.CreateInode();c.mode=511|ha;0<=b&&(c.uid=this.inodes[b].uid,c.gid=this.inodes[b].gid,c.mode=this.inodes[b].mode&511|ha);c.qid.type=ha>>8;this.PushInode(c,b,a);this.NotifyListeners(this.inodes.length-1,"newdir");return this.inodes.length-1}; +Z.prototype.CreateFile=function(a,b){var c=this.inodes[b];if(this.is_forwarder(c))return b=c.foreign_id,a=this.follow_fs(c).CreateFile(a,b),this.create_forwarder(c.mount_id,a);c=this.CreateInode();c.uid=this.inodes[b].uid;c.gid=this.inodes[b].gid;c.qid.type=ia>>8;c.mode=this.inodes[b].mode&438|ia;this.PushInode(c,b,a);this.NotifyListeners(this.inodes.length-1,"newfile");return this.inodes.length-1}; +Z.prototype.CreateNode=function(a,b,c,d){var e=this.inodes[b];if(this.is_forwarder(e))return b=e.foreign_id,a=this.follow_fs(e).CreateNode(a,b,c,d),this.create_forwarder(e.mount_id,a);e=this.CreateInode();e.major=c;e.minor=d;e.uid=this.inodes[b].uid;e.gid=this.inodes[b].gid;e.qid.type=192;e.mode=this.inodes[b].mode&438;this.PushInode(e,b,a);return this.inodes.length-1}; +Z.prototype.CreateSymlink=function(a,b,c){var d=this.inodes[b];if(this.is_forwarder(d))return b=d.foreign_id,a=this.follow_fs(d).CreateSymlink(a,b,c),this.create_forwarder(d.mount_id,a);d=this.CreateInode();d.uid=this.inodes[b].uid;d.gid=this.inodes[b].gid;d.qid.type=160;d.symlink=c;d.mode=40960;this.PushInode(d,b,a);return this.inodes.length-1}; +Z.prototype.CreateTextFile=async function(a,b,c){var d=this.inodes[b];if(this.is_forwarder(d))return b=d.foreign_id,c=await this.follow_fs(d).CreateTextFile(a,b,c),this.create_forwarder(d.mount_id,c);d=this.CreateFile(a,b);b=this.inodes[d];a=new Uint8Array(c.length);b.size=c.length;for(b=0;bf)return f}var k=this.inodes[e],l=this.inodes[a];f=this.inodes[c];if(this.is_forwarder(l)||this.is_forwarder(f))if(this.is_forwarder(l)&&l.mount_id===f.mount_id){if(a=await this.follow_fs(l).Rename(l.foreign_id,b,f.foreign_id,d),0>a)return a}else{if(this.is_a_root(e)||!this.IsDirectory(e)&&1f)return f;await this.DeleteData(l);a=this.Unlink(a,b);if(0>a)return a}else this.unlink_from_dir(a,b),this.link_under_dir(c,e,d),k.qid.version++;this.NotifyListeners(e,"rename",{oldpath:g});return 0}; +Z.prototype.Write=async function(a,b,c,d){this.NotifyListeners(a,"write");var e=this.inodes[a];if(this.is_forwarder(e))a=e.foreign_id,await this.follow_fs(e).Write(a,b,c,d);else{var g=await this.get_buffer(a);!g||g.lengthb.nlinks&&y.Debug("Error in filesystem: negative nlinks="+b.nlinks+" at id ="+a);if(this.IsDirectory(a)){b=this.GetInode(a);this.IsDirectory(a)&&0>this.GetParent(a)&&y.Debug("Error in filesystem: negative parent id "+a);for(const [c,d]of b.direntries){0===c.length&&y.Debug("Error in filesystem: inode with no name and id "+d);for(const e of c)32>e&&y.Debug("Error in filesystem: Unallowed char in filename")}}}}; +Z.prototype.FillDirectory=function(a){var b=this.inodes[a];if(this.is_forwarder(b))this.follow_fs(b).FillDirectory(b.foreign_id);else{var c=0;for(const d of b.direntries.keys())c+=24+Jb.UTF8Length(d);a=this.inodedata[a]=new Uint8Array(c);b.size=c;c=0;for(const [d,e]of b.direntries)b=this.GetInode(e),c+=v.Marshall(["Q","d","b","s"],[b.qid,c+13+8+1+2+Jb.UTF8Length(d),b.mode>>12,d],a,c)}}; +Z.prototype.RoundToDirentry=function(a,b){a=this.inodedata[a];if(b>=a.length)return a.length;let c=0;for(;;){const d=v.Unmarshall(["Q","d"],a,{offset:c})[1];if(d>b)break;c=d}return c};Z.prototype.IsDirectory=function(a){a=this.inodes[a];return this.is_forwarder(a)?this.follow_fs(a).IsDirectory(a.foreign_id):(a.mode&61440)===ha}; +Z.prototype.IsEmpty=function(a){a=this.inodes[a];if(this.is_forwarder(a))return this.follow_fs(a).IsDirectory(a.foreign_id);for(const b of a.direntries.keys())if("."!==b&&".."!==b)return!1;return!0};Z.prototype.GetChildren=function(a){this.IsDirectory(a);a=this.inodes[a];if(this.is_forwarder(a))return this.follow_fs(a).GetChildren(a.foreign_id);const b=[];for(const c of a.direntries.keys())"."!==c&&".."!==c&&b.push(c);return b}; +Z.prototype.GetParent=function(a){this.IsDirectory(a);a=this.inodes[a];if(this.should_be_linked(a))return a.direntries.get("..");const b=this.follow_fs(a).GetParent(a.foreign_id);return this.get_forwarder(a.mount_id,b)}; +Z.prototype.PrepareCAPs=function(a){a=this.GetInode(a);if(a.caps)return a.caps.length;a.caps=new Uint8Array(20);a.caps[0]=0;a.caps[1]=0;a.caps[2]=0;a.caps[3]=2;a.caps[4]=255;a.caps[5]=255;a.caps[6]=255;a.caps[7]=255;a.caps[8]=255;a.caps[9]=255;a.caps[10]=255;a.caps[11]=255;a.caps[12]=63;a.caps[13]=0;a.caps[14]=0;a.caps[15]=0;a.caps[16]=63;a.caps[17]=0;a.caps[18]=0;a.caps[19]=0;return a.caps.length};function Kb(a){this.fs=a;this.backtrack=new Map} +Kb.prototype.get_state=function(){const a=[];a[0]=this.fs;a[1]=[...this.backtrack];return a};Kb.prototype.set_state=function(a){this.fs=a[0];this.backtrack=new Map(a[1])};Z.prototype.set_forwarder=function(a,b,c){const d=this.inodes[a];this.is_forwarder(d)&&this.mounts[d.mount_id].backtrack.delete(d.foreign_id);d.status=5;d.mount_id=b;d.foreign_id=c;this.mounts[b].backtrack.set(c,a)}; +Z.prototype.create_forwarder=function(a,b){const c=this.CreateInode(),d=this.inodes.length;this.inodes.push(c);c.fid=d;this.set_forwarder(d,a,b);return d};Z.prototype.is_forwarder=function(a){return 5===a.status};Z.prototype.is_a_root=function(a){return 0===this.GetInode(a).fid};Z.prototype.get_forwarder=function(a,b){const c=this.mounts[a].backtrack.get(b);return void 0===c?this.create_forwarder(a,b):c};Z.prototype.delete_forwarder=function(a){this.is_forwarder(a);a.status=-1;this.mounts[a.mount_id].backtrack.delete(a.foreign_id)}; +Z.prototype.follow_fs=function(a){const b=this.mounts[a.mount_id];this.is_forwarder(a);return b.fs};Z.prototype.Mount=function(a,b){a=this.SearchPath(a);if(-1===a.parentid)return-2;if(-1!==a.id)return-17;if(a.forward_path){var c=this.inodes[a.parentid];b=this.follow_fs(c).Mount(a.forward_path,b);return 0>b?b:this.get_forwarder(c.mount_id,b)}c=this.mounts.length;this.mounts.push(new Kb(b));b=this.create_forwarder(c,0);this.link_under_dir(a.parentid,b,a.name);return b}; +function Ib(){this.type=2;this.start=0;this.length=Infinity;this.proc_id=-1;this.client_id=""}Ib.prototype.get_state=function(){const a=[];a[0]=this.type;a[1]=this.start;a[2]=Infinity===this.length?0:this.length;a[3]=this.proc_id;a[4]=this.client_id;return a};Ib.prototype.set_state=function(a){this.type=a[0];this.start=a[1];this.length=0===a[2]?Infinity:a[2];this.proc_id=a[3];this.client_id=a[4]};Ib.prototype.clone=function(){const a=new Ib;a.set_state(this.get_state());return a}; +Ib.prototype.conflicts_with=function(a){return this.proc_id===a.proc_id&&this.client_id===a.client_id||2===this.type||2===a.type||1!==this.type&&1!==a.type||this.start+this.length<=a.start||a.start+a.length<=this.start?!1:!0};Ib.prototype.is_alike=function(a){return a.proc_id===this.proc_id&&a.client_id===this.client_id&&a.type===this.type};Ib.prototype.may_merge_after=function(a){return this.is_alike(a)&&a.start+a.length===this.start}; +Z.prototype.DescribeLock=function(a,b,c,d,e){const g=new Ib;g.type=a;g.start=b;g.length=c;g.proc_id=d;g.client_id=e;return g};Z.prototype.GetLock=function(a,b){a=this.inodes[a];if(this.is_forwarder(a)){var c=a.foreign_id;return this.follow_fs(a).GetLock(c,b)}for(c of a.locks)if(b.conflicts_with(c))return c.clone();return null}; +Z.prototype.Lock=function(a,b,c){const d=this.inodes[a];if(this.is_forwarder(d))return a=d.foreign_id,this.follow_fs(d).Lock(a,b,c);b=b.clone();if(2!==b.type&&this.GetLock(a,b))return 1;for(c=0;c=g&&0=g&&(d.locks.splice(c,1),c--)}if(2!==b.type){c=b;a=!1;for(e=0;e"."!==b&&".."!==b)};Z.prototype.read_file=function(a){a=this.SearchPath(a);if(-1===a.id)return Promise.resolve(null);const b=this.GetInode(a.id);return this.Read(a.id,0,b.size)};var y={Debug:function(a){[].slice.apply(arguments).join(" ")},Abort:function(){}};var v={Marshall:function(a,b,c,d){for(var e,g=0,f=0;f>8&255;c[d++]=e>>16&255;c[d++]=e>>24&255;g+=4;break;case "d":c[d++]=e&255;c[d++]=e>>8&255;c[d++]=e>>16&255;c[d++]=e>>24&255;c[d++]=0;c[d++]=0;c[d++]=0;c[d++]=0;g+=8;break;case "h":c[d++]=e&255;c[d++]=e>>8;g+=2;break;case "b":c[d++]=e;g+=1;break;case "s":var k=d,l=0;c[d++]=0;c[d++]=0;g+=2;for(var m of e)Lb(m.charCodeAt(0)).forEach(function(n){c[d++]=n;g+=1;l++});c[k+0]=l&255;c[k+1]= +l>>8&255;break;case "Q":v.Marshall(["b","w","d"],[e.type,e.version,e.path],c,d);d+=13;g+=13;break;default:y.Debug("Marshall: Unknown type="+a[f])}return g},Unmarshall:function(a,b,c){let d=c.offset;for(var e=[],g=0;g>>0;e.push(f);break;case "d":f=b[d++];f+=b[d++]<<8;f+=b[d++]<<16;f+=b[d++]<<24>>>0;d+=4;e.push(f);break;case "h":f=b[d++];e.push(f+(b[d++]<<8));break;case "b":e.push(b[d++]);break;case "s":f=b[d++]; +f+=b[d++]<<8;for(var k="",l=new Mb,m=0;m