Mirador Software, Inc. PC8800 Emulator V2.38 Release Notes 06/01/2021 CCR This file contains a revision history of the product, and may include information on new features and commands not present in the User's Manual. Changes with V2.38 Fixed problems running in full screen mode on Windows 8 and higher. (Affects Windows version only.) Changes with V2.37 When connecting to a host system over a network (tcp/ip), the terminal character set was being forced to Lowercase (ascii). This caused a problem for some customers. Accordingly, this "feature" was removed. (Affects windows version only.) For CSR 126 and Fisher custom versions only, the functions used to read the Windows keyboard scancode map were updated to avoid access problems under Windows 7 and following. Changes with V2.36 Modified the "Secure application" function to prevent the user from exiting the application or minimizing or moving the main window by using the application system menu or system minimize/close buttons when the application is locked. (Affects Windows version only.) Changes with V2.35 Modified the "Secure application" function to allow user to enter full-screen mode from the menus while the menus are otherwise locked. (Affects Windows version only.) The setting for the function key mode (defaults or user definitions) was not saved when saving setup in previous versions. This setting is now saved. (Affects Windows version only.) Changes with V2.34 Fixed problem with printing to .bmp file (Windows version only) Added ability to secure the application (prevent menu access, prevent task switching) using a password. (Windows version only) Changes with V2.33 Added test in startup code to prevent launching multiple instances of the program. Running multiple instances could cause contention for serial or TCP ports, since they share the same registry settings for these resources. Affects Windows version only. Changed std PS/2 keyboard handler to resolve problem with left Alt key. Affects Linux version only. Changes with V2.32 Fixed bug in polygon rendering function reported by A. Chaiyapruk, Thainox. Affects all versions. Changes with V2.31 Added full screen mode in Windows version. Changes with V2.30 Fixed bug in keyboard handler for 122-key keyboard reported by K. O'Neil, Modcomp UK. When the Backspace code was set to ^H, the Backspace key code was not set to 0x08 as it should have been. Affects Linux version only. Modified serial input handler to improve performance. Linux version only. Changes with V2.29 Fixed bug in keyboard handler reported by Kevin Messer, ExxonMobile, UK. The 'X' key did not work. Affects Linux version only. Changes with V2.28 When F, H or L was received from host keyboard mode was changed correctly, but the change was not reflected in the menus. Reported by Don Serrurier. Fixed. Affects Windows version only. Changes with V2.27 Fixed bug in cursor xy command interpreter in 88alpha.c. Out of range parameters were not properly reduced. Reported by Don Serrurier. Affects Linux and Windows versions. Changes with V2.26 Added flush following each write of captured host data to disk to ensure no loss of data in case of a crash. Affects Windows version only. Changes with V2.25 Added code to autodetect modifications to windows scanmap for 122-key keyboard. Affects Windows version only. Changes with V2.24 Modifications to Windows network code in pc8800wn.exe and plink.dll. Corrected bug in Windows version that caused failure when running with 1600x1200 display resolution. (Reported by Wanye Moran, PSEG. Only Windows version affected.) Changes with V2.23 Modifications to Windows network code. Not released. Changes with V2.22 Fixed bug in 88graph.c, handler for 'F' (fill bounded region) command. The last argument of the command (numeric index of desired fill pattern) was not handled properly. Index value given was mapped to fill_pattern[i-1]. Affects all versions. Fixed bug in 88esc.c, handler for M command (print dump). The bitwise argument to the command for color landscape print was not handled correctly. Result was color portrait print. Affects Linux version only. Improved configurable cursor blink feature added in V2.21. Changes with V2.21 Added configurable blink period for Linux version. Corrected problem in dot addressable graphics command parser reported by M. Tailt of Lenzing Technik. Changes with V2.20 Released Linux version of the product. Added support for USB license key to Windows version. Changes with V2.19 (10.25.07) Fixed bug in setup function that selects host cursor mode, reported by Jens Lindhard, Atkins Danmark. This change affects only the DOS version. Changes with V2.18 (10.16.07) Additional change to polygon rendering functions (dispmgr.c). V2.17 overlooked setting correct write mode in case in which polygon fill is additive with respect to what is on the screen. The change affects both Windows and DOS versions. Changes with V2.17 (10.05.07) Additional changes to polygon rendering functions (88graph.c, dispmgr.c). The changes affect both Windows and DOS versions. Changes with V2.16 (10.03.07) Fixed some problems with polygon rendering in high resolution graphics mode (88graph.c, dispmgr.c). The changes affect both Windows and DOS versions. Changes with V2.15 (9.25.07) Fixed two bugs in hi resolution graphics mode command parser. The parser must allow decimal arguments in the form '-,' or ',' that is, arguments in which 0 is implicit, and it did not do so in prior versions. Commands with relative arguments that follow a rectangle command depend on an update of the current position to the rectangle's lower left corner. The parser was updating the current position to the rectangle's upper right corner. The changes affect both Windows and DOS versions. Changes with V2.14 (9.21/07) Fixed bug in cursor advance function in 88alpha.c. Out of range x coordinates were not properly masked. Affects both DOS and Windows versions. Changes with V2.13 (1.10/07) DOS version: Fixed bug in setup functions for sound card support. Windows version: no changes. Changes with V2.12 (7/22/06) DOS version: Fixed a bug in the built-in fastscreen demo, invoked with command line switch '/demo'. DOS version: Fixed minor bug in keyboard handler for 122 key keyboard. All versions: Implemented 400 msec break on serial transmission line in response to Break key. Changes with V2.11 (4/10/06) Fixed problem that occurs when a character is written on the screen in blind cursor mode at the position of the visible cursor. Reported by Michael Taitl, Lenzing. Changes with V2.10 (3/6/06) DOS version only: Fixed bug in 88esc.c, function for handling host commands F, H, and L that set duplex modes, reported by Chittranjan . Mehta, Indian Petrochemicals Corp. The function was called with wrong numeric parameters. F should set full duplex (keyboard to host only) -- it was setting half duplex. H should set local echo (keyboard to host and screen) -- it was setting full duplex L should set half duplex (keyboard to screen only) -- it was setting local echo. Windows version only: added code to auto-detect serial ports and display the available ports in the Host menu. Up to four ports can not be listed. DOS version only: Added Auto-repeat Off/On switch in keyboard setup menu. When using a 122-key PC keyboard or std 101-key PC keyboard with the /int9keys command line switch, the setup menu switch turns the keyboard autorepeat on or off. When using a 101-key PC keyboard without the /int9keys switch (i.e. when using the computer BIOS's low level keyboard routines instead of the low level routines built into the emulator), this setup menu switch cannot fully disable the auto-repeat function. In this case "Off" sets the delay to the max. of 1 sec. and the repeat rate to the min of 2 chars/sec. "On" sets the default delay of 250msec and the default repeat rate of 11 chars/sec. (Requested by C. Mehta, IPCL) DOS version only: Added a section called '[blink]' to the configuration file pc8800.cfg and a corresponding function in the emulator executable to read the settings in this section for the blink attribute of displayed characters. The 'blink' value may be set to 'bg' for the standard blink to background, or to 'black' for blink to black. (Requested by C. Mehta, IPCL) Windows version only: Added command line switch '-blinkblack' to allow user to set character blink attribute to blink to black instead of the default blink to background color. Blink to black is used for some Modcomp systems, some Fisher systems, etc. Changes with V2.09 Fixed bug in the handler for the cursor position command. When a command with out-of-range parameters was received, the emulator brought the parameters in range by a reduction algorithm that differed from the reduction algorithm used in the original Intecolor terminal. This bug showed up when host system code (as in some Bailey systems) sent out of range parameters and depended on the reduction algorithm in the original terminal for correct positioning of certain text elements on the screen. Fixed bug in the setup menu handler. The setting shown for the host cursor mode can be affected by host command. When the cursor mode is set by the host to Blind, the value of the cursor mode reported back to the setup menu handler was wrong and caused a string table reference to be out of bounds, causing the emulator to crash when switching in setup mode to the operator preferences menu. Fixed bug in block receive command interpreter. The block receive terminator 0xff 0x00 was required to be aligned on an even byte boundary. That was incorrect. The original 8001 terminal allows the terminator sequence to occur on any byte boundary. Some Bailey systems send the terminator aligned on an odd-byte boundary (sometimes), exploiting the peculiarity of the original terminal. Fixed bug introduced in V2.08 in the font handler when it was modified to handle wider fonts. Changes with V2.08 Modifications to font manager to allow using larger range of font sizes. Changes with V2.04-V2.07 Modifications to printer drivers to support HP PCL 3 printers in portrait and landscape modes. Previously, only HP PLC 5 printers were supported. Modifications to the printer setup menu to allow mapping of colors. Changes with V2.01-2.03 Modifications to screen refresh functions to improve performance. Changes with V2.0 Major architectural changes are introduced with V2.0. V2.0 retains the proven Intecolor command interpreter from earlier versions. However, it abandons the 16-bit real mode DOS executable format and adopts a 32-bit executable format. A common set of sources can be compiled either to a DOS 32-bit protected mode executable, or a native Win32 executable. The DOS version of the program requires a DPMI server such as cwsdpmi.exe (included in the distribution). In order to support both DOS and Windows versions of the program, the Borland 16-bit display library used in older versions is replaced by the Allegro library. This library supports VESA compliant video cards and also supports sound chips, PS/2 mouse, etc. on multiple operating systems. In addition, the separate DOS serial device driver used in earlier versions has been eliminated. Serial port support suitable for Windows and protected mode DOS is now built into the main executable. Both the DOS and Windows versions of the program have graphics performance far superior to earlier versions. Both have support for sound chips (for use instead of the standard PC beeper as a bell signal), and support for keep-alive and communications fail timers. In addition, both versions of the program have updated support for printers. The DOS version of the program has built-in support for any serial and parallel printers that use HP's PCL5 command language. The Windows version of the program allows the use of any printer for which a driver is installed in the operating system. The Windows version of PC8800 V2.0 replaces text based setup menu system (still used in the DOS version) with a Windows-style menu system. Setup data are saved to the Windows registry, rather than to a file. The Windows version only provides support for network communications as well as for serial communications. Changes with V1.31 Fixed a long-standing bug in the blank visible cursor function in module 88grlib.c. Misplaced jump in case the writeable text page is not the displayed page caused program to write spurious data to one of the VGA registers, causing the system to crash with EMM386 error "DMA mode not supported". This bug was reported by James Lujan of Los Alamos. Changes with V1.30 Bug in implementation of changes in V1.29 fixed. Changes with V1.29 Modified emulator's response to the Set Visible CCI command (Ctl-F) to provide that receipt of this command causes exit from Blind Cursor mode, if this mode is set. This is undocumented behavior, but confirmed with reference to the 8001 V5.79 assembly listing. Also, modified transmit routines to force keyboard data that is being echoed to screen to be written at visible cursor position, even if blind cursor mode is set. This fixes problems reported by Robert Pearson, Los Alamos National Lab. Host code at Los Alamos relies on the CCI sequence to exit blind cursor mode and uses keyboard echo to screen in conjunction with blind cursor. Changes with V1.28 Added function in keyboard module to support use of ALT+numeric pad to enter decimal key codes when PC8800 invoked with '/int9keys' switch. With this function, when the NUMLOCK is on, the numeric pad number keys can be used with the ALT key pressed to generate a decimal code. Changes with V1.27 Fixed bug in function key programming code (88setup.c) that prevented assigning a user definition = default definition, per report from Dwight Acheson, Dow CA. A new release V3.0 of the serial port driver accompanies this release. See the file serial.txt for details. Changes with V1.26 Added support for 122-key keyboard with Modcomp mappings. This keyboard has a unique ID code programmed, so the emulator can recognize it and use the correct code map. Fixed some bugs in the implementation for the std Intecolor 122-key keyboard (custom int 0x09 support) and for the 101 keyboard (int 0x09 and int 0x16 support) These related to handling of '^H' and '^Z' swapping. Changes with V1.25 Fixed bug in spro license key reset routine that was causing the printer port where spro is attached to appear busy when it's not. Added support for a Unicomp 122-key keyboard, with full Intecolor 117 key emulation using a custom bios interrupt 9 function. See the key mapping tables in the file 'pc8800_keys.doc', available at www.pc8800.com Made some changes in bios and int9 support for the PC 101-key keyboard. See the key mapping tables in 'pc8800_keys.doc'. Added /h command line switch. This switch causes a usage message to be printed on stdout. The emulator then exits. Added support for a demo using Fastscreens. When the emulator is envoked with the command line switch '/demo', a demo can be invoked at any time by putting the emulator in local mode and issuing the command '[D' from the keyboard. (The 'D' must be upper case.) Note that the '/demo' switch is not compatible with the command line switch /strictg. Changes with V1.24 Based on report from Dwight Acheson, Dow Chemical, Alberta, CA, changed graph mode initialization so that we start in point plot mode looking for coordinate args. Some other behaviors of the graph mode parser were also changed to reflect undocumented behaviors of the original terminal. Changes with V1.23 Fixed a few problems involving need to refresh a graphics display when text is scrolled over it or the text display is completely changed. Streamlined dynamic memory allocation and font loading. Changes with V1.22 Improved support for the new Rainbow Technology Sentinel Pro key. Fixed time delays that were slowing things down when the key was checked. Added code to check for the key at LPT1, LPT2 and LPT3. Changes with V1.21 Added support for new software licensing key. This change does not affect the way the emulator operates, except that the new key is now recognized. Changes with V1.20 A new command line switch was added: /65550 Use this switch to overcome a bug in the 65550 video chip that is used in some A-B video cards and system boards (including the board in the RAC6181 computer). The main symptom of the bug is that the green component of the color of pixels on the left edge of each character column are missing. This has to do with setting the blink enable bit in the attribute controller mode register. To work around the bug, we don't use the attribute controller to blink the cursor and other characters. Instead, we install a hook into the system timer interrupt so that the palette registers can be re-written every few ticks of the timer in order to accomplish blink. Changes with V1.19 (never officially released) Fixed bug in insert char routine in module 88alpha.c per bug report from Pat Brian, Westlake Paper. The only other change is a modification of the serial port device driver "comdrvr.bin" that accompanies the main program "pc8800.exe". The main program itself remains unchanged from V1.18. When new the device driver is loaded (according to an appropriate device= line in config.sys) a message like the following is printed on the console: "Serial port driver V2.0 loaded". The "V2.0" identifies the driver as the correct one to accompany V1.19 of the main program. The changes incorporated in V2.0 of the driver have to do with the way the driver handles the pacing of transmitted characters ("Function Key Rate" set to "Slow" on the PC8800's Keyboard Setup Menu). Pacing is accomplished by buffering characters to be transmitted and sending one out the serial port at each tick of the PC's clock (once every 55msec). When installed, the driver chains itself to the PC's clock tick interrupt, which is a higher priority interrupt than the serial receiver interrupts. Prior to V2.0, the driver used the clock tick interrupt to trigger the enabling of a transmitter holding register empty (THRE) interrupt by the serial port controller. On occurrences of this interrupt (transmitter actually idle), a serial interrupt service routine would fetch one character from the transmit buffer and send it out. This scheme was faulty insofar as it did not provide any safe guard in case a clock tick (and the setting of UART's interrupt status) might occur while a UART interrupt (especially from the receiver) was being serviced. Consequently, this scheme did not safeguard against possible loss of received data when transmit pacing was set. Indeed, some user reports of data loss led to the discovery and correction of this problem. In the current V2.0 driver, transmit pacing is still based on the clock tick interrupt, but it no longer relies on the setting of a THRE interrupt enable. This new scheme has been thoroughly tested and found to provide for very reliable high speed serial reception, even while using transmit pacing. Changes with V1.18 Improvements were made to the install script. The uninstall script was removed. Directory [root]\PC8800\USER_SRC was renamed to [root]\PC8800\SRC Eliminated dual "terminal" data structures used in connection with "half duplex" (echo what sent to host from keyboard) and "local" (echo keyboard but don't send to host). Revamped all protect mode functions to correct discrepancies between emulator and terminal at certain boundaries, per bug report from Bill Jones, Boeing, St. Louis. When in protect mode, ESC causes exit to alpha mode, not to ESC mode as previously. On entry to protect mode, made cursor move immediately to protected field, instead of after receipt of fill character Changes with V1.17 A bug in the plot mode reported by Mike Soemo, Landis and Staefa (Landis and Gear, MCC Powers) was fixed. Changes with V1.16 A command line switch was added to allow disabling the terminal bell. Normally, when the bell code (07 hex) is received, a 1000Hz tone is produced on the PC speaker for 100 milliseconds. During this period, processing of subsequent incoming characters is suspended, and these incoming characters collect in the serial input buffer. In most cases the delay causes no problem. The serial input buffer can hold a large number of characters, and processing can resume following the bell delay. However, in certain cases, it might be desirable to turn off the bell to remove the 100 millisecond processing delay associated with each bell code. For example, the host might send a long string of bells that would cause a multi-second delay before the display could be updated with new host data following the bells. In this case, it might be desirable to avoid the delay in updating the screen. To use the switch, invoke the emulator on the DOS command line as follows: >pc8800 /nobell The command line switch works with upper or lower case characters. An additional command line switch was added to force the emulator to process incoming Escape sequences in accordance with the original 8001g terminal protocols, rather than in accordance with the 8800 terminal protocols. The default processing mode is that of the 8800: A distinction is made between "", ";", "[", and "{" following an Escape character. This distinction allows entry into the ANSI mode and access to the 8800's extended command set. When the command line switch is set, this default processing is overridden. No distinction is made between the "", ";", "[", and "{" characters when they follow an initial Escape character. This processing mode is that of the original 8001g terminal. This processing mode is sometimes needed when using the emulator in older systems, in which software was written around the 8001g. To use the switch, invoke the emulator on the DOS command line as follows: >pc8800 /strictg The command line switch works with upper or lower case characters. Note that multiple command line switches are possible. Each switch should be preceded with a and should be introduced with a slash "/". Changes with V1.15 Beginning with V1.15, the locator device support is expanded to include a Carroll Touch Infra-red touch screen ("Smart Frame"). The Setup Mode Locator menu provides a means of selecting and configuring the built-in drivers for the Carroll Touch system. (There is also some support for host control via ANSI command.) Before attempting to use the touch screen as a locator device, ensure that the touch screen is properly installed. The touch screen's serial port must be connected to a spare serial port on the host computer. Cabling is as shown. Touch Screen DB-9 Host DB-9 Host DB-25 (+12) 1 ----------------------------> 1 (DCD) 8 (DCD) (TXD) 2 ----------------------------> 2 (RXD) 3 (RXD) (RXD) 3 <---------------------------- 3 (TXD) 2 (TXD) (DSR) 4 <---------------------------- 4 (DTR) 20 (DTR) (SG) 5 ----------------------------- 5 (SG) 7 (SG) (DTR) 6 ----------------------------> 6 (DSR) 6 (DSR) (CTS) 7 <---------------------------- 7 (RTS) 4 (RTS) (RTS) 8 ----------------------------> 8 (CTS) 5 (CTS) 9 NC NC 9 (RI) The comdrvr.bin device driver must be installed to handle communications at the host serial port selected for use by the touch screen. Installation for this port is similar to installation for the host serial port. Finally, the host serial port to which the touch screen is connected must be selected as the locator device port in the Locator Setup Menu under PC8800. It is recommended that the port communications parameters be set initially for 4800 baud, 8 bits, odd parity, 1 stop bit. However, it is possible to use other settings. Most Carroll touch screens support auto baud and auto parity detect, and the driver built in to the PC8800 utilizes these features. After the touch system has been installed and set up for communications, the calibration routine that is built in to the PC8800 and is accessible from the Locator Setup Menu should be run. Once calibration has been performed, calibration data are stored in a file called CTCALIB.DAT on the hard disk. The calibration file is accessed by the device driver whenever the touch screen is enabled. Therefore, recalibration should not be required at the beginning of every operating session. Once set up and calibrated, the touch system works like any locator device, subject to the pick mode and report mode settings that are selectable from the Locator Setup Menu. Changes with V1.14 Three settings are now available for "Echo" in the Host Setup Menu: Off, On and Local. Local is new with V1.14. With this setting, keyboard input is sent to the display only, not to the host. With "On", keyboard input is sent both to the host and to the display. Changes with V1.13 Beginning with V1.13, the PC8800 emulator includes new drivers for HP Deskjet printers. There is a landscape mode driver and a portrait mode driver. These are identified in the printer setup menu as options HP Deskjet L, and HP Deskjet P. When invoking a print operation by host command (ESC M param_char), the printer driver is now selected with bit patters in the param_char, as follows: driver1 = hp paintjet portrait 0x 1111 xx driver2 = hp paintjet landscape 0x 1110 xx driver3 = hp deskjet portrait 0x 1101 xx driver4 = hp deskjet landscape 0x 1100 xx driver5 = epson mono landscape 0x 1000 xx As before, the 2 low order bits in the param_char select the black and white reverse mode, as follows: 00 = No reverse 01 = Selective reverse (not supported, maps to full reverse) 10 = Full reverse 11 = Printer SW version (not supported, value ignored) Also as before, the 7th order bit selects form feed (1) or no form feed (0). For example, to select the HP Deskjet with form feed, portrait mode, and background white: ff hpdj port rev 01 1101 10 = 'v' Or, to select the HP Deskjet with form feed, landscape mode, and background white: ff hp dj land rev 01 1100 10 = 'r' Changes with V1.12 Added mouse sensitivity for Chevron. Changes with V1.11 Added line in 88alpha.c to exit blind cursor mode when std cursor sequence received per bug report from Lester Shields, Wierton Steel. Changes with V1.10 Added support for new hardware key. Changes with V1.09 Support added for the following command line switches: /noblink Disables character blink (without disturbing the blink bit in the attribute byte associated with each character in the text display buffer). This switch can be set when the user needs to capture PC8800 screens with third party screen capture software. /int9keys Replaces the standard PC keyboard handler, which relies exclusively on BIOS interrupt 16h calls, with a custom PC keyboard handler, which includes a replacement for the BIOS interrupt 9 routine. The custom handler provides a fuller emulation of the 8800 terminal keyboard than does the standard handler, but might not work with all hardware. Added support for Parakey hardware lock. The following item was added to the PC8800's Options Setup Menu: Allow CMD/ALT X Exit This switch may be set on to allow the Command X (8800 keyboard) or ALT X (PC keyboard) key code to be processed locally as an "exit emulator" code. Changes with V1.08 Fixed logic error in calculating Blind Cursor position. Changes with V1.07 Fixed bug in 88plot.c, transmit routine, to add CR terminator to message. Fixed bugs in 88alpha.c, cursor xy routine. The following item was added to the PC8800's Options Setup Menu: ^S^Q Hold Screen This switch may be turned on to allow the keyboard operator to stop the scrolling of incoming text with Control S and restart it with Control Q. When the switch is on, the Control S and Control Q key codes are processed locally and are not transmitted to the host. When the scrolling action is stopped with Control S, the emulator does not fetch characters from its host input buffer for display update, and the input buffer can fill up as the host continues sending. However, if flagging is set it continues to operate independently of the Control S/Control Q functions to prevent buffer overflow. When scrolling is restarted with Control Q, the emulator resumes fetching characters from the host input buffer and using them to update the display. Changes with V1.06 Implemented ANSI scrolling region stuff by modifying 88alpha, 88esc, and 88ansi. Fixed bug in 88plot, char plot mode CCR Changes with V1.05 Revamped cursor management throughout, added file 88curs.c to effect this, along with changes in many files. Fixed bugs in locator/host cursor interaction with modifications in 88grlib.asm. Took out overlay code - not needed. Fixed bug in code to set graph draw color on entry to graph mode (see 1.03) Changes with V1.03 Added MS mouse attenuation to slow GIN cursor movement. Added a button detect routine to allow only one GIN pick sequence until button is released. Applies to both mouse keys on MS mouse driver only. Added save & restore of GIN cursor on erase page. Added "undocumented" ability to allow alpha mode color status to carry over into graphics mode to be compatible with original terminals. Effect of mask affects color. Changes with V1.02 Disabled GIN cursor when loading or saving Fastscreen files to prevent GIN cursor restoration from leaving old data at GIN cursor location. NO COPIES OF THIS VERSION SHIPPED. Changes with V1.01 Corrected cursor problem while in plot character graphics mode 254. V1.00 INITIAL RELEASE TO INTECOLOR.