diff --git a/src/machine/c64.ts b/src/machine/c64.ts index bbf9208c..4048c652 100644 --- a/src/machine/c64.ts +++ b/src/machine/c64.ts @@ -44,23 +44,38 @@ export class C64_WASMMachine extends BaseWASMMachine this.prgstart = this.romarr[0] + (this.romarr[1]<<8); // get load address // look for BASIC program start if (this.prgstart == 0x801) { - this.prgstart = this.romarr[2] + (this.romarr[3]<<8) + 2; // point to after BASIC program - console.log("prgstart", hex(this.prgstart)); + // decode SYS address from decimal? + if (this.romarr[6] == 0x9e) { + var addr = 0; + for (var i=0; i<5; i++) { + var ch = this.romarr[7+i]; + if (ch == 0x9b || ch == 0) break; + addr = addr * 10 + (ch & 0xf); + } + this.prgstart = addr; + console.log("SYS", addr, hex(addr)); + } else { + this.prgstart = this.romarr[2] + (this.romarr[3]<<8) + 2; // point to after BASIC program + console.log("RUN", this.prgstart, hex(this.prgstart)); + } } // is program loaded into RAM? if (this.prgstart < 0x8000) { // advance BIOS a few frames this.exports.machine_exec(this.sys, 250000); // type in command (SYS 2061) - var cmd = "\rSYS "+this.prgstart+"\r"; + var cmd = "\rSYS "+this.prgstart; for (var i=0; i