import{a as t0}from"./chunk-ZE6LZV4I.js";import{B as a0,I as e0,q as $,t as x0,y as U}from"./chunk-ULPRULB6.js";import{J as O,O as b,g as q,i as j,l as W,m as X,s as V,u as l}from"./chunk-RXF2JDJ3.js";import"./chunk-WAARL7ET.js";var z=class extends ${constructor(){super();this.cpuFrequency=1022727;this.sampleRate=this.cpuFrequency;this.cpuCyclesPerLine=65;this.cpuCyclesPerFrame=this.cpuCyclesPerLine*262;this.canvasWidth=280;this.numVisibleScanlines=192;this.numTotalScanlines=262;this.defaultROMSize=77824;this.LOAD_BASE=0;this.HDR_SIZE=0;this.ram=new Uint8Array(77824);this.cpu=new x0;this.grdirty=new Array(49152>>7);this.grparams={dirty:this.grdirty,grswitch:F,mem:this.ram};this.kbdlatch=0;this.soundstate=0;this.auxRAMselected=!1;this.auxRAMbank=1;this.writeinhibit=!0;this.bank2rdoffset=0;this.bank2wroffset=0;this.slots=new Array(8);this.fakeDrive={readROM:x=>{var a=this.cpu.getPC();if(a>=50688&&a<50944)switch(x){case 0:return 0;case 1:return this.LOAD_BASE&255;case 2:return this.LOAD_BASE>>8&255;default:return 0}else switch(x){case 0:return this.rom&&this.loadRAMWithProgram(),76;case 1:return 32;case 3:return 0;case 5:return 3;case 7:return 60;default:return 0}},readConst:x=>0,read:x=>this.floatbus(),write:(x,a)=>{}};this.loadBIOS(new W().decode(X(atob(u0)))),this.connectCPUMemoryBus(this),this.bios[54170-(65536-this.bios.length)]=96}saveState(){return{c:this.cpu.saveState(),ram:this.ram.slice(),kbdlatch:this.kbdlatch,soundstate:this.soundstate,grswitch:this.grparams.grswitch,auxRAMselected:this.auxRAMselected,auxRAMbank:this.auxRAMbank,writeinhibit:this.writeinhibit,slots:this.slots.map(x=>x&&x.saveState&&x.saveState()),inputs:null}}loadState(x){this.cpu.loadState(x.c),this.ram.set(x.ram),this.kbdlatch=x.kbdlatch,this.soundstate=x.soundstate,this.grparams.grswitch=x.grswitch,this.auxRAMselected=x.auxRAMselected,this.auxRAMbank=x.auxRAMbank,this.writeinhibit=x.writeinhibit,this.setupLanguageCardConstants();for(var a=0;a>8!=198);x++);for(var x=0;x<2e6&&(this.cpu.advanceClock(),!(this.cpu.getPC()>>8<198));x++);}readConst(x){if(x<49152)return this.ram[x];if(x>=53248)return this.auxRAMselected?x>=57344?this.ram[x]:this.ram[x+this.bank2rdoffset]:this.bios[x-(65536-this.bios.length)];if(x>=49408&&x<51200){var a=x>>8&7;return(this.slots[a]&&this.slots[a].readConst(x&255))|0}else return 0}read(x){if(x&=65535,x<49152||x>=53248)return this.readConst(x);if(x<49408){this.probe.logIORead(x,0);var a=x>>4&15;switch(a){case 0:return this.kbdlatch;case 1:this.kbdlatch&=127;break;case 3:this.soundstate=this.soundstate^1;break;case 5:(x&15)<8&&((x&1)!=0?this.grparams.grswitch|=1<<(x>>1&7):this.grparams.grswitch&=~(1<<(x>>1&7)));break;case 6:switch(x&7){case 1:case 2:case 3:return this.floatbus()&127;case 4:case 5:return this.floatbus()|128;default:return this.floatbus()}case 7:if(x==49264)return this.floatbus()|128;case 8:return this.doLanguageCardIO(x);case 9:case 10:case 11:case 12:case 13:case 14:case 15:return(this.slots[a-8]&&this.slots[a-8].read(x&15))|0}}else if(x>=49408&&x<51200){var a=x>>8&7;return(this.slots[a]&&this.slots[a].readROM(x&255))|0}return this.floatbus()}write(x,a){if(x&=65535,a&=255,x<49152)this.ram[x]=a,this.grdirty[x>>7]=1;else if(x<49280)this.read(x);else if(x<49408){var e=x>>4&15;this.slots[e-8]&&this.slots[e-8].write(x&15,a),this.probe.logIOWrite(x,a)}else x>=53248&&!this.writeinhibit&&(x>=57344?this.ram[x]=a:this.ram[x+this.bank2wroffset]=a)}floatbus(){var x=this.frameCycles,a=Math.floor(x/65),e=Math.floor(x%65),m=this.ap2disp.getAddressForScanline(a);return this.readConst(m+e)}connectVideo(x){super.connectVideo(x),this.ap2disp=this.pixels&&new A0(this.pixels,this.grparams)}startScanline(){}drawScanline(){}advanceFrame(x){var a=super.advanceFrame(x);return this.ap2disp&&this.ap2disp.updateScreen(),a}advanceCPU(){return this.audio.feedSample(this.soundstate,1),super.advanceCPU()}setKeyInput(x,a,e){if(e&b.KeyDown){switch(a=0,x){case 16:case 17:case 18:break;case 8:if(a=8,e&b.Shift){this.cpu.reset();return}break;case 13:a=13;break;case 27:a=27;break;case 37:a=8;break;case 39:a=21;break;case 38:a=11;break;case 40:a=10;break;case 48:e&b.Shift&&(a=41);break;case 49:e&b.Shift&&(a=33);break;case 50:e&b.Shift&&(a=64);break;case 51:e&b.Shift&&(a=35);break;case 52:e&b.Shift&&(a=36);break;case 53:e&b.Shift&&(a=37);break;case 54:e&b.Shift&&(a=94);break;case 55:e&b.Shift&&(a=38);break;case 56:e&b.Shift&&(a=42);break;case 57:e&b.Shift&&(a=40);break;case 61:a=e&b.Shift?43:61;break;case 173:a=e&b.Shift?95:45;break;case 59:a=e&b.Shift?58:59;break;case 188:a=e&b.Shift?60:44;break;case 190:a=e&b.Shift?62:46;break;case 191:a=e&b.Shift?63:47;break;case 222:a=e&b.Shift?34:39;break;default:a=x,a>=97&&a<=122&&(a-=32),a>=65&&a<65+26&&e&b.Ctrl&&(a-=64)}a&&(this.kbdlatch=(a|128)&255)}}doLanguageCardIO(x){switch(x&15){case 0:case 4:this.auxRAMselected=!0,this.auxRAMbank=2,this.writeinhibit=!0;break;case 1:case 5:this.auxRAMselected=!1,this.auxRAMbank=2,this.writeinhibit=!1;break;case 2:case 6:case 10:case 14:this.auxRAMselected=!1,this.writeinhibit=!0;break;case 3:case 7:this.auxRAMselected=!0,this.auxRAMbank=2,this.writeinhibit=!1;break;case 8:case 12:this.auxRAMselected=!0,this.auxRAMbank=1,this.writeinhibit=!0;break;case 9:case 13:this.auxRAMselected=!1,this.auxRAMbank=1,this.writeinhibit=!1;break;case 11:case 15:this.auxRAMselected=!0,this.auxRAMbank=1,this.writeinhibit=!1;break}return this.setupLanguageCardConstants(),this.floatbus()}setupLanguageCardConstants(){this.auxRAMbank==2?this.bank2rdoffset=-4096:this.bank2rdoffset=12288,this.auxRAMbank==2?this.bank2wroffset=-4096:this.bank2wroffset=12288}getDebugCategories(){return["CPU","Stack","I/O","Disk"]}getDebugInfo(x,a){switch(x){case"I/O":return"AUX RAM Bank: "+a.auxRAMbank+` AUX RAM Select: `+a.auxRAMselected+` AUX RAM Write: `+!a.writeinhibit+` GR Switches: `+V(a.grswitch,["Graphics","Mixed","Page2","Hires"],!1)+` `;case"Disk":return this.slots[6]&&this.slots[6].toLongString&&this.slots[6].toLongString()||` `}}},F=1,G=2,v=4,L=8,A0=function(s,x){var a=280,e=192,m=4294967295,t=4278190080,n=-1,c=new Array(40*24);let D=250,C=[l(0,0,0),l(227,30,96),l(96,78,189),l(255,68,253),l(0,163,96),l(156,156,156),l(20,207,253),l(208,195,255),l(96,114,3),l(255,106,60),l(156,156,156),l(255,160,208),l(20,245,60),l(208,221,141),l(114,255,208),l(255,255,255)],u=[0,128,256,384,512,640,768,896,40,168,296,424,552,680,808,936,80,208,336,464,592,720,848,976],g=[0,1024,2048,3072,4096,5120,6144,7168,128,1152,2176,3200,4224,5248,6272,7296,256,1280,2304,3328,4352,5376,6400,7424,384,1408,2432,3456,4480,5504,6528,7552,512,1536,2560,3584,4608,5632,6656,7680,640,1664,2688,3712,4736,5760,6784,7808,768,1792,2816,3840,4864,5888,6912,7936,896,1920,2944,3968,4992,6016,7040,8064,40,1064,2088,3112,4136,5160,6184,7208,168,1192,2216,3240,4264,5288,6312,7336,296,1320,2344,3368,4392,5416,6440,7464,424,1448,2472,3496,4520,5544,6568,7592,552,1576,2600,3624,4648,5672,6696,7720,680,1704,2728,3752,4776,5800,6824,7848,808,1832,2856,3880,4904,5928,6952,7976,936,1960,2984,4008,5032,6056,7080,8104,80,1104,2128,3152,4176,5200,6224,7248,208,1232,2256,3280,4304,5328,6352,7376,336,1360,2384,3408,4432,5456,6480,7504,464,1488,2512,3536,4560,5584,6608,7632,592,1616,2640,3664,4688,5712,6736,7760,720,1744,2768,3792,4816,5840,6864,7888,848,1872,2896,3920,4944,5968,6992,8016,976,2e3,3024,4048,5072,6096,7120,8144,120,1144,2168,3192,4216,5240,6264,7288,248,1272,2296,3320,4344,5368,6392,7416,376,1400,2424,3448,4472,5496,6520,7544,504,1528,2552,3576,4600,5624,6648,7672,632,1656,2680,3704,4728,5752,6776,7800,760,1784,2808,3832,4856,5880,6904,7928,888,1912,2936,3960,4984,6008,7032,8056,1016,2040,3064,4088,5112,6136,7160,8184,0,1024,2048,3072,4096,5120];var Q;{Q=new Array(256*4*2*7);var k,M,y,E,C0=15,K=0;for(M=0;M<2;M++)for(var w=0;w<1024;w++){(w&128)==0?(y=3,E=12):(y=6,E=9);var H=(w&256)>>8|(w&127)<<1|(w&512)>>1;for(k=0;k<7;k++){var R;(2<>4],f=0;f<4;f++)s[r]=s[r+1]=s[r+2]=s[r+3]=s[r+4]=s[r+5]=s[r+6]=A,r+=a}function o0(h,i,o,f){var r=(i<<3)*a+h*7,d,A;f?(d=t,A=m):(d=m,A=t);for(var p=0;p<8;p++){var S=l0[(o<<3)+p];s[r]=(S&64)>0?d:A,s[r+1]=(S&32)>0?d:A,s[r+2]=(S&16)>0?d:A,s[r+3]=(S&8)>0?d:A,s[r+4]=(S&4)>0?d:A,s[r+5]=(S&2)>0?d:A,s[r+6]=(S&1)>0?d:A,r+=a}}this.getAddressForScanline=function(h){var i=g[h];return x.grswitch&L&&(h<160||!(x.grswitch&G))?i=i|(x.grswitch&v?16384:8192):i=i&1023|(x.grswitch&v?2048:1024),i};function T(h,i){for(var o=h*a;h>7]){o+=a;continue}for(var r,d,A=0,p=x.mem[f]&255,S=0;S<20;S++){for(var P=x.mem[f+1]&255,Y=x.mem[f+2]&255,b0=((A&64)<<2|p|P<<9)&1023,B=0;B<7;B++)s[o+B]=Q[b0*7+B];for(var m0=((p&64)<<2|P|Y<<9)&1023,B=0;B<7;B++)s[o+7+B]=Q[m0*7+7168+B];o+=14,f+=2,A=P,p=Y}}}function Z(h){for(var i=u[h]+((x.grswitch&v)!=0?2048:1024),o=0;o<40;o++){var f=x.mem[i+o]&255;f!=c[h*40+o]&&(h0(o,h,f),c[h*40+o]=f)}}function J(h,i){for(var o=u[h]+((x.grswitch&v)!=0?2048:1024),f=0;f<40;f++){var r=x.mem[o+f]&255,d;r>=128?d=!1:r>=64?(d=i,i?r-=64:r+=64):d=!0,r!=c[h*40+f]&&(o0(f,h,r&127,d),c[h*40+f]=r)}}this.updateScreen=function(h){var i,o=new Date().getTime()%(D<<1)>D;if(x.grswitch!=n&&(n=x.grswitch,h=!0),h){if((x.grswitch&F)!=0||(x.grswitch&G)!=0)for(i=0;i<24;i++)for(var f=0;f<40;f++)c[i*40+f]=-1;for(var r=0;r>1]:this.track_data=null}toLongString(){return"Track: "+this.track/2+` Offset: `+this.track_index+` Mode: `+(this.read_mode?"READ":"WRITE")+` Motor: `+this.motor+` Data: `+(this.track_data?q(this.track_data[this.track_index]):"-")+` `}read_latch(){return this.track_index=(this.track_index+1)%_,this.track_data?this.track_data[this.track_index]&255:this.emu.floatbus()|128}write_latch(x){this.track_index=(this.track_index+1)%_,this.track_data!=null&&(this.track_data[this.track_index]=x)}readROM(x){return r0[x]}readConst(x){return r0[x]}read(x){return this.doIO(x,0)}write(x,a){this.doIO(x,a)}doIO(x,a){switch(x&15){case 1:case 3:case 5:case 7:var e,m,t;t=this.track,e=x>>1&3,e==(t-1&3)?t>0&&t--:e==(t+1&3)&&t>1],console.log("track",t/2)):this.track_data=null,this.track=t;break;case 8:this.motor=!1;break;case 9:this.motor=!0;break;case 10:break;case 11:break;case 15:this.read_mode=!1;case 12:if(this.read_mode)return this.read_latch();break;case 14:this.read_mode=!0;case 13:return a>=0&&!this.read_mode&&!this.write_protect&&this.write_latch(a),this.write_protect?128:0}return this.emu.floatbus()}},N=[150,151,154,155,157,158,159,166,167,171,172,173,174,175,178,179,180,181,182,183,185,186,187,188,189,190,191,203,205,206,207,211,214,215,217,218,219,220,221,222,223,229,230,231,233,234,235,236,237,238,239,242,243,244,245,246,247,249,250,251,252,253,254,255],g0=[0,7,14,6,13,5,12,4,11,3,10,2,9,1,8,15];function k0(s,x,a,e,m,t,n){var c,D,C,u,g=new Uint8Array(258);for(u=0,c=0;c<14;c++)t[n++]=255;for(t[n++]=213,t[n++]=170,t[n++]=150,t[n++]=s>>1|170,t[n++]=s|170,D=s,t[n++]=x>>1|170,t[n++]=x|170,D^=x,t[n++]=a>>1|170,t[n++]=a|170,D^=a,t[n++]=D>>1|170,t[n++]=D|170,t[n++]=222,t[n++]=170,t[n++]=235,c=0;c<6;c++)t[n++]=255;for(t[n++]=213,t[n++]=170,t[n++]=173,c=0;c<256;c++)g[c]=e[c+m]&255;for(g[256]=0,g[257]=0,C=0,c=0;c<86;c++)u=(g[c]&1)<<1,u|=(g[c]&2)>>1,u|=(g[c+86]&1)<<3,u|=(g[c+86]&2)<<1,u|=(g[c+172]&1)<<5,u|=(g[c+172]&2)<<3,t[n++]=N[u^C],C=u;for(c=0;c<256;c++)u=g[c]>>2,t[n++]=N[u^C],C=u;t[n++]=N[u],t[n++]=222,t[n++]=170,t[n++]=235}function S0(s,x,a){for(var e=new Uint8Array(_),m=0,t=0;t<16;t++)k0(s,x,t,a,g0[t]<<8,e,m),m+=d0;for(;m<_;)e[m++]=255;return e}var c0=[{id:"sieve.c",name:"Sieve",category:"C"},{id:"keyboardtest.c",name:"Keyboard Test"},{id:"mandel.c",name:"Mandelbrot"},{id:"tgidemo.c",name:"TGI Graphics Demo"},{id:"Eliza.c",name:"Eliza"},{id:"siegegame.c",name:"Siege Game"},{id:"cosmic.c",name:"Cosmic Impalas"},{id:"farmhouse.c",name:"Farmhouse Adventure"},{id:"yum.c",name:"Yum Dice Game"},{id:"lz4test.c",name:"LZ4 Decompressor"},{id:"hgrtest.a",name:"HGR Test",category:"Assembly Language"},{id:"conway.a",name:"Conway's Game of Life"},{id:"lz4fh.a",name:"LZ4FH Decompressor"},{id:"deltamod.dasm",name:"Delta Modulation Audio"}],n0=class extends t0{constructor(){super(...arguments);this.getOpcodeMetadata=a0;this.getToolForFilename=U}start(){this.startModule(this.mainElement,{jsfile:"mame8bitpc.js",biosfile:["apple2e.zip"],driver:"apple2e",width:280*2,height:192*2,preInit:function(x){}})}getDefaultExtension(){return".c"}getPresets(){return c0}loadROM(x,a){this.loadROMFile(a)}},f0=class extends e0{constructor(){super(...arguments);this.getMemoryMap=function(){return{main:[{name:"Zero Page RAM",start:0,size:256,type:"ram"},{name:"Line Input RAM",start:512,size:256,type:"ram"},{name:"RAM",start:768,size:192,type:"ram"},{name:"DOS Vectors",start:960,size:64,type:"ram"},{name:"Text/Lores Page 1",start:1024,size:1024,type:"ram"},{name:"RAM",start:2048,size:6144,type:"ram"},{name:"Hires Page 1",start:8192,size:8192,type:"ram"},{name:"Hires Page 2",start:16384,size:8192,type:"ram"},{name:"RAM",start:24576,size:24576,type:"ram"},{name:"I/O",start:49152,size:4096,type:"io"},{name:"ROM",start:53248,size:12288,type:"rom"}]}};this.getToolForFilename=x=>x.endsWith(".lnk")?"merlin32":U(x)}newMachine(){return new z}getPresets(){return c0}getDefaultExtension(){return".c"}readAddress(x){return this.machine.readConst(x)}getROMExtension(x){return x&&x.length==35*16*256?".dsk":".bin"}};O["apple2.mame"]=n0;O.apple2=f0; //# sourceMappingURL=apple2-EBLV7QZ6.js.map