Electronics D3-28 is a specialized control computing device, which occupies an intermediate position between personal computers and programmable calculators.
Based on the 15ВСМ5 machine, which, in turn, is based on the Wang 700 programmable calculator [1]. It has a built-in keyboard (numeric and function keys), a two-line display on seven-segment indicators (12 digits of the mantissa, two digits of the degree and two sign indicators in each line) and the drive on standard audio cassettes. It is also equipped with interfaces IRPRP and IRPS (in the form of a PEL2.240.001 matching device), to which a printer and an alphanumeric terminal (usually 15IE-00-013 ) were usually connected.
Content
Execution Options
The first editions of D3-28 had firmware stored in ROM on magnetic cores (manually sewn with thin stranded wire on a matrix of ferrite rings). Subsequently, the ROM was performed on integrated circuits. In some test instances, firmware ROMs were installed in the panels; There were special firmware for the use of machines as part of specialized computing systems.
In the production process of the D3-28, the internal architecture and software was improved with the addition of new commands. Generations D3-28 (in accordance with the instruction manual) are divided into "released before October 1979", after this date and "after 1983".
D3-28 16K (15VM16)
16 kilobytes of RAM (microcircuits in the first releases - K565RU1 , in subsequent ones - K565RU3 and K565RU6 ) Externally, they also differed in the red color of the indicators and the Plexiglas covering them (the subsequent models - orange numbers under the green glass).
D3-28 32K (15VM32)
The most massive execution . 32 kilobytes of RAM (565RU6 chips)
D3-28 128K (15VM128)
128 kilobytes of RAM (565RU5 microcircuits)
Depending on the version (numbers after 15ВМ128-xxx), the D3-28 had the ability to connect to photo-reading devices (SP-3 and FS-1501), tape punchers (PL-150M), typewriters (Consul 256, Consul 260), special blocks for connecting terminals of type 15IE-00-013, as well as the ability to connect remote remote control devices D3-28. Connecting Consul machines and a terminal turned the D3-28 into a personal computer. Ability to download and automatically run the program through the interface when you turn on the machine.
Architecture and Command System
The command system of the D3-28 Electronics with 32K of RAM. The D3-28 machine-oriented language commands are encoded with two or four hexadecimal digits: based on KOI-7 (set2) with commands in Russian:
Based on KOI-7 H2 in the form of Russian-language commands and machine 4-digit hexadecimal code for computer electronics DZ-28
.0 | .one | .2 | .3 | .four | .five | .6 | .7 | .eight | .9 | .A | .B | .C | .D | .E | .F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Launcher 00 00 | NZ 00 01 | NT 00 02 | CT 00 03 | KP 00 04 | KTM 00 05 | YES 00 06 | ZV 00 07 | VS 00 08 | GT 00 09 | PS 00 10 | BT 00 11 | PF 00 12 | VC 00 13 | OUT 00 14 | BX 00 15 |
one. | AP1 01 00 | (SS1) 01 01 | (SS2) 01 02 | (SS3) 01 03 | STF 01 04 | NOT 01 05 | SYN 01 06 | Kb 01 07 | An 01 08 | Kh 01 09 | ZM 01 10 | AP2 01 11 | RF 01 12 | Wg 01 13 | РЗ 01 14 | Re 01 15 |
2 | SPACE 02 00 | ! 02 01 | " 02 02 | # 02 03 | ¤ 02 04 | % 02 05 | & 02 06 | ′ 02 07 | ( 02 08 | ) 02 09 | * 02 10 | + 02 11 | ' 02 12 | - 02 13 | . 02 14 | / 02 15 |
3 | 0 03 00 | one 03 01 | 2 03 02 | 3 03 03 | four 03 04 | five 03 05 | 6 03 06 | 7 03 07 | eight 03 08 | 9 03 09 | : 03 10 | ; 03 11 | < 03 12 | {{{2}}} 03 13 | > 03 14 | ? 03 15 |
four. | @ 04 00 | A 04 01 | B 04 02 | C 04 03 | D 04 04 | E 04 05 | F 04 06 | G 04 07 | H 04 08 | I 04 09 | J 04 10 | K 04 11 | L 04 12 | M 04 13 | N 04 14 | O 04 15 |
five. | P 05 00 | Q 05 01 | R 05 02 | S 05 03 | T 05 04 | U 05 05 | V 05 06 | W 05 07 | X 05 08 | Y 05 09 | Z 05 10 | [ 05 11 | \ 05 12 | ] 05 13 | ¬ 05 14 | _ 05 15 |
6 | YU 06 00 | BUT 06 01 | B 06 02 | C 06 03 | D 06 04 | E 06 05 | F 06 06 | R 06 07 | X 06 08 | AND 06 09 | Th 06 10 | TO 06 11 | L 06 12 | M 06 13 | H 06 14 | ABOUT 06 15 |
7 | P 07 00 | I 07 01 | R 07 02 | WITH 07 03 | T 07 04 | Have 07 05 | F 07 06 | AT 07 07 | B 07 08 | S 07 09 | H 07 10 | Sh 07 11 | Uh 07 12 | U 07 13 | H 07 14 | ZB 07 15 |
- NUL - empty, NC (SON) - the beginning of the title, NT (STX) - the beginning of the text, CT (ETX) - the end of the text, the control (EOT) - the end of the transmission, KTM (ENQ) - who is there ?, NO ( NAK) —negation
- negative answer, SIN (SIN) - synchronization, KB (ETB) - end of data block block, ST (DEL) - slaughter, AH (CAN) - cancellation, KN (EM) - end of carrier, 3M (SUB) - replacement, allows replace the symbol, BX, (S1) - input, work with one half of the table, OUT (S0) - output, work with symbols
To facilitate the perception of commands, the mnemonic code is used in assembled form.
- ABGE - addition of units and branching, if greater than or equal to
- ADD - addition
- AND - logical multiplication
- ANS - analysis
- GO - start
- LOAD - load
- LOADP - read from ML
- Div - division
- SUB - subtraction
- RTSI - pseudo return from subroutine
- INP - input
- SOB - unit subtraction and branching
- MARK - label
- MUL - multiplication
- BBIS - branch if bit is set (= 1)
- WAIT - waiting
- SWA - exchange
- CLR - cleaning (zeroing)
- NEG - negation
- Int - integer
- VER - control
- DIG - digit (decimal)
- SQR - square root
- INV is the reciprocal of
- JMM - label control transfer
- XOR - exclusive "or"
- BMER - branch if engine error
- BEV - branching, if even
- BBIC - branching if the bit is cleared (= 0)
- BEQ - branching if equal
- E - exponent, (exponent)
- BLT - branching, if less than
- OR - logical addition
- Bkey-branch if key
- BGE branch if greater than or equal
- BHIS-branch, if more or identical
- MOV - forwarding
- CAP - Cartesian to Polar
- PRINT - print output
- POC - polar to Cartesian (coordinate conversion)
- SAVE - record
- OUT - output
- ATOI - conversion to integer
- POINT - point
- Cmd command
- DEG - degree
- COM - invert
- BR - unconditional branch
- RTII - pseudo return from interrupt
- BSA - Branching or Identity
- RTS - return from subroutine
- RES - residue
- QRT - square
- BPER - branch if program error
- BNE - branching, if not equal
- BPL - branching if plus
- BMI - branching, if minus
- END - the end
Using the keyboard D3-28
- It is possible to work in one of the 4 modes * P *, * B *, * PV *, * P *, set by pressing a key and the indicator lights up next to it.
- Р * is the main one; all programs and commands recorded in the RAM entered from the D3-28 keyboard, from the NML, are executed.
- In * Entering programs into RAM, checking and changing the texts of programs, the command is not executed, but is only recorded in RAM in hexadecimal form at the address indicated in the Y register.
- PV * Print and enter
Character on the key | Team name | Mnemonic | Command code |
---|---|---|---|
M | Tag | MARK | 04 08 |
SL | Read from ML | LOADP | 05 13 |
S | Start | GO | 05 14 |
VP | Call from memory | MOV C, X | 04 05 |
ZP | Memory entry | MOV X, C | 04 04 |
Memory Organization
- In D3-28, RAM is conditionally divided into two zones: working and service. The cells of the service area are referred to as registers.
- The working zone of 32-kilobyte machines occupies addresses from 0.00.00.00 (00000 dec.) To 7.14.15.15 (in hexadecimal form 0x7EFF or 32511 dec.) In this zone the data and user programs are placed.
- The service zone occupies the last 256 bytes of RAM from 7.15.00.00 (32512 dec.) To 7.15.15.15 (32767 dec). In some registers information is stored for normal operation of D3-28, part of the free can be used for commands.
- The structure of the service area of RAM: from 7.15.00.00 to 7.15.01.15 located sixteen two-byte registers R00, RO1 ... R15, each R-register consists of two bytes of RAM with neighboring addresses, the lower byte with the lower address is the oldest. Registers R08 ... R15 consist of sixteen single-byte registers S00 ... S15.
- The four registers R04, R05, R06, R07 form the eight-byte register RR, which is used in commands 12 06 (MOV X, RR) and 12 07 (MOV RR, X).
All memory is addressed independently in two main ways:
- For teams working with floating-point numbers, memory is a set of consecutive 16-byte numbers (12 bytes is the decimal mantissa, 2 bits are the sign of the number and the sign of order, three tetrads are three decimal digits of the degree). Cell address is the conditional number of such a number from 0 to (memory size / 16).
- Floating numbers are stored in two different formats. In one, when the address was a cell number, the number is occupied by either higher or lower nibbles in 16 bytes arranged in a row and aligned to an address multiple of 16. In the other number, it occupies the entire 8 bytes in a memory in a row. In this case, the capacity and other characteristics of the numbers are the same. The first form was inherited from the calculator and allowed only commands with direct addressing (0-255, since the address was byte), the second - only commands with indirect addressing, but all memory is addressed.
- For commands of integer arithmetic and logic with bytes, 16 and 32-bit words, the address is the physical address of the first, most significant byte of the word.
- The order of the bytes in the words - from older to younger.
- The architecture is eclectic [ clarify ] . For an unconditional transition or transition to a subprogram, at least 4 methods are used: by searching for a “label” in the program body (byte sequence 04 08 <tag>), by sequential scanning (explicit calculator legacy), with relative addressing - within 256 bytes from the branch command , at the address in the register, on the transition table.
In the 128-kilobyte version, paging memory is used with instantly switchable (by changing the state of the corresponding cells) pages of 16 kilobytes each. The address space without switching is 32 kilobytes.
Registers and Indicators
Registers were addressed as memory locations for some fixed addresses. At the same time, the X and Y registers of floating point arithmetic are displayed on indicators.
In the stop mode, most of the keys on the panel performed arithmetic and functional operations with numbers in the X and Y registers.
When the program was running on indicators, the states of the X and Y registers were displayed, however, there were several commands that allowed changing the way the corresponding memory area was mapped to one of several service ones.
When debugging and running a step-by-step execution, the indicators displayed the address of the command being executed, the code and the three following byte commands in the memory.
The registers of work with bytes, 16-bit words were 16 each, while the 16 byte registers physically coincided with the first eight 16-bit registers.
I / O ports
The machine had a standard tape reader / writer. The I / O interface allows you to connect a punch and a reader with a punched tape, as well as a floppy eight-inch drive
Computer Error Messages D3-28
0 - user memory overflow 1 - invalid statement 2 - input line overflow 3 - invalid limiter in line 4 - invalid line number 5 - inconsistency of quotation marks in sentence 6 - no opening brackets before function argument 7 - invalid LET 10 operator - incorrect entry indices 11 - wrong dimension of index 12 - inconsistency of brackets in expression 13 - invalid element of expression 14 - user function not defined 15 - wrong name of variable 20 - wrong statement Relationship 21 is invalid IF 22 statement is invalid COM or DIM 23 statement - not enough space for DIM 24 array - incorrect DEF 25 statement - no data for READ 26 operator - invalid DATA 27 statement - incorrect CMD 30 command format - incorrect format in operator FOR-NEXT 31 - no NEXT 32 - did not exist FOR 33 - stack overflow FOR-NEXT 34 - zero step FOR 35 - invalid operator format PRINT 36 - incorrect print format 37 is set - invalid expression in TAB 38 operator - no opening record in ML 43 - there is no line to go through the operator GOSUB or GOTO 44 frames - no external subroutine with the specified name 50 - incorrect proposal with service operator ML 52 - failure of file structure 53 - absence of array in the storage device when receiving from ML 54 - another data block with ML in RAM 55 is not read - read block does not fit in RAM 123 - non-existent variable 128 - incorrect operation in the calculation process
Network Structure
A specification was developed and implemented for a local network of up to 255 devices (machines or external devices, for example, printers) built on the parallel interface of the IGPR. Topology is a common bus. The number of connecting conductors is 34. From 5 to 18 machines were connected in the computer hall of the MIPT .
Software
BASIC
On the computer Electronics D3-28 implemented BASIC (option 3A). It is interesting because it allowed, immediately after loading the interpreter, to load extensions in native code from the NML. Extensions were called via the CALL operator by the number of the extension package. These extensions made it possible to compensate for the limitations of the language, there were extensions for working with strings, for densely packing integer data, and numerous extensions for working with peripheral equipment. Initially, BASIC 3A supported only real numbers.
Tuzhilkinsky BASIC
Named by the author’s last name - Vladimir Alekseevich Tuzhilkin, was distributed mainly in the Moscow Institute of Physics and Technology, where it was written. Advantages - more functionality and less memory footprint than the “official” version (8 kb versus 10.5 kb). Disadvantage - it was designed for non-standard connection of the display 15IE-00-013, which limited its distribution. I used the program and data storage format, which is also incompatible with the original version, however, thanks to the access of a large number of MIPT students to these machines, the amount of “software” written for this dialect far exceeds that of other programs for D3-28.
FORTRAN-5M
Self, derived after the successful launch of the complex. Worked only on systems with 128k of memory. The origin is unknown. The Fortran dialect, a compiler that was rare for this machine, gave a performance comparable to the program originally written in codes. Scopmpilified binary program could be recorded on tape and used independently. During compilation, the source code of the program was sometimes destroyed (probably in the case of a large volume), but it allowed to correctly save the executable module. Allowed to implement fragments in machine codes. It may have been the basis or early version of the OS BT-MKHTI.
OS BT-MChTI
In the Moscow Institute of Chemical Technology. DI. Mendeleev created an operating system called the institute - OS VT-MKTI. The developer of this system was Vladimir Kalinkin. The system included the interpreter-compiler of its own programming language BT-MKhTI, which worked an order of magnitude faster than the regular BASIC and a number of system utilities . The system was generated from a generator cassette (by analogy with the EU-1022 ), the generated system was recorded on the second cassette. A special feature of the BT-MChTI programming language is the use of both English-speaking and Russian-language recruitment of operators and the availability of interactive input (something like T9 on modern smartphones ). It is difficult to find a description of the OS BT-MCTI in the network, but there are a lot of users who remember about this system.
http://www.phantom.sannata.ru/forum/index.php?t=&p=153740#pp153740#pp153740
http://www.chemport.ru/forum/viewtopic.php?f=1&t=5597&start=60#p596777
See also
- Electronics 15ВСМ-5 is a device, externally and through the main controls, devices and logical organization of memory, very similar to D3-28, but having 1 kilobyte of RAM on ferrite ringlets, 256 words of firmware ROM, executed in the form of ferrite ringlets with conductors passed through them .
Notes
- ↑ Rick Bensene. Wang 720C Advanced Programming Calculator (English) (inaccessible link) . The Old Calculator Web Museum (September 3, 2008). The appeal date is September 12, 2010. Archived on August 3, 2010.
Links
- Photo Gallery: Sergey Frolov. Electronics D3-28 15ВМ128-019 (Inaccessible link) . The collection of Soviet digital electronics by Sergey Frolov (August 28, 2010). The date of circulation is September 12, 2010. Archived August 18, 2011.