From 6638462e1012ffd18bc727b52eceb88f0ad62781 Mon Sep 17 00:00:00 2001 From: andrew-jacobs Date: Sat, 22 Oct 2016 23:46:41 +0100 Subject: [PATCH] Made class methods static for greater performance --- README.md | 7 +- emu816.cc | 66 +++-- emu816.h | 561 ++++++++++++++++++------------------- emu816.vcxproj | 3 +- emu816.vcxproj.user | 4 +- examples/Dev65.jar | Bin 635066 -> 636207 bytes examples/simple/Makefile | 6 +- examples/simple/simple.asm | 7 +- examples/simple/simple.lst | 65 ++--- examples/simple/simple.map | 2 +- examples/simple/simple.s28 | 4 +- mem816.cc | 37 ++- mem816.h | 48 ++-- program.cc | 23 +- wdc816.cc | 4 +- wdc816.h | 22 +- 16 files changed, 457 insertions(+), 402 deletions(-) diff --git a/README.md b/README.md index 3146008..9342ab1 100644 --- a/README.md +++ b/README.md @@ -3,10 +3,15 @@ The repository contains the source code for a simple 65C816 emulator for Windows, Linux and the embedded ChipKIT platform. -This is the first release of the code and it has only had a limited amount of +This is the second release of the code and it has only had a limited amount of testing. Currently there is no support for decimal arithmetic but the full instruction set is supported. +The major change since the last release has been the recoding of all the classes +to make them static. This was done to increase the execution performance of the +code. On my development laptop (AMD8 1.8GHz) it now runs at an emulated speed of +around 225 MHz with full optimization. + There is no I/O at the moment or source of interrupts. Executing a WDM #$FF will cause the emulator to exit. diff --git a/emu816.cc b/emu816.cc index 2afbe0d..adde706 100644 --- a/emu816.cc +++ b/emu816.cc @@ -9,7 +9,7 @@ // // A Portable C++ WDC 65C816 Emulator //------------------------------------------------------------------------------ -// Copyright (C)2016 Andrew John Jacobs +// Copyright (C),2016 Andrew John Jacobs // All rights reserved. // // This work is made available under the terms of the Creative Commons @@ -32,14 +32,32 @@ using namespace std; #endif +union emu816::FLAGS emu816::p; + +emu816::Bit emu816::e; + +union emu816::REGS emu816::a; +union emu816::REGS emu816::x; +union emu816::REGS emu816::y; +union emu816::REGS emu816::sp; +union emu816::REGS emu816::dp; + +emu816::Word emu816::pc; +emu816::Byte emu816::pbr; +emu816::Byte emu816::dbr; + +bool emu816::stopped; +bool emu816::interrupted; +unsigned long emu816::cycles; +bool emu816::trace; + //============================================================================== -// Construct a emu816 instance. -emu816::emu816(mem816 &mem) - : mem(mem) +// Not used. +emu816::emu816() { } -// Destroy a emu816 instance. +// Not used emu816::~emu816() { } @@ -51,13 +69,13 @@ void emu816::reset(bool trace) dbr = 0x00 << 16; dp.w = 0x0000; sp.w = 0x0100; - pc = mem.getWord(0xfffc); + pc = getWord(0xfffc); p.b = 0x34; stopped = false; interrupted = false; - this -> trace = trace; + emu816::trace = trace; } // Execute a single instruction or invoke an interrupt @@ -67,7 +85,7 @@ void emu816::step() SHOWPC(); - switch (mem.getByte (join(pbr, pc++))) { + switch (getByte (join(pbr, pc++))) { case 0x00: op_brk(am_immb()); break; case 0x01: op_ora(am_dpix()); break; case 0x02: op_cop(am_immb()); break; @@ -357,7 +375,7 @@ void emu816::show() Serial.print (':'); Serial.print (toHex(pc, 4)); Serial.print (' '); - Serial.print (toHex(mem.getByte(join(pbr, pc)), 2)); + Serial.print (toHex(getByte(join(pbr, pc)), 2)); } // Display the operand bytes @@ -365,21 +383,21 @@ void emu816::bytes(unsigned int count) { if (count > 0) { Serial.print(' '); - Serial.print(toHex(mem.getByte(bank(pbr) | (pc + 0)), 2)); + Serial.print(toHex(getByte(bank(pbr) | (pc + 0)), 2)); } else Serial.print(" "); if (count > 1) { Serial.print(' '); - Serial.print(toHex(mem.getByte(bank(pbr) | (pc + 1)), 2)); + Serial.print(toHex(getByte(bank(pbr) | (pc + 1)), 2)); } else Serial.print(" "); if (count > 2) { Serial.print(' '); - Serial.print(toHex(mem.getByte(bank(pbr) | (pc + 2)), 2)); + Serial.print(toHex(getByte(bank(pbr) | (pc + 2)), 2)); } else Serial.print(" "); @@ -461,13 +479,13 @@ void emu816::dump(const char *mnem, Addr ea) Serial.print(" {"); Serial.print(' '); - Serial.print(toHex(mem.getByte(sp.w + 1), 2)); + Serial.print(toHex(getByte(sp.w + 1), 2)); Serial.print(' '); - Serial.print(toHex(mem.getByte(sp.w + 2), 2)); + Serial.print(toHex(getByte(sp.w + 2), 2)); Serial.print(' '); - Serial.print(toHex(mem.getByte(sp.w + 3), 2)); + Serial.print(toHex(getByte(sp.w + 3), 2)); Serial.print(' '); - Serial.print(toHex(mem.getByte(sp.w + 4), 2)); + Serial.print(toHex(getByte(sp.w + 4), 2)); Serial.print(" }"); Serial.print(" DBR="); @@ -480,24 +498,24 @@ void emu816::show() cout << '{' << toHex(cycles, 4) << "} "; cout << toHex(pbr, 2); cout << ':' << toHex(pc, 4); - cout << ' ' << toHex(mem.getByte(join(pbr, pc)), 2); + cout << ' ' << toHex(getByte(join(pbr, pc)), 2); } // Display the operand bytes void emu816::bytes(unsigned int count) { if (count > 0) - cout << ' ' << toHex(mem.getByte(bank(pbr) | (pc + 0)), 2); + cout << ' ' << toHex(getByte(bank(pbr) | (pc + 0)), 2); else cout << " "; if (count > 1) - cout << ' ' << toHex(mem.getByte(bank(pbr) | (pc + 1)), 2); + cout << ' ' << toHex(getByte(bank(pbr) | (pc + 1)), 2); else cout << " "; if (count > 2) - cout << ' ' << toHex(mem.getByte(bank(pbr) | (pc + 2)), 2); + cout << ' ' << toHex(getByte(bank(pbr) | (pc + 2)), 2); else cout << " "; @@ -545,10 +563,10 @@ void emu816::dump(const char *mnem, Addr ea) cout << '[' << toHex(hi(sp.w), 2); cout << toHex(sp.b, 2) << ']'; cout << " {"; - cout << ' ' << toHex(mem.getByte(sp.w + 1), 2); - cout << ' ' << toHex(mem.getByte(sp.w + 2), 2); - cout << ' ' << toHex(mem.getByte(sp.w + 3), 2); - cout << ' ' << toHex(mem.getByte(sp.w + 4), 2); + cout << ' ' << toHex(getByte(sp.w + 1), 2); + cout << ' ' << toHex(getByte(sp.w + 2), 2); + cout << ' ' << toHex(getByte(sp.w + 3), 2); + cout << ' ' << toHex(getByte(sp.w + 4), 2); cout << " }"; cout << " DBR=" << toHex(dbr, 2) << endl; } diff --git a/emu816.h b/emu816.h index 95f0953..07a5ab7 100644 --- a/emu816.h +++ b/emu816.h @@ -9,7 +9,7 @@ // // A Portable C++ WDC 65C816 Emulator //------------------------------------------------------------------------------ -// Copyright (C)2016 Andrew John Jacobs +// Copyright (C),2016 Andrew John Jacobs // All rights reserved. // // This work is made available under the terms of the Creative Commons @@ -26,7 +26,7 @@ #include -#if 1 +#if 0 # define TRACE(MNEM) { if (trace) dump(MNEM, ea); } # define BYTES(N) { if (trace) bytes(N); pc += N; } # define SHOWPC() { if (trace) show(); } @@ -42,28 +42,26 @@ # define ENDL() #endif +// Defines the WDC 65C816 emulator. class emu816 : - public wdc816 + public mem816 { public: - emu816(mem816 &mem); - ~emu816(); + static void reset(bool trace); + static void step(); - void reset(bool trace); - void step(); - - INLINE unsigned long getCycles() const + INLINE static unsigned long getCycles() { return (cycles); } - INLINE bool isStopped() const + INLINE static bool isStopped() { return (stopped); } private: - union { + static union FLAGS { struct { Bit f_c : 1; Bit f_z : 1; @@ -77,31 +75,32 @@ private: Byte b; } p; - Bit e; + static Bit e; - union { + static union REGS { Byte b; Word w; } a, x, y, sp, dp; - Word pc; - Byte pbr, dbr; + static Word pc; + static Byte pbr, dbr; - mem816 &mem; + static bool stopped; + static bool interrupted; + static unsigned long cycles; + static bool trace; - bool stopped; - bool interrupted; - unsigned long cycles; - bool trace; + emu816(); + ~emu816(); - void show(); - void bytes(unsigned int); - void dump(const char *, Addr); + static void show(); + static void bytes(unsigned int); + static void dump(const char *, Addr); // Push a byte on the stack - INLINE void pushByte(Byte value) + INLINE static void pushByte(Byte value) { - mem.setByte(sp.w, value); + setByte(sp.w, value); if (e) --sp.b; @@ -110,25 +109,25 @@ private: } // Push a word on the stack - INLINE void pushWord(Word value) + INLINE static void pushWord(Word value) { pushByte(hi(value)); pushByte(lo(value)); } // Pull a byte from the stack - INLINE Byte pullByte() + INLINE static Byte pullByte() { if (e) ++sp.b; else ++sp.w; - return (mem.getByte(sp.w)); + return (getByte(sp.w)); } // Pull a word from the stack - INLINE Word pullWord() + INLINE static Word pullWord() { register Byte l = pullByte(); register Byte h = pullByte(); @@ -137,9 +136,9 @@ private: } // Absolute - a - INLINE Addr am_absl() + INLINE static Addr am_absl() { - register Addr ea = join (dbr, mem.getWord(bank(pbr) | pc)); + register Addr ea = join (dbr, getWord(bank(pbr) | pc)); BYTES(2); cycles += 2; @@ -147,9 +146,9 @@ private: } // Absolute Indexed X - a,X - INLINE Addr am_absx() + INLINE static Addr am_absx() { - register Addr ea = join(dbr, mem.getWord(bank(pbr) | pc)) + x.w; + register Addr ea = join(dbr, getWord(bank(pbr) | pc)) + x.w; BYTES(2); cycles += 2; @@ -157,9 +156,9 @@ private: } // Absolute Indexed Y - a,Y - INLINE Addr am_absy() + INLINE static Addr am_absy() { - register Addr ea = join(dbr, mem.getWord(bank(pbr) | pc)) + y.w; + register Addr ea = join(dbr, getWord(bank(pbr) | pc)) + y.w; BYTES(2); cycles += 2; @@ -167,29 +166,29 @@ private: } // Absolute Indirect - (a) - INLINE Addr am_absi() + INLINE static Addr am_absi() { - register Addr ia = join(0, mem.getWord(bank(pbr) | pc)); + register Addr ia = join(0, getWord(bank(pbr) | pc)); BYTES(2); cycles += 4; - return (join(0, mem.getWord(ia))); + return (join(0, getWord(ia))); } // Absolute Indexed Indirect - (a,X) - INLINE Addr am_abxi() + INLINE static Addr am_abxi() { - register Addr ia = join(pbr, mem.getWord(bank(pbr) | pc)) + x.w; + register Addr ia = join(pbr, getWord(bank(pbr) | pc)) + x.w; BYTES(2); cycles += 4; - return (join(pbr, mem.getWord(ia))); + return (join(pbr, getWord(ia))); } // Absolute Long - >a - INLINE Addr am_alng() + INLINE static Addr am_alng() { - Addr ea = mem.getAddr(bank(pbr) | pc); + Addr ea = getAddr(bank(pbr) | pc); BYTES(3); cycles += 3; @@ -197,9 +196,9 @@ private: } // Absolute Long Indexed - >a,X - INLINE Addr am_alnx() + INLINE static Addr am_alnx() { - register Addr ea = mem.getAddr(bank(pbr) | pc) + x.w; + register Addr ea = getAddr(bank(pbr) | pc) + x.w; BYTES(3); cycles += 3; @@ -207,19 +206,19 @@ private: } // Absolute Indirect Long - [a] - INLINE Addr am_abil() + INLINE static Addr am_abil() { - register Addr ia = bank(0) | mem.getWord(bank(pbr) | pc); + register Addr ia = bank(0) | getWord(bank(pbr) | pc); BYTES(2); cycles += 5; - return (mem.getAddr(ia)); + return (getAddr(ia)); } // Direct Page - d - INLINE Addr am_dpag() + INLINE static Addr am_dpag() { - Byte offset = mem.getByte(bank(pbr) | pc); + Byte offset = getByte(bank(pbr) | pc); BYTES(1); cycles += 1; @@ -227,9 +226,9 @@ private: } // Direct Page Indexed X - d,X - INLINE Addr am_dpgx() + INLINE static Addr am_dpgx() { - Byte offset = mem.getByte(bank(pbr) | pc) + x.b; + Byte offset = getByte(bank(pbr) | pc) + x.b; BYTES(1); cycles += 1; @@ -237,9 +236,9 @@ private: } // Direct Page Indexed Y - d,Y - INLINE Addr am_dpgy() + INLINE static Addr am_dpgy() { - Byte offset = mem.getByte(bank(pbr) | pc) + y.b; + Byte offset = getByte(bank(pbr) | pc) + y.b; BYTES(1); cycles += 1; @@ -247,71 +246,71 @@ private: } // Direct Page Indirect - (d) - INLINE Addr am_dpgi() + INLINE static Addr am_dpgi() { - Byte disp = mem.getByte(bank(pbr) | pc); + Byte disp = getByte(bank(pbr) | pc); BYTES(1); cycles += 3; - return (bank(dbr) | mem.getWord(bank(0) | (Word)(dp.w + disp))); + return (bank(dbr) | getWord(bank(0) | (Word)(dp.w + disp))); } // Direct Page Indexed Indirect - (d,x) - INLINE Addr am_dpix() + INLINE static Addr am_dpix() { - Byte disp = mem.getByte(bank(pbr) | pc); + Byte disp = getByte(bank(pbr) | pc); BYTES(1); cycles += 3; - return (bank(dbr) | mem.getWord(bank(0) | (Word)(dp.w + disp + x.w))); + return (bank(dbr) | getWord(bank(0) | (Word)(dp.w + disp + x.w))); } // Direct Page Indirect Indexed - (d),Y - INLINE Addr am_dpiy() + INLINE static Addr am_dpiy() { - Byte disp = mem.getByte(bank(pbr) | pc); + Byte disp = getByte(bank(pbr) | pc); BYTES(1); cycles += 3; - return (bank(dbr) | mem.getWord(bank(0) | (dp.w + disp)) + y.w); + return (bank(dbr) | getWord(bank(0) | (dp.w + disp)) + y.w); } // Direct Page Indirect Long - [d] - INLINE Addr am_dpil() + INLINE static Addr am_dpil() { - Byte disp = mem.getByte(bank(pbr) | pc); + Byte disp = getByte(bank(pbr) | pc); BYTES(1); cycles += 4; - return (mem.getAddr(bank(0) | (Word)(dp.w + disp))); + return (getAddr(bank(0) | (Word)(dp.w + disp))); } // Direct Page Indirect Long Indexed - [d],Y - INLINE Addr am_dily() + INLINE static Addr am_dily() { - Byte disp = mem.getByte(bank(pbr) | pc); + Byte disp = getByte(bank(pbr) | pc); BYTES(1); cycles += 4; - return (mem.getAddr(bank(0) | (Word)(dp.w + disp)) + y.w); + return (getAddr(bank(0) | (Word)(dp.w + disp)) + y.w); } // Implied/Stack - INLINE Addr am_impl() + INLINE static Addr am_impl() { BYTES(0); return (0); } // Accumulator - INLINE Addr am_acc() + INLINE static Addr am_acc() { BYTES(0); return (0); } // Immediate Byte - INLINE Addr am_immb() + INLINE static Addr am_immb() { Addr ea = bank(pbr) | pc; @@ -321,7 +320,7 @@ private: } // Immediate Word - INLINE Addr am_immw() + INLINE static Addr am_immw() { Addr ea = bank(pbr) | pc; @@ -331,7 +330,7 @@ private: } // Immediate based on size of A/M - INLINE Addr am_immm() + INLINE static Addr am_immm() { Addr ea = bank(pbr) | pc; unsigned int size = (e || p.f_m) ? 1 : 2; @@ -342,7 +341,7 @@ private: } // Immediate based on size of X/Y - INLINE Addr am_immx() + INLINE static Addr am_immx() { Addr ea = bank(pbr) | pc; unsigned int size = (e || p.f_x) ? 1 : 2; @@ -353,9 +352,9 @@ private: } // Long Relative - d - INLINE Addr am_lrel() + INLINE static Addr am_lrel() { - Word disp = mem.getWord(bank(pbr) | pc); + Word disp = getWord(bank(pbr) | pc); BYTES(2); cycles += 2; @@ -363,9 +362,9 @@ private: } // Relative - d - INLINE Addr am_rela() + INLINE static Addr am_rela() { - Byte disp = mem.getByte(bank(pbr) | pc); + Byte disp = getByte(bank(pbr) | pc); BYTES(1); cycles += 1; @@ -373,9 +372,9 @@ private: } // Stack Relative - d,S - INLINE Addr am_srel() + INLINE static Addr am_srel() { - Byte disp = mem.getByte(bank(pbr) | pc); + Byte disp = getByte(bank(pbr) | pc); BYTES(1); cycles += 1; @@ -387,78 +386,78 @@ private: } // Stack Relative Indirect Indexed Y - (d,S),Y - INLINE Addr am_sriy() + INLINE static Addr am_sriy() { - Byte disp = mem.getByte(bank(pbr) | pc); + Byte disp = getByte(bank(pbr) | pc); register Word ia; BYTES(1); cycles += 3; if (e) - ia = mem.getWord(join(sp.b + disp, hi(sp.w))); + ia = getWord(join(sp.b + disp, hi(sp.w))); else - ia = mem.getWord(bank(0) | (sp.w + disp)); + ia = getWord(bank(0) | (sp.w + disp)); return (bank(dbr) | (Word)(ia + y.w)); } // Set the Negative flag - INLINE void setn(unsigned int flag) + INLINE static void setn(unsigned int flag) { p.f_n = flag ? 1 : 0; } // Set the Overflow flag - INLINE void setv(unsigned int flag) + INLINE static void setv(unsigned int flag) { p.f_v = flag ? 1 : 0; } // Set the decimal flag - INLINE void setd(unsigned int flag) + INLINE static void setd(unsigned int flag) { p.f_d = flag ? 1 : 0; } // Set the Interrupt Disable flag - INLINE void seti(unsigned int flag) + INLINE static void seti(unsigned int flag) { p.f_i = flag ? 1 : 0; } // Set the Zero flag - INLINE void setz(unsigned int flag) + INLINE static void setz(unsigned int flag) { p.f_z = flag ? 1 : 0; } // Set the Carry flag - INLINE void setc(unsigned int flag) + INLINE static void setc(unsigned int flag) { p.f_c = flag ? 1 : 0; } // Set the Negative and Zero flags from a byte value - INLINE void setnz_b(Byte value) + INLINE static void setnz_b(Byte value) { setn(value & 0x80); setz(value == 0); } // Set the Negative and Zero flags from a word value - INLINE void setnz_w(Word value) + INLINE static void setnz_w(Word value) { setn(value & 0x8000); setz(value == 0); } - INLINE void op_adc(Addr ea) + INLINE static void op_adc(Addr ea) { TRACE("ADC"); if (e || p.f_m) { - Byte data = mem.getByte(ea); + Byte data = getByte(ea); Word temp = a.b + data + p.f_c; setc(temp & 0x100); @@ -467,7 +466,7 @@ private: cycles += 2; } else { - Word data = mem.getWord(ea); + Word data = getWord(ea); int temp = a.w + data + p.f_c; setc(temp & 0x100); @@ -477,60 +476,60 @@ private: } } - INLINE void op_and(Addr ea) + INLINE static void op_and(Addr ea) { TRACE("AND"); if (e || p.f_m) { - setnz_b(a.b &= mem.getByte(ea)); + setnz_b(a.b &= getByte(ea)); cycles += 2; } else { - setnz_w(a.w &= mem.getWord(ea)); + setnz_w(a.w &= getWord(ea)); cycles += 3; } } - INLINE void op_asl(Addr ea) + INLINE static void op_asl(Addr ea) { TRACE("ASL"); if (e || p.f_m) { - register Byte data = mem.getByte(ea); + register Byte data = getByte(ea); setc(data & 0x80); setnz_b(data <<= 1); - mem.setByte(ea, data); + setByte(ea, data); cycles += 4; } else { - register Word data = mem.getWord(ea); + register Word data = getWord(ea); setc(data & 0x8000); setnz_w(data <<= 1); - mem.setWord(ea, data); + setWord(ea, data); cycles += 5; } } - INLINE void op_asla(Addr ea) + INLINE static void op_asla(Addr ea) { TRACE("ASL"); if (e || p.f_m) { setc(a.b & 0x80); setnz_b(a.b <<= 1); - mem.setByte(ea, a.b); + setByte(ea, a.b); } else { setc(a.w & 0x8000); setnz_w(a.w <<= 1); - mem.setWord(ea, a.w); + setWord(ea, a.w); } cycles += 2; } - INLINE void op_bcc(Addr ea) + INLINE static void op_bcc(Addr ea) { TRACE("BCC"); @@ -543,7 +542,7 @@ private: cycles += 2; } - INLINE void op_bcs(Addr ea) + INLINE static void op_bcs(Addr ea) { TRACE("BCS"); @@ -556,7 +555,7 @@ private: cycles += 2; } - INLINE void op_beq(Addr ea) + INLINE static void op_beq(Addr ea) { TRACE("BEQ"); @@ -569,12 +568,12 @@ private: cycles += 2; } - INLINE void op_bit(Addr ea) + INLINE static void op_bit(Addr ea) { TRACE("BIT"); if (e || p.f_m) { - register Byte data = mem.getByte(ea); + register Byte data = getByte(ea); setz((a.b & data) == 0); setn(data & 0x80); @@ -582,7 +581,7 @@ private: cycles += 2; } else { - register Word data = mem.getWord(ea); + register Word data = getWord(ea); setz((a.w & data) == 0); setn(data & 0x8000); @@ -592,24 +591,24 @@ private: } } - INLINE void op_biti(Addr ea) + INLINE static void op_biti(Addr ea) { TRACE("BIT"); if (e || p.f_m) { - register Byte data = mem.getByte(ea); + register Byte data = getByte(ea); setz((a.b & data) == 0); } else { - register Word data = mem.getWord(ea); + register Word data = getWord(ea); setz((a.w & data) == 0); } cycles += 2; } - INLINE void op_bmi(Addr ea) + INLINE static void op_bmi(Addr ea) { TRACE("BMI"); @@ -622,7 +621,7 @@ private: cycles += 2; } - INLINE void op_bne(Addr ea) + INLINE static void op_bne(Addr ea) { TRACE("BNE"); @@ -635,7 +634,7 @@ private: cycles += 2; } - INLINE void op_bpl(Addr ea) + INLINE static void op_bpl(Addr ea) { TRACE("BPL"); @@ -648,7 +647,7 @@ private: cycles += 2; } - INLINE void op_bra(Addr ea) + INLINE static void op_bra(Addr ea) { TRACE("BRA"); @@ -657,7 +656,7 @@ private: cycles += 3; } - INLINE void op_brk(Addr ea) + INLINE static void op_brk(Addr ea) { TRACE("BRK"); @@ -669,7 +668,7 @@ private: p.f_d = 0; pbr = 0; - pc = mem.getWord(0xfffe); + pc = getWord(0xfffe); cycles += 7; } else { @@ -681,12 +680,12 @@ private: p.f_d = 0; pbr = 0; - pc = mem.getWord(0xffe6); + pc = getWord(0xffe6); cycles += 8; } } - INLINE void op_brl(Addr ea) + INLINE static void op_brl(Addr ea) { TRACE("BRL"); @@ -694,7 +693,7 @@ private: cycles += 3; } - INLINE void op_bvc(Addr ea) + INLINE static void op_bvc(Addr ea) { TRACE("BVC"); @@ -707,7 +706,7 @@ private: cycles += 2; } - INLINE void op_bvs(Addr ea) + INLINE static void op_bvs(Addr ea) { TRACE("BVS"); @@ -720,7 +719,7 @@ private: cycles += 2; } - INLINE void op_clc(Addr ea) + INLINE static void op_clc(Addr ea) { TRACE("CLC"); @@ -728,7 +727,7 @@ private: cycles += 2; } - INLINE void op_cld(Addr ea) + INLINE static void op_cld(Addr ea) { TRACE("CLD") @@ -736,7 +735,7 @@ private: cycles += 2; } - INLINE void op_cli(Addr ea) + INLINE static void op_cli(Addr ea) { TRACE("CLI") @@ -744,7 +743,7 @@ private: cycles += 2; } - INLINE void op_clv(Addr ea) + INLINE static void op_clv(Addr ea) { TRACE("CLD") @@ -752,12 +751,12 @@ private: cycles += 2; } - INLINE void op_cmp(Addr ea) + INLINE static void op_cmp(Addr ea) { TRACE("CMP"); if (e || p.f_m) { - Byte data = mem.getByte(ea); + Byte data = getByte(ea); Word temp = a.b - data; setc(temp & 0x100); @@ -765,7 +764,7 @@ private: cycles += 2; } else { - Word data = mem.getWord(ea); + Word data = getWord(ea); Addr temp = a.w - data; setc(temp & 0x10000L); @@ -774,7 +773,7 @@ private: } } - INLINE void op_cop(Addr ea) + INLINE static void op_cop(Addr ea) { TRACE("COP"); @@ -786,7 +785,7 @@ private: p.f_d = 0; pbr = 0; - pc = mem.getWord(0xfff4); + pc = getWord(0xfff4); cycles += 7; } else { @@ -798,68 +797,68 @@ private: p.f_d = 0; pbr = 0; - pc = mem.getWord(0xffe4); + pc = getWord(0xffe4); cycles += 8; } } - INLINE void op_cpx(Addr ea) + INLINE static void op_cpx(Addr ea) { TRACE("CPX"); if (e || p.f_x) { - Byte data = mem.getByte(ea); + Byte data = getByte(ea); setnz_b(x.b - data); setc(x.b >= data); cycles += 2; } else { - Word data = mem.getWord(ea); + Word data = getWord(ea); setnz_w(x.w - data); setc(x.w >= data); cycles += 3; } } - INLINE void op_cpy(Addr ea) + INLINE static void op_cpy(Addr ea) { TRACE("CPY"); if (e || p.f_x) { - Byte data = mem.getByte(ea); + Byte data = getByte(ea); setnz_b(y.b - data); setc(y.b >= data); cycles += 2; } else { - Word data = mem.getWord(ea); + Word data = getWord(ea); setnz_w(y.w - data); setc(y.w >= data); cycles += 3; } } - INLINE void op_dec(Addr ea) + INLINE static void op_dec(Addr ea) { TRACE("DEC"); if (e || p.f_m) { - register Byte data = mem.getByte(ea); + register Byte data = getByte(ea); - mem.setByte(ea, ++data); + setByte(ea, ++data); setnz_b(data); cycles += 4; } else { - register Word data = mem.getWord(ea); + register Word data = getWord(ea); - mem.setWord(ea, ++data); + setWord(ea, ++data); setnz_w(data); cycles += 5; } } - INLINE void op_deca(Addr ea) + INLINE static void op_deca(Addr ea) { TRACE("DEC"); @@ -871,7 +870,7 @@ private: cycles += 2; } - INLINE void op_dex(Addr ea) + INLINE static void op_dex(Addr ea) { TRACE("DEX"); @@ -883,7 +882,7 @@ private: cycles += 2; } - INLINE void op_dey(Addr ea) + INLINE static void op_dey(Addr ea) { TRACE("DEY"); @@ -895,41 +894,41 @@ private: cycles += 2; } - INLINE void op_eor(Addr ea) + INLINE static void op_eor(Addr ea) { TRACE("EOR"); if (e || p.f_m) { - setnz_b(a.b ^= mem.getByte(ea)); + setnz_b(a.b ^= getByte(ea)); cycles += 2; } else { - setnz_w(a.w ^= mem.getWord(ea)); + setnz_w(a.w ^= getWord(ea)); cycles += 3; } } - INLINE void op_inc(Addr ea) + INLINE static void op_inc(Addr ea) { TRACE("INC"); if (e || p.f_m) { - register Byte data = mem.getByte(ea); + register Byte data = getByte(ea); - mem.setByte(ea, ++data); + setByte(ea, ++data); setnz_b(data); cycles += 4; } else { - register Word data = mem.getWord(ea); + register Word data = getWord(ea); - mem.setWord(ea, ++data); + setWord(ea, ++data); setnz_w(data); cycles += 5; } } - INLINE void op_inca(Addr ea) + INLINE static void op_inca(Addr ea) { TRACE("INC"); @@ -941,7 +940,7 @@ private: cycles += 2; } - INLINE void op_inx(Addr ea) + INLINE static void op_inx(Addr ea) { TRACE("INX"); @@ -953,7 +952,7 @@ private: cycles += 2; } - INLINE void op_iny(Addr ea) + INLINE static void op_iny(Addr ea) { TRACE("INY"); @@ -965,7 +964,7 @@ private: cycles += 2; } - INLINE void op_jmp(Addr ea) + INLINE static void op_jmp(Addr ea) { TRACE("JMP"); @@ -974,7 +973,7 @@ private: cycles += 1; } - INLINE void op_jsl(Addr ea) + INLINE static void op_jsl(Addr ea) { TRACE("JSL"); @@ -986,7 +985,7 @@ private: cycles += 5; } - INLINE void op_jsr(Addr ea) + INLINE static void op_jsr(Addr ea) { TRACE("JSR"); @@ -996,149 +995,149 @@ private: cycles += 4; } - INLINE void op_lda(Addr ea) + INLINE static void op_lda(Addr ea) { TRACE("LDA"); if (e || p.f_m) { - setnz_b(a.b = mem.getByte(ea)); + setnz_b(a.b = getByte(ea)); cycles += 2; } else { - setnz_w(a.w = mem.getWord(ea)); + setnz_w(a.w = getWord(ea)); cycles += 3; } } - INLINE void op_ldx(Addr ea) + INLINE static void op_ldx(Addr ea) { TRACE("LDX"); if (e || p.f_x) { - setnz_b(lo(x.w = mem.getByte(ea))); + setnz_b(lo(x.w = getByte(ea))); cycles += 2; } else { - setnz_w(x.w = mem.getWord(ea)); + setnz_w(x.w = getWord(ea)); cycles += 3; } } - INLINE void op_ldy(Addr ea) + INLINE static void op_ldy(Addr ea) { TRACE("LDY"); if (e || p.f_x) { - setnz_b(lo(y.w = mem.getByte(ea))); + setnz_b(lo(y.w = getByte(ea))); cycles += 2; } else { - setnz_w(y.w = mem.getWord(ea)); + setnz_w(y.w = getWord(ea)); cycles += 3; } } - INLINE void op_lsr(Addr ea) + INLINE static void op_lsr(Addr ea) { TRACE("LSR"); if (e || p.f_m) { - register Byte data = mem.getByte(ea); + register Byte data = getByte(ea); setc(data & 0x01); setnz_b(data >>= 1); - mem.setByte(ea, data); + setByte(ea, data); cycles += 4; } else { - register Word data = mem.getWord(ea); + register Word data = getWord(ea); setc(data & 0x0001); setnz_w(data >>= 1); - mem.setWord(ea, data); + setWord(ea, data); cycles += 5; } } - INLINE void op_lsra(Addr ea) + INLINE static void op_lsra(Addr ea) { TRACE("LSR"); if (e || p.f_m) { setc(a.b & 0x01); setnz_b(a.b >>= 1); - mem.setByte(ea, a.b); + setByte(ea, a.b); } else { setc(a.w & 0x0001); setnz_w(a.w >>= 1); - mem.setWord(ea, a.w); + setWord(ea, a.w); } cycles += 2; } - INLINE void op_mvn(Addr ea) + INLINE static void op_mvn(Addr ea) { TRACE("MVN"); - Byte src = mem.getByte(ea + 0); - Byte dst = mem.getByte(ea + 1); + Byte src = getByte(ea + 0); + Byte dst = getByte(ea + 1); - mem.setByte(join(dbr = dst, y.w++), mem.getByte(join(src, x.w++))); + setByte(join(dbr = dst, y.w++), getByte(join(src, x.w++))); if (--a.w != 0xffff) pc -= 3; cycles += 7; } - INLINE void op_mvp(Addr ea) + INLINE static void op_mvp(Addr ea) { TRACE("MVP"); - Byte src = mem.getByte(ea + 0); - Byte dst = mem.getByte(ea + 1); + Byte src = getByte(ea + 0); + Byte dst = getByte(ea + 1); - mem.setByte(join(dbr = dst, y.w--), mem.getByte(join(src, x.w--))); + setByte(join(dbr = dst, y.w--), getByte(join(src, x.w--))); if (--a.w != 0xffff) pc -= 3; cycles += 7; } - INLINE void op_nop(Addr ea) + INLINE static void op_nop(Addr ea) { TRACE("NOP"); cycles += 2; } - INLINE void op_ora(Addr ea) + INLINE static void op_ora(Addr ea) { TRACE("ORA"); if (e || p.f_m) { - setnz_b(a.b |= mem.getByte(ea)); + setnz_b(a.b |= getByte(ea)); cycles += 2; } else { - setnz_w(a.w |= mem.getWord(ea)); + setnz_w(a.w |= getWord(ea)); cycles += 3; } } - INLINE void op_pea(Addr ea) + INLINE static void op_pea(Addr ea) { TRACE("PEA"); - pushWord(mem.getWord(ea)); + pushWord(getWord(ea)); cycles += 5; } - INLINE void op_pei(Addr ea) + INLINE static void op_pei(Addr ea) { TRACE("PEI"); - pushWord(mem.getWord(ea)); + pushWord(getWord(ea)); cycles += 6; } - INLINE void op_per(Addr ea) + INLINE static void op_per(Addr ea) { TRACE("PER"); @@ -1146,7 +1145,7 @@ private: cycles += 6; } - INLINE void op_pha(Addr ea) + INLINE static void op_pha(Addr ea) { TRACE("PHA"); @@ -1160,7 +1159,7 @@ private: } } - INLINE void op_phb(Addr ea) + INLINE static void op_phb(Addr ea) { TRACE("PHB"); @@ -1168,7 +1167,7 @@ private: cycles += 3; } - INLINE void op_phd(Addr ea) + INLINE static void op_phd(Addr ea) { TRACE("PHD"); @@ -1176,7 +1175,7 @@ private: cycles += 4; } - INLINE void op_phk(Addr ea) + INLINE static void op_phk(Addr ea) { TRACE("PHK"); @@ -1184,7 +1183,7 @@ private: cycles += 3; } - INLINE void op_php(Addr ea) + INLINE static void op_php(Addr ea) { TRACE("PHP"); @@ -1192,7 +1191,7 @@ private: cycles += 3; } - INLINE void op_phx(Addr ea) + INLINE static void op_phx(Addr ea) { TRACE("PHX"); @@ -1206,7 +1205,7 @@ private: } } - INLINE void op_phy(Addr ea) + INLINE static void op_phy(Addr ea) { TRACE("PHY"); @@ -1220,7 +1219,7 @@ private: } } - INLINE void op_pla(Addr ea) + INLINE static void op_pla(Addr ea) { TRACE("PLA"); @@ -1234,7 +1233,7 @@ private: } } - INLINE void op_plb(Addr ea) + INLINE static void op_plb(Addr ea) { TRACE("PLB"); @@ -1242,7 +1241,7 @@ private: cycles += 4; } - INLINE void op_pld(Addr ea) + INLINE static void op_pld(Addr ea) { TRACE("PLD"); @@ -1250,7 +1249,7 @@ private: cycles += 5; } - INLINE void op_plk(Addr ea) + INLINE static void op_plk(Addr ea) { TRACE("PLK"); @@ -1258,7 +1257,7 @@ private: cycles += 4; } - INLINE void op_plp(Addr ea) + INLINE static void op_plp(Addr ea) { TRACE("PLP"); @@ -1275,7 +1274,7 @@ private: cycles += 4; } - INLINE void op_plx(Addr ea) + INLINE static void op_plx(Addr ea) { TRACE("PLX"); @@ -1289,7 +1288,7 @@ private: } } - INLINE void op_ply(Addr ea) + INLINE static void op_ply(Addr ea) { TRACE("PLY"); @@ -1303,40 +1302,40 @@ private: } } - INLINE void op_rep(Addr ea) + INLINE static void op_rep(Addr ea) { TRACE("REP"); - p.b &= ~mem.getByte(ea); + p.b &= ~getByte(ea); if (e) p.f_m = p.f_x = 1; cycles += 3; } - INLINE void op_rol(Addr ea) + INLINE static void op_rol(Addr ea) { TRACE("ROL"); if (e || p.f_m) { - register Byte data = mem.getByte(ea); + register Byte data = getByte(ea); register Byte carry = p.f_c ? 0x01 : 0x00; setc(data & 0x80); setnz_b(data = (data << 1) | carry); - mem.setByte(ea, data); + setByte(ea, data); cycles += 4; } else { - register Word data = mem.getWord(ea); + register Word data = getWord(ea); register Word carry = p.f_c ? 0x0001 : 0x0000; setc(data & 0x8000); setnz_w(data = (data << 1) | carry); - mem.setWord(ea, data); + setWord(ea, data); cycles += 5; } } - INLINE void op_rola(Addr ea) + INLINE static void op_rola(Addr ea) { TRACE("ROL"); @@ -1345,43 +1344,43 @@ private: setc(a.b & 0x80); setnz_b(a.b = (a.b << 1) | carry); - mem.setByte(ea, a.b); + setByte(ea, a.b); } else { register Word carry = p.f_c ? 0x0001 : 0x0000; setc(a.w & 0x8000); setnz_w(a.w = (a.w << 1) | carry); - mem.setWord(ea, a.w); + setWord(ea, a.w); } cycles += 2; } - INLINE void op_ror(Addr ea) + INLINE static void op_ror(Addr ea) { TRACE("ROR"); if (e || p.f_m) { - register Byte data = mem.getByte(ea); + register Byte data = getByte(ea); register Byte carry = p.f_c ? 0x80 : 0x00; setc(data & 0x80); setnz_b(data = (data >> 1) | carry); - mem.setByte(ea, data); + setByte(ea, data); cycles += 4; } else { - register Word data = mem.getWord(ea); + register Word data = getWord(ea); register Word carry = p.f_c ? 0x8000 : 0x0000; setc(data & 0x8000); setnz_w(data = (data >> 1) | carry); - mem.setWord(ea, data); + setWord(ea, data); cycles += 5; } } - INLINE void op_rora(Addr ea) + INLINE static void op_rora(Addr ea) { TRACE("ROR"); @@ -1390,19 +1389,19 @@ private: setc(a.b & 0x80); setnz_b(a.b = (a.b >> 1) | carry); - mem.setByte(ea, a.b); + setByte(ea, a.b); } else { register Word carry = p.f_c ? 0x8000 : 0x0000; setc(a.w & 0x8000); setnz_w(a.w = (a.w >> 1) | carry); - mem.setWord(ea, a.w); + setWord(ea, a.w); } cycles += 2; } - INLINE void op_rti(Addr ea) + INLINE static void op_rti(Addr ea) { TRACE("RTI"); @@ -1420,7 +1419,7 @@ private: p.f_i = 0; } - INLINE void op_rtl(Addr ea) + INLINE static void op_rtl(Addr ea) { TRACE("RTL"); @@ -1429,7 +1428,7 @@ private: cycles += 6; } - INLINE void op_rts(Addr ea) + INLINE static void op_rts(Addr ea) { TRACE("RTS"); @@ -1437,12 +1436,12 @@ private: cycles += 6; } - INLINE void op_sbc(Addr ea) + INLINE static void op_sbc(Addr ea) { TRACE("SBC"); if (e || p.f_m) { - Byte data = ~mem.getByte(ea); + Byte data = ~getByte(ea); Word temp = a.b + data + p.f_c; setc(temp & 0x100); @@ -1451,7 +1450,7 @@ private: cycles += 2; } else { - Word data = ~mem.getWord(ea); + Word data = ~getWord(ea); int temp = a.w + data + p.f_c; setc(temp & 0x100); @@ -1461,7 +1460,7 @@ private: } } - INLINE void op_sec(Addr ea) + INLINE static void op_sec(Addr ea) { TRACE("SEC"); @@ -1469,7 +1468,7 @@ private: cycles += 2; } - INLINE void op_sed(Addr ea) + INLINE static void op_sed(Addr ea) { TRACE("SED"); @@ -1477,7 +1476,7 @@ private: cycles += 2; } - INLINE void op_sei(Addr ea) + INLINE static void op_sei(Addr ea) { TRACE("SEI"); @@ -1485,11 +1484,11 @@ private: cycles += 2; } - INLINE void op_sep(Addr ea) + INLINE static void op_sep(Addr ea) { TRACE("SEP"); - p.b |= mem.getByte(ea); + p.b |= getByte(ea); if (e) p.f_m = p.f_x = 1; if (p.f_x) { @@ -1499,21 +1498,21 @@ private: cycles += 3; } - INLINE void op_sta(Addr ea) + INLINE static void op_sta(Addr ea) { TRACE("STA"); if (e || p.f_m) { - mem.setByte(ea, a.b); + setByte(ea, a.b); cycles += 2; } else { - mem.setWord(ea, a.w); + setWord(ea, a.w); cycles += 3; } } - INLINE void op_stp(Addr ea) + INLINE static void op_stp(Addr ea) { TRACE("STP"); @@ -1526,49 +1525,49 @@ private: cycles += 3; } - INLINE void op_stx(Addr ea) + INLINE static void op_stx(Addr ea) { TRACE("STX"); if (e || p.f_x) { - mem.setByte(ea, x.b); + setByte(ea, x.b); cycles += 2; } else { - mem.setWord(ea, x.w); + setWord(ea, x.w); cycles += 3; } } - INLINE void op_sty(Addr ea) + INLINE static void op_sty(Addr ea) { TRACE("STY"); if (e || p.f_x) { - mem.setByte(ea, y.b); + setByte(ea, y.b); cycles += 2; } else { - mem.setWord(ea, y.w); + setWord(ea, y.w); cycles += 3; } } - INLINE void op_stz(Addr ea) + INLINE static void op_stz(Addr ea) { TRACE("STZ"); if (e || p.f_m) { - mem.setByte(ea, 0); + setByte(ea, 0); cycles += 2; } else { - mem.setWord(ea, 0); + setWord(ea, 0); cycles += 3; } } - INLINE void op_tax(Addr ea) + INLINE static void op_tax(Addr ea) { TRACE("TAX"); @@ -1580,7 +1579,7 @@ private: cycles += 2; } - INLINE void op_tay(Addr ea) + INLINE static void op_tay(Addr ea) { TRACE("TAY"); @@ -1592,7 +1591,7 @@ private: cycles += 2; } - INLINE void op_tcd(Addr ea) + INLINE static void op_tcd(Addr ea) { TRACE("TCD"); @@ -1600,7 +1599,7 @@ private: cycles += 2; } - INLINE void op_tdc(Addr ea) + INLINE static void op_tdc(Addr ea) { TRACE("TDC"); @@ -1612,7 +1611,7 @@ private: cycles += 2; } - INLINE void op_tcs(Addr ea) + INLINE static void op_tcs(Addr ea) { TRACE("TCS"); @@ -1620,47 +1619,47 @@ private: cycles += 2; } - INLINE void op_trb(Addr ea) + INLINE static void op_trb(Addr ea) { TRACE("TRB"); if (e || p.f_m) { - register Byte data = mem.getByte(ea); + register Byte data = getByte(ea); - mem.setByte(ea, data & ~a.b); + setByte(ea, data & ~a.b); setz((a.b & data) == 0); cycles += 4; } else { - register Word data = mem.getWord(ea); + register Word data = getWord(ea); - mem.setWord(ea, data & ~a.w); + setWord(ea, data & ~a.w); setz((a.w & data) == 0); cycles += 5; } } - INLINE void op_tsb(Addr ea) + INLINE static void op_tsb(Addr ea) { TRACE("TSB"); if (e || p.f_m) { - register Byte data = mem.getByte(ea); + register Byte data = getByte(ea); - mem.setByte(ea, data | a.b); + setByte(ea, data | a.b); setz((a.b & data) == 0); cycles += 4; } else { - register Word data = mem.getWord(ea); + register Word data = getWord(ea); - mem.setWord(ea, data | a.w); + setWord(ea, data | a.w); setz((a.w & data) == 0); cycles += 5; } } - INLINE void op_tsc(Addr ea) + INLINE static void op_tsc(Addr ea) { TRACE("TSC"); @@ -1672,7 +1671,7 @@ private: cycles += 2; } - INLINE void op_tsx(Addr ea) + INLINE static void op_tsx(Addr ea) { TRACE("TSX"); @@ -1684,7 +1683,7 @@ private: cycles += 2; } - INLINE void op_txa(Addr ea) + INLINE static void op_txa(Addr ea) { TRACE("TXA"); @@ -1696,7 +1695,7 @@ private: cycles += 2; } - INLINE void op_txs(Addr ea) + INLINE static void op_txs(Addr ea) { TRACE("TXS"); @@ -1708,7 +1707,7 @@ private: cycles += 2; } - INLINE void op_txy(Addr ea) + INLINE static void op_txy(Addr ea) { TRACE("TXY"); @@ -1720,7 +1719,7 @@ private: cycles += 2; } - INLINE void op_tya(Addr ea) + INLINE static void op_tya(Addr ea) { TRACE("TYA"); @@ -1732,7 +1731,7 @@ private: cycles += 2; } - INLINE void op_tyx(Addr ea) + INLINE static void op_tyx(Addr ea) { TRACE("TYX"); @@ -1744,7 +1743,7 @@ private: cycles += 2; } - INLINE void op_wai(Addr ea) + INLINE static void op_wai(Addr ea) { TRACE("WAI"); @@ -1757,17 +1756,17 @@ private: cycles += 3; } - INLINE void op_wdm(Addr ea) + INLINE static void op_wdm(Addr ea) { TRACE("WDM"); - switch (mem.getByte(ea)) { + switch (getByte(ea)) { case 0xff: stopped = true; break; } cycles += 3; } - INLINE void op_xba(Addr ea) + INLINE static void op_xba(Addr ea) { TRACE("XBA"); @@ -1776,7 +1775,7 @@ private: cycles += 3; } - INLINE void op_xce(Addr ea) + INLINE static void op_xce(Addr ea) { TRACE("XCE"); diff --git a/emu816.vcxproj b/emu816.vcxproj index c1f6d72..0032bb9 100644 --- a/emu816.vcxproj +++ b/emu816.vcxproj @@ -86,7 +86,7 @@ Level3 - Disabled + Custom WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) @@ -116,6 +116,7 @@ true true WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true Console diff --git a/emu816.vcxproj.user b/emu816.vcxproj.user index a0ff38b..8307d29 100644 --- a/emu816.vcxproj.user +++ b/emu816.vcxproj.user @@ -1,11 +1,11 @@  - -t examples/simple/simple.s28 + examples/simple/simple.s28 WindowsLocalDebugger - -t examples/simple/simple.s28 + examples/simple/simple.s28 WindowsLocalDebugger \ No newline at end of file diff --git a/examples/Dev65.jar b/examples/Dev65.jar index 4b52f76dc0d5fb2a0a24965280629a5ffbff3b14..36bc0233434eee217d76468da7757e9c8f38ff5a 100644 GIT binary patch delta 91938 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 delta 91201 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 R)J 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 simple.txt #=============================================================================== # Dependencies diff --git a/examples/simple/simple.asm b/examples/simple/simple.asm index 14dfe23..ddfcd07 100644 --- a/examples/simple/simple.asm +++ b/examples/simple/simple.asm @@ -47,15 +47,16 @@ RESET: lda #STACK tcs - ldy #2 + ldy #100 repeat - ldx #123 + ldx #0 repeat dex until eq dey until eq - wdm #$ff + wdm #$ff + bra RESET ;=============================================================================== ; Dummy Interrupt Handlers diff --git a/examples/simple/simple.lst b/examples/simple/simple.lst index a29c3a1..0cc5926 100644 --- a/examples/simple/simple.lst +++ b/examples/simple/simple.lst @@ -168,18 +168,19 @@ Portable 65xx Assembler [16.06] 00:F006 A9???? : lda #STACK 00:F009 1B : tcs -00:F00A A00200 : ldy #2 +00:F00A A06400 : ldy #100 Portable 65xx Assembler [16.06] repeat -00:F00D A27B00 : ldx #123 +00:F00D A20000 : ldx #0 repeat 00:F010 CA : dex 00:F011 D0FD : until eq 00:F013 88 : dey 00:F014 D0F7 : until eq -00:F016 42FF : wdm #$ff +00:F016 42FF : wdm #$ff +00:F018 80E6 : bra RESET ;=============================================================================== ; Dummy Interrupt Handlers @@ -190,13 +191,13 @@ Portable 65xx Assembler [16.06] ABORTN: NMIN: BRKN -00:F018 80FE : bra $ +00:F01A 80FE : bra $ COP: ABORT: NMI: IRQBRK: -00:F01A 80FE : bra $ +00:F01C 80FE : bra $ ;=============================================================================== ; Vectors @@ -205,20 +206,20 @@ Portable 65xx Assembler [16.06] .org $ffe0 00:FFE0 00000000 : .space 4 ; Reserved -00:FFE4 18F0 : .word COPN ; $FFE4 - COP(816) -00:FFE6 18F0 : .word BRKN ; $FFE6 - BRK(816) -00:FFE8 18F0 : .word ABORTN ; $FFE8 - ABORT(816) -00:FFEA 18F0 : .word NMIN ; $FFEA - NMI(816) +00:FFE4 1AF0 : .word COPN ; $FFE4 - COP(816) +00:FFE6 1AF0 : .word BRKN ; $FFE6 - BRK(816) +00:FFE8 1AF0 : .word ABORTN ; $FFE8 - ABORT(816) +00:FFEA 1AF0 : .word NMIN ; $FFEA - NMI(816) 00:FFEC 0000 : .space 2 ; Reserved -00:FFEE 18F0 : .word IRQN ; $FFEE - IRQ(816) +00:FFEE 1AF0 : .word IRQN ; $FFEE - IRQ(816) 00:FFF0 00000000 : .space 4 -00:FFF4 1AF0 : .word COP ; $FFF4 - COP(C02) +00:FFF4 1CF0 : .word COP ; $FFF4 - COP(C02) 00:FFF6 0000 : .space 2 ; $Reserved -00:FFF8 1AF0 : .word ABORT ; $FFF8 - ABORT(C02) -00:FFFA 1AF0 : .word NMI ; $FFFA - NMI(C02) +00:FFF8 1CF0 : .word ABORT ; $FFF8 - ABORT(C02) +00:FFFA 1CF0 : .word NMI ; $FFFA - NMI(C02) 00:FFFC 00F0 : .word RESET ; $FFFC - RESET(C02) -00:FFFE 1AF0 : .word IRQBRK ; $FFFE - IRQBRK(C02) +00:FFFE 1CF0 : .word IRQBRK ; $FFFE - IRQBRK(C02) .end @@ -227,29 +228,29 @@ Portable 65xx Assembler [16.06] Symbol Table -ABORT 0000F01A | __6501__ 00000000 -ABORTN 0000F018 | __6502__ 00000000 -BRKN 0000F018 | __65832__ 00000000 +ABORT 0000F01C | __6501__ 00000000 +ABORTN 0000F01A | __6502__ 00000000 +BRKN 0000F01A | __65832__ 00000000 B_FLAG 00000010 | __65C02__ 00000000 -COP 0000F01A | __65SC02__ 00000000 -COPN 0000F018 | C_FLAG 00000001 +COP 0000F01C | __65SC02__ 00000000 +COPN 0000F01A | C_FLAG 00000001 C_FLAG 00000001 | __65816__ 00000001 D_FLAG 00000008 | Z_FLAG 00000002 -IRQBRK 0000F01A | I_FLAG 00000004 -IRQN 0000F018 | D_FLAG 00000008 +IRQBRK 0000F01C | I_FLAG 00000004 +IRQN 0000F01A | D_FLAG 00000008 I_FLAG 00000004 | B_FLAG 00000010 M_FLAG 00000020 | X_FLAG 00000010 -NMI 0000F01A | M_FLAG 00000020 -NMIN 0000F018 | V_FLAG 00000040 +NMI 0000F01C | M_FLAG 00000020 +NMIN 0000F01A | V_FLAG 00000040 N_FLAG 00000080 | N_FLAG 00000080 RESET 0000F000 | STACK 00000080' STACK 00000080' | RESET 0000F000 -V_FLAG 00000040 | ABORTN 0000F018 -X_FLAG 00000010 | BRKN 0000F018 -Z_FLAG 00000002 | COPN 0000F018 -__6501__ 00000000 | IRQN 0000F018 -__6502__ 00000000 | NMIN 0000F018 -__65816__ 00000001 | ABORT 0000F01A -__65832__ 00000000 | COP 0000F01A -__65C02__ 00000000 | IRQBRK 0000F01A -__65SC02__ 00000000 | NMI 0000F01A +V_FLAG 00000040 | ABORTN 0000F01A +X_FLAG 00000010 | BRKN 0000F01A +Z_FLAG 00000002 | COPN 0000F01A +__6501__ 00000000 | IRQN 0000F01A +__6502__ 00000000 | NMIN 0000F01A +__65816__ 00000001 | ABORT 0000F01C +__65832__ 00000000 | COP 0000F01C +__65C02__ 00000000 | IRQBRK 0000F01C +__65SC02__ 00000000 | NMI 0000F01C diff --git a/examples/simple/simple.map b/examples/simple/simple.map index 6fb2003..aba9480 100644 --- a/examples/simple/simple.map +++ b/examples/simple/simple.map @@ -5,5 +5,5 @@ Global Symbol Map Sections: .page0 : 00000000 - 0000007F in simple.obj -.code : 0000F000 - 0000F01B in simple.obj +.code : 0000F000 - 0000F01D in simple.obj 0000FFE0 - 0000FFFF in simple.obj diff --git a/examples/simple/simple.s28 b/examples/simple/simple.s28 index 0bcf3a5..d671dd8 100644 --- a/examples/simple/simple.s28 +++ b/examples/simple/simple.s28 @@ -1,4 +1,4 @@ -S22400F00078D818FBC230A980001BA00200A27B00CAD0FD88D0F742FF80FE80FE0000000070 +S22400F00078D818FBC230A980001BA06400A20000CAD0FD88D0F742FF80E680FE80FE000023 S22400F0200000000000000000000000000000000000000000000000000000000000000000CB S22400F0400000000000000000000000000000000000000000000000000000000000000000AB S22400F06000000000000000000000000000000000000000000000000000000000000000008B @@ -125,6 +125,6 @@ S22400FF6000000000000000000000000000000000000000000000000000000000000000007C S22400FF8000000000000000000000000000000000000000000000000000000000000000005C S22400FFA000000000000000000000000000000000000000000000000000000000000000003C S22400FFC000000000000000000000000000000000000000000000000000000000000000001C -S22400FFE00000000018F018F018F018F0000018F0000000001AF000001AF01AF000F01AF0BC +S22400FFE0000000001AF01AF01AF01AF000001AF0000000001CF000001CF01CF000F01CF0AA S505000000807A S80400F0000B diff --git a/mem816.cc b/mem816.cc index 1c30831..317d198 100644 --- a/mem816.cc +++ b/mem816.cc @@ -9,7 +9,7 @@ // // A Portable C++ WDC 65C816 Emulator //------------------------------------------------------------------------------ -// Copyright (C)2016 Andrew John Jacobs +// Copyright (C),2016 Andrew John Jacobs // All rights reserved. // // This work is made available under the terms of the Creative Commons @@ -21,22 +21,33 @@ #include "mem816.h" +mem816::Addr mem816::memMask; +mem816::Addr mem816::ramSize; + +mem816::Byte *mem816::pRAM; +const mem816::Byte *mem816::pROM; + //============================================================================== -// Construct a memory area using dynamic allocation -mem816::mem816(Addr memMask, Addr ramSize, const Byte *pROM) - : memMask(memMask), ramSize(ramSize), pROM(pROM), freeRAM(true) -{ - pRAM = new Byte[ramSize]; -} - -// Construct a memory area using statically allocated arrays -mem816::mem816(Addr memMask, Addr ramSize, Byte *pRAM, const Byte *pROM) - : memMask(memMask), ramSize(ramSize), pRAM(pRAM), pROM(pROM), freeRAM(false) +// Never used. +mem816::mem816() { } -// Destory an instance releasing the RAM if allocated. +// Never used. mem816::~mem816() +{ } + +// Sets up the memory areas using a dynamically allocated array +void mem816::setMemory(Addr memMask, Addr ramSize, const Byte *pROM) { - if (freeRAM) delete pRAM; + setMemory(memMask, ramSize, new Byte[ramSize], pROM); +} + +// Sets up the memory area using pre-allocated array +void mem816::setMemory(Addr memMask, Addr ramSize, Byte *pRAM, const Byte *pROM) +{ + mem816::memMask = memMask; + mem816::ramSize = ramSize; + mem816::pRAM = pRAM; + mem816::pROM = pROM; } \ No newline at end of file diff --git a/mem816.h b/mem816.h index 3909db5..ea83ac5 100644 --- a/mem816.h +++ b/mem816.h @@ -9,7 +9,7 @@ // // A Portable C++ WDC 65C816 Emulator //------------------------------------------------------------------------------ -// Copyright (C)2016 Andrew John Jacobs +// Copyright (C),2016 Andrew John Jacobs // All rights reserved. // // This work is made available under the terms of the Creative Commons @@ -24,15 +24,19 @@ #include "wdc816.h" +// The mem816 class defines a set of standard methods for defining and accessing +// the emulated memory area. + class mem816 : public wdc816 { public: - mem816(Addr memMask, Addr ramSize, const Byte *pROM); - mem816(Addr memMask, Addr ramSize, Byte *pRAM, const Byte *pROM); - ~mem816(); + // Define the memory areas and sizes + static void setMemory (Addr memMask, Addr ramSize, const Byte *pROM); + static void setMemory (Addr memMask, Addr ramSize, Byte *pRAM, const Byte *pROM); - INLINE Byte getByte(Addr ea) + // Fetch a byte from memory + INLINE static Byte getByte(Addr ea) { if ((ea &= memMask) < ramSize) return (pRAM[ea]); @@ -40,35 +44,41 @@ public: return (pROM[ea - ramSize]); } - INLINE Word getWord(Addr ea) + // Fetch a word from memory + INLINE static Word getWord(Addr ea) { - return (join(getByte(ea + 0), getByte(ea + 1))); + return (join(getByte(ea + 0), getByte(ea + 1))); } - INLINE Addr getAddr(Addr ea) + // Fetch a long address from memory + INLINE static Addr getAddr(Addr ea) { return (join(getByte(ea + 2), getWord(ea + 0))); } - INLINE void setByte(Addr ea, Byte data) + // Write a byte to memory + INLINE static void setByte(Addr ea, Byte data) { if ((ea &= memMask) < ramSize) pRAM[ea] = data; } - INLINE void setWord(Addr ea, Word data) + // Write a word to memory + INLINE static void setWord(Addr ea, Word data) { - setByte(ea + 0, lo(data)); - setByte(ea + 1, hi(data)); + setByte(ea + 0, lo(data)); + setByte(ea + 1, hi(data)); } +protected: + mem816(); + ~mem816(); + private: - const Addr memMask; - const Addr ramSize; + static Addr memMask; // The address mask pattern + static Addr ramSize; // The amount of RAM - Byte *pRAM; - const Byte *pROM; - - const bool freeRAM; + static Byte *pRAM; // Base of RAM memory array + static const Byte *pROM; // Base of ROM memory array }; -#endif +#endif \ No newline at end of file diff --git a/program.cc b/program.cc index e1f7981..10cd9c2 100644 --- a/program.cc +++ b/program.cc @@ -40,23 +40,20 @@ using namespace std; #define RAM_SIZE (512 * 1024) #define MEM_MASK (512 * 1024L - 1) -mem816 mem(MEM_MASK, RAM_SIZE, NULL); -emu816 emu(mem); - bool trace = false; //============================================================================== // Initialise the emulator -void setup() +INLINE void setup() { - emu.reset(trace); + emu816::setMemory(MEM_MASK, RAM_SIZE, NULL); } // Execute instructions -void loop() +INLINE void loop() { - emu.step(); + emu816::step(); } //============================================================================== @@ -108,7 +105,7 @@ void load(char *filename) unsigned long addr = toAddr(line, offset); count -= 4; while (count-- > 0) { - mem.setByte(addr++, toByte(line, offset)); + emu816::setByte(addr++, toByte(line, offset)); } } } @@ -123,6 +120,8 @@ int main(int argc, char **argv) { int index = 1; + setup(); + while (index < argc) { if (argv[index][0] != '-') break; @@ -155,16 +154,17 @@ int main(int argc, char **argv) QueryPerformanceFrequency(&freq); QueryPerformanceCounter(&start); - setup(); - while (!emu.isStopped ()) + emu816::reset(trace); + while (!emu816::isStopped ()) loop(); QueryPerformanceCounter(&end); double secs = (end.QuadPart - start.QuadPart) / (double) freq.QuadPart; - double speed = emu.getCycles() / secs; + double speed = emu816::getCycles() / secs; + cout << endl << "Executed " << emu816::getCycles() << " in " << secs << " Secs"; cout << endl << "Overall CPU Frequency = "; if (speed < 1000.0) cout << speed << " Hz"; @@ -176,5 +176,6 @@ int main(int argc, char **argv) } cout << endl; + system("pause"); return(0); } diff --git a/wdc816.cc b/wdc816.cc index 3a0b388..2aac9cc 100644 --- a/wdc816.cc +++ b/wdc816.cc @@ -9,7 +9,7 @@ // // A Portable C++ WDC 65C816 Emulator //------------------------------------------------------------------------------ -// Copyright (C)2016 Andrew John Jacobs +// Copyright (C),2016 Andrew John Jacobs // All rights reserved. // // This work is made available under the terms of the Creative Commons @@ -21,9 +21,11 @@ #include "wdc816.h" +// Never used. wdc816::wdc816() { } +// Never used. wdc816::~wdc816() { } diff --git a/wdc816.h b/wdc816.h index 405ec15..04d7f61 100644 --- a/wdc816.h +++ b/wdc816.h @@ -9,7 +9,7 @@ // // A Portable C++ WDC 65C816 Emulator //------------------------------------------------------------------------------ -// Copyright (C)2016 Andrew John Jacobs +// Copyright (C),2016 Andrew John Jacobs // All rights reserved. // // This work is made available under the terms of the Creative Commons @@ -22,25 +22,23 @@ #ifndef WDC816_H #define WDC816_H -//#define CHIPKIT - #ifdef CHIPKIT # define INLINE inline #else # define INLINE inline #endif +// The wdc816 class defines common types for 8-, 16- and 24-bit data values and +// a set of common functions for manipulating them. + class wdc816 { public: // Common types for memory and register sizes - typedef unsigned char Bit; - typedef unsigned char Byte; - typedef unsigned short Word; - typedef unsigned long Addr; - - wdc816 (); - ~wdc816(); + typedef unsigned char Bit; + typedef unsigned char Byte; + typedef unsigned short Word; + typedef unsigned long Addr; // Convert a value to a hex string. static char *toHex(unsigned long value, unsigned int digits); @@ -80,5 +78,9 @@ public: { return ((value >> 8) | (value << 8)); } + +protected: + wdc816(); + ~wdc816(); }; #endif \ No newline at end of file