Changes log for EmuXL
---------------------

Version 0.3.4 (first TT-compatible release)

Most changes concern improvements in the emulator core, not the user 
interface.

- Bugfix: no more deadlocks when calling GEMDOS device without a 
  filename (like DIR "F:" from Turbo BASIC XL).
- New: debug info may be displayed or not depending on your selection.
- Change: "init" and "quit" boxes removed from the GEM part.
- New: some size optimizations, incl. moving a bunch of data from 
  DATA to BSS segment, removing obsolete and discontinued code etc. 
  Result: the PRG file is about 5k shorter :)
- New: preliminary code for STE/TT DMA sound support (sooner than I 
  thought!)
- Bugfix: while loading system components a garbage file handle was 
  sometimes passed to the GEMDOS. Fixed.
- New: memory management rewritten. It is now not possible to overwrite 
  ROMs anymore.
- New: CHANGES file turned upside down. :-)
- New: README.DOC corrected by a genuine English gentleman (MSG/RG). ;-)
- Bugfix: standard mathpack is selectable again.
- New: multitasking support; the Emu is optionally able to run as a 
  system task under MiNT/MultiTOS.
- New: VBL interrupt rate now always 50 Hz regardless of whether the 
  Falcon bus is accelerated or not.
- Bugfix: joystick ports are now swapped properly.
- Bugfix: fixed improper Mfree() calls at exit.
- Bugfix/workaround: Emu now starts under Geneva 5 if MiNT is loaded.
- Change: memory bank switching code optimized, the Turbo BASIC XL runs 
  faster.
- New: introduced various TT compatibility code.
- Update: debug info will now display the mnemonic for the opcode.
- Update: docfiles.
- New: GRAPHICS 14 (160x192/2) implemented. 4 (out of 9) colour 
  registers, i.e. COLPF0, COLPF1, COLPF2 and COLBAK are now mapped to 
  the hardware.
- New: GRAPHICS 6 (160x96/2).
- Bugfix: random number generator now really initialized with different 
  value at each emulator restart (not at "Continue" though).
- New: aborted emulation can be continued without a warm or cold start.
- Bugfix: in the HiSoft's startup code; now the stack no longer 
  overlaps the BSS segment.
- Change: GTIA -> Videl conversion table rewritten, colours should be 
  closer to the original computer.
- New: playfield 1 ("ink") colour in GRAPHICS 0 and 8 now calculated as
  COLPF1 = (COLPF1 & $0f)!(COLPF2 & $f0). Hence text in the GR.0 got 
  light blue now (was white before).
- Bugfix/workaround: palette refresh now forced after "Continue".
- New: option for selecting hue calculation for playfield 1 in GR.0/8 
  (see above).
- New: GRAPHICS 7 and 15 (160x96/4 and 160x192/4 respectively) 
  implemented.
- New: Turbo BASIC XL Compiler works again :)
- Bugfix: the Antic memory scan register handled so that there should 
  be _really_ less junk on the screen on odd Display Lists.
- New: monitor type is now written to the EMU.SET file.
- New: proper contents of the "Video mode" option on a TT030.
- Bugfix: wrong reference screwed up a 32-bit address on TTs causing 
  bombs and memory violations when Emu was ran from the FastRAM.
- New: proper screen redraw on return to GEM on TT030.
- Change: "XBIOS clean" way to manipulate palettes on Falcon and TT 
  (Vset/getRGB and Eset/getpalette respectively).
- Change: self-termination (e.g. illegal instruction state) will cause 
  the debug info to be displayed anyways, even if it is disabled.
- Bugfix: menu bar refreshed properly at emulator exit under TT TOS.
- New: added a set of routines to handle TT shifter video RAM structure
  (same as on Falcon, but 320x200 instead of 384x240).
- New: on AES older than 3.30 all buttons invoking popup menus get 
  disabled.
- Change: "Restore & restart" function removed as not necessary 
  anymore.
- Bugfix: added forgotten routines for over/underscan in GRAPHICS 7 and 
  15.
- Bugfix: missing clr might cause garbage on the screen in GR.7/15.
- Change: interrupt routines simplified and resorted. The system load 
  in "System task" mode should be now much lower.
- Bugfix: no more passing garbage to the Antic memory scan register.
- New: Antic emulator parameters more closely adjusted to the TT video
  hardware (when ran on TT, that is).
- New: on MiNT the Emu installs handlers to catch signals and exit 
  cleanly (only in System Task mode).
- Change: passing interrupt signals to the CPU core changed. The 
  current way is slower, but lotsa more clean and safe.
- Bugfix: GEMDOS device should now always display proper number of free 
  sectors for each filesystem (where "sector" = 1 kB).
- Change: startup code no longer examinates _MCH cookie. _VDO is 
  checked instead.
- Change: removed internal variables holding CPU (6502, not the 
  host's 68030) vector addresses.
- Change: slight improvements in SEI/CLI/SED/CLD and interrupt-response 
  code.
- Bugfix: bottom screen border wasn't correctly drawn on TT030.
- New: minimum screen resolution to start Emu is now 640x200. Minor 
  changes in the RSC file to look better in low resolutions.
- New: no longer checking _CPU cookie to get CPU type information.
- Change: now starting the emulator in supervisor mode when not as 
  "System task" (more legitimate than previous solution).
- New: no longer using _hz_200 as an internal timer. CPU emulation time 
  measured on its own.
- New: sanity check for absence of the BASIC interpreter on the disk.
- New: SpartaDOS X cartridge emulation. Several changes reflecting 
  that. Forced sync between TRIG3 ($D013) and its shadow GINTLK 
  ($03FA) to prevent hangs (unknown reason, possibly due to lack of 
  true VCOUNT/WSYNC).
- Bugfix: OPTION key (F9) now really disables the BASIC interpreter 
  when held down at startup. Improvements in handling PIA registers.
- New: SELF TEST ROM now properly driven by PORTB bit 7.
- Change: abandoned a shortcut in ASL/LSR/ROL/ROR instructions 
  (compatibility problems).
- New: VCOUNT now doesn't exceed 155 :) Partially synchronized with 
  VBL to reduce interrupt problems (full syncing not possible ATM).
- New: virtual diskette can be now "physically formatted" (i.e. 
  totally zeroed).
- Bugfix: references to PDVREG ($D1FF) might cause emulator crash 
  sometimes.
- Change: inactive button "Video display" removed with all the 
  inventory behind (yeah, there's some code behind each element, even 
  if it is inactive). "Video mode" renamed to "Video display".
- New: 320x240/16 mode (25 MHz, 50 Hz) for Falcon VGA (better for 
  accelerated Falcons; on non-accelerated makes the emulator slightly 
  faster).
- New: added ATR2XLD.TTP to make possible to quickly get access to 
  disk images in ATR format. XLD.DOC update.
- Change: several size optimizations.
- New: improved flag evaluation --> slight speedup.
- New: addition/subtraction optimized --> slight speedup.
- New: `burst I/O' mode for GEMDOS device implemented. Transferring 
  data from/to a GEMDOS disk significantly (about 20 times) faster.
- Bugfix: reading a directory from the GEMDOS device sometimes 
  returned filenames padded with superfluous characters.
- Change: corrections in RSC file to look better when vector font is 
  used as system font.

Version 0.3.2

- Bugfix: MyDOS *finally* loads the DUP.SYS :)
- New: joystick control implemented (joystick port - left port on MSTE/TT - 
  mapped as joystick 0 by default)
- New: ST mouse acts like attached to a real XL computer.
- New: further DMACTL functions implemented:
  - no display (DMACTL = $20)
  - underscanned display (32 columns, DMACTL = $21)
  - normal display (40 columns, DMACTL = $22, default)
  - overscan, 48 columns (DMACTL = $23)
- New: Joystick ports can be swapped on user's selection.
- New: Atari BASIC may be completely disabled at user's selection
- New: "Save preferences" and "Autosave preferences" added.
- New: GEMDOS filesystem and standard DOS may be now used at the same time.
- New: GEMDOS filesystem now assigns separate 'default' directories to each
  unit.
- Bugfix: SysInfo now correctly reports the state of the external cartridge.
- Bugfix: a typo in JMP (abs,X) corrected.
- New: CPU emulator optimized, everything a bit faster, at least on 68030 (I 
  have no clue what effect does it take on 040 considering its larger cache).
- New: ANTIC emulator optimized considering memory writes (about 10% less).
- New: GEMDOS filesystem device returns correct file length in directory and 
  number of free units in directory listings.
- New: memory usage reduction: now the Emu takes 512k less than before.
- Bugfix: INC abs for I/O area should now work. According to my backups, it was 
  an ooooold bug and SysInfo should never work with this. But it did until I 
  reallocated some tables. Very strange... :)
- New: some docfiles...
- New: the full 64k now accessible for programs.
- New: the emulator gets very restrictive on illegal opcodes. Encountered one 
  it now returns to the GEM (debug reasons).
- New: Turbo BASIC XL now works. Slow though...
- Miracle: Amaurote (a game) works also.
- New: Antic memory scan register is now initially set to the nearest 4k block 
  boundary, not to the bottom of the RAM. It takes some more CPU time, but you 
  should see less garbage on the screen when things go to custom display list.
- New: some more stuff gets reset when you press F10. Especially DMACTL 
  register.
- Bugfix: NTSC won't be reported anymore; it didn't make sense, coz PAL 
  computer is emulated.

Version 0.3.1

- Important changes in CPU emulator: no more cache manipulations, also all 
  processors run the same code again. This is an effect of changing the way of 
  passing interrupt signals to the CPU emulator. For 030 it works at the same 
  speed as before, 040/060 users however may notice some speedup.
- FastRAM buffer thing removed as unefficient.
- Also some code went away from interrupt service routines, which takes effect 
  in a slight faster Antic emulator.
- Some optimizations in CPU emulator (CIRCLE.BAS seems to run 10% faster now).
- Reset (F10) now closes all files opened by GEMDOS on Emu's request.
- GEMDOS filesystem device now correctly reports "file not found" condition as 
  error 170, not 146 ("no function in device handler") as before.

Version 0.2.8

- A fix in interrupt handler for 040/060. Additionally it may take effect in a 
  slight speedup for these processors.

Version 0.2.7

- "Monitor type" option changed to "Video mode". The code behind is less 
  intelligent, but at least works...
- Stack correction bugfix in the GEM part
- Due to permanent compatibility problems now using hardware directly to switch
  resolutions.
- Fake VCOUNT register implemented, graphic mode switching much faster now, also
  the KEYCLK patch removed from the system.
- VGA video mode tuned to be exactly 31.250kHz/50Hz. The total screen size is 
  512 pixels per 625 lines, as in broadcast PAL monitors. It may produce 
  better display on some monitors (e.g. Microvitec 4235), on some other it may 
  be less proportional than before. Still using 32 MHz Videl master clock, my 
  monitor doesn't like anything above 320x240 with 25 MHz, sorry!
- Display List overflows won't crash the Falcon anymore.
- Fixed a bug in virtual disk routines - a part of the header was missing while
  flushing the buffer back to the disk.
- "Falcon filesystem" name changed to more universal "GEMDOS filesystem"
- GEMDOS filesystem driver now supports wildcards in filenames (not in paths 
  however, unlike SpartaDOS)
- FASC function added to the set of 68030 FP routines
- Fixed a silly bug in GEMDOS filesystem driver, that could cause unstable 
  behaviour sometimes.
- GEMDOS filesystem driver now supports reading directories. Due to GEMDOS 
  limitations, only one channel may be opened for a directory at a time.
- Besides of unit numbers 1-9 (for the GEMDOS filesystems), now letters A-I
  can be specified, like under SpartaDOS X.
- The minimal screen resolution to start Emu is now 640x400.
- Some optimizations in Antic emulator.
- PDVREG now fully implemented (don't POKE anything there, its for XL OS)
- CHRCTL implemented (try POKE 755,6)
- Diplay List DMA control partially implemented. POKE 559,0 now disables the 
  screen display, POKE 559,34 enables it again. Disabling DMA makes CPU 
  emulator faster about 20% (depends on a graphics mode).
- An important rewrite in the interrupt handling. Keyboard should work much
  better now.
- On multiuser setups only root can execute the Emu and only when GEM AES is 
  active.

Version 0.2.6

- Other bugfixes in FFS driver, should work stable now (but who knows)
- Bugfix in resolution switch. Well, Videl Inside II is pretty cool if tolerates
  such things... ;)

Version 0.2.5

- When the FFS driver was enabled, each F10 caused a very strange, semi-cold 
  system restart. Fixed. Unfortunately, just after version 0.2.4 was released...

Version 0.2.4

- Video switcher forced low-res monitor to VGA resolution. Fixed.
- FastRAM buffer for video emulator implemented.
- Memory allocation table now initialized to zeroes at startup.
- Changes in RSC file (3D-popups, why not?), dialog boxes look decent (not in 
  MagiC though, but it's not my fault...)
- Few further optimizations in video-related routines
- Internal FP routines added.
- A small 040/060 related fix
- Fixed the annoying bug that made some keypresses be understood as
  key releases (visible as "shift-lock problem")
- "Restore & restart" function added.
- README.DOC made decent.
- Few optimizations done in comparisons and binary subtraction.
- Another bugfix in CPU emulator (how the duck it worked with wrong ADC #$xx 
  ???)
- Disk I/O rudiments implemented (virtual XLD drives)
- Falcon filesystem access basics implemented
- No more instruction cache flushes on 68030, single entries are invalidated 
  now. On 040/060 cache is not touched at all.
- Some optimizations in absolute addressing modes and INC/DEC instructions 
  (*sigh*)
- Emu's code exceeded 64k in length
- Fclose() now forced for all files still open after returning to the GEM part

Version 0.2.3.

- A bugfix in keyboard handler, Control key now recognized.
- Code cleanup - debug and obsolete stuff removal.
- Few optimizations in VBL handler.
- CLI and RTI instructions are emulated differently on 040/060.
- Bugfix in resolution switcher, now it should work OK with external clock.
- Popup-menus in config dialogs implemented.

Version 0.2.2

- first public release
