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

This commit is contained in:
sehugg committed 2026-08-21 17:27:05 +00:00
1 parent d171ff68cd
commit cb6d49d9de
174 files changed
+2382 -268

No files matched your search

+16
View File
@@ -572,6 +572,22 @@ div.asset_block.asset_highlight {
background: rgba(153, 204, 153, 0.3);
text-decoration: underline;
}
.include-link-badge {
display: inline-block;
padding: 0 4px;
margin: 0 2px;
border-radius: 3px;
background: rgba(153, 204, 238, 0.15);
color: #99ccee;
font-size: 0.85em;
cursor: pointer;
opacity: 0.4;
}
.include-link-badge:hover {
opacity: 1;
background: rgba(153, 204, 238, 0.3);
text-decoration: underline;
}
.asset_no_assets {
color: #999;
padding: 2em;
@@ -1,4 +1,4 @@
import{a as i0}from"./chunk-MOWDEMRA.js";import{A as r0,I as s0,m as e0,r as t0,x as O}from"./chunk-6POV4IU3.js";import{J as U,g as W,i as X,l as $,m as x0,s as a0,u as d}from"./chunk-V6XWGCKJ.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 i=this.rom[0]|this.rom[1]<<8,f=this.rom[2]|this.rom[3]<<8,g=i<49152&&i+f<77824&&(i==2051||(i&255)==0);f==x.length-4&&g?(this.LOAD_BASE=i,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,i=this.frameCycles-this.paddleLastTriggered;return i<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-Line truncated
import{a as i0}from"./chunk-R5TBCA3S.js";import{A as r0,I as s0,m as e0,r as t0,x as O}from"./chunk-AK5O5EFA.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 i=this.rom[0]|this.rom[1]<<8,f=this.rom[2]|this.rom[3]<<8,g=i<49152&&i+f<77824&&(i==2051||(i&255)==0);f==x.length-4&&g?(this.LOAD_BASE=i,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,i=this.frameCycles-this.paddleLastTriggered;return i<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-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,i){var f,g,C,u,m=new Uint8Array(258);for(u=0,f=0;f<14;f++)t[i++]=255;for(t[i++]=213,t[i++]=170,t[i++]=150,t[i++]=n>>1|170,t[i++]=n|170,g=n,t[i++]=e>>1|170,t[i++]=e|170,g^=e,t[i++]=x>>1|170,t[i++]=x|170,g^=x,t[i++]=g>>1|170,t[i++]=g|170,t[i++]=222,t[i++]=170,t[i++]=235,f=0;f<6;f++)t[i++]=255;for(t[i++]=213,t[i++]=170,t[i++]=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[i++]=G[u^C],C=u;for(f=0;f<256;f++)u=m[f]>>2,t[i++]=G[u^C],C=u;t[i++]=G[u],t[i++]=222,t[i++]=170,t[i++]=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-5UMAV7SY.js.map
//# sourceMappingURL=apple2-LEKFTCGX.js.map
File renamed without changes.
-9
View File
@@ -1,9 +0,0 @@
import{H as Rr,r as mr}from"./chunk-6POV4IU3.js";import{$ as er,E as or,J as Fr,S as N,V as T,W as hr,Y as fr,a as Q,g as E}from"./chunk-V6XWGCKJ.js";import{a as pr,b as nr}from"./chunk-KT7KMEQC.js";var gr=4026531840,Cr=223,wr=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.constructNOP=functLine 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]+" "+Er[p.mode]+`
`,u+="SPSR "+E(p.spsr,8)+`
`,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}},Er={16:"USER",17:"FIQ",18:"IRQ",19:"SUPERVISOR",23:"ABORT",27:"UNDEFINED",31:"SYSTEM"};var Dr=[{id:"vidfill.c",name:"Video Memory Fill"}],tr=class extends Rr{getToolForFilename(t){return t=t.toLowerCase(),t.endsWith(".vasm")?"vasmarm":t.endsWith(".armips")?"armips":(t.endsWith(".c")||t.endsWith(".s"),"armtcc")}getPresets(){return Dr}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}:{nbytes:4,line:"???",isaddr:!1}}};Fr.arm32=sr;export{tr as BaseARMMachinePlatform};
//# sourceMappingURL=arm32-4YMLH7OT.js.map
+9
View File
@@ -0,0 +1,9 @@
import{H as Rr,r as mr}from"./chunk-AK5O5EFA.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 gr=4026531840,Cr=223,wr=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.constructNOP=funcLine 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]+" "+Er[p.mode]+`
`,u+="SPSR "+E(p.spsr,8)+`
`,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}},Er={16:"USER",17:"FIQ",18:"IRQ",19:"SUPERVISOR",23:"ABORT",27:"UNDEFINED",31:"SYSTEM"};var Dr=[{id:"vidfill.c",name:"Video Memory Fill"}],tr=class extends Rr{getToolForFilename(t){return t=t.toLowerCase(),t.endsWith(".vasm")?"vasmarm":t.endsWith(".armips")?"armips":(t.endsWith(".c")||t.endsWith(".s"),"armtcc")}getPresets(){return Dr}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}:{nbytes:4,line:"???",isaddr:!1}}};Fr.arm32=sr;export{tr as BaseARMMachinePlatform};
//# sourceMappingURL=arm32-CMR5Q2QO.js.map
@@ -2,6 +2,6 @@
"version": 3,
"sources": ["../src/common/cpu/ARM.ts", "../src/machine/arm32.ts", "../src/platform/arm32.ts"],
"sourcesContent": ["/*\nFrom: https://github.com/endrift/gbajs\n\nCopyright \u00A9 2012 \u2013 2013, Jeffrey Pfau\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\nARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\nLIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\nCONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\nSUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\nINTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\nCONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\nARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\nPOSSIBILITY OF SUCH DAMAGE.\n*/\n\nimport { Bus, Bus32, CPU, InstructionBased, SavesState } from \"../devices\";\nimport { EmuHalt } from \"../emu\";\nimport { hex } from \"../util\";\n\ninterface AddressFunction extends Function {\n writesPC? : boolean;\n fixedJump? : boolean;\n}\n\ninterface ARMIRQInterface {\n\tclear() : void;\n\tswi(opcode : number) : void;\n\tswi32(opcode : number) : void;\n\tupdateTimers() : void;\n\ttestIRQ() : void;\n}\n\ninterface ARMMemoryRegion {\n\tPAGE_MASK : number;\n\tICACHE_PAGE_BITS : number;\n\ticache : ARMMemoryPage[];\n}\n\ninterface ARMOperation {\n\tnext : ARMOperation;\n\tpage : ARMMemoryPage;\n\taddress : number;\n\topcode : number;\n}\n\ninterface ARMMemoryPage {\n\tarm : ARMOperation[];\n\tthumb : ARMOperation[];\n\tinvalid : boolean;\n}\n\ninterface ARMMMUInterface {\n\tmemory : ARMMemoryRegion[];\n\tBASE_OFFSET : number;\n\tOFFSET_MASK : number;\n\n\tload8(a: number) : number;\n\tloadU8(a: number) : number;\n\tload16(a: number) : number;\n\tloadU16(a: number) : number;\n\tload32(a: number) : number;\n\tstore8(a: number, v: number) : void;\n\tstore16(a: number, v: number) : void;\n\tstore32(a: number, v: number) : void;\n\n\twait(a: number) : void;\n\twait32(a: number) : void;\n\twaitSeq32(a: number) : void;\n\twaitMul(a: number) : void;\n\twaitMulti32(a: number, total: number) : void;\n\twaitPrefetch(a: number) : void;\n\twaitPrefetch32(a: number) : void;\n\n\taddressToPage(region: number, address: number) : number;\n\taccessPage(region: number, pageId: number) : ARMMemoryPage;\n}\n\nexport interface ARMCoreState {\n\tPC: number,\n\tSP: number,\n\tgprs: number[],\n\tmode: number,\n\tcpsrI: boolean,\n\tcpsrF: boolean,\n\tcpsrV: boolean,\n\tcpsrC: boolean,\n\tcpsrZ: boolean,\n\tcpsrN: boolean,\n\tbankedRegisters: number[][],\n\tspsr: number,\n\tbankedSPSRs: number[],\n\tsfprs: number[],\n\tdfprs: number[],\n\tifprs: number[],\n\tcycles: number,\n\tinstructionWidth: 2 | 4\n}\n\ninterface ARMCoreType {\n\tgprs: Int32Array;\n\tsfprs: Float32Array;\n\tdfprs: Float64Array;\n\tifprs: Int32Array;\n\tPC: number;\n\tSP: number;\n\tLR: number;\n\tcycles: number;\n\tmode: number;\n\tshifterOperand: number;\n\tshifterCarryOut: number|boolean;\n\tcpsrN: number|boolean;\n\tcpsrC: number|boolean;\n\tcpsrZ: number|boolean;\n\tcpsrV: number|boolean;\n\tcpsrI: number|boolean;\n\tcpsrF: number|boolean;\n\tspsr: number;\n\tmmu: ARMMMUInterface;\n\tirq : ARMIRQInterface;\n\tinstructionWidth: 2 | 4;\n\n\thasSPSR() : boolean;\n\tunpackCPSR(v : number) : void;\n\tswitchMode(mode : number) : void;\n\tswitchExecMode(mode : number) : void;\n\tpackCPSR() : number;\n\n\tstep() : void;\n\tresetCPU(startOffset : number) : void;\n\tfreeze() : ARMCoreState;\n\tdefrost(state: ARMCoreState) : void;\n\n\traiseIRQ() : void;\n\traiseTrap(irqType? : number) : void;\n}\n\nexport enum ARMMode {\n\tMODE_ARM = 0,\n\tMODE_THUMB = 1,\n\t\n\tMODE_USER = 0x10,\n\tMODE_FIQ = 0x11,\n\tMODE_IRQ = 0x12,\n\tMODE_SUPERVISOR = 0x13,\n\tMODE_ABORT = 0x17,\n\tMODE_UNDEFINED = 0x1B,\n\tMODE_SYSTEM = 0x1F\n}\n\nexport enum ARMRegs {\n\tSP = 13,\n\tLR = 14,\n\tPC = 15,\n}\n\nexport enum ARMConstants {\n\n\tBANK_NONE = 0,\n\tBANK_FIQ = 1,\n\tBANK_IRQ = 2,\n\tBANK_SUPERVISOR = 3,\n\tBANK_ABORT = 4,\n\tBANK_UNDEFINED = 5,\n\n\tWORD_SIZE_ARM = 4,\n\tWORD_SIZE_THUMB = 2,\n\n\tBASE_RESET = 0x00000000,\n\tBASE_UNDEF = 0x00000004,\n\tBASE_SWI = 0x00000008,\n\tBASE_PABT = 0x0000000C,\n\tBASE_DABT = 0x00000010,\n\tBASE_IRQ = 0x00000018,\n\tBASE_FIQ = 0x0000001C,\n}\n\nconst UNALLOC_MASK = 0x0FFFFF00;\nconst USER_MASK = 0xF0000000;\nconst PRIV_MASK = 0x000000DF; // This is out oLine truncated
"mappings": "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 truncated
"mappings": "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 truncated
"names": ["USER_MASK", "PRIV_MASK", "STATE_MASK", "ARMCoreArm", "cpu", "rn", "offset", "condOp", "gprs", "address", "addr", "rm", "shiftOp", "rs", "shift", "shiftVal", "immediate", "rotate", "instruction", "overlap", "writeInitial", "rd", "shifterOperand", "d", "aluOut", "mmu", "total", "m", "i", "mode", "hi", "lo", "r", "c", "f", "operand", "mask", "n", "SHIFT_32", "carry", "opcode", "nOperandReg", "destReg", "sz", "opcode2", "mOperandReg", "fpregs", "hex", "to_integer", "dp_operation", "unsigned", "round_zero", "round_nearest", "sregs", "dregs", "iregs", "src", "dest", "double_to_single", "single_reg", "srcReg", "regs", "single_regs", "FPCompare", "op1", "op2", "Vd", "E", "Vm", "result", "to_arm_reg", "t", "ARMCoreThumb", "oldD", "oldDn", "dn", "mn", "pc", "misalign", "an", "r4", "ARMCore", "startOffset", "frost", "region", "pageId", "next", "EmuHalt", "newMode", "newBank", "oldBank", "oldFiqBank", "newFiqBank", "spsr", "cpsr", "instructionWidth", "func", "shiftType", "op", "s", "shiftsRs", "rotateImm", "load", "hiOffset", "loOffset", "h", "w", "b", "shiftImmediate", "user", "u", "p", "link", "crd", "cpnum", "cond", "D", "opc2", "op0", "M", "N", "Vn", "size", "opc1", "Rt", "h1", "ARM32CPU", "bus", "resetVector", "state", "a", "v", "memory", "page", "GBA_KEYCODE_MAP", "makeKeycodeMap", "Keys", "RAM_START", "RAM_SIZE", "ROM_BASE", "IO_START", "IO_SIZE", "MAX_SERIAL_CHARS", "CPU_FREQ", "ILLEGAL_OPCODE", "ARM32Machine", "BasicScanlineMachine", "ARM32CPU", "newAddressDecoder", "a", "v", "newKeyboardHandler", "pixels", "serial", "rom", "evin", "p32", "vbase", "mask", "i", "col", "category", "state", "s", "c", "sp", "fp", "hex", "EXEC_MODE", "REGNAMES", "j", "lpad", "MODE_NAMES", "ARM32_PRESETS", "BaseARMMachinePlatform", "BaseMachinePlatform", "fn", "ARM32Platform", "loadScript", "ARM32Machine", "a", "__spreadProps", "__spreadValues", "pc", "read", "is_thumb", "capstone", "buf", "i", "insns", "i0", "PLATFORMS"]
}
@@ -1,4 +1,4 @@
import{J as m0,c as B0,d as g0,e as X0,k as C0,r as l0}from"./chunk-6POV4IU3.js";import{$ as N,J as k,V as A,W as c0,Y as o0,_ as q,g as o,l as d0,m as a0,t as f0}from"./chunk-V6XWGCKJ.js";import"./chunk-KT7KMEQC.js";var p0=o0([[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]]),h0=2,w0=function(f){var d,t,i,D,g,U,F0,W;let R=f?320:160,K=f?204:102,A0=R>>2,E0=f?16383:4095,N0=256,I0=4293848814,P0=4278190080;var j=new Uint8Array(32),B=0,E=0,X=!1,u=0,Y=0,b=0,M=0,p=0,w=K,H=new Uint32Array(8),y=new Uint8Array(8),J=0,T=new Uint8Array(f?262:131),C=new Uint8Array(4),l=0,Q=0,v=0,c=new Uint8Array(8),S=0;function V(e,x){t[e]=x,v++,T[(e&E0)/A0|0]=1}function u0(e,x){for(var s=e*4+3,n=0;n<4;n++){var m=e%A0>=(Y&63)?0:4;F0[s--]=H[m+(x&3)],x>>=2}}function r0(e){for(var x=e*R/4,s=0;s<R/4;s++)u0(x+s,t[x+s])}function i0(e,x){if(B&8){var s=0;X||(x>>=4);for(var n=0;n<4;n++){var m=x&1?E>>2&3:E&3;s|=m<<n*2,x>>=1}x=s,X=!X}if(B&4){if(l&4){var a=2*(~l&3);x=(C[3]>>a&3)<<6|(C[2]>>a&3)<<4|(C[1]>>a&3)<<2|(C[0]>>a&3)<<0}else C[l&3]=x;l++}else{var a=(B&3)<<1,s=x>>a|u;u=x<<8-a&255,x=s}if(B&64&&(x=(x&3)<<6|(x&12)<<2|(x&48)>>2|(x&192)>>6),B&48){var F=t[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),B&16&&(x|=F),B&32&&(x^=F),Q=Q&240|r|r<<4}V(e,x)}function Z(e,x){y[e&7]=x&255,H[e&7]=e0[x&255],O()}function Y0(){var e=Y>>6}function O(){J=K}function b0(){let e=c[0]|c[1]<<8,x=c[2]&63,s=c[3],n=S&255|c[4]<<8,m=c[5],a=c[6]+1,F,r=0,h=0;r=0,(x&2)===0&&(r=1);function s0(){r&&(x&4)!==0&&(F!==0||(x&8)===0)&&e++,(x&2)!==0&&(r^=1)}function n0(){F!==0&&((x&32)!==0?n++:n--)}for(;a>=0;){let L;for(F=m;F>=0;){let z,_;z=(x&1)===0?e:n,F===0&&(x&8)!==0?_=0:_=i.read(e),(x&1)===0?s0():n0(),z=(x&1)!==0?e:n,V(z,_),(x&1)===0?n0():s0(),h+=4,F--}L=(n&255)+s&256,n=n&65280|n+s&255,(x&16)===0?n+=L:n-=L^256,a--}}this.drawScanline=e=>{e==M&&b&8&&(d.retryInterrupts=!(b&4),this.probe&&this.probe.logInterrupt(p),d.interrupt(p)),e<K&&J>0?(T[e]=0,r0(e),J--):T[e]&&(T[e]=0,r0(e))},this.init=(e,x,s,n,m)=>{d=x,t=s,j=n,W=m,f?i={read:N([[16384,32767,16383,function(F){return t[F]}],[53248,57343,4095,function(F){return t[F+16384]}],[0,16383,16383,function(F){return g?g[F]:0}],[32768,49151,16383,function(F){return g?g[F+16384]:0}]]),write:N([[16384,32767,16383,V],[0,16383,16383,i0],[53248,57343,4095,function(F,r){V(F+16384,r)}]])}:(U=q(new d0().decode(a0(atob(Q0))),8192),i={read:N([[0,8191,8191,function(F){return U[F]}],[8192,16383,8191,function(F){return g?g[F]:0}],[16384,20479,4095,function(F){return v++,t[F]}]]),write:N([[16384,20479,4095,V],[0,16383,4095,i0]])}),D={read:function(F){F&=31;var r;switch(F){case 8:r=Q,Q=0;break;default:r=j[F];break}return r},write:function(F,r){if(F!=42331){if(F&=255,F>120&&F<128){c[F&7]=r,F==114&&(S=0),F==116&&(S=S+c[3]&255),F==126&&b0();return}switch(F&=31,r&=255,F){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:Z(F,r);break;case 9:Y=r,Y0(),O();break;case 10:w=f?r:r>>1,O();break;case 11:var h=d.saveState();Z((h.BC>>8)-1,i.read(h.HL));break;case 12:B=r,u=0,l=0,X=!1;break;case 13:p=r;break;case 14:b=r;break;case 15:M=f?r:r>>1;break;case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:W.setACRegister(F,r);break;case 24:var h=d.saveState();W.setACRegister((h.BC>>8)-1,i.read(h.HL));break;case 25:E=r;break;case 26:case 27:case 28:case 29:case 30:break;default:break}}}},e.connectCPUMemoryBus(i),e.connectCPUIOBus(D),this.membus=i,this.iobus=D;for(var a=0;a<8;a++)Z(a,a)},this.resetWaitStates=function(e){var x=e<w?v:0;return v=0,x},this.loadState=e=>{d.loadState(e.c),t.set(e.ram),H.set(e.palette),y.set(e.palinds),B=e.magicop,E=e.xpand,X=e.xplower,u=e.shift2,Y=e.horcb,b=e.inmod,M=e.inlin,p=e.infbk,w=e.verbl,l=e.rotcount,C.set(e.rotdata),Q=e.intst,j.set(e.inputs),c.set(e.patboard),S=e.patdest,O()},this.saveState=()=>({c:d.saveState(),ram:t.slice(0),inputs:j.slice(0),palette:H.slice(0),palinds:y.slice(0),magicop:B,xpand:E,xplower:X,shift2:u,horcb:Y,inmod:b,inlin:M,infbk:p,verbl:w,rotcount:l,rotdata:C.slice(0),intst:Q,patboard:c.slice(0),patdest:S}),this.reset=()=>{B=E=b=M=p=u=Y=0,w=K,X=!1},this.toLongString=e=>{var x="";x+=`
import{J as m0,c as B0,d as g0,e as X0,k as C0,r as l0}from"./chunk-AK5O5EFA.js";import{$ as q,K as k,W as A,X as c0,Z as o0,aa as N,g as o,l as d0,m as a0,t as f0}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var p0=o0([[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]]),h0=2,w0=function(f){var d,t,i,D,g,U,F0,W;let R=f?320:160,K=f?204:102,A0=R>>2,E0=f?16383:4095,N0=256,I0=4293848814,P0=4278190080;var j=new Uint8Array(32),B=0,E=0,X=!1,u=0,Y=0,b=0,M=0,p=0,w=K,H=new Uint32Array(8),y=new Uint8Array(8),J=0,T=new Uint8Array(f?262:131),C=new Uint8Array(4),l=0,Q=0,v=0,c=new Uint8Array(8),S=0;function V(e,x){t[e]=x,v++,T[(e&E0)/A0|0]=1}function u0(e,x){for(var s=e*4+3,n=0;n<4;n++){var m=e%A0>=(Y&63)?0:4;F0[s--]=H[m+(x&3)],x>>=2}}function r0(e){for(var x=e*R/4,s=0;s<R/4;s++)u0(x+s,t[x+s])}function i0(e,x){if(B&8){var s=0;X||(x>>=4);for(var n=0;n<4;n++){var m=x&1?E>>2&3:E&3;s|=m<<n*2,x>>=1}x=s,X=!X}if(B&4){if(l&4){var a=2*(~l&3);x=(C[3]>>a&3)<<6|(C[2]>>a&3)<<4|(C[1]>>a&3)<<2|(C[0]>>a&3)<<0}else C[l&3]=x;l++}else{var a=(B&3)<<1,s=x>>a|u;u=x<<8-a&255,x=s}if(B&64&&(x=(x&3)<<6|(x&12)<<2|(x&48)>>2|(x&192)>>6),B&48){var F=t[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),B&16&&(x|=F),B&32&&(x^=F),Q=Q&240|r|r<<4}V(e,x)}function Z(e,x){y[e&7]=x&255,H[e&7]=e0[x&255],O()}function Y0(){var e=Y>>6}function O(){J=K}function b0(){let e=c[0]|c[1]<<8,x=c[2]&63,s=c[3],n=S&255|c[4]<<8,m=c[5],a=c[6]+1,F,r=0,h=0;r=0,(x&2)===0&&(r=1);function s0(){r&&(x&4)!==0&&(F!==0||(x&8)===0)&&e++,(x&2)!==0&&(r^=1)}function n0(){F!==0&&((x&32)!==0?n++:n--)}for(;a>=0;){let L;for(F=m;F>=0;){let z,_;z=(x&1)===0?e:n,F===0&&(x&8)!==0?_=0:_=i.read(e),(x&1)===0?s0():n0(),z=(x&1)!==0?e:n,V(z,_),(x&1)===0?n0():s0(),h+=4,F--}L=(n&255)+s&256,n=n&65280|n+s&255,(x&16)===0?n+=L:n-=L^256,a--}}this.drawScanline=e=>{e==M&&b&8&&(d.retryInterrupts=!(b&4),this.probe&&this.probe.logInterrupt(p),d.interrupt(p)),e<K&&J>0?(T[e]=0,r0(e),J--):T[e]&&(T[e]=0,r0(e))},this.init=(e,x,s,n,m)=>{d=x,t=s,j=n,W=m,f?i={read:N([[16384,32767,16383,function(F){return t[F]}],[53248,57343,4095,function(F){return t[F+16384]}],[0,16383,16383,function(F){return g?g[F]:0}],[32768,49151,16383,function(F){return g?g[F+16384]:0}]]),write:N([[16384,32767,16383,V],[0,16383,16383,i0],[53248,57343,4095,function(F,r){V(F+16384,r)}]])}:(U=q(new d0().decode(a0(atob(Q0))),8192),i={read:N([[0,8191,8191,function(F){return U[F]}],[8192,16383,8191,function(F){return g?g[F]:0}],[16384,20479,4095,function(F){return v++,t[F]}]]),write:N([[16384,20479,4095,V],[0,16383,4095,i0]])}),D={read:function(F){F&=31;var r;switch(F){case 8:r=Q,Q=0;break;default:r=j[F];break}return r},write:function(F,r){if(F!=42331){if(F&=255,F>120&&F<128){c[F&7]=r,F==114&&(S=0),F==116&&(S=S+c[3]&255),F==126&&b0();return}switch(F&=31,r&=255,F){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:Z(F,r);break;case 9:Y=r,Y0(),O();break;case 10:w=f?r:r>>1,O();break;case 11:var h=d.saveState();Z((h.BC>>8)-1,i.read(h.HL));break;case 12:B=r,u=0,l=0,X=!1;break;case 13:p=r;break;case 14:b=r;break;case 15:M=f?r:r>>1;break;case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:W.setACRegister(F,r);break;case 24:var h=d.saveState();W.setACRegister((h.BC>>8)-1,i.read(h.HL));break;case 25:E=r;break;case 26:case 27:case 28:case 29:case 30:break;default:break}}}},e.connectCPUMemoryBus(i),e.connectCPUIOBus(D),this.membus=i,this.iobus=D;for(var a=0;a<8;a++)Z(a,a)},this.resetWaitStates=function(e){var x=e<w?v:0;return v=0,x},this.loadState=e=>{d.loadState(e.c),t.set(e.ram),H.set(e.palette),y.set(e.palinds),B=e.magicop,E=e.xpand,X=e.xplower,u=e.shift2,Y=e.horcb,b=e.inmod,M=e.inlin,p=e.infbk,w=e.verbl,l=e.rotcount,C.set(e.rotdata),Q=e.intst,j.set(e.inputs),c.set(e.patboard),S=e.patdest,O()},this.saveState=()=>({c:d.saveState(),ram:t.slice(0),inputs:j.slice(0),palette:H.slice(0),palinds:y.slice(0),magicop:B,xpand:E,xplower:X,shift2:u,horcb:Y,inmod:b,inlin:M,infbk:p,verbl:w,rotcount:l,rotdata:C.slice(0),intst:Q,patboard:c.slice(0),patdest:S}),this.reset=()=>{B=E=b=M=p=u=Y=0,w=K,X=!1},this.toLongString=e=>{var x="";x+=`
INLIN: `+e.inlin,x+=`
VERBL: `+e.verbl,x+=`
MAGICOP: $`+o(e.magicop),x+=`
@@ -11,4 +11,4 @@ XPLOWER: `+e.xplower,x+=`
INTST: $`+o(e.intst),x+=`
Palette: `;for(var s=0;s<8;s++)x+=o(y[s]);return x+=`
`,x},this.connectVideo=function(e){F0=e},this.loadROM=function(e){g=e},this.loadBIOS=function(e){U=e},this.getVisiblePixelWords=function(){return w*R}},P=class extends l0{constructor(t){super();this.cpuFrequency=1789e3;this.numTotalScanlines=262;this.sampleRate=60*262*h0;this.arcade=t,this.cpu=new B0,this.psg=new $(new g0),this.audioadapter=new C0(this.psg.psg,h0,this.sampleRate),this.handler=c0(this.inputs,p0),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 w0(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.membus.read(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(0)}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(this.scanline);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(q(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}}},$=class extends X0{setACRegister(d,t){switch(d&=7,t&=255,d){case 0:this.psg.setClock(1789e3*16/(t+1)),this.psg.writeRegisterAY(7,248);break;case 1:case 2:case 3:var i=(d-1)*2,D=t*2+1;this.psg.writeRegisterAY(i,D&255),this.psg.writeRegisterAY(i+1,D>>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}}},e0=[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++)D0=e0[I],e0[I]=f0(D0)|4278190080;var D0,I;var Q0="TFpHAAAgAAAAFHUyA4UHAUpdY2XzIQAgfv5Vyg0AwwAgMc5PzR4JIQUgfiNmb+kAZRrl9cXV3eX95SEAADnlzc4H4f3h3eHRwfHhyUztacnd5d1jEd053X4Gyw8mAN1+BN2OBSdvyxTd4ckBCwjts8kAQ15cJVJTOy83ODkqNDU2LTEyMysmMC49XRtuZR9lH2UeZQjD4ALD4QIgCAgBB2IToAQGAQU+FT9lAfv1xdXl/eUB1U8KPAIB1mWj12Wj2GWi/SHrT/00AP1+ANY8ICL9NgAAIexPNP0h40/9ywD+/SHtXQgWBCHuTzQ61E+3KBL9IepPYw23KAX9NQAYA82VCf3hXUIt7U1dRikOXUIktyhG3csERig5EdVPaSYAGX63KC4+1YFfPk/OAFch1U8GAAl+3YYFErcgF0H1HgHxBBgCyyMQ/P0h+l0CVrP9dwBjNz4MGLTd4cllASEP/+XNhwLxycnB4eXFEQYAGUY+//UzxTNjj Line truncated
//# sourceMappingURL=astrocade-3N7GGYU6.js.map
//# sourceMappingURL=astrocade-7VANNI44.js.map
@@ -2,6 +2,6 @@
"version": 3,
"sources": ["../src/machine/astrocade.ts", "../src/platform/astrocade.ts"],
"sourcesContent": ["\nimport { Z80, Z80State } from \"../common/cpu/ZilogZ80\";\nimport { BasicScanlineMachine, AcceptsPaddleInput, Bus } from \"../common/devices\";\nimport { KeyFlags, newAddressDecoder, padBytes, Keys, makeKeycodeMap, newKeyboardHandler } from \"../common/emu\";\nimport { TssChannelAdapter, MasterAudio, AY38910_Audio } from \"../common/audio\";\nimport { hex, rgb2bgr, lzgmini, stringToByteArray } from \"../common/util\";\n\n// http://metopal.com/projects/ballybook/doku.php\n\n// TODO: fix keys, more controllers, vibrato/noise, border color\n// http://atariage.com/forums/topic/251416-programming-the-bally-arcadeastrocade/\n// https://ballyalley.com/faqs/BPA%20Video%20Hardware%20FAQ/Bally_Professional_Arcade_Video_Hardware%20(2001)(Tony%20Miller).pdf\n// https://atariage.com/forums/topic/290858-notes-from-a-2019-interview-with-jamie-fenton/ (http://www.fentonia.com/bio/)\n// https://thehistoryofhowweplay.wordpress.com/2018/04/03/interview-tom-mchugh/\n// https://ballyalley.com/faqs/Programmers%20of%20the%20Astrocade%20Built-In%20Programs.txt\n\nconst ASTROCADE_KEYCODE_MAP = makeKeycodeMap([\n // player 1\n [Keys.UP, 0x10, 0x1],\n [Keys.DOWN, 0x10, 0x2],\n [Keys.LEFT, 0x10, 0x4],\n [Keys.RIGHT, 0x10, 0x8],\n [Keys.A, 0x10, 0x10],\n // player 2\n [Keys.P2_UP, 0x11, 0x1],\n [Keys.P2_DOWN, 0x11, 0x2],\n [Keys.P2_LEFT, 0x11, 0x4],\n [Keys.P2_RIGHT, 0x11, 0x8],\n [Keys.P2_A, 0x11, 0x10],\n // keypad $14\n [Keys.VK_P, 0x14, 0x1],\n [Keys.VK_SLASH, 0x14, 0x2],\n [Keys.VK_X, 0x14, 0x4],\n [Keys.VK_MINUS, 0x14, 0x8],\n [Keys.VK_COMMA, 0x14, 0x10],\n [Keys.VK_EQUALS, 0x14, 0x20],\n // keypad $15\n [Keys.VK_O, 0x15, 0x1],\n [Keys.VK_L, 0x15, 0x2],\n [Keys.VK_9, 0x15, 0x4],\n [Keys.VK_6, 0x15, 0x8],\n [Keys.VK_3, 0x15, 0x10],\n [Keys.VK_PERIOD, 0x15, 0x20],\n // keypad $16\n [Keys.VK_I, 0x16, 0x1],\n [Keys.VK_K, 0x16, 0x2],\n [Keys.VK_8, 0x16, 0x4],\n [Keys.VK_5, 0x16, 0x8],\n [Keys.VK_2, 0x16, 0x10],\n [Keys.VK_0, 0x16, 0x20],\n // keypad $17\n [Keys.VK_U, 0x17, 0x1],\n [Keys.VK_J, 0x17, 0x2],\n [Keys.VK_7, 0x17, 0x4],\n [Keys.VK_4, 0x17, 0x8],\n [Keys.VK_1, 0x17, 0x10],\n [Keys.VK_BACK_SLASH, 0x17, 0x20],\n]);\n\nconst audioOversample = 2;\n\nconst _BallyAstrocade = function(arcade:boolean) {\n\n var cpu : Z80;\n var ram : Uint8Array;\n var membus, iobus : Bus;\n var rom, bios;\n var pixels;\n var psg;\n //var watchdog_counter;\n const swidth = arcade ? 320 : 160;\n const sheight = arcade ? 204 : 102;\n const swbytes = swidth >> 2;\n const samask = arcade ? 0x3fff : 0xfff;\n const INITIAL_WATCHDOG = 256;\n const PIXEL_ON = 0xffeeeeee;\n const PIXEL_OFF = 0xff000000;\n\n // state variables\n var inputs = new Uint8Array(0x20);\n var magicop = 0;\n var xpand = 0;\n var xplower = false;\n var shift2 = 0;\n var horcb = 0;\n var inmod = 0;\n var inlin = 0;\n var infbk = 0;\n var verbl = sheight;\n var palette = new Uint32Array(8);\n var palinds = new Uint8Array(8);\n var refreshlines = 0;\n var dirtylines = new Uint8Array(arcade ? 262 : 131);\n var rotdata = new Uint8Array(4);\n var rotcount = 0;\n var intst = 0;\n var waitstates = 0;\n var patboard = new Uint8Array(0x08);\n var patdest = 0;\n\n function ramwrite(a: number, v: number) {\n // set RAM\n ram[a] = v;\n waitstates++;\n // mark scanline as dirty\n dirtylines[((a & samask) / swbytes) | 0] = 1;\n // this was old behavior where we updated instantly\n // but it had problems if we had mid-screen palette changes\n //ramupdate(a, v);\n }\n\n function ramupdate(a: number, v: number) {\n var ofs = a * 4 + 3; // 4 pixels per byte\n for (var i = 0; i < 4; i++) {\n var lr = ((a % swbytes) >= (horcb & 0x3f)) ? 0 : 4;\n pixels[ofs--] = palette[lr + (v & 3)];\n v >>= 2;\n }\n }\n\n function refreshline(y: number) {\n var ofs = y * swidth / 4;\n for (var i = 0; i < swidth / 4; i++)\n ramupdate(ofs + i, ram[ofs + i]);\n }\n\n function magicwrite(a: number, v: number) {\n // expand\n if (magicop & 0x8) {\n var v2 = 0;\n if (!xplower)\n v >>= 4;\n for (var i = 0; i < 4; i++) {\n var pix = (v & 1) ? ((xpand >> 2) & 3) : (xpand & 3);\n v2 |= pix << (i * 2);\n v >>= 1;\n }\n v = v2;\n xplower = !xplower;\n }\n // rotate\n if (magicop & 0x4) {\n if (rotcount & 4) {\n // drain buffer\n var sh = 2 * (~rotcount & 3);\n v = (((rotdata[3] >> sh) & 3) << 6) |\n (((rotdata[2] >> sh) & 3) << 4) |\n (((rotdata[1] >> sh) & 3) << 2) |\n (((rotdata[0] >> sh) & 3) << 0);\n } else {\n // fill buffer\n rotdata[rotcount & 3] = v;\n }\n rotcount++;\n } else {\n // shift\n var sh = (magicop & 3) << 1;\n var v2 = (v >> sh) | shift2;\n shift2 = (v << (8 - sh)) & 0xff;\n v = v2;\n }\n // flop\n if (magicop & 0x40) {\n v =\n ((v & 0x03) << 6) |\n Line truncated
"mappings": "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 truncated
"mappings": "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 truncated
"names": ["ASTROCADE_KEYCODE_MAP", "makeKeycodeMap", "Keys", "audioOversample", "_BallyAstrocade", "arcade", "cpu", "ram", "membus", "iobus", "rom", "bios", "pixels", "psg", "swidth", "sheight", "swbytes", "samask", "INITIAL_WATCHDOG", "PIXEL_ON", "PIXEL_OFF", "inputs", "magicop", "xpand", "xplower", "shift2", "horcb", "inmod", "inlin", "infbk", "verbl", "palette", "palinds", "refreshlines", "dirtylines", "rotdata", "rotcount", "intst", "waitstates", "patboard", "patdest", "ramwrite", "a", "v", "ramupdate", "ofs", "i", "lr", "refreshline", "y", "magicwrite", "v2", "pix", "sh", "oldv", "icpt", "setpalette", "ASTROCADE_PALETTE", "refreshall", "setbordercolor", "col", "xfer_patboard", "m_pattern_source", "m_pattern_mode", "m_pattern_skip", "m_pattern_dest", "m_pattern_width", "m_pattern_height", "curwidth", "u13ff", "cycles", "incrementSource", "incrementDest", "carry", "busaddr", "busdata", "sl", "machine", "c", "r", "inp", "psgg", "newAddressDecoder", "padBytes", "lzgmini", "stringToByteArray", "ASTROLIBRE_BIOS_LZG", "addr", "rtn", "val", "n", "state", "st", "s", "hex", "data", "BallyAstrocade", "BasicScanlineMachine", "Z80", "AstrocadeAudio", "MasterAudio", "TssChannelAdapter", "newKeyboardHandler", "nbytes", "controller", "value", "clk", "xtra", "category", "AY38910_Audio", "j", "x", "rgb2bgr", "ASTROLIBRE_BIOS_LZG", "ASTROCADE_PRESETS", "ASTROCADE_BIOS_PRESETS", "ASTROCADE_ARCADE_PRESETS", "BallyAstrocadePlatform", "BaseZ80MachinePlatform", "BallyAstrocade", "a", "BallyAstrocadeBIOSPlatform", "title", "rom", "BallyArcadePlatform", "PLATFORMS"]
}
@@ -1,7 +1,7 @@
import{a as j}from"./chunk-NWVP3WPZ.js";import{I as $,h as H,k as z,m as Y,q as K,x as V}from"./chunk-6POV4IU3.js";import{$ as _,J as O,U as R,V as o,W as E,Y as W,_ as N,g as S}from"./chunk-V6XWGCKJ.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{I as $,h as H,k as z,m as Y,q as K,x as V}from"./chunk-AK5O5EFA.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-WUONHL3J.js.map
//# sourceMappingURL=atari7800-QUNUHYQ2.js.map
@@ -2,6 +2,6 @@
"version": 3,
"sources": ["../src/machine/atari7800.ts", "../src/platform/atari7800.ts"],
"sourcesContent": ["\nimport { MOS6502, MOS6502State } from \"../common/cpu/MOS6502\";\nimport { BasicMachine, RasterFrameBased, Bus, ProbeAll } from \"../common/devices\";\nimport { KeyFlags, newAddressDecoder, padBytes, Keys, makeKeycodeMap, newKeyboardHandler, EmuHalt, dumpRAM } from \"../common/emu\";\nimport { gtia_ntsc_to_rgb } from \"./chips/gtia\";\nimport { TssChannelAdapter, MasterAudio, POKEYDeviceChannel } from \"../common/audio\";\nimport { hex, rgb2bgr } from \"../common/util\";\n\n// https://atarihq.com/danb/a7800.shtml\n// https://atarihq.com/danb/files/maria_r1.txt\n// https://atarihq.com/danb/files/7800vid.txt\n// https://sites.google.com/site/atari7800wiki/\n\ninterface Atari7800StateBase {\n ram : Uint8Array<ArrayBuffer>;\n regs6532 : Uint8Array;\n}\n\ninterface Atari7800ControlsState {\n inputs : Uint8Array<ArrayBuffer>;\n}\n\ninterface Atari7800State extends Atari7800StateBase, Atari7800ControlsState {\n c : MOS6502State;\n tia : {\n regs : Uint8Array,\n };\n maria : {\n regs : Uint8Array,\n offset,dll,dlstart : number;\n dli,h16,h8 : boolean;\n };\n pia : {\n timer: number;\n interval: number;\n }\n}\n\nconst SWCHA = 0;\nconst SWCHB = 2;\nconst INPT0 = 8;\n\nconst Atari7800_KEYCODE_MAP = makeKeycodeMap([\n [Keys.A, INPT0+0, 0x80],\n [Keys.B, INPT0+1, 0x80],\n [Keys.GP_A, INPT0+0, 0x80],\n [Keys.GP_B, INPT0+1, 0x80],\n [Keys.SELECT, SWCHB, -0x02],\n [Keys.START, SWCHB, -0x01],\n [Keys.UP, SWCHA, -0x10],\n [Keys.DOWN, SWCHA, -0x20],\n [Keys.LEFT, SWCHA, -0x40],\n [Keys.RIGHT, SWCHA, -0x80],\n \n [Keys.P2_A, INPT0+2, 0x80],\n [Keys.P2_B, INPT0+3, 0x80],\n //[Keys.P2_SELECT, 1, 2],\n //[Keys.P2_START, 1, 3],\n [Keys.P2_UP, SWCHA, -0x01],\n [Keys.P2_DOWN, SWCHA, -0x02],\n [Keys.P2_LEFT, SWCHA, -0x04],\n [Keys.P2_RIGHT, SWCHA, -0x08],\n]);\n\n// http://www.ataripreservation.org/websites/freddy.offenga/megazine/ISSUE5-PALNTSC.html\n// http://7800.8bitdev.org/index.php/7800_Software_Guide#APPENDIX_4:_FRAME_TIMING\n// https://forums.atariage.com/topic/224025-7800-hardware-facts/\nconst CLK = 3579545;\nconst linesPerFrame = 263;\nconst numVisibleLines = 258-16;\nconst colorClocksPerLine = 451; // 451? 452? 456?\nconst colorClocksPreDMA = 28;\nconst colorClocksShutdownOther = 16;\nconst colorClocksShutdownLast = 24;\nconst audioOversample = 2;\nconst audioSampleRate = linesPerFrame*60*audioOversample;\n\n// TIA chip\n\nclass TIA {\n regs = new Uint8Array(0x20);\n \n reset() {\n this.regs.fill(0);\n }\n read(a : number) : number {\n return this.regs[a] | 0;\n }\n write(a : number, v : number) {\n this.regs[a] = v;\n }\n saveState() {\n return {\n regs: this.regs.slice(0)\n };\n }\n loadState(s) {\n for (let i=0; i<32; i++)\n this.write(i, s.regs[i]);\n }\n static stateToLongString(state) : string {\n let s = \"\";\n s += dumpRAM(state.regs, 0, 32);\n return s;\n }\n}\n\n// MARIA chip\n\nclass MARIA {\n bus : Bus;\n cycles : number = 0;\n regs = new Uint8Array(0x20);\n offset : number = -1;\n dll : number = 0;\n dlstart : number = 0;\n dli : boolean = false;\n h16 : boolean = false;\n h8 : boolean = false;\n writemode : number = 0;\n indirect : boolean = false;\n pixels = new Uint8Array(320);\n WSYNC : number = 0;\n\n reset() {\n this.regs.fill(0);\n // TODO?\n }\n read(a : number) : number {\n return this.regs[a] | 0;\n }\n write(a : number, v : number) {\n this.regs[a] = v;\n if (a == 0x04) this.WSYNC++;\n //console.log(hex(a), '=', hex(v));\n }\n saveState() {\n return {\n regs: this.regs.slice(0),\n offset: this.offset,\n dll: this.dll,\n dlstart: this.dlstart,\n dli: this.dli,\n h16: this.h16,\n h8: this.h8,\n indirect: this.indirect,\n writemode: this.writemode,\n };\n }\n loadState(s) {\n for (let i=0; i<32; i++)\n this.write(i, s.regs[i]|0);\n this.offset = s.offset|0;\n this.dll = s.dll|0;\n this.dlstart = s.dlstart|0;\n this.dli = !!s.dli;\n this.h16 = !!s.h16;\n this.h8 = !!s.h8;\n this.indirect = !!s.indirect;\n this.writemode = s.writemode|0;\n }\n isDMAEnabled() {\n return (this.regs[0x1c] & 0x60) == 0x40;\n }\n getDLLStart() {\n return (this.regs[0x0c] << 8) + this.regs[0x10];\n }\n getCharBaseAddress() {\n return (this.regs[0x14] << 8) + this.offset;\n }\n setVBLANK(b : boolean) {\n if (b) {\n this.regs[0x08] |= 0x80;\n this.offset = -1;\n this.dll = this.getDLLStart();\n this.dli = this.bus && (this.bus.read(this.dll) & 0x80) != 0; // if DLI on first zone\n } else {\n this.regs[0x08] &= ~0x80;\n }\n }\n readDLLEntry(bus) {\n // display lists must be in RAM (TODO: probe?)\n if (this.dll >= 0x4000) { return; }\n let x = bus.read(this.dll);\n this.offset = (x & 0xf);\n this.h16 = (x & 0x40) != 0;\n this.h8 = (x & 0x20) != 0;\n thLine truncated
"mappings": "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 truncated
"mappings": "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 truncated
"names": ["SWCHA", "SWCHB", "INPT0", "Atari7800_KEYCODE_MAP", "makeKeycodeMap", "Keys", "linesPerFrame", "numVisibleLines", "colorClocksPerLine", "colorClocksPreDMA", "colorClocksShutdownOther", "colorClocksShutdownLast", "audioOversample", "audioSampleRate", "TIA", "a", "v", "s", "i", "state", "dumpRAM", "MARIA", "b", "bus", "x", "pix", "dlhi", "dlofs", "b0", "b1", "b2", "b3", "indirect", "pal", "width", "xpos", "gfxadr", "ctrlreg", "grmode", "kangaroo", "dbl", "data", "indadr", "j", "col", "data0", "ppal", "hex", "Atari7800", "BasicMachine", "MOS6502", "newAddressDecoder", "newKeyboardHandler", "Atari7800_KEYCODE_MAP", "POKEYDeviceChannel", "TssChannelAdapter", "oldprobe", "shift", "clk", "clocks", "trap", "idata", "iofs", "rgb", "mc", "fc", "steps", "sl", "visible", "dmaClocks", "mask", "COLORS_RGBA", "padBytes", "SWCHA", "SWCHB", "addr", "category", "display_lists", "dll_ofs", "y", "offset", "h16", "h8", "dlstart", "dli", "title", "display_list", "description", "writemode", "gtia_ntsc_to_rgb", "Atari7800_PRESETS", "Atari7800Platform", "Base6502MachinePlatform", "Atari7800", "a", "tree", "filename", "getToolForFilename_6502", "PLATFORMS"]
}
@@ -1,7 +1,7 @@
import{a as nt}from"./chunk-MOWDEMRA.js";import{b as ht,c as ot,d as Y}from"./chunk-NWVP3WPZ.js";import{A as rt,I as at,g as $,k as tt,m as et,r as st,x as it}from"./chunk-6POV4IU3.js";import{$ as T,J as S,U as O,V as i,W as Z,Y as J,a as F,g as m,r as A}from"./chunk-V6XWGCKJ.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.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-R5TBCA3S.js";import{b as ht,c as ot,d as Y}from"./chunk-DYRHT6BM.js";import{A as rt,I as at,g as $,k as tt,m as et,r as st,x as it}from"./chunk-AK5O5EFA.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.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-4PDPHBKB.js.map
//# sourceMappingURL=atari8-P6LQG7WL.js.map
@@ -2,6 +2,6 @@
"version": 3,
"sources": ["../src/machine/chips/antic.ts", "../src/machine/chips/pokey.ts", "../src/machine/atari8.ts", "../src/platform/atari8.ts"],
"sourcesContent": ["import { dumpRAM } from \"../../common/emu\";\nimport { hex, lpad, safe_extend } from \"../../common/util\";\n\n// ANTIC\n// https://www.atarimax.com/jindroush.atari.org/atanttim.html\n// http://www.virtualdub.org/blog/pivot/entry.php?id=243\n// http://www.beipmu.com/Antic_Timings.txt\n// https://user.xmission.com/~trevin/atari/antic_regs.html\n// https://user.xmission.com/~trevin/atari/antic_insns.html\n// http://www.atarimuseum.com/videogames/consoles/5200/conv_to_5200.html\n// https://www.virtualdub.org/downloads/Altirra%20Hardware%20Reference%20Manual.pdf\n\nconst PF_LEFT = [0, 25, 17, 9];\nconst PF_RIGHT = [0, 25 + 64, 17 + 80, 9 + 96];\n\nconst DMACTL = 0;\nconst CHACTL = 1;\nconst DLISTL = 2;\nconst DLISTH = 3;\nconst HSCROL = 4;\nconst VSCROL = 5;\nconst PMBASE = 7;\nconst CHBASE = 9;\nconst WSYNC = 10;\nconst VCOUNT = 11;\nconst PENH = 12;\nconst PENV = 13;\nconst NMIEN = 14;\nconst NMIRES = 15;\nconst NMIST = 15;\n\nconst PFNONE = 0;\nconst PFNARROW = 1;\nconst PFNORMAL = 2;\nconst PFWIDE = 3;\n\nconst NMIST_CYCLE = 12;\nconst NMI_CYCLE = 24;\nconst WSYNC_CYCLE = 212;\n\nconst ANTIC_LEFT = 17 - 4; // gtia 34, 4 cycle delay\nconst ANTIC_RIGHT = 110 - 4; // gtia 221, 4 cycle delay\nconst LAST_DMA_H = 105; // last DMA cycle\n\nexport const MODE_LINES = [0, 0, 8, 10, 8, 16, 8, 16, 8, 4, 4, 2, 1, 2, 1, 1];\n// how many bits before DMA clock repeats?\nconst MODE_PERIOD = [0, 0, 2, 2, 2, 2, 4, 4, 8, 4, 4, 4, 4, 2, 2, 2];\nconst MODE_YPERIOD = [0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 2, 1, 0, 0, 0, 0];\n//const MODE_BPP = [0, 0, 1, 1, 2, 2, 1, 1, 2, 1, 2, 1, 1, 2, 2, 1];\n// how many color clocks / pixel * 2\nexport const MODE_SHIFT = [0, 0, 1, 1, 2, 2, 2, 2, 8, 4, 4, 2, 2, 2, 2, 1];\n\nexport class ANTIC {\n read: (address: number) => number;\t// bus read function\n nmi: () => void; // generate NMI\n\n regs = new Uint8Array(0x10);\t\t\t\t// registers\n\n left: number;\n right: number;\t\t\t\t\t// left/right clocks for mode\n\n dma_enabled: boolean = false;\n dliop: number = 0; // dli operation\n mode: number = 0;\t\t\t// current mode\n jmp = false; // TODO\n lms = false; // TODO\n dlarg_lo: number = 0;\n dlarg_hi: number = 0;\n period: number = 0;\t\t// current mode period bitmask\n scanaddr: number = 0; // Scan Address (via LMS)\n startaddr: number = 0;\t// Start of line Address\n pfbyte: number = 0;\t\t// playfield byte fetched\n ch: number = 0;\t\t\t\t// char read\n linesleft: number = 0; // # of lines left in mode\n yofs: number = 0;\t\t\t// yofs fine\n isfirstline: boolean = false;\n v: number = 0;\t\t\t\t\t// vertical scanline #\n h: number = 0;\t\t\t\t\t// horizontal color clock\n\n linebuf = new Uint8Array(48);\n dmaclock: number = 0;\n dmaidx: number = 0;\n output: number = 0;\n dramrefresh = false;\n in_vscroll = 0;\n\n constructor(readfn, nmifn) {\n this.read = readfn; // bus read function\n this.nmi = nmifn; // NMI function\n }\n reset() {\n this.regs.fill(0);\n this.regs[NMIEN] = 0x00;\n this.regs[NMIST] = 0x7f;\n this.regs[PENH] = 0x00;\n this.regs[PENV] = 0xff;\n this.setReg(DMACTL, 0x0);\n this.h = this.v = 0;\n this.startaddr = this.scanaddr = 0;\n this.dmaclock = 0;\n }\n saveState() {\n return safe_extend(0, {}, this);\n }\n loadState(s) {\n safe_extend(0, this, s);\n this.setReg(DMACTL, s.regs[DMACTL]);\n }\n static stateToLongString(state): string {\n let s = \"\";\n s += \"H: \" + lpad(state.h, 3) + \" V: \" + lpad(state.v, 3) + \"\\n\";\n s += \"DLIOp: \" + hex(state.dliop, 2) + \" Lines: \" + state.yofs + \"/\" + state.linesleft;\n s += \" DMA \" + (state.dma_enabled ? \"ON \" : \"off\")\n if (state.dma_enabled) s += \" idx \" + state.dmaidx + \" clk \" + hex(state.dmaclock) \n s += \"\\n\"\n s += \"Addr: \" + hex(state.scanaddr, 4) + \"\\n\";\n s += dumpRAM(state.regs, 0, 16).replace('$00', 'Regs');\n return s;\n }\n setReg(a: number, v: number) {\n switch (a) {\n case WSYNC:\n this.regs[WSYNC] = 0xff;\n return; // this is readonly (we reset it)\n case NMIRES:\n this.regs[NMIST] = 0x1f;\n return; // this is readonly, don't mess with it\n }\n this.regs[a] = v;\n }\n readReg(a: number) {\n switch (a) {\n case NMIST:\n return this.regs[a];\n case VCOUNT:\n return this.v >> 1;\n default:\n return 0xff;\n }\n }\n processDLIEntry() {\n if (this.mode == 0) { // N Blank Lines\n this.linesleft = ((this.dliop >> 4) & 7) + 1;\n this.dmaclock = 0;\n } else {\n this.linesleft = MODE_LINES[this.mode];\n this.period = MODE_PERIOD[this.mode];Line truncated
"mappings": "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 truncated
"mappings": "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 truncated
"names": ["PF_LEFT", "PF_RIGHT", "DMACTL", "CHACTL", "DLISTL", "DLISTH", "HSCROL", "VSCROL", "PMBASE", "CHBASE", "WSYNC", "VCOUNT", "PENH", "PENV", "NMIEN", "NMIRES", "NMIST", "ANTIC_LEFT", "ANTIC_RIGHT", "LAST_DMA_H", "MODE_LINES", "MODE_PERIOD", "MODE_YPERIOD", "MODE_SHIFT", "ANTIC", "readfn", "nmifn", "NMIEN", "NMIST", "PENH", "PENV", "DMACTL", "safe_extend", "s", "state", "lpad", "hex", "dumpRAM", "a", "v", "WSYNC", "NMIRES", "VCOUNT", "DLISTL", "DLISTH", "effwidth", "hscroll", "HSCROL", "PF_LEFT", "PF_RIGHT", "vscrol", "VSCROL", "mask", "pc", "b", "did_dma", "op", "candma", "section", "oneline", "pmaddr", "PMBASE", "mode", "ch", "y", "addrofs", "chbase", "CHBASE", "addr", "chactl", "CHACTL", "mode3lc", "AUDF1", "AUDF2", "AUDF3", "AUDF4", "AUDCTL", "STIMER", "SKRES", "POTGO", "SEROUT", "IRQEN", "SKCTL", "ALLPOT", "KBCODE", "RANDOM", "SERIN", "IRQST", "SKSTAT", "POLY9", "CH1_179", "CH3_179", "CH1_CH2", "CH3_CH4", "CLOCK_15", "DIV_64", "DIV_15", "POLY9_SIZE", "POLY17_SIZE", "CHAN1", "CHAN2", "CHAN3", "CHAN4", "ANTIC_LINE_C", "SIO_XMTDONE_INTERVAL", "SIO_SEROUT_INTERVAL", "poly9", "poly17", "initPolyTables", "reg", "i", "POKEY", "irq", "antic_xpos", "safe_extend", "s", "SKSTAT", "DIV_64", "addr", "byte", "ALLPOT", "KBCODE", "RANDOM", "SKCTL", "AUDCTL", "POLY9", "POLY9_SIZE", "POLY17_SIZE", "ptr", "CLOCK_15", "DIV_15", "CHAN1", "CHAN2", "CHAN3", "CHAN4", "AUDF1", "CH1_CH2", "AUDF2", "AUDF3", "CH3_CH4", "AUDF4", "IRQEN", "IRQST", "SKRES", "POTGO", "SEROUT", "SIO_SEROUT_INTERVAL", "SIO_XMTDONE_INTERVAL", "STIMER", "chan_mask", "CH1_179", "ANTIC_LINE_C", "CH3_179", "SERIN", "chan", "mask", "state", "dumpRAM", "ATARI8_KEYMATRIX_INTL_NOSHIFT", "Keys", "ATARI8_KEYCODE_MAP", "makeKeycodeMap", "Atari800", "BasicScanlineMachine", "MOS6502", "ANTIC", "GTIA", "POKEY", "newPOKEYAudio", "TssChannelAdapter", "newKeyboardHandler", "newAddressDecoder", "a", "v", "bios", "i", "TRIG0", "CONSOL", "y", "xofs", "gtiatick1", "gtiatick2", "bp", "MODE_SHIFT", "odd", "state", "category", "o", "key", "code", "flags", "keymap", "rom", "title", "rom2", "addr", "value", "ofs", "stub", "stubofs", "runaddr", "start", "end", "hex", "initaddr", "controller", "pc", "nextInsn", "b", "dlist", "pc0", "op", "mode", "debugmsg", "jmp", "lines", "MODE_LINES", "lms", "dlarg_lo", "dlarg_hi", "Atari5200", "Atari8_PRESETS", "Atari800_PRESETS", "Atari800_MemoryMap", "getToolForFilename_Atari8", "fn", "getToolForFilename_6502", "Atari800Platform", "Base6502MachinePlatform", "atari8_showHelp", "atari8_getROMExtension", "Atari800", "a", "bios", "biosResponse", "biosBinary", "tree", "Atari5200Platform", "Atari5200", "Atari8MAMEPlatform", "BaseMAME6502Platform", "getOpcodeMetadata_6502", "Atari800MAMEPlatform", "title", "data", "_self", "Atari5200MAMEPlatform", "rom", "PLATFORMS"]
}
@@ -1,4 +1,4 @@
import{b as S}from"./chunk-3FIVEUG2.js";import{s as E}from"./chunk-T3IRBODR.js";import"./chunk-7GWCUXYG.js";import"./chunk-LNOKARBD.js";import"./chunk-A7SWO6EA.js";import"./chunk-DGIZH2KV.js";import"./chunk-6POV4IU3.js";import{B as c,J as f,S as d,T as v,a as g}from"./chunk-V6XWGCKJ.js";import"./chunk-KT7KMEQC.js";function k(u){return u.value!=null}function y(u){return u.name!=null}function N(u){return u.op!=null&&u.left!=null&&u.right!=null}function O(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{t as E}from"./chunk-22X2KTII.js";import"./chunk-7GWCUXYG.js";import"./chunk-LNOKARBD.js";import"./chunk-A7SWO6EA.js";import"./chunk-TDMLOI3F.js";import"./chunk-AK5O5EFA.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 N(u){return u.op!=null&&u.left!=null&&u.right!=null}function O(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(N(t)){var n=this.expr2js(t.left,r),s=this.expr2js(t.right,r);return`this.${t.op}(${n}, ${s})`}else if(O(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{s as E}from"./chunk-T3IRBODR.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()}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-43RCWY55.js.map
//# sourceMappingURL=basic-MMY7OY7H.js.map
File renamed without changes.
+2 -2
View File
@@ -1,4 +1,4 @@
import{a as y}from"./chunk-MOWDEMRA.js";import{A as _,I as M,s as b,x as S}from"./chunk-6POV4IU3.js";import{J as o,U as f,a as x,g as a,v as d}from"./chunk-V6XWGCKJ.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){var s=14884;e[s]==196&&(e[s]=96),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 s=0,t=0;t<5;t++){var e=this.romarr[7+t];if(e==155||e==0)break;s=s*10+(e&15)}this.prgstart=s,console.log("SYS",s,a(s))}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 i="\rSYS "+this.prgstart,t=0;t<i.length;t++){var r=i.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)}else{this.exports.machine_exec(this.sys,100);for(var n=this.romarr[4]+this.romarr[5]*256,t=0;t<15e4&&this.getPC()!=n;t++)this.exports.machine_tick(this.sys)}}}advanceFrame(e){var s=this.getRasterY(),t=Math.floor((this.numTotalScanlines-s)*19656/this.numTotalScanlines),i=this.probe!=null;return i&&this.exports.machine_reset_probe_buffer(),t=super.advanceFrameClock(e,t),i&&this.copyProbeData(),t}getCPUState(){this.exports.machine_save_cpu_state(this.sys,this.cpustateptr);var e=this.cpustatearr,s=e[2]+(e[3]<<8);return{PC:s,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(s),R:e[19]!=55}}saveState(){this.exports.machine_save_state(this.sys,this.stateptr);let e=this.getDebugStateOffset(1),s=this.getDebugStateOffset(2),t=this.getDebugStateOffset(3),i=this.getDebugStateOffset(4),r=this.getDebugStateOffset(5),n=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(s,s+64),vic:this.statearr.slice(t+1,t+1+64),sid:this.statearr.slice(i,i+32),pla:this.statearr.slice(n,n+16)}}loadState(e){this.statearr.set(e.state),this.exports.machine_load_state(this.sys,this.stateptr)}getVideoParams(){return{width:392,height:272,overscan:!0,videoFrequency:50,aspect:392/272*.9365}}setKeyInput(e,s,t){if(!(e==16||e==17||e==18||e==224)){var i=0,r=0;switch(e){case 32:i=r=16;break;case 37:e=8,i=r=4;break;case 38:e=11,i=r=1;break;case 39:e=9,i=r=8;break;case 40:e=10,i=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|=i,this.joymask1|=r):t&64&&(this.exports.machine_key_up(this.sys,e),this.joymask0&=~i,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 s=this.exports.machine_get_debug_pointer(this.sys,e);return s-this.sys}getDebugCategories(){return["CPU","ZPRAM","Stack","PLA","CIA","VIC","SID"]}getDebugInfo(e,s){switch(e){case"PLA":{let t="",i=s.pla[0],r=s.pla[3];return t+=`$0000 - $9FFF RAM
import{a as y}from"./chunk-R5TBCA3S.js";import{A as _,I as M,s as b,x as S}from"./chunk-AK5O5EFA.js";import{K as o,V as f,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){var s=14884;e[s]==196&&(e[s]=96),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 s=0,t=0;t<5;t++){var e=this.romarr[7+t];if(e==155||e==0)break;s=s*10+(e&15)}this.prgstart=s,console.log("SYS",s,a(s))}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 i="\rSYS "+this.prgstart,t=0;t<i.length;t++){var r=i.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)}else{this.exports.machine_exec(this.sys,100);for(var n=this.romarr[4]+this.romarr[5]*256,t=0;t<15e4&&this.getPC()!=n;t++)this.exports.machine_tick(this.sys)}}}advanceFrame(e){var s=this.getRasterY(),t=Math.floor((this.numTotalScanlines-s)*19656/this.numTotalScanlines),i=this.probe!=null;return i&&this.exports.machine_reset_probe_buffer(),t=super.advanceFrameClock(e,t),i&&this.copyProbeData(),t}getCPUState(){this.exports.machine_save_cpu_state(this.sys,this.cpustateptr);var e=this.cpustatearr,s=e[2]+(e[3]<<8);return{PC:s,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(s),R:e[19]!=55}}saveState(){this.exports.machine_save_state(this.sys,this.stateptr);let e=this.getDebugStateOffset(1),s=this.getDebugStateOffset(2),t=this.getDebugStateOffset(3),i=this.getDebugStateOffset(4),r=this.getDebugStateOffset(5),n=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(s,s+64),vic:this.statearr.slice(t+1,t+1+64),sid:this.statearr.slice(i,i+32),pla:this.statearr.slice(n,n+16)}}loadState(e){this.statearr.set(e.state),this.exports.machine_load_state(this.sys,this.stateptr)}getVideoParams(){return{width:392,height:272,overscan:!0,videoFrequency:50,aspect:392/272*.9365}}setKeyInput(e,s,t){if(!(e==16||e==17||e==18||e==224)){var i=0,r=0;switch(e){case 32:i=r=16;break;case 37:e=8,i=r=4;break;case 38:e=11,i=r=1;break;case 39:e=9,i=r=8;break;case 40:e=10,i=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|=i,this.joymask1|=r):t&64&&(this.exports.machine_key_up(this.sys,e),this.joymask0&=~i,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 s=this.exports.machine_get_debug_pointer(this.sys,e);return s-this.sys}getDebugCategories(){return["CPU","ZPRAM","Stack","PLA","CIA","VIC","SID"]}getDebugInfo(e,s){switch(e){case"PLA":{let t="",i=s.pla[0],r=s.pla[3];return t+=`$0000 - $9FFF RAM
`,t+=`$A000 - $BFFF ${(r&3)==3?"BASIC ROM":"RAM"}
`,t+=`$C000 - $CFFF RAM
`,t+=`$D000 - $DFFF ${i?"I/O":(r&3)!=0?"CHAR ROM":"RAM"}
@@ -11,4 +11,4 @@ import{a as y}from"./chunk-MOWDEMRA.js";import{A as _,I as M,s as b,x as S}from"
`,i+=`VIC Bank: $${a(r,4)} Scrn: $${a(l,4)} `,p?i+=`Bitmap: $${a(n&57344,4)}`:C?i+=`Char: ROM $${a(n,4)}`:i+=`Char: $${a(n,4)}`,i+=`
`,i+=f(t,53248,64),i}case"SID":{let t=s.sid,i="";return i+=f(t,54272,32),i}}}setPaddleInput(e,s){e==0&&(this.lightpen_x=s),e==1&&(this.lightpen_y=s);let t=22,i=36,r=228,n=220,l=d(0,255,(this.lightpen_x-t)/(r-t)*160+24),p=d(0,255,(this.lightpen_y-i)/(n-i)*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 M{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"}},u=class extends y{constructor(){super(...arguments);this.getToolForFilename=S;this.getOpcodeMetadata=_}getPresets(){return R}getDefaultExtensions(){return[".c",".cpp",".o64",".acme",".xa",".ca65",".dasm",".ecs",".wiz"]}loadROM(e,s){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(s),romsize:65536,extraargs:["-autoboot_delay","5","-autoboot_command",`load "$",8,1
`],preInit:function(i){}});else{this.loadROMFile(s),this.loadRegion(":quickload",s);var t=this.luacall('image:load("/emulator/image.prg")');console.log("load rom",t)}}start(){}getMemoryMap(){return v}};o.c64=h;o["c64.wasm"]=h;o["c64.mame"]=u;
//# sourceMappingURL=c64-F6Y7XZYP.js.map
//# sourceMappingURL=c64-W6ZSY545.js.map
File renamed without changes.
+17
View File
@@ -0,0 +1,17 @@
import{H as R,q as D}from"./chunk-AK5O5EFA.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)+`
`+p(a.W,["S","C","Z","O","I"],!0)+`
R0-R3: `+a.R.slice(0,4).map(s=>h(s,2)).join(" ")+`
R4-R7: `+a.R.slice(4,8).map(s=>h(s,2)).join(" ")+`
R8/J/H: `+a.R.slice(8,12).map(s=>h(s,2)).join(" ")+`
K/Q: `+a.R.slice(12,16).map(s=>h(s,2)).join(" ")+`
`}var m=class extends R{newMachine(){return new C}getPresets(){return W}getDefaultExtensions(){return[".dasm"]}getToolForFilename(s){return s.endsWith(".c")?"cc65":s.endsWith(".s")||s.endsWith(".ca65")?"ca65":"dasm"}readAddress(s){return this.machine.readConst(s)}disassemble(s,e){return w(s,e(s),e(s+1),e(s+2))}getDebugCategories(){return["CPU","I/O","VRAM"]}getDebugInfo(s,e){switch(s){case"CPU":return U(e.c);case"I/O":return"Port 0: "+h(e.port0||0,2)+`
Port 1: `+h(e.port1||0,2)+`
Port 4: `+h(e.port4||0,2)+`
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-3PS2L32G.js.map
@@ -2,6 +2,6 @@
"version": 3,
"sources": ["../src/common/cpu/F8.ts", "../src/machine/channelf.ts", "../src/common/cpu/disasmF8.ts", "../src/platform/channelf.ts"],
"sourcesContent": ["// based on https://github.com/mamedev/mame/blob/master/src/devices/cpu/f8/f8.cpp\n// license:BSD-3-Clause\n// copyright-holders:Juergen Buchmueller\n// and https://raw.githubusercontent.com/mamedev/mame/master/src/mame/fairchild/channelf.cpp\n// license:GPL-2.0+\n// copyright-holders:Juergen Buchmueller, Frank Palazzolo, Sean Riddle\n\nimport { Bus, CPU, InstructionBased, SavesState, Interruptable, MemoryBusConnected } from \"../devices\";\n\nexport interface F8State {\n PC: number; // alias for PC0 (required by CpuState)\n PC0: number; // program counter\n PC1: number; // saved program counter (stack)\n DC0: number; // data counter\n DC1: number; // alternate data counter\n A: number; // accumulator\n W: number; // status register (flags)\n IS: number; // indirect scratchpad address register (6-bit)\n R: number[]; // 64-byte scratchpad RAM\n o: number; // last opcode\n irq: boolean;\n}\n\n// Status register flag bits\nconst FLAG_S = 0x01; // Sign (complementary: set when positive)\nconst FLAG_C = 0x02; // Carry\nconst FLAG_Z = 0x04; // Zero\nconst FLAG_O = 0x08; // Overflow\nconst FLAG_I = 0x10; // Interrupt Control Bit\n\nexport class F8CPU implements CPU, InstructionBased, SavesState<F8State>, Interruptable<number>, MemoryBusConnected {\n\n // Registers\n PC0: number = 0; // active program counter\n PC1: number = 0; // saved program counter\n DC0: number = 0; // active data counter\n DC1: number = 0; // alternate data counter\n A: number = 0; // accumulator\n W: number = 0; // status/flags\n IS: number = 0; // indirect scratchpad address (6-bit)\n R: Uint8Array = new Uint8Array(64); // scratchpad RAM\n\n bus: Bus;\n iobus: Bus;\n o: number = 0; // last opcode\n stable: boolean = true;\n irqRequest: boolean = false;\n\n connectMemoryBus(bus: Bus): void {\n this.bus = bus;\n }\n connectIOBus(bus: Bus): void {\n this.iobus = bus;\n }\n\n reset(): void {\n this.PC0 = 0;\n this.PC1 = 0;\n this.DC0 = 0;\n this.DC1 = 0;\n this.A = 0;\n this.W = 0;\n this.IS = 0;\n this.R.fill(0);\n this.irqRequest = false;\n }\n\n interrupt(type: number): void {\n this.irqRequest = true;\n }\n\n getPC(): number { return this.PC0; }\n getSP(): number { return this.PC1; }\n isStable(): boolean { return this.stable; }\n\n saveState(): F8State {\n return {\n PC: this.PC0,\n PC0: this.PC0,\n PC1: this.PC1,\n DC0: this.DC0,\n DC1: this.DC1,\n A: this.A,\n W: this.W,\n IS: this.IS,\n R: Array.from(this.R),\n o: this.o,\n irq: this.irqRequest,\n };\n }\n\n loadState(state: F8State): void {\n this.PC0 = state.PC0 ?? state.PC;\n this.PC1 = state.PC1;\n this.DC0 = state.DC0;\n this.DC1 = state.DC1;\n this.A = state.A;\n this.W = state.W;\n this.IS = state.IS;\n for (let i = 0; i < 64; i++) this.R[i] = state.R[i];\n this.o = state.o;\n this.irqRequest = state.irq;\n }\n\n // Read byte at PC0, increment PC0\n private fetchPC0(): number {\n const val = this.bus.read(this.PC0);\n this.PC0 = (this.PC0 + 1) & 0xFFFF;\n return val;\n }\n\n // Read byte at DC0, increment DC0\n private fetchDC0(): number {\n const val = this.bus.read(this.DC0);\n this.DC0 = (this.DC0 + 1) & 0xFFFF;\n return val;\n }\n\n // Write byte at DC0, increment DC0\n private storeDC0(val: number): void {\n this.bus.write(this.DC0, val);\n this.DC0 = (this.DC0 + 1) & 0xFFFF;\n }\n\n // Clear O, Z, C, S flags\n private clrOZCS(): void {\n this.W &= ~(FLAG_O | FLAG_Z | FLAG_C | FLAG_S);\n }\n\n // Set Sign and Zero flags from value\n // Note: F8 sign flag is COMPLEMENTARY - set when bit 7 is CLEAR (positive)\n private setSZ(val: number): void {\n if ((val & 0xFF) === 0) this.W |= FLAG_Z;\n if ((val & 0x80) === 0) this.W |= FLAG_S; // complementary sign\n }\n\n // Addition with carry/overflow detection\n private doAdd(a: number, b: number, carry: number = 0): number {\n const result = (a & 0xFF) + (b & 0xFF) + (carry & 1);\n // Set carry if overflow past 8 bits\n if (result & 0x100) this.W |= FLAG_C;\n // Set overflow using XOR method\n if (((a ^ result) & (b ^ result) & 0x80) !== 0) this.W |= FLAG_O;\n return result & 0xFF;\n }\n\n // BCD addition\n private doAddDecimal(augend: number, addend: number): number {\n let tmp = (augend & 0x0F) + (addend & 0x0F);\n let c1 = (tmp > 9) ? 1 : 0;\n tmp = (augend >> 4) + (addend >> 4) + c1;\n let c2 = (tmp > 9) ? 1 : 0;\n\n // Do binary add for flags\n this.clrOZCS();\n let result = this.doAdd(augend, addend);\n this.setSZ(result);\n\n // Apply BCD correction\n let correction = 0;\n if (c2) correction |= 0xA0;\n if (c1) correction |= 0x0A;\n if (correction) {\n this.clrOZCS();\n result = this.doAdd(result, correction);\n this.setSZ(result);\n }\n return resulLine truncated
"mappings": "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 truncated
"mappings": "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 truncated
"names": ["FLAG_S", "FLAG_C", "FLAG_Z", "FLAG_O", "FLAG_I", "F8CPU", "bus", "type", "state", "_a", "i", "val", "a", "b", "carry", "result", "augend", "addend", "tmp", "c1", "c2", "correction", "r", "idx", "opcode", "cycles", "hi", "lo", "mask", "offset", "cmp", "CHANNELF_COLORMAP", "INPUT_RIGHT", "INPUT_LEFT", "INPUT_BACK", "INPUT_FORWARD", "INPUT_CCW", "INPUT_CW", "INPUT_PULL", "INPUT_PUSH", "ChannelF", "BasicMachine", "F8CPU", "newAddressDecoder", "a", "v", "port", "val", "row", "col", "color", "addr", "data", "padBytes", "trap", "clock", "targetClocks", "y", "palOffset", "p125", "p126", "rgba", "cycles", "samplesPerFrame", "i", "sample", "freq", "period", "key", "code", "flags", "pressed", "released", "Keys", "state", "regName", "r", "disassembleF8", "pc", "b0", "b1", "b2", "mn", "args", "nb", "isaddr", "regs", "hex", "offset", "mask", "CHANNELF_PRESETS", "cpuStateToLongString_F8", "c", "hex", "printFlags", "v", "ChannelFPlatform", "BaseMachinePlatform", "ChannelF", "fn", "a", "pc", "read", "disassembleF8", "category", "state", "PLATFORMS"]
}
-17
View File
@@ -1,17 +0,0 @@
import{H as R,q as D}from"./chunk-6POV4IU3.js";import{$ as A,J as S,V as n,_ as P,g as h,s as p}from"./chunk-V6XWGCKJ.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.getScratLine 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)+`
`+p(a.W,["S","C","Z","O","I"],!0)+`
R0-R3: `+a.R.slice(0,4).map(s=>h(s,2)).join(" ")+`
R4-R7: `+a.R.slice(4,8).map(s=>h(s,2)).join(" ")+`
R8/J/H: `+a.R.slice(8,12).map(s=>h(s,2)).join(" ")+`
K/Q: `+a.R.slice(12,16).map(s=>h(s,2)).join(" ")+`
`}var m=class extends R{newMachine(){return new C}getPresets(){return W}getDefaultExtensions(){return[".dasm"]}getToolForFilename(s){return s.endsWith(".c")?"cc65":s.endsWith(".s")||s.endsWith(".ca65")?"ca65":"dasm"}readAddress(s){return this.machine.readConst(s)}disassemble(s,e){return w(s,e(s),e(s+1),e(s+2))}getDebugCategories(){return["CPU","I/O","VRAM"]}getDebugInfo(s,e){switch(s){case"CPU":return U(e.c);case"I/O":return"Port 0: "+h(e.port0||0,2)+`
Port 1: `+h(e.port1||0,2)+`
Port 4: `+h(e.port4||0,2)+`
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-LWUOYH7J.js.map
+53 -49
View File
@@ -1,24 +1,24 @@
import{a as $c,b as Pc,c as Wo,d as iP}from"./chunk-7GWCUXYG.js";import{a as tP}from"./chunk-LNOKARBD.js";import{a as wc}from"./chunk-A7SWO6EA.js";import{a as f0,b as u0,c as rP}from"./chunk-DGIZH2KV.js";import{D as Vu,J as qu,t as c0,u as h0}from"./chunk-6POV4IU3.js";import{A as Hs,E as vr,F as ju,G as Mo,I as yc,J as Mu,S as Wu,U as l0,a as On,aa as Qc,b as Ya,d as yi,e as zu,f as Qi,g as pt,h as Yu,i as n0,k as s0,m as bc,n as xc,o as vc,p as Gs,q as o0,t as Sc,w as a0,x as Lu,y as La,z as zi}from"./chunk-V6XWGCKJ.js";import{a as qt,b as gc,c as za,d as Uu,e as Eu}from"./chunk-KT7KMEQC.js";var Iu=Uu((O0,Du)=>{(function(i){if(typeof O0=="object"&&typeof Du!="undefined")Du.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(f,O){if(!s[f]){if(!n[f]){var p=typeof za=="function"&&za;if(!O&&p)return p(f,!0);if(l)return l(f,!0);var b=new Error("Cannot find module '"+f+"'");throw b.code="MODULE_NOT_FOUND",b}var y=s[f]={exports:{}};n[f][0].call(y.exports,function(P){var X=n[f][1][P];return a(X||P)},y,y.exports,r,n,s,o)}return s[f].exports}for(var l=typeof za=="function"&&za,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,f=new a(P),O=o.document.createTextNode("");f.observe(O,{characterData:!0}),l=function(){O.data=c=++c%2}}else if(!o.setImmediate&&typeof o.MessageChannel!="undefined"){var p=new o.MessageChannel;p.port1.onmessage=P,l=function(){p.port2.postMessage(0)}}else"document"in o&&"onreadystatechange"in o.document.createElement("script")?l=function(){var U=o.document.createElement("script");U.onreadystatechange=function(){P(),U.onreadystatechange=null,U.parentNode.removeChild(U),U=null},o.document.documentElement.appendChild(U)}:l=function(){setTimeout(P,0)};var b,y=[];function P(){b=!0;for(var U,H,q=y.length;q;){for(H=y,y=[],U=-1;++U<q;)H[U]();q=y.length}b=!1}n.exports=X;function X(U){y.push(U)===1&&!b&&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"],f=["FULFILLED"],O=["PENDING"];n.exports=p;function p(d){if(typeof d!="function")throw new TypeError("resolver must be a function");this.state=O,this.queue=[],this.outcome=void 0,d!==a&&X(this,d)}p.prototype.catch=function(d){return this.then(null,d)},p.prototype.then=function(d,V){if(typeof d!="function"&&this.state===f||typeof V!="function"&&this.state===c)return this;var G=new this.constructor(a);if(this.state!==O){var de=this.state===f?d:V;y(G,de,this.outcome)}else this.queue.push(new b(G,d,V));return G};function b(d,V,G){this.promise=d,typeof V=="function"&&(this.onFulfilled=V,this.callFulfilled=this.otherCallFulfilled),typeof G=="function"&&(this.onRejected=G,this.callRejected=this.otherCallRejected)}b.prototype.callFulfilled=function(d){l.resolve(this.promise,d)},b.prototype.otherCallFulfilled=function(d){y(this.promise,this.onFulfilled,d)},b.prototype.callRejected=function(d){l.reject(this.promise,d)},b.prototype.otherCallRejected=function(d){y(this.promise,this.onRejected,d)};function y(d,V,G){o(function(){var de;try{de=V(G)}catch(Ae){return l.reject(d,Ae)}de===d?l.reject(d,new TypeError("Cannot resolve promise with itself")):l.resolve(d,de)})}l.resolve=function(d,V){var G=U(P,V);if(G.status==="error")return l.reject(d,G.value);var de=G.value;if(de)X(d,de);else{d.state=f,d.outcome=V;for(var Ae=-1,Pe=d.queue.length;++Ae<Pe;)d.queue[Ae].callFulfilled(V)}return d},l.reject=function(d,V){d.state=c,d.outcome=V;for(var G=-1,de=d.queue.length;++G<de;)d.queue[G].callRejected(V);return d};function P(d){var V=d&&d.then;if(d&&(typeof d=="object"||typeof d=="function")&&typeof V=="function")return function(){V.apply(d,arguments)}}function X(d,V){var G=!1;function de(Xe){G||(G=!0,l.reject(d,Xe))}function Ae(Xe){G||(G=!0,l.resolve(d,Xe))}function Pe(){V(Ae,de)}var oe=U(Pe);oe.status==="error"&&de(oe.value)}function U(d,V){var G={};try{G.value=d(V),G.status="success"}catch(de){G.status="error",G.value=de}return G}p.resolve=H;function H(d){return d instanceof this?d:l.resolve(new this(a),d)}p.reject=q;function q(d){var V=new this(a);return l.reject(V,d)}p.all=B;function B(d){var V=this;if(Object.prototype.toString.call(d)!=="[object Array]")return this.reject(new TypeError("must be an array"));var G=d.length,de=!1;if(!G)return this.resolve([]);for(var Ae=new Array(G),Pe=0,oe=-1,Xe=new this(a);++oe<G;)We(d[oe],oe);return Xe;function We(He,ie){V.resolve(He).then(ve,function(ue){de||(de=!0,l.reject(Xe,ue))});function ve(ue){Ae[ie]=ue,++Pe===G&&!de&&(de=!0,l.resolve(Xe,Ae))}}}p.race=j;function j(d){var V=this;if(Object.prototype.toString.call(d)!=="[object Array]")return this.reject(new TypeError("musLine truncated
`):h)),u};var mt=/^(?:focusinfocus|focusoutblur)$/,yt=function(h){h.stopPropagation()};d.extend(d.event,{trigger:function(h,u,m,g){var x,v,Q,C,R,Y,F,te,I=[m||X],ce=f.call(h,"type")?h.type:h,Ie=f.call(h,"namespace")?h.namespace.split("."):[];if(v=te=Q=m=m||X,!(m.nodeType===3||m.nodeType===8)&&!mt.test(ce+d.event.triggered)&&(ce.indexOf(".")>-1&&(Ie=ce.split("."),ce=Ie.shift(),Ie.sort()),R=ce.indexOf(":")<0&&"on"+ce,h=h[d.expando]?h:new d.Event(ce,typeof h=="object"&&h),h.isTrigger=g?2:3,h.namespace=Ie.join("."),h.rnamespace=h.namespace?new RegExp("(^|\\.)"+Ie.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,h.result=void 0,h.target||(h.target=m),u=u==null?[h]:d.makeArray(u,[h]),F=d.event.special[ce]||{},!(!g&&F.trigger&&F.trigger.apply(m,u)===!1))){if(!g&&!F.noBubble&&!P(m)){for(C=F.delegateType||ce,mt.test(C+ce)||(v=v.parentNode);v;v=v.parentNode)I.push(v),Q=v;Q===(m.ownerDocument||X)&&I.push(Q.defaultView||Q.parentWindow||i)}for(x=0;(v=I[x++])&&!h.isPropagationStopped();)te=v,h.type=x>1?C:F.bindType||ce,Y=(we.get(v,"events")||Object.create(null))[h.type]&&we.get(v,"handle"),Y&&Y.apply(v,u),Y=R&&v[R],Y&&Y.apply&&fr(v)&&(h.result=Y.apply(v,u),h.result===!1&&h.preventDefault());return h.type=ce,!g&&!h.isDefaultPrevented()&&(!F._default||F._default.apply(I.pop(),u)===!1)&&fr(m)&&R&&y(m[ce])&&!P(m)&&(Q=m[R],Q&&(m[R]=null),d.event.triggered=ce,h.isPropagationStopped()&&te.addEventListener(ce,yt),m[ce](),h.isPropagationStopped()&&te.removeEventListener(ce,yt),d.event.triggered=void 0,Q&&(m[R]=Q)),h.result}},simulate:function(h,u,m){var g=d.extend(new d.Event,m,{type:h,isSimulated:!0});d.event.trigger(g,null,u)}}),d.fn.extend({trigger:function(h,u){return this.each(function(){d.event.trigger(h,u,this)})},triggerHandler:function(h,u){var m=this[0];if(m)return d.event.trigger(h,u,m,!0)}});var si=/\[\]$/,Vt=/\r?\n/g,Ca=/^(?:submit|button|image|reset|file)$/i,Oi=/^(?:input|select|textarea|keygen)/i;function Qu(h,u,m,g){var x;if(Array.isArray(u))d.each(u,function(v,Q){m||si.test(h)?g(h,Q):Qu(h+"["+(typeof Q=="object"&&Q!=null?v:"")+"]",Q,m,g)});else if(!m&&q(u)==="object")for(x in u)Qu(h+"["+x+"]",u[x],m,g);else g(h,u)}d.param=function(h,u){var m,g=[],x=function(v,Q){var C=y(Q)?Q():Q;g[g.length]=encodeURIComponent(v)+"="+encodeURIComponent(C==null?"":C)};if(h==null)return"";if(Array.isArray(h)||h.jquery&&!d.isPlainObject(h))d.each(h,function(){x(this.name,this.value)});else for(m in h)Qu(m,h[m],u,x);return g.join("&")},d.fn.extend({serialize:function(){return d.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var h=d.prop(this,"elements");return h?d.makeArray(h):this}).filter(function(){var h=this.type;return this.name&&!d(this).is(":disabled")&&Oi.test(this.nodeName)&&!Ca.test(h)&&(this.checked||!ni.test(h))}).map(function(h,u){var m=d(this).val();return m==null?null:Array.isArray(m)?d.map(m,function(g){return{name:u.name,value:g.replace(Vt,`\r
`)}}):{name:u.name,value:m.replace(Vt,`\r
`)}}).get()}});var U1=/%20/g,E1=/#.*$/,z1=/([?&])_=[^&]*/,Y1=/^(.*?):[ \t]*([^\r\n]*)$/mg,L1=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,j1=/^(?:GET|HEAD)$/,M1=/^\/\//,Gg={},wu={},Hg="*/".concat("*"),$u=X.createElement("a");$u.href=Qe.href;function Kg(h){return function(u,m){typeof u!="string"&&(m=u,u="*");var g,x=0,v=u.toLowerCase().match(_i)||[];if(y(m))for(;g=v[x++];)g[0]==="+"?(g=g.slice(1)||"*",(h[g]=h[g]||[]).unshift(m)):(h[g]=h[g]||[]).push(m)}}function Jg(h,u,m,g){var x={},v=h===wu;function Q(C){var R;return x[C]=!0,d.each(h[C]||[],function(Y,F){var te=F(u,m,g);if(typeof te=="string"&&!v&&!x[te])return u.dataTypes.unshift(te),Q(te),!1;if(v)return!(R=te)}),R}return Q(u.dataTypes[0])||!x["*"]&&Q("*")}function Pu(h,u){var m,g,x=d.ajaxSettings.flatOptions||{};for(m in u)u[m]!==void 0&&((x[m]?h:g||(g={}))[m]=u[m]);return g&&d.extend(!0,h,g),h}function W1(h,u,m){for(var g,x,v,Q,C=h.contents,R=h.dataTypes;R[0]==="*";)R.shift(),g===void 0&&(g=h.mimeType||u.getResponseHeader("Content-Type"));if(g){for(x in C)if(C[x]&&C[x].test(g)){R.unshift(x);break}}if(R[0]in m)v=R[0];else{for(x in m){if(!R[0]||h.converters[x+" "+R[0]]){v=x;break}Q||(Q=x)}v=v||Q}if(v)return v!==R[0]&&R.unshift(v),m[v]}function V1(h,u,m,g){var x,v,Q,C,R,Y={},F=h.dataTypes.slice();if(F[1])for(Q in h.converters)Y[Q.toLowerCase()]=h.converters[Q];for(v=F.shift();v;)if(h.responseFields[v]&&(m[h.responseFields[v]]=u),!R&&g&&h.dataFilter&&(u=h.dataFilter(u,h.dataType)),R=v,v=F.shift(),v){if(v==="*")v=R;else if(R!=="*"&&R!==v){if(Q=Y[R+" "+v]||Y["* "+v],!Q){for(x in Y)if(C=x.split(" "),C[1]===v&&(Q=Y[R+" "+C[0]]||Y["* "+C[0]],Q)){Q===!0?Q=Y[x]:Y[x]!==!0&&(v=C[0],F.unshift(C[1]));break}}if(Q!==!0)if(Q&&h.throws)u=Q(u);else try{u=Q(u)}catch(te){return{state:"parsererror",error:Q?te:"No conversion from "+R+" to "+v}}}}return{state:"success",data:u}}d.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Qe.href,type:"GET",isLocal:L1.test(Qe.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Hg,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":d.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(h,u){return u?Pu(Pu(h,d.ajaxSettings),u):Pu(d.ajaxSettings,h)},ajaxPrefilter:Kg(Gg),ajaxTransport:Kg(wu),ajax:function(h,u){typeof h=="object"&&(u=h,h=void 0),u=u||{};var m,g,x,v,Q,C,R,Y,F,te,I=d.ajaxSetup({},u),ce=I.context||I,Ie=I.context&&(ce.nodeType||ce.jquery)?d(ce):d.event,ht=d.Deferred(),Be=d.Callbacks("once memory"),di=I.statusCode||{},Kt={},ln={},cn="canceled",st={readyState:0,getResponseHeader:function(dt){var Yt;if(R){if(!v)for(v={};Yt=Y1.exec(x);)v[Yt[1].toLowerCase()+" "]=(v[Yt[1].toLowerCase()+" "]||[]).concat(Yt[2]);Yt=v[dt.toLowerCase()+" "]}return Yt==null?null:Yt.join(", ")},getAllResponseHeaders:function(){return R?x:null},setRequestHeader:function(dt,Yt){return R==null&&(dt=ln[dt.toLowerCase()]=ln[dt.toLowerCase()]||dt,Kt[dt]=Yt),this},overrideMimeType:function(dt){return R==null&&(I.mimeType=dt),this},statusCode:function(dt){var Yt;if(dt)if(R)st.always(dt[st.status]);else for(Yt in dt)di[Yt]=[di[Yt],dt[Yt]];return this},abort:function(dt){var Yt=dt||cn;return m&&m.abort(Yt),Fs(0,Yt),this}};if(ht.promise(st),I.url=((h||I.url||Qe.href)+"").replace(M1,Qe.protocol+"//"),I.type=u.method||u.type||I.method||I.type,I.dataTypes=(I.dataType||"*").toLowerCase().match(_i)||[""],I.crossDomain==null){C=X.createElement("a");try{C.href=I.url,C.href=C.href,I.crossDomain=$u.protocol+"//"+$u.host!=C.protocol+"//"+C.host}catch(dt){I.crossDomain=!0}}if(I.data&&I.processData&&typeof I.data!="string"&&(I.data=d.param(I.data,I.traditional)),Jg(Gg,I,u,st),R)return st;Y=d.event&&I.global,Y&&d.active++===0&&d.event.trigger("ajaxStart"),I.type=I.type.toUpperCase(),I.hasContent=!j1.test(I.type),g=I.url.replace(E1,""),I.hasContent?I.data&&I.processData&&(I.contentType||"").indexOf("application/x-www-form-urlencoded")===0&&(I.data=I.data.replace(U1,"+")):(te=I.url.slice(g.length),I.data&&(I.processData||typeof I.data=="string")&&(g+=(je.test(g)?"&":"?")+I.data,delete I.data),I.cache===!1&&(g=g.replace(z1,"$1"),te=(je.test(g)?"&":"?")+"_="+Re.guid+++te),I.url=g+te),I.ifModified&&(d.lastModified[g]&&st.setRequestHeader("If-Modified-Since",d.lastModified[g]),d.etag[g]&&st.setRequestHeader("If-None-Match",d.etag[g])),(I.data&&I.hasContent&&I.contentType!==!1||u.contentType)&&st.setRequestHeader("Content-Type",I.contentType),st.setRequestHeader("Accept",I.dataTypes[0]&&I.accepts[I.dataTypes[0]]?I.accepts[I.dataTypes[0]]+(I.dataTypes[0]!=="*"?", "+Hg+"; q=0.01":""):I.accepts["*"]);for(F in I.headers)st.setRequestHeader(F,I.headers[F]);if(I.beforeSend&&(I.beforeSend.call(ce,st,I)===!1||R))return st.abort();if(cn="ab Line truncated
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function NU(i,e){return qU(i)||DU(i,e)||FU(i,e)||IU()}function FU(i,e){if(i){if(typeof i=="string")return I$(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$(i,e):void 0}}var a1=Object.entries,N$=Object.setPrototypeOf,BU=Object.isFrozen,GU=Object.getPrototypeOf,HU=Object.getOwnPropertyDescriptor,bi=Object.freeze,xi=Object.seal,Pa=Object.create,l1=typeof Reflect!="undefined"&&Reflect,Ug=l1.apply,Eg=l1.construct;bi||(bi=function(e){return e});xi||(xi=function(e){return e});Ug||(Ug=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)});Eg||(Eg=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 wa=Nt(Array.prototype.forEach),KU=Nt(Array.prototype.lastIndexOf),F$=Nt(Array.prototype.pop),$a=Nt(Array.prototype.push),JU=Nt(Array.prototype.splice),Zs=Array.isArray,sc=Nt(String.prototype.toLowerCase),_g=Nt(String.prototype.toString),B$=Nt(String.prototype.match),rc=Nt(String.prototype.replace),G$=Nt(String.prototype.indexOf),eE=Nt(String.prototype.trim),tE=Nt(Number.prototype.toString),iE=Nt(Boolean.prototype.toString),H$=typeof BigInt=="undefined"?null:Nt(BigInt.prototype.toString),K$=typeof Symbol=="undefined"?null:Nt(Symbol.prototype.toString),li=Nt(Object.prototype.hasOwnProperty),nc=Nt(Object.prototype.toString),ai=Nt(RegExp.prototype.test),Ro=rE(TypeError);function Nt(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 Ug(i,e,r)}}function rE(i){return function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return Eg(i,t)}}function Ot(i,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:sc;if(N$&&N$(i,null),!Zs(e))return i;let r=e.length;for(;r--;){let n=e[r];if(typeof n=="string"){let s=t(n);s!==n&&(BU(e)||(e[r]=s),n=s)}i[n]=!0}return i}function nE(i){for(let e=0;e<i.length;e++)li(i,e)||(i[e]=null);return i}function Xi(i){let e=Pa(null);for(let r of a1(i)){var t=NU(r,2);let n=t[0],s=t[1];li(i,n)&&(Zs(s)?e[n]=nE(s):s&&typeof s=="object"&&s.constructor===Object?e[n]=Xi(s):e[n]=s)}return e}function sE(i){switch(typeof i){case"string":return i;case"number":return tE(i);case"boolean":return iE(i);case"bigint":return H$?H$(i):"0";case"symbol":return K$?K$(i):"Symbol()";case"undefined":return nc(i);case"function":case"object":{if(i===null)return nc(i);let e=i,t=en(e,"toString");if(typeof t=="function"){let r=t(e);return typeof r=="string"?r:nc(r)}return nc(i)}default:return nc(i)}}function en(i,e){for(;i!==null;){let r=HU(i,e);if(r){if(r.get)return Nt(r.get);if(typeof r.value=="function")return Nt(r.value)}i=GU(i)}function t(){return null}return t}function oE(i){try{return ai(i,""),!0}catch(e){return!1}}var J$=bi(["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"]),Rg=bi(["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"]),Cg=bi(["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"]),aE=bi(["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
`+yt),we&&(yt=gr(yt)),V&&Zi?Xe(yt):yt},e.setConfig=function(){let re=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Rn(re),is=!0,Pn=gt,sn=St},e.clearConfig=function(){Ui=null,is=!1,Pn=null,sn=null,V=de,G=""},e.isValidAttribute=function(re,k,W){Ui||Rn({});let ne=$t(re),Qe=$t(k);return se(ne,Qe,W)},e.addHook=function(re,k){typeof k=="function"&&li(Le,re)&&$a(Le[re],k)},e.removeHook=function(re,k){if(li(Le,re)){if(k!==void 0){let W=KU(Le[re],k);return W===-1?void 0:JU(Le[re],W,1)[0]}return F$(Le[re])}},e.removeHooks=function(re){li(Le,re)&&(Le[re]=[])},e.removeAllHooks=function(){Le=o1()},e}var yE=c1();h1.exports=yE});var Wg=Eu(Iu());var Pt=[/^\s*[.#%]?(include|incbin|embed)\s+"(.+?)"/gmi,/^\s*([;']|[/][/])#(resource)\s+"(.+?)"/gm],Rt=[/^\s*([;]|[/][/])#link\s+"(.+?)"/gm],ja=[/^\s*(`include|[.]include)\s+"(.+?)"/gmi,/^\s*\$(include|\$dofile|\$write_image_in_table)\('(.+?)'/gmi,{re:/^\s*([.]arch)\s+(\w+)/gmi,suffix:".json"},/\$readmem[bh]\("(.+?)"/gmi],d0=[/^\s+(USE|ASM)\s+(\S+[.]\S+)/gm],nP=[/^[!]src\s+"(.+?)"/gmi],sP=[{re:/^\s*import\s*"(.+?)";/gmi,suffix:".wiz"},/^\s*embed\s*"(.+?)";/gmi],oP=[/^\s*(import)\s*"(.+?)"/gmi],aP=[/^\s*%%\s*#include\s+"(.+?)"/gm],p0={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"}},lP={dasm:{id:"dasm",name:"DASM",kind:"assembler",arch:"6502",extensions:[".dasm"],editorStyle:"6502",helpURL:"https://raw.githubusercontent.com/sehugg/dasm/master/doc/dasm.txt",wasmModule:"dasm",includePatterns:Pt,linkPatterns:Rt},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",includePatterns:[...Pt,...nP],linkPatterns:Rt},xa:{id:"xa",name:"XA",kind:"assembler",arch:"6502",extensions:[".xa"],editorStyle:"6502",helpURL:"https://www.floodgap.com/retrotech/xa/",wasmModule:"xa",includePatterns:Pt,linkPatterns:Rt},nesasm:{id:"nesasm",name:"NESASM",kind:"assembler",arch:"6502",extensions:[".nesasm"],editorStyle:"6502",wasmModule:"nesasm",includePatterns:Pt,linkPatterns:Rt},merlin32:{id:"merlin32",name:"Merlin 32",kind:"assembler",arch:"6502",extensions:[".lnk"],editorStyle:"6502",wasmModule:"merlin32",includePatterns:[...Pt,...d0],linkPatterns:Rt},cc65:{id:"cc65",name:"cc65",kind:"compiler",arch:"6502",extensions:[".c",".h"],editorStyle:"text/x-csrc",helpURL:"https://cc65.github.io/doc/cc65.html",wasmModule:"cc65",platforms:p0,includePatterns:Pt,linkPatterns:Rt},ca65:{id:"ca65",name:"ca65",kind:"assembler",arch:"6502",extensions:[".s",".ca65"],editorStyle:"6502",helpURL:"https://cc65.github.io/doc/ca65.html",wasmModule:"ca65",platforms:p0,includePatterns:Pt,linkPatterns:Rt},ld65:{id:"ld65",name:"ld65",kind:"linker",arch:"6502",extensions:[],wasmModule:"ld65"},sdcc:{id:"sdcc",name:"SDCC",kind:"compiler",arch:"z80",extensions:[".c",".h"],editorStyle:"text/x-csrc",helpURL:"http://sdcc.sourceforge.net/doc/sdccman.pdf",wasmModule:"sdcc",platforms:{default:{preloadFS:"sdcc"}},includePatterns:Pt,linkPatterns:Rt},sdasz80:{id:"sdasz80",name:"sdasz80",kind:"assembler",arch:"z80",extensions:[".s"],editorStyle:"z80",wasmModule:"sdasz80",platforms:{default:{preloadFS:"sdcc"}},includePatterns:Pt,linkPatterns:Rt},sdasgb:{id:"sdasgb",name:"sdasgb",kind:"assembler",arch:"gbz80",extensions:[".sgb"],editorStyle:"z80",wasmModule:"sdasgb",platforms:{default:{preloadFS:"sdcc"}},includePatterns:Pt,linkPatterns:Rt},sdldz80:{id:"sdldz80",name:"sdldz80",kind:"linker",arch:"z80",extensions:[],wasmModule:"sdldz80"},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",includePatterns:Pt,linkPatterns:Rt},jsasm:{id:"jsasm",name:"JSASM",kind:"assembler",extensions:[".asm"],editorStyle:"z80",includePatterns:ja,linkPatterns:[]},xasm6809:{id:"xasm6809",name:"XASM6809",kind:"assembler",arch:"6809",extensions:[".xasm"],editorStyle:"6809",wasmModule:"xasm6809",includePatterns:[...Pt,...d0],linkPatterns:Rt},cmoc:{id:"cmoc",name:"CMOC",kind:"compiler",arch:"6809",extensions:[".c",".h"],editorStyle:"text/x-csrc",helpURL:"http://perso.b2b2c.ca/~sarrazip/dev/cmoc.html",wasmModule:"cmoc",includePatterns:Pt,linkPatterns:Rt},lwasm:{id:"lwasm",name:"LWASM",kind:"assembler",arch:"6809",extensions:[".lwasm"],wasmModule:"lwasm",includePatterns:Pt,linkPatterns:Rt},lwlink:{id:"lwlink",name:"LWLINK",kind:"linker",arch:"6809",extensions:[],wasmModule:"lwlink"},vasmarm:{id:"vasmarm",name:"vasm (ARM)"Line truncated
`){[e,t]=No(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}},qo=class i extends it{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]=No(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 f=this.children.slice();return f[n]=l,new i(f,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]=No(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 b of e)r+=b.lines;if(r<32){let b=[];for(let y of e)y.flatten(b);return new tr(b,t)}let n=Math.max(32,r>>5),s=n<<1,o=n>>1,a=[],l=0,c=-1,f=[];function O(b){let y;if(b.lines>s&&b instanceof i)for(let P of b.children)O(P);else b.lines>o&&(l>o||!l)?(p(),a.push(b)):b instanceof tr&&l&&(y=f[f.length-1])instanceof tr&&b.lines+y.lines<=32?(l+=b.lines,c+=b.length+1,f[f.length-1]=new tr(y.text.concat(b.text),y.length+1+b.length)):(l+b.lines>n&&p(),l+=b.lines,c+=b.length+1,f.push(b))}function p(){l!=0&&(a.push(f.length==1?f[0]:i.from(f,c)),c=-1,l=f.length=0)}for(let b of e)O(b);return p(),a.length==1?a[0]:new i(a,t)}};it.empty=new tr([""],0);function fP(i){let e=-1;for(let t of i)e+=t.length+1;return e}function _c(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 k0(i,e,t){return _c(i,[""],e,t)}var to=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 tr?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 tr?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 tr){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 tr?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)}},Rc=class{constructor(e,t,r){this.value="",this.done=!1,this.cursor=new to(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!=""}},Cc=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"&&(it.prototype[Symbol.iterator]=function(){return this.iter()},to.prototype[Symbol.iterator]=Rc.prototype[Symbol.iterator]=Cc.prototype[Symbol.iterator]=function(){return this});var Ku=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 No(i,e,t){return e=Math.max(0,Math.min(i.length,e)),[e,Math.max(e,Math.min(i.length,t))]}function jt(i,e,t=!0,r=!0){return Q0(i,e,t,r)}function uP(i){return i>=56320&&i<57344}function OP(i){return i>=55296&&i<56320}function Vr(i,e){let t=i.charCodeAt(e);if(!OP(t)||e+1==i.length)return t;let r=i.charCodeAt(e+1);return uP(r)?(t-55296<<10)+(r-56320)+65536:t}function zc(i){return i<=65535?String.fromCharCode(i):(i-=65536,String.fromCharCode((i>>10)+55296,(i&1023)+56320))}function us(i){return i<65536?1:2}var Ju=/\r\n?|\n/,Jt=(function(i){return i[i.Simple=0]="Simple",i[i.TrackDel=1]="TrackDel",i[i.TrackBefore=2]="TrackBefore",i[i.TrackAfter=3]="TrackAfter",i})(Jt||(Jt={})),En=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){eO(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:C0(this,e)}mapDesc(e,t=!1){return e.empty?this:tO(this,e,t)}mapPos(e,t=-1,r=Jt.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!=Jt.Simple&&c>=e&&(r==Jt.TrackDel&&n<e&&c>e||r==Jt.TrackBefore&&n<e||r==Jt.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)}},Yi=class i extends En{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 eO(this,(t,r,n,s,o)=>e=e.replace(n,n+(r-t),o),!1),e}mapDesc(e,t=!1){return tO(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(it.empty);r.push(o?e.slice(s,s+o):it.empty)}s+=o}return new i(t,r)}compose(e){return this.empty?e:e.empty?this:C0(this,e,!0)}map(e,t=!1){return e.empty?this:tO(this,e,t,!0)}iterChanges(e,t=!1){eO(this,e,t)}get desc Line truncated
`}get readOnly(){return this.facet(L0)}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(A0))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 yP(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=jt(t,o,!1);if(s(t.slice(l,o))!=Qt.Word)break;o=l}for(;a<n;){let l=jt(t,a);if(s(t.slice(a,l))!=Qt.Word)break;a=l}return o==a?null:K.range(o+r,a+r)}};at.allowMultipleSelections=rO;at.tabSize=be.define({combine:i=>i.length?i[0]:4});at.lineSeparator=U0;at.readOnly=L0;at.phrases=be.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])}});at.languageData=A0;at.changeFilter=E0;at.transactionFilter=z0;at.transactionExtender=Y0;Ni.reconfigure=Ce.define();function ir(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 Sr=class{eq(e){return this==e}range(e,t=e){return qa.create(e,t,this)}};Sr.prototype.startSide=Sr.prototype.endSide=0;Sr.prototype.point=!1;Sr.prototype.mapMode=Jt.TrackDel;function OO(i,e){return i==e||i.constructor==e.constructor&&i.eq(e)}var qa=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 lO(i,e){return i.from-e.from||i.value.startSide-e.value.startSide}var cO=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],f=this.from[l]+e,O=this.to[l]+e,p,b;if(f==O){let y=t.mapPos(f,c.startSide,c.mapMode);if(y==null||(p=b=y,c.startSide!=c.endSide&&(b=t.mapPos(f,c.endSide),b<p)))continue}else if(p=t.mapPos(f,c.startSide),b=t.mapPos(O,c.endSide),p>b||p==b&&c.startSide>0&&c.endSide<=0)continue;(b-p||c.endSide-c.startSide)<0||(o<0&&(o=p),c.point&&(a=Math.max(a,b-p)),r.push(c),n.push(p-o),s.push(b-o))}return{mapped:r.length?new i(n,s,r,a):null,pos:o}}},qe=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(lO)),this.isEmpty)return t.length?i.of(t):this;let a=new Ec(this,null,-1).goto(0),l=0,c=[],f=new Wr;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++];f.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])&&f.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))&&(f.addInner(a.from,a.to,a.value)||c.push(qa.create(a.from,a.to,a.value))),a.next());return f.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:f,pos:O}=l.map(a,e);f&&(n=Math.max(n,f.maxPoint),t.push(f),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 Da.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,t=0){return Da.from(e).goto(t)}static compare(e,t,r,n,s=-1){let o=e.filter(O=>O.maxPoint>0||!O.is Line truncated
`)}static newName(){let e=V0[W0]||1;return V0[W0]=e+1,"\u037C"+e.toString(36)}static mount(e,t,r){let n=e[dO],s=r&&r.nonce;n?s&&n.setNonce(s):n=new pO(e,s),n.mount(Array.isArray(t)?t:[t],e)}},q0=new Map,pO=class{constructor(e,t){let r=e.ownerDocument||e,n=r.defaultView;if(!e.head&&e.adoptedStyleSheets&&n.CSSStyleSheet){let s=q0.get(r);if(s)return e[dO]=s;this.sheet=new n.CSSStyleSheet,q0.set(r,this)}else this.styleTag=r.createElement("style"),t&&this.styleTag.setAttribute("nonce",t);this.modules=[],e[dO]=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 zn={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:"'"},Fo={48:")",49:"!",50:"@",51:"#",52:"$",53:"%",54:"^",55:"&",56:"*",57:"(",59:":",61:"+",173:"_",186:":",187:"+",188:"<",189:"_",190:">",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},wP=typeof navigator!="undefined"&&/Mac/.test(navigator.platform),$P=typeof navigator!="undefined"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(Dt=0;Dt<10;Dt++)zn[48+Dt]=zn[96+Dt]=String(Dt);var Dt;for(Dt=1;Dt<=24;Dt++)zn[Dt+111]="F"+Dt;var Dt;for(Dt=65;Dt<=90;Dt++)zn[Dt]=String.fromCharCode(Dt+32),Fo[Dt]=String.fromCharCode(Dt);var Dt;for(Lc in zn)Fo.hasOwnProperty(Lc)||(Fo[Lc]=zn[Lc]);var Lc;function D0(i){var e=wP&&i.metaKey&&i.shiftKey&&!i.ctrlKey&&!i.altKey||$P&&i.shiftKey&&i.key&&i.key.length==1||i.key=="Unidentified",t=!e&&i.key||(i.shiftKey?Fo:zn)[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 Mt(){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++)I0(i,arguments[e]);return i}function I0(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++)I0(i,e[t]);else throw new RangeError("Unsupported child node: "+e)}var ji=typeof navigator!="undefined"?navigator:{userAgent:"",vendor:"",platform:""},$O=typeof document!="undefined"?document:{documentElement:{style:{}}},PO=/Edge\/(\d+)/.exec(ji.userAgent),Rb=/MSIE \d/.test(ji.userAgent),kO=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(ji.userAgent),bh=!!(Rb||kO||PO),N0=!bh&&/gecko\/(\d+)/i.test(ji.userAgent),mO=!bh&&/Chrome\/(\d+)/.exec(ji.userAgent),F0="webkitFontSmoothing"in $O.documentElement.style,TO=!bh&&/Apple Computer/.test(ji.vendor),B0=TO&&(/Mobile\/\w+/.test(ji.userAgent)||ji.maxTouchPoints>2),xe={mac:B0||/Mac/.test(ji.platform),windows:/Win/.test(ji.platform),linux:/Linux|X11/.test(ji.platform),ie:bh,ie_version:Rb?$O.documentMode||6:kO?+kO[1]:PO?+PO[1]:0,gecko:N0,gecko_version:N0?+(/Firefox\/(\d+)/.exec(ji.userAgent)||[0,0])[1]:0,chrome:!!mO,chrome_version:mO?+mO[1]:0,ios:B0,android:/Android\b/.test(ji.userAgent),webkit:F0,webkit_version:F0?+(/\bAppleWebKit\/(\d+)/.exec(ji.userAgent)||[0,0])[1]:0,safari:TO,safari_version:TO?+(/\bVersion\/(\d+(\.\d+)?)/.exec(ji.userAgent)||[0,0])[1]:0,tabSize:$O.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function xd(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 eh=Object.create(null);function vd(i,e,t){if(i==e)return!0;i||(i=eh),e||(e=eh);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 PP(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 G0(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 kP(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 oi=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){}},pi=(function(i){return i[i.Text=0]="Text",i[i.WidgetBefore=1]="WidgetBefore",i[i.WidgetAfter=2]="WidgetAfter",i[i.WidgetRange=3]="WidgetRange",i})(pi||(pi={})),pe=class extends Sr{constructor(e,t,r,n){super(),this.startSide=e,this.enLine truncated
`,n=i.state.doc.line(n.number+(t?1:-1)),s=i.bidiSpans(n),c=i.visualLineSide(n,!t)}if(l){if(!l(f))return a}else{if(!r)return c;l=r(f)}a=c}}function ok(i,e,t){let r=i.state.charCategorizer(e),n=r(t);return s=>{let o=r(s);return n==Qt.Space&&(n=o),n==o}}function ak(i,e,t,r){let n=e.head,s=t?1:-1;if(n==(t?i.state.doc.length:0))return K.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)),f=i.documentTop;if(c)o==null&&(o=c.left-l.left),a=s<0?c.top:c.bottom;else{let y=i.viewState.lineBlockAt(n);o==null&&(o=Math.min(l.right-l.left,i.defaultCharacterWidth*(n-y.from))),a=(s<0?y.top:y.bottom)+f}let O=l.left+o,p=i.viewState.heightOracle.textHeight>>1,b=r!=null?r:p;for(let y=0;;y+=p){let P=a+(b+y)*s,X=qO(i,{x:O,y:P},!1,s);if(t?P>l.bottom:P<l.top)return K.cursor(X.pos,X.assoc);let U=i.coordsAtPos(X.pos,X.assoc),H=U?(U.top+U.bottom)/2:0;if(!U||(t?H>a:H<a))return K.cursor(X.pos,X.assoc,void 0,o)}}function el(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 lx(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=el(i,n.from,0);o!=n.from&&(s=K.cursor(o,-1))}else{let o=el(i,n.from,-1),a=el(i,n.to,1);(o!=n.from||a!=n.to)&&(n.undirectional?s=K.undirectionalRange(n.from,n.to):s=K.range(n.from==n.anchor?o:a,n.from==n.head?o:a))}s&&(t||(t=e.ranges.slice()),t[r]=s)}return t?K.create(t,e.mainIndex):e}function xO(i,e,t){let r=el(i.state.facet(hl).map(n=>n(i)),t.from,e.head>t.from?-1:1);return r==t.from?t:K.cursor(r,r<t.from?1:-1)}var $r=class{constructor(e,t){this.pos=e,this.assoc=t}};function qO(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 $r(0,1);if(l>i.viewState.docHeight)return new $r(i.state.doc.length,-1);if(c=i.elementAtHeight(l),r==null)break;if(c.type==pi.Text){if(r<0?c.to<i.viewport.from:c.from>i.viewport.to)break;let p=i.docView.coordsAt(r<0?c.from:c.to,r>0?-1:1);if(p&&(r<0?p.top<=l+s:p.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==pi.Text){let O=nk(i,n,c,o,a);return new $r(O,O==c.from?1:-1)}}if(c.type!=pi.Text)return l<(c.top+c.bottom)/2?new $r(c.from,1):new $r(c.to,-1);let f=i.docView.lineAt(c.from,2);return(!f||f.length!=c.length)&&(f=i.docView.lineAt(c.from,-2)),new DO(i,o,a,i.textDirectionAt(c.from)).scanTile(f,c.from)}var DO=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[Pr.find(n,e-r.from,-1,t)].level==this.baseDir}dirAt(e,t){let{line:r,spans:n}=this.bidiSpansAt(e);return n[Pr.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,f=-1,O=1e9,p;e:for(;n<s;){let y=s-n,P=n+s>>1;t:if(o.has(P)){for(let H=1;H<y;H++){let q=P+H;if(q>=s&&(q-=y),!o.has(q)){P=q;break t}}break e}o.add(P);let X=t(P),U=0;if(X)for(let H=0;H<X.length;H++){let q=X[H];if(!(q.width==0&&X.length>1))if(q.bottom<this.y)(!l||l.bottom<q.bottom)&&(l=q),U=1;else if(q.top>this.y)(!c||c.top>q.top)&&(c=q),U=-1;else{let B=q.left>this.x?this.x-q.left:q.right<this.x?this.x-q.right:0,j=Math.abs(B);j<O&&(f=P,O=j,p=q),B&&(U=B<0==(this.baseDir==vt.LTR)?-1:1)}}U==-1&&(!a||this.baseDirAt(e[P],1))?s=P:U==1&&(!a||this.baseDirAt(e[P+1],-1))&&(n=P+1)}if(!p){if(!c&&!l)return{i:e[0],after:!1};let y=l&&(!c||this.y-l.bottom<c.top-this.y)?l:c;return this.y=(y.top+y.bottom)/2,this.scan(e,t,!0)}if(O&&!r){let{top:y,bottom:P}=p;if(l&&l.bottom>(y+y+P)/3)return this.y=l.bottom-1,this.scan(e,t,!0);if(c&&c.top<(y+P+P)/3)return this.y=c.top+1,this.scan(e,t,!0)}let b=(a?this.dirAt(e[f],1):this.baseDir)==vt.LTR;return{i:f,after:this.x>(p.left+p.right)/2==b}}scanText(e,t){let r=[];for(let s=0;s<e.length;s=jt(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 al(e.dom,o,a).getClientRects()});return n.after?new $r(r[n.i+1],-1):new $r(r[n.i],1)}scanTile(e,t){if(!e.length)return new $r(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:al(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 $r(r[n.i+1],-1):new $r(o,1)}},Bo="\uFFFF",IO=class{ Line truncated
`&&i.lineWrapping&&(r&&(r=K.single(r.main.anchor-1,r.main.head-1)),t={from:s.from,to:s.to,insert:it.of([" "])}),t)return kd(i,t,r,o);if(r&&!lh(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=lx(n.facet(hl).map(c=>c(i)),r))),i.dispatch({selection:r,scrollIntoView:a,userEvent:l}),!0}else return!1}function kd(i,e,t,r=-1){if(xe.ios&&i.inputState.flushIOSKey(e))return!0;let n=i.state.selection.main;if(xe.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&&ta(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)&&ta(i.contentDOM,"Backspace",8)||e.from==n.from&&e.to==n.to+1&&e.insert.length==0&&ta(i.contentDOM,"Delete",46)))return!0;let s=e.insert.toString();i.inputState.composing>=0&&i.inputState.composing++;let o,a=()=>o||(o=hk(i,e,t));return i.state.facet(Gb).some(l=>l(i,e.from,e.to,s,a))||i.dispatch(a()),!0}function hk(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,f=el(n.facet(hl).map(O=>O(i)),c,l);e.from==f&&(o=f)}if(o>-1)r={changes:e,selection:K.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 f=i.state.sliceDoc(e.from,e.to),O,p=t&&ax(i,t.main.head);if(p){let y=e.insert.length-(e.to-e.from);O={from:p.from,to:p.to-y}}else O=i.state.doc.lineAt(s.head);let b=s.to-e.to;r=n.changeByRange(y=>{if(y.from==s.from&&y.to==s.to)return{changes:l,range:c||y.map(l)};let P=y.to-b,X=P-f.length;if(i.state.sliceDoc(X,P)!=f||P>=O.from&&X<=O.to)return{range:y};let U=n.changes({from:X,to:P,insert:e.insert}),H=y.to-s.to;return{changes:U,range:c?K.range(Math.max(0,c.anchor+H),Math.max(0,c.head+H)):y.map(U)}})}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 fx(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 fk(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 ah(t,r)),(n!=t||s!=r)&&e.push(new ah(n,s))),e}function uk(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?K.single(t+e,r+e):null}function lh(i,e){return e.head==i.main.head&&e.anchor==i.main.anchor}var FO=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,xe.safari&&e.contentDOM.addEventListener("input",()=>null),xe.gecko&&kk(e.contentDOM.ownerDocument)}handleEvent(e){!vk(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((xe.mac||xe.android)&&O.from==o-1&&/^\. ?$/.test(r.text)&&e.contentDOM.getAttribute("autocorrect")=="off"&&(O={from:a,to:l,insert:it.of([r.text.replace("."," ")])}),this.pendingContextChange=O,!e.state.readOnly){let p=this.to-this.from+(O.to-O.from+O.insert.length);kd(e,O,K.single(this.toEditorPos(r.selectionStart,p),this.toEditorPos(r.selectionEnd,p)))}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 f=`text-decoration: underline ${/^[a-z]/.test(o)?o+" ":o=="Dashed"?"dashed ":o=="Squiggle"?"wavy ":""}${/thin/i.test(a)?1:2}px`;n.push(pe.mark({attributes:{style:f}}).range(l,c))}}}e.dispatch({effects:tx.of(pe.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=ol(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 f=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+=f,this.to+=f;return}else n=null,this.revertPending(e.state);if(s+=t,o+=t,o<=this.from)this.from+=f,this.to+=f;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+=f}t+=f}),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])}},ae=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.scrollDO Line truncated
-\x7F-\x9F\xAD\u061C\u200B\u200E\u200F\u2028\u2029\u202D\u202E\u2066\u2067\u2069\uFEFF\uFFF9-\uFFFC]`,fd),eT={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"},SO=null;function tT(){var i;if(SO==null&&typeof document!="undefined"&&document.body){let e=document.body.style;SO=((i=e.tabSize)!==null&&i!==void 0?i:e.MozTabSize)!=null}return SO||!1}var Kc=be.define({combine(i){let e=ir(i,{render:null,specialChars:Jk,addSpecialChars:null});return(e.replaceTabs=!tT())&&(e.specialChars=new RegExp(" |"+e.specialChars.source,fd)),e.addSpecialChars&&(e.specialChars=new RegExp(e.specialChars.source+"|"+e.addSpecialChars.source,fd)),e}});function Rx(i={}){return[Kc.of(i),iT()]}var Qb=null;function iT(){return Qb||(Qb=At.fromClass(class{constructor(i){this.view=i,this.decorations=pe.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(i.state.facet(Kc)),this.decorations=this.decorator.createDeco(i)}makeDecorator(i){return new ll({regexp:i.specialChars,decoration:(e,t,r)=>{let{doc:n}=t.state,s=Vr(e[0],0);if(s==9){let o=n.lineAt(r),a=t.state.tabSize,l=Li(o.text,a,r-o.from);return pe.replace({widget:new Od((a-l%a)*this.view.defaultCharacterWidth/this.view.scaleX)})}return this.decorationCache[s]||(this.decorationCache[s]=pe.replace({widget:new ud(i,s)}))},boundary:i.replaceTabs?void 0:/[^]/})}update(i){let e=i.state.facet(Kc);i.startState.facet(Kc)!=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 rT="\u2022";function nT(i){return i>=32?rT:i==10?"\u2424":String.fromCharCode(9216+i)}var ud=class extends oi{constructor(e,t){super(),this.options=e,this.code=t}eq(e){return e.code==this.code}toDOM(e){let t=nT(this.code),r=e.state.phrase("Control character")+" "+(eT[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}},Od=class extends oi{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 Xd(){return oT}var sT=pe.line({class:"cm-activeLine"}),oT=At.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(sT.range(n.from)),e=n.from)}return pe.set(t)}},{decorations:i=>i.decorations});var dd=2e3;function aT(i,e,t){let r=Math.min(e.line,t.line),n=Math.max(e.line,t.line),s=[];if(e.off>dd||t.off>dd||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(K.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),f=Yc(c.text,o,i.tabSize,!0);if(f<0)s.push(K.cursor(c.to));else{let O=Yc(c.text,a,i.tabSize);s.push(K.range(c.from+f,c.from+O))}}}return s}function lT(i,e){let t=i.coordsAtPos(i.viewport.from);return t?Math.round(Math.abs((t.left-e)/i.defaultCharacterWidth)):-1}function wb(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>dd?-1:n==r.length?lT(i,e.clientX):Li(r.text,i.state.tabSize,t-r.from);return{line:r.number,col:s,off:n}}function cT(i,e){let t=wb(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=wb(i,n);if(!a)return r;let l=aT(i.state,t,a);return l.length?o?K.create(l.concat(r.ranges)):K.create(l):r}}:null}function _d(i){let e=(i==null?void 0:i.eventFilter)||(t=>t.altKey&&t.button==0);return ae.mouseSelectionStyle.of((t,r)=>e(r)?cT(t,r):null)}var hT={Alt:[18,i=>!!i.altKey],Control:[17,i=>!!i.ctrlKey],Shift:[16,i=>!!i.shiftKey],Meta:[91,i=>!!i.metaKey]},fT={style:"cursor: crosshair"};function Rd(i={}){let[e,t]=hT[i.key||"Alt"],r=At.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))}}} Line truncated
import{a as Rc,b as Cc,c as Vo,d as yP}from"./chunk-7GWCUXYG.js";import{a as SP}from"./chunk-LNOKARBD.js";import{a as _c}from"./chunk-A7SWO6EA.js";import{a as T0,b as X0,c as QP}from"./chunk-TDMLOI3F.js";import{D as nO,J as sO,t as P0,u as k0}from"./chunk-AK5O5EFA.js";import{A as Ks,E as Sr,F as tO,G as Wo,I as Da,J as Tc,K as iO,T as rO,V as $0,a as On,b as Wa,ba as Xc,d as pi,e as Va,f as Qi,g as pt,h as Jf,i as S0,k as y0,m as wc,n as $c,o as Pc,p as Hs,q as Q0,t as kc,w as w0,x as eO,y as qa,z as zi}from"./chunk-TYDI7JZQ.js";import{a as qt,b as Qc,c as ja,d as Hf,e as Kf}from"./chunk-KT7KMEQC.js";var aO=Hf((_0,oO)=>{(function(i){if(typeof _0=="object"&&typeof oO!="undefined")oO.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(u,O){if(!s[u]){if(!n[u]){var p=typeof ja=="function"&&ja;if(!O&&p)return p(u,!0);if(l)return l(u,!0);var b=new Error("Cannot find module '"+u+"'");throw b.code="MODULE_NOT_FOUND",b}var y=s[u]={exports:{}};n[u][0].call(y.exports,function(P){var X=n[u][1][P];return a(X||P)},y,y.exports,r,n,s,o)}return s[u].exports}for(var l=typeof ja=="function"&&ja,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,u=new a(P),O=o.document.createTextNode("");u.observe(O,{characterData:!0}),l=function(){O.data=c=++c%2}}else if(!o.setImmediate&&typeof o.MessageChannel!="undefined"){var p=new o.MessageChannel;p.port1.onmessage=P,l=function(){p.port2.postMessage(0)}}else"document"in o&&"onreadystatechange"in o.document.createElement("script")?l=function(){var U=o.document.createElement("script");U.onreadystatechange=function(){P(),U.onreadystatechange=null,U.parentNode.removeChild(U),U=null},o.document.documentElement.appendChild(U)}:l=function(){setTimeout(P,0)};var b,y=[];function P(){b=!0;for(var U,K,q=y.length;q;){for(K=y,y=[],U=-1;++U<q;)K[U]();q=y.length}b=!1}n.exports=X;function X(U){y.push(U)===1&&!b&&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"],u=["FULFILLED"],O=["PENDING"];n.exports=p;function p(d){if(typeof d!="function")throw new TypeError("resolver must be a function");this.state=O,this.queue=[],this.outcome=void 0,d!==a&&X(this,d)}p.prototype.catch=function(d){return this.then(null,d)},p.prototype.then=function(d,V){if(typeof d!="function"&&this.state===u||typeof V!="function"&&this.state===c)return this;var G=new this.constructor(a);if(this.state!==O){var pe=this.state===u?d:V;y(G,pe,this.outcome)}else this.queue.push(new b(G,d,V));return G};function b(d,V,G){this.promise=d,typeof V=="function"&&(this.onFulfilled=V,this.callFulfilled=this.otherCallFulfilled),typeof G=="function"&&(this.onRejected=G,this.callRejected=this.otherCallRejected)}b.prototype.callFulfilled=function(d){l.resolve(this.promise,d)},b.prototype.otherCallFulfilled=function(d){y(this.promise,this.onFulfilled,d)},b.prototype.callRejected=function(d){l.reject(this.promise,d)},b.prototype.otherCallRejected=function(d){y(this.promise,this.onRejected,d)};function y(d,V,G){o(function(){var pe;try{pe=V(G)}catch(Ue){return l.reject(d,Ue)}pe===d?l.reject(d,new TypeError("Cannot resolve promise with itself")):l.resolve(d,pe)})}l.resolve=function(d,V){var G=U(P,V);if(G.status==="error")return l.reject(d,G.value);var pe=G.value;if(pe)X(d,pe);else{d.state=u,d.outcome=V;for(var Ue=-1,ke=d.queue.length;++Ue<ke;)d.queue[Ue].callFulfilled(V)}return d},l.reject=function(d,V){d.state=c,d.outcome=V;for(var G=-1,pe=d.queue.length;++G<pe;)d.queue[G].callRejected(V);return d};function P(d){var V=d&&d.then;if(d&&(typeof d=="object"||typeof d=="function")&&typeof V=="function")return function(){V.apply(d,arguments)}}function X(d,V){var G=!1;function pe(_e){G||(G=!0,l.reject(d,_e))}function Ue(_e){G||(G=!0,l.resolve(d,_e))}function ke(){V(Ue,pe)}var oe=U(ke);oe.status==="error"&&pe(oe.value)}function U(d,V){var G={};try{G.value=d(V),G.status="success"}catch(pe){G.status="error",G.value=pe}return G}p.resolve=K;function K(d){return d instanceof this?d:l.resolve(new this(a),d)}p.reject=q;function q(d){var V=new this(a);return l.reject(V,d)}p.all=B;function B(d){var V=this;if(Object.prototype.toString.call(d)!=="[object Array]")return this.reject(new TypeError("must be an array"));var G=d.length,pe=!1;if(!G)return this.resolve([]);for(var Ue=new Array(G),ke=0,oe=-1,_e=new this(a);++oe<G;)We(d[oe],oe);return _e;function We(He,ie){V.resolve(He).then(ve,function(fe){pe||(pe=!0,l.reject(_e,fe))});function ve(fe){Ue[ie]=fe,++ke===G&&!pe&&(pe=!0,l.resolve(_e,Ue))}}}p.race=L;function L(d){var V=this;if(Object.prototype.toString.call(d)!=="[object Array]")return this.reject(new TypeErLine truncated
`):h)),f};var mt=/^(?:focusinfocus|focusoutblur)$/,yt=function(h){h.stopPropagation()};d.extend(d.event,{trigger:function(h,f,m,g){var x,v,Q,C,R,Y,F,te,I=[m||X],ce=u.call(h,"type")?h.type:h,Ie=u.call(h,"namespace")?h.namespace.split("."):[];if(v=te=Q=m=m||X,!(m.nodeType===3||m.nodeType===8)&&!mt.test(ce+d.event.triggered)&&(ce.indexOf(".")>-1&&(Ie=ce.split("."),ce=Ie.shift(),Ie.sort()),R=ce.indexOf(":")<0&&"on"+ce,h=h[d.expando]?h:new d.Event(ce,typeof h=="object"&&h),h.isTrigger=g?2:3,h.namespace=Ie.join("."),h.rnamespace=h.namespace?new RegExp("(^|\\.)"+Ie.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,h.result=void 0,h.target||(h.target=m),f=f==null?[h]:d.makeArray(f,[h]),F=d.event.special[ce]||{},!(!g&&F.trigger&&F.trigger.apply(m,f)===!1))){if(!g&&!F.noBubble&&!P(m)){for(C=F.delegateType||ce,mt.test(C+ce)||(v=v.parentNode);v;v=v.parentNode)I.push(v),Q=v;Q===(m.ownerDocument||X)&&I.push(Q.defaultView||Q.parentWindow||i)}for(x=0;(v=I[x++])&&!h.isPropagationStopped();)te=v,h.type=x>1?C:F.bindType||ce,Y=($e.get(v,"events")||Object.create(null))[h.type]&&$e.get(v,"handle"),Y&&Y.apply(v,f),Y=R&&v[R],Y&&Y.apply&&fr(v)&&(h.result=Y.apply(v,f),h.result===!1&&h.preventDefault());return h.type=ce,!g&&!h.isDefaultPrevented()&&(!F._default||F._default.apply(I.pop(),f)===!1)&&fr(m)&&R&&y(m[ce])&&!P(m)&&(Q=m[R],Q&&(m[R]=null),d.event.triggered=ce,h.isPropagationStopped()&&te.addEventListener(ce,yt),m[ce](),h.isPropagationStopped()&&te.removeEventListener(ce,yt),d.event.triggered=void 0,Q&&(m[R]=Q)),h.result}},simulate:function(h,f,m){var g=d.extend(new d.Event,m,{type:h,isSimulated:!0});d.event.trigger(g,null,f)}}),d.fn.extend({trigger:function(h,f){return this.each(function(){d.event.trigger(h,f,this)})},triggerHandler:function(h,f){var m=this[0];if(m)return d.event.trigger(h,f,m,!0)}});var oi=/\[\]$/,Vt=/\r?\n/g,Ea=/^(?:submit|button|image|reset|file)$/i,Oi=/^(?:input|select|textarea|keygen)/i;function Mf(h,f,m,g){var x;if(Array.isArray(f))d.each(f,function(v,Q){m||oi.test(h)?g(h,Q):Mf(h+"["+(typeof Q=="object"&&Q!=null?v:"")+"]",Q,m,g)});else if(!m&&q(f)==="object")for(x in f)Mf(h+"["+x+"]",f[x],m,g);else g(h,f)}d.param=function(h,f){var m,g=[],x=function(v,Q){var C=y(Q)?Q():Q;g[g.length]=encodeURIComponent(v)+"="+encodeURIComponent(C==null?"":C)};if(h==null)return"";if(Array.isArray(h)||h.jquery&&!d.isPlainObject(h))d.each(h,function(){x(this.name,this.value)});else for(m in h)Mf(m,h[m],f,x);return g.join("&")},d.fn.extend({serialize:function(){return d.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var h=d.prop(this,"elements");return h?d.makeArray(h):this}).filter(function(){var h=this.type;return this.name&&!d(this).is(":disabled")&&Oi.test(this.nodeName)&&!Ea.test(h)&&(this.checked||!si.test(h))}).map(function(h,f){var m=d(this).val();return m==null?null:Array.isArray(m)?d.map(m,function(g){return{name:f.name,value:g.replace(Vt,`\r
`)}}):{name:f.name,value:m.replace(Vt,`\r
`)}}).get()}});var tP=/%20/g,iP=/#.*$/,rP=/([?&])_=[^&]*/,nP=/^(.*?):[ \t]*([^\r\n]*)$/mg,sP=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,oP=/^(?:GET|HEAD)$/,aP=/^\/\//,O0={},Lf={},d0="*/".concat("*"),jf=X.createElement("a");jf.href=we.href;function p0(h){return function(f,m){typeof f!="string"&&(m=f,f="*");var g,x=0,v=f.toLowerCase().match(_i)||[];if(y(m))for(;g=v[x++];)g[0]==="+"?(g=g.slice(1)||"*",(h[g]=h[g]||[]).unshift(m)):(h[g]=h[g]||[]).push(m)}}function m0(h,f,m,g){var x={},v=h===Lf;function Q(C){var R;return x[C]=!0,d.each(h[C]||[],function(Y,F){var te=F(f,m,g);if(typeof te=="string"&&!v&&!x[te])return f.dataTypes.unshift(te),Q(te),!1;if(v)return!(R=te)}),R}return Q(f.dataTypes[0])||!x["*"]&&Q("*")}function Wf(h,f){var m,g,x=d.ajaxSettings.flatOptions||{};for(m in f)f[m]!==void 0&&((x[m]?h:g||(g={}))[m]=f[m]);return g&&d.extend(!0,h,g),h}function lP(h,f,m){for(var g,x,v,Q,C=h.contents,R=h.dataTypes;R[0]==="*";)R.shift(),g===void 0&&(g=h.mimeType||f.getResponseHeader("Content-Type"));if(g){for(x in C)if(C[x]&&C[x].test(g)){R.unshift(x);break}}if(R[0]in m)v=R[0];else{for(x in m){if(!R[0]||h.converters[x+" "+R[0]]){v=x;break}Q||(Q=x)}v=v||Q}if(v)return v!==R[0]&&R.unshift(v),m[v]}function cP(h,f,m,g){var x,v,Q,C,R,Y={},F=h.dataTypes.slice();if(F[1])for(Q in h.converters)Y[Q.toLowerCase()]=h.converters[Q];for(v=F.shift();v;)if(h.responseFields[v]&&(m[h.responseFields[v]]=f),!R&&g&&h.dataFilter&&(f=h.dataFilter(f,h.dataType)),R=v,v=F.shift(),v){if(v==="*")v=R;else if(R!=="*"&&R!==v){if(Q=Y[R+" "+v]||Y["* "+v],!Q){for(x in Y)if(C=x.split(" "),C[1]===v&&(Q=Y[R+" "+C[0]]||Y["* "+C[0]],Q)){Q===!0?Q=Y[x]:Y[x]!==!0&&(v=C[0],F.unshift(C[1]));break}}if(Q!==!0)if(Q&&h.throws)f=Q(f);else try{f=Q(f)}catch(te){return{state:"parsererror",error:Q?te:"No conversion from "+R+" to "+v}}}}return{state:"success",data:f}}d.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:we.href,type:"GET",isLocal:sP.test(we.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":d0,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":d.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(h,f){return f?Wf(Wf(h,d.ajaxSettings),f):Wf(d.ajaxSettings,h)},ajaxPrefilter:p0(O0),ajaxTransport:p0(Lf),ajax:function(h,f){typeof h=="object"&&(f=h,h=void 0),f=f||{};var m,g,x,v,Q,C,R,Y,F,te,I=d.ajaxSetup({},f),ce=I.context||I,Ie=I.context&&(ce.nodeType||ce.jquery)?d(ce):d.event,ht=d.Deferred(),Be=d.Callbacks("once memory"),di=I.statusCode||{},Jt={},ln={},cn="canceled",ot={readyState:0,getResponseHeader:function(dt){var Yt;if(R){if(!v)for(v={};Yt=nP.exec(x);)v[Yt[1].toLowerCase()+" "]=(v[Yt[1].toLowerCase()+" "]||[]).concat(Yt[2]);Yt=v[dt.toLowerCase()+" "]}return Yt==null?null:Yt.join(", ")},getAllResponseHeaders:function(){return R?x:null},setRequestHeader:function(dt,Yt){return R==null&&(dt=ln[dt.toLowerCase()]=ln[dt.toLowerCase()]||dt,Jt[dt]=Yt),this},overrideMimeType:function(dt){return R==null&&(I.mimeType=dt),this},statusCode:function(dt){var Yt;if(dt)if(R)ot.always(dt[ot.status]);else for(Yt in dt)di[Yt]=[di[Yt],dt[Yt]];return this},abort:function(dt){var Yt=dt||cn;return m&&m.abort(Yt),Bs(0,Yt),this}};if(ht.promise(ot),I.url=((h||I.url||we.href)+"").replace(aP,we.protocol+"//"),I.type=f.method||f.type||I.method||I.type,I.dataTypes=(I.dataType||"*").toLowerCase().match(_i)||[""],I.crossDomain==null){C=X.createElement("a");try{C.href=I.url,C.href=C.href,I.crossDomain=jf.protocol+"//"+jf.host!=C.protocol+"//"+C.host}catch(dt){I.crossDomain=!0}}if(I.data&&I.processData&&typeof I.data!="string"&&(I.data=d.param(I.data,I.traditional)),m0(O0,I,f,ot),R)return ot;Y=d.event&&I.global,Y&&d.active++===0&&d.event.trigger("ajaxStart"),I.type=I.type.toUpperCase(),I.hasContent=!oP.test(I.type),g=I.url.replace(iP,""),I.hasContent?I.data&&I.processData&&(I.contentType||"").indexOf("application/x-www-form-urlencoded")===0&&(I.data=I.data.replace(tP,"+")):(te=I.url.slice(g.length),I.data&&(I.processData||typeof I.data=="string")&&(g+=(Le.test(g)?"&":"?")+I.data,delete I.data),I.cache===!1&&(g=g.replace(rP,"$1"),te=(Le.test(g)?"&":"?")+"_="+Ce.guid+++te),I.url=g+te),I.ifModified&&(d.lastModified[g]&&ot.setRequestHeader("If-Modified-Since",d.lastModified[g]),d.etag[g]&&ot.setRequestHeader("If-None-Match",d.etag[g])),(I.data&&I.hasContent&&I.contentType!==!1||f.contentType)&&ot.setRequestHeader("Content-Type",I.contentType),ot.setRequestHeader("Accept",I.dataTypes[0]&&I.accepts[I.dataTypes[0]]?I.accepts[I.dataTypes[0]]+(I.dataTypes[0]!=="*"?", "+d0+"; q=0.01":""):I.accepts["*"]);for(F in I.headers)ot.setRequestHeader(F,I.headers[F]);if(I.beforeSend&&(I.beforeSend.call(ce,ot,I)===!1||R))return ot.abort();if(cn="ab Line truncated
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function $E(i,e){return yE(i)||QE(i,e)||PE(i,e)||wE()}function PE(i,e){if(i){if(typeof i=="string")return f1(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)?f1(i,e):void 0}}var k1=Object.entries,O1=Object.setPrototypeOf,kE=Object.isFrozen,TE=Object.getPrototypeOf,XE=Object.getOwnPropertyDescriptor,xi=Object.freeze,vi=Object.seal,Xa=Object.create,T1=typeof Reflect!="undefined"&&Reflect,Hg=T1.apply,Kg=T1.construct;xi||(xi=function(e){return e});vi||(vi=function(e){return e});Hg||(Hg=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)});Kg||(Kg=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 ka=Ft(Array.prototype.forEach),_E=Ft(Array.prototype.lastIndexOf),d1=Ft(Array.prototype.pop),Ta=Ft(Array.prototype.push),RE=Ft(Array.prototype.splice),As=Array.isArray,fc=Ft(String.prototype.toLowerCase),Ig=Ft(String.prototype.toString),p1=Ft(String.prototype.match),hc=Ft(String.prototype.replace),m1=Ft(String.prototype.indexOf),CE=Ft(String.prototype.trim),ZE=Ft(Number.prototype.toString),AE=Ft(Boolean.prototype.toString),g1=typeof BigInt=="undefined"?null:Ft(BigInt.prototype.toString),b1=typeof Symbol=="undefined"?null:Ft(Symbol.prototype.toString),li=Ft(Object.prototype.hasOwnProperty),uc=Ft(Object.prototype.toString),ai=Ft(RegExp.prototype.test),Co=UE(TypeError);function Ft(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 Hg(i,e,r)}}function UE(i){return function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return Kg(i,t)}}function Ot(i,e){let t=arguments.length>2&&arguments[2]!==void 0?arguments[2]:fc;if(O1&&O1(i,null),!As(e))return i;let r=e.length;for(;r--;){let n=e[r];if(typeof n=="string"){let s=t(n);s!==n&&(kE(e)||(e[r]=s),n=s)}i[n]=!0}return i}function EE(i){for(let e=0;e<i.length;e++)li(i,e)||(i[e]=null);return i}function Xi(i){let e=Xa(null);for(let r of k1(i)){var t=$E(r,2);let n=t[0],s=t[1];li(i,n)&&(As(s)?e[n]=EE(s):s&&typeof s=="object"&&s.constructor===Object?e[n]=Xi(s):e[n]=s)}return e}function zE(i){switch(typeof i){case"string":return i;case"number":return ZE(i);case"boolean":return AE(i);case"bigint":return g1?g1(i):"0";case"symbol":return b1?b1(i):"Symbol()";case"undefined":return uc(i);case"function":case"object":{if(i===null)return uc(i);let e=i,t=en(e,"toString");if(typeof t=="function"){let r=t(e);return typeof r=="string"?r:uc(r)}return uc(i)}default:return uc(i)}}function en(i,e){for(;i!==null;){let r=XE(i,e);if(r){if(r.get)return Ft(r.get);if(typeof r.value=="function")return Ft(r.value)}i=TE(i)}function t(){return null}return t}function YE(i){try{return ai(i,""),!0}catch(e){return!1}}var x1=xi(["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"]),Ng=xi(["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"]),Fg=xi(["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"]),ME=xi(["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
`+yt),$e&&(yt=br(yt)),V&&Zi?_e(yt):yt},e.setConfig=function(){let re=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Rn(re),rs=!0,Pn=gt,sn=St},e.clearConfig=function(){Ui=null,rs=!1,Pn=null,sn=null,V=pe,G=""},e.isValidAttribute=function(re,k,W){Ui||Rn({});let ne=$t(re),we=$t(k);return se(ne,we,W)},e.addHook=function(re,k){typeof k=="function"&&li(Me,re)&&Ta(Me[re],k)},e.removeHook=function(re,k){if(li(Me,re)){if(k!==void 0){let W=_E(Me[re],k);return W===-1?void 0:RE(Me[re],W,1)[0]}return d1(Me[re])}},e.removeHooks=function(re){li(Me,re)&&(Me[re]=[])},e.removeAllHooks=function(){Me=P1()},e}var e5=X1();_1.exports=e5});var s0=Kf(aO());var Pt=[/^\s*[.#%]?(include|incbin|embed)\s+"(.+?)"/gmi,/^\s*([;']|[/][/])#(resource)\s+"(.+?)"/gm],Ct=[/^\s*([;]|[/][/])#link\s+"(.+?)"/gm],Ia=[/^\s*(`include|[.]include)\s+"(.+?)"/gmi,/^\s*\$(include|\$dofile|\$write_image_in_table)\('(.+?)'/gmi,{re:/^\s*([.]arch)\s+(\w+)/gmi,suffix:".json"},/\$readmem[bh]\("(.+?)"/gmi],wP=[{re:/^\s*[.#%]?\s*include\s+<(.+?)>/gmi,system:!0}];function Z0(i){let e=i&&En(i);return e&&e.includeDirs&&e.includeDirs.length?wP:[]}var R0=[/^\s+(USE|ASM)\s+(\S+[.]\S+)/gm],$P=[/^[!]src\s+"(.+?)"/gmi],PP=[{re:/^\s*import\s*"(.+?)";/gmi,suffix:".wiz"},/^\s*embed\s*"(.+?)";/gmi],kP=[/^\s*(import)\s*"(.+?)"/gmi],TP=[/^\s*%%\s*#include\s+"(.+?)"/gm],C0={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"}},XP={dasm:{id:"dasm",name:"DASM",kind:"assembler",arch:"6502",extensions:[".dasm"],editorStyle:"6502",helpURL:"https://raw.githubusercontent.com/sehugg/dasm/master/doc/dasm.txt",wasmModule:"dasm",includePatterns:Pt,linkPatterns:Ct},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",includePatterns:[...Pt,...$P],linkPatterns:Ct},xa:{id:"xa",name:"XA",kind:"assembler",arch:"6502",extensions:[".xa"],editorStyle:"6502",helpURL:"https://www.floodgap.com/retrotech/xa/",wasmModule:"xa",includePatterns:Pt,linkPatterns:Ct},nesasm:{id:"nesasm",name:"NESASM",kind:"assembler",arch:"6502",extensions:[".nesasm"],editorStyle:"6502",wasmModule:"nesasm",includePatterns:Pt,linkPatterns:Ct},merlin32:{id:"merlin32",name:"Merlin 32",kind:"assembler",arch:"6502",extensions:[".lnk"],editorStyle:"6502",wasmModule:"merlin32",includePatterns:[...Pt,...R0],linkPatterns:Ct},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",platforms:C0,includePatterns:Pt,linkPatterns:Ct},ca65:{id:"ca65",name:"ca65",kind:"assembler",arch:"6502",extensions:[".s",".ca65"],includeDirs:["/include","/asminc"],editorStyle:"6502",helpURL:"https://cc65.github.io/doc/ca65.html",wasmModule:"ca65",platforms:C0,includePatterns:Pt,linkPatterns:Ct},ld65:{id:"ld65",name:"ld65",kind:"linker",arch:"6502",extensions:[],wasmModule:"ld65"},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",platforms:{default:{preloadFS:"sdcc"}},includePatterns:Pt,linkPatterns:Ct},sdasz80:{id:"sdasz80",name:"sdasz80",kind:"assembler",arch:"z80",extensions:[".s"],includeDirs:["/include"],editorStyle:"z80",wasmModule:"sdasz80",platforms:{default:{preloadFS:"sdcc"}},includePatterns:Pt,linkPatterns:Ct},sdasgb:{id:"sdasgb",name:"sdasgb",kind:"assembler",arch:"gbz80",extensions:[".sgb"],includeDirs:["/include"],editorStyle:"z80",wasmModule:"sdasgb",platforms:{default:{preloadFS:"sdcc"}},includePatterns:Pt,linkPatterns:Ct},sdldz80:{id:"sdldz80",name:"sdldz80",kind:"linker",arch:"z80",extensions:[],wasmModule:"sdldz80"},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",includePatterns:Pt,linkPatterns:Ct},jsasm:{id:"jsasm",name:"JSASM",kind:"assembler",extensions:[".asm"],editorStyle:"z80",includePatterns:Ia,linkPatterns:[]},xasm6809:{id:"xasm6809",name:"XASM6809",kind:"assembler",arch:"6809",extensions:[".xasm"],editorStyle:"6809",wasmModule:"xasm6809",includePatterns:[...Pt,...R0],linkPatterns:Ct},cmoc:{id:"cmoc",name:"CMOC",kind:"compiler",arch:"6809",extensions:[".c",".h"],includeDirs:["/include"],editorStyle:"text/x-csrc",helpURL:"http://perso.b2b2c.ca/~sarrazip/dev/cmoc.html",wasmModule:"cLine truncated
`){[e,t]=No(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}},qo=class i extends rt{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]=No(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 u=this.children.slice();return u[n]=l,new i(u,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]=No(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 b of e)r+=b.lines;if(r<32){let b=[];for(let y of e)y.flatten(b);return new ir(b,t)}let n=Math.max(32,r>>5),s=n<<1,o=n>>1,a=[],l=0,c=-1,u=[];function O(b){let y;if(b.lines>s&&b instanceof i)for(let P of b.children)O(P);else b.lines>o&&(l>o||!l)?(p(),a.push(b)):b instanceof ir&&l&&(y=u[u.length-1])instanceof ir&&b.lines+y.lines<=32?(l+=b.lines,c+=b.length+1,u[u.length-1]=new ir(y.text.concat(b.text),y.length+1+b.length)):(l+b.lines>n&&p(),l+=b.lines,c+=b.length+1,u.push(b))}function p(){l!=0&&(a.push(u.length==1?u[0]:i.from(u,c)),c=-1,l=u.length=0)}for(let b of e)O(b);return p(),a.length==1?a[0]:new i(a,t)}};rt.empty=new ir([""],0);function CP(i){let e=-1;for(let t of i)e+=t.length+1;return e}function Yc(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 D0(i,e,t){return Yc(i,[""],e,t)}var io=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 ir?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 ir?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 ir){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 ir?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)}},Mc=class{constructor(e,t,r){this.value="",this.done=!1,this.cursor=new io(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!=""}},Lc=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"&&(rt.prototype[Symbol.iterator]=function(){return this.iter()},io.prototype[Symbol.iterator]=Mc.prototype[Symbol.iterator]=Lc.prototype[Symbol.iterator]=function(){return this});var OO=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 No(i,e,t){return e=Math.max(0,Math.min(i.length,e)),[e,Math.max(e,Math.min(i.length,t))]}function Lt(i,e,t=!0,r=!0){return j0(i,e,t,r)}function ZP(i){return i>=56320&&i<57344}function AP(i){return i>=55296&&i<56320}function Vr(i,e){let t=i.charCodeAt(e);if(!AP(t)||e+1==i.length)return t;let r=i.charCodeAt(e+1);return ZP(r)?(t-55296<<10)+(r-56320)+65536:t}function Dc(i){return i<=65535?String.fromCharCode(i):(i-=65536,String.fromCharCode((i>>10)+55296,(i&1023)+56320))}function Os(i){return i<65536?1:2}var dO=/\r\n?|\n/,ei=(function(i){return i[i.Simple=0]="Simple",i[i.TrackDel=1]="TrackDel",i[i.TrackBefore=2]="TrackBefore",i[i.TrackAfter=3]="TrackAfter",i})(ei||(ei={})),zn=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){pO(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:G0(this,e)}mapDesc(e,t=!1){return e.empty?this:mO(this,e,t)}mapPos(e,t=-1,r=ei.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!=ei.Simple&&c>=e&&(r==ei.TrackDel&&n<e&&c>e||r==ei.TrackBefore&&n<e||r==ei.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)}},Yi=class i extends zn{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 pO(this,(t,r,n,s,o)=>e=e.replace(n,n+(r-t),o),!1),e}mapDesc(e,t=!1){return mO(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(rt.empty);r.push(o?e.slice(s,s+o):rt.empty)}s+=o}return new i(t,r)}compose(e){return this.empty?e:e.empty?this:G0(this,e,!0)}map(e,t=!1){return e.empty?this:mO(this,e,t,!0)}iterChanges(e,t=!1){pO(this,e,t)}get desc Line truncated
`}get readOnly(){return this.facet(rb)}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(K0))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 VP(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=Lt(t,o,!1);if(s(t.slice(l,o))!=Qt.Word)break;o=l}for(;a<n;){let l=Lt(t,a);if(s(t.slice(a,l))!=Qt.Word)break;a=l}return o==a?null:H.range(o+r,a+r)}};Je.allowMultipleSelections=bO;Je.tabSize=be.define({combine:i=>i.length?i[0]:4});Je.lineSeparator=J0;Je.readOnly=rb;Je.phrases=be.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])}});Je.languageData=K0;Je.changeFilter=eb;Je.transactionFilter=tb;Je.transactionExtender=ib;Ni.reconfigure=Ze.define();function rr(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 yr=class{eq(e){return this==e}range(e,t=e){return Ga.create(e,t,this)}};yr.prototype.startSide=yr.prototype.endSide=0;yr.prototype.point=!1;yr.prototype.mapMode=ei.TrackDel;function TO(i,e){return i==e||i.constructor==e.constructor&&i.eq(e)}var Ga=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 QO(i,e){return i.from-e.from||i.value.startSide-e.value.startSide}var wO=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],u=this.from[l]+e,O=this.to[l]+e,p,b;if(u==O){let y=t.mapPos(u,c.startSide,c.mapMode);if(y==null||(p=b=y,c.startSide!=c.endSide&&(b=t.mapPos(u,c.endSide),b<p)))continue}else if(p=t.mapPos(u,c.startSide),b=t.mapPos(O,c.endSide),p>b||p==b&&c.startSide>0&&c.endSide<=0)continue;(b-p||c.endSide-c.startSide)<0||(o<0&&(o=p),c.point&&(a=Math.max(a,b-p)),r.push(c),n.push(p-o),s.push(b-o))}return{mapped:r.length?new i(n,s,r,a):null,pos:o}}},qe=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(QO)),this.isEmpty)return t.length?i.of(t):this;let a=new qc(this,null,-1).goto(0),l=0,c=[],u=new Wr;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++];u.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])&&u.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))&&(u.addInner(a.from,a.to,a.value)||c.push(Ga.create(a.from,a.to,a.value))),a.next());return u.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:u,pos:O}=l.map(a,e);u&&(n=Math.max(n,u.maxPoint),t.push(u),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 Ha.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,t=0){return Ha.from(e).goto(t)}static compare(e,t,r,n,s=-1){let o=e.filter(O=>O.maxPoint>0||!O.is Line truncated
`)}static newName(){let e=ab[ob]||1;return ab[ob]=e+1,"\u037C"+e.toString(36)}static mount(e,t,r){let n=e[XO],s=r&&r.nonce;n?s&&n.setNonce(s):n=new _O(e,s),n.mount(Array.isArray(t)?t:[t],e)}},lb=new Map,_O=class{constructor(e,t){let r=e.ownerDocument||e,n=r.defaultView;if(!e.head&&e.adoptedStyleSheets&&n.CSSStyleSheet){let s=lb.get(r);if(s)return e[XO]=s;this.sheet=new n.CSSStyleSheet,lb.set(r,this)}else this.styleTag=r.createElement("style"),t&&this.styleTag.setAttribute("nonce",t);this.modules=[],e[XO]=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 Yn={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:"'"},Fo={48:")",49:"!",50:"@",51:"#",52:"$",53:"%",54:"^",55:"&",56:"*",57:"(",59:":",61:"+",173:"_",186:":",187:"+",188:"<",189:"_",190:">",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},DP=typeof navigator!="undefined"&&/Mac/.test(navigator.platform),IP=typeof navigator!="undefined"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(Dt=0;Dt<10;Dt++)Yn[48+Dt]=Yn[96+Dt]=String(Dt);var Dt;for(Dt=1;Dt<=24;Dt++)Yn[Dt+111]="F"+Dt;var Dt;for(Dt=65;Dt<=90;Dt++)Yn[Dt]=String.fromCharCode(Dt+32),Fo[Dt]=String.fromCharCode(Dt);var Dt;for(Nc in Yn)Fo.hasOwnProperty(Nc)||(Fo[Nc]=Yn[Nc]);var Nc;function cb(i){var e=DP&&i.metaKey&&i.shiftKey&&!i.ctrlKey&&!i.altKey||IP&&i.shiftKey&&i.key&&i.key.length==1||i.key=="Unidentified",t=!e&&i.key||(i.shiftKey?Fo:Yn)[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 jt(){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++)hb(i,arguments[e]);return i}function hb(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++)hb(i,e[t]);else throw new RangeError("Unsupported child node: "+e)}var Li=typeof navigator!="undefined"?navigator:{userAgent:"",vendor:"",platform:""},LO=typeof document!="undefined"?document:{documentElement:{style:{}}},jO=/Edge\/(\d+)/.exec(Li.userAgent),Bb=/MSIE \d/.test(Li.userAgent),WO=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(Li.userAgent),Ph=!!(Bb||WO||jO),ub=!Ph&&/gecko\/(\d+)/i.test(Li.userAgent),RO=!Ph&&/Chrome\/(\d+)/.exec(Li.userAgent),fb="webkitFontSmoothing"in LO.documentElement.style,VO=!Ph&&/Apple Computer/.test(Li.vendor),Ob=VO&&(/Mobile\/\w+/.test(Li.userAgent)||Li.maxTouchPoints>2),xe={mac:Ob||/Mac/.test(Li.platform),windows:/Win/.test(Li.platform),linux:/Linux|X11/.test(Li.platform),ie:Ph,ie_version:Bb?LO.documentMode||6:WO?+WO[1]:jO?+jO[1]:0,gecko:ub,gecko_version:ub?+(/Firefox\/(\d+)/.exec(Li.userAgent)||[0,0])[1]:0,chrome:!!RO,chrome_version:RO?+RO[1]:0,ios:Ob,android:/Android\b/.test(Li.userAgent),webkit:fb,webkit_version:fb?+(/\bAppleWebKit\/(\d+)/.exec(Li.userAgent)||[0,0])[1]:0,safari:VO,safari_version:VO?+(/\bVersion\/(\d+(\.\d+)?)/.exec(Li.userAgent)||[0,0])[1]:0,tabSize:LO.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function Ad(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 lh=Object.create(null);function Ud(i,e,t){if(i==e)return!0;i||(i=lh),e||(e=lh);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 NP(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 db(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 FP(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 It=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){}},mi=(function(i){return i[i.Text=0]="Text",i[i.WidgetBefore=1]="WidgetBefore",i[i.WidgetAfter=2]="WidgetAfter",i[i.WidgetRange=3]="WidgetRange",i})(mi||(mi={})),Oe=class extends yr{constructor(e,t,r,n){super(),this.startSide=e,this.enLine truncated
`,n=i.state.doc.line(n.number+(t?1:-1)),s=i.bidiSpans(n),c=i.visualLineSide(n,!t)}if(l){if(!l(u))return a}else{if(!r)return c;l=r(u)}a=c}}function kk(i,e,t){let r=i.state.charCategorizer(e),n=r(t);return s=>{let o=r(s);return n==Qt.Space&&(n=o),n==o}}function Tk(i,e,t,r){let n=e.head,s=t?1:-1;if(n==(t?i.state.doc.length:0))return H.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)),u=i.documentTop;if(c)o==null&&(o=c.left-l.left),a=s<0?c.top:c.bottom;else{let y=i.viewState.lineBlockAt(n);o==null&&(o=Math.min(l.right-l.left,i.defaultCharacterWidth*(n-y.from))),a=(s<0?y.top:y.bottom)+u}let O=l.left+o,p=i.viewState.heightOracle.textHeight>>1,b=r!=null?r:p;for(let y=0;;y+=p){let P=a+(b+y)*s,X=sd(i,{x:O,y:P},!1,s);if(t?P>l.bottom:P<l.top)return H.cursor(X.pos,X.assoc);let U=i.coordsAtPos(X.pos,X.assoc),K=U?(U.top+U.bottom)/2:0;if(!U||(t?K>a:K<a))return H.cursor(X.pos,X.assoc,void 0,o)}}function ol(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 Px(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=ol(i,n.from,0);o!=n.from&&(s=H.cursor(o,-1))}else{let o=ol(i,n.from,-1),a=ol(i,n.to,1);(o!=n.from||a!=n.to)&&(n.undirectional?s=H.undirectionalRange(n.from,n.to):s=H.range(n.from==n.anchor?o:a,n.from==n.head?o:a))}s&&(t||(t=e.ranges.slice()),t[r]=s)}return t?H.create(t,e.mainIndex):e}function AO(i,e,t){let r=ol(i.state.facet(ml).map(n=>n(i)),t.from,e.head>t.from?-1:1);return r==t.from?t:H.cursor(r,r<t.from?1:-1)}var Pr=class{constructor(e,t){this.pos=e,this.assoc=t}};function sd(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 Pr(0,1);if(l>i.viewState.docHeight)return new Pr(i.state.doc.length,-1);if(c=i.elementAtHeight(l),r==null)break;if(c.type==mi.Text){if(r<0?c.to<i.viewport.from:c.from>i.viewport.to)break;let p=i.docView.coordsAt(r<0?c.from:c.to,r>0?-1:1);if(p&&(r<0?p.top<=l+s:p.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==mi.Text){let O=$k(i,n,c,o,a);return new Pr(O,O==c.from?1:-1)}}if(c.type!=mi.Text)return l<(c.top+c.bottom)/2?new Pr(c.from,1):new Pr(c.to,-1);let u=i.docView.lineAt(c.from,2);return(!u||u.length!=c.length)&&(u=i.docView.lineAt(c.from,-2)),new od(i,o,a,i.textDirectionAt(c.from)).scanTile(u,c.from)}var od=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[kr.find(n,e-r.from,-1,t)].level==this.baseDir}dirAt(e,t){let{line:r,spans:n}=this.bidiSpansAt(e);return n[kr.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,u=-1,O=1e9,p;e:for(;n<s;){let y=s-n,P=n+s>>1;t:if(o.has(P)){for(let K=1;K<y;K++){let q=P+K;if(q>=s&&(q-=y),!o.has(q)){P=q;break t}}break e}o.add(P);let X=t(P),U=0;if(X)for(let K=0;K<X.length;K++){let q=X[K];if(!(q.width==0&&X.length>1))if(q.bottom<this.y)(!l||l.bottom<q.bottom)&&(l=q),U=1;else if(q.top>this.y)(!c||c.top>q.top)&&(c=q),U=-1;else{let B=q.left>this.x?this.x-q.left:q.right<this.x?this.x-q.right:0,L=Math.abs(B);L<O&&(u=P,O=L,p=q),B&&(U=B<0==(this.baseDir==vt.LTR)?-1:1)}}U==-1&&(!a||this.baseDirAt(e[P],1))?s=P:U==1&&(!a||this.baseDirAt(e[P+1],-1))&&(n=P+1)}if(!p){if(!c&&!l)return{i:e[0],after:!1};let y=l&&(!c||this.y-l.bottom<c.top-this.y)?l:c;return this.y=(y.top+y.bottom)/2,this.scan(e,t,!0)}if(O&&!r){let{top:y,bottom:P}=p;if(l&&l.bottom>(y+y+P)/3)return this.y=l.bottom-1,this.scan(e,t,!0);if(c&&c.top<(y+P+P)/3)return this.y=c.top+1,this.scan(e,t,!0)}let b=(a?this.dirAt(e[u],1):this.baseDir)==vt.LTR;return{i:u,after:this.x>(p.left+p.right)/2==b}}scanText(e,t){let r=[];for(let s=0;s<e.length;s=Lt(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 Ol(e.dom,o,a).getClientRects()});return n.after?new Pr(r[n.i+1],-1):new Pr(r[n.i],1)}scanTile(e,t){if(!e.length)return new Pr(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:Ol(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 Pr(r[n.i+1],-1):new Pr(o,1)}},Bo="\uFFFF",ad=class{ Line truncated
`&&i.lineWrapping&&(r&&(r=H.single(r.main.anchor-1,r.main.head-1)),t={from:s.from,to:s.to,insert:rt.of([" "])}),t)return Wd(i,t,r,o);if(r&&!mh(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=Px(n.facet(ml).map(c=>c(i)),r))),i.dispatch({selection:r,scrollIntoView:a,userEvent:l}),!0}else return!1}function Wd(i,e,t,r=-1){if(xe.ios&&i.inputState.flushIOSKey(e))return!0;let n=i.state.selection.main;if(xe.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&&ta(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)&&ta(i.contentDOM,"Backspace",8)||e.from==n.from&&e.to==n.to+1&&e.insert.length==0&&ta(i.contentDOM,"Delete",46)))return!0;let s=e.insert.toString();i.inputState.composing>=0&&i.inputState.composing++;let o,a=()=>o||(o=Rk(i,e,t));return i.state.facet(dx).some(l=>l(i,e.from,e.to,s,a))||i.dispatch(a()),!0}function Rk(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,u=ol(n.facet(ml).map(O=>O(i)),c,l);e.from==u&&(o=u)}if(o>-1)r={changes:e,selection:H.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 u=i.state.sliceDoc(e.from,e.to),O,p=t&&$x(i,t.main.head);if(p){let y=e.insert.length-(e.to-e.from);O={from:p.from,to:p.to-y}}else O=i.state.doc.lineAt(s.head);let b=s.to-e.to;r=n.changeByRange(y=>{if(y.from==s.from&&y.to==s.to)return{changes:l,range:c||y.map(l)};let P=y.to-b,X=P-u.length;if(i.state.sliceDoc(X,P)!=u||P>=O.from&&X<=O.to)return{range:y};let U=n.changes({from:X,to:P,insert:e.insert}),K=y.to-s.to;return{changes:U,range:c?H.range(Math.max(0,c.anchor+K),Math.max(0,c.head+K)):y.map(U)}})}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 Xx(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 Ck(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 ph(t,r)),(n!=t||s!=r)&&e.push(new ph(n,s))),e}function Zk(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?H.single(t+e,r+e):null}function mh(i,e){return e.head==i.main.head&&e.anchor==i.main.anchor}var cd=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,xe.safari&&e.contentDOM.addEventListener("input",()=>null),xe.gecko&&Fk(e.contentDOM.ownerDocument)}handleEvent(e){!jk(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((xe.mac||xe.android)&&O.from==o-1&&/^\. ?$/.test(r.text)&&e.contentDOM.getAttribute("autocorrect")=="off"&&(O={from:a,to:l,insert:rt.of([r.text.replace("."," ")])}),this.pendingContextChange=O,!e.state.readOnly){let p=this.to-this.from+(O.to-O.from+O.insert.length);Wd(e,O,H.single(this.toEditorPos(r.selectionStart,p),this.toEditorPos(r.selectionEnd,p)))}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 u=`text-decoration: underline ${/^[a-z]/.test(o)?o+" ":o=="Dashed"?"dashed ":o=="Squiggle"?"wavy ":""}${/thin/i.test(a)?1:2}px`;n.push(Oe.mark({attributes:{style:u}}).range(l,c))}}}e.dispatch({effects:xx.of(Oe.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=fl(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 u=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+=u,this.to+=u;return}else n=null,this.revertPending(e.state);if(s+=t,o+=t,o<=this.from)this.from+=u,this.to+=u;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+=u}t+=u}),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])}},ae=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.scrollDO Line truncated
-\x7F-\x9F\xAD\u061C\u200B\u200E\u200F\u2028\u2029\u202D\u202E\u2066\u2067\u2069\uFEFF\uFFF9-\uFFFC]`,Pd),ST={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"},EO=null;function yT(){var i;if(EO==null&&typeof document!="undefined"&&document.body){let e=document.body.style;EO=((i=e.tabSize)!==null&&i!==void 0?i:e.MozTabSize)!=null}return EO||!1}var oh=be.define({combine(i){let e=rr(i,{render:null,specialChars:vT,addSpecialChars:null});return(e.replaceTabs=!yT())&&(e.specialChars=new RegExp(" |"+e.specialChars.source,Pd)),e.addSpecialChars&&(e.specialChars=new RegExp(e.specialChars.source+"|"+e.addSpecialChars.source,Pd)),e}});function Bx(i={}){return[oh.of(i),QT()]}var jb=null;function QT(){return jb||(jb=Xt.fromClass(class{constructor(i){this.view=i,this.decorations=Oe.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(i.state.facet(oh)),this.decorations=this.decorator.createDeco(i)}makeDecorator(i){return new dl({regexp:i.specialChars,decoration:(e,t,r)=>{let{doc:n}=t.state,s=Vr(e[0],0);if(s==9){let o=n.lineAt(r),a=t.state.tabSize,l=Mi(o.text,a,r-o.from);return Oe.replace({widget:new Td((a-l%a)*this.view.defaultCharacterWidth/this.view.scaleX)})}return this.decorationCache[s]||(this.decorationCache[s]=Oe.replace({widget:new kd(i,s)}))},boundary:i.replaceTabs?void 0:/[^]/})}update(i){let e=i.state.facet(oh);i.startState.facet(oh)!=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 wT="\u2022";function $T(i){return i>=32?wT:i==10?"\u2424":String.fromCharCode(9216+i)}var kd=class extends It{constructor(e,t){super(),this.options=e,this.code=t}eq(e){return e.code==this.code}toDOM(e){let t=$T(this.code),r=e.state.phrase("Control character")+" "+(ST[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}},Td=class extends It{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 _h(){return kT}var PT=Oe.line({class:"cm-activeLine"}),kT=Xt.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(PT.range(n.from)),e=n.from)}return Oe.set(t)}},{decorations:i=>i.decorations});var Xd=2e3;function TT(i,e,t){let r=Math.min(e.line,t.line),n=Math.max(e.line,t.line),s=[];if(e.off>Xd||t.off>Xd||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(H.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),u=Ic(c.text,o,i.tabSize,!0);if(u<0)s.push(H.cursor(c.to));else{let O=Ic(c.text,a,i.tabSize);s.push(H.range(c.from+u,c.from+O))}}}return s}function XT(i,e){let t=i.coordsAtPos(i.viewport.from);return t?Math.round(Math.abs((t.left-e)/i.defaultCharacterWidth)):-1}function Wb(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>Xd?-1:n==r.length?XT(i,e.clientX):Mi(r.text,i.state.tabSize,t-r.from);return{line:r.number,col:s,off:n}}function _T(i,e){let t=Wb(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=Wb(i,n);if(!a)return r;let l=TT(i.state,t,a);return l.length?o?H.create(l.concat(r.ranges)):H.create(l):r}}:null}function Rh(i){let e=(i==null?void 0:i.eventFilter)||(t=>t.altKey&&t.button==0);return ae.mouseSelectionStyle.of((t,r)=>e(r)?_T(t,r):null)}var RT={Alt:[18,i=>!!i.altKey],Control:[17,i=>!!i.ctrlKey],Shift:[16,i=>!!i.shiftKey],Meta:[91,i=>!!i.metaKey]},CT={style:"cursor: crosshair"};function Ch(i={}){let[e,t]=RT[i.key||"Alt"],r=Xt.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))}}} 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 Ch(t,e?e.state.tabSize:4,e?ys(e.state):2);if(o.eol())s.blankLine(this.state,o.indentUnit);else for(;!o.eol();){let a=kv(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=Ge.build({buffer:this.chunk,start:this.chunkStart,length:this.parsedPos-this.chunkStart,nodeSet:xX,topID:0,maxBufferLength:512,reused:this.chunkReused});e=new Ge(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 Ge(this.lang.topNode,this.chunks,this.chunkPos,this.parsedPos-this.ranges[0].from).balance()}};function kv(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 pp=Object.create(null),gl=[Et.none],xX=new Mn(gl),fv=[],uv=Object.create(null),Tv=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"]])Tv[i]=Xv(pp,e);var Zh=class{constructor(e){this.extra=e,this.table=Object.assign(Object.create(null),Tv)}resolve(e){return e?this.table[e]||(this.table[e]=Xv(this.extra,e)):0}},vX=new Zh(pp);function Jd(i,e){fv.indexOf(i)>-1||(fv.push(i),console.warn(e))}function Xv(i,e){let t=[];for(let a of e.split(" ")){let l=[];for(let c of a.split(".")){let f=i[c]||S[c];f?typeof f=="function"?l.length?l=l.map(f):Jd(c,`Modifier ${c} used at start of tag`):l.length?Jd(c,`Tag ${c} used as modifier`):l=Array.isArray(f)?f:[f]:Jd(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=uv[n];if(s)return s.id;let o=uv[n]=Et.define({id:gl.length,name:r,props:[mi({[r]:t})]});return gl.push(o),o.id}function SX(i,e){let t=Et.define({id:gl.length,name:"Document",props:[qn.add(()=>i),Xr.add(()=>r=>e.getIndent(r))],top:!0});return gl.push(t),t}var $z={rtl:pe.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"rtl"},bidiIsolate:vt.RTL}),ltr:pe.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"ltr"},bidiIsolate:vt.LTR}),auto:pe.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"auto"},bidiIsolate:null})};var Lh=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=ct(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(QX(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 _v(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 yX(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=_v(e)+_v(t)+"*$";return[new RegExp("^"+r),new RegExp(r)]}function Av(i){let e=i.map(n=>typeof n=="string"?{label:n}:n),[t,r]=e.every(n=>/^\w+$/.test(n.label))?[/\w*$/,/\w+$/]:yX(e);return n=>{let s=n.matchBefore(r);return s||n.explicit?{from:s?s.from:n.pos,options:e,validFor:t}:null}}function Uv(i,e){return t=>{for(let r=ct(t.state).reso Line truncated
`;let o=i.state.facet(xn),a=o instanceof gi?"Lezer LRLanguage":o instanceof ei?"StreamLanguage":"Unknown",l=o instanceof gi?"AST ":o instanceof ei?"Token ":"Name ";return{pos:e,above:!0,arrow:!0,create(c){let f=document.createElement("div");f.style.overflow="visible",f.style.height="0",f.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 qh(t,e?e.state.tabSize:4,e?Qs(e.state):2);if(o.eol())s.blankLine(this.state,o.indentUnit);else for(;!o.eol();){let a=Dv(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=Ge.build({buffer:this.chunk,start:this.chunkStart,length:this.parsedPos-this.chunkStart,nodeSet:LX,topID:0,maxBufferLength:512,reused:this.chunkReused});e=new Ge(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 Ge(this.lang.topNode,this.chunks,this.chunkPos,this.parsedPos-this.ranges[0].from).balance()}};function Dv(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 Pp=Object.create(null),Ql=[Et.none],LX=new Wn(Ql),Xv=[],_v=Object.create(null),Iv=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"]])Iv[i]=Nv(Pp,e);var Dh=class{constructor(e){this.extra=e,this.table=Object.assign(Object.create(null),Iv)}resolve(e){return e?this.table[e]||(this.table[e]=Nv(this.extra,e)):0}},jX=new Dh(Pp);function hp(i,e){Xv.indexOf(i)>-1||(Xv.push(i),console.warn(e))}function Nv(i,e){let t=[];for(let a of e.split(" ")){let l=[];for(let c of a.split(".")){let u=i[c]||S[c];u?typeof u=="function"?l.length?l=l.map(u):hp(c,`Modifier ${c} used at start of tag`):l.length?hp(c,`Tag ${c} used as modifier`):l=Array.isArray(u)?u:[u]:hp(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=_v[n];if(s)return s.id;let o=_v[n]=Et.define({id:Ql.length,name:r,props:[gi({[r]:t})]});return Ql.push(o),o.id}function WX(i,e){let t=Et.define({id:Ql.length,name:"Document",props:[Dn.add(()=>i),Xr.add(()=>r=>e.getIndent(r))],top:!0});return Ql.push(t),t}var rY={rtl:Oe.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"rtl"},bidiIsolate:vt.RTL}),ltr:Oe.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"ltr"},bidiIsolate:vt.LTR}),auto:Oe.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"auto"},bidiIsolate:null})};var Hh=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=ct(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(qX(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 Fv(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 VX(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=Fv(e)+Fv(t)+"*$";return[new RegExp("^"+r),new RegExp(r)]}function Kv(i){let e=i.map(n=>typeof n=="string"?{label:n}:n),[t,r]=e.every(n=>/^\w+$/.test(n.label))?[/\w*$/,/\w+$/]:VX(e);return n=>{let s=n.matchBefore(r);return s||n.explicit?{from:s?s.from:n.pos,options:e,validFor:t}:null}}function Jv(i,e){return t=>{for(let r=ct(t.state).reso Line truncated
`;let o=i.state.facet(xn),a=o instanceof bi?"Lezer LRLanguage":o instanceof ti?"StreamLanguage":"Unknown",l=o instanceof bi?"AST ":o instanceof ti?"Token ":"Name ";return{pos:e,above:!0,arrow:!0,create(c){let u=document.createElement("div");u.style.overflow="visible",u.style.height="0",u.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",f.appendChild(O),{dom:f}}}},{hoverTime:10,hideOnChange:!0});var qX=i=>{let{state:e}=i,t=e.doc.lineAt(e.selection.main.from),r=kp(i.state,t.from);return r.line?DX(i):r.block?NX(i):!1};function Pp(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 DX=Pp(GX,0);var IX=Pp(Kv,0);var NX=Pp((i,e)=>Kv(i,e,BX(e)),0);function kp(i,e){let t=i.languageDataAt("commentTokens",e,1);return t.length?t[0]:{}}var Sl=50;function FX(i,{open:e,close:t},r,n){let s=i.sliceDoc(r-Sl,r),o=i.sliceDoc(n,n+Sl),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 f,O;n-r<=2*Sl?f=O=i.sliceDoc(r,n):(f=i.sliceDoc(r,r+Sl),O=i.sliceDoc(n-Sl,n));let p=/^\s*/.exec(f)[0].length,b=/\s*$/.exec(O)[0].length,y=O.length-b-t.length;return f.slice(p,p+e.length)==e&&O.slice(y,y+t.length)==t?{open:{pos:r+p+e.length,margin:/\s/.test(f.charAt(p+e.length))?1:0},close:{pos:n-b-t.length,margin:/\s/.test(O.charAt(y-1))?1:0}}:null}function BX(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 Kv(i,e,t=e.selection.ranges){let r=t.map(s=>kp(e,s.from).block);if(!r.every(s=>s))return null;let n=t.map((s,o)=>FX(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:f}=a;s.push({from:c.pos-l.open.length,to:c.pos+c.margin},{from:f.pos-f.margin,to:f.pos+l.close.length})}return{changes:s}}return null}function GX(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 f=s;f<=o;){let O=e.doc.lineAt(f);if(c==null&&(c=kp(e,O.from).line,!c))continue e;if(O.from>n&&(s==o||o>O.from)){n=O.from;let p=/^\s*/.exec(O.text)[0].length,b=p==O.length,y=O.text.slice(p,p+c.length)==c?p:-1;p<O.text.length&&p<l&&(l=p),r.push({line:O,comment:y,token:c,indent:p,empty:b,single:!1})}f=O.to+1}if(l<1e9)for(let f=a;f<r.length;f++)r[f].indent<r[f].line.text.length&&(r[f].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:f,single:O}of r)(O||!f)&&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,f=c+l.length;o.text[f-o.from]==" "&&f++,s.push({from:c,to:f})}return{changes:s}}return null}var Qp=Fi.define(),Vh=Fi.define(),HX=be.define(),Jv=be.define({combine(i){return ir(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)})}}),eS=ot.define({create(){return mo.empty},update(i,e){let t=e.state.facet(Jv),r=e.annotation(Qp);if(r){let l=Fr.fromTransaction(e,r.selection),c=r.side,f=c==0?i.undone:i.done;return l?f=Wh(f,f.length,t.minDepth,l):f=rS(f,e.startState.selection),new mo(c==0?r.rest:f,c==0?f:r.rest)}let n=e.annotation(Vh);if((n=="full"||n=="before")&&(i=i.isolate()),e.annotation(Zt.addToHistory)===!1)return e.changes.empty?i:i.addMapping(e.changes.desc);let s=Fr.fromTransaction(e),o=e.annotation(Zt.time),a=e.annotation(Zt.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 mo(i.done.map(Fr.fromJSON),i.undone.map(Fr.fromJSON))}});function tS(i={}){return[eS,Jv.of(i),ae.domEventHandlers({beforeinput(e,t){let r=e.inputType=="historyUndo"?Dh:e.inputType=="historyRedo"?yl:null;return r?(e.preventDefault(),r(t)):!1}})]}function qh(i,e){return function({state:t,dispatch:r}){if(!e&&t.readOnly)return!1;let n=t.field(eS,!1);if(!n)return!1;let s=n.pop(i,t,e);return s?(r(s),!0):!1}}var Dh=qh(0,!1),yl=qh(1,!1),KX=qh(0,!0),JX=qh(1,!0);var Fr=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=thi 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",u.appendChild(O),{dom:u}}}},{hoverTime:10,hideOnChange:!0});var u_=i=>{let{state:e}=i,t=e.doc.lineAt(e.selection.main.from),r=Yp(i.state,t.from);return r.line?f_(i):r.block?d_(i):!1};function zp(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 f_=zp(g_,0);var O_=zp(mS,0);var d_=zp((i,e)=>mS(i,e,m_(e)),0);function Yp(i,e){let t=i.languageDataAt("commentTokens",e,1);return t.length?t[0]:{}}var kl=50;function p_(i,{open:e,close:t},r,n){let s=i.sliceDoc(r-kl,r),o=i.sliceDoc(n,n+kl),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 u,O;n-r<=2*kl?u=O=i.sliceDoc(r,n):(u=i.sliceDoc(r,r+kl),O=i.sliceDoc(n-kl,n));let p=/^\s*/.exec(u)[0].length,b=/\s*$/.exec(O)[0].length,y=O.length-b-t.length;return u.slice(p,p+e.length)==e&&O.slice(y,y+t.length)==t?{open:{pos:r+p+e.length,margin:/\s/.test(u.charAt(p+e.length))?1:0},close:{pos:n-b-t.length,margin:/\s/.test(O.charAt(y-1))?1:0}}:null}function m_(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 mS(i,e,t=e.selection.ranges){let r=t.map(s=>Yp(e,s.from).block);if(!r.every(s=>s))return null;let n=t.map((s,o)=>p_(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:u}=a;s.push({from:c.pos-l.open.length,to:c.pos+c.margin},{from:u.pos-u.margin,to:u.pos+l.close.length})}return{changes:s}}return null}function g_(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 u=s;u<=o;){let O=e.doc.lineAt(u);if(c==null&&(c=Yp(e,O.from).line,!c))continue e;if(O.from>n&&(s==o||o>O.from)){n=O.from;let p=/^\s*/.exec(O.text)[0].length,b=p==O.length,y=O.text.slice(p,p+c.length)==c?p:-1;p<O.text.length&&p<l&&(l=p),r.push({line:O,comment:y,token:c,indent:p,empty:b,single:!1})}u=O.to+1}if(l<1e9)for(let u=a;u<r.length;u++)r[u].indent<r[u].line.text.length&&(r[u].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:u,single:O}of r)(O||!u)&&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,u=c+l.length;o.text[u-o.from]==" "&&u++,s.push({from:c,to:u})}return{changes:s}}return null}var Ap=Fi.define(),tu=Fi.define(),b_=be.define(),gS=be.define({combine(i){return rr(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)})}}),bS=at.define({create(){return go.empty},update(i,e){let t=e.state.facet(gS),r=e.annotation(Ap);if(r){let l=Fr.fromTransaction(e,r.selection),c=r.side,u=c==0?i.undone:i.done;return l?u=eu(u,u.length,t.minDepth,l):u=SS(u,e.startState.selection),new go(c==0?r.rest:u,c==0?u:r.rest)}let n=e.annotation(tu);if((n=="full"||n=="before")&&(i=i.isolate()),e.annotation(At.addToHistory)===!1)return e.changes.empty?i:i.addMapping(e.changes.desc);let s=Fr.fromTransaction(e),o=e.annotation(At.time),a=e.annotation(At.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 go(i.done.map(Fr.fromJSON),i.undone.map(Fr.fromJSON))}});function xS(i={}){return[bS,gS.of(i),ae.domEventHandlers({beforeinput(e,t){let r=e.inputType=="historyUndo"?ru:e.inputType=="historyRedo"?Tl:null;return r?(e.preventDefault(),r(t)):!1}})]}function iu(i,e){return function({state:t,dispatch:r}){if(!e&&t.readOnly)return!1;let n=t.field(bS,!1);if(!n)return!1;let s=n.pop(i,t,e);return s?(r(s),!0):!1}}var ru=iu(0,!1),Tl=iu(1,!1),x_=iu(0,!0),v_=iu(1,!0);var Fr=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=thi Line truncated
<h5>Editor preferences</h5>
<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>
@@ -26,27 +26,29 @@ Tags : ${s}`,O.style.whiteSpace="pre-wrap",O.style.fontFamily="monospace",O.sty
<div class="checkbox"><label><input type="checkbox" id="setting_highlightWhitespace" ${i.highlightWhitespace?"checked":""}> Highlight whitespace</label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_highlightTrailingWhitespace" ${i.highlightTrailingWhitespace?"checked":""}> Highlight unwanted trailing whitespace</label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_closeBrackets" ${i.closeBrackets?"checked":""}> Automatically add and remove closing brackets</label></div>
${e?`
<hr>
<h5>8bitworkshop IDE internal settings</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.debugHighlightTags=$("#setting_debugHighlightTags").is(":checked"),sR(i),oR(i)}}}})}function Hh(){return typeof navigator!="undefined"?navigator.storage:null}function aR(i){var e=i!==void 0?i:Hh();return!!(e&&typeof e.persist=="function")}async function lR(i){var e=i!==void 0?i:Hh();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 cR(i){var e=i!==void 0?i:Hh(),t={supported:aR(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 lR(e);return t.usage=r.usage,t.quota=r.quota,t}async function Rp(i){var e=i!==void 0?i:Hh(),t=await cR(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 hR(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 MS(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 WS(i){return i.usage==null&&i.quota==null?"":"This site is using "+MS(i.usage)+" of the "+MS(i.quota)+" your browser allows."}var _p="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 VS(i){switch(i||hR()){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 fR(){return"This browser doesn't support persistent storage, so it may discard your local file edits when it needs disk space. "+_p}function qS(i,e){var t=WS(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. ")+_p:r="Your browser has not granted persistent storage, so it may discard your local file edits when it needs disk space.<br><br>"+VS()+"<br><br>"+_p:r=fR(),t?r+"<br><br>"+t:r}function DS(i){return"Your browser ran out of space for this site, so your last edit may not have been saved.<br><br>"+WS(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>"+VS():"")}var FS=Eu(Iu());var wl=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 IS(i){return"errors"in i}function NS(i){return"output"in i}var Kh=class{constructor(e){this.preset_id=zi(e)}async getRemoteFile(e){return new Promise((t,r)=>La(e,t,Gs(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 da=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 await this.overlayfs.setFileData(e,t),this.basefs.setFileData(e,t)}onFileSystemUpdate(e){this.overlayfs.onFileSystemUpdate(e),this.basefs.onFileSystemULine 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"),e&&(i.debugHighlightTags=$("#setting_debugHighlightTags").is(":checked")),UR(i),ER(i)}}}})}function uu(){return typeof navigator!="undefined"?navigator.storage:null}function zR(i){var e=i!==void 0?i:uu();return!!(e&&typeof e.persist=="function")}async function YR(i){var e=i!==void 0?i:uu();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 MR(i){var e=i!==void 0?i:uu(),t={supported:zR(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 YR(e);return t.usage=r.usage,t.quota=r.quota,t}async function Wp(i){var e=i!==void 0?i:uu(),t=await MR(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 LR(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 cy(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 hy(i){return i.usage==null&&i.quota==null?"":"This site is using "+cy(i.usage)+" of the "+cy(i.quota)+" your browser allows."}var jp="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 uy(i){switch(i||LR()){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 jR(){return"This browser doesn't support persistent storage, so it may discard your local file edits when it needs disk space. "+jp}function fy(i,e){var t=hy(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. ")+jp:r="Your browser has not granted persistent storage, so it may discard your local file edits when it needs disk space.<br><br>"+uy()+"<br><br>"+jp:r=jR(),t?r+"<br><br>"+t:r}function Oy(i){return"Your browser ran out of space for this site, so your last edit may not have been saved.<br><br>"+hy(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>"+uy():"")}var my=Kf(aO());var Rl=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 dy(i){return"errors"in i}function py(i){return"output"in i}var fu=class{constructor(e){this.preset_id=zi(e)}async getRemoteFile(e){return new Promise((t,r)=>qa(e,t,Hs(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 ma=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 await this.overlayfs.setFileData(e,t),this.basefs.setFileData(e,t)}onFileSystemUpdate(e){this.overlayfs.onFileSystemUpdate(e),this.basefs.onFileSyLine truncated
=====
[Open this project in 8bitworkshop](http://8bitworkshop.com/redir.html?platform=$PLATFORM&githubURL=$GITHUBURL&file=$MAINFILE).
`;function pa(){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 $l(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 rf=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=$l(e);if(!t)throw new Error("Please enter a valid GitHub URL.");var r=pa()[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,f=o.size,O=l.encoding,p=l.content;if(l.encoding=="base64"){var b=bc(atob(p)),y=Gs(o.path,b);p=y?b:vc(b)}return l.size!=p.length&&(p=p.slice(0,l.size)),(t||this.store).setItem(c,p)});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=uR;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 f={message:"8bitworkshop: updated metadata in README.md",content:btoa(c)};return s.contents("README.md").add(f)}).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(xc(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=ti()+".bin",l=ti()+".wav";o.writeFile(a,Vi(),{encoding:"binary"});var c=["-2bc",a+","+e.toString(16),l];s.callMain(c);var f=o.readFile(l,{encoding:"binary"});if(f){var O=new Blob([f],{type:"audio/wav"});(0,Sn.saveAs)(O,l),r+="Then connect your audio output to the cassette input, turn up the volume, and play the audio file.",wi(r)}})}function mR(i){vr("lib/makewav.js").then(()=>{let e="",t=function(a){e+=a+`
`};var r=Qi(ti());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,Vi(),{encoding:"binary"})}}).ready.then(a=>{let l=[n];a.run(l),console.log(e);let f=a.FS.readFile(s,{encoding:"binary"});if(f){let O=new Blob([f],{type:"audio/wav"});(0,Sn.saveAs)(O,s),e+=`
Connect your audio output to the SuperCharger input, turn up the volume, and play the audio file.`,wi(e)}})})}function gR(i){var e=Qi(ti());let t=e+".tap",r=new go(e),n=new nf({sine_wave:!0}),s=Vi(),o=s[0]+s[1]*256;s=s.slice(2),r.setContent({data:s,startAddress:o,type:go.FILE_TYPE_NON_RELOCATABLE}),r.generateSound(n);let a=n.getTAPData();if(a){let l=new Blob([a],{type:"application/octet-stream"});(0,Sn.saveAs)(l,t)}}function Zp(){switch(zi(Ue)){case"vcs":return mR;case"apple2":return pR;case"c64":return gR}}function GS(i){if(Vi()==null)return Ke("Please fix errors before exporting."),!0;var e=Zp();if(e===void 0)return Ke("Cassette export is not supported on this platform."),!0;e(i)}function HS(i){if(Vi()==null)return Ke("Please finish compiling with no errors before downloading ROM."),!0;var e=Qi(ti());if(L.getDownloadFile){var t=L.getDownloadFile(),e=Qi(ti());(0,Sn.saveAs)(t.blob,e+t.extension)}else if(Vi()instanceof Uint8Array){var r=new Blob([Vi()],{type:"application/octet-stream"}),n=L.getROMExtension&&L.getROMExtension(Vi())||"-"+zi(Ue)+".bin";(0,Sn.saveAs)(r,e+n)}else Ke(`The "${Ue}" platform doesn't have downloadable ROMs.`)}function KS(i){var e=$e.getCurrentText();if(!e)return!1;var t=new Blob([e],{type:"text/plain;charset=utf-8"});(0,Sn.saveAs)(t,ny(),{autoBom:!1})}async function JS(){let i=(await import("./jszip.min-HOLYP7RC.js")).default;return new i}async function ey(i){var e=await JS();Dn().iterateFiles((t,r)=>{r&&e.file(yi(t),r)}),e.generateAsync({type:"blob"}).then(t=>{(0,Sn.saveAs)(t,ti()+"-"+zi(Ue)+".zip")})}function ty(i){let e=L.getDebugSymbolFile&&L.getDebugSymbolFile();if(!e){Ke("This project does not have debug information.");return}var t=Qi(ti());(0,Sn.saveAs)(e.blob,t+e.extension,{autoBom:!1})}async function iy(i){var e=await JS(),t=await $s().keys();kt(!0);try{var r=0;await Promise.all(t.map(s=>$s().getItem(s).then(o=>{Mr(r++/(t.length+1)),o&&e.file(s,o)})));var n=await e.generateAsync({type:"blob"});(0,Sn.saveAs)(n,zi(Ue)+"-all.zip")}finally{kt(!1)}}var Cp=!1;function ry(){Cp||vr("lib/gif.js").then(()=>{var i=$("#emulator").find("canvas")[0];if(!i){Ke("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=>{Mr(l)}),t.on("finished",l=>{r.attr("src",URL.createObjectURL(l)),kt(!1),L.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"),kt(!0),L.pause(),t.render(),Cp=!1):(t.addFrame(i,{delay:n,copy:!0}),setTimeout(a,n),Cp=!0)};a()})}var Ap;async function bo(){if(!Ap){await vr("lib/octokat.js"),await vr("https://www.gstatic.com/firebasejs/8.8.1/firebase-app.js"),await vr("https://www.gstatic.com/firebasejs/8.8.1/firebase-auth.js"),await vr("https://8bitworkshop.com/config.js");var i=yc("__github_key");Ap=new rf(Octokat,i,$s(),Dn()),console.log("loaded github service")}return Ap}function kl(){var i=(It||"").split("/");return i.length!=2?(Ke("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 sf(i,e){var t,r=$l(i);if(!r){Ke("Could not parse GitHub URL.");return}var n=pa()[r.repopath];if(!(n&&!confirm("You've already imported "+r.repopath+" -- do you want to replace all local files?"))){kt(!0);var s=tf(r.repopath);Mr(.25);var o=await bo();return o.import(i).then(a=>(t=a,Mr(.75),o.pull(i,s))).then(a=>{kt(!1),xo(e,{repo:r.repopath})}).catch(a=>{kt(!1),console.log(a),Ke("Could not import "+i+". "+a)})}}async function sy(i){var e=await bo();e.login().then(()=>{wi("You are signed in to GitHub.")}).catch(t=>{Ke("Could not sign in."+t)})}async function oy(i){var e=await bo();e.logout().then(()=>{wi("You are logged out of GitHub.")})}function ay(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"),sf(r,!1)})}function ly(i){if(!(It&&!confirm("This project ("+Dn().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(Qi(yi(Dn().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
`&&t++;return t}function yy(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=dy(i,n.index),l=n[0],c=o>=0?dy(i,o):"???";if(o<0){var f=e?'"end"':n[0].startsWith(";;")?'";;"':'";"';r.push({header:l,startline:a,endline:c,error:`No closing ${f} 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":'),p=JSON.parse(O),b=/#embed\s+"(.+?)"/.exec(i.substring(s,o)),y=b?b[1]:void 0;r.push({header:l,startline:a,endline:c,fmt:p,start:s,end:o,embedFile:y})}catch(P){r.push({header:l,startline:a,endline:c,error:`Invalid asset format: ${P.message}`})}}return r}function Qy(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 RR(i,e){if(e.destfmt&&(e=e.destfmt),e.pacstrip)return XR(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,f=e.pofs||l*r*n,O=e.skip||0,p=e.wpimg||l*r,b=l;e.il&&(p=l,b=l*n);var y=e.il?b*r:p*n,P;o>0&&e.sl?P=new Uint8Array(y):a<=8?P=new Uint8Array(y*o):P=new Uint32Array(y*o);for(var X=0;X<n;X++)for(var U=i[X],H=0,q=0;q<r;q++)for(var B=e.flip?r-1-q:q,j=X*p+B*b,d=0,V=0;V<t;V++){var G=U[H++],de=Lp(j,e.remap);e.reindex&&([de,d]=jp(V,e.reindex),de+=j);for(var Ae=0;Ae<o;Ae++){var Pe=G>>Ae*s&c;P[de+Ae*f+O]|=e.brev?Pe<<a-d-s:Pe<<d}d+=s,d>=a&&!e.reindex&&(j+=1,d=0)}return P}function py(i,e,t,r,n,s,o){for(var a=[],l=0;l<i.length;l++){var c=i[l],f=4278190080;f|=(c>>e&(1<<t)-1)<<8-t,f|=(c>>r&(1<<n)-1)<<16-n,f|=(c>>s&(1<<o)-1)<<24-o,a.push(f)}return a}function CR(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 ZR(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=wy[e];if(s)return s.length;throw new Error("No palette named "+e)}}function my(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=py(i,0,n,n,s,n+s,o):r=py(i,n+s,o,n,s,0,n)}else if(t==="pacman"){r=[];for(var a=0;a<i.length;a++)r.push(CR(i[a]))}else{var l=wy[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 wy={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,528190 Line truncated
`;function ga(){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 Cl(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 mu=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=Cl(e);if(!t)throw new Error("Please enter a valid GitHub URL.");var r=ga()[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,u=o.size,O=l.encoding,p=l.content;if(l.encoding=="base64"){var b=wc(atob(p)),y=Hs(o.path,b);p=y?b:Pc(b)}return l.size!=p.length&&(p=p.slice(0,l.size)),(t||this.store).setItem(c,p)});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=WR;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 u={message:"8bitworkshop: updated metadata in README.md",content:btoa(c)};return s.contents("README.md").add(u)}).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($c(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=ii()+".bin",l=ii()+".wav";o.writeFile(a,Vi(),{encoding:"binary"});var c=["-2bc",a+","+e.toString(16),l];s.callMain(c);var u=o.readFile(l,{encoding:"binary"});if(u){var O=new Blob([u],{type:"audio/wav"});(0,Sn.saveAs)(O,l),r+="Then connect your audio output to the cassette input, turn up the volume, and play the audio file.",wi(r)}})}function IR(i){Sr("lib/makewav.js").then(()=>{let e="",t=function(a){e+=a+`
`};var r=Qi(ii());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,Vi(),{encoding:"binary"})}}).ready.then(a=>{let l=[n];a.run(l),console.log(e);let u=a.FS.readFile(s,{encoding:"binary"});if(u){let O=new Blob([u],{type:"audio/wav"});(0,Sn.saveAs)(O,s),e+=`
Connect your audio output to the SuperCharger input, turn up the volume, and play the audio file.`,wi(e)}})})}function NR(i){var e=Qi(ii());let t=e+".tap",r=new bo(e),n=new gu({sine_wave:!0}),s=Vi(),o=s[0]+s[1]*256;s=s.slice(2),r.setContent({data:s,startAddress:o,type:bo.FILE_TYPE_NON_RELOCATABLE}),r.generateSound(n);let a=n.getTAPData();if(a){let l=new Blob([a],{type:"application/octet-stream"});(0,Sn.saveAs)(l,t)}}function qp(){switch(zi(Ee)){case"vcs":return IR;case"apple2":return DR;case"c64":return NR}}function by(i){if(Vi()==null)return Ke("Please fix errors before exporting."),!0;var e=qp();if(e===void 0)return Ke("Cassette export is not supported on this platform."),!0;e(i)}function xy(i){if(Vi()==null)return Ke("Please finish compiling with no errors before downloading ROM."),!0;var e=Qi(ii());if(M.getDownloadFile){var t=M.getDownloadFile(),e=Qi(ii());(0,Sn.saveAs)(t.blob,e+t.extension)}else if(Vi()instanceof Uint8Array){var r=new Blob([Vi()],{type:"application/octet-stream"}),n=M.getROMExtension&&M.getROMExtension(Vi())||"-"+zi(Ee)+".bin";(0,Sn.saveAs)(r,e+n)}else Ke(`The "${Ee}" platform doesn't have downloadable ROMs.`)}function vy(i){var e=Qe.getCurrentText();if(!e)return!1;var t=new Blob([e],{type:"text/plain;charset=utf-8"});(0,Sn.saveAs)(t,Py(),{autoBom:!1})}async function Sy(){let i=(await import("./jszip.min-HOLYP7RC.js")).default;return new i}async function yy(i){var e=await Sy();In().iterateFiles((t,r)=>{r&&e.file(pi(t),r)}),e.generateAsync({type:"blob"}).then(t=>{(0,Sn.saveAs)(t,ii()+"-"+zi(Ee)+".zip")})}function Qy(i){let e=M.getDebugSymbolFile&&M.getDebugSymbolFile();if(!e){Ke("This project does not have debug information.");return}var t=Qi(ii());(0,Sn.saveAs)(e.blob,t+e.extension,{autoBom:!1})}async function wy(i){var e=await Sy(),t=await Ps().keys();kt(!0);try{var r=0;await Promise.all(t.map(s=>Ps().getItem(s).then(o=>{jr(r++/(t.length+1)),o&&e.file(s,o)})));var n=await e.generateAsync({type:"blob"});(0,Sn.saveAs)(n,zi(Ee)+"-all.zip")}finally{kt(!1)}}var Vp=!1;function $y(){Vp||Sr("lib/gif.js").then(()=>{var i=$("#emulator").find("canvas")[0];if(!i){Ke("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=>{jr(l)}),t.on("finished",l=>{r.attr("src",URL.createObjectURL(l)),kt(!1),M.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"),kt(!0),M.pause(),t.render(),Vp=!1):(t.addFrame(i,{delay:n,copy:!0}),setTimeout(a,n),Vp=!0)};a()})}var Dp;async function xo(){if(!Dp){await Sr("lib/octokat.js"),await Sr("https://www.gstatic.com/firebasejs/8.8.1/firebase-app.js"),await Sr("https://www.gstatic.com/firebasejs/8.8.1/firebase-auth.js"),await Sr("https://8bitworkshop.com/config.js");var i=Tc("__github_key");Dp=new mu(Octokat,i,Ps(),In()),console.log("loaded github service")}return Dp}function Al(){var i=(Nt||"").split("/");return i.length!=2?(Ke("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 bu(i,e){var t,r=Cl(i);if(!r){Ke("Could not parse GitHub URL.");return}var n=ga()[r.repopath];if(!(n&&!confirm("You've already imported "+r.repopath+" -- do you want to replace all local files?"))){kt(!0);var s=pu(r.repopath);jr(.25);var o=await xo();return o.import(i).then(a=>(t=a,jr(.75),o.pull(i,s))).then(a=>{kt(!1),vo(e,{repo:r.repopath})}).catch(a=>{kt(!1),console.log(a),Ke("Could not import "+i+". "+a)})}}async function ky(i){var e=await xo();e.login().then(()=>{wi("You are signed in to GitHub.")}).catch(t=>{Ke("Could not sign in."+t)})}async function Ty(i){var e=await xo();e.logout().then(()=>{wi("You are logged out of GitHub.")})}function Xy(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"),bu(r,!1)})}function _y(i){if(!(Nt&&!confirm("This project ("+In().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(Qi(pi(In().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
`&&t++;return t}function qy(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=Ey(i,n.index),l=n[0],c=o>=0?Ey(i,o):"???";if(o<0){var u=e?'"end"':n[0].startsWith(";;")?'";;"':'";"';r.push({header:l,startline:a,endline:c,error:`No closing ${u} 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":'),p=JSON.parse(O),b=/#embed\s+"(.+?)"/.exec(i.substring(s,o)),y=b?b[1]:void 0;r.push({header:l,startline:a,endline:c,fmt:p,start:s,end:o,embedFile:y})}catch(P){r.push({header:l,startline:a,endline:c,error:`Invalid asset format: ${P.message}`})}}return r}function Dy(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 aC(i,e){if(e.destfmt&&(e=e.destfmt),e.pacstrip)return sC(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,u=e.pofs||l*r*n,O=e.skip||0,p=e.wpimg||l*r,b=l;e.il&&(p=l,b=l*n);var y=e.il?b*r:p*n,P;o>0&&e.sl?P=new Uint8Array(y):a<=8?P=new Uint8Array(y*o):P=new Uint32Array(y*o);for(var X=0;X<n;X++)for(var U=i[X],K=0,q=0;q<r;q++)for(var B=e.flip?r-1-q:q,L=X*p+B*b,d=0,V=0;V<t;V++){var G=U[K++],pe=Gp(L,e.remap);e.reindex&&([pe,d]=Hp(V,e.reindex),pe+=L);for(var Ue=0;Ue<o;Ue++){var ke=G>>Ue*s&c;P[pe+Ue*u+O]|=e.brev?ke<<a-d-s:ke<<d}d+=s,d>=a&&!e.reindex&&(L+=1,d=0)}return P}function zy(i,e,t,r,n,s,o){for(var a=[],l=0;l<i.length;l++){var c=i[l],u=4278190080;u|=(c>>e&(1<<t)-1)<<8-t,u|=(c>>r&(1<<n)-1)<<16-n,u|=(c>>s&(1<<o)-1)<<24-o,a.push(u)}return a}function lC(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 cC(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=Iy[e];if(s)return s.length;throw new Error("No palette named "+e)}}function Yy(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=zy(i,0,n,n,s,n+s,o):r=zy(i,n+s,o,n,s,0,n)}else if(t==="pacman"){r=[];for(var a=0;a<i.length;a++)r.push(lC(i[a]))}else{var l=Iy[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 Iy={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,528190 Line truncated
`+s),n+=`
`+this.opToString(l,c,b))}),"X: "+t+" Y: "+r+" "+n}refresh(){this.tick(),this.datau32.fill(Kr)}tick(){super.tick(),this.drawImage()}drawImage(){this.ctx.putImageData(this.imageData,0,0)}clear(){this.datau32.fill(Kr)}},Sf=class extends vf{createDiv(e){return this.createCanvas(e,256,256)}initCanvas(){super.initCanvas(),this.canvas.onclick=e=>{var t=Qc(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&&Qo([s])}}clear(){for(var e=0;e<=65535;e++){var t=L.readAddress(e),r=t>>2|t&31;r|=r<<8|r<<16,this.datau32[e]=r|Kr}}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|Kr,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,f,O,p,b,y)=>{switch(c){case 16777216:s=f,a=this.addr2symbol(f)||a;break;case 167772160:l.push(a);break;case 184549376:a=l.pop();break}var P=c|s;f==r&&!o[P]&&(n==""&&a&&(n+=`
`+this.opToString(l,c,b))}),"X: "+t+" Y: "+r+" "+n}refresh(){this.tick(),this.datau32.fill(Kr)}tick(){super.tick(),this.drawImage()}drawImage(){this.ctx.putImageData(this.imageData,0,0)}clear(){this.datau32.fill(Kr)}},Au=class extends Zu{createDiv(e){return this.createCanvas(e,256,256)}initCanvas(){super.initCanvas(),this.canvas.onclick=e=>{var t=Xc(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&&wo([s])}}clear(){for(var e=0;e<=65535;e++){var t=M.readAddress(e),r=t>>2|t&31;r|=r<<8|r<<16,this.datau32[e]=r|Kr}}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|Kr,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,u,O,p,b,y)=>{switch(c){case 16777216:s=u,a=this.addr2symbol(u)||a;break;case 167772160:l.push(a);break;case 184549376:a=l.pop();break}var P=c|s;u==r&&!o[P]&&(n==""&&a&&(n+=`
`+a),n+=`
PC `+this.addr2str(s)+" "+this.opToString(c,null,y),o[P]=1)}),this.addr2str(r)+n}},qp=class extends vf{initCanvas(){super.initCanvas(),this.canvas.onclick=e=>{var t=Qc(this.canvas,e),r=Math.floor(t.x),n=Math.floor(t.y),s=this.getOpAtPos(t.x,t.y,16777216);s&&(yn("toline"),L.runEval(()=>{let o=L.getRasterScanline&&L.getRasterScanline()>=n;return o&&L.getRasterLineClock?o&&L.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|Kr;this.datau32[o]|=a}}drawImage(){let e=Kr;for(let t=0;t<this.datau32.length;t++)this.datau32[t]==Kr?this.datau32[t]=e:e=this.datau32[t];super.drawImage()}},yf=class extends qp{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]==Kr&&(this.datau32[o]=a|Kr)}}},Qf=class extends Ps{constructor(){super(...arguments);this.recreateOnResize=!0}createDiv(t){return this.vlist=new yo(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="("+On(s.row,4)+", "+On(s.col,4)+") "+Ya(s.asm||"",20)+o,o.indexOf("Write ")>=0&&(n="seg_io")}return{text:r,clas:n}}refresh(){this.tick()}tick(){let t=L instanceof qu||L instanceof Vu;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(L.disassemble){var f=L.disassemble(n,L.readAddress.bind(L));c.asm=f&&f.line}break;default:var O=this.opToString(r,n,l);O!=""&&c.info.push(O);break}}),this.vlist.refresh()}},wf=class extends Ps{constructor(){super(...arguments);this.recreateOnResize=!0}createDiv(t){return this.vlist=new yo(t),this.vlist.create(t,this.totalScanlines,this.getMemoryLineAt.bind(this)),this.vlist.maindiv}getMemoryLineAt(t){for(var r=On(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,f=f&Kr;if(f==16777216)r+=",";else{var O=pt(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=L instanceof qu||L instanceof Vu;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 f=L.debugSymbols.addr2symbol[n];f&&(c[-1]=f);break;case 335544320:case 352321536:case 369098752:case 385875968:c[s]=r|n;break}}),this.vlist.refresh()}},$f=class extends Ps{constructor(){super(...arguments);this.recreateOnResize=!0;this.cumulativeData=!0}createDiv(t){return L.debugSymbols&&L.debugSymbols.symbolmap?this.keys=Array.from(Object.keys(L.debugSymbols.symbolmap).filter(r=>!Ty(r))):this.keys=["no symbols defined"],this.vlist=new yo(t),this.vlist.create(t,this.keys.length+1,this.getMemoryLineAt.bind(this)),this.vlist.maindiv}getMemoryLineAt(t){if(t==0)return{text:On("Symbol",35)+On("Reads",8)+On("Writes",8)};var r=this.keys[t-1],n=this.dumplines&&this.dumplines[r];function s(l){var c=n[l]|0;return On(c?c.toString():"",8)}var o,a;return n!=null?(o=On(r,35)+s(301989888)+s(318767104),n[16777216]?a="seg_code":n[335544320]||n[352321536]?a="seg_io":a="seg_data"):(o=On(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=L.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()}};var Np=class i{constructor(e,t,r,n,s,o,a,l,c,f=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=f,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 Pf(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&& 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)&&zl(t.content,this.pos)==t.content.length?this.complete(e,t,t.content.length):!1}complete(e,t,r){return e.addLeafElement(t,ut(Oe.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(dQ(e,this.pos,this.start,!0)))return-1;if(e.charCodeAt(this.pos)!=58)return this.stage=-1;this.elts.push(ut(Oe.LinkMark,this.pos+this.start,this.pos+this.start+1)),this.pos++}else if(this.stage==1){if(!this.nextStage(uQ(e,zl(e,this.pos),this.start)))return-1}else if(this.stage==2){let t=zl(e,this.pos),r=0;if(t>this.pos){let n=OQ(e,t,this.start);if(n){let s=im(e,n.to-this.start);s>0&&(this.nextStage(n),r=s)}}return r||(r=im(e,this.pos)),r>0&&r<e.length?r:-1}else return im(e,this.pos)}}};function im(i,e){for(;e<i.length;e++){let t=i.charCodeAt(e);if(t==10)break;if(!Zr(t))return-1}return e}var cm=class{nextLine(e,t,r){let n=t.depth<e.stack.length?-1:rQ(t),s=t.next;if(n<0)return!1;let o=ut(Oe.HeaderMark,e.lineStart+t.pos,e.lineStart+n);return e.nextLine(),e.addLeafElement(r,ut(s==61?Oe.SetextHeading1:Oe.SetextHeading2,r.start,e.prevLineEnd(),[...e.parser.parseInline(r.content,r.start),o])),!0}finish(){return!1}},aQ={LinkReference(i,e){return e.content.charCodeAt(0)==91?new lm(e):null},SetextHeading(){return new cm}},hC=[(i,e)=>iQ(e)>=0,(i,e)=>Jy(e)>=0,(i,e)=>eQ(e)>=0,(i,e)=>mm(e,i,!0)>=0,(i,e)=>gm(e,i,!0)>=0,(i,e)=>pm(e,i,!0)>=0,(i,e)=>oQ(e,i,!0)>=0],fC={text:"",end:0},hm=class{constructor(e,t,r,n){this.parser=e,this.input=t,this.ranges=n,this.line=new sm,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=Xf.create(Oe.Document,0,this.lineStart,0,0),this.stack=[this.block],this.fragments=r.length?new Om(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 nm(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=pQ(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=fC;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 "+Oe[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==`
PC `+this.addr2str(s)+" "+this.opToString(c,null,y),o[P]=1)}),this.addr2str(r)+n}},tm=class extends Zu{initCanvas(){super.initCanvas(),this.canvas.onclick=e=>{var t=Xc(this.canvas,e),r=Math.floor(t.x),n=Math.floor(t.y),s=this.getOpAtPos(t.x,t.y,16777216);s&&(yn("toline"),M.runEval(()=>{let o=M.getRasterScanline&&M.getRasterScanline()>=n;return o&&M.getRasterLineClock?o&&M.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|Kr;this.datau32[o]|=a}}drawImage(){let e=Kr;for(let t=0;t<this.datau32.length;t++)this.datau32[t]==Kr?this.datau32[t]=e:e=this.datau32[t];super.drawImage()}},Uu=class extends tm{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]==Kr&&(this.datau32[o]=a|Kr)}}},Eu=class extends ks{constructor(){super(...arguments);this.recreateOnResize=!0}createDiv(t){return this.vlist=new Qo(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="("+On(s.row,4)+", "+On(s.col,4)+") "+Wa(s.asm||"",20)+o,o.indexOf("Write ")>=0&&(n="seg_io")}return{text:r,clas:n}}refresh(){this.tick()}tick(){let t=M instanceof sO||M instanceof nO;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(M.disassemble){var u=M.disassemble(n,M.readAddress.bind(M));c.asm=u&&u.line}break;default:var O=this.opToString(r,n,l);O!=""&&c.info.push(O);break}}),this.vlist.refresh()}},zu=class extends ks{constructor(){super(...arguments);this.recreateOnResize=!0}createDiv(t){return this.vlist=new Qo(t),this.vlist.create(t,this.totalScanlines,this.getMemoryLineAt.bind(this)),this.vlist.maindiv}getMemoryLineAt(t){for(var r=On(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,u=u&Kr;if(u==16777216)r+=",";else{var O=pt(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=M instanceof sO||M instanceof nO;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 u=M.debugSymbols.addr2symbol[n];u&&(c[-1]=u);break;case 335544320:case 352321536:case 369098752:case 385875968:c[s]=r|n;break}}),this.vlist.refresh()}},Yu=class extends ks{constructor(){super(...arguments);this.recreateOnResize=!0;this.cumulativeData=!0}createDiv(t){return M.debugSymbols&&M.debugSymbols.symbolmap?this.keys=Array.from(Object.keys(M.debugSymbols.symbolmap).filter(r=>!Gy(r))):this.keys=["no symbols defined"],this.vlist=new Qo(t),this.vlist.create(t,this.keys.length+1,this.getMemoryLineAt.bind(this)),this.vlist.maindiv}getMemoryLineAt(t){if(t==0)return{text:On("Symbol",35)+On("Reads",8)+On("Writes",8)};var r=this.keys[t-1],n=this.dumplines&&this.dumplines[r];function s(l){var c=n[l]|0;return On(c?c.toString():"",8)}var o,a;return n!=null?(o=On(r,35)+s(301989888)+s(318767104),n[16777216]?a="seg_code":n[335544320]||n[352321536]?a="seg_io":a="seg_data"):(o=On(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=M.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()}};var nm=class i{constructor(e,t,r,n,s,o,a,l,c,u=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=u,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 Mu(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&& 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)&&ql(t.content,this.pos)==t.content.length?this.complete(e,t,t.content.length):!1}complete(e,t,r){return e.addLeafElement(t,ft(de.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(UQ(e,this.pos,this.start,!0)))return-1;if(e.charCodeAt(this.pos)!=58)return this.stage=-1;this.elts.push(ft(de.LinkMark,this.pos+this.start,this.pos+this.start+1)),this.pos++}else if(this.stage==1){if(!this.nextStage(ZQ(e,ql(e,this.pos),this.start)))return-1}else if(this.stage==2){let t=ql(e,this.pos),r=0;if(t>this.pos){let n=AQ(e,t,this.start);if(n){let s=dm(e,n.to-this.start);s>0&&(this.nextStage(n),r=s)}}return r||(r=dm(e,this.pos)),r>0&&r<e.length?r:-1}else return dm(e,this.pos)}}};function dm(i,e){for(;e<i.length;e++){let t=i.charCodeAt(e);if(t==10)break;if(!Zr(t))return-1}return e}var Sm=class{nextLine(e,t,r){let n=t.depth<e.stack.length?-1:wQ(t),s=t.next;if(n<0)return!1;let o=ft(de.HeaderMark,e.lineStart+t.pos,e.lineStart+n);return e.nextLine(),e.addLeafElement(r,ft(s==61?de.SetextHeading1:de.SetextHeading2,r.start,e.prevLineEnd(),[...e.parser.parseInline(r.content,r.start),o])),!0}finish(){return!1}},TQ={LinkReference(i,e){return e.content.charCodeAt(0)==91?new vm(e):null},SetextHeading(){return new Sm}},LC=[(i,e)=>QQ(e)>=0,(i,e)=>vQ(e)>=0,(i,e)=>SQ(e)>=0,(i,e)=>Tm(e,i,!0)>=0,(i,e)=>Xm(e,i,!0)>=0,(i,e)=>km(e,i,!0)>=0,(i,e)=>kQ(e,i,!0)>=0],jC={text:"",end:0},ym=class{constructor(e,t,r,n){this.parser=e,this.input=t,this.ranges=n,this.line=new gm,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=Wu.create(de.Document,0,this.lineStart,0,0),this.stack=[this.block],this.fragments=r.length?new $m(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 mm(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=EQ(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=jC;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 "+de[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=Xf.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 Ge(this.parser.nodeSet.types[e],xa,xa,(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(um(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?lQ(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=um(this.parser.parseInline(e.content,e.start),e.marks);this.addNode(this.buffer.writeElements(t,-e.start).finish(Oe.Paragraph,e.content.length),e.start)}elt(e,t,r,n){return typeof e=="string"?ut(this.parser.getNodeType(e),t,r,n):new Rf(e,t)}get buffer(){return new _f(this.parser.nodeSet)}};function lQ(i,e,t,r,n){let s=i[e].to,o=[],a=[],l=t.from+r;function c(f,O){for(;O?f>=s:f>s;){let p=i[e+1].from-s;r+=p,f+=p,e++,s=i[e].to}}for(let f=t.firstChild;f;f=f.nextSibling){c(f.from+r,!0);let O=f.from+r,p,b=n.get(f.tree);b?p=b:f.to+r>s?(p=lQ(i,e,f,r,n),c(f.to+r,!1)):p=f.toTree(),o.push(p),a.push(O-l)}return c(t.to+r,!1),new Ge(t.type,o,a,t.to+r-l,t.tree?t.tree.propValues:void 0)}var Ll=class i extends Vn{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 f of e.types)this.nodeTypes[f.name]=f.id}createParse(e,t,r){let n=new hm(this,e,t,r);for(let s of this.wrappers)n=s(n,e,t,r);return n}configure(e){let t=fm(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(),f=this.endLeafBlock.slice(),O=this.wrappers;if(El(t.defineNodes)){n=Object.assign({},n);let p=r.types.slice(),b;for(let y of t.defineNodes){let{name:P,block:X,composite:U,style:H}=typeof y=="string"?{name:y}:y;if(p.some(j=>j.name==P))continue;U&&(n[p.length]=(j,d,V)=>U(d,V,j.value));let q=p.length,B=U?["Block","BlockContext"]:X?q>=Oe.ATXHeading1&&q<=Oe.SetextHeading2?["Block","LeafBlock","Heading"]:["Block","LeafBlock"]:void 0;p.push(Et.define({id:q,name:P,props:B&&[[Ee.group,B]]})),H&&(b||(b={}),Array.isArray(H)||H instanceof sr?b[P]=H:Object.assign(b,H))}r=new Mn(p),b&&(r=r.extend(mi(b)))}if(El(t.props)&&(r=r.extend(...t.props)),El(t.remove))for(let p of t.remove){let b=this.blockNames.indexOf(p),y=this.inlineNames.indexOf(p);b>-1&&(s[b]=o[b]=void 0),y>-1&&(l[y]=void 0)}if(El(t.parseBlock))for(let p of t.parseBlock){let b=a.indexOf(p.name);if(b>-1)s[b]=p.parse,o[b]=p.leaf;else{let y=p.before?Tf(a,p.before):p.after?Tf(a,p.after)+1:a.length-1;s.splice(y,0,p.parse),o.splice(y,0,p.leaf),a.splice(y,0,p.name)}p.endLeaf&&f.push(p.endLeaf)}if(El(t.parseInline))for(let p of t.parseInline){let b=c.indexOf(p.name);if(b>-1)l[b]=p.parse;else{let y=p.before?Tf(c,p.before):p.after?Tf(c,p.after)+1:c.length-1;l.splice(y,0,p.parse),c.splice(y,0,p.name)}}return t.wrap&&(O=O.concat(t.wrap)),new i(r,s,o,a,f,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 Ml(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 El(i){return i!=null&&i.length>0}function fm(i){if(!Array.isArray(i))return i;if(i.length==0)return null;let e=fm(i[0]);if(i.length==1)return e;let t=fm(i.slice(1));if(!t||!e)return e||t;let r=(o,a)=>(o||xa).concat(a||xa),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 Tf(i,e){let t=i.indexOf(e);if(t<0)throw new RangeError(`Position specified relative to unknown parser ${e}`);return t}var cQ=[Et.none];for(let i=1,e;e=Oe[i];i++)cQ[i]=Et.define({id:i,name:e,props:i>=Oe.Escape?[]:[[Ee.group,i in Ky?["Block","BlockContext"]:["Block","LeafBlock"]]],top:e=="Document"});var xa=[],_f=class{constructor(e){this.nodeSet=e,this.content=[],this.nodes=[]}write(e 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(Ee.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 f=pQ(t.from-r,e.ranges);if(t.to-r<=e.ranges[e.rangeI].to)e.addNode(t.tree,f);else{let O=new Ge(e.parser.nodeSet.types[Oe.Paragraph],[],[],0,e.block.hashProp);e.reusePlaceholders.set(O,t.tree),e.addNode(O,f)}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 pQ(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 dC=mi({"Blockquote/...":S.quote,HorizontalRule:S.contentSeparator,"ATXHeading1/... SetextHeading1/...":S.heading1,"ATXHeading2/... SetextHeading2/...":S.heading2,"ATXHeading3/...":S.heading3,"ATXHeading4/...":S.heading4,"ATXHeading5/...":S.heading5,"ATXHeading6/...":S.heading6,"Comment CommentBlock":S.comment,Escape:S.escape,Entity:S.character,"Emphasis/...":S.emphasis,"StrongEmphasis/...":S.strong,"Link/... Image/...":S.link,"OrderedList/... BulletList/...":S.list,"BlockQuote/...":S.quote,"InlineCode CodeText":S.monospace,"URL Autolink":S.url,"HeaderMark HardBreak QuoteMark ListMark LinkMark EmphasisMark CodeMark":S.processingInstruction,"CodeInfo LinkLabel":S.labelName,LinkTitle:S.string,Paragraph:S.content}),mQ=new Ll(new Mn(cQ).extend(dC),Object.keys(kf).map(i=>kf[i]),Object.keys(kf).map(i=>aQ[i]),Object.keys(kf),hC,Ky,Object.keys(rm).map(i=>rm[i]),Object.keys(rm),[]);function pC(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 gQ(i){let{codeParser:e,htmlParser:t}=i;return{wrap:Ph((n,s)=>{let o=n.type.id;if(e&&(o==Oe.CodeBlock||o==Oe.FencedCode)){let a="";if(o==Oe.FencedCode){let c=n.node.getChild(Oe.CodeInfo);c&&(a=s.read(c.from,c.to))}let l=e(a);if(l)return{parser:l,overlay:c=>c.type.id==Oe.CodeText,bracketed:o==Oe.FencedCode}}else if(t&&(o==Oe.HTMLBlock||o==Oe.HTMLTag||o==Oe.CommentBlock))return{parser:t,overlay:pC(n.node,n.from,n.to)};return null})}}var mC={resolve:"Strikethrough",mark:"StrikethroughMark"},gC={defineNodes:[{name:"Strikethrough",style:{"Strikethrough/...":S.strikethrough}},{name:"StrikethroughMark",style:S.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=jl.test(r),l=jl.test(n);return i.addDelimiter(mC,t,t+2,!o&&(!l||s||a),!s&&(!a||o||l))},after:"Emphasis"}]};function Yl(i,e,t=0,r,n=0){let s=0,o=!0,a=-1,l=-1,c=!1,f=()=>{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 p=e.charCodeAt(O);p==124&&!c?((!o||a>-1)&&s++,o=!1,r&&(a>-1&&f(),r.push(i.elt("TableDelimiter",O+n,O+n+1))),a=l=-1):(c||p!=32&&p!=9)&&(a<0&&(a=O),l=O+1),c=!c&&p==92}return a>-1&&(s++,r&&f()),s}function Dy(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 bQ=/^[>\s]*\|?(\s*:?-+:?\s*\|)+(\s*:?-+:?\s*)?$/,Zf=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)&&bQ.test(n=t.text.slice(t.pos))){let s=[];Yl(e,r.content,0,s,r.start)==Yl(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=[];Yl(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}},bC={defineNodes:[{name:"Table",block:!0},{name:"TableHeader",style:{"TableHeader/...":S.heading}},"TableRow",{name:"TableCell",style:S.content},{name:"TableDelimiter",style:S.processingInstruction}],parseBlock:[{name:"Table",leaf(i,e){return Dy(e.content,0)?new Zf:null},endLeaf(i,e,t){if(t.parsers.some(n=>n instanceof Zf)||!Dy(e.text,e.basePos))return!1;let r=i.peekLine();return bQ.test(r)&&Yl(i,e.text,e.basePos)==Yl(i,r,e.basePos)},before:"SetextHeading"}]},dm=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}},xC={defineNodes:[{name:"Task",block:!0,style:S.list},{name:"TaskMarker",style:S.atom}],pa 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=Wu.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 Ge(this.parser.nodeSet.types[e],Sa,Sa,(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(wm(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?XQ(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=wm(this.parser.parseInline(e.content,e.start),e.marks);this.addNode(this.buffer.writeElements(t,-e.start).finish(de.Paragraph,e.content.length),e.start)}elt(e,t,r,n){return typeof e=="string"?ft(this.parser.getNodeType(e),t,r,n):new qu(e,t)}get buffer(){return new Vu(this.parser.nodeSet)}};function XQ(i,e,t,r,n){let s=i[e].to,o=[],a=[],l=t.from+r;function c(u,O){for(;O?u>=s:u>s;){let p=i[e+1].from-s;r+=p,u+=p,e++,s=i[e].to}}for(let u=t.firstChild;u;u=u.nextSibling){c(u.from+r,!0);let O=u.from+r,p,b=n.get(u.tree);b?p=b:u.to+r>s?(p=XQ(i,e,u,r,n),c(u.to+r,!1)):p=u.toTree(),o.push(p),a.push(O-l)}return c(t.to+r,!1),new Ge(t.type,o,a,t.to+r-l,t.tree?t.tree.propValues:void 0)}var Il=class i extends qn{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 u of e.types)this.nodeTypes[u.name]=u.id}createParse(e,t,r){let n=new ym(this,e,t,r);for(let s of this.wrappers)n=s(n,e,t,r);return n}configure(e){let t=Qm(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(),u=this.endLeafBlock.slice(),O=this.wrappers;if(Vl(t.defineNodes)){n=Object.assign({},n);let p=r.types.slice(),b;for(let y of t.defineNodes){let{name:P,block:X,composite:U,style:K}=typeof y=="string"?{name:y}:y;if(p.some(L=>L.name==P))continue;U&&(n[p.length]=(L,d,V)=>U(d,V,L.value));let q=p.length,B=U?["Block","BlockContext"]:X?q>=de.ATXHeading1&&q<=de.SetextHeading2?["Block","LeafBlock","Heading"]:["Block","LeafBlock"]:void 0;p.push(Et.define({id:q,name:P,props:B&&[[ze.group,B]]})),K&&(b||(b={}),Array.isArray(K)||K instanceof or?b[P]=K:Object.assign(b,K))}r=new Wn(p),b&&(r=r.extend(gi(b)))}if(Vl(t.props)&&(r=r.extend(...t.props)),Vl(t.remove))for(let p of t.remove){let b=this.blockNames.indexOf(p),y=this.inlineNames.indexOf(p);b>-1&&(s[b]=o[b]=void 0),y>-1&&(l[y]=void 0)}if(Vl(t.parseBlock))for(let p of t.parseBlock){let b=a.indexOf(p.name);if(b>-1)s[b]=p.parse,o[b]=p.leaf;else{let y=p.before?ju(a,p.before):p.after?ju(a,p.after)+1:a.length-1;s.splice(y,0,p.parse),o.splice(y,0,p.leaf),a.splice(y,0,p.name)}p.endLeaf&&u.push(p.endLeaf)}if(Vl(t.parseInline))for(let p of t.parseInline){let b=c.indexOf(p.name);if(b>-1)l[b]=p.parse;else{let y=p.before?ju(c,p.before):p.after?ju(c,p.after)+1:c.length-1;l.splice(y,0,p.parse),c.splice(y,0,p.name)}}return t.wrap&&(O=O.concat(t.wrap)),new i(r,s,o,a,u,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 Fl(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 Vl(i){return i!=null&&i.length>0}function Qm(i){if(!Array.isArray(i))return i;if(i.length==0)return null;let e=Qm(i[0]);if(i.length==1)return e;let t=Qm(i.slice(1));if(!t||!e)return e||t;let r=(o,a)=>(o||Sa).concat(a||Sa),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 ju(i,e){let t=i.indexOf(e);if(t<0)throw new RangeError(`Position specified relative to unknown parser ${e}`);return t}var _Q=[Et.none];for(let i=1,e;e=de[i];i++)_Q[i]=Et.define({id:i,name:e,props:i>=de.Escape?[]:[[ze.group,i in xQ?["Block","BlockContext"]:["Block","LeafBlock"]]],top:e=="Document"});var Sa=[],Vu=class{constructor(e){this.nodeSet=e,this.content=[],this.nodes=[]}write(e 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(ze.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 u=EQ(t.from-r,e.ranges);if(t.to-r<=e.ranges[e.rangeI].to)e.addNode(t.tree,u);else{let O=new Ge(e.parser.nodeSet.types[de.Paragraph],[],[],0,e.block.hashProp);e.reusePlaceholders.set(O,t.tree),e.addNode(O,u)}if(t.type.is("Block")&&(VC.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 EQ(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 qC=gi({"Blockquote/...":S.quote,HorizontalRule:S.contentSeparator,"ATXHeading1/... SetextHeading1/...":S.heading1,"ATXHeading2/... SetextHeading2/...":S.heading2,"ATXHeading3/...":S.heading3,"ATXHeading4/...":S.heading4,"ATXHeading5/...":S.heading5,"ATXHeading6/...":S.heading6,"Comment CommentBlock":S.comment,Escape:S.escape,Entity:S.character,"Emphasis/...":S.emphasis,"StrongEmphasis/...":S.strong,"Link/... Image/...":S.link,"OrderedList/... BulletList/...":S.list,"BlockQuote/...":S.quote,"InlineCode CodeText":S.monospace,"URL Autolink":S.url,"HeaderMark HardBreak QuoteMark ListMark LinkMark EmphasisMark CodeMark":S.processingInstruction,"CodeInfo LinkLabel":S.labelName,LinkTitle:S.string,Paragraph:S.content}),zQ=new Il(new Wn(_Q).extend(qC),Object.keys(Lu).map(i=>Lu[i]),Object.keys(Lu).map(i=>TQ[i]),Object.keys(Lu),LC,xQ,Object.keys(pm).map(i=>pm[i]),Object.keys(pm),[]);function DC(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 YQ(i){let{codeParser:e,htmlParser:t}=i;return{wrap:Yh((n,s)=>{let o=n.type.id;if(e&&(o==de.CodeBlock||o==de.FencedCode)){let a="";if(o==de.FencedCode){let c=n.node.getChild(de.CodeInfo);c&&(a=s.read(c.from,c.to))}let l=e(a);if(l)return{parser:l,overlay:c=>c.type.id==de.CodeText,bracketed:o==de.FencedCode}}else if(t&&(o==de.HTMLBlock||o==de.HTMLTag||o==de.CommentBlock))return{parser:t,overlay:DC(n.node,n.from,n.to)};return null})}}var IC={resolve:"Strikethrough",mark:"StrikethroughMark"},NC={defineNodes:[{name:"Strikethrough",style:{"Strikethrough/...":S.strikethrough}},{name:"StrikethroughMark",style:S.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=Nl.test(r),l=Nl.test(n);return i.addDelimiter(IC,t,t+2,!o&&(!l||s||a),!s&&(!a||o||l))},after:"Emphasis"}]};function Dl(i,e,t=0,r,n=0){let s=0,o=!0,a=-1,l=-1,c=!1,u=()=>{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 p=e.charCodeAt(O);p==124&&!c?((!o||a>-1)&&s++,o=!1,r&&(a>-1&&u(),r.push(i.elt("TableDelimiter",O+n,O+n+1))),a=l=-1):(c||p!=32&&p!=9)&&(a<0&&(a=O),l=O+1),c=!c&&p==92}return a>-1&&(s++,r&&u()),s}function fQ(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 MQ=/^[>\s]*\|?(\s*:?-+:?\s*\|)+(\s*:?-+:?\s*)?$/,Iu=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)&&MQ.test(n=t.text.slice(t.pos))){let s=[];Dl(e,r.content,0,s,r.start)==Dl(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=[];Dl(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}},FC={defineNodes:[{name:"Table",block:!0},{name:"TableHeader",style:{"TableHeader/...":S.heading}},"TableRow",{name:"TableCell",style:S.content},{name:"TableDelimiter",style:S.processingInstruction}],parseBlock:[{name:"Table",leaf(i,e){return fQ(e.content,0)?new Iu:null},endLeaf(i,e,t){if(t.parsers.some(n=>n instanceof Iu)||!fQ(e.text,e.basePos))return!1;let r=i.peekLine();return MQ.test(r)&&Dl(i,e.text,e.basePos)==Dl(i,r,e.basePos)},before:"SetextHeading"}]},Pm=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}},BC={defineNodes:[{name:"Task",block:!0,style:S.list},{name:"TaskMarker",style:S.atom}],pa Line truncated
\${}
} catch (\${error}) {
\${}
@@ -58,34 +60,36 @@ PC `+this.addr2str(s)+" "+this.opToString(c,null,y),o[P]=1)}),this.addr2str(r)+n
constructor(\${params}) {
\${}
}
}`,{label:"class",detail:"definition",type:"keyword"}),Wi('import {${names}} from "${module}"\n${}',{label:"import",detail:"named",type:"keyword"}),Wi('import ${name} from "${module}"\n${}',{label:"import",detail:"default",type:"keyword"})],m2=ow.concat([Wi("interface ${name} {\n ${}\n}",{label:"interface",detail:"definition",type:"keyword"}),Wi("type ${name} = ${type}",{label:"type",detail:"definition",type:"keyword"}),Wi("enum ${name} {\n ${}\n}",{label:"enum",detail:"definition",type:"keyword"})]),rw=new ca,aw=new Set(["Script","Block","FunctionExpression","FunctionDeclaration","ArrowFunction","MethodDeclaration","ForStatement"]);function ql(i){return(e,t)=>{let r=e.node.getChild("VariableDefinition");return r&&t(r,i),!0}}var g2=["FunctionDeclaration"],b2={FunctionDeclaration:ql("function"),ClassDeclaration:ql("class"),ClassExpression:()=>!0,EnumDeclaration:ql("constant"),TypeAliasDeclaration:ql("type"),NamespaceDeclaration:ql("namespace"),VariableDefinition(i,e){i.matchContext(g2)||e(i,"variable")},TypeDefinition(i,e){e(i,"type")},__proto__:null};function lw(i,e){let t=rw.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(ft.IncludeAnonymous).iterate(o=>{if(n)n=!1;else if(o.name){let a=b2[o.name];if(a&&a(o,s)||aw.has(o.name))return!1}else if(o.to-o.from>8192){for(let a of lw(i,o.node))r.push(a);return!1}}),rw.set(e,r),r}var nw=/^[\w$\xa1-\uffff][\w$\d\xa1-\uffff]*$/,cw=["TemplateString","String","RegExp","LineComment","BlockComment","VariableDefinition","TypeDefinition","Label","PropertyDefinition","PropertyName","PrivatePropertyDefinition","PrivatePropertyName","JSXText","JSXAttributeValue","JSXOpenTag","JSXCloseTag","JSXSelfClosingTag",".","?."];function x2(i){let e=ct(i.state).resolveInner(i.pos,-1);if(cw.indexOf(e.name)>-1)return null;let t=e.name=="VariableName"||e.to-e.from<20&&nw.test(i.state.sliceDoc(e.from,e.to));if(!t&&!i.explicit)return null;let r=[];for(let n=e;n;n=n.parent)aw.has(n.name)&&(r=r.concat(lw(i.state.doc,n)));return{options:r,from:t?e.from:i.pos,validFor:nw}}var Jr=gi.define({name:"javascript",parser:iw.configure({props:[Xr.add({IfStatement:vn({except:/^\s*({|else\b)/}),TryStatement:vn({except:/^\s*({|catch\b|finally\b)/}),LabeledStatement:zh,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:Eh({closing:"}"}),ArrowFunction:i=>i.baseIndent+i.unit,"TemplateString BlockComment":()=>null,"Statement Property":vn({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}}),ki.add({"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression ObjectType":_r,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:"$"}}),hw={test:i=>/^JSX/.test(i.name),facet:ha({commentTokens:{block:{open:"{/*",close:"*/}"}}})},Cm=Jr.configure({dialect:"ts"},"typescript"),Zm=Jr.configure({dialect:"jsx",props:[Ah.add(i=>i.isTop?[hw]:void 0)]}),Am=Jr.configure({dialect:"jsx ts",props:[Ah.add(i=>i.isTop?[hw]:void 0)]},"typescript"),fw=i=>({label:i,type:"keyword"}),uw="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(fw),v2=uw.concat(["declare","implements","private","protected","public"].map(fw));function Ow(i={}){let e=i.jsx?i.typescript?Am:Zm:i.typescript?Cm:Jr,t=i.typescript?m2.concat(v2):ow.concat(uw);return new bt(e,[Jr.data.of({autocomplete:Uv(cw,Av(t))}),Jr.data.of({autocomplete:x2}),i.jsx?Q2:[]])}function S2(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 sw(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 y2=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),Q2=ae.inputHandler.of((i,e,t,r,n)=>{if((y2?i.composing:i.compositionStarted)||i.state.readOnly||e!=t||r!=">"&&r!="/"||!Jr.isActiveAt(i.state,e,-1))return!1;let s=n(),{state:o}=s,a=o.changeByRange(l=>{var c;let{head:f}=l,O=ct(o).reso 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 Im(this):new Dm(this)}getCursor(e,t=0,r){let n=e.doc?e:at.create({doc:e});return r==null&&(r=n.doc.length),this.regexp?ya(this,n,t,r):Sa(this,n,t,r)}},Df=class{constructor(e){this.spec=e}};function sA(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 Sa(i,e,t,r){let n;return i.wholeWord&&(n=oA(e.doc,e.charCategorizer(e.selection.main.head))),i.test&&(n=sA(i.test,e,n)),new _s(e.doc,i.unquoted,t,r,i.caseSensitive?void 0:s=>s.toLowerCase(),n)}function oA(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(If(n,t-s))!=Qt.Word||e(Nf(n,t-s))!=Qt.Word)&&(e(Nf(n,r-s))!=Qt.Word||e(If(n,r-s))!=Qt.Word))}var Dm=class extends Df{constructor(e){super(e)}nextMatch(e,t,r){let n=Sa(this.spec,e,r,e.doc.length).nextOverlapping();if(n.done){let s=Math.min(e.doc.length,t+this.spec.unquoted.length);n=Sa(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=Sa(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=Sa(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=Sa(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 aA(i,e,t){return(r,n,s)=>(!t||t(r,n,s))&&i(s[0],e,r,n)}function ya(i,e,t,r){let n;return i.wholeWord&&(n=lA(e.charCategorizer(e.selection.main.head))),i.test&&(n=aA(i.test,e,n)),new jf(e.doc,i.search,{ignoreCase:!i.caseSensitive,test:n},t,r)}function If(i,e){return i.slice(jt(i,e,!1),e)}function Nf(i,e){return i.slice(e,jt(i,e))}function lA(i){return(e,t,r)=>!r[0].length||(i(If(r.input,r.index))!=Qt.Word||i(Nf(r.input,r.index))!=Qt.Word)&&(i(Nf(r.input,r.index+r[0].length))!=Qt.Word||i(If(r.input,r.index+r[0].length))!=Qt.Word)}var Im=class extends Df{nextMatch(e,t,r){let n=ya(this.spec,e,r,e.doc.length).next();return n.done&&(n=ya(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=ya(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=ya(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=ya(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)}},Fl=Ce.define(),Km=Ce.define(),Xs=ot.define({create(i){return new Nl(Nm(i).create(),null)},update(i,e){for(let t of e.effects)t.is(Fl)?i=new Nl(t.value.create(),i.panel):t.is(Km)&&(i=new Nl(i.query,t.value?Jm:null));return i},provide:i=>cl.from(i,e=>e.panel)});var Nl=class{constructor(e,t){this.query=e,this.panel=t}},cA=pe.mark({class:"cm-searchMatch"}),hA=pe.mark({class:"cm-searchMatch cm-searchMatch-selected"}),fA=At.fromClass(class{constructor(i){this.view=i,this.decorations=this.highlight(i.state.field(Xs))}update(i){let e=i.state.field(Xs);(e!=i.startState.field(Xs)||i.docChanged||i.selectionSet||i.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:i,panel:e}){if(!e||!i.spec.valid)return pe.none;let{view:t}=this,r=new Wr;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,f)=>{let O=t.state.selection.ranges.some(p=>p.from==c&&p.to==f);r.add(c,f,O?hA:cA)})}return r.finish()}},{decorations:i=>i.decorations});function Bl(i){return e=>{let t=e.state.field(Xs,!1);return t&&t.query.spec.valid?i(e,t):qw(e)}}var Ff=Bl((i,{query:e})=>{let{to:t}=i.state.selection.main,r=e.nextMatch(i.state,t,t);if(!r)return!1;let n=K.single(r.from,r.to),s=i.state.facet(To);return i.dispatch({selection:n,effects:[eg(i,r),s.scrollToMatch(n.main,i)],userEvent:"select.search"}),Vw(i),!0}),Bf=Bl((i,{query:e})=>{let{state:t}=i,{from:r}=t.selection.main,n=e.prevMatch(t,r,r);if( Line truncated
`);for(let l of a){O$.lastIndex=0;let c=O$.exec(l);if(c){let f=o+c.index+c[0].length;t.push(pe.widget({widget:new xg(c[0],e),side:-1}).range(f))}o+=l.length+1}}return pe.set(t,!0)}function p$(i){let e;function t(r){let n=e.posAtDOM(r);i(e.state.doc.lineAt(n).number)}return At.fromClass(class{constructor(r){e=r,this.decorations=d$(r,t)}update(r){e=r.view,(r.docChanged||r.viewportChanged)&&(this.decorations=d$(r.view,t))}},{decorations:r=>r.decorations})}function $U(i){return at.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,f)=>{let O=f.toString(),p=i.input(O);t.push({from:o,to:a,insert:p}),p!==O&&(r=!0)}),!r)return e;let n=e.annotation(Zt.userEvent),s=e.annotation(Zt.addToHistory);return{changes:t,selection:e.selection,effects:e.effects,scrollIntoView:e.scrollIntoView,annotations:[...n!=null?[Zt.userEvent.of(n)]:[],...s!=null?[Zt.addToHistory.of(s)]:[]]}})}var vg=new Ni;function m$(i){return vg.reconfigure($U(i))}var g$=Ce.define(),b$=Ce.define(),x$=Ce.define(),yg=Ce.define(),v$=Ce.define(),S$=Ce.define(),Qg=Ce.define(),y$=Ce.define(),Q$=ot.define({create(){return qe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(g$)){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 Hf(pt(o,4)).range(a))}i=qe.of(n,!0)}return i}}),w$=ot.define({create(){return qe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(b$)){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 Kf(o).range(a))}i=qe.of(n,!0)}return i}}),$$=ot.define({create(){return qe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(x$)){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 Jf(o).range(a))}i=qe.of(n,!0)}return i}}),P$=ot.define({create(){return qe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(yg))if(t.value===null)i=qe.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:[kU.range(n)]})}}return i}}),Sg=ot.define({create(){return qe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(v$)){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 eu(s,o).range(a))}i=qe.of(n,!0)}return i}}),k$=ot.define({create(){return qe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(S$))if(t.value===null)i=qe.empty;else{let r=t.value;if(r>=1&&r<=e.state.doc.lines){let n=e.state.doc.line(r).from;i=qe.of(T$.range(n))}}return i}}),Hf=class extends Wt{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}},Kf=class extends Wt{constructor(t){super();this.bytes=t}toDOM(){return document.createTextNode(this.bytes)}eq(t){return this.bytes==t.bytes}},Jf=class extends Wt{constructor(t){super();this.clock=t}toDOM(){return document.createTextNode(this.clock)}eq(t){return this.clock==t.clock}},PU=new class extends Wt{toDOM(){let i=document.createElement("span");return i.textContent="\u25CF",i.style.color="transparent",i.style.cursor="pointer",i.addEventListener("mouseenter",()=>{i.style.color="rgba(255, 0, 0, 0.5)"}),i.addEventListener("mouseleave",()=>{i.style.color="transparent"}),i}},kU=new class extends Wt{toDOM(){let i=document.createElement("span");return i.innerHTML="\u25CF",i.style.color="rgba(255, 0, 0, 1.0)",i.style.cursor="pointer",i.title="Click to run to here",i}},eu=class extends Wt{constructor(t,r){super();this.line=t;this.msg=r}toDOM(){let t=document.createElement("span");return t.innerHTML="\u24E7",t.style.color="red",t.style.cursor="pointer",t.title=this.msg,t}eq(t){return this.line==t.line&&this.msg==t.msg}},TU=new class extends Wt{toDOM(){let i=document.createElement("span");return i.textContent="\u25B6",i.style.color="transparent",i.style.cursor="pointer",i.title="Click to run to here",i.addEventListener("mouseenter",()=>{i.style.color="#ffee66"}),i.addEventListener("mouseleave",()=>{i.style.color="transparent"}),i}},T$=new class extends Wt{toDOM(){let i=document.createElement("span");return i.innerHTML="\u25B6",i.style.color="#ff66ee",i.style.cursor="pointer",i.title="Current PC",i}},XU=gs({class:"gutter-offset",markers:i=>i.state.field(Q$),initialSpacer:()=>new Hf("0000"),domEventHandlers:{click(i,e){let t=i.state.doc.lineAt(e.from).number;return i.dispatch({effects:Qg.of(t)}),!0}}}),_U=gs({class:"gutter-bytes",markers:i=>i.state.field(w$),initialSpacer:()=>new Kf("00 00 00")}),RU=gs({class:"gutter-c Line truncated
}`,{label:"class",detail:"definition",type:"keyword"}),Wi('import {${names}} from "${module}"\n${}',{label:"import",detail:"named",type:"keyword"}),Wi('import ${name} from "${module}"\n${}',{label:"import",detail:"default",type:"keyword"})],IA=kw.concat([Wi("interface ${name} {\n ${}\n}",{label:"interface",detail:"definition",type:"keyword"}),Wi("type ${name} = ${type}",{label:"type",detail:"definition",type:"keyword"}),Wi("enum ${name} {\n ${}\n}",{label:"enum",detail:"definition",type:"keyword"})]),ww=new ca,Tw=new Set(["Script","Block","FunctionExpression","FunctionDeclaration","ArrowFunction","MethodDeclaration","ForStatement"]);function Hl(i){return(e,t)=>{let r=e.node.getChild("VariableDefinition");return r&&t(r,i),!0}}var NA=["FunctionDeclaration"],FA={FunctionDeclaration:Hl("function"),ClassDeclaration:Hl("class"),ClassExpression:()=>!0,EnumDeclaration:Hl("constant"),TypeAliasDeclaration:Hl("type"),NamespaceDeclaration:Hl("namespace"),VariableDefinition(i,e){i.matchContext(NA)||e(i,"variable")},TypeDefinition(i,e){e(i,"type")},__proto__:null};function Xw(i,e){let t=ww.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(ut.IncludeAnonymous).iterate(o=>{if(n)n=!1;else if(o.name){let a=FA[o.name];if(a&&a(o,s)||Tw.has(o.name))return!1}else if(o.to-o.from>8192){for(let a of Xw(i,o.node))r.push(a);return!1}}),ww.set(e,r),r}var $w=/^[\w$\xa1-\uffff][\w$\d\xa1-\uffff]*$/,_w=["TemplateString","String","RegExp","LineComment","BlockComment","VariableDefinition","TypeDefinition","Label","PropertyDefinition","PropertyName","PrivatePropertyDefinition","PrivatePropertyName","JSXText","JSXAttributeValue","JSXOpenTag","JSXCloseTag","JSXSelfClosingTag",".","?."];function BA(i){let e=ct(i.state).resolveInner(i.pos,-1);if(_w.indexOf(e.name)>-1)return null;let t=e.name=="VariableName"||e.to-e.from<20&&$w.test(i.state.sliceDoc(e.from,e.to));if(!t&&!i.explicit)return null;let r=[];for(let n=e;n;n=n.parent)Tw.has(n.name)&&(r=r.concat(Xw(i.state.doc,n)));return{options:r,from:t?e.from:i.pos,validFor:$w}}var Jr=bi.define({name:"javascript",parser:Qw.configure({props:[Xr.add({IfStatement:vn({except:/^\s*({|else\b)/}),TryStatement:vn({except:/^\s*({|catch\b|finally\b)/}),LabeledStatement:Bh,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:Fh({closing:"}"}),ArrowFunction:i=>i.baseIndent+i.unit,"TemplateString BlockComment":()=>null,"Statement Property":vn({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}}),ki.add({"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression ObjectType":_r,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:"$"}}),Rw={test:i=>/^JSX/.test(i.name),facet:ha({commentTokens:{block:{open:"{/*",close:"*/}"}}})},qm=Jr.configure({dialect:"ts"},"typescript"),Dm=Jr.configure({dialect:"jsx",props:[Ih.add(i=>i.isTop?[Rw]:void 0)]}),Im=Jr.configure({dialect:"jsx ts",props:[Ih.add(i=>i.isTop?[Rw]:void 0)]},"typescript"),Cw=i=>({label:i,type:"keyword"}),Zw="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(Cw),GA=Zw.concat(["declare","implements","private","protected","public"].map(Cw));function Aw(i={}){let e=i.jsx?i.typescript?Im:Dm:i.typescript?qm:Jr,t=i.typescript?IA.concat(GA):kw.concat(Zw);return new bt(e,[Jr.data.of({autocomplete:Jv(_w,Kv(t))}),Jr.data.of({autocomplete:BA}),i.jsx?JA:[]])}function HA(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 Pw(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 KA=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),JA=ae.inputHandler.of((i,e,t,r,n)=>{if((KA?i.composing:i.compositionStarted)||i.state.readOnly||e!=t||r!=">"&&r!="/"||!Jr.isActiveAt(i.state,e,-1))return!1;let s=n(),{state:o}=s,a=o.changeByRange(l=>{var c;let{head:u}=l,O=ct(o).reso 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 ng(this):new rg(this)}getCursor(e,t=0,r){let n=e.doc?e:Je.create({doc:e});return r==null&&(r=n.doc.length),this.regexp?wa(this,n,t,r):Qa(this,n,t,r)}},sf=class{constructor(e){this.spec=e}};function U2(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 Qa(i,e,t,r){let n;return i.wholeWord&&(n=E2(e.doc,e.charCategorizer(e.selection.main.head))),i.test&&(n=U2(i.test,e,n)),new Rs(e.doc,i.unquoted,t,r,i.caseSensitive?void 0:s=>s.toLowerCase(),n)}function E2(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(of(n,t-s))!=Qt.Word||e(af(n,t-s))!=Qt.Word)&&(e(af(n,r-s))!=Qt.Word||e(of(n,r-s))!=Qt.Word))}var rg=class extends sf{constructor(e){super(e)}nextMatch(e,t,r){let n=Qa(this.spec,e,r,e.doc.length).nextOverlapping();if(n.done){let s=Math.min(e.doc.length,t+this.spec.unquoted.length);n=Qa(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=Qa(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=Qa(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=Qa(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 z2(i,e,t){return(r,n,s)=>(!t||t(r,n,s))&&i(s[0],e,r,n)}function wa(i,e,t,r){let n;return i.wholeWord&&(n=Y2(e.charCategorizer(e.selection.main.head))),i.test&&(n=z2(i.test,e,n)),new Ju(e.doc,i.search,{ignoreCase:!i.caseSensitive,test:n},t,r)}function of(i,e){return i.slice(Lt(i,e,!1),e)}function af(i,e){return i.slice(e,Lt(i,e))}function Y2(i){return(e,t,r)=>!r[0].length||(i(of(r.input,r.index))!=Qt.Word||i(af(r.input,r.index))!=Qt.Word)&&(i(af(r.input,r.index+r[0].length))!=Qt.Word||i(of(r.input,r.index+r[0].length))!=Qt.Word)}var ng=class extends sf{nextMatch(e,t,r){let n=wa(this.spec,e,r,e.doc.length).next();return n.done&&(n=wa(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=wa(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=wa(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=wa(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)}},tc=Ze.define(),hg=Ze.define(),_s=at.define({create(i){return new ec(sg(i).create(),null)},update(i,e){for(let t of e.effects)t.is(tc)?i=new ec(t.value.create(),i.panel):t.is(hg)&&(i=new ec(i.query,t.value?ug:null));return i},provide:i=>pl.from(i,e=>e.panel)});var ec=class{constructor(e,t){this.query=e,this.panel=t}},M2=Oe.mark({class:"cm-searchMatch"}),L2=Oe.mark({class:"cm-searchMatch cm-searchMatch-selected"}),j2=Xt.fromClass(class{constructor(i){this.view=i,this.decorations=this.highlight(i.state.field(_s))}update(i){let e=i.state.field(_s);(e!=i.startState.field(_s)||i.docChanged||i.selectionSet||i.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:i,panel:e}){if(!e||!i.spec.valid)return Oe.none;let{view:t}=this,r=new Wr;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,u)=>{let O=t.state.selection.ranges.some(p=>p.from==c&&p.to==u);r.add(c,u,O?L2:M2)})}return r.finish()}},{decorations:i=>i.decorations});function ic(i){return e=>{let t=e.state.field(_s,!1);return t&&t.query.spec.valid?i(e,t):h$(e)}}var lf=ic((i,{query:e})=>{let{to:t}=i.state.selection.main,r=e.nextMatch(i.state,t,t);if(!r)return!1;let n=H.single(r.from,r.to),s=i.state.facet(Xo);return i.dispatch({selection:n,effects:[Og(i,r),s.scrollToMatch(n.main,i)],userEvent:"select.search"}),c$(i),!0}),cf=ic((i,{query:e})=>{let{state:t}=i,{from:r}=t.selection.main,n=e.prevMatch(t,r,r);if( Line truncated
`);for(let l of a){R$.lastIndex=0;let c=R$.exec(l);if(c){let u=o+c.index+c[0].length;t.push(Oe.widget({widget:new Cg(c[0],e),side:-1}).range(u))}o+=l.length+1}}return Oe.set(t,!0)}function Z$(i){let e;function t(r){let n=e.posAtDOM(r);i(e.state.doc.lineAt(n).number)}return Xt.fromClass(class{constructor(r){e=r,this.decorations=C$(r,t)}update(r){e=r.view,(r.docChanged||r.viewportChanged)&&(this.decorations=C$(r.view,t))}},{decorations:r=>r.decorations})}var Zg=class extends It{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 tE(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 u=c instanceof RegExp?{re:c}:c;u.re.lastIndex=0;let O;for(;O=u.re.exec(l);){let p=O[u.group!=null?u.group:O.length-1];if(!p)continue;let b=Math.min(o+O.index+O[0].length,n.length),y=n.lineAt(b),P=y.number+":"+p;s.has(P)||(s.add(P),r.push(Oe.widget({widget:new Zg(p,!!u.system,t),side:1}).range(y.to)))}}}return Oe.set(r,!0)}function A$(i,e){function t(r){let n=i();return!n||!n.length?Oe.none:tE(r,n,e)}return Xt.fromClass(class{constructor(r){this.decorations=t(r)}update(r){(r.docChanged||r.viewportChanged)&&(this.decorations=t(r.view))}},{decorations:r=>r.decorations})}function iE(i){return Je.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,u)=>{let O=u.toString(),p=i.input(O);t.push({from:o,to:a,insert:p}),p!==O&&(r=!0)}),!r)return e;let n=e.annotation(At.userEvent),s=e.annotation(At.addToHistory);return{changes:t,selection:e.selection,effects:e.effects,scrollIntoView:e.scrollIntoView,annotations:[...n!=null?[At.userEvent.of(n)]:[],...s!=null?[At.addToHistory.of(s)]:[]]}})}var Ag=new Ni;function U$(i){return Ag.reconfigure(iE(i))}var E$=Ze.define(),z$=Ze.define(),Y$=Ze.define(),Eg=Ze.define(),M$=Ze.define(),L$=Ze.define(),zg=Ze.define(),j$=Ze.define(),W$=at.define({create(){return qe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(E$)){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 Of(pt(o,4)).range(a))}i=qe.of(n,!0)}return i}}),V$=at.define({create(){return qe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(z$)){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 df(o).range(a))}i=qe.of(n,!0)}return i}}),q$=at.define({create(){return qe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Y$)){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 pf(o).range(a))}i=qe.of(n,!0)}return i}}),D$=at.define({create(){return qe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Eg))if(t.value===null)i=qe.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:[nE.range(n)]})}}return i}}),Ug=at.define({create(){return qe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(M$)){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 mf(s,o).range(a))}i=qe.of(n,!0)}return i}}),I$=at.define({create(){return qe.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(L$))if(t.value===null)i=qe.empty;else{let r=t.value;if(r>=1&&r<=e.state.doc.lines){let n=e.state.doc.line(r).from;i=qe.of(N$.range(n))}}return i}}),Of=class extends Wt{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}},df=class extends Wt{constructor(t){super();this.bytes=t}toDOM(){return document.createTextNode(this.bytes)}eq(t){return this.bytes==t.bytes}},pf=class extends Wt{constructor(t){super();this.clock=t}toDOM(){return document.createTextNode(this.clock)}eq(t){return this.clock==t.clock}},rE=new class extends Wt{toDOM(){let i=document.createElement("span");return i.textContent="\u25CF",i.style.color="transparent",i.style.cursor="pointer",i.addEventListener("mouseenter",()=>{i.style.color="rgba(255, 0, 0, 0.5)"}),i.addEventListener("mouseleave",()=>{i.style.color="transparent"}),i}},nE=new class extends Wt{toDOM(){let i=document.createElement("span"); Line truncated
color: #ff6666;
background-color: #330000;
padding: 4px 8px;
margin: 2px 0;
border-left: 3px solid #ff0000;
font-family: monospace;
`,t}},UU=ot.define({create(){return pe.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Xo.showMessage)){if(t.value===null||!t.value)return pe.none;if(t.value.toggle){let r=[],n=new Map;return i.between(0,e.state.doc.length,(a,l,c)=>{try{let f=e.state.doc.lineAt(l).number;c.spec.widget instanceof Hl&&n.set(f,c.spec.widget.message)}catch(f){}}),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(pe.widget({widget:new Hl(n.get(a)),block:!0,side:1}).range(l.to))}catch(l){}}),pe.set(r,!0)}}return i},provide:i=>ae.decorations.from(i)}),wg=class extends oi{constructor(t){super();this.value=t}toDOM(){let t=document.createElement("div");return t.textContent=`${this.value}`,t.style.cssText=`
`,t}},fE=at.define({create(){return Oe.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(_o.showMessage)){if(t.value===null||!t.value)return Oe.none;if(t.value.toggle){let r=[],n=new Map;return i.between(0,e.state.doc.length,(a,l,c)=>{try{let u=e.state.doc.lineAt(l).number;c.spec.widget instanceof nc&&n.set(u,c.spec.widget.message)}catch(u){}}),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(Oe.widget({widget:new nc(n.get(a)),block:!0,side:1}).range(l.to))}catch(l){}}),Oe.set(r,!0)}}return i},provide:i=>ae.decorations.from(i)}),Yg=class extends It{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}},C$=Ce.define(),EU=ot.define({create(){return pe.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(C$)){if(t.value===null||!t.value)return pe.none;let r=e.state.doc.lineAt(t.value.range.to);return pe.set([pe.widget({widget:new wg(t.value.val),block:!0,side:1}).range(r.to)])}return i},provide:i=>ae.decorations.from(i)}),Z$=Ce.define(),zU=pe.mark({attributes:{class:"cm-error-span"}}),YU=ot.define({create(){return pe.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Z$)){if(t.value===null)return pe.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(zU.range(o,a))}catch(s){}return pe.set(r,!0)}return i},provide:i=>ae.decorations.from(i)}),A$=Ce.define(),LU=pe.line({attributes:{class:"highlight-lines"}}),jU=ot.define({create(){return pe.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(A$)){if(t.value===null)return pe.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(LU.range(a.from))}catch(a){}return pe.set(s)}return i!==pe.none&&(e.docChanged||e.selection)?pe.none:i},provide:i=>ae.decorations.from(i)}),U$={field:UU,widget:Hl},Kl={effect:_$,decoration:R$,field:AU},nu={effect:C$,field:EU},su={effect:Z$,field:YU},ou={effect:A$,field:jU},E$=Ce.define(),MU=pe.line({attributes:{class:"cm-traced-line"}}),WU=ot.define({create(){return pe.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(E$)){let r=[];for(let n of t.value)try{let s=e.state.doc.line(n);r.push(MU.range(s.from))}catch(s){}return pe.set(r,!0)}return i},provide:i=>ae.decorations.from(i)}),au={effect:E$,field:WU};var ec=64,z$=Ce.define(),Y$=Ce.define(),$g=ot.define({create(){return new Map},update(i,e){let t=i;for(let r of e.effects)if(r.is(Y$))t=new Map;else if(r.is(z$)){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}}),VU=200,Pg={default:{theme:bg},6502:{isAsm:!0},z80:{isAsm:!0},jsasm:{isAsm:!0},gas:{isAsm:!0},vasm:{isAsm:!0},inform6:{theme:Gf},dialog:{theme:Gf,lineWrap:!0},markdown:{lineWrap:!0},fastbasic:{noGutters:!0},basic:{noGutters:!0},ecs:{theme:bg}},L$={input:null};function j$(i){L$.input=i?e=>e.toUpperCase():null}var Jl=class Jl{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=Ye.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:m$(L$)}),Ye.getToolForFilename(this.path).startsWith("remote:")&&(this.refreshDelayMsec=1e3),t}setVisible(e){e?(this.editor.focus(),Jl.tracingEnabled&&this.startTracing()):this.stopTracing()}startTracing(){!this.probe&&L.startProbing&&(this.probe=L.startProbing(),this.probe.singleFrame=!1,this.probe.clear())}stopTracing(){this.probe&&(L.stopProbing(),this.probe=null),this.editor.dispatch({effects:au.effect.of([])})}setTracingEnabled(e){Jl.tracingEnabled=e,e?this.startTracing():this.stopTracing()}newEditor(e,t,r){var n=Pg[this.mode]||Pg.default,s=r||n.isAsm,o=!!n.lineWrap,a=n.theme||Pg.default.theme,l=n.useLineNumbers&&!Cl;Te.embed&&(l=!1,s=!1);let c=n.noGutters||Cl;var f;switch(this.mode){case"6502":f=e$();break;case"basic":f=t$();break;case"bataribasic":f=i$();break;case"fastbasic":f=n$();break;case"dialog":f=r$();break;case"inform6":f=s$();break;case"markdown":f=Uw();break;case"text/x-csrc":f=jy();break;case"text/x-wiz":f=a$();break;case"verilog":f=o$();break;case"z80":f=h$();break;default:console.warn("Unknown mode: "+this.mode);break}this.editor=new ae({parent:e,doc:t,extensions:[s?[]:Tr.of(" "),s?cp.of((O,p)=>{let b=O.state.doc.lineAt(p).number;if(b>=0){let y=O.state.doc.line(b);if(y.text.trim())return O.lineIndent(y.from)}return 0}):[],...zS(Xp()),kr.of(RS),l?Lx():[],tS(),kr.of(nS),vv(),_x(),at.allowMultipleSelections.of(!0),Td(),mv(),$v(),_d(),Rd(),Xd(),jx(),Hm(),Mw({top:!0}),kr.of(Iw),f||[],a,u$,o?ae.lineWrapping:[],Kl.field,c?[]:[tu.field,tu.gutter],s&&!c?[Gl.field,Gl.gutter,iu.field,iu.gutter]:[],ru.field,X$.gutter,ae.updateListener.of(O=>{for(let p of O.transactions.flatMap(b=>b.effects))if(p.is(ru.set)&&L.isRunning()&&this.runToBreakpoints(O.state),p.is(Qa.runToLine)){let b=p.value;if(this.sourcefile&&this.sourcefile.line2offset){let y=this.sourcefile.line2offset[b];y>=0&&Qo([y])}}}),Xo.field,U$.field,su.field,Qa.field,Qa.gutter,ou.field,au.field,$g,p$(O=>{window.location.hash="asseteditor/"+encodeURIComponent(this.path)+"/"+O}),vg.of([]),ae.updateListener.of(O=>{O.docChanged&&this.editorChanged()}),nu.field,ae.updateListener.of(O=>{O.selectionSet&&this.inspectUnderCursor(O)})]}),LS(this.editor)}editorChanged(){clearTimeout(this.updateTimer), 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:[ou.effect.of({start:e+1,end:t+1}),ae.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:[ou.effect.of({start:e,end:e}),ae.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,VU);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:[Xo.set.of(t),su.effect.of(r.length>0?r:null)]})}clearErrors(){this.dirtylisting=!0,this.editor.dispatch({effects:[Xo.set.of(new Map),Xo.showMessage.of(null),su.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,pt(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(L.getOpcodeMetadata){var a=parseInt(s.insns.split(" ")[0],16),l=L.getOpcodeMetadata(a,s.offset);if(l&&l.minCycles){var c=l.minCycles+"";n.set(s.line,c)}}}}this.editor.dispatch({effects:[tu.set.of(t),Gl.set.of(r),iu.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:[Gl.set.of(t)]})}}setCurrentLine(e,t){var r=n=>{this.editor.dispatch({effects:[Qa.set.of(n.line),Kl.effect.of(n.line),...t?[ae.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:ae.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:[Qa.set.of(null),Kl.effect.of(null)]})}getActiveLine(){if(this.sourcefile){var e=Bn&&Bn.c;if(!e&&L.getCPUState&&!L.isRunning()&&(e=L.getCPUState()),e){var t=e&&(e.EPC||e.PC),r=this.sourcefile.findLineForOffset(t,ec);return r}}}refreshDebugState(e){var t=this.getActiveLine();!e&&(t===this.currentDebugLine||!t&&!this.currentDebugLine)||this.setCurrentLine(t,e)}refreshListing(){var e=Ye.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,ec);s&&t.add(s.line)}}e.clear(),this.editor.dispatch({effects:au.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(){Dh(this.editor)}redoStep(){yl(this.editor)}getBreakpointPCs(){if(this.sourcefile==null)return[];let e=[],r=this.editor.state.field(ru.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?Qo(t):_o()}};Jl.tracingEnabled=!1;var wn=Jl,kg=1024,tc=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 ae({parent:e,extensions:[_d(),Rd(),at.allowMultipleSelections.of(!0),Td(),Xd(),Hm(),f$,Gf,Kl.field,at.tabSize.of(8),at.readOnly.of(!0)]})}refresh(e){let t=Bn||L.saveState(),r=t.c?t.c.PC:0,n=0,s=0,o=L.debugSymbols&&L.debugSymbols.addr2symbol||{},a=(f,O)=>{let p="",b=0;for(;b<O;){let y=f+b|0,P=L.disassemble(y,L.readAddress.bind(L)),X="",U="";for(let B=0;B<P.nbytes;B++)X+=pt(L.readAddress(y+B));for(;X.length<14;)X+=" ";let H=P.line;if(o&&P.i Line truncated
`;p+=q,y==r&&(s=n),n++,b+=P.nbytes||1}return p};var l=r<0?r-kg:Math.max(0,r-kg);let c=a(l,r-l)+a(r,kg);if(this.disasmview.dispatch({changes:{from:0,to:this.disasmview.state.doc.length,insert:c}}),e){let f=this.disasmview.state.doc.line(s+1);this.disasmview.dispatch({selection:{anchor:f.from,head:f.from},effects:ae.scrollIntoView(f.from,{y:"center"})})}}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}},lu=class extends tc{constructor(e){super(),this.path=e}refreshListing(){var e=Ye.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}}),!!L.saveState){var r=Bn||L.saveState(),n=r.c?r.c.EPC||r.c.PC:0;if(n>=0&&this.assemblyfile){var s=this.assemblyfile.findLineForOffset(n,ec);if(s&&e){let o=this.disasmview.state.doc.line(s.line);this.disasmview.dispatch({selection:{anchor:o.from,head:o.from},effects:ae.scrollIntoView(o.from,{y:"center"})})}}}}}};var ic=256,M$=100,W$=!1,cu=class i{constructor(e,t){this.expanded=!1;this.parent=e,this.name=t,this.children=new Map,this.level=e?e.level+1:-1,this.view=e?e.view:null}getDiv(){return this._div==null&&(this._div=document.createElement("div"),this._div.classList.add("vertical-scroll"),this._div.classList.add("tree-content"),this._header=document.createElement("div"),this._header.classList.add("tree-header"),this._header.classList.add("tree-level-"+this.level),this._header.append(this.name),this._inline=document.createElement("span"),this._inline.classList.add("tree-value"),this._header.append(this._inline),this._div.append(this._header),this.parent._content.append(this._div),this._header.onclick=e=>{this.toggleExpanded()}),this.expanded&&this._content==null?(this._content=document.createElement("div"),this._div.append(this._content)):!this.expanded&&this._content!=null&&(this._content.remove(),this._content=null,this.children.clear()),this._div}toggleExpanded(){this.expanded=!this.expanded,this.view.tick()}remove(){this._div.remove(),this._div=null}update(e){this.getDiv();var t="";if(e&&e.$$&&typeof e.$$=="function"&&this._content!=null&&(e=e.$$()),e==null)t=e+"";else if(typeof e=="number")e!=(e|0)?t=e.toString():t=e+" ($"+pt(e)+")";else if(typeof e=="boolean")t=e.toString();else if(typeof e=="string")e.length<M$?t=e:t=e.substring(0,M$)+"...";else if(e.buffer&&e.length<=ic)t=l0(e,0,e.length);else if(typeof e=="object"||typeof e=="function")if(this._content!=null){if(e.slice&&e.length>ic){let l={},c=e;for(var r=ic;e.length/r>ic;)r*=2;for(let f=0;f<c.length;f+=r)l["$"+pt(f)]={$$:()=>c.slice(f,f+r)};e=l}if(e instanceof Map){let l={};for(let[c,f]of e.entries())l[c]=f;e=l}let o=e instanceof Array?Array.from(e.keys()):Object.getOwnPropertyNames(e);if(o.length>ic){let l={},c=e;for(var r=100;o.length/r>100;)r*=2;for(let O=0;O<o.length;O+=r){for(var n={},s=O;s<O+r;s++)n[o[s]]=c[o[s]];l["["+O+"...]"]=n}e=l,o=Object.getOwnPropertyNames(e)}let a=new Set(this.children.keys());o.forEach(l=>{var c=!W$&&typeof l=="string"&&l.startsWith("$$");if(!c){let f=this.children.get(l);f==null&&(f=new i(this,l),this.children.set(l,f)),f.update(e[l])}a.delete(l)}),a.forEach(l=>{this.children.get(l).remove(),this.children.delete(l)}),this._header.classList.add("tree-expanded"),this._header.classList.remove("tree-collapsed")}else this._header.classList.add("tree-collapsed"),this._header.classList.remove("tree-expanded");else t=typeof e;this._inline.innerText!=t&&(this._inline.innerText=t)}};function V$(i,e){var t=new cu(null,null);t.view=e,t._content=i;var r=new cu(t,"/");return r.expanded=!0,r.getDiv(),r._div.style.padding="0px",r}var Tg=class{createDiv(e){return this.root=V$(e,this),this.root.getDiv()}refresh(){this.tick()}tick(){this.root.update(this.getRootObject())}};var hu=class extends Tg{getRootObject(){return L.getDebugTree()}},fu=class extends Ps{constructor(){super(...arguments);this.cumulativeData=!0}createDiv(t){return this.clear(),this.treeroot=V$(t,this),this.treeroot.getDiv()}refresh(){this.tick()}tick(){this.treeroot.update(this.getRootObject()),this.probe&&this.probe.clear()}clear(){this.graph=null,this.reset()}reset(){this.stack=[],this.lastsp=-1,this.lastpc=0,this.jsr=!1,this.rts=!1}newNode(t,r){return{$$SP:r,$$PC:t,count:0,startLine:null,endLine:null,calls:{}}}newRoot(t,r){this.stack.length==0?(this.graph=this.newNode(null,r),this.stack.unshift(this.graph)):r>this.stack[0].$$SP&&(this.graph=this.newNode(null,r),this.graph.calls[this.addr2str(t)]=this.stack[0],this.stack.unshift(this.graph))}getRootObject(){return this.redraw((t,r,n,s,o,a)=>{switch(t){case 184549376:this.newRoot(this.lastpc,this.lastsp);case 167772160:if(this.stack.length){let c=this.st Line truncated
`,await O1(i),Te.newfile?!r&&!t?Ke('No build tool for "'+i+'" on this platform; project will not build.'):r?x1(!0,!0):wi("No skeleton file for "+t+" on this platform; using blank file."):wi('Could not find file "'+i+'"<br><br>Creating new '+(r?t:"blank")+" file."),delete Te.newfile,yu()}}function qg(i){if(i=="/")Te={repo:"/"};else if(i.indexOf("://")>=0){var e=$l(i);e&&(Te={repo:e.repopath})}else Te.platform=Ue,Te.file=i;xo()}async function CE(i){var e=Nu(L.getToolForFilename(i));try{return await $.get("presets/"+zi(Ue)+"/skeleton."+e,"text")}catch(t){return console.log(t+""),null}}function Dg(i){return i.indexOf(" ")>=0?(Ke("No spaces in filenames, please."),!1):!0}async function ZE(i){var e=zi(Ue),t={},r=[];for(var n of i){var s=L.getToolForFilename("test"+n);t[s]||(t[s]=[],r.push(s)),t[s].push(n)}var o=r.map(f=>$.ajax({url:"presets/"+e+"/skeleton."+Nu(f),type:"HEAD"}).then(()=>f,()=>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 AE(i){var e=await ZE(L.getDefaultExtensions()),t,r;return e.length===0?(t=L.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(!Dg(n))return;n.indexOf(".")<0&&(n+=t[0]);var s=n;Te.newfile="1",qg(s)}}}),!0}function UE(i){let e=$('<input type="file" multiple accept="*" style="display:none">'),t=e[0];e.change(r=>{EE(t.files)}),e.click()}function EE(i){console.log(i);var e=0;function t(){var r=i[e++];if(!r)console.log("Done uploading",e),e>2?(wi("Files uploaded."),setTimeout(fc,1e3)):(Te.file=i[0].name,bootbox.confirm({message:"Open '"+Zo.sanitize(Te.file)+"' as main project file?",buttons:{confirm:{label:"Open As New Project"},cancel:{label:"Include/Link With Project Later"}},callback:o=>{o?xo():setTimeout(fc,1e3)}}));else{var n=r.name,s=new FileReader;s.onload=function(o){var a=o.target.result,l=new Uint8Array(a);Gs(n,l)||(l=vc(l).replace(`\r
`,t.className="cm-line",t}},H$=Ze.define(),OE=at.define({create(){return Oe.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(H$)){if(t.value===null||!t.value)return Oe.none;let r=e.state.doc.lineAt(t.value.range.to);return Oe.set([Oe.widget({widget:new Yg(t.value.val),block:!0,side:1}).range(r.to)])}return i},provide:i=>ae.decorations.from(i)}),K$=Ze.define(),dE=Oe.mark({attributes:{class:"cm-error-span"}}),pE=at.define({create(){return Oe.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(K$)){if(t.value===null)return Oe.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(dE.range(o,a))}catch(s){}return Oe.set(r,!0)}return i},provide:i=>ae.decorations.from(i)}),J$=Ze.define(),mE=Oe.line({attributes:{class:"highlight-lines"}}),gE=at.define({create(){return Oe.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(J$)){if(t.value===null)return Oe.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(mE.range(a.from))}catch(a){}return Oe.set(s)}return i!==Oe.none&&(e.docChanged||e.selection)?Oe.none:i},provide:i=>ae.decorations.from(i)}),e1={field:fE,widget:nc},sc={effect:B$,decoration:G$,field:uE},vf={effect:H$,field:OE},Sf={effect:K$,field:pE},yf={effect:J$,field:gE},t1=Ze.define(),bE=Oe.line({attributes:{class:"cm-traced-line"}}),xE=at.define({create(){return Oe.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(t1)){let r=[];for(let n of t.value)try{let s=e.state.doc.line(n);r.push(bE.range(s.from))}catch(s){}return Oe.set(r,!0)}return i},provide:i=>ae.decorations.from(i)}),Qf={effect:t1,field:xE};var ac=64,i1=Ze.define(),r1=Ze.define(),Mg=at.define({create(){return new Map},update(i,e){let t=i;for(let r of e.effects)if(r.is(r1))t=new Map;else if(r.is(i1)){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}}),vE=200,Lg={default:{theme:ff},6502:{isAsm:!0},z80:{isAsm:!0},jsasm:{isAsm:!0},gas:{isAsm:!0},vasm:{isAsm:!0},inform6:{theme:uf},dialog:{theme:uf,lineWrap:!0},markdown:{lineWrap:!0},fastbasic:{noGutters:!0},basic:{noGutters:!0},ecs:{theme:ff}},n1={input:null};function s1(i){n1.input=i?e=>e.toUpperCase():null}var oc=class oc{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=Xe.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:U$(n1)}),Xe.getToolForFilename(this.path).startsWith("remote:")&&(this.refreshDelayMsec=1e3),t}setVisible(e){e?(this.editor.focus(),oc.tracingEnabled&&this.startTracing()):this.stopTracing()}startTracing(){!this.probe&&M.startProbing&&(this.probe=M.startProbing(),this.probe.singleFrame=!1,this.probe.clear())}stopTracing(){this.probe&&(M.stopProbing(),this.probe=null),this.editor.dispatch({effects:Qf.effect.of([])})}setTracingEnabled(e){oc.tracingEnabled=e,e?this.startTracing():this.stopTracing()}newEditor(e,t,r){var n=Lg[this.mode]||Lg.default,s=r||n.isAsm,o=!!n.lineWrap,a=n.theme||Lg.default.theme,l=n.useLineNumbers&&!Ml;Pe.embed&&(l=!1,s=!1);let c=n.noGutters||Ml;var u;switch(this.mode){case"6502":u=x$();break;case"basic":u=v$();break;case"bataribasic":u=S$();break;case"fastbasic":u=Q$();break;case"dialog":u=y$();break;case"inform6":u=w$();break;case"markdown":u=i$();break;case"text/x-csrc":u=Om();break;case"text/x-wiz":u=P$();break;case"verilog":u=$$();break;case"z80":u=X$();break;default:console.warn("Unknown mode: "+this.mode);break}this.editor=new ae({parent:e,doc:t,extensions:[s?[]:Tr.of(" "),s?vp.of((O,p)=>{let b=O.state.doc.lineAt(p).number;if(b>=0){let y=O.state.doc.line(b);if(y.text.trim())return O.lineIndent(y.from)}return 0}):[],...s?[Gi.of(ty(()=>hu().tabsToSpaces))]:[],...sy(hu()),Gi.of(BS),l?rv():[],xS(),Gi.of(yS),Yv(),Fx(),Je.allowMultipleSelections.of(!0),Xh(),Av(),Vv(),Rh(),Ch(),_h(),nv(),hf(),cg({top:!0}),Gi.of(fg),u||[],a,Rg,o?ae.lineWrapping:[],sc.field,c?[]:[gf.field,gf.gutter],s&&!c?[rc.field,rc.gutter,bf.field,bf.gutter]:[],xf.field,F$.gutter,ae.updateListener.of(O=>{for(let p of O.transactions.flatMap(b=>b.effects))if(p.is(xf.set)&&M.isRunning()&&this.runToBreakpoints(O.state),p.is($a.runToLine)){let b=p.value;if(this.sourcefile&&this.sourcefile.line2offset){let y=this.sourcefile.line2offset[b];y>=0&&wo([y])}}}),_o.field,e1.field,Sf.field,$a.field,$a.gutter,yf.field,Qf.field,Mg,Z$(O=>{window.location.hash="asseteditor/"+encodeURIComponent(this.path)+"/"+O}),Pe.embed?[]:A$(()=>{var O=Xe&&Xe.getToolForFilename(this.path),p=Xe&&Xe.platform_id;return[...Zc(O,p),...Ac(O,p),...Z0(O)]},(O,p)=>{if(!p){var b=o1(O);if(b){window.location.h 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:[yf.effect.of({start:e+1,end:t+1}),ae.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:[yf.effect.of({start:e,end:e}),ae.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,vE);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:[_o.set.of(t),Sf.effect.of(r.length>0?r:null)]})}clearErrors(){this.dirtylisting=!0,this.editor.dispatch({effects:[_o.set.of(new Map),_o.showMessage.of(null),Sf.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,pt(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(M.getOpcodeMetadata){var a=parseInt(s.insns.split(" ")[0],16),l=M.getOpcodeMetadata(a,s.offset);if(l&&l.minCycles){var c=l.minCycles+"";n.set(s.line,c)}}}}this.editor.dispatch({effects:[gf.set.of(t),rc.set.of(r),bf.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:[rc.set.of(t)]})}}setCurrentLine(e,t){var r=n=>{this.editor.dispatch({effects:[$a.set.of(n.line),sc.effect.of(n.line),...t?[ae.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:ae.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:[$a.set.of(null),sc.effect.of(null)]})}getActiveLine(){if(this.sourcefile){var e=Gn&&Gn.c;if(!e&&M.getCPUState&&!M.isRunning()&&(e=M.getCPUState()),e){var t=e&&(e.EPC||e.PC),r=this.sourcefile.findLineForOffset(t,ac);return r}}}refreshDebugState(e){var t=this.getActiveLine();!e&&(t===this.currentDebugLine||!t&&!this.currentDebugLine)||this.setCurrentLine(t,e)}refreshListing(){var e=Xe.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,ac);s&&t.add(s.line)}}e.clear(),this.editor.dispatch({effects:Qf.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(){ru(this.editor)}redoStep(){Tl(this.editor)}getBreakpointPCs(){if(this.sourcefile==null)return[];let e=[],r=this.editor.state.field(xf.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?wo(t):Ro()}};oc.tracingEnabled=!1;var wn=oc,jg=1024,lc=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 ae({parent:e,extensions:[Rh(),Ch(),Je.allowMultipleSelections.of(!0),Xh(),_h(),hf(),_$,uf,sc.field,Je.tabSize.of(8),Je.readOnly.of(!0)]})}refresh(e){let t=Gn||M.saveState(),r=t.c?t.c.PC:0,n=0,s=0,o=M.debugSymbols&&M.debugSymbols.addr2symbol||{},a=(u,O)=>{let p="",b=0;for(;b<O;){let y=u+b|0,P=M.disassemble(y,M.readAddress.bind(M)),X="",U="";for(let B=0;B<P.nbytes;B++)X+=pt(M.readAddress(y+B));for(;X.length<14;)X+=" ";let K=P.line;if(o&&P.i Line truncated
`;p+=q,y==r&&(s=n),n++,b+=P.nbytes||1}return p};var l=r<0?r-jg:Math.max(0,r-jg);let c=a(l,r-l)+a(r,jg);if(this.disasmview.dispatch({changes:{from:0,to:this.disasmview.state.doc.length,insert:c}}),e){let u=this.disasmview.state.doc.line(s+1);this.disasmview.dispatch({selection:{anchor:u.from,head:u.from},effects:ae.scrollIntoView(u.from,{y:"center"})})}}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}},wf=class extends lc{constructor(e){super(),this.path=e}refreshListing(){var e=Xe.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}}),!!M.saveState){var r=Gn||M.saveState(),n=r.c?r.c.EPC||r.c.PC:0;if(n>=0&&this.assemblyfile){var s=this.assemblyfile.findLineForOffset(n,ac);if(s&&e){let o=this.disasmview.state.doc.line(s.line);this.disasmview.dispatch({selection:{anchor:o.from,head:o.from},effects:ae.scrollIntoView(o.from,{y:"center"})})}}}}}};function o1(i){let e=[i];try{var t=Va(Xe.mainPath);t.length>0&&t!="local"&&e.push(t+"/"+i)}catch(s){}for(var r of e){var n=Xe&&Xe.getFile(r);if(typeof n=="string")return r}return null}var Wg=new Map;function SE(i){let e=Xe.getToolForFilename(Xe.mainPath),t=A0(e,Xe.platform_id),r=U0(e);if(!t||!r.length)return Promise.resolve(null);let n=t+":"+i;return Wg.has(n)||Wg.set(n,(async()=>{for(var s of r){var o={preload_fs:t,readshared:s+"/"+i,updates:[],buildsteps:[]},a=await Xe.queryWorker(o),l=a&&a.output;if(l instanceof Uint8Array&&l.length>0)return new TextDecoder().decode(l)}return null})()),Wg.get(n)}var Pa=class{constructor(e){this.fn=e}createDiv(e){var t=document.createElement("div");t.setAttribute("class","editor"),e.appendChild(t);let r=Om();return this.view=new ae({parent:t,extensions:[Rh(),Ch(),Je.allowMultipleSelections.of(!0),Xh(),_h(),hf(),cg({top:!0}),Gi.of(fg),r,ff,Rg,Je.readOnly.of(!0)]}),this.refresh(!1),t}setVisible(e){e&&this.refresh(!1)}setHeaderText(e){this.view.dispatch({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=o1(e);if(t){this.currentPath=t,this.setHeaderText(Xe.getFile(t));return}var r=await SE(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.`)}}};var cc=256,a1=100,l1=!1,$f=class i{constructor(e,t){this.expanded=!1;this.parent=e,this.name=t,this.children=new Map,this.level=e?e.level+1:-1,this.view=e?e.view:null}getDiv(){return this._div==null&&(this._div=document.createElement("div"),this._div.classList.add("vertical-scroll"),this._div.classList.add("tree-content"),this._header=document.createElement("div"),this._header.classList.add("tree-header"),this._header.classList.add("tree-level-"+this.level),this._header.append(this.name),this._inline=document.createElement("span"),this._inline.classList.add("tree-value"),this._header.append(this._inline),this._div.append(this._header),this.parent._content.append(this._div),this._header.onclick=e=>{this.toggleExpanded()}),this.expanded&&this._content==null?(this._content=document.createElement("div"),this._div.append(this._content)):!this.expanded&&this._content!=null&&(this._content.remove(),this._content=null,this.children.clear()),this._div}toggleExpanded(){this.expanded=!this.expanded,this.view.tick()}remove(){this._div.remove(),this._div=null}update(e){this.getDiv();var t="";if(e&&e.$$&&typeof e.$$=="function"&&this._content!=null&&(e=e.$$()),e==null)t=e+"";else if(typeof e=="number")e!=(e|0)?t=e.toString():t=e+" ($"+pt(e)+")";else if(typeof e=="boolean")t=e.toString();else if(typeof e=="string")e.length<a1?t=e:t=e.substring(0,a1)+"...";else if(e.buffer&&e.length<=cc)t=$0(e,0,e.length);else if(typeof e=="object"||typeof e=="function")if(this._content!=null){if(e.slice&&e.length>cc){let l={},c=e;for(var r=cc;e.length/r>cc;)r*=2;for(let u=0;u<c.length;u+=r)l["$"+pt(u)]={$$:()=>c.slice(u,u+r)};e=l}if(e instanceof Map){let l={};for(let[c,u]of e.entries())l[c]=u;e=l}let o=e instanceof Array?Array.from(e.keys()):Object.getOwnPropertyNames(e);if(o.length>cc){let l={},c=e;for(var r=100;o.length/r>100;)r*=2;for(let O=0;O<o.length;O+=r){for(var n={},s=O;s<O+r;s++)n[o[s]]=c[o[s]];l["["+O+"...]"]=n}e=l,o=Object.getOwnPropertyNames(e)}let a=new Set(this.children.keys());o.forEach(l=>{var c=!l1&&typeof l=="string"&&l.startsWith("$$");if(!c){let u=this.children.get(l);u==null&&(u=new i(this,l),this.children.set(l,u)),u.update(e[l])}a.delete(l)}),a.forEach(l=>{this.children.get(l).remove(),this.children.delete(l)}),this._header.classList.add("tree-expanded"),this._header.classList.remove("tree-collapsed")}else this._header.classList.add("tree-collapsed"),this._header.classList.remove("tree-expanded");else t=typeof e;this._inline.innerText!=t&&(this._inline.innerText=t)}};function c1(i,e){var t=new $f(null,null);t.view=e,t._content=i;var r=new $f(t,"/");return r.expanded=!0,r.getDiv(),r._div.style.padding="0px",r}var qg=class{createDiv(e){return this.root=c1(e,this),this.root.getDiv()}refresh(){this.tick()}tick(){this.root.update(this.getRootObject())}};var Pf=class extends qg{getRootObject(){return M.getDebugTree()}},kf=class extends ks{constructor(){super(...arguments);this.cumulativeData=!0}createDiv(t){return this.clear(),this.treeroot=c1(t,this),this.treeroot.getDiv()}refresh(){this.tick()}tick(){this.treeroot.update(this.getRootObject()),this.probe&&this.probe.clear()}clear(){this.graph=null,this.reset()}reset(){this.stack=[],this.lastsp=-1,this.lastpc=0,this.jsr=!1,this.rts=!1}newNode(t,r){return{$$SP:r,$$PC:t,count:0,startLine:null,endLine:null,calls:{}}}newRoot(t,r){this.stack.length==0?(this.graph=this.newNode(null,r),this.stack.unshift(this.graph)):r>this.stack[0].$$SP&&(this.graph=this.newNode(null,r),this.graph.calls[this.addr2str(t)]=this.stack[0],this.stack.unshift(this.graph))}getRootObject(){return this.redraw((t,r,n,s,o,a)=>{switch(t){case 184549376:this.newRoot(this.lastpc,this.lastsp);case 167772160:if(this.stack.length){let c=this.stack[this.stack.length-1];var l=this.lastsp-r;(l==2||l==3)&&r<c.$$SP&&(this.jsr=!0),(l==-2||l==-3)&&this.stack.length>1&&r>c.$$SP&&(this.rts=!0)}this.lastsp=r;break;case 16777216:if(Math.abs(r-this.lastpc)>=4){if(this.jsr&&this.stack.length){let c=this.stack[this.stack.length-1],u=this.addr2str(r),O=c.calls[u];O==null?O=c.calls[u]=this.newNode(r,this.lastsp):O.$$PC==null&&(O.$$PC=r),this.stack.push(O),O.count++,O.startLine=s}this.jsr=!1,this.rts&&this.stack.length&&(this.stack.pop().endLine=s),this.rts=!1}this.lastpc=r;break}}),this.graph&&(this.graph.$$Stack=this.stack),l1?this.graph:this.graph&&this.graph.calls}};var Dg=u1(),Xf=class{constructor(e,t){this.id2window={};this.id2createfn={};this.id2showfn={};this.id2div={};this.containerdiv=e,this.project=t,this.undoStack=[],this.redoStack=[]}isWindow(e){return this.id2createfn[e]!=null}setCreateFunc(e,t){this.id2createfn[e]=t}setShowFunc(e,t){this.id2showfn[e]=t}create(e){var t=this.id2window[e];t||(console.log("creating window",e),t=this.id2window[e]=this.id2createfn[e](e));var r=this.id2div[e];return r||(r=this.id2div[e]=t.createDiv(this.containerdiv),Dg(r).hide()),t}createOrShow(e,t){var r=this.create(e),n=this.id2div[e];if(this.activ Line truncated
`,await Z1(i),Pe.newfile?!r&&!t?Ke('No build tool for "'+i+'" on this platform; project will not build.'):r?M1(!0,!0):wi("No skeleton file for "+t+" on this platform; using blank file."):wi('Could not find file "'+i+'"<br><br>Creating new '+(r?t:"blank")+" file."),delete Pe.newfile,Yf()}}function a0(i){if(i=="/")Pe={repo:"/"};else if(i.indexOf("://")>=0){var e=Cl(i);e&&(Pe={repo:e.repopath})}else Pe.platform=Ee,Pe.file=i;vo()}async function h5(i){var e=lO(M.getToolForFilename(i));try{return await $.get("presets/"+zi(Ee)+"/skeleton."+e,"text")}catch(t){return console.log(t+""),null}}function l0(i){return i.indexOf(" ")>=0?(Ke("No spaces in filenames, please."),!1):!0}async function u5(i){var e=zi(Ee),t={},r=[];for(var n of i){var s=M.getToolForFilename("test"+n);t[s]||(t[s]=[],r.push(s)),t[s].push(n)}var o=r.map(u=>$.ajax({url:"presets/"+e+"/skeleton."+lO(u),type:"HEAD"}).then(()=>u,()=>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 f5(i){var e=await u5(M.getDefaultExtensions()),t,r;return e.length===0?(t=M.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(!l0(n))return;n.indexOf(".")<0&&(n+=t[0]);var s=n;Pe.newfile="1",a0(s)}}}),!0}function O5(i){let e=$('<input type="file" multiple accept="*" style="display:none">'),t=e[0];e.change(r=>{d5(t.files)}),e.click()}function d5(i){console.log(i);var e=0;function t(){var r=i[e++];if(!r)console.log("Done uploading",e),e>2?(wi("Files uploaded."),setTimeout(gc,1e3)):(Pe.file=i[0].name,bootbox.confirm({message:"Open '"+Ao.sanitize(Pe.file)+"' as main project file?",buttons:{confirm:{label:"Open As New Project"},cancel:{label:"Include/Link With Project Later"}},callback:o=>{o?vo():setTimeout(gc,1e3)}}));else{var n=r.name,s=new FileReader;s.onload=function(o){var a=o.target.result,l=new Uint8Array(a);Hs(n,l)||(l=Pc(l).replace(`\r
`,`
`)),$e.updateFile(n,l),console.log("Uploaded "+n+" "+l.length+" bytes"),t()},s.readAsArrayBuffer(r)}}i&&t()}async function zE(i){var e=window.showDirectoryPicker;e||Ke("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=Wg.createInstance({name:n,version:2});await o.setItem(n,s),Te={localfs:r},xo(!0)}async function YE(i){return new Promise((e,t)=>{bootbox.prompt(Zo.sanitize(i),r=>{e(r)})})}async function LE(i){let e={mode:"readwrite"};var t="__localfs__"+i,r=Wg.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 YE("Request permissions to access filesystem?"),o=await s.requestPermission(e)),o!=="granted"){Ke("Could not get permission to access filesystem.");return}let a={};return{getFileData:async l=>{console.log("getFileData",l);let f=await(await s.getFileHandle(l,{create:!1})).getFile(),O=await(Gs(l)?f.arrayBuffer():f.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((f,O)=>{for(let p of f)if(p.changedHandle){let b=p.changedHandle.name;if(Date.now()-(a[b]||0)<2e3)continue;l(b)}}).observe(s,{recursive:!0})}}}function ti(){return yi(Ye.mainPath)}function ny(){return yi($e.getActiveID())}function jE(i){var e=$e.getActive(),t=$e.getActiveID(),r=e&&e.setData&&!e.setText;if(e&&(e.setText||e.setData)){var n="presets/"+zi(Ue)+"/"+t;La(n,s=>{if(s==null){It?Ke("Can only revert built-in examples. If you want to revert all files, You can pull from the repository."):Ke("Can only revert built-in examples.");return}bootbox.confirm("Reset '"+Zo.sanitize(t)+"' to default?",o=>{o&&(r?(e.setData(s),Ye.updateFile(t,s)):e.setText(s))})},r?"arraybuffer":"text")}else Ke("Cannot revert the active window. Please choose a text file.")}function ME(i){var e=$e.getActive();if(e&&e.getPath){var t=$e.getActiveID();bootbox.confirm("Delete '"+Zo.sanitize(t)+"'?",r=>{r&&Ar.removeItem(t).then(()=>{Te.file==t?(Hn.unsetLastPreset(),xo()):(fc(),wi("Deleted "+t))})})}else Ke("Cannot delete the active window.")}function WE(i){var e=$e.getActive();if(e&&e.getPath&&Ye.getFile(e.getPath())){var t=$e.getActiveID();bootbox.prompt({title:"Rename '"+Zo.sanitize(t)+"' to?",value:t,callback:r=>{var n=Ye.getFile(e.getPath());if(r&&r!=t&&n){if(!Dg(r))return;Ar.removeItem(t).then(()=>Ar.setItem(r,n)).then(()=>{fc(),alert("Renamed "+t+" to "+r),t==Ye.mainPath&&qg(r)})}}})}else Ke("Cannot rename the active window.")}function VE(i){let e={},t,r=L.getPresets?L.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==Ye.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&&(pu=s),e[s.id]=o}return e}function qE(i){if(Ji&&!Ta){var e=0,t=pa();if(t){let n=$("<optgroup />").attr("label","Repositories").appendTo(i);for(let s in t){var r=t[s];r.platform_id&&zi(r.platform_id)==zi(Ue)&&n.append($("<option />").val(r.url).text(r.url.substring(r.url.indexOf("/"))))}}}}async function d1(i,e,t,r){let n=await Ar.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==Ye.mainPath?"selected":null))}}}function p1(i){i.css("visibility","visible");var e=Ye.mainPath;i.val()!=e&&i.append($("<option />").val(e).text(e).attr("selected","selected"))}async function fc(){var i=$("#preset_select").empty();if(It)i.append($("<option />").val("/").text("Leave Repository")),$("#repo_name").text(yi(It)+"/").show(),await d1(i,It,"",{}),p1(i);else{qE(i);var e=VE(i);await d1(i,"Local Files","",e),p1(i)}i.off("change").change(function(t){qg($(this).val().toString())})}function DE(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==ti()&&(n=Ye.mainPath),$e.isWindow(n)&&r.click(s=>{var o=$e.createOrShow(n);o instanceof wn&&o.navigateToLine(i.line)}),e.append(r),e.append("&nbsp;")}return e.append($("<span/>").text(i.msg)),e}function v1(){$("#error_alert").hide(),Vg=!1}function Ig(i,e){var t=$("#error_alert_msg").empty();for(var r of i.slice(0,10))t.append(DE(r));$("#error_alert").show(),Vg=e}function S1(i,e){if(e!=null){var t={msg:e,line:0};i instanceof Wu&&i.$loc&&(t=Object.create(i.$loc),t.msg=e,console.log(t)),Ig([t],!0)}}async function IE(i){if("uppercaseOnly"in i&&j$(i.uppercaseOnly),"errors"in i&&i.errors.length>0)lc.addClass("has-errors"),$e.setErrors(i.errors), Line truncated
`)),Qe.updateFile(n,l),console.log("Uploaded "+n+" "+l.length+" bytes"),t()},s.readAsArrayBuffer(r)}}i&&t()}async function p5(i){var e=window.showDirectoryPicker;e||Ke("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=s0.createInstance({name:n,version:2});await o.setItem(n,s),Pe={localfs:r},vo(!0)}async function m5(i){return new Promise((e,t)=>{bootbox.prompt(Ao.sanitize(i),r=>{e(r)})})}async function g5(i){let e={mode:"readwrite"};var t="__localfs__"+i,r=s0.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 m5("Request permissions to access filesystem?"),o=await s.requestPermission(e)),o!=="granted"){Ke("Could not get permission to access filesystem.");return}let a={};return{getFileData:async l=>{console.log("getFileData",l);let u=await(await s.getFileHandle(l,{create:!1})).getFile(),O=await(Hs(l)?u.arrayBuffer():u.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((u,O)=>{for(let p of u)if(p.changedHandle){let b=p.changedHandle.name;if(Date.now()-(a[b]||0)<2e3)continue;l(b)}}).observe(s,{recursive:!0})}}}function ii(){return pi(Xe.mainPath)}function Py(){return pi(Qe.getActiveID())}function b5(i){var e=Qe.getActive(),t=Qe.getActiveID(),r=e&&e.setData&&!e.setText;if(e&&(e.setText||e.setData)){var n="presets/"+zi(Ee)+"/"+t;qa(n,s=>{if(s==null){Nt?Ke("Can only revert built-in examples. If you want to revert all files, You can pull from the repository."):Ke("Can only revert built-in examples.");return}bootbox.confirm("Reset '"+Ao.sanitize(t)+"' to default?",o=>{o&&(r?(e.setData(s),Xe.updateFile(t,s)):e.setText(s))})},r?"arraybuffer":"text")}else Ke("Cannot revert the active window. Please choose a text file.")}function x5(i){var e=Qe.getActive();if(e&&e.getPath){var t=Qe.getActiveID();bootbox.confirm("Delete '"+Ao.sanitize(t)+"'?",r=>{r&&Ar.removeItem(t).then(()=>{Pe.file==t?(Kn.unsetLastPreset(),vo()):(gc(),wi("Deleted "+t))})})}else Ke("Cannot delete the active window.")}function v5(i){var e=Qe.getActive();if(e&&e.getPath&&Xe.getFile(e.getPath())){var t=Qe.getActiveID();bootbox.prompt({title:"Rename '"+Ao.sanitize(t)+"' to?",value:t,callback:r=>{var n=Xe.getFile(e.getPath());if(r&&r!=t&&n){if(!l0(r))return;Ar.removeItem(t).then(()=>Ar.setItem(r,n)).then(()=>{gc(),alert("Renamed "+t+" to "+r),t==Xe.mainPath&&a0(r)})}}})}else Ke("Cannot rename the active window.")}function S5(i){let e={},t,r=M.getPresets?M.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==Xe.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&&(Rf=s),e[s.id]=o}return e}function y5(i){if(er&&!Ca){var e=0,t=ga();if(t){let n=$("<optgroup />").attr("label","Repositories").appendTo(i);for(let s in t){var r=t[s];r.platform_id&&zi(r.platform_id)==zi(Ee)&&n.append($("<option />").val(r.url).text(r.url.substring(r.url.indexOf("/"))))}}}}async function A1(i,e,t,r){let n=await Ar.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==Xe.mainPath?"selected":null))}}}function U1(i){i.css("visibility","visible");var e=Xe.mainPath;i.val()!=e&&i.append($("<option />").val(e).text(e).attr("selected","selected"))}async function gc(){var i=$("#preset_select").empty();if(Nt)i.append($("<option />").val("/").text("Leave Repository")),$("#repo_name").text(pi(Nt)+"/").show(),await A1(i,Nt,"",{}),U1(i);else{y5(i);var e=S5(i);await A1(i,"Local Files","",e),U1(i)}i.off("change").change(function(t){a0($(this).val().toString())})}function Q5(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==ii()&&(n=Xe.mainPath),Qe.isWindow(n)&&r.click(s=>{var o=Qe.createOrShow(n);o instanceof wn&&o.navigateToLine(i.line)}),e.append(r),e.append("&nbsp;")}return e.append($("<span/>").text(i.msg)),e}function L1(){$("#error_alert").hide(),o0=!1}function c0(i,e){var t=$("#error_alert_msg").empty();for(var r of i.slice(0,10))t.append(Q5(r));$("#error_alert").show(),o0=e}function j1(i,e){if(e!=null){var t={msg:e,line:0};i instanceof rO&&i.$loc&&(t=Object.create(i.$loc),t.msg=e,console.log(t)),c0([t],!0)}}async function w5(i){if("uppercaseOnly"in i&&s1(i.uppercaseOnly),"errors"in i&&i.errors.length>0)pc.addClass("has-errors"),Qe.setErrors(i.errors), Line truncated
`),e.SP&&(t+="c.SP < 0x"+pt(e.SP)+`
`),e.HL&&(t+=`c.HL == 0x4000
`),L.readAddress&&(t+=`this.readAddress(0x1234) == 0x0
`),L.readVRAMAddress&&(t+=`this.readVRAMAddress(0x1234) != 0x80
`),L.getRasterScanline&&(t+=`this.getRasterScanline() > 222
`),t}function a5(i){var e=new Function("c","return ("+i+");").bind(L);yn(),L.runEval(e),b1=i}function $1(){L.isRunning()?($e.tick(),mu=!1):mu||($e.tick(),mu=!0),setTimeout($1,100)}function Su(i){L.setFrameRate(i),i>.01?$("#fps_label").text(i.toFixed(2)):$("#fps_label").text("1/"+Math.round(1/i))}function l5(){var i=L.getFrameRate();i=i/2,i>1e-5&&Su(i)}function c5(){var i=L.getFrameRate();i=Math.min(60,i*2),Su(i)}function h5(){Su(60/65536)}function f5(){Kn(),Su(60)}function u5(){$e.refresh(!1);var i=$e.getActive();if(i.getSourceFile&&i.setTimingResult){var e=L.newCodeAnalyzer();e.showLoopTimingForPC(0),i.setTimingResult(e)}}function Fg(){ka&&(L.setRecorder(null),$("#dbg_record").removeClass("btn_recording"),$("#replaydiv").hide(),Ng(),ka=!1)}function P1(){ka&&Di.reset()}function k1(){Di.reset(),L.setRecorder(Di),$("#dbg_record").addClass("btn_recording"),$("#replaydiv").show(),ka=!0}function O5(){ka?Fg():k1()}function d5(){var i=!wn.tracingEnabled;$("#dbg_tracelines").toggleClass("btn_active",i);var e=$e.getActive();e instanceof wn?e.setTracingEnabled(i):wn.tracingEnabled=i}function tn(i,e,t){var r=$e.getActive();r&&r.insertLinesBefore?bootbox.prompt({title:"Add "+Zo.sanitize(i)+" File to Project",value:"filename"+Zo.sanitize(e),callback:n=>{if(n&&n.trim().length>0){if(!Dg(n))return;var s=n,o=`
`),M.readAddress&&(t+=`this.readAddress(0x1234) == 0x0
`),M.readVRAMAddress&&(t+=`this.readVRAMAddress(0x1234) != 0x80
`),M.getRasterScanline&&(t+=`this.getRasterScanline() > 222
`),t}function M5(i){var e=new Function("c","return ("+i+");").bind(M);yn(),M.runEval(e),Y1=i}function D1(){M.isRunning()?(Qe.tick(),Cf=!1):Cf||(Qe.tick(),Cf=!0),setTimeout(D1,100)}function zf(i){M.setFrameRate(i),i>.01?$("#fps_label").text(i.toFixed(2)):$("#fps_label").text("1/"+Math.round(1/i))}function L5(){var i=M.getFrameRate();i=i/2,i>1e-5&&zf(i)}function j5(){var i=M.getFrameRate();i=Math.min(60,i*2),zf(i)}function W5(){zf(60/65536)}function V5(){Jn(),zf(60)}function q5(){Qe.refresh(!1);var i=Qe.getActive();if(i.getSourceFile&&i.setTimingResult){var e=M.newCodeAnalyzer();e.showLoopTimingForPC(0),i.setTimingResult(e)}}function u0(){Ra&&(M.setRecorder(null),$("#dbg_record").removeClass("btn_recording"),$("#replaydiv").hide(),h0(),Ra=!1)}function I1(){Ra&&Di.reset()}function N1(){Di.reset(),M.setRecorder(Di),$("#dbg_record").addClass("btn_recording"),$("#replaydiv").show(),Ra=!0}function D5(){Ra?u0():N1()}function I5(){var i=!wn.tracingEnabled;$("#dbg_tracelines").toggleClass("btn_active",i);var e=Qe.getActive();e instanceof wn?e.setTracingEnabled(i):wn.tracingEnabled=i}function tn(i,e,t){var r=Qe.getActive();r&&r.insertLinesBefore?bootbox.prompt({title:"Add "+Ao.sanitize(i)+" File to Project",value:"filename"+Ao.sanitize(e),callback:n=>{if(n&&n.trim().length>0){if(!l0(n))return;var s=n,o=`
`+t(n)+`
`;Ye.loadFiles([s]).then(a=>{a&&a.length?Ke(n+" already exists; including anyway"):Ye.updateFile(s,`
`),r.insertLinesBefore(o),cc()})}}}):Ke("Can't insert text in this window -- switch back to main file")}function p5(){var i=ti(),e=L.getToolForFilename(i);i.endsWith(".c")||e=="sdcc"||e=="cc65"||e=="cmoc"||e=="smlrc"?tn("Header",".h",t=>'#include "'+t+'"'):e=="dasm"||e=="zmac"?tn("Include",".inc",t=>' include "'+t+'"'):e=="ca65"||e=="sdasz80"||e=="vasm"||e=="armips"?tn("Include",".inc",t=>' .include "'+t+'"'):e=="verilator"?tn("Verilog",".v",t=>'`include "'+t+'"'):e=="wiz"?tn("Include",".wiz",t=>'import "'+t+'";'):e=="ecs"?tn("Include",".ecs",t=>'import "'+t+'"'):e=="acme"?tn("Include",".acme",t=>'!src "'+t+'"'):e=="xa"?tn("Include",".xa",t=>'#include "'+t+'"'):e=="dialog"?tn("Include",".dg",t=>'%% #include "'+t+'"'):Ke("Can't add include file to this project type ("+e+")")}function m5(){var i=ti(),e=L.getToolForFilename(i);i.endsWith(".c")||e=="sdcc"||e=="cc65"||e=="cmoc"||e=="smlrc"?tn("Linked C (or .s)",".c",t=>'//#link "'+t+'"'):i.endsWith("asm")||i.endsWith(".s")||e=="ca65"||e=="lwasm"?tn("Linked ASM",".inc",t=>';#link "'+t+'"'):Ke("Can't add linked file to this project type ("+e+")")}function g5(){var t;if(Ft=new $c($("#toolbar")[0],null),Ft.grp.prop("id","run_bar"),Ft.add("ctrl+alt+r","Reset","glyphicon-refresh",r5).prop("id","dbg_reset"),Ft.add("ctrl+alt+,","Pause","glyphicon-pause",BE).prop("id","dbg_pause"),Ft.add("ctrl+alt+.","Resume","glyphicon-play",Q1).prop("id","dbg_go"),L.restartAtPC&&Ft.add("ctrl+alt+/","Restart at Cursor","glyphicon-play-circle",JE).prop("id","dbg_restartatline"),Ft.newGroup(),Ft.grp.prop("id","debug_bar"),L.runEval&&Ft.add("ctrl+alt+e","Reset and Debug","glyphicon-fast-backward",n5).prop("id","dbg_restart"),L.stepBack&&Ft.add("ctrl+alt+b","Step Backwards","glyphicon-step-backward",i5).prop("id","dbg_stepback"),L.step&&Ft.add("ctrl+alt+s","Single Step","glyphicon-step-forward",GE).prop("id","dbg_step"),L.stepOver&&Ft.add("ctrl+alt+t","Step Over","glyphicon-hand-right",HE).prop("id","dbg_stepover"),L.runUntilReturn&&Ft.add("ctrl+alt+o","Step Out of Subroutine","glyphicon-hand-up",t5).prop("id","dbg_stepout"),L.runToVsync&&Ft.add("ctrl+alt+n","Next Frame/Interrupt","glyphicon-forward",KE).prop("id","dbg_tovsync"),(L.runEval||L.runToPC)&&!Ue.startsWith("verilog")&&Ft.add("ctrl+alt+l","Run To Line","glyphicon-save",e5).prop("id","dbg_toline"),Ft.newGroup(),Ft.grp.prop("id","xtra_bar"),$(".dropdown-menu").collapse({toggle:!1}),$("#item_new_file").click(AE),$("#item_upload_file").click(UE),$("#item_open_directory").click(zE),$("#item_github_login").click(sy),$("#item_github_logout").click(oy),$("#item_github_import").click(ay),$("#item_github_publish").click(ly),$("#item_github_push").click(cy),$("#item_github_pull").click(hy),$("#item_repo_delete").click(uy),$("#item_share_file").click(BS),$("#item_reset_file").click(jE),$("#item_rename_file").click(WE),$("#item_delete_file").click(ME),L.runEval?$("#item_debug_expr").click(s5).show():$("#item_debug_expr").hide(),$("#item_download_rom").click(HS),$("#item_download_file").click(KS),$("#item_download_zip").click(ey),L.getDebugSymbolFile?$("#item_download_sym").click(ty):$("#item_download_sym").hide(),$("#item_download_allzip").click(iy),$("#item_record_video").click(ry),Zp()?$("#item_export_cassette").click(GS):$("#item_export_cassette").hide(),L.setFrameRate&&L.getFrameRate&&($("#dbg_slower").click(l5),$("#dbg_faster").click(c5),$("#dbg_slowest").click(h5),$("#dbg_fastest").click(f5)),$("#item_addfile_include").click(p5),$("#item_addfile_link").click(m5),$("#item_request_persist").click(()=>x1(!0,!1)),$("#item_settings").click(jS),$("#item_keyboard_shortcuts").click(b5),$("#item_asset_editor_help").click(x5),$1(),L.newCodeAnalyzer&&Ft.add(null,"Analyze CPU Timing","glyphicon-time",u5),L.startProbing&&Ft.add(null,"Highlight Executed Lines","glyphicon-fire",d5).prop("id","dbg_tracelines"),L.setRecorder&&L.advance&&v5(),L.showHelp){let{li:r,a:n}=Lg("help__"+Ue,zg+" Help");$("#help_menu").append(r),$(n).click(()=>window.open(L.showHelp(),"_8bws_help"))}let i=L.getToolForFilename(ti()),e=i&&((t=Vo(i))==null?void 0:t.helpURL);if(e){let{li:r,a:n}=Lg("help__"+i,i+" Help");$("#help_menu").append(r),$(n).click(()=>window.open(e,"_8bws_help"))}}function b5(){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:`
`;Xe.loadFiles([s]).then(a=>{a&&a.length?Ke(n+" already exists; including anyway"):Xe.updateFile(s,`
`),r.insertLinesBefore(o),_a()})}}}):Ke("Can't insert text in this window -- switch back to main file")}function N5(){var i=ii(),e=M.getToolForFilename(i);i.endsWith(".c")||e=="sdcc"||e=="cc65"||e=="cmoc"||e=="smlrc"?tn("Header",".h",t=>'#include "'+t+'"'):e=="dasm"||e=="zmac"?tn("Include",".inc",t=>' include "'+t+'"'):e=="ca65"||e=="sdasz80"||e=="vasm"||e=="armips"?tn("Include",".inc",t=>' .include "'+t+'"'):e=="verilator"?tn("Verilog",".v",t=>'`include "'+t+'"'):e=="wiz"?tn("Include",".wiz",t=>'import "'+t+'";'):e=="ecs"?tn("Include",".ecs",t=>'import "'+t+'"'):e=="acme"?tn("Include",".acme",t=>'!src "'+t+'"'):e=="xa"?tn("Include",".xa",t=>'#include "'+t+'"'):e=="dialog"?tn("Include",".dg",t=>'%% #include "'+t+'"'):Ke("Can't add include file to this project type ("+e+")")}function F5(){var i=ii(),e=M.getToolForFilename(i);i.endsWith(".c")||e=="sdcc"||e=="cc65"||e=="cmoc"||e=="smlrc"?tn("Linked C (or .s)",".c",t=>'//#link "'+t+'"'):i.endsWith("asm")||i.endsWith(".s")||e=="ca65"||e=="lwasm"?tn("Linked ASM",".inc",t=>';#link "'+t+'"'):Ke("Can't add linked file to this project type ("+e+")")}function B5(){var t;if(Bt=new Rc($("#toolbar")[0],null),Bt.grp.prop("id","run_bar"),Bt.add("ctrl+alt+r","Reset","glyphicon-refresh",U5).prop("id","dbg_reset"),Bt.add("ctrl+alt+,","Pause","glyphicon-pause",k5).prop("id","dbg_pause"),Bt.add("ctrl+alt+.","Resume","glyphicon-play",V1).prop("id","dbg_go"),M.restartAtPC&&Bt.add("ctrl+alt+/","Restart at Cursor","glyphicon-play-circle",R5).prop("id","dbg_restartatline"),Bt.newGroup(),Bt.grp.prop("id","debug_bar"),M.runEval&&Bt.add("ctrl+alt+e","Reset and Debug","glyphicon-fast-backward",E5).prop("id","dbg_restart"),M.stepBack&&Bt.add("ctrl+alt+b","Step Backwards","glyphicon-step-backward",A5).prop("id","dbg_stepback"),M.step&&Bt.add("ctrl+alt+s","Single Step","glyphicon-step-forward",T5).prop("id","dbg_step"),M.stepOver&&Bt.add("ctrl+alt+t","Step Over","glyphicon-hand-right",X5).prop("id","dbg_stepover"),M.runUntilReturn&&Bt.add("ctrl+alt+o","Step Out of Subroutine","glyphicon-hand-up",Z5).prop("id","dbg_stepout"),M.runToVsync&&Bt.add("ctrl+alt+n","Next Frame/Interrupt","glyphicon-forward",_5).prop("id","dbg_tovsync"),(M.runEval||M.runToPC)&&!Ee.startsWith("verilog")&&Bt.add("ctrl+alt+l","Run To Line","glyphicon-save",C5).prop("id","dbg_toline"),Bt.newGroup(),Bt.grp.prop("id","xtra_bar"),$(".dropdown-menu").collapse({toggle:!1}),$("#item_new_file").click(f5),$("#item_upload_file").click(O5),$("#item_open_directory").click(p5),$("#item_github_login").click(ky),$("#item_github_logout").click(Ty),$("#item_github_import").click(Xy),$("#item_github_publish").click(_y),$("#item_github_push").click(Ry),$("#item_github_pull").click(Cy),$("#item_repo_delete").click(Ay),$("#item_share_file").click(gy),$("#item_reset_file").click(b5),$("#item_rename_file").click(v5),$("#item_delete_file").click(x5),M.runEval?$("#item_debug_expr").click(z5).show():$("#item_debug_expr").hide(),$("#item_download_rom").click(xy),$("#item_download_file").click(vy),$("#item_download_zip").click(yy),M.getDebugSymbolFile?$("#item_download_sym").click(Qy):$("#item_download_sym").hide(),$("#item_download_allzip").click(wy),$("#item_record_video").click($y),qp()?$("#item_export_cassette").click(by):$("#item_export_cassette").hide(),M.setFrameRate&&M.getFrameRate&&($("#dbg_slower").click(L5),$("#dbg_faster").click(j5),$("#dbg_slowest").click(W5),$("#dbg_fastest").click(V5)),$("#item_addfile_include").click(N5),$("#item_addfile_link").click(F5),$("#item_request_persist").click(()=>M1(!0,!1)),$("#item_settings").click(ly),$("#item_keyboard_shortcuts").click(G5),$("#item_asset_editor_help").click(H5),D1(),M.newCodeAnalyzer&&Bt.add(null,"Analyze CPU Timing","glyphicon-time",q5),M.startProbing&&Bt.add(null,"Highlight Executed Lines","glyphicon-fire",I5).prop("id","dbg_tracelines"),M.setRecorder&&M.advance&&K5(),M.showHelp){let{li:r,a:n}=t0("help__"+Ee,Jg+" Help");$("#help_menu").append(r),$(n).click(()=>window.open(M.showHelp(),"_8bws_help"))}let i=M.getToolForFilename(ii()),e=i&&((t=En(i))==null?void 0:t.helpURL);if(e){let{li:r,a:n}=t0("help__"+i,i+" Help");$("#help_menu").append(r),$(n).click(()=>window.open(e,"_8bws_help"))}}function G5(){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 class="help">
<tr><th colspan="2">Custom</th></tr>
${n(`${r}+${t}+F`,"Format document, or selected range(s)")}
@@ -103,7 +107,7 @@ PC `+this.addr2str(s)+" "+this.opToString(c,null,y),o[P]=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 x5(){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 H5(){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>
@@ -142,7 +146,7 @@ PC `+this.addr2str(s)+" "+this.opToString(c,null,y),o[P]=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 v5(){var i=$("#replayslider"),e=$("#clockslider"),t=$("#replay_frame"),r=$("#replay_clock");L.advanceFrameClock||$("#clockdiv").hide();var n=()=>{t.text(Di.lastSeekFrame+""),r.text(Di.lastSeekStep+"")},s=l=>{As();var c=parseInt(i.val().toString()),f=parseInt(e.val().toString());Di.loadFrame(c,f)>=0&&(e.attr("min",0),e.attr("max",Di.lastStepCount),n(),gu(L.saveState()))},o=l=>{As(),Di.loadFrame(l)>=0&&(i.val(l),n(),gu(L.saveState()))},a=l=>{As();var c=parseInt(i.val().toString());Di.loadFrame(c,l)>=0&&(e.val(l),n(),gu(L.saveState()))};Di.callbackStateChanged=()=>{i.attr("min",0),i.attr("max",Di.numFrames()),i.val(Di.currentFrame()),e.val(Di.currentStep()),n(),uc(L.saveState())},i.on("input",s),e.on("input",s),$("#replay_min").click(()=>{o(1)}),$("#replay_max").click(()=>{o(Di.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(),Ft.add("ctrl+alt+0","Start/Stop Replay Recording","glyphicon-record",O5).prop("id","dbg_record")}function S5(){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 y5(){if(Hn.shouldCompleteTour()){await vr("lib/bootstrap-tourist.js");var i=Ue.startsWith("vcs"),e=[{element:"#platformsMenuButton",placement:"right",title:"Platform Selector",content:`You're currently on the "<b>`+Ue+'</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."}];S5()||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."}),window.location.host.endsWith("8bitworkshop.com")&&(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!"})),Ta&&(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:()=>{Hn.completedTour()}});setTimeout(()=>{t.start()},2500)}}function xu(i){var e=(i.message||i.error||i)+"";if(e.indexOf("QuotaExceededError")>=0)$E();else{var t=i.error||i.reason;t!=null&&t instanceof Wu&&Q5(t)}}function Q5(i){console.log("haltEmulation"),As(),L5(i)}function w5(){window.addEventListener("error",xu),window.addEventListener("unhandledrejection",xu)}function T1(){window.removeEventListener("error",xu),window.removeEventListener("unhandledrejection",xu)}function xo(i,e){e&&(Te=e),T1(),i?window.location.replace("?"+$.param(Te)):window.location.href="?"+$.param(Te)}function yu(){Ue&&(Te.platform=Ue),delete Te[""],history.replaceState({},"","?"+$.param(Te)+window.location.hash)}function X1(i){if(!i||i==="#")return null;var e=decodeURIComponent(i.substring(1));return e.startsWithLine truncated
</table>`,buttons:{ok:{label:"OK",className:"btn-primary"}},size:"large"})}function K5(){var i=$("#replayslider"),e=$("#clockslider"),t=$("#replay_frame"),r=$("#replay_clock");M.advanceFrameClock||$("#clockdiv").hide();var n=()=>{t.text(Di.lastSeekFrame+""),r.text(Di.lastSeekStep+"")},s=l=>{Us();var c=parseInt(i.val().toString()),u=parseInt(e.val().toString());Di.loadFrame(c,u)>=0&&(e.attr("min",0),e.attr("max",Di.lastStepCount),n(),Zf(M.saveState()))},o=l=>{Us(),Di.loadFrame(l)>=0&&(i.val(l),n(),Zf(M.saveState()))},a=l=>{Us();var c=parseInt(i.val().toString());Di.loadFrame(c,l)>=0&&(e.val(l),n(),Zf(M.saveState()))};Di.callbackStateChanged=()=>{i.attr("min",0),i.attr("max",Di.numFrames()),i.val(Di.currentFrame()),e.val(Di.currentStep()),n(),bc(M.saveState())},i.on("input",s),e.on("input",s),$("#replay_min").click(()=>{o(1)}),$("#replay_max").click(()=>{o(Di.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(),Bt.add("ctrl+alt+0","Start/Stop Replay Recording","glyphicon-record",D5).prop("id","dbg_record")}function J5(){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 ez(){if(Kn.shouldCompleteTour()){await Sr("lib/bootstrap-tourist.js");var i=Ee.startsWith("vcs"),e=[{element:"#platformsMenuButton",placement:"right",title:"Platform Selector",content:`You're currently on the "<b>`+Ee+'</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."}];J5()||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."}),Da()&&(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!"})),Ca&&(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:()=>{Kn.completedTour()}});setTimeout(()=>{t.start()},2500)}}function Uf(i){var e=(i.message||i.error||i)+"";if(e.indexOf("QuotaExceededError")>=0)r5();else{var t=i.error||i.reason;t!=null&&t instanceof rO&&tz(t)}}function tz(i){console.log("haltEmulation"),Us(),gz(i)}function iz(){window.addEventListener("error",Uf),window.addEventListener("unhandledrejection",Uf)}function F1(){window.removeEventListener("error",Uf),window.removeEventListener("unhandledrejection",Uf)}function vo(i,e){e&&(Pe=e),F1(),i?window.location.replace("?"+$.param(Pe)):window.location.href="?"+$.param(Pe)}function Yf(){Ee&&(Pe.platform=Ee),delete Pe[""],history.replaceState({},"","?"+$.param(Pe)+window.location.hash)}function B1(i){if(!i||i==="#")return null;var e=decodeURIComponent(i.substring(1));return e.startsWith("asseteditor/")?"#asseteditor":e.startsWith(Line truncated
/*! Bundled license information:
localforage/dist/localforage.js:
@@ -168,4 +172,4 @@ jquery/dist/jquery.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-T3IRBODR.js.map
//# sourceMappingURL=chunk-22X2KTII.js.map
+7
View File
@@ -0,0 +1,7 @@
{
"version": 3,
"sources": ["../node_modules/localforage/dist/localforage.js", "../node_modules/jquery/dist/jquery.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/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/pixeleditor.ts", "../src/ide/views/baseviews.ts", "../src/ide/views/asseteditor.ts", "../src/common/vtextscroller.ts", "../src/ide/views/debugviews.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/@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", "../node_modules/@codemirror/search/dist/index.js", "../src/parser/tokens-6502.ts", "parser/lang-6502.grammar.js", "../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/tokens-z80.ts", "parser/lang-z80.grammar.js", "../src/parser/lang-z80.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/filters.ts", "../src/ide/views/gutter.ts", "../src/ide/views/visuals.ts", "../src/ide/views/editors.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", "require_jquery", "__commonJSMin", "exports", "module", "global", "factory", "w", "window", "noGlobal", "arr", "getProto", "slice", "flat", "array", "push", "indexOf", "class2type", "toString", "hasOwn", "fnToString", "ObjectFunctionString", "support", "isFunction", "obj", "isWindow", "document", "preservedScriptAttributes", "DOMEval", "code", "node", "doc", "i", "val", "script", "toType", "version", "rhtmlSuffix", "jQuery", "selector", "context", "num", "elems", "ret", "callback",Line truncated
}
@@ -1,4 +1,4 @@
import{c as ie,k as he,o as ne,r as oe}from"./chunk-6POV4IU3.js";import{W as ae,a as A,g as w,u}from"./chunk-V6XWGCKJ.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-AK5O5EFA.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-6POV4IU3.js";import{W 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-4GR6NWIG.js.map
//# sourceMappingURL=chunk-2TT65SF3.js.map
File renamed without changes.
@@ -1,4 +1,4 @@
import{D as gt,O as pt,Q as Pt,S as _t,T as wt,U as rt,Z as kt,g as $,j as vt,s as Ve}from"./chunk-V6XWGCKJ.js";var Sn=[{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
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 vt,s as Ve}from"./chunk-TYDI7JZQ.js";var Sn=[{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 St=[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:s[l],minCycles:St[l],maxCycles:St[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 s[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
@@ -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 Dn(h){return typeof h.setKeyInput=="function"}function Tt(h){return typeof h.setPaddleInput=="function"}function xt(h){return typeof h.getRasterY=="function"}function Rn(h){return typeof h.connectProbe=="function"}function Bn(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()),Dn(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(),Rn(t)&&(this.probeRecorder=new Ke(t),this.startProbing=()=>(t.connectProbe(this.probeRecorder),this.probeRecorder),this.stopProbing=()=>{t.connectProbe(null)}),Bn(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(Se(this.machine))return this.machine.getDebugCategories()}getDebugInfo(t,n){return Se(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 Se(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 Se(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 Se(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 Se(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,st as b,Ye as c,it as d,Dt as e,Rt as f,En as g,gn as h,Zn as i,pn as j,Bt as k,je as l,Ot as m,Ke as n,Be as o,ft as p,ct as q,Nt as r,Ne as s,Et as t,Se 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,Mt as F,Le as G,Ie as H,Ft as I,Ut as J,Xt as K};
//# sourceMappingURL=chunk-6POV4IU3.js.map
//# sourceMappingURL=chunk-AK5O5EFA.js.map
File renamed without changes.
@@ -1,5 +1,5 @@
import{U as v,a as F,g as P,r as d,u as R,v as b}from"./chunk-V6XWGCKJ.js";function _(e){let a=e>>4&15,h=e&15,r=a?60:0;a&&(h+=1);let f=((a-1)*25-25)*(2*Math.PI/360),g=256*1.1*Math.pow(h/16,.9),p=r*Math.cos(f),O=r*Math.sin(f);var y=g+.956*p+.621*O,k=g-.272*p-.647*O,w=g-1.107*p+1.704*O;return R(b(0,255,y),b(0,255,k),b(0,255,w))}var I=0;var B=8,E=12,M=13,j=17,n=18,c=22,G=23,U=24,D=25,o=26,u=27,H=28,C=29,K=30,N=31,$=0,Z=4,q=8,x=12,J=16,z=31,L=-9,m=[0,1,2,3,7,7,7,7,8,8,8,8,4,5,6,7,0,1,2,3,7,7,7,7,8,8,8,8,4,5,6,7,0,1,6,7,5,5,5,5,8,8,8,8,2,3,4,5,0,1,6,7,5,5,5,5,8,8,8,8,2,3,4,5,4,5,6,7,3,3,3,3,8,8,8,8,0,1,2,3,4,5,6,7,3,3,3,3,8,8,8,8,0,1,2,3,4,5,6,7,3,3,3,3,8,8,8,8,0,1,2,3,4,5,6,7,3,3,3,3,8,8,8,8,0,1,2,3,2,3,4,5,7,7,7,7,8,8,8,8,0,1,6,7,2,3,4,5,7,7,7,7,8,8,8,8,0,1,6,7,2,3,4,5,7,7,7,7,8,8,8,8,0,1,6,7,2,3,4,5,7,7,7,7,8,8,8,8,0,1,6,7,2,3,4,5,7,7,7,7,8,8,8,8,0,1,6,7,2,3,4,5,7,7,7,7,8,8,8,8,0,1,6,7,2,3,4,5,7,7,7,7,8,8,8,8,0,1,6,7,2,3,4,5,7,7,7,7,8,8,8,8,0,1,6,7],V=[n+0,n+1,n+2,n+3,c+0,c+1,c+2,c+3,o,o,o,o,c+0,c+1,c+2,c+3],T=class{constructor(){this.regs=new Uint8Array(32);this.readregs=new Uint8Array(32);this.shiftregs=new Uint32Array(8);this.count=0;this.an=0;this.rgb=0;this.pmcol=0;this.gtiacol=0;this.gtiacol2=0;this.hbias=L;this.pmDebugMask=-1}reset(){this.regs.fill(0),this.readregs.fill(0),this.readregs[20]=15,this.readregs.fill(15,21),this.count=0}saveState(){return d(0,{},this)}loadState(t){d(0,this,t)}setReg(t,s){switch(t){case n:case n+1:case n+2:case n+3:case c:case c+1:case c+2:case c+3:case o:s&=254;break;case K:this.readregs.fill(0,0,16);return}this.regs[t]=s}readReg(t){switch(t){case z:return this.readregs[t]&~this.regs[N]}return this.readregs[t]}sync(){this.count=0}setBias(t){this.hbias=L+t}updateGfx(t,s,i){switch(t){case 0:this.regs[C]&1&&(this.regs[j]=i);break;case 2:case 3:case 4:case 5:this.regs[C]&2&&(!(s&1)||!(this.regs[H]&1<<t+2))&&(this.regs[M-2+t]=i);break}}getPlayfieldColor(){switch(this.regs[u]>>6){case 0:switch(this.an){case 0:return o;case 4:case 5:case 6:case 7:return c+this.an-4;case 8:return this.regs[U]&240|this.regs[G]&15|256}break;case 1:return this.regs[o]&240|this.gtiacol&15|256;case 2:return V[this.gtiacol];case 3:return this.regs[o]&15|this.gtiacol<<4|256}return 256}anySpriteActive(){return this.shiftregs[0]||this.shiftregs[1]||this.shiftregs[2]||this.shiftregs[3]||this.shiftregs[4]||this.shiftregs[5]||this.shiftregs[6]||this.shiftregs[7]}processPlayerMissile(){if(!this.anySpriteActive()){this.evalTrigger(0),this.evalTrigger(1),this.evalTrigger(2),this.evalTrigger(3),this.evalTrigger(4),this.evalTrigger(5),this.evalTrigger(6),this.evalTrigger(7),this.pmcol=-1;return}if(this.an==2){this.shiftObject(0),this.shiftObject(1),this.shiftObject(2),this.shiftObject(3),this.shiftObject(4),this.shiftObject(5),this.shiftObject(6),this.shiftObject(7),this.pmcol=-1;return}let t=(this.regs[u]&15)<<4,s=m[(this.an&7)+8+t],i=this.an-4,a=-1,h=0;for(let r=0;r<4;r++)if(this.shiftObject(r)){i>=0&&(this.readregs[Z+r]|=1<<i),h|=1<<r;let g=m[r+t];g<s&&(a=r,s=g)}for(let r=0;r<4;r++)if(this.shiftObject(r+4)){i>=0&&(this.readregs[$+r]|=1<<i),this.readregs[q+r]|=h;let g=this.regs[u]&16?m[t+15]:m[r+t];g<s&&(a=r+4,s=g)}h&1&&(this.readregs[x+0]|=h&-2),h&2&&(this.readregs[x+1]|=h&-3),h&4&&(this.readregs[x+2]|=h&-5),h&8&&(this.readregs[x+3]|=h&-9),this.pmcol=a>=0?this.getObjectColor(a):-1}shiftObject(t){let s=(this.shiftregs[t]&2147483648)!=0;return this.shiftregs[t]<<=1,this.evalTrigger(t),s}getObjectColor(t){return this.regs[u]&16&&t>=4?this.regs[D]:this.regs[n+(t&3)]}evalTrigger(t){this.regs[I+t]+this.hbias==this.count&&this.triggerObject(t)}triggerObject(t){let s,i;if(this.pmDebugMask&1<<t){if(t<4)s=this.regs[B+t]&3,i=this.regs[M+t];else{let a=t-4<<1;s=this.regs[E]>>a&3,i=(this.regs[j]>>a&3)<<6}s&1?i=A(i):i<<=8,s==3?i=A(i):i<<=16,this.shiftregs[t]|=i}}clockPulse1(){this.processPlayerMissile(),this.clockPulse2(),this.count++}clockPulse2(){var t;if(this.pmcol>=0)t=this.pmcol;else{let s=this.getPlayfieldColor();t=s&256?s&255:this.regs[s]}this.rgb=S[t],this.gtiacol2=this.gtiacol2<<1|this.an>>3}clockPulse4(){this.gtiacol=this.gtiacol2&15}static stateToLongString(t){let s="";return s+=`X: ${F(t.count,3)} ANTIC: ${P(t.an,1)} PM: ${P(t.pmcol,3)}
import{V as v,a as F,g as P,r as d,u as R,v as b}from"./chunk-TYDI7JZQ.js";function _(e){let a=e>>4&15,h=e&15,r=a?60:0;a&&(h+=1);let f=((a-1)*25-25)*(2*Math.PI/360),g=256*1.1*Math.pow(h/16,.9),p=r*Math.cos(f),O=r*Math.sin(f);var y=g+.956*p+.621*O,k=g-.272*p-.647*O,w=g-1.107*p+1.704*O;return R(b(0,255,y),b(0,255,k),b(0,255,w))}var I=0;var B=8,E=12,M=13,j=17,n=18,c=22,G=23,U=24,D=25,o=26,u=27,H=28,C=29,K=30,N=31,$=0,Z=4,q=8,x=12,J=16,z=31,L=-9,m=[0,1,2,3,7,7,7,7,8,8,8,8,4,5,6,7,0,1,2,3,7,7,7,7,8,8,8,8,4,5,6,7,0,1,6,7,5,5,5,5,8,8,8,8,2,3,4,5,0,1,6,7,5,5,5,5,8,8,8,8,2,3,4,5,4,5,6,7,3,3,3,3,8,8,8,8,0,1,2,3,4,5,6,7,3,3,3,3,8,8,8,8,0,1,2,3,4,5,6,7,3,3,3,3,8,8,8,8,0,1,2,3,4,5,6,7,3,3,3,3,8,8,8,8,0,1,2,3,2,3,4,5,7,7,7,7,8,8,8,8,0,1,6,7,2,3,4,5,7,7,7,7,8,8,8,8,0,1,6,7,2,3,4,5,7,7,7,7,8,8,8,8,0,1,6,7,2,3,4,5,7,7,7,7,8,8,8,8,0,1,6,7,2,3,4,5,7,7,7,7,8,8,8,8,0,1,6,7,2,3,4,5,7,7,7,7,8,8,8,8,0,1,6,7,2,3,4,5,7,7,7,7,8,8,8,8,0,1,6,7,2,3,4,5,7,7,7,7,8,8,8,8,0,1,6,7],V=[n+0,n+1,n+2,n+3,c+0,c+1,c+2,c+3,o,o,o,o,c+0,c+1,c+2,c+3],T=class{constructor(){this.regs=new Uint8Array(32);this.readregs=new Uint8Array(32);this.shiftregs=new Uint32Array(8);this.count=0;this.an=0;this.rgb=0;this.pmcol=0;this.gtiacol=0;this.gtiacol2=0;this.hbias=L;this.pmDebugMask=-1}reset(){this.regs.fill(0),this.readregs.fill(0),this.readregs[20]=15,this.readregs.fill(15,21),this.count=0}saveState(){return d(0,{},this)}loadState(t){d(0,this,t)}setReg(t,s){switch(t){case n:case n+1:case n+2:case n+3:case c:case c+1:case c+2:case c+3:case o:s&=254;break;case K:this.readregs.fill(0,0,16);return}this.regs[t]=s}readReg(t){switch(t){case z:return this.readregs[t]&~this.regs[N]}return this.readregs[t]}sync(){this.count=0}setBias(t){this.hbias=L+t}updateGfx(t,s,i){switch(t){case 0:this.regs[C]&1&&(this.regs[j]=i);break;case 2:case 3:case 4:case 5:this.regs[C]&2&&(!(s&1)||!(this.regs[H]&1<<t+2))&&(this.regs[M-2+t]=i);break}}getPlayfieldColor(){switch(this.regs[u]>>6){case 0:switch(this.an){case 0:return o;case 4:case 5:case 6:case 7:return c+this.an-4;case 8:return this.regs[U]&240|this.regs[G]&15|256}break;case 1:return this.regs[o]&240|this.gtiacol&15|256;case 2:return V[this.gtiacol];case 3:return this.regs[o]&15|this.gtiacol<<4|256}return 256}anySpriteActive(){return this.shiftregs[0]||this.shiftregs[1]||this.shiftregs[2]||this.shiftregs[3]||this.shiftregs[4]||this.shiftregs[5]||this.shiftregs[6]||this.shiftregs[7]}processPlayerMissile(){if(!this.anySpriteActive()){this.evalTrigger(0),this.evalTrigger(1),this.evalTrigger(2),this.evalTrigger(3),this.evalTrigger(4),this.evalTrigger(5),this.evalTrigger(6),this.evalTrigger(7),this.pmcol=-1;return}if(this.an==2){this.shiftObject(0),this.shiftObject(1),this.shiftObject(2),this.shiftObject(3),this.shiftObject(4),this.shiftObject(5),this.shiftObject(6),this.shiftObject(7),this.pmcol=-1;return}let t=(this.regs[u]&15)<<4,s=m[(this.an&7)+8+t],i=this.an-4,a=-1,h=0;for(let r=0;r<4;r++)if(this.shiftObject(r)){i>=0&&(this.readregs[Z+r]|=1<<i),h|=1<<r;let g=m[r+t];g<s&&(a=r,s=g)}for(let r=0;r<4;r++)if(this.shiftObject(r+4)){i>=0&&(this.readregs[$+r]|=1<<i),this.readregs[q+r]|=h;let g=this.regs[u]&16?m[t+15]:m[r+t];g<s&&(a=r+4,s=g)}h&1&&(this.readregs[x+0]|=h&-2),h&2&&(this.readregs[x+1]|=h&-3),h&4&&(this.readregs[x+2]|=h&-5),h&8&&(this.readregs[x+3]|=h&-9),this.pmcol=a>=0?this.getObjectColor(a):-1}shiftObject(t){let s=(this.shiftregs[t]&2147483648)!=0;return this.shiftregs[t]<<=1,this.evalTrigger(t),s}getObjectColor(t){return this.regs[u]&16&&t>=4?this.regs[D]:this.regs[n+(t&3)]}evalTrigger(t){this.regs[I+t]+this.hbias==this.count&&this.triggerObject(t)}triggerObject(t){let s,i;if(this.pmDebugMask&1<<t){if(t<4)s=this.regs[B+t]&3,i=this.regs[M+t];else{let a=t-4<<1;s=this.regs[E]>>a&3,i=(this.regs[j]>>a&3)<<6}s&1?i=A(i):i<<=8,s==3?i=A(i):i<<=16,this.shiftregs[t]|=i}}clockPulse1(){this.processPlayerMissile(),this.clockPulse2(),this.count++}clockPulse2(){var t;if(this.pmcol>=0)t=this.pmcol;else{let s=this.getPlayfieldColor();t=s&256?s&255:this.regs[s]}this.rgb=S[t],this.gtiacol2=this.gtiacol2<<1|this.an>>3}clockPulse4(){this.gtiacol=this.gtiacol2&15}static stateToLongString(t){let s="";return s+=`X: ${F(t.count,3)} ANTIC: ${P(t.an,1)} PM: ${P(t.pmcol,3)}
`,s+=`Write Registers:
`,s+=v(t.regs,0,32),s+=`Read Registers:
`,s+=v(t.readregs,0,32),s}};function A(e){return e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,e|e<<1}var S=new Uint32Array(256);for(l=0;l<256;l++)S[l]=_(l);var l;export{_ as a,J as b,z as c,T as d};
//# sourceMappingURL=chunk-NWVP3WPZ.js.map
//# sourceMappingURL=chunk-DYRHT6BM.js.map
File renamed without changes.
@@ -1,2 +1,2 @@
import{c as A,g as s}from"./chunk-V6XWGCKJ.js";var C=!1,P=[[{N:0},{N:1}],[{N:1},{N:0}],[{V:0},{V:1}],[{V:1},{V:0}],[{C:0},{C:1}],[{C:1},{C:0}],[{Z:0},{Z:1}],[{Z:1},{Z:0}]];function L(l,e){if(l==null||e==null)return null;for(var t in l)if(e[t]!=="undefined")return l[t]==e[t];for(var t in e)if(l[t]!=="undefined")return l[t]==e[t];return null}var m=class{constructor(e){this.pc2clockrange={};this.jsrresult={};this.MAX_CYCLES=2e3;this.platform=e}getClockCountsAtPC(e){var t=this.platform.readAddress(e),r=this.platform.getOpcodeMetadata(t,e);return r}traceInstructions(e,t,r,i,u){C&&console.log("trace",s(e),t,r),u||(u={});var f=!0,S=!1;for(let d=0;f&&!S;d++){if(d>=this.MAX_CYCLES){console.log("too many cycles @",s(e),"routine",s(i));break}f=!1,this.WRAP_CLOCKS?(t=t%this.MAX_CLOCKS,r=r%this.MAX_CLOCKS,r==t-1&&(C&&console.log("0-75",s(e),t,r),t=0,r=this.MAX_CLOCKS-1)):(t=Math.min(this.MAX_CLOCKS,t),r=Math.min(this.MAX_CLOCKS,r));let a=this.getClockCountsAtPC(e),g=this.platform.readAddress(e+1),M=this.platform.readAddress(e+2),x=g+(M<<8),c=e,o=this.pc2clockrange[c];if(o==null&&(this.pc2clockrange[c]=o={minclocks:t,maxclocks:r},C&&console.log("new",s(e),s(c),s(i),t,r),f=!0),(o.minclocks!=t||o.maxclocks!=r)&&(this.WRAP_CLOCKS&&t<=r!=o.minclocks<=o.maxclocks&&(C&&console.log("wrap",s(e),s(c),s(i),t,r,o),o.minclocks=t=0,o.maxclocks=r=this.MAX_CLOCKS-1,f=!0),t<o.minclocks&&(C&&console.log("min",s(e),s(c),s(i),t,r,o),o.minclocks=t,f=!0),r>o.maxclocks&&(C&&console.log("max",s(e),s(c),s(i),t,r,o),o.maxclocks=r,f=!0)),!a.insnlength){console.log("Illegal instruction!",s(e),s(a.opcode),a);break}e+=a.insnlength;var b=u;u=null;let O=this.getMaxCyclesForSync(a,g,M);if(typeof O=="number")t=0,r=O,a.minCycles=a.maxCycles=0;else switch(a.opcode){case 25:case 29:case 57:case 61:case 89:case 93:case 121:case 125:case 185:case 187:case 188:case 189:case 190:case 191:case 217:case 221:case 249:case 253:g==0&&(a.maxCycles-=1);break;case 32:t+=a.minCycles,r+=a.maxCycles,this.traceInstructions(x,t,r,x,u);var n=this.jsrresult[x];n?(t=n.minclocks,r=n.maxclocks):(console.log("No JSR result!",s(e),s(x)),t=r);break;case 76:e=x;break;case 64:S=!0;break;case 96:if(i){var n=this.jsrresult[i];n?n={minclocks:Math.min(t,n.minclocks),maxclocks:Math.max(r,n.maxclocks)}:n={minclocks:t,maxclocks:r},this.jsrresult[i]=n,console.log("RTS",s(e),s(i),this.jsrresult[i])}return;case 16:case 48:case 80:case 112:case 144:case 176:case 208:case 240:var y=e+A(g),p=e>>8!=y>>8;p||a.maxCycles--;var h=P[Math.floor((a.opcode-16)/32)],T=L(b,h[0]),R=L(b,h[1]);this.traceInstructions(y,t+a.maxCycles,r+a.maxCycles,i,h[0]),R===!1&&(console.log("branch always taken",s(e),b,h[1]),S=!0),u=h[1],a.maxCycles=a.minCycles;break;case 108:console.log("Instruction not supported!",s(e),s(a.opcode),a);return}C&&console.log("add",s(e),a.minCycles,a.maxCycles),t+=a.minCycles,r+=a.maxCycles}}showLoopTimingForPC(e){this.pc2clockrange={},this.jsrresult={},this.traceInstructions(e|this.platform.getOriginPC(),this.START_CLOCKS,this.MAX_CLOCKS,0,{})}getMaxCyclesForSync(e,t,r){}},K=class extends m{constructor(e){super(e),this.MAX_CLOCKS=76,this.START_CLOCKS=0,this.WRAP_CLOCKS=!0}getMaxCyclesForSync(e,t,r){if(e.opcode==133&&t==2)return 0}},_=class extends m{constructor(e){super(e),this.MAX_CLOCKS=114,this.START_CLOCKS=0,this.WRAP_CLOCKS=!0}getMaxCyclesForSync(e,t,r){if(e.opcode==44&&t==2&&r==32)return 4}};export{K as a,_ as b};
//# sourceMappingURL=chunk-H325USEJ.js.map
import{c as A,g as s}from"./chunk-TYDI7JZQ.js";var C=!1,P=[[{N:0},{N:1}],[{N:1},{N:0}],[{V:0},{V:1}],[{V:1},{V:0}],[{C:0},{C:1}],[{C:1},{C:0}],[{Z:0},{Z:1}],[{Z:1},{Z:0}]];function L(l,e){if(l==null||e==null)return null;for(var t in l)if(e[t]!=="undefined")return l[t]==e[t];for(var t in e)if(l[t]!=="undefined")return l[t]==e[t];return null}var m=class{constructor(e){this.pc2clockrange={};this.jsrresult={};this.MAX_CYCLES=2e3;this.platform=e}getClockCountsAtPC(e){var t=this.platform.readAddress(e),r=this.platform.getOpcodeMetadata(t,e);return r}traceInstructions(e,t,r,i,u){C&&console.log("trace",s(e),t,r),u||(u={});var f=!0,S=!1;for(let d=0;f&&!S;d++){if(d>=this.MAX_CYCLES){console.log("too many cycles @",s(e),"routine",s(i));break}f=!1,this.WRAP_CLOCKS?(t=t%this.MAX_CLOCKS,r=r%this.MAX_CLOCKS,r==t-1&&(C&&console.log("0-75",s(e),t,r),t=0,r=this.MAX_CLOCKS-1)):(t=Math.min(this.MAX_CLOCKS,t),r=Math.min(this.MAX_CLOCKS,r));let a=this.getClockCountsAtPC(e),g=this.platform.readAddress(e+1),M=this.platform.readAddress(e+2),x=g+(M<<8),c=e,o=this.pc2clockrange[c];if(o==null&&(this.pc2clockrange[c]=o={minclocks:t,maxclocks:r},C&&console.log("new",s(e),s(c),s(i),t,r),f=!0),(o.minclocks!=t||o.maxclocks!=r)&&(this.WRAP_CLOCKS&&t<=r!=o.minclocks<=o.maxclocks&&(C&&console.log("wrap",s(e),s(c),s(i),t,r,o),o.minclocks=t=0,o.maxclocks=r=this.MAX_CLOCKS-1,f=!0),t<o.minclocks&&(C&&console.log("min",s(e),s(c),s(i),t,r,o),o.minclocks=t,f=!0),r>o.maxclocks&&(C&&console.log("max",s(e),s(c),s(i),t,r,o),o.maxclocks=r,f=!0)),!a.insnlength){console.log("Illegal instruction!",s(e),s(a.opcode),a);break}e+=a.insnlength;var b=u;u=null;let O=this.getMaxCyclesForSync(a,g,M);if(typeof O=="number")t=0,r=O,a.minCycles=a.maxCycles=0;else switch(a.opcode){case 25:case 29:case 57:case 61:case 89:case 93:case 121:case 125:case 185:case 187:case 188:case 189:case 190:case 191:case 217:case 221:case 249:case 253:g==0&&(a.maxCycles-=1);break;case 32:t+=a.minCycles,r+=a.maxCycles,this.traceInstructions(x,t,r,x,u);var n=this.jsrresult[x];n?(t=n.minclocks,r=n.maxclocks):(console.log("No JSR result!",s(e),s(x)),t=r);break;case 76:e=x;break;case 64:S=!0;break;case 96:if(i){var n=this.jsrresult[i];n?n={minclocks:Math.min(t,n.minclocks),maxclocks:Math.max(r,n.maxclocks)}:n={minclocks:t,maxclocks:r},this.jsrresult[i]=n,console.log("RTS",s(e),s(i),this.jsrresult[i])}return;case 16:case 48:case 80:case 112:case 144:case 176:case 208:case 240:var y=e+A(g),p=e>>8!=y>>8;p||a.maxCycles--;var h=P[Math.floor((a.opcode-16)/32)],T=L(b,h[0]),R=L(b,h[1]);this.traceInstructions(y,t+a.maxCycles,r+a.maxCycles,i,h[0]),R===!1&&(console.log("branch always taken",s(e),b,h[1]),S=!0),u=h[1],a.maxCycles=a.minCycles;break;case 108:console.log("Instruction not supported!",s(e),s(a.opcode),a);return}C&&console.log("add",s(e),a.minCycles,a.maxCycles),t+=a.minCycles,r+=a.maxCycles}}showLoopTimingForPC(e){this.pc2clockrange={},this.jsrresult={},this.traceInstructions(e|this.platform.getOriginPC(),this.START_CLOCKS,this.MAX_CLOCKS,0,{})}getMaxCyclesForSync(e,t,r){}},K=class extends m{constructor(e){super(e),this.MAX_CLOCKS=76,this.START_CLOCKS=0,this.WRAP_CLOCKS=!0}getMaxCyclesForSync(e,t,r){if(e.opcode==133&&t==2)return 0}},_=class extends m{constructor(e){super(e),this.MAX_CLOCKS=114,this.START_CLOCKS=0,this.WRAP_CLOCKS=!0}getMaxCyclesForSync(e,t,r){if(e.opcode==44&&t==2&&r==32)return 4}};export{K as a,_ as b};
//# sourceMappingURL=chunk-JX2MTUGT.js.map
File renamed without changes.
@@ -1,4 +1,4 @@
import{B as w,a as b,b as v,z as P}from"./chunk-6POV4IU3.js";import{O as S,R as p,T as C}from"./chunk-V6XWGCKJ.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-AK5O5EFA.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-MOWDEMRA.js.map
//# sourceMappingURL=chunk-R5TBCA3S.js.map
File renamed without changes.
-7
View File
@@ -1,7 +0,0 @@
{
"version": 3,
"sources": ["../node_modules/localforage/dist/localforage.js", "../node_modules/jquery/dist/jquery.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/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/pixeleditor.ts", "../src/ide/views/baseviews.ts", "../src/ide/views/asseteditor.ts", "../src/common/vtextscroller.ts", "../src/ide/views/debugviews.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/@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", "../node_modules/@codemirror/search/dist/index.js", "../src/parser/tokens-6502.ts", "parser/lang-6502.grammar.js", "../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/tokens-z80.ts", "parser/lang-z80.grammar.js", "../src/parser/lang-z80.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/filters.ts", "../src/ide/views/gutter.ts", "../src/ide/views/visuals.ts", "../src/ide/views/editors.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", "require_jquery", "__commonJSMin", "exports", "module", "global", "factory", "w", "window", "noGlobal", "arr", "getProto", "slice", "flat", "array", "push", "indexOf", "class2type", "toString", "hasOwn", "fnToString", "ObjectFunctionString", "support", "isFunction", "obj", "isWindow", "document", "preservedScriptAttributes", "DOMEval", "code", "node", "doc", "i", "val", "script", "toType", "version", "rhtmlSuffix", "jQuery", "selector", "context", "num", "elems", "ret", "callback",Line truncated
}
@@ -1,2 +1,2 @@
import{L as b,M as w}from"./chunk-V6XWGCKJ.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-5UMAV7SY.js");case"arm32"Line truncated
//# sourceMappingURL=chunk-DGIZH2KV.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-LEKFTCGX.js");case"arm32"Line truncated
//# sourceMappingURL=chunk-TDMLOI3F.js.map
File renamed without changes.
@@ -1,6 +1,6 @@
function j(e,t){for(e+="";e.length<t;)e=" "+e;return e}function J(e,t){for(e+="";e.length<t;)e+=" ";return e}function ee(e){return e&=255,e<128?e:-(256-e)}function te(e){var t=e.split("/");return t[t.length-1]}function ne(e){return e.substring(0,e.lastIndexOf("/"))}function re(e){var t=e.lastIndexOf(".");return t>0?e.substr(0,t):e}function K(e,t){return t||(t=2),t==8?K(e>>16&65535,4)+K(e&65535,4):w(e,t,16)}function ie(e,t){return t||(t=8),w(e,t,2)}function w(e,t,n){try{for(var i=e.toString(n).toUpperCase();i.length<t;)i="0"+i;return i}catch(r){return e+""}}function ae(e,t){if(e==null&&t==null)return!0;if(e==null||t==null||typeof e.length!="number"||typeof t.length!="number"||e.length!=t.length)return!1;for(var n=0;n<e.length;n++)if(e[n]!=t[n])return!1;return!0}function oe(e){var t={};if(e)for(var n in e)t[e[n]]=n;return t}function se(e,t){for(var n=e.split(/(\S+\s+)/).filter(function(l){return l}),i=t.split(/(\S+\s+)/).filter(function(l){return l}),r=0,o=0,a="";r<n.length&&o<i.length;){var s=n[r],u=i[o];if(u&&u.indexOf(`
function j(e,t){for(e+="";e.length<t;)e=" "+e;return e}function J(e,t){for(e+="";e.length<t;)e+=" ";return e}function ee(e){return e&=255,e<128?e:-(256-e)}function te(e){var t=e.split("/");return t[t.length-1]}function ne(e){return e.substring(0,e.lastIndexOf("/"))}function re(e){var t=e.lastIndexOf(".");return t>0?e.substr(0,t):e}function K(e,t){return t||(t=2),t==8?K(e>>16&65535,4)+K(e&65535,4):S(e,t,16)}function ie(e,t){return t||(t=8),S(e,t,2)}function S(e,t,n){try{for(var i=e.toString(n).toUpperCase();i.length<t;)i="0"+i;return i}catch(r){return e+""}}function ae(e,t){if(e==null&&t==null)return!0;if(e==null||t==null||typeof e.length!="number"||typeof t.length!="number"||e.length!=t.length)return!1;for(var n=0;n<e.length;n++)if(e[n]!=t[n])return!1;return!0}function oe(e){var t={};if(e)for(var n in e)t[e[n]]=n;return t}function se(e,t){for(var n=e.split(/(\S+\s+)/).filter(function(l){return l}),i=t.split(/(\S+\s+)/).filter(function(l){return l}),r=0,o=0,a="";r<n.length&&o<i.length;){var s=n[r],u=i[o];if(u&&u.indexOf(`
`)>=0)for(;r<e.length&&n[r].indexOf(`
`)<0;)r++;s!=u&&(u='<span class="hilite">'+u+"</span>"),a+=u,r++,o++}for(;o<i.length;)a+=i[o++];return a}function ue(){var e=16,t=0,n=1,i=[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,35,48,72,128],r=null,o=function(a){for(var s=1,u=0,l=e;l<a.length;)s=s+(a[l]&255)&65535,u=u+s&65535,l++;return u<<16|s};this.decode=function(a){if(r=null,a.length<e||a[0]!=76||a[1]!=90||a[2]!=71)return null;var s=a[6]|a[5]<<8|a[4]<<16|a[3]<<24,u=(a[11]&255)<<24|(a[12]&255)<<16|(a[13]&255)<<8|a[14]&255;if(o(a)!=u)return null;var l=new Array,c=a[15]&255;if(c==n)for(var v=a[16]&255,g=a[17]&255,m=a[18]&255,V=a[19]&255,h,p,A,S,_,d,y=0,b=e+4,L=a.length;b<=L;)if(h=a[b++]&255,h!=v&&h!=g&&h!=m&&h!=V)l[y++]=h;else if(p=a[b++]&255,p!=0)for(h==v?(_=i[p&31],A=a[b++]&255,S=a[b++]&255,d=((p&224)<<11|A<<8|S)+2056):h==g?(_=i[p&31],A=a[b++]&255,d=((p&224)<<3|A)+8):h==m?(_=(p>>6)+3,d=(p&63)+8):(_=i[p&31],d=(p>>5)+1),x=0;x<_;x++)l[y]=l[y-d],y++;else l[y++]=h;else if(c==t)for(var y=0,L=a.length,x=e;x<L;x++)l[y++]=a[x]&255;else return null;return l.length<s?null:(r=l.slice(0,s),r)},this.getByteArray=function(){return r},this.getStringLatin1=function(){return I(r)},this.getStringUTF8=function(){return G(r)}}function O(e){for(var t=new Uint8Array(e.length),n=0;n<e.length;n++)t[n]=e.charCodeAt(n);return t}function I(e){var t="";if(e!=null){for(var n=new Array,i=0;i<256;++i)n[i]=String.fromCharCode(i);for(var r=e.length,i=0;i<r;i++)t+=n[e[i]]}return t}function G(e){for(var t="",n=new Array,i=0;i<128;++i)n[i]=String.fromCharCode(i);for(var r,o=e.length,i=0;i<o;)if(r=e[i++],r<128)t+=n[r];else{if(r>=192&&r<224)r=(r&31)<<6|e[i++]&63;else if(r=(r&15)<<12|(e[i]&63)<<6|e[i+1]&63,i+=2,r==65279)continue;t+=String.fromCharCode(r)}return t}function le(e,t){var n=0;if(e){e=e.toUpperCase();let a=[".CHR",".BIN",".DAT",".PAL",".NAM",".RLE",".LZ4",".NSF"];for(var i of a)e.endsWith(i)&&n++}for(var r=0;r<(t?t.length:0);){let a=t[r++];if((a&128)==0){if(a<9||a>=14&&a<26||a==127){n++;break}}else{var o=0;for((a&224)==192?o=1:(a&240)==224?o=2:(a&248)==240?o=3:(a<160||a==255)&&n++;o--;)if(r>=t.length||(t[r++]&192)!=128){n++;break}}}return n>0}function fe(e,t,n){for(var i=n||9,r=t.length,o=e._malloc(r+1),a=0;a<r;a++)e.setValue(o+a,t[a],"i8");var s=e._LZG_MaxEncodedSize(r),u=e._malloc(s+1),l=e.ccall("compress_lzg","number",["number","number","number","number","number"],[i,o,r,s,u]);e._free(o);for(var c=new Uint8Array(l),a=0;a<l;a++)c[a]=e.getValue(u+a,"i8");return e._free(u),c}function ce(e,t,n){for(var i in n){var r=n[i],o=typeof r;r===null||o=="undefined"?t[i]=r:o=="function"||(o=="object"?r.slice&&(t[i]=r.slice()):t[i]=r)}return t}function he(e,t,n){for(var i="",r=0;r<t.length;r++)if(t[r]){var o=1<<(n?t.length-1-r:r);r>0&&(i+=" "),i+=e&o?t[r]:"-"}return i}function pe(e){return(e&255)<<16|e>>16&255|e&65280}function ge(e,t,n){return e&255|(t&255)<<8|(n&255)<<16|4278190080}function M(e,t,n){return n<e?e:n>t?t:n}function me(e){return e.length==0?"":(e.match(/^[a-zA-Z_]/)||(e="_"+e),e.replace(/\W+/g,"_"))}function ye(e){for(var t=0,n=e[t++],i=[],r=n;t<e.length;){var o=e[t++];if(o==n){for(var a=e[t++],s=0;s<a;s++)i.push(r);if(a==0)break}else r=o,i.push(r)}return new Uint8Array(i)}function ve(e,t,n){var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType=n,i.onload=function(r){if(i.status==200){var o=i.response;o instanceof ArrayBuffer&&(o=new Uint8Array(o)),t(o)}else if(i.status==404)t(null);else throw Error("Error "+i.status+" loading "+e)},i.onerror=function(r){t(null)},i.ontimeout=function(r){throw Error("Timeout loading "+e)},i.send(null)}function B(e){return e.split(".")[0]}function H(e){return e.split("-")[0]}function be(e){return H(B(e))}function xe(e){return e!=null&&(Array.isArray(e)||k(e))}function k(e){return e!=null&&e.BYTES_PER_ELEMENT}function _e(e){return typeof e=="string"?O(e):e}function de(e){return e<32?String.fromCharCode(e+9216):String.fromCharCode(e)}function Ke(e){return new Promise((t,n)=>{var i=document.createElement("script");i.onload=t,i.onerror=n,i.src=e,document.getElementsByTagName("head")[0].appendChild(i)})}function Ae(e){e.startsWith("?")&&(e=e.substr(1));var t=e.split("&");if(!t||t.length==0)return{};for(var n={},i=0;i<t.length;++i){var r=t[i].split("=",2);r.length==1?n[r[0]]="":n[r[0]]=decodeURIComponent(r[1].replace(/\+/g," "))}return n}function Ee(e){return!e||e=="false"||e=="0"?!1:e=="true"||e=="1"?!0:!!e}function Ve(e,t,n){return e==""?"":t==""?e:e.split(t).join(n)}function Le(e){for(var t=e+"=",n=document.cookie.split(";"),i=0;i<n.length;i++){for(var r=n[i];r.charAt(0)==" ";)r=r.substring(1,r.length);if(r.indexOf(t)==0)return r.substring(t.length,r.length)}return null}var Pe={},E=1;function Se(){let e=E;return e^=e<<13,e^=e>>17,e^=e<<5,(E=e)&255}function we(){return E}function De(e){E=e}function W(e,t,n,i){var r=e.createElement("canvas");return r.width=n,r.height=i,r.classList.add("emuvideo"),r.tabIndex=0,t.appendChild(r),r}function D(e){return e.key!=null&&e.key.length==1?e.key.charCodeAt(0):e.keyCode}func Line truncated
`}return i}var f={ANYKEY:{c:0,n:"?"},UP:{c:38,n:"Up",plyr:0,button:12,yaxis:-1},DOWN:{c:40,n:"Down",plyr:0,button:13,yaxis:1},LEFT:{c:37,n:"Left",plyr:0,button:14,xaxis:-1},RIGHT:{c:39,n:"Right",plyr:0,button:15,xaxis:1},A:{c:32,n:"Space",plyr:0,button:0},B:{c:16,n:"Shift",plyr:0,button:1},GP_A:{c:88,n:"X",plyr:0,button:0},GP_B:{c:90,n:"Z",plyr:0,button:1},GP_C:{c:86,n:"V",plyr:0,button:2},GP_D:{c:67,n:"C",plyr:0,button:3},SELECT:{c:220,n:"\\",plyr:0,button:8},START:{c:13,n:"Enter",plyr:0,button:9},OPTION:{c:8,n:"Bcksp",plyr:0,button:10},P2_UP:{c:87,n:"W",plyr:1,button:12,yaxis:-1},P2_DOWN:{c:83,n:"S",plyr:1,button:13,yaxis:1},P2_LEFT:{c:65,n:"A",plyr:1,button:14,xaxis:-1},P2_RIGHT:{c:68,n:"D",plyr:1,button:15,xaxis:1},P2_A:{c:84,n:"T",plyr:1,button:0},P2_B:{c:82,n:"R",plyr:1,button:1},P2_GP_A:{c:69,n:"E",plyr:1,button:0},P2_GP_B:{c:82,n:"R",plyr:1,button:1},P2_GP_C:{c:84,n:"T",plyr:1,button:2},P2_GP_D:{c:89,n:"Y",plyr:1,button:3},P2_SELECT:{c:70,n:"F",plyr:1,button:8},P2_START:{c:71,n:"G",plyr:1,button:9},VK_ESCAPE:{c:27,n:"Esc"},VK_F1:{c:112,n:"F1"},VK_F2:{c:113,n:"F2"},VK_F3:{c:114,n:"F3"},VK_F4:{c:115,n:"F4"},VK_F5:{c:116,n:"F5"},VK_F6:{c:117,n:"F6"},VK_F7:{c:118,n:"F7"},VK_F8:{c:119,n:"F8"},VK_F9:{c:120,n:"F9"},VK_F10:{c:121,n:"F10"},VK_F11:{c:122,n:"F11"},VK_F12:{c:123,n:"F12"},VK_SCROLL_LOCK:{c:145,n:"ScrLck"},VK_PAUSE:{c:19,n:"Pause"},VK_QUOTE:{c:222,n:"'"},VK_1:{c:49,n:"1"},VK_2:{c:50,n:"2"},VK_3:{c:51,n:"3"},VK_4:{c:52,n:"4"},VK_5:{c:53,n:"5"},VK_6:{c:54,n:"6"},VK_7:{c:55,n:"7"},VK_8:{c:56,n:"8"},VK_9:{c:57,n:"9"},VK_0:{c:48,n:"0"},VK_MINUS:{c:189,n:"-"},VK_MINUS2:{c:173,n:"-"},VK_EQUALS:{c:187,n:"="},VK_EQUALS2:{c:61,n:"="},VK_BACK_SPACE:{c:8,n:"Bkspc"},VK_TAB:{c:9,n:"Tab"},VK_Q:{c:81,n:"Q"},VK_W:{c:87,n:"W"},VK_E:{c:69,n:"E"},VK_R:{c:82,n:"R"},VK_T:{c:84,n:"T"},VK_Y:{c:89,n:"Y"},VK_U:{c:85,n:"U"},VK_I:{c:73,n:"I"},VK_O:{c:79,n:"O"},VK_P:{c:80,n:"P"},VK_ACUTE:{c:219,n:"\xB4"},VK_OPEN_BRACKET:{c:219,n:"["},VK_CLOSE_BRACKET:{c:221,n:"]"},VK_CAPS_LOCK:{c:20,n:"CpsLck"},VK_A:{c:65,n:"A"},VK_S:{c:83,n:"S"},VK_D:{c:68,n:"D"},VK_F:{c:70,n:"F"},VK_G:{c:71,n:"G"},VK_H:{c:72,n:"H"},VK_J:{c:74,n:"J"},VK_K:{c:75,n:"K"},VK_L:{c:76,n:"L"},VK_CEDILLA:{c:186,n:"\xC7"},VK_TILDE:{c:222,n:"~"},VK_ENTER:{c:13,n:"Enter"},VK_SHIFT:{c:16,n:"Shift"},VK_BACK_SLASH:{c:220,n:"\\"},VK_Z:{c:90,n:"Z"},VK_X:{c:88,n:"X"},VK_C:{c:67,n:"C"},VK_V:{c:86,n:"V"},VK_B:{c:66,n:"B"},VK_N:{c:78,n:"N"},VK_M:{c:77,n:"M"},VK_COMMA:{c:188,n:"] ="},VK_PERIOD:{c:190,n:"."},VK_SEMICOLON:{c:59,n:";"},VK_SLASH:{c:191,n:"/"},VK_CONTROL:{c:17,n:"Ctrl"},VK_ALT:{c:18,n:"Alt"},VK_COMMAND:{c:224,n:"Cmd"},VK_SPACE:{c:32,n:"Space"},VK_INSERT:{c:45,n:"Ins"},VK_DELETE:{c:46,n:"Del"},VK_HOME:{c:36,n:"Home"},VK_END:{c:35,n:"End"},VK_PAGE_UP:{c:33,n:"PgUp"},VK_PAGE_DOWN:{c:34,n:"PgDown"},VK_UP:{c:38,n:"Up"},VK_DOWN:{c:40,n:"Down"},VK_LEFT:{c:37,n:"Left"},VK_RIGHT:{c:39,n:"Right"},VK_NUM_LOCK:{c:144,n:"Num"},VK_DIVIDE:{c:111,n:"Num /"},VK_MULTIPLY:{c:106,n:"Num *"},VK_SUBTRACT:{c:109,n:"Num -"},VK_ADD:{c:107,n:"Num +"},VK_DECIMAL:{c:194,n:"Num ."},VK_NUMPAD0:{c:96,n:"Num 0"},VK_NUMPAD1:{c:97,n:"Num 1"},VK_NUMPAD2:{c:98,n:"Num 2"},VK_NUMPAD3:{c:99,n:"Num 3"},VK_NUMPAD4:{c:100,n:"Num 4"},VK_NUMPAD5:{c:101,n:"Num 5"},VK_NUMPAD6:{c:102,n:"Num 6"},VK_NUMPAD7:{c:103,n:"Num 7"},VK_NUMPAD8:{c:104,n:"Num 8"},VK_NUMPAD9:{c:105,n:"Num 9"},VK_NUMPAD_CENTER:{c:12,n:"Num Cntr"}};function R(e){return(e.shiftKey?2:0)|(e.ctrlKey?4:0)|(e.altKey?8:0)|(e.metaKey?16:0)}function Y(e,t,n,i){return(r,o,a)=>{if(!t){n(null,r,o,a);return}var s=t[r];if(s||(s=t[0]),n&&(s||i)&&n(s,r,o,a),s){var u=s.mask;u<0&&(u=-u,a&65&&(a^=65)),a&1?e[s.index]|=u:a&64&&(e[s.index]&=~u)}}}function Ne(e,t,n,i,r){var o=Y(t,n,i,r);return e.setKeyboardEvents(o),new P(o)}function Re(e){for(var t=new Map,n=0;n<e.length;n++){var i=e[n],r={index:i[1],mask:i[2],def:i[0]};t[i[0].c]=r}return t}var z=[f.UP,f.DOWN,f.LEFT,f.RIGHT,f.A,f.B,f.SELECT,f.START,f.GP_A,f.GP_B,f.GP_C,f.GP_D,f.OPTION,f.P2_UP,f.P2_DOWN,f.P2_LEFT,f.P2_RIGHT,f.P2_A,f.P2_B,f.P2_SELECT,f.P2_START,f.P2_GP_A,f.P2_GP_D],P=class{constructor(t){this.active=!1;this.AXIS0=24;this.handler=t,window.addEventListener("gamepadconnected",n=>{console.log("Gamepad connected:",n),this.reset()}),window.addEventListener("gamepaddisconnected",n=>{console.log("Gamepad disconnected:",n),this.reset()})}reset(){var n,i;if(typeof navigator.getGamepads=="function"){let r=(n=navigator.getGamepads())==null?void 0:n.length;this.state=new Array(r),this.lastState=new Array(r);for(var t=0;t<r;t++)this.state[t]=new Int32Array(64),this.lastState[t]=new Int32Array(64);this.active=((i=this.state)==null?void 0:i.length)>0}}start(){this.reset()}stop(){this.active=!1}poll(){if(this.active)for(var t=navigator.getGamepads&&navigator.getGamepads(),n=0;n<t.length;n++){let a=this.state[n],s=this.lastState[n];var i=t[n];if(i){for(var r=0;r<i.axes.length;r++){var o=r+this.AXIS0;a[o]=Math.round(i.axes[r]),a[o]!=s[o]&&this.handleStateChange(n,o)}for(var r=0;r<i.buttons.length;r++)a[r]=i.buttons[r] Line truncated
`}return r+="return "+((t==null?void 0:t.defaultval)|0)+";",new Function("a","v",r)}return i().bind(n)}function Ie(e,t){return new Q(e,t)}function q(e,t){var i=e.getBoundingClientRect(),r=window.getComputedStyle(e),o=parseFloat(r.borderLeftWidth)+parseFloat(r.paddingLeft),a=parseFloat(r.borderRightWidth)+parseFloat(r.paddingRight),s=parseFloat(r.borderTopWidth)+parseFloat(r.paddingTop),u=parseFloat(r.borderBottomWidth)+parseFloat(r.paddingBottom),l=i.width-o-a,c=i.height-s-u,v=e.width/Math.floor(l-2*.5),g=e.height/Math.floor(c-2*.5),m=(t.clientX-.5-i.left-o)*v,V=(t.clientY-.5-i.top-s)*g;return{x:Math.max(0,Math.min(e.width,m)),y:Math.max(0,Math.min(e.height,V))}}export{j as a,J as b,ee as c,te as d,ne as e,re as f,K as g,ie as h,ae as i,oe as j,se as k,ue as l,O as m,I as n,G as o,le as p,fe as q,ce as r,he as s,pe as t,ge as u,M as v,me as w,ye as x,ve as y,B as z,be as A,xe as B,_e as C,de as D,Ke as E,Ae as F,Ee as G,Ve as H,Le as I,Pe as J,Se as K,we as L,De as M,W as N,C as O,F as P,Fe as Q,T as R,U as S,N as T,Ue as U,f as V,Y as W,Ne as X,Re as Y,P as Z,Oe as _,Ie as $,q as aa};
//# sourceMappingURL=chunk-V6XWGCKJ.js.map
`)<0;)r++;s!=u&&(u='<span class="hilite">'+u+"</span>"),a+=u,r++,o++}for(;o<i.length;)a+=i[o++];return a}function ue(){var e=16,t=0,n=1,i=[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,35,48,72,128],r=null,o=function(a){for(var s=1,u=0,l=e;l<a.length;)s=s+(a[l]&255)&65535,u=u+s&65535,l++;return u<<16|s};this.decode=function(a){if(r=null,a.length<e||a[0]!=76||a[1]!=90||a[2]!=71)return null;var s=a[6]|a[5]<<8|a[4]<<16|a[3]<<24,u=(a[11]&255)<<24|(a[12]&255)<<16|(a[13]&255)<<8|a[14]&255;if(o(a)!=u)return null;var l=new Array,c=a[15]&255;if(c==n)for(var v=a[16]&255,g=a[17]&255,m=a[18]&255,V=a[19]&255,h,p,A,P,x,_,y=0,b=e+4,L=a.length;b<=L;)if(h=a[b++]&255,h!=v&&h!=g&&h!=m&&h!=V)l[y++]=h;else if(p=a[b++]&255,p!=0)for(h==v?(x=i[p&31],A=a[b++]&255,P=a[b++]&255,_=((p&224)<<11|A<<8|P)+2056):h==g?(x=i[p&31],A=a[b++]&255,_=((p&224)<<3|A)+8):h==m?(x=(p>>6)+3,_=(p&63)+8):(x=i[p&31],_=(p>>5)+1),d=0;d<x;d++)l[y]=l[y-_],y++;else l[y++]=h;else if(c==t)for(var y=0,L=a.length,d=e;d<L;d++)l[y++]=a[d]&255;else return null;return l.length<s?null:(r=l.slice(0,s),r)},this.getByteArray=function(){return r},this.getStringLatin1=function(){return I(r)},this.getStringUTF8=function(){return G(r)}}function O(e){for(var t=new Uint8Array(e.length),n=0;n<e.length;n++)t[n]=e.charCodeAt(n);return t}function I(e){var t="";if(e!=null){for(var n=new Array,i=0;i<256;++i)n[i]=String.fromCharCode(i);for(var r=e.length,i=0;i<r;i++)t+=n[e[i]]}return t}function G(e){for(var t="",n=new Array,i=0;i<128;++i)n[i]=String.fromCharCode(i);for(var r,o=e.length,i=0;i<o;)if(r=e[i++],r<128)t+=n[r];else{if(r>=192&&r<224)r=(r&31)<<6|e[i++]&63;else if(r=(r&15)<<12|(e[i]&63)<<6|e[i+1]&63,i+=2,r==65279)continue;t+=String.fromCharCode(r)}return t}function le(e,t){var n=0;if(e){e=e.toUpperCase();let a=[".CHR",".BIN",".DAT",".PAL",".NAM",".RLE",".LZ4",".NSF"];for(var i of a)e.endsWith(i)&&n++}for(var r=0;r<(t?t.length:0);){let a=t[r++];if((a&128)==0){if(a<9||a>=14&&a<26||a==127){n++;break}}else{var o=0;for((a&224)==192?o=1:(a&240)==224?o=2:(a&248)==240?o=3:(a<160||a==255)&&n++;o--;)if(r>=t.length||(t[r++]&192)!=128){n++;break}}}return n>0}function fe(e,t,n){for(var i=n||9,r=t.length,o=e._malloc(r+1),a=0;a<r;a++)e.setValue(o+a,t[a],"i8");var s=e._LZG_MaxEncodedSize(r),u=e._malloc(s+1),l=e.ccall("compress_lzg","number",["number","number","number","number","number"],[i,o,r,s,u]);e._free(o);for(var c=new Uint8Array(l),a=0;a<l;a++)c[a]=e.getValue(u+a,"i8");return e._free(u),c}function ce(e,t,n){for(var i in n){var r=n[i],o=typeof r;r===null||o=="undefined"?t[i]=r:o=="function"||(o=="object"?r.slice&&(t[i]=r.slice()):t[i]=r)}return t}function he(e,t,n){for(var i="",r=0;r<t.length;r++)if(t[r]){var o=1<<(n?t.length-1-r:r);r>0&&(i+=" "),i+=e&o?t[r]:"-"}return i}function pe(e){return(e&255)<<16|e>>16&255|e&65280}function ge(e,t,n){return e&255|(t&255)<<8|(n&255)<<16|4278190080}function M(e,t,n){return n<e?e:n>t?t:n}function me(e){return e.length==0?"":(e.match(/^[a-zA-Z_]/)||(e="_"+e),e.replace(/\W+/g,"_"))}function ye(e){for(var t=0,n=e[t++],i=[],r=n;t<e.length;){var o=e[t++];if(o==n){for(var a=e[t++],s=0;s<a;s++)i.push(r);if(a==0)break}else r=o,i.push(r)}return new Uint8Array(i)}function ve(e,t,n){var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType=n,i.onload=function(r){if(i.status==200){var o=i.response;o instanceof ArrayBuffer&&(o=new Uint8Array(o)),t(o)}else if(i.status==404)t(null);else throw Error("Error "+i.status+" loading "+e)},i.onerror=function(r){t(null)},i.ontimeout=function(r){throw Error("Timeout loading "+e)},i.send(null)}function B(e){return e.split(".")[0]}function H(e){return e.split("-")[0]}function be(e){return H(B(e))}function de(e){return e!=null&&(Array.isArray(e)||k(e))}function k(e){return e!=null&&e.BYTES_PER_ELEMENT}function xe(e){return typeof e=="string"?O(e):e}function _e(e){return e<32?String.fromCharCode(e+9216):String.fromCharCode(e)}function Ke(e){return new Promise((t,n)=>{var i=document.createElement("script");i.onload=t,i.onerror=n,i.src=e,document.getElementsByTagName("head")[0].appendChild(i)})}function Ae(e){e.startsWith("?")&&(e=e.substr(1));var t=e.split("&");if(!t||t.length==0)return{};for(var n={},i=0;i<t.length;++i){var r=t[i].split("=",2);r.length==1?n[r[0]]="":n[r[0]]=decodeURIComponent(r[1].replace(/\+/g," "))}return n}function Ee(e){return!e||e=="false"||e=="0"?!1:e=="true"||e=="1"?!0:!!e}function Ve(e,t,n){return e==""?"":t==""?e:e.split(t).join(n)}function Le(){return typeof window!="undefined"&&window.location.host.endsWith("8bitworkshop.com")}function Me(e){for(var t=e+"=",n=document.cookie.split(";"),i=0;i<n.length;i++){for(var r=n[i];r.charAt(0)==" ";)r=r.substring(1,r.length);if(r.indexOf(t)==0)return r.substring(t.length,r.length)}return null}var Pe={},E=1;function Se(){let e=E;return e^=e<<13,e^=e>>17,e^=e<<5,(E=e)&255}function De(){return E}function Fe(e){E=e}function W(e,t,n,i){var r=e.createElement("canvas");return r.width=n,r.height=i,r.classList.add("emuvideo"),r.tabIndex=0,t.ap Line truncated
`}return i}var f={ANYKEY:{c:0,n:"?"},UP:{c:38,n:"Up",plyr:0,button:12,yaxis:-1},DOWN:{c:40,n:"Down",plyr:0,button:13,yaxis:1},LEFT:{c:37,n:"Left",plyr:0,button:14,xaxis:-1},RIGHT:{c:39,n:"Right",plyr:0,button:15,xaxis:1},A:{c:32,n:"Space",plyr:0,button:0},B:{c:16,n:"Shift",plyr:0,button:1},GP_A:{c:88,n:"X",plyr:0,button:0},GP_B:{c:90,n:"Z",plyr:0,button:1},GP_C:{c:86,n:"V",plyr:0,button:2},GP_D:{c:67,n:"C",plyr:0,button:3},SELECT:{c:220,n:"\\",plyr:0,button:8},START:{c:13,n:"Enter",plyr:0,button:9},OPTION:{c:8,n:"Bcksp",plyr:0,button:10},P2_UP:{c:87,n:"W",plyr:1,button:12,yaxis:-1},P2_DOWN:{c:83,n:"S",plyr:1,button:13,yaxis:1},P2_LEFT:{c:65,n:"A",plyr:1,button:14,xaxis:-1},P2_RIGHT:{c:68,n:"D",plyr:1,button:15,xaxis:1},P2_A:{c:84,n:"T",plyr:1,button:0},P2_B:{c:82,n:"R",plyr:1,button:1},P2_GP_A:{c:69,n:"E",plyr:1,button:0},P2_GP_B:{c:82,n:"R",plyr:1,button:1},P2_GP_C:{c:84,n:"T",plyr:1,button:2},P2_GP_D:{c:89,n:"Y",plyr:1,button:3},P2_SELECT:{c:70,n:"F",plyr:1,button:8},P2_START:{c:71,n:"G",plyr:1,button:9},VK_ESCAPE:{c:27,n:"Esc"},VK_F1:{c:112,n:"F1"},VK_F2:{c:113,n:"F2"},VK_F3:{c:114,n:"F3"},VK_F4:{c:115,n:"F4"},VK_F5:{c:116,n:"F5"},VK_F6:{c:117,n:"F6"},VK_F7:{c:118,n:"F7"},VK_F8:{c:119,n:"F8"},VK_F9:{c:120,n:"F9"},VK_F10:{c:121,n:"F10"},VK_F11:{c:122,n:"F11"},VK_F12:{c:123,n:"F12"},VK_SCROLL_LOCK:{c:145,n:"ScrLck"},VK_PAUSE:{c:19,n:"Pause"},VK_QUOTE:{c:222,n:"'"},VK_1:{c:49,n:"1"},VK_2:{c:50,n:"2"},VK_3:{c:51,n:"3"},VK_4:{c:52,n:"4"},VK_5:{c:53,n:"5"},VK_6:{c:54,n:"6"},VK_7:{c:55,n:"7"},VK_8:{c:56,n:"8"},VK_9:{c:57,n:"9"},VK_0:{c:48,n:"0"},VK_MINUS:{c:189,n:"-"},VK_MINUS2:{c:173,n:"-"},VK_EQUALS:{c:187,n:"="},VK_EQUALS2:{c:61,n:"="},VK_BACK_SPACE:{c:8,n:"Bkspc"},VK_TAB:{c:9,n:"Tab"},VK_Q:{c:81,n:"Q"},VK_W:{c:87,n:"W"},VK_E:{c:69,n:"E"},VK_R:{c:82,n:"R"},VK_T:{c:84,n:"T"},VK_Y:{c:89,n:"Y"},VK_U:{c:85,n:"U"},VK_I:{c:73,n:"I"},VK_O:{c:79,n:"O"},VK_P:{c:80,n:"P"},VK_ACUTE:{c:219,n:"\xB4"},VK_OPEN_BRACKET:{c:219,n:"["},VK_CLOSE_BRACKET:{c:221,n:"]"},VK_CAPS_LOCK:{c:20,n:"CpsLck"},VK_A:{c:65,n:"A"},VK_S:{c:83,n:"S"},VK_D:{c:68,n:"D"},VK_F:{c:70,n:"F"},VK_G:{c:71,n:"G"},VK_H:{c:72,n:"H"},VK_J:{c:74,n:"J"},VK_K:{c:75,n:"K"},VK_L:{c:76,n:"L"},VK_CEDILLA:{c:186,n:"\xC7"},VK_TILDE:{c:222,n:"~"},VK_ENTER:{c:13,n:"Enter"},VK_SHIFT:{c:16,n:"Shift"},VK_BACK_SLASH:{c:220,n:"\\"},VK_Z:{c:90,n:"Z"},VK_X:{c:88,n:"X"},VK_C:{c:67,n:"C"},VK_V:{c:86,n:"V"},VK_B:{c:66,n:"B"},VK_N:{c:78,n:"N"},VK_M:{c:77,n:"M"},VK_COMMA:{c:188,n:"] ="},VK_PERIOD:{c:190,n:"."},VK_SEMICOLON:{c:59,n:";"},VK_SLASH:{c:191,n:"/"},VK_CONTROL:{c:17,n:"Ctrl"},VK_ALT:{c:18,n:"Alt"},VK_COMMAND:{c:224,n:"Cmd"},VK_SPACE:{c:32,n:"Space"},VK_INSERT:{c:45,n:"Ins"},VK_DELETE:{c:46,n:"Del"},VK_HOME:{c:36,n:"Home"},VK_END:{c:35,n:"End"},VK_PAGE_UP:{c:33,n:"PgUp"},VK_PAGE_DOWN:{c:34,n:"PgDown"},VK_UP:{c:38,n:"Up"},VK_DOWN:{c:40,n:"Down"},VK_LEFT:{c:37,n:"Left"},VK_RIGHT:{c:39,n:"Right"},VK_NUM_LOCK:{c:144,n:"Num"},VK_DIVIDE:{c:111,n:"Num /"},VK_MULTIPLY:{c:106,n:"Num *"},VK_SUBTRACT:{c:109,n:"Num -"},VK_ADD:{c:107,n:"Num +"},VK_DECIMAL:{c:194,n:"Num ."},VK_NUMPAD0:{c:96,n:"Num 0"},VK_NUMPAD1:{c:97,n:"Num 1"},VK_NUMPAD2:{c:98,n:"Num 2"},VK_NUMPAD3:{c:99,n:"Num 3"},VK_NUMPAD4:{c:100,n:"Num 4"},VK_NUMPAD5:{c:101,n:"Num 5"},VK_NUMPAD6:{c:102,n:"Num 6"},VK_NUMPAD7:{c:103,n:"Num 7"},VK_NUMPAD8:{c:104,n:"Num 8"},VK_NUMPAD9:{c:105,n:"Num 9"},VK_NUMPAD_CENTER:{c:12,n:"Num Cntr"}};function R(e){return(e.shiftKey?2:0)|(e.ctrlKey?4:0)|(e.altKey?8:0)|(e.metaKey?16:0)}function Y(e,t,n,i){return(r,o,a)=>{if(!t){n(null,r,o,a);return}var s=t[r];if(s||(s=t[0]),n&&(s||i)&&n(s,r,o,a),s){var u=s.mask;u<0&&(u=-u,a&65&&(a^=65)),a&1?e[s.index]|=u:a&64&&(e[s.index]&=~u)}}}function Re(e,t,n,i,r){var o=Y(t,n,i,r);return e.setKeyboardEvents(o),new w(o)}function Oe(e){for(var t=new Map,n=0;n<e.length;n++){var i=e[n],r={index:i[1],mask:i[2],def:i[0]};t[i[0].c]=r}return t}var z=[f.UP,f.DOWN,f.LEFT,f.RIGHT,f.A,f.B,f.SELECT,f.START,f.GP_A,f.GP_B,f.GP_C,f.GP_D,f.OPTION,f.P2_UP,f.P2_DOWN,f.P2_LEFT,f.P2_RIGHT,f.P2_A,f.P2_B,f.P2_SELECT,f.P2_START,f.P2_GP_A,f.P2_GP_D],w=class{constructor(t){this.active=!1;this.AXIS0=24;this.handler=t,window.addEventListener("gamepadconnected",n=>{console.log("Gamepad connected:",n),this.reset()}),window.addEventListener("gamepaddisconnected",n=>{console.log("Gamepad disconnected:",n),this.reset()})}reset(){var n,i;if(typeof navigator.getGamepads=="function"){let r=(n=navigator.getGamepads())==null?void 0:n.length;this.state=new Array(r),this.lastState=new Array(r);for(var t=0;t<r;t++)this.state[t]=new Int32Array(64),this.lastState[t]=new Int32Array(64);this.active=((i=this.state)==null?void 0:i.length)>0}}start(){this.reset()}stop(){this.active=!1}poll(){if(this.active)for(var t=navigator.getGamepads&&navigator.getGamepads(),n=0;n<t.length;n++){let a=this.state[n],s=this.lastState[n];var i=t[n];if(i){for(var r=0;r<i.axes.length;r++){var o=r+this.AXIS0;a[o]=Math.round(i.axes[r]),a[o]!=s[o]&&this.handleStateChange(n,o)}for(var r=0;r<i.buttons.length;r++)a[r]=i.buttons[r] Line truncated
`}return r+="return "+((t==null?void 0:t.defaultval)|0)+";",new Function("a","v",r)}return i().bind(n)}function Ge(e,t){return new Q(e,t)}function q(e,t){var i=e.getBoundingClientRect(),r=window.getComputedStyle(e),o=parseFloat(r.borderLeftWidth)+parseFloat(r.paddingLeft),a=parseFloat(r.borderRightWidth)+parseFloat(r.paddingRight),s=parseFloat(r.borderTopWidth)+parseFloat(r.paddingTop),u=parseFloat(r.borderBottomWidth)+parseFloat(r.paddingBottom),l=i.width-o-a,c=i.height-s-u,v=e.width/Math.floor(l-2*.5),g=e.height/Math.floor(c-2*.5),m=(t.clientX-.5-i.left-o)*v,V=(t.clientY-.5-i.top-s)*g;return{x:Math.max(0,Math.min(e.width,m)),y:Math.max(0,Math.min(e.height,V))}}export{j as a,J as b,ee as c,te as d,ne as e,re as f,K as g,ie as h,ae as i,oe as j,se as k,ue as l,O as m,I as n,G as o,le as p,fe as q,ce as r,he as s,pe as t,ge as u,M as v,me as w,ye as x,ve as y,B as z,be as A,de as B,xe as C,_e as D,Ke as E,Ae as F,Ee as G,Ve as H,Le as I,Me as J,Pe as K,Se as L,De as M,Fe as N,W as O,C as P,F as Q,Ue as R,T as S,U as T,N as U,Ne as V,f as W,Y as X,Re as Y,Oe as Z,w as _,Ie as $,Ge as aa,q as ba};
//# sourceMappingURL=chunk-TYDI7JZQ.js.map
+7
View File
@@ -0,0 +1,7 @@
{
"version": 3,
"sources": ["../src/common/util.ts", "../src/common/emu.ts"],
"sourcesContent": ["\nexport function lpad(s:string, n:number):string {\n s += ''; // convert to string\n while (s.length<n) s=\" \"+s;\n return s;\n}\n\nexport function rpad(s:string, n:number):string {\n s += ''; // convert to string\n while (s.length<n) s+=\" \";\n return s;\n}\n\nexport function byte2signed(b:number):number {\n b &= 0xff;\n return (b < 0x80) ? b : -(256-b);\n}\n\nexport function getFilenameForPath(s:string):string {\n var toks = s.split('/');\n return toks[toks.length-1];\n}\n\nexport function getFolderForPath(s:string):string {\n return s.substring(0, s.lastIndexOf('/'));\n}\n\nexport function getFilenamePrefix(s:string):string {\n var pos = s.lastIndexOf('.');\n return (pos > 0) ? s.substr(0, pos) : s;\n}\n\nexport function hex(v:number, nd?:number) {\n if (!nd) nd = 2;\n if (nd == 8) {\n return hex((v>>16)&0xffff,4) + hex(v&0xffff,4);\n } else {\n return toradix(v,nd,16);\n }\n}\n\nexport function tobin(v:number, nd?:number) {\n if (!nd) nd = 8;\n return toradix(v,nd,2);\n}\n\nexport function toradix(v:number, nd:number, radix:number) {\n try {\n var s = v.toString(radix).toUpperCase();\n while (s.length < nd)\n s = \"0\" + s;\n return s;\n } catch (e) {\n return v+\"\";\n }\n}\n\nexport function arrayCompare(a:ArrayLike<any>, b:ArrayLike<any>):boolean {\n if (a == null && b == null) return true;\n if (a == null) return false;\n if (b == null) return false;\n if (typeof a.length != 'number' || typeof b.length != 'number') return false;\n if (a.length != b.length) return false;\n for (var i=0; i<a.length; i++)\n if (a[i] != b[i])\n return false;\n return true;\n}\n\nexport function invertMap(m:{}):{} {\n var r = {};\n if (m) {\n for (var k in m) r[m[k]] = k;\n }\n return r;\n}\n\nexport function highlightDifferences(s1:string, s2:string):string {\n var split1 = s1.split(/(\\S+\\s+)/).filter(function(n) {return n});\n var split2 = s2.split(/(\\S+\\s+)/).filter(function(n) {return n});\n var i = 0;\n var j = 0;\n var result = \"\";\n while (i < split1.length && j < split2.length) {\n var w1 = split1[i];\n var w2 = split2[j];\n if (w2 && w2.indexOf(\"\\n\") >= 0) {\n while (i < s1.length && split1[i].indexOf(\"\\n\") < 0)\n i++;\n }\n if (w1 != w2) {\n w2 = '<span class=\"hilite\">' + w2 + '</span>';\n }\n result += w2;\n i++;\n j++;\n }\n while (j < split2.length) {\n result += split2[j++];\n }\n return result;\n}\n\nexport function lzgmini() {\n\n // Constants\n var LZG_HEADER_SIZE = 16;\n var LZG_METHOD_COPY = 0;\n var LZG_METHOD_LZG1 = 1;\n\n // LUT for decoding the copy length parameter\n var LZG_LENGTH_DECODE_LUT = [2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,\n 20,21,22,23,24,25,26,27,28,29,35,48,72,128];\n\n // Decoded data (produced by the decode() method)\n var outdata = null;\n\n // Calculate the checksum\n var calcChecksum = function(data) {\n var a = 1;\n var b = 0;\n var i = LZG_HEADER_SIZE;\n while (i < data.length)\n {\n a = (a + (data[i] & 0xff)) & 0xffff;\n b = (b + a) & 0xffff;\n i++;\n }\n return (b << 16) | a;\n }\n\n // Decode LZG coded data. The function returns the size of the decoded data.\n // Use any of the get* methods to retrieve the decoded data.\n this.decode = function(data:number[]):number[] {\n // Start by clearing the decompressed array in this object\n outdata = null;\n\n // Check magic ID\n if ((data.length < LZG_HEADER_SIZE) || (data[0] != 76) ||\n (data[1] != 90) || (data[2] != 71))\n {\n return null;\n }\n \n // what's the length?\n var uncomplen = data[6] | (data[5]<<8) | (data[4]<<16) | (data[3]<<24);\n\n // Calculate & check the checksum\n var checksum = ((data[11] & 0xff) << 24) |\n ((data[12] & 0xff) << 16) |\n ((data[13] & 0xff) << 8) |\n (data[14] & 0xff);\n if (calcChecksum(data) != checksum)\n {\n return null;\n }\n\n var dst = new Array();\n // Check which method to use\n var method = data[15] & 0xff;\n if (method == LZG_METHOD_LZG1)\n {\n // Get marker symbols\n var m1 = data[16] & 0xff;\n var m2 = data[17] & 0xff;\n var m3 = data[18] & 0xff;\n var m4 = data[19] & 0xff;\n\n // Main decompression loop\n var symbol, b, b2, b3, len, offset;\n var dstlen = 0;\n var k = LZG_HEADER_SIZE + 4;\n var datalen = data.length;\n while (k <= datalen)\n {\n symbol = data[k++] & 0xff;\n if ((symbol != m1) && (symbol != m2) && (symbol != m3) && (symbol != m4))\n {\n // Literal copy\n dst[dstlen++] = symbol;\n }\n else\n {\n b = data[k++] & 0xff;\n if (b != 0)\n {\n // Decode offset / length parameters\n if (symbol == m1)\n {\n // mLine truncated
"mappings": "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 truncated
"names": ["lpad", "s", "n", "rpad", "byte2signed", "b", "getFilenameForPath", "toks", "getFolderForPath", "getFilenamePrefix", "pos", "hex", "v", "nd", "toradix", "tobin", "radix", "e", "arrayCompare", "a", "i", "invertMap", "m", "r", "k", "highlightDifferences", "s1", "s2", "split1", "split2", "j", "result", "w1", "w2", "lzgmini", "LZG_HEADER_SIZE", "LZG_METHOD_COPY", "LZG_METHOD_LZG1", "LZG_LENGTH_DECODE_LUT", "outdata", "calcChecksum", "data", "uncomplen", "checksum", "dst", "method", "m1", "m2", "m3", "m4", "symbol", "b2", "b3", "len", "offset", "dstlen", "datalen", "byteArrayToString", "byteArrayToUTF8", "stringToByteArray", "str", "charLUT", "c", "isProbablyBinary", "path", "data", "score", "BINEXTS", "ext", "i", "c", "nextra", "compressLZG", "em_module", "inBuffer", "levelArg", "level", "inLen", "inPtr", "maxEncSize", "outPtr", "compLen", "outBuffer", "safe_extend", "deep", "dest", "src", "key", "val", "type", "printFlags", "names", "r2l", "s", "bit", "rgb2bgr", "x", "RGBA", "r", "g", "b", "clamp", "minv", "maxv", "v", "safeident", "rle_unpack", "tag", "ch", "count", "j", "getWithBinary", "url", "success", "datatype", "oReq", "oEvent", "getBasePlatform", "platform", "getRootPlatform", "getRootBasePlatform", "isArray", "obj", "isTypedArray", "convertDataToUint8Array", "stringToByteArray", "byteToASCII", "b", "loadScript", "scriptfn", "resolve", "reject", "script", "decodeQueryString", "qs", "a", "p", "parseBool", "s", "replaceAll", "s", "search", "replace", "isProductionHost", "getCookie", "name", "nameEQ", "ca", "c", "PLATFORMS", "_random_state", "noise", "x", "getNoiseSeed", "setNoiseSeed", "__createCanvas", "doc", "mainElement", "width", "height", "canvas", "_charCodeOf", "_setKeyboardEvents", "canvas", "callback", "e", "flags", "_metakeyflags", "RasterVideo", "mainElement", "width", "height", "options", "rotate", "doc", "__createCanvas", "sx", "sy", "dx", "dy", "w", "h", "ctx", "el", "pos", "getMousePos", "new_x", "new_y", "clamp", "VectorVideo", "x1", "y1", "x2", "y2", "intensity", "color", "alpha", "jx", "jy", "drawCrosshair", "x", "y", "RAM", "size", "EmuHalt", "_EmuHalt", "msg", "loc", "useRequestAnimationFrame", "AnimationTimer", "frequencyHz", "msec", "fn", "timestamp", "ts", "dumpRAM", "ram", "ramofs", "ramlen", "s", "bpel", "perline", "isFloat", "ofs", "hex", "i", "Keys", "newKeyboardHandler", "switches", "map", "func", "alwaysfunc", "key", "code", "o", "mask", "setKeyboardFromMap", "video", "handler", "ControllerPoller", "makeKeycodeMap", "table", "entry", "val", "DEFAULT_CONTROLLER_KEYS", "event", "_a", "_b", "numGamepads", "gamepads", "gpi", "state", "lastState", "gp", "k", "axis", "def", "active", "wasActive", "padBytes", "data", "len", "padstart", "r", "AddressDecoder", "self", "makeFunction", "start", "end", "newAddressDecoder", "evt", "rect", "style", "left", "right", "top", "bottom", "scaleX", "scaleY"]
}
-7
View File
@@ -1,7 +0,0 @@
{
"version": 3,
"sources": ["../src/common/util.ts", "../src/common/emu.ts"],
"sourcesContent": ["\nexport function lpad(s:string, n:number):string {\n s += ''; // convert to string\n while (s.length<n) s=\" \"+s;\n return s;\n}\n\nexport function rpad(s:string, n:number):string {\n s += ''; // convert to string\n while (s.length<n) s+=\" \";\n return s;\n}\n\nexport function byte2signed(b:number):number {\n b &= 0xff;\n return (b < 0x80) ? b : -(256-b);\n}\n\nexport function getFilenameForPath(s:string):string {\n var toks = s.split('/');\n return toks[toks.length-1];\n}\n\nexport function getFolderForPath(s:string):string {\n return s.substring(0, s.lastIndexOf('/'));\n}\n\nexport function getFilenamePrefix(s:string):string {\n var pos = s.lastIndexOf('.');\n return (pos > 0) ? s.substr(0, pos) : s;\n}\n\nexport function hex(v:number, nd?:number) {\n if (!nd) nd = 2;\n if (nd == 8) {\n return hex((v>>16)&0xffff,4) + hex(v&0xffff,4);\n } else {\n return toradix(v,nd,16);\n }\n}\n\nexport function tobin(v:number, nd?:number) {\n if (!nd) nd = 8;\n return toradix(v,nd,2);\n}\n\nexport function toradix(v:number, nd:number, radix:number) {\n try {\n var s = v.toString(radix).toUpperCase();\n while (s.length < nd)\n s = \"0\" + s;\n return s;\n } catch (e) {\n return v+\"\";\n }\n}\n\nexport function arrayCompare(a:ArrayLike<any>, b:ArrayLike<any>):boolean {\n if (a == null && b == null) return true;\n if (a == null) return false;\n if (b == null) return false;\n if (typeof a.length != 'number' || typeof b.length != 'number') return false;\n if (a.length != b.length) return false;\n for (var i=0; i<a.length; i++)\n if (a[i] != b[i])\n return false;\n return true;\n}\n\nexport function invertMap(m:{}):{} {\n var r = {};\n if (m) {\n for (var k in m) r[m[k]] = k;\n }\n return r;\n}\n\nexport function highlightDifferences(s1:string, s2:string):string {\n var split1 = s1.split(/(\\S+\\s+)/).filter(function(n) {return n});\n var split2 = s2.split(/(\\S+\\s+)/).filter(function(n) {return n});\n var i = 0;\n var j = 0;\n var result = \"\";\n while (i < split1.length && j < split2.length) {\n var w1 = split1[i];\n var w2 = split2[j];\n if (w2 && w2.indexOf(\"\\n\") >= 0) {\n while (i < s1.length && split1[i].indexOf(\"\\n\") < 0)\n i++;\n }\n if (w1 != w2) {\n w2 = '<span class=\"hilite\">' + w2 + '</span>';\n }\n result += w2;\n i++;\n j++;\n }\n while (j < split2.length) {\n result += split2[j++];\n }\n return result;\n}\n\nexport function lzgmini() {\n\n // Constants\n var LZG_HEADER_SIZE = 16;\n var LZG_METHOD_COPY = 0;\n var LZG_METHOD_LZG1 = 1;\n\n // LUT for decoding the copy length parameter\n var LZG_LENGTH_DECODE_LUT = [2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,\n 20,21,22,23,24,25,26,27,28,29,35,48,72,128];\n\n // Decoded data (produced by the decode() method)\n var outdata = null;\n\n // Calculate the checksum\n var calcChecksum = function(data) {\n var a = 1;\n var b = 0;\n var i = LZG_HEADER_SIZE;\n while (i < data.length)\n {\n a = (a + (data[i] & 0xff)) & 0xffff;\n b = (b + a) & 0xffff;\n i++;\n }\n return (b << 16) | a;\n }\n\n // Decode LZG coded data. The function returns the size of the decoded data.\n // Use any of the get* methods to retrieve the decoded data.\n this.decode = function(data:number[]):number[] {\n // Start by clearing the decompressed array in this object\n outdata = null;\n\n // Check magic ID\n if ((data.length < LZG_HEADER_SIZE) || (data[0] != 76) ||\n (data[1] != 90) || (data[2] != 71))\n {\n return null;\n }\n \n // what's the length?\n var uncomplen = data[6] | (data[5]<<8) | (data[4]<<16) | (data[3]<<24);\n\n // Calculate & check the checksum\n var checksum = ((data[11] & 0xff) << 24) |\n ((data[12] & 0xff) << 16) |\n ((data[13] & 0xff) << 8) |\n (data[14] & 0xff);\n if (calcChecksum(data) != checksum)\n {\n return null;\n }\n\n var dst = new Array();\n // Check which method to use\n var method = data[15] & 0xff;\n if (method == LZG_METHOD_LZG1)\n {\n // Get marker symbols\n var m1 = data[16] & 0xff;\n var m2 = data[17] & 0xff;\n var m3 = data[18] & 0xff;\n var m4 = data[19] & 0xff;\n\n // Main decompression loop\n var symbol, b, b2, b3, len, offset;\n var dstlen = 0;\n var k = LZG_HEADER_SIZE + 4;\n var datalen = data.length;\n while (k <= datalen)\n {\n symbol = data[k++] & 0xff;\n if ((symbol != m1) && (symbol != m2) && (symbol != m3) && (symbol != m4))\n {\n // Literal copy\n dst[dstlen++] = symbol;\n }\n else\n {\n b = data[k++] & 0xff;\n if (b != 0)\n {\n // Decode offset / length parameters\n if (symbol == m1)\n {\n // mLine truncated
"mappings": "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 truncated
"names": ["lpad", "s", "n", "rpad", "byte2signed", "b", "getFilenameForPath", "toks", "getFolderForPath", "getFilenamePrefix", "pos", "hex", "v", "nd", "toradix", "tobin", "radix", "e", "arrayCompare", "a", "i", "invertMap", "m", "r", "k", "highlightDifferences", "s1", "s2", "split1", "split2", "j", "result", "w1", "w2", "lzgmini", "LZG_HEADER_SIZE", "LZG_METHOD_COPY", "LZG_METHOD_LZG1", "LZG_LENGTH_DECODE_LUT", "outdata", "calcChecksum", "data", "uncomplen", "checksum", "dst", "method", "m1", "m2", "m3", "m4", "symbol", "b2", "b3", "len", "offset", "dstlen", "datalen", "byteArrayToString", "byteArrayToUTF8", "stringToByteArray", "str", "charLUT", "c", "isProbablyBinary", "path", "data", "score", "BINEXTS", "ext", "i", "c", "nextra", "compressLZG", "em_module", "inBuffer", "levelArg", "level", "inLen", "inPtr", "maxEncSize", "outPtr", "compLen", "outBuffer", "safe_extend", "deep", "dest", "src", "key", "val", "type", "printFlags", "names", "r2l", "s", "bit", "rgb2bgr", "x", "RGBA", "r", "g", "b", "clamp", "minv", "maxv", "v", "safeident", "rle_unpack", "tag", "ch", "count", "j", "getWithBinary", "url", "success", "datatype", "oReq", "oEvent", "getBasePlatform", "platform", "getRootPlatform", "getRootBasePlatform", "isArray", "obj", "isTypedArray", "convertDataToUint8Array", "stringToByteArray", "byteToASCII", "b", "loadScript", "scriptfn", "resolve", "reject", "script", "decodeQueryString", "qs", "a", "p", "parseBool", "s", "replaceAll", "s", "search", "replace", "getCookie", "name", "nameEQ", "ca", "c", "PLATFORMS", "_random_state", "noise", "x", "getNoiseSeed", "setNoiseSeed", "__createCanvas", "doc", "mainElement", "width", "height", "canvas", "_charCodeOf", "_setKeyboardEvents", "canvas", "callback", "e", "flags", "_metakeyflags", "RasterVideo", "mainElement", "width", "height", "options", "rotate", "doc", "__createCanvas", "sx", "sy", "dx", "dy", "w", "h", "ctx", "el", "pos", "getMousePos", "new_x", "new_y", "clamp", "VectorVideo", "x1", "y1", "x2", "y2", "intensity", "color", "alpha", "jx", "jy", "drawCrosshair", "x", "y", "RAM", "size", "EmuHalt", "_EmuHalt", "msg", "loc", "useRequestAnimationFrame", "AnimationTimer", "frequencyHz", "msec", "fn", "timestamp", "ts", "dumpRAM", "ram", "ramofs", "ramlen", "s", "bpel", "perline", "isFloat", "ofs", "hex", "i", "Keys", "newKeyboardHandler", "switches", "map", "func", "alwaysfunc", "key", "code", "o", "mask", "setKeyboardFromMap", "video", "handler", "ControllerPoller", "makeKeycodeMap", "table", "entry", "val", "DEFAULT_CONTROLLER_KEYS", "event", "_a", "_b", "numGamepads", "gamepads", "gpi", "state", "lastState", "gp", "k", "axis", "def", "active", "wasActive", "padBytes", "data", "len", "padstart", "r", "AddressDecoder", "self", "makeFunction", "start", "end", "newAddressDecoder", "evt", "rect", "style", "left", "right", "top", "bottom", "scaleX", "scaleY"]
}
@@ -1,4 +1,4 @@
import{c as h}from"./chunk-4GR6NWIG.js";import{b as m}from"./chunk-MOWDEMRA.js";import{E,J as M,d as n,f as D}from"./chunk-6POV4IU3.js";import{$ as g,J as r,V as e,Y as f,l as a,m as c}from"./chunk-V6XWGCKJ.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-2TT65SF3.js";import{b as m}from"./chunk-R5TBCA3S.js";import{E,J as M,d as n,f as D}from"./chunk-AK5O5EFA.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-4IPOQTI2.js.map
//# sourceMappingURL=coleco-JGNJFB37.js.map
@@ -2,6 +2,6 @@
"version": 3,
"sources": ["../src/machine/coleco.ts", "../src/platform/coleco.ts"],
"sourcesContent": ["\nimport { Z80, Z80State } from \"../common/cpu/ZilogZ80\";\nimport { BasicScanlineMachine } from \"../common/devices\";\nimport { BaseZ80VDPBasedMachine } from \"./vdp_z80\";\nimport { KeyFlags, newAddressDecoder, padBytes, Keys, makeKeycodeMap, newKeyboardHandler } from \"../common/emu\";\nimport { hex, lzgmini, stringToByteArray } from \"../common/util\";\nimport { TssChannelAdapter, MasterAudio, SN76489_Audio } from \"../common/audio\";\nimport { TMS9918A } from \"./chips/tms9918a\";\n\n// http://www.colecovision.eu/ColecoVision/development/tutorial1.shtml\n// http://www.colecovision.eu/ColecoVision/development/libcv.shtml\n// http://www.kernelcrash.com/blog/recreating-the-colecovision/2016/01/27/\n// http://www.atarihq.com/danb/files/CV-Tech.txt\n// http://www.atarihq.com/danb/files/CV-Sound.txt\n// http://www.colecoboxart.com/faq/FAQ05.htm\n// http://www.theadamresource.com/manuals/technical/Jeffcoleco.html\n// http://bifi.msxnet.org/msxnet//tech/tms9918a.txt\n// http://www.colecovision.dk/tools.htm?refreshed\n// http://www.theadamresource.com/manuals/technical/ColecoVision%20Coding%20Guide.pdf\n// http://www.unige.ch/medecine/nouspikel/ti99/tms9918a.htm\n// http://map.grauw.nl/articles/vdp_tut.php\n// http://www.msxcomputermagazine.nl/mccw/91/msx1demos1/en.html\n// http://www.segordon.com/colecovision.php\n// http://samdal.com/svvideo.htm\n// https://github.com/tursilion/convert9918\n// http://www.harmlesslion.com/cgi-bin/showprog.cgi?ColecoVision\n\nvar COLECOVISION_KEYCODE_MAP = makeKeycodeMap([\n [Keys.UP, 0, 0x1],\n [Keys.DOWN, 0, 0x4],\n [Keys.LEFT, 0, 0x8],\n [Keys.RIGHT, 0, 0x2],\n [Keys.A, 0, 0x40],\n [Keys.B, 1, 0x40],\n [Keys.GP_A, 0, 0x40],\n [Keys.GP_B, 1, 0x40],\n\n [Keys.P2_UP, 2, 0x1],\n [Keys.P2_DOWN, 2, 0x4],\n [Keys.P2_LEFT, 2, 0x8],\n [Keys.P2_RIGHT, 2, 0x2],\n [Keys.P2_A, 2, 0x40],\n [Keys.P2_B, 3, 0x40],\n]);\n\nexport class ColecoVision extends BaseZ80VDPBasedMachine {\n\n defaultROMSize = 0x8000;\n ram = new Uint8Array(0x400);\n bios: Uint8Array;\n keypadMode: boolean;\n\n constructor() {\n super();\n this.init(this, this.newIOBus(), new SN76489_Audio(new MasterAudio()));\n this.bios = new lzgmini().decode(stringToByteArray(atob(COLECO_BIOS_LZG)));\n }\n \n getKeyboardMap() { return COLECOVISION_KEYCODE_MAP; }\n \n vdpInterrupt() {\n this.probe.logInterrupt(0);\n this.cpu.NMI();\n }\n \n read = newAddressDecoder([\n [0x0000, 0x1fff, 0x1fff, (a) => { return this.bios ? this.bios[a] : 0; }],\n [0x6000, 0x7fff, 0x03ff, (a) => { return this.ram[a]; }],\n [0x8000, 0xffff, 0x7fff, (a) => { return this.rom ? this.rom[a] : 0; }],\n ]);\n\n write = newAddressDecoder([\n [0x6000, 0x7fff, 0x03ff, (a, v) => { this.ram[a] = v; }],\n ]);\n\n newIOBus() {\n return {\n read: (addr:number):number => {\n addr &= 0xff;\n //console.log('IO read', hex(addr,4));\n switch (addr) {\n case 0xfc: return this.inputs[this.keypadMode ? 1 : 0] ^ 0xff;\n case 0xff: return this.inputs[this.keypadMode ? 3 : 2] ^ 0xff;\n }\n if (addr >= 0xa0 && addr <= 0xbf) {\n if (addr & 1)\n return this.vdp.readStatus();\n else\n return this.vdp.readData();\n }\n return 0;\n },\n write: (addr:number, val:number) => {\n addr &= 0xff;\n val &= 0xff;\n //console.log('IO write', hex(addr,4), hex(val,2));\n switch (addr >> 4) {\n case 0x8: case 0x9: this.keypadMode = true; break;\n case 0xc: case 0xd: this.keypadMode = false; break;\n case 0xa: case 0xb:\n if (addr & 1)\n return this.vdp.writeAddress(val);\n else\n return this.vdp.writeData(val);\n case 0xf: this.psg.setData(val); break;\n }\n }\n };\n }\n\n loadState(state) {\n super.loadState(state);\n this.keypadMode = state['kpm'];\n }\n saveState() {\n var state = super.saveState();\n state['kpm'] = this.keypadMode;\n return state;\n }\n reset() {\n super.reset();\n this.keypadMode = false;\n }\n}\n\nvar COLECO_BIOS_LZG = `\nTFpHAAAgAAAAB7djQcnHAQEDBgcx/3MYawAAAMMMgAehB+EPB+USB+UVB+UYB+UbB+UeB+QHHAZm\nIYA8igUCBYIAKgCAff5VIAl8/qogBCoKgOnHAwkfgICAAAMFT6CgB4LgByEH4WDAYMBABlggQIAg\nB+HAwOCgYAMGKweBQAYxBphAQEAG+KBABnAGEuAGUAabB+QA4AflBkggIAYyB+FgoKCgwAZdwAY5\nB+HABhAGYAfhIAZQoKDgIAMCcOCAwAaIYIDgoAZY4AMFOAYGBsgGIAZYAwJWBlAAQAMEcAYfQAZ4\nBhoDA3gGBgaQBjgGGwYfoOCAAwLIB+EDA/DAoAchAwNggAaQwAMFmOCAByEH5QZ4AwKABligAwUw\n4EBAQAZYICAgoAMCUAYuBpAGPwawoOAG4AfhAyNQQKCgBqDAoMADJECgoOADBGjgwAZYYIADBPgD\nAlADBEigAwVooAMFCAMEQAYHAwRQBg8GUAMiEAMEoAMEcAMD6gaQICAGyAADJZgDJ4gDI7gAwGAD\nI0CAwAME6AMC+QMCaCBgAwRwAGCgwAaIQOADA2AGJiAH4gZoAwPgA0M6ACAAAwX4gKDAAwPAAyLP\nAwNgAwXwAyNJAwR+AwX4oMADRQBgAyOgAyJxB+PAYANDEOBAQAMDeAMF+AfhA0RQAyJBB+NAAwPI\nBncGkOBgwAZQYECABrADQs8DAkjAQCBAA0QYAAMDUAcLOERsRFREOAA4fFR8RHw4AAAofHx8OBAA\nABA4B+MQODgQfHwDBQgQBhgAADAwB4HLine truncated
"mappings": "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",
"mappings": "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",
"names": ["COLECOVISION_KEYCODE_MAP", "makeKeycodeMap", "Keys", "ColecoVision", "BaseZ80VDPBasedMachine", "newAddressDecoder", "a", "v", "SN76489_Audio", "MasterAudio", "lzgmini", "stringToByteArray", "COLECO_BIOS_LZG", "addr", "val", "state", "ColecoVision_PRESETS", "ColecoVisionPlatform", "BaseZ80MachinePlatform", "ColecoVision", "a", "ColecoVisionMAMEPlatform", "BaseMAMEZ80Platform", "getToolForFilename_z80", "_self", "title", "data", "PLATFORMS"]
}
+36 -1
View File
@@ -23,13 +23,15 @@
* (unless noWorkerBuild) and vice versa.
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.TOOL_META = exports.DIALOG_INCLUDE_PATTERNS = exports.ECS_INCLUDE_PATTERNS = exports.WIZ_INCLUDE_PATTERNS = exports.ACME_INCLUDE_PATTERNS = exports.USE_ASM_INCLUDE_PATTERNS = exports.VERILOG_INCLUDE_PATTERNS = exports.SHARED_LINK_PATTERNS = exports.SHARED_INCLUDE_PATTERNS = void 0;
exports.TOOL_META = exports.DIALOG_INCLUDE_PATTERNS = exports.ECS_INCLUDE_PATTERNS = exports.WIZ_INCLUDE_PATTERNS = exports.ACME_INCLUDE_PATTERNS = exports.USE_ASM_INCLUDE_PATTERNS = exports.SYSTEM_INCLUDE_PATTERNS = exports.VERILOG_INCLUDE_PATTERNS = exports.SHARED_LINK_PATTERNS = exports.SHARED_INCLUDE_PATTERNS = void 0;
exports.getSystemIncludePatterns = getSystemIncludePatterns;
exports.getToolMeta = getToolMeta;
exports.getToolMetaForFilename = getToolMetaForFilename;
exports.getPreloadFSName = getPreloadFSName;
exports.getSkeletonName = getSkeletonName;
exports.getIncludePatterns = getIncludePatterns;
exports.getLinkPatterns = getLinkPatterns;
exports.getIncludeDirs = getIncludeDirs;
exports.matchDependencyPatterns = matchDependencyPatterns;
//// shared dependency-parsing patterns (from src/ide/project.ts)
// C / most assemblers: [.#%]?include|incbin|embed "file", //#resource "file"
@@ -49,6 +51,20 @@ exports.VERILOG_INCLUDE_PATTERNS = [
{ re: /^\s*([.]arch)\s+(\w+)/gmi, suffix: '.json' },
/\$readmem[bh]\("(.+?)"/gmi,
];
// C system includes: #include <file.h> -- resolved from the toolchain
// preload filesystem rather than the project. Deliberately NOT part of
// SHARED_INCLUDE_PATTERNS, so build dependency scanning skips them.
exports.SYSTEM_INCLUDE_PATTERNS = [
{ re: /^\s*[.#%]?\s*include\s+<(.+?)>/gmi, system: true },
];
/**
* System include patterns (#include <foo.h>) for UI linking, for tools that
* have a bundled filesystem to search. Empty otherwise.
*/
function getSystemIncludePatterns(tool) {
let meta = tool && getToolMeta(tool);
return (meta && meta.includeDirs && meta.includeDirs.length) ? exports.SYSTEM_INCLUDE_PATTERNS : [];
}
// xasm6809 (USE) and merlin32 (ASM): " USE file.ext"
exports.USE_ASM_INCLUDE_PATTERNS = [
/^\s+(USE|ASM)\s+(\S+[.]\S+)/gm,
@@ -134,6 +150,7 @@ exports.TOOL_META = {
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',
@@ -144,6 +161,7 @@ exports.TOOL_META = {
ca65: {
id: 'ca65', name: 'ca65', kind: 'assembler', arch: '6502',
extensions: ['.s', '.ca65'],
includeDirs: ['/include', '/asminc'],
editorStyle: '6502',
helpURL: 'https://cc65.github.io/doc/ca65.html',
wasmModule: 'ca65',
@@ -160,6 +178,7 @@ exports.TOOL_META = {
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',
@@ -170,6 +189,7 @@ exports.TOOL_META = {
sdasz80: {
id: 'sdasz80', name: 'sdasz80', kind: 'assembler', arch: 'z80',
extensions: ['.s'],
includeDirs: ['/include'],
editorStyle: 'z80',
wasmModule: 'sdasz80',
platforms: { default: { preloadFS: 'sdcc' } },
@@ -179,6 +199,7 @@ exports.TOOL_META = {
sdasgb: {
id: 'sdasgb', name: 'sdasgb', kind: 'assembler', arch: 'gbz80',
extensions: ['.sgb'],
includeDirs: ['/include'],
editorStyle: 'z80',
wasmModule: 'sdasgb',
platforms: { default: { preloadFS: 'sdcc' } },
@@ -232,6 +253,7 @@ exports.TOOL_META = {
cmoc: {
id: 'cmoc', name: 'CMOC', kind: 'compiler', arch: '6809',
extensions: ['.c', '.h'],
includeDirs: ['/include'],
editorStyle: 'text/x-csrc',
helpURL: 'http://perso.b2b2c.ca/~sarrazip/dev/cmoc.html',
wasmModule: 'cmoc',
@@ -270,6 +292,7 @@ exports.TOOL_META = {
armtcc: {
id: 'armtcc', name: 'TCC (ARM)', kind: 'compiler', arch: 'arm32',
extensions: ['.c', '.s'],
includeDirs: ['/include'],
editorStyle: 'text/x-csrc',
wasmModule: 'arm-tcc',
includePatterns: exports.SHARED_INCLUDE_PATTERNS,
@@ -284,6 +307,7 @@ exports.TOOL_META = {
smlrc: {
id: 'smlrc', name: 'SmallerC', kind: 'compiler', arch: 'x86',
extensions: ['.c'],
includeDirs: ['/include'],
editorStyle: 'text/x-csrc',
wasmModule: 'smlrc',
includePatterns: exports.SHARED_INCLUDE_PATTERNS,
@@ -301,6 +325,7 @@ exports.TOOL_META = {
oscar64: {
id: 'oscar64', name: 'Oscar64', kind: 'compiler', arch: '6502',
extensions: ['.c', '.cpp', '.cc', '.o64'],
includeDirs: ['/include'],
editorStyle: 'text/x-csrc',
helpURL: 'https://github.com/drmortalwombat/oscar64/blob/main/oscar64.md',
wasmModule: 'oscar64',
@@ -310,6 +335,7 @@ exports.TOOL_META = {
bataribasic: {
id: 'bataribasic', name: 'batari Basic', kind: 'compiler', arch: '6502',
extensions: ['.bb', '.bas'],
includeDirs: ['/includes'],
editorStyle: 'bataribasic',
helpURL: 'help/bataribasic/manual.html',
wasmModule: 'bb2600basic',
@@ -352,6 +378,7 @@ exports.TOOL_META = {
wiz: {
id: 'wiz', name: 'wiz', kind: 'compiler',
extensions: ['.wiz'],
includeDirs: ['/common'],
editorStyle: 'text/x-wiz',
helpURL: 'https://github.com/wiz-lang/wiz/blob/master/readme.md#wiz',
wasmModule: 'wiz',
@@ -509,6 +536,14 @@ function getLinkPatterns(tool, platform) {
return [];
return exports.SHARED_LINK_PATTERNS;
}
/**
* Directories containing shared code (headers etc.) for this tool's preload
* filesystem, e.g. ['/include','/asminc'] -- empty if none/unknown.
*/
function getIncludeDirs(tool) {
let meta = tool && getToolMeta(tool);
return (meta && meta.includeDirs) || [];
}
/**
* Run a set of include/link patterns over source text, returning the
* referenced filenames. The filename comes from the pattern's `group`, or
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"toolmeta.js","sourceRoot":"","sources":["../../src/common/toolmeta.ts"],"names":[],"mappings":"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 truncated
{"version":3,"file":"toolmeta.js","sourceRoot":"","sources":["../../src/common/toolmeta.ts"],"names":[],"mappings":"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 truncated
+4
View File
@@ -43,6 +43,7 @@ exports.escapeHTML = escapeHTML;
exports.findIntegerFactors = findIntegerFactors;
exports.coerceToArray = coerceToArray;
exports.replaceAll = replaceAll;
exports.isProductionHost = isProductionHost;
exports.getCookie = getCookie;
function lpad(s, n) {
s += ''; // convert to string
@@ -712,6 +713,9 @@ function replaceAll(s, search, replace) {
return s;
return s.split(search).join(replace);
}
function isProductionHost() {
return typeof window != 'undefined' && window.location.host.endsWith('8bitworkshop.com');
}
function getCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/common/util.ts"],"names":[],"mappings":"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 truncated
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/common/util.ts"],"names":[],"mappings":"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 truncated
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"workertypes.js","sourceRoot":"","sources":["../../src/common/workertypes.ts"],"names":[],"mappings":";;;AA0JA,kCAEC;AAED,sCAEC;AAED,wCAEC;AAtID,MAAa,UAAU;IAMrB,YAAY,KAAkB,EAAE,IAAW;QACzC,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;QAC7B,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACrB,0CAA0C;gBAC1C,4DAA4D;gBAC5D,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;oBAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;gBACtC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC9B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;YAC9C,CAAC;QACH,CAAC;IACH,CAAC;IACD,qEAAqE;IACrE,iBAAiB,CAAC,EAAS,EAAE,UAAiB;QAC5C,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,IAAE,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;gBACjC,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBAC9B,IAAI,GAAG,EAAE,CAAC;oBACR,OAAO,GAAG,CAAC;gBACb,CAAC;gBACD,EAAE,EAAE,CAAC;YACP,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,SAAS,KAAY,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;CACjD;AArCD,gCAqCC;AAYA,CAAC;AAOD,CAAC;AAID,CAAC;AAgEF,SAAgB,WAAW,CAAC,MAAoB;IAC9C,OAAO,CAAC,WAAW,IAAI,MAAM,CAAC,CAAC;AACjC,CAAC;AAED,SAAgB,aAAa,CAAC,MAAoB;IAChD,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC;AAC9B,CAAC;AAED,SAAgB,cAAc,CAAC,MAAoB;IACjD,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC;AAC9B,CAAC"}
{"version":3,"file":"workertypes.js","sourceRoot":"","sources":["../../src/common/workertypes.ts"],"names":[],"mappings":";;;AAoKA,kCAEC;AAED,sCAEC;AAED,wCAEC;AAhJD,MAAa,UAAU;IAMrB,YAAY,KAAkB,EAAE,IAAW;QACzC,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;QAC7B,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACrB,0CAA0C;gBAC1C,4DAA4D;gBAC5D,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;oBAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;gBACtC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC9B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;YAC9C,CAAC;QACH,CAAC;IACH,CAAC;IACD,qEAAqE;IACrE,iBAAiB,CAAC,EAAS,EAAE,UAAiB;QAC5C,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,IAAE,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;gBACjC,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBAC9B,IAAI,GAAG,EAAE,CAAC;oBACR,OAAO,GAAG,CAAC;gBACb,CAAC;gBACD,EAAE,EAAE,CAAC;YACP,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,SAAS,KAAY,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;CACjD;AArCD,gCAqCC;AAYA,CAAC;AAOD,CAAC;AAID,CAAC;AA0EF,SAAgB,WAAW,CAAC,MAAoB;IAC9C,OAAO,CAAC,WAAW,IAAI,MAAM,CAAC,CAAC;AACjC,CAAC;AAED,SAAgB,aAAa,CAAC,MAAoB;IAChD,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC;AAC9B,CAAC;AAED,SAAgB,cAAc,CAAC,MAAoB;IACjD,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC;AAC9B,CAAC"}
+2 -2
View File
@@ -1,2 +1,2 @@
import{J as d,s as p}from"./chunk-6POV4IU3.js";import{J as n}from"./chunk-V6XWGCKJ.js";import"./chunk-KT7KMEQC.js";var c=[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+c.length);s.set(c,0),s[24]=t.length&255,s[25]=t.length>>8,s[26]=this.runaddr&255,s[27]=this.runaddr>>8,s.set(t,c.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),i=t[14]+(t[15]<<8),l=t[24]+(t[25]<<8),f=t[26]+(t[27]<<8),u=t[28]+(t[29]<<8),m=t[34]+(t[35]<<8),_=t[36]+(t[37]<<8);return{PC:m,SP:l,AF:s,BC:i,DE:e,HL:r,IX:u,IY:f,IR:_,o:this.readConst(m)}}saveState(){return this.exports.machine_save_state(this.sys,this.stateptr),{c:this.getCPUState(),state:this.statearr.slice(0)}}loadState(t){this.statearr.set(t.state),this.exports.machine_load_state(this.sys,this.stateptr)}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,i=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,i=4),t==87&&(t=87,i=1),t==68&&(t=68,i=8),t==83&&(t=83,i=2),t==69&&(i=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"}]},a=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"]=a;n["cpc.464"]=a;n["cpc.kcc"]=a;
//# sourceMappingURL=cpc-N5D2F7ZQ.js.map
import{J as d,s as p}from"./chunk-AK5O5EFA.js";import{K as n}from"./chunk-TYDI7JZQ.js";import"./chunk-KT7KMEQC.js";var c=[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+c.length);s.set(c,0),s[24]=t.length&255,s[25]=t.length>>8,s[26]=this.runaddr&255,s[27]=this.runaddr>>8,s.set(t,c.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),i=t[14]+(t[15]<<8),l=t[24]+(t[25]<<8),f=t[26]+(t[27]<<8),u=t[28]+(t[29]<<8),m=t[34]+(t[35]<<8),_=t[36]+(t[37]<<8);return{PC:m,SP:l,AF:s,BC:i,DE:e,HL:r,IX:u,IY:f,IR:_,o:this.readConst(m)}}saveState(){return this.exports.machine_save_state(this.sys,this.stateptr),{c:this.getCPUState(),state:this.statearr.slice(0)}}loadState(t){this.statearr.set(t.state),this.exports.machine_load_state(this.sys,this.stateptr)}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,i=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,i=4),t==87&&(t=87,i=1),t==68&&(t=68,i=8),t==83&&(t=83,i=2),t==69&&(i=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"}]},a=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"]=a;n["cpc.464"]=a;n["cpc.kcc"]=a;
//# sourceMappingURL=cpc-27VPPKVH.js.map
File renamed without changes.
-2
View File
@@ -1,2 +0,0 @@
import{a as x}from"./chunk-3FIVEUG2.js";import{s as y}from"./chunk-T3IRBODR.js";import"./chunk-7GWCUXYG.js";import"./chunk-LNOKARBD.js";import"./chunk-A7SWO6EA.js";import"./chunk-DGIZH2KV.js";import{I as m,m as c,p}from"./chunk-6POV4IU3.js";import{$ as a,C as d,J as f,n as h}from"./chunk-V6XWGCKJ.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-FIM3P6FD.js.map
+2
View File
@@ -0,0 +1,2 @@
import{a as x}from"./chunk-3FIVEUG2.js";import{t as y}from"./chunk-22X2KTII.js";import"./chunk-7GWCUXYG.js";import"./chunk-LNOKARBD.js";import"./chunk-A7SWO6EA.js";import"./chunk-TDMLOI3F.js";import{I as m,m as c,p}from"./chunk-AK5O5EFA.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-IT2NTQAC.js.map
@@ -2,6 +2,6 @@
"version": 3,
"sources": ["../src/machine/devel.ts", "../src/platform/devel.ts"],
"sourcesContent": ["\nimport { MOS6502 } from \"../common/cpu/MOS6502\";\nimport { BasicHeadlessMachine, HasSerialIO, SerialIOInterface } from \"../common/devices\";\nimport { padBytes, newAddressDecoder } from \"../common/emu\"; // TODO\n\nconst INPUT_HALTED = 31;\n\nexport class Devel6502 extends BasicHeadlessMachine implements HasSerialIO {\n\n cpuFrequency = 1000000;\n defaultROMSize = 0x8000;\n \n cpu = new MOS6502();\n ram = new Uint8Array(0x4000);\n rom : Uint8Array;\n serial : SerialIOInterface;\n\n constructor() {\n super();\n this.connectCPUMemoryBus(this);\n }\n \n connectSerialIO(serial: SerialIOInterface) {\n this.serial = serial;\n }\n\n read = newAddressDecoder([\n [0x0000, 0x3fff, 0x3fff, (a) => { return this.ram[a]; }],\n [0x4000, 0x4000, 0xffff, (a) => { return this.serial.byteAvailable() ? 0x80 : 0 }],\n [0x4001, 0x4001, 0xffff, (a) => { return this.serial.recvByte() }],\n [0x4002, 0x4002, 0xffff, (a) => { return this.serial.clearToSend() ? 0x80 : 0 }],\n [0x8000, 0xffff, 0x7fff, (a) => { return this.rom && this.rom[a]; }],\n ]);\n \n write = newAddressDecoder([\n [0x0000, 0x3fff, 0x3fff, (a,v) => { this.ram[a] = v; }],\n [0x4003, 0x4003, 0xffff, (a,v) => { return this.serial.sendByte(v) }],\n [0x400f, 0x400f, 0xffff, (a,v) => { this.inputs[INPUT_HALTED] = 1; }],\n ]);\n \n readConst(a:number) : number {\n return this.read(a);\n }\n\n advanceFrame(trap) : number {\n var clock = 0;\n while (clock < this.cpuFrequency/60) {\n if (trap && trap()) break;\n clock += this.advanceCPU();\n }\n return clock;\n }\n\n advanceCPU() {\n if (this.isHalted()) return 1;\n var n = super.advanceCPU();\n if (this.serial) this.serial.advance(n);\n return n;\n }\n\n reset() {\n this.inputs[INPUT_HALTED] = 0;\n super.reset();\n if (this.serial) this.serial.reset();\n }\n\n isHalted() { return this.inputs[INPUT_HALTED] != 0; }\n}\n\n", "\nimport { Platform } from \"../common/baseplatform\";\nimport { EmuHalt, PLATFORMS } from \"../common/emu\";\nimport { Devel6502 } from \"../machine/devel\";\nimport { Base6502MachinePlatform } from \"../common/baseplatform\";\nimport { SerialIOInterface } from \"../common/devices\";\nimport { byteArrayToString, convertDataToUint8Array } from \"../common/util\";\nimport { TeleType } from \"../common/teletype\";\nimport { haltEmulation } from \"../ide/ui\";\n\nvar DEVEL_6502_PRESETS = [\n {id:'hello.dasm', name:'Hello World (ASM)'},\n];\n\nclass SerialInOutViewer {\n div : HTMLElement;\n tty : TeleType;\n \n constructor(div: HTMLElement) {\n div.style.overflowY = 'auto';\n var gameport = $('<div id=\"gameport\"/>').appendTo(div);\n $('<p class=\"transcript-header\">Serial Output</p>').appendTo(gameport);\n var windowport = $('<div id=\"windowport\" class=\"transcript\"/>').appendTo(gameport);\n this.div = windowport[0];\n }\n start() {\n this.tty = new TeleType(this.div, false);\n //this.tty.ncols = 40;\n }\n reset() {\n this.tty.clear();\n }\n saveState() {\n return this.tty.saveState();\n }\n loadState(state) {\n this.tty.loadState(state);\n }\n}\n\nfunction byteToASCII(b: number) : string {\n if (b == 10) return '';\n if (b < 32)\n return String.fromCharCode(b + 0x2400);\n else\n return String.fromCharCode(b);\n}\n\nexport class SerialTestHarness implements SerialIOInterface {\n\n viewer : SerialInOutViewer;\n bufferedRead : boolean = true;\n cyclesPerByte = 1000000/(57600/8); // 138.88888 cycles\n maxOutputBytes = 4096;\n inputBytes : Uint8Array;\n\n outputBytes : number[];\n inputIndex : number;\n clk : number;\n bufin : string;\n\n clearToSend(): boolean {\n return this.outputBytes.length < this.maxOutputBytes;\n }\n sendByte(b: number) {\n if (this.clearToSend()) {\n this.outputBytes.push(b);\n this.viewer.tty.addtext(byteToASCII(b), 2|32);\n if (b == 10) this.viewer.tty.newline();\n if (!this.clearToSend()) {\n this.viewer.tty.newline();\n this.viewer.tty.addtext(\"\u26A0\uFE0F OUTPUT BUFFER FULL \u26A0\uFE0F\", 4);\n }\n }\n }\n byteAvailable(): boolean {\n return this.readIndex() > this.inputIndex;\n }\n recvByte(): number {\n var index = this.readIndex();\n this.inputIndex = index;\n var b = (this.inputBytes && this.inputBytes[index]) | 0;\n //this.bufin += byteToASCII(b);\n this.viewer.tty.addtext(byteToASCII(b), 2|16);\n if (b == 10) this.viewer.tty.newline();\n return b;\n }\n readIndex(): number {\n return this.bufferedRead ? (this.inputIndex+1) : Math.floor(this.clk / this.cyclesPerByte);\n }\n\n reset() {\n this.inputIndex = -1;\n this.clk = 0;\n this.outputBytes = [];\n this.bufin = '';\n }\n\n advance(clocks: number) {\n this.clk += clocks;\n }\n\n saveState() {\n return {\n clk: this.clk,\n idx: this.inputIndex,\n out: this.outputBytes.slice()\n }\n }\n loadState(staLine truncated
"mappings": "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",
"mappings": "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",
"names": ["INPUT_HALTED", "Devel6502", "BasicHeadlessMachine", "MOS6502", "newAddressDecoder", "a", "v", "serial", "trap", "clock", "n", "DEVEL_6502_PRESETS", "SerialInOutViewer", "div", "gameport", "windowport", "TeleType", "state", "byteToASCII", "b", "SerialTestHarness", "index", "clocks", "Devel6502Platform", "Base6502MachinePlatform", "mainElement", "convertDataToUint8Array", "novideo", "byteArrayToString", "haltEmulation", "Devel6502", "a", "PLATFORMS"]
}
+1 -1
View File
@@ -1,2 +1,2 @@
import{b as v,c as P}from"./chunk-DGIZH2KV.js";import{A as p,E as w,J as c,l as u,m,y as g}from"./chunk-V6XWGCKJ.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-TDMLOI3F.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
-2
View File
@@ -1,2 +0,0 @@
import{I as G,m as S,r as k}from"./chunk-6POV4IU3.js";import{$ as C,J as P,V as c,W as v,Y as R}from"./chunk-V6XWGCKJ.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[20736Line truncated
//# sourceMappingURL=exidy-N5QUXVYF.js.map
+2
View File
@@ -0,0 +1,2 @@
import{I as G,m as S,r as k}from"./chunk-AK5O5EFA.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-O2TG5ML4.js.map
@@ -2,6 +2,6 @@
"version": 3,
"sources": ["../src/machine/exidy.ts", "../src/platform/exidy.ts"],
"sourcesContent": ["import { MOS6502 } from \"../common/cpu/MOS6502\";\nimport { BasicScanlineMachine, CPU } from \"../common/devices\";\nimport { KeyFlags, Keys, makeKeycodeMap, newAddressDecoder, newKeyboardHandler } from \"../common/emu\";\nimport { arrayCompare } from \"../common/util\";\n\n// https://github.com/mamedev/mame/blob/e9ac85ca86a873c67d6bc8d7cf2e37bc7696b379/src/mame/exidy/exidy.cpp#L327\n// http://www.arcaderestoration.com/games/9089/Targ.aspx\n// http://www.arcaderestoration.com/memorymap/9089/Targ.aspx\n// http://www.arcaderestoration.com/memorymap/3933/Hard+Hat.aspx\n// https://github.com/mamedev/mame/blob/74c4a0c3774e3aeb4895eb13f3c47773d34ce270/src/mame/shared/exidysound.cpp#L13\n// https://www.mamedev.org/roms/\n\nconst EXIDY_KEYCODE_MAP = makeKeycodeMap([\n [Keys.START, 1, -0x1],\n //[Keys.START, 1, -0x2],\n [Keys.RIGHT, 1, -0x4],\n [Keys.LEFT, 1, -0x8],\n [Keys.A, 1, -0x10],\n [Keys.UP, 1, -0x20],\n [Keys.DOWN, 1, -0x40],\n [Keys.SELECT, 1, -0x80],\n]);\n\nexport interface ExidyGameConfig {\n collision_mask: number; // which collision bits are active\n collision_invert: number; // which collision bits are inverted\n scrnbase: number; // screen RAM base address\n charbase: number; // character generator RAM base address\n}\n\nconst GAME_CONFIG_DEFAULT: ExidyGameConfig = {\n collision_mask: 0x00,\n collision_invert: 0x00,\n scrnbase: 0x4000,\n charbase: 0x4800,\n};\n\nconst GAME_CONFIG_VENTURE: ExidyGameConfig = {\n collision_mask: 0x04, // M1CHAR only\n collision_invert: 0x04, // bit 2 inverted (set = no collision)\n scrnbase: 0x4000,\n charbase: 0x4800,\n};\n\nconst GAME_CONFIG_MOUSETRAP: ExidyGameConfig = {\n collision_mask: 0x14, // M1CHAR + M1M2\n collision_invert: 0x00,\n scrnbase: 0x4000,\n charbase: 0x4800,\n};\n\nconst GAME_CONFIG_PEPPER2: ExidyGameConfig = {\n collision_mask: 0x14,\n collision_invert: 0x04,\n scrnbase: 0x4000,\n charbase: 0x6000,\n};\n\n/*\nROM layout (for homebrew / full-size ROMs):\n0x0000 - 0x7fff: program ROM (mapped at $8000-$FFFF)\n0x8000 - 0x87ff: sprite ROM (2KB, 64 sprites)\n*/\n\nexport class ExidyUGBv2 extends BasicScanlineMachine {\n cpuFrequency = 705562;\n sampleRate = 894886;\n numVisibleScanlines = 256;\n numTotalScanlines = 262;\n cpuCyclesPerLine = 0x150 >> 3;\n canvasWidth = 256;\n defaultROMSize = 0x8000 + 0x2800 + 0x800; // PRG + audio ROM + CHR\n cpu = new MOS6502();\n ram = new Uint8Array(0x7000);\n color_latch = [0x54, 0xee, 0x6b]; // RGB\n palette = [\n 0xff000000, 0xff0000ff, 0xffff0000, 0xffff00ff,\n 0xff00ff00, 0xff00ffff, 0xffffff00, 0xffffffff,\n ];\n sprite_gfx: Uint8Array;\n inputs = new Uint8Array(4);\n keyMap = EXIDY_KEYCODE_MAP;\n handler = newKeyboardHandler(this.inputs, this.keyMap);\n scrnbase = 0x4000;\n charbase = 0x4800;\n\n // per-game collision configuration\n collision_mask = 0x00;\n collision_invert = 0x00;\n current_collision = 0x00;\n\n // PIA 6821 stub registers (for Venture sound board communication)\n pia_regs = new Uint8Array(4);\n\n bus = {\n read: newAddressDecoder([\n [0x0000, 0x03ff, 0, (a) => { return this.ram[a]; }],\n [0x1000, 0x3fff, 0, (a) => { return this.rom[a - 0x1000]; }],\n [0x4000, 0x4fff, 0, (a) => { return this.ram[a]; }],\n [0x5100, 0x51ff, 0x03, (a) => { return a == 3 ? this.int_latch() : this.inputs[a] }],\n [0x5200, 0x520f, 0x03, (a) => { return this.readPIA(a); }],\n [0x6000, 0x6fff, 0, (a) => { return this.ram[a]; }],\n [0x8000, 0xffff, 0, (a) => { return this.rom[a - 0x8000]; }],\n ]),\n write: newAddressDecoder([\n [0x0000, 0x03ff, 0, (a, v) => { this.ram[a] = v; }],\n [0x4000, 0x4fff, 0, (a, v) => { this.ram[a] = v; }],\n [0x5000, 0x5101, 0, (a, v) => { this.ram[a] = v; }],\n [0x5200, 0x520f, 0x03, (a, v) => { this.writePIA(a, v); }],\n [0x5210, 0x5212, 3, (a, v) => { this.setColorLatch(a, v); }],\n [0x6000, 0x6fff, 0, (a, v) => { this.ram[a] = v; }],\n ]),\n }\n\n constructor() {\n super();\n this.connectCPUMemoryBus(this);\n this.updatePalette();\n this.inputs[0] = 0b11101010; // dip switch\n this.inputs[1] = 0b11111111; // active low\n }\n\n configure(config: ExidyGameConfig) {\n this.collision_mask = config.collision_mask;\n this.collision_invert = config.collision_invert;\n this.scrnbase = config.scrnbase;\n this.charbase = config.charbase;\n }\n\n loadROM(rom: Uint8Array) {\n super.loadROM(rom);\n if (rom.length == 11616) { // targ\n this.rom.set(rom.slice(0x2800, 0x3000), 0x8000); // copy sprites\n this.rom.set(rom.slice(0x2700, 0x2800), 0x7f00); // copy ff00-ffff\n this.rom.set(rLine truncated
"mappings": "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 truncated
"mappings": "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 truncated
"names": ["EXIDY_KEYCODE_MAP", "makeKeycodeMap", "Keys", "GAME_CONFIG_VENTURE", "ExidyUGBv2", "BasicScanlineMachine", "MOS6502", "EXIDY_KEYCODE_MAP", "newKeyboardHandler", "newAddressDecoder", "a", "v", "config", "rom", "GAME_CONFIG_VENTURE", "sprite_ofs", "intsrc", "collision", "xpos", "ypos", "sx", "sy", "sprite_enable", "set", "ofs", "row", "py", "tileRow", "charY", "pixL", "pixR", "col", "pix", "bit", "px", "tileCol", "code", "x1", "y1", "x2", "y2", "set1", "spr1", "set2", "spr2", "overlapX0", "overlapX1", "overlapY0", "overlapY1", "row1", "row2", "col1", "col2", "pix1", "bit1", "pix2", "bit2", "index", "dipsw", "g", "b", "RGB8", "palind", "yofs", "x", "dx", "sprite", "y", "color1", "RGB8", "EXIDY_PRESETS", "ExidyUGBPlatform", "Base6502MachinePlatform", "ExidyUGBv2", "a", "PLATFORMS"]
}
+2
View File
@@ -0,0 +1,2 @@
import{J as Q,c as z,d as X,e as L,k as j,r as J}from"./chunk-AK5O5EFA.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-FT2MWJIM.js.map
@@ -2,6 +2,6 @@
"version": 3,
"sources": ["../src/machine/galaxian.ts", "../src/platform/galaxian.ts"],
"sourcesContent": ["\nimport { Z80, Z80State } from \"../common/cpu/ZilogZ80\";\nimport { BasicScanlineMachine } from \"../common/devices\";\nimport { KeyFlags, newAddressDecoder, padBytes, noise, Keys, makeKeycodeMap, newKeyboardHandler, EmuHalt } from \"../common/emu\";\nimport { TssChannelAdapter, MasterAudio, AY38910_Audio } from \"../common/audio\";\nimport { hex } from \"../common/util\";\n\nconst GALAXIAN_KEYCODE_MAP = makeKeycodeMap([\n [Keys.A, 0, 0x10], // P1\n [Keys.LEFT, 0, 0x4],\n [Keys.RIGHT, 0, 0x8],\n [Keys.P2_A, 1, 0x10], // P2\n [Keys.P2_LEFT, 1, 0x4],\n [Keys.P2_RIGHT, 1, 0x8],\n [Keys.SELECT, 0, 0x1],\n [Keys.START, 1, 0x1],\n [Keys.VK_2, 1, 0x2],\n]);\n\nconst SCRAMBLE_KEYCODE_MAP = makeKeycodeMap([\n [Keys.UP, 0, -0x1], // P1\n [Keys.B, 0, -0x2], // fire\n [Keys.VK_7, 0, -0x4], // credit\n [Keys.A, 0, -0x8], // bomb\n [Keys.RIGHT, 0, -0x10],\n [Keys.LEFT, 0, -0x20],\n [Keys.VK_6, 0, -0x40],\n [Keys.SELECT, 0, -0x80],\n [Keys.START, 1, -0x80],\n [Keys.VK_2, 1, -0x40],\n [Keys.DOWN, 2, -0x40],\n //[Keys.VK_UP, 2, -0x10],\n]);\n\nconst bitcolors = [\n 0x000021, 0x000047, 0x000097, // red\n 0x002100, 0x004700, 0x009700, // green\n 0x510000, 0xae0000 // blue\n];\n\nconst GalaxianVideo = function (rom: Uint8Array, vram: Uint8Array, oram: Uint8Array, palette: Uint32Array, options) {\n\n var gfxBase = options.gfxBase || 0x2800;\n this.missileWidth = options.missileWidth || 4;\n this.missileOffset = options.missileOffset || 0;\n this.showOffscreenObjects = false;\n this.frameCounter = 0;\n this.starsEnabled = 0;\n var stars = [];\n for (var i = 0; i < 256; i++)\n stars[i] = noise();\n\n this.advanceFrame = function () {\n this.frameCounter = (this.frameCounter + 1) & 0xff;\n }\n\n this.drawScanline = function (pixels, sl) {\n var pixofs = sl * 264;\n // hide offscreen on left + right (b/c rotated)\n if (!this.showOffscreenObjects && (sl < 16 || sl >= 240)) {\n for (var i = 0; i < 264; i++)\n pixels[pixofs + i] = 0xff000000;\n return; // offscreen\n }\n // draw tiles\n var outi = pixofs; // starting output pixel in frame buffer\n for (var xx = 0; xx < 32; xx++) {\n var xofs = xx;\n var scroll = oram[xofs * 2]; // even entries control scroll position\n var attrib = oram[xofs * 2 + 1]; // odd entries control the color base\n var sl2 = (sl + scroll) & 0xff;\n var vramofs = (sl2 >> 3) << 5; // offset in VRAM\n var yy = sl2 & 7; // y offset within tile\n var tile = vram[vramofs + xofs]; // TODO: why undefined?\n var color0 = (attrib & 7) << 2;\n var addr = gfxBase + (tile << 3) + yy;\n var data1 = rom[addr];\n var data2 = rom[addr + 0x800];\n for (var i = 0; i < 8; i++) {\n var bm = 128 >> i;\n var color = color0 + ((data1 & bm) ? 1 : 0) + ((data2 & bm) ? 2 : 0);\n pixels[outi] = palette[color];\n outi++;\n }\n }\n // draw sprites\n for (var sprnum = 7; sprnum >= 0; sprnum--) {\n var base = (sprnum << 2) + 0x40;\n var base0 = oram[base];\n var sy = 240 - (base0 - ((sprnum < 3) ? 1 : 0)); // the first three sprites match against y-1\n var yy = (sl - sy);\n if (yy >= 0 && yy < 16) {\n var sx = oram[base + 3] + 1; // +1 pixel offset from tiles\n if (sx == 0 && !this.showOffscreenObjects) {\n continue; // drawn off-buffer\n }\n var code = oram[base + 1];\n var flipx = code & 0x40; // TODO: flipx\n if (code & 0x80) // flipy\n yy = 15 - yy;\n code &= 0x3f;\n var color0 = (oram[base + 2] & 7) << 2;\n var addr = gfxBase + (code << 5) + (yy < 8 ? yy : yy + 8);\n outi = pixofs + sx; //<< 1\n var data1 = rom[addr];\n var data2 = rom[addr + 0x800];\n for (var i = 0; i < 8; i++) {\n var bm = 128 >> i;\n var color = ((data1 & bm) ? 1 : 0) + ((data2 & bm) ? 2 : 0);\n if (color)\n pixels[flipx ? (outi + 15 - i) : (outi + i)] = palette[color0 + color];\n }\n var data1 = rom[addr + 8];\n var data2 = rom[addr + 0x808];\n for (var i = 0; i < 8; i++) {\n var bm = 128 >> i;\n var color = ((data1 & bm) ? 1 : 0) + ((data2 & bm) ? 2 : 0);\n if (color)\n pixels[flipx ? (outi + 7 - i) : (outi + i + 8)] = palette[color0 + color];\n }\n }\n }\n // draw bLine truncated
"mappings": "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 truncated
"mappings": "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 truncated
"names": ["GALAXIAN_KEYCODE_MAP", "makeKeycodeMap", "Keys", "SCRAMBLE_KEYCODE_MAP", "bitcolors", "GalaxianVideo", "rom", "vram", "oram", "palette", "options", "gfxBase", "stars", "i", "noise", "pixels", "sl", "pixofs", "outi", "xx", "xofs", "scroll", "attrib", "sl2", "vramofs", "yy", "tile", "color0", "addr", "data1", "data2", "bm", "color", "sprnum", "base", "base0", "sy", "sx", "code", "flipx", "shell", "missile", "which", "col", "j", "starx", "XTAL", "scanlinesPerFrame", "cpuFrequency", "hsyncFrequency", "vsyncFrequency", "vblankDuration", "cpuCyclesPerLine", "INITIAL_WATCHDOG", "audioOversample", "audioSampleRate", "GalaxianMachine", "BasicScanlineMachine", "Z80", "newAddressDecoder", "a", "v", "audio", "MasterAudio", "AY38910_Audio", "TssChannelAdapter", "newKeyboardHandler", "val", "trap", "steps", "EmuHalt", "data", "padBytes", "b", "state", "GalaxianScrambleMachine", "bit", "GALAXIAN_PRESETS", "GalaxianPlatform", "BaseZ80MachinePlatform", "GalaxianMachine", "a", "GalaxianScramblePlatform", "GalaxianScrambleMachine", "PLATFORMS"]
}
-2
View File
@@ -1,2 +0,0 @@
import{J as Q,c as z,d as X,e as L,k as j,r as J}from"./chunk-6POV4IU3.js";import{$ as _,J as P,K as N,S as Y,V as s,W as q,Y as F,_ as Z}from"./chunk-V6XWGCKJ.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-SXQBRS3Y.js.map
-15
View File
@@ -1,15 +0,0 @@
import{a as D}from"./chunk-A7SWO6EA.js";import{C as K,E as $,G as Y,H as J,r as Z,u as V}from"./chunk-6POV4IU3.js";import{$ as W,J as j,S as z,V as f,W as O,Y as N,g as x}from"./chunk-V6XWGCKJ.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)+`
BGP `+x(this.bgp,2)+" OBP0 "+x(this.obp0,2)+`
OBP1 `+x(this.obp1,2)+" DMA "+x(this.dma,2)+`
IF `+x(this.iflag,2)+" IE "+x(this.ie,2)+`
DIV `+x(this.divCounter>>8&255,2)+" TIMA "+x(this.tima,2)+`
TMA `+x(this.tma,2)+" TAC "+x(this.tac,2)+`
Bank `+this.romBank+`
`;return this.cgbMode&&(i+=`--- CGB ---
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-4L6N3PVF.js.map
+15
View File
@@ -0,0 +1,15 @@
import{a as D}from"./chunk-A7SWO6EA.js";import{C as K,E as $,G as Y,H as J,r as Z,u as V}from"./chunk-AK5O5EFA.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)+`
BGP `+x(this.bgp,2)+" OBP0 "+x(this.obp0,2)+`
OBP1 `+x(this.obp1,2)+" DMA "+x(this.dma,2)+`
IF `+x(this.iflag,2)+" IE "+x(this.ie,2)+`
DIV `+x(this.divCounter>>8&255,2)+" TIMA "+x(this.tima,2)+`
TMA `+x(this.tma,2)+" TAC "+x(this.tac,2)+`
Bank `+this.romBank+`
`;return this.cgbMode&&(i+=`--- CGB ---
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-NKAUJQJ5.js.map
@@ -2,6 +2,6 @@
"version": 3,
"sources": ["../src/common/cpu/SM83.ts", "../src/machine/gb.ts", "../src/common/cpu/disasmSM83.ts", "../src/platform/gb.ts"],
"sourcesContent": ["\nimport { Bus, CPU, InstructionBased, Interruptable, MemoryBusConnected, SavesState } from \"../devices\";\n\nexport interface SM83State {\n PC: number;\n SP: number;\n AF: number;\n BC: number;\n DE: number;\n HL: number;\n o: number; // last opcode\n ime: number;\n halted: boolean;\n interrupt: number;\n}\n\n// SM83 CPU \u2014 the Game Boy's modified Z80\n// No IX/IY, no shadow registers, no I/R, no IO bus\n// 4 flags only: Z(7), N(6), H(5), C(4) in F register\n// CB prefix for bit ops + SWAP\n// Single IME flag, memory-mapped IF/IE\n\nexport class SM83 implements CPU, InstructionBased, SavesState<SM83State>, Interruptable<number>, MemoryBusConnected {\n\n // Registers\n A: number = 0;\n F: number = 0;\n B: number = 0;\n C: number = 0;\n D: number = 0;\n E: number = 0;\n H: number = 0;\n L: number = 0;\n SP: number = 0xFFFE;\n PC: number = 0x0100;\n\n // Interrupt master enable\n ime: boolean = false;\n imeDelay: boolean = false; // EI delays by one instruction\n halted: boolean = false;\n // Pending interrupt request (set by machine via interrupt())\n interruptFlags: number = 0;\n\n bus: Bus;\n cyclesPerInsn: number = 0;\n o: number = 0; // last opcode\n stable: boolean = true;\n\n // Flag bit positions in F register\n static FLAG_Z = 0x80;\n static FLAG_N = 0x40;\n static FLAG_H = 0x20;\n static FLAG_C = 0x10;\n\n connectMemoryBus(bus: Bus): void {\n this.bus = bus;\n }\n\n reset(): void {\n // After boot ROM, typical state:\n this.A = 0x01;\n this.F = 0xB0;\n this.B = 0x00;\n this.C = 0x13;\n this.D = 0x00;\n this.E = 0xD8;\n this.H = 0x01;\n this.L = 0x4D;\n this.SP = 0xFFFE;\n this.PC = 0x0100;\n this.ime = false;\n this.imeDelay = false;\n this.halted = false;\n this.interruptFlags = 0;\n }\n\n interrupt(type: number): void {\n this.interruptFlags |= type;\n }\n\n getPC(): number { return this.PC; }\n getSP(): number { return this.SP; }\n isStable(): boolean { return this.stable; }\n\n saveState(): SM83State {\n return {\n PC: this.PC,\n SP: this.SP,\n AF: (this.A << 8) | this.F,\n BC: (this.B << 8) | this.C,\n DE: (this.D << 8) | this.E,\n HL: (this.H << 8) | this.L,\n o: this.o,\n ime: this.ime ? 1 : 0,\n halted: this.halted,\n interrupt: this.interruptFlags,\n };\n }\n\n loadState(state: SM83State): void {\n this.PC = state.PC;\n this.SP = state.SP;\n this.A = (state.AF >> 8) & 0xFF;\n this.F = state.AF & 0xF0; // lower 4 bits always 0\n this.B = (state.BC >> 8) & 0xFF;\n this.C = state.BC & 0xFF;\n this.D = (state.DE >> 8) & 0xFF;\n this.E = state.DE & 0xFF;\n this.H = (state.HL >> 8) & 0xFF;\n this.L = state.HL & 0xFF;\n this.o = state.o;\n this.ime = !!state.ime;\n this.halted = state.halted;\n this.interruptFlags = state.interrupt;\n }\n\n // Helper accessors for 16-bit register pairs\n getAF(): number { return (this.A << 8) | (this.F & 0xF0); }\n getBC(): number { return (this.B << 8) | this.C; }\n getDE(): number { return (this.D << 8) | this.E; }\n getHL(): number { return (this.H << 8) | this.L; }\n\n setAF(v: number): void { this.A = (v >> 8) & 0xFF; this.F = v & 0xF0; }\n setBC(v: number): void { this.B = (v >> 8) & 0xFF; this.C = v & 0xFF; }\n setDE(v: number): void { this.D = (v >> 8) & 0xFF; this.E = v & 0xFF; }\n setHL(v: number): void { this.H = (v >> 8) & 0xFF; this.L = v & 0xFF; }\n\n // Memory helpers\n read(addr: number): number {\n return this.bus.read(addr & 0xFFFF);\n }\n write(addr: number, val: number): void {\n this.bus.write(addr & 0xFFFF, val & 0xFF);\n }\n readWord(addr: number): number {\n return this.read(addr) | (this.read(addr + 1) << 8);\n }\n writeWord(addr: number, val: number): void {\n this.write(addr, val & 0xFF);\n this.write(addr + 1, (val >> 8) & 0xFF);\n }\n\n // Fetch byte at PC, advance PC\n fetchByte(): number {\n var v = this.read(this.PC);\n this.PC = (this.PC + 1) & 0xFFFF;\n return v;\n }\n fetchWord(): number {\n var lo = this.fetchByte();\n var hi = this.fetchByte();\n return (hi << 8) | lo;\n }\n fetchSignedByte(): number {\n var v = this.fetchByte();\n return v < 128 ? v : v - 256;\n }\n\n // Stack helpers\n pushWord(val: number): void {\n this.SP = (this.SP - 1) & 0xFFFF;\n this.write(this.SP, (val >> 8) & 0xFF);\n this.SP = (this.SP - 1) & 0xFFFF;\n this.write(this.SP, val & 0xFF);\n }\n popWord(): number {\n var lo = this.read(this.SP);\n this.SP = (this.SP + 1) & 0xFFFF;\n var hi = this.read(this.SP);\n this.SP = (this.SP + 1) & 0xFFFF;\n return (hi << 8) | lo;\n }\n\n // Flag helpers\n getZ(): boolean { return !!(this.F & SM83.FLAG_Z); }\n getN(): boolean { return !!(this.F & SM83.FLAG_N); }\n getH(): boolean { return !!(this.F & SM83.FLAG_H); }\n getC(): boolean { return !!(this.F & SM83.FLAG_C); }\n\n setZ(b: boolean): Line truncated
"mappings": "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 truncated
"mappings": "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 truncated
"names": ["_SM83", "bus", "type", "state", "v", "addr", "val", "lo", "hi", "b", "z", "n", "h", "c", "i", "cc", "result", "carry", "op", "hl", "a", "opcode", "reg", "cycles", "bit", "intCycles", "x", "y", "p", "q", "e", "bit7", "bit0", "cbop", "SM83", "cgbColorToARGB", "lo", "hi", "r5", "g5", "b5", "r8", "g8", "b8", "GB_KEYCODE_MAP", "makeKeycodeMap", "Keys", "DUTY_TABLE", "NR_READ_MASKS", "GameBoyAPU", "addr", "val", "regIndex", "wasEnabled", "divisor", "newFreq", "tCycles", "t", "sampleByte", "xor", "ch1out", "ch2out", "ch3out", "ch4out", "waveSample", "dac1", "dac2", "dac3", "dac4", "left", "right", "leftVol", "rightVol", "state", "GameBoyMachine", "BasicScanlineMachine", "SM83", "newAddressDecoder", "a", "v", "newKeyboardHandler", "bank", "fullAddr", "offset", "result", "srcBase", "length", "src", "dst", "i", "cycles", "timerPeriod", "pending", "handled", "oldFlags", "c", "n", "samplePeriod", "oldMode", "mCycles", "lineOffset", "x", "DMG_PALETTE", "palette", "colorIndex", "shade", "cram", "paletteNum", "idx", "tileMap", "signed", "y", "tileRow", "tileYOffset", "scrolledX", "tileCol", "tileXBit", "mapOffset", "tileIndex", "tileAddr", "attr", "cgbPalette", "vramBank", "xFlip", "yFlip", "bgPri", "tileY", "tileBit", "wxAdjusted", "winY", "drawn", "winX", "spriteHeight", "spritesOnLine", "sprites", "b", "si", "spriteIndex", "yPos", "xPos", "flags", "bgPriority", "spriteVramBank", "px", "screenX", "bit", "bgMaster", "bgColor", "data", "title", "cartType", "EmuHalt", "cgbFlag", "numBanks", "io", "cgb", "category", "s", "hex", "SM83_OPS", "SM83_OPS_CB", "disassembleSM83", "pc", "b0", "b1", "b2", "am", "n", "isaddr", "hex", "operand", "offset", "GB_PRESETS", "GameBoyPlatform", "BaseMachinePlatform", "getToolForFilename_z80", "GameBoyMachine", "a", "isDebuggable", "category", "state", "cpuStateToLongString_SM83", "sp", "start", "end", "dumpStackToString", "pc", "read", "disassembleSM83", "GBC_PRESETS", "GameBoyColorPlatform", "m", "PLATFORMS"]
}
+32
View File
@@ -101,6 +101,9 @@ class CodeProject {
this.tools_preloaded = {};
this.isCompiling = false;
this.filename2path = {}; // map stripped paths to full paths
// pending ad-hoc worker queries (queryWorker), keyed by qid
this.pendingQueries = {};
this.queryCounter = 0;
this.worker = worker;
this.platform_id = platform_id;
this.platform = platform;
@@ -120,6 +123,15 @@ class CodeProject {
});
}
receiveWorkerMessage(data) {
// ad-hoc query responses (queryWorker) are tagged with a qid
if (data && data.qid != null) {
var qfn = this.pendingQueries[data.qid];
if (qfn) {
delete this.pendingQueries[data.qid];
qfn(data);
}
return;
}
var notfinal = this.pendingWorkerMessages > 1;
if (notfinal) {
this.sendBuild();
@@ -143,6 +155,26 @@ class CodeProject {
}
this.callbackBuildResult(data);
}
/**
* Send an ad-hoc message to the worker and await its (qid-tagged) response.
* Used for non-build queries like readshared/listshared. Resolves with the
* raw WorkerResult, or null on timeout.
*/
queryWorker(msg) {
return new Promise((resolve) => {
var qid = ++this.queryCounter;
this.pendingQueries[qid] = (result) => {
clearTimeout(timer);
resolve(result);
};
var timer = setTimeout(() => {
delete this.pendingQueries[qid];
resolve(null);
}, 15000);
msg.qid = qid;
this.worker.postMessage(msg);
});
}
getToolForFilename(path) {
if (this.remoteTool) {
return "remote:" + this.remoteTool;
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/ide/project.ts"],"names":[],"mappings":"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 truncated
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/ide/project.ts"],"names":[],"mappings":"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 truncated
+6 -1
View File
@@ -12,6 +12,7 @@ const autocomplete_1 = require("@codemirror/autocomplete");
const language_1 = require("@codemirror/language");
const state_1 = require("@codemirror/state");
const view_1 = require("@codemirror/view");
const util_1 = require("../common/util");
const debug_1 = require("./views/debug");
const tabs_1 = require("./views/tabs");
exports.highlightSpecialCharsCompartment = new state_1.Compartment();
@@ -72,6 +73,7 @@ function applySettingsToAll(settings) {
}
function openSettings() {
var settings = loadSettings();
var showInternal = !(0, util_1.isProductionHost)();
bootbox.dialog({
onEscape: true,
title: "Settings",
@@ -83,9 +85,11 @@ function openSettings() {
<div class="checkbox"><label><input type="checkbox" id="setting_highlightWhitespace" ${settings.highlightWhitespace ? 'checked' : ''}> Highlight whitespace</label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_highlightTrailingWhitespace" ${settings.highlightTrailingWhitespace ? 'checked' : ''}> Highlight unwanted trailing whitespace</label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_closeBrackets" ${settings.closeBrackets ? 'checked' : ''}> Automatically add and remove closing brackets</label></div>
${showInternal ? `
<hr>
<h5>8bitworkshop IDE internal settings</h5>
<div class="checkbox"><label><input type="checkbox" id="setting_debugHighlightTags" ${settings.debugHighlightTags ? 'checked' : ''}> Debug editor syntax highlighting tags</label></div>
` : ''}
</form>`,
buttons: {
cancel: {
@@ -102,7 +106,8 @@ function openSettings() {
settings.highlightWhitespace = $('#setting_highlightWhitespace').is(':checked');
settings.highlightTrailingWhitespace = $('#setting_highlightTrailingWhitespace').is(':checked');
settings.closeBrackets = $('#setting_closeBrackets').is(':checked');
settings.debugHighlightTags = $('#setting_debugHighlightTags').is(':checked');
if (showInternal)
settings.debugHighlightTags = $('#setting_debugHighlightTags').is(':checked');
saveSettings(settings);
applySettingsToAll(settings);
}
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/ide/settings.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/ide/settings.ts"],"names":[],"mappings":"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"}
+43 -4
View File
@@ -39,6 +39,7 @@ exports.getPlatformStore = getPlatformStore;
exports.getCurrentProject = getCurrentProject;
exports.getCurrentOutput = getCurrentOutput;
exports.getWorkerParams = getWorkerParams;
exports.openHeaderFile = openHeaderFile;
exports.getCurrentMainFilename = getCurrentMainFilename;
exports.getCurrentEditorFilename = getCurrentEditorFilename;
exports.setupBreakpoint = setupBreakpoint;
@@ -284,6 +285,20 @@ function newDropdownListItem(id, text) {
li.appendChild(a);
return { li, a };
}
// Toolchain headers opened via include badges: each gets its own window
// entry (alongside the listings) so it shows in the window list.
var openHeaderViews = [];
function openHeaderFile(fn) {
if (!openHeaderViews.includes(fn)) {
openHeaderViews.push(fn);
exports.projectWindows.setCreateFunc('#headerview/' + encodeURIComponent(fn), () => new editors_1.HeaderView(fn));
refreshWindowList();
}
var hash = '#headerview/' + encodeURIComponent(fn);
if (window.location.hash !== hash) {
window.location.hash = hash.substring(1);
}
}
function refreshWindowList() {
var ul = $("#windowMenuList").empty();
var separate = false;
@@ -347,6 +362,14 @@ function refreshWindowList() {
}
}
}
// add opened toolchain headers (from include badges)
for (let hdrfn of openHeaderViews) {
let hdrid = '#headerview/' + encodeURIComponent(hdrfn);
exports.projectWindows.setCreateFunc(hdrid, () => new editors_1.HeaderView(hdrfn));
addWindowItem(hdrid, (0, util_1.getFilenameForPath)(hdrfn), () => {
return new editors_1.HeaderView(hdrfn);
});
}
// add other tools
separate = true;
if (exports.platform.disassemble && exports.platform.saveState) {
@@ -1787,7 +1810,7 @@ async function showWelcomeMessage() {
content: "This site works best on desktop browsers. For best results, rotate your device to landscape orientation."
});
}
if (window.location.host.endsWith('8bitworkshop.com')) {
if ((0, util_1.isProductionHost)()) {
steps.unshift({
element: "#dropdownMenuButton",
placement: 'right',
@@ -1879,6 +1902,12 @@ function hashToViewIdResolved(hash) {
// check for extended asset editor hash (e.g. #asseteditor/filename/startline)
if (id.startsWith('asseteditor/'))
return '#asseteditor';
// check for header viewer window (e.g. #headerview/nes.h); lazily register
// so direct-hash navigation works too
if (id.startsWith('headerview/')) {
openHeaderFile(id.substring('headerview/'.length));
return '#' + id;
}
// check if it's a registered tool window (e.g. #asseteditor)
if (exports.projectWindows.isWindow('#' + id))
return '#' + id;
@@ -1891,8 +1920,18 @@ function installHashChangeHandler() {
function onHashChange() {
const hash = window.location.hash;
const viewId = (hash && hash !== '#') ? hashToViewIdResolved(hash) : null;
if (viewId && viewId !== exports.projectWindows.getActiveID()) {
exports.projectWindows.createOrShow(viewId);
if (viewId) {
if (viewId !== exports.projectWindows.getActiveID()) {
exports.projectWindows.createOrShow(viewId);
}
}
else {
// empty/unrecognized hash -- e.g. Back button from an extended hash like
// #headerview/foo.h, since the main file's URL has no hash. Show main file.
const mainFile = exports.current_project.mainPath;
if (mainFile && exports.projectWindows.getActiveID() != mainFile) {
exports.projectWindows.createOrShow(mainFile);
}
}
}
window.addEventListener('popstate', onHashChange);
@@ -2238,7 +2277,7 @@ function _switchToHTTPS() {
});
}
function redirectToHTTPS() {
if (window.location.protocol == 'http:' && window.location.host == '8bitworkshop.com') {
if (window.location.protocol == 'http:' && (0, util_1.isProductionHost)()) {
if (shouldRedirectHTTPS()) {
uninstallErrorHandler();
window.location.replace(window.location.href.replace(/^http:/, 'https:'));
+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
+157 -1
View File
@@ -1,7 +1,9 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ListingView = exports.DisassemblerView = exports.SourceEditor = exports.textMapFunctions = exports.PC_LINE_LOOKAHEAD = void 0;
exports.HeaderView = exports.ListingView = exports.DisassemblerView = exports.SourceEditor = exports.textMapFunctions = exports.PC_LINE_LOOKAHEAD = void 0;
exports.setUppercaseOnly = setUppercaseOnly;
exports.resolveIncludeFile = resolveIncludeFile;
exports.lookupSharedFileText = lookupSharedFileText;
const commands_1 = require("@codemirror/commands");
const lang_cpp_1 = require("@codemirror/lang-cpp");
const lang_markdown_1 = require("@codemirror/lang-markdown");
@@ -11,6 +13,7 @@ const state_1 = require("@codemirror/state");
const view_1 = require("@codemirror/view");
const probe_1 = require("../../common/probe");
const util_1 = require("../../common/util");
const toolmeta_1 = require("../../common/toolmeta");
const lang_6502_1 = require("../../parser/lang-6502");
const lang_basic_1 = require("../../parser/lang-basic");
const lang_bataribasic_1 = require("../../parser/lang-bataribasic");
@@ -25,8 +28,10 @@ const disassemblyTheme_1 = require("../../themes/disassemblyTheme");
const editorTheme_1 = require("../../themes/editorTheme");
const mbo_1 = require("../../themes/mbo");
const settings_1 = require("../settings");
const tabs_1 = require("./tabs");
const ui_1 = require("../ui");
const assetdecorations_1 = require("./assetdecorations");
const includedecorations_1 = require("./includedecorations");
const baseviews_1 = require("./baseviews");
const filters_1 = require("./filters");
const gutter_1 = require("./gutter");
@@ -209,6 +214,10 @@ class SourceEditor {
}
return 0;
}) : [],
// Asm files: tab/backspace work on inferred tab stops when
// "insert spaces when pressing tab" is enabled. Placed before the
// settings keymap so it takes precedence over indentMore/insertTab.
...(isAsm ? [view_1.keymap.of((0, tabs_1.asmSpacesKeymap)(() => (0, settings_1.loadSettings)().tabsToSpaces))] : []),
// Keybindings from settings must appear before default keymap.
...(0, settings_1.settingsExtensions)((0, settings_1.loadSettings)()),
// https://codemirror.net/docs/ref/#commands.defaultKeymap includes
@@ -281,6 +290,27 @@ class SourceEditor {
(0, assetdecorations_1.createAssetHeaderPlugin)((lineNumber) => {
window.location.hash = 'asseteditor/' + encodeURIComponent(this.path) + '/' + lineNumber;
}),
// badges on include lines (#include, .include, ...) -> read-only view
ui_1.qs['embed'] ? [] : (0, includedecorations_1.createIncludeLinkPlugin)(() => {
var tool = ui_1.current_project && ui_1.current_project.getToolForFilename(this.path);
var platform_id = ui_1.current_project && ui_1.current_project.platform_id;
return [...(0, toolmeta_1.getIncludePatterns)(tool, platform_id),
...(0, toolmeta_1.getLinkPatterns)(tool, platform_id),
...(0, toolmeta_1.getSystemIncludePatterns)(tool)];
}, (filename, system) => {
// quoted includes: project files (presets/local) link to their own
// editor window; fall through to the read-only viewer otherwise
if (!system) {
var path = resolveIncludeFile(filename);
if (path) {
window.location.hash = '#' + encodeURIComponent(path);
return;
}
}
// system headers (<foo.h>) and unresolved files: toolchain
// filesystem via the read-only viewer
(0, ui_1.openHeaderFile)(filename);
}),
filters_1.textTransformFilterCompartment.of([]),
// update file in project (and recompile) when edits made
view_1.EditorView.updateListener.of(update => {
@@ -828,4 +858,130 @@ class ListingView extends DisassemblerView {
}
}
exports.ListingView = ListingView;
///
// Resolve an include filename (e.g. from `#include "foo.h"`) against the files
// loaded in the current project. Tries the bare filename, then relative to the
// main file's folder (same logic as CodeProject.pushAllFiles).
function resolveIncludeFile(fn) {
let candidates = [fn];
try {
var dir = (0, util_1.getFolderForPath)(ui_1.current_project.mainPath);
if (dir.length > 0 && dir != 'local')
candidates.push(dir + '/' + fn);
}
catch (e) {
// no main path yet; bare filename only
}
for (var c of candidates) {
var data = ui_1.current_project && ui_1.current_project.getFile(c);
if (typeof data === 'string')
return c;
}
return null;
}
// Look up an include file inside the toolchain's preload filesystem
// (e.g. /include/nes.h inside the cc65 package), via the worker.
// Results are cached per filesystem+filename.
const sharedFileCache = new Map();
function lookupSharedFileText(fn) {
const tool = ui_1.current_project.getToolForFilename(ui_1.current_project.mainPath);
const fsName = (0, toolmeta_1.getPreloadFSName)(tool, ui_1.current_project.platform_id);
const dirs = (0, toolmeta_1.getIncludeDirs)(tool);
if (!fsName || !dirs.length)
return Promise.resolve(null);
const key = fsName + ':' + fn;
if (!sharedFileCache.has(key)) {
sharedFileCache.set(key, (async () => {
for (var dir of dirs) {
var msg = { preload_fs: fsName, readshared: dir + '/' + fn, updates: [], buildsteps: [] };
var result = await ui_1.current_project.queryWorker(msg);
var output = result && result.output;
if (output instanceof Uint8Array && output.length > 0) {
return new TextDecoder().decode(output);
}
}
return null;
})());
}
return sharedFileCache.get(key);
}
// Read-only viewer for toolchain include files (headers inside the tool's
// preload filesystem), opened by clicking the badge next to an #include line.
// Project files are linked to their own editor windows instead.
// Each opened header gets its own window, id '#headerview/<filename>'.
class HeaderView {
constructor(fn) {
this.fn = fn;
}
createDiv(parent) {
var div = document.createElement('div');
div.setAttribute("class", "editor");
parent.appendChild(div);
const parser = (0, lang_cpp_1.cpp)();
this.view = new view_1.EditorView({
parent: div,
extensions: [
(0, view_1.rectangularSelection)(),
(0, view_1.crosshairCursor)(),
state_1.EditorState.allowMultipleSelections.of(true),
(0, view_1.drawSelection)(),
(0, view_1.highlightActiveLine)(),
(0, search_1.highlightSelectionMatches)(),
(0, search_1.search)({ top: true }),
view_1.keymap.of(search_1.searchKeymap),
parser,
mbo_1.mbo,
editorTheme_1.editorTheme,
state_1.EditorState.readOnly.of(true),
],
});
this.refresh(false);
return div;
}
setVisible(showing) {
if (showing)
this.refresh(false);
}
setHeaderText(text) {
this.view.dispatch({
changes: { from: 0, to: this.view.state.doc.length, insert: text }
});
}
refresh(moveCursor) {
var fn = this.fn;
if (!fn) {
// direct hash navigation: get filename from #headerview/<filename>
var hash = window.location.hash;
if (!hash || !hash.startsWith('#headerview/'))
return;
fn = this.fn = decodeURIComponent(hash.substring('#headerview/'.length));
}
this.loadIncludeFile(fn);
}
async loadIncludeFile(fn) {
this.requestedFn = fn;
// 1) project files (local storage / presets)
var path = resolveIncludeFile(fn);
if (path) {
this.currentPath = path;
this.setHeaderText(ui_1.current_project.getFile(path));
return;
}
// 2) toolchain preload filesystem (via worker)
var text = await lookupSharedFileText(fn);
if (this.requestedFn !== fn)
return; // a newer request superseded us
if (text != null) {
this.currentPath = fn;
this.setHeaderText(text);
return;
}
// not found
this.currentPath = fn;
this.setHeaderText('// ' + fn + ' was not found.\n'
+ '// Project include files are loaded during a build -- try building first.\n'
+ '// Toolchain headers are only available when the tool has a bundled filesystem.');
}
}
exports.HeaderView = HeaderView;
//# sourceMappingURL=editors.js.map
+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
+81
View File
@@ -0,0 +1,81 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.createIncludeLinkPlugin = createIncludeLinkPlugin;
const view_1 = require("@codemirror/view");
// Include link detection — shows a clickable badge on lines with include
// directives (#include, .include, `include, !src, ...) to open a read-only
// view of the referenced file. Patterns come from the tool registry
// (src/common/toolmeta.ts) so all languages are supported.
class IncludeLinkWidget extends view_1.WidgetType {
constructor(filename, system, handleClick) {
super();
this.filename = filename;
this.system = system;
this.handleClick = handleClick;
}
toDOM() {
const span = document.createElement("span");
span.className = "include-link-badge";
span.textContent = "→";
span.title = (this.system ? "System header: " : "View ") + this.filename;
span.addEventListener("click", (e) => {
e.preventDefault();
e.stopPropagation();
this.handleClick(this.filename, this.system);
});
return span;
}
eq(other) { return this.filename === other.filename && this.system === other.system; }
ignoreEvent() { return false; }
}
function buildIncludeLinkDecorations(view, patterns, handleClick) {
const widgets = [];
const doc = view.state.doc;
const seen = new Set(); // dedupe (line number, filename)
for (let { from, to } of view.visibleRanges) {
const text = view.state.sliceDoc(from, to);
for (let pat of patterns) {
const p = pat instanceof RegExp ? { re: pat } : pat;
p.re.lastIndex = 0; // patterns are shared and global, so rewind first
let m;
while ((m = p.re.exec(text))) {
const filename = m[p.group != null ? p.group : m.length - 1];
if (!filename)
continue;
// place widget at end of the line containing the match
const matchEnd = Math.min(from + m.index + m[0].length, doc.length);
const line = doc.lineAt(matchEnd);
const key = line.number + ':' + filename;
if (seen.has(key))
continue;
seen.add(key);
widgets.push(view_1.Decoration.widget({
widget: new IncludeLinkWidget(filename, !!p.system, handleClick),
side: 1,
}).range(line.to));
}
}
}
return view_1.Decoration.set(widgets, true);
}
function createIncludeLinkPlugin(getPatterns, onClick) {
function build(view) {
const patterns = getPatterns();
if (!patterns || !patterns.length)
return view_1.Decoration.none;
return buildIncludeLinkDecorations(view, patterns, onClick);
}
return view_1.ViewPlugin.fromClass(class {
constructor(view) {
this.decorations = build(view);
}
update(update) {
if (update.docChanged || update.viewportChanged) {
this.decorations = build(update.view);
}
}
}, {
decorations: v => v.decorations,
});
}
//# sourceMappingURL=includedecorations.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"includedecorations.js","sourceRoot":"","sources":["../../../src/ide/views/includedecorations.ts"],"names":[],"mappings":"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"}
+218
View File
@@ -1,7 +1,12 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.insertTabKeymap = exports.smartIndentKeymap = void 0;
exports.inferAsmTabStops = inferAsmTabStops;
exports.asmTabChange = asmTabChange;
exports.asmBackspaceRange = asmBackspaceRange;
exports.asmSpacesKeymap = asmSpacesKeymap;
const commands_1 = require("@codemirror/commands");
const state_1 = require("@codemirror/state");
exports.smartIndentKeymap = [
{ key: "Tab", run: commands_1.indentMore },
{ key: "Shift-Tab", run: commands_1.indentLess },
@@ -10,4 +15,217 @@ exports.insertTabKeymap = [
{ key: "Tab", run: commands_1.insertTab },
{ key: "Shift-Tab", run: commands_1.indentLess },
];
// Number of lines scanned in each direction when inferring tab stops.
const ASM_TABSTOP_SCAN_LINES = 50;
// Existing tab characters are assumed to advance to the next multiple of this column.
const TAB_EXPAND_WIDTH = 8;
// Print tab stop inference results to the browser console (for debugging).
const ASM_TAB_DEBUG = true;
function dbgTab(msg) {
if (ASM_TAB_DEBUG)
console.log("[asm-tab] " + msg);
}
// Compute the visual column of character position 'index' within a line,
// expanding tab characters to the next multiple of TAB_EXPAND_WIDTH.
function visualCol(text, index) {
let col = 0;
for (let i = 0; i < index; i++) {
col = text.charCodeAt(i) == 9 ? (Math.floor(col / TAB_EXPAND_WIDTH) + 1) * TAB_EXPAND_WIDTH : col + 1;
}
return col;
}
// Add a candidate stop column to the frequency tally.
function addStop(col, freq) {
if (col > 0)
freq.set(col, (freq.get(col) || 0) + 1);
}
// Collect candidate tab stops from one asm line: the opcode start, operand
// start, and comment start columns (in visual columns, tabs expanded to 8).
// Lines starting at column 0 are assumed to have a label, so the opcode is the
// second word on those lines.
function collectStopsFromLine(text, freq) {
// Visual columns of word starts, stopping at the comment.
const words = [];
const re = /\S+/g;
let m;
while ((m = re.exec(text)) !== null) {
if (text[m.index] == ';')
break;
words.push(visualCol(text, m.index));
}
// Comment start column (';' preceded by whitespace or line start).
const cm = /(^|\s);/.exec(text);
if (cm)
addStop(visualCol(text, cm.index + cm[1].length), freq);
// Skip the label if the line starts in column 0.
const fields = words.length && words[0] == 0 ? words.slice(1) : words;
if (fields.length >= 1)
addStop(fields[0], freq); // opcode column
if (fields.length >= 2)
addStop(fields[1], freq); // operand column
}
// Minimum number of non-empty lines scanned after the cursor before we also
// merge in lines from before it (e.g. when the cursor is near the end of file).
const ASM_TABSTOP_MIN_LINES = 3;
// Infer tab stops for asm files: scan the lines after the current line first;
// if there aren't many of them (or they yield no stops), also merge in the lines
// before it. Returns a frequency tally of stop columns (in visual columns,
// with tabs expanded to 8).
function inferAsmTabStops(state, pos) {
const cur = state.doc.lineAt(pos);
const total = state.doc.lines;
const scan = (from, to, step, freq) => {
let lines = 0;
for (let n = from; n != to && lines < ASM_TABSTOP_SCAN_LINES; n += step) {
const line = state.doc.line(n);
if (line.text.trim()) {
collectStopsFromLine(line.text, freq);
lines++;
}
}
return lines;
};
const freq = new Map();
// Prefer lines after the current line, but merge in lines before it when
// there are too few lines below (cursor near end of file).
const after = scan(cur.number + 1, Math.min(total, cur.number + ASM_TABSTOP_SCAN_LINES) + 1, 1, freq);
if (after < ASM_TABSTOP_MIN_LINES) {
scan(cur.number - 1, Math.max(1, cur.number - ASM_TABSTOP_SCAN_LINES) - 1, -1, freq);
}
return freq;
}
// Most frequent stop greater than col (ties: smallest column),
// or the next grid stop as a fallback.
function nextStop(freq, col, grid) {
let best = -1, bestFreq = 0;
for (const [s, f] of freq) {
if (s > col && (f > bestFreq || (f == bestFreq && s < best))) {
best = s;
bestFreq = f;
}
}
if (best >= 0)
return best;
return (Math.floor(col / grid) + 1) * grid;
}
// Most frequent stop less than col (ties: largest column),
// or the previous grid stop as a fallback.
function prevStop(freq, col, grid) {
let best = -1, bestFreq = 0;
for (const [s, f] of freq) {
if (s < col && (f > bestFreq || (f == bestFreq && s > best))) {
best = s;
bestFreq = f;
}
}
if (best >= 0)
return best;
return Math.max(0, Math.min(Math.floor((col - 1) / grid) * grid, col - 1));
}
// True if the document region near pos contains literal tab characters;
// in that case tab stops fall back to a hard grid of 8 columns.
function docHasTabs(state, pos) {
const cur = state.doc.lineAt(pos);
const fromLine = Math.max(1, cur.number - ASM_TABSTOP_SCAN_LINES);
const toLine = Math.min(state.doc.lines, cur.number + ASM_TABSTOP_SCAN_LINES);
for (let n = fromLine; n <= toLine; n++) {
if (state.doc.line(n).text.includes('\t'))
return true;
}
return false;
}
// Compute the insertion needed for pressing Tab at document position 'head':
// spaces from the cursor up to the next inferred tab stop.
function fmtStops(freq) {
return "[" + [...freq.entries()].sort((a, b) => a[0] - b[0]).map(([s, f]) => `${s}:${f}`).join(" ") + "]";
}
function asmTabChange(state, head) {
const line = state.doc.lineAt(head);
const col = visualCol(line.text, head - line.from);
const hasTabs = docHasTabs(state, head);
const grid = hasTabs ? TAB_EXPAND_WIDTH : state.tabSize;
const stops = inferAsmTabStops(state, head);
const target = nextStop(stops, col, grid);
dbgTab(`Tab @ line ${line.number} col ${col}: stops(col:freq)=${fmtStops(stops)} ${hasTabs ? "grid=8 (file has tabs)" : `grid=${state.tabSize}`} -> target=${target}`
+ ` | line=${JSON.stringify(line.text.slice(0, col))}+CURSOR`);
if (target <= col)
return null;
return { from: head, insert: " ".repeat(target - col) };
}
// Compute the deletion range for Backspace at document position 'head'
// (spaces removed back to the previous inferred tab stop, or a single tab char),
// or null if default backspace behavior should apply.
function asmBackspaceRange(state, head) {
const line = state.doc.lineAt(head);
const index = head - line.from;
if (index == 0) {
dbgTab(`Backspace @ line ${line.number} col 0: start of line, using default`);
return null;
}
// If the character before the cursor is a tab, just delete it.
if (line.text[index - 1] == '\t') {
dbgTab(`Backspace @ line ${line.number} col ${visualCol(line.text, index)}: deleting one tab char`);
return { from: head - 1, to: head };
}
// Only handle cursors inside a pure-whitespace indent region.
if (!/^[ \t]+$/.test(line.text.slice(0, index))) {
dbgTab(`Backspace @ line ${line.number} col ${visualCol(line.text, index)}: cursor not in leading whitespace, using default`);
return null;
}
const hasTabs = docHasTabs(state, head);
const grid = hasTabs ? TAB_EXPAND_WIDTH : state.tabSize;
const col = visualCol(line.text, index);
const stops = inferAsmTabStops(state, head);
const target = prevStop(stops, col, grid);
if (target >= col) {
dbgTab(`Backspace @ line ${line.number} col ${col}: no stop before cursor, using default`);
return null;
}
// Convert target visual column back to a character index (only spaces ahead of us).
const from = head - (col - target);
dbgTab(`Backspace @ line ${line.number} col ${col}: stops(col:freq)=${fmtStops(stops)} ${hasTabs ? "grid=8 (file has tabs)" : `grid=${state.tabSize}`} -> deleting cols ${target}..${col}`
+ ` | line=${JSON.stringify(line.text.slice(0, index))}+CURSOR`);
return { from, to: head };
}
// Insert spaces from the cursor up to the next inferred tab stop.
function asmInsertSpaces(view) {
const state = view.state;
if (state.selection.ranges.some(r => !r.empty))
return false; // let indentMore handle selections
const tr = state.changeByRange(range => {
const change = asmTabChange(state, range.head);
if (!change)
return { range };
return {
changes: change,
range: state_1.EditorSelection.cursor(range.head + change.insert.length),
};
});
view.dispatch(tr);
return true;
}
// Delete spaces from the cursor back to the previous inferred tab stop,
// but only when the cursor sits in leading whitespace.
function asmDeleteSpacesBackward(view) {
const state = view.state;
const range = state.selection.main;
if (!range.empty)
return false;
const del = asmBackspaceRange(state, range.head);
if (!del)
return false;
view.dispatch(state.update({
changes: del,
selection: state_1.EditorSelection.cursor(del.from),
}));
return true;
}
// Keymap for asm editors when "insert spaces when pressing tab" is enabled.
// The callback lets the caller gate the behavior on current settings.
function asmSpacesKeymap(tabsToSpaces) {
return [
{ key: "Tab", run: v => tabsToSpaces() && asmInsertSpaces(v) },
{ key: "Backspace", run: v => tabsToSpaces() && asmDeleteSpacesBackward(v) },
];
}
//# sourceMappingURL=tabs.js.map
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../../src/ide/views/tabs.ts"],"names":[],"mappings":";;;AAAA,mDAAyE;AAG5D,QAAA,iBAAiB,GAAiB;IAC7C,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,qBAAU,EAAE;IAC/B,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,qBAAU,EAAE;CACtC,CAAC;AAEW,QAAA,eAAe,GAAiB;IAC3C,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,oBAAS,EAAE;IAC9B,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,qBAAU,EAAE;CACtC,CAAC"}
{"version":3,"file":"tabs.js","sourceRoot":"","sources":["../../../src/ide/views/tabs.ts"],"names":[],"mappings":"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 truncated
+2 -1
View File
@@ -81,7 +81,8 @@ class ProjectWindows {
document.title = this.titlePrefix + mainName;
}
else {
var viewName = id.startsWith('#') ? id : (0, util_1.getFilenameForPath)(id);
var viewName = id.startsWith('#headerview/') ? id.substring('#headerview/'.length)
: id.startsWith('#') ? id : (0, util_1.getFilenameForPath)(id);
document.title = this.titlePrefix + mainName + ' | ' + viewName;
}
}
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"windows.js","sourceRoot":"","sources":["../../src/ide/windows.ts"],"names":[],"mappings":"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 truncated
{"version":3,"file":"windows.js","sourceRoot":"","sources":["../../src/ide/windows.ts"],"names":[],"mappings":"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 truncated
+2
View File
@@ -0,0 +1,2 @@
import{I as y,m as F,p as V}from"./chunk-AK5O5EFA.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-5GKMRSO5.js.map
@@ -2,6 +2,6 @@
"version": 3,
"sources": ["../src/machine/kim1.ts", "../src/platform/kim1.ts"],
"sourcesContent": ["\nimport { MOS6502, MOS6502State } from \"../common/cpu/MOS6502\";\nimport { BasicHeadlessMachine } from \"../common/devices\";\nimport { padBytes, Keys, KeyFlags, newAddressDecoder } from \"../common/emu\"; // TODO\nimport { hex, stringToByteArray, lzgmini } from \"../common/util\";\n\nconst KIM1_KEYMATRIX_NOSHIFT = [\n Keys.VK_DELETE, Keys.VK_ENTER, Keys.VK_RIGHT, Keys.VK_F7,\tKeys.VK_F1, Keys.VK_F3, Keys.VK_F5, Keys.VK_DOWN,\n Keys.VK_3, Keys.VK_W, Keys.VK_A, Keys.VK_4,\t\t\tKeys.VK_Z, Keys.VK_S, Keys.VK_E, Keys.VK_SHIFT,\n Keys.VK_5, Keys.VK_R, Keys.VK_D, Keys.VK_6,\t\t\tKeys.VK_C, Keys.VK_F, Keys.VK_T, Keys.VK_X,\n Keys.VK_7, Keys.VK_Y, Keys.VK_G, Keys.VK_8,\t\t\tKeys.VK_B, Keys.VK_H, Keys.VK_U, Keys.VK_V,\n Keys.VK_9, Keys.VK_I, Keys.VK_J, Keys.VK_0,\t\t\tKeys.VK_M, Keys.VK_K, Keys.VK_O, Keys.VK_N,\n null/*Keys.VK_PLUS*/, Keys.VK_P, Keys.VK_L, Keys.VK_MINUS,\tKeys.VK_PERIOD, null/*Keys.VK_COLON*/, null/*Keys.VK_AT*/, Keys.VK_COMMA,\n null/*Keys.VK_POUND*/, null/*TIMES*/, Keys.VK_SEMICOLON, Keys.VK_HOME, Keys.VK_SHIFT/*right*/, Keys.VK_EQUALS, Keys.VK_TILDE, Keys.VK_SLASH,\n Keys.VK_1, Keys.VK_LEFT, Keys.VK_CONTROL, Keys.VK_2,\t\tKeys.VK_SPACE, Keys.VK_ALT, Keys.VK_Q, null/*STOP*/,\n];\n\nconst KEYBOARD_ROW_0 = 0;\n\nclass RRIOT_6530 {\n\n regs = new Uint8Array(16);\n ina : number = 0;\n inb : number = 0;\n\n read(a:number) : number {\n //console.log('read', hex(a), hex(this.regs[a]));\n return this.regs[a];\n }\n\n write(a:number,v:number) {\n this.regs[a] = v;\n //console.log('write', hex(a), hex(v));\n }\n \n input_a() { return this.ina & ~this.regs[1]; }\n input_b() { return this.inb & ~this.regs[1]; }\n output_a() { return (this.regs[0] ^ 0xff) | this.regs[1]; }\n output_b() { return (this.regs[2] ^ 0xff) | this.regs[3]; }\n}\n\nexport class KIM1 extends BasicHeadlessMachine {\n cpuFrequency = 1000000;\n defaultROMSize = 0x1000;\n \n cpu = new MOS6502();\n ram = new Uint8Array(0x1800);\n bios : Uint8Array;\n\n rriot1 : RRIOT_6530 = new RRIOT_6530();\n rriot2 : RRIOT_6530 = new RRIOT_6530();\n digits = [];\n\n constructor() {\n super();\n this.bios = new lzgmini().decode(stringToByteArray(atob(KIM1_BIOS_LZG)));\n this.connectCPUMemoryBus(this);\n }\n\n read = newAddressDecoder([\n [0x1700, 0x173f, 0x000f, (a) => { return this.readIO_1(a); }],\n [0x1740, 0x177f, 0x000f, (a) => { return this.readIO_2(a); }],\n [0x0000, 0x17ff, 0x1fff, (a) => { return this.ram[a]; }],\n [0x1800, 0x1fff, 0x07ff, (a) => { return this.bios[a]; }],\n ], {gmask:0x1fff});\n \n write = newAddressDecoder([\n [0x1700, 0x173f, 0x000f, (a,v) => { return this.writeIO_1(a,v); }],\n [0x1740, 0x177f, 0x000f, (a,v) => { return this.writeIO_2(a,v); }],\n [0x0000, 0x17ff, 0x1fff, (a,v) => { this.ram[a] = v; }],\n ], {gmask:0x1fff});\n \n readConst(a:number) : number {\n return this.read(a);\n }\n\n readIO_1(a:number) : number {\n return this.rriot1.read(a);\n }\n \n writeIO_1(a:number, v:number) {\n this.rriot1.write(a,v);\n }\n \n readIO_2(a:number) : number {\n switch (a & 0xf) {\n case 0x0:\n let cols = 0;\n for (let i=0; i<8; i++)\n if ((this.rriot2.regs[0] & (1<<i)) == 0)\n cols |= this.inputs[KEYBOARD_ROW_0 + i];\n //if (cols) console.log(this.rriot1.regs[0], cols);\n this.rriot2.ina = cols ^ 0xff;\n }\n return this.rriot2.read(a);\n }\n \n writeIO_2(a:number, v:number) {\n this.rriot2.write(a,v);\n // update LED\n let digit = this.rriot2.output_a();\n let segments = this.rriot2.output_b();\n console.log(digit, segments);\n }\n \n loadROM(data) {\n super.loadROM(data);\n this.ram.set(this.rom, 0x400);\n this.reset();\n }\n\n loadBIOS(data) {\n this.bios = padBytes(data, 0x800);\n this.reset();\n }\n\n setKeyInput(key:number, code:number, flags:number) : void {\n //console.log(key,code,flags);\n var keymap = KIM1_KEYMATRIX_NOSHIFT;\n for (var i=0; i<keymap.length; i++) {\n if (keymap[i] && keymap[i].c == key) {\n let row = i >> 3;\n let col = i & 7;\n // is column selected?\n if (flags & KeyFlags.KeyDown) {\n this.inputs[KEYBOARD_ROW_0 + row] |= (1<<col);\n } else if (flags & KeyFlags.KeyUp) {\n this.inputs[KEYBOARD_ROW_0 + row] &= ~(1<<col);\n }\n console.log(key, row, col, hex(this.inputs[KEYBOARD_ROW_0 + row]));\n break;\n }\n }\n }\n \n advanceFrame(trap) : number {\n var clock = 0;\n while (clock < this.cpuFrequency/60) {\n if (trap && trap()) break;\n clock += this.advanceCPU();\n }\n return clock;\n }\n}\n\n// https://github.com/jefftranter/6502/blob/master/asm/KIM-1/ROMs/kim.s\nconst KIM1_BIOS_LZG = `TFpHAAAIAAAABY3ivWkoAQsOJSiprY3sFyAyGaknjUIXqb+NQxeiZKkWIHoZytD4qSoo4a35FyBhGa31FyBeGa32KKPtF833F63uF+34F5AkqS8lXeclnegooqICqQQOBTgAhfqF+0xPHCDsJXAg6hlMMxgPGamNDgVrTI3vF61xGI3wF61yGI3xF6kHLine truncated
"mappings": "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",
"mappings": "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",
"names": ["KIM1_KEYMATRIX_NOSHIFT", "Keys", "KEYBOARD_ROW_0", "RRIOT_6530", "a", "v", "KIM1", "BasicHeadlessMachine", "MOS6502", "newAddressDecoder", "lzgmini", "stringToByteArray", "KIM1_BIOS_LZG", "cols", "digit", "segments", "data", "padBytes", "key", "code", "flags", "keymap", "i", "row", "col", "hex", "trap", "clock", "KIM1_PRESETS", "KIM1Platform", "Base6502MachinePlatform", "KIM1", "a", "PLATFORMS"]
}
-2
View File
@@ -1,2 +0,0 @@
import{I as y,m as F,p as V}from"./chunk-6POV4IU3.js";import{$ as f,J as l,V as e,_ as p,g as h,l as I,m as x}from"./chunk-V6XWGCKJ.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-QJVUAZFN.js.map
+2
View File
@@ -0,0 +1,2 @@
import{J as X,c as v,d as Y,e as P,k as z,r as D}from"./chunk-AK5O5EFA.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-ICJ67LBN.js.map
@@ -2,6 +2,6 @@
"version": 3,
"sources": ["../src/machine/mcr.ts", "../src/platform/mcr.ts"],
"sourcesContent": ["// based on https://raw.githubusercontent.com/mamedev/mame/refs/heads/master/src/mame/midway/mcr.cpp\n// license:BSD-3-Clause\n// copyright-holders:Aaron Giles\n\nimport { Z80, Z80State } from \"../common/cpu/ZilogZ80\";\nimport { BasicScanlineMachine } from \"../common/devices\";\nimport { KeyFlags, newAddressDecoder, padBytes, Keys, makeKeycodeMap, newKeyboardHandler, EmuHalt } from \"../common/emu\";\nimport { MasterAudio, AY38910_Audio, TssChannelAdapter } from \"../common/audio\";\n\n// MCR-II constants (91490 CPU board)\nconst MCR2_XTAL = 19968000;\nconst MCR2_CPU_FREQ = MCR2_XTAL / 4; // ~4.992 MHz\nconst MCR2_NUM_VISIBLE_SCANLINES = 480;\nconst MCR2_NUM_TOTAL_SCANLINES = 525;\nconst MCR2_CANVAS_WIDTH = 512;\nconst MCR2_FPS = 30;\nconst MCR2_CYCLES_PER_LINE = Math.floor(MCR2_CPU_FREQ / (MCR2_NUM_TOTAL_SCANLINES * MCR2_FPS));\n\nconst MCR2_TILE_COLS = 32;\nconst MCR2_TILE_ROWS = 30;\nconst MCR2_TILE_SIZE = 8; // double-pixels for BG\n\nconst INITIAL_WATCHDOG = 16;\n\nfunction pal3bit(v: number): number {\n v &= 7;\n return (v << 5) | (v << 2) | (v >> 1);\n}\n\nconst MCR2_KEYCODE_MAP = makeKeycodeMap([\n [Keys.SELECT, 0, 0x1], // Coin 1\n [Keys.START, 0, 0x4], // 1P Start\n [Keys.VK_2, 0, 0x8], // 2P Start\n [Keys.UP, 1, 0x1], // P1 Up\n [Keys.DOWN, 1, 0x2], // P1 Down\n [Keys.LEFT, 1, 0x4], // P1 Left\n [Keys.RIGHT, 1, 0x8], // P1 Right\n [Keys.A, 1, 0x10], // P1 Button 1\n [Keys.B, 1, 0x20], // P1 Button 2\n [Keys.P2_UP, 2, 0x1], // P2 Up\n [Keys.P2_DOWN, 2, 0x2], // P2 Down\n [Keys.P2_LEFT, 2, 0x4], // P2 Left\n [Keys.P2_RIGHT, 2, 0x8], // P2 Right\n [Keys.P2_A, 2, 0x10], // P2 Button 1\n [Keys.P2_B, 2, 0x20], // P2 Button 2\n]);\n\n// ROM blob layout\nconst ROM_PROGRAM_START = 0x0;\nconst ROM_PROGRAM_SIZE = 0xE000;\nconst ROM_BG_GFX_START = ROM_PROGRAM_SIZE;\nconst ROM_BG_GFX_SIZE = 0x4000; // 16KB background tiles (2 bitplanes \u00D7 8KB)\nconst ROM_SPR_GFX_START = ROM_BG_GFX_START + ROM_BG_GFX_SIZE;\nconst ROM_SPR_GFX_SIZE = 0x8000; // 32KB sprites (4 bitplanes \u00D7 8KB)\nconst SSIO_ROM_SIZE = 0x4000;\nconst ROM_TOTAL_SIZE = ROM_PROGRAM_SIZE + ROM_BG_GFX_SIZE + ROM_SPR_GFX_SIZE + SSIO_ROM_SIZE;\n\nexport class MCR2Machine extends BasicScanlineMachine {\n\n cpuFrequency = MCR2_CPU_FREQ;\n canvasWidth = MCR2_CANVAS_WIDTH;\n numVisibleScanlines = MCR2_NUM_VISIBLE_SCANLINES;\n numTotalScanlines = MCR2_NUM_TOTAL_SCANLINES;\n cpuCyclesPerLine = MCR2_CYCLES_PER_LINE;\n defaultROMSize = ROM_TOTAL_SIZE;\n sampleRate = MCR2_FPS * MCR2_NUM_TOTAL_SCANLINES * 2;\n\n cpu = new Z80();\n ram = new Uint8Array(0x800); // E000-E7FF (NVRAM)\n sprram = new Uint8Array(0x200); // E800-E9FF (sprite RAM)\n vram = new Uint8Array(0x800); // F000-F7FF (video RAM)\n palram = new Uint8Array(0x80); // F800-F87F (palette RAM)\n\n palette = new Uint32Array(64);\n\n interruptEnabled = false;\n watchdog_counter = INITIAL_WATCHDOG;\n ctcVector = 0;\n\n audioadapter: TssChannelAdapter;\n psg1: AY38910_Audio;\n psg2: AY38910_Audio;\n\n constructor() {\n super();\n var audio = new MasterAudio();\n this.psg1 = new AY38910_Audio(audio);\n this.psg2 = new AY38910_Audio(audio);\n this.audioadapter = new TssChannelAdapter(\n [this.psg1.psg, this.psg2.psg], 2, this.sampleRate\n );\n\n this.connectCPUMemoryBus(this);\n this.connectCPUIOBus(this.newIOBus());\n this.inputs.set([0, 0, 0, 0xff, 0xff]); // inputs + DIP switches\n this.handler = newKeyboardHandler(this.inputs, MCR2_KEYCODE_MAP);\n }\n\n // Main CPU memory read\n read = newAddressDecoder([\n [0x0000, 0xDFFF, 0xFFFF, (a) => { return this.rom ? this.rom[a] : 0; }],\n [0xE000, 0xE7FF, 0x7FF, (a) => { return this.ram[a]; }],\n [0xE800, 0xEFFF, 0x1FF, (a) => { return this.sprram[a]; }],\n [0xF000, 0xF7FF, 0x7FF, (a) => { return this.vram[a]; }],\n [0xF800, 0xFFFF, 0x7F, (a) => { return this.palram[a]; }],\n ]);\n\n readConst(a: number): number | null {\n return this.read(a);\n }\n\n // Main CPU memory write\n write = newAddressDecoder([\n [0xE000, 0xE7FF, 0x7FF, (a, v) => { this.ram[a] = v; }],\n [0xE800, 0xEFFF, 0x1FF, (a, v) => { this.sprram[a] = v; }],\n [0xF000, 0xF7FF, 0x7FF, (a, v) => { this.vram[a] = v; }],\n [0xF800, 0xFFFF, 0x7F, (a, v) => {\n this.palram[a] = v;\n this.updatePalette(a);\n }],\n ]);\n\n // I/O bus\n newIOBus() {\n return {\n read: (addr: number) => {\n addr &= 0xFF;\n if (addr <= 0x04) {\n return this.inputs[addr]; // SSIO input ports\n }\n if (addr >= 0x08 && addr <= 0x0F) {\n return this.inputs[3]; // DIP switches\n Line truncated
"mappings": "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 truncated
"mappings": "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 truncated
"names": ["MCR2_XTAL", "MCR2_CPU_FREQ", "MCR2_NUM_VISIBLE_SCANLINES", "MCR2_NUM_TOTAL_SCANLINES", "MCR2_CANVAS_WIDTH", "MCR2_FPS", "MCR2_CYCLES_PER_LINE", "MCR2_TILE_COLS", "MCR2_TILE_ROWS", "MCR2_TILE_SIZE", "INITIAL_WATCHDOG", "pal3bit", "v", "MCR2_KEYCODE_MAP", "makeKeycodeMap", "Keys", "ROM_PROGRAM_SIZE", "ROM_BG_GFX_START", "ROM_BG_GFX_SIZE", "ROM_SPR_GFX_START", "ROM_SPR_GFX_SIZE", "SSIO_ROM_SIZE", "ROM_TOTAL_SIZE", "MCR2Machine", "BasicScanlineMachine", "MCR2_CPU_FREQ", "MCR2_CANVAS_WIDTH", "MCR2_NUM_VISIBLE_SCANLINES", "MCR2_NUM_TOTAL_SCANLINES", "MCR2_CYCLES_PER_LINE", "MCR2_FPS", "Z80", "INITIAL_WATCHDOG", "newAddressDecoder", "a", "v", "audio", "MasterAudio", "AY38910_Audio", "TssChannelAdapter", "newKeyboardHandler", "MCR2_KEYCODE_MAP", "addr", "val", "offset", "i", "pal", "r", "pal3bit", "g", "b", "r_msb", "sl", "pixofs", "tileRow", "MCR2_TILE_SIZE", "tileY", "MCR2_TILE_ROWS", "tileCol", "MCR2_TILE_COLS", "vramOfs", "byte0", "byte1", "tileCode", "tilePalette", "flipX", "ty", "pixX", "outOfs", "row", "palette", "gfxBase", "halfSize", "byteOfs", "p0L", "p1L", "colorBase", "x", "bit", "srcX", "color", "scanline", "planeSize", "sprNum", "base", "sy", "attrib", "code", "sx", "flipY", "relY", "sprOfs", "col", "p0", "p1", "p2", "p3", "px", "trap", "steps", "EmuHalt", "data", "padBytes", "state", "MCR2_PRESETS", "MCR2Platform", "BaseZ80MachinePlatform", "MCR2Machine", "a", "PLATFORMS"]
}
-2
View File
@@ -1,2 +0,0 @@
import{J as X,c as v,d as Y,e as P,k as z,r as D}from"./chunk-6POV4IU3.js";import{$ as w,J as B,S as G,V as s,W as N,Y as V,_ as U}from"./chunk-V6XWGCKJ.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-PNWAC7BJ.js.map
+2 -2
View File
@@ -1,4 +1,4 @@
import{c as C}from"./chunk-4GR6NWIG.js";import{J as x,d as U,e as Q}from"./chunk-6POV4IU3.js";import{J as t,V as A,Y as H,l as E,m as O}from"./chunk-V6XWGCKJ.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-2TT65SF3.js";import{J as x,d as U,e as Q}from"./chunk-AK5O5EFA.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-ZUNCLIHT.js.map
//# sourceMappingURL=msx-3RW5KWIG.js.map
File renamed without changes.
-2
View File
@@ -1,2 +0,0 @@
import{J as u,c as o,r as m}from"./chunk-6POV4IU3.js";import{$ as a,J as f,V as t,W as c,Y as h}from"./chunk-V6XWGCKJ.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-2PGYEMQN.js.map
+2
View File
@@ -0,0 +1,2 @@
import{J as u,c as o,r as m}from"./chunk-AK5O5EFA.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-FFG73XGO.js.map
@@ -2,6 +2,6 @@
"version": 3,
"sources": ["../src/machine/mw8080bw.ts", "../src/platform/mw8080bw.ts"],
"sourcesContent": ["\nimport { Z80, Z80State } from \"../common/cpu/ZilogZ80\";\nimport { BasicScanlineMachine } from \"../common/devices\";\nimport { KeyFlags, newAddressDecoder, padBytes, Keys, makeKeycodeMap, newKeyboardHandler } from \"../common/emu\";\nimport { TssChannelAdapter, MasterAudio, AY38910_Audio } from \"../common/audio\";\n\n// http://www.computerarcheology.com/Arcade/\n\nconst SPACEINV_KEYCODE_MAP = makeKeycodeMap([\n [Keys.A, 1, 0x10], // P1\n [Keys.LEFT, 1, 0x20],\n [Keys.RIGHT, 1, 0x40],\n [Keys.P2_A, 2, 0x10], // P2\n [Keys.P2_LEFT, 2, 0x20],\n [Keys.P2_RIGHT, 2, 0x40],\n [Keys.SELECT, 1, 0x1],\n [Keys.START, 1, 0x4],\n [Keys.P2_START, 1, 0x2],\n]);\n\nconst INITIAL_WATCHDOG = 256;\nconst PIXEL_ON = 0xffeeeeee;\nconst PIXEL_OFF = 0xff000000;\n\nexport class Midway8080 extends BasicScanlineMachine {\n\n cpuFrequency = 1996800; // MHz\n canvasWidth = 256;\n numTotalScanlines = 262;\n numVisibleScanlines = 224;\n cpuCyclesPerLine = Math.floor(1996800 / (262*60));\n defaultROMSize = 0x2000;\n rotate = -90;\n sampleRate = 1;\n\n bitshift_offset = 0;\n bitshift_register = 0;\n watchdog_counter;\n \n cpu: Z80 = new Z80();\n ram = new Uint8Array(0x2000);\n\n constructor() {\n super();\n this.connectCPUMemoryBus(this);\n this.connectCPUIOBus(this.newIOBus());\n this.handler = newKeyboardHandler(this.inputs, SPACEINV_KEYCODE_MAP);\n }\n \n read = newAddressDecoder([\n [0x0000, 0x1fff, 0x1fff, (a) => { return this.rom ? this.rom[a] : 0; }],\n [0x2000, 0x3fff, 0x1fff, (a) => { return this.ram[a]; }],\n ]);\n write = newAddressDecoder([\n [0x2000, 0x23ff, 0x3ff, (a, v) => { this.ram[a] = v; }],\n [0x2400, 0x3fff, 0x1fff, (a, v) => {\n this.ram[a] = v;\n var ofs = (a - 0x400) << 3;\n for (var i = 0; i < 8; i++) {\n this.pixels[ofs + i] = (v & (1 << i)) ? PIXEL_ON : PIXEL_OFF;\n }\n //if (displayPCs) displayPCs[a] = cpu.getPC(); // save program counter\n }],\n ]);\n\n newIOBus() {\n return {\n read: (addr) => {\n addr &= 0x3;\n //console.log('IO read', hex(addr,4));\n switch (addr) {\n case 0:\n case 1:\n case 2:\n return this.inputs[addr];\n case 3:\n return (this.bitshift_register >> (8 - this.bitshift_offset)) & 0xff;\n }\n return 0;\n },\n write: (addr, val) => {\n addr &= 0x7;\n val &= 0xff;\n //console.log('IO write', hex(addr,4), hex(val,2));\n switch (addr) {\n case 2:\n this.bitshift_offset = val & 0x7;\n break;\n case 3:\n case 5:\n // TODO: sound\n break;\n case 4:\n this.bitshift_register = (this.bitshift_register >> 8) | (val << 8);\n break;\n case 6:\n this.watchdog_counter = INITIAL_WATCHDOG;\n break;\n }\n }\n };\n }\n\n startScanline() {\n }\n\n drawScanline() {\n // at end of scanline\n if (this.scanline == 95)\n this.interrupt(0xcf); // RST $8\n else if (this.scanline == 223)\n this.interrupt(0xd7); // RST $10\n }\n \n interrupt(data:number) {\n this.probe.logInterrupt(data);\n this.cpu.interrupt(data);\n }\n\n advanceFrame(trap) : number {\n if (this.watchdog_counter-- <= 0) {\n console.log(\"WATCHDOG FIRED\"); // TODO: alert on video\n this.reset();\n }\n return super.advanceFrame(trap);\n }\n\n loadState(state) {\n super.loadState(state);\n this.bitshift_register = state.bsr;\n this.bitshift_offset = state.bso;\n this.watchdog_counter = state.wdc;\n }\n saveState() {\n var state: any = super.saveState();\n state.bsr = this.bitshift_register;\n state.bso = this.bitshift_offset;\n state.wdc = this.watchdog_counter;\n return state;\n }\n reset() {\n super.reset();\n this.watchdog_counter = INITIAL_WATCHDOG;\n }\n}\n", "\nimport { Midway8080 } from \"../machine/mw8080bw\";\nimport { BaseZ80MachinePlatform } from \"../common/baseplatform\";\nimport { Platform } from \"../common/baseplatform\";\nimport { PLATFORMS } from \"../common/emu\";\n\n// http://www.computerarcheology.com/Arcade/\n\nconst MW8080BW_PRESETS = [\n { id: 'gfxtest.c', name: 'Graphics Test' },\n { id: 'shifter.c', name: 'Sprite w/ Bit Shifter' },\n { id: 'game2.c', name: 'Cosmic Impalas' },\n];\n\nclass Midway8080BWPlatform extends BaseZ80MachinePlatform<Midway8080> implements Platform {\n\n newMachine() { return new Midway8080(); }\n getPresets() { return MW8080BW_PRESETS; }\n readAddress(a) { return this.machine.read(a); }\n getMemoryMap = function() { return { main:[\n {name:'Frame Buffer',start:0x2400,size:7168,type:'ram'},\n ] } };\n showHelp() { return \"https://8bitworkshop.com/docs/platforms/arcade/index.html#midway-8080\" }\n}\n\n\nPLATFORLine truncated
"mappings": "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",
"mappings": "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",
"names": ["SPACEINV_KEYCODE_MAP", "makeKeycodeMap", "Keys", "INITIAL_WATCHDOG", "PIXEL_ON", "PIXEL_OFF", "Midway8080", "BasicScanlineMachine", "Z80", "newAddressDecoder", "a", "v", "ofs", "i", "newKeyboardHandler", "addr", "val", "data", "trap", "state", "MW8080BW_PRESETS", "Midway8080BWPlatform", "BaseZ80MachinePlatform", "Midway8080", "a", "PLATFORMS"]
}
+2 -2
View File
@@ -1,4 +1,4 @@
import{b as U}from"./chunk-H325USEJ.js";import{a as W}from"./chunk-MOWDEMRA.js";import{a as Ot}from"./chunk-LNOKARBD.js";import{A as H,j as w,n as q,o as X,x as O,y as Y}from"./chunk-6POV4IU3.js";import{H as v,J as I,O as T,S as L,T as V,V as m,X as B,Y as G,g as D,n as k}from"./chunk-V6XWGCKJ.js";import{d as S}from"./chunk-KT7KMEQC.js";var F=S((Gt,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((wt,z)=>{"use strict";z.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 $=S((qt,j)=>{"use strict";var K=N(),J=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()};J.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 Q().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 U}from"./chunk-JX2MTUGT.js";import{a as W}from"./chunk-R5TBCA3S.js";import{a as Ot}from"./chunk-LNOKARBD.js";import{A as H,j as w,n as q,o as X,x as O,y as Y}from"./chunk-AK5O5EFA.js";import{H as v,K as I,P as T,T as L,U as V,W as m,Y as B,Z as G,g as D,n as k}from"./chunk-TYDI7JZQ.js";import{d as S}from"./chunk-KT7KMEQC.js";var F=S((Gt,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((wt,z)=>{"use strict";z.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 $=S((qt,j)=>{"use strict";var K=N(),J=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()};J.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 Q().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 q(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=v(a,".","_"),e+=`${h}:${l}:${a}
`}return{extension:".mlb",blob:new Blob([e],{type:"text/plain"})}}},y=class extends W{constructor(){super(...arguments);this.getToolForFilename=O;this.getOpcodeMetadata=H}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 Et}getDefaultExtensions(){return[".c",".cpp",".acme",".xa",".ca65",".dasm",".ecs",".wiz"]}};I.nes=E;I["nes-asm"]=E;I["nes.mame"]=y;
//# sourceMappingURL=nes-O44ATQZ3.js.map
//# sourceMappingURL=nes-6SCJOQ3I.js.map
File renamed without changes.
@@ -1,2 +1,2 @@
import{J as B,c as w,r as V}from"./chunk-6POV4IU3.js";import{J as R,S as M,V as x,W as P,Y as U,_ as E}from"./chunk-V6XWGCKJ.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-6SWOGG3B.js.map
import{J as B,c as w,r as V}from"./chunk-AK5O5EFA.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-LZ2PMDOX.js.map
File renamed without changes.
+2 -2
View File
@@ -1,2 +1,2 @@
import{x as y}from"./chunk-6POV4IU3.js";import{J as m,O as G,V as u}from"./chunk-V6XWGCKJ.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-3EIOXQ6V.js.map
import{x as y}from"./chunk-AK5O5EFA.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-K26WW6IA.js.map
File renamed without changes.
+2 -2
View File
@@ -1,7 +1,7 @@
{
"version": 3,
"sources": ["../../node_modules/depd/index.js", "../../node_modules/bytes/index.js", "../../node_modules/content-type/index.js", "../../node_modules/setprototypeof/index.js", "../../node_modules/statuses/codes.json", "../../node_modules/statuses/index.js", "../../node_modules/inherits/inherits_browser.js", "../../node_modules/inherits/inherits.js", "../../node_modules/toidentifier/index.js", "../../node_modules/http-errors/index.js", "../../node_modules/ms/index.js", "../../node_modules/debug/src/debug.js", "../../node_modules/debug/src/browser.js", "../../node_modules/debug/src/node.js", "../../node_modules/debug/src/index.js", "../../node_modules/destroy/index.js", "../../node_modules/safer-buffer/safer.js", "../../node_modules/iconv-lite/lib/bom-handling.js", "../../node_modules/iconv-lite/encodings/internal.js", "../../node_modules/iconv-lite/encodings/utf16.js", "../../node_modules/iconv-lite/encodings/utf7.js", "../../node_modules/iconv-lite/encodings/sbcs-codec.js", "../../node_modules/iconv-lite/encodings/sbcs-data.js", "../../node_modules/iconv-lite/encodings/sbcs-data-generated.js", "../../node_modules/iconv-lite/encodings/dbcs-codec.js", "../../node_modules/iconv-lite/encodings/tables/shiftjis.json", "../../node_modules/iconv-lite/encodings/tables/eucjp.json", "../../node_modules/iconv-lite/encodings/tables/cp936.json", "../../node_modules/iconv-lite/encodings/tables/gbk-added.json", "../../node_modules/iconv-lite/encodings/tables/gb18030-ranges.json", "../../node_modules/iconv-lite/encodings/tables/cp949.json", "../../node_modules/iconv-lite/encodings/tables/cp950.json", "../../node_modules/iconv-lite/encodings/tables/big5-added.json", "../../node_modules/iconv-lite/encodings/dbcs-data.js", "../../node_modules/iconv-lite/encodings/index.js", "../../node_modules/iconv-lite/lib/streams.js", "../../node_modules/iconv-lite/lib/extend-node.js", "../../node_modules/iconv-lite/lib/index.js", "../../node_modules/unpipe/index.js", "../../node_modules/raw-body/index.js", "../../node_modules/ee-first/index.js", "../../node_modules/on-finished/index.js", "../../node_modules/body-parser/lib/read.js", "../../node_modules/media-typer/index.js", "../../node_modules/mime-db/db.json", "../../node_modules/mime-db/index.js", "../../node_modules/mime-types/index.js", "../../node_modules/type-is/index.js", "../../node_modules/body-parser/lib/types/json.js", "../../node_modules/body-parser/lib/types/raw.js", "../../node_modules/body-parser/lib/types/text.js", "../../node_modules/es-errors/type.js", "../../node_modules/object-inspect/util.inspect.js", "../../node_modules/object-inspect/index.js", "../../node_modules/side-channel-list/index.js", "../../node_modules/es-object-atoms/index.js", "../../node_modules/es-errors/index.js", "../../node_modules/es-errors/eval.js", "../../node_modules/es-errors/range.js", "../../node_modules/es-errors/ref.js", "../../node_modules/es-errors/syntax.js", "../../node_modules/es-errors/uri.js", "../../node_modules/math-intrinsics/abs.js", "../../node_modules/math-intrinsics/floor.js", "../../node_modules/math-intrinsics/max.js", "../../node_modules/math-intrinsics/min.js", "../../node_modules/math-intrinsics/pow.js", "../../node_modules/math-intrinsics/round.js", "../../node_modules/math-intrinsics/isNaN.js", "../../node_modules/math-intrinsics/sign.js", "../../node_modules/gopd/gOPD.js", "../../node_modules/gopd/index.js", "../../node_modules/es-define-property/index.js", "../../node_modules/has-symbols/shams.js", "../../node_modules/has-symbols/index.js", "../../node_modules/get-proto/Reflect.getPrototypeOf.js", "../../node_modules/get-proto/Object.getPrototypeOf.js", "../../node_modules/function-bind/implementation.js", "../../node_modules/function-bind/index.js", "../../node_modules/call-bind-apply-helpers/functionCall.js", "../../node_modules/call-bind-apply-helpers/functionApply.js", "../../node_modules/call-bind-apply-helpers/reflectApply.js", "../../node_modules/call-bind-apply-helpers/actualApply.js", "../../node_modules/call-bind-apply-helpers/index.js", "../../node_modules/dunder-proto/get.js", "../../node_modules/get-proto/index.js", "../../node_modules/hasown/index.js", "../../node_modules/get-intrinsic/index.js", "../../node_modules/call-bound/index.js", "../../node_modules/side-channel-map/index.js", "../../node_modules/side-channel-weakmap/index.js", "../../node_modules/side-channel/index.js", "../../node_modules/qs/lib/formats.js", "../../node_modules/qs/lib/utils.js", "../../node_modules/qs/lib/stringify.js", "../../node_modules/qs/lib/parse.js", "../../node_modules/qs/lib/index.js", "../../node_modules/body-parser/lib/types/urlencoded.js", "../../node_modules/body-parser/index.js", "../../node_modules/merge-descriptors/index.js", "../../node_modules/encodeurl/index.js", "../../node_modules/escape-html/index.js", "../../node_modules/parseurl/index.js", "../../node_modules/finalhandler/index.js", "../../node_modules/array-flatten/array-flatten.js", "../../node_modulLine truncated
"sourcesContent": ["/*!\n * depd\n * Copyright(c) 2014-2018 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * Module dependencies.\n */\n\nvar relative = require('path').relative\n\n/**\n * Module exports.\n */\n\nmodule.exports = depd\n\n/**\n * Get the path to base files on.\n */\n\nvar basePath = process.cwd()\n\n/**\n * Determine if namespace is contained in the string.\n */\n\nfunction containsNamespace (str, namespace) {\n var vals = str.split(/[ ,]+/)\n var ns = String(namespace).toLowerCase()\n\n for (var i = 0; i < vals.length; i++) {\n var val = vals[i]\n\n // namespace contained\n if (val && (val === '*' || val.toLowerCase() === ns)) {\n return true\n }\n }\n\n return false\n}\n\n/**\n * Convert a data descriptor to accessor descriptor.\n */\n\nfunction convertDataDescriptorToAccessor (obj, prop, message) {\n var descriptor = Object.getOwnPropertyDescriptor(obj, prop)\n var value = descriptor.value\n\n descriptor.get = function getter () { return value }\n\n if (descriptor.writable) {\n descriptor.set = function setter (val) { return (value = val) }\n }\n\n delete descriptor.value\n delete descriptor.writable\n\n Object.defineProperty(obj, prop, descriptor)\n\n return descriptor\n}\n\n/**\n * Create arguments string to keep arity.\n */\n\nfunction createArgumentsString (arity) {\n var str = ''\n\n for (var i = 0; i < arity; i++) {\n str += ', arg' + i\n }\n\n return str.substr(2)\n}\n\n/**\n * Create stack string from stack.\n */\n\nfunction createStackString (stack) {\n var str = this.name + ': ' + this.namespace\n\n if (this.message) {\n str += ' deprecated ' + this.message\n }\n\n for (var i = 0; i < stack.length; i++) {\n str += '\\n at ' + stack[i].toString()\n }\n\n return str\n}\n\n/**\n * Create deprecate for namespace in caller.\n */\n\nfunction depd (namespace) {\n if (!namespace) {\n throw new TypeError('argument namespace is required')\n }\n\n var stack = getStack()\n var site = callSiteLocation(stack[1])\n var file = site[0]\n\n function deprecate (message) {\n // call to self as log\n log.call(deprecate, message)\n }\n\n deprecate._file = file\n deprecate._ignored = isignored(namespace)\n deprecate._namespace = namespace\n deprecate._traced = istraced(namespace)\n deprecate._warned = Object.create(null)\n\n deprecate.function = wrapfunction\n deprecate.property = wrapproperty\n\n return deprecate\n}\n\n/**\n * Determine if event emitter has listeners of a given type.\n *\n * The way to do this check is done three different ways in Node.js >= 0.8\n * so this consolidates them into a minimal set using instance methods.\n *\n * @param {EventEmitter} emitter\n * @param {string} type\n * @returns {boolean}\n * @private\n */\n\nfunction eehaslisteners (emitter, type) {\n var count = typeof emitter.listenerCount !== 'function'\n ? emitter.listeners(type).length\n : emitter.listenerCount(type)\n\n return count > 0\n}\n\n/**\n * Determine if namespace is ignored.\n */\n\nfunction isignored (namespace) {\n if (process.noDeprecation) {\n // --no-deprecation support\n return true\n }\n\n var str = process.env.NO_DEPRECATION || ''\n\n // namespace ignored\n return containsNamespace(str, namespace)\n}\n\n/**\n * Determine if namespace is traced.\n */\n\nfunction istraced (namespace) {\n if (process.traceDeprecation) {\n // --trace-deprecation support\n return true\n }\n\n var str = process.env.TRACE_DEPRECATION || ''\n\n // namespace traced\n return containsNamespace(str, namespace)\n}\n\n/**\n * Display deprecation message.\n */\n\nfunction log (message, site) {\n var haslisteners = eehaslisteners(process, 'deprecation')\n\n // abort early if no destination\n if (!haslisteners && this._ignored) {\n return\n }\n\n var caller\n var callFile\n var callSite\n var depSite\n var i = 0\n var seen = false\n var stack = getStack()\n var file = this._file\n\n if (site) {\n // provided site\n depSite = site\n callSite = callSiteLocation(stack[1])\n callSite.name = depSite.name\n file = callSite[0]\n } else {\n // get call site\n i = 2\n depSite = callSiteLocation(stack[i])\n callSite = depSite\n }\n\n // get caller of deprecated thing in relation to file\n for (; i < stack.length; i++) {\n caller = callSiteLocation(stack[i])\n callFile = caller[0]\n\n if (callFile === file) {\n seen = true\n } else if (callFile === this._file) {\n file = this._file\n } else if (seen) {\n break\n }\n }\n\n var key = caller\n ? depSite.join(':') + '__' + caller.join(':')\n : undefined\n\n if (key !== undefined && key in this._warned) {\n // already warned\n return\n }\n\n this._warned[key] = true\n\n // generate automatic message from call site\n var msg = message\n if (!msg) {\n msg = callSite === depSite || !callSite.name\n ? defaultMessage(depSite)\n : defaultMessage(callSite)\n }\n\n // Line truncated
"mappings": "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 truncated
"sourcesContent": ["/*!\n * depd\n * Copyright(c) 2014-2018 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * Module dependencies.\n */\n\nvar relative = require('path').relative\n\n/**\n * Module exports.\n */\n\nmodule.exports = depd\n\n/**\n * Get the path to base files on.\n */\n\nvar basePath = process.cwd()\n\n/**\n * Determine if namespace is contained in the string.\n */\n\nfunction containsNamespace (str, namespace) {\n var vals = str.split(/[ ,]+/)\n var ns = String(namespace).toLowerCase()\n\n for (var i = 0; i < vals.length; i++) {\n var val = vals[i]\n\n // namespace contained\n if (val && (val === '*' || val.toLowerCase() === ns)) {\n return true\n }\n }\n\n return false\n}\n\n/**\n * Convert a data descriptor to accessor descriptor.\n */\n\nfunction convertDataDescriptorToAccessor (obj, prop, message) {\n var descriptor = Object.getOwnPropertyDescriptor(obj, prop)\n var value = descriptor.value\n\n descriptor.get = function getter () { return value }\n\n if (descriptor.writable) {\n descriptor.set = function setter (val) { return (value = val) }\n }\n\n delete descriptor.value\n delete descriptor.writable\n\n Object.defineProperty(obj, prop, descriptor)\n\n return descriptor\n}\n\n/**\n * Create arguments string to keep arity.\n */\n\nfunction createArgumentsString (arity) {\n var str = ''\n\n for (var i = 0; i < arity; i++) {\n str += ', arg' + i\n }\n\n return str.substr(2)\n}\n\n/**\n * Create stack string from stack.\n */\n\nfunction createStackString (stack) {\n var str = this.name + ': ' + this.namespace\n\n if (this.message) {\n str += ' deprecated ' + this.message\n }\n\n for (var i = 0; i < stack.length; i++) {\n str += '\\n at ' + stack[i].toString()\n }\n\n return str\n}\n\n/**\n * Create deprecate for namespace in caller.\n */\n\nfunction depd (namespace) {\n if (!namespace) {\n throw new TypeError('argument namespace is required')\n }\n\n var stack = getStack()\n var site = callSiteLocation(stack[1])\n var file = site[0]\n\n function deprecate (message) {\n // call to self as log\n log.call(deprecate, message)\n }\n\n deprecate._file = file\n deprecate._ignored = isignored(namespace)\n deprecate._namespace = namespace\n deprecate._traced = istraced(namespace)\n deprecate._warned = Object.create(null)\n\n deprecate.function = wrapfunction\n deprecate.property = wrapproperty\n\n return deprecate\n}\n\n/**\n * Determine if event emitter has listeners of a given type.\n *\n * The way to do this check is done three different ways in Node.js >= 0.8\n * so this consolidates them into a minimal set using instance methods.\n *\n * @param {EventEmitter} emitter\n * @param {string} type\n * @returns {boolean}\n * @private\n */\n\nfunction eehaslisteners (emitter, type) {\n var count = typeof emitter.listenerCount !== 'function'\n ? emitter.listeners(type).length\n : emitter.listenerCount(type)\n\n return count > 0\n}\n\n/**\n * Determine if namespace is ignored.\n */\n\nfunction isignored (namespace) {\n if (process.noDeprecation) {\n // --no-deprecation support\n return true\n }\n\n var str = process.env.NO_DEPRECATION || ''\n\n // namespace ignored\n return containsNamespace(str, namespace)\n}\n\n/**\n * Determine if namespace is traced.\n */\n\nfunction istraced (namespace) {\n if (process.traceDeprecation) {\n // --trace-deprecation support\n return true\n }\n\n var str = process.env.TRACE_DEPRECATION || ''\n\n // namespace traced\n return containsNamespace(str, namespace)\n}\n\n/**\n * Display deprecation message.\n */\n\nfunction log (message, site) {\n var haslisteners = eehaslisteners(process, 'deprecation')\n\n // abort early if no destination\n if (!haslisteners && this._ignored) {\n return\n }\n\n var caller\n var callFile\n var callSite\n var depSite\n var i = 0\n var seen = false\n var stack = getStack()\n var file = this._file\n\n if (site) {\n // provided site\n depSite = site\n callSite = callSiteLocation(stack[1])\n callSite.name = depSite.name\n file = callSite[0]\n } else {\n // get call site\n i = 2\n depSite = callSiteLocation(stack[i])\n callSite = depSite\n }\n\n // get caller of deprecated thing in relation to file\n for (; i < stack.length; i++) {\n caller = callSiteLocation(stack[i])\n callFile = caller[0]\n\n if (callFile === file) {\n seen = true\n } else if (callFile === this._file) {\n file = this._file\n } else if (seen) {\n break\n }\n }\n\n var key = caller\n ? depSite.join(':') + '__' + caller.join(':')\n : undefined\n\n if (key !== undefined && key in this._warned) {\n // already warned\n return\n }\n\n this._warned[key] = true\n\n // generate automatic message from call site\n var msg = message\n if (!msg) {\n msg = callSite === depSite || !callSite.name\n ? defaultMessage(depSite)\n : defaultMessage(callSite)\n }\n\n // Line truncated
"mappings": "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 truncated
"names": ["exports", "module", "exports", "module", "exports", "exports", "module", "exports", "module", "exports", "module", "codes", "status", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "useColors", "exports", "module", "useColors", "fd", "stream", "fs", "exports", "module", "exports", "module", "exports", "module", "Buffer", "exports", "exports", "module", "Buffer", "exports", "Buffer", "exports", "Buffer", "i", "exports", "Buffer", "exports", "module", "exports", "module", "exports", "Buffer", "i", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "Buffer", "exports", "module", "Buffer", "exports", "module", "Buffer", "exports", "module", "exports", "module", "exports", "module", "i", "fn", "exports", "module", "exports", "module", "exports", "exports", "module", "exports", "module", "exports", "charset", "path", "extension", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "isNaN", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "concatty", "slicy", "Empty", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "undefined", "doEval", "stringToPath", "getBaseIntrinsic", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "markOverflow", "isOverflow", "getMaxIndex", "setMaxIndex", "compactQueue", "arrayToObject", "setProperty", "merge", "encode", "compact", "isRegExp", "isBuffer", "combine", "maybeMap", "exports", "module", "isNonNullishPrimitive", "stringify", "value", "normalizeStringifyOptions", "exports", "module", "splitKeyIntoSegments", "normalizeParseOptions", "require_lib", "exports", "module", "exports", "module", "exports", "module", "bodyParser", "exports", "module", "exports", "module", "exports", "module", "escape", "exports", "module", "url", "exports", "module", "exports", "module", "exports", "module", "path", "m", "exports", "module", "path", "match", "exports", "module", "exports", "module", "path", "methods", "exports", "module", "exports", "module", "path", "err", "route", "i", "exports", "app", "exports", "module", "query", "exports", "module", "path", "fs", "resolve", "exports", "module", "Buffer", "exports", "module", "Buffer", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "path", "fs", "require_ms", "exports", "module", "exports", "module", "exports", "module", "fs", "path", "etag", "index", "match", "send", "err", "stream", "type", "exports", "module", "exports", "module", "string", "error1", "exports", "module", "require_utils", "exports", "Buffer", "path", "exports", "module", "app", "path", "fn", "View", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "exports", "module", "range", "subdomains", "path", "exports", "exports", "decode", "exports", "module", "exports", "module", "Buffer", "path", "send", "app", "escape", "res", "exports", "module", "serveStatic", "path", "exports", "module", "app", "req", "res", "require_express", "exports", "module", "exports", "module", "require_lib", "exports", "module", "cors", "import_fs", "import_path", "import_path", "path", "fs", "path", "express", "cors", "path", "fs"]
}
-4
View File
@@ -1,4 +0,0 @@
import{a as b,b as w,c as A}from"./chunk-4GR6NWIG.js";import{J as c,d as M,f as P}from"./chunk-6POV4IU3.js";import{$ as n,J as u,V as s,Y as l,_ as p,g}from"./chunk-V6XWGCKJ.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-HVBEQHCW.js.map
+4
View File
@@ -0,0 +1,4 @@
import{a as b,b as w,c as A}from"./chunk-2TT65SF3.js";import{J as c,d as M,f as P}from"./chunk-AK5O5EFA.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-JOTJMEYE.js.map
@@ -2,6 +2,6 @@
"version": 3,
"sources": ["../src/machine/sms.ts", "../src/platform/sms.ts"],
"sourcesContent": ["\nimport { BaseZ80VDPBasedMachine } from \"./vdp_z80\";\nimport { newAddressDecoder, padBytes, Keys, makeKeycodeMap } from \"../common/emu\";\nimport { hex } from \"../common/util\";\nimport { MasterAudio, SN76489_Audio } from \"../common/audio\";\nimport { SMSVDP, GameGearVDP } from \"./chips/tms9918a\";\n\n// http://www.smspower.org/Development/Index\n// http://www.smspower.org/uploads/Development/sg1000.txt\n// http://www.smspower.org/uploads/Development/richard.txt\n// http://www.smspower.org/uploads/Development/msvdp-20021112.txt\n// http://www.smspower.org/uploads/Development/SN76489-20030421.txt\n\nvar SG1000_KEYCODE_MAP = makeKeycodeMap([\n [Keys.UP, 0, 0x1],\n [Keys.DOWN, 0, 0x2],\n [Keys.LEFT, 0, 0x4],\n [Keys.RIGHT, 0, 0x8],\n [Keys.A, 0, 0x10],\n [Keys.B, 0, 0x20],\n [Keys.GP_A, 0, 0x10],\n [Keys.GP_B, 0, 0x20],\n\n [Keys.P2_UP, 0, 0x40],\n [Keys.P2_DOWN, 0, 0x80],\n [Keys.P2_LEFT, 1, 0x1],\n [Keys.P2_RIGHT, 1, 0x2],\n [Keys.P2_A, 1, 0x4],\n [Keys.P2_B, 1, 0x8],\n [Keys.VK_BACK_SLASH, 1, 0x10], // reset\n [Keys.VK_ENTER, 1, 0x80], // start/pause\n]);\n\nexport class SG1000 extends BaseZ80VDPBasedMachine {\n\n numVisibleScanlines = 240;\n defaultROMSize = 0xc000;\n ram = new Uint8Array(0x400);\n \n constructor() {\n super();\n this.init(this, this.newIOBus(), new SN76489_Audio(new MasterAudio()));\n }\n \n getKeyboardMap() { return SG1000_KEYCODE_MAP; }\n\n vdpInterrupt() {\n this.probe.logInterrupt(0xff);\n return this.cpu.interrupt(0xff); // RST 0x38\n }\n \n read = newAddressDecoder([\n [0xc000, 0xffff, 0x3ff, (a) => { return this.ram[a]; }],\n [0x0000, 0xbfff, 0xffff, (a) => { return this.rom && this.rom[a]; }],\n ]);\n write = newAddressDecoder([\n [0xc000, 0xffff, 0x3ff, (a,v) => { this.ram[a] = v; }],\n ]);\n \n getVCounter() : number { return 0; }\n getHCounter() : number { return 0; }\n setMemoryControl(v:number) { }\n setIOPortControl(v:number) { }\n\n readIO(addr:number) {\n switch (addr & 0xc1) {\n case 0x40: return this.getVCounter();\n case 0x41: return this.getHCounter();\n case 0x80: return this.vdp.readData();\n case 0x81: return this.vdp.readStatus();\n case 0xc0: return this.inputs[0] ^ 0xff;\n case 0xc1: return this.inputs[1] ^ 0xff;\n }\n return 0;\n }\n\n writeIO(addr:number, val:number) {\n switch (addr & 0xc1) {\n case 0x00: return this.setMemoryControl(val);\n case 0x01: return this.setIOPortControl(val);\n case 0x40:\n case 0x41: return this.psg.setData(val);\n case 0x80: return this.vdp.writeData(val);\n case 0x81: return this.vdp.writeAddress(val);\n }\n }\n\n newIOBus() {\n return {\n read: (addr:number) => {\n addr &= 0xff;\n //console.log('IO read', hex(addr,4));\n return this.readIO(addr);\n },\n write: (addr:number, val:number) => {\n addr &= 0xff;\n val &= 0xff;\n //console.log('IO write', hex(addr,4), hex(val,2));\n this.writeIO(addr, val);\n }\n };\n }\n \n}\n\n///\n\nexport class SMS extends SG1000 {\n\n cartram = new Uint8Array(0);\n pagingRegisters = new Uint8Array(4);\n romPageMask : number;\n latchedHCounter = 0;\n ioControlFlags = 0;\n // TODO: hide bottom scanlines\n ram = new Uint8Array(0x2000);\n \n newVDP(frameData, cru, flicker) {\n return new SMSVDP(frameData, cru, flicker);\n }\n\n reset() {\n super.reset();\n this.pagingRegisters.set([0,0,1,2]);\n }\n\n getVCounter() {\n var y = this.scanline;\n return (y <= 0xda) ? (y) : (y - 6);\n }\n getHCounter() {\n return this.latchedHCounter;\n }\n computeHCounter() {\n return 0;\n /*\n var t0 = this.startLineTstates;\n var t1 = this.cpu.getTstates();\n return (t1-t0) & 0xff; // TODO\n */\n }\n setIOPortControl(v:number) {\n if ((v ^ this.ioControlFlags) & 0xa0) { // either joystick TH pin\n this.latchedHCounter = this.computeHCounter();\n //console.log(\"H:\"+hex(this.latchedHCounter)+\" V:\"+hex(this.getVCounter()));\n }\n this.ioControlFlags = v;\n }\n \n \n getPagedROM(a:number, reg:number) {\n //if (!(a&0xff)) console.log(hex(a), reg, this.pagingRegisters[reg], this.romPageMask);\n return this.rom && this.rom[a + ((this.pagingRegisters[reg] & this.romPageMask) << 14)]; // * $4000\n }\n\n read = newAddressDecoder([\n [0xc000, 0xffff, 0x1fff, (a) => { return this.ram[a]; }],\n [0x0000, 0x03ff, 0x3ff, (a) => { return this.rom && this.rom[a]; }],\n [0x0400, 0x3fff, 0x3fff, (a) => { return this.getPagedROM(a,1); }],\n [0x4000, 0x7fff, 0x3fff, (a) => { return this.getPagedROM(a,2); }],\n [0x8000, 0xbfff, 0x3fff, (a) => {\n var reg0 = this.pagingRegisters[0]; // RAM select?\n if (reg0 & 0x8) {\n return this.cartram[(reg0 & 0x4) ? a+0x4000 : a];\n } else {\n return this.getPagedROM(a,3);\n }\n }],\n ]);\n \n wriLine truncated
"mappings": "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 truncated
"mappings": "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 truncated
"names": ["SG1000_KEYCODE_MAP", "makeKeycodeMap", "Keys", "SG1000", "BaseZ80VDPBasedMachine", "newAddressDecoder", "a", "v", "SN76489_Audio", "MasterAudio", "addr", "val", "SMS", "reg0", "frameData", "cru", "flicker", "SMSVDP", "y", "reg", "data", "padBytes", "hex", "state", "category", "GameGear", "GameGearVDP", "SG1000_PRESETS", "SMS_PRESETS", "SG1000Platform", "BaseZ80MachinePlatform", "SG1000", "a", "SMSPlatform", "SMS", "GameGearPlatform", "GameGear", "PLATFORMS"]
}
+2
View File
@@ -0,0 +1,2 @@
import{D as w}from"./chunk-AK5O5EFA.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-3JFRNFML.js.map
@@ -2,6 +2,6 @@
"version": 3,
"sources": ["../src/platform/sound_konami.ts"],
"sourcesContent": ["\nimport { Platform, BaseZ80Platform } from \"../common/baseplatform\";\nimport { PLATFORMS, RAM, newAddressDecoder, padBytes, noise, setKeyboardFromMap, AnimationTimer, RasterVideo, Keys, makeKeycodeMap } from \"../common/emu\";\nimport { hex } from \"../common/util\";\n\n// from TSS\ndeclare var MasterChannel, AudioLooper, PsgDeviceChannel;\n\nvar KONAMISOUND_PRESETS = [\n];\n\nvar KonamiSoundPlatform = function(mainElement) {\n this.__proto__ = new (BaseZ80Platform as any)();\n\n var cpu, ram, rom, membus, iobus;\n var audio, master;\n var video, timer;\n var interruptPending = 0;\n var psgRegister = 0;\n var psg;\n\n var cpuFrequency = 14318000/8;\n var ioTimerFrequency = 1789750 / 1280;\n var cpuCyclesPerFrame = cpuFrequency/60;\n var cpuCyclesPerTimer = cpuFrequency/ioTimerFrequency;\n\n this.getPresets = function() {\n return KONAMISOUND_PRESETS;\n }\n\n this.start = function() {\n ram = new RAM(0x400);\n membus = {\n read: newAddressDecoder([\n\t\t\t\t[0x0000, 0x3fff, 0x3fff, function(a) { return rom ? rom[a] : null; }],\n\t\t\t\t[0x4000, 0x5fff, 0x3ff, function(a) { return ram.mem[a]; }]\n\t\t\t]),\n\t\t\twrite: newAddressDecoder([\n\t\t\t\t[0x4000, 0x5fff, 0x3ff, function(a,v) { ram.mem[a] = v; }],\n\t\t\t]),\n isContended: function() { return false; },\n };\n iobus = {\n read: function(addr) {\n if (addr & 0x40) {\n if (psgRegister == 0xf) { // timer\n var bit = (cpu.getTstates() / cpuCyclesPerTimer) & 1;\n return bit ? 0xff : 0x00; // 0x00, 0x10, 0x20, 0x30, 0x40, 0x90, 0xa0, 0xb0, 0xa0, 0xd0\n }\n return psg.readRegister(psgRegister) & 0xff;\n }\n return 0;\n \t},\n \twrite: function(addr, val) {\n if (addr & 0x80) {\n psgRegister = val & 0xf;\n //console.log('PSG reg', psgRegister);\n }\n if (addr & 0x40) {\n psg.writeRegisterAY(psgRegister, val & 0xff);\n //console.log('PSG write', psgRegister, val);\n }\n \t}\n };\n this.readAddress = membus.read;\n cpu = this.newCPU(membus, iobus);\n psg = new PsgDeviceChannel();\n master = new MasterChannel();\n psg.setMode(PsgDeviceChannel.MODE_SIGNED);\n psg.setDevice(PsgDeviceChannel.DEVICE_AY_3_8910);\n master.addChannel(psg);\n audio = new AudioLooper(512);\n audio.setChannel(master);\n //audio = new SampleAudio(psg.sampleRate);\n video = new RasterVideo(mainElement,256,256);\n video.create();\n video.setKeyboardEvents(function(key,code,flags) {\n var intr = (key-49);\n if (intr >= 0 && (flags & 1)) {\n psg.writeRegister(14, intr);\n psg.writeRegister(15, 0x80);\n cpu.setIFF1(1);\n cpu.requestInterrupt(0x38);\n /*\n console.log(cpu.saveState());\n console.log(hex(intr * 8), cpu.getIFF1(), cpu.getIM());\n cpu.runFrame(cpu.getTstates() + 1);\n console.log(cpu.saveState());\n */\n }\n });\n timer = new AnimationTimer(60, () => {\n\t\t\tif (!this.isRunning())\n\t\t\t\treturn;\n var debugCond = this.getDebugCallback();\n var targetTstates = cpu.getTstates() + cpuCyclesPerFrame;\n if (debugCond) {\n while (cpu.getTstates() < targetTstates) {\n if (debugCond && debugCond()) { debugCond = null; }\n cpu.runFrame(cpu.getTstates() + 1);\n }\n } else {\n cpu.runFrame(targetTstates);\n }\n });\n }\n\n this.loadROM = function(title, data) {\n rom = padBytes(data, 0x4000);\n cpu.reset();\n }\n\n this.loadState = function(state) {\n cpu.loadState(state.c);\n ram.mem.set(state.b);\n }\n this.saveState = function() {\n return {\n c:this.getCPUState(),\n b:ram.mem.slice(0),\n };\n }\n this.getCPUState = function() {\n return cpu.saveState();\n }\n\n this.isRunning = function() {\n return timer && timer.isRunning();\n }\n this.pause = function() {\n timer.stop();\n //audio.stop();\n }\n this.resume = function() {\n timer.start();\n audio.activate();\n }\n this.reset = function() {\n cpu.reset();\n if (!this.getDebugCallback()) cpu.setTstates(0); // TODO?\n }\n}\n\nPLATFORMS['sound_konami'] = KonamiSoundPlatform;\n"],
"mappings": "+IAQA,IAAIA,EAAsB,CAC1B,EAEIC,EAAsB,SAASC,EAAa,CAC9C,KAAK,UAAY,IAAKC,EAEtB,IAAIC,EAAKC,EAAKC,EAAKC,EAAQC,EACvBC,EAAOC,EACPC,EAAOC,EACPC,EAAmB,EACnBC,EAAc,EACdC,EAEAC,EAAe,QAAS,EACxBC,EAAmB,QAAU,KAC7BC,EAAoBF,EAAa,GACjCG,EAAoBH,EAAaC,EAErC,KAAK,WAAa,UAAW,CAC3B,OAAOjB,CACT,EAEA,KAAK,MAAQ,UAAW,CACtBK,EAAM,IAAIe,EAAI,IAAK,EACnBb,EAAS,CACP,KAAMc,EAAkB,CAC1B,CAAC,EAAQ,MAAQ,MAAQ,SAASC,EAAG,CAAE,OAAOhB,EAAMA,EAAIgB,CAAC,EAAI,IAAM,CAAC,EACpE,CAAC,MAAQ,MAAQ,KAAQ,SAASA,EAAG,CAAE,OAAOjB,EAAI,IAAIiB,CAAC,CAAG,CAAC,CAC5D,CAAC,EACD,MAAOD,EAAkB,CACxB,CAAC,MAAQ,MAAQ,KAAQ,SAASC,EAAEC,EAAG,CAAElB,EAAI,IAAIiB,CAAC,EAAIC,CAAG,CAAC,CAC3D,CAAC,EACE,YAAa,UAAW,CAAE,MAAO,EAAO,CAC1C,EACAf,EAAQ,CACN,KAAM,SAASgB,EAAM,CACnB,GAAIA,EAAO,GAAM,CACf,GAAIV,GAAe,GAAK,CACtB,IAAIW,EAAOrB,EAAI,WAAW,EAAIe,EAAqB,EACnD,OAAOM,EAAM,IAAO,CACtB,CACA,OAAOV,EAAI,aAAaD,CAAW,EAAI,GACzC,CACA,MAAO,EACV,EACA,MAAO,SAASU,EAAME,EAAK,CACpBF,EAAO,MACTV,EAAcY,EAAM,IAGlBF,EAAO,IACTT,EAAI,gBAAgBD,EAAaY,EAAM,GAAI,CAGhD,CACD,EACA,KAAK,YAAcnB,EAAO,KAC1BH,EAAM,KAAK,OAAOG,EAAQC,CAAK,EAC/BO,EAAM,IAAI,iBACVL,EAAS,IAAI,cACbK,EAAI,QAAQ,iBAAiB,WAAW,EACxCA,EAAI,UAAU,iBAAiB,gBAAgB,EAC/CL,EAAO,WAAWK,CAAG,EACrBN,EAAQ,IAAI,YAAY,GAAG,EAC3BA,EAAM,WAAWC,CAAM,EAEvBC,EAAQ,IAAIgB,EAAYzB,EAAY,IAAI,GAAG,EAC3CS,EAAM,OAAO,EACbA,EAAM,kBAAkB,SAASiB,EAAIC,EAAKC,EAAO,CAC/C,IAAIC,EAAQH,EAAI,GACZG,GAAQ,GAAMD,EAAQ,IACxBf,EAAI,cAAc,GAAIgB,CAAI,EAC1BhB,EAAI,cAAc,GAAI,GAAI,EAC1BX,EAAI,QAAQ,CAAC,EACbA,EAAI,iBAAiB,EAAI,EAQ7B,CAAC,EACDQ,EAAQ,IAAIoB,EAAe,GAAI,IAAM,CACtC,GAAK,KAAK,UAAU,EAEjB,KAAIC,EAAY,KAAK,iBAAiB,EAClCC,EAAgB9B,EAAI,WAAW,EAAIc,EACvC,GAAIe,EACF,KAAO7B,EAAI,WAAW,EAAI8B,GACpBD,GAAaA,EAAU,IAAKA,EAAY,MAC5C7B,EAAI,SAASA,EAAI,WAAW,EAAI,CAAC,OAGnCA,EAAI,SAAS8B,CAAa,EAE9B,CAAC,CACH,EAEA,KAAK,QAAU,SAASC,EAAOC,EAAM,CACnC9B,EAAM+B,EAASD,EAAM,KAAM,EAC3BhC,EAAI,MAAM,CACZ,EAEA,KAAK,UAAY,SAASkC,EAAO,CAC/BlC,EAAI,UAAUkC,EAAM,CAAC,EACrBjC,EAAI,IAAI,IAAIiC,EAAM,CAAC,CACrB,EACA,KAAK,UAAY,UAAW,CAC1B,MAAO,CACL,EAAE,KAAK,YAAY,EACnB,EAAEjC,EAAI,IAAI,MAAM,CAAC,CACnB,CACF,EACA,KAAK,YAAc,UAAW,CAC5B,OAAOD,EAAI,UAAU,CACvB,EAEA,KAAK,UAAY,UAAW,CAC1B,OAAOQ,GAASA,EAAM,UAAU,CAClC,EACA,KAAK,MAAQ,UAAW,CACtBA,EAAM,KAAK,CAEb,EACA,KAAK,OAAS,UAAW,CACvBA,EAAM,MAAM,EACZH,EAAM,SAAS,CACjB,EACA,KAAK,MAAQ,UAAW,CACtBL,EAAI,MAAM,EACL,KAAK,iBAAiB,GAAGA,EAAI,WAAW,CAAC,CAChD,CACF,EAEAmC,EAAU,aAAkBtC",
"mappings": "gJAQA,IAAIA,EAAsB,CAC1B,EAEIC,EAAsB,SAASC,EAAa,CAC9C,KAAK,UAAY,IAAKC,EAEtB,IAAIC,EAAKC,EAAKC,EAAKC,EAAQC,EACvBC,EAAOC,EACPC,EAAOC,EACPC,EAAmB,EACnBC,EAAc,EACdC,EAEAC,EAAe,QAAS,EACxBC,EAAmB,QAAU,KAC7BC,EAAoBF,EAAa,GACjCG,EAAoBH,EAAaC,EAErC,KAAK,WAAa,UAAW,CAC3B,OAAOjB,CACT,EAEA,KAAK,MAAQ,UAAW,CACtBK,EAAM,IAAIe,EAAI,IAAK,EACnBb,EAAS,CACP,KAAMc,EAAkB,CAC1B,CAAC,EAAQ,MAAQ,MAAQ,SAASC,EAAG,CAAE,OAAOhB,EAAMA,EAAIgB,CAAC,EAAI,IAAM,CAAC,EACpE,CAAC,MAAQ,MAAQ,KAAQ,SAASA,EAAG,CAAE,OAAOjB,EAAI,IAAIiB,CAAC,CAAG,CAAC,CAC5D,CAAC,EACD,MAAOD,EAAkB,CACxB,CAAC,MAAQ,MAAQ,KAAQ,SAASC,EAAEC,EAAG,CAAElB,EAAI,IAAIiB,CAAC,EAAIC,CAAG,CAAC,CAC3D,CAAC,EACE,YAAa,UAAW,CAAE,MAAO,EAAO,CAC1C,EACAf,EAAQ,CACN,KAAM,SAASgB,EAAM,CACnB,GAAIA,EAAO,GAAM,CACf,GAAIV,GAAe,GAAK,CACtB,IAAIW,EAAOrB,EAAI,WAAW,EAAIe,EAAqB,EACnD,OAAOM,EAAM,IAAO,CACtB,CACA,OAAOV,EAAI,aAAaD,CAAW,EAAI,GACzC,CACA,MAAO,EACV,EACA,MAAO,SAASU,EAAME,EAAK,CACpBF,EAAO,MACTV,EAAcY,EAAM,IAGlBF,EAAO,IACTT,EAAI,gBAAgBD,EAAaY,EAAM,GAAI,CAGhD,CACD,EACA,KAAK,YAAcnB,EAAO,KAC1BH,EAAM,KAAK,OAAOG,EAAQC,CAAK,EAC/BO,EAAM,IAAI,iBACVL,EAAS,IAAI,cACbK,EAAI,QAAQ,iBAAiB,WAAW,EACxCA,EAAI,UAAU,iBAAiB,gBAAgB,EAC/CL,EAAO,WAAWK,CAAG,EACrBN,EAAQ,IAAI,YAAY,GAAG,EAC3BA,EAAM,WAAWC,CAAM,EAEvBC,EAAQ,IAAIgB,EAAYzB,EAAY,IAAI,GAAG,EAC3CS,EAAM,OAAO,EACbA,EAAM,kBAAkB,SAASiB,EAAIC,EAAKC,EAAO,CAC/C,IAAIC,EAAQH,EAAI,GACZG,GAAQ,GAAMD,EAAQ,IACxBf,EAAI,cAAc,GAAIgB,CAAI,EAC1BhB,EAAI,cAAc,GAAI,GAAI,EAC1BX,EAAI,QAAQ,CAAC,EACbA,EAAI,iBAAiB,EAAI,EAQ7B,CAAC,EACDQ,EAAQ,IAAIoB,EAAe,GAAI,IAAM,CACtC,GAAK,KAAK,UAAU,EAEjB,KAAIC,EAAY,KAAK,iBAAiB,EAClCC,EAAgB9B,EAAI,WAAW,EAAIc,EACvC,GAAIe,EACF,KAAO7B,EAAI,WAAW,EAAI8B,GACpBD,GAAaA,EAAU,IAAKA,EAAY,MAC5C7B,EAAI,SAASA,EAAI,WAAW,EAAI,CAAC,OAGnCA,EAAI,SAAS8B,CAAa,EAE9B,CAAC,CACH,EAEA,KAAK,QAAU,SAASC,EAAOC,EAAM,CACnC9B,EAAM+B,EAASD,EAAM,KAAM,EAC3BhC,EAAI,MAAM,CACZ,EAEA,KAAK,UAAY,SAASkC,EAAO,CAC/BlC,EAAI,UAAUkC,EAAM,CAAC,EACrBjC,EAAI,IAAI,IAAIiC,EAAM,CAAC,CACrB,EACA,KAAK,UAAY,UAAW,CAC1B,MAAO,CACL,EAAE,KAAK,YAAY,EACnB,EAAEjC,EAAI,IAAI,MAAM,CAAC,CACnB,CACF,EACA,KAAK,YAAc,UAAW,CAC5B,OAAOD,EAAI,UAAU,CACvB,EAEA,KAAK,UAAY,UAAW,CAC1B,OAAOQ,GAASA,EAAM,UAAU,CAClC,EACA,KAAK,MAAQ,UAAW,CACtBA,EAAM,KAAK,CAEb,EACA,KAAK,OAAS,UAAW,CACvBA,EAAM,MAAM,EACZH,EAAM,SAAS,CACjB,EACA,KAAK,MAAQ,UAAW,CACtBL,EAAI,MAAM,EACL,KAAK,iBAAiB,GAAGA,EAAI,WAAW,CAAC,CAChD,CACF,EAEAmC,EAAU,aAAkBtC",
"names": ["KONAMISOUND_PRESETS", "KonamiSoundPlatform", "mainElement", "BaseZ80Platform", "cpu", "ram", "rom", "membus", "iobus", "audio", "master", "video", "timer", "interruptPending", "psgRegister", "psg", "cpuFrequency", "ioTimerFrequency", "cpuCyclesPerFrame", "cpuCyclesPerTimer", "RAM", "newAddressDecoder", "a", "v", "addr", "bit", "val", "RasterVideo", "key", "code", "flags", "intr", "AnimationTimer", "debugCond", "targetTstates", "title", "data", "padBytes", "state", "PLATFORMS"]
}
-2
View File
@@ -1,2 +0,0 @@
import{D as w}from"./chunk-6POV4IU3.js";import{$ as d,J as v,O as x,R as p,T as C,_ as P}from"./chunk-V6XWGCKJ.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-XKPKLLB4.js.map
-2
View File
@@ -1,2 +0,0 @@
import{J as u,c as f,q as o}from"./chunk-6POV4IU3.js";import{$ as t,J as m}from"./chunk-V6XWGCKJ.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-ORRQVJPD.js.map
+2
View File
@@ -0,0 +1,2 @@
import{J as u,c as f,q as o}from"./chunk-AK5O5EFA.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-X7U5I7N3.js.map
@@ -2,6 +2,6 @@
"version": 3,
"sources": ["../src/platform/sound_williams.ts"],
"sourcesContent": ["\nimport { Z80, Z80State } from \"../common/cpu/ZilogZ80\";\nimport { BasicMachine, CPU, Bus } from \"../common/devices\";\nimport { Platform, BaseZ80MachinePlatform } from \"../common/baseplatform\";\nimport { PLATFORMS, RAM, newAddressDecoder, padBytes, noise, setKeyboardFromMap, AnimationTimer, RasterVideo, Keys, makeKeycodeMap } from \"../common/emu\";\nimport { SampleAudio } from \"../common/audio\";\n\nvar WILLIAMS_SOUND_PRESETS = [\n { id: 'swave.c', name: 'Wavetable Synth' },\n];\n\n/****************************************************************************\n\n Midway/Williams Audio Boards\n ----------------------------\n\n 6809 MEMORY MAP\n\n Function Address R/W Data\n ---------------------------------------------------------------\n Program RAM 0000-07FF R/W D0-D7\n\n Music (YM-2151) 2000-2001 R/W D0-D7\n\n 6821 PIA 4000-4003 R/W D0-D7\n\n HC55516 clock low, digit latch 6000 W D0\n HC55516 clock high 6800 W xx\n\n Bank select 7800 W D0-D2\n\n Banked Program ROM 8000-FFFF R D0-D7\n\n****************************************************************************/\n\nclass WilliamsSound extends BasicMachine {\n cpuFrequency = 18432000 / 6; // 3.072 MHz\n cpuCyclesPerFrame = this.cpuFrequency / 60;\n cpuAudioFactor = 32;\n canvasWidth = 256;\n numVisibleScanlines = 256;\n defaultROMSize = 0x4000;\n sampleRate = this.cpuFrequency;\n overscan = true;\n \n cpu : Z80;\n ram = new Uint8Array(0x400);\n iobus : Bus;\n \n command : number = 0;\n dac : number = 0;\n dac_float : number = 0;\n xpos : number = 0;\n\n read = newAddressDecoder([\n [0x0000, 0x3fff, 0x3fff, (a) => { return this.rom && this.rom[a]; }],\n [0x4000, 0x7fff, 0x3ff, (a) => { return this.ram[a]; }]\n ]);\n\n write = newAddressDecoder([\n [0x4000, 0x7fff, 0x3ff, (a, v) => { this.ram[a] = v; }],\n ]);\n \n constructor() {\n super();\n this.cpu = new Z80();\n this.connectCPUMemoryBus(this);\n this.connectCPUIOBus({\n read: (addr) => {\n return this.command & 0xff;\n },\n write: (addr, val) => {\n let dac = this.dac = val & 0xff;\n this.dac_float = ((dac & 0x80) ? -256 + dac : dac) / 128.0;\n }\n });\n }\n \n advanceFrame(trap) : number {\n this.pixels && this.pixels.fill(0); // clear waveform\n let maxCycles = this.cpuCyclesPerFrame;\n var n = 0;\n while (n < maxCycles) {\n if (trap && trap()) {\n break;\n }\n n += this.advanceCPU();\n }\n return n;\n }\n \n advanceCPU() {\n var n = super.advanceCPU();\n this.audio && this.audio.feedSample(this.dac_float, n);\n // draw waveform on screen\n if (this.pixels && !this.cpu.isHalted()) {\n this.pixels[((this.xpos >> 8) & 0xff) + ((255-this.dac) << 8)] = 0xff33ff33;\n this.xpos = (this.xpos + n) & 0xffffff;\n }\n return n;\n }\n\n setKeyInput(key:number, code:number, flags:number) : void {\n var intr = (key - 49);\n if (intr >= 0 && (flags & 1)) {\n this.command = intr & 0xff;\n this.cpu.reset();\n }\n }\n}\n\nexport class WilliamsSoundPlatform extends BaseZ80MachinePlatform<WilliamsSound> {\n\n newMachine() { return new WilliamsSound(); }\n getPresets() { return WILLIAMS_SOUND_PRESETS; }\n readAddress(a) { return this.machine.read(a); }\n\n}\n\nPLATFORMS['sound_williams-z80'] = WilliamsSoundPlatform;\n"],
"mappings": "iIAOA,IAAIA,EAAyB,CAC3B,CAAE,GAAI,UAAW,KAAM,iBAAkB,CAC3C,EA0BMC,EAAN,cAA4BC,CAAa,CA4BvC,aAAc,CACZ,MAAM,EA5BR,kBAAe,QAAW,EAC1B,uBAAoB,KAAK,aAAe,GACxC,oBAAiB,GACjB,iBAAc,IACd,yBAAsB,IACtB,oBAAiB,MACjB,gBAAa,KAAK,aAClB,cAAW,GAGX,SAAM,IAAI,WAAW,IAAK,EAG1B,aAAmB,EACnB,SAAe,EACf,eAAqB,EACrB,UAAgB,EAEhB,UAAOC,EAAkB,CACvB,CAAC,EAAQ,MAAQ,MAASC,GAAe,KAAK,KAAO,KAAK,IAAIA,CAAC,CAAI,EACnE,CAAC,MAAQ,MAAQ,KAAQA,GAAe,KAAK,IAAIA,CAAC,CAAI,CACxD,CAAC,EAED,WAAQD,EAAkB,CACxB,CAAC,MAAQ,MAAQ,KAAO,CAACC,EAAGC,IAAM,CAAE,KAAK,IAAID,CAAC,EAAIC,CAAG,CAAC,CACxD,CAAC,EAIC,KAAK,IAAM,IAAIC,EACf,KAAK,oBAAoB,IAAI,EAC7B,KAAK,gBAAgB,CACnB,KAAOC,GACE,KAAK,QAAU,IAExB,MAAO,CAACA,EAAMC,IAAQ,CACpB,IAAIC,EAAM,KAAK,IAAMD,EAAM,IAC3B,KAAK,WAAcC,EAAM,IAAQ,KAAOA,EAAMA,GAAO,GACvD,CACF,CAAC,CACH,CAEA,aAAaC,EAAe,CAC1B,KAAK,QAAU,KAAK,OAAO,KAAK,CAAC,EACjC,IAAIC,EAAY,KAAK,kBAErB,QADIC,EAAI,EACDA,EAAID,GACL,EAAAD,GAAQA,EAAK,IAGjBE,GAAK,KAAK,WAAW,EAEvB,OAAOA,CACT,CAEA,YAAa,CACX,IAAIA,EAAI,MAAM,WAAW,EACzB,YAAK,OAAS,KAAK,MAAM,WAAW,KAAK,UAAWA,CAAC,EAEjD,KAAK,QAAU,CAAC,KAAK,IAAI,SAAS,IACpC,KAAK,QAAS,KAAK,MAAQ,EAAK,MAAU,IAAI,KAAK,KAAQ,EAAE,EAAI,WACjE,KAAK,KAAQ,KAAK,KAAOA,EAAK,UAEzBA,CACT,CAEA,YAAYC,EAAYC,EAAaC,EAAqB,CACxD,IAAIC,EAAQH,EAAM,GACdG,GAAQ,GAAMD,EAAQ,IACxB,KAAK,QAAUC,EAAO,IACtB,KAAK,IAAI,MAAM,EAEnB,CACF,EAEaC,EAAN,cAAoCC,CAAsC,CAE/E,YAAsB,CAAE,OAAO,IAAIjB,CAAiB,CACpD,YAAsB,CAAE,OAAOD,CAAwB,CACvD,YAAYI,EAAU,CAAE,OAAO,KAAK,QAAQ,KAAKA,CAAC,CAAG,CAEvD,EAEAe,EAAU,oBAAoB,EAAIF",
"mappings": "kIAOA,IAAIA,EAAyB,CAC3B,CAAE,GAAI,UAAW,KAAM,iBAAkB,CAC3C,EA0BMC,EAAN,cAA4BC,CAAa,CA4BvC,aAAc,CACZ,MAAM,EA5BR,kBAAe,QAAW,EAC1B,uBAAoB,KAAK,aAAe,GACxC,oBAAiB,GACjB,iBAAc,IACd,yBAAsB,IACtB,oBAAiB,MACjB,gBAAa,KAAK,aAClB,cAAW,GAGX,SAAM,IAAI,WAAW,IAAK,EAG1B,aAAmB,EACnB,SAAe,EACf,eAAqB,EACrB,UAAgB,EAEhB,UAAOC,EAAkB,CACvB,CAAC,EAAQ,MAAQ,MAASC,GAAe,KAAK,KAAO,KAAK,IAAIA,CAAC,CAAI,EACnE,CAAC,MAAQ,MAAQ,KAAQA,GAAe,KAAK,IAAIA,CAAC,CAAI,CACxD,CAAC,EAED,WAAQD,EAAkB,CACxB,CAAC,MAAQ,MAAQ,KAAO,CAACC,EAAGC,IAAM,CAAE,KAAK,IAAID,CAAC,EAAIC,CAAG,CAAC,CACxD,CAAC,EAIC,KAAK,IAAM,IAAIC,EACf,KAAK,oBAAoB,IAAI,EAC7B,KAAK,gBAAgB,CACnB,KAAOC,GACE,KAAK,QAAU,IAExB,MAAO,CAACA,EAAMC,IAAQ,CACpB,IAAIC,EAAM,KAAK,IAAMD,EAAM,IAC3B,KAAK,WAAcC,EAAM,IAAQ,KAAOA,EAAMA,GAAO,GACvD,CACF,CAAC,CACH,CAEA,aAAaC,EAAe,CAC1B,KAAK,QAAU,KAAK,OAAO,KAAK,CAAC,EACjC,IAAIC,EAAY,KAAK,kBAErB,QADIC,EAAI,EACDA,EAAID,GACL,EAAAD,GAAQA,EAAK,IAGjBE,GAAK,KAAK,WAAW,EAEvB,OAAOA,CACT,CAEA,YAAa,CACX,IAAIA,EAAI,MAAM,WAAW,EACzB,YAAK,OAAS,KAAK,MAAM,WAAW,KAAK,UAAWA,CAAC,EAEjD,KAAK,QAAU,CAAC,KAAK,IAAI,SAAS,IACpC,KAAK,QAAS,KAAK,MAAQ,EAAK,MAAU,IAAI,KAAK,KAAQ,EAAE,EAAI,WACjE,KAAK,KAAQ,KAAK,KAAOA,EAAK,UAEzBA,CACT,CAEA,YAAYC,EAAYC,EAAaC,EAAqB,CACxD,IAAIC,EAAQH,EAAM,GACdG,GAAQ,GAAMD,EAAQ,IACxB,KAAK,QAAUC,EAAO,IACtB,KAAK,IAAI,MAAM,EAEnB,CACF,EAEaC,EAAN,cAAoCC,CAAsC,CAE/E,YAAsB,CAAE,OAAO,IAAIjB,CAAiB,CACpD,YAAsB,CAAE,OAAOD,CAAwB,CACvD,YAAYI,EAAU,CAAE,OAAO,KAAK,QAAQ,KAAKA,CAAC,CAAG,CAEvD,EAEAe,EAAU,oBAAoB,EAAIF",
"names": ["WILLIAMS_SOUND_PRESETS", "WilliamsSound", "BasicMachine", "newAddressDecoder", "a", "v", "Z80", "addr", "val", "dac", "trap", "maxCycles", "n", "key", "code", "flags", "intr", "WilliamsSoundPlatform", "BaseZ80MachinePlatform", "PLATFORMS"]
}
Loaded 100 of 174 files, more files were not shown because too many files have changed in this diff. Show more