home *** CD-ROM | disk | FTP | other *** search
/ Brotikasten / BROTCD01.iso / cpc / cpe / history.log < prev    next >
Text File  |  1995-03-08  |  20KB  |  296 lines

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