home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Brotikasten
/
BROTCD01.iso
/
cpc
/
cpe
/
history.log
< prev
next >
Wrap
Text File
|
1995-03-08
|
20KB
|
296 lines
; History:
; The first versions of CPE were developed on a Commodore Amiga 500, 7MHz.
; They were quite slow! I converted it to Intel assembler after I bought a PC
; in June 93. I derived some ideas for the Z80 emulation from a public domain
; CP/M emulator by Charlie Gibbs called SIMCPM for the Amiga. I had to rewrite
; it completely since it supported neither banking nor interrupts. The only
; remains of SimCPM are some labels in the Z80 section and the opcode tables.
;
; v0.0: 910602 Basic emulation of z80 instructions
; Some emulation of CPC's Mode 1 is done (SLOOOOOOW!)
; v0.1: 910605 Added some I/O support
; v0.2: 910607 increased speed about 10 times, but it's still slow
; probably the best way to speed the whole thing up
; is a 68040 board
; v0.3: 920504 fixed bug in GA memory management, so upper rom is called
; now; added primitive interrupts (every 1000 Z80 instructions)
; v0.4: 920505 keyboard emulation added; exit now possible with both ALT keys
; v0.5: 920506 fixed bugs in Z80 XOR A, SBC and ADC commands; frame fly
; interrupts; keymap (there were two Z keys)
; most OS and BASIC functions are now working properly
; added colors and video mode 2 support
; still not working: scrolling, floating point arithmetics
; v0.6: 920507 completely rewrote code for Z80 DAA and ADD,SUB,SBC,ADC
; instructions. Result: BASIC arithmetics are now working
; almost correctly, but occasionally there are still some
; problems. Added scrolling (sloooooow!)
; v0.7: 920509 now supporting multiple roms; added rom 7 (floppy control)
; no floppy hardware emulation right now
; added some optimizations
; v0.8: 920512 implemented floppy emulation by redirecting subroutines in
; the CPC's floppy ROM to 68000 code. Except formatting, all
; major disk operations are emulated. The file DriveA.dat
; contains the data of the emulated CPC drive. CP/M can be
; started and will work properly (I tested it with
; INFOCOM's ENCHANTER). Currently only standard disk formats
; (9 secs/track, 512 bytes/sec) are emulated
; v1.0: 920513 implemented video mode 0. In this version, all major functions
; of the CPC should be working (I didn't test all of them,
; though).
; on startup not only the current directory is checked for ROM
; files, but also a volume called "CPemul:"
; v1.1: 920515 found two bugs in Z80 simulation code, a minor one
; in the LD (HL),H instruction and a rather nasty one which
; prevented the DAA command from working when a PUSH/POP AF
; occurred before it. Since the 68000 does not implement BCD
; arithmetics by a halfcarry and an add/subtract indicator, but
; has instructions for adding and subtracting BCD bytes, a Z80
; emulator has to find a workaround. This is done by saving
; both operands of each add operation. When a DAA occurs, these
; operands are restored and added with the 68000 Add BCD command
; The result is written in the accumulator. This is fine as long
; as there is nothing like PUSH AF/ADD A,C/POP AF in the code.
; But exactly this happens when an interrupt occurs between the
; ADD and the DAA commands. Solution in this version: have an
; extra stack for the BCD operands. The number of errors has
; been reduced, but there are still occasional errors.
; Improved interrupt emulation, TETRIS now works.
; CRTC emulation now supports variable screen widths
; added primitive form of Z80 debugging (regs printout)
; v1.2: 920517 almost complete Z80 disassembler (except DDs&FDs)
; simple Z80 singlestep debugger implemented
; v1.25: 920519 fixed bug in debugger's (f)orward command, added (z)ip
; added (c)olor mode command
; v1.3: 920521 more bugs fixed in cpe2.asm; RR (HL) didn't write back
; (HL) contents after the operation. The M flag is now set
; correctly after a BIT instruction (even Z80 experts may be
; surprised to learn that this flag should be set although
; even the official Z80 documentation says the flag contents is
; unknown after BIT. I didn't find out until some program used
; a JP M,xxxx after a BIT 7,(HL) instruction). The result of
; all this: the game "The Sentinel" now displays 3D gfx
; correctly.
; also new this version: mode 0 scrolling without ugly stripes,
; better emulation of IN instruction, undocumented opcodes
; DD/FD 67/6F
; v1.4: 920527 found out why ELITE was crashing: the time between
; interrupts was too small.
; Fixed some more bugs: EX (SP),IX / EX (SP),IY
; increased speed of LDIR instruction, added debugger commands
; i1-i3 (interrupt speeds, for ELITE mainly)
; v1.5: 920529 fixed bug in calcind macro, which was responsible for the
; errors in Turbo Pascal numeric output (offsets to IX were
; always positive, although 80..FF must be interpreted as
; negative numbers. This one may have been left over from SIMCPM.
; I am not sure though, and can't find out since I deleted the
; SIMCPM files
; added debugger 'm' command
; v1.6: 920602 'm' command now working correctly
; corrected bugs in keymap, added joystick emulation
; did some research on the floppy controller IO addresses
; FA7E/FB7E/FB7F. I think I have quite a good idea about what
; is happening when the floppy rom accesses those addresses.
; v1.7: 920603 implemented some elements of floppy emulation; some rom7
; routines no longer have to be replaced by special 68000
; routines. Hardware emulation for track selection and sector
; ID information now replaces old 68000 routines
; v1.8: 920604 implemented floppy controller $46/$66 commands
; v1.9: 920609 implemented Z80 (R)efresh register. It is used by some games
; as an instruction counter for decoding parts of their
; memory. "Certain games" means Bard's Tale, which nevertheless
; does not feel like working right now.
; Also fixed a bug in OUT (C),D --> Starglider now
; displays gfx correctly
; v1.9b: 921019 now Kickstart 2.0 compatible (how could I mess up OpenWindow
; like that !?!)
; v2.0: 950212 RELEASED
; changed volume name from CPEmul: to CPE:
; commented out the 68000 native emulation parts, because they
; only work for 664 ROMs.
; v2.0a: 950219 made a 680x0 version, for x >= 1. Also new: a small utility
; to convert .DSK files to the old .DAT format
; Oops, there seems to be a bug left in the Z80 emulation.
; 'Labyrinth' from CPCPD1.DSK doesn't work as it should.
;
; ***************************************************************************
;
; v2.00: 930926 first version for IBM-AT and »100% compatible«...
; first version that is working at least a bit, that is.
; Some mode 1 support, colors work, no floppy disk emulation
; Strange behaviour though from the emulated keyboard (in fact,
; it is not emulated, but produces characters anyway...)
; This is my first program in 80386 assembler which is longer
; than ten lines.
; v2.01: 930927 another bug bites the dust - in fact, hundreds of them!
; the result: working support of all cp