AdW der DDR Institut fuer Informatik Berlin, den 11.09.86 und Rechentechnik RN/SE/IMPL-SB/001 Abt.Systementwicklung Beschreibung des Betriebssystems CP/A fuer Buerocomputer und PC 1715 1. Ueberblick Das Betriebssystem CP/A wurde am Institut fuer Informatik und Rechentechnik der AdW der DDR als Hilfsmittel zur Software- Entwicklung und zur Unterstuetzung von Schreibarbeiten ent- wickelt. Es ist mit dem Betriebssystem CP/M kompatibel, d.h. saemtliche fuer dieses Betriebssystem vorhandene Anwender- Software kann unveraendert benutzt werden. CP/A ist fuer Bue- rocomputer vom Typ A5120 und A5130 bzw. hardwaremaessig aequi- valenten Anlagen (z.B. K8924, K8927) sowie fuer PC 1715 gene- rierbar. Folgende Konfigurationen werden unterstuetzt: - 32..64 K Byte RAM, - evtl. vorhandene OSS-Speichererweiterung (48K) als RAM- Floppy 'M:', Nichtexistenz bei Kaltstart automatisch erkannt, - Bildschirm 24 x 80 oder 16 x 64, bei Kaltstart auf Buerocomputer automatisch, auf PC1715 halbautomatisch erkannt, Steuerzeichen SCP-kompatibel - Tastaturen K7604/06, K7634, K7636 und K7637 bzw. PC1715- Tastatur, untersch. Tastaturen bei A51xx bei Kaltstart automatisch erkannt, - Disketten 5" (40 und 80 Track; DD, SS) sowie 8" (SD, SS) mit 2-Prozessor-CPU-Karte K2526 als Ansteuerung, bzw. PC1715 5" (40 und 80 Track; DD; SS und DS), mehrere physische Formate (u.a. SCP komatibel), die bei LOGIN automatisch erkannt werden, - Drucker: 1152, 1157, K63xx (PIO1, PIO2, IFSS, AFS-Anschluss); 1154 (PIO-Spezialanschluss); 1156 (PIO-Spezialanschluss FZB Muencheberg); bei PC1715 serielle Drucker an Printer/V.24/IFSS A/IFSS B. Sonstige Peripherie (z.B. Lochstreifen, Kassetten) wird durch spezielle Dienstprogramme auf Anwenderniveau unterstuetzt, da ihre Nutzung i.a. nicht staendig erfolgt. CP/A zeichnet sich aus durch - einheitliche Nutzeroberflaeche fuer die verschiedenen Buero- computer-Typen und PC1715, so dass ein Wechsel zwischen diesen Geraeten relativ problemlos ist, - leichte Anpassbarkeit an gewuenschte Hardware- und Software-Konfigurationen (Neuuebersetzung des als Quell- text verfuegbaren Betriebssystemteils BIOS, der entsprechend dem Leistungsumfang in seiner Groesse verschieden sein kann!; Linken gemeinsam mit den restlichen Systembestand- teilen), - Ausnutzung der Hardware-Moeglichkeiten des Rechners und der angeschlossenen Peripherie, - automatische Anpassung an wichtige Hardwarekomponenten (Tastatur, Bildschirm) beim Laden des Systems, - keinerlei Notwendigkeit zu Veraenderungen am Buerocomputer (z.B. Lade-PROM, sowohl mit altem als auch mit neuem (SCP)Lade-PROM ladbar), womit der Rechner auch fuer andere Anwendungen einsetzbar bleibt, - einfache Struktur, die aufgrund weniger, fest definierter Schnittstellen sowohl eine einfache Bedienung als auch fle- xible Erweiterungen zulaesst. Das Betriebssystem CP/A besteht aus den drei Hauptteilen BIOS (Basic Input/Output System), BDOS (Basic Disk Operating System) und CCP (Console Command Processor), die dem Anwender als Quelltext (BIOS) bzw. als Link-Eingaben (BDOS, CCP) fuer die Systemgenerierung zur Verfuegung stehen. 2. Kaltstart des Systems Vom Kaltstart-Loader des jeweiligen Rechnersystems wird auf allen Diskettenlaufwerden nach einer bestimmten Kennung ge- sucht. Die erste passenden Diskette wird als Kaltstart- Diskette benutzt und die sogenannten Systemspuren von dort geladen. Die Kaltstartdisketten fuer A51xx und PC1715 sind nicht kompatibel. Das Betriebssystem CP/A befindet sich auf der Kaltstart- Diskette als File mit dem (festen) Namen @OS.COM. Beim Berocomputer besitzt die Kaltstart-Diskette neben zwei speziellen Systemspuren auf Spur 0 und 1 ein Bibliotheksver- zeichnis ab Spur 2. Beim PC1715 ist der Systemlader im Ver- zeichnis versteckt, so dass auch Kaltstartdisketten keine Systemspuren haben (Verzeichnis ab Spur 0). Die Kaltstartdiskette kann nach dem Kaltstart wie andere Dis- ketten benutzt werden. In der Regel enthaelt sie Standard- Programme und das Abrechnungssystem. Die Systemdatei @OS.COM kann mit PIP (o.ae. Software) kopiert, mittels ZSID und SAVE modifiziert worden sein oder auch direkt eine Link-Ausgabe darstellen. Sie wird wie eine normale Datei behandelt und kann beim Buerocomputer auf der Diskette ab einer beliebigen Stelle (u.U. auch gestreut) gespeichert sein, beim PC1715 muss sie die erste Datei nach dem Verzeichnis und dicht gespeichert sein. Beim Buerocomputer steht in den Systemspuren lediglich ein Boot-System, dass zum Laden des eigentlichen Systems aus dem File @OS.COM dient. Beim PC1715 erfolgt nach dem Starten des Systems eine automa- tische Erkennung vorhandener Diskettenlaufwerke. Dazu wird der Kopf jedes Laufwerks auf Spur 0 positioniert, was bei wei innen stehendem Kopf zu entsprechenden (normalen!) Geraeuschen fuehren kann. Nach dem Kaltstart wird i.a. das Programm ACCOUNT (Abrech- nungssystem) von der Kaltstartdiskette geladen und ausge- fuehrt. Bei der Systemgenerierung kann jedoch auch ein anderes Kommando (auch ein leeres oder der Aufruf von SUBMIT fuer eine ganze Kommandofolge) als Standardprogramm vereinbart werden. Die Ausuehrung dieses Programms kann nach einem Kaltstart infolge eines Systemzusammenbruchs, wo eine Neuanmeldung durch ACCOUNT nicht sinnvoll ist, durch Betaetigen der STOP- und der ^C-Taste (siehe Tastaturbelegung) waehrend des Ladevorgangs unterdrueckt werden. 3. Systemmodifikation Eine Modifikation des Systems ist leicht mittels ZSID oder gleichwertigen Debuggern moeglich: ZSID @OS.COM ... ... ^C SAVE xx @OS.COM Kaltstart Ist eine Neuuebersetzung erforderlich, so laeuft die Aenderung wie folgt ab (s: sei das Laufwerk mit Systemprogrammen): a) fuer Buerocomputer (( Modifikation des BIOS-Quelltextes BIOS.MAC)) s:M80 BIOS.ERL=BIOS s:LINKMT @OS=CPABAS,CCP,BDOS,BIOS/P:xxxx ((Kaltstart)) b) fuer PC1715 (( Modifikation des BIOS-Quelltextes BIOP.MAC)) s:M80 BIOP.ERL=BIOP s:LINKMT @OS=CPPBAS,CCP,BDOS,BIOP/P:xxxx ((Kaltstart)) Die Adresse "xxxx" wird vom Assemblerschritt ausgegeben! LINKMT ist der zum Pascal-Paket gehoerige Linker und erfordert den File-Typ .ERL fuer die Link-Eingabe. Dieser Linker wird hier benutzt, weil er im Gegensatz zu L80 bei Programmadressen groesser 100H keine Fuellbytes erzeugt. Die Basisadresse xxxx ist wegen des vorgelagerten Records CPxBAS um 80H kleiner als die gewuenschte Adresse vom CCP. Das CCP wird beim Warmstart aus einem Hauptspeicherbereich (im BIOS) kopiert, das BDOS wird in der Regel nicht durch Anwen- dersoftware zerstoert, da es die gesamte Logik fuer die Arbeit mit Disketten enthaelt. Dadurch entfaellt beim Warmstart jeg- liche Notwendigkeit des Ladens, wodurch dieser beschleunigt wird und Systemspuren nur auf der Kaltstartdiskette erforder- lich sind, auf allen anderen koennen sie mit zur Datenspei- cherung benutzt werden (0 Systemspuren). Fuer spezielle Anforderungen an einen grossen TPA-Bereich existieren auch Varianten zum Nachladen des CCP bei Warmstart ohne CCP-Kopie im BIOS. Hat ein Anwenderprogramm auch das BDOS zerstoert (TPA dann um 0E00h - d.h. 3,5 K - groesser), so muss es den Kaltstartein- gang des BIOS benutzen. Hierdurch wird ein Kaltstartvorgang vom BIOS simuliert, d.h. es wird wie bei einem ersten Kalt- start eine Systemdiskette in den Laufwerken gesucht. Die Laenge des Gesamtsystems haengt sehr stark vom gewuensch- ten Leistungsumfang ab, fuer Spezialzwecke koennen auch "Mini- versionen" mit ca. 7K BIOS (ca. 53,5K TPA) generiert werden. 4. Diskettenstruktur 4.1. Standard-Format Es werden sowohl 5 1/4"- als auch 8"-Disketten mit 128 Bytes je Sektor und 26 Sektoren je Spur unterstuetzt. CP/A gestattet auf Nicht-Kaltstart-Disketten die Nutzung der Systemspuren, mit Systemspuren beginnen sie beim Buerocomputer erst ab Spur 2 (allgemeiner CP/M-Standard) bzw. Spur 3 (allge- meiner SCP-Standard) und haben damit eine geringere Kapazi- taet. 4.2. Sonstige Diskettenformate Sowohl international als auch national haben sich verschiedene Diskettenformate als sogenannte "Hausformate" einzelner CP/M- kompatibler Betriebssysteme herausgebildet. CP/A unterstuetzt folgende Diskettenformate, die im BIOS automatisch bei der erstmaligen Benutzung einer Diskette (LOGIN-Bit in Reg. E, Bit 0 bei BIOS-Entry SELDSK =0) erkannt werden (entsprechende Laufwerke vorausgesetzt): single sided Disk- Sektoren Sektor- BDOS- Systemsp. Gesamt- Typ pro Spur laenge Blocklng. /Direintr. kapazitaet ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5" 26 128 1K 2/64 123K DD,SS 26 128 1K 0/64 130K 40 Sp. 16 256 2K 3/64 148K 9 512 1K 2/64 171K 9 512 1K 0/64 180K 5 1024 1K 2/64 190K 5 1024 1K 0/64 200K 5" 26 128 2K 2/128 252K (K) DD,SS 26 128 2K 0/128 260K 80 Sp. 16 256 2K 3/128 308K (K) 9 512 2K 2/128 350K (*) 9 512 2K 0/128 360K 5 1024 2K 2/128 390K (*) 5 1024 2K 0/128 400K 5" 26 128 2K 0/128 260K (*) DD,DS 16 256 2K 4/128 304K (*) 40 Sp. 9 512 2K 0/128 360K (*) 5 1024 2K 0/128 400K (*) 5" 26 128 2K 0/128 520K (*) DD,DS 16 256 2K 4/128 624K (*) 80 Sp. 9 512 2K 0/128 720K (*) 5 1024 2K 0/192 800K (*) (*) Diese Variante wird vom CP/A-Kaltstartsystem fuer den Buerocomputer in den Systemspuren nicht unterstuetzt, da es vom Anwender nicht konfiguriert werden kann und ein eindeu- tiges (automatisches) Unterscheiden von 40- und 80-Track- Laufwerken fuer die Bestimmung der BDOS-Blockgroesse (1K bei 40-, 2K bei 80-Track-Laufwerken) nur mit groesserem Aufwand moeglich waere. Daher muessen Kaltstartdisketten fuer 80- Track-Laufwerke ein mit (K) gekennzeichnetes Format verwenden. 8" 26 128 1K 2/64 243K SD,SS 26 128 1K 0/64 250K 16 256 2K 3/64 296K 9 512 2K 2/128 336K 9 512 2K 0/128 346K 4 1024 2K 3/64 296K 4 1024 2K 0/64 308K Die Angabe der Kapazitaet erfolgt einschliesslich der Ver- zeichnisgroesse von 2K (64 Directory-Eintraege) bzw. 4K (128 Directory-Eintraege) bzw. 6K (192 Directory-Entraege). Haben die Disketten weniger Directory-Eintraege, so ist Lesen ohne Einschraenkung und auch Schreiben moeglich, jedoch wird i.a. nicht die volle Diskettenkapazitaet nutzbar, da das erste File auf der Diskette als Directory interpretiert wird. Bei Nutzung von DS-Formaten wird die Rueckseite in den Steuer- bloecken des BIOS als extra Spur behandelt, daher haben diese Disketten beim Protokollieren des Formates doppelt soviel logische Spuren wie physische. Unter CP/A haben Systemspuren (daran erkannt, dass der dezi- male Wert des Bytes 0 in Spur 0, Sektor 1 nicht E5h, aber groesser als 31 ist - der groesste moegliche Nutzer in einem evtl. dort befindlichen CP/M-Directory-Eintrag ist 31!) keine weitere Bedeutung und dienen nur zum Erkennen des Formates. CP/A legt seine Systemspuren fuer den Buerocomputer grund- saetzlich im Format 26*128 an (leider notwendig wegen der Kaltstart-Version 0.6 auf einigen aelteren A51xx-Geraeten), auch wenn die restlichen Spuren ein anderes Format haben (i.a. wird man fuer 40 Track, SS das 190K-Format benutzen). Bei SCP-Disketten (Sektorlaenge 256) werden unabhaengig vom Inhalt der 0. Spur immer Systemspuren angenommen. Es koennen u.a. damit direkt Disketten bearbeitet werden, die unter dem Robotron-Betriebssystem SCP erzeugt wurden bzw. weiterverar- beitet werden sollen. Die angegebenen Diskettenformate werden durch das CP/A-Dienst- programm FORMAT erzeugt. Defekte Spuren werden uebergangen. Mit Hilfe des CP/M-Dienstprogramms POWER kann dann eine Dummy-Datei erzeugt werden, in der alle fehlerhaften Sektoren zu einer Pseudodatei zusammengefasst werden, womit diese fuer die weitere Nutzung ausgeschlossen sind. Eine neu formatierte Diskette, zukuenftige Systemdiskette besitzt zunaechst keine Systemspuren. Beim Buerocomputer koennen diese mit Hilfe des CP/M-Dienstpro- gramms SYSGEN oder des CP/A-Dienstprogramms FORMAT von einer bereits vorhandenen Kaltstartdiskette uebertragen werden. Beim PC1715 geschieht das Anlegen einer neuen Systemdiskette auf eine formatierte und leere Diskette durch Kopieren von '@OS.COM' von LW A nach B durch das Kommando: CPA1715G B: Die allgemeine Aufrufform von CPA1715G ist "CPA1715G z: quellfile", wobei z das Ziel-Laufwerk und quellfile der Name des Quell- System-Files ist, z.B. "CPA1715G B: C:@OS54K.COM". Auf der neuen Systemdiskette ist der File-Name des Systems unabhaengig vom Quell-Namen immer @OS.COM. Bei einer spaeteren Modifizierung des Files @OS.COM darf sich beim PC1715 die Laenge nicht aendern, andernfalls muss die gesamte Systemdiskette neu angelegt werden! Danach koennen sowohl beim Buerocomputer als auch beim PC1715 auf die angelegte Kaltstartdiskette weitere Programme kopiert werden (z.B. FORMAT, ZSID, POWER...). Einige Formate benutzen einen nichtkonstanten physischen Sek- torabstand, der der Standard-Puffergroesse von 1K (es werden ja bei Sektorlaengen <1K i.a. mehrere aufeinanderfolgende Sektoren gepuffert) sowie der Laufwerks- und Verarbeitungsge- schwindigkeit angepasst ist und das Lesen bzw. Schreiben einer Spur mit weniger Umdrehungen erlaubt. Bei Formaten mit 26 Sektoren zu 128 Bytes wird der in CP/M uebliche logische Sektorversatz von 6 angewendet. Neben dem Formatieren von Disketten erlaubt das CP/A- Dienstprogramm FORMAT[P] auch das Kopieren von Disketten. Die Quelldisketten koennen dabei einen beliebigen physischen (auch nichtkonstanten) Sektorabstand haben, der sich insbeson- dere von dem der Zieldiskette unterscheiden kann. Damit ist z.B. durch Kopieren bereits vorhandener Disketten mit konstan- tem physischen Sektorabstand nachtraeglich eine Beschleunigung des Zugriffs zu erreichen. Fuer spezielle Untersuchungen kann mit Hilfe von FORMAT das Diskettenformat unabhaengig von den standardmaessig vorhande- nen definiert werden. Ein Uebertragen von Files zwischen Disketten unterschiedlichen Formats geschieht unter CP/A i.a. problemlos durch die automa- tische Formaterkennung des beim Formatieren festgelegten Dis- kettenformates. Dies trifft auch fuer 80 Track, DS Laufwerke des PC1715 zu; es koennen hiermit auch 40 Track, SS Disketten vom Buerocomputer gelesen und geschrieben werden (indem nur jede zweite Spur benutzt wird). Treten dabei Diskettenfehler auf, so sollte man den Vorgang auf einem anderen Laufwerk wiederholen, da sich auf Grund der engen Toleranzen bei einer 80-spurigen Benutzung einer Diskette geringe Justierfehler der Laufwerke stoerend bemerkbar machen koennen. Im Extremfall sind auch die Disketten zu wechseln, wenn sie schon auf sehr vielen unterschiedlichen Laufwerken beschrieben wurden. 4.3. Fehlermeldungen Bei aufgetretenen Fehlern bei der Arbeit mit Disketten werden vom BIOS nach erfolgloser Fehlerkorrektur unabhaengig von einer evtl. folgenden BDOS-Meldung folgende Fehler detailliert ausgewiesen, um einen Laufwerks- oder Datentraegerdefekt fruehzeitig und genauer zu lokalisieren: Kurzkennzeichen Bedeutung C CRC-Error (Daten nicht lesbar) D Device-Error (Geraet existiert nicht) F Fault Adapter (zu langs. Datenuebertrag.) L Length-Error (unzulaessiges Spurformat) S Sector not found (meist falsches Format) T Track not found (Spur nicht auffindbar) U Undefined (keine Adressmarken auffindbar) W Write protected (schreibgeschuetzt) Die Fehlermeldung lautet beim Buerocomputer: BIOS Disk x-Error "y", track (hex):zz wobei x=R fuer Read (Lesen) und x=W fuer Write (Schreiben), y das oben angegebene Kurzkennzeichen und zz die hexadezimale physikalische Spurnummer, bei der der Fehler auftrat, angeben. Beim PC1715 lautet die Fehlermeldung (stark verkuerzt, da nicht mehr Platz in der Statuszeile): xy;T,S,Se=zz,d,ss wobei x,y,zz die gleiche Bedeutung wie beim Buerocomputer haben, d gibt die Diskettenseite (0 o. 1) und ss den physi- schen Sektor an. 5. Besonderheiten des BIOS Das BIOS kann entsprechend der Hardware-Konfiguration und der geplanten Betriebsweise in verschiedenen Varianten generiert werden. Saemtliche Angaben dazu befinden sich als kommentierte EQU-Anweisungen am Anfang des BIOS-Quelltextes. Es folgen daher nur Erlaeuterungen zu im BIOS enthaltenen Sonderfunktio- nen. 5.0. I/O-Byte (nur PC1715) Fuer die zeichenorientiert arbeitenden Geraete werden die Moeglichkeiten des I/O-Bytes von CP/M (Hauptspeicherplatz 3) in folgender Weise unterstuetzt: i7 i6 i5 i4 i3 i2 i1 i0 LST: PUN: RDR: CON: 00 TTY: CRT: KBD: KBD:/CRT: 01 CRT: DUM: DUM: KBD:/DUM: 10 LPT: LST: DUM: RDR:/PUN: 11 DUM: UC1: UC1: UC1:/UC1: KBD: Tastatur CRT: Bildschirm DUM: Dummy-Geraet, liefert 1Ah (EOF) bei Eingabe, Hexadezimal-Ausgabe auf CRT: bei Ausgabe, Status (Ein- und Ausgabe) immer bereit TTY: Standard-Drucker (wahlweise, sonst auf DUM:) LPT: weiterer Drucker (wahlweise, sonst auf DUM:) UC1: (SIO-)Geraet zur Datenfernuebertragung (wahlweise, sonst auf DUM:) Abbildung auf die CON:-Schnittstelle, da diese eine Status-Routine fuer die Empfangsbereitschaft unter- stuetzt. Die BIOS-Funktionen CONIN/CONOUT bzw. READER/PUNCHER warten bis zur Empfangs- bzw. Sendebereitschaft eines Zeichens. Eine Statusabfrage fuer die Sendebe- reitschaft existiert fuer UC1: nicht. Die Standardbelegung des I/O-Bytes nach Kaltstart ist 00h, davon abweichende Belegungen koennen direkt oder ueber die bekannten CP/M-Programme wie STAT gesetzt werden. Fuer den LST:-Kanal existiert ausserdem im Stop-Zustand eine besondere Taste zum Umschalten der Geraetezuordnung. 5.1. Bildschirm, Tastatur Bildschirm Die Bildschirm-Steuerzeichen sind SCP-kompatibel, zusaetzlich existieren einige Erweiterungen: Steuerzeichen Wirkung -------------------------------------------------------------- 00h NOP (keine Wirkung) 01h Cursor links oben (home) 07h akustisches Zeichen an Tastatur (i.a. nicht vorh., dann Blinken der Lampen neben Stop- Taste bzw. der Statuszeile beim PC1715) 08h Cursor zurueck 0ah Linefeed (neue Zeile) 0ch Bildschirm loeschen (verzoegert zum Lesen der zuletzt ausgegebenen Bildschirmzeilen), Cursor links oben 0dh Carriage Return (an Zeilenanfang) 0eh Umschalten auf 2. Zeichensatz (nur PC1715) 0fh Umschalten auf 1. Zeichensatz (nur PC1715) 14h Rest des Bildschirms loeschen 15h Cursor nach rechts 16h Rest der Zeile loeschen 18h Zeile loeschen, Cursor an Zeiilenanfang 1ah Cursor eine Zeile hoch 1bh Einleitung Cursorpositionierfolge, die naech- sten beiden Bytes beinhalten Zeile und Spalte, Offset 00h oder 80h 7fh Delete (streichen Zeichen links vom Kursor) 82h (auch 02h) Cursor an (Standard) 83h (auch 03h) Cursor aus 84h (auch 04h) normal hell, nicht invers 85h (auch 05h) normal hell, invers 86h (auch 06h) intensiv hell, nicht invers 87h intensiv hell, invers Wurde im BIOS die Variante mit dem international sehr verbrei- teten Terminaltyp ADM3a/ADM31 (und kompatiblen) generiert, so werden zusaetzlich folgende Steuerzeichen akzeptiert: 1bh,3dh bzw. Einleitung Cursorpositionierfolge, die naech- 1bh,59h sten beiden Bytes beinhalten Zeile und Spalte, Offset 20h Gleichzeitig wird das Steuerzeichen 1ah in diesem Fall wie 0ch interpretiert (bis zum naechsten Warmstart). 1ch Wirkung wie 1ah Wurde im BIOS die Variante mit der Moeglichkeit nutzereigener Tatendefinitionen generiert, so sind (neben der Tastendefinition im Stop-Zustand) folgende Steuerzeichenfolgen hierfuer moeglich: 1bh,1bh Einleitung der Tastendefinition, es folgt: ,,00h fuer eine Tastendefinition bzw. nur 00h fuer das Loeschen aller bisherigen Nutzertastendefinitionen. Fuer gelten die Codes, die unabhaengig vom Tastaturtyp nach der Abbildung auf den logischen Tastencode vorliegen. Fuer die i.a. umzudefinierenden Tasten S,S1,... bzw. REC/ENTER,PF1,... sind dies die (tastaturunab- haengigen!) Codes e0h,e1h,...; der Code fuer andere Tasten ist dem BIOS-Listing zu entneh- men. Bei einem Ueberlauf der entsprechenden BIOS- Tabelle erfolgt die beim Steuerzeichen 07h beschriebene Reaktion, die restlichen Zeichen erscheinen dann als direkte Bildschirmausgabe. Die definierten Nutzertasten gelten auch ueber den naechsten Warmstart hinaus bis zum explizi- ten Loeschen. Nicht definierte Steuerzeichen fuer den Bildschirm (siehe BIOS-Listing oder SCP-Dokumentation) werden auf "^" abgebildet (dies kann u.a. bei falsch installierten CP/M-Programmen auf- treten). Statuszeile (nur PC1715) Unter Ausnutzung der Hardware-Moeglichkeiten des PC1715 laesst sich in CP/A beim "grossen" Bildschirm (BAB2, 24*80) ohne Umbau und beim "kleinen" Bildschirm (BAB1, 16*24) durch Aen- dern der Bruecke X12 von 2:3 auf 2:1 auf dem Bildschirm eine zuaetzliche Zeile darstellen. Diese wird zur Darstellung fol- gender Informationen angewendet: - Normal-/Sonderzustand des Rechners (Fehlerlampe bei Buerocomputer) durch inverse/normal inten- sive Darstellung der gesamten Statuszeile. Insbesondere ist hierdurch ein optischer Ersatz des fehlenden akustischen Signals im Fehlerfall (Steuerzeichen 07h) moeglich, indem die Zeile einmal blinkt. - z.Zt eingestellte Werte fuer Standard-Laufwerk und Nutzer (z.B. "A1>"), Pflege jede Sekunde entsprechend Haupt- speicherplatz 4, - Speicherkapazitaet der z.Zt. CP/A bekannten Disketten als Orientierung fuer das Format der Diskette (z.B. "A:800k B:800k"), Pflege bei jedem LOGIN durch das BDOS, geloescht bei jedem Warmstart, - Wert des I/O-Bytes in hexadezimaler Form (z.B. "i80"), Pflege jede Sekunde entsprechend Hauptspeicherplatz 3), - Wert des Lampenpuffers in hexadezimaler Form (z.B. "l80"), Bedeutung, wenn =1: Bit 7: alle Zeichen an CRT: auch an LST: (hardcopy), Bit 6: Fehlerlampe, Bit 5: Druck nur auf rechter Druckerbahn Bit 4: Zeilenvorschub auf beiden Bahnen zugleich Bit 3-0: Selektor 3-0 (muss bei PC1715 im Lampenpuffer- byte durch Anwender gesetzt werden), Pflege jede Sekunde entsprechend Hauptspeicherpaltz 40h, - Meldungen des BIOS, werden nach 30 Sek. geloescht, - Uhrzeit, - Kopf des Tastaturpuffers, nicht-ASCII-Zeichen als ".". Die Anpassung des Bildschirmformats erfolgt beim Kaltstartvor- gang automatisch. Beim Buerocomputer wird dabei Bit 6 vom Port 0Ah abgefragt (16*64, wenn =1; 24*80, wenn =0). Da am PC1715 eine solche Hardware-Abfrage nicht moeglich ist, erfolgt die Abfrage folgendermassen: Bei der Systemgenerierung wird ein Bildschirmformat als Anfangszustand vorgegeben (i.a. 24*80). Dies wird fuer die Kaltstart-Meldungen zunaechst angenommen. Beginnt der Nutzer die Uhrzeiteingabe beim Kaltstart nicht innerhalb einer maxi- malen Zeitspanne von 20 s, so wird angenommen, dass der Bild- schirm nicht lesbar ist und auf das andere Format umgeschal- tet. Der gleiche Effekt ist durch Betaetigen von ESC statt einer Zifferntaste erreichbar. Dies wiederholt sich solange, bis die Uhrzeit eingegeben ist. Ein falsches Bildschirmformat fuehrt am PC1715 hardware- bedingt zu einem nichtsynchronisiertem Monitorbild, beim rich- tigen Format wird es (wieder) stabil. Um Software fuer den Buerocomputer, die sich durch Abfrage des Bits 6 im Port 0Ah dem Bildschirmformat anpassen, unveraen- dert auf dem PC1715 einzusetzen, wird am PC1715 der CTC-Kanal 2 mit der Portadresse 0Ah "missbraucht" und mit einer ent- sprechenden (und sich nicht veraendernden) Zeitkonstante geladen. Tastatur Bis zu 48 Tastatur-Zeichen (Laenge modifizierbar) werden vom BIOS unabhaengig von der Arbeit peripherer Geraete (z.B. Dis- kettenlaufwerke) gepuffert, i.a. gehen dadurch selbst bei versierten Schreibkraeften keine Zeichen verloren, die Meldung "WARTE" bei Textverarbeitungssystemen braucht nicht beachtet zu werden. Bei Programmen, die nicht staendig den Tastaturpuf- fer leeren (wie z.B. POWER) kann bereits die Eingabe fuer den naechsten Programmschritt "im Voraus" erfolgen. Beim PC1715 sind die gepufferten Zeichen im rechten Teil der Statuszeile teilweise sichtbar, Sonderzeichen <20h als Punkt. Bei der Belegung der Tasten mussten bei der Vielfalt von Tastaturen eine Reihe von z.T. widerspruechlichen Forderungen erfuellt werden (die jedoch wesentlich fuer die Nutzerakzep- tanz sind!): - Anpassung an haeufig benutzte Funktionen bei der Systembe- dienung, dem Textverarbeitungssystem WordStar und anderer Standardsoftware (Datenbank-Technik, Tabellenkalkula- tion...), - moeglichst gleiche Tasten fuer gleiche Funktionen bei ver- schiedenen Tastaturen, - moeglichst wenig SHIFT- oder CTRL-Umschaltungen, - Wirkung der Tasten bei allen Anwendungen gleich (keine spe- zielle Tastenbelegung fuer WordStar o.ae.), - raeumliche Gruppierung von logisch zusammengehoerigen Tasten, - Nutzung der LED-Anzeigen fuer Systemzustaende, die i.a. nicht auf dem Bildschirm sichtbar sind (z.B. Insert-Modus bei WordStar auf dem Bildschirm sichtbar, daher LED ander- weitig nutzbar), - Moeglichkeit der Tasten-Umdefinition (auch Zeichenfolgen auf einer Taste) fuer spezielle Nutzeranwendungen. In der folgenden Tabelle nicht aufgefuehrte Tasten werden ignoriert. Die Funktion der jeweiligen Taste haengt vom Systemzustand (CCP oder Anwendungsprogramm) ab und ist in den entsprechenden Dokumentationen nachzulesen. --------------------------------------------------------------- K76x6 ..x4 ..37 PC1715 Code bzw. Funktion --------------------------------------------------------------- ^| ^| ^| ^| ^E v|,CE v|,ERINP v|,CE v|,CE ^X <- <- <- <- ^H (kann man auf ^S umdef.) -> -> -> -> ^D |<- |<- |<- |<- ^A ->| ->| ->| ->| ^F <-' <-' <-' <-' ^C '\~ '\~ '\~ '\~ ^R |<-| |<-| |<-| |<-| ^I DEL DEL DELCH DEL 7fH (Streichen linkes Z.) S REC ENTER S ^B S1 PF1 PF1 F1 ^G S2 PF2 PF2 F2 ^Y S3 PF3 PF3 F3 ^T S4 PF4 PF4 F4 ^V S5 PF5 PF5 F5 ^L S6 PF6 PF6 F6 ^OD S7 PF7 PF7 F7 ^OG S8 PF8 PF8 F8 ^W S9 PF9 PF9 F9 ^Z ex. n. PF10 PF10 F10 ^KS^QP ex. n. PF11 PF11 F11 ^KB ex. n PF12 PF12 F12 ^KK ex. n. ex. n. ex. n. F13 ^KV DELLINE DELLINE DELL,ESC ESC ^[ (Escape) ex. n. ex. n. HLT ex. n. ^S (in CP/A STOP-Taste) ex. n. ex. n. PRINT ex. n. ^P (in CP/A Hardcopy-Taste) ET1 ENTER ET1 ET ^M (CR) ET2 RESET ET2 ex. n. CTRL, nochmaliges Druecken hebt CTRL-Zustand auf; ^Q-Prefix fuer alle Sonder- tasten (WordStar ^Q-Fktnen.) z.B. ^Q^F, ^Q^D oder ^Q^Y Sel ex. n. 0..3 ex. n. Setzen von Bit i (0..3) in 0..3 unter Hauptspeicherplatz 40H und LED einschalten LED daneben; Bit 0 wird als CAPS-Funkt. benutzt (gross <-> klein) 00 ex. n. 00 00 00 000 Dzif ex. n. ex. n. 000 M EREOF M F14 Bios-Monitor CI OFF RESET F15 Stop des Rechners mit LED- und Signalanzeige INSMODE INSMODE INSMD Minus Hardcopy Drucker ein/aus unter CE LED daneben an bei "ein" INSLINE INS INSL INS Synchronisieren Drucker und BIOS-Druckertreiber Erlaeuterungen: --------------- Hardcopy (INS-MODE-Taste) schaltet den Drucker direkt parallel zur Bildschirmausgabe. Zur Kontrolle dieses Zustands wird die neben der Taste liegende Lampe angesteuert (bei PC1715 siehe Statuszeile). Erneutes Druecken der Taste hebt den Zustand wieder auf. Der Zustand bleibt ueber den naechsten Warmstart hinaus erhalten. Es ist zu beachten, dass nicht alle Bildschirmsteuerzeichen vom Drucker verstanden werden, i.a. betrifft dies jedoch nur die expliziten Steuerfolgen zur Kursorpositionierung. Diese Steuerzeichen werden bei der Druckausgabe auf "^" abgebildet. Die ^P-Funktion des BDOS ist weiterhin verfuegbar, jedoch sollten nicht beide Funktionen zugleich aktiv sein. Mit der Taste INSLINE werden Druckertreiber und Drucker syn- chronisiert. Sie sollte nach jeder Neueinstellung des Blattan- fangs nach Betaetigung der SYN-Taste am Drucker gedrueckt werden. Beim Betaetigen der Stop-Taste (CI/OFF/RESET/F15 je nach Tastatur) wird der Tastaturpuffer geleert, das gesamte System bis zur Betaetigung einer beliebigen anderen Taste bzw. bis zum Abbruch des laufenden Programms durch Warmstart (^C) ge- stoppt (Warteschleife in Tastatureingabe) und die Fehlerlampe eingeschaltet. Diese Reaktionen werden ggf. bis zur Beendigung zeitkritischer Diskettentransfers oder des Bildneuaufbaus verzoegert. Die Taste enthaelt die ^S-Funktion des BDOS in verallgemei- nerter Form und erlaubt auch dann das Stoppen der Anlage, wenn vom Programm keine Tastatureingabe oder Bildschirmausgabe gefordert wird. Ausserdem sind im Stop-Zustand die Betaetigungen folgender Tasten moeglich (die waehrend des Stop-Zustandes damit eine andere Bedeutung haben): - Hardcopy-Taste (INSM) In diesem Fall wird der gesamte momentane Bildschirminhalt auf das LIST-Geraet (i.a. Drucker) kopiert. - Taste Drucker-synchronisieren (nur PC1715) Weiterschalten des LST:-Kanals im I/O-Byte - bei generierter Variante 2-Bahn-Drucker (nur PC1715): Taste S (=^B): Umschalten auf andere Druckerbahn, gleiche Wirkung haben die CP/A-Druckersteuerzeichen 88h und 89h; Taste F1 (=^G): Ein-/Ausschalten parallelen Vorschub auf beiden Druckerwalzen (fuer breites Papier), gleiche Wirkung hat das CP/A-Druckersteuerzei- chen 8ah (ausschalten durch 88h/89h) - Monitor-Taste (M), nur wenn mit BIOS-Uhr generiert! Die Uhr-Anzeige auf dem Bildschirm wird aus- bzw. einge- schaltet. Dieser Zustand bleibt auch ueber einen Warmstart hinweg erhalten. Die Uhr laeuft intern weiter, auch wenn die Anzeige ausgeschaltet (bzw. bei PC1715 "eingefroren") ist. - Escape-Taste (DELL oder ESC), wenn Nutzer-Tastendefinition im BIOS generiert. In diesem Fall sind anschliessend folgende Handlungen fuer eine Tastendefinition notwendig: - Betaetigen der umzudefinierenden Taste, - Eingabe der zugehoerigen Zeichenfolge (einschl. Control und anderen schon umdefinierten Tasten, die gerade neu zu definierende Taste enthaelt dabei die bis dahin definier- te Zeichenfolge), - Betaetigen von Escape zum Abschluss. Es koennen bis auf Begrenzungen des Speicherplatzes im BIOS (bei Generierung definierbar) beliebig viele Tasten waehrend der Nutzerarbeit umdefiniert werden. Eine volle Tabelle wird durch Blinken der Fehlerlampe (und akustisches Signal, wenn vorhanden) angezeigt. Soll eine schon umdefinierte Taste erneut umdefiniert wer- den, so muessen zuvor alle bis dahin erfolgten Umdefinitio- nen geloescht werden (was sich auf Grund des begrenzten Tabellenplatzes ohnehin als notwendig erweisen wird). Dies geschieht im Stopzustand durch zweimaliges Betaetigen der Escape-Taste hintereinander. Eine Umdefinition von Tasten bzw. ein Loeschen der Umdefini- tionstabelle kann auch vom Anwenderprogramm errreicht werden (siehe Bildschirm-Steuerzeichen). Als Spezialfall einer Umdefinition sei auf die Neubelegung der Taste "<-" mit ^S statt ^H hingewiesen, so dass auch die Softwarepakete, die als "Kursor nach links" nicht auch ^H sondern nur ^S verstehen, unveraendert arbeiten koennen. Das BDOS von CP/A behandelt ^H und ^S bei der Stringeingabe gleichberechtigt (durch Wegfall der ^S-Funktion zum Stoppen moeglich geworden). POWER beispielsweise arbeitet jedoch nur mit ^H richtig, daher wurde als Kaltstart-Belegung ^H ge- waehlt. Wurde die Monitor-Variante des BIOS generiert, so wird beim Betaetigen der M-Taste der BIOS-Monitor aufgerufen (s. 5.6; ggf. ebenfalls verzoegert); in der Variante ohne Monitor wird die Taste ignoriert. Beim PC1715 wird die Taste SI/S0 unterstuetzt (Umschalten des Zeichensatzes, auch ueber Bildschirm-Steuerzeichen - s.d.). 5.2. Drucker a) Buerocomputer Im BIOS wurde als Variante fuer SD1152-Drucker ein Treiber integriert, der neben der normalen Betriebsart den Drucker DIABLO 1610/1620 simuliert. Dadurch konnten alle WordStar- Druckfunktionen auf der Basis von Microspace-Schritten des Druckwerks (1 1/2 -zeiliger Druck, Schattendruck zur Hervorhe- bung von Textteilen) sowie eine Farbbandumschaltung (bessere Ausnutzung einfarbiger Baender) nutzbar gemacht werden. Hin- weise zur Ansteuerung sind dem BIOS-Quelltext bzw. entspre- chenden WordStar-Unterlagen zu entnehmen. Folgende Besonderheiten bei der Nutzung von WordStar ergeben sich aus der Tatsache, dass der obige Druckertyp eine Schritt- weite von 1/120" fuer den Zeichenabstand besitzt, Drucker vom Typ SD 1152 aber nur 1/60", d.h. im Druckertreiber gerundet werden muss: - .CW n n ungerade arbeitet nicht exakt - .UJ 1 Bei Microspace koennen durch Rundungen Zeichenab- standsaenderungen auftreten, die das Druckbild negativ beeinflussen. Weiterhin ergibt sich als Einschraenkung: - ^P nicht erlaubt (Ueberdrucken von Zeilen arbeitet nur bei zufaelliger Druckrichtung vorwaerts exakt, da kein Vor- und Rueckwaertsdruck in diesem Fall). Die DIABLO-Simulation wird durch die Steuerzeichenfolge '1B 34' aktiviert, alle anderen Steuerzeichenfolgen vor dieser Aktivierung werden normal an den Drucker gesendet, es sind also auch entsprechende Programme zur direkten Druckerbedie- nung nutzbar. Bei eingeschalteter Hard-Kopie erfolgt durch das BIOS nach 120 Zeichen ein automatischer Zeilenvorschub und nach 67 Zeilen ein automatischer Seitenvorschub (beide Werte sind im BIOS- Quelltext und im unteren Hauptspeicher, siehe 5.7.2., modi- fizierbar). Bei Ausgabe von TAB-Steuerzeichen realisiert der Druckertreiber die TAB-Funktion in Schritten von 8 Zeichen. Zur besseren Farbbandausnutzung bewirkt beim SD1152 jede zweite Betaetigung der Taste "Drucker synchronisieren" (INSLINE, siehe 5.1.) ein Vertauschen der oberen und der unteren Farbbandhaelfte (schwarz und rot). Dieser Zustand bleibt bis zum naechsten Betaetigen der Taste auch ueber den naechsten Warmstart hinaus erhalten. Saemtliche Funktionen sind fuer Drucker mit PIO1/PIO2- und IFSS-Anschluss durch entsprechende Quelltextvarianten im BIOS verfuegbar. b) PC1715 Fuer den PC1715 sind die Anschluesse "Printer", "V.24", "IFSS A" und "IFSS B" (jeweils 9600 Bd) unterstuetzt, ausge- waehlt wird vom BIOS der im I/O-Byte (Hauptspeicherplatz 3, Bit 6 und 7) eingestellte Druckerausgang, siehe I/O-Byte. Um ein Blockieren des Rechners bei versehentlich falsch ge- waehltem Druckerausgang, defektem oder nicht vorhandenem Drucker zu vermeiden, erfolgt im BIOS eine time-out-Ueber- wachung von 30 Sekunden auf die Empfangsbereitschaft des Druckers. Wird diese Zeit ueberschritten (u.U. muss erst der Druckpuffer geleert werden ehe der Drucker wieder bereit ist), so werden nach einer BIOS-Meldung bis zum naechsten Warmstart oder dem Betaetigen der Taste "Drucker synchr." alle Ausgaben an dieses Geraet ignoriert. Es erfolgt (ausser bei generierter Variante 2-Bahn-Drucker) keine Interpretation der ausgegebenen Zeichen, so dass statt eines Druckers auch andere Geraete mit entsprechender Schnitt- stelle (einschl. Datenfernuebertragung, insbesondere bei UC1: - hier erfolgt grundsaetzlich keine Interpretation der zu sendenden und zu empfangenen Zeichen und keine time-out-Ueber- wachung) angeschlossen werden koennen. Es werden 2-Bahn-Drucker mit der Schnittstelle 1 (z.B. 1152 IFSS) fuer beide Bahnen getrennt und parallel unter- stuetzt. Dazu sind in CP/A (nicht gueltig fuer SCP!) folgende Steuerzeichen definiert: 88h Drucken auf linker Bahn (Standard) 89h Drucken auf rechter Bahn (absolute Position 138) 8ah Drucken auf linker und rechter Bahn (Linefeed auf beiden) Die gleiche Wirkung wie obige Steuerzeichen kann im Stopzu- stand durch Betaetigen der Tasten S (^B) bzw. F1 (^G) erreicht werden (siehe Abschnitt Tastatur). Der eingestellte Zustand wird im Lampenpuffer, Bit 5 und 4 gespeichert und bleibt ueber den naechsten Warmstart hinaus erhalten. 5.3. Zeitgeberdienste 5.3.1. Ueberblick Unter Ausnutzung der beim Buerocomputer kaskadierten CTC- Kanaele 2 und 3 wurden Zeittakte von 5 ms und 1 s bereitges- tellt. Beim PC1715 sind die freien CTC-Kanaele nicht kaskadiert, hier wird als Kompromiss ein 25 ms Takt bereitgestellt, auf dessen Basis softwaremaessig ein 1 s Takt erzeugt wird. Auf Grund von zeitkritischen Ablaeufen am PC1715 (nur ein Prozessor!) von laenger als 25 ms (z.B. Diskettentransfer von 1 KByte Sektor- laenge ca. 40 ms) koennen 25 ms Takte verloren gehen, d.h. sowohl 25 ms als auch 1 s Takt koennen ueber laengere Zeit hinweg "nachgehen". Im folgenden sind im Falle des PC1715 alle "5 ms" sinngemaess (Faktor 5) durch "25 ms" zu ersetzen. Der Zeittakt von 5 ms ist fuer Zeitmessungen vorgesehen. Die Einheit von 5 ms ist ein Kompromiss zwischen der zusaetzlichen Interruptbelastung und dem maximal moeglichen Faktor von 256 zur Erreichung des kaskadierten 1-s-Taktes. Bei jedem Inter- rupt im Abstand von 5 ms wird ein 2-Byte-Zaehler auf dem Hauptspeicherplatz TIM5CN (s. 5.7.2) zyklisch um 1 erhoeht. Der Anfangswert ist beliebig, d.h. es sind durch staendiges Aktivieren/Deaktivieren auch kumulative Zeitmessungen moeg- lich. Die maximale Messdauer betraegt fuer eine Periode ca. 327 s bei einer Genauigkeit von 5 ms. Der 5-ms-Zeittakt ist standardmaessig aktiviert. Nach Rueck- kehr aus der Interruptreaktionsroutine des Taktes wird beim Buerocomputer CONST aufgerufen und damit ein (nicht existiere- nder) Tastaturinterrupt simuliert und eine moeglicherweise gedrueckte Taste gelesen. Der Zeittakt von 1 s ist zur Realisierung eines Time-Out- Apparats vorgesehen. Bei jedem Interrupt wird ein 2-Byte- Zaehler auf Hauptspeicherplatz TIM1CN (s. 5.7.2) um 1 vermin- dert. Der Nulldurchgang stellt i.a. das Time-Out-Ereignis dar, muss jedoch explizit abgefragt werden (keine Unterbrechung des gerade aktiven Programms!). Die maximale Time-Out-Groesse betraegt hierbei ca. 9.1 Std. Ausserdem wird jede Sekunde zu der durch TIM1RT (s. 5.7.2) definierten Routine gesprungen, wodurch beliebige Nutzerroutinen aktivierbar sind (alle Regi- ster frei, Rueckkehr mit RET, Interruptverbot muss erhalten bleiben!). Standardmaessig wird bei jedem Warmstart die Adres- se einer leeren Routine (nur RET-Befehl) auf TIM1RT hin- terlegt. Auch der 1-s-Zeittakt ist standardmaessig aktiviert. 5.4. Speicherschutzdienste (nur fuer Buerocomputer) 5.4.1. Ueberblick Die Speicherschutzeinrichtung basiert auf einer Einteilung des verfuegbaren Hauptspeichers von 64K Byte in 64 Byte lange Abschnitte, die unabhaengig voneinander als geschuetzt gekenn- zeichnet werden koennen. Schreibbefehle in diese Bereiche sind nur aus geschuetzten Bereichen selbst erlaubt, anderenfalls erfolgt eine Unterbrechung. Gekoppelt mit dem Speicherschutz ist ein Schutz gegen Ausfuehrung von E/A-Befehlen ausserhalb von geschuetzten Bereichen (fuehrt zu NMI-Interrupt), d.h. geschuetzte Bereiche werden als privilegierte Systemprogramme betrachtet. Bei Nutzung der Speicherschutzeinrichtung muss daher der BIOS/BDOS-Bereich grundsaetzlich mitgeschuetzt werden (vom BDOS aus wird in Disketten-Tabellen geschrieben, die im BIOS liegen). Alle sonstigen Programmbereiche, in denen E/A-Befehle abgearbeitet werden koennen, muessen ebenfalls unabhaengig von dem eigentlich gegen Ueberspeichern zu sichernden Bereich geschuetzt werden. 5.4.2. Routinen zur Realisierung MPINIT Initialisierung der Speicherschutzeinrichtung und Definition des standardmaessig zu schuetzenden Bereichs von BDOS+40h bis vor Bildschirmpuffer. MPSET(i_Register_BC:_Anfangsadresse, i_Register_DE:_Endadresse) Definition eines zusaetzlich zu schuetzenden Bereichs. Sind die Adressen nicht durch 64 teilbar, so wird die An- fangsadresse ab- und die Endadresse aufgerundet. MPOFF Der gesamte Speicherschutz wird ausser Kraft gesetzt. MPOFF wird bei jedem Warmstart aufgerufen, d.h. der normale CP/A-Betrieb erfolgt ohne Speicherschutz. 5.4.3. Reaktion bei Verletzen des Speicherschutzes Der Schreibversuch wird unterdrueckt. Auf dem Bildschirm er- folgt eine Ausschrift mit Angabe der Adresse des ueber- naechsten Befehls (keine sofortige Unterbrechung auf Grund der Bearbeitungszeit der Hardware). Ist das System mit BIOS-Moni- tor generiert, so wird anschliessend zu diesem verzweigt, andernfalls wird das laufende Programm nicht gestoppt (eine Verlangsamung der Speicherschutz-Ausschriften kann in diesem Fall z.B. durch Hardcopy auf den Drucker erreicht werden). 5.4.4. Reaktion bei Verletzen des E/A-Schutzes Der E/A-Befehl im ungeschuetzten Bereich wird ausgefuehrt. Anschliessend erfolgt eine NMI-Unterbrechung, d.h. es wird zur Adresse 66H verzweigt. Da diese Zelle evtl. vom auszutestenden Programm benutzt wird (Standard-FCB von 5CH bis 7FH), kann hier nicht standardmaessig ein Sprung zur entsprechenden Reak- tionsroutine hinterlegt werden. Deshalb wurde innerhalb des BIOS-Monitor die Moeglichkeit geschaffen, auf Adresse 66H wahlweise - einen Sprungbefehl zur Reaktionsroutine (Reaktion dann ana- log zu Speicherschutz, jedoch ohne Aufruf BIOS-Monitor) oder - einen Sprungbefehl zu einer leeren Reaktionsroutine (nur RETN) zum Ignorieren des Schutzes oder - keinen Sprungbefehl zu hinterlegen (s. 5.6.5). Ein hinterlegter Sprungbefehl muss bis nach dem Aufruf von MPOFF dort stehen bleiben! 5.5. Konsol-Eingabe/Ausgabe Die den alphanumerischen Tasten und den anderen Funktionsta- sten entsprechenden logischen Zeichenfolgen gelangen in einen Tastaturpuffer. Die Mehr-Zeichen-eingaben (z.B. "00" oder "^KB") werden vorher aufgeloest. CONST meldet zurueck, ob der Puffer wenigstens ein Zeichen enthaelt. CONIN uebergibt - wenn vorhanden - das erste Zeichen aus dem Puffer. Anderenfalls wird auf die naechste Eingabe gewartet. Desweiteren realisiert CONIN die Dauerfunktion fuer alle al- phanumerischen Tasten der Tastatur K7606/7604. In CONOUT wird die Ausgabe des Zeichens 07h (BELL) durch einmaliges Blinken der Fehlerlampen realisiert. 5.6. BIOS-Monitor Der BIOS-Monitor stellt - seine Generierung vorausgesetzt - einen Satz von residenten Funktionen bereit, die somit ohne Veraenderung der Speicherplatzbelegung staendig, d.h. auch waehrend der Arbeit eines Nutzerprogramms zur Verfuegung ste- hen. Die Aktivierung dieser Funktionen ist im Dialog durch Druecken der Monitor-Taste oder direkten Aufruf der Prozedur MONCAL moeglich. Der BIOS-Monitor schuetzt sich gegen rekursiven Aufruf. 5.6.1. Monitor-Taste Die Monitor-Taste ist gegenueber anderen Tasten der Tastatur nicht ausgezeichnet. Insbesondere erzeugt auch sie bei ihrer Betaetigung am Buerocomputer keinen Interrupt, d.h. sie muss abgefragt werden. Folgende zwei Methoden wurden am Burocompu- ter implementiert: - Abfrage bei Eingabe eines Zeichens durch das BIOS, d.h. nur zu Zeitpunkten, wo auch eine Eingabe vom Programm gefordert wird und die Steuerung ohnehin im BIOS liegt; - Abfrage im 5-ms-Zeitinterrupt, falls dieser aktiv ist. Nach Druecken der Monitor-Taste erfolgt eine Ausschrift mit Angabe der Rueckkehradresse (d.h. der Unterbrechungsstelle beim 5-ms-Interrupt bzw. der Aufrufstelle bei normaler Zei- cheneingabe). Danach koennen nacheinander beliebig viele Moni- tor-Funktionen durch Eingabe ihres Anfangsbuchstabens (gross oder klein) aufgerufen werden. Eine leere Eingabe oder die erneute Betaetigung der Monitor- Taste fuehren zum Verlassen des BIOS-Monitors. 5.6.2. Uebersicht ueber die Monitor-Kommandos Zeichen Funktion M Lesen/Modifizieren Speicher C Aufruf Unterprogramm P Ein-/Ausschalten Speicherschutz R Anzeige der Registerstaende beim Aufruf des Monitors T Ein-/Ausschalten Zeittakt H Help (Konvertieren Hex->Dez->ASCII) 5.6.3. Mem-Kommando Nach Eingabe von "M" wird eine 2-Byte-Adresse in hexadezimaler Form erwartet. Sie gibt die Anfangsadresse eines Speicherbe- reichs an. Jeweils ein Byte wird aufsteigend in hexadezimaler Form ange- zeigt und eine Eingabe erwartet: keine Eing.: keine Veraenderung; naechstes Byte 2 Hex-Ziffern: Ueberschreiben des Bytes; naechstes Byte "-" (Minus): keine Veraenderung; vorheriges Byte 4 Hex-Ziffern: keine Veraenderung; neuer Speicherbereich "." (Punkt): Ende des Mem-Kommandos 5.6.4. Call-Kommando Nach Eingabe von "C" wird eine 2-Byte-Adresse in hexadezimaler Form erwartet. Sie gibt die Startadresse eines Unterprogramms an. Als Rueckkehradresse wird vor dem Ansprung dieses Pro- gramms eine Rueckkehr zum BIOS-Monitor in das Stack gebracht. 5.6.5. Protect-Kommando (nur fuer Buerocomputer) Nach Eingabe von "P" (Aufruf MPINIT: Definition des standard- maessig zu schuetzenden Bereichs) wird eine der folgenden Eingaben erwartet: - "." (keine weitere Aktion), - ein Adressenpaar (bezeichnet einen zu schuetzenden Bereich), - "-" (Aufruf MPOFF: Aufhebung des gesamten Speicherschutzes), - "I" (Einstellung des Regimes "Ignorieren von E/A-Schutz- Verletzungen", d.h. Hinterlegen von RETN auf 66H; vgl. 5.4.4), - "L" (Einstellung des Regimes "Protokollieren von E/A-Schutz- Verletzungen", d.h. Hinterlegen eines Sprungbefehls auf 66H; vgl. 5.4.4). Wird keine Regimeeinstellung ("I" oder "L") vorgenommen, so bleibt die Zelle 66H unveraendert (Standard-FCB von 5CH bis 7FH). 5.6.6. Reg-Kommando Nach Eingabe von "R" werden die Staende der Registerpaare AF,BC,DE,HL,IX,IY,SP an der Aufrufstelle des Monitors sowie die Leitadresse des Rettebereichs dieser Register (fuer even- tuelle Modifizierung mittels M-Kommando) angezeigt. 5.6.7. Time-Kommando Nach Eingabe von "T" wird eine "5" zur Aktivierung/Deaktivie- rung des 5-ms- (bei PC1715 25-ms-) Zeittaktes oder eine "1" zur Aktivierung/Deaktivierung des 1-s- (bei PC1715 wie 25-ms-) Zeittaktes erwartet. Folgt danach kein Zeichen, so wird der Takt aktiviert, ein anschliessendes "-" deaktiviert ihn. 5.6.8. Help-Kommando Nach Eingabe von "H" wird eine Hexadezimal-Zahl zwischen 0 und FFFF erwartet. Ihr Dezimalwert und ggf. das zugeordnete ASCII- Zeichen (nur fuer Zahlen zwischen 20H und 7EH) werden ausgege- ben. 5.7. Einbindung der Erweiterungen in CP/A 5.7.1. Sprungvektor Der Aufruf des Monitors, der Zeitgeber- und der Speicher- schutzroutinen u.a. BIOS-Unterprogramme ist von normalen Pro- grammen aus ist ueber einen Sprungvektor moeglich. Dieser besteht aus je 3 Byte langen Sprungbefehlen. Die Anfangsadres- se des Sprungvektors befindet sich auf Hauptspeicherplatz 4EH (beim Warmstart hinterlegt). Folgende Entries sind vergeben (Funktion siehe BIOS-Listing): Entry Parameter 0 JP MONCAL - 3 JP TIM5ON - 6 JP TIM5OF - 9 JP TIM1ON - C JP TIM1OF - F JP MPINIT - 12 JP MPSET Reg. BC,DE 15 JP MPOFF - 18 JP DELSPS - 1B JP DELSPR - 1E JP DISKIO Reg. HL,IX,AF 21 JP UMLCON Reg. A Sind die betreffenden Funktionen nicht generiert, so steht auf dem Entry ein RET-Befehl (und 2 NOP-Befehle). Der Aufruf ist z.B. ueber folgende Befehlsfolge moeglich: ld a, ld hl,(4eh) add a,l ld l,a ld a,0 ;kein XOR! adc a,h ld h,a jp (hl) 5.7.2. Feste Adressen im unteren Hauptspeicher 00h..02h JP BIOS+3 (Warmstart) 03h IOBYTE 04h User/Defaultdrive 05h..07h JP BDOS 08h..1fh frei (fuer RST-Routinen nutzbar) 20h..2ch bei OSS-RAM-Floppy belegt, sonst frei 2dh..37h frei (fuer RST-Routinen nutzbar) 38h JP Break (Debugger) 3bh..3fh reserviert Als Scratch-Bereich des BIOS sind in CP/M die Zellen 40H bis 4FH freigehalten. Sie werden von CP/A wie folgt benutzt, bis auf CPMEXT koennen alle Werte auch vom Nutzer gesetzt werden: 40h Pufferspeicher fuer Tastatur-Lampen (0 bei aus, 1 bei ein) bei K7606 neben Bit 7 Hardcopy-Lampe INS MODE 6 Fehler-Lampe CI 5..4 reserviert (=0) 3..0 Selektor 3-0 Selektortasten 41h..42h TIM5CN Zaehler 5-ms-Zeittakt 43h..44h TIM1CN Zaehler 1-s-Zeittakt 45h..46h TIM1RT Adr. der 1-s-Nutzerroutine 47h LMAXP max. Anzahl Druckpositionen bei Hardcopy Bildschirm -> Drucker 48h LMAXN max. Anzahl Druckzeilen bei Hardcopy Bildschirm -> Drucker 49h..4dh reserviert 4eh..4fh CPMEXT Sprungvektoradresse fuer CP/A-Erweiterung -------------- 50h..52h BIOS-BCD-Uhr in der Form HHMMSS 53h..55h von ACCOUNT hinterlegtes BCD-Datum TTMMJJ 56h..5bh reserviert 5ch..7fh Standard-FCB 80h..ffh Standard-DMA ab 100h Beginn TPA 5.7.3. Belegung der Interruptsaeule Die Interruptsaeule befindet sich i.a. 40h Bytes vor dem Beginn des Bildschirmpuffers, d.h. auf f7c0h. Die genaue Lage sollte ueber das I-Register ermittelt werden, im folgenden wird hierfuer 'ii' verwendet: vor iic0h BIOS, d.h. Interruptsaeule ohne Systemmo- difikation nicht nach vorn "verlaengerbar" iic0h..iicfh Kassettenanschluss, frei wenn nicht vorh. iid0h..iidfh SIO (V.24 o.ae.) iie0h..iie5h frei iie6h..iie7h Speicherschutz iie8h..iiebh Disketten iiech..iiefh frei iif0h..iif7h Lochstreifen Leser/Stanzer iif8h..iifbh System-CTC Kanal 0, 1 (frei) iifch..iiffh System-CTC Kanal 2, 3 (5ms, 1sec) 6. Besonderheiten des BDOS CP/A unterscheidet sich durch folgende inhaltlichen Veraende- rungen im BDOS vom Betriebssystem CP/M, Version 2.2 (bei gleichem Hauptspeicherbedarf von E00h Bytes): - Beschleunigung der Arbeit mit Nicht-Default-Laufwerken. Ist im FCB ein anderes als das Default-Laufwerk angegeben (FCB[0]<>0) und dies ist nicht ausgewaehlt, so wird vom BDOS auf dieses umgeschaltet (SELDSK) und beim Verlassen nicht zurueckgeschaltet, sondern nur eine haengende Umschaltung vermerkt. Dadurch wird eine staendige Uebernahme der Disk-Parameter durch das BDOS vermieden, so dass auch in diesem Fall die gleiche Geschwindigkeit wie bei der Arbeit mit Default- Disketten erreicht wird. - Wegfall der ^S-Funktion. Das Stoppen von Konsolausgaben kann als Spezialfall der allgemeinen Stop-Funktion im BIOS (s.5.1.3) erreicht werden. Verbunden mit dem Wegfall der ^S-Funktion konnte auf die Pufferung von Konsoleingaben im BDOS voellig verzichtet wer- den, d.h. es werden keine Zeichen vertauscht, wenn zwischen BDOS und direkter BIOS-Tastatureingabe gewechselt wird. - ^S und DEL wirken bei der Stringeingabe ueber das BDOS wie ^H. - Um eine Arbeit ohne LW A (weil es gerade defekt ist und die Laufwerke nicht umgesteckt werden koennen) zu erlauben, wird statt Laufwerk A: dasjenige Laufwerk, von dem aus der Kalt- start erfolgte bei der BDOS-Funktkion "Disk-Reset" selek- tiert. Da mit dieser BDOS-Funktion auch die Abarbeitung von SUBMIT-Stroemen verbunden ist, muss daher beim Aufruf von SUBMIT das Kaltstart-Laufwerk als Standardlaufwerk zugewie- sen sein, damit der Kommandostrom dort abgelegt wird! Erfolgte der Kaltstart von Laufwerk A, so hat diese BDOS- Aenderung keine Auswirkungen. - IX und IY werden durch das BDOS (und daraus resultierende BIOS-Aufrufe) nicht zerstoert. - Es wurde ein Kopierschutz integriert, das Kopieren ge- schuetzter Dateien fuehrt zu der Fehlermeldung 'File R/O' (unabhaengig vom evtl. R/O-Status der Dateien). Wie dieser Schutz funktioniert, wird hier nicht verraten. 7. Besonderheiten des CCP Das CCP enthaelt gegenueber der Version CP/M 2.2 einige Erwei- terungen (bei gleichem Hauptspeicherbedarf von 800h Bytes). Sie betreffen vor allem die Arbeit mit verschiedenen Nutzer- bereichen, wie sie sich bei 800k-Disketten als sinnvoll erwei- sen kann. Bei einem eingestellten Nutzerbereich groesser als 0 lautet die Promt-Meldung du> statt nur d> (d fuer Default-Laufwerk, u fuer dezimale Nutzernummer). Hierdurch hat der Anwender bei der Aufteilung einer Diskette in mehrere Nutzerbereiche einen leichteren Ueberblick, in welchem Bereich er sich z.Zt. be- wegt. Kommandofiles werden bei USER>0 auch unter USER 0 und wenn dort erfolglos auf der Systemdiskette (im Kaltstart-LW) unter USER 0 gesucht (gilt nicht fuer nachgeladene Files!). Weiterhin existieren zusaetzliche residente Kommandos: CLK hh:mm:ss tt.mm.jj Durch dieses Kommando koennen Uhrzeit und Datum (beide Angaben ab 50h in BCD-Form vom Kaltstart bzw. von ACCOUNT hinterlegt) neu gestellt werden. Dies kann sich z.B. nach Programmen, die diesen Bereich zerstoert oder wegen zu langer geschlossener Inter- rupts eine falsche Uhrzeit verursacht haben, als notwendig erweisen. Im angegebenen Parameterformat bedeutet (jeweils dezimal, auch einstellig erlaubt): hh:mm:ss Stunden:Minuten:Sekunden tt.mm.jj Tag.Monat.Jahr Alle Angaben ab ss koennen fehlen, in diesem Fall werden diese Werte nicht veraendert. GO Das letzte geladene Programm wird ohne Neuladen aktiviert, Parameter koennen wie beim Direktaufruf angegeben werden, Nutzerbereich beliebig (d.h. das Programm kann zuvor ueber einen anderen Nutzerbe- reich in den Hauptspeicher gebracht worden sein), EXT [d:] Das angegeben COM-File wird zu einem residenten Kommando erklaert, indem es vor BDOS, CCP und vor evtl. schon residenten zusaetzlichen Kommandos im Hauptspeicher abgelegt wird, um bei Aufruf statt von Diskette von dort nach 100h geladen zu werden. Hier- durch verringert sich jedoch der TPA entsprechend. Da residente Kommandos nur maximal 4 Zeichen lang sein duerfen, trifft dies auch auf zu. RES Streichen aller zusaetzlich residenten Kommandos HELP Ausgabe einer Liste aller z.Zt. residenten Kommandos Bei jedem Warmstart prueft das BIOS, ob das ueber das CCP definierte Standard-Laufwerk im System definiert ist. Im nega- tiven Fall (z.B. Tippfehler) wird auf das Kaltstart-Laufwerk umgeschaltet, der Nutzerbereich bleibt erhalten. Kurzuebersicht zu letzten Aenderungen an CP/A ;CCP ; - Promt du> bei u groesser 0 ; - Kommandofiles werden bei USER>0 auch unter USER 0 und ; wenn dort erfolglos auf der Systemdiskette (im Kalt- ; start-LW) unter USER 0 gesucht (gilt nicht fuer nach- ; geladene Files!) ; - neue residente Kommandos GO, CLK, EXT, RES, HELP ;BDOS ; - Um eine Arbeit ohne LW A zu erlauben, wird das erste ; Default-LW nach Kaltstart bei jedem Disk-Reset selek- ; tiert. ;Floppy: ; - Beschleunigung der Arbeit mit 8"-Disketten am Buero- ; computer, vor allem beim Kopieren zw. 2 Laufwerken ;Bildschirm: ; - 00h wird als NOP-Steuerzeichen interpretiert ; - Bit7 wird immer geloescht (kein Kursor mehr) ; - wahlweise Unterstuetzung ADM3A-Steuerzeichenfolgen ;Tastatur: ; - Vereinfachung der Einbindung weiterer Tastaturen ; - Integration Spezialtastatur IH-Mittweida ; - Moeglichkeit der nutzereignen Stringdefinition ; durch Bildschirm-Steuerzeichenfolge oder im Stopzust. ; - ^Q-Prefix beim Betaetigen Kursor-Taste mit vorherigem ; ET2 (bei nicht K76x4) bzw. gleichzeitigem Control ; - Aenderung der Standardbelegung fuer Tasten PF6 und PF7: ; PF6: ^OD (zuvor ^Q); PF7: ^OG (zuvor ^P, wenig benutzt) ; Unterstuetzung der Tasten PF10, PF11, PF12 ; PF10: ^KS^QP, PF11: ^KB, PF12: ^KK ;Drucker: ;Stopfunktion: ; - Gepufferte Tastaturz. werden wie bei Mon.aufr. gestr. ; - Moeglichkeit der Definition von Nutzerstring-Tasten