Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
z9001:literatur:treiber [2013/05/30 17:12] – [Anhang] volkerp | z9001:literatur:treiber [2020/03/31 14:50] (aktuell) – [3.2. ASGN-Kommando] volkerp | ||
---|---|---|---|
Zeile 2: | Zeile 2: | ||
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 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 66: | Zeile 68: | ||
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 123: | Zeile 239: | ||
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 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 ==== |