Changes

Feb 1, 2006... coldfire-0.3.1
  • Moved the serial code to pthreads. This will probably break alot of non-linux builds because of the differing location/name of -lpthreads, just send me the name of yours and i'll include it. This seriously speeds things up because we're not constantly poking the socket to see if someone is there. It also lets us easily do things like reconnect to a socket. The goal here is to emulate the CTS behaviour (not quite done yet) so when there is no socket connected the coldfire thinks there is no physical serial link connected to the port.
  • Rewrote the SR register handling. Instead of bitmasking each time we set the SR, now we just write to separate char fields in a struct. This also helps speed things up a lot. When we need the SR value we compute it by bitmasking and shiftin. We only ever read the SR value when doing a MOVEC or executing an interrupt. Booting the linux kernel, for example, we would go 10,000,000 instructions and only see 1,000 interrupts. That's a lot of bitmasking to do in 10 million instructions. Now we to slighly more bitmasking, but only 1,000 times in the same span.
  • Added the socket REUSE flag to the network code, not sure why it wasn't there before. But now we should always get the same port numbers..
Dec 4, 2005... coldfire-0.3.0
  • Wow, it's been a while. An update in my life. I've done my MASc. and I'm now doing a PhD at UBC. :)
  • Moved all instructions to isa_a and isa_b directories, to keep track of them by their proper names
  • Added isa_b versions of bcc and cmp (Thanks Alan)
  • I have a huge memory management change from various people still in the works. Somehow I managed to break my build, so there's no point releasing it all yet, but it's coming.
  • Compiles cleanly (and runs!) on 64bit archtiectures now, as well as 32bit.
  • I also don't have my cygwin environment anymore, so the cygwin link on the download page is brokey :(

June 1, 2004... coldfire-0.2.2
  • Small fix to the serial code to (more) correctly implement the dBug TRAP 15 functions.
  • Still haven't debugged DIV.

Feb 19, 2004... coldfire-0.2.1
  • Fixed the memory segment manager so that reallocated arrays don't move pointers that memory modules may have saved.
  • Added a new board layout file.
  • Discovered there are problems with the DIV instruction, but haven't debugged them yet :)

Feb 3, 2004... coldfire-0.2.0
  • Happy New Year Everyone! :)
  • Moved all 5206 instructions to a directory, and added a 5206e divide instruction (which has had very little testing!)
  • Unintegrated the SIM (System Integration Module) from the core emulator and made it a pluggable module in the .board files. So we now support different SIMs.
  • Wrote a SIM for the 5307 core.
  • Added a board design file for the 5307 board we use here at U of Waterloo.
  • Updated supported processors: 5206, 5206e, 5307

Oct 19, 2003... coldfire-0.1.6
  • Fixed big endian ram accesses, the emulator now works on big endian systems.
  • Added checks for systems that must do variable size aligned accesses, and integrated known-working read code, and wrote write code for those systems.
  • Added checks for snprintf, to please some people using antiquated systems. :)
  • Updated a bug in the disassembler for disassembling valid instructions with invalid operands.

June 3, 2003... coldfire-0.1.5
  • Removed -pedantic compile option, yes it forced ISO compliance.. but it's really annoying and causes nothing but problems for cygwin users.
  • Changed macro conventions back to gcc-esque. Again, for what I need to do in the code, trying to only use ISO C is too restrictive, and practically impossible to remove all the warnings.
  • There should be NO warnings/errors when compiling in gcc (or cygwin gcc) for gcc-2.95.x, >=egcs-2.91.x, gcc-3.x
  • Non-gcc users, if you want it to work, send me a patch that works for your compiler, and doesn't break in gcc-2.95.x, >=egcs-2.91.x, gcc-3.x.. because I've wasted too much time trying to please everyone.
  • Fixed a bug in mm.w and mm.l (they actually work now. :)

April 2, 2003... coldfire-0.1.4
  • Depricated all command line options, use the board config stuff now
  • Added close-to-correct(tm) cycle counting in the timer
  • Added --timerhack command line option to revert to the old timer code which ignores all the timer scaling values
  • Implemented SHI
  • Fixed bugs in MOVEA, LSR, LSL, ASL, ASR, NEGX

March 17, 2003... coldfire-0.1.3
  • Rewrote the initialization code: moved to a dynamic board config scheme.. Can support different processors and different memory maps now.
  • Tweaked the makefile for Cygwin. It should compile without problems now.
  • Updated code to conform to ISO C 99. (and added -pedantic to compile line)

July 31, 2002... coldfire-0.1.2
  • Fixed a bug (thanks to Greg Ungerer for the bug report) in BTST (and consequently BSET, BCHG, and BCLR) which has been in existence since the first write of the opcode. By chance it's just always worked :)
  • uClinux really works now... really. :)
  • Added an instruction cache (Thanks Elliott for the idea) which uses an O(1) lookup instead of an O(n) search. It noticeably speeds things up.

July 25, 2002... coldfire-0.1.1
  • Rewrote the memory mapping interface, it's entirely module based now.
  • Added SDRAM memory module
  • Added ISA BUS memory module (which allows the uClinux binaries on their site to run directly now)
  • Moved all other memory areas (timer, serial, system integration module, ram) to the memory module structure
  • Added SIGINT and SIGQUIT handling to generating autovector interrupt 7, and forcing a return to monitor.

July 22, 2002... coldfire-0.1.0
  • Magical patch from David McCullough for the serial code, and magically uClinux boots on the emulator.
  • Fixed some more serial stuff
  • Fixed rd to correctly display the SP
  • Fixed the timer to properly reset itself when requested
  • Completely rewrote the S19 downloader.
  • uClinux boots!

Mar 11, 2002... coldfire-0.0.23
  • Improved the exception handler
  • Fixed bugs in BTST, BSET, and NEG
  • Fixed an out of bounds memory bug in the monitor.
  • Added a ROM memory area.. the coldfire PC now starts executing code in the rom.

Mar 2, 2002... coldfire-0.0.22
  • Fixed a bug in breakpoint and trace handling
  • Properly initialized (according to dBUG) all the ICRs
  • Converted the monitor to use argc,argv based function calls.

Feb 9, 2002... coldfire-0.0.21
  • Fixed a bug in the interrupt system.. Hopefully the stackframe is generated correctly now. :)
  • Probably broke breakpoints and some other monitor stuff that used the PC directly.. it cannot use the PC directly anymore, it must pull it from the exception stackframe.

Jan 15, 2002... coldfire-0.0.20
  • Misc bugfixes
  • Elf loader
  • More fixes for bigendian systems, it doesn't quite work yet.
  • More instructions added to cycle counter
  • Bugfixes in the monitor with register handling. Don't know how these got in there.

Mar 13, 2001... coldfire-0.0.19
  • Fixed a typeo in ss.c
  • Added make install and uninstall

Oct 20, 2000... coldfire-0.0.18
  • Cycle counter added to the coldfire, since we can't do time accuratly, we might as well do cycles accuratly (then time can be derived from cycles)
  • Implemented breakpoints in the montior
  • Support for Big Endian systems (I think)
  • Stats for memory and register accesses, to help optimize code
  • Added ILLEGAL instruction
  • Implemented the framework for the entire SIM module support
  • Implemented monitor commands RESET(reset the coldfire), CFRD(dump coldfire sim register), CFRM(modify coldfire sim register), CFRI(coldfire sim register information)
  • Moved to a configure based install/compile

Aug 14, 2000... coldfire-0.0.17
  • NEGX, SUBX, TRAPF, MOVE from/to CCR implemented
  • Add the hacking file, with MISC hacking notes in it
  • Moved SR into the processor core memory struct
  • New exception handler, rewrote mem code again for it.
  • TRAP and the monitor now use this exception handling facility
  • Privilege violations, memory violations, and some other exceptions are generated
  • VBR is now memory mapped
  • Bug fixes. (DI, bcc, RM pc, networking, ability to quit, and others :)
  • Moved the RUN code elsewhere.. the emulator is now _always_ running, just our montior will block coldfire instructions from being executed
  • Replaced MOVE from/to SR/CCR with 1 file.. they're all really the same instruction

Aug 3, 2000... coldfire-0.0.16
  • BCHG is implemented
  • BTST is implemented
  • Rewrote the memory code, it's much faster now
  • Disabled the timing code, we have new plans for the timer
  • Moved the instructions to a registration process on startup, we can now support different instruction "sets"
  • Added MBAR support as a structure in a structure. Eventually all the processor/module memory will join MBAR in this structure
  • Various bug fixes.

July 14, 2000... coldfire-0.0.15
  • STOP is partly implemented
  • Fix a bug when accept() failed
  • Pentium ASM code for instruction profiling
  • Readline support in monitor
  • Restructured monitor

July 12, 2000... coldfire-0.0.14
  • EOR, EORI, ORI are implemented
  • Small fixes to monitor output format
  • Added windows compile options to the makefile

July 11, 2000... coldfire-0.0.13
  • It now compiles on windows using Cygwin
  • Added shameless copyright stuff.
  • Added not-so-shameless AUTHORS file, this is after all GPL :).
  • Added Matt Minnis to the AUTHORS file.
  • Added -v, --version to command line options.
  • Added help, ? command in dBug.
  • Network fixes to (try to) bind to local address properly.
  • Removed linux specific code, replaced with generic code.

July 9, 2000... coldfire-0.0.12
  • Removed pthread code. It now runs a single task (and is faster :).
  • Added --clock command line option to set clock speed.

June 16, 2000... coldfire-0.0.11
  • Implemented disassembly code for MOVEC instruction.
  • Added modificaion of PC to MOVEC instruction.. all the others still won't work.

March 31, 2000... coldfire-0.0.10
  • Fixed a nasty bug in RTE. Programmes should behave properly on RTE now.

March 25, 2000... coldfire-0.0.9
  • Fixed the timer. The emulator now has a 1ms clock frequency, all timer calculations should be based on that.

March 20, 2000... coldfire-0.0.8
  • Implemented MoveFROMSr instruction
  • Fixed the BHI instruction (The Motorola ColdFire docs incorrectly list the HI condition) Thanks Dave K.
  • Fixed a bug in storing registers (register store seems to always be long, regardless of specified size)
  • Set the base system timer frequency to 1millisecond (compared to the *real* 25MHz frequency of 40nanoseconds). It's not very fast, but at least it's consistent
  • Update: Broke the timer completely :(

March 16, 2000... coldfire-0.0.7
  • Implemented OR Instruction (how did we get so far without this?)
  • Made DL tell you if it coulnd't find the file :)

March 14, 2000... coldfire-0.0.6
  • Implemented HALT instruction (well, sort of.. it just returns to monitor)
  • Fixed interrupts (funny how properly setting the priority mask can fix things)
  • Moved TRAP#15 output to serial2, where its supposed to be... i think.
  • If you coldfire --trace monitor it will trace, regardless of the value of the "T" bit in the SR

March 13, 2000... coldfire-0.0.5
  • Implemented (d16,PC) and (d8,PC,Xi) addressing modes
  • Implemented MULS.W

March 12, 2000... coldfire-0.0.4
  • Bugfixes
  • Formatting fixes so the emulator's output is very close to the real thing
  • Implemented SWAP

March 10, 2000... coldfire-0.0.3
Changes
  • A whole krapload of bugfixes
  • Implemented ASL, ASR, BSET, DC, MULS.L
  • Implemented BHI, BLS, BCC, BLO (Thanks Dave K.)
  • Monitor command "trace"

March 9, 2000... coldfire-0.0.2
  • A few bugfixes
  • Implemented LSL, LSR, NEG, Scc