This seems to be a fairly decent emulation of the TRS-80 Model-100 portable!

Not sure where it came from ... I've never seen source code or some other
things mentioned in the docs.

The copy I had on my site appeared to have suffered from  ~long filename~
conversion somewhere along the way (names >8.3 get changed to: 6~n.3) ...
This caused several things to work incorrectly.

I have made changes to correct this, and keep it from happening again:
  VIRTUALT.EXE  changed  to: T80M100.EXE (makes more sense to me)
  VT_CLIENT.EXE changed  to: CLIEM100.EXE
  *.HTML  files changed  to: *.HTM
  *ROM.BIN files changed to: *.ROM
  Application and .HTM files patched to reflect above
No other changes were made
Note1: These changes were made by direct patch to the original distribution
 files. I have not looked at source code - so I have not included it here!
 (see VT.PAT for details on what was changed)

Note2: The ROM image origionally provided with VIRTUAL_T differed slightly from
 actual ROM content extracted from three different TRS-80 Model-100 systems
 (which all matched, and seems to work equally well in this emulator):
   Address VIRTUAL_T Actual
     5A53      32'2'=31'1'
     5A56      30'0'=39'9'
 This appears to be the "Y2K patch" described below. I don't think this gives
  an accurate "look and feel" for the Model-100 (It could never display dates
  above 1999.
 I have therefore patched the ROM images back to reflect the actual system ROMs.
  For anyone who actually wants the Y2K patch, I have provided: T80M100P.EXE
  which will patch the .ROM images either way!
 A couple of the ROMs don't appear to have the same code to display the year,
  and don't seem to be already patched - these might show strange dates!
  and T80M100P doesn't recognize them!

Note3: I also recommend you UNCKECK:
  Emulation -> Memory Options -> Patch ROM on load to show T80M100 version

- Dave Dunfield   -   https://dunfield.themindfactory.com


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

====================
T80-M100 Release.txt
====================


This file lists the changes and additions for each of the versions of T80-M100 since v0.3

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

1.  Fixed issue with remote interface simulated keystokes where the keys wouldn't
    always be recognized.  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 T80-M100 terminates,
    resizeable window, saving trace data to a file, keyboard shortcuts.
    
9.  Added saving and restoring of opened windows when T80-M100 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 T80-M100

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 T80-M100 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 "T80-M100 -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 T80-M100 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 T80-M100 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 generates 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.  T80-M100 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.

