home *** CD-ROM | disk | FTP | other *** search
/ Emulator Universe CD / emulatoruniversecd1998.iso / CPC / Emulators / CPC52 / HISTORY.TXT < prev    next >
Encoding:
Text File  |  1997-04-22  |  25.9 KB  |  395 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 cpc gfx modes
  126. ;               (incl. scrolling & weird modes & colors & blinking)
  127. ;               working keyboard emulation (PC/XT compatible keyboard)
  128. ;               other hardware requirements: VGA, 80386
  129. ;               trouble with BASIC's NEXT command (FPO stuff)
  130. ; v2.05: 930928 fixed bugs in (BIT 2,whatever) --> no trouble with testing
  131. ;               the ESC key. Also fixed: flags were often killed when AX
  132. ;               had to be PUSHed to do an operation (DD/FD adds...)
  133. ; v2.10: 931027 floppy load is now emulated. Elite & Tetris work!
  134. ;               complete crash for Bard's Tale, though
  135. ;               Starglider: same problem as on the Amiga
  136. ; v2.11: 931028 corrected some flag settings --> correct hex output from
  137. ;               BASIC
  138. ; v2.12: 931225 more bug corrections: better R register implementation, so
  139. ;               Bard's Tale now loads
  140. ;               no problem now when screen width is set to 0, so Bard's Tale
  141. ;               no longer crashes immediately after loading - it WORKS!!!!
  142. ;               multiple sector read now works (BT did not even get to the
  143. ;               R register part on the INTeL version until now)
  144. ;               DD6F/DD67 were reversed - that was Starglider's problem.
  145. ;               Now gfx were displayed.. until the machine crashed: I had
  146. ;               forgotten a POP CX in DD22/FD22... oops. Starglider now works!
  147. ;               something incredible happened: I had nowhere in the INTeL version
  148. ;               used the dozmf macro for BIT 7 instructions, but Sentinel showed
  149. ;               its gfx correctly nevertheless, I have no idea why it failed
  150. ;               to do so on the Amiga version. And I have no idea why it keeps
  151. ;               saying "wrong secret code" (aarggh)!
  152. ; v2.2:  940206 Received Marco Vieth's emulator two days ago. Amazed by the
  153. ;               speed of his screen refresh I realized that there must be a
  154. ;               faster method than the one I used, so I improved my routines quite
  155. ;               a bit. I no longer have three separate routines for screen refresh,
  156. ;               but only one universal routine which handles all modes and is
  157. ;               significantly faster than the old three ones.
  158. ;               ldir has been sped up quite a bit (same method as in Amiga version)
  159. ;               poor lddr is still the same...
  160. ; v2.21: 940207 FINALLY!! I have found the bug which caused Sentinel to fail...
  161. ;               it was, as usual, one wrong character: "gbhl AX" instead of
  162. ;               "gbhl AL" in CB16. It Is NoW wOrKiNg!!!
  163. ; v2.3:  940209 implemented better interrupt emulation. Interrupts are now called
  164. ;               almost precisely 300 times a second. Problem: LDIR, LDDR and
  165. ;               other time-consuming operations may delay an interrupt. I may
  166. ;               have to use another routine in the future. Currently I use
  167. ;               BIOS interrupt 15h, function 83h
  168. ; v2.4:  940213 G.A.Lunter's documentation to his ZX Spectrum emulator helped
  169. ;               me find 8 missing opcodes in my code: CB30..CB37 (SLL A..(HL))
  170. ;               Gigacad now works. Implemented sector save by bypassing rom 7
  171. ;               code
  172. ; v2.41: 940214 corrected HALT which did not work with the new interrupt model
  173. ;               better emulation of 8255, so AIRBALLS now works - but no overscan :-(
  174. ;               At least, the keyboard interrupt now works as it should - and
  175. ;               it was about time! Also: slightly faster screen refresh
  176. ; v2.42: 940220 many little optimizations resulting in a nice speed increase:
  177. ;               ELITE now works at normal interrupt frequency
  178. ;               Screen redraw routines have been improved: they are a lot faster
  179. ;               now and more friendly to the eye (the pointer to the PC screen
  180. ;               is now used as loop variable, so screen is refreshed from top
  181. ;               to bottom instead of »draw the first line of all characters...«)
  182. ;               Disk write corrected (working again!). None of my programs
  183. ;               have any difficulties now. Problems though with MV's disk:
  184. ;               I suspect he uses RAM-Banking, which I have not implemented
  185. ;               Almost nothing from this disk works!
  186. ; v2.43: 940221 fixed a bug that was introduced in the last version: screen
  187. ;               width 40 height 0 crashed the machine (a table of 256 lines was
  188. ;               generated instead of one with no lines)
  189. ; v2.5:  940223 OVERSCAN! Muri & Airballs now display their full screens!
  190. ;               better interrupt emulation (now 292 ints/sec instead of 256)
  191. ;               The problem is the PC's RTC which can only generate interrupt
  192. ;               frequencies like 1024 or 2048Hz etc.
  193. ; v2.6:  940225 this version implements what I have always dreamed of: colored
  194. ;               stripes! I am incredibly happy with these, even if they don't
  195. ;               always start at the exact line. In fact, there is a lot of
  196. ;               room for improvements, but the most important thing is that
  197. ;               ELITE now has correctly colored zones.
  198. ; v2.7:  940303 This version introduces double buffering support - AIRBALLS
  199. ;               is significantly faster than on an older version. Everything
  200. ;               else works as usual, only Starglider did not like the change
  201. ;               and crashes a bit more often - but I am used to having nothing
  202. ;               but trouble with this program.
  203. ; v2.71: 940312 implemented diskchange feature and corrected some bugs.
  204. ;               most of MVs programs now work, DD7D changed F instead of A!
  205. ; v2.8:  940317 this version uses the timer instead of the RTC and has the
  206. ;               correct interrupt speed of 300.4Hz, exactly the same screen
  207. ;               refresh rate in PCRTC mode 2 and thus better color stripes.
  208. ; v2.9:  940320 many little speedups and a major one: R emulation can now
  209. ;               be switched off via a different opcode table. Not quite enough
  210. ;               for troublemaker Starglider though, it still has to run with
  211. ;               half the interrupt speed.
  212. ;               implemented a nice little menu to control various aspects of
  213. ;               the emulation: R register, FF synchronization, double buffering,
  214. ;               interrupt omission, ffly bit reset
  215. ; v2.91: 940331 corrected the bug in scroll routines, it is now possible to use
  216. ;               8 bit access instead of 16 bit. Screen widths up to 255 no longer
  217. ;               crash both CPC and PC. FDC emulation improved, no crashes after
  218. ;               diskchanges any more
  219. ; v2.92: 940401 corrected bug in RR (IX+d); better emulation of illegal FDs;
  220. ;               FDC can now write without patch. Cassette emulation! Loads
  221. ;               from the DOS directory TAPE\. Can't write and is quite slow
  222. ; v2.93: 940402 corrected some in/out bugs, so the 'Last Demo' now works.
  223. ;               patched CAS IN OPEN to speed up the process
  224. ; v3.0:  940403 SOUND! quality ranges from very good (TETRIS) to poor
  225. ;               (everything which uses noise generator). Makes ELITE crash,
  226. ;               probably too slow.
  227. ; v3.01: 940404 corrected bug: huge overscan screens became very small, because
  228. ;               the VGA card did not get a MSB. Now FULLSCR and Sounddemo work
  229. ;               better.
  230. ; v3.1:  940414 some slight speedups; some obsolete code removed
  231. ;               more undocumented DDCBs, IM2 implemented for Boulder Dash (works!)
  232. ;               Also a little RAM-banking (in a very early stage: incorrect
  233. ;               screen refresh, slow)
  234. ; v3.11: 940415 faster scrolling by moving VGA screenstart, emulation is slowed
  235. ;               down a bit though. New also: INI, OUTI, OUTD, IND
  236. ; v3.12: 940416 added feature to CAS IN OPEN, spaces in names are now deleted
  237. ;               when necessary. Also corrected CAS IN OPEN patch in 6128 ROM
  238. ;               increased scrolling speed by faster offset table generation
  239. ; v3.2:  940420 new in this version: multimode. It works... sometimes. There
  240. ;               is still a lot of room for improvements. Better joystick
  241. ;               emulation for Devil's Crown, which crashes when the emulated
  242. ;               joystick is simultaneously pushed left and right.
  243. ; v3.3:  940422 improved SetPCsCRTC, which now no longer interferes with the
  244. ;               timer interrupt, so that the picture is restored without
  245. ;               trouble in displaymode 2. CPE can now load snapshot files
  246. ;               in Marco Vieth's format. Corrected a huge bug in RethinkRAMState
  247. ;               (ES was not saved, I wonder why it worked at all until now!)
  248. ;               There was an error in my hardware documentation concerning the
  249. ;               8255 control register; this is now fixed. Caps and Num Lock
  250. ;               LEDs are controlled by the keyboard interrupt. Speed has been
  251. ;               increased quite a bit by replacing the JMP simz80l at the end
  252. ;               of each instruction by a short sequence which either jumps to
  253. ;               the next opcode or to the »interrupt and other stuff« handler
  254. ; v3.31: 940423 better port emulation; as on a real CPC you can now address
  255. ;               several chips with one OUT. I hardly think that anyone ever
  256. ;               used that feature, though. Corrected a HUGE bug in LDD: it
  257. ;               did not set the flag register, it changed the accumulator.
  258. ;               Oooops! Wonderboy now works. Also improved FDC emulation,
  259. ;               »@« now works.
  260. ; v4.0:  940426 Yes, that's version FOUR, although there have only been two
  261. ;               bug corrections since version 3.31, but these were *HUGE* bugs,
  262. ;               which had been in CPE since the beginning.
  263. ;               Rule No.1: Never be sure that the stack segment is always the
  264. ;               same in your interrupts. DOS functions may modify SS, so you
  265. ;               get nice crashes when your interrupt is called while DOS is
  266. ;               active and you try to reach your data via the BP register
  267. ;               (ASSUMEd: SS=DS=DATA). This bug caused lots of trouble and
  268. ;               was incredibly hard to find.
  269. ;               The second bug only crashed the CPC: I never knew that when
  270. ;               an interrupt occurred, all further interrupts were disabled.
  271. ;               Hardly any program depends on this, since they do a DI command
  272. ;               anyway at the start of the interrupt routine, but Hardball and
  273. ;               Overlander crashed in the old version.
  274. ;               So much for bug hunting!
  275. ; v4.1:  940501 corrected bugs in multimodes, almost all programs now work
  276. ;               EMS can be used to emulate RAM banking. CP/M Plus does not
  277. ;               work very well, though.
  278. ; v4.11: 940507 printer support
  279. ; v4.2:  940514 new diskfile format, diskfiles can now be crunched. Minor
  280. ;               bugs removed
  281. ; v4.3:  940522 corrected bugs in PIO: Antiriad and Barbarian now work.
  282. ;               multimodes are a little more stable when there are changes in
  283. ;               one frame caused by timing problems. Corrected R emulation,
  284. ;               Mission Elevator now works
  285. ; v4.4:  940605 new: packed tape archives
  286. ; v4.5:  940707 realtime cpc (more or less), compatibility to other graphics
  287. ;               cards than OAK.
  288. ; v4.6:  950223 enhanced compatibility to CPCEMU: CPE can now read V2
  289. ;               snapshots, .DSK files and CPCEMU style ROM files.
  290. ;               .DSK file support is currently write protected.
  291. ;               made a second version that uses 256 color 320x256 mode, runs
  292. ;               realtime and has almost perfect color/multimode emulation.
  293. ;               fixed the 'clear interrupt' feature of the Gate Array
  294. ; v4.7:  950308 Bug fixes. Enhanced joystick support. Refresh rate for CPE2
  295. ;               can now be configured in CPESETUP
  296. ; v4.8:  950802 Added Ulrich's GUS support. Included the ROMs and STRIPES.BAS.
  297. ; v4.81: 950825 Made CPE2.EXE handle overscan screens better. Horizontal
  298. ;               scrolling is possible with the F11/F12 keys.
  299. ;               Cleaned up CPESETUP. New option to disable cassette messages
  300. ;               by patching the ROM.
  301. ;               New menu option in CPE2 to force a display height of 200
  302. ;               lines.
  303. ; v4.82: 950826 cleaned up the screen part in CPE2. Better display for
  304. ;               many programs. Beginnings of an emulation for the 'split
  305. ;               screen' or 'rupture' technique (quite buggy yet).
  306. ; v4.83: 950828 fixed a bug in OUT decoding.
  307. ; v4.84: 950829 fudged the FDC emulation to get Logon's "The Demo" working.
  308. ;               Finally found the bug in the EMS part in CPE2.EXE: The
  309. ;               documentation (Data Becker...) had a DI where a SI was needed.
  310. ; v4.85: 950830 moved some more common code into top directory.
  311. ;               It should no longer be possible to crash CPE with an
  312. ;               uncalibrated joystick.
  313. ;               Cleaned up the menus a little.
  314. ; v4.86: 950831 Re-enabled VESA mode support in CPE2. It's possible to use
  315. ;               a 800x600x256 screen. Borders can be enabled in the menu.
  316. ; v4.87: 950901 Menus can now be painted on the CPC screen instead of
  317. ;               switching back to a text mode. This saves some pain for the
  318. ;               monitor. (Only implemented in CPE2)
  319. ;               Changed a few bits and pieces in the CRTC emulation (in CPE2)
  320. ;               The Voyage 93 Demo now identifies the CRTC as type 2 (used to
  321. ;               be type 1). Some programs work better, others have new
  322. ;               problems :-/ The "Advanced" Demo now works.
  323. ; v4.88: 950902 Implemented the CRTC's 32K screen size feature (seems to
  324. ;               work). Only for CPE2, 800x600, EMS.
  325. ;               Centering now works in 800x600 with borders.
  326. ;               Returned to CRTC type 1, because type 2 breaks some programs,
  327. ;               although I believe it is the Right Thing to use type 2. The
  328. ;               choice can now be made at compile time.
  329. ; v4.89: 950905 Finally wrote a better snapshot filename prompting routine.
  330. ;               A list of files is shown, and the filename you type can be
  331. ;               edited.
  332. ;               When you select a diskfile or a snapshot, the next time you
  333. ;               enter the menu again the pointer will be on the last file you
  334. ;               selected.
  335. ;               Apparently, when an interrupt occurs, the next interrupt can
  336. ;               happen only after 52 further scan lines. Changed CPE2
  337. ;               accordingly (and what I have to do in ResetInterruptCounter
  338. ;               finally makes sense)
  339. ; v4.9:  950908 Hmm... now I can make Voyage 93 detect a CRTC 0, but no longer
  340. ;               a CRTC 2 - the "CRTC 2" setting now produces type 1 as well.
  341. ;               But the "CRTC 2" setting seems to work best, so I think I'll
  342. ;               leave it at that.
  343. ;               Fixed interrupt behaviour - at least, a little test program
  344. ;               gives the same results now as on the real CPC. However, "real"
  345. ;               programs are sometimes not quite as happy about the change
  346. ; v4.91: 950909 Fixed a few problems with CRTC emulation. Many parts of "The
  347. ;               Demo" or "Voyage 93" now work fine.
  348. ; v4.92: 950910 Fixed some more problems with the CRTC. Most demos now work
  349. ;               great, with some little problems occasionally.
  350. ;               Finally figured out how to pretend the different CRTC types
  351. ;               correctly:
  352. ;               CRTC 0: Short frame fly interval ( <9 scanlines)
  353. ;               CRTC 1: Long frame fly interval  ( 17 scanlines?)
  354. ;               CRTC 2: Like CRTC 1, but buggy: No frame fly generated when
  355. ;                       screen width is 50.
  356. ;               Reordered most of the main loop to clean things up.
  357. ; v4.93: 950911 Made 32k screens possible in "small VESA mode".
  358. ;               In the menus, you can jump to a specific diskfile group by
  359. ;               pressing the first letter from the name.
  360. ;               Fixed a stupid bug in the CPE2 320x200 scrolling routines.
  361. ; v4.94: 950913 Improved interrupt generation. Some programs work again, and
  362. ;               my little "INTTEST.BAS" gives correct answers in all tested
  363. ;               cases. However, the "Turn Disk" part of The Demo and some
  364. ;               other stuff is broken now :-{
  365. ; v5.00: 950914 Some more correct answers from INTTEST, and the Face Hugger
  366. ;               demo seems to work all the way. "Turn Disk" from The Demo is
  367. ;               still broken, but apparently nothing else.
  368. ; v5.01: 951005 Fixed the "Clear Interrupt Counter" feature - it's only
  369. ;               supposed to clear the high bit.
  370. ;               Fixed some extremely silly bugs in the 8255 emulation. This
  371. ;               should really work now.
  372. ;               Removed the 'R emulation' setting from CPE2, it's pointless
  373. ;               for fast machines that CPE2 is supposed to run on.
  374. ;               Implemented automatic refresh rate calculation for CPE2. If
  375. ;               the PC is too slow, no screen will ever be drawn.
  376. ; v5.02: 951006 Attempt to implement directory changing for the disk
  377. ;               selection menu. Crashes sometimes.
  378. ; v5.03: 960204 New GUS code from Ulrich. Trying to fix directory changing.
  379. ; v5.04: 960418 New FDC code from Ulrich.
  380. ; v5.05: 960530 Final version of FDC code. Bug fix from Brad Thomas. Updated
  381. ;               documentation.
  382. ; v5.06: 960??? SB code from Ulrich.
  383. ; v5.07: 960805 Updated documentation.
  384. ; v5.08: 960907 Use SB_Pause and SB_continue where appropriate. SB_Sound
  385. ;               v1.04 added. New setup item DMAblocklen.
  386. ; v5.09: 960923 Added French keyboard patches from Thierry Dymon
  387. ; v5.10: 960929 ROM 5 and 6 can now be loaded, and ROM 7 is optional, too.
  388.  
  389. Versions released by Ulrich Doewich:
  390.  
  391. ; v5.20: 970421 Sorry.. didn't keep a detailed, _separate_ log of what
  392.                 changed from build to build. Please refer to the
  393.                 WHATSNEW.TXT file and the source package for the complete
  394.                 low-down.
  395.