import{aassn,basel,castl}from"./chunk-SXEVG2WS.js";import{aasDs}from"./chunk-5SHCNQ2O.js";import{aasLs,basRs,casrl}from"./chunk-4PJ2B2TK.js";import{Dasca,Jasfa,lasee,uasAs,vasFs}from"./chunk-HB3LWF25.js";import{DasDt,Easoa,FasFr,IasCs,Jasla,Sasua,Uasks,aasFt,aaasan,basoi,baasPs,caasli,dasEt,eassa,faspt,gasDe,jasEs,lasZi,masen,nastn,oasgr,pasSs,sasrn,vas_s,wasTs,xasnn,yasgt,zasAr}from"./chunk-ATS7PSQG.js";import{bassi,casws,easaa}from"./chunk-5XVCUSSZ.js";varha=ws((Is,da)=>{(function(l){if(typeofIs=="object"&&typeofda!="undefined")da.exports=l();elseif(typeofdefine=="function"&&define.amd)define([],l);else{vart;typeofwindow!="undefined"?t=window:typeofglobal!="undefined"?t=global:typeofself!="undefined"?t=self:t=this,t.localforage=l()}})(function(){varl,t,i;returnfunctiona(u,d,m){functiony(W,fe){if(!d[W]){if(!u[W]){varz=typeofsi=="function"&&si;if(!fe&&z)returnz(W,!0);if(b)returnb(W,!0);varU=newError("Cannot find module '"+W+"'");throwU.code="MODULE_NOT_FOUND",U}varq=d[W]={exports:{}};u[W][0].call(q.exports,function(de){varK=u[W][1][de];returny(K||de)},q,q.exports,a,u,d,m)}returnd[W].exports}for(varb=typeofsi=="function"&&si,L=0;L<m.length;L++)y(m[L]);returny}({1:[function(a,u,d){(function(m){"use strict";vary=m.MutationObserver||m.WebKitMutationObserver,b;if(y){varL=0,W=newy(de),fe=m.document.createTextNode("");W.observe(fe,{characterData:!0}),b=function(){fe.data=L=++L%2}}elseif(!m.setImmediate&&typeofm.MessageChannel!="undefined"){varz=newm.MessageChannel;z.port1.onmessage=de,b=function(){z.port2.postMessage(0)}}else"document"inm&&"onreadystatechange"inm.document.createElement("script")?b=function(){varxe=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)};varU,q=[];functionde(){U=!0;for(varxe,Ce,be=q.length;be;){for(Ce=q,q=[],xe=-1;++xe<be;)Ce[xe]();be=q.length}U=!1}u.exports=K;functionK(xe){q.push(xe)===1&&!U&&b()}}).call(this,typeofglobal!="undefined"?global:typeofself!="undefined"?self:typeofwindow!="undefined"?window:{})},{}],2:[function(a,u,d){"use strict";varm=a(1);functiony(){}varb={},L=["REJECTED"],W=["FULFILLED"],fe=["PENDING"];u.exports=z;functionz(X){if(typeofX!="function")thrownewTypeError("resolver must be a function");this.state=fe,this.queue=[],this.outcome=void0,X!==y&&K(this,X)}z.prototype.catch=function(X){returnthis.then(null,X)},z.prototype.then=function(X,ae){if(typeofX!="function"&&this.state===W||typeofae!="function"&&this.state===L)returnthis;varoe=newthis.constructor(y);if(this.state!==fe){var_e=this.state===W?X:ae;q(oe,_e,this.outcome)}elsethis.queue.push(newU(oe,X,ae));returnoe};functionU(X,ae,oe){this.promise=X,typeofae=="function"&&(this.onFulfilled=ae,this.callFulfilled=this.otherCallFulfilled),typeofoe=="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)};functionq(X,ae,oe){m(function(){var_e;try{_e=ae(oe)}catch(He){returnb.reject(X,He)}_e===X?b.reject(X,newTypeError("Cannot resolve promise with itself")):b.resolve(X,_e)})}b.resolve=function(X,ae){varoe=xe(de,ae);if(oe.status==="error")returnb.reject(X,oe.value);var_e=oe.value;if(_e)K(X,_e);else{X.state=W,X.outcome=ae;for(varHe=-1,Me=X.queue.length;++He<Me;)X.queue[He].callFulfilled(ae)}returnX},b.reject=function(X,ae){X.state=L,X.outcome=ae;for(varoe=-1,_e=X.queue.length;++oe<_e;)X.queue[oe].callRejected(ae);returnX};functionde(X){varae=X&&X.then;if(X&&(typeofX=="object"||typeofX=="function")&&typeofae=="function")returnfunction(){ae.apply(X,arguments)}}functionK(X,ae){varoe=!1;function_e(Qe){oe||(oe=!0,b.reje
`,oo(l),te.newfile?Ya(!0,!0):Rt('Could not find file "'+l+'". Loading default file.'),delete te.newfile,Pn()}}function Qa(l){if(l=="/")te={repo:"/"};else if(l.indexOf("://")>=0){var t=un(l);t&&(te={repo:t.repopath})}else te.platform=ie,te.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"),te.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)):(te.file=l[0].name,bootbox.confirm({message:"Open '"+kt.sanitize(te.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),te={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=>{te={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=te.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+`
ConnectyouraudiooutputtotheSuperChargerinput,turnupthevolume,andplaytheaudiofile.`,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(()=>{te.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}"platformdoesn'thavedownloadableROMs.`)}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&>(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
`),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'taddincludefiletothisprojecttype("+t+")")}function Fu(){var l=ut(),t=A.getToolForFilename(l);l.endsWith(".c")||t=="sdcc"||t=="cc65"||t=="cmoc"||t=="smlrc"?tr("LinkedC(or.s)",".c",i=>'//#link "'+i+'"'):l.endsWith("asm")||l.endsWith(".s")||t=="ca65"||t=="lwasm"?tr("LinkedASM",".inc",i=>';#link "'+i+'"'):Ee("Can'taddlinkedfiletothisprojecttype("+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+/","RestartatCursor","glyphicon-play-circle",hu).prop("id","dbg_restartatline"),Ve.newGroup(),Ve.grp.prop("id","debug_bar"),A.runEval&&Ve.add("ctrl+alt+e","ResetandDebug","glyphicon-fast-backward",bu).prop("id","dbg_restart"),A.stepBack&&Ve.add("ctrl+alt+b","StepBackwards","glyphicon-step-backward",mu).prop("id","dbg_stepback"),A.step&&Ve.add("ctrl+alt+s","SingleStep","glyphicon-step-forward",cu).prop("id","dbg_step"),A.stepOver&&Ve.add("ctrl+alt+t","StepOver","glyphicon-hand-right",fu).prop("id","dbg_stepover"),A.runUntilReturn&&Ve.add("ctrl+alt+o","StepOutofSubroutine","glyphicon-hand-up",gu).prop("id","dbg_stepout"),A.runToVsync&&Ve.add("ctrl+alt+n","NextFrame/Interrupt","glyphicon-forward",du).prop("id","dbg_tovsync"),(A.runEval||A.runToPC)&&!ie.startsWith("verilog")&&Ve.add("ctrl+alt+l","RunToLine","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,"AnalyzeCPUTiming","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"))}letl=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"))}}functionLu(){varl=$("#replayslider"),t=$("#clockslider"),i=$("#replay_frame"),a=$("#replay_clock");A.advanceFrameClock||$("#clockdiv").hide();varu=()=>{i.text(at.lastSeekFrame+""),a.text(at.lastSeekStep+"")},d=b=>{Vt();varL=parseInt(l.val().toString()),W=parseInt(t.val().toString