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)