Hier der letzte, nicht vollständige, Stand der Bedienungsanleitung.
Bild: birgitH / pixelio.de
I/O-Adressen
| CTC 1 (D233) | Kanal 0 | ECh |
| Kanal 1 | EDh | |
| Kanal 2 | EEh | |
| Kanal 3 | EFh | |
| PIO 1 (D20x) | Port A Daten | F4h |
| Port B Daten | F5h | |
| Port A Control | F6h | |
| Port B Control | F7h | |
| PIO 2 (D201) | Port A Daten | F8h |
| Port B Daten | F9h | |
| Port A Control | FAh | |
| Port B Control | FBh |
| PIO1 (D2xx) | Port A | Bit 0 | ||
| Bit 1 | ||||
| Bit 3 | ||||
| Bit 4 | ||||
| Bit 5 | ||||
| Bit 6 | ||||
| Bit 7 | ||||
| Port B | Bit 0 | |||
| Bit 1 | ||||
| Bit 2 | ||||
| Bit 3 | ||||
| Bit 4 | ||||
| Bit 5 | ||||
| Bit 6 | ||||
| Bit 7 | ||||
| PIO 2 (D244) | Port A | Bit 0 | ||
| Bit 1 | ||||
| Bit 2 | ||||
| Bit 3 | ||||
| Bit 4 | ||||
| Bit 5 | ||||
| Bit 6 | ||||
| Bit 7 | ||||
| Port B | Bit 0 | |||
| Bit 1 | ||||
| Bit 2 | ||||
| Bit 3 | ||||
| Bit 4 | ||||
| Bit 5 | ||||
| Bit 6 | ||||
| Bit 7 |
3.6. Speicherbereiche
Das Monitorprogramm ist in zwei ROM’s U505 (2 x 1 kByte) enthalten. Der RAM-Bereich wird durch 2 Schaltkreise U214 realisiert. Davon sind die letzten 66 Byte für das Monitorprogramm reserviert.
| Adresse | Belegung |
|---|---|
| 0000h – 03FFh | 1. 1kB-PROM |
| 0800h – 0BFFh | 2. 1kB-PROM |
| 0C00h – 0FFFh | 3. 2kB-EPROM (optional) |
| 1000h – 17FFh | 4. 2kB-EPROM (optional) |
| 1800h – 1FFFh | 5. 2kB-EPROM (optional) |
| 2000h – 23FFh | 1kB-RAM-Speicher |
| 2400h – 27FFh | 1kB-RAM-Speicher (optional) |
| 2800h – 2BFFh | 1kB-RAM-Speicher (optional) |
| 2C00h – 2FFFh | 1kB-RAM-Speicher (optional) |
Durch den Decoderschaltkreis DS8205 (D209) wird der ROM-Bereich in Blöcken zu 2 kByte ausgewählt, bei der Adresse 0000h beginnend. Mittels des DS8205 auf Pos. D210 erfolgt die Decodierung des RAM-Bereiches in Blöcken zu 1 kByte, bei der Adresse 2000h beginnend. Über den Anschluß MEDI des CPU-Bus kann mit MEDI = L der gesamte interne Speicherbereich abgeschaltet werden.
| ROM-Adresse | Adresse im RAM-Bereich |
|---|---|
| RST1 – 0008h | 2308h |
| RST2 – 0010h | 2310h |
| RST3 – 0018h | 2318h |
| RST4 – 0020h | 2320h |
| RST5 – 0028h | 2328h |
| RST6 – 0030h | 2330h |
| RST7 – 0038h | 2338h |
3.7. Periphere Bausteine
Die Ansteuerung der Tastatur und der Anzeige erfolgt durch die beiden PIO-Bausteine U855. Die System-PIO D206 gibt über das Port A die Segmentinformation und über das Port B die Digit-Information aus. Diese Signale dienen gleichzeitig der Tastaturaktivierung. Bit 0 und 1 von Port B werden für das Magnetband-Interface verwendet.
4. Programmierbeispiele
4.1 Einerkomplement
| Aufgabe: | Vom Inhalt des Speicherplatzes 2040h ist das Einerkomplement zu bilden (Negation). Das Ergebnis ist auf den Speicherplatz 2041h abzulegen. |
ADR OPCODE SOURCE-STATMENT 2000 ORG 2000H 2000 3A4020 BSP1: LD A, (2040H) ; AUSGABEWERT LADEN 2003 2F CPL ; KOMLEMENT BILDEN 2004 324120 LD (2041H), A ; ERGEBNIS ABSPEICHERN 2007 76 HALT ; CPU-HALT 2040 ORG 2040H ; ADRESSE DATEN 2040 6A DEFB 6AH ; AUSGANGSWERT (BEISPIEL)
Als Ergebnis wird auf dem Speicherplatz 2041h das Ergebnis 95h abgelegt.
4.2 8-Bit-Addition
| Aufgabe: | Die Inhalte der Speicherplätze 2040h und 2041h sind zu addieren. Die Summe ist auf dem Speicherplatz 2042h abzulegen. (Ein eventueller Übertrag ist nicht zu berücksichtigen). |
2000 ORG 2000H 2000 214020 BSP2: LD HL, 2040H ; ADRESSE ERSTER OPERAND 2003 7E LD A, (HL) ; OPERAND NACH A LADEN 2004 2005 2006 2007 2008 2040 2040 2041
6.2 Praktische Beispiele
Beispiel 1: Anzeige ‘HELPUS’
Unter Verwendung des Unterprogramms DAK1 ist der Text ‘HELPUS’ anzuzeigen, solange nicht die Taste “+” gedrückt wird. In diesem Fall soll der Rechner in den HALT-Zustand gehen.
2000 ORG 2000H 2000 DD212020 EX1: LD IX, HELP ; ADR. TEXT 2004 CD5A08 DISP: CALL DAK1 ; ANZEIGE 2007 FE10 CMP 10H ; TASTE "+" 2009 20F9 JRNZ DISP ; FALSCHE TASTE 200B 76 HALT 2020 ORG 2020H 2020 AE HELP: DEFB 0AEH ; "S" 2021 E3 DEFB 0E3H ; "U" 2022 4F DEFB 4FH ; "P" 2023 C2 DEFB 0C2H ; "L" 2024 CE DEFB 0CEH ; "E" 2025 6B DEFB 6BH ; "H"
Durch das Unterprogramm DAK1 wird der Text, der durch das IX-Register adressiert wird, angezeigt. Dieses Unterprogramm wird verlassen, sobald eine Taste (außer RES oder NMI) gedrückt wird. Durch obiges Programm wird getestet, ob die Taste “+” gedrückt wurde. Ist dies der Fall, geht die CPU in den HALT-Zustand; andernfalls wird das Unterprogramm erneut aufgerufen. Die Codierung für die 7-Segment-Anzeige ergibt sich aus dem Bild im Pkt. 3.6. bzw. der Tabelle im Anhang.
Beispiel 2: Blinkende Anzeige ‘HELPUS’
Das Unterprogramm DAK2 steuert die Anzeige für die Dauer von rund 10ms an. Der Text ‘HELPUS’ soll alle 0,5 Sekunden für 0,5 Sekunden aufleuchten.
2000 ORG 2000H 2000 212620 EX2: LD HL, BLANK ; "LEERZEICHEN" 2003 E5 PUSH HL 2004 DD212020 LD IX, HELP ; TEXT "HELPUS" 2008 DDE3 LOOP: EX (SP), IX 200A 0632 LD B, 32H 200C CD8308 LOOP1: CALL DAK2 200F 10FB DJNZ LOOP1 2011 18F5 JR LOOP 2020 ORG 2020H 2020 AE HELP: DEFB 0AEH ; "S" 2021 E3 DEFB 0E3H ; "U" 2022 4F DEFB 4FH ; "P" 2023 C2 DEFB 0C2H ; "L" 2024 CE DEFB 0CEH ; "E" 2025 6B DEFB 6BH ; "H" 2026 00 BLANK: DEFB 0 2027 00 DEFB 0 2028 00 DEFB 0 2029 00 DEFB 0 202A 00 DEFB 0 202B 00 DEFB 0
Zur Änderung der Anzeigezeit ist der Wert auf dem Speicherplatz 200Bh zu ändern, der die Anzahl der Schleifendurchläufe zum Aufruf von DAK2 vorgibt und damit die Zeit bestimmt. Die Änderung des Anzeigetextes ist auf den Speicherplätzen 2020h bis 202Bh möglich.
Beispiel 3: Blinklichtsteuerung
Die OUT-LED soll durch HIGH- bzw. LOW-Signale angesteuert werden, so daß diese blinkt.
2000 ORG 2000H 2000 3EFF EXO3: LD A, 0FFH 2002 D3F5 OUT (0F5H), A 2004 0650 LD B, 50H 2006 CD1820 LOOP1: CALL DELAY 2009 10FB DJNZ LOOP1 200B 3EFD LD A, 0FDH 200D D3F5 OUT (0F5H), A 200F 0650 LD B, 50H 2011 CD1820 LOOP2: CALL DELAY 2014 10FB DJNZ LOOP2 2016 18E8 JR EXO3 2018 0EFF DELAY: LD C, 0FFH 201A 0D LOOP3: DEC C 201B 20FD JR NZ, LOOP3 201D C9 RET
Beispiel 4: Textdarstellung
Mittels der Taste “-” wird die Anzeige gelöscht. Nach dem Drücken der Taste “+” erscheint das Wort “Hallo” in der Anzeige.
Benutzt werden dabei die Textdefinitionen im Monitorprogramm. (Text gemäß Code-Tabelle für die 7-Segment-Anzeige, siehe Anhang.)
2000 ORG 2000H 2000 DD218309 EX04: LD IX, DISP3 ; TEXT "HALLO" 2004 CD5A08 DISPL1: LD B, 50H 2007 FE11 CMP 11H ; TASTE "-" 2009 20F9 JR NZ, DISPL1 200B DD218909 LD IX, DISP4 ; LEER-TEXT 200F CD5A08 DISPL2: CALL DAK1 2012 FE10 CMP 10H ; Taste "+" 2014 20F9 JR NZ, DISPL2 2016 DD218909 LD IX, DSIP4 201A 0E06 LD C, 6 201C 0620 INI1: LD B, 20H 201E CD8308 INI2: CALL DAK2 2021 10FB DJNZ INI2 2023 DD2B DEC IX 2025 0D DEC c 2026 20F4 JR NZ, INI1 2028 18D6 JR EX04
Beispiel 5: Umlauf-Spiel
Die Segmente einer Anzeigestelle werden einzeln nacheinander angesteuert. Der Umlauf wird mittels der Taste “+” gestoppt und mit jeder anderen Taste (außer Reset und Interrupt-Taste) fortgesetzt. In der Tabelle
….
…
Anhang 1
Arbeitszellen im RAM
| Adresse | Länge | Funktion |
|---|---|---|
| 22D8h | ||
| … | 45 | Zwischenspeicher für die Registeranzeige |
| 2305h | ||
| 2308h | RST1 | |
| 2310h | RST2 | |
| 2318h | RST3 | |
| 2320h | RST4 | |
| 2328h | RST5 | |
| 2330h | RST6 | |
| 2338h | RST7 | |
| 2340h | 3 | Seite 19 |
| 23F2h | Datenanzeige 1. Stelle | |
| 23F3h | Datenanzeige 2. Stelle | |
| 23F4h | Adressanzeige | |
| 23F5h | Adressanzeige | |
| 23F6h | Adressanzeige | |
| 23F7h | Adressanzeige |