Files
8bitworkshop/gen/apple2-RKL5OQLE.js
T

14 lines
29 KiB
JavaScript

import{a as f0}from"./chunk-J4XYKWJN.js";import{a as u0}from"./chunk-JELKPLZC.js";import{D as h0,K as o0,d as r0,e as i0,p as c0,v as n0}from"./chunk-4YTESWOC.js";import{h as U}from"./chunk-UXRCACYH.js";import{P as L,g as x0,i as a0,l as e0,m as t0,s as s0,u as b}from"./chunk-VZWSP3EG.js";import"./chunk-N7W4C4V2.js";var P=class extends n0{constructor(){super();this.cpuFrequency=1022727;this.sampleRate=this.cpuFrequency;this.cpuCyclesPerLine=65;this.cpuCyclesPerFrame=this.cpuCyclesPerLine*262;this.canvasWidth=280;this.numVisibleScanlines=192;this.numTotalScanlines=262;this.defaultROMSize=77824;this.cpuCyclesPaddleUnit=11;this.cpuCyclesPaddleMax=255*this.cpuCyclesPaddleUnit;this.LOAD_BASE=0;this.HDR_SIZE=0;this.ram=new Uint8Array(77824);this.cpu=new c0;this.grdirty=new Array(384);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.paddleValues=[0,0,0,0];this.paddleButtons=[!1,!1,!1];this.paddleLastTriggered=0;this.slots=new Array(8);this.fakeDrive={readROM:x=>{var e=this.cpu.getPC();if(e>=50688&&e<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,e)=>{}};this.loadBIOS(new e0().decode(t0(atob(k0)))),this.connectCPUMemoryBus(this),this.bios[54170-(65536-this.bios.length)]=96,this.mb=new Y(this.cpuFrequency),this.slots[4]=this.mb}saveState(){return{c:this.cpu.saveState(),ram:this.ram.slice(),kbdlatch:this.kbdlatch,soundstate:this.soundstate,grswitch:this.grparams.grswitch,auxRAMselected:this.auxRAMselected,auxRAMbank:this.auxRAMbank,writeinhibit:this.writeinhibit,slots:this.slots.map(x=>x&&x.saveState&&x.saveState()),paddleValues:this.paddleValues.slice(),paddleButtons:this.paddleButtons.slice(),inputs:this.ram.slice(0,0)}}loadState(x){this.cpu.loadState(x.c),this.ram.set(x.ram),this.kbdlatch=x.kbdlatch,this.soundstate=x.soundstate,this.grparams.grswitch=x.grswitch,this.auxRAMselected=x.auxRAMselected,this.auxRAMbank=x.auxRAMbank,this.writeinhibit=x.writeinhibit,this.setupLanguageCardConstants();for(var e=0;e<this.slots.length;e++)this.slots[e]&&this.slots[e].loadState&&this.slots[e].loadState(x.slots[e]);this.paddleValues=x.paddleValues.slice(),this.paddleButtons=x.paddleButtons.slice(),this.ap2disp.invalidate()}saveControlsState(){return{inputs:null,kbdlatch:this.kbdlatch}}loadControlsState(x){this.kbdlatch=x.kbdlatch}loadBIOS(x,e){x.length!=12288&&(console.log(`apple2 loadBIOS !!!WARNING!!!: BIOS wants length 0x3000, but BIOS '${e}' has length 0x${x.length.toString(16)}`),console.log("will load BIOS to end of memory anyway...")),this.bios=Uint8Array.from(x)}loadROM(x,e,s){if(x.length==560*256){var t=new T(this,x);this.slots[6]=t,this.reset()}else{if(super.loadROM(x),a0(this.rom.slice(0,4),[0,5,22,0]))this.LOAD_BASE=this.rom[57]|this.rom[56]<<8,this.HDR_SIZE=58;else{let n=this.rom[0]|this.rom[1]<<8,h=this.rom[2]|this.rom[3]<<8,p=n<49152&&n+h<77824;h==x.length-4&&p?(this.LOAD_BASE=n,this.HDR_SIZE=4):(this.LOAD_BASE=s!=null?s:2051,this.HDR_SIZE=0)}this.slots[6]=this.fakeDrive}}loadRAMWithProgram(){console.log(`Loading program into Apple ][ RAM at $${this.LOAD_BASE.toString(16)} (${this.HDR_SIZE} bytes skipped for header)`);let x=this.rom.slice(this.HDR_SIZE,this.HDR_SIZE+this.ram.length-this.LOAD_BASE);this.ram.set(x,this.LOAD_BASE),this.HDR_SIZE==58&&(this.ram[48896]=76,this.ram[49007]=1)}reset(){this.auxRAMselected=!1,this.auxRAMbank=1,this.writeinhibit=!0,this.ram.fill(0,768,1024),this.mb&&this.mb.reset(),super.reset(),this.skipboot()}skipboot(){for(var x=0;x<2e6&&(this.cpu.advanceClock(),this.cpu.getPC()>>8!=198);x++);for(var x=0;x<2e6&&(this.cpu.advanceClock(),!(this.cpu.getPC()>>8<198));x++);}readConst(x){if(x<49152)return this.ram[x];if(x>=53248)return this.auxRAMselected?x>=57344?this.ram[x]:this.ram[x+this.bank2rdoffset]:this.bios[x-(65536-this.bios.length)];if(x>=49408&&x<51200){var e=x>>8&7;return(this.slots[e]&&this.slots[e].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 e=x>>4&15;switch(e){case 0:return this.kbdlatch;case 1:this.kbdlatch&=127;break;case 3:this.soundstate=this.soundstate^1;break;case 5:(x&15)<8&&((x&1)!=0?this.grparams.grswitch|=1<<(x>>1&7):this.grparams.grswitch&=~(1<<(x>>1&7)));break;case 6:switch(x&7){case 1:case 2:case 3:var s=(x&7)-1;return this.paddleButtons[s]?this.floatbus()|128:this.floatbus()&127;case 4:case 5:case 6:case 7:var t=(x&15)-4,n=this.frameCycles-this.paddleLastTriggered;return n<this.paddleValues[t]*this.cpuCyclesPaddleUnit?this.floatbus()|128:this.floatbus()&127;default:return this.floatbus()}case 7:if(x==49264)return this.paddleLastTriggered=this.frameCycles,this.floatbus()|128;case 8:return this.doLanguageCardIO(x);case 9:case 10:case 11:case 12:case 13:case 14:case 15:return(this.slots[e-8]&&this.slots[e-8].read(x&15))|0}}else if(x>=49408&&x<51200){var e=x>>8&7;return(this.slots[e]&&this.slots[e].readROM(x&255))|0}return this.floatbus()}write(x,e){if(x&=65535,e&=255,x<49152)this.ram[x]=e,this.grdirty[x>>7]=1;else if(x<49296)this.read(x);else if(x<49408){var s=x>>4&15;this.slots[s-8]&&this.slots[s-8].write(x&15,e),this.probe.logIOWrite(x,e)}else if(x>=49408&&x<51200){var s=x>>8&7,t=this.slots[s];t&&t.writeROM&&t.writeROM(x&255,e),this.probe.logIOWrite(x,e)}else x>=53248&&!this.writeinhibit&&(x>=57344?this.ram[x]=e:this.ram[x+this.bank2wroffset]=e)}floatbus(){var x=this.frameCycles,e=Math.floor(x/65),s=Math.floor(x%65),t=this.ap2disp.getAddressForScanline(e);return this.readConst(t+s)}connectVideo(x){super.connectVideo(x),this.ap2disp=this.pixels&&new g0(this.pixels,this.grparams)}startScanline(){}drawScanline(){}advanceFrame(x){var e=super.advanceFrame(x);return this.ap2disp&&this.ap2disp.updateScreen(),e}postFrame(){this.paddleLastTriggered-=this.frameCycles,this.paddleLastTriggered<-this.cpuCyclesPaddleMax&&(this.paddleLastTriggered=-this.cpuCyclesPaddleMax)}advanceCPU(){return this.audio.feedSample(this.soundstate,1),this.mb&&(this.mb.step(),this.mb.irq()&&this.cpu.IRQ()),super.advanceCPU()}startAudio(){this.mb&&this.mb.startAudio()}stopAudio(){this.mb&&this.mb.stopAudio()}setKeyInput(x,e,s){if(console.log(`setKeyInput: ${x} ${e} ${s}`),s&1){switch(e=0,x){case 16:case 17:case 18:case 91:return;case 8:if(e=8,s&2){this.cpu.reset();return}break;case 13:e=13;break;case 27:e=27;break;case 37:e=8;break;case 39:e=21;break;case 38:e=11;break;case 40:e=10;break;case 48:e=s&2?41:48;break;case 49:e=s&2?33:49;break;case 50:e=s&2?64:50;break;case 51:e=s&2?35:51;break;case 52:e=s&2?36:52;break;case 53:e=s&2?37:53;break;case 54:e=s&2?94:54;break;case 55:e=s&2?38:55;break;case 56:e=s&2?42:56;break;case 57:e=s&2?40:57;break;case 61:e=s&2?95:45;break;case 173:e=s&2?43:61;break;case 59:e=s&2?58:59;break;case 186:e=s&2?58:59;break;case 187:e=s&2?43:61;break;case 188:e=s&2?60:44;break;case 189:e=s&2?95:45;break;case 190:e=s&2?62:46;break;case 191:e=s&2?63:47;break;case 222:e=s&2?34:39;break;default:e=x,e>=97&&e<=122&&(e-=32),e>=65&&e<91&&s&4&&(e-=64)}e&&(this.kbdlatch=(e|128)&255)}}setPaddleInput(x,e){x>=0&&x<this.paddleValues.length&&(this.paddleValues[x]=e&255)}setPaddleButton(x,e){x>=0&&x<this.paddleButtons.length&&(this.paddleButtons[x]=e)}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,e){switch(x){case"I/O":return"AUX RAM Bank: "+e.auxRAMbank+`
AUX RAM Select: `+e.auxRAMselected+`
AUX RAM Write: `+!e.writeinhibit+`
GR Switches: `+s0(e.grswitch,["Graphics","Mixed","Page2","Hires"],!1)+`
`;case"Disk":return this.slots[6]&&this.slots[6].toLongString&&this.slots[6].toLongString()||`
`}}},F=1,z=2,M=4,G=8,g0=function(c,a){var x=280,e=192,s=4294967295,t=4278190080,n=-1,h=new Array(960);let p=250,k=[b(0,0,0),b(227,30,96),b(96,78,189),b(255,68,253),b(0,163,96),b(156,156,156),b(20,207,253),b(208,195,255),b(96,114,3),b(255,106,60),b(156,156,156),b(255,160,208),b(20,245,60),b(208,221,141),b(114,255,208),b(255,255,255)],l=[0,128,256,384,512,640,768,896,40,168,296,424,552,680,808,936,80,208,336,464,592,720,848,976],A=[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 y;{y=new Array(256*4*2*7);var g,v,R,Q,y0=15,V=0;for(v=0;v<2;v++)for(var D=0;D<1024;D++){(D&128)==0?(R=3,Q=12):(R=6,Q=9);var H=(D&256)>>8|(D&127)<<1|(D&512)>>1;for(g=0;g<7;g++){var I;(2<<g&H)!=0?(7<<g&H)==7<<g?I=15:I=((v^g)&1)==0?R:Q:(5<<g&H)==5<<g?I=((v^g)&1)!=0?R:Q:I=0,y[V]=k[I],V++}}}function l0(f,i,u){var o,r,m,d;for(r=(i<<3)*x+f*7,d=k[u&15],o=0;o<4;o++)c[r]=c[r+1]=c[r+2]=c[r+3]=c[r+4]=c[r+5]=c[r+6]=d,r+=x;for(d=k[u>>4],o=0;o<4;o++)c[r]=c[r+1]=c[r+2]=c[r+3]=c[r+4]=c[r+5]=c[r+6]=d,r+=x}function m0(f,i,u,o){var r=(i<<3)*x+f*7,m,d;o?(m=t,d=s):(m=s,d=t);for(var B=0;B<8;B++){var C=C0[(u<<3)+B];c[r]=(C&64)>0?m:d,c[r+1]=(C&32)>0?m:d,c[r+2]=(C&16)>0?m:d,c[r+3]=(C&8)>0?m:d,c[r+4]=(C&4)>0?m:d,c[r+5]=(C&2)>0?m:d,c[r+6]=(C&1)>0?m:d,r+=x}}this.getAddressForScanline=function(f){var i=A[f];return a.grswitch&G&&(f<160||!(a.grswitch&z))?i=i|(a.grswitch&M?16384:8192):i=i&1023|(a.grswitch&M?2048:1024),i};function j(f,i){for(var u=f*x;f<i;f++){var o=A[f]+((a.grswitch&M)!=0?16384:8192);if(!a.dirty[o>>7]){u+=x;continue}for(var r,m,d=0,B=a.mem[o]&255,C=0;C<20;C++){for(var O=a.mem[o+1]&255,$=a.mem[o+2]&255,A0=((d&64)<<2|B|O<<9)&1023,S=0;S<7;S++)c[u+S]=y[A0*7+S];for(var p0=((B&64)<<2|O|$<<9)&1023,S=0;S<7;S++)c[u+7+S]=y[p0*7+7168+S];u+=14,o+=2,d=O,B=$}}}function W(f){for(var i=l[f]+((a.grswitch&M)!=0?2048:1024),u=0;u<40;u++){var o=a.mem[i+u]&255;o!=h[f*40+u]&&(l0(u,f,o),h[f*40+u]=o)}}function X(f,i){for(var u=l[f]+((a.grswitch&M)!=0?2048:1024),o=0;o<40;o++){var r=a.mem[u+o]&255,m;r>=128?m=!1:r>=64?(m=i,i?r-=64:r+=64):m=!0,r!=h[f*40+o]&&(m0(o,f,r&127,m),h[f*40+o]=r)}}this.updateScreen=function(f){var i,u=new Date().getTime()%(p<<1)>p;if(a.grswitch!=n&&(n=a.grswitch,f=!0),f){if((a.grswitch&F)!=0||(a.grswitch&z)!=0)for(i=0;i<24;i++)for(var o=0;o<40;o++)h[i*40+o]=-1;for(var r=0;r<a.dirty.length;r++)a.dirty[r]=!0}if((a.grswitch&F)!=0)for(i=0;i<20;i++)X(i,u);else if((a.grswitch&G)!=0)j(0,160);else for(i=0;i<20;i++)W(i);if((a.grswitch&F)!=0||(a.grswitch&z)!=0)for(i=20;i<24;i++)X(i,u);else if((a.grswitch&G)!=0)j(160,192);else for(i=20;i<24;i++)W(i);for(var r=0;r<a.dirty.length;r++)a.dirty[r]=!1},this.invalidate=function(){n=-1}},C0=[0,28,34,42,46,44,32,30,0,8,20,34,34,62,34,34,0,60,34,34,60,34,34,60,0,28,34,32,32,32,34,28,0,60,34,34,34,34,34,60,0,62,32,32,60,32,32,62,0,62,32,32,60,32,32,32,0,30,32,32,32,38,34,30,0,34,34,34,62,34,34,34,0,28,8,8,8,8,8,28,0,2,2,2,2,2,34,28,0,34,36,40,48,40,36,34,0,32,32,32,32,32,32,62,0,34,54,42,42,34,34,34,0,34,34,50,42,38,34,34,0,28,34,34,34,34,34,28,0,60,34,34,60,32,32,32,0,28,34,34,34,42,36,26,0,60,34,34,60,40,36,34,0,28,34,32,28,2,34,28,0,62,8,8,8,8,8,8,0,34,34,34,34,34,34,28,0,34,34,34,34,34,20,8,0,34,34,34,42,42,54,34,0,34,34,20,8,20,34,34,0,34,34,20,8,8,8,8,0,62,2,4,8,16,32,62,0,62,48,48,48,48,48,62,0,0,32,16,8,4,2,0,0,62,6,6,6,6,6,62,0,0,0,8,20,34,0,0,0,0,0,0,0,0,0,62,0,0,0,0,0,0,0,0,0,8,8,8,8,8,0,8,0,20,20,20,0,0,0,0,0,20,20,62,20,62,20,20,0,8,30,40,28,10,60,8,0,48,50,4,8,16,38,6,0,16,40,40,16,42,36,26,0,8,8,8,0,0,0,0,0,8,16,32,32,32,16,8,0,8,4,2,2,2,4,8,0,8,42,28,8,28,42,8,0,0,8,8,62,8,8,0,0,0,0,0,0,8,8,16,0,0,0,0,62,0,0,0,0,0,0,0,0,0,0,8,0,0,2,4,8,16,32,0,0,28,34,38,42,50,34,28,0,8,24,8,8,8,8,28,0,28,34,2,12,16,32,62,0,62,2,4,12,2,34,28,0,4,12,20,36,62,4,4,0,62,32,60,2,2,34,28,0,14,16,32,60,34,34,28,0,62,2,4,8,16,16,16,0,28,34,34,28,34,34,28,0,28,34,34,30,2,4,56,0,0,0,8,0,8,0,0,0,0,0,8,0,8,8,16,0,4,8,16,32,16,8,4,0,0,0,62,0,62,0,0,0,16,8,4,2,4,8,16,0,28,34,4,8,8,0,8,128,156,162,170,174,172,160,158,128,136,148,162,162,190,162,162,128,188,162,162,188,162,162,188,128,156,162,160,160,160,162,156,128,188,162,162,162,162,162,188,128,190,160,160,188,160,160,190,128,190,160,160,188,160,160,160,128,158,160,160,160,166,162,158,128,162,162,162,190,162,162,162,128,156,136,136,136,136,136,156,128,130,130,130,130,130,162,156,128,162,164,168,176,168,164,162,128,160,160,160,160,160,160,190,128,162,182,170,170,162,162,162,128,162,162,178,170,166,162,162,128,156,162,162,162,162,162,156,128,188,162,162,188,160,160,160,128,156,162,162,162,170,164,154,128,188,162,162,188,168,164,162,128,156,162,160,156,130,162,156,128,190,136,136,136,136,136,136,128,162,162,162,162,162,162,156,128,162,162,162,162,162,148,136,128,162,162,162,170,170,182,162,128,162,162,148,136,148,162,162,128,162,162,148,136,136,136,136,128,190,130,132,136,144,160,190,128,190,176,176,176,176,176,190,128,128,160,144,136,132,130,128,128,190,134,134,134,134,134,190,128,128,128,136,148,162,128,128,128,128,128,128,128,128,128,190,128,128,128,128,128,128,128,128,128,136,136,136,136,136,128,136,128,148,148,148,128,128,128,128,128,148,148,190,148,190,148,148,128,136,158,168,156,138,188,136,128,176,178,132,136,144,166,134,128,144,168,168,144,170,164,154,128,136,136,136,128,128,128,128,128,136,144,160,160,160,144,136,128,136,132,130,130,130,132,136,128,136,170,156,136,156,170,136,128,128,136,136,190,136,136,128,128,128,128,128,128,136,136,144,128,128,128,128,190,128,128,128,128,128,128,128,128,128,128,136,128,128,130,132,136,144,160,128,128,156,162,166,170,178,162,156,128,136,152,136,136,136,136,156,128,156,162,130,140,144,160,190,128,190,130,132,140,130,162,156,128,132,140,148,164,190,132,132,128,190,160,188,130,130,162,156,128,142,144,160,188,162,162,156,128,190,130,132,136,144,144,144,128,156,162,162,156,162,162,156,128,156,162,162,158,130,132,184,128,128,128,136,128,136,128,128,128,128,128,136,128,136,136,144,128,132,136,144,160,144,136,132,128,128,128,190,128,190,128,128,128,144,136,132,130,132,136,144,128,156,162,132,136,136,128,136,0,28,34,42,46,44,32,30,0,8,20,34,34,62,34,34,0,60,34,34,60,34,34,60,0,28,34,32,32,32,34,28,0,60,34,34,34,34,34,60,0,62,32,32,60,32,32,62,0,62,32,32,60,32,32,32,0,30,32,32,32,38,34,30,0,34,34,34,62,34,34,34,0,28,8,8,8,8,8,28,0,2,2,2,2,2,34,28,0,34,36,40,48,40,36,34,0,32,32,32,32,32,32,62,0,34,54,42,42,34,34,34,0,34,34,50,42,38,34,34,0,28,34,34,34,34,34,28,0,60,34,34,60,32,32,32,0,28,34,34,34,42,36,26,0,60,34,34,60,40,36,34,0,28,34,32,28,2,34,28,0,62,8,8,8,8,8,8,0,34,34,34,34,34,34,28,0,34,34,34,34,34,20,8,0,34,34,34,42,42,54,34,0,34,34,20,8,20,34,34,0,34,34,20,8,8,8,8,0,62,2,4,8,16,32,62,0,62,48,48,48,48,48,62,0,0,32,16,8,4,2,0,0,62,6,6,6,6,6,62,0,0,0,8,20,34,0,0,0,0,0,0,0,0,0,62,0,0,0,0,0,0,0,0,0,8,8,8,8,8,0,8,0,20,20,20,0,0,0,0,0,20,20,62,20,62,20,20,0,8,30,40,28,10,60,8,0,48,50,4,8,16,38,6,0,16,40,40,16,42,36,26,0,8,8,8,0,0,0,0,0,8,16,32,32,32,16,8,0,8,4,2,2,2,4,8,0,8,42,28,8,28,42,8,0,0,8,8,62,8,8,0,0,0,0,0,0,8,8,16,0,0,0,0,62,0,0,0,0,0,0,0,0,0,0,8,0,0,2,4,8,16,32,0,0,28,34,38,42,50,34,28,0,8,24,8,8,8,8,28,0,28,34,2,12,16,32,62,0,62,2,4,12,2,34,28,0,4,12,20,36,62,4,4,0,62,32,60,2,2,34,28,0,14,16,32,60,34,34,28,0,62,2,4,8,16,16,16,0,28,34,34,28,34,34,28,0,28,34,34,30,2,4,56,0,0,0,8,0,8,0,0,0,0,0,8,0,8,8,16,0,4,8,16,32,16,8,4,0,0,0,62,0,62,0,0,0,16,8,4,2,4,8,16,0,28,34,4,8,8,0,8,128,156,162,170,174,172,160,158,128,136,148,162,162,190,162,162,128,188,162,162,188,162,162,188,128,156,162,160,160,160,162,156,128,188,162,162,162,162,162,188,128,190,160,160,188,160,160,190,128,190,160,160,188,160,160,160,128,158,160,160,160,166,162,158,128,162,162,162,190,162,162,162,128,156,136,136,136,136,136,156,128,130,130,130,130,130,162,156,128,162,164,168,176,168,164,162,128,160,160,160,160,160,160,190,128,162,182,170,170,162,162,162,128,162,162,178,170,166,162,162,128,156,162,162,162,162,162,156,128,188,162,162,188,160,160,160,128,156,162,162,162,170,164,154,128,188,162,162,188,168,164,162,128,156,162,160,156,130,162,156,128,190,136,136,136,136,136,136,128,162,162,162,162,162,162,156,128,162,162,162,162,162,148,136,128,162,162,162,170,170,182,162,128,162,162,148,136,148,162,162,128,162,162,148,136,136,136,136,128,190,130,132,136,144,160,190,128,190,176,176,176,176,176,190,128,128,160,144,136,132,130,128,128,190,134,134,134,134,134,190,128,128,128,136,148,162,128,128,128,128,128,128,128,128,128,190,128,128,128,128,128,128,128,128,128,136,136,136,136,136,128,136,128,148,148,148,128,128,128,128,128,148,148,190,148,190,148,148,128,136,158,168,156,138,188,136,128,176,178,132,136,144,166,134,128,144,168,168,144,170,164,154,128,136,136,136,128,128,128,128,128,136,144,160,160,160,144,136,128,136,132,130,130,130,132,136,128,136,170,156,136,156,170,136,128,128,136,136,190,136,136,128,128,128,128,128,128,136,136,144,128,128,128,128,190,128,128,128,128,128,128,128,128,128,128,136,128,128,130,132,136,144,160,128,128,156,162,166,170,178,162,156,128,136,152,136,136,136,136,156,128,156,162,130,140,144,160,190,128,190,130,132,140,130,162,156,128,132,140,148,164,190,132,132,128,190,160,188,130,130,162,156,128,142,144,160,188,162,162,156,128,190,130,132,136,144,144,144,128,156,162,162,156,162,162,156,128,156,162,162,158,130,132,184,128,128,128,136,128,136,128,128,128,128,128,136,128,136,136,144,128,132,136,144,160,144,136,132,128,128,128,190,128,190,128,128,128,144,136,132,130,132,136,144,128,156,162,132,136,136,128,136],k0="TFpHAAAwAAAABYxwdy2NARUZHjRBUFBMRUlJR08gUk9NMS4wADQfNB80HzQfNB80HzQfNB80HDQGIADgGR97GR+uNB80Hxk/azQfNB8ZP2UZH4s0HzQfNB80HzQfNB80HzQfNB80HzQfNB80HTQPoCA0HCAgoBkOKAEQEAwFEw8GFCAODxQgARYBCQwBAgwFGRAoxs/SoM3P0sWgyc4eA83B1MnPzqDQzMXB08Wgw8zJw8ugHgigGQgo1MjFoMHQHhnJycfPoMzPNIHCxczP1x4cNAoZHvhMA+AgWPyiJ70A352ABMoQ9x4DMN+dAAUewx5OGQUDYB4DBh7DkB4ZBx4DTEDgNEEZP7s0HzQfNB80HzQfNB80HzQfNB80HzQfNB80HzQfNB80HzQfNB80HzQfNB80HjQYyc6w7snJkOrJzPDm0OjqNAtISikDCQSFKWgpGJACaX+FKAoKBSiFKGAZHnQApSUgwftlIBkdSzQVpSJIICT8pSiFKqUphSukIYhoaQHFI7ANHk6xKJEqiBD5MOGgACCe/LCGpCSpoJEoyMQhkPkZHsc0G6QksShIKT8JQJEoaGw4GRMbIAz9IKX7NKHJm/DzGRyNNAYgjv2lMyDt/aIBivDzyiA1/cmV0AKxKMngkAIp350AAsmN0LIgnPypjdBbpD2mPB4nIED5oACprUzt/RlfdjQfNB80HzQfNB80HzQfNB80HzQfNB80HjQFqQCFHKXmhRugAIQapRyRGiB+9MjQ9uYbpRspH9DuYIXihuCE4UgpwIUmSkoFJoUmaIUnCgoKJic0QmYmpScpHwXmhSeKwADwBaAjaQTI6Qew+4Tlqr259IUwmEql5IUcsBUcACM0BArJwBAGpRxJf4UcGf7aNB80HzQfNB80HzQfNBw0CkoIIEf4KKkPkAJp4IUusSZFMCUuUSaRJmAgAPjELLARyCAO+JD2aQFIHghoxS2Q9WCgL9ACoCeELaAnqQCFMCAo+IgQ9mAVBQR+JxUGBH4mCgoZgjRgpTAYaQMpD4UwCjQBBTCFMBln35AESjQBKQ8Za/CoSpAJarAQyaLwDCmHSqq9YvkgefjQBKCAqQCqvab5hS4pA4UvmCmPqpigA+CK8AtKkAhKSgkgiND6yIjQ8hmfOzQfNB80FNgghP4gL/sgk/4gif6tWMCtWsCtXcCtX8Ct/88sEMDYIDr/IGD7qQCFAKnGhQFsGR5vNB0VAxNs3dvHzxkKDa1wwKAA6uq9ZMAQBMjQ+IhgqQCFSK1WwK1UwK1RwKkA8AutUMCtU8AgNvipFIUiHhYgqSiFIakYhSOpF4UlTCL8IFj8oAm5CPuZDgSI0PdgrfMDSaWN9ANgyY3QGKwAwBATwJPQDywQwB5E+8CD8AMeBEz9+xUdB/gVEAf4yYfQEqlAIKj8oMCpDDTBrTDAiND1YKQkkSjmJKUkxSGwZmDJoLDvqBDsyY3wWsmKNGGI0MnGJBDopSGFJMYkpSLFJbALxiUVHAf4AEggJPwgnvygAGhpAMUjkPCwyqUihSWgAIQk8OSpAIUk5h4+HhC2xiUVHQf4FQYH+DhI6QHQ/Gg0gfZg5kLQAuZDpTzFPqU95T/mPB4GPRl99BUcB/jmTtAC5k8sAMAQ9ZEorQDALBDAYBUKB/j+YKUySKn/hTK9AAIg7f1oHoHJiPAdyZjwCuD4kAMgOv/o0BOp3B4VFQoH+P4VHgf4NBsASBmiWCDl/WgpDwmwybqQAmkGbDYAyaCQAiUyhDVIIHj7aKQ1GTEvQBkKBRkLGLE8kUIgtPyQ9xm+YTQBoD/QAqD/hDIZYlI+ojigG9AIHoI2oPClPikP8AYJwKAA8AKp/ZQAlQFg6upMFR8eQzQHqYdM7f2lSEilRaZGpEcZbhYZ34Q0GzQB9QP7A2L6Yvo=";var w=35,_=6272,S0=383,d0=[162,32,160,0,162,3,134,60,138,10,36,60,240,16,5,60,73,255,41,126,176,8,74,208,251,152,157,86,3,200,232,16,229,32,88,255,186,189,0,1,10,10,10,10,133,43,170,189,142,192,189,140,192,189,138,192,189,137,192,160,80,189,128,192,152,41,3,10,5,43,170,189,129,192,169,86,169,0,234,136,16,235,133,38,133,61,133,65,169,8,133,39,24,8,189,140,192,16,251,73,213,208,247,189,140,192,16,251,201,170,208,243,234,189,140,192,16,251,201,150,240,9,40,144,223,73,173,240,37,208,217,160,3,133,64,189,140,192,16,251,42,133,60,189,140,192,16,251,37,60,136,208,236,40,197,61,208,190,165,64,197,65,208,184,176,183,160,86,132,60,188,140,192,16,251,89,214,2,164,60,136,153,0,3,208,238,132,60,188,140,192,16,251,89,214,2,164,60,145,38,200,208,239,188,140,192,16,251,89,214,2,208,135,160,0,162,86,202,48,251,177,38,94,0,3,42,94,0,3,42,145,38,200,208,238,230,39,230,61,165,61,205,0,8,166,43,144,219,76,1,8,0,0,0,0,0],K=class{constructor(){this.track=0;this.read_mode=!0;this.write_protect=!1;this.motor=!1;this.track_index=0}},T=class extends K{constructor(a,x){super(),this.emu=a,this.data=new Array(w);for(var e=0;e<w;e++){var s=e*16*256;this.data[e]=w0(254,e,x.slice(s,s+16*256))}}saveState(){for(var a={data:new Array(w),track:this.track,read_mode:this.read_mode,write_protect:this.write_protect,motor:this.motor,track_index:this.track_index},x=0;x<w;x++)a.data[x]=this.data[x].slice(0);return a}loadState(a){for(var x=0;x<w;x++)this.data[x].set(a.data[x]);this.track=a.track,this.read_mode=a.read_mode,this.write_protect=a.write_protect,this.motor=a.motor,this.track_index=a.track_index,(this.track&1)==0?this.track_data=this.data[this.track>>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?x0(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(a){this.track_index=(this.track_index+1)%_,this.track_data!=null&&(this.track_data[this.track_index]=a)}readROM(a){return d0[a]}readConst(a){return d0[a]}read(a){return this.doIO(a,0)}write(a,x){this.doIO(a,x)}doIO(a,x){switch(a&15){case 1:case 3:case 5:case 7:var e,s,t;t=this.track,e=a>>1&3,e==(t-1&3)?t>0&&t--:e==(t+1&3)&&t<w*2-1&&t++,(t&1)==0?(this.track_data=this.data[t>>1],console.log("track",t/2)):this.track_data=null,this.track=t;break;case 8:this.motor=!1;break;case 9:this.motor=!0;break;case 10:break;case 11:break;case 15:this.read_mode=!1;case 12:if(this.read_mode)return this.read_latch();break;case 14:this.read_mode=!0;case 13:return x>=0&&!this.read_mode&&!this.write_protect&&this.write_latch(x),this.write_protect?128:0}return this.emu.floatbus()}},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],B0=[0,7,14,6,13,5,12,4,11,3,10,2,9,1,8,15];function D0(c,a,x,e,s,t,n){var h,p,k,l,A=new Uint8Array(258);for(l=0,h=0;h<14;h++)t[n++]=255;for(t[n++]=213,t[n++]=170,t[n++]=150,t[n++]=c>>1|170,t[n++]=c|170,p=c,t[n++]=a>>1|170,t[n++]=a|170,p^=a,t[n++]=x>>1|170,t[n++]=x|170,p^=x,t[n++]=p>>1|170,t[n++]=p|170,t[n++]=222,t[n++]=170,t[n++]=235,h=0;h<6;h++)t[n++]=255;for(t[n++]=213,t[n++]=170,t[n++]=173,h=0;h<256;h++)A[h]=e[h+s]&255;for(A[256]=0,A[257]=0,k=0,h=0;h<86;h++)l=(A[h]&1)<<1,l|=(A[h]&2)>>1,l|=(A[h+86]&1)<<3,l|=(A[h+86]&2)<<1,l|=(A[h+172]&1)<<5,l|=(A[h+172]&2)<<3,t[n++]=N[l^k],k=l;for(h=0;h<256;h++)l=A[h]>>2,t[n++]=N[l^k],k=l;t[n++]=N[l],t[n++]=222,t[n++]=170,t[n++]=235}function w0(c,a,x){for(var e=new Uint8Array(_),s=0,t=0;t<16;t++)D0(c,a,t,x,B0[t]<<8,e,s),s+=S0;for(;s<_;)e[s++]=255;return e}var E=0,v0=1,I0=2,M0=3,Z=class{constructor(a,x){this.via=new f0(this);this.ayFunc=E;this.addressLatched=!1;this.ay=new i0(a),this.ay.psg.setClock(x*2)}reset(){this.via.reset(),this.ay.reset(),this.ayFunc=E,this.addressLatched=!1}step(){this.via.step0(),this.via.step1()}irq(){return(this.via.ifr&128)!=0}read(a,x=!1){return this.via.read(a&15,x)}write(a,x){this.via.write(a&15,x)}saveState(){return{via:this.via.saveState(),ayFunc:this.ayFunc,addressLatched:this.addressLatched,ayRegs:this.ay.psg.register.slice(0)}}loadState(a){this.via.loadState(a.via),this.ayFunc=a.ayFunc,this.addressLatched=a.addressLatched,this.ay.psg.register.set(a.ayRegs)}readPortB(){return 0}readPortA(){if(this.ayFunc==v0&&this.addressLatched)return this.ay.readData()}writePortB(a){if((a&4)==0){this.ay.reset(),this.ayFunc=E,this.addressLatched=!1;return}let x=a&3;if(this.ayFunc==E)switch(x){case I0:this.addressLatched&&this.ay.setData(this.via.ora);break;case M0:this.via.ora<=15&&(this.ay.selectRegister(this.via.ora),this.addressLatched=!0);break}this.ayFunc=x}writePortA(a){}},Y=class{constructor(a){this.units=[];this.master=new r0;for(var x=0;x<2;x++){var e=new Z(this.master,a);e.reset(),this.units.push(e)}}unit(a){return this.units[a>>7&1]}startAudio(){this.master.start()}stopAudio(){this.master.stop()}reset(){for(var a of this.units)a.reset()}step(){for(var a of this.units)a.step()}irq(){return this.units.some(a=>a.irq())}readROM(a){return this.unit(a).read(a)}readConst(a){return this.unit(a).read(a,!0)}read(a){return this.unit(a).read(a)}write(a,x){this.unit(a).write(a,x)}writeROM(a,x){this.unit(a).write(a,x)}saveState(){return this.units.map(a=>a.saveState())}loadState(a){for(var x=0;x<this.units.length;x++)a&&a[x]&&this.units[x].loadState(a[x])}};var b0=[{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:"icepiano.c",name:"Ice Piano (Hires Demo)"},{id:"Eliza.c",name:"Eliza"},{id:"siegegame.c",name:"Siege Game"},{id:"cosmic.c",name:"Cosmic Impalas"},{id:"farmhouse.c",name:"Farmhouse Adventure"},{id:"yum.c",name:"Yum Dice Game"},{id:"lz4test.c",name:"LZ4 Decompressor"},{id:"hgrtest.a",name:"HGR Test",category:"Assembly Language"},{id:"conway.a",name:"Conway's Game of Life"},{id:"lz4fh.a",name:"LZ4FH Decompressor"},{id:"deltamod.dasm",name:"Delta Modulation Audio"},{id:"paddles.dasm",name:"Paddles/Joystick"},{id:"mockingboard.c",name:"Mockingboard Music"},{id:"dos33bin.a",name:"DOS 3.3 Binary"},{id:"applesinglebin.a",name:"AppleSingle Binary"},{id:"hello-sdcc.c",name:"Hello World (SDCC)",category:"C (SDCC)"},{id:"cosmic-sdcc.c",name:"Cosmic Impalas (SDCC)"}],J=class extends u0{constructor(){super(...arguments);this.getOpcodeMetadata=h0;this.getToolForFilename=U}start(){this.startModule(this.mainElement,{jsfile:"mame8bitpc.js",biosfile:["apple2e.zip"],driver:"apple2e",width:280*2,height:384,preInit:function(x){}})}getDefaultExtensions(){return[".c",".sdcc",".cpp",".acme",".xa",".ca65",".dasm",".ecs",".wiz"]}getPresets(){return b0}loadROM(x,e){this.loadROMFile(e)}},q=class extends o0{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=U}newMachine(){return new P}resume(){super.resume(),this.machine&&this.machine.startAudio()}pause(){super.pause(),this.machine&&this.machine.stopAudio()}getPresets(){return b0}getDefaultExtensions(){return[...super.getDefaultExtensions(),".lnk"]}readAddress(x){return this.machine.readConst(x)}getROMExtension(x){return x&&x.length==560*256?".dsk":".bin"}};L["apple2.mame"]=J;L.apple2=q;
//# sourceMappingURL=apple2-RKL5OQLE.js.map