1
0
mirror of https://github.com/sehugg/8bitworkshop.git synced 2026-03-11 13:41:43 +00:00

Deploying to gh-pages from @ sehugg/8bitworkshop@26ab4ed8be 🚀

This commit is contained in:
sehugg
2026-03-02 08:14:46 +00:00
parent 5b13cc9752
commit 1b52cea70f
22 changed files with 176 additions and 114 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,2 +1,2 @@
import{a as x}from"./chunk-3FIVEUG2.js";import{t as y}from"./chunk-JT32QYPK.js";import"./chunk-JSIZCY7X.js";import"./chunk-LNOKARBD.js";import"./chunk-74HRQAF6.js";import{H as m,m as c,p}from"./chunk-PTIFNBOG.js";import{$ as a,C as d,J as f,n as h}from"./chunk-QWAF5HSH.js";import"./chunk-KT7KMEQC.js";var n=31,s=class extends p{constructor(){super();this.cpuFrequency=1e6;this.defaultROMSize=32768;this.cpu=new c;this.ram=new Uint8Array(16384);this.read=a([[0,16383,16383,e=>this.ram[e]],[16384,16384,65535,e=>this.serial.byteAvailable()?128:0],[16385,16385,65535,e=>this.serial.recvByte()],[16386,16386,65535,e=>this.serial.clearToSend()?128:0],[32768,65535,32767,e=>this.rom&&this.rom[e]]]);this.write=a([[0,16383,16383,(e,r)=>{this.ram[e]=r}],[16387,16387,65535,(e,r)=>this.serial.sendByte(r)],[16399,16399,65535,(e,r)=>{this.inputs[n]=1}]]);this.connectCPUMemoryBus(this)}connectSerialIO(e){this.serial=e}readConst(e){return this.read(e)}advanceFrame(e){for(var r=0;r<this.cpuFrequency/60&&!(e&&e());)r+=this.advanceCPU();return r}advanceCPU(){if(this.isHalted())return 1;var e=super.advanceCPU();return this.serial&&this.serial.advance(e),e}reset(){this.inputs[n]=0,super.reset(),this.serial&&this.serial.reset()}isHalted(){return this.inputs[n]!=0}};var S=[{id:"hello.dasm",name:"Hello World (ASM)"}],l=class{constructor(t){t.style.overflowY="auto";var e=$('<div id="gameport"/>').appendTo(t);$('<p class="transcript-header">Serial Output</p>').appendTo(e);var r=$('<div id="windowport" class="transcript"/>').appendTo(e);this.div=r[0]}start(){this.tty=new x(this.div,!1)}reset(){this.tty.clear()}saveState(){return this.tty.saveState()}loadState(t){this.tty.loadState(t)}};function v(i){return i==10?"":i<32?String.fromCharCode(i+9216):String.fromCharCode(i)}var u=class{constructor(){this.bufferedRead=!0;this.cyclesPerByte=1e6/(57600/8);this.maxOutputBytes=4096}clearToSend(){return this.outputBytes.length<this.maxOutputBytes}sendByte(t){this.clearToSend()&&(this.outputBytes.push(t),this.viewer.tty.addtext(v(t),34),t==10&&this.viewer.tty.newline(),this.clearToSend()||(this.viewer.tty.newline(),this.viewer.tty.addtext("\u26A0\uFE0F OUTPUT BUFFER FULL \u26A0\uFE0F",4)))}byteAvailable(){return this.readIndex()>this.inputIndex}recvByte(){var t=this.readIndex();this.inputIndex=t;var e=(this.inputBytes&&this.inputBytes[t])|0;return this.viewer.tty.addtext(v(e),18),e==10&&this.viewer.tty.newline(),e}readIndex(){return this.bufferedRead?this.inputIndex+1:Math.floor(this.clk/this.cyclesPerByte)}reset(){this.inputIndex=-1,this.clk=0,this.outputBytes=[],this.bufin=""}advance(t){this.clk+=t}saveState(){return{clk:this.clk,idx:this.inputIndex,out:this.outputBytes.slice()}}loadState(t){this.clk=t.clk,this.inputIndex=t.idx,this.outputBytes=t.out.slice()}},o=class extends m{constructor(e){super(e);this.getMemoryMap=function(){return{main:[{name:"RAM",start:0,size:16384,type:"ram"},{name:"ROM",start:32768,size:32768,type:"rom"}]}};this.serview=new l(e)}async start(){super.start(),this.serial=new u,this.serial.viewer=this.serview,this.serview.start(),this.machine.connectSerialIO(this.serial)}reset(){this.serial.inputBytes=d(this.internalFiles["serialin.dat"]),super.reset(),this.serview.reset()}isBlocked(){return this.machine.isHalted()}advance(e){return this.isBlocked()?(this.internalFiles["serialout.dat"]=h(this.serial.outputBytes),y(),0):super.advance(e)}saveState(){var e=super.saveState();return e.serial=this.serial.saveState(),e.serview=this.serview.saveState(),e}loadState(e){super.loadState(e),this.serial.loadState(e.serial),this.serview.loadState(e.serview)}newMachine(){return new s}getPresets(){return S}getDefaultExtension(){return".dasm"}readAddress(e){return this.machine.readConst(e)}};f["devel-6502"]=o;export{u as SerialTestHarness};
//# sourceMappingURL=devel-CNP2JNQV.js.map
import{a as x}from"./chunk-3FIVEUG2.js";import{t as y}from"./chunk-LWLIHPJ5.js";import"./chunk-JSIZCY7X.js";import"./chunk-LNOKARBD.js";import"./chunk-PYHFDIHM.js";import{H as m,m as c,p}from"./chunk-PTIFNBOG.js";import{$ as a,C as d,J as f,n as h}from"./chunk-QWAF5HSH.js";import"./chunk-KT7KMEQC.js";var n=31,s=class extends p{constructor(){super();this.cpuFrequency=1e6;this.defaultROMSize=32768;this.cpu=new c;this.ram=new Uint8Array(16384);this.read=a([[0,16383,16383,e=>this.ram[e]],[16384,16384,65535,e=>this.serial.byteAvailable()?128:0],[16385,16385,65535,e=>this.serial.recvByte()],[16386,16386,65535,e=>this.serial.clearToSend()?128:0],[32768,65535,32767,e=>this.rom&&this.rom[e]]]);this.write=a([[0,16383,16383,(e,r)=>{this.ram[e]=r}],[16387,16387,65535,(e,r)=>this.serial.sendByte(r)],[16399,16399,65535,(e,r)=>{this.inputs[n]=1}]]);this.connectCPUMemoryBus(this)}connectSerialIO(e){this.serial=e}readConst(e){return this.read(e)}advanceFrame(e){for(var r=0;r<this.cpuFrequency/60&&!(e&&e());)r+=this.advanceCPU();return r}advanceCPU(){if(this.isHalted())return 1;var e=super.advanceCPU();return this.serial&&this.serial.advance(e),e}reset(){this.inputs[n]=0,super.reset(),this.serial&&this.serial.reset()}isHalted(){return this.inputs[n]!=0}};var S=[{id:"hello.dasm",name:"Hello World (ASM)"}],l=class{constructor(t){t.style.overflowY="auto";var e=$('<div id="gameport"/>').appendTo(t);$('<p class="transcript-header">Serial Output</p>').appendTo(e);var r=$('<div id="windowport" class="transcript"/>').appendTo(e);this.div=r[0]}start(){this.tty=new x(this.div,!1)}reset(){this.tty.clear()}saveState(){return this.tty.saveState()}loadState(t){this.tty.loadState(t)}};function v(i){return i==10?"":i<32?String.fromCharCode(i+9216):String.fromCharCode(i)}var u=class{constructor(){this.bufferedRead=!0;this.cyclesPerByte=1e6/(57600/8);this.maxOutputBytes=4096}clearToSend(){return this.outputBytes.length<this.maxOutputBytes}sendByte(t){this.clearToSend()&&(this.outputBytes.push(t),this.viewer.tty.addtext(v(t),34),t==10&&this.viewer.tty.newline(),this.clearToSend()||(this.viewer.tty.newline(),this.viewer.tty.addtext("\u26A0\uFE0F OUTPUT BUFFER FULL \u26A0\uFE0F",4)))}byteAvailable(){return this.readIndex()>this.inputIndex}recvByte(){var t=this.readIndex();this.inputIndex=t;var e=(this.inputBytes&&this.inputBytes[t])|0;return this.viewer.tty.addtext(v(e),18),e==10&&this.viewer.tty.newline(),e}readIndex(){return this.bufferedRead?this.inputIndex+1:Math.floor(this.clk/this.cyclesPerByte)}reset(){this.inputIndex=-1,this.clk=0,this.outputBytes=[],this.bufin=""}advance(t){this.clk+=t}saveState(){return{clk:this.clk,idx:this.inputIndex,out:this.outputBytes.slice()}}loadState(t){this.clk=t.clk,this.inputIndex=t.idx,this.outputBytes=t.out.slice()}},o=class extends m{constructor(e){super(e);this.getMemoryMap=function(){return{main:[{name:"RAM",start:0,size:16384,type:"ram"},{name:"ROM",start:32768,size:32768,type:"rom"}]}};this.serview=new l(e)}async start(){super.start(),this.serial=new u,this.serial.viewer=this.serview,this.serview.start(),this.machine.connectSerialIO(this.serial)}reset(){this.serial.inputBytes=d(this.internalFiles["serialin.dat"]),super.reset(),this.serview.reset()}isBlocked(){return this.machine.isHalted()}advance(e){return this.isBlocked()?(this.internalFiles["serialout.dat"]=h(this.serial.outputBytes),y(),0):super.advance(e)}saveState(){var e=super.saveState();return e.serial=this.serial.saveState(),e.serview=this.serview.saveState(),e}loadState(e){super.loadState(e),this.serial.loadState(e.serial),this.serview.loadState(e.serview)}newMachine(){return new s}getPresets(){return S}getDefaultExtension(){return".dasm"}readAddress(e){return this.machine.readConst(e)}};f["devel-6502"]=o;export{u as SerialTestHarness};
//# sourceMappingURL=devel-YROO5BZO.js.map

View File

@@ -1,2 +1,2 @@
import{b as v,c as P}from"./chunk-74HRQAF6.js";import{A as p,E as w,J as c,l as u,m,y as g}from"./chunk-QWAF5HSH.js";import{e as I}from"./chunk-KT7KMEQC.js";var k=I(P()),i,a,l,h=(function(e){if(!e||e.length==0)return{};for(var r={},t=0;t<e.length;++t){var o=e[t].split("=",2);o.length==1?r[o[0]]="":r[o[0]]=decodeURIComponent(o[1].replace(/\+/g," "))}return r})(window.location.search.substr(1).split("&"));function x(){typeof window.onerror=="object"&&(window.onerror=function(e,r,t,o,n){var s=e+" "+r+" "+t+":"+o+", "+n;$.get("/error?msg="+encodeURIComponent(s),"text")})}function M(){var e=!1;document.addEventListener("visibilitychange",function(r){document.visibilityState=="hidden"&&a.isRunning()?(a.pause(),e=!0):document.visibilityState=="visible"&&e&&(a.resume(),e=!1)}),$(window).on("focus",function(){e&&(a.resume(),e=!1)}),$(window).on("blur",function(){a.isRunning()&&(a.pause(),e=!0)})}async function y(e,r){if(!r){alert("No ROM found.");return}console.log(r.length+" bytes"),await a.loadROM(e,r),a.resume()}function R(){return $("#emulator").find("canvas")}function E(e,r,t){w("gif.js/dist/gif.js").then(()=>{var o=R()[0];if(!o){alert("Could not find canvas element to record video!");return}var n=0;o.style&&o.style.transform&&(o.style.transform.indexOf("rotate(-90deg)")>=0?n=-1:o.style.transform.indexOf("rotate(90deg)")>=0&&(n=1));var s=new GIF({workerScript:"gif.js/dist/gif.worker.js",workers:4,quality:10,rotate:n});s.on("finished",function(C){console.log("finished encoding GIF"),t(C)}),e=e||100+(Math.random()*256&3),r=r||100+(Math.random()*256&15);var f=0;console.log("Recording video",o);var d=()=>{f++>r?(console.log("Rendering video"),s.render()):(s.addFrame(o,{delay:e,copy:!0}),setTimeout(d,e))};d()})}async function S(e){if(!c[i])throw Error("Invalid platform '"+i+"'.");a=new c[i]($("#emuscreen")[0]),await a.start(),e.rec&&R().on("focus",()=>{a.resume()});var r=e.n||"Game",t,o=e.url,n=e.r;if(o)return console.log(o),g(o,f=>{y(r,f)},"arraybuffer"),!0;if(n){var s=m(atob(n));t=new u().decode(s)}return M(),y(r,t),!0}async function b(e){if(e.data&&(e=e.data),i=e.p,!i)throw new Error("No platform variable!");try{var r=await v(p(i));console.log("starting platform",i),await S(e)}catch(t){console.log(t),alert('Platform "'+i+'" not supported.')}}function F(){x(),h.p&&b(h)}window.addEventListener("message",O,!1);function O(e){if(e.data){var r=e.data.cmd;if(r=="start"&&!a)b(e);else if(r=="reset")a.reset(),l.reset();else if(r=="getReplay"){var t={frameCount:l.frameCount,checkpoints:l.checkpoints,framerecs:l.framerecs,checkpointInterval:l.checkpointInterval,maxCheckpoints:l.maxCheckpoints};e.source.postMessage({ack:r,replay:t},e.origin)}else if(r=="watchState"){var o=new Function("platform","state",e.data.fn);l.callbackNewCheckpoint=n=>{e.source.postMessage({ack:r,state:o(a,n)},e.origin)}}else r=="recordVideo"?E(e.data.intervalMsec,e.data.maxFrames,function(n){e.data.filename&&(0,k.saveAs)(n,e.data.filename),e.source.postMessage({ack:r,gif:n},e.origin)}):console.log("Unknown data.cmd: "+r)}}self===top&&(document.body.style.backgroundColor="#555");F();export{a as platform,i as platform_id,F as startEmbed,l as stateRecorder};
import{b as v,c as P}from"./chunk-PYHFDIHM.js";import{A as p,E as w,J as c,l as u,m,y as g}from"./chunk-QWAF5HSH.js";import{e as I}from"./chunk-KT7KMEQC.js";var k=I(P()),i,a,l,h=(function(e){if(!e||e.length==0)return{};for(var r={},t=0;t<e.length;++t){var o=e[t].split("=",2);o.length==1?r[o[0]]="":r[o[0]]=decodeURIComponent(o[1].replace(/\+/g," "))}return r})(window.location.search.substr(1).split("&"));function x(){typeof window.onerror=="object"&&(window.onerror=function(e,r,t,o,n){var s=e+" "+r+" "+t+":"+o+", "+n;$.get("/error?msg="+encodeURIComponent(s),"text")})}function M(){var e=!1;document.addEventListener("visibilitychange",function(r){document.visibilityState=="hidden"&&a.isRunning()?(a.pause(),e=!0):document.visibilityState=="visible"&&e&&(a.resume(),e=!1)}),$(window).on("focus",function(){e&&(a.resume(),e=!1)}),$(window).on("blur",function(){a.isRunning()&&(a.pause(),e=!0)})}async function y(e,r){if(!r){alert("No ROM found.");return}console.log(r.length+" bytes"),await a.loadROM(e,r),a.resume()}function R(){return $("#emulator").find("canvas")}function E(e,r,t){w("gif.js/dist/gif.js").then(()=>{var o=R()[0];if(!o){alert("Could not find canvas element to record video!");return}var n=0;o.style&&o.style.transform&&(o.style.transform.indexOf("rotate(-90deg)")>=0?n=-1:o.style.transform.indexOf("rotate(90deg)")>=0&&(n=1));var s=new GIF({workerScript:"gif.js/dist/gif.worker.js",workers:4,quality:10,rotate:n});s.on("finished",function(C){console.log("finished encoding GIF"),t(C)}),e=e||100+(Math.random()*256&3),r=r||100+(Math.random()*256&15);var f=0;console.log("Recording video",o);var d=()=>{f++>r?(console.log("Rendering video"),s.render()):(s.addFrame(o,{delay:e,copy:!0}),setTimeout(d,e))};d()})}async function S(e){if(!c[i])throw Error("Invalid platform '"+i+"'.");a=new c[i]($("#emuscreen")[0]),await a.start(),e.rec&&R().on("focus",()=>{a.resume()});var r=e.n||"Game",t,o=e.url,n=e.r;if(o)return console.log(o),g(o,f=>{y(r,f)},"arraybuffer"),!0;if(n){var s=m(atob(n));t=new u().decode(s)}return M(),y(r,t),!0}async function b(e){if(e.data&&(e=e.data),i=e.p,!i)throw new Error("No platform variable!");try{var r=await v(p(i));console.log("starting platform",i),await S(e)}catch(t){console.log(t),alert('Platform "'+i+'" not supported.')}}function F(){x(),h.p&&b(h)}window.addEventListener("message",O,!1);function O(e){if(e.data){var r=e.data.cmd;if(r=="start"&&!a)b(e);else if(r=="reset")a.reset(),l.reset();else if(r=="getReplay"){var t={frameCount:l.frameCount,checkpoints:l.checkpoints,framerecs:l.framerecs,checkpointInterval:l.checkpointInterval,maxCheckpoints:l.maxCheckpoints};e.source.postMessage({ack:r,replay:t},e.origin)}else if(r=="watchState"){var o=new Function("platform","state",e.data.fn);l.callbackNewCheckpoint=n=>{e.source.postMessage({ack:r,state:o(a,n)},e.origin)}}else r=="recordVideo"?E(e.data.intervalMsec,e.data.maxFrames,function(n){e.data.filename&&(0,k.saveAs)(n,e.data.filename),e.source.postMessage({ack:r,gif:n},e.origin)}):console.log("Unknown data.cmd: "+r)}}self===top&&(document.body.style.backgroundColor="#555");F();export{a as platform,i as platform_id,F as startEmbed,l as stateRecorder};
//# sourceMappingURL=embedui.js.map

View File

@@ -1,18 +1,19 @@
// This file was generated by lezer-generator. You probably shouldn't edit it.
import {LRParser} from "@lezer/lr"
const spec_Identifier = {__proto__:null,ADC:96, AND:96, ASL:96, BCC:96, BCS:96, BEQ:96, BIT:96, BMI:96, BNE:96, BPL:96, BRK:96, BVC:96, BVS:96, CLC:96, CLD:96, CLI:96, CLV:96, CMP:96, CPX:96, CPY:96, DEC:96, DEX:96, DEY:96, EOR:96, INC:96, INX:96, INY:96, JMP:96, JSR:96, LDA:96, LDX:96, LDY:96, LSR:96, NOP:96, ORA:96, PHA:96, PHP:96, PLA:96, PLP:96, ROL:96, ROR:96, RTI:96, RTS:96, SBC:96, SEC:96, SED:96, SEI:96, STA:96, STX:96, STY:96, TAX:96, TAY:96, TSX:96, TXA:96, TXS:96, TYA:96, adc:96, and:96, asl:96, bcc:96, bcs:96, beq:96, bit:96, bmi:96, bne:96, bpl:96, brk:96, bvc:96, bvs:96, clc:96, cld:96, cli:96, clv:96, cmp:96, cpx:96, cpy:96, dec:96, dex:96, dey:96, eor:96, inc:96, inx:96, iny:96, jmp:96, jsr:96, lda:96, ldx:96, ldy:96, lsr:96, nop:96, ora:96, pha:96, php:96, pla:96, plp:96, rol:96, ror:96, rti:96, rts:96, sbc:96, sec:96, sed:96, sei:96, sta:96, stx:96, sty:96, tax:96, tay:96, tsx:96, txa:96, txs:96, tya:96, ".":102, X:104, Y:104, A:104, x:104, y:104, a:104, ORG:106, EQU:106, END:106, org:106, equ:106, end:106, ds:106, "ds.b":106, "ds.w":106, dc:106, "dc.b":106, "dc.w":106, seg:106, "seg.u":106, subroutine:106, echo:106, repeat:106, repend:106, set:106, processor:106, ".WORD":106, ".word":106, ".BYTE":106, ".byte":106, ".END":106, ".end":106, mac:108, endm:110, if:112, else:112, endif:112, err:114}
import {hexTokenizer} from "../../src/parser/tokens-6502"
const spec_Identifier = {__proto__:null,adc:104, and:104, asl:104, bcc:104, bcs:104, beq:104, bit:104, bmi:104, bne:104, bpl:104, brk:104, bvc:104, bvs:104, clc:104, cld:104, cli:104, clv:104, cmp:104, cpx:104, cpy:104, dec:104, dex:104, dey:104, eor:104, inc:104, inx:104, iny:104, jmp:104, jsr:104, lda:104, ldx:104, ldy:104, lsr:104, nop:104, ora:104, pha:104, php:104, pla:104, plp:104, rol:104, ror:104, rti:104, rts:104, sbc:104, sec:104, sed:104, sei:104, sta:104, stx:104, sty:104, tax:104, tay:104, tsx:104, txa:104, txs:104, tya:104, ADC:104, AND:104, ASL:104, BCC:104, BCS:104, BEQ:104, BIT:104, BMI:104, BNE:104, BPL:104, BRK:104, BVC:104, BVS:104, CLC:104, CLD:104, CLI:104, CLV:104, CMP:104, CPX:104, CPY:104, DEC:104, DEX:104, DEY:104, EOR:104, INC:104, INX:104, INY:104, JMP:104, JSR:104, LDA:104, LDX:104, LDY:104, LSR:104, NOP:104, ORA:104, PHA:104, PHP:104, PLA:104, PLP:104, ROL:104, ROR:104, RTI:104, RTS:104, SBC:104, SEC:104, SED:104, SEI:104, STA:104, STX:104, STY:104, TAX:104, TAY:104, TSX:104, TXA:104, TXS:104, TYA:104, ".":110, a:112, x:112, y:112, A:112, X:112, Y:112, org:114, equ:114, end:114, ".end":114, ORG:114, EQU:114, END:114, ".END":114, ds:114, "ds.b":114, "ds.w":114, dc:114, "dc.b":114, "dc.w":114, seg:114, "seg.u":114, DS:114, "DS.B":114, "DS.W":114, DC:114, "DC.B":114, "DC.W":114, SEG:114, "SEG.U":114, ".byte":114, ".word":114, ".BYTE":114, ".WORD":114, subroutine:114, SUBROUTINE:114, processor:114, PROCESSOR:114, echo:114, repeat:114, repend:114, set:114, ECHO:114, REPEAT:114, REPEND:114, SET:114, hex:116, HEX:116, mac:118, endm:120, if:122, else:122, endif:122, err:124}
export const parser = LRParser.deserialize({
version: 14,
states: "(jQYQPOOOtQPO'#C`OOQO'#Cd'#CdO#TQPO'#CcOOQO'#DQ'#DQO#eQPO'#DPOOQO'#DS'#DSO#oQPO'#DROOQO'#DT'#DTOOQO'#DU'#DUOOQO'#DV'#DVOOQO'#Cb'#CbOOQO'#C_'#C_O#tQPO'#C_O$_QPO'#C_OOQO'#DW'#DWQYQPOOOOQO,58z,58zOOQO'#Ct'#CtOOQO'#Cu'#CuO$fQPO'#CqOOQO'#Cx'#CxOOQO'#Cv'#CvO%[QPO'#CeOOQO'#Cg'#CgO$fQPO'#CgOOQO'#DO'#DOO$fQPO'#CeOOQO'#Ce'#CeOOQO,58},58}O%fQPO'#DXO$fQPO'#CgO&VQPO,59kOOQO,59m,59mOOQO,58y,58yO&aQPO,58yOOQO-E7U-E7UO&fQPO,59]OOQO'#Ck'#CkOOQO'#Cl'#ClO$fQPO,59RO$fQPO,59RO$fQPO,59RO$fQPO,59RO']QPO,59PO'bQPO,59RO'lQPO,59PO'sQPO,59ROOQO-E7V-E7VOOQO1G.e1G.eO)XQPO1G.mO)`QPO1G.mO)gQPO1G.mOOQO1G.m1G.mOOQO1G.k1G.kO']QPO1G.kO*wQPO7+$VOOQO<<Gq<<Gq",
stateData: "+T~O!OOSPOS~OTPO!QQO!VSO!WUO!XWO!YXO!ZYO![[O~O!PaO!QSX!VSX!WSX!XSX!YSX!ZSX![SX~OTfObdOcdOfdOgdOkfOmfOnfO!RbO!ScO!TeO~OYkOoiO!UjO![VX~P!`OooO![sX~P!`OTqO~O![rO~O!QQO!VSO!WUO!XWO!YXO!ZYO~O![rO~P#yOooO~P!`O[xO]yO^zOa{Ob{Oc{Od{O!RvO!SwO~Oq|O![XX~P$mOT{Xf{Xg{Xk{Xm{Xn{Xo{X!T{X![{X~P$mOooO![sa~P!`O![!RO~Oqea![eaTeafeageakeameaneaoea!Teapea~P$mO!UjO~Op!VOq!XO~P$mO![Xa~P$mOp!VO~P$mO^zOa{Ob{Oc{Od{O!RvO!SwO[ZiqZi![ZiTZifZigZikZimZinZioZi!TZipZi~O]yO~P'zO]Zi~P'zOa{Ob{Oc{Od{O[Zi]Zi^ZiqZi!RZi!SZi![ZiTZifZigZikZimZinZioZi!TZipZi~Op!ZO~OmnkdTk~",
goto: "%O|PPP}!RP!V!^!c!hP!kPPP#[#[PPPP#fPP#s#s#fP$QPPPPP$_!^$h!^$m!^!^!^$r$xT_O`T^O`S]O`Rs^VZO^`VRO^`RmRQgRSnTpQudQ}iQ!OkQ!PoQ!SxQ!TyQ!UzR!V{azgnu}!O!P!S!TghRTdikopxyz{gdRTdikopxyz{gfRTdikopxyz{QlRQ!W|R!Y!XVTO^`VVO^`Q`ORt`QpTR!Qp",
nodeNames: "⚠ Comment Program Line Label Identifier Statement Instruction Opcode Operand # Expression LogicOp BitOp CompareOp BinaryLt BinaryGt ArithOp Plus Minus Percent UnaryExpression Not Tilde UnaryLt UnaryGt Value Number CurrentAddress String Char ( ) Comma Register Directive PseudoOp MacroDef Mac MacEnd ControlOp ErrorOp",
maxTerm: 58,
skippedNodes: [0,1],
repeatNodeCount: 2,
tokenData: "*m~RoXY#SYZ#_]^#_pq#Sqr#jrs#wst%ktu%puv&[vw&rwx'Pxy'syz'xz{'}{|(S|}(X}!O(^!O!P(c!P!Q'}!Q![(w![!])P!]!^)U!^!_)m!_!`)}!`!a*T!c!}(c#Q#R)x#R#S(c#T#o(c#p#q*`#r#s*h~#XQ!O~XY#Spq#S~#dQ![~YZ#_]^#_~#oPf~!_!`#r~#wO^~~#zWOY#wZr#wrs$ds#O#w#O#P$i#P;'S#w;'S;=`%e<%lO#w~$iOm~~$lRO;'S#w;'S;=`$u;=`O#w~$xXOY#wZr#wrs$ds#O#w#O#P$i#P;'S#w;'S;=`%e;=`<%l#w<%lO#w~%hP;=`<%l#w~%pOY~~%sR!Q![%|!c!i%|#T#Z%|~&RRk~!Q![%|!c!i%|#T#Z%|~&aQd~!Q!R&g!R!S&g~&lQk~!Q!R&g!R!S&g~&wP]~vw&z~'PO[~~'SSOY'`Z;'S'`;'S;=`'m<%lO'`~'ePn~wx'h~'mOn~~'pP;=`<%l'`~'xOo~~'}Op~~(SOa~~(XOb~~(^Oq~~(cOc~~(hTT~!O!P(c!Q![(c!c!}(c#R#S(c#T#o(c~(|Pk~!Q![(w~)UO!P~~)ZSP~OY)UZ;'S)U;'S;=`)g<%lO)U~)jP;=`<%l)U~)rQ!R~!^!_)x!_!`#r~)}O]~~*QP!_!`#r~*YQ!S~!_!`#r!`!a)x~*eP]~#p#q&z~*mOg~",
tokenizers: [0],
topRules: {"Program":[0,2]},
specialized: [{term: 5, get: (value) => spec_Identifier[value] || -1}],
tokenPrec: 458
states: ")YQYQQOOOwQQO'#CaOOQO'#Ce'#CeO#ZQQO'#CdOOQO'#DR'#DRO#kQQO'#DQOOQP'#DT'#DTO#uQRO'#DSOOQO'#DV'#DVO#}QQO'#DUOOQO'#DW'#DWOOQO'#DX'#DXOOQO'#DY'#DYOOQO'#Cc'#CcOOQO'#C`'#C`O$SQQO'#C`O$pQQO'#C`OOQO'#DZ'#DZQYQQOOOOQO,58{,58{OOQO'#Cu'#CuOOQO'#Cv'#CvO$wQQO'#CrOOQO'#Cy'#CyOOQO'#Cw'#CwO%mQQO'#CfOOQO'#Ch'#ChO$wQQO'#ChOOQO'#DP'#DPO$wQQO'#CfOOQO'#Cf'#CfOOQO,59O,59OO%wQQO'#D[O$wQQO'#ChO&hQQO,59lOOQP'#D]'#D]O&rQRO,59nOOQO,59p,59pOOQO,58z,58zO&zQQO,58zOOQO-E7X-E7XO'PQQO,59^OOQO'#Cl'#ClOOQO'#Cm'#CmO$wQQO,59SO$wQQO,59SO$wQQO,59SO$wQQO,59SO'vQQO,59QO'{QQO,59SO(VQQO,59QO(^QQO,59SOOQO-E7Y-E7YOOQP-E7Z-E7ZOOQO1G.f1G.fO)rQQO1G.nO)yQQO1G.nO*QQQO1G.nOOQO1G.n1G.nOOQO1G.l1G.lO'vQQO1G.lO+bQQO7+$WOOQO<<Gr<<Gr",
stateData: "+n~O!SOSQOS~OUPO!UQO!ZSO![UO!]WO!^YO!_ZO!`[O!a^O~O!TcO!UTX!ZTX![TX!]TX!^TX!_TX!`TX!aTX~OUhOcfOdfOgfOhfOlhOnhOohO!VdO!WeO!XgO~OZmOpkO!YlO!aWX~P!fOpqO!atX~P!fOPsO!avX~OUuO~O!avO~O!UQO!ZSO![UO!]WO!^YO!_ZO!`[O~O!avO~P$XOpqO~P!fO]|O^}O_!OOb!POc!POd!POe!PO!VzO!W{O~Or!QO!aYX~P%OOU!OXg!OXh!OXl!OXn!OXo!OXp!OX!X!OX!a!OX~P%OOpqO!ata~P!fOPsO!ava~O!a!WO~Orfa!afaUfagfahfalfanfaofapfa!Xfaqfa~P%OO!YlO~Oq![Or!^O~P%OO!aYa~P%OOq![O~P%OO_!OOb!POc!POd!POe!PO!VzO!W{O][ir[i!a[iU[ig[ih[il[in[io[ip[i!X[iq[i~O^}O~P(eO^[i~P(eOb!POc!POd!POe!PO][i^[i_[ir[i!V[i!W[i!a[iU[ig[ih[il[in[io[ip[i!X[iq[i~Oq!`O~OnoleUl~",
goto: "%_!QPPPP!R!VP!Z!b!g!lP!oPPP#`#`PPPP#jPP#w#w#jP$UPPPPP$c!b$l!b$q!b$v!b!b!b${%R%XTaObT`ObS_ObRw`V]O`bVRO`bRoRQiRSpTrQyfQ!RkQ!SmQ!TqQ!X|Q!Y}Q!Z!OR![!Pa!Oipy!R!S!T!X!YgjRTfkmqr|}!O!PgfRTfkmqr|}!O!PghRTfkmqr|}!O!PQnRQ!]!QR!_!^VTO`bVVO`bVXO`bQbORxbQrTR!UrQtVR!Vt",
nodeNames: "⚠ HexByte Comment Program Line Label Identifier Statement Instruction Opcode Operand # Expression LogicOp BitOp CompareOp BinaryLt BinaryGt ArithOp Plus Minus Percent UnaryExpression Not Tilde UnaryLt UnaryGt Value Number CurrentAddress String Char ( ) Comma Register Directive PseudoOp HexDirective HexOp MacroDef Mac MacEnd ControlOp ErrorOp",
maxTerm: 63,
skippedNodes: [0,2],
repeatNodeCount: 3,
tokenData: "*m~RoXY#SYZ#_]^#_pq#Sqr#jrs#wst%ktu%puv&[vw&rwx'Pxy'syz'xz{'}{|(S|}(X}!O(^!O!P(c!P!Q'}!Q![(w![!])P!]!^)U!^!_)m!_!`)}!`!a*T!c!}(c#Q#R)x#R#S(c#T#o(c#p#q*`#r#s*h~#XQ!S~XY#Spq#S~#dQ!a~YZ#_]^#_~#oPg~!_!`#r~#wO_~~#zWOY#wZr#wrs$ds#O#w#O#P$i#P;'S#w;'S;=`%e<%lO#w~$iOn~~$lRO;'S#w;'S;=`$u;=`O#w~$xXOY#wZr#wrs$ds#O#w#O#P$i#P;'S#w;'S;=`%e;=`<%l#w<%lO#w~%hP;=`<%l#w~%pOZ~~%sR!Q![%|!c!i%|#T#Z%|~&RRl~!Q![%|!c!i%|#T#Z%|~&aQe~!Q!R&g!R!S&g~&lQl~!Q!R&g!R!S&g~&wP^~vw&z~'PO]~~'SSOY'`Z;'S'`;'S;=`'m<%lO'`~'ePo~wx'h~'mOo~~'pP;=`<%l'`~'xOp~~'}Oq~~(SOb~~(XOc~~(^Or~~(cOd~~(hTU~!O!P(c!Q![(c!c!}(c#R#S(c#T#o(c~(|Pl~!Q![(w~)UO!T~~)ZSQ~OY)UZ;'S)U;'S;=`)g<%lO)U~)jP;=`<%l)U~)rQ!V~!^!_)x!_!`#r~)}O^~~*QP!_!`#r~*YQ!W~!_!`#r!`!a)x~*eP^~#p#q&z~*mOh~",
tokenizers: [hexTokenizer, 0],
topRules: {"Program":[0,3]},
specialized: [{term: 6, get: (value) => spec_Identifier[value] || -1}],
tokenPrec: 483
})

View File

@@ -1,40 +1,43 @@
// This file was generated by lezer-generator. You probably shouldn't edit it.
export const
Comment = 1,
Program = 2,
Line = 3,
Label = 4,
Identifier = 5,
Statement = 6,
Instruction = 7,
Opcode = 8,
Operand = 9,
Expression = 11,
LogicOp = 12,
BitOp = 13,
CompareOp = 14,
BinaryLt = 15,
BinaryGt = 16,
ArithOp = 17,
Plus = 18,
Minus = 19,
Percent = 20,
UnaryExpression = 21,
Not = 22,
Tilde = 23,
UnaryLt = 24,
UnaryGt = 25,
Value = 26,
Number = 27,
CurrentAddress = 28,
String = 29,
Char = 30,
Comma = 33,
Register = 34,
Directive = 35,
PseudoOp = 36,
MacroDef = 37,
Mac = 38,
MacEnd = 39,
ControlOp = 40,
ErrorOp = 41
HexByte = 1,
Comment = 2,
Program = 3,
Line = 4,
Label = 5,
Identifier = 6,
Statement = 7,
Instruction = 8,
Opcode = 9,
Operand = 10,
Expression = 12,
LogicOp = 13,
BitOp = 14,
CompareOp = 15,
BinaryLt = 16,
BinaryGt = 17,
ArithOp = 18,
Plus = 19,
Minus = 20,
Percent = 21,
UnaryExpression = 22,
Not = 23,
Tilde = 24,
UnaryLt = 25,
UnaryGt = 26,
Value = 27,
Number = 28,
CurrentAddress = 29,
String = 30,
Char = 31,
Comma = 34,
Register = 35,
Directive = 36,
PseudoOp = 37,
HexDirective = 38,
HexOp = 39,
MacroDef = 40,
Mac = 41,
MacEnd = 42,
ControlOp = 43,
ErrorOp = 44

View File

@@ -38,6 +38,8 @@ exports.Lezer6502 = language_1.LRLanguage.define({
BinaryGt: highlight_1.tags.compareOperator,
UnaryLt: highlight_1.tags.arithmeticOperator,
UnaryGt: highlight_1.tags.arithmeticOperator,
HexOp: highlight_1.tags.definition(highlight_1.tags.variableName),
HexByte: highlight_1.tags.number,
Mac: highlight_1.tags.definitionKeyword,
MacEnd: highlight_1.tags.definitionKeyword,
"MacroDef/Identifier": highlight_1.tags.macroName,

View File

@@ -1 +1 @@
{"version":3,"file":"lang-6502.js","sourceRoot":"","sources":["../../src/parser/lang-6502.ts"],"names":[],"mappings":";;;AAoDA,0BAEC;AAtDD,mDAA6H;AAC7H,gDAAuD;AACvD,gFAA8D;AAEjD,QAAA,SAAS,GAAe,qBAAU,CAAC,MAAM,CAAC;IACnD,MAAM,EAAE,6BAAM,CAAC,SAAS,CAAC;QACrB,KAAK,EAAE;YACH,yBAAc,CAAC,GAAG,CAAC;gBACf,WAAW,EAAE,IAAA,0BAAe,EAAC,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;aAC/D,CAAC;YACF,uBAAY,CAAC,GAAG,CAAC;gBACb,WAAW,EAAE,qBAAU;aAC1B,CAAC;YACF,IAAA,qBAAS,EAAC;gBACN,UAAU,EAAE,gBAAC,CAAC,YAAY;gBAC1B,cAAc,EAAE,gBAAC,CAAC,IAAI;gBACtB,QAAQ,EAAE,gBAAC,CAAC,UAAU,CAAC,gBAAC,CAAC,YAAY,CAAC;gBACtC,MAAM,EAAE,gBAAC,CAAC,OAAO;gBACjB,KAAK,EAAE,gBAAC,CAAC,SAAS;gBAClB,MAAM,EAAE,gBAAC,CAAC,MAAM;gBAChB,IAAI,EAAE,gBAAC,CAAC,MAAM;gBACd,MAAM,EAAE,gBAAC,CAAC,MAAM;gBAChB,QAAQ,EAAE,gBAAC,CAAC,QAAQ;gBACpB,OAAO,EAAE,gBAAC,CAAC,WAAW;gBACtB,OAAO,EAAE,gBAAC,CAAC,kBAAkB;gBAC7B,IAAI,EAAE,gBAAC,CAAC,kBAAkB;gBAC1B,KAAK,EAAE,gBAAC,CAAC,kBAAkB;gBAC3B,OAAO,EAAE,gBAAC,CAAC,kBAAkB;gBAC7B,KAAK,EAAE,gBAAC,CAAC,eAAe;gBACxB,KAAK,EAAE,gBAAC,CAAC,eAAe;gBACxB,OAAO,EAAE,gBAAC,CAAC,aAAa;gBACxB,GAAG,EAAE,gBAAC,CAAC,aAAa;gBACpB,SAAS,EAAE,gBAAC,CAAC,eAAe;gBAC5B,QAAQ,EAAE,gBAAC,CAAC,eAAe;gBAC3B,QAAQ,EAAE,gBAAC,CAAC,eAAe;gBAC3B,OAAO,EAAE,gBAAC,CAAC,kBAAkB;gBAC7B,OAAO,EAAE,gBAAC,CAAC,kBAAkB;gBAC7B,GAAG,EAAE,gBAAC,CAAC,iBAAiB;gBACxB,MAAM,EAAE,gBAAC,CAAC,iBAAiB;gBAC3B,qBAAqB,EAAE,gBAAC,CAAC,SAAS;gBAClC,SAAS,EAAE,gBAAC,CAAC,cAAc;gBAC3B,OAAO,EAAE,gBAAC,CAAC,OAAO;gBAClB,KAAK,EAAE,gBAAC,CAAC,SAAS;gBAClB,KAAK,EAAE,gBAAC,CAAC,KAAK;aACjB,CAAC;SACL;KACJ,CAAC;IACF,YAAY,EAAE;QACV,aAAa,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE;KAC/B;CACJ,CAAC,CAAA;AAEF,SAAgB,OAAO;IACnB,OAAO,IAAI,0BAAe,CAAC,iBAAS,CAAC,CAAA;AACzC,CAAC"}
{"version":3,"file":"lang-6502.js","sourceRoot":"","sources":["../../src/parser/lang-6502.ts"],"names":[],"mappings":";;;AAsDA,0BAEC;AAxDD,mDAA6H;AAC7H,gDAAuD;AACvD,gFAA8D;AAEjD,QAAA,SAAS,GAAe,qBAAU,CAAC,MAAM,CAAC;IACnD,MAAM,EAAE,6BAAM,CAAC,SAAS,CAAC;QACrB,KAAK,EAAE;YACH,yBAAc,CAAC,GAAG,CAAC;gBACf,WAAW,EAAE,IAAA,0BAAe,EAAC,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;aAC/D,CAAC;YACF,uBAAY,CAAC,GAAG,CAAC;gBACb,WAAW,EAAE,qBAAU;aAC1B,CAAC;YACF,IAAA,qBAAS,EAAC;gBACN,UAAU,EAAE,gBAAC,CAAC,YAAY;gBAC1B,cAAc,EAAE,gBAAC,CAAC,IAAI;gBACtB,QAAQ,EAAE,gBAAC,CAAC,UAAU,CAAC,gBAAC,CAAC,YAAY,CAAC;gBACtC,MAAM,EAAE,gBAAC,CAAC,OAAO;gBACjB,KAAK,EAAE,gBAAC,CAAC,SAAS;gBAClB,MAAM,EAAE,gBAAC,CAAC,MAAM;gBAChB,IAAI,EAAE,gBAAC,CAAC,MAAM;gBACd,MAAM,EAAE,gBAAC,CAAC,MAAM;gBAChB,QAAQ,EAAE,gBAAC,CAAC,QAAQ;gBACpB,OAAO,EAAE,gBAAC,CAAC,WAAW;gBACtB,OAAO,EAAE,gBAAC,CAAC,kBAAkB;gBAC7B,IAAI,EAAE,gBAAC,CAAC,kBAAkB;gBAC1B,KAAK,EAAE,gBAAC,CAAC,kBAAkB;gBAC3B,OAAO,EAAE,gBAAC,CAAC,kBAAkB;gBAC7B,KAAK,EAAE,gBAAC,CAAC,eAAe;gBACxB,KAAK,EAAE,gBAAC,CAAC,eAAe;gBACxB,OAAO,EAAE,gBAAC,CAAC,aAAa;gBACxB,GAAG,EAAE,gBAAC,CAAC,aAAa;gBACpB,SAAS,EAAE,gBAAC,CAAC,eAAe;gBAC5B,QAAQ,EAAE,gBAAC,CAAC,eAAe;gBAC3B,QAAQ,EAAE,gBAAC,CAAC,eAAe;gBAC3B,OAAO,EAAE,gBAAC,CAAC,kBAAkB;gBAC7B,OAAO,EAAE,gBAAC,CAAC,kBAAkB;gBAC7B,KAAK,EAAE,gBAAC,CAAC,UAAU,CAAC,gBAAC,CAAC,YAAY,CAAC;gBACnC,OAAO,EAAE,gBAAC,CAAC,MAAM;gBACjB,GAAG,EAAE,gBAAC,CAAC,iBAAiB;gBACxB,MAAM,EAAE,gBAAC,CAAC,iBAAiB;gBAC3B,qBAAqB,EAAE,gBAAC,CAAC,SAAS;gBAClC,SAAS,EAAE,gBAAC,CAAC,cAAc;gBAC3B,OAAO,EAAE,gBAAC,CAAC,OAAO;gBAClB,KAAK,EAAE,gBAAC,CAAC,SAAS;gBAClB,KAAK,EAAE,gBAAC,CAAC,KAAK;aACjB,CAAC;SACL;KACJ,CAAC;IACF,YAAY,EAAE;QACV,aAAa,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE;KAC/B;CACJ,CAAC,CAAA;AAEF,SAAgB,OAAO;IACnB,OAAO,IAAI,0BAAe,CAAC,iBAAS,CAAC,CAAA;AACzC,CAAC"}

View File

@@ -1,6 +1,6 @@
// This file was generated by lezer-generator. You probably shouldn't edit it.
import {LRParser} from "@lezer/lr"
const spec_Identifier = {__proto__:null,ld:86, push:86, pop:86, inc:86, dec:86, add:86, adc:86, sub:86, sbc:86, and:86, or:86, xor:86, cp:86, ret:86, jp:86, jr:86, call:86, rst:86, nop:86, halt:86, di:86, ei:86, im:86, ex:86, exx:86, neg:86, cpl:86, ccf:86, scf:86, rlca:86, rla:86, rrca:86, rra:86, rlc:86, rl:86, rrc:86, rr:86, sla:86, sra:86, srl:86, bit:86, set:86, res:86, out:86, in:86, djnz:86, rld:86, rrd:86, ldi:86, ldir:86, ldd:86, lddr:86, cpi:86, cpir:86, cpd:86, cpdr:86, ini:86, inir:86, ind:86, indr:86, outi:86, otir:86, outd:86, otdr:86, LD:86, PUSH:86, POP:86, INC:86, DEC:86, ADD:86, ADC:86, SUB:86, SBC:86, AND:86, OR:86, XOR:86, CP:86, RET:86, JP:86, JR:86, CALL:86, RST:86, NOP:86, HALT:86, DI:86, EI:86, IM:86, EX:86, EXX:86, NEG:86, CPL:86, CCF:86, SCF:86, RLCA:86, RLA:86, RRCA:86, RRA:86, RLC:86, RL:86, RRC:86, RR:86, SLA:86, SRA:86, SRL:86, BIT:86, SET:86, RES:86, OUT:86, IN:86, DJNZ:86, RLD:86, RRD:86, LDI:86, LDIR:86, LDD:86, LDDR:86, CPI:86, CPIR:86, CPD:86, CPDR:86, INI:86, INIR:86, IND:86, INDR:86, OUTI:86, OTIR:86, OUTD:86, OTDR:86, mov:86, mvi:86, lxi:86, lda:86, sta:86, lhld:86, shld:86, ldax:86, stax:86, adi:86, aci:86, sui:86, sbi:86, sbb:86, ana:86, ani:86, xra:86, xri:86, ora:86, ori:86, cmp:86, inr:86, dcr:86, inx:86, dcx:86, dad:86, daa:86, cma:86, stc:86, cmc:86, ral:86, rar:86, jmp:86, jnz:86, jz:86, jnc:86, jc:86, jpo:86, jpe:86, jm:86, cnz:86, cz:86, cnc:86, cc:86, cpo:86, cpe:86, cm:86, rnz:86, rz:86, rnc:86, rc:86, rpo:86, rpe:86, rp:86, rm:86, pchl:86, sphl:86, xthl:86, xchg:86, hlt:86, MOV:86, MVI:86, LXI:86, LDA:86, STA:86, LHLD:86, SHLD:86, LDAX:86, STAX:86, ADI:86, ACI:86, SUI:86, SBI:86, SBB:86, ANA:86, ANI:86, XRA:86, XRI:86, ORA:86, ORI:86, CMP:86, INR:86, DCR:86, INX:86, DCX:86, DAD:86, DAA:86, CMA:86, STC:86, CMC:86, RAL:86, RAR:86, JMP:86, JNZ:86, JZ:86, JNC:86, JC:86, JPO:86, JPE:86, JM:86, CNZ:86, CZ:86, CNC:86, CC:86, CPO:86, CPE:86, CM:86, RNZ:86, RZ:86, RNC:86, RC:86, RPO:86, RPE:86, RP:86, RM:86, PCHL:86, SPHL:86, XTHL:86, XCHG:86, HLT:86, a:92, b:92, c:92, d:92, e:92, h:92, l:92, i:92, r:92, af:92, bc:92, de:92, hl:92, ix:92, iy:92, sp:92, pc:92, psw:92, A:92, B:92, C:92, D:92, E:92, H:92, L:92, I:92, R:92, AF:92, BC:92, DE:92, HL:92, IX:92, IY:92, SP:92, PC:92, PSW:92, nz:94, z:94, nc:94, po:94, pe:94, p:94, m:94, NZ:94, Z:94, NC:94, PO:94, PE:94, P:94, M:94, org:96, equ:96, end:96, public:96, ORG:96, EQU:96, END:96, PUBLIC:96}
const spec_Identifier = {__proto__:null,ld:86, push:86, pop:86, inc:86, dec:86, add:86, adc:86, sub:86, sbc:86, and:86, or:86, xor:86, cp:86, ret:86, jp:86, jr:86, call:86, rst:86, nop:86, halt:86, di:86, ei:86, im:86, ex:86, exx:86, neg:86, cpl:86, ccf:86, scf:86, rlca:86, rla:86, rrca:86, rra:86, rlc:86, rl:86, rrc:86, rr:86, sla:86, sra:86, srl:86, bit:86, set:86, res:86, out:86, in:86, djnz:86, rld:86, rrd:86, ldi:86, ldir:86, ldd:86, lddr:86, cpi:86, cpir:86, cpd:86, cpdr:86, ini:86, inir:86, ind:86, indr:86, outi:86, otir:86, outd:86, otdr:86, LD:86, PUSH:86, POP:86, INC:86, DEC:86, ADD:86, ADC:86, SUB:86, SBC:86, AND:86, OR:86, XOR:86, CP:86, RET:86, JP:86, JR:86, CALL:86, RST:86, NOP:86, HALT:86, DI:86, EI:86, IM:86, EX:86, EXX:86, NEG:86, CPL:86, CCF:86, SCF:86, RLCA:86, RLA:86, RRCA:86, RRA:86, RLC:86, RL:86, RRC:86, RR:86, SLA:86, SRA:86, SRL:86, BIT:86, SET:86, RES:86, OUT:86, IN:86, DJNZ:86, RLD:86, RRD:86, LDI:86, LDIR:86, LDD:86, LDDR:86, CPI:86, CPIR:86, CPD:86, CPDR:86, INI:86, INIR:86, IND:86, INDR:86, OUTI:86, OTIR:86, OUTD:86, OTDR:86, mov:86, mvi:86, lxi:86, lda:86, sta:86, lhld:86, shld:86, ldax:86, stax:86, adi:86, aci:86, sui:86, sbi:86, sbb:86, ana:86, ani:86, xra:86, xri:86, ora:86, ori:86, cmp:86, inr:86, dcr:86, inx:86, dcx:86, dad:86, daa:86, cma:86, stc:86, cmc:86, ral:86, rar:86, jmp:86, jnz:86, jz:86, jnc:86, jc:86, jpo:86, jpe:86, jm:86, cnz:86, cz:86, cnc:86, cc:86, cpo:86, cpe:86, cm:86, rnz:86, rz:86, rnc:86, rc:86, rpo:86, rpe:86, rp:86, rm:86, pchl:86, sphl:86, xthl:86, xchg:86, hlt:86, MOV:86, MVI:86, LXI:86, LDA:86, STA:86, LHLD:86, SHLD:86, LDAX:86, STAX:86, ADI:86, ACI:86, SUI:86, SBI:86, SBB:86, ANA:86, ANI:86, XRA:86, XRI:86, ORA:86, ORI:86, CMP:86, INR:86, DCR:86, INX:86, DCX:86, DAD:86, DAA:86, CMA:86, STC:86, CMC:86, RAL:86, RAR:86, JMP:86, JNZ:86, JZ:86, JNC:86, JC:86, JPO:86, JPE:86, JM:86, CNZ:86, CZ:86, CNC:86, CC:86, CPO:86, CPE:86, CM:86, RNZ:86, RZ:86, RNC:86, RC:86, RPO:86, RPE:86, RP:86, RM:86, PCHL:86, SPHL:86, XTHL:86, XCHG:86, HLT:86, a:92, b:92, c:92, d:92, e:92, h:92, l:92, i:92, r:92, af:92, bc:92, de:92, hl:92, ix:92, iy:92, sp:92, pc:92, psw:92, A:92, B:92, C:92, D:92, E:92, H:92, L:92, I:92, R:92, AF:92, BC:92, DE:92, HL:92, IX:92, IY:92, SP:92, PC:92, PSW:92, nz:94, z:94, nc:94, po:94, pe:94, p:94, m:94, NZ:94, Z:94, NC:94, PO:94, PE:94, P:94, M:94, defb:96, defw:96, defm:96, DEFB:96, DEFW:96, DEFM:96, org:96, equ:96, end:96, public:96, ORG:96, EQU:96, END:96, PUBLIC:96}
export const parser = LRParser.deserialize({
version: 14,
states: "'OQYQPOOOhQPO'#C`OOQO'#Ce'#CeO!qQPO'#CdOOQO'#DQ'#DQO!xQPO'#DPOOQO'#Cc'#CcOOQO'#C_'#C_O#PQPO'#C_O#UQPO'#C_OOQO'#DR'#DRQYQPOOOOQO,58z,58zOOQO'#Ct'#CtOOQO'#Cu'#CuOvQPO'#CqOOQO'#Cx'#CxOOQO'#Cy'#CyOOQO'#Cv'#CvO$OQPO'#CfOOQO'#Cg'#CgOvQPO'#CgOOQO,59O,59OO$YQPO'#DTO$|QPO,59kOOQO,58y,58yO%TQPO,58yOOQO-E7P-E7PO%YQPO,59]OOQO'#Ck'#CkOOQO'#Cl'#ClOvQPO,59ROvQPO,59ROvQPO,59ROvQPO,59ROvQPO'#DSO&SQPO,59QO&[QPO,59ROOQO-E7R-E7ROOQO1G.e1G.eO'sQPO1G.mO'zQPO1G.mO(RQPO1G.mOOQO1G.m1G.mO)fQPO,59nOOQO-E7Q-E7Q",

20
gen/parser/tokens-6502.js Normal file
View File

@@ -0,0 +1,20 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.hexTokenizer = void 0;
const lr_1 = require("@lezer/lr");
const lang_6502_grammar_terms_1 = require("../../gen/parser/lang-6502.grammar.terms");
function isHexDigit(ch) {
return (ch >= 48 && ch <= 57) || // 0-9
(ch >= 65 && ch <= 70) || // A-F
(ch >= 97 && ch <= 102); // a-f
}
exports.hexTokenizer = new lr_1.ExternalTokenizer((input) => {
if (!isHexDigit(input.peek(0)) || !isHexDigit(input.peek(1)))
return;
let len = 2;
while (isHexDigit(input.peek(len)))
len++;
if (len % 2 === 0)
input.acceptToken(lang_6502_grammar_terms_1.HexByte, len);
});
//# sourceMappingURL=tokens-6502.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"tokens-6502.js","sourceRoot":"","sources":["../../src/parser/tokens-6502.ts"],"names":[],"mappings":";;;AAAA,kCAA6C;AAC7C,sFAAkE;AAElE,SAAS,UAAU,CAAC,EAAU;IAC1B,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,IAAK,MAAM;QACpC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,IAAQ,MAAM;QACpC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,CAAA,CAAO,MAAM;AAC5C,CAAC;AAEY,QAAA,YAAY,GAAG,IAAI,sBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE;IACxD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAE,OAAM;IACpE,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAAE,GAAG,EAAE,CAAA;IACzC,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC;QAAE,KAAK,CAAC,WAAW,CAAC,iCAAO,EAAE,GAAG,CAAC,CAAA;AACtD,CAAC,CAAC,CAAA"}

View File

@@ -1 +1 @@
{"root":["../src/common/analysis.ts","../src/common/audio.ts","../src/common/baseplatform.ts","../src/common/binutils.ts","../src/common/devices.ts","../src/common/emu.ts","../src/common/mameplatform.ts","../src/common/probe.ts","../src/common/recorder.ts","../src/common/teletype.ts","../src/common/tokenizer.ts","../src/common/util.ts","../src/common/vlist.ts","../src/common/wasmplatform.ts","../src/common/workertypes.ts","../src/common/audio/CommodoreTape.ts","../src/common/basic/compiler.ts","../src/common/basic/fuzz.ts","../src/common/basic/run.ts","../src/common/basic/runtime.ts","../src/common/cpu/6809.ts","../src/common/cpu/ARM.ts","../src/common/cpu/MOS6502.ts","../src/common/cpu/ZilogZ80.ts","../src/common/cpu/disasm6502.ts","../src/common/cpu/disasmHuC6280.ts","../src/common/cpu/disasmz80.ts","../src/common/ecs/binpack.ts","../src/common/ecs/compiler.ts","../src/common/ecs/decoder.ts","../src/common/ecs/ecs.ts","../src/common/ecs/main.ts","../src/common/hdl/fuzz.ts","../src/common/hdl/hdlruntime.ts","../src/common/hdl/hdltypes.ts","../src/common/hdl/hdlwasm.ts","../src/common/hdl/vxmlparser.ts","../src/common/hdl/vxmltest.ts","../src/common/video/tms9918a.ts","../src/common/wasi/libretro.ts","../src/common/wasi/wasishim.ts","../src/ide/analytics.ts","../src/ide/dialogs.ts","../src/ide/embedui.ts","../src/ide/pixeleditor.ts","../src/ide/project.ts","../src/ide/services.ts","../src/ide/shareexport.ts","../src/ide/sync.ts","../src/ide/toolbar.ts","../src/ide/ui.ts","../src/ide/waveform.ts","../src/ide/windows.ts","../src/ide/views/asseteditor.ts","../src/ide/views/baseviews.ts","../src/ide/views/debug.ts","../src/ide/views/debugviews.ts","../src/ide/views/editors.ts","../src/ide/views/filters.ts","../src/ide/views/gutter.ts","../src/ide/views/tabs.ts","../src/ide/views/traceviews.ts","../src/ide/views/treeviews.ts","../src/ide/views/visuals.ts","../src/machine/apple2.ts","../src/machine/arm32.ts","../src/machine/astrocade.ts","../src/machine/atari7800.ts","../src/machine/atari8.ts","../src/machine/c64.ts","../src/machine/coleco.ts","../src/machine/cpc.ts","../src/machine/devel.ts","../src/machine/exidy.ts","../src/machine/galaxian.ts","../src/machine/kim1.ts","../src/machine/msx.ts","../src/machine/mw8080bw.ts","../src/machine/sms.ts","../src/machine/vdp_z80.ts","../src/machine/vic20.ts","../src/machine/vicdual.ts","../src/machine/williams.ts","../src/machine/zx.ts","../src/machine/chips/antic.ts","../src/machine/chips/gtia.ts","../src/machine/chips/pokey.ts","../src/parser/lang-6502.ts","../src/parser/lang-basic.ts","../src/parser/lang-bataribasic.ts","../src/parser/lang-fastbasic.ts","../src/parser/lang-inform6.ts","../src/parser/lang-verilog.ts","../src/parser/lang-wiz.ts","../src/parser/lang-z80.ts","../src/platform/_index.ts","../src/platform/apple2.ts","../src/platform/arm32.ts","../src/platform/astrocade.ts","../src/platform/atari7800.ts","../src/platform/atari8.ts","../src/platform/basic.ts","../src/platform/c64.ts","../src/platform/coleco.ts","../src/platform/cpc.ts","../src/platform/devel.ts","../src/platform/exidy.ts","../src/platform/galaxian.ts","../src/platform/gb.ts","../src/platform/kim1.ts","../src/platform/markdown.ts","../src/platform/msx.ts","../src/platform/mw8080bw.ts","../src/platform/nes.ts","../src/platform/pce.ts","../src/platform/sms.ts","../src/platform/sound_konami.ts","../src/platform/sound_williams.ts","../src/platform/vcs.ts","../src/platform/vector.ts","../src/platform/vectrex.ts","../src/platform/verilog.ts","../src/platform/vic20.ts","../src/platform/vicdual.ts","../src/platform/williams.ts","../src/platform/x86.ts","../src/platform/zmachine.ts","../src/platform/zx.ts","../src/test/testanalysis.ts","../src/test/testassembler.ts","../src/test/testecs.ts","../src/test/testelfparser.ts","../src/test/testlibretro.ts","../src/test/testutil.ts","../src/test/testwasishim.ts","../src/themes/cobalt.ts","../src/themes/disassemblyTheme.ts","../src/themes/editorTheme.ts","../src/themes/mbo.ts","../src/tools/runmachine.ts","../src/tools/sim6502.ts","../src/worker/assembler.ts","../src/worker/builder.ts","../src/worker/listingutils.ts","../src/worker/platforms.ts","../src/worker/wasiutils.ts","../src/worker/wasmutils.ts","../src/worker/workermain.ts","../src/worker/workertools.ts","../src/worker/server/buildenv.ts","../src/worker/server/clang.ts","../src/worker/server/server.ts","../src/worker/tools/acme.ts","../src/worker/tools/arm.ts","../src/worker/tools/bataribasic.ts","../src/worker/tools/cc2600.ts","../src/worker/tools/cc65.ts","../src/worker/tools/cc7800.ts","../src/worker/tools/dasm.ts","../src/worker/tools/ecs.ts","../src/worker/tools/m6502.ts","../src/worker/tools/m6809.ts","../src/worker/tools/mcpp.ts","../src/worker/tools/misc.ts","../src/worker/tools/oscar64.ts","../src/worker/tools/remote.ts","../src/worker/tools/sdcc.ts","../src/worker/tools/verilog.ts","../src/worker/tools/x86.ts","../src/worker/tools/z80.ts"],"version":"5.9.3"}
{"root":["../src/common/analysis.ts","../src/common/audio.ts","../src/common/baseplatform.ts","../src/common/binutils.ts","../src/common/devices.ts","../src/common/emu.ts","../src/common/mameplatform.ts","../src/common/probe.ts","../src/common/recorder.ts","../src/common/teletype.ts","../src/common/tokenizer.ts","../src/common/util.ts","../src/common/vlist.ts","../src/common/wasmplatform.ts","../src/common/workertypes.ts","../src/common/audio/CommodoreTape.ts","../src/common/basic/compiler.ts","../src/common/basic/fuzz.ts","../src/common/basic/run.ts","../src/common/basic/runtime.ts","../src/common/cpu/6809.ts","../src/common/cpu/ARM.ts","../src/common/cpu/MOS6502.ts","../src/common/cpu/ZilogZ80.ts","../src/common/cpu/disasm6502.ts","../src/common/cpu/disasmHuC6280.ts","../src/common/cpu/disasmz80.ts","../src/common/ecs/binpack.ts","../src/common/ecs/compiler.ts","../src/common/ecs/decoder.ts","../src/common/ecs/ecs.ts","../src/common/ecs/main.ts","../src/common/hdl/fuzz.ts","../src/common/hdl/hdlruntime.ts","../src/common/hdl/hdltypes.ts","../src/common/hdl/hdlwasm.ts","../src/common/hdl/vxmlparser.ts","../src/common/hdl/vxmltest.ts","../src/common/video/tms9918a.ts","../src/common/wasi/libretro.ts","../src/common/wasi/wasishim.ts","../src/ide/analytics.ts","../src/ide/dialogs.ts","../src/ide/embedui.ts","../src/ide/pixeleditor.ts","../src/ide/project.ts","../src/ide/services.ts","../src/ide/shareexport.ts","../src/ide/sync.ts","../src/ide/toolbar.ts","../src/ide/ui.ts","../src/ide/waveform.ts","../src/ide/windows.ts","../src/ide/views/asseteditor.ts","../src/ide/views/baseviews.ts","../src/ide/views/debug.ts","../src/ide/views/debugviews.ts","../src/ide/views/editors.ts","../src/ide/views/filters.ts","../src/ide/views/gutter.ts","../src/ide/views/tabs.ts","../src/ide/views/traceviews.ts","../src/ide/views/treeviews.ts","../src/ide/views/visuals.ts","../src/machine/apple2.ts","../src/machine/arm32.ts","../src/machine/astrocade.ts","../src/machine/atari7800.ts","../src/machine/atari8.ts","../src/machine/c64.ts","../src/machine/coleco.ts","../src/machine/cpc.ts","../src/machine/devel.ts","../src/machine/exidy.ts","../src/machine/galaxian.ts","../src/machine/kim1.ts","../src/machine/msx.ts","../src/machine/mw8080bw.ts","../src/machine/sms.ts","../src/machine/vdp_z80.ts","../src/machine/vic20.ts","../src/machine/vicdual.ts","../src/machine/williams.ts","../src/machine/zx.ts","../src/machine/chips/antic.ts","../src/machine/chips/gtia.ts","../src/machine/chips/pokey.ts","../src/parser/lang-6502.ts","../src/parser/lang-basic.ts","../src/parser/lang-bataribasic.ts","../src/parser/lang-fastbasic.ts","../src/parser/lang-inform6.ts","../src/parser/lang-verilog.ts","../src/parser/lang-wiz.ts","../src/parser/lang-z80.ts","../src/parser/tokens-6502.ts","../src/platform/_index.ts","../src/platform/apple2.ts","../src/platform/arm32.ts","../src/platform/astrocade.ts","../src/platform/atari7800.ts","../src/platform/atari8.ts","../src/platform/basic.ts","../src/platform/c64.ts","../src/platform/coleco.ts","../src/platform/cpc.ts","../src/platform/devel.ts","../src/platform/exidy.ts","../src/platform/galaxian.ts","../src/platform/gb.ts","../src/platform/kim1.ts","../src/platform/markdown.ts","../src/platform/msx.ts","../src/platform/mw8080bw.ts","../src/platform/nes.ts","../src/platform/pce.ts","../src/platform/sms.ts","../src/platform/sound_konami.ts","../src/platform/sound_williams.ts","../src/platform/vcs.ts","../src/platform/vector.ts","../src/platform/vectrex.ts","../src/platform/verilog.ts","../src/platform/vic20.ts","../src/platform/vicdual.ts","../src/platform/williams.ts","../src/platform/x86.ts","../src/platform/zmachine.ts","../src/platform/zx.ts","../src/test/testanalysis.ts","../src/test/testassembler.ts","../src/test/testecs.ts","../src/test/testelfparser.ts","../src/test/testlibretro.ts","../src/test/testutil.ts","../src/test/testwasishim.ts","../src/themes/cobalt.ts","../src/themes/disassemblyTheme.ts","../src/themes/editorTheme.ts","../src/themes/mbo.ts","../src/tools/runmachine.ts","../src/tools/sim6502.ts","../src/worker/assembler.ts","../src/worker/builder.ts","../src/worker/listingutils.ts","../src/worker/platforms.ts","../src/worker/wasiutils.ts","../src/worker/wasmutils.ts","../src/worker/workermain.ts","../src/worker/workertools.ts","../src/worker/server/buildenv.ts","../src/worker/server/clang.ts","../src/worker/server/server.ts","../src/worker/tools/acme.ts","../src/worker/tools/arm.ts","../src/worker/tools/bataribasic.ts","../src/worker/tools/cc2600.ts","../src/worker/tools/cc65.ts","../src/worker/tools/cc7800.ts","../src/worker/tools/dasm.ts","../src/worker/tools/ecs.ts","../src/worker/tools/m6502.ts","../src/worker/tools/m6809.ts","../src/worker/tools/mcpp.ts","../src/worker/tools/misc.ts","../src/worker/tools/oscar64.ts","../src/worker/tools/remote.ts","../src/worker/tools/sdcc.ts","../src/worker/tools/verilog.ts","../src/worker/tools/x86.ts","../src/worker/tools/z80.ts"],"version":"5.9.3"}

View File

@@ -1,2 +1,2 @@
import{A as z,B as A,C as B,D as C,b as a,c as b,d as c,e as d,f as e,g as f,h as g,i as h,j as i,k as j,l as k,m as l,n as m,o as n,p as o,q as p,r as q,s as r,t as s,u as t,v as u,w as v,x as w,y as x,z as y}from"./chunk-JT32QYPK.js";import"./chunk-JSIZCY7X.js";import"./chunk-LNOKARBD.js";import"./chunk-74HRQAF6.js";import"./chunk-PTIFNBOG.js";import"./chunk-QWAF5HSH.js";import"./chunk-KT7KMEQC.js";export{q as clearBreakpoint,f as current_project,A as emulationHalted,n as getCurrentEditorFilename,m as getCurrentMainFilename,k as getCurrentOutput,j as getCurrentProject,v as getPlatformAndRepo,i as getPlatformStore,z as getSaveState,y as getTestOutput,l as getWorkerParams,t as gotoNewLocation,s as haltEmulation,C as highlightSearch,h as lastDebugState,e as platform,b as platform_id,g as projectWindows,a as qs,B as reloadWorkspaceFile,d as repo_id,p as runToPC,r as setFrameRateUI,x as setTestInput,o as setupBreakpoint,u as setupSplits,w as startUI,c as store_id};
import{A as z,B as A,C as B,D as C,b as a,c as b,d as c,e as d,f as e,g as f,h as g,i as h,j as i,k as j,l as k,m as l,n as m,o as n,p as o,q as p,r as q,s as r,t as s,u as t,v as u,w as v,x as w,y as x,z as y}from"./chunk-LWLIHPJ5.js";import"./chunk-JSIZCY7X.js";import"./chunk-LNOKARBD.js";import"./chunk-PYHFDIHM.js";import"./chunk-PTIFNBOG.js";import"./chunk-QWAF5HSH.js";import"./chunk-KT7KMEQC.js";export{q as clearBreakpoint,f as current_project,A as emulationHalted,n as getCurrentEditorFilename,m as getCurrentMainFilename,k as getCurrentOutput,j as getCurrentProject,v as getPlatformAndRepo,i as getPlatformStore,z as getSaveState,y as getTestOutput,l as getWorkerParams,t as gotoNewLocation,s as haltEmulation,C as highlightSearch,h as lastDebugState,e as platform,b as platform_id,g as projectWindows,a as qs,B as reloadWorkspaceFile,d as repo_id,p as runToPC,r as setFrameRateUI,x as setTestInput,o as setupBreakpoint,u as setupSplits,w as startUI,c as store_id};
//# sourceMappingURL=ui.js.map

View File

@@ -9,6 +9,7 @@ Line {
Statement {
Instruction |
Directive |
HexDirective |
MacroDef |
MacEnd |
ControlOp |
@@ -22,7 +23,7 @@ Instruction {
}
Register {
@specialize<Identifier, "X" | "Y" | "A" | "x" | "y" | "a">
@specialize<Identifier, "a" | "x" | "y" | "A" | "X" | "Y">
}
Directive {
@@ -31,15 +32,27 @@ Directive {
PseudoOp {
@specialize<Identifier,
"ORG" | "EQU" | "END" | "org" | "equ" | "end" |
"org" | "equ" | "end" | ".end" |
"ORG" | "EQU" | "END" | ".END" |
"ds" | "ds.b" | "ds.w" | "dc" | "dc.b" | "dc.w" | "seg" | "seg.u" |
"subroutine" |
"DS" | "DS.B" | "DS.W" | "DC" | "DC.B" | "DC.W" | "SEG" | "SEG.U" |
".byte" | ".word" |
".BYTE" | ".WORD" |
"subroutine" | "SUBROUTINE" |
"processor" | "PROCESSOR" |
"echo" | "repeat" | "repend" | "set" |
"processor" |
".WORD" | ".word" | ".BYTE" | ".byte" | ".END" | ".end"
"ECHO" | "REPEAT" | "REPEND" | "SET"
>
}
HexOp { @specialize<Identifier, "hex" | "HEX"> }
HexDirective {
HexOp HexByte*
}
@external tokens hexTokenizer from "../../src/parser/tokens-6502" { HexByte }
Mac { @specialize<Identifier, "mac"> }
MacEnd { @specialize<Identifier, "endm"> }
@@ -56,20 +69,20 @@ CurrentAddress {
Opcode {
@specialize<Identifier,
"ADC" | "AND" | "ASL" | "BCC" | "BCS" | "BEQ" | "BIT" | "BMI" |
"BNE" | "BPL" | "BRK" | "BVC" | "BVS" | "CLC" | "CLD" | "CLI" |
"CLV" | "CMP" | "CPX" | "CPY" | "DEC" | "DEX" | "DEY" | "EOR" |
"INC" | "INX" | "INY" | "JMP" | "JSR" | "LDA" | "LDX" | "LDY" |
"LSR" | "NOP" | "ORA" | "PHA" | "PHP" | "PLA" | "PLP" | "ROL" |
"ROR" | "RTI" | "RTS" | "SBC" | "SEC" | "SED" | "SEI" | "STA" |
"STX" | "STY" | "TAX" | "TAY" | "TSX" | "TXA" | "TXS" | "TYA" |
"adc" | "and" | "asl" | "bcc" | "bcs" | "beq" | "bit" | "bmi" |
"bne" | "bpl" | "brk" | "bvc" | "bvs" | "clc" | "cld" | "cli" |
"clv" | "cmp" | "cpx" | "cpy" | "dec" | "dex" | "dey" | "eor" |
"inc" | "inx" | "iny" | "jmp" | "jsr" | "lda" | "ldx" | "ldy" |
"lsr" | "nop" | "ora" | "pha" | "php" | "pla" | "plp" | "rol" |
"ror" | "rti" | "rts" | "sbc" | "sec" | "sed" | "sei" | "sta" |
"stx" | "sty" | "tax" | "tay" | "tsx" | "txa" | "txs" | "tya"
"stx" | "sty" | "tax" | "tay" | "tsx" | "txa" | "txs" | "tya" |
"ADC" | "AND" | "ASL" | "BCC" | "BCS" | "BEQ" | "BIT" | "BMI" |
"BNE" | "BPL" | "BRK" | "BVC" | "BVS" | "CLC" | "CLD" | "CLI" |
"CLV" | "CMP" | "CPX" | "CPY" | "DEC" | "DEX" | "DEY" | "EOR" |
"INC" | "INX" | "INY" | "JMP" | "JSR" | "LDA" | "LDX" | "LDY" |
"LSR" | "NOP" | "ORA" | "PHA" | "PHP" | "PLA" | "PLP" | "ROL" |
"ROR" | "RTI" | "RTS" | "SBC" | "SEC" | "SED" | "SEI" | "STA" |
"STX" | "STY" | "TAX" | "TAY" | "TSX" | "TXA" | "TXS" | "TYA"
>
}

View File

@@ -35,6 +35,8 @@ export const Lezer6502: LRLanguage = LRLanguage.define({
BinaryGt: t.compareOperator,
UnaryLt: t.arithmeticOperator,
UnaryGt: t.arithmeticOperator,
HexOp: t.definition(t.variableName),
HexByte: t.number,
Mac: t.definitionKeyword,
MacEnd: t.definitionKeyword,
"MacroDef/Identifier": t.macroName,

View File

@@ -22,7 +22,12 @@ Directive {
}
PseudoOp {
@specialize<Identifier, "org" | "equ" | "end" | "public" | "ORG" | "EQU" | "END" | "PUBLIC">
@specialize<Identifier,
"defb" | "defw" | "defm" |
"DEFB" | "DEFW" | "DEFM" |
"org" | "equ" | "end" | "public" |
"ORG" | "EQU" | "END" | "PUBLIC"
>
}
Condition {

15
src/parser/tokens-6502.ts Normal file
View File

@@ -0,0 +1,15 @@
import { ExternalTokenizer } from "@lezer/lr"
import { HexByte } from "../../gen/parser/lang-6502.grammar.terms"
function isHexDigit(ch: number) {
return (ch >= 48 && ch <= 57) || // 0-9
(ch >= 65 && ch <= 70) || // A-F
(ch >= 97 && ch <= 102) // a-f
}
export const hexTokenizer = new ExternalTokenizer((input) => {
if (!isHexDigit(input.peek(0)) || !isHexDigit(input.peek(1))) return
let len = 2
while (isHexDigit(input.peek(len))) len++
if (len % 2 === 0) input.acceptToken(HexByte, len)
})