Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
z9001:literatur:treiber [2010/07/23 12:24] – Page moved from z9001:treiber to z9001:literatur:treiber volkerp | z9001:literatur:treiber [2020/03/31 14:50] (aktuell) – [3.2. ASGN-Kommando] volkerp | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== mp 10/87 S. 311 ff. ====== | ====== mp 10/87 S. 311 ff. ====== | ||
- | Für den Z9001 gibt es ein CP/ | + | Für den Z9001 gibt es ein CP/ |
+ | |||
+ | Im [[z9001: | ||
===== Standard-Interfaces über den User-Port des KC 85/1 ===== | ===== Standard-Interfaces über den User-Port des KC 85/1 ===== | ||
Zeile 12: | Zeile 14: | ||
==== 1. User-Port des KC85/1 ==== | ==== 1. User-Port des KC85/1 ==== | ||
- | {{z9001-interfaces_bild1.gif? | + | {{z9001:z9001-interfaces_bild1.gif? |
Bild 1 zeigt den für den Anwender frei verfügbaren User-Port des KC 85/1. Er ist über eine 15polige EFS-Buchse an der rechten Seite des Gerätes dem Nutzer zugänglich und besteht aus einem PIO-Port und einem CTC-Kanal. Diese Peripherieschaltkreise sind über folgende E/ | Bild 1 zeigt den für den Anwender frei verfügbaren User-Port des KC 85/1. Er ist über eine 15polige EFS-Buchse an der rechten Seite des Gerätes dem Nutzer zugänglich und besteht aus einem PIO-Port und einem CTC-Kanal. Diese Peripherieschaltkreise sind über folgende E/ | ||
Zeile 20: | Zeile 22: | ||
CTC1: 81H | CTC1: 81H | ||
- | Bei der Nutzung dieser Schnittstelle müssen unbedingt die zulässigen Pegel und Lastbedingungen von PIO und CTC beachtet werden, da diese Anschlüsse im KC 85/1 *nicht* gegen Überlastung bzw. Zerstörung geschützt sind. | + | Bei der Nutzung dieser Schnittstelle müssen unbedingt die zulässigen Pegel und Lastbedingungen von PIO und CTC beachtet werden, da diese Anschlüsse im KC 85/1 **nicht** gegen Überlastung bzw. Zerstörung geschützt sind. |
==== 2. Software-Realisierung von Standard-Interfaces ==== | ==== 2. Software-Realisierung von Standard-Interfaces ==== | ||
- | Aus Bild 1 geht hervor, daß dem Anwender am User-Port 8 freiprogrammierbare Leitungen und jeweils zwei Ein- und Ausgabeleitungen mit speziellem Verhalten zur Verfügung stehen. Diese Belegung erlaubt bei konsequenter Ausnutzung die Realisierung so gängiger Standard-Interfaces wie SIF-1000, V24(RS 232C) und CENTRONICS derart, daß viele Geräte mit diesen Schnittstellen direkt an den User-Port angeschlossen werden können. Die notwendigen Hardware-Arbeiten beschränken sich - wie die folgenden Beispiele zeigen - auf das Anfertigen eines Kabels und evtl. erforderliche Pegelanpassungen (V24). Es sei darauf hingewiesen, | + | Aus Bild 1 geht hervor, daß dem Anwender am User-Port 8 freiprogrammierbare Leitungen und jeweils zwei Ein- und Ausgabeleitungen mit speziellem Verhalten zur Verfügung stehen. Diese Belegung erlaubt bei konsequenter Ausnutzung die Realisierung so gängiger Standard-Interfaces wie SIF-1000, V24(RS 232C) und CENTRONICS derart, daß viele Geräte mit diesen Schnittstellen |
==== 2.1. SIF-1000 ==== | ==== 2.1. SIF-1000 ==== | ||
Zeile 61: | Zeile 63: | ||
Für die Auswertung des END-Signals wurde der Zähler-Eingang des CTC-Kanales benutzt. Damit sind die in Tafel 1 und 2 angeführten Routinen zur softwaremäßigen Realisierung des Geräteanschlusses ohne Interruptbetrieb ausführbar. | Für die Auswertung des END-Signals wurde der Zähler-Eingang des CTC-Kanales benutzt. Damit sind die in Tafel 1 und 2 angeführten Routinen zur softwaremäßigen Realisierung des Geräteanschlusses ohne Interruptbetrieb ausführbar. | ||
- | {{z9001-interfaces_bild2.gif? | + | {{z9001:z9001-interfaces_bild2.gif? |
Die angegebenen Treiber bilden das in Bild 2 dargestellte Signalverhalten für die Signale /DAT-1 bis /DAT-7, /RUF und /END nach. Um ein " | Die angegebenen Treiber bilden das in Bild 2 dargestellte Signalverhalten für die Signale /DAT-1 bis /DAT-7, /RUF und /END nach. Um ein " | ||
Die SIF-E-Routine wurde insofern verkürzt, als auf die Rückflanke des END-E- Signals nicht mehr gewartet wird. Das hat sich als vorteilhaft bei der Nutzung des Handlesers ZfK 4944-170/03 herausgestellt. | Die SIF-E-Routine wurde insofern verkürzt, als auf die Rückflanke des END-E- Signals nicht mehr gewartet wird. Das hat sich als vorteilhaft bei der Nutzung des Handlesers ZfK 4944-170/03 herausgestellt. | ||
+ | |||
+ | <file z80> | ||
+ | Tafel 1 Treiberroutine für SIF-1000-Ausgabe | ||
+ | ------------------------------------------- | ||
+ | |||
+ | |||
+ | ; | ||
+ | ; | | ||
+ | ; SIF-1000 Ein-/ | ||
+ | ; ------------------------------------- | ||
+ | ; Voraussetzungen | ||
+ | ;- RUF wird ueber PIO-Bit 7 gebildet ==> nur 7 Datenbits | ||
+ | ; und keine Paritaet moeglich! | ||
+ | ;- Die Flanken von END-A werden mit dem CTC-KANAL erfasst | | ||
+ | ;- keine KOM-Ausgabe | ||
+ | ;- keine STAT-Auswertung | ||
+ | ; | | ||
+ | ; | ||
+ | ; | | ||
+ | ; Ausgabe eines Zeichens an SIF-A | | ||
+ | ; ------------------------------- | ||
+ | ;- Zeichen im C-Register | ||
+ | ;- Return: Carry=1 ==> Stop-Taste | ||
+ | ; | | ||
+ | ; | ||
+ | ; | ||
+ | SIFA: | ||
+ | OUT (81H), | ||
+ | OUT (81H), | ||
+ | LD A, | ||
+ | OUT (8BH),A | ||
+ | LD A,C | ||
+ | CPL ;Bei SIF-1000 Daten low active | ||
+ | SET 7,A ;ohne RUF-A | ||
+ | OUT (89H), | ||
+ | NOP | ||
+ | NOP ; | ||
+ | RES 7, | ||
+ | OUT (89H), | ||
+ | C01: CALL STPRQ ; | ||
+ | JP NC, | ||
+ | C04: CPL a | ||
+ | OUT (89H), | ||
+ | RET | ||
+ | C03: IN A,(81H) | ||
+ | CP 47H ; | ||
+ | JR Z, | ||
+ | LD A, | ||
+ | OUT (81H),A | ||
+ | OUT (81H), | ||
+ | LD A, | ||
+ | OUT (89H), | ||
+ | C02: CALL STPRQ ; | ||
+ | JR C, | ||
+ | IN A,(81H) | ||
+ | CP 57H ;/ | ||
+ | JR Z, | ||
+ | OR A | ||
+ | RET | ||
+ | </ | ||
+ | |||
+ | <file z80> | ||
+ | Tafel 2 Treiberroutine für SIF-1000-Eingabe | ||
+ | ------------------------------------------- | ||
+ | |||
+ | |||
+ | ; | ||
+ | ; | | ||
+ | ; Eingabe eines Zeichens von SIF-E | | ||
+ | ; -------------------------------- | ||
+ | ;- Return: Zeichen in A | | ||
+ | ;- Carry=1 ==> STOP-Taste | ||
+ | ; | | ||
+ | ; | ||
+ | ; | ||
+ | SIFE: LD A, | ||
+ | OUT (81H),A | ||
+ | OUT (81H), | ||
+ | LD A, | ||
+ | OUT (80H),A | ||
+ | LD A,7FH ;nur Bit7 Ausgabe (RUF-E) | ||
+ | OUT (8BH),A | ||
+ | OUT (89H), | ||
+ | CI1: CALL STPRQ ; | ||
+ | JR C, | ||
+ | IN A,(81H) | ||
+ | CP 47H ; | ||
+ | JR Z, | ||
+ | IN A, | ||
+ | CPL | ||
+ | OUT (89H), | ||
+ | AND 7FH | ||
+ | RET | ||
+ | ; | ||
+ | STPRQ: CALL 0FD33H | ||
+ | EI | ||
+ | SUB 03 ; | ||
+ | OR A ; | ||
+ | RET NZ ; | ||
+ | LD (25H), | ||
+ | SCF ; | ||
+ | RET | ||
+ | ; | ||
+ | ; | ||
+ | ; | ||
+ | ; A B C | ||
+ | ; | ||
+ | ; 1 0 0 /END | ||
+ | ; | ||
+ | ; 3 /DAT4 /DAT5 /DATE | ||
+ | ; 4 /DAT7 /RUF - | ||
+ | ; | ||
+ | ; | ||
+ | </ | ||
==== 2.2. V24 (RS 232 C) ==== | ==== 2.2. V24 (RS 232 C) ==== | ||
Zeile 71: | Zeile 187: | ||
Es wird eine stark abgerüstete, | Es wird eine stark abgerüstete, | ||
- | {{z9001-interfaces_bild3.gif? | + | {{z9001:z9001-interfaces_bild3.gif? |
Geräteschnittstelle betrachtet. Detailliertere Informationen zu dem Standard können u. a. /2/ entnommen werden. Computer- Peripheriegeräte mit dieser Schnittstelle arbeiten in der Regel mit einem asynchronen Übertragungsprotokoll nach Bild 3. Dieses Übertragungsprotokoll erlaubt eine große Flexibilität bzgl. bestimmter Parameter: | Geräteschnittstelle betrachtet. Detailliertere Informationen zu dem Standard können u. a. /2/ entnommen werden. Computer- Peripheriegeräte mit dieser Schnittstelle arbeiten in der Regel mit einem asynchronen Übertragungsprotokoll nach Bild 3. Dieses Übertragungsprotokoll erlaubt eine große Flexibilität bzgl. bestimmter Parameter: | ||
Zeile 116: | Zeile 232: | ||
Man beachte, daß die gezeigte Routine das unterste (d. h. physikalische) Übertragungsprotokoll realisiert. Druckerspezifische Anpassungen (Sonderzeichen, | Man beachte, daß die gezeigte Routine das unterste (d. h. physikalische) Übertragungsprotokoll realisiert. Druckerspezifische Anpassungen (Sonderzeichen, | ||
- | {{z9001-interfaces_bild4.gif? | + | {{z9001:z9001-interfaces_bild4.gif? |
Den notwendigen Pegelanpassungen muß hier besondere Aufmerksamkeit gewidmet werden. Standardmäßig finden beim RS232C die Treiberschaltkreise 75150, 75188 o. ä. und die Empfängerschaltkreise 75154, 75189 o. ä. Verwendung. Damit ist eine normgerechte Pegelanpassung durchführbar, | Den notwendigen Pegelanpassungen muß hier besondere Aufmerksamkeit gewidmet werden. Standardmäßig finden beim RS232C die Treiberschaltkreise 75150, 75188 o. ä. und die Empfängerschaltkreise 75154, 75189 o. ä. Verwendung. Damit ist eine normgerechte Pegelanpassung durchführbar, | ||
- | {{z9001-interfaces_bild5.gif? | + | {{z9001:z9001-interfaces_bild5.gif? |
nämlich eine Verschiebung der Triggerschwelle. Bild 4 zeigt eine Beschaltung der Empfängerschaltkreise, | nämlich eine Verschiebung der Triggerschwelle. Bild 4 zeigt eine Beschaltung der Empfängerschaltkreise, | ||
+ | |||
+ | <file z80> | ||
+ | Tafel 4 Treiberroutine für V24/DTR | ||
+ | ---------------------------------- | ||
+ | |||
+ | |||
+ | ; | ||
+ | ; | | ||
+ | ; V24-Ausgabe ueber User-Port | ||
+ | ; | | ||
+ | ;- DTR-Prozedur | ||
+ | ;- Beispielprogremm fuer serielle Ausgabe ueber | | ||
+ | ; einen PIO-Port | ||
+ | ;- Einstellbare Parameter: | ||
+ | ; . Anzahl der Datenbits: DN (max.8) | ||
+ | ; . Baudrate: 19200, | ||
+ | ; TC = 4 | ||
+ | ; | | ||
+ | ;- Serielle Ausgabe ueber PIO-Bit 0 | | ||
+ | ;- Bereitschaftsabfrage (DTR) ueber PIO-Bit 7 | | ||
+ | ;- Zeichen in C | | ||
+ | ; | | ||
+ | ; | ||
+ | ; | ||
+ | DN EQU 8 ;z.B. 8 Datenbits | ||
+ | TC EQU 12 ;z.B. 9600 Baud | ||
+ | ; | ||
+ | V24: LD A, | ||
+ | OUT (8BH), | ||
+ | LD A, | ||
+ | OUT (8BH),A | ||
+ | LO0: CALL STPRQ ; | ||
+ | JR NC, | ||
+ | LD (15H), | ||
+ | RET | ||
+ | LO1: IN A,(89H) | ||
+ | ADD A, | ||
+ | JR C, | ||
+ | LO3: LD A, | ||
+ | ; | ||
+ | ; | ||
+ | ; | ||
+ | PSOUT: LD E, | ||
+ | LD B,DN+1 ;1 Startbit, DN-Datenbit | ||
+ | DI ; | ||
+ | OR A ; | ||
+ | RLA ; | ||
+ | LO4: | ||
+ | CALL WAIT ; | ||
+ | RRA ; | ||
+ | DJNZ LO4 | ||
+ | OR 1 ; | ||
+ | OUT (89H),A | ||
+ | EI ; | ||
+ | WAIT: | ||
+ | WT1: DEC E | ||
+ | JR NZ,WT1 | ||
+ | POP DE | ||
+ | RET | ||
+ | |||
+ | ; | ||
+ | ; | ||
+ | ; | ||
+ | ; A B C | ||
+ | ; | ||
+ | ; 1 0 0 - | ||
+ | ; 2 TxD - - | ||
+ | ; 3 - - - | ||
+ | ; | ||
+ | ; | ||
+ | ; | ||
+ | ; * DTR-Signal des Druckers | ||
+ | </ | ||
==== 2.3. CENTRONICS ==== | ==== 2.3. CENTRONICS ==== | ||
Zeile 128: | Zeile 317: | ||
Das CENTRONICS-Interface ist eine bitparallele bidirektionale Datenschnittstelle, | Das CENTRONICS-Interface ist eine bitparallele bidirektionale Datenschnittstelle, | ||
- | {{z9001-interfaces_bild6.gif? | + | {{z9001:z9001-interfaces_bild6.gif? |
Bild 6 zeigt das Signalverhalten. Da die Pegel TTL-Pegel sind, eignet sich dieses Interface besonders gut für den Betrieb am User-Port des KC 85/1. Bestimmte Einschränkungen müssen allerdings wegen der begrenzten Zahl der Datenleitungen wieder getroffen werden. Will man gänzlich ohne Zusatzhardware auskommen, so bietet sich eine Zuordnung der Signale des User-Ports zu den CENTRONICS-Signalen in folgender Form an: | Bild 6 zeigt das Signalverhalten. Da die Pegel TTL-Pegel sind, eignet sich dieses Interface besonders gut für den Betrieb am User-Port des KC 85/1. Bestimmte Einschränkungen müssen allerdings wegen der begrenzten Zahl der Datenleitungen wieder getroffen werden. Will man gänzlich ohne Zusatzhardware auskommen, so bietet sich eine Zuordnung der Signale des User-Ports zu den CENTRONICS-Signalen in folgender Form an: | ||
Zeile 148: | Zeile 337: | ||
Tafel 3 zeigt die entsprechende Treiberroutine für den Anschluß eines CENTRONICS-Druckers an den User-Port des KC 85/1. | Tafel 3 zeigt die entsprechende Treiberroutine für den Anschluß eines CENTRONICS-Druckers an den User-Port des KC 85/1. | ||
+ | |||
+ | <file z80> | ||
+ | Tafel 3 Treiberroutine für CENTRONICS-Drucker | ||
+ | --------------------------------------------- | ||
+ | |||
+ | |||
+ | ; | ||
+ | ; | | ||
+ | ; CENTRONICS-Druckerschnittstelle ueber User-Port | ||
+ | ; | | ||
+ | ;- 7 Datenbits verfuegbar | ||
+ | ;- PIO-Bit7 wird zur Bildung des CBNTRONICS-/ | ||
+ | ; Signals verwendet. | ||
+ | ;- /ACKNLG vom Drucker wird ueber den CTC-Kanal erfasst. | ||
+ | ; | | ||
+ | ;- Zeichen in Reg. C | | ||
+ | ;- Return: Carry=1 bei Stop-Taste | ||
+ | ; | | ||
+ | ; | ||
+ | ; | ||
+ | CENTR: LD A,0CFH | ||
+ | OUT (8BH), | ||
+ | OR A ; | ||
+ | OUT (8BH),A | ||
+ | LD A, | ||
+ | OUT (81H), | ||
+ | OUT (81H), | ||
+ | LD A,C | ||
+ | LD B,80H | ||
+ | OR B ;/ | ||
+ | OUT (89H), | ||
+ | XOR B ;/ | ||
+ | OUT (89H), | ||
+ | OR B ;/ | ||
+ | OUT (89H),A | ||
+ | CNTR1: CALL STPRQ ; | ||
+ | RET C | ||
+ | IN A,(81H) | ||
+ | CP 57H ;/ | ||
+ | JR Z, | ||
+ | XOR A | ||
+ | RET | ||
+ | ; | ||
+ | ; | ||
+ | ; | ||
+ | ; | ||
+ | ; | ||
+ | ; | ||
+ | ; | ||
+ | ; A B C | ||
+ | ; | ||
+ | ; 1 0 0 /ACC | ||
+ | ; | ||
+ | ; | ||
+ | ; 4 DAT7 /STROBE - | ||
+ | ; | ||
+ | </ | ||
==== 3. Einbinden von Gerätetreibern in das Betriebssystem (OS) des KC 85/1 ==== | ==== 3. Einbinden von Gerätetreibern in das Betriebssystem (OS) des KC 85/1 ==== | ||
Zeile 175: | Zeile 421: | ||
Alle anderen Plätze der Tabelle sind nach einem Kaltstart des OS (RESET oder POWER ON) mit dem Wert 0FFFFH belegt und zeigen dem OS damit einen nicht existenten Treiber an. Sollen eigene Treiberroutinen - wie z. B. die in Tafel 1 bis 4 - eingebracht werden, so kann das durch direktes Eintragen der Treiberadresse in den entsprechenden Tabellenplatz und zugehöriges Stellen des I/O-Bytes erfolgen. Aber auch hierfür bietet das OS ein leistungsfähiges Hilfsmittel - das ASGN (Assign)-Kommando - an. Diese Form des Einbindens von E/ | Alle anderen Plätze der Tabelle sind nach einem Kaltstart des OS (RESET oder POWER ON) mit dem Wert 0FFFFH belegt und zeigen dem OS damit einen nicht existenten Treiber an. Sollen eigene Treiberroutinen - wie z. B. die in Tafel 1 bis 4 - eingebracht werden, so kann das durch direktes Eintragen der Treiberadresse in den entsprechenden Tabellenplatz und zugehöriges Stellen des I/O-Bytes erfolgen. Aber auch hierfür bietet das OS ein leistungsfähiges Hilfsmittel - das ASGN (Assign)-Kommando - an. Diese Form des Einbindens von E/ | ||
+ | < | ||
+ | Tafel 5 I/O-Byte und Zuordnungstabelle im OS-KC85/1 | ||
+ | |||
+ | \ phys.Ger. | ||
+ | log.Ger.| | ||
+ | --------|-------|-------|-------|-------| | ||
+ | | EFC9 | EFCB | EFCD | EFCF | | ||
+ | CONST: | ||
+ | | (TTY) | (CRT) | (BAT) | (UC) | | ||
+ | --------|-------|-------|-------|-------| | ||
+ | | EFD1 | EFD3 | EFD5 | EFD7 | | ||
+ | READER: | | ||
+ | | (TTY) | (RDR) | (UR1) | (UR2) | | ||
+ | --------|-------|-------|-------|-------| | ||
+ | | EFD9 | EFDB | EFDD | BFDF | | ||
+ | PUNCH: | ||
+ | | (TTY) | (PUN) | (UP1) | (UP2) | | ||
+ | --------|-------|-------|-------|-------| | ||
+ | | EFE1 | EFE3 | EFE5 | EFE7 | | ||
+ | LIST: | ||
+ | | (TTY) | (CRT) | (LST) | (UL1) | | ||
+ | ----------------------------------------- | ||
+ | |||
+ | Adresstabelle der physischen Treiberroutinen | ||
+ | </ | ||
==== 3.2. ASGN-Kommando ==== | ==== 3.2. ASGN-Kommando ==== | ||
Zeile 232: | Zeile 503: | ||
READER: | READER: | ||
PUNCH: | PUNCH: | ||
- | LIST:=LX86. | + | LIST:=LX86 |
Der Drucker kann jetzt mit CTRL/P zum Bildschirm parallel geschaltet werden (auch im BASIC) oder über den LIST-Kanal (Ruf-Nr. 5) direkt angesprochen werden. | Der Drucker kann jetzt mit CTRL/P zum Bildschirm parallel geschaltet werden (auch im BASIC) oder über den LIST-Kanal (Ruf-Nr. 5) direkt angesprochen werden. | ||
+ | |||
+ | <file z80> | ||
+ | Tafel 6 Einbinden eines Druckertreibers in das OS-KC85/1 | ||
+ | |||
+ | Beispiel fuer das Einbinden einer Druckertreiberroutine | ||
+ | ======================================================= | ||
+ | |||
+ | ORG hh00H ; | ||
+ | jp ILX86 ; | ||
+ | STR: | ||
+ | defw 0 ; | ||
+ | ILX86: ld a, | ||
+ | out (8BH), | ||
+ | ld a, | ||
+ | out (8BH), | ||
+ | . | ||
+ | . ;hier evtl. | ||
+ | . ; | ||
+ | . ;etc. durchfuehren | ||
+ | ld hl, | ||
+ | ; phys.Ger. 0 nicht sinnvoll, | ||
+ | ; da ASGN CONST:=LX86 moeglich | ||
+ | ; waere! | ||
+ | ld bc, | ||
+ | ld de, | ||
+ | ; | ||
+ | ; | ||
+ | ; | ||
+ | ; | ||
+ | ; | ||
+ | or a ; | ||
+ | ret | ||
+ | ; | ||
+ | V24: | ||
+ | ret z ; | ||
+ | dec a ; | ||
+ | jr nz, | ||
+ | in A, | ||
+ | or 7FH ; | ||
+ | cpl ; | ||
+ | ret | ||
+ | lo0: weiter s. Tafel 4 | ||
+ | . | ||
+ | . | ||
+ | . | ||
+ | </ | ||
+ | |||
==== Treiberpaket ==== | ==== Treiberpaket ==== | ||
- | (VP: hier nicht als Text, enthalten | + | (VP: s. Datei {{: |
+ | |||
+ | Tafel 7 zeigt den HEX-Dump eines kompletten Treiberpakets, | ||
+ | |||
+ | < | ||
+ | Tafel 7 HEX-Dump des Treiberpakets | ||
+ | |||
+ | 0300h: C3 51 03 53 49 46 45 20 20 20 20 00 C3 5B 03 53 ; ÃQ.SIFE | ||
+ | 0310h: 49 46 41 20 20 20 20 00 C3 64 03 43 45 4E 54 52 ; IFA .Ãd.CENTR | ||
+ | 0320h: 20 20 20 00 C3 6D 03 4C 58 38 36 20 20 20 20 00 ; .Ãm.LX86 | ||
+ | 0330h: C3 74 03 54 44 34 30 20 20 20 20 00 C3 49 03 42 ; Ãt.TD40 | ||
+ | 0340h: 45 45 50 20 20 20 20 00 00 01 59 04 21 03 00 18 ; EEP ...Y.!... | ||
+ | 0350h: 44 01 3E 04 21 02 02 16 7F 18 2E 01 06 04 2E 03 ; D.> | ||
+ | 0360h: 16 00 18 1C 01 DC 03 2E 01 16 00 18 13 01 A8 03 ; .....Ü........¨. | ||
+ | 0370h: 3E 0C 18 05 01 A8 03 3E 7E 32 C3 03 2E 02 16 FE ; > | ||
+ | 0380h: 3A 33 00 67 D6 04 3E 01 D8 3E CF D3 8B 7A D3 8B ; : | ||
+ | 0390h: 2F D3 89 16 03 B7 E3 23 23 E3 C9 CD 33 FD FB D6 ; / | ||
+ | 03a0h: 03 B7 C0 32 25 00 37 C9 3C C8 3D 20 06 DB 89 F6 ; .·À2%.7É< | ||
+ | 03b0h: 7F 2F C9 CD 9B 03 30 04 32 15 00 C9 DB 89 87 38 ; / | ||
+ | 03c0h: F2 79 1E 7E 06 09 F3 B7 17 D3 89 CD D6 03 1F 10 ; òy.~..ó·.Ó‰ÍÖ... | ||
+ | 03d0h: F8 F6 01 D3 89 FB D5 1D 20 FD D1 C9 3C C8 3D 2F ; øö.Ó‰ûÕ. ýÑÉ< | ||
+ | 03e0h: C8 3E 57 D3 81 D3 81 79 F6 80 FE FF 20 02 00 00 ; È> | ||
+ | 03f0h: D3 89 E6 7F D3 89 F6 80 D3 89 CD 9B 03 D8 DB 81 ; Ó‰æÓ‰ö€Ó‰Í›.ØÛ | ||
+ | 0400h: FE 57 28 F6 AF C9 3E 47 D3 81 D3 81 79 2F CB FF ; þW(ö¯É> | ||
+ | 0410h: D3 89 00 00 CB BF D3 89 CD 9B 03 30 04 2F D3 89 ; Ӊ..˿Ӊ͛.0./ | ||
+ | 0420h: C9 DB 81 FE 47 28 F1 3E 57 D3 81 D3 81 3E FF D3 ; ÉÛþG(ñ> | ||
+ | 0430h: 89 CD 9B 03 38 E7 DB 81 FE 57 28 F5 B7 C9 3E 47 ; ‰Í›.8çÛþW(õ·É> | ||
+ | 0440h: D3 81 D3 81 D3 89 CD 9B 03 38 D2 DB 81 FE 47 28 ; ÓÓӉ͛.8ÒÛþG( | ||
+ | 0450h: F5 DB 89 2F D3 89 E6 7F C9 CD F1 F8 F5 3A 2F 00 ; õÛ‰/ | ||
+ | 0460h: 3D CC 66 04 F1 C9 C5 06 00 0E 14 3E 07 D3 80 3E ; =Ìf.ñÉÅ....> | ||
+ | 0470h: 96 D3 80 DB 88 CB FF D3 88 10 FE 0D 20 FB CB BF ; –Ó€ÛˆËÿÓˆ.þ. ûË¿ | ||
+ | 0480h: D3 88 3E 03 D3 80 C1 C9 0E 09 11 03 05 CD 05 00 ; Óˆ> | ||
+ | 0490h: 2A 36 00 01 88 01 B7 ED 42 2E 00 E5 2B 22 36 00 ; *6..ˆ.·íB..å+" | ||
+ | 04a0h: C5 E5 06 10 11 00 00 4B 29 7B 8B 27 5F 7A 8A 27 ; Åå.....K){‹' | ||
+ | 04b0h: 57 79 89 4F 10 F2 79 B7 EB 28 03 CD F0 04 CD EB ; Wy‰O.òy·ë(.Íð.Íë | ||
+ | 04c0h: 04 11 1D 05 0E 09 CD 05 00 E1 C1 23 EB 21 00 03 ; ......Í..áÁ# | ||
+ | 04d0h: ED B0 E1 DD 21 20 05 16 03 5C 06 00 DD 4E 00 0C ; í°áÝ! ...\..ÝN.. | ||
+ | 04e0h: 0D C8 09 7E 92 83 77 DD 23 18 F1 7C CD F0 04 7D ; .È.~’ƒwÝ# | ||
+ | 04f0h: F5 0F 0F 0F 0F CD F9 04 F1 E6 0F C6 30 0E 02 5F ; õ....Íù.ñæ.Æ0.._ | ||
+ | 0500h: C3 05 00 0D 0A 54 6F 70 20 6F 66 20 52 41 4D 20 ; Ã....Top of RAM | ||
+ | 0510h: 6E 6F 77 20 28 64 65 63 2E 29 3A 20 00 0D 0A 00 ; now (dec.): .... | ||
+ | 0520h: 02 0C 0C 0C 0C 0C 0D 08 0A 09 09 07 05 19 21 18 ; ..............!. | ||
+ | 0530h: 2F 1E 19 15 1B 00 00 00 ; /....... | ||
+ | </ | ||
+ | |||
+ | Das Programm wird normal (nicht mit ASGN) geladen. Es enthält einen Mechanismus, | ||
+ | RAM-Ende verschiebt und eine entsprechende Adreßmodifikation vornimmt. Das Programm ist damit für jede RAM-Konfiguration | ||
+ | geeignet und muß nicht speziell angepaßt werden. Die aktuelle obere Speichergrenze wird für BASIC-Anwender dezimal | ||
+ | ausgegeben. Dieser Wert sollte nach Start des BASIC-Interpreters als obere Grenze eingegeben werden, um das Treiberpaket | ||
+ | vor Überschreiben zu schützen. | ||
+ | |||
+ | Die gewünschten Treiber müssen vorher mit **ASGN-Anweisung** aktiviert werden. | ||
+ | Dabei sind die folgenden Zuordnungen möglich: | ||
+ | |||
+ | < | ||
+ | | ||
+ | log. Gerät 0 1 2 3 | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | BEEP: Erzeugt einen " | ||
+ | SIFE: SIF1000-Eingabe, | ||
+ | SIFA: SIF1000-Ausgabe, | ||
+ | | ||
+ | TD40: V24/DTR, 8 Bit, keine Parität, 1200 Baud\\ | ||
+ | LX86: V24/DTR, 8 Bit, keine Parität, 9600 Baud | ||
+ | |||
+ | Das Programm kann z.B. mit dem von Robotron vertriebenen Zusatzmonitor ZM eingegeben werden (S-Kommando). Mit dem | ||
+ | P(unch)-Kommando kann es dann (nach vorheriger Zuweisung AR=T) auf Band gebracht werden:\\ | ||
+ | **P300, | ||
+ | |||
+ | Man beachte die Startadresse (488H). | ||
+ | |||
+ | Der erwähnte Zusatzmonitor enthält bereits einige der hier vorgestellten Treiberroutinen | ||
+ | (SIFA/E, TD40, BEEP). Zu beachten ist, daß es bei den Treibern SIFA und TD40 des ZM u.U. Probleme mit der CTRL/ | ||
+ | (Hardcopy) geben kann (1. Version des ZM und Version 1.2 d es OS-KC85/1). Deshalb sei an dieser Stelle auf die erforderlichen Korrekturen für eine saubere Arbeitsweise der ZM-Treiber hingewiesen: | ||
+ | |||
+ | ^ Treiber ^ relative Adresse ^ Befehl alt ^ HEX ^ -> ^ Befehl neu ^ HEX ^ | ||
+ | | SIFA | 0062H | ld a,e | 7B | | ld a,c | 79H | | ||
+ | | TD40 | 00C3H | res 7,e | CB BB | | res 7,c | CB B9 | | ||
+ | | | 00E0H | sub e | 93 | | sub c | 91 | | ||
+ | | | 00E8H | cp e | BB | | cp c | B9 | | ||
+ | | | 00FCH | ld a,e | 7B | | ld a,c | 79 | | ||
+ | | | 0102H | ld c,154 | 0E 9A | | ld e,154 | 1E 9A | | ||
+ | | | 0117H | ld b,c | 41 | | ld b,e | 43 | | ||
+ | |||
+ | Der ZM nutzt **nicht** die ASGN-Anweisung. Mit RESET oder POWER ON wird die Zuordnungstabelle (Tafel 5) mit den entsprechenden | ||
+ | Adressen geladen, da alle Treiber resident sind. Die Auswahl der ZM-Treiber muß deshalb mit dem ZM-Kommando A(ssign) erfolgen | ||
+ | (Stellen des I/O-Bytes). | ||
==== Literatur ==== | ==== Literatur ==== | ||
Zeile 266: | Zeile 678: | ||
* Tafel 7 HEX-Dump des Treiberpakets | * Tafel 7 HEX-Dump des Treiberpakets | ||
- | Dr.-Ing. Frank Schwarzenberg studierte von 1970 bis 1974 an der TU Dresden in der Fachrichtung Informationstechnik. Von 1970 bis 1974 absolvierte er am VIK Dubne einen Arbeitsaufenthalt. 1980 erfolgte die Promotion zum Thema Rechnerkopplung zur Erfassung kernphysikalischer Experimentdaten. Seit 1982 ist unser Autor am ZfK Rossendorf tätig. Sein Arbeitsgebiet ist die Hard- und Softwareentwicklung für Klein- und Mikrorechentechnik (8-(18-Bit-Systeme). | + | Dr.-Ing. Frank Schwarzenberg studierte von 1970 bis 1974 an der TU Dresden in der Fachrichtung Informationstechnik. Von 1970 bis 1974 absolvierte er am VIK Dubne einen Arbeitsaufenthalt. 1980 erfolgte die Promotion zum Thema Rechnerkopplung zur Erfassung kernphysikalischer Experimentdaten. Seit 1982 ist unser Autor am ZfK Rossendorf tätig. Sein Arbeitsgebiet ist die Hard- und Softwareentwicklung für Klein- und Mikrorechentechnik (8-/16-Bit-Systeme). |