Microcomputers for education
The microcomputer for training ( MFA ) is a German microcomputer for training. He was z. B. used in training to become a communications electronics technician .
Furnishing
The MFA is built in a modular 19 "housing and can be equipped with a wide variety of expansion cards. All components, including the basic components such as CPU , RAM or ROM, are designed as plug-in cards . Among other things, there are also cards that allow direct access on the data, address and system bus of the system. The MFA is therefore well suited to reproduce the processes in a computer . Programming is mostly done in assembler . Via the RS232 interface, it can be connected to a PC on which a terminal emulation runs, which then takes over the keyboard input and the screen output. However, you can also connect your own keyboard and monitor . Later support for the operating system CP / M was added. For this purpose, a bootstrap loader was provided in an EPROM, which himself copied into the memory and then switched off the EPROM in order to then load the first sector of the diskette, from d em further routines for loading the operating system CP / M emerged. After switching off the EPROM, up to 64 kB of RAM was available for the CP / M to use. Communication with the operator then took place via an 8251 UART card in connection with a terminal. With the MAT85 system, communication ran via the SID and SOD pins of the 8085 processor. The serial protocol was only implemented using software. Using the 8251-UART versus the software solution frees up a lot of computing power in which other tasks can be taken over by the processor.
Technical specifications
- Year of publication: 1979
- Manufacturer: BFZ (Vocational Promotion Center) Essen. The vgs publishing house in Cologne took over the distribution of hardware and accompanying books
- Processor : Intel 8085 , 4 MHz
- ROM : 32 kB
- RAM : 32 kB
- Operating system : MAT85
- Interfaces : keyboard , video, RS232 , printer , 8-bit parallel input, 8-bit parallel output, AD converter , DA converter , timer card ( 8253 ), parallel input / output with 3x8 bit ( 8255 ), printer connection (based on the 8255 card), cassette interface (based on the RS232 card).
- Extensions: floppy disk drive (5¼ "and 3½"), EPROM burner
Operating system MAT 85
Setting the interface: COM 1, 4800, N, 8, 1
Monitor commands display program sequences on the screen or enable dialog with the computer.
Monitor commands
command | Abbreviation | function |
---|---|---|
BREAKPOINT: | B. | This command makes it possible to enter breakpoints with the GO command. Breakpoints are addresses from the memory area of the user program at which program processing is to be interrupted. After the interruption, the contents of the CPU register are displayed. |
GO: | G | Entered programs can be started with this command. |
HELP: | H | Serves to display all available commands of the operating system. |
IN: | I. | This command is used to read and display data from input ports. |
MEMORY: | M. | With this command, the contents of memory lines can be printed out and changed in various formats (B = bit, H = hex, A = ASCII). |
OUT: | O | Used to send data to output ports. |
PRINT: | P | This command can be used to format the contents of memory lines in different formats (binary, hexadecimal, decimal, ASCII) (max. 8 contents per line). |
REGISTER: | R. | With this command, the initial values of the CPU register, e.g. B. can be specified before a test run of the user program.
Assembler / disassembler commands |
ASSEMBLER: | A. | With this command, a program is called which enables application programs to be entered in mnemonic code. The code entered is translated line by line into the associated machine code and stored in the RAM memory. |
DISASSEMBLER: | D. | This command can be used to translate programs that are stored in the machine code into the assembler code. |
NEXT INSTRUCTION: | N | With this command, a tracer is activated, which enables the execution and operation of a specified number of program commands to be followed. for this purpose, program processing is briefly interrupted after each command and the contents of all CPU registers are logged. |
TRACE INTERVAL: | T | This command causes the register contents to be logged whenever those program commands are processed that are located in a memory area to be determined beforehand. |
Operating system subroutines
The operating system subroutines listed in the following table can be used in your own programs. In order to be able to use the names of the subroutines specified in the table in a program, these names must first be assigned to the associated addresses using the EQU instruction.
Subpr. Surname | Incoming address | Change register | function | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
KMD
|
0040 | Return to the assembler command routine and print out KMD>
|
||||||||||||||||
RCHAR
|
0043 | A. | Reads a character from the keyboard. the ASCII code of the character is in the battery. With [ESC] return to the command routine and ring the bell. | |||||||||||||||
WCHAR
|
0055 | Outputs 1 character CALL in memory after the command on the screen and printer (if on). The character to be output must be DB written into memory with the instruction.
Example: CALL 0055 DB 'A' ; A wird ausgegeben |
||||||||||||||||
WAHEX
|
0058 | Outputs the battery contents (8 bit) as two hexadecimal digits on the screen and printer. | ||||||||||||||||
WHLHEX
|
005B | H, L | Outputs the HL register content (16 bits) as four hexadecimal digits on the screen and printer. | |||||||||||||||
WABIN
|
005E | A. | Outputs the battery contents (8 bit) as a binary number on the screen and printer.
Example: MVI A,23 ; 23 Hexadezimal CALL 005E ; wird als 00100011 ausgegeben |
|||||||||||||||
WADEZ
|
0061 | A. | Outputs the battery content (8 bit) as a decimal number on the screen / printer.
Example: MVI A,23 ; 23 Hexadezimal CALL 0061 ; wird als 35 ausgegeben |
|||||||||||||||
WAFOR
|
0064 | A, C | Outputs the battery contents (8 bit) in one of the formats to be selected ASCII binary decimal hex on the screen / printer. The format is selected by the content of register C as follows:
Example: MVI A,23 ; 23 Hexadezimal MVI C,1 ; binär auswählen CALL 0064 ; wird als 00100011 ausgegeben |
|||||||||||||||
WBLANK
|
0067 | Outputs a space on the screen / printer. | ||||||||||||||||
WBUFI
|
006D | CALL Outputs the text behind the command on the screen. The text must be DB loaded into memory with the instruction. At the end of the text there must be a 0 as the end identifier.
Example: CALL 006D DB 'Dies ist eine Uebung',00 Outputs the text |
||||||||||||||||
WCRLFI
|
0073 | Is a carriage return (CR, carriage return ), a new line (LF, line feed ), and text in this new line. The text must be WBUFI entered as before.
Example: CALL 0073 DB 'Text in neuer Zeile',00 |
||||||||||||||||
HADR
|
08DF | Reads a 16-bit address (4 hex digits) from the keyboard and saves it in the HL double register. The more significant part of the address is placed in the H register and the less significant part in the L register. The entry of the address must be completed with [ carriage return ] or [space]. | ||||||||||||||||
BSTIME
|
0895 | A, D, E | Time delay of 0.24 seconds. So that the contents of registers A, D and E are saved before the subroutine is called and subsequently restored, the following command sequence must be observed:
PUSH PSW ;Programmstatuswort (A, Flags) retten PUSH D ;D retten CALL 0895 ;Zeitverzögerung POP D ;D wiederherstellen POP PSW ;Programmstatuswort (A, Flags) wiederherstellen |
|||||||||||||||
CMP2
|
0ED8 | A. | Compares the contents of the DE register with those of the HL register. If (HL)> (DE), the carry flag is set to 1, otherwise to 0. The contents to be compared must be loaded into the double registers DE and HL before the subroutine is called.
Example: LXI D,Zahl1 LXI H,Zahl2 CALL CMP2 |
|||||||||||||||
SUB2
|
1039 | A, HL, DE | Subtracts the 16-bit numbers in the double register DE from the 16-bit number in the double register HL. The result is then in the double register HL.
[(HL) = (HL) - (DE)] |
|||||||||||||||
WBUF
|
0BA1 | Outputs text from a text buffer, the start address of which is addressed by the content of the HL register. The text is DB loaded from this address with the instruction. The end of the text must be marked with 0. After the text has been output, the HL register points to the address after the end character.
|
||||||||||||||||
TSTNUM
|
326F | A, B, C, D, E, H, L | Converts a decimal number that is in ASCII into a binary number. The ASCII number must be in the memory, with the more significant digits occupying the lower memory cells.
Example for the number 123:
the permitted range of values is from 0 to +65535. Leading spaces are allowed. The address of the first digit must be in the DE register when the subroutine is called. The ASCII number must end with a non-numeric character. The binary number that corresponds to the ASCII number is located in the HL register pair after the return. The number of digits is in the B register. Error: If no digit is found, the B register contains the value 00. If the permitted number range is exceeded, the B register contains the value FF. After returning, the following error test is therefore recommended: INR B JZ ueberlauf DCR B JZ keine-Ziffer |
|||||||||||||||
TN0
|
3272 | A, B, C, D, E, H, L | Like TSTNUM , but no leading spaces allowed.
|
|||||||||||||||
DIVIDE
|
3AFE | A, B, C, D, E, H, L | Divides the content of the HL register pair by the content of the DE register pair. The result is in the BC register, the rest in the HL register. No error message when dividing by zero. | |||||||||||||||
PRTNUM
|
3C43 | A, B, C, D, E, H, L | Prints a number in decimal notation. When the subroutine is called, the number must be a two's complement in the HL register pair (FFFF = −1). A space is output in front of positive numbers. A space is output after each number. Number range: −32768 to +32767. | |||||||||||||||
PRTLNN
|
3C46 | A, B, C, D, E, H, L | How PRTNUM . The number in the HL register pair must, however, be in normal binary coding (FFFF = 65535). If PRTLNN the sign flag in the flag register is zero when the is called, a positive number is output. If the sign flag is equal to one, it becomes negative
Number (with preceding "-") output. When called |
|||||||||||||||
DRUSWP
|
3ECE | Switch printer (on / off). |
literature
- MFA media system Technical practical exercises Volume 1 ISBN 3-8025-1231-6
- MFA media system Technical practical exercises Volume 2 ISBN 3-8025-1232-4
- MFA media system Technical practical exercises Volume 3 ISBN 3-8025-1241-3
- MFA media system Specialized theoretical exercises ISBN 3-8025-1233-2