IBM 1401 emulator (B1401) General notes
------------------------------------------------------------

News:-
Diagnostics tape does a lot now, but finally dies with invalid opcode "0"


Known bugs:-
* Tape write output not fully implemented
* MCE instruction is incomplete
* Diagnostics tape reports errors involving ADD/SUBTRACT, so there is likely
  some problems in the arithmetic area.
* Check boxes on main console don't respond in turbo mode. Workaround:-
  Click STOP, set checkbox, then click START.
* Various intermittent fatal errors sometimes occur.
  The cause is not known, but re-running the failing process generally works.
  (this may now be inadvertently fixed)


Things to do:-
* Script variables
* Script access to all controls (stops, switches etc)
* Get more of the available card and tape programs to run/assemble
* Identify & fix errors identified by tape diagnostics program:-
  Especially Add/Subtract problems
  Move Characters and Edit
* Start/Resume, Step/Run and Fetch/Excute logic needs tidying up
* So does exception handling and error message passing.
* Finish tape write function



Summary of Changes for Version 1.5
------------------------------------------------------------
* Small bug in Resume logic fixed
* Bugs in Move Characters and Suppress Zeros instruction fixed
* Move Characters and Edit instruction partially implemented:-
  CR/- blanking on positive value not yet done
  Expanded Print Edit Feature not yet done:-
    Asterisk Protection
    Floating Dollar Sign
    Sign Control Left
    Decimal Control
* Script commands to modify core storage added:-
  CORE CHAR[addr]=value
  CORE MARK[addr]=ON|OFF
  CORE SIZE=value          replaces "CORESIZE value"
  These commands enable control of the tape diagnostics program,
  eg. To enable heading print: Core Char[1252]=1
* Branch on Indicator instruction options added for print storage feature:-
  "P"=Printer Busy
  "R"=Printer Carriage Busy
  These always respond as "Not busy".
* WRP instruction - Write Read and Punch implemented
* SPF instruction - Start Punch Feed implemented (Doesn't do anything)
* Script command DUMMYCARD=string added. Makes the card reader appear to have
  an infinite supply of cards punched with the specified string.
  To disable, use a null string: DUMMYCARD=''
  (Diagnostic now also punches 3868 error cards)
  Added to get the tape diagnostics to continue without error.
* Script command ZAP TAPEn[addr]=value allows the mounted image of a tape to be
  modified. The "addr" argument is the absolute offset into the tape file.
  Allowance must be made for header bytes, escape sequences etc.
  Use the TDMP program to determine offset values.
* TDMP.EXE program displays tape file contents (currently hardcoded to show only
  D1401TP.BCD) as ASCII. All bytes are shown, including header bytes, escape
  sequences etc, which will appear as gibberish.
* Instruction trace shows mnemonic codes (except for tape)


Summary of Changes for Version 1.4
------------------------------------------------------------

Bugs fixed:-
* Single stepping after reset did not work
* Reader Window "Deck" and "Load" buttons now enabled only when valid
* Usage matrices in Char Window were missing the last line
* Various other minor buglets fixed
* Now reads .BCD and .MT tape formats correctly


New features:-
* Selecting single step mode automatically enables instruction trace
* Tape operations (mostly) operational
* Facility to manually define the character map used by the card reader.
  (not yet operational)
* Uppercase option on DECK command (for lowercase source - not much use)
* Various other minor enhancements
 


Summary of Changes for Version 1.3
------------------------------------------------------------

Bugs fixed:-
* When a script was running, a "deadly embrace" condition often occurred,
  causing both the emulator and the scripter to be suspended, with each waiting
  for the other to start (which won't happen).


New features (scripting):-
* The initial script to be executed at start up can now be any name, rather
  than only "PowerOn.OCL". This name is specified on the configuration screen
  opened by the "Options" menu item.
* Scripts may now pass parameters to called scripts. These are available within
  the called script as "&1" to "&9" eg: DECK &1
  (&0 contains the current script name)
* Where the syntax requires a string, a simple string concatenation expression
  can be also be used in most cases. eg: DECK 'fred'+'.CRD'
* Some changes in syntax have been made - older scripts may need adjustment:-
  * SWITCH S ON|OFF replaces SWON S and SWOFF S
  * EXIT replaces QUIT
* New script commands added:-
  * BCOLOUR nnnn             Sets script window colour
  * TCOLOUR nnnn             Sets script text colour
  * HCOLOUR nnnn             Sets hyperlink text colour (Display "Option" items)
  * TURBO ON|OFF             Sets turbo check box on main window
  * IARCheck aaaa message    Checks that the emulator's Instruction Address
                             Register (IAR) contain the specified value (aaaa).
                             If not, an error dialog is shown. This dialog also
                             displays an option message string (message).
                             This will simplify error handling within scripts.
* The following colour constants can be specified in the above colour commands:-
  Black, Maroon, Green, Olive, Navy, Purple, Teal, Gray, Silver,
  Red, Lime, Yellow, Blue, Fuchsia, Aqua, LtGray, DkGray, White
* Numeric values in scripts may be specified in hex by preceding them with a
  "$" sign. eg: BColour $FF0000  (sets script display window to Blue)



