1
0
mirror of https://github.com/sehugg/8bitworkshop.git synced 2024-06-20 08:29:30 +00:00
8bitworkshop/gen/chunk-FNNXXSR5.js

49 lines
223 KiB
JavaScript
Raw Normal View History

import{a as sn,b as el,c as tl}from"./chunk-SXEVG2WS.js";import{a as Ds}from"./chunk-5SHCNQ2O.js";import{a as Ls,b as Rs,c as rl}from"./chunk-47OAI2OY.js";import{D as ca,J as fa,l as te,u as As,v as Fs}from"./chunk-BK23OIEH.js";import{D as Dt,E as oa,F as Fr,I as Cs,J as la,S as ua,U as ks,a as Ft,aa as an,b as oi,ba as Ps,ca as li,d as Et,e as sa,f as pt,g as De,j as Es,l as Zi,m as en,n as tn,o as gr,p as Ss,s as rn,v as _s,w as Ts,x as nn,y as gt,z as Ar}from"./chunk-QR47OPYG.js";import{b as si,c as ws,e as aa}from"./chunk-5XVCUSSZ.js";var ha=ws((Is,da)=>{(function(l){if(typeof Is=="object"&&typeof da!="undefined")da.exports=l();else if(typeof define=="function"&&define.amd)define([],l);else{var t;typeof window!="undefined"?t=window:typeof global!="undefined"?t=global:typeof self!="undefined"?t=self:t=this,t.localforage=l()}})(function(){var l,t,i;return function a(u,d,m){function y(W,fe){if(!d[W]){if(!u[W]){var z=typeof si=="function"&&si;if(!fe&&z)return z(W,!0);if(b)return b(W,!0);var U=new Error("Cannot find module '"+W+"'");throw U.code="MODULE_NOT_FOUND",U}var q=d[W]={exports:{}};u[W][0].call(q.exports,function(de){var K=u[W][1][de];return y(K||de)},q,q.exports,a,u,d,m)}return d[W].exports}for(var b=typeof si=="function"&&si,L=0;L<m.length;L++)y(m[L]);return y}({1:[function(a,u,d){(function(m){"use strict";var y=m.MutationObserver||m.WebKitMutationObserver,b;if(y){var L=0,W=new y(de),fe=m.document.createTextNode("");W.observe(fe,{characterData:!0}),b=function(){fe.data=L=++L%2}}else if(!m.setImmediate&&typeof m.MessageChannel!="undefined"){var z=new m.MessageChannel;z.port1.onmessage=de,b=function(){z.port2.postMessage(0)}}else"document"in m&&"onreadystatechange"in m.document.createElement("script")?b=function(){var xe=m.document.createElement("script");xe.onreadystatechange=function(){de(),xe.onreadystatechange=null,xe.parentNode.removeChild(xe),xe=null},m.document.documentElement.appendChild(xe)}:b=function(){setTimeout(de,0)};var U,q=[];function de(){U=!0;for(var xe,Ce,be=q.length;be;){for(Ce=q,q=[],xe=-1;++xe<be;)Ce[xe]();be=q.length}U=!1}u.exports=K;function K(xe){q.push(xe)===1&&!U&&b()}}).call(this,typeof global!="undefined"?global:typeof self!="undefined"?self:typeof window!="undefined"?window:{})},{}],2:[function(a,u,d){"use strict";var m=a(1);function y(){}var b={},L=["REJECTED"],W=["FULFILLED"],fe=["PENDING"];u.exports=z;function z(X){if(typeof X!="function")throw new TypeError("resolver must be a function");this.state=fe,this.queue=[],this.outcome=void 0,X!==y&&K(this,X)}z.prototype.catch=function(X){return this.then(null,X)},z.prototype.then=function(X,ae){if(typeof X!="function"&&this.state===W||typeof ae!="function"&&this.state===L)return this;var oe=new this.constructor(y);if(this.state!==fe){var _e=this.state===W?X:ae;q(oe,_e,this.outcome)}else this.queue.push(new U(oe,X,ae));return oe};function U(X,ae,oe){this.promise=X,typeof ae=="function"&&(this.onFulfilled=ae,this.callFulfilled=this.otherCallFulfilled),typeof oe=="function"&&(this.onRejected=oe,this.callRejected=this.otherCallRejected)}U.prototype.callFulfilled=function(X){b.resolve(this.promise,X)},U.prototype.otherCallFulfilled=function(X){q(this.promise,this.onFulfilled,X)},U.prototype.callRejected=function(X){b.reject(this.promise,X)},U.prototype.otherCallRejected=function(X){q(this.promise,this.onRejected,X)};function q(X,ae,oe){m(function(){var _e;try{_e=ae(oe)}catch(He){return b.reject(X,He)}_e===X?b.reject(X,new TypeError("Cannot resolve promise with itself")):b.resolve(X,_e)})}b.resolve=function(X,ae){var oe=xe(de,ae);if(oe.status==="error")return b.reject(X,oe.value);var _e=oe.value;if(_e)K(X,_e);else{X.state=W,X.outcome=ae;for(var He=-1,Me=X.queue.length;++He<Me;)X.queue[He].callFulfilled(ae)}return X},b.reject=function(X,ae){X.state=L,X.outcome=ae;for(var oe=-1,_e=X.queue.length;++oe<_e;)X.queue[oe].callRejected(ae);return X};function de(X){var ae=X&&X.then;if(X&&(typeof X=="object"||typeof X=="function")&&typeof ae=="function")return function(){ae.apply(X,arguments)}}function K(X,ae){var oe=!1;function _e(Qe){oe||(oe=!0,b.reje
`):e)),r};var Kr=/\[\]$/,zi=/\r?\n/g,Zr=/^(?:submit|button|image|reset|file)$/i,ss=/^(?:input|select|textarea|keygen)/i;function ei(e,r,n,s){var c;if(Array.isArray(r))o.each(r,function(f,h){n||Kr.test(e)?s(e,h):ei(e+"["+(typeof h=="object"&&h!=null?f:"")+"]",h,n,s)});else if(!n&&be(r)==="object")for(c in r)ei(e+"["+c+"]",r[c],n,s);else s(e,r)}o.param=function(e,r){var n,s=[],c=function(f,h){var E=q(h)?h():h;s[s.length]=encodeURIComponent(f)+"="+encodeURIComponent(E==null?"":E)};if(e==null)return"";if(Array.isArray(e)||e.jquery&&!o.isPlainObject(e))o.each(e,function(){c(this.name,this.value)});else for(n in e)ei(n,e[n],r,c);return s.join("&")},o.fn.extend({serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=o.prop(this,"elements");return e?o.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!o(this).is(":disabled")&&ss.test(this.nodeName)&&!Zr.test(e)&&(this.checked||!Xt.test(e))}).map(function(e,r){var n=o(this).val();return n==null?null:Array.isArray(n)?o.map(n,function(s){return{name:r.name,value:s.replace(zi,`\r
`)}}):{name:r.name,value:n.replace(zi,`\r
`)}}).get()}});var Vn=/%20/g,qi=/#.*$/,Ao=/([?&])_=[^&]*/,Fo=/^(.*?):[ \t]*([^\r\n]*)$/mg,Do=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Lo=/^(?:GET|HEAD)$/,Ro=/^\/\//,os={},Gn={},ls="*/".concat("*"),Yn=K.createElement("a");Yn.href=Le.href;function us(e){return function(r,n){typeof r!="string"&&(n=r,r="*");var s,c=0,f=r.toLowerCase().match(vt)||[];if(q(n))for(;s=f[c++];)s[0]==="+"?(s=s.slice(1)||"*",(e[s]=e[s]||[]).unshift(n)):(e[s]=e[s]||[]).push(n)}}function cs(e,r,n,s){var c={},f=e===Gn;function h(E){var x;return c[E]=!0,o.each(e[E]||[],function(F,R){var B=R(r,n,s);if(typeof B=="string"&&!f&&!c[B])return r.dataTypes.unshift(B),h(B),!1;if(f)return!(x=B)}),x}return h(r.dataTypes[0])||!c["*"]&&h("*")}function Xn(e,r){var n,s,c=o.ajaxSettings.flatOptions||{};for(n in r)r[n]!==void 0&&((c[n]?e:s||(s={}))[n]=r[n]);return s&&o.extend(!0,e,s),e}function Io(e,r,n){for(var s,c,f,h,E=e.contents,x=e.dataTypes;x[0]==="*";)x.shift(),s===void 0&&(s=e.mimeType||r.getResponseHeader("Content-Type"));if(s){for(c in E)if(E[c]&&E[c].test(s)){x.unshift(c);break}}if(x[0]in n)f=x[0];else{for(c in n){if(!x[0]||e.converters[c+" "+x[0]]){f=c;break}h||(h=c)}f=f||h}if(f)return f!==x[0]&&x.unshift(f),n[f]}function Mo(e,r,n,s){var c,f,h,E,x,F={},R=e.dataTypes.slice();if(R[1])for(h in e.converters)F[h.toLowerCase()]=e.converters[h];for(f=R.shift();f;)if(e.responseFields[f]&&(n[e.responseFields[f]]=r),!x&&s&&e.dataFilter&&(r=e.dataFilter(r,e.dataType)),x=f,f=R.shift(),f){if(f==="*")f=x;else if(x!=="*"&&x!==f){if(h=F[x+" "+f]||F["* "+f],!h){for(c in F)if(E=c.split(" "),E[1]===f&&(h=F[x+" "+E[0]]||F["* "+E[0]],h)){h===!0?h=F[c]:F[c]!==!0&&(f=E[0],R.unshift(E[1]));break}}if(h!==!0)if(h&&e.throws)r=h(r);else try{r=h(r)}catch(B){return{state:"parsererror",error:h?B:"No conversion from "+x+" to "+f}}}}return{state:"success",data:r}}o.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Le.href,type:"GET",isLocal:Do.test(Le.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":ls,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":o.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,r){return r?Xn(Xn(e,o.ajaxSettings),r):Xn(o.ajaxSettings,e)},ajaxPrefilter:us(os),ajaxTransport:us(Gn),ajax:function(e,r){typeof e=="object"&&(r=e,e=void 0),r=r||{};var n,s,c,f,h,E,x,F,R,B,D=o.ajaxSetup({},r),I=D.context||D,ne=D.context&&(I.nodeType||I.jquery)?o(I):o.event,ve=o.Deferred(),re=o.Callbacks("once memory"),ze=D.statusCode||{},Ue={},ct={},Fe="canceled",me={readyState:0,getResponseHeader:function(Te){var je;if(x){if(!f)for(f={};je=Fo.exec(c);)f[je[1].toLowerCase()+" "]=(f[je[1].toLowerCase()+" "]||[]).concat(je[2]);je=f[Te.toLowerCase()+" "]}return je==null?null:je.join(", ")},getAllResponseHeaders:function(){return x?c:null},setRequestHeader:function(Te,je){return x==null&&(Te=ct[Te.toLowerCase()]=ct[Te.toLowerCase()]||Te,Ue[Te]=je),this},overrideMimeType:function(Te){return x==null&&(D.mimeType=Te),this},statusCode:function(Te){var je;if(Te)if(x)me.always(Te[me.status]);else for(je in Te)ze[je]=[ze[je],Te[je]];return this},abort:function(Te){var je=Te||Fe;return n&&n.abort(je),st(0,je),this}};if(ve.promise(me),D.url=((e||D.url||Le.href)+"").replace(Ro,Le.protocol+"//"),D.type=r.method||r.type||D.method||D.type,D.dataTypes=(D.dataType||"*").toLowerCase().match(vt)||[""],D.crossDomain==null){E=K.createElement("a");try{E.href=D.url,E.href=E.href,D.crossDomain=Yn.protocol+"//"+Yn.host!=E.protocol+"//"+E.host}catch(Te){D.crossDomain=!0}}if(D.data&&D.processData&&typeof D.data!="string"&&(D.data=o.param(D.data,D.traditional)),cs(os,D,r,me),x)return me;F=o.event&&D.global,F&&o.active++==0&&o.event.trigger("ajaxStart"),D.type=D.type.toUpperCase(),D.hasContent=!Lo.test(D.type),s=D.url.replace(qi,""),D.hasContent?D.da
=====
[Open this project in 8bitworkshop](http://8bitworkshop.com/redir.html?platform=$PLATFORM&githubURL=$GITHUBURL&file=$MAINFILE).
`;function ci(){for(var l={},t=0;t<localStorage.length;t++){var i=localStorage.key(t);if(i.startsWith("__repo__")){var a=JSON.parse(localStorage.getItem(i)),u=i.substring("__repo__".length);l[u]=a}}return l}function un(l){var t=l.split("/",8);return t.length<5||t[0]!="https:"||t[2]!="github.com"||t[5]&&t[5]!="tree"?null:{user:t[3],repo:t[4],repopath:t[3]+"/"+t[4],branch:t[6],subtreepath:t[7]}}var wa=class{constructor(t,i,a,u){this.githubCons=t,this.githubToken=i,this.store=a,this.project=u,this.recreateGithub()}recreateGithub(){this.github=new this.githubCons({token:this.githubToken})}login(){if(this.githubToken&&this.githubToken.length)return new Promise((i,a)=>{i()});var t=new firebase.auth.GithubAuthProvider;return t.addScope("repo"),firebase.auth().signInWithPopup(t).then(i=>{this.githubToken=i.credential.accessToken;var a=i.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((t,i)=>{t()})}isFileIgnored(t){return t=t.toUpperCase(),!!(t.startsWith("LICENSE")||t.startsWith("README")||t.startsWith("."))}async getGithubSession(t){var i=un(t);if(!i)throw new Error("Please enter a valid GitHub URL.");var a=ci()[i.repopath],u=i.branch||a&&a.branch,d=this.github.repos(i.user,i.repo);try{u=(await d.fetch()).defaultBranch||"master"}catch(y){console.log("could not fetch default branch: "+y),u="main"}console.log("branch =",u);var m={url:t,user:i.user,reponame:i.repo,repopath:i.repopath,branch:u,subtreepath:i.subtreepath,prefix:"",repo:d,platform_id:this.project?this.project.platform_id:a?a.platform_id:null};return m}getGithubHEADTree(t){var i;return this.getGithubSession(t).then(a=>(i=a,i.repo.git.refs.heads(i.branch).fetch())).then(a=>(i.head=a,i.sha=a.object.sha,i.repo.git.trees(i.sha).fetch())).then(a=>{if(i.subtreepath){for(let u of a.tree)if(u.type=="tree"&&u.path==i.subtreepath&&u.sha)return i.repo.git.trees(u.sha).fetch();throw Error("Cannot find subtree '"+i.subtreepath+"' in tree "+a.sha)}return a}).then(a=>(i.tree=a,i))}bind(t,i){var a="__repo__"+t.repopath;if(i){var u={url:t.url,branch:t.branch,platform_id:t.platform_id,mainPath:t.mainPath,sha:t.sha};console.log("storing",u),localStorage.setItem(a,JSON.stringify(u))}else localStorage.removeItem(a)}import(t){var i;return this.getGithubSession(t).then(a=>(i=a,i.repo.contents("README.md").read())).catch(a=>(console.log(a),console.log("no README.md found"),i.repo.fetch().then(u=>""))).then(a=>{var u;if(u=/8bitworkshop.com[^)]+file=([^)&]+)/.exec(a),u&&u[1]&&(console.log("main path: '"+u[1]+"'"),i.mainPath=u[1]),u=/8bitworkshop.com[^)]+platform=([A-Za-z0-9._\-]+)/.exec(a),u){if(console.log("platform id: '"+u[1]+"'"),i.platform_id&&!i.platform_id.startsWith(u[1]))throw Error("Platform mismatch: Repository is "+u[1]+", you have "+i.platform_id+" selected.");i.platform_id=u[1]}return this.bind(i,!0),i})}pull(t,i){var a;return this.getGithubHEADTree(t).then(u=>{a=u;let d=[];return a.paths=[],a.tree.tree.forEach(m=>{if(console.log(m.path,m.type,m.size),a.paths.push(m.path),m.type=="blob"&&!this.isFileIgnored(m.path)){var y=a.repo.git.blobs(m.sha).fetch().then(b=>{var L=a.prefix+m.path,W=m.size,fe=b.encoding,z=b.content;if(b.encoding=="base64"){var U=Zi(atob(z)),q=gr(m.path,U);z=q?U:tn(U)}return b.size!=z.length&&(z=z.slice(0,b.size)),(i||this.store).setItem(L,z)});d.push(y)}else console.log("ignoring "+m.path)}),Promise.all(d)}).then(u=>a)}importAndPull(t){return this.import(t).then(i=>this.pull(t))}publish(t,i,a,u){var d,m=this.project.platform_id,y=this.project.stripLocalPath(this.project.mainPath);return this.github.user.repos.create({name:t,description:i,private:u,auto_init:!1,license_template:a}).then(b=>{d=b;var L=il;L=L.replace(/\$NAME/g,encodeURIComponent(t)),L=L.replace(/\$PLATFORM/g,encodeURIComponent(m)),L=L.replace(/\$GITHUBURL/g,encodeURIComponent(d.htmlUrl)),L=L.replace(/\$MA
`,q==a&&(d=u),u++,U+=de.nbytes||1}return z};var b=a<0?a-Sa:Math.max(0,a-Sa);let L=y(b,a-b)+y(a,Sa);this.disasmview.setValue(L),t&&this.disasmview.setCursor(d,0),js(this.disasmview,d)}getCursorPC(){var t=this.disasmview.getCursor().line;if(t>=0){var i=this.disasmview.getLine(t).trim().split(/\s+/);if(i&&i.length>=1){var a=parseInt(i[0],16);if(a>=0)return a}}return-1}},_a=class extends fn{constructor(t){super();this.path=t}refreshListing(){var t=pe.getListingForFile(this.path);this.assemblyfile=t&&(t.assemblyfile||t.sourcefile)}refresh(t){if(this.refreshListing(),!!this.assemblyfile){var i=this.assemblyfile.text,a=this.getDisasmView();if(a.setValue(i),!!A.saveState){var u=er||A.saveState(),d=u.c?u.c.EPC||u.c.PC:0;if(d>=0&&this.assemblyfile){var m=this.assemblyfile.findLineForOffset(d,cn);m&&(t&&a.setCursor(m.line-1,0),js(a,m.line-1))}}}}};function Us(l){return l.endsWith("_SIZE__")||l.endsWith("_LAST__")||l.endsWith("STACKSIZE__")||l.endsWith("FILEOFFS__")||l.startsWith("l__")||l.startsWith("s__")||l.startsWith(".__.")}var dn=class{constructor(){this.recreateOnResize=!0;this.totalRows=5120}createDiv(t){var i=document.createElement("div");return i.setAttribute("class","memdump"),t.appendChild(i),this.showMemoryWindow(t,i),this.maindiv=i}showMemoryWindow(t,i){this.memorylist=new Cs({w:$(t).width(),h:$(t).height(),itemHeight:Ps(),totalRows:this.totalRows,generatorFn:a=>{var u=this.getMemoryLineAt(a),d=document.createElement("div");if(this.dumplines){var m=this.dumplines[a];m&&d.classList.add("seg_"+this.getMemorySegment(this.dumplines[a].a))}return d.appendChild(document.createTextNode(u)),d}}),$(i).append(this.memorylist.container),this.tick(),lt&&this.dumplines&&this.scrollToAddress(lt.data_start)}scrollToAddress(t){this.dumplines&&this.memorylist.scrollToItem(this.findMemoryWindowLine(t))}refresh(){this.dumplines=null,this.tick()}tick(){this.memorylist&&$(this.maindiv).find("[data-index]").each((t,i)=>{var a=$(i),u=parseInt(a.attr("data-index")),d=a.text(),m=this.getMemoryLineAt(u);d!=m&&a.text(m)})}getMemoryLineAt(t){var i=t*16,a=0,u=16,d;if(this.getDumpLines()){var m=this.dumplines[t];if(m)i=m.a&65520,a=m.a-i,u=a+m.l,d=m.s;else return"."}for(var y=De(i+a,4)+" ",b=0;b<a;b++)y+=" ";a>8&&(y+=" ");for(var b=a;b<u;b++){var L=this.readAddress(i+b);b==8&&(y+=" "),y+=" "+(typeof L=="number"?De(L,2):"??")}for(var b=u;b<16;b++)y+=" ";return d&&(y+=" "+d),y}readAddress(t){return A.readAddress(t)}getDumpLineAt(t){var i=this.dumplines[t];if(i)return i.a+" "+i.s}getDumpLines(){var t=A.debugSymbols&&A.debugSymbols.addr2symbol||{};if(this.dumplines==null){this.dumplines=[];var i=0,a;for(let y of Object.keys(t)){var u=parseInt(y),d=t[u];if(a)for(Us(a)&&(a="");i<u&&this.dumplines.length<65536;){var m=i+16&1048560;m>u&&(m=u),this.dumplines.push({a:i,l:m-i,s:a}),i=m}a=d}}return this.dumplines}getMemorySegment(t){if(lt){if(t>=lt.data_start&&t<lt.data_start+lt.data_size)return A.getSP&&t>=A.getSP()-15?"stack":"data";if(t>=lt.code_start&&t<lt.code_start+(lt.code_size||lt.rom_size))return"code"}var i=pe.segments;if(i){for(var a of i)if(t>=a.start&&t<a.start+a.size){if(a.type=="rom")return"code";if(a.type=="ram")return"data";if(a.type=="io")return"io"}}return"unknown"}findMemoryWindowLine(t){for(var i=0;i<this.dumplines.length;i++)if(this.dumplines[i].a>=t)return i}},Ta=class extends dn{constructor(){super(...arguments);this.totalRows=2048}readAddress(t){return A.readVRAMAddress(t)}getMemorySegment(t){return"video"}getDumpLines(){return null}},Ca=class{constructor(t,i){this.recreateOnResize=!0;this.path=t,this.data=i}createDiv(t){return this.vlist=new li(t),this.vlist.create(t,this.data.length+15>>4,this.getMemoryLineAt.bind(this)),this.vlist.maindiv}getMemoryLineAt(t){for(var i=t*16,a=0,u=16,d=De(i+a,4)+" ",m=0;m<a;m++)d+=" ";a>8&&(d+=" ");for(var m=a;m<u;m++){var y=this.data[i+m];m==8&&(d+=" "),d+=" "+(y>=0?De(y,2):" ")}return{text:d}}refresh(){this.vlist.refresh()}getPath(){return this.path}},ka=class{createDiv(t){return this.maindiv=Ut(t,"vertical-scroll"),this.maindiv.css("display","grid"),this.maindiv.css("grid-template-columns","
`+u),a+=`
`+this.opToString(y,b,z))}),"X: "+t+" Y: "+i+" "+a}refresh(){this.tick(),this.datau32.fill(Ct)}tick(){super.tick(),this.drawImage()}drawImage(){this.ctx.putImageData(this.imageData,0,0)}clear(){this.datau32.fill(Ct)}},Aa=class extends Pa{createDiv(t){return this.createCanvas(t,256,256)}initCanvas(){super.initCanvas(),this.canvas.onclick=t=>{var i=an(this.canvas,t),a=Math.floor(i.x)+Math.floor(i.y)*256,u=-1,d=-1;this.redraw((m,y)=>{d<0&&u>=0&&y==a&&(d=u),m==te.EXECUTE&&(u=y)}),d>=0&&hi(d)}}clear(){for(var t=0;t<=65535;t++){var i=A.readAddress(t),a=i>>2|i&31;a|=a<<8|a<<16,this.datau32[t]=a|Ct}}drawEvent(t,i,a,u){var d=this.getOpRGB(t,i);if(!!d){var m=i&255,y=i>>8&255,b=this.datau32[i&65535];b=b|d|Ct,this.datau32[i&65535]=b}}getTooltipText(t,i){var a=(t&255)+(i<<8),u="",d=-1,m={},y=null,b=[];return this.redraw((L,W,fe,z,U,q)=>{switch(L){case te.EXECUTE:d=W,y=this.addr2symbol(W)||y;break;case te.SP_PUSH:b.push(y);break;case te.SP_POP:y=b.pop();break}var de=L|d;W==a&&!m[de]&&(u==""&&y&&(u+=`
`+y),u+=`
PC `+this.addr2str(d)+" "+this.opToString(L,null,q),m[de]=1)}),this.addr2str(a)+u}},qs=class extends Pa{initCanvas(){super.initCanvas(),this.canvas.onclick=t=>{var i=an(this.canvas,t),a=Math.floor(i.x),u=Math.floor(i.y),d=this.getOpAtPos(i.x,i.y,te.EXECUTE);d&&(Lt("toline"),A.runEval(()=>{let m=A.getRasterScanline&&A.getRasterScanline()>=u;return m&&A.getRasterLineClock?m&&A.getRasterLineClock()>a:m}))}}drawEvent(t,i,a,u){var d=this.getOpRGB(t,i);if(!!d){var m=a+u*this.canvas.width,y=d|Ct;this.datau32[m]|=y}}drawImage(){let t=Ct;for(let i=0;i<this.datau32.length;i++)this.datau32[i]==Ct?this.datau32[i]=t:t=this.datau32[i];super.drawImage()}},Fa=class extends qs{constructor(){super(...arguments);this.interrupt=0;this.rgb=0;this.lastpc=0}drawEvent(t,i,a,u){var d=a+u*this.canvas.width;if(t==te.INTERRUPT&&(this.interrupt=1),this.interrupt==1&&t==te.SP_PUSH&&(this.interrupt=i),this.interrupt>1&&this.sp>this.interrupt&&(this.interrupt=0),t==te.MEM_WRITE&&(this.rgb|=47),t==te.VRAM_WRITE&&(this.rgb|=16256),t==te.IO_WRITE&&(this.rgb|=2047872),t==te.IO_READ&&(this.rgb|=7936),t==te.WAIT&&(this.rgb=32768),t==te.ILLEGAL||t==te.DMA_READ)this.datau32[d]=4279176975;else{let m=this.rgb;if(t==te.EXECUTE){let y=this.sp&15;y>=8&&(y=16-y),Math.abs(this.lastpc)-i>16&&(y+=1),Math.abs(this.lastpc)-i>256&&(y+=1),m=this.rgb=526344*y+2105376,this.lastpc=i}this.interrupt&&(m|=8388672),this.datau32[d]==Ct&&(this.datau32[d]=m|Ct)}}},Da=class extends mr{constructor(){super(...arguments);this.recreateOnResize=!0}createDiv(t){return this.vlist=new li(t),this.vlist.create(t,this.cyclesPerLine*this.totalScanlines,this.getMemoryLineAt.bind(this)),this.vlist.maindiv}getMemoryLineAt(t){var i="",a="seg_data",u=this.dumplines&&this.dumplines[t];if(u!=null){var d=u.info.join(", ");i="("+Ft(u.row,4)+", "+Ft(u.col,4)+") "+oi(u.asm||"",20)+d,d.indexOf("Write ")>=0&&(a="seg_io")}return{text:i,clas:a}}refresh(){this.tick()}tick(){let t=A instanceof fa||A instanceof ca;this.dumplines={},this.redraw((i,a,u,d,m,y)=>{t&&(m>>=2);var b=this.dumplines[m];switch(b==null&&(b={op:i,addr:a,row:d,col:u,asm:null,info:[]},this.dumplines[m]=b),i){case te.EXECUTE:if(A.disassemble){var L=A.disassemble(a,A.readAddress.bind(A));b.asm=L&&L.line}break;default:var W=this.opToString(i,a,y);W!=""&&b.info.push(W);break}}),this.vlist.refresh()}},La=class extends mr{constructor(){super(...arguments);this.recreateOnResize=!0}createDiv(t){return this.vlist=new li(t),this.vlist.create(t,this.totalScanlines,this.getMemoryLineAt.bind(this)),this.vlist.maindiv}getMemoryLineAt(t){for(var i=Ft(t+"",3)+" ",a="seg_code",u=this.dumplines&&this.dumplines[t]||[],d=Math.round(this.cyclesPerLine/3.3),m=0;m<this.cyclesPerLine;m++){var y=u[m];if(y!==void 0){var b=y&65535,L=L&Ct;if(L==te.EXECUTE)i+=",";else{var W=De(b);i+=W,m+=W.length-1}}else i+=m==d?"|":"."}return u[-1]&&(i+=" "+u[-1]),{text:i,clas:a}}refresh(){this.tick()}tick(){let t=A instanceof fa||A instanceof ca;this.dumplines={},this.redraw((i,a,u,d,m,y)=>{var b=this.dumplines[d];switch(b==null&&(this.dumplines[d]=b=[]),i){case te.EXECUTE:var L=A.debugSymbols.addr2symbol[a];L&&(b[-1]=L);break;case te.IO_READ:case te.IO_WRITE:case te.VRAM_READ:case te.VRAM_WRITE:b[u]=i|a;break}}),this.vlist.refresh()}},Ra=class extends mr{constructor(){super(...arguments);this.recreateOnResize=!0;this.cumulativeData=!0}createDiv(t){return A.debugSymbols&&A.debugSymbols.symbolmap?this.keys=Array.from(Object.keys(A.debugSymbols.symbolmap).filter(i=>!Us(i))):this.keys=["no symbols defined"],this.vlist=new li(t),this.vlist.create(t,this.keys.length+1,this.getMemoryLineAt.bind(this)),this.vlist.maindiv}getMemoryLineAt(t){if(t==0)return{text:Ft("Symbol",35)+Ft("Reads",8)+Ft("Writes",8)};var i=this.keys[t-1],a=this.dumplines&&this.dumplines[i];function u(y){var b=a[y]|0;return Ft(b?b.toString():"",8)}var d,m;return a!=null?(d=Ft(i,35)+u(te.MEM_READ)+u(te.MEM_WRITE),a[te.EXECUTE]?m="seg_code":a[te.IO_READ]||a[te.IO_WRITE]?m="seg_io":m="seg_data"):(d=Ft(i,35),m="seg_unknown"),{text:d,clas:m}}refresh(){this.tick()}tick(){this.dumplines={},this.redraw((t,i,a,u,d,m)=>{var y=A.deb
`,oo(l),ee.newfile?Ya(!0,!0):Rt('Could not find file "'+l+'". Loading default file.'),delete ee.newfile,Pn()}}function Qa(l){if(l=="/")ee={repo:"/"};else if(l.indexOf("://")>=0){var t=un(l);t&&(ee={repo:t.repopath})}else ee.platform=ie,ee.file=l;Rr()}async function _l(l){var t=A.getToolForFilename(l);try{return await $.get("presets/"+gt(ie)+"/skeleton."+t,"text")}catch(i){Ee("Could not load skeleton for "+ie+"/"+t+"; using blank file")}}function Ja(l){return l.indexOf(" ")>=0?(Ee("No spaces in filenames, please."),!1):!0}function Tl(l){return bootbox.prompt({title:"Enter the name of your new main source file.",placeholder:"newfile"+A.getDefaultExtension(),callback:t=>{if(t&&t.trim().length>0){if(!Ja(t))return;t.indexOf(".")<0&&(t+=A.getDefaultExtension());var i=t;wi("workspace","file","new"),ee.newfile="1",Qa(i)}}}),!0}function Cl(l){let t=$('<input type="file" multiple accept="*" style="display:none">'),i=t[0];t.change(a=>{kl(i.files)}),t.click()}function kl(l){console.log(l);var t=0;function i(){var a=l[t++];if(!a)console.log("Done uploading",t),t>2?(Rt("Files uploaded."),setTimeout(_i,1e3)):(ee.file=l[0].name,bootbox.confirm({message:"Open '"+kt.sanitize(ee.file)+"' as main project file?",buttons:{confirm:{label:"Open As New Project"},cancel:{label:"Include/Link With Project Later"}},callback:m=>{m?Rr():setTimeout(_i,1e3)}})),wi("workspace","file","upload");else{var u=a.name,d=new FileReader;d.onload=function(m){var y=m.target.result,b=new Uint8Array(y);gr(u,b)||(b=tn(b).replace(`\r
`,`
`)),ge.updateFile(u,b),console.log("Uploaded "+u+" "+b.length+" bytes"),i()},d.readAsArrayBuffer(a)}}l&&i()}async function Pl(l){var t=window.showDirectoryPicker;t||Ee("This browser can't open local files on your computer, yet. Try Chrome.");var i=await t(),a=i.name,u="__localfs__"+a,d={handle:i},m=za.createInstance({name:u,version:2});await m.setItem(u,d),ee={localfs:a},Rr(!0)}async function Al(l){return new Promise((t,i)=>{bootbox.prompt(kt.sanitize(l),a=>{t(a)})})}async function Fl(l){let t={mode:"readwrite"};var i="__localfs__"+l,a=za.createInstance({name:i,version:2}),u=await a.getItem(i),d=u.handle;console.log(u,d);var m=await d.queryPermission(t);if(console.log(m),m!=="granted"&&(await Al("Request permissions to access filesystem?"),m=await d.requestPermission(t)),m!=="granted"){Ee("Could not get permission to access filesystem.");return}return{getFileData:async y=>{console.log("getFileData",y);let b=await d.getFileHandle(y,{create:!1});console.log("getFileData",b);let L=await b.getFile();console.log("getFileData",L);let W=await(gr(y)?L.binary():L.text());return console.log(b,L,W),W},setFileData:async(y,b)=>{}}}function ut(){return Et(pe.mainPath)}function Dl(){return Et(ge.getActiveID())}var Ka;function lo(l){for(var t=l+"=",i=document.cookie.split(";"),a=0;a<i.length;a++){for(var u=i[a];u.charAt(0)==" ";)u=u.substring(1,u.length);if(u.indexOf(t)==0)return u.substring(t.length,u.length)}return null}async function xr(){if(!Ka){await Dt("lib/octokat.js"),await Dt("https://www.gstatic.com/firebasejs/8.8.1/firebase-app.js"),await Dt("https://www.gstatic.com/firebasejs/8.8.1/firebase-auth.js"),await Dt("https://8bitworkshop.com/config.js");var l=lo("__github_key");Ka=new wa(Octokat,l,Xe,pe),console.log("loaded github service")}return Ka}function Si(){var l=(Be||"").split("/");return l.length!=2?(Ee("You are not in a GitHub repository. Choose one from the pulldown, or Import or Publish one."),null):"https://github.com/"+l[0]+"/"+l[1]}async function Za(l,t){var i,a=un(l);if(!a){Ee("Could not parse Github URL.");return}var u=ci()[a.repopath];if(!(u&&!confirm("You've already imported "+a.repopath+" -- do you want to replace all local files?"))){Oe(!0);var d=ba(a.repopath);Gt(.25);var m=await xr();return m.import(l).then(y=>(i=y,Gt(.75),m.pull(l,d))).then(y=>{ee={repo:i.repopath},Oe(!1),wi("sync","import",l),Rr(t)}).catch(y=>{Oe(!1),console.log(y),Ee("Could not import "+l+"."+y)})}}async function Ll(l){var t=await xr();t.login().then(()=>{Rt("You are signed in to Github.")}).catch(i=>{Ee("Could not sign in."+i)})}async function Rl(l){var t=await xr();t.logout().then(()=>{Rt("You are logged out of Github.")})}function Il(l){var t=$("#importGithubModal"),i=$("#importGithubButton");t.modal("show"),i.off("click").on("click",()=>{var a=$("#importGithubURL").val()+"";t.modal("hide"),Za(a,!1)})}function Ml(l){if(!(Be&&!confirm("This project ("+pe.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 t=$("#publishGithubModal"),i=$("#publishGithubButton");$("#githubRepoName").val(pt(Et(pe.mainPath))),t.modal("show"),i.off("click").on("click",async()=>{var a=$("#githubRepoName").val()+"",u=$("#githubRepoDesc").val()+"",d=$("#githubRepoPrivate").val()=="private",m=$("#githubRepoLicense").val()+"",y;if(!a){Ee("You did not enter a project name.");return}t.modal("hide"),Oe(!0);var b=await xr();b.login().then(()=>(Gt(.25),b.publish(a,u,m,d))).then(L=>(y=L,Gt(.5),Be=ee.repo=y.repopath,uo("initial import from 8bitworkshop.com"))).then(()=>{wi("sync","publish",d?"":a),Za(y.url,!1)}).catch(L=>{Oe(!1),console.log(L),Ee("Could not publish GitHub repository: "+L)})})}}function Nl(l){var t=Si();if(!!t){var i=$("#pushGithubModal"),a=$("#pushGithubButton");i.modal("show"),a.off("click").on("click",()=>{var u=$("#githubCommitMsg").val()+"";i.modal("hide"),uo(u)})}}function Ol(l){var t=Si();!t||bootbox.confirm("Pull from repository and replace all local files? Any changes you've made will be overwritten.",async i
`},u=window.c2t({noInitialRun:!0,print:a,printErr:a}),d=u.FS,m=ut()+".bin",y=ut()+".wav";d.writeFile(m,Ye,{encoding:"binary"});var b=["-2bc",m+","+t.toString(16),y];u.callMain(b);var L=d.readFile(y,{encoding:"binary"});if(L){var W=new Blob([L],{type:"audio/wav"});(0,qt.saveAs)(W,y),i+="Then connect your audio output to the cassette input, turn up the volume, and play the audio file.",Rt(i)}})}function ql(l){Dt("lib/makewav.js").then(()=>{let t="",i=function(y){t+=y+`
`};var a=pt(ut());let u=a+".bin",d=a+".wav";window.makewav({noInitialRun:!1,print:i,printErr:i,arguments:["-ts","-f0","-v10",u],preRun:y=>{y.FS.writeFile(u,Ye,{encoding:"binary"})}}).ready.then(y=>{let b=[u];y.run(b),console.log(t);let W=y.FS.readFile(d,{encoding:"binary"});if(W){let fe=new Blob([W],{type:"audio/wav"});(0,qt.saveAs)(fe,d),t+=`
Connect your audio output to the SuperCharger input, turn up the volume, and play the audio file.`,Rt(t)}})})}function Vl(l){if(Ye==null)return Ee("Please fix errors before exporting."),!0;var t;switch(gt(ie)){case"vcs":t=ql;break;case"apple2":t=zl;break}if(t===void 0)return Ee("Cassette export is not supported on this platform."),!0;t(l)}function Gl(l){var t=ge.getActive();if(t&&t.setText){var i=ge.getActiveID();$.get("presets/"+gt(ie)+"/"+i,a=>{bootbox.confirm("Reset '"+kt.sanitize(i)+"' to default?",u=>{u&&t.setText(a)})},"text").fail(()=>{Ee(Be?"Can only revert built-in examples. If you want to revert all files, You can pull from the repository.":"Can only revert built-in examples.")})}else Ee("Cannot revert the active window. Please choose a text file.")}function Yl(l){var t=ge.getActive();if(t&&t.getPath){var i=ge.getActiveID();bootbox.confirm("Delete '"+kt.sanitize(i)+"'?",a=>{a&&Xe.removeItem(i).then(()=>{ee.file==i?(yr.unsetLastPreset(),Rr()):(_i(),Rt("Deleted "+i))})})}else Ee("Cannot delete the active window.")}function Xl(l){var t=ge.getActive();if(t&&t.getPath&&pe.getFile(t.getPath())){var i=ge.getActiveID();bootbox.prompt({title:"Rename '"+kt.sanitize(i)+"' to?",value:i,callback:a=>{var u=pe.getFile(t.getPath());if(a&&a!=i&&u){if(!Ja(a))return;Xe.removeItem(i).then(()=>Xe.setItem(a,u)).then(()=>{_i(),alert("Renamed "+i+" to "+a),i==pe.mainPath&&Qa(a)})}}})}else Ee("Cannot rename the active window.")}function Ql(l){if(Ye==null)return Ee("Please finish compiling with no errors before downloading ROM."),!0;var t=pt(ut());if(A.getDownloadFile){var i=A.getDownloadFile(),t=pt(ut());(0,qt.saveAs)(i.blob,t+i.extension)}else if(Ye instanceof Uint8Array){var a=new Blob([Ye],{type:"application/octet-stream"}),u=A.getROMExtension&&A.getROMExtension(Ye)||"-"+gt(ie)+".bin";(0,qt.saveAs)(a,t+u)}else Ee(`The "${ie}" platform doesn't have downloadable ROMs.`)}function Jl(l){var t=ge.getCurrentText();if(!t)return!1;var i=new Blob([t],{type:"text/plain;charset=utf-8"});(0,qt.saveAs)(i,Dl(),{autoBom:!1})}async function co(){let l=(await import("./jszip.min-DI47XKVW.js")).default;return new l}async function Kl(l){var t=await co();pe.iterateFiles((i,a)=>{a&&t.file(Et(i),a)}),t.generateAsync({type:"blob"}).then(i=>{(0,qt.saveAs)(i,ut()+"-"+gt(ie)+".zip")})}function Zl(l){let t=A.getDebugSymbolFile&&A.getDebugSymbolFile();if(!t){Ee("This project does not have debug information.");return}var i=pt(ut());(0,qt.saveAs)(t.blob,i+t.extension,{autoBom:!1})}async function eu(l){var t=await co(),i=await Xe.keys();Oe(!0);try{var a=0;await Promise.all(i.map(d=>Xe.getItem(d).then(m=>{Gt(a++/(i.length+1)),m&&t.file(d,m)})));var u=await t.generateAsync({type:"blob"});(0,qt.saveAs)(u,gt(ie)+"-all.zip")}finally{Oe(!1)}}function tu(l){var t={};l.append($("<option />").text("--------- Examples ---------").attr("disabled","true"));for(var i=0;i<xn.length;i++){var a=xn[i],u=a.chapter?a.chapter+". "+a.name:a.name,d=a.id==pe.mainPath;l.append($("<option />").val(a.id).text(u).attr("selected",d?"selected":null)),d&&(wn=a),t[a.id]=u}return t}function ru(l){if(St&&!vi){var t=0,i=ci();if(i)for(let u in i){var a=i[u];a.platform_id&&gt(a.platform_id)==gt(ie)&&(t++==0&&l.append($("<option />").text("------ Repositories ------").attr("disabled","true")),l.append($("<option />").val(a.url).text(a.url.substring(a.url.indexOf("/")))))}}}async function fo(l,t,i,a){var u=await Xe.keys(),d=0;u||(u=[]);for(var m=0;m<u.length;m++){var y=u[m];if(y.startsWith(i)&&!a[y]){d++==0&&l.append($("<option />").text("------- "+t+" -------").attr("disabled","true"));var b=y.substring(i.length);l.append($("<option />").val(y).text(b).attr("selected",y==pe.mainPath?"selected":null))}}}function ho(l){l.css("visibility","visible");var t=pe.mainPath;l.val()!=t&&l.append($("<option />").val(t).text(t).attr("selected","selected"))}async function _i(){var l=$("#preset_select").empty();if(Be)l.append($("<option />").val("/").text("Leave Repository")),$("#repo_name").text(Et(Be)+"/").show(),await fo(l,Be,"",{}),ho(l);else{ru(l);var t=tu(l);await fo(l,"Local Files","",t),ho(l)}l.off("chang
`),t.SP&&(i+="c.SP < 0x"+De(t.SP)+`
`),t.HL&&(i+=`c.HL == 0x4000
`),A.readAddress&&(i+=`this.readAddress(0x1234) == 0x0
`),A.readVRAMAddress&&(i+=`this.readVRAMAddress(0x1234) != 0x80
`),A.getRasterScanline&&(i+=`this.getRasterScanline() > 222
`),i}function wu(l){var t=new Function("c","return ("+l+");").bind(A);Lt(),A.runEval(t),ao=l}function xo(){A.isRunning()?(ge.tick(),En=!1):En||(ge.tick(),En=!0),setTimeout(xo,100)}function Oe(l){l?(Gt(0),$("#pleaseWaitModal").modal("show")):(Gt(1),$("#pleaseWaitModal").modal("hide"))}function Gt(l){$("#pleaseWaitProgressBar").css("width",l*100+"%").show()}var is=!1;function Eu(){is||Dt("lib/gif.js").then(()=>{var l=$("#emulator").find("canvas")[0];if(!l){Ee("Could not find canvas element to record video!");return}var t=0;l.style&&l.style.transform&&(l.style.transform.indexOf("rotate(-90deg)")>=0?t=-1:l.style.transform.indexOf("rotate(90deg)")>=0&&(t=1));var i=new GIF({workerScript:"lib/gif.worker.js",workers:4,quality:10,rotate:t}),a=$("#videoPreviewImage");i.on("progress",b=>{Gt(b)}),i.on("finished",b=>{a.attr("src",URL.createObjectURL(b)),Oe(!1),It(),$("#videoPreviewModal").modal("show")});var u=20,d=300,m=0;console.log("Recording video",l),$("#emulator").css("backgroundColor","#cc3333");var y=()=>{m++>d?(console.log("Rendering video"),$("#emulator").css("backgroundColor","inherit"),Oe(!0),Vt(),i.render(),is=!1):(i.addFrame(l,{delay:u,copy:!0}),setTimeout(y,u),is=!0)};y()})}function Cn(l){A.setFrameRate(l),l>.01?$("#fps_label").text(l.toFixed(2)):$("#fps_label").text("1/"+Math.round(1/l))}function Su(){var l=A.getFrameRate();l=l/2,l>1e-5&&Cn(l)}function _u(){var l=A.getFrameRate();l=Math.min(60,l*2),Cn(l)}function Tu(){Cn(60/65536)}function Cu(){It(),Cn(60)}function ku(){ge.refresh(!1);var l=ge.getActive();if(l.getSourceFile&&l.setTimingResult){var t=A.newCodeAnalyzer();t.showLoopTimingForPC(0),l.setTimingResult(t)}}function ns(){Lr&&(A.setRecorder(null),$("#dbg_record").removeClass("btn_recording"),$("#replaydiv").hide(),mo(),Lr=!1)}function wo(){Lr&&at.reset()}function Eo(){at.reset(),A.setRecorder(at),$("#dbg_record").addClass("btn_recording"),$("#replaydiv").show(),Lr=!0}function Pu(){Lr?ns():Eo()}function tr(l,t,i){var a=ge.getActive();a&&a.insertText?bootbox.prompt({title:"Add "+kt.sanitize(l)+" File to Project",value:"filename"+kt.sanitize(t),callback:u=>{if(u&&u.trim().length>0){if(!Ja(u))return;var d=u,m=`
`+i(u)+`
`;pe.loadFiles([d]).then(y=>{y&&y.length?Ee(u+" already exists; including anyway"):pe.updateFile(d,`
`),a.insertText(m),Ei()})}}}):Ee("Can't insert text in this window -- switch back to main file")}function Au(){var l=ut(),t=A.getToolForFilename(l);l.endsWith(".c")||t=="sdcc"||t=="cc65"||t=="cmoc"||t=="smlrc"?tr("Header",".h",i=>'#include "'+i+'"'):t=="dasm"||t=="zmac"?tr("Include",".inc",i=>' include "'+i+'"'):t=="ca65"||t=="sdasz80"||t=="vasm"||t=="armips"?tr("Include",".inc",i=>' .include "'+i+'"'):t=="verilator"?tr("Verilog",".v",i=>'`include "'+i+'"'):t=="wiz"?tr("Include",".wiz",i=>'import "'+i+'";'):t=="ecs"?tr("Include",".ecs",i=>'import "'+i+'"'):Ee("Can't add include file to this project type ("+t+")")}function Fu(){var l=ut(),t=A.getToolForFilename(l);l.endsWith(".c")||t=="sdcc"||t=="cc65"||t=="cmoc"||t=="smlrc"?tr("Linked C (or .s)",".c",i=>'//#link "'+i+'"'):l.endsWith("asm")||l.endsWith(".s")||t=="ca65"||t=="lwasm"?tr("Linked ASM",".inc",i=>';#link "'+i+'"'):Ee("Can't add linked file to this project type ("+t+")")}function Du(){if(Ve=new sn($("#toolbar")[0],null),Ve.grp.prop("id","run_bar"),Ve.add("ctrl+alt+r","Reset","glyphicon-refresh",vu).prop("id","dbg_reset"),Ve.add("ctrl+alt+,","Pause","glyphicon-pause",uu).prop("id","dbg_pause"),Ve.add("ctrl+alt+.","Resume","glyphicon-play",bo).prop("id","dbg_go"),A.restartAtPC&&Ve.add("ctrl+alt+/","Restart at Cursor","glyphicon-play-circle",hu).prop("id","dbg_restartatline"),Ve.newGroup(),Ve.grp.prop("id","debug_bar"),A.runEval&&Ve.add("ctrl+alt+e","Reset and Debug","glyphicon-fast-backward",bu).prop("id","dbg_restart"),A.stepBack&&Ve.add("ctrl+alt+b","Step Backwards","glyphicon-step-backward",mu).prop("id","dbg_stepback"),A.step&&Ve.add("ctrl+alt+s","Single Step","glyphicon-step-forward",cu).prop("id","dbg_step"),A.stepOver&&Ve.add("ctrl+alt+t","Step Over","glyphicon-hand-right",fu).prop("id","dbg_stepover"),A.runUntilReturn&&Ve.add("ctrl+alt+o","Step Out of Subroutine","glyphicon-hand-up",gu).prop("id","dbg_stepout"),A.runToVsync&&Ve.add("ctrl+alt+n","Next Frame/Interrupt","glyphicon-forward",du).prop("id","dbg_tovsync"),(A.runEval||A.runToPC)&&!ie.startsWith("verilog")&&Ve.add("ctrl+alt+l","Run To Line","glyphicon-save",pu).prop("id","dbg_toline"),Ve.newGroup(),Ve.grp.prop("id","xtra_bar"),$(".dropdown-menu").collapse({toggle:!1}),$("#item_new_file").click(Tl),$("#item_upload_file").click(Cl),$("#item_open_directory").click(Pl),$("#item_github_login").click(Ll),$("#item_github_logout").click(Rl),$("#item_github_import").click(Il),$("#item_github_publish").click(Ml),$("#item_github_push").click(Nl),$("#item_github_pull").click(Ol),$("#item_repo_delete").click(Wl),$("#item_share_file").click(Bl),$("#item_reset_file").click(Gl),$("#item_rename_file").click(Xl),$("#item_delete_file").click(Yl),A.runEval?$("#item_debug_expr").click(yu).show():$("#item_debug_expr").hide(),$("#item_download_rom").click(Ql),$("#item_download_file").click(Jl),$("#item_download_zip").click(Kl),A.getDebugSymbolFile?$("#item_download_sym").click(Zl):$("#item_download_sym").hide(),$("#item_download_allzip").click(eu),$("#item_record_video").click(Eu),ie.startsWith("apple2")||ie.startsWith("vcs")?$("#item_export_cassette").click(Vl):$("#item_export_cassette").hide(),A.setFrameRate&&A.getFrameRate&&($("#dbg_slower").click(Su),$("#dbg_faster").click(_u),$("#dbg_slowest").click(Tu),$("#dbg_fastest").click(Cu)),$("#item_addfile_include").click(Au),$("#item_addfile_link").click(Fu),$("#item_request_persist").click(()=>Ya(!0,!1)),xo(),A.newCodeAnalyzer&&Ve.add(null,"Analyze CPU Timing","glyphicon-time",ku),A.setRecorder&&A.advance&&Lu(),A.showHelp){let{li:i,a}=Xa("help__"+ie,qa+" Help");$("#help_menu").append(i),$(a).click(()=>window.open(A.showHelp(),"_8bws_help"))}let l=A.getToolForFilename(ut()),t=gl[l];if(t){let{li:i,a}=Xa("help__"+l,l+" Help");$("#help_menu").append(i),$(a).click(()=>window.open(t,"_8bws_help"))}}function Lu(){var l=$("#replayslider"),t=$("#clockslider"),i=$("#replay_frame"),a=$("#replay_clock");A.advanceFrameClock||$("#clockdiv").hide();var u=()=>{i.text(at.lastSeekFrame+""),a.text(at.lastSeekStep+"")},d=b=>{Vt();var L=parseInt(l.val().toString()),W=parseInt(t.val().toString
/*!
localForage -- Offline Storage, Improved
Version 1.10.0
https://localforage.github.io/localForage
(c) 2013-2017 Mozilla, Apache License 2.0
*/
/*!
* jQuery JavaScript Library v3.6.3
* https://jquery.com/
*
* Includes Sizzle.js
* https://sizzlejs.com/
*
* Copyright OpenJS Foundation and other contributors
* Released under the MIT license
* https://jquery.org/license
*
* Date: 2022-12-20T21:28Z
*/
//# sourceMappingURL=chunk-FNNXXSR5.js.map