Sun Jan  9 16:45:27 1994  James Bonfield  (jkb@sillistra)

	* VERSION 1.0: (Version 0.0 I'll define to be the slower modular
	system from earlier hacks.)

	* memory.c: With ASSUME access to sideways RAM banks is broken.
	For stability of first release I've added back the memcpy to
	write_fe30().

Thu Dec 30 00:29:17 1993  James Bonfield  (jkb@sillistra)

	* unix_io.c: Added most basic OSFSC and OSFILE code to interface
	with UNIX. Implemented in OSFILE are 0x00(save) and 0xff(load).
	Implemented in OSFSC are 0x02(*/), 0x04(*RUN), 0x05(*CAT) and
	0x06(new fs).

Wed Dec 29 10:57:39 1993  James Bonfield  (jkb@sillistra)

	* memory.c: remove read_fe30 function. Replaced with the more
	accurate mem_nord function.

	* memory.c, memory.h: Now using (again!) pointers to functions for
	all memory IO. When used with -fomit-frame-pointer this is quite
	efficient and solves many problems. Hence sideways RAM is also
	fast for switching now (no longer performs a large memcpy).

	* opcodes.c, 6502P.h:  Combine the reset_Z() & reset_N() macros
	into a single reset_ZN(). The advantage is that we can use
	combined information such as A == 0 implies both Z and !N.
	Marginal speed increase though.

	* manager.c, dis6502.c: Added DEBUG define to enable/disable the
	debug code. The check for whether to debug slows things down by a
	suprisingly large amount (10%) and so is default no longer used.

Tue Dec 28 12:48:10 1993  James Bonfield  (jkb@sillistra)

	* Makefile: Added extra optimisations to gcc compiler. Yields
	maximum speed of now only 37% slower than beeb. Specifically,
	-fomit-frame-pointer helps considerably as none of the op functions
	are complex enough to require the frame pointer code. On simply
	-DASSUME we get 44% beeb speed reduction.

	* manager.c: Abolished module system and called opcodes directly
	from manager.c (no debug check either). Also, no update now called
	for memory (it wasn't doing anything anyway) and no time increment.
	ie fastest I can (currently) possibly get things. Our FOR loop now
	takes (on a 486SX25 running Linux) 8.76 seconds which is around 3.5
	times faster than the original 'BBC Emulator'. So our fastest is
	currently 1.52 times slower than the beeb itself

	* memory.h: Added SUPERFAST define to always use non mem mapped IO
	(+ no read only check) to enable a faster system.

Tue Dec 27 17:25:58 1993  James Bonfield  (jkb@sillistra)

	* Makefile, memory.h, opcodes.c, 6502P.h: Added ASSUME definition
	to add a few extra speedups such as always assuming opcode &
	operands are in non memory mapped io (ie the faster mem
	functions). Not necessarily true - but virtually always and a good
	speedup. Sillistra takes 20.12+0.4s to startup and FOR I%=0 TO
	30000:NEXT

	* memory.h, opcodes.c, 6502P.h: Added more mem io 'functions' for fast
	access. All zero page memory accesses now use these simple methods
	to speed things up.

Mon Dec 27 00:30:33 1993  James Bonfield  (jkb@sillistra)

	* memory.c: Yet another memory system. This time we have a
	'simple' array (one for each of read & write) which tells us
	whether simple IO to that memory will work, or whether we should
	use a pointer to a func instead. Non writable memory is
	implemented with a pointer to a func to do nothing. This probably
	isn't an overhead as it is not often we try to write to non
	writable memory.

Sun Dec 26 14:28:25 1993  James Bonfield  (jkb@sillistra)

	* memory.c: Load new os data (fe00) and addr 0-dff into memory.
	Hence we now have a beeping :) (but only the latter half) and 32K
	claiming BBC Computer.

	* unix_io.c: Added unix call 66 (decimal) to save memory contents
	as data/new.bbc

	* opcodes.c: BVS was infact BCS!

	* opcodes.c: BRK adds 2 to PC pushed rather than 1

	* opcodes.c: RTI no longer adds 1 to PC pulled.

	* unix_io.c: Added unix call 00 and 01 to clear and set debug
	flag. Should provide easier mechanism for debugging 6502 module
	from within the Emulator.

Sat Dec 25 01:03:55 1993  James Bonfield  (jkb@sillistra)

	* memory.c: Added back sideways RAM support, and for testing
	loaded in both BASIC and the 65C02 assembler ROMS. Problem:
	doesn't work. Workaround: place BASIC as ROM number zero so that
	it falls through to using it.

	* memory.c: Spotted oddity with loading os.bbc. For some reason it
	was initialising the BRK address (0xfffe/f) wrongly. Loading
	ff00.bbc after "fixed" it. A solution for a problem of, currently,
	unknown cause.

	* Happy Christmas folks. I _will_ get around to doing some more
	development soon... Honest!

Sun Dec 12 14:04:24 1993  James Bonfield  (jkb@sillistra)

	* memory.c: Added back support for those 'special' memory locations.
	However, disabled the latch at fe30 as this (for an unkwnon
	reason) was preventing correct startup. Now '30%' slower than
	'fast' version.

Sun Dec 12 00:23:07 1993  James Bonfield  (jkb@sillistra)

	* memory.h: Sped up again (too around 35% slower of 'fast'
	version) by using macros again instead of pointers to functions.
	(Isn't quite complex enough for what we need though.) Also added
	readbq and writebq macros for fast mem IO when we know there's no
	possibility of mapped IO (eg for PHA/PLA).

Sat Dec 11 17:33:26 1993  James Bonfield  (jkb@sillistra)

	* memory.[ch], opcodes.c: MAJOR changes to memory management. We
	now support sideways RAM, read only portions & memory mapped IO.
	The implementation is somewhat yicky - a table of pointers to
	functions for reading and writing for all 65536 addresses. Due to
	the modified macros in memory.h, the arguments passed must not
	contain expressions that change data (as they will be evaluated
	more than once). Hence opcodes.c has been changed.
	We are now twice as slow as before, so some mechanism should be
	provided for using the earlier, simpler but faster, method.

	* curses/text.c, simple/simple.c: Added simple curses support.
	Created subdirectories ``curses'' and ``simple'' for the two forms
	of screen IO currently supported.

	* manager.c: added -d (for debug) and -Ddir (to change directory)
	options to main().

Sat Dec 11 00:12:52 1993  James Bonfield  (jkb@sillistra)

	* 6502.c: set initial flags for P to BRK + Unused. Also ensure
	in PLP instruction that the unused bit is always set. Now means that
	errors (eg 'Mistake') work first time round.

Fri Dec 10 20:52:51 1993  James Bonfield  (jkb@sillistra)

	* opcodes.c: Fixed (again) overflow in SBC/ADC. Verified.

	* opcodes.c: Added RTI instruction (amazing it worked without).

Thu Dec  9 21:17:29 1993  James Bonfield  (jkb@sillistra)

	* opcodes.c: Fixes to SBC, ADC, ROR, RORA, ROL, ROLA. Now a
	working (except BRK is wrong) emulator!

Wed Dec  8 22:34:54 1993  James Bonfield  (jkb@sillistra)

	* unix_io.c, memory.c: Added more unix_io stuff - taken from
	Ian Stephenson's emulator in an attempt to get a working platform for
	further development from.

Tue Dec  7 19:58:12 1993  James Bonfield  (jkb@sillistra)

	* 6502P.h: addressing modes ind_xand ind_y where reading single
	byte rather than word! Amazing to think it worked as far as it did!

	* dis6502.c: minor additions. Beeps and stops for a sec when
	reaching an unimplemented op code.

	* unix_io.c (creation), memory.c, opcodes.c: Add opcode 0xd4 which
	is trapped and handed over to unix_call() to do various misc IO.
	In memory.c, edit the osbyte, oswrch, osrdch (etc) to invoke this
	new 0xd4 opcode.

	* memory.c: set beeb misc I/O memory (fc00-feff) to 0xff to work
	around various checks on 'boot up'.

	* manager.c: quick hack - global debug flag set when invoking with
	more than one arg (will change to -d sometime in future I guess).

	* opcodes.c: fix several MAJOR bugs: LDY set X; pullw() used by
	RTS assumed order of expression evaluation; BCC & BCS swapped
	around; BVC & BVS macros defined, but not used in the op_..()
	functions; LDA (aa),Y was using abs mode.

Mon Dec  6 20:39:20 1993  James Bonfield  (jkb@sillistra)

	* 6502P.h: parenthesise get_x() macros to yield correct answers.

	* memory.c: clear memory on initialisation

	* dis6502.[ch] (creation): an incomplete disassemble mechanism to
	aid debugging of the 6502 module.

	* opcodes.c: CPX & CPY added. I wondered why it was looping around
	and around :-)

	* opcodes.c: Added branch instructions:
	BCC, BCS, BEQ, BMI, BNE, BPL, BRA
	Bit (and more branch) instructions:
	BBR & BBS (all 8 of each), BIT, TRB, TSB
	Added final instruction: BRK.

Sun Dec  5 13:58:59 1993  James Bonfield  (jkb@sillistra)

	* opcodes.c, 6502P.h: Implemented more opcodes;
	TAX, TAY, TSX, TXA, TXS, TYA, ADC, SBC, JMP, ASL, LSR, ROL, ROR
	stack macros added. Hence added:
	PHA, PHP, PHX, PHY, PLA, PLP, PLX, PLY, JSR, RTS.

Sat Dec  4 21:38:01 1993  James Bonfield  (jkb@sillistra)

	* memory.c: simple code to read in bbc specific data files to
	initialise memory.

	* opcodes.c: Implement several 6502 opcodes; currently all of
	LDA, STA, LDX, STX, LDY, STY, STZ, AND, EOR, ORA, DEC, INC, NOP,
	CLC, CLD, CLI, CLV, SEC, SED, SEI, DEA, INA, DEX, INX, DEY, INY,
	CMP.

	* Stable, but minimal creation. Current files are:
	defs.h: standard defines, such as byte, word, etc
	manager.c, manager.h: the main() driver to everything. Coordinator.
	module_inc.h, public_template.h: some simple templates to aid module
	creation.
	memory.c, memory.h: Memory I/O. Currently very basic.
	6502.c, opcodes.c: the 6502 module code
	6502.h: public header for 6502 module
	6502P.h: private header for 6502 module
	6522.c, 6522.h: the 6522 module. Currently does nothing.
