EMUF Überblick
Die Zeitschrift mc – Die Mikrocomputer-Zeitschrift hat in den frühen achtziger Jahren diverse Anleitungen für Einplatinen-Computer veröffentlicht. Dazu zählen auch diverse EMUF (Einplatinen-Mikrocomputer für universelle Festprogramm-Anwendungen) Varianten, die auf den damals gebräuchlichsten CPUs basierten.
Die EMUFs waren nicht dafür gedacht, Programme zu entwickeln, weil sie von Haus aus nicht über ein Monitorprogramm und eine Bedieneroberfläche verfügten, sondern sollten eine Art softwaregesteuerte Logikschaltung sein. Das bedeutet, dass der EMUF in Verbindung mit einem Anwendungsprogramm (im EPROM), das auf einem anderen Computer entwickelt wurde, zu einem Controller für alle möglichen Steueraufgaben gemacht werden konnte.
Vor einiger Zeit konnte ich bei ebay einen Z80-EMUF erwerben, der in der mc 4/1983 beschrieben wurde.
Um den Z80-EMUF wieder in Betrieb zu nehmen, wurden zwei Dinge benötigt: eine elektrische und mechanische Adaption mit Spannungsversorgung und ein Testprogramm.
Mechanische und elektrische Adaption
Die mechanische Adaption ist im Titelbild zu diesem Blog nachvollziehbar. Die Spannungsversorgung erfolgt über ein Netzteil mit USB-Kabel (der EMUF benötigt 5 Volt) und alle Anschlüsse sind auf die Pinheader der Basisplatine geführt und damit für weitere Tests und Experimente verfügbar. Die Leiterplatte wird einfach in die Kartenhalter eingeschoben.
Testprogramm
Die Veröffentlichung in der mc bietet auch ein Testprogramm an, bei dem alle Hardwarekomponenten getestet werden (s. folgendes Listing).
0001 0000 .org 0000h
0002 0000 ; Testprogramm für Z80 EMUF:
0003 0000 ; auf den Ausgängen der PIO's
0004 0000 ; wird nacheinander gezählt
0005 0000
0006 0000 RAM equ 8000h
0007 0000
0008 0000 PIO0 equ 0
0009 0000 PIO1 equ 10h
0010 0000 ; PIO Adressen:
0011 0000 ; PIO+0: Port A
0012 0000 ; PIO+1: Port B
0013 0000 ; PIO+2: Control Port A
0014 0000 ; PIO+3: Control Port B
0015 0000
0016 0000 3E CF EMUT1: ld a,11001111b; Initialisierung aller Ports auf Einzelbit Ein- und Ausgabe
0017 0002 D3 02 out (PIO0+2),a
0018 0004 3E 00 ld a,0
0019 0006 D3 02 out (PIO0+2),a
0020 0008 3E CF ld a,11001111b
0021 000A D3 03 out (PIO0+3),a
0022 000C 3E 00 ld a,0
0023 000E D3 03 out (PIO0+3),a
0024 0010
0025 0010 3E CF ld a,11001111b; Initialisierung PIO2 analog zu PIO1
0026 0012 D3 12 out (PIO1+2),a
0027 0014 3E 00 ld a,0
0028 0016 D3 12 out (PIO1+2),a
0029 0018 3E CF ld a,11001111b
0030 001A D3 13 out (PIO1+3),a
0031 001C 3E 00 ld a,0
0032 001E D3 13 out (PIO1+3),a
0033 0020
0034 0020 06 00 LOOP: ld b,0
0035 0022 78 L1: ld a,b
0036 0023 32 00 80 ld (RAM),a; RAM Adresse 00 .. FF wird angesprochen
0037 0026 3A 00 80 ld a,(RAM)
0038 0029 D3 00 out (PIO0+0),a
0039 002B 05 dec b
0040 002C C2 22 00 jp nz,L1
0041 002F
0042 002F 06 00 ld b,0
0043 0031 78 L2: ld a,b; jetzt 2. Port PIO0
0044 0032 32 00 80 ld (RAM),a;
0045 0035 3A 00 80 ld a,(RAM)
0046 0038 D3 01 out (PIO0+1),a
0047 003A 05 dec b
0048 003B C2 31 00 jp nz,L2
0049 003E
0050 003E 06 00 ld b,0
0051 0040 78 L3: ld a,b; jetzt 1. Port PIO1
0052 0041 32 00 80 ld (RAM),a;
0053 0044 3A 00 80 ld a,(RAM)
0054 0047 D3 10 out (PIO1+0),a
0055 0049 05 dec b
0056 004A C2 40 00 jp nz,L3
0057 004D
0058 004D 06 00 ld b,0
0059 004F 78 L4: ld a,b; jetzt 2. Port PIO1
0060 0050 32 00 80 ld (RAM),a;
0061 0053 3A 00 80 ld a,(RAM)
0062 0056 D3 11 out (PIO1+1),a
0063 0058 05 dec b
0064 0059 C2 4F 00 jp nz,L4
0065 005C
0066 005C C3 20 00 jp LOOP
0067 005F
0068 005F DS 1000h
0069 105F .END
Das Testprogramm kann im Intel-Hex-Format (als .zip Datei) heruntergeladen werden und in ein EPROM gebrannt werden.