/[gxemul]/trunk/HISTORY
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /trunk/HISTORY

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2 - (hide annotations)
Mon Oct 8 16:17:48 2007 UTC (16 years, 5 months ago) by dpavlin
File size: 91454 byte(s)
++ trunk/HISTORY	(local)
$Id: HISTORY,v 1.676 2005/04/07 15:14:55 debug Exp $

Changelog for GXemul:
---------------------

20030829	Skeleton. ELF stuff. Some instructions.
20030830	Simple test programs using +-*/^|&%, function calls,
		loops, and stuff like that work.
20030903	Adding more instructions, fixing some bugs.
20030907	Making adding of memory mapped devices easier, although
		the framework isn't built for speed.
		Adding a -q switch to turn of debug output.
20030911	Trying to fix some bugs. Minor changes. Some COP0
		registers are now meaningful.
20030919	Making APs (non-bootstrap cpus) available via a simple
		'mp' device. Implementing ll/lld and sc/scd (for atomic
		memory updates, needed by MP operating systems).
20030923	Minor updates: more instructions (divu, mulu, lwu,
		perhaps some more), and opcode usage statistics.
20030924	If the next instruction is nullified (for 'branch
		likely' type of instructions), counters for delays etc
		are now decreased as they should.
		Adding some comments.
		Adding instructions: movz, movn.
		Adding a simple mandelbrot test to mipstest.c.
20030925	Adding instructions: bltzl, bgezl, lh, lhu, sh, mfc*,
		mtc*.
		Adding a dummy instructions: sync, cache.
		Adding minimal DECstation PROM functionality: printf()
		and getsysid() callback functions.
		Beginning work on address translation.
20030927	Adding some more cop0 functionality (tlb stuff).
		Adding mc146818 real-time clock. (Skeleton stuff.)
20030928	Adding a dc7085 serial console device (dummy, but enough
		to output chars to the screen). NetBSD uses this for
		the MIPSMATE 5100.
20030929	Working on the TLB stuff.
		Adding instructions: srlv, tlbwr, tlbr, tlbp, eret.
20030930	Trying to find a bug which causes NetBSD to bug out, but
		it is really hard.
		Adding some a.out support (for loading an old
		OpenBSD 2.8/pmax kernel image).
		Adding instructions: lwc*, ldc*, swc1 and swc3.
		Beginning to add special code to handle the differences
		between R4000 (the default emulation) and R2000/R3000.
20031001	Symbol listings produced by 'nm -S' can be used to
		show symbolic names for addresses. (-S)
20031002	Fixing the i/d fake cache for R2000/R3000. It's still
		just an ugly hack, though.
		Fixing minor bugs to make the 3100 emulation use the
		dc device (serial console) correctly. So far, 5100 and
		3100 are the only ones that get far enough to print
		stuff, when booting NetBSD.
20031004	Adding skeleton Cobalt machine emulation (-E).
		Adding a dummy ns16550 serial controller, used by the
		Cobalt machine emulation.
20031006	Adding unaligned load/store instructions (lwl, lwr,
		ldl, ldr, swl, swr, sdl, sdr), although they are not
		tested yet.
		Fixed a "data modified on freelist" bug when running
		NetBSD/cobalt: setting the top bit of the index register
		when a tlbp fails (as the R4000 manual says) isn't
		sufficient, I had to clear the low bits as well.
		Adding break and syscall instructions, but they are not
		tested yet.
		Adding a 'gt' device, faking a PCI bus, for the Cobalt
		emulation.
20031008	Adding initial support for HPCmips (-F), a framebuffer
		device using X11. NetBSD/hpcmips can output pixels to
		the framebuffer, but that's about it.
20031009	Fixing the NetBSD/pmax bug: the "0/tftp/netbsd" style
		bootstring was only passed correctly in the bootinfo
		block, it needs to be passed as argv[0] as well.
		Adding instructions: mtlo, mthi.
		Rearrangning the source tree layout.
		Adding console input functionality. The NetBSD/cobalt
		kernel's ddb can now be interacted with.
20031010	Adding experimental (semi-useless) -t option, to show
		a function call tree while a program runs.
		Linux/cobalt now prints a few messages, but then hangs
		at "Calibrating delay loop..." unless an ugly hack is
		used (setting a word of memory at 0x801e472c to non-zero).
20031013	Adding a framebuffer device used in DECstation 3100;
		VFB01 for mono is implemented so far, not yet the
		VFB02 (color) variant.  Rewriting the framebuffer
		device so that it is usable by both HPCmips and DECstation
		emulation.
20031014	Minor fixes. Everything should compile and run ok
		both with and without X11.
20031015	Adding support for ECOFF binary images; text, data,
		and symbols are loaded. (Playing around with ultrixboot
		and ultrix kernels.)
20031016	The DECstation argv,argc stuff must be at 0xa0000000,
		not 0x80000000, or Ultrix kernels complain.
		Adding R2000/R3000 'rfe' instruction.
		Implementing more R2K/R3K tlb specific stuff, so that
		NetBSD boots and uses the tlb correctly, but much of
		it is ugly. (Needs to be separated in a cleaner way.)
		ECOFF symbols sizes are now calculated, so that offsets
		within symbols are usable.
20031017	DECstation bootstrings now automatically include the
		correct name of the kernel that is booting.
		Ultrix boots a bit.
20031018	ELF symbols are now read automatically from the binary.
		-t trace looks a bit better (string arguments are shown).
		Trying to get initial R5900 stuff working (the 128-bit
		CPU used in Playstation 2).
		Fixing a minor bug to make the VFB02 (color framebuffer)
		device work better, but it is still just 256 grayscales,
		not real color. Ultrix can now use the framebuffer (it
		calls it PMAX-CFB).
		A machine can now consist of CPUs of different types.
		Adding instructions: daddi, mov_xxx, mult_xx. The xxx
		instructions are not documented MIPS64 instructions,
		but NetBSD/playstation2 uses them. Perhaps VR5432
		instructions?
		Adding sign-extension to 32-bit mult.
		Adding Playstation 2 devices: dmac (DMA controller),
		gs (Graphic something?), and gif (graphics something
		else, which has access to the PS2's framebuffer).
		NetBSD/playstation2 works a bit, and prints a few
		bootup messages.
20031020	The cpu_type field of the cpu struct now contains
		usable values in a much better form than before. This
		simplifies adding of new CPU types.
20031021	Fixing an interrupt related bug: pc_last was used, but
		for interrupts this was incorrect. Fixed now.
		Fixing a load/store related bug: if a load into a
		register was aborted due to an exception, the register
		was still modified.
		The mc146818 rtc now reads its time from the system's
		time() function.
		Fixing another exception bug: if loading an instruction
		caused an exception, something bogus happened as the
		emulator tried to execute the instruction anyway. This
		has been fixed now.
20031023	Adding a quick hack which skips "while (reg --) ;"
		kind of loops.
		NetBSD/pmax suddenly reached userland (!), but only
		once and attempts to repeat it have failed. I believe
		it is problems with my interrupt handling system.
20031024	Adding 8-bit color palette support to the framebuffer.
		Connecting the pmax vdac device to the framebuffer's
		rgb palette.
		Fixing a bug in the dc device, so that console input
		is possible; interaction with NetBSD/pmax's built-in
		kernel debugger works now.
		Symbol sizes for file formats where symbol size isn't
		included are now calculated regardless of file format.
		Physical memory space can now be smaller than 64 bits,
		improving emulation speed a bit.
		Doing other minor performance enhancements by moving
		around some statements in critical parts of the code.
20031025	Minor changes to the dc device.
20031026	Adding support for reading symbols directly from
		a.out files. (Works with OpenBSD/pmax binaries.)
		Hardware devices may now register "tick functions" at
		specific cycle intervals in a generic fashion.
		All four channels of the dc serial controller device
		should now work; playing around with keyboard scan
		code generation when using the DECstation framebuffer.
		Making various (speed) improvements to the framebuffer
		device.
20031027	Playing around with the sii SCSI controller.
20031028	Minor fixes.
		Adding an SGI emulation mode (-G), and some ARCBIOS
		stuff, which SGIs seem to use.
		Adding getbitmap() to the DEC prom emulation layer,
		so some more -D x models become more usable.
		Adding a dummy 'ssc' serial console device for
		DECsystem 5400 emulation.
		Playing around with TURBOchannel stuff.
20031030	Minor fixes.
		Adding the sub instruction. (Not tested yet?)
		Sign-extending the results of multu, addi,addiu,
		add,addu,sub,subu,mfcZ.
		Adding a colorplanemask device for DECstation 3100.
		Fixed the NetBSD/pmax bug: I had forgotten to reset
		asid_match to 0 between tlb entry checks. :-)  Now
		userland runs nicely...
20031031	Fixing more bugs:  unaligned load/store could fail
		because of an exception, but registers could be "half
		updated". This has been fixed now.  (As a result,
		NetBSD/pmax can now run with any of r2000,r3000,r4000,
		r4400, or r5000.)
		Adding some R5K and R10000 stuff.  (Note: R5K is NOT
		R5000. Weird.)
		Adding dummy serial console (scc) for MAXINE.
		MAXINE also works with framebuffer, but there is no
		color palette yet (only black and white output).
20031101	Moving code chunks around to increase performance by
		a few percent.
		The opcode statistics option (-s) now shows opcode
		names, and not just numbers. :-)
		Fixing the bug which caused NetBSD/pmax to refuse
		input in serial console mode, but not in keyboard/
		framebuffer mode: the osconsole environment variable
		wasn't set correctly.
		Adding DEC PROM getchar() call.
		The transmitter scanner of the dc device now scans
		all four channels at once, for each tick, so serial
		output is (approximately) 4 times faster.
20031103	Adding a dummy BT459 vdac device, which does nothing
		but allows a PMAG-BA turbochannel graphics card to be
		used as framebuffer.
		Several DECstation machines (-D 2, 3, and 4) can now
		use TURBOchannel option card framebuffers as console,
		for output. (Keyboard input is still not implemented
		for those models.)  Only PMAG-AA (1280x1024x8) and
		PMAG-BA (1024x864x8), both using BT459 vdac, have
		been tested so far.
		Modifying the X11 routines so that several framebuffer
		windows now can be used simultaneously (if several
		graphics option cards are to be emulated concurrently).
20031104	DEC MIPSMATE 5100 (KN230) interrupts are shared
		between devices. I've added an ugly hack to allow
		that to work, which makes it possible to boot NetBSD
		into userland with serial console.
20031106	Removing the -S (symbol) option, as symbol files can
		now be given in any order together with other file
		names to be loaded.
		cookin tipped me about using (int64_t) (int32_t)
		casts instead of manually sign-extending values.
		Casting sometimes increases performance, sometimes
		decreases. It's tricky.
		Importing mips64emul into CVS.
20031107	Adding a generic ARC emulation mode.
		Increasing performance of the framebuffer by not
		updating it (or the XImage) if a write to the
		framebuffer contains exactly what is already in it.
		(This improves scrolling speed and initialization.)
		Adding initial MIPS16 support.
		Adding initial disk image support (-d command line
		option), but this will not be used until I get some
		kind of SCSI-controller emulation working.
20031108	Adding the first MIPS16 instructions: "move y,X",
		"ld y,D(x)", and "daddiu S,K" (but the last one
		doesn't work yet).
		Fixing the console environment variable for
		Enough of the 'asc' controller is now implemented
		to let NetBSD get past scsi disk detection when
		no disk images are used.
		DECstation machine type 2; both serial console and
		graphical console work now.
		Other X-windows bit-depths than 24 bits work now,
		but colors are still not correct in non-24 bit modes.
		Keypresses in X framebuffer windows are now
		translated into console keypresses. (Normal keys, but
		not cursor keys or other special keys.)
20031111	Adding support for X11 using non-24-bit output.
20031120	Adding X11 mouse event to emulated mouse event
		translation, but it's not tested yet.
		Trying to get more of the SCSI controller emulation
		to work.
20031124	Raw binaries can now be loaded into memory.
20031204	Adding srec binary support.
20031220	Adding some super-ugly arcbios emulation code.
		Making some progress on the SGI and ARC machine
		emulations.
20031222	SGI and ARC progress. Multiple CPUs are now added to
		the arcbios component tree (although NetBSD cannot
		actually use more than one).
20031228	Adding 'crime' and 'macepci' fake devices for SGI
		emulation.
		Finally implementing the cop0 'compare' register.
		Improvements to the ns16550 device, but it is still
		incomplete.
		SGI userland is now reached, but interaction is broken
		(due to the buggy ns16550).
20031229	Adding some more instructions: teq, dsllv
		Adding a Nintendo 64 emulation mode (skeleton).
		Adding R4300 and R12000 to the cpu list.
20031230	Adding bltzal, bltzall, bgezal, bgezall (not really
		tested yet).
		Fixing the 16550 serial controller device (by not
		supporting fifo, so in fact it emulates a 16450
		instead).  This causes NetBSD/sgimips to run nicely
		into userland, sysinst, and so on.
		Some ARC/RD94 interrupts seem to work ok now, but
		i/o interrupts are still not correctly implemented.
		NetBSD/arc userland is reached and can be interacted
		with, but there's no sysinst (?).
20040103	Trying to get some Irix stuff to work, but it's hard.
		Fixing some Cobalt/linux problems.
20040104	Adding a dummy 8250 device, so that Linux/sgimips can output
		console messages.
		Adding dmultu. (The same as dmult, so I'm not sure it's correct.
		Perhaps dmultu is correct and dmult is wrong...)
		Fixing a bug in unaligned load/stores of 64-bit values (a cast
		was needed).
		Linux/sgimips in 64-bit works a bit more than before.
		Adding simple (polled) input functionality to dev_zs.
		Making some progress on SGI-IP22 (IP32 still works best,
		though).
		Fixing the mc146818 clock device in ARC/NEC and SGI emulation
		modes, the year field was not correct.
		Adding a fake 'pref' instruction (lwc3).
20040106	Separating out memory.h from misc.h.
		Refactoring of a lot of small code fragments.
		The PCI bus device is now shared between Cobalt, SGI, and ARC.
		Support for RAM mirroring (dev_ram.c, not really tested yet).
		Ugly hack to select the largest of ELF string symbol tables,
		if there are more than one.
		Memory hole fix for ARCBIOS, and a fix for very large (>= 4GB)
		amounts of emulated RAM.
		TGA (DEC 21030) PCI graphics device. NetBSD/arc can boot with
		this card and use it as a framebuffer console.
20040107	Adding a fix (partly incorrect) to daddi, to allow Linux/sgimips
		to boot in 64-bit mode.
20040108	Fixing a sll/nop bug (rd==0 for nop, not sa==0 as before).
20040109	Trying to get an SGI-IP32 PROM image to boot.
20040110	Faking R10000 cache things.
		The PROM image boots, although it takes almost forever for it
		to realize that there is no keyboard.
		The 'gbe' SGI-IP32 graphics device works enough to display the
		Linux framebuffer penguin in the upper left corner :-)
20040111	-p and -P addresses can now be given as symbol names, not just
		numeric values.
		Experimenting with adding a PCIIDE (dev_wdc) controller to the
		Cobalt emulation.
20040120	Adding src/bintrans.c. No code yet, but this is a place for
		ideas to be written down.
		Increasing performance a little bit by inlining the check for
		interrupts (which occurs for every instruction).
20040124	Experimenting with pure userland (syscall) emulation.
20040127	Fixes for compiling under Solaris.
20040206	Some bintrans experiments.
20040209	Adding some simple Ultrix userland emulation syscalls.
20040211	Adding decprom_dump_txt_to_bin.c to the experiments/ dir.
		Adding a section to doc/ on how to use DECstation PROM dumps.
		Adding a hello world example to doc/ as well.
20040218	TURBOchannel slots that are empty now return a DBE exception,
		so that Ultrix and DECstation PROMs don't complain about
		broken TURBOchannel ROMs.
		Working some more on the machine-dependant interrupt stuff.
20040219	Trying out some Linux/DECstation kernels (semi-successfully).
20040222	YES! I finally found the bug that caused Linux/SGI-IP32 to only
		work on Alpha, not on 32-bit machines.  It was a shift left,
		probably done using 6 bits on alpha, 5 bits on 32-bit machines.
20040223	Some minimal DEC KN5800 progress; Ultrix prints some boot
		messages, detects 16 XMI R3000 cpus, and get a NULL panic.
		It's all fake, though, the CPUs don't actually work.
		Still, better than nothing :-)
20040225	An Ultrix OSF1 kernel with a ramdisk now boots :-)  (It was
		a problem with ultrixboot not giving the same arguments as
		NetBSD's boot program.)
20040225(later)	Fixing a bug in the DECstation dc serial device; digits 0-9
		were translated to numeric keypad 0-9, not the normal 0-9.
		(This caused Ultrix to print escape sequences instead of
		digits.)
20040226	Some progress on machine-dependant interrupt delivery
		for -D7 (Maxine) and -D4, and some more 'scc' serial
		controller featuers are implemented (but no interrupts/
		dma/keyboard/mouse stuff yet).
20040228	Progress on the scc controller; -D4 works in both serial
		console mode and with keyboard (graphical console), but no
		mouse yet.
20040301	SGI mace interrupts are now done using the new machine-
		independant interrupt system.
20040303	Fixing an R5900 bug; the lowest 6 bits have special meaning
		for coprocessor functions, not just 5 bits as on non-R5900
		CPUs. (This fixes a bug which caused NetBSD to crash.)
20040304	Adding enough (fake) DMA capabilities to the ioasic device
		to allow Ultrix to print boot messages in the -D3, -D4,
		and -D7 modes, and also print graphical console messages
		in -D4 and -D7 modes.
		-D11 (DEC5500) polled getchar added (to the 'ssc' device).
		Adding the 'madd' instruction (including R5900 weird stuff).
20040304(later)	Playstation 2's GIF can now copy 640x16 pixel chunks, allowing
		NetBSD to scroll up the framebuffer.  The cursor also works
		better now.
		Playstation 2 bootinfo RTC data should now be passed correctly
		to the running kernel.
		DECstation rtc year should be either 72 or 73, anything else
		will cause Ultrix to give a warning about invalid year.
20040306	Combining playstation2's dmac, interrupt, and timer devices
		into one (ps2_stuff).
		Adding some R5900 instructions: mfsa, mtsa, pmfhi, pmflo, por,
		lq, and sq.  (Most of them are just guesses, though.)
		Implementing my own XImage putpixel routine, which can be
		inlined... significantly faster than normal XPutPixel. :-)
20040307	Implementing the basic functionality of a "PMAG-CA" pixelstamp
		accellerated framebuffer device. Works with NetBSD and
		Ultrix, but no cursor or color support.
20040308	PMAG-CA, -DA, and -FA pixelstamps seem to work now.
		Adding a hack to allow a pmax/mach kernel to be loaded (it's
		a COFF file with 0 (!) sections).
		Initial test of bt459 + framebuffer cursor support.
20040309	Fixes/updates of dev_dec5800 and dev_ssc (and dev_decxmi) allow
		a KN5800 Ultrix-OSF1-ramdisk kernel to boot all the way into
		userland and be interacted with.
		The bt459 cursor should now look semi-nice, but it is still
		a bit fake.
20040310	Moving the DEC CCA stuff from src/machine.c into a separate
		device file (devices/dev_deccca.c).
		An ugly hack added to allow some more OSF/1 kernels (almost
		a.out, but without many of the header fields) to load.
20040314	Adding PMAG-JA and PMAG-RO (1280x1024 x 8-bit) TURBOchannel
		graphics devices. They work in Ultrix, but only monochrome
		and no cursor, because there are no ramdacs or such yet.
20040315	Pixelstamp solid fill now supports colors other than just
		zero-fill.
		Adding a (new) regression test skeleton.
20040321	Some really minor updates.
20040323	Fixes to allow SGI-IP20 and IP22 to work a bit better
		(aliased memory), and adding "private" firmware-like vectors
		to arcbios emul. An IP22 Irix kernel gets far enough to
		print an assertion warning (and then double panics). :-)
20040324	Adding a generalization hack to the SCC serial controller
		to work with SGI-IP19 (in addition to DECstations).
		Adding the 'sdc1' instruction.
		Some progress on various SGI emulation modes.
20040325	Minor updates.
20040326	Fixed a 'madd' bug (r5900). NetBSD/playstation2 now reaches
		userland correctly.  And a simple fix which allows NetBSD
		timer interrupts to be triggered; NetBSD uses T_MODE_CMPE
		(compare), while Linux uses _OVFE (overflow).
20040328	Linux on Playstation 2 boots a bit. The Playstation 2
		graphics controller has been extended to work better with
		NetBSD, and to include some Linux support as well.
		Some interrupt handling enhancements on Playstation 2,
		needed for Linux' dma.
		128-bit loads and stores (lq and sq) are allowed, although
		the top half of quadwords are not modified by other
		instructions. (Linux uses lq and sq.)
		Big-endian X Windows servers now display correct rgb color,
		not bgr as before.
20040330	Some minor updates to the documentation.
20040401	Adding a dummy ps2 OHCI device.
20040402	Progress on the asc SCSI controller.
20040406	Hack to allow ./configure, make to work on HP-UX B.11.00
		on HPPA-RISC, gcc 3.3.2. (Does not work with HP's cc.)
		More progress on the asc SCSI controller. Fixing INQUIRY,
		adding READ_CAPACITY, adding READ. Works a bit with NetBSD
		and some (but not all) Ultrix kernels, on DECstation type 2.
		Adding WRITE, SYNCRONIZE_CACHE.
		Mounting disks works in NetBSD :-)  It is a bit buggy,
		though. Or something else is buggy.
20040407	The bug is triggered by gunzip during NetBSD/pmax install.
20040408	Fixing a bug (non-nul-terminated string) which caused X11
		cursors to not display on Solaris.
		Unnecessary X11 redraws are skipped (removes some weird
		delays that existed before), and cursors are redrawn on
		window exposure. (The cursor functionality has been moved
		from dev_fb.c to x11.c.)
20040411	Fixing the DC7085 device so that Ultrix doesn't behave weird
		if both tx and rx interrupts occur at the same time.
		More advancements on the asc SCSI controller.
		More disk image filename prefixes are now recognized; c (for
		CD-ROM, as before), d for disk, b for boot device, r for
		read-only, and 0-7 for scsi id.
		Mounting disks works in Ultrix. Installing to disk usually
		crashes for various reasons, but an OSF/1 install gets
		relatively far (similar to the NetBSD/pmax install).
20040412	Trying to find the bug.
20040415	Finally found and fixed the bug; SCSI reads and writes
		(actually, any data in or data out) can be split up into
		multiple DMA transfers. That stuff was only partially
		implemented, and the part that was implemented was buggy.
		It works now. NetBSD/pmax and Ultrix 4.3 seems to like
		the SCSI stuff enough to install almost all the way.
20040415 (more)	Adding a hack which allows a host's cdrom device to be used as
		a cdrom device inside the emulator, eg /dev/cd0c.
		Making the cycle counter int64_t instead of long, as a 'long'
		overflows too easily on 32-bit machines. (The bug is still
		there, though.)
		I've now verified that a full NetBSD/pmax install can be done.
		If using a PMAG-AA graphics board, startx brings up X :-)
		mips64emul can be compiled inside NetBSD inside mips64emul,
		and it can run NetBSD in that environment. (I'm getting
		dizzy... :-)
20040417	Moving some coprocessor stuff from cpu.c to coproc.c.
20040424	Adding a BT455 vdac for PMAG-AA. Black and white are now
		rendered correctly in Xpmax.
		Adding colormap support to the BT459 device, for PMAG-BA.
20040425	Fixing a buffer length bug, which caused an Ultrix 4.5
		install to bug out on an i386 host.
20040429	FPU experiments.
20040502	More FPU experiments.
		Speedup for exception debug messages:  in quiet mode, debug
		messages were still evaluated, which took a relatively
		large amount of time.
20040503	Most FPU stuff fixed, but there is at least one known bug
		left; ps axu in NetBSD triggers it (ps loops forever).
20040504	A default install of Ultrix 4.5 succeeded! It boots up with
		a graphical login.
		Fixing the keyboard repetition bug (a lk201 "up" (release)
		scancode is now sent after every key).
20040505	Both CR and LF now produce the same lk201 scancode, so that
		pressing 'enter' works as expected in Ultrix.
20040506	Adding a vaddr to paddr translation cache, causing a speedup
		of perhaps 50% or more.
20040507	Fixing PMAG-BA color for Ultrix. (Ultrix relies on interrupts
		coming from the TURBOchannel slot to update the palette.)
20040508	Fixing cursor positioning for PMAG-BA.
20040511	Prints current nr of instructions per seconds, not only
		average, when using -N.
20040515	Some more bintrans experiments.
20040606	Adding ARCBIOS GetReadStatus() and Read().
		Adding some instructions: tlt, tltu, tge, tgeu, tne.
20040607	Adding the dsub instruction.
		Some minimal progress on SGI-IP30 emulation.
		Applying a patch from Juli Mallett to src/file.c (I'm not
		sure yet if it breaks or fixes anything).
		Some minor fixes for SGI-IP22 (such as faked board revision
		numbers).
20040608	ll/sc should now fail if any unrelated load/store occurs.
		Minor changes to the configure script.
		Adding some ifdefs around code which is not often used
		(the mfhi/mflo delay, and the last_used TLB experimental
		code); this might cause a tiny speedup.
20040609	Minor fixes.
20040610	Various minor SGI fixes (64-bit ARCS stuff, progress on the
		CRIME/MACE interrupt system, and some other random things).
20040611	More crime/mace progress, and some more work on pckbc.
		KN5800 progress: adding a XMI->BI adapter device; a disk
		controller is detected (but it is just a dummy so far).
20040612	Adding "dev_unreadable", which simplifies making memory
		areas unreadable. (NetBSD on SGI-IP22 no longer detects
		non-existant hpc1 and hpc2 busses.)
		Implementing rudimentary support for IP22 "local0" and
		"local1" interrupts, and "mappable" local interrupts.
		Some progress on the WDSC SCSI controller on IP22, enough
		to let NetBSD get past the disk detection and enter
		userland!  :-)
		The zs (zilog serial) device now works well enough to let
		NetBSD/sgimips be interacted with on IP22. :-)  (Though
		it is very ugly and hardcoded.)
20040613	IP32 didn't work last night, because there were too many
		tick functions registered. That has been increased now.
		Trying out NetBSD/sgimips 2.0 beta kernels. There are some
		differences compared to 1.6.2, which I'm trying to solve.
		Interrupt fixes for IP32: _serial and _misc are different.
		Separation of IP22 (Full-house) and IP24 (Guiness).
20040614	Modifying the memory layout for IP20,22,24,26 (RAM is now
		offset by 128MB, leaving room for EISA registers and such),
		and moving around some code chunks. This is not well
		tested yet, but seems to work.
		Moving parts of the tiny translation cache, as suggested
		by Juli Mallett.  It seems that the speedup isn't as
		apparent as it was a few weeks ago, though. :-(
		Speedups due to not translating addresses into symbol
		names unless the symbol name is actually printed.
		Added support for loading old big-endian (Irix) ECOFF
		kernels (0x60 0x01 as the first two bytes).
20040615 (late)	Adding enough SGI IP20 (Indigo) support to let NetBSD 2.0
		enter userland :-)  No interrupt specifics are implemented
		yet, so it hangs while doing terminal output.
20040618	Experimenting with the WDSC SCSI controller for IP20,22,24.
20040620	Adding a program which converts SGI prom dumps from text
		capture to binary, and some hacks to try to make such an
		IP22 PROM to work better in the emulator.
20040621	Removing the Nintendo 64 emulation mode, as it is too
		uninteresting to support.
		Adding SCSI tape device support (read-only, so far).
		Fixing a bug which caused the cursor to be corrupted if new
		data was written to the framebuffer, but the cursor wasn't
		moved.
20040622(early)	Finally! Making progress on the SCSI tape stuff; when going
		past the end of a file, automagically switch to the beginning
		of the next.
20040622(late)	Trying to track down the last SCSI tape bugs.
		Removing _all_ dynamic binary translation code (bintrans),
		starting from scratch again.
20040623(early)	Performing a general code cleanup (comments, fixing stuff
		that led to compiler warnings, ...).
		Disabling MIPS16 support by default, and making it a
		configure time option to enable it (--mips16). This gives
		a few percent speed increase overall.
		Increasing performance by assuming that instruction loads
		(reading from memory) will be at the same page as the last
		load.  (Several percent speedup.)
		Moving the list of kernels that can be found on the net from
		README to doc/.
20040624	Finally! I found and fixed the bug which caused 'ps', 'top',
		'xclock', and other programs in NetBSD/pmax to behave weird.
		Increasing performance by a few percent by running as many
		instructions in a row as possible, before checking for
		hardware ticks.
		When booting from SCSI tapes on DECstation, the bootstring
		now contains 'tz' instead of 'rz'.
		Adding a second ARC machine mode, "Acer PICA-61", -A2.
		Disabling the support for "instruction delays" by default
		(it has to be enabled manually in misc.h now, but is never
		used anywhere anyway).
		Other minor optimizations (moving around stuff in the
		cpu struct in misc.h, and caching cpu->pc in cpu.c).
		Separating the tiny translation cache into two, one for
		code and one for data. This gives a few percent speed
		increase.
20040625(early)	I think now is a good time for a "feature freeze",
		to let the code stabilize and then make some kind of
		first release.
20040625(later)	Adding a -v (verbose) command line option. If -v is not
		specified, the emulator goes into -q (quiet) mode just before
		it starts to execute MIPS code.
20040627	The configure script now adds -fomit-frame-pointer to the
		compile flags if the $CC seems to be able to handle that.
		Found and fixed a serious interrupt bug in BT459 (Ultrix'
		behaviour required a hack, which was incorrect), so
		performance for machines using the PMAG-BA framebuffer is
		now improved.
		For X11 bitdepths other than 8 or 24, a warning message
		is printed at startup.
		A number of other minor fixes, optimizations, updated
		comments and so on.
		Adding a BUGS file, a list of known bugs.
		Adding a minimal man page, doc/mips64emul.1.
20040628	Hacks for faking the existance of a second level cache
		(ARCBIOS and other places).
		An important fix for dc7085: tx interrupts should happen
		before rx interrupts, not the other way around as it was
		before. (This speeds up NetBSD boot on DECstation, and
		fixes a bug which Ultrix triggered on heavy keyboard input.)
		A couple of other minor fixes.
		Framebuffer fix: there was a bug which caused the rightmost/
		bottom pixel to sometimes not be updated, when running in
		scaledown mode. This is now fixed.
		Adding a small program which removes "zero holes" from
		harddisk image files.
20040629	More minor fixes.
20040629(later)	Adding -A3 (NEC RISCstation 2200) (this is similar to
		the 2250 model that NetBSD/arc can already boot all the
		way into userland and be interacted with), and -A4
		(Deskstation Tyne).
		Some more minor fixes.
20040630	Adding support for 15 and 16 bits X11 framebuffers,
		and converting from XYPixmap to ZPixmap (this fixes the
		problem of updates appearing in "layers" on some X
		servers).
		The pixels in the mouse cursor (for BT459) are now colored
		as the emulated OS sets them, although no transparency
		masking is done on the edges of the cursor yet. (In plain
		English:  the mouse cursor is no longer just a white solid
		square, you can actually see the mouse cursor image
		on the white square.)

==============  RELEASE 0.1  ==============

20040701	The -j option now takes a name, the of the kernel as passed
		on to the bootloader.  ("netbsd" is the default name.)
		Adding support to load bootstrap code directly from a disk
		image, for DECstation.  Both NetBSD/pmax and Ultrix boot
		straight of a disk image now, with no need to supply a
		kernel filename on the command line.  (Ultrix still needs
		-j vmunix, though, to boot from /vmunix instead of /netbsd.)
20040702	Minor bugfix (some new untested code for X11 keypresses was
		incorrect).
20040702(later)	Adding an ugly hack for CDROMs in FreeBSD; if an fread() isn't
		done at a 2048-byte aligned offset, it will fail. The hack
		tries to read at 2048-byte aligned offsets and move around
		buffers to make it work.
		Adding video off (screen blanking) support to BT459.

==============  RELEASE 0.1.1  ==============

20040702(later)	Cleanup to remove compiler warnings (Compaq's cc, Solaris' cc,
		and gcc 3.3.3/3.3.4 in Linux), mostly by putting ULL on large
		numeric constants.
		Better support for scaledown of BT459 cursors, but still not
		color-averaging.
		Beginning the work on adding better memory latency support
		(instruction delays), enabled by the --delays configure option.
20040703	Modifications to the configure script so that a config.h file
		is created, containing things that were passed along as
		-Dxxx on each cc command line before.
		More work on instruction latency support; trying to separate
		the concepts of nr of cycles and nr of instructions.
20040704	Working on R2000/R3000 caches.
		Adding a '--caches' option to the configure script.
		Various small optimizations.
		R3000 caches finally work. (I know that there is at least one
		bug, regarding interrupt response.)
20040705	Working on the 'le' device, and on a generic (device
		independant) networking framework. le can transmit and receive
		packets, and the network framework fakes ARP responses from a
		fake gateway machine (at a fixed ip address, 10.0.0.254).
		Adding a '-c' command line option, which makes emulated_hz
		automatically adjust itself to the current number of emulated
		cycles per host CPU second (measured at regular intervals).
20040707	Removing the '-c' option again, and making it the default
		behaviour of the emulator to automatically adjust clock
		interrupts to runtime speed (as long as it is above 1 MHz).
		(This can be overridden by specifying a static clock rate with
		the -I option.)
		Updating the doc/ stuff a bit.
		Generalization of the DECstation bootblock loading, to work
		with Sprite/pmax. Lots of other minor modifications to make
		Sprite work, such as adding support for DECstation "jump table"
		PROM functions, in addition to the old callback functions.
		Sprite boots from a disk image, starting the kernel if the
		argument "-j vmsprite" is used, but it seems to not like the
		DBE exceptions caused by reading empty TURBOchannel slots. :-/
20040708	Minor changes and perhaps some tiny speed improvements.
		The Lance chip is (apparently) supposed to set the length of
		received packets to len+4. (I've not found this in any 
		documentation, but this is what NetBSD expects.) So now, ICMP
		echo replies work :-)  UDP works in the outgoing direction,
		in the incoming direction, tcpdump can see the packets but they
		seem to be ignored anyway. (Weird.)
		Adding a separate virtual-address-to-host-page translation
		cache, 1-entry for loads, 1-entry for stores. (For now, it
		only works on R4000 as there are conflicts with cache usage
		on R3000).
		Changing the lower clock speed bound from 1 MHz to 1.5 MHz.
20040709	Incoming UDP checksums were wrong, but are now set to zero
		and NetBSD inside the emulator now accepts the packets (eg.
		nameserver responses).  Host lookups and even tftp file
		transfers (using UDP) work now :-)
		Adding a section on Networking to the Technical documentation,
		and a preliminary NetBSD/pmax install instruction for network
		installs to the User documentation.
		Some updates to the man page.
20040709(later)	Fix to the TURBOchannel code to allow Sprite to get past the
		card detection. Seems to still work with Ultrix and NetBSD.
		This also makes Linux/DECstation properly recognize both the
		Lance controller and the SCSI controller. Linux 2.4.26 from
		Debian boots nicely in framebuffer mode :-)
20040710	Some bits in the KN02 CSR that were supposed to be readonly
		weren't. That has been fixed, and this allows Linux/DECstation
		to get past SCSI detection. :-)
		Minor updates to the ASC controller, which makes Linux and
		OpenBSD/pmax like the controller enough to be able to access
		SCSI devices. OpenBSD/pmax boots from a disk image for the
		first time. :-)  Linux detects SCSI disks, but I have no
		bootable Linux diskimage to test this with.
		Updating the doc/ to include instructions on how to install
		OpenBSD/pmax onto a disk image.
		Naively added a PMAGB-BA (1280x1024x8) in hopes that it would
		basically be a PMAG-BA (1024x864x8) in higher resolution,
		but it didn't work that way. I'll have to look into this later.
		Adding a -o option, useful for selecting '-s' (single user
		mode) during OpenBSD install and other things.
		After a lot of debugging, a serious bug related to the tiny
		cache was found; Linux just changes the ASID and returns when
		switching between processes in some occasions without actually
		_writing_ to the TLB, and I had forgotten to invalidate the
		tiny cache on such a change.
20040711(early)	I've been trying to repeat the OpenBSD install from yesterday,
		but appart from the first initial install (which was
		successful), I've only been able to do one more. Several
		attempts have failed with a filesystem panic in the middle
		of install. I'm not sure why.
20040711	I found the "bug": wget downloaded the simpleroot28.fs.gz file
		as read-only, and gunzip preserved those flags. Thus, OpenBSD's
		installer crashed as it didn't get its writes through to the
		disk.
		Parts of the 1280x1024x8 PMAGB-BA graphics card has been
		implemented, it works (unaccelerated) in NetBSD and OpenBSD,
		but Ultrix does not seem to like it.
		Cleaned up the BT459 cursor offset stuff a bit.
		Trying to make the emulated mouse coordinates follow the host's
		mouse' coordinates (for lk201, DECstation), by
		"de-accelerating" the data sent to the emulated OS.
20040711(later)	Fix so that Sprite detects the PMAG-BA correctly.
		Adding some stuff about NFS via UDP to the documentation.
		Fixed the 'update flag' for seconds, so now Sprite doesn't
		crash because of timer-related issues anymore.
		Fixing KN02 interrupt masks a bit more, to make Sprite not
		crash. Sprite now runs quite well.
20040712	Working on IP/UDP fragementation issues. Incoming UDP packets
		from the outside world can now be broken up into fragments
		for the guest OS. (This allows, for example, OpenBSD/pmax to
		be installed via nfs.)  Outgoing fragmented packets are NOT
		yet handled.
		Linux doesn't use 64-bit file offsets by default, which is
		needed when using large disk images (more than 2GB), so the
		configure script has now been modified to add necessary
		compiler flags for Linux.
20040713	Trying out some minor optimizations.
		Refreshing the UDP implementation in src/net.c a little.
20040714	Updating the documentation a little on how to experiment
		with a Debian Linux install kernel for DECstations.
		A 'mini.iso' Linux image for DECstation has different fields
		at offsets 0x10 and 0x14, so I'm guessing that the first is
		the load address and the second is the initial PC value.
		Hopefully this doesn't break anything.
		Some initial TCP hacks, but not much is working yet.
		Some updates for IP30:  The load/store 1-entry cache didn't
		work too well with IP30 memory, so it's only turned on for
		"MMU4K" now. (This needs to be fixed some better way.)
		Adding a hack which allows Linux/Octane to use ARC write()
		and getchild() on IP30. Linux uses ARCBIOS_SPB_SIGNATURE as a
		64-bit field, it was 32-bit before.
		Making ugly hacks to the arcbios emulation to semi-support
		64-bit equivalents of 32-bit structures.
20040716	Minor fixes to the configure script (and a few other places)
		to make the sources compile out-of-the-box on HP-UX (ia64
		and HPPA), old OpenBSD/pmax (inside the emulator itself), and
		Tru64 (OSF/1) on Alpha.
		A couple of other minor fixes.
20040717	A little TCP progress; OpenBSD/pmax likes my SYN+ACK replies,
		and tries to send out data, but NetBSD/pmax just drops the
		SYN+ACK packets.
		Trial-and-error led me to change the 64-bit ARCS component
		struct again (Linux/IP30 likes it now). I'm not sure about all 
		of the offsets yet, but some things seem to work.
		More 64-bit ARCS updates (memory descriptors etc).
		Better memory offset fix for IP30, similar to how I did it for
		IP22 etc. (Hopefully this doesn't break anything else.)
		Adding a MardiGras graphics controller skeleton for SGI-IP30
		(dev_sgi_mardigras.c).
		Thanks to Stanislaw Skowronek for dual-licensing mgras.h.
		Finally rewrote get_symbol_name() to O(log n) instead of O(n)
		(Stanislaw's Linux kernel had so many symbols that tracing
		with the old get_symbol_name() was unbareably slow).
		Removing all of the experimental tlbmod tag optimization code
		(the 1-entry load/store cache), as it causes more trouble than
		the performance gain was worth.
20040718	The MardiGras device works well enough to let Linux draw the
		SGI logo and output text.
		A bunch of other minor changes.
20040719	Trying to move out all of the instruction_trace stuff from the
		main cpu loop (for two reasons: a little performance gain,
		and to make it easier to add a GUI later on).
20040720	Finally found and fixed the ethernet/tcp bug. The hardware
		address is comprised of 6 bytes, where the _first_ byte should
		have a zero as the lowest bit, not the last byte. (This causes
		NetBSD and Linux running in the emulator to accept my SYN+ACK
		packets.)
		Getting the first nameserver address from /etc/resolv.conf.
		(This is not used yet, but could be useful if/when I add
		internal DHCP support.)
		Working more on the TCP stuff; TCP seems to be almost working,
		the only immediate problem left is that the guest OS gets
		stuck in the closing and last-ack states, when it shouldn't.
		It is now possible to install NetBSD and OpenBSD via ftp. :-)
20040721	Trying to fix the last-ack bug, by sending an RST after the
		end of a connection. (Probably not a correct fix, but seems
		to work?)
		Adding a my_fseek() function, which works like fseek() but
		with off_t instead of long, so that large disk images can
		be used on systems where long is 32 bits.
20040722	Trying to fix some more TCP related bugs.
20040725	Changing the inlined asm statement in bintrans_alpha.c into
		a call to a hardcoded array of bytes that do the same thing
		(an instruction cache invalidation). This allows the same
		invalidation code to be used regardless of compiler.
		Some other minor changes.
20040726	Minor updates. The configure script is now more verbose.
		A Debian/IP22 Linux tftp boot kernel requires ARCS memory to
		be FreeMemory, not FreeContiguous. (This should still work with
		other SGI and ARC OSes.)
		Fix for ARCS write(), so it returns good write count and
		success result (0).
		Some hacks to the IP22 memory controller, to fake 72MB RAM
		in bank 0.
		The IP22 Debian kernel reaches userland (ramdisk) when run
		with -G24 -M72 -CR4400, if a special hack is done to the
		zs device.
20040730	Removing mgras.h, as I'm not sure a file dual-licensed this way
		would work. (Dual-licensing as two separate files would work
		though.)
		Preparing for the upcoming release (0.2).
20040801	Fixing the 512 vs 2048 cdrom sector size bug; I hadn't 
		implemented the mode select SCSI command. (It still isn't
		really implemented.)
		A bug which crashes the emulator is triggered when run with
		new NetBSD 2.0_BETA snapshots on a Linux/i386 host. I'm not
		sure why.
		UDP packets sent to the gateway (at 10.0.0.254) are now
		forwarded to the machine that the host uses as its nameserver.
		Some other minor fixes.

==============  RELEASE 0.2  ==============

20040803	A post-3.5 OpenBSD/sgimips kernel snapshot with ramdisk seems
		to boot fine in the emulator, all the way to userland, and
		can be interacted with.
		Adding a -y option, used to set how many (random) instructions
		to run from each CPU at max (useful for SMP instruction
		interleave experiments).
		Importing a 8x16 console font from FreeBSD (vt220l.816).
		Adding a skeleton for a 80x25 text console device (dev_vga),
		useful for some ARC modes. (Character output is possible, but
		no cursor yet.)
		Adding a dev_zero device (returns zeroes on read).
		OpenBSD/arc 2.3 can get all the way to userland with -A4 (if
		the wdc devices are commented out) but bugs out there, probably
		because of interrupt issues.
		Adding a -A5 ARC emulation mode (Microsoft-Jazz, "MIPS Magnum")
		which NetBSD seems to like. No interrupt specifics yet, so
		it hangs while waiting for SCSI.
20040804	Some dev_mp updates.
		The -y switch has to do with number of cycles, not number
		of instructions; variable names have been changed to reflect
		this.
20040805	Minor updates. Adding some more CPU types/names, but they
		are probably bogus.
		Adding a MeshCube emulation mode. Just a skeleton so far, but
		enough to let a Linux kernel print some boot messages.
		Adding the 'deret' instruction.
20040806	Adding include/impactsr-bsd.h (a newer version of what was in
		mgras.h before, and this time with only a BSD-style license),
		but it is not used yet.
20040810	Some Au1500 updates.
20040811	Adding the 'clz', 'clo', 'dclz', and 'dclo' special2 (MIPS32
		and MIPS64) instructions.
		More Au1500 updates.
20040812	Using fseeko(), when it is available.
		Other minor updates.
		Adding a NetGear WG602 emulation mode skeleton (-g); after
		a lot of trial and error, a Linux kernel (WG602_V1715.img)
		gets all the way to userland, but hangs there.
20040818	Adding signal handlers to better cope with CTRL-Z and CTRL-C.
		Adding a simple interactive single-step debugger which is
		activated by CTRL-C. (Commands so far: continue, dump, help,
		itrace, quit, registers, step, trace, version)
20040818(later)	Adding a 'tlbdump' debugger command, and some other minor
		fixes.
20040819	Minor updates. Adding an 'unassemble' debugger command.
20040822	Minor updates to the regression testing framework.
20040824	Minor updates based on feedback from Alec Voropay
		(configure script updates for Cygwin and documentation).
20040826	Minor updates.
		Adding a cursor to the VGA text console device.
		Changing all old 11:22:..55:66 ethernet macs to 10:20..60,
		still hardcoded though.
20040828	Minor updates.
20040829	mips64emul is 1 year old today :-)
20040901	tests/README now lists "all" MIPS opcodes. This list should
		be updated whenever a new opcode is implemented, or when a
		regression test is added. (A combination of instructions from
		the TX79 manual, the GNU assembler, and the MIPS64 manual).
		Hopefully I haven't missed too many.
		Adding a section on regression testing to doc/technical.html.
20040902	Finally beginning the work on separating out the stuff from
		main.c into a "struct emul". Very time-consuming.
		Some minor fixes for LL/SC on R10000.
20040905	Moving more stuff from main.c into struct emul. Unfortunately,
		it seems that this causes a slowdown of the emulator.
		Userland emulation is now only used if --userland is used
		when running configure.
		Modifying src/symbol.c to not use global variables.
20040906	Minor update.
20040914	Using $COPTIM when detecting which compiler flags to use in
		the configure script. (This makes sure that combinations of
		flags should work.)
		There'll probably be a 0.2.1 release some time soon, but I'll
		do some more clean-up first.
		Minor update to the detection of ECOFF files, but I don't like
		it; sometimes the endianness of the magic value seems to be
		swapped, but it doesn't have to do with endianness of the
		actual data?
20040916	Minor updates. Adding an Example section to the manpage, but
		as I'm not really familiar with manpage formatting, it will
		need to be rewritten later.
20040917	Finally making the coprocessor instructions disassemblable
		even when not running.
		Doing some testing for the 0.2.1 release.

==============  RELEASE 0.2.1  ==============

20040923	Updating the documentation about how to (try to) install
		Debian GNU/Linux.
20040924	Some more updates to the documentation.
20040925	Adding overflow stuff to 'add' and 'sub'.
20040926	Minor updates: possibly a fix to 'sltiu' (the imm value
		should be treated as signed, and then converted to unsigned,
		according to the MIPS64 manual), and removing the
		'last_was_rfe' stuff (again).
		OpenBSD/arc used speed-hack jumps with other deltas than just
		+/- 1 (it used -3 iirc), so the jump speedhack should now
		support any delta. Also adding bgtzl and blezl as possible
		instructions for the speed-hack jumps. (This needs to be
		tested more.)
20040928	Minor updates. Some ARC stuff ("arcdiag" runs now).
		cpu_register_dump() now also dumps coprocessor registers.
20040929	More ARC updates. Making the code look a tiny bit nicer
		than before. "arcdiag.ip22" works for -G22 (SGI-IP22).
		Apparently the overflow support in the 'add' instruction
		was incorrect, so I disabled it.
20041002	Trying to install Ultrix in the emulator, but the installer
		crashes; found (and fixed) the bug rather quickly: the "fix"
		I implemented a few days ago for the 'sub' instruction
		(according to the MIPS64 manual) caused the bug.
20041004	Changing the behaviour of the -j command line option. The
		default is now "" (or taken from the last filename given on
		the command line), not "netbsd". In practice, this doesn't
		change much, except that -j netbsd.pmax is no longer needed
		when installing NetBSD.
		Adding a COMPILE_DATE string to config.h.
20041007	Adding a NEC RISCserver 4200 model (-A6), and some more
		updates to the ARC component tree generator.
20041008	The 'll' instruction should be signed, not unsigned as before.
		This (and some other minor fixes) causes Irix on SGI-IP32 (O2)
		to actually boot far enough to print its first boot messages :)
		Working on some new dynamic bintrans code. Enough is now
		implemented so that the 'nop' instruction is translated
		and there is support for Alpha, i386 and UltraSparc backends,
		but performance is about 50% worse than when running without
		bintrans. (This is as expected, though.)
20041009	Minor updates to the documentation.
		Using mprotect() to make sure that the code created dynamically
		by the bintrans subsystem is allowed to be executed. (This
		affects newer OpenBSD systems, and possibly others.)
		The translated code chunks now only get one argument passed to
		them, the (struct cpu *) of the current cpu.
20041010	Hack to dev_le.c which makes Ultrix accept the initialization
		of the LANCE controller. (This goes against the LANCE
		documentation though.)
		In src/net.c, a fix for Ultrix (which seems to send larger
		ethernet packets than the actual TCP/IP contents). The hack to
		dev_le.c and this fix is enough to let Ultrix access the
		Internet.
		For DECstation, when booting without a disk image (or when
		"-O" is used on the command line), use "tftp" instead of "rzX"
		for the boot string.
20041011	Adding cache size variables to the emul struct, so that these
		can be set on a per-machine basis (or potentially manually
		on the command line).
20041012	Mach/PMAX now passes the LK201 keyboard self-test (although
		the keyboard ID is still bogus).
20041013	Minor updates.
		Hacks to the ASC SCSI controller for Mach/PMAX, hopefully this
		will not break support for other OSes.
20041014	Minor fix to src/emul.c for reading bootblocks at the end of
		a disk or cdrom image (thanks to Alexandru Lazar for making me
		aware of this).
		Adding "gets()" to src/dec_prom.c.
		Working a bit on ARC stuff. Importing pica.h from NetBSD.
		Minor updates to the ARC component tree for PICA-61.
		Adding a dev_jazz.c (mostly for PICA-61).
		Renaming dev_jazz.c into dev_pica.c. Working on PICA timer
		and interrupt specifics.
20041016	Adding some dummy entries to lk201.c to reduce debug output.
		Some bintrans updates (don't run in delay slots or nullified
		slots, read directly from host memory and not via memory_rw(),
		try mmap() before malloc() at startup, and many other minor
		updates).
		Adding bintrans_mips.c for 64-bit MIPS hosts, but it is not
		used yet.
20041017	Minor updates.
20041018	Update to dev_mc146818 to allow Mach to boot a bit further.
		The "hardware random" in dev_mp.c now returns up to 64 bits
		of random.
20041019	Minor updates to the way cache sizes are used throughout the
		code. Should be mostly ok for R[234]x00.
		src/file.c now loads files using NO_EXCEPTIONS. Whether this
		is good or bad, I'm not sure.
20041020	Adding a Linksys WRT54G emulation skeleton (-H).
20041021	Minor updates.
		R1[024]000 cache size bits in the config register should now
		be ok.
		Trying to make dev_asc.c work better with PICA.
		More work on PICA interrupts (but they are broken now).
20041022	Generalizing the dev_vga text console device so that it can be
		used in other resolutions than just 80x25. Works with
		OpenBSD/arc.
		emul->boot_string_argument is now empty by default (except
		for DECstation modes, where it is "-a").
		Speedup of dev_ram by using mmap() instead of malloc().
		Using mmap() in memory.c as well, which reduces memory usage
		when emulating large memory sizes if the memory isn't actually
		written to.
20041023	Minor updates.
20041024	Updates to the PC-style keyboard controller, used by PICA.
		Updates to the PICA (Jazz) interrupt system. Both NetBSD/arc
		and OpenBSD/arc now reach userland with PICA emulation, and
		can be interacted with (there are a few programs on the
		INSTALL kernel ramdisks). In the case of OpenBSD, a VGA text
		console and PC-style keyboard controller is used, NetBSD
		runs on serial console.
		Adding a framework for DMA transfer for the ASC SCSI
		controller.
		Implementing a R4030 DMA controller for PICA, enough to let
		OpenBSD/arc and NetBSD/arc be installed on an emulated
		Pica. :-)
		Updates to the documentation.
20041025	Working on ISA interrupts for PICA.
		Adding an Olivetti M700 emulation mode (-A7).
		Better separation of PICA and M700 stuff (which I accidentally
		mixed up before, I thought the M700 Linux kernel would 
		also work on PICA because it almost booted).
		Writing a skeleton G364 framebuffer for M700, enough to show
		the Linux penguin and some text, although scrolling isn't
		correctly implemented yet.
		Adding a dummy SONIC (ethernet) device, dev_sn, for PICA.
		Fixing the passing of OSLOADOPTIONS for ARC, the default is
		now "-aN" which works fine with OpenBSD/arc and NetBSD/arc.
20041027	Minor updates.
20041029	Adding a Sony NeWS "newsmips" emulation mode skeleton (-f).
		Found and fixed a bug which prevented Linux/IP32 from running
		(the speed-hack-jump-optimization fix I made a few weeks ago
		was buggy).
		Adding the trunc.w.fmt and trunc.l.fmt instructions, although
		the are probably not really tested yet.
		Changes to how floating point values are handled in
		src/coproc.c, but right now it is probably very unstable.
20041101	I had accidentally removed the instructions on how to install
		Ultrix from doc/index.html. They are back now.
		Adding a -Z option, which makes it easier to run dual- or
		tripple-head with Ultrix. (Default nr of graphics cards
		without -X is 0, with -X is 1.)
		Minor update which makes it possible to switch to the left
		monitor when running tripple-head, not just right as before.
		When using more than one framebuffer window, and the host's
		mouse cursor is in a different window than the emulated mouse
		cursor, the emulated mouse will now try to move "very far",
		so that it in practice changes screen.
		Running Ultrix with dual- and tripple-head now feels really
		great.
20041101(later)	OpenBSD/arc and Linux/Olivetti-M700 don't both work at the
		same time with the speed-hack stuff. So, from now on, you
		need to add -J for Linux, and add nothing for openbsd.
20041102	Minor update for OSF/1 V4.0 (include sys/time.h in src/net.c
		and add -D_POSIX_PII_SOCKET to the C compiler flags).
20041103	Minor updates for the release.
		For some reason, Mach/PMAX caused the emulator to bug out on
		SunOS/sparc64 (compiled in 64-bit mode); a minor update/hack
		to dev_asc fixed this.

==============  RELEASE 0.2.2  ==============

20041103	Minor updates.
20041104	Minor updates.
20041105	Running with different framebuffer windows on different X11
		displays works now (even with different bit depths and
		endiannesses on different displays). A new command line option
		(-z) adds DISPLAYs that should be used.
		Update regarding how DECstation BT459 cursors are used;
		transparency :-) and some other bug fixes.
20041106	More bt459 updates. The cursor color seems to be correct for
		NetBSD, OpenBSD, Ultrix, and Sprite.
		Some minor bintrans updates (redesigning some things).
20041107	More bintrans updates (probably broken for non-Alpha targets).
		Moving doc/mips64emul.1 to man/.
20041108	Some updates.
20041109	More updates. Bintrans experiments mostly.
20041110	Some minor bintrans updates.
20041111	Minor updates.
20041112	A little rewrite of the bintrans system (again :-), this time
		a lot more naďve and non-optimizing, in order to support delay
		slots in a much simpler way.
		Ultrix 4.5 boots into a usable desktop on my home machine in
		3min 28sec, compared to 6-8 minutes without bintrans.
20041113	Some minor bintrans updates.
20041114	More bintrans updates. Ultrix now boots in exactly 3 minutes
		on my home machine.
20041115	More bintrans updates.
20041116	Bintrans updates.
20041117	Working on dev_dec_ioasic and related issues.
		Adding support for letting translated code access devices in
		some cases (such as framebuffers).
20041118	Moving some MIPS registers into Alpha registers, which gives
		a speed improvement.
		Beginning to write an i386 bintrans backend. Skeleton stuff
		works, lui, jr/jalr, addiu/daddiu/andi/ori/xori, j/jal,
		addu/daddu/subu/xor/or/nor/and.
20041119	dsubu/sll/srl/sra, rfe,mfc0,dmfc0, beq,bne, delayed branches.
		Some load/store (but not for bigendian emulation yet.)
		Time to reach Ultrix 4.5's graphical login on a 2.8 GHz Xeon
		host is now down to 20 seconds!
		Adding bgez, bltz, bgtz, and blez to the i386 backend.
20041120	Minor updates (bintrans related mostly).
		Time to reach Ultrix login on the Xeon is now 11 seconds.
		Adding 'mult', 'multu' and a some parts of mtc0 to the Alpha
		backend.
		The transparency updates to the X11 cursor support made the
		OpenBSD/arc cursor disappear; that has been fixed now.
		Unfortunately, something with Acer Pica emulation is broken
		when bintrans is enabled.
20041121	Making tlbwr, tlbwi, tlbp, tlbr callable directly from
		translated code.
		Adding sltiu, slti, slt, and sltu to the i386 backend.
20041122	More bintrans updates.
		With the Alpha backend, the status and entryhi registers
		can (in some cases) be written without exiting to the main
		loop. Ultrix boot time until a usable desktop is reached
		is about 1 min 35 seconds on the 533 MHz pca56.
		Adding srlv, srav, and sllv to the i386 backend.
20041123	Removing the special handling of high physical addresses for
		DECstation emulation from the main memory handling code, and
		replacing it with a mirror device instead. (This results in
		a tiny increase in performance, and cleaner code.)
		Various minor updates.
20041124	Ripping out _all_ bintrans load/store code, because I have
		a new idea I'd like to try out.
		A total rewrite of the load/store system. It works when
		emulating 32-bit MIPS, but not for 64-bit code yet.
		Some minor updates to the dev_fb, but no speed improvement.
		Making the 'le' ethernet device' SRAM work with bintrans.
20041125	Various updates.
		Adding a little "bootup logo" to the framebuffer.
		There is now one translate_address() for R3000-style MMUs,
		and one for the other types. (This gives a tiny speed
		improvement.)
20041126	Minor updates, bintrans.
		Fixing the bug which caused OpenBSD/arc (R4000) to bug out;
		it was introduced between the 7:th and 10:th of November
		when moving up the check for interrupts to above the code
		which runs bintrans code, in src/cpu.c.
		Adding movn and movz to the Alpha bintrans backend.
20041127	Various minor updates.
20041128	Making the R2000/R3000 caches work with bintrans, even in
		isolated mode. (Not true cache emulation, but it works with
		NetBSD/pmax, OpenBSD/pmax, and Ultrix.)
		Making the default cache size for R3000 4KB instr, 4 KB data;
		a real R3000 could have 64KB each, but emulated OSes run
		faster when they think the cache is smaller :-)
		Updates to the i386 backend: the nr of executed instructions
		is now placed in ebp at all times, and some support for
		mtc0 similar to how it is done in the Alpha backend has been
		added. A full NetBSD/pmax 1.6.2 install can now be done in
		5 minutes 35 seconds, on a 2.8 GHz Xeon host (with -bD2 -M20).
		Adding mult and multu to the i386 bintrans backend.
		Reducing the number of malloc/free calls used by the
		diskimage subsystem.
20041129	Minor updates to the Alpha bintrans backend.
20041130	Trying to fix the bug which prevents Linux from working
		with bintrans. It _seems_ to work now. (Pages could in some
		cases be written to after they were translated, but that
		has been fixed now.)
		A couple of other minor fixes.
		Minor updates to the Alpha backend (directly using Alpha
		registers in some cases, instead of loading into temporaries).
		Updates to the i386 backend (special hacks for 32-bit
		MIPS emulation, which are fast on i386, for example only
		updating half of the pc register).
20041201	More updates to the i386 backend, similar to those yesterday.
		Preparing for release 0.2.3.
		Adding a generic load/store mechanism, which is used when the
		32-bit optimized version cannot be used (for R4000 etc).

==============  RELEASE 0.2.3  ==============

20041202	If ALWAYS_SIGNEXTEND_32 is defined in misc.h, and an
		incorrectly extended register is detected, the emulator now
		exits instead of continues.
		Removing the LAST_USED_TLB_EXPERIMENT stuff.
		Minor updates to work better with Windows NT's ARCINST.EXE;
		printing 0x9b via arcbios becomes ESC + '[', and the ARC
		memory descriptor stuff has been generalized a bit more.
		Adding arbios hacks for Open(), Seek(), GetRelativeTime(),
		and Read() to allow WinNT's SETUPLDR to read the filesystem
		on the diskimage used for booting.
20041203	Adding a terminal emulation layer which converts arcbios
		stdout writes to "VGA text console" cell characters. Seems
		to work with Windows NT and arcdiag.
		Adding a 8x8 font to dev_vga.
		Adding more ARC components to the component tree (for PICA
		emulation).
20041204	Minor updates.
		More updates to dev_vga. Adding a 8x10 font.
		Adding a hack so that the framebuffer logo is visible at
		startup with dev_vga. (It disappears at the first scroll.)
		A minor fix for a bug which was triggered when running
		dual- or tripple-head, on 2 or 3 actual X11 displays.
20041205	Fixing a bintrans bug.
		Some other minor updates (some of them bintrans related).
20041206	Moving the web page to http://gavare.se.
		Adding a hack for mmap() which supports anonymous mapping
		using /dev/zero, but not using MAP_ANON{,YMOUS}.
		Separating out opcodes.h, cop0.h, and cpu_types.h from misc.h.
20041207	Minor bintrans update. (In some cases, it isn't necessary
		to return to the main loop, when translating from a new page.)
		Some other minor i386 bintrans backend optimizations.
		And some other minor updates.
		i386 backend update: the lowest 32 bits of the pc register
		are now placed in an i386 register.
20041208	Adding GetConfigurationData() and some support for config
		data, to src/arcbios.c.
		Adding a bogus 0xbd SCSI command (used by Windows NT). It is
		not listed in http://www.danbbs.dk/~dino/SCSI/SCSI2-D.html.
		If the framebuffer cursor contains more than 1 color, then
		the host's X11 cursor disappears. (Nice for DECstation
		emulation with emulated X.)
		For ARC and SGI emulation, if an exception occurs before an
		exception handler is installed, the emulator now exits
		nicely (as suggested by Alec Voropay).
		A couple of minor updates to the ARCBIOS emulation subsystem.
		The single step debugger is now automatically entered when
		all CPUs have stopped running, unless there was a clean
		shutdown of some kind (PROM halt() call, or similar).
		Adding a -V option for starting up in a paused state, into
		the single-step debugger.
		Adding a note about 'mmon' to the documentation
		(http://www.brouhaha.com/~eric/software/mmon/).
20041209	Fixes to devices/console.c which makes cursor keys and such
		a bit more reliable.
		ARCBIOS hack/update which creates memory descriptors _after_
		loading the executable. (Seems to work with OpenBSD/arc,
		NetBSD/arc, arcdiag, IRIX, NetBSD/sgimips, OpenBSD/sgi, and
		some Windows NT executables.)
		ARCBIOS support for cursor keys (ESC + '[' ==> 0x9b).
		A bintrans update (for 32-bit emulation) which speeds up
		jumps between pages, if code is already translated.
		Changing the default bintrans cache from 20 to 24 MB.
20041210	Optimizing unaligned load/stores a little bit in src/cpu.c.
		Omiting the check for nr of executed bintrans instructions
		on some forward jumps.
		Adding the 'syscall' and 'break' instructions to the
		bintrans backends.
		Allowing more bits of the status register to be written to
		from within inside translated code, on R3000.
		Getting rid of the final pixel when hiding the host's mouse
		cursor.
		store_buf() now copies data 8 or 4 bytes at a time, when
		possible. (This speeds up emulated ROM disk reads, etc.)
		Tiny bug fix: coprocessor unusable exceptions are now also
		generated (for coproc 1..3) even when in kernel mode, if the
		coprocessors are not enabled. This allows a Debian installation
		to proceed further than before. (It's still very unstable,
		though.)
20041212	Updating doc/index.html with better Debian installation
		instructions.
		If SLOWSERIALINTERRUPTS is defined at compile time, interrupts
		from the dc7085 device will not come as often as they normally
		do. This makes Debian seem more stable.
		Decreasing the bintrans cache to 20 MB again.
		Updating some files in preparation for a 0.2.4 release.
20041213	Updating the docs on how to install NetBSD 2.0/pmax, and also
		some updates to the section on installing Debian.
		32-bit bintrans backend optimization: don't inline large
		chunks of code, such as general jumps.
20041214	Minor fix for coproc unusable for R4000 (it's the PC that,
		matters, not the KSU bits).
		Separating out the debugger from emul.c into debugger.c.
		Rewriting parts of the debugger.
		Removing the -U command line option, as it wasn't really
		useful. Also removing the -P option.
		Renaming all instances of dumppoint to breakpoint, as that
		is what it really is.
		When a breakpoint is reached, the single-step debugger is
		entered, instead of just turning on instruction trace.
		Adding a 'breakpoints' debugger command.
		Better fix for coproc unusable on R4000: the KSU bits matter,
		but the ERL and EXL bits override that.
		Fix which allows Debian to boot directly from a disk image
		(with DELO). (It reads multiple separate areas from disk.)
		Update to the SLOWSERIALINTERRUPTS stuff, making it even
		slower.
		Fixes based on feedback from Alec Voropay (-Q with ARC
		emulation skips the setup of arcbios data structures in
		memory, and no sign-extension _after_ writing a 32-bit
		value to a 64-bit coproc 0 register).
		Adding a 'devices' command to the debugger.
		The 'registers' and 'tlbdump' commands now take an optional
		argument (a cpu id).
		Adding rudimentary tab-completion and cursor key stuff to
		debugger_readline().
		Adding some more debugger commands: 'bintrans' and 'machine'.
20041215	Adding a 'devstate' command; implementing a skeleton for a
		state function for the bt459 device.
		Implementing yet another variant of the SLOWSERIALINTERRUPTS
		stuff.
		Implementing more of the different exception offsets (taking
		CAUSE_IV and STATUS_BEV into account).
		hpc_bootinfo should now be correctly filled on big-endian
		hosts.
		Always shift left by 12, not by pageshift, to get physical
		addresses on MMU4K etc. (Thanks to Alec Voropay for noticing
		this.)
20041216	The KN02's CSR can now be read from bintranslated code.
		Adding a dummy dev_sgi_mec.
20041217	The default framebuffer and model settings for -F (hpcmips)
		should now be almost like Cassiopeia E-500.
		Changing -DSLOWSERIALINTERRUPTS into a command line option, -U.
20041218	Continuing a little bit on the mec controller.
		Removing lots of #include <math.h> that weren't really used.
20041219	Fixing stuff that broke because of the pageshift bugfix.
		Adding an argument to the s (step) debugger command, for doing
		more than 1 step at a time.
		ARCBIOS components representing disk images are now created
		to actually match the disk images in use, and some other
		arcbios-related updates; adding a dummy GetComponent().
		Adding a 'lookup' command to the debugger, for symbol lookups.
		Adding a "NEC Express RISCserver" mode (NEC-R96, -A8).
		Adding a dummy ARCBIOS GetFileInformation(), GetTime(), and
		SetEnvironmentVariable().
20041220	Improved command line editing (including command history)
		in the debugger.
		Separating some more .h files from each other, and fixing
		some Solaris compiler warnings.
20041221	Minor updates.
20041222	Minor updates; hpcmips (BE300, VR41xx) stuff.
		The 'register' debugger command is now 'reg', and it can
		be used to modify registers, not just read them.
		The syntax for hpcmips (-F) is now -F xx, where xx is a
		machine model identifier. (1 = BE300.)
20041223	Some really minor updates.
20041226	Minor updates to doc/index.html (NetBSD 1.6.2 -> 2.0, and
		some other rearrangements).
		Many updates to the debugger (better register manipulation,
		breakpoint manipulation, and other updates).
		Fix to dev_cons.c to allow the regression tests to work again.
		The configure script now tries to detect the presence of a
		MIPS cross compiler. (Used by "make regtest".)
		Regression tests are now run both with and without bintrans.
20041227	Some hacks to the VR41xx code to allow Linux for BE300 to
		get far enough to show the penguin on the framebuffer.
20041228	Merging dev_kn01_csr.c and dev_vdac.c into dev_kn01.c.
20041229	Various updates to the debugger (nicer tlb output and other
		things).
		Some floating point fixes in src/coproc.c (mov is not
		an arithmetic instruction), and in src/cpu.c (ldcX/sdcX in
		32-bit mode uses register pairs).
		'-O' now also affects the bootstring for SGI and ARC emulation.
		Bintrans updates (slightly faster 32-bit load/store on alpha).
		Updates to the i386 backend too, but no real speed improvement.
20041230	Cleaning up parts of the 64-bit virtual-to-physical code for
		R10000, and per-machine default TLB entries can now be set
		for SGI and ARC machines.
		Fix: SGI-IP27 is ARC64, not ARCS.
20050101	Minor updates.
20050102	Minor updates.
		Fixing a 32-bit 'addu' bug in the bintrans backends.
		Allowing fast load/stores even in 64-bit bintrans mode, if
		the top 32 bits are either 0x00000000 or 0xffffffff (for Alpha
		only).
		Re-enabling ctc0/cfc0 (but what do they do?).
		Adding beql, bnel, blezl, and bgtzl to the Alpha backend.
20050103	Adding fast 32-bit load/store for 64-bit mode emulation to
		the i386 backend too (similar to the Alpha code). Not really
		tested yet, though.
		Adding an incomplete regression test case for lwl/lwr/ldl/ldr.
		Playing around with bintranslated lwl and lwr for Alpha.
20040104	Changing many occurances of pica to jazz.
		Various other updates.
20050105	Fixing some more bintrans bugs (both Alpha and i386).
		Unaligned stores that cause tlb refill exceptions should now
		cause TLBS exceptions, not TLBL.
		Adding experimental swl and swr to the Alpha backend.
		Adding lwl, lwr, swl, and swr to the i386 backend.
20050106	Adding another hpcmips model (Casio E-105, -F2), and doing
		some updates to the VR41xx code. NetBSD/hpcmips prints some
		boot messages.
20050108	Minor updates.
20050109	dev_dec5500_ioboard.c and dev_sgec.c => dev_kn220.c.
		dev_crime.c, _mace.c, and _macepci.c => dev_sgi_ip32.c.
		Also adding dev_sgi_mec, _ust, and _mte into dev_sgi_ip32.c.
		A slight license change. Still revised BSD-style, though.
		memory_v2p.c is now included separately for MMU10K and
		MMU8K.
		Fixing a NS16550 bug, triggered by NetBSD 2.0, but not 1.6.2.
		Refreshing the UltraSPARC bintrans backend skeleton.
		Merging dev_decbi, _deccca, and _decxmi into dev_dec5800.c.
		Sparc backend instructions done so far: mthi/mtlo/mfhi/mflo,
		lui, addu, daddu, subu, dsubu, and, or, nor, xor, sll, dsll,
		srl, and sra.
		Adding more sparc backend instructions: addiu, daddiu, xori,
		ori, andi, srlv, srav, sllv, slt, sltu, slti, sltiu.
20050110	Changing the default bintrans cache to 16 MB, and some other
		minor updates.
		Adding div and divu to the i386 backend (but not Alpha yet).
		More work on ARCBIOS emulation.
		Trying to find a bug which affects Linux on Playstation 2 in
		bintrans mode.
20050111	Moving around some Playstation 2 stuff, but I haven't found
		the bug yet. It is triggered by load/stores.
		More ARCBIOS updates, enough to let Windows NT partition
		disks in some rudimentary fashion.
20050112	Testing for release 0.2.4.
		Fixes to suppress compiler warnings.

==============  RELEASE 0.2.4  ==============

20050113	Minor updates.
20050114	Fix to the Alpha bintrans backend to allow compilation with
		old versions of gcc (2.95.4).

==============  RELEASE 0.2.4.1  ==============

20050115	Various updates and fixes: some IP32 stuff, the debugger,
		ns16550 loopback tx isn't transmitted out anymore, ...
		Removing old/broken R10000 cache hacks, which weren't really
		used.
20050116	Minor updates to the documentation on using PROM images.
		Adding ARCBIOS function 0x100 (used by IRIX when returning
		from main, but undocumented).
		MC146818 updates (mostly SGI-related).
		ARCS64 updates (testing with an OpenBSD snapshot in IP27
		mode). This causes Linux/IP30 to not work. Maybe IP27 and
		IP30 differ, even though both are 64-bit?
		Removing some nonsensical ARCS64 code from machine.c.
		Better handling of 128MB and 512MB memory offsets used by
		various SGI models.
		Trying to revert the ARCS64 changes (OpenBSD/sgi does
		seem to be aware of 64-bit vs 32-bit data structures in
		_some_ places, but not all), to make Linux/IP30 work again.
		Adding "power off" capability to the RTC, as used on IP32
		(and possibly IP30 and others).
		Some IP30 updates.
20050117	Debugger updates (symbolic register names instead of just rX,
		and using %08x instead of %016llx when emulating 32-bit CPUs
		in more places than before).
		Removing the dummy sgi_nasid and sgi_cpuinfo devices.
		Also using symbolic names for coprocessor 0 registers.
		Adding DEV_MP_MEMORY to dev_mp.c.
		Adding a 'put' command to the debugger.
		ARCBIOS function 0x100 used by IRIX seems to _NOT_ be a
		ReturnFromMain(), but something else undocumented.
		The count and compare registers are now 32-bit in all
		places, as they should be. (This causes, among other things,
		OpenBSD/sgi to not hang randomly in userspace anymore.)
		On breakpoints, the debugger is now entered _at_ the
		instruction at the breakpoint, not after it.
		Some cursor keys now work when inputed via X.
		Refreshing the MC146818 device a bit more.
20050118	Trying to add some support for less-than-4KB virtual pages,
		used by at least VR4131. Thanks to Alexander Yurchenko for
		noticing this. (I'm assuming for now that all R41xx work
		this way, which is not necessarily true.) It doesn't really
		work yet though.
		Renicing the "loading files" messages and other things
		displayed during startup.
		Changing the disassembly output of ori, xori, and andi to
		unsigned hex immediate, instead of decimal (as suggested
		by Alec Voropay).
		configure-script update for HP-UX, and switching from using
		inet_aton() to inet_pton() (as suggested by Nils Weller).
		Also adding -lnsl on Solaris, if required by inet_pton().
		Lots of minor R4100-related updates.
20050119	Correcting the R4100 config register in src/coproc.c, and
		a minor update to dev_vr41xx.
		Finally began a redesign/remodelling/cleanup that I have had
		in mind for quite some time... moving many things that were
		in struct emul into a new struct machine.
		Userland emulation now works with bintrans.
		Refreshing the LANCE controller (dev_le.c).
		Fixing the LK201 keyboard id.
20050120	Continuing on the remodelling/cleanup.
		Fixing the SCSI bug (which was triggered sometimes by
		NetBSD 2.0/pmax on Linux/i386 hosts).
		Adding a speed-limit hack to the mc146818 device when running
		in DECstation mode (limiting to emulated 30 MHz clock, so
		that Ultrix doesn't freak out).
		Adding an ugly workaround for the floating-point bug which
		is triggered when running NetBSD/pmax 2.0 on an Alpha host.
		The count/compare interrupt will not be triggered now, if
		the compare register is left untouched.
		Many, many other fixes...
20050121	Continuing the remodelling/cleanup. (Mostly working on the
		network stack, and on moving towards multiple emulations
		with multiple machines per emulation.)
		Fixbug: not clearing lowest parts of lo0 and hi on tlbr
		(seems to increase performance when emulating Linux?).
20050122	Continuing the remodelling/cleanup.
		Linux on DECstation uses a non-used part of the RTC registers
		for the year value; this is supported now, so Linux thinks
		it is 2005 and not 2000.
		Began hacking on something to reply to Debian's DHCP requests,
		but it's not working yet.
20050123	Continuing the remodelling/cleanup.
20050124	Continuing the remodelling/cleanup.
		Converting the dev_vga charcell memory to support direct
		bintrans access (similar to how dev_fb works), and fixing a
		couple of bintrans bugs in the process.
		The emulator now compiles under OpenBSD/arc 2.3 without
		crashing (mostly due to the bintrans fixes, but also some
		minor updates to the configure script).
20050125	Continuing the remodelling/cleanup.
		The '-a' option was missing in the Hello World example in the
		documentation. (Thanks to Soohyun Cho for noticing this.)
20050126	Continuing the remodelling/cleanup. Moving around stuff in
		the header files, etc. Adding a '-K' command line option, which
		forces the debugger to be entered at the exit of a simulation,
		regardless of failure or success. Beginning to work on the
		config file parser.
		Splitting doc/index.html into experiments.html, guestoses.html,
		intro.html, and misc.html.
		Updating the man page and adding a skeleton section about the
		configure files to doc/misc.html.
20050127	Minor documentation updates.
20050128	Continuing the remodelling/cleanup, mostly working on the
		config file parser (adding a couple of machine words, enough
		to run simple emulations, and adding support for multi-line
		comments using tuborgs).
		Removing some command line options for the least working
		emulation modes (-e, -f, -g, -E, -H), adding new -E and -e
		options for selecting machine type.
		Moving global variables from src/x11.c into struct machine (a
		bit buggy, but it seems to almost work).
20050129	Removing the Playstation 2 mode (-B) and hpcmips modes (-F)
		from the command line as well.
		Changing the -T command line option from meaning "trace on bad
		address" to meaning "enter the single-step debugger on bad
		address".
		More updates to the configuration file parser (nested tuborg
		comments, more options, ...).
		Making -s a global setting, not just affecting one machine.
		Trying to fix the X11 event stuff... but it's so ugly that it
		must be rewritten later.
		Continuing the multi-emul cleanup.
		Bugfixes and other updates to dev_vga.
20050130	Continuing the remodelling/cleanup. Finally moving out the
		MIPS dependant stuff of the cpu struct into its own struct.
		Renaming cpu.c to cpu_mips.c, and cpu_common.c to cpu.c.
		Adding a dummy cpu_ppc.c.
		Removing the UltraSPARC bintrans backend.
		Many other minor updates.
		src/file.c should now be free from MIPS-dependancies.
20050131	Continuing a little bit more on src/file.c. PPC ELFs can now
		be loaded, it seems.
		Continuing on src/cpu_ppc.c.
		'mips' is undefined by the configure script, if it is defined
		by default. (Fixes build on at least OpenBSD/arc and
		NetBSD/arc, where gcc defines 'mips'.)
		A couple of other minor fixes.
		Removing the "Changing framebuffer resolution" section from
		doc/misc.h (because it's buggy and not very useful anway).
		Adding a mystrtoull(), used on systems where there is no
		strtoull() in libc.
		Adding 'add_x11_display' to the configure file parser 
		(corresponding to the -z command line option).
		Continuing the multi-emul machine cleanup.
20050201	Minor updates (man page, RELEASE, README).
		Continuing the cleanup.
		Adding a 'name' field to the emul struct, and adding a command
		to the debugger ("focus") to make it possible to switch focus
		to different machines (in different emuls).
		Beginning to work on the PPC disassembler etc. Hello World
		for linux-ppc64 can be disassembled :-)
20050202	Adding a hack for reading symbols from Microsoft's variant of
		COFF files.
		Adding a dummy cpu_sparc.c and include/cpu_sparc.h.
		Cleaning up more to support multiple cpu families.
		Various other minor updates.
		Fixing another old-gcc-on-Alpha problem.
20050203	Bintrans cache size is now variable, settable by a new
		configuration file option 'bintrans_size'.
		The debugger can now theoretically call disassembler functions
		for cpu families with non-fixed instruction word length.
		Working more on the mec controller. It now works well enough
		to let both NetBSD/sgimips and OpenBSD/sgi connect to the
		outside world using ftp :-)
		Continuing on the cleanup of the networking subsystem.
20050204	Continuing the cleanup.
		Working on a way to use separate xterms for serial ports and
		other console input, when emulating multiple machines (or one
		machine with multiple serial lines active).
20050205	Minor documentation updates.
20050206	Moving console.c from devices/ to src/, and continuing the
		work on using separate windows for each serial console.
		Trying to get OpenBSD/sgi to boot with root-on-nfs on an
		emulated NetBSD/pmax server, but no success in setting up
		the server yet.
20050207	Continuing on the console cleanup.
		Adding a 'start_paused' configuration file option, and a
		'pause' command to the debugger.
20050208	Everything now builds with --withoutmips.
		Continuing on the documentation on how to run OpenBSD/sgi, but
		no actual success yet.
		sizeof => (int)sizeof in the configure script (as suggested by
		Nils Weller).
20050209	Adding a check for -lm to the configure script.
		Continuing on the cleanup: trying to make memory_rw non-MIPS
		dependant.
		Trying to make a better fix for the cdrom-block-size problems
		on FreeBSD. (It now works with a Windows NT 4.0 cdrom in my
		drive.)
		Began a clean-up of the userland subsystem.
20050210	Continuing the userland cleanup.
		IBM's Hello World example for Linux/PPC64 runs fine now.
20050211	Continuing the cleanup. Removing the --userland configure
		option (because support for userland is always included now).
		Working more on getting OpenBSD/sgi to boot with root on
		nfs. (Booting with the ramdisk kernel, and mounting root via
		nfs works, but not yet from the generic kernel.)
		Major update to the manpage.
		Removing the -G command line option (SGI modes).
20050212	Updating the documentation (experimental devices: dev_cons
		and dev_mp, better hello.c, and some other things).
20050213	Some minor fixes: documentation, 80 columns in some source
		files, better configure script options.
		Adding some more PPC instructions.
		Added a NOFPU flag to the MIPS cpu flags, so that executing
		FPU instructions on for example VR4xxx will fail (as suggested
		by Alexander Yurchenko).
20050214	Implementing more PPC instructions.
		Adding dev_pmppc.
20050215	Continuing the work on PPC emulation. Adding a (mostly non-
		working) NetBSD/powerpc userland mode, a (buggy)
		show_trace_tree thing (simliar to the MIPS version).
20050216	Continuing...
20050218	Continuing the clean-up. (Merging the devices and devstate
		debugger commands, more 80-column cleanup, some documentation
		updates, ...).
20050219	Removing the -D, -A, and -a command line options. Updating the
		documentation, in preparation for the next release.
		Adding interrupt stuff to dev_cons.
		Single-stepping now looks/works better with bintrans enabled.
		Beginning the first phase of release testing; various minor
		updates to make everything build cleanly on Solaris.
20050220	Continuing testing for the release...
                
==============  RELEASE 0.3  ==============

20050221	Minor updates. Some more clean-up.
		Beginning on the new device registry stuff.
20050222	Continuing on the device stuff, and doing various other kinds
		of clean-up.
		Adding a dummy BeBox mode.
		Making the pc register common for all cpu families.
		Adding some more PPC instructions and fixing some bugs.
20050223	Continuing on the BeBox stuff, and adding more instructions.
		Adding an ns16550 to the VR4131 emulation (which is probably
		a close enough fake to the VR4131's SIU unit).
20050224	Minor updates. Adding dummy PReP, macppc, and DB64360 modes.
		Continuing on the device registry rewrite.
20050225	Continuing on the device stuff.
20050226	Continuing more on the device rewrite.
		Separating the "testmips" machine into testmips and baremips
		(and similarly with the ppc machine).
		Redesigning the device registry again :-)
		Adding a "device" command to the config file parser.
		Adding "device add" and "device remove" to the debugger.
		Removing pcidevs.h, because it was almost unused.
20050228	Correcting the Sprite disk image url in the documentation.
20050301	Adding an URISC cpu emulation mode (single-opcode machine).
20050303	Adding some files to the experiments directory (rssb_as.c,
		rssb_as.README, urisc_test.s).
		Continuing on the device stuff.
20050304	Minor documentation update. Also, the SPARC, PPC, and URISC
		modes are now enabled by default in the configure script.
		Some minor PPC updates (adding a VGA device to the bebox
		emulation mode).
20050305	Moving the static i386 bintrans runchunk code snippet (and the
		others) to be dynamically generated. (This allows the code to
		compile on i386 with old gcc.)
		Loading PPC64 ELFs now sets R2 to the TOC base.
		Changing the name of the emulator from mips64emul to GXemul.
		Splitting out the configuration file part of the documentation
		into its own file (configfiles.html).
20050306	Some really minor documentation updates.
		Adding a -D command line option (for "fully deterministic"
		behaviour).
20050308	Minor PPC updates. Adding a dummy OpenFirmware emulation layer.
20050309	Adding a hack for systems without inet_pton (such as Cygwin in
		Windows) as suggested by Soohyun Cho. (And updating the
		configure script too.)
		Adding a dummy HPPA cpu family.
		Some more OpenFirmware updates.
		Faster loading of badly aligned ELF regions.
20050311	Minor updates. Adding a dummy "NEC MobilePro 780" hpcmips
		machine mode; disabling direct bintrans access to framebuffers
		that are not 4K page aligned.
20050312	Adding an ugly KIU hack to the VR41xx device (which enables
		NetBSD/hpcmips MobilePro 780 keyboard input).
20050313	Adding a dummy "pcic" device (a pcmcia card controller).
		Adding a dummy Alpha cpu emulation mode.
		Fixing a strcmp length bug (thanks to Alexander Yurchenko for
		noticing the bug).
20050314	Some minor bintrans-related updates in preparation for a new
		bintrans subsystem: command line option -b now means "old
		bintrans", -B means "disable bintrans", and using no option at
		all selects "new bintrans".
		Better generation of MAC addresses when emulating multiple
		machines and/or NICs.
		Minor documentation updates (regarding configuration files).
20050315	Adding dummy standby, suspend, and hibernate MIPS opcodes.
		RTC interrupt hack for VR4121 (hpcmips).
		Enough of the pcic is now emulated to let NetBSD/hpcmips detect
		a PCMCIA harddisk controller card (but there is no support for
		ISA/PCMCIA interrupts yet).
		Adding preliminary instructions on how to install
		NetBSD/hpcmips.
		Continuing the attempt to get harddisks working with interrupts
		(pcic, wdc on hpcmips).
20050318	Minor updates. (Fixing disassembly of MIPS bgtz etc., 
		continuing on the device cleanup, ...)
20050319	Minor updates.
20050320	Minor updates.
20050322	Various minor updates.
20050323	Some more minor updates.
20050328	VR41xx-related updates (keyboard stuff: the space key and
		shifted and ctrled keys are now working in userland (ie
		NetBSD/hpcmips' ramdisk installer).
		Also adding simple cursor key support to the VR41xx kiu.
20050329	Some progress on the wdc.
		Updating the documentation of how to (possibly) install
		NetBSD/hpcmips, once it is working.
		Adding delays before wdc interrupts; this allows NetBSD
		2.0/hpcmips to be successfully installed!
		Mirroring physical addresses 0x8....... to 0x00000000 on
		hpcmips; this makes it possible to run X11 inside
		NetBSD/hpcmips :-)
		Updating the documentation regarding NetBSD/hpcmips.
		Fixing 16-bit vs 15-bit color in dev_fb.
20050330	Print a warning when the user attempts to load a gzipped
		file. (Thanks to Juan RP for making me aware of this "bug".)
20050331	Importing aic7xxx_reg.h from NetBSD.
		Adding a "-x" command line option, which forces xterms for
		each emulated serial port to always be opened.
		Adding a MobilePro 770 mode (same as 780, but different
		framebuffer address which allows bintrans = fast scrolling),
		and a MobilePro 800 (with 800x600 pixels framebuffer :-).
20050401	Minor updates.
20050402	Minor updates. (The standby and suspend instructions are
		bintransed as NOPs, and some minor documentation updates.)
20050403	Adding an Agenda VR3 mode, and playing around with a Linux
		kernel image, but not much success yet.
		Changing BIFB_D16_FFFF -> BIFB_D16_0000 for the hpcmips 
		framebuffers, causing NetBSD to boot with correct colors.
		New syntax for loading raw files: loadaddr:skiplen:
		initialpc:filename. (This is necessary to boot the Linux VR3
		kernels.)
		The Linux VR3 kernel boots in both serial console mode and
		using the framebuffer, but it panics relatively early.
20050404	Continuing on the AHC, and some other minor updates.
20050405	Adding a note in doc/experimental.html about "root1.2.6.cramfs"
		(thanks to Alec Voropay for noticing that it wasn't part
		of root1.2.6.kernel-8.00).
		Also adding a note about another cramfs image.
		-o options are now added to the command line passed to the
		Linux kernel, when emulating the VR3.
		Adding a MobilePro 880 mode, and a dummy IBM WorkPad Z50 mode.
20050406	Connecting the VR3 serial controller to irq 9 (Linux calls this
		irq 17), and some other interrupt-related cleanups.
		Reducing the memory overhead per bintranslated page. (Hopefully
		this makes things faster, or at least not slower...)
20050407	Some more cleanup regarding command line argument passing for
		the hpcmips modes.
		Playing with Linux kernels for MobilePro 770 and 800; they get
		as far as mounting a root filesystem, but then crash.
		Doing some testing for the next release.

==============  RELEASE 0.3.1  ==============


1 dpavlin 2 $Id: HISTORY,v 1.676 2005/04/07 15:14:55 debug Exp $
2    
3     Changelog for GXemul:
4     ---------------------
5    
6     20030829 Skeleton. ELF stuff. Some instructions.
7     20030830 Simple test programs using +-*/^|&%, function calls,
8     loops, and stuff like that work.
9     20030903 Adding more instructions, fixing some bugs.
10     20030907 Making adding of memory mapped devices easier, although
11     the framework isn't built for speed.
12     Adding a -q switch to turn of debug output.
13     20030911 Trying to fix some bugs. Minor changes. Some COP0
14     registers are now meaningful.
15     20030919 Making APs (non-bootstrap cpus) available via a simple
16     'mp' device. Implementing ll/lld and sc/scd (for atomic
17     memory updates, needed by MP operating systems).
18     20030923 Minor updates: more instructions (divu, mulu, lwu,
19     perhaps some more), and opcode usage statistics.
20     20030924 If the next instruction is nullified (for 'branch
21     likely' type of instructions), counters for delays etc
22     are now decreased as they should.
23     Adding some comments.
24     Adding instructions: movz, movn.
25     Adding a simple mandelbrot test to mipstest.c.
26     20030925 Adding instructions: bltzl, bgezl, lh, lhu, sh, mfc*,
27     mtc*.
28     Adding a dummy instructions: sync, cache.
29     Adding minimal DECstation PROM functionality: printf()
30     and getsysid() callback functions.
31     Beginning work on address translation.
32     20030927 Adding some more cop0 functionality (tlb stuff).
33     Adding mc146818 real-time clock. (Skeleton stuff.)
34     20030928 Adding a dc7085 serial console device (dummy, but enough
35     to output chars to the screen). NetBSD uses this for
36     the MIPSMATE 5100.
37     20030929 Working on the TLB stuff.
38     Adding instructions: srlv, tlbwr, tlbr, tlbp, eret.
39     20030930 Trying to find a bug which causes NetBSD to bug out, but
40     it is really hard.
41     Adding some a.out support (for loading an old
42     OpenBSD 2.8/pmax kernel image).
43     Adding instructions: lwc*, ldc*, swc1 and swc3.
44     Beginning to add special code to handle the differences
45     between R4000 (the default emulation) and R2000/R3000.
46     20031001 Symbol listings produced by 'nm -S' can be used to
47     show symbolic names for addresses. (-S)
48     20031002 Fixing the i/d fake cache for R2000/R3000. It's still
49     just an ugly hack, though.
50     Fixing minor bugs to make the 3100 emulation use the
51     dc device (serial console) correctly. So far, 5100 and
52     3100 are the only ones that get far enough to print
53     stuff, when booting NetBSD.
54     20031004 Adding skeleton Cobalt machine emulation (-E).
55     Adding a dummy ns16550 serial controller, used by the
56     Cobalt machine emulation.
57     20031006 Adding unaligned load/store instructions (lwl, lwr,
58     ldl, ldr, swl, swr, sdl, sdr), although they are not
59     tested yet.
60     Fixed a "data modified on freelist" bug when running
61     NetBSD/cobalt: setting the top bit of the index register
62     when a tlbp fails (as the R4000 manual says) isn't
63     sufficient, I had to clear the low bits as well.
64     Adding break and syscall instructions, but they are not
65     tested yet.
66     Adding a 'gt' device, faking a PCI bus, for the Cobalt
67     emulation.
68     20031008 Adding initial support for HPCmips (-F), a framebuffer
69     device using X11. NetBSD/hpcmips can output pixels to
70     the framebuffer, but that's about it.
71     20031009 Fixing the NetBSD/pmax bug: the "0/tftp/netbsd" style
72     bootstring was only passed correctly in the bootinfo
73     block, it needs to be passed as argv[0] as well.
74     Adding instructions: mtlo, mthi.
75     Rearrangning the source tree layout.
76     Adding console input functionality. The NetBSD/cobalt
77     kernel's ddb can now be interacted with.
78     20031010 Adding experimental (semi-useless) -t option, to show
79     a function call tree while a program runs.
80     Linux/cobalt now prints a few messages, but then hangs
81     at "Calibrating delay loop..." unless an ugly hack is
82     used (setting a word of memory at 0x801e472c to non-zero).
83     20031013 Adding a framebuffer device used in DECstation 3100;
84     VFB01 for mono is implemented so far, not yet the
85     VFB02 (color) variant. Rewriting the framebuffer
86     device so that it is usable by both HPCmips and DECstation
87     emulation.
88     20031014 Minor fixes. Everything should compile and run ok
89     both with and without X11.
90     20031015 Adding support for ECOFF binary images; text, data,
91     and symbols are loaded. (Playing around with ultrixboot
92     and ultrix kernels.)
93     20031016 The DECstation argv,argc stuff must be at 0xa0000000,
94     not 0x80000000, or Ultrix kernels complain.
95     Adding R2000/R3000 'rfe' instruction.
96     Implementing more R2K/R3K tlb specific stuff, so that
97     NetBSD boots and uses the tlb correctly, but much of
98     it is ugly. (Needs to be separated in a cleaner way.)
99     ECOFF symbols sizes are now calculated, so that offsets
100     within symbols are usable.
101     20031017 DECstation bootstrings now automatically include the
102     correct name of the kernel that is booting.
103     Ultrix boots a bit.
104     20031018 ELF symbols are now read automatically from the binary.
105     -t trace looks a bit better (string arguments are shown).
106     Trying to get initial R5900 stuff working (the 128-bit
107     CPU used in Playstation 2).
108     Fixing a minor bug to make the VFB02 (color framebuffer)
109     device work better, but it is still just 256 grayscales,
110     not real color. Ultrix can now use the framebuffer (it
111     calls it PMAX-CFB).
112     A machine can now consist of CPUs of different types.
113     Adding instructions: daddi, mov_xxx, mult_xx. The xxx
114     instructions are not documented MIPS64 instructions,
115     but NetBSD/playstation2 uses them. Perhaps VR5432
116     instructions?
117     Adding sign-extension to 32-bit mult.
118     Adding Playstation 2 devices: dmac (DMA controller),
119     gs (Graphic something?), and gif (graphics something
120     else, which has access to the PS2's framebuffer).
121     NetBSD/playstation2 works a bit, and prints a few
122     bootup messages.
123     20031020 The cpu_type field of the cpu struct now contains
124     usable values in a much better form than before. This
125     simplifies adding of new CPU types.
126     20031021 Fixing an interrupt related bug: pc_last was used, but
127     for interrupts this was incorrect. Fixed now.
128     Fixing a load/store related bug: if a load into a
129     register was aborted due to an exception, the register
130     was still modified.
131     The mc146818 rtc now reads its time from the system's
132     time() function.
133     Fixing another exception bug: if loading an instruction
134     caused an exception, something bogus happened as the
135     emulator tried to execute the instruction anyway. This
136     has been fixed now.
137     20031023 Adding a quick hack which skips "while (reg --) ;"
138     kind of loops.
139     NetBSD/pmax suddenly reached userland (!), but only
140     once and attempts to repeat it have failed. I believe
141     it is problems with my interrupt handling system.
142     20031024 Adding 8-bit color palette support to the framebuffer.
143     Connecting the pmax vdac device to the framebuffer's
144     rgb palette.
145     Fixing a bug in the dc device, so that console input
146     is possible; interaction with NetBSD/pmax's built-in
147     kernel debugger works now.
148     Symbol sizes for file formats where symbol size isn't
149     included are now calculated regardless of file format.
150     Physical memory space can now be smaller than 64 bits,
151     improving emulation speed a bit.
152     Doing other minor performance enhancements by moving
153     around some statements in critical parts of the code.
154     20031025 Minor changes to the dc device.
155     20031026 Adding support for reading symbols directly from
156     a.out files. (Works with OpenBSD/pmax binaries.)
157     Hardware devices may now register "tick functions" at
158     specific cycle intervals in a generic fashion.
159     All four channels of the dc serial controller device
160     should now work; playing around with keyboard scan
161     code generation when using the DECstation framebuffer.
162     Making various (speed) improvements to the framebuffer
163     device.
164     20031027 Playing around with the sii SCSI controller.
165     20031028 Minor fixes.
166     Adding an SGI emulation mode (-G), and some ARCBIOS
167     stuff, which SGIs seem to use.
168     Adding getbitmap() to the DEC prom emulation layer,
169     so some more -D x models become more usable.
170     Adding a dummy 'ssc' serial console device for
171     DECsystem 5400 emulation.
172     Playing around with TURBOchannel stuff.
173     20031030 Minor fixes.
174     Adding the sub instruction. (Not tested yet?)
175     Sign-extending the results of multu, addi,addiu,
176     add,addu,sub,subu,mfcZ.
177     Adding a colorplanemask device for DECstation 3100.
178     Fixed the NetBSD/pmax bug: I had forgotten to reset
179     asid_match to 0 between tlb entry checks. :-) Now
180     userland runs nicely...
181     20031031 Fixing more bugs: unaligned load/store could fail
182     because of an exception, but registers could be "half
183     updated". This has been fixed now. (As a result,
184     NetBSD/pmax can now run with any of r2000,r3000,r4000,
185     r4400, or r5000.)
186     Adding some R5K and R10000 stuff. (Note: R5K is NOT
187     R5000. Weird.)
188     Adding dummy serial console (scc) for MAXINE.
189     MAXINE also works with framebuffer, but there is no
190     color palette yet (only black and white output).
191     20031101 Moving code chunks around to increase performance by
192     a few percent.
193     The opcode statistics option (-s) now shows opcode
194     names, and not just numbers. :-)
195     Fixing the bug which caused NetBSD/pmax to refuse
196     input in serial console mode, but not in keyboard/
197     framebuffer mode: the osconsole environment variable
198     wasn't set correctly.
199     Adding DEC PROM getchar() call.
200     The transmitter scanner of the dc device now scans
201     all four channels at once, for each tick, so serial
202     output is (approximately) 4 times faster.
203     20031103 Adding a dummy BT459 vdac device, which does nothing
204     but allows a PMAG-BA turbochannel graphics card to be
205     used as framebuffer.
206     Several DECstation machines (-D 2, 3, and 4) can now
207     use TURBOchannel option card framebuffers as console,
208     for output. (Keyboard input is still not implemented
209     for those models.) Only PMAG-AA (1280x1024x8) and
210     PMAG-BA (1024x864x8), both using BT459 vdac, have
211     been tested so far.
212     Modifying the X11 routines so that several framebuffer
213     windows now can be used simultaneously (if several
214     graphics option cards are to be emulated concurrently).
215     20031104 DEC MIPSMATE 5100 (KN230) interrupts are shared
216     between devices. I've added an ugly hack to allow
217     that to work, which makes it possible to boot NetBSD
218     into userland with serial console.
219     20031106 Removing the -S (symbol) option, as symbol files can
220     now be given in any order together with other file
221     names to be loaded.
222     cookin tipped me about using (int64_t) (int32_t)
223     casts instead of manually sign-extending values.
224     Casting sometimes increases performance, sometimes
225     decreases. It's tricky.
226     Importing mips64emul into CVS.
227     20031107 Adding a generic ARC emulation mode.
228     Increasing performance of the framebuffer by not
229     updating it (or the XImage) if a write to the
230     framebuffer contains exactly what is already in it.
231     (This improves scrolling speed and initialization.)
232     Adding initial MIPS16 support.
233     Adding initial disk image support (-d command line
234     option), but this will not be used until I get some
235     kind of SCSI-controller emulation working.
236     20031108 Adding the first MIPS16 instructions: "move y,X",
237     "ld y,D(x)", and "daddiu S,K" (but the last one
238     doesn't work yet).
239     Fixing the console environment variable for
240     Enough of the 'asc' controller is now implemented
241     to let NetBSD get past scsi disk detection when
242     no disk images are used.
243     DECstation machine type 2; both serial console and
244     graphical console work now.
245     Other X-windows bit-depths than 24 bits work now,
246     but colors are still not correct in non-24 bit modes.
247     Keypresses in X framebuffer windows are now
248     translated into console keypresses. (Normal keys, but
249     not cursor keys or other special keys.)
250     20031111 Adding support for X11 using non-24-bit output.
251     20031120 Adding X11 mouse event to emulated mouse event
252     translation, but it's not tested yet.
253     Trying to get more of the SCSI controller emulation
254     to work.
255     20031124 Raw binaries can now be loaded into memory.
256     20031204 Adding srec binary support.
257     20031220 Adding some super-ugly arcbios emulation code.
258     Making some progress on the SGI and ARC machine
259     emulations.
260     20031222 SGI and ARC progress. Multiple CPUs are now added to
261     the arcbios component tree (although NetBSD cannot
262     actually use more than one).
263     20031228 Adding 'crime' and 'macepci' fake devices for SGI
264     emulation.
265     Finally implementing the cop0 'compare' register.
266     Improvements to the ns16550 device, but it is still
267     incomplete.
268     SGI userland is now reached, but interaction is broken
269     (due to the buggy ns16550).
270     20031229 Adding some more instructions: teq, dsllv
271     Adding a Nintendo 64 emulation mode (skeleton).
272     Adding R4300 and R12000 to the cpu list.
273     20031230 Adding bltzal, bltzall, bgezal, bgezall (not really
274     tested yet).
275     Fixing the 16550 serial controller device (by not
276     supporting fifo, so in fact it emulates a 16450
277     instead). This causes NetBSD/sgimips to run nicely
278     into userland, sysinst, and so on.
279     Some ARC/RD94 interrupts seem to work ok now, but
280     i/o interrupts are still not correctly implemented.
281     NetBSD/arc userland is reached and can be interacted
282     with, but there's no sysinst (?).
283     20040103 Trying to get some Irix stuff to work, but it's hard.
284     Fixing some Cobalt/linux problems.
285     20040104 Adding a dummy 8250 device, so that Linux/sgimips can output
286     console messages.
287     Adding dmultu. (The same as dmult, so I'm not sure it's correct.
288     Perhaps dmultu is correct and dmult is wrong...)
289     Fixing a bug in unaligned load/stores of 64-bit values (a cast
290     was needed).
291     Linux/sgimips in 64-bit works a bit more than before.
292     Adding simple (polled) input functionality to dev_zs.
293     Making some progress on SGI-IP22 (IP32 still works best,
294     though).
295     Fixing the mc146818 clock device in ARC/NEC and SGI emulation
296     modes, the year field was not correct.
297     Adding a fake 'pref' instruction (lwc3).
298     20040106 Separating out memory.h from misc.h.
299     Refactoring of a lot of small code fragments.
300     The PCI bus device is now shared between Cobalt, SGI, and ARC.
301     Support for RAM mirroring (dev_ram.c, not really tested yet).
302     Ugly hack to select the largest of ELF string symbol tables,
303     if there are more than one.
304     Memory hole fix for ARCBIOS, and a fix for very large (>= 4GB)
305     amounts of emulated RAM.
306     TGA (DEC 21030) PCI graphics device. NetBSD/arc can boot with
307     this card and use it as a framebuffer console.
308     20040107 Adding a fix (partly incorrect) to daddi, to allow Linux/sgimips
309     to boot in 64-bit mode.
310     20040108 Fixing a sll/nop bug (rd==0 for nop, not sa==0 as before).
311     20040109 Trying to get an SGI-IP32 PROM image to boot.
312     20040110 Faking R10000 cache things.
313     The PROM image boots, although it takes almost forever for it
314     to realize that there is no keyboard.
315     The 'gbe' SGI-IP32 graphics device works enough to display the
316     Linux framebuffer penguin in the upper left corner :-)
317     20040111 -p and -P addresses can now be given as symbol names, not just
318     numeric values.
319     Experimenting with adding a PCIIDE (dev_wdc) controller to the
320     Cobalt emulation.
321     20040120 Adding src/bintrans.c. No code yet, but this is a place for
322     ideas to be written down.
323     Increasing performance a little bit by inlining the check for
324     interrupts (which occurs for every instruction).
325     20040124 Experimenting with pure userland (syscall) emulation.
326     20040127 Fixes for compiling under Solaris.
327     20040206 Some bintrans experiments.
328     20040209 Adding some simple Ultrix userland emulation syscalls.
329     20040211 Adding decprom_dump_txt_to_bin.c to the experiments/ dir.
330     Adding a section to doc/ on how to use DECstation PROM dumps.
331     Adding a hello world example to doc/ as well.
332     20040218 TURBOchannel slots that are empty now return a DBE exception,
333     so that Ultrix and DECstation PROMs don't complain about
334     broken TURBOchannel ROMs.
335     Working some more on the machine-dependant interrupt stuff.
336     20040219 Trying out some Linux/DECstation kernels (semi-successfully).
337     20040222 YES! I finally found the bug that caused Linux/SGI-IP32 to only
338     work on Alpha, not on 32-bit machines. It was a shift left,
339     probably done using 6 bits on alpha, 5 bits on 32-bit machines.
340     20040223 Some minimal DEC KN5800 progress; Ultrix prints some boot
341     messages, detects 16 XMI R3000 cpus, and get a NULL panic.
342     It's all fake, though, the CPUs don't actually work.
343     Still, better than nothing :-)
344     20040225 An Ultrix OSF1 kernel with a ramdisk now boots :-) (It was
345     a problem with ultrixboot not giving the same arguments as
346     NetBSD's boot program.)
347     20040225(later) Fixing a bug in the DECstation dc serial device; digits 0-9
348     were translated to numeric keypad 0-9, not the normal 0-9.
349     (This caused Ultrix to print escape sequences instead of
350     digits.)
351     20040226 Some progress on machine-dependant interrupt delivery
352     for -D7 (Maxine) and -D4, and some more 'scc' serial
353     controller featuers are implemented (but no interrupts/
354     dma/keyboard/mouse stuff yet).
355     20040228 Progress on the scc controller; -D4 works in both serial
356     console mode and with keyboard (graphical console), but no
357     mouse yet.
358     20040301 SGI mace interrupts are now done using the new machine-
359     independant interrupt system.
360     20040303 Fixing an R5900 bug; the lowest 6 bits have special meaning
361     for coprocessor functions, not just 5 bits as on non-R5900
362     CPUs. (This fixes a bug which caused NetBSD to crash.)
363     20040304 Adding enough (fake) DMA capabilities to the ioasic device
364     to allow Ultrix to print boot messages in the -D3, -D4,
365     and -D7 modes, and also print graphical console messages
366     in -D4 and -D7 modes.
367     -D11 (DEC5500) polled getchar added (to the 'ssc' device).
368     Adding the 'madd' instruction (including R5900 weird stuff).
369     20040304(later) Playstation 2's GIF can now copy 640x16 pixel chunks, allowing
370     NetBSD to scroll up the framebuffer. The cursor also works
371     better now.
372     Playstation 2 bootinfo RTC data should now be passed correctly
373     to the running kernel.
374     DECstation rtc year should be either 72 or 73, anything else
375     will cause Ultrix to give a warning about invalid year.
376     20040306 Combining playstation2's dmac, interrupt, and timer devices
377     into one (ps2_stuff).
378     Adding some R5900 instructions: mfsa, mtsa, pmfhi, pmflo, por,
379     lq, and sq. (Most of them are just guesses, though.)
380     Implementing my own XImage putpixel routine, which can be
381     inlined... significantly faster than normal XPutPixel. :-)
382     20040307 Implementing the basic functionality of a "PMAG-CA" pixelstamp
383     accellerated framebuffer device. Works with NetBSD and
384     Ultrix, but no cursor or color support.
385     20040308 PMAG-CA, -DA, and -FA pixelstamps seem to work now.
386     Adding a hack to allow a pmax/mach kernel to be loaded (it's
387     a COFF file with 0 (!) sections).
388     Initial test of bt459 + framebuffer cursor support.
389     20040309 Fixes/updates of dev_dec5800 and dev_ssc (and dev_decxmi) allow
390     a KN5800 Ultrix-OSF1-ramdisk kernel to boot all the way into
391     userland and be interacted with.
392     The bt459 cursor should now look semi-nice, but it is still
393     a bit fake.
394     20040310 Moving the DEC CCA stuff from src/machine.c into a separate
395     device file (devices/dev_deccca.c).
396     An ugly hack added to allow some more OSF/1 kernels (almost
397     a.out, but without many of the header fields) to load.
398     20040314 Adding PMAG-JA and PMAG-RO (1280x1024 x 8-bit) TURBOchannel
399     graphics devices. They work in Ultrix, but only monochrome
400     and no cursor, because there are no ramdacs or such yet.
401     20040315 Pixelstamp solid fill now supports colors other than just
402     zero-fill.
403     Adding a (new) regression test skeleton.
404     20040321 Some really minor updates.
405     20040323 Fixes to allow SGI-IP20 and IP22 to work a bit better
406     (aliased memory), and adding "private" firmware-like vectors
407     to arcbios emul. An IP22 Irix kernel gets far enough to
408     print an assertion warning (and then double panics). :-)
409     20040324 Adding a generalization hack to the SCC serial controller
410     to work with SGI-IP19 (in addition to DECstations).
411     Adding the 'sdc1' instruction.
412     Some progress on various SGI emulation modes.
413     20040325 Minor updates.
414     20040326 Fixed a 'madd' bug (r5900). NetBSD/playstation2 now reaches
415     userland correctly. And a simple fix which allows NetBSD
416     timer interrupts to be triggered; NetBSD uses T_MODE_CMPE
417     (compare), while Linux uses _OVFE (overflow).
418     20040328 Linux on Playstation 2 boots a bit. The Playstation 2
419     graphics controller has been extended to work better with
420     NetBSD, and to include some Linux support as well.
421     Some interrupt handling enhancements on Playstation 2,
422     needed for Linux' dma.
423     128-bit loads and stores (lq and sq) are allowed, although
424     the top half of quadwords are not modified by other
425     instructions. (Linux uses lq and sq.)
426     Big-endian X Windows servers now display correct rgb color,
427     not bgr as before.
428     20040330 Some minor updates to the documentation.
429     20040401 Adding a dummy ps2 OHCI device.
430     20040402 Progress on the asc SCSI controller.
431     20040406 Hack to allow ./configure, make to work on HP-UX B.11.00
432     on HPPA-RISC, gcc 3.3.2. (Does not work with HP's cc.)
433     More progress on the asc SCSI controller. Fixing INQUIRY,
434     adding READ_CAPACITY, adding READ. Works a bit with NetBSD
435     and some (but not all) Ultrix kernels, on DECstation type 2.
436     Adding WRITE, SYNCRONIZE_CACHE.
437     Mounting disks works in NetBSD :-) It is a bit buggy,
438     though. Or something else is buggy.
439     20040407 The bug is triggered by gunzip during NetBSD/pmax install.
440     20040408 Fixing a bug (non-nul-terminated string) which caused X11
441     cursors to not display on Solaris.
442     Unnecessary X11 redraws are skipped (removes some weird
443     delays that existed before), and cursors are redrawn on
444     window exposure. (The cursor functionality has been moved
445     from dev_fb.c to x11.c.)
446     20040411 Fixing the DC7085 device so that Ultrix doesn't behave weird
447     if both tx and rx interrupts occur at the same time.
448     More advancements on the asc SCSI controller.
449     More disk image filename prefixes are now recognized; c (for
450     CD-ROM, as before), d for disk, b for boot device, r for
451     read-only, and 0-7 for scsi id.
452     Mounting disks works in Ultrix. Installing to disk usually
453     crashes for various reasons, but an OSF/1 install gets
454     relatively far (similar to the NetBSD/pmax install).
455     20040412 Trying to find the bug.
456     20040415 Finally found and fixed the bug; SCSI reads and writes
457     (actually, any data in or data out) can be split up into
458     multiple DMA transfers. That stuff was only partially
459     implemented, and the part that was implemented was buggy.
460     It works now. NetBSD/pmax and Ultrix 4.3 seems to like
461     the SCSI stuff enough to install almost all the way.
462     20040415 (more) Adding a hack which allows a host's cdrom device to be used as
463     a cdrom device inside the emulator, eg /dev/cd0c.
464     Making the cycle counter int64_t instead of long, as a 'long'
465     overflows too easily on 32-bit machines. (The bug is still
466     there, though.)
467     I've now verified that a full NetBSD/pmax install can be done.
468     If using a PMAG-AA graphics board, startx brings up X :-)
469     mips64emul can be compiled inside NetBSD inside mips64emul,
470     and it can run NetBSD in that environment. (I'm getting
471     dizzy... :-)
472     20040417 Moving some coprocessor stuff from cpu.c to coproc.c.
473     20040424 Adding a BT455 vdac for PMAG-AA. Black and white are now
474     rendered correctly in Xpmax.
475     Adding colormap support to the BT459 device, for PMAG-BA.
476     20040425 Fixing a buffer length bug, which caused an Ultrix 4.5
477     install to bug out on an i386 host.
478     20040429 FPU experiments.
479     20040502 More FPU experiments.
480     Speedup for exception debug messages: in quiet mode, debug
481     messages were still evaluated, which took a relatively
482     large amount of time.
483     20040503 Most FPU stuff fixed, but there is at least one known bug
484     left; ps axu in NetBSD triggers it (ps loops forever).
485     20040504 A default install of Ultrix 4.5 succeeded! It boots up with
486     a graphical login.
487     Fixing the keyboard repetition bug (a lk201 "up" (release)
488     scancode is now sent after every key).
489     20040505 Both CR and LF now produce the same lk201 scancode, so that
490     pressing 'enter' works as expected in Ultrix.
491     20040506 Adding a vaddr to paddr translation cache, causing a speedup
492     of perhaps 50% or more.
493     20040507 Fixing PMAG-BA color for Ultrix. (Ultrix relies on interrupts
494     coming from the TURBOchannel slot to update the palette.)
495     20040508 Fixing cursor positioning for PMAG-BA.
496     20040511 Prints current nr of instructions per seconds, not only
497     average, when using -N.
498     20040515 Some more bintrans experiments.
499     20040606 Adding ARCBIOS GetReadStatus() and Read().
500     Adding some instructions: tlt, tltu, tge, tgeu, tne.
501     20040607 Adding the dsub instruction.
502     Some minimal progress on SGI-IP30 emulation.
503     Applying a patch from Juli Mallett to src/file.c (I'm not
504     sure yet if it breaks or fixes anything).
505     Some minor fixes for SGI-IP22 (such as faked board revision
506     numbers).
507     20040608 ll/sc should now fail if any unrelated load/store occurs.
508     Minor changes to the configure script.
509     Adding some ifdefs around code which is not often used
510     (the mfhi/mflo delay, and the last_used TLB experimental
511     code); this might cause a tiny speedup.
512     20040609 Minor fixes.
513     20040610 Various minor SGI fixes (64-bit ARCS stuff, progress on the
514     CRIME/MACE interrupt system, and some other random things).
515     20040611 More crime/mace progress, and some more work on pckbc.
516     KN5800 progress: adding a XMI->BI adapter device; a disk
517     controller is detected (but it is just a dummy so far).
518     20040612 Adding "dev_unreadable", which simplifies making memory
519     areas unreadable. (NetBSD on SGI-IP22 no longer detects
520     non-existant hpc1 and hpc2 busses.)
521     Implementing rudimentary support for IP22 "local0" and
522     "local1" interrupts, and "mappable" local interrupts.
523     Some progress on the WDSC SCSI controller on IP22, enough
524     to let NetBSD get past the disk detection and enter
525     userland! :-)
526     The zs (zilog serial) device now works well enough to let
527     NetBSD/sgimips be interacted with on IP22. :-) (Though
528     it is very ugly and hardcoded.)
529     20040613 IP32 didn't work last night, because there were too many
530     tick functions registered. That has been increased now.
531     Trying out NetBSD/sgimips 2.0 beta kernels. There are some
532     differences compared to 1.6.2, which I'm trying to solve.
533     Interrupt fixes for IP32: _serial and _misc are different.
534     Separation of IP22 (Full-house) and IP24 (Guiness).
535     20040614 Modifying the memory layout for IP20,22,24,26 (RAM is now
536     offset by 128MB, leaving room for EISA registers and such),
537     and moving around some code chunks. This is not well
538     tested yet, but seems to work.
539     Moving parts of the tiny translation cache, as suggested
540     by Juli Mallett. It seems that the speedup isn't as
541     apparent as it was a few weeks ago, though. :-(
542     Speedups due to not translating addresses into symbol
543     names unless the symbol name is actually printed.
544     Added support for loading old big-endian (Irix) ECOFF
545     kernels (0x60 0x01 as the first two bytes).
546     20040615 (late) Adding enough SGI IP20 (Indigo) support to let NetBSD 2.0
547     enter userland :-) No interrupt specifics are implemented
548     yet, so it hangs while doing terminal output.
549     20040618 Experimenting with the WDSC SCSI controller for IP20,22,24.
550     20040620 Adding a program which converts SGI prom dumps from text
551     capture to binary, and some hacks to try to make such an
552     IP22 PROM to work better in the emulator.
553     20040621 Removing the Nintendo 64 emulation mode, as it is too
554     uninteresting to support.
555     Adding SCSI tape device support (read-only, so far).
556     Fixing a bug which caused the cursor to be corrupted if new
557     data was written to the framebuffer, but the cursor wasn't
558     moved.
559     20040622(early) Finally! Making progress on the SCSI tape stuff; when going
560     past the end of a file, automagically switch to the beginning
561     of the next.
562     20040622(late) Trying to track down the last SCSI tape bugs.
563     Removing _all_ dynamic binary translation code (bintrans),
564     starting from scratch again.
565     20040623(early) Performing a general code cleanup (comments, fixing stuff
566     that led to compiler warnings, ...).
567     Disabling MIPS16 support by default, and making it a
568     configure time option to enable it (--mips16). This gives
569     a few percent speed increase overall.
570     Increasing performance by assuming that instruction loads
571     (reading from memory) will be at the same page as the last
572     load. (Several percent speedup.)
573     Moving the list of kernels that can be found on the net from
574     README to doc/.
575     20040624 Finally! I found and fixed the bug which caused 'ps', 'top',
576     'xclock', and other programs in NetBSD/pmax to behave weird.
577     Increasing performance by a few percent by running as many
578     instructions in a row as possible, before checking for
579     hardware ticks.
580     When booting from SCSI tapes on DECstation, the bootstring
581     now contains 'tz' instead of 'rz'.
582     Adding a second ARC machine mode, "Acer PICA-61", -A2.
583     Disabling the support for "instruction delays" by default
584     (it has to be enabled manually in misc.h now, but is never
585     used anywhere anyway).
586     Other minor optimizations (moving around stuff in the
587     cpu struct in misc.h, and caching cpu->pc in cpu.c).
588     Separating the tiny translation cache into two, one for
589     code and one for data. This gives a few percent speed
590     increase.
591     20040625(early) I think now is a good time for a "feature freeze",
592     to let the code stabilize and then make some kind of
593     first release.
594     20040625(later) Adding a -v (verbose) command line option. If -v is not
595     specified, the emulator goes into -q (quiet) mode just before
596     it starts to execute MIPS code.
597     20040627 The configure script now adds -fomit-frame-pointer to the
598     compile flags if the $CC seems to be able to handle that.
599     Found and fixed a serious interrupt bug in BT459 (Ultrix'
600     behaviour required a hack, which was incorrect), so
601     performance for machines using the PMAG-BA framebuffer is
602     now improved.
603     For X11 bitdepths other than 8 or 24, a warning message
604     is printed at startup.
605     A number of other minor fixes, optimizations, updated
606     comments and so on.
607     Adding a BUGS file, a list of known bugs.
608     Adding a minimal man page, doc/mips64emul.1.
609     20040628 Hacks for faking the existance of a second level cache
610     (ARCBIOS and other places).
611     An important fix for dc7085: tx interrupts should happen
612     before rx interrupts, not the other way around as it was
613     before. (This speeds up NetBSD boot on DECstation, and
614     fixes a bug which Ultrix triggered on heavy keyboard input.)
615     A couple of other minor fixes.
616     Framebuffer fix: there was a bug which caused the rightmost/
617     bottom pixel to sometimes not be updated, when running in
618     scaledown mode. This is now fixed.
619     Adding a small program which removes "zero holes" from
620     harddisk image files.
621     20040629 More minor fixes.
622     20040629(later) Adding -A3 (NEC RISCstation 2200) (this is similar to
623     the 2250 model that NetBSD/arc can already boot all the
624     way into userland and be interacted with), and -A4
625     (Deskstation Tyne).
626     Some more minor fixes.
627     20040630 Adding support for 15 and 16 bits X11 framebuffers,
628     and converting from XYPixmap to ZPixmap (this fixes the
629     problem of updates appearing in "layers" on some X
630     servers).
631     The pixels in the mouse cursor (for BT459) are now colored
632     as the emulated OS sets them, although no transparency
633     masking is done on the edges of the cursor yet. (In plain
634     English: the mouse cursor is no longer just a white solid
635     square, you can actually see the mouse cursor image
636     on the white square.)
637    
638     ============== RELEASE 0.1 ==============
639    
640     20040701 The -j option now takes a name, the of the kernel as passed
641     on to the bootloader. ("netbsd" is the default name.)
642     Adding support to load bootstrap code directly from a disk
643     image, for DECstation. Both NetBSD/pmax and Ultrix boot
644     straight of a disk image now, with no need to supply a
645     kernel filename on the command line. (Ultrix still needs
646     -j vmunix, though, to boot from /vmunix instead of /netbsd.)
647     20040702 Minor bugfix (some new untested code for X11 keypresses was
648     incorrect).
649     20040702(later) Adding an ugly hack for CDROMs in FreeBSD; if an fread() isn't
650     done at a 2048-byte aligned offset, it will fail. The hack
651     tries to read at 2048-byte aligned offsets and move around
652     buffers to make it work.
653     Adding video off (screen blanking) support to BT459.
654    
655     ============== RELEASE 0.1.1 ==============
656    
657     20040702(later) Cleanup to remove compiler warnings (Compaq's cc, Solaris' cc,
658     and gcc 3.3.3/3.3.4 in Linux), mostly by putting ULL on large
659     numeric constants.
660     Better support for scaledown of BT459 cursors, but still not
661     color-averaging.
662     Beginning the work on adding better memory latency support
663     (instruction delays), enabled by the --delays configure option.
664     20040703 Modifications to the configure script so that a config.h file
665     is created, containing things that were passed along as
666     -Dxxx on each cc command line before.
667     More work on instruction latency support; trying to separate
668     the concepts of nr of cycles and nr of instructions.
669     20040704 Working on R2000/R3000 caches.
670     Adding a '--caches' option to the configure script.
671     Various small optimizations.
672     R3000 caches finally work. (I know that there is at least one
673     bug, regarding interrupt response.)
674     20040705 Working on the 'le' device, and on a generic (device
675     independant) networking framework. le can transmit and receive
676     packets, and the network framework fakes ARP responses from a
677     fake gateway machine (at a fixed ip address, 10.0.0.254).
678     Adding a '-c' command line option, which makes emulated_hz
679     automatically adjust itself to the current number of emulated
680     cycles per host CPU second (measured at regular intervals).
681     20040707 Removing the '-c' option again, and making it the default
682     behaviour of the emulator to automatically adjust clock
683     interrupts to runtime speed (as long as it is above 1 MHz).
684     (This can be overridden by specifying a static clock rate with
685     the -I option.)
686     Updating the doc/ stuff a bit.
687     Generalization of the DECstation bootblock loading, to work
688     with Sprite/pmax. Lots of other minor modifications to make
689     Sprite work, such as adding support for DECstation "jump table"
690     PROM functions, in addition to the old callback functions.
691     Sprite boots from a disk image, starting the kernel if the
692     argument "-j vmsprite" is used, but it seems to not like the
693     DBE exceptions caused by reading empty TURBOchannel slots. :-/
694     20040708 Minor changes and perhaps some tiny speed improvements.
695     The Lance chip is (apparently) supposed to set the length of
696     received packets to len+4. (I've not found this in any
697     documentation, but this is what NetBSD expects.) So now, ICMP
698     echo replies work :-) UDP works in the outgoing direction,
699     in the incoming direction, tcpdump can see the packets but they
700     seem to be ignored anyway. (Weird.)
701     Adding a separate virtual-address-to-host-page translation
702     cache, 1-entry for loads, 1-entry for stores. (For now, it
703     only works on R4000 as there are conflicts with cache usage
704     on R3000).
705     Changing the lower clock speed bound from 1 MHz to 1.5 MHz.
706     20040709 Incoming UDP checksums were wrong, but are now set to zero
707     and NetBSD inside the emulator now accepts the packets (eg.
708     nameserver responses). Host lookups and even tftp file
709     transfers (using UDP) work now :-)
710     Adding a section on Networking to the Technical documentation,
711     and a preliminary NetBSD/pmax install instruction for network
712     installs to the User documentation.
713     Some updates to the man page.
714     20040709(later) Fix to the TURBOchannel code to allow Sprite to get past the
715     card detection. Seems to still work with Ultrix and NetBSD.
716     This also makes Linux/DECstation properly recognize both the
717     Lance controller and the SCSI controller. Linux 2.4.26 from
718     Debian boots nicely in framebuffer mode :-)
719     20040710 Some bits in the KN02 CSR that were supposed to be readonly
720     weren't. That has been fixed, and this allows Linux/DECstation
721     to get past SCSI detection. :-)
722     Minor updates to the ASC controller, which makes Linux and
723     OpenBSD/pmax like the controller enough to be able to access
724     SCSI devices. OpenBSD/pmax boots from a disk image for the
725     first time. :-) Linux detects SCSI disks, but I have no
726     bootable Linux diskimage to test this with.
727     Updating the doc/ to include instructions on how to install
728     OpenBSD/pmax onto a disk image.
729     Naively added a PMAGB-BA (1280x1024x8) in hopes that it would
730     basically be a PMAG-BA (1024x864x8) in higher resolution,
731     but it didn't work that way. I'll have to look into this later.
732     Adding a -o option, useful for selecting '-s' (single user
733     mode) during OpenBSD install and other things.
734     After a lot of debugging, a serious bug related to the tiny
735     cache was found; Linux just changes the ASID and returns when
736     switching between processes in some occasions without actually
737     _writing_ to the TLB, and I had forgotten to invalidate the
738     tiny cache on such a change.
739     20040711(early) I've been trying to repeat the OpenBSD install from yesterday,
740     but appart from the first initial install (which was
741     successful), I've only been able to do one more. Several
742     attempts have failed with a filesystem panic in the middle
743     of install. I'm not sure why.
744     20040711 I found the "bug": wget downloaded the simpleroot28.fs.gz file
745     as read-only, and gunzip preserved those flags. Thus, OpenBSD's
746     installer crashed as it didn't get its writes through to the
747     disk.
748     Parts of the 1280x1024x8 PMAGB-BA graphics card has been
749     implemented, it works (unaccelerated) in NetBSD and OpenBSD,
750     but Ultrix does not seem to like it.
751     Cleaned up the BT459 cursor offset stuff a bit.
752     Trying to make the emulated mouse coordinates follow the host's
753     mouse' coordinates (for lk201, DECstation), by
754     "de-accelerating" the data sent to the emulated OS.
755     20040711(later) Fix so that Sprite detects the PMAG-BA correctly.
756     Adding some stuff about NFS via UDP to the documentation.
757     Fixed the 'update flag' for seconds, so now Sprite doesn't
758     crash because of timer-related issues anymore.
759     Fixing KN02 interrupt masks a bit more, to make Sprite not
760     crash. Sprite now runs quite well.
761     20040712 Working on IP/UDP fragementation issues. Incoming UDP packets
762     from the outside world can now be broken up into fragments
763     for the guest OS. (This allows, for example, OpenBSD/pmax to
764     be installed via nfs.) Outgoing fragmented packets are NOT
765     yet handled.
766     Linux doesn't use 64-bit file offsets by default, which is
767     needed when using large disk images (more than 2GB), so the
768     configure script has now been modified to add necessary
769     compiler flags for Linux.
770     20040713 Trying out some minor optimizations.
771     Refreshing the UDP implementation in src/net.c a little.
772     20040714 Updating the documentation a little on how to experiment
773     with a Debian Linux install kernel for DECstations.
774     A 'mini.iso' Linux image for DECstation has different fields
775     at offsets 0x10 and 0x14, so I'm guessing that the first is
776     the load address and the second is the initial PC value.
777     Hopefully this doesn't break anything.
778     Some initial TCP hacks, but not much is working yet.
779     Some updates for IP30: The load/store 1-entry cache didn't
780     work too well with IP30 memory, so it's only turned on for
781     "MMU4K" now. (This needs to be fixed some better way.)
782     Adding a hack which allows Linux/Octane to use ARC write()
783     and getchild() on IP30. Linux uses ARCBIOS_SPB_SIGNATURE as a
784     64-bit field, it was 32-bit before.
785     Making ugly hacks to the arcbios emulation to semi-support
786     64-bit equivalents of 32-bit structures.
787     20040716 Minor fixes to the configure script (and a few other places)
788     to make the sources compile out-of-the-box on HP-UX (ia64
789     and HPPA), old OpenBSD/pmax (inside the emulator itself), and
790     Tru64 (OSF/1) on Alpha.
791     A couple of other minor fixes.
792     20040717 A little TCP progress; OpenBSD/pmax likes my SYN+ACK replies,
793     and tries to send out data, but NetBSD/pmax just drops the
794     SYN+ACK packets.
795     Trial-and-error led me to change the 64-bit ARCS component
796     struct again (Linux/IP30 likes it now). I'm not sure about all
797     of the offsets yet, but some things seem to work.
798     More 64-bit ARCS updates (memory descriptors etc).
799     Better memory offset fix for IP30, similar to how I did it for
800     IP22 etc. (Hopefully this doesn't break anything else.)
801     Adding a MardiGras graphics controller skeleton for SGI-IP30
802     (dev_sgi_mardigras.c).
803     Thanks to Stanislaw Skowronek for dual-licensing mgras.h.
804     Finally rewrote get_symbol_name() to O(log n) instead of O(n)
805     (Stanislaw's Linux kernel had so many symbols that tracing
806     with the old get_symbol_name() was unbareably slow).
807     Removing all of the experimental tlbmod tag optimization code
808     (the 1-entry load/store cache), as it causes more trouble than
809     the performance gain was worth.
810     20040718 The MardiGras device works well enough to let Linux draw the
811     SGI logo and output text.
812     A bunch of other minor changes.
813     20040719 Trying to move out all of the instruction_trace stuff from the
814     main cpu loop (for two reasons: a little performance gain,
815     and to make it easier to add a GUI later on).
816     20040720 Finally found and fixed the ethernet/tcp bug. The hardware
817     address is comprised of 6 bytes, where the _first_ byte should
818     have a zero as the lowest bit, not the last byte. (This causes
819     NetBSD and Linux running in the emulator to accept my SYN+ACK
820     packets.)
821     Getting the first nameserver address from /etc/resolv.conf.
822     (This is not used yet, but could be useful if/when I add
823     internal DHCP support.)
824     Working more on the TCP stuff; TCP seems to be almost working,
825     the only immediate problem left is that the guest OS gets
826     stuck in the closing and last-ack states, when it shouldn't.
827     It is now possible to install NetBSD and OpenBSD via ftp. :-)
828     20040721 Trying to fix the last-ack bug, by sending an RST after the
829     end of a connection. (Probably not a correct fix, but seems
830     to work?)
831     Adding a my_fseek() function, which works like fseek() but
832     with off_t instead of long, so that large disk images can
833     be used on systems where long is 32 bits.
834     20040722 Trying to fix some more TCP related bugs.
835     20040725 Changing the inlined asm statement in bintrans_alpha.c into
836     a call to a hardcoded array of bytes that do the same thing
837     (an instruction cache invalidation). This allows the same
838     invalidation code to be used regardless of compiler.
839     Some other minor changes.
840     20040726 Minor updates. The configure script is now more verbose.
841     A Debian/IP22 Linux tftp boot kernel requires ARCS memory to
842     be FreeMemory, not FreeContiguous. (This should still work with
843     other SGI and ARC OSes.)
844     Fix for ARCS write(), so it returns good write count and
845     success result (0).
846     Some hacks to the IP22 memory controller, to fake 72MB RAM
847     in bank 0.
848     The IP22 Debian kernel reaches userland (ramdisk) when run
849     with -G24 -M72 -CR4400, if a special hack is done to the
850     zs device.
851     20040730 Removing mgras.h, as I'm not sure a file dual-licensed this way
852     would work. (Dual-licensing as two separate files would work
853     though.)
854     Preparing for the upcoming release (0.2).
855     20040801 Fixing the 512 vs 2048 cdrom sector size bug; I hadn't
856     implemented the mode select SCSI command. (It still isn't
857     really implemented.)
858     A bug which crashes the emulator is triggered when run with
859     new NetBSD 2.0_BETA snapshots on a Linux/i386 host. I'm not
860     sure why.
861     UDP packets sent to the gateway (at 10.0.0.254) are now
862     forwarded to the machine that the host uses as its nameserver.
863     Some other minor fixes.
864    
865     ============== RELEASE 0.2 ==============
866    
867     20040803 A post-3.5 OpenBSD/sgimips kernel snapshot with ramdisk seems
868     to boot fine in the emulator, all the way to userland, and
869     can be interacted with.
870     Adding a -y option, used to set how many (random) instructions
871     to run from each CPU at max (useful for SMP instruction
872     interleave experiments).
873     Importing a 8x16 console font from FreeBSD (vt220l.816).
874     Adding a skeleton for a 80x25 text console device (dev_vga),
875     useful for some ARC modes. (Character output is possible, but
876     no cursor yet.)
877     Adding a dev_zero device (returns zeroes on read).
878     OpenBSD/arc 2.3 can get all the way to userland with -A4 (if
879     the wdc devices are commented out) but bugs out there, probably
880     because of interrupt issues.
881     Adding a -A5 ARC emulation mode (Microsoft-Jazz, "MIPS Magnum")
882     which NetBSD seems to like. No interrupt specifics yet, so
883     it hangs while waiting for SCSI.
884     20040804 Some dev_mp updates.
885     The -y switch has to do with number of cycles, not number
886     of instructions; variable names have been changed to reflect
887     this.
888     20040805 Minor updates. Adding some more CPU types/names, but they
889     are probably bogus.
890     Adding a MeshCube emulation mode. Just a skeleton so far, but
891     enough to let a Linux kernel print some boot messages.
892     Adding the 'deret' instruction.
893     20040806 Adding include/impactsr-bsd.h (a newer version of what was in
894     mgras.h before, and this time with only a BSD-style license),
895     but it is not used yet.
896     20040810 Some Au1500 updates.
897     20040811 Adding the 'clz', 'clo', 'dclz', and 'dclo' special2 (MIPS32
898     and MIPS64) instructions.
899     More Au1500 updates.
900     20040812 Using fseeko(), when it is available.
901     Other minor updates.
902     Adding a NetGear WG602 emulation mode skeleton (-g); after
903     a lot of trial and error, a Linux kernel (WG602_V1715.img)
904     gets all the way to userland, but hangs there.
905     20040818 Adding signal handlers to better cope with CTRL-Z and CTRL-C.
906     Adding a simple interactive single-step debugger which is
907     activated by CTRL-C. (Commands so far: continue, dump, help,
908     itrace, quit, registers, step, trace, version)
909     20040818(later) Adding a 'tlbdump' debugger command, and some other minor
910     fixes.
911     20040819 Minor updates. Adding an 'unassemble' debugger command.
912     20040822 Minor updates to the regression testing framework.
913     20040824 Minor updates based on feedback from Alec Voropay
914     (configure script updates for Cygwin and documentation).
915     20040826 Minor updates.
916     Adding a cursor to the VGA text console device.
917     Changing all old 11:22:..55:66 ethernet macs to 10:20..60,
918     still hardcoded though.
919     20040828 Minor updates.
920     20040829 mips64emul is 1 year old today :-)
921     20040901 tests/README now lists "all" MIPS opcodes. This list should
922     be updated whenever a new opcode is implemented, or when a
923     regression test is added. (A combination of instructions from
924     the TX79 manual, the GNU assembler, and the MIPS64 manual).
925     Hopefully I haven't missed too many.
926     Adding a section on regression testing to doc/technical.html.
927     20040902 Finally beginning the work on separating out the stuff from
928     main.c into a "struct emul". Very time-consuming.
929     Some minor fixes for LL/SC on R10000.
930     20040905 Moving more stuff from main.c into struct emul. Unfortunately,
931     it seems that this causes a slowdown of the emulator.
932     Userland emulation is now only used if --userland is used
933     when running configure.
934     Modifying src/symbol.c to not use global variables.
935     20040906 Minor update.
936     20040914 Using $COPTIM when detecting which compiler flags to use in
937     the configure script. (This makes sure that combinations of
938     flags should work.)
939     There'll probably be a 0.2.1 release some time soon, but I'll
940     do some more clean-up first.
941     Minor update to the detection of ECOFF files, but I don't like
942     it; sometimes the endianness of the magic value seems to be
943     swapped, but it doesn't have to do with endianness of the
944     actual data?
945     20040916 Minor updates. Adding an Example section to the manpage, but
946     as I'm not really familiar with manpage formatting, it will
947     need to be rewritten later.
948     20040917 Finally making the coprocessor instructions disassemblable
949     even when not running.
950     Doing some testing for the 0.2.1 release.
951    
952     ============== RELEASE 0.2.1 ==============
953    
954     20040923 Updating the documentation about how to (try to) install
955     Debian GNU/Linux.
956     20040924 Some more updates to the documentation.
957     20040925 Adding overflow stuff to 'add' and 'sub'.
958     20040926 Minor updates: possibly a fix to 'sltiu' (the imm value
959     should be treated as signed, and then converted to unsigned,
960     according to the MIPS64 manual), and removing the
961     'last_was_rfe' stuff (again).
962     OpenBSD/arc used speed-hack jumps with other deltas than just
963     +/- 1 (it used -3 iirc), so the jump speedhack should now
964     support any delta. Also adding bgtzl and blezl as possible
965     instructions for the speed-hack jumps. (This needs to be
966     tested more.)
967     20040928 Minor updates. Some ARC stuff ("arcdiag" runs now).
968     cpu_register_dump() now also dumps coprocessor registers.
969     20040929 More ARC updates. Making the code look a tiny bit nicer
970     than before. "arcdiag.ip22" works for -G22 (SGI-IP22).
971     Apparently the overflow support in the 'add' instruction
972     was incorrect, so I disabled it.
973     20041002 Trying to install Ultrix in the emulator, but the installer
974     crashes; found (and fixed) the bug rather quickly: the "fix"
975     I implemented a few days ago for the 'sub' instruction
976     (according to the MIPS64 manual) caused the bug.
977     20041004 Changing the behaviour of the -j command line option. The
978     default is now "" (or taken from the last filename given on
979     the command line), not "netbsd". In practice, this doesn't
980     change much, except that -j netbsd.pmax is no longer needed
981     when installing NetBSD.
982     Adding a COMPILE_DATE string to config.h.
983     20041007 Adding a NEC RISCserver 4200 model (-A6), and some more
984     updates to the ARC component tree generator.
985     20041008 The 'll' instruction should be signed, not unsigned as before.
986     This (and some other minor fixes) causes Irix on SGI-IP32 (O2)
987     to actually boot far enough to print its first boot messages :)
988     Working on some new dynamic bintrans code. Enough is now
989     implemented so that the 'nop' instruction is translated
990     and there is support for Alpha, i386 and UltraSparc backends,
991     but performance is about 50% worse than when running without
992     bintrans. (This is as expected, though.)
993     20041009 Minor updates to the documentation.
994     Using mprotect() to make sure that the code created dynamically
995     by the bintrans subsystem is allowed to be executed. (This
996     affects newer OpenBSD systems, and possibly others.)
997     The translated code chunks now only get one argument passed to
998     them, the (struct cpu *) of the current cpu.
999     20041010 Hack to dev_le.c which makes Ultrix accept the initialization
1000     of the LANCE controller. (This goes against the LANCE
1001     documentation though.)
1002     In src/net.c, a fix for Ultrix (which seems to send larger
1003     ethernet packets than the actual TCP/IP contents). The hack to
1004     dev_le.c and this fix is enough to let Ultrix access the
1005     Internet.
1006     For DECstation, when booting without a disk image (or when
1007     "-O" is used on the command line), use "tftp" instead of "rzX"
1008     for the boot string.
1009     20041011 Adding cache size variables to the emul struct, so that these
1010     can be set on a per-machine basis (or potentially manually
1011     on the command line).
1012     20041012 Mach/PMAX now passes the LK201 keyboard self-test (although
1013     the keyboard ID is still bogus).
1014     20041013 Minor updates.
1015     Hacks to the ASC SCSI controller for Mach/PMAX, hopefully this
1016     will not break support for other OSes.
1017     20041014 Minor fix to src/emul.c for reading bootblocks at the end of
1018     a disk or cdrom image (thanks to Alexandru Lazar for making me
1019     aware of this).
1020     Adding "gets()" to src/dec_prom.c.
1021     Working a bit on ARC stuff. Importing pica.h from NetBSD.
1022     Minor updates to the ARC component tree for PICA-61.
1023     Adding a dev_jazz.c (mostly for PICA-61).
1024     Renaming dev_jazz.c into dev_pica.c. Working on PICA timer
1025     and interrupt specifics.
1026     20041016 Adding some dummy entries to lk201.c to reduce debug output.
1027     Some bintrans updates (don't run in delay slots or nullified
1028     slots, read directly from host memory and not via memory_rw(),
1029     try mmap() before malloc() at startup, and many other minor
1030     updates).
1031     Adding bintrans_mips.c for 64-bit MIPS hosts, but it is not
1032     used yet.
1033     20041017 Minor updates.
1034     20041018 Update to dev_mc146818 to allow Mach to boot a bit further.
1035     The "hardware random" in dev_mp.c now returns up to 64 bits
1036     of random.
1037     20041019 Minor updates to the way cache sizes are used throughout the
1038     code. Should be mostly ok for R[234]x00.
1039     src/file.c now loads files using NO_EXCEPTIONS. Whether this
1040     is good or bad, I'm not sure.
1041     20041020 Adding a Linksys WRT54G emulation skeleton (-H).
1042     20041021 Minor updates.
1043     R1[024]000 cache size bits in the config register should now
1044     be ok.
1045     Trying to make dev_asc.c work better with PICA.
1046     More work on PICA interrupts (but they are broken now).
1047     20041022 Generalizing the dev_vga text console device so that it can be
1048     used in other resolutions than just 80x25. Works with
1049     OpenBSD/arc.
1050     emul->boot_string_argument is now empty by default (except
1051     for DECstation modes, where it is "-a").
1052     Speedup of dev_ram by using mmap() instead of malloc().
1053     Using mmap() in memory.c as well, which reduces memory usage
1054     when emulating large memory sizes if the memory isn't actually
1055     written to.
1056     20041023 Minor updates.
1057     20041024 Updates to the PC-style keyboard controller, used by PICA.
1058     Updates to the PICA (Jazz) interrupt system. Both NetBSD/arc
1059     and OpenBSD/arc now reach userland with PICA emulation, and
1060     can be interacted with (there are a few programs on the
1061     INSTALL kernel ramdisks). In the case of OpenBSD, a VGA text
1062     console and PC-style keyboard controller is used, NetBSD
1063     runs on serial console.
1064     Adding a framework for DMA transfer for the ASC SCSI
1065     controller.
1066     Implementing a R4030 DMA controller for PICA, enough to let
1067     OpenBSD/arc and NetBSD/arc be installed on an emulated
1068     Pica. :-)
1069     Updates to the documentation.
1070     20041025 Working on ISA interrupts for PICA.
1071     Adding an Olivetti M700 emulation mode (-A7).
1072     Better separation of PICA and M700 stuff (which I accidentally
1073     mixed up before, I thought the M700 Linux kernel would
1074     also work on PICA because it almost booted).
1075     Writing a skeleton G364 framebuffer for M700, enough to show
1076     the Linux penguin and some text, although scrolling isn't
1077     correctly implemented yet.
1078     Adding a dummy SONIC (ethernet) device, dev_sn, for PICA.
1079     Fixing the passing of OSLOADOPTIONS for ARC, the default is
1080     now "-aN" which works fine with OpenBSD/arc and NetBSD/arc.
1081     20041027 Minor updates.
1082     20041029 Adding a Sony NeWS "newsmips" emulation mode skeleton (-f).
1083     Found and fixed a bug which prevented Linux/IP32 from running
1084     (the speed-hack-jump-optimization fix I made a few weeks ago
1085     was buggy).
1086     Adding the trunc.w.fmt and trunc.l.fmt instructions, although
1087     the are probably not really tested yet.
1088     Changes to how floating point values are handled in
1089     src/coproc.c, but right now it is probably very unstable.
1090     20041101 I had accidentally removed the instructions on how to install
1091     Ultrix from doc/index.html. They are back now.
1092     Adding a -Z option, which makes it easier to run dual- or
1093     tripple-head with Ultrix. (Default nr of graphics cards
1094     without -X is 0, with -X is 1.)
1095     Minor update which makes it possible to switch to the left
1096     monitor when running tripple-head, not just right as before.
1097     When using more than one framebuffer window, and the host's
1098     mouse cursor is in a different window than the emulated mouse
1099     cursor, the emulated mouse will now try to move "very far",
1100     so that it in practice changes screen.
1101     Running Ultrix with dual- and tripple-head now feels really
1102     great.
1103     20041101(later) OpenBSD/arc and Linux/Olivetti-M700 don't both work at the
1104     same time with the speed-hack stuff. So, from now on, you
1105     need to add -J for Linux, and add nothing for openbsd.
1106     20041102 Minor update for OSF/1 V4.0 (include sys/time.h in src/net.c
1107     and add -D_POSIX_PII_SOCKET to the C compiler flags).
1108     20041103 Minor updates for the release.
1109     For some reason, Mach/PMAX caused the emulator to bug out on
1110     SunOS/sparc64 (compiled in 64-bit mode); a minor update/hack
1111     to dev_asc fixed this.
1112    
1113     ============== RELEASE 0.2.2 ==============
1114    
1115     20041103 Minor updates.
1116     20041104 Minor updates.
1117     20041105 Running with different framebuffer windows on different X11
1118     displays works now (even with different bit depths and
1119     endiannesses on different displays). A new command line option
1120     (-z) adds DISPLAYs that should be used.
1121     Update regarding how DECstation BT459 cursors are used;
1122     transparency :-) and some other bug fixes.
1123     20041106 More bt459 updates. The cursor color seems to be correct for
1124     NetBSD, OpenBSD, Ultrix, and Sprite.
1125     Some minor bintrans updates (redesigning some things).
1126     20041107 More bintrans updates (probably broken for non-Alpha targets).
1127     Moving doc/mips64emul.1 to man/.
1128     20041108 Some updates.
1129     20041109 More updates. Bintrans experiments mostly.
1130     20041110 Some minor bintrans updates.
1131     20041111 Minor updates.
1132     20041112 A little rewrite of the bintrans system (again :-), this time
1133     a lot more naïve and non-optimizing, in order to support delay
1134     slots in a much simpler way.
1135     Ultrix 4.5 boots into a usable desktop on my home machine in
1136     3min 28sec, compared to 6-8 minutes without bintrans.
1137     20041113 Some minor bintrans updates.
1138     20041114 More bintrans updates. Ultrix now boots in exactly 3 minutes
1139     on my home machine.
1140     20041115 More bintrans updates.
1141     20041116 Bintrans updates.
1142     20041117 Working on dev_dec_ioasic and related issues.
1143     Adding support for letting translated code access devices in
1144     some cases (such as framebuffers).
1145     20041118 Moving some MIPS registers into Alpha registers, which gives
1146     a speed improvement.
1147     Beginning to write an i386 bintrans backend. Skeleton stuff
1148     works, lui, jr/jalr, addiu/daddiu/andi/ori/xori, j/jal,
1149     addu/daddu/subu/xor/or/nor/and.
1150     20041119 dsubu/sll/srl/sra, rfe,mfc0,dmfc0, beq,bne, delayed branches.
1151     Some load/store (but not for bigendian emulation yet.)
1152     Time to reach Ultrix 4.5's graphical login on a 2.8 GHz Xeon
1153     host is now down to 20 seconds!
1154     Adding bgez, bltz, bgtz, and blez to the i386 backend.
1155     20041120 Minor updates (bintrans related mostly).
1156     Time to reach Ultrix login on the Xeon is now 11 seconds.
1157     Adding 'mult', 'multu' and a some parts of mtc0 to the Alpha
1158     backend.
1159     The transparency updates to the X11 cursor support made the
1160     OpenBSD/arc cursor disappear; that has been fixed now.
1161     Unfortunately, something with Acer Pica emulation is broken
1162     when bintrans is enabled.
1163     20041121 Making tlbwr, tlbwi, tlbp, tlbr callable directly from
1164     translated code.
1165     Adding sltiu, slti, slt, and sltu to the i386 backend.
1166     20041122 More bintrans updates.
1167     With the Alpha backend, the status and entryhi registers
1168     can (in some cases) be written without exiting to the main
1169     loop. Ultrix boot time until a usable desktop is reached
1170     is about 1 min 35 seconds on the 533 MHz pca56.
1171     Adding srlv, srav, and sllv to the i386 backend.
1172     20041123 Removing the special handling of high physical addresses for
1173     DECstation emulation from the main memory handling code, and
1174     replacing it with a mirror device instead. (This results in
1175     a tiny increase in performance, and cleaner code.)
1176     Various minor updates.
1177     20041124 Ripping out _all_ bintrans load/store code, because I have
1178     a new idea I'd like to try out.
1179     A total rewrite of the load/store system. It works when
1180     emulating 32-bit MIPS, but not for 64-bit code yet.
1181     Some minor updates to the dev_fb, but no speed improvement.
1182     Making the 'le' ethernet device' SRAM work with bintrans.
1183     20041125 Various updates.
1184     Adding a little "bootup logo" to the framebuffer.
1185     There is now one translate_address() for R3000-style MMUs,
1186     and one for the other types. (This gives a tiny speed
1187     improvement.)
1188     20041126 Minor updates, bintrans.
1189     Fixing the bug which caused OpenBSD/arc (R4000) to bug out;
1190     it was introduced between the 7:th and 10:th of November
1191     when moving up the check for interrupts to above the code
1192     which runs bintrans code, in src/cpu.c.
1193     Adding movn and movz to the Alpha bintrans backend.
1194     20041127 Various minor updates.
1195     20041128 Making the R2000/R3000 caches work with bintrans, even in
1196     isolated mode. (Not true cache emulation, but it works with
1197     NetBSD/pmax, OpenBSD/pmax, and Ultrix.)
1198     Making the default cache size for R3000 4KB instr, 4 KB data;
1199     a real R3000 could have 64KB each, but emulated OSes run
1200     faster when they think the cache is smaller :-)
1201     Updates to the i386 backend: the nr of executed instructions
1202     is now placed in ebp at all times, and some support for
1203     mtc0 similar to how it is done in the Alpha backend has been
1204     added. A full NetBSD/pmax 1.6.2 install can now be done in
1205     5 minutes 35 seconds, on a 2.8 GHz Xeon host (with -bD2 -M20).
1206     Adding mult and multu to the i386 bintrans backend.
1207     Reducing the number of malloc/free calls used by the
1208     diskimage subsystem.
1209     20041129 Minor updates to the Alpha bintrans backend.
1210     20041130 Trying to fix the bug which prevents Linux from working
1211     with bintrans. It _seems_ to work now. (Pages could in some
1212     cases be written to after they were translated, but that
1213     has been fixed now.)
1214     A couple of other minor fixes.
1215     Minor updates to the Alpha backend (directly using Alpha
1216     registers in some cases, instead of loading into temporaries).
1217     Updates to the i386 backend (special hacks for 32-bit
1218     MIPS emulation, which are fast on i386, for example only
1219     updating half of the pc register).
1220     20041201 More updates to the i386 backend, similar to those yesterday.
1221     Preparing for release 0.2.3.
1222     Adding a generic load/store mechanism, which is used when the
1223     32-bit optimized version cannot be used (for R4000 etc).
1224    
1225     ============== RELEASE 0.2.3 ==============
1226    
1227     20041202 If ALWAYS_SIGNEXTEND_32 is defined in misc.h, and an
1228     incorrectly extended register is detected, the emulator now
1229     exits instead of continues.
1230     Removing the LAST_USED_TLB_EXPERIMENT stuff.
1231     Minor updates to work better with Windows NT's ARCINST.EXE;
1232     printing 0x9b via arcbios becomes ESC + '[', and the ARC
1233     memory descriptor stuff has been generalized a bit more.
1234     Adding arbios hacks for Open(), Seek(), GetRelativeTime(),
1235     and Read() to allow WinNT's SETUPLDR to read the filesystem
1236     on the diskimage used for booting.
1237     20041203 Adding a terminal emulation layer which converts arcbios
1238     stdout writes to "VGA text console" cell characters. Seems
1239     to work with Windows NT and arcdiag.
1240     Adding a 8x8 font to dev_vga.
1241     Adding more ARC components to the component tree (for PICA
1242     emulation).
1243     20041204 Minor updates.
1244     More updates to dev_vga. Adding a 8x10 font.
1245     Adding a hack so that the framebuffer logo is visible at
1246     startup with dev_vga. (It disappears at the first scroll.)
1247     A minor fix for a bug which was triggered when running
1248     dual- or tripple-head, on 2 or 3 actual X11 displays.
1249     20041205 Fixing a bintrans bug.
1250     Some other minor updates (some of them bintrans related).
1251     20041206 Moving the web page to http://gavare.se.
1252     Adding a hack for mmap() which supports anonymous mapping
1253     using /dev/zero, but not using MAP_ANON{,YMOUS}.
1254     Separating out opcodes.h, cop0.h, and cpu_types.h from misc.h.
1255     20041207 Minor bintrans update. (In some cases, it isn't necessary
1256     to return to the main loop, when translating from a new page.)
1257     Some other minor i386 bintrans backend optimizations.
1258     And some other minor updates.
1259     i386 backend update: the lowest 32 bits of the pc register
1260     are now placed in an i386 register.
1261     20041208 Adding GetConfigurationData() and some support for config
1262     data, to src/arcbios.c.
1263     Adding a bogus 0xbd SCSI command (used by Windows NT). It is
1264     not listed in http://www.danbbs.dk/~dino/SCSI/SCSI2-D.html.
1265     If the framebuffer cursor contains more than 1 color, then
1266     the host's X11 cursor disappears. (Nice for DECstation
1267     emulation with emulated X.)
1268     For ARC and SGI emulation, if an exception occurs before an
1269     exception handler is installed, the emulator now exits
1270     nicely (as suggested by Alec Voropay).
1271     A couple of minor updates to the ARCBIOS emulation subsystem.
1272     The single step debugger is now automatically entered when
1273     all CPUs have stopped running, unless there was a clean
1274     shutdown of some kind (PROM halt() call, or similar).
1275     Adding a -V option for starting up in a paused state, into
1276     the single-step debugger.
1277     Adding a note about 'mmon' to the documentation
1278     (http://www.brouhaha.com/~eric/software/mmon/).
1279     20041209 Fixes to devices/console.c which makes cursor keys and such
1280     a bit more reliable.
1281     ARCBIOS hack/update which creates memory descriptors _after_
1282     loading the executable. (Seems to work with OpenBSD/arc,
1283     NetBSD/arc, arcdiag, IRIX, NetBSD/sgimips, OpenBSD/sgi, and
1284     some Windows NT executables.)
1285     ARCBIOS support for cursor keys (ESC + '[' ==> 0x9b).
1286     A bintrans update (for 32-bit emulation) which speeds up
1287     jumps between pages, if code is already translated.
1288     Changing the default bintrans cache from 20 to 24 MB.
1289     20041210 Optimizing unaligned load/stores a little bit in src/cpu.c.
1290     Omiting the check for nr of executed bintrans instructions
1291     on some forward jumps.
1292     Adding the 'syscall' and 'break' instructions to the
1293     bintrans backends.
1294     Allowing more bits of the status register to be written to
1295     from within inside translated code, on R3000.
1296     Getting rid of the final pixel when hiding the host's mouse
1297     cursor.
1298     store_buf() now copies data 8 or 4 bytes at a time, when
1299     possible. (This speeds up emulated ROM disk reads, etc.)
1300     Tiny bug fix: coprocessor unusable exceptions are now also
1301     generated (for coproc 1..3) even when in kernel mode, if the
1302     coprocessors are not enabled. This allows a Debian installation
1303     to proceed further than before. (It's still very unstable,
1304     though.)
1305     20041212 Updating doc/index.html with better Debian installation
1306     instructions.
1307     If SLOWSERIALINTERRUPTS is defined at compile time, interrupts
1308     from the dc7085 device will not come as often as they normally
1309     do. This makes Debian seem more stable.
1310     Decreasing the bintrans cache to 20 MB again.
1311     Updating some files in preparation for a 0.2.4 release.
1312     20041213 Updating the docs on how to install NetBSD 2.0/pmax, and also
1313     some updates to the section on installing Debian.
1314     32-bit bintrans backend optimization: don't inline large
1315     chunks of code, such as general jumps.
1316     20041214 Minor fix for coproc unusable for R4000 (it's the PC that,
1317     matters, not the KSU bits).
1318     Separating out the debugger from emul.c into debugger.c.
1319     Rewriting parts of the debugger.
1320     Removing the -U command line option, as it wasn't really
1321     useful. Also removing the -P option.
1322     Renaming all instances of dumppoint to breakpoint, as that
1323     is what it really is.
1324     When a breakpoint is reached, the single-step debugger is
1325     entered, instead of just turning on instruction trace.
1326     Adding a 'breakpoints' debugger command.
1327     Better fix for coproc unusable on R4000: the KSU bits matter,
1328     but the ERL and EXL bits override that.
1329     Fix which allows Debian to boot directly from a disk image
1330     (with DELO). (It reads multiple separate areas from disk.)
1331     Update to the SLOWSERIALINTERRUPTS stuff, making it even
1332     slower.
1333     Fixes based on feedback from Alec Voropay (-Q with ARC
1334     emulation skips the setup of arcbios data structures in
1335     memory, and no sign-extension _after_ writing a 32-bit
1336     value to a 64-bit coproc 0 register).
1337     Adding a 'devices' command to the debugger.
1338     The 'registers' and 'tlbdump' commands now take an optional
1339     argument (a cpu id).
1340     Adding rudimentary tab-completion and cursor key stuff to
1341     debugger_readline().
1342     Adding some more debugger commands: 'bintrans' and 'machine'.
1343     20041215 Adding a 'devstate' command; implementing a skeleton for a
1344     state function for the bt459 device.
1345     Implementing yet another variant of the SLOWSERIALINTERRUPTS
1346     stuff.
1347     Implementing more of the different exception offsets (taking
1348     CAUSE_IV and STATUS_BEV into account).
1349     hpc_bootinfo should now be correctly filled on big-endian
1350     hosts.
1351     Always shift left by 12, not by pageshift, to get physical
1352     addresses on MMU4K etc. (Thanks to Alec Voropay for noticing
1353     this.)
1354     20041216 The KN02's CSR can now be read from bintranslated code.
1355     Adding a dummy dev_sgi_mec.
1356     20041217 The default framebuffer and model settings for -F (hpcmips)
1357     should now be almost like Cassiopeia E-500.
1358     Changing -DSLOWSERIALINTERRUPTS into a command line option, -U.
1359     20041218 Continuing a little bit on the mec controller.
1360     Removing lots of #include <math.h> that weren't really used.
1361     20041219 Fixing stuff that broke because of the pageshift bugfix.
1362     Adding an argument to the s (step) debugger command, for doing
1363     more than 1 step at a time.
1364     ARCBIOS components representing disk images are now created
1365     to actually match the disk images in use, and some other
1366     arcbios-related updates; adding a dummy GetComponent().
1367     Adding a 'lookup' command to the debugger, for symbol lookups.
1368     Adding a "NEC Express RISCserver" mode (NEC-R96, -A8).
1369     Adding a dummy ARCBIOS GetFileInformation(), GetTime(), and
1370     SetEnvironmentVariable().
1371     20041220 Improved command line editing (including command history)
1372     in the debugger.
1373     Separating some more .h files from each other, and fixing
1374     some Solaris compiler warnings.
1375     20041221 Minor updates.
1376     20041222 Minor updates; hpcmips (BE300, VR41xx) stuff.
1377     The 'register' debugger command is now 'reg', and it can
1378     be used to modify registers, not just read them.
1379     The syntax for hpcmips (-F) is now -F xx, where xx is a
1380     machine model identifier. (1 = BE300.)
1381     20041223 Some really minor updates.
1382     20041226 Minor updates to doc/index.html (NetBSD 1.6.2 -> 2.0, and
1383     some other rearrangements).
1384     Many updates to the debugger (better register manipulation,
1385     breakpoint manipulation, and other updates).
1386     Fix to dev_cons.c to allow the regression tests to work again.
1387     The configure script now tries to detect the presence of a
1388     MIPS cross compiler. (Used by "make regtest".)
1389     Regression tests are now run both with and without bintrans.
1390     20041227 Some hacks to the VR41xx code to allow Linux for BE300 to
1391     get far enough to show the penguin on the framebuffer.
1392     20041228 Merging dev_kn01_csr.c and dev_vdac.c into dev_kn01.c.
1393     20041229 Various updates to the debugger (nicer tlb output and other
1394     things).
1395     Some floating point fixes in src/coproc.c (mov is not
1396     an arithmetic instruction), and in src/cpu.c (ldcX/sdcX in
1397     32-bit mode uses register pairs).
1398     '-O' now also affects the bootstring for SGI and ARC emulation.
1399     Bintrans updates (slightly faster 32-bit load/store on alpha).
1400     Updates to the i386 backend too, but no real speed improvement.
1401     20041230 Cleaning up parts of the 64-bit virtual-to-physical code for
1402     R10000, and per-machine default TLB entries can now be set
1403     for SGI and ARC machines.
1404     Fix: SGI-IP27 is ARC64, not ARCS.
1405     20050101 Minor updates.
1406     20050102 Minor updates.
1407     Fixing a 32-bit 'addu' bug in the bintrans backends.
1408     Allowing fast load/stores even in 64-bit bintrans mode, if
1409     the top 32 bits are either 0x00000000 or 0xffffffff (for Alpha
1410     only).
1411     Re-enabling ctc0/cfc0 (but what do they do?).
1412     Adding beql, bnel, blezl, and bgtzl to the Alpha backend.
1413     20050103 Adding fast 32-bit load/store for 64-bit mode emulation to
1414     the i386 backend too (similar to the Alpha code). Not really
1415     tested yet, though.
1416     Adding an incomplete regression test case for lwl/lwr/ldl/ldr.
1417     Playing around with bintranslated lwl and lwr for Alpha.
1418     20040104 Changing many occurances of pica to jazz.
1419     Various other updates.
1420     20050105 Fixing some more bintrans bugs (both Alpha and i386).
1421     Unaligned stores that cause tlb refill exceptions should now
1422     cause TLBS exceptions, not TLBL.
1423     Adding experimental swl and swr to the Alpha backend.
1424     Adding lwl, lwr, swl, and swr to the i386 backend.
1425     20050106 Adding another hpcmips model (Casio E-105, -F2), and doing
1426     some updates to the VR41xx code. NetBSD/hpcmips prints some
1427     boot messages.
1428     20050108 Minor updates.
1429     20050109 dev_dec5500_ioboard.c and dev_sgec.c => dev_kn220.c.
1430     dev_crime.c, _mace.c, and _macepci.c => dev_sgi_ip32.c.
1431     Also adding dev_sgi_mec, _ust, and _mte into dev_sgi_ip32.c.
1432     A slight license change. Still revised BSD-style, though.
1433     memory_v2p.c is now included separately for MMU10K and
1434     MMU8K.
1435     Fixing a NS16550 bug, triggered by NetBSD 2.0, but not 1.6.2.
1436     Refreshing the UltraSPARC bintrans backend skeleton.
1437     Merging dev_decbi, _deccca, and _decxmi into dev_dec5800.c.
1438     Sparc backend instructions done so far: mthi/mtlo/mfhi/mflo,
1439     lui, addu, daddu, subu, dsubu, and, or, nor, xor, sll, dsll,
1440     srl, and sra.
1441     Adding more sparc backend instructions: addiu, daddiu, xori,
1442     ori, andi, srlv, srav, sllv, slt, sltu, slti, sltiu.
1443     20050110 Changing the default bintrans cache to 16 MB, and some other
1444     minor updates.
1445     Adding div and divu to the i386 backend (but not Alpha yet).
1446     More work on ARCBIOS emulation.
1447     Trying to find a bug which affects Linux on Playstation 2 in
1448     bintrans mode.
1449     20050111 Moving around some Playstation 2 stuff, but I haven't found
1450     the bug yet. It is triggered by load/stores.
1451     More ARCBIOS updates, enough to let Windows NT partition
1452     disks in some rudimentary fashion.
1453     20050112 Testing for release 0.2.4.
1454     Fixes to suppress compiler warnings.
1455    
1456     ============== RELEASE 0.2.4 ==============
1457    
1458     20050113 Minor updates.
1459     20050114 Fix to the Alpha bintrans backend to allow compilation with
1460     old versions of gcc (2.95.4).
1461    
1462     ============== RELEASE 0.2.4.1 ==============
1463    
1464     20050115 Various updates and fixes: some IP32 stuff, the debugger,
1465     ns16550 loopback tx isn't transmitted out anymore, ...
1466     Removing old/broken R10000 cache hacks, which weren't really
1467     used.
1468     20050116 Minor updates to the documentation on using PROM images.
1469     Adding ARCBIOS function 0x100 (used by IRIX when returning
1470     from main, but undocumented).
1471     MC146818 updates (mostly SGI-related).
1472     ARCS64 updates (testing with an OpenBSD snapshot in IP27
1473     mode). This causes Linux/IP30 to not work. Maybe IP27 and
1474     IP30 differ, even though both are 64-bit?
1475     Removing some nonsensical ARCS64 code from machine.c.
1476     Better handling of 128MB and 512MB memory offsets used by
1477     various SGI models.
1478     Trying to revert the ARCS64 changes (OpenBSD/sgi does
1479     seem to be aware of 64-bit vs 32-bit data structures in
1480     _some_ places, but not all), to make Linux/IP30 work again.
1481     Adding "power off" capability to the RTC, as used on IP32
1482     (and possibly IP30 and others).
1483     Some IP30 updates.
1484     20050117 Debugger updates (symbolic register names instead of just rX,
1485     and using %08x instead of %016llx when emulating 32-bit CPUs
1486     in more places than before).
1487     Removing the dummy sgi_nasid and sgi_cpuinfo devices.
1488     Also using symbolic names for coprocessor 0 registers.
1489     Adding DEV_MP_MEMORY to dev_mp.c.
1490     Adding a 'put' command to the debugger.
1491     ARCBIOS function 0x100 used by IRIX seems to _NOT_ be a
1492     ReturnFromMain(), but something else undocumented.
1493     The count and compare registers are now 32-bit in all
1494     places, as they should be. (This causes, among other things,
1495     OpenBSD/sgi to not hang randomly in userspace anymore.)
1496     On breakpoints, the debugger is now entered _at_ the
1497     instruction at the breakpoint, not after it.
1498     Some cursor keys now work when inputed via X.
1499     Refreshing the MC146818 device a bit more.
1500     20050118 Trying to add some support for less-than-4KB virtual pages,
1501     used by at least VR4131. Thanks to Alexander Yurchenko for
1502     noticing this. (I'm assuming for now that all R41xx work
1503     this way, which is not necessarily true.) It doesn't really
1504     work yet though.
1505     Renicing the "loading files" messages and other things
1506     displayed during startup.
1507     Changing the disassembly output of ori, xori, and andi to
1508     unsigned hex immediate, instead of decimal (as suggested
1509     by Alec Voropay).
1510     configure-script update for HP-UX, and switching from using
1511     inet_aton() to inet_pton() (as suggested by Nils Weller).
1512     Also adding -lnsl on Solaris, if required by inet_pton().
1513     Lots of minor R4100-related updates.
1514     20050119 Correcting the R4100 config register in src/coproc.c, and
1515     a minor update to dev_vr41xx.
1516     Finally began a redesign/remodelling/cleanup that I have had
1517     in mind for quite some time... moving many things that were
1518     in struct emul into a new struct machine.
1519     Userland emulation now works with bintrans.
1520     Refreshing the LANCE controller (dev_le.c).
1521     Fixing the LK201 keyboard id.
1522     20050120 Continuing on the remodelling/cleanup.
1523     Fixing the SCSI bug (which was triggered sometimes by
1524     NetBSD 2.0/pmax on Linux/i386 hosts).
1525     Adding a speed-limit hack to the mc146818 device when running
1526     in DECstation mode (limiting to emulated 30 MHz clock, so
1527     that Ultrix doesn't freak out).
1528     Adding an ugly workaround for the floating-point bug which
1529     is triggered when running NetBSD/pmax 2.0 on an Alpha host.
1530     The count/compare interrupt will not be triggered now, if
1531     the compare register is left untouched.
1532     Many, many other fixes...
1533     20050121 Continuing the remodelling/cleanup. (Mostly working on the
1534     network stack, and on moving towards multiple emulations
1535     with multiple machines per emulation.)
1536     Fixbug: not clearing lowest parts of lo0 and hi on tlbr
1537     (seems to increase performance when emulating Linux?).
1538     20050122 Continuing the remodelling/cleanup.
1539     Linux on DECstation uses a non-used part of the RTC registers
1540     for the year value; this is supported now, so Linux thinks
1541     it is 2005 and not 2000.
1542     Began hacking on something to reply to Debian's DHCP requests,
1543     but it's not working yet.
1544     20050123 Continuing the remodelling/cleanup.
1545     20050124 Continuing the remodelling/cleanup.
1546     Converting the dev_vga charcell memory to support direct
1547     bintrans access (similar to how dev_fb works), and fixing a
1548     couple of bintrans bugs in the process.
1549     The emulator now compiles under OpenBSD/arc 2.3 without
1550     crashing (mostly due to the bintrans fixes, but also some
1551     minor updates to the configure script).
1552     20050125 Continuing the remodelling/cleanup.
1553     The '-a' option was missing in the Hello World example in the
1554     documentation. (Thanks to Soohyun Cho for noticing this.)
1555     20050126 Continuing the remodelling/cleanup. Moving around stuff in
1556     the header files, etc. Adding a '-K' command line option, which
1557     forces the debugger to be entered at the exit of a simulation,
1558     regardless of failure or success. Beginning to work on the
1559     config file parser.
1560     Splitting doc/index.html into experiments.html, guestoses.html,
1561     intro.html, and misc.html.
1562     Updating the man page and adding a skeleton section about the
1563     configure files to doc/misc.html.
1564     20050127 Minor documentation updates.
1565     20050128 Continuing the remodelling/cleanup, mostly working on the
1566     config file parser (adding a couple of machine words, enough
1567     to run simple emulations, and adding support for multi-line
1568     comments using tuborgs).
1569     Removing some command line options for the least working
1570     emulation modes (-e, -f, -g, -E, -H), adding new -E and -e
1571     options for selecting machine type.
1572     Moving global variables from src/x11.c into struct machine (a
1573     bit buggy, but it seems to almost work).
1574     20050129 Removing the Playstation 2 mode (-B) and hpcmips modes (-F)
1575     from the command line as well.
1576     Changing the -T command line option from meaning "trace on bad
1577     address" to meaning "enter the single-step debugger on bad
1578     address".
1579     More updates to the configuration file parser (nested tuborg
1580     comments, more options, ...).
1581     Making -s a global setting, not just affecting one machine.
1582     Trying to fix the X11 event stuff... but it's so ugly that it
1583     must be rewritten later.
1584     Continuing the multi-emul cleanup.
1585     Bugfixes and other updates to dev_vga.
1586     20050130 Continuing the remodelling/cleanup. Finally moving out the
1587     MIPS dependant stuff of the cpu struct into its own struct.
1588     Renaming cpu.c to cpu_mips.c, and cpu_common.c to cpu.c.
1589     Adding a dummy cpu_ppc.c.
1590     Removing the UltraSPARC bintrans backend.
1591     Many other minor updates.
1592     src/file.c should now be free from MIPS-dependancies.
1593     20050131 Continuing a little bit more on src/file.c. PPC ELFs can now
1594     be loaded, it seems.
1595     Continuing on src/cpu_ppc.c.
1596     'mips' is undefined by the configure script, if it is defined
1597     by default. (Fixes build on at least OpenBSD/arc and
1598     NetBSD/arc, where gcc defines 'mips'.)
1599     A couple of other minor fixes.
1600     Removing the "Changing framebuffer resolution" section from
1601     doc/misc.h (because it's buggy and not very useful anway).
1602     Adding a mystrtoull(), used on systems where there is no
1603     strtoull() in libc.
1604     Adding 'add_x11_display' to the configure file parser
1605     (corresponding to the -z command line option).
1606     Continuing the multi-emul machine cleanup.
1607     20050201 Minor updates (man page, RELEASE, README).
1608     Continuing the cleanup.
1609     Adding a 'name' field to the emul struct, and adding a command
1610     to the debugger ("focus") to make it possible to switch focus
1611     to different machines (in different emuls).
1612     Beginning to work on the PPC disassembler etc. Hello World
1613     for linux-ppc64 can be disassembled :-)
1614     20050202 Adding a hack for reading symbols from Microsoft's variant of
1615     COFF files.
1616     Adding a dummy cpu_sparc.c and include/cpu_sparc.h.
1617     Cleaning up more to support multiple cpu families.
1618     Various other minor updates.
1619     Fixing another old-gcc-on-Alpha problem.
1620     20050203 Bintrans cache size is now variable, settable by a new
1621     configuration file option 'bintrans_size'.
1622     The debugger can now theoretically call disassembler functions
1623     for cpu families with non-fixed instruction word length.
1624     Working more on the mec controller. It now works well enough
1625     to let both NetBSD/sgimips and OpenBSD/sgi connect to the
1626     outside world using ftp :-)
1627     Continuing on the cleanup of the networking subsystem.
1628     20050204 Continuing the cleanup.
1629     Working on a way to use separate xterms for serial ports and
1630     other console input, when emulating multiple machines (or one
1631     machine with multiple serial lines active).
1632     20050205 Minor documentation updates.
1633     20050206 Moving console.c from devices/ to src/, and continuing the
1634     work on using separate windows for each serial console.
1635     Trying to get OpenBSD/sgi to boot with root-on-nfs on an
1636     emulated NetBSD/pmax server, but no success in setting up
1637     the server yet.
1638     20050207 Continuing on the console cleanup.
1639     Adding a 'start_paused' configuration file option, and a
1640     'pause' command to the debugger.
1641     20050208 Everything now builds with --withoutmips.
1642     Continuing on the documentation on how to run OpenBSD/sgi, but
1643     no actual success yet.
1644     sizeof => (int)sizeof in the configure script (as suggested by
1645     Nils Weller).
1646     20050209 Adding a check for -lm to the configure script.
1647     Continuing on the cleanup: trying to make memory_rw non-MIPS
1648     dependant.
1649     Trying to make a better fix for the cdrom-block-size problems
1650     on FreeBSD. (It now works with a Windows NT 4.0 cdrom in my
1651     drive.)
1652     Began a clean-up of the userland subsystem.
1653     20050210 Continuing the userland cleanup.
1654     IBM's Hello World example for Linux/PPC64 runs fine now.
1655     20050211 Continuing the cleanup. Removing the --userland configure
1656     option (because support for userland is always included now).
1657     Working more on getting OpenBSD/sgi to boot with root on
1658     nfs. (Booting with the ramdisk kernel, and mounting root via
1659     nfs works, but not yet from the generic kernel.)
1660     Major update to the manpage.
1661     Removing the -G command line option (SGI modes).
1662     20050212 Updating the documentation (experimental devices: dev_cons
1663     and dev_mp, better hello.c, and some other things).
1664     20050213 Some minor fixes: documentation, 80 columns in some source
1665     files, better configure script options.
1666     Adding some more PPC instructions.
1667     Added a NOFPU flag to the MIPS cpu flags, so that executing
1668     FPU instructions on for example VR4xxx will fail (as suggested
1669     by Alexander Yurchenko).
1670     20050214 Implementing more PPC instructions.
1671     Adding dev_pmppc.
1672     20050215 Continuing the work on PPC emulation. Adding a (mostly non-
1673     working) NetBSD/powerpc userland mode, a (buggy)
1674     show_trace_tree thing (simliar to the MIPS version).
1675     20050216 Continuing...
1676     20050218 Continuing the clean-up. (Merging the devices and devstate
1677     debugger commands, more 80-column cleanup, some documentation
1678     updates, ...).
1679     20050219 Removing the -D, -A, and -a command line options. Updating the
1680     documentation, in preparation for the next release.
1681     Adding interrupt stuff to dev_cons.
1682     Single-stepping now looks/works better with bintrans enabled.
1683     Beginning the first phase of release testing; various minor
1684     updates to make everything build cleanly on Solaris.
1685     20050220 Continuing testing for the release...
1686    
1687     ============== RELEASE 0.3 ==============
1688    
1689     20050221 Minor updates. Some more clean-up.
1690     Beginning on the new device registry stuff.
1691     20050222 Continuing on the device stuff, and doing various other kinds
1692     of clean-up.
1693     Adding a dummy BeBox mode.
1694     Making the pc register common for all cpu families.
1695     Adding some more PPC instructions and fixing some bugs.
1696     20050223 Continuing on the BeBox stuff, and adding more instructions.
1697     Adding an ns16550 to the VR4131 emulation (which is probably
1698     a close enough fake to the VR4131's SIU unit).
1699     20050224 Minor updates. Adding dummy PReP, macppc, and DB64360 modes.
1700     Continuing on the device registry rewrite.
1701     20050225 Continuing on the device stuff.
1702     20050226 Continuing more on the device rewrite.
1703     Separating the "testmips" machine into testmips and baremips
1704     (and similarly with the ppc machine).
1705     Redesigning the device registry again :-)
1706     Adding a "device" command to the config file parser.
1707     Adding "device add" and "device remove" to the debugger.
1708     Removing pcidevs.h, because it was almost unused.
1709     20050228 Correcting the Sprite disk image url in the documentation.
1710     20050301 Adding an URISC cpu emulation mode (single-opcode machine).
1711     20050303 Adding some files to the experiments directory (rssb_as.c,
1712     rssb_as.README, urisc_test.s).
1713     Continuing on the device stuff.
1714     20050304 Minor documentation update. Also, the SPARC, PPC, and URISC
1715     modes are now enabled by default in the configure script.
1716     Some minor PPC updates (adding a VGA device to the bebox
1717     emulation mode).
1718     20050305 Moving the static i386 bintrans runchunk code snippet (and the
1719     others) to be dynamically generated. (This allows the code to
1720     compile on i386 with old gcc.)
1721     Loading PPC64 ELFs now sets R2 to the TOC base.
1722     Changing the name of the emulator from mips64emul to GXemul.
1723     Splitting out the configuration file part of the documentation
1724     into its own file (configfiles.html).
1725     20050306 Some really minor documentation updates.
1726     Adding a -D command line option (for "fully deterministic"
1727     behaviour).
1728     20050308 Minor PPC updates. Adding a dummy OpenFirmware emulation layer.
1729     20050309 Adding a hack for systems without inet_pton (such as Cygwin in
1730     Windows) as suggested by Soohyun Cho. (And updating the
1731     configure script too.)
1732     Adding a dummy HPPA cpu family.
1733     Some more OpenFirmware updates.
1734     Faster loading of badly aligned ELF regions.
1735     20050311 Minor updates. Adding a dummy "NEC MobilePro 780" hpcmips
1736     machine mode; disabling direct bintrans access to framebuffers
1737     that are not 4K page aligned.
1738     20050312 Adding an ugly KIU hack to the VR41xx device (which enables
1739     NetBSD/hpcmips MobilePro 780 keyboard input).
1740     20050313 Adding a dummy "pcic" device (a pcmcia card controller).
1741     Adding a dummy Alpha cpu emulation mode.
1742     Fixing a strcmp length bug (thanks to Alexander Yurchenko for
1743     noticing the bug).
1744     20050314 Some minor bintrans-related updates in preparation for a new
1745     bintrans subsystem: command line option -b now means "old
1746     bintrans", -B means "disable bintrans", and using no option at
1747     all selects "new bintrans".
1748     Better generation of MAC addresses when emulating multiple
1749     machines and/or NICs.
1750     Minor documentation updates (regarding configuration files).
1751     20050315 Adding dummy standby, suspend, and hibernate MIPS opcodes.
1752     RTC interrupt hack for VR4121 (hpcmips).
1753     Enough of the pcic is now emulated to let NetBSD/hpcmips detect
1754     a PCMCIA harddisk controller card (but there is no support for
1755     ISA/PCMCIA interrupts yet).
1756     Adding preliminary instructions on how to install
1757     NetBSD/hpcmips.
1758     Continuing the attempt to get harddisks working with interrupts
1759     (pcic, wdc on hpcmips).
1760     20050318 Minor updates. (Fixing disassembly of MIPS bgtz etc.,
1761     continuing on the device cleanup, ...)
1762     20050319 Minor updates.
1763     20050320 Minor updates.
1764     20050322 Various minor updates.
1765     20050323 Some more minor updates.
1766     20050328 VR41xx-related updates (keyboard stuff: the space key and
1767     shifted and ctrled keys are now working in userland (ie
1768     NetBSD/hpcmips' ramdisk installer).
1769     Also adding simple cursor key support to the VR41xx kiu.
1770     20050329 Some progress on the wdc.
1771     Updating the documentation of how to (possibly) install
1772     NetBSD/hpcmips, once it is working.
1773     Adding delays before wdc interrupts; this allows NetBSD
1774     2.0/hpcmips to be successfully installed!
1775     Mirroring physical addresses 0x8....... to 0x00000000 on
1776     hpcmips; this makes it possible to run X11 inside
1777     NetBSD/hpcmips :-)
1778     Updating the documentation regarding NetBSD/hpcmips.
1779     Fixing 16-bit vs 15-bit color in dev_fb.
1780     20050330 Print a warning when the user attempts to load a gzipped
1781     file. (Thanks to Juan RP for making me aware of this "bug".)
1782     20050331 Importing aic7xxx_reg.h from NetBSD.
1783     Adding a "-x" command line option, which forces xterms for
1784     each emulated serial port to always be opened.
1785     Adding a MobilePro 770 mode (same as 780, but different
1786     framebuffer address which allows bintrans = fast scrolling),
1787     and a MobilePro 800 (with 800x600 pixels framebuffer :-).
1788     20050401 Minor updates.
1789     20050402 Minor updates. (The standby and suspend instructions are
1790     bintransed as NOPs, and some minor documentation updates.)
1791     20050403 Adding an Agenda VR3 mode, and playing around with a Linux
1792     kernel image, but not much success yet.
1793     Changing BIFB_D16_FFFF -> BIFB_D16_0000 for the hpcmips
1794     framebuffers, causing NetBSD to boot with correct colors.
1795     New syntax for loading raw files: loadaddr:skiplen:
1796     initialpc:filename. (This is necessary to boot the Linux VR3
1797     kernels.)
1798     The Linux VR3 kernel boots in both serial console mode and
1799     using the framebuffer, but it panics relatively early.
1800     20050404 Continuing on the AHC, and some other minor updates.
1801     20050405 Adding a note in doc/experimental.html about "root1.2.6.cramfs"
1802     (thanks to Alec Voropay for noticing that it wasn't part
1803     of root1.2.6.kernel-8.00).
1804     Also adding a note about another cramfs image.
1805     -o options are now added to the command line passed to the
1806     Linux kernel, when emulating the VR3.
1807     Adding a MobilePro 880 mode, and a dummy IBM WorkPad Z50 mode.
1808     20050406 Connecting the VR3 serial controller to irq 9 (Linux calls this
1809     irq 17), and some other interrupt-related cleanups.
1810     Reducing the memory overhead per bintranslated page. (Hopefully
1811     this makes things faster, or at least not slower...)
1812     20050407 Some more cleanup regarding command line argument passing for
1813     the hpcmips modes.
1814     Playing with Linux kernels for MobilePro 770 and 800; they get
1815     as far as mounting a root filesystem, but then crash.
1816     Doing some testing for the next release.
1817    
1818     ============== RELEASE 0.3.1 ==============
1819    

  ViewVC Help
Powered by ViewVC 1.1.26