1
0
mirror of https://github.com/sehugg/8bitworkshop.git synced 2024-05-28 23:41:32 +00:00
8bitworkshop/gen/chunk-4MHYRQST.js

3 lines
3.2 KiB
JavaScript

import{c as _,g as s}from"./chunk-7LTJUW24.js";var n=!1,M=[[{N:0},{N:1}],[{N:1},{N:0}],[{V:0},{V:1}],[{V:1},{V:0}],[{C:0},{C:1}],[{C:1},{C:0}],[{Z:0},{Z:1}],[{Z:1},{Z:0}]];function y(l,e){if(l==null||e==null)return null;for(var t in l)if(e[t]!=="undefined")return l[t]==e[t];for(var t in e)if(l[t]!=="undefined")return l[t]==e[t];return null}var m=class{constructor(e){this.pc2clockrange={};this.jsrresult={};this.MAX_CYCLES=2e3;this.platform=e}getClockCountsAtPC(e){var t=this.platform.readAddress(e),r=this.platform.getOpcodeMetadata(t,e);return r}traceInstructions(e,t,r,C,f){n&&console.log("trace",s(e),t,r),f||(f={});var u=!0,A=!1;for(let b=0;u&&!A;b++){if(b>=this.MAX_CYCLES){console.log("too many cycles @",s(e),"routine",s(C));break}u=!1,this.WRAP_CLOCKS?(t=t%this.MAX_CLOCKS,r=r%this.MAX_CLOCKS,r==t-1&&(n&&console.log("0-75",s(e),t,r),t=0,r=this.MAX_CLOCKS-1)):(t=Math.min(this.MAX_CLOCKS,t),r=Math.min(this.MAX_CLOCKS,r));let a=this.getClockCountsAtPC(e),c=this.platform.readAddress(e+1),O=this.platform.readAddress(e+2),g=c+(O<<8),h=e,i=this.pc2clockrange[h];if(i==null&&(this.pc2clockrange[h]=i={minclocks:t,maxclocks:r},n&&console.log("new",s(e),s(h),s(C),t,r),u=!0),(i.minclocks!=t||i.maxclocks!=r)&&(this.WRAP_CLOCKS&&t<=r!=i.minclocks<=i.maxclocks&&(n&&console.log("wrap",s(e),s(h),s(C),t,r,i),i.minclocks=t=0,i.maxclocks=r=this.MAX_CLOCKS-1,u=!0),t<i.minclocks&&(n&&console.log("min",s(e),s(h),s(C),t,r,i),i.minclocks=t,u=!0),r>i.maxclocks&&(n&&console.log("max",s(e),s(h),s(C),t,r,i),i.maxclocks=r,u=!0)),!a.insnlength){console.log("Illegal instruction!",s(e),s(a.opcode),a);break}e+=a.insnlength;var S=f;switch(f=null,a.opcode){case 25:case 29:case 57:case 61:case 89:case 93:case 121:case 125:case 185:case 187:case 188:case 189:case 190:case 191:case 217:case 221:case 249:case 253:c==0&&(a.maxCycles-=1);break;case 133:c==2&&(t=r=0,a.minCycles=a.maxCycles=0);break;case 44:c==2&&O==32&&(t=0,r=4,a.minCycles=a.maxCycles=0);break;case 32:t+=a.minCycles,r+=a.maxCycles,this.traceInstructions(g,t,r,g,f);var o=this.jsrresult[g];o?(t=o.minclocks,r=o.maxclocks):(console.log("No JSR result!",s(e),s(g)),t=r);break;case 76:e=g;break;case 64:A=!0;break;case 96:if(C){var o=this.jsrresult[C];o?o={minclocks:Math.min(t,o.minclocks),maxclocks:Math.max(r,o.maxclocks)}:o={minclocks:t,maxclocks:r},this.jsrresult[C]=o,console.log("RTS",s(e),s(C),this.jsrresult[C])}return;case 16:case 48:case 80:case 112:case 144:case 176:case 208:case 240:var L=e+_(c),K=e>>8!=L>>8;K||a.maxCycles--;var x=M[Math.floor((a.opcode-16)/32)],p=y(S,x[0]),d=y(S,x[1]);this.traceInstructions(L,t+a.maxCycles,r+a.maxCycles,C,x[0]),d===!1&&(console.log("branch always taken",s(e),S,x[1]),A=!0),f=x[1],a.maxCycles=a.minCycles;break;case 108:console.log("Instruction not supported!",s(e),s(a.opcode),a);return}n&&console.log("add",s(e),a.minCycles,a.maxCycles),t+=a.minCycles,r+=a.maxCycles}}showLoopTimingForPC(e){this.pc2clockrange={},this.jsrresult={},this.traceInstructions(e|this.platform.getOriginPC(),this.START_CLOCKS,this.MAX_CLOCKS,0,{})}},R=class extends m{constructor(e){super(e);this.MAX_CLOCKS=76,this.START_CLOCKS=0,this.WRAP_CLOCKS=!0}},P=class extends m{constructor(e){super(e);this.MAX_CLOCKS=114,this.START_CLOCKS=0,this.WRAP_CLOCKS=!0}};export{R as a,P as b};
//# sourceMappingURL=chunk-4MHYRQST.js.map