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

This commit is contained in:
sehugg committed 2026-09-18 14:57:24 +00:00
1 parent 023c3f0014
commit 149bcdff73
71 files changed
+3489 -188

No files matched your search

-7
View File
@@ -1,7 +0,0 @@
import{a as nt}from"./chunk-WIKZL6VD.js";import{b as ht,c as ot,d as Y}from"./chunk-LZK7RTFU.js";import{A as rt,J as at,g as $,k as tt,m as et,r as st,x as it}from"./chunk-2XSLQJUY.js";import{K as D,V as O,W as i,X as Z,Z as J,a as U,aa as T,g as m,r as A}from"./chunk-TYDI7JZQ.js";import"./chunk-VSC4MAII.js";var Ot=[0,25,17,9],Tt=[0,89,97,105],b=0,Mt=1,F=2,H=3,kt=4,vt=5,Ct=7,Lt=9,C=10,Pt=11,Kt=12,Vt=13,lt=14,wt=15,L=15;var Nt=13,Ut=106,Yt=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,8,4,4,4,2,2,2],Ht=[0,0,0,0,0,1,0,1,0,0,2,1,0,0,0,0],ct=[0,0,1,1,2,2,2,2,8,4,4,2,2,2,2,1],M=class{constructor(e,t){this.regs=new Uint8Array(16);this.left=-1;this.right=-1;this.dma_enabled=!1;this.dliop=0;this.mode=0;this.jmp=!1;this.lms=!1;this.dlarg_lo=0;this.dlarg_hi=0;this.period=0;this.scanaddr=0;this.startaddr=0;this.pfbyte=0;this.ch=0;this.linesleft=0;this.yofs=0;this.isfirstline=!1;this.v=0;this.h=0;this.linebuf=new Uint8Array(48);this.dmaclock=0;this.dmaidx=0;this.output=0;this.dramrefresh=!1;this.in_vscroll=0;this.read=e,this.nmi=t}reset(){this.regs.fill(0),this.regs[lt]=0,this.regs[L]=127,this.regs[Kt]=0,this.regs[Vt]=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: "+U(e.h,3)+" V: "+U(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 wt:this.regs[L]=31;return}this.regs[e]=t}readReg(e){switch(e){case L:return this.regs[e];case Pt: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[F]=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[kt]&15)>>1:0;this.dliop&16&&e<3&&e++,this.left=Ot[e]+t,this.right=Tt[e]+t;let s=this.regs[vt]&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[F]+(this.regs[H]<<8)}nextInsn(){let e=this.getDlistAddr(),t=this.read(e);return e=e+1&1023|e&-1024,this.regs[F]=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<=Yt;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<Nt||this.h>Ut)&&(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[Ct]<<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>>Ht[this.mode],r=s&7,n=this.regs[Lt];(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[Mt],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 Qt=2;var ft=4;var dt=6;var g=8,Bt=9,zt=10,Xt=11,qt=13,B=14,E=15;var Wt=8,Gt=9,jt=10,Zt=13,S=14,P=15;var xt=128,ut=64,Jt=32,mt=16,gt=8;var $t=1,_t=28,te=114;var pt=511,bt=131071,x=0,u=1,_=2,c=3,y=114,ee=15;var se=8;var z,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 re=[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],ae=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,ae,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-GYR56LP5.js.map
+7
View File
@@ -0,0 +1,7 @@
import{a as ot}from"./chunk-WIKZL6VD.js";import{b as lt,c as ct,d as Y}from"./chunk-LZK7RTFU.js";import{A as nt,J as ht,g as et,k as st,m as it,r as rt,x as at}from"./chunk-2XSLQJUY.js";import{K as R,V as D,W as i,X as J,Z as tt,a as F,aa as T,g,r as E}from"./chunk-TYDI7JZQ.js";import"./chunk-VSC4MAII.js";var kt=[0,25,17,9],Mt=[0,89,97,105],y=0,vt=1,H=2,Q=3,Ct=4,Lt=5,Kt=7,Pt=9,C=10,Vt=11,wt=12,Nt=13,ft=14,Ut=15,L=15;var Ft=13,Yt=106,Ht=105,B=[0,0,8,10,8,16,8,16,8,4,4,2,1,2,1,1],Qt=[0,0,2,2,2,2,4,4,8,8,4,4,4,2,2,2],Bt=[0,0,0,0,0,1,0,1,0,0,2,1,0,0,0,0],dt=[0,0,1,1,2,2,2,2,8,4,4,2,2,2,2,1],k=class{constructor(e,t){this.regs=new Uint8Array(16);this.left=-1;this.right=-1;this.dma_enabled=!1;this.dliop=0;this.mode=0;this.jmp=!1;this.lms=!1;this.dlarg_lo=0;this.dlarg_hi=0;this.period=0;this.scanaddr=0;this.startaddr=0;this.pfbyte=0;this.ch=0;this.linesleft=0;this.yofs=0;this.isfirstline=!1;this.v=0;this.h=0;this.linebuf=new Uint8Array(48);this.dmaclock=0;this.dmaidx=0;this.output=0;this.dramrefresh=!1;this.in_vscroll=0;this.read=e,this.nmi=t}reset(){this.regs.fill(0),this.regs[ft]=0,this.regs[L]=127,this.regs[wt]=0,this.regs[Nt]=255,this.setReg(y,0),this.h=this.v=0,this.startaddr=this.scanaddr=0,this.dmaclock=0}saveState(){return E(0,{},this)}loadState(e){E(0,this,e),this.setReg(y,e.regs[y])}static stateToLongString(e){let t="";return t+="H: "+F(e.h,3)+" V: "+F(e.v,3)+`
`,t+="DLIOp: "+g(e.dliop,2)+" Lines: "+e.yofs+"/"+e.linesleft,t+=" DMA "+(e.dma_enabled?"ON ":"off"),e.dma_enabled&&(t+=" idx "+e.dmaidx+" clk "+g(e.dmaclock)),t+=`
`,t+="Addr: "+g(e.scanaddr,4)+`
`,t+=D(e.regs,0,16).replace("$00","Regs"),t}setReg(e,t){switch(e){case C:this.regs[C]=255;return;case Ut:this.regs[L]=31;return}this.regs[e]=t}readReg(e){switch(e){case L:return this.regs[e];case Vt: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=B[this.mode],this.period=Qt[this.mode],this.jmp?(this.regs[H]=this.dlarg_lo,this.regs[Q]=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[y]&3,t=this.dliop&16?(this.regs[Ct]&15)>>1:0;this.dliop&16&&e<3&&e++,this.left=kt[e]+t,this.right=Mt[e]+t;let s=this.regs[Lt]&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[ft]&e&&this.nmi()}getDlistAddr(){return this.regs[H]+(this.regs[Q]<<8)}nextInsn(){let e=this.getDlistAddr(),t=this.read(e);return e=e+1&1023|e&-1024,this.regs[H]=e&255,this.regs[Q]=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[y]&32}isVisibleScanline(){return this.v>=8&&this.v<248}isPlayfieldDMAEnabled(){return this.dma_enabled&&!this.linesleft}isPlayerDMAEnabled(){return this.regs[y]&8}isMissileDMAEnabled(){return this.regs[y]&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<=Ht;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<Ft||this.h>Yt)&&(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[y]&16,s=this.regs[Kt]<<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>>Bt[this.mode],r=s&7,a=this.regs[Pt];(e&14)==6?(t&=63,a&=254):(t&=127,a&=252);let l=(t<<3)+(a<<8);if((e&14)==2){let c=this.regs[vt],o=e==3&&(t&96)==96;c&4?this.pfbyte=this.read(l+(r^7)):this.pfbyte=this.read(l+r),o&&s<2&&(this.pfbyte=0),!o&&s>7&&(this.pfbyte=0),this.ch&128&&(c&1&&(this.pfbyte=0),c&2&&(this.pfbyte^=255))}else this.pfbyte=this.read(l+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 d=0;var zt=2;var xt=4;var ut=6;var _=8,Xt=9,qt=10,Wt=11,Gt=13,z=14,A=15;var jt=8,Zt=9,$t=10,Jt=13,I=14,K=15;var mt=128,gt=64,te=32,_t=16,pt=8;var ee=1,bt=28,se=114;var yt=511,St=131071,u=0,m=1,p=2,x=3,S=114,ie=15;var re=8;var X,P;functi Line truncated
`,t+=D(e.regs,0,16),t+=`Read Registers:
`,t+=D(e.readregs,0,16),t}CASSETTE_IOLineStatus(){return 0}siocheck(){return((this.regs[d+p]==40||this.regs[d+p]==16||this.regs[d+p]==8||this.regs[d+p]==10)&&this.regs[d+x]==0||(this.regs[A]&120)==40)&&(this.regs[_]&40)==40}SIO_PutByte(e){console.log("SIO put byte",e)}SIO_GetByte(){return 0}};var V=class{constructor(e){if(this.data=e,e.length>=16&&(e[0]|e[1]<<8)==662){let s=(e[2]|e[3]<<8)*16,r=e[4]|e[5]<<8;this.sectorsize=r==256?256:128,this.sectorsize==256?this.numsectors=3+Math.floor((s-16-384)/256):this.numsectors=Math.floor((s-16)/128)}else this.sectorsize=128,this.numsectors=Math.floor(e.length/128)}sectorOffset(e){return this.sectorsize==256?e<3?16+e*128:400+(e-3)*256:16+e*128}readSector(e,t){let s=e-1;if(s<0||s>=this.numsectors)return null;let r=this.sectorOffset(s);return this.data.subarray(r,Math.min(r+t,this.data.length))}writeSector(e,t,s){let r=e-1;if(r<0||r>=this.numsectors)return!1;let a=this.sectorOffset(r);return this.data.set(t.subarray(0,Math.min(s,this.data.length-a)),a),!0}};var q=160,ne=240,he=241,oe=[173,0,3,201,49,144,12,201,64,176,8,141,240,213,173,241,213,168,96,76,80,233],le=[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],ce=tt([[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 rt{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.disk=null;this.keyboard_active=!0;this.d500=new Uint8Array(256);this.cpu=new it,this.ram=new Uint8Array(65536),this.bios=new Uint8Array(10240),this.bus=this.newBus(),this.connectCPUMemoryBus(this.bus),this.antic=new k(this.readDMA.bind(this),this.antic_nmi.bind(this)),this.gtia=new Y,this.irq_pokey=new M(this.pokey_irq.bind(this),()=>this.antic.h),this.audio_pokey=et(1),this.audioadapter=new st(this.audio_pokey.pokey1,this.audioOversample,this.sampleRate),this.handler=J(this.inputs,ce,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),this.installSIOStub()}installSIOStub(){this.bios[3161]=76,this.bios[3162]=54528+q&255,this.bios[3163]=54528+q>>8,this.d500.set(oe,q)}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[lt+t]=~this.inputs[2]>>t&1;this.gtia.readregs[ct]=~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 Line truncated
//# sourceMappingURL=atari8-VDKLRU3M.js.map
@@ -1,7 +1,7 @@
{
"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, 8, 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 // Initialized so they are always own properties and therefore always\n // round-trip through saveState()/loadState() -- safe_extend() copies only\n // the keys present in the source, so a field that is merely declared is\n // absent from a save state and keeps its old value on load, which leaks\n // state backwards across a rewind. -1 behaves exactly as undefined did in\n // every comparison below (h is never negative, and h >= 2 && h <= 1 is\n // never true), so this does not change emulation.\n left: number = -1;\n right: number = -1;\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 Line 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", "Atari5200_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", "p", "title", "data", "_self", "Atari5200MAMEPlatform", "rom", "PLATFORMS"]
"sources": ["../src/machine/chips/antic.ts", "../src/machine/chips/pokey.ts", "../src/machine/atari8disk.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, 8, 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 // Initialized so they are always own properties and therefore always\n // round-trip through saveState()/loadState() -- safe_extend() copies only\n // the keys present in the source, so a field that is merely declared is\n // absent from a save state and keeps its old value on load, which leaks\n // state backwards across a rewind. -1 behaves exactly as undefined did in\n // every comparison below (h is never negative, and h >= 2 && h <= 1 is\n // never true), so this does not change emulation.\n left: number = -1;\n right: number = -1;\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 Line 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", "DiskImage", "data", "total", "sectorsize", "sector", "len", "idx", "ofs", "src", "SIO_STUB_OFFSET", "SIO_HOOK_OFFSET", "SIO_STATUS_OFFSET", "SIO_STUB", "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", "DiskImage", "rom2", "addr", "value", "dunit", "dcomnd", "dbuf", "dbyt", "sector", "disk", "status", "dvstat", "n", "bytes", "buf", "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", "Atari5200_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", "p", "title", "data", "_self", "Atari5200MAMEPlatform", "rom", "PLATFORMS"]
}
@@ -1,4 +1,4 @@
import{b as S}from"./chunk-3FIVEUG2.js";import{y as E}from"./chunk-5YJJ4DRA.js";import"./chunk-VLOGW7AJ.js";import"./chunk-T6VURU5O.js";import"./chunk-A7SWO6EA.js";import"./chunk-4R3KPJX7.js";import"./chunk-2XSLQJUY.js";import{B as c,K as f,T as d,U as v,a as g}from"./chunk-TYDI7JZQ.js";import"./chunk-VSC4MAII.js";function k(u){return u.value!=null}function y(u){return u.name!=null}function O(u){return u.op!=null&&u.left!=null&&u.right!=null}function N(u){return u.op!=null&&u.expr!=null}var m=class{randomize(){this.seed(Math.random()*2147483647,Math.random()*2147483647,Math.random()*2147483647,Math.random()*2147483647)}constructor(){(()=>{var r,e,i,n;this.seed=function(s,a,h,o){r=s,e=a,i=h,n=o},this.seedfloat=function(s){this.seed(s,s*4294,s*429496,s*4294967296),this.next(),this.next(),this.next()},this.next=function(){r>>>=0,e>>>=0,i>>>=0,n>>>=0;var s=r+e|0;return r=e^e>>>9,e=i+(i<<3)|0,i=i<<21|i>>>11,n=n+1|0,s=s+n|0,i=i+s|0,(s>>>0)/4294967296}})(),this.seedfloat(-1)}},I=1024*1024,l=class u{constructor(){this.margin=80;this.running=!1;this.exited=!0;this.trace=!1}load(t){let r=null,e=0;if(this.pc2label!=null){let s=this.curpc;for(;s>0&&(r=this.pc2label.get(s))==null;)s--;e=this.curpc-s,console.log("oldpc=",this.curpc,"restart @ label",r,"+",e)}this.program=t,this.opts=t.opts,this.opts.maxArrayElements||(this.opts.maxArrayElements=I),this.allstmts=t.stmts,this.label2pc=t.labels,this.label2dataptr={},this.pc2label=new Map,this.datums=[],this.subroutines={},this.builtins=this.getBuiltinFunctions();for(var i in t.labels){var n=t.labels[i];this.pc2label.set(n,i)}return this.allstmts.forEach((s,a)=>{this.curpc=a+1,this.compileStatement(s),s.command=="DATA"&&(this.label2dataptr[s.$loc.label]=this.datums.length,s.datums.forEach(h=>{this.curpc=s.$loc.offset,this.datums.push(h)}))}),this.label2pc[r]!=null?(this.curpc=this.label2pc[r]+e,!0):(this.curpc=0,!1)}reset(){this.curpc=0,this.dataptr=0,this.clearVars(),this.returnStack=[],this.column=0,this.running=!0,this.exited=!1}clearVars(){this.globals=this.vars={},this.arrays={},this.defs={},this.forLoops={},this.forLoopStack=[],this.whileLoops=[],this.rng=new m,this.opts&&this.opts.staticArrays&&this.allstmts.filter(t=>t.command=="DIM").forEach(t=>{t.args.forEach(r=>this.compileJS(this._DIM(r))())})}saveState(){return $.extend(!0,{},this)}loadState(t){$.extend(!0,this,t)}getBuiltinFunctions(){var t=this.program&&this.opts.validFunctions;t||(t=Object.getOwnPropertyNames(u.prototype).filter(i=>/^[A-Z]{3,}[$]?$/.test(i)));var r={};for(var e of t)this.supportsFunction(e)&&(r[e]=this[e].bind(this));return r}supportsFunction(t){return typeof this[t]=="function"}runtimeError(t){throw this.curpc--,new d(t,this.getCurrentSourceLocation())}dialectError(t){this.runtimeError(`I can't ${t} in this dialect of BASIC.`)}getLineForPC(t){var r=this.allstmts[t];return r&&r.$loc&&r.$loc.line}getLabelForPC(t){var r=this.allstmts[t];return r&&r.$loc&&r.$loc.label}getCurrentSourceLocation(){var t=this.getStatement();return t&&t.$loc}getCurrentLabel(){var t=this.getCurrentSourceLocation();return t&&t.label}getStatement(){return this.allstmts[this.curpc]}step(){if(!this.running)return!1;var t=this.getStatement();return t?(this.trace&&console.log(this.curpc,t,this.vars,Object.keys(this.arrays)),this.curpc++,this.executeStatement(t),this.running):(this.running=!1,this.exited=!0,!1)}compileStatement(t){if(t.$run==null)try{var r=this["do__"+t.command];r==null&&this.runtimeError(`I don't know how to "${t.command}".`);var e=r.bind(this)(t);this.trace&&console.log(e),t.$run=this.compileJS(e)}catch(i){throw e&&console.log(e),i}}compileJS(t){return new Function(t).bind(this)}executeStatement(t){this.compileStatement(t),t.$run()}skipToEOL(){do this.curpc++;while(this.curpc<this.allstmts.length&&!this.pc2label.get(this.curpc))}skipToElse(){for(;this.curpc<this.allstmts.length;){var t=this.allstmts[this.curpc].command;if(t=="ELSE"){this.curpc++;break}else if(t=="IF")return this.skipToEOL();if(this.curpc++,this.pc2label.get(this.curpc))break}}skipToEOF(){this.curpc=this.allstmts.length}skipToAfterNext(t){for(var r=this.curpc;r<this.allstmts.length;){var e=this.allstmts[r];if(e.command=="NEXT"){var i=e.lexpr;if(i&&i.name==t){this.curpc=r+1;return}}r++}this.runtimeError(`I couldn't find a matching NEXT ${t} to skip this for loop.`)}skipToAfterWend(){for(var t=this.curpc-1,r=0;t<this.allstmts.length;){var e=this.allstmts[t];if(e.command=="WHILE")r++;else if(e.command=="WEND"&&(r--,r==0)){this.curpc=t+1;return}t++}this.runtimeError("I couldn't find a matching WEND for this WHILE.")}gotoLabel(t){var r=this.label2pc[t];r>=0?this.curpc=r:this.runtimeError(`I tried to go to the label "${t}" but couldn't find it.`)}newLocalScope(){this.vars=Object.create(this.vars)}popLocalScope(){this.vars!==this.globals&&(this.vars=Object.getPrototypeOf(this.vars))}gosubLabel(t){this.returnStack.length>32767&&this.runtimeError("I did too many GOSUBs without a RETURN."),this.returnStack.push(this.curpc),this.gotoLabel(t)}returnFrLine truncated
import{b as S}from"./chunk-3FIVEUG2.js";import{y as E}from"./chunk-XRWSPMRR.js";import"./chunk-VLOGW7AJ.js";import"./chunk-T6VURU5O.js";import"./chunk-A7SWO6EA.js";import"./chunk-C7SFJC4F.js";import"./chunk-2XSLQJUY.js";import{B as c,K as f,T as d,U as v,a as g}from"./chunk-TYDI7JZQ.js";import"./chunk-VSC4MAII.js";function k(u){return u.value!=null}function y(u){return u.name!=null}function O(u){return u.op!=null&&u.left!=null&&u.right!=null}function N(u){return u.op!=null&&u.expr!=null}var m=class{randomize(){this.seed(Math.random()*2147483647,Math.random()*2147483647,Math.random()*2147483647,Math.random()*2147483647)}constructor(){(()=>{var r,e,i,n;this.seed=function(s,a,h,o){r=s,e=a,i=h,n=o},this.seedfloat=function(s){this.seed(s,s*4294,s*429496,s*4294967296),this.next(),this.next(),this.next()},this.next=function(){r>>>=0,e>>>=0,i>>>=0,n>>>=0;var s=r+e|0;return r=e^e>>>9,e=i+(i<<3)|0,i=i<<21|i>>>11,n=n+1|0,s=s+n|0,i=i+s|0,(s>>>0)/4294967296}})(),this.seedfloat(-1)}},I=1024*1024,l=class u{constructor(){this.margin=80;this.running=!1;this.exited=!0;this.trace=!1}load(t){let r=null,e=0;if(this.pc2label!=null){let s=this.curpc;for(;s>0&&(r=this.pc2label.get(s))==null;)s--;e=this.curpc-s,console.log("oldpc=",this.curpc,"restart @ label",r,"+",e)}this.program=t,this.opts=t.opts,this.opts.maxArrayElements||(this.opts.maxArrayElements=I),this.allstmts=t.stmts,this.label2pc=t.labels,this.label2dataptr={},this.pc2label=new Map,this.datums=[],this.subroutines={},this.builtins=this.getBuiltinFunctions();for(var i in t.labels){var n=t.labels[i];this.pc2label.set(n,i)}return this.allstmts.forEach((s,a)=>{this.curpc=a+1,this.compileStatement(s),s.command=="DATA"&&(this.label2dataptr[s.$loc.label]=this.datums.length,s.datums.forEach(h=>{this.curpc=s.$loc.offset,this.datums.push(h)}))}),this.label2pc[r]!=null?(this.curpc=this.label2pc[r]+e,!0):(this.curpc=0,!1)}reset(){this.curpc=0,this.dataptr=0,this.clearVars(),this.returnStack=[],this.column=0,this.running=!0,this.exited=!1}clearVars(){this.globals=this.vars={},this.arrays={},this.defs={},this.forLoops={},this.forLoopStack=[],this.whileLoops=[],this.rng=new m,this.opts&&this.opts.staticArrays&&this.allstmts.filter(t=>t.command=="DIM").forEach(t=>{t.args.forEach(r=>this.compileJS(this._DIM(r))())})}saveState(){return $.extend(!0,{},this)}loadState(t){$.extend(!0,this,t)}getBuiltinFunctions(){var t=this.program&&this.opts.validFunctions;t||(t=Object.getOwnPropertyNames(u.prototype).filter(i=>/^[A-Z]{3,}[$]?$/.test(i)));var r={};for(var e of t)this.supportsFunction(e)&&(r[e]=this[e].bind(this));return r}supportsFunction(t){return typeof this[t]=="function"}runtimeError(t){throw this.curpc--,new d(t,this.getCurrentSourceLocation())}dialectError(t){this.runtimeError(`I can't ${t} in this dialect of BASIC.`)}getLineForPC(t){var r=this.allstmts[t];return r&&r.$loc&&r.$loc.line}getLabelForPC(t){var r=this.allstmts[t];return r&&r.$loc&&r.$loc.label}getCurrentSourceLocation(){var t=this.getStatement();return t&&t.$loc}getCurrentLabel(){var t=this.getCurrentSourceLocation();return t&&t.label}getStatement(){return this.allstmts[this.curpc]}step(){if(!this.running)return!1;var t=this.getStatement();return t?(this.trace&&console.log(this.curpc,t,this.vars,Object.keys(this.arrays)),this.curpc++,this.executeStatement(t),this.running):(this.running=!1,this.exited=!0,!1)}compileStatement(t){if(t.$run==null)try{var r=this["do__"+t.command];r==null&&this.runtimeError(`I don't know how to "${t.command}".`);var e=r.bind(this)(t);this.trace&&console.log(e),t.$run=this.compileJS(e)}catch(i){throw e&&console.log(e),i}}compileJS(t){return new Function(t).bind(this)}executeStatement(t){this.compileStatement(t),t.$run()}skipToEOL(){do this.curpc++;while(this.curpc<this.allstmts.length&&!this.pc2label.get(this.curpc))}skipToElse(){for(;this.curpc<this.allstmts.length;){var t=this.allstmts[this.curpc].command;if(t=="ELSE"){this.curpc++;break}else if(t=="IF")return this.skipToEOL();if(this.curpc++,this.pc2label.get(this.curpc))break}}skipToEOF(){this.curpc=this.allstmts.length}skipToAfterNext(t){for(var r=this.curpc;r<this.allstmts.length;){var e=this.allstmts[r];if(e.command=="NEXT"){var i=e.lexpr;if(i&&i.name==t){this.curpc=r+1;return}}r++}this.runtimeError(`I couldn't find a matching NEXT ${t} to skip this for loop.`)}skipToAfterWend(){for(var t=this.curpc-1,r=0;t<this.allstmts.length;){var e=this.allstmts[t];if(e.command=="WHILE")r++;else if(e.command=="WEND"&&(r--,r==0)){this.curpc=t+1;return}t++}this.runtimeError("I couldn't find a matching WEND for this WHILE.")}gotoLabel(t){var r=this.label2pc[t];r>=0?this.curpc=r:this.runtimeError(`I tried to go to the label "${t}" but couldn't find it.`)}newLocalScope(){this.vars=Object.create(this.vars)}popLocalScope(){this.vars!==this.globals&&(this.vars=Object.getPrototypeOf(this.vars))}gosubLabel(t){this.returnStack.length>32767&&this.runtimeError("I did too many GOSUBs without a RETURN."),this.returnStack.push(this.curpc),this.gotoLabel(t)}returnFrLine truncated
`)this.column=0,e=t;else if(t==" "){var n=this.opts.printZoneLength,s=Math.floor(this.column/n),a=(s+1)*this.opts.printZoneLength;a+n>this.margin?(this.column=0,e=`
`):e=this.TAB(a)}else e=`${t}`;return e}float2str(t,r){var e=t.toString().toUpperCase();if(r>0){for(var i=r;e.length>r;)e=t.toPrecision(i--);e.startsWith("0.")?e=e.substr(1):e.startsWith("-0.")&&(e="-"+e.substr(2))}return e}printExpr(t){var r=this.valueToString(t,this.opts.numericPadding);this.column+=r.length,this.print(r)}print(t){console.log(t)}async input(t,r){return{line:"",vals:[]}}resume(){}expr2js(t,r){if(r||(r={}),k(t))return JSON.stringify(t.value);if(y(t)){if(!t.args&&r.locals&&r.locals.indexOf(t.name)>=0)return t.name;{r.isconst&&this.runtimeError("I expected a constant value here.");var e="",i=JSON.stringify(t.name);let h=t.args?t.args.map(o=>this.expr2js(o,r)).join(", "):[];return t.name.startsWith("FN")?e+=`this.getDef(${i})(${h})`:this.builtins[t.name]?(this.checkFuncArgs(t,this.builtins[t.name]),e+=`this.builtins.${t.name}(${h})`):t.args?this.opts.arraysContainChars&&t.name.endsWith("$")?e+=`this.getStringSlice(this.vars.${t.name}, ${h})`:e+=`this.arrayGet(${i}, ${h})`:e+=`this.vars.${t.name}`,r.novalid?e:`this.checkValue(${e}, ${i})`}}else if(O(t)){var n=this.expr2js(t.left,r),s=this.expr2js(t.right,r);return`this.${t.op}(${n}, ${s})`}else if(N(t)){var a=this.expr2js(t.expr,r);return`this.${t.op}(${a})`}}assign2js(t,r){r||(r={});var e="";return(t.name.startsWith("FN")||this.builtins[t.name])&&this.runtimeError("I can't call a function here."),t.args?this.opts.arraysContainChars&&t.name.endsWith("$")?this.runtimeError("I can't set array slices via this command yet."):e+=this.array2js(t,r):e=`this.globals.${t.name}`,e}array2js(t,r){var e=JSON.stringify(t.name),i=t.args||[];return this.expr2js(t,{novalid:!0})+`;this.getArray(${e}, ${i.length})`+i.map(n=>"[this.ROUND("+this.expr2js(n,r)+")]").join("")}checkFuncArgs(t,r){var e=t.args?t.args.length:0;t.name=="RND"&&e==0||t.name=="MID$"&&e==2||t.name=="INSTR"&&e==2||r.length!=e&&this.runtimeError(`I expected ${r.length} arguments for the ${t.name} function, but I got ${e}.`)}startForLoop(t,r,e,i,n){var s=this.curpc-1,a=this.pc2label.get(s);i||(i=1),this.vars[t]=r,this.trace&&console.log(`FOR ${t} = ${r} TO ${e} STEP ${i}`);var h=()=>i>=0?this.vars[t]>e:this.vars[t]<e;this.opts.testInitialFor&&h()&&(n!=null?this.curpc=n+1:this.skipToAfterNext(t)),this.forLoopStack[t]!=null&&(this.forLoopStack=this.forLoopStack.filter(o=>o==t)),this.forLoopStack.push(t),this.forLoops[t]={$next:o=>{o&&t!=o&&this.runtimeError(`I executed NEXT "${o}", but the last FOR was for "${t}".`),this.vars[t]+=i;var b=h();b?(this.forLoopStack.pop(),delete this.forLoops[t]):this.curpc=(a!=null&&this.label2pc[a]||s)+1,this.trace&&console.log(`NEXT ${t}: ${this.vars[t]} TO ${e} STEP ${i} DONE=${b}`)}}}nextForLoop(t){var r=this.forLoops[t||this.opts.optionalNextVar&&this.forLoopStack[this.forLoopStack.length-1]];r||this.runtimeError("I couldn't find a matching FOR for this NEXT."),r.$next(t)}whileLoop(t){t?this.whileLoops.push(this.curpc-1):this.skipToAfterWend()}nextWhileLoop(){var t=this.whileLoops.pop();t==null?this.runtimeError("I couldn't find a matching WHILE for this WEND."):this.curpc=t}assign(t,r,e){return e&&t.endsWith("$")?this.checkValue(this.convert(t,r),t):t.endsWith("$")?this.convertToString(r,t):this.convertToNumber(r,t)}convert(t,r){return t.endsWith("$")?r==null?"":r.toString():typeof r=="number"?r:parseFloat(r+"")}convertToString(t,r){if(typeof t!="string")this.runtimeError(`I can't convert ${t} to a string.`);else return t}convertToNumber(t,r){if(typeof t!="number")this.runtimeError(`I can't convert ${t} to a number.`);else return this.checkNum(t)}dimArray(t,...r){if(r=r.map(Math.round),this.arrays[t]!=null){if(this.opts.staticArrays)return;this.runtimeError(`I already dimensioned this array (${t}) earlier.`)}var e=this.getTotalArrayLength(r);e>this.opts.maxArrayElements&&this.runtimeError("I can't create an array with this many elements.");var i=t.endsWith("$"),n=i?Array:Float64Array;if(r.length==1)this.arrays[t]=new n(r[0]+1);else if(r.length==2){this.arrays[t]=new Array(r[0]+1);for(var s=0;s<r[0]+1;s++)this.arrays[t][s]=new n(r[1]+1)}else this.runtimeError("I only support arrays of one or two dimensions.")}getTotalArrayLength(t){for(var r=1,e=0;e<t.length;e++)t[e]<this.opts.defaultArrayBase&&this.runtimeError(`I can't create an array with a dimension less than ${this.opts.defaultArrayBase}.`),r*=t[e];return r}getArray(t,r){return this.arrays[t]||(this.opts.defaultArraySize==0&&this.dialectError("automatically declare arrays without a DIM statement (or did you mean to call a function?)"),r==1?this.dimArray(t,this.opts.defaultArraySize-1):r==2?this.dimArray(t,this.opts.defaultArraySize-1,this.opts.defaultArraySize-1):this.runtimeError("I only support arrays of one or two dimensions.")),this.arrays[t]}arrayGet(t,...r){var e=this.getArray(t,r.length);r=r.map(this.ROUND.bind(this));for(var i=e,n=0;n<r.length;n++){var s=r[n];c(i)||this.runtimeError(`I tried to lookup ${t}(${r}) but used too many dimensions.`),s<this.opts.defaultArrayBase&&this.runtimeError(`I triedLine truncated
var value = this.convert(${JSON.stringify(n.name)}, response.vals[${s}]);
@@ -34,4 +34,4 @@ import{b as S}from"./chunk-3FIVEUG2.js";import{y as E}from"./chunk-5YJJ4DRA.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){if(t==="Variables")return this.varsToLongString()}varsToLongString(){var t="",r=Object.keys(this.runtime.vars);r.sort();for(var e of r){var i=this.runtime.vars[e],n=JSON.stringify(i);n.length>24&&(n=`${n.substr(0,24)}...(${n.length})`),t+=g(e,3)+" = "+n+`
`}return t}setupDebug(t){this.onBreakpointHit=t}clearDebug(){this.onBreakpointHit=null,this.debugTrap=null}checkDebugTrap(){return this.debugTrap&&this.debugTrap()?(this.pause(),this.break(),!0):!1}break(){this.onBreakpointHit&&this.onBreakpointHit(this.saveState())}step(){var t=this.clock;this.debugTrap=()=>this.clock>t,this.resume()}stepOver(){var t=this.runtime.getStatement();if(t&&(t.command=="GOSUB"||t.command=="ONGOSUB")){var r=this.getPC()+1;this.runEval(()=>this.getPC()==r)}else this.step()}hasCustomStepOver(){return!0}runUntilReturn(){var t=this.getSP();this.runEval(()=>this.getSP()>t)}runEval(t){this.debugTrap=()=>t(this.getCPUState()),this.resume()}restartAtPC(t){return t=Math.round(t),t>=0&&t<this.runtime.allstmts.length?(this.runtime.curpc=t,this.tty.cancelinput(),this.clock=0,!0):!1}readFile(t){return this.internalFiles[t]}writeFile(t,r){return this.internalFiles[t]=r,!0}didExit(){this.internalFiles["stdout.txt"]=this.transcript.join(""),E()}};f.basic=p;
//# sourceMappingURL=basic-NCWX6JLL.js.map
//# sourceMappingURL=basic-FXG6Z7YU.js.map
File renamed without changes.
-7
View File
@@ -1,7 +0,0 @@
{
"version": 3,
"sources": ["../node_modules/localforage/dist/localforage.js", "../src/ide/ui.ts", "../src/common/toolmeta.ts", "../src/worker/platforms.ts", "../src/ide/errorreport.ts", "../src/ide/dialogs.ts", "../node_modules/@marijn/find-cluster-break/src/index.js", "../node_modules/@codemirror/state/dist/index.js", "../node_modules/style-mod/src/style-mod.js", "../node_modules/w3c-keyname/index.js", "../node_modules/crelt/index.js", "../node_modules/@codemirror/view/dist/index.js", "../node_modules/@lezer/common/dist/index.js", "../node_modules/@lezer/highlight/dist/index.js", "../node_modules/@codemirror/language/dist/index.js", "../node_modules/@codemirror/autocomplete/dist/index.js", "../src/ide/views/debug.ts", "../node_modules/@codemirror/commands/dist/index.js", "../src/ide/views/tabs.ts", "../src/ide/settings.ts", "../src/ide/storage.ts", "../src/ide/project.ts", "../src/common/workertypes.ts", "../src/ide/services.ts", "../src/common/audio/CommodoreTape.ts", "../src/ide/shareexport.ts", "../src/ide/sync.ts", "../src/common/symbols/index.ts", "../src/ide/search/projectsource.ts", "../src/ide/search/toolchainsource.ts", "../src/ide/search/service.ts", "../node_modules/@codemirror/search/dist/index.js", "../node_modules/@lezer/lr/dist/index.js", "../node_modules/@fazelstudio/codemirror-lang-c/dist/highlight.js", "../node_modules/@fazelstudio/codemirror-lang-c/dist/parser.js", "../node_modules/@fazelstudio/codemirror-lang-c/dist/index.js", "../src/parser/tokens-6502.ts", "parser/lang-6502.grammar.js", "../src/parser/lang-6502.ts", "../src/parser/tokens-z80.ts", "parser/lang-z80.grammar.js", "../src/parser/lang-z80.ts", "../src/parser/lang-wiz.ts", "../src/parser/lang-verilog.ts", "../src/parser/lang-inform6.ts", "../src/parser/lang-dialog.ts", "../src/parser/lang-basic.ts", "../src/parser/lang-fastbasic.ts", "../src/parser/lang-bataribasic.ts", "../node_modules/@lezer/markdown/dist/index.js", "../node_modules/@lezer/html/dist/index.js", "../node_modules/@lezer/css/dist/index.js", "../node_modules/@codemirror/lang-css/dist/index.js", "../node_modules/@lezer/javascript/dist/index.js", "../node_modules/@codemirror/lang-javascript/dist/index.js", "../node_modules/@codemirror/lang-html/dist/index.js", "../node_modules/@codemirror/lang-markdown/dist/index.js", "../src/parser/registry.ts", "../src/themes/cobalt.ts", "../src/themes/disassemblyTheme.ts", "../src/themes/editorTheme.ts", "../src/themes/mbo.ts", "../src/ide/breakcond.ts", "../src/ide/breakpoints.ts", "../src/ide/views/assetdecorations.ts", "../src/ide/views/includedecorations.ts", "../src/ide/views/filters.ts", "../src/ide/views/gutter.ts", "../src/ide/views/visuals.ts", "../src/ide/views/editors.ts", "../src/common/vtextscroller.ts", "../src/ide/views/debugviews.ts", "../src/ide/search/debuggerhit.ts", "../src/ide/search/searchview.ts", "../src/ide/pixeleditor.ts", "../src/ide/views/asseteditor.ts", "../src/ide/views/treeviews.ts", "../src/ide/windows.ts", "../src/ide/layout.ts", "../src/ide/search/listinglocation.ts"],
"sourcesContent": ["/*!\n localForage -- Offline Storage, Improved\n Version 1.10.0\n https://localforage.github.io/localForage\n (c) 2013-2017 Mozilla, Apache License 2.0\n*/\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.localforage = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw (f.code=\"MODULE_NOT_FOUND\", f)}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){\n(function (global){\n'use strict';\nvar Mutation = global.MutationObserver || global.WebKitMutationObserver;\n\nvar scheduleDrain;\n\n{\n if (Mutation) {\n var called = 0;\n var observer = new Mutation(nextTick);\n var element = global.document.createTextNode('');\n observer.observe(element, {\n characterData: true\n });\n scheduleDrain = function () {\n element.data = (called = ++called % 2);\n };\n } else if (!global.setImmediate && typeof global.MessageChannel !== 'undefined') {\n var channel = new global.MessageChannel();\n channel.port1.onmessage = nextTick;\n scheduleDrain = function () {\n channel.port2.postMessage(0);\n };\n } else if ('document' in global && 'onreadystatechange' in global.document.createElement('script')) {\n scheduleDrain = function () {\n\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var scriptEl = global.document.createElement('script');\n scriptEl.onreadystatechange = function () {\n nextTick();\n\n scriptEl.onreadystatechange = null;\n scriptEl.parentNode.removeChild(scriptEl);\n scriptEl = null;\n };\n global.document.documentElement.appendChild(scriptEl);\n };\n } else {\n scheduleDrain = function () {\n setTimeout(nextTick, 0);\n };\n }\n}\n\nvar draining;\nvar queue = [];\n//named nextTick for less confusing stack traces\nfunction nextTick() {\n draining = true;\n var i, oldQueue;\n var len = queue.length;\n while (len) {\n oldQueue = queue;\n queue = [];\n i = -1;\n while (++i < len) {\n oldQueue[i]();\n }\n len = queue.length;\n }\n draining = false;\n}\n\nmodule.exports = immediate;\nfunction immediate(task) {\n if (queue.push(task) === 1 && !draining) {\n scheduleDrain();\n }\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],2:[function(_dereq_,module,exports){\n'use strict';\nvar immediate = _dereq_(1);\n\n/* istanbul ignore next */\nfunction INTERNAL() {}\n\nvar handlers = {};\n\nvar REJECTED = ['REJECTED'];\nvar FULFILLED = ['FULFILLED'];\nvar PENDING = ['PENDING'];\n\nmodule.exports = Promise;\n\nfunction Promise(resolver) {\n if (typeof resolver !== 'function') {\n throw new TypeError('resolver must be a function');\n }\n this.state = PENDING;\n this.queue = [];\n this.outcome = void 0;\n if (resolver !== INTERNAL) {\n safelyResolveThenable(this, resolver);\n }\n}\n\nPromise.prototype[\"catch\"] = function (onRejected) {\n return this.then(null, onRejected);\n};\nPromise.prototype.then = function (onFulfilled, onRejected) {\n if (typeof onFulfilled !== 'function' && this.state === FULFILLED ||\n typeof onRejected !== 'function' && this.state === REJECTED) {\n return this;\n }\n var promise = new this.constructor(INTERNAL);\n if (this.state !== PENDING) {\n var resolver = this.state === FULFILLED ? onFulfilled : onRejected;\n unwrap(promise, resolver, this.outcome);\n } else {\n this.queue.push(new QueueItem(promise, onFulfilled, onRejected));\n }\n\n return promise;\n};\nfunction QueueItem(promise, onFulfilled, onRejected) {\n this.promise = promise;\n if (typeof onFulfilled === 'function') {\n this.onFulfilled = onFulfilled;\n this.callFulfilled = this.otherCallFulfilled;\n }\n if (typeof onRejected === 'function') {\n this.onRejected = onRejected;\n this.callRejected = this.otherCallRejected;\n }\n}\nQueueItem.prototype.callFulfilled = function (value) {\n handlers.resolve(this.promise, value);\n};\nQueueItem.prototype.otherCallFulfilled = function (value) {\n unwrap(this.promise, this.onFulfilled, value);\n};\nQueueItem.prototype.callLine truncated
"mappings": "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 truncated
"names": ["require_localforage", "__commonJSMin", "exports", "module", "f", "g", "define", "e", "t", "n", "r", "s", "o", "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", "localforage", "SHARED_INCLUDE_PATTERNS", "SHARED_LINK_PATTERNS", "VERILOG_INCLUDE_PATTERNS", "SYSTEM_INCLUDE_PATTERNS", "getSystemIncludePatterns", "tool", "meta", "getToolMeta", "USE_ASM_INCLUDE_PATTERNS", "ACME_INCLUDE_PATTERNS", "WIZ_INCLUDE_PATTERNS", "ECS_INCLUDE_PATTERNS", "DIALOG_INCLUDE_PATTERNS", "TOOL_PLATFORM_HELPURL", "CC65_PRELOADFS", "TOOL_META", "id", "getPlatformToolHelpURL", "platform", "overrides", "url", "base", "getRootBasePlatform", "getToolMetaForFilename", "fn", Line truncated
}
@@ -1,2 +1,2 @@
import{M as b,N as w}from"./chunk-TYDI7JZQ.js";import{d as E}from"./chunk-VSC4MAII.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-SCHHYG3D.js");case"arm32"Line truncated
//# sourceMappingURL=chunk-4R3KPJX7.js.map
import{M as b,N as w}from"./chunk-TYDI7JZQ.js";import{d as E}from"./chunk-VSC4MAII.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-SCHHYG3D.js");case"arm32"Line truncated
//# sourceMappingURL=chunk-C7SFJC4F.js.map
File renamed without changes.
+44 -44
View File
@@ -1,20 +1,20 @@
import{a as Lh,b as Mh,c as Cm,d as _m,e as Rm,f as Ko,g as oi,i as Jo,j as rr,k as Pi,l as Am,m as Em,n as xQ,o as Zm,p as Xm,r as Lm,s as Dh,t as ea,u as xn,v as SQ}from"./chunk-VLOGW7AJ.js";import{a as bQ}from"./chunk-T6VURU5O.js";import{a as Ho}from"./chunk-A7SWO6EA.js";import{a as Tm,b as Mm,c as vQ}from"./chunk-4R3KPJX7.js";import{D as Zh,K as Xh,t as km,u as $m}from"./chunk-2XSLQJUY.js";import{A as Ft,E as Ut,F as Rh,G as gn,I as bn,J as qo,K as Ah,T as Eh,V as Qm,a as wi,b as Os,ba as Go,d as Ke,e as ms,f as ht,g as ce,h as Ch,i as vm,k as ym,m as Fo,n as Uo,o as No,p as Rr,q as wm,t as mn,w as Pm,x as _h,y as gs,z as ut}from"./chunk-TYDI7JZQ.js";import{a as De,b as _r,c as ps,d as gQ,e as Th}from"./chunk-VSC4MAII.js";var Ih=gQ((Dm,Wh)=>{(function(i){if(typeof Dm=="object"&&typeof Wh!="undefined")Wh.exports=i();else if(typeof define=="function"&&define.amd)define([],i);else{var e;typeof window!="undefined"?e=window:typeof global!="undefined"?e=global:typeof self!="undefined"?e=self:e=this,e.localforage=i()}})(function(){var i,e,t;return(function r(n,s,o){function a(h,u){if(!s[h]){if(!n[h]){var f=typeof ps=="function"&&ps;if(!u&&f)return f(h,!0);if(l)return l(h,!0);var d=new Error("Cannot find module '"+h+"'");throw d.code="MODULE_NOT_FOUND",d}var O=s[h]={exports:{}};n[h][0].call(O.exports,function(m){var S=n[h][1][m];return a(S||m)},O,O.exports,r,n,s,o)}return s[h].exports}for(var l=typeof ps=="function"&&ps,c=0;c<o.length;c++)a(o[c]);return a})({1:[function(r,n,s){(function(o){"use strict";var a=o.MutationObserver||o.WebKitMutationObserver,l;if(a){var c=0,h=new a(m),u=o.document.createTextNode("");h.observe(u,{characterData:!0}),l=function(){u.data=c=++c%2}}else if(!o.setImmediate&&typeof o.MessageChannel!="undefined"){var f=new o.MessageChannel;f.port1.onmessage=m,l=function(){f.port2.postMessage(0)}}else"document"in o&&"onreadystatechange"in o.document.createElement("script")?l=function(){var y=o.document.createElement("script");y.onreadystatechange=function(){m(),y.onreadystatechange=null,y.parentNode.removeChild(y),y=null},o.document.documentElement.appendChild(y)}:l=function(){setTimeout(m,0)};var d,O=[];function m(){d=!0;for(var y,A,C=O.length;C;){for(A=O,O=[],y=-1;++y<C;)A[y]();C=O.length}d=!1}n.exports=S;function S(y){O.push(y)===1&&!d&&l()}}).call(this,typeof global!="undefined"?global:typeof self!="undefined"?self:typeof window!="undefined"?window:{})},{}],2:[function(r,n,s){"use strict";var o=r(1);function a(){}var l={},c=["REJECTED"],h=["FULFILLED"],u=["PENDING"];n.exports=f;function f(P){if(typeof P!="function")throw new TypeError("resolver must be a function");this.state=u,this.queue=[],this.outcome=void 0,P!==a&&S(this,P)}f.prototype.catch=function(P){return this.then(null,P)},f.prototype.then=function(P,_){if(typeof P!="function"&&this.state===h||typeof _!="function"&&this.state===c)return this;var L=new this.constructor(a);if(this.state!==u){var B=this.state===h?P:_;O(L,B,this.outcome)}else this.queue.push(new d(L,P,_));return L};function d(P,_,L){this.promise=P,typeof _=="function"&&(this.onFulfilled=_,this.callFulfilled=this.otherCallFulfilled),typeof L=="function"&&(this.onRejected=L,this.callRejected=this.otherCallRejected)}d.prototype.callFulfilled=function(P){l.resolve(this.promise,P)},d.prototype.otherCallFulfilled=function(P){O(this.promise,this.onFulfilled,P)},d.prototype.callRejected=function(P){l.reject(this.promise,P)},d.prototype.otherCallRejected=function(P){O(this.promise,this.onRejected,P)};function O(P,_,L){o(function(){var B;try{B=_(L)}catch(oe){return l.reject(P,oe)}B===P?l.reject(P,new TypeError("Cannot resolve promise with itself")):l.resolve(P,B)})}l.resolve=function(P,_){var L=y(m,_);if(L.status==="error")return l.reject(P,L.value);var B=L.value;if(B)S(P,B);else{P.state=h,P.outcome=_;for(var oe=-1,re=P.queue.length;++oe<re;)P.queue[oe].callFulfilled(_)}return P},l.reject=function(P,_){P.state=c,P.outcome=_;for(var L=-1,B=P.queue.length;++L<B;)P.queue[L].callRejected(_);return P};function m(P){var _=P&&P.then;if(P&&(typeof P=="object"||typeof P=="function")&&typeof _=="function")return function(){_.apply(P,arguments)}}function S(P,_){var L=!1;function B(ae){L||(L=!0,l.reject(P,ae))}function oe(ae){L||(L=!0,l.resolve(P,ae))}function re(){_(oe,B)}var K=y(re);K.status==="error"&&B(K.value)}function y(P,_){var L={};try{L.value=P(_),L.status="success"}catch(B){L.status="error",L.value=B}return L}f.resolve=A;function A(P){return P instanceof this?P:l.resolve(new this(a),P)}f.reject=C;function C(P){var _=new this(a);return l.reject(_,P)}f.all=Z;function Z(P){var _=this;if(Object.prototype.toString.call(P)!=="[object Array]")return this.reject(new TypeError("must be an array"));var L=P.length,B=!1;if(!L)return this.resolve([]);for(var oe=new Array(L),re=0,K=-1,ae=new this(a);++K<L;)he(P[K],K);return ae;function he(xe,D){_.resolve(xe).then(ee,function(F){B||(B=!0,l.reject(ae,F))});function ee(F){oe[D]=F,++re===L&&!B&&(B=!0,l.resolve(ae,oe))}}}f.race=k;function k(P){vaLine truncated
`);for(let n of e||[]){let s=n instanceof RegExp?{re:n}:n;for(let o of r){let a;for(s.re.lastIndex=0;a=s.re.exec(o);){let l=a[s.group!=null?s.group:a.length-1];l&&t.push(s.suffix?l+s.suffix:l)}}}return t}var ai={vcs:{arch:"6502",code_start:4096,code_size:61440,data_start:128,data_size:128,wiz_rom_ext:".a26",wiz_inc_dir:"2600",cfgfile:"atari2600.cfg",libargs:["crt0.o","atari2600.lib"],extra_link_files:["crt0.o","atari2600.cfg"],asm_cfgfile:"atari2600-asm.cfg",asm_libargs:[],asm_extra_link_files:["atari2600-asm.cfg"],define:["__ATARI2600__"]},mw8080bw:{arch:"z80",code_start:0,rom_size:8192,data_start:8192,data_size:1024,stack_end:9216},vicdual:{arch:"z80",code_start:0,rom_size:16416,data_start:58368,data_size:1024,stack_end:59392},galaxian:{arch:"z80",code_start:0,rom_size:16384,data_start:16384,data_size:1024,stack_end:18432},"galaxian-scramble":{arch:"z80",code_start:0,rom_size:20512,data_start:16384,data_size:1024,stack_end:18432},pacman:{arch:"z80",code_start:0,codeseg_start:202,rom_size:32768,data_start:19456,data_size:652,stack_end:20416},williams:{arch:"6809",code_start:0,rom_size:49152,data_start:38912,data_size:10240,stack_end:49152,set_stack_end:49152,extra_link_files:["williams.scr","libcmoc-crt-vec.a","libcmoc-std-vec.a"],extra_link_args:["-swilliams.scr","-lcmoc-crt-vec","-lcmoc-std-vec"],extra_compile_files:["assert.h","cmoc.h","stdarg.h","stdlib.h"]},"williams-defender":{arch:"6809",code_start:0,rom_size:49152,data_start:38912,data_size:10240,stack_end:49152},"williams-z80":{arch:"z80",code_start:0,rom_size:38912,data_start:38912,data_size:10240,stack_end:49152},"vector-z80color":{arch:"z80",code_start:0,rom_size:32768,data_start:57344,data_size:8192,stack_end:0},"vector-ataricolor":{arch:"6502",define:["__VECTOR__"],cfgfile:"vector-color.cfg",libargs:["crt0.o","none.lib"],extra_link_files:["crt0.o","vector-color.cfg"]},"sound_williams-z80":{arch:"z80",code_start:0,rom_size:16384,data_start:16384,data_size:1024,stack_end:32768},base_z80:{arch:"z80",code_start:0,rom_size:32768,data_start:32768,data_size:32768,stack_end:0},coleco:{arch:"z80",rom_start:32768,code_start:33024,rom_size:32768,data_start:28672,data_size:1024,stack_end:32768,extra_preproc_args:["-I","/share/include/coleco","-D","CV_CV"],extra_link_args:["-k","/share/lib/coleco","-l","libcv","-l","libcvu","crt0.rel"]},msx:{arch:"z80",rom_start:16384,code_start:16384,rom_size:32768,data_start:49152,data_size:12288,stack_end:65535,extra_link_args:["crt0-msx.rel"],extra_link_files:["crt0-msx.rel","crt0-msx.lst"],wiz_sys_type:"z80",wiz_inc_dir:"msx"},"msx-libcv":{arch:"z80",rom_start:16384,code_start:16384,rom_size:32768,data_start:49152,data_size:12288,stack_end:65535,extra_preproc_args:["-I",".","-D","CV_MSX"],extra_link_args:["-k",".","-l","libcv-msx","-l","libcvu-msx","crt0-msx.rel"],extra_link_files:["libcv-msx.lib","libcvu-msx.lib","crt0-msx.rel","crt0-msx.lst"],extra_compile_files:["cv.h","cv_graphics.h","cv_input.h","cv_sound.h","cv_support.h","cvu.h","cvu_c.h","cvu_compression.h","cvu_f.h","cvu_graphics.h","cvu_input.h","cvu_sound.h"]},"sms-sg1000-libcv":{arch:"z80",rom_start:0,code_start:256,rom_size:49152,data_start:49152,data_size:1024,stack_end:57344,extra_preproc_args:["-I",".","-D","CV_SMS"],extra_link_args:["-k",".","-l","libcv-sms","-l","libcvu-sms","crt0-sms.rel"],extra_link_files:["libcv-sms.lib","libcvu-sms.lib","crt0-sms.rel","crt0-sms.lst"],extra_compile_files:["cv.h","cv_graphics.h","cv_input.h","cv_sound.h","cv_support.h","cvu.h","cvu_c.h","cvu_compression.h","cvu_f.h","cvu_graphics.h","cvu_input.h","cvu_sound.h"]},nes:{arch:"6502",define:["__NES__"],cfgfile:"neslib2.cfg",libargs:["crt0.o","nes.lib","neslib2.lib","-D","NES_MAPPER=0","-D","NES_PRG_BANKS=2","-D","NES_CHR_BANKS=1","-D","NES_MIRRORING=0"],extra_link_files:["crt0.o","neslib2.lib","neslib2.cfg","nesbanked.cfg"],symbolConfigs:{NES_MAPPER:{4:"nesbanked.cfg"}},wiz_rom_ext:".nes"},apple2:{arch:"6502",define:["__APPLE2__"],cfgfile:"apple2.cfg",libargs:["--lib-path","/share/target/apple2/drv","apple2.lib"],__CODE_RUN__:16384,code_start:2051,acmeargs:["-f","apple"]},"apple2-e":{arch:"6502",define:["__APPLE2__"],cfgfile:"apple2.cfg",libargs:["apple2.lib"],acmeargs:["-f","apple"]},"atari8-800xl.disk":{arch:"6502",define:["__ATARI__"],cfgfile:"atari.cfg",libargs:["atari.lib"],fastbasic_cfgfile:"fastbasic-cart.cfg"},"atari8-800xl":{arch:"6502",define:["__ATARI__"],cfgfile:"atari-cart.cfg",libargs:["atari.lib","-D","__CARTFLAGS__=4"],fastbasic_cfgfile:"fastbasic-cart.cfg"},"atari8-800":{arch:"6502",define:["__ATARI__"],cfgfile:"atari-cart.cfg",libargs:["atari.lib","-D","__CARTFLAGS__=4"],fastbasic_cfgfile:"fastbasic-cart.cfg"},"atari8-5200":{arch:"6502",define:["__ATARI5200__"],cfgfile:"atari5200.cfg",libargs:["atari5200.lib","-D","__CARTFLAGS__=255"],fastbasic_cfgfile:"fastbasic-cart.cfg"},verilog:{arch:"verilog",extra_compile_files:["8bitworkshop.v"]},astrocade:{arch:"z80",code_start:8192,rom_size:8192,data_start:19984,data_size:496,stack_end:20480},"astrocade-arca Line truncated
import{a as Lh,b as Mh,c as Cm,d as _m,e as Rm,f as Ko,g as oi,i as Jo,j as rr,k as Pi,l as Am,m as Em,n as SQ,o as Zm,p as Xm,r as Lm,s as Dh,t as ea,u as xn,v as vQ}from"./chunk-VLOGW7AJ.js";import{a as xQ}from"./chunk-T6VURU5O.js";import{a as Ho}from"./chunk-A7SWO6EA.js";import{a as Tm,b as Mm,c as yQ}from"./chunk-C7SFJC4F.js";import{D as Zh,K as Xh,t as km,u as $m}from"./chunk-2XSLQJUY.js";import{A as Ft,E as Ut,F as Rh,G as gn,I as bn,J as qo,K as Ah,T as Eh,V as Qm,a as wi,b as ms,ba as Go,d as Ve,e as gs,f as tt,g as ce,h as Ch,i as vm,k as ym,m as Fo,n as Uo,o as No,p as Rr,q as wm,t as mn,w as Pm,x as _h,y as bs,z as ut}from"./chunk-TYDI7JZQ.js";import{a as De,b as _r,c as Os,d as bQ,e as Th}from"./chunk-VSC4MAII.js";var Ih=bQ((Dm,Wh)=>{(function(i){if(typeof Dm=="object"&&typeof Wh!="undefined")Wh.exports=i();else if(typeof define=="function"&&define.amd)define([],i);else{var e;typeof window!="undefined"?e=window:typeof global!="undefined"?e=global:typeof self!="undefined"?e=self:e=this,e.localforage=i()}})(function(){var i,e,t;return(function r(n,s,o){function a(h,u){if(!s[h]){if(!n[h]){var f=typeof Os=="function"&&Os;if(!u&&f)return f(h,!0);if(l)return l(h,!0);var d=new Error("Cannot find module '"+h+"'");throw d.code="MODULE_NOT_FOUND",d}var O=s[h]={exports:{}};n[h][0].call(O.exports,function(m){var S=n[h][1][m];return a(S||m)},O,O.exports,r,n,s,o)}return s[h].exports}for(var l=typeof Os=="function"&&Os,c=0;c<o.length;c++)a(o[c]);return a})({1:[function(r,n,s){(function(o){"use strict";var a=o.MutationObserver||o.WebKitMutationObserver,l;if(a){var c=0,h=new a(m),u=o.document.createTextNode("");h.observe(u,{characterData:!0}),l=function(){u.data=c=++c%2}}else if(!o.setImmediate&&typeof o.MessageChannel!="undefined"){var f=new o.MessageChannel;f.port1.onmessage=m,l=function(){f.port2.postMessage(0)}}else"document"in o&&"onreadystatechange"in o.document.createElement("script")?l=function(){var y=o.document.createElement("script");y.onreadystatechange=function(){m(),y.onreadystatechange=null,y.parentNode.removeChild(y),y=null},o.document.documentElement.appendChild(y)}:l=function(){setTimeout(m,0)};var d,O=[];function m(){d=!0;for(var y,A,C=O.length;C;){for(A=O,O=[],y=-1;++y<C;)A[y]();C=O.length}d=!1}n.exports=S;function S(y){O.push(y)===1&&!d&&l()}}).call(this,typeof global!="undefined"?global:typeof self!="undefined"?self:typeof window!="undefined"?window:{})},{}],2:[function(r,n,s){"use strict";var o=r(1);function a(){}var l={},c=["REJECTED"],h=["FULFILLED"],u=["PENDING"];n.exports=f;function f(P){if(typeof P!="function")throw new TypeError("resolver must be a function");this.state=u,this.queue=[],this.outcome=void 0,P!==a&&S(this,P)}f.prototype.catch=function(P){return this.then(null,P)},f.prototype.then=function(P,_){if(typeof P!="function"&&this.state===h||typeof _!="function"&&this.state===c)return this;var L=new this.constructor(a);if(this.state!==u){var B=this.state===h?P:_;O(L,B,this.outcome)}else this.queue.push(new d(L,P,_));return L};function d(P,_,L){this.promise=P,typeof _=="function"&&(this.onFulfilled=_,this.callFulfilled=this.otherCallFulfilled),typeof L=="function"&&(this.onRejected=L,this.callRejected=this.otherCallRejected)}d.prototype.callFulfilled=function(P){l.resolve(this.promise,P)},d.prototype.otherCallFulfilled=function(P){O(this.promise,this.onFulfilled,P)},d.prototype.callRejected=function(P){l.reject(this.promise,P)},d.prototype.otherCallRejected=function(P){O(this.promise,this.onRejected,P)};function O(P,_,L){o(function(){var B;try{B=_(L)}catch(oe){return l.reject(P,oe)}B===P?l.reject(P,new TypeError("Cannot resolve promise with itself")):l.resolve(P,B)})}l.resolve=function(P,_){var L=y(m,_);if(L.status==="error")return l.reject(P,L.value);var B=L.value;if(B)S(P,B);else{P.state=h,P.outcome=_;for(var oe=-1,re=P.queue.length;++oe<re;)P.queue[oe].callFulfilled(_)}return P},l.reject=function(P,_){P.state=c,P.outcome=_;for(var L=-1,B=P.queue.length;++L<B;)P.queue[L].callRejected(_);return P};function m(P){var _=P&&P.then;if(P&&(typeof P=="object"||typeof P=="function")&&typeof _=="function")return function(){_.apply(P,arguments)}}function S(P,_){var L=!1;function B(ae){L||(L=!0,l.reject(P,ae))}function oe(ae){L||(L=!0,l.resolve(P,ae))}function re(){_(oe,B)}var K=y(re);K.status==="error"&&B(K.value)}function y(P,_){var L={};try{L.value=P(_),L.status="success"}catch(B){L.status="error",L.value=B}return L}f.resolve=A;function A(P){return P instanceof this?P:l.resolve(new this(a),P)}f.reject=C;function C(P){var _=new this(a);return l.reject(_,P)}f.all=Z;function Z(P){var _=this;if(Object.prototype.toString.call(P)!=="[object Array]")return this.reject(new TypeError("must be an array"));var L=P.length,B=!1;if(!L)return this.resolve([]);for(var oe=new Array(L),re=0,K=-1,ae=new this(a);++K<L;)he(P[K],K);return ae;function he(xe,D){_.resolve(xe).then(ee,function(F){B||(B=!0,l.reject(ae,F))});function ee(F){oe[D]=F,++re===L&&!B&&(B=!0,l.resolve(ae,oe))}}}f.race=k;function k(P){vaLine truncated
`);for(let n of e||[]){let s=n instanceof RegExp?{re:n}:n;for(let o of r){let a;for(s.re.lastIndex=0;a=s.re.exec(o);){let l=a[s.group!=null?s.group:a.length-1];l&&t.push(s.suffix?l+s.suffix:l)}}}return t}var ai={vcs:{arch:"6502",code_start:4096,code_size:61440,data_start:128,data_size:128,wiz_rom_ext:".a26",wiz_inc_dir:"2600",cfgfile:"atari2600.cfg",libargs:["crt0.o","atari2600.lib"],extra_link_files:["crt0.o","atari2600.cfg"],asm_cfgfile:"atari2600-asm.cfg",asm_libargs:[],asm_extra_link_files:["atari2600-asm.cfg"],define:["__ATARI2600__"]},mw8080bw:{arch:"z80",code_start:0,rom_size:8192,data_start:8192,data_size:1024,stack_end:9216},vicdual:{arch:"z80",code_start:0,rom_size:16416,data_start:58368,data_size:1024,stack_end:59392},galaxian:{arch:"z80",code_start:0,rom_size:16384,data_start:16384,data_size:1024,stack_end:18432},"galaxian-scramble":{arch:"z80",code_start:0,rom_size:20512,data_start:16384,data_size:1024,stack_end:18432},pacman:{arch:"z80",code_start:0,codeseg_start:202,rom_size:32768,data_start:19456,data_size:652,stack_end:20416},williams:{arch:"6809",code_start:0,rom_size:49152,data_start:38912,data_size:10240,stack_end:49152,set_stack_end:49152,extra_link_files:["williams.scr","libcmoc-crt-vec.a","libcmoc-std-vec.a"],extra_link_args:["-swilliams.scr","-lcmoc-crt-vec","-lcmoc-std-vec"],extra_compile_files:["assert.h","cmoc.h","stdarg.h","stdlib.h"]},"williams-defender":{arch:"6809",code_start:0,rom_size:49152,data_start:38912,data_size:10240,stack_end:49152},"williams-z80":{arch:"z80",code_start:0,rom_size:38912,data_start:38912,data_size:10240,stack_end:49152},"vector-z80color":{arch:"z80",code_start:0,rom_size:32768,data_start:57344,data_size:8192,stack_end:0},"vector-ataricolor":{arch:"6502",define:["__VECTOR__"],cfgfile:"vector-color.cfg",libargs:["crt0.o","none.lib"],extra_link_files:["crt0.o","vector-color.cfg"]},"sound_williams-z80":{arch:"z80",code_start:0,rom_size:16384,data_start:16384,data_size:1024,stack_end:32768},base_z80:{arch:"z80",code_start:0,rom_size:32768,data_start:32768,data_size:32768,stack_end:0},coleco:{arch:"z80",rom_start:32768,code_start:33024,rom_size:32768,data_start:28672,data_size:1024,stack_end:32768,extra_preproc_args:["-I","/share/include/coleco","-D","CV_CV"],extra_link_args:["-k","/share/lib/coleco","-l","libcv","-l","libcvu","crt0.rel"]},msx:{arch:"z80",rom_start:16384,code_start:16384,rom_size:32768,data_start:49152,data_size:12288,stack_end:65535,extra_link_args:["crt0-msx.rel"],extra_link_files:["crt0-msx.rel","crt0-msx.lst"],wiz_sys_type:"z80",wiz_inc_dir:"msx"},"msx-libcv":{arch:"z80",rom_start:16384,code_start:16384,rom_size:32768,data_start:49152,data_size:12288,stack_end:65535,extra_preproc_args:["-I",".","-D","CV_MSX"],extra_link_args:["-k",".","-l","libcv-msx","-l","libcvu-msx","crt0-msx.rel"],extra_link_files:["libcv-msx.lib","libcvu-msx.lib","crt0-msx.rel","crt0-msx.lst"],extra_compile_files:["cv.h","cv_graphics.h","cv_input.h","cv_sound.h","cv_support.h","cvu.h","cvu_c.h","cvu_compression.h","cvu_f.h","cvu_graphics.h","cvu_input.h","cvu_sound.h"]},"sms-sg1000-libcv":{arch:"z80",rom_start:0,code_start:256,rom_size:49152,data_start:49152,data_size:1024,stack_end:57344,extra_preproc_args:["-I",".","-D","CV_SMS"],extra_link_args:["-k",".","-l","libcv-sms","-l","libcvu-sms","crt0-sms.rel"],extra_link_files:["libcv-sms.lib","libcvu-sms.lib","crt0-sms.rel","crt0-sms.lst"],extra_compile_files:["cv.h","cv_graphics.h","cv_input.h","cv_sound.h","cv_support.h","cvu.h","cvu_c.h","cvu_compression.h","cvu_f.h","cvu_graphics.h","cvu_input.h","cvu_sound.h"]},nes:{arch:"6502",define:["__NES__"],cfgfile:"neslib2.cfg",libargs:["crt0.o","nes.lib","neslib2.lib","-D","NES_MAPPER=0","-D","NES_PRG_BANKS=2","-D","NES_CHR_BANKS=1","-D","NES_MIRRORING=0"],extra_link_files:["crt0.o","neslib2.lib","neslib2.cfg","nesbanked.cfg"],symbolConfigs:{NES_MAPPER:{4:"nesbanked.cfg"}},wiz_rom_ext:".nes"},apple2:{arch:"6502",define:["__APPLE2__"],cfgfile:"apple2.cfg",libargs:["--lib-path","/share/target/apple2/drv","apple2.lib"],__CODE_RUN__:16384,code_start:2051,acmeargs:["-f","apple"]},"apple2-e":{arch:"6502",define:["__APPLE2__"],cfgfile:"apple2.cfg",libargs:["apple2.lib"],acmeargs:["-f","apple"]},"atari8-800xl.disk":{arch:"6502",define:["__ATARI__"],cfgfile:"atari.cfg",libargs:["atari.lib"],fastbasic_cfgfile:"fastbasic-cart.cfg"},"atari8-800xl":{arch:"6502",define:["__ATARI__"],cfgfile:"atari-cart.cfg",libargs:["atari.lib","-D","__CARTFLAGS__=4"],fastbasic_cfgfile:"fastbasic-cart.cfg"},"atari8-800":{arch:"6502",define:["__ATARI__"],cfgfile:"atari-cart.cfg",libargs:["atari.lib","-D","__CARTFLAGS__=4"],fastbasic_cfgfile:"fastbasic-cart.cfg"},"atari8-5200":{arch:"6502",define:["__ATARI5200__"],cfgfile:"atari5200.cfg",libargs:["atari5200.lib","-D","__CARTFLAGS__=255"],fastbasic_cfgfile:"fastbasic-cart.cfg"},verilog:{arch:"verilog",extra_compile_files:["8bitworkshop.v"]},astrocade:{arch:"z80",code_start:8192,rom_size:8192,data_start:19984,data_size:496,stack_end:20480},"astrocade-arca Line truncated
`){[e,t]=Pn(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}},vn=class i extends me{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]=Pn(this,e,t),r.lines<this.lines)for(let n=0,s=0;n<this.children.length;n++){let o=this.children[n],a=s+o.length;if(e>=s&&t<=a){let l=o.replace(e-s,t-s,r),c=this.lines-o.lines+l.lines;if(l.lines<c>>4&&l.lines>c>>6){let h=this.children.slice();return h[n]=l,new i(h,this.length-(t-e)+r.length)}return super.replace(s,a,l)}s=a+1}return super.replace(e,t,r)}sliceString(e,t=this.length,r=`
`){[e,t]=Pn(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 d of e)r+=d.lines;if(r<32){let d=[];for(let O of e)O.flatten(d);return new Lt(d,t)}let n=Math.max(32,r>>5),s=n<<1,o=n>>1,a=[],l=0,c=-1,h=[];function u(d){let O;if(d.lines>s&&d instanceof i)for(let m of d.children)u(m);else d.lines>o&&(l>o||!l)?(f(),a.push(d)):d instanceof Lt&&l&&(O=h[h.length-1])instanceof Lt&&d.lines+O.lines<=32?(l+=d.lines,c+=d.length+1,h[h.length-1]=new Lt(O.text.concat(d.text),O.length+1+d.length)):(l+d.lines>n&&f(),l+=d.lines,c+=d.length+1,h.push(d))}function f(){l!=0&&(a.push(h.length==1?h[0]:i.from(h,c)),c=-1,l=h.length=0)}for(let d of e)u(d);return f(),a.length==1?a[0]:new i(a,t)}};me.empty=new Lt([""],0);function ZQ(i){let e=-1;for(let t of i)e+=t.length+1;return e}function la(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 ng(i,e,t){return la(i,[""],e,t)}var Xr=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 Lt?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 Lt?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 Lt){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 Lt?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)}},ca=class{constructor(e,t,r){this.value="",this.done=!1,this.cursor=new Xr(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!=""}},ha=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"&&(me.prototype[Symbol.iterator]=function(){return this.iter()},Xr.prototype[Symbol.iterator]=ca.prototype[Symbol.iterator]=ha.prototype[Symbol.iterator]=function(){return this});var Fh=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 Pn(i,e,t){return e=Math.max(0,Math.min(i.length,e)),[e,Math.max(e,Math.min(i.length,t))]}function Ye(i,e,t=!0,r=!0){return eg(i,e,t,r)}function XQ(i){return i>=56320&&i<57344}function LQ(i){return i>=55296&&i<56320}function hi(i,e){let t=i.charCodeAt(e);if(!LQ(t)||e+1==i.length)return t;let r=i.charCodeAt(e+1);return XQ(r)?(t-55296<<10)+(r-56320)+65536:t}function Oa(i){return i<=65535?String.fromCharCode(i):(i-=65536,String.fromCharCode((i>>10)+55296,(i&1023)+56320))}function or(i){return i<65536?1:2}var Uh=/\r\n?|\n/,Je=(function(i){return i[i.Simple=0]="Simple",i[i.TrackDel=1]="TrackDel",i[i.TrackBefore=2]="TrackBefore",i[i.TrackAfter=3]="TrackAfter",i})(Je||(Je={})),Mi=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){Nh(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:cg(this,e)}mapDesc(e,t=!1){return e.empty?this:qh(this,e,t)}mapPos(e,t=-1,r=Je.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!=Je.Simple&&c>=e&&(r==Je.TrackDel&&n<e&&c>e||r==Je.TrackBefore&&n<e||r==Je.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)}},bt=class i extends Mi{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 Nh(this,(t,r,n,s,o)=>e=e.replace(n,n+(r-t),o),!1),e}mapDesc(e,t=!1){return qh(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(me.empty);r.push(o?e.slice(s,s+o):me.empty)}s+=o}return new i(t,r)}compose(e){return this.empty?e:e.empty?this:cg(this,e,!0)}map(e,t=!1){return e.empty?this:qh(this,e,t,!0)}iterChanges(e,t=!1){Nh(this,e,t)}get desc Line truncated
`}get readOnly(){return this.facet(mg)}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(ug))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 BQ(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=Ye(t,o,!1);if(s(t.slice(l,o))!=Te.Word)break;o=l}for(;a<n;){let l=Ye(t,a);if(s(t.slice(a,l))!=Te.Word)break;a=l}return o==a?null:R.range(o+r,a+r)}};Oe.allowMultipleSelections=Hh;Oe.tabSize=q.define({combine:i=>i.length?i[0]:4});Oe.lineSeparator=fg;Oe.readOnly=mg;Oe.phrases=q.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])}});Oe.languageData=ug;Oe.changeFilter=dg;Oe.transactionFilter=pg;Oe.transactionExtender=Og;nt.reconfigure=ie.define();function Mt(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 Nt=class{eq(e){return this==e}range(e,t=e){return ys.create(e,t,this)}};Nt.prototype.startSide=Nt.prototype.endSide=0;Nt.prototype.point=!1;Nt.prototype.mapMode=Je.TrackDel;function au(i,e){return i==e||i.constructor==e.constructor&&i.eq(e)}var ys=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 iu(i,e){return i.from-e.from||i.value.startSide-e.value.startSide}var ru=class i{constructor(e,t,r,n){this.from=e,this.to=t,this.value=r,this.maxPoint=n}get length(){return this.to[this.to.length-1]}findIndex(e,t,r,n=0){let s=r?this.to:this.from;for(let o=n,a=s.length;;){if(o==a)return o;let l=o+a>>1,c=s[l]-e||(r?this.value[l].endSide:this.value[l].startSide)-t;if(l==o)return c>=0?o:a;c>=0?a=l:o=l+1}}between(e,t,r,n){for(let s=this.findIndex(t,-1e9,!0),o=this.findIndex(r,1e9,!1,s);s<o;s++)if(n(this.from[s]+e,this.to[s]+e,this.value[s])===!1)return!1}map(e,t){let r=[],n=[],s=[],o=-1,a=-1;for(let l=0;l<this.value.length;l++){let c=this.value[l],h=this.from[l]+e,u=this.to[l]+e,f,d;if(h==u){let O=t.mapPos(h,c.startSide,c.mapMode);if(O==null||(f=d=O,c.startSide!=c.endSide&&(d=t.mapPos(h,c.endSide),d<f)))continue}else if(f=t.mapPos(h,c.startSide),d=t.mapPos(u,c.endSide),f>d||f==d&&c.startSide>0&&c.endSide<=0)continue;(d-f||c.endSide-c.startSide)<0||(o<0&&(o=f),c.point&&(a=Math.max(a,d-f)),r.push(c),n.push(f-o),s.push(d-o))}return{mapped:r.length?new i(n,s,r,a):null,pos:o}}},le=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(iu)),this.isEmpty)return t.length?i.of(t):this;let a=new pa(this,null,-1).goto(0),l=0,c=[],h=new ci;for(;a.value||l<t.length;)if(l<t.length&&(a.from-t[l].from||a.startSide-t[l].value.startSide)>=0){let u=t[l++];h.addInner(u.from,u.to,u.value)||c.push(u)}else a.rangeIndex==1&&a.chunkIndex<this.chunk.length&&(l==t.length||this.chunkEnd(a.chunkIndex)<t[l].from)&&(!o||n>this.chunkEnd(a.chunkIndex)||s<this.chunkPos[a.chunkIndex])&&h.addChunk(this.chunkPos[a.chunkIndex],this.chunk[a.chunkIndex])?a.nextChunk():((!o||n>a.to||s<a.from||o(a.from,a.to,a.value))&&(h.addInner(a.from,a.to,a.value)||c.push(ys.create(a.from,a.to,a.value))),a.next());return h.finishInner(this.nextLayer.isEmpty&&!c.length?i.empty:this.nextLayer.update({add:c,filter:o,filterFrom:n,filterTo:s}))}map(e){if(e.empty||this.isEmpty)return this;let t=[],r=[],n=-1;for(let o=0;o<this.chunk.length;o++){let a=this.chunkPos[o],l=this.chunk[o],c=e.touchesRange(a,a+l.length);if(c===!1)n=Math.max(n,l.maxPoint),t.push(l),r.push(e.mapPos(a));else if(c===!0){let{mapped:h,pos:u}=l.map(a,e);h&&(n=Math.max(n,h.maxPoint),t.push(h),r.push(u))}}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 ws.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,t=0){return ws.from(e).goto(t)}static compare(e,t,r,n,s=-1){let o=e.filter(u=>u.maxPoint>0||!u.isEm Line truncated
`)}static newName(){let e=Sg[xg]||1;return Sg[xg]=e+1,"\u037C"+e.toString(36)}static mount(e,t,r){let n=e[lu],s=r&&r.nonce;n?s&&n.setNonce(s):n=new cu(e,s),n.mount(Array.isArray(t)?t:[t],e)}},vg=new Map,cu=class{constructor(e,t){let r=e.ownerDocument||e,n=r.defaultView;if(!e.head&&e.adoptedStyleSheets&&n.CSSStyleSheet){let s=vg.get(r);if(s)return e[lu]=s;this.sheet=new n.CSSStyleSheet,vg.set(r,this)}else this.styleTag=r.createElement("style"),t&&this.styleTag.setAttribute("nonce",t);this.modules=[],e[lu]=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 Di={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:"'"},Qn={48:")",49:"!",50:"@",51:"#",52:"$",53:"%",54:"^",55:"&",56:"*",57:"(",59:":",61:"+",173:"_",186:":",187:"+",188:"<",189:"_",190:">",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},UQ=typeof navigator!="undefined"&&/Mac/.test(navigator.platform),NQ=typeof navigator!="undefined"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(Ne=0;Ne<10;Ne++)Di[48+Ne]=Di[96+Ne]=String(Ne);var Ne;for(Ne=1;Ne<=24;Ne++)Di[Ne+111]="F"+Ne;var Ne;for(Ne=65;Ne<=90;Ne++)Di[Ne]=String.fromCharCode(Ne+32),Qn[Ne]=String.fromCharCode(Ne);var Ne;for(ga in Di)Qn.hasOwnProperty(ga)||(Qn[ga]=Di[ga]);var ga;function yg(i){var e=UQ&&i.metaKey&&i.shiftKey&&!i.ctrlKey&&!i.altKey||NQ&&i.shiftKey&&i.key&&i.key.length==1||i.key=="Unidentified",t=!e&&i.key||(i.shiftKey?Qn:Di)[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 je(){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++)wg(i,arguments[e]);return i}function wg(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++)wg(i,e[t]);else throw new RangeError("Unsupported child node: "+e)}var St=typeof navigator!="undefined"?navigator:{userAgent:"",vendor:"",platform:""},xu=typeof document!="undefined"?document:{documentElement:{style:{}}},Su=/Edge\/(\d+)/.exec(St.userAgent),l0=/MSIE \d/.test(St.userAgent),vu=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(St.userAgent),Ga=!!(l0||vu||Su),Pg=!Ga&&/gecko\/(\d+)/i.test(St.userAgent),hu=!Ga&&/Chrome\/(\d+)/.exec(St.userAgent),Qg="webkitFontSmoothing"in xu.documentElement.style,yu=!Ga&&/Apple Computer/.test(St.vendor),kg=yu&&(/Mobile\/\w+/.test(St.userAgent)||St.maxTouchPoints>2),G={mac:kg||/Mac/.test(St.platform),windows:/Win/.test(St.platform),linux:/Linux|X11/.test(St.platform),ie:Ga,ie_version:l0?xu.documentMode||6:vu?+vu[1]:Su?+Su[1]:0,gecko:Pg,gecko_version:Pg?+(/Firefox\/(\d+)/.exec(St.userAgent)||[0,0])[1]:0,chrome:!!hu,chrome_version:hu?+hu[1]:0,ios:kg,android:/Android\b/.test(St.userAgent),webkit:Qg,webkit_version:Qg?+(/\bAppleWebKit\/(\d+)/.exec(St.userAgent)||[0,0])[1]:0,safari:yu,safari_version:yu?+(/\bVersion\/(\d+(\.\d+)?)/.exec(St.userAgent)||[0,0])[1]:0,tabSize:xu.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function pf(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 Aa=Object.create(null);function Of(i,e,t){if(i==e)return!0;i||(i=Aa),e||(e=Aa);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 qQ(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 $g(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 GQ(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 qe=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){}},st=(function(i){return i[i.Text=0]="Text",i[i.WidgetBefore=1]="WidgetBefore",i[i.WidgetAfter=2]="WidgetAfter",i[i.WidgetRange=3]="WidgetRange",i})(st||(st={})),V=class extends Nt{constructor(e,t,r,n){super(),this.startSide=e,this.endSLine truncated
`,n=i.state.doc.line(n.number+(t?1:-1)),s=i.bidiSpans(n),c=i.visualLineSide(n,!t)}if(l){if(!l(h))return a}else{if(!r)return c;l=r(h)}a=c}}function Ck(i,e,t){let r=i.state.charCategorizer(e),n=r(t);return s=>{let o=r(s);return n==Te.Space&&(n=o),n==o}}function _k(i,e,t,r){let n=e.head,s=t?1:-1;if(n==(t?i.state.doc.length:0))return R.cursor(n,e.assoc);let o=e.goalColumn,a,l=i.contentDOM.getBoundingClientRect(),c=i.coordsAtPos(n,e.assoc||((e.empty?t:e.head==e.from)?1:-1)),h=i.documentTop;if(c)o==null&&(o=c.left-l.left),a=s<0?c.top:c.bottom;else{let O=i.viewState.lineBlockAt(n);o==null&&(o=Math.min(l.right-l.left,i.defaultCharacterWidth*(n-O.from))),a=(s<0?O.top:O.bottom)+h}let u=l.left+o,f=i.viewState.heightOracle.textHeight>>1,d=r!=null?r:f;for(let O=0;;O+=f){let m=a+(d+O)*s,S=Du(i,{x:u,y:m},!1,s);if(t?m>l.bottom:m<l.top)return R.cursor(S.pos,S.assoc);let y=i.coordsAtPos(S.pos,S.assoc),A=y?(y.top+y.bottom)/2:0;if(!y||(t?A>a:A<a))return R.cursor(S.pos,S.assoc,void 0,o)}}function As(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 W0(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=As(i,n.from,0);o!=n.from&&(s=R.cursor(o,-1))}else{let o=As(i,n.from,-1),a=As(i,n.to,1);(o!=n.from||a!=n.to)&&(n.undirectional?s=R.undirectionalRange(n.from,n.to):s=R.range(n.from==n.anchor?o:a,n.from==n.head?o:a))}s&&(t||(t=e.ranges.slice()),t[r]=s)}return t?R.create(t,e.mainIndex):e}function du(i,e,t){let r=As(i.state.facet(Vs).map(n=>n(i)),t.from,e.head>t.from?-1:1);return r==t.from?t:R.cursor(r,r<t.from?1:-1)}var Kt=class{constructor(e,t){this.pos=e,this.assoc=t}};function Du(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 Kt(0,1);if(l>i.viewState.docHeight)return new Kt(i.state.doc.length,-1);if(c=i.elementAtHeight(l),r==null)break;if(c.type==st.Text){if(r<0?c.to<i.viewport.from:c.from>i.viewport.to)break;let f=i.docView.coordsAt(r<0?c.from:c.to,r>0?-1:1);if(f&&(r<0?f.top<=l+s:f.bottom>=l+s))break}let u=i.viewState.heightOracle.textHeight/2;l=r>0?c.bottom+u:c.top-u}if(i.viewport.from>=c.to||i.viewport.to<=c.from){if(t)return null;if(c.type==st.Text){let u=$k(i,n,c,o,a);return new Kt(u,u==c.from?1:-1)}}if(c.type!=st.Text)return l<(c.top+c.bottom)/2?new Kt(c.from,1):new Kt(c.to,-1);let h=i.docView.lineAt(c.from,2);return(!h||h.length!=c.length)&&(h=i.docView.lineAt(c.from,-2)),new Wu(i,o,a,i.textDirectionAt(c.from)).scanTile(h,c.from)}var Wu=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[Jt.find(n,e-r.from,-1,t)].level==this.baseDir}dirAt(e,t){let{line:r,spans:n}=this.bidiSpansAt(e);return n[Jt.find(n,e-r.from,-1,t)].dir}bidiIn(e,t){let{spans:r,line:n}=this.bidiSpansAt(e);return r.length>1||r.length&&(r[0].level!=this.baseDir||r[0].to+n.from<t)}scan(e,t,r=!1){let n=0,s=e.length-1,o=new Set,a=this.bidiIn(e[0],e[s]),l,c,h=-1,u=1e9,f;e:for(;n<s;){let O=s-n,m=n+s>>1;t:if(o.has(m)){for(let A=1;A<O;A++){let C=m+A;if(C>=s&&(C-=O),!o.has(C)){m=C;break t}}break e}o.add(m);let S=t(m),y=0;if(S)for(let A=0;A<S.length;A++){let C=S[A];if(!(C.width==0&&S.length>1))if(C.bottom<this.y)(!l||l.bottom<C.bottom)&&(l=C),y=1;else if(C.top>this.y)(!c||c.top>C.top)&&(c=C),y=-1;else{let Z=C.left>this.x?this.x-C.left:C.right<this.x?this.x-C.right:0,k=Math.abs(Z);k<u&&(h=m,u=k,f=C),Z&&(y=Z<0==(this.baseDir==$e.LTR)?-1:1)}}y==-1&&(!a||this.baseDirAt(e[m],1))?s=m:y==1&&(!a||this.baseDirAt(e[m+1],-1))&&(n=m+1)}if(!f){if(!c&&!l)return{i:0,after:!1};let O=l&&(!c||this.y-l.bottom<c.top-this.y)?l:c;return this.y=(O.top+O.bottom)/2,this.scan(e,t,!0)}if(u&&!r){let{top:O,bottom:m}=f;if(l&&l.bottom>(O+O+m)/3)return this.y=l.bottom-1,this.scan(e,t,!0);if(c&&c.top<(O+m+m)/3)return this.y=c.top+1,this.scan(e,t,!0)}let d=(a?this.dirAt(e[h],1):this.baseDir)==$e.LTR;return{i:h,after:this.x>(f.left+f.right)/2==d}}scanText(e,t){let r=[];for(let s=0;s<e.length;s=Ye(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 Ws(e.dom,o,a).getClientRects()});return n.after?new Kt(r[n.i+1],-1):new Kt(r[n.i],1)}scanTile(e,t){if(!e.length)return new Kt(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:Ws(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 Kt(r[n.i+1],-1):new Kt(o,1)}},kn="\uFFFF",Iu=class{con Line truncated
`&&i.lineWrapping&&(r&&(r=R.single(r.main.anchor-1,r.main.head-1)),t={from:s.from,to:s.to,insert:me.of([" "])}),t)return yf(i,t,r,o);if(r&&!Ia(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=W0(n.facet(Vs).map(c=>c(i)),r))),i.dispatch({selection:r,scrollIntoView:a,userEvent:l}),!0}else return!1}function yf(i,e,t,r=-1){if(G.ios&&i.inputState.flushIOSKey(e))return!0;let n=i.state.selection.main;if(G.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&&An(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)&&An(i.contentDOM,"Backspace",8)||e.from==n.from&&e.to==n.to+1&&e.insert.length==0&&An(i.contentDOM,"Delete",46)))return!0;let s=e.insert.toString();i.inputState.composing>=0&&i.inputState.composing++;let o,a=()=>o||(o=Ek(i,e,t));return i.state.facet($0).some(l=>l(i,e.from,e.to,s,a))||i.dispatch(a()),!0}function Ek(i,e,t){let r,n=i.state,s=n.selection.main,o=-1;if(e.from==e.to&&e.from<s.from||e.from>s.to){let l=e.from<s.from?-1:1,c=l<0?s.from:s.to,h=As(n.facet(Vs).map(u=>u(i)),c,l);e.from==h&&(o=h)}if(o>-1)r={changes:e,selection:R.cursor(e.from+e.insert.length,-1)};else if(e.from>=s.from&&e.to<=s.to&&e.to-e.from>=(s.to-s.from)/3&&(!t||t.main.empty&&t.main.from==e.from+e.insert.length)&&i.inputState.composing<0){let l=s.from<e.from?n.sliceDoc(s.from,e.from):"",c=s.to>e.to?n.sliceDoc(e.to,s.to):"";r=n.replaceSelection(i.state.toText(l+e.insert.sliceString(0,void 0,i.state.lineBreak)+c))}else{let l=n.changes(e),c=t&&t.main.to<=l.newLength?t.main:void 0;if(n.selection.ranges.length>1&&(i.inputState.composing>=0||i.inputState.compositionPendingChange)&&e.to<=s.to+10&&e.to>=s.to-10){let h=i.state.sliceDoc(e.from,e.to),u,f=t&&D0(i,t.main.head);if(f){let O=e.insert.length-(e.to-e.from);u={from:f.from,to:f.to-O}}else u=i.state.doc.lineAt(s.head);let d=s.to-e.to;r=n.changeByRange(O=>{if(O.from==s.from&&O.to==s.to)return{changes:l,range:c||O.map(l)};let m=O.to-d,S=m-h.length;if(i.state.sliceDoc(S,m)!=h||m>=u.from&&S<=u.to)return{range:O};let y=n.changes({from:S,to:m,insert:e.insert}),A=O.to-s.to;return{changes:y,range:c?R.range(Math.max(0,c.anchor+A),Math.max(0,c.head+A)):O.map(y)}})}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 V0(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 Zk(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 Wa(t,r)),(n!=t||s!=r)&&e.push(new Wa(n,s))),e}function Xk(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?R.single(t+e,r+e):null}function Ia(i,e){return e.head==i.main.head&&e.anchor==i.main.anchor}var Vu=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,G.safari&&e.contentDOM.addEventListener("input",()=>null),G.gecko&&Gk(e.contentDOM.ownerDocument)}handleEvent(e){!Yk(this.view,e)||this.ignoreDuringComposition(e)||e.type=="keydown"&&this.keydown(e)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(e.type,e)):this.runHandlers(e.type,e))}runHandlers(e,t){let r=this.handlers[e];if(r){for(let n of r.observers)n(this.view,t);for(let n of r.handlers){if(t.defaultPrevented)break;if(n(this.view,t)){t.preventDefault();break}}}}ensureHandlers( Line truncated
`))};if((G.mac||G.android)&&u.from==o-1&&/^\. ?$/.test(r.text)&&e.contentDOM.getAttribute("autocorrect")=="off"&&(u={from:a,to:l,insert:me.of([r.text.replace("."," ")])}),this.pendingContextChange=u,!e.state.readOnly){let f=this.to-this.from+(u.to-u.from+u.insert.length);yf(e,u,R.single(this.toEditorPos(r.selectionStart,f),this.toEditorPos(r.selectionEnd,f)))}this.pendingContextChange&&(this.revertPending(e.state),this.setSelection(e.state)),u.from<u.to&&!u.insert.length&&e.inputState.composing>=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(t.text.slice(Math.max(0,r.updateRangeStart-1),Math.min(t.text.length,r.updateRangeStart+1)))&&this.handlers.compositionend(r)},this.handlers.characterboundsupdate=r=>{let n=[],s=null;for(let o=this.toEditorPos(r.rangeStart),a=this.toEditorPos(r.rangeEnd);o<a;o++){let l=e.coordsForChar(o);s=l&&new DOMRect(l.left,l.top,l.right-l.left,l.bottom-l.top)||s||new DOMRect,n.push(s)}t.updateCharacterBounds(r.rangeStart,n)},this.handlers.textformatupdate=r=>{let n=[];for(let s of r.getTextFormats()){let o=s.underlineStyle,a=s.underlineThickness;if(!/none/i.test(o)&&!/none/i.test(a)){let l=this.toEditorPos(s.rangeStart),c=this.toEditorPos(s.rangeEnd);if(l<c){let h=`text-decoration: underline ${/^[a-z]/.test(o)?o+" ":o=="Dashed"?"dashed ":o=="Squiggle"?"wavy ":""}${/thin/i.test(a)?1:2}px`;n.push(V.mark({attributes:{style:h}}).range(l,c))}}}e.dispatch({effects:A0.of(V.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=Ds(r.root);n&&n.rangeCount&&this.editContext.updateSelectionBounds(n.getRangeAt(0).getBoundingClientRect())}}}applyEdits(e){let t=0,r=!1,n=this.pendingContextChange;return e.changes.iterChanges((s,o,a,l,c)=>{if(r)return;let h=c.length-(o-s);if(n&&o>=n.to)if(n.from==s&&n.to==o&&n.insert.eq(c)){n=this.pendingContextChange=null,t+=h,this.to+=h;return}else n=null,this.revertPending(e.state);if(s+=t,o+=t,o<=this.from)this.from+=h,this.to+=h;else if(s<this.to){if(s<this.from||o>this.to||this.to-this.from+c.length>3e4){r=!0;return}this.editContext.updateText(this.toContextPos(s),this.toContextPos(o),c.toString()),this.to+=h}t+=h}),n&&!r&&this.revertPending(e.state),!r}update(e){let t=this.pendingContextChange,r=e.startState.selection.main;this.composing&&(this.composing.drifted||!e.changes.touchesRange(r.from,r.to)&&e.transactions.some(n=>!n.isUserEvent("input.type")&&n.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=e.changes.mapPos(this.composing.editorBase)):!this.applyEdits(e)||!this.rangeIsValid(e.state)?(this.pendingContextChange=null,this.reset(e.state)):(e.docChanged||e.selectionSet||t)&&this.setSelection(e.state),(e.geometryChanged||e.docChanged||e.selectionSet)&&e.view.requestMeasure(this.measureReq)}resetRange(e){let{head:t}=e.selection.main;this.from=Math.max(0,t-1e4),this.to=Math.min(e.doc.length,t+1e4)}reset(e){this.resetRange(e),this.editContext.updateText(0,this.editContext.text.length,e.doc.sliceString(this.from,this.to)),this.setSelection(e)}revertPending(e){let t=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(t.from),this.toContextPos(t.from+t.insert.length),e.doc.sliceString(t.from,t.to))}setSelection(e){let{main:t}=e.selection,r=this.toContextPos(Math.max(this.from,Math.min(this.to,t.anchor))),n=this.toContextPos(t.head);(this.editContext.selectionStart!=r||this.editContext.selectionEnd!=n)&&this.editContext.updateSelection(r,n)}rangeIsValid(e){let{head:t}=e.selection.main;return!(this.from>0&&t-this.from<500||this.to<e.doc.length&&this.to-t<500||this.to-this.from>1e4*3)}toEditorPos(e,t=this.to-this.from){e=Math.min(e,t);let r=this.composing;return r&&r.drifted?r.editorBase+(e-r.contextBase):e+this.from}toContextPos(e){let t=this.composing;return t&&t.drifted?t.contextBase+(e-t.editorBase):e-this.from}destroy(){for(let e in this.handlers)this.editContext.removeEventListener(e,this.handlers[e])}},M=class i{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(e={}){var t;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=doc Line truncated
-\x7F-\x9F\xAD\u061C\u200B\u200E\u200F\u2028\u2029\u202D\u202E\u2066\u2067\u2069\uFEFF\uFFF9-\uFFFC]`,of),w$={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"},Ou=null;function P$(){var i;if(Ou==null&&typeof document!="undefined"&&document.body){let e=document.body.style;Ou=((i=e.tabSize)!==null&&i!==void 0?i:e.MozTabSize)!=null}return Ou||!1}var _a=q.define({combine(i){let e=Mt(i,{render:null,specialChars:y$,addSpecialChars:null});return(e.replaceTabs=!P$())&&(e.specialChars=new RegExp(" |"+e.specialChars.source,of)),e.addSpecialChars&&(e.specialChars=new RegExp(e.specialChars.source+"|"+e.addSpecialChars.source,of)),e}});function lb(i={}){return[_a.of(i),Q$()]}var e0=null;function Q$(){return e0||(e0=Ae.fromClass(class{constructor(i){this.view=i,this.decorations=V.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(i.state.facet(_a)),this.decorations=this.decorator.createDeco(i)}makeDecorator(i){return new Is({regexp:i.specialChars,decoration:(e,t,r)=>{let{doc:n}=t.state,s=hi(e[0],0);if(s==9){let o=n.lineAt(r),a=t.state.tabSize,l=xt(o.text,a,r-o.from);return V.replace({widget:new lf((a-l%a)*this.view.defaultCharacterWidth/this.view.scaleX)})}return this.decorationCache[s]||(this.decorationCache[s]=V.replace({widget:new af(i,s)}))},boundary:i.replaceTabs?void 0:/[^]/})}update(i){let e=i.state.facet(_a);i.startState.facet(_a)!=e?(this.decorator=this.makeDecorator(e),this.decorations=this.decorator.createDeco(i.view)):this.decorations=this.decorator.updateDeco(i,this.decorations)}},{decorations:i=>i.decorations}))}var k$="\u2022";function $$(i){return i>=32?k$:i==10?"\u2424":String.fromCharCode(9216+i)}var af=class extends qe{constructor(e,t){super(),this.options=e,this.code=t}eq(e){return e.code==this.code}toDOM(e){let t=$$(this.code),r=e.state.phrase("Control character")+" "+(w$[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}},lf=class extends qe{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 el(){return C$}var T$=V.line({class:"cm-activeLine"}),C$=Ae.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(T$.range(n.from)),e=n.from)}return V.set(t)}},{decorations:i=>i.decorations});var cf=2e3;function _$(i,e,t){let r=Math.min(e.line,t.line),n=Math.max(e.line,t.line),s=[];if(e.off>cf||t.off>cf||e.col<0||t.col<0){let o=Math.min(e.off,t.off),a=Math.max(e.off,t.off);for(let l=r;l<=n;l++){let c=i.doc.line(l);c.length<=a&&s.push(R.range(c.from+o,c.to+a))}}else{let o=Math.min(e.col,t.col),a=Math.max(e.col,t.col);for(let l=r;l<=n;l++){let c=i.doc.line(l),h=ma(c.text,o,i.tabSize,!0);if(h<0)s.push(R.cursor(c.to));else{let u=ma(c.text,a,i.tabSize);s.push(R.range(c.from+h,c.from+u))}}}return s}function R$(i,e){let t=i.coordsAtPos(i.viewport.from);return t?Math.round(Math.abs((t.left-e)/i.defaultCharacterWidth)):-1}function t0(i,e){let t=i.posAtCoords({x:e.clientX,y:e.clientY},!1),r=i.state.doc.lineAt(t),n=t-r.from,s=n>cf?-1:n==r.length?R$(i,e.clientX):xt(r.text,i.state.tabSize,t-r.from);return{line:r.number,col:s,off:n}}function A$(i,e){let t=t0(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=t0(i,n);if(!a)return r;let l=_$(i.state,t,a);return l.length?o?R.create(l.concat(r.ranges)):R.create(l):r}}:null}function tl(i){let e=(i==null?void 0:i.eventFilter)||(t=>t.altKey&&t.button==0);return M.mouseSelectionStyle.of((t,r)=>e(r)?A$(t,r):null)}var E$={Alt:[18,i=>!!i.altKey],Control:[17,i=>!!i.ctrlKey],Shift:[16,i=>!!i.shiftKey],Meta:[91,i=>!!i.metaKey]},Z$={style:"cursor: crosshair"};function il(i={}){let[e,t]=E$[i.key||"Alt"],r=Ae.fromClass(class{constructor(n){this.view=n,this.isDown=!1}set(n){this.isDown!=n&&(this.isDown=n,this.view.update([]))}},{eventObservers:{keydown(n){this.set(n.keyCode==e||t(n))},keyup(n){(n.keyCode==e||!t(n))&&this.set(!1)},mousemove(n){this.set(t(n))}}});retur Line truncated
`){[e,t]=Pn(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 d of e)r+=d.lines;if(r<32){let d=[];for(let O of e)O.flatten(d);return new Lt(d,t)}let n=Math.max(32,r>>5),s=n<<1,o=n>>1,a=[],l=0,c=-1,h=[];function u(d){let O;if(d.lines>s&&d instanceof i)for(let m of d.children)u(m);else d.lines>o&&(l>o||!l)?(f(),a.push(d)):d instanceof Lt&&l&&(O=h[h.length-1])instanceof Lt&&d.lines+O.lines<=32?(l+=d.lines,c+=d.length+1,h[h.length-1]=new Lt(O.text.concat(d.text),O.length+1+d.length)):(l+d.lines>n&&f(),l+=d.lines,c+=d.length+1,h.push(d))}function f(){l!=0&&(a.push(h.length==1?h[0]:i.from(h,c)),c=-1,l=h.length=0)}for(let d of e)u(d);return f(),a.length==1?a[0]:new i(a,t)}};me.empty=new Lt([""],0);function LQ(i){let e=-1;for(let t of i)e+=t.length+1;return e}function la(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 sg(i,e,t){return la(i,[""],e,t)}var Xr=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 Lt?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 Lt?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 Lt){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 Lt?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)}},ca=class{constructor(e,t,r){this.value="",this.done=!1,this.cursor=new Xr(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!=""}},ha=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"&&(me.prototype[Symbol.iterator]=function(){return this.iter()},Xr.prototype[Symbol.iterator]=ca.prototype[Symbol.iterator]=ha.prototype[Symbol.iterator]=function(){return this});var Fh=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 Pn(i,e,t){return e=Math.max(0,Math.min(i.length,e)),[e,Math.max(e,Math.min(i.length,t))]}function je(i,e,t=!0,r=!0){return tg(i,e,t,r)}function MQ(i){return i>=56320&&i<57344}function DQ(i){return i>=55296&&i<56320}function hi(i,e){let t=i.charCodeAt(e);if(!DQ(t)||e+1==i.length)return t;let r=i.charCodeAt(e+1);return MQ(r)?(t-55296<<10)+(r-56320)+65536:t}function Oa(i){return i<=65535?String.fromCharCode(i):(i-=65536,String.fromCharCode((i>>10)+55296,(i&1023)+56320))}function or(i){return i<65536?1:2}var Uh=/\r\n?|\n/,Je=(function(i){return i[i.Simple=0]="Simple",i[i.TrackDel=1]="TrackDel",i[i.TrackBefore=2]="TrackBefore",i[i.TrackAfter=3]="TrackAfter",i})(Je||(Je={})),Mi=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){Nh(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:hg(this,e)}mapDesc(e,t=!1){return e.empty?this:qh(this,e,t)}mapPos(e,t=-1,r=Je.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!=Je.Simple&&c>=e&&(r==Je.TrackDel&&n<e&&c>e||r==Je.TrackBefore&&n<e||r==Je.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)}},bt=class i extends Mi{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 Nh(this,(t,r,n,s,o)=>e=e.replace(n,n+(r-t),o),!1),e}mapDesc(e,t=!1){return qh(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(me.empty);r.push(o?e.slice(s,s+o):me.empty)}s+=o}return new i(t,r)}compose(e){return this.empty?e:e.empty?this:hg(this,e,!0)}map(e,t=!1){return e.empty?this:qh(this,e,t,!0)}iterChanges(e,t=!1){Nh(this,e,t)}get desc Line truncated
`}get readOnly(){return this.facet(gg)}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(fg))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 UQ(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=je(t,o,!1);if(s(t.slice(l,o))!=Te.Word)break;o=l}for(;a<n;){let l=je(t,a);if(s(t.slice(a,l))!=Te.Word)break;a=l}return o==a?null:R.range(o+r,a+r)}};Oe.allowMultipleSelections=Hh;Oe.tabSize=q.define({combine:i=>i.length?i[0]:4});Oe.lineSeparator=dg;Oe.readOnly=gg;Oe.phrases=q.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])}});Oe.languageData=fg;Oe.changeFilter=pg;Oe.transactionFilter=Og;Oe.transactionExtender=mg;st.reconfigure=ie.define();function Mt(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 Nt=class{eq(e){return this==e}range(e,t=e){return ws.create(e,t,this)}};Nt.prototype.startSide=Nt.prototype.endSide=0;Nt.prototype.point=!1;Nt.prototype.mapMode=Je.TrackDel;function au(i,e){return i==e||i.constructor==e.constructor&&i.eq(e)}var ws=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 iu(i,e){return i.from-e.from||i.value.startSide-e.value.startSide}var ru=class i{constructor(e,t,r,n){this.from=e,this.to=t,this.value=r,this.maxPoint=n}get length(){return this.to[this.to.length-1]}findIndex(e,t,r,n=0){let s=r?this.to:this.from;for(let o=n,a=s.length;;){if(o==a)return o;let l=o+a>>1,c=s[l]-e||(r?this.value[l].endSide:this.value[l].startSide)-t;if(l==o)return c>=0?o:a;c>=0?a=l:o=l+1}}between(e,t,r,n){for(let s=this.findIndex(t,-1e9,!0),o=this.findIndex(r,1e9,!1,s);s<o;s++)if(n(this.from[s]+e,this.to[s]+e,this.value[s])===!1)return!1}map(e,t){let r=[],n=[],s=[],o=-1,a=-1;for(let l=0;l<this.value.length;l++){let c=this.value[l],h=this.from[l]+e,u=this.to[l]+e,f,d;if(h==u){let O=t.mapPos(h,c.startSide,c.mapMode);if(O==null||(f=d=O,c.startSide!=c.endSide&&(d=t.mapPos(h,c.endSide),d<f)))continue}else if(f=t.mapPos(h,c.startSide),d=t.mapPos(u,c.endSide),f>d||f==d&&c.startSide>0&&c.endSide<=0)continue;(d-f||c.endSide-c.startSide)<0||(o<0&&(o=f),c.point&&(a=Math.max(a,d-f)),r.push(c),n.push(f-o),s.push(d-o))}return{mapped:r.length?new i(n,s,r,a):null,pos:o}}},le=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(iu)),this.isEmpty)return t.length?i.of(t):this;let a=new pa(this,null,-1).goto(0),l=0,c=[],h=new ci;for(;a.value||l<t.length;)if(l<t.length&&(a.from-t[l].from||a.startSide-t[l].value.startSide)>=0){let u=t[l++];h.addInner(u.from,u.to,u.value)||c.push(u)}else a.rangeIndex==1&&a.chunkIndex<this.chunk.length&&(l==t.length||this.chunkEnd(a.chunkIndex)<t[l].from)&&(!o||n>this.chunkEnd(a.chunkIndex)||s<this.chunkPos[a.chunkIndex])&&h.addChunk(this.chunkPos[a.chunkIndex],this.chunk[a.chunkIndex])?a.nextChunk():((!o||n>a.to||s<a.from||o(a.from,a.to,a.value))&&(h.addInner(a.from,a.to,a.value)||c.push(ws.create(a.from,a.to,a.value))),a.next());return h.finishInner(this.nextLayer.isEmpty&&!c.length?i.empty:this.nextLayer.update({add:c,filter:o,filterFrom:n,filterTo:s}))}map(e){if(e.empty||this.isEmpty)return this;let t=[],r=[],n=-1;for(let o=0;o<this.chunk.length;o++){let a=this.chunkPos[o],l=this.chunk[o],c=e.touchesRange(a,a+l.length);if(c===!1)n=Math.max(n,l.maxPoint),t.push(l),r.push(e.mapPos(a));else if(c===!0){let{mapped:h,pos:u}=l.map(a,e);h&&(n=Math.max(n,h.maxPoint),t.push(h),r.push(u))}}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 Ps.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,t=0){return Ps.from(e).goto(t)}static compare(e,t,r,n,s=-1){let o=e.filter(u=>u.maxPoint>0||!u.isEm Line truncated
`)}static newName(){let e=vg[Sg]||1;return vg[Sg]=e+1,"\u037C"+e.toString(36)}static mount(e,t,r){let n=e[lu],s=r&&r.nonce;n?s&&n.setNonce(s):n=new cu(e,s),n.mount(Array.isArray(t)?t:[t],e)}},yg=new Map,cu=class{constructor(e,t){let r=e.ownerDocument||e,n=r.defaultView;if(!e.head&&e.adoptedStyleSheets&&n.CSSStyleSheet){let s=yg.get(r);if(s)return e[lu]=s;this.sheet=new n.CSSStyleSheet,yg.set(r,this)}else this.styleTag=r.createElement("style"),t&&this.styleTag.setAttribute("nonce",t);this.modules=[],e[lu]=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 Di={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:"'"},Qn={48:")",49:"!",50:"@",51:"#",52:"$",53:"%",54:"^",55:"&",56:"*",57:"(",59:":",61:"+",173:"_",186:":",187:"+",188:"<",189:"_",190:">",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},qQ=typeof navigator!="undefined"&&/Mac/.test(navigator.platform),GQ=typeof navigator!="undefined"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(qe=0;qe<10;qe++)Di[48+qe]=Di[96+qe]=String(qe);var qe;for(qe=1;qe<=24;qe++)Di[qe+111]="F"+qe;var qe;for(qe=65;qe<=90;qe++)Di[qe]=String.fromCharCode(qe+32),Qn[qe]=String.fromCharCode(qe);var qe;for(ga in Di)Qn.hasOwnProperty(ga)||(Qn[ga]=Di[ga]);var ga;function wg(i){var e=qQ&&i.metaKey&&i.shiftKey&&!i.ctrlKey&&!i.altKey||GQ&&i.shiftKey&&i.key&&i.key.length==1||i.key=="Unidentified",t=!e&&i.key||(i.shiftKey?Qn:Di)[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 Be(){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++)Pg(i,arguments[e]);return i}function Pg(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++)Pg(i,e[t]);else throw new RangeError("Unsupported child node: "+e)}var St=typeof navigator!="undefined"?navigator:{userAgent:"",vendor:"",platform:""},xu=typeof document!="undefined"?document:{documentElement:{style:{}}},Su=/Edge\/(\d+)/.exec(St.userAgent),c0=/MSIE \d/.test(St.userAgent),vu=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(St.userAgent),Ga=!!(c0||vu||Su),Qg=!Ga&&/gecko\/(\d+)/i.test(St.userAgent),hu=!Ga&&/Chrome\/(\d+)/.exec(St.userAgent),kg="webkitFontSmoothing"in xu.documentElement.style,yu=!Ga&&/Apple Computer/.test(St.vendor),$g=yu&&(/Mobile\/\w+/.test(St.userAgent)||St.maxTouchPoints>2),G={mac:$g||/Mac/.test(St.platform),windows:/Win/.test(St.platform),linux:/Linux|X11/.test(St.platform),ie:Ga,ie_version:c0?xu.documentMode||6:vu?+vu[1]:Su?+Su[1]:0,gecko:Qg,gecko_version:Qg?+(/Firefox\/(\d+)/.exec(St.userAgent)||[0,0])[1]:0,chrome:!!hu,chrome_version:hu?+hu[1]:0,ios:$g,android:/Android\b/.test(St.userAgent),webkit:kg,webkit_version:kg?+(/\bAppleWebKit\/(\d+)/.exec(St.userAgent)||[0,0])[1]:0,safari:yu,safari_version:yu?+(/\bVersion\/(\d+(\.\d+)?)/.exec(St.userAgent)||[0,0])[1]:0,tabSize:xu.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function pf(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 Aa=Object.create(null);function Of(i,e,t){if(i==e)return!0;i||(i=Aa),e||(e=Aa);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 HQ(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 Tg(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 KQ(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 Ge=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){}},ot=(function(i){return i[i.Text=0]="Text",i[i.WidgetBefore=1]="WidgetBefore",i[i.WidgetAfter=2]="WidgetAfter",i[i.WidgetRange=3]="WidgetRange",i})(ot||(ot={})),V=class extends Nt{constructor(e,t,r,n){super(),this.startSide=e,this.endSLine truncated
`,n=i.state.doc.line(n.number+(t?1:-1)),s=i.bidiSpans(n),c=i.visualLineSide(n,!t)}if(l){if(!l(h))return a}else{if(!r)return c;l=r(h)}a=c}}function Rk(i,e,t){let r=i.state.charCategorizer(e),n=r(t);return s=>{let o=r(s);return n==Te.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 R.cursor(n,e.assoc);let o=e.goalColumn,a,l=i.contentDOM.getBoundingClientRect(),c=i.coordsAtPos(n,e.assoc||((e.empty?t:e.head==e.from)?1:-1)),h=i.documentTop;if(c)o==null&&(o=c.left-l.left),a=s<0?c.top:c.bottom;else{let O=i.viewState.lineBlockAt(n);o==null&&(o=Math.min(l.right-l.left,i.defaultCharacterWidth*(n-O.from))),a=(s<0?O.top:O.bottom)+h}let u=l.left+o,f=i.viewState.heightOracle.textHeight>>1,d=r!=null?r:f;for(let O=0;;O+=f){let m=a+(d+O)*s,S=Du(i,{x:u,y:m},!1,s);if(t?m>l.bottom:m<l.top)return R.cursor(S.pos,S.assoc);let y=i.coordsAtPos(S.pos,S.assoc),A=y?(y.top+y.bottom)/2:0;if(!y||(t?A>a:A<a))return R.cursor(S.pos,S.assoc,void 0,o)}}function Es(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 I0(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=Es(i,n.from,0);o!=n.from&&(s=R.cursor(o,-1))}else{let o=Es(i,n.from,-1),a=Es(i,n.to,1);(o!=n.from||a!=n.to)&&(n.undirectional?s=R.undirectionalRange(n.from,n.to):s=R.range(n.from==n.anchor?o:a,n.from==n.head?o:a))}s&&(t||(t=e.ranges.slice()),t[r]=s)}return t?R.create(t,e.mainIndex):e}function du(i,e,t){let r=Es(i.state.facet(Ys).map(n=>n(i)),t.from,e.head>t.from?-1:1);return r==t.from?t:R.cursor(r,r<t.from?1:-1)}var Kt=class{constructor(e,t){this.pos=e,this.assoc=t}};function Du(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 Kt(0,1);if(l>i.viewState.docHeight)return new Kt(i.state.doc.length,-1);if(c=i.elementAtHeight(l),r==null)break;if(c.type==ot.Text){if(r<0?c.to<i.viewport.from:c.from>i.viewport.to)break;let f=i.docView.coordsAt(r<0?c.from:c.to,r>0?-1:1);if(f&&(r<0?f.top<=l+s:f.bottom>=l+s))break}let u=i.viewState.heightOracle.textHeight/2;l=r>0?c.bottom+u:c.top-u}if(i.viewport.from>=c.to||i.viewport.to<=c.from){if(t)return null;if(c.type==ot.Text){let u=Ck(i,n,c,o,a);return new Kt(u,u==c.from?1:-1)}}if(c.type!=ot.Text)return l<(c.top+c.bottom)/2?new Kt(c.from,1):new Kt(c.to,-1);let h=i.docView.lineAt(c.from,2);return(!h||h.length!=c.length)&&(h=i.docView.lineAt(c.from,-2)),new Wu(i,o,a,i.textDirectionAt(c.from)).scanTile(h,c.from)}var Wu=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[Jt.find(n,e-r.from,-1,t)].level==this.baseDir}dirAt(e,t){let{line:r,spans:n}=this.bidiSpansAt(e);return n[Jt.find(n,e-r.from,-1,t)].dir}bidiIn(e,t){let{spans:r,line:n}=this.bidiSpansAt(e);return r.length>1||r.length&&(r[0].level!=this.baseDir||r[0].to+n.from<t)}scan(e,t,r=!1){let n=0,s=e.length-1,o=new Set,a=this.bidiIn(e[0],e[s]),l,c,h=-1,u=1e9,f;e:for(;n<s;){let O=s-n,m=n+s>>1;t:if(o.has(m)){for(let A=1;A<O;A++){let C=m+A;if(C>=s&&(C-=O),!o.has(C)){m=C;break t}}break e}o.add(m);let S=t(m),y=0;if(S)for(let A=0;A<S.length;A++){let C=S[A];if(!(C.width==0&&S.length>1))if(C.bottom<this.y)(!l||l.bottom<C.bottom)&&(l=C),y=1;else if(C.top>this.y)(!c||c.top>C.top)&&(c=C),y=-1;else{let Z=C.left>this.x?this.x-C.left:C.right<this.x?this.x-C.right:0,k=Math.abs(Z);k<u&&(h=m,u=k,f=C),Z&&(y=Z<0==(this.baseDir==$e.LTR)?-1:1)}}y==-1&&(!a||this.baseDirAt(e[m],1))?s=m:y==1&&(!a||this.baseDirAt(e[m+1],-1))&&(n=m+1)}if(!f){if(!c&&!l)return{i:0,after:!1};let O=l&&(!c||this.y-l.bottom<c.top-this.y)?l:c;return this.y=(O.top+O.bottom)/2,this.scan(e,t,!0)}if(u&&!r){let{top:O,bottom:m}=f;if(l&&l.bottom>(O+O+m)/3)return this.y=l.bottom-1,this.scan(e,t,!0);if(c&&c.top<(O+m+m)/3)return this.y=c.top+1,this.scan(e,t,!0)}let d=(a?this.dirAt(e[h],1):this.baseDir)==$e.LTR;return{i:h,after:this.x>(f.left+f.right)/2==d}}scanText(e,t){let r=[];for(let s=0;s<e.length;s=je(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 Is(e.dom,o,a).getClientRects()});return n.after?new Kt(r[n.i+1],-1):new Kt(r[n.i],1)}scanTile(e,t){if(!e.length)return new Kt(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:Is(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 Kt(r[n.i+1],-1):new Kt(o,1)}},kn="\uFFFF",Iu=class{con Line truncated
`&&i.lineWrapping&&(r&&(r=R.single(r.main.anchor-1,r.main.head-1)),t={from:s.from,to:s.to,insert:me.of([" "])}),t)return yf(i,t,r,o);if(r&&!Ia(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=I0(n.facet(Ys).map(c=>c(i)),r))),i.dispatch({selection:r,scrollIntoView:a,userEvent:l}),!0}else return!1}function yf(i,e,t,r=-1){if(G.ios&&i.inputState.flushIOSKey(e))return!0;let n=i.state.selection.main;if(G.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&&An(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)&&An(i.contentDOM,"Backspace",8)||e.from==n.from&&e.to==n.to+1&&e.insert.length==0&&An(i.contentDOM,"Delete",46)))return!0;let s=e.insert.toString();i.inputState.composing>=0&&i.inputState.composing++;let o,a=()=>o||(o=Xk(i,e,t));return i.state.facet(T0).some(l=>l(i,e.from,e.to,s,a))||i.dispatch(a()),!0}function Xk(i,e,t){let r,n=i.state,s=n.selection.main,o=-1;if(e.from==e.to&&e.from<s.from||e.from>s.to){let l=e.from<s.from?-1:1,c=l<0?s.from:s.to,h=Es(n.facet(Ys).map(u=>u(i)),c,l);e.from==h&&(o=h)}if(o>-1)r={changes:e,selection:R.cursor(e.from+e.insert.length,-1)};else if(e.from>=s.from&&e.to<=s.to&&e.to-e.from>=(s.to-s.from)/3&&(!t||t.main.empty&&t.main.from==e.from+e.insert.length)&&i.inputState.composing<0){let l=s.from<e.from?n.sliceDoc(s.from,e.from):"",c=s.to>e.to?n.sliceDoc(e.to,s.to):"";r=n.replaceSelection(i.state.toText(l+e.insert.sliceString(0,void 0,i.state.lineBreak)+c))}else{let l=n.changes(e),c=t&&t.main.to<=l.newLength?t.main:void 0;if(n.selection.ranges.length>1&&(i.inputState.composing>=0||i.inputState.compositionPendingChange)&&e.to<=s.to+10&&e.to>=s.to-10){let h=i.state.sliceDoc(e.from,e.to),u,f=t&&W0(i,t.main.head);if(f){let O=e.insert.length-(e.to-e.from);u={from:f.from,to:f.to-O}}else u=i.state.doc.lineAt(s.head);let d=s.to-e.to;r=n.changeByRange(O=>{if(O.from==s.from&&O.to==s.to)return{changes:l,range:c||O.map(l)};let m=O.to-d,S=m-h.length;if(i.state.sliceDoc(S,m)!=h||m>=u.from&&S<=u.to)return{range:O};let y=n.changes({from:S,to:m,insert:e.insert}),A=O.to-s.to;return{changes:y,range:c?R.range(Math.max(0,c.anchor+A),Math.max(0,c.head+A)):O.map(y)}})}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 Y0(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 Lk(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 Wa(t,r)),(n!=t||s!=r)&&e.push(new Wa(n,s))),e}function Mk(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?R.single(t+e,r+e):null}function Ia(i,e){return e.head==i.main.head&&e.anchor==i.main.anchor}var Vu=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,G.safari&&e.contentDOM.addEventListener("input",()=>null),G.gecko&&Kk(e.contentDOM.ownerDocument)}handleEvent(e){!Bk(this.view,e)||this.ignoreDuringComposition(e)||e.type=="keydown"&&this.keydown(e)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(e.type,e)):this.runHandlers(e.type,e))}runHandlers(e,t){let r=this.handlers[e];if(r){for(let n of r.observers)n(this.view,t);for(let n of r.handlers){if(t.defaultPrevented)break;if(n(this.view,t)){t.preventDefault();break}}}}ensureHandlers( Line truncated
`))};if((G.mac||G.android)&&u.from==o-1&&/^\. ?$/.test(r.text)&&e.contentDOM.getAttribute("autocorrect")=="off"&&(u={from:a,to:l,insert:me.of([r.text.replace("."," ")])}),this.pendingContextChange=u,!e.state.readOnly){let f=this.to-this.from+(u.to-u.from+u.insert.length);yf(e,u,R.single(this.toEditorPos(r.selectionStart,f),this.toEditorPos(r.selectionEnd,f)))}this.pendingContextChange&&(this.revertPending(e.state),this.setSelection(e.state)),u.from<u.to&&!u.insert.length&&e.inputState.composing>=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(t.text.slice(Math.max(0,r.updateRangeStart-1),Math.min(t.text.length,r.updateRangeStart+1)))&&this.handlers.compositionend(r)},this.handlers.characterboundsupdate=r=>{let n=[],s=null;for(let o=this.toEditorPos(r.rangeStart),a=this.toEditorPos(r.rangeEnd);o<a;o++){let l=e.coordsForChar(o);s=l&&new DOMRect(l.left,l.top,l.right-l.left,l.bottom-l.top)||s||new DOMRect,n.push(s)}t.updateCharacterBounds(r.rangeStart,n)},this.handlers.textformatupdate=r=>{let n=[];for(let s of r.getTextFormats()){let o=s.underlineStyle,a=s.underlineThickness;if(!/none/i.test(o)&&!/none/i.test(a)){let l=this.toEditorPos(s.rangeStart),c=this.toEditorPos(s.rangeEnd);if(l<c){let h=`text-decoration: underline ${/^[a-z]/.test(o)?o+" ":o=="Dashed"?"dashed ":o=="Squiggle"?"wavy ":""}${/thin/i.test(a)?1:2}px`;n.push(V.mark({attributes:{style:h}}).range(l,c))}}}e.dispatch({effects:E0.of(V.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=Ws(r.root);n&&n.rangeCount&&this.editContext.updateSelectionBounds(n.getRangeAt(0).getBoundingClientRect())}}}applyEdits(e){let t=0,r=!1,n=this.pendingContextChange;return e.changes.iterChanges((s,o,a,l,c)=>{if(r)return;let h=c.length-(o-s);if(n&&o>=n.to)if(n.from==s&&n.to==o&&n.insert.eq(c)){n=this.pendingContextChange=null,t+=h,this.to+=h;return}else n=null,this.revertPending(e.state);if(s+=t,o+=t,o<=this.from)this.from+=h,this.to+=h;else if(s<this.to){if(s<this.from||o>this.to||this.to-this.from+c.length>3e4){r=!0;return}this.editContext.updateText(this.toContextPos(s),this.toContextPos(o),c.toString()),this.to+=h}t+=h}),n&&!r&&this.revertPending(e.state),!r}update(e){let t=this.pendingContextChange,r=e.startState.selection.main;this.composing&&(this.composing.drifted||!e.changes.touchesRange(r.from,r.to)&&e.transactions.some(n=>!n.isUserEvent("input.type")&&n.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=e.changes.mapPos(this.composing.editorBase)):!this.applyEdits(e)||!this.rangeIsValid(e.state)?(this.pendingContextChange=null,this.reset(e.state)):(e.docChanged||e.selectionSet||t)&&this.setSelection(e.state),(e.geometryChanged||e.docChanged||e.selectionSet)&&e.view.requestMeasure(this.measureReq)}resetRange(e){let{head:t}=e.selection.main;this.from=Math.max(0,t-1e4),this.to=Math.min(e.doc.length,t+1e4)}reset(e){this.resetRange(e),this.editContext.updateText(0,this.editContext.text.length,e.doc.sliceString(this.from,this.to)),this.setSelection(e)}revertPending(e){let t=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(t.from),this.toContextPos(t.from+t.insert.length),e.doc.sliceString(t.from,t.to))}setSelection(e){let{main:t}=e.selection,r=this.toContextPos(Math.max(this.from,Math.min(this.to,t.anchor))),n=this.toContextPos(t.head);(this.editContext.selectionStart!=r||this.editContext.selectionEnd!=n)&&this.editContext.updateSelection(r,n)}rangeIsValid(e){let{head:t}=e.selection.main;return!(this.from>0&&t-this.from<500||this.to<e.doc.length&&this.to-t<500||this.to-this.from>1e4*3)}toEditorPos(e,t=this.to-this.from){e=Math.min(e,t);let r=this.composing;return r&&r.drifted?r.editorBase+(e-r.contextBase):e+this.from}toContextPos(e){let t=this.composing;return t&&t.drifted?t.contextBase+(e-t.editorBase):e-this.from}destroy(){for(let e in this.handlers)this.editContext.removeEventListener(e,this.handlers[e])}},M=class i{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(e={}){var t;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=doc Line truncated
-\x7F-\x9F\xAD\u061C\u200B\u200E\u200F\u2028\u2029\u202D\u202E\u2066\u2067\u2069\uFEFF\uFFF9-\uFFFC]`,of),Q$={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"},Ou=null;function k$(){var i;if(Ou==null&&typeof document!="undefined"&&document.body){let e=document.body.style;Ou=((i=e.tabSize)!==null&&i!==void 0?i:e.MozTabSize)!=null}return Ou||!1}var _a=q.define({combine(i){let e=Mt(i,{render:null,specialChars:P$,addSpecialChars:null});return(e.replaceTabs=!k$())&&(e.specialChars=new RegExp(" |"+e.specialChars.source,of)),e.addSpecialChars&&(e.specialChars=new RegExp(e.specialChars.source+"|"+e.addSpecialChars.source,of)),e}});function cb(i={}){return[_a.of(i),$$()]}var t0=null;function $$(){return t0||(t0=Ae.fromClass(class{constructor(i){this.view=i,this.decorations=V.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(i.state.facet(_a)),this.decorations=this.decorator.createDeco(i)}makeDecorator(i){return new zs({regexp:i.specialChars,decoration:(e,t,r)=>{let{doc:n}=t.state,s=hi(e[0],0);if(s==9){let o=n.lineAt(r),a=t.state.tabSize,l=xt(o.text,a,r-o.from);return V.replace({widget:new lf((a-l%a)*this.view.defaultCharacterWidth/this.view.scaleX)})}return this.decorationCache[s]||(this.decorationCache[s]=V.replace({widget:new af(i,s)}))},boundary:i.replaceTabs?void 0:/[^]/})}update(i){let e=i.state.facet(_a);i.startState.facet(_a)!=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 T$="\u2022";function C$(i){return i>=32?T$:i==10?"\u2424":String.fromCharCode(9216+i)}var af=class extends Ge{constructor(e,t){super(),this.options=e,this.code=t}eq(e){return e.code==this.code}toDOM(e){let t=C$(this.code),r=e.state.phrase("Control character")+" "+(Q$[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}},lf=class extends Ge{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 el(){return R$}var _$=V.line({class:"cm-activeLine"}),R$=Ae.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(_$.range(n.from)),e=n.from)}return V.set(t)}},{decorations:i=>i.decorations});var cf=2e3;function A$(i,e,t){let r=Math.min(e.line,t.line),n=Math.max(e.line,t.line),s=[];if(e.off>cf||t.off>cf||e.col<0||t.col<0){let o=Math.min(e.off,t.off),a=Math.max(e.off,t.off);for(let l=r;l<=n;l++){let c=i.doc.line(l);c.length<=a&&s.push(R.range(c.from+o,c.to+a))}}else{let o=Math.min(e.col,t.col),a=Math.max(e.col,t.col);for(let l=r;l<=n;l++){let c=i.doc.line(l),h=ma(c.text,o,i.tabSize,!0);if(h<0)s.push(R.cursor(c.to));else{let u=ma(c.text,a,i.tabSize);s.push(R.range(c.from+h,c.from+u))}}}return s}function E$(i,e){let t=i.coordsAtPos(i.viewport.from);return t?Math.round(Math.abs((t.left-e)/i.defaultCharacterWidth)):-1}function i0(i,e){let t=i.posAtCoords({x:e.clientX,y:e.clientY},!1),r=i.state.doc.lineAt(t),n=t-r.from,s=n>cf?-1:n==r.length?E$(i,e.clientX):xt(r.text,i.state.tabSize,t-r.from);return{line:r.number,col:s,off:n}}function Z$(i,e){let t=i0(i,e),r=i.state.selection;return t?{update(n){if(n.docChanged){let s=n.changes.mapPos(n.startState.doc.line(t.line).from),o=n.state.doc.lineAt(s);t={line:o.number,col:t.col,off:Math.min(t.off,o.length)},r=r.map(n.changes)}},get(n,s,o){let a=i0(i,n);if(!a)return r;let l=A$(i.state,t,a);return l.length?o?R.create(l.concat(r.ranges)):R.create(l):r}}:null}function tl(i){let e=(i==null?void 0:i.eventFilter)||(t=>t.altKey&&t.button==0);return M.mouseSelectionStyle.of((t,r)=>e(r)?Z$(t,r):null)}var X$={Alt:[18,i=>!!i.altKey],Control:[17,i=>!!i.ctrlKey],Shift:[16,i=>!!i.shiftKey],Meta:[91,i=>!!i.metaKey]},L$={style:"cursor: crosshair"};function il(i={}){let[e,t]=X$[i.key||"Alt"],r=Ae.fromClass(class{constructor(n){this.view=n,this.isDown=!1}set(n){this.isDown!=n&&(this.isDown=n,this.view.update([]))}},{eventObservers:{keydown(n){this.set(n.keyCode==e||t(n))},keyup(n){(n.keyCode==e||!t(n))&&this.set(!1)},mousemove(n){this.set(t(n))}}});retur Line truncated
`&&(t="");else{let r=t.indexOf(`
`);r>-1&&(t=t.slice(0,r))}return e+t.length<=this.to?t:t.slice(0,this.to-e)}nextLine(){let e=this.parsedPos,t=this.lineAfter(e),r=e+t.length;for(let n=this.rangeIndex;;){let s=this.ranges[n].to;if(s>=r||(t=t.slice(0,s-(r-t.length)),n++,n==this.ranges.length))break;let o=this.ranges[n].from,a=this.lineAfter(o);t+=a,r=o+a.length}return{line:t,end:r}}skipGapsTo(e,t,r){for(;;){let n=this.ranges[this.rangeIndex].to,s=e+t;if(r>0?n>s:n>=s)break;let o=this.ranges[++this.rangeIndex].from;t+=o-n}return t}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to<this.parsedPos;)this.rangeIndex++}emitToken(e,t,r,n){let s=4;if(this.ranges.length>1){n=this.skipGapsTo(t,n,1),t+=n;let a=this.chunk.length;n=this.skipGapsTo(r,n,-1),r+=n,s+=this.chunk.length-a}let o=this.chunk.length-4;return this.lang.streamParser.mergeTokens&&s==4&&o>=0&&this.chunk[o]==e&&this.chunk[o+2]==t?this.chunk[o+2]=r:this.chunk.push(e,t,r,s),n}parseLine(e){let{line:t,end:r}=this.nextLine(),n=0,{streamParser:s}=this.lang,o=new Ol(t,e?e.state.tabSize:4,e?mr(e.state):2);if(o.eol())s.blankLine(this.state,o.indentUnit);else for(;!o.eol();){let a=nx(s.token,o,this.state);if(a&&(n=this.emitToken(this.lang.tokenTable.resolve(a),this.parsedPos+o.start,this.parsedPos+o.pos,n)),o.start>1e4)break}this.parsedPos=r,this.moveRangeIndex(),this.parsedPos<this.to&&this.parsedPos++}finishChunk(){let e=fe.build({buffer:this.chunk,start:this.chunkStart,length:this.parsedPos-this.chunkStart,nodeSet:VT,topID:0,maxBufferLength:512,reused:this.chunkReused});e=new fe(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 fe(this.lang.topNode,this.chunks,this.chunkPos,this.parsedPos-this.ranges[0].from).balance()}};function nx(i,e,t){e.start=e.pos;for(let r=0;r<10;r++){let n=i(e,t);if(e.pos>e.start)return n}throw new Error("Stream parser failed to advance stream.")}var od=Object.create(null),qs=[We.none],VT=new Vi(qs),zb=[],Vb=Object.create(null),sx=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"]])sx[i]=ox(od,e);var ml=class{constructor(e){this.extra=e,this.table=Object.assign(Object.create(null),sx)}resolve(e){return e?this.table[e]||(this.table[e]=ox(this.extra,e)):0}},YT=new ml(od);function jf(i,e){zb.indexOf(i)>-1||(zb.push(i),console.warn(e))}function ox(i,e){let t=[];for(let a of e.split(" ")){let l=[];for(let c of a.split(".")){let h=i[c]||p[c];h?typeof h=="function"?l.length?l=l.map(h):jf(c,`Modifier ${c} used at start of tag`):l.length?jf(c,`Tag ${c} used as modifier`):l=Array.isArray(h)?h:[h]:jf(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=Vb[n];if(s)return s.id;let o=Vb[n]=We.define({id:qs.length,name:r,props:[ot({[r]:t})]});return qs.push(o),o.id}function jT(i,e){let t=We.define({id:qs.length,name:"Document",props:[Bi.add(()=>i),ti.add(()=>r=>e.getIndent(r))],top:!0});return qs.push(t),t}var yM={rtl:V.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"rtl"},bidiIsolate:$e.RTL}),ltr:V.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"ltr"},bidiIsolate:$e.LTR}),auto:V.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"auto"},bidiIsolate:null})};var vl=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=ve(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(FT(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 ax(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 BT(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=ax(e)+ax(t)+"*$";return[new RegExp("^"+r),new RegExp(r)]}function ux(i){let e=i.map(n=>typeof n=="string"?{label:n}:n),[t,r]=e.every(n=>/^\w+$/.test(n.label))?[/\w*$/,/\w+$/]:BT(e);return n=>{let s=n.matchBefore(r);return s||n.explicit?{from:s?s.from:n.pos,options:e,validFor:t}:null}}function fx(i,e){return t=>{for(let r=ve(t.state).resolve Line truncated
`;let o=i.state.facet(_i),a=o instanceof at?"Lezer LRLanguage":o instanceof et?"StreamLanguage":"Unknown",l=o instanceof at?"AST ":o instanceof et?"Token ":"Name ";return{pos:e,above:!0,arrow:!0,create(c){let h=document.createElement("div");h.style.overflow="visible",h.style.height="0",h.style.width="0";let u=document.createElement("div");return u.className="cm-debug-tooltip",u.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 Ol(t,e?e.state.tabSize:4,e?mr(e.state):2);if(o.eol())s.blankLine(this.state,o.indentUnit);else for(;!o.eol();){let a=sx(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=fe.build({buffer:this.chunk,start:this.chunkStart,length:this.parsedPos-this.chunkStart,nodeSet:jT,topID:0,maxBufferLength:512,reused:this.chunkReused});e=new fe(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 fe(this.lang.topNode,this.chunks,this.chunkPos,this.parsedPos-this.ranges[0].from).balance()}};function sx(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 od=Object.create(null),Gs=[We.none],jT=new Vi(Gs),Vb=[],Yb=Object.create(null),ox=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"]])ox[i]=ax(od,e);var ml=class{constructor(e){this.extra=e,this.table=Object.assign(Object.create(null),ox)}resolve(e){return e?this.table[e]||(this.table[e]=ax(this.extra,e)):0}},BT=new ml(od);function jf(i,e){Vb.indexOf(i)>-1||(Vb.push(i),console.warn(e))}function ax(i,e){let t=[];for(let a of e.split(" ")){let l=[];for(let c of a.split(".")){let h=i[c]||p[c];h?typeof h=="function"?l.length?l=l.map(h):jf(c,`Modifier ${c} used at start of tag`):l.length?jf(c,`Tag ${c} used as modifier`):l=Array.isArray(h)?h:[h]:jf(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=Yb[n];if(s)return s.id;let o=Yb[n]=We.define({id:Gs.length,name:r,props:[at({[r]:t})]});return Gs.push(o),o.id}function FT(i,e){let t=We.define({id:Gs.length,name:"Document",props:[Bi.add(()=>i),ti.add(()=>r=>e.getIndent(r))],top:!0});return Gs.push(t),t}var PM={rtl:V.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"rtl"},bidiIsolate:$e.RTL}),ltr:V.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"ltr"},bidiIsolate:$e.LTR}),auto:V.mark({class:"cm-iso",inclusive:!0,attributes:{dir:"auto"},bidiIsolate:null})};var vl=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=ve(this.state).resolveInner(this.pos,-1);for(;t&&e.indexOf(t.name)<0;)t=t.parent;return t?{from:t.from,to:this.pos,text:this.state.sliceDoc(t.from,this.pos),type:t.type}:null}matchBefore(e){let t=this.state.doc.lineAt(this.pos),r=Math.max(t.from,this.pos-250),n=t.text.slice(r-t.from,this.pos-t.from),s=n.search(NT(e,!1));return s<0?null:{from:r+s,to:this.pos,text:n.slice(s)}}get aborted(){return this.abortListeners==null}addEventListener(e,t,r){e=="abort"&&this.abortListeners&&(this.abortListeners.push(t),r&&r.onDocChange&&(this.abortOnDocChange=!0))}};function lx(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 UT(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=lx(e)+lx(t)+"*$";return[new RegExp("^"+r),new RegExp(r)]}function fx(i){let e=i.map(n=>typeof n=="string"?{label:n}:n),[t,r]=e.every(n=>/^\w+$/.test(n.label))?[/\w*$/,/\w+$/]:UT(e);return n=>{let s=n.matchBefore(r);return s||n.explicit?{from:s?s.from:n.pos,options:e,validFor:t}:null}}function dx(i,e){return t=>{for(let r=ve(t.state).resolve Line truncated
`;let o=i.state.facet(_i),a=o instanceof lt?"Lezer LRLanguage":o instanceof et?"StreamLanguage":"Unknown",l=o instanceof lt?"AST ":o instanceof et?"Token ":"Name ";return{pos:e,above:!0,arrow:!0,create(c){let h=document.createElement("div");h.style.overflow="visible",h.style.height="0",h.style.width="0";let u=document.createElement("div");return u.className="cm-debug-tooltip",u.textContent=`Parser: ${a}
${l}: ${r.name}
Tags : ${s}`,u.style.whiteSpace="pre-wrap",u.style.fontFamily="monospace",u.style.background="#333",u.style.color="white",u.style.padding="2px 8px",u.style.borderRadius="4px",u.style.fontSize="12px",u.style.border="1px solid #555",u.style.pointerEvents="none",u.style.position="absolute",u.style.bottom="0",u.style.width="max-content",h.appendChild(u),{dom:h}}}},{hoverTime:10,hideOnChange:!0});var dC=i=>{let{state:e}=i,t=e.doc.lineAt(e.selection.main.from),r=bd(i.state,t.from);return r.line?pC(i):r.block?mC(i):!1};function gd(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 pC=gd(xC,0);var OC=gd(Cx,0);var mC=gd((i,e)=>Cx(i,e,bC(e)),0);function bd(i,e){let t=i.languageDataAt("commentTokens",e,1);return t.length?t[0]:{}}var Js=50;function gC(i,{open:e,close:t},r,n){let s=i.sliceDoc(r-Js,r),o=i.sliceDoc(n,n+Js),a=/\s*$/.exec(s)[0].length,l=/^\s*/.exec(o)[0].length,c=s.length-a;if(s.slice(c-e.length,c)==e&&o.slice(l,l+t.length)==t)return{open:{pos:r-a,margin:a&&1},close:{pos:n+l,margin:l&&1}};let h,u;n-r<=2*Js?h=u=i.sliceDoc(r,n):(h=i.sliceDoc(r,r+Js),u=i.sliceDoc(n-Js,n));let f=/^\s*/.exec(h)[0].length,d=/\s*$/.exec(u)[0].length,O=u.length-d-t.length;return h.slice(f,f+e.length)==e&&u.slice(O,O+t.length)==t?{open:{pos:r+f+e.length,margin:/\s/.test(h.charAt(f+e.length))?1:0},close:{pos:n-d-t.length,margin:/\s/.test(u.charAt(O-1))?1:0}}:null}function bC(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 Cx(i,e,t=e.selection.ranges){let r=t.map(s=>bd(e,s.from).block);if(!r.every(s=>s))return null;let n=t.map((s,o)=>gC(e,r[o],s.from,s.to));if(i!=2&&!n.every(s=>s))return{changes:e.changes(t.map((s,o)=>n[o]?[]:[{from:s.from,insert:r[o].open+" "},{from:s.to,insert:" "+r[o].close}]))};if(i!=1&&n.some(s=>s)){let s=[];for(let o=0,a;o<n.length;o++)if(a=n[o]){let l=r[o],{open:c,close:h}=a;s.push({from:c.pos-l.open.length,to:c.pos+c.margin},{from:h.pos-h.margin,to:h.pos+l.close.length})}return{changes:s}}return null}function xC(i,e,t=e.selection.ranges){let r=[],n=-1;e:for(let{from:s,to:o}of t){let a=r.length,l=1e9,c;for(let h=s;h<=o;){let u=e.doc.lineAt(h);if(c==null&&(c=bd(e,u.from).line,!c))continue e;if(u.from>n&&(s==o||o>u.from)){n=u.from;let f=/^\s*/.exec(u.text)[0].length,d=f==u.length,O=u.text.slice(f,f+c.length)==c?f:-1;f<u.text.length&&f<l&&(l=f),r.push({line:u,comment:O,token:c,indent:f,empty:d,single:!1})}h=u.to+1}if(l<1e9)for(let h=a;h<r.length;h++)r[h].indent<r[h].line.text.length&&(r[h].indent=l);r.length==a+1&&(r[a].single=!0)}if(i!=2&&r.some(s=>s.comment<0&&(!s.empty||s.single))){let s=[];for(let{line:a,token:l,indent:c,empty:h,single:u}of r)(u||!h)&&s.push({from:a.from+c,insert:l+" "});let o=e.changes(s);return{changes:o,selection:e.selection.map(o,1)}}else if(i!=1&&r.some(s=>s.comment>=0)){let s=[];for(let{line:o,comment:a,token:l}of r)if(a>=0){let c=o.from+a,h=c+l.length;o.text[h-o.from]==" "&&h++,s.push({from:c,to:h})}return{changes:s}}return null}var pd=$t.define(),Ql=$t.define(),SC=q.define(),_x=q.define({combine(i){return Mt(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)})}}),Rx=be.define({create(){return qr.empty},update(i,e){let t=e.state.facet(_x),r=e.annotation(pd);if(r){let l=mi.fromTransaction(e,r.selection),c=r.side,h=c==0?i.undone:i.done;return l?h=Pl(h,h.length,t.minDepth,l):h=Zx(h,e.startState.selection),new qr(c==0?r.rest:h,c==0?h:r.rest)}let n=e.annotation(Ql);if((n=="full"||n=="before")&&(i=i.isolate()),e.annotation(Xe.addToHistory)===!1)return e.changes.empty?i:i.addMapping(e.changes.desc);let s=mi.fromTransaction(e),o=e.annotation(Xe.time),a=e.annotation(Xe.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 qr(i.done.map(mi.fromJSON),i.undone.map(mi.fromJSON))}});function Ax(i={}){return[Rx,_x.of(i),M.domEventHandlers({beforeinput(e,t){let r=e.inputType=="historyUndo"?eo:e.inputType=="historyRedo"?jn:null;return r?(e.preventDefault(),r(t)):!1}})]}function kl(i,e){return function({state:t,dispatch:r}){if(!e&&t.readOnly)return!1;let n=t.field(Rx,!1);if(!n)return!1;let s=n.pop(i,t,e);return s?(r(s),!0):!1}}var eo=kl(0,!1),jn=kl(1,!1),vC=kl(0,!0),yC=kl(1,!0);var mi=class i{constructor(e,t,r,n,s){this.changes=e,this.effects=t,this.mapped=r,this.startSelection=n,this.selectionsAfter=s}setSelAfter(e){return new i(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,t,r;return{changes:(e=this.changes)===null||e===void 0?void 0:e.toJSON(),mapped:(t=this.m Line truncated
Tags : ${s}`,u.style.whiteSpace="pre-wrap",u.style.fontFamily="monospace",u.style.background="#333",u.style.color="white",u.style.padding="2px 8px",u.style.borderRadius="4px",u.style.fontSize="12px",u.style.border="1px solid #555",u.style.pointerEvents="none",u.style.position="absolute",u.style.bottom="0",u.style.width="max-content",h.appendChild(u),{dom:h}}}},{hoverTime:10,hideOnChange:!0});var OC=i=>{let{state:e}=i,t=e.doc.lineAt(e.selection.main.from),r=bd(i.state,t.from);return r.line?mC(i):r.block?bC(i):!1};function gd(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 mC=gd(vC,0);var gC=gd(_x,0);var bC=gd((i,e)=>_x(i,e,SC(e)),0);function bd(i,e){let t=i.languageDataAt("commentTokens",e,1);return t.length?t[0]:{}}var eo=50;function xC(i,{open:e,close:t},r,n){let s=i.sliceDoc(r-eo,r),o=i.sliceDoc(n,n+eo),a=/\s*$/.exec(s)[0].length,l=/^\s*/.exec(o)[0].length,c=s.length-a;if(s.slice(c-e.length,c)==e&&o.slice(l,l+t.length)==t)return{open:{pos:r-a,margin:a&&1},close:{pos:n+l,margin:l&&1}};let h,u;n-r<=2*eo?h=u=i.sliceDoc(r,n):(h=i.sliceDoc(r,r+eo),u=i.sliceDoc(n-eo,n));let f=/^\s*/.exec(h)[0].length,d=/\s*$/.exec(u)[0].length,O=u.length-d-t.length;return h.slice(f,f+e.length)==e&&u.slice(O,O+t.length)==t?{open:{pos:r+f+e.length,margin:/\s/.test(h.charAt(f+e.length))?1:0},close:{pos:n-d-t.length,margin:/\s/.test(u.charAt(O-1))?1:0}}:null}function SC(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 _x(i,e,t=e.selection.ranges){let r=t.map(s=>bd(e,s.from).block);if(!r.every(s=>s))return null;let n=t.map((s,o)=>xC(e,r[o],s.from,s.to));if(i!=2&&!n.every(s=>s))return{changes:e.changes(t.map((s,o)=>n[o]?[]:[{from:s.from,insert:r[o].open+" "},{from:s.to,insert:" "+r[o].close}]))};if(i!=1&&n.some(s=>s)){let s=[];for(let o=0,a;o<n.length;o++)if(a=n[o]){let l=r[o],{open:c,close:h}=a;s.push({from:c.pos-l.open.length,to:c.pos+c.margin},{from:h.pos-h.margin,to:h.pos+l.close.length})}return{changes:s}}return null}function vC(i,e,t=e.selection.ranges){let r=[],n=-1;e:for(let{from:s,to:o}of t){let a=r.length,l=1e9,c;for(let h=s;h<=o;){let u=e.doc.lineAt(h);if(c==null&&(c=bd(e,u.from).line,!c))continue e;if(u.from>n&&(s==o||o>u.from)){n=u.from;let f=/^\s*/.exec(u.text)[0].length,d=f==u.length,O=u.text.slice(f,f+c.length)==c?f:-1;f<u.text.length&&f<l&&(l=f),r.push({line:u,comment:O,token:c,indent:f,empty:d,single:!1})}h=u.to+1}if(l<1e9)for(let h=a;h<r.length;h++)r[h].indent<r[h].line.text.length&&(r[h].indent=l);r.length==a+1&&(r[a].single=!0)}if(i!=2&&r.some(s=>s.comment<0&&(!s.empty||s.single))){let s=[];for(let{line:a,token:l,indent:c,empty:h,single:u}of r)(u||!h)&&s.push({from:a.from+c,insert:l+" "});let o=e.changes(s);return{changes:o,selection:e.selection.map(o,1)}}else if(i!=1&&r.some(s=>s.comment>=0)){let s=[];for(let{line:o,comment:a,token:l}of r)if(a>=0){let c=o.from+a,h=c+l.length;o.text[h-o.from]==" "&&h++,s.push({from:c,to:h})}return{changes:s}}return null}var pd=$t.define(),Ql=$t.define(),yC=q.define(),Rx=q.define({combine(i){return Mt(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)})}}),Ax=be.define({create(){return qr.empty},update(i,e){let t=e.state.facet(Rx),r=e.annotation(pd);if(r){let l=mi.fromTransaction(e,r.selection),c=r.side,h=c==0?i.undone:i.done;return l?h=Pl(h,h.length,t.minDepth,l):h=Xx(h,e.startState.selection),new qr(c==0?r.rest:h,c==0?h:r.rest)}let n=e.annotation(Ql);if((n=="full"||n=="before")&&(i=i.isolate()),e.annotation(Xe.addToHistory)===!1)return e.changes.empty?i:i.addMapping(e.changes.desc);let s=mi.fromTransaction(e),o=e.annotation(Xe.time),a=e.annotation(Xe.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 qr(i.done.map(mi.fromJSON),i.undone.map(mi.fromJSON))}});function Ex(i={}){return[Ax,Rx.of(i),M.domEventHandlers({beforeinput(e,t){let r=e.inputType=="historyUndo"?to:e.inputType=="historyRedo"?jn:null;return r?(e.preventDefault(),r(t)):!1}})]}function kl(i,e){return function({state:t,dispatch:r}){if(!e&&t.readOnly)return!1;let n=t.field(Ax,!1);if(!n)return!1;let s=n.pop(i,t,e);return s?(r(s),!0):!1}}var to=kl(0,!1),jn=kl(1,!1),wC=kl(0,!0),PC=kl(1,!0);var mi=class i{constructor(e,t,r,n,s){this.changes=e,this.effects=t,this.mapped=r,this.startSelection=n,this.selectionsAfter=s}setSelAfter(e){return new i(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,t,r;return{changes:(e=this.changes)===null||e===void 0?void 0:e.toJSON(),mapped:(t=this.m Line truncated
<div class="form-group"><label>Tab size: <input type="number" id="setting_tabSize" min="1" max="40" value="${i.tabSize}" style="width:4em"></label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_tabsToSpaces" ${i.tabsToSpaces?"checked":""}> Insert spaces when pressing TAB</label></div>
<div class="checkbox"><label><input type="checkbox" id="setting_highlightSpecialChars" ${i.highlightSpecialChars?"checked":""}> Highlight special characters</label></div>
@@ -28,23 +28,23 @@ Tags : ${s}`,u.style.whiteSpace="pre-wrap",u.style.fontFamily="monospace",u.sty
<h5>Internal</h5>
<div class="checkbox"><label><input type="checkbox" id="setting_debugHighlightTags" ${i.debugHighlightTags?"checked":""}> Debug editor syntax highlighting tags</label></div>
`:""}
</form>`,buttons:{cancel:{label:"Cancel",className:"btn-default"},ok:{label:"Save",className:"btn-primary",callback:()=>{i.tabSize=parseInt($("#setting_tabSize").val())||8,i.tabsToSpaces=$("#setting_tabsToSpaces").is(":checked"),i.highlightSpecialChars=$("#setting_highlightSpecialChars").is(":checked"),i.highlightWhitespace=$("#setting_highlightWhitespace").is(":checked"),i.highlightTrailingWhitespace=$("#setting_highlightTrailingWhitespace").is(":checked"),i.closeBrackets=$("#setting_closeBrackets").is(":checked"),i.showLineNumbers=$("#setting_showLineNumbers").is(":checked"),e&&(i.debugHighlightTags=$("#setting_debugHighlightTags").is(":checked")),i.showStatusBar=$("#setting_showStatusBar").is(":checked"),M_(i),D_(i),Ko(i.showStatusBar)}}}})}function El(){return typeof navigator!="undefined"?navigator.storage:null}function W_(i){var e=i!==void 0?i:El();return!!(e&&typeof e.persist=="function")}async function I_(i){var e=i!==void 0?i:El();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 z_(i){var e=i!==void 0?i:El(),t={supported:W_(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 I_(e);return t.usage=r.usage,t.quota=r.quota,t}async function wd(i){var e=i!==void 0?i:El(),t=await z_(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 V_(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 yS(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 "+yS(i.usage)+" of the "+yS(i.quota)+" your browser allows."}var yd="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 PS(i){switch(i||V_()){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 Y_(){return"This browser doesn't support persistent storage, so it may discard your local file edits when it needs disk space. "+yd}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. ")+yd:r="Your browser has not granted persistent storage, so it may discard your local file edits when it needs disk space.<br><br>"+PS()+"<br><br>"+yd:r=Y_(),t?r+"<br><br>"+t:r}function kS(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>"+PS():"")}var CS=Th(Ih());var ro=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.has(r.offset)||this.offset2loc.set(r.offset,r),this.line2offset.has(r.line)||this.line2offset.set(r.line,r.offset));this.sortedOffsets=Array.from(this.offset2loc.keys()).sort((n,s)=>n-s)}findLineForOffset(e,t){let r=this.sortedOffsets;for(var n=0,s=r.length-1,o=-1;n<=s;){var a=n+s>>1;r[a]<=e?(o=a,n=a+1):s=a-1}if(o<0)return null;var l=r[o];return e-l>t?null:this.offset2loc.get(l)}lineCount(){return this.lines.length}};function $S(i){return"errors"in i}function TS(i){return"output"in i}var Zl=class{constructor(e){this.preset_id=ut(e)}async getRemoteFile(e){return new Promise((t,r)=>gs(e,t,Rr(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 qn=class{constructor(e,t){this.basefs=eLine truncated
</form>`,buttons:{cancel:{label:"Cancel",className:"btn-default"},ok:{label:"Save",className:"btn-primary",callback:()=>{i.tabSize=parseInt($("#setting_tabSize").val())||8,i.tabsToSpaces=$("#setting_tabsToSpaces").is(":checked"),i.highlightSpecialChars=$("#setting_highlightSpecialChars").is(":checked"),i.highlightWhitespace=$("#setting_highlightWhitespace").is(":checked"),i.highlightTrailingWhitespace=$("#setting_highlightTrailingWhitespace").is(":checked"),i.closeBrackets=$("#setting_closeBrackets").is(":checked"),i.showLineNumbers=$("#setting_showLineNumbers").is(":checked"),e&&(i.debugHighlightTags=$("#setting_debugHighlightTags").is(":checked")),i.showStatusBar=$("#setting_showStatusBar").is(":checked"),W_(i),I_(i),Ko(i.showStatusBar)}}}})}function El(){return typeof navigator!="undefined"?navigator.storage:null}function z_(i){var e=i!==void 0?i:El();return!!(e&&typeof e.persist=="function")}async function V_(i){var e=i!==void 0?i:El();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 Y_(i){var e=i!==void 0?i:El(),t={supported:z_(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 V_(e);return t.usage=r.usage,t.quota=r.quota,t}async function wd(i){var e=i!==void 0?i:El(),t=await Y_(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 j_(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 wS(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 PS(i){return i.usage==null&&i.quota==null?"":"This site is using "+wS(i.usage)+" of the "+wS(i.quota)+" your browser allows."}var yd="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 QS(i){switch(i||j_()){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 B_(){return"This browser doesn't support persistent storage, so it may discard your local file edits when it needs disk space. "+yd}function kS(i,e){var t=PS(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. ")+yd:r="Your browser has not granted persistent storage, so it may discard your local file edits when it needs disk space.<br><br>"+QS()+"<br><br>"+yd:r=B_(),t?r+"<br><br>"+t:r}function $S(i){return"Your browser ran out of space for this site, so your last edit may not have been saved.<br><br>"+PS(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>"+QS():"")}var _S=Th(Ih());var qn=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.has(r.offset)||this.offset2loc.set(r.offset,r),this.line2offset.has(r.line)||this.line2offset.set(r.line,r.offset));this.sortedOffsets=Array.from(this.offset2loc.keys()).sort((n,s)=>n-s)}findLineForOffset(e,t){let r=this.sortedOffsets;for(var n=0,s=r.length-1,o=-1;n<=s;){var a=n+s>>1;r[a]<=e?(o=a,n=a+1):s=a-1}if(o<0)return null;var l=r[o];return e-l>t?null:this.offset2loc.get(l)}lineCount(){return this.lines.length}};function TS(i){return"errors"in i}function CS(i){return"output"in i}var Zl=class{constructor(e){this.preset_id=ut(e)}async getRemoteFile(e){return new Promise((t,r)=>bs(e,t,Rr(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 Gn=class{constructor(e,t){this.basefs=eLine truncated
=====
[Open this project in 8bitworkshop](http://8bitworkshop.com/redir.html?platform=$PLATFORM&githubURL=$GITHUBURL&file=$MAINFILE).
`;function Gr(){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 no(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 Dl=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=no(e);if(!t)throw new Error("Please enter a valid GitHub URL.");var r=Gr()[t.repopath],n=t.branch||r&&r.branch,s=this.github.repos(t.user,t.repo);try{n=(await s.fetch()).defaultBranch||"master"}catch(a){console.log("could not fetch default branch: "+a),n="main"}console.log("branch =",n);var o={url:e,user:t.user,reponame:t.repo,repopath:t.repopath,branch:n,subtreepath:t.subtreepath,prefix:"",repo:s,platform_id:this.project?this.project.platform_id:r?r.platform_id:null};return o}getGithubHEADTree(e){var t;return this.getGithubSession(e).then(r=>(t=r,t.repo.git.refs.heads(t.branch).fetch())).then(r=>(t.head=r,t.sha=r.object.sha,t.repo.git.trees(t.sha).fetch())).then(r=>{if(t.subtreepath){for(let n of r.tree)if(n.type=="tree"&&n.path==t.subtreepath&&n.sha)return t.repo.git.trees(n.sha).fetch();throw Error("Cannot find subtree '"+t.subtreepath+"' in tree "+r.sha)}return r}).then(r=>(t.tree=r,t))}bind(e,t){var r="__repo__"+e.repopath;if(t){var n={url:e.url,branch:e.branch,platform_id:e.platform_id,mainPath:e.mainPath,sha:e.sha};console.log("storing",n),localStorage.setItem(r,JSON.stringify(n))}else localStorage.removeItem(r)}import(e){var t;return this.getGithubSession(e).then(r=>(t=r,t.repo.contents("README.md").read())).catch(r=>(console.log(r),console.log("no README.md found"),t.repo.fetch().then(n=>""))).then(r=>{var n;if(n=/8bitworkshop.com[^)]+file=([^)&]+)/.exec(r),n&&n[1]&&(console.log("main path: '"+n[1]+"'"),t.mainPath=n[1]),n=/8bitworkshop.com[^)]+platform=([A-Za-z0-9._\-]+)/.exec(r),n){if(console.log("platform id: '"+n[1]+"'"),t.platform_id&&!t.platform_id.startsWith(n[1]))throw Error("Platform mismatch: Repository is '"+n[1]+"', you have '"+t.platform_id+"' selected.");t.platform_id=n[1]}return this.bind(t,!0),t})}pull(e,t){var r;return this.getGithubHEADTree(e).then(n=>{r=n;let s=[];return r.paths=[],r.tree.tree.forEach(o=>{if(console.log(o.path,o.type,o.size),r.paths.push(o.path),o.type=="blob"&&!this.isFileIgnored(o.path)){var a=r.repo.git.blobs(o.sha).fetch().then(l=>{var c=r.prefix+o.path,h=o.size,u=l.encoding,f=l.content;if(l.encoding=="base64"){var d=Fo(atob(f)),O=Rr(o.path,d);f=O?d:No(d)}return l.size!=f.length&&(f=f.slice(0,l.size)),(t||this.store).setItem(c,f)});s.push(a)}else console.log("ignoring "+o.path)}),Promise.all(s)}).then(n=>r)}importAndPull(e){return this.import(e).then(t=>this.pull(e))}publish(e,t,r,n){var s,o=this.project.platform_id,a=this.project.stripLocalPath(this.project.mainPath);return this.github.user.repos.create({name:e,description:t,private:n,auto_init:!1,license_template:r}).then(l=>{s=l;var c=j_;c=c.replace(/\$NAME/g,encodeURIComponent(e)),c=c.replace(/\$PLATFORM/g,encodeURIComponent(o)),c=c.replace(/\$GITHUBURL/g,encodeURIComponent(s.htmlUrl)),c=c.replace(/\$MAINFILE/g,encodeURIComponent(a));var h={message:"8bitworkshop: updated metadata in README.md",content:btoa(c)};return s.contents("README.md").add(h)}).then(()=>this.getGithubSession(s.htmlUrl))}commit(e,t,r){var n;return t||(t="updated from 8bitworkshop.com"),this.getGithubHEADTree(e).then(s=>{if(n=s,n.subtreepath)throw Error("Sorry, right now you can only commit files to the root directory of a repository.");return Promise.all(r.map(o=>typeof o.data=="string"?n.repo.git.blobs.create({content:o.data,encoding:"utf-8"}):n.repo.git.blobs.create({content:btoa(Uo(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=Fe()+".bin",l=Fe()+".wav";o.writeFile(a,wt(),{encoding:"binary"});var c=["-2bc",a+","+e.toString(16),l];s.callMain(c);var h=o.readFile(l,{encoding:"binary"});if(h){var u=new Blob([h],{type:"audio/wav"});(0,Ri.saveAs)(u,l),r+="Then connect your audio output to the cassette input, turn up the volume, and play the audio file.",ft(r)}})}function N_(i){Ut("lib/makewav.js").then(()=>{let e="",t=function(a){e+=a+`
`};var r=ht(Fe());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,wt(),{encoding:"binary"})}}).ready.then(a=>{let l=[n];a.run(l),console.log(e);let h=a.FS.readFile(s,{encoding:"binary"});if(h){let u=new Blob([h],{type:"audio/wav"});(0,Ri.saveAs)(u,s),e+=`
Connect your audio output to the SuperCharger input, turn up the volume, and play the audio file.`,ft(e)}})})}function q_(i){var e=ht(Fe());let t=e+".tap",r=new Hr(e),n=new Wl({sine_wave:!0}),s=wt(),o=s[0]+s[1]*256;s=s.slice(2),r.setContent({data:s,startAddress:o,type:Hr.FILE_TYPE_NON_RELOCATABLE}),r.generateSound(n);let a=n.getTAPData();if(a){let l=new Blob([a],{type:"application/octet-stream"});(0,Ri.saveAs)(l,t)}}function Qd(){switch(ut(J)){case"vcs":return N_;case"apple2":return U_;case"c64":return q_}}function RS(i){if(wt()==null)return de("Please fix errors before exporting."),!0;var e=Qd();if(e===void 0)return de("Cassette export is not supported on this platform."),!0;e(i)}function AS(i){if(wt()==null)return de("Please finish compiling with no errors before downloading ROM."),!0;var e=ht(Fe());if(x.getDownloadFile){var t=x.getDownloadFile(),e=ht(Fe());(0,Ri.saveAs)(t.blob,e+t.extension)}else if(wt()instanceof Uint8Array){var r=new Blob([wt()],{type:"application/octet-stream"}),n=x.getROMExtension&&x.getROMExtension(wt())||"-"+ut(J)+".bin";(0,Ri.saveAs)(r,e+n)}else de(`The "${J}" platform doesn't have downloadable ROMs.`)}function ES(i){var e=X.getCurrentText();if(!e)return!1;var t=new Blob([e],{type:"text/plain;charset=utf-8"});(0,Ri.saveAs)(t,WS(),{autoBom:!1})}async function ZS(){let i=(await import("./jszip.min-EENSZHRN.js")).default;return new i}async function XS(i){var e=await ZS();Fi().iterateFiles((t,r)=>{r&&e.file(Ke(t),r)}),e.generateAsync({type:"blob"}).then(t=>{(0,Ri.saveAs)(t,Fe()+"-"+ut(J)+".zip")})}function LS(i){let e=x.getDebugSymbolFile&&x.getDebugSymbolFile();if(!e){de("This project does not have debug information.");return}var t=ht(Fe());(0,Ri.saveAs)(e.blob,t+e.extension,{autoBom:!1})}async function MS(i){var e=await ZS(),t=await xr().keys();_e(!0);try{var r=0;await Promise.all(t.map(s=>xr().getItem(s).then(o=>{li(r++/(t.length+1)),o&&e.file(s,o)})));var n=await e.generateAsync({type:"blob"});(0,Ri.saveAs)(n,ut(J)+"-all.zip")}finally{_e(!1)}}var Pd=!1;function DS(){Pd||Ut("lib/gif.js").then(()=>{var i=$("#emulator").find("canvas")[0];if(!i){de("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=>{li(l)}),t.on("finished",l=>{r.attr("src",URL.createObjectURL(l)),_e(!1),x.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"),_e(!0),x.pause(),t.render(),Pd=!1):(t.addFrame(i,{delay:n,copy:!0}),setTimeout(a,n),Pd=!0)};a()})}var kd;async function Kr(){if(!kd){await Ut("lib/octokat.js"),await Ut("https://www.gstatic.com/firebasejs/8.8.1/firebase-app.js"),await Ut("https://www.gstatic.com/firebasejs/8.8.1/firebase-auth.js"),await Ut("https://8bitworkshop.com/config.js");var i=qo("__github_key");kd=new Dl(Octokat,i,xr(),Fi()),console.log("loaded github service")}return kd}function oo(){var i=(Ge||"").split("/");return i.length!=2?(de("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 ao(i,e){var t,r=no(i);if(!r){de("Could not parse GitHub URL.");return}var n=Gr()[r.repopath];if(!(n&&!confirm("You've already imported "+r.repopath+" -- do you want to replace all local files?"))){_e(!0);var s=Ml(r.repopath);li(.25);var o=await Kr();return o.import(i).then(a=>(t=a,li(.75),o.pull(i,s))).then(a=>{_e(!1),Jr(e,{repo:r.repopath})}).catch(a=>{_e(!1),console.log(a),de("Could not import "+i+". "+a)})}}async function IS(i){var e=await Kr();e.login().then(()=>{ft("You are signed in to GitHub.")}).catch(t=>{de("Could not sign in."+t)})}async function zS(i){var e=await Kr();e.logout().then(()=>{ft("You are logged out of GitHub.")})}function VS(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"),ao(r,!1)})}function YS(i){if(!(Ge&&!confirm("This project ("+Fi().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(ht(Ke(Fi().mainPath))),e.modal("show"),t.off("click").on("click",async()=>{var r=$("#githubRepoName").val()+"",n=$("#githubRepoDesc").val()+"",s=$("#githubRepoPrivate").val()=="private",o=$("#githubRepoLicense").val()+"",a;ifLine truncated
`);for(let o=0;o<s.length;o++){let a=s[o],l=o+1,c=a.match(/(?:function|func|def|proc)\s+(\w+)/i);c&&n.push({id:`${e}:${l}:${c[1]}`,name:c[1],kind:"func",source:r,file:e,line:l});let h=a.match(/(?:var|let|const|global)\s+(\w+)/i);h&&n.push({id:`${e}:${l}:${h[1]}`,name:h[1],kind:"var",source:r,file:e,line:l});let u=a.match(/(?:struct|class|interface|type)\s+(\w+)/i);u&&n.push({id:`${e}:${l}:${u[1]}`,name:u[1],kind:"type",source:r,file:e,line:l});let f=a.match(/^\s*(\w+)\s*:/);f&&!a.trim().startsWith("//")&&n.push({id:`${e}:${l}:${f[1]}`,name:f[1],kind:"label",source:r,file:e,line:l});let d=a.match(/#define\s+(\w+)/i);d&&n.push({id:`${e}:${l}:${d[1]}`,name:d[1],kind:"macro",source:r,file:e,line:l});let O=a.match(/^\s*(\w+)\s*(?:=|equ)\s+/i);O&&n.push({id:`${e}:${l}:${O[1]}`,name:O[1],kind:"equate",source:r,file:e,line:l})}return n}var NS=()=>null;function qS(i){NS=i}function en(){return NS()}var Il=class{constructor(){this.id="project";this.kind="project";this.rebuilt=!1;this.index=new Am([])}async ready(){await this.index.init(),this.rebuilt||(this.rebuilt=!0,await this.rebuild())}query(e,t){let r=this.index.query(e,t),n=this.fulltextQuery(e,t),s=r.concat(n);return s.sort((o,a)=>a.score-o.score),s.slice(0,t)}fulltextQuery(e,t){if(e.length<2)return[];let r=e.toLowerCase(),n=[],s=Math.max(t,10),o=en();return o?(o.iterateFiles((a,l)=>{if(typeof l!="string")return;let c=l.split(`
`),h=0;for(let u=0;u<c.length;u++){let f=c[u],O=f.toLowerCase().indexOf(r);if(O>=0){let m=f.trim();if(!m)continue;if(n.push({record:{id:`text:${a}:${u+1}`,name:m.length>80?m.slice(0,80)+"\u2026":m,kind:"text",source:"project",file:a,line:u+1},score:200+Math.max(0,100-O*2),ranges:[O,O+e.length]}),++h>=s)break}}}),n):[]}async onFileChanged(e,t){let r=this.extractSymbolsFromFile(e,t,"project");this.index.pushRecords(r)}extractSymbolsFromFile(e,t,r){if(typeof t!="string")return[];let n=this.detectEditorStyle(e);return $d(t,e,n,r)}detectEditorStyle(e){var r;switch((r=e.split(".").pop())==null?void 0:r.toLowerCase()){case"c":case"h":return"text/x-csrc";case"asm":case"a65":case"inc":return"6502";case"v":return"verilog";case"wiz":return"text/x-wiz";case"bas":case"basic":return"basic";case"fb":case"fastbasic":return"fastbasic";case"bac":case"bataribasic":return"bataribasic";case"i":return"inform6";case"d":return"dialog";default:return"text/x-csrc"}}async rebuild(){this.index.clear(),await this.index.init();let e=en();if(!e)return;let t=[];e.iterateFiles((r,n)=>{if(typeof n!="string")return;let s=this.detectEditorStyle(r),o=$d(n,r,s,"project");t.push(...o)}),this.index.pushRecords(t)}};var K_=new Set(["h","hh","hpp","inc","asm","a65","s","mac","defs","def","equ","i","m","c","bas","txt"]),J_=20,zl=class{constructor(){this.id="toolchain";this.kind="toolchain";this.fsName=null;this.files=[];this.loaded=new Map;this.readyDone=!1;this.loadIdx=0;this.batchSize=J_}async ready(){if(this.readyDone)return;this.readyDone=!0;let e=en();if(!e)return;let t;try{t=e.getToolForFilename?e.getToolForFilename(e.mainPath):""}catch(o){t=""}let r=na(t,e.platform_id),n=ra(t,e.platform_id);if(!r||!n.length)return;this.fsName=r;let s=new Set;for(let o of n){let a=await this.listFiles(o);for(let l of a)this.isSearchable(l)&&!s.has(l)&&(s.add(l),this.files.push(l))}this.files.sort()}isValid(){return this.fsName!=null&&this.files.length>0}async listFiles(e){let t=en();if(!t||!this.fsName||!t.queryWorker)return[];try{let r={preload_fs:this.fsName,listshared:e,updates:[],buildsteps:[]},n=await t.queryWorker(r),s=n&&n.output;return Array.isArray(s)?s:[]}catch(r){return console.debug("Toolchain list error:",r),[]}}async readFile(e){let t=en();if(!t||!this.fsName||!t.queryWorker)return null;try{let r={preload_fs:this.fsName,readshared:e,updates:[],buildsteps:[]},n=await t.queryWorker(r),s=n&&n.output;return s instanceof Uint8Array&&s.length>0?new TextDecoder().decode(s):null}catch(r){return console.debug("Toolchain read error:",r),null}}isSearchable(e){let t=e.split("/").pop()||e,r=t.lastIndexOf(".");return r<0?!0:K_.has(t.substring(r+1).toLowerCase())}async ensureBatch(){let e=en();if(!(!e||!e.queryWorker))for(;this.loadIdx<this.files.length;){let t=this.files.slice(this.loadIdx,this.loadIdx+this.batchSize);this.loadIdx+=t.length;let r=await Promise.all(t.map(async n=>{let s=await this.readFile(n);return[n,s]}));for(let[n,s]of r)s!=null&&this.loaded.set(n,s);if(this.loaded.size>0||this.loadIdx>=this.files.length)break}}async query(e,t){return await this.ready(),!this.isValid()||e.length<2?[]:(await this.ensureBatch(),this.textQuery(e,t))}textQuery(e,t){if(e.length<2)return[];let r=e.toLowerCase(),n=[],s=Math.max(t,5);for(let[o,a]of this.loaded){let l=a.split(`
`),c=0;for(let h=0;h<l.length;h++){let u=l[h],d=u.toLowerCase().indexOf(r);if(d>=0){let O=u.trim();if(!O)continue;if(n.push({record:{id:`toolchain:${o}:${h+1}`,name:O.length>80?O.slice(0,80)+"\u2026":O,kind:"text",source:"toolchain",file:o,line:h+1},score:200+Math.max(0,100-d*2),ranges:[d,d+e.length]}),++c>=s)break}}}return n.sort((o,a)=>a.score-o.score),n.slice(0,t)}invalidate(){this.fsName=null,this.files=[],this.loaded.clear(),this.readyDone=!1,this.loadIdx=0}};var eR=50,Td=class i{constructor(){this.sources=new Map;this.projectSource=new Il,this.toolchainSource=new zl,this.docsSource=new Em,this.sources.set("project",this.projectSource),this.sources.set("toolchain",this.toolchainSource),this.sources.set("docs",this.docsSource)}static getInstance(){return i.instance||(i.instance=new i),i.instance}parseQuery(e){return e.startsWith("#")?{needle:e.slice(1).trim(),filter:"symbols"}:e.startsWith(">")?{needle:e.slice(1).trim(),filter:"files"}:e.startsWith("?")?{needle:e.slice(1).trim(),filter:"docs"}:{needle:e,filter:"all"}}async query(e,t=eR){let{needle:r,filter:n}=this.parseQuery(e);if(!r)return[];let s=[],o=[];n==="docs"?o.push(this.docsSource):n==="files"?o.push(this.projectSource):n==="symbols"?(o.push(this.projectSource),o.push(this.toolchainSource)):(o.push(this.projectSource),o.push(this.toolchainSource),o.push(this.docsSource));for(let h of o)try{await h.ready();let u=await h.query(r,t-s.length);s.push(...u)}catch(u){console.debug("Search source error:",u)}s.sort((h,u)=>u.score-h.score);let a={project:1.3,toolchain:1,docs:.7};for(let h of s){let u=a[h.record.source]||1;h.score*=u}s.sort((h,u)=>u.score-h.score);let l=new Set;return s.filter(h=>l.has(h.record.id)?!1:(l.add(h.record.id),!0)).slice(0,t)}},GS=Td.getInstance();var HS=typeof String.prototype.normalize=="function"?i=>i.normalize("NFKD"):i=>i,vr=class{constructor(e,t,r=0,n=e.length,s,o){this.test=o,this.value={from:0,to:0,precise:!1},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=e.iterRange(r,n),this.bufferStart=r,this.normalize=s?a=>s(HS(a)):HS,this.query=this.normalize(t)}peek(){if(this.bufferPos==this.buffer.length){if(this.bufferStart+=this.buffer.length,this.iter.next(),this.iter.done)return-1;this.bufferPos=0,this.buffer=this.iter.value}return hi(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let e=this.peek();if(e<0)return this.done=!0,this;let t=Oa(e),r=this.bufferStart+this.bufferPos;this.bufferPos+=or(e);let n=this.normalize(t);if(n.length)for(let s=0,o=r,a=!0;;s++){let l=n.charCodeAt(s),c=this.match(l,o,a,this.bufferPos+this.bufferStart,s==n.length-1);if(c)return this.value=c,this;if(s==n.length-1)break;a&&s<t.length&&t.charCodeAt(s)==l?o++:a=!1}}}match(e,t,r,n,s){let o=null;for(let a=0;a<this.matches.length;){let l=this.matches[a],c=!1;this.query.charCodeAt(l.index)==e&&(l.index==this.query.length-1?o={from:l.from,to:n,precise:s&&l.precise}:(l.index++,c=!0)),c?a++:this.matches.splice(a,1)}return this.query.charCodeAt(0)==e&&(this.query.length==1?o={from:t,to:n,precise:r&&s}:this.matches.push({from:t,index:1,precise:r})),o&&this.test&&!this.test(o.from,o.to,this.buffer,this.bufferStart)&&(o=null),o}};typeof Symbol!="undefined"&&(vr.prototype[Symbol.iterator]=function(){return this});var ev={from:-1,to:-1,match:/.*/.exec(""),precise:!0},Xd="gm"+(/x/.unicode==null?"":"u"),jl=class{constructor(e,t,r,n=0,s=e.length){if(this.text=e,this.to=s,this.curLine="",this.done=!1,this.value=ev,/\\[sWDnr]|\n|\r|\[\^/.test(t))return new Fl(e,t,r,n,s);this.re=new RegExp(t,Xd+(r!=null&&r.ignoreCase?"i":"")),this.test=r==null?void 0:r.test,this.iter=e.iter();let o=e.lineAt(n);this.curLineStart=o.from,this.matchPos=Ul(e,n),this.getLine(this.curLineStart)}getLine(e){this.iter.next(e),this.iter.lineBreak?this.curLine="":(this.curLine=this.iter.value,this.curLineStart+this.curLine.length>this.to&&(this.curLine=this.curLine.slice(0,this.to-this.curLineStart)),this.iter.next())}nextLine(){this.curLineStart=this.curLineStart+this.curLine.length+1,this.curLineStart>this.to?this.curLine="":this.getLine(0)}next(){for(let e=this.matchPos-this.curLineStart;;){this.re.lastIndex=e;let t=this.matchPos<=this.to&&this.re.exec(this.curLine);if(t){let r=this.curLineStart+t.index,n=r+t[0].length;if(this.matchPos=Ul(this.text,n+(r==n?1:0)),r==this.curLineStart+this.curLine.length&&this.nextLine(),(r<n||r>this.value.to)&&(!this.test||this.test(r,n,t)))return this.value={from:r,to:n,precise:!0,match:t},this;e=this.matchPos-this.curLineStart}else if(this.curLineStart+this.curLine.length<this.to)this.nextLine(),e=0;else return this.done=!0,this}}},Cd=new WeakMap,Bl=class i{constructor(e,t){this.from=e,this.text=t}get to(){return this.from+this.text.length}static get(e,t,r){let n=Cd.get(e);if(!n||n.from>=r||n.to<=t){let a=new i(t,e.sliceString(t,r));return Cd.set(e,a),a}if(n.from==t&&n.to==r)return n;let{text:s,from:o}=n;return o>t&&(s=e.sliceString(t,o)+s,o=t),n.t 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 Rd(this):new _d(this)}getCursor(e,t=0,r){let n=e.doc?e:Oe.create({doc:e});return r==null&&(r=n.doc.length),this.regexp?Hn(this,n,t,r):Gn(this,n,t,r)}},ql=class{constructor(e){this.spec=e}};function uR(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 Gn(i,e,t,r){let n;return i.wholeWord&&(n=fR(e.doc,e.charCategorizer(e.selection.main.head))),i.test&&(n=uR(i.test,e,n)),new vr(e.doc,i.unquoted,t,r,i.caseSensitive?void 0:s=>s.toLowerCase(),n)}function fR(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(Gl(n,t-s))!=Te.Word||e(Hl(n,t-s))!=Te.Word)&&(e(Hl(n,r-s))!=Te.Word||e(Gl(n,r-s))!=Te.Word))}var _d=class extends ql{constructor(e){super(e)}nextMatch(e,t,r){let n=Gn(this.spec,e,r,e.doc.length).nextOverlapping();if(n.done){let s=Math.min(e.doc.length,t+this.spec.unquoted.length);n=Gn(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=Gn(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=Gn(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=Gn(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 dR(i,e,t){return(r,n,s)=>(!t||t(r,n,s))&&i(s[0],e,r,n)}function Hn(i,e,t,r){let n;return i.wholeWord&&(n=pR(e.charCategorizer(e.selection.main.head))),i.test&&(n=dR(i.test,e,n)),new jl(e.doc,i.search,{ignoreCase:!i.caseSensitive,test:n},t,r)}function Gl(i,e){return i.slice(Ye(i,e,!1),e)}function Hl(i,e){return i.slice(e,Ye(i,e))}function pR(i){return(e,t,r)=>!r[0].length||(i(Gl(r.input,r.index))!=Te.Word||i(Hl(r.input,r.index))!=Te.Word)&&(i(Hl(r.input,r.index+r[0].length))!=Te.Word||i(Gl(r.input,r.index+r[0].length))!=Te.Word)}var Rd=class extends ql{nextMatch(e,t,r){let n=Hn(this.spec,e,r,e.doc.length).next();return n.done&&(n=Hn(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=Hn(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=Hn(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=Hn(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)}},co=ie.define(),Dd=ie.define(),Sr=be.define({create(i){return new lo(Ad(i).create(),null)},update(i,e){for(let t of e.effects)t.is(co)?i=new lo(t.value.create(),i.panel):t.is(Dd)&&(i=new lo(i.query,t.value?Wd:null));return i},provide:i=>zs.from(i,e=>e.panel)});var lo=class{constructor(e,t){this.query=e,this.panel=t}},OR=V.mark({class:"cm-searchMatch"}),mR=V.mark({class:"cm-searchMatch cm-searchMatch-selected"}),gR=Ae.fromClass(class{constructor(i){this.view=i,this.decorations=this.highlight(i.state.field(Sr))}update(i){let e=i.state.field(Sr);(e!=i.startState.field(Sr)||i.docChanged||i.selectionSet||i.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:i,panel:e}){if(!e||!i.spec.valid)return V.none;let{view:t}=this,r=new ci;for(let n=0,s=t.visibleRanges,o=s.length;n<o;n++){let{from:a,to:l}=s[n];for(;n<o-1&&l>s[n+1].from-500;)l=s[++n].to;i.highlight(t.state,a,l,(c,h)=>{let u=t.state.selection.ranges.some(f=>f.from==c&&f.to==h);r.add(c,h,u?mR:OR)})}return r.finish()}},{decorations:i=>i.decorations});function ho(i){return e=>{let t=e.state.field(Sr,!1);return t&&t.query.spec.valid?i(e,t):ec(e)}}var Kn=ho((i,{query:e})=>{let{to:t}=i.state.selection.main,r=e.nextMatch(i.state,t,t);if(!r)return!1;let n=R.single(r.from,r.to),s=i.state.facet(tn);return i.dispatch({selection:n,effects:[Id(i,r),s.scrollToMatch(n.main,i)],userEvent:"select.search"}),rv(i),!0}),Kl=ho((i,{query:e})=>{let{state:t}=i,{from:r}=t.selection.main,n=e.prevMatch(t,r,r);if(!n) Line truncated
`+t.scrub(),s=this.advance(n);return s>-1&&s<n.length?this.complete(e,r,s):!1}finish(e,t){return(this.stage==2||this.stage==3)&&po(t.content,this.pos)==t.content.length?this.complete(e,t,t.content.length):!1}complete(e,t,r){return e.addLeafElement(t,we(Y.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(ny(e,this.pos,this.start,!0)))return-1;if(e.charCodeAt(this.pos)!=58)return this.stage=-1;this.elts.push(we(Y.LinkMark,this.pos+this.start,this.pos+this.start+1)),this.pos++}else if(this.stage==1){if(!this.nextStage(iy(e,po(e,this.pos),this.start)))return-1}else if(this.stage==2){let t=po(e,this.pos),r=0;if(t>this.pos){let n=ry(e,t,this.start);if(n){let s=yp(e,n.to-this.start);s>0&&(this.nextStage(n),r=s)}}return r||(r=yp(e,this.pos)),r>0&&r<e.length?r:-1}else return yp(e,this.pos)}}};function yp(i,e){for(;e<i.length;e++){let t=i.charCodeAt(e);if(t==10)break;if(!ni(t))return-1}return e}var Cp=class{nextLine(e,t,r){let n=t.depth<e.stack.length?-1:Uv(t),s=t.next;if(n<0)return!1;let o=we(Y.HeaderMark,e.lineStart+t.pos,e.lineStart+n);return e.nextLine(),e.addLeafElement(r,we(s==61?Y.SetextHeading1:Y.SetextHeading2,r.start,e.prevLineEnd(),[...e.parser.parseInline(r.content,r.start),o])),!0}finish(){return!1}},Hv={LinkReference(i,e){return e.content.charCodeAt(0)==91?new Tp(e):null},SetextHeading(){return new Cp}},ZA=[(i,e)=>Fv(e)>=0,(i,e)=>Yv(e)>=0,(i,e)=>jv(e)>=0,(i,e)=>Lp(e,i,!0)>=0,(i,e)=>Mp(e,i,!0)>=0,(i,e)=>Xp(e,i,!0)>=0,(i,e)=>Gv(e,i,!0)>=0],XA={text:"",end:0},_p=class{constructor(e,t,r,n){this.parser=e,this.input=t,this.ranges=n,this.line=new Qp,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=sc.create(Y.Document,0,this.lineStart,0,0),this.stack=[this.block],this.fragments=r.length?new Ep(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 Pp(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=sy(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=XA;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 "+Y[n.type]);let o=this.line.markers.length;if(!s(n,this,e)){this.line.markers.length>o&&(n.end=this.line.markers[this.line.markers.length-1].to),e.forward();break}e.forward()}}lineChunkAt(e){let t=this.input.chunk(e),r;if(this.input.lineChunks)r=t==`
`;function Gr(){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 no(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 Dl=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=no(e);if(!t)throw new Error("Please enter a valid GitHub URL.");var r=Gr()[t.repopath],n=t.branch||r&&r.branch,s=this.github.repos(t.user,t.repo);try{n=(await s.fetch()).defaultBranch||"master"}catch(a){console.log("could not fetch default branch: "+a),n="main"}console.log("branch =",n);var o={url:e,user:t.user,reponame:t.repo,repopath:t.repopath,branch:n,subtreepath:t.subtreepath,prefix:"",repo:s,platform_id:this.project?this.project.platform_id:r?r.platform_id:null};return o}getGithubHEADTree(e){var t;return this.getGithubSession(e).then(r=>(t=r,t.repo.git.refs.heads(t.branch).fetch())).then(r=>(t.head=r,t.sha=r.object.sha,t.repo.git.trees(t.sha).fetch())).then(r=>{if(t.subtreepath){for(let n of r.tree)if(n.type=="tree"&&n.path==t.subtreepath&&n.sha)return t.repo.git.trees(n.sha).fetch();throw Error("Cannot find subtree '"+t.subtreepath+"' in tree "+r.sha)}return r}).then(r=>(t.tree=r,t))}bind(e,t){var r="__repo__"+e.repopath;if(t){var n={url:e.url,branch:e.branch,platform_id:e.platform_id,mainPath:e.mainPath,sha:e.sha};console.log("storing",n),localStorage.setItem(r,JSON.stringify(n))}else localStorage.removeItem(r)}import(e){var t;return this.getGithubSession(e).then(r=>(t=r,t.repo.contents("README.md").read())).catch(r=>(console.log(r),console.log("no README.md found"),t.repo.fetch().then(n=>""))).then(r=>{var n;if(n=/8bitworkshop.com[^)]+file=([^)&]+)/.exec(r),n&&n[1]&&(console.log("main path: '"+n[1]+"'"),t.mainPath=n[1]),n=/8bitworkshop.com[^)]+platform=([A-Za-z0-9._\-]+)/.exec(r),n){if(console.log("platform id: '"+n[1]+"'"),t.platform_id&&!t.platform_id.startsWith(n[1]))throw Error("Platform mismatch: Repository is '"+n[1]+"', you have '"+t.platform_id+"' selected.");t.platform_id=n[1]}return this.bind(t,!0),t})}pull(e,t){var r;return this.getGithubHEADTree(e).then(n=>{r=n;let s=[];return r.paths=[],r.tree.tree.forEach(o=>{if(console.log(o.path,o.type,o.size),r.paths.push(o.path),o.type=="blob"&&!this.isFileIgnored(o.path)){var a=r.repo.git.blobs(o.sha).fetch().then(l=>{var c=r.prefix+o.path,h=o.size,u=l.encoding,f=l.content;if(l.encoding=="base64"){var d=Fo(atob(f)),O=Rr(o.path,d);f=O?d:No(d)}return l.size!=f.length&&(f=f.slice(0,l.size)),(t||this.store).setItem(c,f)});s.push(a)}else console.log("ignoring "+o.path)}),Promise.all(s)}).then(n=>r)}importAndPull(e){return this.import(e).then(t=>this.pull(e))}publish(e,t,r,n){var s,o=this.project.platform_id,a=this.project.stripLocalPath(this.project.mainPath);return this.github.user.repos.create({name:e,description:t,private:n,auto_init:!1,license_template:r}).then(l=>{s=l;var c=F_;c=c.replace(/\$NAME/g,encodeURIComponent(e)),c=c.replace(/\$PLATFORM/g,encodeURIComponent(o)),c=c.replace(/\$GITHUBURL/g,encodeURIComponent(s.htmlUrl)),c=c.replace(/\$MAINFILE/g,encodeURIComponent(a));var h={message:"8bitworkshop: updated metadata in README.md",content:btoa(c)};return s.contents("README.md").add(h)}).then(()=>this.getGithubSession(s.htmlUrl))}commit(e,t,r){var n;return t||(t="updated from 8bitworkshop.com"),this.getGithubHEADTree(e).then(s=>{if(n=s,n.subtreepath)throw Error("Sorry, right now you can only commit files to the root directory of a repository.");return Promise.all(r.map(o=>typeof o.data=="string"?n.repo.git.blobs.create({content:o.data,encoding:"utf-8"}):n.repo.git.blobs.create({content:btoa(Uo(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=Ue()+".bin",l=Ue()+".wav";o.writeFile(a,wt(),{encoding:"binary"});var c=["-2bc",a+","+e.toString(16),l];s.callMain(c);var h=o.readFile(l,{encoding:"binary"});if(h){var u=new Blob([h],{type:"audio/wav"});(0,Ri.saveAs)(u,l),r+="Then connect your audio output to the cassette input, turn up the volume, and play the audio file.",dt(r)}})}function G_(i){Ut("lib/makewav.js").then(()=>{let e="",t=function(a){e+=a+`
`};var r=tt(Ue());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,wt(),{encoding:"binary"})}}).ready.then(a=>{let l=[n];a.run(l),console.log(e);let h=a.FS.readFile(s,{encoding:"binary"});if(h){let u=new Blob([h],{type:"audio/wav"});(0,Ri.saveAs)(u,s),e+=`
Connect your audio output to the SuperCharger input, turn up the volume, and play the audio file.`,dt(e)}})})}function H_(i){var e=tt(Ue());let t=e+".tap",r=new Hr(e),n=new Wl({sine_wave:!0}),s=wt(),o=s[0]+s[1]*256;s=s.slice(2),r.setContent({data:s,startAddress:o,type:Hr.FILE_TYPE_NON_RELOCATABLE}),r.generateSound(n);let a=n.getTAPData();if(a){let l=new Blob([a],{type:"application/octet-stream"});(0,Ri.saveAs)(l,t)}}function Qd(){switch(ut(J)){case"vcs":return G_;case"apple2":return q_;case"c64":return H_}}function AS(i){if(wt()==null)return de("Please fix errors before exporting."),!0;var e=Qd();if(e===void 0)return de("Cassette export is not supported on this platform."),!0;e(i)}function ES(i){if(wt()==null)return de("Please finish compiling with no errors before downloading ROM."),!0;var e=tt(Ue());if(x.getDownloadFile){var t=x.getDownloadFile(),e=tt(Ue());(0,Ri.saveAs)(t.blob,e+t.extension)}else if(wt()instanceof Uint8Array){var r=new Blob([wt()],{type:"application/octet-stream"}),n=x.getROMExtension&&x.getROMExtension(wt())||"-"+ut(J)+".bin";(0,Ri.saveAs)(r,e+n)}else de(`The "${J}" platform doesn't have downloadable ROMs.`)}function ZS(i){var e=X.getCurrentText();if(!e)return!1;var t=new Blob([e],{type:"text/plain;charset=utf-8"});(0,Ri.saveAs)(t,IS(),{autoBom:!1})}async function XS(){let i=(await import("./jszip.min-EENSZHRN.js")).default;return new i}async function LS(i){var e=await XS();Fi().iterateFiles((t,r)=>{r&&e.file(Ve(t),r)}),e.generateAsync({type:"blob"}).then(t=>{(0,Ri.saveAs)(t,Ue()+"-"+ut(J)+".zip")})}function MS(i){let e=x.getDebugSymbolFile&&x.getDebugSymbolFile();if(!e){de("This project does not have debug information.");return}var t=tt(Ue());(0,Ri.saveAs)(e.blob,t+e.extension,{autoBom:!1})}async function DS(i){var e=await XS(),t=await xr().keys();_e(!0);try{var r=0;await Promise.all(t.map(s=>xr().getItem(s).then(o=>{li(r++/(t.length+1)),o&&e.file(s,o)})));var n=await e.generateAsync({type:"blob"});(0,Ri.saveAs)(n,ut(J)+"-all.zip")}finally{_e(!1)}}var Pd=!1;function WS(){Pd||Ut("lib/gif.js").then(()=>{var i=$("#emulator").find("canvas")[0];if(!i){de("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=>{li(l)}),t.on("finished",l=>{r.attr("src",URL.createObjectURL(l)),_e(!1),x.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"),_e(!0),x.pause(),t.render(),Pd=!1):(t.addFrame(i,{delay:n,copy:!0}),setTimeout(a,n),Pd=!0)};a()})}var kd;async function Kr(){if(!kd){await Ut("lib/octokat.js"),await Ut("https://www.gstatic.com/firebasejs/8.8.1/firebase-app.js"),await Ut("https://www.gstatic.com/firebasejs/8.8.1/firebase-auth.js"),await Ut("https://8bitworkshop.com/config.js");var i=qo("__github_key");kd=new Dl(Octokat,i,xr(),Fi()),console.log("loaded github service")}return kd}function oo(){var i=(He||"").split("/");return i.length!=2?(de("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 ao(i,e){var t,r=no(i);if(!r){de("Could not parse GitHub URL.");return}var n=Gr()[r.repopath];if(!(n&&!confirm("You've already imported "+r.repopath+" -- do you want to replace all local files?"))){_e(!0);var s=Ml(r.repopath);li(.25);var o=await Kr();return o.import(i).then(a=>(t=a,li(.75),o.pull(i,s))).then(a=>{_e(!1),Jr(e,{repo:r.repopath})}).catch(a=>{_e(!1),console.log(a),de("Could not import "+i+". "+a)})}}async function zS(i){var e=await Kr();e.login().then(()=>{dt("You are signed in to GitHub.")}).catch(t=>{de("Could not sign in."+t)})}async function VS(i){var e=await Kr();e.logout().then(()=>{dt("You are logged out of GitHub.")})}function YS(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"),ao(r,!1)})}function jS(i){if(!(He&&!confirm("This project ("+Fi().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(tt(Ve(Fi().mainPath))),e.modal("show"),t.off("click").on("click",async()=>{var r=$("#githubRepoName").val()+"",n=$("#githubRepoDesc").val()+"",s=$("#githubRepoPrivate").val()=="private",o=$("#githubRepoLicense").val()+"",a;ifLine truncated
`);for(let o=0;o<s.length;o++){let a=s[o],l=o+1,c=a.match(/(?:function|func|def|proc)\s+(\w+)/i);c&&n.push({id:`${e}:${l}:${c[1]}`,name:c[1],kind:"func",source:r,file:e,line:l});let h=a.match(/(?:var|let|const|global)\s+(\w+)/i);h&&n.push({id:`${e}:${l}:${h[1]}`,name:h[1],kind:"var",source:r,file:e,line:l});let u=a.match(/(?:struct|class|interface|type)\s+(\w+)/i);u&&n.push({id:`${e}:${l}:${u[1]}`,name:u[1],kind:"type",source:r,file:e,line:l});let f=a.match(/^\s*(\w+)\s*:/);f&&!a.trim().startsWith("//")&&n.push({id:`${e}:${l}:${f[1]}`,name:f[1],kind:"label",source:r,file:e,line:l});let d=a.match(/#define\s+(\w+)/i);d&&n.push({id:`${e}:${l}:${d[1]}`,name:d[1],kind:"macro",source:r,file:e,line:l});let O=a.match(/^\s*(\w+)\s*(?:=|equ)\s+/i);O&&n.push({id:`${e}:${l}:${O[1]}`,name:O[1],kind:"equate",source:r,file:e,line:l})}return n}var qS=()=>null;function GS(i){qS=i}function en(){return qS()}var Il=class{constructor(){this.id="project";this.kind="project";this.rebuilt=!1;this.index=new Am([])}async ready(){await this.index.init(),this.rebuilt||(this.rebuilt=!0,await this.rebuild())}query(e,t){let r=this.index.query(e,t),n=this.fulltextQuery(e,t),s=r.concat(n);return s.sort((o,a)=>a.score-o.score),s.slice(0,t)}fulltextQuery(e,t){if(e.length<2)return[];let r=e.toLowerCase(),n=[],s=Math.max(t,10),o=en();return o?(o.iterateFiles((a,l)=>{if(typeof l!="string")return;let c=l.split(`
`),h=0;for(let u=0;u<c.length;u++){let f=c[u],O=f.toLowerCase().indexOf(r);if(O>=0){let m=f.trim();if(!m)continue;if(n.push({record:{id:`text:${a}:${u+1}`,name:m.length>80?m.slice(0,80)+"\u2026":m,kind:"text",source:"project",file:a,line:u+1},score:200+Math.max(0,100-O*2),ranges:[O,O+e.length]}),++h>=s)break}}}),n):[]}async onFileChanged(e,t){let r=this.extractSymbolsFromFile(e,t,"project");this.index.pushRecords(r)}extractSymbolsFromFile(e,t,r){if(typeof t!="string")return[];let n=this.detectEditorStyle(e);return $d(t,e,n,r)}detectEditorStyle(e){var r;switch((r=e.split(".").pop())==null?void 0:r.toLowerCase()){case"c":case"h":return"text/x-csrc";case"asm":case"a65":case"inc":return"6502";case"v":return"verilog";case"wiz":return"text/x-wiz";case"bas":case"basic":return"basic";case"fb":case"fastbasic":return"fastbasic";case"bac":case"bataribasic":return"bataribasic";case"i":return"inform6";case"d":return"dialog";default:return"text/x-csrc"}}async rebuild(){this.index.clear(),await this.index.init();let e=en();if(!e)return;let t=[];e.iterateFiles((r,n)=>{if(typeof n!="string")return;let s=this.detectEditorStyle(r),o=$d(n,r,s,"project");t.push(...o)}),this.index.pushRecords(t)}};var eR=new Set(["h","hh","hpp","inc","asm","a65","s","mac","defs","def","equ","i","m","c","bas","txt"]),tR=20,zl=class{constructor(){this.id="toolchain";this.kind="toolchain";this.fsName=null;this.files=[];this.loaded=new Map;this.readyDone=!1;this.loadIdx=0;this.batchSize=tR}async ready(){if(this.readyDone)return;this.readyDone=!0;let e=en();if(!e)return;let t;try{t=e.getToolForFilename?e.getToolForFilename(e.mainPath):""}catch(o){t=""}let r=na(t,e.platform_id),n=ra(t,e.platform_id);if(!r||!n.length)return;this.fsName=r;let s=new Set;for(let o of n){let a=await this.listFiles(o);for(let l of a)this.isSearchable(l)&&!s.has(l)&&(s.add(l),this.files.push(l))}this.files.sort()}isValid(){return this.fsName!=null&&this.files.length>0}async listFiles(e){let t=en();if(!t||!this.fsName||!t.queryWorker)return[];try{let r={preload_fs:this.fsName,listshared:e,updates:[],buildsteps:[]},n=await t.queryWorker(r),s=n&&n.output;return Array.isArray(s)?s:[]}catch(r){return console.debug("Toolchain list error:",r),[]}}async readFile(e){let t=en();if(!t||!this.fsName||!t.queryWorker)return null;try{let r={preload_fs:this.fsName,readshared:e,updates:[],buildsteps:[]},n=await t.queryWorker(r),s=n&&n.output;return s instanceof Uint8Array&&s.length>0?new TextDecoder().decode(s):null}catch(r){return console.debug("Toolchain read error:",r),null}}isSearchable(e){let t=e.split("/").pop()||e,r=t.lastIndexOf(".");return r<0?!0:eR.has(t.substring(r+1).toLowerCase())}async ensureBatch(){let e=en();if(!(!e||!e.queryWorker))for(;this.loadIdx<this.files.length;){let t=this.files.slice(this.loadIdx,this.loadIdx+this.batchSize);this.loadIdx+=t.length;let r=await Promise.all(t.map(async n=>{let s=await this.readFile(n);return[n,s]}));for(let[n,s]of r)s!=null&&this.loaded.set(n,s);if(this.loaded.size>0||this.loadIdx>=this.files.length)break}}async query(e,t){return await this.ready(),!this.isValid()||e.length<2?[]:(await this.ensureBatch(),this.textQuery(e,t))}textQuery(e,t){if(e.length<2)return[];let r=e.toLowerCase(),n=[],s=Math.max(t,5);for(let[o,a]of this.loaded){let l=a.split(`
`),c=0;for(let h=0;h<l.length;h++){let u=l[h],d=u.toLowerCase().indexOf(r);if(d>=0){let O=u.trim();if(!O)continue;if(n.push({record:{id:`toolchain:${o}:${h+1}`,name:O.length>80?O.slice(0,80)+"\u2026":O,kind:"text",source:"toolchain",file:o,line:h+1},score:200+Math.max(0,100-d*2),ranges:[d,d+e.length]}),++c>=s)break}}}return n.sort((o,a)=>a.score-o.score),n.slice(0,t)}invalidate(){this.fsName=null,this.files=[],this.loaded.clear(),this.readyDone=!1,this.loadIdx=0}};var iR=50,Td=class i{constructor(){this.sources=new Map;this.projectSource=new Il,this.toolchainSource=new zl,this.docsSource=new Em,this.sources.set("project",this.projectSource),this.sources.set("toolchain",this.toolchainSource),this.sources.set("docs",this.docsSource)}static getInstance(){return i.instance||(i.instance=new i),i.instance}parseQuery(e){return e.startsWith("#")?{needle:e.slice(1).trim(),filter:"symbols"}:e.startsWith(">")?{needle:e.slice(1).trim(),filter:"files"}:e.startsWith("?")?{needle:e.slice(1).trim(),filter:"docs"}:{needle:e,filter:"all"}}async query(e,t=iR){let{needle:r,filter:n}=this.parseQuery(e);if(!r)return[];let s=[],o=[];n==="docs"?o.push(this.docsSource):n==="files"?o.push(this.projectSource):n==="symbols"?(o.push(this.projectSource),o.push(this.toolchainSource)):(o.push(this.projectSource),o.push(this.toolchainSource),o.push(this.docsSource));for(let h of o)try{await h.ready();let u=await h.query(r,t-s.length);s.push(...u)}catch(u){console.debug("Search source error:",u)}s.sort((h,u)=>u.score-h.score);let a={project:1.3,toolchain:1,docs:.7};for(let h of s){let u=a[h.record.source]||1;h.score*=u}s.sort((h,u)=>u.score-h.score);let l=new Set;return s.filter(h=>l.has(h.record.id)?!1:(l.add(h.record.id),!0)).slice(0,t)}},HS=Td.getInstance();var KS=typeof String.prototype.normalize=="function"?i=>i.normalize("NFKD"):i=>i,vr=class{constructor(e,t,r=0,n=e.length,s,o){this.test=o,this.value={from:0,to:0,precise:!1},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=e.iterRange(r,n),this.bufferStart=r,this.normalize=s?a=>s(KS(a)):KS,this.query=this.normalize(t)}peek(){if(this.bufferPos==this.buffer.length){if(this.bufferStart+=this.buffer.length,this.iter.next(),this.iter.done)return-1;this.bufferPos=0,this.buffer=this.iter.value}return hi(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let e=this.peek();if(e<0)return this.done=!0,this;let t=Oa(e),r=this.bufferStart+this.bufferPos;this.bufferPos+=or(e);let n=this.normalize(t);if(n.length)for(let s=0,o=r,a=!0;;s++){let l=n.charCodeAt(s),c=this.match(l,o,a,this.bufferPos+this.bufferStart,s==n.length-1);if(c)return this.value=c,this;if(s==n.length-1)break;a&&s<t.length&&t.charCodeAt(s)==l?o++:a=!1}}}match(e,t,r,n,s){let o=null;for(let a=0;a<this.matches.length;){let l=this.matches[a],c=!1;this.query.charCodeAt(l.index)==e&&(l.index==this.query.length-1?o={from:l.from,to:n,precise:s&&l.precise}:(l.index++,c=!0)),c?a++:this.matches.splice(a,1)}return this.query.charCodeAt(0)==e&&(this.query.length==1?o={from:t,to:n,precise:r&&s}:this.matches.push({from:t,index:1,precise:r})),o&&this.test&&!this.test(o.from,o.to,this.buffer,this.bufferStart)&&(o=null),o}};typeof Symbol!="undefined"&&(vr.prototype[Symbol.iterator]=function(){return this});var tv={from:-1,to:-1,match:/.*/.exec(""),precise:!0},Xd="gm"+(/x/.unicode==null?"":"u"),jl=class{constructor(e,t,r,n=0,s=e.length){if(this.text=e,this.to=s,this.curLine="",this.done=!1,this.value=tv,/\\[sWDnr]|\n|\r|\[\^/.test(t))return new Fl(e,t,r,n,s);this.re=new RegExp(t,Xd+(r!=null&&r.ignoreCase?"i":"")),this.test=r==null?void 0:r.test,this.iter=e.iter();let o=e.lineAt(n);this.curLineStart=o.from,this.matchPos=Ul(e,n),this.getLine(this.curLineStart)}getLine(e){this.iter.next(e),this.iter.lineBreak?this.curLine="":(this.curLine=this.iter.value,this.curLineStart+this.curLine.length>this.to&&(this.curLine=this.curLine.slice(0,this.to-this.curLineStart)),this.iter.next())}nextLine(){this.curLineStart=this.curLineStart+this.curLine.length+1,this.curLineStart>this.to?this.curLine="":this.getLine(0)}next(){for(let e=this.matchPos-this.curLineStart;;){this.re.lastIndex=e;let t=this.matchPos<=this.to&&this.re.exec(this.curLine);if(t){let r=this.curLineStart+t.index,n=r+t[0].length;if(this.matchPos=Ul(this.text,n+(r==n?1:0)),r==this.curLineStart+this.curLine.length&&this.nextLine(),(r<n||r>this.value.to)&&(!this.test||this.test(r,n,t)))return this.value={from:r,to:n,precise:!0,match:t},this;e=this.matchPos-this.curLineStart}else if(this.curLineStart+this.curLine.length<this.to)this.nextLine(),e=0;else return this.done=!0,this}}},Cd=new WeakMap,Bl=class i{constructor(e,t){this.from=e,this.text=t}get to(){return this.from+this.text.length}static get(e,t,r){let n=Cd.get(e);if(!n||n.from>=r||n.to<=t){let a=new i(t,e.sliceString(t,r));return Cd.set(e,a),a}if(n.from==t&&n.to==r)return n;let{text:s,from:o}=n;return o>t&&(s=e.sliceString(t,o)+s,o=t),n.t 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 Rd(this):new _d(this)}getCursor(e,t=0,r){let n=e.doc?e:Oe.create({doc:e});return r==null&&(r=n.doc.length),this.regexp?Kn(this,n,t,r):Hn(this,n,t,r)}},ql=class{constructor(e){this.spec=e}};function dR(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 Hn(i,e,t,r){let n;return i.wholeWord&&(n=pR(e.doc,e.charCategorizer(e.selection.main.head))),i.test&&(n=dR(i.test,e,n)),new vr(e.doc,i.unquoted,t,r,i.caseSensitive?void 0:s=>s.toLowerCase(),n)}function pR(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(Gl(n,t-s))!=Te.Word||e(Hl(n,t-s))!=Te.Word)&&(e(Hl(n,r-s))!=Te.Word||e(Gl(n,r-s))!=Te.Word))}var _d=class extends ql{constructor(e){super(e)}nextMatch(e,t,r){let n=Hn(this.spec,e,r,e.doc.length).nextOverlapping();if(n.done){let s=Math.min(e.doc.length,t+this.spec.unquoted.length);n=Hn(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=Hn(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=Hn(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=Hn(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 OR(i,e,t){return(r,n,s)=>(!t||t(r,n,s))&&i(s[0],e,r,n)}function Kn(i,e,t,r){let n;return i.wholeWord&&(n=mR(e.charCategorizer(e.selection.main.head))),i.test&&(n=OR(i.test,e,n)),new jl(e.doc,i.search,{ignoreCase:!i.caseSensitive,test:n},t,r)}function Gl(i,e){return i.slice(je(i,e,!1),e)}function Hl(i,e){return i.slice(e,je(i,e))}function mR(i){return(e,t,r)=>!r[0].length||(i(Gl(r.input,r.index))!=Te.Word||i(Hl(r.input,r.index))!=Te.Word)&&(i(Hl(r.input,r.index+r[0].length))!=Te.Word||i(Gl(r.input,r.index+r[0].length))!=Te.Word)}var Rd=class extends ql{nextMatch(e,t,r){let n=Kn(this.spec,e,r,e.doc.length).next();return n.done&&(n=Kn(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=Kn(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=Kn(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=Kn(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)}},co=ie.define(),Dd=ie.define(),Sr=be.define({create(i){return new lo(Ad(i).create(),null)},update(i,e){for(let t of e.effects)t.is(co)?i=new lo(t.value.create(),i.panel):t.is(Dd)&&(i=new lo(i.query,t.value?Wd:null));return i},provide:i=>Vs.from(i,e=>e.panel)});var lo=class{constructor(e,t){this.query=e,this.panel=t}},gR=V.mark({class:"cm-searchMatch"}),bR=V.mark({class:"cm-searchMatch cm-searchMatch-selected"}),xR=Ae.fromClass(class{constructor(i){this.view=i,this.decorations=this.highlight(i.state.field(Sr))}update(i){let e=i.state.field(Sr);(e!=i.startState.field(Sr)||i.docChanged||i.selectionSet||i.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:i,panel:e}){if(!e||!i.spec.valid)return V.none;let{view:t}=this,r=new ci;for(let n=0,s=t.visibleRanges,o=s.length;n<o;n++){let{from:a,to:l}=s[n];for(;n<o-1&&l>s[n+1].from-500;)l=s[++n].to;i.highlight(t.state,a,l,(c,h)=>{let u=t.state.selection.ranges.some(f=>f.from==c&&f.to==h);r.add(c,h,u?bR:gR)})}return r.finish()}},{decorations:i=>i.decorations});function ho(i){return e=>{let t=e.state.field(Sr,!1);return t&&t.query.spec.valid?i(e,t):ec(e)}}var Jn=ho((i,{query:e})=>{let{to:t}=i.state.selection.main,r=e.nextMatch(i.state,t,t);if(!r)return!1;let n=R.single(r.from,r.to),s=i.state.facet(tn);return i.dispatch({selection:n,effects:[Id(i,r),s.scrollToMatch(n.main,i)],userEvent:"select.search"}),nv(i),!0}),Kl=ho((i,{query:e})=>{let{state:t}=i,{from:r}=t.selection.main,n=e.prevMatch(t,r,r);if(!n) Line truncated
`+t.scrub(),s=this.advance(n);return s>-1&&s<n.length?this.complete(e,r,s):!1}finish(e,t){return(this.stage==2||this.stage==3)&&po(t.content,this.pos)==t.content.length?this.complete(e,t,t.content.length):!1}complete(e,t,r){return e.addLeafElement(t,we(Y.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(sy(e,this.pos,this.start,!0)))return-1;if(e.charCodeAt(this.pos)!=58)return this.stage=-1;this.elts.push(we(Y.LinkMark,this.pos+this.start,this.pos+this.start+1)),this.pos++}else if(this.stage==1){if(!this.nextStage(ry(e,po(e,this.pos),this.start)))return-1}else if(this.stage==2){let t=po(e,this.pos),r=0;if(t>this.pos){let n=ny(e,t,this.start);if(n){let s=yp(e,n.to-this.start);s>0&&(this.nextStage(n),r=s)}}return r||(r=yp(e,this.pos)),r>0&&r<e.length?r:-1}else return yp(e,this.pos)}}};function yp(i,e){for(;e<i.length;e++){let t=i.charCodeAt(e);if(t==10)break;if(!ni(t))return-1}return e}var Cp=class{nextLine(e,t,r){let n=t.depth<e.stack.length?-1:Nv(t),s=t.next;if(n<0)return!1;let o=we(Y.HeaderMark,e.lineStart+t.pos,e.lineStart+n);return e.nextLine(),e.addLeafElement(r,we(s==61?Y.SetextHeading1:Y.SetextHeading2,r.start,e.prevLineEnd(),[...e.parser.parseInline(r.content,r.start),o])),!0}finish(){return!1}},Kv={LinkReference(i,e){return e.content.charCodeAt(0)==91?new Tp(e):null},SetextHeading(){return new Cp}},LA=[(i,e)=>Uv(e)>=0,(i,e)=>jv(e)>=0,(i,e)=>Bv(e)>=0,(i,e)=>Lp(e,i,!0)>=0,(i,e)=>Mp(e,i,!0)>=0,(i,e)=>Xp(e,i,!0)>=0,(i,e)=>Hv(e,i,!0)>=0],MA={text:"",end:0},_p=class{constructor(e,t,r,n){this.parser=e,this.input=t,this.ranges=n,this.line=new Qp,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=sc.create(Y.Document,0,this.lineStart,0,0),this.stack=[this.block],this.fragments=r.length?new Ep(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 Pp(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=oy(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=MA;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 "+Y[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=sc.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 fe(this.parser.nodeSet.types[e],ts,ts,(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(Ap(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?Kv(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=Ap(this.parser.parseInline(e.content,e.start),e.marks);this.addNode(this.buffer.writeElements(t,-e.start).finish(Y.Paragraph,e.content.length),e.start)}elt(e,t,r,n){return typeof e=="string"?we(this.parser.getNodeType(e),t,r,n):new ac(e,t)}get buffer(){return new oc(this.parser.nodeSet)}};function Kv(i,e,t,r,n){let s=i[e].to,o=[],a=[],l=t.from+r;function c(h,u){for(;u?h>=s:h>s;){let f=i[e+1].from-s;r+=f,h+=f,e++,s=i[e].to}}for(let h=t.firstChild;h;h=h.nextSibling){c(h.from+r,!0);let u=h.from+r,f,d=n.get(h.tree);d?f=d:h.to+r>s?(f=Kv(i,e,h,r,n),c(h.to+r,!1)):f=h.toTree(),o.push(f),a.push(u-l)}return c(t.to+r,!1),new fe(t.type,o,a,t.to+r-l,t.tree?t.tree.propValues:void 0)}var mo=class i extends ji{constructor(e,t,r,n,s,o,a,l,c){super(),this.nodeSet=e,this.blockParsers=t,this.leafBlockParsers=r,this.blockNames=n,this.endLeafBlock=s,this.skipContextMarkup=o,this.inlineParsers=a,this.inlineNames=l,this.wrappers=c,this.nodeTypes=Object.create(null);for(let h of e.types)this.nodeTypes[h.name]=h.id}createParse(e,t,r){let n=new _p(this,e,t,r);for(let s of this.wrappers)n=s(n,e,t,r);return n}configure(e){let t=Rp(e);if(!t)return this;let{nodeSet:r,skipContextMarkup:n}=this,s=this.blockParsers.slice(),o=this.leafBlockParsers.slice(),a=this.blockNames.slice(),l=this.inlineParsers.slice(),c=this.inlineNames.slice(),h=this.endLeafBlock.slice(),u=this.wrappers;if(fo(t.defineNodes)){n=Object.assign({},n);let f=r.types.slice(),d;for(let O of t.defineNodes){let{name:m,block:S,composite:y,style:A}=typeof O=="string"?{name:O}:O;if(f.some(k=>k.name==m))continue;y&&(n[f.length]=(k,P,_)=>y(P,_,k.value));let C=f.length,Z=y?["Block","BlockContext"]:S?C>=Y.ATXHeading1&&C<=Y.SetextHeading2?["Block","LeafBlock","Heading"]:["Block","LeafBlock"]:void 0;f.push(We.define({id:C,name:m,props:Z&&[[se.group,Z]]})),A&&(d||(d={}),Array.isArray(A)||A instanceof It?d[m]=A:Object.assign(d,A))}r=new Vi(f),d&&(r=r.extend(ot(d)))}if(fo(t.props)&&(r=r.extend(...t.props)),fo(t.remove))for(let f of t.remove){let d=this.blockNames.indexOf(f),O=this.inlineNames.indexOf(f);d>-1&&(s[d]=o[d]=void 0),O>-1&&(l[O]=void 0)}if(fo(t.parseBlock))for(let f of t.parseBlock){let d=a.indexOf(f.name);if(d>-1)s[d]=f.parse,o[d]=f.leaf;else{let O=f.before?nc(a,f.before):f.after?nc(a,f.after)+1:a.length-1;s.splice(O,0,f.parse),o.splice(O,0,f.leaf),a.splice(O,0,f.name)}f.endLeaf&&h.push(f.endLeaf)}if(fo(t.parseInline))for(let f of t.parseInline){let d=c.indexOf(f.name);if(d>-1)l[d]=f.parse;else{let O=f.before?nc(c,f.before):f.after?nc(c,f.after)+1:c.length-1;l.splice(O,0,f.parse),c.splice(O,0,f.name)}}return t.wrap&&(u=u.concat(t.wrap)),new i(r,s,o,a,h,n,l,c,u)}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 bo(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 fo(i){return i!=null&&i.length>0}function Rp(i){if(!Array.isArray(i))return i;if(i.length==0)return null;let e=Rp(i[0]);if(i.length==1)return e;let t=Rp(i.slice(1));if(!t||!e)return e||t;let r=(o,a)=>(o||ts).concat(a||ts),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 nc(i,e){let t=i.indexOf(e);if(t<0)throw new RangeError(`Position specified relative to unknown parser ${e}`);return t}var Jv=[We.none];for(let i=1,e;e=Y[i];i++)Jv[i]=We.define({id:i,name:e,props:i>=Y.Escape?[]:[[se.group,i in Vv?["Block","BlockContext"]:["Block","LeafBlock"]]],top:e=="Document"});var ts=[],oc=class{constructor(e){this.nodeSet=e,this.content=[],this.nodes=[]}write(e,t,r, Line truncated
`;)s--;this.fragmentEnd=s?s-1:0}let r=this.cursor;r||(r=this.cursor=this.fragment.tree.cursor(),r.firstChild());let n=e+this.fragment.offset;for(;r.to<=n;)if(!r.parent())return!1;for(;;){if(r.from>=n)return this.fragment.from<=t;if(!r.childAfter(n))return!1}}matches(e){let t=this.cursor.tree;return t&&t.prop(se.contextHash)==e}takeNodes(e){let t=this.cursor,r=this.fragment.offset,n=this.fragmentEnd-(this.fragment.openEnd?1:0),s=e.absoluteLineStart,o=s,a=e.block.children.length,l=o,c=a;for(;;){if(t.to-r>n){if(t.type.isAnonymous&&t.firstChild())continue;break}let h=sy(t.from-r,e.ranges);if(t.to-r<=e.ranges[e.rangeI].to)e.addNode(t.tree,h);else{let u=new fe(e.parser.nodeSet.types[Y.Paragraph],[],[],0,e.block.hashProp);e.reusePlaceholders.set(u,t.tree),e.addNode(u,h)}if(t.type.is("Block")&&(MA.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 sy(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 DA=ot({"Blockquote/...":p.quote,HorizontalRule:p.contentSeparator,"ATXHeading1/... SetextHeading1/...":p.heading1,"ATXHeading2/... SetextHeading2/...":p.heading2,"ATXHeading3/...":p.heading3,"ATXHeading4/...":p.heading4,"ATXHeading5/...":p.heading5,"ATXHeading6/...":p.heading6,"Comment CommentBlock":p.comment,Escape:p.escape,Entity:p.character,"Emphasis/...":p.emphasis,"StrongEmphasis/...":p.strong,"Link/... Image/...":p.link,"OrderedList/... BulletList/...":p.list,"BlockQuote/...":p.quote,"InlineCode CodeText":p.monospace,"URL Autolink":p.url,"HeaderMark HardBreak QuoteMark ListMark LinkMark EmphasisMark CodeMark":p.processingInstruction,"CodeInfo LinkLabel":p.labelName,LinkTitle:p.string,Paragraph:p.content}),oy=new mo(new Vi(Jv).extend(DA),Object.keys(rc).map(i=>rc[i]),Object.keys(rc).map(i=>Hv[i]),Object.keys(rc),ZA,Vv,Object.keys(wp).map(i=>wp[i]),Object.keys(wp),[]);function WA(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 ay(i){let{codeParser:e,htmlParser:t}=i;return{wrap:cl((n,s)=>{let o=n.type.id;if(e&&(o==Y.CodeBlock||o==Y.FencedCode)){let a="";if(o==Y.FencedCode){let c=n.node.getChild(Y.CodeInfo);c&&(a=s.read(c.from,c.to))}let l=e(a);if(l)return{parser:l,overlay:c=>c.type.id==Y.CodeText,bracketed:o==Y.FencedCode}}else if(t&&(o==Y.HTMLBlock||o==Y.HTMLTag||o==Y.CommentBlock))return{parser:t,overlay:WA(n.node,n.from,n.to)};return null})}}var IA={resolve:"Strikethrough",mark:"StrikethroughMark"},zA={defineNodes:[{name:"Strikethrough",style:{"Strikethrough/...":p.strikethrough}},{name:"StrikethroughMark",style:p.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=go.test(r),l=go.test(n);return i.addDelimiter(IA,t,t+2,!o&&(!l||s||a),!s&&(!a||o||l))},after:"Emphasis"}]};function Oo(i,e,t=0,r,n=0){let s=0,o=!0,a=-1,l=-1,c=!1,h=()=>{r.push(i.elt("TableCell",n+a,n+l,i.parser.parseInline(e.slice(a,l),n+a)))};for(let u=t;u<e.length;u++){let f=e.charCodeAt(u);f==124&&!c?((!o||a>-1)&&s++,o=!1,r&&(a>-1&&h(),r.push(i.elt("TableDelimiter",u+n,u+n+1))),a=l=-1):(c||f!=32&&f!=9)&&(a<0&&(a=u),l=u+1),c=!c&&f==92}return a>-1&&(s++,r&&h()),s}function Xv(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 ly=/^[>\s]*\|?(\s*:?-+:?\s*\|)+(\s*:?-+:?\s*)?$/,cc=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)&&ly.test(n=t.text.slice(t.pos))){let s=[];Oo(e,r.content,0,s,r.start)==Oo(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=[];Oo(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}},VA={defineNodes:[{name:"Table",block:!0},{name:"TableHeader",style:{"TableHeader/...":p.heading}},"TableRow",{name:"TableCell",style:p.content},{name:"TableDelimiter",style:p.processingInstruction}],parseBlock:[{name:"Table",leaf(i,e){return Xv(e.content,0)?new cc:null},endLeaf(i,e,t){if(t.parsers.some(n=>n instanceof cc)||!Xv(e.text,e.basePos))return!1;let r=i.peekLine();return ly.test(r)&&Oo(i,e.text,e.basePos)==Oo(i,r,e.basePos)},before:"SetextHeading"}]},Zp=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}},YA={defineNodes:[{name:"Task",block:!0,style:p.list},{name:"TaskMarker",style:p.atom}],parseBlock:[ Line truncated
`);r=n<0?t:t.slice(0,n)}return e+r.length>this.to?r.slice(0,this.to-e):r}prevLineEnd(){return this.atEnd?this.lineStart:this.lineStart-1}startContext(e,t,r=0){this.block=sc.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 fe(this.parser.nodeSet.types[e],is,is,(r!=null?r:this.prevLineEnd())-t)),this.block.addChild(e,t-this.block.from)}addElement(e){this.block.addChild(e.toTree(this.parser.nodeSet),e.from-this.block.from)}addLeafElement(e,t){this.addNode(this.buffer.writeElements(Ap(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?Jv(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=Ap(this.parser.parseInline(e.content,e.start),e.marks);this.addNode(this.buffer.writeElements(t,-e.start).finish(Y.Paragraph,e.content.length),e.start)}elt(e,t,r,n){return typeof e=="string"?we(this.parser.getNodeType(e),t,r,n):new ac(e,t)}get buffer(){return new oc(this.parser.nodeSet)}};function Jv(i,e,t,r,n){let s=i[e].to,o=[],a=[],l=t.from+r;function c(h,u){for(;u?h>=s:h>s;){let f=i[e+1].from-s;r+=f,h+=f,e++,s=i[e].to}}for(let h=t.firstChild;h;h=h.nextSibling){c(h.from+r,!0);let u=h.from+r,f,d=n.get(h.tree);d?f=d:h.to+r>s?(f=Jv(i,e,h,r,n),c(h.to+r,!1)):f=h.toTree(),o.push(f),a.push(u-l)}return c(t.to+r,!1),new fe(t.type,o,a,t.to+r-l,t.tree?t.tree.propValues:void 0)}var mo=class i extends ji{constructor(e,t,r,n,s,o,a,l,c){super(),this.nodeSet=e,this.blockParsers=t,this.leafBlockParsers=r,this.blockNames=n,this.endLeafBlock=s,this.skipContextMarkup=o,this.inlineParsers=a,this.inlineNames=l,this.wrappers=c,this.nodeTypes=Object.create(null);for(let h of e.types)this.nodeTypes[h.name]=h.id}createParse(e,t,r){let n=new _p(this,e,t,r);for(let s of this.wrappers)n=s(n,e,t,r);return n}configure(e){let t=Rp(e);if(!t)return this;let{nodeSet:r,skipContextMarkup:n}=this,s=this.blockParsers.slice(),o=this.leafBlockParsers.slice(),a=this.blockNames.slice(),l=this.inlineParsers.slice(),c=this.inlineNames.slice(),h=this.endLeafBlock.slice(),u=this.wrappers;if(fo(t.defineNodes)){n=Object.assign({},n);let f=r.types.slice(),d;for(let O of t.defineNodes){let{name:m,block:S,composite:y,style:A}=typeof O=="string"?{name:O}:O;if(f.some(k=>k.name==m))continue;y&&(n[f.length]=(k,P,_)=>y(P,_,k.value));let C=f.length,Z=y?["Block","BlockContext"]:S?C>=Y.ATXHeading1&&C<=Y.SetextHeading2?["Block","LeafBlock","Heading"]:["Block","LeafBlock"]:void 0;f.push(We.define({id:C,name:m,props:Z&&[[se.group,Z]]})),A&&(d||(d={}),Array.isArray(A)||A instanceof It?d[m]=A:Object.assign(d,A))}r=new Vi(f),d&&(r=r.extend(at(d)))}if(fo(t.props)&&(r=r.extend(...t.props)),fo(t.remove))for(let f of t.remove){let d=this.blockNames.indexOf(f),O=this.inlineNames.indexOf(f);d>-1&&(s[d]=o[d]=void 0),O>-1&&(l[O]=void 0)}if(fo(t.parseBlock))for(let f of t.parseBlock){let d=a.indexOf(f.name);if(d>-1)s[d]=f.parse,o[d]=f.leaf;else{let O=f.before?nc(a,f.before):f.after?nc(a,f.after)+1:a.length-1;s.splice(O,0,f.parse),o.splice(O,0,f.leaf),a.splice(O,0,f.name)}f.endLeaf&&h.push(f.endLeaf)}if(fo(t.parseInline))for(let f of t.parseInline){let d=c.indexOf(f.name);if(d>-1)l[d]=f.parse;else{let O=f.before?nc(c,f.before):f.after?nc(c,f.after)+1:c.length-1;l.splice(O,0,f.parse),c.splice(O,0,f.name)}}return t.wrap&&(u=u.concat(t.wrap)),new i(r,s,o,a,h,n,l,c,u)}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 bo(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 fo(i){return i!=null&&i.length>0}function Rp(i){if(!Array.isArray(i))return i;if(i.length==0)return null;let e=Rp(i[0]);if(i.length==1)return e;let t=Rp(i.slice(1));if(!t||!e)return e||t;let r=(o,a)=>(o||is).concat(a||is),n=e.wrap,s=t.wrap;return{props:r(e.props,t.props),defineNodes:r(e.defineNodes,t.defineNodes),parseBlock:r(e.parseBlock,t.parseBlock),parseInline:r(e.parseInline,t.parseInline),remove:r(e.remove,t.remove),wrap:n?s?(o,a,l,c)=>n(s(o,a,l,c),a,l,c):n:s}}function nc(i,e){let t=i.indexOf(e);if(t<0)throw new RangeError(`Position specified relative to unknown parser ${e}`);return t}var ey=[We.none];for(let i=1,e;e=Y[i];i++)ey[i]=We.define({id:i,name:e,props:i>=Y.Escape?[]:[[se.group,i in Yv?["Block","BlockContext"]:["Block","LeafBlock"]]],top:e=="Document"});var is=[],oc=class{constructor(e){this.nodeSet=e,this.content=[],this.nodes=[]}write(e,t,r, Line truncated
`;)s--;this.fragmentEnd=s?s-1:0}let r=this.cursor;r||(r=this.cursor=this.fragment.tree.cursor(),r.firstChild());let n=e+this.fragment.offset;for(;r.to<=n;)if(!r.parent())return!1;for(;;){if(r.from>=n)return this.fragment.from<=t;if(!r.childAfter(n))return!1}}matches(e){let t=this.cursor.tree;return t&&t.prop(se.contextHash)==e}takeNodes(e){let t=this.cursor,r=this.fragment.offset,n=this.fragmentEnd-(this.fragment.openEnd?1:0),s=e.absoluteLineStart,o=s,a=e.block.children.length,l=o,c=a;for(;;){if(t.to-r>n){if(t.type.isAnonymous&&t.firstChild())continue;break}let h=oy(t.from-r,e.ranges);if(t.to-r<=e.ranges[e.rangeI].to)e.addNode(t.tree,h);else{let u=new fe(e.parser.nodeSet.types[Y.Paragraph],[],[],0,e.block.hashProp);e.reusePlaceholders.set(u,t.tree),e.addNode(u,h)}if(t.type.is("Block")&&(WA.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 oy(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 IA=at({"Blockquote/...":p.quote,HorizontalRule:p.contentSeparator,"ATXHeading1/... SetextHeading1/...":p.heading1,"ATXHeading2/... SetextHeading2/...":p.heading2,"ATXHeading3/...":p.heading3,"ATXHeading4/...":p.heading4,"ATXHeading5/...":p.heading5,"ATXHeading6/...":p.heading6,"Comment CommentBlock":p.comment,Escape:p.escape,Entity:p.character,"Emphasis/...":p.emphasis,"StrongEmphasis/...":p.strong,"Link/... Image/...":p.link,"OrderedList/... BulletList/...":p.list,"BlockQuote/...":p.quote,"InlineCode CodeText":p.monospace,"URL Autolink":p.url,"HeaderMark HardBreak QuoteMark ListMark LinkMark EmphasisMark CodeMark":p.processingInstruction,"CodeInfo LinkLabel":p.labelName,LinkTitle:p.string,Paragraph:p.content}),ay=new mo(new Vi(ey).extend(IA),Object.keys(rc).map(i=>rc[i]),Object.keys(rc).map(i=>Kv[i]),Object.keys(rc),LA,Yv,Object.keys(wp).map(i=>wp[i]),Object.keys(wp),[]);function zA(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 ly(i){let{codeParser:e,htmlParser:t}=i;return{wrap:cl((n,s)=>{let o=n.type.id;if(e&&(o==Y.CodeBlock||o==Y.FencedCode)){let a="";if(o==Y.FencedCode){let c=n.node.getChild(Y.CodeInfo);c&&(a=s.read(c.from,c.to))}let l=e(a);if(l)return{parser:l,overlay:c=>c.type.id==Y.CodeText,bracketed:o==Y.FencedCode}}else if(t&&(o==Y.HTMLBlock||o==Y.HTMLTag||o==Y.CommentBlock))return{parser:t,overlay:zA(n.node,n.from,n.to)};return null})}}var VA={resolve:"Strikethrough",mark:"StrikethroughMark"},YA={defineNodes:[{name:"Strikethrough",style:{"Strikethrough/...":p.strikethrough}},{name:"StrikethroughMark",style:p.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=go.test(r),l=go.test(n);return i.addDelimiter(VA,t,t+2,!o&&(!l||s||a),!s&&(!a||o||l))},after:"Emphasis"}]};function Oo(i,e,t=0,r,n=0){let s=0,o=!0,a=-1,l=-1,c=!1,h=()=>{r.push(i.elt("TableCell",n+a,n+l,i.parser.parseInline(e.slice(a,l),n+a)))};for(let u=t;u<e.length;u++){let f=e.charCodeAt(u);f==124&&!c?((!o||a>-1)&&s++,o=!1,r&&(a>-1&&h(),r.push(i.elt("TableDelimiter",u+n,u+n+1))),a=l=-1):(c||f!=32&&f!=9)&&(a<0&&(a=u),l=u+1),c=!c&&f==92}return a>-1&&(s++,r&&h()),s}function Lv(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 cy=/^[>\s]*\|?(\s*:?-+:?\s*\|)+(\s*:?-+:?\s*)?$/,cc=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)&&cy.test(n=t.text.slice(t.pos))){let s=[];Oo(e,r.content,0,s,r.start)==Oo(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=[];Oo(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}},jA={defineNodes:[{name:"Table",block:!0},{name:"TableHeader",style:{"TableHeader/...":p.heading}},"TableRow",{name:"TableCell",style:p.content},{name:"TableDelimiter",style:p.processingInstruction}],parseBlock:[{name:"Table",leaf(i,e){return Lv(e.content,0)?new cc:null},endLeaf(i,e,t){if(t.parsers.some(n=>n instanceof cc)||!Lv(e.text,e.basePos))return!1;let r=i.peekLine();return cy.test(r)&&Oo(i,e.text,e.basePos)==Oo(i,r,e.basePos)},before:"SetextHeading"}]},Zp=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}},BA={defineNodes:[{name:"Task",block:!0,style:p.list},{name:"TaskMarker",style:p.atom}],parseBlock:[ Line truncated
\${}
} catch (\${error}) {
\${}
@@ -56,49 +56,49 @@ Connect your audio output to the SuperCharger input, turn up the volume, and pla
constructor(\${params}) {
\${}
}
}`,{label:"class",detail:"definition",type:"keyword"}),yt('import {${names}} from "${module}"\n${}',{label:"import",detail:"named",type:"keyword"}),yt('import ${name} from "${module}"\n${}',{label:"import",detail:"default",type:"keyword"})],IE=Gy.concat([yt("interface ${name} {\n ${}\n}",{label:"interface",detail:"definition",type:"keyword"}),yt("type ${name} = ${type}",{label:"type",detail:"definition",type:"keyword"}),yt("enum ${name} {\n ${}\n}",{label:"enum",detail:"definition",type:"keyword"})]),Uy=new In,Hy=new Set(["Script","Block","FunctionExpression","FunctionDeclaration","ArrowFunction","MethodDeclaration","ForStatement"]);function vo(i){return(e,t)=>{let r=e.node.getChild("VariableDefinition");return r&&t(r,i),!0}}var zE=["FunctionDeclaration"],VE={FunctionDeclaration:vo("function"),ClassDeclaration:vo("class"),ClassExpression:()=>!0,EnumDeclaration:vo("constant"),TypeAliasDeclaration:vo("type"),NamespaceDeclaration:vo("namespace"),VariableDefinition(i,e){i.matchContext(zE)||e(i,"variable")},TypeDefinition(i,e){e(i,"type")},__proto__:null};function Ky(i,e){let t=Uy.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(ye.IncludeAnonymous).iterate(o=>{if(n)n=!1;else if(o.name){let a=VE[o.name];if(a&&a(o,s)||Hy.has(o.name))return!1}else if(o.to-o.from>8192){for(let a of Ky(i,o.node))r.push(a);return!1}}),Uy.set(e,r),r}var Ny=/^[\w$\xa1-\uffff][\w$\d\xa1-\uffff]*$/,Jy=["TemplateString","String","RegExp","LineComment","BlockComment","VariableDefinition","TypeDefinition","Label","PropertyDefinition","PropertyName","PrivatePropertyDefinition","PrivatePropertyName","JSXText","JSXAttributeValue","JSXOpenTag","JSXCloseTag","JSXSelfClosingTag",".","?."];function YE(i){let e=ve(i.state).resolveInner(i.pos,-1);if(Jy.indexOf(e.name)>-1)return null;let t=e.name=="VariableName"||e.to-e.from<20&&Ny.test(i.state.sliceDoc(e.from,e.to));if(!t&&!i.explicit)return null;let r=[];for(let n=e;n;n=n.parent)Hy.has(n.name)&&(r=r.concat(Ky(i.state.doc,n)));return{options:r,from:t?e.from:i.pos,validFor:Ny}}var xi=at.define({name:"javascript",parser:Fy.configure({props:[ti.add({IfStatement:Oi({except:/^\s*({|else\b)/}),TryStatement:Oi({except:/^\s*({|catch\b|finally\b)/}),LabeledStatement:Fb,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:xl({closing:"}"}),ArrowFunction:i=>i.baseIndent+i.unit,"TemplateString BlockComment":()=>null,"Statement Property":Oi({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}}),Ot.add({"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression ObjectType":tt,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:"$"}}),ew={test:i=>/^JSX/.test(i.name),facet:zn({commentTokens:{block:{open:"{/*",close:"*/}"}}})},Kp=xi.configure({dialect:"ts"},"typescript"),Jp=xi.configure({dialect:"jsx",props:[gl.add(i=>i.isTop?[ew]:void 0)]}),eO=xi.configure({dialect:"jsx ts",props:[gl.add(i=>i.isTop?[ew]:void 0)]},"typescript"),tw=i=>({label:i,type:"keyword"}),iw="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(tw),jE=iw.concat(["declare","implements","private","protected","public"].map(tw));function rw(i={}){let e=i.jsx?i.typescript?eO:Jp:i.typescript?Kp:xi,t=i.typescript?IE.concat(jE):Gy.concat(iw);return new Pe(e,[xi.data.of({autocomplete:fx(Jy,ux(t))}),xi.data.of({autocomplete:YE}),i.jsx?UE:[]])}function BE(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 qy(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 FE=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),UE=M.inputHandler.of((i,e,t,r,n)=>{if((FE?i.composing:i.compositionStarted)||i.state.readOnly||e!=t||r!=">"&&r!="/"||!xi.isActiveAt(i.state,e,-1))return!1;let s=n(),{state:o}=s,a=o.changeByRange(l=>{var c;let{head:h}=l,u=ve(o).resol Line truncated
`);for(let l of a){Rw.lastIndex=0;let c=Rw.exec(l);if(c){let h=o+c.index+c[0].length;t.push(V.widget({widget:new mO(c[0],e),side:-1}).range(h))}o+=l.length+1}}return V.set(t,!0)}function Ew(i){let e;function t(r){let n=e.posAtDOM(r);i(e.state.doc.lineAt(n).number)}return Ae.fromClass(class{constructor(r){e=r,this.decorations=Aw(r,t)}update(r){e=r.view,(r.docChanged||r.viewportChanged)&&(this.decorations=Aw(r.view,t))}},{decorations:r=>r.decorations})}var gO=class extends qe{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 $Z(i,e,t){let r=[],n=i.state.doc,s=new Set;for(let{from:o,to:a}of i.visibleRanges){let l=i.state.sliceDoc(o,a);for(let c of e){let h=c instanceof RegExp?{re:c}:c;h.re.lastIndex=0;let u;for(;u=h.re.exec(l);){let f=u[h.group!=null?h.group:u.length-1];if(!f)continue;let d=h.suffix?f+h.suffix:f,O=Math.min(o+u.index+u[0].length,n.length),m=n.lineAt(O),S=m.number+":"+d;s.has(S)||(s.add(S),r.push(V.widget({widget:new gO(d,!!h.system,t),side:1}).range(m.to)))}}}return V.set(r,!0)}function Zw(i,e){function t(r){let n=i();return!n||!n.length?V.none:$Z(r,n,e)}return Ae.fromClass(class{constructor(r){this.decorations=t(r)}update(r){(r.docChanged||r.viewportChanged)&&(this.decorations=t(r.view))}},{decorations:r=>r.decorations})}function TZ(i){return Oe.transactionFilter.of(e=>{if(!e.docChanged||!e.isUserEvent("input")||!i.input)return e;let t=[],r=!1;if(e.changes.iterChanges((o,a,l,c,h)=>{let u=h.toString(),f=i.input(u);t.push({from:o,to:a,insert:f}),f!==u&&(r=!0)}),!r)return e;let n=e.annotation(Xe.userEvent),s=e.annotation(Xe.addToHistory);return{changes:t,selection:e.selection,effects:e.effects,scrollIntoView:e.scrollIntoView,annotations:[...n!=null?[Xe.userEvent.of(n)]:[],...s!=null?[Xe.addToHistory.of(s)]:[]]}})}var bO=new nt;function Xw(i){return bO.reconfigure(TZ(i))}var Lw=ie.define(),Mw=ie.define(),Dw=ie.define(),Ww=ie.define(),Iw=ie.define(),zw=ie.define(),Vw=ie.define(),SO=ie.define(),Yw=ie.define(),jw=be.define({create(){return le.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Lw)){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 gc(ce(o,4)).range(a))}i=le.of(n,!0)}return i}}),Bw=be.define({create(){return le.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Mw)){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 bc(o).range(a))}i=le.of(n,!0)}return i}}),Fw=be.define({create(){return le.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Dw)){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 xc(o).range(a))}i=le.of(n,!0)}return i}}),Uw=be.define({create(){return le.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Iw)){let r=[],n=t.value.filter(s=>s.line>=1&&s.line<=e.state.doc.lines).sort((s,o)=>s.line-o.line);for(let s of n){let o=e.state.doc.line(s.line).from;r.push((s.enabled?_Z:RZ).range(o))}i=le.of(r,!0)}return i}}),xO=be.define({create(){return le.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(zw)){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 vc(s,o).range(a))}i=le.of(n,!0)}return i}}),Nw=be.define({create(){return le.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Vw))if(t.value===null)i=le.empty;else{let r=t.value;if(r>=1&&r<=e.state.doc.lines){let n=e.state.doc.line(r).from;i=le.of(qw.range(n))}}return i}}),gc=class extends Be{constructor(t){super();this.hex=t}toDOM(){let t=document.createElement("span");return t.className="gutter-offset-marker",t.textContent=this.hex,t.title="Click to run to here",t}eq(t){return this.hex==t.hex}},bc=class extends Be{constructor(t){super();this.bytes=t}toDOM(){return document.createTextNode(this.bytes)}eq(t){return this.bytes==t.bytes}},xc=class extends Be{constructor(t){super();this.clock=t}toDOM(){return document.createTextNode(this.clock)}eq(t){return this.clock==t.clock}},CZ=new class extends Be{toDOM(){let i=document.createElement("span");return i.className="gutter-breakpoint-placeholder",i.textContent="\u25CF",i}},Sc=class extends Be{constructor(t){super();this.enabled=t}toDOM(){let t=document.createElement("span");return t.className="gutter-breakpoint "+(this.enabled?"gutter-breakpoint-enabled":"gutter-breakpoint-disabled"),t.innerHTML="\u25CF",t.title=this.enabled?"Breakpoint (click to remove; manage in Breakpoints window)":"Disabled break Line truncated
}`,{label:"class",detail:"definition",type:"keyword"}),yt('import {${names}} from "${module}"\n${}',{label:"import",detail:"named",type:"keyword"}),yt('import ${name} from "${module}"\n${}',{label:"import",detail:"default",type:"keyword"})],VE=Hy.concat([yt("interface ${name} {\n ${}\n}",{label:"interface",detail:"definition",type:"keyword"}),yt("type ${name} = ${type}",{label:"type",detail:"definition",type:"keyword"}),yt("enum ${name} {\n ${}\n}",{label:"enum",detail:"definition",type:"keyword"})]),Ny=new In,Ky=new Set(["Script","Block","FunctionExpression","FunctionDeclaration","ArrowFunction","MethodDeclaration","ForStatement"]);function vo(i){return(e,t)=>{let r=e.node.getChild("VariableDefinition");return r&&t(r,i),!0}}var YE=["FunctionDeclaration"],jE={FunctionDeclaration:vo("function"),ClassDeclaration:vo("class"),ClassExpression:()=>!0,EnumDeclaration:vo("constant"),TypeAliasDeclaration:vo("type"),NamespaceDeclaration:vo("namespace"),VariableDefinition(i,e){i.matchContext(YE)||e(i,"variable")},TypeDefinition(i,e){e(i,"type")},__proto__:null};function Jy(i,e){let t=Ny.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(ye.IncludeAnonymous).iterate(o=>{if(n)n=!1;else if(o.name){let a=jE[o.name];if(a&&a(o,s)||Ky.has(o.name))return!1}else if(o.to-o.from>8192){for(let a of Jy(i,o.node))r.push(a);return!1}}),Ny.set(e,r),r}var qy=/^[\w$\xa1-\uffff][\w$\d\xa1-\uffff]*$/,ew=["TemplateString","String","RegExp","LineComment","BlockComment","VariableDefinition","TypeDefinition","Label","PropertyDefinition","PropertyName","PrivatePropertyDefinition","PrivatePropertyName","JSXText","JSXAttributeValue","JSXOpenTag","JSXCloseTag","JSXSelfClosingTag",".","?."];function BE(i){let e=ve(i.state).resolveInner(i.pos,-1);if(ew.indexOf(e.name)>-1)return null;let t=e.name=="VariableName"||e.to-e.from<20&&qy.test(i.state.sliceDoc(e.from,e.to));if(!t&&!i.explicit)return null;let r=[];for(let n=e;n;n=n.parent)Ky.has(n.name)&&(r=r.concat(Jy(i.state.doc,n)));return{options:r,from:t?e.from:i.pos,validFor:qy}}var xi=lt.define({name:"javascript",parser:Uy.configure({props:[ti.add({IfStatement:Oi({except:/^\s*({|else\b)/}),TryStatement:Oi({except:/^\s*({|catch\b|finally\b)/}),LabeledStatement:Ub,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:xl({closing:"}"}),ArrowFunction:i=>i.baseIndent+i.unit,"TemplateString BlockComment":()=>null,"Statement Property":Oi({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}}),mt.add({"Block ClassBody SwitchBody EnumBody ObjectExpression ArrayExpression ObjectType":it,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:"$"}}),tw={test:i=>/^JSX/.test(i.name),facet:zn({commentTokens:{block:{open:"{/*",close:"*/}"}}})},Kp=xi.configure({dialect:"ts"},"typescript"),Jp=xi.configure({dialect:"jsx",props:[gl.add(i=>i.isTop?[tw]:void 0)]}),eO=xi.configure({dialect:"jsx ts",props:[gl.add(i=>i.isTop?[tw]:void 0)]},"typescript"),iw=i=>({label:i,type:"keyword"}),rw="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(iw),FE=rw.concat(["declare","implements","private","protected","public"].map(iw));function nw(i={}){let e=i.jsx?i.typescript?eO:Jp:i.typescript?Kp:xi,t=i.typescript?VE.concat(FE):Hy.concat(rw);return new Pe(e,[xi.data.of({autocomplete:dx(ew,fx(t))}),xi.data.of({autocomplete:BE}),i.jsx?qE:[]])}function UE(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 Gy(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 NE=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),qE=M.inputHandler.of((i,e,t,r,n)=>{if((NE?i.composing:i.compositionStarted)||i.state.readOnly||e!=t||r!=">"&&r!="/"||!xi.isActiveAt(i.state,e,-1))return!1;let s=n(),{state:o}=s,a=o.changeByRange(l=>{var c;let{head:h}=l,u=ve(o).resol Line truncated
`);for(let l of a){Aw.lastIndex=0;let c=Aw.exec(l);if(c){let h=o+c.index+c[0].length;t.push(V.widget({widget:new mO(c[0],e),side:-1}).range(h))}o+=l.length+1}}return V.set(t,!0)}function Zw(i){let e;function t(r){let n=e.posAtDOM(r);i(e.state.doc.lineAt(n).number)}return Ae.fromClass(class{constructor(r){e=r,this.decorations=Ew(r,t)}update(r){e=r.view,(r.docChanged||r.viewportChanged)&&(this.decorations=Ew(r.view,t))}},{decorations:r=>r.decorations})}var gO=class extends Ge{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 CZ(i,e,t){let r=[],n=i.state.doc,s=new Set;for(let{from:o,to:a}of i.visibleRanges){let l=i.state.sliceDoc(o,a);for(let c of e){let h=c instanceof RegExp?{re:c}:c;h.re.lastIndex=0;let u;for(;u=h.re.exec(l);){let f=u[h.group!=null?h.group:u.length-1];if(!f)continue;let d=h.suffix?f+h.suffix:f,O=Math.min(o+u.index+u[0].length,n.length),m=n.lineAt(O),S=m.number+":"+d;s.has(S)||(s.add(S),r.push(V.widget({widget:new gO(d,!!h.system,t),side:1}).range(m.to)))}}}return V.set(r,!0)}function Xw(i,e){function t(r){let n=i();return!n||!n.length?V.none:CZ(r,n,e)}return Ae.fromClass(class{constructor(r){this.decorations=t(r)}update(r){(r.docChanged||r.viewportChanged)&&(this.decorations=t(r.view))}},{decorations:r=>r.decorations})}function _Z(i){return Oe.transactionFilter.of(e=>{if(!e.docChanged||!e.isUserEvent("input")||!i.input)return e;let t=[],r=!1;if(e.changes.iterChanges((o,a,l,c,h)=>{let u=h.toString(),f=i.input(u);t.push({from:o,to:a,insert:f}),f!==u&&(r=!0)}),!r)return e;let n=e.annotation(Xe.userEvent),s=e.annotation(Xe.addToHistory);return{changes:t,selection:e.selection,effects:e.effects,scrollIntoView:e.scrollIntoView,annotations:[...n!=null?[Xe.userEvent.of(n)]:[],...s!=null?[Xe.addToHistory.of(s)]:[]]}})}var bO=new st;function Lw(i){return bO.reconfigure(_Z(i))}var Mw=ie.define(),Dw=ie.define(),Ww=ie.define(),Iw=ie.define(),zw=ie.define(),Vw=ie.define(),Yw=ie.define(),SO=ie.define(),jw=ie.define(),Bw=be.define({create(){return le.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Mw)){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 gc(ce(o,4)).range(a))}i=le.of(n,!0)}return i}}),Fw=be.define({create(){return le.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Dw)){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 bc(o).range(a))}i=le.of(n,!0)}return i}}),Uw=be.define({create(){return le.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Ww)){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 xc(o).range(a))}i=le.of(n,!0)}return i}}),Nw=be.define({create(){return le.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(zw)){let r=[],n=t.value.filter(s=>s.line>=1&&s.line<=e.state.doc.lines).sort((s,o)=>s.line-o.line);for(let s of n){let o=e.state.doc.line(s.line).from;r.push((s.enabled?AZ:EZ).range(o))}i=le.of(r,!0)}return i}}),xO=be.define({create(){return le.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Vw)){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 vc(s,o).range(a))}i=le.of(n,!0)}return i}}),qw=be.define({create(){return le.empty},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Yw))if(t.value===null)i=le.empty;else{let r=t.value;if(r>=1&&r<=e.state.doc.lines){let n=e.state.doc.line(r).from;i=le.of(Gw.range(n))}}return i}}),gc=class extends Fe{constructor(t){super();this.hex=t}toDOM(){let t=document.createElement("span");return t.className="gutter-offset-marker",t.textContent=this.hex,t.title="Click to run to here",t}eq(t){return this.hex==t.hex}},bc=class extends Fe{constructor(t){super();this.bytes=t}toDOM(){return document.createTextNode(this.bytes)}eq(t){return this.bytes==t.bytes}},xc=class extends Fe{constructor(t){super();this.clock=t}toDOM(){return document.createTextNode(this.clock)}eq(t){return this.clock==t.clock}},RZ=new class extends Fe{toDOM(){let i=document.createElement("span");return i.className="gutter-breakpoint-placeholder",i.textContent="\u25CF",i}},Sc=class extends Fe{constructor(t){super();this.enabled=t}toDOM(){let t=document.createElement("span");return t.className="gutter-breakpoint "+(this.enabled?"gutter-breakpoint-enabled":"gutter-breakpoint-disabled"),t.innerHTML="\u25CF",t.title=this.enabled?"Breakpoint (click to remove; manage in Breakpoints window)":"Disabled break Line truncated
color: #ff6666;
background-color: #330000;
padding: 4px 8px;
margin: 2px 0;
border-left: 3px solid #ff0000;
font-family: monospace;
`,t}},WZ=be.define({create(){return V.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(an.showMessage)){if(t.value===null||!t.value)return V.none;if(t.value.toggle){let r=[],n=new Map;return i.between(0,e.state.doc.length,(a,l,c)=>{try{let h=e.state.doc.lineAt(l).number;c.spec.widget instanceof Qo&&n.set(h,c.spec.widget.message)}catch(h){}}),n.has(t.value.line)?n.delete(t.value.line):n.set(t.value.line,t.value.msg),Array.from(n.keys()).sort((a,l)=>a-l).forEach(a=>{try{let l=e.state.doc.line(a);r.push(V.widget({widget:new Qo(n.get(a)),block:!0,side:1}).range(l.to))}catch(l){}}),V.set(r,!0)}}return i},provide:i=>M.decorations.from(i)}),vO=class extends qe{constructor(t){super();this.value=t}toDOM(){let t=document.createElement("div");return t.textContent=`${this.value}`,t.style.cssText=`
`,t}},zZ=be.define({create(){return V.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(an.showMessage)){if(t.value===null||!t.value)return V.none;if(t.value.toggle){let r=[],n=new Map;return i.between(0,e.state.doc.length,(a,l,c)=>{try{let h=e.state.doc.lineAt(l).number;c.spec.widget instanceof Qo&&n.set(h,c.spec.widget.message)}catch(h){}}),n.has(t.value.line)?n.delete(t.value.line):n.set(t.value.line,t.value.msg),Array.from(n.keys()).sort((a,l)=>a-l).forEach(a=>{try{let l=e.state.doc.line(a);r.push(V.widget({widget:new Qo(n.get(a)),block:!0,side:1}).range(l.to))}catch(l){}}),V.set(r,!0)}}return i},provide:i=>M.decorations.from(i)}),vO=class extends Ge{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}},Jw=ie.define(),IZ=be.define({create(){return V.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(Jw)){if(t.value===null||!t.value)return V.none;let r=e.state.doc.lineAt(t.value.range.to);return V.set([V.widget({widget:new vO(t.value.val),block:!0,side:1}).range(r.to)])}return i},provide:i=>M.decorations.from(i)}),eP=ie.define(),zZ=V.mark({attributes:{class:"cm-error-span"}}),VZ=be.define({create(){return V.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(eP)){if(t.value===null)return V.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(zZ.range(o,a))}catch(s){}return V.set(r,!0)}return i},provide:i=>M.decorations.from(i)}),tP=ie.define(),YZ=V.line({attributes:{class:"highlight-lines"}}),jZ=be.define({create(){return V.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(tP)){if(t.value===null)return V.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(YZ.range(a.from))}catch(a){}return V.set(s)}return i!==V.none&&(e.docChanged||e.selection)?V.none:i},provide:i=>M.decorations.from(i)}),iP={field:WZ,widget:Qo},ko={effect:Hw,decoration:Kw,field:DZ},Qc={effect:Jw,field:IZ},kc={effect:eP,field:VZ},$c={effect:tP,field:jZ},rP=ie.define(),BZ=V.line({attributes:{class:"cm-traced-line"}}),FZ=be.define({create(){return V.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(rP)){let r=[];for(let n of t.value)try{let s=e.state.doc.line(n);r.push(BZ.range(s.from))}catch(s){}return V.set(r,!0)}return i},provide:i=>M.decorations.from(i)}),Tc={effect:rP,field:FZ};var UZ=[...Mh(lS,Lh),{key:"Mod-Shift-Backspace",run:xd}],oP=Mh(sv,Lh),ss=64,aP=ie.define(),lP=ie.define(),yO=be.define({create(){return new Map},update(i,e){let t=i;for(let r of e.effects)if(r.is(lP))t=new Map;else if(r.is(aP)){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}}),NZ=200,wO={default:{theme:Oc},6502:{isAsm:!0},z80:{isAsm:!0},jsasm:{isAsm:!0},gas:{isAsm:!0},vasm:{isAsm:!0},inform6:{theme:pc},dialog:{theme:pc,lineWrap:!0},markdown:{lineWrap:!0},fastbasic:{noGutters:!0},basic:{noGutters:!0},ecs:{theme:Oc}},cP={input:null};function hP(i){cP.input=i?e=>e.toUpperCase():null}function kO(i){if(!i)return"";let e=i.state.selection.main;return e.empty?"":i.state.sliceDoc(e.from,e.to)}var $o=class $o{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=N.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:Xw(cP)}),this.syncBreakpoints(),N.getToolForFilename(this.path).startsWith("remote:")&&(this.refreshDelayMsec=1e3),t}setVisible(e){e?(this.editor.focus(),$o.tracingEnabled&&this.startTracing()):this.stopTracing()}getShortcuts(){if(!this.editor)return[];var e=this.editor,t=(r,n,s)=>({key:r,label:n,fn:()=>{s(e),e.focus()}});return[t("mod+f","Find",ec),t("mod+g","Find Next",Kn),t("mod+d","Next Occurrence",Ld),t("mod+z","Undo",eo),t("mod+shift+z","Redo",jn)]}startTracing(){!this.probe&&x.startProbing&&(this.probe=x.startProbing(),this.probe.singleFrame=!1,this.probe.clear())}stopTracing(){this.probe&&(x.stopProbing(),this.probe=null),this.editor.dispatch({effects:Tc.effect.of([])})}setTracingEnabled(e){$o.tracingEnabled=e,e?this.startTracing():this.stopTracing()}newEditor(e,t,r){var n=wO[this.mode]||wO.default,s=r||n.isAsm,o=!!n.lineWrap,a=n.theme||wO.default.theme,l=n.useLineNumbers&&!rr;H.embed&&(l=!1,s=!1);let c=n.noGutters||rr;var h;let u=hO[this.mode];u?h=u.language:(console.warn("Unknown mode: "+this.mode),h=null),this.editor=new M({parent:e,doc:t,extensions:[s?[]:ei.of(" "),s?ed.of((f,d)=>{let O=f.state.doc.lineAt(d).number;if(O>=0){let m=f.state.doc.line(O);if(m.text.trim())return f.lineIndent(m.from)}return 0}):[],...s?[Ct.of(pS(()=>Nn().tabsToSpaces))]:[],...bS(Nn()),Ct.of(UZ),l?rl():[],Ax(),Ct.of(Xx),Hb(),ab(),Oe.allowMultipleSelections.of(!0),Ja(),Ub(),ix(),tl(),il(),el(),mb(),Jl(),Md({top:!0}),Ct.of(oP),h||[],a,fO,o?M.lineWrapping:[],ko.field,c?[]:[yc.field,yc.gutter],s&&!c?[Po.field,Po.gutter,wc.field,wc.gutter]:[],Pc.field,Gw.gutter,M.updateListener.of(f=>{for(let d of f.transactions.flatMap(O=>O.effects))if(d.is(Pc.requestToggle)&&it.toggleSourceLine(this.path,d.value),d.is(ns.runToLine)){let O=d.value;if(this.sourcefile&&this.sourcefile.line2offset){let m=this.sourcefile.line2offset.get(O);m>=0&&Co([m])}}}),an.field,iP.field,kc.field,ns.field,ns.gutter,$c.field,Tc.field,yO,Ew(f=>{window.location.hash="asseteditor/"+encodeURIComponent(this.path)+"/"+f}),H.embed?[]:Zw(()=>{var f=N&&N.getToolForF 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:[$c.effect.of({start:e+1,end:t+1}),M.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:[$c.effect.of({start:e,end:e}),M.scrollIntoView(t.from,{y:"center"})]}),this.editor.focus()}getValue(){return this.editor.state.doc.toString()}getSelectionText(){return kO(this.editor)}getPath(){return this.path}markErrors(e){this.clearErrors(),e=e.slice(0,NZ);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:[an.set.of(t),kc.effect.of(r.length>0?r:null)]})}clearErrors(){this.dirtylisting=!0,this.editor.dispatch({effects:[an.set.of(new Map),an.showMessage.of(null),kc.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,ce(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(x.getOpcodeMetadata){var a=parseInt(s.insns.split(" ")[0],16),l=x.getOpcodeMetadata(a,s.offset);if(l&&l.minCycles){var c=l.minCycles+"";n.set(s.line,c)}}}}this.editor.dispatch({effects:[yc.set.of(t),Po.set.of(r),wc.set.of(n)]})}setTimingResult(e){if(this.sourcefile!=null){var t=new Map;for(let[o,a]of this.sourcefile.line2offset){let 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(o,s)}}this.editor.dispatch({effects:[Po.set.of(t)]})}}setCurrentLine(e,t){var r=n=>{this.editor.dispatch({effects:[ns.set.of(n.line),ko.effect.of(n.line),...t?[M.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:M.scrollIntoView(s,{y:"center"})})}this.currentDebugLine=e}}clearCurrentLine(e){if(this.currentDebugLine){if(e){let t=this.editor.state.selection.main.head;this.editor.dispatch({selection:{anchor:t,head:t}})}this.currentDebugLine=null}this.editor.dispatch({effects:[ns.set.of(null),ko.effect.of(null)]})}getActiveLine(){if(this.sourcefile){var e=lt&&lt.c;if(!e&&x.getCPUState&&!x.isRunning()&&(e=x.getCPUState()),e){var t=e&&(e.EPC||e.PC),r=this.sourcefile.findLineForOffset(t,ss);return r}}}refreshDebugState(e){var t=this.getActiveLine();!e&&(t===this.currentDebugLine||!t&&!this.currentDebugLine)||this.setCurrentLine(t,e)}refreshListing(){var e=N.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,ss);s&&t.add(s.line)}}e.clear(),this.editor.dispatch({effects:Tc.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.get(e);if(t>=0)return t;e--}return-1}undoStep(){eo(this.editor)}redoStep(){jn(this.editor)}syncBreakpoints(){let e=it.getSourceBreakpointsForFile(this.path).map(t=>({line:t.line,enabled:t.enabled}));this.editor.dispatch({effects:Pc.setAll.of(e)})}};$o.tracingEnabled=!1;var Qt=$o,PO=1024,qi=class{getSelectionText(){return kO(this.disasmview)}createDiv(e){var t=document.createElement("div");return t.setAttribute("class","editor"),e.appendChild(t),this.newEditor(t),t}newEditor(e){this.disasmview=new M({parent:e,extensions:[tl(),il(),Oe.allowMultipleSelections.of(!0),Ja(),el(),Jl(),$w,pc,ko.field,Oe.tabSize.of(8),Oe.readOnly.of(!0)]})}refresh(e,t){let r=lt||x.saveState(),n=t!==void 0?t:r.c?r.c.PC:0,s=0,o=0,a=x.debugSymbols&&x.debugSymbols.addr2symbol||{},l=(u,f)=>{let d="",O=0;for(;O<f;){let m=u+O|0,S=x.disassemble(m,x.readAddress.bind(x)),y="",A="";for(let k=0;k<S.nbytes;k++)y+=ce(x.readAddress(m+k));for(;y.length<14;)y+=" ";let C=S.line;if(a&&S.isaddr&&(C=C.replace(/([^#])[$]([0-9A-F]+)/,(k,...P)=>{let _=parseInt(P[1],16),L=a[_];return L?P[0]+L:(L=a[ Line truncated
`;d+=Z,m==n&&(o=s),s++,O+=S.nbytes||1}return d};var c=n<0?n-PO:Math.max(0,n-PO);let h=l(c,n-c)+l(n,PO);if(this.disasmview.dispatch({changes:{from:0,to:this.disasmview.state.doc.length,insert:h}}),e){let u=this.disasmview.state.doc.line(o+1);this.disasmview.dispatch({selection:{anchor:u.from,head:u.from},effects:M.scrollIntoView(u.from,{y:"center"})})}}goToAddress(e){e|=0,this.findAndSelectAddress(e)||(this.refresh(!1,e),this.findAndSelectAddress(e)),this.disasmview.focus()}findAndSelectAddress(e){let t=ce(e,4),r=this.disasmview.state.doc;for(let n=1;n<=r.lines;n++){let s=r.line(n);if(s.text.startsWith(t+" "))return this.disasmview.dispatch({selection:{anchor:s.from,head:s.from+t.length},effects:M.scrollIntoView(s.from,{y:"center"})}),!0}return!1}getCursorPC(){let e=this.disasmview.state.selection.main.head,t=this.disasmview.state.doc.lineAt(e).number;if(t>=0){let n=this.disasmview.state.doc.line(t).text.trim().split(/\s+/);if(n&&n.length>=1){let s=parseInt(n[0],16);if(console.log("getCursorPC",s),s>=0)return s}}return-1}},Cc=class extends qi{constructor(e){super(),this.path=e}refreshListing(){var e=N.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}}),!!x.saveState){var r=lt||x.saveState(),n=r.c?r.c.EPC||r.c.PC:0;if(n>=0&&this.assemblyfile){var s=this.assemblyfile.findLineForOffset(n,ss);if(s&&e){let o=this.disasmview.state.doc.line(s.line);this.disasmview.dispatch({selection:{anchor:o.from,head:o.from},effects:M.scrollIntoView(o.from,{y:"center"})})}}}}}goToAddress(e){this.refreshListing();let t=this.assemblyfile&&this.assemblyfile.findLineForOffset(e,ss);if(t){let r=this.disasmview.state.doc.line(t.line);this.disasmview.dispatch({selection:{anchor:r.from,head:r.from},effects:M.scrollIntoView(r.from,{y:"center"})})}this.disasmview.focus()}};function uP(i){let e=[i];try{var t=ms(N.mainPath);t.length>0&&t!="local"&&e.push(t+"/"+i)}catch(s){}for(var r of e){var n=N&&N.getFile(r);if(typeof n=="string")return r}return null}function nP(i){for(var e of Ym(i))if(e.editorStyle){var t=kw(e.editorStyle);if(t)return t}return null}var QO=new Map;function qZ(i){let e=N.getToolForFilename(N.mainPath),t=na(e,N.platform_id),r=ra(e,N.platform_id);if(!t||!r.length)return Promise.resolve(null);let n=t+":"+i;return QO.has(n)||QO.set(n,(async()=>{var s=[...r.map(h=>h+"/"+i),i];for(var o of s){var a={preload_fs:t,readshared:o,updates:[],buildsteps:[]},l=await N.queryWorker(a),c=l&&l.output;if(c instanceof Uint8Array&&c.length>0)return new TextDecoder().decode(c)}return null})()),QO.get(n)}var Qr=class{constructor(e){this.fn=e;this.languageCompartment=new nt}getSelectionText(){return kO(this.view)}createDiv(e){var t=document.createElement("div");t.setAttribute("class","editor"),e.appendChild(t);var r=nP(this.fn||this.currentPath||"")||uO();return this.view=new M({parent:t,extensions:[tl(),il(),Oe.allowMultipleSelections.of(!0),Ja(),el(),Jl(),Md({top:!0}),Ct.of(oP),this.languageCompartment.of(r),Oc,fO,Oe.readOnly.of(!0)]}),this.refresh(!1),t}setVisible(e){e&&this.refresh(!1)}setHeaderText(e){var t=nP(this.currentPath||this.fn||"")||uO();this.view.dispatch({effects:this.languageCompartment.reconfigure(t),changes:{from:0,to:this.view.state.doc.length,insert:e}})}refresh(e){var t=this.fn;if(!t){var r=window.location.hash;if(!r||!r.startsWith("#headerview/"))return;t=this.fn=decodeURIComponent(r.substring(12))}this.loadIncludeFile(t)}async loadIncludeFile(e){this.requestedFn=e;var t=uP(e);if(t){this.currentPath=t,this.setHeaderText(N.getFile(t));return}var r=await qZ(e);if(this.requestedFn===e){if(r!=null){this.currentPath=e,this.setHeaderText(r);return}this.currentPath=e,this.setHeaderText("// "+e+` was not found.
`,t.className="cm-line",t}},eP=ie.define(),VZ=be.define({create(){return V.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(eP)){if(t.value===null||!t.value)return V.none;let r=e.state.doc.lineAt(t.value.range.to);return V.set([V.widget({widget:new vO(t.value.val),block:!0,side:1}).range(r.to)])}return i},provide:i=>M.decorations.from(i)}),tP=ie.define(),YZ=V.mark({attributes:{class:"cm-error-span"}}),jZ=be.define({create(){return V.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(tP)){if(t.value===null)return V.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(YZ.range(o,a))}catch(s){}return V.set(r,!0)}return i},provide:i=>M.decorations.from(i)}),iP=ie.define(),BZ=V.line({attributes:{class:"highlight-lines"}}),FZ=be.define({create(){return V.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(iP)){if(t.value===null)return V.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(BZ.range(a.from))}catch(a){}return V.set(s)}return i!==V.none&&(e.docChanged||e.selection)?V.none:i},provide:i=>M.decorations.from(i)}),rP={field:zZ,widget:Qo},ko={effect:Kw,decoration:Jw,field:IZ},Qc={effect:eP,field:VZ},kc={effect:tP,field:jZ},$c={effect:iP,field:FZ},nP=ie.define(),UZ=V.line({attributes:{class:"cm-traced-line"}}),NZ=be.define({create(){return V.none},update(i,e){i=i.map(e.changes);for(let t of e.effects)if(t.is(nP)){let r=[];for(let n of t.value)try{let s=e.state.doc.line(n);r.push(UZ.range(s.from))}catch(s){}return V.set(r,!0)}return i},provide:i=>M.decorations.from(i)}),Tc={effect:nP,field:NZ};var qZ=[...Mh(cS,Lh),{key:"Mod-Shift-Backspace",run:xd}],aP=Mh(ov,Lh),os=64,lP=ie.define(),cP=ie.define(),yO=be.define({create(){return new Map},update(i,e){let t=i;for(let r of e.effects)if(r.is(cP))t=new Map;else if(r.is(lP)){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}}),GZ=200,wO={default:{theme:Oc},6502:{isAsm:!0},z80:{isAsm:!0},jsasm:{isAsm:!0},gas:{isAsm:!0},vasm:{isAsm:!0},inform6:{theme:pc},dialog:{theme:pc,lineWrap:!0},markdown:{lineWrap:!0},fastbasic:{noGutters:!0},basic:{noGutters:!0},ecs:{theme:Oc}},hP={input:null};function uP(i){hP.input=i?e=>e.toUpperCase():null}function kO(i){if(!i)return"";let e=i.state.selection.main;return e.empty?"":i.state.sliceDoc(e.from,e.to)}var $o=class $o{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=N.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:Lw(hP)}),this.syncBreakpoints(),N.getToolForFilename(this.path).startsWith("remote:")&&(this.refreshDelayMsec=1e3),t}setVisible(e){e?(this.editor.focus(),$o.tracingEnabled&&this.startTracing()):this.stopTracing()}getShortcuts(){if(!this.editor)return[];var e=this.editor,t=(r,n,s)=>({key:r,label:n,fn:()=>{s(e),e.focus()}});return[t("mod+f","Find",ec),t("mod+g","Find Next",Jn),t("mod+d","Next Occurrence",Ld),t("mod+z","Undo",to),t("mod+shift+z","Redo",jn)]}startTracing(){!this.probe&&x.startProbing&&(this.probe=x.startProbing(),this.probe.singleFrame=!1,this.probe.clear())}stopTracing(){this.probe&&(x.stopProbing(),this.probe=null),this.editor.dispatch({effects:Tc.effect.of([])})}setTracingEnabled(e){$o.tracingEnabled=e,e?this.startTracing():this.stopTracing()}newEditor(e,t,r){var n=wO[this.mode]||wO.default,s=r||n.isAsm,o=!!n.lineWrap,a=n.theme||wO.default.theme,l=n.useLineNumbers&&!rr;H.embed&&(l=!1,s=!1);let c=n.noGutters||rr;var h;let u=hO[this.mode];u?h=u.language:(console.warn("Unknown mode: "+this.mode),h=null),this.editor=new M({parent:e,doc:t,extensions:[s?[]:ei.of(" "),s?ed.of((f,d)=>{let O=f.state.doc.lineAt(d).number;if(O>=0){let m=f.state.doc.line(O);if(m.text.trim())return f.lineIndent(m.from)}return 0}):[],...s?[Ct.of(OS(()=>Nn().tabsToSpaces))]:[],...xS(Nn()),Ct.of(qZ),l?rl():[],Ex(),Ct.of(Lx),Kb(),lb(),Oe.allowMultipleSelections.of(!0),Ja(),Nb(),rx(),tl(),il(),el(),gb(),Jl(),Md({top:!0}),Ct.of(aP),h||[],a,fO,o?M.lineWrapping:[],ko.field,c?[]:[yc.field,yc.gutter],s&&!c?[Po.field,Po.gutter,wc.field,wc.gutter]:[],Pc.field,Hw.gutter,M.updateListener.of(f=>{for(let d of f.transactions.flatMap(O=>O.effects))if(d.is(Pc.requestToggle)&&rt.toggleSourceLine(this.path,d.value),d.is(ss.runToLine)){let O=d.value;if(this.sourcefile&&this.sourcefile.line2offset){let m=this.sourcefile.line2offset.get(O);m>=0&&Co([m])}}}),an.field,rP.field,kc.field,ss.field,ss.gutter,$c.field,Tc.field,yO,Zw(f=>{window.location.hash="asseteditor/"+encodeURIComponent(this.path)+"/"+f}),H.embed?[]:Xw(()=>{var f=N&&N.getToolForF 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:[$c.effect.of({start:e+1,end:t+1}),M.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:[$c.effect.of({start:e,end:e}),M.scrollIntoView(t.from,{y:"center"})]}),this.editor.focus()}getValue(){return this.editor.state.doc.toString()}getSelectionText(){return kO(this.editor)}getPath(){return this.path}markErrors(e){this.clearErrors(),e=e.slice(0,GZ);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:[an.set.of(t),kc.effect.of(r.length>0?r:null)]})}clearErrors(){this.dirtylisting=!0,this.editor.dispatch({effects:[an.set.of(new Map),an.showMessage.of(null),kc.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,ce(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(x.getOpcodeMetadata){var a=parseInt(s.insns.split(" ")[0],16),l=x.getOpcodeMetadata(a,s.offset);if(l&&l.minCycles){var c=l.minCycles+"";n.set(s.line,c)}}}}this.editor.dispatch({effects:[yc.set.of(t),Po.set.of(r),wc.set.of(n)]})}setTimingResult(e){if(this.sourcefile!=null){var t=new Map;for(let[o,a]of this.sourcefile.line2offset){let 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(o,s)}}this.editor.dispatch({effects:[Po.set.of(t)]})}}setCurrentLine(e,t){var r=n=>{this.editor.dispatch({effects:[ss.set.of(n.line),ko.effect.of(n.line),...t?[M.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:M.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:[ss.set.of(null),ko.effect.of(null)]})}getActiveLine(){if(this.sourcefile){var e=ct&&ct.c;if(!e&&x.getCPUState&&!x.isRunning()&&(e=x.getCPUState()),e){var t=e&&(e.EPC||e.PC),r=this.sourcefile.findLineForOffset(t,os);return r}}}refreshDebugState(e){var t=this.getActiveLine();!e&&(t===this.currentDebugLine||!t&&!this.currentDebugLine)||this.setCurrentLine(t,e)}refreshListing(){var e=N.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,os);s&&t.add(s.line)}}e.clear(),this.editor.dispatch({effects:Tc.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.get(e);if(t>=0)return t;e--}return-1}undoStep(){to(this.editor)}redoStep(){jn(this.editor)}syncBreakpoints(){let e=rt.getSourceBreakpointsForFile(this.path).map(t=>({line:t.line,enabled:t.enabled}));this.editor.dispatch({effects:Pc.setAll.of(e)})}};$o.tracingEnabled=!1;var Qt=$o,PO=1024,qi=class{getSelectionText(){return kO(this.disasmview)}createDiv(e){var t=document.createElement("div");return t.setAttribute("class","editor"),e.appendChild(t),this.newEditor(t),t}newEditor(e){this.disasmview=new M({parent:e,extensions:[tl(),il(),Oe.allowMultipleSelections.of(!0),Ja(),el(),Jl(),Tw,pc,ko.field,Oe.tabSize.of(8),Oe.readOnly.of(!0)]})}refresh(e,t){let r=ct||x.saveState(),n=t!==void 0?t:r.c?r.c.PC:0,s=0,o=0,a=x.debugSymbols&&x.debugSymbols.addr2symbol||{},l=(u,f)=>{let d="",O=0;for(;O<f;){let m=u+O|0,S=x.disassemble(m,x.readAddress.bind(x)),y="",A="";for(let k=0;k<S.nbytes;k++)y+=ce(x.readAddress(m+k));for(;y.length<14;)y+=" ";let C=S.line;if(a&&S.isaddr&&(C=C.replace(/([^#])[$]([0-9A-F]+)/,(k,...P)=>{let _=parseInt(P[1],16),L=a[_];return L?P[0]+L:(L=a[ Line truncated
`;d+=Z,m==n&&(o=s),s++,O+=S.nbytes||1}return d};var c=n<0?n-PO:Math.max(0,n-PO);let h=l(c,n-c)+l(n,PO);if(this.disasmview.dispatch({changes:{from:0,to:this.disasmview.state.doc.length,insert:h}}),e){let u=this.disasmview.state.doc.line(o+1);this.disasmview.dispatch({selection:{anchor:u.from,head:u.from},effects:M.scrollIntoView(u.from,{y:"center"})})}}goToAddress(e){e|=0,this.findAndSelectAddress(e)||(this.refresh(!1,e),this.findAndSelectAddress(e)),this.disasmview.focus()}findAndSelectAddress(e){let t=ce(e,4),r=this.disasmview.state.doc;for(let n=1;n<=r.lines;n++){let s=r.line(n);if(s.text.startsWith(t+" "))return this.disasmview.dispatch({selection:{anchor:s.from,head:s.from+t.length},effects:M.scrollIntoView(s.from,{y:"center"})}),!0}return!1}getCursorPC(){let e=this.disasmview.state.selection.main.head,t=this.disasmview.state.doc.lineAt(e).number;if(t>=0){let n=this.disasmview.state.doc.line(t).text.trim().split(/\s+/);if(n&&n.length>=1){let s=parseInt(n[0],16);if(console.log("getCursorPC",s),s>=0)return s}}return-1}},Cc=class extends qi{constructor(e){super(),this.path=e}refreshListing(){var e=N.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}}),!!x.saveState){var r=ct||x.saveState(),n=r.c?r.c.EPC||r.c.PC:0;if(n>=0&&this.assemblyfile){var s=this.assemblyfile.findLineForOffset(n,os);if(s&&e){let o=this.disasmview.state.doc.line(s.line);this.disasmview.dispatch({selection:{anchor:o.from,head:o.from},effects:M.scrollIntoView(o.from,{y:"center"})})}}}}}goToAddress(e){this.refreshListing();let t=this.assemblyfile&&this.assemblyfile.findLineForOffset(e,os);if(t){let r=this.disasmview.state.doc.line(t.line);this.disasmview.dispatch({selection:{anchor:r.from,head:r.from},effects:M.scrollIntoView(r.from,{y:"center"})})}this.disasmview.focus()}};function fP(i){let e=[i];try{var t=gs(N.mainPath);t.length>0&&t!="local"&&e.push(t+"/"+i)}catch(s){}for(var r of e){var n=N&&N.getFile(r);if(typeof n=="string")return r}return null}function sP(i){for(var e of Ym(i))if(e.editorStyle){var t=$w(e.editorStyle);if(t)return t}return null}var QO=new Map;function HZ(i){let e=N.getToolForFilename(N.mainPath),t=na(e,N.platform_id),r=ra(e,N.platform_id);if(!t||!r.length)return Promise.resolve(null);let n=t+":"+i;return QO.has(n)||QO.set(n,(async()=>{var s=[...r.map(h=>h+"/"+i),i];for(var o of s){var a={preload_fs:t,readshared:o,updates:[],buildsteps:[]},l=await N.queryWorker(a),c=l&&l.output;if(c instanceof Uint8Array&&c.length>0)return new TextDecoder().decode(c)}return null})()),QO.get(n)}var Qr=class{constructor(e){this.fn=e;this.languageCompartment=new st}getSelectionText(){return kO(this.view)}createDiv(e){var t=document.createElement("div");t.setAttribute("class","editor"),e.appendChild(t);var r=sP(this.fn||this.currentPath||"")||uO();return this.view=new M({parent:t,extensions:[tl(),il(),Oe.allowMultipleSelections.of(!0),Ja(),el(),Jl(),Md({top:!0}),Ct.of(aP),this.languageCompartment.of(r),Oc,fO,Oe.readOnly.of(!0)]}),this.refresh(!1),t}setVisible(e){e&&this.refresh(!1)}setHeaderText(e){var t=sP(this.currentPath||this.fn||"")||uO();this.view.dispatch({effects:this.languageCompartment.reconfigure(t),changes:{from:0,to:this.view.state.doc.length,insert:e}})}refresh(e){var t=this.fn;if(!t){var r=window.location.hash;if(!r||!r.startsWith("#headerview/"))return;t=this.fn=decodeURIComponent(r.substring(12))}this.loadIncludeFile(t)}async loadIncludeFile(e){this.requestedFn=e;var t=fP(e);if(t){this.currentPath=t,this.setHeaderText(N.getFile(t));return}var r=await HZ(e);if(this.requestedFn===e){if(r!=null){this.currentPath=e,this.setHeaderText(r);return}this.currentPath=e,this.setHeaderText("// "+e+` was not found.
// Project include files are loaded during a build -- try building first.
// Toolchain headers are only available when the tool has a bundled filesystem.`)}}navigateToLine(e){if(!(!this.view||e<1)&&e<=this.view.state.doc.lines){let t=this.view.state.doc.line(e);this.view.dispatch({selection:{anchor:t.from},effects:[M.scrollIntoView(t.from,{y:"center"})]}),this.view.focus()}}};var ln=class{constructor(e){var t=document.createElement("div");t.setAttribute("class","memdump"),e.appendChild(t),this.maindiv=t}create(e,t,r){this.getLineAt=r,this.memorylist=new ea({w:$(e).width(),h:$(e).height(),itemHeight:$O(),totalRows:t,generatorFn:n=>{var s=r(n),o=document.createElement("div");return o.appendChild(document.createTextNode(s.text)),s.clas!=null&&(o.className=s.clas),o}}),$(this.maindiv).append(this.memorylist.container)}refresh(){this.memorylist&&$(this.maindiv).find("[data-index]").each((e,t)=>{var r=t,n=parseInt(r.getAttribute("data-index")),s=r.innerText,o=this.getLineAt(n),a=o.text;if(s!=a&&(r.innerText=a,o.clas!=null&&!r.classList.contains(o.clas))){var l=Array.from(r.classList);l.forEach(c=>r.classList.remove(c)),r.classList.add("vrow"),r.classList.add(o.clas)}})}};function $O(){return $("#dropdownMenuButton").first().height()}function fP(i){return i.endsWith("_SIZE__")||i.endsWith("_LAST__")||i.endsWith("STACKSIZE__")||i.endsWith("FILEOFFS__")||i.startsWith("l__")||i.startsWith("s__")||i.startsWith(".__.")}var kr=class{constructor(){this.recreateOnResize=!0;this.hibits=0;this.totalRows=5120;this.gotoRow=-1}createDiv(e){var t=document.createElement("div");return t.setAttribute("class","memdump"),e.appendChild(t),this.showMemoryWindow(e,t),this.maindiv=t}showMemoryWindow(e,t){this.memorylist=new ea({w:$(e).width(),h:$(e).height(),itemHeight:$O(),totalRows:this.totalRows,generatorFn:n=>{var s=this.getMemoryLineAt(n),o=document.createElement("div");if(this.dumplines){var a=this.dumplines[n];a&&o.classList.add("seg_"+this.getMemorySegment(this.dumplines[n].a|this.hibits))}return n==this.gotoRow&&o.classList.add("goto_line"),o.appendChild(document.createTextNode(s)),o}}),$(t).append(this.memorylist.container),this.tick();let r=so();r&&this.dumplines&&this.scrollToAddress(r.data_start)}scrollToAddress(e){this.dumplines&&(this.hibits=e&4294901760,this.memorylist.scrollToItem(this.findMemoryWindowLine(e&65535)))}goToAddress(e){this.hibits=e&4294901760;var t=this.getDumpLines(),r;if(t&&t.length?r=this.findMemoryWindowLine(e&65535):r=(e&65535)>>4,r!==void 0){if(this.gotoRow=r,this.memorylist){var n=this.memorylist.container,s=r*this.memorylist.itemHeight-(n.clientHeight-this.memorylist.itemHeight)/2;n.scrollTop=Math.max(0,s)}this.tick()}}refresh(){this.dumplines=null,this.tick()}tick(){this.memorylist&&$(this.maindiv).find("[data-index]").each((e,t)=>{var r=$(t),n=parseInt(r.attr("data-index")),s=r.text(),o=this.getMemoryLineAt(n);s!=o&&r.text(o),r.toggleClass("goto_line",n==this.gotoRow)})}getMemoryLineAt(e){var t=e*16,r=0,n=16,s;if(this.getDumpLines()){var o=this.dumplines[e];if(o)t=o.a&65520,r=o.a-t,n=r+o.l,s=o.s;else return"."}for(var a=ce(t+r,4)+" ",l=0;l<r;l++)a+=" ";r>8&&(a+=" ");for(var l=r;l<n;l++){var c=this.readAddress(t+l|this.hibits);l==8&&(a+=" "),a+=" "+(typeof c=="number"?ce(c,2):"??")}for(var l=n;l<16;l++)a+=" ";return s&&(a+=" "+s),a}readAddress(e){return x.readAddress(e)}getDumpLineAt(e){var t=this.dumplines[e];if(t)return t.a+" "+t.s}getDumpLines(){var e=x.debugSymbols&&x.debugSymbols.addr2symbol||{};if(this.dumplines==null){this.dumplines=[];var t=0,r;for(let a of Object.keys(e)){var n=parseInt(a),s=e[n|this.hibits];if(r)for(fP(r)&&(r="");t<n&&this.dumplines.length<65536;){var o=t+16&1048560;o>n&&(o=n),this.dumplines.push({a:t,l:o-t,s:r}),t=o}r=s}}return this.dumplines}getMemorySegment(e){let t=so();if(t){if(e>=t.data_start&&e<t.data_start+t.data_size)return x.getSP&&e>=x.getSP()-15?"stack":"data";if(e>=t.code_start&&e<t.code_start+(t.code_size||t.rom_size))return"code"}var r=N.segments;if(r){for(var n of r)if(e>=n.start&&e<n.start+n.size){if(n.type=="rom")return"code";if(n.type=="ram")return"data";if(n.type=="io")return"io"}}return"unknown"}findMemoryWindowLine(e){for(var t=0;t<this.dumplines.length;t++)if(this.dumplines[t].a>=e)return t}},_c=class extends kr{constructor(){super(...arguments);this.totalRows=2048}readAddress(t){return x.readVRAMAddress(t)}getMemorySegment(t){return"video"}getDumpLines(){return null}},_o=class{constructor(e,t){this.recreateOnResize=!0;this.path=e,this.data=t}populateVlist(){$(this.vlist.maindiv).empty(),this.vlist.create(this.parent,this.data.length+15>>4,this.getMemoryLineAt.bind(this))}createDiv(e){return this.parent=e,this.vlist=new ln(this.parent),this.populateVlist(),this.vlist.maindiv}setData(e){this.data=e,this.populateVlist()}getMemoryLineAt(e){for(var t=e*16,r=0,n=16,s=ce(t+r,4)+" ",o=0;o<r;o++)s+=" ";r>8&&(s+=" ");for(var o=r;o<n;o++){var a=this.data[t+o];o==8&&(s+=" "),s+=" "+(a>=0?ce(a,2):" ")}return{text:s}}refresh(){this.vlist.refresh()}getPath(){return this.path}},Rc=class{createDiv(e){return this.maindiv=Pi(e,"v Line truncated
// Toolchain headers are only available when the tool has a bundled filesystem.`)}}navigateToLine(e){if(!(!this.view||e<1)&&e<=this.view.state.doc.lines){let t=this.view.state.doc.line(e);this.view.dispatch({selection:{anchor:t.from},effects:[M.scrollIntoView(t.from,{y:"center"})]}),this.view.focus()}}};var ln=class{constructor(e){var t=document.createElement("div");t.setAttribute("class","memdump"),e.appendChild(t),this.maindiv=t}create(e,t,r){this.getLineAt=r,this.memorylist=new ea({w:$(e).width(),h:$(e).height(),itemHeight:$O(),totalRows:t,generatorFn:n=>{var s=r(n),o=document.createElement("div");return o.appendChild(document.createTextNode(s.text)),s.clas!=null&&(o.className=s.clas),o}}),$(this.maindiv).append(this.memorylist.container)}refresh(){this.memorylist&&$(this.maindiv).find("[data-index]").each((e,t)=>{var r=t,n=parseInt(r.getAttribute("data-index")),s=r.innerText,o=this.getLineAt(n),a=o.text;if(s!=a&&(r.innerText=a,o.clas!=null&&!r.classList.contains(o.clas))){var l=Array.from(r.classList);l.forEach(c=>r.classList.remove(c)),r.classList.add("vrow"),r.classList.add(o.clas)}})}};function $O(){return $("#dropdownMenuButton").first().height()}function dP(i){return i.endsWith("_SIZE__")||i.endsWith("_LAST__")||i.endsWith("STACKSIZE__")||i.endsWith("FILEOFFS__")||i.startsWith("l__")||i.startsWith("s__")||i.startsWith(".__.")}var kr=class{constructor(){this.recreateOnResize=!0;this.hibits=0;this.totalRows=5120;this.gotoRow=-1}createDiv(e){var t=document.createElement("div");return t.setAttribute("class","memdump"),e.appendChild(t),this.showMemoryWindow(e,t),this.maindiv=t}showMemoryWindow(e,t){this.memorylist=new ea({w:$(e).width(),h:$(e).height(),itemHeight:$O(),totalRows:this.totalRows,generatorFn:n=>{var s=this.getMemoryLineAt(n),o=document.createElement("div");if(this.dumplines){var a=this.dumplines[n];a&&o.classList.add("seg_"+this.getMemorySegment(this.dumplines[n].a|this.hibits))}return n==this.gotoRow&&o.classList.add("goto_line"),o.appendChild(document.createTextNode(s)),o}}),$(t).append(this.memorylist.container),this.tick();let r=so();r&&this.dumplines&&this.scrollToAddress(r.data_start)}scrollToAddress(e){this.dumplines&&(this.hibits=e&4294901760,this.memorylist.scrollToItem(this.findMemoryWindowLine(e&65535)))}goToAddress(e){this.hibits=e&4294901760;var t=this.getDumpLines(),r;if(t&&t.length?r=this.findMemoryWindowLine(e&65535):r=(e&65535)>>4,r!==void 0){if(this.gotoRow=r,this.memorylist){var n=this.memorylist.container,s=r*this.memorylist.itemHeight-(n.clientHeight-this.memorylist.itemHeight)/2;n.scrollTop=Math.max(0,s)}this.tick()}}refresh(){this.dumplines=null,this.tick()}tick(){this.memorylist&&$(this.maindiv).find("[data-index]").each((e,t)=>{var r=$(t),n=parseInt(r.attr("data-index")),s=r.text(),o=this.getMemoryLineAt(n);s!=o&&r.text(o),r.toggleClass("goto_line",n==this.gotoRow)})}getMemoryLineAt(e){var t=e*16,r=0,n=16,s;if(this.getDumpLines()){var o=this.dumplines[e];if(o)t=o.a&65520,r=o.a-t,n=r+o.l,s=o.s;else return"."}for(var a=ce(t+r,4)+" ",l=0;l<r;l++)a+=" ";r>8&&(a+=" ");for(var l=r;l<n;l++){var c=this.readAddress(t+l|this.hibits);l==8&&(a+=" "),a+=" "+(typeof c=="number"?ce(c,2):"??")}for(var l=n;l<16;l++)a+=" ";return s&&(a+=" "+s),a}readAddress(e){return x.readAddress(e)}getDumpLineAt(e){var t=this.dumplines[e];if(t)return t.a+" "+t.s}getDumpLines(){var e=x.debugSymbols&&x.debugSymbols.addr2symbol||{};if(this.dumplines==null){this.dumplines=[];var t=0,r;for(let a of Object.keys(e)){var n=parseInt(a),s=e[n|this.hibits];if(r)for(dP(r)&&(r="");t<n&&this.dumplines.length<65536;){var o=t+16&1048560;o>n&&(o=n),this.dumplines.push({a:t,l:o-t,s:r}),t=o}r=s}}return this.dumplines}getMemorySegment(e){let t=so();if(t){if(e>=t.data_start&&e<t.data_start+t.data_size)return x.getSP&&e>=x.getSP()-15?"stack":"data";if(e>=t.code_start&&e<t.code_start+(t.code_size||t.rom_size))return"code"}var r=N.segments;if(r){for(var n of r)if(e>=n.start&&e<n.start+n.size){if(n.type=="rom")return"code";if(n.type=="ram")return"data";if(n.type=="io")return"io"}}return"unknown"}findMemoryWindowLine(e){for(var t=0;t<this.dumplines.length;t++)if(this.dumplines[t].a>=e)return t}},_c=class extends kr{constructor(){super(...arguments);this.totalRows=2048}readAddress(t){return x.readVRAMAddress(t)}getMemorySegment(t){return"video"}getDumpLines(){return null}},_o=class{constructor(e,t){this.recreateOnResize=!0;this.path=e,this.data=t}populateVlist(){$(this.vlist.maindiv).empty(),this.vlist.create(this.parent,this.data.length+15>>4,this.getMemoryLineAt.bind(this))}createDiv(e){return this.parent=e,this.vlist=new ln(this.parent),this.populateVlist(),this.vlist.maindiv}setData(e){this.data=e,this.populateVlist()}getMemoryLineAt(e){for(var t=e*16,r=0,n=16,s=ce(t+r,4)+" ",o=0;o<r;o++)s+=" ";r>8&&(s+=" ");for(var o=r;o<n;o++){var a=this.data[t+o];o==8&&(s+=" "),s+=" "+(a>=0?ce(a,2):" ")}return{text:s}}refresh(){this.vlist.refresh()}getPath(){return this.path}},Rc=class{createDiv(e){return this.maindiv=Pi(e,"v Line truncated
`+s),n+=`
`+this.opToString(l,c,d))}),"X: "+t+" Y: "+r+" "+n}refresh(){this.tick(),this.datau32.fill(Si)}tick(){super.tick(),this.drawImage()}drawImage(){this.ctx.putImageData(this.imageData,0,0)}clear(){this.datau32.fill(Si)}},Ec=class extends Ac{createDiv(e){return this.createCanvas(e,256,256)}initCanvas(){super.initCanvas(),this.canvas.onclick=e=>{var t=Go(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&&Co([s])}}clear(){for(var e=0;e<=65535;e++){var t=x.readAddress(e),r=t>>2|t&31;r|=r<<8|r<<16,this.datau32[e]=r|Si}}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|Si,this.datau32[t&65535]=l}}getTooltipText(e,t){var r=(e&255)+(t<<8),n="",s=-1,o={},a=null,l=[];return this.redraw((c,h,u,f,d,O)=>{switch(c){case 16777216:s=h,a=this.addr2symbol(h)||a;break;case 167772160:l.push(a);break;case 184549376:a=l.pop();break}var m=c|s;h==r&&!o[m]&&(n==""&&a&&(n+=`
`+a),n+=`
PC `+this.addr2str(s)+" "+this.opToString(c,null,O),o[m]=1)}),this.addr2str(r)+n}},CO=class extends Ac{initCanvas(){super.initCanvas(),this.canvas.onclick=e=>{var t=Go(this.canvas,e),r=Math.floor(t.x),n=Math.floor(t.y),s=this.getOpAtPos(t.x,t.y,16777216);s&&(Ei("toline"),x.runEval(()=>{let o=x.getRasterScanline&&x.getRasterScanline()>=n;return o&&x.getRasterLineClock?o&&x.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|Si;this.datau32[o]|=a}}drawImage(){let e=Si;for(let t=0;t<this.datau32.length;t++)this.datau32[t]==Si?this.datau32[t]=e:e=this.datau32[t];super.drawImage()}},Zc=class extends CO{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]==Si&&(this.datau32[o]=a|Si)}}},Xc=class extends $r{constructor(){super(...arguments);this.recreateOnResize=!0}createDiv(t){return this.vlist=new ln(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="("+wi(s.row,4)+", "+wi(s.col,4)+") "+Os(s.asm||"",20)+o,o.indexOf("Write ")>=0&&(n="seg_io")}return{text:r,clas:n}}refresh(){this.tick()}tick(){let t=x instanceof Xh||x instanceof Zh;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(x.disassemble){var h=x.disassemble(n,x.readAddress.bind(x));c.asm=h&&h.line}break;default:var u=this.opToString(r,n,l);u!=""&&c.info.push(u);break}}),this.vlist.refresh()}},Lc=class extends $r{constructor(){super(...arguments);this.recreateOnResize=!0}createDiv(t){return this.vlist=new ln(t),this.vlist.create(t,this.totalScanlines,this.getMemoryLineAt.bind(this)),this.vlist.maindiv}getMemoryLineAt(t){for(var r=wi(t+"",3)+" ",n="seg_code",s=this.dumplines&&this.dumplines[t]||[],o=Math.round(this.cyclesPerLine/3.3),a=0;a<this.cyclesPerLine;a++){var l=s[a];if(l!==void 0){var c=l&65535,h=h&Si;if(h==16777216)r+=",";else{var u=ce(c);r+=u,a+=u.length-1}}else r+=a==o?"|":"."}return s[-1]&&(r+=" "+s[-1]),{text:r,clas:n}}refresh(){this.tick()}tick(){let t=x instanceof Xh||x instanceof Zh;this.dumplines={},this.redraw((r,n,s,o,a,l)=>{var c=this.dumplines[o];switch(c==null&&(this.dumplines[o]=c=[]),r){case 16777216:var h=x.debugSymbols.addr2symbol[n];h&&(c[-1]=h);break;case 335544320:case 352321536:case 369098752:case 385875968:c[s]=r|n;break}}),this.vlist.refresh()}},Mc=class extends $r{constructor(){super(...arguments);this.recreateOnResize=!0;this.cumulativeData=!0}createDiv(t){return x.debugSymbols&&x.debugSymbols.symbolmap?this.keys=Array.from(Object.keys(x.debugSymbols.symbolmap).filter(r=>!fP(r))):this.keys=["no symbols defined"],this.vlist=new ln(t),this.vlist.create(t,this.keys.length+1,this.getMemoryLineAt.bind(this)),this.vlist.maindiv}getMemoryLineAt(t){if(t==0)return{text:wi("Symbol",35)+wi("Reads",8)+wi("Writes",8)};var r=this.keys[t-1],n=this.dumplines&&this.dumplines[r];function s(l){var c=n[l]|0;return wi(c?c.toString():"",8)}var o,a;return n!=null?(o=wi(r,35)+s(301989888)+s(318767104),n[16777216]?a="seg_code":n[335544320]||n[352321536]?a="seg_io":a="seg_data"):(o=wi(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=x.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()}},Dc=class{constructor(){this.editingId=null}createDiv(e){return this.maindiv=Pi(e,"vertical-scroll bp-view"),this.render(),this.maindiv[0]}refresh(e){this.render()}render(){let e=this.maindiv.empty(),t=mc(),r=this.editingId!=null?t.find(h=>h.bp.id==this.editingId):null,n=$('<div class="bp-form"/>'),s=$('<input type="text" class="bp-input" spellcheck="false"/>').attr("placeholder","address or symbol (e.g. $8000, mainloop)").val(r&&r.bp.type=="address"?r.bp.target:""),o=$('<input type="text" class="bp-input" spellcheck="false"/>').attr("placeholder","condition (e.g. A>=$20, #scanline==222)").val(r&&r.bp.condition||""),a=$('<button class="btn btn-default btn-xs bp-submit"/>').text(r?"Save":"Add"),l=$('<button class="btn btn-default btn-xs bp-submit"/>').text("Cancel");l.toggl Line truncated
`)<0&&e.indexOf("\r")<0)return e.trim()}return""}function eX(i){var t;let e=i.record;if(e.source==="project"){let r=e.file;if(!r||!X.isWindow(r))return;let n=X.createOrShow(r);n instanceof Qt&&e.line&&n.navigateToLine(e.line)}else if(e.source==="toolchain"){let r=e.file;if(!r)return;To(r);let n=X.createOrShow("#headerview/"+r);n instanceof Qr&&e.line&&n.navigateToLine(e.line)}else if(e.source==="debugger"){let r=(t=e.addr)!=null?t:-1;if(r<0)return;if(e.kind==="label"&&X.isWindow("#disasm")){let n=X.createOrShow("#disasm");n instanceof qi&&n.goToAddress(r)}else{let n=X.createOrShow("#memory");n instanceof kr&&n.goToAddress(r)}}else if(e.source==="docs"){let r=e.url||"";r.startsWith("#help/")?X.createOrShow(r):r&&window.open(r,"_blank")}}function _O(){bootbox.dialog({title:"Search",onEscape:!0,message:`
PC `+this.addr2str(s)+" "+this.opToString(c,null,O),o[m]=1)}),this.addr2str(r)+n}},CO=class extends Ac{initCanvas(){super.initCanvas(),this.canvas.onclick=e=>{var t=Go(this.canvas,e),r=Math.floor(t.x),n=Math.floor(t.y),s=this.getOpAtPos(t.x,t.y,16777216);s&&(Ei("toline"),x.runEval(()=>{let o=x.getRasterScanline&&x.getRasterScanline()>=n;return o&&x.getRasterLineClock?o&&x.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|Si;this.datau32[o]|=a}}drawImage(){let e=Si;for(let t=0;t<this.datau32.length;t++)this.datau32[t]==Si?this.datau32[t]=e:e=this.datau32[t];super.drawImage()}},Zc=class extends CO{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]==Si&&(this.datau32[o]=a|Si)}}},Xc=class extends $r{constructor(){super(...arguments);this.recreateOnResize=!0}createDiv(t){return this.vlist=new ln(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="("+wi(s.row,4)+", "+wi(s.col,4)+") "+ms(s.asm||"",20)+o,o.indexOf("Write ")>=0&&(n="seg_io")}return{text:r,clas:n}}refresh(){this.tick()}tick(){let t=x instanceof Xh||x instanceof Zh;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(x.disassemble){var h=x.disassemble(n,x.readAddress.bind(x));c.asm=h&&h.line}break;default:var u=this.opToString(r,n,l);u!=""&&c.info.push(u);break}}),this.vlist.refresh()}},Lc=class extends $r{constructor(){super(...arguments);this.recreateOnResize=!0}createDiv(t){return this.vlist=new ln(t),this.vlist.create(t,this.totalScanlines,this.getMemoryLineAt.bind(this)),this.vlist.maindiv}getMemoryLineAt(t){for(var r=wi(t+"",3)+" ",n="seg_code",s=this.dumplines&&this.dumplines[t]||[],o=Math.round(this.cyclesPerLine/3.3),a=0;a<this.cyclesPerLine;a++){var l=s[a];if(l!==void 0){var c=l&65535,h=h&Si;if(h==16777216)r+=",";else{var u=ce(c);r+=u,a+=u.length-1}}else r+=a==o?"|":"."}return s[-1]&&(r+=" "+s[-1]),{text:r,clas:n}}refresh(){this.tick()}tick(){let t=x instanceof Xh||x instanceof Zh;this.dumplines={},this.redraw((r,n,s,o,a,l)=>{var c=this.dumplines[o];switch(c==null&&(this.dumplines[o]=c=[]),r){case 16777216:var h=x.debugSymbols.addr2symbol[n];h&&(c[-1]=h);break;case 335544320:case 352321536:case 369098752:case 385875968:c[s]=r|n;break}}),this.vlist.refresh()}},Mc=class extends $r{constructor(){super(...arguments);this.recreateOnResize=!0;this.cumulativeData=!0}createDiv(t){return x.debugSymbols&&x.debugSymbols.symbolmap?this.keys=Array.from(Object.keys(x.debugSymbols.symbolmap).filter(r=>!dP(r))):this.keys=["no symbols defined"],this.vlist=new ln(t),this.vlist.create(t,this.keys.length+1,this.getMemoryLineAt.bind(this)),this.vlist.maindiv}getMemoryLineAt(t){if(t==0)return{text:wi("Symbol",35)+wi("Reads",8)+wi("Writes",8)};var r=this.keys[t-1],n=this.dumplines&&this.dumplines[r];function s(l){var c=n[l]|0;return wi(c?c.toString():"",8)}var o,a;return n!=null?(o=wi(r,35)+s(301989888)+s(318767104),n[16777216]?a="seg_code":n[335544320]||n[352321536]?a="seg_io":a="seg_data"):(o=wi(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=x.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()}},Dc=class{constructor(){this.editingId=null}createDiv(e){return this.maindiv=Pi(e,"vertical-scroll bp-view"),this.render(),this.maindiv[0]}refresh(e){this.render()}render(){let e=this.maindiv.empty(),t=mc(),r=this.editingId!=null?t.find(h=>h.bp.id==this.editingId):null,n=$('<div class="bp-form"/>'),s=$('<input type="text" class="bp-input" spellcheck="false"/>').attr("placeholder","address or symbol (e.g. $8000, mainloop)").val(r&&r.bp.type=="address"?r.bp.target:""),o=$('<input type="text" class="bp-input" spellcheck="false"/>').attr("placeholder","condition (e.g. A>=$20, #scanline==222)").val(r&&r.bp.condition||""),a=$('<button class="btn btn-default btn-xs bp-submit"/>').text(r?"Save":"Add"),l=$('<button class="btn btn-default btn-xs bp-submit"/>').text("Cancel");l.toggl Line truncated
`)<0&&e.indexOf("\r")<0)return e.trim()}return""}function iX(i){var t;let e=i.record;if(e.source==="project"){let r=e.file;if(!r||!X.isWindow(r))return;let n=X.createOrShow(r);n instanceof Qt&&e.line&&n.navigateToLine(e.line)}else if(e.source==="toolchain"){let r=e.file;if(!r)return;To(r);let n=X.createOrShow("#headerview/"+r);n instanceof Qr&&e.line&&n.navigateToLine(e.line)}else if(e.source==="debugger"){let r=(t=e.addr)!=null?t:-1;if(r<0)return;if(e.kind==="label"&&X.isWindow("#disasm")){let n=X.createOrShow("#disasm");n instanceof qi&&n.goToAddress(r)}else{let n=X.createOrShow("#memory");n instanceof kr&&n.goToAddress(r)}}else if(e.source==="docs"){let r=e.url||"";r.startsWith("#help/")?X.createOrShow(r):r&&window.open(r,"_blank")}}function _O(){bootbox.dialog({title:"Search",onEscape:!0,message:`
<div id="searchbox_form">
<input type="text" id="searchboxInput" class="form-control"
placeholder="Search symbols, files, docs"
autocomplete="off" style="margin-bottom:8px">
<div id="searchboxResults" style="max-height:340px;overflow-y:auto"></div>
</div>
`,buttons:{close:{label:"Close",className:"btn-default"}}}).one("shown.bs.modal",()=>{$("#searchboxInput").trigger("focus")});let e=$("#searchboxInput"),t=$("#searchboxResults"),r=[],n=-1,s=h=>{if(n=Math.max(-1,Math.min(h,r.length-1)),t.find("li.search-hit").each((u,f)=>{$(f).toggleClass("active",u===n)}),n>=0){let u=t[0],f=t.find("li.search-hit").eq(n);if(f.length){let d=f[0],O=u.getBoundingClientRect(),m=d.getBoundingClientRect(),S=m.top-O.top;S<0?u.scrollTop+=S:S+m.height>O.height&&(u.scrollTop+=S+m.height-O.height)}}},o=(h=n)=>{let u=r[h];u&&(eX(u),bootbox.hideAll())},a=h=>{if(r=h||[],r.length===0){n=-1,t.html('<div class="text-muted" style="padding:8px">No matches.</div>');return}let u=$('<ul class="list-group" style="margin-bottom:0"></ul>');for(let f of r){let d=f.record,O=d.source,m=d.kind==="func"?"\u0192":d.kind==="macro"?"#":d.kind==="label"?":":d.kind==="struct"?"S":d.kind==="enum"?"E":d.kind==="text"?"\u2261":"\u2022",S=d.source==="debugger"?ce(d.addr,4):d.file&&d.line?`${d.file}:${d.line}`:d.file||"",y=d.kind!=="text",A=$('<li class="list-group-item search-hit" style="cursor:pointer;padding:6px 10px;display:flex;align-items:center;overflow:hidden"></li>');A.html(`<span class="search-kind" style="margin-right:6px;font-weight:bold;flex:0 0 auto">${m}</span><span class="search-name" style="flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap">`+(y?`<strong>${Ic(d.name)}</strong>`:`<span class="search-dumb">${Ic(d.name)}</span>`)+(d.brief?` <span class="text-muted">- ${Ic(d.brief)}</span>`:"")+`</span><span class="search-loc" style="flex:0 0 auto;margin-left:8px;font-style:italic;font-size:small;white-space:nowrap">${S?Ic(S):""}</span>`),A.click(()=>{o(r.indexOf(f))}),u.append(A)}t.empty().append(u),s(0)},l=HZ(async()=>{let h=e.val();if(!h){r=[],n=-1,t.empty();return}try{let u=await GS.query(h,KZ),f=Wc(h,x&&x.debugSymbols&&x.debugSymbols.symbolmap);f&&OP(f,u.length>0)&&u.push(pP(h,f,N&&N.segments)),a(u)}catch(u){t.html('<div class="text-danger" style="padding:8px">Search failed.</div>')}},150);e.on("input",l),e.on("keydown",h=>{h.key==="ArrowDown"?(h.preventDefault(),s(n+1)):h.key==="ArrowUp"?(h.preventDefault(),s(n-1)):h.key==="Enter"?(h.preventDefault(),n>=0?o():l()):h.key==="Home"?(h.preventDefault(),s(0)):h.key==="End"&&(h.preventDefault(),s(r.length-1))});let c=JZ();c&&(e.val(c),l())}var tX=800,iX=1e3,rX=16;function vP(i){var e={};return i.forEach(t=>{e[t.name]=(e[t.name]||0)+1}),i.forEach(t=>{e[t.name]>1&&t.group&&(t.name=t.group+": "+t.name)}),i}function mP(i){return i.art?i.brev?0:7:null}var zc=/([0#]?)([x$%]|\d'h)([0-9a-f]+)(?:[;].*)?|(\d'b|0b)([01]+)/gim;function LO(i){return i.replace(/(\shex\s+)([0-9a-f]+)/ig,function(e,t,r){for(var n=t,s=0;s<r.length;s+=2)n+="0x"+r.substr(s,2)+",";return n})}function yP(i){for(var e=[],t;t=zc.exec(i);){var r;t[4]?r=parseInt(t[5],2):t[2].startsWith("%")?r=parseInt(t[3],2):t[2].startsWith("x")||t[2].startsWith("$")||t[2].endsWith("h")?r=parseInt(t[3],16):r=parseInt(t[3]),e.push(r)}return e}function nX(i,e,t){i=LO(i);for(var r="",n,s=0,o=0,a=Math.ceil(t/4);n=zc.exec(i);)r+=i.slice(s,zc.lastIndex-n[0].length),s=zc.lastIndex,n[4]?r+=n[4]+Ch(e[o++],parseInt(n[4])):n[2].startsWith("%")?r+=n[1]+n[2]+Ch(e[o++],t):n[2].endsWith("h")?r+=n[1]+n[2]+ce(e[o++],parseInt(n[2])):n[2].startsWith("x")?r+=n[1]+"x"+ce(e[o++],a):n[2].startsWith("$")?r+=n[1]+"$"+ce(e[o++],a):r+=n[1]+e[o++].toString();return r+=i.slice(s),r=r.replace(/(\shex\s+)([,x0-9a-f]+)/ig,(l,c,h)=>{var u=c+h;return u=u.replace(/0x/ig,"").replace(/,/ig,""),u}),r}function MO(i,e){if(!e)return i;for(var t=0,r=0;r<e.length;r++){var n=e[r];n<0&&(n=-n-1,t^=1<<n),i&1<<r&&(t^=1<<n)}return t}function DO(i,e){var t=e[i%e.length];return[t>>3,t&7]}var sX=[[0,0,4],[8,0,0]],oX=[[0,8,12],[8,8,0],[16,8,4],[24,8,8],[32,0,12],[40,0,0],[48,0,4],[56,0,8]];function aX(i,e,t,r,n,s){for(var o=0;o<8;o++)for(var a=i[e+o]||0,l=0;l<4;l++){var c=(3-l)*s+(7-o),h=a>>l&1|(a>>l+4&1)<<1;t[n*s+r+c]=h}}function lX(i,e,t,r,n,s){for(var o=0;o<8;o++){for(var a=0,l=0;l<4;l++){var c=(3-l)*s+(7-o),h=(t[n*s+r+c]||0)&3;h&1&&(a|=1<<l),h&2&&(a|=1<<l+4)}i[e+o]=a}}function WO(i){return i.w===16&&i.h===16?oX:sX}function wP(i){return WO(i).length*8}function cX(i,e){for(var t=e.w,r=e.h,n=e.count||1,s=e.wpimg||wP(e),o=WO(e),a=[],l=0;l<n;l++){for(var c=new Array(t*r).fill(0),h=l*s,u=0;u<o.length;u++){var[f,d,O]=o[u];aX(i,h+f,c,d,O,t)}a.push(new Uint8Array(c))}return a}function hX(i,e){for(var t=e.w,r=e.h,n=e.count||i.length,s=e.wpimg||wP(e),o=WO(e),a=new Array(s*n).fill(0),l=0;l<n;l++)for(var c=i[l]||new Uint8Array(t*r),h=l*s,u=0;u<o.length;u++){var[f,d,O]=o[u];lX(a,h+f,c,d,O,t)}return a}function uX(i,e){if(e.pacstrip)return cX(i,e);var t=e.w,r=e.h,n=e.count||1,s=e.bpp||1,o=e.np||1,a=e.bpw||8,l=e.sl||Math.ceil(t*s/a),c=(1<<s)-1,h=e.pofs||l*r*n,u=e.skip||0,f=e.wpimg||l*r,d=l;e.il&&(f=l,d=l*n);for(var O=[],m=0;m<n;m++){for(var S=[],y=0;y<r;y++)for(var A=e.flip?r-1-y:y,C=f*m+A*d,Z=0,k=0;k<t;k++){var P=0,_=MO(C,e.remap);e.Line truncated
`&&t++;return t}function $P(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=gP(i,n.index),l=n[0],c=o>=0?gP(i,o):"???";if(o<0){var h=e?'"end"':n[0].startsWith(";;")?'";;"':'";"';r.push({header:l,startline:a,endline:c,error:`No closing ${h} found after asset header`})}else if(o<=s)r.push({header:l,startline:a,endline:c,error:"Empty data block after asset header"});else try{var u=n[1].replace(/([A-Za-z]+):/g,'"$1":'),f=JSON.parse(u),d=/#embed\s+"(.+?)"/.exec(i.substring(s,o)),O=d?d[1]:void 0;r.push({header:l,startline:a,endline:c,fmt:f,start:s,end:o,embedFile:O})}catch(m){r.push({header:l,startline:a,endline:c,error:`Invalid asset format: ${m.message}`})}}return r}function TP(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 fX(i,e){if(e.destfmt&&(e=e.destfmt),e.pacstrip)return hX(i,e);var t=e.w,r=e.h,n=e.count||1,s=e.bpp||1,o=e.np||1,a=e.bpw||8,l=e.sl||Math.ceil(e.w*s/a),c=(1<<s)-1,h=e.pofs||l*r*n,u=e.skip||0,f=e.wpimg||l*r,d=l;e.il&&(f=l,d=l*n);var O=e.il?d*r:f*n,m;o>0&&e.sl?m=new Uint8Array(O):a<=8?m=new Uint8Array(O*o):m=new Uint32Array(O*o);for(var S=0;S<n;S++)for(var y=i[S],A=0,C=0;C<r;C++)for(var Z=e.flip?r-1-C:C,k=S*f+Z*d,P=0,_=0;_<t;_++){var L=y[A++],B=MO(k,e.remap);e.reindex&&([B,P]=DO(_,e.reindex),B+=k);for(var oe=0;oe<o;oe++){var re=L>>oe*s&c;m[B+oe*h+u]|=e.brev?re<<a-P-s:re<<P}P+=s,P>=a&&!e.reindex&&(k+=1,P=0)}return m}function bP(i,e,t,r,n,s,o){for(var a=[],l=0;l<i.length;l++){var c=i[l],h=4278190080;h|=(c>>e&(1<<t)-1)<<8-t,h|=(c>>r&(1<<n)-1)<<16-n,h|=(c>>s&(1<<o)-1)<<24-o,a.push(h)}return a}function dX(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 pX(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=CP[e];if(s)return s.length;throw new Error("No palette named "+e)}}function RO(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=bP(i,0,n,n,s,n+s,o):r=bP(i,n+s,o,n,s,0,n)}else if(t==="pacman"){r=[];for(var a=0;a<i.length;a++)r.push(dX(i[a]))}else{var l=CP[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}function Ao(i){var e=i.pal;if(typeof e!="number"||!isFinite(e))return null;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 t+r+n<=0?null:e>=0?{r:t,g:r,b:n,rshift:0,gshift:t,bshift:t+r}:{r:n,g:r,b:t,rshift:t+r,gshift:t,bshift:0}}function xP(i,e,t,r){var n=Ao(i);return n?(e&(1<<n.r)-1)<<n.rshift|(t&(1<<n.g)-1)<<n.gshift|(r&(1<<n.b)-1)<<n.bshift:0}function OX(i,e){var t=Ao(i);return t?{r:e>>t.rshift&(1<<t.r)-1,g:e>>t.gshift&(1<<t.g)-1,b:e>>t.bshift&(1<<t.b)-1}:null}var CP={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,1 Line truncated
`,await YP(i),H.newfile?!r&&!t?de('No build tool for "'+i+'" on this platform; project will not build.'):r?NP(!0,!0):ft("No skeleton file for "+t+" on this platform; using blank file."):ft('Could not find file "'+i+'"<br><br>Creating new '+(r?t:"blank")+" file."),delete H.newfile,bh()}}function HO(i){if(i=="/")H={repo:"/"};else if(i.indexOf("://")>=0){var e=no(i);e&&(H={repo:e.repopath})}else H.platform=J,H.file=i;Jr()}async function AX(i){var e=zh(x.getToolForFilename(i));try{return await $.get("presets/"+ut(J)+"/skeleton."+e,"text")}catch(t){return console.log(t+""),null}}function KO(i){return i.indexOf(" ")>=0?(de("No spaces in filenames, please."),!1):!0}async function EX(i){var e=ut(J),t={},r=[];for(var n of i){var s=x.getToolForFilename("test"+n);t[s]||(t[s]=[],r.push(s)),t[s].push(n)}var o=r.map(h=>$.ajax({url:"presets/"+e+"/skeleton."+zh(h),type:"HEAD"}).then(()=>h,()=>null)),a=await Promise.all(o),l=[];for(var c of a)c!=null&&l.push({tool:c,extensions:t[c]});return l}async function ZX(i){var e=await EX(x.getDefaultExtensions()),t,r;return e.length===0?(t=x.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(!KO(n))return;n.indexOf(".")<0&&(n+=t[0]);var s=n;H.newfile="1",HO(s)}}}),!0}function XX(i){let e=$('<input type="file" multiple accept="*" style="display:none">'),t=e[0];e.change(r=>{LX(t.files)}),e.click()}function LX(i){console.log(i);var e=0;function t(){var r=i[e++];if(!r)console.log("Done uploading",e),e>2?(ft("Files uploaded."),setTimeout(zo,1e3)):(H.file=i[0].name,bootbox.confirm({message:"Open '"+Tr.sanitize(H.file)+"' as main project file?",buttons:{confirm:{label:"Open As New Project"},cancel:{label:"Include/Link With Project Later"}},callback:o=>{o?Jr():setTimeout(zo,1e3)}}));else{var n=r.name,s=new FileReader;s.onload=function(o){var a=o.target.result,l=new Uint8Array(a);Rr(n,l)||(l=No(l).replace(`\r
`,buttons:{close:{label:"Close",className:"btn-default"}}}).one("shown.bs.modal",()=>{$("#searchboxInput").trigger("focus")});let e=$("#searchboxInput"),t=$("#searchboxResults"),r=[],n=-1,s=h=>{if(n=Math.max(-1,Math.min(h,r.length-1)),t.find("li.search-hit").each((u,f)=>{$(f).toggleClass("active",u===n)}),n>=0){let u=t[0],f=t.find("li.search-hit").eq(n);if(f.length){let d=f[0],O=u.getBoundingClientRect(),m=d.getBoundingClientRect(),S=m.top-O.top;S<0?u.scrollTop+=S:S+m.height>O.height&&(u.scrollTop+=S+m.height-O.height)}}},o=(h=n)=>{let u=r[h];u&&(iX(u),bootbox.hideAll())},a=h=>{if(r=h||[],r.length===0){n=-1,t.html('<div class="text-muted" style="padding:8px">No matches.</div>');return}let u=$('<ul class="list-group" style="margin-bottom:0"></ul>');for(let f of r){let d=f.record,O=d.source,m=d.kind==="func"?"\u0192":d.kind==="macro"?"#":d.kind==="label"?":":d.kind==="struct"?"S":d.kind==="enum"?"E":d.kind==="text"?"\u2261":"\u2022",S=d.source==="debugger"?ce(d.addr,4):d.file&&d.line?`${d.file}:${d.line}`:d.file||"",y=d.kind!=="text",A=$('<li class="list-group-item search-hit" style="cursor:pointer;padding:6px 10px;display:flex;align-items:center;overflow:hidden"></li>');A.html(`<span class="search-kind" style="margin-right:6px;font-weight:bold;flex:0 0 auto">${m}</span><span class="search-name" style="flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap">`+(y?`<strong>${Ic(d.name)}</strong>`:`<span class="search-dumb">${Ic(d.name)}</span>`)+(d.brief?` <span class="text-muted">- ${Ic(d.brief)}</span>`:"")+`</span><span class="search-loc" style="flex:0 0 auto;margin-left:8px;font-style:italic;font-size:small;white-space:nowrap">${S?Ic(S):""}</span>`),A.click(()=>{o(r.indexOf(f))}),u.append(A)}t.empty().append(u),s(0)},l=JZ(async()=>{let h=e.val();if(!h){r=[],n=-1,t.empty();return}try{let u=await HS.query(h,eX),f=Wc(h,x&&x.debugSymbols&&x.debugSymbols.symbolmap);f&&mP(f,u.length>0)&&u.push(OP(h,f,N&&N.segments)),a(u)}catch(u){t.html('<div class="text-danger" style="padding:8px">Search failed.</div>')}},150);e.on("input",l),e.on("keydown",h=>{h.key==="ArrowDown"?(h.preventDefault(),s(n+1)):h.key==="ArrowUp"?(h.preventDefault(),s(n-1)):h.key==="Enter"?(h.preventDefault(),n>=0?o():l()):h.key==="Home"?(h.preventDefault(),s(0)):h.key==="End"&&(h.preventDefault(),s(r.length-1))});let c=tX();c&&(e.val(c),l())}var rX=800,nX=1e3,sX=16;function yP(i){var e={};return i.forEach(t=>{e[t.name]=(e[t.name]||0)+1}),i.forEach(t=>{e[t.name]>1&&t.group&&(t.name=t.group+": "+t.name)}),i}function gP(i){return i.art?i.brev?0:7:null}var zc=/([0#]?)([x$%]|\d'h)([0-9a-f]+)(?:[;].*)?|(\d'b|0b)([01]+)/gim;function LO(i){return i.replace(/(\shex\s+)([0-9a-f]+)/ig,function(e,t,r){for(var n=t,s=0;s<r.length;s+=2)n+="0x"+r.substr(s,2)+",";return n})}function wP(i){for(var e=[],t;t=zc.exec(i);){var r;t[4]?r=parseInt(t[5],2):t[2].startsWith("%")?r=parseInt(t[3],2):t[2].startsWith("x")||t[2].startsWith("$")||t[2].endsWith("h")?r=parseInt(t[3],16):r=parseInt(t[3]),e.push(r)}return e}function oX(i,e,t){i=LO(i);for(var r="",n,s=0,o=0,a=Math.ceil(t/4);n=zc.exec(i);)r+=i.slice(s,zc.lastIndex-n[0].length),s=zc.lastIndex,n[4]?r+=n[4]+Ch(e[o++],parseInt(n[4])):n[2].startsWith("%")?r+=n[1]+n[2]+Ch(e[o++],t):n[2].endsWith("h")?r+=n[1]+n[2]+ce(e[o++],parseInt(n[2])):n[2].startsWith("x")?r+=n[1]+"x"+ce(e[o++],a):n[2].startsWith("$")?r+=n[1]+"$"+ce(e[o++],a):r+=n[1]+e[o++].toString();return r+=i.slice(s),r=r.replace(/(\shex\s+)([,x0-9a-f]+)/ig,(l,c,h)=>{var u=c+h;return u=u.replace(/0x/ig,"").replace(/,/ig,""),u}),r}function MO(i,e){if(!e)return i;for(var t=0,r=0;r<e.length;r++){var n=e[r];n<0&&(n=-n-1,t^=1<<n),i&1<<r&&(t^=1<<n)}return t}function DO(i,e){var t=e[i%e.length];return[t>>3,t&7]}var aX=[[0,0,4],[8,0,0]],lX=[[0,8,12],[8,8,0],[16,8,4],[24,8,8],[32,0,12],[40,0,0],[48,0,4],[56,0,8]];function cX(i,e,t,r,n,s){for(var o=0;o<8;o++)for(var a=i[e+o]||0,l=0;l<4;l++){var c=(3-l)*s+(7-o),h=a>>l&1|(a>>l+4&1)<<1;t[n*s+r+c]=h}}function hX(i,e,t,r,n,s){for(var o=0;o<8;o++){for(var a=0,l=0;l<4;l++){var c=(3-l)*s+(7-o),h=(t[n*s+r+c]||0)&3;h&1&&(a|=1<<l),h&2&&(a|=1<<l+4)}i[e+o]=a}}function WO(i){return i.w===16&&i.h===16?lX:aX}function PP(i){return WO(i).length*8}function uX(i,e){for(var t=e.w,r=e.h,n=e.count||1,s=e.wpimg||PP(e),o=WO(e),a=[],l=0;l<n;l++){for(var c=new Array(t*r).fill(0),h=l*s,u=0;u<o.length;u++){var[f,d,O]=o[u];cX(i,h+f,c,d,O,t)}a.push(new Uint8Array(c))}return a}function fX(i,e){for(var t=e.w,r=e.h,n=e.count||i.length,s=e.wpimg||PP(e),o=WO(e),a=new Array(s*n).fill(0),l=0;l<n;l++)for(var c=i[l]||new Uint8Array(t*r),h=l*s,u=0;u<o.length;u++){var[f,d,O]=o[u];hX(a,h+f,c,d,O,t)}return a}function dX(i,e){if(e.pacstrip)return uX(i,e);var t=e.w,r=e.h,n=e.count||1,s=e.bpp||1,o=e.np||1,a=e.bpw||8,l=e.sl||Math.ceil(t*s/a),c=(1<<s)-1,h=e.pofs||l*r*n,u=e.skip||0,f=e.wpimg||l*r,d=l;e.il&&(f=l,d=l*n);for(var O=[],m=0;m<n;m++){for(var S=[],y=0;y<r;y++)for(var A=e.flip?r-1-y:y,C=f*m+A*d,Z=0,k=0;k<t;k++){var P=0,_=MO(C,e.remap);e.Line truncated
`&&t++;return t}function TP(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=bP(i,n.index),l=n[0],c=o>=0?bP(i,o):"???";if(o<0){var h=e?'"end"':n[0].startsWith(";;")?'";;"':'";"';r.push({header:l,startline:a,endline:c,error:`No closing ${h} found after asset header`})}else if(o<=s)r.push({header:l,startline:a,endline:c,error:"Empty data block after asset header"});else try{var u=n[1].replace(/([A-Za-z]+):/g,'"$1":'),f=JSON.parse(u),d=/#embed\s+"(.+?)"/.exec(i.substring(s,o)),O=d?d[1]:void 0;r.push({header:l,startline:a,endline:c,fmt:f,start:s,end:o,embedFile:O})}catch(m){r.push({header:l,startline:a,endline:c,error:`Invalid asset format: ${m.message}`})}}return r}function CP(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 pX(i,e){if(e.destfmt&&(e=e.destfmt),e.pacstrip)return fX(i,e);var t=e.w,r=e.h,n=e.count||1,s=e.bpp||1,o=e.np||1,a=e.bpw||8,l=e.sl||Math.ceil(e.w*s/a),c=(1<<s)-1,h=e.pofs||l*r*n,u=e.skip||0,f=e.wpimg||l*r,d=l;e.il&&(f=l,d=l*n);var O=e.il?d*r:f*n,m;o>0&&e.sl?m=new Uint8Array(O):a<=8?m=new Uint8Array(O*o):m=new Uint32Array(O*o);for(var S=0;S<n;S++)for(var y=i[S],A=0,C=0;C<r;C++)for(var Z=e.flip?r-1-C:C,k=S*f+Z*d,P=0,_=0;_<t;_++){var L=y[A++],B=MO(k,e.remap);e.reindex&&([B,P]=DO(_,e.reindex),B+=k);for(var oe=0;oe<o;oe++){var re=L>>oe*s&c;m[B+oe*h+u]|=e.brev?re<<a-P-s:re<<P}P+=s,P>=a&&!e.reindex&&(k+=1,P=0)}return m}function xP(i,e,t,r,n,s,o){for(var a=[],l=0;l<i.length;l++){var c=i[l],h=4278190080;h|=(c>>e&(1<<t)-1)<<8-t,h|=(c>>r&(1<<n)-1)<<16-n,h|=(c>>s&(1<<o)-1)<<24-o,a.push(h)}return a}function OX(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 mX(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=_P[e];if(s)return s.length;throw new Error("No palette named "+e)}}function RO(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=xP(i,0,n,n,s,n+s,o):r=xP(i,n+s,o,n,s,0,n)}else if(t==="pacman"){r=[];for(var a=0;a<i.length;a++)r.push(OX(i[a]))}else{var l=_P[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}function Ao(i){var e=i.pal;if(typeof e!="number"||!isFinite(e))return null;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 t+r+n<=0?null:e>=0?{r:t,g:r,b:n,rshift:0,gshift:t,bshift:t+r}:{r:n,g:r,b:t,rshift:t+r,gshift:t,bshift:0}}function SP(i,e,t,r){var n=Ao(i);return n?(e&(1<<n.r)-1)<<n.rshift|(t&(1<<n.g)-1)<<n.gshift|(r&(1<<n.b)-1)<<n.bshift:0}function gX(i,e){var t=Ao(i);return t?{r:e>>t.rshift&(1<<t.r)-1,g:e>>t.gshift&(1<<t.g)-1,b:e>>t.bshift&(1<<t.b)-1}:null}var _P={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,1 Line truncated
`,await jP(i),H.newfile?!r&&!t?de('No build tool for "'+i+'" on this platform; project will not build.'):r?qP(!0,!0):dt("No skeleton file for "+t+" on this platform; using blank file."):dt('Could not find file "'+i+'"<br><br>Creating new '+(r?t:"blank")+" file."),delete H.newfile,bh()}}function HO(i){if(i=="/")H={repo:"/"};else if(i.indexOf("://")>=0){var e=no(i);e&&(H={repo:e.repopath})}else H.platform=J,H.file=i;Jr()}async function ZX(i){var e=zh(x.getToolForFilename(i));try{return await $.get("presets/"+ut(J)+"/skeleton."+e,"text")}catch(t){return console.log(t+""),null}}function KO(i){return i.indexOf(" ")>=0?(de("No spaces in filenames, please."),!1):!0}async function XX(i){var e=ut(J),t={},r=[];for(var n of i){var s=x.getToolForFilename("test"+n);t[s]||(t[s]=[],r.push(s)),t[s].push(n)}var o=r.map(h=>$.ajax({url:"presets/"+e+"/skeleton."+zh(h),type:"HEAD"}).then(()=>h,()=>null)),a=await Promise.all(o),l=[];for(var c of a)c!=null&&l.push({tool:c,extensions:t[c]});return l}async function LX(i){var e=await XX(x.getDefaultExtensions()),t,r;return e.length===0?(t=x.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(!KO(n))return;n.indexOf(".")<0&&(n+=t[0]);var s=n;H.newfile="1",HO(s)}}}),!0}function MX(i){let e=$('<input type="file" multiple accept="*" style="display:none">'),t=e[0];e.change(r=>{DX(t.files)}),e.click()}function DX(i){console.log(i);var e=0;function t(){var r=i[e++];if(!r)console.log("Done uploading",e),e>2?(dt("Files uploaded."),setTimeout(zo,1e3)):(H.file=i[0].name,bootbox.confirm({message:"Open '"+Tr.sanitize(H.file)+"' as main project file?",buttons:{confirm:{label:"Open As New Project"},cancel:{label:"Include/Link With Project Later"}},callback:o=>{o?Jr():setTimeout(zo,1e3)}}));else{var n=r.name,s=new FileReader;s.onload=function(o){var a=o.target.result,l=new Uint8Array(a);Rr(n,l)||(l=No(l).replace(`\r
`,`
`)),X.updateFile(n,l),console.log("Uploaded "+n+" "+l.length+" bytes"),t()},s.readAsArrayBuffer(r)}}i&&t()}async function MX(i){var e=window.showDirectoryPicker;e||de("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=qO.createInstance({name:n,version:2});await o.setItem(n,s),H={localfs:r},Jr(!0)}async function DX(i){return new Promise((e,t)=>{bootbox.prompt(Tr.sanitize(i),r=>{e(r)})})}async function WX(i){let e={mode:"readwrite"};var t="__localfs__"+i,r=qO.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 DX("Request permissions to access filesystem?"),o=await s.requestPermission(e)),o!=="granted"){de("Could not get permission to access filesystem.");return}let a={};return{getFileData:async l=>{console.log("getFileData",l);let h=await(await s.getFileHandle(l,{create:!1})).getFile(),u=await(Rr(l)?h.arrayBuffer():h.text());return u instanceof ArrayBuffer?new Uint8Array(u):u},setFileData:async(l,c)=>{a[l]=Date.now();let u=await(await s.getFileHandle(l,{create:!0})).createWritable();await u.write(c),await u.close()},onFileSystemUpdate:l=>{if(typeof window.FileSystemObserver=="undefined")return;new window.FileSystemObserver((h,u)=>{for(let f of h)if(f.changedHandle){let d=f.changedHandle.name;if(Date.now()-(a[d]||0)<2e3)continue;l(d)}}).observe(s,{recursive:!0})}}}function Fe(){return Ke(N.mainPath)}function WS(){return Ke(X.getActiveID())}function IX(i){var e=X.getActive(),t=X.getActiveID(),r=e&&e.setData&&!e.setText;if(e&&(e.setText||e.setData)){var n="presets/"+ut(J)+"/"+t;gs(n,s=>{if(s==null){Ge?de("Can only revert built-in examples. If you want to revert all files, You can pull from the repository."):de("Can only revert built-in examples.");return}bootbox.confirm("Reset '"+Tr.sanitize(t)+"' to default?",o=>{o&&(r?(e.setData(s),N.updateFile(t,s)):e.setText(s))})},r?"arraybuffer":"text")}else de("Cannot revert the active window. Please choose a text file.")}function zX(i){var e=X.getActive();if(e&&e.getPath){var t=X.getActiveID();bootbox.confirm("Delete '"+Tr.sanitize(t)+"'?",r=>{r&&si.removeItem(t).then(()=>{H.file==t?(Ji.unsetLastPreset(),Jr()):(zo(),ft("Deleted "+t))})})}else de("Cannot delete the active window.")}function VX(i){var e=X.getActive();if(e&&e.getPath&&N.getFile(e.getPath())){var t=X.getActiveID();bootbox.prompt({title:"Rename '"+Tr.sanitize(t)+"' to?",value:t,callback:r=>{var n=N.getFile(e.getPath());if(r&&r!=t&&n){if(!KO(r))return;si.removeItem(t).then(()=>si.setItem(r,n)).then(()=>{zo(),alert("Renamed "+t+" to "+r),t==N.mainPath&&HO(r)})}}})}else de("Cannot rename the active window.")}function YX(i){let e={},t,r=x.getPresets?x.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==N.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&&(ah=s),e[s.id]=o}return e}function jX(i){if(Zt&&!hs){var e=0,t=Gr();if(t){let n=$("<optgroup />").attr("label","Repositories").appendTo(i);for(let s in t){var r=t[s];r.platform_id&&ut(r.platform_id)==ut(J)&&n.append($("<option />").val(r.url).text(r.url.substring(r.url.indexOf("/"))))}}}}async function jP(i,e,t,r){let n=await si.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==N.mainPath?"selected":null))}}}function BP(i){i.css("visibility","visible");var e=N.mainPath;i.val()!=e&&i.append($("<option />").val(e).text(e).attr("selected","selected"))}async function zo(){var i=$("#preset_select").empty();if(Ge)i.append($("<option />").val("/").text("Leave Repository")),$("#repo_name").text(Ke(Ge)+"/").show(),await jP(i,Ge,"",{}),BP(i);else{jX(i);var e=YX(i);await jP(i,"Local Files","",e),BP(i)}i.off("change").change(function(t){HO($(this).val().toString())})}function BX(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==Fe()&&(n=N.mainPath),X.isWindow(n)&&r.click(s=>{var o=X.createOrShow(n);o instanceof Qt&&o.navigateToLine(i.line)}),e.append(r),e.append("&nbsp;")}return e.append($("<span/>").text(i.msg)),e}function qP(){$("#error_alert").hide(),GO=!1}function JO(i,e){var t=$("#error_alert_msg").empty();for(var r of i.slice(0,10))t.append(BX(r));$("#error_alert").show(),GO=e;var n=i.find(o=>o.path!=null),s;n&&X.isWindow(n.path==Fe()?N.mainPath:n.path)&&(s=()=>{NX(n)})}function GP(i,e){if(e!=null){var t={msg:e,line:0};i instanceof Eh&&i.$loc&&(t=Object.create(i.$loc),t.msg=e,console.log(t)),JO([t],!0)}}async function FX(i){if("uppercaseOnly"in i&&hP(i.uppercaseOnly),"errors"i Line truncated
`)),X.updateFile(n,l),console.log("Uploaded "+n+" "+l.length+" bytes"),t()},s.readAsArrayBuffer(r)}}i&&t()}async function WX(i){var e=window.showDirectoryPicker;e||de("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=qO.createInstance({name:n,version:2});await o.setItem(n,s),H={localfs:r},Jr(!0)}async function IX(i){return new Promise((e,t)=>{bootbox.prompt(Tr.sanitize(i),r=>{e(r)})})}async function zX(i){let e={mode:"readwrite"};var t="__localfs__"+i,r=qO.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 IX("Request permissions to access filesystem?"),o=await s.requestPermission(e)),o!=="granted"){de("Could not get permission to access filesystem.");return}let a={};return{getFileData:async l=>{console.log("getFileData",l);let h=await(await s.getFileHandle(l,{create:!1})).getFile(),u=await(Rr(l)?h.arrayBuffer():h.text());return u instanceof ArrayBuffer?new Uint8Array(u):u},setFileData:async(l,c)=>{a[l]=Date.now();let u=await(await s.getFileHandle(l,{create:!0})).createWritable();await u.write(c),await u.close()},onFileSystemUpdate:l=>{if(typeof window.FileSystemObserver=="undefined")return;new window.FileSystemObserver((h,u)=>{for(let f of h)if(f.changedHandle){let d=f.changedHandle.name;if(Date.now()-(a[d]||0)<2e3)continue;l(d)}}).observe(s,{recursive:!0})}}}function Ue(){return Ve(N.mainPath)}function IS(){return Ve(X.getActiveID())}function VX(i){var e=X.getActive(),t=X.getActiveID(),r=e&&e.setData&&!e.setText;if(e&&(e.setText||e.setData)){var n="presets/"+ut(J)+"/"+t;bs(n,s=>{if(s==null){He?de("Can only revert built-in examples. If you want to revert all files, You can pull from the repository."):de("Can only revert built-in examples.");return}bootbox.confirm("Reset '"+Tr.sanitize(t)+"' to default?",o=>{o&&(r?(e.setData(s),N.updateFile(t,s)):e.setText(s))})},r?"arraybuffer":"text")}else de("Cannot revert the active window. Please choose a text file.")}function YX(i){var e=X.getActive();if(e&&e.getPath){var t=X.getActiveID();bootbox.confirm("Delete '"+Tr.sanitize(t)+"'?",r=>{r&&si.removeItem(t).then(()=>{H.file==t?(Ji.unsetLastPreset(),Jr()):(zo(),dt("Deleted "+t))})})}else de("Cannot delete the active window.")}function jX(i){var e=X.getActive();if(e&&e.getPath&&N.getFile(e.getPath())){var t=X.getActiveID();bootbox.prompt({title:"Rename '"+Tr.sanitize(t)+"' to?",value:t,callback:r=>{var n=N.getFile(e.getPath());if(r&&r!=t&&n){if(!KO(r))return;si.removeItem(t).then(()=>si.setItem(r,n)).then(()=>{zo(),alert("Renamed "+t+" to "+r),t==N.mainPath&&HO(r)})}}})}else de("Cannot rename the active window.")}function BX(i){let e={},t,r=x.getPresets?x.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==N.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&&(ah=s),e[s.id]=o}return e}function FX(i){if(Zt&&!us){var e=0,t=Gr();if(t){let n=$("<optgroup />").attr("label","Repositories").appendTo(i);for(let s in t){var r=t[s];r.platform_id&&ut(r.platform_id)==ut(J)&&n.append($("<option />").val(r.url).text(r.url.substring(r.url.indexOf("/"))))}}}}async function BP(i,e,t,r){let n=await si.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==N.mainPath?"selected":null))}}}function FP(i){i.css("visibility","visible");var e=N.mainPath;i.val()!=e&&i.append($("<option />").val(e).text(e).attr("selected","selected"))}async function zo(){var i=$("#preset_select").empty();if(He)i.append($("<option />").val("/").text("Leave Repository")),$("#repo_name").text(Ve(He)+"/").show(),await BP(i,He,"",{}),FP(i);else{FX(i);var e=BX(i);await BP(i,"Local Files","",e),FP(i)}i.off("change").change(function(t){HO($(this).val().toString())})}function UX(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==Ue()&&(n=N.mainPath),X.isWindow(n)&&r.click(s=>{var o=X.createOrShow(n);o instanceof Qt&&o.navigateToLine(i.line)}),e.append(r),e.append("&nbsp;")}return e.append($("<span/>").text(i.msg)),e}function GP(){$("#error_alert").hide(),GO=!1}function JO(i,e){var t=$("#error_alert_msg").empty();for(var r of i.slice(0,10))t.append(UX(r));$("#error_alert").show(),GO=e;var n=i.find(o=>o.path!=null),s;n&&X.isWindow(n.path==Ue()?N.mainPath:n.path)&&(s=()=>{GX(n)})}function HP(i,e){if(e!=null){var t={msg:e,line:0};i instanceof Eh&&i.$loc&&(t=Object.create(i.$loc),t.msg=e,console.log(t)),JO([t],!0)}}async function NX(i){if("uppercaseOnly"in i&&uP(i.uppercaseOnly),"errors"i Line truncated
`+t(n)+`
`;N.loadFiles([s]).then(a=>{a&&a.length?de(n+" already exists; including anyway"):N.updateFile(s,`
`),r.insertLinesBefore(o),ls()})}}}):de("Can't insert text in this window -- switch back to main file")}function cL(){var i=Fe(),e=x.getToolForFilename(i);i.endsWith(".c")||e=="sdcc"||e=="cc65"||e=="cmoc"||e=="smlrc"?yi("Header",".h",t=>'#include "'+t+'"'):e=="dasm"||e=="zmac"?yi("Include",".inc",t=>' include "'+t+'"'):e=="ca65"||e=="sdasz80"||e=="vasm"||e=="armips"?yi("Include",".inc",t=>' .include "'+t+'"'):e=="verilator"?yi("Verilog",".v",t=>'`include "'+t+'"'):e=="wiz"?yi("Include",".wiz",t=>'import "'+t+'";'):e=="ecs"?yi("Include",".ecs",t=>'import "'+t+'"'):e=="acme"?yi("Include",".acme",t=>'!src "'+t+'"'):e=="xa"?yi("Include",".xa",t=>'#include "'+t+'"'):e=="dialog"?yi("Include",".dg",t=>'%% #include "'+t+'"'):de("Can't add include file to this project type ("+e+")")}function hL(){var i=Fe(),e=x.getToolForFilename(i);i.endsWith(".c")||e=="sdcc"||e=="cc65"||e=="cmoc"||e=="smlrc"?yi("Linked C (or .s)",".c",t=>'//#link "'+t+'"'):i.endsWith("asm")||i.endsWith(".s")||e=="ca65"||e=="lwasm"?yi("Linked ASM",".inc",t=>';#link "'+t+'"'):de("Can't add linked file to this project type ("+e+")")}function uL(){if(Me=new Jo($("#toolbar")[0],null),Me.grp.prop("id","run_bar"),Me.add("mod+shift+r","Reset","glyphicon-refresh",u1).prop("id","dbg_reset"),Me.add("mod+shift+h","Pause","glyphicon-pause",t1).prop("id","dbg_pause"),Me.add("mod+shift+g","Go To Address","",i=>{KP()||fh()}),Me.add("mod+shift+g","Resume","glyphicon-play",fh).prop("id","dbg_go"),Me.add("F8","Pause/Resume","",i1),Me.add("F1","Help","",m1),x.restartAtPC&&Me.add("mod+shift+a","Restart at Cursor","glyphicon-play-circle",a1).prop("id","dbg_restartatline"),Me.newGroup(),Me.grp.prop("id","debug_bar"),x.runEval&&Me.add("mod+shift+d","Reset and Debug","glyphicon-fast-backward",f1).prop("id","dbg_restart"),x.stepBack&&Me.add("mod+shift+j","Step Backwards","glyphicon-step-backward",h1).prop("id","dbg_stepback"),x.step&&Me.add("mod+shift+l","Single Step","glyphicon-step-forward",r1).prop("id","dbg_step"),x.stepOver&&Me.add("mod+shift+k","Step Over","glyphicon-hand-right",n1).prop("id","dbg_stepover"),x.runUntilReturn&&Me.add("mod+shift+i","Step Out of Subroutine","glyphicon-hand-up",c1).prop("id","dbg_stepout"),x.runToVsync&&Me.add("mod+shift+x","Next Frame/Interrupt","glyphicon-forward",s1).prop("id","dbg_tovsync"),(x.runEval||x.runToPC)&&!J.startsWith("verilog")&&Me.add("mod+shift+y","Run To Line","glyphicon-save",l1).prop("id","dbg_toline"),Me.newGroup(),Me.grp.prop("id","xtra_bar"),Me.add("mod+shift+f","Search","glyphicon-search",_O).prop("id","dbg_search"),$(".dropdown-menu").collapse({toggle:!1}),$("#item_new_file").click(ZX),$("#item_upload_file").click(XX),$("#item_open_directory").click(MX),$("#item_github_login").click(IS),$("#item_github_logout").click(zS),$("#item_github_import").click(VS),$("#item_github_publish").click(YS),$("#item_github_push").click(jS),$("#item_github_pull").click(BS),$("#item_repo_delete").click(US),$("#item_share_file").click(_S),$("#item_reset_file").click(IX),$("#item_rename_file").click(VX),$("#item_delete_file").click(zX),$("#item_download_rom").click(AS),$("#item_download_file").click(ES),$("#item_download_zip").click(XS),x.getDebugSymbolFile?$("#item_download_sym").click(LS):$("#item_download_sym").hide(),$("#item_download_allzip").click(MS),$("#item_record_video").click(DS),Qd()?$("#item_export_cassette").click(RS):$("#item_export_cassette").hide(),x.setFrameRate&&x.getFrameRate&&($("#dbg_slower").click(iL),$("#dbg_faster").click(rL),$("#dbg_slowest").click(nL),$("#dbg_fastest").click(sL)),$("#item_addfile_include").click(cL),$("#item_addfile_link").click(hL),$("#item_request_persist").click(()=>NP(!0,!1)),$("#item_settings").click(vS),d1(),x.newCodeAnalyzer&&Me.add(null,"Analyze CPU Timing","glyphicon-time",oL),x.startProbing&&Me.add(null,"Highlight Executed Lines","glyphicon-fire",lL).prop("id","dbg_tracelines"),x.setRecorder&&x.advance&&pL(),x.showHelp){let{li:i,a:e}=uh("help__"+J,Wo+" Info");$("#help_menu").append(i),$(e).click(t=>{t.preventDefault(),window.open(x.showHelp(),"_8bws_help")})}dL();{let{li:i}=uh("#help","IDE Help");$("#help_menu").prepend(i)}$("#item_tool_versions").click(fL)}function m1(){if(X){var i=Lm(),e=X.getActive()instanceof Qt,t=i||Xm(X.getActiveID(),e),r="#help/"+t;window.location.hash===r?X.createOrShow(r):window.location.hash=r}}function fL(){let i=f=>String(f==null?"":f).replace(/[&<>"]/g,d=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"})[d]),e=(f,d)=>"$"+ce(f,4).toUpperCase()+(d!=null?"+$"+ce(d,4).toUpperCase():""),t=ai[J]||ai[ut(J)]||ai[Ft(J)],r=t&&t.arch||"\u2014",n=[];t&&(t.rom_start!=null&&n.push("rom "+e(t.rom_start,t.rom_size)),t.code_start!=null&&n.push("code "+e(t.code_start,t.code_size)),t.data_start!=null&&n.push("data "+e(t.data_start,t.data_size)),t.stack_end!=null&&n.push("stack $"+ce(t.stack_end,4).toUpperCase()));let s=new Set([".a"]);for(let f in Sn)for(let d of Sn[f].extensions||[])s.add(d);let o={},a=[],l=(f,d)=>{f&&(o[f]||(o[f]=[],a.push(f)),d&&o[f].indexOf(d)<0&&Line truncated
`),r.insertLinesBefore(o),cs()})}}}):de("Can't insert text in this window -- switch back to main file")}function uL(){var i=Ue(),e=x.getToolForFilename(i);i.endsWith(".c")||e=="sdcc"||e=="cc65"||e=="cmoc"||e=="smlrc"||e=="oscar64"?yi("Header",".h",t=>'#include "'+t+'"'):e=="dasm"||e=="zmac"?yi("Include",".inc",t=>' include "'+t+'"'):e=="ca65"||e=="sdasz80"||e=="vasm"||e=="armips"?yi("Include",".inc",t=>' .include "'+t+'"'):e=="verilator"?yi("Verilog",".v",t=>'`include "'+t+'"'):e=="wiz"?yi("Include",".wiz",t=>'import "'+t+'";'):e=="ecs"?yi("Include",".ecs",t=>'import "'+t+'"'):e=="acme"?yi("Include",".acme",t=>'!src "'+t+'"'):e=="xa"?yi("Include",".xa",t=>'#include "'+t+'"'):e=="dialog"?yi("Include",".dg",t=>'%% #include "'+t+'"'):de("Can't add include file to this project type ("+e+")")}function fL(){var i=Ue(),e=x.getToolForFilename(i);i.endsWith(".c")||e=="sdcc"||e=="cc65"||e=="cmoc"||e=="smlrc"?yi("Linked C (or .s)",".c",t=>'//#link "'+t+'"'):i.endsWith("asm")||i.endsWith(".s")||e=="ca65"||e=="lwasm"?yi("Linked ASM",".inc",t=>';#link "'+t+'"'):de("Can't add linked file to this project type ("+e+")")}function dL(){if(Me=new Jo($("#toolbar")[0],null),Me.grp.prop("id","run_bar"),Me.add("mod+shift+r","Reset","glyphicon-refresh",f1).prop("id","dbg_reset"),Me.add("mod+shift+h","Pause","glyphicon-pause",i1).prop("id","dbg_pause"),Me.add("mod+shift+g","Go To Address","",i=>{JP()||fh()}),Me.add("mod+shift+g","Resume","glyphicon-play",fh).prop("id","dbg_go"),Me.add("F8","Pause/Resume","",r1),Me.add("F1","Help","",g1),x.restartAtPC&&Me.add("mod+shift+a","Restart at Cursor","glyphicon-play-circle",l1).prop("id","dbg_restartatline"),Me.newGroup(),Me.grp.prop("id","debug_bar"),x.runEval&&Me.add("mod+shift+d","Reset and Debug","glyphicon-fast-backward",d1).prop("id","dbg_restart"),x.stepBack&&Me.add("mod+shift+j","Step Backwards","glyphicon-step-backward",u1).prop("id","dbg_stepback"),x.step&&Me.add("mod+shift+l","Single Step","glyphicon-step-forward",n1).prop("id","dbg_step"),x.stepOver&&Me.add("mod+shift+k","Step Over","glyphicon-hand-right",s1).prop("id","dbg_stepover"),x.runUntilReturn&&Me.add("mod+shift+i","Step Out of Subroutine","glyphicon-hand-up",h1).prop("id","dbg_stepout"),x.runToVsync&&Me.add("mod+shift+x","Next Frame/Interrupt","glyphicon-forward",o1).prop("id","dbg_tovsync"),(x.runEval||x.runToPC)&&!J.startsWith("verilog")&&Me.add("mod+shift+y","Run To Line","glyphicon-save",c1).prop("id","dbg_toline"),Me.newGroup(),Me.grp.prop("id","xtra_bar"),Me.add("mod+shift+f","Search","glyphicon-search",_O).prop("id","dbg_search"),$(".dropdown-menu").collapse({toggle:!1}),$("#item_new_file").click(LX),$("#item_upload_file").click(MX),$("#item_open_directory").click(WX),$("#item_github_login").click(zS),$("#item_github_logout").click(VS),$("#item_github_import").click(YS),$("#item_github_publish").click(jS),$("#item_github_push").click(BS),$("#item_github_pull").click(FS),$("#item_repo_delete").click(NS),$("#item_share_file").click(RS),$("#item_reset_file").click(VX),$("#item_rename_file").click(jX),$("#item_delete_file").click(YX),$("#item_download_rom").click(ES),$("#item_download_file").click(ZS),$("#item_download_zip").click(LS),x.getDebugSymbolFile?$("#item_download_sym").click(MS):$("#item_download_sym").hide(),$("#item_download_allzip").click(DS),$("#item_record_video").click(WS),Qd()?$("#item_export_cassette").click(AS):$("#item_export_cassette").hide(),x.setFrameRate&&x.getFrameRate&&($("#dbg_slower").click(nL),$("#dbg_faster").click(sL),$("#dbg_slowest").click(oL),$("#dbg_fastest").click(aL)),$("#item_addfile_include").click(uL),$("#item_addfile_link").click(fL),$("#item_request_persist").click(()=>qP(!0,!1)),$("#item_settings").click(yS),p1(),x.newCodeAnalyzer&&Me.add(null,"Analyze CPU Timing","glyphicon-time",lL),x.startProbing&&Me.add(null,"Highlight Executed Lines","glyphicon-fire",hL).prop("id","dbg_tracelines"),x.setRecorder&&x.advance&&mL(),x.showHelp){let{li:i,a:e}=uh("help__"+J,Wo+" Info");$("#help_menu").append(i),$(e).click(t=>{t.preventDefault(),window.open(x.showHelp(),"_8bws_help")})}OL();{let{li:i}=uh("#help","IDE Help");$("#help_menu").prepend(i)}$("#item_tool_versions").click(pL)}function g1(){if(X){var i=Lm(),e=X.getActive()instanceof Qt,t=i||Xm(X.getActiveID(),e),r="#help/"+t;window.location.hash===r?X.createOrShow(r):window.location.hash=r}}function pL(){let i=f=>String(f==null?"":f).replace(/[&<>"]/g,d=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"})[d]),e=(f,d)=>"$"+ce(f,4).toUpperCase()+(d!=null?"+$"+ce(d,4).toUpperCase():""),t=ai[J]||ai[ut(J)]||ai[Ft(J)],r=t&&t.arch||"\u2014",n=[];t&&(t.rom_start!=null&&n.push("rom "+e(t.rom_start,t.rom_size)),t.code_start!=null&&n.push("code "+e(t.code_start,t.code_size)),t.data_start!=null&&n.push("data "+e(t.data_start,t.data_size)),t.stack_end!=null&&n.push("stack $"+ce(t.stack_end,4).toUpperCase()));let s=new Set([".a"]);for(let f in Sn)for(let d of Sn[f].extensions||[])s.add(d);let o={},a=[],l=(f,d)=>{f&&(o[f]||(o[f]=[],a.push(f)),d&&o[f].Line truncated
<table class="help">
<tr><th>Architecture</th><td>${i(r)}</td></tr>
<tr><th>Memory</th><td>${n.length?n.join(" \xB7 "):"\u2014"}</td></tr>
${t&&t.cfgfile?`<tr><th>Linker config</th><td>${i(t.cfgfile)}</td></tr>`:""}
${t&&t.libargs&&t.libargs.length?`<tr><th>Link libraries</th><td>${i(t.libargs.join(" "))}</td></tr>`:""}
${t&&t.define&&t.define.length?`<tr><th>Defines</th><td>${i(t.define.join(" "))}</td></tr>`:""}
</table>`,u=a.map(f=>{let d=gt(f),O=d&&d.version||"\u2014",m=d&&d.kind||"\u2014",S=o[f].length?o[f].map(A=>`<code>${i(A)}</code>`).join(" "):"\u2014",y=d&&d.name||f;return`<tr><td>${i(y)}</td><td>${i(m)}</td><td>${i(O)}</td><td>${S}</td></tr>`}).join(`
</table>`,u=a.map(f=>{let d=ft(f),O=d&&d.version||"\u2014",m=d&&d.kind||"\u2014",S=o[f].length?o[f].map(A=>`<code>${i(A)}</code>`).join(" "):"\u2014",y=d&&d.name||f;return`<tr><td>${i(y)}</td><td>${i(m)}</td><td>${i(O)}</td><td>${S}</td></tr>`}).join(`
`);bootbox.dialog({title:"Toolchain Info",onEscape:!0,buttons:{docs:{label:"Full reference",className:"btn-link",callback:()=>{window.location.hash="#help/toolchains"}},ok:{label:"Close",className:"btn-primary"}},message:`
<div class="dialog-scroll">
<h5 class="dialog-title">${i(Wo)} <small>${i(J)}</small></h5>
@@ -108,7 +108,7 @@ PC `+this.addr2str(s)+" "+this.opToString(c,null,O),o[m]=1)}),this.addr2str(r)+n
<tr><th>Tool</th><th>Kind</th><th>Version</th><th>Extensions</th></tr>
${u}
</table>
</div>`})}function dL(){let i=x.getToolForFilename(Fe());if(!i)return;let e=gt(i);if(!e)return;let t=e.version?" ("+e.version+")":"",r=(s,o,a)=>{let{li:l,a:c}=uh(s,o);$("#help_menu").append(l),$(c).click(h=>{h.preventDefault(),window.open(a,"_8bws_help")})};e.helpURL&&r("help__"+i,e.name+" Help"+t,e.helpURL);let n=Vm(i,J);n&&r("help__"+i+"__"+J,e.name+" Help for "+Wo,n)}function pL(){var i=$("#replayslider"),e=$("#clockslider"),t=$("#replay_frame"),r=$("#replay_clock");x.advanceFrameClock||$("#clockdiv").hide();var n=()=>{t.text(kt.lastSeekFrame+""),r.text(kt.lastSeekStep+"")},s=l=>{Ki();var c=parseInt(i.val().toString()),h=parseInt(e.val().toString());kt.loadFrame(c,h)>=0&&(e.attr("min",0),e.attr("max",kt.lastStepCount),n(),ch(x.saveState()))},o=l=>{Ki(),kt.loadFrame(l)>=0&&(i.val(l),n(),ch(x.saveState()))},a=l=>{Ki();var c=parseInt(i.val().toString());kt.loadFrame(c,l)>=0&&(e.val(l),n(),ch(x.saveState()))};kt.callbackStateChanged=()=>{i.attr("min",0),i.attr("max",kt.numFrames()),i.val(kt.currentFrame()),e.val(kt.currentStep()),n(),Vo(x.saveState())},i.on("input",s),e.on("input",s),$("#replay_min").click(()=>{o(1)}),$("#replay_max").click(()=>{o(kt.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(),Me.add("mod+shift+e","Start/Stop Replay Recording","glyphicon-record",aL).prop("id","dbg_record")}async function OL(){if(Ji.shouldCompleteTour()){await Ut("lib/bootstrap-tourist.js");var i=J.startsWith("vcs"),e=[{element:"#platformsMenuButton",placement:"right",title:"Platform Selector",content:`You're currently on the "<b>`+J+'</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."}];bn()&&(e.unshift({element:"#dropdownMenuButton",placement:"right",title:"Cookie Consent",content:'Before we start, we should tell you that this website stores persistent data in your browser. 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!"})),hs&&(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:()=>{Ji.completedTour()}});setTimeout(()=>{t.start()},2500)}}function dh(i){var e=(i.message||i.error||i)+"";if(e.indexOf("QuotaExceededError")>=0)QX();else{var t=i.error||i.reason;t!=null&&t instanceof Eh?mL(t):bn()&&Nm(e,t,{platform:J,window:X?X.getActiveID():"",errors:X.lasterrors||[]})}}function mL(i){console.log("haltEmulation"),Ki(),RL(i)}function gL(){window.addEventListener("error",dh),window.addEventListener("unhandledrejection",dh)}function g1(){window.removeEventListener("error",dh),window.removeEventListener("unhandledrejection",dh)}function Jr(i,e){e&&(H=e),g1(),i?window.location.replace("?"+$.param(H)):window.location.href="?"+$.param(H)}function bh(){J&&(H.platform=J),delete H[""],history.replaceState({},"","?"+$.param(H)+window.location.hash)}function b1(i){if(!i||i==="#")return null;var e=decodeURIComponent(i.substring(1));return e.startsWith("asseteditor/")?"#asseteditor":e.startsWith("headerview/")?(To(e.substring(11)),"#"+e):X.isWindow("#"+e)?"#"+e:X.isWindow(e)?e:null}function bL(){function i(){let e=window.location.hash,t=e&&e!=="#"?b1(e):null;if(t)t!==X.getActiveID()&&X.createOrShow(t);else{let r=N.mainPLine truncated
</div>`})}function OL(){let i=x.getToolForFilename(Ue());if(!i)return;let e=ft(i);if(!e)return;let t=e.version?" ("+e.version+")":"",r=(s,o,a)=>{let{li:l,a:c}=uh(s,o);$("#help_menu").append(l),$(c).click(h=>{h.preventDefault(),window.open(a,"_8bws_help")})};e.helpURL&&r("help__"+i,e.name+" Help"+t,e.helpURL);let n=Vm(i,J);n&&r("help__"+i+"__"+J,e.name+" Help for "+Wo,n)}function mL(){var i=$("#replayslider"),e=$("#clockslider"),t=$("#replay_frame"),r=$("#replay_clock");x.advanceFrameClock||$("#clockdiv").hide();var n=()=>{t.text(kt.lastSeekFrame+""),r.text(kt.lastSeekStep+"")},s=l=>{Ki();var c=parseInt(i.val().toString()),h=parseInt(e.val().toString());kt.loadFrame(c,h)>=0&&(e.attr("min",0),e.attr("max",kt.lastStepCount),n(),ch(x.saveState()))},o=l=>{Ki(),kt.loadFrame(l)>=0&&(i.val(l),n(),ch(x.saveState()))},a=l=>{Ki();var c=parseInt(i.val().toString());kt.loadFrame(c,l)>=0&&(e.val(l),n(),ch(x.saveState()))};kt.callbackStateChanged=()=>{i.attr("min",0),i.attr("max",kt.numFrames()),i.val(kt.currentFrame()),e.val(kt.currentStep()),n(),Vo(x.saveState())},i.on("input",s),e.on("input",s),$("#replay_min").click(()=>{o(1)}),$("#replay_max").click(()=>{o(kt.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(),Me.add("mod+shift+e","Start/Stop Replay Recording","glyphicon-record",cL).prop("id","dbg_record")}async function gL(){if(Ji.shouldCompleteTour()){await Ut("lib/bootstrap-tourist.js");var i=J.startsWith("vcs"),e=[{element:"#platformsMenuButton",placement:"right",title:"Platform Selector",content:`You're currently on the "<b>`+J+'</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."}];bn()&&(e.unshift({element:"#dropdownMenuButton",placement:"right",title:"Cookie Consent",content:'Before we start, we should tell you that this website stores persistent data in your browser. 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!"})),us&&(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:()=>{Ji.completedTour()}});setTimeout(()=>{t.start()},2500)}}function dh(i){var e=(i.message||i.error||i)+"";if(e.indexOf("QuotaExceededError")>=0)$X();else{var t=i.error||i.reason;t!=null&&t instanceof Eh?bL(t):bn()&&qm(e,t,{platform:J,window:X?X.getActiveID():"",errors:X.lasterrors||[]})}}function bL(i){console.log("haltEmulation"),Ki(),EL(i)}function xL(){window.addEventListener("error",dh),window.addEventListener("unhandledrejection",dh)}function b1(){window.removeEventListener("error",dh),window.removeEventListener("unhandledrejection",dh)}function Jr(i,e){e&&(H=e),b1(),i?window.location.replace("?"+$.param(H)):window.location.href="?"+$.param(H)}function bh(){J&&(H.platform=J),delete H[""],history.replaceState({},"","?"+$.param(H)+window.location.hash)}function x1(i){if(!i||i==="#")return null;var e=decodeURIComponent(i.substring(1));return e.startsWith("asseteditor/")?"#asseteditor":e.startsWith("headerview/")?(To(e.substring(11)),"#"+e):X.isWindow("#"+e)?"#"+e:X.isWindow(e)?e:null}function SL(){function i(){let e=window.location.hash,t=e&&e!=="#"?x1(e):null;if(t)t!==X.getActiveID()&&X.createOrShow(t);else{let r=N.mainPLine truncated
/*! Bundled license information:
localforage/dist/localforage.js:
@@ -119,4 +119,4 @@ localforage/dist/localforage.js:
(c) 2013-2017 Mozilla, Apache License 2.0
*)
*/
//# sourceMappingURL=chunk-5YJJ4DRA.js.map
//# sourceMappingURL=chunk-XRWSPMRR.js.map
+7
View File
@@ -0,0 +1,7 @@
{
"version": 3,
"sources": ["../node_modules/localforage/dist/localforage.js", "../src/ide/ui.ts", "../src/common/toolmeta.ts", "../src/worker/platforms.ts", "../src/ide/errorreport.ts", "../src/ide/dialogs.ts", "../node_modules/@marijn/find-cluster-break/src/index.js", "../node_modules/@codemirror/state/dist/index.js", "../node_modules/style-mod/src/style-mod.js", "../node_modules/w3c-keyname/index.js", "../node_modules/crelt/index.js", "../node_modules/@codemirror/view/dist/index.js", "../node_modules/@lezer/common/dist/index.js", "../node_modules/@lezer/highlight/dist/index.js", "../node_modules/@codemirror/language/dist/index.js", "../node_modules/@codemirror/autocomplete/dist/index.js", "../src/ide/views/debug.ts", "../node_modules/@codemirror/commands/dist/index.js", "../src/ide/views/tabs.ts", "../src/ide/settings.ts", "../src/ide/storage.ts", "../src/ide/project.ts", "../src/common/workertypes.ts", "../src/ide/services.ts", "../src/common/audio/CommodoreTape.ts", "../src/ide/shareexport.ts", "../src/ide/sync.ts", "../src/common/symbols/index.ts", "../src/ide/search/projectsource.ts", "../src/ide/search/toolchainsource.ts", "../src/ide/search/service.ts", "../node_modules/@codemirror/search/dist/index.js", "../node_modules/@lezer/lr/dist/index.js", "../node_modules/@fazelstudio/codemirror-lang-c/dist/highlight.js", "../node_modules/@fazelstudio/codemirror-lang-c/dist/parser.js", "../node_modules/@fazelstudio/codemirror-lang-c/dist/index.js", "../src/parser/tokens-6502.ts", "parser/lang-6502.grammar.js", "../src/parser/lang-6502.ts", "../src/parser/tokens-z80.ts", "parser/lang-z80.grammar.js", "../src/parser/lang-z80.ts", "../src/parser/lang-wiz.ts", "../src/parser/lang-verilog.ts", "../src/parser/lang-inform6.ts", "../src/parser/lang-dialog.ts", "../src/parser/lang-basic.ts", "../src/parser/lang-fastbasic.ts", "../src/parser/lang-bataribasic.ts", "../node_modules/@lezer/markdown/dist/index.js", "../node_modules/@lezer/html/dist/index.js", "../node_modules/@lezer/css/dist/index.js", "../node_modules/@codemirror/lang-css/dist/index.js", "../node_modules/@lezer/javascript/dist/index.js", "../node_modules/@codemirror/lang-javascript/dist/index.js", "../node_modules/@codemirror/lang-html/dist/index.js", "../node_modules/@codemirror/lang-markdown/dist/index.js", "../src/parser/registry.ts", "../src/themes/cobalt.ts", "../src/themes/disassemblyTheme.ts", "../src/themes/editorTheme.ts", "../src/themes/mbo.ts", "../src/ide/breakcond.ts", "../src/ide/breakpoints.ts", "../src/ide/views/assetdecorations.ts", "../src/ide/views/includedecorations.ts", "../src/ide/views/filters.ts", "../src/ide/views/gutter.ts", "../src/ide/views/visuals.ts", "../src/ide/views/editors.ts", "../src/common/vtextscroller.ts", "../src/ide/views/debugviews.ts", "../src/ide/search/debuggerhit.ts", "../src/ide/search/searchview.ts", "../src/ide/pixeleditor.ts", "../src/ide/views/asseteditor.ts", "../src/ide/views/treeviews.ts", "../src/ide/windows.ts", "../src/ide/layout.ts", "../src/ide/search/listinglocation.ts"],
"sourcesContent": ["/*!\n localForage -- Offline Storage, Improved\n Version 1.10.0\n https://localforage.github.io/localForage\n (c) 2013-2017 Mozilla, Apache License 2.0\n*/\n(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.localforage = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw (f.code=\"MODULE_NOT_FOUND\", f)}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){\n(function (global){\n'use strict';\nvar Mutation = global.MutationObserver || global.WebKitMutationObserver;\n\nvar scheduleDrain;\n\n{\n if (Mutation) {\n var called = 0;\n var observer = new Mutation(nextTick);\n var element = global.document.createTextNode('');\n observer.observe(element, {\n characterData: true\n });\n scheduleDrain = function () {\n element.data = (called = ++called % 2);\n };\n } else if (!global.setImmediate && typeof global.MessageChannel !== 'undefined') {\n var channel = new global.MessageChannel();\n channel.port1.onmessage = nextTick;\n scheduleDrain = function () {\n channel.port2.postMessage(0);\n };\n } else if ('document' in global && 'onreadystatechange' in global.document.createElement('script')) {\n scheduleDrain = function () {\n\n // Create a <script> element; its readystatechange event will be fired asynchronously once it is inserted\n // into the document. Do so, thus queuing up the task. Remember to clean up once it's been called.\n var scriptEl = global.document.createElement('script');\n scriptEl.onreadystatechange = function () {\n nextTick();\n\n scriptEl.onreadystatechange = null;\n scriptEl.parentNode.removeChild(scriptEl);\n scriptEl = null;\n };\n global.document.documentElement.appendChild(scriptEl);\n };\n } else {\n scheduleDrain = function () {\n setTimeout(nextTick, 0);\n };\n }\n}\n\nvar draining;\nvar queue = [];\n//named nextTick for less confusing stack traces\nfunction nextTick() {\n draining = true;\n var i, oldQueue;\n var len = queue.length;\n while (len) {\n oldQueue = queue;\n queue = [];\n i = -1;\n while (++i < len) {\n oldQueue[i]();\n }\n len = queue.length;\n }\n draining = false;\n}\n\nmodule.exports = immediate;\nfunction immediate(task) {\n if (queue.push(task) === 1 && !draining) {\n scheduleDrain();\n }\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{}],2:[function(_dereq_,module,exports){\n'use strict';\nvar immediate = _dereq_(1);\n\n/* istanbul ignore next */\nfunction INTERNAL() {}\n\nvar handlers = {};\n\nvar REJECTED = ['REJECTED'];\nvar FULFILLED = ['FULFILLED'];\nvar PENDING = ['PENDING'];\n\nmodule.exports = Promise;\n\nfunction Promise(resolver) {\n if (typeof resolver !== 'function') {\n throw new TypeError('resolver must be a function');\n }\n this.state = PENDING;\n this.queue = [];\n this.outcome = void 0;\n if (resolver !== INTERNAL) {\n safelyResolveThenable(this, resolver);\n }\n}\n\nPromise.prototype[\"catch\"] = function (onRejected) {\n return this.then(null, onRejected);\n};\nPromise.prototype.then = function (onFulfilled, onRejected) {\n if (typeof onFulfilled !== 'function' && this.state === FULFILLED ||\n typeof onRejected !== 'function' && this.state === REJECTED) {\n return this;\n }\n var promise = new this.constructor(INTERNAL);\n if (this.state !== PENDING) {\n var resolver = this.state === FULFILLED ? onFulfilled : onRejected;\n unwrap(promise, resolver, this.outcome);\n } else {\n this.queue.push(new QueueItem(promise, onFulfilled, onRejected));\n }\n\n return promise;\n};\nfunction QueueItem(promise, onFulfilled, onRejected) {\n this.promise = promise;\n if (typeof onFulfilled === 'function') {\n this.onFulfilled = onFulfilled;\n this.callFulfilled = this.otherCallFulfilled;\n }\n if (typeof onRejected === 'function') {\n this.onRejected = onRejected;\n this.callRejected = this.otherCallRejected;\n }\n}\nQueueItem.prototype.callFulfilled = function (value) {\n handlers.resolve(this.promise, value);\n};\nQueueItem.prototype.otherCallFulfilled = function (value) {\n unwrap(this.promise, this.onFulfilled, value);\n};\nQueueItem.prototype.callLine truncated
"mappings": "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 truncated
"names": ["require_localforage", "__commonJSMin", "exports", "module", "f", "g", "define", "e", "t", "n", "r", "s", "o", "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", "localforage", "SHARED_INCLUDE_PATTERNS", "OSCAR64_INCLUDE_PATTERNS", "SHARED_LINK_PATTERNS", "VERILOG_INCLUDE_PATTERNS", "SYSTEM_INCLUDE_PATTERNS", "getSystemIncludePatterns", "tool", "meta", "getToolMeta", "USE_ASM_INCLUDE_PATTERNS", "ACME_INCLUDE_PATTERNS", "WIZ_INCLUDE_PATTERNS", "ECS_INCLUDE_PATTERNS", "DIALOG_INCLUDE_PATTERNS", "TOOL_PLATFORM_HELPURL", "CC65_PRELOADFS", "TOOL_META", "id", "getPlatformToolHelpURL", "platform", "overrides", "url", "base", "getRootBasePlatform", "getLine truncated
}
+21 -2
View File
@@ -23,7 +23,7 @@
* (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.SYSTEM_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.OSCAR64_INCLUDE_PATTERNS = exports.SHARED_INCLUDE_PATTERNS = void 0;
exports.getSystemIncludePatterns = getSystemIncludePatterns;
exports.getToolMeta = getToolMeta;
exports.getPlatformToolHelpURL = getPlatformToolHelpURL;
@@ -37,6 +37,7 @@ exports.defineArgs = defineArgs;
exports.linkSymbolArgs = linkSymbolArgs;
exports.extraArgsFor = extraArgsFor;
exports.getLinkPatterns = getLinkPatterns;
exports.getCompileLinkedSources = getCompileLinkedSources;
exports.getIncludeDirs = getIncludeDirs;
exports.getSharedFileSystemName = getSharedFileSystemName;
exports.matchDependencyPatterns = matchDependencyPatterns;
@@ -47,6 +48,13 @@ exports.SHARED_INCLUDE_PATTERNS = [
/^\s*[.#%]?(include|incbin|embed)\s+"(.+?)"/gmi,
/^\s*([;']|[/][/])#(resource)\s+"(.+?)"/gm,
];
// oscar64: #pragma compile("file.c") pulls another source file into the build
// (the compiler's equivalent of a link). The compiler handles it itself, so the
// file just has to be a build dependency copied into the tool filesystem.
exports.OSCAR64_INCLUDE_PATTERNS = [
...exports.SHARED_INCLUDE_PATTERNS,
/^\s*#pragma\s+compile\s*\(\s*"([^"]+)"\s*\)/gmi,
];
// C / most assemblers: //#link "file" (or ;link)
exports.SHARED_LINK_PATTERNS = [
/^\s*([;]|[/][/])#link\s+"(.+?)"/gm,
@@ -393,8 +401,9 @@ exports.TOOL_META = {
defineFlag: '-d', defineInline: true,
wasmModule: 'oscar64',
version: '1.32.266',
includePatterns: exports.SHARED_INCLUDE_PATTERNS,
includePatterns: exports.OSCAR64_INCLUDE_PATTERNS,
linkPatterns: exports.SHARED_LINK_PATTERNS,
compileLinkedSources: true,
platforms: {
// oscar64 defaults to the C64 target machine
c64: {},
@@ -731,6 +740,16 @@ function getLinkPatterns(tool, platform) {
return [];
return exports.SHARED_LINK_PATTERNS;
}
/**
* True if "//#link" dependencies are compiled together with the main source in
* one tool invocation (single-pass compilers like oscar64) rather than built
* separately and linked. The build message then carries them as `linkfiles`
* on the main step so the tool can pass them all to one invocation.
*/
function getCompileLinkedSources(tool) {
let meta = tool && getToolMeta(tool);
return !!(meta && meta.compileLinkedSources);
}
/**
* Directories containing shared code (headers etc.) for this tool's shared
* filesystem, e.g. ['/include','/asminc','/headers'] -- empty if none/unknown.
+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
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"workertypes.js","sourceRoot":"","sources":["../../src/common/workertypes.ts"],"names":[],"mappings":";;;AA+LA,kCAEC;AAED,sCAEC;AAED,wCAEC;AA3KD,MAAa,UAAU;IAOrB,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,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;oBACnC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACzC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;oBAClC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,EAAE,CAAA,CAAC,GAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;IACD,yEAAyE;IACzE,2DAA2D;IAC3D,iBAAiB,CAAC,EAAS,EAAE,UAAiB;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;QACnC,sCAAsC;QACtC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,GAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;QAC5C,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;YAChB,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YACzB,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;gBACvB,GAAG,GAAG,GAAG,CAAC;gBACV,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;YACf,CAAC;QACH,CAAC;QACD,IAAI,GAAG,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QACzB,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,EAAE,GAAG,GAAG,GAAG,UAAU;YAAE,OAAO,IAAI,CAAC;QACvC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IACD,SAAS,KAAY,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;CACjD;AA9CD,gCA8CC;AAYA,CAAC;AAyBD,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"}
{"version":3,"file":"workertypes.js","sourceRoot":"","sources":["../../src/common/workertypes.ts"],"names":[],"mappings":";;;AAsMA,kCAEC;AAED,sCAEC;AAED,wCAEC;AAlLD,MAAa,UAAU;IAOrB,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,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;oBACnC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACzC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;oBAClC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,EAAE,CAAA,CAAC,GAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;IACD,yEAAyE;IACzE,2DAA2D;IAC3D,iBAAiB,CAAC,EAAS,EAAE,UAAiB;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;QACnC,sCAAsC;QACtC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,GAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;QAC5C,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;YAChB,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YACzB,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;gBACvB,GAAG,GAAG,GAAG,CAAC;gBACV,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;YACf,CAAC;QACH,CAAC;QACD,IAAI,GAAG,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QACzB,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,EAAE,GAAG,GAAG,GAAG,UAAU;YAAE,OAAO,IAAI,CAAC;QACvC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IACD,SAAS,KAAY,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;CACjD;AA9CD,gCA8CC;AAYA,CAAC;AA4BD,CAAC;AAID,CAAC;AA8EF,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"}
@@ -1,2 +1,2 @@
import{a as x}from"./chunk-3FIVEUG2.js";import{y}from"./chunk-5YJJ4DRA.js";import"./chunk-VLOGW7AJ.js";import"./chunk-T6VURU5O.js";import"./chunk-A7SWO6EA.js";import"./chunk-4R3KPJX7.js";import{J as m,m as c,p}from"./chunk-2XSLQJUY.js";import{C as d,K as f,aa as a,n as h}from"./chunk-TYDI7JZQ.js";import"./chunk-VSC4MAII.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-TVV4ZUJO.js.map
import{a as x}from"./chunk-3FIVEUG2.js";import{y}from"./chunk-XRWSPMRR.js";import"./chunk-VLOGW7AJ.js";import"./chunk-T6VURU5O.js";import"./chunk-A7SWO6EA.js";import"./chunk-C7SFJC4F.js";import{J as m,m as c,p}from"./chunk-2XSLQJUY.js";import{C as d,K as f,aa as a,n as h}from"./chunk-TYDI7JZQ.js";import"./chunk-VSC4MAII.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-LWYSQMYN.js.map
File renamed without changes.
+1 -1
View File
@@ -1,2 +1,2 @@
import{b as v,c as P}from"./chunk-4R3KPJX7.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-VSC4MAII.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-C7SFJC4F.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-VSC4MAII.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
+57 -7
View File
@@ -248,11 +248,18 @@ class CodeProject {
this.filename2path[mainfilename] = this.mainPath;
const tool = this.getToolForFilename(this.mainPath);
let usesRemoteTool = tool.startsWith('remote:');
// Single-pass tools (oscar64) compile their linked sources in the same
// invocation as the main file, so those files travel in the main step.
let compileLinkedSources = (0, toolmeta_1.getCompileLinkedSources)(tool);
let linkfiles = [];
for (var dep of depends) {
// remote tools send both includes and linked files in one build step
if (!dep.link || usesRemoteTool) {
if (!dep.link || usesRemoteTool || compileLinkedSources) {
msg.updates.push({ path: dep.filename, data: dep.data });
depfiles.push(dep.filename);
if (dep.link && compileLinkedSources && linkfiles.indexOf(dep.filename) < 0) {
linkfiles.push(dep.filename);
}
}
this.filename2path[dep.filename] = dep.path;
}
@@ -263,13 +270,15 @@ class CodeProject {
tool: this.getToolForFilename(this.mainPath),
mainfile: true,
};
if (linkfiles.length)
mainstep.linkfiles = linkfiles;
if (this.buildSymbols)
mainstep.symbols = this.buildSymbols;
if (this.buildArgs)
mainstep.buildArgs = this.buildArgs;
msg.buildsteps.push(mainstep);
for (var dep of depends) {
if (dep.data && dep.link) {
if (dep.data && dep.link && !compileLinkedSources) {
this.preloadWorker(dep.filename);
msg.updates.push({ path: dep.filename, data: dep.data });
msg.buildsteps.push({
@@ -376,8 +385,24 @@ class CodeProject {
this.listings = data.listings;
for (var lstname in this.listings) {
var lst = this.listings[lstname];
if (lst.lines)
if (lst.lines) {
lst.sourcefile = new workertypes_1.SourceFile(lst.lines, lst.text);
// A single-pass tool (oscar64) emits one listing that mixes source
// lines from the main file and every linked library, each tagged
// with its own path. Split them so each editor can find the lines
// for its own file (see getListingForFile).
var bypath = {};
for (var info of lst.lines) {
var p = info.path || '';
(bypath[p] || (bypath[p] = [])).push(info);
}
var paths = Object.keys(bypath);
if (paths.length > 1 || (paths.length == 1 && paths[0] != '')) {
lst.sourcefiles = {};
for (var p of paths)
lst.sourcefiles[p] = new workertypes_1.SourceFile(bypath[p], lst.text);
}
}
if (lst.asmlines)
lst.assemblyfile = new workertypes_1.SourceFile(lst.asmlines, lst.text);
}
@@ -408,18 +433,43 @@ class CodeProject {
// ignore include files (TODO)
//if (path.toLowerCase().endsWith('.h') || path.toLowerCase().endsWith('.inc'))
//return;
var fnprefix = (0, util_1.getFilenamePrefix)(this.stripLocalPath(path));
var stripped = this.stripLocalPath(path);
var fnprefix = (0, util_1.getFilenamePrefix)(stripped);
// find listing with matching prefix
var listings = this.getListings();
for (var lstfn in listings) {
if (lstfn == path)
return listings[lstfn];
if (lstfn == path || lstfn == stripped)
return this.withSourceFileForPath(listings[lstfn], stripped);
}
for (var lstfn in listings) {
if ((0, util_1.getFilenamePrefix)(lstfn) == fnprefix) {
return listings[lstfn];
return this.withSourceFileForPath(listings[lstfn], stripped);
}
}
// no listing named after this file; it may be one source among many in a
// single mixed listing (e.g. an oscar64 "//#link"ed source)
for (var lstfn in listings) {
var sf = this.findSourceFileForPath(listings[lstfn], stripped);
if (sf)
return Object.assign({}, listings[lstfn], { sourcefile: sf });
}
}
// return a copy of `lst` whose sourcefile holds only the lines for `path`,
// or `lst` unchanged if it has no per-source-file views
withSourceFileForPath(lst, path) {
var sf = this.findSourceFileForPath(lst, path);
return sf ? Object.assign({}, lst, { sourcefile: sf }) : lst;
}
// look up the per-source-file view (see processBuildListings) for `path`
findSourceFileForPath(lst, path) {
if (!lst || !lst.sourcefiles)
return null;
var want = (0, util_1.getFilenameForPath)((0, util_1.getFilenamePrefix)(path));
for (var p in lst.sourcefiles) {
if ((0, util_1.getFilenameForPath)((0, util_1.getFilenamePrefix)(p)) == want)
return lst.sourcefiles[p];
}
return null;
}
stripLocalPath(path) {
if (this.mainPath) {
+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
+1 -1
View File
@@ -1705,7 +1705,7 @@ function _addIncludeFile() {
var fn = getCurrentMainFilename();
var tool = exports.platform.getToolForFilename(fn);
// TODO: more tools? make this a function of the platform / tool provider
if (fn.endsWith(".c") || tool == 'sdcc' || tool == 'cc65' || tool == 'cmoc' || tool == 'smlrc')
if (fn.endsWith(".c") || tool == 'sdcc' || tool == 'cc65' || tool == 'cmoc' || tool == 'smlrc' || tool == 'oscar64')
addFileToProject("Header", ".h", (s) => { return '#include "' + s + '"'; });
else if (tool == 'dasm' || tool == 'zmac')
addFileToProject("Include", ".inc", (s) => { return '\tinclude "' + s + '"'; });
+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":";AACA,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8GlC,4CAEC;AACD,8CAEC;AACD,4CAEC;AACD,0CAEC;AAoLD,wCAUC;AA8cD,wDAEC;AAED,4DAEC;AAqWD,0CAGC;AAkHD,8CASC;AAsBD,0CAOC;AAwJD,wCA6BC;AA4BD,0BAgBC;AAwBD,0CAKC;AAkDD,wCAMC;AAgjBD,sCAKC;AAaD,0CASC;AAoQD,gDA8BC;AAGD,0BAwDC;AAgED,oCAEC;AAED,sCAEC;AAED,oCAEC;AAED,0CAKC;AAKD,kDAMC;AAnkFD,yDAA2C;AAC3C,yDAAuI;AACvI,uCAAmD;AACnD,iDAAuD;AACvD,yCAGwB;AACxB,iDAAqG;AACrG,mDAAsD;AAEtD,+CAAoD;AACpD,+CAAoD;AACpD,uCAA6E;AAC7E,yCAAwD;AACxD,uCAAuG;AACvG,uCAAqJ;AACrJ,yCAAsD;AACtD,+CAAwN;AACxN,iCAAsM;AACtM,uCAAoC;AACpC,+CAAuI;AACvI,oDAAuD;AACvD,sDAA6D;AAC7D,0DAA4D;AAC5D,qDAAsD;AACtD,iDAAmD;AACnD,mDAAuM;AACvM,6CAA+H;AAC/H,+CAAqG;AACrG,iDAAoE;AACpE,uCAA2C;AAC3C,qCAAgD;AACvC,4FADA,oBAAW,OACA;AAAE,wFADA,gBAAO,OACA;AAC7B,+CAA4D;AAE5D,8DAA0F;AAC1F,uCAAwC;AA4BxC,mCAAmC;AAExB,QAAA,EAAE,GAAG,IAAA,wBAAiB,EAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,IAAI,GAAG,CAAkB,CAAC;AAUlF,kBAAkB;AAElB,IAAI,UAAU,CAAC,CAAG,oCAAoC;AACtD,IAAI,aAAqB,CAAC,CAAC,sCAAsC;AACjE,IAAI,OAAO,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC;AACjC,IAAI,SAAkB,CAAC;AACvB,IAAI,aAAgC,CAAC;AACrC,IAAI,UAAmB,CAAC,CAAE,6BAA6B;AACvD,IAAI,iBAAiB,GAAG,KAAK,CAAC,CAAC,yDAAyD;AACxF,IAAI,kBAA2B,CAAC,CAAC,sEAAsE;AACvG,IAAI,cAAmB,CAAC,CAAK,gCAAgC;AAC7D,IAAI,cAAsB,CAAC,CAAC,sCAAsC;AAClE,IAAI,KAAkB,CAAC,CAAG,mBAAmB;AAE7C,MAAM,UAAU,GAAG,IAAA,gBAAS,EAAC,UAAE,CAAC,QAAQ,CAAC,CAAC;AAC1C,MAAM,OAAO,GAAG,IAAA,gBAAS,EAAC,UAAE,CAAC,KAAK,CAAC,CAAC;AAOpC,IAAI,aAAa,CAAC,CAAE,6BAA6B;AACjD,IAAI,aAAa,CAAC,CAAE,yBAAyB;AAC7C,IAAI,eAAe,GAAG,KAAK,CAAC;AAC5B,IAAI,cAAc,GAAG,KAAK,CAAC;AAC3B,IAAI,eAAe,GAAW,IAAI,CAAC;AACnC,IAAI,gBAAgB,GAAqB,IAAI,CAAC;AAC9C,IAAI,eAAe,GAAG,KAAK,CAAC;AAC5B,IAAI,aAAa,GAAG,gBAAgB,CAAC;AAErC,SAAgB,gBAAgB;IAC9B,OAAO,KAAK,CAAC;AACf,CAAC;AACD,SAAgB,iBAAiB;IAC/B,OAAO,uBAAe,CAAC;AACzB,CAAC;AACD,SAAgB,gBAAgB;IAC9B,OAAO,cAAc,CAAC;AACxB,CAAC;AACD,SAAgB,eAAe;IAC7B,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,iFAAiF;AAEjF,SAAS,SAAS;IAChB,mHAAmH;IACnH,OAAO,IAAI,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,eAAe,GAAY;IAC/B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,8CAA8C,CAAC;QAC3D,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC/B,IAAI,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;QAC3C,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC7B,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,EAAE,CAAC;AAEJ,2BAA2B;AAC3B,MAAM,SAAS;IACb,aAAa,CAAC,EAAU;QACtB,IAAI,eAAe,IAAI,CAAC,OAAO,EAAE,CAAC;YAChC,IAAI,eAAO,IAAI,mBAAW,IAAI,CAAC,UAAU;gBACvC,YAAY,CAAC,OAAO,CAAC,aAAa,GAAG,mBAAW,EAAE,eAAO,CAAC,CAAC;;gBAE3D,YAAY,CAAC,UAAU,CAAC,aAAa,GAAG,mBAAW,CAAC,CAAC;YACvD,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,mBAAW,CAAC,CAAC;YACpD,YAAY,CAAC,OAAO,CAAC,WAAW,GAAG,gBAAQ,EAAE,EAAE,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IACD,eAAe;QACb,IAAI,eAAe,IAAI,CAAC,OAAO,EAAE,CAAC;YAChC,OAAO,UAAE,CAAC,IAAI,CAAC;YACf,YAAY,CAAC,UAAU,CAAC,WAAW,GAAG,gBAAQ,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IACD,aAAa;QACX,OAAO,eAAe,IAAI,CAAC,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,WAAW,GAAG,gBAAQ,CAAC,CAAC;IACrF,CAAC;IACD,iBAAiB;QACf,OAAO,eAAe,IAAI,CAAC,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC/E,CAAC;IACD,aAAa,CAAC,QAAgB;QAC5B,OAAO,eAAe,IAAI,CAAC,OAAO,IAAI,QAAQ,IAAI,YAAY,CAAC,OAAO,CAAC,aAAa,GAAG,QAAQ,CAAC,CAAC;IACnG,CAAC;IACD,kBAAkB;QAChB,OAAO,eAAe,IAAI,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACpF,CAAC;IACD,aAAa;QACX,IAAI,eAAe,IAAI,CAAC,OAAO;YAAE,YAAY,CAAC,OAAO,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IACtF,CAAC;IACD,4DAA4D;IAC5D,0BAA0B;QACxB,OAAO,eAAe,IAAI,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAC1F,CAAC;IACD,sBAAsB;QACpB,IAAI,eAAe,IAAI,CAAC,OAAO;YAAE,YAAY,CAAC,OAAO,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAC;IAC5F,CAAC;CACF;AAED,IAAI,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;AAEhC,qDAAqD;AACrD,8EAA8E;AAC9E,oEAAoE;AACpE,0EAA0E;AAC1E,KAAK,UAAU,wBAAwB,CAAC,WAAoB,EAAE,WAAoB;IAChF,IAAI,UAAU,EAAE,CAAC;QACf,uDAAuD;QACvD,WAAW,IAAI,IAAA,mBAAS,EAAC,qHAAqH,CAAC,CAAC;QAChJ,OAAO;IACT,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACZ,0DAA0D;QAC1D,WAAW,IAAI,IAAA,mBAAS,EAAC,0GAA0G,CAAC,CAAC;QACrI,OAAO;IACT,CAAC;IACD,IAAI,MAAM,GAAG,MAAM,IAAA,kCAAwB,GAAE,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;IAClD,IAAI,CAAC,WAAW;QAAE,OAAO;IACzB,IAAI,MAAM,CAAC,SAAS,IAAI,WAAW;QAAE,OAAO,CAAC,iCAAiC;IAC9E,uEAAuE;IACvE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,WAAW,EAAE,CAAC;QACrC,IAAI,CAAC,SAAS,CAAC,0BAA0B,EAAE;YAAE,OAAO;QACpD,SAAS,CAAC,sBAAsB,EAAE,CAAC;IACrC,CAAC;IACD,IAAA,mBAAS,EAAC,IAAA,iCAAuB,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,IAAI,mBAAmB,GAAG,KAAK,CAAC;AAEhC,KAAK,UAAU,oBAAoB;IACjC,IAAI,mBAAmB;QAAE,OAAO;IAChC,mBAAmB,GAAG,IAAI,CAAC;IAC3B,8EAA8E;IAC9E,IAAI,MAAM,GAAG,MAAM,IAAA,kCAAwB,GAAE,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;IAC9C,IAAA,oBAAU,EAAC,IAAA,iCAAuB,EAAC,MAAM,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,qBAAqB;IAC5B,IAAI,CAAC,cAAc;QACjB,OAAO,uBAAe,CAAC,QAAQ,IAAI,KAAK,CAAC;;QAEzC,OAAO,cAAc,CAAC,KAAK,IAAI,cAAc,CAAC,IAAI,IAAI,uBAAe,CAAC,QAAQ,IAAI,KAAK,CAAC;AAC5F,CAAC;AAED,KAAK,UAAU,aAAa;IAC1B,IAAI,MAAM,GAAsB,IAAI,8BAAoB,CAAC,mBAAW,CAAC,CAAC;IACtE,IAAI,UAAU,EALine truncated
+90 -1
View File
@@ -9,6 +9,21 @@ const util_1 = require("../common/util");
const antic_1 = require("./chips/antic");
const gtia_1 = require("./chips/gtia");
const pokey_1 = require("./chips/pokey");
const atari8disk_1 = require("./atari8disk");
// High-level SIO patch: redirect the OS SIOV vector to a stub in the $D5xx
// mapper area. The stub traps disk-device calls back into JS (via a magic
// write) and falls through to the real SIO routine for everything else.
// We stash the stub at $D5A0 so the XEX loader's stub (which starts at $D500)
// doesn't clobber it.
const SIO_STUB_OFFSET = 0xa0; // $D5A0
const SIO_HOOK_OFFSET = 0xf0; // $D5F0 - write here to call JS
const SIO_STATUS_OFFSET = 0xf1; // $D5F1 - JS puts the SIO status here
// lda $0300; cmp #$31; bcc notdisk; cmp #$40; bcs notdisk;
// sta $D5F0; lda $D5F1; tay; rts; notdisk: jmp $E950
const SIO_STUB = [
0xad, 0x00, 0x03, 0xc9, 0x31, 0x90, 0x0c, 0xc9, 0x40, 0xb0, 0x08,
0x8d, 0xf0, 0xd5, 0xad, 0xf1, 0xd5, 0xa8, 0x60, 0x4c, 0x50, 0xe9,
];
const ATARI8_KEYMATRIX_INTL_NOSHIFT = [
emu_1.Keys.VK_L, emu_1.Keys.VK_J, emu_1.Keys.VK_SEMICOLON, emu_1.Keys.VK_F4, emu_1.Keys.VK_F5, emu_1.Keys.VK_K, emu_1.Keys.VK_BACK_SLASH, emu_1.Keys.VK_TILDE,
emu_1.Keys.VK_O, null, emu_1.Keys.VK_P, emu_1.Keys.VK_U, emu_1.Keys.VK_ENTER, emu_1.Keys.VK_I, emu_1.Keys.VK_MINUS2, emu_1.Keys.VK_EQUALS2,
@@ -62,6 +77,7 @@ class Atari800 extends devices_1.BasicScanlineMachine {
this.cart_80 = false;
this.cart_a0 = false;
this.xexdata = null;
this.disk = null;
this.keyboard_active = true;
this.d500 = new Uint8Array(0x100);
this.cpu = new MOS6502_1.MOS6502();
@@ -102,6 +118,15 @@ class Atari800 extends devices_1.BasicScanlineMachine {
}
loadBIOS(bios) {
this.bios.set(bios);
this.installSIOStub();
}
installSIOStub() {
// patch the SIOV jump table entry ($E459: JMP $E950) to enter our stub
const o = 0xe459 - 0xd800;
this.bios[o] = 0x4c; // JMP
this.bios[o + 1] = 0xd500 + SIO_STUB_OFFSET & 0xff;
this.bios[o + 2] = (0xd500 + SIO_STUB_OFFSET) >> 8;
this.d500.set(SIO_STUB, SIO_STUB_OFFSET);
}
reset() {
super.reset();
@@ -320,11 +345,19 @@ class Atari800 extends devices_1.BasicScanlineMachine {
this.probe.logInterrupt(1);
}
loadROM(rom, title) {
if ((rom[0] == 0xff && rom[1] == 0xff) && !title.endsWith('.rom')) {
if (rom[0] == 0x96 && rom[1] == 0x02) {
// ATR disk image, boot it as drive 1
this.disk = new atari8disk_1.DiskImage(rom);
this.xexdata = null;
console.log(`ATR disk: ${this.disk.numsectors} sectors x ${this.disk.sectorsize} bytes`);
}
else if ((rom[0] == 0xff && rom[1] == 0xff) && !title.endsWith('.rom')) {
// XEX file, chill out and wait for BIOS hook
this.disk = null;
this.xexdata = rom;
}
else {
this.disk = null;
this.loadCartridge(rom);
}
}
@@ -355,6 +388,62 @@ class Atari800 extends devices_1.BasicScanlineMachine {
if (value == 0xa0)
this.cart_a0 = false;
}
else if (addr == SIO_HOOK_OFFSET) {
this.handleSIO();
}
}
// Called from the patched SIO stub with the SIO parameter block in page 3.
handleSIO() {
const dunit = this.read(0x301);
const dcomnd = this.read(0x302);
const dbuf = this.read(0x304) | (this.read(0x305) << 8);
let dbyt = this.read(0x308) | (this.read(0x309) << 8);
const sector = this.read(0x30a) | (this.read(0x30b) << 8);
const disk = dunit == 1 ? this.disk : null;
let status = 0x01; // SIOSuccess
if (disk == null) {
status = 0x8a; // SIOErrorTimeout (no drive in that unit)
}
else {
switch (dcomnd) {
case 0x53: { // STATUS
const dvstat = [0x00, 0xff, 0xe0, 0x00];
const n = Math.min(dbyt || 4, dvstat.length);
for (let i = 0; i < n; i++)
this.write(dbuf + i, dvstat[i]);
break;
}
case 0x52: { // READ
if (dbyt == 0)
dbyt = disk.sectorsize;
const bytes = disk.readSector(sector, dbyt);
if (bytes == null) {
status = 0x90; // SIOErrorDeviceError
}
else {
for (let i = 0; i < dbyt; i++)
this.write(dbuf + i, i < bytes.length ? bytes[i] : 0);
}
break;
}
case 0x57: // WRITE
case 0x50: { // PUT
if (dbyt == 0)
dbyt = disk.sectorsize;
const buf = new Uint8Array(dbyt);
for (let i = 0; i < dbyt; i++)
buf[i] = this.read(dbuf + i);
if (!disk.writeSector(sector, buf, dbyt))
status = 0x90;
break;
}
default:
status = 0x8b; // SIOErrorNAK (unsupported command)
}
}
// mirror the OS SIO exit: status goes to DSTATS and the stub reads it back
this.write(0x303, status);
this.d500[SIO_STATUS_OFFSET] = status;
}
loadXEX(rom) {
let ofs = 2;
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"atari8.js","sourceRoot":"","sources":["../../src/machine/atari8.ts"],"names":[],"mappings":";;;AAAA,2CAAmE;AACnE,mDAAgD;AAChD,+CAA6E;AAC7E,uCAAsG;AACtG,yCAAqC;AACrC,yCAA8D;AAC9D,uCAAmD;AACnD,yCAAsC;AAEtC,MAAM,6BAA6B,GAAG;IACpC,UAAI,CAAC,IAAI,EAAE,UAAI,CAAC,IAAI,EAAE,UAAI,CAAC,YAAY,EAAE,UAAI,CAAC,KAAK,EAAE,UAAI,CAAC,KAAK,EAAE,UAAI,CAAC,IAAI,EAAE,UAAI,CAAC,aAAa,EAAE,UAAI,CAAC,QAAQ;IAC7G,UAAI,CAAC,IAAI,EAAE,IAAI,EAAE,UAAI,CAAC,IAAI,EAAE,UAAI,CAAC,IAAI,EAAE,UAAI,CAAC,QAAQ,EAAE,UAAI,CAAC,IAAI,EAAE,UAAI,CAAC,SAAS,EAAE,UAAI,CAAC,UAAU;IAChG,UAAI,CAAC,IAAI,EAAE,UAAI,CAAC,KAAK,EAAE,UAAI,CAAC,IAAI,EAAE,UAAI,CAAC,KAAK,EAAE,UAAI,CAAC,KAAK,EAAE,UAAI,CAAC,IAAI,EAAE,UAAI,CAAC,IAAI,EAAE,UAAI,CAAC,IAAI;IACzF,UAAI,CAAC,IAAI,EAAE,IAAI,EAAE,UAAI,CAAC,IAAI,EAAE,UAAI,CAAC,IAAI,EAAE,UAAI,CAAC,SAAS,EAAE,UAAI,CAAC,IAAI,EAAE,UAAI,CAAC,IAAI,EAAE,UAAI,CAAC,IAAI;IACtF,UAAI,CAAC,QAAQ,EAAE,UAAI,CAAC,QAAQ,EAAE,UAAI,CAAC,SAAS,EAAE,UAAI,CAAC,IAAI,EAAE,IAAI,EAAE,UAAI,CAAC,IAAI,EAAE,UAAI,CAAC,QAAQ,EAAE,IAAI,CAAA,UAAU;IACvG,UAAI,CAAC,IAAI,EAAE,IAAI,EAAE,UAAI,CAAC,IAAI,EAAE,UAAI,CAAC,IAAI,EAAE,UAAI,CAAC,MAAM,EAAE,UAAI,CAAC,IAAI,EAAE,UAAI,CAAC,IAAI,EAAE,UAAI,CAAC,IAAI;IACnF,UAAI,CAAC,IAAI,EAAE,IAAI,EAAE,UAAI,CAAC,IAAI,EAAE,UAAI,CAAC,IAAI,EAAE,UAAI,CAAC,aAAa,EAAE,UAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI;IAChF,UAAI,CAAC,IAAI,EAAE,UAAI,CAAC,IAAI,EAAE,UAAI,CAAC,IAAI,EAAE,IAAI,EAAE,UAAI,CAAC,YAAY,EAAE,UAAI,CAAC,IAAI,EAAE,UAAI,CAAC,IAAI,EAAE,UAAI,CAAC,IAAI;CAC1F,CAAC;AAEF,MAAM;AACN,IAAI,kBAAkB,GAAG,IAAA,oBAAc,EAAC;IACtC,CAAC,UAAI,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;IACjB,CAAC,UAAI,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC;IACnB,CAAC,UAAI,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC;IACnB,CAAC,UAAI,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC;IACpB,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;IACnD;;;;;;MAME;IACF,CAAC,UAAI,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAG,QAAQ;IAC/B,CAAC,UAAI,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,SAAS;IAC/B,CAAC,UAAI,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,SAAS;CAChC,CAAC,CAAC;AAGH,MAAa,QAAS,SAAQ,8BAAoB;IAmChD,uBAAuB;IAEvB;QACE,KAAK,EAAE,CAAC;QApCV,wFAAwF;QACxF,iBAAY,GAAG,OAAO,CAAC;QACvB,sBAAiB,GAAG,GAAG,CAAC;QACxB,qBAAgB,GAAG,GAAG,CAAC;QACvB,gBAAW,GAAG,GAAG,CAAC;QAClB,wBAAmB,GAAG,GAAG,CAAC;QAC1B,gBAAW,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;QAClE,yBAAoB,GAAG,EAAE,CAAC;QAC1B,sBAAiB,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,iBAAiB;QACnD,mBAAc,GAAG,MAAM,CAAC;QACxB,aAAQ,GAAG,IAAI,CAAC;QAChB,oBAAe,GAAG,CAAC,CAAC;QACpB,eAAU,GAAG,IAAI,CAAC,iBAAiB,GAAG,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC;QAChE,gBAAW,GAAG,CAAC,CAAC,CAAC;QAWjB,WAAM,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;QAC3B,YAAO,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC5C,gBAAW,GAAG,CAAC,CAAC;QAChB,YAAO,GAAG,CAAC,CAAC;QACZ,YAAO,GAAG,KAAK,CAAC;QAChB,YAAO,GAAG,KAAK,CAAC;QAChB,YAAO,GAAG,IAAI,CAAC;QACf,oBAAe,GAAG,IAAI,CAAC;QACvB,SAAI,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;QAK3B,IAAI,CAAC,GAAG,GAAG,IAAI,iBAAO,EAAE,CAAC;QACzB,IAAI,CAAC,GAAG,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACzB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnC,uBAAuB;QACvB,IAAI,CAAC,KAAK,GAAG,IAAI,aAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3E,IAAI,CAAC,IAAI,GAAG,IAAI,WAAI,EAAE,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,IAAI,aAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,WAAW,GAAG,IAAA,qBAAa,EAAC,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,YAAY,GAAG,IAAI,yBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1G,IAAI,CAAC,OAAO,GAAG,IAAA,wBAAkB,EAC/B,IAAI,CAAC,MAAM,EAAE,kBAAkB,EAAE,IAAI,CAAC,mBAAmB,EAAE,EAAE,IAAI,CAAC,CAAC;IACvE,CAAC;IACD,MAAM;QACJ,OAAO;YACL,IAAI,EAAE,IAAA,uBAAiB,EAAC;gBACtB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxD,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9F,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9F,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/D,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3D,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzD,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/D,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,IAAI,CAAC,IAAI,CLine truncated
{"version":3,"file":"atari8.js","sourceRoot":"","sources":["../../src/machine/atari8.ts"],"names":[],"mappings":"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 truncated
+68
View File
@@ -0,0 +1,68 @@
"use strict";
// Minimal Atari 8-bit disk image support.
//
// Parses ATR images (and raw 128-byte-sector .xfd/.dsk images) and exposes
// sector reads/writes. Sector numbers are 1-based to match SIO/DAUX1/DAUX2.
//
// ATR layout: http://www.atarimax.com/jindroush.atari.org/afmtdos.html
// 0 word magic $0296
// 2 word paragraph count (16-byte units, includes the 16-byte header)
// 4 word sector size (128 or 256)
// 6 dword CRC (unused)
// 10 dword unused
// 16 sector data
Object.defineProperty(exports, "__esModule", { value: true });
exports.DiskImage = void 0;
const ATR_MAGIC = 0x0296;
class DiskImage {
constructor(data) {
this.data = data;
if (data.length >= 16 && (data[0] | (data[1] << 8)) == ATR_MAGIC) {
const paragraphs = data[2] | (data[3] << 8);
const total = paragraphs * 16;
const sectorsize = data[4] | (data[5] << 8);
// enhanced-density images declare 256-byte sectors, but the first three
// (boot) sectors are still 128 bytes
this.sectorsize = sectorsize == 256 ? 256 : 128;
if (this.sectorsize == 256) {
this.numsectors = 3 + Math.floor((total - 16 - 3 * 128) / 256);
}
else {
this.numsectors = Math.floor((total - 16) / 128);
}
}
else {
// raw image, assume single density
this.sectorsize = 128;
this.numsectors = Math.floor(data.length / 128);
}
}
sectorOffset(sector) {
// sector is 0-based here
if (this.sectorsize == 256) {
if (sector < 3)
return 16 + sector * 128;
return 16 + 3 * 128 + (sector - 3) * 256;
}
return 16 + sector * 128;
}
/** Read up to len bytes from 1-based sector, returns null if out of range. */
readSector(sector, len) {
const idx = sector - 1;
if (idx < 0 || idx >= this.numsectors)
return null;
const ofs = this.sectorOffset(idx);
return this.data.subarray(ofs, Math.min(ofs + len, this.data.length));
}
/** Write len bytes into 1-based sector; returns false if out of range. */
writeSector(sector, src, len) {
const idx = sector - 1;
if (idx < 0 || idx >= this.numsectors)
return false;
const ofs = this.sectorOffset(idx);
this.data.set(src.subarray(0, Math.min(len, this.data.length - ofs)), ofs);
return true;
}
}
exports.DiskImage = DiskImage;
//# sourceMappingURL=atari8disk.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"atari8disk.js","sourceRoot":"","sources":["../../src/machine/atari8disk.ts"],"names":[],"mappings":";AAAA,0CAA0C;AAC1C,EAAE;AACF,2EAA2E;AAC3E,4EAA4E;AAC5E,EAAE;AACF,uEAAuE;AACvE,0BAA0B;AAC1B,2EAA2E;AAC3E,uCAAuC;AACvC,2BAA2B;AAC3B,qBAAqB;AACrB,oBAAoB;;;AAEpB,MAAM,SAAS,GAAG,MAAM,CAAC;AAEzB,MAAa,SAAS;IAKpB,YAAY,IAAgB;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC;YACjE,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5C,MAAM,KAAK,GAAG,UAAU,GAAG,EAAE,CAAC;YAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5C,wEAAwE;YACxE,qCAAqC;YACrC,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAChD,IAAI,IAAI,CAAC,UAAU,IAAI,GAAG,EAAE,CAAC;gBAC3B,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;YACjE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,mCAAmC;YACnC,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;YACtB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,MAAc;QACjC,yBAAyB;QACzB,IAAI,IAAI,CAAC,UAAU,IAAI,GAAG,EAAE,CAAC;YAC3B,IAAI,MAAM,GAAG,CAAC;gBAAE,OAAO,EAAE,GAAG,MAAM,GAAG,GAAG,CAAC;YACzC,OAAO,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;QAC3C,CAAC;QACD,OAAO,EAAE,GAAG,MAAM,GAAG,GAAG,CAAC;IAC3B,CAAC;IAED,8EAA8E;IAC9E,UAAU,CAAC,MAAc,EAAE,GAAW;QACpC,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,CAAC;QACvB,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC;QACnD,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,0EAA0E;IAC1E,WAAW,CAAC,MAAc,EAAE,GAAe,EAAE,GAAW;QACtD,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,CAAC;QACvB,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO,KAAK,CAAC;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC3E,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAnDD,8BAmDC"}
+5 -2
View File
@@ -10,12 +10,13 @@ var Atari8_PRESETS = [
{ id: 'helloconio.c', name: 'Text Mode', category: 'C' },
{ id: 'siegegame.c', name: 'Siege Game' },
{ id: 'hellodlist.c', name: 'Display List' },
{ id: 'libdemo.c', name: 'Common Library' },
{ id: 'libdemo.c', name: 'Library Demo' },
];
var Atari800_PRESETS = Atari8_PRESETS.concat([
//{id:'testmusic.c', name:'POKEY Music'},
{ id: 'scrolldemo.c', name: 'Scrolling' },
{ id: 'hello.cpp', name: 'Hello Oscar64', category: 'C++ (Oscar64)' },
{ id: 'hello.cpp', name: 'Hello Oscar64', category: 'Oscar64' },
{ id: 'libdemo.cpp', name: 'Library Demo Oscar64' },
{ id: 'sieve.bas', name: 'Benchmark', category: 'FastBasic' },
{ id: 'pmtest.bas', name: 'Sprites Test' },
{ id: 'dli.bas', name: 'DLI Test' },
@@ -162,6 +163,8 @@ class Atari5200MAMEPlatform extends Atari8MAMEPlatform {
function atari8_getROMExtension(rom) {
if (rom == null)
return ".bin";
if (rom[0] == 0x96 && rom[1] == 0x02)
return ".atr";
if (rom[0] == 0xff && rom[1] == 0xff)
return ".xex";
else
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"atari8.js","sourceRoot":"","sources":["../../src/platform/atari8.ts"],"names":[],"mappings":"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 truncated
{"version":3,"file":"atari8.js","sourceRoot":"","sources":["../../src/platform/atari8.ts"],"names":[],"mappings":"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 truncated
+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"]
}
+21 -2
View File
@@ -23,7 +23,7 @@
* (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.SYSTEM_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.OSCAR64_INCLUDE_PATTERNS = exports.SHARED_INCLUDE_PATTERNS = void 0;
exports.getSystemIncludePatterns = getSystemIncludePatterns;
exports.getToolMeta = getToolMeta;
exports.getPlatformToolHelpURL = getPlatformToolHelpURL;
@@ -37,6 +37,7 @@ exports.defineArgs = defineArgs;
exports.linkSymbolArgs = linkSymbolArgs;
exports.extraArgsFor = extraArgsFor;
exports.getLinkPatterns = getLinkPatterns;
exports.getCompileLinkedSources = getCompileLinkedSources;
exports.getIncludeDirs = getIncludeDirs;
exports.getSharedFileSystemName = getSharedFileSystemName;
exports.matchDependencyPatterns = matchDependencyPatterns;
@@ -47,6 +48,13 @@ exports.SHARED_INCLUDE_PATTERNS = [
/^\s*[.#%]?(include|incbin|embed)\s+"(.+?)"/gmi,
/^\s*([;']|[/][/])#(resource)\s+"(.+?)"/gm,
];
// oscar64: #pragma compile("file.c") pulls another source file into the build
// (the compiler's equivalent of a link). The compiler handles it itself, so the
// file just has to be a build dependency copied into the tool filesystem.
exports.OSCAR64_INCLUDE_PATTERNS = [
...exports.SHARED_INCLUDE_PATTERNS,
/^\s*#pragma\s+compile\s*\(\s*"([^"]+)"\s*\)/gmi,
];
// C / most assemblers: //#link "file" (or ;link)
exports.SHARED_LINK_PATTERNS = [
/^\s*([;]|[/][/])#link\s+"(.+?)"/gm,
@@ -393,8 +401,9 @@ exports.TOOL_META = {
defineFlag: '-d', defineInline: true,
wasmModule: 'oscar64',
version: '1.32.266',
includePatterns: exports.SHARED_INCLUDE_PATTERNS,
includePatterns: exports.OSCAR64_INCLUDE_PATTERNS,
linkPatterns: exports.SHARED_LINK_PATTERNS,
compileLinkedSources: true,
platforms: {
// oscar64 defaults to the C64 target machine
c64: {},
@@ -731,6 +740,16 @@ function getLinkPatterns(tool, platform) {
return [];
return exports.SHARED_LINK_PATTERNS;
}
/**
* True if "//#link" dependencies are compiled together with the main source in
* one tool invocation (single-pass compilers like oscar64) rather than built
* separately and linked. The build message then carries them as `linkfiles`
* on the main step so the tool can pass them all to one invocation.
*/
function getCompileLinkedSources(tool) {
let meta = tool && getToolMeta(tool);
return !!(meta && meta.compileLinkedSources);
}
/**
* Directories containing shared code (headers etc.) for this tool's shared
* filesystem, e.g. ['/include','/asminc','/headers'] -- empty if none/unknown.
+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
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"workertypes.js","sourceRoot":"","sources":["../../../src/common/workertypes.ts"],"names":[],"mappings":";;;AA+LA,kCAEC;AAED,sCAEC;AAED,wCAEC;AA3KD,MAAa,UAAU;IAOrB,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,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;oBACnC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACzC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;oBAClC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,EAAE,CAAA,CAAC,GAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;IACD,yEAAyE;IACzE,2DAA2D;IAC3D,iBAAiB,CAAC,EAAS,EAAE,UAAiB;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;QACnC,sCAAsC;QACtC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,GAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;QAC5C,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;YAChB,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YACzB,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;gBACvB,GAAG,GAAG,GAAG,CAAC;gBACV,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;YACf,CAAC;QACH,CAAC;QACD,IAAI,GAAG,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QACzB,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,EAAE,GAAG,GAAG,GAAG,UAAU;YAAE,OAAO,IAAI,CAAC;QACvC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IACD,SAAS,KAAY,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;CACjD;AA9CD,gCA8CC;AAYA,CAAC;AAyBD,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"}
{"version":3,"file":"workertypes.js","sourceRoot":"","sources":["../../../src/common/workertypes.ts"],"names":[],"mappings":";;;AAsMA,kCAEC;AAED,sCAEC;AAED,wCAEC;AAlLD,MAAa,UAAU;IAOrB,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,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;oBACnC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACzC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;oBAClC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,EAAE,CAAA,CAAC,GAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;IACD,yEAAyE;IACzE,2DAA2D;IAC3D,iBAAiB,CAAC,EAAS,EAAE,UAAiB;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;QACnC,sCAAsC;QACtC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,GAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;QAC5C,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;YAChB,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YACzB,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;gBACvB,GAAG,GAAG,GAAG,CAAC;gBACV,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;YACf,CAAC;QACH,CAAC;QACD,IAAI,GAAG,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QACzB,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,EAAE,GAAG,GAAG,GAAG,UAAU;YAAE,OAAO,IAAI,CAAC;QACvC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IACD,SAAS,KAAY,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;CACjD;AA9CD,gCA8CC;AAYA,CAAC;AA4BD,CAAC;AAID,CAAC;AA8EF,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"}
+57 -7
View File
@@ -248,11 +248,18 @@ class CodeProject {
this.filename2path[mainfilename] = this.mainPath;
const tool = this.getToolForFilename(this.mainPath);
let usesRemoteTool = tool.startsWith('remote:');
// Single-pass tools (oscar64) compile their linked sources in the same
// invocation as the main file, so those files travel in the main step.
let compileLinkedSources = (0, toolmeta_1.getCompileLinkedSources)(tool);
let linkfiles = [];
for (var dep of depends) {
// remote tools send both includes and linked files in one build step
if (!dep.link || usesRemoteTool) {
if (!dep.link || usesRemoteTool || compileLinkedSources) {
msg.updates.push({ path: dep.filename, data: dep.data });
depfiles.push(dep.filename);
if (dep.link && compileLinkedSources && linkfiles.indexOf(dep.filename) < 0) {
linkfiles.push(dep.filename);
}
}
this.filename2path[dep.filename] = dep.path;
}
@@ -263,13 +270,15 @@ class CodeProject {
tool: this.getToolForFilename(this.mainPath),
mainfile: true,
};
if (linkfiles.length)
mainstep.linkfiles = linkfiles;
if (this.buildSymbols)
mainstep.symbols = this.buildSymbols;
if (this.buildArgs)
mainstep.buildArgs = this.buildArgs;
msg.buildsteps.push(mainstep);
for (var dep of depends) {
if (dep.data && dep.link) {
if (dep.data && dep.link && !compileLinkedSources) {
this.preloadWorker(dep.filename);
msg.updates.push({ path: dep.filename, data: dep.data });
msg.buildsteps.push({
@@ -376,8 +385,24 @@ class CodeProject {
this.listings = data.listings;
for (var lstname in this.listings) {
var lst = this.listings[lstname];
if (lst.lines)
if (lst.lines) {
lst.sourcefile = new workertypes_1.SourceFile(lst.lines, lst.text);
// A single-pass tool (oscar64) emits one listing that mixes source
// lines from the main file and every linked library, each tagged
// with its own path. Split them so each editor can find the lines
// for its own file (see getListingForFile).
var bypath = {};
for (var info of lst.lines) {
var p = info.path || '';
(bypath[p] || (bypath[p] = [])).push(info);
}
var paths = Object.keys(bypath);
if (paths.length > 1 || (paths.length == 1 && paths[0] != '')) {
lst.sourcefiles = {};
for (var p of paths)
lst.sourcefiles[p] = new workertypes_1.SourceFile(bypath[p], lst.text);
}
}
if (lst.asmlines)
lst.assemblyfile = new workertypes_1.SourceFile(lst.asmlines, lst.text);
}
@@ -408,18 +433,43 @@ class CodeProject {
// ignore include files (TODO)
//if (path.toLowerCase().endsWith('.h') || path.toLowerCase().endsWith('.inc'))
//return;
var fnprefix = (0, util_1.getFilenamePrefix)(this.stripLocalPath(path));
var stripped = this.stripLocalPath(path);
var fnprefix = (0, util_1.getFilenamePrefix)(stripped);
// find listing with matching prefix
var listings = this.getListings();
for (var lstfn in listings) {
if (lstfn == path)
return listings[lstfn];
if (lstfn == path || lstfn == stripped)
return this.withSourceFileForPath(listings[lstfn], stripped);
}
for (var lstfn in listings) {
if ((0, util_1.getFilenamePrefix)(lstfn) == fnprefix) {
return listings[lstfn];
return this.withSourceFileForPath(listings[lstfn], stripped);
}
}
// no listing named after this file; it may be one source among many in a
// single mixed listing (e.g. an oscar64 "//#link"ed source)
for (var lstfn in listings) {
var sf = this.findSourceFileForPath(listings[lstfn], stripped);
if (sf)
return Object.assign({}, listings[lstfn], { sourcefile: sf });
}
}
// return a copy of `lst` whose sourcefile holds only the lines for `path`,
// or `lst` unchanged if it has no per-source-file views
withSourceFileForPath(lst, path) {
var sf = this.findSourceFileForPath(lst, path);
return sf ? Object.assign({}, lst, { sourcefile: sf }) : lst;
}
// look up the per-source-file view (see processBuildListings) for `path`
findSourceFileForPath(lst, path) {
if (!lst || !lst.sourcefiles)
return null;
var want = (0, util_1.getFilenameForPath)((0, util_1.getFilenamePrefix)(path));
for (var p in lst.sourcefiles) {
if ((0, util_1.getFilenameForPath)((0, util_1.getFilenamePrefix)(p)) == want)
return lst.sourcefiles[p];
}
return null;
}
stripLocalPath(path) {
if (this.mainPath) {
+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
+1 -1
View File
@@ -1705,7 +1705,7 @@ function _addIncludeFile() {
var fn = getCurrentMainFilename();
var tool = exports.platform.getToolForFilename(fn);
// TODO: more tools? make this a function of the platform / tool provider
if (fn.endsWith(".c") || tool == 'sdcc' || tool == 'cc65' || tool == 'cmoc' || tool == 'smlrc')
if (fn.endsWith(".c") || tool == 'sdcc' || tool == 'cc65' || tool == 'cmoc' || tool == 'smlrc' || tool == 'oscar64')
addFileToProject("Header", ".h", (s) => { return '#include "' + s + '"'; });
else if (tool == 'dasm' || tool == 'zmac')
addFileToProject("Include", ".inc", (s) => { return '\tinclude "' + s + '"'; });
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../../src/ide/ui.ts"],"names":[],"mappings":";AACA,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8GlC,4CAEC;AACD,8CAEC;AACD,4CAEC;AACD,0CAEC;AAoLD,wCAUC;AA8cD,wDAEC;AAED,4DAEC;AAqWD,0CAGC;AAkHD,8CASC;AAsBD,0CAOC;AAwJD,wCA6BC;AA4BD,0BAgBC;AAwBD,0CAKC;AAkDD,wCAMC;AAgjBD,sCAKC;AAaD,0CASC;AAoQD,gDA8BC;AAGD,0BAwDC;AAgED,oCAEC;AAED,sCAEC;AAED,oCAEC;AAED,0CAKC;AAKD,kDAMC;AAnkFD,yDAA2C;AAC3C,yDAAuI;AACvI,uCAAmD;AACnD,iDAAuD;AACvD,yCAGwB;AACxB,iDAAqG;AACrG,mDAAsD;AAEtD,+CAAoD;AACpD,+CAAoD;AACpD,uCAA6E;AAC7E,yCAAwD;AACxD,uCAAuG;AACvG,uCAAqJ;AACrJ,yCAAsD;AACtD,+CAAwN;AACxN,iCAAsM;AACtM,uCAAoC;AACpC,+CAAuI;AACvI,oDAAuD;AACvD,sDAA6D;AAC7D,0DAA4D;AAC5D,qDAAsD;AACtD,iDAAmD;AACnD,mDAAuM;AACvM,6CAA+H;AAC/H,+CAAqG;AACrG,iDAAoE;AACpE,uCAA2C;AAC3C,qCAAgD;AACvC,4FADA,oBAAW,OACA;AAAE,wFADA,gBAAO,OACA;AAC7B,+CAA4D;AAE5D,8DAA0F;AAC1F,uCAAwC;AA4BxC,mCAAmC;AAExB,QAAA,EAAE,GAAG,IAAA,wBAAiB,EAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,IAAI,GAAG,CAAkB,CAAC;AAUlF,kBAAkB;AAElB,IAAI,UAAU,CAAC,CAAG,oCAAoC;AACtD,IAAI,aAAqB,CAAC,CAAC,sCAAsC;AACjE,IAAI,OAAO,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC;AACjC,IAAI,SAAkB,CAAC;AACvB,IAAI,aAAgC,CAAC;AACrC,IAAI,UAAmB,CAAC,CAAE,6BAA6B;AACvD,IAAI,iBAAiB,GAAG,KAAK,CAAC,CAAC,yDAAyD;AACxF,IAAI,kBAA2B,CAAC,CAAC,sEAAsE;AACvG,IAAI,cAAmB,CAAC,CAAK,gCAAgC;AAC7D,IAAI,cAAsB,CAAC,CAAC,sCAAsC;AAClE,IAAI,KAAkB,CAAC,CAAG,mBAAmB;AAE7C,MAAM,UAAU,GAAG,IAAA,gBAAS,EAAC,UAAE,CAAC,QAAQ,CAAC,CAAC;AAC1C,MAAM,OAAO,GAAG,IAAA,gBAAS,EAAC,UAAE,CAAC,KAAK,CAAC,CAAC;AAOpC,IAAI,aAAa,CAAC,CAAE,6BAA6B;AACjD,IAAI,aAAa,CAAC,CAAE,yBAAyB;AAC7C,IAAI,eAAe,GAAG,KAAK,CAAC;AAC5B,IAAI,cAAc,GAAG,KAAK,CAAC;AAC3B,IAAI,eAAe,GAAW,IAAI,CAAC;AACnC,IAAI,gBAAgB,GAAqB,IAAI,CAAC;AAC9C,IAAI,eAAe,GAAG,KAAK,CAAC;AAC5B,IAAI,aAAa,GAAG,gBAAgB,CAAC;AAErC,SAAgB,gBAAgB;IAC9B,OAAO,KAAK,CAAC;AACf,CAAC;AACD,SAAgB,iBAAiB;IAC/B,OAAO,uBAAe,CAAC;AACzB,CAAC;AACD,SAAgB,gBAAgB;IAC9B,OAAO,cAAc,CAAC;AACxB,CAAC;AACD,SAAgB,eAAe;IAC7B,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,iFAAiF;AAEjF,SAAS,SAAS;IAChB,mHAAmH;IACnH,OAAO,IAAI,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,eAAe,GAAY;IAC/B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,8CAA8C,CAAC;QAC3D,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC/B,IAAI,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;QAC3C,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC7B,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,EAAE,CAAC;AAEJ,2BAA2B;AAC3B,MAAM,SAAS;IACb,aAAa,CAAC,EAAU;QACtB,IAAI,eAAe,IAAI,CAAC,OAAO,EAAE,CAAC;YAChC,IAAI,eAAO,IAAI,mBAAW,IAAI,CAAC,UAAU;gBACvC,YAAY,CAAC,OAAO,CAAC,aAAa,GAAG,mBAAW,EAAE,eAAO,CAAC,CAAC;;gBAE3D,YAAY,CAAC,UAAU,CAAC,aAAa,GAAG,mBAAW,CAAC,CAAC;YACvD,YAAY,CAAC,OAAO,CAAC,gBAAgB,EAAE,mBAAW,CAAC,CAAC;YACpD,YAAY,CAAC,OAAO,CAAC,WAAW,GAAG,gBAAQ,EAAE,EAAE,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IACD,eAAe;QACb,IAAI,eAAe,IAAI,CAAC,OAAO,EAAE,CAAC;YAChC,OAAO,UAAE,CAAC,IAAI,CAAC;YACf,YAAY,CAAC,UAAU,CAAC,WAAW,GAAG,gBAAQ,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IACD,aAAa;QACX,OAAO,eAAe,IAAI,CAAC,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,WAAW,GAAG,gBAAQ,CAAC,CAAC;IACrF,CAAC;IACD,iBAAiB;QACf,OAAO,eAAe,IAAI,CAAC,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC/E,CAAC;IACD,aAAa,CAAC,QAAgB;QAC5B,OAAO,eAAe,IAAI,CAAC,OAAO,IAAI,QAAQ,IAAI,YAAY,CAAC,OAAO,CAAC,aAAa,GAAG,QAAQ,CAAC,CAAC;IACnG,CAAC;IACD,kBAAkB;QAChB,OAAO,eAAe,IAAI,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACpF,CAAC;IACD,aAAa;QACX,IAAI,eAAe,IAAI,CAAC,OAAO;YAAE,YAAY,CAAC,OAAO,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IACtF,CAAC;IACD,4DAA4D;IAC5D,0BAA0B;QACxB,OAAO,eAAe,IAAI,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAC1F,CAAC;IACD,sBAAsB;QACpB,IAAI,eAAe,IAAI,CAAC,OAAO;YAAE,YAAY,CAAC,OAAO,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAC;IAC5F,CAAC;CACF;AAED,IAAI,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;AAEhC,qDAAqD;AACrD,8EAA8E;AAC9E,oEAAoE;AACpE,0EAA0E;AAC1E,KAAK,UAAU,wBAAwB,CAAC,WAAoB,EAAE,WAAoB;IAChF,IAAI,UAAU,EAAE,CAAC;QACf,uDAAuD;QACvD,WAAW,IAAI,IAAA,mBAAS,EAAC,qHAAqH,CAAC,CAAC;QAChJ,OAAO;IACT,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACZ,0DAA0D;QAC1D,WAAW,IAAI,IAAA,mBAAS,EAAC,0GAA0G,CAAC,CAAC;QACrI,OAAO;IACT,CAAC;IACD,IAAI,MAAM,GAAG,MAAM,IAAA,kCAAwB,GAAE,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;IAClD,IAAI,CAAC,WAAW;QAAE,OAAO;IACzB,IAAI,MAAM,CAAC,SAAS,IAAI,WAAW;QAAE,OAAO,CAAC,iCAAiC;IAC9E,uEAAuE;IACvE,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,WAAW,EAAE,CAAC;QACrC,IAAI,CAAC,SAAS,CAAC,0BAA0B,EAAE;YAAE,OAAO;QACpD,SAAS,CAAC,sBAAsB,EAAE,CAAC;IACrC,CAAC;IACD,IAAA,mBAAS,EAAC,IAAA,iCAAuB,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,IAAI,mBAAmB,GAAG,KAAK,CAAC;AAEhC,KAAK,UAAU,oBAAoB;IACjC,IAAI,mBAAmB;QAAE,OAAO;IAChC,mBAAmB,GAAG,IAAI,CAAC;IAC3B,8EAA8E;IAC9E,IAAI,MAAM,GAAG,MAAM,IAAA,kCAAwB,GAAE,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;IAC9C,IAAA,oBAAU,EAAC,IAAA,iCAAuB,EAAC,MAAM,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,qBAAqB;IAC5B,IAAI,CAAC,cAAc;QACjB,OAAO,uBAAe,CAAC,QAAQ,IAAI,KAAK,CAAC;;QAEzC,OAAO,cAAc,CAAC,KAAK,IAAI,cAAc,CAAC,IAAI,IAAI,uBAAe,CAAC,QAAQ,IAAI,KAAK,CAAC;AAC5F,CAAC;AAED,KAAK,UAAU,aAAa;IAC1B,IAAI,MAAM,GAAsB,IAAI,8BAAoB,CAAC,mBAAW,CAAC,CAAC;IACtE,IAAI,UAAULine truncated
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../../src/ide/ui.ts"],"names":[],"mappings":"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 truncated
+90 -1
View File
@@ -9,6 +9,21 @@ const util_1 = require("../common/util");
const antic_1 = require("./chips/antic");
const gtia_1 = require("./chips/gtia");
const pokey_1 = require("./chips/pokey");
const atari8disk_1 = require("./atari8disk");
// High-level SIO patch: redirect the OS SIOV vector to a stub in the $D5xx
// mapper area. The stub traps disk-device calls back into JS (via a magic
// write) and falls through to the real SIO routine for everything else.
// We stash the stub at $D5A0 so the XEX loader's stub (which starts at $D500)
// doesn't clobber it.
const SIO_STUB_OFFSET = 0xa0; // $D5A0
const SIO_HOOK_OFFSET = 0xf0; // $D5F0 - write here to call JS
const SIO_STATUS_OFFSET = 0xf1; // $D5F1 - JS puts the SIO status here
// lda $0300; cmp #$31; bcc notdisk; cmp #$40; bcs notdisk;
// sta $D5F0; lda $D5F1; tay; rts; notdisk: jmp $E950
const SIO_STUB = [
0xad, 0x00, 0x03, 0xc9, 0x31, 0x90, 0x0c, 0xc9, 0x40, 0xb0, 0x08,
0x8d, 0xf0, 0xd5, 0xad, 0xf1, 0xd5, 0xa8, 0x60, 0x4c, 0x50, 0xe9,
];
const ATARI8_KEYMATRIX_INTL_NOSHIFT = [
emu_1.Keys.VK_L, emu_1.Keys.VK_J, emu_1.Keys.VK_SEMICOLON, emu_1.Keys.VK_F4, emu_1.Keys.VK_F5, emu_1.Keys.VK_K, emu_1.Keys.VK_BACK_SLASH, emu_1.Keys.VK_TILDE,
emu_1.Keys.VK_O, null, emu_1.Keys.VK_P, emu_1.Keys.VK_U, emu_1.Keys.VK_ENTER, emu_1.Keys.VK_I, emu_1.Keys.VK_MINUS2, emu_1.Keys.VK_EQUALS2,
@@ -62,6 +77,7 @@ class Atari800 extends devices_1.BasicScanlineMachine {
this.cart_80 = false;
this.cart_a0 = false;
this.xexdata = null;
this.disk = null;
this.keyboard_active = true;
this.d500 = new Uint8Array(0x100);
this.cpu = new MOS6502_1.MOS6502();
@@ -102,6 +118,15 @@ class Atari800 extends devices_1.BasicScanlineMachine {
}
loadBIOS(bios) {
this.bios.set(bios);
this.installSIOStub();
}
installSIOStub() {
// patch the SIOV jump table entry ($E459: JMP $E950) to enter our stub
const o = 0xe459 - 0xd800;
this.bios[o] = 0x4c; // JMP
this.bios[o + 1] = 0xd500 + SIO_STUB_OFFSET & 0xff;
this.bios[o + 2] = (0xd500 + SIO_STUB_OFFSET) >> 8;
this.d500.set(SIO_STUB, SIO_STUB_OFFSET);
}
reset() {
super.reset();
@@ -320,11 +345,19 @@ class Atari800 extends devices_1.BasicScanlineMachine {
this.probe.logInterrupt(1);
}
loadROM(rom, title) {
if ((rom[0] == 0xff && rom[1] == 0xff) && !title.endsWith('.rom')) {
if (rom[0] == 0x96 && rom[1] == 0x02) {
// ATR disk image, boot it as drive 1
this.disk = new atari8disk_1.DiskImage(rom);
this.xexdata = null;
console.log(`ATR disk: ${this.disk.numsectors} sectors x ${this.disk.sectorsize} bytes`);
}
else if ((rom[0] == 0xff && rom[1] == 0xff) && !title.endsWith('.rom')) {
// XEX file, chill out and wait for BIOS hook
this.disk = null;
this.xexdata = rom;
}
else {
this.disk = null;
this.loadCartridge(rom);
}
}
@@ -355,6 +388,62 @@ class Atari800 extends devices_1.BasicScanlineMachine {
if (value == 0xa0)
this.cart_a0 = false;
}
else if (addr == SIO_HOOK_OFFSET) {
this.handleSIO();
}
}
// Called from the patched SIO stub with the SIO parameter block in page 3.
handleSIO() {
const dunit = this.read(0x301);
const dcomnd = this.read(0x302);
const dbuf = this.read(0x304) | (this.read(0x305) << 8);
let dbyt = this.read(0x308) | (this.read(0x309) << 8);
const sector = this.read(0x30a) | (this.read(0x30b) << 8);
const disk = dunit == 1 ? this.disk : null;
let status = 0x01; // SIOSuccess
if (disk == null) {
status = 0x8a; // SIOErrorTimeout (no drive in that unit)
}
else {
switch (dcomnd) {
case 0x53: { // STATUS
const dvstat = [0x00, 0xff, 0xe0, 0x00];
const n = Math.min(dbyt || 4, dvstat.length);
for (let i = 0; i < n; i++)
this.write(dbuf + i, dvstat[i]);
break;
}
case 0x52: { // READ
if (dbyt == 0)
dbyt = disk.sectorsize;
const bytes = disk.readSector(sector, dbyt);
if (bytes == null) {
status = 0x90; // SIOErrorDeviceError
}
else {
for (let i = 0; i < dbyt; i++)
this.write(dbuf + i, i < bytes.length ? bytes[i] : 0);
}
break;
}
case 0x57: // WRITE
case 0x50: { // PUT
if (dbyt == 0)
dbyt = disk.sectorsize;
const buf = new Uint8Array(dbyt);
for (let i = 0; i < dbyt; i++)
buf[i] = this.read(dbuf + i);
if (!disk.writeSector(sector, buf, dbyt))
status = 0x90;
break;
}
default:
status = 0x8b; // SIOErrorNAK (unsupported command)
}
}
// mirror the OS SIO exit: status goes to DSTATS and the stub reads it back
this.write(0x303, status);
this.d500[SIO_STATUS_OFFSET] = status;
}
loadXEX(rom) {
let ofs = 2;
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"atari8.js","sourceRoot":"","sources":["../../../src/machine/atari8.ts"],"names":[],"mappings":"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 truncated
{"version":3,"file":"atari8.js","sourceRoot":"","sources":["../../../src/machine/atari8.ts"],"names":[],"mappings":"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 truncated
+68
View File
@@ -0,0 +1,68 @@
"use strict";
// Minimal Atari 8-bit disk image support.
//
// Parses ATR images (and raw 128-byte-sector .xfd/.dsk images) and exposes
// sector reads/writes. Sector numbers are 1-based to match SIO/DAUX1/DAUX2.
//
// ATR layout: http://www.atarimax.com/jindroush.atari.org/afmtdos.html
// 0 word magic $0296
// 2 word paragraph count (16-byte units, includes the 16-byte header)
// 4 word sector size (128 or 256)
// 6 dword CRC (unused)
// 10 dword unused
// 16 sector data
Object.defineProperty(exports, "__esModule", { value: true });
exports.DiskImage = void 0;
const ATR_MAGIC = 0x0296;
class DiskImage {
constructor(data) {
this.data = data;
if (data.length >= 16 && (data[0] | (data[1] << 8)) == ATR_MAGIC) {
const paragraphs = data[2] | (data[3] << 8);
const total = paragraphs * 16;
const sectorsize = data[4] | (data[5] << 8);
// enhanced-density images declare 256-byte sectors, but the first three
// (boot) sectors are still 128 bytes
this.sectorsize = sectorsize == 256 ? 256 : 128;
if (this.sectorsize == 256) {
this.numsectors = 3 + Math.floor((total - 16 - 3 * 128) / 256);
}
else {
this.numsectors = Math.floor((total - 16) / 128);
}
}
else {
// raw image, assume single density
this.sectorsize = 128;
this.numsectors = Math.floor(data.length / 128);
}
}
sectorOffset(sector) {
// sector is 0-based here
if (this.sectorsize == 256) {
if (sector < 3)
return 16 + sector * 128;
return 16 + 3 * 128 + (sector - 3) * 256;
}
return 16 + sector * 128;
}
/** Read up to len bytes from 1-based sector, returns null if out of range. */
readSector(sector, len) {
const idx = sector - 1;
if (idx < 0 || idx >= this.numsectors)
return null;
const ofs = this.sectorOffset(idx);
return this.data.subarray(ofs, Math.min(ofs + len, this.data.length));
}
/** Write len bytes into 1-based sector; returns false if out of range. */
writeSector(sector, src, len) {
const idx = sector - 1;
if (idx < 0 || idx >= this.numsectors)
return false;
const ofs = this.sectorOffset(idx);
this.data.set(src.subarray(0, Math.min(len, this.data.length - ofs)), ofs);
return true;
}
}
exports.DiskImage = DiskImage;
//# sourceMappingURL=atari8disk.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"atari8disk.js","sourceRoot":"","sources":["../../../src/machine/atari8disk.ts"],"names":[],"mappings":"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"}
+5 -2
View File
@@ -10,12 +10,13 @@ var Atari8_PRESETS = [
{ id: 'helloconio.c', name: 'Text Mode', category: 'C' },
{ id: 'siegegame.c', name: 'Siege Game' },
{ id: 'hellodlist.c', name: 'Display List' },
{ id: 'libdemo.c', name: 'Common Library' },
{ id: 'libdemo.c', name: 'Library Demo' },
];
var Atari800_PRESETS = Atari8_PRESETS.concat([
//{id:'testmusic.c', name:'POKEY Music'},
{ id: 'scrolldemo.c', name: 'Scrolling' },
{ id: 'hello.cpp', name: 'Hello Oscar64', category: 'C++ (Oscar64)' },
{ id: 'hello.cpp', name: 'Hello Oscar64', category: 'Oscar64' },
{ id: 'libdemo.cpp', name: 'Library Demo Oscar64' },
{ id: 'sieve.bas', name: 'Benchmark', category: 'FastBasic' },
{ id: 'pmtest.bas', name: 'Sprites Test' },
{ id: 'dli.bas', name: 'DLI Test' },
@@ -162,6 +163,8 @@ class Atari5200MAMEPlatform extends Atari8MAMEPlatform {
function atari8_getROMExtension(rom) {
if (rom == null)
return ".bin";
if (rom[0] == 0x96 && rom[1] == 0x02)
return ".atr";
if (rom[0] == 0xff && rom[1] == 0xff)
return ".xex";
else
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"atari8.js","sourceRoot":"","sources":["../../../src/platform/atari8.ts"],"names":[],"mappings":";;AACA,yDAAoI;AACpI,uCAA0C;AAC1C,yDAA8D;AAC9D,8CAAwD;AAExD,IAAI,cAAc,GAAc;IAC9B,EAAC,EAAE,EAAC,YAAY,EAAE,IAAI,EAAC,aAAa,EAAE,QAAQ,EAAC,UAAU,EAAC;IAC1D,EAAC,EAAE,EAAC,cAAc,EAAE,IAAI,EAAC,eAAe,EAAC;IACzC,EAAC,EAAE,EAAC,cAAc,EAAE,IAAI,EAAC,WAAW,EAAE,QAAQ,EAAC,GAAG,EAAC;IACnD,EAAC,EAAE,EAAC,aAAa,EAAE,IAAI,EAAC,YAAY,EAAC;IACrC,EAAC,EAAE,EAAC,cAAc,EAAE,IAAI,EAAC,cAAc,EAAC;IACxC,EAAC,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC,gBAAgB,EAAC;CACxC,CAAC;AAEF,IAAI,gBAAgB,GAAG,cAAc,CAAC,MAAM,CAAC;IAC3C,yCAAyC;IACzC,EAAC,EAAE,EAAC,cAAc,EAAE,IAAI,EAAC,WAAW,EAAC;IACrC,EAAC,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC,eAAe,EAAE,QAAQ,EAAC,eAAe,EAAC;IAChE,EAAC,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC,WAAW,EAAE,QAAQ,EAAC,WAAW,EAAC;IACxD,EAAC,EAAE,EAAC,YAAY,EAAE,IAAI,EAAC,cAAc,EAAC;IACtC,EAAC,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,UAAU,EAAC;IAC/B,EAAC,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC,cAAc,EAAC;CACtC,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAG,EAAE,IAAI,EAAC;QAChC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,GAAG,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC;QAC7C,EAAC,IAAI,EAAC,oBAAoB,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC;QAC/D,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC;QAC9C,EAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC;QAC/C,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC;QAC7C,EAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC;QAC/C,EAAC,IAAI,EAAC,wBAAwB,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC;QACjE,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC;QAC/C,EAAC,IAAI,EAAC,eAAe,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC;QACzD,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC;KACjD,EAAE,CAAA;AAEH,MAAM,mBAAmB,GAAG,EAAE,IAAI,EAAC;QACjC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,GAAG,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC;QAC7C,EAAC,IAAI,EAAC,eAAe,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC;QAC1D,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC;QAC9C,EAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC;QAC/C,EAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC;QAC/C,EAAC,IAAI,EAAC,qBAAqB,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC;QAC/D,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC;KAChD,EAAE,CAAA;AAEH,SAAS,yBAAyB,CAAC,EAAS;IAC1C,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,WAAW,CAAC;;QACpF,OAAO,IAAA,sCAAuB,EAAC,EAAE,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,gBAAiB,SAAQ,sCAAiC;IAAhE;;QAIE,uBAAkB,GAAG,yBAAyB,CAAC;QAG/C,aAAQ,GAAG,eAAe,CAAC;QAC3B,oBAAe,GAAG,sBAAsB,CAAC;QAOzC,aAAQ,GAAG,wBAAwB,CAAC;IAatC,CAAC;IA3BC,UAAU,KAAc,OAAO,IAAI,iBAAQ,EAAE,CAAC,CAAC,CAAC;IAChD,UAAU,KAAc,OAAO,gBAAgB,CAAC,CAAC,CAAC;IAClD,oBAAoB,KAAK,OAAO,CAAC,GAAG,KAAK,CAAC,oBAAoB,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAE5E,WAAW,CAAC,CAAC,IAAW,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,YAAY,KAAY,OAAO,kBAAkB,CAAC,CAAC,CAAC;IAIpD,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACnC,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;QACpB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,YAAY,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,YAAY,CAAC,MAAM,IAAI,GAAG,IAAK,YAA4B,CAAC,IAAI,EAAE,CAAC;YACrE,IAAI,UAAU,GAAG,MAAM,YAAY,CAAC,WAAW,EAAE,CAAC;YAClD,OAAO,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;QACpC,CAAC;;YAAM,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IACrD,CAAC;IACD,YAAY;QACV,IAAI,IAAI,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;QAChC,IAAI,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,MAAM,iBAAkB,SAAQ,gBAAgB;IAAhD;;QAIE,aAAQ,GAAG,6BAA6B,CAAC;IAC3C,CAAC;IAJC,UAAU,KAAK,OAAO,cAAc,CAAC,CAAC,CAAC;IACvC,UAAU,KAAK,OAAO,IAAI,kBAAS,EAAE,CAAC,CAAC,CAAC;IACxC,YAAY,KAAK,OAAO,mBAAmB,CAAC,CAAC,CAAC;CAE/C;AAGD,gBAAgB;AAEhB,MAAe,kBAAmB,SAAQ,mCAAoB;IAA9D;;QAEE,uBAAkB,GAAG,yBAAyB,CAAC;QAC/C,sBAAiB,GAAG,qCAAsB,CAAC;QAE3C,aAAQ,GAAG,eAAe,CAAC;IAC7B,CAAC;IALC,UAAU,KAAK,OAAO,cAAc,CAAC,CAAC,CAAC;IAGvC,oBAAoB,KAAK,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CAE5G;AAED,MAAM,oBAAqB,SAAQ,kBAAkB;IAArD;;QA0BE,iBAAY,GAAG,cAAa,OAAO,kBAAkB,CAAA,CAAC,CAAC,CAAC;IAC1D,CAAC;IA1BC,8EAA8E;IAC9E,qCAAqC;IACrC,UAAU,KAAK,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,OAAO,CAAC,KAAK,EAAE,IAAI;QACjB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE;gBACjC,MAAM,EAAC,eAAe;gBACtB,QAAQ,EAAC,YAAY;gBACrB,OAAO,EAAC,YAAY;gBACpB,MAAM,EAAC,QAAQ;gBACf,KAAK,EAAC,GAAG,GAAC,CAAC;gBACX,MAAM,EAAC,GAAG,GAAC,CAALine truncated
{"version":3,"file":"atari8.js","sourceRoot":"","sources":["../../../src/platform/atari8.ts"],"names":[],"mappings":";;AACA,yDAAoI;AACpI,uCAA0C;AAC1C,yDAA8D;AAC9D,8CAAwD;AAExD,IAAI,cAAc,GAAc;IAC9B,EAAC,EAAE,EAAC,YAAY,EAAE,IAAI,EAAC,aAAa,EAAE,QAAQ,EAAC,UAAU,EAAC;IAC1D,EAAC,EAAE,EAAC,cAAc,EAAE,IAAI,EAAC,eAAe,EAAC;IACzC,EAAC,EAAE,EAAC,cAAc,EAAE,IAAI,EAAC,WAAW,EAAE,QAAQ,EAAC,GAAG,EAAC;IACnD,EAAC,EAAE,EAAC,aAAa,EAAE,IAAI,EAAC,YAAY,EAAC;IACrC,EAAC,EAAE,EAAC,cAAc,EAAE,IAAI,EAAC,cAAc,EAAC;IACxC,EAAC,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC,cAAc,EAAC;CACtC,CAAC;AAEF,IAAI,gBAAgB,GAAG,cAAc,CAAC,MAAM,CAAC;IAC3C,yCAAyC;IACzC,EAAC,EAAE,EAAC,cAAc,EAAE,IAAI,EAAC,WAAW,EAAC;IACrC,EAAC,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC,eAAe,EAAE,QAAQ,EAAC,SAAS,EAAC;IAC1D,EAAC,EAAE,EAAC,aAAa,EAAE,IAAI,EAAC,sBAAsB,EAAC;IAC/C,EAAC,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC,WAAW,EAAE,QAAQ,EAAC,WAAW,EAAC;IACxD,EAAC,EAAE,EAAC,YAAY,EAAE,IAAI,EAAC,cAAc,EAAC;IACtC,EAAC,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,UAAU,EAAC;IAC/B,EAAC,EAAE,EAAC,WAAW,EAAE,IAAI,EAAC,cAAc,EAAC;CACtC,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAG,EAAE,IAAI,EAAC;QAChC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,GAAG,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC;QAC7C,EAAC,IAAI,EAAC,oBAAoB,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC;QAC/D,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC;QAC9C,EAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC;QAC/C,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC;QAC7C,EAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC;QAC/C,EAAC,IAAI,EAAC,wBAAwB,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,IAAI,EAAC;QACjE,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC;QAC/C,EAAC,IAAI,EAAC,eAAe,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC;QACzD,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC;KACjD,EAAE,CAAA;AAEH,MAAM,mBAAmB,GAAG,EAAE,IAAI,EAAC;QACjC,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,GAAG,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC;QAC7C,EAAC,IAAI,EAAC,eAAe,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC;QAC1D,EAAC,IAAI,EAAC,MAAM,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC;QAC9C,EAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC;QAC/C,EAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC,IAAI,EAAC;QAC/C,EAAC,IAAI,EAAC,qBAAqB,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC;QAC/D,EAAC,IAAI,EAAC,KAAK,EAAC,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAC;KAChD,EAAE,CAAA;AAEH,SAAS,yBAAyB,CAAC,EAAS;IAC1C,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,WAAW,CAAC;;QACpF,OAAO,IAAA,sCAAuB,EAAC,EAAE,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,gBAAiB,SAAQ,sCAAiC;IAAhE;;QAIE,uBAAkB,GAAG,yBAAyB,CAAC;QAG/C,aAAQ,GAAG,eAAe,CAAC;QAC3B,oBAAe,GAAG,sBAAsB,CAAC;QAOzC,aAAQ,GAAG,wBAAwB,CAAC;IAatC,CAAC;IA3BC,UAAU,KAAc,OAAO,IAAI,iBAAQ,EAAE,CAAC,CAAC,CAAC;IAChD,UAAU,KAAc,OAAO,gBAAgB,CAAC,CAAC,CAAC;IAClD,oBAAoB,KAAK,OAAO,CAAC,GAAG,KAAK,CAAC,oBAAoB,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAE5E,WAAW,CAAC,CAAC,IAAW,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,YAAY,KAAY,OAAO,kBAAkB,CAAC,CAAC,CAAC;IAIpD,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACnC,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;QACpB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,YAAY,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,YAAY,CAAC,MAAM,IAAI,GAAG,IAAK,YAA4B,CAAC,IAAI,EAAE,CAAC;YACrE,IAAI,UAAU,GAAG,MAAM,YAAY,CAAC,WAAW,EAAE,CAAC;YAClD,OAAO,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;QACpC,CAAC;;YAAM,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IACrD,CAAC;IACD,YAAY;QACV,IAAI,IAAI,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;QAChC,IAAI,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,MAAM,iBAAkB,SAAQ,gBAAgB;IAAhD;;QAIE,aAAQ,GAAG,6BAA6B,CAAC;IAC3C,CAAC;IAJC,UAAU,KAAK,OAAO,cAAc,CAAC,CAAC,CAAC;IACvC,UAAU,KAAK,OAAO,IAAI,kBAAS,EAAE,CAAC,CAAC,CAAC;IACxC,YAAY,KAAK,OAAO,mBAAmB,CAAC,CAAC,CAAC;CAE/C;AAGD,gBAAgB;AAEhB,MAAe,kBAAmB,SAAQ,mCAAoB;IAA9D;;QAEE,uBAAkB,GAAG,yBAAyB,CAAC;QAC/C,sBAAiB,GAAG,qCAAsB,CAAC;QAE3C,aAAQ,GAAG,eAAe,CAAC;IAC7B,CAAC;IALC,UAAU,KAAK,OAAO,cAAc,CAAC,CAAC,CAAC;IAGvC,oBAAoB,KAAK,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;CAE5G;AAED,MAAM,oBAAqB,SAAQ,kBAAkB;IAArD;;QA0BE,iBAAY,GAAG,cAAa,OAAO,kBAAkB,CAAA,CAAC,CAAC,CAAC;IAC1D,CAAC;IA1BC,8EAA8E;IAC9E,qCAAqC;IACrC,UAAU,KAAK,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,OAAO,CAAC,KAAK,EAAE,IAAI;QACjB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE;gBACjC,MAAM,EAAC,eAAe;gBACtB,QAAQ,EAAC,YAAY;gBACrB,OAAO,EAAC,YAAY;gBACpB,MAAM,EAAC,QAAQ;gBACf,KAALine truncated
+27 -11
View File
@@ -331,30 +331,46 @@ async function compileSourceFile(tool, platform, filePath, buildAs, opts) {
depFilenames.push(dep.filename);
}
}
// Single-pass tools (oscar64) compile linked sources in the same invocation
// as the main file instead of building them separately.
var compileLinkedSources = (0, toolmeta_1.getCompileLinkedSources)(tool);
var linkfiles = [];
if (compileLinkedSources) {
for (var dep of deps) {
if (dep.link && dep.data) {
files.push({ path: dep.filename, data: dep.data });
linkfiles.push(dep.filename);
}
}
}
// Build steps: main file first
var buildsteps = [];
var mainstep = {
path: basename,
files: [basename].concat(depFilenames),
files: [basename].concat(depFilenames, linkfiles),
platform: platform,
tool: tool,
mainfile: true,
};
if (linkfiles.length)
mainstep.linkfiles = linkfiles;
if (opts && opts.symbols)
mainstep.symbols = opts.symbols;
if (opts && opts.buildArgs)
mainstep.buildArgs = opts.buildArgs;
buildsteps.push(mainstep);
// Link dependencies get their own build steps, with tool selected by extension
for (var dep of deps) {
if (dep.link && dep.data) {
files.push({ path: dep.filename, data: dep.data });
buildsteps.push({
path: dep.filename,
files: [dep.filename].concat(depFilenames),
platform: platform,
tool: getToolForFilename(dep.filename, platform),
});
// Other link dependencies get their own build steps, with tool selected by extension
if (!compileLinkedSources) {
for (var dep of deps) {
if (dep.link && dep.data) {
files.push({ path: dep.filename, data: dep.data });
buildsteps.push({
path: dep.filename,
files: [dep.filename].concat(depFilenames),
platform: platform,
tool: getToolForFilename(dep.filename, platform),
});
}
}
}
return compile({
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"testlib.js","sourceRoot":"","sources":["../../../src/tools/testlib.ts"],"names":[],"mappings":"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 truncated
{"version":3,"file":"testlib.js","sourceRoot":"","sources":["../../../src/tools/testlib.ts"],"names":[],"mappings":"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 truncated
+13 -2
View File
@@ -51,6 +51,9 @@ async function compileOscar64(step) {
args.push.apply(args, (0, toolmeta_1.defineArgs)('oscar64', step.params && step.params.symbols && step.params.symbols.compiler));
args.push.apply(args, (0, toolmeta_1.extraArgsFor)('oscar64', step.params && step.params.buildArgs));
args.push(step.path);
// linked sources are compiled and linked in this same invocation
if (step.linkfiles)
args.push.apply(args, step.linkfiles);
wasi.setArgs(args);
try {
wasi.run();
@@ -62,13 +65,21 @@ async function compileOscar64(step) {
let stderr = wasi.fds[2].getBytesAsString();
console.log('stdout', stdout);
console.log('stderr', stderr);
// (58, 17) : error 3001: Could not open source file. 'stdlib.c'
const matcher = (0, listingutils_1.makeErrorMatcher)(errors, /\((\d+),\s+(\d+)\)\s+: error (\d+): (.+)/, 1, 4, step.path);
// oscar64 reports the source filename when a build has more than one
// source: "/lib.c(2, 14) : error 3005: ...". Global errors omit it:
// "(58, 17) : error 3001: Could not open source file. 'stdlib.c'".
const matcher = (0, listingutils_1.makeErrorMatcher)(errors, /^\s*(.*?)\((\d+),\s+(\d+)\)\s+: error (\d+): (.+)/, 2, 5, step.path, 1);
const matcher2 = (0, listingutils_1.makeErrorMatcher)(errors, /oscar64: error (\d+): (.+)/, 0, 2, step.path);
for (let line of stderr.split('\n')) {
matcher(line);
matcher2(line);
}
// strip the leading '/' oscar64 puts on paths so they match the
// project's filenames (editor error markers match by suffix)
for (let err of errors) {
if (err.path && err.path.startsWith('/'))
err.path = err.path.substring(1);
}
if (errors.length) {
return { errors };
}
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"oscar64.js","sourceRoot":"","sources":["../../../../src/worker/tools/oscar64.ts"],"names":[],"mappings":"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 truncated
{"version":3,"file":"oscar64.js","sourceRoot":"","sources":["../../../../src/worker/tools/oscar64.ts"],"names":[],"mappings":"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 truncated
+1 -1
View File
@@ -1 +1 @@
{"root":["../../test/unit/testanalysis.ts","../../test/unit/testassembler.ts","../../test/unit/testassetscan.ts","../../test/unit/testbaseplatform.ts","../../test/unit/testbataribasic.ts","../../test/unit/testbreakpoints.ts","../../test/unit/testbuildparams.ts","../../test/unit/testc64breakpoints.ts","../../test/unit/testcommon.ts","../../test/unit/testcommon_ext.ts","../../test/unit/testdasm.ts","../../test/unit/testecs.ts","../../test/unit/testelfparser.ts","../../test/unit/testemu.ts","../../test/unit/testkeys.ts","../../test/unit/testlibretro.ts","../../test/unit/testlinking.ts","../../test/unit/testlistinglocation.ts","../../test/unit/testpixelclipboard.ts","../../test/unit/testpixelpalette.ts","../../test/unit/testpresets.ts","../../test/unit/testrunevalatpc.ts","../../test/unit/testsearchdebuggerhit.ts","../../test/unit/testsearchdocs.ts","../../test/unit/testsearchindex.ts","../../test/unit/testsearchsymbols.ts","../../test/unit/testsearchtoolchain.ts","../../test/unit/teststepover.ts","../../test/unit/teststorage.ts","../../test/unit/testtoolmeta.ts","../../test/unit/testtoolselect.ts","../../test/unit/testutil.ts","../../test/unit/testwasishim.ts","../../test/unit/testz80probe.ts","../../src/md.d.ts","../../src/common/analysis.ts","../../src/common/audio.ts","../../src/common/baseplatform.ts","../../src/common/binutils.ts","../../src/common/devices.ts","../../src/common/emu.ts","../../src/common/gbpalette.ts","../../src/common/mameplatform.ts","../../src/common/probe.ts","../../src/common/recorder.ts","../../src/common/searchtypes.ts","../../src/common/teletype.ts","../../src/common/tokenizer.ts","../../src/common/toolmeta.ts","../../src/common/util.ts","../../src/common/vlist.ts","../../src/common/vtextscroller.ts","../../src/common/wasmplatform.ts","../../src/common/workertypes.ts","../../src/common/audio/CommodoreTape.ts","../../src/common/basic/compiler.ts","../../src/common/basic/fuzz.ts","../../src/common/basic/run.ts","../../src/common/basic/runtime.ts","../../src/common/cpu/6809.ts","../../src/common/cpu/ARM.ts","../../src/common/cpu/F8.ts","../../src/common/cpu/MOS6502.ts","../../src/common/cpu/SM83.ts","../../src/common/cpu/ZilogZ80.ts","../../src/common/cpu/disasm6502.ts","../../src/common/cpu/disasmF8.ts","../../src/common/cpu/disasmHuC6280.ts","../../src/common/cpu/disasmSM83.ts","../../src/common/cpu/disasmz80.ts","../../src/common/ecs/binpack.ts","../../src/common/ecs/compiler.ts","../../src/common/ecs/decoder.ts","../../src/common/ecs/ecs.ts","../../src/common/ecs/main.ts","../../src/common/hdl/fuzz.ts","../../src/common/hdl/hdlruntime.ts","../../src/common/hdl/hdltypes.ts","../../src/common/hdl/hdlwasm.ts","../../src/common/hdl/vxmlparser.ts","../../src/common/hdl/vxmltest.ts","../../src/common/symbols/doccomment.ts","../../src/common/symbols/index.ts","../../src/common/wasi/libretro.ts","../../src/common/wasi/wasishim.ts","../../src/ide/breakcond.ts","../../src/ide/breakpoints.ts","../../src/ide/dialogs.ts","../../src/ide/embedui.ts","../../src/ide/errorreport.ts","../../src/ide/keys.ts","../../src/ide/layout.ts","../../src/ide/pixeleditor.ts","../../src/ide/project.ts","../../src/ide/services.ts","../../src/ide/settings.ts","../../src/ide/shareexport.ts","../../src/ide/shortcutbar.ts","../../src/ide/storage.ts","../../src/ide/sync.ts","../../src/ide/toolbar.ts","../../src/ide/ui.ts","../../src/ide/waveform.ts","../../src/ide/windows.ts","../../src/ide/search/debuggerhit.ts","../../src/ide/search/docssource.ts","../../src/ide/search/listinglocation.ts","../../src/ide/search/projectsource.ts","../../src/ide/search/searchview.ts","../../src/ide/search/service.ts","../../src/ide/search/symbolindex.ts","../../src/ide/search/toolchainsource.ts","../../src/ide/search/types.ts","../../src/ide/views/assetdecorations.ts","../../src/ide/views/asseteditor.ts","../../src/ide/views/baseviews.ts","../../src/ide/views/debug.ts","../../src/ide/views/debugviews.ts","../../src/ide/views/editors.ts","../../src/ide/views/filters.ts","../../src/ide/views/gutter.ts","../../src/ide/views/helpview.ts","../../src/ide/views/includedecorations.ts","../../src/ide/views/tabs.ts","../../src/ide/views/traceviews.ts","../../src/ide/views/treeviews.ts","../../src/ide/views/visuals.ts","../../src/machine/apple2.ts","../../src/machine/arm32.ts","../../src/machine/astrocade.ts","../../src/machine/atari7800.ts","../../src/machine/atari8.ts","../../src/machine/c64.ts","../../src/machine/channelf.ts","../../src/machine/coleco.ts","../../src/machine/cpc.ts","../../src/machine/devel.ts","../../src/machine/exidy.ts","../../src/machine/galaxian.ts","../../src/machine/gb.ts","../../src/machine/kim1.ts","../../src/machine/mcr.ts","../../src/machine/msx.ts","../../src/machine/mw8080bw.ts","../../src/machine/pacman.ts","../../src/machine/sms.ts","../../src/machine/vdp_z80.ts","../../src/machine/vic20.ts","../../src/machine/vicdual.ts","../../src/machine/williams.ts","../../src/machine/zx.ts","../../src/machine/chips/antic.tsLine truncated
{"root":["../../test/unit/testanalysis.ts","../../test/unit/testassembler.ts","../../test/unit/testassetscan.ts","../../test/unit/testbaseplatform.ts","../../test/unit/testbataribasic.ts","../../test/unit/testbreakpoints.ts","../../test/unit/testbuildparams.ts","../../test/unit/testc64breakpoints.ts","../../test/unit/testcommon.ts","../../test/unit/testcommon_ext.ts","../../test/unit/testdasm.ts","../../test/unit/testecs.ts","../../test/unit/testelfparser.ts","../../test/unit/testemu.ts","../../test/unit/testkeys.ts","../../test/unit/testlibretro.ts","../../test/unit/testlinking.ts","../../test/unit/testlistingfiles.ts","../../test/unit/testlistinglocation.ts","../../test/unit/testpixelclipboard.ts","../../test/unit/testpixelpalette.ts","../../test/unit/testpresets.ts","../../test/unit/testrunevalatpc.ts","../../test/unit/testsearchdebuggerhit.ts","../../test/unit/testsearchdocs.ts","../../test/unit/testsearchindex.ts","../../test/unit/testsearchsymbols.ts","../../test/unit/testsearchtoolchain.ts","../../test/unit/teststepover.ts","../../test/unit/teststorage.ts","../../test/unit/testtoolmeta.ts","../../test/unit/testtoolselect.ts","../../test/unit/testutil.ts","../../test/unit/testwasishim.ts","../../test/unit/testz80probe.ts","../../src/md.d.ts","../../src/common/analysis.ts","../../src/common/audio.ts","../../src/common/baseplatform.ts","../../src/common/binutils.ts","../../src/common/devices.ts","../../src/common/emu.ts","../../src/common/gbpalette.ts","../../src/common/mameplatform.ts","../../src/common/probe.ts","../../src/common/recorder.ts","../../src/common/searchtypes.ts","../../src/common/teletype.ts","../../src/common/tokenizer.ts","../../src/common/toolmeta.ts","../../src/common/util.ts","../../src/common/vlist.ts","../../src/common/vtextscroller.ts","../../src/common/wasmplatform.ts","../../src/common/workertypes.ts","../../src/common/audio/CommodoreTape.ts","../../src/common/basic/compiler.ts","../../src/common/basic/fuzz.ts","../../src/common/basic/run.ts","../../src/common/basic/runtime.ts","../../src/common/cpu/6809.ts","../../src/common/cpu/ARM.ts","../../src/common/cpu/F8.ts","../../src/common/cpu/MOS6502.ts","../../src/common/cpu/SM83.ts","../../src/common/cpu/ZilogZ80.ts","../../src/common/cpu/disasm6502.ts","../../src/common/cpu/disasmF8.ts","../../src/common/cpu/disasmHuC6280.ts","../../src/common/cpu/disasmSM83.ts","../../src/common/cpu/disasmz80.ts","../../src/common/ecs/binpack.ts","../../src/common/ecs/compiler.ts","../../src/common/ecs/decoder.ts","../../src/common/ecs/ecs.ts","../../src/common/ecs/main.ts","../../src/common/hdl/fuzz.ts","../../src/common/hdl/hdlruntime.ts","../../src/common/hdl/hdltypes.ts","../../src/common/hdl/hdlwasm.ts","../../src/common/hdl/vxmlparser.ts","../../src/common/hdl/vxmltest.ts","../../src/common/symbols/doccomment.ts","../../src/common/symbols/index.ts","../../src/common/wasi/libretro.ts","../../src/common/wasi/wasishim.ts","../../src/ide/breakcond.ts","../../src/ide/breakpoints.ts","../../src/ide/dialogs.ts","../../src/ide/embedui.ts","../../src/ide/errorreport.ts","../../src/ide/keys.ts","../../src/ide/layout.ts","../../src/ide/pixeleditor.ts","../../src/ide/project.ts","../../src/ide/services.ts","../../src/ide/settings.ts","../../src/ide/shareexport.ts","../../src/ide/shortcutbar.ts","../../src/ide/storage.ts","../../src/ide/sync.ts","../../src/ide/toolbar.ts","../../src/ide/ui.ts","../../src/ide/waveform.ts","../../src/ide/windows.ts","../../src/ide/search/debuggerhit.ts","../../src/ide/search/docssource.ts","../../src/ide/search/listinglocation.ts","../../src/ide/search/projectsource.ts","../../src/ide/search/searchview.ts","../../src/ide/search/service.ts","../../src/ide/search/symbolindex.ts","../../src/ide/search/toolchainsource.ts","../../src/ide/search/types.ts","../../src/ide/views/assetdecorations.ts","../../src/ide/views/asseteditor.ts","../../src/ide/views/baseviews.ts","../../src/ide/views/debug.ts","../../src/ide/views/debugviews.ts","../../src/ide/views/editors.ts","../../src/ide/views/filters.ts","../../src/ide/views/gutter.ts","../../src/ide/views/helpview.ts","../../src/ide/views/includedecorations.ts","../../src/ide/views/tabs.ts","../../src/ide/views/traceviews.ts","../../src/ide/views/treeviews.ts","../../src/ide/views/visuals.ts","../../src/machine/apple2.ts","../../src/machine/arm32.ts","../../src/machine/astrocade.ts","../../src/machine/atari7800.ts","../../src/machine/atari8.ts","../../src/machine/atari8disk.ts","../../src/machine/c64.ts","../../src/machine/channelf.ts","../../src/machine/coleco.ts","../../src/machine/cpc.ts","../../src/machine/devel.ts","../../src/machine/exidy.ts","../../src/machine/galaxian.ts","../../src/machine/gb.ts","../../src/machine/kim1.ts","../../src/machine/mcr.ts","../../src/machine/msx.ts","../../src/machine/mw8080bw.ts","../../src/machine/pacman.ts","../../src/machine/sms.ts","../../src/machine/vdp_z80.ts","../../src/machine/vic20.ts","../../src/machine/vicdual.ts","../../src/machine/Line truncated
+100
View File
@@ -1,9 +1,45 @@
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const assert_1 = __importDefault(require("assert"));
const fs = __importStar(require("fs"));
const os = __importStar(require("os"));
const path = __importStar(require("path"));
const mocha_1 = require("mocha");
const testlib_1 = require("../../src/tools/testlib");
// A hand-written ca65 program for the VCS is a plain 4K cartridge: it supplies
@@ -37,4 +73,68 @@ const testlib_1 = require("../../src/tools/testlib");
assert_1.default.strictEqual(result.output.length, 32768);
});
});
// oscar64 compiles and links a whole program in one invocation. A linked
// source ("//#link") must be handed to that same invocation -- a .c file would
// otherwise be routed to cc65, which never runs because oscar64 emits the
// final binary first, leaving the symbol undefined. oscar64's own
// "#pragma compile("file.c")" is handled by the compiler, so that file only
// has to be a build dependency.
async function compileOscar64With(directive, libSource) {
await (0, testlib_1.preload)('oscar64', 'c64');
const dir = fs.mkdtempSync(path.join(os.tmpdir(), 'oscar64-'));
try {
const main = path.join(dir, 'main.cpp');
fs.writeFileSync(main, '#include <stdio.h>\n' +
'extern int addnums(int a, int b);\n' +
directive + '\n' +
'int main(void) { printf("%d", addnums(2, 3)); return 0; }\n');
fs.writeFileSync(path.join(dir, 'addnums.c'), libSource);
return await (0, testlib_1.compileSourceFile)('oscar64', 'c64', main);
}
finally {
fs.rmSync(dir, { recursive: true, force: true });
}
}
(0, mocha_1.describe)('oscar64 linked sources', () => {
(0, mocha_1.it)('should compile a //#link .c file as oscar64', async () => {
const result = await compileOscar64With('//#link "addnums.c"', 'int addnums(int a, int b) { return a + b; }\n');
assert_1.default.deepStrictEqual(result.errors || [], []);
assert_1.default.strictEqual(result.success, true);
assert_1.default.ok(result.output.length > 0);
});
(0, mocha_1.it)('should compile a #pragma compile .c file as oscar64', async () => {
const result = await compileOscar64With('#pragma compile("addnums.c")', 'int addnums(int a, int b) { return a + b; }\n');
assert_1.default.deepStrictEqual(result.errors || [], []);
assert_1.default.strictEqual(result.success, true);
assert_1.default.ok(result.output.length > 0);
});
(0, mocha_1.it)('should report errors in the linked file, not the main file', async () => {
const result = await compileOscar64With('//#link "addnums.c"', 'int addnums(int a, int b) {\n return a + undefined_symbol;\n}\n');
assert_1.default.strictEqual(result.success, false);
assert_1.default.strictEqual(result.errors.length, 1);
assert_1.default.strictEqual(result.errors[0].path, 'addnums.c');
assert_1.default.strictEqual(result.errors[0].line, 2);
});
(0, mocha_1.it)('should report errors in a #pragma compile file, not the main file', async () => {
const result = await compileOscar64With('#pragma compile("addnums.c")', 'int addnums(int a, int b) {\n return a + undefined_symbol;\n}\n');
assert_1.default.strictEqual(result.success, false);
assert_1.default.strictEqual(result.errors.length, 1);
assert_1.default.strictEqual(result.errors[0].path, 'addnums.c');
assert_1.default.strictEqual(result.errors[0].line, 2);
});
// The linked file is compiled into the same listing as the main file; it
// has to carry its own line markers (tagged with its path) so the editor
// and source breakpoints can map addresses back to the linked source.
(0, mocha_1.it)('should emit source lines for a linked file', async () => {
const result = await compileOscar64With('//#link "addnums.c"', 'int addnums(int a, int b) {\n' +
' if (a <= 0) return b;\n' +
' return addnums(a-1, b+a) + addnums(a-2, b-a) + 1;\n' +
'}\n');
assert_1.default.deepStrictEqual(result.errors || [], []);
const lines = result.listings['main.lst'].lines;
const liblines = lines.filter(l => l.path === 'addnums.c');
assert_1.default.ok(liblines.length > 0, 'expected source lines for the linked file');
assert_1.default.ok(liblines.some(l => l.line === 3), 'expected line 3 of the linked file');
});
});
//# sourceMappingURL=testlinking.js.map
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"testlinking.js","sourceRoot":"","sources":["../../../test/unit/testlinking.ts"],"names":[],"mappings":";;;;;AAAA,oDAA4B;AAC5B,iCAAqC;AACrC,qDAAqE;AAErE,+EAA+E;AAC/E,yEAAyE;AACzE,sEAAsE;AACtE,8EAA8E;AAC9E,8EAA8E;AAC9E,IAAA,gBAAQ,EAAC,wBAAwB,EAAE,GAAG,EAAE;IACpC,IAAA,UAAE,EAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,IAAA,iBAAO,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC7B,MAAM,MAAM,GAAQ,MAAM,IAAA,2BAAiB,EAAC,MAAM,EAAE,KAAK,EAAE,2BAA2B,EAAE,YAAY,CAAC,CAAC;QACtG,gBAAM,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAChD,gBAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IACH,IAAA,UAAE,EAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACtE,MAAM,IAAA,iBAAO,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC7B,MAAM,MAAM,GAAQ,MAAM,IAAA,2BAAiB,EAAC,MAAM,EAAE,KAAK,EAAE,2BAA2B,EAAE,YAAY,CAAC,CAAC;QACtG,gBAAM,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAChD,gBAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,6EAA6E;AAC7E,+EAA+E;AAC/E,+EAA+E;AAC/E,kEAAkE;AAClE,IAAA,gBAAQ,EAAC,iBAAiB,EAAE,GAAG,EAAE;IAC7B,IAAA,UAAE,EAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,IAAA,iBAAO,EAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;QACzC,MAAM,MAAM,GAAQ,MAAM,IAAA,2BAAiB,EAAC,MAAM,EAAE,iBAAiB,EAAE,gCAAgC,CAAC,CAAC;QACzG,gBAAM,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAChD,gBAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
{"version":3,"file":"testlinking.js","sourceRoot":"","sources":["../../../test/unit/testlinking.ts"],"names":[],"mappings":"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"}
+55
View File
@@ -0,0 +1,55 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const assert_1 = __importDefault(require("assert"));
const mocha_1 = require("mocha");
const project_1 = require("../../src/ide/project");
// oscar64 compiles the main file and its "//#link" sources in one invocation,
// so it emits a single .asm listing that mixes source lines from every file,
// each tagged with its own path. The editor and source breakpoints look up
// the listing for a given file, so each file must get a SourceFile holding
// only its own lines -- otherwise the linked files get no line info at all.
function makeProject(mainPath) {
const proj = new project_1.CodeProject({}, 'c64', {}, { onFileSystemUpdate: () => { } });
proj.mainPath = mainPath;
return proj;
}
function mixedListing() {
return {
'main.lst': {
lines: [
{ line: 1, path: 'main.cpp', offset: 0x100, iscode: true },
{ line: 2, path: 'main.cpp', offset: 0x102, iscode: true },
{ line: 5, path: 'lib.c', offset: 0x200, iscode: true },
{ line: 6, path: 'lib.c', offset: 0x205, iscode: true },
],
asmlines: [
{ line: 1, path: 'main.cpp', offset: 0x100, insns: 'a9 00 LDA #$00', iscode: true },
],
text: 'main.lst text',
},
};
}
(0, mocha_1.describe)('CodeProject.getListingForFile', function () {
(0, mocha_1.it)('returns only the main file lines for the main file', function () {
const proj = makeProject('presets/c64/main.cpp');
proj.processBuildListings({ listings: mixedListing() });
const lst = proj.getListingForFile('presets/c64/main.cpp');
assert_1.default.ok(lst, 'expected a listing for the main file');
assert_1.default.ok(lst.sourcefile, 'expected a sourcefile for the main file');
assert_1.default.deepStrictEqual(lst.sourcefile.lines.map(l => l.line), [1, 2]);
assert_1.default.strictEqual(lst.sourcefile.line2offset.get(2), 0x102);
});
(0, mocha_1.it)('returns the linked file lines for a linked file', function () {
const proj = makeProject('presets/c64/main.cpp');
proj.processBuildListings({ listings: mixedListing() });
const lst = proj.getListingForFile('presets/c64/lib.c');
assert_1.default.ok(lst, 'expected a listing for the linked file');
assert_1.default.ok(lst.sourcefile, 'expected a sourcefile for the linked file');
assert_1.default.deepStrictEqual(lst.sourcefile.lines.map(l => l.line), [5, 6]);
assert_1.default.strictEqual(lst.sourcefile.line2offset.get(5), 0x200);
});
});
//# sourceMappingURL=testlistingfiles.js.map
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"testlistingfiles.js","sourceRoot":"","sources":["../../../test/unit/testlistingfiles.ts"],"names":[],"mappings":"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"}
+27 -11
View File
@@ -331,30 +331,46 @@ async function compileSourceFile(tool, platform, filePath, buildAs, opts) {
depFilenames.push(dep.filename);
}
}
// Single-pass tools (oscar64) compile linked sources in the same invocation
// as the main file instead of building them separately.
var compileLinkedSources = (0, toolmeta_1.getCompileLinkedSources)(tool);
var linkfiles = [];
if (compileLinkedSources) {
for (var dep of deps) {
if (dep.link && dep.data) {
files.push({ path: dep.filename, data: dep.data });
linkfiles.push(dep.filename);
}
}
}
// Build steps: main file first
var buildsteps = [];
var mainstep = {
path: basename,
files: [basename].concat(depFilenames),
files: [basename].concat(depFilenames, linkfiles),
platform: platform,
tool: tool,
mainfile: true,
};
if (linkfiles.length)
mainstep.linkfiles = linkfiles;
if (opts && opts.symbols)
mainstep.symbols = opts.symbols;
if (opts && opts.buildArgs)
mainstep.buildArgs = opts.buildArgs;
buildsteps.push(mainstep);
// Link dependencies get their own build steps, with tool selected by extension
for (var dep of deps) {
if (dep.link && dep.data) {
files.push({ path: dep.filename, data: dep.data });
buildsteps.push({
path: dep.filename,
files: [dep.filename].concat(depFilenames),
platform: platform,
tool: getToolForFilename(dep.filename, platform),
});
// Other link dependencies get their own build steps, with tool selected by extension
if (!compileLinkedSources) {
for (var dep of deps) {
if (dep.link && dep.data) {
files.push({ path: dep.filename, data: dep.data });
buildsteps.push({
path: dep.filename,
files: [dep.filename].concat(depFilenames),
platform: platform,
tool: getToolForFilename(dep.filename, platform),
});
}
}
}
return compile({
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"testlib.js","sourceRoot":"","sources":["../../src/tools/testlib.ts"],"names":[],"mappings":"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 truncated
{"version":3,"file":"testlib.js","sourceRoot":"","sources":["../../src/tools/testlib.ts"],"names":[],"mappings":"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 truncated
+1 -1
View File
@@ -1 +1 @@
{"root":["../src/md.d.ts","../src/common/analysis.ts","../src/common/audio.ts","../src/common/baseplatform.ts","../src/common/binutils.ts","../src/common/devices.ts","../src/common/emu.ts","../src/common/gbpalette.ts","../src/common/mameplatform.ts","../src/common/probe.ts","../src/common/recorder.ts","../src/common/searchtypes.ts","../src/common/teletype.ts","../src/common/tokenizer.ts","../src/common/toolmeta.ts","../src/common/util.ts","../src/common/vlist.ts","../src/common/vtextscroller.ts","../src/common/wasmplatform.ts","../src/common/workertypes.ts","../src/common/audio/CommodoreTape.ts","../src/common/basic/compiler.ts","../src/common/basic/fuzz.ts","../src/common/basic/run.ts","../src/common/basic/runtime.ts","../src/common/cpu/6809.ts","../src/common/cpu/ARM.ts","../src/common/cpu/F8.ts","../src/common/cpu/MOS6502.ts","../src/common/cpu/SM83.ts","../src/common/cpu/ZilogZ80.ts","../src/common/cpu/disasm6502.ts","../src/common/cpu/disasmF8.ts","../src/common/cpu/disasmHuC6280.ts","../src/common/cpu/disasmSM83.ts","../src/common/cpu/disasmz80.ts","../src/common/ecs/binpack.ts","../src/common/ecs/compiler.ts","../src/common/ecs/decoder.ts","../src/common/ecs/ecs.ts","../src/common/ecs/main.ts","../src/common/hdl/fuzz.ts","../src/common/hdl/hdlruntime.ts","../src/common/hdl/hdltypes.ts","../src/common/hdl/hdlwasm.ts","../src/common/hdl/vxmlparser.ts","../src/common/hdl/vxmltest.ts","../src/common/symbols/doccomment.ts","../src/common/symbols/index.ts","../src/common/wasi/libretro.ts","../src/common/wasi/wasishim.ts","../src/ide/breakcond.ts","../src/ide/breakpoints.ts","../src/ide/dialogs.ts","../src/ide/embedui.ts","../src/ide/errorreport.ts","../src/ide/keys.ts","../src/ide/layout.ts","../src/ide/pixeleditor.ts","../src/ide/project.ts","../src/ide/services.ts","../src/ide/settings.ts","../src/ide/shareexport.ts","../src/ide/shortcutbar.ts","../src/ide/storage.ts","../src/ide/sync.ts","../src/ide/toolbar.ts","../src/ide/ui.ts","../src/ide/waveform.ts","../src/ide/windows.ts","../src/ide/search/debuggerhit.ts","../src/ide/search/docssource.ts","../src/ide/search/listinglocation.ts","../src/ide/search/projectsource.ts","../src/ide/search/searchview.ts","../src/ide/search/service.ts","../src/ide/search/symbolindex.ts","../src/ide/search/toolchainsource.ts","../src/ide/search/types.ts","../src/ide/views/assetdecorations.ts","../src/ide/views/asseteditor.ts","../src/ide/views/baseviews.ts","../src/ide/views/debug.ts","../src/ide/views/debugviews.ts","../src/ide/views/editors.ts","../src/ide/views/filters.ts","../src/ide/views/gutter.ts","../src/ide/views/helpview.ts","../src/ide/views/includedecorations.ts","../src/ide/views/tabs.ts","../src/ide/views/traceviews.ts","../src/ide/views/treeviews.ts","../src/ide/views/visuals.ts","../src/machine/apple2.ts","../src/machine/arm32.ts","../src/machine/astrocade.ts","../src/machine/atari7800.ts","../src/machine/atari8.ts","../src/machine/c64.ts","../src/machine/channelf.ts","../src/machine/coleco.ts","../src/machine/cpc.ts","../src/machine/devel.ts","../src/machine/exidy.ts","../src/machine/galaxian.ts","../src/machine/gb.ts","../src/machine/kim1.ts","../src/machine/mcr.ts","../src/machine/msx.ts","../src/machine/mw8080bw.ts","../src/machine/pacman.ts","../src/machine/sms.ts","../src/machine/vdp_z80.ts","../src/machine/vic20.ts","../src/machine/vicdual.ts","../src/machine/williams.ts","../src/machine/zx.ts","../src/machine/chips/antic.ts","../src/machine/chips/gtia.ts","../src/machine/chips/pokey.ts","../src/machine/chips/tms9918a.ts","../src/parser/lang-6502.ts","../src/parser/lang-basic.ts","../src/parser/lang-bataribasic.ts","../src/parser/lang-dialog.ts","../src/parser/lang-fastbasic.ts","../src/parser/lang-inform6.ts","../src/parser/lang-verilog.ts","../src/parser/lang-wiz.ts","../src/parser/lang-z80.ts","../src/parser/registry.ts","../src/parser/tokens-6502.ts","../src/parser/tokens-6809.ts","../src/parser/tokens-z80.ts","../src/platform/_index.ts","../src/platform/apple2.ts","../src/platform/arm32.ts","../src/platform/astrocade.ts","../src/platform/atari7800.ts","../src/platform/atari8.ts","../src/platform/basic.ts","../src/platform/c64.ts","../src/platform/channelf.ts","../src/platform/coleco.ts","../src/platform/cpc.ts","../src/platform/devel.ts","../src/platform/exidy.ts","../src/platform/galaxian.ts","../src/platform/gb.ts","../src/platform/kim1.ts","../src/platform/mcr.ts","../src/platform/msx.ts","../src/platform/mw8080bw.ts","../src/platform/nes.ts","../src/platform/pacman.ts","../src/platform/pce.ts","../src/platform/sms.ts","../src/platform/sound_konami.ts","../src/platform/sound_williams.ts","../src/platform/vcs.ts","../src/platform/vector.ts","../src/platform/vectrex.ts","../src/platform/verilog.ts","../src/platform/vic20.ts","../src/platform/vicdual.ts","../src/platform/williams.ts","../src/platform/x86.ts","../src/platform/zmachine.ts","../src/platform/zx.ts","../src/themes/cobalt.ts","../src/themes/disassemblyTheme.ts","../src/themes/editorTLine truncated
{"root":["../src/md.d.ts","../src/common/analysis.ts","../src/common/audio.ts","../src/common/baseplatform.ts","../src/common/binutils.ts","../src/common/devices.ts","../src/common/emu.ts","../src/common/gbpalette.ts","../src/common/mameplatform.ts","../src/common/probe.ts","../src/common/recorder.ts","../src/common/searchtypes.ts","../src/common/teletype.ts","../src/common/tokenizer.ts","../src/common/toolmeta.ts","../src/common/util.ts","../src/common/vlist.ts","../src/common/vtextscroller.ts","../src/common/wasmplatform.ts","../src/common/workertypes.ts","../src/common/audio/CommodoreTape.ts","../src/common/basic/compiler.ts","../src/common/basic/fuzz.ts","../src/common/basic/run.ts","../src/common/basic/runtime.ts","../src/common/cpu/6809.ts","../src/common/cpu/ARM.ts","../src/common/cpu/F8.ts","../src/common/cpu/MOS6502.ts","../src/common/cpu/SM83.ts","../src/common/cpu/ZilogZ80.ts","../src/common/cpu/disasm6502.ts","../src/common/cpu/disasmF8.ts","../src/common/cpu/disasmHuC6280.ts","../src/common/cpu/disasmSM83.ts","../src/common/cpu/disasmz80.ts","../src/common/ecs/binpack.ts","../src/common/ecs/compiler.ts","../src/common/ecs/decoder.ts","../src/common/ecs/ecs.ts","../src/common/ecs/main.ts","../src/common/hdl/fuzz.ts","../src/common/hdl/hdlruntime.ts","../src/common/hdl/hdltypes.ts","../src/common/hdl/hdlwasm.ts","../src/common/hdl/vxmlparser.ts","../src/common/hdl/vxmltest.ts","../src/common/symbols/doccomment.ts","../src/common/symbols/index.ts","../src/common/wasi/libretro.ts","../src/common/wasi/wasishim.ts","../src/ide/breakcond.ts","../src/ide/breakpoints.ts","../src/ide/dialogs.ts","../src/ide/embedui.ts","../src/ide/errorreport.ts","../src/ide/keys.ts","../src/ide/layout.ts","../src/ide/pixeleditor.ts","../src/ide/project.ts","../src/ide/services.ts","../src/ide/settings.ts","../src/ide/shareexport.ts","../src/ide/shortcutbar.ts","../src/ide/storage.ts","../src/ide/sync.ts","../src/ide/toolbar.ts","../src/ide/ui.ts","../src/ide/waveform.ts","../src/ide/windows.ts","../src/ide/search/debuggerhit.ts","../src/ide/search/docssource.ts","../src/ide/search/listinglocation.ts","../src/ide/search/projectsource.ts","../src/ide/search/searchview.ts","../src/ide/search/service.ts","../src/ide/search/symbolindex.ts","../src/ide/search/toolchainsource.ts","../src/ide/search/types.ts","../src/ide/views/assetdecorations.ts","../src/ide/views/asseteditor.ts","../src/ide/views/baseviews.ts","../src/ide/views/debug.ts","../src/ide/views/debugviews.ts","../src/ide/views/editors.ts","../src/ide/views/filters.ts","../src/ide/views/gutter.ts","../src/ide/views/helpview.ts","../src/ide/views/includedecorations.ts","../src/ide/views/tabs.ts","../src/ide/views/traceviews.ts","../src/ide/views/treeviews.ts","../src/ide/views/visuals.ts","../src/machine/apple2.ts","../src/machine/arm32.ts","../src/machine/astrocade.ts","../src/machine/atari7800.ts","../src/machine/atari8.ts","../src/machine/atari8disk.ts","../src/machine/c64.ts","../src/machine/channelf.ts","../src/machine/coleco.ts","../src/machine/cpc.ts","../src/machine/devel.ts","../src/machine/exidy.ts","../src/machine/galaxian.ts","../src/machine/gb.ts","../src/machine/kim1.ts","../src/machine/mcr.ts","../src/machine/msx.ts","../src/machine/mw8080bw.ts","../src/machine/pacman.ts","../src/machine/sms.ts","../src/machine/vdp_z80.ts","../src/machine/vic20.ts","../src/machine/vicdual.ts","../src/machine/williams.ts","../src/machine/zx.ts","../src/machine/chips/antic.ts","../src/machine/chips/gtia.ts","../src/machine/chips/pokey.ts","../src/machine/chips/tms9918a.ts","../src/parser/lang-6502.ts","../src/parser/lang-basic.ts","../src/parser/lang-bataribasic.ts","../src/parser/lang-dialog.ts","../src/parser/lang-fastbasic.ts","../src/parser/lang-inform6.ts","../src/parser/lang-verilog.ts","../src/parser/lang-wiz.ts","../src/parser/lang-z80.ts","../src/parser/registry.ts","../src/parser/tokens-6502.ts","../src/parser/tokens-6809.ts","../src/parser/tokens-z80.ts","../src/platform/_index.ts","../src/platform/apple2.ts","../src/platform/arm32.ts","../src/platform/astrocade.ts","../src/platform/atari7800.ts","../src/platform/atari8.ts","../src/platform/basic.ts","../src/platform/c64.ts","../src/platform/channelf.ts","../src/platform/coleco.ts","../src/platform/cpc.ts","../src/platform/devel.ts","../src/platform/exidy.ts","../src/platform/galaxian.ts","../src/platform/gb.ts","../src/platform/kim1.ts","../src/platform/mcr.ts","../src/platform/msx.ts","../src/platform/mw8080bw.ts","../src/platform/nes.ts","../src/platform/pacman.ts","../src/platform/pce.ts","../src/platform/sms.ts","../src/platform/sound_konami.ts","../src/platform/sound_williams.ts","../src/platform/vcs.ts","../src/platform/vector.ts","../src/platform/vectrex.ts","../src/platform/verilog.ts","../src/platform/vic20.ts","../src/platform/vicdual.ts","../src/platform/williams.ts","../src/platform/x86.ts","../src/platform/zmachine.ts","../src/platform/zx.ts","../src/themes/cobalt.ts","../src/themes/disassemblyTLine truncated
+1 -1
View File
@@ -1,2 +1,2 @@
import{A,B,C,D,E,F,G,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}from"./chunk-5YJJ4DRA.js";import"./chunk-VLOGW7AJ.js";import"./chunk-T6VURU5O.js";import"./chunk-A7SWO6EA.js";import"./chunk-4R3KPJX7.js";import"./chunk-2XSLQJUY.js";import"./chunk-TYDI7JZQ.js";import"./chunk-VSC4MAII.js";export{u as armBreakpoints,w as clearBreakpoint,h as current_project,F as emulationHalted,q as getCurrentEditorFilename,p as getCurrentMainFilename,m as getCurrentOutput,l as getCurrentProject,A as getPlatformAndRepo,k as getPlatformStore,E as getSaveState,D as getTestOutput,n as getWorkerParams,z as gotoNewLocation,y as haltEmulation,j as lastDebugState,o as openHeaderFile,s as openLocationForPC,r as parseGoToTarget,g as platform,d as platform_id,i as projectWindows,c as qs,G as reloadWorkspaceFile,f as repo_id,v as runToPC,x as setFrameRateUI,C as setTestInput,t as setupBreakpoint,b as setupSplits,a as showTab,B as startUI,e as store_id};
import{A,B,C,D,E,F,G,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}from"./chunk-XRWSPMRR.js";import"./chunk-VLOGW7AJ.js";import"./chunk-T6VURU5O.js";import"./chunk-A7SWO6EA.js";import"./chunk-C7SFJC4F.js";import"./chunk-2XSLQJUY.js";import"./chunk-TYDI7JZQ.js";import"./chunk-VSC4MAII.js";export{u as armBreakpoints,w as clearBreakpoint,h as current_project,F as emulationHalted,q as getCurrentEditorFilename,p as getCurrentMainFilename,m as getCurrentOutput,l as getCurrentProject,A as getPlatformAndRepo,k as getPlatformStore,E as getSaveState,D as getTestOutput,n as getWorkerParams,z as gotoNewLocation,y as haltEmulation,j as lastDebugState,o as openHeaderFile,s as openLocationForPC,r as parseGoToTarget,g as platform,d as platform_id,i as projectWindows,c as qs,G as reloadWorkspaceFile,f as repo_id,v as runToPC,x as setFrameRateUI,C as setTestInput,t as setupBreakpoint,b as setupSplits,a as showTab,B as startUI,e as store_id};
//# sourceMappingURL=ui.js.map
+11 -2
View File
@@ -2542,6 +2542,10 @@
/^\s*[.#%]?(include|incbin|embed)\s+"(.+?)"/gmi,
/^\s*([;']|[/][/])#(resource)\s+"(.+?)"/gm
];
var OSCAR64_INCLUDE_PATTERNS = [
...SHARED_INCLUDE_PATTERNS,
/^\s*#pragma\s+compile\s*\(\s*"([^"]+)"\s*\)/gmi
];
var SHARED_LINK_PATTERNS = [
/^\s*([;]|[/][/])#link\s+"(.+?)"/gm
];
@@ -2936,8 +2940,9 @@
defineInline: true,
wasmModule: "oscar64",
version: "1.32.266",
includePatterns: SHARED_INCLUDE_PATTERNS,
includePatterns: OSCAR64_INCLUDE_PATTERNS,
linkPatterns: SHARED_LINK_PATTERNS,
compileLinkedSources: true,
platforms: {
// oscar64 defaults to the C64 target machine
c64: {},
@@ -14855,6 +14860,7 @@ ${this.scopeSymbol(name)} = ${name}::__Start`;
args.push.apply(args, defineArgs("oscar64", step.params && step.params.symbols && step.params.symbols.compiler));
args.push.apply(args, extraArgsFor("oscar64", step.params && step.params.buildArgs));
args.push(step.path);
if (step.linkfiles) args.push.apply(args, step.linkfiles);
wasi.setArgs(args);
try {
wasi.run();
@@ -14865,12 +14871,15 @@ ${this.scopeSymbol(name)} = ${name}::__Start`;
let stderr = wasi.fds[2].getBytesAsString();
console.log("stdout", stdout);
console.log("stderr", stderr);
const matcher = makeErrorMatcher(errors, /\((\d+),\s+(\d+)\)\s+: error (\d+): (.+)/, 1, 4, step.path);
const matcher = makeErrorMatcher(errors, /^\s*(.*?)\((\d+),\s+(\d+)\)\s+: error (\d+): (.+)/, 2, 5, step.path, 1);
const matcher2 = makeErrorMatcher(errors, /oscar64: error (\d+): (.+)/, 0, 2, step.path);
for (let line of stderr.split("\n")) {
matcher(line);
matcher2(line);
}
for (let err of errors) {
if (err.path && err.path.startsWith("/")) err.path = err.path.substring(1);
}
if (errors.length) {
return { errors };
}
+2 -2
View File
@@ -1,7 +1,7 @@
{
"version": 3,
"sources": ["../../node_modules/jszip/dist/jszip.min.js", "../../src/common/util.ts", "../../src/common/toolmeta.ts", "../../src/worker/platforms.ts", "../../src/common/basic/compiler.ts", "../../src/worker/wasiutils.ts", "../../src/common/wasi/wasishim.ts", "../../src/worker/wasmutils.ts", "../../src/worker/listingutils.ts", "../../src/worker/tools/misc.ts", "../../src/worker/tools/cc65.ts", "../../src/worker/tools/dasm.ts", "../../src/worker/tools/mcpp.ts", "../../src/worker/tools/sdcc.ts", "../../src/worker/assembler.ts", "../../src/common/hdl/hdltypes.ts", "../../src/common/hdl/vxmlparser.ts", "../../src/worker/tools/verilog.ts", "../../src/worker/tools/m6809.ts", "../../src/worker/tools/m6502.ts", "../../src/worker/tools/z80.ts", "../../src/worker/tools/x86.ts", "../../src/common/binutils.ts", "../../src/worker/tools/arm.ts", "../../src/common/tokenizer.ts", "../../src/common/ecs/binpack.ts", "../../src/common/ecs/ecs.ts", "../../src/common/ecs/decoder.ts", "../../src/common/ecs/compiler.ts", "../../src/worker/tools/ecs.ts", "../../src/common/workertypes.ts", "../../src/worker/tools/remote.ts", "../../src/worker/tools/acme.ts", "../../src/worker/tools/cc6502.ts", "../../src/worker/tools/cc7800.ts", "../../src/worker/tools/cc2600.ts", "../../src/worker/tools/bataribasic.ts", "../../src/worker/tools/oscar64parse.ts", "../../src/worker/tools/oscar64.ts", "../../src/worker/tools/xa.ts", "../../src/worker/tools/dialog.ts", "../../src/worker/workertools.ts", "../../src/worker/builder.ts", "../../src/worker/workermain.ts"],
"sourcesContent": ["/*!\n\nJSZip v3.10.2 - A JavaScript class for generating and reading zip files\n<http://stuartk.com/jszip>\n\n(c) 2009-2016 Stuart Knightley <stuart [at] stuartk.com>\nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/main/LICENSE\n*/\n\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).JSZip=e()}}(function(){return function s(a,o,h){function u(r,e){if(!o[r]){if(!a[r]){var t=\"function\"==typeof require&&require;if(!e&&t)return t(r,!0);if(l)return l(r,!0);var n=new Error(\"Cannot find module '\"+r+\"'\");throw n.code=\"MODULE_NOT_FOUND\",n}var i=o[r]={exports:{}};a[r][0].call(i.exports,function(e){var t=a[r][1][e];return u(t||e)},i,i.exports,s,a,o,h)}return o[r].exports}for(var l=\"function\"==typeof require&&require,e=0;e<h.length;e++)u(h[e]);return u}({1:[function(e,t,r){\"use strict\";var d=e(\"./utils\"),c=e(\"./support\"),p=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";r.encode=function(e){for(var t,r,n,i,s,a,o,h=[],u=0,l=e.length,f=l,c=\"string\"!==d.getTypeOf(e);u<e.length;)f=l-u,n=c?(t=e[u++],r=u<l?e[u++]:0,u<l?e[u++]:0):(t=e.charCodeAt(u++),r=u<l?e.charCodeAt(u++):0,u<l?e.charCodeAt(u++):0),i=t>>2,s=(3&t)<<4|r>>4,a=1<f?(15&r)<<2|n>>6:64,o=2<f?63&n:64,h.push(p.charAt(i)+p.charAt(s)+p.charAt(a)+p.charAt(o));return h.join(\"\")},r.decode=function(e){var t,r,n,i,s,a,o=0,h=0,u=\"data:\";if(e.substr(0,u.length)===u)throw new Error(\"Invalid base64 input, it looks like a data url.\");var l,f=3*(e=e.replace(/[^A-Za-z0-9+/=]/g,\"\")).length/4;if(e.charAt(e.length-1)===p.charAt(64)&&f--,e.charAt(e.length-2)===p.charAt(64)&&f--,f%1!=0)throw new Error(\"Invalid base64 input, bad content length.\");for(l=c.uint8array?new Uint8Array(0|f):new Array(0|f);o<e.length;)t=p.indexOf(e.charAt(o++))<<2|(i=p.indexOf(e.charAt(o++)))>>4,r=(15&i)<<4|(s=p.indexOf(e.charAt(o++)))>>2,n=(3&s)<<6|(a=p.indexOf(e.charAt(o++))),l[h++]=t,64!==s&&(l[h++]=r),64!==a&&(l[h++]=n);return l}},{\"./support\":30,\"./utils\":32}],2:[function(e,t,r){\"use strict\";var n=e(\"./external\"),i=e(\"./stream/DataWorker\"),s=e(\"./stream/Crc32Probe\"),a=e(\"./stream/DataLengthProbe\");function o(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}o.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a(\"data_length\")),t=this;return e.on(\"end\",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},o.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new a(\"uncompressedSize\")).pipe(t.compressWorker(r)).pipe(new a(\"compressedSize\")).withStreamInfo(\"compression\",t)},t.exports=o},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(e,t,r){\"use strict\";var n=e(\"./stream/GenericWorker\");r.STORE={magic:\"\\0\\0\",compressWorker:function(){return new n(\"STORE compression\")},uncompressWorker:function(){return new n(\"STORE decompression\")}},r.DEFLATE=e(\"./flate\")},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(e,t,r){\"use strict\";var n=e(\"./utils\");var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?\"string\"!==n.getTypeOf(e)?function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t[a])];return-1^e}(0|t,e,e.length,0):function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t.charCodeAt(a))];return-1^e}(0|t,e,e.length,0):0}},{\"./utils\":32}],5:[function(e,t,r){\"use strict\";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){\"use strict\";var n=null;n=\"undefined\"!=typeof Promise?Promise:e(\"lie\"),t.exports={Promise:n}},{lie:37}],7:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,i=e(\"pako\"),s=e(\"./utils\"),a=e(\"./stream/GenericWorker\"),o=n?\"uint8array\":\"array\";function h(e,t){a.call(this,\"FlateWorker/\"+e),this._pako=null,this._pakoActioLine truncated
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA,2CAAAA,UAAA;AAYA,QAAC,SAAS,GAAE;AAAC,YAAG,YAAU,OAAOA,YAAS,eAAa,OAAO,OAAO,QAAO,UAAQ,EAAE;AAAA,iBAAU,cAAY,OAAO,UAAQ,OAAO,IAAI,QAAO,CAAC,GAAE,CAAC;AAAA,aAAM;AAAC,WAAC,eAAa,OAAO,SAAO,SAAO,eAAa,OAAO,SAAO,SAAO,eAAa,OAAO,OAAK,OAAK,MAAM,QAAM,EAAE;AAAA,QAAC;AAAA,MAAC,GAAE,WAAU;AAAC,gBAAO,SAAS,EAAE,GAAE,GAAE,GAAE;AAAC,mBAAS,EAAE,GAAEC,IAAE;AAAC,gBAAG,CAAC,EAAE,CAAC,GAAE;AAAC,kBAAG,CAAC,EAAE,CAAC,GAAE;AAAC,oBAAI,IAAE,cAAY,OAAO,aAAS;AAAQ,oBAAG,CAACA,MAAG,EAAE,QAAO,EAAE,GAAE,IAAE;AAAE,oBAAG,EAAE,QAAO,EAAE,GAAE,IAAE;AAAE,oBAAI,IAAE,IAAI,MAAM,yBAAuB,IAAE,GAAG;AAAE,sBAAM,EAAE,OAAK,oBAAmB;AAAA,cAAC;AAAC,kBAAI,IAAE,EAAE,CAAC,IAAE,EAAC,SAAQ,CAAC,EAAC;AAAE,gBAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,SAAQ,SAASA,IAAE;AAAC,oBAAIC,KAAE,EAAE,CAAC,EAAE,CAAC,EAAED,EAAC;AAAE,uBAAO,EAAEC,MAAGD,EAAC;AAAA,cAAC,GAAE,GAAE,EAAE,SAAQ,GAAE,GAAE,GAAE,CAAC;AAAA,YAAC;AAAC,mBAAO,EAAE,CAAC,EAAE;AAAA,UAAO;AAAC,mBAAQ,IAAE,cAAY,OAAO,aAAS,WAAQ,IAAE,GAAE,IAAE,EAAE,QAAO,IAAI,GAAE,EAAE,CAAC,CAAC;AAAE,iBAAO;AAAA,QAAC,GAAE,EAAC,GAAE,CAAC,SAAS,GAAE,GAAE,GAAE;AAAC;AAAa,cAAI,IAAE,EAAE,SAAS,GAAE,IAAE,EAAE,WAAW,GAAE,IAAE;AAAoE,YAAE,SAAO,SAASA,IAAE;AAAC,qBAAQC,IAAEC,IAAE,GAAE,GAAE,GAAE,GAAE,GAAE,IAAE,CAAC,GAAE,IAAE,GAAE,IAAEF,GAAE,QAAO,IAAE,GAAEG,KAAE,aAAW,EAAE,UAAUH,EAAC,GAAE,IAAEA,GAAE,SAAQ,KAAE,IAAE,GAAE,IAAEG,MAAGF,KAAED,GAAE,GAAG,GAAEE,KAAE,IAAE,IAAEF,GAAE,GAAG,IAAE,GAAE,IAAE,IAAEA,GAAE,GAAG,IAAE,MAAIC,KAAED,GAAE,WAAW,GAAG,GAAEE,KAAE,IAAE,IAAEF,GAAE,WAAW,GAAG,IAAE,GAAE,IAAE,IAAEA,GAAE,WAAW,GAAG,IAAE,IAAG,IAAEC,MAAG,GAAE,KAAG,IAAEA,OAAI,IAAEC,MAAG,GAAE,IAAE,IAAE,KAAG,KAAGA,OAAI,IAAE,KAAG,IAAE,IAAG,IAAE,IAAE,IAAE,KAAG,IAAE,IAAG,EAAE,KAAK,EAAE,OAAO,CAAC,IAAE,EAAE,OAAO,CAAC,IAAE,EAAE,OAAO,CAAC,IAAE,EAAE,OAAO,CAAC,CAAC;AAAE,mBAAO,EAAE,KAAK,EAAE;AAAA,UAAC,GAAE,EAAE,SAAO,SAASF,IAAE;AAAC,gBAAIC,IAAEC,IAAE,GAAE,GAAE,GAAE,GAAE,IAAE,GAAE,IAAE,GAAE,IAAE;AAAQ,gBAAGF,GAAE,OAAO,GAAE,EAAE,MAAM,MAAI,EAAE,OAAM,IAAI,MAAM,iDAAiD;AAAE,gBAAI,GAAE,IAAE,KAAGA,KAAEA,GAAE,QAAQ,oBAAmB,EAAE,GAAG,SAAO;AAAE,gBAAGA,GAAE,OAAOA,GAAE,SAAO,CAAC,MAAI,EAAE,OAAO,EAAE,KAAG,KAAIA,GAAE,OAAOA,GAAE,SAAO,CAAC,MAAI,EAAE,OAAO,EAAE,KAAG,KAAI,IAAE,KAAG,EAAE,OAAM,IAAI,MAAM,2CAA2C;AAAE,iBAAI,IAAE,EAAE,aAAW,IAAI,WAAW,IAAE,CAAC,IAAE,IAAI,MAAM,IAAE,CAAC,GAAE,IAAEA,GAAE,SAAQ,CAAAC,KAAE,EAAE,QAAQD,GAAE,OAAO,GAAG,CAAC,KAAG,KAAG,IAAE,EAAE,QAAQA,GAAE,OAAO,GAAG,CAAC,MAAI,GAAEE,MAAG,KAAG,MAAI,KAAG,IAAE,EAAE,QAAQF,GAAE,OAAO,GAAG,CAAC,MAAI,GAAE,KAAG,IAAE,MAAI,KAAG,IAAE,EAAE,QAAQA,GAAE,OAAO,GAAG,CAAC,IAAG,EAAE,GAAG,IAAEC,IAAE,OAAK,MAAI,EAAE,GAAG,IAAEC,KAAG,OAAK,MAAI,EAAE,GAAG,IAAE;AAAG,mBAAO;AAAA,UAAC;AAAA,QAAC,GAAE,EAAC,aAAY,IAAG,WAAU,GAAE,CAAC,GAAE,GAAE,CAAC,SAAS,GAAE,GAAE,GAAE;AAAC;AAAa,cAAI,IAAE,EAAE,YAAY,GAAE,IAAE,EAAE,qBAAqB,GAAE,IAAE,EAAE,qBAAqB,GAAE,IAAE,EAAE,0BAA0B;AAAE,mBAAS,EAAEF,IAAEC,IAAEC,IAAEE,IAAEC,IAAE;AAAC,iBAAK,iBAAeL,IAAE,KAAK,mBAAiBC,IAAE,KAAK,QAAMC,IAAE,KAAK,cAAYE,IAAE,KAAK,oBAAkBC;AAAA,UAAC;AAAC,YAAE,YAAU,EAAC,kBAAiB,WAAU;AAAC,gBAAIL,KAAE,IAAI,EAAE,EAAE,QAAQ,QAAQ,KAAK,iBAAiB,CAAC,EAAE,KAAK,KAAK,YAAY,iBAAiB,CAAC,EAAE,KAAK,IAAI,EAAE,aAAa,CAAC,GAAEC,KAAE;AAAK,mBAAOD,GAAE,GAAG,OAAM,WAAU;AAAC,kBAAG,KAAK,WAAW,gBAAcC,GAAE,iBAAiB,OAAM,IAAI,MAAM,uCAAuC;AAAA,YAAC,CAAC,GAAED;AAAA,UAAC,GAAE,qBAAoB,WAAU;AAAC,mBAAO,IAAI,EAAE,EAAE,QAAQ,QAAQ,KAAK,iBAAiB,CAAC,EAAE,eAAe,kBAAiB,KAAK,cAAc,EAAE,eAAe,oBAAmB,KAAK,gBAAgB,EAAE,eAAe,SAAQ,KAAK,KAAK,EAAE,eAAe,eAAc,KAAK,WAAW;AAAA,UAAC,EAAC,GAAE,EAAE,mBAAiB,SAASA,IAAEC,IAAEC,IAAE;AAAC,mBAAOF,GAAE,KAAK,IAAI,GAAC,EAAE,KAAK,IAAI,EAAE,kBAAkB,CAAC,EAAE,KAAKC,GAAE,eAAeC,EAAC,CAAC,EAAE,KAAK,IAAI,EAAE,gBAAgB,CAAC,EAAE,eAAe,eAAcD,EAAC;AAAA,UAAC,GAAE,EAAE,UAAQ;AAAA,QAAC,GAAE,EAAC,cAAa,GAAE,uBAAsB,IAAG,4BAA2B,IAAG,uBAAsB,GAAE,CAAC,GAAE,GAAE,CAAC,SAAS,GAAE,GAAE,GAAE;AAAC;AAAa,cAAI,IAAE,EAAE,wBAAwB;AAAE,YAAE,QAAM,EAAC,OAAM,QAAO,gBAAe,WAAU;AAAC,mBAAO,IAAI,EAAE,mBAAmB;AAAA,UAAC,GAAE,kBAAiB,WAAU;AAAC,mBAAO,IAAI,EAAE,qBAAqB;AAAA,UAAC,EAAC,GAAE,EAAE,UAAQ,EAAE,SAAS;AAAA,QAAC,GAAE,EAAC,WAAU,GAAE,0BAAyB,GAAE,CAAC,GAAE,GAAE,CAAC,SAAS,GAAE,GAAE,GAAE;AAAC;AAAa,cAAI,IAAE,EAAE,SAAS;AAAE,cAAI,KAAE,WAAU;AAAC,qBAAQD,IAAEC,KAAE,CAAC,GAAEC,KAAE,GAAEA,KAAE,KAAIA,MAAI;AAAC,cAAAF,KAAEE;AAAE,uBAAQE,KAAE,GAAEA,KAAE,GAAEA,KAAI,CAAAJ,KAAE,IAAEA,KAAE,aAAWA,OAAI,IAAEA,OAAI;AAAE,cAAAC,GAAEC,EAAC,IAAEF;AAAA,YAAC;AAAC,mBAAOC;AAAA,UAAC,GAAE;AAAE,YAAE,UAAQ,SAASD,IAAEC,IAAE;AAAC,mBAAO,WAASD,MAAGA,GAAE,SAAO,aAAW,EAAE,UAAUA,EAAC,KAAE,SAASA,IAAEC,IAAEC,IAAEE,IAAE;AAAC,kBAAI,IAAE,GAAE,IAAEA,KAAEF;AAAE,cAAAF,MAAG;AAAG,uBAAQ,IAAEI,IAAE,IAAE,GAAE,IAAI,CAAAJ,KAAEA,OAAI,IAAE,EAAE,OAAKA,KAAEC,GAAE,CAAC,EAAE;AAAE,qBAAM,KAAGD;AAAA,YAAC,GAAE,IAAEC,IAAED,IAAEA,GAAE,QAAO,CAAC,KAAE,SAASA,IAAEC,IAAEC,IAAEE,IAAE;AAAC,kBAAI,IAAE,GAAE,IAAEA,KAAEF;AAAE,cAAAF,MAAG;AAAG,uBAAQ,IAAEI,IAAE,IAAE,GAAE,IAAI,CAAAJ,KAAEA,OAAI,IAAE,EAAE,OAAKA,KAAEC,GAAE,WAAW,CAAC,EAAE;AAAE,qBAAM,KAAGD;AAAA,YAAC,GAAE,IAAEC,IAAED,IAAEA,GAAE,QAAO,CAAC,IAAE;AAAA,UAAC;AAAA,QAAC,GAAE,EAAC,WAAU,GAAE,CAAC,GAAE,GAAE,CAAC,SAAS,GAAE,GAAE,GAAE;AAAC;AAAa,YAAE,SAAO,OAAG,EAAE,SAAO,OAAG,EAAE,MAAI,OAAG,EALine truncated
"sourcesContent": ["/*!\n\nJSZip v3.10.2 - A JavaScript class for generating and reading zip files\n<http://stuartk.com/jszip>\n\n(c) 2009-2016 Stuart Knightley <stuart [at] stuartk.com>\nDual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.\n\nJSZip uses the library pako released under the MIT license :\nhttps://github.com/nodeca/pako/blob/main/LICENSE\n*/\n\n!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{(\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this).JSZip=e()}}(function(){return function s(a,o,h){function u(r,e){if(!o[r]){if(!a[r]){var t=\"function\"==typeof require&&require;if(!e&&t)return t(r,!0);if(l)return l(r,!0);var n=new Error(\"Cannot find module '\"+r+\"'\");throw n.code=\"MODULE_NOT_FOUND\",n}var i=o[r]={exports:{}};a[r][0].call(i.exports,function(e){var t=a[r][1][e];return u(t||e)},i,i.exports,s,a,o,h)}return o[r].exports}for(var l=\"function\"==typeof require&&require,e=0;e<h.length;e++)u(h[e]);return u}({1:[function(e,t,r){\"use strict\";var d=e(\"./utils\"),c=e(\"./support\"),p=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";r.encode=function(e){for(var t,r,n,i,s,a,o,h=[],u=0,l=e.length,f=l,c=\"string\"!==d.getTypeOf(e);u<e.length;)f=l-u,n=c?(t=e[u++],r=u<l?e[u++]:0,u<l?e[u++]:0):(t=e.charCodeAt(u++),r=u<l?e.charCodeAt(u++):0,u<l?e.charCodeAt(u++):0),i=t>>2,s=(3&t)<<4|r>>4,a=1<f?(15&r)<<2|n>>6:64,o=2<f?63&n:64,h.push(p.charAt(i)+p.charAt(s)+p.charAt(a)+p.charAt(o));return h.join(\"\")},r.decode=function(e){var t,r,n,i,s,a,o=0,h=0,u=\"data:\";if(e.substr(0,u.length)===u)throw new Error(\"Invalid base64 input, it looks like a data url.\");var l,f=3*(e=e.replace(/[^A-Za-z0-9+/=]/g,\"\")).length/4;if(e.charAt(e.length-1)===p.charAt(64)&&f--,e.charAt(e.length-2)===p.charAt(64)&&f--,f%1!=0)throw new Error(\"Invalid base64 input, bad content length.\");for(l=c.uint8array?new Uint8Array(0|f):new Array(0|f);o<e.length;)t=p.indexOf(e.charAt(o++))<<2|(i=p.indexOf(e.charAt(o++)))>>4,r=(15&i)<<4|(s=p.indexOf(e.charAt(o++)))>>2,n=(3&s)<<6|(a=p.indexOf(e.charAt(o++))),l[h++]=t,64!==s&&(l[h++]=r),64!==a&&(l[h++]=n);return l}},{\"./support\":30,\"./utils\":32}],2:[function(e,t,r){\"use strict\";var n=e(\"./external\"),i=e(\"./stream/DataWorker\"),s=e(\"./stream/Crc32Probe\"),a=e(\"./stream/DataLengthProbe\");function o(e,t,r,n,i){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=i}o.prototype={getContentWorker:function(){var e=new i(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new a(\"data_length\")),t=this;return e.on(\"end\",function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")}),e},getCompressedWorker:function(){return new i(n.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},o.createWorkerFrom=function(e,t,r){return e.pipe(new s).pipe(new a(\"uncompressedSize\")).pipe(t.compressWorker(r)).pipe(new a(\"compressedSize\")).withStreamInfo(\"compression\",t)},t.exports=o},{\"./external\":6,\"./stream/Crc32Probe\":25,\"./stream/DataLengthProbe\":26,\"./stream/DataWorker\":27}],3:[function(e,t,r){\"use strict\";var n=e(\"./stream/GenericWorker\");r.STORE={magic:\"\\0\\0\",compressWorker:function(){return new n(\"STORE compression\")},uncompressWorker:function(){return new n(\"STORE decompression\")}},r.DEFLATE=e(\"./flate\")},{\"./flate\":7,\"./stream/GenericWorker\":28}],4:[function(e,t,r){\"use strict\";var n=e(\"./utils\");var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?\"string\"!==n.getTypeOf(e)?function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t[a])];return-1^e}(0|t,e,e.length,0):function(e,t,r,n){var i=o,s=n+r;e^=-1;for(var a=n;a<s;a++)e=e>>>8^i[255&(e^t.charCodeAt(a))];return-1^e}(0|t,e,e.length,0):0}},{\"./utils\":32}],5:[function(e,t,r){\"use strict\";r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],6:[function(e,t,r){\"use strict\";var n=null;n=\"undefined\"!=typeof Promise?Promise:e(\"lie\"),t.exports={Promise:n}},{lie:37}],7:[function(e,t,r){\"use strict\";var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,i=e(\"pako\"),s=e(\"./utils\"),a=e(\"./stream/GenericWorker\"),o=n?\"uint8array\":\"array\";function h(e,t){a.call(this,\"FlateWorker/\"+e),this._pako=null,this._pakoActioLine truncated
"mappings": "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 truncated
"names": ["exports", "e", "t", "r", "c", "n", "i", "s", "a", "o", "h", "u", "l", "f", "d", "p", "m", "attrs", "s", "JSZip", "debug", "s", "s", "hex", "CompileError", "s", "code", "s", "re_error", "s", "m", "lst", "wasiModule", "DwarfTag", "DwarfAttribute", "line", "m", "CompileError", "mergeLocs", "CompileError", "debug", "debug", "isLiteral", "isBinOp", "isUnOp", "e", "isLiteral", "OPERATORS", "getOperator", "getPrecedence", "mergeLocs", "tok", "isLiteral", "getPrecedence", "getOperator", "valtype", "CompileError", "wasiModule", "wasiFilesystems", "hex", "wasiModule", "wasiModule", "wasiModule", "re_error", "exports", "ENVIRONMENT_IS_WORKER", "e"]
}
+13 -2
View File
@@ -51,6 +51,9 @@ async function compileOscar64(step) {
args.push.apply(args, (0, toolmeta_1.defineArgs)('oscar64', step.params && step.params.symbols && step.params.symbols.compiler));
args.push.apply(args, (0, toolmeta_1.extraArgsFor)('oscar64', step.params && step.params.buildArgs));
args.push(step.path);
// linked sources are compiled and linked in this same invocation
if (step.linkfiles)
args.push.apply(args, step.linkfiles);
wasi.setArgs(args);
try {
wasi.run();
@@ -62,13 +65,21 @@ async function compileOscar64(step) {
let stderr = wasi.fds[2].getBytesAsString();
console.log('stdout', stdout);
console.log('stderr', stderr);
// (58, 17) : error 3001: Could not open source file. 'stdlib.c'
const matcher = (0, listingutils_1.makeErrorMatcher)(errors, /\((\d+),\s+(\d+)\)\s+: error (\d+): (.+)/, 1, 4, step.path);
// oscar64 reports the source filename when a build has more than one
// source: "/lib.c(2, 14) : error 3005: ...". Global errors omit it:
// "(58, 17) : error 3001: Could not open source file. 'stdlib.c'".
const matcher = (0, listingutils_1.makeErrorMatcher)(errors, /^\s*(.*?)\((\d+),\s+(\d+)\)\s+: error (\d+): (.+)/, 2, 5, step.path, 1);
const matcher2 = (0, listingutils_1.makeErrorMatcher)(errors, /oscar64: error (\d+): (.+)/, 0, 2, step.path);
for (let line of stderr.split('\n')) {
matcher(line);
matcher2(line);
}
// strip the leading '/' oscar64 puts on paths so they match the
// project's filenames (editor error markers match by suffix)
for (let err of errors) {
if (err.path && err.path.startsWith('/'))
err.path = err.path.substring(1);
}
if (errors.length) {
return { errors };
}
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"oscar64.js","sourceRoot":"","sources":["../../../src/worker/tools/oscar64.ts"],"names":[],"mappings":"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 truncated
{"version":3,"file":"oscar64.js","sourceRoot":"","sources":["../../../src/worker/tools/oscar64.ts"],"names":[],"mappings":"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 truncated
File diff suppressed because it is too large. Load diff
+55 -11
View File
@@ -7,7 +7,9 @@
* //#link "common_irq.s"
*/
#ifdef __CC65__
#include <6502.h>
#endif
#include <string.h>
#include "common.h"
@@ -48,15 +50,19 @@
/*==========================================================================*/
/* Make sure this array doesn't cross a 1K boundary */
#ifdef __CC65__
/* we really should use a custom .cfg file with the align attribute */
/* but let's just put it here and maybe no one will notice */
#if defined(__ATARI5200__)
static byte* a8_dlist_store = (byte*)0x1700;
static byte* a8_dlist = (byte*)0x1700;
#else
static byte* a8_dlist_store = (byte*)0x9700;
static byte* a8_dlist = (byte*)0x9700;
#endif
#else
byte a8_dlist[256];
#pragma align(a8_dlist, 0x100)
#endif
byte* a8_dlist;
byte a8_dlist_len;
byte a8_dli_count;
byte a8_dli_lines = 1; /* DLI bits in the installed list */
@@ -69,7 +75,6 @@ static void a8_set_dmactl(byte v) {
}
void a8_dlist_reset(void) {
a8_dlist = a8_dlist_store;
a8_dlist_len = 0;
a8_dli_count = 0;
a8_dli_lines = 1;
@@ -123,8 +128,13 @@ void a8_dlist_install(void) {
*(byte*)A8_SDLSTL_ADDR = (byte)(a & 0xff);
*(byte*)A8_SDLSTH_ADDR = (byte)(a >> 8);
#else
#ifdef __CC65__
OS.sdlstl = (byte)(a & 0xff);
OS.sdlsth = (byte)(a >> 8);
#else
OS._sdl._st.stl = (byte)(a & 0xff);
OS._sdl._st.sth = (byte)(a >> 8);
#endif
#endif
ANTIC.dlistl = (byte)(a & 0xff);
ANTIC.dlisth = (byte)(a >> 8);
@@ -195,6 +205,20 @@ void a8_dli_remove(void) {
ANTIC.nmien = NMIEN_VBI;
}
#ifdef __OSCAR64C__
__hwinterrupt void a8_dli_stub() {
if (a8_dli_line >= a8_dli_lines) a8_dli_line = 0;
byte* w = &a8_dli_tab[a8_dli_line][0];
for (byte i = 0; i < A8_DLI_WRITES; i++) {
byte r = w[0];
if (r == 0xff) break;
*a8_dli_regs[r] = w[1];
w += 2;
}
music_duty();
a8_dli_line++;
}
#endif
/*==========================================================================*/
/* Scrolling */
@@ -266,12 +290,16 @@ void a8_scroll_set(byte x, byte y, byte stride) {
/*==========================================================================*/
/* Need 2K for a single-line P/M area, plus up to 2K of alignment slack. */
#ifdef __CC65__
#if defined(__ATARI5200__)
static byte* a8_pmg_store = (byte*)0x1800;
static byte* a8_pmg_base = (byte*)0x1800;
#else
static byte* a8_pmg_store = (byte*)0x9800;
static byte* a8_pmg_base = (byte*)0x9800;
#endif
#else
byte a8_pmg_base[0x800];
#pragma align(a8_pmg_base, 0x800)
#endif
static byte* a8_pmg_base;
static byte a8_pmg_mode;
byte* a8_pmg_player(byte i) {
@@ -286,15 +314,12 @@ byte* a8_pmg_missile(byte i) {
}
void a8_pmg_clear(void) {
byte* p = a8_pmg_base;
word n;
for (n = 0; n < 0x800; n++) p[n] = 0;
memset(a8_pmg_base, 0, 0x800);
}
void a8_pmg_init(byte mode) {
word i;
a8_pmg_mode = mode;
a8_pmg_base = a8_pmg_store;
a8_pmg_clear();
GTIA_WRITE.gractl = 0; /* disable while we set up */
ANTIC.pmbase = (byte)((word)a8_pmg_base >> 8);
@@ -381,6 +406,7 @@ void a8_pokey_stop_all(void) {
for (i = 0; i < 4; i++) a8_pokey_stop(i);
}
#ifdef __CC65__
/* called from set_irq() */
unsigned char a8_pokey_music_update() {
music_tick();
@@ -395,6 +421,24 @@ void a8_pokey_music_init(void) {
void a8_pokey_music_done(void) {
reset_irq();
}
#endif
#ifdef __OSCAR64C__
void a8_pokey_music_update() {
__asm { pha; txa; pha; tya; pha; } // save regs
music_tick();
music_duty();
__asm { pla; tay; pla; tax; pla; } // restore regs
}
void a8_pokey_music_init(void) {
OS.vvblki = a8_pokey_music_update;
}
void a8_pokey_music_done(void) {
//reset_irq();
}
#endif
/*==========================================================================*/
/* Colors */
+6 -1
View File
@@ -52,7 +52,7 @@ typedef unsigned int word;
/*==========================================================================*/
/* Buffer is a runtime-aligned array; use a8_dlist_reset() before building. */
extern byte* a8_dlist; /* pointer to the aligned display list */
//extern byte* a8_dlist; /* pointer to the aligned display list */
extern byte a8_dlist_len; /* current length in bytes */
extern byte a8_dli_count; /* number of DLI bits emitted so far */
@@ -122,8 +122,13 @@ extern void (*a8_dli_hook)(void);
void a8_dli_install(void);
void a8_dli_remove(void);
#ifdef __CC65__
/* The assembler trampoline from common_irq.s. */
extern void a8_dli_stub(void);
#else
extern __hwinterrupt void a8_dli_stub(void);
#endif
/* C dispatcher called by the trampoline. */
void a8_dli_dispatch(void);
+98
View File
@@ -0,0 +1,98 @@
// Hello World for the Oscar64 optimizing C compiler
// https://github.com/drmortalwombat/oscar64
#include <stdio.h>
#include <conio.h>
#include "atari.h"
#include "common.h"
//#link "common.c"
//#link "pokeymusic.cpp"
/* 24 rows x 40 columns of text screen codes. */
static byte screen[24][40];
/* can't cross a 4K boundary */
#pragma align(screen, 0x1000)
/* Player 0 shape: a small ball. */
static const byte ball[8] = {
0x18, 0x3c, 0x7e, 0xff, 0xff, 0x7e, 0x3c, 0x18
};
// MUSIC DATA -- "The Easy Winners" by Scott Joplin
static const byte music1[] = {
0x2a,0x1e,0x95,0x33,0x27,0x9f,0x31,0x25,0x8a,0x2f,0x23,0x8b,0x2e,0x22,0x89,0x2c,0x20,0x8b,0x2a,0x1e,0x95,0x28,0x1c,0x8a,0x27,0x1b,0x95,0x25,0x19,0x8b,0x23,0x17,0x89,0x22,0x12,0x8b,0x23,0x8a,0x25,0x8b,0x27,0x89,0x28,0x1e,0x8c,0x2a,0x1c,0x89,0x2c,0x1b,0x8c,0x2e,0x19,0x89,0x2f,0x17,0x95,0x27,0x23,0x1e,0x95,0x12,0x95,0x23,0x1e,0x27,0x95,0x2f,0x33,0x17,0x95,0x2f,0x33,0x27,0x94,0x12,0x95,0x33,0x36,0x23,0x95,0x38,0x32,0x17,0x8b,0x33,0x36,0x89,0x1e,0x27,0x23,0x8b,0x38,0x32,0x8a,0x33,0x36,0x12,0x8b,0x32,0x38,0x89,0x36,0x33,0x27,0x95,0x3d,0x37,0x10,0x8b,0x3b,0x38,0x8a,0x20,0x23,0x28,0x8b,0x37,0x3d,0x89,0x38,0x3b,0x10,0x8b,0x37,0x3d,0x8a,0x3b,0x38,0x28,0x8b,0x36,0x33,0x8a,0x17,0x95,0x2a,0x1e,0x23,0x8b,0x2c,0x89,0x2e,0x12,0x8b,0x2f,0x8a,0x31,0x27,0x23,0x8b,0x32,0x89,0x2f,0x33,0x17,0x95,0x33,0x2f,0x1e,0x95,0x12,0x94,0x36,0x33,0x1e,0x95,0x32,0x38,0x17,0x8b,0x36,0x33,0x89,0x23,0x1e,0x27,0x8b,0x38,0x32,0x8a,0x33,0x36,0x18,0x8b,0x33,0x36,0x8a,0x33,0x36,0x2a,0x95,0x36,0x19,0x8b,0x31,0x2e,0x89,0x25,0x22,0x2a,0x8b,0x36,0x8a,0x2f,0x35,0x19,0x8b,0x36,0x89,0x38,0x2f,0x29,0x95,0x2e,0x36,0x1e,0x95,0x1c,0x28,0x95,0x27,0x1b,0x8b,0x2a,0x8a,0x2e,0x25,0x19,0x8b,0x34,0x89,0x33,0x2f,0x23,0x95,0x33,0x2f,0x1e,0x95,0x12,0x94,0x33,0x36,0x23,0x95,0x32,0x38,0x17,0x8b,0x33,0x36,0x8a,0x23,0x27,0x1e,0x8b,0x38,0x32,0x89,0x36,0x33,0x12,0x8b,0x32,0x38,0x8a,0x33,0x36,0x1e,0x94,0x37,0x3d,0x10,0x8b,0x3b,0x38,0x8a,0x23,0x28,0x20,0x8b,0x3d,0x37,0x89,0x3b,0x38,0x1c,0x8b,0x38,0x3b,0x8a,0x3a,0x3d,0x38,0x8b,0x3f,0x37,0x3a,0x89,0x27,0x1b,0x8b,0x33,0x8a,0x37,0x22,0x16,0x8b,0x3a,0x8a,0x3f,0x0f,0x1b,0x95,0x3a,0x8b,0x3b,0x8a,0x3d,0x37,0x1c,0x8b,0x3b,0x38,0x89,0x23,0x28,0x20,0x8b,0x3d,0x37,0x8a,0x38,0x3b,0x10,0x8b,0x3d,0x37,0x89,0x38,0x3b,0x20,0x8b,0x36,0x33,0x8a,0x17,0x23,0x8b,0x38,0x34,0x8a,0x33,0x36,0x1e,0x8b,0x31,0x34,0x8a,0x2f,0x33,0x17,0x8b,0x36,0x33,0x8a,0x23,0x27,0x1e,0x8b,0x33,0x36,0x8a,0x36,0x30,0x12,0x8a,0x34,0x31,0x8a,0x1e,0x28,0x22,0x8b,0x30,0x36,0x89,0x34,0x31,0x12,0x8b,0x2e,0x28,0x33,0x8a,0x31,0x28,0x2e,0x95,0x27,0x2f,0x1e,0x95,0x12,0x95,0x14,0x94,0x16,0x95,0x2f,0x33,0x17,0x95,0x2f,0x33,0x27,0x94,0x12,0x95,0x36,0x33,0x23,0x95,0x32,0x38,0x17,0x8a,0x33,0x36,0x8a,0x23,0x27,0x1e,0x8b,0x32,0x38,0x8a,0x33,0x36,0x12,0x8b,0x38,0x32,0x8a,0x36,0x33,0x27,0x95,0x3d,0x37,0x10,0x8a,0x3b,0x38,0x8a,0x23,0x28,0x20,0x8b,0x37,0x3d,0x89,0x3b,0x38,0x10,0x8b,0x37,0x3d,0x8a,0x38,0x3b,0x23,0x8b,0x36,0x33,0x8a,0x17,0x95,0x2a,0x1e,0x23,0x8b,0x2c,0x8a,0x2e,0x12,0x8b,0x2f,0x89,0x31,0x23,0x1e,0x8b,0x32,0x8a,0x33,0x2f,0x17,0x95,0x2f,0x33,0x1e,0x94,0x12,0x95,0x36,0x33,0x27,0x95,0x38,0x32,0x17,0x8a,0x36,0x33,0x8a,0x23,0x1e,0x27,0x8b,0x38,0x32,0x89,0x33,0x36,0x18,0x8c,0x36,0x33,0x89,0x33,0x36,0x21,0x95,0x36,0x19,0x8b,0x2e,0x31,0x8a,0x25,0x2a,0x22,0x8b,0x36,0x89,0x35,0x2f,0x19,0x8b,0x36,0x8a,0x2f,0x38,0x25,0x94,0x36,0x2e,0x2a,0x95,0x1c,0x28,0x95,0x27,0x1b,0x8c,0x2a,0x89,0x2e,0x25,0x19,0x8b,0x34,0x8a,0x33,0x2f,0x23,0x95,0x2f,0x33,0x1e,0x94,0x12,0x95,0x33,0x36,0x23,0x95,0x32,0x38,0x17,0x8a,0x33,0x36,0x8a,0x23,0x1e,0x27,0x8b,0x32,0x38,0x89,0x36,0x33,0x12,0x8c,0x32,0x38,0x89,0x33,0x36,0x1e,0x95,0x37,0x3d,0x10,0x8b,0x3b,0x38,0x8a,0x23,0x20,0x28,0x8a,0x3d,0x37,0x8a,0x38,0x3b,0x1c,0x8b,0x3b,0x38,0x8a,0x3d,0x38,0x3a,0x8b,0x3a,0x3f,0x37,0x89,0x27,0x1b,0x8b,0x33,0x8a,0x37,0x22,0x16,0x8b,0x3a,0x8a,0x3f,0x0f,0x1b,0x95,0x3a,0x8b,0x3b,0x8a,0x3d,0x37,0x1c,0x8b,0x3b,0x38,0x8a,0x20,0x28,0x23,0x8b,0x3d,0x37,0x89,0x38,0x3b,0x10,0x8b,0x3d,0x37,0x8a,0x38,0x3b,0x20,0x8b,0x33,0x36,0x89,0x17,0x23,0x8b,0x38,0x34,0x8a,0x36,0x33,0x23,0x8b,0x34,0x31,0x89,0x2f,0x33,0x17,0x8c,0x36,0x33,0x89,0x1e,0x27,0x23,0x8c,0x33,0x36,0x89,0x36,0x30,0x12,0x8b,0x34,0x31,0x8a,0x1e,0x28,0x22,0x8a,0x30,0x36,0x8a,0x34,0x31,0x1e,0x8b,0x28,0x2e,0x33,0x89,0x28,0x31,0x2e,0x95,0x27,0x2f,0x17,0x95,0x12,0x1e,0x95,0x3b,0x36,0x33,0x96,0x2a,0x8b,0x2b,0x8a,0x2c,0x1e,0x12,0x8b,0x2d,0x89,0x2e,0x28,0x1e,0x8b,0x2e,0x31,0x8a,0x16,0x22,0x8b,0x36,0x89,0x34,0x1e,0x22,0x8b,0x31,0x8a,0x2c,0x25,0x19,0x8b,0x2d,0x89,0x2e,0x28,0x25,0x8b,0x33,0x2e,0x8a,0x25,0x19,0x8c,0x31,0x89,0x2c,0x1a,0x26,0x8b,0x2e,0x8a,0x2f,0x1b,0x27,0x8b,0x2a,0x89,0x2c,0x23,0x1e,0x8b,0x2e,0x8a,0x2f,0x12,0x1e,0x8b,0x30,0x89,0x31,0x27,0x23,0x8b,0x32,0x8a,0x33,0x17,0x23,0x8b,0x32,0x8a,0x33,0x1e,0x23,0x8b,0x38,0x33,0x8a,0x1e,0x12,0x8b,0x36,0x8a,0x31,0x1e,0x23,0x8b,0x33,0x89,0x34,0x25,0x19,0x8b,0x3d,0x89,0x1e,0x28,0x22,0x8b,0x33,0x89,0x34,0x12,0x1e,0x8b,0x3d,0x8a,0x1e,0x22,0x28,0x8a,0x33,0x8a,0x34,0x19,0x25,0x8b,0x3d,0x89,0x28,0x1e,0x22,0x8b,0x3b,0x89,0x3a,0x1e,0x12,0x8b,0x38,0x8a,0x36,0x22,0x16,0x8b,0x34,0x8a,0x33,0x23,0x17,0x8b,0x3b,0x8a,0x1e,0x23,0x27,0x8a,0x32,0x8a,0x33,0x12,0x1e,0x8b,0x3b,0x89,0x27,0x23,0x1e,0x8b,0x32,0x89,0x33,0x23,0x17,0x8b,0x3b,0x89,0x1e,0x23,0x27,0x8b,0x38,0x8a,0x36,0x12,0x1e,0x8b,0x33,0x89,0x31,0x1e,0x27,0x8b,0x2f,0x8a,0x2e,0x20,0x14,0x8b,0x2f,0x8a,0x30,0x2a,0x24,0x8b,0x30,0x38,0x8a,0x24,0x18,0x8b,0x36,0x89,0x33,0x24,0x20,0x8b,0x30,0x8a,0x2e,0x27,0x1b,0x8b,0x2f,0x89,0x30,0x24,0x2a,0x8b,0x30,0x38,0x8a,0x20,0x14,0x8b,0x33,0x36,0x8a,0x38,0x30,0x24,0x8b,0x33,0x36,0xLine truncated
};
static void fill_screen(void) {
byte y, x;
for (y = 0; y < 24; y++)
for (x = 0; x < 40; x++)
screen[y][x] = (byte)(0x20 + ((x + y) & 0x0f));
}
static void build_display(void) {
byte i, d;
a8_dlist_reset();
a8_dlist_blank(24);
/* First text line carries the LMS pointer and the first DLI band. */
d = a8_dlist_line(DL_CHR40x8x1, screen, 1);
a8_dli_set(d, A8_REG_COLBK, A8_COLOR(HUE_GREY, 0));
a8_dli_set(d, A8_REG_COLPF2, A8_COLOR(HUE_GREY, 6));
for (i = 1; i < 23; i++) {
byte on = (byte)(i == 6 || i == 12 || i == 18);
d = a8_dlist_line(DL_CHR40x8x1, 0, on);
if (on) {
byte band = (byte)(i / 6);
a8_dli_set(d, A8_REG_COLBK, (byte)(A8_COLOR(band * 4, 1)));
a8_dli_set(d, A8_REG_COLPF2, (byte)(A8_COLOR(band * 4 + 2, 6)));
}
}
a8_dlist_line(DL_CHR20x16x2, 0, 1); // make last line bigger
a8_dlist_finish();
}
int main() {
static byte x = 128;
static char dx = 2;
fill_screen();
build_display();
/* Character set page (E000 on the 800, F800 on the 5200). */
#if defined(__ATARI5200__)
ANTIC.chbase = 0xf8;
#else
ANTIC.chbase = 0xe0;
#endif
a8_dlist_install();
a8_dli_install();
a8_pmg_init(A8_PMG_DOUBLE);
a8_pmg_set_x(0, x);
a8_pmg_set_color(0, A8_COLOR(HUE_GREY, 0x0f));
a8_pmg_set_size(0, A8_PMG_NORMAL);
a8_pmg_set_shape(0, ball, sizeof(ball), 0x38);
// set interrupt and start music
a8_pokey_init();
a8_pokey_music_init();
music_start(music1);
while (1) {
a8_waitvsync();
x += dx;
if (x < 48) { x = 48; dx = 2; }
if (x > 208) { x = 208; dx = -2; }
a8_pmg_set_x(0, x);
if (a8_trigger(0)) {
a8_pmg_set_size(0, A8_PMG_QUADW);
} else {
a8_pmg_set_size(0, A8_PMG_NORMAL);
}
}
return 0;
}
+186
View File
@@ -0,0 +1,186 @@
/*
* pokeymusic.cpp - POKEY music player for the Atari 8-bit.
*
* oscar64 C++ port of pokeymusic.ca65. It exports the same entry points
* that common.h declares, so an oscar64 program can link this file instead
* of the ca65 original:
*
* //#link "pokeymusic.cpp"
* music_start(song);
* // call music_tick() and music_duty() from an interrupt
*
* The ca65 version parks its song pointer in zero page ($fe) because cc65's
* set_irq() saves and restores the whole zero page. Here it is an ordinary
* static pointer, so it survives an oscar64 __interrupt routine untouched.
*/
typedef unsigned char byte;
/* POKEY registers: the 800 decodes POKEY at $d2xx, the 5200 at $e8xx. */
#if defined(__ATARI5200__)
#define A8_AUDF ((volatile byte*)0xe800)
#define A8_AUDC ((volatile byte*)0xe801)
#define A8_AUDCTL (*(volatile byte*)0xe808)
#else
#define A8_AUDF ((volatile byte*)0xd200)
#define A8_AUDC ((volatile byte*)0xd201)
#define A8_AUDCTL (*(volatile byte*)0xd208)
#endif
/* Player state. volatile because the music interrupt writes it while the
main program reads it (e.g. through music_get_ptr / music_is_done). */
static volatile byte chan_dur[4]; /* current note duration per channel */
static volatile byte chan_note[4]; /* current note pitch per channel */
static volatile byte chan_duty[4]; /* current duty-cycle bits per channel */
static volatile byte duration_timer; /* ticks until the next command */
static volatile byte cur_channel; /* next channel to add a note */
static volatile byte volume; /* volume of a new note */
static const byte* volatile song_ptr; /* next byte in the song data */
/* AUDF base value for each note (0-63). */
static const byte freqz[64] = {
254, 254, 254, 255, 240, 227, 214, 202,
190, 180, 169, 160, 151, 142, 134, 127,
119, 113, 106, 100, 94, 89, 84, 79,
75, 70, 66, 63, 59, 56, 52, 49,
47, 44, 41, 39, 37, 34, 32, 31,
29, 27, 25, 24, 23, 21, 20, 19,
18, 17, 16, 15, 14, 13, 12, 11,
11, 10, 9, 9, 8, 8, 7, 7
};
/* Duty-cycle rotation bits for each note. */
static const byte dutyz[64] = {
0, 0, 0, 0, 181, 1, 17, 1,
219, 0, 239, 17, 17, 181, 181, 0,
239, 0, 181, 181, 239, 85, 73, 181,
1, 239, 219, 0, 73, 0, 239, 219,
0, 17, 219, 73, 0, 239, 239, 0,
17, 85, 239, 73, 0, 181, 73, 1,
0, 0, 0, 0, 1, 17, 85, 219,
0, 73, 181, 1, 85, 0, 85, 0
};
/* Load a new note onto a channel. */
static void music_do_note(byte chan, byte note)
{
chan_note[chan] = freqz[note];
chan_duty[chan] = dutyz[note];
chan_dur[chan] = volume;
}
/* Hook called at end of song; present in the ca65 version as a stub. */
static void music_done(void)
{
}
/* Rotate each channel's duty bits and fold the bit that falls off the top
into AUDF, which gives the notes their pulse-width flavour. */
/*
void music_duty(void)
{
byte y = 0;
for (byte x = 4; x-- != 0; y += 2) {
if (chan_dur[x] != 0) {
byte d = chan_duty[x];
byte c = (byte)(d >> 7);
chan_duty[x] = (byte)((d << 1) | c);
if (chan_note[x] != 0)
A8_AUDF[y] = (byte)(chan_note[x] + c);
}
}
}
*/
void music_duty(void) {
__asm {
ldx #3
ldy #0
loop:
lda chan_dur,x
beq notplaying
lda chan_duty,x
asl
bcc nobit
ora #1
nobit:
sta chan_duty,x
lda chan_note,x
beq notplaying
// If next bit is set, add 1 to AUDF0
adc #0
#if defined(__ATARI5200__)
sta $e800,y
#else
sta $d200,y
#endif
notplaying:
iny
iny
dex
bpl loop
rts
}
}
/* Decrement the per-channel volumes and the next-note timer, and pull the
next command out of the song when the timer runs out. */
void music_tick(void)
{
byte y = 0;
for (byte x = 4; x-- != 0; y += 2) {
if (chan_dur[x] != 0) {
A8_AUDC[y] = (byte)((chan_dur[x] >> 1) | 0xa0);
chan_dur[x]--;
}
}
if (duration_timer & 0x80)
return; /* end of song, stop fetching */
if (duration_timer != 0) {
duration_timer--;
return;
}
/* Timer expired: consume note bytes until a duration byte shows up. */
for (;;) {
byte b = song_ptr[0];
if (b & 0x80) {
if (b == 0xff) {
duration_timer = b; /* stays $ff so music_is_done() is true */
music_done();
return;
}
duration_timer = (byte)(b & 0x7f);
song_ptr++;
return;
}
music_do_note(cur_channel, b);
cur_channel = (byte)((cur_channel + 1) & 3);
song_ptr++;
}
}
/* Start playing the song at song. */
void music_start(const char* song)
{
song_ptr = (const byte*)song;
volume = 24;
duration_timer = 0;
cur_channel = 0;
for (byte x = 4; x-- != 0; )
chan_dur[x] = 0;
A8_AUDCTL = 0x01;
}
/* Current position in the song data. */
char* music_get_ptr(void)
{
return (char*)song_ptr;
}
/* Nonzero once the song reaches its $ff terminator. */
char music_is_done(void)
{
return (song_ptr[0] == 0xff) ? 1 : 0;
}
+25 -1
View File
@@ -132,6 +132,10 @@ export interface ToolMeta {
includePatterns?: (RegExp | ToolIncludePattern)[];
/** regexes matching link directives, used for dependency parsing */
linkPatterns?: (RegExp | ToolIncludePattern)[];
/** true if "//#link" dependencies are compiled together with the main
* source in one tool invocation (single-pass compilers like oscar64)
* rather than built separately and linked. */
compileLinkedSources?: boolean;
/** directories inside the shared filesystem containing searchable shared code
* (headers, asm includes). Paths are relative to the FS root as they appear
* in the filesystem metadata, e.g. ['/include', '/asminc', '/headers'].
@@ -167,6 +171,14 @@ export const SHARED_INCLUDE_PATTERNS: RegExp[] = [
/^\s*([;']|[/][/])#(resource)\s+"(.+?)"/gm,
];
// oscar64: #pragma compile("file.c") pulls another source file into the build
// (the compiler's equivalent of a link). The compiler handles it itself, so the
// file just has to be a build dependency copied into the tool filesystem.
export const OSCAR64_INCLUDE_PATTERNS: (RegExp | ToolIncludePattern)[] = [
...SHARED_INCLUDE_PATTERNS,
/^\s*#pragma\s+compile\s*\(\s*"([^"]+)"\s*\)/gmi,
];
// C / most assemblers: //#link "file" (or ;link)
export const SHARED_LINK_PATTERNS: RegExp[] = [
/^\s*([;]|[/][/])#link\s+"(.+?)"/gm,
@@ -561,8 +573,9 @@ export const TOOL_META: { [id: string]: ToolMeta } = {
defineFlag: '-d', defineInline: true,
wasmModule: 'oscar64',
version: '1.32.266',
includePatterns: SHARED_INCLUDE_PATTERNS,
includePatterns: OSCAR64_INCLUDE_PATTERNS,
linkPatterns: SHARED_LINK_PATTERNS,
compileLinkedSources: true,
platforms: {
// oscar64 defaults to the C64 target machine
c64: {},
@@ -908,6 +921,17 @@ export function getLinkPatterns(tool: string, platform?: string): (RegExp | Tool
return SHARED_LINK_PATTERNS;
}
/**
* True if "//#link" dependencies are compiled together with the main source in
* one tool invocation (single-pass compilers like oscar64) rather than built
* separately and linked. The build message then carries them as `linkfiles`
* on the main step so the tool can pass them all to one invocation.
*/
export function getCompileLinkedSources(tool: string): boolean {
let meta = tool && getToolMeta(tool);
return !!(meta && meta.compileLinkedSources);
}
/**
* Directories containing shared code (headers etc.) for this tool's shared
* filesystem, e.g. ['/include','/asminc','/headers'] -- empty if none/unknown.
+7
View File
@@ -104,6 +104,9 @@ export interface BuildSymbolLists {
export interface WorkerBuildStep {
path?:string
files?:string[]
/** linked source files ("//#link") to compile in the same invocation as
* the main file, for single-pass tools -- see ToolMeta.compileLinkedSources */
linkfiles?:string[]
platform:string
tool:string
mainfile?:boolean
@@ -149,6 +152,10 @@ export interface CodeListing {
text?:string
sourcefile?:SourceFile // not returned by worker
assemblyfile?:SourceFile // not returned by worker
/** per-source-file views of `lines`, for tools (e.g. oscar64) whose single
* listing mixes lines from many sources tagged with a path; not returned
* by worker */
sourcefiles?:{[path:string]:SourceFile}
}
export type CodeListingMap = {[path:string]:CodeListing};
+58 -10
View File
@@ -1,9 +1,9 @@
import localforage from "localforage";
import { Platform } from "../common/baseplatform";
import { getBasePlatform, getFilenamePrefix, getFolderForPath, getWithBinary, isProbablyBinary } from "../common/util";
import { getIncludePatterns, getLinkPatterns, matchDependencyPatterns } from "../common/toolmeta";
import { BuildArgLists, BuildSymbolLists, CodeListing, CodeListingMap, Dependency, FileData, Segment, SourceFile, WorkerErrorResult, WorkerItemUpdate, WorkerMessage, WorkerOutputResult, WorkerResult, isErrorResult, isOutputResult } from "../common/workertypes";
import { getBasePlatform, getFilenameForPath, getFilenamePrefix, getFolderForPath, getWithBinary, isProbablyBinary } from "../common/util";
import { getCompileLinkedSources, getIncludePatterns, getLinkPatterns, matchDependencyPatterns } from "../common/toolmeta";
import { BuildArgLists, BuildSymbolLists, CodeListing, CodeListingMap, Dependency, FileData, Segment, SourceFile, SourceLine, WorkerErrorResult, WorkerItemUpdate, WorkerMessage, WorkerOutputResult, WorkerResult, isErrorResult, isOutputResult } from "../common/workertypes";
export interface ProjectFilesystem {
getFileData(path: string): Promise<FileData>;
@@ -278,11 +278,18 @@ export class CodeProject {
this.filename2path[mainfilename] = this.mainPath;
const tool = this.getToolForFilename(this.mainPath);
let usesRemoteTool = tool.startsWith('remote:');
// Single-pass tools (oscar64) compile their linked sources in the same
// invocation as the main file, so those files travel in the main step.
let compileLinkedSources = getCompileLinkedSources(tool);
let linkfiles: string[] = [];
for (var dep of depends) {
// remote tools send both includes and linked files in one build step
if (!dep.link || usesRemoteTool) {
if (!dep.link || usesRemoteTool || compileLinkedSources) {
msg.updates.push({ path: dep.filename, data: dep.data });
depfiles.push(dep.filename);
if (dep.link && compileLinkedSources && linkfiles.indexOf(dep.filename) < 0) {
linkfiles.push(dep.filename);
}
}
this.filename2path[dep.filename] = dep.path;
}
@@ -293,11 +300,12 @@ export class CodeProject {
tool: this.getToolForFilename(this.mainPath),
mainfile: true,
};
if (linkfiles.length) mainstep.linkfiles = linkfiles;
if (this.buildSymbols) mainstep.symbols = this.buildSymbols;
if (this.buildArgs) mainstep.buildArgs = this.buildArgs;
msg.buildsteps.push(mainstep);
for (var dep of depends) {
if (dep.data && dep.link) {
if (dep.data && dep.link && !compileLinkedSources) {
this.preloadWorker(dep.filename);
msg.updates.push({ path: dep.filename, data: dep.data });
msg.buildsteps.push({
@@ -402,8 +410,24 @@ export class CodeProject {
this.listings = data.listings;
for (var lstname in this.listings) {
var lst = this.listings[lstname];
if (lst.lines)
if (lst.lines) {
lst.sourcefile = new SourceFile(lst.lines, lst.text);
// A single-pass tool (oscar64) emits one listing that mixes source
// lines from the main file and every linked library, each tagged
// with its own path. Split them so each editor can find the lines
// for its own file (see getListingForFile).
var bypath: { [path: string]: SourceLine[] } = {};
for (var info of lst.lines) {
var p = info.path || '';
(bypath[p] || (bypath[p] = [])).push(info);
}
var paths = Object.keys(bypath);
if (paths.length > 1 || (paths.length == 1 && paths[0] != '')) {
lst.sourcefiles = {};
for (var p of paths)
lst.sourcefiles[p] = new SourceFile(bypath[p], lst.text);
}
}
if (lst.asmlines)
lst.assemblyfile = new SourceFile(lst.asmlines, lst.text);
}
@@ -436,18 +460,42 @@ export class CodeProject {
// ignore include files (TODO)
//if (path.toLowerCase().endsWith('.h') || path.toLowerCase().endsWith('.inc'))
//return;
var fnprefix = getFilenamePrefix(this.stripLocalPath(path));
var stripped = this.stripLocalPath(path);
var fnprefix = getFilenamePrefix(stripped);
// find listing with matching prefix
var listings = this.getListings();
for (var lstfn in listings) {
if (lstfn == path)
return listings[lstfn];
if (lstfn == path || lstfn == stripped)
return this.withSourceFileForPath(listings[lstfn], stripped);
}
for (var lstfn in listings) {
if (getFilenamePrefix(lstfn) == fnprefix) {
return listings[lstfn];
return this.withSourceFileForPath(listings[lstfn], stripped);
}
}
// no listing named after this file; it may be one source among many in a
// single mixed listing (e.g. an oscar64 "//#link"ed source)
for (var lstfn in listings) {
var sf = this.findSourceFileForPath(listings[lstfn], stripped);
if (sf) return Object.assign({}, listings[lstfn], { sourcefile: sf });
}
}
// return a copy of `lst` whose sourcefile holds only the lines for `path`,
// or `lst` unchanged if it has no per-source-file views
withSourceFileForPath(lst: CodeListing, path: string): CodeListing {
var sf = this.findSourceFileForPath(lst, path);
return sf ? Object.assign({}, lst, { sourcefile: sf }) : lst;
}
// look up the per-source-file view (see processBuildListings) for `path`
findSourceFileForPath(lst: CodeListing, path: string): SourceFile {
if (!lst || !lst.sourcefiles) return null;
var want = getFilenameForPath(getFilenamePrefix(path));
for (var p in lst.sourcefiles) {
if (getFilenameForPath(getFilenamePrefix(p)) == want) return lst.sourcefiles[p];
}
return null;
}
stripLocalPath(path: string): string {
+1 -1
View File
@@ -1709,7 +1709,7 @@ function _addIncludeFile() {
var fn = getCurrentMainFilename();
var tool = platform.getToolForFilename(fn);
// TODO: more tools? make this a function of the platform / tool provider
if (fn.endsWith(".c") || tool == 'sdcc' || tool == 'cc65' || tool == 'cmoc' || tool == 'smlrc')
if (fn.endsWith(".c") || tool == 'sdcc' || tool == 'cc65' || tool == 'cmoc' || tool == 'smlrc' || tool == 'oscar64')
addFileToProject("Header", ".h", (s) => { return '#include "' + s + '"' });
else if (tool == 'dasm' || tool == 'zmac')
addFileToProject("Include", ".inc", (s) => { return '\tinclude "' + s + '"' });
+84 -1
View File
@@ -6,6 +6,22 @@ import { hex } from "../common/util";
import { ANTIC, MODE_LINES, MODE_SHIFT } from "./chips/antic";
import { CONSOL, GTIA, TRIG0 } from "./chips/gtia";
import { POKEY } from "./chips/pokey";
import { DiskImage } from "./atari8disk";
// High-level SIO patch: redirect the OS SIOV vector to a stub in the $D5xx
// mapper area. The stub traps disk-device calls back into JS (via a magic
// write) and falls through to the real SIO routine for everything else.
// We stash the stub at $D5A0 so the XEX loader's stub (which starts at $D500)
// doesn't clobber it.
const SIO_STUB_OFFSET = 0xa0; // $D5A0
const SIO_HOOK_OFFSET = 0xf0; // $D5F0 - write here to call JS
const SIO_STATUS_OFFSET = 0xf1; // $D5F1 - JS puts the SIO status here
// lda $0300; cmp #$31; bcc notdisk; cmp #$40; bcs notdisk;
// sta $D5F0; lda $D5F1; tay; rts; notdisk: jmp $E950
const SIO_STUB = [
0xad, 0x00, 0x03, 0xc9, 0x31, 0x90, 0x0c, 0xc9, 0x40, 0xb0, 0x08,
0x8d, 0xf0, 0xd5, 0xad, 0xf1, 0xd5, 0xa8, 0x60, 0x4c, 0x50, 0xe9,
];
const ATARI8_KEYMATRIX_INTL_NOSHIFT = [
Keys.VK_L, Keys.VK_J, Keys.VK_SEMICOLON, Keys.VK_F4, Keys.VK_F5, Keys.VK_K, Keys.VK_BACK_SLASH, Keys.VK_TILDE,
@@ -71,6 +87,7 @@ export class Atari800 extends BasicScanlineMachine implements AcceptsPaddleInput
cart_80 = false;
cart_a0 = false;
xexdata = null;
disk: DiskImage = null;
keyboard_active = true;
d500 = new Uint8Array(0x100);
// TODO: save/load vars
@@ -117,6 +134,16 @@ export class Atari800 extends BasicScanlineMachine implements AcceptsPaddleInput
loadBIOS(bios: Uint8Array) {
this.bios.set(bios);
this.installSIOStub();
}
installSIOStub() {
// patch the SIOV jump table entry ($E459: JMP $E950) to enter our stub
const o = 0xe459 - 0xd800;
this.bios[o] = 0x4c; // JMP
this.bios[o + 1] = 0xd500 + SIO_STUB_OFFSET & 0xff;
this.bios[o + 2] = (0xd500 + SIO_STUB_OFFSET) >> 8;
this.d500.set(SIO_STUB, SIO_STUB_OFFSET);
}
reset() {
@@ -324,10 +351,17 @@ export class Atari800 extends BasicScanlineMachine implements AcceptsPaddleInput
}
loadROM(rom: Uint8Array, title: string) {
if ((rom[0] == 0xff && rom[1] == 0xff) && !title.endsWith('.rom')) {
if (rom[0] == 0x96 && rom[1] == 0x02) {
// ATR disk image, boot it as drive 1
this.disk = new DiskImage(rom);
this.xexdata = null;
console.log(`ATR disk: ${this.disk.numsectors} sectors x ${this.disk.sectorsize} bytes`);
} else if ((rom[0] == 0xff && rom[1] == 0xff) && !title.endsWith('.rom')) {
// XEX file, chill out and wait for BIOS hook
this.disk = null;
this.xexdata = rom;
} else {
this.disk = null;
this.loadCartridge(rom);
}
}
@@ -357,9 +391,58 @@ export class Atari800 extends BasicScanlineMachine implements AcceptsPaddleInput
if (addr == 0xff) {
if (value == 0x80) this.cart_80 = false;
if (value == 0xa0) this.cart_a0 = false;
} else if (addr == SIO_HOOK_OFFSET) {
this.handleSIO();
}
}
// Called from the patched SIO stub with the SIO parameter block in page 3.
handleSIO() {
const dunit = this.read(0x301);
const dcomnd = this.read(0x302);
const dbuf = this.read(0x304) | (this.read(0x305) << 8);
let dbyt = this.read(0x308) | (this.read(0x309) << 8);
const sector = this.read(0x30a) | (this.read(0x30b) << 8);
const disk = dunit == 1 ? this.disk : null;
let status = 0x01; // SIOSuccess
if (disk == null) {
status = 0x8a; // SIOErrorTimeout (no drive in that unit)
} else {
switch (dcomnd) {
case 0x53: { // STATUS
const dvstat = [0x00, 0xff, 0xe0, 0x00];
const n = Math.min(dbyt || 4, dvstat.length);
for (let i = 0; i < n; i++) this.write(dbuf + i, dvstat[i]);
break;
}
case 0x52: { // READ
if (dbyt == 0) dbyt = disk.sectorsize;
const bytes = disk.readSector(sector, dbyt);
if (bytes == null) {
status = 0x90; // SIOErrorDeviceError
} else {
for (let i = 0; i < dbyt; i++)
this.write(dbuf + i, i < bytes.length ? bytes[i] : 0);
}
break;
}
case 0x57: // WRITE
case 0x50: { // PUT
if (dbyt == 0) dbyt = disk.sectorsize;
const buf = new Uint8Array(dbyt);
for (let i = 0; i < dbyt; i++) buf[i] = this.read(dbuf + i);
if (!disk.writeSector(sector, buf, dbyt)) status = 0x90;
break;
}
default:
status = 0x8b; // SIOErrorNAK (unsupported command)
}
}
// mirror the OS SIO exit: status goes to DSTATS and the stub reads it back
this.write(0x303, status);
this.d500[SIO_STATUS_OFFSET] = status;
}
loadXEX(rom: Uint8Array) {
let ofs = 2;
let stub = this.d500;
+67
View File
@@ -0,0 +1,67 @@
// Minimal Atari 8-bit disk image support.
//
// Parses ATR images (and raw 128-byte-sector .xfd/.dsk images) and exposes
// sector reads/writes. Sector numbers are 1-based to match SIO/DAUX1/DAUX2.
//
// ATR layout: http://www.atarimax.com/jindroush.atari.org/afmtdos.html
// 0 word magic $0296
// 2 word paragraph count (16-byte units, includes the 16-byte header)
// 4 word sector size (128 or 256)
// 6 dword CRC (unused)
// 10 dword unused
// 16 sector data
const ATR_MAGIC = 0x0296;
export class DiskImage {
data: Uint8Array;
sectorsize: number;
numsectors: number;
constructor(data: Uint8Array) {
this.data = data;
if (data.length >= 16 && (data[0] | (data[1] << 8)) == ATR_MAGIC) {
const paragraphs = data[2] | (data[3] << 8);
const total = paragraphs * 16;
const sectorsize = data[4] | (data[5] << 8);
// enhanced-density images declare 256-byte sectors, but the first three
// (boot) sectors are still 128 bytes
this.sectorsize = sectorsize == 256 ? 256 : 128;
if (this.sectorsize == 256) {
this.numsectors = 3 + Math.floor((total - 16 - 3 * 128) / 256);
} else {
this.numsectors = Math.floor((total - 16) / 128);
}
} else {
// raw image, assume single density
this.sectorsize = 128;
this.numsectors = Math.floor(data.length / 128);
}
}
private sectorOffset(sector: number): number {
// sector is 0-based here
if (this.sectorsize == 256) {
if (sector < 3) return 16 + sector * 128;
return 16 + 3 * 128 + (sector - 3) * 256;
}
return 16 + sector * 128;
}
/** Read up to len bytes from 1-based sector, returns null if out of range. */
readSector(sector: number, len: number): Uint8Array {
const idx = sector - 1;
if (idx < 0 || idx >= this.numsectors) return null;
const ofs = this.sectorOffset(idx);
return this.data.subarray(ofs, Math.min(ofs + len, this.data.length));
}
/** Write len bytes into 1-based sector; returns false if out of range. */
writeSector(sector: number, src: Uint8Array, len: number): boolean {
const idx = sector - 1;
if (idx < 0 || idx >= this.numsectors) return false;
const ofs = this.sectorOffset(idx);
this.data.set(src.subarray(0, Math.min(len, this.data.length - ofs)), ofs);
return true;
}
}
+4 -2
View File
@@ -10,13 +10,14 @@ var Atari8_PRESETS : Preset[] = [
{id:'helloconio.c', name:'Text Mode', category:'C'},
{id:'siegegame.c', name:'Siege Game'},
{id:'hellodlist.c', name:'Display List'},
{id:'libdemo.c', name:'Common Library'},
{id:'libdemo.c', name:'Library Demo'},
];
var Atari800_PRESETS = Atari8_PRESETS.concat([
//{id:'testmusic.c', name:'POKEY Music'},
{id:'scrolldemo.c', name:'Scrolling'},
{id:'hello.cpp', name:'Hello Oscar64', category:'C++ (Oscar64)'},
{id:'hello.cpp', name:'Hello Oscar64', category:'Oscar64'},
{id:'libdemo.cpp', name:'Library Demo Oscar64'},
{id:'sieve.bas', name:'Benchmark', category:'FastBasic'},
{id:'pmtest.bas', name:'Sprites Test'},
{id:'dli.bas', name:'DLI Test'},
@@ -156,6 +157,7 @@ class Atari5200MAMEPlatform extends Atari8MAMEPlatform implements Platform {
function atari8_getROMExtension(rom: Uint8Array) {
if (rom == null) return ".bin";
if (rom[0] == 0x96 && rom[1] == 0x02) return ".atr";
if (rom[0] == 0xff && rom[1] == 0xff) return ".xex";
else return ".rom";
}
+28 -12
View File
@@ -8,7 +8,7 @@ import * as path from 'path';
import type { WorkerResult, WorkerMessage, WorkerErrorResult, WorkerOutputResult, Dependency, BuildArgLists, BuildSymbolLists } from "../common/workertypes";
import { getFolderForPath, isProbablyBinary, getBasePlatform, getRootBasePlatform } from "../common/util";
import { getToolForFilename_z80, getToolForFilename_6502, getToolForFilename_6809, getToolForFilename_arm32 } from "../common/baseplatform";
import { ToolIncludePattern, getIncludePatterns, getLinkPatterns, matchDependencyPatterns } from "../common/toolmeta";
import { ToolIncludePattern, getCompileLinkedSources, getIncludePatterns, getLinkPatterns, matchDependencyPatterns } from "../common/toolmeta";
import { setupNodeEnvironment, handleMessage, store } from "../worker/workerlib";
import { PLATFORM_PARAMS } from "../worker/platforms";
import { TOOLS } from "../worker/workertools";
@@ -344,29 +344,45 @@ export async function compileSourceFile(tool: string, platform: string, filePath
}
}
// Single-pass tools (oscar64) compile linked sources in the same invocation
// as the main file instead of building them separately.
var compileLinkedSources = getCompileLinkedSources(tool);
var linkfiles: string[] = [];
if (compileLinkedSources) {
for (var dep of deps) {
if (dep.link && dep.data) {
files.push({ path: dep.filename, data: dep.data });
linkfiles.push(dep.filename);
}
}
}
// Build steps: main file first
var buildsteps: any[] = [];
var mainstep: any = {
path: basename,
files: [basename].concat(depFilenames),
files: [basename].concat(depFilenames, linkfiles),
platform: platform,
tool: tool,
mainfile: true,
};
if (linkfiles.length) mainstep.linkfiles = linkfiles;
if (opts && opts.symbols) mainstep.symbols = opts.symbols;
if (opts && opts.buildArgs) mainstep.buildArgs = opts.buildArgs;
buildsteps.push(mainstep);
// Link dependencies get their own build steps, with tool selected by extension
for (var dep of deps) {
if (dep.link && dep.data) {
files.push({ path: dep.filename, data: dep.data });
buildsteps.push({
path: dep.filename,
files: [dep.filename].concat(depFilenames),
platform: platform,
tool: getToolForFilename(dep.filename, platform),
});
// Other link dependencies get their own build steps, with tool selected by extension
if (!compileLinkedSources) {
for (var dep of deps) {
if (dep.link && dep.data) {
files.push({ path: dep.filename, data: dep.data });
buildsteps.push({
path: dep.filename,
files: [dep.filename].concat(depFilenames),
platform: platform,
tool: getToolForFilename(dep.filename, platform),
});
}
}
}
+11 -2
View File
@@ -50,6 +50,8 @@ export async function compileOscar64(step: BuildStep): Promise<BuildStepResult>
args.push.apply(args, defineArgs('oscar64', step.params && step.params.symbols && step.params.symbols.compiler));
args.push.apply(args, extraArgsFor('oscar64', step.params && step.params.buildArgs));
args.push(step.path);
// linked sources are compiled and linked in this same invocation
if (step.linkfiles) args.push.apply(args, step.linkfiles);
wasi.setArgs(args);
try {
wasi.run();
@@ -60,13 +62,20 @@ export async function compileOscar64(step: BuildStep): Promise<BuildStepResult>
let stderr = wasi.fds[2].getBytesAsString();
console.log('stdout', stdout);
console.log('stderr', stderr);
// (58, 17) : error 3001: Could not open source file. 'stdlib.c'
const matcher = makeErrorMatcher(errors, /\((\d+),\s+(\d+)\)\s+: error (\d+): (.+)/, 1, 4, step.path);
// oscar64 reports the source filename when a build has more than one
// source: "/lib.c(2, 14) : error 3005: ...". Global errors omit it:
// "(58, 17) : error 3001: Could not open source file. 'stdlib.c'".
const matcher = makeErrorMatcher(errors, /^\s*(.*?)\((\d+),\s+(\d+)\)\s+: error (\d+): (.+)/, 2, 5, step.path, 1);
const matcher2 = makeErrorMatcher(errors, /oscar64: error (\d+): (.+)/, 0, 2, step.path);
for (let line of stderr.split('\n')) {
matcher(line);
matcher2(line);
}
// strip the leading '/' oscar64 puts on paths so they match the
// project's filenames (editor error markers match by suffix)
for (let err of errors) {
if (err.path && err.path.startsWith('/')) err.path = err.path.substring(1);
}
if (errors.length) {
return { errors };
}