summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2010-11-12Added support for local labels in opcodesDuncan Smith
I tried to use A68k's local label support, but I believe it was broken. Now I can use it, finally. :)
2010-11-12Reworked opcodes.asm to use m4. Soon, it will be clean.Duncan Smith
2010-11-10Changes to commentary in interrupts.asmDuncan Smith
2010-11-09Woops, forgot to delete two comments.Duncan Smith
2010-11-09Added guards around all routines that touch ePC or eSP.Duncan Smith
These guards have one major fault I can see. I put them as early in the routine as possible, but it's still a distinct possibility that the 68k interrupt will fire between move.b (epc)+,d0 in macro DONE of one instruction and the call to HOLD_INTS in the following instruction. I don't have a good solution to this. I can use the hardware interrupt holding support to make everything a critical section except for the cycle gap before that instruction, but that makes _every_ instruction 24 cycles slower. I don't consider that an acceptable solution.
2010-11-09Added loads of interrupt processing code.Duncan Smith
Properly handling interrupts that come in a critical section is a difficult problem. This is my first stab at it. Notably, I'm doing all my interrupt processing in softwareland. It turns out to be about 1/3 as fast as using the interrupt hardware directly, though I don't have to run in supervisor mode this way.
2010-11-09Clarified used/free registers listDuncan Smith
2010-11-09Makefile now has 'make clean' and is very thorough.Duncan Smith
2010-11-09Changed project and binaries name to z680k.Duncan Smith
2010-09-16Cleared up some compiler errorsDuncan Smith
2010-09-14Conditional jumps work now.Duncan Smith
Holy shit that was a hairy debug session. I have a lot to look forward to.
2010-09-14Trivial changes.Duncan Smith
2010-09-13CCF flags :(Duncan Smith
2010-09-13Documentation updateDuncan Smith
2010-09-13Timing correction macro added (as yet nonfunctional)Duncan Smith
2010-09-13Fixed glaring bug in arithmetic routines affecting (HL)Duncan Smith
2010-09-13Speed improvements to some instructions.Duncan Smith
2010-09-13Fixed bug in conditional instructions which take an argumentDuncan Smith
2010-09-13More testcases and a few fixesDuncan Smith
2010-09-13Comments saying what opcodes haven't been tested yetDuncan Smith
2010-09-13Started out on my own test suiteDuncan Smith
2010-09-13Endianness fixes, I don't know how correct these are ...Duncan Smith
2010-09-13Fixed endianness issue in deref :(Duncan Smith
2010-09-13Made zexdoc's writestr routine a bit fasterDuncan Smith
2010-09-13Changed zexdoc to halt instead of jumping into neverneverland when it's doneDuncan Smith
2010-09-13Made HALT instruction halt, even if it's not a very good way to haltDuncan Smith
2010-09-13Small patch to make JR reliableDuncan Smith
2010-09-10XXX UNDO LATER: Performance degrading change to make debugging easierDuncan Smith
2010-09-10Underef routine now should work correctlyDuncan Smith
2010-09-10How could I forget to actually write characters in 'writestr'?Duncan Smith
2010-09-10I think I nailed all the remaining wrong-sized moves of address registers ...Duncan Smith
2010-09-10Widened spacing to 64 bytes/instr to give myself some breathing room for nowDuncan Smith
2010-09-10CALL was mistakenly fetching an extra word and jumping to JP NZ instead of JPDuncan Smith
2010-09-10Fix to make PUSHW use d2 instead of d0Duncan Smith
2010-09-10Two more fixesDuncan Smith
The underef function will now return 0 if a match is not found, rather than returning something undefined. The routine for CALL immed.w was mistakenly calling deref with a truncated address. This has been fixed.
2010-09-10Lazy, slow hack to FETCHW and FETCHWI becuase I forgot about endiannessDuncan Smith
2010-09-10Trying to get the zexdoc testbench to run.Duncan Smith
Now, at least, it's integrated into the build system and will be automatically included in built executables.
2010-09-10Added stubs for putting the emulated screen into a TIOS-drawn window.Duncan Smith
2010-09-10Completely patched zexdoc to assemble with SPASM.Duncan Smith
2010-09-08Some more changes, spasm almost doesn't complain anymore!Duncan Smith
2010-09-08Working on adapting zexdoc to work in spasmDuncan Smith
2010-09-07Blank files for multibyte opcodes createdDuncan Smith
2010-09-07Added testbenches folderDuncan Smith
2010-09-07Fixed the last movea that wasn't size-suffixedDuncan Smith
2010-09-07IO port framework now worksDuncan Smith
A68k is defaulting all my address moves to word size, rather than long. I don't know whether I've expunged all this nonsense yet, but I'm trying. This version executes an infinite loop which writes 'A' to port 00h. I've patched in a write-to-console function on port 00h, so this can be used as a sort of debug monitor.
2010-09-06I actually have a Makefile now, thank you very much.Duncan Smith
2010-09-06Assembler is picky about EQUR apparently ...Duncan Smith
2010-09-06Registers holding emulated registers are now named.Duncan Smith
Hopefully 'esp', 'epc', 'eaf', and friends will be less troublesome than 'a4', 'a6', and 'd3'.
2010-09-06Registers holding emulated registers are now named.Duncan Smith
Hopefully 'esp', 'epc', 'eaf', and friends will be less troublesome than 'a4', 'a6', and 'd3'.
2010-09-06Fixes to actually run codeDuncan Smith
This is the version to run the first (trivial) infinite loop correctly. I hacked up the loader slightly to replace one of the (nonexistent) pages with a static byte array. z80 code executed: $4000: JP $4000 4000 c3 40 00 4003 This version also draws the opcode executed on the screen, to aid in debugging the emulator: move.b d0,$4c00+32*(128/8) Also, it turns out that I was mixing up the emulated SP (a4) and emulated PC (a6). That has been fixed. Further, it seems that movea defaults to a word operation in a68k. This led to pointer corruption, which has been fixed.