====================
VirtualT Release.txt
====================


This file lists the changes and additions for each of the versions of VirtualT since v0.3

=====================
v1.7 4/7/2014
=====================

1.  Fixed bug with deleting a .CO file where the deletion length wasn't including
    the 6-byte CO header, causing memory corruption.

2.  Fixed the IDE Editor's undo function.

3.  Made the IDE's undo local to each file vs. being a global entity.  This allows
    undo to be specific to the file being edited.

4.  Fixed a bug in the linker to detect link addresses that are out of range.

5.  Added TDock Video emulation support (and TDock I/O general processing).

6.  Started adding documentation for the IDE / Assembler / Linker.

7.  Updated the GNUMakefile to include libjpeg and libpng.

8.  Added support for Steve Adolph's QUAD Model 100 128K Banked RAM module.

9.  Added right-click menu support to easily change QUAD bank when enabled.

10. Updated linker so it back annotates listing files with actual addresses
    determined during the link step.

11. Made updates to the assembler to push unresolved equations into the object
    file and added an equation evaluation function to the linker.  This allows
    the linker to resolve addresses that consist of a relocatable address
    location (i.e. label) embedded in an equation, such as Label+12h.

12. Added support in Linker Script for segment addresses based on known symbol
    values (e.g. from an absolute address in an ASEG) and also using simple
    equations involving basic math (+ - / *).

13. Modified the IDE's Find Dialog so that when it doesn't find the requested
    text, it displays the error message in the Find Dialog instead of using
    the FLTK fl_alert routine.  Using the fl_alert causes the main VirtualT
    emulation window to come into focus instead of the IDE window, plus showing
    the error in the Find Dialog box provides opportunity to modify the search.

14. Modified the non-T200 LCD emulation routines when in 2.4Mhz emulaiton mode
    to more closely reflect the actual delay introduced by the LCD hardware.

15. Updated IDE Tab control to deal with more tabs than can fit on the window.
    Tabs are now clipped and a "More Files" icon is displayed to allow selection
    of off-screen open file windows.

16. Added linker script PRELINK and POSTLINK processing to allow defining symbols
    based on #if / #else / #endif C preprocessor style statements.  Also added
    ability to display link messages using "echo" for displaying things like
    program sizes and addresses, etc.

17. Added support for NUM lock key so T200 Calculator will work.

====================
v1.6 April 24, 2014
====================

1.  Fixed issue with remote interface simulated keystokes where the keys wouldn't
    always be regconized.  There was a race condition between the remote thread
	and the simulation thread.

2.  Completed the 8085 relocating linker!!  This was the primary reason for this
    release in fact.  Many, many changes to get to this point.

3.  Modified the IDE with new tabs for selecting the file to edit.  The old tabs used
    the standard FLTK tab control and were really ugly, plus had an issue with tab
	width calculations with regard to mouse presses to select the tab.

4.  Updated GNUmakefile to auto-generate dependencies and use wildcard search for
    selecting source files vs. specifying everything manually.

5.  Added feature to FX80 printer emulation to perform auto word-wrap selectable via
    the printer setup page.

6.  Modified CPU speed indicator to show 2 decimal places precision for speeds less than
    10 MHz.

7.  Made the FX80 Virtual Paper display resizeable.

8.  MAJOR modifications to CPU Registers window to implement program tracing with 
    scrolling, configurable font sizes and trace depths, auto-redraw vs manual
    redraw button, saving of breakpoints and window position when VirtualT terminates,
    resizeable window, saving trace data to a file, keyboard shortcuts.
    
9.  Added saving and restoring of opened windows when VirtualT is shutdown and restarted.

10. Now reports error if REX / ReMem memory cannot be loaded / saved.

11. Updated REX emulation to support REX3 for PC8201 state machine changes.

12. Created a Watch Variables Widget and added it to the Memory Editor Window.  This
    will also be used in the IDE debugger.
    
13. Added options to Memory Editor Window to use black background with color coded text
    and the ability to set the font size.

14. Started converting the preferences file to use preference groups to help organize
    the growing list of entries in the file.

15. Completed the "-nogui" option under Linux and added console interface control.  This
    provides an identical interface to the existing socket / telnet control interface.

16. Added emulated NADSBox (minimal implementation so far) and controls in Peripheral
    Setup to connect it to the serial port.

17. Added TPDD Server (NADSBox) packet log viewer window to Tools menu.

18. Added support for NEC PC-8300 emulation.

19. Started adding support to Disassembler window to disassemble things other than the
    main ROM.
    
20. Added color syntax hilighting, Load and Save, and Find operations to Disassembler window.

21. Modified serial.c to map 75 baud = 57600 and 110 baud = 115200.

====================
v1.5  July 9th, 2011
====================

1.  Added REX memory module emulation.

2.  Added ability to set custome LCD / Bezel colors.

3.  Updated makefile to compile properly under Mac OSX.  The FLTK library must be built
    separately and installed (via 'make install') prior to compiling VirtualT

4.  Added new File Browse dialog boxes with nicer look and more features.

5.  Modified the directory structure organization under Mac OSX to be the same as the
    Linux and Windows versions:
    
        Working Dir
             |
             +--M10
             +--M100
             +--M102
             +--ROMs
            etc.
      
6.  Updated emulation timing control to provide more accurate timing to support sound
    generation routines.
    
7.  Added sound support under Windows.  This is still very early stage and needs work as
    the sound is "choppy".  This is caused by rapid changes to the sound that occur during
    the middle of a "sound buffer" being played.  The code needs to be updated to detect
    these changes and deal with already-queued buffers.
  
8.  Added mouse detection events to main window to allow point and click, double click, 
    and right-click actions.
   
9.  Reworked Assembler / IDE interface.  IDE doesn't seem to work under OSX yet.

10. Completed the Assembler and have about 90% of the linker done.  The assembler will
    actually geneate output files given a single input file.
    
11. Added Socket Interface configuration dialog box.

12. Added telnet interface mode to socket interface.

13. Added a shortcut to the socket interface to allow setting register values using a simple
    "a=4", "hl=12h" syntax.
    
14. Added detection of hex values via trailing 'H' or 'h' to socket interface.

===============================
v1.4  Never officially released
===============================

1.  The COM data log on the Peripherals Window was not allowing selection of data to show
    time delta between 2 bytes when the top line in the window was not the first line of 
    data.  This has been corrected.  Also The last line of data would not be displayed if 
    the number of lines that would fit in the window was odd.  This has also been fixed.

2.  Fixed a bug with cold boot in T200 emulation mode.

3.  Added Model T File Viewer window.  This window allows selection of files in the Model T
    directory and provides details regarding the storage location for the directory entry
    and the actual file contents.  Also provides a view of the file's contents.

4.  Added fullscreen display mode with automatic adjustment of multiplication factor.  This
    feature was added to support sub-notbook platforms with smaller display resolutions that
    cannot display full window borders well.

5.  Added option to reload the Option ROM image.  This is useful when developing a new OptROM
    image and using VirtualT for debugging.

6.  Modified the Memory Editor's Load and Save features so they properly address the absolute
    memory addresses to RAM vs. relative offsets from the beginning RAM address.

7.  Fixed socket interface break on memory write function so an LXI H,XXXX doesn't cause a
    breakpoint at address XXXX.

8.  Added socket interface shortcuts for the key command (k) and for the "enter" keyword (cr).

9.  Modified hexadecimal input for GUI and socket interfaces to accept HEX formats using the
    "04h" notation or for values that contain 'a' through 'f', simply using "5d" notation.
    It is case insensitive for both the hex values and 'H'.

10. Fixed timing race condition on some platforms with the socket interface 'key' command 
    where the first keystroke would sometimes be dropped.
    
11. Modified remote socket interface to support telnet character based transfer and line endings.
    Added "-t" comand line option to enable telnet protocol.

12. Modified MacOSX working directory detection and ROM installation to automatically detect
    the location of the ROMs directory within path of the application bundle.
    
13. Modified the MacOSX maintenance update timing to provide faster execution speed during
    FLTK drawing updates to the LCD.

 

=======================
v1.3  September 24 2008
=======================

1.  Fixed a bug with the Remem Overrides Rampac checkbox where it wouldn't properly override
    the Rampac operations.

2.  Fixed a bug when changing from Rampac Only to ReMem + Rampac memory mode where the Rampac
    RAM file was not being saved properly.

3.  Fixed issue while loading .BA files from the "Load from HD" feature.  During the relocation
    of the "unsaved BASIC program", .DO and .CO files could potentially be corrupted due to
    an error in memory pointer calculations.

4.  Added features to both the "CPU Registers" and the socket interface debugger to allow
    stepping over function call (CALL, CZ, CNZ, etc.) and RST statements.  Performing
    multiple "step over" operations currently does not properly break at any defined breakpoints.

5.  Added a feature to both the "CPU Registers" and socket interface debuggers to enable /
    disable debugging if ISRs (Interrupt Service Routines).  If the ISR debugging is disabled,
    the debugger will not stop / halt in the middle of an ISR, and performing single step or
    step over functions will not "step into" an ISR.  The ISR will complete and the single 
    step function will return control after the RET, RZ, etc. instruction has executed.  Also
    added a shortcut key for single stepping ("s") in the socket interface.

6.  Fixed a bug with Tandy 200 serial port TX_EMPTY signal handling that caused high-speed
    transfers to overwrite data prior to being sent to the serial port.

7.  Fixed an issue with printer initialization when opening the "Peripherals" window that could
    cause it to crash the program sometimes.

8.  Fixed a race condition with socket port creation vs. socket interface initialization that
    would frequently cause the socket creation to fail under Windows. 

9.  Fixed error displaying COM port list from the COM Port Setup tab under the "Host Port"
    selection.  The list was incorrectly displaying multiple COM ports as a single entry.

10. Added support for setting the time in the clock chip for all models.  Also added a tab on
    the "Peripheral Setup" window for configuring the clock operation.  Emulated "time" can
    now be different than the host's system time.

11. Fixed the "Peripheral Setup" Ok button so it doesn't improperly give an error message that
    the COM port could not be opened, or rather, re-opened.


==============================
v1.2  Never Offically released
==============================


===================
v1.1  April 16 2008
===================

1.  Fixed a bug with Rampac Only emulation.  When this Memory Configuration was weleted, 
    the I/O operations were returning without performing any action because they were 
    checking for a NULL ReMem RAM pointer.

2.  Fixed issue with Rampac and Base Memory file saving when switching the memory configurtion
    from Rampac to ReMem + Rampac mode.

3.  Added option to control whether ReMem's "Rampac Emulation" should override the Rampac
    emulation mode.  When ReMem + Rampac mode is selected, ReMem can be configured to emulate 
    the Rampac access method and write to ReMem memory space.  The Memory Setup dialog now
    provides checkbox to control if Rampac accesses are directed to ReMem memory space or to
    Rampac memory space during this condition.

4.  Added LPT Device emulation support and configuration options on the Peripheral Setup dialog.
    Added printer icon to main window to show printer status and provide a Popup menu
    for printer control.

5.  Added Emulated printer support for printing to Files and Host Port devices.

6.  Added Epson FX-80 printer emulation with output to different "Papers".  Current papers
    include Postscript files, "Virtual Paper" (FLTK Window), Windows Printer, and Linux 'lpr'
    command line printing.

7.  Fixed issue with default (cold boot) year setting on M10 and PC-8201a models.

8.  Added an option to the COM emulation to loop back DTR to DSR and CTS to RTS to emulate a
    "loopback" cable connected to the serial port.  This option can be enabled from the COM
    setup tab.

9.  Fixed issue with Serial emulation on Linux in Base Memory emulation mode.  Received bytes
    were not trigginering the INT6.5 interrupt.

10. Fixed bug when cancelling file save operation that caused the program to crash.

11. Added support for Kyocera KC85 emulation.

12. Fixed bug with "Make OptROM Read/Write" option to save write operations between
    bank switch operations.

13. Added FLASH Program / Erase state machine to ReMem emulation.  State Machine supports
    Programming, Chip and Sector Erase, CFI Query, Autoselect, and Reset commands.  Does
    not support sector protection.


======================
v1.0  February 10 2008
======================

1.  Fixed ReMem emulation in both Normal and MMU modes.  Memory mapping now consistent with
    an actual ReMem.  Emulation supports only the latest ReMem FW version (64, 65, 66).  In 
    MMU mode, both sector access and direct memory access work properly.  Also fixed some bugs
    with the the Rampac emulation.

2.  Added configuration page for ReMem Map display and setup.

3.  Added support for M10 Emulation.

4.  Added breakpoint capability to CPURegs window.  Up to 4 breakpoints can be specified and
    enabled or disabled.

5.  Added Remote control interface via sockets.  The socket interface is enabled via a command
    line switch to specify the socket port, such as "virtualt -p 20000".  The protocol is
    simple text command and response with async text messages sent for breakpoint and otional
    screen output messages.  See Help for full details.

6.  Added serial I/O support under Linux.  The current implementation has a few "hard coded"
    port names in the port list, but allows the user to specify an "Other Host Port" name to
    specify the serial device.

7.  Modified the main emulatin loop so it uses fewer CPU cycles.  Previous versions consumed
    up to 100% CPU cycles causing heat issues and reduced battery life on laptops.  Added
    new Speed menu selections to allow finer setting of emulation speed vs. CPU utilization.

8.  Fixed a bug with the emulation of interrupts and with the extended opcode DSUB flags.

9.  Added a vt_client project / application to communicate with VirtualT socket interface 
    using a very simple command line interface.

10. Added a "Cold Boot" option to the Emulation menu.

11. Added content to the Help system.

12. Transitioned the Windows development environment to Visual Studio 2005.  The project files
    are no longer compatible with Visual Studio 6.

13. Added a feature to patch the ROM on load to show VirtualT version in the MENU. This can be
    disabled in the "Memory Options" menu.
    
14. Added auto detection and creation of missing emulation directories.  For new installations,
    all emulation directories will be created and ROM images copied from the ROMs directory.
    
15. Patched all ROM images with Y2K fix.


===================
v0.8  May 11 2006
===================

1.  Added the beginnings of an Integrated Development Environment.  The IDE included a project
    manager that supports "Tree" browsing of source files and a project settings dialog for
    specifying assember and linker options.  Also has a multi-window edit capability using a
    very simple text editor.  The editor will be expanded in a future release and will also
    include features for source level debugging, such as display of breakpoints and current
    execution location.

2.  Added an 8085 assembler, but no linker.  The assembler gernerates ELF format .obj output 
    files for use with the linker to be released in a later version.  The assembler is 
    basically useless without the assembler, but is included in the project.

3.  Added the beginnings of the Help system, although no real help info available.

4.  Maybe other bug fixes but I have forgotten because I am writing this 1 year after release.


===================
v0.7  April 20 2006
===================

1.  Fixed memory access issue in M100/M102 modes when not in ReMem emulation mode.


===================
v0.6  April 17 2006
===================

1.  Added CPU Registers window to the Tools menu.  This window allows viewing / modifying of
    8085 CPU registers in addition to simple stop/step/run operations.  It is not intended as
    a full blown debugger, but rather as a tool to be used along with a debugger to be added
    later.

2.  Completed ReMem emulation support.  VirtualT emulates rev 4 of the ReMem firmware.  All 
    features of ReMem are emulated inclulding Rampac support.  See the ReMem documentation for
    operation of the ReMem emulation.

3.  Added Load and Save operations to the Memory Editor Window. 

4.  Added MSPLAN to the T200 ROM and support for running option ROMs from T200 emulation mode.

5.  Changed the name of this file from readme.txt to release.txt.


===================
v0.4  August 3 2005
===================

1.  Added a directory structure to deal with multiple emulation platforms.  Each model has its
    own directory.  Each directory contains the ROM and RAM files for emulation of that specific
    model.  This directory structure must be maintained since the emulator searches for the
    ROM file using this tree structure.  The directories are:

    <root>
     |
     +-- M100
     +-- M102
     +-- T200
     +-- PC8201

2.  Option ROMs are now loaded based on the model being emulated.  Old Option ROM selection
    will be lost and must be re-selected.

3.  Support for the M102, T200, and PC8201 have been added.  Loading and saving BASIC files
    for the PC8201 will cause an error that will "crash" the emulation and dump the RAM contents.
    The BASIC tokens for the NEC machines are different than the Tandy machines and the tokenizer
    has not been updated yet.

4.  Partial support for ReMem and Rampac have been added under the "Emulation,  Memory Options"
    menu item.  Emulation is not fully supported yet and selecting anything but "Base Memory"
    will cause unexpected results.

5.  A HEX memory editor has been added in the "Tools,  Memory Editor" menu item.  The editor is
    fully functional except the "Load" and "Save" options under the file menu.

6.  The "Tools,  Disassembler" has been updated to disassemble the M102, T200, and PC8201 ROMS.

