Interpreting System for Operations on 48-Bit Numbers in Floating-Point Mode on the Ural-11B Digital Computer

V. K. KIVRAN
Submitted 1974 | SovietRxiv: ru-197401.11097 | Translated from Russian

Abstract Generated abstract

This paper presents an interpreting system for the Ural-11B computer intended to overcome the limited accuracy of its standard 24-bit floating-point representation. The system represents numbers in two adjacent cells with a 36-bit mantissa and 12-bit exponent, defines overflow and underflow behavior, and supports extended floating-point arithmetic, normalization, square root extraction, decimal to binary conversion, binary to decimal conversion, control transfers, external-device commands under specified limits, and subroutine calls. It describes the instruction conventions, memory layout, pseudo-accumulator organization, independent use of arithmetic and conversion blocks, error stops, and the structure and placement of the interpreting program, arithmetic block, and conversion block, with the complete program supplied as an appendix.

Full Text

Proceedings of the Tomsk Order of the October Revolution and Order of the Red Banner of Labor Polytechnic Institute named after S. M. Kirov

Volume 203 1974

INTERPRETING SYSTEM FOR OPERATIONS ON 48-BIT NUMBERS IN FLOATING-POINT MODE ON THE “URAL-11B” DIGITAL COMPUTER

V. K. KIVRAN

(Presented by the scientific seminar of the Department of Computer Engineering, TPI)

To solve many problems on the “Ural-11B” digital computer in floating-point mode, the available 24-bit grid is often insufficient for achieving a specified accuracy of computations. The present work proposes an interpreting system for solving problems with an extended bit grid.

In the proposed system the mantissa of a number occupies 36 bits, and the exponent 12 bits. The range of representable numbers is \(2^{320} \div 2^{-320}\), which corresponds approximately to \(10^{100} \div 10^{-100}\). If the exponent of a number exceeds \(500_8\) in absolute value, the system provides for a stop when the exponent is positive and for representing the number by machine zero when the exponent is negative.

A number in the interpreting system is recorded in two adjacent cells: in the first, the mantissa with its sign; its continuation is in the following incomplete cell, followed by the exponent of the number with its sign. The location of a number in NF is indicated by the address of the full cell containing the high-order bits of the mantissa.

A number is represented in the same form in the pseudo-accumulator, in cells 00040–00043. The second number for the operation is called into cells 00044–00047. The working field of arithmetic operations is 00050–00057.

It should be noted that in programs operating with the IS, one may specify, in the address part of commands, the address of the pseudo-accumulator. The IS makes it possible to execute all arithmetic and logical operations of the instruction system of the “Ural-11B” digital computer, as well as commands for unconditional and conditional transfers of control corresponding to the signals \(\omega_0\), \(\omega_1\), and \(\omega_2\) of operation 01 MA. In addition, the IS makes it possible to execute commands for addressing external devices, provided that the commands do not have a unit in bit 15, i.e., the address part must not exceed 37777. Otherwise, to execute these commands one must exit the IS.

In floating-point mode in the IS system it is possible to perform addition, subtraction, subtraction of moduli, calling a number into the pseudo-accumulator and sending it to an address. In addition, the system provides multiplication and division of numbers, extraction of the square root, normalization of 48-bit numbers (with replacement, after normalization, of the last 12 bits by the exponent of the number), sending zero to the pseudo-accumulator and to an address, conversion of numbers from the decimal system to binary and back, and calls to subroutines.

The indication that an operation is to be performed in floating-point mode is a one in the 15th bit of the instruction, i.e., \(40000_8\) must be added to the address part of the instruction.

Any instruction in floating-point mode may send the result to an address if the instruction is “negative.” For example, the instruction \(41M\ 40000 + A\) adds the numbers in the pseudo-accumulator at address \(A + [M]\) and sends the result to the same address.

In the IS system one may use all modifier counters and all modifiers except the 7th, which may be used only for access to SP with exit from IS.

IS is enabled by the instruction 63701410, after which the next instruction will be executed in the IS system. One may exit IS by the instruction \(23M\ 40000 + A\) to cell \(A + [M]\), or \(63M\ 40000 + A\) to cell \(A\).

The following floating-point operation codes are adopted in IS.

\(00\ M\ 40000 + A\) \((40\ M\ 40000 + A)\) — normalization;
\(01\ M\ 40000 + A\) \((41\ M\ 40000 + A)\) — addition;
\(02\ M\ 40000 + A\) or \(42\ M\ 40000 + A\) — call of a number into the pseudo-accumulator;
\(03\ M\ 40000 + A\) \((43\ M\ 40000 + A)\) — subtraction;
\(04\ M\ 40000 + A\) \((44\ M\ 40000 + A)\) — subtraction of absolute values;
\(05\ M\ 40000 + A\) or \(45\ M\ 40000 + A\) — sending a number to an address;
\(06\ M\ 40000 + A\) \((46\ M\ 40000 + A)\) — multiplication;
\(07\ M\ 40000 + A\) \((47\ M\ 40000 + A)\) — division;
\(10\ M\ 40000 + A^*\) \((50\ M\ 40000 + A)\) — extraction of the square root from the number in the pseudo-accumulator;
\(12\ M\ 40000 + A\) \((52\ M\ 40000 + A)\) — extraction of the square root from the number at the address;
\(13\ M\ 40000 + A^*\) \((53\ M\ 40000 + A)\) — conversion of the number in the pseudo-accumulator from the binary system to the decimal system;
\(14\ M\ 40000 + A\) \((54\ M\ 40000 + A)\) — conversion of the number at the address from the binary system to the decimal system;
\(15\ M\ 40000 + A^*\) \((55\ M\ 40000 + A)\) — conversion of the number in the pseudo-accumulator from the decimal system to the binary system;
\(16\ M\ 40000 + A\) \((56\ M\ 40000 + A)\) — conversion of the number at the address from the decimal system to the binary system;
\(17\ M\ 40000 + A^*\) \((57\ M\ 40000 + A)\) — sending zero to the pseudo-accumulator (or to the pseudo-accumulator and to the address).

Access to SP with exit from IS is carried out by the instruction \(63740000 + A\), where \(A\) is the address of the first SP instruction. In this case it is forbidden to use line-by-line recording of the initial SP information. Therefore, before access to SP, all initial input data must be in the places provided for by SP. The corresponding requirement is also imposed on SP. Thus, in an SP of elementary functions, the argument and the computed value of the function must be located in the pseudo-accumulator.

Access to subprograms operating without exit from IS is performed by the instruction \(63MA\), where \(A\) is the address of the first instruction of the subprogram. Exit from it is carried out, as usual, by the instruction \(23M00000 + 2n\), where \(n\) is the number of instructions skipped after the access. In this case any modifier may be used except the 7th.

The interpreting system IS includes the interpreting program IP for implementing instructions, a block of arithmetic oper—

* — the modifier number and the address \(A\) do not affect the execution of the operation.

of BA operations, the block for converting numbers from the decimal system to binary and back, BP, the library of standard subroutines with the accompanying program BSP, and the arranging program RP for automating work with BSP.

In the present paper, IP, BA, and BP are presented. Their placement in NF must be as follows: in cells 01410÷01754 — IP with constants in 01372÷01406; in cells 00100÷01360 — BA with constants in 01362÷01370; in cells 01754÷03006 — BP with constants in 02422÷02442.

The BA and BP blocks can operate both within the IS system and independently. A description of these blocks is not given, owing to the simplicity of their algorithms and programs.

When BA and BP operate independently, without IS, in order to perform an operation it is necessary to send the numbers for the operation to cells 00040÷00043 and 00044÷00047 and to make the call in the usual way. The result will be located in cells 00040÷00043. In this case it should be borne in mind that the BP block cannot operate without BA. Calls are made to the following cells:

00374 — normalization;
00122 — addition;
00114 — subtraction;
00100 — subtraction of moduli;
00470 — multiplication;
00632 — division;
01070 — extraction of the square root from the number at address
        00040÷00043;
01060 — extraction of the square root from the number at address
        00044÷00047;
01756 — conversion of a number from the binary system to decimal at address
        00044÷00047;
01766 — conversion of a number from the binary system to decimal at address
        00040÷00043;
0244 — conversion of a number from the decimal system to binary at address
        00040÷00043;
02454 — conversion of a number from the decimal system to binary at address
        00044÷00047.

Before performing normalization, the order of the unnormalized number should be sent to the incomplete cell 00056.

When the BA block performs operations, a stop is provided by the command 77700070 if the order of the number is greater than +500₈, upon division by zero, and upon extraction of the square root from a negative number.

Operator scheme of IP

BA                  SP $B_x\downarrow;\ P_1\downarrow P_2\downarrow P_3 Z_1 D P_4\downarrow \downarrow K\downarrow Z_2\downarrow \Phi\downarrow;\ P_5\downarrow P_6P\downarrow;0\downarrow.$ $\quad P_5\qquad P_5\quad \mathrm{SP}\quad -\qquad Z_2\quad \Phi\qquad P_1\quad 0\quad \Phi\quad \Phi$ $\qquad\qquad\qquad \mathrm{Out.}\qquad Z_3\mathrm{BA}$

$B_x$ (01410÷01412) — entry into IS;
$P_1$ (01560÷1562) — separation of commands with floating and fixed point;
$P_2$ (01564÷01576) — separation of commands calling SP from operations with floating point;

$P_3$ (01604÷01610) — check for sending the result to an address;
$Z_1$ (01612÷01632) — call of a number by address;
$D$ (01634÷01646) — command decoder;
$P_4$ (01736÷01754) — operation distributor;
$K$ (01666) — enable writing by address;
$Z_2$ (01670÷01714) — sending the result to an address;
$\Phi$ (01544÷01556) — call of a command into the IS;
$Z_3$ (015554÷01662) — sending a number into the pseudo-adder;
$P_5$ (01600÷01602) — separation of control-transfer commands and execution of fixed-point operations;
(01414÷01442)
$P_6$ (01444÷01524) — decoder of transfer commands;
$\Pi$ (01650÷01652) — transfer of control;
$O$ (01526÷01542) — execution of a fixed-point operation.

The complete program of the interpreting system is given in the appendix.

Appendix

00100 420 00040 00110 520 01362
2 520 01362 2 450 00044
4 450 00040 4 420 00044
6 420 00044 6 540 01364
00120 450 00044 00230 130 00046
2 560 00044 2 600 00466
4 600 00466 4 420 00052
6 560 00040 6 440 01367
00130 600 00142 00240 450 00052
2 420 00043 2 210 00202
4 430 00047 4 020 00046
6 450 00052 6 510 40001
00140 210 00172 00250 050 00046
2 020 00040 2 420 00044
4 050 00050 4 520 01364
6 020 00044 6 530 00046
00150 050 00040 00260 450 00046
2 020 00050 2 420 00042
4 050 00044 4 510 40002
6 020 00042 6 050 00042
00160 050 00050 00270 020 00040
2 020 00046 2 110 00026
4 050 00042 4 530 00042
6 020 00050 6 450 00042
00170 050 00046 00300 020 00040
2 420 00043 2 110 40001
4 410 01367 4 050 00040
6 450 00056 6 020 00046
00200 570 00047 00310 010 00042
2 020 00046 2 050 00042
4 510 40001 4 110 40027
6 050 00046 6 010 00044
00210 420 00045 00320 010 00040
2 510 00013 2 050 00040
4 530 00046 4 200 00334
6 450 00046 6 420 00042
Address Code Operand Address Code Operand
00220 020 00044 00330 520 01364
2 110 40001 2 450 00040
4 050 00044 4 540 00042
6 120 01362 6 210 00366
00340 020 00042 00450 450 00043
2 600 00366 2 440 00434
4 120 01364 4 610 00466
6 130 01366 6 560 00043
00350 010 00040 00460 210 01370
2 050 00040 2 170 00040
4 020 00042 4 170 00042
6 120 01362 6 237 00000
00360 140 01362 00470 420 00047
2 010 01366 2 410 00043
4 050 00042 4 450 00056
6 020 00042 6 420 00046
00370 510 00001 00500 510 40001
2 050 00042 2 050 00046
4 020 00040 4 420 00042
6 120 01362 6 450 00052
00400 130 00042 00510 020 00040
2 600 00462 2 050 00050
4 420 00040 4 520 01364
6 520 00410 6 540 00044
00410 200 00446 00520 450 00044
2 020 00040 2 170 00040
4 110 00001 4 170 00042
6 050 00040 6 020 00046
00420 420 00042 00530 110 40001
2 510 40013 2 050 00046
4 530 00041 4 020 00044
6 450 00041 6 110 00026
00430 020 00042 00540 530 00046
2 510 00001 2 450 00046
4 050 00042 4 020 00044
6 420 00056 6 110 40001
00440 430 01367 00550 050 00044
2 450 00056 2 020 00050
4 230 00404 4 510 00001
6 420 00056 6 050 00050
00560 420 00052 00670 520 01362
2 510 40013 2 450 00044
4 530 00051 4 600 01370
6 450 00051 6 420 00633
00570 420 00052 00700 050 00054
2 510 00001 2 020 00040
4 450 00052 4 110 00001
6 130 00050 6 050 00040
00600 600 00626 00710 420 00042
2 560 00050 2 510 40013
4 210 00526 4 530 00041
6 020 00042 6 450 00041
00610 010 00046 00720 020 00042
2 050 00042 2 510 00001
4 110 40027 4 050 00042
6 010 00044 6 560 00057
00620 010 00040 00730 610 00746
2 050 00040 2 020 00052
4 230 00526 4 430 00046
6 020 00040 6 050 00052
00630 230 00324 00740 110 40027
2 420 00043 2 030 00044
4 430 00047 4 230 00760
6 410 01367 6 020 00052
00640 050 00056 00750 410 00046
2 020 00040 2 050 00052
4 120 01362 4 110 40027
6 050 00050 6 010 00044
00650 420 00042 00760 010 00050
2 510 40001 2 410 00055
4 050 00052 4 410 00055
6 420 00044 6 050 00050
00660 540 00040 00770 600 00776
2 450 00040 2 450 00057
4 170 00042 4 230 01006
6 420 00044 6 570 00057
01000 020 00052 01110 610 01370
2 600 01010 2 110 40001
4 450 00057 4 050 00044
6 610 01014 6 420 00043
01010 420 01364 01120 520 01367
2 450 00043 2 600 01156
4 420 00050 4 020 00046
6 520 01002 6 110 40001
01020 450 00055 01130 050 00046
2 020 00050 2 020 00044
4 110 00001 4 110 00026
6 050 00050 6 530 00046
01030 420 00052 01140 450 00046
2 110 40027 2 020 00044
4 010 00050 4 110 40001
6 050 00050 6 050 00044
01040 020 00052 01150 420 00043
2 110 00001 2 410 01367
4 050 00052 4 450 00043
6 420 00054 6 420 00043
01050 430 01367 01160 110 40001
2 450 00054 2 410 01367
4 210 00702 4 450 00056
6 230 00374 6 420 01364
01060 020 00044 01170 510 40003
2 050 00040 2 050 00040
4 020 00046 4 050 00050
6 050 00042 6 170 00042
01070 420 00042 01200 170 00052
2 510 40002 2 420 00053
4 050 00046 4 510 00003
6 020 00040 6 200 00626
01100 110 00026 01210 020 00046
2 530 00046 2 030 00042
Address Code Operand Address Code Operand
450 00046 050 00054
020 00040 110 40027
01220 010 00044 01330 050 00052
2 030 00040 2 020 00050
4 600 01234 4 110 00026
6 610 01264 6 130 00052
01230 050 00044 01340 050 00052
2 230 01242 2 130 00042
4 560 00054 4 050 00042
6 600 01230 6 020 00050
01240 230 01226 01350 110 40001
2 020 00054 2 050 00050
4 050 00046 4 130 00040
6 020 00042 6 050 00040
01250 010 00052 01360 230 01202
2 050 00042 2 377 77777
4 110 40027 4 400 00000
6 010 00050 6 000 00001
01260 010 00040 01370 770 03700
2 230 01276 2 777 00070
4 020 00042 4 007 77776
6 140 00052 6 000 77776
01270 050 00042 01400 000 00002
2 020 00040 2 300 00004
4 140 00050 4 640 02400
6 050 00040 6 000 01666
01300 020 00044 01410 420 00466
2 110 00001 2 050 01534
4 050 00044 4 420 01534
6 420 00046 6 520 01402
01310 110 40026 01420 540 01422
2 010 00044 2 200 01526
4 050 00044 4 420 01534
6 020 00046 6 520 01356
01320 110 00001 01430 540 01356
2 050 00046 2 600 01526
4 020 00052 4 420 01534
6 110 40001 6 520 01370
01440 550 01404 01550 050 01554
2 600 01526 2 657 01664
4 170 03252 4 020 00000
6 550 01405 6 050 01534
01450 600 03246 01560 520 01403
2 550 01652 2 600 01414
4 200 01472 4 020 01714
6 420 01534 6 050 01666
01460 520 01372 01570 420 01534
2 030 01554 2 520 01371
4 030 01400 4 550 01470
6 050 03252 6 600 01534
01470 230 01506 01600 550 01530
2 420 01534 2 600 01526
4 520 01373 4 020 01534
6 600 03246 6 210 01612
Address Code Operand Address Code Operand
01500 510 40015 01610 170 01666
2 530 01532 2 120 01374
4 050 03252 4 530 01604
6 420 01534 6 050 01624
01510 230 03240 01620 010 01400
2 530 01544 2 050 01630
4 050 03252 4 020 00000
6 420 01534 6 050 00044
01520 520 01372 01630 020 00002
2 130 01406 2 050 00046
4 050 01534 4 420 01534
6 420 00056 6 520 01371
01530 110 00013 01640 510 40021
2 010 00040 2 010 01740
4 000 00000 4 050 01646
6 050 00040 6 230 01716
01540 110 40013 01650 020 03252
2 450 00056 2 630 01550
4 020 01554 4 020 00044
6 010 01400 6 050 00040
01660 020 00046 01770 050 00062
2 050 00042 2 570 00060
4 570 00056 4 020 02422
6 230 01544 6 050 00044
01670 020 01534 02000 020 02424
2 120 01374 2 050 00046
4 530 01676 4 560 00043
6 050 01706 6 600 02100
01700 010 01400 02010 610 02024
2 050 01712 2 420 00060
4 020 00040 4 410 02427
6 050 00000 6 450 00060
01710 020 00042 02020 637 00632
2 050 00002 2 230 01774
4 230 01544 4 420 00060
6 230 00374 6 430 02427
01720 230 00122 02030 450 00060
2 230 01654 2 637 00470
4 230 00114 4 020 02422
6 230 00100 6 050 00044
01730 230 01670 02040 020 02424
2 230 00470 2 050 00046
4 230 00632 4 560 00043
6 230 01070 6 600 02100
01740 230 01716 02050 610 02024
2 230 01060 2 020 02430
4 230 01766 4 050 00044
6 230 01756 6 020 02432
01750 230 02444 02060 050 00046
2 230 02454 2 420 00060
4 230 00462 4 410 01367
6 020 00044 6 450 00060
01760 050 00040 02070 637 00632
2 020 00046 2 560 00043
4 050 00042 4 600 02100
6 020 00034 6 210 02052
02100 420 00043 02210 130 00046
2 430 02161 2 050 00046
4 450 00043 4 510 40002
6 420 00042 6 050 00052
02110 510 40001 02220 020 00044
2 450 00042 2 510 40001
4 420 00041 4 050 00044
6 510 00013 6 510 00026
02120 530 00042 02230 530 00052
2 450 00042 2 450 00052
4 020 00040 4 020 00044
6 110 40001 6 510 40002
02130 050 00040 02240 050 00050
2 420 00043 2 420 00053
4 410 01367 4 670 00047
6 450 00043 6 450 00047
02140 200 02106 02250 510 00014
2 420 00042 2 670 00052
4 050 00046 4 670 00046
6 020 00040 6 450 00046
02150 120 01362 02260 540 00046
2 050 00044 2 010 00050
4 420 00040 4 010 00044
6 520 01364 6 050 00044
02160 510 40003 02270 120 00054
2 530 02426 2 130 00040
4 050 00040 4 050 00040
6 170 00042 6 120 00054
02170 420 02435 02300 140 00044
2 050 00054 2 050 00044
4 570 00056 4 420 00046
6 020 00046 6 520 00056
02200 510 40001 02310 530 00042
2 050 00046 2 450 00042
4 420 00045 4 520 00056
6 510 00013 6 540 00046
02320 450 00046 02430 240 00000
2 420 00056 2 000 00004
4 510 40004 4 002 00360
6 450 00056 6 356 32624
02330 420 00055 02440 000 04007
2 510 00010 2 000 10470
4 530 00056 4 020 00040
6 450 00056 6 050 00044
02340 020 00054 02450 020 00042
2 510 40004 2 050 00046
4 050 00054 4 020 00004
6 530 00056 6 050 00062
02350 200 02176 02460 020 00034
2 420 00060 2 050 00064
4 520 01364 4 170 00040
6 510 40003 6 170 00042
02360 530 02426 02470 420 02435
Address Code Operand Address Code Operand
2 450 00043 2 050 00054
4 420 00060 4 570 00056
6 440 04427 6 020 00044
02370 600 02374 02500 120 00054
2 610 02406 2 010 00040
4 450 00060 4 050 00040
6 420 00043 6 420 00046
02400 670 02434 02510 520 00056
2 450 00043 2 670 00042
4 230 02364 4 450 00042
6 420 00060 6 540 00042
02410 530 00043 02520 010 00040
2 450 00043 2 050 00040
4 020 00062 4 020 00042
6 050 00034 6 510 40001
02420 237 00000 02530 050 00042
2 255 00574 2 420 00041
4 400 00042 4 510 00013
6 500 00012 6 130 00042
02540 050 00042 02650 520 01364
2 510 40002 2 510 00003
4 050 00052 4 530 00040
6 020 00040 6 450 00040
02550 510 40001 02660 420 00047
2 050 00040 2 510 00003
4 510 00026 4 110 40003
6 530 00052 6 450 00060
02560 450 00052 02670 637 00374
2 020 00040 2 020 02436
4 510 40002 4 050 00044
6 050 00050 6 020 02440
02570 420 00053 02700 050 00046
2 670 00043 2 637 00632
4 450 00043 4 651 00000
6 510 00014 6 420 02776
02600 670 00052 02710 450 02735
2 670 00042 2 420 02703
4 450 00042 4 560 00060
6 540 00042 6 600 02764
02610 010 00050 02720 610 02724
2 010 00040 2 420 02443
4 050 00040 4 450 02751
6 420 00056 6 420 00060
02620 510 40004 02730 441 02434
2 450 00056 2 600 02736
4 420 00055 4 610 02754
6 510 00010 6 450 00060
02630 530 00056 02740 021 02422
2 450 00056 2 050 00044
4 020 00054 4 021 02422
6 510 40004 6 050 00046
02640 050 00054 02750 637 00632
2 530 00056 2 230 02726
4 200 02476 4 641 00006
6 420 00044 6 420 02717
02760 450 02735 03240 520 01373
2 230 02726 2 540 01534
4 020 00062 4 450 01534
6 050 00004 6 020 01534
02770 020 00064 03250 120 01376
2 050 00034 2 010 00000
4 237 00000 4 120 01376
6 000 02754 6 230 01512

REFERENCES

  1. Universal automatic digital computing machines “Ural-11.” Programming manual. Part I. Instruction system. Programming. BNTI, 1965.

Submission history

Interpreting System for Operations on 48-Bit Numbers in Floating-Point Mode on the Ural-11B Digital Computer