summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2010-11-12Added support for local labels in opcodesAstrid 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.Astrid Smith
2010-11-10Changes to commentary in interrupts.asmAstrid Smith
2010-11-09Woops, forgot to delete two comments.Astrid Smith
2010-11-09Added guards around all routines that touch ePC or eSP.Astrid 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.Astrid 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 listAstrid Smith
2010-11-09Makefile now has 'make clean' and is very thorough.Astrid Smith
2010-11-09Changed project and binaries name to z680k.Astrid Smith
2010-09-16Cleared up some compiler errorsAstrid Smith
2010-09-14Conditional jumps work now.Astrid Smith
Holy shit that was a hairy debug session. I have a lot to look forward to.
2010-09-14Trivial changes.Astrid Smith
2010-09-13CCF flags :(Astrid Smith
2010-09-13Documentation updateAstrid Smith
2010-09-13Timing correction macro added (as yet nonfunctional)Astrid Smith
2010-09-13Fixed glaring bug in arithmetic routines affecting (HL)Astrid Smith
2010-09-13Speed improvements to some instructions.Astrid Smith
2010-09-13Fixed bug in conditional instructions which take an argumentAstrid Smith
2010-09-13More testcases and a few fixesAstrid Smith
2010-09-13Comments saying what opcodes haven't been tested yetAstrid Smith
2010-09-13Started out on my own test suiteAstrid Smith
2010-09-13Endianness fixes, I don't know how correct these are ...Astrid Smith
2010-09-13Fixed endianness issue in deref :(Astrid Smith
2010-09-13Made zexdoc's writestr routine a bit fasterAstrid Smith
2010-09-13Changed zexdoc to halt instead of jumping into neverneverland when it's doneAstrid Smith
2010-09-13Made HALT instruction halt, even if it's not a very good way to haltAstrid Smith
2010-09-13Small patch to make JR reliableAstrid Smith
2010-09-10XXX UNDO LATER: Performance degrading change to make debugging easierAstrid Smith
2010-09-10Underef routine now should work correctlyAstrid Smith
2010-09-10How could I forget to actually write characters in 'writestr'?Astrid Smith
2010-09-10I think I nailed all the remaining wrong-sized moves of address registers ...Astrid Smith
2010-09-10Widened spacing to 64 bytes/instr to give myself some breathing room for nowAstrid Smith
2010-09-10CALL was mistakenly fetching an extra word and jumping to JP NZ instead of JPAstrid Smith
2010-09-10Fix to make PUSHW use d2 instead of d0Astrid Smith
2010-09-10Two more fixesAstrid 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 endiannessAstrid Smith
2010-09-10Trying to get the zexdoc testbench to run.Astrid 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.Astrid Smith
2010-09-10Completely patched zexdoc to assemble with SPASM.Astrid Smith
2010-09-08Some more changes, spasm almost doesn't complain anymore!Astrid Smith
2010-09-08Working on adapting zexdoc to work in spasmAstrid Smith
2010-09-07Blank files for multibyte opcodes createdAstrid Smith
2010-09-07Added testbenches folderAstrid Smith
2010-09-07Fixed the last movea that wasn't size-suffixedAstrid Smith
2010-09-07IO port framework now worksAstrid 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.Astrid Smith
2010-09-06Assembler is picky about EQUR apparently ...Astrid Smith
2010-09-06Registers holding emulated registers are now named.Astrid 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.Astrid Smith
Hopefully 'esp', 'epc', 'eaf', and friends will be less troublesome than 'a4', 'a6', and 'd3'.
2010-09-06Fixes to actually run codeAstrid 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.