Microcomputers for education

from Wikipedia, the free encyclopedia
MFA

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

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 CALLin memory after the command on the screen and printer (if on). The character to be output must be DBwritten 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:
C. format
0 ASCII characters
1 Binary number
2 decimal number
3 Hexadecimal number

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 CALLOutputs the text behind the command on the screen. The text must be DBloaded 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 Dies ist eine Uebung.

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 WBUFIentered 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 DBloaded 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:

address Hex ASCII characters
E000 31 1
E001 32 2
E002 33 3
E004 00 non-numeric final character

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 PRTLNNthe 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 PRTLNN+1, the sign flag is automatically set to zero (positive).

DRUSWP 3ECE Switch printer (on / off).

literature

Web links