Index of folder retro-220/software/BALGOL/BALGOL-Examples/MRS-081:

Source, object, and compilation listings for a BALGOL program from
Burroughs Technical Bulletin 156, 8 June 1961, Mathematical Report
Series MRS-081, "Diagnosis of Congenital Heart Disease from Clinical
Data Using the Burroughs 220 Computer". The program listing is included
in the report and is noted as having been written by Fred B. Fielding of
the Burroughs San Francisco District office in May 1961.

The program and report are based on a paper, "A Mathematical Approach to
Medical Diagnosis Applied to Congenital Heart Disease" by H. R. Warner,
A. F. Toronto, L.G. Veasy, and R. Stevenson; Journal of the American
Medical Association, 22 July 1961: 177(3), pp. 171-183;
doi:10.1001/jama.1961.03040290005002.

This report describes a program for computing the probability of a set
of congenital heart diseases occurring in a patient given the presence
of a set of symptoms observed in the patient. It includes sample data
and an example of using a machine-language subroutine with a BALGOL
program.

The report was discovered during October 2019 in the Burroughs
Corporation Records, Product Literature (CBI 90), Charles Babbage
Institute, University of Minnesota, Minneapolis, Series 74, Box 43,
Folder 8.

To run the program, load the following decks into the Cardatron card
reader in the order indicated and compile with a BALGOL compiler
configured for at least a 5000-word 220 system:

    1.  BALGOL compiler call-out card.
    2.  MRS-081.card deck -- BALGOL source and machine-language cards.
    3.  SYMPTOM-DATA.card deck.
    4.  Case-data card deck, e.g., CASE-DATA.card.


MRS-081.card
    The BALGOL source deck, including the object deck for the machine-
    language subprogram. This is the original version of the BALGOL
    program, as transcribed from the report, but with a corrected
    version of the machine-language code for the UNPACK subroutine as
    discussed below.

MRS-081.lst
    Compilation and run listing generated from MRS-081.card with the
    SYMPTOM-DATA.card and CASE-DATA.card decks appended.

MRS-081-Code.lst
    Compilation and run listing generated from MRS-081.card as above,
    but including the object code generated by the compiler.

SYMPTOM-DATA.card
    Card deck for the symptom-disease probability matrix used by the
    program. This must be inserted after the cards in the MRS-081.card
    deck and before any case-data cards.

CASE-DATA.card
    Sample case-data card deck for input to the program, derived from
    sample run data in the report. This data must be inserted after the
    of SYMPTOM-DATA.card deck when the program is run.

UNPACK.card
    Source deck for the machine-language UNPACK subprogram used by the
    BALGOL program to unpack rows from the symptom-disease probability
    matrix during execution. This deck was reverse-engineered from the
    numeric object code in the MRS-081.card deck and then modified to
    support parameter-passing scheme for a later version of the
    compiler. Assemble with the BAC-Assembler.

    As published, the machine-language routine was written for the
    BALGOL parameter-passing sequence used in the compiler dated
    1961-02-20 -- the one used in the report. The compiler available to
    and recovered as part of the retro-220 project (dated 1962-02-01)
    passes parameters in the reverse order. Thus, this version of the
    subprogram was modified to use the recovered compiler's scheme. See
    Appendix F, "Construction of Machine Language Programs" in the March
    1963 Revised Edition of the BAC-220 Burroughs Algebraic Compiler
    manual (Bulletin 220-21017).

    The object code for this routine published in the report may never
    have had an assembler source and was likely programmed directly in
    numeric machine language.

UNPACK.lst
    Assembly listing generated from UNPACK.card.

UNPACK-ML.card
    Object machine-language card deck generated by assembling
    UNPACK.card. The BAC-Assembler produces a machine-language deck with
    six words per card. That output was manually reformatted to match
    the (mostly) five word-per-card layout shown in the report.

ORIGINAL-1961/
    Directory containing the original version of the UNPACK subroutine.
    See the included README file for details.

B5500/
    The BALGOL source, UNPACK subroutine, and data converted to
    Burroughs B5500 Extended Algol, as supported by the retro-b5500
    emulator.

E-MODE/
    The BALGOL source, UNPACK subroutine, and data converted to modern
    Unisys ClearPath MCP Extended Algol. E-mode is the term for the
    internal architecture of these systems.

Note that the results from the B5500 and E-mode programs differ slightly
from those of the BALGOL program. The results from the BALGOL program
agree with the report, and the results from the B5500 and E-mode
versions of the program agree with each other. Some variance between the
220 results and those for the B5500 and modern E-Mode systems may be
expected, as the 220 carries only eight decimal digits of floating-point
precision and does not round after floating-point add/subtract, while
the latter two systems carry 11.5 digits (39 bits) and round after
floating add/subtract.

In this case, however, the B5500/E-mode results, where they differ, are
always one greater in the last (fourth) digit printed. This appears not
to be due to any computational difference at that level of precision,
but to the fact that the 220 BALGOL formatter routines truncate
formatted values while the other two round them.


Paul Kimpel
December 2019
    Original version, transcribe program listing and data, disassemble
    machine-language routine to BAC-Assembler notation, prepare sample
    data deck.
27 December 2019
    Revise UNPACK subroutine for parameter-passing sequence used by
    1962-02-01 compiler, archive original UNPACK subroutine files,
    include additional listings.
1 January 2020
    Correct transcription errors in BALGOL source and SYMPTOM-DATA card
    decks, resolve cause of differences between the report and the
    BALGOL, and B5500/E-mode results.


