DAG Technikum MP Lernsystem (Z80 Trainer)

Bei diesem Artikel sammle ich alle Infos zu meinem MP Lernsystem vom DAG Technikum.

Es gibt mehrere ähnliche Einplatinencomputer die als Lernsystem oder Trainer verwendet wurden. Die einzelnen Systeme unterscheiden sich in ihrer Speicherorganisation und dem Umfang der Schnittstellen.

  • DAG MP Lernsystem
  • DAG Z80-Lernsystem
  • DAG Z80-Trainer
  • SEL Z80-Trainer

Hier die Hardwaredaten des DAG MP Lernsystem

  • Prozessor: Z80A / 2 MHz
  • ROM: 8K
  • RAM: 16K
  • Betriebssystem: MONI 1.5
  • Versorgungsspannung: Integriertes Netzteil (+5V, +/-12V)
  • Kommunikations-Interface: Seriell, Paralell,
  • Kassetten-Interface für Datenrecorder
  • Anzeige: 8 x 7-Segment-Anzeige und LED für HALT
  • HEX-Tastatur (2 x 16 Tasten)
  • ECB: 1 Pfostenstecker mit 3 x 32 Pins

Speicherbelegung

  • 0000 – 0FFF Monitorprogram Version 1.5
  • 1000 – 17FF RAM-1
  • 1800 – 1FFF RAM-2

I/O-Belegung

  • 00 … 03 Tastatur/Anzeige-Schnittstelle (IC 8279)
  • 04 … 07 Parallel-Schnittstelle (IC 8255)
  • 08 … 0B Einzelschritt-Zähler (IC 74LS73)
  • 0C … 0F 8-Bit Parallel-Port (IC 74LS244/74LS373)
  • 10 … 17 Benutzer-Anzeige (IC 74C917)
  • 18 … 1C Serielle Schnittstelle (IC 8251)
  • 1D … 1F Decodierte Adresse auf ECB Bus
  • 20 EPROM-Daten (IC 8255)
  • 21 … 22 EPROM Adressen (IC 8255)
  • 23 Steuerwort (IC 8255)
  • 24 Typumschaltung (IC 74LS373)
----------------------------------------------------------------------------
Adresse Objekt-Code Zeile Marke Quell-Code Kommentar
----------------------------------------------------------------------------
1200 1 ORG 1200H Programm-Startadresse
2 Freizeile
1200 DB 0C 3 START: IN A,(0C) Daten einlesen (8xBinärschalter)
1202 D3 0C 4 OUT (0C),A Daten ausgeben (8xLED)
1204 76 5 HALT Programm anhalten
----------------------------------------------------------------------------

Binärzähler mit Pause (Startadresse 1000H)

Speicherbelegung

Adresse Hex Bedeutung
1000 3E LD A,nn
1001 00 Startwert
1002 D3 OUT
1003 0C LED Port
1004 06 LD B,nn
1005 FF Delaywert
1006 10 DJNZ
1007 FE zurück zu 1006
1008 3C INC A
1009 18 JR
100A F7 zurück zu 1002

Binärzähler mit einstellbarer Geschwindigkeit

Startadresse 1000H

Speicher

Adresse Hex Bedeutung
1000 0E LD C,nn
1001 00 Startwert
1002 79 LD A,C
1003 D3 OUT
1004 0C LED Port
1005 DB IN
1006 0C Schalter lesen
1007 47 LD B,A
1008 10 DJNZ
1009 FE Delay
100A 0C INC C
100B 18 JR
100C F4 zurück zu 1002

Binärzähler mit doppelter Warteschleife

Startadresse 1000H

Adresse Hex Bedeutung
1000 F3 DI – Interrupts aus
1001 0E LD C,nn
1002 00 LED-Startwert
1003 DB IN
1004 0C Schalter lesen
1005 47 LD B,A
1006 79 LD A,C
1007 D3 OUT
1008 0C LED ausgeben
1009 16 LD D,nn
100A FF innerer Delay
100B 15 DEC D
100C 20 JR NZ
100D FD zurück zu 100B
100E 10 DJNZ
100F F9 zurück zu 1009
1010 0C INC C
1011 C3 JP
1012 03 Adresse
1013 10 1003

2️⃣ Schalter → invertierte LED

Sehr gut für Logikübungen.

Speicher

Adresse Hex Bedeutung
1000 DB IN
1001 0C Schalter
1002 2F CPL
1003 D3 OUT
1004 0C LED
1005 C3 JP
1006 00 Adresse
1007 10 1000

3️⃣ LED-Lauflicht

Jetzt ebenfalls ab 1000H.

Speicher

Adresse Hex Bedeutung
1000 3E LD A
1001 01 Startbit
1002 D3 OUT
1003 0C LED
1004 07 RLCA
1005 20 JR NZ
1006 FB Sprung zurück
1007 C3 JP
1008 02 Adresse
1009 10 1002

Z80 Programm

Simulation der Logik-Karte „Logische Verknüpfungen 1 – System 0“

System: DAG MP-Lernsystem
Startadresse: 1100H

Funktion

Die Schalter werden logisch ausgewertet und auf bestimmte LEDs ausgegeben.

Funktion Schalter LED
UND F=a∧b∧cF = a ∧ b ∧ c linke 3 Schalter 2. LED von links
NEGATION F=¬aF = ¬a mittlerer Schalter 4. LED von links
ODER F=a∨b∨cF = a ∨ b ∨ c rechte 3 Schalter 7. LED von links

Interrupts werden abgeschaltet, damit der Monitor nicht in die LED-Anzeige eingreift.


Hex-Programm (ab Adresse 1100H)

Adresse Hex Bedeutung
1100 F3 DI – Interrupts aus
1101 DB IN
1102 0C Schalter lesen
1103 5F LD E,A
1104 16 LD D,nn
1105 00 Ausgangsregister löschen
1106 7B LD A,E
1107 E6 AND
1108 E0 Maske Bits 7..5 (UND)
1109 FE CP
110A E0 alle drei =1 ?
110B 20 JR NZ
110C 04 Sprung
110D 7A LD A,D
110E F6 OR
110F 40 LED Bit6 setzen (2. von links)
1110 57 LD D,A
1111 CB BIT
1112 63 BIT 4,E (Negation-Schalter)
1113 20 JR NZ
1114 04 Sprung
1115 7A LD A,D
1116 F6 OR
1117 10 LED Bit4 setzen (4. von links)
1118 57 LD D,A
1119 7B LD A,E
111A E6 AND
111B 07 Maske Bits 0..2 (ODER)
111C 28 JR Z
111D 04 Sprung
111E 7A LD A,D
111F F6 OR
1120 02 LED Bit1 setzen (7. von links)
1121 57 LD D,A
1122 7A LD A,D
1123 D3 OUT
1124 0C LED anzeigen
1125 C3 JP
1126 01
1127 11 zurück zu 1101
Dieser Beitrag wurde unter Einplatinen-Computer abgelegt und mit verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert