Deploying to gh-pages from @ sehugg/8bitworkshop@df93d0a706 🚀

This commit is contained in:
sehugg committed 2026-09-08 17:12:48 +00:00
1 parent 3edcafecc3
commit 53c02e4dd3
130 files changed
+3208 -481

No files matched your search

+114 -1
View File
@@ -1006,4 +1006,117 @@ div.scripting-cell button.scripting-enabled {
}
.dialog-help {
color: #6666ff;
}
}
/* breakpoints window */
.bp-view {
background-color: #333;
color: #ddd;
padding: 0.6em;
font-size: 0.9em;
min-height: 100%;
box-sizing: border-box;
}
.bp-form {
display: grid;
grid-template-columns: 1fr 1fr auto auto;
gap: 0.4em;
margin-bottom: 0.8em;
}
.bp-input {
width: 100%;
box-sizing: border-box;
background-color: #222;
color: #eee;
border: 1px solid #555;
border-radius: 3px;
padding: 0.3em 0.5em;
font-family: "Andale Mono", "Menlo", "Lucida Console", monospace;
}
.bp-input:focus {
outline: none;
border-color: #7ec7ff;
}
.bp-input::placeholder {
color: #888;
}
.bp-submit {
min-width: 3.5em;
}
.bp-row {
display: flex;
gap: 0.6em;
align-items: center;
padding: 0.3em 0.4em;
border-radius: 3px;
border-bottom: 1px solid #3d3d3d;
}
.bp-row:hover {
background: rgba(255, 255, 255, 0.06);
}
.bp-row.bp-current {
background: #7e2a70; /* matches the editor's current-PC line highlight */
}
.bp-row.bp-current:hover {
background: #8f3282;
}
.bp-row.bp-disabled .bp-loc,
.bp-row.bp-disabled .bp-addr,
.bp-row.bp-disabled .bp-cond {
opacity: 0.5;
}
.bp-chk {
margin: 0;
cursor: pointer;
flex: 0 0 auto;
}
.bp-loc {
cursor: pointer;
font-weight: bold;
white-space: nowrap;
flex: 0 0 auto;
min-width: 8em;
}
.bp-loc:hover {
text-decoration: underline;
color: #7ec7ff;
}
.bp-addr {
color: #7ec7ff;
white-space: nowrap;
flex: 0 0 auto;
min-width: 4.5em;
font-family: "Andale Mono", "Menlo", "Lucida Console", monospace;
}
.bp-addr.bp-error {
color: #ff6a6a;
font-family: inherit;
}
.bp-cond {
color: #9c9cff;
flex: 1 1 auto;
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
font-family: "Andale Mono", "Menlo", "Lucida Console", monospace;
}
.bp-btn {
background: none;
border: none;
cursor: pointer;
color: #999;
padding: 0.1em 0.35em;
font-size: 0.9em;
flex: 0 0 auto;
border-radius: 3px;
}
.bp-btn:hover {
color: #fff;
background: rgba(255, 255, 255, 0.12);
}
.bp-hint {
color: #888;
font-size: 0.85em;
margin-top: 0.8em;
line-height: 1.4;
}
@@ -1,4 +1,4 @@
import{a as i0}from"./chunk-ULIQADK2.js";import{A as r0,J as s0,m as e0,r as t0,x as O}from"./chunk-G4HBIXG4.js";import{K as U,g as W,i as X,l as $,m as x0,s as a0,u as d}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var P=class extends t0{constructor(){super();this.cpuFrequency=1022727;this.sampleRate=this.cpuFrequency;this.cpuCyclesPerLine=65;this.cpuCyclesPerFrame=this.cpuCyclesPerLine*262;this.canvasWidth=280;this.numVisibleScanlines=192;this.numTotalScanlines=262;this.defaultROMSize=77824;this.cpuCyclesPaddleUnit=11;this.cpuCyclesPaddleMax=255*this.cpuCyclesPaddleUnit;this.LOAD_BASE=0;this.HDR_SIZE=0;this.ram=new Uint8Array(77824);this.cpu=new e0;this.grdirty=new Array(384);this.grparams={dirty:this.grdirty,grswitch:E,mem:this.ram};this.kbdlatch=0;this.soundstate=0;this.auxRAMselected=!1;this.auxRAMbank=1;this.writeinhibit=!0;this.bank2rdoffset=0;this.bank2wroffset=0;this.paddleValues=[0,0,0,0];this.paddleButtons=[!1,!1,!1];this.paddleLastTriggered=0;this.slots=new Array(8);this.fakeDrive={readROM:x=>{var a=this.cpu.getPC();if(a>=50688&&a<50944)switch(x){case 0:return 0;case 1:return this.LOAD_BASE&255;case 2:return this.LOAD_BASE>>8&255;default:return 0}else switch(x){case 0:return this.rom&&this.loadRAMWithProgram(),76;case 1:return 32;case 3:return 0;case 5:return 3;case 7:return 60;default:return 0}},readConst:x=>0,read:x=>this.floatbus(),write:(x,a)=>{}};this.loadBIOS(new $().decode(x0(atob(u0)))),this.connectCPUMemoryBus(this),this.bios[54170-(65536-this.bios.length)]=96}saveState(){return{c:this.cpu.saveState(),ram:this.ram.slice(),kbdlatch:this.kbdlatch,soundstate:this.soundstate,grswitch:this.grparams.grswitch,auxRAMselected:this.auxRAMselected,auxRAMbank:this.auxRAMbank,writeinhibit:this.writeinhibit,slots:this.slots.map(x=>x&&x.saveState&&x.saveState()),paddleValues:this.paddleValues.slice(),paddleButtons:this.paddleButtons.slice(),inputs:this.ram.slice(0,0)}}loadState(x){this.cpu.loadState(x.c),this.ram.set(x.ram),this.kbdlatch=x.kbdlatch,this.soundstate=x.soundstate,this.grparams.grswitch=x.grswitch,this.auxRAMselected=x.auxRAMselected,this.auxRAMbank=x.auxRAMbank,this.writeinhibit=x.writeinhibit,this.setupLanguageCardConstants();for(var a=0;a<this.slots.length;a++)this.slots[a]&&this.slots[a].loadState&&this.slots[a].loadState(x.slots[a]);this.paddleValues=x.paddleValues.slice(),this.paddleButtons=x.paddleButtons.slice(),this.ap2disp.invalidate()}saveControlsState(){return{inputs:null,kbdlatch:this.kbdlatch}}loadControlsState(x){this.kbdlatch=x.kbdlatch}loadBIOS(x,a){x.length!=12288&&(console.log(`apple2 loadBIOS !!!WARNING!!!: BIOS wants length 0x3000, but BIOS '${a}' has length 0x${x.length.toString(16)}`),console.log("will load BIOS to end of memory anyway...")),this.bios=Uint8Array.from(x)}loadROM(x,a,r){if(x.length==560*256){var t=new N(this,x);this.slots[6]=t,this.reset()}else{if(super.loadROM(x),X(this.rom.slice(0,4),[0,5,22,0]))this.LOAD_BASE=this.rom[57]|this.rom[56]<<8,this.HDR_SIZE=58;else{let c=this.rom[0]|this.rom[1]<<8,f=this.rom[2]|this.rom[3]<<8,g=c<49152&&c+f<77824;f==x.length-4&&g?(this.LOAD_BASE=c,this.HDR_SIZE=4):(this.LOAD_BASE=r!=null?r:2051,this.HDR_SIZE=0)}this.slots[6]=this.fakeDrive}}loadRAMWithProgram(){console.log(`Loading program into Apple ][ RAM at $${this.LOAD_BASE.toString(16)} (${this.HDR_SIZE} bytes skipped for header)`);let x=this.rom.slice(this.HDR_SIZE,this.HDR_SIZE+this.ram.length-this.LOAD_BASE);this.ram.set(x,this.LOAD_BASE),this.HDR_SIZE==58&&(this.ram[48896]=76,this.ram[49007]=1)}reset(){this.auxRAMselected=!1,this.auxRAMbank=1,this.writeinhibit=!0,this.ram.fill(0,768,1024),super.reset(),this.skipboot()}skipboot(){for(var x=0;x<2e6&&(this.cpu.advanceClock(),this.cpu.getPC()>>8!=198);x++);for(var x=0;x<2e6&&(this.cpu.advanceClock(),!(this.cpu.getPC()>>8<198));x++);}readConst(x){if(x<49152)return this.ram[x];if(x>=53248)return this.auxRAMselected?x>=57344?this.ram[x]:this.ram[x+this.bank2rdoffset]:this.bios[x-(65536-this.bios.length)];if(x>=49408&&x<51200){var a=x>>8&7;return(this.slots[a]&&this.slots[a].readConst(x&255))|0}else return 0}read(x){if(x&=65535,x<49152||x>=53248)return this.readConst(x);if(x<49408){this.probe.logIORead(x,0);var a=x>>4&15;switch(a){case 0:return this.kbdlatch;case 1:this.kbdlatch&=127;break;case 3:this.soundstate=this.soundstate^1;break;case 5:(x&15)<8&&((x&1)!=0?this.grparams.grswitch|=1<<(x>>1&7):this.grparams.grswitch&=~(1<<(x>>1&7)));break;case 6:switch(x&7){case 1:case 2:case 3:var r=(x&7)-1;return this.paddleButtons[r]?this.floatbus()|128:this.floatbus()&127;case 4:case 5:case 6:case 7:var t=(x&15)-4,c=this.frameCycles-this.paddleLastTriggered;return c<this.paddleValues[t]*this.cpuCyclesPaddleUnit?this.floatbus()|128:this.floatbus()&127;default:return this.floatbus()}case 7:if(x==49264)return this.paddleLastTriggered=this.frameCycles,this.floatbus()|128;case 8:return this.doLanguageCardIO(x);case 9:case 10:case 11:case 12:case 13:case 14:case 15:return(this.slots[a-8]&&this.slots[a-8].read(x&15))|0}}else Line truncated
import{a as i0}from"./chunk-OJEFOAZC.js";import{A as r0,J as s0,m as e0,r as t0,x as O}from"./chunk-4676AC7I.js";import{K as U,g as W,i as X,l as $,m as x0,s as a0,u as d}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var P=class extends t0{constructor(){super();this.cpuFrequency=1022727;this.sampleRate=this.cpuFrequency;this.cpuCyclesPerLine=65;this.cpuCyclesPerFrame=this.cpuCyclesPerLine*262;this.canvasWidth=280;this.numVisibleScanlines=192;this.numTotalScanlines=262;this.defaultROMSize=77824;this.cpuCyclesPaddleUnit=11;this.cpuCyclesPaddleMax=255*this.cpuCyclesPaddleUnit;this.LOAD_BASE=0;this.HDR_SIZE=0;this.ram=new Uint8Array(77824);this.cpu=new e0;this.grdirty=new Array(384);this.grparams={dirty:this.grdirty,grswitch:E,mem:this.ram};this.kbdlatch=0;this.soundstate=0;this.auxRAMselected=!1;this.auxRAMbank=1;this.writeinhibit=!0;this.bank2rdoffset=0;this.bank2wroffset=0;this.paddleValues=[0,0,0,0];this.paddleButtons=[!1,!1,!1];this.paddleLastTriggered=0;this.slots=new Array(8);this.fakeDrive={readROM:x=>{var a=this.cpu.getPC();if(a>=50688&&a<50944)switch(x){case 0:return 0;case 1:return this.LOAD_BASE&255;case 2:return this.LOAD_BASE>>8&255;default:return 0}else switch(x){case 0:return this.rom&&this.loadRAMWithProgram(),76;case 1:return 32;case 3:return 0;case 5:return 3;case 7:return 60;default:return 0}},readConst:x=>0,read:x=>this.floatbus(),write:(x,a)=>{}};this.loadBIOS(new $().decode(x0(atob(u0)))),this.connectCPUMemoryBus(this),this.bios[54170-(65536-this.bios.length)]=96}saveState(){return{c:this.cpu.saveState(),ram:this.ram.slice(),kbdlatch:this.kbdlatch,soundstate:this.soundstate,grswitch:this.grparams.grswitch,auxRAMselected:this.auxRAMselected,auxRAMbank:this.auxRAMbank,writeinhibit:this.writeinhibit,slots:this.slots.map(x=>x&&x.saveState&&x.saveState()),paddleValues:this.paddleValues.slice(),paddleButtons:this.paddleButtons.slice(),inputs:this.ram.slice(0,0)}}loadState(x){this.cpu.loadState(x.c),this.ram.set(x.ram),this.kbdlatch=x.kbdlatch,this.soundstate=x.soundstate,this.grparams.grswitch=x.grswitch,this.auxRAMselected=x.auxRAMselected,this.auxRAMbank=x.auxRAMbank,this.writeinhibit=x.writeinhibit,this.setupLanguageCardConstants();for(var a=0;a<this.slots.length;a++)this.slots[a]&&this.slots[a].loadState&&this.slots[a].loadState(x.slots[a]);this.paddleValues=x.paddleValues.slice(),this.paddleButtons=x.paddleButtons.slice(),this.ap2disp.invalidate()}saveControlsState(){return{inputs:null,kbdlatch:this.kbdlatch}}loadControlsState(x){this.kbdlatch=x.kbdlatch}loadBIOS(x,a){x.length!=12288&&(console.log(`apple2 loadBIOS !!!WARNING!!!: BIOS wants length 0x3000, but BIOS '${a}' has length 0x${x.length.toString(16)}`),console.log("will load BIOS to end of memory anyway...")),this.bios=Uint8Array.from(x)}loadROM(x,a,r){if(x.length==560*256){var t=new N(this,x);this.slots[6]=t,this.reset()}else{if(super.loadROM(x),X(this.rom.slice(0,4),[0,5,22,0]))this.LOAD_BASE=this.rom[57]|this.rom[56]<<8,this.HDR_SIZE=58;else{let c=this.rom[0]|this.rom[1]<<8,f=this.rom[2]|this.rom[3]<<8,g=c<49152&&c+f<77824;f==x.length-4&&g?(this.LOAD_BASE=c,this.HDR_SIZE=4):(this.LOAD_BASE=r!=null?r:2051,this.HDR_SIZE=0)}this.slots[6]=this.fakeDrive}}loadRAMWithProgram(){console.log(`Loading program into Apple ][ RAM at $${this.LOAD_BASE.toString(16)} (${this.HDR_SIZE} bytes skipped for header)`);let x=this.rom.slice(this.HDR_SIZE,this.HDR_SIZE+this.ram.length-this.LOAD_BASE);this.ram.set(x,this.LOAD_BASE),this.HDR_SIZE==58&&(this.ram[48896]=76,this.ram[49007]=1)}reset(){this.auxRAMselected=!1,this.auxRAMbank=1,this.writeinhibit=!0,this.ram.fill(0,768,1024),super.reset(),this.skipboot()}skipboot(){for(var x=0;x<2e6&&(this.cpu.advanceClock(),this.cpu.getPC()>>8!=198);x++);for(var x=0;x<2e6&&(this.cpu.advanceClock(),!(this.cpu.getPC()>>8<198));x++);}readConst(x){if(x<49152)return this.ram[x];if(x>=53248)return this.auxRAMselected?x>=57344?this.ram[x]:this.ram[x+this.bank2rdoffset]:this.bios[x-(65536-this.bios.length)];if(x>=49408&&x<51200){var a=x>>8&7;return(this.slots[a]&&this.slots[a].readConst(x&255))|0}else return 0}read(x){if(x&=65535,x<49152||x>=53248)return this.readConst(x);if(x<49408){this.probe.logIORead(x,0);var a=x>>4&15;switch(a){case 0:return this.kbdlatch;case 1:this.kbdlatch&=127;break;case 3:this.soundstate=this.soundstate^1;break;case 5:(x&15)<8&&((x&1)!=0?this.grparams.grswitch|=1<<(x>>1&7):this.grparams.grswitch&=~(1<<(x>>1&7)));break;case 6:switch(x&7){case 1:case 2:case 3:var r=(x&7)-1;return this.paddleButtons[r]?this.floatbus()|128:this.floatbus()&127;case 4:case 5:case 6:case 7:var t=(x&15)-4,c=this.frameCycles-this.paddleLastTriggered;return c<this.paddleValues[t]*this.cpuCyclesPaddleUnit?this.floatbus()|128:this.floatbus()&127;default:return this.floatbus()}case 7:if(x==49264)return this.paddleLastTriggered=this.frameCycles,this.floatbus()|128;case 8:return this.doLanguageCardIO(x);case 9:case 10:case 11:case 12:case 13:case 14:case 15:return(this.slots[a-8]&&this.slots[a-8].read(x&15))|0}}else Line truncated
AUX RAM Select: `+a.auxRAMselected+`
AUX RAM Write: `+!a.writeinhibit+`
@@ -10,4 +10,4 @@ Mode: `+(this.read_mode?"READ":"WRITE")+`
Motor: `+this.motor+`
Data: `+(this.track_data?W(this.track_data[this.track_index]):"-")+`
`}read_latch(){return this.track_index=(this.track_index+1)%F,this.track_data?this.track_data[this.track_index]&255:this.emu.floatbus()|128}write_latch(e){this.track_index=(this.track_index+1)%F,this.track_data!=null&&(this.track_data[this.track_index]=e)}readROM(e){return c0[e]}readConst(e){return c0[e]}read(e){return this.doIO(e,0)}write(e,x){this.doIO(e,x)}doIO(e,x){switch(e&15){case 1:case 3:case 5:case 7:var a,r,t;t=this.track,a=e>>1&3,a==(t-1&3)?t>0&&t--:a==(t+1&3)&&t<w*2-1&&t++,(t&1)==0?(this.track_data=this.data[t>>1],console.log("track",t/2)):this.track_data=null,this.track=t;break;case 8:this.motor=!1;break;case 9:this.motor=!0;break;case 10:break;case 11:break;case 15:this.read_mode=!1;case 12:if(this.read_mode)return this.read_latch();break;case 14:this.read_mode=!0;case 13:return x>=0&&!this.read_mode&&!this.write_protect&&this.write_latch(x),this.write_protect?128:0}return this.emu.floatbus()}},G=[150,151,154,155,157,158,159,166,167,171,172,173,174,175,178,179,180,181,182,183,185,186,187,188,189,190,191,203,205,206,207,211,214,215,217,218,219,220,221,222,223,229,230,231,233,234,235,236,237,238,239,242,243,244,245,246,247,249,250,251,252,253,254,255],m0=[0,7,14,6,13,5,12,4,11,3,10,2,9,1,8,15];function g0(n,e,x,a,r,t,c){var f,g,C,u,m=new Uint8Array(258);for(u=0,f=0;f<14;f++)t[c++]=255;for(t[c++]=213,t[c++]=170,t[c++]=150,t[c++]=n>>1|170,t[c++]=n|170,g=n,t[c++]=e>>1|170,t[c++]=e|170,g^=e,t[c++]=x>>1|170,t[c++]=x|170,g^=x,t[c++]=g>>1|170,t[c++]=g|170,t[c++]=222,t[c++]=170,t[c++]=235,f=0;f<6;f++)t[c++]=255;for(t[c++]=213,t[c++]=170,t[c++]=173,f=0;f<256;f++)m[f]=a[f+r]&255;for(m[256]=0,m[257]=0,C=0,f=0;f<86;f++)u=(m[f]&1)<<1,u|=(m[f]&2)>>1,u|=(m[f+86]&1)<<3,u|=(m[f+86]&2)<<1,u|=(m[f+172]&1)<<5,u|=(m[f+172]&2)<<3,t[c++]=G[u^C],C=u;for(f=0;f<256;f++)u=m[f]>>2,t[c++]=G[u^C],C=u;t[c++]=G[u],t[c++]=222,t[c++]=170,t[c++]=235}function p0(n,e,x){for(var a=new Uint8Array(F),r=0,t=0;t<16;t++)g0(n,e,t,x,m0[t]<<8,a,r),r+=A0;for(;r<F;)a[r++]=255;return a}var n0=[{id:"sieve.c",name:"Sieve",category:"C"},{id:"keyboardtest.c",name:"Keyboard Test"},{id:"mandel.c",name:"Mandelbrot"},{id:"tgidemo.c",name:"TGI Graphics Demo"},{id:"Eliza.c",name:"Eliza"},{id:"siegegame.c",name:"Siege Game"},{id:"cosmic.c",name:"Cosmic Impalas"},{id:"farmhouse.c",name:"Farmhouse Adventure"},{id:"yum.c",name:"Yum Dice Game"},{id:"lz4test.c",name:"LZ4 Decompressor"},{id:"hgrtest.a",name:"HGR Test",category:"Assembly Language"},{id:"conway.a",name:"Conway's Game of Life"},{id:"lz4fh.a",name:"LZ4FH Decompressor"},{id:"deltamod.dasm",name:"Delta Modulation Audio"},{id:"paddles.dasm",name:"Paddles/Joystick"},{id:"dos33bin.a",name:"DOS 3.3 Binary"},{id:"applesinglebin.a",name:"AppleSingle Binary"}],T=class extends i0{constructor(){super(...arguments);this.getOpcodeMetadata=r0;this.getToolForFilename=O}start(){this.startModule(this.mainElement,{jsfile:"mame8bitpc.js",biosfile:["apple2e.zip"],driver:"apple2e",width:280*2,height:384,preInit:function(x){}})}getDefaultExtensions(){return[".c",".cpp",".acme",".xa",".ca65",".dasm",".ecs",".wiz"]}getPresets(){return n0}loadROM(x,a){this.loadROMFile(a)}},Z=class extends s0{constructor(){super(...arguments);this.getMemoryMap=function(){return{main:[{name:"Zero Page RAM",start:0,size:256,type:"ram"},{name:"Line Input RAM",start:512,size:256,type:"ram"},{name:"RAM",start:768,size:192,type:"ram"},{name:"DOS Vectors",start:960,size:64,type:"ram"},{name:"Text/Lores Page 1",start:1024,size:1024,type:"ram"},{name:"RAM",start:2048,size:6144,type:"ram"},{name:"Hires Page 1",start:8192,size:8192,type:"ram"},{name:"Hires Page 2",start:16384,size:8192,type:"ram"},{name:"RAM",start:24576,size:24576,type:"ram"},{name:"I/O",start:49152,size:4096,type:"io"},{name:"ROM",start:53248,size:12288,type:"rom"}]}};this.getToolForFilename=x=>x.endsWith(".lnk")?"merlin32":O(x)}newMachine(){return new P}getPresets(){return n0}getDefaultExtensions(){return[...super.getDefaultExtensions(),".lnk"]}readAddress(x){return this.machine.readConst(x)}getROMExtension(x){return x&&x.length==560*256?".dsk":".bin"}};U["apple2.mame"]=T;U.apple2=Z;
//# sourceMappingURL=apple2-VXIPT7OL.js.map
//# sourceMappingURL=apple2-3KOIXQGR.js.map
File renamed without changes.
@@ -1,4 +1,4 @@
import{F as Rr,I as gr,r as mr}from"./chunk-G4HBIXG4.js";import{E as or,K as Fr,T as N,W as T,X as hr,Z as fr,a as Q,aa as er,g as E}from"./chunk-TYDI7JZQ.js";import{a as pr,b as nr}from"./chunk-KT7KMEQC.js";var Cr=4026531840,lr=223,Tr=32;function n(r){this.cpu=r,this.addressingMode23Immediate=[function(t,i,s){var e=r.gprs,a=function(){var c=e[t];return(!s||s())&&(e[t]-=i),c};return a.writesPC=t==15,a},null,null,null,function(t,i,s){var e=r.gprs,a=function(){var c=e[t];return(!s||s())&&(e[t]+=i),c};return a.writesPC=t==15,a},null,null,null,function(t,i,s){var e=r.gprs,a=function(){return e[t]-i};return a.writesPC=!1,a},function(t,i,s){var e=r.gprs,a=function(){var c=e[t]-i;return(!s||s())&&(e[t]=c),c};return a.writesPC=t==15,a},null,null,function(t,i,s){var e=r.gprs,a=function(){return e[t]+i};return a.writesPC=!1,a},function(t,i,s){var e=r.gprs,a=function(){var c=e[t]+i;return(!s||s())&&(e[t]=c),c};return a.writesPC=t==15,a},null,null],this.addressingMode23Register=[function(t,i,s){var e=r.gprs,a=function(){var c=e[t];return(!s||s())&&(e[t]-=e[i]),c};return a.writesPC=t==15,a},null,null,null,function(t,i,s){var e=r.gprs,a=function(){var c=e[t];return(!s||s())&&(e[t]+=e[i]),c};return a.writesPC=t==15,a},null,null,null,function(t,i,s){var e=r.gprs,a=function(){return e[t]-e[i]};return a.writesPC=!1,a},function(t,i,s){var e=r.gprs,a=function(){var c=e[t]-e[i];return(!s||s())&&(e[t]=c),c};return a.writesPC=t==15,a},null,null,function(t,i,s){var e=r.gprs,a=function(){var c=e[t]+e[i];return c};return a.writesPC=!1,a},function(t,i,s){var e=r.gprs,a=function(){var c=e[t]+e[i];return(!s||s())&&(e[t]=c),c};return a.writesPC=t==15,a},null,null],this.addressingMode2RegisterShifted=[function(t,i,s){var e=r.gprs,a=function(){var c=e[t];return(!s||s())&&(i(),e[t]-=r.shifterOperand),c};return a.writesPC=t==15,a},null,null,null,function(t,i,s){var e=r.gprs,a=function(){var c=e[t];return(!s||s())&&(i(),e[t]+=r.shifterOperand),c};return a.writesPC=t==15,a},null,null,null,function(t,i,s){var e=r.gprs,a=function(){return i(),e[t]-r.shifterOperand};return a.writesPC=!1,a},function(t,i,s){var e=r.gprs,a=function(){i();var c=e[t]-r.shifterOperand;return(!s||s())&&(e[t]=c),c};return a.writesPC=t==15,a},null,null,function(t,i,s){var e=r.gprs,a=function(){return i(),e[t]+r.shifterOperand};return a.writesPC=!1,a},function(t,i,s){var e=r.gprs,a=function(){i();var c=e[t]+r.shifterOperand;return(!s||s())&&(e[t]=c),c};return a.writesPC=t==15,a},null,null]}n.prototype.constructAddressingMode1ASR=function(r,t){var i=this.cpu,s=i.gprs;return function(){++i.cycles;var e=s[r];r==15&&(e+=4),e&=255;var a=s[t];t==15&&(a+=4),e==0?(i.shifterOperand=a,i.shifterCarryOut=i.cpsrC):e<32?(i.shifterOperand=a>>e,i.shifterCarryOut=a&1<<e-1):s[t]>>31?(i.shifterOperand=4294967295,i.shifterCarryOut=2147483648):(i.shifterOperand=0,i.shifterCarryOut=0)}};n.prototype.constructAddressingMode1Immediate=function(r){var t=this.cpu;return function(){t.shifterOperand=r,t.shifterCarryOut=t.cpsrC}};n.prototype.constructAddressingMode1ImmediateRotate=function(r,t){var i=this.cpu;return function(){i.shifterOperand=r>>>t|r<<32-t,i.shifterCarryOut=i.shifterOperand>>31}};n.prototype.constructAddressingMode1LSL=function(r,t){var i=this.cpu,s=i.gprs;return function(){++i.cycles;var e=s[r];r==15&&(e+=4),e&=255;var a=s[t];t==15&&(a+=4),e==0?(i.shifterOperand=a,i.shifterCarryOut=i.cpsrC):e<32?(i.shifterOperand=a<<e,i.shifterCarryOut=a&1<<32-e):e==32?(i.shifterOperand=0,i.shifterCarryOut=a&1):(i.shifterOperand=0,i.shifterCarryOut=0)}};n.prototype.constructAddressingMode1LSR=function(r,t){var i=this.cpu,s=i.gprs;return function(){++i.cycles;var e=s[r];r==15&&(e+=4),e&=255;var a=s[t];t==15&&(a+=4),e==0?(i.shifterOperand=a,i.shifterCarryOut=i.cpsrC):e<32?(i.shifterOperand=a>>>e,i.shifterCarryOut=a&1<<e-1):e==32?(i.shifterOperand=0,i.shifterCarryOut=a>>31):(i.shifterOperand=0,i.shifterCarryOut=0)}};n.prototype.constructAddressingMode1ROR=function(r,t){var i=this.cpu,s=i.gprs;return function(){++i.cycles;var e=s[r];r==15&&(e+=4),e&=255;var a=s[t];t==15&&(a+=4);var c=e&31;e==0?(i.shifterOperand=a,i.shifterCarryOut=i.cpsrC):c?(i.shifterOperand=s[t]>>>c|s[t]<<32-c,i.shifterCarryOut=a&1<<c-1):(i.shifterOperand=a,i.shifterCarryOut=a>>31)}};n.prototype.constructAddressingMode23Immediate=function(r,t,i){var s=(r&983040)>>16;return this.addressingMode23Immediate[(r&27262976)>>21](s,t,i)};n.prototype.constructAddressingMode23Register=function(r,t,i){var s=(r&983040)>>16;return this.addressingMode23Register[(r&27262976)>>21](s,t,i)};n.prototype.constructAddressingMode2RegisterShifted=function(r,t,i){var s=(r&983040)>>16;return this.addressingMode2RegisterShifted[(r&27262976)>>21](s,t,i)};n.prototype.constructAddressingMode4=function(r,t){var i=this.cpu,s=i.gprs;return function(){var e=s[t]+r;return e}};n.prototype.constructAddressingMode4Writeback=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(c){var u=a[i]+r;return c&&s&&e.mmu.store32(a[i]+r-4,a[i]),a[i]+=t,u}};n.prototype.constructLine truncated
import{F as Rr,I as gr,r as mr}from"./chunk-4676AC7I.js";import{E as or,K as Fr,T as N,W as T,X as hr,Z as fr,a as Q,aa as er,g as E}from"./chunk-TYDI7JZQ.js";import{a as pr,b as nr}from"./chunk-KT7KMEQC.js";var Cr=4026531840,lr=223,Tr=32;function n(r){this.cpu=r,this.addressingMode23Immediate=[function(t,i,s){var e=r.gprs,a=function(){var c=e[t];return(!s||s())&&(e[t]-=i),c};return a.writesPC=t==15,a},null,null,null,function(t,i,s){var e=r.gprs,a=function(){var c=e[t];return(!s||s())&&(e[t]+=i),c};return a.writesPC=t==15,a},null,null,null,function(t,i,s){var e=r.gprs,a=function(){return e[t]-i};return a.writesPC=!1,a},function(t,i,s){var e=r.gprs,a=function(){var c=e[t]-i;return(!s||s())&&(e[t]=c),c};return a.writesPC=t==15,a},null,null,function(t,i,s){var e=r.gprs,a=function(){return e[t]+i};return a.writesPC=!1,a},function(t,i,s){var e=r.gprs,a=function(){var c=e[t]+i;return(!s||s())&&(e[t]=c),c};return a.writesPC=t==15,a},null,null],this.addressingMode23Register=[function(t,i,s){var e=r.gprs,a=function(){var c=e[t];return(!s||s())&&(e[t]-=e[i]),c};return a.writesPC=t==15,a},null,null,null,function(t,i,s){var e=r.gprs,a=function(){var c=e[t];return(!s||s())&&(e[t]+=e[i]),c};return a.writesPC=t==15,a},null,null,null,function(t,i,s){var e=r.gprs,a=function(){return e[t]-e[i]};return a.writesPC=!1,a},function(t,i,s){var e=r.gprs,a=function(){var c=e[t]-e[i];return(!s||s())&&(e[t]=c),c};return a.writesPC=t==15,a},null,null,function(t,i,s){var e=r.gprs,a=function(){var c=e[t]+e[i];return c};return a.writesPC=!1,a},function(t,i,s){var e=r.gprs,a=function(){var c=e[t]+e[i];return(!s||s())&&(e[t]=c),c};return a.writesPC=t==15,a},null,null],this.addressingMode2RegisterShifted=[function(t,i,s){var e=r.gprs,a=function(){var c=e[t];return(!s||s())&&(i(),e[t]-=r.shifterOperand),c};return a.writesPC=t==15,a},null,null,null,function(t,i,s){var e=r.gprs,a=function(){var c=e[t];return(!s||s())&&(i(),e[t]+=r.shifterOperand),c};return a.writesPC=t==15,a},null,null,null,function(t,i,s){var e=r.gprs,a=function(){return i(),e[t]-r.shifterOperand};return a.writesPC=!1,a},function(t,i,s){var e=r.gprs,a=function(){i();var c=e[t]-r.shifterOperand;return(!s||s())&&(e[t]=c),c};return a.writesPC=t==15,a},null,null,function(t,i,s){var e=r.gprs,a=function(){return i(),e[t]+r.shifterOperand};return a.writesPC=!1,a},function(t,i,s){var e=r.gprs,a=function(){i();var c=e[t]+r.shifterOperand;return(!s||s())&&(e[t]=c),c};return a.writesPC=t==15,a},null,null]}n.prototype.constructAddressingMode1ASR=function(r,t){var i=this.cpu,s=i.gprs;return function(){++i.cycles;var e=s[r];r==15&&(e+=4),e&=255;var a=s[t];t==15&&(a+=4),e==0?(i.shifterOperand=a,i.shifterCarryOut=i.cpsrC):e<32?(i.shifterOperand=a>>e,i.shifterCarryOut=a&1<<e-1):s[t]>>31?(i.shifterOperand=4294967295,i.shifterCarryOut=2147483648):(i.shifterOperand=0,i.shifterCarryOut=0)}};n.prototype.constructAddressingMode1Immediate=function(r){var t=this.cpu;return function(){t.shifterOperand=r,t.shifterCarryOut=t.cpsrC}};n.prototype.constructAddressingMode1ImmediateRotate=function(r,t){var i=this.cpu;return function(){i.shifterOperand=r>>>t|r<<32-t,i.shifterCarryOut=i.shifterOperand>>31}};n.prototype.constructAddressingMode1LSL=function(r,t){var i=this.cpu,s=i.gprs;return function(){++i.cycles;var e=s[r];r==15&&(e+=4),e&=255;var a=s[t];t==15&&(a+=4),e==0?(i.shifterOperand=a,i.shifterCarryOut=i.cpsrC):e<32?(i.shifterOperand=a<<e,i.shifterCarryOut=a&1<<32-e):e==32?(i.shifterOperand=0,i.shifterCarryOut=a&1):(i.shifterOperand=0,i.shifterCarryOut=0)}};n.prototype.constructAddressingMode1LSR=function(r,t){var i=this.cpu,s=i.gprs;return function(){++i.cycles;var e=s[r];r==15&&(e+=4),e&=255;var a=s[t];t==15&&(a+=4),e==0?(i.shifterOperand=a,i.shifterCarryOut=i.cpsrC):e<32?(i.shifterOperand=a>>>e,i.shifterCarryOut=a&1<<e-1):e==32?(i.shifterOperand=0,i.shifterCarryOut=a>>31):(i.shifterOperand=0,i.shifterCarryOut=0)}};n.prototype.constructAddressingMode1ROR=function(r,t){var i=this.cpu,s=i.gprs;return function(){++i.cycles;var e=s[r];r==15&&(e+=4),e&=255;var a=s[t];t==15&&(a+=4);var c=e&31;e==0?(i.shifterOperand=a,i.shifterCarryOut=i.cpsrC):c?(i.shifterOperand=s[t]>>>c|s[t]<<32-c,i.shifterCarryOut=a&1<<c-1):(i.shifterOperand=a,i.shifterCarryOut=a>>31)}};n.prototype.constructAddressingMode23Immediate=function(r,t,i){var s=(r&983040)>>16;return this.addressingMode23Immediate[(r&27262976)>>21](s,t,i)};n.prototype.constructAddressingMode23Register=function(r,t,i){var s=(r&983040)>>16;return this.addressingMode23Register[(r&27262976)>>21](s,t,i)};n.prototype.constructAddressingMode2RegisterShifted=function(r,t,i){var s=(r&983040)>>16;return this.addressingMode2RegisterShifted[(r&27262976)>>21](s,t,i)};n.prototype.constructAddressingMode4=function(r,t){var i=this.cpu,s=i.gprs;return function(){var e=s[t]+r;return e}};n.prototype.constructAddressingMode4Writeback=function(r,t,i,s){var e=this.cpu,a=e.gprs;return function(c){var u=a[i]+r;return c&&s&&e.mmu.store32(a[i]+r-4,a[i]),a[i]+=t,u}};n.prototype.constructLine truncated
`,e+=4,!(e>=D+I));c++);return u;case"CPU":var u="",p=s.c;let F={2:"Thumb",4:"ARM"},R={15:"PC",14:"LR",13:"SP",12:"IP",11:"FP",9:"SB"};for(var c=0;c<8;c++){let v=c+8;u+=Q("r"+c,5)+" "+E(p.gprs[c],8)+" ",u+=Q("r"+v,5)+" "+E(p.gprs[v],8)+Q(R[v]||"",3)+`
`}return u+="Flags ",u+=p.cpsrN?" N":" -",u+=p.cpsrV?" V":" -",u+=p.cpsrF?" F":" -",u+=p.cpsrZ?" Z":" -",u+=p.cpsrC?" C":" -",u+=p.cpsrI?" I":" -",u+=`
`,u+="MODE "+F[p.instructionWidth]+" "+Dr[p.mode]+`
@@ -6,4 +6,4 @@ import{F as Rr,I as gr,r as mr}from"./chunk-G4HBIXG4.js";import{E as or,K as Fr,
`,u+="cycl "+p.cycles+`
`,u;case"FPU":for(var u="",p=s.c,c=0;c<16;c++)u+=Q("s"+c,5)+" "+E(p.ifprs[c],8)+" "+p.sfprs[c].toPrecision(6),c&1&&(u+=Q("d"+(c>>1),5)+" "+p.dfprs[c>>1].toPrecision(12)),u+=`
`;return u}}saveState(){var i=super.saveState();return i.serial={sin:this.serialIn.slice(0),sout:this.serialOut.slice(0)},i}loadState(i){super.loadState(i),this.serialIn=i.serial.sin,this.serialOut=i.serial.sout}},Dr={16:"USER",17:"FIQ",18:"IRQ",19:"SUPERVISOR",23:"ABORT",27:"UNDEFINED",31:"SYSTEM"};var Ir=[{id:"vidfill.c",name:"Video Memory Fill"}],tr=class extends gr{constructor(){super(...arguments);this.getToolForFilename=Rr}getPresets(){return Ir}getDefaultExtensions(){return[".c",".armips",".vasm"]}},sr=class extends tr{constructor(){super(...arguments);this.getMemoryMap=function(){return{main:[{name:"ROM",start:0,size:1048576,type:"ram"},{name:"I/O",start:67108864,size:256,type:"io"}]}}}async start(){super.start(),console.log("Loading Capstone"),await or("./lib/capstone-arm.min.js"),this.capstone_arm=new cs.Capstone(cs.ARCH_ARM,cs.MODE_ARM),this.capstone_thumb=new cs.Capstone(cs.ARCH_ARM,cs.MODE_THUMB)}newMachine(){return new q}readAddress(i){return this.machine.read(i)}getPlatformName(){return"ARM7"}getDebugTree(){return nr(pr({},this.machine.cpu.getDebugTree()),{dwarf:this.debugSymbols.debuginfo})}disassemble(i,s){for(var e=this.machine.cpu.isThumb(),a=e?this.capstone_thumb:this.capstone_arm,c=[],u=0;u<4;u++)c[u]=s(i+u);var p=a.disasm(c,i,4),F=p&&p[0];return F?{nbytes:F.size,line:F.mnemonic+" "+F.op_str,isaddr:F.address>0,iscall:F.mnemonic=="bl"||F.mnemonic=="blx"}:{nbytes:4,line:"???",isaddr:!1}}};Fr.arm32=sr;export{tr as BaseARMMachinePlatform};
//# sourceMappingURL=arm32-DPNHXLE7.js.map
//# sourceMappingURL=arm32-JOUZ3MAF.js.map
File renamed without changes.
@@ -1,4 +1,4 @@
import{K as D0,c as l0,d as m0,e as u0,k as h0,r as E0}from"./chunk-G4HBIXG4.js";import{$ as x0,K as k,W as A,X as C0,Z as X0,aa as N,g,l as c0,m as B0,t as g0}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var I0=X0([[A.UP,16,1],[A.DOWN,16,2],[A.LEFT,16,4],[A.RIGHT,16,8],[A.A,16,16],[A.P2_UP,17,1],[A.P2_DOWN,17,2],[A.P2_LEFT,17,4],[A.P2_RIGHT,17,8],[A.P2_A,17,16],[A.VK_P,20,1],[A.VK_SLASH,20,2],[A.VK_X,20,4],[A.VK_MINUS,20,8],[A.VK_COMMA,20,16],[A.VK_EQUALS,20,32],[A.VK_O,21,1],[A.VK_L,21,2],[A.VK_9,21,4],[A.VK_6,21,8],[A.VK_3,21,16],[A.VK_PERIOD,21,32],[A.VK_I,22,1],[A.VK_K,22,2],[A.VK_8,22,4],[A.VK_5,22,8],[A.VK_2,22,16],[A.VK_0,22,32],[A.VK_U,23,1],[A.VK_J,23,2],[A.VK_7,23,4],[A.VK_4,23,8],[A.VK_1,23,16],[A.VK_BACK_SLASH,23,32]]),P0=2,R0=function(d){var f,t,i,o,U,X,W,i0,J;let G=d?320:160,K=d?204:102,s0=G>>2,b0=d?16383:4095,H0=256,v0=4293848814,y0=4278190080,p0=d?3:1,w0=.7;var n0=0,j=new Uint8Array(32),c=0,D=0,m=!1,Y=0,b=0,p=0,V=0,w=0,Q=K,T=new Uint32Array(8),H=new Uint8Array(8),Z=0,v=new Uint8Array(d?262:131),u=new Uint8Array(4),h=0,S=0,l=0,L=0,B=new Uint8Array(8),M=0;function Q0(){return f.scanline<Q&&f.getRasterX()<n0}function z(){l++,Q0()&&!(L++&p0)&&l++}function y(e,x){i[e]=x,z(),v[(e&b0)/s0|0]=1}function S0(e,x){for(var s=e*4+3,n=0;n<4;n++){var E=e%s0>=(b&63)?0:4;i0[s--]=T[E+(x&3)],x>>=2}}function a0(e){for(var x=e*G/4,s=0;s<G/4;s++)S0(x+s,i[x+s])}function d0(e,x){if(c&8){var s=0;m||(x>>=4);for(var n=0;n<4;n++){var E=x&1?D>>2&3:D&3;s|=E<<n*2,x>>=1}x=s,m=!m}if(c&4){if(h&4){var a=2*(~h&3);x=(u[3]>>a&3)<<6|(u[2]>>a&3)<<4|(u[1]>>a&3)<<2|(u[0]>>a&3)<<0}else u[h&3]=x;h++}else{var a=(c&3)<<1,s=x>>a|Y;Y=x<<8-a&255,x=s}if(c&64&&(x=(x&3)<<6|(x&12)<<2|(x&48)>>2|(x&192)>>6),c&48){var F=i[e],r=0;F&192&&x&192&&(r|=1),F&48&&x&48&&(r|=2),F&12&&x&12&&(r|=4),F&3&&x&3&&(r|=8),c&16&&(x|=F),c&32&&(x^=F),S=S&240|r|r<<4}y(e,x)}function _(e,x){H[e&7]=x&255,T[e&7]=F0[x&255],O()}function M0(){var e=b>>6}function O(){Z=K}function V0(){let e=B[0]|B[1]<<8,x=B[2]&63,s=B[3],n=M&255|B[4]<<8,E=B[5],a=B[6]+1,F,r=0,C=0,N0=l;r=0,(x&2)===0&&(r=1);function f0(){r&&(x&4)!==0&&(F!==0||(x&8)===0)&&e++,(x&2)!==0&&(r^=1)}function o0(){F!==0&&((x&32)!==0?n++:n--)}for(;a>=0;){let q;for(F=E;F>=0;){let $,e0;$=(x&1)===0?e:n,F===0&&(x&8)!==0?e0=0:e0=o.read(e),(x&1)===0?f0():o0(),$=(x&1)!==0?e:n,y($,e0),(x&1)===0?o0():f0(),C+=4,F--}q=(n&255)+s&256,n=n&65280|n+s&255,(x&16)===0?n+=q:n-=q^256,a--}l=N0+C}this.drawScanline=e=>{e==V&&p&8&&(t.retryInterrupts=!(p&4),this.probe&&this.probe.logInterrupt(w),t.interrupt(w)),e<K&&Z>0?(v[e]=0,a0(e),Z--):v[e]&&(v[e]=0,a0(e))},this.init=(e,x,s,n,E)=>{f=e,n0=e.cpuCyclesPerLine*w0,t=x,i=s,j=n,J=E,d?o={read:N([[16384,32767,16383,function(F){return z(),i[F]}],[53248,57343,4095,function(F){return i[F+16384]}],[0,16383,16383,function(F){return X?X[F]:0}],[32768,49151,16383,function(F){return X?X[F+16384]:0}]]),write:N([[16384,32767,16383,y],[0,16383,16383,d0],[53248,57343,4095,function(F,r){i[F+16384]=r}]])}:(W=x0(new c0().decode(B0(atob(G0))),8192),o={read:N([[0,8191,8191,function(F){return W[F]}],[8192,16383,8191,function(F){return X?X[F]:0}],[16384,20479,4095,function(F){return z(),i[F]}]]),write:N([[16384,20479,4095,y],[0,16383,4095,d0]])}),U={read:function(F){F&=31;var r;switch(F){case 8:r=S,S=0;break;default:r=j[F];break}return r},write:function(F,r){if(F!=42331){if(F&=255,F>120&&F<128){B[F&7]=r,F==114&&(M=0),F==116&&(M=M+B[3]&255),F==126&&V0();return}switch(F&=31,r&=255,F){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:_(F,r);break;case 9:b=r,M0(),O();break;case 10:Q=d?r:r>>1,O();break;case 11:var C=t.saveState();_((C.BC>>8)-1,o.read(C.HL));break;case 12:c=r,Y=0,h=0,m=!1;break;case 13:w=r;break;case 14:p=r;break;case 15:V=d?r:r>>1;break;case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:J.setACRegister(F,r);break;case 24:var C=t.saveState();J.setACRegister((C.BC>>8)-1,o.read(C.HL));break;case 25:D=r;break;case 26:case 27:case 28:case 29:case 30:break;default:break}}}},e.connectCPUMemoryBus(o),e.connectCPUIOBus(U),this.membus=o,this.iobus=U;for(var a=0;a<8;a++)_(a,a)},this.resetWaitStates=function(){var e=l;return l=0,e},this.peek=function(e){var x=l,s=o.read(e);return l=x,s},this.loadState=e=>{t.loadState(e.c),i.set(e.ram),T.set(e.palette),H.set(e.palinds),c=e.magicop,D=e.xpand,m=e.xplower,Y=e.shift2,b=e.horcb,p=e.inmod,V=e.inlin,w=e.infbk,Q=e.verbl,h=e.rotcount,u.set(e.rotdata),S=e.intst,L=e.slotphase|0,j.set(e.inputs),B.set(e.patboard),M=e.patdest,O()},this.saveState=()=>({c:t.saveState(),ram:i.slice(0),inputs:j.slice(0),palette:T.slice(0),palinds:H.slice(0),magicop:c,xpand:D,xplower:m,shift2:Y,horcb:b,inmod:p,inlin:V,infbk:w,verbl:Q,rotcount:h,rotdata:u.slice(0),intst:S,slotphase:L,patboard:B.slice(0),patdest:M}),this.reset=()=>{c=D=p=V=w=Y=b=0,Q=K,m=!1},this.toLongString=e=>{var x="";x+=`
import{K as D0,c as l0,d as m0,e as u0,k as h0,r as E0}from"./chunk-4676AC7I.js";import{$ as x0,K as k,W as A,X as C0,Z as X0,aa as N,g,l as c0,m as B0,t as g0}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var I0=X0([[A.UP,16,1],[A.DOWN,16,2],[A.LEFT,16,4],[A.RIGHT,16,8],[A.A,16,16],[A.P2_UP,17,1],[A.P2_DOWN,17,2],[A.P2_LEFT,17,4],[A.P2_RIGHT,17,8],[A.P2_A,17,16],[A.VK_P,20,1],[A.VK_SLASH,20,2],[A.VK_X,20,4],[A.VK_MINUS,20,8],[A.VK_COMMA,20,16],[A.VK_EQUALS,20,32],[A.VK_O,21,1],[A.VK_L,21,2],[A.VK_9,21,4],[A.VK_6,21,8],[A.VK_3,21,16],[A.VK_PERIOD,21,32],[A.VK_I,22,1],[A.VK_K,22,2],[A.VK_8,22,4],[A.VK_5,22,8],[A.VK_2,22,16],[A.VK_0,22,32],[A.VK_U,23,1],[A.VK_J,23,2],[A.VK_7,23,4],[A.VK_4,23,8],[A.VK_1,23,16],[A.VK_BACK_SLASH,23,32]]),P0=2,R0=function(d){var f,t,i,o,U,X,W,i0,J;let G=d?320:160,K=d?204:102,s0=G>>2,b0=d?16383:4095,H0=256,v0=4293848814,y0=4278190080,p0=d?3:1,w0=.7;var n0=0,j=new Uint8Array(32),c=0,D=0,m=!1,Y=0,b=0,p=0,V=0,w=0,Q=K,T=new Uint32Array(8),H=new Uint8Array(8),Z=0,v=new Uint8Array(d?262:131),u=new Uint8Array(4),h=0,S=0,l=0,L=0,B=new Uint8Array(8),M=0;function Q0(){return f.scanline<Q&&f.getRasterX()<n0}function z(){l++,Q0()&&!(L++&p0)&&l++}function y(e,x){i[e]=x,z(),v[(e&b0)/s0|0]=1}function S0(e,x){for(var s=e*4+3,n=0;n<4;n++){var E=e%s0>=(b&63)?0:4;i0[s--]=T[E+(x&3)],x>>=2}}function a0(e){for(var x=e*G/4,s=0;s<G/4;s++)S0(x+s,i[x+s])}function d0(e,x){if(c&8){var s=0;m||(x>>=4);for(var n=0;n<4;n++){var E=x&1?D>>2&3:D&3;s|=E<<n*2,x>>=1}x=s,m=!m}if(c&4){if(h&4){var a=2*(~h&3);x=(u[3]>>a&3)<<6|(u[2]>>a&3)<<4|(u[1]>>a&3)<<2|(u[0]>>a&3)<<0}else u[h&3]=x;h++}else{var a=(c&3)<<1,s=x>>a|Y;Y=x<<8-a&255,x=s}if(c&64&&(x=(x&3)<<6|(x&12)<<2|(x&48)>>2|(x&192)>>6),c&48){var F=i[e],r=0;F&192&&x&192&&(r|=1),F&48&&x&48&&(r|=2),F&12&&x&12&&(r|=4),F&3&&x&3&&(r|=8),c&16&&(x|=F),c&32&&(x^=F),S=S&240|r|r<<4}y(e,x)}function _(e,x){H[e&7]=x&255,T[e&7]=F0[x&255],O()}function M0(){var e=b>>6}function O(){Z=K}function V0(){let e=B[0]|B[1]<<8,x=B[2]&63,s=B[3],n=M&255|B[4]<<8,E=B[5],a=B[6]+1,F,r=0,C=0,N0=l;r=0,(x&2)===0&&(r=1);function f0(){r&&(x&4)!==0&&(F!==0||(x&8)===0)&&e++,(x&2)!==0&&(r^=1)}function o0(){F!==0&&((x&32)!==0?n++:n--)}for(;a>=0;){let q;for(F=E;F>=0;){let $,e0;$=(x&1)===0?e:n,F===0&&(x&8)!==0?e0=0:e0=o.read(e),(x&1)===0?f0():o0(),$=(x&1)!==0?e:n,y($,e0),(x&1)===0?o0():f0(),C+=4,F--}q=(n&255)+s&256,n=n&65280|n+s&255,(x&16)===0?n+=q:n-=q^256,a--}l=N0+C}this.drawScanline=e=>{e==V&&p&8&&(t.retryInterrupts=!(p&4),this.probe&&this.probe.logInterrupt(w),t.interrupt(w)),e<K&&Z>0?(v[e]=0,a0(e),Z--):v[e]&&(v[e]=0,a0(e))},this.init=(e,x,s,n,E)=>{f=e,n0=e.cpuCyclesPerLine*w0,t=x,i=s,j=n,J=E,d?o={read:N([[16384,32767,16383,function(F){return z(),i[F]}],[53248,57343,4095,function(F){return i[F+16384]}],[0,16383,16383,function(F){return X?X[F]:0}],[32768,49151,16383,function(F){return X?X[F+16384]:0}]]),write:N([[16384,32767,16383,y],[0,16383,16383,d0],[53248,57343,4095,function(F,r){i[F+16384]=r}]])}:(W=x0(new c0().decode(B0(atob(G0))),8192),o={read:N([[0,8191,8191,function(F){return W[F]}],[8192,16383,8191,function(F){return X?X[F]:0}],[16384,20479,4095,function(F){return z(),i[F]}]]),write:N([[16384,20479,4095,y],[0,16383,4095,d0]])}),U={read:function(F){F&=31;var r;switch(F){case 8:r=S,S=0;break;default:r=j[F];break}return r},write:function(F,r){if(F!=42331){if(F&=255,F>120&&F<128){B[F&7]=r,F==114&&(M=0),F==116&&(M=M+B[3]&255),F==126&&V0();return}switch(F&=31,r&=255,F){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:_(F,r);break;case 9:b=r,M0(),O();break;case 10:Q=d?r:r>>1,O();break;case 11:var C=t.saveState();_((C.BC>>8)-1,o.read(C.HL));break;case 12:c=r,Y=0,h=0,m=!1;break;case 13:w=r;break;case 14:p=r;break;case 15:V=d?r:r>>1;break;case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:J.setACRegister(F,r);break;case 24:var C=t.saveState();J.setACRegister((C.BC>>8)-1,o.read(C.HL));break;case 25:D=r;break;case 26:case 27:case 28:case 29:case 30:break;default:break}}}},e.connectCPUMemoryBus(o),e.connectCPUIOBus(U),this.membus=o,this.iobus=U;for(var a=0;a<8;a++)_(a,a)},this.resetWaitStates=function(){var e=l;return l=0,e},this.peek=function(e){var x=l,s=o.read(e);return l=x,s},this.loadState=e=>{t.loadState(e.c),i.set(e.ram),T.set(e.palette),H.set(e.palinds),c=e.magicop,D=e.xpand,m=e.xplower,Y=e.shift2,b=e.horcb,p=e.inmod,V=e.inlin,w=e.infbk,Q=e.verbl,h=e.rotcount,u.set(e.rotdata),S=e.intst,L=e.slotphase|0,j.set(e.inputs),B.set(e.patboard),M=e.patdest,O()},this.saveState=()=>({c:t.saveState(),ram:i.slice(0),inputs:j.slice(0),palette:T.slice(0),palinds:H.slice(0),magicop:c,xpand:D,xplower:m,shift2:Y,horcb:b,inmod:p,inlin:V,infbk:w,verbl:Q,rotcount:h,rotdata:u.slice(0),intst:S,slotphase:L,patboard:B.slice(0),patdest:M}),this.reset=()=>{c=D=p=V=w=Y=b=0,Q=K,m=!1},this.toLongString=e=>{var x="";x+=`
INLIN: `+e.inlin,x+=`
VERBL: `+e.verbl,x+=`
MAGICOP: $`+g(e.magicop),x+=`
@@ -11,4 +11,4 @@ XPLOWER: `+e.xplower,x+=`
INTST: $`+g(e.intst),x+=`
Palette: `;for(var s=0;s<8;s++)x+=g(H[s]);return x+=`
`,x},this.connectVideo=function(e){i0=e},this.loadROM=function(e){X=e},this.loadBIOS=function(e){W=e},this.getVisiblePixelWords=function(){return Q*G}},P=class extends E0{constructor(t){super();this.cpuFrequency=1789e3;this.arcade=t,this.cpu=new l0,this.psg=new t0(new m0),this.numTotalScanlines=t?262:131;var i=P0*(t?1:2);this.sampleRate=60*this.numTotalScanlines*i,this.audioadapter=new h0(this.psg.psg,i,this.sampleRate),this.handler=C0(this.inputs,I0),this.defaultROMSize=t?45056:8192,this.ram=new Uint8Array(t?20480:4096),this.numVisibleScanlines=t?204:102,this.canvasWidth=t?320:160,this.cpuCyclesPerLine=this.cpuFrequency/(60*this.numVisibleScanlines*1.286)|0,this.m=new R0(t),this.m.init(this,this.cpu,this.ram,this.inputs,this.psg),t&&(this.inputs[16]=255,this.inputs[17]=255,this.inputs[18]=0,this.inputs[19]=8)}read(t){return this.m.peek(t)}write(t,i){this.m.membus.write(t,i)}connectVideo(t){super.connectVideo(t),this.frontbuffer=t,this.backbuffer=new Uint32Array(t.length),this.m.connectVideo(this.backbuffer)}preFrame(){this.m.resetWaitStates()}postFrame(){var t=this.m.getVisiblePixelWords();this.frontbuffer.set(this.backbuffer.slice(0,t),0),this.frontbuffer.fill(0,t)}setPaddleInput(t,i){switch(t){case 0:this.inputs[28]=i&255;break;case 1:this.inputs[29]=i&255;break}}startScanline(){this.audio&&this.audioadapter.generate(this.audio)}drawScanline(){var t=this.scanline;this.m.drawScanline(t)}advanceCPU(){var t=super.advanceCPU(),i=this.m.resetWaitStates();return i&&(t+=i,this.probe.logClocks(i)),t}loadROM(t){super.loadROM(t),this.m.loadROM(this.rom),this.reset()}loadBIOS(t){this.m.loadBIOS(x0(t,8192)),this.reset()}reset(){super.reset(),this.m.reset()}loadState(t){this.m.loadState(t)}saveState(){return this.m.saveState()}getDebugCategories(){return["CPU","Stack","Astro"]}getDebugInfo(t,i){switch(t){case"Astro":return this.m.toLongString(i)}}getRasterCanvasPosition(){return{x:this.getRasterX(),y:this.getRasterY()}}getVideoParams(){return this.arcade?{width:320,height:204,rotate:180}:{width:160,height:102}}},t0=class extends u0{setACRegister(f,t){switch(f&=7,t&=255,f){case 0:this.psg.setClock(1789e3*16/(t+1)),this.psg.writeRegisterAY(7,248);break;case 1:case 2:case 3:var i=(f-1)*2,o=t*2+1;this.psg.writeRegisterAY(i,o&255),this.psg.writeRegisterAY(i+1,o>>8&255);break;case 5:this.psg.writeRegisterAY(10,t&15);break;case 6:this.psg.writeRegisterAY(8,t&15),this.psg.writeRegisterAY(9,t>>4&15);break}}},F0=[0,2368548,4737096,7171437,9539985,11974326,14342874,16777215,2425019,4784352,7213567,9582079,12016383,14384895,16753663,16762879,4784304,7143637,9568761,11937279,14306047,16740095,16749311,16758783,6946975,9306307,11731175,14096639,16465151,16736767,16745983,16755199,8847495,11206827,13631696,15994612,16724735,16733951,16743423,16752639,10420330,12779662,15138995,16713687,16723195,16732415,16741631,16751103,11534409,13959277,16318610,16713142,16722394,16731647,16741119,16750335,12255269,14680137,16711790,16713362,16722615,16732123,16741375,16750847,12517376,14876708,16711752,16714605,16724113,16733366,16742874,16752127,12255232,14680064,16711715,16716871,16726380,16735632,16745141,16754393,11534336,13959168,16318464,16720164,16729416,16738924,16748177,16757685,10420224,12779520,15141888,16723971,16733479,16742731,16752240,16761492,8847360,11206656,13639168,16007680,16738058,16747310,16756563,16766071,6946816,9309440,11743488,14112256,16480768,16752151,16761659,16770911,4784128,7151872,9585920,11954688,14323200,16757509,16766761,16776270,2429184,4797696,7232e3,9600512,12034816,14403328,16771870,16777027,9472,2377984,4746496,7180800,9549312,11983616,14352155,16777023,14080,23296,2326528,4695040,7129344,9497856,11927326,14286659,18176,27648,36864,2405376,4774144,7142661,9568041,11927374,21760,30976,40192,246272,2614784,4980503,7405371,9764703,24320,33536,43008,52224,716810,3079982,5504851,7864183,25856,35328,44544,53763,63271,1572683,3932016,6291348,26624,35840,45312,54564,63816,393068,2752401,5177269,26112,35584,44835,54343,63596,65424,2031541,4456409,24832,34084,43592,52845,62353,65462,1834970,4194302,22565,31817,41326,50578,60087,65499,2031615,4456447,19273,28781,38034,47542,56794,393215,2752511,5177343,15466,24718,34227,43479,52987,1569535,3932159,6291455,10887,20395,29648,38900,703743,3072255,5505023,7864319,6047,15299,24807,230655,2599167,4967935,7401983,9764863,688,10197,19449,2388223,4756735,7125503,9559551,11927551,187,5088,2308095,4676607,7110911,9479423,11913727,14282239];for(I=0;I<256;I++)Y0=F0[I],F0[I]=g0(Y0)|4278190080;var Y0,I;var G0="TFpHAAAgAAAAFHUyA4UHAUpdY2XzIQAgfv5Vyg0AwwAgMc5PzR4JIQUgfiNmb+kAZRrl9cXV3eX95SEAADnlzc4H4f3h3eHRwfHhyUztacnd5d1jEd053X4Gyw8mAN1+BN2OBSdvyxTd4ckBCwjts8kAQ15cJVJTOy83ODkqNDU2LTEyMysmMC49XRtuZR9lH2UeZQjD4ALD4QIgCAgBB2IToAQGAQU+FT9lAfv1xdXl/eUB1U8KPAIB1mWj12Wj2GWi/SHrT/00AP1+ANY8ICL9NgAAIexPNP0h40/9ywD+/SHtXQgWBCHuTzQ61E+3KBL9IepPYw23KAX9NQAYA82VCf3hXUIt7U1dRikOXUIktyhG3csERig5EdVPaSYAGX63KC4+1YFfPk/OAFch1U8GAAl+3YYFErcgF0H1HgHxBBgCyyMQ/P0h+l0CVrP9dwBjNz4MGLTd4cllASEP/+XNhwLxycn Line truncated
//# sourceMappingURL=astrocade-K3HTJCX2.js.map
//# sourceMappingURL=astrocade-JYCWWO6Z.js.map
File renamed without changes.
@@ -1,7 +1,7 @@
import{a as j}from"./chunk-DYRHT6BM.js";import{J as $,h as H,k as z,m as Y,q as K,x as V}from"./chunk-G4HBIXG4.js";import{$ as N,K as O,V as R,W as o,X as E,Z as W,aa as _,g as S}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var b=0,U=2,v=8,Z=W([[o.A,v+0,128],[o.B,v+1,128],[o.GP_A,v+0,128],[o.GP_B,v+1,128],[o.SELECT,U,-2],[o.START,U,-1],[o.UP,b,-16],[o.DOWN,b,-32],[o.LEFT,b,-64],[o.RIGHT,b,-128],[o.P2_A,v+2,128],[o.P2_B,v+3,128],[o.P2_UP,b,-1],[o.P2_DOWN,b,-2],[o.P2_LEFT,b,-4],[o.P2_RIGHT,b,-8]]);var M=263,G=242,C=451,tt=28,et=16,rt=24,q=2,X=M*60*q,I=class{constructor(){this.regs=new Uint8Array(32)}reset(){this.regs.fill(0)}read(r){return this.regs[r]|0}write(r,t){this.regs[r]=t}saveState(){return{regs:this.regs.slice(0)}}loadState(r){for(let t=0;t<32;t++)this.write(t,r.regs[t])}static stateToLongString(r){let t="";return t+=R(r.regs,0,32),t}},L=class{constructor(){this.cycles=0;this.regs=new Uint8Array(32);this.offset=-1;this.dll=0;this.dlstart=0;this.dli=!1;this.h16=!1;this.h8=!1;this.writemode=0;this.indirect=!1;this.pixels=new Uint8Array(320);this.WSYNC=0}reset(){this.regs.fill(0)}read(r){return this.regs[r]|0}write(r,t){this.regs[r]=t,r==4&&this.WSYNC++}saveState(){return{regs:this.regs.slice(0),offset:this.offset,dll:this.dll,dlstart:this.dlstart,dli:this.dli,h16:this.h16,h8:this.h8,indirect:this.indirect,writemode:this.writemode}}loadState(r){for(let t=0;t<32;t++)this.write(t,r.regs[t]|0);this.offset=r.offset|0,this.dll=r.dll|0,this.dlstart=r.dlstart|0,this.dli=!!r.dli,this.h16=!!r.h16,this.h8=!!r.h8,this.indirect=!!r.indirect,this.writemode=r.writemode|0}isDMAEnabled(){return(this.regs[28]&96)==64}getDLLStart(){return(this.regs[12]<<8)+this.regs[16]}getCharBaseAddress(){return(this.regs[20]<<8)+this.offset}setVBLANK(r){r?(this.regs[8]|=128,this.offset=-1,this.dll=this.getDLLStart(),this.dli=this.bus&&(this.bus.read(this.dll)&128)!=0):this.regs[8]&=-129}readDLLEntry(r){if(this.dll>=16384)return;let t=r.read(this.dll);this.offset=t&15,this.h16=(t&64)!=0,this.h8=(t&32)!=0,this.dlstart=(r.read(this.dll+1)<<8)+r.read(this.dll+2),this.dll=this.dll+3&65535,this.dli=(r.read(this.dll)&128)!=0}isHoley(r){return this.indirect?!1:!!(r&32768&&(this.h16&&r&4096||this.h8&&r&2048))}readDMA(r){return this.isHoley(r)?0:(this.cycles+=3,this.bus.read(r))}doDMA(r){this.bus=r,this.cycles=0;let t=this.pixels;if(t.fill(this.regs[0]),this.isDMAEnabled()){this.cycles+=this.offset==0?rt:et,this.offset<0&&this.readDLLEntry(r);let u=this.dlstart&65280,c=this.dlstart&255;do{let x=r.read(u+(c+0&511)),d=r.read(u+(c+1&511));if(d==0||u>=16384)break;let l=r.read(u+(c+2&511)),p=r.read(u+(c+3&511)),g=!1;if((d&31)==0){var e=p>>5,n=32-(p&31),i=r.read(u+(c+4&511));g=(d&32)!=0,c+=5,this.cycles+=10,this.writemode=d&128}else{var i=p,e=d>>5,n=32-(d&31);c+=4,this.cycles+=8}this.indirect=g;let y=x+((l+(g?0:this.offset)&255)<<8);i*=2;let m=this.regs[28],k=(m&3)+(this.writemode?4:0),A=(m&4)!=0,w=g&&(m&16)!=0;w&&(n*=2);for(var s=0;s<n;s++){let h=this.readDMA(w?y+(s>>1):y+s);if(g){let P=(this.regs[20]+this.offset<<8)+h;w&&s&1&&(P++,this.cycles-=3),h=this.readDMA(P)}switch(k){case 0:for(let a=0;a<4;a++){let f=h>>6&3;(f||A)&&(t[i]=t[i+1]=this.regs[(e<<2)+f]),h<<=2,i=i+2&511}break;case 3:for(let a=0;a<8;a++){let f=(h&128)>>6;(f||A)&&(t[i]=this.regs[(e<<2)+f]),h<<=1,i=i+1&511}break;case 4:for(let a=0;a<2;a++){let f=(h>>6&3)+(h&12);(f&3||A)&&(t[i]=t[i+1]=t[i+2]=t[i+3]=this.regs[((e&4)<<2)+f]),h<<=2,i=i+2&511}break;case 6:for(let a=0;a<4;a++){let f=(h&128)>>6|(h&8)>>3;(f||A)&&(t[i]=this.regs[(e<<2)+f]),h<<=1,i=i+1&511}break;case 2:for(let a=0;a<8;a++){let f=(h&128)>>6;f+=a&1?e&1:e>>1&1,(f||A)&&(t[i]=this.regs[(e<<2)+f]),h<<=1,i=i+1&511}break;case 7:let P=h;for(let a=0;a<4;a++){a==2&&(P<<=2);let f=(h&128)>>6,Q=e&4|P>>2&3;(f||A)&&(t[i]=this.regs[(Q<<2)+f]),h<<=1,i=i+1&511}break}}}while(this.cycles<C);this.offset-=1}return this.cycles}doInterrupt(){return this.dli&&this.offset<0?(this.dli=!1,!0):!1}static stateToLongString(r){let t="";return t+=R(r.regs,0,32),t+=`
import{a as j}from"./chunk-DYRHT6BM.js";import{J as $,h as H,k as z,m as Y,q as K,x as V}from"./chunk-4676AC7I.js";import{$ as N,K as O,V as R,W as o,X as E,Z as W,aa as _,g as S}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var b=0,U=2,v=8,Z=W([[o.A,v+0,128],[o.B,v+1,128],[o.GP_A,v+0,128],[o.GP_B,v+1,128],[o.SELECT,U,-2],[o.START,U,-1],[o.UP,b,-16],[o.DOWN,b,-32],[o.LEFT,b,-64],[o.RIGHT,b,-128],[o.P2_A,v+2,128],[o.P2_B,v+3,128],[o.P2_UP,b,-1],[o.P2_DOWN,b,-2],[o.P2_LEFT,b,-4],[o.P2_RIGHT,b,-8]]);var M=263,G=242,C=451,tt=28,et=16,rt=24,q=2,X=M*60*q,I=class{constructor(){this.regs=new Uint8Array(32)}reset(){this.regs.fill(0)}read(r){return this.regs[r]|0}write(r,t){this.regs[r]=t}saveState(){return{regs:this.regs.slice(0)}}loadState(r){for(let t=0;t<32;t++)this.write(t,r.regs[t])}static stateToLongString(r){let t="";return t+=R(r.regs,0,32),t}},L=class{constructor(){this.cycles=0;this.regs=new Uint8Array(32);this.offset=-1;this.dll=0;this.dlstart=0;this.dli=!1;this.h16=!1;this.h8=!1;this.writemode=0;this.indirect=!1;this.pixels=new Uint8Array(320);this.WSYNC=0}reset(){this.regs.fill(0)}read(r){return this.regs[r]|0}write(r,t){this.regs[r]=t,r==4&&this.WSYNC++}saveState(){return{regs:this.regs.slice(0),offset:this.offset,dll:this.dll,dlstart:this.dlstart,dli:this.dli,h16:this.h16,h8:this.h8,indirect:this.indirect,writemode:this.writemode}}loadState(r){for(let t=0;t<32;t++)this.write(t,r.regs[t]|0);this.offset=r.offset|0,this.dll=r.dll|0,this.dlstart=r.dlstart|0,this.dli=!!r.dli,this.h16=!!r.h16,this.h8=!!r.h8,this.indirect=!!r.indirect,this.writemode=r.writemode|0}isDMAEnabled(){return(this.regs[28]&96)==64}getDLLStart(){return(this.regs[12]<<8)+this.regs[16]}getCharBaseAddress(){return(this.regs[20]<<8)+this.offset}setVBLANK(r){r?(this.regs[8]|=128,this.offset=-1,this.dll=this.getDLLStart(),this.dli=this.bus&&(this.bus.read(this.dll)&128)!=0):this.regs[8]&=-129}readDLLEntry(r){if(this.dll>=16384)return;let t=r.read(this.dll);this.offset=t&15,this.h16=(t&64)!=0,this.h8=(t&32)!=0,this.dlstart=(r.read(this.dll+1)<<8)+r.read(this.dll+2),this.dll=this.dll+3&65535,this.dli=(r.read(this.dll)&128)!=0}isHoley(r){return this.indirect?!1:!!(r&32768&&(this.h16&&r&4096||this.h8&&r&2048))}readDMA(r){return this.isHoley(r)?0:(this.cycles+=3,this.bus.read(r))}doDMA(r){this.bus=r,this.cycles=0;let t=this.pixels;if(t.fill(this.regs[0]),this.isDMAEnabled()){this.cycles+=this.offset==0?rt:et,this.offset<0&&this.readDLLEntry(r);let u=this.dlstart&65280,c=this.dlstart&255;do{let x=r.read(u+(c+0&511)),d=r.read(u+(c+1&511));if(d==0||u>=16384)break;let l=r.read(u+(c+2&511)),p=r.read(u+(c+3&511)),g=!1;if((d&31)==0){var e=p>>5,n=32-(p&31),i=r.read(u+(c+4&511));g=(d&32)!=0,c+=5,this.cycles+=10,this.writemode=d&128}else{var i=p,e=d>>5,n=32-(d&31);c+=4,this.cycles+=8}this.indirect=g;let y=x+((l+(g?0:this.offset)&255)<<8);i*=2;let m=this.regs[28],k=(m&3)+(this.writemode?4:0),A=(m&4)!=0,w=g&&(m&16)!=0;w&&(n*=2);for(var s=0;s<n;s++){let h=this.readDMA(w?y+(s>>1):y+s);if(g){let P=(this.regs[20]+this.offset<<8)+h;w&&s&1&&(P++,this.cycles-=3),h=this.readDMA(P)}switch(k){case 0:for(let a=0;a<4;a++){let f=h>>6&3;(f||A)&&(t[i]=t[i+1]=this.regs[(e<<2)+f]),h<<=2,i=i+2&511}break;case 3:for(let a=0;a<8;a++){let f=(h&128)>>6;(f||A)&&(t[i]=this.regs[(e<<2)+f]),h<<=1,i=i+1&511}break;case 4:for(let a=0;a<2;a++){let f=(h>>6&3)+(h&12);(f&3||A)&&(t[i]=t[i+1]=t[i+2]=t[i+3]=this.regs[((e&4)<<2)+f]),h<<=2,i=i+2&511}break;case 6:for(let a=0;a<4;a++){let f=(h&128)>>6|(h&8)>>3;(f||A)&&(t[i]=this.regs[(e<<2)+f]),h<<=1,i=i+1&511}break;case 2:for(let a=0;a<8;a++){let f=(h&128)>>6;f+=a&1?e&1:e>>1&1,(f||A)&&(t[i]=this.regs[(e<<2)+f]),h<<=1,i=i+1&511}break;case 7:let P=h;for(let a=0;a<4;a++){a==2&&(P<<=2);let f=(h&128)>>6,Q=e&4|P>>2&3;(f||A)&&(t[i]=this.regs[(Q<<2)+f]),h<<=1,i=i+1&511}break}}}while(this.cycles<C);this.offset-=1}return this.cycles}doInterrupt(){return this.dli&&this.offset<0?(this.dli=!1,!0):!1}static stateToLongString(r){let t="";return t+=R(r.regs,0,32),t+=`
DLL: $`+S((r.regs[12]<<8)+r.regs[16],4)+" @ $"+S(r.dll,4),t+=`
DL: $`+S(r.dlstart,4),t+=`
Offset: `+r.offset,t+=`
DLI? `+r.dli,t}},T=class extends K{constructor(){super();this.cpuFrequency=1789772;this.canvasWidth=320;this.numTotalScanlines=M;this.numVisibleScanlines=G;this.defaultROMSize=49152;this.cpuCyclesPerLine=113.5;this.sampleRate=X;this.ram=new Uint8Array(4096);this.regs6532=new Uint8Array(4);this.piatimer=0;this.timerinterval=1;this.tia=new I;this.maria=new L;this.lastFrameCycles=0;this.xtracyc=0;this.cpu=new Y,this.read=_([[8,13,15,t=>(this.xtracyc++,this.readInput(t))],[0,31,31,t=>(this.xtracyc++,this.tia.read(t))],[32,63,31,t=>this.maria.read(t)],[64,255,255,t=>this.ram[t+2048]],[256,319,255,t=>this.read(t)],[320,511,511,t=>this.ram[t+2048]],[640,767,127,t=>(this.xtracyc++,this.readPIA(t))],[6144,10239,65535,t=>this.ram[t-6144]],[10240,16383,2047,t=>this.read(t|8192)],[16384,65535,65535,t=>this.rom?this.rom[t-16384]:0],[0,65535,65535,t=>this.probe&&this.probe.logIllegal(t)]]),this.write=_([[21,26,31,(t,e)=>{this.xtracyc++,this.pokey1.setTIARegister(t,e)}],[0,31,31,(t,e)=>{this.xtracyc++,this.tia.write(t,e)}],[32,63,31,(t,e)=>{this.maria.write(t,e)}],[64,255,255,(t,e)=>{this.ram[t+2048]=e}],[256,319,255,(t,e)=>{this.write(t,e)}],[320,511,511,(t,e)=>{this.ram[t+2048]=e}],[640,767,127,(t,e)=>{this.xtracyc++,this.writePIA(t,e)}],[6144,10239,65535,(t,e)=>{this.ram[t-6144]=e}],[10240,16383,2047,(t,e)=>{this.write(t|8192,e)}],[49151,49151,65535,(t,e)=>{}],[0,65535,65535,(t,e)=>{this.probe&&this.probe.logIllegal(t)}]]),this.connectCPUMemoryBus(this),this.dmaBus=this.probeDMABus(this),this.handler=E(this.inputs,Z),this.pokey1=new H,this.audioadapter=new z(this.pokey1,q,X)}readConst(t){let e=this.probe;this.probe=null;let n=this.read(t);return this.probe=e,n}readInput(t){switch(t){case 12:return~this.inputs[8]&128;case 13:return~this.inputs[9]&128;default:return this.inputs[t]|0}}readPIA(t){switch(t){case 0:case 2:return this.inputs[t];case 1:case 3:return this.regs6532[t];case 4:return this.getPIATimerValue();default:return 0}}writePIA(t,e){switch(t){case 0:case 1:case 2:case 3:this.regs6532[t]=e;return;case 20:this.setPIATimer(e,0);return;case 21:this.setPIATimer(e,3);return;case 22:this.setPIATimer(e,6);return;case 23:this.setPIATimer(e,10);return;case 24:this.setPIATimer(e,6);return}}setPIATimer(t,e){this.piatimer=t+1<<e,this.timerinterval=e}getPIATimerValue(){let t=this.piatimer;return t>0?t>>this.timerinterval:t&255}advanceCPU(){var t=super.advanceCPU();return this.tickPIATimer(t),this.xtracyc&&(t+=this.xtracyc,this.tickClocks(this.xtracyc),this.xtracyc=0),t}tickClocks(t){this.probe.logClocks(t),this.tickPIATimer(t)}tickPIATimer(t){this.piatimer=Math.max(-256,this.piatimer-t)}advanceFrame(t){var e=this.pixels,n=0,i,s=0,u=0,c=0;this.lastFrameCycles=-1,this.probe.logNewFrame();for(var x=0;x<M;x++){this.scanline=x;var d=x<G;for(this.maria.setVBLANK(!d),this.maria.WSYNC=0;s<tt&&!this.maria.WSYNC;){if(t&&t()){t=null,x=999,this.lastFrameCycles=s;break}s+=this.advanceCPU()<<2,c++}if(d){let p=this.maria.doDMA(this.dmaBus);if(this.tickClocks(p>>2),s+=p,e){let m=(this.maria.regs[28]&128)!=0?15:255;for(var l=0;l<320;l++)e[n++]=J[this.maria.pixels[l]&m]}}for((d||x==M-1)&&this.maria.doInterrupt()&&(this.probe.logInterrupt(0),this.cpu.NMI());s<C;){if(this.maria.WSYNC){this.probe.logWait(0),this.tickClocks(C-s>>2),s=C;break}if(t&&t()){t=null,x=999,this.lastFrameCycles=s;break}s+=this.advanceCPU()<<2,c++}this.audio&&this.audioadapter.generate(this.audio),s-=C,u+=s,this.probe.logNewScanline()}return c}getRasterX(){return(this.lastFrameCycles+C)%C}getRasterY(){return this.scanline}getRasterCanvasPosition(){return{x:this.getRasterX(),y:this.getRasterY()}}loadROM(t){t.length==49280&&(t=t.slice(128)),this.rom=N(t,this.defaultROMSize,!0)}reset(){super.reset(),this.tia.reset(),this.maria.reset(),this.inputs.fill(0),this.inputs[b]=255,this.inputs[U]=11,this.setPIATimer(0,0)}readAddress(t){return this.read(t)|0}loadState(t){this.cpu.loadState(t.c),this.ram.set(t.ram),this.tia.loadState(t.tia),this.maria.loadState(t.maria),this.regs6532.set(t.regs6532),this.piatimer=t.pia.timer,this.timerinterval=t.pia.interval,this.loadControlsState(t)}saveState(){return{c:this.cpu.saveState(),ram:this.ram.slice(0),tia:this.tia.saveState(),maria:this.maria.saveState(),regs6532:this.regs6532.slice(0),inputs:this.inputs.slice(0),pia:{timer:this.piatimer,interval:this.timerinterval}}}loadControlsState(t){this.inputs.set(t.inputs)}saveControlsState(){return{inputs:this.inputs.slice(0)}}getDebugCategories(){return["CPU","Stack","TIA","MARIA"]}getDebugInfo(t,e){switch(t){case"TIA":return I.stateToLongString(e.tia);case"MARIA":return L.stateToLongString(e.maria)+`
Scanline: `+this.scanline}}getDebugDisplayLists(){let t={},e=this.maria.getDLLStart(),n=0;for(;n<240;){let i=this.readConst(e),s=i&15,u=(i&64)!=0,c=(i&32)!=0,x=(this.readConst(e+1)<<8)+this.readConst(e+2);e=e+3&65535;let d=(this.readConst(e)&128)!=0,l="DL $"+S(x,4)+" "+n+"-"+(n+s);u&&(l+=" H16"),c&&(l+=" H8"),d&&(l+=" DLI"),t[l]={$$:this._readDebugDisplayList(x)},n+=s+1}return t}_readDebugDisplayList(t){return()=>this.readDebugDisplayList(t)}readDebugDisplayList(t){let e=[],n=t&65280,i=t&255;do{let x=this.maria.regs[28],d=this.readConst(n+(i+0&511)),l=this.readConst(n+(i+1&511));if(l==0)break;let p=this.readConst(n+(i+2&511)),g=this.readConst(n+(i+3&511)),y=!1,m="",k,A=(x&3)+(l&128?4:0);if((l&31)==0){var s=g>>5,u=32-(g&31),c=this.readConst(n+(i+4&511));y=(l&32)!=0,k=l&128,i+=5}else{var c=g,s=l>>5,u=32-(l&31);i+=4}m+="X="+c+" W="+u+" P="+s,k&&(m+=" WM=1"),y&&(m+=" CHR=$"+S(this.maria.regs[20]+this.maria.offset&255)+"xx");let w=d+((p+(y?0:this.maria.offset)&255)<<8);m=" $"+S(w,4)+" "+m,m=["160A","?","320D","320A","160B","?","320B","320C"][A]+" "+m,e.push(m)}while(i<512);return e}},J=new Uint32Array(256);for(D=0;D<256;D++)J[D]=j(D);var D;var it=[{id:"sprites.dasm",name:"Sprites (ASM)",category:"Assembler"},{id:"wsync.c",name:"WSYNC",category:"CC65"},{id:"sprites.c",name:"Double Buffering"},{id:"scroll.c",name:"Scrolling"},{id:"test_conio.c78",name:"Conio Test",category:"cc7800"},{id:"example_small_sprites.c78",name:"Small Sprites"},{id:"example_vertical_scrolling.c78",name:"Vertical Scrolling"}],F=class extends ${constructor(){super(...arguments);this.getMemoryMap=function(){return{main:[{name:"TIA",start:0,size:32,type:"io"},{name:"MARIA",start:32,size:32,type:"io"},{name:"RAM (6166 Block 0)",start:64,size:192,type:"ram"},{name:"RAM (6166 Block 1)",start:320,size:192,type:"ram"},{name:"PIA",start:640,size:24,type:"io"},{name:"RAM",start:6144,size:4096,type:"ram"},{name:"Cartridge ROM",start:16384,size:49146,type:"rom"},{name:"CPU Vectors",start:65530,size:6,type:"rom"}]}}}newMachine(){return new T}getPresets(){return it}getDefaultExtensions(){return[...super.getDefaultExtensions(),".cc7800"]}readAddress(t){return this.machine.readConst(t)}getROMExtension(){return".a78"}getDebugTree(){let t=super.getDebugTree();return t.display_list=this.machine.getDebugDisplayLists(),t}getToolForFilename(t){return t.endsWith(".cc7800")||t.endsWith(".c78")?"cc7800":V(t)}};O.atari7800=F;
//# sourceMappingURL=atari7800-4C6PMPB3.js.map
//# sourceMappingURL=atari7800-N44NNLWK.js.map
File renamed without changes.
@@ -1,7 +1,7 @@
import{a as nt}from"./chunk-ULIQADK2.js";import{b as ht,c as ot,d as Y}from"./chunk-DYRHT6BM.js";import{A as rt,J as at,g as $,k as tt,m as et,r as st,x as it}from"./chunk-G4HBIXG4.js";import{K as S,V as O,W as i,X as Z,Z as J,a as F,aa as T,g as m,r as A}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var Dt=[0,25,17,9],Ot=[0,89,97,105],b=0,Tt=1,B=2,H=3,Mt=4,kt=5,vt=7,Ct=9,C=10,Lt=11,Pt=12,Kt=13,lt=14,Vt=15,L=15;var wt=13,Nt=106,Ut=105,Q=[0,0,8,10,8,16,8,16,8,4,4,2,1,2,1,1],Ft=[0,0,2,2,2,2,4,4,8,4,4,4,4,2,2,2],Yt=[0,0,0,0,0,1,0,1,0,0,2,1,0,0,0,0],ct=[0,0,1,1,2,2,2,2,8,4,4,2,2,2,2,1],M=class{constructor(e,t){this.regs=new Uint8Array(16);this.left=-1;this.right=-1;this.dma_enabled=!1;this.dliop=0;this.mode=0;this.jmp=!1;this.lms=!1;this.dlarg_lo=0;this.dlarg_hi=0;this.period=0;this.scanaddr=0;this.startaddr=0;this.pfbyte=0;this.ch=0;this.linesleft=0;this.yofs=0;this.isfirstline=!1;this.v=0;this.h=0;this.linebuf=new Uint8Array(48);this.dmaclock=0;this.dmaidx=0;this.output=0;this.dramrefresh=!1;this.in_vscroll=0;this.read=e,this.nmi=t}reset(){this.regs.fill(0),this.regs[lt]=0,this.regs[L]=127,this.regs[Pt]=0,this.regs[Kt]=255,this.setReg(b,0),this.h=this.v=0,this.startaddr=this.scanaddr=0,this.dmaclock=0}saveState(){return A(0,{},this)}loadState(e){A(0,this,e),this.setReg(b,e.regs[b])}static stateToLongString(e){let t="";return t+="H: "+F(e.h,3)+" V: "+F(e.v,3)+`
import{a as nt}from"./chunk-OJEFOAZC.js";import{b as ht,c as ot,d as Y}from"./chunk-DYRHT6BM.js";import{A as rt,J as at,g as $,k as tt,m as et,r as st,x as it}from"./chunk-4676AC7I.js";import{K as S,V as O,W as i,X as Z,Z as J,a as F,aa as T,g as m,r as A}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var Dt=[0,25,17,9],Ot=[0,89,97,105],b=0,Tt=1,B=2,H=3,Mt=4,kt=5,vt=7,Ct=9,C=10,Lt=11,Pt=12,Kt=13,lt=14,Vt=15,L=15;var wt=13,Nt=106,Ut=105,Q=[0,0,8,10,8,16,8,16,8,4,4,2,1,2,1,1],Ft=[0,0,2,2,2,2,4,4,8,4,4,4,4,2,2,2],Yt=[0,0,0,0,0,1,0,1,0,0,2,1,0,0,0,0],ct=[0,0,1,1,2,2,2,2,8,4,4,2,2,2,2,1],M=class{constructor(e,t){this.regs=new Uint8Array(16);this.left=-1;this.right=-1;this.dma_enabled=!1;this.dliop=0;this.mode=0;this.jmp=!1;this.lms=!1;this.dlarg_lo=0;this.dlarg_hi=0;this.period=0;this.scanaddr=0;this.startaddr=0;this.pfbyte=0;this.ch=0;this.linesleft=0;this.yofs=0;this.isfirstline=!1;this.v=0;this.h=0;this.linebuf=new Uint8Array(48);this.dmaclock=0;this.dmaidx=0;this.output=0;this.dramrefresh=!1;this.in_vscroll=0;this.read=e,this.nmi=t}reset(){this.regs.fill(0),this.regs[lt]=0,this.regs[L]=127,this.regs[Pt]=0,this.regs[Kt]=255,this.setReg(b,0),this.h=this.v=0,this.startaddr=this.scanaddr=0,this.dmaclock=0}saveState(){return A(0,{},this)}loadState(e){A(0,this,e),this.setReg(b,e.regs[b])}static stateToLongString(e){let t="";return t+="H: "+F(e.h,3)+" V: "+F(e.v,3)+`
`,t+="DLIOp: "+m(e.dliop,2)+" Lines: "+e.yofs+"/"+e.linesleft,t+=" DMA "+(e.dma_enabled?"ON ":"off"),e.dma_enabled&&(t+=" idx "+e.dmaidx+" clk "+m(e.dmaclock)),t+=`
`,t+="Addr: "+m(e.scanaddr,4)+`
`,t+=O(e.regs,0,16).replace("$00","Regs"),t}setReg(e,t){switch(e){case C:this.regs[C]=255;return;case Vt:this.regs[L]=31;return}this.regs[e]=t}readReg(e){switch(e){case L:return this.regs[e];case Lt:return this.v>>1;default:return 255}}processDLIEntry(){if(this.mode==0)this.linesleft=(this.dliop>>4&7)+1,this.dmaclock=0;else{this.linesleft=Q[this.mode],this.period=Ft[this.mode],this.jmp?(this.regs[B]=this.dlarg_lo,this.regs[H]=this.dlarg_hi,this.mode=this.period=0,this.dliop&64&&(this.linesleft=1,this.dma_enabled=!1),this.dmaclock=0):this.lms&&(this.scanaddr=this.dlarg_lo+(this.dlarg_hi<<8)),this.startaddr=this.scanaddr;let e=this.regs[b]&3,t=this.dliop&16?(this.regs[Mt]&15)>>1:0;this.dliop&16&&e<3&&e++,this.left=Dt[e]+t,this.right=Ot[e]+t;let s=this.regs[kt]&15;this.dliop&32^this.in_vscroll&&(this.in_vscroll?this.linesleft=s+1:(this.linesleft-=s,this.yofs+=s),this.linesleft&=15,this.in_vscroll^=32)}}nextLine(){this.linesleft>0&&(this.linesleft--,this.yofs++,this.isfirstline=!1,this.mode>=8&&this.linesleft&&(this.scanaddr=this.startaddr))}triggerNMI(e){this.regs[L]=e|31,this.regs[lt]&e&&this.nmi()}getDlistAddr(){return this.regs[B]+(this.regs[H]<<8)}nextInsn(){let e=this.getDlistAddr(),t=this.read(e);return e=e+1&1023|e&-1024,this.regs[B]=e&255,this.regs[H]=e>>8,t}nextScreen(){let e=this.read(this.scanaddr);return this.incScanAddr(),e}incScanAddr(){this.scanaddr=this.scanaddr+1&4095|this.scanaddr&-4096}dlDMAEnabled(){return this.regs[b]&32}isVisibleScanline(){return this.v>=8&&this.v<248}isPlayfieldDMAEnabled(){return this.dma_enabled&&!this.linesleft}isPlayerDMAEnabled(){return this.regs[b]&8}isMissileDMAEnabled(){return this.regs[b]&12}isWSYNC(){return this.regs[C]!=0}clockPulse(){let e=this.isWSYNC();if(!this.isVisibleScanline())this.doVBlank();else{switch(this.h){case 0:this.isMissileDMAEnabled()&&(this.doPlayerMissileDMA(3),e=!0);break;case 1:if(this.isPlayfieldDMAEnabled()){let t=this.nextInsn();this.jmp=(t&-65)==1,this.lms=(t&64)!=0&&(t&15)!=0,this.mode=t&15,this.dliop=t,this.yofs=0,this.isfirstline=!0,e=!0}break;case 2:case 3:case 4:case 5:this.isPlayerDMAEnabled()&&(this.doPlayerMissileDMA(this.h+2),e=!0);break;case 6:case 7:this.isPlayfieldDMAEnabled()&&this.isfirstline&&(this.jmp||this.lms)&&(this.h==6&&(this.dlarg_lo=this.nextInsn()),this.h==7&&(this.dlarg_hi=this.nextInsn()),e=!0);break;case 8:this.isfirstline&&this.processDLIEntry(),this.dliop&128&&this.linesleft==1&&this.triggerNMI(128);break;case 9:break;case 111:this.dma_enabled&&this.nextLine(),++this.v;break}if(this.output=0,this.mode>=2&&this.period){let t=this.h<=Ut;this.dmaclock=this.dmaclock<<1&511,this.dmaclock&1<<this.period&&(this.dmaclock|=1),this.h==this.left&&(this.dmaclock|=1,this.dmaidx=0),this.h==this.right&&(this.dmaclock&=-2,this.dmaidx++),this.dmaclock&1?(this.mode<8&&this.isfirstline&&(t?this.linebuf[this.dmaidx]=this.nextScreen():this.incScanAddr(),e=t),this.dmaidx++):this.dmaclock&8&&(this.ch=this.linebuf[this.dmaidx-4/this.period],t?this.readBitmapData():this.mode>=8&&this.incScanAddr(),e=t),this.output=this.h>=this.left+3&&this.h<=this.right+2?4:0}}return(this.h<wt||this.h>Nt)&&(this.output=2),this.incHorizCounter(),!e&&this.dramrefresh&&(this.read(0),this.dramrefresh=!1,e=!0),e}incHorizCounter(){switch(this.h){case 25:case 29:case 33:case 37:case 41:case 45:case 49:case 53:case 57:this.dramrefresh=!0;break;case 102:this.regs[C]=0;break;case 113:this.h=0;return}++this.h}doVBlank(){this.linesleft=this.mode=this.period=0,this.h==111&&this.v++,this.v==248&&this.h==0&&this.triggerNMI(64),this.v==262&&this.h==112&&(this.v=0),this.v==7&&this.h==113&&(this.dma_enabled=this.dlDMAEnabled()!=0),this.output=2,this.dmaclock=0}doPlayerMissileDMA(e){let t=this.regs[b]&16,s=this.regs[vt]<<8;t?(s&=63488,s|=e<<8,s|=this.v&255):(s&=64512,s|=e<<7,s|=this.v>>1),this.read(s)}readBitmapData(){let e=this.mode;if(e<8){let t=this.ch,s=this.yofs>>Yt[this.mode],r=s&7,n=this.regs[Ct];(e&14)==6?(t&=63,n&=254):(t&=127,n&=252);let h=(t<<3)+(n<<8);if((e&14)==2){let f=this.regs[Tt],l=e==3&&(t&96)==96;f&4?this.pfbyte=this.read(h+(r^7)):this.pfbyte=this.read(h+r),l&&s<2&&(this.pfbyte=0),!l&&s>7&&(this.pfbyte=0),this.ch&128&&(f&1&&(this.pfbyte=0),f&2&&(this.pfbyte^=255))}else this.pfbyte=this.read(h+r)}else this.pfbyte=this.nextScreen()}shiftout(){if(this.output==4)switch(this.mode){case 2:case 3:case 15:{let e=this.pfbyte>>7&1;return this.pfbyte<<=1,e?8:6}case 6:case 7:{let e=this.pfbyte>>7&1;return this.pfbyte<<=1,e?(this.ch>>6)+4:0}case 9:case 11:case 12:{let e=this.pfbyte>>7&1;return this.pfbyte<<=1,e?4:0}case 4:case 5:{let e=this.pfbyte>>6&3;return this.pfbyte<<=2,this.ch&128?[0,4,5,7][e]:[0,4,5,6][e]}case 8:case 10:case 13:case 14:{let e=this.pfbyte>>6&3;return this.pfbyte<<=2,[0,4,5,6][e]}}return this.output}};var o=0;var Bt=2;var ft=4;var dt=6;var g=8,Ht=9,Qt=10,zt=11,Xt=13,z=14,E=15;var qt=8,Wt=9,Gt=10,jt=13,I=14,P=15;var xt=128,ut=64,Zt=32,mt=16,gt=8;var Jt=1,_t=28,$t=114;var pt=511,bt=131071,x=0,u=1,_=2,c=3,y=114,te=15;var ee=8;var X,K;functi Line truncated
`,t+=O(e.regs,0,16),t+=`Read Registers:
`,t+=O(e.readregs,0,16),t}CASSETTE_IOLineStatus(){return 0}siocheck(){return((this.regs[o+_]==40||this.regs[o+_]==16||this.regs[o+_]==8||this.regs[o+_]==10)&&this.regs[o+c]==0||(this.regs[E]&120)==40)&&(this.regs[g]&40)==40}SIO_PutByte(e){console.log("SIO put byte",e)}SIO_GetByte(){return 0}};var ie=[i.VK_L,i.VK_J,i.VK_SEMICOLON,i.VK_F4,i.VK_F5,i.VK_K,i.VK_BACK_SLASH,i.VK_TILDE,i.VK_O,null,i.VK_P,i.VK_U,i.VK_ENTER,i.VK_I,i.VK_MINUS2,i.VK_EQUALS2,i.VK_V,i.VK_F7,i.VK_C,i.VK_F6,i.VK_F4,i.VK_B,i.VK_X,i.VK_Z,i.VK_4,null,i.VK_3,i.VK_6,i.VK_ESCAPE,i.VK_5,i.VK_2,i.VK_1,i.VK_COMMA,i.VK_SPACE,i.VK_PERIOD,i.VK_N,null,i.VK_M,i.VK_SLASH,null,i.VK_R,null,i.VK_E,i.VK_Y,i.VK_TAB,i.VK_T,i.VK_W,i.VK_Q,i.VK_9,null,i.VK_0,i.VK_7,i.VK_BACK_SPACE,i.VK_8,null,null,i.VK_F,i.VK_H,i.VK_D,null,i.VK_CAPS_LOCK,i.VK_G,i.VK_S,i.VK_A],re=J([[i.UP,0,1],[i.DOWN,0,2],[i.LEFT,0,4],[i.RIGHT,0,8],[{c:16,n:"Shift",plyr:0,button:0},2,1],[i.VK_F1,3,1],[i.VK_F2,3,2],[i.VK_F3,3,4]]),v=class extends st{constructor(){super();this.cpuFrequency=1789773;this.numTotalScanlines=262;this.cpuCyclesPerLine=114;this.canvasWidth=336;this.numVisibleScanlines=224;this.aspectRatio=this.canvasWidth/this.numVisibleScanlines*.857;this.firstVisibleScanline=16;this.firstVisibleClock=76;this.defaultROMSize=32768;this.overscan=!0;this.audioOversample=2;this.sampleRate=this.numTotalScanlines*60*this.audioOversample;this.run_address=-1;this.inputs=new Uint8Array(4);this.linergb=new Uint32Array(this.canvasWidth);this.lastdmabyte=0;this.keycode=0;this.cart_80=!1;this.cart_a0=!1;this.xexdata=null;this.keyboard_active=!0;this.d500=new Uint8Array(256);this.cpu=new et,this.ram=new Uint8Array(65536),this.bios=new Uint8Array(10240),this.bus=this.newBus(),this.connectCPUMemoryBus(this.bus),this.antic=new M(this.readDMA.bind(this),this.antic_nmi.bind(this)),this.gtia=new Y,this.irq_pokey=new k(this.pokey_irq.bind(this),()=>this.antic.h),this.audio_pokey=$(1),this.audioadapter=new tt(this.audio_pokey.pokey1,this.audioOversample,this.sampleRate),this.handler=Z(this.inputs,re,this.getKeyboardFunction(),!0)}newBus(){return{read:T([[0,32767,65535,t=>this.ram[t]],[32768,40959,65535,t=>this.cart_80?this.rom[t-32768]:this.ram[t]],[40960,49151,65535,t=>this.cart_a0?this.rom[t-32768]:this.ram[t]],[53248,53503,31,t=>this.gtia.readReg(t)],[53760,54015,15,t=>this.readPokey(t)],[54016,54271,15,t=>this.readPIA(t)],[54272,54527,15,t=>this.antic.readReg(t)],[54528,54783,255,t=>this.d500[t]],[55296,65535,65535,t=>this.bios[t-55296]]]),write:T([[0,49146,65535,(t,s)=>{this.ram[t]=s}],[49147,49151,65535,(t,s)=>{this.ram[t]=s,this.initCartA()}],[53248,53503,31,(t,s)=>{this.gtia.setReg(t,s)}],[53760,54015,15,(t,s)=>{this.writePokey(t,s)}],[54272,54527,15,(t,s)=>{this.antic.setReg(t,s)}],[54528,54783,255,(t,s)=>{this.writeMapper(t,s)}]])}}loadBIOS(t){this.bios.set(t)}reset(){super.reset(),this.antic.reset(),this.gtia.reset(),this.keycode=0}read(t){return this.bus.read(t)}readDMA(t){let s=this.bus.read(t);return this.probe.logDMARead(t,s),this.lastdmabyte=s,s}readConst(t){return t<53248||t>=54528?this.bus.read(t):255}write(t,s){this.bus.write(t,s)}readPokey(t){switch(t&15){case 9:return this.keycode&255;case 15:return~this.keycode>>6&4|~this.keycode>>3&8|18;default:return this.irq_pokey.read(t)}}readPIA(t){if(t==0||t==1)return~this.inputs[t]}writePokey(t,s){this.audio_pokey.pokey1.setRegister(t,s),this.irq_pokey.write(t,s)}startScanline(){this.gtia.sync();for(let t=0;t<4;t++)this.gtia.readregs[ht+t]=~this.inputs[2]>>t&1;this.gtia.readregs[ot]=~this.inputs[3]&7,this.audio&&this.audioadapter.generate(this.audio),this.irq_pokey.advanceScanline()}drawScanline(){let t=this.antic.v-this.firstVisibleScanline;t>=0&&t<this.numVisibleScanlines&&this.pixels.set(this.linergb,t*this.canvasWidth)}advanceCPU(){this.antic.clockPulse()?(this.antic.h<8&&this.gtia.updateGfx(this.antic.h-1,this.antic.v,this.lastdmabyte),this.antic.isWSYNC()&&this.probe.logWait(0),this.probe.logClocks(1)):super.advanceCPU();let t=this.antic.h*4-this.firstVisibleClock,s=()=>{this.gtia.clockPulse1(),this.linergb[t++]=this.gtia.rgb},r=()=>{this.gtia.clockPulse2(),this.linergb[t++]=this.gtia.rgb};this.gtia.clockPulse4(),this.antic.dliop&16&&this.antic.regs[4]&1?(t+=2,this.gtia.setBias(-1)):this.gtia.setBias(0);let n=ct[this.antic.mode],h=this.antic.h&1;return(n<8||h)&&(this.gtia.an=this.antic.shiftout()),s(),n==1&&(this.gtia.an=this.antic.shiftout()),r(),n<=2&&(this.gtia.an=this.antic.shiftout()),s(),n==1&&(this.gtia.an=this.antic.shiftout()),r(),1}loadState(t){this.loadControlsState(t),this.cpu.loadState(t.c),this.ram.set(t.ram),this.antic.loadState(t.antic),this.gtia.loadState(t.gtia),this.irq_pokey.loadState(t.pokey),this.lastdmabyte=t.lastdmabyte,this.cart_80=t.cart_80,this.cart_a0=t.cart_a0}saveState(){return{c:this.cpu.saveState(),ram:this.ram.slice(0),antic:this.antic.saveState(),gtia:this.gtia.saveState(),pokey:this.irq_pokey.saveState(),inputs:this.inputs.slice(0),lastdmabyte:this.lastdmabyte,keycode:this.keycode,cart_80:this.cart_80,cart Line truncated
//# sourceMappingURL=atari8-FYXJ46MZ.js.map
//# sourceMappingURL=atari8-CRLCJ4WS.js.map
File renamed without changes.
@@ -1,4 +1,4 @@
import{b as S}from"./chunk-3FIVEUG2.js";import{u as E}from"./chunk-3GET2PUK.js";import"./chunk-UG4IOEUD.js";import"./chunk-LNOKARBD.js";import"./chunk-A7SWO6EA.js";import"./chunk-OCVBA66T.js";import"./chunk-G4HBIXG4.js";import{B as c,K as f,T as d,U as v,a as g}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";function k(u){return u.value!=null}function y(u){return u.name!=null}function O(u){return u.op!=null&&u.left!=null&&u.right!=null}function N(u){return u.op!=null&&u.expr!=null}var m=class{randomize(){this.seed(Math.random()*2147483647,Math.random()*2147483647,Math.random()*2147483647,Math.random()*2147483647)}constructor(){(()=>{var r,e,i,n;this.seed=function(s,a,h,o){r=s,e=a,i=h,n=o},this.seedfloat=function(s){this.seed(s,s*4294,s*429496,s*4294967296),this.next(),this.next(),this.next()},this.next=function(){r>>>=0,e>>>=0,i>>>=0,n>>>=0;var s=r+e|0;return r=e^e>>>9,e=i+(i<<3)|0,i=i<<21|i>>>11,n=n+1|0,s=s+n|0,i=i+s|0,(s>>>0)/4294967296}})(),this.seedfloat(-1)}},I=1024*1024,l=class u{constructor(){this.margin=80;this.running=!1;this.exited=!0;this.trace=!1}load(t){let r=null,e=0;if(this.pc2label!=null){let s=this.curpc;for(;s>0&&(r=this.pc2label.get(s))==null;)s--;e=this.curpc-s,console.log("oldpc=",this.curpc,"restart @ label",r,"+",e)}this.program=t,this.opts=t.opts,this.opts.maxArrayElements||(this.opts.maxArrayElements=I),this.allstmts=t.stmts,this.label2pc=t.labels,this.label2dataptr={},this.pc2label=new Map,this.datums=[],this.subroutines={},this.builtins=this.getBuiltinFunctions();for(var i in t.labels){var n=t.labels[i];this.pc2label.set(n,i)}return this.allstmts.forEach((s,a)=>{this.curpc=a+1,this.compileStatement(s),s.command=="DATA"&&(this.label2dataptr[s.$loc.label]=this.datums.length,s.datums.forEach(h=>{this.curpc=s.$loc.offset,this.datums.push(h)}))}),this.label2pc[r]!=null?(this.curpc=this.label2pc[r]+e,!0):(this.curpc=0,!1)}reset(){this.curpc=0,this.dataptr=0,this.clearVars(),this.returnStack=[],this.column=0,this.running=!0,this.exited=!1}clearVars(){this.globals=this.vars={},this.arrays={},this.defs={},this.forLoops={},this.forLoopStack=[],this.whileLoops=[],this.rng=new m,this.opts&&this.opts.staticArrays&&this.allstmts.filter(t=>t.command=="DIM").forEach(t=>{t.args.forEach(r=>this.compileJS(this._DIM(r))())})}saveState(){return $.extend(!0,{},this)}loadState(t){$.extend(!0,this,t)}getBuiltinFunctions(){var t=this.program&&this.opts.validFunctions;t||(t=Object.getOwnPropertyNames(u.prototype).filter(i=>/^[A-Z]{3,}[$]?$/.test(i)));var r={};for(var e of t)this.supportsFunction(e)&&(r[e]=this[e].bind(this));return r}supportsFunction(t){return typeof this[t]=="function"}runtimeError(t){throw this.curpc--,new d(t,this.getCurrentSourceLocation())}dialectError(t){this.runtimeError(`I can't ${t} in this dialect of BASIC.`)}getLineForPC(t){var r=this.allstmts[t];return r&&r.$loc&&r.$loc.line}getLabelForPC(t){var r=this.allstmts[t];return r&&r.$loc&&r.$loc.label}getCurrentSourceLocation(){var t=this.getStatement();return t&&t.$loc}getCurrentLabel(){var t=this.getCurrentSourceLocation();return t&&t.label}getStatement(){return this.allstmts[this.curpc]}step(){if(!this.running)return!1;var t=this.getStatement();return t?(this.trace&&console.log(this.curpc,t,this.vars,Object.keys(this.arrays)),this.curpc++,this.executeStatement(t),this.running):(this.running=!1,this.exited=!0,!1)}compileStatement(t){if(t.$run==null)try{var r=this["do__"+t.command];r==null&&this.runtimeError(`I don't know how to "${t.command}".`);var e=r.bind(this)(t);this.trace&&console.log(e),t.$run=this.compileJS(e)}catch(i){throw e&&console.log(e),i}}compileJS(t){return new Function(t).bind(this)}executeStatement(t){this.compileStatement(t),t.$run()}skipToEOL(){do this.curpc++;while(this.curpc<this.allstmts.length&&!this.pc2label.get(this.curpc))}skipToElse(){for(;this.curpc<this.allstmts.length;){var t=this.allstmts[this.curpc].command;if(t=="ELSE"){this.curpc++;break}else if(t=="IF")return this.skipToEOL();if(this.curpc++,this.pc2label.get(this.curpc))break}}skipToEOF(){this.curpc=this.allstmts.length}skipToAfterNext(t){for(var r=this.curpc;r<this.allstmts.length;){var e=this.allstmts[r];if(e.command=="NEXT"){var i=e.lexpr;if(i&&i.name==t){this.curpc=r+1;return}}r++}this.runtimeError(`I couldn't find a matching NEXT ${t} to skip this for loop.`)}skipToAfterWend(){for(var t=this.curpc-1,r=0;t<this.allstmts.length;){var e=this.allstmts[t];if(e.command=="WHILE")r++;else if(e.command=="WEND"&&(r--,r==0)){this.curpc=t+1;return}t++}this.runtimeError("I couldn't find a matching WEND for this WHILE.")}gotoLabel(t){var r=this.label2pc[t];r>=0?this.curpc=r:this.runtimeError(`I tried to go to the label "${t}" but couldn't find it.`)}newLocalScope(){this.vars=Object.create(this.vars)}popLocalScope(){this.vars!==this.globals&&(this.vars=Object.getPrototypeOf(this.vars))}gosubLabel(t){this.returnStack.length>32767&&this.runtimeError("I did too many GOSUBs without a RETURN."),this.returnStack.push(this.curpc),this.gotoLabel(t)}returnFrLine truncated
import{b as S}from"./chunk-3FIVEUG2.js";import{w as E}from"./chunk-KW4IDSDB.js";import"./chunk-UG4IOEUD.js";import"./chunk-LNOKARBD.js";import"./chunk-A7SWO6EA.js";import"./chunk-YLE5X5XS.js";import"./chunk-4676AC7I.js";import{B as c,K as f,T as d,U as v,a as g}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";function k(u){return u.value!=null}function y(u){return u.name!=null}function O(u){return u.op!=null&&u.left!=null&&u.right!=null}function N(u){return u.op!=null&&u.expr!=null}var m=class{randomize(){this.seed(Math.random()*2147483647,Math.random()*2147483647,Math.random()*2147483647,Math.random()*2147483647)}constructor(){(()=>{var r,e,i,n;this.seed=function(s,a,h,o){r=s,e=a,i=h,n=o},this.seedfloat=function(s){this.seed(s,s*4294,s*429496,s*4294967296),this.next(),this.next(),this.next()},this.next=function(){r>>>=0,e>>>=0,i>>>=0,n>>>=0;var s=r+e|0;return r=e^e>>>9,e=i+(i<<3)|0,i=i<<21|i>>>11,n=n+1|0,s=s+n|0,i=i+s|0,(s>>>0)/4294967296}})(),this.seedfloat(-1)}},I=1024*1024,l=class u{constructor(){this.margin=80;this.running=!1;this.exited=!0;this.trace=!1}load(t){let r=null,e=0;if(this.pc2label!=null){let s=this.curpc;for(;s>0&&(r=this.pc2label.get(s))==null;)s--;e=this.curpc-s,console.log("oldpc=",this.curpc,"restart @ label",r,"+",e)}this.program=t,this.opts=t.opts,this.opts.maxArrayElements||(this.opts.maxArrayElements=I),this.allstmts=t.stmts,this.label2pc=t.labels,this.label2dataptr={},this.pc2label=new Map,this.datums=[],this.subroutines={},this.builtins=this.getBuiltinFunctions();for(var i in t.labels){var n=t.labels[i];this.pc2label.set(n,i)}return this.allstmts.forEach((s,a)=>{this.curpc=a+1,this.compileStatement(s),s.command=="DATA"&&(this.label2dataptr[s.$loc.label]=this.datums.length,s.datums.forEach(h=>{this.curpc=s.$loc.offset,this.datums.push(h)}))}),this.label2pc[r]!=null?(this.curpc=this.label2pc[r]+e,!0):(this.curpc=0,!1)}reset(){this.curpc=0,this.dataptr=0,this.clearVars(),this.returnStack=[],this.column=0,this.running=!0,this.exited=!1}clearVars(){this.globals=this.vars={},this.arrays={},this.defs={},this.forLoops={},this.forLoopStack=[],this.whileLoops=[],this.rng=new m,this.opts&&this.opts.staticArrays&&this.allstmts.filter(t=>t.command=="DIM").forEach(t=>{t.args.forEach(r=>this.compileJS(this._DIM(r))())})}saveState(){return $.extend(!0,{},this)}loadState(t){$.extend(!0,this,t)}getBuiltinFunctions(){var t=this.program&&this.opts.validFunctions;t||(t=Object.getOwnPropertyNames(u.prototype).filter(i=>/^[A-Z]{3,}[$]?$/.test(i)));var r={};for(var e of t)this.supportsFunction(e)&&(r[e]=this[e].bind(this));return r}supportsFunction(t){return typeof this[t]=="function"}runtimeError(t){throw this.curpc--,new d(t,this.getCurrentSourceLocation())}dialectError(t){this.runtimeError(`I can't ${t} in this dialect of BASIC.`)}getLineForPC(t){var r=this.allstmts[t];return r&&r.$loc&&r.$loc.line}getLabelForPC(t){var r=this.allstmts[t];return r&&r.$loc&&r.$loc.label}getCurrentSourceLocation(){var t=this.getStatement();return t&&t.$loc}getCurrentLabel(){var t=this.getCurrentSourceLocation();return t&&t.label}getStatement(){return this.allstmts[this.curpc]}step(){if(!this.running)return!1;var t=this.getStatement();return t?(this.trace&&console.log(this.curpc,t,this.vars,Object.keys(this.arrays)),this.curpc++,this.executeStatement(t),this.running):(this.running=!1,this.exited=!0,!1)}compileStatement(t){if(t.$run==null)try{var r=this["do__"+t.command];r==null&&this.runtimeError(`I don't know how to "${t.command}".`);var e=r.bind(this)(t);this.trace&&console.log(e),t.$run=this.compileJS(e)}catch(i){throw e&&console.log(e),i}}compileJS(t){return new Function(t).bind(this)}executeStatement(t){this.compileStatement(t),t.$run()}skipToEOL(){do this.curpc++;while(this.curpc<this.allstmts.length&&!this.pc2label.get(this.curpc))}skipToElse(){for(;this.curpc<this.allstmts.length;){var t=this.allstmts[this.curpc].command;if(t=="ELSE"){this.curpc++;break}else if(t=="IF")return this.skipToEOL();if(this.curpc++,this.pc2label.get(this.curpc))break}}skipToEOF(){this.curpc=this.allstmts.length}skipToAfterNext(t){for(var r=this.curpc;r<this.allstmts.length;){var e=this.allstmts[r];if(e.command=="NEXT"){var i=e.lexpr;if(i&&i.name==t){this.curpc=r+1;return}}r++}this.runtimeError(`I couldn't find a matching NEXT ${t} to skip this for loop.`)}skipToAfterWend(){for(var t=this.curpc-1,r=0;t<this.allstmts.length;){var e=this.allstmts[t];if(e.command=="WHILE")r++;else if(e.command=="WEND"&&(r--,r==0)){this.curpc=t+1;return}t++}this.runtimeError("I couldn't find a matching WEND for this WHILE.")}gotoLabel(t){var r=this.label2pc[t];r>=0?this.curpc=r:this.runtimeError(`I tried to go to the label "${t}" but couldn't find it.`)}newLocalScope(){this.vars=Object.create(this.vars)}popLocalScope(){this.vars!==this.globals&&(this.vars=Object.getPrototypeOf(this.vars))}gosubLabel(t){this.returnStack.length>32767&&this.runtimeError("I did too many GOSUBs without a RETURN."),this.returnStack.push(this.curpc),this.gotoLabel(t)}returnFrLine truncated
`)this.column=0,e=t;else if(t==" "){var n=this.opts.printZoneLength,s=Math.floor(this.column/n),a=(s+1)*this.opts.printZoneLength;a+n>this.margin?(this.column=0,e=`
`):e=this.TAB(a)}else e=`${t}`;return e}float2str(t,r){var e=t.toString().toUpperCase();if(r>0){for(var i=r;e.length>r;)e=t.toPrecision(i--);e.startsWith("0.")?e=e.substr(1):e.startsWith("-0.")&&(e="-"+e.substr(2))}return e}printExpr(t){var r=this.valueToString(t,this.opts.numericPadding);this.column+=r.length,this.print(r)}print(t){console.log(t)}async input(t,r){return{line:"",vals:[]}}resume(){}expr2js(t,r){if(r||(r={}),k(t))return JSON.stringify(t.value);if(y(t)){if(!t.args&&r.locals&&r.locals.indexOf(t.name)>=0)return t.name;{r.isconst&&this.runtimeError("I expected a constant value here.");var e="",i=JSON.stringify(t.name);let h=t.args?t.args.map(o=>this.expr2js(o,r)).join(", "):[];return t.name.startsWith("FN")?e+=`this.getDef(${i})(${h})`:this.builtins[t.name]?(this.checkFuncArgs(t,this.builtins[t.name]),e+=`this.builtins.${t.name}(${h})`):t.args?this.opts.arraysContainChars&&t.name.endsWith("$")?e+=`this.getStringSlice(this.vars.${t.name}, ${h})`:e+=`this.arrayGet(${i}, ${h})`:e+=`this.vars.${t.name}`,r.novalid?e:`this.checkValue(${e}, ${i})`}}else if(O(t)){var n=this.expr2js(t.left,r),s=this.expr2js(t.right,r);return`this.${t.op}(${n}, ${s})`}else if(N(t)){var a=this.expr2js(t.expr,r);return`this.${t.op}(${a})`}}assign2js(t,r){r||(r={});var e="";return(t.name.startsWith("FN")||this.builtins[t.name])&&this.runtimeError("I can't call a function here."),t.args?this.opts.arraysContainChars&&t.name.endsWith("$")?this.runtimeError("I can't set array slices via this command yet."):e+=this.array2js(t,r):e=`this.globals.${t.name}`,e}array2js(t,r){var e=JSON.stringify(t.name),i=t.args||[];return this.expr2js(t,{novalid:!0})+`;this.getArray(${e}, ${i.length})`+i.map(n=>"[this.ROUND("+this.expr2js(n,r)+")]").join("")}checkFuncArgs(t,r){var e=t.args?t.args.length:0;t.name=="RND"&&e==0||t.name=="MID$"&&e==2||t.name=="INSTR"&&e==2||r.length!=e&&this.runtimeError(`I expected ${r.length} arguments for the ${t.name} function, but I got ${e}.`)}startForLoop(t,r,e,i,n){var s=this.curpc-1,a=this.pc2label.get(s);i||(i=1),this.vars[t]=r,this.trace&&console.log(`FOR ${t} = ${r} TO ${e} STEP ${i}`);var h=()=>i>=0?this.vars[t]>e:this.vars[t]<e;this.opts.testInitialFor&&h()&&(n!=null?this.curpc=n+1:this.skipToAfterNext(t)),this.forLoopStack[t]!=null&&(this.forLoopStack=this.forLoopStack.filter(o=>o==t)),this.forLoopStack.push(t),this.forLoops[t]={$next:o=>{o&&t!=o&&this.runtimeError(`I executed NEXT "${o}", but the last FOR was for "${t}".`),this.vars[t]+=i;var b=h();b?(this.forLoopStack.pop(),delete this.forLoops[t]):this.curpc=(a!=null&&this.label2pc[a]||s)+1,this.trace&&console.log(`NEXT ${t}: ${this.vars[t]} TO ${e} STEP ${i} DONE=${b}`)}}}nextForLoop(t){var r=this.forLoops[t||this.opts.optionalNextVar&&this.forLoopStack[this.forLoopStack.length-1]];r||this.runtimeError("I couldn't find a matching FOR for this NEXT."),r.$next(t)}whileLoop(t){t?this.whileLoops.push(this.curpc-1):this.skipToAfterWend()}nextWhileLoop(){var t=this.whileLoops.pop();t==null?this.runtimeError("I couldn't find a matching WHILE for this WEND."):this.curpc=t}assign(t,r,e){return e&&t.endsWith("$")?this.checkValue(this.convert(t,r),t):t.endsWith("$")?this.convertToString(r,t):this.convertToNumber(r,t)}convert(t,r){return t.endsWith("$")?r==null?"":r.toString():typeof r=="number"?r:parseFloat(r+"")}convertToString(t,r){if(typeof t!="string")this.runtimeError(`I can't convert ${t} to a string.`);else return t}convertToNumber(t,r){if(typeof t!="number")this.runtimeError(`I can't convert ${t} to a number.`);else return this.checkNum(t)}dimArray(t,...r){if(r=r.map(Math.round),this.arrays[t]!=null){if(this.opts.staticArrays)return;this.runtimeError(`I already dimensioned this array (${t}) earlier.`)}var e=this.getTotalArrayLength(r);e>this.opts.maxArrayElements&&this.runtimeError("I can't create an array with this many elements.");var i=t.endsWith("$"),n=i?Array:Float64Array;if(r.length==1)this.arrays[t]=new n(r[0]+1);else if(r.length==2){this.arrays[t]=new Array(r[0]+1);for(var s=0;s<r[0]+1;s++)this.arrays[t][s]=new n(r[1]+1)}else this.runtimeError("I only support arrays of one or two dimensions.")}getTotalArrayLength(t){for(var r=1,e=0;e<t.length;e++)t[e]<this.opts.defaultArrayBase&&this.runtimeError(`I can't create an array with a dimension less than ${this.opts.defaultArrayBase}.`),r*=t[e];return r}getArray(t,r){return this.arrays[t]||(this.opts.defaultArraySize==0&&this.dialectError("automatically declare arrays without a DIM statement (or did you mean to call a function?)"),r==1?this.dimArray(t,this.opts.defaultArraySize-1):r==2?this.dimArray(t,this.opts.defaultArraySize-1,this.opts.defaultArraySize-1):this.runtimeError("I only support arrays of one or two dimensions.")),this.arrays[t]}arrayGet(t,...r){var e=this.getArray(t,r.length);r=r.map(this.ROUND.bind(this));for(var i=e,n=0;n<r.length;n++){var s=r[n];c(i)||this.runtimeError(`I tried to lookup ${t}(${r}) but used too many dimensions.`),s<this.opts.defaultArrayBase&&this.runtimeError(`I triedLine truncated
var value = this.convert(${JSON.stringify(n.name)}, response.vals[${s}]);
@@ -34,4 +34,4 @@ import{b as S}from"./chunk-3FIVEUG2.js";import{u as E}from"./chunk-3GET2PUK.js";
`),this.tty.addtext("*** END OF PROGRAM ***",1),this.tty.showPrintHead(!1)}loadROM(t,r){var e=this.runtime.exited;this.program=r;var i=this.runtime.load(r);this.tty.uppercaseOnly=!0,(!this.hotReload||e||!i)&&this.reset()}getROMExtension(){return".json"}reset(){this.tty.clear(),this.runtime.reset(),this.clock=0,this.transcript=[]}pause(){this.timer.stop()}resume(){this.isBlocked()||(this.animcount=0,this.timer.start())}isBlocked(){return this.tty.waitingfor!=null||this.runtime.exited}isRunning(){return this.timer.isRunning()}getDefaultExtensions(){return[".bas"]}getToolForFilename(){return"basic"}getPresets(){return L}getPC(){return this.runtime.curpc}getSP(){return 4096-this.runtime.returnStack.length}isStable(){return!0}getCPUState(){return{PC:this.getPC(),SP:this.getSP()}}saveState(){return{c:this.getCPUState(),rt:this.runtime.saveState()}}loadState(t){this.runtime.loadState(t)}getDebugTree(){return{CurrentLine:this.runtime.getCurrentLabel(),Variables:this.runtime.vars,Arrays:this.runtime.arrays,Functions:this.runtime.defs,ForLoops:this.runtime.forLoops,WhileLoops:this.runtime.whileLoops,ReturnStack:this.runtime.returnStack,NextDatum:this.runtime.datums[this.runtime.dataptr],Clock:this.clock,Options:this.runtime.opts,Internals:this.runtime}}inspect(t){let r=this.runtime.vars[t];if(r!=null)return`${t} = ${r}`}showHelp(){return"https://8bitworkshop.com/docs/platforms/basic/"}getDebugCategories(){return["Variables"]}getDebugInfo(t,r){switch(t){case"Variables":return this.varsToLongString()}}varsToLongString(){var t="",r=Object.keys(this.runtime.vars);r.sort();for(var e of r){var i=this.runtime.vars[e],n=JSON.stringify(i);n.length>24&&(n=`${n.substr(0,24)}...(${n.length})`),t+=g(e,3)+" = "+n+`
`}return t}setupDebug(t){this.onBreakpointHit=t}clearDebug(){this.onBreakpointHit=null,this.debugTrap=null}checkDebugTrap(){return this.debugTrap&&this.debugTrap()?(this.pause(),this.break(),!0):!1}break(){this.onBreakpointHit&&this.onBreakpointHit(this.saveState())}step(){var t=this.clock;this.debugTrap=()=>this.clock>t,this.resume()}stepOver(){var t=this.runtime.getStatement();if(t&&(t.command=="GOSUB"||t.command=="ONGOSUB")){var r=this.getPC()+1;this.runEval(()=>this.getPC()==r)}else this.step()}hasCustomStepOver(){return!0}runUntilReturn(){var t=this.getSP();this.runEval(()=>this.getSP()>t)}runEval(t){this.debugTrap=()=>t(this.getCPUState()),this.resume()}restartAtPC(t){return t=Math.round(t),t>=0&&t<this.runtime.allstmts.length?(this.runtime.curpc=t,this.tty.cancelinput(),this.clock=0,!0):!1}readFile(t){return this.internalFiles[t]}writeFile(t,r){return this.internalFiles[t]=r,!0}didExit(){this.internalFiles["stdout.txt"]=this.transcript.join(""),E()}};f.basic=p;
//# sourceMappingURL=basic-7UKD4ULU.js.map
//# sourceMappingURL=basic-VCWOI5LB.js.map
File renamed without changes.
+2 -2
View File
@@ -1,4 +1,4 @@
import{a as M}from"./chunk-ULIQADK2.js";import{A as _,J as y,s as b,x as S}from"./chunk-G4HBIXG4.js";import{K as n,V as u,a as x,g as a,v as d}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var m=class extends b{constructor(){super(...arguments);this.numTotalScanlines=312;this.cpuCyclesPerLine=63;this.joymask0=0;this.joymask1=0;this.lightpen_x=0;this.lightpen_y=0}loadBIOS(e){super.loadBIOS(e)}reset(){super.reset();for(var e=0;e<128;e++)this.exports.machine_key_up(this.sys,e);if(this.romptr&&this.romlen){if(this.exports.machine_load_rom(this.sys,this.romptr,this.romlen),this.prgstart=this.romarr[0]+(this.romarr[1]<<8),this.prgstart==2049)if(this.romarr[6]==158){for(var i=0,t=0;t<5;t++){var e=this.romarr[7+t];if(e==155||e==0)break;i=i*10+(e&15)}this.prgstart=i,console.log("SYS",i,a(i))}else this.prgstart=this.romarr[2]+(this.romarr[3]<<8)+2,console.log("RUN",this.prgstart,a(this.prgstart));if(this.prgstart<32768){this.exports.machine_exec(this.sys,25e4);for(var s="\rSYS "+this.prgstart,t=0;t<s.length;t++){var r=s.charCodeAt(t);this.exports.machine_exec(this.sys,3e4),this.exports.machine_key_down(this.sys,r),this.exports.machine_exec(this.sys,3e4),this.exports.machine_key_up(this.sys,r),this.exports.machine_exec(this.sys,1)}this.exports.machine_key_down(this.sys,13),this.exports.machine_exec(this.sys,1);for(var t=0;t<1e5&&this.getPC()!=this.prgstart;t++)this.exports.machine_tick(this.sys);this.exports.machine_key_up(this.sys,13),this.exports.machine_exec(this.sys,1)}else{this.exports.machine_exec(this.sys,100);for(var o=this.romarr[4]+this.romarr[5]*256,t=0;t<15e4&&this.getPC()!=o;t++)this.exports.machine_tick(this.sys)}}}advanceFrame(e){var i=this.getRasterY(),t=Math.floor((this.numTotalScanlines-i)*19656/this.numTotalScanlines),s=this.probe!=null;return s&&this.exports.machine_reset_probe_buffer(),t=super.advanceFrameClock(e,t),s&&this.copyProbeData(),t}getCPUState(){this.exports.machine_save_cpu_state(this.sys,this.cpustateptr);var e=this.cpustatearr,i=e[2]+(e[3]<<8);return{PC:i,SP:e[9],A:e[6],X:e[7],Y:e[8],C:e[10]&1,Z:e[10]&2,I:e[10]&4,D:e[10]&8,V:e[10]&64,N:e[10]&128,o:this.readConst(i),R:e[19]!=55}}saveState(){this.exports.machine_save_state(this.sys,this.stateptr);let e=this.getDebugStateOffset(1),i=this.getDebugStateOffset(2),t=this.getDebugStateOffset(3),s=this.getDebugStateOffset(4),r=this.getDebugStateOffset(5),o=this.getDebugStateOffset(9);return{c:this.getCPUState(),state:this.statearr.slice(0),ram:this.statearr.slice(r,r+65536),cia1:this.statearr.slice(e,e+64),cia2:this.statearr.slice(i,i+64),vic:this.statearr.slice(t+1,t+1+64),sid:this.statearr.slice(s,s+32),pla:this.statearr.slice(o,o+16),joymask0:this.joymask0,joymask1:this.joymask1}}loadState(e){this.statearr.set(e.state),this.exports.machine_load_state(this.sys,this.stateptr),this.joymask0=e.joymask0|0,this.joymask1=e.joymask1|0,this.exports.c64_joystick(this.sys,this.joymask0,this.joymask1)}getVideoParams(){return{width:392,height:272,overscan:!0,videoFrequency:50,aspect:392/272*.9365}}setKeyInput(e,i,t){if(!(e==16||e==17||e==18||e==224)){var s=0,r=0;switch(e){case 32:s=r=16;break;case 37:e=8,s=r=4;break;case 38:e=11,s=r=1;break;case 39:e=9,s=r=8;break;case 40:e=10,s=r=2;break;case 113:e=241;break;case 115:e=243;break;case 119:e=245;break;case 121:e=247;break;case 188:e=t&2?60:46;break;case 190:e=t&2?62:44;break;case 191:e=t&2?63:47;break;case 222:e=t&2?34:39;break;case 219:e=t&2?123:91;break;case 221:e=t&2?125:93;break;case 48:t&2&&(e=41);break;case 49:t&2&&(e=33);break;case 50:t&2&&(e=64);break;case 51:t&2&&(e=35);break;case 52:t&2&&(e=36);break;case 53:t&2&&(e=37);break;case 54:t&2&&(e=94);break;case 55:t&2&&(e=38);break;case 56:t&2&&(e=42);break;case 57:t&2&&(e=40);break;case 59:t&2&&(e=58);break;case 61:t&2&&(e=43);break;case 173:e=t&2?95:45;break}t&1?(this.exports.machine_key_down(this.sys,e),this.joymask0|=s,this.joymask1|=r):t&64&&(this.exports.machine_key_up(this.sys,e),this.joymask0&=~s,this.joymask1&=~r),this.exports.c64_joystick(this.sys,this.joymask0,this.joymask1)}}getRasterX(){return this.statearr[244]}getRasterY(){return this.exports.machine_get_raster_line(this.sys)}getRasterCanvasPosition(){return{x:this.getRasterX()*392/63,y:this.getRasterY()-14}}getDebugStateOffset(e){var i=this.exports.machine_get_debug_pointer(this.sys,e);return i-this.sys}getDebugCategories(){return["CPU","ZPRAM","Stack","PLA","CIA","VIC","SID"]}getDebugInfo(e,i){switch(e){case"PLA":{let t="",s=i.pla[0],r=i.pla[3];return t+=`$0000 - $9FFF RAM
import{a as M}from"./chunk-OJEFOAZC.js";import{A as _,J as y,s as b,x as S}from"./chunk-4676AC7I.js";import{K as n,V as u,a as x,g as a,v as d}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var m=class extends b{constructor(){super(...arguments);this.numTotalScanlines=312;this.cpuCyclesPerLine=63;this.joymask0=0;this.joymask1=0;this.lightpen_x=0;this.lightpen_y=0}loadBIOS(e){super.loadBIOS(e)}reset(){super.reset();for(var e=0;e<128;e++)this.exports.machine_key_up(this.sys,e);if(this.romptr&&this.romlen){if(this.exports.machine_load_rom(this.sys,this.romptr,this.romlen),this.prgstart=this.romarr[0]+(this.romarr[1]<<8),this.prgstart==2049)if(this.romarr[6]==158){for(var i=0,t=0;t<5;t++){var e=this.romarr[7+t];if(e==155||e==0)break;i=i*10+(e&15)}this.prgstart=i,console.log("SYS",i,a(i))}else this.prgstart=this.romarr[2]+(this.romarr[3]<<8)+2,console.log("RUN",this.prgstart,a(this.prgstart));if(this.prgstart<32768){this.exports.machine_exec(this.sys,25e4);for(var s="\rSYS "+this.prgstart,t=0;t<s.length;t++){var r=s.charCodeAt(t);this.exports.machine_exec(this.sys,3e4),this.exports.machine_key_down(this.sys,r),this.exports.machine_exec(this.sys,3e4),this.exports.machine_key_up(this.sys,r),this.exports.machine_exec(this.sys,1)}this.exports.machine_key_down(this.sys,13),this.exports.machine_exec(this.sys,1);for(var t=0;t<1e5&&this.getPC()!=this.prgstart;t++)this.exports.machine_tick(this.sys);this.exports.machine_key_up(this.sys,13),this.exports.machine_exec(this.sys,1)}else{this.exports.machine_exec(this.sys,100);for(var o=this.romarr[4]+this.romarr[5]*256,t=0;t<15e4&&this.getPC()!=o;t++)this.exports.machine_tick(this.sys)}}}advanceFrame(e){var i=this.getRasterY(),t=Math.floor((this.numTotalScanlines-i)*19656/this.numTotalScanlines),s=this.probe!=null;return s&&this.exports.machine_reset_probe_buffer(),t=super.advanceFrameClock(e,t),s&&this.copyProbeData(),t}getCPUState(){this.exports.machine_save_cpu_state(this.sys,this.cpustateptr);var e=this.cpustatearr,i=e[2]+(e[3]<<8);return{PC:i,SP:e[9],A:e[6],X:e[7],Y:e[8],C:e[10]&1,Z:e[10]&2,I:e[10]&4,D:e[10]&8,V:e[10]&64,N:e[10]&128,o:this.readConst(i),R:e[19]!=55}}saveState(){this.exports.machine_save_state(this.sys,this.stateptr);let e=this.getDebugStateOffset(1),i=this.getDebugStateOffset(2),t=this.getDebugStateOffset(3),s=this.getDebugStateOffset(4),r=this.getDebugStateOffset(5),o=this.getDebugStateOffset(9);return{c:this.getCPUState(),state:this.statearr.slice(0),ram:this.statearr.slice(r,r+65536),cia1:this.statearr.slice(e,e+64),cia2:this.statearr.slice(i,i+64),vic:this.statearr.slice(t+1,t+1+64),sid:this.statearr.slice(s,s+32),pla:this.statearr.slice(o,o+16),joymask0:this.joymask0,joymask1:this.joymask1}}loadState(e){this.statearr.set(e.state),this.exports.machine_load_state(this.sys,this.stateptr),this.joymask0=e.joymask0|0,this.joymask1=e.joymask1|0,this.exports.c64_joystick(this.sys,this.joymask0,this.joymask1)}getVideoParams(){return{width:392,height:272,overscan:!0,videoFrequency:50,aspect:392/272*.9365}}setKeyInput(e,i,t){if(!(e==16||e==17||e==18||e==224)){var s=0,r=0;switch(e){case 32:s=r=16;break;case 37:e=8,s=r=4;break;case 38:e=11,s=r=1;break;case 39:e=9,s=r=8;break;case 40:e=10,s=r=2;break;case 113:e=241;break;case 115:e=243;break;case 119:e=245;break;case 121:e=247;break;case 188:e=t&2?60:46;break;case 190:e=t&2?62:44;break;case 191:e=t&2?63:47;break;case 222:e=t&2?34:39;break;case 219:e=t&2?123:91;break;case 221:e=t&2?125:93;break;case 48:t&2&&(e=41);break;case 49:t&2&&(e=33);break;case 50:t&2&&(e=64);break;case 51:t&2&&(e=35);break;case 52:t&2&&(e=36);break;case 53:t&2&&(e=37);break;case 54:t&2&&(e=94);break;case 55:t&2&&(e=38);break;case 56:t&2&&(e=42);break;case 57:t&2&&(e=40);break;case 59:t&2&&(e=58);break;case 61:t&2&&(e=43);break;case 173:e=t&2?95:45;break}t&1?(this.exports.machine_key_down(this.sys,e),this.joymask0|=s,this.joymask1|=r):t&64&&(this.exports.machine_key_up(this.sys,e),this.joymask0&=~s,this.joymask1&=~r),this.exports.c64_joystick(this.sys,this.joymask0,this.joymask1)}}getRasterX(){return this.statearr[244]}getRasterY(){return this.exports.machine_get_raster_line(this.sys)}getRasterCanvasPosition(){return{x:this.getRasterX()*392/63,y:this.getRasterY()-14}}getDebugStateOffset(e){var i=this.exports.machine_get_debug_pointer(this.sys,e);return i-this.sys}getDebugCategories(){return["CPU","ZPRAM","Stack","PLA","CIA","VIC","SID"]}getDebugInfo(e,i){switch(e){case"PLA":{let t="",s=i.pla[0],r=i.pla[3];return t+=`$0000 - $9FFF RAM
`,t+=`$A000 - $BFFF ${(r&3)==3?"BASIC ROM":"RAM"}
`,t+=`$C000 - $CFFF RAM
`,t+=`$D000 - $DFFF ${s?"I/O":(r&3)!=0?"CHAR ROM":"RAM"}
@@ -11,4 +11,4 @@ import{a as M}from"./chunk-ULIQADK2.js";import{A as _,J as y,s as b,x as S}from"
`,s+=`VIC Bank: $${a(r,4)} Scrn: $${a(l,4)} `,p?s+=`Bitmap: $${a(o&57344,4)}`:C?s+=`Char: ROM $${a(o,4)}`:s+=`Char: $${a(o,4)}`,s+=`
`,s+=u(t,53248,64),s}case"SID":{let t=i.sid,s="";return s+=u(t,54272,32),s}}}setPaddleInput(e,i){e==0&&(this.lightpen_x=i),e==1&&(this.lightpen_y=i);let t=22,s=36,r=228,o=220,l=d(0,255,(this.lightpen_x-t)/(r-t)*160+24),p=d(0,255,(this.lightpen_y-s)/(o-s)*200+50);this.exports.machine_set_mouse(this.sys,l,p)}};var R=[{id:"helloc.c",name:"Hello World",category:"C"},{id:"screen_ram.c",name:"Screen RAM"},{id:"siegegame.c",name:"Siege Game"},{id:"joymove.c",name:"Sprite Movement"},{id:"sprite_collision.c",name:"Sprite Collision"},{id:"scroll1.c",name:"Scrolling (Single Buffer)"},{id:"test_setirq.c",name:"Raster Interrupts"},{id:"test_display_list.c",name:"Raster IRQ Library"},{id:"scrolling_text.c",name:"Big Scrolling Text"},{id:"side_scroller.c",name:"Side-Scrolling Game"},{id:"scroll2.c",name:"Scrolling (Double Buffer)"},{id:"scroll3.c",name:"Scrolling (Multidirectional)"},{id:"scroll4.c",name:"Scrolling (Color RAM Buffering)"},{id:"scroll5.c",name:"Scrolling (Camera Following)"},{id:"fullscrollgame.c",name:"Full-Scrolling Game"},{id:"test_multiplex.c",name:"Sprite Retriggering"},{id:"test_multispritelib.c",name:"Sprite Multiplexing Library"},{id:"mcbitmap.c",name:"Multicolor Bitmap Mode"},{id:"testlz4.c",name:"LZ4 Bitmap Compression"},{id:"musicplayer.c",name:"Music Player"},{id:"siddemo.c",name:"SID Player Demo"},{id:"digisound.c",name:"Digi Sound Player"},{id:"climber.c",name:"Climber Game"},{id:"test_border_sprites.c",name:"Sprites in the Borders"},{id:"sprite_stretch.c",name:"Sprite Stretching"},{id:"linecrunch.c",name:"Linecrunch"},{id:"fld.c",name:"Flexible Line Distance"},{id:"plasma.c",name:"Plasma Demo"},{id:"23matches.c",name:"23 Matches"},{id:"tgidemo.c",name:"TGI Graphics Demo"},{id:"upandaway.c",name:"Up, Up and Away"},{id:"hello.dasm",name:"Hello World (DASM)",category:"Assembly Language"},{id:"hello.acme",name:"Hello World (ACME)"},{id:"hello.wiz",name:"Hello Wiz (Wiz)"},{id:"hello.cpp",name:"Hello Oscar64",category:"C++ (Oscar64)"},{id:"particles.cpp",name:"Fireworks"},{id:"lander.cpp",name:"Lunar Lander"}],v={main:[{name:"6510 Registers",start:0,size:2,type:"io"},{name:"BIOS Reserved",start:512,size:167},{name:"Default Screen RAM",start:1024,size:1024,type:"ram"},{name:"Cartridge ROM",start:32768,size:8192,type:"rom"},{name:"BASIC ROM",start:40960,size:8192,type:"rom"},{name:"Upper RAM",start:49152,size:4096,type:"ram"},{name:"Character ROM",start:53248,size:4096,type:"rom"},{name:"VIC-II I/O",start:53248,size:1024,type:"io"},{name:"SID",start:54272,size:1024,type:"io"},{name:"Color RAM",start:55296,size:1024,type:"io"},{name:"CIA 1",start:56320,size:256,type:"io"},{name:"CIA 2",start:56576,size:256,type:"io"},{name:"I/O 1",start:56832,size:256,type:"io"},{name:"I/O 2",start:57088,size:256,type:"io"},{name:"KERNAL ROM",start:57344,size:8192,type:"rom"}]},h=class extends y{newMachine(){return new m("c64")}getPresets(){return R}readAddress(c){return this.machine.readConst(c)}getMemoryMap(){return v}showHelp(){return"https://8bitworkshop.com/docs/platforms/c64/"}getROMExtension(c){return c&&c[0]==1&&c[1]==8?".prg":".bin"}},f=class extends M{constructor(){super(...arguments);this.getToolForFilename=S;this.getOpcodeMetadata=_}getPresets(){return R}getDefaultExtensions(){return[".c",".cpp",".o64",".acme",".xa",".ca65",".dasm",".ecs",".wiz"]}loadROM(e,i){if(!this.started)this.startModule(this.mainElement,{jsfile:"mame8bitpc.js",biosfile:"c64.zip",cfgfile:"c64.cfg",driver:"c64",width:418,height:235,romfn:"/emulator/image.crt",romdata:new Uint8Array(i),romsize:65536,extraargs:["-autoboot_delay","5","-autoboot_command",`load "$",8,1
`],preInit:function(s){}});else{this.loadROMFile(i),this.loadRegion(":quickload",i);var t=this.luacall('image:load("/emulator/image.prg")');console.log("load rom",t)}}start(){}getMemoryMap(){return v}};n.c64=h;n["c64.wasm"]=h;n["c64.mame"]=f;
//# sourceMappingURL=c64-I5EYCTWE.js.map
//# sourceMappingURL=c64-WBHEFJ24.js.map
File renamed without changes.
@@ -1,4 +1,4 @@
import{I as R,q as D}from"./chunk-G4HBIXG4.js";import{$ as P,K as S,W as n,aa as A,g as h,s as p}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var I=1,d=2,k=4,b=8,u=16,l=class{constructor(){this.PC0=0;this.PC1=0;this.DC0=0;this.DC1=0;this.A=0;this.W=0;this.IS=0;this.R=new Uint8Array(64);this.o=0;this.stable=!0;this.irqRequest=!1}connectMemoryBus(s){this.bus=s}connectIOBus(s){this.iobus=s}reset(){this.PC0=0,this.PC1=0,this.DC0=0,this.DC1=0,this.A=0,this.W=0,this.IS=0,this.R.fill(0),this.irqRequest=!1}interrupt(s){this.irqRequest=!0}getPC(){return this.PC0}getSP(){return this.PC1}isStable(){return this.stable}saveState(){return{PC:this.PC0,PC0:this.PC0,PC1:this.PC1,DC0:this.DC0,DC1:this.DC1,A:this.A,W:this.W,IS:this.IS,R:Array.from(this.R),o:this.o,irq:this.irqRequest}}loadState(s){var e;this.PC0=(e=s.PC0)!=null?e:s.PC,this.PC1=s.PC1,this.DC0=s.DC0,this.DC1=s.DC1,this.A=s.A,this.W=s.W,this.IS=s.IS;for(let r=0;r<64;r++)this.R[r]=s.R[r];this.o=s.o,this.irqRequest=s.irq}fetchPC0(){let s=this.bus.read(this.PC0);return this.PC0=this.PC0+1&65535,s}fetchDC0(){let s=this.bus.read(this.DC0);return this.DC0=this.DC0+1&65535,s}storeDC0(s){this.bus.write(this.DC0,s),this.DC0=this.DC0+1&65535}clrOZCS(){this.W&=~(b|k|d|I)}setSZ(s){(s&255)===0&&(this.W|=k),(s&128)===0&&(this.W|=I)}doAdd(s,e,r=0){let t=(s&255)+(e&255)+(r&1);return t&256&&(this.W|=d),((s^t)&(e^t)&128)!==0&&(this.W|=b),t&255}doAddDecimal(s,e){let r=(s&15)+(e&15),t=r>9?1:0;r=(s>>4)+(e>>4)+t;let i=r>9?1:0;this.clrOZCS();let x=this.doAdd(s,e);this.setSZ(x);let c=0;return i&&(c|=160),t&&(c|=10),c&&(this.clrOZCS(),x=this.doAdd(x,c),this.setSZ(x)),x}getScratchpadIndex(s){if(s<12)return s;if(s===12)return this.IS&63;if(s===13){let e=this.IS&63;return this.IS=this.IS&56|this.IS+1&7,e}if(s===14){let e=this.IS&63;return this.IS=this.IS&56|this.IS-1&7,e}return 0}advanceInsn(){if(this.irqRequest&&this.W&u)return this.irqRequest=!1,this.PC1=this.PC0,this.PC0=this.bus.read(4094)<<8|this.bus.read(4095),this.W&=~u,6;let s=this.fetchPC0();this.o=s,this.stable=!0;let e=4,r,t;switch(s){case 0:this.A=this.R[12];break;case 1:this.A=this.R[13];break;case 2:this.A=this.R[14];break;case 3:this.A=this.R[15];break;case 4:this.R[12]=this.A;break;case 5:this.R[13]=this.A;break;case 6:this.R[14]=this.A;break;case 7:this.R[15]=this.A;break;case 8:this.R[12]=this.PC1>>8&255,this.R[13]=this.PC1&255,e=8;break;case 9:this.PC1=this.R[12]<<8|this.R[13],e=8;break;case 10:this.A=this.IS&63;break;case 11:this.IS=this.A&63;break;case 12:this.PC1=this.PC0,this.PC0=this.R[12]<<8|this.R[13],e=8;break;case 13:this.PC0=this.R[14]<<8|this.R[15],e=8;break;case 14:this.R[14]=this.DC0>>8&255,this.R[15]=this.DC0&255,e=8;break;case 15:this.DC0=this.R[14]<<8|this.R[15],e=8;break;case 16:this.DC0=this.R[10]<<8|this.R[11],e=8;break;case 17:this.R[10]=this.DC0>>8&255,this.R[11]=this.DC0&255,e=8;break;case 18:this.A=this.A>>1&255,this.clrOZCS(),this.setSZ(this.A);break;case 19:this.A=this.A<<1&255,this.clrOZCS(),this.setSZ(this.A);break;case 20:this.A=this.A>>4&255,this.clrOZCS(),this.setSZ(this.A);break;case 21:this.A=this.A<<4&255,this.clrOZCS(),this.setSZ(this.A);break;case 22:this.A=this.fetchDC0(),e=6;break;case 23:this.storeDC0(this.A),e=6;break;case 24:this.A=~this.A&255,this.clrOZCS(),this.setSZ(this.A);break;case 25:r=this.W&d?1:0,this.clrOZCS(),this.A=this.doAdd(this.A,r),this.setSZ(this.A);break;case 26:this.W&=~u;break;case 27:this.W|=u;break;case 28:this.PC0=this.PC1;break;case 29:this.W=this.R[9]&31;break;case 30:this.R[9]=this.W&31;break;case 31:this.clrOZCS(),this.A=this.doAdd(this.A,1),this.setSZ(this.A);break;case 32:this.A=this.fetchPC0(),e=6;break;case 33:r=this.fetchPC0(),this.A=this.A&r,this.clrOZCS(),this.setSZ(this.A),e=6;break;case 34:r=this.fetchPC0(),this.A=this.A|r,this.clrOZCS(),this.setSZ(this.A),e=6;break;case 35:r=this.fetchPC0(),this.A=this.A^r,this.clrOZCS(),this.setSZ(this.A),e=6;break;case 36:r=this.fetchPC0(),this.clrOZCS(),this.A=this.doAdd(this.A,r),this.setSZ(this.A),e=6;break;case 37:r=this.fetchPC0(),this.clrOZCS(),this.doAdd(~this.A&255,r,1),this.setSZ(this.doAdd(~this.A&255,r,1)),e=6;break;case 38:r=this.fetchPC0(),this.A=this.iobus.read(r)&255,this.clrOZCS(),this.setSZ(this.A),e=8;break;case 39:r=this.fetchPC0(),this.iobus.write(r,this.A),e=8;break;case 40:{let i=this.fetchPC0(),x=this.fetchPC0();this.PC1=this.PC0,this.PC0=i<<8|x,e=12;break}case 41:{let i=this.fetchPC0(),x=this.fetchPC0();this.PC0=i<<8|x,e=10;break}case 42:{let i=this.fetchPC0(),x=this.fetchPC0();this.DC0=i<<8|x,e=10;break}case 43:break;case 44:r=this.DC0,this.DC0=this.DC1,this.DC1=r;break;case 45:case 46:case 47:break;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 58:case 59:case 60:case 61:case 62:t=this.getScratchpadIndex(s&15),this.clrOZCS(),this.R[t]=this.doAdd(this.R[t],255),this.setSZ(this.R[t]),e=6;break;case 63:break;case 64:case 65:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case 73:case 74:case 75:case 76:case 77:case 78:t=this.getScraLine truncated
import{I as R,q as D}from"./chunk-4676AC7I.js";import{$ as P,K as S,W as n,aa as A,g as h,s as p}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var I=1,d=2,k=4,b=8,u=16,l=class{constructor(){this.PC0=0;this.PC1=0;this.DC0=0;this.DC1=0;this.A=0;this.W=0;this.IS=0;this.R=new Uint8Array(64);this.o=0;this.stable=!0;this.irqRequest=!1}connectMemoryBus(s){this.bus=s}connectIOBus(s){this.iobus=s}reset(){this.PC0=0,this.PC1=0,this.DC0=0,this.DC1=0,this.A=0,this.W=0,this.IS=0,this.R.fill(0),this.irqRequest=!1}interrupt(s){this.irqRequest=!0}getPC(){return this.PC0}getSP(){return this.PC1}isStable(){return this.stable}saveState(){return{PC:this.PC0,PC0:this.PC0,PC1:this.PC1,DC0:this.DC0,DC1:this.DC1,A:this.A,W:this.W,IS:this.IS,R:Array.from(this.R),o:this.o,irq:this.irqRequest}}loadState(s){var e;this.PC0=(e=s.PC0)!=null?e:s.PC,this.PC1=s.PC1,this.DC0=s.DC0,this.DC1=s.DC1,this.A=s.A,this.W=s.W,this.IS=s.IS;for(let r=0;r<64;r++)this.R[r]=s.R[r];this.o=s.o,this.irqRequest=s.irq}fetchPC0(){let s=this.bus.read(this.PC0);return this.PC0=this.PC0+1&65535,s}fetchDC0(){let s=this.bus.read(this.DC0);return this.DC0=this.DC0+1&65535,s}storeDC0(s){this.bus.write(this.DC0,s),this.DC0=this.DC0+1&65535}clrOZCS(){this.W&=~(b|k|d|I)}setSZ(s){(s&255)===0&&(this.W|=k),(s&128)===0&&(this.W|=I)}doAdd(s,e,r=0){let t=(s&255)+(e&255)+(r&1);return t&256&&(this.W|=d),((s^t)&(e^t)&128)!==0&&(this.W|=b),t&255}doAddDecimal(s,e){let r=(s&15)+(e&15),t=r>9?1:0;r=(s>>4)+(e>>4)+t;let i=r>9?1:0;this.clrOZCS();let x=this.doAdd(s,e);this.setSZ(x);let c=0;return i&&(c|=160),t&&(c|=10),c&&(this.clrOZCS(),x=this.doAdd(x,c),this.setSZ(x)),x}getScratchpadIndex(s){if(s<12)return s;if(s===12)return this.IS&63;if(s===13){let e=this.IS&63;return this.IS=this.IS&56|this.IS+1&7,e}if(s===14){let e=this.IS&63;return this.IS=this.IS&56|this.IS-1&7,e}return 0}advanceInsn(){if(this.irqRequest&&this.W&u)return this.irqRequest=!1,this.PC1=this.PC0,this.PC0=this.bus.read(4094)<<8|this.bus.read(4095),this.W&=~u,6;let s=this.fetchPC0();this.o=s,this.stable=!0;let e=4,r,t;switch(s){case 0:this.A=this.R[12];break;case 1:this.A=this.R[13];break;case 2:this.A=this.R[14];break;case 3:this.A=this.R[15];break;case 4:this.R[12]=this.A;break;case 5:this.R[13]=this.A;break;case 6:this.R[14]=this.A;break;case 7:this.R[15]=this.A;break;case 8:this.R[12]=this.PC1>>8&255,this.R[13]=this.PC1&255,e=8;break;case 9:this.PC1=this.R[12]<<8|this.R[13],e=8;break;case 10:this.A=this.IS&63;break;case 11:this.IS=this.A&63;break;case 12:this.PC1=this.PC0,this.PC0=this.R[12]<<8|this.R[13],e=8;break;case 13:this.PC0=this.R[14]<<8|this.R[15],e=8;break;case 14:this.R[14]=this.DC0>>8&255,this.R[15]=this.DC0&255,e=8;break;case 15:this.DC0=this.R[14]<<8|this.R[15],e=8;break;case 16:this.DC0=this.R[10]<<8|this.R[11],e=8;break;case 17:this.R[10]=this.DC0>>8&255,this.R[11]=this.DC0&255,e=8;break;case 18:this.A=this.A>>1&255,this.clrOZCS(),this.setSZ(this.A);break;case 19:this.A=this.A<<1&255,this.clrOZCS(),this.setSZ(this.A);break;case 20:this.A=this.A>>4&255,this.clrOZCS(),this.setSZ(this.A);break;case 21:this.A=this.A<<4&255,this.clrOZCS(),this.setSZ(this.A);break;case 22:this.A=this.fetchDC0(),e=6;break;case 23:this.storeDC0(this.A),e=6;break;case 24:this.A=~this.A&255,this.clrOZCS(),this.setSZ(this.A);break;case 25:r=this.W&d?1:0,this.clrOZCS(),this.A=this.doAdd(this.A,r),this.setSZ(this.A);break;case 26:this.W&=~u;break;case 27:this.W|=u;break;case 28:this.PC0=this.PC1;break;case 29:this.W=this.R[9]&31;break;case 30:this.R[9]=this.W&31;break;case 31:this.clrOZCS(),this.A=this.doAdd(this.A,1),this.setSZ(this.A);break;case 32:this.A=this.fetchPC0(),e=6;break;case 33:r=this.fetchPC0(),this.A=this.A&r,this.clrOZCS(),this.setSZ(this.A),e=6;break;case 34:r=this.fetchPC0(),this.A=this.A|r,this.clrOZCS(),this.setSZ(this.A),e=6;break;case 35:r=this.fetchPC0(),this.A=this.A^r,this.clrOZCS(),this.setSZ(this.A),e=6;break;case 36:r=this.fetchPC0(),this.clrOZCS(),this.A=this.doAdd(this.A,r),this.setSZ(this.A),e=6;break;case 37:r=this.fetchPC0(),this.clrOZCS(),this.doAdd(~this.A&255,r,1),this.setSZ(this.doAdd(~this.A&255,r,1)),e=6;break;case 38:r=this.fetchPC0(),this.A=this.iobus.read(r)&255,this.clrOZCS(),this.setSZ(this.A),e=8;break;case 39:r=this.fetchPC0(),this.iobus.write(r,this.A),e=8;break;case 40:{let i=this.fetchPC0(),x=this.fetchPC0();this.PC1=this.PC0,this.PC0=i<<8|x,e=12;break}case 41:{let i=this.fetchPC0(),x=this.fetchPC0();this.PC0=i<<8|x,e=10;break}case 42:{let i=this.fetchPC0(),x=this.fetchPC0();this.DC0=i<<8|x,e=10;break}case 43:break;case 44:r=this.DC0,this.DC0=this.DC1,this.DC1=r;break;case 45:case 46:case 47:break;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 58:case 59:case 60:case 61:case 62:t=this.getScratchpadIndex(s&15),this.clrOZCS(),this.R[t]=this.doAdd(this.R[t],255),this.setSZ(this.R[t]),e=6;break;case 63:break;case 64:case 65:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case 73:case 74:case 75:case 76:case 77:case 78:t=this.getScraLine truncated
DC0 = `+h(a.DC0,4)+" DC1 = "+h(a.DC1,4)+`
A = `+h(a.A,2)+" W = "+h(a.W,2)+`
IS = `+h(a.IS,2)+`
@@ -14,4 +14,4 @@ Port 5: `+h(e.port5||0,2)+`
Row: `+h(e.row_reg||0,2)+`
Col: `+h(e.col_reg||0,2)+`
`;case"VRAM":return"";default:return""}}getMemoryMap(){return{main:[{name:"BIOS",start:0,size:2048,type:"rom"},{name:"Cart ROM",start:2048,size:30720,type:"rom"}]}}};S.channelf=m;
//# sourceMappingURL=channelf-BJMZSFKB.js.map
//# sourceMappingURL=channelf-AQGDMKUF.js.map
File renamed without changes.
-7
View File
@@ -1,7 +0,0 @@
{
"version": 3,
"sources": ["../node_modules/localforage/dist/localforage.js", "../node_modules/dompurify/src/utils.ts", "../node_modules/dompurify/src/tags.ts", "../node_modules/dompurify/src/attrs.ts", "../node_modules/dompurify/src/regexp.ts", "../node_modules/dompurify/src/purify.ts", "../src/ide/ui.ts", "../src/common/toolmeta.ts", "../src/ide/errorreport.ts", "../src/ide/dialogs.ts", "../node_modules/@marijn/find-cluster-break/src/index.js", "../node_modules/@codemirror/state/dist/index.js", "../node_modules/style-mod/src/style-mod.js", "../node_modules/w3c-keyname/index.js", "../node_modules/crelt/index.js", "../node_modules/@codemirror/view/dist/index.js", "../node_modules/@lezer/common/dist/index.js", "../node_modules/@lezer/highlight/dist/index.js", "../node_modules/@codemirror/language/dist/index.js", "../node_modules/@codemirror/autocomplete/dist/index.js", "../src/ide/views/debug.ts", "../node_modules/@codemirror/commands/dist/index.js", "../src/ide/views/tabs.ts", "../src/ide/settings.ts", "../src/ide/storage.ts", "../src/ide/project.ts", "../src/common/workertypes.ts", "../src/ide/services.ts", "../src/common/audio/CommodoreTape.ts", "../src/ide/shareexport.ts", "../src/ide/sync.ts", "../src/ide/search/symbolindex.ts", "../src/common/symbols/index.ts", "../src/ide/search/projectsource.ts", "../src/ide/search/toolchainsource.ts", "../src/ide/search/docssource.ts", "../src/ide/search/service.ts", "../node_modules/@lezer/lr/dist/index.js", "../node_modules/@lezer/cpp/dist/index.js", "../node_modules/@codemirror/lang-cpp/dist/index.js", "../node_modules/@codemirror/search/dist/index.js", "../src/parser/tokens-6502.ts", "parser/lang-6502.grammar.js", "../src/parser/lang-6502.ts", "../src/parser/tokens-z80.ts", "parser/lang-z80.grammar.js", "../src/parser/lang-z80.ts", "../src/parser/lang-wiz.ts", "../src/parser/lang-verilog.ts", "../src/parser/lang-inform6.ts", "../src/parser/lang-dialog.ts", "../src/parser/lang-basic.ts", "../src/parser/lang-fastbasic.ts", "../src/parser/lang-bataribasic.ts", "../node_modules/@lezer/markdown/dist/index.js", "../node_modules/@lezer/html/dist/index.js", "../node_modules/@lezer/css/dist/index.js", "../node_modules/@codemirror/lang-css/dist/index.js", "../node_modules/@lezer/javascript/dist/index.js", "../node_modules/@codemirror/lang-javascript/dist/index.js", "../node_modules/@codemirror/lang-html/dist/index.js", "../node_modules/@codemirror/lang-markdown/dist/index.js", "../src/parser/registry.ts", "../src/themes/cobalt.ts", "../src/themes/disassemblyTheme.ts", "../src/themes/editorTheme.ts", "../src/themes/mbo.ts", "../src/ide/views/assetdecorations.ts", "../src/ide/views/includedecorations.ts", "../src/ide/views/baseviews.ts", "../src/ide/views/filters.ts", "../src/ide/views/gutter.ts", "../src/ide/views/visuals.ts", "../src/ide/views/editors.ts", "../src/common/vtextscroller.ts", "../src/ide/views/debugviews.ts", "../src/ide/search/debuggerhit.ts", "../src/ide/search/searchview.ts", "../src/ide/pixeleditor.ts", "../src/ide/views/asseteditor.ts", "../src/ide/views/treeviews.ts", "../src/ide/windows.ts"],
"sourcesContent": ["/*!\n localForage -- Offline Storage, Improved\n Version 1.10.0\n https://localforage.github.io/localForage\n (c) 2013-2017 Mozilla, Apache License 2.0\n*/\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.localforage = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw (f.code=\"MODULE_NOT_FOUND\", f)}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){\n(function (global){\n'use strict';\nvar Mutation = global.MutationObserver || global.WebKitMutationObserver;\n\nvar scheduleDrain;\n\n{\n if (Mutation) {\n var called = 0;\n var observer = new Mutation(nextTick);\n var element = global.document.createTextNode('');\n observer.observe(element, {\n characterData: true\n });\n scheduleDrain = function () {\n element.data = (called = ++called % 2);\n };\n } else if (!global.setImmediate && typeof global.MessageChannel !== 'undefined') {\n var channel = new global.MessageChannel();\n channel.port1.onmessage = nextTick;\n scheduleDrain = function () {\n channel.port2.postMessage(0);\n };\n } else if ('document' in global && 'onreadystatechange' in global.document.createElement('script')) {\n scheduleDrain = function () {\n\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var scriptEl = global.document.createElement('script');\n scriptEl.onreadystatechange = function () {\n nextTick();\n\n scriptEl.onreadystatechange = null;\n scriptEl.parentNode.removeChild(scriptEl);\n scriptEl = null;\n };\n global.document.documentElement.appendChild(scriptEl);\n };\n } else {\n scheduleDrain = function () {\n setTimeout(nextTick, 0);\n };\n }\n}\n\nvar draining;\nvar queue = [];\n//named nextTick for less confusing stack traces\nfunction nextTick() {\n draining = true;\n var i, oldQueue;\n var len = queue.length;\n while (len) {\n oldQueue = queue;\n queue = [];\n i = -1;\n while (++i < len) {\n oldQueue[i]();\n }\n len = queue.length;\n }\n draining = false;\n}\n\nmodule.exports = immediate;\nfunction immediate(task) {\n if (queue.push(task) === 1 && !draining) {\n scheduleDrain();\n }\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],2:[function(_dereq_,module,exports){\n'use strict';\nvar immediate = _dereq_(1);\n\n/* istanbul ignore next */\nfunction INTERNAL() {}\n\nvar handlers = {};\n\nvar REJECTED = ['REJECTED'];\nvar FULFILLED = ['FULFILLED'];\nvar PENDING = ['PENDING'];\n\nmodule.exports = Promise;\n\nfunction Promise(resolver) {\n if (typeof resolver !== 'function') {\n throw new TypeError('resolver must be a function');\n }\n this.state = PENDING;\n this.queue = [];\n this.outcome = void 0;\n if (resolver !== INTERNAL) {\n safelyResolveThenable(this, resolver);\n }\n}\n\nPromise.prototype[\"catch\"] = function (onRejected) {\n return this.then(null, onRejected);\n};\nPromise.prototype.then = function (onFulfilled, onRejected) {\n if (typeof onFulfilled !== 'function' && this.state === FULFILLED ||\n typeof onRejected !== 'function' && this.state === REJECTED) {\n return this;\n }\n var promise = new this.constructor(INTERNAL);\n if (this.state !== PENDING) {\n var resolver = this.state === FULFILLED ? onFulfilled : onRejected;\n unwrap(promise, resolver, this.outcome);\n } else {\n this.queue.push(new QueueItem(promise, onFulfilled, onRejected));\n }\n\n return promise;\n};\nfunction QueueItem(promise, onFulfilled, onRejected) {\n this.promise = promise;\n if (typeof onFulfilled === 'function') {\n this.onFulfilled = onFulfilled;\n this.callFulfilled = this.otherCallFulfilled;\n }\n if (typeof onRejected === 'function') {\n this.onRejected = onRejected;\n this.callRejected = this.otherCallRejected;\n }\n}\nQueueItem.prototype.callFulfilled = function (value) {\n handlers.resolve(this.promise, value);\n};\nQueueItem.prototype.otherCallFulfilled = function (value) {\n unwrap(this.promise, this.onFulfilled, value);\n};\nQueueItem.prototype.callLine truncated
"mappings": "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 truncated
"names": ["require_localforage", "__commonJSMin", "exports", "module", "f", "g", "define", "e", "t", "n", "r", "s", "o", "u", "a", "__require", "i", "l", "_dereq_", "global", "Mutation", "scheduleDrain", "called", "observer", "nextTick", "element", "channel", "scriptEl", "draining", "queue", "oldQueue", "len", "immediate", "task", "INTERNAL", "handlers", "REJECTED", "FULFILLED", "PENDING", "Promise", "resolver", "safelyResolveThenable", "onRejected", "onFulfilled", "promise", "unwrap", "QueueItem", "value", "func", "returnValue", "self", "result", "tryCatch", "getThen", "thenable", "error", "obj", "then", "onError", "onSuccess", "tryToUnwrap", "out", "resolve", "reject", "reason", "all", "iterable", "values", "resolved", "allResolver", "resolveFromAll", "outValue", "race", "response", "_typeof", "_classCallCheck", "instance", "Constructor", "getIDB", "idb", "isIndexedDBValid", "isSafari", "hasFetch", "createBlob", "parts", "properties", "Builder", "builder", "Promise$1", "executeCallback", "callback", "executeTwoCallbacks", "errorCallback", "normalizeKey", "key", "getCallback", "DETECT_BLOB_SUPPORT_STORE", "supportsBlobs", "dbContexts", "toString", "READ_ONLY", "READ_WRITE", "_binStringToArrayBuffer", "bin", "length", "buf", "arr", "_checkBlobSupportWithoutCaching", "txn", "blob", "matchedChrome", "matchedEdge", "_checkBlobSupport", "_deferReadiness", "dbInfo", "dbContext", "deferredOperation", "_advanceReadiness", "_rejectReadiness", "err", "_getConnection", "upgradeNeeded", "createDbContext", "dbArgs", "openreq", "db", "ex", "_getOriginalConnection", "_getUpgradedConnection", "_isUpgradeNeeded", "defaultVersion", "isNewStore", "isDowngrade", "isUpgrade", "incVersion", "_encodeBlob", "reader", "base64", "_decodeBlob", "encodedBlob", "arrayBuff", "_isEncodedBlob", "_fullyReady", "_tryReconnect", "forages", "forage", "createTransaction", "mode", "retries", "tx", "_initStorage", "options", "initPromises", "ignoreErrors", "j", "k", "getItem", "transaction", "store", "req", "iterate", "iterator", "iterationNumber", "cursor", "setItem", "blobSupport", "removeItem", "clear", "advanced", "keys", "dropInstance", "currentConfig", "isCurrentDb", "dbPromise", "newVersion", "dropObjectPromise", "_forage2", "dropDBPromise", "_forage", "asyncStorage", "isWebSQLValid", "BASE_CHARS", "BLOB_TYPE_PREFIX", "BLOB_TYPE_PREFIX_REGEX", "SERIALIZED_MARKER", "SERIALIZED_MARKER_LENGTH", "TYPE_ARRAYBUFFER", "TYPE_BLOB", "TYPE_INT8ARRAY", "TYPE_UINT8ARRAY", "TYPE_UINT8CLAMPEDARRAY", "TYPE_INT16ARRAY", "TYPE_INT32ARRAY", "TYPE_UINT16ARRAY", "TYPE_UINT32ARRAY", "TYPE_FLOAT32ARRAY", "TYPE_FLOAT64ARRAY", "TYPE_SERIALIZED_MARKER_LENGTH", "toString$1", "stringToBuffer", "serializedString", "bufferLength", "p", "encoded1", "encoded2", "encoded3", "encoded4", "buffer", "bytes", "bufferToString", "base64String", "serialize", "valueType", "marker", "fileReader", "str", "deserialize", "type", "blobType", "matcher", "localforageSerializer", "createDbTable", "_initStorage$1", "dbInfoPromise", "tryExecuteSql", "sqlStatement", "args", "results", "getItem$1", "iterate$1", "rows", "item", "_setItem", "retriesLeft", "originalValue", "sqlError", "setItem$1", "removeItem$1", "clear$1", "length$1", "key$1", "keys$1", "getAllStoreNames", "storeNames", "dropInstance$1", "operationInfo", "dropTable", "storeName", "operations", "webSQLStorage", "isLocalStorageValid", "_getKeyPrefix", "defaultConfig", "keyPrefix", "checkIfLocalStorageThrows", "localStorageTestKey", "_isLocalStorageUsable", "_initStorage$2", "clear$2", "getItem$2", "iterate$2", "keyPrefixLength", "key$2", "keys$2", "itemKey", "length$2", "removeItem$2", "setItem$2", "dropInstance$2", "localStorageWrapper", "sameValue", "x", "y", "includes", "array", "searchElement", "isArray", "arg", "DefinedDrivers", "DriverSupport", "DefaultDrivers", "DefaultDriverOrder", "OptionalDriverMethods", "LibraryMethods", "DefaultConfig", "callWhenReady", "localForageInstance", "libraryMethod", "_args", "extend", "_key", "LocalForage", "driverTypeKey", "driver", "driverName", "driverObject", "complianceError", "driverMethods", "driverMethodName", "isRequired", "configureMissingMethods", "methodNotImplementedFactory", "methodName", "_i", "_len", "optionalDriverMethod", "setDriverSupport", "support", "getDriverPromise", "serializerPromise", "drivers", "supportedDrivers", "setDriverToConfig", "extendSelfWithDriver", "initDriver", "currentDriverIndex", "driverPromiseLoop", "oldDriverSetDone", "libraryMethodsAndProperties", "localforage_js", "entries", "Object", "setPrototypeOf", "isFrozen", "getPrototypeOf", "getOwnPropertyDescriptor", "freeze", "seal", "create", "_ref", "Reflect", "apply", "construct", "x", "func", "thisArg", "_len", "arguments", "length", "args", "Array", "_key", "Func", "_len2", "_key2", "arrayForEach", "unapply", "prototype", "forEach", "arrayLastIndexOf", "lastIndexOf", "arrayPop", "pop", "arrayPush", "push", "arraySplice", "splice", "arrayIsArray", "isArray", "stringToLowerCase", "String", "toLoLine truncated
}
@@ -1,7 +1,7 @@
import{D as gt,P as pt,R as Pt,T as _t,U as wt,V as rt,_ as kt,g as $,j as St,s as Ve}from"./chunk-TYDI7JZQ.js";var vn=[{mn:"BRK",am:"",nb:1,il:0,c1:7,c2:0,nw:3,br:1,mod:"SI"},{mn:"ORA",am:"(aa,x)",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:"AZN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"SLO",am:"(aa,x)",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"NOP",am:"aa",nb:2,il:1,c1:3,c2:0,nw:0,br:0,mod:""},{mn:"ORA",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ASL",am:"aa",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:"CZN"},{mn:"SLO",am:"aa",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"PHP",am:"",nb:1,il:0,c1:3,c2:0,nw:1,br:0,mod:"S"},{mn:"ORA",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ASL",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"ACZN"},{mn:"ANC",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:"ACZN"},{mn:"NOP",am:"AAAA",nb:3,il:1,c1:3,c2:0,nw:0,br:0,mod:""},{mn:"ORA",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ASL",am:"AAAA",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"SLO",am:"AAAA",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"BPL",am:"branch",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:""},{mn:"ORA",am:"(aa),y",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:"AZN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"SLO",am:"(aa),y",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"NOP",am:"aa,x",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"ORA",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ASL",am:"aa,x",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"SLO",am:"aa,x",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"CLC",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"C"},{mn:"ORA",am:"AAAA,y",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"AZN"},{mn:"NOP",am:"",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"SLO",am:"AAAA,y",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"NOP",am:"AAAA,x",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"ORA",am:"AAAA,x",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"AZN"},{mn:"ASL",am:"AAAA,x",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:"CZN"},{mn:"SLO",am:"AAAA,x",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"JSR",am:"AAAA",nb:3,il:0,c1:6,c2:0,nw:2,br:1,mod:"S"},{mn:"AND",am:"(aa,x)",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:"AZN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"RLA",am:"(aa,x)",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"BIT",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"ZVN"},{mn:"AND",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ROL",am:"aa",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:"CZN"},{mn:"RLA",am:"aa",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"PLP",am:"",nb:1,il:0,c1:4,c2:0,nw:0,br:0,mod:"SCZIDVN"},{mn:"AND",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ROL",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"ACZN"},{mn:"ANC",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:"ACZN"},{mn:"BIT",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"ZVN"},{mn:"AND",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ROL",am:"AAAA",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"RLA",am:"AAAA",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"BMI",am:"branch",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:""},{mn:"AND",am:"(aa),y",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:"AZN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"RLA",am:"(aa),y",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"NOP",am:"aa,x",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"AND",am:"aa,x",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:"AZN"},{mn:"ROL",am:"aa,x",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"RLA",am:"aa,x",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"SEC",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"C"},{mn:"AND",am:"AAAA,y",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"AZN"},{mn:"NOP",am:"",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:""},{mn:"RLA",am:"AAAA,y",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"NOP",am:"AAAA,x",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:""},{mn:"AND",am:"AAAA,x",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:"AZN"},{mn:"ROL",am:"AAAA,x",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:"CZN"},{mn:"RLA",am:"AAAA,x",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"RTI",am:"",nb:1,il:0,c1:6,c2:0,nw:0,br:1,mod:"SCZIDVN"},{mn:"EOR",am:"(aa,x)",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:"AZN"},{mn:"KIL",am:"",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"SRE",am:"(aa,x)",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"NOP",am:"aa",nb:2,il:1,c1:3,c2:0,nw:0,br:0,mod:""},{mn:"EOR",am:"aa",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:"AZN"},{mn:"LSR",am:"aa",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:"CZN"},{mn:"SRE",am:"aa",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"PHA",am:"",nb:1,il:0,c1:3,c2:0,nw:1,br:0,mod:"S"},{mn:"EOR",am:"#aa",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:"AZN"},{mn:"LSR",am:"",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:"ACZN"},{mn:"ASR",am:"#aa",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:"ACZN"},{mn:"JMP",am:"AAAA",nb:3,il:0,c1:3,c2:0,nw:0,br:1,mod:""},{mn:"EOR",am:"AAAA",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:"AZN"},{mn:"LSR",am:"AAAA",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:"CZN"},{mn:"SRE",am:"AAAA",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:"ACZN"},{mn:"BVC",am:"branch",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:""},{mn:"EOR",am:"(aa),yLine truncated
A: `+o.toString(16)+" X: "+d.toString(16)+" Y: "+x.toString(16)+" SP: "+m.toString(16)+" N"+i+" V"+Y+" D"+y+" I"+p+" Z"+N+" C"+w+" "},this.breakpoint=function(l){if(this.trace)var C="CPU Breakpoint! "+(l?"("+l+")":"")+`
`+this.toString()};var vt=[7,6,0,8,3,3,5,5,3,2,2,2,4,4,6,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7,6,6,0,8,3,3,5,5,4,2,2,2,4,4,6,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7,6,6,0,8,3,3,5,5,3,2,2,2,3,4,6,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7,6,6,0,8,3,3,5,5,4,2,2,2,5,4,6,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7,0,6,0,6,3,3,3,3,2,0,2,0,4,4,4,4,2,6,0,0,4,4,4,4,2,5,2,0,0,5,0,0,2,6,2,6,3,3,3,3,2,2,2,0,4,4,4,4,2,5,0,5,4,4,4,4,2,4,2,0,4,4,4,4,2,6,0,8,3,3,5,5,2,2,2,2,4,4,6,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7,2,6,0,8,3,3,5,5,2,2,2,0,4,4,6,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7],An=[0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,0,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1],Cn=[1,2,0,2,2,2,2,2,1,2,1,2,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3,3,2,0,2,2,2,2,2,1,2,1,2,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3,1,2,0,2,2,2,2,2,1,2,1,2,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3,1,2,0,2,2,2,2,2,1,2,1,2,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3,0,2,0,2,2,2,2,2,1,0,1,0,3,3,3,3,2,2,0,0,2,2,2,3,1,3,1,0,0,3,0,0,2,2,2,2,2,2,2,2,1,2,1,0,3,3,3,3,2,2,0,2,2,2,2,2,1,3,1,0,3,3,3,3,2,2,0,2,2,2,2,2,1,2,1,2,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3,2,2,0,2,2,2,2,2,1,2,1,0,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3],yn=[1,2,0,0,0,2,2,0,1,2,1,0,0,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0,3,2,0,0,2,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0,1,2,0,0,0,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0,1,2,0,0,0,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0,0,2,0,0,2,2,2,0,1,0,1,0,3,3,3,0,2,2,0,0,2,2,2,0,1,3,1,0,0,3,0,0,2,2,2,0,2,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,2,2,2,0,1,3,1,0,3,3,3,0,2,2,0,0,2,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0,2,2,0,0,2,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0];this.getOpcodeMetadata=function(l,C){return{opcode:l,mnenomic:c[l],minCycles:vt[l],maxCycles:vt[l]+An[l],insnlength:Cn[l]}},this.setNMI=function(){A=mn(),G=1,a=a-1&65535},this.setIRQ=function(){p||(A=un(),G=1,a=a-1&65535)},this.getSP=function(){return m},this.getPC=function(){return a-1&65535},this.getT=function(){return G},this.isHalted=function(){return c[u0]=="uKIL"},this.isPCStable=function(){return G==0}};var Ot=class{constructor(){this.cpu=new ot;this.interruptType=0}connectMemoryBus(t){this.cpu.connectBus(t)}advanceClock(){if(this.interruptType&&this.isStable()){switch(this.interruptType){case 1:this.cpu.setNMI();break;case 2:this.cpu.setIRQ();break}this.interruptType=0}this.cpu.clockPulse()}advanceInsn(){do this.advanceClock();while(!this.isStable())}reset(){this.cpu.reset(),this.interruptType=0}interrupt(t){this.interruptType!=1&&(this.interruptType=t)}NMI(){this.interrupt(1)}IRQ(){this.interrupt(2)}getSP(){return this.cpu.getSP()}getPC(){return this.cpu.getPC()}isHalted(){return this.cpu.isHalted()}saveState(){var t=this.cpu.saveState();return t.it=this.interruptType,t}loadState(t){this.cpu.loadState(t),this.interruptType=t.it}isStable(){return this.cpu.isPCStable()}getOpcodeMetadata(t){return this.cpu.getOpcodeMetadata(t)}};var Ne=class{constructor(t){this.maxROMSize=262144;this.videoOffsetBytes=0;this.prefix=t;var n=this;this.cpu={getPC:n.getPC.bind(n),getSP:n.getSP.bind(n),isStable:n.isStable.bind(n),reset:n.reset.bind(n),saveState:()=>n.getCPUState(),loadState:()=>{console.log("loadState not implemented")},connectMemoryBus(){console.log("connectMemoryBus not implemented")}}}getImports(t){return{}}async fetchWASM(){var t=await fetch("res/"+this.prefix+".wasm");if(t.status==200||t.size){var n=await t.arrayBuffer(),a=await WebAssembly.compile(n),m=await WebAssembly.instantiate(a,this.getImports(a));this.instance=m,this.exports=m.exports}else throw new Error("could not load WASM file")}allocateBIOS(t){this.biosptr=this.exports.malloc(t.byteLength),this.biosarr=new Uint8Array(this.exports.memory.buffer,this.biosptr,t.byteLength)}async fetchBIOS(){var t=await fetch("res/"+this.prefix+".bios");if(t.status==200||t.size){var n=new Uint8Array(await t.arrayBuffer());this.allocateBIOS(n),this.loadBIOS(n)}else throw new Error("could not load BIOS file")}async initWASM(){this.sys=this.exports.machine_init(this.biosptr);let t=this.exports.machine_get_state_size();this.stateptr=this.exports.malloc(t);let n=this.exports.machine_get_controls_state_size();this.ctrlstateptr=this.exports.malloc(n);let a=this.exports.machine_get_cpu_state_size();this.cpustateptr=this.exports.malloc(a),this.romptr=this.exports.malloc(this.maxROMSize),this.statearr=new Uint8Array(this.exports.memory.buffer,this.stateptr,t),this.ctrlstatearr=new Uint8Array(this.exports.memory.buffer,this.ctrlstateptr,n),this.cpustatearr=new Uint8Array(this.exports.memory.buffer,this.cpustateptr,a);le Line truncated
`+this.toString()};var vt=[7,6,0,8,3,3,5,5,3,2,2,2,4,4,6,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7,6,6,0,8,3,3,5,5,4,2,2,2,4,4,6,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7,6,6,0,8,3,3,5,5,3,2,2,2,3,4,6,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7,6,6,0,8,3,3,5,5,4,2,2,2,5,4,6,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7,0,6,0,6,3,3,3,3,2,0,2,0,4,4,4,4,2,6,0,0,4,4,4,4,2,5,2,0,0,5,0,0,2,6,2,6,3,3,3,3,2,2,2,0,4,4,4,4,2,5,0,5,4,4,4,4,2,4,2,0,4,4,4,4,2,6,0,8,3,3,5,5,2,2,2,2,4,4,6,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7,2,6,0,8,3,3,5,5,2,2,2,0,4,4,6,6,2,5,0,8,4,4,6,6,2,4,0,7,4,4,7,7],An=[0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,0,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,1,0,0,0,1,0,1,0,1,1,1,0,1],Cn=[1,2,0,2,2,2,2,2,1,2,1,2,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3,3,2,0,2,2,2,2,2,1,2,1,2,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3,1,2,0,2,2,2,2,2,1,2,1,2,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3,1,2,0,2,2,2,2,2,1,2,1,2,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3,0,2,0,2,2,2,2,2,1,0,1,0,3,3,3,3,2,2,0,0,2,2,2,3,1,3,1,0,0,3,0,0,2,2,2,2,2,2,2,2,1,2,1,0,3,3,3,3,2,2,0,2,2,2,2,2,1,3,1,0,3,3,3,3,2,2,0,2,2,2,2,2,1,2,1,2,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3,2,2,0,2,2,2,2,2,1,2,1,0,3,3,3,3,2,2,0,2,2,2,2,2,1,3,0,3,3,3,3,3],yn=[1,2,0,0,0,2,2,0,1,2,1,0,0,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0,3,2,0,0,2,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0,1,2,0,0,0,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0,1,2,0,0,0,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0,0,2,0,0,2,2,2,0,1,0,1,0,3,3,3,0,2,2,0,0,2,2,2,0,1,3,1,0,0,3,0,0,2,2,2,0,2,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,2,2,2,0,1,3,1,0,3,3,3,0,2,2,0,0,2,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0,2,2,0,0,2,2,2,0,1,2,1,0,3,3,3,0,2,2,0,0,0,2,2,0,1,3,0,0,0,3,3,0];this.getOpcodeMetadata=function(l,C){return{opcode:l,mnenomic:c[l],minCycles:vt[l],maxCycles:vt[l]+An[l],insnlength:Cn[l]}},this.setNMI=function(){A=mn(),G=1,a=a-1&65535},this.setIRQ=function(){p||(A=un(),G=1,a=a-1&65535)},this.getSP=function(){return m},this.getPC=function(){return a-1&65535},this.getT=function(){return G},this.isHalted=function(){return c[u0]=="uKIL"},this.isPCStable=function(){return G==0}};var Ot=class{constructor(){this.cpu=new ot;this.interruptType=0}connectMemoryBus(t){this.cpu.connectBus(t)}advanceClock(){if(this.interruptType&&this.isStable()){switch(this.interruptType){case 1:this.cpu.setNMI();break;case 2:this.cpu.setIRQ();break}this.interruptType=0}this.cpu.clockPulse()}advanceInsn(){do this.advanceClock();while(!this.isStable())}reset(){this.cpu.reset(),this.interruptType=0}interrupt(t){this.interruptType!=1&&(this.interruptType=t)}NMI(){this.interrupt(1)}IRQ(){this.interrupt(2)}getSP(){return this.cpu.getSP()}getPC(){return this.cpu.getPC()}isHalted(){return this.cpu.isHalted()}saveState(){var t=this.cpu.saveState();return t.it=this.interruptType,t}loadState(t){this.cpu.loadState(t),this.interruptType=t.it}isStable(){return this.cpu.isPCStable()}getOpcodeMetadata(t){return this.cpu.getOpcodeMetadata(t)}};var Ne=class{constructor(t){this.maxROMSize=262144;this.videoOffsetBytes=0;this.prefix=t;var n=this;this.cpu={getPC:n.getPC.bind(n),getSP:n.getSP.bind(n),isStable:n.isStable.bind(n),reset:n.reset.bind(n),saveState:()=>n.getCPUState(),loadState:()=>{console.log("loadState not implemented")},connectMemoryBus(){console.log("connectMemoryBus not implemented")}}}getImports(t){return{}}async fetchWASM(){var t=await fetch("res/"+this.prefix+".wasm");if(t.status==200||t.size){var n=await t.arrayBuffer(),a=await WebAssembly.compile(n),m=await WebAssembly.instantiate(a,this.getImports(a));this.instance=m,this.exports=m.exports}else throw new Error("could not load WASM file")}allocateBIOS(t){this.biosptr=this.exports.malloc(t.byteLength),this.biosarr=new Uint8Array(this.exports.memory.buffer,this.biosptr,t.byteLength)}async fetchBIOS(){var t=await fetch("res/"+this.prefix+".bios");if(t.status==200||t.size){var n=new Uint8Array(await t.arrayBuffer());this.allocateBIOS(n),this.loadBIOS(n)}else throw new Error("could not load BIOS file")}async initWASM(){this.sys=this.exports.machine_init(this.biosptr);let t=this.exports.machine_get_state_size();this.stateptr=this.exports.malloc(t);let n=this.exports.machine_get_controls_state_size();this.ctrlstateptr=this.exports.malloc(n);let a=this.exports.machine_get_cpu_state_size();this.cpustateptr=this.exports.malloc(a),this.romptr=this.exports.malloc(this.maxROMSize),this.statearr=new Uint8Array(this.exports.memory.buffer,this.stateptr,t),this.ctrlstatearr=new Uint8Array(this.exports.memory.buffer,this.ctrlstateptr,n),this.cpustatearr=new Uint8Array(this.exports.memory.buffer,this.cpustateptr,a);le Line truncated
A `+$(h.A)+" "+(h.R?"":"BUSY")+`
X `+$(h.X)+`
Y `+$(h.Y)+" SP "+$(h.SP)+`
@@ -27,4 +27,4 @@ $`+$(m)+": ",x+=$(y,4)+" "+_n(h,y,!0),m++,i=0):(i==0&&(x+=`
$`+$(m)+": "),x+=$(Y(m))+" ",++i==8&&(i=0))}return x+`
`}function _n(h,t,n){for(var a=t,m=h.debugSymbols&&h.debugSymbols.addr2symbol;m&&t>=0;){var o=m[t];if(o){var o=m[t];return n?o+" + $"+$(a-t):o}if(!n)break;t--}return""}function wn(h){return typeof h.connectVideo=="function"}function kn(h){return typeof h.connectAudio=="function"}function Bn(h){return typeof h.setKeyInput=="function"}function Tt(h){return typeof h.setPaddleInput=="function"}function xt(h){return typeof h.getRasterY=="function"}function Dn(h){return typeof h.connectProbe=="function"}function Rn(h){return typeof h.loadBIOS=="function"}function Nn(h){return typeof h.connectSerialIO=="function"}var Ie=class extends ye{constructor(t){super(),this.mainElement=t}reset(){this.machine.reset(),this.serialVisualizer!=null&&this.serialVisualizer.reset()}loadState(t){this.machine.loadState(t)}saveState(){return this.machine.saveState()}getSP(){return this.machine.cpu.getSP()}getPC(){return this.machine.cpu.getPC()}isStable(){return this.machine.cpu.isStable()}getCPUState(){return this.machine.cpu.saveState()}loadControlsState(t){this.machine.loadControlsState(t)}saveControlsState(){return this.machine.saveControlsState()}async start(){this.machine=this.newMachine();let t=this.machine;t instanceof Ne&&await t.loadWASM();var n;if(wn(t)){var a=t.getVideoParams();this.video=new pt(this.mainElement,a.width,a.height,{overscan:!!a.overscan,rotate:a.rotate|0,aspect:a.aspect}),this.video.create(),t.connectVideo(this.video.getFrameData()),Bn(t)&&(this.video.setKeyboardEvents(t.setKeyInput.bind(t)),this.poller=new kt(t.setKeyInput.bind(t))),n=a.videoFrequency}if(this.timer=new wt(n||60,this.nextFrame.bind(this)),kn(t)){var m=t.getAudioParams();this.audio=new ze(m.sampleRate),this.audio.start(),t.connectAudio(this.audio)}Tt(t)&&this.video.setupMouseEvents(),Dn(t)&&(this.probeRecorder=new Ke(t),this.startProbing=()=>(t.connectProbe(this.probeRecorder),this.probeRecorder),this.stopProbing=()=>{t.connectProbe(null)}),Rn(t)&&(this.loadBIOS=(o,d)=>{t.loadBIOS(d,o)}),Nn(t)&&(this.serialIOInterface==null?this.serialVisualizer=new dt(this.mainElement,t):t.connectSerialIO(this.serialIOInterface))}loadROM(t,n,a){this.machine.loadROM(n,t,a),this.reset()}pollControls(){this.poller&&this.poller.poll(),Tt(this.machine)&&(this.machine.setPaddleInput(0,this.video.paddle_x),this.machine.setPaddleInput(1,this.video.paddle_y),this.machine.setPaddleButton&&this.video.paddle_buttons!=null&&(this.machine.setPaddleButton(0,this.video.paddle_buttons[0]),this.machine.setPaddleButton(1,this.video.paddle_buttons[1]),this.machine.setPaddleButton(2,this.video.paddle_buttons[2]))),this.machine.pollControls&&this.machine.pollControls()}advance(t){let n=this.getDebugCallback();try{var a=this.machine.advanceFrame(n);return a}finally{!t&&this.video&&(this.video.updateFrame(),this.updateVideoDebugger()),!t&&this.serialVisualizer&&this.serialVisualizer.refresh()}}updateVideoDebugger(){var t;if(!this.isRunning()&&xt(this.machine)&&this.machine.getRasterCanvasPosition){let{x:n,y:a}=this.machine.getRasterCanvasPosition();if(n>=0||a>=0){let m=(t=this.video)==null?void 0:t.getContext();m&&Pt(m,n,a,1)}}}advanceFrameClock(t,n){if(n>0)return this.machine instanceof Ne?this.machine.advanceFrameClock(t,n):this.machine.advanceFrame(()=>--n<=0)}isRunning(){return this.timer&&this.timer.isRunning()}resume(){this.timer.start(),this.audio&&this.audio.start(),this.poller&&this.poller.start()}pause(){this.timer.stop(),this.audio&&this.audio.stop(),this.poller&&this.poller.stop()}runToVsync(){this.restartDebugging();var t=!1;this.runEval(()=>{if(this.getRasterScanline()>0)t=!0;else return t})}getRasterScanline(){return xt(this.machine)&&this.machine.getRasterY?this.machine.getRasterY():-1}getRasterLineClock(){return xt(this.machine)&&this.machine.getRasterX?this.machine.getRasterX():-1}readAddress(t){return this.machine.read(t)}getDebugCategories(){if(ve(this.machine))return this.machine.getDebugCategories()}getDebugInfo(t,n){return ve(this.machine)&&this.machine.getDebugInfo(t,n)}},Ft=class extends Ie{constructor(){super(...arguments);this.getOpcodeMetadata=Yt}getToolForFilename(n){return Ht(n)}getDefaultExtensions(){return[".c",".cpp",".o64",".acme",".xa",".ca65",".dasm",".ecs",".wiz"]}disassemble(n,a){return at(n,a(n),a(n+1),a(n+2))}getDebugCategories(){return ve(this.machine)?this.machine.getDebugCategories():["CPU","ZPRAM","Stack"]}getDebugInfo(n,a){switch(n){case"CPU":return Vt(a.c);case"ZPRAM":return rt(a.b||a.ram,0,256);case"Stack":return Le(this,a.b||a.ram,256,511,256+a.c.SP,32);default:return ve(this.machine)&&this.machine.getDebugInfo(n,a)}}},Ut=class extends Ie{constructor(){super(...arguments);this.getToolForFilename=zt}getDefaultExtensions(){return[".c",".ns",".s",".scc",".sgb",".z",".wiz"]}getDebugCategories(){return ve(this.machine)?this.machine.getDebugCategories():["CPU","Stack"]}getDebugInfo(n,a){switch(n){case"CPU":return Wt(a.c);case"Stack":{var m=a.c.SP-1&65535,o=m&65280,d=o+255;return m==0&&(m=65536),Le(this,[],o,d,m,205)}default:return ve(this. Line truncated
`),a.op==="read"?n+="<< ":a.op==="write"&&(n+=">> "),t=a.op),a.value==10?(n+="\u21B5",t=""):n+=gt(a.value);this.textarea.value=n,this.lastOutCount=this.device.serialOut.length,this.textarea.style.display="block"}}};export{at as a,ct as b,Ye as c,it as d,Bt as e,Dt as f,En as g,gn as h,Zn as i,pn as j,Rt as k,je as l,Ot as m,Ke as n,Re as o,ft as p,st as q,Nt as r,Ne as s,Et as t,ve as u,mt as v,Pn as w,Ht as x,Zt as y,Vt as z,Yt as A,Wt as B,fr as C,lt as D,zt as E,sr as F,Mt as G,Le as H,Ie as I,Ft as J,Ut as K,Xt as L};
//# sourceMappingURL=chunk-G4HBIXG4.js.map
//# sourceMappingURL=chunk-4676AC7I.js.map
@@ -1,7 +1,7 @@
{
"version": 3,
"sources": ["../src/common/cpu/disasm6502.ts", "../src/common/cpu/ZilogZ80.ts", "../src/common/audio.ts", "../src/common/probe.ts", "../src/common/devices.ts", "../src/common/cpu/disasmz80.ts", "../src/common/cpu/6809.ts", "../src/common/cpu/MOS6502.ts", "../src/common/wasmplatform.ts", "../src/common/baseplatform.ts"],
"sourcesContent": ["\nimport { hex } from \"../util\";\n\nexport var OPS_6502 = [\n {mn:\"BRK\",am:\"\",nb:1,il:0,c1:7,c2:0,nw:3,br:1,mod:\"SI\"}, // 0\n {mn:\"ORA\",am:\"(aa,x)\",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:\"AZN\"}, // 1\n {mn:\"KIL\",am:\"\",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:\"\"}, // 2\n {mn:\"SLO\",am:\"(aa,x)\",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 3\n {mn:\"NOP\",am:\"aa\",nb:2,il:1,c1:3,c2:0,nw:0,br:0,mod:\"\"}, // 4\n {mn:\"ORA\",am:\"aa\",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:\"AZN\"}, // 5\n {mn:\"ASL\",am:\"aa\",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:\"CZN\"}, // 6\n {mn:\"SLO\",am:\"aa\",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 7\n {mn:\"PHP\",am:\"\",nb:1,il:0,c1:3,c2:0,nw:1,br:0,mod:\"S\"}, // 8\n {mn:\"ORA\",am:\"#aa\",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:\"AZN\"}, // 9\n {mn:\"ASL\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"ACZN\"}, // a\n {mn:\"ANC\",am:\"#aa\",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:\"ACZN\"}, // b\n {mn:\"NOP\",am:\"AAAA\",nb:3,il:1,c1:3,c2:0,nw:0,br:0,mod:\"\"}, // c\n {mn:\"ORA\",am:\"AAAA\",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:\"AZN\"}, // d\n {mn:\"ASL\",am:\"AAAA\",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:\"CZN\"}, // e\n {mn:\"SLO\",am:\"AAAA\",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:\"ACZN\"}, // f\n {mn:\"BPL\",am:\"branch\",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:\"\"}, // 10\n {mn:\"ORA\",am:\"(aa),y\",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:\"AZN\"}, // 11\n {mn:\"KIL\",am:\"\",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:\"\"}, // 12\n {mn:\"SLO\",am:\"(aa),y\",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 13\n {mn:\"NOP\",am:\"aa,x\",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:\"\"}, // 14\n {mn:\"ORA\",am:\"aa,x\",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:\"AZN\"}, // 15\n {mn:\"ASL\",am:\"aa,x\",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:\"CZN\"}, // 16\n {mn:\"SLO\",am:\"aa,x\",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 17\n {mn:\"CLC\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"C\"}, // 18\n {mn:\"ORA\",am:\"AAAA,y\",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:\"AZN\"}, // 19\n {mn:\"NOP\",am:\"\",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:\"\"}, // 1a\n {mn:\"SLO\",am:\"AAAA,y\",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 1b\n {mn:\"NOP\",am:\"AAAA,x\",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:\"\"}, // 1c\n {mn:\"ORA\",am:\"AAAA,x\",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:\"AZN\"}, // 1d\n {mn:\"ASL\",am:\"AAAA,x\",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:\"CZN\"}, // 1e\n {mn:\"SLO\",am:\"AAAA,x\",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 1f\n {mn:\"JSR\",am:\"AAAA\",nb:3,il:0,c1:6,c2:0,nw:2,br:1,mod:\"S\"}, // 20\n {mn:\"AND\",am:\"(aa,x)\",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:\"AZN\"}, // 21\n {mn:\"KIL\",am:\"\",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:\"\"}, // 22\n {mn:\"RLA\",am:\"(aa,x)\",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 23\n {mn:\"BIT\",am:\"aa\",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:\"ZVN\"}, // 24\n {mn:\"AND\",am:\"aa\",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:\"AZN\"}, // 25\n {mn:\"ROL\",am:\"aa\",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:\"CZN\"}, // 26\n {mn:\"RLA\",am:\"aa\",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 27\n {mn:\"PLP\",am:\"\",nb:1,il:0,c1:4,c2:0,nw:0,br:0,mod:\"SCZIDVN\"}, // 28\n {mn:\"AND\",am:\"#aa\",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:\"AZN\"}, // 29\n {mn:\"ROL\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"ACZN\"}, // 2a\n {mn:\"ANC\",am:\"#aa\",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:\"ACZN\"}, // 2b\n {mn:\"BIT\",am:\"AAAA\",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:\"ZVN\"}, // 2c\n {mn:\"AND\",am:\"AAAA\",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:\"AZN\"}, // 2d\n {mn:\"ROL\",am:\"AAAA\",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:\"CZN\"}, // 2e\n {mn:\"RLA\",am:\"AAAA\",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 2f\n {mn:\"BMI\",am:\"branch\",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:\"\"}, // 30\n {mn:\"AND\",am:\"(aa),y\",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:\"AZN\"}, // 31\n {mn:\"KIL\",am:\"\",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:\"\"}, // 32\n {mn:\"RLA\",am:\"(aa),y\",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 33\n {mn:\"NOP\",am:\"aa,x\",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:\"\"}, // 34\n {mn:\"AND\",am:\"aa,x\",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:\"AZN\"}, // 35\n {mn:\"ROL\",am:\"aa,x\",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:\"CZN\"}, // 36\n {mn:\"RLA\",am:\"aa,x\",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 37\n {mn:\"SEC\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"C\"}, // 38\n {mn:\"AND\",am:\"AAAA,y\",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:\"AZN\"}, // 39\n {mn:\"NOP\",am:\"\",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:\"\"}, // 3a\n {mn:\"RLA\",am:\"AAAA,y\",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 3b\n {mn:\"NOP\",am:\"AAAA,x\",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:\"\"}, // 3c\n {mn:\"AND\",am:\"AAAA,x\",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:\"AZN\"}, // 3d\n {mn:\"ROL\",am:\"AAAA,x\",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:\"CZN\"}, // 3e\n {mn:\"RLA\",am:\"AAAA,x\",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 3f\n {mn:\"RTI\",am:\"\",nb:1,il:0,c1:6,c2:0,nw:0,br:1,mod:\"SLine truncated
"mappings": "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 truncated
"names": ["OPS_6502", "disassemble6502", "pc", "b0", "b1", "b2", "op", "s", "am", "isaddr", "offset", "hex", "FastZ80", "coreParameter", "core", "a", "b", "c", "d", "e", "h", "l", "a_prime", "b_prime", "c_prime", "d_prime", "e_prime", "h_prime", "l_prime", "ix", "iy", "i", "r", "sp", "pc", "flags", "flags_prime", "imode", "iff1", "iff2", "halted", "do_delayed_di", "do_delayed_ei", "cycle_counter", "getState", "get_flags_register", "get_flags_prime", "setState", "state", "set_flags_register", "set_flags_prime", "reset", "run_instruction", "doing_delayed_di", "doing_delayed_ei", "opcode", "decode_instruction", "retval", "interrupt", "non_maskable", "data", "push_word", "vector_address", "get_operand", "operand", "op_array", "do_add", "do_adc", "do_sub", "do_sbc", "do_and", "do_xor", "do_or", "do_cp", "func", "instructions", "cycle_counts", "get_signed_offset_byte", "value", "update_xy_flags", "result", "get_parity", "parity_bits", "pop_word", "do_conditional_absolute_jump", "condition", "do_conditional_relative_jump", "offset", "do_conditional_call", "do_conditional_return", "do_reset", "address", "temp", "do_inc", "do_dec", "do_hl_add", "hl", "do_hl_adc", "do_hl_sbc", "do_in", "port", "do_neg", "do_ldi", "read_value", "do_cpi", "temp_carry", "do_ini", "do_outi", "do_ldd", "do_cpd", "do_ind", "do_outd", "do_rlc", "do_rrc", "do_rl", "do_rr", "do_sla", "do_sra", "do_sll", "do_srl", "do_ix_add", "temp_s", "temp_z", "temp_p", "bit_number", "reg_code", "cycle_counts_cb", "dd_instructions", "cycle_counts_dd", "ed_instructions", "cycle_counts_ed", "hl_value", "temp1", "temp2", "ddcb_functions", "Z80", "bus", "s", "MasterAudio", "AY38910_Audio", "master", "i", "val", "SN76489_Audio", "newPOKEYAudio", "count", "audio", "pokey", "POKEYDeviceChannel", "combinePolys", "a", "b", "arr", "n", "divideBy", "NOTPOLY5", "POLY4", "PURE", "VOL_ONLY", "VOLUME_MASK", "POLY9", "CH1_179", "CH3_179", "CH1_CH2", "CH3_CH4", "CH1_FILTER", "CH2_FILTER", "CLOCK_15", "DIV_64", "DIV_15", "POLY4_SIZE", "POLY5_SIZE", "POLY9_SIZE", "POLY17_SIZE", "CHAN1", "CHAN2", "CHAN3", "CHAN4", "CHIP1", "CHIP2", "CHIP3", "CHIP4", "SAMPLE", "FREQ_17_EXACT", "FREQ_17_APPROX", "bit1", "bit2", "bit4", "bit5", "bit9", "bit15", "bit31", "bit17", "bit17_5", "bit5_4", "wavetones", "div2", "div6", "div31", "div93", "bit15_4", "bit5_2", "bit5_6", "tiawavetones", "regs", "counters", "deltas", "volume", "audc", "waveforms", "buffer", "sampleRate", "clock", "baseDelta", "dirty", "length", "rate", "updateValues", "addr", "ctrl", "base", "div", "j", "k", "value", "s", "sample", "d", "v", "wav", "cnt", "on", "WorkerSoundChannel", "worker", "output", "pending", "pendingLength", "e", "buf", "l", "SampleAudio", "clockfreq", "self", "sfrac", "sinc", "accum", "bufpos", "bufferlist", "idrain", "ifill", "nbuffers", "mix", "ape", "buflen", "lbuf", "m", "clearBuffers", "createContext", "AudioContext", "ctx", "arrbuf", "inext", "SampledAudio", "TssChannelAdapter", "chans", "oversample", "c", "sink", "bufs", "ch", "total", "ProbeRecorder", "m", "buflen", "newbuflen", "a", "src", "clocks", "address", "SP", "type", "value", "op", "count", "i", "NullProbe", "src", "BasicHeadlessMachine", "key", "code", "flags", "probe", "probing", "data", "title", "origin", "state", "c", "membus", "a", "val", "v", "iobus", "BasicMachine", "audio", "pixels", "BasicScanlineMachine", "trap", "endLineClock", "steps", "sl", "Z80_OPS", "Z80_OPS_ED", "Z80_OPS_CB", "disassembleZ80", "pc", "b0", "b1", "b2", "b3", "op", "n", "am", "bytes", "isaddr", "iscall", "ireg", "hex", "offset", "CPU6809", "ticks", "rA", "rB", "rX", "rY", "rU", "rS", "PC", "CC", "DP", "F_CARRY", "F_OVERFLOW", "F_ZERO", "F_NEGATIVE", "F_IRQMASK", "F_HALFCARRY", "F_FIRQMASK", "F_ENTIRE", "vecRESET", "vecNMI", "vecSWI", "vecIRQ", "vecFIRQ", "vecSWI2", "vecSWI3", "T", "IRQs", "byteTo", "byteAt", "cycles", "cycles2", "flagsNZ", "setV8", "a", "b", "r", "setV16", "getD", "setD", "v", "PUSHB", "PUSHW", "PUSHBU", "PUSHWU", "PULLB", "PULLW", "PULLBU", "PULLWU", "PSHS", "ucTemp", "i", "PSHU", "PULS", "PULU", "getPBR", "ucPostByte", "setPBR", "TFREXG", "bExchange", "signed", "x", "signed16", "fetch", "fetch16", "v1", "v2", "ReadWord", "addr", "WriteWord", "PostByte", "pb", "preg", "xchg", "sTemp", "sByte", "flagsNZ16", "word", "oINC", "oDEC", "oSUB", "temp", "oSUB16", "oADD", "oADD16", "oADC", "oSBC", "oCMP", "oCMP16", "oNEG", "oLSR", "oASR", "oASL", "oROL", "oldc", "oROR", "oEOR", "oOR", "oAND", "oCOM", "dpadd", "step", "oldT", "oldPC", "opcode", "cf", "nhi", "nlo", "reset", "ds", "ds11", "ds10", "disasm", "d", "pc", "toHexN", "n", "s", "toHex2", "toHex4", "rx", "ro", "j", "sx", "bytes", "mode", "mnemo", "ixr", "disp", "ind", "mod", "ofs8", "ofs16", "Ts", "Tt", "t", "bt", "ba", "tck", "reg", "value", "f", "fx", "_MOS6502", "self", "RDY", "T", "instruction", "aBus", "bus", "boo", "I", "fetchOpcodeAndDecodeInstruction", "PC", "RESET_VECTOR", "SP", "A", "X", "Y", "N", "V", "D", "Z", "C", "opcode", "data", "AD", "BA", "BALCrossed", "IA", "branchOffset",Line truncated
"sourcesContent": ["\nimport { hex } from \"../util\";\n\nexport var OPS_6502 = [\n {mn:\"BRK\",am:\"\",nb:1,il:0,c1:7,c2:0,nw:3,br:1,mod:\"SI\"}, // 0\n {mn:\"ORA\",am:\"(aa,x)\",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:\"AZN\"}, // 1\n {mn:\"KIL\",am:\"\",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:\"\"}, // 2\n {mn:\"SLO\",am:\"(aa,x)\",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 3\n {mn:\"NOP\",am:\"aa\",nb:2,il:1,c1:3,c2:0,nw:0,br:0,mod:\"\"}, // 4\n {mn:\"ORA\",am:\"aa\",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:\"AZN\"}, // 5\n {mn:\"ASL\",am:\"aa\",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:\"CZN\"}, // 6\n {mn:\"SLO\",am:\"aa\",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 7\n {mn:\"PHP\",am:\"\",nb:1,il:0,c1:3,c2:0,nw:1,br:0,mod:\"S\"}, // 8\n {mn:\"ORA\",am:\"#aa\",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:\"AZN\"}, // 9\n {mn:\"ASL\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"ACZN\"}, // a\n {mn:\"ANC\",am:\"#aa\",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:\"ACZN\"}, // b\n {mn:\"NOP\",am:\"AAAA\",nb:3,il:1,c1:3,c2:0,nw:0,br:0,mod:\"\"}, // c\n {mn:\"ORA\",am:\"AAAA\",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:\"AZN\"}, // d\n {mn:\"ASL\",am:\"AAAA\",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:\"CZN\"}, // e\n {mn:\"SLO\",am:\"AAAA\",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:\"ACZN\"}, // f\n {mn:\"BPL\",am:\"branch\",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:\"\"}, // 10\n {mn:\"ORA\",am:\"(aa),y\",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:\"AZN\"}, // 11\n {mn:\"KIL\",am:\"\",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:\"\"}, // 12\n {mn:\"SLO\",am:\"(aa),y\",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 13\n {mn:\"NOP\",am:\"aa,x\",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:\"\"}, // 14\n {mn:\"ORA\",am:\"aa,x\",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:\"AZN\"}, // 15\n {mn:\"ASL\",am:\"aa,x\",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:\"CZN\"}, // 16\n {mn:\"SLO\",am:\"aa,x\",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 17\n {mn:\"CLC\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"C\"}, // 18\n {mn:\"ORA\",am:\"AAAA,y\",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:\"AZN\"}, // 19\n {mn:\"NOP\",am:\"\",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:\"\"}, // 1a\n {mn:\"SLO\",am:\"AAAA,y\",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 1b\n {mn:\"NOP\",am:\"AAAA,x\",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:\"\"}, // 1c\n {mn:\"ORA\",am:\"AAAA,x\",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:\"AZN\"}, // 1d\n {mn:\"ASL\",am:\"AAAA,x\",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:\"CZN\"}, // 1e\n {mn:\"SLO\",am:\"AAAA,x\",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 1f\n {mn:\"JSR\",am:\"AAAA\",nb:3,il:0,c1:6,c2:0,nw:2,br:1,mod:\"S\"}, // 20\n {mn:\"AND\",am:\"(aa,x)\",nb:2,il:0,c1:6,c2:0,nw:0,br:0,mod:\"AZN\"}, // 21\n {mn:\"KIL\",am:\"\",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:\"\"}, // 22\n {mn:\"RLA\",am:\"(aa,x)\",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 23\n {mn:\"BIT\",am:\"aa\",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:\"ZVN\"}, // 24\n {mn:\"AND\",am:\"aa\",nb:2,il:0,c1:3,c2:0,nw:0,br:0,mod:\"AZN\"}, // 25\n {mn:\"ROL\",am:\"aa\",nb:2,il:0,c1:5,c2:0,nw:2,br:0,mod:\"CZN\"}, // 26\n {mn:\"RLA\",am:\"aa\",nb:2,il:1,c1:5,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 27\n {mn:\"PLP\",am:\"\",nb:1,il:0,c1:4,c2:0,nw:0,br:0,mod:\"SCZIDVN\"}, // 28\n {mn:\"AND\",am:\"#aa\",nb:2,il:0,c1:2,c2:0,nw:0,br:0,mod:\"AZN\"}, // 29\n {mn:\"ROL\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"ACZN\"}, // 2a\n {mn:\"ANC\",am:\"#aa\",nb:2,il:1,c1:2,c2:0,nw:0,br:0,mod:\"ACZN\"}, // 2b\n {mn:\"BIT\",am:\"AAAA\",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:\"ZVN\"}, // 2c\n {mn:\"AND\",am:\"AAAA\",nb:3,il:0,c1:4,c2:0,nw:0,br:0,mod:\"AZN\"}, // 2d\n {mn:\"ROL\",am:\"AAAA\",nb:3,il:0,c1:6,c2:0,nw:2,br:0,mod:\"CZN\"}, // 2e\n {mn:\"RLA\",am:\"AAAA\",nb:3,il:1,c1:6,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 2f\n {mn:\"BMI\",am:\"branch\",nb:2,il:0,c1:2,c2:2,nw:0,br:1,mod:\"\"}, // 30\n {mn:\"AND\",am:\"(aa),y\",nb:2,il:0,c1:5,c2:1,nw:0,br:0,mod:\"AZN\"}, // 31\n {mn:\"KIL\",am:\"\",nb:1,il:2,c1:3,c2:0,nw:0,br:1,mod:\"\"}, // 32\n {mn:\"RLA\",am:\"(aa),y\",nb:2,il:1,c1:8,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 33\n {mn:\"NOP\",am:\"aa,x\",nb:2,il:1,c1:4,c2:0,nw:0,br:0,mod:\"\"}, // 34\n {mn:\"AND\",am:\"aa,x\",nb:2,il:0,c1:4,c2:0,nw:0,br:0,mod:\"AZN\"}, // 35\n {mn:\"ROL\",am:\"aa,x\",nb:2,il:0,c1:6,c2:0,nw:2,br:0,mod:\"CZN\"}, // 36\n {mn:\"RLA\",am:\"aa,x\",nb:2,il:1,c1:6,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 37\n {mn:\"SEC\",am:\"\",nb:1,il:0,c1:2,c2:0,nw:0,br:0,mod:\"C\"}, // 38\n {mn:\"AND\",am:\"AAAA,y\",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:\"AZN\"}, // 39\n {mn:\"NOP\",am:\"\",nb:1,il:1,c1:2,c2:0,nw:0,br:0,mod:\"\"}, // 3a\n {mn:\"RLA\",am:\"AAAA,y\",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 3b\n {mn:\"NOP\",am:\"AAAA,x\",nb:3,il:1,c1:4,c2:0,nw:0,br:0,mod:\"\"}, // 3c\n {mn:\"AND\",am:\"AAAA,x\",nb:3,il:0,c1:4,c2:1,nw:0,br:0,mod:\"AZN\"}, // 3d\n {mn:\"ROL\",am:\"AAAA,x\",nb:3,il:0,c1:7,c2:0,nw:2,br:0,mod:\"CZN\"}, // 3e\n {mn:\"RLA\",am:\"AAAA,x\",nb:3,il:1,c1:7,c2:0,nw:2,br:0,mod:\"ACZN\"}, // 3f\n {mn:\"RTI\",am:\"\",nb:1,il:0,c1:6,c2:0,nw:0,br:1,mod:\"SLine truncated
"mappings": "gHAGO,IAAIA,GAAW,CACpB,CAAC,GAAG,MAAM,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,IAAI,EACtD,CAAC,GAAG,MAAM,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,KAAK,EAC7D,CAAC,GAAG,MAAM,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EACpD,CAAC,GAAG,MAAM,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,MAAM,EAC9D,CAAC,GAAG,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EACtD,CAAC,GAAG,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,KAAK,EACzD,CAAC,GAAG,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,KAAK,EACzD,CAAC,GAAG,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,MAAM,EAC1D,CAAC,GAAG,MAAM,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,GAAG,EACrD,CAAC,GAAG,MAAM,GAAG,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,KAAK,EAC1D,CAAC,GAAG,MAAM,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,MAAM,EACxD,CAAC,GAAG,MAAM,GAAG,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,MAAM,EAC3D,CAAC,GAAG,MAAM,GAAG,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EACxD,CAAC,GAAG,MAAM,GAAG,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,KAAK,EAC3D,CAAC,GAAG,MAAM,GAAG,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,KAAK,EAC3D,CAAC,GAAG,MAAM,GAAG,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,MAAM,EAC5D,CAAC,GAAG,MAAM,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAC1D,CAAC,GAAG,MAAM,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,KAAK,EAC7D,CAAC,GAAG,MAAM,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EACpD,CAAC,GAAG,MAAM,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,MAAM,EAC9D,CAAC,GAAG,MAAM,GAAG,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EACxD,CAAC,GAAG,MAAM,GAAG,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,KAAK,EAC3D,CAAC,GAAG,MAAM,GAAG,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,KAAK,EAC3D,CAAC,GAAG,MAAM,GAAG,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,MAAM,EAC5D,CAAC,GAAG,MAAM,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,GAAG,EACrD,CAAC,GAAG,MAAM,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,KAAK,EAC7D,CAAC,GAAG,MAAM,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EACpD,CAAC,GAAG,MAAM,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,MAAM,EAC9D,CAAC,GAAG,MAAM,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAC1D,CAAC,GAAG,MAAM,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,KAAK,EAC7D,CAAC,GAAG,MAAM,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,KAAK,EAC7D,CAAC,GAAG,MAAM,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,MAAM,EAC9D,CAAC,GAAG,MAAM,GAAG,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,GAAG,EACzD,CAAC,GAAG,MAAM,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,KAAK,EAC7D,CAAC,GAAG,MAAM,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EACpD,CAAC,GAAG,MAAM,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,MAAM,EAC9D,CAAC,GAAG,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,KAAK,EACzD,CAAC,GAAG,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,KAAK,EACzD,CAAC,GAAG,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,KAAK,EACzD,CAAC,GAAG,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,MAAM,EAC1D,CAAC,GAAG,MAAM,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,SAAS,EAC3D,CAAC,GAAG,MAAM,GAAG,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,KAAK,EAC1D,CAAC,GAAG,MAAM,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,MAAM,EACxD,CAAC,GAAG,MAAM,GAAG,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,MAAM,EAC3D,CAAC,GAAG,MAAM,GAAG,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,KAAK,EAC3D,CAAC,GAAG,MAAM,GAAG,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,KAAK,EAC3D,CAAC,GAAG,MAAM,GAAG,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,KAAK,EAC3D,CAAC,GAAG,MAAM,GAAG,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,MAAM,EAC5D,CAAC,GAAG,MAAM,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAC1D,CAAC,GAAG,MALine truncated
"names": ["OPS_6502", "disassemble6502", "pc", "b0", "b1", "b2", "op", "s", "am", "isaddr", "offset", "hex", "FastZ80", "coreParameter", "core", "a", "b", "c", "d", "e", "h", "l", "a_prime", "b_prime", "c_prime", "d_prime", "e_prime", "h_prime", "l_prime", "ix", "iy", "i", "r", "sp", "pc", "flags", "flags_prime", "imode", "iff1", "iff2", "halted", "do_delayed_di", "do_delayed_ei", "cycle_counter", "getState", "get_flags_register", "get_flags_prime", "setState", "state", "set_flags_register", "set_flags_prime", "reset", "run_instruction", "doing_delayed_di", "doing_delayed_ei", "opcode", "decode_instruction", "retval", "interrupt", "non_maskable", "data", "push_word", "vector_address", "get_operand", "operand", "op_array", "do_add", "do_adc", "do_sub", "do_sbc", "do_and", "do_xor", "do_or", "do_cp", "func", "instructions", "cycle_counts", "get_signed_offset_byte", "value", "update_xy_flags", "result", "get_parity", "parity_bits", "pop_word", "do_conditional_absolute_jump", "condition", "do_conditional_relative_jump", "offset", "do_conditional_call", "do_conditional_return", "do_reset", "address", "temp", "do_inc", "do_dec", "do_hl_add", "hl", "do_hl_adc", "do_hl_sbc", "do_in", "port", "do_neg", "do_ldi", "read_value", "do_cpi", "temp_carry", "do_ini", "do_outi", "do_ldd", "do_cpd", "do_ind", "do_outd", "do_rlc", "do_rrc", "do_rl", "do_rr", "do_sla", "do_sra", "do_sll", "do_srl", "do_ix_add", "temp_s", "temp_z", "temp_p", "bit_number", "reg_code", "cycle_counts_cb", "dd_instructions", "cycle_counts_dd", "ed_instructions", "cycle_counts_ed", "hl_value", "temp1", "temp2", "ddcb_functions", "Z80", "bus", "s", "MasterAudio", "AY38910_Audio", "master", "i", "val", "SN76489_Audio", "newPOKEYAudio", "count", "audio", "pokey", "POKEYDeviceChannel", "combinePolys", "a", "b", "arr", "n", "divideBy", "NOTPOLY5", "POLY4", "PURE", "VOL_ONLY", "VOLUME_MASK", "POLY9", "CH1_179", "CH3_179", "CH1_CH2", "CH3_CH4", "CH1_FILTER", "CH2_FILTER", "CLOCK_15", "DIV_64", "DIV_15", "POLY4_SIZE", "POLY5_SIZE", "POLY9_SIZE", "POLY17_SIZE", "CHAN1", "CHAN2", "CHAN3", "CHAN4", "CHIP1", "CHIP2", "CHIP3", "CHIP4", "SAMPLE", "FREQ_17_EXACT", "FREQ_17_APPROX", "bit1", "bit2", "bit4", "bit5", "bit9", "bit15", "bit31", "bit17", "bit17_5", "bit5_4", "wavetones", "div2", "div6", "div31", "div93", "bit15_4", "bit5_2", "bit5_6", "tiawavetones", "regs", "counters", "deltas", "volume", "audc", "waveforms", "buffer", "sampleRate", "clock", "baseDelta", "dirty", "length", "rate", "updateValues", "addr", "ctrl", "base", "div", "j", "k", "value", "s", "sample", "d", "v", "wav", "cnt", "on", "WorkerSoundChannel", "worker", "output", "pending", "pendingLength", "e", "buf", "l", "SampleAudio", "clockfreq", "self", "sfrac", "sinc", "accum", "bufpos", "bufferlist", "idrain", "ifill", "nbuffers", "mix", "ape", "buflen", "lbuf", "m", "clearBuffers", "createContext", "AudioContext", "ctx", "arrbuf", "inext", "SampledAudio", "TssChannelAdapter", "chans", "oversample", "c", "sink", "bufs", "ch", "total", "ProbeRecorder", "m", "buflen", "newbuflen", "a", "src", "clocks", "address", "SP", "type", "value", "op", "count", "i", "NullProbe", "src", "BasicHeadlessMachine", "key", "code", "flags", "probe", "probing", "data", "title", "origin", "state", "c", "membus", "a", "val", "v", "iobus", "BasicMachine", "audio", "pixels", "BasicScanlineMachine", "trap", "endLineClock", "steps", "sl", "Z80_OPS", "Z80_OPS_ED", "Z80_OPS_CB", "disassembleZ80", "pc", "b0", "b1", "b2", "b3", "op", "n", "am", "bytes", "isaddr", "iscall", "ireg", "hex", "offset", "CPU6809", "ticks", "rA", "rB", "rX", "rY", "rU", "rS", "PC", "CC", "DP", "F_CARRY", "F_OVERFLOW", "F_ZERO", "F_NEGATIVE", "F_IRQMASK", "F_HALFCARRY", "F_FIRQMASK", "F_ENTIRE", "vecRESET", "vecNMI", "vecSWI", "vecIRQ", "vecFIRQ", "vecSWI2", "vecSWI3", "T", "IRQs", "byteTo", "byteAt", "cycles", "cycles2", "flagsNZ", "setV8", "a", "b", "r", "setV16", "getD", "setD", "v", "PUSHB", "PUSHW", "PUSHBU", "PUSHWU", "PULLB", "PULLW", "PULLBU", "PULLWU", "PSHS", "ucTemp", "i", "PSHU", "PULS", "PULU", "getPBR", "ucPostByte", "setPBR", "TFREXG", "bExchange", "signed", "x", "signed16", "fetch", "fetch16", "v1", "v2", "ReadWord", "addr", "WriteWord", "PostByte", "pb", "preg", "xchg", "sTemp", "sByte", "flagsNZ16", "word", "oINC", "oDEC", "oSUB", "temp", "oSUB16", "oADD", "oADD16", "oADC", "oSBC", "oCMP", "oCMP16", "oNEG", "oLSR", "oASR", "oASL", "oROL", "oldc", "oROR", "oEOR", "oOR", "oAND", "oCOM", "dpadd", "step", "oldT", "oldPC", "opcode", "cf", "nhi", "nlo", "reset", "ds", "ds11", "ds10", "disasm", "d", "pc", "toHexN", "n", "s", "toHex2", "toHex4", "rx", "ro", "j", "sx", "bytes", "mode", "mnemo", "ixr", "disp", "ind", "mod", "ofs8", "ofs16", "Ts", "Tt", "t", "bt", "ba", "tck", "reg", "value", "f", "fx", "_MOS6502", "self", "RDY", "T", "instruction", "aBus", "bus", "boo", "I", "fetchOpcodeAndDecodeInstruction", "PC", "RESET_VECTOR", "SP", "A", "X", "Y", "N", "V", "D", "Z", "C", "opcode", "data", "AD", "BA", "BALCrossed", "IA", "branchOffset",Line truncated
}
+59 -61
View File
@@ -1,21 +1,21 @@
import{a as ef,b as tf,c as kP,d as Xg,e as _g,f as Rg,g as xl,h as hr,j as Sl,k as Ql,l as hs,m as TP}from"./chunk-UG4IOEUD.js";import{a as PP}from"./chunk-LNOKARBD.js";import{a as bl}from"./chunk-A7SWO6EA.js";import{a as Tg,b as Zg,c as XP}from"./chunk-OCVBA66T.js";import{D as KO,K as JO,t as Pg,u as kg}from"./chunk-G4HBIXG4.js";import{A as Ni,E as ui,F as GO,G as ls,I as cs,J as ml,K as NO,T as HO,V as $g,a as Gi,b as So,ba as gl,d as gt,e as Qo,f as $t,g as $e,h as FO,i as Qg,k as vg,m as fl,n as ul,o as dl,p as pn,q as wg,t as pl,w as yg,x as BO,y as vo,z as Ut}from"./chunk-TYDI7JZQ.js";import{a as st,b as Ol,c as xo,d as Sg,e as IO}from"./chunk-KT7KMEQC.js";var nf=Sg((Cg,rf)=>{(function(i){if(typeof Cg=="object"&&typeof rf!="undefined")rf.exports=i();else if(typeof define=="function"&&define.amd)define([],i);else{var e;typeof window!="undefined"?e=window:typeof global!="undefined"?e=global:typeof self!="undefined"?e=self:e=this,e.localforage=i()}})(function(){var i,e,t;return(function r(n,s,o){function a(h,O){if(!s[h]){if(!n[h]){var f=typeof xo=="function"&&xo;if(!O&&f)return f(h,!0);if(l)return l(h,!0);var u=new Error("Cannot find module '"+h+"'");throw u.code="MODULE_NOT_FOUND",u}var p=s[h]={exports:{}};n[h][0].call(p.exports,function(m){var S=n[h][1][m];return a(S||m)},p,p.exports,r,n,s,o)}return s[h].exports}for(var l=typeof xo=="function"&&xo,c=0;c<o.length;c++)a(o[c]);return a})({1:[function(r,n,s){(function(o){"use strict";var a=o.MutationObserver||o.WebKitMutationObserver,l;if(a){var c=0,h=new a(m),O=o.document.createTextNode("");h.observe(O,{characterData:!0}),l=function(){O.data=c=++c%2}}else if(!o.setImmediate&&typeof o.MessageChannel!="undefined"){var f=new o.MessageChannel;f.port1.onmessage=m,l=function(){f.port2.postMessage(0)}}else"document"in o&&"onreadystatechange"in o.document.createElement("script")?l=function(){var w=o.document.createElement("script");w.onreadystatechange=function(){m(),w.onreadystatechange=null,w.parentNode.removeChild(w),w=null},o.document.documentElement.appendChild(w)}:l=function(){setTimeout(m,0)};var u,p=[];function m(){u=!0;for(var w,C,R=p.length;R;){for(C=p,p=[],w=-1;++w<R;)C[w]();R=p.length}u=!1}n.exports=S;function S(w){p.push(w)===1&&!u&&l()}}).call(this,typeof global!="undefined"?global:typeof self!="undefined"?self:typeof window!="undefined"?window:{})},{}],2:[function(r,n,s){"use strict";var o=r(1);function a(){}var l={},c=["REJECTED"],h=["FULFILLED"],O=["PENDING"];n.exports=f;function f(P){if(typeof P!="function")throw new TypeError("resolver must be a function");this.state=O,this.queue=[],this.outcome=void 0,P!==a&&S(this,P)}f.prototype.catch=function(P){return this.then(null,P)},f.prototype.then=function(P,Z){if(typeof P!="function"&&this.state===h||typeof Z!="function"&&this.state===c)return this;var z=new this.constructor(a);if(this.state!==O){var D=this.state===h?P:Z;p(z,D,this.outcome)}else this.queue.push(new u(z,P,Z));return z};function u(P,Z,z){this.promise=P,typeof Z=="function"&&(this.onFulfilled=Z,this.callFulfilled=this.otherCallFulfilled),typeof z=="function"&&(this.onRejected=z,this.callRejected=this.otherCallRejected)}u.prototype.callFulfilled=function(P){l.resolve(this.promise,P)},u.prototype.otherCallFulfilled=function(P){p(this.promise,this.onFulfilled,P)},u.prototype.callRejected=function(P){l.reject(this.promise,P)},u.prototype.otherCallRejected=function(P){p(this.promise,this.onRejected,P)};function p(P,Z,z){o(function(){var D;try{D=Z(z)}catch(Oe){return l.reject(P,Oe)}D===P?l.reject(P,new TypeError("Cannot resolve promise with itself")):l.resolve(P,D)})}l.resolve=function(P,Z){var z=w(m,Z);if(z.status==="error")return l.reject(P,z.value);var D=z.value;if(D)S(P,D);else{P.state=h,P.outcome=Z;for(var Oe=-1,se=P.queue.length;++Oe<se;)P.queue[Oe].callFulfilled(Z)}return P},l.reject=function(P,Z){P.state=c,P.outcome=Z;for(var z=-1,D=P.queue.length;++z<D;)P.queue[z].callRejected(Z);return P};function m(P){var Z=P&&P.then;if(P&&(typeof P=="object"||typeof P=="function")&&typeof Z=="function")return function(){Z.apply(P,arguments)}}function S(P,Z){var z=!1;function D(he){z||(z=!0,l.reject(P,he))}function Oe(he){z||(z=!0,l.resolve(P,he))}function se(){Z(Oe,D)}var ee=w(se);ee.status==="error"&&D(ee.value)}function w(P,Z){var z={};try{z.value=P(Z),z.status="success"}catch(D){z.status="error",z.value=D}return z}f.resolve=C;function C(P){return P instanceof this?P:l.resolve(new this(a),P)}f.reject=R;function R(P){var Z=new this(a);return l.reject(Z,P)}f.all=A;function A(P){var Z=this;if(Object.prototype.toString.call(P)!=="[object Array]")return this.reject(new TypeError("must be an array"));var z=P.length,D=!1;if(!z)return this.resolve([]);for(var Oe=new Array(z),se=0,ee=-1,he=new this(a);++ee<z;)ge(P[ee],ee);return he;function ge(we,Y){Z.resolve(we).then(re,function(N){D||(D=!0,l.reject(he,N))});function re(N){Oe[Y]=N,++se===z&&!D&&(D=!0,l.resolve(he,Oe))}}}f.race=k;function k(P){var Z=this;if(Object.prototype.toString.call(P)!=="[object Line truncated
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function LA(i,e){return zA(i)||YA(i,e)||WA(i,e)||MA()}function WA(i,e){if(i){if(typeof i=="string")return $$(i,e);var t={}.toString.call(i).slice(8,-1);return t==="Object"&&i.constructor&&(t=i.constructor.name),t==="Map"||t==="Set"?Array.from(i):t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?$$(i,e):void 0}}var L$=Object.entries,P$=Object.setPrototypeOf,VA=Object.isFrozen,jA=Object.getPrototypeOf,qA=Object.getOwnPropertyDescriptor,vt=Object.freeze,wt=Object.seal,Js=Object.create,W$=typeof Reflect!="undefined"&&Reflect,sg=W$.apply,og=W$.construct;vt||(vt=function(e){return e});wt||(wt=function(e){return e});sg||(sg=function(e,t){for(var r=arguments.length,n=new Array(r>2?r-2:0),s=2;s<r;s++)n[s-2]=arguments[s];return e.apply(t,n)});og||(og=function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];return new e(...r)});var Hs=ht(Array.prototype.forEach),DA=ht(Array.prototype.lastIndexOf),k$=ht(Array.prototype.pop),Ks=ht(Array.prototype.push),IA=ht(Array.prototype.splice),nn=Array.isArray,qa=ht(String.prototype.toLowerCase),eg=ht(String.prototype.toString),T$=ht(String.prototype.match),Va=ht(String.prototype.replace),X$=ht(String.prototype.indexOf),FA=ht(String.prototype.trim),BA=ht(Number.prototype.toString),GA=ht(Boolean.prototype.toString),_$=typeof BigInt=="undefined"?null:ht(BigInt.prototype.toString),R$=typeof Symbol=="undefined"?null:ht(Symbol.prototype.toString),dt=ht(Object.prototype.hasOwnProperty),ja=ht(Object.prototype.toString),ut=ht(RegExp.prototype.test),Nn=NA(TypeError);function ht(i){return function(e){e instanceof RegExp&&(e.lastIndex=0);for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];return sg(i,e,r)}}function NA(i){return function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return og(i,t)}}function Ce(i,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:qa;if(P$&&P$(i,null),!nn(e))return i;let r=e.length;for(;r--;){let n=e[r];if(typeof n=="string"){let s=t(n);s!==n&&(VA(e)||(e[r]=s),n=s)}i[n]=!0}return i}function HA(i){for(let e=0;e<i.length;e++)dt(i,e)||(i[e]=null);return i}function Rt(i){let e=Js(null);for(let r of L$(i)){var t=LA(r,2);let n=t[0],s=t[1];dt(i,n)&&(nn(s)?e[n]=HA(s):s&&typeof s=="object"&&s.constructor===Object?e[n]=Rt(s):e[n]=s)}return e}function KA(i){switch(typeof i){case"string":return i;case"number":return BA(i);case"boolean":return GA(i);case"bigint":return _$?_$(i):"0";case"symbol":return R$?R$(i):"Symbol()";case"undefined":return ja(i);case"function":case"object":{if(i===null)return ja(i);let e=i,t=qi(e,"toString");if(typeof t=="function"){let r=t(e);return typeof r=="string"?r:ja(r)}return ja(i)}default:return ja(i)}}function qi(i,e){for(;i!==null;){let r=qA(i,e);if(r){if(r.get)return ht(r.get);if(typeof r.value=="function")return ht(r.value)}i=jA(i)}function t(){return null}return t}function JA(i){try{return ut(i,""),!0}catch(e){return!1}}var Z$=vt(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),tg=vt(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),ig=vt(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),eE=vt(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-gly Line truncated
`+Ge),Xi&&(Ge=Rr(Ge)),Z&&fn?he(Ge):Ge},e.setConfig=function(){let M=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};mo(M),ts=!0,cn=qe,hn=De},e.clearConfig=function(){_r=null,ts=!1,cn=null,hn=null,Z=D,z=""},e.isValidAttribute=function(M,b,_){_r||mo({});let L=Be(M),ne=Be(b);return V(L,ne,_)},e.addHook=function(M,b){typeof b=="function"&&dt(de,M)&&Ks(de[M],b)},e.removeHook=function(M,b){if(dt(de,M)){if(b!==void 0){let _=DA(de[M],b);return _===-1?void 0:IA(de[M],_,1)[0]}return k$(de[M])}},e.removeHooks=function(M){dt(de,M)&&(de[M]=[])},e.removeAllHooks=function(){de=M$()},e}var pE=V$();j$.exports=pE});var fg=IO(nf());var Le=[/^\s*[.#%]?(include|incbin|embed)\s+"(.+?)"/gmi,/^\s*([;']|[/][/])#(resource)\s+"(.+?)"/gm],Ie=[/^\s*([;]|[/][/])#link\s+"(.+?)"/gm],wo=[/^\s*(`include|[.]include)\s+"(.+?)"/gmi,/^\s*\$(include|\$dofile|\$write_image_in_table)\('(.+?)'/gmi,{re:/^\s*([.]arch)\s+(\w+)/gmi,suffix:".json"},/\$readmem[bh]\("(.+?)"/gmi],_P=[{re:/^\s*[.#%]?\s*include\s+<(.+?)>/gmi,system:!0}];function Eg(i){let e=i&&Hi(i);return e&&e.includeDirs&&e.includeDirs.length?_P:[]}var Ug=[/^\s+(USE|ASM)\s+(\S+[.]\S+)/gm],RP=[/^[!]src\s+"(.+?)"/gmi],ZP=[{re:/^\s*import\s*"(.+?)";/gmi,suffix:".wiz"},/^\s*embed\s*"(.+?)";/gmi],CP=[/^\s*(import)\s*"(.+?)"/gmi],UP=[/^\s*%%\s*#include\s+"(.+?)"/gm],Ag={apple2:{preloadFS:"65-apple2"},c64:{preloadFS:"65-c64"},vic20:{preloadFS:"65-vic20"},nes:{preloadFS:"65-nes"},atari8:{preloadFS:"65-atari8"},vector:{preloadFS:"65-none"},atari7800:{preloadFS:"65-none"},devel:{preloadFS:"65-none"},vcs:{preloadFS:"65-atari2600"},pce:{preloadFS:"65-pce"},exidy:{preloadFS:"65-none"}},yo={dasm:{id:"dasm",name:"DASM",kind:"assembler",arch:"6502",extensions:[".dasm"],editorStyle:"6502",helpURL:"https://raw.githubusercontent.com/dasm-assembler/dasm/refs/tags/v2.20.17/docs/dasm.txt",wasmModule:"dasm-wasisdk",version:"2.20.17",includePatterns:Le,linkPatterns:Ie},acme:{id:"acme",name:"ACME",kind:"assembler",arch:"6502",extensions:[".acme"],editorStyle:"6502",helpURL:"https://raw.githubusercontent.com/sehugg/acme/main/docs/QuickRef.txt",wasmModule:"acme",version:"0.97.1",includePatterns:[...Le,...RP],linkPatterns:Ie},xa:{id:"xa",name:"XA",kind:"assembler",arch:"6502",extensions:[".xa"],editorStyle:"6502",helpURL:"https://www.floodgap.com/retrotech/xa/",wasmModule:"xa",version:"2.4.1",includePatterns:Le,linkPatterns:Ie},nesasm:{id:"nesasm",name:"NESASM",kind:"assembler",arch:"6502",extensions:[".nesasm"],editorStyle:"6502",wasmModule:"nesasm",version:"3.1",includePatterns:Le,linkPatterns:Ie},merlin32:{id:"merlin32",name:"Merlin 32",kind:"assembler",arch:"6502",extensions:[".lnk"],editorStyle:"6502",wasmModule:"merlin32",version:"1.1.10",includePatterns:[...Le,...Ug],linkPatterns:Ie},cc65:{id:"cc65",name:"cc65",kind:"compiler",arch:"6502",extensions:[".c",".h"],includeDirs:["/include","/asminc"],editorStyle:"text/x-csrc",helpURL:"https://cc65.github.io/doc/cc65.html",wasmModule:"cc65",version:"2.19",platforms:Ag,includePatterns:Le,linkPatterns:Ie},ca65:{id:"ca65",name:"ca65",kind:"assembler",arch:"6502",extensions:[".s",".ca65",".inc"],includeDirs:["/include","/asminc"],editorStyle:"6502",helpURL:"https://cc65.github.io/doc/ca65.html",wasmModule:"ca65",version:"2.19",platforms:Ag,includePatterns:Le,linkPatterns:Ie},ld65:{id:"ld65",name:"ld65",kind:"linker",arch:"6502",extensions:[],wasmModule:"ld65",version:"2.19"},sdcc:{id:"sdcc",name:"SDCC",kind:"compiler",arch:"z80",extensions:[".c",".h"],includeDirs:["/include"],editorStyle:"text/x-csrc",helpURL:"http://sdcc.sourceforge.net/doc/sdccman.pdf",wasmModule:"sdcc",version:"3.6.5",platforms:{default:{preloadFS:"sdcc"}},includePatterns:Le,linkPatterns:Ie},sdasz80:{id:"sdasz80",name:"sdasz80",kind:"assembler",arch:"z80",extensions:[".s"],includeDirs:["/include"],editorStyle:"z80",wasmModule:"sdasz80",version:"02.00",platforms:{default:{preloadFS:"sdcc"}},includePatterns:Le,linkPatterns:Ie},sdasgb:{id:"sdasgb",name:"sdasgb",kind:"assembler",arch:"gbz80",extensions:[".sgb"],includeDirs:["/include"],editorStyle:"z80",wasmModule:"sdasgb",platforms:{default:{preloadFS:"sdcc"}},includePatterns:Le,linkPatterns:Ie},sdldz80:{id:"sdldz80",name:"sdldz80",kind:"linker",arch:"z80",extensions:[],wasmModule:"sdldz80",version:"03.00"},sccz80:{id:"sccz80",name:"sccz80",kind:"compiler",arch:"z80",extensions:[".scc"],platforms:{default:{preloadFS:"sccz80"}},noWorkerBuild:!0},naken:{id:"naken",name:"Naken",kind:"assembler",extensions:[".ns"],noWorkerBuild:!0},zmac:{id:"zmac",name:"zmac",kind:"assembler",arch:"z80",extensions:[".z"],editorStyle:"z80",helpURL:"https://raw.githubusercontent.com/sehugg/zmac/master/doc.txt",wasmModule:"zmac",version:"28jul2018",includePatterns:Le,linkPatterns:Ie},jsasm:{id:"jsasm",name:"JSASM",kind:"assembler",extensions:[".asm"],editorStyle:"z80",includePatterns:wo,linkPatterns:[]},xasm6809:{id:"xasm6809",name:"XASM6809",kind:"assembler",arch:"6809",extensions:[".xasm"],editorStyle:"6809",wasmModule:"xasm6809",includePatterns:[...Le,...Ug],linkLine truncated
import{a as ou,b as au,c as jP,d as zg,e as Yg,f as Mg,g as vl,h as ur,j as Ql,k as wl,l as hs,m as qP}from"./chunk-UG4IOEUD.js";import{a as VP}from"./chunk-LNOKARBD.js";import{a as Sl}from"./chunk-A7SWO6EA.js";import{a as Eg,b as Lg,c as DP}from"./chunk-YLE5X5XS.js";import{D as nu,K as su,t as Ug,u as Ag}from"./chunk-4676AC7I.js";import{A as Ki,E as pi,F as tu,G as ls,I as cs,J as bl,K as iu,T as ru,V as Zg,a as Hi,b as Qo,ba as xl,d as Ot,e as wo,f as kt,g as ve,h as JO,i as Xg,k as _g,m as dl,n as pl,o as ml,p as mn,q as Rg,t as gl,w as Cg,x as eu,y as yo,z as Et}from"./chunk-TYDI7JZQ.js";import{a as st,b as fl,c as vo,d as Tg,e as KO}from"./chunk-KT7KMEQC.js";var cu=Tg((Wg,lu)=>{(function(i){if(typeof Wg=="object"&&typeof lu!="undefined")lu.exports=i();else if(typeof define=="function"&&define.amd)define([],i);else{var e;typeof window!="undefined"?e=window:typeof global!="undefined"?e=global:typeof self!="undefined"?e=self:e=this,e.localforage=i()}})(function(){var i,e,t;return(function r(n,s,o){function a(h,O){if(!s[h]){if(!n[h]){var u=typeof vo=="function"&&vo;if(!O&&u)return u(h,!0);if(l)return l(h,!0);var f=new Error("Cannot find module '"+h+"'");throw f.code="MODULE_NOT_FOUND",f}var p=s[h]={exports:{}};n[h][0].call(p.exports,function(m){var S=n[h][1][m];return a(S||m)},p,p.exports,r,n,s,o)}return s[h].exports}for(var l=typeof vo=="function"&&vo,c=0;c<o.length;c++)a(o[c]);return a})({1:[function(r,n,s){(function(o){"use strict";var a=o.MutationObserver||o.WebKitMutationObserver,l;if(a){var c=0,h=new a(m),O=o.document.createTextNode("");h.observe(O,{characterData:!0}),l=function(){O.data=c=++c%2}}else if(!o.setImmediate&&typeof o.MessageChannel!="undefined"){var u=new o.MessageChannel;u.port1.onmessage=m,l=function(){u.port2.postMessage(0)}}else"document"in o&&"onreadystatechange"in o.document.createElement("script")?l=function(){var w=o.document.createElement("script");w.onreadystatechange=function(){m(),w.onreadystatechange=null,w.parentNode.removeChild(w),w=null},o.document.documentElement.appendChild(w)}:l=function(){setTimeout(m,0)};var f,p=[];function m(){f=!0;for(var w,Z,R=p.length;R;){for(Z=p,p=[],w=-1;++w<R;)Z[w]();R=p.length}f=!1}n.exports=S;function S(w){p.push(w)===1&&!f&&l()}}).call(this,typeof global!="undefined"?global:typeof self!="undefined"?self:typeof window!="undefined"?window:{})},{}],2:[function(r,n,s){"use strict";var o=r(1);function a(){}var l={},c=["REJECTED"],h=["FULFILLED"],O=["PENDING"];n.exports=u;function u(P){if(typeof P!="function")throw new TypeError("resolver must be a function");this.state=O,this.queue=[],this.outcome=void 0,P!==a&&S(this,P)}u.prototype.catch=function(P){return this.then(null,P)},u.prototype.then=function(P,C){if(typeof P!="function"&&this.state===h||typeof C!="function"&&this.state===c)return this;var z=new this.constructor(a);if(this.state!==O){var I=this.state===h?P:C;p(z,I,this.outcome)}else this.queue.push(new f(z,P,C));return z};function f(P,C,z){this.promise=P,typeof C=="function"&&(this.onFulfilled=C,this.callFulfilled=this.otherCallFulfilled),typeof z=="function"&&(this.onRejected=z,this.callRejected=this.otherCallRejected)}f.prototype.callFulfilled=function(P){l.resolve(this.promise,P)},f.prototype.otherCallFulfilled=function(P){p(this.promise,this.onFulfilled,P)},f.prototype.callRejected=function(P){l.reject(this.promise,P)},f.prototype.otherCallRejected=function(P){p(this.promise,this.onRejected,P)};function p(P,C,z){o(function(){var I;try{I=C(z)}catch(Oe){return l.reject(P,Oe)}I===P?l.reject(P,new TypeError("Cannot resolve promise with itself")):l.resolve(P,I)})}l.resolve=function(P,C){var z=w(m,C);if(z.status==="error")return l.reject(P,z.value);var I=z.value;if(I)S(P,I);else{P.state=h,P.outcome=C;for(var Oe=-1,se=P.queue.length;++Oe<se;)P.queue[Oe].callFulfilled(C)}return P},l.reject=function(P,C){P.state=c,P.outcome=C;for(var z=-1,I=P.queue.length;++z<I;)P.queue[z].callRejected(C);return P};function m(P){var C=P&&P.then;if(P&&(typeof P=="object"||typeof P=="function")&&typeof C=="function")return function(){C.apply(P,arguments)}}function S(P,C){var z=!1;function I(he){z||(z=!0,l.reject(P,he))}function Oe(he){z||(z=!0,l.resolve(P,he))}function se(){C(Oe,I)}var te=w(se);te.status==="error"&&I(te.value)}function w(P,C){var z={};try{z.value=P(C),z.status="success"}catch(I){z.status="error",z.value=I}return z}u.resolve=Z;function Z(P){return P instanceof this?P:l.resolve(new this(a),P)}u.reject=R;function R(P){var C=new this(a);return l.reject(C,P)}u.all=A;function A(P){var C=this;if(Object.prototype.toString.call(P)!=="[object Array]")return this.reject(new TypeError("must be an array"));var z=P.length,I=!1;if(!z)return this.resolve([]);for(var Oe=new Array(z),se=0,te=-1,he=new this(a);++te<z;)ge(P[te],te);return he;function ge(ye,Y){C.resolve(ye).then(re,function(G){I||(I=!0,l.reject(he,G))});function re(G){Oe[Y]=G,++se===z&&!I&&(I=!0,l.resolve(he,Oe))}}}u.race=k;function k(P){var C=this;if(Object.prototype.toString.call(P)!=="[object Line truncated
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function lE(i,e){return sE(i)||oE(i,e)||cE(i,e)||aE()}function cE(i,e){if(i){if(typeof i=="string")return L$(i,e);var t={}.toString.call(i).slice(8,-1);return t==="Object"&&i.constructor&&(t=i.constructor.name),t==="Map"||t==="Set"?Array.from(i):t==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?L$(i,e):void 0}}var tP=Object.entries,W$=Object.setPrototypeOf,hE=Object.isFrozen,OE=Object.getPrototypeOf,uE=Object.getOwnPropertyDescriptor,yt=Object.freeze,$t=Object.seal,eo=Object.create,iP=typeof Reflect!="undefined"&&Reflect,fg=iP.apply,dg=iP.construct;yt||(yt=function(e){return e});$t||($t=function(e){return e});fg||(fg=function(e,t){for(var r=arguments.length,n=new Array(r>2?r-2:0),s=2;s<r;s++)n[s-2]=arguments[s];return e.apply(t,n)});dg||(dg=function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];return new e(...r)});var Ks=ht(Array.prototype.forEach),fE=ht(Array.prototype.lastIndexOf),V$=ht(Array.prototype.pop),Js=ht(Array.prototype.push),dE=ht(Array.prototype.splice),sn=Array.isArray,Fa=ht(String.prototype.toLowerCase),lg=ht(String.prototype.toString),j$=ht(String.prototype.match),Da=ht(String.prototype.replace),q$=ht(String.prototype.indexOf),pE=ht(String.prototype.trim),mE=ht(Number.prototype.toString),gE=ht(Boolean.prototype.toString),D$=typeof BigInt=="undefined"?null:ht(BigInt.prototype.toString),I$=typeof Symbol=="undefined"?null:ht(Symbol.prototype.toString),pt=ht(Object.prototype.hasOwnProperty),Ia=ht(Object.prototype.toString),dt=ht(RegExp.prototype.test),Nn=bE(TypeError);function ht(i){return function(e){e instanceof RegExp&&(e.lastIndex=0);for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];return fg(i,e,r)}}function bE(i){return function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return dg(i,t)}}function Ze(i,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Fa;if(W$&&W$(i,null),!sn(e))return i;let r=e.length;for(;r--;){let n=e[r];if(typeof n=="string"){let s=t(n);s!==n&&(hE(e)||(e[r]=s),n=s)}i[n]=!0}return i}function xE(i){for(let e=0;e<i.length;e++)pt(i,e)||(i[e]=null);return i}function Zt(i){let e=eo(null);for(let r of tP(i)){var t=lE(r,2);let n=t[0],s=t[1];pt(i,n)&&(sn(s)?e[n]=xE(s):s&&typeof s=="object"&&s.constructor===Object?e[n]=Zt(s):e[n]=s)}return e}function SE(i){switch(typeof i){case"string":return i;case"number":return mE(i);case"boolean":return gE(i);case"bigint":return D$?D$(i):"0";case"symbol":return I$?I$(i):"Symbol()";case"undefined":return Ia(i);case"function":case"object":{if(i===null)return Ia(i);let e=i,t=Ii(e,"toString");if(typeof t=="function"){let r=t(e);return typeof r=="string"?r:Ia(r)}return Ia(i)}default:return Ia(i)}}function Ii(i,e){for(;i!==null;){let r=uE(i,e);if(r){if(r.get)return ht(r.get);if(typeof r.value=="function")return ht(r.value)}i=OE(i)}function t(){return null}return t}function vE(i){try{return dt(i,""),!0}catch(e){return!1}}var F$=yt(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),cg=yt(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),hg=yt(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),QE=yt(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-gly Line truncated
`+Ne),_i&&(Ne=Zr(Ne)),C&&fn?he(Ne):Ne},e.setConfig=function(){let M=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};bo(M),ts=!0,hn=qe,On=De},e.clearConfig=function(){Cr=null,ts=!1,hn=null,On=null,C=I,z=""},e.isValidAttribute=function(M,b,_){Cr||bo({});let L=Be(M),ne=Be(b);return V(L,ne,_)},e.addHook=function(M,b){typeof b=="function"&&pt(de,M)&&Js(de[M],b)},e.removeHook=function(M,b){if(pt(de,M)){if(b!==void 0){let _=fE(de[M],b);return _===-1?void 0:dE(de[M],_,1)[0]}return V$(de[M])}},e.removeHooks=function(M){pt(de,M)&&(de[M]=[])},e.removeAllHooks=function(){de=eP()},e}var zE=rP();nP.exports=zE});var Sg=KO(cu());var Le=[/^\s*[.#%]?(include|incbin|embed)\s+"(.+?)"/gmi,/^\s*([;']|[/][/])#(resource)\s+"(.+?)"/gm],Ie=[/^\s*([;]|[/][/])#link\s+"(.+?)"/gm],$o=[/^\s*(`include|[.]include)\s+"(.+?)"/gmi,/^\s*\$(include|\$dofile|\$write_image_in_table)\('(.+?)'/gmi,{re:/^\s*([.]arch)\s+(\w+)/gmi,suffix:".json"},/\$readmem[bh]\("(.+?)"/gmi],IP=[{re:/^\s*[.#%]?\s*include\s+<(.+?)>/gmi,system:!0}];function qg(i){let e=i&&Ji(i);return e&&e.includeDirs&&e.includeDirs.length?IP:[]}var Vg=[/^\s+(USE|ASM)\s+(\S+[.]\S+)/gm],FP=[/^[!]src\s+"(.+?)"/gmi],BP=[{re:/^\s*import\s*"(.+?)";/gmi,suffix:".wiz"},/^\s*embed\s*"(.+?)";/gmi],NP=[/^\s*(import)\s*"(.+?)"/gmi],GP=[/^\s*%%\s*#include\s+"(.+?)"/gm],jg={apple2:{preloadFS:"65-apple2"},c64:{preloadFS:"65-c64"},vic20:{preloadFS:"65-vic20"},nes:{preloadFS:"65-nes"},atari8:{preloadFS:"65-atari8"},vector:{preloadFS:"65-none"},atari7800:{preloadFS:"65-none"},devel:{preloadFS:"65-none"},vcs:{preloadFS:"65-atari2600"},pce:{preloadFS:"65-pce"},exidy:{preloadFS:"65-none"}},Po={dasm:{id:"dasm",name:"DASM",kind:"assembler",arch:"6502",extensions:[".dasm"],editorStyle:"6502",helpURL:"https://raw.githubusercontent.com/dasm-assembler/dasm/refs/tags/v2.20.17/docs/dasm.txt",wasmModule:"dasm-wasisdk",version:"2.20.17",includePatterns:Le,linkPatterns:Ie},acme:{id:"acme",name:"ACME",kind:"assembler",arch:"6502",extensions:[".acme"],editorStyle:"6502",helpURL:"https://raw.githubusercontent.com/sehugg/acme/main/docs/QuickRef.txt",wasmModule:"acme",version:"0.97.1",includePatterns:[...Le,...FP],linkPatterns:Ie},xa:{id:"xa",name:"XA",kind:"assembler",arch:"6502",extensions:[".xa"],editorStyle:"6502",helpURL:"https://www.floodgap.com/retrotech/xa/",wasmModule:"xa",version:"2.4.1",includePatterns:Le,linkPatterns:Ie},nesasm:{id:"nesasm",name:"NESASM",kind:"assembler",arch:"6502",extensions:[".nesasm"],editorStyle:"6502",wasmModule:"nesasm",version:"3.1",includePatterns:Le,linkPatterns:Ie},merlin32:{id:"merlin32",name:"Merlin 32",kind:"assembler",arch:"6502",extensions:[".lnk"],editorStyle:"6502",wasmModule:"merlin32",version:"1.1.10",includePatterns:[...Le,...Vg],linkPatterns:Ie},cc65:{id:"cc65",name:"cc65",kind:"compiler",arch:"6502",extensions:[".c",".h"],includeDirs:["/include","/asminc"],editorStyle:"text/x-csrc",helpURL:"https://cc65.github.io/doc/cc65.html",wasmModule:"cc65",version:"2.19",platforms:jg,includePatterns:Le,linkPatterns:Ie},ca65:{id:"ca65",name:"ca65",kind:"assembler",arch:"6502",extensions:[".s",".ca65",".inc"],includeDirs:["/include","/asminc"],editorStyle:"6502",helpURL:"https://cc65.github.io/doc/ca65.html",wasmModule:"ca65",version:"2.19",platforms:jg,includePatterns:Le,linkPatterns:Ie},ld65:{id:"ld65",name:"ld65",kind:"linker",arch:"6502",extensions:[],wasmModule:"ld65",version:"2.19"},sdcc:{id:"sdcc",name:"SDCC",kind:"compiler",arch:"z80",extensions:[".c",".h"],includeDirs:["/include"],editorStyle:"text/x-csrc",helpURL:"http://sdcc.sourceforge.net/doc/sdccman.pdf",wasmModule:"sdcc",version:"3.6.5",platforms:{default:{preloadFS:"sdcc"}},includePatterns:Le,linkPatterns:Ie},sdasz80:{id:"sdasz80",name:"sdasz80",kind:"assembler",arch:"z80",extensions:[".s"],includeDirs:["/include"],editorStyle:"z80",wasmModule:"sdasz80",version:"02.00",platforms:{default:{preloadFS:"sdcc"}},includePatterns:Le,linkPatterns:Ie},sdasgb:{id:"sdasgb",name:"sdasgb",kind:"assembler",arch:"gbz80",extensions:[".sgb"],includeDirs:["/include"],editorStyle:"z80",wasmModule:"sdasgb",platforms:{default:{preloadFS:"sdcc"}},includePatterns:Le,linkPatterns:Ie},sdldz80:{id:"sdldz80",name:"sdldz80",kind:"linker",arch:"z80",extensions:[],wasmModule:"sdldz80",version:"03.00"},sccz80:{id:"sccz80",name:"sccz80",kind:"compiler",arch:"z80",extensions:[".scc"],platforms:{default:{preloadFS:"sccz80"}},noWorkerBuild:!0},naken:{id:"naken",name:"Naken",kind:"assembler",extensions:[".ns"],noWorkerBuild:!0},zmac:{id:"zmac",name:"zmac",kind:"assembler",arch:"z80",extensions:[".z"],editorStyle:"z80",helpURL:"https://raw.githubusercontent.com/sehugg/zmac/master/doc.txt",wasmModule:"zmac",version:"28jul2018",includePatterns:Le,linkPatterns:Ie},jsasm:{id:"jsasm",name:"JSASM",kind:"assembler",extensions:[".asm"],editorStyle:"z80",includePatterns:$o,linkPatterns:[]},xasm6809:{id:"xasm6809",name:"XASM6809",kind:"assembler",arch:"6809",extensions:[".xasm"],editorStyle:"6809",wasmModule:"xasm6809",includePatterns:[...Le,...Vg],linkLine truncated
`){[e,t]=ds(this,e,t);let n="";for(let s=0,o=0;s<=t&&o<this.text.length;o++){let a=this.text[o],l=s+a.length;s>e&&o&&(n+=r),e<l&&t>s&&(n+=a.slice(Math.max(0,e-s),t-s)),s=l+1}return n}flatten(e){for(let t of this.text)e.push(t)}scanIdentical(){return 0}static split(e,t){let r=[],n=-1;for(let s of e)r.push(s),n+=s.length+1,r.length==32&&(t.push(new i(r,n)),r=[],n=-1);return n>-1&&t.push(new i(r,n)),t}},Os=class i extends Pe{constructor(e,t){super(),this.children=e,this.length=t,this.lines=0;for(let r of e)this.lines+=r.lines}lineInner(e,t,r,n){for(let s=0;;s++){let o=this.children[s],a=n+o.length,l=r+o.lines-1;if((t?l:a)>=e)return o.lineInner(e,t,r,n);n=a+1,r=l+1}}decompose(e,t,r,n){for(let s=0,o=0;o<=t&&s<this.children.length;s++){let a=this.children[s],l=o+a.length;if(e<=l&&t>=o){let c=n&((o<=e?1:0)|(l>=t?2:0));o>=e&&l<=t&&!c?r.push(a):a.decompose(e-o,t-o,r,c)}o=l+1}}replace(e,t,r){if([e,t]=ds(this,e,t),r.lines<this.lines)for(let n=0,s=0;n<this.children.length;n++){let o=this.children[n],a=s+o.length;if(e>=s&&t<=a){let l=o.replace(e-s,t-s,r),c=this.lines-o.lines+l.lines;if(l.lines<c>>4&&l.lines>c>>6){let h=this.children.slice();return h[n]=l,new i(h,this.length-(t-e)+r.length)}return super.replace(s,a,l)}s=a+1}return super.replace(e,t,r)}sliceString(e,t=this.length,r=`
`){[e,t]=ds(this,e,t);let n="";for(let s=0,o=0;s<this.children.length&&o<=t;s++){let a=this.children[s],l=o+a.length;o>e&&s&&(n+=r),e<l&&t>o&&(n+=a.sliceString(e-o,t-o,r)),o=l+1}return n}flatten(e){for(let t of this.children)t.flatten(e)}scanIdentical(e,t){if(!(e instanceof i))return 0;let r=0,[n,s,o,a]=t>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;n+=t,s+=t){if(n==o||s==a)return r;let l=this.children[n],c=e.children[s];if(l!=c)return r+l.scanIdentical(c,t);r+=l.length+1}}static from(e,t=e.reduce((r,n)=>r+n.length+1,-1)){let r=0;for(let u of e)r+=u.lines;if(r<32){let u=[];for(let p of e)p.flatten(u);return new Jt(u,t)}let n=Math.max(32,r>>5),s=n<<1,o=n>>1,a=[],l=0,c=-1,h=[];function O(u){let p;if(u.lines>s&&u instanceof i)for(let m of u.children)O(m);else u.lines>o&&(l>o||!l)?(f(),a.push(u)):u instanceof Jt&&l&&(p=h[h.length-1])instanceof Jt&&u.lines+p.lines<=32?(l+=u.lines,c+=u.length+1,h[h.length-1]=new Jt(p.text.concat(u.text),p.length+1+u.length)):(l+u.lines>n&&f(),l+=u.lines,c+=u.length+1,h.push(u))}function f(){l!=0&&(a.push(h.length==1?h[0]:i.from(h,c)),c=-1,l=h.length=0)}for(let u of e)O(u);return f(),a.length==1?a[0]:new i(a,t)}};Pe.empty=new Jt([""],0);function YP(i){let e=-1;for(let t of i)e+=t.length+1;return e}function Xl(i,e,t=0,r=1e9){for(let n=0,s=0,o=!0;s<i.length&&n<=r;s++){let a=i[s],l=n+a.length;l>=t&&(l>r&&(a=a.slice(0,r-n)),n<t&&(a=a.slice(t-n)),o?(e[e.length-1]+=a,o=!1):e.push(a)),n=l+1}return e}function Hg(i,e,t){return Xl(i,[""],e,t)}var xn=class{constructor(e,t=1){this.dir=t,this.done=!1,this.lineBreak=!1,this.value="",this.nodes=[e],this.offsets=[t>0?1:(e instanceof Jt?e.text.length:e.children.length)<<1]}nextInner(e,t){for(this.done=this.lineBreak=!1;;){let r=this.nodes.length-1,n=this.nodes[r],s=this.offsets[r],o=s>>1,a=n instanceof Jt?n.text.length:n.children.length;if(o==(t>0?a:0)){if(r==0)return this.done=!0,this.value="",this;t>0&&this.offsets[r-1]++,this.nodes.pop(),this.offsets.pop()}else if((s&1)==(t>0?0:1)){if(this.offsets[r]+=t,e==0)return this.lineBreak=!0,this.value=`
`,this;e--}else if(n instanceof Jt){let l=n.text[o+(t<0?-1:0)];if(this.offsets[r]+=t,l.length>Math.max(0,e))return this.value=e==0?l:t>0?l.slice(e):l.slice(0,l.length-e),this;e-=l.length}else{let l=n.children[o+(t<0?-1:0)];e>l.length?(e-=l.length,this.offsets[r]+=t):(t<0&&this.offsets[r]--,this.nodes.push(l),this.offsets.push(t>0?1:(l instanceof Jt?l.text.length:l.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}},_l=class{constructor(e,t,r){this.value="",this.done=!1,this.cursor=new xn(e,t>r?-1:1),this.pos=t>r?e.length:0,this.from=Math.min(t,r),this.to=Math.max(t,r)}nextInner(e,t){if(t<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;e+=Math.max(0,t<0?this.pos-this.to:this.from-this.pos);let r=t<0?this.pos-this.from:this.to-this.pos;e>r&&(e=r),r-=e;let{value:n}=this.cursor.next(e);return this.pos+=(n.length+e)*t,this.value=n.length<=r?n:t<0?n.slice(n.length-r):n.slice(0,r),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}},Rl=class{constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:t,lineBreak:r,value:n}=this.inner.next(e);return t&&this.afterBreak?(this.value="",this.afterBreak=!1):t?(this.done=!0,this.value=""):r?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=n,this.afterBreak=!1),this}get lineBreak(){return!1}};typeof Symbol!="undefined"&&(Pe.prototype[Symbol.iterator]=function(){return this.iter()},xn.prototype[Symbol.iterator]=_l.prototype[Symbol.iterator]=Rl.prototype[Symbol.iterator]=function(){return this});var hf=class{constructor(e,t,r,n){this.from=e,this.to=t,this.number=r,this.text=n}get length(){return this.to-this.from}};function ds(i,e,t){return e=Math.max(0,Math.min(i.length,e)),[e,Math.max(e,Math.min(i.length,t))]}function it(i,e,t=!0,r=!0){return Fg(i,e,t,r)}function MP(i){return i>=56320&&i<57344}function LP(i){return i>=55296&&i<56320}function Ci(i,e){let t=i.charCodeAt(e);if(!LP(t)||e+1==i.length)return t;let r=i.charCodeAt(e+1);return MP(r)?(t-55296<<10)+(r-56320)+65536:t}function El(i){return i<=65535?String.fromCharCode(i):(i-=65536,String.fromCharCode((i>>10)+55296,(i&1023)+56320))}function Cr(i){return i<65536?1:2}var Of=/\r\n?|\n/,Ot=(function(i){return i[i.Simple=0]="Simple",i[i.TrackDel=1]="TrackDel",i[i.TrackBefore=2]="TrackBefore",i[i.TrackAfter=3]="TrackAfter",i})(Ot||(Ot={})),Or=class i{constructor(e){this.sections=e}get length(){let e=0;for(let t=0;t<this.sections.length;t+=2)e+=this.sections[t];return e}get newLength(){let e=0;for(let t=0;t<this.sections.length;t+=2){let r=this.sections[t+1];e+=r<0?this.sections[t]:r}return e}get empty(){return this.sections.length==0||this.sections.length==2&&this.sections[1]<0}iterGaps(e){for(let t=0,r=0,n=0;t<this.sections.length;){let s=this.sections[t++],o=this.sections[t++];o<0?(e(r,n,s),n+=s):n+=o,r+=s}}iterChangedRanges(e,t=!1){ff(this,e,t)}get invertedDesc(){let e=[];for(let t=0;t<this.sections.length;){let r=this.sections[t++],n=this.sections[t++];n<0?e.push(r,n):e.push(n,r)}return new i(e)}composeDesc(e){return this.empty?e:e.empty?this:ib(this,e)}mapDesc(e,t=!1){return e.empty?this:uf(this,e,t)}mapPos(e,t=-1,r=Ot.Simple){let n=0,s=0;for(let o=0;o<this.sections.length;){let a=this.sections[o++],l=this.sections[o++],c=n+a;if(l<0){if(c>e)return s+(e-n);s+=a}else{if(r!=Ot.Simple&&c>=e&&(r==Ot.TrackDel&&n<e&&c>e||r==Ot.TrackBefore&&n<e||r==Ot.TrackAfter&&c>e))return null;if(c>e||c==e&&t<0&&!a)return e==n||t<0?s:s+l;s+=l}n=c}if(e>n)throw new RangeError(`Position ${e} is out of range for changeset of length ${n}`);return s}touchesRange(e,t=e){for(let r=0,n=0;r<this.sections.length&&n<=t;){let s=this.sections[r++],o=this.sections[r++],a=n+s;if(o>=0&&n<=t&&a>=e)return n<e&&a>t?"cover":!0;n=a}return!1}toString(){let e="";for(let t=0;t<this.sections.length;){let r=this.sections[t++],n=this.sections[t++];e+=(e?" ":"")+r+(n>=0?":"+n:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(t=>typeof t!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new i(e)}static create(e){return new i(e)}},At=class i extends Or{constructor(e,t){super(e),this.inserted=t}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");return ff(this,(t,r,n,s,o)=>e=e.replace(n,n+(r-t),o),!1),e}mapDesc(e,t=!1){return uf(this,e,t,!0)}invert(e){let t=this.sections.slice(),r=[];for(let n=0,s=0;n<t.length;n+=2){let o=t[n],a=t[n+1];if(a>=0){t[n]=a,t[n+1]=o;let l=n>>1;for(;r.length<l;)r.push(Pe.empty);r.push(o?e.slice(s,s+o):Pe.empty)}s+=o}return new i(t,r)}compose(e){return this.empty?e:e.empty?this:ib(this,e,!0)}map(e,t=!1){return e.empty?this:uf(this,e,t,!0)}iterChanges(e,t=!1){ff(this,e,t)}get desc Line truncated
`}get readOnly(){return this.facet(cb)}phrase(e,...t){for(let r of this.facet(i.phrases))if(Object.prototype.hasOwnProperty.call(r,e)){e=r[e];break}return t.length&&(e=e.replace(/\$(\$|\d*)/g,(r,n)=>{if(n=="$")return"$";let s=+(n||1);return!s||s>t.length?r:t[s-1]})),e}languageDataAt(e,t,r=-1){let n=[];for(let s of this.facet(nb))for(let o of s(this,t,r))Object.prototype.hasOwnProperty.call(o,e)&&n.push(o[e]);return n}charCategorizer(e){let t=this.languageDataAt("wordChars",e);return GP(t.length?t[0]:"")}wordAt(e){let{text:t,from:r,length:n}=this.doc.lineAt(e),s=this.charCategorizer(e),o=e-r,a=e-r;for(;o>0;){let l=it(t,o,!1);if(s(t.slice(l,o))!=Me.Word)break;o=l}for(;a<n;){let l=it(t,a);if(s(t.slice(a,l))!=Me.Word)break;a=l}return o==a?null:U.range(o+r,a+r)}};ve.allowMultipleSelections=pf;ve.tabSize=K.define({combine:i=>i.length?i[0]:4});ve.lineSeparator=sb;ve.readOnly=cb;ve.phrases=K.define({compare(i,e){let t=Object.keys(i),r=Object.keys(e);return t.length==r.length&&t.every(n=>i[n]==e[n])}});ve.languageData=nb;ve.changeFilter=ob;ve.transactionFilter=ab;ve.transactionExtender=lb;bt.reconfigure=ae.define();function ei(i,e,t={}){let r={};for(let n of i)for(let s of Object.keys(n)){let o=n[s],a=r[s];if(a===void 0)r[s]=o;else if(!(a===o||o===void 0))if(Object.hasOwnProperty.call(t,s))r[s]=t[s](a,o);else throw new Error("Config merge conflict for field "+s)}for(let n in e)r[n]===void 0&&(r[n]=e[n]);return r}var di=class{eq(e){return this==e}range(e,t=e){return To.create(e,t,this)}};di.prototype.startSide=di.prototype.endSide=0;di.prototype.point=!1;di.prototype.mapMode=Ot.TrackDel;function $f(i,e){return i==e||i.constructor==e.constructor&&i.eq(e)}var To=class i{constructor(e,t,r){this.from=e,this.to=t,this.value=r}static create(e,t,r){return new i(e,t,r)}};function Sf(i,e){return i.from-e.from||i.value.startSide-e.value.startSide}var Qf=class i{constructor(e,t,r,n){this.from=e,this.to=t,this.value=r,this.maxPoint=n}get length(){return this.to[this.to.length-1]}findIndex(e,t,r,n=0){let s=r?this.to:this.from;for(let o=n,a=s.length;;){if(o==a)return o;let l=o+a>>1,c=s[l]-e||(r?this.value[l].endSide:this.value[l].startSide)-t;if(l==o)return c>=0?o:a;c>=0?a=l:o=l+1}}between(e,t,r,n){for(let s=this.findIndex(t,-1e9,!0),o=this.findIndex(r,1e9,!1,s);s<o;s++)if(n(this.from[s]+e,this.to[s]+e,this.value[s])===!1)return!1}map(e,t){let r=[],n=[],s=[],o=-1,a=-1;for(let l=0;l<this.value.length;l++){let c=this.value[l],h=this.from[l]+e,O=this.to[l]+e,f,u;if(h==O){let p=t.mapPos(h,c.startSide,c.mapMode);if(p==null||(f=u=p,c.startSide!=c.endSide&&(u=t.mapPos(h,c.endSide),u<f)))continue}else if(f=t.mapPos(h,c.startSide),u=t.mapPos(O,c.endSide),f>u||f==u&&c.startSide>0&&c.endSide<=0)continue;(u-f||c.endSide-c.startSide)<0||(o<0&&(o=f),c.point&&(a=Math.max(a,u-f)),r.push(c),n.push(f-o),s.push(u-o))}return{mapped:r.length?new i(n,s,r,a):null,pos:o}}},pe=class i{constructor(e,t,r,n){this.chunkPos=e,this.chunk=t,this.nextLayer=r,this.maxPoint=n}static create(e,t,r,n){return new i(e,t,r,n)}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let t of this.chunk)e+=t.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(e){let{add:t=[],sort:r=!1,filterFrom:n=0,filterTo:s=this.length}=e,o=e.filter;if(t.length==0&&!o)return this;if(r&&(t=t.slice().sort(Sf)),this.isEmpty)return t.length?i.of(t):this;let a=new Al(this,null,-1).goto(0),l=0,c=[],h=new Zi;for(;a.value||l<t.length;)if(l<t.length&&(a.from-t[l].from||a.startSide-t[l].value.startSide)>=0){let O=t[l++];h.addInner(O.from,O.to,O.value)||c.push(O)}else a.rangeIndex==1&&a.chunkIndex<this.chunk.length&&(l==t.length||this.chunkEnd(a.chunkIndex)<t[l].from)&&(!o||n>this.chunkEnd(a.chunkIndex)||s<this.chunkPos[a.chunkIndex])&&h.addChunk(this.chunkPos[a.chunkIndex],this.chunk[a.chunkIndex])?a.nextChunk():((!o||n>a.to||s<a.from||o(a.from,a.to,a.value))&&(h.addInner(a.from,a.to,a.value)||c.push(To.create(a.from,a.to,a.value))),a.next());return h.finishInner(this.nextLayer.isEmpty&&!c.length?i.empty:this.nextLayer.update({add:c,filter:o,filterFrom:n,filterTo:s}))}map(e){if(e.empty||this.isEmpty)return this;let t=[],r=[],n=-1;for(let o=0;o<this.chunk.length;o++){let a=this.chunkPos[o],l=this.chunk[o],c=e.touchesRange(a,a+l.length);if(c===!1)n=Math.max(n,l.maxPoint),t.push(l),r.push(e.mapPos(a));else if(c===!0){let{mapped:h,pos:O}=l.map(a,e);h&&(n=Math.max(n,h.maxPoint),t.push(h),r.push(O))}}let s=this.nextLayer.map(e);return t.length==0?s:new i(r,t,s||i.empty,n)}between(e,t,r){if(!this.isEmpty){for(let n=0;n<this.chunk.length;n++){let s=this.chunkPos[n],o=this.chunk[n];if(t>=s&&e<=s+o.length&&o.between(s,e-s,t-s,r)===!1)return}this.nextLayer.between(e,t,r)}}iter(e=0){return Xo.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,t=0){return Xo.from(e).goto(t)}static compare(e,t,r,n,s=-1){let o=e.filter(O=>O.maxPoint>0||!O.isEm Line truncated
`)}static newName(){let e=ub[fb]||1;return ub[fb]=e+1,"\u037C"+e.toString(36)}static mount(e,t,r){let n=e[Pf],s=r&&r.nonce;n?s&&n.setNonce(s):n=new kf(e,s),n.mount(Array.isArray(t)?t:[t],e)}},db=new Map,kf=class{constructor(e,t){let r=e.ownerDocument||e,n=r.defaultView;if(!e.head&&e.adoptedStyleSheets&&n.CSSStyleSheet){let s=db.get(r);if(s)return e[Pf]=s;this.sheet=new n.CSSStyleSheet,db.set(r,this)}else this.styleTag=r.createElement("style"),t&&this.styleTag.setAttribute("nonce",t);this.modules=[],e[Pf]=this}mount(e,t){let r=this.sheet,n=0,s=0;for(let o=0;o<e.length;o++){let a=e[o],l=this.modules.indexOf(a);if(l<s&&l>-1&&(this.modules.splice(l,1),s--,l=-1),l==-1){if(this.modules.splice(s++,0,a),r)for(let c=0;c<a.rules.length;c++)r.insertRule(a.rules[c],n++)}else{for(;s<l;)n+=this.modules[s++].rules.length;n+=a.rules.length,s++}}if(r)t.adoptedStyleSheets.indexOf(this.sheet)<0&&(t.adoptedStyleSheets=[this.sheet,...t.adoptedStyleSheets]);else{let o="";for(let l=0;l<this.modules.length;l++)o+=this.modules[l].getRules()+`
`;this.styleTag.textContent=o;let a=t.head||t;this.styleTag.parentNode!=a&&a.insertBefore(this.styleTag,a.firstChild)}}setNonce(e){this.styleTag&&this.styleTag.getAttribute("nonce")!=e&&this.styleTag.setAttribute("nonce",e)}};var fr={8:"Backspace",9:"Tab",10:"Enter",12:"NumLock",13:"Enter",16:"Shift",17:"Control",18:"Alt",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",44:"PrintScreen",45:"Insert",46:"Delete",59:";",61:"=",91:"Meta",92:"Meta",106:"*",107:"+",108:",",109:"-",110:".",111:"/",144:"NumLock",145:"ScrollLock",160:"Shift",161:"Shift",162:"Control",163:"Control",164:"Alt",165:"Alt",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},ps={48:")",49:"!",50:"@",51:"#",52:"$",53:"%",54:"^",55:"&",56:"*",57:"(",59:":",61:"+",173:"_",186:":",187:"+",188:"<",189:"_",190:">",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},HP=typeof navigator!="undefined"&&/Mac/.test(navigator.platform),KP=typeof navigator!="undefined"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(ot=0;ot<10;ot++)fr[48+ot]=fr[96+ot]=String(ot);var ot;for(ot=1;ot<=24;ot++)fr[ot+111]="F"+ot;var ot;for(ot=65;ot<=90;ot++)fr[ot]=String.fromCharCode(ot+32),ps[ot]=String.fromCharCode(ot);var ot;for(Yl in fr)ps.hasOwnProperty(Yl)||(ps[Yl]=fr[Yl]);var Yl;function pb(i){var e=HP&&i.metaKey&&i.shiftKey&&!i.ctrlKey&&!i.altKey||KP&&i.shiftKey&&i.key&&i.key.length==1||i.key=="Unidentified",t=!e&&i.key||(i.shiftKey?ps:fr)[i.keyCode]||i.key||"Unidentified";return t=="Esc"&&(t="Escape"),t=="Del"&&(t="Delete"),t=="Left"&&(t="ArrowLeft"),t=="Up"&&(t="ArrowUp"),t=="Right"&&(t="ArrowRight"),t=="Down"&&(t="ArrowDown"),t}function rt(){var i=arguments[0];typeof i=="string"&&(i=document.createElement(i));var e=1,t=arguments[1];if(t&&typeof t=="object"&&t.nodeType==null&&!Array.isArray(t)){for(var r in t)if(Object.prototype.hasOwnProperty.call(t,r)){var n=t[r];typeof n=="string"?i.setAttribute(r,n):n!=null&&(i[r]=n)}e++}for(;e<arguments.length;e++)mb(i,arguments[e]);return i}function mb(i,e){if(typeof e=="string")i.appendChild(document.createTextNode(e));else if(e!=null)if(e.nodeType!=null)i.appendChild(e);else if(Array.isArray(e))for(var t=0;t<e.length;t++)mb(i,e[t]);else throw new RangeError("Unsupported child node: "+e)}var zt=typeof navigator!="undefined"?navigator:{userAgent:"",vendor:"",platform:""},zf=typeof document!="undefined"?document:{documentElement:{style:{}}},Yf=/Edge\/(\d+)/.exec(zt.userAgent),t0=/MSIE \d/.test(zt.userAgent),Mf=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(zt.userAgent),gc=!!(t0||Mf||Yf),gb=!gc&&/gecko\/(\d+)/i.test(zt.userAgent),Tf=!gc&&/Chrome\/(\d+)/.exec(zt.userAgent),bb="webkitFontSmoothing"in zf.documentElement.style,Lf=!gc&&/Apple Computer/.test(zt.vendor),xb=Lf&&(/Mobile\/\w+/.test(zt.userAgent)||zt.maxTouchPoints>2),J={mac:xb||/Mac/.test(zt.platform),windows:/Win/.test(zt.platform),linux:/Linux|X11/.test(zt.platform),ie:gc,ie_version:t0?zf.documentMode||6:Mf?+Mf[1]:Yf?+Yf[1]:0,gecko:gb,gecko_version:gb?+(/Firefox\/(\d+)/.exec(zt.userAgent)||[0,0])[1]:0,chrome:!!Tf,chrome_version:Tf?+Tf[1]:0,ios:xb,android:/Android\b/.test(zt.userAgent),webkit:bb,webkit_version:bb?+(/\bAppleWebKit\/(\d+)/.exec(zt.userAgent)||[0,0])[1]:0,safari:Lf,safari_version:Lf?+(/\bVersion\/(\d+(\.\d+)?)/.exec(zt.userAgent)||[0,0])[1]:0,tabSize:zf.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function Ru(i,e){for(let t in i)t=="class"&&e.class?e.class+=" "+i.class:t=="style"&&e.style?e.style+=";"+i.style:e[t]=i[t];return e}var Jl=Object.create(null);function Zu(i,e,t){if(i==e)return!0;i||(i=Jl),e||(e=Jl);let r=Object.keys(i),n=Object.keys(e);if(r.length-(t&&r.indexOf(t)>-1?1:0)!=n.length-(t&&n.indexOf(t)>-1?1:0))return!1;for(let s of r)if(s!=t&&(n.indexOf(s)==-1||i[s]!==e[s]))return!1;return!0}function JP(i,e){for(let t=i.attributes.length-1;t>=0;t--){let r=i.attributes[t].name;e[r]==null&&i.removeAttribute(r)}for(let t in e){let r=e[t];t=="style"?i.style.cssText=r:i.getAttribute(t)!=r&&i.setAttribute(t,r)}}function Sb(i,e,t){let r=!1;if(e)for(let n in e)t&&n in t||(r=!0,n=="style"?i.style.cssText="":i.removeAttribute(n));if(t)for(let n in t)e&&e[n]==t[n]||(r=!0,n=="style"?i.style.cssText=t[n]:i.setAttribute(n,t[n]));return r}function e1(i){let e=Object.create(null);for(let t=0;t<i.attributes.length;t++){let r=i.attributes[t];e[r.name]=r.value}return e}var at=class{eq(e){return!1}updateDOM(e,t,r){return!1}compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}get estimatedHeight(){return-1}get lineBreaks(){return 0}ignoreEvent(e){return!0}coordsAt(e,t,r){return null}get isHidden(){return!1}get editable(){return!1}destroy(e){}},xt=(function(i){return i[i.Text=0]="Text",i[i.WidgetBefore=1]="WidgetBefore",i[i.WidgetAfter=2]="WidgetAfter",i[i.WidgetRange=3]="WidgetRange",i})(xt||(xt={})),I=class extends di{constructor(e,t,r,n){super(),this.startSide=e,this.endSLine truncated
`,n=i.state.doc.line(n.number+(t?1:-1)),s=i.bidiSpans(n),c=i.visualLineSide(n,!t)}if(l){if(!l(h))return a}else{if(!r)return c;l=r(h)}a=c}}function C1(i,e,t){let r=i.state.charCategorizer(e),n=r(t);return s=>{let o=r(s);return n==Me.Space&&(n=o),n==o}}function U1(i,e,t,r){let n=e.head,s=t?1:-1;if(n==(t?i.state.doc.length:0))return U.cursor(n,e.assoc);let o=e.goalColumn,a,l=i.contentDOM.getBoundingClientRect(),c=i.coordsAtPos(n,e.assoc||((e.empty?t:e.head==e.from)?1:-1)),h=i.documentTop;if(c)o==null&&(o=c.left-l.left),a=s<0?c.top:c.bottom;else{let p=i.viewState.lineBlockAt(n);o==null&&(o=Math.min(l.right-l.left,i.defaultCharacterWidth*(n-p.from))),a=(s<0?p.top:p.bottom)+h}let O=l.left+o,f=i.viewState.heightOracle.textHeight>>1,u=r!=null?r:f;for(let p=0;;p+=f){let m=a+(u+p)*s,S=iu(i,{x:O,y:m},!1,s);if(t?m>l.bottom:m<l.top)return U.cursor(S.pos,S.assoc);let w=i.coordsAtPos(S.pos,S.assoc),C=w?(w.top+w.bottom)/2:0;if(!w||(t?C>a:C<a))return U.cursor(S.pos,S.assoc,void 0,o)}}function Yo(i,e,t){for(;;){let r=0;for(let n of i)n.between(e-1,e+1,(s,o,a)=>{if(e>s&&e<o){let l=r||t||(e-s<o-e?-1:1);e=l<0?s:o,r=l}});if(!r)return e}}function Z0(i,e){let t=null;for(let r=0;r<e.ranges.length;r++){let n=e.ranges[r],s=null;if(n.empty){let o=Yo(i,n.from,0);o!=n.from&&(s=U.cursor(o,-1))}else{let o=Yo(i,n.from,-1),a=Yo(i,n.to,1);(o!=n.from||a!=n.to)&&(n.undirectional?s=U.undirectionalRange(n.from,n.to):s=U.range(n.from==n.anchor?o:a,n.from==n.head?o:a))}s&&(t||(t=e.ranges.slice()),t[r]=s)}return t?U.create(t,e.mainIndex):e}function Rf(i,e,t){let r=Yo(i.state.facet(Bo).map(n=>n(i)),t.from,e.head>t.from?-1:1);return r==t.from?t:U.cursor(r,r<t.from?1:-1)}var bi=class{constructor(e,t){this.pos=e,this.assoc=t}};function iu(i,e,t,r){let n=i.contentDOM.getBoundingClientRect(),s=n.top+i.viewState.paddingTop,{x:o,y:a}=e,l=a-s,c;for(;;){if(l<0)return new bi(0,1);if(l>i.viewState.docHeight)return new bi(i.state.doc.length,-1);if(c=i.elementAtHeight(l),r==null)break;if(c.type==xt.Text){if(r<0?c.to<i.viewport.from:c.from>i.viewport.to)break;let f=i.docView.coordsAt(r<0?c.from:c.to,r>0?-1:1);if(f&&(r<0?f.top<=l+s:f.bottom>=l+s))break}let O=i.viewState.heightOracle.textHeight/2;l=r>0?c.bottom+O:c.top-O}if(i.viewport.from>=c.to||i.viewport.to<=c.from){if(t)return null;if(c.type==xt.Text){let O=R1(i,n,c,o,a);return new bi(O,O==c.from?1:-1)}}if(c.type!=xt.Text)return l<(c.top+c.bottom)/2?new bi(c.from,1):new bi(c.to,-1);let h=i.docView.lineAt(c.from,2);return(!h||h.length!=c.length)&&(h=i.docView.lineAt(c.from,-2)),new ru(i,o,a,i.textDirectionAt(c.from)).scanTile(h,c.from)}var ru=class{constructor(e,t,r,n){this.view=e,this.x=t,this.y=r,this.baseDir=n,this.line=null,this.spans=null}bidiSpansAt(e){return(!this.line||this.line.from>e||this.line.to<e)&&(this.line=this.view.state.doc.lineAt(e),this.spans=this.view.bidiSpans(this.line)),this}baseDirAt(e,t){let{line:r,spans:n}=this.bidiSpansAt(e);return n[xi.find(n,e-r.from,-1,t)].level==this.baseDir}dirAt(e,t){let{line:r,spans:n}=this.bidiSpansAt(e);return n[xi.find(n,e-r.from,-1,t)].dir}bidiIn(e,t){let{spans:r,line:n}=this.bidiSpansAt(e);return r.length>1||r.length&&(r[0].level!=this.baseDir||r[0].to+n.from<t)}scan(e,t,r=!1){let n=0,s=e.length-1,o=new Set,a=this.bidiIn(e[0],e[s]),l,c,h=-1,O=1e9,f;e:for(;n<s;){let p=s-n,m=n+s>>1;t:if(o.has(m)){for(let C=1;C<p;C++){let R=m+C;if(R>=s&&(R-=p),!o.has(R)){m=R;break t}}break e}o.add(m);let S=t(m),w=0;if(S)for(let C=0;C<S.length;C++){let R=S[C];if(!(R.width==0&&S.length>1))if(R.bottom<this.y)(!l||l.bottom<R.bottom)&&(l=R),w=1;else if(R.top>this.y)(!c||c.top>R.top)&&(c=R),w=-1;else{let A=R.left>this.x?this.x-R.left:R.right<this.x?this.x-R.right:0,k=Math.abs(A);k<O&&(h=m,O=k,f=R),A&&(w=A<0==(this.baseDir==Ye.LTR)?-1:1)}}w==-1&&(!a||this.baseDirAt(e[m],1))?s=m:w==1&&(!a||this.baseDirAt(e[m+1],-1))&&(n=m+1)}if(!f){if(!c&&!l)return{i:e[0],after:!1};let p=l&&(!c||this.y-l.bottom<c.top-this.y)?l:c;return this.y=(p.top+p.bottom)/2,this.scan(e,t,!0)}if(O&&!r){let{top:p,bottom:m}=f;if(l&&l.bottom>(p+p+m)/3)return this.y=l.bottom-1,this.scan(e,t,!0);if(c&&c.top<(p+m+m)/3)return this.y=c.top+1,this.scan(e,t,!0)}let u=(a?this.dirAt(e[h],1):this.baseDir)==Ye.LTR;return{i:h,after:this.x>(f.left+f.right)/2==u}}scanText(e,t){let r=[];for(let s=0;s<e.length;s=it(e.text,s))r.push(t+s);r.push(t+e.length);let n=this.scan(r,s=>{let o=r[s]-t,a=r[s+1]-t;return Do(e.dom,o,a).getClientRects()});return n.after?new bi(r[n.i+1],-1):new bi(r[n.i],1)}scanTile(e,t){if(!e.length)return new bi(t,1);if(e.children.length==1){let a=e.children[0];if(a.isText())return this.scanText(a,t);if(a.isComposite())return this.scanTile(a,t)}let r=[t];for(let a=0,l=t;a<e.children.length;a++)r.push(l+=e.children[a].length);let n=this.scan(r,a=>{let l=e.children[a];return l.flags&48?null:(l.dom.nodeType==1?l.dom:Do(l.dom,0,l.length)).getClientRects()}),s=e.children[n.i],o=r[n.i];return s.isText()?this.scanText(s,o):s.isComposite()?this.scanTile(s,o):n.after?new bi(r[n.i+1],-1):new bi(o,1)}},ms="\uFFFF",nu=class{ Line truncated
`&&i.lineWrapping&&(r&&(r=U.single(r.main.anchor-1,r.main.head-1)),t={from:s.from,to:s.to,insert:Pe.of([" "])}),t)return Mu(i,t,r,o);if(r&&!ac(r,s)){let a=!1,l="select";return i.inputState.lastSelectionTime>Date.now()-50&&(i.inputState.lastSelectionOrigin=="select"&&(a=!0),l=i.inputState.lastSelectionOrigin,l=="select.pointer"&&(r=Z0(n.facet(Bo).map(c=>c(i)),r))),i.dispatch({selection:r,scrollIntoView:a,userEvent:l}),!0}else return!1}function Mu(i,e,t,r=-1){if(J.ios&&i.inputState.flushIOSKey(e))return!0;let n=i.state.selection.main;if(J.android&&(e.to==n.to&&(e.from==n.from||e.from==n.from-1&&i.state.sliceDoc(e.from,n.from)==" ")&&e.insert.length==1&&e.insert.lines==2&&vs(i.contentDOM,"Enter",13)||(e.from==n.from-1&&e.to==n.to&&e.insert.length==0||r==8&&e.insert.length<e.to-e.from&&e.to>n.head)&&vs(i.contentDOM,"Backspace",8)||e.from==n.from&&e.to==n.to+1&&e.insert.length==0&&vs(i.contentDOM,"Delete",46)))return!0;let s=e.insert.toString();i.inputState.composing>=0&&i.inputState.composing++;let o,a=()=>o||(o=z1(i,e,t));return i.state.facet(S0).some(l=>l(i,e.from,e.to,s,a))||i.dispatch(a()),!0}function z1(i,e,t){let r,n=i.state,s=n.selection.main,o=-1;if(e.from==e.to&&e.from<s.from||e.from>s.to){let l=e.from<s.from?-1:1,c=l<0?s.from:s.to,h=Yo(n.facet(Bo).map(O=>O(i)),c,l);e.from==h&&(o=h)}if(o>-1)r={changes:e,selection:U.cursor(e.from+e.insert.length,-1)};else if(e.from>=s.from&&e.to<=s.to&&e.to-e.from>=(s.to-s.from)/3&&(!t||t.main.empty&&t.main.from==e.from+e.insert.length)&&i.inputState.composing<0){let l=s.from<e.from?n.sliceDoc(s.from,e.from):"",c=s.to>e.to?n.sliceDoc(e.to,s.to):"";r=n.replaceSelection(i.state.toText(l+e.insert.sliceString(0,void 0,i.state.lineBreak)+c))}else{let l=n.changes(e),c=t&&t.main.to<=l.newLength?t.main:void 0;if(n.selection.ranges.length>1&&(i.inputState.composing>=0||i.inputState.compositionPendingChange)&&e.to<=s.to+10&&e.to>=s.to-10){let h=i.state.sliceDoc(e.from,e.to),O,f=t&&R0(i,t.main.head);if(f){let p=e.insert.length-(e.to-e.from);O={from:f.from,to:f.to-p}}else O=i.state.doc.lineAt(s.head);let u=s.to-e.to;r=n.changeByRange(p=>{if(p.from==s.from&&p.to==s.to)return{changes:l,range:c||p.map(l)};let m=p.to-u,S=m-h.length;if(i.state.sliceDoc(S,m)!=h||m>=O.from&&S<=O.to)return{range:p};let w=n.changes({from:S,to:m,insert:e.insert}),C=p.to-s.to;return{changes:w,range:c?U.range(Math.max(0,c.anchor+C),Math.max(0,c.head+C)):p.map(w)}})}else r={changes:l,selection:c&&n.selection.replaceRange(c)}}let a="input.type";return(i.composing||i.inputState.compositionPendingChange&&i.inputState.compositionEndedAt>Date.now()-50)&&(i.inputState.compositionPendingChange=!1,a+=".compose",i.inputState.compositionFirstChange&&(a+=".start",i.inputState.compositionFirstChange=!1)),n.update(r,{userEvent:a,scrollIntoView:!0})}function A0(i,e,t,r){let n=Math.min(i.length,e.length),s=0;for(;s<n&&i.charCodeAt(s)==e.charCodeAt(s);)s++;if(s==n&&i.length==e.length)return null;let o=i.length,a=e.length;for(;o>0&&a>0&&i.charCodeAt(o-1)==e.charCodeAt(a-1);)o--,a--;if(r=="end"){let l=Math.max(0,s-Math.min(o,a));t-=o+l-s}if(o<s&&i.length<e.length){let l=t<=s&&t>=o?s-t:0;s-=l,a=s+(a-o),o=s}else if(a<s){let l=t<=s&&t>=a?s-t:0;s-=l,o=s+(o-a),a=s}return{from:s,toA:o,toB:a}}function Y1(i){let e=[];if(i.root.activeElement!=i.contentDOM)return e;let{anchorNode:t,anchorOffset:r,focusNode:n,focusOffset:s}=i.observer.selectionRange;return t&&(e.push(new oc(t,r)),(n!=t||s!=r)&&e.push(new oc(n,s))),e}function M1(i,e){if(i.length==0)return null;let t=i[0].pos,r=i.length==2?i[1].pos:t;return t>-1&&r>-1?U.single(t+e,r+e):null}function ac(i,e){return e.head==i.main.head&&e.anchor==i.main.anchor}var ou=class{setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}constructor(e){this.view=e,this.lastKeyCode=0,this.lastKeyTime=0,this.touchActive=!1,this.lastTouchTime=0,this.lastTouchX=0,this.lastTouchY=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.lastWheelEvent=0,this.pendingIOSKey=void 0,this.lastIOSMomentumScroll=0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=e.hasFocus,J.safari&&e.contentDOM.addEventListener("input",()=>null),J.gecko&&ek(e.contentDOM.ownerDocument)}handleEvent(e){!F1(this.view,e)||this.ignoreDuringComposition(e)||e.type=="keydown"&&this.keydown(e)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(e.type,e)):this.runHandlers(e.type,e))}runHandlers(e,t){let r=this.handlers[e];if(r){for(let n of r.observers)n(this.view,t);for(let n of r.handlers){if(t.defaultPrevented)break;if(n(this.view,t)){t.preventDefault();break}}}}ensureHandlers( Line truncated
`))};if((J.mac||J.android)&&O.from==o-1&&/^\. ?$/.test(r.text)&&e.contentDOM.getAttribute("autocorrect")=="off"&&(O={from:a,to:l,insert:Pe.of([r.text.replace("."," ")])}),this.pendingContextChange=O,!e.state.readOnly){let f=this.to-this.from+(O.to-O.from+O.insert.length);Mu(e,O,U.single(this.toEditorPos(r.selectionStart,f),this.toEditorPos(r.selectionEnd,f)))}this.pendingContextChange&&(this.revertPending(e.state),this.setSelection(e.state)),O.from<O.to&&!O.insert.length&&e.inputState.composing>=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(t.text.slice(Math.max(0,r.updateRangeStart-1),Math.min(t.text.length,r.updateRangeStart+1)))&&this.handlers.compositionend(r)},this.handlers.characterboundsupdate=r=>{let n=[],s=null;for(let o=this.toEditorPos(r.rangeStart),a=this.toEditorPos(r.rangeEnd);o<a;o++){let l=e.coordsForChar(o);s=l&&new DOMRect(l.left,l.top,l.right-l.left,l.bottom-l.top)||s||new DOMRect,n.push(s)}t.updateCharacterBounds(r.rangeStart,n)},this.handlers.textformatupdate=r=>{let n=[];for(let s of r.getTextFormats()){let o=s.underlineStyle,a=s.underlineThickness;if(!/none/i.test(o)&&!/none/i.test(a)){let l=this.toEditorPos(s.rangeStart),c=this.toEditorPos(s.rangeEnd);if(l<c){let h=`text-decoration: underline ${/^[a-z]/.test(o)?o+" ":o=="Dashed"?"dashed ":o=="Squiggle"?"wavy ":""}${/thin/i.test(a)?1:2}px`;n.push(I.mark({attributes:{style:h}}).range(l,c))}}}e.dispatch({effects:$0.of(I.set(n))})},this.handlers.compositionstart=()=>{e.inputState.composing<0&&(e.inputState.composing=0,e.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(e.inputState.composing=-1,e.inputState.compositionFirstChange=null,this.composing){let{drifted:r}=this.composing;this.composing=null,r&&this.reset(e.state)}};for(let r in this.handlers)t.addEventListener(r,this.handlers[r]);this.measureReq={read:r=>{let n=qo(r.root);n&&n.rangeCount&&this.editContext.updateSelectionBounds(n.getRangeAt(0).getBoundingClientRect())}}}applyEdits(e){let t=0,r=!1,n=this.pendingContextChange;return e.changes.iterChanges((s,o,a,l,c)=>{if(r)return;let h=c.length-(o-s);if(n&&o>=n.to)if(n.from==s&&n.to==o&&n.insert.eq(c)){n=this.pendingContextChange=null,t+=h,this.to+=h;return}else n=null,this.revertPending(e.state);if(s+=t,o+=t,o<=this.from)this.from+=h,this.to+=h;else if(s<this.to){if(s<this.from||o>this.to||this.to-this.from+c.length>3e4){r=!0;return}this.editContext.updateText(this.toContextPos(s),this.toContextPos(o),c.toString()),this.to+=h}t+=h}),n&&!r&&this.revertPending(e.state),!r}update(e){let t=this.pendingContextChange,r=e.startState.selection.main;this.composing&&(this.composing.drifted||!e.changes.touchesRange(r.from,r.to)&&e.transactions.some(n=>!n.isUserEvent("input.type")&&n.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=e.changes.mapPos(this.composing.editorBase)):!this.applyEdits(e)||!this.rangeIsValid(e.state)?(this.pendingContextChange=null,this.reset(e.state)):(e.docChanged||e.selectionSet||t)&&this.setSelection(e.state),(e.geometryChanged||e.docChanged||e.selectionSet)&&e.view.requestMeasure(this.measureReq)}resetRange(e){let{head:t}=e.selection.main;this.from=Math.max(0,t-1e4),this.to=Math.min(e.doc.length,t+1e4)}reset(e){this.resetRange(e),this.editContext.updateText(0,this.editContext.text.length,e.doc.sliceString(this.from,this.to)),this.setSelection(e)}revertPending(e){let t=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(t.from),this.toContextPos(t.from+t.insert.length),e.doc.sliceString(t.from,t.to))}setSelection(e){let{main:t}=e.selection,r=this.toContextPos(Math.max(this.from,Math.min(this.to,t.anchor))),n=this.toContextPos(t.head);(this.editContext.selectionStart!=r||this.editContext.selectionEnd!=n)&&this.editContext.updateSelection(r,n)}rangeIsValid(e){let{head:t}=e.selection.main;return!(this.from>0&&t-this.from<500||this.to<e.doc.length&&this.to-t<500||this.to-this.from>1e4*3)}toEditorPos(e,t=this.to-this.from){e=Math.min(e,t);let r=this.composing;return r&&r.drifted?r.editorBase+(e-r.contextBase):e+this.from}toContextPos(e){let t=this.composing;return t&&t.drifted?t.contextBase+(e-t.editorBase):e-this.from}destroy(){for(let e in this.handlers)this.editContext.removeEventListener(e,this.handlers[e])}},W=class i{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(e={}){var t;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=doc Line truncated
-\x7F-\x9F\xAD\u061C\u200B\u200E\u200F\u2028\u2029\u202D\u202E\u2066\u2067\u2069\uFEFF\uFFF9-\uFFFC]`,wu),kk={0:"null",7:"bell",8:"backspace",10:"newline",11:"vertical tab",13:"carriage return",27:"escape",8203:"zero width space",8204:"zero width non-joiner",8205:"zero width joiner",8206:"left-to-right mark",8207:"right-to-left mark",8232:"line separator",8237:"left-to-right override",8238:"right-to-left override",8294:"left-to-right isolate",8295:"right-to-left isolate",8297:"pop directional isolate",8233:"paragraph separator",65279:"zero width no-break space",65532:"object replacement"},Cf=null;function Tk(){var i;if(Cf==null&&typeof document!="undefined"&&document.body){let e=document.body.style;Cf=((i=e.tabSize)!==null&&i!==void 0?i:e.MozTabSize)!=null}return Cf||!1}var Hl=K.define({combine(i){let e=ei(i,{render:null,specialChars:Pk,addSpecialChars:null});return(e.replaceTabs=!Tk())&&(e.specialChars=new RegExp(" |"+e.specialChars.source,wu)),e.addSpecialChars&&(e.specialChars=new RegExp(e.specialChars.source+"|"+e.addSpecialChars.source,wu)),e}});function tx(i={}){return[Hl.of(i),Xk()]}var Fb=null;function Xk(){return Fb||(Fb=je.fromClass(class{constructor(i){this.view=i,this.decorations=I.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(i.state.facet(Hl)),this.decorations=this.decorator.createDeco(i)}makeDecorator(i){return new Io({regexp:i.specialChars,decoration:(e,t,r)=>{let{doc:n}=t.state,s=Ci(e[0],0);if(s==9){let o=n.lineAt(r),a=t.state.tabSize,l=Et(o.text,a,r-o.from);return I.replace({widget:new $u((a-l%a)*this.view.defaultCharacterWidth/this.view.scaleX)})}return this.decorationCache[s]||(this.decorationCache[s]=I.replace({widget:new yu(i,s)}))},boundary:i.replaceTabs?void 0:/[^]/})}update(i){let e=i.state.facet(Hl);i.startState.facet(Hl)!=e?(this.decorator=this.makeDecorator(e),this.decorations=this.decorator.createDeco(i.view)):this.decorations=this.decorator.updateDeco(i,this.decorations)}},{decorations:i=>i.decorations}))}var _k="\u2022";function Rk(i){return i>=32?_k:i==10?"\u2424":String.fromCharCode(9216+i)}var yu=class extends at{constructor(e,t){super(),this.options=e,this.code=t}eq(e){return e.code==this.code}toDOM(e){let t=Rk(this.code),r=e.state.phrase("Control character")+" "+(kk[this.code]||"0x"+this.code.toString(16)),n=this.options.render&&this.options.render(this.code,r,t);if(n)return n;let s=document.createElement("span");return s.textContent=t,s.title=r,s.setAttribute("aria-label",r),s.className="cm-specialChar",s}ignoreEvent(){return!1}},$u=class extends at{constructor(e){super(),this.width=e}eq(e){return e.width==this.width}toDOM(){let e=document.createElement("span");return e.textContent=" ",e.className="cm-tab",e.style.width=this.width+"px",e}ignoreEvent(){return!1}};function Qc(){return Ck}var Zk=I.line({class:"cm-activeLine"}),Ck=je.fromClass(class{constructor(i){this.decorations=this.getDeco(i)}update(i){(i.docChanged||i.selectionSet)&&(this.decorations=this.getDeco(i.view))}getDeco(i){let e=-1,t=[];for(let r of i.state.selection.ranges){let n=i.lineBlockAt(r.head);n.from>e&&(t.push(Zk.range(n.from)),e=n.from)}return I.set(t)}},{decorations:i=>i.decorations});var Pu=2e3;function Uk(i,e,t){let r=Math.min(e.line,t.line),n=Math.max(e.line,t.line),s=[];if(e.off>Pu||t.off>Pu||e.col<0||t.col<0){let o=Math.min(e.off,t.off),a=Math.max(e.off,t.off);for(let l=r;l<=n;l++){let c=i.doc.line(l);c.length<=a&&s.push(U.range(c.from+o,c.to+a))}}else{let o=Math.min(e.col,t.col),a=Math.max(e.col,t.col);for(let l=r;l<=n;l++){let c=i.doc.line(l),h=zl(c.text,o,i.tabSize,!0);if(h<0)s.push(U.cursor(c.to));else{let O=zl(c.text,a,i.tabSize);s.push(U.range(c.from+h,c.from+O))}}}return s}function Ak(i,e){let t=i.coordsAtPos(i.viewport.from);return t?Math.round(Math.abs((t.left-e)/i.defaultCharacterWidth)):-1}function Bb(i,e){let t=i.posAtCoords({x:e.clientX,y:e.clientY},!1),r=i.state.doc.lineAt(t),n=t-r.from,s=n>Pu?-1:n==r.length?Ak(i,e.clientX):Et(r.text,i.state.tabSize,t-r.from);return{line:r.number,col:s,off:n}}function Ek(i,e){let t=Bb(i,e),r=i.state.selection;return t?{update(n){if(n.docChanged){let s=n.changes.mapPos(n.startState.doc.line(t.line).from),o=n.state.doc.lineAt(s);t={line:o.number,col:t.col,off:Math.min(t.off,o.length)},r=r.map(n.changes)}},get(n,s,o){let a=Bb(i,n);if(!a)return r;let l=Uk(i.state,t,a);return l.length?o?U.create(l.concat(r.ranges)):U.create(l):r}}:null}function vc(i){let e=(i==null?void 0:i.eventFilter)||(t=>t.altKey&&t.button==0);return W.mouseSelectionStyle.of((t,r)=>e(r)?Ek(t,r):null)}var zk={Alt:[18,i=>!!i.altKey],Control:[17,i=>!!i.ctrlKey],Shift:[16,i=>!!i.shiftKey],Meta:[91,i=>!!i.metaKey]},Yk={style:"cursor: crosshair"};function wc(i={}){let[e,t]=zk[i.key||"Alt"],r=je.fromClass(class{constructor(n){this.view=n,this.isDown=!1}set(n){this.isDown!=n&&(this.isDown=n,this.view.update([]))}},{eventObservers:{keydown(n){this.set(n.keyCode==e||t(n))},keyup(n){(n.keyCode==e||!t(n))&&this.set(!1)},mousemove(n){this.set(t(n))}}});retur Line truncated
`){[e,t]=ds(this,e,t);let n="";for(let s=0,o=0;s<this.children.length&&o<=t;s++){let a=this.children[s],l=o+a.length;o>e&&s&&(n+=r),e<l&&t>o&&(n+=a.sliceString(e-o,t-o,r)),o=l+1}return n}flatten(e){for(let t of this.children)t.flatten(e)}scanIdentical(e,t){if(!(e instanceof i))return 0;let r=0,[n,s,o,a]=t>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;n+=t,s+=t){if(n==o||s==a)return r;let l=this.children[n],c=e.children[s];if(l!=c)return r+l.scanIdentical(c,t);r+=l.length+1}}static from(e,t=e.reduce((r,n)=>r+n.length+1,-1)){let r=0;for(let f of e)r+=f.lines;if(r<32){let f=[];for(let p of e)p.flatten(f);return new ii(f,t)}let n=Math.max(32,r>>5),s=n<<1,o=n>>1,a=[],l=0,c=-1,h=[];function O(f){let p;if(f.lines>s&&f instanceof i)for(let m of f.children)O(m);else f.lines>o&&(l>o||!l)?(u(),a.push(f)):f instanceof ii&&l&&(p=h[h.length-1])instanceof ii&&f.lines+p.lines<=32?(l+=f.lines,c+=f.length+1,h[h.length-1]=new ii(p.text.concat(f.text),p.length+1+f.length)):(l+f.lines>n&&u(),l+=f.lines,c+=f.length+1,h.push(f))}function u(){l!=0&&(a.push(h.length==1?h[0]:i.from(h,c)),c=-1,l=h.length=0)}for(let f of e)O(f);return u(),a.length==1?a[0]:new i(a,t)}};Pe.empty=new ii([""],0);function e1(i){let e=-1;for(let t of i)e+=t.length+1;return e}function Rl(i,e,t=0,r=1e9){for(let n=0,s=0,o=!0;s<i.length&&n<=r;s++){let a=i[s],l=n+a.length;l>=t&&(l>r&&(a=a.slice(0,r-n)),n<t&&(a=a.slice(t-n)),o?(e[e.length-1]+=a,o=!1):e.push(a)),n=l+1}return e}function sb(i,e,t){return Rl(i,[""],e,t)}var Sn=class{constructor(e,t=1){this.dir=t,this.done=!1,this.lineBreak=!1,this.value="",this.nodes=[e],this.offsets=[t>0?1:(e instanceof ii?e.text.length:e.children.length)<<1]}nextInner(e,t){for(this.done=this.lineBreak=!1;;){let r=this.nodes.length-1,n=this.nodes[r],s=this.offsets[r],o=s>>1,a=n instanceof ii?n.text.length:n.children.length;if(o==(t>0?a:0)){if(r==0)return this.done=!0,this.value="",this;t>0&&this.offsets[r-1]++,this.nodes.pop(),this.offsets.pop()}else if((s&1)==(t>0?0:1)){if(this.offsets[r]+=t,e==0)return this.lineBreak=!0,this.value=`
`,this;e--}else if(n instanceof ii){let l=n.text[o+(t<0?-1:0)];if(this.offsets[r]+=t,l.length>Math.max(0,e))return this.value=e==0?l:t>0?l.slice(e):l.slice(0,l.length-e),this;e-=l.length}else{let l=n.children[o+(t<0?-1:0)];e>l.length?(e-=l.length,this.offsets[r]+=t):(t<0&&this.offsets[r]--,this.nodes.push(l),this.offsets.push(t>0?1:(l instanceof ii?l.text.length:l.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}},Cl=class{constructor(e,t,r){this.value="",this.done=!1,this.cursor=new Sn(e,t>r?-1:1),this.pos=t>r?e.length:0,this.from=Math.min(t,r),this.to=Math.max(t,r)}nextInner(e,t){if(t<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;e+=Math.max(0,t<0?this.pos-this.to:this.from-this.pos);let r=t<0?this.pos-this.from:this.to-this.pos;e>r&&(e=r),r-=e;let{value:n}=this.cursor.next(e);return this.pos+=(n.length+e)*t,this.value=n.length<=r?n:t<0?n.slice(n.length-r):n.slice(0,r),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}},Zl=class{constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:t,lineBreak:r,value:n}=this.inner.next(e);return t&&this.afterBreak?(this.value="",this.afterBreak=!1):t?(this.done=!0,this.value=""):r?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=n,this.afterBreak=!1),this}get lineBreak(){return!1}};typeof Symbol!="undefined"&&(Pe.prototype[Symbol.iterator]=function(){return this.iter()},Sn.prototype[Symbol.iterator]=Cl.prototype[Symbol.iterator]=Zl.prototype[Symbol.iterator]=function(){return this});var pu=class{constructor(e,t,r,n){this.from=e,this.to=t,this.number=r,this.text=n}get length(){return this.to-this.from}};function ds(i,e,t){return e=Math.max(0,Math.min(i.length,e)),[e,Math.max(e,Math.min(i.length,t))]}function it(i,e,t=!0,r=!0){return tb(i,e,t,r)}function t1(i){return i>=56320&&i<57344}function i1(i){return i>=55296&&i<56320}function Ui(i,e){let t=i.charCodeAt(e);if(!i1(t)||e+1==i.length)return t;let r=i.charCodeAt(e+1);return t1(r)?(t-55296<<10)+(r-56320)+65536:t}function Yl(i){return i<=65535?String.fromCharCode(i):(i-=65536,String.fromCharCode((i>>10)+55296,(i&1023)+56320))}function Ar(i){return i<65536?1:2}var mu=/\r\n?|\n/,ut=(function(i){return i[i.Simple=0]="Simple",i[i.TrackDel=1]="TrackDel",i[i.TrackBefore=2]="TrackBefore",i[i.TrackAfter=3]="TrackAfter",i})(ut||(ut={})),fr=class i{constructor(e){this.sections=e}get length(){let e=0;for(let t=0;t<this.sections.length;t+=2)e+=this.sections[t];return e}get newLength(){let e=0;for(let t=0;t<this.sections.length;t+=2){let r=this.sections[t+1];e+=r<0?this.sections[t]:r}return e}get empty(){return this.sections.length==0||this.sections.length==2&&this.sections[1]<0}iterGaps(e){for(let t=0,r=0,n=0;t<this.sections.length;){let s=this.sections[t++],o=this.sections[t++];o<0?(e(r,n,s),n+=s):n+=o,r+=s}}iterChangedRanges(e,t=!1){gu(this,e,t)}get invertedDesc(){let e=[];for(let t=0;t<this.sections.length;){let r=this.sections[t++],n=this.sections[t++];n<0?e.push(r,n):e.push(n,r)}return new i(e)}composeDesc(e){return this.empty?e:e.empty?this:hb(this,e)}mapDesc(e,t=!1){return e.empty?this:bu(this,e,t)}mapPos(e,t=-1,r=ut.Simple){let n=0,s=0;for(let o=0;o<this.sections.length;){let a=this.sections[o++],l=this.sections[o++],c=n+a;if(l<0){if(c>e)return s+(e-n);s+=a}else{if(r!=ut.Simple&&c>=e&&(r==ut.TrackDel&&n<e&&c>e||r==ut.TrackBefore&&n<e||r==ut.TrackAfter&&c>e))return null;if(c>e||c==e&&t<0&&!a)return e==n||t<0?s:s+l;s+=l}n=c}if(e>n)throw new RangeError(`Position ${e} is out of range for changeset of length ${n}`);return s}touchesRange(e,t=e){for(let r=0,n=0;r<this.sections.length&&n<=t;){let s=this.sections[r++],o=this.sections[r++],a=n+s;if(o>=0&&n<=t&&a>=e)return n<e&&a>t?"cover":!0;n=a}return!1}toString(){let e="";for(let t=0;t<this.sections.length;){let r=this.sections[t++],n=this.sections[t++];e+=(e?" ":"")+r+(n>=0?":"+n:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(t=>typeof t!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new i(e)}static create(e){return new i(e)}},zt=class i extends fr{constructor(e,t){super(e),this.inserted=t}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");return gu(this,(t,r,n,s,o)=>e=e.replace(n,n+(r-t),o),!1),e}mapDesc(e,t=!1){return bu(this,e,t,!0)}invert(e){let t=this.sections.slice(),r=[];for(let n=0,s=0;n<t.length;n+=2){let o=t[n],a=t[n+1];if(a>=0){t[n]=a,t[n+1]=o;let l=n>>1;for(;r.length<l;)r.push(Pe.empty);r.push(o?e.slice(s,s+o):Pe.empty)}s+=o}return new i(t,r)}compose(e){return this.empty?e:e.empty?this:hb(this,e,!0)}map(e,t=!1){return e.empty?this:bu(this,e,t,!0)}iterChanges(e,t=!1){gu(this,e,t)}get desc Line truncated
`}get readOnly(){return this.facet(gb)}phrase(e,...t){for(let r of this.facet(i.phrases))if(Object.prototype.hasOwnProperty.call(r,e)){e=r[e];break}return t.length&&(e=e.replace(/\$(\$|\d*)/g,(r,n)=>{if(n=="$")return"$";let s=+(n||1);return!s||s>t.length?r:t[s-1]})),e}languageDataAt(e,t,r=-1){let n=[];for(let s of this.facet(ub))for(let o of s(this,t,r))Object.prototype.hasOwnProperty.call(o,e)&&n.push(o[e]);return n}charCategorizer(e){let t=this.languageDataAt("wordChars",e);return O1(t.length?t[0]:"")}wordAt(e){let{text:t,from:r,length:n}=this.doc.lineAt(e),s=this.charCategorizer(e),o=e-r,a=e-r;for(;o>0;){let l=it(t,o,!1);if(s(t.slice(l,o))!=Me.Word)break;o=l}for(;a<n;){let l=it(t,a);if(s(t.slice(a,l))!=Me.Word)break;a=l}return o==a?null:U.range(o+r,a+r)}};we.allowMultipleSelections=Su;we.tabSize=J.define({combine:i=>i.length?i[0]:4});we.lineSeparator=fb;we.readOnly=gb;we.phrases=J.define({compare(i,e){let t=Object.keys(i),r=Object.keys(e);return t.length==r.length&&t.every(n=>i[n]==e[n])}});we.languageData=ub;we.changeFilter=db;we.transactionFilter=pb;we.transactionExtender=mb;bt.reconfigure=ae.define();function ri(i,e,t={}){let r={};for(let n of i)for(let s of Object.keys(n)){let o=n[s],a=r[s];if(a===void 0)r[s]=o;else if(!(a===o||o===void 0))if(Object.hasOwnProperty.call(t,s))r[s]=t[s](a,o);else throw new Error("Config merge conflict for field "+s)}for(let n in e)r[n]===void 0&&(r[n]=e[n]);return r}var mi=class{eq(e){return this==e}range(e,t=e){return _o.create(e,t,this)}};mi.prototype.startSide=mi.prototype.endSide=0;mi.prototype.point=!1;mi.prototype.mapMode=ut.TrackDel;function _u(i,e){return i==e||i.constructor==e.constructor&&i.eq(e)}var _o=class i{constructor(e,t,r){this.from=e,this.to=t,this.value=r}static create(e,t,r){return new i(e,t,r)}};function $u(i,e){return i.from-e.from||i.value.startSide-e.value.startSide}var Pu=class i{constructor(e,t,r,n){this.from=e,this.to=t,this.value=r,this.maxPoint=n}get length(){return this.to[this.to.length-1]}findIndex(e,t,r,n=0){let s=r?this.to:this.from;for(let o=n,a=s.length;;){if(o==a)return o;let l=o+a>>1,c=s[l]-e||(r?this.value[l].endSide:this.value[l].startSide)-t;if(l==o)return c>=0?o:a;c>=0?a=l:o=l+1}}between(e,t,r,n){for(let s=this.findIndex(t,-1e9,!0),o=this.findIndex(r,1e9,!1,s);s<o;s++)if(n(this.from[s]+e,this.to[s]+e,this.value[s])===!1)return!1}map(e,t){let r=[],n=[],s=[],o=-1,a=-1;for(let l=0;l<this.value.length;l++){let c=this.value[l],h=this.from[l]+e,O=this.to[l]+e,u,f;if(h==O){let p=t.mapPos(h,c.startSide,c.mapMode);if(p==null||(u=f=p,c.startSide!=c.endSide&&(f=t.mapPos(h,c.endSide),f<u)))continue}else if(u=t.mapPos(h,c.startSide),f=t.mapPos(O,c.endSide),u>f||u==f&&c.startSide>0&&c.endSide<=0)continue;(f-u||c.endSide-c.startSide)<0||(o<0&&(o=u),c.point&&(a=Math.max(a,f-u)),r.push(c),n.push(u-o),s.push(f-o))}return{mapped:r.length?new i(n,s,r,a):null,pos:o}}},pe=class i{constructor(e,t,r,n){this.chunkPos=e,this.chunk=t,this.nextLayer=r,this.maxPoint=n}static create(e,t,r,n){return new i(e,t,r,n)}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let t of this.chunk)e+=t.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(e){let{add:t=[],sort:r=!1,filterFrom:n=0,filterTo:s=this.length}=e,o=e.filter;if(t.length==0&&!o)return this;if(r&&(t=t.slice().sort($u)),this.isEmpty)return t.length?i.of(t):this;let a=new zl(this,null,-1).goto(0),l=0,c=[],h=new Zi;for(;a.value||l<t.length;)if(l<t.length&&(a.from-t[l].from||a.startSide-t[l].value.startSide)>=0){let O=t[l++];h.addInner(O.from,O.to,O.value)||c.push(O)}else a.rangeIndex==1&&a.chunkIndex<this.chunk.length&&(l==t.length||this.chunkEnd(a.chunkIndex)<t[l].from)&&(!o||n>this.chunkEnd(a.chunkIndex)||s<this.chunkPos[a.chunkIndex])&&h.addChunk(this.chunkPos[a.chunkIndex],this.chunk[a.chunkIndex])?a.nextChunk():((!o||n>a.to||s<a.from||o(a.from,a.to,a.value))&&(h.addInner(a.from,a.to,a.value)||c.push(_o.create(a.from,a.to,a.value))),a.next());return h.finishInner(this.nextLayer.isEmpty&&!c.length?i.empty:this.nextLayer.update({add:c,filter:o,filterFrom:n,filterTo:s}))}map(e){if(e.empty||this.isEmpty)return this;let t=[],r=[],n=-1;for(let o=0;o<this.chunk.length;o++){let a=this.chunkPos[o],l=this.chunk[o],c=e.touchesRange(a,a+l.length);if(c===!1)n=Math.max(n,l.maxPoint),t.push(l),r.push(e.mapPos(a));else if(c===!0){let{mapped:h,pos:O}=l.map(a,e);h&&(n=Math.max(n,h.maxPoint),t.push(h),r.push(O))}}let s=this.nextLayer.map(e);return t.length==0?s:new i(r,t,s||i.empty,n)}between(e,t,r){if(!this.isEmpty){for(let n=0;n<this.chunk.length;n++){let s=this.chunkPos[n],o=this.chunk[n];if(t>=s&&e<=s+o.length&&o.between(s,e-s,t-s,r)===!1)return}this.nextLayer.between(e,t,r)}}iter(e=0){return Ro.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,t=0){return Ro.from(e).goto(t)}static compare(e,t,r,n,s=-1){let o=e.filter(O=>O.maxPoint>0||!O.isEm Line truncated
`)}static newName(){let e=vb[Sb]||1;return vb[Sb]=e+1,"\u037C"+e.toString(36)}static mount(e,t,r){let n=e[Ru],s=r&&r.nonce;n?s&&n.setNonce(s):n=new Cu(e,s),n.mount(Array.isArray(t)?t:[t],e)}},Qb=new Map,Cu=class{constructor(e,t){let r=e.ownerDocument||e,n=r.defaultView;if(!e.head&&e.adoptedStyleSheets&&n.CSSStyleSheet){let s=Qb.get(r);if(s)return e[Ru]=s;this.sheet=new n.CSSStyleSheet,Qb.set(r,this)}else this.styleTag=r.createElement("style"),t&&this.styleTag.setAttribute("nonce",t);this.modules=[],e[Ru]=this}mount(e,t){let r=this.sheet,n=0,s=0;for(let o=0;o<e.length;o++){let a=e[o],l=this.modules.indexOf(a);if(l<s&&l>-1&&(this.modules.splice(l,1),s--,l=-1),l==-1){if(this.modules.splice(s++,0,a),r)for(let c=0;c<a.rules.length;c++)r.insertRule(a.rules[c],n++)}else{for(;s<l;)n+=this.modules[s++].rules.length;n+=a.rules.length,s++}}if(r)t.adoptedStyleSheets.indexOf(this.sheet)<0&&(t.adoptedStyleSheets=[this.sheet,...t.adoptedStyleSheets]);else{let o="";for(let l=0;l<this.modules.length;l++)o+=this.modules[l].getRules()+`
`;this.styleTag.textContent=o;let a=t.head||t;this.styleTag.parentNode!=a&&a.insertBefore(this.styleTag,a.firstChild)}}setNonce(e){this.styleTag&&this.styleTag.getAttribute("nonce")!=e&&this.styleTag.setAttribute("nonce",e)}};var dr={8:"Backspace",9:"Tab",10:"Enter",12:"NumLock",13:"Enter",16:"Shift",17:"Control",18:"Alt",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",44:"PrintScreen",45:"Insert",46:"Delete",59:";",61:"=",91:"Meta",92:"Meta",106:"*",107:"+",108:",",109:"-",110:".",111:"/",144:"NumLock",145:"ScrollLock",160:"Shift",161:"Shift",162:"Control",163:"Control",164:"Alt",165:"Alt",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},ps={48:")",49:"!",50:"@",51:"#",52:"$",53:"%",54:"^",55:"&",56:"*",57:"(",59:":",61:"+",173:"_",186:":",187:"+",188:"<",189:"_",190:">",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},f1=typeof navigator!="undefined"&&/Mac/.test(navigator.platform),d1=typeof navigator!="undefined"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(ot=0;ot<10;ot++)dr[48+ot]=dr[96+ot]=String(ot);var ot;for(ot=1;ot<=24;ot++)dr[ot+111]="F"+ot;var ot;for(ot=65;ot<=90;ot++)dr[ot]=String.fromCharCode(ot+32),ps[ot]=String.fromCharCode(ot);var ot;for(Ll in dr)ps.hasOwnProperty(Ll)||(ps[Ll]=dr[Ll]);var Ll;function wb(i){var e=f1&&i.metaKey&&i.shiftKey&&!i.ctrlKey&&!i.altKey||d1&&i.shiftKey&&i.key&&i.key.length==1||i.key=="Unidentified",t=!e&&i.key||(i.shiftKey?ps:dr)[i.keyCode]||i.key||"Unidentified";return t=="Esc"&&(t="Escape"),t=="Del"&&(t="Delete"),t=="Left"&&(t="ArrowLeft"),t=="Up"&&(t="ArrowUp"),t=="Right"&&(t="ArrowRight"),t=="Down"&&(t="ArrowDown"),t}function rt(){var i=arguments[0];typeof i=="string"&&(i=document.createElement(i));var e=1,t=arguments[1];if(t&&typeof t=="object"&&t.nodeType==null&&!Array.isArray(t)){for(var r in t)if(Object.prototype.hasOwnProperty.call(t,r)){var n=t[r];typeof n=="string"?i.setAttribute(r,n):n!=null&&(i[r]=n)}e++}for(;e<arguments.length;e++)yb(i,arguments[e]);return i}function yb(i,e){if(typeof e=="string")i.appendChild(document.createTextNode(e));else if(e!=null)if(e.nodeType!=null)i.appendChild(e);else if(Array.isArray(e))for(var t=0;t<e.length;t++)yb(i,e[t]);else throw new RangeError("Unsupported child node: "+e)}var Mt=typeof navigator!="undefined"?navigator:{userAgent:"",vendor:"",platform:""},Vu=typeof document!="undefined"?document:{documentElement:{style:{}}},ju=/Edge\/(\d+)/.exec(Mt.userAgent),c0=/MSIE \d/.test(Mt.userAgent),qu=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(Mt.userAgent),xc=!!(c0||qu||ju),$b=!xc&&/gecko\/(\d+)/i.test(Mt.userAgent),Zu=!xc&&/Chrome\/(\d+)/.exec(Mt.userAgent),Pb="webkitFontSmoothing"in Vu.documentElement.style,Du=!xc&&/Apple Computer/.test(Mt.vendor),kb=Du&&(/Mobile\/\w+/.test(Mt.userAgent)||Mt.maxTouchPoints>2),ee={mac:kb||/Mac/.test(Mt.platform),windows:/Win/.test(Mt.platform),linux:/Linux|X11/.test(Mt.platform),ie:xc,ie_version:c0?Vu.documentMode||6:qu?+qu[1]:ju?+ju[1]:0,gecko:$b,gecko_version:$b?+(/Firefox\/(\d+)/.exec(Mt.userAgent)||[0,0])[1]:0,chrome:!!Zu,chrome_version:Zu?+Zu[1]:0,ios:kb,android:/Android\b/.test(Mt.userAgent),webkit:Pb,webkit_version:Pb?+(/\bAppleWebKit\/(\d+)/.exec(Mt.userAgent)||[0,0])[1]:0,safari:Du,safari_version:Du?+(/\bVersion\/(\d+(\.\d+)?)/.exec(Mt.userAgent)||[0,0])[1]:0,tabSize:Vu.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function zf(i,e){for(let t in i)t=="class"&&e.class?e.class+=" "+i.class:t=="style"&&e.style?e.style+=";"+i.style:e[t]=i[t];return e}var tc=Object.create(null);function Yf(i,e,t){if(i==e)return!0;i||(i=tc),e||(e=tc);let r=Object.keys(i),n=Object.keys(e);if(r.length-(t&&r.indexOf(t)>-1?1:0)!=n.length-(t&&n.indexOf(t)>-1?1:0))return!1;for(let s of r)if(s!=t&&(n.indexOf(s)==-1||i[s]!==e[s]))return!1;return!0}function p1(i,e){for(let t=i.attributes.length-1;t>=0;t--){let r=i.attributes[t].name;e[r]==null&&i.removeAttribute(r)}for(let t in e){let r=e[t];t=="style"?i.style.cssText=r:i.getAttribute(t)!=r&&i.setAttribute(t,r)}}function Tb(i,e,t){let r=!1;if(e)for(let n in e)t&&n in t||(r=!0,n=="style"?i.style.cssText="":i.removeAttribute(n));if(t)for(let n in t)e&&e[n]==t[n]||(r=!0,n=="style"?i.style.cssText=t[n]:i.setAttribute(n,t[n]));return r}function m1(i){let e=Object.create(null);for(let t=0;t<i.attributes.length;t++){let r=i.attributes[t];e[r.name]=r.value}return e}var at=class{eq(e){return!1}updateDOM(e,t,r){return!1}compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}get estimatedHeight(){return-1}get lineBreaks(){return 0}ignoreEvent(e){return!0}coordsAt(e,t,r){return null}get isHidden(){return!1}get editable(){return!1}destroy(e){}},xt=(function(i){return i[i.Text=0]="Text",i[i.WidgetBefore=1]="WidgetBefore",i[i.WidgetAfter=2]="WidgetAfter",i[i.WidgetRange=3]="WidgetRange",i})(xt||(xt={})),F=class extends mi{constructor(e,t,r,n){super(),this.startSide=e,this.endLine truncated
`,n=i.state.doc.line(n.number+(t?1:-1)),s=i.bidiSpans(n),c=i.visualLineSide(n,!t)}if(l){if(!l(h))return a}else{if(!r)return c;l=r(h)}a=c}}function N1(i,e,t){let r=i.state.charCategorizer(e),n=r(t);return s=>{let o=r(s);return n==Me.Space&&(n=o),n==o}}function G1(i,e,t,r){let n=e.head,s=t?1:-1;if(n==(t?i.state.doc.length:0))return U.cursor(n,e.assoc);let o=e.goalColumn,a,l=i.contentDOM.getBoundingClientRect(),c=i.coordsAtPos(n,e.assoc||((e.empty?t:e.head==e.from)?1:-1)),h=i.documentTop;if(c)o==null&&(o=c.left-l.left),a=s<0?c.top:c.bottom;else{let p=i.viewState.lineBlockAt(n);o==null&&(o=Math.min(l.right-l.left,i.defaultCharacterWidth*(n-p.from))),a=(s<0?p.top:p.bottom)+h}let O=l.left+o,u=i.viewState.heightOracle.textHeight>>1,f=r!=null?r:u;for(let p=0;;p+=u){let m=a+(f+p)*s,S=lf(i,{x:O,y:m},!1,s);if(t?m>l.bottom:m<l.top)return U.cursor(S.pos,S.assoc);let w=i.coordsAtPos(S.pos,S.assoc),Z=w?(w.top+w.bottom)/2:0;if(!w||(t?Z>a:Z<a))return U.cursor(S.pos,S.assoc,void 0,o)}}function Lo(i,e,t){for(;;){let r=0;for(let n of i)n.between(e-1,e+1,(s,o,a)=>{if(e>s&&e<o){let l=r||t||(e-s<o-e?-1:1);e=l<0?s:o,r=l}});if(!r)return e}}function L0(i,e){let t=null;for(let r=0;r<e.ranges.length;r++){let n=e.ranges[r],s=null;if(n.empty){let o=Lo(i,n.from,0);o!=n.from&&(s=U.cursor(o,-1))}else{let o=Lo(i,n.from,-1),a=Lo(i,n.to,1);(o!=n.from||a!=n.to)&&(n.undirectional?s=U.undirectionalRange(n.from,n.to):s=U.range(n.from==n.anchor?o:a,n.from==n.head?o:a))}s&&(t||(t=e.ranges.slice()),t[r]=s)}return t?U.create(t,e.mainIndex):e}function Eu(i,e,t){let r=Lo(i.state.facet(Go).map(n=>n(i)),t.from,e.head>t.from?-1:1);return r==t.from?t:U.cursor(r,r<t.from?1:-1)}var Si=class{constructor(e,t){this.pos=e,this.assoc=t}};function lf(i,e,t,r){let n=i.contentDOM.getBoundingClientRect(),s=n.top+i.viewState.paddingTop,{x:o,y:a}=e,l=a-s,c;for(;;){if(l<0)return new Si(0,1);if(l>i.viewState.docHeight)return new Si(i.state.doc.length,-1);if(c=i.elementAtHeight(l),r==null)break;if(c.type==xt.Text){if(r<0?c.to<i.viewport.from:c.from>i.viewport.to)break;let u=i.docView.coordsAt(r<0?c.from:c.to,r>0?-1:1);if(u&&(r<0?u.top<=l+s:u.bottom>=l+s))break}let O=i.viewState.heightOracle.textHeight/2;l=r>0?c.bottom+O:c.top-O}if(i.viewport.from>=c.to||i.viewport.to<=c.from){if(t)return null;if(c.type==xt.Text){let O=F1(i,n,c,o,a);return new Si(O,O==c.from?1:-1)}}if(c.type!=xt.Text)return l<(c.top+c.bottom)/2?new Si(c.from,1):new Si(c.to,-1);let h=i.docView.lineAt(c.from,2);return(!h||h.length!=c.length)&&(h=i.docView.lineAt(c.from,-2)),new cf(i,o,a,i.textDirectionAt(c.from)).scanTile(h,c.from)}var cf=class{constructor(e,t,r,n){this.view=e,this.x=t,this.y=r,this.baseDir=n,this.line=null,this.spans=null}bidiSpansAt(e){return(!this.line||this.line.from>e||this.line.to<e)&&(this.line=this.view.state.doc.lineAt(e),this.spans=this.view.bidiSpans(this.line)),this}baseDirAt(e,t){let{line:r,spans:n}=this.bidiSpansAt(e);return n[vi.find(n,e-r.from,-1,t)].level==this.baseDir}dirAt(e,t){let{line:r,spans:n}=this.bidiSpansAt(e);return n[vi.find(n,e-r.from,-1,t)].dir}bidiIn(e,t){let{spans:r,line:n}=this.bidiSpansAt(e);return r.length>1||r.length&&(r[0].level!=this.baseDir||r[0].to+n.from<t)}scan(e,t,r=!1){let n=0,s=e.length-1,o=new Set,a=this.bidiIn(e[0],e[s]),l,c,h=-1,O=1e9,u;e:for(;n<s;){let p=s-n,m=n+s>>1;t:if(o.has(m)){for(let Z=1;Z<p;Z++){let R=m+Z;if(R>=s&&(R-=p),!o.has(R)){m=R;break t}}break e}o.add(m);let S=t(m),w=0;if(S)for(let Z=0;Z<S.length;Z++){let R=S[Z];if(!(R.width==0&&S.length>1))if(R.bottom<this.y)(!l||l.bottom<R.bottom)&&(l=R),w=1;else if(R.top>this.y)(!c||c.top>R.top)&&(c=R),w=-1;else{let A=R.left>this.x?this.x-R.left:R.right<this.x?this.x-R.right:0,k=Math.abs(A);k<O&&(h=m,O=k,u=R),A&&(w=A<0==(this.baseDir==Ye.LTR)?-1:1)}}w==-1&&(!a||this.baseDirAt(e[m],1))?s=m:w==1&&(!a||this.baseDirAt(e[m+1],-1))&&(n=m+1)}if(!u){if(!c&&!l)return{i:e[0],after:!1};let p=l&&(!c||this.y-l.bottom<c.top-this.y)?l:c;return this.y=(p.top+p.bottom)/2,this.scan(e,t,!0)}if(O&&!r){let{top:p,bottom:m}=u;if(l&&l.bottom>(p+p+m)/3)return this.y=l.bottom-1,this.scan(e,t,!0);if(c&&c.top<(p+m+m)/3)return this.y=c.top+1,this.scan(e,t,!0)}let f=(a?this.dirAt(e[h],1):this.baseDir)==Ye.LTR;return{i:h,after:this.x>(u.left+u.right)/2==f}}scanText(e,t){let r=[];for(let s=0;s<e.length;s=it(e.text,s))r.push(t+s);r.push(t+e.length);let n=this.scan(r,s=>{let o=r[s]-t,a=r[s+1]-t;return Fo(e.dom,o,a).getClientRects()});return n.after?new Si(r[n.i+1],-1):new Si(r[n.i],1)}scanTile(e,t){if(!e.length)return new Si(t,1);if(e.children.length==1){let a=e.children[0];if(a.isText())return this.scanText(a,t);if(a.isComposite())return this.scanTile(a,t)}let r=[t];for(let a=0,l=t;a<e.children.length;a++)r.push(l+=e.children[a].length);let n=this.scan(r,a=>{let l=e.children[a];return l.flags&48?null:(l.dom.nodeType==1?l.dom:Fo(l.dom,0,l.length)).getClientRects()}),s=e.children[n.i],o=r[n.i];return s.isText()?this.scanText(s,o):s.isComposite()?this.scanTile(s,o):n.after?new Si(r[n.i+1],-1):new Si(o,1)}},ms="\uFFFF",hf=class{ Line truncated
`&&i.lineWrapping&&(r&&(r=U.single(r.main.anchor-1,r.main.head-1)),t={from:s.from,to:s.to,insert:Pe.of([" "])}),t)return Df(i,t,r,o);if(r&&!cc(r,s)){let a=!1,l="select";return i.inputState.lastSelectionTime>Date.now()-50&&(i.inputState.lastSelectionOrigin=="select"&&(a=!0),l=i.inputState.lastSelectionOrigin,l=="select.pointer"&&(r=L0(n.facet(Go).map(c=>c(i)),r))),i.dispatch({selection:r,scrollIntoView:a,userEvent:l}),!0}else return!1}function Df(i,e,t,r=-1){if(ee.ios&&i.inputState.flushIOSKey(e))return!0;let n=i.state.selection.main;if(ee.android&&(e.to==n.to&&(e.from==n.from||e.from==n.from-1&&i.state.sliceDoc(e.from,n.from)==" ")&&e.insert.length==1&&e.insert.lines==2&&Qs(i.contentDOM,"Enter",13)||(e.from==n.from-1&&e.to==n.to&&e.insert.length==0||r==8&&e.insert.length<e.to-e.from&&e.to>n.head)&&Qs(i.contentDOM,"Backspace",8)||e.from==n.from&&e.to==n.to+1&&e.insert.length==0&&Qs(i.contentDOM,"Delete",46)))return!0;let s=e.insert.toString();i.inputState.composing>=0&&i.inputState.composing++;let o,a=()=>o||(o=J1(i,e,t));return i.state.facet(T0).some(l=>l(i,e.from,e.to,s,a))||i.dispatch(a()),!0}function J1(i,e,t){let r,n=i.state,s=n.selection.main,o=-1;if(e.from==e.to&&e.from<s.from||e.from>s.to){let l=e.from<s.from?-1:1,c=l<0?s.from:s.to,h=Lo(n.facet(Go).map(O=>O(i)),c,l);e.from==h&&(o=h)}if(o>-1)r={changes:e,selection:U.cursor(e.from+e.insert.length,-1)};else if(e.from>=s.from&&e.to<=s.to&&e.to-e.from>=(s.to-s.from)/3&&(!t||t.main.empty&&t.main.from==e.from+e.insert.length)&&i.inputState.composing<0){let l=s.from<e.from?n.sliceDoc(s.from,e.from):"",c=s.to>e.to?n.sliceDoc(e.to,s.to):"";r=n.replaceSelection(i.state.toText(l+e.insert.sliceString(0,void 0,i.state.lineBreak)+c))}else{let l=n.changes(e),c=t&&t.main.to<=l.newLength?t.main:void 0;if(n.selection.ranges.length>1&&(i.inputState.composing>=0||i.inputState.compositionPendingChange)&&e.to<=s.to+10&&e.to>=s.to-10){let h=i.state.sliceDoc(e.from,e.to),O,u=t&&M0(i,t.main.head);if(u){let p=e.insert.length-(e.to-e.from);O={from:u.from,to:u.to-p}}else O=i.state.doc.lineAt(s.head);let f=s.to-e.to;r=n.changeByRange(p=>{if(p.from==s.from&&p.to==s.to)return{changes:l,range:c||p.map(l)};let m=p.to-f,S=m-h.length;if(i.state.sliceDoc(S,m)!=h||m>=O.from&&S<=O.to)return{range:p};let w=n.changes({from:S,to:m,insert:e.insert}),Z=p.to-s.to;return{changes:w,range:c?U.range(Math.max(0,c.anchor+Z),Math.max(0,c.head+Z)):p.map(w)}})}else r={changes:l,selection:c&&n.selection.replaceRange(c)}}let a="input.type";return(i.composing||i.inputState.compositionPendingChange&&i.inputState.compositionEndedAt>Date.now()-50)&&(i.inputState.compositionPendingChange=!1,a+=".compose",i.inputState.compositionFirstChange&&(a+=".start",i.inputState.compositionFirstChange=!1)),n.update(r,{userEvent:a,scrollIntoView:!0})}function j0(i,e,t,r){let n=Math.min(i.length,e.length),s=0;for(;s<n&&i.charCodeAt(s)==e.charCodeAt(s);)s++;if(s==n&&i.length==e.length)return null;let o=i.length,a=e.length;for(;o>0&&a>0&&i.charCodeAt(o-1)==e.charCodeAt(a-1);)o--,a--;if(r=="end"){let l=Math.max(0,s-Math.min(o,a));t-=o+l-s}if(o<s&&i.length<e.length){let l=t<=s&&t>=o?s-t:0;s-=l,a=s+(a-o),o=s}else if(a<s){let l=t<=s&&t>=a?s-t:0;s-=l,o=s+(o-a),a=s}return{from:s,toA:o,toB:a}}function ek(i){let e=[];if(i.root.activeElement!=i.contentDOM)return e;let{anchorNode:t,anchorOffset:r,focusNode:n,focusOffset:s}=i.observer.selectionRange;return t&&(e.push(new lc(t,r)),(n!=t||s!=r)&&e.push(new lc(n,s))),e}function tk(i,e){if(i.length==0)return null;let t=i[0].pos,r=i.length==2?i[1].pos:t;return t>-1&&r>-1?U.single(t+e,r+e):null}function cc(i,e){return e.head==i.main.head&&e.anchor==i.main.anchor}var uf=class{setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}constructor(e){this.view=e,this.lastKeyCode=0,this.lastKeyTime=0,this.touchActive=!1,this.lastTouchTime=0,this.lastTouchX=0,this.lastTouchY=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.lastWheelEvent=0,this.pendingIOSKey=void 0,this.lastIOSMomentumScroll=0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=e.hasFocus,ee.safari&&e.contentDOM.addEventListener("input",()=>null),ee.gecko&&mk(e.contentDOM.ownerDocument)}handleEvent(e){!ck(this.view,e)||this.ignoreDuringComposition(e)||e.type=="keydown"&&this.keydown(e)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(e.type,e)):this.runHandlers(e.type,e))}runHandlers(e,t){let r=this.handlers[e];if(r){for(let n of r.observers)n(this.view,t);for(let n of r.handlers){if(t.defaultPrevented)break;if(n(this.view,t)){t.preventDefault();break}}}}ensureHandl Line truncated
`))};if((ee.mac||ee.android)&&O.from==o-1&&/^\. ?$/.test(r.text)&&e.contentDOM.getAttribute("autocorrect")=="off"&&(O={from:a,to:l,insert:Pe.of([r.text.replace("."," ")])}),this.pendingContextChange=O,!e.state.readOnly){let u=this.to-this.from+(O.to-O.from+O.insert.length);Df(e,O,U.single(this.toEditorPos(r.selectionStart,u),this.toEditorPos(r.selectionEnd,u)))}this.pendingContextChange&&(this.revertPending(e.state),this.setSelection(e.state)),O.from<O.to&&!O.insert.length&&e.inputState.composing>=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(t.text.slice(Math.max(0,r.updateRangeStart-1),Math.min(t.text.length,r.updateRangeStart+1)))&&this.handlers.compositionend(r)},this.handlers.characterboundsupdate=r=>{let n=[],s=null;for(let o=this.toEditorPos(r.rangeStart),a=this.toEditorPos(r.rangeEnd);o<a;o++){let l=e.coordsForChar(o);s=l&&new DOMRect(l.left,l.top,l.right-l.left,l.bottom-l.top)||s||new DOMRect,n.push(s)}t.updateCharacterBounds(r.rangeStart,n)},this.handlers.textformatupdate=r=>{let n=[];for(let s of r.getTextFormats()){let o=s.underlineStyle,a=s.underlineThickness;if(!/none/i.test(o)&&!/none/i.test(a)){let l=this.toEditorPos(s.rangeStart),c=this.toEditorPos(s.rangeEnd);if(l<c){let h=`text-decoration: underline ${/^[a-z]/.test(o)?o+" ":o=="Dashed"?"dashed ":o=="Squiggle"?"wavy ":""}${/thin/i.test(a)?1:2}px`;n.push(F.mark({attributes:{style:h}}).range(l,c))}}}e.dispatch({effects:Z0.of(F.set(n))})},this.handlers.compositionstart=()=>{e.inputState.composing<0&&(e.inputState.composing=0,e.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(e.inputState.composing=-1,e.inputState.compositionFirstChange=null,this.composing){let{drifted:r}=this.composing;this.composing=null,r&&this.reset(e.state)}};for(let r in this.handlers)t.addEventListener(r,this.handlers[r]);this.measureReq={read:r=>{let n=Io(r.root);n&&n.rangeCount&&this.editContext.updateSelectionBounds(n.getRangeAt(0).getBoundingClientRect())}}}applyEdits(e){let t=0,r=!1,n=this.pendingContextChange;return e.changes.iterChanges((s,o,a,l,c)=>{if(r)return;let h=c.length-(o-s);if(n&&o>=n.to)if(n.from==s&&n.to==o&&n.insert.eq(c)){n=this.pendingContextChange=null,t+=h,this.to+=h;return}else n=null,this.revertPending(e.state);if(s+=t,o+=t,o<=this.from)this.from+=h,this.to+=h;else if(s<this.to){if(s<this.from||o>this.to||this.to-this.from+c.length>3e4){r=!0;return}this.editContext.updateText(this.toContextPos(s),this.toContextPos(o),c.toString()),this.to+=h}t+=h}),n&&!r&&this.revertPending(e.state),!r}update(e){let t=this.pendingContextChange,r=e.startState.selection.main;this.composing&&(this.composing.drifted||!e.changes.touchesRange(r.from,r.to)&&e.transactions.some(n=>!n.isUserEvent("input.type")&&n.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=e.changes.mapPos(this.composing.editorBase)):!this.applyEdits(e)||!this.rangeIsValid(e.state)?(this.pendingContextChange=null,this.reset(e.state)):(e.docChanged||e.selectionSet||t)&&this.setSelection(e.state),(e.geometryChanged||e.docChanged||e.selectionSet)&&e.view.requestMeasure(this.measureReq)}resetRange(e){let{head:t}=e.selection.main;this.from=Math.max(0,t-1e4),this.to=Math.min(e.doc.length,t+1e4)}reset(e){this.resetRange(e),this.editContext.updateText(0,this.editContext.text.length,e.doc.sliceString(this.from,this.to)),this.setSelection(e)}revertPending(e){let t=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(t.from),this.toContextPos(t.from+t.insert.length),e.doc.sliceString(t.from,t.to))}setSelection(e){let{main:t}=e.selection,r=this.toContextPos(Math.max(this.from,Math.min(this.to,t.anchor))),n=this.toContextPos(t.head);(this.editContext.selectionStart!=r||this.editContext.selectionEnd!=n)&&this.editContext.updateSelection(r,n)}rangeIsValid(e){let{head:t}=e.selection.main;return!(this.from>0&&t-this.from<500||this.to<e.doc.length&&this.to-t<500||this.to-this.from>1e4*3)}toEditorPos(e,t=this.to-this.from){e=Math.min(e,t);let r=this.composing;return r&&r.drifted?r.editorBase+(e-r.contextBase):e+this.from}toContextPos(e){let t=this.composing;return t&&t.drifted?t.contextBase+(e-t.editorBase):e-this.from}destroy(){for(let e in this.handlers)this.editContext.removeEventListener(e,this.handlers[e])}},W=class i{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(e={}){var t;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=d Line truncated
-\x7F-\x9F\xAD\u061C\u200B\u200E\u200F\u2028\u2029\u202D\u202E\u2066\u2067\u2069\uFEFF\uFFF9-\uFFFC]`,Xf),jk={0:"null",7:"bell",8:"backspace",10:"newline",11:"vertical tab",13:"carriage return",27:"escape",8203:"zero width space",8204:"zero width non-joiner",8205:"zero width joiner",8206:"left-to-right mark",8207:"right-to-left mark",8232:"line separator",8237:"left-to-right override",8238:"right-to-left override",8294:"left-to-right isolate",8295:"right-to-left isolate",8297:"pop directional isolate",8233:"paragraph separator",65279:"zero width no-break space",65532:"object replacement"},Yu=null;function qk(){var i;if(Yu==null&&typeof document!="undefined"&&document.body){let e=document.body.style;Yu=((i=e.tabSize)!==null&&i!==void 0?i:e.MozTabSize)!=null}return Yu||!1}var Jl=J.define({combine(i){let e=ri(i,{render:null,specialChars:Vk,addSpecialChars:null});return(e.replaceTabs=!qk())&&(e.specialChars=new RegExp(" |"+e.specialChars.source,Xf)),e.addSpecialChars&&(e.specialChars=new RegExp(e.specialChars.source+"|"+e.addSpecialChars.source,Xf)),e}});function cx(i={}){return[Jl.of(i),Dk()]}var t0=null;function Dk(){return t0||(t0=je.fromClass(class{constructor(i){this.view=i,this.decorations=F.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(i.state.facet(Jl)),this.decorations=this.decorator.createDeco(i)}makeDecorator(i){return new Bo({regexp:i.specialChars,decoration:(e,t,r)=>{let{doc:n}=t.state,s=Ui(e[0],0);if(s==9){let o=n.lineAt(r),a=t.state.tabSize,l=Yt(o.text,a,r-o.from);return F.replace({widget:new Rf((a-l%a)*this.view.defaultCharacterWidth/this.view.scaleX)})}return this.decorationCache[s]||(this.decorationCache[s]=F.replace({widget:new _f(i,s)}))},boundary:i.replaceTabs?void 0:/[^]/})}update(i){let e=i.state.facet(Jl);i.startState.facet(Jl)!=e?(this.decorator=this.makeDecorator(e),this.decorations=this.decorator.createDeco(i.view)):this.decorations=this.decorator.updateDeco(i,this.decorations)}},{decorations:i=>i.decorations}))}var Ik="\u2022";function Fk(i){return i>=32?Ik:i==10?"\u2424":String.fromCharCode(9216+i)}var _f=class extends at{constructor(e,t){super(),this.options=e,this.code=t}eq(e){return e.code==this.code}toDOM(e){let t=Fk(this.code),r=e.state.phrase("Control character")+" "+(jk[this.code]||"0x"+this.code.toString(16)),n=this.options.render&&this.options.render(this.code,r,t);if(n)return n;let s=document.createElement("span");return s.textContent=t,s.title=r,s.setAttribute("aria-label",r),s.className="cm-specialChar",s}ignoreEvent(){return!1}},Rf=class extends at{constructor(e){super(),this.width=e}eq(e){return e.width==this.width}toDOM(){let e=document.createElement("span");return e.textContent=" ",e.className="cm-tab",e.style.width=this.width+"px",e}ignoreEvent(){return!1}};function wc(){return Nk}var Bk=F.line({class:"cm-activeLine"}),Nk=je.fromClass(class{constructor(i){this.decorations=this.getDeco(i)}update(i){(i.docChanged||i.selectionSet)&&(this.decorations=this.getDeco(i.view))}getDeco(i){let e=-1,t=[];for(let r of i.state.selection.ranges){let n=i.lineBlockAt(r.head);n.from>e&&(t.push(Bk.range(n.from)),e=n.from)}return F.set(t)}},{decorations:i=>i.decorations});var Cf=2e3;function Gk(i,e,t){let r=Math.min(e.line,t.line),n=Math.max(e.line,t.line),s=[];if(e.off>Cf||t.off>Cf||e.col<0||t.col<0){let o=Math.min(e.off,t.off),a=Math.max(e.off,t.off);for(let l=r;l<=n;l++){let c=i.doc.line(l);c.length<=a&&s.push(U.range(c.from+o,c.to+a))}}else{let o=Math.min(e.col,t.col),a=Math.max(e.col,t.col);for(let l=r;l<=n;l++){let c=i.doc.line(l),h=Ml(c.text,o,i.tabSize,!0);if(h<0)s.push(U.cursor(c.to));else{let O=Ml(c.text,a,i.tabSize);s.push(U.range(c.from+h,c.from+O))}}}return s}function Hk(i,e){let t=i.coordsAtPos(i.viewport.from);return t?Math.round(Math.abs((t.left-e)/i.defaultCharacterWidth)):-1}function i0(i,e){let t=i.posAtCoords({x:e.clientX,y:e.clientY},!1),r=i.state.doc.lineAt(t),n=t-r.from,s=n>Cf?-1:n==r.length?Hk(i,e.clientX):Yt(r.text,i.state.tabSize,t-r.from);return{line:r.number,col:s,off:n}}function Kk(i,e){let t=i0(i,e),r=i.state.selection;return t?{update(n){if(n.docChanged){let s=n.changes.mapPos(n.startState.doc.line(t.line).from),o=n.state.doc.lineAt(s);t={line:o.number,col:t.col,off:Math.min(t.off,o.length)},r=r.map(n.changes)}},get(n,s,o){let a=i0(i,n);if(!a)return r;let l=Gk(i.state,t,a);return l.length?o?U.create(l.concat(r.ranges)):U.create(l):r}}:null}function yc(i){let e=(i==null?void 0:i.eventFilter)||(t=>t.altKey&&t.button==0);return W.mouseSelectionStyle.of((t,r)=>e(r)?Kk(t,r):null)}var Jk={Alt:[18,i=>!!i.altKey],Control:[17,i=>!!i.ctrlKey],Shift:[16,i=>!!i.shiftKey],Meta:[91,i=>!!i.metaKey]},eT={style:"cursor: crosshair"};function $c(i={}){let[e,t]=Jk[i.key||"Alt"],r=je.fromClass(class{constructor(n){this.view=n,this.isDown=!1}set(n){this.isDown!=n&&(this.isDown=n,this.view.update([]))}},{eventObservers:{keydown(n){this.set(n.keyCode==e||t(n))},keyup(n){(n.keyCode==e||!t(n))&&this.set(!1)},mousemove(n){this.set(t(n))}}});retur Line truncated
`&&(t="");else{let r=t.indexOf(`
`);r>-1&&(t=t.slice(0,r))}return e+t.length<=this.to?t:t.slice(0,this.to-e)}nextLine(){let e=this.parsedPos,t=this.lineAfter(e),r=e+t.length;for(let n=this.rangeIndex;;){let s=this.ranges[n].to;if(s>=r||(t=t.slice(0,s-(r-t.length)),n++,n==this.ranges.length))break;let o=this.ranges[n].from,a=this.lineAfter(o);t+=a,r=o+a.length}return{line:t,end:r}}skipGapsTo(e,t,r){for(;;){let n=this.ranges[this.rangeIndex].to,s=e+t;if(r>0?n>s:n>=s)break;let o=this.ranges[++this.rangeIndex].from;t+=o-n}return t}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to<this.parsedPos;)this.rangeIndex++}emitToken(e,t,r,n){let s=4;if(this.ranges.length>1){n=this.skipGapsTo(t,n,1),t+=n;let a=this.chunk.length;n=this.skipGapsTo(r,n,-1),r+=n,s+=this.chunk.length-a}let o=this.chunk.length-4;return this.lang.streamParser.mergeTokens&&s==4&&o>=0&&this.chunk[o]==e&&this.chunk[o+2]==t?this.chunk[o+2]=r:this.chunk.push(e,t,r,s),n}parseLine(e){let{line:t,end:r}=this.nextLine(),n=0,{streamParser:s}=this.lang,o=new Ec(t,e?e.state.tabSize:4,e?jr(e.state):2);if(o.eol())s.blankLine(this.state,o.indentUnit);else for(;!o.eol();){let a=Nx(s.token,o,this.state);if(a&&(n=this.emitToken(this.lang.tokenTable.resolve(a),this.parsedPos+o.start,this.parsedPos+o.pos,n)),o.start>1e4)break}this.parsedPos=r,this.moveRangeIndex(),this.parsedPos<this.to&&this.parsedPos++}finishChunk(){let e=Se.build({buffer:this.chunk,start:this.chunkStart,length:this.parsedPos-this.chunkStart,nodeSet:IT,topID:0,maxBufferLength:512,reused:this.chunkReused});e=new Se(e.type,e.children,e.positions,e.length,[[this.lang.stateAfter,this.lang.streamParser.copyState(this.state)]]),this.chunks.push(e),this.chunkPos.push(this.chunkStart-this.ranges[0].from),this.chunk=[],this.chunkReused=void 0,this.chunkStart=this.parsedPos}finish(){return new Se(this.lang.topNode,this.chunks,this.chunkPos,this.parsedPos-this.ranges[0].from).balance()}};function Nx(i,e,t){e.start=e.pos;for(let r=0;r<10;r++){let n=i(e,t);if(e.pos>e.start)return n}throw new Error("Stream parser failed to advance stream.")}var wd=Object.create(null),ta=[Je.none],IT=new mr(ta),Ux=[],Ax=Object.create(null),Hx=Object.create(null);for(let[i,e]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])Hx[i]=Kx(wd,e);var zc=class{constructor(e){this.extra=e,this.table=Object.assign(Object.create(null),Hx)}resolve(e){return e?this.table[e]||(this.table[e]=Kx(this.extra,e)):0}},FT=new zc(wd);function ad(i,e){Ux.indexOf(i)>-1||(Ux.push(i),console.warn(e))}function Kx(i,e){let t=[];for(let a of e.split(" ")){let l=[];for(let c of a.split(".")){let h=i[c]||d[c];h?typeof h=="function"?l.length?l=l.map(h):ad(c,`Modifier ${c} used at start of tag`):l.length?ad(c,`Tag ${c} used as modifier`):l=Array.isArray(h)?h:[h]:ad(c,`Unknown highlighting tag ${c}`)}for(let c of l)t.push(c)}if(!t.length)return 0;let r=e.replace(/ /g,"_"),n=r+" "+t.map(a=>a.id),s=Ax[n];if(s)return s.id;let o=Ax[n]=Je.define({id:ta.length,name:r,props:[St({[r]:t})]});return ta.push(o),o.id}function BT(i,e){let t=Je.define({id:ta.length,name:"Document",props:[xr.add(()=>i),Qi.add(()=>r=>e.getIndent(r))],top:!0});return ta.push(t),t}var gz={rtl:I.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"rtl"},bidiIsolate:Ye.RTL}),ltr:I.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"ltr"},bidiIsolate:Ye.LTR}),auto:I.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"auto"},bidiIsolate:null})};var jc=class{constructor(e,t,r,n){this.state=e,this.pos=t,this.explicit=r,this.view=n,this.abortListeners=[],this.abortOnDocChange=!1}tokenBefore(e){let t=_e(this.state).resolveInner(this.pos,-1);for(;t&&e.indexOf(t.name)<0;)t=t.parent;return t?{from:t.from,to:this.pos,text:this.state.sliceDoc(t.from,this.pos),type:t.type}:null}matchBefore(e){let t=this.state.doc.lineAt(this.pos),r=Math.max(t.from,this.pos-250),n=t.text.slice(r-t.from,this.pos-t.from),s=n.search(NT(e,!1));return s<0?null:{from:r+s,to:this.pos,text:n.slice(s)}}get aborted(){return this.abortListeners==null}addEventListener(e,t,r){e=="abort"&&this.abortListeners&&(this.abortListeners.push(t),r&&r.onDocChange&&(this.abortOnDocChange=!0))}};function Jx(i){let e=Object.keys(i).join(""),t=/\w/.test(e);return t&&(e=e.replace(/\w/g,"")),`[${t?"\\w":""}${e.replace(/[^\w\s]/g,"\\$&")}]`}function GT(i){let e=Object.create(null),t=Object.create(null);for(let{label:n}of i){e[n[0]]=!0;for(let s=1;s<n.length;s++)t[n[s]]=!0}let r=Jx(e)+Jx(t)+"*$";return[new RegExp("^"+r),new RegExp(r)]}function rS(i){let e=i.map(n=>typeof n=="string"?{label:n}:n),[t,r]=e.every(n=>/^\w+$/.test(n.label))?[/\w*$/,/\w+$/]:GT(e);return n=>{let s=n.matchBefore(r);return s||n.explicit?{from:s?s.from:n.pos,options:e,validFor:t}:null}}function nS(i,e){return t=>{for(let r=_e(t.state).resolve Line truncated
`;let o=i.state.facet(rr),a=o instanceof Qt?"Lezer LRLanguage":o instanceof ft?"StreamLanguage":"Unknown",l=o instanceof Qt?"AST ":o instanceof ft?"Token ":"Name ";return{pos:e,above:!0,arrow:!0,create(c){let h=document.createElement("div");h.style.overflow="visible",h.style.height="0",h.style.width="0";let O=document.createElement("div");return O.className="cm-debug-tooltip",O.textContent=`Parser: ${a}
`);r>-1&&(t=t.slice(0,r))}return e+t.length<=this.to?t:t.slice(0,this.to-e)}nextLine(){let e=this.parsedPos,t=this.lineAfter(e),r=e+t.length;for(let n=this.rangeIndex;;){let s=this.ranges[n].to;if(s>=r||(t=t.slice(0,s-(r-t.length)),n++,n==this.ranges.length))break;let o=this.ranges[n].from,a=this.lineAfter(o);t+=a,r=o+a.length}return{line:t,end:r}}skipGapsTo(e,t,r){for(;;){let n=this.ranges[this.rangeIndex].to,s=e+t;if(r>0?n>s:n>=s)break;let o=this.ranges[++this.rangeIndex].from;t+=o-n}return t}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to<this.parsedPos;)this.rangeIndex++}emitToken(e,t,r,n){let s=4;if(this.ranges.length>1){n=this.skipGapsTo(t,n,1),t+=n;let a=this.chunk.length;n=this.skipGapsTo(r,n,-1),r+=n,s+=this.chunk.length-a}let o=this.chunk.length-4;return this.lang.streamParser.mergeTokens&&s==4&&o>=0&&this.chunk[o]==e&&this.chunk[o+2]==t?this.chunk[o+2]=r:this.chunk.push(e,t,r,s),n}parseLine(e){let{line:t,end:r}=this.nextLine(),n=0,{streamParser:s}=this.lang,o=new Yc(t,e?e.state.tabSize:4,e?Dr(e.state):2);if(o.eol())s.blankLine(this.state,o.indentUnit);else for(;!o.eol();){let a=nS(s.token,o,this.state);if(a&&(n=this.emitToken(this.lang.tokenTable.resolve(a),this.parsedPos+o.start,this.parsedPos+o.pos,n)),o.start>1e4)break}this.parsedPos=r,this.moveRangeIndex(),this.parsedPos<this.to&&this.parsedPos++}finishChunk(){let e=Se.build({buffer:this.chunk,start:this.chunkStart,length:this.parsedPos-this.chunkStart,nodeSet:lX,topID:0,maxBufferLength:512,reused:this.chunkReused});e=new Se(e.type,e.children,e.positions,e.length,[[this.lang.stateAfter,this.lang.streamParser.copyState(this.state)]]),this.chunks.push(e),this.chunkPos.push(this.chunkStart-this.ranges[0].from),this.chunk=[],this.chunkReused=void 0,this.chunkStart=this.parsedPos}finish(){return new Se(this.lang.topNode,this.chunks,this.chunkPos,this.parsedPos-this.ranges[0].from).balance()}};function nS(i,e,t){e.start=e.pos;for(let r=0;r<10;r++){let n=i(e,t);if(e.pos>e.start)return n}throw new Error("Stream parser failed to advance stream.")}var Xd=Object.create(null),ra=[Je.none],lX=new br(ra),Vx=[],jx=Object.create(null),sS=Object.create(null);for(let[i,e]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])sS[i]=oS(Xd,e);var Mc=class{constructor(e){this.extra=e,this.table=Object.assign(Object.create(null),sS)}resolve(e){return e?this.table[e]||(this.table[e]=oS(this.extra,e)):0}},cX=new Mc(Xd);function fd(i,e){Vx.indexOf(i)>-1||(Vx.push(i),console.warn(e))}function oS(i,e){let t=[];for(let a of e.split(" ")){let l=[];for(let c of a.split(".")){let h=i[c]||d[c];h?typeof h=="function"?l.length?l=l.map(h):fd(c,`Modifier ${c} used at start of tag`):l.length?fd(c,`Tag ${c} used as modifier`):l=Array.isArray(h)?h:[h]:fd(c,`Unknown highlighting tag ${c}`)}for(let c of l)t.push(c)}if(!t.length)return 0;let r=e.replace(/ /g,"_"),n=r+" "+t.map(a=>a.id),s=jx[n];if(s)return s.id;let o=jx[n]=Je.define({id:ra.length,name:r,props:[St({[r]:t})]});return ra.push(o),o.id}function hX(i,e){let t=Je.define({id:ra.length,name:"Document",props:[vr.add(()=>i),wi.add(()=>r=>e.getIndent(r))],top:!0});return ra.push(t),t}var Lz={rtl:F.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"rtl"},bidiIsolate:Ye.RTL}),ltr:F.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"ltr"},bidiIsolate:Ye.LTR}),auto:F.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"auto"},bidiIsolate:null})};var Dc=class{constructor(e,t,r,n){this.state=e,this.pos=t,this.explicit=r,this.view=n,this.abortListeners=[],this.abortOnDocChange=!1}tokenBefore(e){let t=_e(this.state).resolveInner(this.pos,-1);for(;t&&e.indexOf(t.name)<0;)t=t.parent;return t?{from:t.from,to:this.pos,text:this.state.sliceDoc(t.from,this.pos),type:t.type}:null}matchBefore(e){let t=this.state.doc.lineAt(this.pos),r=Math.max(t.from,this.pos-250),n=t.text.slice(r-t.from,this.pos-t.from),s=n.search(uX(e,!1));return s<0?null:{from:r+s,to:this.pos,text:n.slice(s)}}get aborted(){return this.abortListeners==null}addEventListener(e,t,r){e=="abort"&&this.abortListeners&&(this.abortListeners.push(t),r&&r.onDocChange&&(this.abortOnDocChange=!0))}};function aS(i){let e=Object.keys(i).join(""),t=/\w/.test(e);return t&&(e=e.replace(/\w/g,"")),`[${t?"\\w":""}${e.replace(/[^\w\s]/g,"\\$&")}]`}function OX(i){let e=Object.create(null),t=Object.create(null);for(let{label:n}of i){e[n[0]]=!0;for(let s=1;s<n.length;s++)t[n[s]]=!0}let r=aS(e)+aS(t)+"*$";return[new RegExp("^"+r),new RegExp(r)]}function OS(i){let e=i.map(n=>typeof n=="string"?{label:n}:n),[t,r]=e.every(n=>/^\w+$/.test(n.label))?[/\w*$/,/\w+$/]:OX(e);return n=>{let s=n.matchBefore(r);return s||n.explicit?{from:s?s.from:n.pos,options:e,validFor:t}:null}}function uS(i,e){return t=>{for(let r=_e(t.state).resolve Line truncated
`;let o=i.state.facet(sr),a=o instanceof vt?"Lezer LRLanguage":o instanceof ft?"StreamLanguage":"Unknown",l=o instanceof vt?"AST ":o instanceof ft?"Token ":"Name ";return{pos:e,above:!0,arrow:!0,create(c){let h=document.createElement("div");h.style.overflow="visible",h.style.height="0",h.style.width="0";let O=document.createElement("div");return O.className="cm-debug-tooltip",O.textContent=`Parser: ${a}
${l}: ${r.name}
Tags : ${s}`,O.style.whiteSpace="pre-wrap",O.style.fontFamily="monospace",O.style.background="#333",O.style.color="white",O.style.padding="2px 8px",O.style.borderRadius="4px",O.style.fontSize="12px",O.style.border="1px solid #555",O.style.pointerEvents="none",O.style.position="absolute",O.style.bottom="0",O.style.width="max-content",h.appendChild(O),{dom:h}}}},{hoverTime:10,hideOnChange:!0});var Ud=i=>{let{state:e}=i,t=e.doc.lineAt(e.selection.main.from),r=Ed(i.state,t.from);return r.line?gX(i):r.block?xX(i):!1};function Ad(i,e){return({state:t,dispatch:r})=>{if(t.readOnly)return!1;let n=i(e,t);return n?(r(t.update(n)),!0):!1}}var gX=Ad(vX,0);var bX=Ad(QS,0);var xX=Ad((i,e)=>QS(i,e,QX(e)),0);function Ed(i,e){let t=i.languageDataAt("commentTokens",e,1);return t.length?t[0]:{}}var sa=50;function SX(i,{open:e,close:t},r,n){let s=i.sliceDoc(r-sa,r),o=i.sliceDoc(n,n+sa),a=/\s*$/.exec(s)[0].length,l=/^\s*/.exec(o)[0].length,c=s.length-a;if(s.slice(c-e.length,c)==e&&o.slice(l,l+t.length)==t)return{open:{pos:r-a,margin:a&&1},close:{pos:n+l,margin:l&&1}};let h,O;n-r<=2*sa?h=O=i.sliceDoc(r,n):(h=i.sliceDoc(r,r+sa),O=i.sliceDoc(n-sa,n));let f=/^\s*/.exec(h)[0].length,u=/\s*$/.exec(O)[0].length,p=O.length-u-t.length;return h.slice(f,f+e.length)==e&&O.slice(p,p+t.length)==t?{open:{pos:r+f+e.length,margin:/\s/.test(h.charAt(f+e.length))?1:0},close:{pos:n-u-t.length,margin:/\s/.test(O.charAt(p-1))?1:0}}:null}function QX(i){let e=[];for(let t of i.selection.ranges){let r=i.doc.lineAt(t.from),n=t.to<=r.to?r:i.doc.lineAt(t.to);n.from>r.from&&n.from==t.to&&(n=t.to==r.to+1?r:i.doc.lineAt(t.to-1));let s=e.length-1;s>=0&&e[s].to>r.from?e[s].to=n.to:e.push({from:r.from+/^\s*/.exec(r.text)[0].length,to:n.to})}return e}function QS(i,e,t=e.selection.ranges){let r=t.map(s=>Ed(e,s.from).block);if(!r.every(s=>s))return null;let n=t.map((s,o)=>SX(e,r[o],s.from,s.to));if(i!=2&&!n.every(s=>s))return{changes:e.changes(t.map((s,o)=>n[o]?[]:[{from:s.from,insert:r[o].open+" "},{from:s.to,insert:" "+r[o].close}]))};if(i!=1&&n.some(s=>s)){let s=[];for(let o=0,a;o<n.length;o++)if(a=n[o]){let l=r[o],{open:c,close:h}=a;s.push({from:c.pos-l.open.length,to:c.pos+c.margin},{from:h.pos-h.margin,to:h.pos+l.close.length})}return{changes:s}}return null}function vX(i,e,t=e.selection.ranges){let r=[],n=-1;e:for(let{from:s,to:o}of t){let a=r.length,l=1e9,c;for(let h=s;h<=o;){let O=e.doc.lineAt(h);if(c==null&&(c=Ed(e,O.from).line,!c))continue e;if(O.from>n&&(s==o||o>O.from)){n=O.from;let f=/^\s*/.exec(O.text)[0].length,u=f==O.length,p=O.text.slice(f,f+c.length)==c?f:-1;f<O.text.length&&f<l&&(l=f),r.push({line:O,comment:p,token:c,indent:f,empty:u,single:!1})}h=O.to+1}if(l<1e9)for(let h=a;h<r.length;h++)r[h].indent<r[h].line.text.length&&(r[h].indent=l);r.length==a+1&&(r[a].single=!0)}if(i!=2&&r.some(s=>s.comment<0&&(!s.empty||s.single))){let s=[];for(let{line:a,token:l,indent:c,empty:h,single:O}of r)(O||!h)&&s.push({from:a.from+c,insert:l+" "});let o=e.changes(s);return{changes:o,selection:e.selection.map(o,1)}}else if(i!=1&&r.some(s=>s.comment>=0)){let s=[];for(let{line:o,comment:a,token:l}of r)if(a>=0){let c=o.from+a,h=c+l.length;o.text[h-o.from]==" "&&h++,s.push({from:c,to:h})}return{changes:s}}return null}var Rd=It.define(),Fc=It.define(),wX=K.define(),vS=K.define({combine(i){return ei(i,{minDepth:100,newGroupDelay:500,joinToEvent:(e,t)=>t},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,t)=>(r,n)=>e(r,n)||t(r,n)})}}),wS=Te.define({create(){return Cn.empty},update(i,e){let t=e.state.facet(vS),r=e.annotation(Rd);if(r){let l=Yi.fromTransaction(e,r.selection),c=r.side,h=c==0?i.undone:i.done;return l?h=Ic(h,h.length,t.minDepth,l):h=PS(h,e.startState.selection),new Cn(c==0?r.rest:h,c==0?h:r.rest)}let n=e.annotation(Fc);if((n=="full"||n=="before")&&(i=i.isolate()),e.annotation(Ne.addToHistory)===!1)return e.changes.empty?i:i.addMapping(e.changes.desc);let s=Yi.fromTransaction(e),o=e.annotation(Ne.time),a=e.annotation(Ne.userEvent);return s?i=i.addChanges(s,o,a,t,e):e.selection&&(i=i.addSelection(e.startState.selection,o,a,t.newGroupDelay)),(n=="full"||n=="after")&&(i=i.isolate()),i},toJSON(i){return{done:i.done.map(e=>e.toJSON()),undone:i.undone.map(e=>e.toJSON())}},fromJSON(i){return new Cn(i.done.map(Yi.fromJSON),i.undone.map(Yi.fromJSON))}});function yS(i={}){return[wS,vS.of(i),W.domEventHandlers({beforeinput(e,t){let r=e.inputType=="historyUndo"?oa:e.inputType=="historyRedo"?Us:null;return r?(e.preventDefault(),r(t)):!1}})]}function Bc(i,e){return function({state:t,dispatch:r}){if(!e&&t.readOnly)return!1;let n=t.field(wS,!1);if(!n)return!1;let s=n.pop(i,t,e);return s?(r(s),!0):!1}}var oa=Bc(0,!1),Us=Bc(1,!1),yX=Bc(0,!0),$X=Bc(1,!0);var Yi=class i{constructor(e,t,r,n,s){this.changes=e,this.effects=t,this.mapped=r,this.startSelection=n,this.selectionsAfter=s}setSelAfter(e){return new i(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,t,r;return{changes:(e=this.changes)===null||e===void 0?void 0:e.toJSON(),mapped:(t=this.m Line truncated
Tags : ${s}`,O.style.whiteSpace="pre-wrap",O.style.fontFamily="monospace",O.style.background="#333",O.style.color="white",O.style.padding="2px 8px",O.style.borderRadius="4px",O.style.fontSize="12px",O.style.border="1px solid #555",O.style.pointerEvents="none",O.style.position="absolute",O.style.bottom="0",O.style.width="max-content",h.appendChild(O),{dom:h}}}},{hoverTime:10,hideOnChange:!0});var Ld=i=>{let{state:e}=i,t=e.doc.lineAt(e.selection.main.from),r=Vd(i.state,t.from);return r.line?ZX(i):r.block?AX(i):!1};function Wd(i,e){return({state:t,dispatch:r})=>{if(t.readOnly)return!1;let n=i(e,t);return n?(r(t.update(n)),!0):!1}}var ZX=Wd(YX,0);var UX=Wd(XS,0);var AX=Wd((i,e)=>XS(i,e,zX(e)),0);function Vd(i,e){let t=i.languageDataAt("commentTokens",e,1);return t.length?t[0]:{}}var aa=50;function EX(i,{open:e,close:t},r,n){let s=i.sliceDoc(r-aa,r),o=i.sliceDoc(n,n+aa),a=/\s*$/.exec(s)[0].length,l=/^\s*/.exec(o)[0].length,c=s.length-a;if(s.slice(c-e.length,c)==e&&o.slice(l,l+t.length)==t)return{open:{pos:r-a,margin:a&&1},close:{pos:n+l,margin:l&&1}};let h,O;n-r<=2*aa?h=O=i.sliceDoc(r,n):(h=i.sliceDoc(r,r+aa),O=i.sliceDoc(n-aa,n));let u=/^\s*/.exec(h)[0].length,f=/\s*$/.exec(O)[0].length,p=O.length-f-t.length;return h.slice(u,u+e.length)==e&&O.slice(p,p+t.length)==t?{open:{pos:r+u+e.length,margin:/\s/.test(h.charAt(u+e.length))?1:0},close:{pos:n-f-t.length,margin:/\s/.test(O.charAt(p-1))?1:0}}:null}function zX(i){let e=[];for(let t of i.selection.ranges){let r=i.doc.lineAt(t.from),n=t.to<=r.to?r:i.doc.lineAt(t.to);n.from>r.from&&n.from==t.to&&(n=t.to==r.to+1?r:i.doc.lineAt(t.to-1));let s=e.length-1;s>=0&&e[s].to>r.from?e[s].to=n.to:e.push({from:r.from+/^\s*/.exec(r.text)[0].length,to:n.to})}return e}function XS(i,e,t=e.selection.ranges){let r=t.map(s=>Vd(e,s.from).block);if(!r.every(s=>s))return null;let n=t.map((s,o)=>EX(e,r[o],s.from,s.to));if(i!=2&&!n.every(s=>s))return{changes:e.changes(t.map((s,o)=>n[o]?[]:[{from:s.from,insert:r[o].open+" "},{from:s.to,insert:" "+r[o].close}]))};if(i!=1&&n.some(s=>s)){let s=[];for(let o=0,a;o<n.length;o++)if(a=n[o]){let l=r[o],{open:c,close:h}=a;s.push({from:c.pos-l.open.length,to:c.pos+c.margin},{from:h.pos-h.margin,to:h.pos+l.close.length})}return{changes:s}}return null}function YX(i,e,t=e.selection.ranges){let r=[],n=-1;e:for(let{from:s,to:o}of t){let a=r.length,l=1e9,c;for(let h=s;h<=o;){let O=e.doc.lineAt(h);if(c==null&&(c=Vd(e,O.from).line,!c))continue e;if(O.from>n&&(s==o||o>O.from)){n=O.from;let u=/^\s*/.exec(O.text)[0].length,f=u==O.length,p=O.text.slice(u,u+c.length)==c?u:-1;u<O.text.length&&u<l&&(l=u),r.push({line:O,comment:p,token:c,indent:u,empty:f,single:!1})}h=O.to+1}if(l<1e9)for(let h=a;h<r.length;h++)r[h].indent<r[h].line.text.length&&(r[h].indent=l);r.length==a+1&&(r[a].single=!0)}if(i!=2&&r.some(s=>s.comment<0&&(!s.empty||s.single))){let s=[];for(let{line:a,token:l,indent:c,empty:h,single:O}of r)(O||!h)&&s.push({from:a.from+c,insert:l+" "});let o=e.changes(s);return{changes:o,selection:e.selection.map(o,1)}}else if(i!=1&&r.some(s=>s.comment>=0)){let s=[];for(let{line:o,comment:a,token:l}of r)if(a>=0){let c=o.from+a,h=c+l.length;o.text[h-o.from]==" "&&h++,s.push({from:c,to:h})}return{changes:s}}return null}var zd=Bt.define(),Nc=Bt.define(),MX=J.define(),_S=J.define({combine(i){return ri(i,{minDepth:100,newGroupDelay:500,joinToEvent:(e,t)=>t},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,t)=>(r,n)=>e(r,n)||t(r,n)})}}),RS=Te.define({create(){return Un.empty},update(i,e){let t=e.state.facet(_S),r=e.annotation(zd);if(r){let l=Mi.fromTransaction(e,r.selection),c=r.side,h=c==0?i.undone:i.done;return l?h=Bc(h,h.length,t.minDepth,l):h=US(h,e.startState.selection),new Un(c==0?r.rest:h,c==0?h:r.rest)}let n=e.annotation(Nc);if((n=="full"||n=="before")&&(i=i.isolate()),e.annotation(Ge.addToHistory)===!1)return e.changes.empty?i:i.addMapping(e.changes.desc);let s=Mi.fromTransaction(e),o=e.annotation(Ge.time),a=e.annotation(Ge.userEvent);return s?i=i.addChanges(s,o,a,t,e):e.selection&&(i=i.addSelection(e.startState.selection,o,a,t.newGroupDelay)),(n=="full"||n=="after")&&(i=i.isolate()),i},toJSON(i){return{done:i.done.map(e=>e.toJSON()),undone:i.undone.map(e=>e.toJSON())}},fromJSON(i){return new Un(i.done.map(Mi.fromJSON),i.undone.map(Mi.fromJSON))}});function CS(i={}){return[RS,_S.of(i),W.domEventHandlers({beforeinput(e,t){let r=e.inputType=="historyUndo"?la:e.inputType=="historyRedo"?Us:null;return r?(e.preventDefault(),r(t)):!1}})]}function Gc(i,e){return function({state:t,dispatch:r}){if(!e&&t.readOnly)return!1;let n=t.field(RS,!1);if(!n)return!1;let s=n.pop(i,t,e);return s?(r(s),!0):!1}}var la=Gc(0,!1),Us=Gc(1,!1),LX=Gc(0,!0),WX=Gc(1,!0);var Mi=class i{constructor(e,t,r,n,s){this.changes=e,this.effects=t,this.mapped=r,this.startSelection=n,this.selectionsAfter=s}setSelAfter(e){return new i(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,t,r;return{changes:(e=this.changes)===null||e===void 0?void 0:e.toJSON(),mapped:(t=this.m Line truncated
<div class="form-group"><label>Tab size: <input type="number" id="setting_tabSize" min="1" max="40" value="${i.tabSize}" style="width:4em"></label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_tabsToSpaces" ${i.tabsToSpaces?"checked":""}> Insert spaces when pressing TAB</label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_highlightSpecialChars" ${i.highlightSpecialChars?"checked":""}> Highlight special characters</label></div>
@@ -29,88 +29,86 @@ Tags : ${s}`,O.style.whiteSpace="pre-wrap",O.style.fontFamily="monospace",O.sty
<h5>Internal</h5>
<div class="checkbox"><label><input type="checkbox" id="setting_debugHighlightTags" ${i.debugHighlightTags?"checked":""}> Debug editor syntax highlighting tags</label></div>
`:""}
</form>`,buttons:{cancel:{label:"Cancel",className:"btn-default"},ok:{label:"Save",className:"btn-primary",callback:()=>{i.tabSize=parseInt($("#setting_tabSize").val())||8,i.tabsToSpaces=$("#setting_tabsToSpaces").is(":checked"),i.highlightSpecialChars=$("#setting_highlightSpecialChars").is(":checked"),i.highlightWhitespace=$("#setting_highlightWhitespace").is(":checked"),i.highlightTrailingWhitespace=$("#setting_highlightTrailingWhitespace").is(":checked"),i.closeBrackets=$("#setting_closeBrackets").is(":checked"),i.showLineNumbers=$("#setting_showLineNumbers").is(":checked"),e&&(i.debugHighlightTags=$("#setting_debugHighlightTags").is(":checked")),i.showStatusBar=$("#setting_showStatusBar").is(":checked"),L_(i),W_(i),xl(i.showStatusBar)}}}})}function ih(){return typeof navigator!="undefined"?navigator.storage:null}function V_(i){var e=i!==void 0?i:ih();return!!(e&&typeof e.persist=="function")}async function j_(i){var e=i!==void 0?i:ih();try{if(e&&typeof e.estimate=="function"){var t=await e.estimate();return{usage:t&&t.usage,quota:t&&t.quota}}}catch(r){console.log("storage.estimate() failed",r)}return{}}async function q_(i){var e=i!==void 0?i:ih(),t={supported:V_(e),persisted:!1};try{e&&typeof e.persisted=="function"&&(t.persisted=await e.persisted())}catch(n){console.log("storage.persisted() failed",n)}var r=await j_(e);return t.usage=r.usage,t.quota=r.quota,t}async function Ld(i){var e=i!==void 0?i:ih(),t=await q_(e);if(!t.supported||t.persisted)return t.granted=!1,t;try{t.persisted=await e.persist(),t.granted=t.persisted}catch(r){console.log("storage.persist() failed",r),t.granted=!1}return t}function D_(i){return i==null&&(i=typeof navigator!="undefined"?navigator.userAgent:""),i?/Edg\/|OPR\/|Chrome\/|Chromium\//.test(i)?"chromium":/Firefox\/|FxiOS\//.test(i)?"firefox":/Safari\//.test(i)?"safari":"other":"other"}function dQ(i){if(typeof i!="number"||!isFinite(i))return"?";for(var e=["bytes","KB","MB","GB","TB"],t=0;i>=1024&&t<e.length-1;)i/=1024,t++;return(t==0?i.toFixed(0):i.toFixed(1))+" "+e[t]}function pQ(i){return i.usage==null&&i.quota==null?"":"This site is using "+dQ(i.usage)+" of the "+dQ(i.quota)+" your browser allows."}var Md="Your edits are still saved in this browser either way &mdash; persistence only protects them if the browser needs to reclaim disk space. Use <b>File &gt; Download All Changes as ZIP</b> (or push to GitHub) to keep a backup.";function mQ(i){switch(i||D_()){case"chromium":return"Chrome and Edge never ask &mdash; they grant persistent storage on their own to sites you use regularly. Bookmarking this page, or installing it as an app, usually qualifies it; then try <b>Request Local Storage Permissions</b> again.";case"firefox":return"Firefox asks for permission the first time. If you dismissed or blocked that prompt, clear it from the padlock icon in the address bar and try <b>Request Local Storage Permissions</b> again.";case"safari":return"Safari decides on its own, and may delete site data after several days without a visit. Adding this page to your Favorites or Home Screen makes eviction less likely.";default:return"This browser decides on its own whether to keep site data."}}function I_(){return"This browser doesn't support persistent storage, so it may discard your local file edits when it needs disk space. "+Md}function gQ(i,e){var t=pQ(i),r;return i.supported?i.persisted?r=(i.granted?"Your browser just granted persistent storage. ":"Your browser is already persisting your local file edits. ")+Md:r="Your browser has not granted persistent storage, so it may discard your local file edits when it needs disk space.<br><br>"+mQ()+"<br><br>"+Md:r=I_(),t?r+"<br><br>"+t:r}function bQ(i){return"Your browser ran out of space for this site, so your last edit may not have been saved.<br><br>"+pQ(i)+" Delete unused projects, or use <b>File &gt; Download All Changes as ZIP</b> to back up your work before it is lost."+(i.supported&&!i.persisted?"<br><br>"+mQ():"")}var QQ=IO(nf());var ca=class{constructor(e,t){e=e||[],this.lines=e,this.text=t,this.offset2loc=new Map,this.line2offset=new Map;for(var r of e)r.offset>=0&&(this.offset2loc[r.offset]||(this.offset2loc[r.offset]=r),this.line2offset[r.line]||(this.line2offset[r.line]=r.offset))}findLineForOffset(e,t){if(this.offset2loc)for(var r=0;r<=t;r++){var n=this.offset2loc[e];if(n)return n;e--}return null}lineCount(){return this.lines.length}};function xQ(i){return"errors"in i}function SQ(i){return"output"in i}var rh=class{constructor(e){this.preset_id=Ut(e)}async getRemoteFile(e){return new Promise((t,r)=>vo(e,t,pn(e)?"arraybuffer":"text"))}async getFileData(e){var t="presets/"+this.preset_id+"/"+e,r=await this.getRemoteFile(t);return r&&console.log("read",t,r.length,"bytes"),r}async setFileData(e,t){}onFileSystemUpdate(e){}};var Ms=class{constructor(e,t){this.basefs=e,this.overlayfs=t}async getFileData(e){var t=await this.overlayfs.getFileData(e);return t==null?this.basefs.getFileData(e):t}async setFileData(e,t){return awaiLine truncated
</form>`,buttons:{cancel:{label:"Cancel",className:"btn-default"},ok:{label:"Save",className:"btn-primary",callback:()=>{i.tabSize=parseInt($("#setting_tabSize").val())||8,i.tabsToSpaces=$("#setting_tabsToSpaces").is(":checked"),i.highlightSpecialChars=$("#setting_highlightSpecialChars").is(":checked"),i.highlightWhitespace=$("#setting_highlightWhitespace").is(":checked"),i.highlightTrailingWhitespace=$("#setting_highlightTrailingWhitespace").is(":checked"),i.closeBrackets=$("#setting_closeBrackets").is(":checked"),i.showLineNumbers=$("#setting_showLineNumbers").is(":checked"),e&&(i.debugHighlightTags=$("#setting_debugHighlightTags").is(":checked")),i.showStatusBar=$("#setting_showStatusBar").is(":checked"),iR(i),rR(i),vl(i.showStatusBar)}}}})}function nh(){return typeof navigator!="undefined"?navigator.storage:null}function nR(i){var e=i!==void 0?i:nh();return!!(e&&typeof e.persist=="function")}async function sR(i){var e=i!==void 0?i:nh();try{if(e&&typeof e.estimate=="function"){var t=await e.estimate();return{usage:t&&t.usage,quota:t&&t.quota}}}catch(r){console.log("storage.estimate() failed",r)}return{}}async function oR(i){var e=i!==void 0?i:nh(),t={supported:nR(e),persisted:!1};try{e&&typeof e.persisted=="function"&&(t.persisted=await e.persisted())}catch(n){console.log("storage.persisted() failed",n)}var r=await sR(e);return t.usage=r.usage,t.quota=r.quota,t}async function Id(i){var e=i!==void 0?i:nh(),t=await oR(e);if(!t.supported||t.persisted)return t.granted=!1,t;try{t.persisted=await e.persist(),t.granted=t.persisted}catch(r){console.log("storage.persist() failed",r),t.granted=!1}return t}function aR(i){return i==null&&(i=typeof navigator!="undefined"?navigator.userAgent:""),i?/Edg\/|OPR\/|Chrome\/|Chromium\//.test(i)?"chromium":/Firefox\/|FxiOS\//.test(i)?"firefox":/Safari\//.test(i)?"safari":"other":"other"}function Qv(i){if(typeof i!="number"||!isFinite(i))return"?";for(var e=["bytes","KB","MB","GB","TB"],t=0;i>=1024&&t<e.length-1;)i/=1024,t++;return(t==0?i.toFixed(0):i.toFixed(1))+" "+e[t]}function wv(i){return i.usage==null&&i.quota==null?"":"This site is using "+Qv(i.usage)+" of the "+Qv(i.quota)+" your browser allows."}var Dd="Your edits are still saved in this browser either way &mdash; persistence only protects them if the browser needs to reclaim disk space. Use <b>File &gt; Download All Changes as ZIP</b> (or push to GitHub) to keep a backup.";function yv(i){switch(i||aR()){case"chromium":return"Chrome and Edge never ask &mdash; they grant persistent storage on their own to sites you use regularly. Bookmarking this page, or installing it as an app, usually qualifies it; then try <b>Request Local Storage Permissions</b> again.";case"firefox":return"Firefox asks for permission the first time. If you dismissed or blocked that prompt, clear it from the padlock icon in the address bar and try <b>Request Local Storage Permissions</b> again.";case"safari":return"Safari decides on its own, and may delete site data after several days without a visit. Adding this page to your Favorites or Home Screen makes eviction less likely.";default:return"This browser decides on its own whether to keep site data."}}function lR(){return"This browser doesn't support persistent storage, so it may discard your local file edits when it needs disk space. "+Dd}function $v(i,e){var t=wv(i),r;return i.supported?i.persisted?r=(i.granted?"Your browser just granted persistent storage. ":"Your browser is already persisting your local file edits. ")+Dd:r="Your browser has not granted persistent storage, so it may discard your local file edits when it needs disk space.<br><br>"+yv()+"<br><br>"+Dd:r=lR(),t?r+"<br><br>"+t:r}function Pv(i){return"Your browser ran out of space for this site, so your last edit may not have been saved.<br><br>"+wv(i)+" Delete unused projects, or use <b>File &gt; Download All Changes as ZIP</b> to back up your work before it is lost."+(i.supported&&!i.persisted?"<br><br>"+yv():"")}var Xv=KO(cu());var Oa=class{constructor(e,t){e=e||[],this.lines=e,this.text=t,this.offset2loc=new Map,this.line2offset=new Map;for(var r of e)r.offset>=0&&(this.offset2loc[r.offset]||(this.offset2loc[r.offset]=r),this.line2offset[r.line]||(this.line2offset[r.line]=r.offset))}findLineForOffset(e,t){if(this.offset2loc)for(var r=0;r<=t;r++){var n=this.offset2loc[e];if(n)return n;e--}return null}lineCount(){return this.lines.length}};function kv(i){return"errors"in i}function Tv(i){return"output"in i}var sh=class{constructor(e){this.preset_id=Et(e)}async getRemoteFile(e){return new Promise((t,r)=>yo(e,t,mn(e)?"arraybuffer":"text"))}async getFileData(e){var t="presets/"+this.preset_id+"/"+e,r=await this.getRemoteFile(t);return r&&console.log("read",t,r.length,"bytes"),r}async setFileData(e,t){}onFileSystemUpdate(e){}};var Ms=class{constructor(e,t){this.basefs=e,this.overlayfs=t}async getFileData(e){var t=await this.overlayfs.getFileData(e);return t==null?this.basefs.getFileData(e):t}async setFileData(e,t){return awaiLine truncated
=====
[Open this project in 8bitworkshop](http://8bitworkshop.com/redir.html?platform=$PLATFORM&githubURL=$GITHUBURL&file=$MAINFILE).
`;function Un(){for(var i={},e=0;e<localStorage.length;e++){var t=localStorage.key(e);if(t.startsWith("__repo__")){var r=JSON.parse(localStorage.getItem(t)),n=t.substring(8);i[n]=r}}return i}function ha(i){var e=i.split("/",8);return e.length<5||e[0]!="https:"||e[2]!="github.com"||e[5]&&e[5]!="tree"?null:{user:e[3],repo:e[4],repopath:e[3]+"/"+e[4],branch:e[6],subtreepath:e[7]}}var ah=class{constructor(e,t,r,n){this.githubCons=e,this.githubToken=t,this.store=r,this.project=n,this.recreateGithub()}recreateGithub(){this.github=new this.githubCons({token:this.githubToken})}login(){if(this.githubToken&&this.githubToken.length)return new Promise((t,r)=>{t()});var e=new firebase.auth.GithubAuthProvider;return e.addScope("repo"),firebase.auth().signInWithPopup(e).then(t=>{this.githubToken=t.credential.accessToken;var r=t.user;this.recreateGithub(),document.cookie="__github_key="+this.githubToken+";path=/;max-age=31536000",console.log("Stored GitHub OAUTH key")})}logout(){return this.githubToken&&this.githubToken.length?firebase.auth().signOut().then(()=>{document.cookie="__github_key=;path=/;max-age=0",this.githubToken=null,this.recreateGithub()}):new Promise((e,t)=>{e()})}isFileIgnored(e){return e=e.toUpperCase(),!!(e.startsWith("LICENSE")||e.startsWith("README")||e.startsWith("."))}async getGithubSession(e){var t=ha(e);if(!t)throw new Error("Please enter a valid GitHub URL.");var r=Un()[t.repopath],n=t.branch||r&&r.branch,s=this.github.repos(t.user,t.repo);try{n=(await s.fetch()).defaultBranch||"master"}catch(a){console.log("could not fetch default branch: "+a),n="main"}console.log("branch =",n);var o={url:e,user:t.user,reponame:t.repo,repopath:t.repopath,branch:n,subtreepath:t.subtreepath,prefix:"",repo:s,platform_id:this.project?this.project.platform_id:r?r.platform_id:null};return o}getGithubHEADTree(e){var t;return this.getGithubSession(e).then(r=>(t=r,t.repo.git.refs.heads(t.branch).fetch())).then(r=>(t.head=r,t.sha=r.object.sha,t.repo.git.trees(t.sha).fetch())).then(r=>{if(t.subtreepath){for(let n of r.tree)if(n.type=="tree"&&n.path==t.subtreepath&&n.sha)return t.repo.git.trees(n.sha).fetch();throw Error("Cannot find subtree '"+t.subtreepath+"' in tree "+r.sha)}return r}).then(r=>(t.tree=r,t))}bind(e,t){var r="__repo__"+e.repopath;if(t){var n={url:e.url,branch:e.branch,platform_id:e.platform_id,mainPath:e.mainPath,sha:e.sha};console.log("storing",n),localStorage.setItem(r,JSON.stringify(n))}else localStorage.removeItem(r)}import(e){var t;return this.getGithubSession(e).then(r=>(t=r,t.repo.contents("README.md").read())).catch(r=>(console.log(r),console.log("no README.md found"),t.repo.fetch().then(n=>""))).then(r=>{var n;if(n=/8bitworkshop.com[^)]+file=([^)&]+)/.exec(r),n&&n[1]&&(console.log("main path: '"+n[1]+"'"),t.mainPath=n[1]),n=/8bitworkshop.com[^)]+platform=([A-Za-z0-9._\-]+)/.exec(r),n){if(console.log("platform id: '"+n[1]+"'"),t.platform_id&&!t.platform_id.startsWith(n[1]))throw Error("Platform mismatch: Repository is '"+n[1]+"', you have '"+t.platform_id+"' selected.");t.platform_id=n[1]}return this.bind(t,!0),t})}pull(e,t){var r;return this.getGithubHEADTree(e).then(n=>{r=n;let s=[];return r.paths=[],r.tree.tree.forEach(o=>{if(console.log(o.path,o.type,o.size),r.paths.push(o.path),o.type=="blob"&&!this.isFileIgnored(o.path)){var a=r.repo.git.blobs(o.sha).fetch().then(l=>{var c=r.prefix+o.path,h=o.size,O=l.encoding,f=l.content;if(l.encoding=="base64"){var u=fl(atob(f)),p=pn(o.path,u);f=p?u:dl(u)}return l.size!=f.length&&(f=f.slice(0,l.size)),(t||this.store).setItem(c,f)});s.push(a)}else console.log("ignoring "+o.path)}),Promise.all(s)}).then(n=>r)}importAndPull(e){return this.import(e).then(t=>this.pull(e))}publish(e,t,r,n){var s,o=this.project.platform_id,a=this.project.stripLocalPath(this.project.mainPath);return this.github.user.repos.create({name:e,description:t,private:n,auto_init:!1,license_template:r}).then(l=>{s=l;var c=F_;c=c.replace(/\$NAME/g,encodeURIComponent(e)),c=c.replace(/\$PLATFORM/g,encodeURIComponent(o)),c=c.replace(/\$GITHUBURL/g,encodeURIComponent(s.htmlUrl)),c=c.replace(/\$MAINFILE/g,encodeURIComponent(a));var h={message:"8bitworkshop: updated metadata in README.md",content:btoa(c)};return s.contents("README.md").add(h)}).then(()=>this.getGithubSession(s.htmlUrl))}commit(e,t,r){var n;return t||(t="updated from 8bitworkshop.com"),this.getGithubHEADTree(e).then(s=>{if(n=s,n.subtreepath)throw Error("Sorry, right now you can only commit files to the root directory of a repository.");return Promise.all(r.map(o=>typeof o.data=="string"?n.repo.git.blobs.create({content:o.data,encoding:"utf-8"}):n.repo.git.blobs.create({content:btoa(ul(o.data)),encoding:"base64"})))}).then(s=>n.repo.git.trees.create({tree:r.map((o,a)=>({path:o.path,mode:"100644",type:"blob",sha:s[a].sha})),base_tree:n.tree.sha})).then(s=>n.repo.git.commits.create({message:t,tree:s.sha,parents:[n.head.object.sha]})).then(s=>n.repo.commits(s.sha).fetch()).then(s=>(n.commit=s,n))}push(e){return e.head.update({sha:e.com Line truncated
`},s=window.c2t({noInitialRun:!0,print:n,printErr:n}),o=s.FS,a=lt()+".bin",l=lt()+".wav";o.writeFile(a,Lt(),{encoding:"binary"});var c=["-2bc",a+","+e.toString(16),l];s.callMain(c);var h=o.readFile(l,{encoding:"binary"});if(h){var O=new Blob([h],{type:"audio/wav"});(0,sr.saveAs)(O,l),r+="Then connect your audio output to the cassette input, turn up the volume, and play the audio file.",Pt(r)}})}function H_(i){ui("lib/makewav.js").then(()=>{let e="",t=function(a){e+=a+`
`};var r=$t(lt());let n=r+".bin",s=r+".wav";window.makewav({noInitialRun:!1,print:t,printErr:t,arguments:["-ts","-f0","-v10",n],preRun:a=>{a.FS.writeFile(n,Lt(),{encoding:"binary"})}}).ready.then(a=>{let l=[n];a.run(l),console.log(e);let h=a.FS.readFile(s,{encoding:"binary"});if(h){let O=new Blob([h],{type:"audio/wav"});(0,sr.saveAs)(O,s),e+=`
Connect your audio output to the SuperCharger input, turn up the volume, and play the audio file.`,Pt(e)}})})}function K_(i){var e=$t(lt());let t=e+".tap",r=new An(e),n=new lh({sine_wave:!0}),s=Lt(),o=s[0]+s[1]*256;s=s.slice(2),r.setContent({data:s,startAddress:o,type:An.FILE_TYPE_NON_RELOCATABLE}),r.generateSound(n);let a=n.getTAPData();if(a){let l=new Blob([a],{type:"application/octet-stream"});(0,sr.saveAs)(l,t)}}function Vd(){switch(Ut(ce)){case"vcs":return H_;case"apple2":return N_;case"c64":return K_}}function wQ(i){if(Lt()==null)return Qe("Please fix errors before exporting."),!0;var e=Vd();if(e===void 0)return Qe("Cassette export is not supported on this platform."),!0;e(i)}function yQ(i){if(Lt()==null)return Qe("Please finish compiling with no errors before downloading ROM."),!0;var e=$t(lt());if(Q.getDownloadFile){var t=Q.getDownloadFile(),e=$t(lt());(0,sr.saveAs)(t.blob,e+t.extension)}else if(Lt()instanceof Uint8Array){var r=new Blob([Lt()],{type:"application/octet-stream"}),n=Q.getROMExtension&&Q.getROMExtension(Lt())||"-"+Ut(ce)+".bin";(0,sr.saveAs)(r,e+n)}else Qe(`The "${ce}" platform doesn't have downloadable ROMs.`)}function $Q(i){var e=B.getCurrentText();if(!e)return!1;var t=new Blob([e],{type:"text/plain;charset=utf-8"});(0,sr.saveAs)(t,RQ(),{autoBom:!1})}async function PQ(){let i=(await import("./jszip.min-HOLYP7RC.js")).default;return new i}async function kQ(i){var e=await PQ();Sr().iterateFiles((t,r)=>{r&&e.file(gt(t),r)}),e.generateAsync({type:"blob"}).then(t=>{(0,sr.saveAs)(t,lt()+"-"+Ut(ce)+".zip")})}function TQ(i){let e=Q.getDebugSymbolFile&&Q.getDebugSymbolFile();if(!e){Qe("This project does not have debug information.");return}var t=$t(lt());(0,sr.saveAs)(e.blob,t+e.extension,{autoBom:!1})}async function XQ(i){var e=await PQ(),t=await Ir().keys();We(!0);try{var r=0;await Promise.all(t.map(s=>Ir().getItem(s).then(o=>{Ri(r++/(t.length+1)),o&&e.file(s,o)})));var n=await e.generateAsync({type:"blob"});(0,sr.saveAs)(n,Ut(ce)+"-all.zip")}finally{We(!1)}}var Wd=!1;function _Q(){Wd||ui("lib/gif.js").then(()=>{var i=$("#emulator").find("canvas")[0];if(!i){Qe("Could not find canvas element to record video!");return}var e=0;i.style&&i.style.transform&&(i.style.transform.indexOf("rotate(-90deg)")>=0?e=-1:i.style.transform.indexOf("rotate(90deg)")>=0&&(e=1));var t=new GIF({workerScript:"lib/gif.worker.js",workers:4,quality:10,rotate:e}),r=$("#videoPreviewImage");t.on("progress",l=>{Ri(l)}),t.on("finished",l=>{r.attr("src",URL.createObjectURL(l)),We(!1),Q.resume(),$("#videoPreviewModal").modal("show")});var n=20,s=300,o=0;console.log("Recording video",i),$("#emulator").css("backgroundColor","#cc3333");var a=()=>{o++>s?(console.log("Rendering video"),$("#emulator").css("backgroundColor","inherit"),We(!0),Q.pause(),t.render(),Wd=!1):(t.addFrame(i,{delay:n,copy:!0}),setTimeout(a,n),Wd=!0)};a()})}var jd;async function En(){if(!jd){await ui("lib/octokat.js"),await ui("https://www.gstatic.com/firebasejs/8.8.1/firebase-app.js"),await ui("https://www.gstatic.com/firebasejs/8.8.1/firebase-auth.js"),await ui("https://8bitworkshop.com/config.js");var i=ml("__github_key");jd=new ah(Octokat,i,Ir(),Sr()),console.log("loaded github service")}return jd}function fa(){var i=(ct||"").split("/");return i.length!=2?(Qe("You are not in a GitHub repository. Choose one from the pulldown, or Import or Publish one."),null):"https://github.com/"+i[0]+"/"+i[1]}async function ua(i,e){var t,r=ha(i);if(!r){Qe("Could not parse GitHub URL.");return}var n=Un()[r.repopath];if(!(n&&!confirm("You've already imported "+r.repopath+" -- do you want to replace all local files?"))){We(!0);var s=oh(r.repopath);Ri(.25);var o=await En();return o.import(i).then(a=>(t=a,Ri(.75),o.pull(i,s))).then(a=>{We(!1),zn(e,{repo:r.repopath})}).catch(a=>{We(!1),console.log(a),Qe("Could not import "+i+". "+a)})}}async function ZQ(i){var e=await En();e.login().then(()=>{Pt("You are signed in to GitHub.")}).catch(t=>{Qe("Could not sign in."+t)})}async function CQ(i){var e=await En();e.logout().then(()=>{Pt("You are logged out of GitHub.")})}function UQ(i){var e=$("#importGithubModal"),t=$("#importGithubButton");e.modal("show"),e.off("shown.bs.modal").on("shown.bs.modal",()=>$("#importGithubURL").trigger("focus")),$("#importGithubURL").off("keydown").on("keydown",r=>{r.key==="Enter"&&(r.preventDefault(),t.trigger("click"))}),t.off("click").on("click",()=>{var r=$("#importGithubURL").val()+"";e.modal("hide"),ua(r,!1)})}function AQ(i){if(!(ct&&!confirm("This project ("+Sr().mainPath+") is already bound to a GitHub repository. Do you want to re-publish to a new repository? (You can instead choose 'Push Changes' to update files in the existing repository.)"))){var e=$("#publishGithubModal"),t=$("#publishGithubButton");$("#githubRepoName").val($t(gt(Sr().mainPath))),e.modal("show"),t.off("click").on("click",async()=>{var r=$("#githubRepoName").val()+"",n=$("#githubRepoDesc").val()+"",s=$("#githubRepoPrivate").val()=="private",o=$("#githubRepoLicense").val()+""Line truncated
`);for(let o=0;o<s.length;o++){let a=s[o],l=o+1,c=a.match(/(?:function|func|def|proc)\s+(\w+)/i);c&&n.push({id:`${e}:${l}:${c[1]}`,name:c[1],kind:"func",source:r,file:e,line:l});let h=a.match(/(?:var|let|const|global)\s+(\w+)/i);h&&n.push({id:`${e}:${l}:${h[1]}`,name:h[1],kind:"var",source:r,file:e,line:l});let O=a.match(/(?:struct|class|interface|type)\s+(\w+)/i);O&&n.push({id:`${e}:${l}:${O[1]}`,name:O[1],kind:"type",source:r,file:e,line:l});let f=a.match(/^\s*(\w+)\s*:/);f&&!a.trim().startsWith("//")&&n.push({id:`${e}:${l}:${f[1]}`,name:f[1],kind:"label",source:r,file:e,line:l});let u=a.match(/#define\s+(\w+)/i);u&&n.push({id:`${e}:${l}:${u[1]}`,name:u[1],kind:"macro",source:r,file:e,line:l});let p=a.match(/^\s*(\w+)\s*(?:=|equ)\s+/i);p&&n.push({id:`${e}:${l}:${p[1]}`,name:p[1],kind:"equate",source:r,file:e,line:l})}return n}var VQ=()=>null;function jQ(i){VQ=i}function Yn(){return VQ()}var ch=class{constructor(){this.id="project";this.kind="project";this.rebuilt=!1;this.index=new Ls([])}async ready(){await this.index.init(),this.rebuilt||(this.rebuilt=!0,await this.rebuild())}query(e,t){let r=this.index.query(e,t),n=this.fulltextQuery(e,t),s=r.concat(n);return s.sort((o,a)=>a.score-o.score),s.slice(0,t)}fulltextQuery(e,t){if(e.length<2)return[];let r=e.toLowerCase(),n=[],s=Math.max(t,10),o=Yn();return o?(o.iterateFiles((a,l)=>{if(typeof l!="string")return;let c=l.split(`
`),h=0;for(let O=0;O<c.length;O++){let f=c[O],p=f.toLowerCase().indexOf(r);if(p>=0){let m=f.trim();if(!m)continue;if(n.push({record:{id:`text:${a}:${O+1}`,name:m.length>80?m.slice(0,80)+"\u2026":m,kind:"text",source:"project",file:a,line:O+1},score:200+Math.max(0,100-p*2),ranges:[p,p+e.length]}),++h>=s)break}}}),n):[]}async onFileChanged(e,t){let r=this.extractSymbolsFromFile(e,t,"project");this.index.pushRecords(r)}extractSymbolsFromFile(e,t,r){if(typeof t!="string")return[];let n=this.detectEditorStyle(e);return Dd(t,e,n,r)}detectEditorStyle(e){var r;switch((r=e.split(".").pop())==null?void 0:r.toLowerCase()){case"c":case"h":return"text/x-csrc";case"asm":case"a65":case"inc":return"6502";case"v":return"verilog";case"wiz":return"text/x-wiz";case"bas":case"basic":return"basic";case"fb":case"fastbasic":return"fastbasic";case"bac":case"bataribasic":return"bataribasic";case"i":return"inform6";case"d":return"dialog";default:return"text/x-csrc"}}async rebuild(){this.index.clear(),await this.index.init();let e=Yn();if(!e)return;let t=[];e.iterateFiles((r,n)=>{if(typeof n!="string")return;let s=this.detectEditorStyle(r),o=Dd(n,r,s,"project");t.push(...o)}),this.index.pushRecords(t)}};var rR=new Set(["h","hh","hpp","inc","asm","a65","s","mac","defs","def","equ","i","m","c","bas","txt"]),nR=20,hh=class{constructor(){this.id="toolchain";this.kind="toolchain";this.fsName=null;this.files=[];this.loaded=new Map;this.readyDone=!1;this.loadIdx=0;this.batchSize=nR}async ready(){if(this.readyDone)return;this.readyDone=!0;let e=Yn();if(!e)return;let t;try{t=e.getToolForFilename?e.getToolForFilename(e.mainPath):""}catch(o){t=""}let r=$l(t,e.platform_id),n=yl(t,e.platform_id);if(!r||!n.length)return;this.fsName=r;let s=new Set;for(let o of n){let a=await this.listFiles(o);for(let l of a)this.isSearchable(l)&&!s.has(l)&&(s.add(l),this.files.push(l))}this.files.sort()}isValid(){return this.fsName!=null&&this.files.length>0}async listFiles(e){let t=Yn();if(!t||!this.fsName||!t.queryWorker)return[];try{let r={preload_fs:this.fsName,listshared:e,updates:[],buildsteps:[]},n=await t.queryWorker(r),s=n&&n.output;return Array.isArray(s)?s:[]}catch(r){return console.debug("Toolchain list error:",r),[]}}async readFile(e){let t=Yn();if(!t||!this.fsName||!t.queryWorker)return null;try{let r={preload_fs:this.fsName,readshared:e,updates:[],buildsteps:[]},n=await t.queryWorker(r),s=n&&n.output;return s instanceof Uint8Array&&s.length>0?new TextDecoder().decode(s):null}catch(r){return console.debug("Toolchain read error:",r),null}}isSearchable(e){let t=e.split("/").pop()||e,r=t.lastIndexOf(".");return r<0?!0:rR.has(t.substring(r+1).toLowerCase())}async ensureBatch(){let e=Yn();if(!(!e||!e.queryWorker))for(;this.loadIdx<this.files.length;){let t=this.files.slice(this.loadIdx,this.loadIdx+this.batchSize);this.loadIdx+=t.length;let r=await Promise.all(t.map(async n=>{let s=await this.readFile(n);return[n,s]}));for(let[n,s]of r)s!=null&&this.loaded.set(n,s);if(this.loaded.size>0||this.loadIdx>=this.files.length)break}}async query(e,t){return await this.ready(),!this.isValid()||e.length<2?[]:(await this.ensureBatch(),this.textQuery(e,t))}textQuery(e,t){if(e.length<2)return[];let r=e.toLowerCase(),n=[],s=Math.max(t,5);for(let[o,a]of this.loaded){let l=a.split(`
`),c=0;for(let h=0;h<l.length;h++){let O=l[h],u=O.toLowerCase().indexOf(r);if(u>=0){let p=O.trim();if(!p)continue;if(n.push({record:{id:`toolchain:${o}:${h+1}`,name:p.length>80?p.slice(0,80)+"\u2026":p,kind:"text",source:"toolchain",file:o,line:h+1},score:200+Math.max(0,100-u*2),ranges:[u,u+e.length]}),++c>=s)break}}}return n.sort((o,a)=>a.score-o.score),n.slice(0,t)}invalidate(){this.fsName=null,this.files=[],this.loaded.clear(),this.readyDone=!1,this.loadIdx=0}};var Oh=class{constructor(){this.id="docs";this.kind="docs";this.index=null;this.readyPromise=null}async ready(){return this.readyPromise?this.readyPromise:(this.readyPromise=this.load(),this.readyPromise)}async load(){}query(e,t){return this.index?this.index.query(e,t):[]}};var oR=50,Id=class i{constructor(){this.sources=new Map;this.projectSource=new ch,this.toolchainSource=new hh,this.docsSource=new Oh,this.sources.set("project",this.projectSource),this.sources.set("toolchain",this.toolchainSource),this.sources.set("docs",this.docsSource)}static getInstance(){return i.instance||(i.instance=new i),i.instance}parseQuery(e){return e.startsWith("#")?{needle:e.slice(1).trim(),filter:"symbols"}:e.startsWith(">")?{needle:e.slice(1).trim(),filter:"files"}:e.startsWith("?")?{needle:e.slice(1).trim(),filter:"docs"}:{needle:e,filter:"all"}}async query(e,t=oR){let{needle:r,filter:n}=this.parseQuery(e);if(!r)return[];let s=[],o=[];n==="docs"?o.push(this.docsSource):n==="files"?o.push(this.projectSource):n==="symbols"?(o.push(this.projectSource),o.push(this.toolchainSource)):(o.push(this.projectSource),o.push(this.toolchainSource),o.push(this.docsSource));for(let h of o)try{await h.ready();let O=await h.query(r,t-s.length);s.push(...O)}catch(O){console.debug("Search source error:",O)}s.sort((h,O)=>O.score-h.score);let a={project:1.3,toolchain:1,docs:.7};for(let h of s){let O=a[h.record.source]||1;h.score*=O}s.sort((h,O)=>O.score-h.score);let l=new Set;return s.filter(h=>l.has(h.record.id)?!1:(l.add(h.record.id),!0)).slice(0,t)}},qQ=Id.getInstance();var Gd=class i{constructor(e,t,r,n,s,o,a,l,c,h=0,O){this.p=e,this.stack=t,this.state=r,this.reducePos=n,this.pos=s,this.score=o,this.buffer=a,this.bufferBase=l,this.curContext=c,this.lookAhead=h,this.parent=O}toString(){return`[${this.stack.filter((e,t)=>t%3==0).concat(this.state)}]@${this.pos}${this.score?"!"+this.score:""}`}static start(e,t,r=0){let n=e.parser.context;return new i(e,[],t,r,r,0,[],0,n?new fh(n,n.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(e,t){this.stack.push(this.state,t,this.bufferBase+this.buffer.length),this.state=e}reduce(e){var t;let r=e>>19,n=e&65535,{parser:s}=this.p,o=this.reducePos<this.pos-25&&this.setLookAhead(this.pos),a=s.dynamicPrecedence(n);if(a&&(this.score+=a),r==0){n<s.minRepeatTerm&&this.reducePos<this.pos&&(this.reducePos=this.pos),this.pushState(s.getGoto(this.state,n,!0),this.reducePos),n<s.minRepeatTerm&&this.storeNode(n,this.reducePos,this.reducePos,o?8:4,!0),this.reduceContext(n,this.reducePos);return}let l=this.stack.length-(r-1)*3-(e&262144?6:0),c=l?this.stack[l-2]:this.p.ranges[0].from;n<s.minRepeatTerm&&c==this.reducePos&&this.reducePos<this.pos&&(this.reducePos=this.pos);let h=this.reducePos-c;h>=2e3&&!(!((t=this.p.parser.nodeSet.types[n])===null||t===void 0)&&t.isAnonymous)&&(c==this.p.lastBigReductionStart?(this.p.bigReductionCount++,this.p.lastBigReductionSize=h):this.p.lastBigReductionSize<h&&(this.p.bigReductionCount=1,this.p.lastBigReductionStart=c,this.p.lastBigReductionSize=h));let O=l?this.stack[l-1]:0,f=this.bufferBase+this.buffer.length-O;if(n<s.minRepeatTerm||e&131072){let u=s.stateFlag(this.state,1)?this.pos:this.reducePos;this.storeNode(n,c,u,f+4,!0)}if(e&262144)this.state=this.stack[l];else{let u=this.stack[l-3];this.state=s.getGoto(u,n,!0)}for(;this.stack.length>l;)this.stack.pop();this.reduceContext(n,c)}storeNode(e,t,r,n=4,s=!1){if(e==0&&(!this.stack.length||this.stack[this.stack.length-1]<this.buffer.length+this.bufferBase)){let o=this.buffer.length;if(o>0&&this.buffer[o-4]==0&&this.buffer[o-1]>-1){if(t==r)return;if(this.buffer[o-2]>=t){this.buffer[o-2]=r;return}}}if(!s||this.pos==r)this.buffer.push(e,t,r,n);else{let o=this.buffer.length;if(o>0&&(this.buffer[o-4]!=0||this.buffer[o-1]<0)){let a=!1;for(let l=o;l>0&&this.buffer[l-2]>r;l-=4)if(this.buffer[l-1]>=0){a=!0;break}if(a)for(;o>0&&this.buffer[o-2]>r;)this.buffer[o]=this.buffer[o-4],this.buffer[o+1]=this.buffer[o-3],this.buffer[o+2]=this.buffer[o-2],this.buffer[o+3]=this.buffer[o-1],o-=4,n>4&&(n-=4)}this.buffer[o]=e,this.buffer[o+1]=t,this.buffer[o+2]=r,this.buffer[o+3]=n}}shift(e,t,r,n){if(e&131072)this.pushState(e&65535,this.pos);else if((e&262144)==0){let s=e,{parser:o}=this.p;this.pos=n;let a=o.stateFlag(s,1);!a&&(n>r||t<=o.maxNode)&&(this.reducePos=n),this.pushState(s,a?r:Math.min(r,this.reducePos)),this.shiftContext(t,r),t<=o.maxNode&&this.buffer.push(t,r,n,4)}else this.pos=n,this.shiftContext(t,r),t<=this.p.parser.maxNode&&this.buffer. Line truncated
`:r=="r"?"\r":r=="t"?" ":"\\")}eq(e){return this.search==e.search&&this.replace==e.replace&&this.caseSensitive==e.caseSensitive&&this.regexp==e.regexp&&this.wholeWord==e.wholeWord&&this.test==e.test}create(){return this.regexp?new op(this):new sp(this)}getCursor(e,t=0,r){let n=e.doc?e:ve.create({doc:e});return r==null&&(r=n.doc.length),this.regexp?qs(this,n,t,r):js(this,n,t,r)}},Sh=class{constructor(e){this.spec=e}};function WR(i,e,t){return(r,n,s,o)=>{if(t&&!t(r,n,s,o))return!1;let a=r>=o&&n<=o+s.length?s.slice(r-o,n-o):e.doc.sliceString(r,n);return i(a,e,r,n)}}function js(i,e,t,r){let n;return i.wholeWord&&(n=VR(e.doc,e.charCategorizer(e.selection.main.head))),i.test&&(n=WR(i.test,e,n)),new Gr(e.doc,i.unquoted,t,r,i.caseSensitive?void 0:s=>s.toLowerCase(),n)}function VR(i,e){return(t,r,n,s)=>((s>t||s+n.length<r)&&(s=Math.max(0,t-2),n=i.sliceString(s,Math.min(i.length,r+2))),(e(Qh(n,t-s))!=Me.Word||e(vh(n,t-s))!=Me.Word)&&(e(vh(n,r-s))!=Me.Word||e(Qh(n,r-s))!=Me.Word))}var sp=class extends Sh{constructor(e){super(e)}nextMatch(e,t,r){let n=js(this.spec,e,r,e.doc.length).nextOverlapping();if(n.done){let s=Math.min(e.doc.length,t+this.spec.unquoted.length);n=js(this.spec,e,0,s).nextOverlapping()}return n.done||n.value.from==t&&n.value.to==r?null:n.value}prevMatchInRange(e,t,r){for(let n=r;;){let s=Math.max(t,n-1e4-this.spec.unquoted.length),o=js(this.spec,e,s,n),a=null;for(;!o.nextOverlapping().done;)a=o.value;if(a)return a;if(s==t)return null;n-=1e4}}prevMatch(e,t,r){let n=this.prevMatchInRange(e,0,t);return n||(n=this.prevMatchInRange(e,Math.max(0,r-this.spec.unquoted.length),e.doc.length)),n&&(n.from!=t||n.to!=r)?n:null}getReplacement(e){return this.spec.unquote(this.spec.replace)}matchAll(e,t){let r=js(this.spec,e,0,e.doc.length),n=[];for(;!r.next().done;){if(n.length>=t)return null;n.push(r.value)}return n}highlight(e,t,r,n){let s=js(this.spec,e,Math.max(0,t-this.spec.unquoted.length),Math.min(r+this.spec.unquoted.length,e.doc.length));for(;!s.next().done;)n(s.value.from,s.value.to)}};function jR(i,e,t){return(r,n,s)=>(!t||t(r,n,s))&&i(s[0],e,r,n)}function qs(i,e,t,r){let n;return i.wholeWord&&(n=qR(e.charCategorizer(e.selection.main.head))),i.test&&(n=jR(i.test,e,n)),new ph(e.doc,i.search,{ignoreCase:!i.caseSensitive,test:n},t,r)}function Qh(i,e){return i.slice(it(i,e,!1),e)}function vh(i,e){return i.slice(e,it(i,e))}function qR(i){return(e,t,r)=>!r[0].length||(i(Qh(r.input,r.index))!=Me.Word||i(vh(r.input,r.index))!=Me.Word)&&(i(vh(r.input,r.index+r[0].length))!=Me.Word||i(Qh(r.input,r.index+r[0].length))!=Me.Word)}var op=class extends Sh{nextMatch(e,t,r){let n=qs(this.spec,e,r,e.doc.length).next();return n.done&&(n=qs(this.spec,e,0,t).next()),n.done?null:n.value}prevMatchInRange(e,t,r){for(let n=1;;n++){let s=Math.max(t,r-n*1e4),o=qs(this.spec,e,s,r),a=null;for(;!o.next().done;)a=o.value;if(a&&(s==t||a.from>s+10))return a;if(s==t)return null}}prevMatch(e,t,r){return this.prevMatchInRange(e,0,t)||this.prevMatchInRange(e,r,e.doc.length)}getReplacement(e){return this.spec.unquote(this.spec.replace).replace(/\$([$&]|\d+)/g,(t,r)=>{if(r=="&")return e.match[0];if(r=="$")return"$";for(let n=r.length;n>0;n--){let s=+r.slice(0,n);if(s>0&&s<e.match.length)return e.match[s]+r.slice(n)}return t})}matchAll(e,t){let r=qs(this.spec,e,0,e.doc.length),n=[];for(;!r.next().done;){if(n.length>=t)return null;n.push(r.value)}return n}highlight(e,t,r,n){let s=qs(this.spec,e,Math.max(0,t-250),Math.min(r+250,e.doc.length));for(;!s.next().done;)n(s.value.from,s.value.to)}},ga=ae.define(),up=ae.define(),Br=Te.define({create(i){return new ma(ap(i).create(),null)},update(i,e){for(let t of e.effects)t.is(ga)?i=new ma(t.value.create(),i.panel):t.is(up)&&(i=new ma(i.query,t.value?dp:null));return i},provide:i=>Fo.from(i,e=>e.panel)});var ma=class{constructor(e,t){this.query=e,this.panel=t}},DR=I.mark({class:"cm-searchMatch"}),IR=I.mark({class:"cm-searchMatch cm-searchMatch-selected"}),FR=je.fromClass(class{constructor(i){this.view=i,this.decorations=this.highlight(i.state.field(Br))}update(i){let e=i.state.field(Br);(e!=i.startState.field(Br)||i.docChanged||i.selectionSet||i.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:i,panel:e}){if(!e||!i.spec.valid)return I.none;let{view:t}=this,r=new Zi;for(let n=0,s=t.visibleRanges,o=s.length;n<o;n++){let{from:a,to:l}=s[n];for(;n<o-1&&l>s[n+1].from-500;)l=s[++n].to;i.highlight(t.state,a,l,(c,h)=>{let O=t.state.selection.ranges.some(f=>f.from==c&&f.to==h);r.add(c,h,O?IR:DR)})}return r.finish()}},{decorations:i=>i.decorations});function ba(i){return e=>{let t=e.state.field(Br,!1);return t&&t.query.spec.valid?i(e,t):$h(e)}}var Ds=ba((i,{query:e})=>{let{to:t}=i.state.selection.main,r=e.nextMatch(i.state,t,t);if(!r)return!1;let n=U.single(r.from,r.to),s=i.state.facet(Mn);return i.dispatch({selection:n,effects:[pp(i,r),s.scrollToMatch(n.main,i)],userEvent:"select.search"}),lv(i),!0}),wh=ba((i,{query:e})=>{let{state:t}=i,{from:r}=t.selection.main,n=e.prevMatch(t,r,r);if(!n) Line truncated
`+t.scrub(),s=this.advance(n);return s>-1&&s<n.length?this.complete(e,r,s):!1}finish(e,t){return(this.stage==2||this.stage==3)&&Sa(t.content,this.pos)==t.content.length?this.complete(e,t,t.content.length):!1}complete(e,t,r){return e.addLeafElement(t,Ze(F.LinkReference,this.start,this.start+r,this.elts)),!0}nextStage(e){return e?(this.pos=e.to-this.start,this.elts.push(e),this.stage++,!0):(e===!1&&(this.stage=-1),!1)}advance(e){for(;;){if(this.stage==-1)return-1;if(this.stage==0){if(!this.nextStage(iw(e,this.pos,this.start,!0)))return-1;if(e.charCodeAt(this.pos)!=58)return this.stage=-1;this.elts.push(Ze(F.LinkMark,this.pos+this.start,this.pos+this.start+1)),this.pos++}else if(this.stage==1){if(!this.nextStage(ew(e,Sa(e,this.pos),this.start)))return-1}else if(this.stage==2){let t=Sa(e,this.pos),r=0;if(t>this.pos){let n=tw(e,t,this.start);if(n){let s=Lp(e,n.to-this.start);s>0&&(this.nextStage(n),r=s)}}return r||(r=Lp(e,this.pos)),r>0&&r<e.length?r:-1}else return Lp(e,this.pos)}}};function Lp(i,e){for(;e<i.length;e++){let t=i.charCodeAt(e);if(t==10)break;if(!$i(t))return-1}return e}var Fp=class{nextLine(e,t,r){let n=t.depth<e.stack.length?-1:Dv(t),s=t.next;if(n<0)return!1;let o=Ze(F.HeaderMark,e.lineStart+t.pos,e.lineStart+n);return e.nextLine(),e.addLeafElement(r,Ze(s==61?F.SetextHeading1:F.SetextHeading2,r.start,e.prevLineEnd(),[...e.parser.parseInline(r.content,r.start),o])),!0}finish(){return!1}},Gv={LinkReference(i,e){return e.content.charCodeAt(0)==91?new Ip(e):null},SetextHeading(){return new Fp}},rC=[(i,e)=>qv(e)>=0,(i,e)=>Wv(e)>=0,(i,e)=>Vv(e)>=0,(i,e)=>em(e,i,!0)>=0,(i,e)=>tm(e,i,!0)>=0,(i,e)=>Jp(e,i,!0)>=0,(i,e)=>Bv(e,i,!0)>=0],nC={text:"",end:0},Bp=class{constructor(e,t,r,n){this.parser=e,this.input=t,this.ranges=n,this.line=new jp,this.atEnd=!1,this.reusePlaceholders=new Map,this.stoppedAt=null,this.rangeI=0,this.to=n[n.length-1].to,this.lineStart=this.absoluteLineStart=this.absoluteLineEnd=n[0].from,this.block=Th.create(F.Document,0,this.lineStart,0,0),this.stack=[this.block],this.fragments=r.length?new Hp(r,t):null,this.readLine()}get parsedPos(){return this.absoluteLineStart}advance(){if(this.stoppedAt!=null&&this.absoluteLineStart>this.stoppedAt)return this.finish();let{line:e}=this;for(;;){for(let r=0;;){let n=e.depth<this.stack.length?this.stack[this.stack.length-1]:null;for(;r<e.markers.length&&(!n||e.markers[r].from<n.end);){let s=e.markers[r++];this.addNode(s.type,s.from,s.to)}if(!n)break;this.finishContext()}if(e.pos<e.text.length)break;if(!this.nextLine())return this.finish()}if(this.fragments&&this.reuseFragment(e.basePos))return null;e:for(;;){for(let r of this.parser.blockParsers)if(r){let n=r(this,e);if(n!=!1){if(n==!0)return null;e.forward();continue e}}break}if(e.pos==e.text.length)return this.nextLine()?null:this.finish();let t=new Vp(this.lineStart+e.pos,e.text.slice(e.pos));for(let r of this.parser.leafBlockParsers)if(r){let n=r(this,t);n&&t.parsers.push(n)}e:for(;this.nextLine()&&e.pos!=e.text.length;){if(e.indent<e.baseIndent+4){for(let r of this.parser.endLeafBlock)if(r(this,e,t))break e}for(let r of t.parsers)if(r.nextLine(this,e,t))return null;t.content+=`
`+e.scrub();for(let r of e.markers)t.marks.push(r)}return this.finishLeaf(t),null}stopAt(e){if(this.stoppedAt!=null&&this.stoppedAt<e)throw new RangeError("Can't move stoppedAt forward");this.stoppedAt=e}reuseFragment(e){if(!this.fragments.moveTo(this.absoluteLineStart+e,this.absoluteLineStart)||!this.fragments.matches(this.block.hash))return!1;let t=this.fragments.takeNodes(this);return t?(this.absoluteLineStart+=t,this.lineStart=rw(this.absoluteLineStart,this.ranges),this.moveRangeI(),this.absoluteLineStart<this.to?(this.lineStart++,this.absoluteLineStart++,this.readLine()):(this.atEnd=!0,this.readLine()),!0):!1}get depth(){return this.stack.length}parentType(e=this.depth-1){return this.parser.nodeSet.types[this.stack[e].type]}nextLine(){return this.lineStart+=this.line.text.length,this.absoluteLineEnd>=this.to?(this.absoluteLineStart=this.absoluteLineEnd,this.atEnd=!0,this.readLine(),!1):(this.lineStart++,this.absoluteLineStart=this.absoluteLineEnd+1,this.moveRangeI(),this.readLine(),!0)}peekLine(){return this.scanLine(this.absoluteLineEnd+1).text}moveRangeI(){for(;this.rangeI<this.ranges.length-1&&this.absoluteLineStart>=this.ranges[this.rangeI].to;)this.rangeI++,this.absoluteLineStart=Math.max(this.absoluteLineStart,this.ranges[this.rangeI].from)}scanLine(e){let t=nC;if(t.end=e,e>=this.to)t.text="";else if(t.text=this.lineChunkAt(e),t.end+=t.text.length,this.ranges.length>1){let r=this.absoluteLineStart,n=this.rangeI;for(;this.ranges[n].to<t.end;){n++;let s=this.ranges[n].from,o=this.lineChunkAt(s);t.end=s+o.length,t.text=t.text.slice(0,this.ranges[n-1].to-r)+o,r=t.end-t.text.length}}return t}readLine(){let{line:e}=this,{text:t,end:r}=this.scanLine(this.absoluteLineStart);for(this.absoluteLineEnd=r,e.reset(t);e.depth<this.stack.length;e.depth++){let n=this.stack[e.depth],s=this.parser.skipContextMarkup[n.type];if(!s)throw new Error("Unhandled block context "+F[n.type]);let o=this.line.markers.length;if(!s(n,this,e)){this.line.markers.length>o&&(n.end=this.line.markers[this.line.markers.length-1].to),e.forward();break}e.forward()}}lineChunkAt(e){let t=this.input.chunk(e),r;if(this.input.lineChunks)r=t==`
`;function An(){for(var i={},e=0;e<localStorage.length;e++){var t=localStorage.key(e);if(t.startsWith("__repo__")){var r=JSON.parse(localStorage.getItem(t)),n=t.substring(8);i[n]=r}}return i}function ua(i){var e=i.split("/",8);return e.length<5||e[0]!="https:"||e[2]!="github.com"||e[5]&&e[5]!="tree"?null:{user:e[3],repo:e[4],repopath:e[3]+"/"+e[4],branch:e[6],subtreepath:e[7]}}var ch=class{constructor(e,t,r,n){this.githubCons=e,this.githubToken=t,this.store=r,this.project=n,this.recreateGithub()}recreateGithub(){this.github=new this.githubCons({token:this.githubToken})}login(){if(this.githubToken&&this.githubToken.length)return new Promise((t,r)=>{t()});var e=new firebase.auth.GithubAuthProvider;return e.addScope("repo"),firebase.auth().signInWithPopup(e).then(t=>{this.githubToken=t.credential.accessToken;var r=t.user;this.recreateGithub(),document.cookie="__github_key="+this.githubToken+";path=/;max-age=31536000",console.log("Stored GitHub OAUTH key")})}logout(){return this.githubToken&&this.githubToken.length?firebase.auth().signOut().then(()=>{document.cookie="__github_key=;path=/;max-age=0",this.githubToken=null,this.recreateGithub()}):new Promise((e,t)=>{e()})}isFileIgnored(e){return e=e.toUpperCase(),!!(e.startsWith("LICENSE")||e.startsWith("README")||e.startsWith("."))}async getGithubSession(e){var t=ua(e);if(!t)throw new Error("Please enter a valid GitHub URL.");var r=An()[t.repopath],n=t.branch||r&&r.branch,s=this.github.repos(t.user,t.repo);try{n=(await s.fetch()).defaultBranch||"master"}catch(a){console.log("could not fetch default branch: "+a),n="main"}console.log("branch =",n);var o={url:e,user:t.user,reponame:t.repo,repopath:t.repopath,branch:n,subtreepath:t.subtreepath,prefix:"",repo:s,platform_id:this.project?this.project.platform_id:r?r.platform_id:null};return o}getGithubHEADTree(e){var t;return this.getGithubSession(e).then(r=>(t=r,t.repo.git.refs.heads(t.branch).fetch())).then(r=>(t.head=r,t.sha=r.object.sha,t.repo.git.trees(t.sha).fetch())).then(r=>{if(t.subtreepath){for(let n of r.tree)if(n.type=="tree"&&n.path==t.subtreepath&&n.sha)return t.repo.git.trees(n.sha).fetch();throw Error("Cannot find subtree '"+t.subtreepath+"' in tree "+r.sha)}return r}).then(r=>(t.tree=r,t))}bind(e,t){var r="__repo__"+e.repopath;if(t){var n={url:e.url,branch:e.branch,platform_id:e.platform_id,mainPath:e.mainPath,sha:e.sha};console.log("storing",n),localStorage.setItem(r,JSON.stringify(n))}else localStorage.removeItem(r)}import(e){var t;return this.getGithubSession(e).then(r=>(t=r,t.repo.contents("README.md").read())).catch(r=>(console.log(r),console.log("no README.md found"),t.repo.fetch().then(n=>""))).then(r=>{var n;if(n=/8bitworkshop.com[^)]+file=([^)&]+)/.exec(r),n&&n[1]&&(console.log("main path: '"+n[1]+"'"),t.mainPath=n[1]),n=/8bitworkshop.com[^)]+platform=([A-Za-z0-9._\-]+)/.exec(r),n){if(console.log("platform id: '"+n[1]+"'"),t.platform_id&&!t.platform_id.startsWith(n[1]))throw Error("Platform mismatch: Repository is '"+n[1]+"', you have '"+t.platform_id+"' selected.");t.platform_id=n[1]}return this.bind(t,!0),t})}pull(e,t){var r;return this.getGithubHEADTree(e).then(n=>{r=n;let s=[];return r.paths=[],r.tree.tree.forEach(o=>{if(console.log(o.path,o.type,o.size),r.paths.push(o.path),o.type=="blob"&&!this.isFileIgnored(o.path)){var a=r.repo.git.blobs(o.sha).fetch().then(l=>{var c=r.prefix+o.path,h=o.size,O=l.encoding,u=l.content;if(l.encoding=="base64"){var f=dl(atob(u)),p=mn(o.path,f);u=p?f:ml(f)}return l.size!=u.length&&(u=u.slice(0,l.size)),(t||this.store).setItem(c,u)});s.push(a)}else console.log("ignoring "+o.path)}),Promise.all(s)}).then(n=>r)}importAndPull(e){return this.import(e).then(t=>this.pull(e))}publish(e,t,r,n){var s,o=this.project.platform_id,a=this.project.stripLocalPath(this.project.mainPath);return this.github.user.repos.create({name:e,description:t,private:n,auto_init:!1,license_template:r}).then(l=>{s=l;var c=cR;c=c.replace(/\$NAME/g,encodeURIComponent(e)),c=c.replace(/\$PLATFORM/g,encodeURIComponent(o)),c=c.replace(/\$GITHUBURL/g,encodeURIComponent(s.htmlUrl)),c=c.replace(/\$MAINFILE/g,encodeURIComponent(a));var h={message:"8bitworkshop: updated metadata in README.md",content:btoa(c)};return s.contents("README.md").add(h)}).then(()=>this.getGithubSession(s.htmlUrl))}commit(e,t,r){var n;return t||(t="updated from 8bitworkshop.com"),this.getGithubHEADTree(e).then(s=>{if(n=s,n.subtreepath)throw Error("Sorry, right now you can only commit files to the root directory of a repository.");return Promise.all(r.map(o=>typeof o.data=="string"?n.repo.git.blobs.create({content:o.data,encoding:"utf-8"}):n.repo.git.blobs.create({content:btoa(pl(o.data)),encoding:"base64"})))}).then(s=>n.repo.git.trees.create({tree:r.map((o,a)=>({path:o.path,mode:"100644",type:"blob",sha:s[a].sha})),base_tree:n.tree.sha})).then(s=>n.repo.git.commits.create({message:t,tree:s.sha,parents:[n.head.object.sha]})).then(s=>n.repo.commits(s.sha).fetch()).then(s=>(n.commit=s,n))}push(e){return e.head.update({sha:e.com Line truncated
`},s=window.c2t({noInitialRun:!0,print:n,printErr:n}),o=s.FS,a=lt()+".bin",l=lt()+".wav";o.writeFile(a,Vt(),{encoding:"binary"});var c=["-2bc",a+","+e.toString(16),l];s.callMain(c);var h=o.readFile(l,{encoding:"binary"});if(h){var O=new Blob([h],{type:"audio/wav"});(0,ar.saveAs)(O,l),r+="Then connect your audio output to the cassette input, turn up the volume, and play the audio file.",Tt(r)}})}function fR(i){pi("lib/makewav.js").then(()=>{let e="",t=function(a){e+=a+`
`};var r=kt(lt());let n=r+".bin",s=r+".wav";window.makewav({noInitialRun:!1,print:t,printErr:t,arguments:["-ts","-f0","-v10",n],preRun:a=>{a.FS.writeFile(n,Vt(),{encoding:"binary"})}}).ready.then(a=>{let l=[n];a.run(l),console.log(e);let h=a.FS.readFile(s,{encoding:"binary"});if(h){let O=new Blob([h],{type:"audio/wav"});(0,ar.saveAs)(O,s),e+=`
Connect your audio output to the SuperCharger input, turn up the volume, and play the audio file.`,Tt(e)}})})}function dR(i){var e=kt(lt());let t=e+".tap",r=new En(e),n=new hh({sine_wave:!0}),s=Vt(),o=s[0]+s[1]*256;s=s.slice(2),r.setContent({data:s,startAddress:o,type:En.FILE_TYPE_NON_RELOCATABLE}),r.generateSound(n);let a=n.getTAPData();if(a){let l=new Blob([a],{type:"application/octet-stream"});(0,ar.saveAs)(l,t)}}function Bd(){switch(Et(le)){case"vcs":return fR;case"apple2":return uR;case"c64":return dR}}function Rv(i){if(Vt()==null)return Qe("Please fix errors before exporting."),!0;var e=Bd();if(e===void 0)return Qe("Cassette export is not supported on this platform."),!0;e(i)}function Cv(i){if(Vt()==null)return Qe("Please finish compiling with no errors before downloading ROM."),!0;var e=kt(lt());if(v.getDownloadFile){var t=v.getDownloadFile(),e=kt(lt());(0,ar.saveAs)(t.blob,e+t.extension)}else if(Vt()instanceof Uint8Array){var r=new Blob([Vt()],{type:"application/octet-stream"}),n=v.getROMExtension&&v.getROMExtension(Vt())||"-"+Et(le)+".bin";(0,ar.saveAs)(r,e+n)}else Qe(`The "${le}" platform doesn't have downloadable ROMs.`)}function Zv(i){var e=j.getCurrentText();if(!e)return!1;var t=new Blob([e],{type:"text/plain;charset=utf-8"});(0,ar.saveAs)(t,Mv(),{autoBom:!1})}async function Uv(){let i=(await import("./jszip.min-HOLYP7RC.js")).default;return new i}async function Av(i){var e=await Uv();Qr().iterateFiles((t,r)=>{r&&e.file(Ot(t),r)}),e.generateAsync({type:"blob"}).then(t=>{(0,ar.saveAs)(t,lt()+"-"+Et(le)+".zip")})}function Ev(i){let e=v.getDebugSymbolFile&&v.getDebugSymbolFile();if(!e){Qe("This project does not have debug information.");return}var t=kt(lt());(0,ar.saveAs)(e.blob,t+e.extension,{autoBom:!1})}async function zv(i){var e=await Uv(),t=await Br().keys();We(!0);try{var r=0;await Promise.all(t.map(s=>Br().getItem(s).then(o=>{Ci(r++/(t.length+1)),o&&e.file(s,o)})));var n=await e.generateAsync({type:"blob"});(0,ar.saveAs)(n,Et(le)+"-all.zip")}finally{We(!1)}}var Fd=!1;function Yv(){Fd||pi("lib/gif.js").then(()=>{var i=$("#emulator").find("canvas")[0];if(!i){Qe("Could not find canvas element to record video!");return}var e=0;i.style&&i.style.transform&&(i.style.transform.indexOf("rotate(-90deg)")>=0?e=-1:i.style.transform.indexOf("rotate(90deg)")>=0&&(e=1));var t=new GIF({workerScript:"lib/gif.worker.js",workers:4,quality:10,rotate:e}),r=$("#videoPreviewImage");t.on("progress",l=>{Ci(l)}),t.on("finished",l=>{r.attr("src",URL.createObjectURL(l)),We(!1),v.resume(),$("#videoPreviewModal").modal("show")});var n=20,s=300,o=0;console.log("Recording video",i),$("#emulator").css("backgroundColor","#cc3333");var a=()=>{o++>s?(console.log("Rendering video"),$("#emulator").css("backgroundColor","inherit"),We(!0),v.pause(),t.render(),Fd=!1):(t.addFrame(i,{delay:n,copy:!0}),setTimeout(a,n),Fd=!0)};a()})}var Nd;async function zn(){if(!Nd){await pi("lib/octokat.js"),await pi("https://www.gstatic.com/firebasejs/8.8.1/firebase-app.js"),await pi("https://www.gstatic.com/firebasejs/8.8.1/firebase-auth.js"),await pi("https://8bitworkshop.com/config.js");var i=bl("__github_key");Nd=new ch(Octokat,i,Br(),Qr()),console.log("loaded github service")}return Nd}function da(){var i=(ct||"").split("/");return i.length!=2?(Qe("You are not in a GitHub repository. Choose one from the pulldown, or Import or Publish one."),null):"https://github.com/"+i[0]+"/"+i[1]}async function pa(i,e){var t,r=ua(i);if(!r){Qe("Could not parse GitHub URL.");return}var n=An()[r.repopath];if(!(n&&!confirm("You've already imported "+r.repopath+" -- do you want to replace all local files?"))){We(!0);var s=lh(r.repopath);Ci(.25);var o=await zn();return o.import(i).then(a=>(t=a,Ci(.75),o.pull(i,s))).then(a=>{We(!1),Yn(e,{repo:r.repopath})}).catch(a=>{We(!1),console.log(a),Qe("Could not import "+i+". "+a)})}}async function Lv(i){var e=await zn();e.login().then(()=>{Tt("You are signed in to GitHub.")}).catch(t=>{Qe("Could not sign in."+t)})}async function Wv(i){var e=await zn();e.logout().then(()=>{Tt("You are logged out of GitHub.")})}function Vv(i){var e=$("#importGithubModal"),t=$("#importGithubButton");e.modal("show"),e.off("shown.bs.modal").on("shown.bs.modal",()=>$("#importGithubURL").trigger("focus")),$("#importGithubURL").off("keydown").on("keydown",r=>{r.key==="Enter"&&(r.preventDefault(),t.trigger("click"))}),t.off("click").on("click",()=>{var r=$("#importGithubURL").val()+"";e.modal("hide"),pa(r,!1)})}function jv(i){if(!(ct&&!confirm("This project ("+Qr().mainPath+") is already bound to a GitHub repository. Do you want to re-publish to a new repository? (You can instead choose 'Push Changes' to update files in the existing repository.)"))){var e=$("#publishGithubModal"),t=$("#publishGithubButton");$("#githubRepoName").val(kt(Ot(Qr().mainPath))),e.modal("show"),t.off("click").on("click",async()=>{var r=$("#githubRepoName").val()+"",n=$("#githubRepoDesc").val()+"",s=$("#githubRepoPrivate").val()=="private",o=$("#githubRepoLicense").val()+""Line truncated
`);for(let o=0;o<s.length;o++){let a=s[o],l=o+1,c=a.match(/(?:function|func|def|proc)\s+(\w+)/i);c&&n.push({id:`${e}:${l}:${c[1]}`,name:c[1],kind:"func",source:r,file:e,line:l});let h=a.match(/(?:var|let|const|global)\s+(\w+)/i);h&&n.push({id:`${e}:${l}:${h[1]}`,name:h[1],kind:"var",source:r,file:e,line:l});let O=a.match(/(?:struct|class|interface|type)\s+(\w+)/i);O&&n.push({id:`${e}:${l}:${O[1]}`,name:O[1],kind:"type",source:r,file:e,line:l});let u=a.match(/^\s*(\w+)\s*:/);u&&!a.trim().startsWith("//")&&n.push({id:`${e}:${l}:${u[1]}`,name:u[1],kind:"label",source:r,file:e,line:l});let f=a.match(/#define\s+(\w+)/i);f&&n.push({id:`${e}:${l}:${f[1]}`,name:f[1],kind:"macro",source:r,file:e,line:l});let p=a.match(/^\s*(\w+)\s*(?:=|equ)\s+/i);p&&n.push({id:`${e}:${l}:${p[1]}`,name:p[1],kind:"equate",source:r,file:e,line:l})}return n}var Gv=()=>null;function Hv(i){Gv=i}function Mn(){return Gv()}var Oh=class{constructor(){this.id="project";this.kind="project";this.rebuilt=!1;this.index=new Ls([])}async ready(){await this.index.init(),this.rebuilt||(this.rebuilt=!0,await this.rebuild())}query(e,t){let r=this.index.query(e,t),n=this.fulltextQuery(e,t),s=r.concat(n);return s.sort((o,a)=>a.score-o.score),s.slice(0,t)}fulltextQuery(e,t){if(e.length<2)return[];let r=e.toLowerCase(),n=[],s=Math.max(t,10),o=Mn();return o?(o.iterateFiles((a,l)=>{if(typeof l!="string")return;let c=l.split(`
`),h=0;for(let O=0;O<c.length;O++){let u=c[O],p=u.toLowerCase().indexOf(r);if(p>=0){let m=u.trim();if(!m)continue;if(n.push({record:{id:`text:${a}:${O+1}`,name:m.length>80?m.slice(0,80)+"\u2026":m,kind:"text",source:"project",file:a,line:O+1},score:200+Math.max(0,100-p*2),ranges:[p,p+e.length]}),++h>=s)break}}}),n):[]}async onFileChanged(e,t){let r=this.extractSymbolsFromFile(e,t,"project");this.index.pushRecords(r)}extractSymbolsFromFile(e,t,r){if(typeof t!="string")return[];let n=this.detectEditorStyle(e);return Hd(t,e,n,r)}detectEditorStyle(e){var r;switch((r=e.split(".").pop())==null?void 0:r.toLowerCase()){case"c":case"h":return"text/x-csrc";case"asm":case"a65":case"inc":return"6502";case"v":return"verilog";case"wiz":return"text/x-wiz";case"bas":case"basic":return"basic";case"fb":case"fastbasic":return"fastbasic";case"bac":case"bataribasic":return"bataribasic";case"i":return"inform6";case"d":return"dialog";default:return"text/x-csrc"}}async rebuild(){this.index.clear(),await this.index.init();let e=Mn();if(!e)return;let t=[];e.iterateFiles((r,n)=>{if(typeof n!="string")return;let s=this.detectEditorStyle(r),o=Hd(n,r,s,"project");t.push(...o)}),this.index.pushRecords(t)}};var xR=new Set(["h","hh","hpp","inc","asm","a65","s","mac","defs","def","equ","i","m","c","bas","txt"]),SR=20,uh=class{constructor(){this.id="toolchain";this.kind="toolchain";this.fsName=null;this.files=[];this.loaded=new Map;this.readyDone=!1;this.loadIdx=0;this.batchSize=SR}async ready(){if(this.readyDone)return;this.readyDone=!0;let e=Mn();if(!e)return;let t;try{t=e.getToolForFilename?e.getToolForFilename(e.mainPath):""}catch(o){t=""}let r=kl(t,e.platform_id),n=Pl(t,e.platform_id);if(!r||!n.length)return;this.fsName=r;let s=new Set;for(let o of n){let a=await this.listFiles(o);for(let l of a)this.isSearchable(l)&&!s.has(l)&&(s.add(l),this.files.push(l))}this.files.sort()}isValid(){return this.fsName!=null&&this.files.length>0}async listFiles(e){let t=Mn();if(!t||!this.fsName||!t.queryWorker)return[];try{let r={preload_fs:this.fsName,listshared:e,updates:[],buildsteps:[]},n=await t.queryWorker(r),s=n&&n.output;return Array.isArray(s)?s:[]}catch(r){return console.debug("Toolchain list error:",r),[]}}async readFile(e){let t=Mn();if(!t||!this.fsName||!t.queryWorker)return null;try{let r={preload_fs:this.fsName,readshared:e,updates:[],buildsteps:[]},n=await t.queryWorker(r),s=n&&n.output;return s instanceof Uint8Array&&s.length>0?new TextDecoder().decode(s):null}catch(r){return console.debug("Toolchain read error:",r),null}}isSearchable(e){let t=e.split("/").pop()||e,r=t.lastIndexOf(".");return r<0?!0:xR.has(t.substring(r+1).toLowerCase())}async ensureBatch(){let e=Mn();if(!(!e||!e.queryWorker))for(;this.loadIdx<this.files.length;){let t=this.files.slice(this.loadIdx,this.loadIdx+this.batchSize);this.loadIdx+=t.length;let r=await Promise.all(t.map(async n=>{let s=await this.readFile(n);return[n,s]}));for(let[n,s]of r)s!=null&&this.loaded.set(n,s);if(this.loaded.size>0||this.loadIdx>=this.files.length)break}}async query(e,t){return await this.ready(),!this.isValid()||e.length<2?[]:(await this.ensureBatch(),this.textQuery(e,t))}textQuery(e,t){if(e.length<2)return[];let r=e.toLowerCase(),n=[],s=Math.max(t,5);for(let[o,a]of this.loaded){let l=a.split(`
`),c=0;for(let h=0;h<l.length;h++){let O=l[h],f=O.toLowerCase().indexOf(r);if(f>=0){let p=O.trim();if(!p)continue;if(n.push({record:{id:`toolchain:${o}:${h+1}`,name:p.length>80?p.slice(0,80)+"\u2026":p,kind:"text",source:"toolchain",file:o,line:h+1},score:200+Math.max(0,100-f*2),ranges:[f,f+e.length]}),++c>=s)break}}}return n.sort((o,a)=>a.score-o.score),n.slice(0,t)}invalidate(){this.fsName=null,this.files=[],this.loaded.clear(),this.readyDone=!1,this.loadIdx=0}};var fh=class{constructor(){this.id="docs";this.kind="docs";this.index=null;this.readyPromise=null}async ready(){return this.readyPromise?this.readyPromise:(this.readyPromise=this.load(),this.readyPromise)}async load(){}query(e,t){return this.index?this.index.query(e,t):[]}};var QR=50,Kd=class i{constructor(){this.sources=new Map;this.projectSource=new Oh,this.toolchainSource=new uh,this.docsSource=new fh,this.sources.set("project",this.projectSource),this.sources.set("toolchain",this.toolchainSource),this.sources.set("docs",this.docsSource)}static getInstance(){return i.instance||(i.instance=new i),i.instance}parseQuery(e){return e.startsWith("#")?{needle:e.slice(1).trim(),filter:"symbols"}:e.startsWith(">")?{needle:e.slice(1).trim(),filter:"files"}:e.startsWith("?")?{needle:e.slice(1).trim(),filter:"docs"}:{needle:e,filter:"all"}}async query(e,t=QR){let{needle:r,filter:n}=this.parseQuery(e);if(!r)return[];let s=[],o=[];n==="docs"?o.push(this.docsSource):n==="files"?o.push(this.projectSource):n==="symbols"?(o.push(this.projectSource),o.push(this.toolchainSource)):(o.push(this.projectSource),o.push(this.toolchainSource),o.push(this.docsSource));for(let h of o)try{await h.ready();let O=await h.query(r,t-s.length);s.push(...O)}catch(O){console.debug("Search source error:",O)}s.sort((h,O)=>O.score-h.score);let a={project:1.3,toolchain:1,docs:.7};for(let h of s){let O=a[h.record.source]||1;h.score*=O}s.sort((h,O)=>O.score-h.score);let l=new Set;return s.filter(h=>l.has(h.record.id)?!1:(l.add(h.record.id),!0)).slice(0,t)}},Kv=Kd.getInstance();var tp=class i{constructor(e,t,r,n,s,o,a,l,c,h=0,O){this.p=e,this.stack=t,this.state=r,this.reducePos=n,this.pos=s,this.score=o,this.buffer=a,this.bufferBase=l,this.curContext=c,this.lookAhead=h,this.parent=O}toString(){return`[${this.stack.filter((e,t)=>t%3==0).concat(this.state)}]@${this.pos}${this.score?"!"+this.score:""}`}static start(e,t,r=0){let n=e.parser.context;return new i(e,[],t,r,r,0,[],0,n?new dh(n,n.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(e,t){this.stack.push(this.state,t,this.bufferBase+this.buffer.length),this.state=e}reduce(e){var t;let r=e>>19,n=e&65535,{parser:s}=this.p,o=this.reducePos<this.pos-25&&this.setLookAhead(this.pos),a=s.dynamicPrecedence(n);if(a&&(this.score+=a),r==0){n<s.minRepeatTerm&&this.reducePos<this.pos&&(this.reducePos=this.pos),this.pushState(s.getGoto(this.state,n,!0),this.reducePos),n<s.minRepeatTerm&&this.storeNode(n,this.reducePos,this.reducePos,o?8:4,!0),this.reduceContext(n,this.reducePos);return}let l=this.stack.length-(r-1)*3-(e&262144?6:0),c=l?this.stack[l-2]:this.p.ranges[0].from;n<s.minRepeatTerm&&c==this.reducePos&&this.reducePos<this.pos&&(this.reducePos=this.pos);let h=this.reducePos-c;h>=2e3&&!(!((t=this.p.parser.nodeSet.types[n])===null||t===void 0)&&t.isAnonymous)&&(c==this.p.lastBigReductionStart?(this.p.bigReductionCount++,this.p.lastBigReductionSize=h):this.p.lastBigReductionSize<h&&(this.p.bigReductionCount=1,this.p.lastBigReductionStart=c,this.p.lastBigReductionSize=h));let O=l?this.stack[l-1]:0,u=this.bufferBase+this.buffer.length-O;if(n<s.minRepeatTerm||e&131072){let f=s.stateFlag(this.state,1)?this.pos:this.reducePos;this.storeNode(n,c,f,u+4,!0)}if(e&262144)this.state=this.stack[l];else{let f=this.stack[l-3];this.state=s.getGoto(f,n,!0)}for(;this.stack.length>l;)this.stack.pop();this.reduceContext(n,c)}storeNode(e,t,r,n=4,s=!1){if(e==0&&(!this.stack.length||this.stack[this.stack.length-1]<this.buffer.length+this.bufferBase)){let o=this.buffer.length;if(o>0&&this.buffer[o-4]==0&&this.buffer[o-1]>-1){if(t==r)return;if(this.buffer[o-2]>=t){this.buffer[o-2]=r;return}}}if(!s||this.pos==r)this.buffer.push(e,t,r,n);else{let o=this.buffer.length;if(o>0&&(this.buffer[o-4]!=0||this.buffer[o-1]<0)){let a=!1;for(let l=o;l>0&&this.buffer[l-2]>r;l-=4)if(this.buffer[l-1]>=0){a=!0;break}if(a)for(;o>0&&this.buffer[o-2]>r;)this.buffer[o]=this.buffer[o-4],this.buffer[o+1]=this.buffer[o-3],this.buffer[o+2]=this.buffer[o-2],this.buffer[o+3]=this.buffer[o-1],o-=4,n>4&&(n-=4)}this.buffer[o]=e,this.buffer[o+1]=t,this.buffer[o+2]=r,this.buffer[o+3]=n}}shift(e,t,r,n){if(e&131072)this.pushState(e&65535,this.pos);else if((e&262144)==0){let s=e,{parser:o}=this.p;this.pos=n;let a=o.stateFlag(s,1);!a&&(n>r||t<=o.maxNode)&&(this.reducePos=n),this.pushState(s,a?r:Math.min(r,this.reducePos)),this.shiftContext(t,r),t<=o.maxNode&&this.buffer.push(t,r,n,4)}else this.pos=n,this.shiftContext(t,r),t<=this.p.parser.maxNode&&this.buffer. Line truncated
`:r=="r"?"\r":r=="t"?" ":"\\")}eq(e){return this.search==e.search&&this.replace==e.replace&&this.caseSensitive==e.caseSensitive&&this.regexp==e.regexp&&this.wholeWord==e.wholeWord&&this.test==e.test}create(){return this.regexp?new up(this):new Op(this)}getCursor(e,t=0,r){let n=e.doc?e:we.create({doc:e});return r==null&&(r=n.doc.length),this.regexp?qs(this,n,t,r):js(this,n,t,r)}},Qh=class{constructor(e){this.spec=e}};function rC(i,e,t){return(r,n,s,o)=>{if(t&&!t(r,n,s,o))return!1;let a=r>=o&&n<=o+s.length?s.slice(r-o,n-o):e.doc.sliceString(r,n);return i(a,e,r,n)}}function js(i,e,t,r){let n;return i.wholeWord&&(n=nC(e.doc,e.charCategorizer(e.selection.main.head))),i.test&&(n=rC(i.test,e,n)),new Hr(e.doc,i.unquoted,t,r,i.caseSensitive?void 0:s=>s.toLowerCase(),n)}function nC(i,e){return(t,r,n,s)=>((s>t||s+n.length<r)&&(s=Math.max(0,t-2),n=i.sliceString(s,Math.min(i.length,r+2))),(e(wh(n,t-s))!=Me.Word||e(yh(n,t-s))!=Me.Word)&&(e(yh(n,r-s))!=Me.Word||e(wh(n,r-s))!=Me.Word))}var Op=class extends Qh{constructor(e){super(e)}nextMatch(e,t,r){let n=js(this.spec,e,r,e.doc.length).nextOverlapping();if(n.done){let s=Math.min(e.doc.length,t+this.spec.unquoted.length);n=js(this.spec,e,0,s).nextOverlapping()}return n.done||n.value.from==t&&n.value.to==r?null:n.value}prevMatchInRange(e,t,r){for(let n=r;;){let s=Math.max(t,n-1e4-this.spec.unquoted.length),o=js(this.spec,e,s,n),a=null;for(;!o.nextOverlapping().done;)a=o.value;if(a)return a;if(s==t)return null;n-=1e4}}prevMatch(e,t,r){let n=this.prevMatchInRange(e,0,t);return n||(n=this.prevMatchInRange(e,Math.max(0,r-this.spec.unquoted.length),e.doc.length)),n&&(n.from!=t||n.to!=r)?n:null}getReplacement(e){return this.spec.unquote(this.spec.replace)}matchAll(e,t){let r=js(this.spec,e,0,e.doc.length),n=[];for(;!r.next().done;){if(n.length>=t)return null;n.push(r.value)}return n}highlight(e,t,r,n){let s=js(this.spec,e,Math.max(0,t-this.spec.unquoted.length),Math.min(r+this.spec.unquoted.length,e.doc.length));for(;!s.next().done;)n(s.value.from,s.value.to)}};function sC(i,e,t){return(r,n,s)=>(!t||t(r,n,s))&&i(s[0],e,r,n)}function qs(i,e,t,r){let n;return i.wholeWord&&(n=oC(e.charCategorizer(e.selection.main.head))),i.test&&(n=sC(i.test,e,n)),new gh(e.doc,i.search,{ignoreCase:!i.caseSensitive,test:n},t,r)}function wh(i,e){return i.slice(it(i,e,!1),e)}function yh(i,e){return i.slice(e,it(i,e))}function oC(i){return(e,t,r)=>!r[0].length||(i(wh(r.input,r.index))!=Me.Word||i(yh(r.input,r.index))!=Me.Word)&&(i(yh(r.input,r.index+r[0].length))!=Me.Word||i(wh(r.input,r.index+r[0].length))!=Me.Word)}var up=class extends Qh{nextMatch(e,t,r){let n=qs(this.spec,e,r,e.doc.length).next();return n.done&&(n=qs(this.spec,e,0,t).next()),n.done?null:n.value}prevMatchInRange(e,t,r){for(let n=1;;n++){let s=Math.max(t,r-n*1e4),o=qs(this.spec,e,s,r),a=null;for(;!o.next().done;)a=o.value;if(a&&(s==t||a.from>s+10))return a;if(s==t)return null}}prevMatch(e,t,r){return this.prevMatchInRange(e,0,t)||this.prevMatchInRange(e,r,e.doc.length)}getReplacement(e){return this.spec.unquote(this.spec.replace).replace(/\$([$&]|\d+)/g,(t,r)=>{if(r=="&")return e.match[0];if(r=="$")return"$";for(let n=r.length;n>0;n--){let s=+r.slice(0,n);if(s>0&&s<e.match.length)return e.match[s]+r.slice(n)}return t})}matchAll(e,t){let r=qs(this.spec,e,0,e.doc.length),n=[];for(;!r.next().done;){if(n.length>=t)return null;n.push(r.value)}return n}highlight(e,t,r,n){let s=qs(this.spec,e,Math.max(0,t-250),Math.min(r+250,e.doc.length));for(;!s.next().done;)n(s.value.from,s.value.to)}},xa=ae.define(),xp=ae.define(),Gr=Te.define({create(i){return new ba(fp(i).create(),null)},update(i,e){for(let t of e.effects)t.is(xa)?i=new ba(t.value.create(),i.panel):t.is(xp)&&(i=new ba(i.query,t.value?Sp:null));return i},provide:i=>No.from(i,e=>e.panel)});var ba=class{constructor(e,t){this.query=e,this.panel=t}},aC=F.mark({class:"cm-searchMatch"}),lC=F.mark({class:"cm-searchMatch cm-searchMatch-selected"}),cC=je.fromClass(class{constructor(i){this.view=i,this.decorations=this.highlight(i.state.field(Gr))}update(i){let e=i.state.field(Gr);(e!=i.startState.field(Gr)||i.docChanged||i.selectionSet||i.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:i,panel:e}){if(!e||!i.spec.valid)return F.none;let{view:t}=this,r=new Zi;for(let n=0,s=t.visibleRanges,o=s.length;n<o;n++){let{from:a,to:l}=s[n];for(;n<o-1&&l>s[n+1].from-500;)l=s[++n].to;i.highlight(t.state,a,l,(c,h)=>{let O=t.state.selection.ranges.some(u=>u.from==c&&u.to==h);r.add(c,h,O?lC:aC)})}return r.finish()}},{decorations:i=>i.decorations});function Sa(i){return e=>{let t=e.state.field(Gr,!1);return t&&t.query.spec.valid?i(e,t):kh(e)}}var Ds=Sa((i,{query:e})=>{let{to:t}=i.state.selection.main,r=e.nextMatch(i.state,t,t);if(!r)return!1;let n=U.single(r.from,r.to),s=i.state.facet(Ln);return i.dispatch({selection:n,effects:[vp(i,r),s.scrollToMatch(n.main,i)],userEvent:"select.search"}),mQ(i),!0}),$h=Sa((i,{query:e})=>{let{state:t}=i,{from:r}=t.selection.main,n=e.prevMatch(t,r,r);if(!n) Line truncated
`+t.scrub(),s=this.advance(n);return s>-1&&s<n.length?this.complete(e,r,s):!1}finish(e,t){return(this.stage==2||this.stage==3)&&Qa(t.content,this.pos)==t.content.length?this.complete(e,t,t.content.length):!1}complete(e,t,r){return e.addLeafElement(t,Ce(B.LinkReference,this.start,this.start+r,this.elts)),!0}nextStage(e){return e?(this.pos=e.to-this.start,this.elts.push(e),this.stage++,!0):(e===!1&&(this.stage=-1),!1)}advance(e){for(;;){if(this.stage==-1)return-1;if(this.stage==0){if(!this.nextStage(hw(e,this.pos,this.start,!0)))return-1;if(e.charCodeAt(this.pos)!=58)return this.stage=-1;this.elts.push(Ce(B.LinkMark,this.pos+this.start,this.pos+this.start+1)),this.pos++}else if(this.stage==1){if(!this.nextStage(lw(e,Qa(e,this.pos),this.start)))return-1}else if(this.stage==2){let t=Qa(e,this.pos),r=0;if(t>this.pos){let n=cw(e,t,this.start);if(n){let s=Ip(e,n.to-this.start);s>0&&(this.nextStage(n),r=s)}}return r||(r=Ip(e,this.pos)),r>0&&r<e.length?r:-1}else return Ip(e,this.pos)}}};function Ip(i,e){for(;e<i.length;e++){let t=i.charCodeAt(e);if(t==10)break;if(!ki(t))return-1}return e}var Jp=class{nextLine(e,t,r){let n=t.depth<e.stack.length?-1:JQ(t),s=t.next;if(n<0)return!1;let o=Ce(B.HeaderMark,e.lineStart+t.pos,e.lineStart+n);return e.nextLine(),e.addLeafElement(r,Ce(s==61?B.SetextHeading1:B.SetextHeading2,r.start,e.prevLineEnd(),[...e.parser.parseInline(r.content,r.start),o])),!0}finish(){return!1}},rw={LinkReference(i,e){return e.content.charCodeAt(0)==91?new Kp(e):null},SetextHeading(){return new Jp}},xZ=[(i,e)=>KQ(e)>=0,(i,e)=>NQ(e)>=0,(i,e)=>GQ(e)>=0,(i,e)=>om(e,i,!0)>=0,(i,e)=>am(e,i,!0)>=0,(i,e)=>sm(e,i,!0)>=0,(i,e)=>iw(e,i,!0)>=0],SZ={text:"",end:0},em=class{constructor(e,t,r,n){this.parser=e,this.input=t,this.ranges=n,this.line=new Np,this.atEnd=!1,this.reusePlaceholders=new Map,this.stoppedAt=null,this.rangeI=0,this.to=n[n.length-1].to,this.lineStart=this.absoluteLineStart=this.absoluteLineEnd=n[0].from,this.block=_h.create(B.Document,0,this.lineStart,0,0),this.stack=[this.block],this.fragments=r.length?new rm(r,t):null,this.readLine()}get parsedPos(){return this.absoluteLineStart}advance(){if(this.stoppedAt!=null&&this.absoluteLineStart>this.stoppedAt)return this.finish();let{line:e}=this;for(;;){for(let r=0;;){let n=e.depth<this.stack.length?this.stack[this.stack.length-1]:null;for(;r<e.markers.length&&(!n||e.markers[r].from<n.end);){let s=e.markers[r++];this.addNode(s.type,s.from,s.to)}if(!n)break;this.finishContext()}if(e.pos<e.text.length)break;if(!this.nextLine())return this.finish()}if(this.fragments&&this.reuseFragment(e.basePos))return null;e:for(;;){for(let r of this.parser.blockParsers)if(r){let n=r(this,e);if(n!=!1){if(n==!0)return null;e.forward();continue e}}break}if(e.pos==e.text.length)return this.nextLine()?null:this.finish();let t=new Bp(this.lineStart+e.pos,e.text.slice(e.pos));for(let r of this.parser.leafBlockParsers)if(r){let n=r(this,t);n&&t.parsers.push(n)}e:for(;this.nextLine()&&e.pos!=e.text.length;){if(e.indent<e.baseIndent+4){for(let r of this.parser.endLeafBlock)if(r(this,e,t))break e}for(let r of t.parsers)if(r.nextLine(this,e,t))return null;t.content+=`
`+e.scrub();for(let r of e.markers)t.marks.push(r)}return this.finishLeaf(t),null}stopAt(e){if(this.stoppedAt!=null&&this.stoppedAt<e)throw new RangeError("Can't move stoppedAt forward");this.stoppedAt=e}reuseFragment(e){if(!this.fragments.moveTo(this.absoluteLineStart+e,this.absoluteLineStart)||!this.fragments.matches(this.block.hash))return!1;let t=this.fragments.takeNodes(this);return t?(this.absoluteLineStart+=t,this.lineStart=Ow(this.absoluteLineStart,this.ranges),this.moveRangeI(),this.absoluteLineStart<this.to?(this.lineStart++,this.absoluteLineStart++,this.readLine()):(this.atEnd=!0,this.readLine()),!0):!1}get depth(){return this.stack.length}parentType(e=this.depth-1){return this.parser.nodeSet.types[this.stack[e].type]}nextLine(){return this.lineStart+=this.line.text.length,this.absoluteLineEnd>=this.to?(this.absoluteLineStart=this.absoluteLineEnd,this.atEnd=!0,this.readLine(),!1):(this.lineStart++,this.absoluteLineStart=this.absoluteLineEnd+1,this.moveRangeI(),this.readLine(),!0)}peekLine(){return this.scanLine(this.absoluteLineEnd+1).text}moveRangeI(){for(;this.rangeI<this.ranges.length-1&&this.absoluteLineStart>=this.ranges[this.rangeI].to;)this.rangeI++,this.absoluteLineStart=Math.max(this.absoluteLineStart,this.ranges[this.rangeI].from)}scanLine(e){let t=SZ;if(t.end=e,e>=this.to)t.text="";else if(t.text=this.lineChunkAt(e),t.end+=t.text.length,this.ranges.length>1){let r=this.absoluteLineStart,n=this.rangeI;for(;this.ranges[n].to<t.end;){n++;let s=this.ranges[n].from,o=this.lineChunkAt(s);t.end=s+o.length,t.text=t.text.slice(0,this.ranges[n-1].to-r)+o,r=t.end-t.text.length}}return t}readLine(){let{line:e}=this,{text:t,end:r}=this.scanLine(this.absoluteLineStart);for(this.absoluteLineEnd=r,e.reset(t);e.depth<this.stack.length;e.depth++){let n=this.stack[e.depth],s=this.parser.skipContextMarkup[n.type];if(!s)throw new Error("Unhandled block context "+B[n.type]);let o=this.line.markers.length;if(!s(n,this,e)){this.line.markers.length>o&&(n.end=this.line.markers[this.line.markers.length-1].to),e.forward();break}e.forward()}}lineChunkAt(e){let t=this.input.chunk(e),r;if(this.input.lineChunks)r=t==`
`?"":t;else{let n=t.indexOf(`
`);r=n<0?t:t.slice(0,n)}return e+r.length>this.to?r.slice(0,this.to-e):r}prevLineEnd(){return this.atEnd?this.lineStart:this.lineStart-1}startContext(e,t,r=0){this.block=Th.create(e,r,this.lineStart+t,this.block.hash,this.lineStart+this.line.text.length),this.stack.push(this.block)}startComposite(e,t,r=0){this.startContext(this.parser.getNodeType(e),t,r)}addNode(e,t,r){typeof e=="number"&&(e=new Se(this.parser.nodeSet.types[e],Is,Is,(r!=null?r:this.prevLineEnd())-t)),this.block.addChild(e,t-this.block.from)}addElement(e){this.block.addChild(e.toTree(this.parser.nodeSet),e.from-this.block.from)}addLeafElement(e,t){this.addNode(this.buffer.writeElements(Np(t.children,e.marks),-t.from).finish(t.type,t.to-t.from),t.from)}finishContext(){let e=this.stack.pop(),t=this.stack[this.stack.length-1];t.addChild(e.toTree(this.parser.nodeSet),e.from-t.from),this.block=t}finish(){for(;this.stack.length>1;)this.finishContext();return this.addGaps(this.block.toTree(this.parser.nodeSet,this.lineStart))}addGaps(e){return this.ranges.length>1?Nv(this.ranges,0,e.topNode,this.ranges[0].from,this.reusePlaceholders):e}finishLeaf(e){for(let r of e.parsers)if(r.finish(this,e))return;let t=Np(this.parser.parseInline(e.content,e.start),e.marks);this.addNode(this.buffer.writeElements(t,-e.start).finish(F.Paragraph,e.content.length),e.start)}elt(e,t,r,n){return typeof e=="string"?Ze(this.parser.getNodeType(e),t,r,n):new _h(e,t)}get buffer(){return new Xh(this.parser.nodeSet)}};function Nv(i,e,t,r,n){let s=i[e].to,o=[],a=[],l=t.from+r;function c(h,O){for(;O?h>=s:h>s;){let f=i[e+1].from-s;r+=f,h+=f,e++,s=i[e].to}}for(let h=t.firstChild;h;h=h.nextSibling){c(h.from+r,!0);let O=h.from+r,f,u=n.get(h.tree);u?f=u:h.to+r>s?(f=Nv(i,e,h,r,n),c(h.to+r,!1)):f=h.toTree(),o.push(f),a.push(O-l)}return c(t.to+r,!1),new Se(t.type,o,a,t.to+r-l,t.tree?t.tree.propValues:void 0)}var va=class i extends br{constructor(e,t,r,n,s,o,a,l,c){super(),this.nodeSet=e,this.blockParsers=t,this.leafBlockParsers=r,this.blockNames=n,this.endLeafBlock=s,this.skipContextMarkup=o,this.inlineParsers=a,this.inlineNames=l,this.wrappers=c,this.nodeTypes=Object.create(null);for(let h of e.types)this.nodeTypes[h.name]=h.id}createParse(e,t,r){let n=new Bp(this,e,t,r);for(let s of this.wrappers)n=s(n,e,t,r);return n}configure(e){let t=Gp(e);if(!t)return this;let{nodeSet:r,skipContextMarkup:n}=this,s=this.blockParsers.slice(),o=this.leafBlockParsers.slice(),a=this.blockNames.slice(),l=this.inlineParsers.slice(),c=this.inlineNames.slice(),h=this.endLeafBlock.slice(),O=this.wrappers;if(xa(t.defineNodes)){n=Object.assign({},n);let f=r.types.slice(),u;for(let p of t.defineNodes){let{name:m,block:S,composite:w,style:C}=typeof p=="string"?{name:p}:p;if(f.some(k=>k.name==m))continue;w&&(n[f.length]=(k,P,Z)=>w(P,Z,k.value));let R=f.length,A=w?["Block","BlockContext"]:S?R>=F.ATXHeading1&&R<=F.SetextHeading2?["Block","LeafBlock","Heading"]:["Block","LeafBlock"]:void 0;f.push(Je.define({id:R,name:m,props:A&&[[ue.group,A]]})),C&&(u||(u={}),Array.isArray(C)||C instanceof ri?u[m]=C:Object.assign(u,C))}r=new mr(f),u&&(r=r.extend(St(u)))}if(xa(t.props)&&(r=r.extend(...t.props)),xa(t.remove))for(let f of t.remove){let u=this.blockNames.indexOf(f),p=this.inlineNames.indexOf(f);u>-1&&(s[u]=o[u]=void 0),p>-1&&(l[p]=void 0)}if(xa(t.parseBlock))for(let f of t.parseBlock){let u=a.indexOf(f.name);if(u>-1)s[u]=f.parse,o[u]=f.leaf;else{let p=f.before?kh(a,f.before):f.after?kh(a,f.after)+1:a.length-1;s.splice(p,0,f.parse),o.splice(p,0,f.leaf),a.splice(p,0,f.name)}f.endLeaf&&h.push(f.endLeaf)}if(xa(t.parseInline))for(let f of t.parseInline){let u=c.indexOf(f.name);if(u>-1)l[u]=f.parse;else{let p=f.before?kh(c,f.before):f.after?kh(c,f.after)+1:c.length-1;l.splice(p,0,f.parse),c.splice(p,0,f.name)}}return t.wrap&&(O=O.concat(t.wrap)),new i(r,s,o,a,h,n,l,c,O)}getNodeType(e){let t=this.nodeTypes[e];if(t==null)throw new RangeError(`Unknown node type '${e}'`);return t}parseInline(e,t){let r=new ya(this,e,t);e:for(let n=t;n<r.end;){let s=r.char(n);for(let o of this.inlineParsers)if(o){let a=o(r,s,n);if(a>=0){n=a;continue e}}n++}return r.resolveMarkers(0)}};function xa(i){return i!=null&&i.length>0}function Gp(i){if(!Array.isArray(i))return i;if(i.length==0)return null;let e=Gp(i[0]);if(i.length==1)return e;let t=Gp(i.slice(1));if(!t||!e)return e||t;let r=(o,a)=>(o||Is).concat(a||Is),n=e.wrap,s=t.wrap;return{props:r(e.props,t.props),defineNodes:r(e.defineNodes,t.defineNodes),parseBlock:r(e.parseBlock,t.parseBlock),parseInline:r(e.parseInline,t.parseInline),remove:r(e.remove,t.remove),wrap:n?s?(o,a,l,c)=>n(s(o,a,l,c),a,l,c):n:s}}function kh(i,e){let t=i.indexOf(e);if(t<0)throw new RangeError(`Position specified relative to unknown parser ${e}`);return t}var Hv=[Je.none];for(let i=1,e;e=F[i];i++)Hv[i]=Je.define({id:i,name:e,props:i>=F.Escape?[]:[[ue.group,i in Lv?["Block","BlockContext"]:["Block","LeafBlock"]]],top:e=="Document"});var Is=[],Xh=class{constructor(e){this.nodeSet=e,this.content=[],this.nodes=[]}write(e,t,r, Line truncated
`;)s--;this.fragmentEnd=s?s-1:0}let r=this.cursor;r||(r=this.cursor=this.fragment.tree.cursor(),r.firstChild());let n=e+this.fragment.offset;for(;r.to<=n;)if(!r.parent())return!1;for(;;){if(r.from>=n)return this.fragment.from<=t;if(!r.childAfter(n))return!1}}matches(e){let t=this.cursor.tree;return t&&t.prop(ue.contextHash)==e}takeNodes(e){let t=this.cursor,r=this.fragment.offset,n=this.fragmentEnd-(this.fragment.openEnd?1:0),s=e.absoluteLineStart,o=s,a=e.block.children.length,l=o,c=a;for(;;){if(t.to-r>n){if(t.type.isAnonymous&&t.firstChild())continue;break}let h=rw(t.from-r,e.ranges);if(t.to-r<=e.ranges[e.rangeI].to)e.addNode(t.tree,h);else{let O=new Se(e.parser.nodeSet.types[F.Paragraph],[],[],0,e.block.hashProp);e.reusePlaceholders.set(O,t.tree),e.addNode(O,h)}if(t.type.is("Block")&&(oC.indexOf(t.type.id)<0?(o=t.to-r,a=e.block.children.length):(o=l,a=c),l=t.to-r,c=e.block.children.length),!t.nextSibling())break}for(;e.block.children.length>a;)e.block.children.pop(),e.block.positions.pop();return o-s}};function rw(i,e){let t=i;for(let r=1;r<e.length;r++){let n=e[r-1].to,s=e[r].from;n<i&&(t-=s-n)}return t}var aC=St({"Blockquote/...":d.quote,HorizontalRule:d.contentSeparator,"ATXHeading1/... SetextHeading1/...":d.heading1,"ATXHeading2/... SetextHeading2/...":d.heading2,"ATXHeading3/...":d.heading3,"ATXHeading4/...":d.heading4,"ATXHeading5/...":d.heading5,"ATXHeading6/...":d.heading6,"Comment CommentBlock":d.comment,Escape:d.escape,Entity:d.character,"Emphasis/...":d.emphasis,"StrongEmphasis/...":d.strong,"Link/... Image/...":d.link,"OrderedList/... BulletList/...":d.list,"BlockQuote/...":d.quote,"InlineCode CodeText":d.monospace,"URL Autolink":d.url,"HeaderMark HardBreak QuoteMark ListMark LinkMark EmphasisMark CodeMark":d.processingInstruction,"CodeInfo LinkLabel":d.labelName,LinkTitle:d.string,Paragraph:d.content}),nw=new va(new mr(Hv).extend(aC),Object.keys(Ph).map(i=>Ph[i]),Object.keys(Ph).map(i=>Gv[i]),Object.keys(Ph),rC,Lv,Object.keys(Wp).map(i=>Wp[i]),Object.keys(Wp),[]);function lC(i,e,t){let r=[];for(let n=i.firstChild,s=e;;n=n.nextSibling){let o=n?n.from:t;if(o>s&&r.push({from:s,to:o}),!n)break;s=n.to}return r}function sw(i){let{codeParser:e,htmlParser:t}=i;return{wrap:_c((n,s)=>{let o=n.type.id;if(e&&(o==F.CodeBlock||o==F.FencedCode)){let a="";if(o==F.FencedCode){let c=n.node.getChild(F.CodeInfo);c&&(a=s.read(c.from,c.to))}let l=e(a);if(l)return{parser:l,overlay:c=>c.type.id==F.CodeText,bracketed:o==F.FencedCode}}else if(t&&(o==F.HTMLBlock||o==F.HTMLTag||o==F.CommentBlock))return{parser:t,overlay:lC(n.node,n.from,n.to)};return null})}}var cC={resolve:"Strikethrough",mark:"StrikethroughMark"},hC={defineNodes:[{name:"Strikethrough",style:{"Strikethrough/...":d.strikethrough}},{name:"StrikethroughMark",style:d.processingInstruction}],parseInline:[{name:"Strikethrough",parse(i,e,t){if(e!=126||i.char(t+1)!=126||i.char(t+2)==126)return-1;let r=i.slice(t-1,t),n=i.slice(t+2,t+3),s=/\s|^$/.test(r),o=/\s|^$/.test(n),a=wa.test(r),l=wa.test(n);return i.addDelimiter(cC,t,t+2,!o&&(!l||s||a),!s&&(!a||o||l))},after:"Emphasis"}]};function Qa(i,e,t=0,r,n=0){let s=0,o=!0,a=-1,l=-1,c=!1,h=()=>{r.push(i.elt("TableCell",n+a,n+l,i.parser.parseInline(e.slice(a,l),n+a)))};for(let O=t;O<e.length;O++){let f=e.charCodeAt(O);f==124&&!c?((!o||a>-1)&&s++,o=!1,r&&(a>-1&&h(),r.push(i.elt("TableDelimiter",O+n,O+n+1))),a=l=-1):(c||f!=32&&f!=9)&&(a<0&&(a=O),l=O+1),c=!c&&f==92}return a>-1&&(s++,r&&h()),s}function Cv(i,e){for(let t=e;t<i.length;t++){let r=i.charCodeAt(t);if(r==124)return!0;r==92&&t++}return!1}var ow=/^[>\s]*\|?(\s*:?-+:?\s*\|)+(\s*:?-+:?\s*)?$/,Zh=class{constructor(){this.rows=null}nextLine(e,t,r){if(this.rows==null){this.rows=!1;let n;if((t.next==45||t.next==58||t.next==124)&&ow.test(n=t.text.slice(t.pos))){let s=[];Qa(e,r.content,0,s,r.start)==Qa(e,n,0)&&(this.rows=[e.elt("TableHeader",r.start,r.start+r.content.length,s),e.elt("TableDelimiter",e.lineStart+t.pos,e.lineStart+t.text.length)])}}else if(this.rows){let n=[];Qa(e,t.text,t.pos,n,e.lineStart),this.rows.push(e.elt("TableRow",e.lineStart+t.pos,e.lineStart+t.text.length,n))}return!1}finish(e,t){return this.rows?(e.addLeafElement(t,e.elt("Table",t.start,t.start+t.content.length,this.rows)),!0):!1}},OC={defineNodes:[{name:"Table",block:!0},{name:"TableHeader",style:{"TableHeader/...":d.heading}},"TableRow",{name:"TableCell",style:d.content},{name:"TableDelimiter",style:d.processingInstruction}],parseBlock:[{name:"Table",leaf(i,e){return Cv(e.content,0)?new Zh:null},endLeaf(i,e,t){if(t.parsers.some(n=>n instanceof Zh)||!Cv(e.text,e.basePos))return!1;let r=i.peekLine();return ow.test(r)&&Qa(i,e.text,e.basePos)==Qa(i,r,e.basePos)},before:"SetextHeading"}]},Kp=class{nextLine(){return!1}finish(e,t){return e.addLeafElement(t,e.elt("Task",t.start,t.start+t.content.length,[e.elt("TaskMarker",t.start,t.start+3),...e.parser.parseInline(t.content.slice(3),t.start+3)])),!0}},fC={defineNodes:[{name:"Task",block:!0,style:d.list},{name:"TaskMarker",style:d.atom}],parseBlock:[ Line truncated
`);r=n<0?t:t.slice(0,n)}return e+r.length>this.to?r.slice(0,this.to-e):r}prevLineEnd(){return this.atEnd?this.lineStart:this.lineStart-1}startContext(e,t,r=0){this.block=_h.create(e,r,this.lineStart+t,this.block.hash,this.lineStart+this.line.text.length),this.stack.push(this.block)}startComposite(e,t,r=0){this.startContext(this.parser.getNodeType(e),t,r)}addNode(e,t,r){typeof e=="number"&&(e=new Se(this.parser.nodeSet.types[e],Is,Is,(r!=null?r:this.prevLineEnd())-t)),this.block.addChild(e,t-this.block.from)}addElement(e){this.block.addChild(e.toTree(this.parser.nodeSet),e.from-this.block.from)}addLeafElement(e,t){this.addNode(this.buffer.writeElements(im(t.children,e.marks),-t.from).finish(t.type,t.to-t.from),t.from)}finishContext(){let e=this.stack.pop(),t=this.stack[this.stack.length-1];t.addChild(e.toTree(this.parser.nodeSet),e.from-t.from),this.block=t}finish(){for(;this.stack.length>1;)this.finishContext();return this.addGaps(this.block.toTree(this.parser.nodeSet,this.lineStart))}addGaps(e){return this.ranges.length>1?nw(this.ranges,0,e.topNode,this.ranges[0].from,this.reusePlaceholders):e}finishLeaf(e){for(let r of e.parsers)if(r.finish(this,e))return;let t=im(this.parser.parseInline(e.content,e.start),e.marks);this.addNode(this.buffer.writeElements(t,-e.start).finish(B.Paragraph,e.content.length),e.start)}elt(e,t,r,n){return typeof e=="string"?Ce(this.parser.getNodeType(e),t,r,n):new Ch(e,t)}get buffer(){return new Rh(this.parser.nodeSet)}};function nw(i,e,t,r,n){let s=i[e].to,o=[],a=[],l=t.from+r;function c(h,O){for(;O?h>=s:h>s;){let u=i[e+1].from-s;r+=u,h+=u,e++,s=i[e].to}}for(let h=t.firstChild;h;h=h.nextSibling){c(h.from+r,!0);let O=h.from+r,u,f=n.get(h.tree);f?u=f:h.to+r>s?(u=nw(i,e,h,r,n),c(h.to+r,!1)):u=h.toTree(),o.push(u),a.push(O-l)}return c(t.to+r,!1),new Se(t.type,o,a,t.to+r-l,t.tree?t.tree.propValues:void 0)}var ya=class i extends Sr{constructor(e,t,r,n,s,o,a,l,c){super(),this.nodeSet=e,this.blockParsers=t,this.leafBlockParsers=r,this.blockNames=n,this.endLeafBlock=s,this.skipContextMarkup=o,this.inlineParsers=a,this.inlineNames=l,this.wrappers=c,this.nodeTypes=Object.create(null);for(let h of e.types)this.nodeTypes[h.name]=h.id}createParse(e,t,r){let n=new em(this,e,t,r);for(let s of this.wrappers)n=s(n,e,t,r);return n}configure(e){let t=tm(e);if(!t)return this;let{nodeSet:r,skipContextMarkup:n}=this,s=this.blockParsers.slice(),o=this.leafBlockParsers.slice(),a=this.blockNames.slice(),l=this.inlineParsers.slice(),c=this.inlineNames.slice(),h=this.endLeafBlock.slice(),O=this.wrappers;if(va(t.defineNodes)){n=Object.assign({},n);let u=r.types.slice(),f;for(let p of t.defineNodes){let{name:m,block:S,composite:w,style:Z}=typeof p=="string"?{name:p}:p;if(u.some(k=>k.name==m))continue;w&&(n[u.length]=(k,P,C)=>w(P,C,k.value));let R=u.length,A=w?["Block","BlockContext"]:S?R>=B.ATXHeading1&&R<=B.SetextHeading2?["Block","LeafBlock","Heading"]:["Block","LeafBlock"]:void 0;u.push(Je.define({id:R,name:m,props:A&&[[fe.group,A]]})),Z&&(f||(f={}),Array.isArray(Z)||Z instanceof oi?f[m]=Z:Object.assign(f,Z))}r=new br(u),f&&(r=r.extend(St(f)))}if(va(t.props)&&(r=r.extend(...t.props)),va(t.remove))for(let u of t.remove){let f=this.blockNames.indexOf(u),p=this.inlineNames.indexOf(u);f>-1&&(s[f]=o[f]=void 0),p>-1&&(l[p]=void 0)}if(va(t.parseBlock))for(let u of t.parseBlock){let f=a.indexOf(u.name);if(f>-1)s[f]=u.parse,o[f]=u.leaf;else{let p=u.before?Xh(a,u.before):u.after?Xh(a,u.after)+1:a.length-1;s.splice(p,0,u.parse),o.splice(p,0,u.leaf),a.splice(p,0,u.name)}u.endLeaf&&h.push(u.endLeaf)}if(va(t.parseInline))for(let u of t.parseInline){let f=c.indexOf(u.name);if(f>-1)l[f]=u.parse;else{let p=u.before?Xh(c,u.before):u.after?Xh(c,u.after)+1:c.length-1;l.splice(p,0,u.parse),c.splice(p,0,u.name)}}return t.wrap&&(O=O.concat(t.wrap)),new i(r,s,o,a,h,n,l,c,O)}getNodeType(e){let t=this.nodeTypes[e];if(t==null)throw new RangeError(`Unknown node type '${e}'`);return t}parseInline(e,t){let r=new Pa(this,e,t);e:for(let n=t;n<r.end;){let s=r.char(n);for(let o of this.inlineParsers)if(o){let a=o(r,s,n);if(a>=0){n=a;continue e}}n++}return r.resolveMarkers(0)}};function va(i){return i!=null&&i.length>0}function tm(i){if(!Array.isArray(i))return i;if(i.length==0)return null;let e=tm(i[0]);if(i.length==1)return e;let t=tm(i.slice(1));if(!t||!e)return e||t;let r=(o,a)=>(o||Is).concat(a||Is),n=e.wrap,s=t.wrap;return{props:r(e.props,t.props),defineNodes:r(e.defineNodes,t.defineNodes),parseBlock:r(e.parseBlock,t.parseBlock),parseInline:r(e.parseInline,t.parseInline),remove:r(e.remove,t.remove),wrap:n?s?(o,a,l,c)=>n(s(o,a,l,c),a,l,c):n:s}}function Xh(i,e){let t=i.indexOf(e);if(t<0)throw new RangeError(`Position specified relative to unknown parser ${e}`);return t}var sw=[Je.none];for(let i=1,e;e=B[i];i++)sw[i]=Je.define({id:i,name:e,props:i>=B.Escape?[]:[[fe.group,i in BQ?["Block","BlockContext"]:["Block","LeafBlock"]]],top:e=="Document"});var Is=[],Rh=class{constructor(e){this.nodeSet=e,this.content=[],this.nodes=[]}write(e,t,r, Line truncated
`;)s--;this.fragmentEnd=s?s-1:0}let r=this.cursor;r||(r=this.cursor=this.fragment.tree.cursor(),r.firstChild());let n=e+this.fragment.offset;for(;r.to<=n;)if(!r.parent())return!1;for(;;){if(r.from>=n)return this.fragment.from<=t;if(!r.childAfter(n))return!1}}matches(e){let t=this.cursor.tree;return t&&t.prop(fe.contextHash)==e}takeNodes(e){let t=this.cursor,r=this.fragment.offset,n=this.fragmentEnd-(this.fragment.openEnd?1:0),s=e.absoluteLineStart,o=s,a=e.block.children.length,l=o,c=a;for(;;){if(t.to-r>n){if(t.type.isAnonymous&&t.firstChild())continue;break}let h=Ow(t.from-r,e.ranges);if(t.to-r<=e.ranges[e.rangeI].to)e.addNode(t.tree,h);else{let O=new Se(e.parser.nodeSet.types[B.Paragraph],[],[],0,e.block.hashProp);e.reusePlaceholders.set(O,t.tree),e.addNode(O,h)}if(t.type.is("Block")&&(QZ.indexOf(t.type.id)<0?(o=t.to-r,a=e.block.children.length):(o=l,a=c),l=t.to-r,c=e.block.children.length),!t.nextSibling())break}for(;e.block.children.length>a;)e.block.children.pop(),e.block.positions.pop();return o-s}};function Ow(i,e){let t=i;for(let r=1;r<e.length;r++){let n=e[r-1].to,s=e[r].from;n<i&&(t-=s-n)}return t}var wZ=St({"Blockquote/...":d.quote,HorizontalRule:d.contentSeparator,"ATXHeading1/... SetextHeading1/...":d.heading1,"ATXHeading2/... SetextHeading2/...":d.heading2,"ATXHeading3/...":d.heading3,"ATXHeading4/...":d.heading4,"ATXHeading5/...":d.heading5,"ATXHeading6/...":d.heading6,"Comment CommentBlock":d.comment,Escape:d.escape,Entity:d.character,"Emphasis/...":d.emphasis,"StrongEmphasis/...":d.strong,"Link/... Image/...":d.link,"OrderedList/... BulletList/...":d.list,"BlockQuote/...":d.quote,"InlineCode CodeText":d.monospace,"URL Autolink":d.url,"HeaderMark HardBreak QuoteMark ListMark LinkMark EmphasisMark CodeMark":d.processingInstruction,"CodeInfo LinkLabel":d.labelName,LinkTitle:d.string,Paragraph:d.content}),uw=new ya(new br(sw).extend(wZ),Object.keys(Th).map(i=>Th[i]),Object.keys(Th).map(i=>rw[i]),Object.keys(Th),xZ,BQ,Object.keys(Fp).map(i=>Fp[i]),Object.keys(Fp),[]);function yZ(i,e,t){let r=[];for(let n=i.firstChild,s=e;;n=n.nextSibling){let o=n?n.from:t;if(o>s&&r.push({from:s,to:o}),!n)break;s=n.to}return r}function fw(i){let{codeParser:e,htmlParser:t}=i;return{wrap:Cc((n,s)=>{let o=n.type.id;if(e&&(o==B.CodeBlock||o==B.FencedCode)){let a="";if(o==B.FencedCode){let c=n.node.getChild(B.CodeInfo);c&&(a=s.read(c.from,c.to))}let l=e(a);if(l)return{parser:l,overlay:c=>c.type.id==B.CodeText,bracketed:o==B.FencedCode}}else if(t&&(o==B.HTMLBlock||o==B.HTMLTag||o==B.CommentBlock))return{parser:t,overlay:yZ(n.node,n.from,n.to)};return null})}}var $Z={resolve:"Strikethrough",mark:"StrikethroughMark"},PZ={defineNodes:[{name:"Strikethrough",style:{"Strikethrough/...":d.strikethrough}},{name:"StrikethroughMark",style:d.processingInstruction}],parseInline:[{name:"Strikethrough",parse(i,e,t){if(e!=126||i.char(t+1)!=126||i.char(t+2)==126)return-1;let r=i.slice(t-1,t),n=i.slice(t+2,t+3),s=/\s|^$/.test(r),o=/\s|^$/.test(n),a=$a.test(r),l=$a.test(n);return i.addDelimiter($Z,t,t+2,!o&&(!l||s||a),!s&&(!a||o||l))},after:"Emphasis"}]};function wa(i,e,t=0,r,n=0){let s=0,o=!0,a=-1,l=-1,c=!1,h=()=>{r.push(i.elt("TableCell",n+a,n+l,i.parser.parseInline(e.slice(a,l),n+a)))};for(let O=t;O<e.length;O++){let u=e.charCodeAt(O);u==124&&!c?((!o||a>-1)&&s++,o=!1,r&&(a>-1&&h(),r.push(i.elt("TableDelimiter",O+n,O+n+1))),a=l=-1):(c||u!=32&&u!=9)&&(a<0&&(a=O),l=O+1),c=!c&&u==92}return a>-1&&(s++,r&&h()),s}function WQ(i,e){for(let t=e;t<i.length;t++){let r=i.charCodeAt(t);if(r==124)return!0;r==92&&t++}return!1}var dw=/^[>\s]*\|?(\s*:?-+:?\s*\|)+(\s*:?-+:?\s*)?$/,Uh=class{constructor(){this.rows=null}nextLine(e,t,r){if(this.rows==null){this.rows=!1;let n;if((t.next==45||t.next==58||t.next==124)&&dw.test(n=t.text.slice(t.pos))){let s=[];wa(e,r.content,0,s,r.start)==wa(e,n,0)&&(this.rows=[e.elt("TableHeader",r.start,r.start+r.content.length,s),e.elt("TableDelimiter",e.lineStart+t.pos,e.lineStart+t.text.length)])}}else if(this.rows){let n=[];wa(e,t.text,t.pos,n,e.lineStart),this.rows.push(e.elt("TableRow",e.lineStart+t.pos,e.lineStart+t.text.length,n))}return!1}finish(e,t){return this.rows?(e.addLeafElement(t,e.elt("Table",t.start,t.start+t.content.length,this.rows)),!0):!1}},kZ={defineNodes:[{name:"Table",block:!0},{name:"TableHeader",style:{"TableHeader/...":d.heading}},"TableRow",{name:"TableCell",style:d.content},{name:"TableDelimiter",style:d.processingInstruction}],parseBlock:[{name:"Table",leaf(i,e){return WQ(e.content,0)?new Uh:null},endLeaf(i,e,t){if(t.parsers.some(n=>n instanceof Uh)||!WQ(e.text,e.basePos))return!1;let r=i.peekLine();return dw.test(r)&&wa(i,e.text,e.basePos)==wa(i,r,e.basePos)},before:"SetextHeading"}]},nm=class{nextLine(){return!1}finish(e,t){return e.addLeafElement(t,e.elt("Task",t.start,t.start+t.content.length,[e.elt("TaskMarker",t.start,t.start+3),...e.parser.parseInline(t.content.slice(3),t.start+3)])),!0}},TZ={defineNodes:[{name:"Task",block:!0,style:d.list},{name:"TaskMarker",style:d.atom}],parseBlock:[ Line truncated
\${}
} catch (\${error}) {
\${}
}`,{label:"try",detail:"/ catch block",type:"keyword"}),Mt("if (${}) {\n ${}\n}",{label:"if",detail:"block",type:"keyword"}),Mt(`if (\${}) {
}`,{label:"try",detail:"/ catch block",type:"keyword"}),Wt("if (${}) {\n ${}\n}",{label:"if",detail:"block",type:"keyword"}),Wt(`if (\${}) {
\${}
} else {
\${}
}`,{label:"if",detail:"/ else block",type:"keyword"}),Mt(`class \${name} {
}`,{label:"if",detail:"/ else block",type:"keyword"}),Wt(`class \${name} {
constructor(\${params}) {
\${}
}
}`,{label:"class",detail:"definition",type:"keyword"}),Mt('import {${names}} from "${module}"\n${}',{label:"import",detail:"named",type:"keyword"}),Mt('import ${name} from "${module}"\n${}',{label:"import",detail:"default",type:"keyword"})],cU=Bw.concat([Mt("interface ${name} {\n ${}\n}",{label:"interface",detail:"definition",type:"keyword"}),Mt("type ${name} = ${type}",{label:"type",detail:"definition",type:"keyword"}),Mt("enum ${name} {\n ${}\n}",{label:"enum",detail:"definition",type:"keyword"})]),Dw=new _s,Gw=new Set(["Script","Block","FunctionExpression","FunctionDeclaration","ArrowFunction","MethodDeclaration","ForStatement"]);function ka(i){return(e,t)=>{let r=e.node.getChild("VariableDefinition");return r&&t(r,i),!0}}var hU=["FunctionDeclaration"],OU={FunctionDeclaration:ka("function"),ClassDeclaration:ka("class"),ClassExpression:()=>!0,EnumDeclaration:ka("constant"),TypeAliasDeclaration:ka("type"),NamespaceDeclaration:ka("namespace"),VariableDefinition(i,e){i.matchContext(hU)||e(i,"variable")},TypeDefinition(i,e){e(i,"type")},__proto__:null};function Nw(i,e){let t=Dw.get(e);if(t)return t;let r=[],n=!0;function s(o,a){let l=i.sliceString(o.from,o.to);r.push({label:l,type:a})}return e.cursor(Re.IncludeAnonymous).iterate(o=>{if(n)n=!1;else if(o.name){let a=OU[o.name];if(a&&a(o,s)||Gw.has(o.name))return!1}else if(o.to-o.from>8192){for(let a of Nw(i,o.node))r.push(a);return!1}}),Dw.set(e,r),r}var Iw=/^[\w$\xa1-\uffff][\w$\d\xa1-\uffff]*$/,Hw=["TemplateString","String","RegExp","LineComment","BlockComment","VariableDefinition","TypeDefinition","Label","PropertyDefinition","PropertyName","PrivatePropertyDefinition","PrivatePropertyName","JSXText","JSXAttributeValue","JSXOpenTag","JSXCloseTag","JSXSelfClosingTag",".","?."];function fU(i){let e=_e(i.state).resolveInner(i.pos,-1);if(Hw.indexOf(e.name)>-1)return null;let t=e.name=="VariableName"||e.to-e.from<20&&Iw.test(i.state.sliceDoc(e.from,e.to));if(!t&&!i.explicit)return null;let r=[];for(let n=e;n;n=n.parent)Gw.has(n.name)&&(r=r.concat(Nw(i.state.doc,n)));return{options:r,from:t?e.from:i.pos,validFor:Iw}}var Wi=Qt.define({name:"javascript",parser:qw.configure({props:[Qi.add({IfStatement:nr({except:/^\s*({|else\b)/}),TryStatement:nr({except:/^\s*({|catch\b|finally\b)/}),LabeledStatement:Wc,SwitchBody:i=>{let e=i.textAfter,t=/^\s*\}/.test(e),r=/^\s*(case|default)\b/.test(e);return i.baseIndent+(t?0:r?1:2)*i.unit},Block:Lc({closing:"}"}),ArrowFunction:i=>i.baseIndent+i.unit,"TemplateString BlockComment":()=>null,"Statement Property":nr({except:/^\s*{/}),JSXElement(i){let e=/^\s*<\//.test(i.textAfter);return i.lineIndent(i.node.from)+(e?0:i.unit)},JSXEscape(i){let e=/\s*\}/.test(i.textAfter);return i.lineIndent(i.node.from)+(e?0:i.unit)},"JSXOpenTag JSXSelfClosingTag"(i){return i.column(i.node.from)+i.unit}}),Xt.add({"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression ObjectType":vi,BlockComment(i){return{from:i.from+2,to:i.to-2}},JSXElement(i){let e=i.firstChild;if(!e||e.name=="JSXSelfClosingTag")return null;let t=i.lastChild;return{from:e.to,to:t.type.isError?i.to:t.from}},"JSXSelfClosingTag JSXOpenTag"(i){var e;let t=(e=i.firstChild)===null||e===void 0?void 0:e.nextSibling,r=i.lastChild;return!t||t.type.isError?null:{from:t.to,to:r.type.isError?i.to:r.from}}})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"`"]},commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(?:case |default:|\{|\}|<\/)$/,wordChars:"$"}}),Kw={test:i=>/^JSX/.test(i.name),facet:Rs({commentTokens:{block:{open:"{/*",close:"*/}"}}})},mm=Wi.configure({dialect:"ts"},"typescript"),gm=Wi.configure({dialect:"jsx",props:[Yc.add(i=>i.isTop?[Kw]:void 0)]}),bm=Wi.configure({dialect:"jsx ts",props:[Yc.add(i=>i.isTop?[Kw]:void 0)]},"typescript"),Jw=i=>({label:i,type:"keyword"}),ey="break case const continue default delete export extends false finally in instanceof let new return static super switch this throw true typeof var yield".split(" ").map(Jw),uU=ey.concat(["declare","implements","private","protected","public"].map(Jw));function ty(i={}){let e=i.jsx?i.typescript?bm:gm:i.typescript?mm:Wi,t=i.typescript?cU.concat(uU):Bw.concat(ey);return new Ee(e,[Wi.data.of({autocomplete:nS(Hw,rS(t))}),Wi.data.of({autocomplete:fU}),i.jsx?mU:[]])}function dU(i){for(;;){if(i.name=="JSXOpenTag"||i.name=="JSXSelfClosingTag"||i.name=="JSXFragmentTag")return i;if(i.name=="JSXEscape"||!i.parent)return null;i=i.parent}}function Fw(i,e,t=i.length){for(let r=e==null?void 0:e.firstChild;r;r=r.nextSibling)if(r.name=="JSXIdentifier"||r.name=="JSXBuiltin"||r.name=="JSXNamespacedName"||r.name=="JSXMemberExpression")return i.sliceString(r.from,Math.min(r.to,t));return""}var pU=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),mU=W.inputHandler.of((i,e,t,r,n)=>{if((pU?i.composing:i.compositionStarted)||i.state.readOnly||e!=t||r!=">"&&r!="/"||!Wi.isActiveAt(i.state,e,-1))return!1;let s=n(),{state:o}=s,a=o.changeByRange(l=>{var c;let{head:h}=l,O=_e(o).resol Line truncated
`);for(let l of a){Py.lastIndex=0;let c=Py.exec(l);if(c){let h=o+c.index+c[0].length;t.push(I.widget({widget:new _m(c[0],e),side:-1}).range(h))}o+=l.length+1}}return I.set(t,!0)}function Ty(i){let e;function t(r){let n=e.posAtDOM(r);i(e.state.doc.lineAt(n).number)}return je.fromClass(class{constructor(r){e=r,this.decorations=ky(r,t)}update(r){e=r.view,(r.docChanged||r.viewportChanged)&&(this.decorations=ky(r.view,t))}},{decorations:r=>r.decorations})}var Rm=class extends at{constructor(t,r,n){super();this.filename=t;this.system=r;this.handleClick=n}toDOM(){let t=document.createElement("span");return t.className="include-link-badge",t.textContent="\u2192",t.title=(this.system?"System header: ":"View ")+this.filename,t.addEventListener("click",r=>{r.preventDefault(),r.stopPropagation(),this.handleClick(this.filename,this.system)}),t}eq(t){return this.filename===t.filename&&this.system===t.system}ignoreEvent(){return!1}};function DU(i,e,t){let r=[],n=i.state.doc,s=new Set;for(let{from:o,to:a}of i.visibleRanges){let l=i.state.sliceDoc(o,a);for(let c of e){let h=c instanceof RegExp?{re:c}:c;h.re.lastIndex=0;let O;for(;O=h.re.exec(l);){let f=O[h.group!=null?h.group:O.length-1];if(!f)continue;let u=h.suffix?f+h.suffix:f,p=Math.min(o+O.index+O[0].length,n.length),m=n.lineAt(p),S=m.number+":"+u;s.has(S)||(s.add(S),r.push(I.widget({widget:new Rm(u,!!h.system,t),side:1}).range(m.to)))}}}return I.set(r,!0)}function Xy(i,e){function t(r){let n=i();return!n||!n.length?I.none:DU(r,n,e)}return je.fromClass(class{constructor(r){this.decorations=t(r)}update(r){(r.docChanged||r.viewportChanged)&&(this.decorations=t(r.view))}},{decorations:r=>r.decorations})}var Bs=window.matchMedia&&window.matchMedia("only screen and (max-width: 760px)").matches;function wr(i,e){var t=$(document.createElement("div"));return i&&t.appendTo(i),e&&t.addClass(e),t}function IU(i){return ve.transactionFilter.of(e=>{if(!e.docChanged||!e.isUserEvent("input")||!i.input)return e;let t=[],r=!1;if(e.changes.iterChanges((o,a,l,c,h)=>{let O=h.toString(),f=i.input(O);t.push({from:o,to:a,insert:f}),f!==O&&(r=!0)}),!r)return e;let n=e.annotation(Ne.userEvent),s=e.annotation(Ne.addToHistory);return{changes:t,selection:e.selection,effects:e.effects,scrollIntoView:e.scrollIntoView,annotations:[...n!=null?[Ne.userEvent.of(n)]:[],...s!=null?[Ne.addToHistory.of(s)]:[]]}})}var Zm=new bt;function _y(i){return Zm.reconfigure(IU(i))}var Ry=ae.define(),Zy=ae.define(),Cy=ae.define(),Um=ae.define(),Uy=ae.define(),Ay=ae.define(),Am=ae.define(),Ey=ae.define(),zy=Te.define({create(){return pe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Ry)){let r=t.value,n=[];for(let[s,o]of r.entries())if(s>=1&&s<=e.state.doc.lines){let a=e.state.doc.line(s).from;n.push(new Mh($e(o,4)).range(a))}i=pe.of(n,!0)}return i}}),Yy=Te.define({create(){return pe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Zy)){let r=t.value,n=[];for(let[s,o]of r.entries())if(s>=1&&s<=e.state.doc.lines){let a=e.state.doc.line(s).from;n.push(new Lh(o).range(a))}i=pe.of(n,!0)}return i}}),My=Te.define({create(){return pe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Cy)){let r=t.value,n=[];for(let[s,o]of r.entries())if(s>=1&&s<=e.state.doc.lines){let a=e.state.doc.line(s).from;n.push(new Wh(o).range(a))}i=pe.of(n,!0)}return i}}),Ly=Te.define({create(){return pe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Um))if(t.value===null)i=pe.empty;else{let r=t.value;if(r>=1&&r<=e.state.doc.lines){let n=e.state.doc.line(r).from,s=!1;i.between(n,n,()=>(s=!0,!1)),s?i=i.update({filter:o=>o!==n}):i=i.update({add:[BU.range(n)]})}}return i}}),Cm=Te.define({create(){return pe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Uy)){let r=t.value,n=[];for(let[s,o]of r.entries())if(s>=1&&s<=e.state.doc.lines){let a=e.state.doc.line(s).from;n.push(new Vh(s,o).range(a))}i=pe.of(n,!0)}return i}}),Wy=Te.define({create(){return pe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Ay))if(t.value===null)i=pe.empty;else{let r=t.value;if(r>=1&&r<=e.state.doc.lines){let n=e.state.doc.line(r).from;i=pe.of(Vy.range(n))}}return i}}),Mh=class extends nt{constructor(t){super();this.hex=t}toDOM(){let t=document.createElement("span");return t.textContent=this.hex,t.style.cursor="pointer",t.title="Click to run to here",t.addEventListener("mouseenter",()=>{t.style.textDecoration="underline"}),t.addEventListener("mouseleave",()=>{t.style.textDecoration="none"}),t}eq(t){return this.hex==t.hex}},Lh=class extends nt{constructor(t){super();this.bytes=t}toDOM(){return document.createTextNode(this.bytes)}eq(t){return this.bytes==t.bytes}},Wh=class extends nt{constructor(t){super();this.clock=t}toDOM(){return document.createTextNode(this.clock)}eq(t){return this.clock==t.clock}},FU=new class extends nt{toDOM(){let i=document.createElement("span");return i.textContent="\u25CF",i.style.color="transparent",i.style.cursor="pointer",i.addEve Line truncated
}`,{label:"class",detail:"definition",type:"keyword"}),Wt('import {${names}} from "${module}"\n${}',{label:"import",detail:"named",type:"keyword"}),Wt('import ${name} from "${module}"\n${}',{label:"import",detail:"default",type:"keyword"})],$U=iy.concat([Wt("interface ${name} {\n ${}\n}",{label:"interface",detail:"definition",type:"keyword"}),Wt("type ${name} = ${type}",{label:"type",detail:"definition",type:"keyword"}),Wt("enum ${name} {\n ${}\n}",{label:"enum",detail:"definition",type:"keyword"})]),Jw=new _s,ry=new Set(["Script","Block","FunctionExpression","FunctionDeclaration","ArrowFunction","MethodDeclaration","ForStatement"]);function Xa(i){return(e,t)=>{let r=e.node.getChild("VariableDefinition");return r&&t(r,i),!0}}var PU=["FunctionDeclaration"],kU={FunctionDeclaration:Xa("function"),ClassDeclaration:Xa("class"),ClassExpression:()=>!0,EnumDeclaration:Xa("constant"),TypeAliasDeclaration:Xa("type"),NamespaceDeclaration:Xa("namespace"),VariableDefinition(i,e){i.matchContext(PU)||e(i,"variable")},TypeDefinition(i,e){e(i,"type")},__proto__:null};function ny(i,e){let t=Jw.get(e);if(t)return t;let r=[],n=!0;function s(o,a){let l=i.sliceString(o.from,o.to);r.push({label:l,type:a})}return e.cursor(Re.IncludeAnonymous).iterate(o=>{if(n)n=!1;else if(o.name){let a=kU[o.name];if(a&&a(o,s)||ry.has(o.name))return!1}else if(o.to-o.from>8192){for(let a of ny(i,o.node))r.push(a);return!1}}),Jw.set(e,r),r}var ey=/^[\w$\xa1-\uffff][\w$\d\xa1-\uffff]*$/,sy=["TemplateString","String","RegExp","LineComment","BlockComment","VariableDefinition","TypeDefinition","Label","PropertyDefinition","PropertyName","PrivatePropertyDefinition","PrivatePropertyName","JSXText","JSXAttributeValue","JSXOpenTag","JSXCloseTag","JSXSelfClosingTag",".","?."];function TU(i){let e=_e(i.state).resolveInner(i.pos,-1);if(sy.indexOf(e.name)>-1)return null;let t=e.name=="VariableName"||e.to-e.from<20&&ey.test(i.state.sliceDoc(e.from,e.to));if(!t&&!i.explicit)return null;let r=[];for(let n=e;n;n=n.parent)ry.has(n.name)&&(r=r.concat(ny(i.state.doc,n)));return{options:r,from:t?e.from:i.pos,validFor:ey}}var Vi=vt.define({name:"javascript",parser:Kw.configure({props:[wi.add({IfStatement:or({except:/^\s*({|else\b)/}),TryStatement:or({except:/^\s*({|catch\b|finally\b)/}),LabeledStatement:jc,SwitchBody:i=>{let e=i.textAfter,t=/^\s*\}/.test(e),r=/^\s*(case|default)\b/.test(e);return i.baseIndent+(t?0:r?1:2)*i.unit},Block:Vc({closing:"}"}),ArrowFunction:i=>i.baseIndent+i.unit,"TemplateString BlockComment":()=>null,"Statement Property":or({except:/^\s*{/}),JSXElement(i){let e=/^\s*<\//.test(i.textAfter);return i.lineIndent(i.node.from)+(e?0:i.unit)},JSXEscape(i){let e=/\s*\}/.test(i.textAfter);return i.lineIndent(i.node.from)+(e?0:i.unit)},"JSXOpenTag JSXSelfClosingTag"(i){return i.column(i.node.from)+i.unit}}),Rt.add({"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression ObjectType":yi,BlockComment(i){return{from:i.from+2,to:i.to-2}},JSXElement(i){let e=i.firstChild;if(!e||e.name=="JSXSelfClosingTag")return null;let t=i.lastChild;return{from:e.to,to:t.type.isError?i.to:t.from}},"JSXSelfClosingTag JSXOpenTag"(i){var e;let t=(e=i.firstChild)===null||e===void 0?void 0:e.nextSibling,r=i.lastChild;return!t||t.type.isError?null:{from:t.to,to:r.type.isError?i.to:r.from}}})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"`"]},commentTokens:{line:"//",block:{open:"/*",close:"*/"}},indentOnInput:/^\s*(?:case |default:|\{|\}|<\/)$/,wordChars:"$"}}),oy={test:i=>/^JSX/.test(i.name),facet:Rs({commentTokens:{block:{open:"{/*",close:"*/}"}}})},Qm=Vi.configure({dialect:"ts"},"typescript"),wm=Vi.configure({dialect:"jsx",props:[Lc.add(i=>i.isTop?[oy]:void 0)]}),ym=Vi.configure({dialect:"jsx ts",props:[Lc.add(i=>i.isTop?[oy]:void 0)]},"typescript"),ay=i=>({label:i,type:"keyword"}),ly="break case const continue default delete export extends false finally in instanceof let new return static super switch this throw true typeof var yield".split(" ").map(ay),XU=ly.concat(["declare","implements","private","protected","public"].map(ay));function cy(i={}){let e=i.jsx?i.typescript?ym:wm:i.typescript?Qm:Vi,t=i.typescript?$U.concat(XU):iy.concat(ly);return new Ee(e,[Vi.data.of({autocomplete:uS(sy,OS(t))}),Vi.data.of({autocomplete:TU}),i.jsx?CU:[]])}function _U(i){for(;;){if(i.name=="JSXOpenTag"||i.name=="JSXSelfClosingTag"||i.name=="JSXFragmentTag")return i;if(i.name=="JSXEscape"||!i.parent)return null;i=i.parent}}function ty(i,e,t=i.length){for(let r=e==null?void 0:e.firstChild;r;r=r.nextSibling)if(r.name=="JSXIdentifier"||r.name=="JSXBuiltin"||r.name=="JSXNamespacedName"||r.name=="JSXMemberExpression")return i.sliceString(r.from,Math.min(r.to,t));return""}var RU=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),CU=W.inputHandler.of((i,e,t,r,n)=>{if((RU?i.composing:i.compositionStarted)||i.state.readOnly||e!=t||r!=">"&&r!="/"||!Vi.isActiveAt(i.state,e,-1))return!1;let s=n(),{state:o}=s,a=o.changeByRange(l=>{var c;let{head:h}=l,O=_e(o).resol Line truncated
`);for(let l of a){zy.lastIndex=0;let c=zy.exec(l);if(c){let h=o+c.index+c[0].length;t.push(F.widget({widget:new Mm(c[0],e),side:-1}).range(h))}o+=l.length+1}}return F.set(t,!0)}function My(i){let e;function t(r){let n=e.posAtDOM(r);i(e.state.doc.lineAt(n).number)}return je.fromClass(class{constructor(r){e=r,this.decorations=Yy(r,t)}update(r){e=r.view,(r.docChanged||r.viewportChanged)&&(this.decorations=Yy(r.view,t))}},{decorations:r=>r.decorations})}var Lm=class extends at{constructor(t,r,n){super();this.filename=t;this.system=r;this.handleClick=n}toDOM(){let t=document.createElement("span");return t.className="include-link-badge",t.textContent="\u2192",t.title=(this.system?"System header: ":"View ")+this.filename,t.addEventListener("click",r=>{r.preventDefault(),r.stopPropagation(),this.handleClick(this.filename,this.system)}),t}eq(t){return this.filename===t.filename&&this.system===t.system}ignoreEvent(){return!1}};function uA(i,e,t){let r=[],n=i.state.doc,s=new Set;for(let{from:o,to:a}of i.visibleRanges){let l=i.state.sliceDoc(o,a);for(let c of e){let h=c instanceof RegExp?{re:c}:c;h.re.lastIndex=0;let O;for(;O=h.re.exec(l);){let u=O[h.group!=null?h.group:O.length-1];if(!u)continue;let f=h.suffix?u+h.suffix:u,p=Math.min(o+O.index+O[0].length,n.length),m=n.lineAt(p),S=m.number+":"+f;s.has(S)||(s.add(S),r.push(F.widget({widget:new Lm(f,!!h.system,t),side:1}).range(m.to)))}}}return F.set(r,!0)}function Ly(i,e){function t(r){let n=i();return!n||!n.length?F.none:uA(r,n,e)}return je.fromClass(class{constructor(r){this.decorations=t(r)}update(r){(r.docChanged||r.viewportChanged)&&(this.decorations=t(r.view))}},{decorations:r=>r.decorations})}var Bs=window.matchMedia&&window.matchMedia("only screen and (max-width: 760px)").matches;function cr(i,e){var t=$(document.createElement("div"));return i&&t.appendTo(i),e&&t.addClass(e),t}function fA(i){return we.transactionFilter.of(e=>{if(!e.docChanged||!e.isUserEvent("input")||!i.input)return e;let t=[],r=!1;if(e.changes.iterChanges((o,a,l,c,h)=>{let O=h.toString(),u=i.input(O);t.push({from:o,to:a,insert:u}),u!==O&&(r=!0)}),!r)return e;let n=e.annotation(Ge.userEvent),s=e.annotation(Ge.addToHistory);return{changes:t,selection:e.selection,effects:e.effects,scrollIntoView:e.scrollIntoView,annotations:[...n!=null?[Ge.userEvent.of(n)]:[],...s!=null?[Ge.addToHistory.of(s)]:[]]}})}var Wm=new bt;function Wy(i){return Wm.reconfigure(fA(i))}var Vy=ae.define(),jy=ae.define(),qy=ae.define(),Dy=ae.define(),Iy=ae.define(),Fy=ae.define(),By=ae.define(),jm=ae.define(),Ny=ae.define(),Gy=Te.define({create(){return pe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Vy)){let r=t.value,n=[];for(let[s,o]of r.entries())if(s>=1&&s<=e.state.doc.lines){let a=e.state.doc.line(s).from;n.push(new Vh(ve(o,4)).range(a))}i=pe.of(n,!0)}return i}}),Hy=Te.define({create(){return pe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(jy)){let r=t.value,n=[];for(let[s,o]of r.entries())if(s>=1&&s<=e.state.doc.lines){let a=e.state.doc.line(s).from;n.push(new jh(o).range(a))}i=pe.of(n,!0)}return i}}),Ky=Te.define({create(){return pe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(qy)){let r=t.value,n=[];for(let[s,o]of r.entries())if(s>=1&&s<=e.state.doc.lines){let a=e.state.doc.line(s).from;n.push(new qh(o).range(a))}i=pe.of(n,!0)}return i}}),Jy=Te.define({create(){return pe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Iy)){let r=[],n=t.value.filter(s=>s.line>=1&&s.line<=e.state.doc.lines).sort((s,o)=>s.line-o.line);for(let s of n){let o=e.state.doc.line(s.line).from;r.push((s.enabled?pA:mA).range(o))}i=pe.of(r,!0)}return i}}),Vm=Te.define({create(){return pe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Fy)){let r=t.value,n=[];for(let[s,o]of r.entries())if(s>=1&&s<=e.state.doc.lines){let a=e.state.doc.line(s).from;n.push(new Ih(s,o).range(a))}i=pe.of(n,!0)}return i}}),e$=Te.define({create(){return pe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(By))if(t.value===null)i=pe.empty;else{let r=t.value;if(r>=1&&r<=e.state.doc.lines){let n=e.state.doc.line(r).from;i=pe.of(t$.range(n))}}return i}}),Vh=class extends nt{constructor(t){super();this.hex=t}toDOM(){let t=document.createElement("span");return t.textContent=this.hex,t.style.cursor="pointer",t.title="Click to run to here",t.addEventListener("mouseenter",()=>{t.style.textDecoration="underline"}),t.addEventListener("mouseleave",()=>{t.style.textDecoration="none"}),t}eq(t){return this.hex==t.hex}},jh=class extends nt{constructor(t){super();this.bytes=t}toDOM(){return document.createTextNode(this.bytes)}eq(t){return this.bytes==t.bytes}},qh=class extends nt{constructor(t){super();this.clock=t}toDOM(){return document.createTextNode(this.clock)}eq(t){return this.clock==t.clock}},dA=new class extends nt{toDOM(){let i=document.createElement("span");return i.textContent="\u25CF",i.style.color="transparent",i.style.cursor="pointer",i.addE Line truncated
color: #ff6666;
background-color: #330000;
padding: 4px 8px;
margin: 2px 0;
border-left: 3px solid #ff0000;
font-family: monospace;
`,t}},iA=Te.define({create(){return I.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(qn.showMessage)){if(t.value===null||!t.value)return I.none;if(t.value.toggle){let r=[],n=new Map;return i.between(0,e.state.doc.length,(a,l,c)=>{try{let h=e.state.doc.lineAt(l).number;c.spec.widget instanceof Ra&&n.set(h,c.spec.widget.message)}catch(h){}}),n.has(t.value.line)?n.delete(t.value.line):n.set(t.value.line,t.value.msg),Array.from(n.keys()).sort((a,l)=>a-l).forEach(a=>{try{let l=e.state.doc.line(a);r.push(I.widget({widget:new Ra(n.get(a)),block:!0,side:1}).range(l.to))}catch(l){}}),I.set(r,!0)}}return i},provide:i=>W.decorations.from(i)}),Em=class extends at{constructor(t){super();this.value=t}toDOM(){let t=document.createElement("div");return t.textContent=`${this.value}`,t.style.cssText=`
`,t}},yA=Te.define({create(){return F.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Dn.showMessage)){if(t.value===null||!t.value)return F.none;if(t.value.toggle){let r=[],n=new Map;return i.between(0,e.state.doc.length,(a,l,c)=>{try{let h=e.state.doc.lineAt(l).number;c.spec.widget instanceof Ua&&n.set(h,c.spec.widget.message)}catch(h){}}),n.has(t.value.line)?n.delete(t.value.line):n.set(t.value.line,t.value.msg),Array.from(n.keys()).sort((a,l)=>a-l).forEach(a=>{try{let l=e.state.doc.line(a);r.push(F.widget({widget:new Ua(n.get(a)),block:!0,side:1}).range(l.to))}catch(l){}}),F.set(r,!0)}}return i},provide:i=>W.decorations.from(i)}),qm=class extends at{constructor(t){super();this.value=t}toDOM(){let t=document.createElement("div");return t.textContent=`${this.value}`,t.style.cssText=`
color: #ccccff;
background-color: #000066;
display: inline-block;
`,t.className="cm-line",t}},Iy=ae.define(),rA=Te.define({create(){return I.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Iy)){if(t.value===null||!t.value)return I.none;let r=e.state.doc.lineAt(t.value.range.to);return I.set([I.widget({widget:new Em(t.value.val),block:!0,side:1}).range(r.to)])}return i},provide:i=>W.decorations.from(i)}),Fy=ae.define(),nA=I.mark({attributes:{class:"cm-error-span"}}),sA=Te.define({create(){return I.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Fy)){if(t.value===null)return I.none;let r=[];for(let n of t.value)try{let s=e.state.doc.line(n.line),o=s.from+n.start,a=s.from+n.end;o>=s.from&&a<=s.to&&o<a&&r.push(nA.range(o,a))}catch(s){}return I.set(r,!0)}return i},provide:i=>W.decorations.from(i)}),By=ae.define(),oA=I.line({attributes:{class:"highlight-lines"}}),aA=Te.define({create(){return I.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(By)){if(t.value===null)return I.none;let{start:r,end:n}=t.value,s=[];for(let o=r;o<=n;o++)try{let a=e.state.doc.line(o);s.push(oA.range(a.from))}catch(a){}return I.set(s)}return i!==I.none&&(e.docChanged||e.selection)?I.none:i},provide:i=>W.decorations.from(i)}),Gy={field:iA,widget:Ra},Za={effect:qy,decoration:Dy,field:tA},Ih={effect:Iy,field:rA},Fh={effect:Fy,field:sA},Bh={effect:By,field:aA},Ny=ae.define(),lA=I.line({attributes:{class:"cm-traced-line"}}),cA=Te.define({create(){return I.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Ny)){let r=[];for(let n of t.value)try{let s=e.state.doc.line(n);r.push(lA.range(s.from))}catch(s){}return I.set(r,!0)}return i},provide:i=>W.decorations.from(i)}),Gh={effect:Ny,field:cA};var hA=[...tf(eQ,ef),{key:"Mod-Shift-Backspace",run:Kc}],Jy=tf(hv,ef),Ua=64,e$=ae.define(),t$=ae.define(),zm=Te.define({create(){return new Map},update(i,e){let t=i;for(let r of e.effects)if(r.is(t$))t=new Map;else if(r.is(e$)){t===i&&(t=new Map(i));for(let n of r.value)t.set(n.id,{from:n.from,to:n.to})}if(!e.changes.empty){let r=new Map;for(let[n,s]of t)r.set(n,{from:e.changes.mapPos(s.from,-1),to:e.changes.mapPos(s.to,1)});return r}return t}}),OA=200,Ym={default:{theme:Yh},6502:{isAsm:!0},z80:{isAsm:!0},jsasm:{isAsm:!0},gas:{isAsm:!0},vasm:{isAsm:!0},inform6:{theme:zh},dialog:{theme:zh,lineWrap:!0},markdown:{lineWrap:!0},fastbasic:{noGutters:!0},basic:{noGutters:!0},ecs:{theme:Yh}},i$={input:null};function r$(i){i$.input=i?e=>e.toUpperCase():null}var Ca=class Ca{constructor(e,t){this.updateTimer=null;this.dirtylisting=!0;this.refreshDelayMsec=300;this.probe=null;this.path=e,this.mode=t}createDiv(e){var t=document.createElement("div");t.setAttribute("class","editor"),e.appendChild(t);var r=te.getFile(this.path),n=r&&this.mode=="verilog"&&/__asm\b([\s\S]+?)\b__endasm\b/.test(r);return this.newEditor(t,r,n),this.editor.dispatch({effects:_y(i$)}),te.getToolForFilename(this.path).startsWith("remote:")&&(this.refreshDelayMsec=1e3),t}setVisible(e){e?(this.editor.focus(),Ca.tracingEnabled&&this.startTracing()):this.stopTracing()}getShortcuts(){if(!this.editor)return[];var e=this.editor,t=(r,n,s)=>({key:r,label:n,fn:()=>{s(e),e.focus()}});return[t("mod+f","Find",$h),t("mod+g","Find Next",Ds),t("mod+d","Next Occurrence",Op),t("mod+shift+backspace","Delete Line",Kc),t("mod+/","Toggle Comment",Ud),t("mod+z","Undo",oa),t("mod+shift+z","Redo",Us)]}startTracing(){!this.probe&&Q.startProbing&&(this.probe=Q.startProbing(),this.probe.singleFrame=!1,this.probe.clear())}stopTracing(){this.probe&&(Q.stopProbing(),this.probe=null),this.editor.dispatch({effects:Gh.effect.of([])})}setTracingEnabled(e){Ca.tracingEnabled=e,e?this.startTracing():this.stopTracing()}newEditor(e,t,r){var n=Ym[this.mode]||Ym.default,s=r||n.isAsm,o=!!n.lineWrap,a=n.theme||Ym.default.theme,l=n.useLineNumbers&&!Bs;ie.embed&&(l=!1,s=!1);let c=n.noGutters||Bs;var h;let O=Tm[this.mode];O?h=O.language:(console.warn("Unknown mode: "+this.mode),h=null),this.editor=new W({parent:e,doc:t,extensions:[s?[]:Si.of(" "),s?gd.of((f,u)=>{let p=f.state.doc.lineAt(u).number;if(p>=0){let m=f.state.doc.line(p);if(m.text.trim())return f.lineIndent(m.from)}return 0}):[],...s?[Bt.of(oQ(()=>Ys().tabsToSpaces))]:[],...hQ(Ys()),Bt.of(hA),l?yc():[],yS(),Bt.of(kS),jx(),ex(),ve.allowMultipleSelections.of(!0),Sc(),Mx(),Bx(),vc(),wc(),Qc(),cx(),yh(),fp({top:!0}),Bt.of(Jy),h||[],a,Xm,o?W.lineWrapping:[],Za.field,c?[]:[jh.field,jh.gutter],s&&!c?[_a.field,_a.gutter,qh.field,qh.gutter]:[],Dh.field,jy.gutter,W.updateListener.of(f=>{for(let u of f.transactions.flatMap(p=>p.effects))if(u.is(Dh.set)&&Q.isRunning()&&this.runToBreakpoints(f.state),u.is(Gs.runToLine)){let p=u.value;if(this.sourcefile&&this.sourcefile.line2offset){let m=this.sourcefile.line2offset[p];m>=0&&Dn([m])}}}),qn.field,Gy.field,Fh.field,Gs.field,Gs.gutter,Bh.field,Gh.field,zm,Ty(f=>{window.location.hash="asseteditor/"+encodeURIComponent(this.path)+"/"+f}),ie.embed?[]:Xy(()=>{var f=te&&te.getToolForFilename(this.path),u=te&&te.platform_id;return[...vl(f,u), Line truncated
`).length-1;this.editor.dispatch({changes:{from:n,insert:e}}),this.highlightLines(r-1,r+s-2)}highlightLines(e,t){let r=this.editor.state.doc.line(e+1);this.editor.dispatch({effects:[Bh.effect.of({start:e+1,end:t+1}),W.scrollIntoView(r.from,{y:"start",yMargin:100})]})}navigateToLine(e){if(e<1||e>this.editor.state.doc.lines)return;let t=this.editor.state.doc.line(e);this.editor.dispatch({selection:{anchor:t.from},effects:[Bh.effect.of({start:e,end:e}),W.scrollIntoView(t.from,{y:"center"})]}),this.editor.focus()}getValue(){return this.editor.state.doc.toString()}getPath(){return this.path}markErrors(e){this.clearErrors(),e=e.slice(0,OA);let t=new Map,r=[];for(var n of e)if(!n.path||this.path.endsWith(n.path)){var s=this.editor.state.doc.lines,o=n.line;(isNaN(o)||o<1||o>s)&&(o=1),t.set(o,n.msg),n.start!=null&&n.end!=null&&n.end>n.start&&r.push({line:o,start:n.start,end:n.end})}this.editor.dispatch({effects:[qn.set.of(t),Fh.effect.of(r.length>0?r:null)]})}clearErrors(){this.dirtylisting=!0,this.editor.dispatch({effects:[qn.set.of(new Map),qn.showMessage.of(null),Fh.effect.of(null)]})}getSourceFile(){return this.sourcefile}updateListing(){this.clearErrors();var e=this.sourcefile.lines||[];let t=new Map,r=new Map,n=new Map;for(var s of e)if(s.offset>=0&&t.set(s.line,$e(s.offset&65535,4)),s.insns){var o=s.insns.length>9?"...":s.insns;if(r.set(s.line,o),s.iscode){if(s.cycles)n.set(s.line,s.cycles+"");else if(Q.getOpcodeMetadata){var a=parseInt(s.insns.split(" ")[0],16),l=Q.getOpcodeMetadata(a,s.offset);if(l&&l.minCycles){var c=l.minCycles+"";n.set(s.line,c)}}}}this.editor.dispatch({effects:[jh.set.of(t),_a.set.of(r),qh.set.of(n)]})}setTimingResult(e){if(this.sourcefile!=null){var t=new Map;for(let o of Object.keys(this.sourcefile.line2offset)){let a=this.sourcefile.line2offset[o],l=e.pc2clockrange[a];var r=l&&l.minclocks,n=l&&l.maxclocks;if(r>=0&&n>=0){var s;n==r?s=r+"":s=r+"-"+n,n==e.MAX_CLOCKS&&(s+="+"),t.set(parseInt(o),s)}}this.editor.dispatch({effects:[_a.set.of(t)]})}}setCurrentLine(e,t){var r=n=>{this.editor.dispatch({effects:[Gs.set.of(n.line),Za.effect.of(n.line),...t?[W.scrollIntoView(this.editor.state.doc.line(n.line).from,{y:"center"})]:[]]})};if(this.clearCurrentLine(t),e){if(e.line<1||e.line>this.editor.state.doc.lines)return;if(r(e),t){let s=this.editor.state.doc.line(e.line).from+(e.start||0);this.editor.dispatch({selection:{anchor:s,head:s},effects:W.scrollIntoView(s,{y:"center"})})}this.currentDebugLine=e}}clearCurrentLine(e){if(this.currentDebugLine){if(e){let t=this.editor.state.selection.main.head;this.editor.dispatch({selection:{anchor:t,head:t}})}this.currentDebugLine=null}this.editor.dispatch({effects:[Gs.set.of(null),Za.effect.of(null)]})}getActiveLine(){if(this.sourcefile){var e=li&&li.c;if(!e&&Q.getCPUState&&!Q.isRunning()&&(e=Q.getCPUState()),e){var t=e&&(e.EPC||e.PC),r=this.sourcefile.findLineForOffset(t,Ua);return r}}}refreshDebugState(e){var t=this.getActiveLine();!e&&(t===this.currentDebugLine||!t&&!this.currentDebugLine)||this.setCurrentLine(t,e)}refreshListing(){var e=te.getListingForFile(this.path);e&&e.sourcefile&&e.sourcefile!==this.sourcefile&&(this.sourcefile=e.sourcefile,this.dirtylisting=!0),!(!this.sourcefile||!this.dirtylisting)&&(this.updateListing(),this.dirtylisting=!1)}refresh(e){this.refreshListing(),this.refreshDebugState(e)}tick(){this.refreshDebugState(!1),this.updateTracedLines()}updateTracedLines(){let e=this.probe;if(!e||!e.idx||!this.sourcefile)return;let t=new Set;for(let r=0;r<e.idx;r++){let n=e.buf[r];if((n&4278190080)===16777216){let s=this.sourcefile.findLineForOffset(n&65535,Ua);s&&t.add(s.line)}}e.clear(),this.editor.dispatch({effects:Gh.effect.of(Array.from(t))})}getLine(e){return this.editor.state.doc.line(e).text}getCurrentLine(){let e=this.editor.state.selection.main.head;return this.editor.state.doc.lineAt(e).number}getCursorPC(){for(var e=this.getCurrentLine();this.sourcefile&&e>=0;){var t=this.sourcefile.line2offset[e];if(t>=0)return t;e--}return-1}undoStep(){oa(this.editor)}redoStep(){Us(this.editor)}getBreakpointPCs(){if(this.sourcefile==null)return[];let e=[],r=this.editor.state.field(Dh.field).iter();for(;r.value;){let n=this.editor.state.doc.lineAt(r.from).number,s=this.sourcefile.line2offset[n];s>=0&&e.push(s),r.next()}return e}runToBreakpoints(e){let t=this.getBreakpointPCs();t.length>0?Dn(t):In()}};Ca.tracingEnabled=!1;var ai=Ca,Mm=1024,Kr=class{createDiv(e){var t=document.createElement("div");return t.setAttribute("class","editor"),e.appendChild(t),this.newEditor(t),t}newEditor(e){this.disasmview=new W({parent:e,extensions:[vc(),wc(),ve.allowMultipleSelections.of(!0),Sc(),Qc(),yh(),$y,zh,Za.field,ve.tabSize.of(8),ve.readOnly.of(!0)]})}refresh(e,t){let r=li||Q.saveState(),n=t!==void 0?t:r.c?r.c.PC:0,s=0,o=0,a=Q.debugSymbols&&Q.debugSymbols.addr2symbol||{},l=(O,f)=>{let u="",p=0;for(;p<f;){let m=O+p|0,S=Q.disassemble(m,Q.readAddress.bind(Q)),w="",C="";for(let k=0;k<S.nbytes;k++)w+=$e(Q.readAddress(m+k));for(;w.length<14;)w+=" ";let R=S.line Line truncated
`;u+=A,m==n&&(o=s),s++,p+=S.nbytes||1}return u};var c=n<0?n-Mm:Math.max(0,n-Mm);let h=l(c,n-c)+l(n,Mm);if(this.disasmview.dispatch({changes:{from:0,to:this.disasmview.state.doc.length,insert:h}}),e){let O=this.disasmview.state.doc.line(o+1);this.disasmview.dispatch({selection:{anchor:O.from,head:O.from},effects:W.scrollIntoView(O.from,{y:"center"})})}}goToAddress(e){e|=0,this.findAndSelectAddress(e)||(this.refresh(!1,e),this.findAndSelectAddress(e)),this.disasmview.focus()}findAndSelectAddress(e){let t=$e(e,4),r=this.disasmview.state.doc;for(let n=1;n<=r.lines;n++){let s=r.line(n);if(s.text.startsWith(t+" "))return this.disasmview.dispatch({selection:{anchor:s.from,head:s.from+t.length},effects:W.scrollIntoView(s.from,{y:"center"})}),!0}return!1}getCursorPC(){let e=this.disasmview.state.selection.main.head,t=this.disasmview.state.doc.lineAt(e).number;if(t>=0){let n=this.disasmview.state.doc.line(t).text.trim().split(/\s+/);if(n&&n.length>=1){let s=parseInt(n[0],16);if(console.log("getCursorPC",s),s>=0)return s}}return-1}},Nh=class extends Kr{constructor(e){super(),this.path=e}refreshListing(){var e=te.getListingForFile(this.path);this.assemblyfile=e&&(e.assemblyfile||e.sourcefile)}refresh(e){if(this.refreshListing(),!!this.assemblyfile){var t=this.assemblyfile.text;if(this.disasmview.dispatch({changes:{from:0,to:this.disasmview.state.doc.length,insert:t}}),!!Q.saveState){var r=li||Q.saveState(),n=r.c?r.c.EPC||r.c.PC:0;if(n>=0&&this.assemblyfile){var s=this.assemblyfile.findLineForOffset(n,Ua);if(s&&e){let o=this.disasmview.state.doc.line(s.line);this.disasmview.dispatch({selection:{anchor:o.from,head:o.from},effects:W.scrollIntoView(o.from,{y:"center"})})}}}}}};function n$(i){let e=[i];try{var t=Qo(te.mainPath);t.length>0&&t!="local"&&e.push(t+"/"+i)}catch(s){}for(var r of e){var n=te&&te.getFile(r);if(typeof n=="string")return r}return null}function Hy(i){for(var e of zg(i))if(e.editorStyle){var t=yy(e.editorStyle);if(t)return t}return null}var Lm=new Map;function fA(i){let e=te.getToolForFilename(te.mainPath),t=$l(e,te.platform_id),r=yl(e,te.platform_id);if(!t||!r.length)return Promise.resolve(null);let n=t+":"+i;return Lm.has(n)||Lm.set(n,(async()=>{var s=[...r.map(h=>h+"/"+i),i];for(var o of s){var a={preload_fs:t,readshared:o,updates:[],buildsteps:[]},l=await te.queryWorker(a),c=l&&l.output;if(c instanceof Uint8Array&&c.length>0)return new TextDecoder().decode(c)}return null})()),Lm.get(n)}var Jr=class{constructor(e){this.fn=e;this.languageCompartment=new bt}createDiv(e){var t=document.createElement("div");t.setAttribute("class","editor"),e.appendChild(t);var r=Hy(this.fn||this.currentPath||"")||pa();return this.view=new W({parent:t,extensions:[vc(),wc(),ve.allowMultipleSelections.of(!0),Sc(),Qc(),yh(),fp({top:!0}),Bt.of(Jy),this.languageCompartment.of(r),Yh,Xm,ve.readOnly.of(!0)]}),this.refresh(!1),t}setVisible(e){e&&this.refresh(!1)}setHeaderText(e){var t=Hy(this.currentPath||this.fn||"")||pa();this.view.dispatch({effects:this.languageCompartment.reconfigure(t),changes:{from:0,to:this.view.state.doc.length,insert:e}})}refresh(e){var t=this.fn;if(!t){var r=window.location.hash;if(!r||!r.startsWith("#headerview/"))return;t=this.fn=decodeURIComponent(r.substring(12))}this.loadIncludeFile(t)}async loadIncludeFile(e){this.requestedFn=e;var t=n$(e);if(t){this.currentPath=t,this.setHeaderText(te.getFile(t));return}var r=await fA(e);if(this.requestedFn===e){if(r!=null){this.currentPath=e,this.setHeaderText(r);return}this.currentPath=e,this.setHeaderText("// "+e+` was not found.
`,t.className="cm-line",t}},s$=ae.define(),$A=Te.define({create(){return F.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(s$)){if(t.value===null||!t.value)return F.none;let r=e.state.doc.lineAt(t.value.range.to);return F.set([F.widget({widget:new qm(t.value.val),block:!0,side:1}).range(r.to)])}return i},provide:i=>W.decorations.from(i)}),o$=ae.define(),PA=F.mark({attributes:{class:"cm-error-span"}}),kA=Te.define({create(){return F.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(o$)){if(t.value===null)return F.none;let r=[];for(let n of t.value)try{let s=e.state.doc.line(n.line),o=s.from+n.start,a=s.from+n.end;o>=s.from&&a<=s.to&&o<a&&r.push(PA.range(o,a))}catch(s){}return F.set(r,!0)}return i},provide:i=>W.decorations.from(i)}),a$=ae.define(),TA=F.line({attributes:{class:"highlight-lines"}}),XA=Te.define({create(){return F.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(a$)){if(t.value===null)return F.none;let{start:r,end:n}=t.value,s=[];for(let o=r;o<=n;o++)try{let a=e.state.doc.line(o);s.push(TA.range(a.from))}catch(a){}return F.set(s)}return i!==F.none&&(e.docChanged||e.selection)?F.none:i},provide:i=>W.decorations.from(i)}),l$={field:yA,widget:Ua},Aa={effect:r$,decoration:n$,field:wA},Gh={effect:s$,field:$A},Hh={effect:o$,field:kA},Kh={effect:a$,field:XA},c$=ae.define(),_A=F.line({attributes:{class:"cm-traced-line"}}),RA=Te.define({create(){return F.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(c$)){let r=[];for(let n of t.value)try{let s=e.state.doc.line(n);r.push(_A.range(s.from))}catch(s){}return F.set(r,!0)}return i},provide:i=>W.decorations.from(i)}),Jh={effect:c$,field:RA};var CA=[...au(lv,ou),{key:"Mod-Shift-Backspace",run:eh}],u$=au(bQ,ou),Gs=64,f$=ae.define(),d$=ae.define(),Dm=Te.define({create(){return new Map},update(i,e){let t=i;for(let r of e.effects)if(r.is(d$))t=new Map;else if(r.is(f$)){t===i&&(t=new Map(i));for(let n of r.value)t.set(n.id,{from:n.from,to:n.to})}if(!e.changes.empty){let r=new Map;for(let[n,s]of t)r.set(n,{from:e.changes.mapPos(s.from,-1),to:e.changes.mapPos(s.to,1)});return r}return t}}),ZA=200,Im={default:{theme:Lh},6502:{isAsm:!0},z80:{isAsm:!0},jsasm:{isAsm:!0},gas:{isAsm:!0},vasm:{isAsm:!0},inform6:{theme:Mh},dialog:{theme:Mh,lineWrap:!0},markdown:{lineWrap:!0},fastbasic:{noGutters:!0},basic:{noGutters:!0},ecs:{theme:Lh}},p$={input:null};function m$(i){p$.input=i?e=>e.toUpperCase():null}var Ea=class Ea{constructor(e,t){this.updateTimer=null;this.dirtylisting=!0;this.refreshDelayMsec=300;this.probe=null;this.path=e,this.mode=t}createDiv(e){var t=document.createElement("div");t.setAttribute("class","editor"),e.appendChild(t);var r=K.getFile(this.path),n=r&&this.mode=="verilog"&&/__asm\b([\s\S]+?)\b__endasm\b/.test(r);return this.newEditor(t,r,n),this.editor.dispatch({effects:Wy(p$)}),this.syncBreakpoints(),K.getToolForFilename(this.path).startsWith("remote:")&&(this.refreshDelayMsec=1e3),t}setVisible(e){e?(this.editor.focus(),Ea.tracingEnabled&&this.startTracing()):this.stopTracing()}getShortcuts(){if(!this.editor)return[];var e=this.editor,t=(r,n,s)=>({key:r,label:n,fn:()=>{s(e),e.focus()}});return[t("mod+f","Find",kh),t("mod+g","Find Next",Ds),t("mod+d","Next Occurrence",gp),t("mod+shift+backspace","Delete Line",eh),t("mod+/","Toggle Comment",Ld),t("mod+z","Undo",la),t("mod+shift+z","Redo",Us)]}startTracing(){!this.probe&&v.startProbing&&(this.probe=v.startProbing(),this.probe.singleFrame=!1,this.probe.clear())}stopTracing(){this.probe&&(v.stopProbing(),this.probe=null),this.editor.dispatch({effects:Jh.effect.of([])})}setTracingEnabled(e){Ea.tracingEnabled=e,e?this.startTracing():this.stopTracing()}newEditor(e,t,r){var n=Im[this.mode]||Im.default,s=r||n.isAsm,o=!!n.lineWrap,a=n.theme||Im.default.theme,l=n.useLineNumbers&&!Bs;ie.embed&&(l=!1,s=!1);let c=n.noGutters||Bs;var h;let O=Um[this.mode];O?h=O.language:(console.warn("Unknown mode: "+this.mode),h=null),this.editor=new W({parent:e,doc:t,extensions:[s?[]:Qi.of(" "),s?wd.of((u,f)=>{let p=u.state.doc.lineAt(f).number;if(p>=0){let m=u.state.doc.line(p);if(m.text.trim())return u.lineIndent(m.from)}return 0}):[],...s?[Gt.of(dv(()=>Ys().tabsToSpaces))]:[],...bv(Ys()),Gt.of(CA),l?Pc():[],CS(),Gt.of(AS),Hx(),lx(),we.allowMultipleSelections.of(!0),Qc(),Fx(),iS(),yc(),$c(),wc(),gx(),Ph(),bp({top:!0}),Gt.of(u$),h||[],a,Am,o?W.lineWrapping:[],Aa.field,c?[]:[Fh.field,Fh.gutter],s&&!c?[Za.field,Za.gutter,Bh.field,Bh.gutter]:[],Nh.field,i$.gutter,W.updateListener.of(u=>{for(let f of u.transactions.flatMap(p=>p.effects))if(f.is(Nh.requestToggle)&&Qt.toggleSourceLine(this.path,f.value),f.is(Ns.runToLine)){let p=f.value;if(this.sourcefile&&this.sourcefile.line2offset){let m=this.sourcefile.line2offset[p];m>=0&&Ya([m])}}}),Dn.field,l$.field,Hh.field,Ns.field,Ns.gutter,Kh.field,Jh.field,Dm,My(u=>{window.location.hash="asseteditor/"+encodeURIComponent(this.path)+"/"+u}),ie.embed?[]:Ly(()=>{var u=K&&K.getToolForFilename(this.path),f=K&&K.platform_i Line truncated
`).length-1;this.editor.dispatch({changes:{from:n,insert:e}}),this.highlightLines(r-1,r+s-2)}highlightLines(e,t){let r=this.editor.state.doc.line(e+1);this.editor.dispatch({effects:[Kh.effect.of({start:e+1,end:t+1}),W.scrollIntoView(r.from,{y:"start",yMargin:100})]})}navigateToLine(e){if(e<1||e>this.editor.state.doc.lines)return;let t=this.editor.state.doc.line(e);this.editor.dispatch({selection:{anchor:t.from},effects:[Kh.effect.of({start:e,end:e}),W.scrollIntoView(t.from,{y:"center"})]}),this.editor.focus()}getValue(){return this.editor.state.doc.toString()}getPath(){return this.path}markErrors(e){this.clearErrors(),e=e.slice(0,ZA);let t=new Map,r=[];for(var n of e)if(!n.path||this.path.endsWith(n.path)){var s=this.editor.state.doc.lines,o=n.line;(isNaN(o)||o<1||o>s)&&(o=1),t.set(o,n.msg),n.start!=null&&n.end!=null&&n.end>n.start&&r.push({line:o,start:n.start,end:n.end})}this.editor.dispatch({effects:[Dn.set.of(t),Hh.effect.of(r.length>0?r:null)]})}clearErrors(){this.dirtylisting=!0,this.editor.dispatch({effects:[Dn.set.of(new Map),Dn.showMessage.of(null),Hh.effect.of(null)]})}getSourceFile(){return this.sourcefile}updateListing(){this.clearErrors();var e=this.sourcefile.lines||[];let t=new Map,r=new Map,n=new Map;for(var s of e)if(s.offset>=0&&t.set(s.line,ve(s.offset&65535,4)),s.insns){var o=s.insns.length>9?"...":s.insns;if(r.set(s.line,o),s.iscode){if(s.cycles)n.set(s.line,s.cycles+"");else if(v.getOpcodeMetadata){var a=parseInt(s.insns.split(" ")[0],16),l=v.getOpcodeMetadata(a,s.offset);if(l&&l.minCycles){var c=l.minCycles+"";n.set(s.line,c)}}}}this.editor.dispatch({effects:[Fh.set.of(t),Za.set.of(r),Bh.set.of(n)]})}setTimingResult(e){if(this.sourcefile!=null){var t=new Map;for(let o of Object.keys(this.sourcefile.line2offset)){let a=this.sourcefile.line2offset[o],l=e.pc2clockrange[a];var r=l&&l.minclocks,n=l&&l.maxclocks;if(r>=0&&n>=0){var s;n==r?s=r+"":s=r+"-"+n,n==e.MAX_CLOCKS&&(s+="+"),t.set(parseInt(o),s)}}this.editor.dispatch({effects:[Za.set.of(t)]})}}setCurrentLine(e,t){var r=n=>{this.editor.dispatch({effects:[Ns.set.of(n.line),Aa.effect.of(n.line),...t?[W.scrollIntoView(this.editor.state.doc.line(n.line).from,{y:"center"})]:[]]})};if(this.clearCurrentLine(t),e){if(e.line<1||e.line>this.editor.state.doc.lines)return;if(r(e),t){let s=this.editor.state.doc.line(e.line).from+(e.start||0);this.editor.dispatch({selection:{anchor:s,head:s},effects:W.scrollIntoView(s,{y:"center"})})}this.currentDebugLine=e}}clearCurrentLine(e){if(this.currentDebugLine){if(e){let t=this.editor.state.selection.main.head;this.editor.dispatch({selection:{anchor:t,head:t}})}this.currentDebugLine=null}this.editor.dispatch({effects:[Ns.set.of(null),Aa.effect.of(null)]})}getActiveLine(){if(this.sourcefile){var e=wt&&wt.c;if(!e&&v.getCPUState&&!v.isRunning()&&(e=v.getCPUState()),e){var t=e&&(e.EPC||e.PC),r=this.sourcefile.findLineForOffset(t,Gs);return r}}}refreshDebugState(e){var t=this.getActiveLine();!e&&(t===this.currentDebugLine||!t&&!this.currentDebugLine)||this.setCurrentLine(t,e)}refreshListing(){var e=K.getListingForFile(this.path);e&&e.sourcefile&&e.sourcefile!==this.sourcefile&&(this.sourcefile=e.sourcefile,this.dirtylisting=!0),!(!this.sourcefile||!this.dirtylisting)&&(this.updateListing(),this.dirtylisting=!1)}refresh(e){this.refreshListing(),this.refreshDebugState(e)}tick(){this.refreshDebugState(!1),this.updateTracedLines()}updateTracedLines(){let e=this.probe;if(!e||!e.idx||!this.sourcefile)return;let t=new Set;for(let r=0;r<e.idx;r++){let n=e.buf[r];if((n&4278190080)===16777216){let s=this.sourcefile.findLineForOffset(n&65535,Gs);s&&t.add(s.line)}}e.clear(),this.editor.dispatch({effects:Jh.effect.of(Array.from(t))})}getLine(e){return this.editor.state.doc.line(e).text}getCurrentLine(){let e=this.editor.state.selection.main.head;return this.editor.state.doc.lineAt(e).number}getCursorPC(){for(var e=this.getCurrentLine();this.sourcefile&&e>=0;){var t=this.sourcefile.line2offset[e];if(t>=0)return t;e--}return-1}undoStep(){la(this.editor)}redoStep(){Us(this.editor)}syncBreakpoints(){let e=Qt.getSourceBreakpointsForFile(this.path).map(t=>({line:t.line,enabled:t.enabled}));this.editor.dispatch({effects:Nh.setAll.of(e)})}};Ea.tracingEnabled=!1;var ei=Ea,Fm=1024,$r=class{createDiv(e){var t=document.createElement("div");return t.setAttribute("class","editor"),e.appendChild(t),this.newEditor(t),t}newEditor(e){this.disasmview=new W({parent:e,extensions:[yc(),$c(),we.allowMultipleSelections.of(!0),Qc(),wc(),Ph(),Zy,Mh,Aa.field,we.tabSize.of(8),we.readOnly.of(!0)]})}refresh(e,t){let r=wt||v.saveState(),n=t!==void 0?t:r.c?r.c.PC:0,s=0,o=0,a=v.debugSymbols&&v.debugSymbols.addr2symbol||{},l=(O,u)=>{let f="",p=0;for(;p<u;){let m=O+p|0,S=v.disassemble(m,v.readAddress.bind(v)),w="",Z="";for(let k=0;k<S.nbytes;k++)w+=ve(v.readAddress(m+k));for(;w.length<14;)w+=" ";let R=S.line;if(a&&S.isaddr&&(R=R.replace(/([^#])[$]([0-9A-F]+)/,(k,...P)=>{let C=parseInt(P[1],16),z=a[C];return z?P[0]+z:(z=a[C-1],z?P[0]+z+"+1":k)})),a){let k=a[m] Line truncated
`;f+=A,m==n&&(o=s),s++,p+=S.nbytes||1}return f};var c=n<0?n-Fm:Math.max(0,n-Fm);let h=l(c,n-c)+l(n,Fm);if(this.disasmview.dispatch({changes:{from:0,to:this.disasmview.state.doc.length,insert:h}}),e){let O=this.disasmview.state.doc.line(o+1);this.disasmview.dispatch({selection:{anchor:O.from,head:O.from},effects:W.scrollIntoView(O.from,{y:"center"})})}}goToAddress(e){e|=0,this.findAndSelectAddress(e)||(this.refresh(!1,e),this.findAndSelectAddress(e)),this.disasmview.focus()}findAndSelectAddress(e){let t=ve(e,4),r=this.disasmview.state.doc;for(let n=1;n<=r.lines;n++){let s=r.line(n);if(s.text.startsWith(t+" "))return this.disasmview.dispatch({selection:{anchor:s.from,head:s.from+t.length},effects:W.scrollIntoView(s.from,{y:"center"})}),!0}return!1}getCursorPC(){let e=this.disasmview.state.selection.main.head,t=this.disasmview.state.doc.lineAt(e).number;if(t>=0){let n=this.disasmview.state.doc.line(t).text.trim().split(/\s+/);if(n&&n.length>=1){let s=parseInt(n[0],16);if(console.log("getCursorPC",s),s>=0)return s}}return-1}},eO=class extends $r{constructor(e){super(),this.path=e}refreshListing(){var e=K.getListingForFile(this.path);this.assemblyfile=e&&(e.assemblyfile||e.sourcefile)}refresh(e){if(this.refreshListing(),!!this.assemblyfile){var t=this.assemblyfile.text;if(this.disasmview.dispatch({changes:{from:0,to:this.disasmview.state.doc.length,insert:t}}),!!v.saveState){var r=wt||v.saveState(),n=r.c?r.c.EPC||r.c.PC:0;if(n>=0&&this.assemblyfile){var s=this.assemblyfile.findLineForOffset(n,Gs);if(s&&e){let o=this.disasmview.state.doc.line(s.line);this.disasmview.dispatch({selection:{anchor:o.from,head:o.from},effects:W.scrollIntoView(o.from,{y:"center"})})}}}}}goToAddress(e){this.refreshListing();let t=this.assemblyfile&&this.assemblyfile.findLineForOffset(e,Gs);if(t){let r=this.disasmview.state.doc.line(t.line);this.disasmview.dispatch({selection:{anchor:r.from,head:r.from},effects:W.scrollIntoView(r.from,{y:"center"})})}this.disasmview.focus()}};function g$(i){let e=[i];try{var t=wo(K.mainPath);t.length>0&&t!="local"&&e.push(t+"/"+i)}catch(s){}for(var r of e){var n=K&&K.getFile(r);if(typeof n=="string")return r}return null}function h$(i){for(var e of Dg(i))if(e.editorStyle){var t=Cy(e.editorStyle);if(t)return t}return null}var Bm=new Map;function UA(i){let e=K.getToolForFilename(K.mainPath),t=kl(e,K.platform_id),r=Pl(e,K.platform_id);if(!t||!r.length)return Promise.resolve(null);let n=t+":"+i;return Bm.has(n)||Bm.set(n,(async()=>{var s=[...r.map(h=>h+"/"+i),i];for(var o of s){var a={preload_fs:t,readshared:o,updates:[],buildsteps:[]},l=await K.queryWorker(a),c=l&&l.output;if(c instanceof Uint8Array&&c.length>0)return new TextDecoder().decode(c)}return null})()),Bm.get(n)}var en=class{constructor(e){this.fn=e;this.languageCompartment=new bt}createDiv(e){var t=document.createElement("div");t.setAttribute("class","editor"),e.appendChild(t);var r=h$(this.fn||this.currentPath||"")||ga();return this.view=new W({parent:t,extensions:[yc(),$c(),we.allowMultipleSelections.of(!0),Qc(),wc(),Ph(),bp({top:!0}),Gt.of(u$),this.languageCompartment.of(r),Lh,Am,we.readOnly.of(!0)]}),this.refresh(!1),t}setVisible(e){e&&this.refresh(!1)}setHeaderText(e){var t=h$(this.currentPath||this.fn||"")||ga();this.view.dispatch({effects:this.languageCompartment.reconfigure(t),changes:{from:0,to:this.view.state.doc.length,insert:e}})}refresh(e){var t=this.fn;if(!t){var r=window.location.hash;if(!r||!r.startsWith("#headerview/"))return;t=this.fn=decodeURIComponent(r.substring(12))}this.loadIncludeFile(t)}async loadIncludeFile(e){this.requestedFn=e;var t=g$(e);if(t){this.currentPath=t,this.setHeaderText(K.getFile(t));return}var r=await UA(e);if(this.requestedFn===e){if(r!=null){this.currentPath=e,this.setHeaderText(r);return}this.currentPath=e,this.setHeaderText("// "+e+` was not found.
// Project include files are loaded during a build -- try building first.
// Toolchain headers are only available when the tool has a bundled filesystem.`)}}navigateToLine(e){if(!(!this.view||e<1)&&e<=this.view.state.doc.lines){let t=this.view.state.doc.line(e);this.view.dispatch({selection:{anchor:t.from},effects:[W.scrollIntoView(t.from,{y:"center"})]}),this.view.focus()}}};var Fn=class{constructor(e){var t=document.createElement("div");t.setAttribute("class","memdump"),e.appendChild(t),this.maindiv=t}create(e,t,r){this.getLineAt=r,this.memorylist=new Ql({w:$(e).width(),h:$(e).height(),itemHeight:Wm(),totalRows:t,generatorFn:n=>{var s=r(n),o=document.createElement("div");return o.appendChild(document.createTextNode(s.text)),s.clas!=null&&(o.className=s.clas),o}}),$(this.maindiv).append(this.memorylist.container)}refresh(){this.memorylist&&$(this.maindiv).find("[data-index]").each((e,t)=>{var r=t,n=parseInt(r.getAttribute("data-index")),s=r.innerText,o=this.getLineAt(n),a=o.text;if(s!=a&&(r.innerText=a,o.clas!=null&&!r.classList.contains(o.clas))){var l=Array.from(r.classList);l.forEach(c=>r.classList.remove(c)),r.classList.add("vrow"),r.classList.add(o.clas)}})}};function Wm(){return $("#booksMenuButton").first().height()}function s$(i){return i.endsWith("_SIZE__")||i.endsWith("_LAST__")||i.endsWith("STACKSIZE__")||i.endsWith("FILEOFFS__")||i.startsWith("l__")||i.startsWith("s__")||i.startsWith(".__.")}var en=class{constructor(){this.recreateOnResize=!0;this.hibits=0;this.totalRows=5120;this.gotoRow=-1}createDiv(e){var t=document.createElement("div");return t.setAttribute("class","memdump"),e.appendChild(t),this.showMemoryWindow(e,t),this.maindiv=t}showMemoryWindow(e,t){this.memorylist=new Ql({w:$(e).width(),h:$(e).height(),itemHeight:Wm(),totalRows:this.totalRows,generatorFn:n=>{var s=this.getMemoryLineAt(n),o=document.createElement("div");if(this.dumplines){var a=this.dumplines[n];a&&o.classList.add("seg_"+this.getMemorySegment(this.dumplines[n].a|this.hibits))}return n==this.gotoRow&&o.classList.add("goto_line"),o.appendChild(document.createTextNode(s)),o}}),$(t).append(this.memorylist.container),this.tick();let r=Oa();r&&this.dumplines&&this.scrollToAddress(r.data_start)}scrollToAddress(e){this.dumplines&&(this.hibits=e&4294901760,this.memorylist.scrollToItem(this.findMemoryWindowLine(e&65535)))}goToAddress(e){this.hibits=e&4294901760;var t=this.getDumpLines(),r;if(t&&t.length?r=this.findMemoryWindowLine(e&65535):r=(e&65535)>>4,r!==void 0){if(this.gotoRow=r,this.memorylist){var n=this.memorylist.container,s=r*this.memorylist.itemHeight-(n.clientHeight-this.memorylist.itemHeight)/2;n.scrollTop=Math.max(0,s)}this.tick()}}refresh(){this.dumplines=null,this.tick()}tick(){this.memorylist&&$(this.maindiv).find("[data-index]").each((e,t)=>{var r=$(t),n=parseInt(r.attr("data-index")),s=r.text(),o=this.getMemoryLineAt(n);s!=o&&r.text(o),r.toggleClass("goto_line",n==this.gotoRow)})}getMemoryLineAt(e){var t=e*16,r=0,n=16,s;if(this.getDumpLines()){var o=this.dumplines[e];if(o)t=o.a&65520,r=o.a-t,n=r+o.l,s=o.s;else return"."}for(var a=$e(t+r,4)+" ",l=0;l<r;l++)a+=" ";r>8&&(a+=" ");for(var l=r;l<n;l++){var c=this.readAddress(t+l|this.hibits);l==8&&(a+=" "),a+=" "+(typeof c=="number"?$e(c,2):"??")}for(var l=n;l<16;l++)a+=" ";return s&&(a+=" "+s),a}readAddress(e){return Q.readAddress(e)}getDumpLineAt(e){var t=this.dumplines[e];if(t)return t.a+" "+t.s}getDumpLines(){var e=Q.debugSymbols&&Q.debugSymbols.addr2symbol||{};if(this.dumplines==null){this.dumplines=[];var t=0,r;for(let a of Object.keys(e)){var n=parseInt(a),s=e[n|this.hibits];if(r)for(s$(r)&&(r="");t<n&&this.dumplines.length<65536;){var o=t+16&1048560;o>n&&(o=n),this.dumplines.push({a:t,l:o-t,s:r}),t=o}r=s}}return this.dumplines}getMemorySegment(e){let t=Oa();if(t){if(e>=t.data_start&&e<t.data_start+t.data_size)return Q.getSP&&e>=Q.getSP()-15?"stack":"data";if(e>=t.code_start&&e<t.code_start+(t.code_size||t.rom_size))return"code"}var r=te.segments;if(r){for(var n of r)if(e>=n.start&&e<n.start+n.size){if(n.type=="rom")return"code";if(n.type=="ram")return"data";if(n.type=="io")return"io"}}return"unknown"}findMemoryWindowLine(e){for(var t=0;t<this.dumplines.length;t++)if(this.dumplines[t].a>=e)return t}},Hh=class extends en{constructor(){super(...arguments);this.totalRows=2048}readAddress(t){return Q.readVRAMAddress(t)}getMemorySegment(t){return"video"}getDumpLines(){return null}},Ea=class{constructor(e,t){this.recreateOnResize=!0;this.path=e,this.data=t}populateVlist(){$(this.vlist.maindiv).empty(),this.vlist.create(this.parent,this.data.length+15>>4,this.getMemoryLineAt.bind(this))}createDiv(e){return this.parent=e,this.vlist=new Fn(this.parent),this.populateVlist(),this.vlist.maindiv}setData(e){this.data=e,this.populateVlist()}getMemoryLineAt(e){for(var t=e*16,r=0,n=16,s=$e(t+r,4)+" ",o=0;o<r;o++)s+=" ";r>8&&(s+=" ");for(var o=r;o<n;o++){var a=this.data[t+o];o==8&&(s+=" "),s+=" "+(a>=0?$e(a,2):" ")}return{text:s}}refresh(){this.vlist.refresh()}getPath(){return this.path}},Kh=class{createDiv(e){return this.maindiv=wr(e,"ver Line truncated
// Toolchain headers are only available when the tool has a bundled filesystem.`)}}navigateToLine(e){if(!(!this.view||e<1)&&e<=this.view.state.doc.lines){let t=this.view.state.doc.line(e);this.view.dispatch({selection:{anchor:t.from},effects:[W.scrollIntoView(t.from,{y:"center"})]}),this.view.focus()}}};var In=class{constructor(e){var t=document.createElement("div");t.setAttribute("class","memdump"),e.appendChild(t),this.maindiv=t}create(e,t,r){this.getLineAt=r,this.memorylist=new wl({w:$(e).width(),h:$(e).height(),itemHeight:Nm(),totalRows:t,generatorFn:n=>{var s=r(n),o=document.createElement("div");return o.appendChild(document.createTextNode(s.text)),s.clas!=null&&(o.className=s.clas),o}}),$(this.maindiv).append(this.memorylist.container)}refresh(){this.memorylist&&$(this.maindiv).find("[data-index]").each((e,t)=>{var r=t,n=parseInt(r.getAttribute("data-index")),s=r.innerText,o=this.getLineAt(n),a=o.text;if(s!=a&&(r.innerText=a,o.clas!=null&&!r.classList.contains(o.clas))){var l=Array.from(r.classList);l.forEach(c=>r.classList.remove(c)),r.classList.add("vrow"),r.classList.add(o.clas)}})}};function Nm(){return $("#booksMenuButton").first().height()}function b$(i){return i.endsWith("_SIZE__")||i.endsWith("_LAST__")||i.endsWith("STACKSIZE__")||i.endsWith("FILEOFFS__")||i.startsWith("l__")||i.startsWith("s__")||i.startsWith(".__.")}var tn=class{constructor(){this.recreateOnResize=!0;this.hibits=0;this.totalRows=5120;this.gotoRow=-1}createDiv(e){var t=document.createElement("div");return t.setAttribute("class","memdump"),e.appendChild(t),this.showMemoryWindow(e,t),this.maindiv=t}showMemoryWindow(e,t){this.memorylist=new wl({w:$(e).width(),h:$(e).height(),itemHeight:Nm(),totalRows:this.totalRows,generatorFn:n=>{var s=this.getMemoryLineAt(n),o=document.createElement("div");if(this.dumplines){var a=this.dumplines[n];a&&o.classList.add("seg_"+this.getMemorySegment(this.dumplines[n].a|this.hibits))}return n==this.gotoRow&&o.classList.add("goto_line"),o.appendChild(document.createTextNode(s)),o}}),$(t).append(this.memorylist.container),this.tick();let r=fa();r&&this.dumplines&&this.scrollToAddress(r.data_start)}scrollToAddress(e){this.dumplines&&(this.hibits=e&4294901760,this.memorylist.scrollToItem(this.findMemoryWindowLine(e&65535)))}goToAddress(e){this.hibits=e&4294901760;var t=this.getDumpLines(),r;if(t&&t.length?r=this.findMemoryWindowLine(e&65535):r=(e&65535)>>4,r!==void 0){if(this.gotoRow=r,this.memorylist){var n=this.memorylist.container,s=r*this.memorylist.itemHeight-(n.clientHeight-this.memorylist.itemHeight)/2;n.scrollTop=Math.max(0,s)}this.tick()}}refresh(){this.dumplines=null,this.tick()}tick(){this.memorylist&&$(this.maindiv).find("[data-index]").each((e,t)=>{var r=$(t),n=parseInt(r.attr("data-index")),s=r.text(),o=this.getMemoryLineAt(n);s!=o&&r.text(o),r.toggleClass("goto_line",n==this.gotoRow)})}getMemoryLineAt(e){var t=e*16,r=0,n=16,s;if(this.getDumpLines()){var o=this.dumplines[e];if(o)t=o.a&65520,r=o.a-t,n=r+o.l,s=o.s;else return"."}for(var a=ve(t+r,4)+" ",l=0;l<r;l++)a+=" ";r>8&&(a+=" ");for(var l=r;l<n;l++){var c=this.readAddress(t+l|this.hibits);l==8&&(a+=" "),a+=" "+(typeof c=="number"?ve(c,2):"??")}for(var l=n;l<16;l++)a+=" ";return s&&(a+=" "+s),a}readAddress(e){return v.readAddress(e)}getDumpLineAt(e){var t=this.dumplines[e];if(t)return t.a+" "+t.s}getDumpLines(){var e=v.debugSymbols&&v.debugSymbols.addr2symbol||{};if(this.dumplines==null){this.dumplines=[];var t=0,r;for(let a of Object.keys(e)){var n=parseInt(a),s=e[n|this.hibits];if(r)for(b$(r)&&(r="");t<n&&this.dumplines.length<65536;){var o=t+16&1048560;o>n&&(o=n),this.dumplines.push({a:t,l:o-t,s:r}),t=o}r=s}}return this.dumplines}getMemorySegment(e){let t=fa();if(t){if(e>=t.data_start&&e<t.data_start+t.data_size)return v.getSP&&e>=v.getSP()-15?"stack":"data";if(e>=t.code_start&&e<t.code_start+(t.code_size||t.rom_size))return"code"}var r=K.segments;if(r){for(var n of r)if(e>=n.start&&e<n.start+n.size){if(n.type=="rom")return"code";if(n.type=="ram")return"data";if(n.type=="io")return"io"}}return"unknown"}findMemoryWindowLine(e){for(var t=0;t<this.dumplines.length;t++)if(this.dumplines[t].a>=e)return t}},tO=class extends tn{constructor(){super(...arguments);this.totalRows=2048}readAddress(t){return v.readVRAMAddress(t)}getMemorySegment(t){return"video"}getDumpLines(){return null}},Ma=class{constructor(e,t){this.recreateOnResize=!0;this.path=e,this.data=t}populateVlist(){$(this.vlist.maindiv).empty(),this.vlist.create(this.parent,this.data.length+15>>4,this.getMemoryLineAt.bind(this))}createDiv(e){return this.parent=e,this.vlist=new In(this.parent),this.populateVlist(),this.vlist.maindiv}setData(e){this.data=e,this.populateVlist()}getMemoryLineAt(e){for(var t=e*16,r=0,n=16,s=ve(t+r,4)+" ",o=0;o<r;o++)s+=" ";r>8&&(s+=" ");for(var o=r;o<n;o++){var a=this.data[t+o];o==8&&(s+=" "),s+=" "+(a>=0?ve(a,2):" ")}return{text:s}}refresh(){this.vlist.refresh()}getPath(){return this.path}},iO=class{createDiv(e){return this.maindiv=cr(e,"vert Line truncated
`+s),n+=`
`+this.opToString(l,c,u))}),"X: "+t+" Y: "+r+" "+n}refresh(){this.tick(),this.datau32.fill(Vi)}tick(){super.tick(),this.drawImage()}drawImage(){this.ctx.putImageData(this.imageData,0,0)}clear(){this.datau32.fill(Vi)}},eO=class extends Jh{createDiv(e){return this.createCanvas(e,256,256)}initCanvas(){super.initCanvas(),this.canvas.onclick=e=>{var t=gl(this.canvas,e),r=Math.floor(t.x)+Math.floor(t.y)*256,n=-1,s=-1;this.redraw((o,a)=>{s<0&&n>=0&&a==r&&(s=n),o==16777216&&(n=a)}),s>=0&&Dn([s])}}clear(){for(var e=0;e<=65535;e++){var t=Q.readAddress(e),r=t>>2|t&31;r|=r<<8|r<<16,this.datau32[e]=r|Vi}}drawEvent(e,t,r,n){var s=this.getOpRGB(e,t);if(s){var o=t&255,a=t>>8&255,l=this.datau32[t&65535];l=l|s|Vi,this.datau32[t&65535]=l}}getTooltipText(e,t){var r=(e&255)+(t<<8),n="",s=-1,o={},a=null,l=[];return this.redraw((c,h,O,f,u,p)=>{switch(c){case 16777216:s=h,a=this.addr2symbol(h)||a;break;case 167772160:l.push(a);break;case 184549376:a=l.pop();break}var m=c|s;h==r&&!o[m]&&(n==""&&a&&(n+=`
`+this.opToString(l,c,f))}),"X: "+t+" Y: "+r+" "+n}refresh(){this.tick(),this.datau32.fill(ji)}tick(){super.tick(),this.drawImage()}drawImage(){this.ctx.putImageData(this.imageData,0,0)}clear(){this.datau32.fill(ji)}},nO=class extends rO{createDiv(e){return this.createCanvas(e,256,256)}initCanvas(){super.initCanvas(),this.canvas.onclick=e=>{var t=xl(this.canvas,e),r=Math.floor(t.x)+Math.floor(t.y)*256,n=-1,s=-1;this.redraw((o,a)=>{s<0&&n>=0&&a==r&&(s=n),o==16777216&&(n=a)}),s>=0&&Ya([s])}}clear(){for(var e=0;e<=65535;e++){var t=v.readAddress(e),r=t>>2|t&31;r|=r<<8|r<<16,this.datau32[e]=r|ji}}drawEvent(e,t,r,n){var s=this.getOpRGB(e,t);if(s){var o=t&255,a=t>>8&255,l=this.datau32[t&65535];l=l|s|ji,this.datau32[t&65535]=l}}getTooltipText(e,t){var r=(e&255)+(t<<8),n="",s=-1,o={},a=null,l=[];return this.redraw((c,h,O,u,f,p)=>{switch(c){case 16777216:s=h,a=this.addr2symbol(h)||a;break;case 167772160:l.push(a);break;case 184549376:a=l.pop();break}var m=c|s;h==r&&!o[m]&&(n==""&&a&&(n+=`
`+a),n+=`
PC `+this.addr2str(s)+" "+this.opToString(c,null,p),o[m]=1)}),this.addr2str(r)+n}},jm=class extends Jh{initCanvas(){super.initCanvas(),this.canvas.onclick=e=>{var t=gl(this.canvas,e),r=Math.floor(t.x),n=Math.floor(t.y),s=this.getOpAtPos(t.x,t.y,16777216);s&&(ar("toline"),Q.runEval(()=>{let o=Q.getRasterScanline&&Q.getRasterScanline()>=n;return o&&Q.getRasterLineClock?o&&Q.getRasterLineClock()>r:o}))}}drawEvent(e,t,r,n){var s=this.getOpRGB(e,t);if(s){var o=r+n*this.canvas.width,a=s|Vi;this.datau32[o]|=a}}drawImage(){let e=Vi;for(let t=0;t<this.datau32.length;t++)this.datau32[t]==Vi?this.datau32[t]=e:e=this.datau32[t];super.drawImage()}},tO=class extends jm{constructor(){super(...arguments);this.interrupt=0;this.rgb=0;this.lastpc=0}drawEvent(t,r,n,s){var o=n+s*this.canvas.width;if(t==134217728&&(this.interrupt=1),this.interrupt==1&&t==167772160&&(this.interrupt=r),this.interrupt>1&&this.sp>this.interrupt&&(this.interrupt=0),t==318767104&&(this.rgb|=47),t==385875968&&(this.rgb|=16256),t==352321536&&(this.rgb|=2047872),t==335544320&&(this.rgb|=7936),t==520093696&&(this.rgb=32768),t==150994944||t==402653184)this.datau32[o]=4279176975;else{let a=this.rgb;if(t==16777216){let l=this.sp&15;l>=8&&(l=16-l),Math.abs(this.lastpc)-r>16&&(l+=1),Math.abs(this.lastpc)-r>256&&(l+=1),a=this.rgb=526344*l+2105376,this.lastpc=r}this.interrupt&&(a|=8388672),this.datau32[o]==Vi&&(this.datau32[o]=a|Vi)}}},iO=class extends tn{constructor(){super(...arguments);this.recreateOnResize=!0}createDiv(t){return this.vlist=new Fn(t),this.vlist.create(t,this.cyclesPerLine*this.totalScanlines,this.getMemoryLineAt.bind(this)),this.vlist.maindiv}getMemoryLineAt(t){var r="",n="seg_data",s=this.dumplines&&this.dumplines[t];if(s!=null){var o=s.info.join(", ");r="("+Gi(s.row,4)+", "+Gi(s.col,4)+") "+So(s.asm||"",20)+o,o.indexOf("Write ")>=0&&(n="seg_io")}return{text:r,clas:n}}refresh(){this.tick()}tick(){let t=Q instanceof JO||Q instanceof KO;this.dumplines={},this.redraw((r,n,s,o,a,l)=>{t&&(a>>=2);var c=this.dumplines[a];switch(c==null&&(c={op:r,addr:n,row:o,col:s,asm:null,info:[]},this.dumplines[a]=c),r){case 16777216:if(Q.disassemble){var h=Q.disassemble(n,Q.readAddress.bind(Q));c.asm=h&&h.line}break;default:var O=this.opToString(r,n,l);O!=""&&c.info.push(O);break}}),this.vlist.refresh()}},rO=class extends tn{constructor(){super(...arguments);this.recreateOnResize=!0}createDiv(t){return this.vlist=new Fn(t),this.vlist.create(t,this.totalScanlines,this.getMemoryLineAt.bind(this)),this.vlist.maindiv}getMemoryLineAt(t){for(var r=Gi(t+"",3)+" ",n="seg_code",s=this.dumplines&&this.dumplines[t]||[],o=Math.round(this.cyclesPerLine/3.3),a=0;a<this.cyclesPerLine;a++){var l=s[a];if(l!==void 0){var c=l&65535,h=h&Vi;if(h==16777216)r+=",";else{var O=$e(c);r+=O,a+=O.length-1}}else r+=a==o?"|":"."}return s[-1]&&(r+=" "+s[-1]),{text:r,clas:n}}refresh(){this.tick()}tick(){let t=Q instanceof JO||Q instanceof KO;this.dumplines={},this.redraw((r,n,s,o,a,l)=>{var c=this.dumplines[o];switch(c==null&&(this.dumplines[o]=c=[]),r){case 16777216:var h=Q.debugSymbols.addr2symbol[n];h&&(c[-1]=h);break;case 335544320:case 352321536:case 369098752:case 385875968:c[s]=r|n;break}}),this.vlist.refresh()}},nO=class extends tn{constructor(){super(...arguments);this.recreateOnResize=!0;this.cumulativeData=!0}createDiv(t){return Q.debugSymbols&&Q.debugSymbols.symbolmap?this.keys=Array.from(Object.keys(Q.debugSymbols.symbolmap).filter(r=>!s$(r))):this.keys=["no symbols defined"],this.vlist=new Fn(t),this.vlist.create(t,this.keys.length+1,this.getMemoryLineAt.bind(this)),this.vlist.maindiv}getMemoryLineAt(t){if(t==0)return{text:Gi("Symbol",35)+Gi("Reads",8)+Gi("Writes",8)};var r=this.keys[t-1],n=this.dumplines&&this.dumplines[r];function s(l){var c=n[l]|0;return Gi(c?c.toString():"",8)}var o,a;return n!=null?(o=Gi(r,35)+s(301989888)+s(318767104),n[16777216]?a="seg_code":n[335544320]||n[352321536]?a="seg_io":a="seg_data"):(o=Gi(r,35),a="seg_unknown"),{text:o,clas:a}}refresh(){this.tick()}tick(){this.dumplines={},this.redraw((t,r,n,s,o,a)=>{var l=Q.debugSymbols.addr2symbol[r];if(l!=null){var c=this.dumplines[l];c==null&&(c={},this.dumplines[l]=c),c[t]=(c[t]|0)+1}}),this.vlist.refresh(),this.probe&&this.probe.clear()}};function sO(i,e){if(i=i.trim(),!i)return null;if(e){if(i in e)return{addr:e[i],isSymbol:!0};let r=i.toLowerCase();for(var t in e)if(t.toLowerCase()===r)return{addr:e[t],isSymbol:!0}}return/^(0x|\$)[0-9a-f]+$/i.test(i)?{addr:parseInt(i.replace(/^(0x|\$)/i,""),16),isSymbol:!1}:/^[0-9a-f]+$/i.test(i)?{addr:parseInt(i,16),isSymbol:!1}:null}function uA(i,e){for(let t of e||[]){let r=t.last!=null?t.last:t.start+t.size-1;if(i>=t.start&&i<=r)return t}return null}function o$(i,e,t){let r=uA(e.addr,t),n=(r==null?void 0:r.type)==="rom";return{record:{id:"debugger:"+i.toLowerCase(),name:i,kind:n?"label":"var",brief:n?"open in Disassembly":"open in Memory Browser",source:"debugger",file:"",addr:e.addr},score:500}}function a$(i,e){return i.isSymbol||!e}function dA(i,e){let t=null;retur Line truncated
PC `+this.addr2str(s)+" "+this.opToString(c,null,p),o[m]=1)}),this.addr2str(r)+n}},Hm=class extends rO{initCanvas(){super.initCanvas(),this.canvas.onclick=e=>{var t=xl(this.canvas,e),r=Math.floor(t.x),n=Math.floor(t.y),s=this.getOpAtPos(t.x,t.y,16777216);s&&(qi("toline"),v.runEval(()=>{let o=v.getRasterScanline&&v.getRasterScanline()>=n;return o&&v.getRasterLineClock?o&&v.getRasterLineClock()>r:o}))}}drawEvent(e,t,r,n){var s=this.getOpRGB(e,t);if(s){var o=r+n*this.canvas.width,a=s|ji;this.datau32[o]|=a}}drawImage(){let e=ji;for(let t=0;t<this.datau32.length;t++)this.datau32[t]==ji?this.datau32[t]=e:e=this.datau32[t];super.drawImage()}},sO=class extends Hm{constructor(){super(...arguments);this.interrupt=0;this.rgb=0;this.lastpc=0}drawEvent(t,r,n,s){var o=n+s*this.canvas.width;if(t==134217728&&(this.interrupt=1),this.interrupt==1&&t==167772160&&(this.interrupt=r),this.interrupt>1&&this.sp>this.interrupt&&(this.interrupt=0),t==318767104&&(this.rgb|=47),t==385875968&&(this.rgb|=16256),t==352321536&&(this.rgb|=2047872),t==335544320&&(this.rgb|=7936),t==520093696&&(this.rgb=32768),t==150994944||t==402653184)this.datau32[o]=4279176975;else{let a=this.rgb;if(t==16777216){let l=this.sp&15;l>=8&&(l=16-l),Math.abs(this.lastpc)-r>16&&(l+=1),Math.abs(this.lastpc)-r>256&&(l+=1),a=this.rgb=526344*l+2105376,this.lastpc=r}this.interrupt&&(a|=8388672),this.datau32[o]==ji&&(this.datau32[o]=a|ji)}}},oO=class extends rn{constructor(){super(...arguments);this.recreateOnResize=!0}createDiv(t){return this.vlist=new In(t),this.vlist.create(t,this.cyclesPerLine*this.totalScanlines,this.getMemoryLineAt.bind(this)),this.vlist.maindiv}getMemoryLineAt(t){var r="",n="seg_data",s=this.dumplines&&this.dumplines[t];if(s!=null){var o=s.info.join(", ");r="("+Hi(s.row,4)+", "+Hi(s.col,4)+") "+Qo(s.asm||"",20)+o,o.indexOf("Write ")>=0&&(n="seg_io")}return{text:r,clas:n}}refresh(){this.tick()}tick(){let t=v instanceof su||v instanceof nu;this.dumplines={},this.redraw((r,n,s,o,a,l)=>{t&&(a>>=2);var c=this.dumplines[a];switch(c==null&&(c={op:r,addr:n,row:o,col:s,asm:null,info:[]},this.dumplines[a]=c),r){case 16777216:if(v.disassemble){var h=v.disassemble(n,v.readAddress.bind(v));c.asm=h&&h.line}break;default:var O=this.opToString(r,n,l);O!=""&&c.info.push(O);break}}),this.vlist.refresh()}},aO=class extends rn{constructor(){super(...arguments);this.recreateOnResize=!0}createDiv(t){return this.vlist=new In(t),this.vlist.create(t,this.totalScanlines,this.getMemoryLineAt.bind(this)),this.vlist.maindiv}getMemoryLineAt(t){for(var r=Hi(t+"",3)+" ",n="seg_code",s=this.dumplines&&this.dumplines[t]||[],o=Math.round(this.cyclesPerLine/3.3),a=0;a<this.cyclesPerLine;a++){var l=s[a];if(l!==void 0){var c=l&65535,h=h&ji;if(h==16777216)r+=",";else{var O=ve(c);r+=O,a+=O.length-1}}else r+=a==o?"|":"."}return s[-1]&&(r+=" "+s[-1]),{text:r,clas:n}}refresh(){this.tick()}tick(){let t=v instanceof su||v instanceof nu;this.dumplines={},this.redraw((r,n,s,o,a,l)=>{var c=this.dumplines[o];switch(c==null&&(this.dumplines[o]=c=[]),r){case 16777216:var h=v.debugSymbols.addr2symbol[n];h&&(c[-1]=h);break;case 335544320:case 352321536:case 369098752:case 385875968:c[s]=r|n;break}}),this.vlist.refresh()}},lO=class extends rn{constructor(){super(...arguments);this.recreateOnResize=!0;this.cumulativeData=!0}createDiv(t){return v.debugSymbols&&v.debugSymbols.symbolmap?this.keys=Array.from(Object.keys(v.debugSymbols.symbolmap).filter(r=>!b$(r))):this.keys=["no symbols defined"],this.vlist=new In(t),this.vlist.create(t,this.keys.length+1,this.getMemoryLineAt.bind(this)),this.vlist.maindiv}getMemoryLineAt(t){if(t==0)return{text:Hi("Symbol",35)+Hi("Reads",8)+Hi("Writes",8)};var r=this.keys[t-1],n=this.dumplines&&this.dumplines[r];function s(l){var c=n[l]|0;return Hi(c?c.toString():"",8)}var o,a;return n!=null?(o=Hi(r,35)+s(301989888)+s(318767104),n[16777216]?a="seg_code":n[335544320]||n[352321536]?a="seg_io":a="seg_data"):(o=Hi(r,35),a="seg_unknown"),{text:o,clas:a}}refresh(){this.tick()}tick(){this.dumplines={},this.redraw((t,r,n,s,o,a)=>{var l=v.debugSymbols.addr2symbol[r];if(l!=null){var c=this.dumplines[l];c==null&&(c={},this.dumplines[l]=c),c[t]=(c[t]|0)+1}}),this.vlist.refresh(),this.probe&&this.probe.clear()}},cO=class{constructor(){this.editingId=null}createDiv(e){return this.maindiv=cr(e,"vertical-scroll bp-view"),this.render(),this.maindiv[0]}refresh(e){this.render()}render(){let e=this.maindiv.empty(),t=Wh(),r=this.editingId!=null?t.find(h=>h.bp.id==this.editingId):null,n=$('<div class="bp-form"/>'),s=$('<input type="text" class="bp-input" spellcheck="false"/>').attr("placeholder","address or symbol (e.g. $8000, mainloop)").val(r&&r.bp.type=="address"?r.bp.target:""),o=$('<input type="text" class="bp-input" spellcheck="false"/>').attr("placeholder","condition (e.g. A == $20 && X < 4)").val(r&&r.bp.condition||""),a=$('<button class="btn btn-default btn-xs bp-submit"/>').text(r?"Save":"Add"),l=$('<button class="btn btn-default btn-xs bp-submit"/>').text("Cancel");l.toggle(r!= Line truncated
<div id="searchbox_form">
<input type="text" id="searchboxInput" class="form-control"
placeholder="Search symbols, files, docs"
autocomplete="off" style="margin-bottom:8px">
<div id="searchboxResults" style="max-height:340px;overflow-y:auto"></div>
</div>
`,buttons:{close:{label:"Close",className:"btn-default"}}}).one("shown.bs.modal",()=>{$("#searchboxInput").trigger("focus")});let e=$("#searchboxInput"),t=$("#searchboxResults"),r=[],n=-1,s=c=>{if(n=Math.max(-1,Math.min(c,r.length-1)),t.find("li.search-hit").each((h,O)=>{$(O).toggleClass("active",h===n)}),n>=0){let h=t[0],O=t.find("li.search-hit").eq(n);if(O.length){let f=O[0],u=h.getBoundingClientRect(),p=f.getBoundingClientRect(),m=p.top-u.top;m<0?h.scrollTop+=m:m+p.height>u.height&&(h.scrollTop+=m+p.height-u.height)}}},o=(c=n)=>{let h=r[c];h&&(mA(h),bootbox.hideAll())},a=c=>{if(r=c||[],r.length===0){n=-1,t.html('<div class="text-muted" style="padding:8px">No matches.</div>');return}let h=$('<ul class="list-group" style="margin-bottom:0"></ul>');for(let O of r){let f=O.record,u=f.source,p=f.kind==="func"?"\u0192":f.kind==="macro"?"#":f.kind==="label"?":":f.kind==="struct"?"S":f.kind==="enum"?"E":f.kind==="text"?"\u2261":"\u2022",m=f.source==="debugger"?$e(f.addr,4):f.file&&f.line?`${f.file}:${f.line}`:f.file||"",S=f.kind!=="text",w=$('<li class="list-group-item search-hit" style="cursor:pointer;padding:6px 10px;display:flex;align-items:center;overflow:hidden"></li>');w.html(`<span class="search-kind" style="margin-right:6px;font-weight:bold;flex:0 0 auto">${p}</span><span class="search-name" style="flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap">`+(S?`<strong>${oO(f.name)}</strong>`:`<span class="search-dumb">${oO(f.name)}</span>`)+(f.brief?` <span class="text-muted">- ${oO(f.brief)}</span>`:"")+`</span><span class="search-loc" style="flex:0 0 auto;margin-left:8px;font-style:italic;font-size:small;white-space:nowrap">${m?oO(m):""}</span>`),w.click(()=>{o(r.indexOf(O))}),h.append(w)}t.empty().append(h),s(0)},l=dA(async()=>{let c=e.val();if(!c){r=[],n=-1,t.empty();return}try{let h=await qQ.query(c,pA),O=sO(c,Q&&Q.debugSymbols&&Q.debugSymbols.symbolmap);O&&a$(O,h.length>0)&&h.push(o$(c,O,te&&te.segments)),a(h)}catch(h){t.html('<div class="text-danger" style="padding:8px">Search failed.</div>')}},150);e.on("input",l),e.on("keydown",c=>{c.key==="ArrowDown"?(c.preventDefault(),s(n+1)):c.key==="ArrowUp"?(c.preventDefault(),s(n-1)):c.key==="Enter"?(c.preventDefault(),n>=0?o():l()):c.key==="Home"?(c.preventDefault(),s(0)):c.key==="End"&&(c.preventDefault(),s(r.length-1))})}var gA=800,bA=1e3,xA=16;function l$(i){return i.art?i.brev?0:7:null}var aO=/([0#]?)([x$%]|\d'h)([0-9a-f]+)(?:[;].*)?|(\d'b|0b)([01]+)/gim;function Bm(i){return i.replace(/(\shex\s+)([0-9a-f]+)/ig,function(e,t,r){for(var n=t,s=0;s<r.length;s+=2)n+="0x"+r.substr(s,2)+",";return n})}function f$(i){for(var e=[],t;t=aO.exec(i);){var r;t[4]?r=parseInt(t[5],2):t[2].startsWith("%")?r=parseInt(t[3],2):t[2].startsWith("x")||t[2].startsWith("$")||t[2].endsWith("h")?r=parseInt(t[3],16):r=parseInt(t[3]),e.push(r)}return e}function SA(i,e,t){i=Bm(i);for(var r="",n,s=0,o=0,a=Math.ceil(t/4);n=aO.exec(i);)r+=i.slice(s,aO.lastIndex-n[0].length),s=aO.lastIndex,n[4]?r+=n[4]+FO(e[o++],parseInt(n[4])):n[2].startsWith("%")?r+=n[1]+n[2]+FO(e[o++],t):n[2].endsWith("h")?r+=n[1]+n[2]+$e(e[o++],parseInt(n[2])):n[2].startsWith("x")?r+=n[1]+"x"+$e(e[o++],a):n[2].startsWith("$")?r+=n[1]+"$"+$e(e[o++],a):r+=n[1]+e[o++].toString();return r+=i.slice(s),r=r.replace(/(\shex\s+)([,x0-9a-f]+)/ig,(l,c,h)=>{var O=c+h;return O=O.replace(/0x/ig,"").replace(/,/ig,""),O}),r}function Gm(i,e){if(!e)return i;for(var t=0,r=0;r<e.length;r++){var n=e[r];n<0&&(n=-n-1,t^=1<<n),i&1<<r&&(t^=1<<n)}return t}function Nm(i,e){var t=e[i%e.length];return[t>>3,t&7]}var QA=[[0,0,4],[8,0,0]],vA=[[0,8,12],[8,8,0],[16,8,4],[24,8,8],[32,0,12],[40,0,0],[48,0,4],[56,0,8]];function wA(i,e,t,r,n,s){for(var o=0;o<8;o++)for(var a=i[e+o]||0,l=0;l<4;l++){var c=(3-l)*s+(7-o),h=a>>l&1|(a>>l+4&1)<<1;t[n*s+r+c]=h}}function yA(i,e,t,r,n,s){for(var o=0;o<8;o++){for(var a=0,l=0;l<4;l++){var c=(3-l)*s+(7-o),h=(t[n*s+r+c]||0)&3;h&1&&(a|=1<<l),h&2&&(a|=1<<l+4)}i[e+o]=a}}function Hm(i){return i.w===16&&i.h===16?vA:QA}function u$(i){return Hm(i).length*8}function $A(i,e){for(var t=e.w,r=e.h,n=e.count||1,s=e.wpimg||u$(e),o=Hm(e),a=[],l=0;l<n;l++){for(var c=new Array(t*r).fill(0),h=l*s,O=0;O<o.length;O++){var[f,u,p]=o[O];wA(i,h+f,c,u,p,t)}a.push(new Uint8Array(c))}return a}function PA(i,e){for(var t=e.w,r=e.h,n=e.count||i.length,s=e.wpimg||u$(e),o=Hm(e),a=new Array(s*n).fill(0),l=0;l<n;l++)for(var c=i[l]||new Uint8Array(t*r),h=l*s,O=0;O<o.length;O++){var[f,u,p]=o[O];yA(a,h+f,c,u,p,t)}return a}function kA(i,e){if(e.pacstrip)return $A(i,e);var t=e.w,r=e.h,n=e.count||1,s=e.bpp||1,o=e.np||1,a=e.bpw||8,l=e.sl||Math.ceil(t*s/a),c=(1<<s)-1,h=e.pofs||l*r*n,O=e.skip||0,f=e.wpimg||l*r,u=l;e.il&&(f=l,u=l*n);for(var p=[],m=0;m<n;m++){for(var S=[],w=0;w<r;w++)for(var C=e.flip?r-1-w:w,R=f*m+C*u,A=0,k=0;k<t;k++){var P=0,Z=Gm(R,e.remap);e.reindex&&([Z,A]=Nm(k,e.reindex),Z+=R);for(var z=0;z<o;z++){var D=i[Z+z*h+O];P|=((e.brev?D>>a-A-s:D>>A)&c)<<z*s}S.push(P),A+=s,A>=a&&!e.reindex&&(R+=1,A=0)}p.push(new UintLine truncated
`&&t++;return t}function g$(i,e){for(var t=/[/;][*;]([{].+[}])[*;][/;]/g,r=[],n;n=t.exec(i);){var s=n.index+n[0].length,o;e?o=i.indexOf("end",s):n[0].startsWith(";;")?(o=i.indexOf(";;",s),o==i.indexOf(";;{",s)&&(o=-1)):o=i.indexOf(";",s);var a=c$(i,n.index),l=n[0],c=o>=0?c$(i,o):"???";if(o<0){var h=e?'"end"':n[0].startsWith(";;")?'";;"':'";"';r.push({header:l,startline:a,endline:c,error:`No closing ${h} found after asset header`})}else if(o<=s)r.push({header:l,startline:a,endline:c,error:"Empty data block after asset header"});else try{var O=n[1].replace(/([A-Za-z]+):/g,'"$1":'),f=JSON.parse(O),u=/#embed\s+"(.+?)"/.exec(i.substring(s,o)),p=u?u[1]:void 0;r.push({header:l,startline:a,endline:c,fmt:f,start:s,end:o,embedFile:p})}catch(m){r.push({header:l,startline:a,endline:c,error:`Invalid asset format: ${m.message}`})}}return r}function b$(i,e,t){if(t(e))return e;var r=i.lastIndexOf("/");if(r>=0){var n=i.substring(0,r+1)+e;if(t(n))return n}return null}function TA(i,e){if(e.destfmt&&(e=e.destfmt),e.pacstrip)return PA(i,e);var t=e.w,r=e.h,n=e.count||1,s=e.bpp||1,o=e.np||1,a=e.bpw||8,l=e.sl||Math.ceil(e.w*s/a),c=(1<<s)-1,h=e.pofs||l*r*n,O=e.skip||0,f=e.wpimg||l*r,u=l;e.il&&(f=l,u=l*n);var p=e.il?u*r:f*n,m;o>0&&e.sl?m=new Uint8Array(p):a<=8?m=new Uint8Array(p*o):m=new Uint32Array(p*o);for(var S=0;S<n;S++)for(var w=i[S],C=0,R=0;R<r;R++)for(var A=e.flip?r-1-R:R,k=S*f+A*u,P=0,Z=0;Z<t;Z++){var z=w[C++],D=Gm(k,e.remap);e.reindex&&([D,P]=Nm(Z,e.reindex),D+=k);for(var Oe=0;Oe<o;Oe++){var se=z>>Oe*s&c;m[D+Oe*h+O]|=e.brev?se<<a-P-s:se<<P}P+=s,P>=a&&!e.reindex&&(k+=1,P=0)}return m}function h$(i,e,t,r,n,s,o){for(var a=[],l=0;l<i.length;l++){var c=i[l],h=4278190080;h|=(c>>e&(1<<t)-1)<<8-t,h|=(c>>r&(1<<n)-1)<<16-n,h|=(c>>s&(1<<o)-1)<<24-o,a.push(h)}return a}function XA(i){var e=(i>>0&1)*33+(i>>1&1)*71+(i>>2&1)*151,t=(i>>3&1)*33+(i>>4&1)*71+(i>>5&1)*151,r=(i>>6&1)*81+(i>>7&1)*174;return 4278190080|r<<16|t<<8|e}function _A(i){var e=i.pal;if(typeof e=="number"){var t=Math.floor(Math.abs(e/100)%10),r=Math.floor(Math.abs(e/10)%10),n=Math.floor(Math.abs(e)%10);return 1<<t+r+n}else{if(e==="pacman")return 256;var s=x$[e];if(s)return s.length;throw new Error("No palette named "+e)}}function O$(i,e){var t=e.pal,r;if(typeof t=="number"){var n=Math.floor(Math.abs(t/100)%10),s=Math.floor(Math.abs(t/10)%10),o=Math.floor(Math.abs(t)%10);t>=0?r=h$(i,0,n,n,s,n+s,o):r=h$(i,n+s,o,n,s,0,n)}else if(t==="pacman"){r=[];for(var a=0;a<i.length;a++)r.push(XA(i[a]))}else{var l=x$[t];if(l)r=new Uint32Array(i).map(c=>l[c&l.length-1]|4278190080);else throw new Error("No palette named "+t)}return r}var x$={gb:[13686916,8890444,5401396,2961698],nes:[5395026,11796480,10485760,11599933,7602281,91,95,6208,12048,543240,26368,1196544,7153664,0,0,0,12899815,16728064,14421538,16729963,14090399,6818519,6588,21681,27227,35843,43776,2918400,10777088,0,0,0,16316664,16755516,16742785,16735173,16730354,14633471,4681215,46327,57599,58229,259115,7911470,15065624,7895160,0,0,16777215,16773822,16300216,16300248,16758527,16761855,13095423,10148607,8973816,8650717,12122296,16119980,16777136,16308472,0,0],ap2lores:[0,16711935,127,8323199,32512,8355711,191,255,12549888,16760576,12566463,16744319,65280,16776960,49023,16777215],vcs:[0,0,4210752,4210752,7105644,7105644,9474192,9474192,11579568,11579568,13158600,13158600,14474460,14474460,16053492,16053492,17476,17476,1074276,1074276,2393220,2393220,3448992,3448992,4241592,4241592,5296336,5296336,6088936,6088936,6880508,6880508,10352,10352,1328260,1328260,2645144,2645144,3963052,3963052,5016764,5016764,6070476,6070476,6862044,6862044,7915756,7915756,6276,6276,1586328,1586328,3166380,3166380,4745408,4745408,6062288,6062288,7378144,7378144,8431852,8431852,9747708,9747708,136,136,2105500,2105500,3947696,3947696,5789888,5789888,7368912,7368912,8947936,8947936,10526956,10526956,11842812,11842812,6029432,6029432,7610508,7610508,8928416,8928416,10246320,10246320,11563200,11563200,12616912,12616912,13671644,13671644,14725356,14725356,7864392,7864392,9445472,9445472,10763384,10763384,12081292,12081292,13398176,13398176,14451892,14451892,15506628,15506628,16560340,16560340,8650772,8650772,9969712,9969712,11287628,11287628,12605544,12605544,13660284,13660284,14715028,14715028,15507624,15507624,16561340,16561340,8912896,8912896,10231836,10231836,11550776,11550776,12606544,12606544,13661288,13661288,14716028,14716028,15508624,15508624,16562340,16562340,8132608,8132608,9451548,9451548,11031608,11031608,12349520,12349520,13404264,13404264,14457980,14457980,15512720,15512720,16566436,16566436,6040576,6040576,7883804,7883804,9463864,9463864,11306064,11306064,12622952,12622952,13939836,13939836,15256720,15256720,16572580,16572580,2898944,2898944,4742172,4742172,6585400,6585400,8428624,8428624,9745512,9745512,11325564,11325564,12641424,12641424,13958308,13958308,15360,15360,2120736,2120736,4226112,4226112,6069340,6069340,7648372,7648372,9228428,9228428,10806436,10806436,12123320,12123320,14356,14356,1858612,1858612,3701840,3701840,5281900,5281900,68 Line truncated
`,await I$(i),ie.newfile?!r&&!t?Qe('No build tool for "'+i+'" on this platform; project will not build.'):r?K$(!0,!0):Pt("No skeleton file for "+t+" on this platform; using blank file."):Pt('Could not find file "'+i+'"<br><br>Creating new '+(r?t:"blank")+" file."),delete ie.newfile,CO()}}function dg(i){if(i=="/")ie={repo:"/"};else if(i.indexOf("://")>=0){var e=ha(i);e&&(ie={repo:e.repopath})}else ie.platform=ce,ie.file=i;zn()}async function $E(i){var e=sf(Q.getToolForFilename(i));try{return await $.get("presets/"+Ut(ce)+"/skeleton."+e,"text")}catch(t){return console.log(t+""),null}}function pg(i){return i.indexOf(" ")>=0?(Qe("No spaces in filenames, please."),!1):!0}async function PE(i){var e=Ut(ce),t={},r=[];for(var n of i){var s=Q.getToolForFilename("test"+n);t[s]||(t[s]=[],r.push(s)),t[s].push(n)}var o=r.map(h=>$.ajax({url:"presets/"+e+"/skeleton."+sf(h),type:"HEAD"}).then(()=>h,()=>null)),a=await Promise.all(o),l=[];for(var c of a)c!=null&&l.push({tool:c,extensions:t[c]});return l}async function kE(i){var e=await PE(Q.getDefaultExtensions()),t,r;return e.length===0?(t=Q.getDefaultExtensions(),r=t.join(" ")):(t=e.reduce((n,s)=>n.concat(s.extensions),[]),r=e.map(n=>n.extensions.join(" ")).join("<br>")),bootbox.prompt({title:"Enter the name of your new main source file.<br><br><span class='dialog-help'>"+r+"</span>",placeholder:"newfile"+t[0],callback:n=>{if(n&&n.trim().length>0){if(!pg(n))return;n.indexOf(".")<0&&(n+=t[0]);var s=n;ie.newfile="1",dg(s)}}}),!0}function TE(i){let e=$('<input type="file" multiple accept="*" style="display:none">'),t=e[0];e.change(r=>{XE(t.files)}),e.click()}function XE(i){console.log(i);var e=0;function t(){var r=i[e++];if(!r)console.log("Done uploading",e),e>2?(Pt("Files uploaded."),setTimeout(Ga,1e3)):(ie.file=i[0].name,bootbox.confirm({message:"Open '"+on.sanitize(ie.file)+"' as main project file?",buttons:{confirm:{label:"Open As New Project"},cancel:{label:"Include/Link With Project Later"}},callback:o=>{o?zn():setTimeout(Ga,1e3)}}));else{var n=r.name,s=new FileReader;s.onload=function(o){var a=o.target.result,l=new Uint8Array(a);pn(n,l)||(l=dl(l).replace(`\r
`,buttons:{close:{label:"Close",className:"btn-default"}}}).one("shown.bs.modal",()=>{$("#searchboxInput").trigger("focus")});let e=$("#searchboxInput"),t=$("#searchboxResults"),r=[],n=-1,s=c=>{if(n=Math.max(-1,Math.min(c,r.length-1)),t.find("li.search-hit").each((h,O)=>{$(O).toggleClass("active",h===n)}),n>=0){let h=t[0],O=t.find("li.search-hit").eq(n);if(O.length){let u=O[0],f=h.getBoundingClientRect(),p=u.getBoundingClientRect(),m=p.top-f.top;m<0?h.scrollTop+=m:m+p.height>f.height&&(h.scrollTop+=m+p.height-f.height)}}},o=(c=n)=>{let h=r[c];h&&(YA(h),bootbox.hideAll())},a=c=>{if(r=c||[],r.length===0){n=-1,t.html('<div class="text-muted" style="padding:8px">No matches.</div>');return}let h=$('<ul class="list-group" style="margin-bottom:0"></ul>');for(let O of r){let u=O.record,f=u.source,p=u.kind==="func"?"\u0192":u.kind==="macro"?"#":u.kind==="label"?":":u.kind==="struct"?"S":u.kind==="enum"?"E":u.kind==="text"?"\u2261":"\u2022",m=u.source==="debugger"?ve(u.addr,4):u.file&&u.line?`${u.file}:${u.line}`:u.file||"",S=u.kind!=="text",w=$('<li class="list-group-item search-hit" style="cursor:pointer;padding:6px 10px;display:flex;align-items:center;overflow:hidden"></li>');w.html(`<span class="search-kind" style="margin-right:6px;font-weight:bold;flex:0 0 auto">${p}</span><span class="search-name" style="flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap">`+(S?`<strong>${OO(u.name)}</strong>`:`<span class="search-dumb">${OO(u.name)}</span>`)+(u.brief?` <span class="text-muted">- ${OO(u.brief)}</span>`:"")+`</span><span class="search-loc" style="flex:0 0 auto;margin-left:8px;font-style:italic;font-size:small;white-space:nowrap">${m?OO(m):""}</span>`),w.click(()=>{o(r.indexOf(O))}),h.append(w)}t.empty().append(h),s(0)},l=EA(async()=>{let c=e.val();if(!c){r=[],n=-1,t.empty();return}try{let h=await Kv.query(c,zA),O=hO(c,v&&v.debugSymbols&&v.debugSymbols.symbolmap);O&&v$(O,h.length>0)&&h.push(S$(c,O,K&&K.segments)),a(h)}catch(h){t.html('<div class="text-danger" style="padding:8px">Search failed.</div>')}},150);e.on("input",l),e.on("keydown",c=>{c.key==="ArrowDown"?(c.preventDefault(),s(n+1)):c.key==="ArrowUp"?(c.preventDefault(),s(n-1)):c.key==="Enter"?(c.preventDefault(),n>=0?o():l()):c.key==="Home"?(c.preventDefault(),s(0)):c.key==="End"&&(c.preventDefault(),s(r.length-1))})}var MA=800,LA=1e3,WA=16;function Q$(i){return i.art?i.brev?0:7:null}var uO=/([0#]?)([x$%]|\d'h)([0-9a-f]+)(?:[;].*)?|(\d'b|0b)([01]+)/gim;function ig(i){return i.replace(/(\shex\s+)([0-9a-f]+)/ig,function(e,t,r){for(var n=t,s=0;s<r.length;s+=2)n+="0x"+r.substr(s,2)+",";return n})}function P$(i){for(var e=[],t;t=uO.exec(i);){var r;t[4]?r=parseInt(t[5],2):t[2].startsWith("%")?r=parseInt(t[3],2):t[2].startsWith("x")||t[2].startsWith("$")||t[2].endsWith("h")?r=parseInt(t[3],16):r=parseInt(t[3]),e.push(r)}return e}function VA(i,e,t){i=ig(i);for(var r="",n,s=0,o=0,a=Math.ceil(t/4);n=uO.exec(i);)r+=i.slice(s,uO.lastIndex-n[0].length),s=uO.lastIndex,n[4]?r+=n[4]+JO(e[o++],parseInt(n[4])):n[2].startsWith("%")?r+=n[1]+n[2]+JO(e[o++],t):n[2].endsWith("h")?r+=n[1]+n[2]+ve(e[o++],parseInt(n[2])):n[2].startsWith("x")?r+=n[1]+"x"+ve(e[o++],a):n[2].startsWith("$")?r+=n[1]+"$"+ve(e[o++],a):r+=n[1]+e[o++].toString();return r+=i.slice(s),r=r.replace(/(\shex\s+)([,x0-9a-f]+)/ig,(l,c,h)=>{var O=c+h;return O=O.replace(/0x/ig,"").replace(/,/ig,""),O}),r}function rg(i,e){if(!e)return i;for(var t=0,r=0;r<e.length;r++){var n=e[r];n<0&&(n=-n-1,t^=1<<n),i&1<<r&&(t^=1<<n)}return t}function ng(i,e){var t=e[i%e.length];return[t>>3,t&7]}var jA=[[0,0,4],[8,0,0]],qA=[[0,8,12],[8,8,0],[16,8,4],[24,8,8],[32,0,12],[40,0,0],[48,0,4],[56,0,8]];function DA(i,e,t,r,n,s){for(var o=0;o<8;o++)for(var a=i[e+o]||0,l=0;l<4;l++){var c=(3-l)*s+(7-o),h=a>>l&1|(a>>l+4&1)<<1;t[n*s+r+c]=h}}function IA(i,e,t,r,n,s){for(var o=0;o<8;o++){for(var a=0,l=0;l<4;l++){var c=(3-l)*s+(7-o),h=(t[n*s+r+c]||0)&3;h&1&&(a|=1<<l),h&2&&(a|=1<<l+4)}i[e+o]=a}}function sg(i){return i.w===16&&i.h===16?qA:jA}function k$(i){return sg(i).length*8}function FA(i,e){for(var t=e.w,r=e.h,n=e.count||1,s=e.wpimg||k$(e),o=sg(e),a=[],l=0;l<n;l++){for(var c=new Array(t*r).fill(0),h=l*s,O=0;O<o.length;O++){var[u,f,p]=o[O];DA(i,h+u,c,f,p,t)}a.push(new Uint8Array(c))}return a}function BA(i,e){for(var t=e.w,r=e.h,n=e.count||i.length,s=e.wpimg||k$(e),o=sg(e),a=new Array(s*n).fill(0),l=0;l<n;l++)for(var c=i[l]||new Uint8Array(t*r),h=l*s,O=0;O<o.length;O++){var[u,f,p]=o[O];IA(a,h+u,c,f,p,t)}return a}function NA(i,e){if(e.pacstrip)return FA(i,e);var t=e.w,r=e.h,n=e.count||1,s=e.bpp||1,o=e.np||1,a=e.bpw||8,l=e.sl||Math.ceil(t*s/a),c=(1<<s)-1,h=e.pofs||l*r*n,O=e.skip||0,u=e.wpimg||l*r,f=l;e.il&&(u=l,f=l*n);for(var p=[],m=0;m<n;m++){for(var S=[],w=0;w<r;w++)for(var Z=e.flip?r-1-w:w,R=u*m+Z*f,A=0,k=0;k<t;k++){var P=0,C=rg(R,e.remap);e.reindex&&([C,A]=ng(k,e.reindex),C+=R);for(var z=0;z<o;z++){var I=i[C+z*h+O];P|=((e.brev?I>>a-A-s:I>>A)&c)<<z*s}S.push(P),A+=s,A>=a&&!e.reindex&&(R+=1,A=0)}p.push(new Uint8ALine truncated
`&&t++;return t}function R$(i,e){for(var t=/[/;][*;]([{].+[}])[*;][/;]/g,r=[],n;n=t.exec(i);){var s=n.index+n[0].length,o;e?o=i.indexOf("end",s):n[0].startsWith(";;")?(o=i.indexOf(";;",s),o==i.indexOf(";;{",s)&&(o=-1)):o=i.indexOf(";",s);var a=w$(i,n.index),l=n[0],c=o>=0?w$(i,o):"???";if(o<0){var h=e?'"end"':n[0].startsWith(";;")?'";;"':'";"';r.push({header:l,startline:a,endline:c,error:`No closing ${h} found after asset header`})}else if(o<=s)r.push({header:l,startline:a,endline:c,error:"Empty data block after asset header"});else try{var O=n[1].replace(/([A-Za-z]+):/g,'"$1":'),u=JSON.parse(O),f=/#embed\s+"(.+?)"/.exec(i.substring(s,o)),p=f?f[1]:void 0;r.push({header:l,startline:a,endline:c,fmt:u,start:s,end:o,embedFile:p})}catch(m){r.push({header:l,startline:a,endline:c,error:`Invalid asset format: ${m.message}`})}}return r}function C$(i,e,t){if(t(e))return e;var r=i.lastIndexOf("/");if(r>=0){var n=i.substring(0,r+1)+e;if(t(n))return n}return null}function GA(i,e){if(e.destfmt&&(e=e.destfmt),e.pacstrip)return BA(i,e);var t=e.w,r=e.h,n=e.count||1,s=e.bpp||1,o=e.np||1,a=e.bpw||8,l=e.sl||Math.ceil(e.w*s/a),c=(1<<s)-1,h=e.pofs||l*r*n,O=e.skip||0,u=e.wpimg||l*r,f=l;e.il&&(u=l,f=l*n);var p=e.il?f*r:u*n,m;o>0&&e.sl?m=new Uint8Array(p):a<=8?m=new Uint8Array(p*o):m=new Uint32Array(p*o);for(var S=0;S<n;S++)for(var w=i[S],Z=0,R=0;R<r;R++)for(var A=e.flip?r-1-R:R,k=S*u+A*f,P=0,C=0;C<t;C++){var z=w[Z++],I=rg(k,e.remap);e.reindex&&([I,P]=ng(C,e.reindex),I+=k);for(var Oe=0;Oe<o;Oe++){var se=z>>Oe*s&c;m[I+Oe*h+O]|=e.brev?se<<a-P-s:se<<P}P+=s,P>=a&&!e.reindex&&(k+=1,P=0)}return m}function y$(i,e,t,r,n,s,o){for(var a=[],l=0;l<i.length;l++){var c=i[l],h=4278190080;h|=(c>>e&(1<<t)-1)<<8-t,h|=(c>>r&(1<<n)-1)<<16-n,h|=(c>>s&(1<<o)-1)<<24-o,a.push(h)}return a}function HA(i){var e=(i>>0&1)*33+(i>>1&1)*71+(i>>2&1)*151,t=(i>>3&1)*33+(i>>4&1)*71+(i>>5&1)*151,r=(i>>6&1)*81+(i>>7&1)*174;return 4278190080|r<<16|t<<8|e}function KA(i){var e=i.pal;if(typeof e=="number"){var t=Math.floor(Math.abs(e/100)%10),r=Math.floor(Math.abs(e/10)%10),n=Math.floor(Math.abs(e)%10);return 1<<t+r+n}else{if(e==="pacman")return 256;var s=Z$[e];if(s)return s.length;throw new Error("No palette named "+e)}}function $$(i,e){var t=e.pal,r;if(typeof t=="number"){var n=Math.floor(Math.abs(t/100)%10),s=Math.floor(Math.abs(t/10)%10),o=Math.floor(Math.abs(t)%10);t>=0?r=y$(i,0,n,n,s,n+s,o):r=y$(i,n+s,o,n,s,0,n)}else if(t==="pacman"){r=[];for(var a=0;a<i.length;a++)r.push(HA(i[a]))}else{var l=Z$[t];if(l)r=new Uint32Array(i).map(c=>l[c&l.length-1]|4278190080);else throw new Error("No palette named "+t)}return r}var Z$={gb:[13686916,8890444,5401396,2961698],nes:[5395026,11796480,10485760,11599933,7602281,91,95,6208,12048,543240,26368,1196544,7153664,0,0,0,12899815,16728064,14421538,16729963,14090399,6818519,6588,21681,27227,35843,43776,2918400,10777088,0,0,0,16316664,16755516,16742785,16735173,16730354,14633471,4681215,46327,57599,58229,259115,7911470,15065624,7895160,0,0,16777215,16773822,16300216,16300248,16758527,16761855,13095423,10148607,8973816,8650717,12122296,16119980,16777136,16308472,0,0],ap2lores:[0,16711935,127,8323199,32512,8355711,191,255,12549888,16760576,12566463,16744319,65280,16776960,49023,16777215],vcs:[0,0,4210752,4210752,7105644,7105644,9474192,9474192,11579568,11579568,13158600,13158600,14474460,14474460,16053492,16053492,17476,17476,1074276,1074276,2393220,2393220,3448992,3448992,4241592,4241592,5296336,5296336,6088936,6088936,6880508,6880508,10352,10352,1328260,1328260,2645144,2645144,3963052,3963052,5016764,5016764,6070476,6070476,6862044,6862044,7915756,7915756,6276,6276,1586328,1586328,3166380,3166380,4745408,4745408,6062288,6062288,7378144,7378144,8431852,8431852,9747708,9747708,136,136,2105500,2105500,3947696,3947696,5789888,5789888,7368912,7368912,8947936,8947936,10526956,10526956,11842812,11842812,6029432,6029432,7610508,7610508,8928416,8928416,10246320,10246320,11563200,11563200,12616912,12616912,13671644,13671644,14725356,14725356,7864392,7864392,9445472,9445472,10763384,10763384,12081292,12081292,13398176,13398176,14451892,14451892,15506628,15506628,16560340,16560340,8650772,8650772,9969712,9969712,11287628,11287628,12605544,12605544,13660284,13660284,14715028,14715028,15507624,15507624,16561340,16561340,8912896,8912896,10231836,10231836,11550776,11550776,12606544,12606544,13661288,13661288,14716028,14716028,15508624,15508624,16562340,16562340,8132608,8132608,9451548,9451548,11031608,11031608,12349520,12349520,13404264,13404264,14457980,14457980,15512720,15512720,16566436,16566436,6040576,6040576,7883804,7883804,9463864,9463864,11306064,11306064,12622952,12622952,13939836,13939836,15256720,15256720,16572580,16572580,2898944,2898944,4742172,4742172,6585400,6585400,8428624,8428624,9745512,9745512,11325564,11325564,12641424,12641424,13958308,13958308,15360,15360,2120736,2120736,4226112,4226112,6069340,6069340,7648372,7648372,9228428,9228428,10806436,10806436,12123320,12123320,14356,14356,1858612,1858612,3701840,3701840,5281900,5281900,68 Line truncated
`,await aP(i),ie.newfile?!r&&!t?Qe('No build tool for "'+i+'" on this platform; project will not build.'):r?fP(!0,!0):Tt("No skeleton file for "+t+" on this platform; using blank file."):Tt('Could not find file "'+i+'"<br><br>Creating new '+(r?t:"blank")+" file."),delete ie.newfile,MO()}}function Qg(i){if(i=="/")ie={repo:"/"};else if(i.indexOf("://")>=0){var e=ua(i);e&&(ie={repo:e.repopath})}else ie.platform=le,ie.file=i;Yn()}async function FE(i){var e=hu(v.getToolForFilename(i));try{return await $.get("presets/"+Et(le)+"/skeleton."+e,"text")}catch(t){return console.log(t+""),null}}function wg(i){return i.indexOf(" ")>=0?(Qe("No spaces in filenames, please."),!1):!0}async function BE(i){var e=Et(le),t={},r=[];for(var n of i){var s=v.getToolForFilename("test"+n);t[s]||(t[s]=[],r.push(s)),t[s].push(n)}var o=r.map(h=>$.ajax({url:"presets/"+e+"/skeleton."+hu(h),type:"HEAD"}).then(()=>h,()=>null)),a=await Promise.all(o),l=[];for(var c of a)c!=null&&l.push({tool:c,extensions:t[c]});return l}async function NE(i){var e=await BE(v.getDefaultExtensions()),t,r;return e.length===0?(t=v.getDefaultExtensions(),r=t.join(" ")):(t=e.reduce((n,s)=>n.concat(s.extensions),[]),r=e.map(n=>n.extensions.join(" ")).join("<br>")),bootbox.prompt({title:"Enter the name of your new main source file.<br><br><span class='dialog-help'>"+r+"</span>",placeholder:"newfile"+t[0],callback:n=>{if(n&&n.trim().length>0){if(!wg(n))return;n.indexOf(".")<0&&(n+=t[0]);var s=n;ie.newfile="1",Qg(s)}}}),!0}function GE(i){let e=$('<input type="file" multiple accept="*" style="display:none">'),t=e[0];e.change(r=>{HE(t.files)}),e.click()}function HE(i){console.log(i);var e=0;function t(){var r=i[e++];if(!r)console.log("Done uploading",e),e>2?(Tt("Files uploaded."),setTimeout(Ka,1e3)):(ie.file=i[0].name,bootbox.confirm({message:"Open '"+an.sanitize(ie.file)+"' as main project file?",buttons:{confirm:{label:"Open As New Project"},cancel:{label:"Include/Link With Project Later"}},callback:o=>{o?Yn():setTimeout(Ka,1e3)}}));else{var n=r.name,s=new FileReader;s.onload=function(o){var a=o.target.result,l=new Uint8Array(a);mn(n,l)||(l=ml(l).replace(`\r
`,`
`)),B.updateFile(n,l),console.log("Uploaded "+n+" "+l.length+" bytes"),t()},s.readAsArrayBuffer(r)}}i&&t()}async function _E(i){var e=window.showDirectoryPicker;e||Qe("This browser can't open local files on your computer, yet. Try Chrome.");var t=await e(),r=t.name,n="__localfs__"+r,s={handle:t},o=fg.createInstance({name:n,version:2});await o.setItem(n,s),ie={localfs:r},zn(!0)}async function RE(i){return new Promise((e,t)=>{bootbox.prompt(on.sanitize(i),r=>{e(r)})})}async function ZE(i){let e={mode:"readwrite"};var t="__localfs__"+i,r=fg.createInstance({name:t,version:2}),n=await r.getItem(t),s=n.handle;console.log(n,s);var o=await s.queryPermission(e);if(console.log(o),o!=="granted"&&(await RE("Request permissions to access filesystem?"),o=await s.requestPermission(e)),o!=="granted"){Qe("Could not get permission to access filesystem.");return}let a={};return{getFileData:async l=>{console.log("getFileData",l);let h=await(await s.getFileHandle(l,{create:!1})).getFile(),O=await(pn(l)?h.arrayBuffer():h.text());return O instanceof ArrayBuffer?new Uint8Array(O):O},setFileData:async(l,c)=>{a[l]=Date.now();let O=await(await s.getFileHandle(l,{create:!0})).createWritable();await O.write(c),await O.close()},onFileSystemUpdate:l=>{if(typeof window.FileSystemObserver=="undefined")return;new window.FileSystemObserver((h,O)=>{for(let f of h)if(f.changedHandle){let u=f.changedHandle.name;if(Date.now()-(a[u]||0)<2e3)continue;l(u)}}).observe(s,{recursive:!0})}}}function lt(){return gt(te.mainPath)}function RQ(){return gt(B.getActiveID())}function CE(i){var e=B.getActive(),t=B.getActiveID(),r=e&&e.setData&&!e.setText;if(e&&(e.setText||e.setData)){var n="presets/"+Ut(ce)+"/"+t;vo(n,s=>{if(s==null){ct?Qe("Can only revert built-in examples. If you want to revert all files, You can pull from the repository."):Qe("Can only revert built-in examples.");return}bootbox.confirm("Reset '"+on.sanitize(t)+"' to default?",o=>{o&&(r?(e.setData(s),te.updateFile(t,s)):e.setText(s))})},r?"arraybuffer":"text")}else Qe("Cannot revert the active window. Please choose a text file.")}function UE(i){var e=B.getActive();if(e&&e.getPath){var t=B.getActiveID();bootbox.confirm("Delete '"+on.sanitize(t)+"'?",r=>{r&&Pi.removeItem(t).then(()=>{ie.file==t?($r.unsetLastPreset(),zn()):(Ga(),Pt("Deleted "+t))})})}else Qe("Cannot delete the active window.")}function AE(i){var e=B.getActive();if(e&&e.getPath&&te.getFile(e.getPath())){var t=B.getActiveID();bootbox.prompt({title:"Rename '"+on.sanitize(t)+"' to?",value:t,callback:r=>{var n=te.getFile(e.getPath());if(r&&r!=t&&n){if(!pg(r))return;Pi.removeItem(t).then(()=>Pi.setItem(r,n)).then(()=>{Ga(),alert("Renamed "+t+" to "+r),t==te.mainPath&&dg(r)})}}})}else Qe("Cannot rename the active window.")}function EE(i){let e={},t,r=Q.getPresets?Q.getPresets():[];for(var n=0;n<r.length;n++){var s=r[n],o=s.chapter?s.chapter+". "+s.name:s.name,a=s.id==te.mainPath;s.category?t=$("<optgroup />").attr("label","Examples: "+s.category).appendTo(i):t||(t=$("<optgroup />").attr("label","Examples").appendTo(i)),t.append($("<option />").val(s.id).text(o).attr("selected",a?"selected":null)),a&&($O=s),e[s.id]=o}return e}function zE(i){if(jt&&!ro){var e=0,t=Un();if(t){let n=$("<optgroup />").attr("label","Repositories").appendTo(i);for(let s in t){var r=t[s];r.platform_id&&Ut(r.platform_id)==Ut(ce)&&n.append($("<option />").val(r.url).text(r.url.substring(r.url.indexOf("/"))))}}}}async function F$(i,e,t,r){let n=await Pi.keys();n||(n=[]);let s;for(var o=0;o<n.length;o++){let a=n[o];if(a.startsWith(t)&&!r[a]){s||(s=$("<optgroup />").attr("label",e).appendTo(i));let l=a.substring(t.length);s.append($("<option />").val(a).text(l).attr("selected",a==te.mainPath?"selected":null))}}}function B$(i){i.css("visibility","visible");var e=te.mainPath;i.val()!=e&&i.append($("<option />").val(e).text(e).attr("selected","selected"))}async function Ga(){var i=$("#preset_select").empty();if(ct)i.append($("<option />").val("/").text("Leave Repository")),$("#repo_name").text(gt(ct)+"/").show(),await F$(i,ct,"",{}),B$(i);else{zE(i);var e=EE(i);await F$(i,"Local Files","",e),B$(i)}i.off("change").change(function(t){dg($(this).val().toString())})}function YE(i){var e=$("<p/>");if(i.path!=null){var t=i.line?i.label?`(${i.path} @ ${i.label})`:`(${i.path}:${i.line})`:`(${i.path})`,r=$("<a/>").text(t),n=i.path;n==lt()&&(n=te.mainPath),B.isWindow(n)&&r.click(s=>{var o=B.createOrShow(n);o instanceof ai&&o.navigateToLine(i.line)}),e.append(r),e.append("&nbsp;")}return e.append($("<span/>").text(i.msg)),e}function J$(){$("#error_alert").hide(),ug=!1}function mg(i,e){var t=$("#error_alert_msg").empty();for(var r of i.slice(0,10))t.append(YE(r));$("#error_alert").show(),ug=e;var n=i.find(o=>o.path!=null),s;n&&B.isWindow(n.path==lt()?te.mainPath:n.path)&&(s=()=>{WE(n)})}function eP(i,e){if(e!=null){var t={msg:e,line:0};i instanceof HO&&i.$loc&&(t=Object.create(i.$loc),t.msg=e,console.log(t)),mg([t],!0)}}async function ME(i){if("uppercaseOnly"in i&&r$(i.uppercaseO Line truncated
`),e.SP&&(t+="c.SP < 0x"+$e(e.SP)+`
`)),j.updateFile(n,l),console.log("Uploaded "+n+" "+l.length+" bytes"),t()},s.readAsArrayBuffer(r)}}i&&t()}async function KE(i){var e=window.showDirectoryPicker;e||Qe("This browser can't open local files on your computer, yet. Try Chrome.");var t=await e(),r=t.name,n="__localfs__"+r,s={handle:t},o=Sg.createInstance({name:n,version:2});await o.setItem(n,s),ie={localfs:r},Yn(!0)}async function JE(i){return new Promise((e,t)=>{bootbox.prompt(an.sanitize(i),r=>{e(r)})})}async function e5(i){let e={mode:"readwrite"};var t="__localfs__"+i,r=Sg.createInstance({name:t,version:2}),n=await r.getItem(t),s=n.handle;console.log(n,s);var o=await s.queryPermission(e);if(console.log(o),o!=="granted"&&(await JE("Request permissions to access filesystem?"),o=await s.requestPermission(e)),o!=="granted"){Qe("Could not get permission to access filesystem.");return}let a={};return{getFileData:async l=>{console.log("getFileData",l);let h=await(await s.getFileHandle(l,{create:!1})).getFile(),O=await(mn(l)?h.arrayBuffer():h.text());return O instanceof ArrayBuffer?new Uint8Array(O):O},setFileData:async(l,c)=>{a[l]=Date.now();let O=await(await s.getFileHandle(l,{create:!0})).createWritable();await O.write(c),await O.close()},onFileSystemUpdate:l=>{if(typeof window.FileSystemObserver=="undefined")return;new window.FileSystemObserver((h,O)=>{for(let u of h)if(u.changedHandle){let f=u.changedHandle.name;if(Date.now()-(a[f]||0)<2e3)continue;l(f)}}).observe(s,{recursive:!0})}}}function lt(){return Ot(K.mainPath)}function Mv(){return Ot(j.getActiveID())}function t5(i){var e=j.getActive(),t=j.getActiveID(),r=e&&e.setData&&!e.setText;if(e&&(e.setText||e.setData)){var n="presets/"+Et(le)+"/"+t;yo(n,s=>{if(s==null){ct?Qe("Can only revert built-in examples. If you want to revert all files, You can pull from the repository."):Qe("Can only revert built-in examples.");return}bootbox.confirm("Reset '"+an.sanitize(t)+"' to default?",o=>{o&&(r?(e.setData(s),K.updateFile(t,s)):e.setText(s))})},r?"arraybuffer":"text")}else Qe("Cannot revert the active window. Please choose a text file.")}function i5(i){var e=j.getActive();if(e&&e.getPath){var t=j.getActiveID();bootbox.confirm("Delete '"+an.sanitize(t)+"'?",r=>{r&&Ti.removeItem(t).then(()=>{ie.file==t?(kr.unsetLastPreset(),Yn()):(Ka(),Tt("Deleted "+t))})})}else Qe("Cannot delete the active window.")}function r5(i){var e=j.getActive();if(e&&e.getPath&&K.getFile(e.getPath())){var t=j.getActiveID();bootbox.prompt({title:"Rename '"+an.sanitize(t)+"' to?",value:t,callback:r=>{var n=K.getFile(e.getPath());if(r&&r!=t&&n){if(!wg(r))return;Ti.removeItem(t).then(()=>Ti.setItem(r,n)).then(()=>{Ka(),alert("Renamed "+t+" to "+r),t==K.mainPath&&Qg(r)})}}})}else Qe("Cannot rename the active window.")}function n5(i){let e={},t,r=v.getPresets?v.getPresets():[];for(var n=0;n<r.length;n++){var s=r[n],o=s.chapter?s.chapter+". "+s.name:s.name,a=s.id==K.mainPath;s.category?t=$("<optgroup />").attr("label","Examples: "+s.category).appendTo(i):t||(t=$("<optgroup />").attr("label","Examples").appendTo(i)),t.append($("<option />").val(s.id).text(o).attr("selected",a?"selected":null)),a&&(_O=s),e[s.id]=o}return e}function s5(i){if(Dt&&!no){var e=0,t=An();if(t){let n=$("<optgroup />").attr("label","Repositories").appendTo(i);for(let s in t){var r=t[s];r.platform_id&&Et(r.platform_id)==Et(le)&&n.append($("<option />").val(r.url).text(r.url.substring(r.url.indexOf("/"))))}}}}async function lP(i,e,t,r){let n=await Ti.keys();n||(n=[]);let s;for(var o=0;o<n.length;o++){let a=n[o];if(a.startsWith(t)&&!r[a]){s||(s=$("<optgroup />").attr("label",e).appendTo(i));let l=a.substring(t.length);s.append($("<option />").val(a).text(l).attr("selected",a==K.mainPath?"selected":null))}}}function cP(i){i.css("visibility","visible");var e=K.mainPath;i.val()!=e&&i.append($("<option />").val(e).text(e).attr("selected","selected"))}async function Ka(){var i=$("#preset_select").empty();if(ct)i.append($("<option />").val("/").text("Leave Repository")),$("#repo_name").text(Ot(ct)+"/").show(),await lP(i,ct,"",{}),cP(i);else{s5(i);var e=n5(i);await lP(i,"Local Files","",e),cP(i)}i.off("change").change(function(t){Qg($(this).val().toString())})}function o5(i){var e=$("<p/>");if(i.path!=null){var t=i.line?i.label?`(${i.path} @ ${i.label})`:`(${i.path}:${i.line})`:`(${i.path})`,r=$("<a/>").text(t),n=i.path;n==lt()&&(n=K.mainPath),j.isWindow(n)&&r.click(s=>{var o=j.createOrShow(n);o instanceof ei&&o.navigateToLine(i.line)}),e.append(r),e.append("&nbsp;")}return e.append($("<span/>").text(i.msg)),e}function dP(){$("#error_alert").hide(),vg=!1}function yg(i,e){var t=$("#error_alert_msg").empty();for(var r of i.slice(0,10))t.append(o5(r));$("#error_alert").show(),vg=e;var n=i.find(o=>o.path!=null),s;n&&j.isWindow(n.path==lt()?K.mainPath:n.path)&&(s=()=>{c5(n)})}function pP(i,e){if(e!=null){var t={msg:e,line:0};i instanceof ru&&i.$loc&&(t=Object.create(i.$loc),t.msg=e,console.log(t)),yg([t],!0)}}async function a5(i){if("uppercaseOnly"in i&&m$(i.uppercaseOnly),"erro Line truncated
`),e.SP&&(t+="c.SP < 0x"+ve(e.SP)+`
`),e.HL&&(t+=`c.HL == 0x4000
`),Q.readAddress&&(t+=`this.readAddress(0x1234) == 0x0
`),Q.readVRAMAddress&&(t+=`this.readVRAMAddress(0x1234) != 0x80
`),Q.getRasterScanline&&(t+=`this.getRasterScanline() > 222
`),t}function NE(i){var e=new Function("c","return ("+i+");").bind(Q);ar(),Q.runEval(e),H$=i}function mP(){Q.isRunning()?(B.tick(),PO=!1):PO||(B.tick(),PO=!0),setTimeout(mP,100)}function ZO(i){Q.setFrameRate(i),i>.01?$("#fps_label").text(i.toFixed(2)):$("#fps_label").text("1/"+Math.round(1/i))}function HE(){var i=Q.getFrameRate();i=i/2,i>1e-5&&ZO(i)}function KE(){var i=Q.getFrameRate();i=Math.min(60,i*2),ZO(i)}function JE(){ZO(60/65536)}function e5(){Pr(),ZO(60)}function t5(){B.refresh(!1);var i=B.getActive();if(i.getSourceFile&&i.setTimingResult){var e=Q.newCodeAnalyzer();e.showLoopTimingForPC(0),i.setTimingResult(e)}}function bg(){to&&(Q.setRecorder(null),$("#dbg_record").removeClass("btn_recording"),$("#replaydiv").hide(),gg(),to=!1)}function gP(){to&&Vt.reset()}function bP(){Vt.reset(),Q.setRecorder(Vt),$("#dbg_record").addClass("btn_recording"),$("#replaydiv").show(),to=!0}function i5(){to?bg():bP(),hr()}function r5(){var i=!ai.tracingEnabled;$("#dbg_tracelines").toggleClass("btn_active",i);var e=B.getActive();e instanceof ai?e.setTracingEnabled(i):ai.tracingEnabled=i}function Di(i,e,t){var r=B.getActive();r&&r.insertLinesBefore?bootbox.prompt({title:"Add "+on.sanitize(i)+" File to Project",value:"filename"+on.sanitize(e),callback:n=>{if(n&&n.trim().length>0){if(!pg(n))return;var s=n,o=`
`),v.readAddress&&(t+=`this.readAddress(0x1234) == 0x0
`),v.readVRAMAddress&&(t+=`this.readVRAMAddress(0x1234) != 0x80
`),v.getRasterScanline&&(t+=`this.getRasterScanline() > 222
`),t}function x5(i){var e=new Function("c","return ("+i+");").bind(v);qi(),v.runEval(e),uP=i}function CP(){v.isRunning()?(j.tick(),RO=!1):RO||(j.tick(),RO=!0),setTimeout(CP,100)}function YO(i){v.setFrameRate(i),i>.01?$("#fps_label").text(i.toFixed(2)):$("#fps_label").text("1/"+Math.round(1/i))}function S5(){var i=v.getFrameRate();i=i/2,i>1e-5&&YO(i)}function v5(){var i=v.getFrameRate();i=Math.min(60,i*2),YO(i)}function Q5(){YO(60/65536)}function w5(){Tr(),YO(60)}function y5(){j.refresh(!1);var i=j.getActive();if(i.getSourceFile&&i.setTimingResult){var e=v.newCodeAnalyzer();e.showLoopTimingForPC(0),i.setTimingResult(e)}}function Pg(){io&&(v.setRecorder(null),$("#dbg_record").removeClass("btn_recording"),$("#replaydiv").hide(),EO(),io=!1)}function ZP(){io&&qt.reset()}function UP(){qt.reset(),v.setRecorder(qt),$("#dbg_record").addClass("btn_recording"),$("#replaydiv").show(),io=!0}function $5(){io?Pg():UP(),ur()}function P5(){var i=!ei.tracingEnabled;$("#dbg_tracelines").toggleClass("btn_active",i);var e=j.getActive();e instanceof ei?e.setTracingEnabled(i):ei.tracingEnabled=i}function Fi(i,e,t){var r=j.getActive();r&&r.insertLinesBefore?bootbox.prompt({title:"Add "+an.sanitize(i)+" File to Project",value:"filename"+an.sanitize(e),callback:n=>{if(n&&n.trim().length>0){if(!wg(n))return;var s=n,o=`
`+t(n)+`
`;te.loadFiles([s]).then(a=>{a&&a.length?Qe(n+" already exists; including anyway"):te.updateFile(s,`
`),r.insertLinesBefore(o),eo()})}}}):Qe("Can't insert text in this window -- switch back to main file")}function n5(){var i=lt(),e=Q.getToolForFilename(i);i.endsWith(".c")||e=="sdcc"||e=="cc65"||e=="cmoc"||e=="smlrc"?Di("Header",".h",t=>'#include "'+t+'"'):e=="dasm"||e=="zmac"?Di("Include",".inc",t=>' include "'+t+'"'):e=="ca65"||e=="sdasz80"||e=="vasm"||e=="armips"?Di("Include",".inc",t=>' .include "'+t+'"'):e=="verilator"?Di("Verilog",".v",t=>'`include "'+t+'"'):e=="wiz"?Di("Include",".wiz",t=>'import "'+t+'";'):e=="ecs"?Di("Include",".ecs",t=>'import "'+t+'"'):e=="acme"?Di("Include",".acme",t=>'!src "'+t+'"'):e=="xa"?Di("Include",".xa",t=>'#include "'+t+'"'):e=="dialog"?Di("Include",".dg",t=>'%% #include "'+t+'"'):Qe("Can't add include file to this project type ("+e+")")}function s5(){var i=lt(),e=Q.getToolForFilename(i);i.endsWith(".c")||e=="sdcc"||e=="cc65"||e=="cmoc"||e=="smlrc"?Di("Linked C (or .s)",".c",t=>'//#link "'+t+'"'):i.endsWith("asm")||i.endsWith(".s")||e=="ca65"||e=="lwasm"?Di("Linked ASM",".inc",t=>';#link "'+t+'"'):Qe("Can't add linked file to this project type ("+e+")")}function o5(){if(tt=new Sl($("#toolbar")[0],null),tt.grp.prop("id","run_bar"),tt.add("mod+shift+r","Reset","glyphicon-refresh",dP).prop("id","dbg_reset"),tt.add("mod+shift+h","Pause","glyphicon-pause",nP).prop("id","dbg_pause"),tt.add("mod+shift+g","Go To Address","",r=>{iP()||XO()}),tt.add("mod+shift+g","Resume","glyphicon-play",XO).prop("id","dbg_go"),tt.add("F8","Pause/Resume","",sP),Q.restartAtPC&&tt.add("mod+shift+a","Restart at Cursor","glyphicon-play-circle",hP).prop("id","dbg_restartatline"),tt.newGroup(),tt.grp.prop("id","debug_bar"),Q.runEval&&tt.add("mod+shift+d","Reset and Debug","glyphicon-fast-backward",pP).prop("id","dbg_restart"),Q.stepBack&&tt.add("mod+shift+j","Step Backwards","glyphicon-step-backward",uP).prop("id","dbg_stepback"),Q.step&&tt.add("mod+shift+l","Single Step","glyphicon-step-forward",oP).prop("id","dbg_step"),Q.stepOver&&tt.add("mod+shift+k","Step Over","glyphicon-hand-right",aP).prop("id","dbg_stepover"),Q.runUntilReturn&&tt.add("mod+shift+i","Step Out of Subroutine","glyphicon-hand-up",fP).prop("id","dbg_stepout"),Q.runToVsync&&tt.add("mod+shift+x","Next Frame/Interrupt","glyphicon-forward",lP).prop("id","dbg_tovsync"),(Q.runEval||Q.runToPC)&&!ce.startsWith("verilog")&&tt.add("mod+shift+y","Run To Line","glyphicon-save",OP).prop("id","dbg_toline"),tt.newGroup(),tt.grp.prop("id","xtra_bar"),tt.add("mod+shift+f","Search","glyphicon-search",qm).prop("id","dbg_search"),$(".dropdown-menu").collapse({toggle:!1}),$("#item_new_file").click(kE),$("#item_upload_file").click(TE),$("#item_open_directory").click(_E),$("#item_github_login").click(ZQ),$("#item_github_logout").click(CQ),$("#item_github_import").click(UQ),$("#item_github_publish").click(AQ),$("#item_github_push").click(EQ),$("#item_github_pull").click(zQ),$("#item_repo_delete").click(MQ),$("#item_share_file").click(vQ),$("#item_reset_file").click(CE),$("#item_rename_file").click(AE),$("#item_delete_file").click(UE),Q.runEval?$("#item_debug_expr").click(BE).show():$("#item_debug_expr").hide(),$("#item_download_rom").click(yQ),$("#item_download_file").click($Q),$("#item_download_zip").click(kQ),Q.getDebugSymbolFile?$("#item_download_sym").click(TQ):$("#item_download_sym").hide(),$("#item_download_allzip").click(XQ),$("#item_record_video").click(_Q),Vd()?$("#item_export_cassette").click(wQ):$("#item_export_cassette").hide(),Q.setFrameRate&&Q.getFrameRate&&($("#dbg_slower").click(HE),$("#dbg_faster").click(KE),$("#dbg_slowest").click(JE),$("#dbg_fastest").click(e5)),$("#item_addfile_include").click(n5),$("#item_addfile_link").click(s5),$("#item_request_persist").click(()=>K$(!0,!1)),$("#item_settings").click(uQ),$("#item_keyboard_shortcuts").click(l5),$("#item_asset_editor_help").click(c5),mP(),Q.newCodeAnalyzer&&tt.add(null,"Analyze CPU Timing","glyphicon-time",t5),Q.startProbing&&tt.add(null,"Highlight Executed Lines","glyphicon-fire",r5).prop("id","dbg_tracelines"),Q.setRecorder&&Q.advance&&h5(),Q.showHelp){let{li:r,a:n}=cg("help__"+ce,ag+" Help");$("#help_menu").append(r),$(n).click(s=>{s.preventDefault(),window.open(Q.showHelp(),"_8bws_help")})}let i=Q.getToolForFilename(lt()),e=i&&Hi(i),t=e==null?void 0:e.helpURL;if(t){let r=i+" Help";e.version&&(r+=" ("+e.version+")");let{li:n,a:s}=cg("help__"+i,r);$("#help_menu").append(n),$(s).click(o=>{o.preventDefault(),window.open(t,"_8bws_help")})}$("#item_tool_versions").click(a5)}function a5(){let i=(t,r,n)=>`<tr><td>${t}</td><td>${r}</td><td>${n}</td></tr>`,e=Object.values(yo).filter(t=>t.wasmModule&&t.version).sort((t,r)=>t.name.localeCompare(r.name));bootbox.dialog({title:"Toolchain Versions",onEscape:!0,message:`
`;K.loadFiles([s]).then(a=>{a&&a.length?Qe(n+" already exists; including anyway"):K.updateFile(s,`
`),r.insertLinesBefore(o),to()})}}}):Qe("Can't insert text in this window -- switch back to main file")}function k5(){var i=lt(),e=v.getToolForFilename(i);i.endsWith(".c")||e=="sdcc"||e=="cc65"||e=="cmoc"||e=="smlrc"?Fi("Header",".h",t=>'#include "'+t+'"'):e=="dasm"||e=="zmac"?Fi("Include",".inc",t=>' include "'+t+'"'):e=="ca65"||e=="sdasz80"||e=="vasm"||e=="armips"?Fi("Include",".inc",t=>' .include "'+t+'"'):e=="verilator"?Fi("Verilog",".v",t=>'`include "'+t+'"'):e=="wiz"?Fi("Include",".wiz",t=>'import "'+t+'";'):e=="ecs"?Fi("Include",".ecs",t=>'import "'+t+'"'):e=="acme"?Fi("Include",".acme",t=>'!src "'+t+'"'):e=="xa"?Fi("Include",".xa",t=>'#include "'+t+'"'):e=="dialog"?Fi("Include",".dg",t=>'%% #include "'+t+'"'):Qe("Can't add include file to this project type ("+e+")")}function T5(){var i=lt(),e=v.getToolForFilename(i);i.endsWith(".c")||e=="sdcc"||e=="cc65"||e=="cmoc"||e=="smlrc"?Fi("Linked C (or .s)",".c",t=>'//#link "'+t+'"'):i.endsWith("asm")||i.endsWith(".s")||e=="ca65"||e=="lwasm"?Fi("Linked ASM",".inc",t=>';#link "'+t+'"'):Qe("Can't add linked file to this project type ("+e+")")}function X5(){if(tt=new Ql($("#toolbar")[0],null),tt.grp.prop("id","run_bar"),tt.add("mod+shift+r","Reset","glyphicon-refresh",_P).prop("id","dbg_reset"),tt.add("mod+shift+h","Pause","glyphicon-pause",SP).prop("id","dbg_pause"),tt.add("mod+shift+g","Go To Address","",r=>{gP()||UO()}),tt.add("mod+shift+g","Resume","glyphicon-play",UO).prop("id","dbg_go"),tt.add("F8","Pause/Resume","",vP),v.restartAtPC&&tt.add("mod+shift+a","Restart at Cursor","glyphicon-play-circle",PP).prop("id","dbg_restartatline"),tt.newGroup(),tt.grp.prop("id","debug_bar"),v.runEval&&tt.add("mod+shift+d","Reset and Debug","glyphicon-fast-backward",RP).prop("id","dbg_restart"),v.stepBack&&tt.add("mod+shift+j","Step Backwards","glyphicon-step-backward",XP).prop("id","dbg_stepback"),v.step&&tt.add("mod+shift+l","Single Step","glyphicon-step-forward",QP).prop("id","dbg_step"),v.stepOver&&tt.add("mod+shift+k","Step Over","glyphicon-hand-right",wP).prop("id","dbg_stepover"),v.runUntilReturn&&tt.add("mod+shift+i","Step Out of Subroutine","glyphicon-hand-up",TP).prop("id","dbg_stepout"),v.runToVsync&&tt.add("mod+shift+x","Next Frame/Interrupt","glyphicon-forward",yP).prop("id","dbg_tovsync"),(v.runEval||v.runToPC)&&!le.startsWith("verilog")&&tt.add("mod+shift+y","Run To Line","glyphicon-save",kP).prop("id","dbg_toline"),tt.newGroup(),tt.grp.prop("id","xtra_bar"),tt.add("mod+shift+f","Search","glyphicon-search",Km).prop("id","dbg_search"),$(".dropdown-menu").collapse({toggle:!1}),$("#item_new_file").click(NE),$("#item_upload_file").click(GE),$("#item_open_directory").click(KE),$("#item_github_login").click(Lv),$("#item_github_logout").click(Wv),$("#item_github_import").click(Vv),$("#item_github_publish").click(jv),$("#item_github_push").click(qv),$("#item_github_pull").click(Dv),$("#item_repo_delete").click(Fv),$("#item_share_file").click(_v),$("#item_reset_file").click(t5),$("#item_rename_file").click(r5),$("#item_delete_file").click(i5),v.runEval?$("#item_debug_expr").click(g5).show():$("#item_debug_expr").hide(),$("#item_download_rom").click(Cv),$("#item_download_file").click(Zv),$("#item_download_zip").click(Av),v.getDebugSymbolFile?$("#item_download_sym").click(Ev):$("#item_download_sym").hide(),$("#item_download_allzip").click(zv),$("#item_record_video").click(Yv),Bd()?$("#item_export_cassette").click(Rv):$("#item_export_cassette").hide(),v.setFrameRate&&v.getFrameRate&&($("#dbg_slower").click(S5),$("#dbg_faster").click(v5),$("#dbg_slowest").click(Q5),$("#dbg_fastest").click(w5)),$("#item_addfile_include").click(k5),$("#item_addfile_link").click(T5),$("#item_request_persist").click(()=>fP(!0,!1)),$("#item_settings").click(vv),$("#item_keyboard_shortcuts").click(R5),$("#item_asset_editor_help").click(C5),CP(),v.newCodeAnalyzer&&tt.add(null,"Analyze CPU Timing","glyphicon-time",y5),v.startProbing&&tt.add(null,"Highlight Executed Lines","glyphicon-fire",P5).prop("id","dbg_tracelines"),v.setRecorder&&v.advance&&Z5(),v.showHelp){let{li:r,a:n}=gg("help__"+le,pg+" Help");$("#help_menu").append(r),$(n).click(s=>{s.preventDefault(),window.open(v.showHelp(),"_8bws_help")})}let i=v.getToolForFilename(lt()),e=i&&Ji(i),t=e==null?void 0:e.helpURL;if(t){let r=i+" Help";e.version&&(r+=" ("+e.version+")");let{li:n,a:s}=gg("help__"+i,r);$("#help_menu").append(n),$(s).click(o=>{o.preventDefault(),window.open(t,"_8bws_help")})}$("#item_tool_versions").click(_5)}function _5(){let i=(t,r,n)=>`<tr><td>${t}</td><td>${r}</td><td>${n}</td></tr>`,e=Object.values(Po).filter(t=>t.wasmModule&&t.version).sort((t,r)=>t.name.localeCompare(r.name));bootbox.dialog({title:"Toolchain Versions",onEscape:!0,message:`
<table class="help">
<tr><th>Tool</th><th>Kind</th><th>Version</th></tr>
${e.map(t=>{var r;return i(t.name,t.kind,(r=t.version)!=null?r:"?")}).join(`
`)}
</table>`})}function l5(){let i=/Mac|iPhone|iPad/.test(navigator.platform),e=i?"&#8984;":"Ctrl",t=i?"&#8997;":"Alt",r=i?"&#8679;":"Shift",n=(s,o)=>`<tr><td><kbd>${s}</kbd></td><td>${o}</td></tr>`;bootbox.dialog({title:"Keyboard shortcuts",onEscape:!0,message:`
</table>`})}function R5(){let i=/Mac|iPhone|iPad/.test(navigator.platform),e=i?"&#8984;":"Ctrl",t=i?"&#8679;":"Shift",r=(n,s)=>`<tr><td><kbd>${n}</kbd></td><td>${s}</td></tr>`;bootbox.dialog({title:"Keyboard shortcuts",onEscape:!0,message:`
<table class="help">
<tr><th colspan="2">Custom</th></tr>
${n(`${e}+${r}+F`,"Search symbols, files, and docs")}
${n(`${r}+${t}+F`,"Format document, or selected range(s)")}
${n("Tab","Insert to next tab stop, or indent selected range(s)")}
${n(`${r}+Tab`,"Outdent line(s) or selected range(s)")}
${n("Enter","Insert newline, keep cursor at same column pos")}
<tr><th colspan="2">Standard</th></tr>
<tr><th colspan="2">Editor</th></tr>
${r(`${e}+${t}+F`,"Search symbols, files, and docs")}
${r("Tab","Insert to next tab stop, or indent selected range(s)")}
${r(`${t}+Tab`,"Outdent line(s) or selected range(s)")}
${r(`${e}+${t}+Backspace`,"Delete line")}
<tr>
<td>Built-in</td>
<td>
@@ -121,7 +119,7 @@ PC `+this.addr2str(s)+" "+this.opToString(c,null,p),o[m]=1)}),this.addr2str(r)+n
<a target="_blank" href="https://codemirror.net/docs/ref/#search.searchKeymap">searchKeymap</a>
</td>
</tr>
</table>`,buttons:{ok:{label:"OK",className:"btn-primary"}}})}function c5(){let i=(e,t,r)=>`<tr><td><code>${e}</code></td><td>${t}</td><td>${r}</td></tr>`;bootbox.dialog({title:"Asset Editor Reference",onEscape:!0,message:`
</table>`,buttons:{ok:{label:"OK",className:"btn-primary"}}})}function C5(){let i=(e,t,r)=>`<tr><td><code>${e}</code></td><td>${t}</td><td>${r}</td></tr>`;bootbox.dialog({title:"Asset Editor Reference",onEscape:!0,message:`
<p>Add asset headers in source code as comments containing JSON format descriptors:</p>
<p>
C: <code>/*{w:8,h:8}*/</code> followed by data, terminated by <code>;</code><br>
@@ -160,7 +158,7 @@ PC `+this.addr2str(s)+" "+this.opToString(c,null,p),o[m]=1)}),this.addr2str(r)+n
<tr><td colspan="2"><code>;;{w:8,h:8,art:true};;</code></td><td>8x8 with artifact color (Apple II HGR, bit 7 toggle)</td></tr>
<tr><td colspan="2"><code>/*{w:16,h:16,bpp:4,np:1}*/</code></td><td>16x16 4bpp</td></tr>
<tr><td colspan="2"><code>/*{pal:332,n:16}*/</code></td><td>16-entry RGB332 palette</pre></td></tr>
</table>`,buttons:{ok:{label:"OK",className:"btn-primary"}},size:"large"})}function h5(){var i=$("#replayslider"),e=$("#clockslider"),t=$("#replay_frame"),r=$("#replay_clock");Q.advanceFrameClock||$("#clockdiv").hide();var n=()=>{t.text(Vt.lastSeekFrame+""),r.text(Vt.lastSeekStep+"")},s=l=>{sn();var c=parseInt(i.val().toString()),h=parseInt(e.val().toString());Vt.loadFrame(c,h)>=0&&(e.attr("min",0),e.attr("max",Vt.lastStepCount),n(),kO(Q.saveState()))},o=l=>{sn(),Vt.loadFrame(l)>=0&&(i.val(l),n(),kO(Q.saveState()))},a=l=>{sn();var c=parseInt(i.val().toString());Vt.loadFrame(c,l)>=0&&(e.val(l),n(),kO(Q.saveState()))};Vt.callbackStateChanged=()=>{i.attr("min",0),i.attr("max",Vt.numFrames()),i.val(Vt.currentFrame()),e.val(Vt.currentStep()),n(),Ha(Q.saveState())},i.on("input",s),e.on("input",s),$("#replay_min").click(()=>{o(1)}),$("#replay_max").click(()=>{o(Vt.numFrames())}),$("#replay_back").click(()=>{o(parseInt(i.val().toString())-1)}),$("#replay_fwd").click(()=>{o(parseInt(i.val().toString())+1)}),$("#clock_back").click(()=>{a(parseInt(e.val().toString())-1)}),$("#clock_fwd").click(()=>{a(parseInt(e.val().toString())+1)}),$("#replay_bar").show(),tt.add("mod+shift+e","Start/Stop Replay Recording","glyphicon-record",i5).prop("id","dbg_record")}function O5(){try{var i=window.screen.orientation||window.screen.msOrientation||window.screen.mozOrientation||null;if(i){if(i.type.indexOf("landscape")!==-1)return!0;if(i.type.indexOf("portrait")!==-1)return!1}if("orientation"in window){var e=window.orientation;if(e===0||e===180)return!1;if(e===90||e===270)return!0}}catch(t){}return window.innerWidth>window.innerHeight}async function f5(){if($r.shouldCompleteTour()){await ui("lib/bootstrap-tourist.js");var i=ce.startsWith("vcs"),e=[{element:"#platformsMenuButton",placement:"right",title:"Platform Selector",content:`You're currently on the "<b>`+ce+'</b>" platform. You can choose a different one from the menu.'},{element:"#preset_select",title:"Project Selector",content:"You can choose different code examples, create your own files, or import projects from GitHub."},{element:"#workspace",title:"Code Editor",content:i?"Type your 6502 assembly code into the editor, and it'll be assembled in real-time.":"Type your source code into the editor, and it'll be compiled in real-time."},{element:"#emulator",placement:"left",title:"Emulator",content:"We'll load your compiled code into the emulator whenever you make changes."},{element:"#debug_bar",placement:"bottom",title:"Debug Tools",content:"Use these buttons to set breakpoints, single step through code, pause/resume, and use debugging tools."},{element:"#dropdownMenuButton",title:"Main Menu",content:"Click the menu to create new files, download your code, or share your work with others."},{element:"#sidebar",title:"Sidebar",content:"Pull right to expose the sidebar. It lets you switch between source files, view assembly listings, and use other tools like Disassembler, Memory Browser, and Asset Editor."}];O5()||e.unshift({element:"#controls_top",placement:"bottom",title:"Portrait mode detected",content:"This site works best on desktop browsers. For best results, rotate your device to landscape orientation."}),cs()&&(e.unshift({element:"#dropdownMenuButton",placement:"right",title:"Cookie Consent",content:'Before we start, we should tell you that this website stores cookies and other data in your browser. You can review our <a href="/privacy.html" target="_new">privacy policy</a>.'}),e.push({element:"#booksMenuButton",placement:"left",title:"Books",content:"Get some books that explain how to program all of this stuff, and write some games!"})),ro&&(e.unshift({element:"#dropdownMenuButton",placement:"right",title:"Developer Analytics",content:"BTW, we send stack traces to sentry.io when exceptions are thrown. Hope that's ok."}),e.unshift({element:"#dropdownMenuButton",placement:"right",title:"Welcome to 8bitworkshop Desktop!",content:'The directory "~/8bitworkshop" contains all of your file edits and built ROM images. You can create new projects under the platform directories (e.g. "c64/myproject")'}));var t=new Tour({autoscroll:!1,steps:e,onEnd:()=>{$r.completedTour()}});setTimeout(()=>{t.start()},2500)}}function _O(i){var e=(i.message||i.error||i)+"";if(e.indexOf("QuotaExceededError")>=0)bE();else{var t=i.error||i.reason;t!=null&&t instanceof HO?u5(t):cs()&&Wg(e,t)}}function u5(i){console.log("haltEmulation"),sn(),X5(i)}function d5(){window.addEventListener("error",_O),window.addEventListener("unhandledrejection",_O)}function xP(){window.removeEventListener("error",_O),window.removeEventListener("unhandledrejection",_O)}function zn(i,e){e&&(ie=e),xP(),i?window.location.replace("?"+$.param(ie)):window.location.href="?"+$.param(ie)}function CO(){ce&&(ie.platform=ce),delete ie[""],history.replaceState({},"","?"+$.param(ie)+window.location.hash)}function SP(i){if(!i||i==="#")return null;var e=decodeURIComponent(i.substring(1));return e.startsWith("asseteditor/")?"#asseteditor"Line truncated
</table>`,buttons:{ok:{label:"OK",className:"btn-primary"}},size:"large"})}function Z5(){var i=$("#replayslider"),e=$("#clockslider"),t=$("#replay_frame"),r=$("#replay_clock");v.advanceFrameClock||$("#clockdiv").hide();var n=()=>{t.text(qt.lastSeekFrame+""),r.text(qt.lastSeekStep+"")},s=l=>{on();var c=parseInt(i.val().toString()),h=parseInt(e.val().toString());qt.loadFrame(c,h)>=0&&(e.attr("min",0),e.attr("max",qt.lastStepCount),n(),CO(v.saveState()))},o=l=>{on(),qt.loadFrame(l)>=0&&(i.val(l),n(),CO(v.saveState()))},a=l=>{on();var c=parseInt(i.val().toString());qt.loadFrame(c,l)>=0&&(e.val(l),n(),CO(v.saveState()))};qt.callbackStateChanged=()=>{i.attr("min",0),i.attr("max",qt.numFrames()),i.val(qt.currentFrame()),e.val(qt.currentStep()),n(),Ja(v.saveState())},i.on("input",s),e.on("input",s),$("#replay_min").click(()=>{o(1)}),$("#replay_max").click(()=>{o(qt.numFrames())}),$("#replay_back").click(()=>{o(parseInt(i.val().toString())-1)}),$("#replay_fwd").click(()=>{o(parseInt(i.val().toString())+1)}),$("#clock_back").click(()=>{a(parseInt(e.val().toString())-1)}),$("#clock_fwd").click(()=>{a(parseInt(e.val().toString())+1)}),$("#replay_bar").show(),tt.add("mod+shift+e","Start/Stop Replay Recording","glyphicon-record",$5).prop("id","dbg_record")}function U5(){try{var i=window.screen.orientation||window.screen.msOrientation||window.screen.mozOrientation||null;if(i){if(i.type.indexOf("landscape")!==-1)return!0;if(i.type.indexOf("portrait")!==-1)return!1}if("orientation"in window){var e=window.orientation;if(e===0||e===180)return!1;if(e===90||e===270)return!0}}catch(t){}return window.innerWidth>window.innerHeight}async function A5(){if(kr.shouldCompleteTour()){await pi("lib/bootstrap-tourist.js");var i=le.startsWith("vcs"),e=[{element:"#platformsMenuButton",placement:"right",title:"Platform Selector",content:`You're currently on the "<b>`+le+'</b>" platform. You can choose a different one from the menu.'},{element:"#preset_select",title:"Project Selector",content:"You can choose different code examples, create your own files, or import projects from GitHub."},{element:"#workspace",title:"Code Editor",content:i?"Type your 6502 assembly code into the editor, and it'll be assembled in real-time.":"Type your source code into the editor, and it'll be compiled in real-time."},{element:"#emulator",placement:"left",title:"Emulator",content:"We'll load your compiled code into the emulator whenever you make changes."},{element:"#debug_bar",placement:"bottom",title:"Debug Tools",content:"Use these buttons to set breakpoints, single step through code, pause/resume, and use debugging tools."},{element:"#dropdownMenuButton",title:"Main Menu",content:"Click the menu to create new files, download your code, or share your work with others."},{element:"#sidebar",title:"Sidebar",content:"Pull right to expose the sidebar. It lets you switch between source files, view assembly listings, and use other tools like Disassembler, Memory Browser, and Asset Editor."}];U5()||e.unshift({element:"#controls_top",placement:"bottom",title:"Portrait mode detected",content:"This site works best on desktop browsers. For best results, rotate your device to landscape orientation."}),cs()&&(e.unshift({element:"#dropdownMenuButton",placement:"right",title:"Cookie Consent",content:'Before we start, we should tell you that this website stores cookies and other data in your browser. You can review our <a href="/privacy.html" target="_new">privacy policy</a>.'}),e.push({element:"#booksMenuButton",placement:"left",title:"Books",content:"Get some books that explain how to program all of this stuff, and write some games!"})),no&&(e.unshift({element:"#dropdownMenuButton",placement:"right",title:"Developer Analytics",content:"BTW, we send stack traces to sentry.io when exceptions are thrown. Hope that's ok."}),e.unshift({element:"#dropdownMenuButton",placement:"right",title:"Welcome to 8bitworkshop Desktop!",content:'The directory "~/8bitworkshop" contains all of your file edits and built ROM images. You can create new projects under the platform directories (e.g. "c64/myproject")'}));var t=new Tour({autoscroll:!1,steps:e,onEnd:()=>{kr.completedTour()}});setTimeout(()=>{t.start()},2500)}}function AO(i){var e=(i.message||i.error||i)+"";if(e.indexOf("QuotaExceededError")>=0)LE();else{var t=i.error||i.reason;t!=null&&t instanceof ru?E5(t):cs()&&Ng(e,t)}}function E5(i){console.log("haltEmulation"),on(),K5(i)}function z5(){window.addEventListener("error",AO),window.addEventListener("unhandledrejection",AO)}function AP(){window.removeEventListener("error",AO),window.removeEventListener("unhandledrejection",AO)}function Yn(i,e){e&&(ie=e),AP(),i?window.location.replace("?"+$.param(ie)):window.location.href="?"+$.param(ie)}function MO(){le&&(ie.platform=le),delete ie[""],history.replaceState({},"","?"+$.param(ie)+window.location.hash)}function EP(i){if(!i||i==="#")return null;var e=decodeURIComponent(i.substring(1));return e.startsWith("asseteditor/")?"#asseteditor"Line truncated
/*! Bundled license information:
localforage/dist/localforage.js:
@@ -174,4 +172,4 @@ localforage/dist/localforage.js:
dompurify/dist/purify.cjs.js:
(*! @license DOMPurify 3.4.13 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.4.13/LICENSE *)
*/
//# sourceMappingURL=chunk-3GET2PUK.js.map
//# sourceMappingURL=chunk-KW4IDSDB.js.map
+7
View File
@@ -0,0 +1,7 @@
{
"version": 3,
"sources": ["../node_modules/localforage/dist/localforage.js", "../node_modules/dompurify/src/utils.ts", "../node_modules/dompurify/src/tags.ts", "../node_modules/dompurify/src/attrs.ts", "../node_modules/dompurify/src/regexp.ts", "../node_modules/dompurify/src/purify.ts", "../src/ide/ui.ts", "../src/common/toolmeta.ts", "../src/ide/errorreport.ts", "../src/ide/dialogs.ts", "../node_modules/@marijn/find-cluster-break/src/index.js", "../node_modules/@codemirror/state/dist/index.js", "../node_modules/style-mod/src/style-mod.js", "../node_modules/w3c-keyname/index.js", "../node_modules/crelt/index.js", "../node_modules/@codemirror/view/dist/index.js", "../node_modules/@lezer/common/dist/index.js", "../node_modules/@lezer/highlight/dist/index.js", "../node_modules/@codemirror/language/dist/index.js", "../node_modules/@codemirror/autocomplete/dist/index.js", "../src/ide/views/debug.ts", "../node_modules/@codemirror/commands/dist/index.js", "../src/ide/views/tabs.ts", "../src/ide/settings.ts", "../src/ide/storage.ts", "../src/ide/project.ts", "../src/common/workertypes.ts", "../src/ide/services.ts", "../src/common/audio/CommodoreTape.ts", "../src/ide/shareexport.ts", "../src/ide/sync.ts", "../src/ide/search/symbolindex.ts", "../src/common/symbols/index.ts", "../src/ide/search/projectsource.ts", "../src/ide/search/toolchainsource.ts", "../src/ide/search/docssource.ts", "../src/ide/search/service.ts", "../node_modules/@lezer/lr/dist/index.js", "../node_modules/@lezer/cpp/dist/index.js", "../node_modules/@codemirror/lang-cpp/dist/index.js", "../node_modules/@codemirror/search/dist/index.js", "../src/parser/tokens-6502.ts", "parser/lang-6502.grammar.js", "../src/parser/lang-6502.ts", "../src/parser/tokens-z80.ts", "parser/lang-z80.grammar.js", "../src/parser/lang-z80.ts", "../src/parser/lang-wiz.ts", "../src/parser/lang-verilog.ts", "../src/parser/lang-inform6.ts", "../src/parser/lang-dialog.ts", "../src/parser/lang-basic.ts", "../src/parser/lang-fastbasic.ts", "../src/parser/lang-bataribasic.ts", "../node_modules/@lezer/markdown/dist/index.js", "../node_modules/@lezer/html/dist/index.js", "../node_modules/@lezer/css/dist/index.js", "../node_modules/@codemirror/lang-css/dist/index.js", "../node_modules/@lezer/javascript/dist/index.js", "../node_modules/@codemirror/lang-javascript/dist/index.js", "../node_modules/@codemirror/lang-html/dist/index.js", "../node_modules/@codemirror/lang-markdown/dist/index.js", "../src/parser/registry.ts", "../src/themes/cobalt.ts", "../src/themes/disassemblyTheme.ts", "../src/themes/editorTheme.ts", "../src/themes/mbo.ts", "../src/ide/breakcond.ts", "../src/ide/breakpoints.ts", "../src/ide/views/assetdecorations.ts", "../src/ide/views/includedecorations.ts", "../src/ide/views/baseviews.ts", "../src/ide/views/filters.ts", "../src/ide/views/gutter.ts", "../src/ide/views/visuals.ts", "../src/ide/views/editors.ts", "../src/common/vtextscroller.ts", "../src/ide/views/debugviews.ts", "../src/ide/search/debuggerhit.ts", "../src/ide/search/searchview.ts", "../src/ide/pixeleditor.ts", "../src/ide/views/asseteditor.ts", "../src/ide/views/treeviews.ts", "../src/ide/windows.ts", "../src/ide/search/listinglocation.ts"],
"sourcesContent": ["/*!\n localForage -- Offline Storage, Improved\n Version 1.10.0\n https://localforage.github.io/localForage\n (c) 2013-2017 Mozilla, Apache License 2.0\n*/\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.localforage = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw (f.code=\"MODULE_NOT_FOUND\", f)}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){\n(function (global){\n'use strict';\nvar Mutation = global.MutationObserver || global.WebKitMutationObserver;\n\nvar scheduleDrain;\n\n{\n if (Mutation) {\n var called = 0;\n var observer = new Mutation(nextTick);\n var element = global.document.createTextNode('');\n observer.observe(element, {\n characterData: true\n });\n scheduleDrain = function () {\n element.data = (called = ++called % 2);\n };\n } else if (!global.setImmediate && typeof global.MessageChannel !== 'undefined') {\n var channel = new global.MessageChannel();\n channel.port1.onmessage = nextTick;\n scheduleDrain = function () {\n channel.port2.postMessage(0);\n };\n } else if ('document' in global && 'onreadystatechange' in global.document.createElement('script')) {\n scheduleDrain = function () {\n\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var scriptEl = global.document.createElement('script');\n scriptEl.onreadystatechange = function () {\n nextTick();\n\n scriptEl.onreadystatechange = null;\n scriptEl.parentNode.removeChild(scriptEl);\n scriptEl = null;\n };\n global.document.documentElement.appendChild(scriptEl);\n };\n } else {\n scheduleDrain = function () {\n setTimeout(nextTick, 0);\n };\n }\n}\n\nvar draining;\nvar queue = [];\n//named nextTick for less confusing stack traces\nfunction nextTick() {\n draining = true;\n var i, oldQueue;\n var len = queue.length;\n while (len) {\n oldQueue = queue;\n queue = [];\n i = -1;\n while (++i < len) {\n oldQueue[i]();\n }\n len = queue.length;\n }\n draining = false;\n}\n\nmodule.exports = immediate;\nfunction immediate(task) {\n if (queue.push(task) === 1 && !draining) {\n scheduleDrain();\n }\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],2:[function(_dereq_,module,exports){\n'use strict';\nvar immediate = _dereq_(1);\n\n/* istanbul ignore next */\nfunction INTERNAL() {}\n\nvar handlers = {};\n\nvar REJECTED = ['REJECTED'];\nvar FULFILLED = ['FULFILLED'];\nvar PENDING = ['PENDING'];\n\nmodule.exports = Promise;\n\nfunction Promise(resolver) {\n if (typeof resolver !== 'function') {\n throw new TypeError('resolver must be a function');\n }\n this.state = PENDING;\n this.queue = [];\n this.outcome = void 0;\n if (resolver !== INTERNAL) {\n safelyResolveThenable(this, resolver);\n }\n}\n\nPromise.prototype[\"catch\"] = function (onRejected) {\n return this.then(null, onRejected);\n};\nPromise.prototype.then = function (onFulfilled, onRejected) {\n if (typeof onFulfilled !== 'function' && this.state === FULFILLED ||\n typeof onRejected !== 'function' && this.state === REJECTED) {\n return this;\n }\n var promise = new this.constructor(INTERNAL);\n if (this.state !== PENDING) {\n var resolver = this.state === FULFILLED ? onFulfilled : onRejected;\n unwrap(promise, resolver, this.outcome);\n } else {\n this.queue.push(new QueueItem(promise, onFulfilled, onRejected));\n }\n\n return promise;\n};\nfunction QueueItem(promise, onFulfilled, onRejected) {\n this.promise = promise;\n if (typeof onFulfilled === 'function') {\n this.onFulfilled = onFulfilled;\n this.callFulfilled = this.otherCallFulfilled;\n }\n if (typeof onRejected === 'function') {\n this.onRejected = onRejected;\n this.callRejected = this.otherCallRejected;\n }\n}\nQueueItem.prototype.callFulfilled = function (value) {\n handlers.resolve(this.promise, value);\n};\nQueueItem.prototype.otherCallFulfilled = function (value) {\n unwrap(this.promise, this.onFulfilled, value);\n};\nQueueItem.prototype.callLine truncated
"mappings": "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 truncated
"names": ["require_localforage", "__commonJSMin", "exports", "module", "f", "g", "define", "e", "t", "n", "r", "s", "o", "u", "a", "__require", "i", "l", "_dereq_", "global", "Mutation", "scheduleDrain", "called", "observer", "nextTick", "element", "channel", "scriptEl", "draining", "queue", "oldQueue", "len", "immediate", "task", "INTERNAL", "handlers", "REJECTED", "FULFILLED", "PENDING", "Promise", "resolver", "safelyResolveThenable", "onRejected", "onFulfilled", "promise", "unwrap", "QueueItem", "value", "func", "returnValue", "self", "result", "tryCatch", "getThen", "thenable", "error", "obj", "then", "onError", "onSuccess", "tryToUnwrap", "out", "resolve", "reject", "reason", "all", "iterable", "values", "resolved", "allResolver", "resolveFromAll", "outValue", "race", "response", "_typeof", "_classCallCheck", "instance", "Constructor", "getIDB", "idb", "isIndexedDBValid", "isSafari", "hasFetch", "createBlob", "parts", "properties", "Builder", "builder", "Promise$1", "executeCallback", "callback", "executeTwoCallbacks", "errorCallback", "normalizeKey", "key", "getCallback", "DETECT_BLOB_SUPPORT_STORE", "supportsBlobs", "dbContexts", "toString", "READ_ONLY", "READ_WRITE", "_binStringToArrayBuffer", "bin", "length", "buf", "arr", "_checkBlobSupportWithoutCaching", "txn", "blob", "matchedChrome", "matchedEdge", "_checkBlobSupport", "_deferReadiness", "dbInfo", "dbContext", "deferredOperation", "_advanceReadiness", "_rejectReadiness", "err", "_getConnection", "upgradeNeeded", "createDbContext", "dbArgs", "openreq", "db", "ex", "_getOriginalConnection", "_getUpgradedConnection", "_isUpgradeNeeded", "defaultVersion", "isNewStore", "isDowngrade", "isUpgrade", "incVersion", "_encodeBlob", "reader", "base64", "_decodeBlob", "encodedBlob", "arrayBuff", "_isEncodedBlob", "_fullyReady", "_tryReconnect", "forages", "forage", "createTransaction", "mode", "retries", "tx", "_initStorage", "options", "initPromises", "ignoreErrors", "j", "k", "getItem", "transaction", "store", "req", "iterate", "iterator", "iterationNumber", "cursor", "setItem", "blobSupport", "removeItem", "clear", "advanced", "keys", "dropInstance", "currentConfig", "isCurrentDb", "dbPromise", "newVersion", "dropObjectPromise", "_forage2", "dropDBPromise", "_forage", "asyncStorage", "isWebSQLValid", "BASE_CHARS", "BLOB_TYPE_PREFIX", "BLOB_TYPE_PREFIX_REGEX", "SERIALIZED_MARKER", "SERIALIZED_MARKER_LENGTH", "TYPE_ARRAYBUFFER", "TYPE_BLOB", "TYPE_INT8ARRAY", "TYPE_UINT8ARRAY", "TYPE_UINT8CLAMPEDARRAY", "TYPE_INT16ARRAY", "TYPE_INT32ARRAY", "TYPE_UINT16ARRAY", "TYPE_UINT32ARRAY", "TYPE_FLOAT32ARRAY", "TYPE_FLOAT64ARRAY", "TYPE_SERIALIZED_MARKER_LENGTH", "toString$1", "stringToBuffer", "serializedString", "bufferLength", "p", "encoded1", "encoded2", "encoded3", "encoded4", "buffer", "bytes", "bufferToString", "base64String", "serialize", "valueType", "marker", "fileReader", "str", "deserialize", "type", "blobType", "matcher", "localforageSerializer", "createDbTable", "_initStorage$1", "dbInfoPromise", "tryExecuteSql", "sqlStatement", "args", "results", "getItem$1", "iterate$1", "rows", "item", "_setItem", "retriesLeft", "originalValue", "sqlError", "setItem$1", "removeItem$1", "clear$1", "length$1", "key$1", "keys$1", "getAllStoreNames", "storeNames", "dropInstance$1", "operationInfo", "dropTable", "storeName", "operations", "webSQLStorage", "isLocalStorageValid", "_getKeyPrefix", "defaultConfig", "keyPrefix", "checkIfLocalStorageThrows", "localStorageTestKey", "_isLocalStorageUsable", "_initStorage$2", "clear$2", "getItem$2", "iterate$2", "keyPrefixLength", "key$2", "keys$2", "itemKey", "length$2", "removeItem$2", "setItem$2", "dropInstance$2", "localStorageWrapper", "sameValue", "x", "y", "includes", "array", "searchElement", "isArray", "arg", "DefinedDrivers", "DriverSupport", "DefaultDrivers", "DefaultDriverOrder", "OptionalDriverMethods", "LibraryMethods", "DefaultConfig", "callWhenReady", "localForageInstance", "libraryMethod", "_args", "extend", "_key", "LocalForage", "driverTypeKey", "driver", "driverName", "driverObject", "complianceError", "driverMethods", "driverMethodName", "isRequired", "configureMissingMethods", "methodNotImplementedFactory", "methodName", "_i", "_len", "optionalDriverMethod", "setDriverSupport", "support", "getDriverPromise", "serializerPromise", "drivers", "supportedDrivers", "setDriverToConfig", "extendSelfWithDriver", "initDriver", "currentDriverIndex", "driverPromiseLoop", "oldDriverSetDone", "libraryMethodsAndProperties", "localforage_js", "entries", "Object", "setPrototypeOf", "isFrozen", "getPrototypeOf", "getOwnPropertyDescriptor", "freeze", "seal", "create", "_ref", "Reflect", "apply", "construct", "x", "func", "thisArg", "_len", "arguments", "length", "args", "Array", "_key", "Func", "_len2", "_key2", "arrayForEach", "unapply", "prototype", "forEach", "arrayLastIndexOf", "lastIndexOf", "arrayPop", "pop", "arrayPush", "push", "arraySplice", "splice", "arrayIsArray", "isArray", "stringToLowerCase", "String", "toLoLine truncated
}
@@ -1,4 +1,4 @@
import{B as w,a as b,b as v,z as P}from"./chunk-G4HBIXG4.js";import{P as S,S as p,U as C}from"./chunk-TYDI7JZQ.js";var o=class{constructor(t){this.loaded=!1;this.preinitted=!1;this.started=!1;this.romtype="cart";this.running=!1;this.initluavars=!1;this.mainElement=t,this.timer=new C(20,this.poll.bind(this))}luacall(t){return this.js_lua_string||(this.js_lua_string=Module.cwrap("_Z13js_lua_stringPKc","string",["string"])),this.js_lua_string(t||"")}_pause(){this.running=!1,this.timer.stop()}pause(){this.loaded&&this.running&&(this.luacall("emu.pause()"),this._pause())}_resume(){this.luacall("emu.unpause()"),this.running=!0,this.timer.start()}resume(){this.loaded&&!this.running&&this._resume()}reset(){this.loaded&&(this.luacall("manager:machine():soft_reset()"),this.running=!0,this.initluavars=!1)}isRunning(){return this.running}bufferConsoleOutput(t){typeof t=="string"&&console.log(t)}startModule(t,e){this.started=!0;var r=this.romfn=this.romfn||e.romfn,n=this.romdata=this.romdata||e.romdata||new p(e.romsize).mem,g=this.romtype=this.romtype||e.romtype,a=this.video=new S(this.mainElement,e.width,e.height);a.create(),$(a.canvas).attr("id","canvas"),console.log("loading",e.jsfile);var u=[e.driver,"-debug","-debugger","none","-verbose","-window","-nokeepaspect","-resolution",a.canvas.width+"x"+a.canvas.height];r&&u.push("-"+g,r),e.extraargs&&(u=u.concat(e.extraargs)),console.log(u),window.JSMESS={},window.Module={arguments:u,screenIsReadOnly:!0,print:this.bufferConsoleOutput,canvas:a.canvas,doNotCaptureKeyboard:!0,keyboardListeningElement:a.canvas,preInit:()=>{console.log("loading FS"),ENV.SDL_EMSCRIPTEN_KEYBOARD_ELEMENT="canvas",e.cfgfile&&(FS.mkdir("/cfg"),FS.writeFile("/cfg/"+e.cfgfile,e.cfgdata,{encoding:"utf8"})),e.biosfile&&(FS.mkdir("/roms"),FS.mkdir("/roms/"+e.driver),FS.writeFile("/roms/"+e.biosfile,e.biosdata,{encoding:"binary"})),FS.mkdir("/emulator"),r&&FS.writeFile(r,n,{encoding:"binary"}),e.preInit&&e.preInit(self),this.preinitted=!0},preRun:[()=>{$(a.canvas).click(i=>{a.canvas.focus()}),this.loaded=!0,console.log("about to run...")}]};var d,c,m=$.Deferred(),f=$.Deferred();if(e.cfgfile&&(d=$.get("mame/cfg/"+e.cfgfile,i=>{e.cfgdata=i,console.log("loaded "+e.cfgfile)},"text")),e.biosfile){var s=new XMLHttpRequest;s.open("GET","mame/roms/"+e.biosfile,!0),s.responseType="arraybuffer",s.onload=i=>{e.biosdata=new Uint8Array(s.response),console.log("loaded "+e.biosfile),m.resolve()},s.ontimeout=function(i){throw Error("Timeout loading "+e.biosfile)},s.send()}else m.resolve();c=$.get("mame/debugger.lua",i=>{this.luadebugscript=i,console.log("loaded debugger.lua")},"text");{var l=new XMLHttpRequest;l.open("GET","mame/"+e.jsfile.replace(".js",".wasm"),!0),l.responseType="arraybuffer",l.onload=i=>{console.log("loaded WASM file"),window.Module.wasmBinary=new Uint8Array(l.response),f.resolve()},l.ontimeout=function(i){throw Error("Timeout loading "+e.jsfile)},l.send()}$.when(c,d,m,f).done(()=>{var i=document.createElement("script");i.src="mame/"+e.jsfile,document.getElementsByTagName("head")[0].appendChild(i),console.log("created script element")}),window.mamelua=i=>(this.initlua(),[i,this.luacall(i)])}loadROMFile(t){this.romdata=t,this.preinitted&&this.romfn&&FS.writeFile(this.romfn,t,{encoding:"binary"})}loadRegion(t,e){if(this.loaded&&e.length>0){for(var r='rgn = manager:machine():memory().regions["'+t+`"]
import{B as w,a as b,b as v,z as P}from"./chunk-4676AC7I.js";import{P as S,S as p,U as C}from"./chunk-TYDI7JZQ.js";var o=class{constructor(t){this.loaded=!1;this.preinitted=!1;this.started=!1;this.romtype="cart";this.running=!1;this.initluavars=!1;this.mainElement=t,this.timer=new C(20,this.poll.bind(this))}luacall(t){return this.js_lua_string||(this.js_lua_string=Module.cwrap("_Z13js_lua_stringPKc","string",["string"])),this.js_lua_string(t||"")}_pause(){this.running=!1,this.timer.stop()}pause(){this.loaded&&this.running&&(this.luacall("emu.pause()"),this._pause())}_resume(){this.luacall("emu.unpause()"),this.running=!0,this.timer.start()}resume(){this.loaded&&!this.running&&this._resume()}reset(){this.loaded&&(this.luacall("manager:machine():soft_reset()"),this.running=!0,this.initluavars=!1)}isRunning(){return this.running}bufferConsoleOutput(t){typeof t=="string"&&console.log(t)}startModule(t,e){this.started=!0;var r=this.romfn=this.romfn||e.romfn,n=this.romdata=this.romdata||e.romdata||new p(e.romsize).mem,g=this.romtype=this.romtype||e.romtype,a=this.video=new S(this.mainElement,e.width,e.height);a.create(),$(a.canvas).attr("id","canvas"),console.log("loading",e.jsfile);var u=[e.driver,"-debug","-debugger","none","-verbose","-window","-nokeepaspect","-resolution",a.canvas.width+"x"+a.canvas.height];r&&u.push("-"+g,r),e.extraargs&&(u=u.concat(e.extraargs)),console.log(u),window.JSMESS={},window.Module={arguments:u,screenIsReadOnly:!0,print:this.bufferConsoleOutput,canvas:a.canvas,doNotCaptureKeyboard:!0,keyboardListeningElement:a.canvas,preInit:()=>{console.log("loading FS"),ENV.SDL_EMSCRIPTEN_KEYBOARD_ELEMENT="canvas",e.cfgfile&&(FS.mkdir("/cfg"),FS.writeFile("/cfg/"+e.cfgfile,e.cfgdata,{encoding:"utf8"})),e.biosfile&&(FS.mkdir("/roms"),FS.mkdir("/roms/"+e.driver),FS.writeFile("/roms/"+e.biosfile,e.biosdata,{encoding:"binary"})),FS.mkdir("/emulator"),r&&FS.writeFile(r,n,{encoding:"binary"}),e.preInit&&e.preInit(self),this.preinitted=!0},preRun:[()=>{$(a.canvas).click(i=>{a.canvas.focus()}),this.loaded=!0,console.log("about to run...")}]};var d,c,m=$.Deferred(),f=$.Deferred();if(e.cfgfile&&(d=$.get("mame/cfg/"+e.cfgfile,i=>{e.cfgdata=i,console.log("loaded "+e.cfgfile)},"text")),e.biosfile){var s=new XMLHttpRequest;s.open("GET","mame/roms/"+e.biosfile,!0),s.responseType="arraybuffer",s.onload=i=>{e.biosdata=new Uint8Array(s.response),console.log("loaded "+e.biosfile),m.resolve()},s.ontimeout=function(i){throw Error("Timeout loading "+e.biosfile)},s.send()}else m.resolve();c=$.get("mame/debugger.lua",i=>{this.luadebugscript=i,console.log("loaded debugger.lua")},"text");{var l=new XMLHttpRequest;l.open("GET","mame/"+e.jsfile.replace(".js",".wasm"),!0),l.responseType="arraybuffer",l.onload=i=>{console.log("loaded WASM file"),window.Module.wasmBinary=new Uint8Array(l.response),f.resolve()},l.ontimeout=function(i){throw Error("Timeout loading "+e.jsfile)},l.send()}$.when(c,d,m,f).done(()=>{var i=document.createElement("script");i.src="mame/"+e.jsfile,document.getElementsByTagName("head")[0].appendChild(i),console.log("created script element")}),window.mamelua=i=>(this.initlua(),[i,this.luacall(i)])}loadROMFile(t){this.romdata=t,this.preinitted&&this.romfn&&FS.writeFile(this.romfn,t,{encoding:"binary"})}loadRegion(t,e){if(this.loaded&&e.length>0){for(var r='rgn = manager:machine():memory().regions["'+t+`"]
`,n=0;n<e.length;n+=4){var g=e[n]+(e[n+1]<<8)+(e[n+2]<<16)+(e[n+3]<<24);r+="rgn:write_u32("+n+","+g+`)
`}this.luacall(r),this.reset()}}initlua(){this.initluavars||(this.luacall(this.luadebugscript),this.luacall("mamedbg.init()"),this.initluavars=!0)}readAddress(t){return this.initlua(),parseInt(this.luacall("return mem:read_u8("+t+")"))}getCPUReg(t){return this.loaded?(this.initlua(),parseInt(this.luacall("return cpu.state."+t+".value"))):0}grabState(t){return this.initlua(),{c:this.getCPUState(),buf:this.luacall("return string.tohex("+t+")")}}saveState(){return this.grabState("manager:machine():buffer_save()")}loadState(t){return this.initlua(),this.luacall("manager:machine():buffer_load(string.fromhex('"+t.buf+"'))")}poll(){if(this.onBreakpointHit&&this.luacall("return tostring(mamedbg.is_stopped())")=="true"){this._pause();var t=this.grabState("lastBreakState");this.onBreakpointHit(t)}}clearDebug(){this.onBreakpointHit=null,this.loaded&&(this.initlua(),this.luacall("mamedbg.reset()"))}getDebugCallback(){return this.onBreakpointHit}setupDebug(t){this.onBreakpointHit=t}debugcmd(t){this.initlua(),this.luacall(t),this._resume()}runToPC(t){this.debugcmd("mamedbg.runTo("+t.join(",")+")")}runToVsync(){this.debugcmd("mamedbg.runToVsync()")}runUntilReturn(){this.debugcmd("mamedbg.runUntilReturn()")}runEval(){this.reset(),this.step()}step(){this.debugcmd("mamedbg.step()")}getDebugCategories(){return["CPU"]}getDebugInfo(t,e){switch(t){case"CPU":return this.cpuStateToLongString(e.c)}}getDebugTree(){this.initlua();var t=JSON.parse(this.luacall("return table.tojson(manager:machine().devices)")),e=JSON.parse(this.luacall("return table.tojson(manager:machine().images)")),r=JSON.parse(this.luacall("return table.tojson(manager:machine():memory().regions)"));return{devices:t,images:e,regions:r}}},_=class extends o{getPC(){return this.getCPUReg("PC")}getSP(){return this.getCPUReg("SP")}isStable(){return!0}getCPUState(){return{PC:this.getPC(),SP:this.getSP(),A:this.getCPUReg("A"),X:this.getCPUReg("X"),Y:this.getCPUReg("Y"),flags:this.getCPUReg("P")}}disassemble(t,e){return b(t,e(t),e(t+1),e(t+2))}cpuStateToLongString(t){return P(t)}},U=class extends o{getPC(){return this.getCPUReg("PC")}getSP(){return this.getCPUReg("SP")}isStable(){return!0}getCPUState(){return{PC:this.getPC(),SP:this.getSP(),AF:this.getCPUReg("AF"),BC:this.getCPUReg("BC"),DE:this.getCPUReg("DE"),HL:this.getCPUReg("HL"),IX:this.getCPUReg("IX"),IY:this.getCPUReg("IY"),IR:this.getCPUReg("R")+(this.getCPUReg("I")<<8)}}disassemble(t,e){return v(t,e(t),e(t+1),e(t+2),e(t+3))}cpuStateToLongString(t){return w(t)}};export{_ as a,U as b};
//# sourceMappingURL=chunk-ULIQADK2.js.map
//# sourceMappingURL=chunk-OJEFOAZC.js.map
File renamed without changes.
@@ -1,4 +1,4 @@
import{c as ie,k as he,o as ne,r as oe}from"./chunk-G4HBIXG4.js";import{X as ae,a as A,g as w,u}from"./chunk-TYDI7JZQ.js";var L=class{constructor(t,e,r){this.probe=new ne;this.ram=new Uint8Array(16384);this.registers=new Uint8Array(8);this.spriteBuffer=new Uint8Array(256);this.displayOn=!1;this.interruptsOn=!1;this.fb32=t,this.cru=e,this.enableFlicker=r,this.palette=[u(0,0,0),u(0,0,0),u(33,200,66),u(94,220,120),u(84,85,237),u(125,118,252),u(212,82,77),u(66,235,245),u(252,85,84),u(255,121,120),u(212,193,84),u(230,206,128),u(33,176,59),u(201,91,186),u(204,204,204),u(255,255,255)]}reset(){var t;this.ram.fill(0),this.registers.fill(0),this.addressRegister=0,this.statusRegister=0,this.prefetchByte=0,this.latch=!1,this.displayOn=!1,this.interruptsOn=!1,this.screenMode=0,this.bitmapMode=!1,this.textMode=!1,this.colorTable=0,this.nameTable=0,this.charPatternTable=0,this.spriteAttributeTable=0,this.spritePatternTable=0,this.colorTableMask=16383,this.patternTableMask=16383,this.ramMask=16383,this.fgColor=0,this.bgColor=0,this.flicker=this.enableFlicker,this.redrawRequired=!0,this.width=304,this.height=240}drawScanline(t){var e=this.fb32,r=this.width,s=t*r,i=this.screenMode,h=this.textMode,a=this.bitmapMode,n=h?240:256,b=192,o=r-n>>1,d=this.height-b>>1,p=this.fgColor,M=this.bgColor,l=this.ram,v=this.nameTable,V=this.colorTable,P=this.charPatternTable,G=this.colorTableMask,S=this.patternTableMask,ce=this.spriteAttributeTable,de=this.spritePatternTable,$=(this.registers[1]&2)!==0,H=this.registers[1]&1,Z=($?16:8)<<(H?1:0),j=this.flicker?4:32,J=this.palette,N=!1,Q=!1,Y=31,R,f,D,T,C,F,m;if(t>=d&&t<d+b&&this.displayOn){var c=t-d;if(!h){var W=this.spriteBuffer;W.fill(0);var z=0,ee=!1,I=ce,B;for(B=0;B<32&&z<=j&&!ee;B++){var k=l[I];if(k!==208){k>208&&(k-=256),k++;var y=k+Z,U=-1;if(B<8||!a)c>=k&&c<y&&(U=c);else{var X=c&((this.registers[4]&3)<<6|63);X>=k&&X<y?U=X:c>=64&&c<128&&c>=k&&c<y&&(U=c)}if(U!==-1){if(z<j){var te=l[I+1],me=l[I+2]&($?252:255),ge=l[I+3]&15;(l[I+3]&128)!==0&&(te-=32);for(var pe=U-k>>H,Me=de+(me<<3)+pe,E=0;E<Z;E++){var O=te+E;if(O>=0&&O<n){var re=E>>H,Te=l[Me+(re>=8?16:0)];(Te&128>>(re&7))!==0&&(W[O]===0?W[O]=ge+1:N=!0)}}}z++}I+=4}else ee=!0}z>4&&(Q=!0,Y=B)}var _=h?(c>>3)*40:c>>3<<5,x=c&7;for(R=0;R<r;R++){if(R>=o&&R<o+n){var g=R-o;switch(i){case 0:T=l[v+_+(g>>3)],F=l[V+(T>>3)],m=l[P+(T<<3)+x],f=(m&128>>(g&7))!==0?(F&240)>>4:F&15;break;case 2:T=l[v+_+(g>>3)],C=((c&192)<<5)+(T<<3),F=l[V+(C&G)+x],m=l[P+(C&S)+x],f=(m&128>>(g&7))!==0?(F&240)>>4:F&15;break;case 3:T=l[v+_+(g>>3)],x=(c&28)>>2,m=l[P+(T<<3)+x],f=(g&4)===0?(m&240)>>4:m&15;break;case 1:T=l[v+_+Math.floor(g/6)],m=l[P+(T<<3)+x],f=(m&128>>g%6)!==0?p:M;break;case 5:T=l[v+_+Math.floor(g/6)],C=((c&192)<<5)+(T<<3),m=l[P+(C&S)+x],f=(m&128>>g%6)!==0?p:M;break;case 6:T=l[v+_+(g>>3)],x=(c&28)>>2,C=((c&192)<<5)+(T<<3),m=l[P+(C&S)+x],f=(g&4)===0?(m&240)>>4:m&15;break;case 7:f=(g&4)===0?p:M;break}if(f===0&&(f=M),!h){var se=W[g]-1;se>0&&(f=se)}}else f=M;D=J[f],e[s++]=D}}else for(D=J[M],R=0;R<r;R++)e[s++]=D;t===d+b&&(this.statusRegister|=128,this.interruptsOn&&this.cru.setVDPInterrupt(!0)),N&&(this.statusRegister|=32),(this.statusRegister&64)===0&&(this.statusRegister|=Y),Q&&(this.statusRegister|=64)}setReadAddress(t){this.addressRegister=(t&63)<<8|this.addressRegister&255,this.prefetchByte=this.ram[this.addressRegister++],this.addressRegister&=16383}setWriteAddress(t){this.addressRegister=(t&63)<<8|this.addressRegister&255}setVDPWriteRegister(t){var e=this.registers.length-1;switch(this.registers[t&e]=this.addressRegister&255,t&e){case 0:this.updateMode(this.registers[0],this.registers[1]);break;case 1:this.ramMask=(this.registers[1]&128)!==0?16383:8191,this.displayOn=(this.registers[1]&64)!==0,this.interruptsOn=(this.registers[1]&32)!==0,this.updateMode(this.registers[0],this.registers[1]);break;case 2:this.nameTable=(this.registers[2]&15)<<10;break;case 3:this.bitmapMode?this.colorTable=(this.registers[3]&128)<<6:this.colorTable=this.registers[3]<<6,this.updateTableMasks();break;case 4:this.bitmapMode?this.charPatternTable=(this.registers[4]&4)<<11:this.charPatternTable=(this.registers[4]&7)<<11,this.updateTableMasks();break;case 5:this.spriteAttributeTable=(this.registers[5]&127)<<7;break;case 6:this.spritePatternTable=(this.registers[6]&7)<<11;break;case 7:this.fgColor=(this.registers[7]&240)>>4,this.bgColor=this.registers[7]&15;break}}setVDPWriteCommand3(t){this.setVDPWriteRegister(t)}writeAddress(t){if(!this.latch)this.addressRegister=this.addressRegister&65280|t;else{switch((t&192)>>6){case 0:this.setReadAddress(t);break;case 1:this.setWriteAddress(t);break;case 2:this.setVDPWriteRegister(t);break;case 3:this.setVDPWriteCommand3(t);break}this.redrawRequired=!0}this.latch=!this.latch}updateMode(t,e){if(this.bitmapMode=(t&2)!==0,this.textMode=(e&16)!==0,this.bitmapMode)switch((e&24)>>3){case 0:this.screenMode=2;break;case 1:this.screenMode=6;break;case 2:this.screenMode=5;break;case 3:this.screenMode=7;break}else switch((e&24)>>3){case 0:this.screenMode=0;break;caLine truncated
import{c as ie,k as he,o as ne,r as oe}from"./chunk-4676AC7I.js";import{X as ae,a as A,g as w,u}from"./chunk-TYDI7JZQ.js";var L=class{constructor(t,e,r){this.probe=new ne;this.ram=new Uint8Array(16384);this.registers=new Uint8Array(8);this.spriteBuffer=new Uint8Array(256);this.displayOn=!1;this.interruptsOn=!1;this.fb32=t,this.cru=e,this.enableFlicker=r,this.palette=[u(0,0,0),u(0,0,0),u(33,200,66),u(94,220,120),u(84,85,237),u(125,118,252),u(212,82,77),u(66,235,245),u(252,85,84),u(255,121,120),u(212,193,84),u(230,206,128),u(33,176,59),u(201,91,186),u(204,204,204),u(255,255,255)]}reset(){var t;this.ram.fill(0),this.registers.fill(0),this.addressRegister=0,this.statusRegister=0,this.prefetchByte=0,this.latch=!1,this.displayOn=!1,this.interruptsOn=!1,this.screenMode=0,this.bitmapMode=!1,this.textMode=!1,this.colorTable=0,this.nameTable=0,this.charPatternTable=0,this.spriteAttributeTable=0,this.spritePatternTable=0,this.colorTableMask=16383,this.patternTableMask=16383,this.ramMask=16383,this.fgColor=0,this.bgColor=0,this.flicker=this.enableFlicker,this.redrawRequired=!0,this.width=304,this.height=240}drawScanline(t){var e=this.fb32,r=this.width,s=t*r,i=this.screenMode,h=this.textMode,a=this.bitmapMode,n=h?240:256,b=192,o=r-n>>1,d=this.height-b>>1,p=this.fgColor,M=this.bgColor,l=this.ram,v=this.nameTable,V=this.colorTable,P=this.charPatternTable,G=this.colorTableMask,S=this.patternTableMask,ce=this.spriteAttributeTable,de=this.spritePatternTable,$=(this.registers[1]&2)!==0,H=this.registers[1]&1,Z=($?16:8)<<(H?1:0),j=this.flicker?4:32,J=this.palette,N=!1,Q=!1,Y=31,R,f,D,T,C,F,m;if(t>=d&&t<d+b&&this.displayOn){var c=t-d;if(!h){var W=this.spriteBuffer;W.fill(0);var z=0,ee=!1,I=ce,B;for(B=0;B<32&&z<=j&&!ee;B++){var k=l[I];if(k!==208){k>208&&(k-=256),k++;var y=k+Z,U=-1;if(B<8||!a)c>=k&&c<y&&(U=c);else{var X=c&((this.registers[4]&3)<<6|63);X>=k&&X<y?U=X:c>=64&&c<128&&c>=k&&c<y&&(U=c)}if(U!==-1){if(z<j){var te=l[I+1],me=l[I+2]&($?252:255),ge=l[I+3]&15;(l[I+3]&128)!==0&&(te-=32);for(var pe=U-k>>H,Me=de+(me<<3)+pe,E=0;E<Z;E++){var O=te+E;if(O>=0&&O<n){var re=E>>H,Te=l[Me+(re>=8?16:0)];(Te&128>>(re&7))!==0&&(W[O]===0?W[O]=ge+1:N=!0)}}}z++}I+=4}else ee=!0}z>4&&(Q=!0,Y=B)}var _=h?(c>>3)*40:c>>3<<5,x=c&7;for(R=0;R<r;R++){if(R>=o&&R<o+n){var g=R-o;switch(i){case 0:T=l[v+_+(g>>3)],F=l[V+(T>>3)],m=l[P+(T<<3)+x],f=(m&128>>(g&7))!==0?(F&240)>>4:F&15;break;case 2:T=l[v+_+(g>>3)],C=((c&192)<<5)+(T<<3),F=l[V+(C&G)+x],m=l[P+(C&S)+x],f=(m&128>>(g&7))!==0?(F&240)>>4:F&15;break;case 3:T=l[v+_+(g>>3)],x=(c&28)>>2,m=l[P+(T<<3)+x],f=(g&4)===0?(m&240)>>4:m&15;break;case 1:T=l[v+_+Math.floor(g/6)],m=l[P+(T<<3)+x],f=(m&128>>g%6)!==0?p:M;break;case 5:T=l[v+_+Math.floor(g/6)],C=((c&192)<<5)+(T<<3),m=l[P+(C&S)+x],f=(m&128>>g%6)!==0?p:M;break;case 6:T=l[v+_+(g>>3)],x=(c&28)>>2,C=((c&192)<<5)+(T<<3),m=l[P+(C&S)+x],f=(g&4)===0?(m&240)>>4:m&15;break;case 7:f=(g&4)===0?p:M;break}if(f===0&&(f=M),!h){var se=W[g]-1;se>0&&(f=se)}}else f=M;D=J[f],e[s++]=D}}else for(D=J[M],R=0;R<r;R++)e[s++]=D;t===d+b&&(this.statusRegister|=128,this.interruptsOn&&this.cru.setVDPInterrupt(!0)),N&&(this.statusRegister|=32),(this.statusRegister&64)===0&&(this.statusRegister|=Y),Q&&(this.statusRegister|=64)}setReadAddress(t){this.addressRegister=(t&63)<<8|this.addressRegister&255,this.prefetchByte=this.ram[this.addressRegister++],this.addressRegister&=16383}setWriteAddress(t){this.addressRegister=(t&63)<<8|this.addressRegister&255}setVDPWriteRegister(t){var e=this.registers.length-1;switch(this.registers[t&e]=this.addressRegister&255,t&e){case 0:this.updateMode(this.registers[0],this.registers[1]);break;case 1:this.ramMask=(this.registers[1]&128)!==0?16383:8191,this.displayOn=(this.registers[1]&64)!==0,this.interruptsOn=(this.registers[1]&32)!==0,this.updateMode(this.registers[0],this.registers[1]);break;case 2:this.nameTable=(this.registers[2]&15)<<10;break;case 3:this.bitmapMode?this.colorTable=(this.registers[3]&128)<<6:this.colorTable=this.registers[3]<<6,this.updateTableMasks();break;case 4:this.bitmapMode?this.charPatternTable=(this.registers[4]&4)<<11:this.charPatternTable=(this.registers[4]&7)<<11,this.updateTableMasks();break;case 5:this.spriteAttributeTable=(this.registers[5]&127)<<7;break;case 6:this.spritePatternTable=(this.registers[6]&7)<<11;break;case 7:this.fgColor=(this.registers[7]&240)>>4,this.bgColor=this.registers[7]&15;break}}setVDPWriteCommand3(t){this.setVDPWriteRegister(t)}writeAddress(t){if(!this.latch)this.addressRegister=this.addressRegister&65280|t;else{switch((t&192)>>6){case 0:this.setReadAddress(t);break;case 1:this.setWriteAddress(t);break;case 2:this.setVDPWriteRegister(t);break;case 3:this.setVDPWriteCommand3(t);break}this.redrawRequired=!0}this.latch=!this.latch}updateMode(t,e){if(this.bitmapMode=(t&2)!==0,this.textMode=(e&16)!==0,this.bitmapMode)switch((e&24)>>3){case 0:this.screenMode=2;break;case 1:this.screenMode=6;break;case 2:this.screenMode=5;break;case 3:this.screenMode=7;break}else switch((e&24)>>3){case 0:this.screenMode=0;break;caLine truncated
`;var s=this.getDebugTables();for(var i of s)i[2]>0&&(e+=A(i[0],20)+": $"+w(i[1],4)+" - $"+w(i[1]+i[2]-1,4)+`
`);return e+=A("Address Register",20)+": $"+w(this.addressRegister,4)+`
@@ -8,4 +8,4 @@ import{c as ie,k as he,o as ne,r as oe}from"./chunk-G4HBIXG4.js";import{X as ae,
`,this.ramMask!=16383&&(e+=A("RAM Mask",20)+": $"+w(this.ramMask)+`
`),e}hexView(t,e,r){for(var s="",i=null,h=t,a=0,n=0;n<e&&h<16384;h++,n++){(n&15)===0&&(s+=`
`+w(h,4)+":",a++),s+=" ",r&&r===h&&(i=a);var b=this.ram[h].toString(16).toUpperCase();b.length===1&&(s+="0"),s+=b}return{text:s.substr(1),lineCount:a,anchorLine:i-1}}getWord(t){return t<16384?this.ram[t]<<8|this.ram[t+1]:0}getCharAt(t,e){return t-=24,e-=24,this.textMode?this.ram[this.nameTable+Math.floor((t-8)/6)+Math.floor(e/8)*40]:this.ram[this.nameTable+Math.floor(t/8)+Math.floor(e/8)*32]}setFlicker(t){this.flicker=t,this.enableFlicker=t}getState(){return{ram:this.ram.slice(0),registers:this.registers.slice(0),addressRegister:this.addressRegister,statusRegister:this.statusRegister,latch:this.latch,prefetchByte:this.prefetchByte,displayOn:this.displayOn,interruptsOn:this.interruptsOn,screenMode:this.screenMode,bitmapMode:this.bitmapMode,textMode:this.textMode,colorTable:this.colorTable,nameTable:this.nameTable,charPatternTable:this.charPatternTable,spriteAttributeTable:this.spriteAttributeTable,spritePatternTable:this.spritePatternTable,colorTableMask:this.colorTableMask,patternTableMask:this.patternTableMask,ramMask:this.ramMask,fgColor:this.fgColor,bgColor:this.bgColor,flicker:this.flicker}}restoreState(t){this.ram.set(t.ram),this.registers.set(t.registers),this.addressRegister=t.addressRegister,this.statusRegister=t.statusRegister,this.latch=t.latch,this.prefetchByte=t.prefetchByte,this.displayOn=t.displayOn,this.interruptsOn=t.interruptsOn,this.screenMode=t.screenMode,this.bitmapMode=t.bitmapMode,this.textMode=t.textMode,this.colorTable=t.colorTable,this.nameTable=t.nameTable,this.charPatternTable=t.charPatternTable,this.spriteAttributeTable=t.spriteAttributeTable,this.spritePatternTable=t.spritePatternTable,this.colorTableMask=t.colorTableMask,this.patternTableMask=t.patternTableMask,this.ramMask=t.ramMask,this.fgColor=t.fgColor,this.bgColor=t.bgColor,this.flicker=t.flicker,this.redrawRequired=!0}},K=class extends L{constructor(){super(...arguments);this.cram=new Uint8Array(32);this.cpalette=new Uint32Array(32);this.registers=new Uint8Array(16);this.vramUntwiddled=new Uint8Array(32768);this.numVisibleLines=192;this.lineCounter=0;this.lineInterruptPending=!1}reset(){super.reset(),this.writeToCRAM=!1,this.cram.fill(0),this.cpalette.fill(0),this.vramUntwiddled.fill(0)}readStatus(){return this.lineInterruptPending=!1,super.readStatus()}updateMode(e,r){e&4?(this.screenMode=4,this.nameTable=(this.registers[2]&15)<<10&14336,this.spriteAttributeTable=(this.registers[5]&126)<<7):super.updateMode(e,r)}setReadAddress(e){super.setReadAddress(e),this.writeToCRAM=!1}setWriteAddress(e){super.setWriteAddress(e),this.writeToCRAM=!1}setVDPWriteRegister(e){super.setVDPWriteRegister(e),this.ramMask=16383}setVDPWriteCommand3(e){this.writeToCRAM=!0}writeData(e){if(this.writeToCRAM){var r=this.addressRegister++&this.cram.length-1;this.cram[r]=e,this.cpalette[r]=u((e&3)*85,(e>>2&3)*85,(e>>4&3)*85),this.prefetchByte=e,this.addressRegister&=this.ramMask,this.redrawRequired=!0}else{var s=this.addressRegister;super.writeData(e),this.writeTwiddled(s,e)}this.latch=!1}writeTwiddled(e,r){for(var s=e&16380,i=s*2,h=this.ram[s],a=this.ram[s+1],n=this.ram[s+2],b=this.ram[s+3],o=0;o<8;++o){var d=7-o,p=h>>>d&1|(a>>>d&1)<<1|(n>>>d&1)<<2|(b>>>d&1)<<3;this.vramUntwiddled[i+o]=p}}getState(){var e=super.getState();return e.cram=this.cram.slice(0),e}restoreState(e){super.restoreState(e),this.cram.set(e.cram)}drawScanline(e){this.screenMode==4?this.rasterize_line(e):super.drawScanline(e)}findSprites(e){var r=this.spriteAttributeTable,s=[],i=8,h;for(this.registers[1]&2&&(i=16),h=0;h<64;h++){var a=this.ram[r+h];if(a===208)break;if(a>=240&&(a-=256),e>=a&&e<a+i){if(s.length===8){this.statusRegister|=64;break}s.push([this.ram[r+128+h*2],this.ram[r+128+h*2+1],a])}}return s}rasterize_background(e,r,s,i,h){e=e|0,r=r|0,s=s|0,i=(i|0)*2;var a,n;s&512?(n=-1,i+=7):n=1;let b=s&2048?16:0;var o;if(h&&b===0)for(a=0;a<8;a++)o=this.vramUntwiddled[i],i+=n,o!==0&&(this.fb32[e+r]=this.cpalette[o]),r=r+1&255;else for(a=0;a<8;a++)o=this.vramUntwiddled[i]+b,i+=n,this.fb32[e+r]=this.cpalette[o],r=r+1&255}clear_background(e,r){e=e|0,r=r|0;var s;let i=this.cpalette[0];for(s=0;s<8;++s)this.fb32[e+r]=i,r=r+1&255}rasterize_background_line(e,r,s,i){e=e|0,r=r|0,s=s|0;let h=(i|0)*4;for(var a=0;a<32;a++){var n=this.ram[s+a*2]|this.ram[s+a*2+1]<<8,b=n&511,o=32*b;n&1024?o+=28-h:o+=h,(n&4096)===0?this.rasterize_background(e,r,n,o,!1):this.clear_background(e,r),r=r+8&255}}rasterize_foreground_line(e,r,s,i){e=e|0,r=r|0,s=s|0;let h=(i|0)*4;for(var a=0;a<32;a++){var n=this.ram[s+a*2]|this.ram[s+a*2+1]<<8;if((n&4096)!==0){var b=n&511,o=32*b;n&1024?o+=28-h:o+=h,this.rasterize_background(e,a*8+r&255,n,o,!0)}}}rasterize_sprites(e,r,s,i){r=r|0,s=s|0;let h=this.registers[6]&4?8192:0;for(var a=0;a<256;++a){for(var n=a,b=!1,o=!1,d=256,p=0;p<i.length;p++){var M=i[p],l=n-M[0];if(l<0){var v=-l;v<d&&(d=v);continue}if(!(l>=8)){b=!0;var V=e-M[2],P=h+M[1]*32+V*4,G=P*2+l,S=this.vramUntwiddled[G];if(S!==0){if(o){this.statusRegister|=32;break}this.fb32[r+(s+a-this.registers[8]&255)]=this.cpalette[16+S] Line truncated
//# sourceMappingURL=chunk-SK73GSLK.js.map
//# sourceMappingURL=chunk-SBNWO7XU.js.map
File renamed without changes.
@@ -1,2 +1,2 @@
import{M as b,N as w}from"./chunk-TYDI7JZQ.js";import{d as E}from"./chunk-KT7KMEQC.js";var y=E((d,v)=>{(function(l,e){typeof define=="function"&&define.amd?define([],e):typeof d!="undefined"?e():(e(),l.FileSaver={})})(d,function(){"use strict";function l(t,r){return typeof r=="undefined"?r={autoBom:!1}:typeof r!="object"&&(console.warn("Deprecated: Expected third argument to be a object"),r={autoBom:!r}),r.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(t.type)?new Blob(["\uFEFF",t],{type:t.type}):t}function e(t,r,c){var a=new XMLHttpRequest;a.open("GET",t),a.responseType="blob",a.onload=function(){h(a.response,r,c)},a.onerror=function(){console.error("could not download file")},a.send()}function o(t){var r=new XMLHttpRequest;r.open("HEAD",t,!1);try{r.send()}catch(c){}return 200<=r.status&&299>=r.status}function i(t){try{t.dispatchEvent(new MouseEvent("click"))}catch(c){var r=document.createEvent("MouseEvents");r.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),t.dispatchEvent(r)}}var n=typeof window=="object"&&window.window===window?window:typeof self=="object"&&self.self===self?self:typeof global=="object"&&global.global===global?global:void 0,u=n.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),h=n.saveAs||(typeof window!="object"||window!==n?function(){}:"download"in HTMLAnchorElement.prototype&&!u?function(t,r,c){var a=n.URL||n.webkitURL,s=document.createElement("a");r=r||t.name||"download",s.download=r,s.rel="noopener",typeof t=="string"?(s.href=t,s.origin===location.origin?i(s):o(s.href)?e(t,r,c):i(s,s.target="_blank")):(s.href=a.createObjectURL(t),setTimeout(function(){a.revokeObjectURL(s.href)},4e4),setTimeout(function(){i(s)},0))}:"msSaveOrOpenBlob"in navigator?function(t,r,c){if(r=r||t.name||"download",typeof t!="string")navigator.msSaveOrOpenBlob(l(t,c),r);else if(o(t))e(t,r,c);else{var a=document.createElement("a");a.href=t,a.target="_blank",setTimeout(function(){i(a)})}}:function(t,r,c,a){if(a=a||open("","_blank"),a&&(a.document.title=a.document.body.innerText="downloading..."),typeof t=="string")return e(t,r,c);var s=t.type==="application/octet-stream",C=/constructor/i.test(n.HTMLElement)||n.safari,S=/CriOS\/[\d]+/.test(navigator.userAgent);if((S||s&&C||u)&&typeof FileReader!="undefined"){var p=new FileReader;p.onloadend=function(){var m=p.result;m=S?m:m.replace(/^data:[^;]*;/,"data:attachment/file;"),a?a.location.href=m:location=m,a=null},p.readAsDataURL(t)}else{var k=n.URL||n.webkitURL,f=k.createObjectURL(t);a?a.location=f:location.href=f,a=null,setTimeout(function(){k.revokeObjectURL(f)},4e4)}});n.saveAs=h.saveAs=h,typeof v!="undefined"&&(v.exports=h)})});var g=class{constructor(e){this.checkpointInterval=10;this.maxCheckpoints=300;this.reset(),this.platform=e}reset(){this.checkpoints=[],this.framerecs=[],this.frameCount=0,this.lastSeekFrame=0,this.lastSeekStep=0,this.lastStepCount=0,this.callbackStateChanged&&this.callbackStateChanged()}frameRequested(){var e={controls:this.platform.saveControlsState(),seed:b()},o=!1;return this.lastSeekFrame<this.frameCount?this.loadControls(this.lastSeekFrame):(this.platform.saveControlsState&&this.framerecs.push(e),o=this.frameCount++%this.checkpointInterval==0),this.lastSeekFrame++,this.lastSeekStep=0,this.callbackStateChanged&&this.callbackStateChanged(),o}numFrames(){return this.frameCount}currentFrame(){return this.lastSeekFrame}currentStep(){return this.lastSeekStep}recordFrame(e){this.checkpoints.push(e),this.callbackNewCheckpoint&&this.callbackNewCheckpoint(e),this.checkpoints.length>this.maxCheckpoints&&(this.checkpoints.shift(),this.framerecs=this.framerecs.slice(this.checkpointInterval),this.lastSeekFrame-=this.checkpointInterval,this.frameCount-=this.checkpointInterval,this.callbackStateChanged&&this.callbackStateChanged())}getStateAtOrBefore(e){if(e<=0&&this.checkpoints.length>0)return{frame:0,state:this.checkpoints[0]};var o=Math.floor(e/this.checkpointInterval),i=o<this.checkpoints.length?o:this.checkpoints.length-1,n=i*this.checkpointInterval;return{frame:n,state:this.checkpoints[i]}}loadFrame(e,o){if(e|=0,o|=0,e==this.lastSeekFrame&&o==this.lastSeekStep)return e;let{frame:i,state:n}=this.getStateAtOrBefore(e-1);if(n){var u=0;for(this.platform.pause(),this.platform.loadState(n);i<e;)i<this.framerecs.length&&this.loadControls(i),i++,u=this.platform.advance(i<e);return i==0&&(u=this.platform.advance(!0),this.platform.loadState(n)),o>0&&this.platform.advanceFrameClock&&(o=this.platform.advanceFrameClock(null,o)),this.lastSeekFrame=e,this.lastSeekStep=o,this.lastStepCount=u,e}else return-1}loadControls(e){this.platform.loadControlsState&&this.platform.loadControlsState(this.framerecs[e].controls),w(this.framerecs[e].seed)}getLastCheckpoint(){return this.checkpoints.length&&this.checkpoints[this.checkpoints.length-1]}};function R(l){switch(l){case"apple2":return import("./apple2-VXIPT7OL.js");case"arm32"Line truncated
//# sourceMappingURL=chunk-OCVBA66T.js.map
import{M as b,N as w}from"./chunk-TYDI7JZQ.js";import{d as E}from"./chunk-KT7KMEQC.js";var y=E((d,v)=>{(function(l,e){typeof define=="function"&&define.amd?define([],e):typeof d!="undefined"?e():(e(),l.FileSaver={})})(d,function(){"use strict";function l(t,r){return typeof r=="undefined"?r={autoBom:!1}:typeof r!="object"&&(console.warn("Deprecated: Expected third argument to be a object"),r={autoBom:!r}),r.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(t.type)?new Blob(["\uFEFF",t],{type:t.type}):t}function e(t,r,c){var a=new XMLHttpRequest;a.open("GET",t),a.responseType="blob",a.onload=function(){h(a.response,r,c)},a.onerror=function(){console.error("could not download file")},a.send()}function o(t){var r=new XMLHttpRequest;r.open("HEAD",t,!1);try{r.send()}catch(c){}return 200<=r.status&&299>=r.status}function i(t){try{t.dispatchEvent(new MouseEvent("click"))}catch(c){var r=document.createEvent("MouseEvents");r.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),t.dispatchEvent(r)}}var n=typeof window=="object"&&window.window===window?window:typeof self=="object"&&self.self===self?self:typeof global=="object"&&global.global===global?global:void 0,u=n.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),h=n.saveAs||(typeof window!="object"||window!==n?function(){}:"download"in HTMLAnchorElement.prototype&&!u?function(t,r,c){var a=n.URL||n.webkitURL,s=document.createElement("a");r=r||t.name||"download",s.download=r,s.rel="noopener",typeof t=="string"?(s.href=t,s.origin===location.origin?i(s):o(s.href)?e(t,r,c):i(s,s.target="_blank")):(s.href=a.createObjectURL(t),setTimeout(function(){a.revokeObjectURL(s.href)},4e4),setTimeout(function(){i(s)},0))}:"msSaveOrOpenBlob"in navigator?function(t,r,c){if(r=r||t.name||"download",typeof t!="string")navigator.msSaveOrOpenBlob(l(t,c),r);else if(o(t))e(t,r,c);else{var a=document.createElement("a");a.href=t,a.target="_blank",setTimeout(function(){i(a)})}}:function(t,r,c,a){if(a=a||open("","_blank"),a&&(a.document.title=a.document.body.innerText="downloading..."),typeof t=="string")return e(t,r,c);var s=t.type==="application/octet-stream",C=/constructor/i.test(n.HTMLElement)||n.safari,S=/CriOS\/[\d]+/.test(navigator.userAgent);if((S||s&&C||u)&&typeof FileReader!="undefined"){var p=new FileReader;p.onloadend=function(){var m=p.result;m=S?m:m.replace(/^data:[^;]*;/,"data:attachment/file;"),a?a.location.href=m:location=m,a=null},p.readAsDataURL(t)}else{var k=n.URL||n.webkitURL,f=k.createObjectURL(t);a?a.location=f:location.href=f,a=null,setTimeout(function(){k.revokeObjectURL(f)},4e4)}});n.saveAs=h.saveAs=h,typeof v!="undefined"&&(v.exports=h)})});var g=class{constructor(e){this.checkpointInterval=10;this.maxCheckpoints=300;this.reset(),this.platform=e}reset(){this.checkpoints=[],this.framerecs=[],this.frameCount=0,this.lastSeekFrame=0,this.lastSeekStep=0,this.lastStepCount=0,this.callbackStateChanged&&this.callbackStateChanged()}frameRequested(){var e={controls:this.platform.saveControlsState(),seed:b()},o=!1;return this.lastSeekFrame<this.frameCount?this.loadControls(this.lastSeekFrame):(this.platform.saveControlsState&&this.framerecs.push(e),o=this.frameCount++%this.checkpointInterval==0),this.lastSeekFrame++,this.lastSeekStep=0,this.callbackStateChanged&&this.callbackStateChanged(),o}numFrames(){return this.frameCount}currentFrame(){return this.lastSeekFrame}currentStep(){return this.lastSeekStep}recordFrame(e){this.checkpoints.push(e),this.callbackNewCheckpoint&&this.callbackNewCheckpoint(e),this.checkpoints.length>this.maxCheckpoints&&(this.checkpoints.shift(),this.framerecs=this.framerecs.slice(this.checkpointInterval),this.lastSeekFrame-=this.checkpointInterval,this.frameCount-=this.checkpointInterval,this.callbackStateChanged&&this.callbackStateChanged())}getStateAtOrBefore(e){if(e<=0&&this.checkpoints.length>0)return{frame:0,state:this.checkpoints[0]};var o=Math.floor(e/this.checkpointInterval),i=o<this.checkpoints.length?o:this.checkpoints.length-1,n=i*this.checkpointInterval;return{frame:n,state:this.checkpoints[i]}}loadFrame(e,o){if(e|=0,o|=0,e==this.lastSeekFrame&&o==this.lastSeekStep)return e;let{frame:i,state:n}=this.getStateAtOrBefore(e-1);if(n){var u=0;for(this.platform.pause(),this.platform.loadState(n);i<e;)i<this.framerecs.length&&this.loadControls(i),i++,u=this.platform.advance(i<e);return i==0&&(u=this.platform.advance(!0),this.platform.loadState(n)),o>0&&this.platform.advanceFrameClock&&(o=this.platform.advanceFrameClock(null,o)),this.lastSeekFrame=e,this.lastSeekStep=o,this.lastStepCount=u,e}else return-1}loadControls(e){this.platform.loadControlsState&&this.platform.loadControlsState(this.framerecs[e].controls),w(this.framerecs[e].seed)}getLastCheckpoint(){return this.checkpoints.length&&this.checkpoints[this.checkpoints.length-1]}};function R(l){switch(l){case"apple2":return import("./apple2-3KOIXQGR.js");case"arm32"Line truncated
//# sourceMappingURL=chunk-YLE5X5XS.js.map
File renamed without changes.
@@ -1,4 +1,4 @@
import{c as h}from"./chunk-SK73GSLK.js";import{b as m}from"./chunk-ULIQADK2.js";import{E,K as M,d as n,f as D}from"./chunk-G4HBIXG4.js";import{K as r,W as e,Z as f,aa as g,l as a,m as c}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var x=f([[e.UP,0,1],[e.DOWN,0,4],[e.LEFT,0,8],[e.RIGHT,0,2],[e.A,0,64],[e.B,1,64],[e.GP_A,0,64],[e.GP_B,1,64],[e.P2_UP,2,1],[e.P2_DOWN,2,4],[e.P2_LEFT,2,8],[e.P2_RIGHT,2,2],[e.P2_A,2,64],[e.P2_B,3,64]]),t=class extends h{constructor(){super();this.defaultROMSize=32768;this.ram=new Uint8Array(1024);this.read=g([[0,8191,8191,A=>this.bios?this.bios[A]:0],[24576,32767,1023,A=>this.ram[A]],[32768,65535,32767,A=>this.rom?this.rom[A]:0]]);this.write=g([[24576,32767,1023,(A,B)=>{this.ram[A]=B}]]);this.init(this,this.newIOBus(),new D(new n)),this.bios=new a().decode(c(atob(I)))}getKeyboardMap(){return x}vdpInterrupt(){this.probe.logInterrupt(0),this.cpu.NMI()}newIOBus(){return{read:A=>{switch(A&=255,A){case 252:return this.inputs[this.keypadMode?1:0]^255;case 255:return this.inputs[this.keypadMode?3:2]^255}return A>=160&&A<=191?A&1?this.vdp.readStatus():this.vdp.readData():0},write:(A,B)=>{switch(A&=255,B&=255,A>>4){case 8:case 9:this.keypadMode=!0;break;case 12:case 13:this.keypadMode=!1;break;case 10:case 11:return A&1?this.vdp.writeAddress(B):this.vdp.writeData(B);case 15:this.psg.setData(B);break}}}}loadState(A){super.loadState(A),this.keypadMode=A.kpm}saveState(){var A=super.saveState();return A.kpm=this.keypadMode,A}reset(){super.reset(),this.keypadMode=!1}},I=`
import{c as h}from"./chunk-SBNWO7XU.js";import{b as m}from"./chunk-OJEFOAZC.js";import{E,K as M,d as n,f as D}from"./chunk-4676AC7I.js";import{K as r,W as e,Z as f,aa as g,l as a,m as c}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var x=f([[e.UP,0,1],[e.DOWN,0,4],[e.LEFT,0,8],[e.RIGHT,0,2],[e.A,0,64],[e.B,1,64],[e.GP_A,0,64],[e.GP_B,1,64],[e.P2_UP,2,1],[e.P2_DOWN,2,4],[e.P2_LEFT,2,8],[e.P2_RIGHT,2,2],[e.P2_A,2,64],[e.P2_B,3,64]]),t=class extends h{constructor(){super();this.defaultROMSize=32768;this.ram=new Uint8Array(1024);this.read=g([[0,8191,8191,A=>this.bios?this.bios[A]:0],[24576,32767,1023,A=>this.ram[A]],[32768,65535,32767,A=>this.rom?this.rom[A]:0]]);this.write=g([[24576,32767,1023,(A,B)=>{this.ram[A]=B}]]);this.init(this,this.newIOBus(),new D(new n)),this.bios=new a().decode(c(atob(I)))}getKeyboardMap(){return x}vdpInterrupt(){this.probe.logInterrupt(0),this.cpu.NMI()}newIOBus(){return{read:A=>{switch(A&=255,A){case 252:return this.inputs[this.keypadMode?1:0]^255;case 255:return this.inputs[this.keypadMode?3:2]^255}return A>=160&&A<=191?A&1?this.vdp.readStatus():this.vdp.readData():0},write:(A,B)=>{switch(A&=255,B&=255,A>>4){case 8:case 9:this.keypadMode=!0;break;case 12:case 13:this.keypadMode=!1;break;case 10:case 11:return A&1?this.vdp.writeAddress(B):this.vdp.writeData(B);case 15:this.psg.setData(B);break}}}}loadState(A){super.loadState(A),this.keypadMode=A.kpm}saveState(){var A=super.saveState();return A.kpm=this.keypadMode,A}reset(){super.reset(),this.keypadMode=!1}},I=`
TFpHAAAgAAAAB7djQcnHAQEDBgcx/3MYawAAAMMMgAehB+EPB+USB+UVB+UYB+UbB+UeB+QHHAZm
IYA8igUCBYIAKgCAff5VIAl8/qogBCoKgOnHAwkfgICAAAMFT6CgB4LgByEH4WDAYMBABlggQIAg
B+HAwOCgYAMGKweBQAYxBphAQEAG+KBABnAGEuAGUAabB+QA4AflBkggIAYyB+FgoKCgwAZdwAY5
@@ -34,4 +34,4 @@ PANDTwNjYHAGWShQAwKHOBA4A8LZA0IIeAaZOEREKChsADBAIBA4BqkoA4KfA0KIVFQDIvg4QANi
FwAGaQNjr3gHIwZYEAAGEEAwCDBABgkHoTAIBlEIFANIAlAgBiAAfAdhAwJ3B0IGfwMDjgPmiAcB
A8SRHAYnBihQAwK9BwFgEAODTQPjNXgDAmgHHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8H
HwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBx8HHwcfBwM=`;var Q=[{id:"text.c",name:"Text Mode"},{id:"hello.c",name:"Scrolling Text"},{id:"text32.c",name:"32-Column Color Text"},{id:"stars.c",name:"Scrolling Starfield"},{id:"cursorsmooth.c",name:"Moving Cursor"},{id:"simplemusic.c",name:"Simple Music"},{id:"musicplayer.c",name:"Multivoice Music"},{id:"mode2bitmap.c",name:"Mode 2 Bitmap"},{id:"mode2compressed.c",name:"Mode 2 Bitmap (LZG)"},{id:"lines.c",name:"Mode 2 Lines"},{id:"multicolor.c",name:"Multicolor Mode"},{id:"siegegame.c",name:"Siege Game"},{id:"shoot.c",name:"Solarian Game"},{id:"climber.c",name:"Climber Game"}],o=class extends M{constructor(){super(...arguments);this.getMemoryMap=function(){return{main:[{name:"BIOS",start:0,size:8192,type:"rom"},{name:"Cartridge Header",start:32768,size:256,type:"rom"}]}}}newMachine(){return new t}getPresets(){return Q}readAddress(A){return this.machine.read(A)}readVRAMAddress(A){return this.machine.readVRAMAddress(A)}showHelp(){return"https://8bitworkshop.com/docs/platforms/coleco/"}},i=class extends m{constructor(){super(...arguments);this.getToolForFilename=E}start(){this.startModule(this.mainElement,{jsfile:"mame8bitws.js",cfgfile:"coleco.cfg",biosfile:"coleco/313 10031-4005 73108a.u2",driver:"coleco",width:280*2,height:432,romfn:"/emulator/cart.rom",romsize:32768,preInit:function(A){}})}loadROM(A,B){this.loadROMFile(B),this.loadRegion(":coleco_cart:rom",B)}getPresets(){return Q}getDefaultExtensions(){return[".c",".ns",".s",".scc",".sgb",".z",".wiz"]}};r["coleco.mame"]=i;r.coleco=o;export{Q as ColecoVision_PRESETS};
//# sourceMappingURL=coleco-2NJKFNQH.js.map
//# sourceMappingURL=coleco-6LFDBJ4T.js.map
File renamed without changes.
+10
View File
@@ -237,6 +237,16 @@ class BaseDebugPlatform extends BasePlatform {
return pcs.has(c.PC);
});
}
runEvalAtPC(targets) {
this.debugTargetClock++;
this.runEval((c) => {
const epc = c.EPC != null ? c.EPC : c.PC;
if (!targets.has(epc))
return false;
const cond = targets.get(epc);
return cond ? cond(c) : true;
});
}
runUntilReturn() {
var SP0 = this.getSP();
this.runEval((c) => {
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"baseplatform.js","sourceRoot":"","sources":["../../src/common/baseplatform.ts"],"names":[],"mappings":"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 truncated
{"version":3,"file":"baseplatform.js","sourceRoot":"","sources":["../../src/common/baseplatform.ts"],"names":[],"mappings":"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 truncated
+2 -2
View File
@@ -1,2 +1,2 @@
import{K as d,s as p}from"./chunk-G4HBIXG4.js";import{K as n}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var m=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,64,0,0,0,0,64,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,0,0],o=class extends p{constructor(){super(...arguments);this.numTotalScanlines=312;this.cpuCyclesPerLine=224;this.joymask0=0;this.runaddr=16384}loadROM(t){let s=new Uint8Array(t.length+m.length);s.set(m,0),s[24]=t.length&255,s[25]=t.length>>8,s[26]=this.runaddr&255,s[27]=this.runaddr>>8,s.set(t,m.length),super.loadROM(s)}reset(){if(super.reset(),this.exports.machine_exec(this.sys,1e6),this.romptr&&this.romlen){this.exports.machine_load_rom(this.sys,this.romptr,this.romlen);for(var t=0;t<1e5&&this.getPC()!=this.runaddr;t++)this.exports.machine_tick(this.sys)}}advanceFrame(t){var s=this.getRasterY(),r=Math.floor((this.numTotalScanlines-s)*(4e6/50)/this.numTotalScanlines),e=this.probe!=null;return e&&this.exports.machine_reset_probe_buffer(),r=super.advanceFrameClock(t,r),e&&this.copyProbeData(),r}getRasterY(){return this.exports.machine_get_raster_line(this.sys)}getRasterCanvasPosition(){return{x:-1,y:this.getRasterY()-14}}getCPUState(){this.exports.machine_save_cpu_state(this.sys,this.cpustateptr);var t=this.cpustatearr,s=t[9]+(t[8]<<8),r=t[10]+(t[11]<<8),e=t[12]+(t[13]<<8),a=t[14]+(t[15]<<8),l=t[24]+(t[25]<<8),f=t[26]+(t[27]<<8),u=t[28]+(t[29]<<8),c=t[34]+(t[35]<<8),_=t[36]+(t[37]<<8);return{PC:c,SP:l,AF:s,BC:a,DE:e,HL:r,IX:u,IY:f,IR:_,o:this.readConst(c)}}saveState(){return this.exports.machine_save_state(this.sys,this.stateptr),{c:this.getCPUState(),state:this.statearr.slice(0),joymask0:this.joymask0}}loadState(t){this.statearr.set(t.state),this.exports.machine_load_state(this.sys,this.stateptr),this.joymask0=t.joymask0|0}getVideoParams(){return{width:768,height:272,overscan:!0,videoFrequency:50,aspect:1.3}}setKeyInput(t,s,r){if(!(t==16||t==17||t==18||t==224)){var e=0,a=0;t==37&&(t=8,e=4),t==38&&(t=11,e=1),t==39&&(t=9,e=8),t==40&&(t=10,e=2),t==32&&(e=16),t==65&&(t=65,a=4),t==87&&(t=87,a=1),t==68&&(t=68,a=8),t==83&&(t=83,a=2),t==69&&(a=16),t==113&&(t=241),t==115&&(t=243),t==119&&(t=245),t==121&&(t=247),r&1?(this.exports.machine_key_down(this.sys,t),this.joymask0|=e):r&64&&(this.exports.machine_key_up(this.sys,t),this.joymask0&=~e)}}};var v=[{id:"hello.asm",name:"Hello World (ASM)"},{id:"easy_stdio_boxes.c",name:"Standard I/O (C)"},{id:"easy_mode_strings.c",name:"Video Modes (C)"},{id:"easy_random.c",name:"Random Numbers (C)"},{id:"easy_sprites.c",name:"Keyboard + Sprites (C)"},{id:"medium_scrolling.c",name:"Scrolling Text (C)"},{id:"siegegame.c",name:"Siege Game (C)"},{id:"music.c",name:"Music Player (C)"}],g={main:[{name:"BIOS",start:0,size:16384,type:"rom"},{name:"Screen RAM",start:49152,size:16384,type:"ram"}]},i=class extends d{newMachine(){return new o("cpc")}getPresets(){return v}readAddress(h){return this.machine.readConst(h)}getMemoryMap(){return g}showHelp(){return"https://8bitworkshop.com/docs/platforms/cpc/"}};n["cpc.6128"]=i;n["cpc.464"]=i;n["cpc.kcc"]=i;
//# sourceMappingURL=cpc-DKQH2LN2.js.map
import{K as d,s as p}from"./chunk-4676AC7I.js";import{K as n}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var m=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,64,0,0,0,0,64,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,0,0],o=class extends p{constructor(){super(...arguments);this.numTotalScanlines=312;this.cpuCyclesPerLine=224;this.joymask0=0;this.runaddr=16384}loadROM(t){let s=new Uint8Array(t.length+m.length);s.set(m,0),s[24]=t.length&255,s[25]=t.length>>8,s[26]=this.runaddr&255,s[27]=this.runaddr>>8,s.set(t,m.length),super.loadROM(s)}reset(){if(super.reset(),this.exports.machine_exec(this.sys,1e6),this.romptr&&this.romlen){this.exports.machine_load_rom(this.sys,this.romptr,this.romlen);for(var t=0;t<1e5&&this.getPC()!=this.runaddr;t++)this.exports.machine_tick(this.sys)}}advanceFrame(t){var s=this.getRasterY(),r=Math.floor((this.numTotalScanlines-s)*(4e6/50)/this.numTotalScanlines),e=this.probe!=null;return e&&this.exports.machine_reset_probe_buffer(),r=super.advanceFrameClock(t,r),e&&this.copyProbeData(),r}getRasterY(){return this.exports.machine_get_raster_line(this.sys)}getRasterCanvasPosition(){return{x:-1,y:this.getRasterY()-14}}getCPUState(){this.exports.machine_save_cpu_state(this.sys,this.cpustateptr);var t=this.cpustatearr,s=t[9]+(t[8]<<8),r=t[10]+(t[11]<<8),e=t[12]+(t[13]<<8),a=t[14]+(t[15]<<8),l=t[24]+(t[25]<<8),f=t[26]+(t[27]<<8),u=t[28]+(t[29]<<8),c=t[34]+(t[35]<<8),_=t[36]+(t[37]<<8);return{PC:c,SP:l,AF:s,BC:a,DE:e,HL:r,IX:u,IY:f,IR:_,o:this.readConst(c)}}saveState(){return this.exports.machine_save_state(this.sys,this.stateptr),{c:this.getCPUState(),state:this.statearr.slice(0),joymask0:this.joymask0}}loadState(t){this.statearr.set(t.state),this.exports.machine_load_state(this.sys,this.stateptr),this.joymask0=t.joymask0|0}getVideoParams(){return{width:768,height:272,overscan:!0,videoFrequency:50,aspect:1.3}}setKeyInput(t,s,r){if(!(t==16||t==17||t==18||t==224)){var e=0,a=0;t==37&&(t=8,e=4),t==38&&(t=11,e=1),t==39&&(t=9,e=8),t==40&&(t=10,e=2),t==32&&(e=16),t==65&&(t=65,a=4),t==87&&(t=87,a=1),t==68&&(t=68,a=8),t==83&&(t=83,a=2),t==69&&(a=16),t==113&&(t=241),t==115&&(t=243),t==119&&(t=245),t==121&&(t=247),r&1?(this.exports.machine_key_down(this.sys,t),this.joymask0|=e):r&64&&(this.exports.machine_key_up(this.sys,t),this.joymask0&=~e)}}};var v=[{id:"hello.asm",name:"Hello World (ASM)"},{id:"easy_stdio_boxes.c",name:"Standard I/O (C)"},{id:"easy_mode_strings.c",name:"Video Modes (C)"},{id:"easy_random.c",name:"Random Numbers (C)"},{id:"easy_sprites.c",name:"Keyboard + Sprites (C)"},{id:"medium_scrolling.c",name:"Scrolling Text (C)"},{id:"siegegame.c",name:"Siege Game (C)"},{id:"music.c",name:"Music Player (C)"}],g={main:[{name:"BIOS",start:0,size:16384,type:"rom"},{name:"Screen RAM",start:49152,size:16384,type:"ram"}]},i=class extends d{newMachine(){return new o("cpc")}getPresets(){return v}readAddress(h){return this.machine.readConst(h)}getMemoryMap(){return g}showHelp(){return"https://8bitworkshop.com/docs/platforms/cpc/"}};n["cpc.6128"]=i;n["cpc.464"]=i;n["cpc.kcc"]=i;
//# sourceMappingURL=cpc-ZCKGGRKD.js.map
File renamed without changes.
@@ -1,2 +1,2 @@
import{a as x}from"./chunk-3FIVEUG2.js";import{u as y}from"./chunk-3GET2PUK.js";import"./chunk-UG4IOEUD.js";import"./chunk-LNOKARBD.js";import"./chunk-A7SWO6EA.js";import"./chunk-OCVBA66T.js";import{J as m,m as c,p}from"./chunk-G4HBIXG4.js";import{C as d,K as f,aa as a,n as h}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var n=31,s=class extends p{constructor(){super();this.cpuFrequency=1e6;this.defaultROMSize=32768;this.cpu=new c;this.ram=new Uint8Array(16384);this.read=a([[0,16383,16383,e=>this.ram[e]],[16384,16384,65535,e=>this.serial.byteAvailable()?128:0],[16385,16385,65535,e=>this.serial.recvByte()],[16386,16386,65535,e=>this.serial.clearToSend()?128:0],[32768,65535,32767,e=>this.rom&&this.rom[e]]]);this.write=a([[0,16383,16383,(e,r)=>{this.ram[e]=r}],[16387,16387,65535,(e,r)=>this.serial.sendByte(r)],[16399,16399,65535,(e,r)=>{this.inputs[n]=1}]]);this.connectCPUMemoryBus(this)}connectSerialIO(e){this.serial=e}readConst(e){return this.read(e)}advanceFrame(e){for(var r=0;r<this.cpuFrequency/60&&!(e&&e());)r+=this.advanceCPU();return r}advanceCPU(){if(this.isHalted())return 1;var e=super.advanceCPU();return this.serial&&this.serial.advance(e),e}reset(){this.inputs[n]=0,super.reset(),this.serial&&this.serial.reset()}isHalted(){return this.inputs[n]!=0}};var S=[{id:"hello.dasm",name:"Hello World (ASM)"}],l=class{constructor(t){t.style.overflowY="auto";var e=$('<div id="gameport"/>').appendTo(t);$('<p class="transcript-header">Serial Output</p>').appendTo(e);var r=$('<div id="windowport" class="transcript"/>').appendTo(e);this.div=r[0]}start(){this.tty=new x(this.div,!1)}reset(){this.tty.clear()}saveState(){return this.tty.saveState()}loadState(t){this.tty.loadState(t)}};function v(i){return i==10?"":i<32?String.fromCharCode(i+9216):String.fromCharCode(i)}var u=class{constructor(){this.bufferedRead=!0;this.cyclesPerByte=1e6/(57600/8);this.maxOutputBytes=4096}clearToSend(){return this.outputBytes.length<this.maxOutputBytes}sendByte(t){this.clearToSend()&&(this.outputBytes.push(t),this.viewer.tty.addtext(v(t),34),t==10&&this.viewer.tty.newline(),this.clearToSend()||(this.viewer.tty.newline(),this.viewer.tty.addtext("\u26A0\uFE0F OUTPUT BUFFER FULL \u26A0\uFE0F",4)))}byteAvailable(){return this.readIndex()>this.inputIndex}recvByte(){var t=this.readIndex();this.inputIndex=t;var e=(this.inputBytes&&this.inputBytes[t])|0;return this.viewer.tty.addtext(v(e),18),e==10&&this.viewer.tty.newline(),e}readIndex(){return this.bufferedRead?this.inputIndex+1:Math.floor(this.clk/this.cyclesPerByte)}reset(){this.inputIndex=-1,this.clk=0,this.outputBytes=[],this.bufin=""}advance(t){this.clk+=t}saveState(){return{clk:this.clk,idx:this.inputIndex,out:this.outputBytes.slice()}}loadState(t){this.clk=t.clk,this.inputIndex=t.idx,this.outputBytes=t.out.slice()}},o=class extends m{constructor(e){super(e);this.getMemoryMap=function(){return{main:[{name:"RAM",start:0,size:16384,type:"ram"},{name:"ROM",start:32768,size:32768,type:"rom"}]}};this.serview=new l(e)}async start(){super.start(),this.serial=new u,this.serial.viewer=this.serview,this.serview.start(),this.machine.connectSerialIO(this.serial)}reset(){this.serial.inputBytes=d(this.internalFiles["serialin.dat"]),super.reset(),this.serview.reset()}isBlocked(){return this.machine.isHalted()}advance(e){return this.isBlocked()?(this.internalFiles["serialout.dat"]=h(this.serial.outputBytes),y(),0):super.advance(e)}saveState(){var e=super.saveState();return e.serial=this.serial.saveState(),e.serview=this.serview.saveState(),e}loadState(e){super.loadState(e),this.serial.loadState(e.serial),this.serview.loadState(e.serview)}newMachine(){return new s}getPresets(){return S}readAddress(e){return this.machine.readConst(e)}};f["devel-6502"]=o;export{u as SerialTestHarness};
//# sourceMappingURL=devel-24ZY4AY5.js.map
import{a as x}from"./chunk-3FIVEUG2.js";import{w as y}from"./chunk-KW4IDSDB.js";import"./chunk-UG4IOEUD.js";import"./chunk-LNOKARBD.js";import"./chunk-A7SWO6EA.js";import"./chunk-YLE5X5XS.js";import{J as m,m as c,p}from"./chunk-4676AC7I.js";import{C as d,K as f,aa as a,n as h}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var n=31,s=class extends p{constructor(){super();this.cpuFrequency=1e6;this.defaultROMSize=32768;this.cpu=new c;this.ram=new Uint8Array(16384);this.read=a([[0,16383,16383,e=>this.ram[e]],[16384,16384,65535,e=>this.serial.byteAvailable()?128:0],[16385,16385,65535,e=>this.serial.recvByte()],[16386,16386,65535,e=>this.serial.clearToSend()?128:0],[32768,65535,32767,e=>this.rom&&this.rom[e]]]);this.write=a([[0,16383,16383,(e,r)=>{this.ram[e]=r}],[16387,16387,65535,(e,r)=>this.serial.sendByte(r)],[16399,16399,65535,(e,r)=>{this.inputs[n]=1}]]);this.connectCPUMemoryBus(this)}connectSerialIO(e){this.serial=e}readConst(e){return this.read(e)}advanceFrame(e){for(var r=0;r<this.cpuFrequency/60&&!(e&&e());)r+=this.advanceCPU();return r}advanceCPU(){if(this.isHalted())return 1;var e=super.advanceCPU();return this.serial&&this.serial.advance(e),e}reset(){this.inputs[n]=0,super.reset(),this.serial&&this.serial.reset()}isHalted(){return this.inputs[n]!=0}};var S=[{id:"hello.dasm",name:"Hello World (ASM)"}],l=class{constructor(t){t.style.overflowY="auto";var e=$('<div id="gameport"/>').appendTo(t);$('<p class="transcript-header">Serial Output</p>').appendTo(e);var r=$('<div id="windowport" class="transcript"/>').appendTo(e);this.div=r[0]}start(){this.tty=new x(this.div,!1)}reset(){this.tty.clear()}saveState(){return this.tty.saveState()}loadState(t){this.tty.loadState(t)}};function v(i){return i==10?"":i<32?String.fromCharCode(i+9216):String.fromCharCode(i)}var u=class{constructor(){this.bufferedRead=!0;this.cyclesPerByte=1e6/(57600/8);this.maxOutputBytes=4096}clearToSend(){return this.outputBytes.length<this.maxOutputBytes}sendByte(t){this.clearToSend()&&(this.outputBytes.push(t),this.viewer.tty.addtext(v(t),34),t==10&&this.viewer.tty.newline(),this.clearToSend()||(this.viewer.tty.newline(),this.viewer.tty.addtext("\u26A0\uFE0F OUTPUT BUFFER FULL \u26A0\uFE0F",4)))}byteAvailable(){return this.readIndex()>this.inputIndex}recvByte(){var t=this.readIndex();this.inputIndex=t;var e=(this.inputBytes&&this.inputBytes[t])|0;return this.viewer.tty.addtext(v(e),18),e==10&&this.viewer.tty.newline(),e}readIndex(){return this.bufferedRead?this.inputIndex+1:Math.floor(this.clk/this.cyclesPerByte)}reset(){this.inputIndex=-1,this.clk=0,this.outputBytes=[],this.bufin=""}advance(t){this.clk+=t}saveState(){return{clk:this.clk,idx:this.inputIndex,out:this.outputBytes.slice()}}loadState(t){this.clk=t.clk,this.inputIndex=t.idx,this.outputBytes=t.out.slice()}},o=class extends m{constructor(e){super(e);this.getMemoryMap=function(){return{main:[{name:"RAM",start:0,size:16384,type:"ram"},{name:"ROM",start:32768,size:32768,type:"rom"}]}};this.serview=new l(e)}async start(){super.start(),this.serial=new u,this.serial.viewer=this.serview,this.serview.start(),this.machine.connectSerialIO(this.serial)}reset(){this.serial.inputBytes=d(this.internalFiles["serialin.dat"]),super.reset(),this.serview.reset()}isBlocked(){return this.machine.isHalted()}advance(e){return this.isBlocked()?(this.internalFiles["serialout.dat"]=h(this.serial.outputBytes),y(),0):super.advance(e)}saveState(){var e=super.saveState();return e.serial=this.serial.saveState(),e.serview=this.serview.saveState(),e}loadState(e){super.loadState(e),this.serial.loadState(e.serial),this.serview.loadState(e.serview)}newMachine(){return new s}getPresets(){return S}readAddress(e){return this.machine.readConst(e)}};f["devel-6502"]=o;export{u as SerialTestHarness};
//# sourceMappingURL=devel-QWFJHMPT.js.map
File renamed without changes.
+1 -1
View File
@@ -1,2 +1,2 @@
import{b as v,c as P}from"./chunk-OCVBA66T.js";import{A as p,E as w,K as c,l as u,m,y as g}from"./chunk-TYDI7JZQ.js";import{e as I}from"./chunk-KT7KMEQC.js";var k=I(P()),i,a,l,h=(function(e){if(!e||e.length==0)return{};for(var r={},t=0;t<e.length;++t){var o=e[t].split("=",2);o.length==1?r[o[0]]="":r[o[0]]=decodeURIComponent(o[1].replace(/\+/g," "))}return r})(window.location.search.substr(1).split("&"));function x(){typeof window.onerror=="object"&&(window.onerror=function(e,r,t,o,n){var s=e+" "+r+" "+t+":"+o+", "+n;$.get("/error?msg="+encodeURIComponent(s),"text")})}function M(){var e=!1;document.addEventListener("visibilitychange",function(r){document.visibilityState=="hidden"&&a.isRunning()?(a.pause(),e=!0):document.visibilityState=="visible"&&e&&(a.resume(),e=!1)}),$(window).on("focus",function(){e&&(a.resume(),e=!1)}),$(window).on("blur",function(){a.isRunning()&&(a.pause(),e=!0)})}async function y(e,r){if(!r){alert("No ROM found.");return}console.log(r.length+" bytes"),await a.loadROM(e,r),a.resume()}function R(){return $("#emulator").find("canvas")}function E(e,r,t){w("gif.js/dist/gif.js").then(()=>{var o=R()[0];if(!o){alert("Could not find canvas element to record video!");return}var n=0;o.style&&o.style.transform&&(o.style.transform.indexOf("rotate(-90deg)")>=0?n=-1:o.style.transform.indexOf("rotate(90deg)")>=0&&(n=1));var s=new GIF({workerScript:"gif.js/dist/gif.worker.js",workers:4,quality:10,rotate:n});s.on("finished",function(C){console.log("finished encoding GIF"),t(C)}),e=e||100+(Math.random()*256&3),r=r||100+(Math.random()*256&15);var f=0;console.log("Recording video",o);var d=()=>{f++>r?(console.log("Rendering video"),s.render()):(s.addFrame(o,{delay:e,copy:!0}),setTimeout(d,e))};d()})}async function S(e){if(!c[i])throw Error("Invalid platform '"+i+"'.");a=new c[i]($("#emuscreen")[0]),await a.start(),e.rec&&R().on("focus",()=>{a.resume()});var r=e.n||"Game",t,o=e.url,n=e.r;if(o)return console.log(o),g(o,f=>{y(r,f)},"arraybuffer"),!0;if(n){var s=m(atob(n));t=new u().decode(s)}return M(),y(r,t),!0}async function b(e){if(e.data&&(e=e.data),i=e.p,!i)throw new Error("No platform variable!");try{var r=await v(p(i));console.log("starting platform",i),await S(e)}catch(t){console.log(t),alert('Platform "'+i+'" not supported.')}}function F(){x(),h.p&&b(h)}window.addEventListener("message",O,!1);function O(e){if(e.data){var r=e.data.cmd;if(r=="start"&&!a)b(e);else if(r=="reset")a.reset(),l.reset();else if(r=="getReplay"){var t={frameCount:l.frameCount,checkpoints:l.checkpoints,framerecs:l.framerecs,checkpointInterval:l.checkpointInterval,maxCheckpoints:l.maxCheckpoints};e.source.postMessage({ack:r,replay:t},e.origin)}else if(r=="watchState"){var o=new Function("platform","state",e.data.fn);l.callbackNewCheckpoint=n=>{e.source.postMessage({ack:r,state:o(a,n)},e.origin)}}else r=="recordVideo"?E(e.data.intervalMsec,e.data.maxFrames,function(n){e.data.filename&&(0,k.saveAs)(n,e.data.filename),e.source.postMessage({ack:r,gif:n},e.origin)}):console.log("Unknown data.cmd: "+r)}}self===top&&(document.body.style.backgroundColor="#555");F();export{a as platform,i as platform_id,F as startEmbed,l as stateRecorder};
import{b as v,c as P}from"./chunk-YLE5X5XS.js";import{A as p,E as w,K as c,l as u,m,y as g}from"./chunk-TYDI7JZQ.js";import{e as I}from"./chunk-KT7KMEQC.js";var k=I(P()),i,a,l,h=(function(e){if(!e||e.length==0)return{};for(var r={},t=0;t<e.length;++t){var o=e[t].split("=",2);o.length==1?r[o[0]]="":r[o[0]]=decodeURIComponent(o[1].replace(/\+/g," "))}return r})(window.location.search.substr(1).split("&"));function x(){typeof window.onerror=="object"&&(window.onerror=function(e,r,t,o,n){var s=e+" "+r+" "+t+":"+o+", "+n;$.get("/error?msg="+encodeURIComponent(s),"text")})}function M(){var e=!1;document.addEventListener("visibilitychange",function(r){document.visibilityState=="hidden"&&a.isRunning()?(a.pause(),e=!0):document.visibilityState=="visible"&&e&&(a.resume(),e=!1)}),$(window).on("focus",function(){e&&(a.resume(),e=!1)}),$(window).on("blur",function(){a.isRunning()&&(a.pause(),e=!0)})}async function y(e,r){if(!r){alert("No ROM found.");return}console.log(r.length+" bytes"),await a.loadROM(e,r),a.resume()}function R(){return $("#emulator").find("canvas")}function E(e,r,t){w("gif.js/dist/gif.js").then(()=>{var o=R()[0];if(!o){alert("Could not find canvas element to record video!");return}var n=0;o.style&&o.style.transform&&(o.style.transform.indexOf("rotate(-90deg)")>=0?n=-1:o.style.transform.indexOf("rotate(90deg)")>=0&&(n=1));var s=new GIF({workerScript:"gif.js/dist/gif.worker.js",workers:4,quality:10,rotate:n});s.on("finished",function(C){console.log("finished encoding GIF"),t(C)}),e=e||100+(Math.random()*256&3),r=r||100+(Math.random()*256&15);var f=0;console.log("Recording video",o);var d=()=>{f++>r?(console.log("Rendering video"),s.render()):(s.addFrame(o,{delay:e,copy:!0}),setTimeout(d,e))};d()})}async function S(e){if(!c[i])throw Error("Invalid platform '"+i+"'.");a=new c[i]($("#emuscreen")[0]),await a.start(),e.rec&&R().on("focus",()=>{a.resume()});var r=e.n||"Game",t,o=e.url,n=e.r;if(o)return console.log(o),g(o,f=>{y(r,f)},"arraybuffer"),!0;if(n){var s=m(atob(n));t=new u().decode(s)}return M(),y(r,t),!0}async function b(e){if(e.data&&(e=e.data),i=e.p,!i)throw new Error("No platform variable!");try{var r=await v(p(i));console.log("starting platform",i),await S(e)}catch(t){console.log(t),alert('Platform "'+i+'" not supported.')}}function F(){x(),h.p&&b(h)}window.addEventListener("message",O,!1);function O(e){if(e.data){var r=e.data.cmd;if(r=="start"&&!a)b(e);else if(r=="reset")a.reset(),l.reset();else if(r=="getReplay"){var t={frameCount:l.frameCount,checkpoints:l.checkpoints,framerecs:l.framerecs,checkpointInterval:l.checkpointInterval,maxCheckpoints:l.maxCheckpoints};e.source.postMessage({ack:r,replay:t},e.origin)}else if(r=="watchState"){var o=new Function("platform","state",e.data.fn);l.callbackNewCheckpoint=n=>{e.source.postMessage({ack:r,state:o(a,n)},e.origin)}}else r=="recordVideo"?E(e.data.intervalMsec,e.data.maxFrames,function(n){e.data.filename&&(0,k.saveAs)(n,e.data.filename),e.source.postMessage({ack:r,gif:n},e.origin)}):console.log("Unknown data.cmd: "+r)}}self===top&&(document.body.style.backgroundColor="#555");F();export{a as platform,i as platform_id,F as startEmbed,l as stateRecorder};
//# sourceMappingURL=embedui.js.map
@@ -1,2 +1,2 @@
import{J as G,m as S,r as k}from"./chunk-G4HBIXG4.js";import{K as P,W as c,X as v,Z as R,aa as C}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var T=R([[c.START,1,-1],[c.RIGHT,1,-4],[c.LEFT,1,-8],[c.A,1,-16],[c.UP,1,-32],[c.DOWN,1,-64],[c.SELECT,1,-128]]);var U={collision_mask:4,collision_invert:4,scrnbase:16384,charbase:18432};var b=class extends k{constructor(){super();this.cpuFrequency=705562;this.sampleRate=894886;this.numVisibleScanlines=256;this.numTotalScanlines=262;this.cpuCyclesPerLine=42;this.canvasWidth=256;this.defaultROMSize=45056;this.cpu=new S;this.ram=new Uint8Array(28672);this.color_latch=[84,238,107];this.palette=[4278190080,4278190335,4294901760,4294902015,4278255360,4278255615,4294967040,4294967295];this.inputs=new Uint8Array(4);this.keyMap=T;this.handler=v(this.inputs,this.keyMap);this.scrnbase=16384;this.charbase=18432;this.collision_mask=0;this.collision_invert=0;this.current_collision=0;this.pia_regs=new Uint8Array(4);this.bus={read:C([[0,1023,0,t=>this.ram[t]],[4096,16383,0,t=>this.rom[t-4096]],[16384,20479,0,t=>this.ram[t]],[20736,20991,3,t=>t==3?this.int_latch():this.inputs[t]],[20992,21007,3,t=>this.readPIA(t)],[24576,28671,0,t=>this.ram[t]],[32768,65535,0,t=>this.rom[t-32768]]]),write:C([[0,1023,0,(t,e)=>{this.ram[t]=e}],[16384,20479,0,(t,e)=>{this.ram[t]=e}],[20480,20737,0,(t,e)=>{this.ram[t]=e}],[20992,21007,3,(t,e)=>{this.writePIA(t,e)}],[21008,21010,3,(t,e)=>{this.setColorLatch(t,e)}],[24576,28671,0,(t,e)=>{this.ram[t]=e}]])};this.connectCPUMemoryBus(this),this.updatePalette(),this.inputs[0]=234,this.inputs[1]=255}configure(t){this.collision_mask=t.collision_mask,this.collision_invert=t.collision_invert,this.scrnbase=t.scrnbase,this.charbase=t.charbase}loadROM(t){if(super.loadROM(t),t.length==11616)this.rom.set(t.slice(10240,12288),32768),this.rom.set(t.slice(9984,10240),32512),this.rom.set(t.slice(0,10240),2048),this.scrnbase=16384,this.charbase=18432;else if(t.length==14336)this.rom.set(t.slice(13312,14336),32768),this.rom.set(t.slice(12032,12288),32512),this.scrnbase=16384,this.charbase=18432;else if(t.length==32768)this.rom.set(t.slice(30720,32768),32768),this.rom.set(t.slice(0,24576),8192),this.scrnbase=16384,this.charbase=24576;else if(t.length==45056)this.configure(U);else if(t.length!=45056)throw new Error("Warning: ROM size not recognized: "+t.length);let e=32768;this.sprite_gfx=this.rom.subarray(e,e+2048)}read(t){return this.bus.read(t)}readConst(t){return t==20739?this.inputs[3]:this.bus.read(t)}write(t,e){this.bus.write(t,e)}readPIA(t){return this.pia_regs[t&3]}writePIA(t,e){this.pia_regs[t&3]=e}int_latch(){let t=this.inputs[3];t|=this.inputs[1]&128?0:64;let e=this.current_collision^this.collision_invert;return e&=this.collision_mask,t|=e,this.inputs[3]=128,t}checkCollisionM1CHAR(){let t=this.ram[20480],e=this.ram[20544],r=236-t-4,i=244-e-4,a=this.ram[20737];if(a&128&&!(a&16)&&this.collision_mask!=0)return!1;let l=a&32?1:0,o=((this.ram[20736]&15)+16*l)*32;for(let s=0;s<16;s++){let x=i+s;if(x<0||x>=256)continue;let d=x>>3,y=x&7,M=this.sprite_gfx[o+s],m=this.sprite_gfx[o+s+16];for(let n=0;n<16;n++){let _=n<8?M:m,p=n<8?128>>n:128>>n-8;if(!(_&p))continue;let h=r+n;if(h<0||h>=256)continue;let u=h>>3,g=this.ram[this.scrnbase+d*32+u];if(this.ram[this.charbase+g*8+y]&128>>(h&7))return!0}}return!1}checkCollisionM1M2(){let t=236-this.ram[20480]-4,e=244-this.ram[20544]-4,r=236-this.ram[20608]-4,i=244-this.ram[20672]-4;if(t+16<=r||r+16<=t||e+16<=i||i+16<=e)return!1;let a=this.ram[20737],l=a&32?1:0,f=((this.ram[20736]&15)+16*l)*32,o=a&64?1:0,s=((this.ram[20736]>>4)+32+16*o)*32,x=Math.max(t,r),d=Math.min(t+16,r+16),y=Math.max(e,i),M=Math.min(e+16,i+16);for(let m=y;m<M;m++){let n=m-e,_=m-i;for(let p=x;p<d;p++){let h=p-t,u=p-r,g=h<8?this.sprite_gfx[f+n]:this.sprite_gfx[f+n+16],E=h<8?128>>h:128>>h-8,I=u<8?this.sprite_gfx[s+_]:this.sprite_gfx[s+_+16],z=u<8?128>>u:128>>u-8;if(g&E&&I&z)return!0}}return!1}updatePalette(){this.set_1_color(0,0),this.set_1_color(1,7),this.set_1_color(2,0),this.set_1_color(3,6),this.set_1_color(4,4),this.set_1_color(5,3),this.set_1_color(6,2),this.set_1_color(7,1)}set_1_color(t,e){let r=this.color_latch[0]&1<<e?1:0,i=this.color_latch[1]&1<<e?2:0,a=this.color_latch[2]&1<<e?4:0;this.palette[t]=F[r|i|a]}setColorLatch(t,e){this.color_latch[t&3]=e,this.updatePalette()}drawSprite(t,e,r,i){var a=236-t-4,l=244-e-4;if(l+=15,l-=this.scanline,l>=0&&l<16){l=15-l;let f=this.scanline*this.canvasWidth,o=this.sprite_gfx[r+l];for(let s=0;s<8;s++)if(o&128>>s){let x=a+s;x>=0&&x<256&&(this.pixels[f+x]=this.palette[i])}o=this.sprite_gfx[r+l+16];for(let s=0;s<8;s++)if(o&128>>s){let x=a+s+8;x>=0&&x<256&&(this.pixels[f+x]=this.palette[i])}}}drawSprite1(){let t=this.ram[20737];if(t&128&&!(t&16)&&this.collision_mask!=0)return;let e=this.ram[20480],r=this.ram[20544],i=t&32?1:0,a=(this.ram[20736]&15)+16*i;this.drawSprite(e,r,a*32,1)}drawSprite2(){let t=this.ram[20737];if(t&64&&this.collision_mask!=0)return;let e=this.ram[20608],r=this.ram[20672],i=t&64?1:0,a=(this.ram[2073Line truncated
//# sourceMappingURL=exidy-FTSS3NUP.js.map
import{J as G,m as S,r as k}from"./chunk-4676AC7I.js";import{K as P,W as c,X as v,Z as R,aa as C}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var T=R([[c.START,1,-1],[c.RIGHT,1,-4],[c.LEFT,1,-8],[c.A,1,-16],[c.UP,1,-32],[c.DOWN,1,-64],[c.SELECT,1,-128]]);var U={collision_mask:4,collision_invert:4,scrnbase:16384,charbase:18432};var b=class extends k{constructor(){super();this.cpuFrequency=705562;this.sampleRate=894886;this.numVisibleScanlines=256;this.numTotalScanlines=262;this.cpuCyclesPerLine=42;this.canvasWidth=256;this.defaultROMSize=45056;this.cpu=new S;this.ram=new Uint8Array(28672);this.color_latch=[84,238,107];this.palette=[4278190080,4278190335,4294901760,4294902015,4278255360,4278255615,4294967040,4294967295];this.inputs=new Uint8Array(4);this.keyMap=T;this.handler=v(this.inputs,this.keyMap);this.scrnbase=16384;this.charbase=18432;this.collision_mask=0;this.collision_invert=0;this.current_collision=0;this.pia_regs=new Uint8Array(4);this.bus={read:C([[0,1023,0,t=>this.ram[t]],[4096,16383,0,t=>this.rom[t-4096]],[16384,20479,0,t=>this.ram[t]],[20736,20991,3,t=>t==3?this.int_latch():this.inputs[t]],[20992,21007,3,t=>this.readPIA(t)],[24576,28671,0,t=>this.ram[t]],[32768,65535,0,t=>this.rom[t-32768]]]),write:C([[0,1023,0,(t,e)=>{this.ram[t]=e}],[16384,20479,0,(t,e)=>{this.ram[t]=e}],[20480,20737,0,(t,e)=>{this.ram[t]=e}],[20992,21007,3,(t,e)=>{this.writePIA(t,e)}],[21008,21010,3,(t,e)=>{this.setColorLatch(t,e)}],[24576,28671,0,(t,e)=>{this.ram[t]=e}]])};this.connectCPUMemoryBus(this),this.updatePalette(),this.inputs[0]=234,this.inputs[1]=255}configure(t){this.collision_mask=t.collision_mask,this.collision_invert=t.collision_invert,this.scrnbase=t.scrnbase,this.charbase=t.charbase}loadROM(t){if(super.loadROM(t),t.length==11616)this.rom.set(t.slice(10240,12288),32768),this.rom.set(t.slice(9984,10240),32512),this.rom.set(t.slice(0,10240),2048),this.scrnbase=16384,this.charbase=18432;else if(t.length==14336)this.rom.set(t.slice(13312,14336),32768),this.rom.set(t.slice(12032,12288),32512),this.scrnbase=16384,this.charbase=18432;else if(t.length==32768)this.rom.set(t.slice(30720,32768),32768),this.rom.set(t.slice(0,24576),8192),this.scrnbase=16384,this.charbase=24576;else if(t.length==45056)this.configure(U);else if(t.length!=45056)throw new Error("Warning: ROM size not recognized: "+t.length);let e=32768;this.sprite_gfx=this.rom.subarray(e,e+2048)}read(t){return this.bus.read(t)}readConst(t){return t==20739?this.inputs[3]:this.bus.read(t)}write(t,e){this.bus.write(t,e)}readPIA(t){return this.pia_regs[t&3]}writePIA(t,e){this.pia_regs[t&3]=e}int_latch(){let t=this.inputs[3];t|=this.inputs[1]&128?0:64;let e=this.current_collision^this.collision_invert;return e&=this.collision_mask,t|=e,this.inputs[3]=128,t}checkCollisionM1CHAR(){let t=this.ram[20480],e=this.ram[20544],r=236-t-4,i=244-e-4,a=this.ram[20737];if(a&128&&!(a&16)&&this.collision_mask!=0)return!1;let l=a&32?1:0,o=((this.ram[20736]&15)+16*l)*32;for(let s=0;s<16;s++){let x=i+s;if(x<0||x>=256)continue;let d=x>>3,y=x&7,M=this.sprite_gfx[o+s],m=this.sprite_gfx[o+s+16];for(let n=0;n<16;n++){let _=n<8?M:m,p=n<8?128>>n:128>>n-8;if(!(_&p))continue;let h=r+n;if(h<0||h>=256)continue;let u=h>>3,g=this.ram[this.scrnbase+d*32+u];if(this.ram[this.charbase+g*8+y]&128>>(h&7))return!0}}return!1}checkCollisionM1M2(){let t=236-this.ram[20480]-4,e=244-this.ram[20544]-4,r=236-this.ram[20608]-4,i=244-this.ram[20672]-4;if(t+16<=r||r+16<=t||e+16<=i||i+16<=e)return!1;let a=this.ram[20737],l=a&32?1:0,f=((this.ram[20736]&15)+16*l)*32,o=a&64?1:0,s=((this.ram[20736]>>4)+32+16*o)*32,x=Math.max(t,r),d=Math.min(t+16,r+16),y=Math.max(e,i),M=Math.min(e+16,i+16);for(let m=y;m<M;m++){let n=m-e,_=m-i;for(let p=x;p<d;p++){let h=p-t,u=p-r,g=h<8?this.sprite_gfx[f+n]:this.sprite_gfx[f+n+16],E=h<8?128>>h:128>>h-8,I=u<8?this.sprite_gfx[s+_]:this.sprite_gfx[s+_+16],z=u<8?128>>u:128>>u-8;if(g&E&&I&z)return!0}}return!1}updatePalette(){this.set_1_color(0,0),this.set_1_color(1,7),this.set_1_color(2,0),this.set_1_color(3,6),this.set_1_color(4,4),this.set_1_color(5,3),this.set_1_color(6,2),this.set_1_color(7,1)}set_1_color(t,e){let r=this.color_latch[0]&1<<e?1:0,i=this.color_latch[1]&1<<e?2:0,a=this.color_latch[2]&1<<e?4:0;this.palette[t]=F[r|i|a]}setColorLatch(t,e){this.color_latch[t&3]=e,this.updatePalette()}drawSprite(t,e,r,i){var a=236-t-4,l=244-e-4;if(l+=15,l-=this.scanline,l>=0&&l<16){l=15-l;let f=this.scanline*this.canvasWidth,o=this.sprite_gfx[r+l];for(let s=0;s<8;s++)if(o&128>>s){let x=a+s;x>=0&&x<256&&(this.pixels[f+x]=this.palette[i])}o=this.sprite_gfx[r+l+16];for(let s=0;s<8;s++)if(o&128>>s){let x=a+s+8;x>=0&&x<256&&(this.pixels[f+x]=this.palette[i])}}}drawSprite1(){let t=this.ram[20737];if(t&128&&!(t&16)&&this.collision_mask!=0)return;let e=this.ram[20480],r=this.ram[20544],i=t&32?1:0,a=(this.ram[20736]&15)+16*i;this.drawSprite(e,r,a*32,1)}drawSprite2(){let t=this.ram[20737];if(t&64&&this.collision_mask!=0)return;let e=this.ram[20608],r=this.ram[20672],i=t&64?1:0,a=(this.ram[2073Line truncated
//# sourceMappingURL=exidy-NQTJRGZD.js.map
File renamed without changes.
@@ -1,2 +1,2 @@
import{K as Q,c as z,d as X,e as L,k as j,r as J}from"./chunk-G4HBIXG4.js";import{$ as Z,K as P,L as N,T as Y,W as s,X as q,Z as F,aa as _}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var o0=F([[s.A,0,16],[s.LEFT,0,4],[s.RIGHT,0,8],[s.P2_A,1,16],[s.P2_LEFT,1,4],[s.P2_RIGHT,1,8],[s.SELECT,0,1],[s.START,1,1],[s.VK_2,1,2]]),h0=F([[s.UP,0,-1],[s.B,0,-2],[s.VK_7,0,-4],[s.A,0,-8],[s.RIGHT,0,-16],[s.LEFT,0,-32],[s.VK_6,0,-64],[s.SELECT,0,-128],[s.START,1,-128],[s.VK_2,1,-64],[s.DOWN,2,-64]]),u0=[33,71,151,8448,18176,38656,5308416,11403264],c0=function(n,b,t,r,f){var u=f.gfxBase||10240;this.missileWidth=f.missileWidth||4,this.missileOffset=f.missileOffset||0,this.showOffscreenObjects=!1,this.frameCounter=0,this.starsEnabled=0;for(var k=[],T=0;T<256;T++)k[T]=N();this.advanceFrame=function(){this.frameCounter=this.frameCounter+1&255},this.drawScanline=function(c,x){var l=x*264;if(!this.showOffscreenObjects&&(x<16||x>=240)){for(var e=0;e<264;e++)c[l+e]=4278190080;return}for(var a=l,C=0;C<32;C++)for(var I=C,s0=t[I*2],a0=t[I*2+1],D=x+s0&255,i0=D>>3<<5,o=D&7,n0=b[i0+I],A=(a0&7)<<2,m=u+(n0<<3)+o,d=n[m],v=n[m+2048],e=0;e<8;e++){var h=128>>e,p=A+(d&h?1:0)+(v&h?2:0);c[a]=r[p],a++}for(var w=7;w>=0;w--){var y=(w<<2)+64,f0=t[y],B=240-(f0-(w<3?1:0)),o=x-B;if(o>=0&&o<16){var O=t[y+3]+1;if(O==0&&!this.showOffscreenObjects)continue;var E=t[y+1],K=E&64;E&128&&(o=15-o),E&=63;var A=(t[y+2]&7)<<2,m=u+(E<<5)+(o<8?o:o+8);a=l+O;for(var d=n[m],v=n[m+2048],e=0;e<8;e++){var h=128>>e,p=(d&h?1:0)+(v&h?2:0);p&&(c[K?a+15-e:a+e]=r[A+p])}for(var d=n[m+8],v=n[m+2056],e=0;e<8;e++){var h=128>>e,p=(d&h?1:0)+(v&h?2:0);p&&(c[K?a+7-e:a+e+8]=r[A+p])}}}for(var G=255,W=255,i=0;i<8;i++){var B=t[96+(i<<2)+1];(B+x-(i<3?1:0)&255)==255&&(i!=7?G=i:W=i)}for(var e=0;e<2;e++)if(i=e?W:G,i!=255)for(var O=255-t[96+(i<<2)+3],a=l+O-this.missileOffset,x0=i==7?4294967040:4294967295,H=0;H<this.missileWidth;H++)c[a++]=x0;if(this.starsEnabled){var V=this.frameCounter+k[x&255]&255;if(V+x&16){var a=l+V;(c[a]&16777215)==0&&(c[a]=r[x&31])}}}},t0=18432e3,m0=264,r0=t0/6,e0=t0/3/192/2,p0=e0/132/2,O0=1/p0*(20/132),l0=r0/e0,M=8,$=2,d0=60*m0,g=class extends J{constructor(){super();this.options={};this.palBase=14336;this.keyMap=o0;this.cpuFrequency=r0;this.canvasWidth=264;this.numTotalScanlines=264;this.numVisibleScanlines=264;this.defaultROMSize=16384;this.sampleRate=d0*$;this.cpuCyclesPerLine=l0|0;this.rotate=90;this.cpu=new z;this.ram=new Uint8Array(2048);this.vram=new Uint8Array(1024);this.oram=new Uint8Array(256);this.watchdog_counter=0;this.interruptEnabled=0;this.defaultInputs=[14,8,0];this.read=_([[0,16383,0,t=>this.rom?this.rom[t]:null],[16384,18431,1023,t=>this.ram[t]],[20480,22527,1023,t=>this.vram[t]],[22528,24575,255,t=>this.oram[t]],[24576,24576,0,t=>this.inputs[0]],[26624,26624,0,t=>this.inputs[1]],[28672,28672,0,t=>this.inputs[2]],[30720,30720,0,t=>{this.watchdog_counter=M}]]);this.write=_([[16384,18431,1023,(t,r)=>{this.ram[t]=r}],[20480,22527,1023,(t,r)=>{this.vram[t]=r}],[22528,24575,255,(t,r)=>{this.oram[t]=r}],[28673,28673,0,(t,r)=>{this.interruptEnabled=r&1}],[28676,28676,0,(t,r)=>{this.gfx.starsEnabled=r&1}]]);var t=new X;this.psg1=new L(t),this.psg2=new L(t),this.audioadapter=new j([this.psg1.psg,this.psg2.psg],$,this.sampleRate),this.init()}init(){this.rom=new Uint8Array(this.defaultROMSize),this.palette=new Uint32Array(new ArrayBuffer(128)),this.gfx=new c0(this.rom,this.vram,this.oram,this.palette,this.options),this.connectCPUMemoryBus(this),this.connectCPUIOBus(this.newIOBus()),this.inputs.set(this.defaultInputs),this.handler=q(this.inputs,this.keyMap)}readConst(t){return t<28672?this.read(t):null}newIOBus(){return{read:t=>0,write:(t,r)=>{t&1&&this.psg1.selectRegister(r&15),t&2&&this.psg1.setData(r),t&4&&this.psg2.selectRegister(r&15),t&8&&this.psg2.setData(r)}}}reset(){super.reset(),this.psg1.reset(),this.psg2.reset(),this.watchdog_counter=M}startScanline(){this.audio&&this.audioadapter&&this.audioadapter.generate(this.audio)}drawScanline(){this.gfx.drawScanline(this.pixels,this.scanline)}advanceFrame(t){var r=super.advanceFrame(t);if(this.gfx.advanceFrame(),!this.gfx.showOffscreenObjects)for(var f=0;f<264;f++)this.pixels.fill(4278190080,256+f*264,264+f*264);if(this.watchdog_counter--<=0)throw new Y("WATCHDOG FIRED");return this.interruptEnabled&&this.cpu.NMI(),r}loadROM(t){this.rom.set(Z(t,this.defaultROMSize));for(var r=0;r<32;r++){var f=this.rom[this.palBase+r];this.palette[r]=4278190080;for(var u=0;u<8;u++)1<<u&f&&(this.palette[r]+=u0[u])}}loadState(t){super.loadState(t),this.vram.set(t.bv),this.oram.set(t.bo),this.watchdog_counter=t.wdc,this.interruptEnabled=t.ie,this.gfx.starsEnabled=t.se,this.gfx.frameCounter=t.fc}saveState(){var t=super.saveState();return t.bv=this.vram.slice(0),t.bo=this.oram.slice(0),t.fc=this.gfx.frameCounter,t.ie=this.interruptEnabled,t.se=this.gfx.starsEnabled,t.wdc=this.watchdog_counter,t}},S=class extends g{constructor(){super();this.defaultROMSize=20512;this.palBase=20480;this.scramble=!0;this.keyMap=h0;this.options=Line truncated
//# sourceMappingURL=galaxian-EJFCISIO.js.map
import{K as Q,c as z,d as X,e as L,k as j,r as J}from"./chunk-4676AC7I.js";import{$ as Z,K as P,L as N,T as Y,W as s,X as q,Z as F,aa as _}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var o0=F([[s.A,0,16],[s.LEFT,0,4],[s.RIGHT,0,8],[s.P2_A,1,16],[s.P2_LEFT,1,4],[s.P2_RIGHT,1,8],[s.SELECT,0,1],[s.START,1,1],[s.VK_2,1,2]]),h0=F([[s.UP,0,-1],[s.B,0,-2],[s.VK_7,0,-4],[s.A,0,-8],[s.RIGHT,0,-16],[s.LEFT,0,-32],[s.VK_6,0,-64],[s.SELECT,0,-128],[s.START,1,-128],[s.VK_2,1,-64],[s.DOWN,2,-64]]),u0=[33,71,151,8448,18176,38656,5308416,11403264],c0=function(n,b,t,r,f){var u=f.gfxBase||10240;this.missileWidth=f.missileWidth||4,this.missileOffset=f.missileOffset||0,this.showOffscreenObjects=!1,this.frameCounter=0,this.starsEnabled=0;for(var k=[],T=0;T<256;T++)k[T]=N();this.advanceFrame=function(){this.frameCounter=this.frameCounter+1&255},this.drawScanline=function(c,x){var l=x*264;if(!this.showOffscreenObjects&&(x<16||x>=240)){for(var e=0;e<264;e++)c[l+e]=4278190080;return}for(var a=l,C=0;C<32;C++)for(var I=C,s0=t[I*2],a0=t[I*2+1],D=x+s0&255,i0=D>>3<<5,o=D&7,n0=b[i0+I],A=(a0&7)<<2,m=u+(n0<<3)+o,d=n[m],v=n[m+2048],e=0;e<8;e++){var h=128>>e,p=A+(d&h?1:0)+(v&h?2:0);c[a]=r[p],a++}for(var w=7;w>=0;w--){var y=(w<<2)+64,f0=t[y],B=240-(f0-(w<3?1:0)),o=x-B;if(o>=0&&o<16){var O=t[y+3]+1;if(O==0&&!this.showOffscreenObjects)continue;var E=t[y+1],K=E&64;E&128&&(o=15-o),E&=63;var A=(t[y+2]&7)<<2,m=u+(E<<5)+(o<8?o:o+8);a=l+O;for(var d=n[m],v=n[m+2048],e=0;e<8;e++){var h=128>>e,p=(d&h?1:0)+(v&h?2:0);p&&(c[K?a+15-e:a+e]=r[A+p])}for(var d=n[m+8],v=n[m+2056],e=0;e<8;e++){var h=128>>e,p=(d&h?1:0)+(v&h?2:0);p&&(c[K?a+7-e:a+e+8]=r[A+p])}}}for(var G=255,W=255,i=0;i<8;i++){var B=t[96+(i<<2)+1];(B+x-(i<3?1:0)&255)==255&&(i!=7?G=i:W=i)}for(var e=0;e<2;e++)if(i=e?W:G,i!=255)for(var O=255-t[96+(i<<2)+3],a=l+O-this.missileOffset,x0=i==7?4294967040:4294967295,H=0;H<this.missileWidth;H++)c[a++]=x0;if(this.starsEnabled){var V=this.frameCounter+k[x&255]&255;if(V+x&16){var a=l+V;(c[a]&16777215)==0&&(c[a]=r[x&31])}}}},t0=18432e3,m0=264,r0=t0/6,e0=t0/3/192/2,p0=e0/132/2,O0=1/p0*(20/132),l0=r0/e0,M=8,$=2,d0=60*m0,g=class extends J{constructor(){super();this.options={};this.palBase=14336;this.keyMap=o0;this.cpuFrequency=r0;this.canvasWidth=264;this.numTotalScanlines=264;this.numVisibleScanlines=264;this.defaultROMSize=16384;this.sampleRate=d0*$;this.cpuCyclesPerLine=l0|0;this.rotate=90;this.cpu=new z;this.ram=new Uint8Array(2048);this.vram=new Uint8Array(1024);this.oram=new Uint8Array(256);this.watchdog_counter=0;this.interruptEnabled=0;this.defaultInputs=[14,8,0];this.read=_([[0,16383,0,t=>this.rom?this.rom[t]:null],[16384,18431,1023,t=>this.ram[t]],[20480,22527,1023,t=>this.vram[t]],[22528,24575,255,t=>this.oram[t]],[24576,24576,0,t=>this.inputs[0]],[26624,26624,0,t=>this.inputs[1]],[28672,28672,0,t=>this.inputs[2]],[30720,30720,0,t=>{this.watchdog_counter=M}]]);this.write=_([[16384,18431,1023,(t,r)=>{this.ram[t]=r}],[20480,22527,1023,(t,r)=>{this.vram[t]=r}],[22528,24575,255,(t,r)=>{this.oram[t]=r}],[28673,28673,0,(t,r)=>{this.interruptEnabled=r&1}],[28676,28676,0,(t,r)=>{this.gfx.starsEnabled=r&1}]]);var t=new X;this.psg1=new L(t),this.psg2=new L(t),this.audioadapter=new j([this.psg1.psg,this.psg2.psg],$,this.sampleRate),this.init()}init(){this.rom=new Uint8Array(this.defaultROMSize),this.palette=new Uint32Array(new ArrayBuffer(128)),this.gfx=new c0(this.rom,this.vram,this.oram,this.palette,this.options),this.connectCPUMemoryBus(this),this.connectCPUIOBus(this.newIOBus()),this.inputs.set(this.defaultInputs),this.handler=q(this.inputs,this.keyMap)}readConst(t){return t<28672?this.read(t):null}newIOBus(){return{read:t=>0,write:(t,r)=>{t&1&&this.psg1.selectRegister(r&15),t&2&&this.psg1.setData(r),t&4&&this.psg2.selectRegister(r&15),t&8&&this.psg2.setData(r)}}}reset(){super.reset(),this.psg1.reset(),this.psg2.reset(),this.watchdog_counter=M}startScanline(){this.audio&&this.audioadapter&&this.audioadapter.generate(this.audio)}drawScanline(){this.gfx.drawScanline(this.pixels,this.scanline)}advanceFrame(t){var r=super.advanceFrame(t);if(this.gfx.advanceFrame(),!this.gfx.showOffscreenObjects)for(var f=0;f<264;f++)this.pixels.fill(4278190080,256+f*264,264+f*264);if(this.watchdog_counter--<=0)throw new Y("WATCHDOG FIRED");return this.interruptEnabled&&this.cpu.NMI(),r}loadROM(t){this.rom.set(Z(t,this.defaultROMSize));for(var r=0;r<32;r++){var f=this.rom[this.palBase+r];this.palette[r]=4278190080;for(var u=0;u<8;u++)1<<u&f&&(this.palette[r]+=u0[u])}}loadState(t){super.loadState(t),this.vram.set(t.bv),this.oram.set(t.bo),this.watchdog_counter=t.wdc,this.interruptEnabled=t.ie,this.gfx.starsEnabled=t.se,this.gfx.frameCounter=t.fc}saveState(){var t=super.saveState();return t.bv=this.vram.slice(0),t.bo=this.oram.slice(0),t.fc=this.gfx.frameCounter,t.ie=this.interruptEnabled,t.se=this.gfx.starsEnabled,t.wdc=this.watchdog_counter,t}},S=class extends g{constructor(){super();this.defaultROMSize=20512;this.palBase=20480;this.scramble=!0;this.keyMap=h0;this.options=Line truncated
//# sourceMappingURL=galaxian-2ZINMM4F.js.map
File renamed without changes.
+2 -2
View File
@@ -1,4 +1,4 @@
import{a as D}from"./chunk-A7SWO6EA.js";import{C as K,E as $,H as Y,I as J,r as Z,u as V}from"./chunk-G4HBIXG4.js";import{K as j,T as z,W as f,X as O,Z as N,aa as W,g as x}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var b=class b{constructor(){this.A=0;this.F=0;this.B=0;this.C=0;this.D=0;this.E=0;this.H=0;this.L=0;this.SP=65534;this.PC=256;this.ime=!1;this.imeDelay=!1;this.halted=!1;this.interruptFlags=0;this.cyclesPerInsn=0;this.o=0;this.stable=!0}connectMemoryBus(t){this.bus=t}reset(){this.A=1,this.F=176,this.B=0,this.C=19,this.D=0,this.E=216,this.H=1,this.L=77,this.SP=65534,this.PC=256,this.ime=!1,this.imeDelay=!1,this.halted=!1,this.interruptFlags=0}interrupt(t){this.interruptFlags|=t}getPC(){return this.PC}getSP(){return this.SP}isStable(){return this.stable}saveState(){return{PC:this.PC,SP:this.SP,AF:this.A<<8|this.F,BC:this.B<<8|this.C,DE:this.D<<8|this.E,HL:this.H<<8|this.L,o:this.o,ime:this.ime?1:0,halted:this.halted,interrupt:this.interruptFlags}}loadState(t){this.PC=t.PC,this.SP=t.SP,this.A=t.AF>>8&255,this.F=t.AF&240,this.B=t.BC>>8&255,this.C=t.BC&255,this.D=t.DE>>8&255,this.E=t.DE&255,this.H=t.HL>>8&255,this.L=t.HL&255,this.o=t.o,this.ime=!!t.ime,this.halted=t.halted,this.interruptFlags=t.interrupt}getAF(){return this.A<<8|this.F&240}getBC(){return this.B<<8|this.C}getDE(){return this.D<<8|this.E}getHL(){return this.H<<8|this.L}setAF(t){this.A=t>>8&255,this.F=t&240}setBC(t){this.B=t>>8&255,this.C=t&255}setDE(t){this.D=t>>8&255,this.E=t&255}setHL(t){this.H=t>>8&255,this.L=t&255}read(t){return this.bus.read(t&65535)}write(t,e){this.bus.write(t&65535,e&255)}readWord(t){return this.read(t)|this.read(t+1)<<8}writeWord(t,e){this.write(t,e&255),this.write(t+1,e>>8&255)}fetchByte(){var t=this.read(this.PC);return this.PC=this.PC+1&65535,t}fetchWord(){var t=this.fetchByte(),e=this.fetchByte();return e<<8|t}fetchSignedByte(){var t=this.fetchByte();return t<128?t:t-256}pushWord(t){this.SP=this.SP-1&65535,this.write(this.SP,t>>8&255),this.SP=this.SP-1&65535,this.write(this.SP,t&255)}popWord(){var t=this.read(this.SP);this.SP=this.SP+1&65535;var e=this.read(this.SP);return this.SP=this.SP+1&65535,e<<8|t}getZ(){return!!(this.F&b.FLAG_Z)}getN(){return!!(this.F&b.FLAG_N)}getH(){return!!(this.F&b.FLAG_H)}getC(){return!!(this.F&b.FLAG_C)}setZ(t){t?this.F|=b.FLAG_Z:this.F&=~b.FLAG_Z}setN(t){t?this.F|=b.FLAG_N:this.F&=~b.FLAG_N}setH(t){t?this.F|=b.FLAG_H:this.F&=~b.FLAG_H}setC(t){t?this.F|=b.FLAG_C:this.F&=~b.FLAG_C}setFlags(t,e,s,i){this.F=(t?b.FLAG_Z:0)|(e?b.FLAG_N:0)|(s?b.FLAG_H:0)|(i?b.FLAG_C:0)}getReg(t){switch(t){case 0:return this.B;case 1:return this.C;case 2:return this.D;case 3:return this.E;case 4:return this.H;case 5:return this.L;case 6:return this.read(this.getHL());case 7:return this.A}return 0}setReg(t,e){switch(e&=255,t){case 0:this.B=e;break;case 1:this.C=e;break;case 2:this.D=e;break;case 3:this.E=e;break;case 4:this.H=e;break;case 5:this.L=e;break;case 6:this.write(this.getHL(),e);break;case 7:this.A=e;break}}getReg16(t){switch(t){case 0:return this.getBC();case 1:return this.getDE();case 2:return this.getHL();case 3:return this.SP}return 0}setReg16(t,e){switch(e&=65535,t){case 0:this.setBC(e);break;case 1:this.setDE(e);break;case 2:this.setHL(e);break;case 3:this.SP=e;break}}getReg16AF(t){switch(t){case 0:return this.getBC();case 1:return this.getDE();case 2:return this.getHL();case 3:return this.getAF()}return 0}setReg16AF(t,e){switch(e&=65535,t){case 0:this.setBC(e);break;case 1:this.setDE(e);break;case 2:this.setHL(e);break;case 3:this.setAF(e);break}}checkCondition(t){switch(t){case 0:return!this.getZ();case 1:return this.getZ();case 2:return!this.getC();case 3:return this.getC()}return!1}addA(t){var e=this.A+t;this.setFlags((e&255)===0,!1,(this.A&15)+(t&15)>15,e>255),this.A=e&255}adcA(t){var e=this.getC()?1:0,s=this.A+t+e;this.setFlags((s&255)===0,!1,(this.A&15)+(t&15)+e>15,s>255),this.A=s&255}subA(t){var e=this.A-t;this.setFlags((e&255)===0,!0,(this.A&15)<(t&15),e<0),this.A=e&255}sbcA(t){var e=this.getC()?1:0,s=this.A-t-e;this.setFlags((s&255)===0,!0,(this.A&15)<(t&15)+e,s<0),this.A=s&255}andA(t){this.A&=t,this.setFlags(this.A===0,!1,!0,!1)}xorA(t){this.A^=t,this.A&=255,this.setFlags(this.A===0,!1,!1,!1)}orA(t){this.A|=t,this.A&=255,this.setFlags(this.A===0,!1,!1,!1)}cpA(t){var e=this.A-t;this.setFlags((e&255)===0,!0,(this.A&15)<(t&15),e<0)}aluOp(t,e){switch(t){case 0:this.addA(e);break;case 1:this.adcA(e);break;case 2:this.subA(e);break;case 3:this.sbcA(e);break;case 4:this.andA(e);break;case 5:this.xorA(e);break;case 6:this.orA(e);break;case 7:this.cpA(e);break}}inc8(t){var e=t+1&255;return this.setZ(e===0),this.setN(!1),this.setH((t&15)===15),e}dec8(t){var e=t-1&255;return this.setZ(e===0),this.setN(!0),this.setH((t&15)===0),e}addHL(t){var e=this.getHL(),s=e+t;this.setN(!1),this.setH((e&4095)+(t&4095)>4095),this.setC(s>65535),this.setHL(s&65535)}daa(){var t=this.A;this.getN()?(this.getC()&&(t-=96),this.getH()&&(t-=6)):((this.getC()||t>153)&&(t+=96,this.setC(!0)),(this.getH(Line truncated
import{a as D}from"./chunk-A7SWO6EA.js";import{C as K,E as $,H as Y,I as J,r as Z,u as V}from"./chunk-4676AC7I.js";import{K as j,T as z,W as f,X as O,Z as N,aa as W,g as x}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var b=class b{constructor(){this.A=0;this.F=0;this.B=0;this.C=0;this.D=0;this.E=0;this.H=0;this.L=0;this.SP=65534;this.PC=256;this.ime=!1;this.imeDelay=!1;this.halted=!1;this.interruptFlags=0;this.cyclesPerInsn=0;this.o=0;this.stable=!0}connectMemoryBus(t){this.bus=t}reset(){this.A=1,this.F=176,this.B=0,this.C=19,this.D=0,this.E=216,this.H=1,this.L=77,this.SP=65534,this.PC=256,this.ime=!1,this.imeDelay=!1,this.halted=!1,this.interruptFlags=0}interrupt(t){this.interruptFlags|=t}getPC(){return this.PC}getSP(){return this.SP}isStable(){return this.stable}saveState(){return{PC:this.PC,SP:this.SP,AF:this.A<<8|this.F,BC:this.B<<8|this.C,DE:this.D<<8|this.E,HL:this.H<<8|this.L,o:this.o,ime:this.ime?1:0,halted:this.halted,interrupt:this.interruptFlags}}loadState(t){this.PC=t.PC,this.SP=t.SP,this.A=t.AF>>8&255,this.F=t.AF&240,this.B=t.BC>>8&255,this.C=t.BC&255,this.D=t.DE>>8&255,this.E=t.DE&255,this.H=t.HL>>8&255,this.L=t.HL&255,this.o=t.o,this.ime=!!t.ime,this.halted=t.halted,this.interruptFlags=t.interrupt}getAF(){return this.A<<8|this.F&240}getBC(){return this.B<<8|this.C}getDE(){return this.D<<8|this.E}getHL(){return this.H<<8|this.L}setAF(t){this.A=t>>8&255,this.F=t&240}setBC(t){this.B=t>>8&255,this.C=t&255}setDE(t){this.D=t>>8&255,this.E=t&255}setHL(t){this.H=t>>8&255,this.L=t&255}read(t){return this.bus.read(t&65535)}write(t,e){this.bus.write(t&65535,e&255)}readWord(t){return this.read(t)|this.read(t+1)<<8}writeWord(t,e){this.write(t,e&255),this.write(t+1,e>>8&255)}fetchByte(){var t=this.read(this.PC);return this.PC=this.PC+1&65535,t}fetchWord(){var t=this.fetchByte(),e=this.fetchByte();return e<<8|t}fetchSignedByte(){var t=this.fetchByte();return t<128?t:t-256}pushWord(t){this.SP=this.SP-1&65535,this.write(this.SP,t>>8&255),this.SP=this.SP-1&65535,this.write(this.SP,t&255)}popWord(){var t=this.read(this.SP);this.SP=this.SP+1&65535;var e=this.read(this.SP);return this.SP=this.SP+1&65535,e<<8|t}getZ(){return!!(this.F&b.FLAG_Z)}getN(){return!!(this.F&b.FLAG_N)}getH(){return!!(this.F&b.FLAG_H)}getC(){return!!(this.F&b.FLAG_C)}setZ(t){t?this.F|=b.FLAG_Z:this.F&=~b.FLAG_Z}setN(t){t?this.F|=b.FLAG_N:this.F&=~b.FLAG_N}setH(t){t?this.F|=b.FLAG_H:this.F&=~b.FLAG_H}setC(t){t?this.F|=b.FLAG_C:this.F&=~b.FLAG_C}setFlags(t,e,s,i){this.F=(t?b.FLAG_Z:0)|(e?b.FLAG_N:0)|(s?b.FLAG_H:0)|(i?b.FLAG_C:0)}getReg(t){switch(t){case 0:return this.B;case 1:return this.C;case 2:return this.D;case 3:return this.E;case 4:return this.H;case 5:return this.L;case 6:return this.read(this.getHL());case 7:return this.A}return 0}setReg(t,e){switch(e&=255,t){case 0:this.B=e;break;case 1:this.C=e;break;case 2:this.D=e;break;case 3:this.E=e;break;case 4:this.H=e;break;case 5:this.L=e;break;case 6:this.write(this.getHL(),e);break;case 7:this.A=e;break}}getReg16(t){switch(t){case 0:return this.getBC();case 1:return this.getDE();case 2:return this.getHL();case 3:return this.SP}return 0}setReg16(t,e){switch(e&=65535,t){case 0:this.setBC(e);break;case 1:this.setDE(e);break;case 2:this.setHL(e);break;case 3:this.SP=e;break}}getReg16AF(t){switch(t){case 0:return this.getBC();case 1:return this.getDE();case 2:return this.getHL();case 3:return this.getAF()}return 0}setReg16AF(t,e){switch(e&=65535,t){case 0:this.setBC(e);break;case 1:this.setDE(e);break;case 2:this.setHL(e);break;case 3:this.setAF(e);break}}checkCondition(t){switch(t){case 0:return!this.getZ();case 1:return this.getZ();case 2:return!this.getC();case 3:return this.getC()}return!1}addA(t){var e=this.A+t;this.setFlags((e&255)===0,!1,(this.A&15)+(t&15)>15,e>255),this.A=e&255}adcA(t){var e=this.getC()?1:0,s=this.A+t+e;this.setFlags((s&255)===0,!1,(this.A&15)+(t&15)+e>15,s>255),this.A=s&255}subA(t){var e=this.A-t;this.setFlags((e&255)===0,!0,(this.A&15)<(t&15),e<0),this.A=e&255}sbcA(t){var e=this.getC()?1:0,s=this.A-t-e;this.setFlags((s&255)===0,!0,(this.A&15)<(t&15)+e,s<0),this.A=s&255}andA(t){this.A&=t,this.setFlags(this.A===0,!1,!0,!1)}xorA(t){this.A^=t,this.A&=255,this.setFlags(this.A===0,!1,!1,!1)}orA(t){this.A|=t,this.A&=255,this.setFlags(this.A===0,!1,!1,!1)}cpA(t){var e=this.A-t;this.setFlags((e&255)===0,!0,(this.A&15)<(t&15),e<0)}aluOp(t,e){switch(t){case 0:this.addA(e);break;case 1:this.adcA(e);break;case 2:this.subA(e);break;case 3:this.sbcA(e);break;case 4:this.andA(e);break;case 5:this.xorA(e);break;case 6:this.orA(e);break;case 7:this.cpA(e);break}}inc8(t){var e=t+1&255;return this.setZ(e===0),this.setN(!1),this.setH((t&15)===15),e}dec8(t){var e=t-1&255;return this.setZ(e===0),this.setN(!0),this.setH((t&15)===0),e}addHL(t){var e=this.getHL(),s=e+t;this.setN(!1),this.setH((e&4095)+(t&4095)>4095),this.setC(s>65535),this.setHL(s&65535)}daa(){var t=this.A;this.getN()?(this.getC()&&(t-=96),this.getH()&&(t-=6)):((this.getC()||t>153)&&(t+=96,this.setC(!0)),(this.getH(Line truncated
LY `+x(this.ly,2)+" LYC "+x(this.lyc,2)+`
SCX `+x(this.scx,2)+" SCY "+x(this.scy,2)+`
WX `+x(this.wx,2)+" WY "+x(this.wy,2)+`
@@ -12,4 +12,4 @@ Bank `+this.romBank+`
VBK `+this.vramBankSelect+" SVBK "+this.wramBankSelect+`
SPD `+(this.doubleSpeed?"2x":"1x")+`
`),i}}};var he=["nop","ld bc,xx","ld (bc),a","inc bc","inc b","dec b","ld b,x","rlca","ld (xx),sp","add hl,bc","ld a,(bc)","dec bc","inc c","dec c","ld c,x","rrca","stop x","ld de,xx","ld (de),a","inc de","inc d","dec d","ld d,x","rla","jr x","add hl,de","ld a,(de)","dec de","inc e","dec e","ld e,x","rra","jr nz,x","ld hl,xx","ld (hl+),a","inc hl","inc h","dec h","ld h,x","daa","jr z,x","add hl,hl","ld a,(hl+)","dec hl","inc l","dec l","ld l,x","cpl","jr nc,x","ld sp,xx","ld (hl-),a","inc sp","inc (hl)","dec (hl)","ld (hl),x","scf","jr c,x","add hl,sp","ld a,(hl-)","dec sp","inc a","dec a","ld a,x","ccf","ld b,b","ld b,c","ld b,d","ld b,e","ld b,h","ld b,l","ld b,(hl)","ld b,a","ld c,b","ld c,c","ld c,d","ld c,e","ld c,h","ld c,l","ld c,(hl)","ld c,a","ld d,b","ld d,c","ld d,d","ld d,e","ld d,h","ld d,l","ld d,(hl)","ld d,a","ld e,b","ld e,c","ld e,d","ld e,e","ld e,h","ld e,l","ld e,(hl)","ld e,a","ld h,b","ld h,c","ld h,d","ld h,e","ld h,h","ld h,l","ld h,(hl)","ld h,a","ld l,b","ld l,c","ld l,d","ld l,e","ld l,h","ld l,l","ld l,(hl)","ld l,a","ld (hl),b","ld (hl),c","ld (hl),d","ld (hl),e","ld (hl),h","ld (hl),l","halt","ld (hl),a","ld a,b","ld a,c","ld a,d","ld a,e","ld a,h","ld a,l","ld a,(hl)","ld a,a","add a,b","add a,c","add a,d","add a,e","add a,h","add a,l","add a,(hl)","add a,a","adc a,b","adc a,c","adc a,d","adc a,e","adc a,h","adc a,l","adc a,(hl)","adc a,a","sub b","sub c","sub d","sub e","sub h","sub l","sub (hl)","sub a","sbc a,b","sbc a,c","sbc a,d","sbc a,e","sbc a,h","sbc a,l","sbc a,(hl)","sbc a,a","and b","and c","and d","and e","and h","and l","and (hl)","and a","xor b","xor c","xor d","xor e","xor h","xor l","xor (hl)","xor a","or b","or c","or d","or e","or h","or l","or (hl)","or a","cp b","cp c","cp d","cp e","cp h","cp l","cp (hl)","cp a","ret nz","pop bc","jp nz,xx","jp xx","call nz,xx","push bc","add a,x","rst 00h","ret z","ret","jp z,xx","xxCBxx","call z,xx","call xx","adc a,x","rst 08h","ret nc","pop de","jp nc,xx","??","call nc,xx","push de","sub x","rst 10h","ret c","reti","jp c,xx","??","call c,xx","??","sbc a,x","rst 18h","ldh (x),a","pop hl","ld (c),a","??","??","push hl","and x","rst 20h","add sp,x","jp (hl)","ld (xx),a","??","??","??","xor x","rst 28h","ldh a,(x)","pop af","ld a,(c)","di","??","push af","or x","rst 30h","ld hl,sp+x","ld sp,hl","ld a,(xx)","ei","??","??","cp x","rst 38h"],re=["rlc b","rlc c","rlc d","rlc e","rlc h","rlc l","rlc (hl)","rlc a","rrc b","rrc c","rrc d","rrc e","rrc h","rrc l","rrc (hl)","rrc a","rl b","rl c","rl d","rl e","rl h","rl l","rl (hl)","rl a","rr b","rr c","rr d","rr e","rr h","rr l","rr (hl)","rr a","sla b","sla c","sla d","sla e","sla h","sla l","sla (hl)","sla a","sra b","sra c","sra d","sra e","sra h","sra l","sra (hl)","sra a","swap b","swap c","swap d","swap e","swap h","swap l","swap (hl)","swap a","srl b","srl c","srl d","srl e","srl h","srl l","srl (hl)","srl a","bit 0,b","bit 0,c","bit 0,d","bit 0,e","bit 0,h","bit 0,l","bit 0,(hl)","bit 0,a","bit 1,b","bit 1,c","bit 1,d","bit 1,e","bit 1,h","bit 1,l","bit 1,(hl)","bit 1,a","bit 2,b","bit 2,c","bit 2,d","bit 2,e","bit 2,h","bit 2,l","bit 2,(hl)","bit 2,a","bit 3,b","bit 3,c","bit 3,d","bit 3,e","bit 3,h","bit 3,l","bit 3,(hl)","bit 3,a","bit 4,b","bit 4,c","bit 4,d","bit 4,e","bit 4,h","bit 4,l","bit 4,(hl)","bit 4,a","bit 5,b","bit 5,c","bit 5,d","bit 5,e","bit 5,h","bit 5,l","bit 5,(hl)","bit 5,a","bit 6,b","bit 6,c","bit 6,d","bit 6,e","bit 6,h","bit 6,l","bit 6,(hl)","bit 6,a","bit 7,b","bit 7,c","bit 7,d","bit 7,e","bit 7,h","bit 7,l","bit 7,(hl)","bit 7,a","res 0,b","res 0,c","res 0,d","res 0,e","res 0,h","res 0,l","res 0,(hl)","res 0,a","res 1,b","res 1,c","res 1,d","res 1,e","res 1,h","res 1,l","res 1,(hl)","res 1,a","res 2,b","res 2,c","res 2,d","res 2,e","res 2,h","res 2,l","res 2,(hl)","res 2,a","res 3,b","res 3,c","res 3,d","res 3,e","res 3,h","res 3,l","res 3,(hl)","res 3,a","res 4,b","res 4,c","res 4,d","res 4,e","res 4,h","res 4,l","res 4,(hl)","res 4,a","res 5,b","res 5,c","res 5,d","res 5,e","res 5,h","res 5,l","res 5,(hl)","res 5,a","res 6,b","res 6,c","res 6,d","res 6,e","res 6,h","res 6,l","res 6,(hl)","res 6,a","res 7,b","res 7,c","res 7,d","res 7,e","res 7,h","res 7,l","res 7,(hl)","res 7,a","set 0,b","set 0,c","set 0,d","set 0,e","set 0,h","set 0,l","set 0,(hl)","set 0,a","set 1,b","set 1,c","set 1,d","set 1,e","set 1,h","set 1,l","set 1,(hl)","set 1,a","set 2,b","set 2,c","set 2,d","set 2,e","set 2,h","set 2,l","set 2,(hl)","set 2,a","set 3,b","set 3,c","set 3,d","set 3,e","set 3,h","set 3,l","set 3,(hl)","set 3,a","set 4,b","set 4,c","set 4,d","set 4,e","set 4,h","set 4,l","set 4,(hl)","set 4,a","set 5,b","set 5,c","set 5,d","set 5,e","set 5,h","set 5,l","set 5,(hl)","set 5,a","set 6,b","set 6,c","set 6,d","set 6,e","set 6,h","set 6,l","set 6,(hl)","set 6,a","set 7,b","set 7,c","set 7,d","set 7,e","set 7,h","set 7,l","set 7,(hl)","set 7,a"];function X(A,t,e,s){var i,h=1,r=!1;if(t===203?(i=re[e],h=2):i=he[t],(!i||!i.length||i==="??")&&(i="??"),/\bLine truncated
//# sourceMappingURL=gb-FZOTVY7M.js.map
//# sourceMappingURL=gb-PVXAFHI2.js.map
File renamed without changes.
+317
View File
@@ -0,0 +1,317 @@
"use strict";
// Breakpoint condition expressions: a small, safe expression language
// evaluated against the CPU state while the emulator is running.
// (No eval() -- a tiny recursive-descent parser compiles the expression
// to a closure, so bad input can only fail at compile time.)
//
// Values:
// numbers 123, $1a2f, 0x1a2f
// registers PC, A, X, Y, SP ... (numeric fields of the CPU state)
// symbols resolved from the debug symbol map (baked in at compile time)
// memory [expr] reads a byte at expr
// Operators (C-like precedence): ! ~ - + (unary), * / %, + -, << >>,
// < <= > >=, == !=, &, ^, |, &&, ||, and parentheses.
// The whole expression is true when it evaluates to non-zero.
Object.defineProperty(exports, "__esModule", { value: true });
exports.compileCondition = compileCondition;
exports.parseTarget = parseTarget;
const OPERATORS2 = ['<<', '>>', '<=', '>=', '==', '!=', '&&', '||'];
const OPERATORS1 = '+-*/%<>!~&|^()[]';
function tokenize(src) {
let toks = [];
let i = 0;
while (i < src.length) {
let ch = src[i];
if (/\s/.test(ch)) {
i++;
continue;
}
if (ch == '$' && /[0-9a-fA-F]/.test(src[i + 1] || '')) {
let j = i + 1;
while (j < src.length && /[0-9a-fA-F]/.test(src[j]))
j++;
toks.push({ t: 'num', v: src.substring(i, j), num: parseInt(src.substring(i + 1, j), 16) });
i = j;
continue;
}
if (/[0-9]/.test(ch)) {
if (ch == '0' && (src[i + 1] == 'x' || src[i + 1] == 'X')) {
let j = i + 2;
while (j < src.length && /[0-9a-fA-F]/.test(src[j]))
j++;
if (j == i + 2)
throw new Error("bad hex number");
toks.push({ t: 'num', v: src.substring(i, j), num: parseInt(src.substring(i + 2, j), 16) });
i = j;
}
else {
let j = i;
while (j < src.length && /[0-9]/.test(src[j]))
j++;
toks.push({ t: 'num', v: src.substring(i, j), num: parseInt(src.substring(i, j), 10) });
i = j;
}
continue;
}
if (/[A-Za-z_.]/.test(ch)) {
let j = i;
while (j < src.length && /[A-Za-z0-9_.$]/.test(src[j]))
j++;
toks.push({ t: 'id', v: src.substring(i, j) });
i = j;
continue;
}
let two = src.substring(i, i + 2);
if (OPERATORS2.includes(two)) {
toks.push({ t: 'op', v: two });
i += 2;
continue;
}
if (OPERATORS1.includes(ch)) {
toks.push({ t: 'op', v: ch });
i++;
continue;
}
throw new Error("unexpected character '" + ch + "'");
}
return toks;
}
class Parser {
constructor(toks) {
this.pos = 0;
this.toks = toks;
}
peek() { return this.toks[this.pos]; }
next() { return this.toks[this.pos++]; }
atOp(...ops) {
let t = this.peek();
return (t && t.t == 'op' && ops.includes(t.v)) ? t.v : null;
}
expect(v) {
let t = this.next();
if (!t || t.t != 'op' || t.v != v)
throw new Error("expected '" + v + "'");
}
parse() {
let n = this.parseOr();
if (this.pos != this.toks.length)
throw new Error("unexpected '" + this.peek().v + "'");
return n;
}
parseOr() {
let a = this.parseAnd();
while (this.atOp('||')) {
this.next();
a = { t: 'bin', op: '||', a: a, b: this.parseAnd() };
}
return a;
}
parseAnd() {
let a = this.parseBitOr();
while (this.atOp('&&')) {
this.next();
a = { t: 'bin', op: '&&', a: a, b: this.parseBitOr() };
}
return a;
}
parseBitOr() {
let a = this.parseBitXor();
while (this.atOp('|')) {
this.next();
a = { t: 'bin', op: '|', a: a, b: this.parseBitXor() };
}
return a;
}
parseBitXor() {
let a = this.parseBitAnd();
while (this.atOp('^')) {
this.next();
a = { t: 'bin', op: '^', a: a, b: this.parseBitAnd() };
}
return a;
}
parseBitAnd() {
let a = this.parseEquality();
while (this.atOp('&')) {
this.next();
a = { t: 'bin', op: '&', a: a, b: this.parseEquality() };
}
return a;
}
parseEquality() {
let a = this.parseRelational();
let op;
while (op = this.atOp('==', '!=')) {
this.next();
a = { t: 'bin', op: op, a: a, b: this.parseRelational() };
}
return a;
}
parseRelational() {
let a = this.parseShift();
let op;
while (op = this.atOp('<', '<=', '>', '>=')) {
this.next();
a = { t: 'bin', op: op, a: a, b: this.parseShift() };
}
return a;
}
parseShift() {
let a = this.parseAdditive();
let op;
while (op = this.atOp('<<', '>>')) {
this.next();
a = { t: 'bin', op: op, a: a, b: this.parseAdditive() };
}
return a;
}
parseAdditive() {
let a = this.parseMultiplicative();
let op;
while (op = this.atOp('+', '-')) {
this.next();
a = { t: 'bin', op: op, a: a, b: this.parseMultiplicative() };
}
return a;
}
parseMultiplicative() {
let a = this.parseUnary();
let op;
while (op = this.atOp('*', '/', '%')) {
this.next();
a = { t: 'bin', op: op, a: a, b: this.parseUnary() };
}
return a;
}
parseUnary() {
let op = this.atOp('-', '!', '~', '+');
if (op) {
this.next();
return { t: 'un', op: op, a: this.parseUnary() };
}
return this.parsePrimary();
}
parsePrimary() {
let t = this.next();
if (!t)
throw new Error("unexpected end of expression");
if (t.t == 'num')
return { t: 'num', v: t.num };
if (t.t == 'id')
return { t: 'id', name: t.v };
if (t.t == 'op' && t.v == '(') {
let n = this.parseOr();
this.expect(')');
return n;
}
if (t.t == 'op' && t.v == '[') {
let n = this.parseOr();
this.expect(']');
return { t: 'mem', a: n };
}
throw new Error("unexpected '" + t.v + "'");
}
}
function compileNode(n, ctx) {
switch (n.t) {
case 'num': {
const v = n.v;
return () => v;
}
case 'id': {
const name = n.name;
if (ctx.cpuFields.has(name)) {
return (c) => {
const v = c[name];
return typeof v === 'number' ? v : 0;
};
}
let v = ctx.symbol(name);
if (typeof v === 'number') {
const val = v;
return () => val;
}
throw new Error("unknown identifier '" + name + "'");
}
case 'mem': {
const a = compileNode(n.a, ctx);
return (c) => {
if (!ctx.readMem)
throw new Error("memory reads not supported");
const v = ctx.readMem(a(c) & 0xffff);
if (typeof v !== 'number')
throw new Error("cannot read memory");
return v;
};
}
case 'un': {
const a = compileNode(n.a, ctx);
switch (n.op) {
case '-': return (c) => -a(c);
case '~': return (c) => ~a(c);
case '!': return (c) => a(c) ? 0 : 1;
case '+': return a;
}
break;
}
case 'bin': {
const a = compileNode(n.a, ctx);
const b = compileNode(n.b, ctx);
switch (n.op) {
case '||': return (c) => (a(c) || b(c)) ? 1 : 0;
case '&&': return (c) => (a(c) && b(c)) ? 1 : 0;
case '|': return (c) => a(c) | b(c);
case '^': return (c) => a(c) ^ b(c);
case '&': return (c) => a(c) & b(c);
case '==': return (c) => a(c) == b(c) ? 1 : 0;
case '!=': return (c) => a(c) != b(c) ? 1 : 0;
case '<': return (c) => a(c) < b(c) ? 1 : 0;
case '<=': return (c) => a(c) <= b(c) ? 1 : 0;
case '>': return (c) => a(c) > b(c) ? 1 : 0;
case '>=': return (c) => a(c) >= b(c) ? 1 : 0;
case '<<': return (c) => a(c) << b(c);
case '>>': return (c) => a(c) >> b(c);
case '+': return (c) => a(c) + b(c);
case '-': return (c) => a(c) - b(c);
case '*': return (c) => a(c) * b(c);
case '/': return (c) => { const d = b(c); return d === 0 ? 0 : (a(c) / d) | 0; };
case '%': return (c) => { const d = b(c); return d === 0 ? 0 : a(c) % d; };
}
break;
}
}
throw new Error("bad expression node");
}
// Compile a condition expression; throws on syntax errors or unknown identifiers.
// The returned function never throws: if evaluation fails (e.g. unreadable
// memory) it returns false so the emulator loop is never interrupted.
function compileCondition(src, ctx) {
let ast = new Parser(tokenize(src)).parse();
let fn = compileNode(ast, ctx);
return (c) => {
try {
return fn(c) != 0;
}
catch (e) {
return false;
}
};
}
// Parse a breakpoint target: '$hex', '0xhex', decimal, or a symbol name.
function parseTarget(target, symbol) {
let s = (target || '').trim();
if (!s)
return { error: "empty address" };
let m;
if ((m = s.match(/^\$([0-9a-fA-F]+)$/)) || (m = s.match(/^0[xX]([0-9a-fA-F]+)$/))) {
return { pc: parseInt(m[1], 16) };
}
if (/^\d+$/.test(s)) {
return { pc: parseInt(s, 10) };
}
let v = symbol(s);
if (typeof v === 'number')
return { pc: v };
return { error: "unknown symbol '" + s + "'" };
}
//# sourceMappingURL=breakcond.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"breakcond.js","sourceRoot":"","sources":["../../src/ide/breakcond.ts"],"names":[],"mappings":"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 truncated
+181
View File
@@ -0,0 +1,181 @@
"use strict";
// Unified breakpoint store, shared by the editor gutter markers and the
// Breakpoints window. Two kinds of breakpoints:
// - 'source' -- file + line, resolved to a PC via the build listing
// (these render as gutter markers in the editor)
// - 'address' -- a target that's a symbol, $hex or decimal address
// Both support an optional condition expression (see breakcond.ts).
// The store persists to localStorage, scoped by platform + main file.
Object.defineProperty(exports, "__esModule", { value: true });
exports.bpStore = void 0;
exports.resolveBreakpoint = resolveBreakpoint;
exports.resolveBreakpoints = resolveBreakpoints;
const ui_1 = require("./ui");
const breakcond_1 = require("./breakcond");
const STORAGE_KEY = '8bitworkshop.breakpoints.v1';
class BreakpointStore {
constructor() {
this.breakpoints = [];
this.nextId = 1;
this.listeners = [];
this.contextFn = () => '';
}
setContextFn(fn) {
this.contextFn = fn;
}
subscribe(fn) {
this.listeners.push(fn);
}
notify() {
for (let fn of this.listeners.slice())
fn();
}
changed() {
this.save();
this.notify();
}
getAll() {
return this.breakpoints;
}
getEnabled() {
return this.breakpoints.filter(bp => bp.enabled);
}
getSourceBreakpointsForFile(path) {
return this.breakpoints.filter(bp => bp.type == 'source' && bp.file == path);
}
addSourceBreakpoint(file, line) {
let bp = { id: this.nextId++, type: 'source', file, line, enabled: true };
this.breakpoints.push(bp);
this.changed();
return bp;
}
// add an address breakpoint; if one already targets the same address,
// enable it and update its condition instead
addAddressBreakpoint(target, condition) {
let norm = (target || '').trim().toLowerCase();
let existing = this.breakpoints.find(bp => bp.type == 'address' && (bp.target || '').trim().toLowerCase() == norm);
if (existing) {
this.update(existing.id, { enabled: true, condition: condition });
return existing;
}
let bp = { id: this.nextId++, type: 'address', target: target.trim(), enabled: true, condition: condition };
this.breakpoints.push(bp);
this.changed();
return bp;
}
remove(id) {
this.breakpoints = this.breakpoints.filter(bp => bp.id != id);
this.changed();
}
setEnabled(id, enabled) {
let bp = this.breakpoints.find(bp => bp.id == id);
if (bp && bp.enabled != enabled) {
bp.enabled = enabled;
this.changed();
}
}
update(id, patch) {
let bp = this.breakpoints.find(bp => bp.id == id);
if (bp) {
Object.assign(bp, patch);
this.changed();
}
}
// toggle a gutter breakpoint; used by clicking the editor status gutter
toggleSourceLine(file, line) {
let existing = this.breakpoints.find(bp => bp.type == 'source' && bp.file == file && bp.line == line);
if (existing) {
this.remove(existing.id);
}
else {
this.addSourceBreakpoint(file, line);
}
}
load() {
if (typeof localStorage === 'undefined')
return;
try {
let blob = JSON.parse(localStorage.getItem(STORAGE_KEY) || '{}');
let bps = blob[this.contextFn()];
this.breakpoints = Array.isArray(bps) ? bps : [];
this.nextId = 1;
for (let bp of this.breakpoints)
this.nextId = Math.max(this.nextId, bp.id + 1);
}
catch (e) {
this.breakpoints = [];
}
}
save() {
if (typeof localStorage === 'undefined')
return;
try {
let blob = {};
let old = localStorage.getItem(STORAGE_KEY);
if (old)
blob = JSON.parse(old);
blob[this.contextFn()] = this.breakpoints;
localStorage.setItem(STORAGE_KEY, JSON.stringify(blob));
}
catch (e) {
console.log("breakpoints: save failed", e);
}
}
}
exports.bpStore = new BreakpointStore();
function makeSymbolLookup() {
return (name) => {
let sm = ui_1.platform && ui_1.platform.debugSymbols && ui_1.platform.debugSymbols.symbolmap;
if (!sm)
return undefined;
// C symbols often get a leading underscore from the compiler
return (name in sm) ? sm[name] : sm['_' + name];
};
}
function makeCondContext() {
let cpuFields = new Set();
try {
let c = ui_1.platform && ui_1.platform.getCPUState && ui_1.platform.getCPUState();
if (c)
cpuFields = new Set(Object.keys(c));
}
catch (e) {
}
return {
cpuFields,
symbol: makeSymbolLookup(),
readMem: ui_1.platform && ui_1.platform.readAddress ? (a) => ui_1.platform.readAddress(a) : undefined,
};
}
function resolveBreakpoint(bp) {
try {
let pc;
if (bp.type == 'source') {
let lst = ui_1.current_project.getListingForFile(bp.file);
let sf = lst && (lst.sourcefile || lst.assemblyfile);
if (!sf)
return { bp, error: "no debug info (build first?)" };
pc = sf.line2offset[bp.line];
if (!(pc >= 0))
return { bp, error: "line has no code" };
}
else {
let r = (0, breakcond_1.parseTarget)(bp.target, makeSymbolLookup());
if (r.error)
return { bp, error: r.error };
pc = r.pc;
}
let condFn = undefined;
if (bp.condition && bp.condition.trim()) {
condFn = (0, breakcond_1.compileCondition)(bp.condition, makeCondContext());
}
return { bp, pc, condFn };
}
catch (e) {
return { bp, error: String(e.message || e) };
}
}
function resolveBreakpoints() {
return exports.bpStore.getAll().map(bp => resolveBreakpoint(bp));
}
//# sourceMappingURL=breakpoints.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"breakpoints.js","sourceRoot":"","sources":["../../src/ide/breakpoints.ts"],"names":[],"mappings":"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 truncated
+48
View File
@@ -0,0 +1,48 @@
"use strict";
/**
* findListingLocation - given a PC value, finds the best known source (or
* assembly-listing) window and line to show it at. Used both to follow the
* live PC while debugging and to jump to a specific address on demand (e.g.
* clicking a symbol/address breakpoint).
*
* Kept free of DOM / ui.ts dependencies so it can be unit tested.
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.findListingLocation = findListingLocation;
/** Find the best known listing window + source line for a PC value.
* `lookahead` should match the caller's PC_LINE_LOOKAHEAD constant. */
function findListingLocation(pc, ctx, lookahead) {
let bestid = null;
let bestscore = 256;
let bestline = 0;
const listings = ctx.listings;
if (listings) {
for (let lstfn in listings) {
let lst = listings[lstfn];
let file = lst.assemblyfile || lst.sourcefile;
// pick either listing or source file
let wndid = ctx.filename2path[lstfn] || lstfn;
if (file == lst.sourcefile)
wndid = ctx.findWindowWithFilePrefix(lstfn);
// does this window exist?
if (wndid && ctx.isWindow(wndid)) {
// find the source line at the PC or closely before it
let srcline1 = file && file.findLineForOffset(pc, lookahead);
if (srcline1) {
// try to find the next line and bound the PC
let srcline2 = file.lines[srcline1.line + 1];
if (!srcline2 || pc < srcline2.offset) {
let score = pc - srcline1.offset;
if (score < bestscore) {
bestid = wndid;
bestscore = score;
bestline = srcline1.line;
}
}
}
}
}
}
return bestid ? { wndid: bestid, line: bestline } : null;
}
//# sourceMappingURL=listinglocation.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"listinglocation.js","sourceRoot":"","sources":["../../../src/ide/search/listinglocation.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAmBH,kDAgCC;AAlCD;uEACuE;AACvE,SAAgB,mBAAmB,CAAC,EAAU,EAAE,GAA2B,EAAE,SAAiB;IAC5F,IAAI,MAAM,GAAW,IAAI,CAAC;IAC1B,IAAI,SAAS,GAAG,GAAG,CAAC;IACpB,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;IAC9B,IAAI,QAAQ,EAAE,CAAC;QACb,KAAK,IAAI,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,IAAI,GAAG,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,UAAU,CAAC;YAC9C,qCAAqC;YACrC,IAAI,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;YAC9C,IAAI,IAAI,IAAI,GAAG,CAAC,UAAU;gBAAE,KAAK,GAAG,GAAG,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;YACxE,0BAA0B;YAC1B,IAAI,KAAK,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjC,sDAAsD;gBACtD,IAAI,QAAQ,GAAG,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;gBAC7D,IAAI,QAAQ,EAAE,CAAC;oBACb,6CAA6C;oBAC7C,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;oBAC7C,IAAI,CAAC,QAAQ,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;wBACtC,IAAI,KAAK,GAAG,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC;wBACjC,IAAI,KAAK,GAAG,SAAS,EAAE,CAAC;4BACtB,MAAM,GAAG,KAAK,CAAC;4BACf,SAAS,GAAG,KAAK,CAAC;4BAClB,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC;wBAC3B,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3D,CAAC"}
+129 -53
View File
@@ -43,7 +43,9 @@ exports.openHeaderFile = openHeaderFile;
exports.getCurrentMainFilename = getCurrentMainFilename;
exports.getCurrentEditorFilename = getCurrentEditorFilename;
exports.parseGoToTarget = parseGoToTarget;
exports.openLocationForPC = openLocationForPC;
exports.setupBreakpoint = setupBreakpoint;
exports.armBreakpoints = armBreakpoints;
exports.runToPC = runToPC;
exports.clearBreakpoint = clearBreakpoint;
exports.setFrameRateUI = setFrameRateUI;
@@ -83,6 +85,8 @@ const debugviews_1 = require("./views/debugviews");
const editors_1 = require("./views/editors");
const treeviews_1 = require("./views/treeviews");
const windows_1 = require("./windows");
const breakpoints_1 = require("./breakpoints");
const listinglocation_1 = require("./search/listinglocation");
const Split = require("split.js");
const DOMPurify = require("dompurify");
/// EXPORTED GLOBALS (TODO: remove)
@@ -432,6 +436,11 @@ function refreshWindowList() {
return new treeviews_1.DebugBrowserView();
});
}
if (exports.platform.runEval || exports.platform.runToPC) {
addWindowItem("#breakpoints", "Breakpoints", () => {
return new debugviews_1.BreakpointsView();
});
}
addWindowItem('#asseteditor', 'Asset Editor', () => {
return new asseteditor_1.AssetEditorView();
});
@@ -464,6 +473,9 @@ async function loadProject(preset_id) {
// set current file ID
// TODO: this is done twice (mainPath and mainpath!)
exports.current_project.mainPath = preset_id;
// load persisted breakpoints for this platform/project
breakpoints_1.bpStore.setContextFn(() => exports.platform_id + '/' + exports.current_project.mainPath);
breakpoints_1.bpStore.load();
userPrefs.setLastPreset(preset_id);
// load files from storage or web URLs
var result = await exports.current_project.loadFiles([preset_id]);
@@ -1132,7 +1144,7 @@ function getGlobalShortcuts() {
}
// debug shortcuts appear only once a debug session has started
if (exports.platform.setupDebug && exports.platform.runEval) // TODO??
shortcuts.push({ key: 'mod+shift+d', label: 'Reset & Debug', fn: resetAndDebug });
shortcuts.push({ key: 'mod+shift+d', label: 'Reset & Break', fn: resetAndDebug });
if (!debugSessionActive) {
shortcuts.push({ key: 'mod+shift+r', label: 'Reset & Run', fn: resetAndRun });
shortcuts.push({ key: 'mod+shift+f', label: 'Search', fn: searchview_1.openSearchDialog });
@@ -1179,6 +1191,18 @@ function checkRunReady() {
else
return true;
}
// find the best known listing window + source line for a PC value, among
// listings with a window we can show (see ProjectWindows.isWindow -- this
// just means "known window id", not "currently open"). Pure logic lives in
// listinglocation.ts (unit tested); this just wires up the live IDE state.
function findListingLocation(pc) {
return (0, listinglocation_1.findListingLocation)(pc, {
listings: exports.current_project.getListings(),
filename2path: exports.current_project.filename2path,
isWindow: (id) => exports.projectWindows.isWindow(id),
findWindowWithFilePrefix: (fn) => exports.projectWindows.findWindowWithFilePrefix(fn),
}, editors_1.PC_LINE_LOOKAHEAD);
}
function openRelevantListing(state) {
// if we clicked on a specific tool, don't switch windows
if (lastViewClicked && lastViewClicked.startsWith('#'))
@@ -1189,40 +1213,25 @@ function openRelevantListing(state) {
// has to support disassembly, at least
if (!exports.platform.disassemble)
return;
// search through listings
let listings = exports.current_project.getListings();
let bestid = "#disasm";
let bestscore = 256;
if (listings) {
let pc = state.c ? (state.c.EPC || state.c.PC) : 0;
for (let lstfn in listings) {
let lst = listings[lstfn];
let file = lst.assemblyfile || lst.sourcefile;
// pick either listing or source file
let wndid = exports.current_project.filename2path[lstfn] || lstfn;
if (file == lst.sourcefile)
wndid = exports.projectWindows.findWindowWithFilePrefix(lstfn);
// does this window exist?
if (exports.projectWindows.isWindow(wndid)) {
// find the source line at the PC or closely before it
let srcline1 = file && file.findLineForOffset(pc, editors_1.PC_LINE_LOOKAHEAD);
if (srcline1) {
// try to find the next line and bound the PC
let srcline2 = file.lines[srcline1.line + 1];
if (!srcline2 || pc < srcline2.offset) {
let score = pc - srcline1.offset;
if (score < bestscore) {
bestid = wndid;
bestscore = score;
}
}
//console.log(hex(pc,4), srcline1, srcline2, wndid, lstfn, bestid, bestscore);
}
}
}
}
let pc = state.c ? (state.c.EPC || state.c.PC) : 0;
let best = findListingLocation(pc);
// if no appropriate listing found, use disassembly view
exports.projectWindows.createOrShow(bestid, true);
exports.projectWindows.createOrShow(best ? best.wndid : "#disasm", true);
}
// jump to (and highlight) the best known source line for an address --
// e.g. for a symbol/address breakpoint, which has no stored file/line of
// its own. Falls back to the disassembly view if no source line resolves.
function openLocationForPC(pc) {
if (!exports.platform.disassemble)
return;
let best = findListingLocation(pc);
let wnd = exports.projectWindows.createOrShow(best ? best.wndid : "#disasm", true);
if (best && wnd instanceof editors_1.SourceEditor) {
wnd.highlightLines(best.line - 1, best.line - 1);
}
else if (wnd instanceof editors_1.DisassemblerView) {
wnd.goToAddress(pc);
}
}
function uiDebugCallback(state) {
debugSessionActive = true;
@@ -1291,19 +1300,14 @@ function _resume() {
function resume() {
if (!checkRunReady())
return;
// If the active editor has breakpoints, resume with them
var wnd = exports.projectWindows.getActive();
if (wnd instanceof editors_1.SourceEditor) {
var bpPCs = wnd.getBreakpointPCs();
if (bpPCs.length > 0) {
if (!exports.platform.isRunning()) {
exports.projectWindows.refresh(false);
}
runToPC(bpPCs);
userPaused = false;
lastViewClicked = null;
return;
// If there are enabled breakpoints, resume with them armed
if (breakpoints_1.bpStore.getEnabled().length > 0 && armBreakpoints()) {
if (!exports.platform.isRunning()) {
exports.projectWindows.refresh(false);
}
userPaused = false;
lastViewClicked = null;
return;
}
clearBreakpoint();
if (!exports.platform.isRunning()) {
@@ -1401,6 +1405,74 @@ function getEditorPC() {
var wnd = exports.projectWindows.getActive();
return wnd && wnd.getCursorPC && wnd.getCursorPC();
}
// Arm all enabled breakpoints from the shared store: break when the CPU
// reaches any breakpoint location (and, for conditional breakpoints, when
// its condition evaluates true). Returns true if anything was armed.
function armBreakpoints() {
if (!checkRunReady())
return false;
const rbps = (0, breakpoints_1.resolveBreakpoints)().filter(r => r.bp.enabled && !r.error && r.pc >= 0);
if (rbps.length == 0)
return false;
exports.lastDebugState = null;
hideDebugInfo();
exports.projectWindows.refresh(false); // clear any "stopped here" highlight (e.g. Breakpoints window)
setupBreakpoint("toline");
const targets = new Map();
for (const r of rbps)
targets.set(r.pc, r.condFn || null);
if (exports.platform.runEvalAtPC) {
exports.platform.runEvalAtPC(targets);
}
else if (exports.platform.runToPC) {
// platform can't arm per-address conditions: break on locations, ignore conditions
if (rbps.some(r => r.condFn))
console.log("breakpoints: conditions not supported on this platform");
exports.platform.runToPC([...targets.keys()]);
}
else if (exports.platform.runEval) {
// platform has neither helper (e.g. vcs, which wraps its own emulator
// core's debug API directly) -- fall back to a hand-rolled matcher,
// same as the plain runToPC() function below does in this case
exports.platform.runEval((c) => {
const epc = c.EPC != null ? c.EPC : c.PC;
const cond = targets.get(epc);
return cond !== undefined && (cond ? cond(c) : true);
});
}
else {
return false;
}
return true;
}
// push store state into every open editor's gutter markers
function syncEditorBreakpoints() {
for (var id in exports.projectWindows.id2window) {
var wnd = exports.projectWindows.id2window[id];
if (wnd instanceof editors_1.SourceEditor) {
try {
wnd.syncBreakpoints();
}
catch (e) { }
}
}
}
// single store listener: persist, sync UI, and re-arm while running
// (mirrors the old gutter-toggle behavior)
breakpoints_1.bpStore.subscribe(() => {
syncEditorBreakpoints();
if (exports.projectWindows.getActiveID() == '#breakpoints') {
exports.projectWindows.refresh(false);
}
if (isPlatformReady() && exports.platform.isRunning()) {
if (breakpoints_1.bpStore.getEnabled().length > 0) {
armBreakpoints();
}
else {
clearBreakpoint();
}
}
});
function runToPC(pc) {
if (!checkRunReady())
return;
@@ -1457,10 +1529,17 @@ function resetPlatform() {
function resetAndRun() {
if (!checkRunReady())
return;
debugSessionActive = false; // plain run: hide debug shortcut chips
clearBreakpoint();
resetPlatform();
_resume();
// if there are enabled breakpoints, restart with them armed
if (breakpoints_1.bpStore.getEnabled().length > 0 && armBreakpoints()) {
debugSessionActive = true;
}
else {
debugSessionActive = false; // plain run: hide debug shortcut chips
exports.projectWindows.refresh(false); // clear any stale "stopped here" highlight
_resume();
}
(0, shortcutbar_1.refreshShortcutBar)();
}
function resetAndDebug() {
@@ -1824,7 +1903,6 @@ function openToolVersions() {
function openKeyboardShortcuts() {
const isMac = /Mac|iPhone|iPad/.test(navigator.platform);
const mod = isMac ? '&#8984;' : 'Ctrl';
const alt = isMac ? '&#8997;' : 'Alt';
const shift = isMac ? '&#8679;' : 'Shift';
const shortcut = (keys, desc) => `<tr><td><kbd>${keys}</kbd></td><td>${desc}</td></tr>`;
bootbox.dialog({
@@ -1832,13 +1910,11 @@ function openKeyboardShortcuts() {
onEscape: true,
message: `
<table class="help">
<tr><th colspan="2">Custom</th></tr>
<tr><th colspan="2">Editor</th></tr>
${shortcut(`${mod}+${shift}+F`, 'Search symbols, files, and docs')}
${shortcut(`${shift}+${alt}+F`, 'Format document, or selected range(s)')}
${shortcut('Tab', 'Insert to next tab stop, or indent selected range(s)')}
${shortcut(`${shift}+Tab`, 'Outdent line(s) or selected range(s)')}
${shortcut(`Enter`, 'Insert newline, keep cursor at same column pos')}
<tr><th colspan="2">Standard</th></tr>
${shortcut(`${mod}+${shift}+Backspace`, 'Delete line')}
<tr>
<td>Built-in</td>
<td>
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/ide/ui.ts"],"names":[],"mappings":"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 truncated
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/ide/ui.ts"],"names":[],"mappings":"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 truncated
+131 -1
View File
@@ -1,6 +1,6 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ProbeSymbolView = exports.ScanlineIOView = exports.ProbeLogView = exports.RasterStackMapView = exports.RasterPCHeatMapView = exports.AddressHeatMapView = exports.ProbeViewBaseBase = exports.MemoryMapView = exports.BinaryFileView = exports.VRAMMemoryView = exports.MemoryView = void 0;
exports.BreakpointsView = exports.ProbeSymbolView = exports.ScanlineIOView = exports.ProbeLogView = exports.RasterStackMapView = exports.RasterPCHeatMapView = exports.AddressHeatMapView = exports.ProbeViewBaseBase = exports.MemoryMapView = exports.BinaryFileView = exports.VRAMMemoryView = exports.MemoryView = void 0;
const baseplatform_1 = require("../../common/baseplatform");
const emu_1 = require("../../common/emu");
const vtextscroller_1 = require("../../common/vtextscroller");
@@ -9,6 +9,7 @@ const probe_1 = require("../../common/probe");
const util_1 = require("../../common/util");
const vlist_1 = require("../../common/vlist");
const ui_1 = require("../ui");
const breakpoints_1 = require("../breakpoints");
const baseviews_1 = require("./baseviews");
///
function ignoreSymbol(sym) {
@@ -982,4 +983,133 @@ class ProbeSymbolView extends ProbeViewBaseBase {
}
exports.ProbeSymbolView = ProbeSymbolView;
///
class BreakpointsView {
constructor() {
this.editingId = null; // breakpoint being edited in the add form
}
createDiv(parent) {
this.maindiv = (0, baseviews_1.newDiv)(parent, 'vertical-scroll bp-view');
this.render();
return this.maindiv[0];
}
refresh(moveCursor) {
this.render();
}
render() {
const div = this.maindiv.empty();
const resolved = (0, breakpoints_1.resolveBreakpoints)();
// add/edit form
const editing = this.editingId != null ? resolved.find(r => r.bp.id == this.editingId) : null;
const form = $('<div class="bp-form"/>');
const targetInput = $('<input type="text" class="bp-input" spellcheck="false"/>')
.attr('placeholder', 'address or symbol (e.g. $8000, mainloop)')
.val(editing && editing.bp.type == 'address' ? editing.bp.target : '');
const condInput = $('<input type="text" class="bp-input" spellcheck="false"/>')
.attr('placeholder', 'condition (e.g. A == $20 && X < 4)')
.val(editing ? editing.bp.condition || '' : '');
const submit = $('<button class="btn btn-default btn-xs bp-submit"/>').text(editing ? 'Save' : 'Add');
const cancel = $('<button class="btn btn-default btn-xs bp-submit"/>').text('Cancel');
cancel.toggle(editing != null);
cancel.click(() => { this.editingId = null; this.render(); });
const doSubmit = () => {
const target = String(targetInput.val() || '').trim();
const cond = String(condInput.val() || '').trim() || undefined;
if (editing) {
if (editing.bp.type == 'address')
breakpoints_1.bpStore.update(editing.bp.id, { target, condition: cond });
else
breakpoints_1.bpStore.update(editing.bp.id, { condition: cond });
this.editingId = null;
}
else if (target) {
breakpoints_1.bpStore.addAddressBreakpoint(target, cond);
targetInput.val('');
condInput.val('');
}
this.render();
};
submit.click(doSubmit);
form.append(targetInput, condInput, submit, cancel);
form.on('keydown', (e) => {
if (e.key == 'Enter') {
e.preventDefault();
doSubmit();
}
if (e.key == 'Escape') {
this.editingId = null;
this.render();
}
});
div.append(form);
// breakpoint rows
for (const r of resolved) {
div.append(this.renderRow(r));
}
if (resolved.length == 0) {
div.append($('<div class="bp-hint"/>')
.text('No breakpoints. Click a line in the editor gutter (left of the line numbers), or add an address or symbol above.'));
}
}
renderRow(r) {
const bp = r.bp;
const row = $('<div class="bp-row"/>');
// is the CPU currently stopped exactly at this breakpoint's address?
const c = ui_1.lastDebugState && ui_1.lastDebugState.c;
const stoppedPC = c ? (c.EPC != null ? c.EPC : c.PC) : undefined;
if (r.pc != null && stoppedPC === r.pc)
row.addClass('bp-current');
const chk = $('<input type="checkbox" class="bp-chk"/>')
.prop('checked', bp.enabled)
.attr('title', bp.enabled ? 'Disable breakpoint' : 'Enable breakpoint')
.on('click', (e) => { e.stopPropagation(); breakpoints_1.bpStore.setEnabled(bp.id, !bp.enabled); });
row.append(chk);
// location: click to jump to the source line (or disassembly, if unresolved)
let loc;
if (bp.type == 'source') {
loc = (0, util_1.getFilenameForPath)(bp.file) + ':' + bp.line;
}
else {
loc = bp.target;
}
const locSpan = $('<span class="bp-loc"/>').text(loc);
if (bp.type == 'source') {
locSpan.attr('title', bp.file + ':' + bp.line + ' (click to open)');
locSpan.on('click', () => {
const wnd = ui_1.projectWindows.createOrShow(bp.file);
if (wnd && wnd.highlightLines) {
wnd.highlightLines(bp.line - 1, bp.line - 1);
}
});
}
else if (r.pc != null) {
locSpan.attr('title', loc + ' ($' + (0, util_1.hex)(r.pc, 4) + ', click to open)');
locSpan.on('click', () => (0, ui_1.openLocationForPC)(r.pc));
}
row.append(locSpan);
// resolved address or error
const addrSpan = $('<span class="bp-addr"/>');
if (r.pc != null) {
addrSpan.text('$' + (0, util_1.hex)(r.pc, 4));
}
else {
addrSpan.text(r.error || '?').addClass('bp-error').attr('title', r.error);
}
row.append(addrSpan);
const condSpan = $('<span class="bp-cond"/>')
.text(bp.condition ? 'if ' + bp.condition : '')
.attr('title', bp.condition ? 'if ' + bp.condition : '');
row.append(condSpan);
const editBtn = $('<button class="bp-btn"><span class="glyphicon glyphicon-pencil"/></button>')
.attr('title', 'Edit breakpoint')
.on('click', () => { this.editingId = bp.id; this.render(); });
const delBtn = $('<button class="bp-btn"><span class="glyphicon glyphicon-trash"/></button>')
.attr('title', 'Delete breakpoint')
.on('click', () => breakpoints_1.bpStore.remove(bp.id));
row.append(editBtn, delBtn);
if (!bp.enabled)
row.addClass('bp-disabled');
return row;
}
}
exports.BreakpointsView = BreakpointsView;
//# sourceMappingURL=debugviews.js.map
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"debugviews.js","sourceRoot":"","sources":["../../../src/ide/views/debugviews.ts"],"names":[],"mappings":"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 truncated
{"version":3,"file":"debugviews.js","sourceRoot":"","sources":["../../../src/ide/views/debugviews.ts"],"names":[],"mappings":"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 truncated
+26 -27
View File
@@ -22,6 +22,7 @@ const mbo_1 = require("../../themes/mbo");
const settings_1 = require("../settings");
const tabs_1 = require("./tabs");
const ui_1 = require("../ui");
const breakpoints_1 = require("../breakpoints");
const keys_1 = require("../keys");
// Free the mod+shift+<letter> keys the IDE binds (see IDE_RESERVED_KEYS) so its
// debug shortcuts work while an editor is focused. CodeMirror claims two of
@@ -110,6 +111,7 @@ class SourceEditor {
this.editor.dispatch({
effects: (0, filters_1.createTextTransformFilterEffect)(exports.textMapFunctions),
});
this.syncBreakpoints(); // render breakpoints from the shared store
if (ui_1.current_project.getToolForFilename(this.path).startsWith("remote:")) {
this.refreshDelayMsec = 1000; // remote URLs get slower refresh
}
@@ -251,10 +253,9 @@ class SourceEditor {
gutter_1.statusMarkers.gutter,
view_1.EditorView.updateListener.of(update => {
for (let effect of update.transactions.flatMap(tr => tr.effects)) {
if (effect.is(gutter_1.breakpointMarkers.set)) {
if (ui_1.platform.isRunning()) {
this.runToBreakpoints(update.state);
}
if (effect.is(gutter_1.breakpointMarkers.requestToggle)) {
// the store notifies listeners, which syncs markers and re-arms
breakpoints_1.bpStore.toggleSourceLine(this.path, effect.value);
}
if (effect.is(gutter_1.currentPcMarker.runToLine)) {
const lineNum = effect.value;
@@ -656,29 +657,11 @@ class SourceEditor {
redoStep() {
(0, commands_1.redo)(this.editor);
}
getBreakpointPCs() {
if (this.sourcefile == null)
return [];
const pcs = [];
const bpField = this.editor.state.field(gutter_1.breakpointMarkers.field);
const cursor = bpField.iter();
while (cursor.value) {
const line = this.editor.state.doc.lineAt(cursor.from).number;
const pc = this.sourcefile.line2offset[line];
if (pc >= 0)
pcs.push(pc);
cursor.next();
}
return pcs;
}
runToBreakpoints(state) {
const pcs = this.getBreakpointPCs();
if (pcs.length > 0) {
(0, ui_1.runToPC)(pcs);
}
else {
(0, ui_1.clearBreakpoint)();
}
// push the store's breakpoints for this file into the gutter markers
syncBreakpoints() {
const markers = breakpoints_1.bpStore.getSourceBreakpointsForFile(this.path)
.map(bp => ({ line: bp.line, enabled: bp.enabled }));
this.editor.dispatch({ effects: gutter_1.breakpointMarkers.setAll.of(markers) });
}
}
exports.SourceEditor = SourceEditor;
@@ -871,6 +854,22 @@ class ListingView extends DisassemblerView {
}
}
}
// jump to an arbitrary address in this listing. Overrides the
// DisassemblerView version, which looks for lines starting with a plain
// "XXXX\t" hex address -- that's the synthetic disassembly text format,
// not this raw compiler-generated listing, so it never matches here.
goToAddress(addr) {
this.refreshListing();
const res = this.assemblyfile && this.assemblyfile.findLineForOffset(addr, exports.PC_LINE_LOOKAHEAD);
if (res) {
const line = this.disasmview.state.doc.line(res.line);
this.disasmview.dispatch({
selection: { anchor: line.from, head: line.from },
effects: view_1.EditorView.scrollIntoView(line.from, { y: "center" }),
});
}
this.disasmview.focus();
}
}
exports.ListingView = ListingView;
///
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"editors.js","sourceRoot":"","sources":["../../../src/ide/views/editors.ts"],"names":[],"mappings":"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 truncated
{"version":3,"file":"editors.js","sourceRoot":"","sources":["../../../src/ide/views/editors.ts"],"names":[],"mappings":"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 truncated
+27 -24
View File
@@ -7,7 +7,10 @@ const util_1 = require("../../common/util");
const setOffset = state_1.StateEffect.define();
const setBytes = state_1.StateEffect.define();
const setClock = state_1.StateEffect.define();
const toggleBreakpoint = state_1.StateEffect.define();
// clicking the gutter only *requests* a toggle; the breakpoint store
// (breakpoints.ts) decides the new state and syncs it back via setAll
const requestToggleBreakpoint = state_1.StateEffect.define();
const setAllBreakpoints = state_1.StateEffect.define();
const setErrors = state_1.StateEffect.define();
const setCurrentPc = state_1.StateEffect.define();
const runToLineEffect = state_1.StateEffect.define();
@@ -77,24 +80,16 @@ const breakpointField = state_1.StateField.define({
update(value, tr) {
value = value.map(tr.changes);
for (let e of tr.effects) {
if (e.is(toggleBreakpoint)) {
if (e.value === null) {
value = state_1.RangeSet.empty;
}
else {
const line = e.value;
if (line >= 1 && line <= tr.state.doc.lines) {
const pos = tr.state.doc.line(line).from;
let hasBreakpoint = false;
value.between(pos, pos, () => { hasBreakpoint = true; return false; });
if (hasBreakpoint) {
value = value.update({ filter: from => from !== pos });
}
else {
value = value.update({ add: [BREAKPOINT_MARKER.range(pos)] });
}
}
if (e.is(setAllBreakpoints)) {
// replace the whole marker set with the store's state for this file
const ranges = [];
const bps = e.value.filter(bp => bp.line >= 1 && bp.line <= tr.state.doc.lines)
.sort((a, b) => a.line - b.line);
for (let bp of bps) {
const pos = tr.state.doc.line(bp.line).from;
ranges.push((bp.enabled ? BREAKPOINT_MARKER : DISABLED_BREAKPOINT_MARKER).range(pos));
}
value = state_1.RangeSet.of(ranges, true);
}
}
return value;
@@ -192,16 +187,23 @@ const BREAKPOINT_PLACEHOLDER_MARKER = new class extends view_1.GutterMarker {
return span;
}
};
const BREAKPOINT_MARKER = new class extends view_1.GutterMarker {
class BreakpointMarker extends view_1.GutterMarker {
constructor(enabled) {
super();
this.enabled = enabled;
}
toDOM() {
const span = document.createElement("span");
span.innerHTML = "●";
span.style.color = "rgba(255, 0, 0, 1.0)";
span.style.color = this.enabled ? "rgba(255, 0, 0, 1.0)" : "rgba(255, 255, 255, 0.35)";
span.style.cursor = "pointer";
span.title = "Click to run to here"; // "Click to toggle breakpoint";
span.title = this.enabled ? "Breakpoint (click to remove; manage in Breakpoints window)" : "Disabled breakpoint (click to remove)";
return span;
}
};
eq(other) { return this.enabled == other.enabled; }
}
const BREAKPOINT_MARKER = new BreakpointMarker(true);
const DISABLED_BREAKPOINT_MARKER = new BreakpointMarker(false);
class ErrorMarker extends view_1.GutterMarker {
constructor(line, msg) {
super();
@@ -301,7 +303,7 @@ const statusGutter = (0, view_1.gutter)({
else {
const lineNum = view.state.doc.lineAt(line.from).number;
view.dispatch({
effects: toggleBreakpoint.of(lineNum)
effects: requestToggleBreakpoint.of(lineNum)
});
}
return true;
@@ -342,7 +344,8 @@ exports.clock = {
gutter: clockGutter,
};
exports.breakpointMarkers = {
set: toggleBreakpoint,
requestToggle: requestToggleBreakpoint,
setAll: setAllBreakpoints,
field: breakpointField,
};
exports.errorMarkers = {
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"gutter.js","sourceRoot":"","sources":["../../../src/ide/views/gutter.ts"],"names":[],"mappings":"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 truncated
{"version":3,"file":"gutter.js","sourceRoot":"","sources":["../../../src/ide/views/gutter.ts"],"names":[],"mappings":"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 truncated
@@ -1,2 +1,2 @@
import{J as y,m as F,p as V}from"./chunk-G4HBIXG4.js";import{$ as p,K as l,W as e,aa as f,g as h,l as I,m as x}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var B=[e.VK_DELETE,e.VK_ENTER,e.VK_RIGHT,e.VK_F7,e.VK_F1,e.VK_F3,e.VK_F5,e.VK_DOWN,e.VK_3,e.VK_W,e.VK_A,e.VK_4,e.VK_Z,e.VK_S,e.VK_E,e.VK_SHIFT,e.VK_5,e.VK_R,e.VK_D,e.VK_6,e.VK_C,e.VK_F,e.VK_T,e.VK_X,e.VK_7,e.VK_Y,e.VK_G,e.VK_8,e.VK_B,e.VK_H,e.VK_U,e.VK_V,e.VK_9,e.VK_I,e.VK_J,e.VK_0,e.VK_M,e.VK_K,e.VK_O,e.VK_N,null,e.VK_P,e.VK_L,e.VK_MINUS,e.VK_PERIOD,null,null,e.VK_COMMA,null,null,e.VK_SEMICOLON,e.VK_HOME,e.VK_SHIFT,e.VK_EQUALS,e.VK_TILDE,e.VK_SLASH,e.VK_1,e.VK_LEFT,e.VK_CONTROL,e.VK_2,e.VK_SPACE,e.VK_ALT,e.VK_Q,null],A=0,a=class{constructor(){this.regs=new Uint8Array(16);this.ina=0;this.inb=0}read(o){return this.regs[o]}write(o,r){this.regs[o]=r}input_a(){return this.ina&~this.regs[1]}input_b(){return this.inb&~this.regs[1]}output_a(){return this.regs[0]^255|this.regs[1]}output_b(){return this.regs[2]^255|this.regs[3]}},g=class extends V{constructor(){super();this.cpuFrequency=1e6;this.defaultROMSize=4096;this.cpu=new F;this.ram=new Uint8Array(6144);this.rriot1=new a;this.rriot2=new a;this.digits=[];this.read=f([[5888,5951,15,r=>this.readIO_1(r)],[5952,6015,15,r=>this.readIO_2(r)],[0,6143,8191,r=>this.ram[r]],[6144,8191,2047,r=>this.bios[r]]],{gmask:8191});this.write=f([[5888,5951,15,(r,t)=>this.writeIO_1(r,t)],[5952,6015,15,(r,t)=>this.writeIO_2(r,t)],[0,6143,8191,(r,t)=>{this.ram[r]=t}]],{gmask:8191});this.bios=new I().decode(x(atob(O))),this.connectCPUMemoryBus(this)}readConst(r){return this.read(r)}readIO_1(r){return this.rriot1.read(r)}writeIO_1(r,t){this.rriot1.write(r,t)}readIO_2(r){switch(r&15){case 0:let t=0;for(let i=0;i<8;i++)(this.rriot2.regs[0]&1<<i)==0&&(t|=this.inputs[A+i]);this.rriot2.ina=t^255}return this.rriot2.read(r)}writeIO_2(r,t){this.rriot2.write(r,t);let i=this.rriot2.output_a(),n=this.rriot2.output_b();console.log(i,n)}loadROM(r){super.loadROM(r),this.ram.set(this.rom,1024),this.reset()}loadBIOS(r){this.bios=p(r,2048),this.reset()}setKeyInput(r,t,i){for(var n=B,s=0;s<n.length;s++)if(n[s]&&n[s].c==r){let K=s>>3,u=s&7;i&1?this.inputs[A+K]|=1<<u:i&64&&(this.inputs[A+K]&=~(1<<u)),console.log(r,K,u,h(this.inputs[A+K]));break}}advanceFrame(r){for(var t=0;t<this.cpuFrequency/60&&!(r&&r());)t+=this.advanceCPU();return t}},O="TFpHAAAIAAAABY3ivWkoAQsOJSiprY3sFyAyGaknjUIXqb+NQxeiZKkWIHoZytD4qSoo4a35FyBhGa31FyBeGa32KKPtF833F63uF+34F5AkqS8lXeclnegooqICqQQOBTgAhfqF+0xPHCDsJXAg6hlMMxgPGamNDgVrTI3vF61xGI3wF61yGI3xF6kHDgJ8/43pFyBBGk7pFw3pFyUErekXyRbQ7aIKICQaJQHfytD2JUIq8AYlBtHw8yDzGc35F/ANrfkXyQAlDf/wF9CcJQ0gTBmN7RcOBQHuF0z4GCXEKKSiAiV9L/AUIAAa0CPK0PElDEzsFw4CnCWhzecX0Awo4ugX0ASpAPACqf8OBcWt9ReN7Ret9heN7hepYI3vF6kAjecXjegXYKgYbSUB5xet6BdpACUJmGAgTBmoSigBIG8ZmChiYCkPyQoYMAJpB2kwjukXjOoXoAggnhlKsAYooUyRGSDEKEKI0Ouu6Res6hdgoglILEcXEPupfo1EF6mnjUIXDgkHDiKqytDfaGCiBg4FHsMODB4lhw4HHu7tF9AD7u4XYCAkGiAAGiikYMkwMB7JRxAayUAwAxhpCSooAaQEKi7pF4jQ+a3pF6AAYMhgjusXoggOIovqFw3qF43qF8rQ8a3qFypKrusXYCxCFxD7rUYXoP+MKIEUiND9JQow+zjtDgYLByULSf8pgGAOSFsOBJeaDgymJYclW0x1Gv8oHygfKB4oGWsaKCKF82iF8WiF74X6aIXwhfuE9Ib1uobyIIgeTE8cbPoXbP4Xov+aJYmp/43zF6kBLEAX0Bkw+an8GGkBkAPu8xesQBcQ843yDkIbah4gjB4l2x4gLx6iCiAxHkyvHakAhfiF+SBaHskB8AYgrB9M2x0gGR/Q0yWi8MwlBPD0KILvIGofyRUQu8kU8ETJEPAsyREoYRLwL8kT8DEKKAGF/KIEpP/QCrH6BvwqkfpMwxwKJvom+8rQ6vAIqQHQAqkAhf8OgmZjHyihTMgdpe+F+qXwDoR6Wh7JO9D5JRr3hfYgnR+qIJEfKMGF+yjl+ijhivAPJQORJUMlO8rQ8uglB8X20BcowvfQE4rQuaIMDkOaDgLPTxwlD6IR0O4OBNYoofaF9yAvHqk7IKAepfrN9xel+w6iGRipACA7HiDMHyAeHqX2JQOl9yiBTGQcqRiqJVGRJVGgALH6DgUFDgJy8A4IIeb40ALm+UxIHSV6Lx4lJCCeDgcnng4CQCUqTKwdpvKapftIpfpIpfFIpvWk9KXzQMkg8MrJf/AbyQ3w28kK8BzJLvAmyUfw1clR8ArJTPAJTGocDiIgQh1M5xw4pfrpAYX6sALG+0ysHaAApfiR+kzCHaX7DgSOpQ4FlmCiB73VHyCgHsoQ92CF/A6D00wepfwogw6K1UygHob9oggORAQiMPkg1B4g6x6tQBcpgEb+Bf6F/iUJytDvJQym/aX+KkpgogGG/6IAjkEXoj+OQxeiB45CF9h4YKkghf6G/SUkrUIXKf4OInLUHqIIJYVG/mkAJcnK0O4lCgkBJcam/WCt8xeN9Bet8hc46QGwA870F6z0FxDzDggPSk70F5DjCYCw4KADogGp/45CF+joLUAXiND1oAeMQhcJgEn/YA4iXIX5qX+NQReiCaADufgADgPmSB8lAikPKOGI0OslMakAJRlM/h6E/Ki55x+gAIxAFyUOjUAXoH+I0P3o6KT8YOb60ALm+2CiIaABIAIf0AfgJ9D1qRVgoP8KsAPIEPqKKQ9KqpgQAxhpB8rQ+mAYZfeF96X2aQCF9mAgWh4grB8opKX4DqKkG8lHEBcOqaSgBCom+Cb5iA7iZWCl+IX6pfmF+2AAKAMKDU1JSyATUlJFIBO/htvP5u39h//v9/y53vnx////HBwiHB8c";var c=[{id:"hello.dasm",name:"Hello World (ASM)"}],m=class extends y{constructor(){super(...arguments);this.getMemoryMap=function(){return{main:[{name:"RAM",start:0,size:5120,type:"ram"},{name:"6530",start:5888,size:64,type:"io"},{name:"6530",start:5952,size:64,type:"io"},{name:"RAM",start:6016,size:128,type:"ram"},{name:"BIOS",start:6144,size:2048,type:"rom"}]}}}newMachine(){return new g}getPresets(){return c}readAddress(r){return this.machine.readConst(r)}};l.kim1=m;
//# sourceMappingURL=kim1-TXZGJRF2.js.map
import{J as y,m as F,p as V}from"./chunk-4676AC7I.js";import{$ as p,K as l,W as e,aa as f,g as h,l as I,m as x}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var B=[e.VK_DELETE,e.VK_ENTER,e.VK_RIGHT,e.VK_F7,e.VK_F1,e.VK_F3,e.VK_F5,e.VK_DOWN,e.VK_3,e.VK_W,e.VK_A,e.VK_4,e.VK_Z,e.VK_S,e.VK_E,e.VK_SHIFT,e.VK_5,e.VK_R,e.VK_D,e.VK_6,e.VK_C,e.VK_F,e.VK_T,e.VK_X,e.VK_7,e.VK_Y,e.VK_G,e.VK_8,e.VK_B,e.VK_H,e.VK_U,e.VK_V,e.VK_9,e.VK_I,e.VK_J,e.VK_0,e.VK_M,e.VK_K,e.VK_O,e.VK_N,null,e.VK_P,e.VK_L,e.VK_MINUS,e.VK_PERIOD,null,null,e.VK_COMMA,null,null,e.VK_SEMICOLON,e.VK_HOME,e.VK_SHIFT,e.VK_EQUALS,e.VK_TILDE,e.VK_SLASH,e.VK_1,e.VK_LEFT,e.VK_CONTROL,e.VK_2,e.VK_SPACE,e.VK_ALT,e.VK_Q,null],A=0,a=class{constructor(){this.regs=new Uint8Array(16);this.ina=0;this.inb=0}read(o){return this.regs[o]}write(o,r){this.regs[o]=r}input_a(){return this.ina&~this.regs[1]}input_b(){return this.inb&~this.regs[1]}output_a(){return this.regs[0]^255|this.regs[1]}output_b(){return this.regs[2]^255|this.regs[3]}},g=class extends V{constructor(){super();this.cpuFrequency=1e6;this.defaultROMSize=4096;this.cpu=new F;this.ram=new Uint8Array(6144);this.rriot1=new a;this.rriot2=new a;this.digits=[];this.read=f([[5888,5951,15,r=>this.readIO_1(r)],[5952,6015,15,r=>this.readIO_2(r)],[0,6143,8191,r=>this.ram[r]],[6144,8191,2047,r=>this.bios[r]]],{gmask:8191});this.write=f([[5888,5951,15,(r,t)=>this.writeIO_1(r,t)],[5952,6015,15,(r,t)=>this.writeIO_2(r,t)],[0,6143,8191,(r,t)=>{this.ram[r]=t}]],{gmask:8191});this.bios=new I().decode(x(atob(O))),this.connectCPUMemoryBus(this)}readConst(r){return this.read(r)}readIO_1(r){return this.rriot1.read(r)}writeIO_1(r,t){this.rriot1.write(r,t)}readIO_2(r){switch(r&15){case 0:let t=0;for(let i=0;i<8;i++)(this.rriot2.regs[0]&1<<i)==0&&(t|=this.inputs[A+i]);this.rriot2.ina=t^255}return this.rriot2.read(r)}writeIO_2(r,t){this.rriot2.write(r,t);let i=this.rriot2.output_a(),n=this.rriot2.output_b();console.log(i,n)}loadROM(r){super.loadROM(r),this.ram.set(this.rom,1024),this.reset()}loadBIOS(r){this.bios=p(r,2048),this.reset()}setKeyInput(r,t,i){for(var n=B,s=0;s<n.length;s++)if(n[s]&&n[s].c==r){let K=s>>3,u=s&7;i&1?this.inputs[A+K]|=1<<u:i&64&&(this.inputs[A+K]&=~(1<<u)),console.log(r,K,u,h(this.inputs[A+K]));break}}advanceFrame(r){for(var t=0;t<this.cpuFrequency/60&&!(r&&r());)t+=this.advanceCPU();return t}},O="TFpHAAAIAAAABY3ivWkoAQsOJSiprY3sFyAyGaknjUIXqb+NQxeiZKkWIHoZytD4qSoo4a35FyBhGa31FyBeGa32KKPtF833F63uF+34F5AkqS8lXeclnegooqICqQQOBTgAhfqF+0xPHCDsJXAg6hlMMxgPGamNDgVrTI3vF61xGI3wF61yGI3xF6kHDgJ8/43pFyBBGk7pFw3pFyUErekXyRbQ7aIKICQaJQHfytD2JUIq8AYlBtHw8yDzGc35F/ANrfkXyQAlDf/wF9CcJQ0gTBmN7RcOBQHuF0z4GCXEKKSiAiV9L/AUIAAa0CPK0PElDEzsFw4CnCWhzecX0Awo4ugX0ASpAPACqf8OBcWt9ReN7Ret9heN7hepYI3vF6kAjecXjegXYKgYbSUB5xet6BdpACUJmGAgTBmoSigBIG8ZmChiYCkPyQoYMAJpB2kwjukXjOoXoAggnhlKsAYooUyRGSDEKEKI0Ouu6Res6hdgoglILEcXEPupfo1EF6mnjUIXDgkHDiKqytDfaGCiBg4FHsMODB4lhw4HHu7tF9AD7u4XYCAkGiAAGiikYMkwMB7JRxAayUAwAxhpCSooAaQEKi7pF4jQ+a3pF6AAYMhgjusXoggOIovqFw3qF43qF8rQ8a3qFypKrusXYCxCFxD7rUYXoP+MKIEUiND9JQow+zjtDgYLByULSf8pgGAOSFsOBJeaDgymJYclW0x1Gv8oHygfKB4oGWsaKCKF82iF8WiF74X6aIXwhfuE9Ib1uobyIIgeTE8cbPoXbP4Xov+aJYmp/43zF6kBLEAX0Bkw+an8GGkBkAPu8xesQBcQ843yDkIbah4gjB4l2x4gLx6iCiAxHkyvHakAhfiF+SBaHskB8AYgrB9M2x0gGR/Q0yWi8MwlBPD0KILvIGofyRUQu8kU8ETJEPAsyREoYRLwL8kT8DEKKAGF/KIEpP/QCrH6BvwqkfpMwxwKJvom+8rQ6vAIqQHQAqkAhf8OgmZjHyihTMgdpe+F+qXwDoR6Wh7JO9D5JRr3hfYgnR+qIJEfKMGF+yjl+ijhivAPJQORJUMlO8rQ8uglB8X20BcowvfQE4rQuaIMDkOaDgLPTxwlD6IR0O4OBNYoofaF9yAvHqk7IKAepfrN9xel+w6iGRipACA7HiDMHyAeHqX2JQOl9yiBTGQcqRiqJVGRJVGgALH6DgUFDgJy8A4IIeb40ALm+UxIHSV6Lx4lJCCeDgcnng4CQCUqTKwdpvKapftIpfpIpfFIpvWk9KXzQMkg8MrJf/AbyQ3w28kK8BzJLvAmyUfw1clR8ArJTPAJTGocDiIgQh1M5xw4pfrpAYX6sALG+0ysHaAApfiR+kzCHaX7DgSOpQ4FlmCiB73VHyCgHsoQ92CF/A6D00wepfwogw6K1UygHob9oggORAQiMPkg1B4g6x6tQBcpgEb+Bf6F/iUJytDvJQym/aX+KkpgogGG/6IAjkEXoj+OQxeiB45CF9h4YKkghf6G/SUkrUIXKf4OInLUHqIIJYVG/mkAJcnK0O4lCgkBJcam/WCt8xeN9Bet8hc46QGwA870F6z0FxDzDggPSk70F5DjCYCw4KADogGp/45CF+joLUAXiND1oAeMQhcJgEn/YA4iXIX5qX+NQReiCaADufgADgPmSB8lAikPKOGI0OslMakAJRlM/h6E/Ki55x+gAIxAFyUOjUAXoH+I0P3o6KT8YOb60ALm+2CiIaABIAIf0AfgJ9D1qRVgoP8KsAPIEPqKKQ9KqpgQAxhpB8rQ+mAYZfeF96X2aQCF9mAgWh4grB8opKX4DqKkG8lHEBcOqaSgBCom+Cb5iA7iZWCl+IX6pfmF+2AAKAMKDU1JSyATUlJFIBO/htvP5u39h//v9/y53vnx////HBwiHB8c";var c=[{id:"hello.dasm",name:"Hello World (ASM)"}],m=class extends y{constructor(){super(...arguments);this.getMemoryMap=function(){return{main:[{name:"RAM",start:0,size:5120,type:"ram"},{name:"6530",start:5888,size:64,type:"io"},{name:"6530",start:5952,size:64,type:"io"},{name:"RAM",start:6016,size:128,type:"ram"},{name:"BIOS",start:6144,size:2048,type:"rom"}]}}}newMachine(){return new g}getPresets(){return c}readAddress(r){return this.machine.readConst(r)}};l.kim1=m;
//# sourceMappingURL=kim1-E2SR2N4X.js.map
File renamed without changes.
+2 -2
View File
@@ -1,2 +1,2 @@
import{K as X,c as v,d as Y,e as P,k as z,r as D}from"./chunk-G4HBIXG4.js";import{$ as U,K as B,T as G,W as s,X as N,Z as V,aa as w}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var st=19968e3,W=st/4,Z=480,g=525,T=512,K=30,it=Math.floor(W/(g*K)),H=32,at=30,C=8,O=16;function E(c){return c&=7,c<<5|c<<2|c>>1}var nt=V([[s.SELECT,0,1],[s.START,0,4],[s.VK_2,0,8],[s.UP,1,1],[s.DOWN,1,2],[s.LEFT,1,4],[s.RIGHT,1,8],[s.A,1,16],[s.B,1,32],[s.P2_UP,2,1],[s.P2_DOWN,2,2],[s.P2_LEFT,2,4],[s.P2_RIGHT,2,8],[s.P2_A,2,16],[s.P2_B,2,32]]);var k=57344,q=k,y=16384,lt=q+y,Q=32768,ot=16384,pt=k+y+Q+ot,A=class extends D{constructor(){super();this.cpuFrequency=W;this.canvasWidth=T;this.numVisibleScanlines=Z;this.numTotalScanlines=g;this.cpuCyclesPerLine=it;this.defaultROMSize=pt;this.sampleRate=K*g*2;this.cpu=new v;this.ram=new Uint8Array(2048);this.sprram=new Uint8Array(512);this.vram=new Uint8Array(2048);this.palram=new Uint8Array(128);this.palette=new Uint32Array(64);this.interruptEnabled=!1;this.watchdog_counter=O;this.ctcVector=0;this.read=w([[0,57343,65535,t=>this.rom?this.rom[t]:0],[57344,59391,2047,t=>this.ram[t]],[59392,61439,511,t=>this.sprram[t]],[61440,63487,2047,t=>this.vram[t]],[63488,65535,127,t=>this.palram[t]]]);this.write=w([[57344,59391,2047,(t,e)=>{this.ram[t]=e}],[59392,61439,511,(t,e)=>{this.sprram[t]=e}],[61440,63487,2047,(t,e)=>{this.vram[t]=e}],[63488,65535,127,(t,e)=>{this.palram[t]=e,this.updatePalette(t)}]]);var t=new Y;this.psg1=new P(t),this.psg2=new P(t),this.audioadapter=new z([this.psg1.psg,this.psg2.psg],2,this.sampleRate),this.connectCPUMemoryBus(this),this.connectCPUIOBus(this.newIOBus()),this.inputs.set([0,0,0,255,255]),this.handler=N(this.inputs,nt)}readConst(t){return this.read(t)}newIOBus(){return{read:t=>(t&=255,t<=4?this.inputs[t]:t>=8&&t<=15?this.inputs[3]:(t>=240&&t<=243,0)),write:(t,e)=>{t&=255,t==224&&(this.watchdog_counter=O),t>=240&&t<=243&&((t&3)==0&&!(e&1)||(e&1)==0&&(this.ctcVector=e&248)),t>=0&&t<=7}}}updatePalette(t){let e=t>>1;if(e>=64)return;let r=this.palram[e*2+1],n=E(r>>6&3),i=E(r&7),a=E(r>>3&7),o=(this.palram[e*2]&1)<<2;n=E(o|r>>6&3),this.palette[e]=4278190080|a<<16|i<<8|n}drawScanline(){let t=this.scanline;if(t>=Z)return;let e=t*T;if((t&1)==0){t>>=1;let r=Math.floor(t/C),n=t%C;if(r<at)for(let i=0;i<H;i++){let a=(r*H+i)*2,o=this.vram[a],l=this.vram[a+1],x=o|(l&3)<<8,h=l>>4&3,F=(l&4)!=0,m=(l&8)!=0?15-n:n,u=i*C*2;this.drawTileLine(e+u,x,m,h,F)}}this.drawSpriteScanline(t,e)}drawTileLine(t,e,r,n,i){let a=q,o=y/2,x=e*32+(r<8,r),h=this.rom[a+x]||0,F=this.rom[a+o+x]||0,d=n*4;for(let m=0;m<8;m++){let u=7-m,p=i?14-m*2:m*2,b=h>>u&1|(F>>u&1)<<1;this.pixels[t+p]=this.pixels[t+p+512]=this.pixels[t+p+1]=this.pixels[t+p+513]=this.palette[d+b]}}drawSpriteScanline(t,e){let r=lt,n=Q/4;for(let i=31;i>=0;i--){let a=i*4,o=this.sprram[a]-2&255;o=496-o;let l=this.sprram[a+1],x=this.sprram[a+2]|(l&8?256:0),h=this.sprram[a+3]-3&511,F=(l&16)!=0,d=(l&32)!=0,u=16+(l&3)*16,p=t-o;if(p<0||p>=32)continue;let b=d?31-p:p,J=x*128+b;for(let f=0;f<4;f++){let M=J+f*32,$=this.rom[r+M]||0,tt=this.rom[r+n+M]||0,et=this.rom[r+n*2+M]||0,rt=this.rom[r+n*3+M]||0;for(let _=0;_<8;_++){let S=7-_,L=$>>S&1|(tt>>S&1)<<1|(et>>S&1)<<2|(rt>>S&1)<<3;if(L==0)continue;let R;F?R=h+31-(f*8+_):R=h+f*8+_,R>=0&&R<T&&(this.pixels[e+R]=this.palette[u+L])}}}}startScanline(){this.audio&&this.audioadapter&&this.audioadapter.generate(this.audio)}advanceFrame(t){var e=super.advanceFrame(t);if(this.watchdog_counter--<=0)throw new G("WATCHDOG FIRED");return this.cpu.interrupt(this.ctcVector),e}reset(){super.reset(),this.watchdog_counter=O,this.interruptEnabled=!1,this.ctcVector=0,this.psg1.reset(),this.psg2.reset()}loadROM(t){this.rom=U(t,this.defaultROMSize);for(let e=0;e<64;e++)this.updatePalette(e*2)}loadState(t){super.loadState(t),this.sprram.set(t.sprram),this.vram.set(t.vram),this.palram.set(t.palram),this.watchdog_counter=t.wdc,this.interruptEnabled=t.ie,this.ctcVector=t.ctcv;for(let e=0;e<64;e++)this.updatePalette(e*2)}saveState(){var t=super.saveState();return t.sprram=this.sprram.slice(0),t.vram=this.vram.slice(0),t.palram=this.palram.slice(0),t.wdc=this.watchdog_counter,t.ie=this.interruptEnabled,t.ctcv=this.ctcVector,t}};var mt=[{id:"minimal.c",name:"Minimal Example"},{id:"gfxtest.c",name:"Graphics Test"}],I=class extends X{constructor(){super(...arguments);this.getMemoryMap=function(){return{main:[{name:"Program ROM",start:0,size:57344,type:"rom"},{name:"NVRAM",start:57344,size:2048,type:"ram"},{name:"Sprite RAM",start:59392,size:512,type:"ram"},{name:"Video RAM",start:61440,size:2048,type:"ram"},{name:"Palette RAM",start:63488,size:128,type:"ram"}]}}}newMachine(){return new A}getPresets(){return mt}readAddress(t){return this.machine.readConst(t)}readVRAMAddress(t){return t<512?this.machine.sprram[t]:t<2560?this.machine.vram[t-512]:this.machine.palram[t-2560&127]}};B.mcr=I;
//# sourceMappingURL=mcr-BWX5VE4N.js.map
import{K as X,c as v,d as Y,e as P,k as z,r as D}from"./chunk-4676AC7I.js";import{$ as U,K as B,T as G,W as s,X as N,Z as V,aa as w}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var st=19968e3,W=st/4,Z=480,g=525,T=512,K=30,it=Math.floor(W/(g*K)),H=32,at=30,C=8,O=16;function E(c){return c&=7,c<<5|c<<2|c>>1}var nt=V([[s.SELECT,0,1],[s.START,0,4],[s.VK_2,0,8],[s.UP,1,1],[s.DOWN,1,2],[s.LEFT,1,4],[s.RIGHT,1,8],[s.A,1,16],[s.B,1,32],[s.P2_UP,2,1],[s.P2_DOWN,2,2],[s.P2_LEFT,2,4],[s.P2_RIGHT,2,8],[s.P2_A,2,16],[s.P2_B,2,32]]);var k=57344,q=k,y=16384,lt=q+y,Q=32768,ot=16384,pt=k+y+Q+ot,A=class extends D{constructor(){super();this.cpuFrequency=W;this.canvasWidth=T;this.numVisibleScanlines=Z;this.numTotalScanlines=g;this.cpuCyclesPerLine=it;this.defaultROMSize=pt;this.sampleRate=K*g*2;this.cpu=new v;this.ram=new Uint8Array(2048);this.sprram=new Uint8Array(512);this.vram=new Uint8Array(2048);this.palram=new Uint8Array(128);this.palette=new Uint32Array(64);this.interruptEnabled=!1;this.watchdog_counter=O;this.ctcVector=0;this.read=w([[0,57343,65535,t=>this.rom?this.rom[t]:0],[57344,59391,2047,t=>this.ram[t]],[59392,61439,511,t=>this.sprram[t]],[61440,63487,2047,t=>this.vram[t]],[63488,65535,127,t=>this.palram[t]]]);this.write=w([[57344,59391,2047,(t,e)=>{this.ram[t]=e}],[59392,61439,511,(t,e)=>{this.sprram[t]=e}],[61440,63487,2047,(t,e)=>{this.vram[t]=e}],[63488,65535,127,(t,e)=>{this.palram[t]=e,this.updatePalette(t)}]]);var t=new Y;this.psg1=new P(t),this.psg2=new P(t),this.audioadapter=new z([this.psg1.psg,this.psg2.psg],2,this.sampleRate),this.connectCPUMemoryBus(this),this.connectCPUIOBus(this.newIOBus()),this.inputs.set([0,0,0,255,255]),this.handler=N(this.inputs,nt)}readConst(t){return this.read(t)}newIOBus(){return{read:t=>(t&=255,t<=4?this.inputs[t]:t>=8&&t<=15?this.inputs[3]:(t>=240&&t<=243,0)),write:(t,e)=>{t&=255,t==224&&(this.watchdog_counter=O),t>=240&&t<=243&&((t&3)==0&&!(e&1)||(e&1)==0&&(this.ctcVector=e&248)),t>=0&&t<=7}}}updatePalette(t){let e=t>>1;if(e>=64)return;let r=this.palram[e*2+1],n=E(r>>6&3),i=E(r&7),a=E(r>>3&7),o=(this.palram[e*2]&1)<<2;n=E(o|r>>6&3),this.palette[e]=4278190080|a<<16|i<<8|n}drawScanline(){let t=this.scanline;if(t>=Z)return;let e=t*T;if((t&1)==0){t>>=1;let r=Math.floor(t/C),n=t%C;if(r<at)for(let i=0;i<H;i++){let a=(r*H+i)*2,o=this.vram[a],l=this.vram[a+1],x=o|(l&3)<<8,h=l>>4&3,F=(l&4)!=0,m=(l&8)!=0?15-n:n,u=i*C*2;this.drawTileLine(e+u,x,m,h,F)}}this.drawSpriteScanline(t,e)}drawTileLine(t,e,r,n,i){let a=q,o=y/2,x=e*32+(r<8,r),h=this.rom[a+x]||0,F=this.rom[a+o+x]||0,d=n*4;for(let m=0;m<8;m++){let u=7-m,p=i?14-m*2:m*2,b=h>>u&1|(F>>u&1)<<1;this.pixels[t+p]=this.pixels[t+p+512]=this.pixels[t+p+1]=this.pixels[t+p+513]=this.palette[d+b]}}drawSpriteScanline(t,e){let r=lt,n=Q/4;for(let i=31;i>=0;i--){let a=i*4,o=this.sprram[a]-2&255;o=496-o;let l=this.sprram[a+1],x=this.sprram[a+2]|(l&8?256:0),h=this.sprram[a+3]-3&511,F=(l&16)!=0,d=(l&32)!=0,u=16+(l&3)*16,p=t-o;if(p<0||p>=32)continue;let b=d?31-p:p,J=x*128+b;for(let f=0;f<4;f++){let M=J+f*32,$=this.rom[r+M]||0,tt=this.rom[r+n+M]||0,et=this.rom[r+n*2+M]||0,rt=this.rom[r+n*3+M]||0;for(let _=0;_<8;_++){let S=7-_,L=$>>S&1|(tt>>S&1)<<1|(et>>S&1)<<2|(rt>>S&1)<<3;if(L==0)continue;let R;F?R=h+31-(f*8+_):R=h+f*8+_,R>=0&&R<T&&(this.pixels[e+R]=this.palette[u+L])}}}}startScanline(){this.audio&&this.audioadapter&&this.audioadapter.generate(this.audio)}advanceFrame(t){var e=super.advanceFrame(t);if(this.watchdog_counter--<=0)throw new G("WATCHDOG FIRED");return this.cpu.interrupt(this.ctcVector),e}reset(){super.reset(),this.watchdog_counter=O,this.interruptEnabled=!1,this.ctcVector=0,this.psg1.reset(),this.psg2.reset()}loadROM(t){this.rom=U(t,this.defaultROMSize);for(let e=0;e<64;e++)this.updatePalette(e*2)}loadState(t){super.loadState(t),this.sprram.set(t.sprram),this.vram.set(t.vram),this.palram.set(t.palram),this.watchdog_counter=t.wdc,this.interruptEnabled=t.ie,this.ctcVector=t.ctcv;for(let e=0;e<64;e++)this.updatePalette(e*2)}saveState(){var t=super.saveState();return t.sprram=this.sprram.slice(0),t.vram=this.vram.slice(0),t.palram=this.palram.slice(0),t.wdc=this.watchdog_counter,t.ie=this.interruptEnabled,t.ctcv=this.ctcVector,t}};var mt=[{id:"minimal.c",name:"Minimal Example"},{id:"gfxtest.c",name:"Graphics Test"}],I=class extends X{constructor(){super(...arguments);this.getMemoryMap=function(){return{main:[{name:"Program ROM",start:0,size:57344,type:"rom"},{name:"NVRAM",start:57344,size:2048,type:"ram"},{name:"Sprite RAM",start:59392,size:512,type:"ram"},{name:"Video RAM",start:61440,size:2048,type:"ram"},{name:"Palette RAM",start:63488,size:128,type:"ram"}]}}}newMachine(){return new A}getPresets(){return mt}readAddress(t){return this.machine.readConst(t)}readVRAMAddress(t){return t<512?this.machine.sprram[t]:t<2560?this.machine.vram[t-512]:this.machine.palram[t-2560&127]}};B.mcr=I;
//# sourceMappingURL=mcr-MZFQTK2I.js.map
File renamed without changes.
+2 -2
View File
@@ -1,4 +1,4 @@
import{c as C}from"./chunk-SK73GSLK.js";import{K as x,d as U,e as Q}from"./chunk-G4HBIXG4.js";import{K as t,W as A,Z as H,l as E,m as O}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var n=H([[A.UP,0,1],[A.DOWN,0,2],[A.LEFT,0,4],[A.RIGHT,0,8],[A.A,0,16],[A.B,0,32],[A.P2_UP,1,1],[A.P2_DOWN,1,2],[A.P2_LEFT,1,4],[A.P2_RIGHT,1,8],[A.P2_A,1,16],[A.P2_B,1,32],[A.ANYKEY,2,0]]),a=0;var i=16,F=[A.VK_7,A.VK_6,A.VK_5,A.VK_4,A.VK_3,A.VK_2,A.VK_1,A.VK_0,A.VK_SEMICOLON,A.VK_CLOSE_BRACKET,A.VK_OPEN_BRACKET,A.VK_BACK_SLASH,A.VK_EQUALS,A.VK_MINUS,A.VK_9,A.VK_8,A.VK_B,A.VK_A,null,A.VK_SLASH,A.VK_PERIOD,A.VK_COMMA,A.VK_ACUTE,A.VK_QUOTE,A.VK_J,A.VK_I,A.VK_H,A.VK_G,A.VK_F,A.VK_E,A.VK_D,A.VK_C,A.VK_R,A.VK_Q,A.VK_P,A.VK_O,A.VK_N,A.VK_M,A.VK_L,A.VK_K,A.VK_Z,A.VK_Y,A.VK_X,A.VK_W,A.VK_V,A.VK_U,A.VK_T,A.VK_S,A.VK_F3,A.VK_F2,A.VK_F1,null,A.VK_CAPS_LOCK,null,A.VK_CONTROL,A.VK_SHIFT,A.VK_ENTER,null,A.VK_BACK_SPACE,null,A.VK_TAB,A.VK_ESCAPE,A.VK_F5,A.VK_F4,A.VK_RIGHT,A.VK_DOWN,A.VK_UP,A.VK_LEFT,A.VK_DELETE,A.VK_INSERT,A.VK_HOME,A.VK_SPACE,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],M=class extends C{constructor(){super();this.numVisibleScanlines=240;this.defaultROMSize=32768;this.ram=new Uint8Array(65536);this.slotmask=0;this.ppi_c=0;this.read=s=>{let e=s>>14<<1,D=this.slotmask>>e&3,g=this.slots[D];return g?g.read(s):0};this.write=(s,e)=>{let D=s>>14<<1,g=this.slotmask>>D&3,B=this.slots[g];B&&B.write(s,e)};this.init(this,this.newIOBus(),new Q(new U)),this.bios=new E().decode(O(atob(h))),this.bios[3541]=0,this.bios[3542]=0,this.bios[3543]=0,this.slots=[{read:s=>this.bios[s]|0,write:(s,e)=>{}},{read:s=>this.rom[s-16384]|0,write:(s,e)=>{}},{read:s=>this.rom[s-16384]|0,write:(s,e)=>{}},{read:s=>this.ram[s]|0,write:(s,e)=>{this.ram[s]=e}}]}loadBIOS(s){this.bios=s}getKeyboardMap(){return n}getKeyboardFunction(){return(s,e,D,g)=>{for(var B=F,T=0;T<B.length;T++)if(B[T]&&B[T].c==e){let R=T>>3,f=7-(T&7);g&1?this.inputs[i+R]|=1<<f:g&64&&(this.inputs[i+R]&=~(1<<f));break}}}newIOBus(){return{read:s=>{switch(s&=255,s){case 152:return this.vdp.readData();case 153:return this.vdp.readStatus();case 162:return this.psg.currentRegister()==14?~this.inputs[a]:this.psg.readData();case 168:return this.slotmask;case 169:return~this.inputs[i+(this.ppi_c&15)];case 170:return this.ppi_c}return 0},write:(s,e)=>{switch(s&=255,e&=255,s){case 152:this.vdp.writeData(e);break;case 153:this.vdp.writeAddress(e);break;case 168:this.slotmask=e;break;case 170:this.ppi_c=e;break;case 171:let D=e>>1&7;this.ppi_c=this.ppi_c&~(1<<D)|(e&1)<<D;break;case 160:this.psg.selectRegister(e);break;case 161:this.psg.setData(e);break;case 252:case 253:case 254:case 255:break}}}}vdpInterrupt(){this.probe.logInterrupt(255),this.cpu.interrupt(255)}loadState(s){super.loadState(s),this.slotmask=s.slotmask,this.ppi_c=s.ppi_c,this.psg.selectRegister(s.psgRegister)}saveState(){var s=super.saveState();return s.slotmask=this.slotmask,s.ppi_c=this.ppi_c,s.psgRegister=this.psg.currentRegister(),s}reset(){super.reset(),this.slotmask=0,this.ppi_c=0}resetInputs(){this.inputs.fill(0)}},h=`
import{c as C}from"./chunk-SBNWO7XU.js";import{K as x,d as U,e as Q}from"./chunk-4676AC7I.js";import{K as t,W as A,Z as H,l as E,m as O}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var n=H([[A.UP,0,1],[A.DOWN,0,2],[A.LEFT,0,4],[A.RIGHT,0,8],[A.A,0,16],[A.B,0,32],[A.P2_UP,1,1],[A.P2_DOWN,1,2],[A.P2_LEFT,1,4],[A.P2_RIGHT,1,8],[A.P2_A,1,16],[A.P2_B,1,32],[A.ANYKEY,2,0]]),a=0;var i=16,F=[A.VK_7,A.VK_6,A.VK_5,A.VK_4,A.VK_3,A.VK_2,A.VK_1,A.VK_0,A.VK_SEMICOLON,A.VK_CLOSE_BRACKET,A.VK_OPEN_BRACKET,A.VK_BACK_SLASH,A.VK_EQUALS,A.VK_MINUS,A.VK_9,A.VK_8,A.VK_B,A.VK_A,null,A.VK_SLASH,A.VK_PERIOD,A.VK_COMMA,A.VK_ACUTE,A.VK_QUOTE,A.VK_J,A.VK_I,A.VK_H,A.VK_G,A.VK_F,A.VK_E,A.VK_D,A.VK_C,A.VK_R,A.VK_Q,A.VK_P,A.VK_O,A.VK_N,A.VK_M,A.VK_L,A.VK_K,A.VK_Z,A.VK_Y,A.VK_X,A.VK_W,A.VK_V,A.VK_U,A.VK_T,A.VK_S,A.VK_F3,A.VK_F2,A.VK_F1,null,A.VK_CAPS_LOCK,null,A.VK_CONTROL,A.VK_SHIFT,A.VK_ENTER,null,A.VK_BACK_SPACE,null,A.VK_TAB,A.VK_ESCAPE,A.VK_F5,A.VK_F4,A.VK_RIGHT,A.VK_DOWN,A.VK_UP,A.VK_LEFT,A.VK_DELETE,A.VK_INSERT,A.VK_HOME,A.VK_SPACE,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],M=class extends C{constructor(){super();this.numVisibleScanlines=240;this.defaultROMSize=32768;this.ram=new Uint8Array(65536);this.slotmask=0;this.ppi_c=0;this.read=s=>{let e=s>>14<<1,D=this.slotmask>>e&3,g=this.slots[D];return g?g.read(s):0};this.write=(s,e)=>{let D=s>>14<<1,g=this.slotmask>>D&3,B=this.slots[g];B&&B.write(s,e)};this.init(this,this.newIOBus(),new Q(new U)),this.bios=new E().decode(O(atob(h))),this.bios[3541]=0,this.bios[3542]=0,this.bios[3543]=0,this.slots=[{read:s=>this.bios[s]|0,write:(s,e)=>{}},{read:s=>this.rom[s-16384]|0,write:(s,e)=>{}},{read:s=>this.rom[s-16384]|0,write:(s,e)=>{}},{read:s=>this.ram[s]|0,write:(s,e)=>{this.ram[s]=e}}]}loadBIOS(s){this.bios=s}getKeyboardMap(){return n}getKeyboardFunction(){return(s,e,D,g)=>{for(var B=F,T=0;T<B.length;T++)if(B[T]&&B[T].c==e){let R=T>>3,f=7-(T&7);g&1?this.inputs[i+R]|=1<<f:g&64&&(this.inputs[i+R]&=~(1<<f));break}}}newIOBus(){return{read:s=>{switch(s&=255,s){case 152:return this.vdp.readData();case 153:return this.vdp.readStatus();case 162:return this.psg.currentRegister()==14?~this.inputs[a]:this.psg.readData();case 168:return this.slotmask;case 169:return~this.inputs[i+(this.ppi_c&15)];case 170:return this.ppi_c}return 0},write:(s,e)=>{switch(s&=255,e&=255,s){case 152:this.vdp.writeData(e);break;case 153:this.vdp.writeAddress(e);break;case 168:this.slotmask=e;break;case 170:this.ppi_c=e;break;case 171:let D=e>>1&7;this.ppi_c=this.ppi_c&~(1<<D)|(e&1)<<D;break;case 160:this.psg.selectRegister(e);break;case 161:this.psg.setData(e);break;case 252:case 253:case 254:case 255:break}}}}vdpInterrupt(){this.probe.logInterrupt(255),this.cpu.interrupt(255)}loadState(s){super.loadState(s),this.slotmask=s.slotmask,this.ppi_c=s.ppi_c,this.psg.selectRegister(s.psgRegister)}saveState(){var s=super.saveState();return s.slotmask=this.slotmask,s.ppi_c=this.ppi_c,s.psgRegister=this.psg.currentRegister(),s}reset(){super.reset(),this.slotmask=0,this.ppi_c=0}resetInputs(){this.inputs.fill(0)}},h=`
TFpHAADAAAAAI8Sp+W4NAVo7UZPzwxINvxuYmMPtEADDvyMAw/+T4QAkAMMbEQDDNJPhIZPhc5Ph
JxEhAgAAAMM5EZOhk+HmGMNOEcNYEcMWAsMiAsMuAsNFAsNNAsNVAsNgAsNtAsOBAsOXAsOtAsPU
AgDDXhnDHgPDggPDwgPDBQTDQwTDjwTDtwTD5gTDGQXDbwXDggXDjAXDlwXDOhfDUhfDXBfDahHD
@@ -161,4 +161,4 @@ H5Mfkx+TH5Mfkx+TH5Mfkx+TH5Mfkx+TH5Mfkx+TH5Mfkx+TH5Mfkx+TH5Mfkx+TH5Mfkx+TH5Mf
kx+TH5Mfkx+TH5Mfkx+TH5Mfkx+TH5Mfkx+TH5Mfkx+TH5Mfkx+TH5Mfkx+TH5Mfkx+TH5Mfkx+T
H5Mfkx+TH5Mfkx+TH5Mfkx+TH5Mfkx+TH5Mfkx+TH5Mfkx+TH5Mfkx+TH5Mfkx+THpMc/w==
`;var o=[{id:"helloworld.asm",name:"Hello World (ASM)"},{id:"redbook_kbd.asm",name:"Redbook Keyboard Scanner (ASM)"},{id:"siegegame.c",name:"Siege Game"},{id:"eliza.c",name:"Eliza"},{id:"hello.wiz",name:"Hello (Wiz)"}],l=[{id:"text.c",name:"Text Mode"},{id:"hello.c",name:"Scrolling Text"},{id:"text32.c",name:"32-Column Color Text"},{id:"stars.c",name:"Scrolling Starfield"},{id:"cursorsmooth.c",name:"Moving Cursor"},{id:"simplemusic.c",name:"Simple Music"},{id:"musicplayer.c",name:"Multivoice Music"},{id:"mode2bitmap.c",name:"Mode 2 Bitmap"},{id:"mode2compressed.c",name:"Mode 2 Bitmap (LZG)"},{id:"lines.c",name:"Mode 2 Lines"},{id:"multicolor.c",name:"Multicolor Mode"},{id:"siegegame.c",name:"Siege Game"},{id:"shoot.c",name:"Solarian Game"},{id:"climber.c",name:"Climber Game"}],w=class extends x{constructor(){super(...arguments);this.getMemoryMap=function(){return{main:[{name:"BIOS",start:0,size:16384,type:"rom"},{name:"RAM",start:49152,size:12800,type:"ram"},{name:"Stack",start:61440,size:768,type:"ram"},{name:"BIOS Work RAM",start:62208,size:3328}]}}}newMachine(){return new M}getPresets(){return o}readAddress(s){return this.machine.read(s)}readVRAMAddress(s){return this.machine.readVRAMAddress(s)}},k=class extends w{getPresets(){return l}};t.msx=w;t["msx-libcv"]=k;
//# sourceMappingURL=msx-UK6GVTQF.js.map
//# sourceMappingURL=msx-NKKXFYQU.js.map
File renamed without changes.
@@ -1,2 +1,2 @@
import{K as u,c as o,r as m}from"./chunk-G4HBIXG4.js";import{K as f,W as t,X as c,Z as h,aa as a}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var _=h([[t.A,1,16],[t.LEFT,1,32],[t.RIGHT,1,64],[t.P2_A,2,16],[t.P2_LEFT,2,32],[t.P2_RIGHT,2,64],[t.SELECT,1,1],[t.START,1,4],[t.P2_START,1,2]]),p=256,w=4293848814,b=4278190080,i=class extends m{constructor(){super();this.cpuFrequency=1996800;this.canvasWidth=256;this.numTotalScanlines=262;this.numVisibleScanlines=224;this.cpuCyclesPerLine=Math.floor(1996800/(262*60));this.defaultROMSize=8192;this.rotate=-90;this.sampleRate=1;this.bitshift_offset=0;this.bitshift_register=0;this.cpu=new o;this.ram=new Uint8Array(8192);this.read=a([[0,8191,8191,e=>this.rom?this.rom[e]:0],[8192,16383,8191,e=>this.ram[e]]]);this.write=a([[8192,9215,1023,(e,s)=>{this.ram[e]=s}],[9216,16383,8191,(e,s)=>{this.ram[e]=s;for(var l=e-1024<<3,r=0;r<8;r++)this.pixels[l+r]=s&1<<r?w:b}]]);this.connectCPUMemoryBus(this),this.connectCPUIOBus(this.newIOBus()),this.handler=c(this.inputs,_)}newIOBus(){return{read:e=>{switch(e&=3,e){case 0:case 1:case 2:return this.inputs[e];case 3:return this.bitshift_register>>8-this.bitshift_offset&255}return 0},write:(e,s)=>{switch(e&=7,s&=255,e){case 2:this.bitshift_offset=s&7;break;case 3:case 5:break;case 4:this.bitshift_register=this.bitshift_register>>8|s<<8;break;case 6:this.watchdog_counter=p;break}}}}startScanline(){}drawScanline(){this.scanline==95?this.interrupt(207):this.scanline==223&&this.interrupt(215)}interrupt(e){this.probe.logInterrupt(e),this.cpu.interrupt(e)}advanceFrame(e){return this.watchdog_counter--<=0&&(console.log("WATCHDOG FIRED"),this.reset()),super.advanceFrame(e)}loadState(e){super.loadState(e),this.bitshift_register=e.bsr,this.bitshift_offset=e.bso,this.watchdog_counter=e.wdc}saveState(){var e=super.saveState();return e.bsr=this.bitshift_register,e.bso=this.bitshift_offset,e.wdc=this.watchdog_counter,e}reset(){super.reset(),this.watchdog_counter=p}};var S=[{id:"gfxtest.c",name:"Graphics Test"},{id:"shifter.c",name:"Sprite w/ Bit Shifter"},{id:"game2.c",name:"Cosmic Impalas"}],n=class extends u{constructor(){super(...arguments);this.getMemoryMap=function(){return{main:[{name:"Frame Buffer",start:9216,size:7168,type:"ram"}]}}}newMachine(){return new i}getPresets(){return S}readAddress(e){return this.machine.read(e)}showHelp(){return"https://8bitworkshop.com/docs/platforms/arcade/index.html#midway-8080"}};f.mw8080bw=n;
//# sourceMappingURL=mw8080bw-QCMPQDPN.js.map
import{K as u,c as o,r as m}from"./chunk-4676AC7I.js";import{K as f,W as t,X as c,Z as h,aa as a}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var _=h([[t.A,1,16],[t.LEFT,1,32],[t.RIGHT,1,64],[t.P2_A,2,16],[t.P2_LEFT,2,32],[t.P2_RIGHT,2,64],[t.SELECT,1,1],[t.START,1,4],[t.P2_START,1,2]]),p=256,w=4293848814,b=4278190080,i=class extends m{constructor(){super();this.cpuFrequency=1996800;this.canvasWidth=256;this.numTotalScanlines=262;this.numVisibleScanlines=224;this.cpuCyclesPerLine=Math.floor(1996800/(262*60));this.defaultROMSize=8192;this.rotate=-90;this.sampleRate=1;this.bitshift_offset=0;this.bitshift_register=0;this.cpu=new o;this.ram=new Uint8Array(8192);this.read=a([[0,8191,8191,e=>this.rom?this.rom[e]:0],[8192,16383,8191,e=>this.ram[e]]]);this.write=a([[8192,9215,1023,(e,s)=>{this.ram[e]=s}],[9216,16383,8191,(e,s)=>{this.ram[e]=s;for(var l=e-1024<<3,r=0;r<8;r++)this.pixels[l+r]=s&1<<r?w:b}]]);this.connectCPUMemoryBus(this),this.connectCPUIOBus(this.newIOBus()),this.handler=c(this.inputs,_)}newIOBus(){return{read:e=>{switch(e&=3,e){case 0:case 1:case 2:return this.inputs[e];case 3:return this.bitshift_register>>8-this.bitshift_offset&255}return 0},write:(e,s)=>{switch(e&=7,s&=255,e){case 2:this.bitshift_offset=s&7;break;case 3:case 5:break;case 4:this.bitshift_register=this.bitshift_register>>8|s<<8;break;case 6:this.watchdog_counter=p;break}}}}startScanline(){}drawScanline(){this.scanline==95?this.interrupt(207):this.scanline==223&&this.interrupt(215)}interrupt(e){this.probe.logInterrupt(e),this.cpu.interrupt(e)}advanceFrame(e){return this.watchdog_counter--<=0&&(console.log("WATCHDOG FIRED"),this.reset()),super.advanceFrame(e)}loadState(e){super.loadState(e),this.bitshift_register=e.bsr,this.bitshift_offset=e.bso,this.watchdog_counter=e.wdc}saveState(){var e=super.saveState();return e.bsr=this.bitshift_register,e.bso=this.bitshift_offset,e.wdc=this.watchdog_counter,e}reset(){super.reset(),this.watchdog_counter=p}};var S=[{id:"gfxtest.c",name:"Graphics Test"},{id:"shifter.c",name:"Sprite w/ Bit Shifter"},{id:"game2.c",name:"Cosmic Impalas"}],n=class extends u{constructor(){super(...arguments);this.getMemoryMap=function(){return{main:[{name:"Frame Buffer",start:9216,size:7168,type:"ram"}]}}}newMachine(){return new i}getPresets(){return S}readAddress(e){return this.machine.read(e)}showHelp(){return"https://8bitworkshop.com/docs/platforms/arcade/index.html#midway-8080"}};f.mw8080bw=n;
//# sourceMappingURL=mw8080bw-HHRCJYYN.js.map
File renamed without changes.
+2 -2
View File
@@ -1,4 +1,4 @@
import{b as Z}from"./chunk-JX2MTUGT.js";import{a as U}from"./chunk-ULIQADK2.js";import{a as Ft}from"./chunk-LNOKARBD.js";import{A as W,j as q,n as X,o as Y,x as O,y as H}from"./chunk-G4HBIXG4.js";import{H as L,K as I,P as T,T as V,U as B,W as m,Y as G,Z as w,g as D,n as v}from"./chunk-TYDI7JZQ.js";import{d as S}from"./chunk-KT7KMEQC.js";var F=S((wt,z)=>{"use strict";var d=function(){this.state=new Array(8);for(var t=0;t<this.state.length;t++)this.state[t]=64};d.BUTTON_A=0;d.BUTTON_B=1;d.BUTTON_SELECT=2;d.BUTTON_START=3;d.BUTTON_UP=4;d.BUTTON_DOWN=5;d.BUTTON_LEFT=6;d.BUTTON_RIGHT=7;d.prototype={buttonDown:function(t){this.state[t]=65},buttonUp:function(t){this.state[t]=64}};z.exports=d});var N=S((qt,K)=>{"use strict";K.exports={copyArrayElements:function(t,i,s,e,r){for(var a=0;a<r;++a)s[e+a]=t[i+a]},copyArray:function(t){return t.slice(0)},fromJSON:function(t,i){for(var s=0;s<t.JSON_PROPERTIES.length;s++){var e=t.JSON_PROPERTIES[s];t[e]!==null&&t[e].buffer&&t[e].set?t[e].set(i[e]):t[e]=i[e]}},toJSON:function(t){for(var i={},s=0;s<t.JSON_PROPERTIES.length;s++){var e=t.JSON_PROPERTIES[s];i[e]=t[e]}return i}}});var tt=S((Xt,$)=>{"use strict";var J=N(),Q=function(t){this.nes=t,this.mem=null,this.REG_ACC=null,this.REG_X=null,this.REG_Y=null,this.REG_SP=null,this.REG_PC=null,this.REG_PC_NEW=null,this.REG_STATUS=null,this.F_CARRY=null,this.F_DECIMAL=null,this.F_INTERRUPT=null,this.F_INTERRUPT_NEW=null,this.F_OVERFLOW=null,this.F_SIGN=null,this.F_ZERO=null,this.F_NOTUSED=null,this.F_NOTUSED_NEW=null,this.F_BRK=null,this.F_BRK_NEW=null,this.opdata=null,this.cyclesToHalt=null,this.crash=null,this.irqRequested=null,this.irqType=null,this.reset()};Q.prototype={IRQ_NORMAL:0,IRQ_NMI:1,IRQ_RESET:2,reset:function(){this.mem=new Uint8Array(65536);for(var t=0;t<8192;t++)this.mem[t]=255;for(var i=0;i<4;i++){var s=i*2048;this.mem[s+8]=247,this.mem[s+9]=239,this.mem[s+10]=223,this.mem[s+15]=191}for(var e=8193;e<this.mem.length;e++)this.mem[e]=0;this.REG_ACC=0,this.REG_X=0,this.REG_Y=0,this.REG_SP=511,this.REG_PC=32767,this.REG_PC_NEW=32767,this.REG_STATUS=40,this.setStatus(40),this.F_CARRY=0,this.F_DECIMAL=0,this.F_INTERRUPT=1,this.F_INTERRUPT_NEW=1,this.F_OVERFLOW=0,this.F_SIGN=0,this.F_ZERO=1,this.F_NOTUSED=1,this.F_NOTUSED_NEW=1,this.F_BRK=1,this.F_BRK_NEW=1,this.opdata=new j().opdata,this.cyclesToHalt=0,this.crash=!1,this.irqRequested=!1,this.irqType=null},emulate:function(){var t,i;if(this.irqRequested){switch(t=this.F_CARRY|(this.F_ZERO===0?1:0)<<1|this.F_INTERRUPT<<2|this.F_DECIMAL<<3|this.F_BRK<<4|this.F_NOTUSED<<5|this.F_OVERFLOW<<6|this.F_SIGN<<7,this.REG_PC_NEW=this.REG_PC,this.F_INTERRUPT_NEW=this.F_INTERRUPT,this.irqType){case 0:{if(this.F_INTERRUPT!==0)break;this.doIrq(t);break}case 1:{this.doNonMaskableInterrupt(t);break}case 2:{this.doResetInterrupt();break}}this.REG_PC=this.REG_PC_NEW,this.F_INTERRUPT=this.F_INTERRUPT_NEW,this.F_BRK=this.F_BRK_NEW,this.irqRequested=!1}var s=this.opdata[this.nes.mmap.load(this.REG_PC+1)],e=s>>24,r=0,a=s>>8&255,n=this.REG_PC;this.REG_PC+=s>>16&255;var h=0;switch(a){case 0:{h=this.load(n+2);break}case 1:{h=this.load(n+2),h<128?h+=this.REG_PC:h+=this.REG_PC-256;break}case 2:break;case 3:{h=this.load16bit(n+2);break}case 4:{h=this.REG_ACC;break}case 5:{h=this.REG_PC;break}case 6:{h=this.load(n+2)+this.REG_X&255;break}case 7:{h=this.load(n+2)+this.REG_Y&255;break}case 8:{h=this.load16bit(n+2),(h&65280)!==(h+this.REG_X&65280)&&(r=1),h+=this.REG_X;break}case 9:{h=this.load16bit(n+2),(h&65280)!==(h+this.REG_Y&65280)&&(r=1),h+=this.REG_Y;break}case 10:{h=this.load(n+2),(h&65280)!==(h+this.REG_X&65280)&&(r=1),h+=this.REG_X,h&=255,h=this.load16bit(h);break}case 11:{h=this.load16bit(this.load(n+2)),(h&65280)!==(h+this.REG_Y&65280)&&(r=1),h+=this.REG_Y;break}case 12:{h=this.load16bit(n+2),h<8191?h=this.mem[h]+(this.mem[h&65280|(h&255)+1&255]<<8):h=this.nes.mmap.load(h)+(this.nes.mmap.load(h&65280|(h&255)+1&255)<<8);break}}switch(h&=65535,s&255){case 0:{t=this.REG_ACC+this.load(h)+this.F_CARRY,((this.REG_ACC^this.load(h))&128)===0&&((this.REG_ACC^t)&128)!==0?this.F_OVERFLOW=1:this.F_OVERFLOW=0,this.F_CARRY=t>255?1:0,this.F_SIGN=t>>7&1,this.F_ZERO=t&255,this.REG_ACC=t&255,e+=r;break}case 1:{this.REG_ACC=this.REG_ACC&this.load(h),this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC,a!==11&&(e+=r);break}case 2:{a===4?(this.F_CARRY=this.REG_ACC>>7&1,this.REG_ACC=this.REG_ACC<<1&255,this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC):(t=this.load(h),this.F_CARRY=t>>7&1,t=t<<1&255,this.F_SIGN=t>>7&1,this.F_ZERO=t,this.write(h,t));break}case 3:{this.F_CARRY===0&&(e+=(n&65280)!==(h&65280)?2:1,this.REG_PC=h);break}case 4:{this.F_CARRY===1&&(e+=(n&65280)!==(h&65280)?2:1,this.REG_PC=h);break}case 5:{this.F_ZERO===0&&(e+=(n&65280)!==(h&65280)?2:1,this.REG_PC=h);break}case 6:{t=this.load(h),this.F_SIGN=t>>7&1,this.F_OVERFLOW=t>>6&1,t&=this.REG_ACC,this.F_ZERO=t;break}case 7:{this.F_SIGN===1&&(e++,this.REG_PC=h);break}case 8:{this.F_ZERO!==0&&(e+=(n&65280)!==(h&65280)?2:1,this.REG_PC=h);break}case 9:Line truncated
import{b as Z}from"./chunk-JX2MTUGT.js";import{a as U}from"./chunk-OJEFOAZC.js";import{a as Ft}from"./chunk-LNOKARBD.js";import{A as W,j as q,n as X,o as Y,x as O,y as H}from"./chunk-4676AC7I.js";import{H as L,K as I,P as T,T as V,U as B,W as m,Y as G,Z as w,g as D,n as v}from"./chunk-TYDI7JZQ.js";import{d as S}from"./chunk-KT7KMEQC.js";var F=S((wt,z)=>{"use strict";var d=function(){this.state=new Array(8);for(var t=0;t<this.state.length;t++)this.state[t]=64};d.BUTTON_A=0;d.BUTTON_B=1;d.BUTTON_SELECT=2;d.BUTTON_START=3;d.BUTTON_UP=4;d.BUTTON_DOWN=5;d.BUTTON_LEFT=6;d.BUTTON_RIGHT=7;d.prototype={buttonDown:function(t){this.state[t]=65},buttonUp:function(t){this.state[t]=64}};z.exports=d});var N=S((qt,K)=>{"use strict";K.exports={copyArrayElements:function(t,i,s,e,r){for(var a=0;a<r;++a)s[e+a]=t[i+a]},copyArray:function(t){return t.slice(0)},fromJSON:function(t,i){for(var s=0;s<t.JSON_PROPERTIES.length;s++){var e=t.JSON_PROPERTIES[s];t[e]!==null&&t[e].buffer&&t[e].set?t[e].set(i[e]):t[e]=i[e]}},toJSON:function(t){for(var i={},s=0;s<t.JSON_PROPERTIES.length;s++){var e=t.JSON_PROPERTIES[s];i[e]=t[e]}return i}}});var tt=S((Xt,$)=>{"use strict";var J=N(),Q=function(t){this.nes=t,this.mem=null,this.REG_ACC=null,this.REG_X=null,this.REG_Y=null,this.REG_SP=null,this.REG_PC=null,this.REG_PC_NEW=null,this.REG_STATUS=null,this.F_CARRY=null,this.F_DECIMAL=null,this.F_INTERRUPT=null,this.F_INTERRUPT_NEW=null,this.F_OVERFLOW=null,this.F_SIGN=null,this.F_ZERO=null,this.F_NOTUSED=null,this.F_NOTUSED_NEW=null,this.F_BRK=null,this.F_BRK_NEW=null,this.opdata=null,this.cyclesToHalt=null,this.crash=null,this.irqRequested=null,this.irqType=null,this.reset()};Q.prototype={IRQ_NORMAL:0,IRQ_NMI:1,IRQ_RESET:2,reset:function(){this.mem=new Uint8Array(65536);for(var t=0;t<8192;t++)this.mem[t]=255;for(var i=0;i<4;i++){var s=i*2048;this.mem[s+8]=247,this.mem[s+9]=239,this.mem[s+10]=223,this.mem[s+15]=191}for(var e=8193;e<this.mem.length;e++)this.mem[e]=0;this.REG_ACC=0,this.REG_X=0,this.REG_Y=0,this.REG_SP=511,this.REG_PC=32767,this.REG_PC_NEW=32767,this.REG_STATUS=40,this.setStatus(40),this.F_CARRY=0,this.F_DECIMAL=0,this.F_INTERRUPT=1,this.F_INTERRUPT_NEW=1,this.F_OVERFLOW=0,this.F_SIGN=0,this.F_ZERO=1,this.F_NOTUSED=1,this.F_NOTUSED_NEW=1,this.F_BRK=1,this.F_BRK_NEW=1,this.opdata=new j().opdata,this.cyclesToHalt=0,this.crash=!1,this.irqRequested=!1,this.irqType=null},emulate:function(){var t,i;if(this.irqRequested){switch(t=this.F_CARRY|(this.F_ZERO===0?1:0)<<1|this.F_INTERRUPT<<2|this.F_DECIMAL<<3|this.F_BRK<<4|this.F_NOTUSED<<5|this.F_OVERFLOW<<6|this.F_SIGN<<7,this.REG_PC_NEW=this.REG_PC,this.F_INTERRUPT_NEW=this.F_INTERRUPT,this.irqType){case 0:{if(this.F_INTERRUPT!==0)break;this.doIrq(t);break}case 1:{this.doNonMaskableInterrupt(t);break}case 2:{this.doResetInterrupt();break}}this.REG_PC=this.REG_PC_NEW,this.F_INTERRUPT=this.F_INTERRUPT_NEW,this.F_BRK=this.F_BRK_NEW,this.irqRequested=!1}var s=this.opdata[this.nes.mmap.load(this.REG_PC+1)],e=s>>24,r=0,a=s>>8&255,n=this.REG_PC;this.REG_PC+=s>>16&255;var h=0;switch(a){case 0:{h=this.load(n+2);break}case 1:{h=this.load(n+2),h<128?h+=this.REG_PC:h+=this.REG_PC-256;break}case 2:break;case 3:{h=this.load16bit(n+2);break}case 4:{h=this.REG_ACC;break}case 5:{h=this.REG_PC;break}case 6:{h=this.load(n+2)+this.REG_X&255;break}case 7:{h=this.load(n+2)+this.REG_Y&255;break}case 8:{h=this.load16bit(n+2),(h&65280)!==(h+this.REG_X&65280)&&(r=1),h+=this.REG_X;break}case 9:{h=this.load16bit(n+2),(h&65280)!==(h+this.REG_Y&65280)&&(r=1),h+=this.REG_Y;break}case 10:{h=this.load(n+2),(h&65280)!==(h+this.REG_X&65280)&&(r=1),h+=this.REG_X,h&=255,h=this.load16bit(h);break}case 11:{h=this.load16bit(this.load(n+2)),(h&65280)!==(h+this.REG_Y&65280)&&(r=1),h+=this.REG_Y;break}case 12:{h=this.load16bit(n+2),h<8191?h=this.mem[h]+(this.mem[h&65280|(h&255)+1&255]<<8):h=this.nes.mmap.load(h)+(this.nes.mmap.load(h&65280|(h&255)+1&255)<<8);break}}switch(h&=65535,s&255){case 0:{t=this.REG_ACC+this.load(h)+this.F_CARRY,((this.REG_ACC^this.load(h))&128)===0&&((this.REG_ACC^t)&128)!==0?this.F_OVERFLOW=1:this.F_OVERFLOW=0,this.F_CARRY=t>255?1:0,this.F_SIGN=t>>7&1,this.F_ZERO=t&255,this.REG_ACC=t&255,e+=r;break}case 1:{this.REG_ACC=this.REG_ACC&this.load(h),this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC,a!==11&&(e+=r);break}case 2:{a===4?(this.F_CARRY=this.REG_ACC>>7&1,this.REG_ACC=this.REG_ACC<<1&255,this.F_SIGN=this.REG_ACC>>7&1,this.F_ZERO=this.REG_ACC):(t=this.load(h),this.F_CARRY=t>>7&1,t=t<<1&255,this.F_SIGN=t>>7&1,this.F_ZERO=t,this.write(h,t));break}case 3:{this.F_CARRY===0&&(e+=(n&65280)!==(h&65280)?2:1,this.REG_PC=h);break}case 4:{this.F_CARRY===1&&(e+=(n&65280)!==(h&65280)?2:1,this.REG_PC=h);break}case 5:{this.F_ZERO===0&&(e+=(n&65280)!==(h&65280)?2:1,this.REG_PC=h);break}case 6:{t=this.load(h),this.F_SIGN=t>>7&1,this.F_OVERFLOW=t>>6&1,t&=this.REG_ACC,this.F_ZERO=t;break}case 7:{this.F_SIGN===1&&(e++,this.REG_PC=h);break}case 8:{this.F_ZERO!==0&&(e+=(n&65280)!==(h&65280)?2:1,this.REG_PC=h);break}case 9:Line truncated
`)}var l=e[8194];r+=`
Status `,r+=l&128?"VBLANK ":"- ",r+=l&64?"SPRITE0HIT ":"- ",r+=`
`,s.f_color&&(r+=" Tint "+(s.f_color&1?"RED ":"")+(s.f_color&2?"BLUE ":"")+(s.f_color&4?"GREEN ":"")+`
@@ -23,4 +23,4 @@ IRQ Counter: `+s.irqCounter,r+=`
CHR Select: `+s.chrAddressSelect),r+=`
`,r}startProbing(){var s=new X(this);return this.connectProbe(s),s}stopProbing(){this.connectProbe(null)}connectProbe(s){this.probe=s||this.nullProbe}showHelp(){return"https://8bitworkshop.com/docs/platforms/nes/"}getDebugSymbolFile(){var s=this.debugSymbols.addr2symbol,e="";for(let[r,a]of Object.entries(s)){let n=Number(r),h;n<8192?(n=n%2048,h="R"):n<24576?h="G":n<32768?(n=n-24576,h="S"):(n=n-32768,h="P");let l=n.toString(16).padStart(4,"0").toUpperCase();a[0]>="0"&&a[0]<="9"&&(a="L"+a),a=L(a,".","_"),e+=`${h}:${l}:${a}
`}return{extension:".mlb",blob:new Blob([e],{type:"text/plain"})}}},k=class extends U{constructor(){super(...arguments);this.getToolForFilename=O;this.getOpcodeMetadata=W}start(){}loadROM(s,e){if(!this.started)this.startModule(this.mainElement,{jsfile:"mame8bitws.js",driver:"nes",width:256,height:240,romfn:"/emulator/cart.nes",romdata:new Uint8Array(e),preInit:function(n){}});else{var r=e[4]*16384,a=e[5]*8192;this.loadROMFile(e),this.loadRegion(":nes_slot:cart:prg_rom",e.slice(16,16+r)),this.loadRegion(":nes_slot:cart:chr_rom",e.slice(16+r,16+r+a))}}getPresets(){return Tt}getDefaultExtensions(){return[".c",".cpp",".acme",".xa",".ca65",".dasm",".ecs",".wiz"]}};I.nes=E;I["nes-asm"]=E;I["nes.mame"]=k;
//# sourceMappingURL=nes-BNSHNURM.js.map
//# sourceMappingURL=nes-UT72WS3X.js.map
File renamed without changes.
@@ -1,2 +1,2 @@
import{K as B,c as w,r as V}from"./chunk-G4HBIXG4.js";import{$ as E,K as R,T as M,W as x,X as P,Z as U}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var D=U([[x.UP,0,1],[x.LEFT,0,2],[x.RIGHT,0,4],[x.DOWN,0,8],[x.VK_5,0,32],[x.VK_6,0,64],[x.A,0,128],[x.START,1,32],[x.VK_2,1,64]]),l=224,p=288,v=class{constructor(n,r,t,e){this.rom=n;this.vram=r;this.cram=t;this.ram=e;this.tiles=new Uint8Array(256*64);this.sprites=new Uint8Array(64*256);this.colors=new Uint32Array(32);this.paletteRom=new Uint8Array(256);this.spritePos=new Uint8Array(16);this.rebuild()}rebuild(){for(var n=0;n<32;n++){var r=this.rom[24576+n],t=(r>>0&1)*33+(r>>1&1)*71+(r>>2&1)*151,e=(r>>3&1)*33+(r>>4&1)*71+(r>>5&1)*151,i=(r>>6&1)*81+(r>>7&1)*174;this.colors[n]=4278190080|i<<16|e<<8|t}this.paletteRom.set(this.rom.subarray(24832,25088));for(var a=this.rom.subarray(16384,20480),s=0;s<256;s++){var c=this.tiles.subarray(s*64,s*64+64),o=a.subarray(s*16,s*16+16);this.decodeStrip(o,0,c,0,4,8),this.decodeStrip(o,8,c,0,0,8)}for(var h=this.rom.subarray(20480,24576),u=0;u<64;u++){var f=this.sprites.subarray(u*256,u*256+256),m=h.subarray(u*64,u*64+64);this.decodeStrip(m,0,f,8,12,16),this.decodeStrip(m,8,f,8,0,16),this.decodeStrip(m,16,f,8,4,16),this.decodeStrip(m,24,f,8,8,16),this.decodeStrip(m,32,f,0,12,16),this.decodeStrip(m,40,f,0,0,16),this.decodeStrip(m,48,f,0,4,16),this.decodeStrip(m,56,f,0,8,16)}}decodeStrip(n,r,t,e,i,a){for(var s=i*a+e,c=0;c<8;c++)for(var o=n[r+c],h=0;h<4;h++){var u=(3-h)*a+(7-c),f=o>>h&1|(o>>h+4&1)<<1;t[s+u]=f}}getPalette(n,r){n&=63;var t=n*4;r[0]=this.paletteRom[t],r[1]=this.paletteRom[t+1],r[2]=this.paletteRom[t+2],r[3]=this.paletteRom[t+3]}drawTile(n,r,t,e,i){if(!(e<0||e>=l))for(var a=this.tiles.subarray(r*64,r*64+64),s=0;s<64;s++){var c=s&7,o=s>>3,h=e+c;if(!(h<0||h>=l)){var u=t[a[s]&3];n[(i+o)*l+h]=this.colors[u&31]}}}drawSprite(n,r,t,e,i,a,s){if(!(e<=-16||e>l))for(var c=this.sprites.subarray(r*256,r*256+256),o=0;o<256;o++){var h=o&15,u=o>>4,f=c[o]&3;if(t[f]!==0){var m=a?15-h:h,T=s?15-u:u,y=e+m,g=i+T;y<0||y>=l||g<0||g>=p||(n[g*l+y]=this.colors[t[f]&31])}}}drawFrame(n){n.fill(4278190080);for(var r=new Uint8Array(4),t=0,e=34;e<36;e++)for(var i=31;i>=0;i--)this.getPalette(this.cram[t],r),this.drawTile(n,this.vram[t],r,(i-2)*8,e*8),t++;t=64;for(var i=29;i>=2;i--)for(var e=2;e<=33;e++)this.getPalette(this.cram[t],r),this.drawTile(n,this.vram[t],r,(i-2)*8,e*8),t++;t=960;for(var e=0;e<2;e++)for(var i=31;i>=0;i--)this.getPalette(this.cram[t],r),this.drawTile(n,this.vram[t],r,(i-2)*8,e*8),t++;for(var a=7;a>=0;a--){var s=this.ram[1008+a*2],c=this.ram[1008+a*2+1],o=l-this.spritePos[a*2]+15,h=p-this.spritePos[a*2+1]-16;this.getPalette(c,r),this.drawSprite(n,s>>2,r,o,h,!!(s&2),!!(s&1))}}},O=18432e3,C=O/6,k=O/3/192/2,F=C/k,A=256,d=class d extends V{constructor(){super();this.cpuFrequency=C;this.canvasWidth=l;this.numTotalScanlines=p;this.numVisibleScanlines=p;this.defaultROMSize=32768;this.cpuCyclesPerLine=F|0;this.sampleRate=60*264;this.rotate=0;this.cpu=new w;this.ram=new Uint8Array(1024);this.vram=new Uint8Array(1024);this.cram=new Uint8Array(1024);this.oram=new Uint8Array(256);this.interruptEnabled=0;this.interruptVector=255;this.pendingVBlankIsr=!1;this.watchdog_counter=A;this.flipScreen=0;this.soundEnabled=0;this.soundRegs=new Uint8Array(32);this.soundAcc=new Uint32Array(3);this.waveforms=d.WAVEFORMS;this.keyMap=D;this.frameDrawn=!1;this.readByte=r=>{if(r&=65535,r<16384)return this.rom[r];if(r<17408)return this.vram[r-16384];if(r<18432)return this.cram[r-17408];if(r<19456)return 191;if(r<20480)return this.ram[r-19456];if(r<20736){var t=r&192;return t===0?~this.inputs[0]&255|16:t===64?~this.inputs[1]&111|144:t===128?201:255}return r>=32768?this.rom[r&16383]:255};this.writeByte=(r,t)=>{if(r&=65535,!(r<16384)){if(r<17408){this.vram[r-16384]=t;return}if(r<18432){this.cram[r-17408]=t;return}if(!(r<19456)){if(r<20480){this.ram[r-19456]=t;return}if((r&65528)===20480){var e=r&7;e===0&&(this.interruptEnabled=t&1),e===1&&(this.soundEnabled=t&1),e===3&&(this.flipScreen=t&1)}else r>=20544&&r<=20575?this.soundRegs[r-20544]=t&15:(r&65520)===20576?this.gfx.spritePos[r&15]=t:(r&65472)===20672&&(this.watchdog_counter=A)}}};this.cpu.connectIOBus({read:r=>255,write:(r,t)=>{(r&255)===0&&(this.interruptVector=t&255)}}),this.cpu.connectMemoryBus({read:this.readByte,write:this.writeByte}),this.cpu.retryInterrupts=!0,this.rom=new Uint8Array(this.defaultROMSize),this.gfx=new v(this.rom,this.vram,this.cram,this.ram),this.inputs.fill(0),this.handler=P(this.inputs,this.keyMap)}static buildWaveforms(){for(var r=new Uint8Array(256),t=0;t<32;t++){var e=t/32;r[0+t]=8+Math.sin(e*Math.PI*2)*7.5|0,r[32+t]=t<16?15:0,r[64+t]=t<16?t:31-t,r[96+t]=t>>1,r[128+t]=t<8?15:t<16?0:t<24?10:0,r[160+t]=8+Math.sin(e*Math.PI*4)*7.5|0,r[192+t]=t&1?12:2,r[224+t]=t*3&15}return r}reset(){super.reset(),this.cpu.reset(),this.watchdog_counter=A,this.interruptEnabled=0,this.interruptVector=255,this.pendingVBlankIsr=!1,this.soundEnabled=0,this.soundRegs.fill(0),this.soundAcc.fill(0),this.Line truncated
//# sourceMappingURL=pacman-3RXFCHSM.js.map
import{K as B,c as w,r as V}from"./chunk-4676AC7I.js";import{$ as E,K as R,T as M,W as x,X as P,Z as U}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var D=U([[x.UP,0,1],[x.LEFT,0,2],[x.RIGHT,0,4],[x.DOWN,0,8],[x.VK_5,0,32],[x.VK_6,0,64],[x.A,0,128],[x.START,1,32],[x.VK_2,1,64]]),l=224,p=288,v=class{constructor(n,r,t,e){this.rom=n;this.vram=r;this.cram=t;this.ram=e;this.tiles=new Uint8Array(256*64);this.sprites=new Uint8Array(64*256);this.colors=new Uint32Array(32);this.paletteRom=new Uint8Array(256);this.spritePos=new Uint8Array(16);this.rebuild()}rebuild(){for(var n=0;n<32;n++){var r=this.rom[24576+n],t=(r>>0&1)*33+(r>>1&1)*71+(r>>2&1)*151,e=(r>>3&1)*33+(r>>4&1)*71+(r>>5&1)*151,i=(r>>6&1)*81+(r>>7&1)*174;this.colors[n]=4278190080|i<<16|e<<8|t}this.paletteRom.set(this.rom.subarray(24832,25088));for(var a=this.rom.subarray(16384,20480),s=0;s<256;s++){var c=this.tiles.subarray(s*64,s*64+64),o=a.subarray(s*16,s*16+16);this.decodeStrip(o,0,c,0,4,8),this.decodeStrip(o,8,c,0,0,8)}for(var h=this.rom.subarray(20480,24576),u=0;u<64;u++){var f=this.sprites.subarray(u*256,u*256+256),m=h.subarray(u*64,u*64+64);this.decodeStrip(m,0,f,8,12,16),this.decodeStrip(m,8,f,8,0,16),this.decodeStrip(m,16,f,8,4,16),this.decodeStrip(m,24,f,8,8,16),this.decodeStrip(m,32,f,0,12,16),this.decodeStrip(m,40,f,0,0,16),this.decodeStrip(m,48,f,0,4,16),this.decodeStrip(m,56,f,0,8,16)}}decodeStrip(n,r,t,e,i,a){for(var s=i*a+e,c=0;c<8;c++)for(var o=n[r+c],h=0;h<4;h++){var u=(3-h)*a+(7-c),f=o>>h&1|(o>>h+4&1)<<1;t[s+u]=f}}getPalette(n,r){n&=63;var t=n*4;r[0]=this.paletteRom[t],r[1]=this.paletteRom[t+1],r[2]=this.paletteRom[t+2],r[3]=this.paletteRom[t+3]}drawTile(n,r,t,e,i){if(!(e<0||e>=l))for(var a=this.tiles.subarray(r*64,r*64+64),s=0;s<64;s++){var c=s&7,o=s>>3,h=e+c;if(!(h<0||h>=l)){var u=t[a[s]&3];n[(i+o)*l+h]=this.colors[u&31]}}}drawSprite(n,r,t,e,i,a,s){if(!(e<=-16||e>l))for(var c=this.sprites.subarray(r*256,r*256+256),o=0;o<256;o++){var h=o&15,u=o>>4,f=c[o]&3;if(t[f]!==0){var m=a?15-h:h,T=s?15-u:u,y=e+m,g=i+T;y<0||y>=l||g<0||g>=p||(n[g*l+y]=this.colors[t[f]&31])}}}drawFrame(n){n.fill(4278190080);for(var r=new Uint8Array(4),t=0,e=34;e<36;e++)for(var i=31;i>=0;i--)this.getPalette(this.cram[t],r),this.drawTile(n,this.vram[t],r,(i-2)*8,e*8),t++;t=64;for(var i=29;i>=2;i--)for(var e=2;e<=33;e++)this.getPalette(this.cram[t],r),this.drawTile(n,this.vram[t],r,(i-2)*8,e*8),t++;t=960;for(var e=0;e<2;e++)for(var i=31;i>=0;i--)this.getPalette(this.cram[t],r),this.drawTile(n,this.vram[t],r,(i-2)*8,e*8),t++;for(var a=7;a>=0;a--){var s=this.ram[1008+a*2],c=this.ram[1008+a*2+1],o=l-this.spritePos[a*2]+15,h=p-this.spritePos[a*2+1]-16;this.getPalette(c,r),this.drawSprite(n,s>>2,r,o,h,!!(s&2),!!(s&1))}}},O=18432e3,C=O/6,k=O/3/192/2,F=C/k,A=256,d=class d extends V{constructor(){super();this.cpuFrequency=C;this.canvasWidth=l;this.numTotalScanlines=p;this.numVisibleScanlines=p;this.defaultROMSize=32768;this.cpuCyclesPerLine=F|0;this.sampleRate=60*264;this.rotate=0;this.cpu=new w;this.ram=new Uint8Array(1024);this.vram=new Uint8Array(1024);this.cram=new Uint8Array(1024);this.oram=new Uint8Array(256);this.interruptEnabled=0;this.interruptVector=255;this.pendingVBlankIsr=!1;this.watchdog_counter=A;this.flipScreen=0;this.soundEnabled=0;this.soundRegs=new Uint8Array(32);this.soundAcc=new Uint32Array(3);this.waveforms=d.WAVEFORMS;this.keyMap=D;this.frameDrawn=!1;this.readByte=r=>{if(r&=65535,r<16384)return this.rom[r];if(r<17408)return this.vram[r-16384];if(r<18432)return this.cram[r-17408];if(r<19456)return 191;if(r<20480)return this.ram[r-19456];if(r<20736){var t=r&192;return t===0?~this.inputs[0]&255|16:t===64?~this.inputs[1]&111|144:t===128?201:255}return r>=32768?this.rom[r&16383]:255};this.writeByte=(r,t)=>{if(r&=65535,!(r<16384)){if(r<17408){this.vram[r-16384]=t;return}if(r<18432){this.cram[r-17408]=t;return}if(!(r<19456)){if(r<20480){this.ram[r-19456]=t;return}if((r&65528)===20480){var e=r&7;e===0&&(this.interruptEnabled=t&1),e===1&&(this.soundEnabled=t&1),e===3&&(this.flipScreen=t&1)}else r>=20544&&r<=20575?this.soundRegs[r-20544]=t&15:(r&65520)===20576?this.gfx.spritePos[r&15]=t:(r&65472)===20672&&(this.watchdog_counter=A)}}};this.cpu.connectIOBus({read:r=>255,write:(r,t)=>{(r&255)===0&&(this.interruptVector=t&255)}}),this.cpu.connectMemoryBus({read:this.readByte,write:this.writeByte}),this.cpu.retryInterrupts=!0,this.rom=new Uint8Array(this.defaultROMSize),this.gfx=new v(this.rom,this.vram,this.cram,this.ram),this.inputs.fill(0),this.handler=P(this.inputs,this.keyMap)}static buildWaveforms(){for(var r=new Uint8Array(256),t=0;t<32;t++){var e=t/32;r[0+t]=8+Math.sin(e*Math.PI*2)*7.5|0,r[32+t]=t<16?15:0,r[64+t]=t<16?t:31-t,r[96+t]=t>>1,r[128+t]=t<8?15:t<16?0:t<24?10:0,r[160+t]=8+Math.sin(e*Math.PI*4)*7.5|0,r[192+t]=t&1?12:2,r[224+t]=t*3&15}return r}reset(){super.reset(),this.cpu.reset(),this.watchdog_counter=A,this.interruptEnabled=0,this.interruptVector=255,this.pendingVBlankIsr=!1,this.soundEnabled=0,this.soundRegs.fill(0),this.soundAcc.fill(0),this.Line truncated
//# sourceMappingURL=pacman-I4TJXJ53.js.map
File renamed without changes.
+2 -2
View File
@@ -1,2 +1,2 @@
import{x as y}from"./chunk-G4HBIXG4.js";import{K as m,P as G,W as u}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var M=[{id:"gfxtest.c",name:"Graphics Test (tiles/sprites)"},{id:"perftest.c",name:"Graphics Pipeline Benchmark"},{id:"solarian.c",name:"Solarian"},{id:"chase.c",name:"Chase"},{id:"test_conio.c",name:"Hello World (conio)"},{id:"siegegame.c",name:"Siege Game (conio)"},{id:"hello.wiz",name:"Hello World (Wiz)"}],V=class{constructor(t){this.mainElement=t}start(){this.pce=new R,this.video=new G(this.mainElement,684,262,{overscan:!0,aspect:4/3}),this.video.create(),this.pce.SetCanvas(this.video.canvas)}reset(){this.pce.Reset()}isRunning(){return this.pce.TimerID!=null}pause(){this.pce.Pause()}resume(){this.pce.CreateAudioContext(),this.pce.Start()}getPresets(){return M}loadROM(t,e){this.pce.Pause(),this.pce.Init(),this.pce.SetROM(e)}getPlatformName(){return"PC Engine"}getToolForFilename(t){return y(t)}getDefaultExtensions(){return[".c",".cpp",".acme",".xa",".ca65",".dasm",".ecs",".wiz"]}showHelp(){return"https://8bitworkshop.com/docs/platforms/pce/"}readAddress(t){return this.pce.Get(t)}writeAddress(t,e){this.pce.Set(t,e)}readVRAMAddress(t){return this.pce.VDC[0].VRAM[t]}};m.pce=V;var R=class{constructor(){this.MainCanvas=null;this.Ctx=null;this.ImageData=null;this.MapperBase=class{constructor(t,e){this.ROM=t,this.Core=e}Init(){}Read(t){return 255}Write(t,e){}};this.VDCSelect=0;this.ScreenWidthMAX=0;this.ScreenHeightMAX=0;this.SuperGrafx=!1,this.CountryTypePCE=64,this.CountryTypeTG16=0,this.CountryType=this.CountryTypePCE,this.GamePadButton6=!1,this.MultiTap=!1,this.EtcConstruct(),this.CPUConstruct(),this.StorageConstruct(),this.VCEConstruct(),this.VPCConstruct(),this.VDCConstruct(),this.SoundConstruct(),this.PSGConstruct(),this.TimerConstruct(),this.JoystickConstruct()}EtcConstruct(){this.TimerID=null,this.MainCanvas=null,this.Ctx=null,this.ImageData=null}UpdateAnimationFrame(){this.TimerID=window.requestAnimationFrame(this.UpdateAnimationFrame.bind(this)),this.Run()}CancelAnimationFrame(){window.cancelAnimationFrame(this.TimerID),this.TimerID=null}Pause(){this.TimerID!=null&&(this.JoystickEventRelease(),this.CancelAnimationFrame())}Start(){this.TimerID==null&&(this.JoystickEventInit(),this.UpdateAnimationFrame())}Run(){for(this.CheckGamePad(),this.DrawFlag=!1;!this.DrawFlag;)this.CPURun(),this.VDCRun(),this.TimerRun(),this.PSGRun()}Reset(){this.StorageReset(),this.Mapper.Init(),this.CPUInit(),this.VCEInit(),this.VPCInit(),this.VDCInit(),this.TimerInit(),this.JoystickInit(),this.PSGInit(),this.CPUReset()}Init(){this.StorageInit(),this.CPUInit(),this.VCEInit(),this.VPCInit(),this.VDCInit(),this.TimerInit(),this.JoystickInit(),this.PSGInit()}SetCanvas(t){if(this.MainCanvas=t,!this.MainCanvas.getContext)return!1;this.Ctx=this.MainCanvas.getContext("2d"),this.ImageData=this.Ctx.createImageData(this.MainCanvas.width,this.MainCanvas.height);for(let e=0;e<this.MainCanvas.width*this.MainCanvas.height*4;e+=4)this.ImageData.data[e]=0,this.ImageData.data[e+1]=0,this.ImageData.data[e+2]=0,this.ImageData.data[e+3]=255;return this.Ctx.putImageData(this.ImageData,0,0),!0}CPUConstruct(){this.OpCycles=[8,7,3,4,6,4,6,7,3,2,2,2,7,5,7,6,2,7,7,4,6,4,6,7,2,5,2,2,7,5,7,6,7,7,3,4,4,4,6,7,3,2,2,2,5,5,7,6,2,7,7,2,4,4,6,7,2,5,2,2,5,5,7,6,7,7,3,4,8,4,6,7,3,2,2,2,4,5,7,6,2,7,7,5,2,4,6,7,2,5,3,2,2,5,7,6,7,7,2,2,4,4,6,7,3,2,2,2,7,5,7,6,2,7,7,0,4,4,6,7,2,5,3,2,7,5,7,6,4,7,2,7,4,4,4,7,2,2,2,2,5,5,5,6,2,7,7,8,4,4,4,7,2,5,2,2,5,5,5,6,2,7,2,7,4,4,4,7,2,2,2,2,5,5,5,6,2,7,7,8,4,4,4,7,2,5,2,2,5,5,5,6,2,7,2,0,4,4,6,7,2,2,2,2,5,5,7,6,2,7,7,0,2,4,6,7,2,5,3,2,2,5,7,6,2,7,2,0,4,4,6,7,2,2,2,2,5,5,7,6,2,7,7,0,2,4,6,7,2,5,3,2,2,5,7,6],this.OpBytes=[0,2,1,2,2,2,2,2,1,2,1,1,3,3,3,0,0,2,2,2,2,2,2,2,1,3,1,1,3,3,3,0,0,2,1,2,2,2,2,2,1,2,1,1,3,3,3,0,0,2,2,1,2,2,2,2,1,3,1,1,3,3,3,0,0,2,1,2,0,2,2,2,1,2,1,1,0,3,3,0,0,2,2,2,1,2,2,2,1,3,1,1,1,3,3,0,0,2,1,1,2,2,2,2,1,2,1,1,0,3,3,0,0,2,2,0,2,2,2,2,1,3,1,1,0,3,3,0,0,2,1,3,2,2,2,2,1,2,1,1,3,3,3,0,0,2,2,4,2,2,2,2,1,3,1,1,3,3,3,0,2,2,2,3,2,2,2,2,1,2,1,1,3,3,3,0,0,2,2,4,2,2,2,2,1,3,1,1,3,3,3,0,2,2,1,0,2,2,2,2,1,2,1,1,3,3,3,0,0,2,2,0,1,2,2,2,1,3,1,1,1,3,3,0,2,2,1,0,2,2,2,2,1,2,1,1,3,3,3,0,0,2,2,0,1,2,2,2,1,3,1,1,1,3,3,0],this.A=0,this.X=0,this.Y=0,this.PC=0,this.S=0,this.P=0,this.NZCacheTable=new Uint8Array(256),this.NZCacheTable=this.NZCacheTable.map((t,e)=>e&128),this.NZCacheTable[0]=2,this.NFlag=128,this.VFlag=64,this.TFlag=32,this.BFlag=16,this.DFlag=8,this.IFlag=4,this.ZFlag=2,this.CFlag=1,this.TIQFlag=4,this.IRQ1Flag=2,this.IRQ2Flag=1,this.ProgressClock=0,this.CPUBaseClock=0,this.BaseClock1=12,this.BaseClock3=6,this.BaseClock5=4,this.BaseClock7=3,this.BaseClock10=2,this.TransferSrc=0,this.TransferDist=0,this.TransferLen=0,this.TransferAlt=0}CPUReset(){this.TransferSrc=0,this.TransferDist=0,this.TransferLen=0,this.TransferAlt=0,this.CPUBaseClock=this.BaseClock1,this.SetIFlag(),this.PC=this.Get16(65534)}CPUInit(){this.A=0,this.X=0,this.Y=0,this.PC=0,this.S=0,this.P=0,this.ProgressClock=0,this.CPUBaseCloLine truncated
//# sourceMappingURL=pce-FMJOGL6Z.js.map
import{x as y}from"./chunk-4676AC7I.js";import{K as m,P as G,W as u}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var M=[{id:"gfxtest.c",name:"Graphics Test (tiles/sprites)"},{id:"perftest.c",name:"Graphics Pipeline Benchmark"},{id:"solarian.c",name:"Solarian"},{id:"chase.c",name:"Chase"},{id:"test_conio.c",name:"Hello World (conio)"},{id:"siegegame.c",name:"Siege Game (conio)"},{id:"hello.wiz",name:"Hello World (Wiz)"}],V=class{constructor(t){this.mainElement=t}start(){this.pce=new R,this.video=new G(this.mainElement,684,262,{overscan:!0,aspect:4/3}),this.video.create(),this.pce.SetCanvas(this.video.canvas)}reset(){this.pce.Reset()}isRunning(){return this.pce.TimerID!=null}pause(){this.pce.Pause()}resume(){this.pce.CreateAudioContext(),this.pce.Start()}getPresets(){return M}loadROM(t,e){this.pce.Pause(),this.pce.Init(),this.pce.SetROM(e)}getPlatformName(){return"PC Engine"}getToolForFilename(t){return y(t)}getDefaultExtensions(){return[".c",".cpp",".acme",".xa",".ca65",".dasm",".ecs",".wiz"]}showHelp(){return"https://8bitworkshop.com/docs/platforms/pce/"}readAddress(t){return this.pce.Get(t)}writeAddress(t,e){this.pce.Set(t,e)}readVRAMAddress(t){return this.pce.VDC[0].VRAM[t]}};m.pce=V;var R=class{constructor(){this.MainCanvas=null;this.Ctx=null;this.ImageData=null;this.MapperBase=class{constructor(t,e){this.ROM=t,this.Core=e}Init(){}Read(t){return 255}Write(t,e){}};this.VDCSelect=0;this.ScreenWidthMAX=0;this.ScreenHeightMAX=0;this.SuperGrafx=!1,this.CountryTypePCE=64,this.CountryTypeTG16=0,this.CountryType=this.CountryTypePCE,this.GamePadButton6=!1,this.MultiTap=!1,this.EtcConstruct(),this.CPUConstruct(),this.StorageConstruct(),this.VCEConstruct(),this.VPCConstruct(),this.VDCConstruct(),this.SoundConstruct(),this.PSGConstruct(),this.TimerConstruct(),this.JoystickConstruct()}EtcConstruct(){this.TimerID=null,this.MainCanvas=null,this.Ctx=null,this.ImageData=null}UpdateAnimationFrame(){this.TimerID=window.requestAnimationFrame(this.UpdateAnimationFrame.bind(this)),this.Run()}CancelAnimationFrame(){window.cancelAnimationFrame(this.TimerID),this.TimerID=null}Pause(){this.TimerID!=null&&(this.JoystickEventRelease(),this.CancelAnimationFrame())}Start(){this.TimerID==null&&(this.JoystickEventInit(),this.UpdateAnimationFrame())}Run(){for(this.CheckGamePad(),this.DrawFlag=!1;!this.DrawFlag;)this.CPURun(),this.VDCRun(),this.TimerRun(),this.PSGRun()}Reset(){this.StorageReset(),this.Mapper.Init(),this.CPUInit(),this.VCEInit(),this.VPCInit(),this.VDCInit(),this.TimerInit(),this.JoystickInit(),this.PSGInit(),this.CPUReset()}Init(){this.StorageInit(),this.CPUInit(),this.VCEInit(),this.VPCInit(),this.VDCInit(),this.TimerInit(),this.JoystickInit(),this.PSGInit()}SetCanvas(t){if(this.MainCanvas=t,!this.MainCanvas.getContext)return!1;this.Ctx=this.MainCanvas.getContext("2d"),this.ImageData=this.Ctx.createImageData(this.MainCanvas.width,this.MainCanvas.height);for(let e=0;e<this.MainCanvas.width*this.MainCanvas.height*4;e+=4)this.ImageData.data[e]=0,this.ImageData.data[e+1]=0,this.ImageData.data[e+2]=0,this.ImageData.data[e+3]=255;return this.Ctx.putImageData(this.ImageData,0,0),!0}CPUConstruct(){this.OpCycles=[8,7,3,4,6,4,6,7,3,2,2,2,7,5,7,6,2,7,7,4,6,4,6,7,2,5,2,2,7,5,7,6,7,7,3,4,4,4,6,7,3,2,2,2,5,5,7,6,2,7,7,2,4,4,6,7,2,5,2,2,5,5,7,6,7,7,3,4,8,4,6,7,3,2,2,2,4,5,7,6,2,7,7,5,2,4,6,7,2,5,3,2,2,5,7,6,7,7,2,2,4,4,6,7,3,2,2,2,7,5,7,6,2,7,7,0,4,4,6,7,2,5,3,2,7,5,7,6,4,7,2,7,4,4,4,7,2,2,2,2,5,5,5,6,2,7,7,8,4,4,4,7,2,5,2,2,5,5,5,6,2,7,2,7,4,4,4,7,2,2,2,2,5,5,5,6,2,7,7,8,4,4,4,7,2,5,2,2,5,5,5,6,2,7,2,0,4,4,6,7,2,2,2,2,5,5,7,6,2,7,7,0,2,4,6,7,2,5,3,2,2,5,7,6,2,7,2,0,4,4,6,7,2,2,2,2,5,5,7,6,2,7,7,0,2,4,6,7,2,5,3,2,2,5,7,6],this.OpBytes=[0,2,1,2,2,2,2,2,1,2,1,1,3,3,3,0,0,2,2,2,2,2,2,2,1,3,1,1,3,3,3,0,0,2,1,2,2,2,2,2,1,2,1,1,3,3,3,0,0,2,2,1,2,2,2,2,1,3,1,1,3,3,3,0,0,2,1,2,0,2,2,2,1,2,1,1,0,3,3,0,0,2,2,2,1,2,2,2,1,3,1,1,1,3,3,0,0,2,1,1,2,2,2,2,1,2,1,1,0,3,3,0,0,2,2,0,2,2,2,2,1,3,1,1,0,3,3,0,0,2,1,3,2,2,2,2,1,2,1,1,3,3,3,0,0,2,2,4,2,2,2,2,1,3,1,1,3,3,3,0,2,2,2,3,2,2,2,2,1,2,1,1,3,3,3,0,0,2,2,4,2,2,2,2,1,3,1,1,3,3,3,0,2,2,1,0,2,2,2,2,1,2,1,1,3,3,3,0,0,2,2,0,1,2,2,2,1,3,1,1,1,3,3,0,2,2,1,0,2,2,2,2,1,2,1,1,3,3,3,0,0,2,2,0,1,2,2,2,1,3,1,1,1,3,3,0],this.A=0,this.X=0,this.Y=0,this.PC=0,this.S=0,this.P=0,this.NZCacheTable=new Uint8Array(256),this.NZCacheTable=this.NZCacheTable.map((t,e)=>e&128),this.NZCacheTable[0]=2,this.NFlag=128,this.VFlag=64,this.TFlag=32,this.BFlag=16,this.DFlag=8,this.IFlag=4,this.ZFlag=2,this.CFlag=1,this.TIQFlag=4,this.IRQ1Flag=2,this.IRQ2Flag=1,this.ProgressClock=0,this.CPUBaseClock=0,this.BaseClock1=12,this.BaseClock3=6,this.BaseClock5=4,this.BaseClock7=3,this.BaseClock10=2,this.TransferSrc=0,this.TransferDist=0,this.TransferLen=0,this.TransferAlt=0}CPUReset(){this.TransferSrc=0,this.TransferDist=0,this.TransferLen=0,this.TransferAlt=0,this.CPUBaseClock=this.BaseClock1,this.SetIFlag(),this.PC=this.Get16(65534)}CPUInit(){this.A=0,this.X=0,this.Y=0,this.PC=0,this.S=0,this.P=0,this.ProgressClock=0,this.CPUBaseCloLine truncated
//# sourceMappingURL=pce-EJ76APF6.js.map
File renamed without changes.
+2 -2
View File
@@ -1,4 +1,4 @@
import{a as b,b as w,c as A}from"./chunk-SK73GSLK.js";import{K as c,d as M,f as P}from"./chunk-G4HBIXG4.js";import{$ as p,K as u,W as s,Z as l,aa as n,g}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var S=l([[s.UP,0,1],[s.DOWN,0,2],[s.LEFT,0,4],[s.RIGHT,0,8],[s.A,0,16],[s.B,0,32],[s.GP_A,0,16],[s.GP_B,0,32],[s.P2_UP,0,64],[s.P2_DOWN,0,128],[s.P2_LEFT,1,1],[s.P2_RIGHT,1,2],[s.P2_A,1,4],[s.P2_B,1,8],[s.VK_BACK_SLASH,1,16],[s.VK_ENTER,1,128]]),a=class extends A{constructor(){super();this.numVisibleScanlines=240;this.defaultROMSize=49152;this.ram=new Uint8Array(1024);this.read=n([[49152,65535,1023,e=>this.ram[e]],[0,49151,65535,e=>this.rom&&this.rom[e]]]);this.write=n([[49152,65535,1023,(e,r)=>{this.ram[e]=r}]]);this.init(this,this.newIOBus(),new P(new M))}getKeyboardMap(){return S}vdpInterrupt(){return this.probe.logInterrupt(255),this.cpu.interrupt(255)}getVCounter(){return 0}getHCounter(){return 0}setMemoryControl(e){}setIOPortControl(e){}readIO(e){switch(e&193){case 64:return this.getVCounter();case 65:return this.getHCounter();case 128:return this.vdp.readData();case 129:return this.vdp.readStatus();case 192:return this.inputs[0]^255;case 193:return this.inputs[1]^255}return 0}writeIO(e,r){switch(e&193){case 0:return this.setMemoryControl(r);case 1:return this.setIOPortControl(r);case 64:case 65:return this.psg.setData(r);case 128:return this.vdp.writeData(r);case 129:return this.vdp.writeAddress(r)}}newIOBus(){return{read:e=>(e&=255,this.readIO(e)),write:(e,r)=>{e&=255,r&=255,this.writeIO(e,r)}}}},o=class extends a{constructor(){super(...arguments);this.cartram=new Uint8Array(0);this.pagingRegisters=new Uint8Array(4);this.latchedHCounter=0;this.ioControlFlags=0;this.ram=new Uint8Array(8192);this.read=n([[49152,65535,8191,e=>this.ram[e]],[0,1023,1023,e=>this.rom&&this.rom[e]],[1024,16383,16383,e=>this.getPagedROM(e,1)],[16384,32767,16383,e=>this.getPagedROM(e,2)],[32768,49151,16383,e=>{var r=this.pagingRegisters[0];return r&8?this.cartram[r&4?e+16384:e]:this.getPagedROM(e,3)}]]);this.write=n([[49152,65531,8191,(e,r)=>{this.ram[e]=r}],[65532,65535,3,(e,r)=>{this.pagingRegisters[e]=r,this.ram[e+8188]=r}],[32768,49151,16383,(e,r)=>{var m=this.pagingRegisters[0];m&8&&(this.cartram.length==0&&(this.cartram=new Uint8Array(32768)),this.cartram[m&4?e+16384:e]=r)}]])}newVDP(e,r,m){return new b(e,r,m)}reset(){super.reset(),this.pagingRegisters.set([0,0,1,2])}getVCounter(){var e=this.scanline;return e<=218?e:e-6}getHCounter(){return this.latchedHCounter}computeHCounter(){return 0}setIOPortControl(e){(e^this.ioControlFlags)&160&&(this.latchedHCounter=this.computeHCounter()),this.ioControlFlags=e}getPagedROM(e,r){return this.rom&&this.rom[e+((this.pagingRegisters[r]&this.romPageMask)<<14)]}loadROM(e){if(e.length<=49152)this.rom=p(e,49152),this.romPageMask=3;else switch(e.length){case 65536:case 131072:case 262144:case 524288:this.rom=e,this.romPageMask=(e.length>>14)-1;break;default:throw Error("Unknown rom size: $"+g(e.length))}this.reset()}loadState(e){super.loadState(e),this.pagingRegisters.set(e.pr),this.cartram.set(e.cr),this.latchedHCounter=e.lhc,this.ioControlFlags=e.iocf}saveState(){var e=super.saveState();return e.pr=this.pagingRegisters.slice(0),e.cr=this.cartram.slice(0),e.lhc=this.latchedHCounter,e.iocf=this.ioControlFlags,e}getDebugInfo(e,r){switch(e){case"SMS":return super.getDebugInfo(e,r)+`
import{a as b,b as w,c as A}from"./chunk-SBNWO7XU.js";import{K as c,d as M,f as P}from"./chunk-4676AC7I.js";import{$ as p,K as u,W as s,Z as l,aa as n,g}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var S=l([[s.UP,0,1],[s.DOWN,0,2],[s.LEFT,0,4],[s.RIGHT,0,8],[s.A,0,16],[s.B,0,32],[s.GP_A,0,16],[s.GP_B,0,32],[s.P2_UP,0,64],[s.P2_DOWN,0,128],[s.P2_LEFT,1,1],[s.P2_RIGHT,1,2],[s.P2_A,1,4],[s.P2_B,1,8],[s.VK_BACK_SLASH,1,16],[s.VK_ENTER,1,128]]),a=class extends A{constructor(){super();this.numVisibleScanlines=240;this.defaultROMSize=49152;this.ram=new Uint8Array(1024);this.read=n([[49152,65535,1023,e=>this.ram[e]],[0,49151,65535,e=>this.rom&&this.rom[e]]]);this.write=n([[49152,65535,1023,(e,r)=>{this.ram[e]=r}]]);this.init(this,this.newIOBus(),new P(new M))}getKeyboardMap(){return S}vdpInterrupt(){return this.probe.logInterrupt(255),this.cpu.interrupt(255)}getVCounter(){return 0}getHCounter(){return 0}setMemoryControl(e){}setIOPortControl(e){}readIO(e){switch(e&193){case 64:return this.getVCounter();case 65:return this.getHCounter();case 128:return this.vdp.readData();case 129:return this.vdp.readStatus();case 192:return this.inputs[0]^255;case 193:return this.inputs[1]^255}return 0}writeIO(e,r){switch(e&193){case 0:return this.setMemoryControl(r);case 1:return this.setIOPortControl(r);case 64:case 65:return this.psg.setData(r);case 128:return this.vdp.writeData(r);case 129:return this.vdp.writeAddress(r)}}newIOBus(){return{read:e=>(e&=255,this.readIO(e)),write:(e,r)=>{e&=255,r&=255,this.writeIO(e,r)}}}},o=class extends a{constructor(){super(...arguments);this.cartram=new Uint8Array(0);this.pagingRegisters=new Uint8Array(4);this.latchedHCounter=0;this.ioControlFlags=0;this.ram=new Uint8Array(8192);this.read=n([[49152,65535,8191,e=>this.ram[e]],[0,1023,1023,e=>this.rom&&this.rom[e]],[1024,16383,16383,e=>this.getPagedROM(e,1)],[16384,32767,16383,e=>this.getPagedROM(e,2)],[32768,49151,16383,e=>{var r=this.pagingRegisters[0];return r&8?this.cartram[r&4?e+16384:e]:this.getPagedROM(e,3)}]]);this.write=n([[49152,65531,8191,(e,r)=>{this.ram[e]=r}],[65532,65535,3,(e,r)=>{this.pagingRegisters[e]=r,this.ram[e+8188]=r}],[32768,49151,16383,(e,r)=>{var m=this.pagingRegisters[0];m&8&&(this.cartram.length==0&&(this.cartram=new Uint8Array(32768)),this.cartram[m&4?e+16384:e]=r)}]])}newVDP(e,r,m){return new b(e,r,m)}reset(){super.reset(),this.pagingRegisters.set([0,0,1,2])}getVCounter(){var e=this.scanline;return e<=218?e:e-6}getHCounter(){return this.latchedHCounter}computeHCounter(){return 0}setIOPortControl(e){(e^this.ioControlFlags)&160&&(this.latchedHCounter=this.computeHCounter()),this.ioControlFlags=e}getPagedROM(e,r){return this.rom&&this.rom[e+((this.pagingRegisters[r]&this.romPageMask)<<14)]}loadROM(e){if(e.length<=49152)this.rom=p(e,49152),this.romPageMask=3;else switch(e.length){case 65536:case 131072:case 262144:case 524288:this.rom=e,this.romPageMask=(e.length>>14)-1;break;default:throw Error("Unknown rom size: $"+g(e.length))}this.reset()}loadState(e){super.loadState(e),this.pagingRegisters.set(e.pr),this.cartram.set(e.cr),this.latchedHCounter=e.lhc,this.ioControlFlags=e.iocf}saveState(){var e=super.saveState();return e.pr=this.pagingRegisters.slice(0),e.cr=this.cartram.slice(0),e.lhc=this.latchedHCounter,e.iocf=this.ioControlFlags,e}getDebugInfo(e,r){switch(e){case"SMS":return super.getDebugInfo(e,r)+`
Bank Regs: `+this.pagingRegisters+`
`;default:return super.getDebugInfo(e,r)}}},x=class extends o{newVDP(t,e,r){return new w(t,e,r)}readIO(t){switch(t&193){case 0:return~this.inputs[1]&128|64;case 220:return this.inputs[0]^255;case 221:return this.inputs[1]^255}return super.readIO(t)}};var R=[{id:"text.c",name:"Text Mode"},{id:"hello.c",name:"Scrolling Text"},{id:"text32.c",name:"32-Column Color Text"},{id:"stars.c",name:"Scrolling Starfield"},{id:"cursorsmooth.c",name:"Moving Cursor"},{id:"simplemusic.c",name:"Simple Music"},{id:"musicplayer.c",name:"Multivoice Music"},{id:"mode2bitmap.c",name:"Mode 2 Bitmap"},{id:"mode2compressed.c",name:"Mode 2 Bitmap (LZG)"},{id:"lines.c",name:"Mode 2 Lines"},{id:"multicolor.c",name:"Multicolor Mode"},{id:"siegegame.c",name:"Siege Game"},{id:"shoot.c",name:"Solarian Game"},{id:"climber.c",name:"Climber Game"}],C=[{id:"mode4test.c",name:"Mode 4 Test"},{id:"climber.c",name:"Climber Game"}],f=class extends c{newMachine(){return new a}getPresets(){return R}readAddress(t){return this.machine.read(t)}readVRAMAddress(t){return this.machine.readVRAMAddress(t)}},h=class extends c{newMachine(){return new o}getPresets(){return C}readAddress(t){return this.machine.read(t)}readVRAMAddress(t){return this.machine.readVRAMAddress(t)}},d=class extends c{newMachine(){return new x}getPresets(){return C}readAddress(t){return this.machine.read(t)}readVRAMAddress(t){return this.machine.readVRAMAddress(t)}};u["sms-sg1000-libcv"]=f;u["sms-sms-libcv"]=h;u["sms-gg-libcv"]=d;export{R as SG1000_PRESETS,C as SMS_PRESETS};
//# sourceMappingURL=sms-N2VLPBB2.js.map
//# sourceMappingURL=sms-PVYCSRUF.js.map
File renamed without changes.
@@ -1,2 +1,2 @@
import{D as w}from"./chunk-G4HBIXG4.js";import{$ as P,K as v,P as x,S as p,U as C,aa as d}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var y=[],A=function(R){this.__proto__=new w;var t,i,o,f,l,u,c,m,s,M=0,a=0,n,g=14318e3/8,D=1789750/1280,S=g/60,b=g/D;this.getPresets=function(){return y},this.start=function(){i=new p(1024),f={read:d([[0,16383,16383,function(e){return o?o[e]:null}],[16384,24575,1023,function(e){return i.mem[e]}]]),write:d([[16384,24575,1023,function(e,r){i.mem[e]=r}]]),isContended:function(){return!1}},l={read:function(e){if(e&64){if(a==15){var r=t.getTstates()/b&1;return r?255:0}return n.readRegister(a)&255}return 0},write:function(e,r){e&128&&(a=r&15),e&64&&n.writeRegisterAY(a,r&255)}},this.readAddress=f.read,t=this.newCPU(f,l),n=new PsgDeviceChannel,c=new MasterChannel,n.setMode(PsgDeviceChannel.MODE_SIGNED),n.setDevice(PsgDeviceChannel.DEVICE_AY_3_8910),c.addChannel(n),u=new AudioLooper(512),u.setChannel(c),m=new x(R,256,256),m.create(),m.setKeyboardEvents(function(e,r,T){var h=e-49;h>=0&&T&1&&(n.writeRegister(14,h),n.writeRegister(15,128),t.setIFF1(1),t.requestInterrupt(56))}),s=new C(60,()=>{if(this.isRunning()){var e=this.getDebugCallback(),r=t.getTstates()+S;if(e)for(;t.getTstates()<r;)e&&e()&&(e=null),t.runFrame(t.getTstates()+1);else t.runFrame(r)}})},this.loadROM=function(e,r){o=P(r,16384),t.reset()},this.loadState=function(e){t.loadState(e.c),i.mem.set(e.b)},this.saveState=function(){return{c:this.getCPUState(),b:i.mem.slice(0)}},this.getCPUState=function(){return t.saveState()},this.isRunning=function(){return s&&s.isRunning()},this.pause=function(){s.stop()},this.resume=function(){s.start(),u.activate()},this.reset=function(){t.reset(),this.getDebugCallback()||t.setTstates(0)}};v.sound_konami=A;
//# sourceMappingURL=sound_konami-JRGR32Y5.js.map
import{D as w}from"./chunk-4676AC7I.js";import{$ as P,K as v,P as x,S as p,U as C,aa as d}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var y=[],A=function(R){this.__proto__=new w;var t,i,o,f,l,u,c,m,s,M=0,a=0,n,g=14318e3/8,D=1789750/1280,S=g/60,b=g/D;this.getPresets=function(){return y},this.start=function(){i=new p(1024),f={read:d([[0,16383,16383,function(e){return o?o[e]:null}],[16384,24575,1023,function(e){return i.mem[e]}]]),write:d([[16384,24575,1023,function(e,r){i.mem[e]=r}]]),isContended:function(){return!1}},l={read:function(e){if(e&64){if(a==15){var r=t.getTstates()/b&1;return r?255:0}return n.readRegister(a)&255}return 0},write:function(e,r){e&128&&(a=r&15),e&64&&n.writeRegisterAY(a,r&255)}},this.readAddress=f.read,t=this.newCPU(f,l),n=new PsgDeviceChannel,c=new MasterChannel,n.setMode(PsgDeviceChannel.MODE_SIGNED),n.setDevice(PsgDeviceChannel.DEVICE_AY_3_8910),c.addChannel(n),u=new AudioLooper(512),u.setChannel(c),m=new x(R,256,256),m.create(),m.setKeyboardEvents(function(e,r,T){var h=e-49;h>=0&&T&1&&(n.writeRegister(14,h),n.writeRegister(15,128),t.setIFF1(1),t.requestInterrupt(56))}),s=new C(60,()=>{if(this.isRunning()){var e=this.getDebugCallback(),r=t.getTstates()+S;if(e)for(;t.getTstates()<r;)e&&e()&&(e=null),t.runFrame(t.getTstates()+1);else t.runFrame(r)}})},this.loadROM=function(e,r){o=P(r,16384),t.reset()},this.loadState=function(e){t.loadState(e.c),i.mem.set(e.b)},this.saveState=function(){return{c:this.getCPUState(),b:i.mem.slice(0)}},this.getCPUState=function(){return t.saveState()},this.isRunning=function(){return s&&s.isRunning()},this.pause=function(){s.stop()},this.resume=function(){s.start(),u.activate()},this.reset=function(){t.reset(),this.getDebugCallback()||t.setTstates(0)}};v.sound_konami=A;
//# sourceMappingURL=sound_konami-BVUIR376.js.map
File renamed without changes.
@@ -1,2 +1,2 @@
import{K as u,c as f,q as o}from"./chunk-G4HBIXG4.js";import{K as m,aa as t}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var h=[{id:"swave.c",name:"Wavetable Synth"}],a=class extends o{constructor(){super();this.cpuFrequency=18432e3/6;this.cpuCyclesPerFrame=this.cpuFrequency/60;this.cpuAudioFactor=32;this.canvasWidth=256;this.numVisibleScanlines=256;this.defaultROMSize=16384;this.sampleRate=this.cpuFrequency;this.overscan=!0;this.ram=new Uint8Array(1024);this.command=0;this.dac=0;this.dac_float=0;this.xpos=0;this.read=t([[0,16383,16383,e=>this.rom&&this.rom[e]],[16384,32767,1023,e=>this.ram[e]]]);this.write=t([[16384,32767,1023,(e,s)=>{this.ram[e]=s}]]);this.cpu=new f,this.connectCPUMemoryBus(this),this.connectCPUIOBus({read:e=>this.command&255,write:(e,s)=>{let r=this.dac=s&255;this.dac_float=(r&128?-256+r:r)/128}})}advanceFrame(e){this.pixels&&this.pixels.fill(0);let s=this.cpuCyclesPerFrame;for(var r=0;r<s&&!(e&&e());)r+=this.advanceCPU();return r}advanceCPU(){var e=super.advanceCPU();return this.audio&&this.audio.feedSample(this.dac_float,e),this.pixels&&!this.cpu.isHalted()&&(this.pixels[(this.xpos>>8&255)+(255-this.dac<<8)]=4281597747,this.xpos=this.xpos+e&16777215),e}setKeyInput(e,s,r){var c=e-49;c>=0&&r&1&&(this.command=c&255,this.cpu.reset())}},i=class extends u{newMachine(){return new a}getPresets(){return h}readAddress(n){return this.machine.read(n)}};m["sound_williams-z80"]=i;export{i as WilliamsSoundPlatform};
//# sourceMappingURL=sound_williams-FSCOUJ3U.js.map
import{K as u,c as f,q as o}from"./chunk-4676AC7I.js";import{K as m,aa as t}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var h=[{id:"swave.c",name:"Wavetable Synth"}],a=class extends o{constructor(){super();this.cpuFrequency=18432e3/6;this.cpuCyclesPerFrame=this.cpuFrequency/60;this.cpuAudioFactor=32;this.canvasWidth=256;this.numVisibleScanlines=256;this.defaultROMSize=16384;this.sampleRate=this.cpuFrequency;this.overscan=!0;this.ram=new Uint8Array(1024);this.command=0;this.dac=0;this.dac_float=0;this.xpos=0;this.read=t([[0,16383,16383,e=>this.rom&&this.rom[e]],[16384,32767,1023,e=>this.ram[e]]]);this.write=t([[16384,32767,1023,(e,s)=>{this.ram[e]=s}]]);this.cpu=new f,this.connectCPUMemoryBus(this),this.connectCPUIOBus({read:e=>this.command&255,write:(e,s)=>{let r=this.dac=s&255;this.dac_float=(r&128?-256+r:r)/128}})}advanceFrame(e){this.pixels&&this.pixels.fill(0);let s=this.cpuCyclesPerFrame;for(var r=0;r<s&&!(e&&e());)r+=this.advanceCPU();return r}advanceCPU(){var e=super.advanceCPU();return this.audio&&this.audio.feedSample(this.dac_float,e),this.pixels&&!this.cpu.isHalted()&&(this.pixels[(this.xpos>>8&255)+(255-this.dac<<8)]=4281597747,this.xpos=this.xpos+e&16777215),e}setKeyInput(e,s,r){var c=e-49;c>=0&&r&1&&(this.command=c&255,this.cpu.reset())}},i=class extends u{newMachine(){return new a}getPresets(){return h}readAddress(n){return this.machine.read(n)}};m["sound_williams-z80"]=i;export{i as WilliamsSoundPlatform};
//# sourceMappingURL=sound_williams-RFO6HJ4I.js.map
File renamed without changes.
+10
View File
@@ -237,6 +237,16 @@ class BaseDebugPlatform extends BasePlatform {
return pcs.has(c.PC);
});
}
runEvalAtPC(targets) {
this.debugTargetClock++;
this.runEval((c) => {
const epc = c.EPC != null ? c.EPC : c.PC;
if (!targets.has(epc))
return false;
const cond = targets.get(epc);
return cond ? cond(c) : true;
});
}
runUntilReturn() {
var SP0 = this.getSP();
this.runEval((c) => {
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"baseplatform.js","sourceRoot":"","sources":["../../../src/common/baseplatform.ts"],"names":[],"mappings":"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 truncated
{"version":3,"file":"baseplatform.js","sourceRoot":"","sources":["../../../src/common/baseplatform.ts"],"names":[],"mappings":"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 truncated
+317
View File
@@ -0,0 +1,317 @@
"use strict";
// Breakpoint condition expressions: a small, safe expression language
// evaluated against the CPU state while the emulator is running.
// (No eval() -- a tiny recursive-descent parser compiles the expression
// to a closure, so bad input can only fail at compile time.)
//
// Values:
// numbers 123, $1a2f, 0x1a2f
// registers PC, A, X, Y, SP ... (numeric fields of the CPU state)
// symbols resolved from the debug symbol map (baked in at compile time)
// memory [expr] reads a byte at expr
// Operators (C-like precedence): ! ~ - + (unary), * / %, + -, << >>,
// < <= > >=, == !=, &, ^, |, &&, ||, and parentheses.
// The whole expression is true when it evaluates to non-zero.
Object.defineProperty(exports, "__esModule", { value: true });
exports.compileCondition = compileCondition;
exports.parseTarget = parseTarget;
const OPERATORS2 = ['<<', '>>', '<=', '>=', '==', '!=', '&&', '||'];
const OPERATORS1 = '+-*/%<>!~&|^()[]';
function tokenize(src) {
let toks = [];
let i = 0;
while (i < src.length) {
let ch = src[i];
if (/\s/.test(ch)) {
i++;
continue;
}
if (ch == '$' && /[0-9a-fA-F]/.test(src[i + 1] || '')) {
let j = i + 1;
while (j < src.length && /[0-9a-fA-F]/.test(src[j]))
j++;
toks.push({ t: 'num', v: src.substring(i, j), num: parseInt(src.substring(i + 1, j), 16) });
i = j;
continue;
}
if (/[0-9]/.test(ch)) {
if (ch == '0' && (src[i + 1] == 'x' || src[i + 1] == 'X')) {
let j = i + 2;
while (j < src.length && /[0-9a-fA-F]/.test(src[j]))
j++;
if (j == i + 2)
throw new Error("bad hex number");
toks.push({ t: 'num', v: src.substring(i, j), num: parseInt(src.substring(i + 2, j), 16) });
i = j;
}
else {
let j = i;
while (j < src.length && /[0-9]/.test(src[j]))
j++;
toks.push({ t: 'num', v: src.substring(i, j), num: parseInt(src.substring(i, j), 10) });
i = j;
}
continue;
}
if (/[A-Za-z_.]/.test(ch)) {
let j = i;
while (j < src.length && /[A-Za-z0-9_.$]/.test(src[j]))
j++;
toks.push({ t: 'id', v: src.substring(i, j) });
i = j;
continue;
}
let two = src.substring(i, i + 2);
if (OPERATORS2.includes(two)) {
toks.push({ t: 'op', v: two });
i += 2;
continue;
}
if (OPERATORS1.includes(ch)) {
toks.push({ t: 'op', v: ch });
i++;
continue;
}
throw new Error("unexpected character '" + ch + "'");
}
return toks;
}
class Parser {
constructor(toks) {
this.pos = 0;
this.toks = toks;
}
peek() { return this.toks[this.pos]; }
next() { return this.toks[this.pos++]; }
atOp(...ops) {
let t = this.peek();
return (t && t.t == 'op' && ops.includes(t.v)) ? t.v : null;
}
expect(v) {
let t = this.next();
if (!t || t.t != 'op' || t.v != v)
throw new Error("expected '" + v + "'");
}
parse() {
let n = this.parseOr();
if (this.pos != this.toks.length)
throw new Error("unexpected '" + this.peek().v + "'");
return n;
}
parseOr() {
let a = this.parseAnd();
while (this.atOp('||')) {
this.next();
a = { t: 'bin', op: '||', a: a, b: this.parseAnd() };
}
return a;
}
parseAnd() {
let a = this.parseBitOr();
while (this.atOp('&&')) {
this.next();
a = { t: 'bin', op: '&&', a: a, b: this.parseBitOr() };
}
return a;
}
parseBitOr() {
let a = this.parseBitXor();
while (this.atOp('|')) {
this.next();
a = { t: 'bin', op: '|', a: a, b: this.parseBitXor() };
}
return a;
}
parseBitXor() {
let a = this.parseBitAnd();
while (this.atOp('^')) {
this.next();
a = { t: 'bin', op: '^', a: a, b: this.parseBitAnd() };
}
return a;
}
parseBitAnd() {
let a = this.parseEquality();
while (this.atOp('&')) {
this.next();
a = { t: 'bin', op: '&', a: a, b: this.parseEquality() };
}
return a;
}
parseEquality() {
let a = this.parseRelational();
let op;
while (op = this.atOp('==', '!=')) {
this.next();
a = { t: 'bin', op: op, a: a, b: this.parseRelational() };
}
return a;
}
parseRelational() {
let a = this.parseShift();
let op;
while (op = this.atOp('<', '<=', '>', '>=')) {
this.next();
a = { t: 'bin', op: op, a: a, b: this.parseShift() };
}
return a;
}
parseShift() {
let a = this.parseAdditive();
let op;
while (op = this.atOp('<<', '>>')) {
this.next();
a = { t: 'bin', op: op, a: a, b: this.parseAdditive() };
}
return a;
}
parseAdditive() {
let a = this.parseMultiplicative();
let op;
while (op = this.atOp('+', '-')) {
this.next();
a = { t: 'bin', op: op, a: a, b: this.parseMultiplicative() };
}
return a;
}
parseMultiplicative() {
let a = this.parseUnary();
let op;
while (op = this.atOp('*', '/', '%')) {
this.next();
a = { t: 'bin', op: op, a: a, b: this.parseUnary() };
}
return a;
}
parseUnary() {
let op = this.atOp('-', '!', '~', '+');
if (op) {
this.next();
return { t: 'un', op: op, a: this.parseUnary() };
}
return this.parsePrimary();
}
parsePrimary() {
let t = this.next();
if (!t)
throw new Error("unexpected end of expression");
if (t.t == 'num')
return { t: 'num', v: t.num };
if (t.t == 'id')
return { t: 'id', name: t.v };
if (t.t == 'op' && t.v == '(') {
let n = this.parseOr();
this.expect(')');
return n;
}
if (t.t == 'op' && t.v == '[') {
let n = this.parseOr();
this.expect(']');
return { t: 'mem', a: n };
}
throw new Error("unexpected '" + t.v + "'");
}
}
function compileNode(n, ctx) {
switch (n.t) {
case 'num': {
const v = n.v;
return () => v;
}
case 'id': {
const name = n.name;
if (ctx.cpuFields.has(name)) {
return (c) => {
const v = c[name];
return typeof v === 'number' ? v : 0;
};
}
let v = ctx.symbol(name);
if (typeof v === 'number') {
const val = v;
return () => val;
}
throw new Error("unknown identifier '" + name + "'");
}
case 'mem': {
const a = compileNode(n.a, ctx);
return (c) => {
if (!ctx.readMem)
throw new Error("memory reads not supported");
const v = ctx.readMem(a(c) & 0xffff);
if (typeof v !== 'number')
throw new Error("cannot read memory");
return v;
};
}
case 'un': {
const a = compileNode(n.a, ctx);
switch (n.op) {
case '-': return (c) => -a(c);
case '~': return (c) => ~a(c);
case '!': return (c) => a(c) ? 0 : 1;
case '+': return a;
}
break;
}
case 'bin': {
const a = compileNode(n.a, ctx);
const b = compileNode(n.b, ctx);
switch (n.op) {
case '||': return (c) => (a(c) || b(c)) ? 1 : 0;
case '&&': return (c) => (a(c) && b(c)) ? 1 : 0;
case '|': return (c) => a(c) | b(c);
case '^': return (c) => a(c) ^ b(c);
case '&': return (c) => a(c) & b(c);
case '==': return (c) => a(c) == b(c) ? 1 : 0;
case '!=': return (c) => a(c) != b(c) ? 1 : 0;
case '<': return (c) => a(c) < b(c) ? 1 : 0;
case '<=': return (c) => a(c) <= b(c) ? 1 : 0;
case '>': return (c) => a(c) > b(c) ? 1 : 0;
case '>=': return (c) => a(c) >= b(c) ? 1 : 0;
case '<<': return (c) => a(c) << b(c);
case '>>': return (c) => a(c) >> b(c);
case '+': return (c) => a(c) + b(c);
case '-': return (c) => a(c) - b(c);
case '*': return (c) => a(c) * b(c);
case '/': return (c) => { const d = b(c); return d === 0 ? 0 : (a(c) / d) | 0; };
case '%': return (c) => { const d = b(c); return d === 0 ? 0 : a(c) % d; };
}
break;
}
}
throw new Error("bad expression node");
}
// Compile a condition expression; throws on syntax errors or unknown identifiers.
// The returned function never throws: if evaluation fails (e.g. unreadable
// memory) it returns false so the emulator loop is never interrupted.
function compileCondition(src, ctx) {
let ast = new Parser(tokenize(src)).parse();
let fn = compileNode(ast, ctx);
return (c) => {
try {
return fn(c) != 0;
}
catch (e) {
return false;
}
};
}
// Parse a breakpoint target: '$hex', '0xhex', decimal, or a symbol name.
function parseTarget(target, symbol) {
let s = (target || '').trim();
if (!s)
return { error: "empty address" };
let m;
if ((m = s.match(/^\$([0-9a-fA-F]+)$/)) || (m = s.match(/^0[xX]([0-9a-fA-F]+)$/))) {
return { pc: parseInt(m[1], 16) };
}
if (/^\d+$/.test(s)) {
return { pc: parseInt(s, 10) };
}
let v = symbol(s);
if (typeof v === 'number')
return { pc: v };
return { error: "unknown symbol '" + s + "'" };
}
//# sourceMappingURL=breakcond.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"breakcond.js","sourceRoot":"","sources":["../../../src/ide/breakcond.ts"],"names":[],"mappings":"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 truncated
+181
View File
@@ -0,0 +1,181 @@
"use strict";
// Unified breakpoint store, shared by the editor gutter markers and the
// Breakpoints window. Two kinds of breakpoints:
// - 'source' -- file + line, resolved to a PC via the build listing
// (these render as gutter markers in the editor)
// - 'address' -- a target that's a symbol, $hex or decimal address
// Both support an optional condition expression (see breakcond.ts).
// The store persists to localStorage, scoped by platform + main file.
Object.defineProperty(exports, "__esModule", { value: true });
exports.bpStore = void 0;
exports.resolveBreakpoint = resolveBreakpoint;
exports.resolveBreakpoints = resolveBreakpoints;
const ui_1 = require("./ui");
const breakcond_1 = require("./breakcond");
const STORAGE_KEY = '8bitworkshop.breakpoints.v1';
class BreakpointStore {
constructor() {
this.breakpoints = [];
this.nextId = 1;
this.listeners = [];
this.contextFn = () => '';
}
setContextFn(fn) {
this.contextFn = fn;
}
subscribe(fn) {
this.listeners.push(fn);
}
notify() {
for (let fn of this.listeners.slice())
fn();
}
changed() {
this.save();
this.notify();
}
getAll() {
return this.breakpoints;
}
getEnabled() {
return this.breakpoints.filter(bp => bp.enabled);
}
getSourceBreakpointsForFile(path) {
return this.breakpoints.filter(bp => bp.type == 'source' && bp.file == path);
}
addSourceBreakpoint(file, line) {
let bp = { id: this.nextId++, type: 'source', file, line, enabled: true };
this.breakpoints.push(bp);
this.changed();
return bp;
}
// add an address breakpoint; if one already targets the same address,
// enable it and update its condition instead
addAddressBreakpoint(target, condition) {
let norm = (target || '').trim().toLowerCase();
let existing = this.breakpoints.find(bp => bp.type == 'address' && (bp.target || '').trim().toLowerCase() == norm);
if (existing) {
this.update(existing.id, { enabled: true, condition: condition });
return existing;
}
let bp = { id: this.nextId++, type: 'address', target: target.trim(), enabled: true, condition: condition };
this.breakpoints.push(bp);
this.changed();
return bp;
}
remove(id) {
this.breakpoints = this.breakpoints.filter(bp => bp.id != id);
this.changed();
}
setEnabled(id, enabled) {
let bp = this.breakpoints.find(bp => bp.id == id);
if (bp && bp.enabled != enabled) {
bp.enabled = enabled;
this.changed();
}
}
update(id, patch) {
let bp = this.breakpoints.find(bp => bp.id == id);
if (bp) {
Object.assign(bp, patch);
this.changed();
}
}
// toggle a gutter breakpoint; used by clicking the editor status gutter
toggleSourceLine(file, line) {
let existing = this.breakpoints.find(bp => bp.type == 'source' && bp.file == file && bp.line == line);
if (existing) {
this.remove(existing.id);
}
else {
this.addSourceBreakpoint(file, line);
}
}
load() {
if (typeof localStorage === 'undefined')
return;
try {
let blob = JSON.parse(localStorage.getItem(STORAGE_KEY) || '{}');
let bps = blob[this.contextFn()];
this.breakpoints = Array.isArray(bps) ? bps : [];
this.nextId = 1;
for (let bp of this.breakpoints)
this.nextId = Math.max(this.nextId, bp.id + 1);
}
catch (e) {
this.breakpoints = [];
}
}
save() {
if (typeof localStorage === 'undefined')
return;
try {
let blob = {};
let old = localStorage.getItem(STORAGE_KEY);
if (old)
blob = JSON.parse(old);
blob[this.contextFn()] = this.breakpoints;
localStorage.setItem(STORAGE_KEY, JSON.stringify(blob));
}
catch (e) {
console.log("breakpoints: save failed", e);
}
}
}
exports.bpStore = new BreakpointStore();
function makeSymbolLookup() {
return (name) => {
let sm = ui_1.platform && ui_1.platform.debugSymbols && ui_1.platform.debugSymbols.symbolmap;
if (!sm)
return undefined;
// C symbols often get a leading underscore from the compiler
return (name in sm) ? sm[name] : sm['_' + name];
};
}
function makeCondContext() {
let cpuFields = new Set();
try {
let c = ui_1.platform && ui_1.platform.getCPUState && ui_1.platform.getCPUState();
if (c)
cpuFields = new Set(Object.keys(c));
}
catch (e) {
}
return {
cpuFields,
symbol: makeSymbolLookup(),
readMem: ui_1.platform && ui_1.platform.readAddress ? (a) => ui_1.platform.readAddress(a) : undefined,
};
}
function resolveBreakpoint(bp) {
try {
let pc;
if (bp.type == 'source') {
let lst = ui_1.current_project.getListingForFile(bp.file);
let sf = lst && (lst.sourcefile || lst.assemblyfile);
if (!sf)
return { bp, error: "no debug info (build first?)" };
pc = sf.line2offset[bp.line];
if (!(pc >= 0))
return { bp, error: "line has no code" };
}
else {
let r = (0, breakcond_1.parseTarget)(bp.target, makeSymbolLookup());
if (r.error)
return { bp, error: r.error };
pc = r.pc;
}
let condFn = undefined;
if (bp.condition && bp.condition.trim()) {
condFn = (0, breakcond_1.compileCondition)(bp.condition, makeCondContext());
}
return { bp, pc, condFn };
}
catch (e) {
return { bp, error: String(e.message || e) };
}
}
function resolveBreakpoints() {
return exports.bpStore.getAll().map(bp => resolveBreakpoint(bp));
}
//# sourceMappingURL=breakpoints.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"breakpoints.js","sourceRoot":"","sources":["../../../src/ide/breakpoints.ts"],"names":[],"mappings":"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 truncated
+48
View File
@@ -0,0 +1,48 @@
"use strict";
/**
* findListingLocation - given a PC value, finds the best known source (or
* assembly-listing) window and line to show it at. Used both to follow the
* live PC while debugging and to jump to a specific address on demand (e.g.
* clicking a symbol/address breakpoint).
*
* Kept free of DOM / ui.ts dependencies so it can be unit tested.
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.findListingLocation = findListingLocation;
/** Find the best known listing window + source line for a PC value.
* `lookahead` should match the caller's PC_LINE_LOOKAHEAD constant. */
function findListingLocation(pc, ctx, lookahead) {
let bestid = null;
let bestscore = 256;
let bestline = 0;
const listings = ctx.listings;
if (listings) {
for (let lstfn in listings) {
let lst = listings[lstfn];
let file = lst.assemblyfile || lst.sourcefile;
// pick either listing or source file
let wndid = ctx.filename2path[lstfn] || lstfn;
if (file == lst.sourcefile)
wndid = ctx.findWindowWithFilePrefix(lstfn);
// does this window exist?
if (wndid && ctx.isWindow(wndid)) {
// find the source line at the PC or closely before it
let srcline1 = file && file.findLineForOffset(pc, lookahead);
if (srcline1) {
// try to find the next line and bound the PC
let srcline2 = file.lines[srcline1.line + 1];
if (!srcline2 || pc < srcline2.offset) {
let score = pc - srcline1.offset;
if (score < bestscore) {
bestid = wndid;
bestscore = score;
bestline = srcline1.line;
}
}
}
}
}
}
return bestid ? { wndid: bestid, line: bestline } : null;
}
//# sourceMappingURL=listinglocation.js.map
@@ -0,0 +1 @@
{"version":3,"file":"listinglocation.js","sourceRoot":"","sources":["../../../../src/ide/search/listinglocation.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAmBH,kDAgCC;AAlCD;uEACuE;AACvE,SAAgB,mBAAmB,CAAC,EAAU,EAAE,GAA2B,EAAE,SAAiB;IAC5F,IAAI,MAAM,GAAW,IAAI,CAAC;IAC1B,IAAI,SAAS,GAAG,GAAG,CAAC;IACpB,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;IAC9B,IAAI,QAAQ,EAAE,CAAC;QACb,KAAK,IAAI,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,IAAI,GAAG,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,UAAU,CAAC;YAC9C,qCAAqC;YACrC,IAAI,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;YAC9C,IAAI,IAAI,IAAI,GAAG,CAAC,UAAU;gBAAE,KAAK,GAAG,GAAG,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;YACxE,0BAA0B;YAC1B,IAAI,KAAK,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjC,sDAAsD;gBACtD,IAAI,QAAQ,GAAG,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;gBAC7D,IAAI,QAAQ,EAAE,CAAC;oBACb,6CAA6C;oBAC7C,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;oBAC7C,IAAI,CAAC,QAAQ,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;wBACtC,IAAI,KAAK,GAAG,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC;wBACjC,IAAI,KAAK,GAAG,SAAS,EAAE,CAAC;4BACtB,MAAM,GAAG,KAAK,CAAC;4BACf,SAAS,GAAG,KAAK,CAAC;4BAClB,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC;wBAC3B,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3D,CAAC"}
+129 -53
View File
@@ -43,7 +43,9 @@ exports.openHeaderFile = openHeaderFile;
exports.getCurrentMainFilename = getCurrentMainFilename;
exports.getCurrentEditorFilename = getCurrentEditorFilename;
exports.parseGoToTarget = parseGoToTarget;
exports.openLocationForPC = openLocationForPC;
exports.setupBreakpoint = setupBreakpoint;
exports.armBreakpoints = armBreakpoints;
exports.runToPC = runToPC;
exports.clearBreakpoint = clearBreakpoint;
exports.setFrameRateUI = setFrameRateUI;
@@ -83,6 +85,8 @@ const debugviews_1 = require("./views/debugviews");
const editors_1 = require("./views/editors");
const treeviews_1 = require("./views/treeviews");
const windows_1 = require("./windows");
const breakpoints_1 = require("./breakpoints");
const listinglocation_1 = require("./search/listinglocation");
const Split = require("split.js");
const DOMPurify = require("dompurify");
/// EXPORTED GLOBALS (TODO: remove)
@@ -432,6 +436,11 @@ function refreshWindowList() {
return new treeviews_1.DebugBrowserView();
});
}
if (exports.platform.runEval || exports.platform.runToPC) {
addWindowItem("#breakpoints", "Breakpoints", () => {
return new debugviews_1.BreakpointsView();
});
}
addWindowItem('#asseteditor', 'Asset Editor', () => {
return new asseteditor_1.AssetEditorView();
});
@@ -464,6 +473,9 @@ async function loadProject(preset_id) {
// set current file ID
// TODO: this is done twice (mainPath and mainpath!)
exports.current_project.mainPath = preset_id;
// load persisted breakpoints for this platform/project
breakpoints_1.bpStore.setContextFn(() => exports.platform_id + '/' + exports.current_project.mainPath);
breakpoints_1.bpStore.load();
userPrefs.setLastPreset(preset_id);
// load files from storage or web URLs
var result = await exports.current_project.loadFiles([preset_id]);
@@ -1132,7 +1144,7 @@ function getGlobalShortcuts() {
}
// debug shortcuts appear only once a debug session has started
if (exports.platform.setupDebug && exports.platform.runEval) // TODO??
shortcuts.push({ key: 'mod+shift+d', label: 'Reset & Debug', fn: resetAndDebug });
shortcuts.push({ key: 'mod+shift+d', label: 'Reset & Break', fn: resetAndDebug });
if (!debugSessionActive) {
shortcuts.push({ key: 'mod+shift+r', label: 'Reset & Run', fn: resetAndRun });
shortcuts.push({ key: 'mod+shift+f', label: 'Search', fn: searchview_1.openSearchDialog });
@@ -1179,6 +1191,18 @@ function checkRunReady() {
else
return true;
}
// find the best known listing window + source line for a PC value, among
// listings with a window we can show (see ProjectWindows.isWindow -- this
// just means "known window id", not "currently open"). Pure logic lives in
// listinglocation.ts (unit tested); this just wires up the live IDE state.
function findListingLocation(pc) {
return (0, listinglocation_1.findListingLocation)(pc, {
listings: exports.current_project.getListings(),
filename2path: exports.current_project.filename2path,
isWindow: (id) => exports.projectWindows.isWindow(id),
findWindowWithFilePrefix: (fn) => exports.projectWindows.findWindowWithFilePrefix(fn),
}, editors_1.PC_LINE_LOOKAHEAD);
}
function openRelevantListing(state) {
// if we clicked on a specific tool, don't switch windows
if (lastViewClicked && lastViewClicked.startsWith('#'))
@@ -1189,40 +1213,25 @@ function openRelevantListing(state) {
// has to support disassembly, at least
if (!exports.platform.disassemble)
return;
// search through listings
let listings = exports.current_project.getListings();
let bestid = "#disasm";
let bestscore = 256;
if (listings) {
let pc = state.c ? (state.c.EPC || state.c.PC) : 0;
for (let lstfn in listings) {
let lst = listings[lstfn];
let file = lst.assemblyfile || lst.sourcefile;
// pick either listing or source file
let wndid = exports.current_project.filename2path[lstfn] || lstfn;
if (file == lst.sourcefile)
wndid = exports.projectWindows.findWindowWithFilePrefix(lstfn);
// does this window exist?
if (exports.projectWindows.isWindow(wndid)) {
// find the source line at the PC or closely before it
let srcline1 = file && file.findLineForOffset(pc, editors_1.PC_LINE_LOOKAHEAD);
if (srcline1) {
// try to find the next line and bound the PC
let srcline2 = file.lines[srcline1.line + 1];
if (!srcline2 || pc < srcline2.offset) {
let score = pc - srcline1.offset;
if (score < bestscore) {
bestid = wndid;
bestscore = score;
}
}
//console.log(hex(pc,4), srcline1, srcline2, wndid, lstfn, bestid, bestscore);
}
}
}
}
let pc = state.c ? (state.c.EPC || state.c.PC) : 0;
let best = findListingLocation(pc);
// if no appropriate listing found, use disassembly view
exports.projectWindows.createOrShow(bestid, true);
exports.projectWindows.createOrShow(best ? best.wndid : "#disasm", true);
}
// jump to (and highlight) the best known source line for an address --
// e.g. for a symbol/address breakpoint, which has no stored file/line of
// its own. Falls back to the disassembly view if no source line resolves.
function openLocationForPC(pc) {
if (!exports.platform.disassemble)
return;
let best = findListingLocation(pc);
let wnd = exports.projectWindows.createOrShow(best ? best.wndid : "#disasm", true);
if (best && wnd instanceof editors_1.SourceEditor) {
wnd.highlightLines(best.line - 1, best.line - 1);
}
else if (wnd instanceof editors_1.DisassemblerView) {
wnd.goToAddress(pc);
}
}
function uiDebugCallback(state) {
debugSessionActive = true;
@@ -1291,19 +1300,14 @@ function _resume() {
function resume() {
if (!checkRunReady())
return;
// If the active editor has breakpoints, resume with them
var wnd = exports.projectWindows.getActive();
if (wnd instanceof editors_1.SourceEditor) {
var bpPCs = wnd.getBreakpointPCs();
if (bpPCs.length > 0) {
if (!exports.platform.isRunning()) {
exports.projectWindows.refresh(false);
}
runToPC(bpPCs);
userPaused = false;
lastViewClicked = null;
return;
// If there are enabled breakpoints, resume with them armed
if (breakpoints_1.bpStore.getEnabled().length > 0 && armBreakpoints()) {
if (!exports.platform.isRunning()) {
exports.projectWindows.refresh(false);
}
userPaused = false;
lastViewClicked = null;
return;
}
clearBreakpoint();
if (!exports.platform.isRunning()) {
@@ -1401,6 +1405,74 @@ function getEditorPC() {
var wnd = exports.projectWindows.getActive();
return wnd && wnd.getCursorPC && wnd.getCursorPC();
}
// Arm all enabled breakpoints from the shared store: break when the CPU
// reaches any breakpoint location (and, for conditional breakpoints, when
// its condition evaluates true). Returns true if anything was armed.
function armBreakpoints() {
if (!checkRunReady())
return false;
const rbps = (0, breakpoints_1.resolveBreakpoints)().filter(r => r.bp.enabled && !r.error && r.pc >= 0);
if (rbps.length == 0)
return false;
exports.lastDebugState = null;
hideDebugInfo();
exports.projectWindows.refresh(false); // clear any "stopped here" highlight (e.g. Breakpoints window)
setupBreakpoint("toline");
const targets = new Map();
for (const r of rbps)
targets.set(r.pc, r.condFn || null);
if (exports.platform.runEvalAtPC) {
exports.platform.runEvalAtPC(targets);
}
else if (exports.platform.runToPC) {
// platform can't arm per-address conditions: break on locations, ignore conditions
if (rbps.some(r => r.condFn))
console.log("breakpoints: conditions not supported on this platform");
exports.platform.runToPC([...targets.keys()]);
}
else if (exports.platform.runEval) {
// platform has neither helper (e.g. vcs, which wraps its own emulator
// core's debug API directly) -- fall back to a hand-rolled matcher,
// same as the plain runToPC() function below does in this case
exports.platform.runEval((c) => {
const epc = c.EPC != null ? c.EPC : c.PC;
const cond = targets.get(epc);
return cond !== undefined && (cond ? cond(c) : true);
});
}
else {
return false;
}
return true;
}
// push store state into every open editor's gutter markers
function syncEditorBreakpoints() {
for (var id in exports.projectWindows.id2window) {
var wnd = exports.projectWindows.id2window[id];
if (wnd instanceof editors_1.SourceEditor) {
try {
wnd.syncBreakpoints();
}
catch (e) { }
}
}
}
// single store listener: persist, sync UI, and re-arm while running
// (mirrors the old gutter-toggle behavior)
breakpoints_1.bpStore.subscribe(() => {
syncEditorBreakpoints();
if (exports.projectWindows.getActiveID() == '#breakpoints') {
exports.projectWindows.refresh(false);
}
if (isPlatformReady() && exports.platform.isRunning()) {
if (breakpoints_1.bpStore.getEnabled().length > 0) {
armBreakpoints();
}
else {
clearBreakpoint();
}
}
});
function runToPC(pc) {
if (!checkRunReady())
return;
@@ -1457,10 +1529,17 @@ function resetPlatform() {
function resetAndRun() {
if (!checkRunReady())
return;
debugSessionActive = false; // plain run: hide debug shortcut chips
clearBreakpoint();
resetPlatform();
_resume();
// if there are enabled breakpoints, restart with them armed
if (breakpoints_1.bpStore.getEnabled().length > 0 && armBreakpoints()) {
debugSessionActive = true;
}
else {
debugSessionActive = false; // plain run: hide debug shortcut chips
exports.projectWindows.refresh(false); // clear any stale "stopped here" highlight
_resume();
}
(0, shortcutbar_1.refreshShortcutBar)();
}
function resetAndDebug() {
@@ -1824,7 +1903,6 @@ function openToolVersions() {
function openKeyboardShortcuts() {
const isMac = /Mac|iPhone|iPad/.test(navigator.platform);
const mod = isMac ? '&#8984;' : 'Ctrl';
const alt = isMac ? '&#8997;' : 'Alt';
const shift = isMac ? '&#8679;' : 'Shift';
const shortcut = (keys, desc) => `<tr><td><kbd>${keys}</kbd></td><td>${desc}</td></tr>`;
bootbox.dialog({
@@ -1832,13 +1910,11 @@ function openKeyboardShortcuts() {
onEscape: true,
message: `
<table class="help">
<tr><th colspan="2">Custom</th></tr>
<tr><th colspan="2">Editor</th></tr>
${shortcut(`${mod}+${shift}+F`, 'Search symbols, files, and docs')}
${shortcut(`${shift}+${alt}+F`, 'Format document, or selected range(s)')}
${shortcut('Tab', 'Insert to next tab stop, or indent selected range(s)')}
${shortcut(`${shift}+Tab`, 'Outdent line(s) or selected range(s)')}
${shortcut(`Enter`, 'Insert newline, keep cursor at same column pos')}
<tr><th colspan="2">Standard</th></tr>
${shortcut(`${mod}+${shift}+Backspace`, 'Delete line')}
<tr>
<td>Built-in</td>
<td>
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../../src/ide/ui.ts"],"names":[],"mappings":"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 truncated
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../../src/ide/ui.ts"],"names":[],"mappings":"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 truncated
+131 -1
View File
@@ -1,6 +1,6 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ProbeSymbolView = exports.ScanlineIOView = exports.ProbeLogView = exports.RasterStackMapView = exports.RasterPCHeatMapView = exports.AddressHeatMapView = exports.ProbeViewBaseBase = exports.MemoryMapView = exports.BinaryFileView = exports.VRAMMemoryView = exports.MemoryView = void 0;
exports.BreakpointsView = exports.ProbeSymbolView = exports.ScanlineIOView = exports.ProbeLogView = exports.RasterStackMapView = exports.RasterPCHeatMapView = exports.AddressHeatMapView = exports.ProbeViewBaseBase = exports.MemoryMapView = exports.BinaryFileView = exports.VRAMMemoryView = exports.MemoryView = void 0;
const baseplatform_1 = require("../../common/baseplatform");
const emu_1 = require("../../common/emu");
const vtextscroller_1 = require("../../common/vtextscroller");
@@ -9,6 +9,7 @@ const probe_1 = require("../../common/probe");
const util_1 = require("../../common/util");
const vlist_1 = require("../../common/vlist");
const ui_1 = require("../ui");
const breakpoints_1 = require("../breakpoints");
const baseviews_1 = require("./baseviews");
///
function ignoreSymbol(sym) {
@@ -982,4 +983,133 @@ class ProbeSymbolView extends ProbeViewBaseBase {
}
exports.ProbeSymbolView = ProbeSymbolView;
///
class BreakpointsView {
constructor() {
this.editingId = null; // breakpoint being edited in the add form
}
createDiv(parent) {
this.maindiv = (0, baseviews_1.newDiv)(parent, 'vertical-scroll bp-view');
this.render();
return this.maindiv[0];
}
refresh(moveCursor) {
this.render();
}
render() {
const div = this.maindiv.empty();
const resolved = (0, breakpoints_1.resolveBreakpoints)();
// add/edit form
const editing = this.editingId != null ? resolved.find(r => r.bp.id == this.editingId) : null;
const form = $('<div class="bp-form"/>');
const targetInput = $('<input type="text" class="bp-input" spellcheck="false"/>')
.attr('placeholder', 'address or symbol (e.g. $8000, mainloop)')
.val(editing && editing.bp.type == 'address' ? editing.bp.target : '');
const condInput = $('<input type="text" class="bp-input" spellcheck="false"/>')
.attr('placeholder', 'condition (e.g. A == $20 && X < 4)')
.val(editing ? editing.bp.condition || '' : '');
const submit = $('<button class="btn btn-default btn-xs bp-submit"/>').text(editing ? 'Save' : 'Add');
const cancel = $('<button class="btn btn-default btn-xs bp-submit"/>').text('Cancel');
cancel.toggle(editing != null);
cancel.click(() => { this.editingId = null; this.render(); });
const doSubmit = () => {
const target = String(targetInput.val() || '').trim();
const cond = String(condInput.val() || '').trim() || undefined;
if (editing) {
if (editing.bp.type == 'address')
breakpoints_1.bpStore.update(editing.bp.id, { target, condition: cond });
else
breakpoints_1.bpStore.update(editing.bp.id, { condition: cond });
this.editingId = null;
}
else if (target) {
breakpoints_1.bpStore.addAddressBreakpoint(target, cond);
targetInput.val('');
condInput.val('');
}
this.render();
};
submit.click(doSubmit);
form.append(targetInput, condInput, submit, cancel);
form.on('keydown', (e) => {
if (e.key == 'Enter') {
e.preventDefault();
doSubmit();
}
if (e.key == 'Escape') {
this.editingId = null;
this.render();
}
});
div.append(form);
// breakpoint rows
for (const r of resolved) {
div.append(this.renderRow(r));
}
if (resolved.length == 0) {
div.append($('<div class="bp-hint"/>')
.text('No breakpoints. Click a line in the editor gutter (left of the line numbers), or add an address or symbol above.'));
}
}
renderRow(r) {
const bp = r.bp;
const row = $('<div class="bp-row"/>');
// is the CPU currently stopped exactly at this breakpoint's address?
const c = ui_1.lastDebugState && ui_1.lastDebugState.c;
const stoppedPC = c ? (c.EPC != null ? c.EPC : c.PC) : undefined;
if (r.pc != null && stoppedPC === r.pc)
row.addClass('bp-current');
const chk = $('<input type="checkbox" class="bp-chk"/>')
.prop('checked', bp.enabled)
.attr('title', bp.enabled ? 'Disable breakpoint' : 'Enable breakpoint')
.on('click', (e) => { e.stopPropagation(); breakpoints_1.bpStore.setEnabled(bp.id, !bp.enabled); });
row.append(chk);
// location: click to jump to the source line (or disassembly, if unresolved)
let loc;
if (bp.type == 'source') {
loc = (0, util_1.getFilenameForPath)(bp.file) + ':' + bp.line;
}
else {
loc = bp.target;
}
const locSpan = $('<span class="bp-loc"/>').text(loc);
if (bp.type == 'source') {
locSpan.attr('title', bp.file + ':' + bp.line + ' (click to open)');
locSpan.on('click', () => {
const wnd = ui_1.projectWindows.createOrShow(bp.file);
if (wnd && wnd.highlightLines) {
wnd.highlightLines(bp.line - 1, bp.line - 1);
}
});
}
else if (r.pc != null) {
locSpan.attr('title', loc + ' ($' + (0, util_1.hex)(r.pc, 4) + ', click to open)');
locSpan.on('click', () => (0, ui_1.openLocationForPC)(r.pc));
}
row.append(locSpan);
// resolved address or error
const addrSpan = $('<span class="bp-addr"/>');
if (r.pc != null) {
addrSpan.text('$' + (0, util_1.hex)(r.pc, 4));
}
else {
addrSpan.text(r.error || '?').addClass('bp-error').attr('title', r.error);
}
row.append(addrSpan);
const condSpan = $('<span class="bp-cond"/>')
.text(bp.condition ? 'if ' + bp.condition : '')
.attr('title', bp.condition ? 'if ' + bp.condition : '');
row.append(condSpan);
const editBtn = $('<button class="bp-btn"><span class="glyphicon glyphicon-pencil"/></button>')
.attr('title', 'Edit breakpoint')
.on('click', () => { this.editingId = bp.id; this.render(); });
const delBtn = $('<button class="bp-btn"><span class="glyphicon glyphicon-trash"/></button>')
.attr('title', 'Delete breakpoint')
.on('click', () => breakpoints_1.bpStore.remove(bp.id));
row.append(editBtn, delBtn);
if (!bp.enabled)
row.addClass('bp-disabled');
return row;
}
}
exports.BreakpointsView = BreakpointsView;
//# sourceMappingURL=debugviews.js.map
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"debugviews.js","sourceRoot":"","sources":["../../../../src/ide/views/debugviews.ts"],"names":[],"mappings":"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 truncated
{"version":3,"file":"debugviews.js","sourceRoot":"","sources":["../../../../src/ide/views/debugviews.ts"],"names":[],"mappings":"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 truncated
+26 -27
View File
@@ -22,6 +22,7 @@ const mbo_1 = require("../../themes/mbo");
const settings_1 = require("../settings");
const tabs_1 = require("./tabs");
const ui_1 = require("../ui");
const breakpoints_1 = require("../breakpoints");
const keys_1 = require("../keys");
// Free the mod+shift+<letter> keys the IDE binds (see IDE_RESERVED_KEYS) so its
// debug shortcuts work while an editor is focused. CodeMirror claims two of
@@ -110,6 +111,7 @@ class SourceEditor {
this.editor.dispatch({
effects: (0, filters_1.createTextTransformFilterEffect)(exports.textMapFunctions),
});
this.syncBreakpoints(); // render breakpoints from the shared store
if (ui_1.current_project.getToolForFilename(this.path).startsWith("remote:")) {
this.refreshDelayMsec = 1000; // remote URLs get slower refresh
}
@@ -251,10 +253,9 @@ class SourceEditor {
gutter_1.statusMarkers.gutter,
view_1.EditorView.updateListener.of(update => {
for (let effect of update.transactions.flatMap(tr => tr.effects)) {
if (effect.is(gutter_1.breakpointMarkers.set)) {
if (ui_1.platform.isRunning()) {
this.runToBreakpoints(update.state);
}
if (effect.is(gutter_1.breakpointMarkers.requestToggle)) {
// the store notifies listeners, which syncs markers and re-arms
breakpoints_1.bpStore.toggleSourceLine(this.path, effect.value);
}
if (effect.is(gutter_1.currentPcMarker.runToLine)) {
const lineNum = effect.value;
@@ -656,29 +657,11 @@ class SourceEditor {
redoStep() {
(0, commands_1.redo)(this.editor);
}
getBreakpointPCs() {
if (this.sourcefile == null)
return [];
const pcs = [];
const bpField = this.editor.state.field(gutter_1.breakpointMarkers.field);
const cursor = bpField.iter();
while (cursor.value) {
const line = this.editor.state.doc.lineAt(cursor.from).number;
const pc = this.sourcefile.line2offset[line];
if (pc >= 0)
pcs.push(pc);
cursor.next();
}
return pcs;
}
runToBreakpoints(state) {
const pcs = this.getBreakpointPCs();
if (pcs.length > 0) {
(0, ui_1.runToPC)(pcs);
}
else {
(0, ui_1.clearBreakpoint)();
}
// push the store's breakpoints for this file into the gutter markers
syncBreakpoints() {
const markers = breakpoints_1.bpStore.getSourceBreakpointsForFile(this.path)
.map(bp => ({ line: bp.line, enabled: bp.enabled }));
this.editor.dispatch({ effects: gutter_1.breakpointMarkers.setAll.of(markers) });
}
}
exports.SourceEditor = SourceEditor;
@@ -871,6 +854,22 @@ class ListingView extends DisassemblerView {
}
}
}
// jump to an arbitrary address in this listing. Overrides the
// DisassemblerView version, which looks for lines starting with a plain
// "XXXX\t" hex address -- that's the synthetic disassembly text format,
// not this raw compiler-generated listing, so it never matches here.
goToAddress(addr) {
this.refreshListing();
const res = this.assemblyfile && this.assemblyfile.findLineForOffset(addr, exports.PC_LINE_LOOKAHEAD);
if (res) {
const line = this.disasmview.state.doc.line(res.line);
this.disasmview.dispatch({
selection: { anchor: line.from, head: line.from },
effects: view_1.EditorView.scrollIntoView(line.from, { y: "center" }),
});
}
this.disasmview.focus();
}
}
exports.ListingView = ListingView;
///
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"editors.js","sourceRoot":"","sources":["../../../../src/ide/views/editors.ts"],"names":[],"mappings":"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 truncated
{"version":3,"file":"editors.js","sourceRoot":"","sources":["../../../../src/ide/views/editors.ts"],"names":[],"mappings":"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 truncated
+27 -24
View File
@@ -7,7 +7,10 @@ const util_1 = require("../../common/util");
const setOffset = state_1.StateEffect.define();
const setBytes = state_1.StateEffect.define();
const setClock = state_1.StateEffect.define();
const toggleBreakpoint = state_1.StateEffect.define();
// clicking the gutter only *requests* a toggle; the breakpoint store
// (breakpoints.ts) decides the new state and syncs it back via setAll
const requestToggleBreakpoint = state_1.StateEffect.define();
const setAllBreakpoints = state_1.StateEffect.define();
const setErrors = state_1.StateEffect.define();
const setCurrentPc = state_1.StateEffect.define();
const runToLineEffect = state_1.StateEffect.define();
@@ -77,24 +80,16 @@ const breakpointField = state_1.StateField.define({
update(value, tr) {
value = value.map(tr.changes);
for (let e of tr.effects) {
if (e.is(toggleBreakpoint)) {
if (e.value === null) {
value = state_1.RangeSet.empty;
}
else {
const line = e.value;
if (line >= 1 && line <= tr.state.doc.lines) {
const pos = tr.state.doc.line(line).from;
let hasBreakpoint = false;
value.between(pos, pos, () => { hasBreakpoint = true; return false; });
if (hasBreakpoint) {
value = value.update({ filter: from => from !== pos });
}
else {
value = value.update({ add: [BREAKPOINT_MARKER.range(pos)] });
}
}
if (e.is(setAllBreakpoints)) {
// replace the whole marker set with the store's state for this file
const ranges = [];
const bps = e.value.filter(bp => bp.line >= 1 && bp.line <= tr.state.doc.lines)
.sort((a, b) => a.line - b.line);
for (let bp of bps) {
const pos = tr.state.doc.line(bp.line).from;
ranges.push((bp.enabled ? BREAKPOINT_MARKER : DISABLED_BREAKPOINT_MARKER).range(pos));
}
value = state_1.RangeSet.of(ranges, true);
}
}
return value;
@@ -192,16 +187,23 @@ const BREAKPOINT_PLACEHOLDER_MARKER = new class extends view_1.GutterMarker {
return span;
}
};
const BREAKPOINT_MARKER = new class extends view_1.GutterMarker {
class BreakpointMarker extends view_1.GutterMarker {
constructor(enabled) {
super();
this.enabled = enabled;
}
toDOM() {
const span = document.createElement("span");
span.innerHTML = "●";
span.style.color = "rgba(255, 0, 0, 1.0)";
span.style.color = this.enabled ? "rgba(255, 0, 0, 1.0)" : "rgba(255, 255, 255, 0.35)";
span.style.cursor = "pointer";
span.title = "Click to run to here"; // "Click to toggle breakpoint";
span.title = this.enabled ? "Breakpoint (click to remove; manage in Breakpoints window)" : "Disabled breakpoint (click to remove)";
return span;
}
};
eq(other) { return this.enabled == other.enabled; }
}
const BREAKPOINT_MARKER = new BreakpointMarker(true);
const DISABLED_BREAKPOINT_MARKER = new BreakpointMarker(false);
class ErrorMarker extends view_1.GutterMarker {
constructor(line, msg) {
super();
@@ -301,7 +303,7 @@ const statusGutter = (0, view_1.gutter)({
else {
const lineNum = view.state.doc.lineAt(line.from).number;
view.dispatch({
effects: toggleBreakpoint.of(lineNum)
effects: requestToggleBreakpoint.of(lineNum)
});
}
return true;
@@ -342,7 +344,8 @@ exports.clock = {
gutter: clockGutter,
};
exports.breakpointMarkers = {
set: toggleBreakpoint,
requestToggle: requestToggleBreakpoint,
setAll: setAllBreakpoints,
field: breakpointField,
};
exports.errorMarkers = {
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"gutter.js","sourceRoot":"","sources":["../../../../src/ide/views/gutter.ts"],"names":[],"mappings":"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 truncated
{"version":3,"file":"gutter.js","sourceRoot":"","sources":["../../../../src/ide/views/gutter.ts"],"names":[],"mappings":"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 truncated
+1 -1
View File
@@ -1 +1 @@
{"root":["../../test/unit/testanalysis.ts","../../test/unit/testassembler.ts","../../test/unit/testassetscan.ts","../../test/unit/testbaseplatform.ts","../../test/unit/testbataribasic.ts","../../test/unit/testcommon.ts","../../test/unit/testcommon_ext.ts","../../test/unit/testdasm.ts","../../test/unit/testecs.ts","../../test/unit/testelfparser.ts","../../test/unit/testemu.ts","../../test/unit/testkeys.ts","../../test/unit/testlibretro.ts","../../test/unit/testlinking.ts","../../test/unit/testpixelclipboard.ts","../../test/unit/testpresets.ts","../../test/unit/testsearchdebuggerhit.ts","../../test/unit/testsearchindex.ts","../../test/unit/testsearchsymbols.ts","../../test/unit/testsearchtoolchain.ts","../../test/unit/teststepover.ts","../../test/unit/teststorage.ts","../../test/unit/testtoolmeta.ts","../../test/unit/testtoolselect.ts","../../test/unit/testutil.ts","../../test/unit/testwasishim.ts","../../src/common/analysis.ts","../../src/common/audio.ts","../../src/common/baseplatform.ts","../../src/common/binutils.ts","../../src/common/devices.ts","../../src/common/emu.ts","../../src/common/gbpalette.ts","../../src/common/mameplatform.ts","../../src/common/probe.ts","../../src/common/recorder.ts","../../src/common/searchtypes.ts","../../src/common/teletype.ts","../../src/common/tokenizer.ts","../../src/common/toolmeta.ts","../../src/common/util.ts","../../src/common/vlist.ts","../../src/common/vtextscroller.ts","../../src/common/wasmplatform.ts","../../src/common/workertypes.ts","../../src/common/audio/CommodoreTape.ts","../../src/common/basic/compiler.ts","../../src/common/basic/fuzz.ts","../../src/common/basic/run.ts","../../src/common/basic/runtime.ts","../../src/common/cpu/6809.ts","../../src/common/cpu/ARM.ts","../../src/common/cpu/F8.ts","../../src/common/cpu/MOS6502.ts","../../src/common/cpu/SM83.ts","../../src/common/cpu/ZilogZ80.ts","../../src/common/cpu/disasm6502.ts","../../src/common/cpu/disasmF8.ts","../../src/common/cpu/disasmHuC6280.ts","../../src/common/cpu/disasmSM83.ts","../../src/common/cpu/disasmz80.ts","../../src/common/ecs/binpack.ts","../../src/common/ecs/compiler.ts","../../src/common/ecs/decoder.ts","../../src/common/ecs/ecs.ts","../../src/common/ecs/main.ts","../../src/common/hdl/fuzz.ts","../../src/common/hdl/hdlruntime.ts","../../src/common/hdl/hdltypes.ts","../../src/common/hdl/hdlwasm.ts","../../src/common/hdl/vxmlparser.ts","../../src/common/hdl/vxmltest.ts","../../src/common/symbols/doccomment.ts","../../src/common/symbols/index.ts","../../src/common/wasi/libretro.ts","../../src/common/wasi/wasishim.ts","../../src/ide/dialogs.ts","../../src/ide/embedui.ts","../../src/ide/errorreport.ts","../../src/ide/keys.ts","../../src/ide/pixeleditor.ts","../../src/ide/project.ts","../../src/ide/services.ts","../../src/ide/settings.ts","../../src/ide/shareexport.ts","../../src/ide/shortcutbar.ts","../../src/ide/storage.ts","../../src/ide/sync.ts","../../src/ide/toolbar.ts","../../src/ide/ui.ts","../../src/ide/waveform.ts","../../src/ide/windows.ts","../../src/ide/search/debuggerhit.ts","../../src/ide/search/docssource.ts","../../src/ide/search/projectsource.ts","../../src/ide/search/searchview.ts","../../src/ide/search/service.ts","../../src/ide/search/symbolindex.ts","../../src/ide/search/toolchainsource.ts","../../src/ide/search/types.ts","../../src/ide/views/assetdecorations.ts","../../src/ide/views/asseteditor.ts","../../src/ide/views/baseviews.ts","../../src/ide/views/debug.ts","../../src/ide/views/debugviews.ts","../../src/ide/views/editors.ts","../../src/ide/views/filters.ts","../../src/ide/views/gutter.ts","../../src/ide/views/includedecorations.ts","../../src/ide/views/tabs.ts","../../src/ide/views/traceviews.ts","../../src/ide/views/treeviews.ts","../../src/ide/views/visuals.ts","../../src/machine/apple2.ts","../../src/machine/arm32.ts","../../src/machine/astrocade.ts","../../src/machine/atari7800.ts","../../src/machine/atari8.ts","../../src/machine/c64.ts","../../src/machine/channelf.ts","../../src/machine/coleco.ts","../../src/machine/cpc.ts","../../src/machine/devel.ts","../../src/machine/exidy.ts","../../src/machine/galaxian.ts","../../src/machine/gb.ts","../../src/machine/kim1.ts","../../src/machine/mcr.ts","../../src/machine/msx.ts","../../src/machine/mw8080bw.ts","../../src/machine/pacman.ts","../../src/machine/sms.ts","../../src/machine/vdp_z80.ts","../../src/machine/vic20.ts","../../src/machine/vicdual.ts","../../src/machine/williams.ts","../../src/machine/zx.ts","../../src/machine/chips/antic.ts","../../src/machine/chips/gtia.ts","../../src/machine/chips/pokey.ts","../../src/machine/chips/tms9918a.ts","../../src/parser/lang-6502.ts","../../src/parser/lang-basic.ts","../../src/parser/lang-bataribasic.ts","../../src/parser/lang-dialog.ts","../../src/parser/lang-fastbasic.ts","../../src/parser/lang-inform6.ts","../../src/parser/lang-verilog.ts","../../src/parser/lang-wiz.ts","../../src/parser/lang-z80.ts","../../src/parser/registry.ts","../../src/parser/tokens-6502.ts","Line truncated
{"root":["../../test/unit/testanalysis.ts","../../test/unit/testassembler.ts","../../test/unit/testassetscan.ts","../../test/unit/testbaseplatform.ts","../../test/unit/testbataribasic.ts","../../test/unit/testbreakpoints.ts","../../test/unit/testcommon.ts","../../test/unit/testcommon_ext.ts","../../test/unit/testdasm.ts","../../test/unit/testecs.ts","../../test/unit/testelfparser.ts","../../test/unit/testemu.ts","../../test/unit/testkeys.ts","../../test/unit/testlibretro.ts","../../test/unit/testlinking.ts","../../test/unit/testlistinglocation.ts","../../test/unit/testpixelclipboard.ts","../../test/unit/testpresets.ts","../../test/unit/testrunevalatpc.ts","../../test/unit/testsearchdebuggerhit.ts","../../test/unit/testsearchindex.ts","../../test/unit/testsearchsymbols.ts","../../test/unit/testsearchtoolchain.ts","../../test/unit/teststepover.ts","../../test/unit/teststorage.ts","../../test/unit/testtoolmeta.ts","../../test/unit/testtoolselect.ts","../../test/unit/testutil.ts","../../test/unit/testwasishim.ts","../../src/common/analysis.ts","../../src/common/audio.ts","../../src/common/baseplatform.ts","../../src/common/binutils.ts","../../src/common/devices.ts","../../src/common/emu.ts","../../src/common/gbpalette.ts","../../src/common/mameplatform.ts","../../src/common/probe.ts","../../src/common/recorder.ts","../../src/common/searchtypes.ts","../../src/common/teletype.ts","../../src/common/tokenizer.ts","../../src/common/toolmeta.ts","../../src/common/util.ts","../../src/common/vlist.ts","../../src/common/vtextscroller.ts","../../src/common/wasmplatform.ts","../../src/common/workertypes.ts","../../src/common/audio/CommodoreTape.ts","../../src/common/basic/compiler.ts","../../src/common/basic/fuzz.ts","../../src/common/basic/run.ts","../../src/common/basic/runtime.ts","../../src/common/cpu/6809.ts","../../src/common/cpu/ARM.ts","../../src/common/cpu/F8.ts","../../src/common/cpu/MOS6502.ts","../../src/common/cpu/SM83.ts","../../src/common/cpu/ZilogZ80.ts","../../src/common/cpu/disasm6502.ts","../../src/common/cpu/disasmF8.ts","../../src/common/cpu/disasmHuC6280.ts","../../src/common/cpu/disasmSM83.ts","../../src/common/cpu/disasmz80.ts","../../src/common/ecs/binpack.ts","../../src/common/ecs/compiler.ts","../../src/common/ecs/decoder.ts","../../src/common/ecs/ecs.ts","../../src/common/ecs/main.ts","../../src/common/hdl/fuzz.ts","../../src/common/hdl/hdlruntime.ts","../../src/common/hdl/hdltypes.ts","../../src/common/hdl/hdlwasm.ts","../../src/common/hdl/vxmlparser.ts","../../src/common/hdl/vxmltest.ts","../../src/common/symbols/doccomment.ts","../../src/common/symbols/index.ts","../../src/common/wasi/libretro.ts","../../src/common/wasi/wasishim.ts","../../src/ide/breakcond.ts","../../src/ide/breakpoints.ts","../../src/ide/dialogs.ts","../../src/ide/embedui.ts","../../src/ide/errorreport.ts","../../src/ide/keys.ts","../../src/ide/pixeleditor.ts","../../src/ide/project.ts","../../src/ide/services.ts","../../src/ide/settings.ts","../../src/ide/shareexport.ts","../../src/ide/shortcutbar.ts","../../src/ide/storage.ts","../../src/ide/sync.ts","../../src/ide/toolbar.ts","../../src/ide/ui.ts","../../src/ide/waveform.ts","../../src/ide/windows.ts","../../src/ide/search/debuggerhit.ts","../../src/ide/search/docssource.ts","../../src/ide/search/listinglocation.ts","../../src/ide/search/projectsource.ts","../../src/ide/search/searchview.ts","../../src/ide/search/service.ts","../../src/ide/search/symbolindex.ts","../../src/ide/search/toolchainsource.ts","../../src/ide/search/types.ts","../../src/ide/views/assetdecorations.ts","../../src/ide/views/asseteditor.ts","../../src/ide/views/baseviews.ts","../../src/ide/views/debug.ts","../../src/ide/views/debugviews.ts","../../src/ide/views/editors.ts","../../src/ide/views/filters.ts","../../src/ide/views/gutter.ts","../../src/ide/views/includedecorations.ts","../../src/ide/views/tabs.ts","../../src/ide/views/traceviews.ts","../../src/ide/views/treeviews.ts","../../src/ide/views/visuals.ts","../../src/machine/apple2.ts","../../src/machine/arm32.ts","../../src/machine/astrocade.ts","../../src/machine/atari7800.ts","../../src/machine/atari8.ts","../../src/machine/c64.ts","../../src/machine/channelf.ts","../../src/machine/coleco.ts","../../src/machine/cpc.ts","../../src/machine/devel.ts","../../src/machine/exidy.ts","../../src/machine/galaxian.ts","../../src/machine/gb.ts","../../src/machine/kim1.ts","../../src/machine/mcr.ts","../../src/machine/msx.ts","../../src/machine/mw8080bw.ts","../../src/machine/pacman.ts","../../src/machine/sms.ts","../../src/machine/vdp_z80.ts","../../src/machine/vic20.ts","../../src/machine/vicdual.ts","../../src/machine/williams.ts","../../src/machine/zx.ts","../../src/machine/chips/antic.ts","../../src/machine/chips/gtia.ts","../../src/machine/chips/pokey.ts","../../src/machine/chips/tms9918a.ts","../../src/parser/lang-6502.ts","../../src/parser/lang-basic.ts","../../src/parser/lang-bataribasic.ts","../../src/parser/lang-dialog.ts","../../src/parser/Line truncated
+100
View File
@@ -0,0 +1,100 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const mocha_1 = require("mocha");
const breakcond_1 = require("../../src/ide/breakcond");
const assert_1 = __importDefault(require("assert"));
const ctx = {
cpuFields: new Set(['PC', 'A', 'X', 'Y', 'SP']),
symbol: (name) => ({ mainloop: 0x800, foo: 0x20 }[name]),
readMem: (a) => (a == 0x10 ? 0x2a : 0),
};
function evalc(src, c) {
return (0, breakcond_1.compileCondition)(src, ctx)(c);
}
(0, mocha_1.describe)('Breakpoints', () => {
it('should evaluate register comparisons', () => {
let c = { PC: 0x800, A: 5, X: 3, Y: 0, SP: 0x1ff };
assert_1.default.equal(evalc('A == 5', c), true);
assert_1.default.equal(evalc('A != 5', c), false);
assert_1.default.equal(evalc('A < 5', c), false);
assert_1.default.equal(evalc('A <= 5', c), true);
assert_1.default.equal(evalc('X > 2 && X < 4', c), true);
assert_1.default.equal(evalc('A == 5 && X == 4', c), false);
assert_1.default.equal(evalc('A == 5 || X == 4', c), true);
assert_1.default.equal(evalc('!(A == 5)', c), false);
});
it('should parse numbers', () => {
let c = { PC: 0, A: 0xff };
assert_1.default.equal(evalc('A == $ff', c), true);
assert_1.default.equal(evalc('A == 0xff', c), true);
assert_1.default.equal(evalc('A == 255', c), true);
assert_1.default.equal(evalc('A == $FF', c), true);
});
it('should resolve symbols at compile time', () => {
let c = { PC: 0x800, A: 0 };
assert_1.default.equal(evalc('PC == mainloop', c), true);
assert_1.default.equal(evalc('A == foo', c), false);
assert_1.default.throws(() => (0, breakcond_1.compileCondition)('A == bar', ctx));
});
it('should support memory reads', () => {
let c = { PC: 0, A: 0x2a };
assert_1.default.equal(evalc('[0x10] == $2a', c), true);
assert_1.default.equal(evalc('A == [$10]', c), true);
assert_1.default.equal(evalc('[foo] == 0', c), true); // foo is at $20, memory there reads 0
assert_1.default.equal(evalc('[0x99] == 0', c), true);
});
it('should support arithmetic and bitwise ops', () => {
let c = { PC: 0, A: 0x0f, X: 2 };
assert_1.default.equal(evalc('A + 1 == $10', c), true);
assert_1.default.equal(evalc('A * 2 == $1e', c), true);
assert_1.default.equal(evalc('A / 4 == 3', c), true);
assert_1.default.equal(evalc('A % 4 == 3', c), true);
assert_1.default.equal(evalc('(A & $0f) == $0f', c), true);
assert_1.default.equal(evalc('(A | $f0) == $ff', c), true);
assert_1.default.equal(evalc('(A ^ $0f) == 0', c), true);
assert_1.default.equal(evalc('A & ($0f == $0f)', c), true); // == binds tighter than &
assert_1.default.equal(evalc('1 << X == 4', c), true);
assert_1.default.equal(evalc('A >> 2 == 3', c), true);
assert_1.default.equal(evalc('~A == -$10', c), true);
assert_1.default.equal(evalc('-A == -15', c), true);
});
it('should support parentheses and precedence', () => {
let c = { PC: 0, A: 3, X: 4 };
assert_1.default.equal(evalc('(A + 1) * X == $10', c), true);
assert_1.default.equal(evalc('A + 1 * X == 7', c), true);
assert_1.default.equal(evalc('A == 3 && X == 4 || A == 9', c), true);
});
it('should not throw at eval time', () => {
let c = { PC: 0, A: 0 };
// division by zero, unreadable memory: condition is just false
assert_1.default.equal(evalc('A / 0 == 1', c), false);
assert_1.default.equal(evalc('A % 0 == 1', c), false);
});
it('should reject bad syntax', () => {
assert_1.default.throws(() => (0, breakcond_1.compileCondition)('A ==', ctx));
assert_1.default.throws(() => (0, breakcond_1.compileCondition)('A == (5', ctx));
assert_1.default.throws(() => (0, breakcond_1.compileCondition)('A @ 5', ctx));
assert_1.default.throws(() => (0, breakcond_1.compileCondition)('== 5', ctx));
assert_1.default.throws(() => (0, breakcond_1.compileCondition)('', ctx));
assert_1.default.throws(() => (0, breakcond_1.compileCondition)('A == 5 3', ctx));
});
it('should reject unknown identifiers', () => {
assert_1.default.throws(() => (0, breakcond_1.compileCondition)('QQ == 5', ctx));
// identifiers that look like symbols but aren't in the map either
assert_1.default.throws(() => (0, breakcond_1.compileCondition)('[QQQ] == 5', ctx));
});
it('should parse targets', () => {
const sym = (name) => ({ mainloop: 0x800 }[name]);
assert_1.default.equal((0, breakcond_1.parseTarget)('$1234', sym).pc, 0x1234);
assert_1.default.equal((0, breakcond_1.parseTarget)('0xABC', sym).pc, 0xabc);
assert_1.default.equal((0, breakcond_1.parseTarget)('48879', sym).pc, 0xbeef);
assert_1.default.equal((0, breakcond_1.parseTarget)('mainloop', sym).pc, 0x800);
assert_1.default.ok((0, breakcond_1.parseTarget)('nosuch', sym).error);
assert_1.default.ok((0, breakcond_1.parseTarget)('', sym).error);
assert_1.default.ok((0, breakcond_1.parseTarget)('12ab', sym).error); // neither number nor symbol
});
});
//# sourceMappingURL=testbreakpoints.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"testbreakpoints.js","sourceRoot":"","sources":["../../../test/unit/testbreakpoints.ts"],"names":[],"mappings":"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 truncated
+99
View File
@@ -0,0 +1,99 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const assert_1 = __importDefault(require("assert"));
const mocha_1 = require("mocha");
const workertypes_1 = require("../../src/common/workertypes");
const listinglocation_1 = require("../../src/ide/search/listinglocation");
const LOOKAHEAD = 64;
function makeFile(lines) {
return new workertypes_1.SourceFile(lines, '');
}
// a context where every candidate window id is "known" and file-prefix
// lookup just strips a trailing extension, like the real IDE's windows
function makeContext(overrides = {}) {
return Object.assign({ listings: {}, filename2path: {}, isWindow: () => true, findWindowWithFilePrefix: (fn) => fn.replace(/\.lst$/, '') }, overrides);
}
(0, mocha_1.describe)('findListingLocation', function () {
(0, mocha_1.it)('returns null when there are no listings', function () {
const ctx = makeContext({ listings: {} });
assert_1.default.strictEqual((0, listinglocation_1.findListingLocation)(0x100, ctx, LOOKAHEAD), null);
});
(0, mocha_1.it)('returns null when the PC matches no line in any listing', function () {
const ctx = makeContext({
listings: {
'game.c': { lines: [], sourcefile: makeFile([{ line: 1, offset: 0 }]) },
},
});
assert_1.default.strictEqual((0, listinglocation_1.findListingLocation)(0x9999, ctx, LOOKAHEAD), null);
});
(0, mocha_1.it)('resolves a sourcefile-only listing via findWindowWithFilePrefix', function () {
const ctx = makeContext({
listings: {
'game.c.lst': { lines: [], sourcefile: makeFile([{ line: 1, offset: 0x10 }]) },
},
});
const loc = (0, listinglocation_1.findListingLocation)(0x10, ctx, LOOKAHEAD);
assert_1.default.ok(loc);
assert_1.default.strictEqual(loc.wndid, 'game.c'); // .lst stripped by findWindowWithFilePrefix
assert_1.default.strictEqual(loc.line, 1);
});
(0, mocha_1.it)('prefers the assembly listing over the source file when both are present', function () {
const ctx = makeContext({
listings: {
'game.c.lst': {
lines: [],
sourcefile: makeFile([{ line: 1, offset: 0x10 }]),
assemblyfile: makeFile([{ line: 7, offset: 0x10 }]),
},
},
filename2path: { 'game.c.lst': 'game.c.lst' },
});
const loc = (0, listinglocation_1.findListingLocation)(0x10, ctx, LOOKAHEAD);
assert_1.default.ok(loc);
assert_1.default.strictEqual(loc.wndid, 'game.c.lst'); // resolved via filename2path, not findWindowWithFilePrefix
assert_1.default.strictEqual(loc.line, 7);
});
(0, mocha_1.it)('skips a listing whose window is not known', function () {
const ctx = makeContext({
listings: {
'unknown.c.lst': { lines: [], sourcefile: makeFile([{ line: 1, offset: 0x10 }]) },
},
isWindow: () => false,
});
assert_1.default.strictEqual((0, listinglocation_1.findListingLocation)(0x10, ctx, LOOKAHEAD), null);
});
(0, mocha_1.it)('picks the closest match among several listings', function () {
const ctx = makeContext({
listings: {
'far.c.lst': { lines: [], sourcefile: makeFile([{ line: 1, offset: 0x00 }]) },
'near.c.lst': { lines: [], sourcefile: makeFile([{ line: 1, offset: 0x0e }]) },
},
});
// pc=0x10: 'near' (offset 0x0e, score 2) beats 'far' (offset 0x00, score 16)
const loc = (0, listinglocation_1.findListingLocation)(0x10, ctx, LOOKAHEAD);
assert_1.default.ok(loc);
assert_1.default.strictEqual(loc.wndid, 'near.c');
});
(0, mocha_1.it)('finds the line closely preceding the PC when there is no exact match', function () {
const ctx = makeContext({
listings: {
'game.c.lst': { lines: [], sourcefile: makeFile([{ line: 5, offset: 0x100 }]) },
},
});
const loc = (0, listinglocation_1.findListingLocation)(0x103, ctx, LOOKAHEAD);
assert_1.default.ok(loc);
assert_1.default.strictEqual(loc.line, 5);
});
(0, mocha_1.it)('does not look further behind the PC than the given lookahead', function () {
const ctx = makeContext({
listings: {
'game.c.lst': { lines: [], sourcefile: makeFile([{ line: 5, offset: 0x100 }]) },
},
});
assert_1.default.strictEqual((0, listinglocation_1.findListingLocation)(0x100 + 5, ctx, 4), null);
});
});
//# sourceMappingURL=testlistinglocation.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"testlistinglocation.js","sourceRoot":"","sources":["../../../test/unit/testlistinglocation.ts"],"names":[],"mappings":"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"}
+127
View File
@@ -0,0 +1,127 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const assert_1 = __importDefault(require("assert"));
const mocha_1 = require("mocha");
const baseplatform_1 = require("../../src/common/baseplatform");
// Minimal platform whose PC just increments by 1 per virtual clock tick,
// for exercising BaseDebugPlatform.runEvalAtPC() / runToPC() in isolation
// (mirrors the TestStepPlatform pattern in teststepover.ts).
class TestClockPlatform extends baseplatform_1.BaseDebugPlatform {
constructor() {
super(...arguments);
this.pc = 0;
this.epc = undefined;
this.paused = true;
}
getPC() { return this.pc; }
getSP() { return 0; }
getCPUState() { return { PC: this.pc, EPC: this.epc }; }
isStable() { return true; }
saveState() { return { c: { PC: this.pc, EPC: this.epc } }; }
loadState(state) { this.pc = state.c.PC; this.epc = state.c.EPC; }
pause() { this.paused = true; }
resume() { this.paused = false; }
isRunning() { return !this.paused; }
advance(novideo) { return 0; }
tick() {
this.pc = (this.pc + 1) & 0xffff;
this.debugClock++;
this.evalDebugCondition();
}
// advance up to `budget` ticks, stopping early on a breakpoint hit
run(budget) {
for (let n = 0; n < budget && !this.wasBreakpointHit(); n++)
this.tick();
}
}
(0, mocha_1.describe)('BaseDebugPlatform.runEvalAtPC', function () {
(0, mocha_1.it)('stops at an unconditional target address', function () {
const p = new TestClockPlatform();
p.runEvalAtPC(new Map([[5, null]]));
p.run(20);
assert_1.default.ok(p.wasBreakpointHit());
assert_1.default.strictEqual(p.debugBreakState.c.PC, 5);
});
(0, mocha_1.it)('does not stop before the target address is reached', function () {
const p = new TestClockPlatform();
p.runEvalAtPC(new Map([[5, null]]));
p.run(4); // pc reaches 4, not yet 5
assert_1.default.ok(!p.wasBreakpointHit());
});
(0, mocha_1.it)('does not stop at a conditional address whose condition stays false', function () {
const p = new TestClockPlatform();
p.runEvalAtPC(new Map([[5, () => false]]));
p.run(20);
assert_1.default.ok(!p.wasBreakpointHit());
});
(0, mocha_1.it)('stops at a conditional address once its condition becomes true', function () {
const p = new TestClockPlatform();
let armed = false;
p.runEvalAtPC(new Map([[5, () => armed]]));
p.run(4); // reaches pc=4, condition still false, hasn't hit 5 yet
assert_1.default.ok(!p.wasBreakpointHit());
armed = true;
p.run(20);
assert_1.default.ok(p.wasBreakpointHit());
assert_1.default.strictEqual(p.debugBreakState.c.PC, 5);
});
(0, mocha_1.it)('a failed condition does not consume the breakpoint -- it re-checks on later passes', function () {
const p = new TestClockPlatform();
let hits = 0;
p.runEvalAtPC(new Map([[3, () => { hits++; return false; }]]));
p.run(3);
assert_1.default.strictEqual(hits, 1); // checked once, at pc==3
assert_1.default.ok(!p.wasBreakpointHit());
});
(0, mocha_1.it)('prefers EPC over PC when present (bankswitched targets)', function () {
const p = new TestClockPlatform();
p.epc = 100; // banked address differs from the raw (unbanked) PC
p.runEvalAtPC(new Map([[100, null]]));
p.run(1);
assert_1.default.ok(p.wasBreakpointHit());
});
(0, mocha_1.it)('matches whichever of several independent targets is reached first', function () {
const p = new TestClockPlatform();
p.runEvalAtPC(new Map([[50, null], [3, null]]));
p.run(20);
assert_1.default.ok(p.wasBreakpointHit());
assert_1.default.strictEqual(p.debugBreakState.c.PC, 3);
});
(0, mocha_1.it)('ignores PCs not present in the target map at all', function () {
const p = new TestClockPlatform();
p.runEvalAtPC(new Map([[5, null]]));
p.run(4); // stop at pc=4, which isn't a target
assert_1.default.ok(!p.wasBreakpointHit());
assert_1.default.strictEqual(p.pc, 4);
});
// Regression test for the "breakpoints don't fire" bug: armBreakpoints()
// in ui.ts used to call platform.runEval() directly, which skips the
// debugTargetClock bump that runToPC() (and every other run/step method)
// does before arming. That bump is what keeps a fresh arm from being
// gated behind a stale debugTargetClock left over from a prior session.
// runEvalAtPC() exists specifically to carry that bookkeeping along with
// a per-address condition map, so it must bump the clock exactly like
// runToPC() does.
(0, mocha_1.it)('bumps debugTargetClock the same way runToPC() does', function () {
const p1 = new TestClockPlatform();
const before1 = p1.debugTargetClock;
p1.runToPC([5]);
const delta1 = p1.debugTargetClock - before1;
const p2 = new TestClockPlatform();
const before2 = p2.debugTargetClock;
p2.runEvalAtPC(new Map([[5, null]]));
const delta2 = p2.debugTargetClock - before2;
assert_1.default.strictEqual(delta1, 1);
assert_1.default.strictEqual(delta2, delta1);
});
(0, mocha_1.it)('still bumps debugTargetClock relative to a stale prior value (not reset to 0)', function () {
const p = new TestClockPlatform();
p.debugTargetClock = 12345; // simulate a leftover value from an earlier debug session
p.runEvalAtPC(new Map([[5, null]]));
assert_1.default.strictEqual(p.debugTargetClock, 12346);
});
});
//# sourceMappingURL=testrunevalatpc.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"testrunevalatpc.js","sourceRoot":"","sources":["../../../test/unit/testrunevalatpc.ts"],"names":[],"mappings":"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 truncated
Loaded 100 of 130 files, more files were not shown because too many files have changed in this diff. Show more