import{aashn,basya,casPl}from"./chunk-SDBJC2RS.js";import{aasjs}from"./chunk-XMPGMPQ4.js";import{aasBs,basUs,caskl}from"./chunk-2KLMJIHE.js";import{Dasva,Jasba,lasee,uas$s,vasWs}from"./chunk-42IVW2OL.js";import{AasMr,Eas_t,Fasha,GasNr,Hasfn,IasMs,Jaspa,Tasma,VasNs,aasRt,baspi,baasdn,caasOs,dasft,daasgi,easda,fasrt,gasDe,kasFs,massn,nason,oasln,pasvr,qasLs,tasun,wasRs,xasIs,yascn,zasdt}from"./chunk-S4FPTY4A.js";import{aasdi,basDs,cashi}from"./chunk-RQFURXHW.js";varwa=Ds((Hs,xa)=>{(function(l){if(typeofHs=="object"&&typeofxa!="undefined")xa.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,r;returnfunctiona(u,d,m){functionb(W,fe){if(!d[W]){if(!u[W]){varz=typeofdi=="function"&&di;if(!fe&&z)returnz(W,!0);if(y)returny(W,!0);varH=newError("Cannot find module '"+W+"'");throwH.code="MODULE_NOT_FOUND",H}varV=d[W]={exports:{}};u[W][0].call(V.exports,function(de){varK=u[W][1][de];returnb(K||de)},V,V.exports,a,u,d,m)}returnd[W].exports}for(vary=typeofdi=="function"&&di,F=0;F<m.length;F++)b(m[F]);returnb}({1:[function(a,u,d){(function(m){"use strict";varb=m.MutationObserver||m.WebKitMutationObserver,y;if(b){varF=0,W=newb(de),fe=m.document.createTextNode("");W.observe(fe,{characterData:!0}),y=function(){fe.data=F=++F%2}}elseif(!m.setImmediate&&typeofm.MessageChannel!="undefined"){varz=newm.MessageChannel;z.port1.onmessage=de,y=function(){z.port2.postMessage(0)}}else"document"inm&&"onreadystatechange"inm.document.createElement("script")?y=function(){varxe=m.document.createElement("script");xe.onreadystatechange=function(){de(),xe.onreadystatechange=null,xe.parentNode.removeChild(xe),xe=null},m.document.documentElement.appendChild(xe)}:y=function(){setTimeout(de,0)};varH,V=[];functionde(){H=!0;for(varxe,Ce,be=V.length;be;){for(Ce=V,V=[],xe=-1;++xe<be;)Ce[xe]();be=V.length}H=!1}u.exports=K;functionK(xe){V.push(xe)===1&&!H&&y()}}).call(this,typeofglobal!="undefined"?global:typeofself!="undefined"?self:typeofwindow!="undefined"?window:{})},{}],2:[function(a,u,d){"use strict";varm=a(1);functionb(){}vary={},F=["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!==b&&K(this,X)}z.prototype.catch=function(X){returnthis.then(null,X)},z.prototype.then=function(X,ne){if(typeofX!="function"&&this.state===W||typeofne!="function"&&this.state===F)returnthis;varoe=newthis.constructor(b);if(this.state!==fe){var_e=this.state===W?X:ne;V(oe,_e,this.outcome)}elsethis.queue.push(newH(oe,X,ne));returnoe};functionH(X,ne,oe){this.promise=X,typeofne=="function"&&(this.onFulfilled=ne,this.callFulfilled=this.otherCallFulfilled),typeofoe=="function"&&(this.onRejected=oe,this.callRejected=this.otherCallRejected)}H.prototype.callFulfilled=function(X){y.resolve(this.promise,X)},H.prototype.otherCallFulfilled=function(X){V(this.promise,this.onFulfilled,X)},H.prototype.callRejected=function(X){y.reject(this.promise,X)},H.prototype.otherCallRejected=function(X){V(this.promise,this.onRejected,X)};functionV(X,ne,oe){m(function(){var_e;try{_e=ne(oe)}catch(ze){returny.reject(X,ze)}_e===X?y.reject(X,newTypeError("Cannot resolve promise with itself")):y.resolve(X,_e)})}y.resolve=function(X,ne){varoe=xe(de,ne);if(oe.status==="error")returny.reject(X,oe.value);var_e=oe.value;if(_e)K(X,_e);else{X.state=W,X.outcome=ne;for(varze=-1,Ne=X.queue.length;++ze<Ne;)X.queue[ze].callFulfilled(ne)}returnX},y.reject=function(X,ne){X.state=F,X.outcome=ne;for(varoe=-1,_e=X.queue.length;++oe<_e;)X.queue[oe].callRejected(ne);returnX};functionde(X){varne=X&&X.then;if(X&&(typeofX=="object"||typeofX=="function")&&typeofne=="function")returnfunction(){ne.apply(X,arguments)}}functionK(X,ne){varoe=!1;function_e(Je){oe||(oe=!
`},d=window.c2t({noInitialRun:!0,print:u,printErr:u}),m=d.FS,b=Qe()+".bin",y=Qe()+".wav";m.writeFile(b,st(),{encoding:"binary"});var F=["-2bc",b+","+t.toString(16),y];d.callMain(F);var W=m.readFile(y,{encoding:"binary"});if(W){var fe=new Blob([W],{type:"audio/wav"});(0,Mt.saveAs)(fe,y),a+="Then connect your audio output to the cassette input, turn up the volume, and play the audio file.",vt(a)}})}function zl(l){_t("lib/makewav.js").then(()=>{let t="",r=function(b){t+=b+`
ConnectyouraudiooutputtotheSuperChargerinput,turnupthevolume,andplaytheaudiofile.`,vt(t)}})})}function Vl(l){var t=rt(Qe());let r=t+".tap",a=new He(t),u=new Za({sine_wave:!0}),d=st(),m=d[0]+d[1]*256;d=d.slice(2),a.setContent({data:d,startAddress:m,type:He.FILE_TYPE_NON_RELOCATABLE}),a.generateSound(u);let b=u.getTAPData();if(b){let y=new Blob([b],{type:"application/octet-stream"});(0,Mt.saveAs)(y,r)}}function es(){switch(dt(ae)){case"vcs":return zl;case"apple2":return Hl;case"c64":return Vl}}function To(l){if(st()==null)return we("Please fix errors before exporting."),!0;var t=es();if(t===void 0)return we("Cassette export is not supported on this platform."),!0;t(l)}function Co(l){if(st()==null)return we("Please finish compiling with no errors before downloading ROM."),!0;var t=rt(Qe());if(P.getDownloadFile){var r=P.getDownloadFile(),t=rt(Qe());(0,Mt.saveAs)(r.blob,t+r.extension)}else if(st()instanceof Uint8Array){var a=new Blob([st()],{type:"application/octet-stream"}),u=P.getROMExtension&&P.getROMExtension(st())||"-"+dt(ae)+".bin";(0,Mt.saveAs)(a,t+u)}else we(`The"${ae}"platformdoesn'thavedownloadableROMs.`)}function Po(l){var t=pe.getCurrentText();if(!t)return!1;var r=new Blob([t],{type:"text/plain;charset=utf-8"});(0,Mt.saveAs)(r,Ro(),{autoBom:!1})}async function ko(){let l=(await import("./jszip.min-R7NPJJ5M.js")).default;return new l}async function Ao(l){var t=await ko();Gt().iterateFiles((r,a)=>{a&&t.file(ft(r),a)}),t.generateAsync({type:"blob"}).then(r=>{(0,Mt.saveAs)(r,Qe()+"-"+dt(ae)+".zip")})}function Do(l){let t=P.getDebugSymbolFile&&P.getDebugSymbolFile();if(!t){we("This project does not have debug information.");return}var r=rt(Qe());(0,Mt.saveAs)(t.blob,r+t.extension,{autoBom:!1})}async function Fo(l){var t=await ko(),r=await rr().keys();Me(!0);try{var a=0;await Promise.all(r.map(d=>rr().getItem(d).then(m=>{Dt(a++/(r.length+1)),m&&t.file(d,m)})));var u=await t.generateAsync({type:"blob"});(0,Mt.saveAs)(u,dt(ae)+"-all.zip")}finally{Me(!1)}}var ts=!1;function Lo(){ts||_t("lib/gif.js").then(()=>{var l=$("#emulator").find("canvas")[0];if(!l){we("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 r=new GIF({workerScript:"lib/gif.worker.js",workers:4,quality:10,rotate:t}),a=$("#videoPreviewImage");r.on("progress",y=>{Dt(y)}),r.on("finished",y=>{a.attr("src",URL.createObjectURL(y)),Me(!1),P.resume(),$("#videoPreviewModal").modal("show")});var u=20,d=300,m=0;console.log("Recording video",l),$("#emulator").css("backgroundColor","#cc3333");var b=()=>{m++>d?(console.log("Rendering video"),$("#emulator").css("backgroundColor","inherit"),Me(!0),P.pause(),r.render(),ts=!1):(r.addFrame(l,{delay:u,copy:!0}),setTimeout(b,u),ts=!0)};b()})}var Gl=Pl(),Sr=ya(),te=ha(window.location.search||"?"),ae,_r,Be,P,me,pe,tr,Io,is,Ci=$("#controls_top"),Ye,ot,ns,Tr,kn,Tt,Pi=Nr(te.electron),lt=Nr(te.embed),ki,Ai,An=!1,Wr=!1,Dn=null,Mo=null,as=!1,No="c.PC == 0x6000";function rr(){return Tt}function Gt(){return me}function st(){return Tr}function wi(){return Io}var ql={dasm:"6502",acme:"6502",cc65:"text/x-csrc",ca65:"6502",nesasm:"6502",z80asm:"z80",sdasz80:"z80",sdcc:"text/x-csrc",verilator:"verilog",jsasm:"z80",zmac:"z80",bataribasic:"bataribasic",markdown:"markdown",js:"javascript",xasm6809:"z80",cmoc:"text/x-csrc",yasm:"gas",smlrc:"text/x-csrc",inform6:"inform6",fastbasic:"fastbasic",basic:"basic",silice:"verilog",wiz:"text/x-wiz",vasmarm:"vasm",armips:"vasm",ecs:"ecs","remote:llvm-mos":"text/x-csrc",cc7800:"text/x-csrc"},Yl={dasm:"https://raw.githubusercontent.com/sehugg/dasm/master/doc/dasm.txt",cc65:"https://cc65.github.io/doc/cc65.html",ca65:"https://cc65.github.io/doc/ca65.html",sdcc:"http://sdcc.sourceforge.net/doc/sdccman.pdf",verilator:"https://www.veripool.org/ftp/verilator_doc.pdf",fastbasic:"https://github.com/dmsc/fastbasic/blob/master/manual.md",bataribasic:"help/bataribasic/manual.html",wiz:"https://github.com/wiz-lang/wiz/blob/master/readme.md#wiz",s
`,$o(l),te.newfile?ss(!0,!0):vt('Could not find file "'+l+'". Loading default file.'),delete te.newfile,Mn()}}function ls(l){if(l=="/")te={repo:"/"};else if(l.indexOf("://")>=0){var t=vi(l);t&&(te={repo:t.repopath})}else te.platform=ae,te.file=l;Er()}async function ru(l){var t=P.getToolForFilename(l);try{return await $.get("presets/"+dt(ae)+"/skeleton."+t,"text")}catch(r){we("Could not load skeleton for "+ae+"/"+t+"; using blank file")}}function us(l){return l.indexOf(" ")>=0?(we("No spaces in filenames, please."),!1):!0}function iu(l){return bootbox.prompt({title:"Enter the name of your new main source file.",placeholder:"newfile"+P.getDefaultExtension(),callback:t=>{if(t&&t.trim().length>0){if(!us(t))return;t.indexOf(".")<0&&(t+=P.getDefaultExtension());var r=t;xr("workspace","file","new"),te.newfile="1",ls(r)}}}),!0}function nu(l){let t=$('<input type="file" multiple accept="*" style="display:none">'),r=t[0];t.change(a=>{au(r.files)}),t.click()}function au(l){console.log(l);var t=0;function r(){var a=l[t++];if(!a)console.log("Done uploading",t),t>2?(vt("Files uploaded."),setTimeout(Fi,1e3)):(te.file=l[0].name,bootbox.confirm({message:"Open '"+Sr.sanitize(te.file)+"' as main project file?",buttons:{confirm:{label:"Open As New Project"},cancel:{label:"Include/Link With Project Later"}},callback:m=>{m?Er():setTimeout(Fi,1e3)}})),xr("workspace","file","upload");else{var u=a.name,d=new FileReader;d.onload=function(m){var b=m.target.result,y=new Uint8Array(b);vr(u,y)||(y=ln(y).replace(`\r
`,`
`)),pe.updateFile(u,y),console.log("Uploaded "+u+" "+y.length+" bytes"),r()},d.readAsArrayBuffer(a)}}l&&r()}async function su(l){var t=window.showDirectoryPicker;t||we("This browser can't open local files on your computer, yet. Try Chrome.");var r=await t(),a=r.name,u="__localfs__"+a,d={handle:r},m=rs.createInstance({name:u,version:2});await m.setItem(u,d),te={localfs:a},Er(!0)}async function ou(l){return new Promise((t,r)=>{bootbox.prompt(Sr.sanitize(l),a=>{t(a)})})}async function lu(l){let t={mode:"readwrite"};var r="__localfs__"+l,a=rs.createInstance({name:r,version:2}),u=await a.getItem(r),d=u.handle;console.log(u,d);var m=await d.queryPermission(t);if(console.log(m),m!=="granted"&&(await ou("Request permissions to access filesystem?"),m=await d.requestPermission(t)),m!=="granted"){we("Could not get permission to access filesystem.");return}return{getFileData:async b=>{console.log("getFileData",b);let y=await d.getFileHandle(b,{create:!1});console.log("getFileData",y);let F=await y.getFile();console.log("getFileData",F);let W=await(vr(b)?F.binary():F.text());return console.log(y,F,W),W},setFileData:async(b,y)=>{}}}function Qe(){return ft(me.mainPath)}function Ro(){return ft(pe.getActiveID())}function uu(l){var t=pe.getActive();if(t&&t.setText){var r=pe.getActiveID();$.get("presets/"+dt(ae)+"/"+r,a=>{bootbox.confirm("Reset '"+Sr.sanitize(r)+"' to default?",u=>{u&&t.setText(a)})},"text").fail(()=>{Be?we("Can only revert built-in examples. If you want to revert all files, You can pull from the repository."):we("Can only revert built-in examples.")})}else we("Cannot revert the active window. Please choose a text file.")}function cu(l){var t=pe.getActive();if(t&&t.getPath){var r=pe.getActiveID();bootbox.confirm("Delete '"+Sr.sanitize(r)+"'?",a=>{a&&Tt.removeItem(r).then(()=>{te.file==r?(Cr.unsetLastPreset(),Er()):(Fi(),vt("Deleted "+r))})})}else we("Cannot delete the active window.")}function fu(l){var t=pe.getActive();if(t&&t.getPath&&me.getFile(t.getPath())){var r=pe.getActiveID();bootbox.prompt({title:"Rename '"+Sr.sanitize(r)+"' to?",value:r,callback:a=>{var u=me.getFile(t.getPath());if(a&&a!=r&&u){if(!us(a))return;Tt.removeItem(r).then(()=>Tt.setItem(a,u)).then(()=>{Fi(),alert("Renamed "+r+" to "+a),r==me.mainPath&&ls(a)})}}})}else we("Cannot rename the active window.")}function du(l){let t={},r,a=P.getPresets?P.getPresets():[];for(var u=0;u<a.length;u++){var d=a[u],m=d.chapter?d.chapter+". "+d.name:d.name,b=d.id==me.mainPath;d.category?r=$("<optgroup />").attr("label","Examples: "+d.category).appendTo(l):r||(r=$("<optgroup />").attr("label","Examples").appendTo(l)),r.append($("<option />").val(d.id).text(m).attr("selected",b?"selected":null)),b&&(kn=d),t[d.id]=m}return t}function hu(l){if(Ct&&!Pi){var t=0,r=Or();if(r){let u=$("<optgroup />").attr("label","Repositories").appendTo(l);for(let d in r){var a=r[d];a.platform_id&&dt(a.platform_id)==dt(ae)&&u.append($("<option />").val(a.url).text(a.url.substring(a.url.indexOf("/"))))}}}}async function Wo(l,t,r,a){let u=await Tt.keys();u||(u=[]);let d;for(var m=0;m<u.length;m++){let b=u[m];if(b.startsWith(r)&&!a[b]){d||(d=$("<optgroup />").attr("label",t).appendTo(l));let y=b.substring(r.length);d.append($("<option />").val(b).text(y).attr("selected",b==me.mainPath?"selected":null))}}}function jo(l){l.css("visibility","visible");var t=me.mainPath;l.val()!=t&&l.append($("<option />").val(t).text(t).attr("selected","selected"))}async function Fi(){var l=$("#preset_select").empty();if(Be)l.append($("<option />").val("/").text("Leave Repository")),$("#repo_name").text(ft(Be)+"/").show(),await Wo(l,Be,"",{}),jo(l);else{hu(l);var t=du(l);await Wo(l,"Local Files","",t),jo(l)}l.off("change").change(function(r){ls($(this).val().toString())})}function pu(l){var t=$("<p/>");if(l.path!=null){var r=l.line?l.label?`(${l.path}@${l.label})`:`(${l.path}:${l.line})`:`(${l.path})`,a=$("<a/>").text(r),u=l.path;u==Qe()&&(u=me.mainPath),pe.isWindow(u)&&a.click(d=>{var m=pe.createOrShow(u);m instanceof yi&&m.setCurrentLine(l,!0)}),t.append(a),t.append(" ")}return t.append($("<span/>").tex
`;me.loadFiles([d]).then(b=>{b&&b.length?we(u+" already exists; including anyway"):me.updateFile(d,`
`),a.insertText(m),Di()})}}}):we("Can't insert text in this window -- switch back to main file")}function Ou(){var l=Qe(),t=P.getToolForFilename(l);l.endsWith(".c")||t=="sdcc"||t=="cc65"||t=="cmoc"||t=="smlrc"?Yt("Header",".h",r=>'#include "'+r+'"'):t=="dasm"||t=="zmac"?Yt("Include",".inc",r=>' include "'+r+'"'):t=="ca65"||t=="sdasz80"||t=="vasm"||t=="armips"?Yt("Include",".inc",r=>' .include "'+r+'"'):t=="verilator"?Yt("Verilog",".v",r=>'`include"'+r+'"'):t=="wiz"?Yt("Include",".wiz",r=>'import"'+r+'";'):t=="ecs"?Yt("Include",".ecs",r=>'import"'+r+'"'):t=="acme"?Yt("Include",".acme",r=>'!src"'+r+'"'):we("Can'taddincludefiletothisprojecttype("+t+")")}function $u(){var l=Qe(),t=P.getToolForFilename(l);l.endsWith(".c")||t=="sdcc"||t=="cc65"||t=="cmoc"||t=="smlrc"?Yt("LinkedC(or.s)",".c",r=>'//#link "'+r+'"'):l.endsWith("asm")||l.endsWith(".s")||t=="ca65"||t=="lwasm"?Yt("LinkedASM",".inc",r=>';#link "'+r+'"'):we("Can'taddlinkedfiletothisprojecttype("+t+")")}function Wu(){if(Ye=new hn($("#toolbar")[0],null),Ye.grp.prop("id","run_bar"),Ye.add("ctrl+alt+r","Reset","glyphicon-refresh",Cu).prop("id","dbg_reset"),Ye.add("ctrl+alt+,","Pause","glyphicon-pause",bu).prop("id","dbg_pause"),Ye.add("ctrl+alt+.","Resume","glyphicon-play",Vo).prop("id","dbg_go"),P.restartAtPC&&Ye.add("ctrl+alt+/","RestartatCursor","glyphicon-play-circle",Eu).prop("id","dbg_restartatline"),Ye.newGroup(),Ye.grp.prop("id","debug_bar"),P.runEval&&Ye.add("ctrl+alt+e","ResetandDebug","glyphicon-fast-backward",Pu).prop("id","dbg_restart"),P.stepBack&&Ye.add("ctrl+alt+b","StepBackwards","glyphicon-step-backward",Tu).prop("id","dbg_stepback"),P.step&&Ye.add("ctrl+alt+s","SingleStep","glyphicon-step-forward",yu).prop("id","dbg_step"),P.stepOver&&Ye.add("ctrl+alt+t","StepOver","glyphicon-hand-right",xu).prop("id","dbg_stepover"),P.runUntilReturn&&Ye.add("ctrl+alt+o","StepOutofSubroutine","glyphicon-hand-up",_u).prop("id","dbg_stepout"),P.runToVsync&&Ye.add("ctrl+alt+n","NextFrame/Interrupt","glyphicon-forward",wu).prop("id","dbg_tovsync"),(P.runEval||P.runToPC)&&!ae.startsWith("verilog")&&Ye.add("ctrl+alt+l","RunToLine","glyphicon-save",Su).prop("id","dbg_toline"),Ye.newGroup(),Ye.grp.prop("id","xtra_bar"),$(".dropdown-menu").collapse({toggle:!1}),$("#item_new_file").click(iu),$("#item_upload_file").click(nu),$("#item_open_directory").click(su),$("#item_github_login").click(mo),$("#item_github_logout").click(vo),$("#item_github_import").click(bo),$("#item_github_publish").click(yo),$("#item_github_push").click(xo),$("#item_github_pull").click(wo),$("#item_repo_delete").click(So),$("#item_share_file").click(_o),$("#item_reset_file").click(uu),$("#item_rename_file").click(fu),$("#item_delete_file").click(cu),P.runEval?$("#item_debug_expr").click(ku).show():$("#item_debug_expr").hide(),$("#item_download_rom").click(Co),$("#item_download_file").click(Po),$("#item_download_zip").click(Ao),P.getDebugSymbolFile?$("#item_download_sym").click(Do):$("#item_download_sym").hide(),$("#item_download_allzip").click(Fo),$("#item_record_video").click(Lo),es()?$("#item_export_cassette").click(To):$("#item_export_cassette").hide(),P.setFrameRate&&P.getFrameRate&&($("#dbg_slower").click(Fu),$("#dbg_faster").click(Lu),$("#dbg_slowest").click(Ru),$("#dbg_fastest").click(Iu)),$("#item_addfile_include").click(Ou),$("#item_addfile_link").click($u),$("#item_request_persist").click(()=>ss(!0,!1)),qo(),P.newCodeAnalyzer&&Ye.add(null,"AnalyzeCPUTiming","glyphicon-time",Mu),P.setRecorder&&P.advance&&ju(),P.showHelp){let{li:r,a}=os("help__"+ae,is+"Help");$("#help_menu").append(r),$(a).click(()=>window.open(P.showHelp(),"_8bws_help"))}letl=P.getToolForFilename(Qe()),t=Yl[l];if(t){let{li:r,a}=os("help__"+l,l+"Help");$("#help_menu").append(r),$(a).click(()=>window.open(t,"_8bws_help"))}}functionju(){varl=$("#replayslider"),t=$("#clockslider"),r=$("#replay_frame"),a=$("#replay_clock");P.advanceFrameClock||$("#clockdiv").hide();varu=()=>{r.text(ot.lastSeekFrame+""),a.text(ot.lastSeekStep+"")},d=y=>{ir();varF=parseInt(l.val().toString()),W=parseInt(t.val()