Welcome to the Datatron 205 and 220 Blog

This blog is a companion to T J Sawyer's Web Page that outlines the history of the Burroughs Datatron 205 and Paul Kimpel's incredible 205 and 220 emulators. Please visit those sites and return here to post any comments.

Thursday, May 7, 2020

retro-220 Emulator Version 1.02 Released

I am pleased to announce that version 1.02 of the retro-220 emulator has been released. This is a minor release, aggregating a number of corrections and small enhancements that have accumulated since 1.01 was released in October 2018.

The source code and supporting materials for this version of the emulator are available from the project repository. You can download the source from the repository and run it from your own web server. Alternatively, feel free to run it from our hosting site. Please see the Getting Started wiki page for instructions.

Emulator Corrections and Enhancements


The most significant changes involve corrections to the implementation of floating-point arithmetic instructions:
  • The implementation of the "normalizing limiter digit" in the floating add/subtract instructions has been redesigned to operate correctly. This was an unusual feature in the 220, and was the subject of a patent (US 3022006A) awarded to John Alrich, who designed the floating-point circuitry for both the 220 and the 205. In essence, if the high-order (sL=11) digit in the instruction word was between 1 and 7, the processor monitored the number of normalization shifts that took place after a floating-point add/subtract operation. If the number of shifts exceeded the value of the digit, the processor halted at the end of the instruction. By viewing the contents of the C register, the operator could determine the number of shifts that actually occurred. Normalization shifts (with accompanying adjustments to the exponent field) are necessary after floating-point add/subtract when one or more high-order digits of the mantissa are zero. The intent of this feature was to trap loss of precision due to very small differences between the two operands. The limiter digit worked only up to seven digits because after eight shifts the mantissa would be all zeroes, yielding a floating-zero result. For details on the normalization limiter, see the 220 Operating Characteristics manual, pp. 2-18 to 2-22.
  • The final value of the A register for floating multiply when exponent overflow occurred was incorrect and has been fixed.
  • The final value of the A register for floating divide when the D register (memory operand) is not normalized was incorrect and has been fixed.
  • The way that registers were being set up for floating divide and the way post-divide normalization was being done were incorrect and have been fixed.
Text files loaded into magnetic tape drives as tape images are now validated during the load process. If they do not have the correct format, or contain invalid data, or exceed the maximum capacity of a 3500-foot reel of tape (approximately 729,000 words), the tape image file is rejected.

A couple of hidden user interface features used for internal emulator testing have been implemented. These are described in the repository commit note (1893b8a2) associated with the release.

No comments: