|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Software2. Teil der FA BeitragsserieAbschriften aus FUNKAMATEUR:
Komfortabler Personalcomputer für den erfahrenen Amateur
Dipl.-Ing. A. MUGLER - Y27NN, Dipl.-Ing. H. MATHES
5 Betriebssystem
5.1 Die Struktur
6 Zusammenfassung5.2 Der Softwarekern 5.3 Das Kassettenmodul V-Tape 5.3.1 Die Magnetbandarbeit
5.4 Der Debugger5.3.2 Der Kommandoprozessor 5.5 Das RAM-Floppy-System 5.6 Laden und Speichern von Programmen Anhang C: Tabellen zur Software Literatur
5 Betriebssystem
Das Betriebssystem des PC/M-Computers habe ich in Form einzelner Blöcke erstellt. Diese Blöcke (Module) arbeiten weitgehend unabhängig voneinander. Sie lassen sich damit sowohl leicht austauschen als auch an andere Hardware anpassen. Die nachfolgenden Abschnitte enthalten die erforderlichen Informationen. Die Ein- und Austrittspunkte der Module sind in Listen (Sprungvektoren) auf den ersten Adressen des jeweiligen Moduls zusammengefasst. eine Erweiterung ist möglich, wenn man weitere Sprungvektoren anfügt. Die Reihenfolge der Sprünge und deren Bedeutung sollte aber unter allen Umständen erhalten bleiben, um die Kompatibilität zu anderen Computern des gleichen Typs zu erhalten. Die Bestandteile des PC/M Grundbetriebssystems sind:
Werden die Programmteile CCP (Control Command Processor) und BDOS (Basic Disc Operating System) nachgeladen, erhält man ein CP/M kompatibles Betriebssystem, für das es bereits eine Vielzahl von Programmen gibt.
5.2 Der SoftwarekernKern des gesamten Betriebssystems ist eine Sammlung von Programmen, die die Hardware des Rechners unmittelbar steuern (physische Treiber). Diese Routinen tragen den Charakter von Standardschnittstellen, die dem CP/M bzw. SCP BIOS entsprechen [5]. Viele Programme von Heimcomputern oder anderen Systemen verwenden diese oder sehr ähnliche Schnittstellen, wodurch sich der Aufwand bei der Programmanpassung sehr stark reduzieren lässt. Voraussetzung ist natürlich eine ähnliche Hardware und der gleiche Mikroprozessortyp.
Das BIOS beginnt auf der Adresse 0xde00 des Computers. In lückenloser Folge stehen ab dieser Adresse Sprünge, die zu den einzelnen Programmteilen des BIOS verzweigen. Das BIOS ist in zwei Versionen vorgestellt; je nach Ausbaustufe des RAM Bereiches. Wird nur eine RAM Bank verwendet (64 KByte), so sind verschiedene Routinen im BIOS nicht verwendbar und das System ist nicht mehr als CP/M kompatibler Rechner einsetzbar. Trotzdem ist eine Fülle von Programmen nutzbar. Ist der Rechner mit insgesamt 128 KByte RAM ausgerüstet, kann bereits mit einem RAM Floppy von 62 KByte gearbeitet werden. Dazu existiert ein BIOS, das zwei RAM Floppy zu je 62 KByte verwalten kann (Bild 5). Bei 192 KByte RAM ist dann ein BIOS mit einem RAM Floppy zu 124 KByte RAM einzusetzen, da viele Programme einen hohen Speicherbedarf haben und nicht auf mehrere Floppy (RAM Bereiche) verteilt werden dürfen (z.B. Wordstar). Das BIOS Listing ist in Bild 36a und Bild 36b dargestellt. Die BIOS Routinen sind im einzelnen:
BOOT (Kaltstart; 0xde00)
Der Start des Betriebssystems erfolgt nach RESET oder nach dem Einschalten. Nach Vorbereitung der Hardware für den Betrieb und verschiedenen Grundeinstellungen wird das Betriebssystem vom ROM in den RAM geladen und der ROM Bereich danach abgeschaltet. Dadurch ist der gesamte Arbeitsspeicher des Mikroprozessors als RAM verfügbar und beliebig beschreibbar, was wiederum die Anpassung fremder Software erleichtert. Nach Löschen des Bildschirms erfolgt eine Kaltstartausschrift mit Anzeige der Systemversion. Die Systemports (Kassettengerät und SIO Schnittstelle) werden initialisiert. Die Steuerwörter für die Initialisierung habe ich in einer Tabelle zusammengefasst. Sie sind erweiterbar bzw. ergänzbar (Adresse 0xe3b2 bis 0xe3f1 bei 124 KByte RAM Floppy). In dieser Tabelle ist zuerst der Port eingetragen, auf den das nachfolgende Steuerwort auszugeben ist. Schließlich erfolgt ein Sprung in das Kassettenmodul V-Tape, welches zusätzlich die Steuerung des Systems übernimmt.
WBOOT (Warmstart; 0xde03) Die Routine versucht, in das RAM Floppy Betriebssystem (Bestandteil des CP/V Systems) einzusteigen bzw. wieder dorthin zurückzukehren. Gleichzeitig lädt das Programm den Debugger und das V-Tape Modul vom ROM nach. Nun wird geprüft, ob CCP und BDOS bereits geladen sind. Ist das der Fall, erscheint die Angabe des aktuellen Laufwerks, und die Arbeit im CP/M kompatiblen CP/V System kann beginnen. Verschiedene CP/M Programme zerstören während ihrer Arbeit den CCP. Um ein häufiges Nachladen zu vermeiden, ist der CCP im ROM abgelegt. Das BDOS ist grundsätzlich von Kassette nachzuladen, es wird aber im Normalfall während der Programmarbeit nicht zerstört. Stellt das Programm einen Fehler im BDOS bzw. CCP fest, erscheint die Ausschrift "CCP/BDOS Laden!" (CCP-ROM ok). Dann muss man das entsprechende Modul von Kassette nachladen. Die ROM Belegung ist:
CSTS (Control STatuS, Tastaturstatus; 0xde06) Die Routine kehrt mit einer Information über den Tastaturstatus in das aufrufende Programm zurück. Wurde eine Taste gedrückt, enthält das Register A der ZVE den Wert 0xff, ist keine Taste gedrückt, enthält es 0x00.
CI (Consol Input, Tastaturabfrage; 0xde09) Diese Routine kehrt mit dem Code der gedrückten Taste ins Register A der ZVE zurück. Durch den Tastencode 0x1e wird der Tastenklick (kurz Signalton) ein- bzw. ausgeschaltet. Ist der Signalton ausgeschaltet, zeigt LED2 dies an. Der Code 0x13 wird für die Run/Stopp Funktion verwendet und durch LED1 angezeigt. Der Tastencode 0x1f ist zur Rückkehr aus dem RAM Floppy System in das CP/V Grundbetriebssystem nutzbar.
CO (Consol Output, Zeichenausgabe; 0xde0c) Ein im Register C der ZVE abgelegtes ASCII Zeichen wird auf der Konsole ausgegeben. Das Beschreiben des Bildschirms erfolgt Zeilenweise, links oben beginnend. Ist die Cursordarstellung zugelassen, erscheint die nächste zu beschreibende Bildschirmposition mit der inversen Zeichendarstellung (Bildpunkte hell statt dunkel und umgekehrt).
Einige Zeichen haben zur Ausführung bestimmter Funktionen auf der Konsole besondere Bedeutung: 0x01 HC (Home Cursor)
Positionierung des Kursors auf die linke obere Ecke des Bildschirms.
0x07 Bell (Bell) Ausgabe eines Signaltons.
0x08 BS (Backspace) Kursor ein Zeichen zurück.
0x09 TAB (Tabulator) Kursor auf nächte 8er-Tabulatorposition.
0x0a LF (Line Feed) Kursor eine Zeile nach unten.
0x0c CLS (Clear Screen) Bildschirm löschen und Kursor in die linke obere Bildschirmecke positionieren.
0x0d CR (Carriage Return) Kursor auf Zeilenanfang stellen.
0x14 CTEOS (Clear To End Of Screen) Bildschirm ab Kursorposition bis zum Ende des Bildschirmes löschen.
0x15 SKIP (Skip) Kursor ein Zeichen weiter.
0x16 CTEOL (Clear To End Of Line) Wie CTEOS, aber nur bis zum Ende der Zeile.
0x18 CLI (Clear Line) Zeile löschen und Kursor am Zeilenanfang positionieren.
0x1a LB (Line Break) Kursor eine Zeile nach oben.
0x1b ESC (Escape) Einleiten der direkten Kursorposition; nachfolgendes Zeichen gibt eine Zeilenposition an; das dritte Zeichen die Spaltenposition auf dem Bildschirm. Bit 7 bei Spalten- und Zeilenangabe sind jeweils gesetzt. Die Zählung beginnt mit 0x80 für die erste Spalte bzw. die erste Zeile. Beispiel: 0x1b 0x82 0x8a wird den Kursor auf die 11. Spalte (0x8a) der dritten Zeile (0x82) setzen.
0x82 CON (Cursor On) Der Kursor wird eingeschaltet (sichtbar).
0x83 COFF (Cursor Off) Der Kursor wird ausgeschaltet (unsichtbar).
LIST (Druckerausgabe; 0xde0f) Ein im Register C der ZVE abgelegtes Zeichen wird auf den Drucker ausgegeben. Die Datenausgabe erfolgt auf SIO Kanal A (TxDA) mit 9600 Baud bei 7 Bit Daten und gerader Parität (8. Bit). RxDA der SIO empfängt die Informationen vom Drucker mit gleichen Bedingungen. Über einen entsprechenden IFSS Verbinder (siehe Hardware) sind Drucker vom Typ SD1152 oder SD1157 mit IFSS Schnittstelle direkt anschließbar. Ein Umprogrammieren auf V.24 oder RS232C ist ebenfalls möglich. Drucker mit paralleler Schnittstelle können über die Anwender-PIO betrieben werden.
PUNCH (Stanzerausgabe; 0xde12) Zeichenausgabe an den Stanzer über Register C der ZVE (ist im CP/V System nicht vorgesehen, aber nachrüstbar).
READER (Lochbandleser; 0xde15) Ein Zeichen wird vom Lochbandleser geholt und im Register A der ZVE an das aufrufende Programm übergeben (ist im CP/V System nicht vorgesehen, aber nachrüstbar).
HOME (Spur 0 justieren; 0xde18) Die Spur 0 des ausgewählten Laufwerkes wird eingestellt.
SELDSK (Laufwerk auswählen; 0xde1b) Im Register C wird die Nummer des gewünschten Laufwerkes übergeben (0=A, 1=B, 2=C bis 15=P) und im Register HL die Adresse des zugehörigen Diskettenparameterkopfes zurückgegeben. Ist das Laufwerk nicht vorhanden, ist das 0x0000. Die Laufwerksauswahl erfolgt physisch erst bei READ oder WRITE.
SETTRK (Spur auswählen; 0xde1e) In BC wird die ausgewählte Spurnummer übergeben. Die Spurauswahl erfolgt physisch erst bei READ oder WRITE.
SETSEC (Sektor auswählen; 0xde21) In BC wird die gewünschte Sektornummer übergeben. Die Sektorauswahl erfolgt physisch erst bei READ oder WRITE.
SETDMA (DMA Puffer festlegen; 0xde24) In BC wird die Adresse eines 128 Byte langen Puffers übergeben, aus dem sich die Daten nach READ holen lassen bzw. in den sie vor WRITE einzutragen sind.
READ (Lesen eines Sektors; 0xde27) Der vorher eingestellte Sektor (SETSEC) wird von der vereinbarten Spur (SETTRK) des gewünschten Laufwerks (SELDSK) in den gewählten DMA Puffer (SETDMA) gelesen und im Register A der ZVE eine 0x00 für fehlerfreies Lesen übergeben (sonst 0x01 bei fehlerhafter Ausführung).
WRITE (Schreiben eines Sektors; 0xde2a) Ein wie bei READ ausgewählter Sektor wird durch den DMA Pufferinhalt beschrieben. Ist das nicht möglich, erfolgt im Register A der ZVE die Übergabe des Fehlercodes 0x01. Bei fehlerfreiem Schreiben übergibt das Programm 0x00. Zusätzlich erscheint die Ausschrift "BIOS RAM ERROR", die auf nicht vorhandenen bzw. defekten RAM hinweist.
LISTST (Druckerstatus; 0xde2d) Ist der Drucker bereit, ein Zeichen zu übernehmen, wird im Register A der ZVE der Wert 0x00 übergeben, anderenfalls 0xff.
SECTRAN (Umwandeln der Sektornummer; 0xde30) Im Registerpaar BC wird eine logische Sektornummer übergeben, die in eine physische Sektornummer umgewandelt und in HL zurückgeht. Die Umrechnungstabelle zeigt die Adresse im Register DE an. Das RAM Floppy System unterscheidet nicht zwischen logischer und physischer Sektornummer.
5.3 Das Kassettenmodul V-TapeMagnetbandspeicher besitzen eine nahezu unbegrenzte Speicherkapazität. Durch geringe Kosten und freie Verfügbarkeit der erforderlichen Geräte haben sich Kassettenmagnetbandgeräte (KMBG) in verschiedenen Einsatzgebieten von Mikrorechnern verbreitet. Für unterschiedliche Anwendungsfälle entstand so eine Vielzahl verschiedener Aufzeichnungsverfahren, die zum Teil stark differnzierte Merkmale aufweisen.
Das Kassettenmodul V-Tape übernimmt im PC/M-Computer zwei Funktionen. Zum ersten kontrolliert und steuert es die Arbeit im Grundbetriebssystem des Rechners, und zum zweiten hat es die Aufgabe, Daten und Programme sicher und schnell auf Magnetband zu speichern und wieder lesen zu können. Hard- und Software für diese Aufgaben sind auf der zentralen Platine installiert. 5.3.1 Die Magnetbandarbeit
Die Aufzeichnung von Daten auf einem Kassettengerät erfolgt durch Erzeugen eines seriellen Datenstroms bei möglichst geringem Hardwareaufwand. Dazu eignet sich besonders eine PIO, die ein Bit eines Kanals zur Ausgabe von Daten und ein weiteres Bit zur Eingabe von Daten verwendet. Durch serielles, kodiertes Ausgeben der Daten können diese aufgezeichnet werden. Der Lesevorgang erfolgt durch Abfrage der PIO und Dekodierung der gelesenen Informationen.
Der "Poly-Computer 880" arbeitet bei der Aufzeichnung nach der Kodierungsvorschrift Split-Phase-Space (Bild 21a). Die erforderliche Leistungsbandbreite zur Speicherung auf einem Kassettengerät ist bei einer Geschwindigkeit von 1200 Bit/s problemlos erreichbar. Die Struktur der Datei [18] weist alle für ein komfortables Verfahren erforderlichen Parameter auf. Die im "Poly-Computer 880" implementierte Software nutzt die Möglichkeiten dieser Struktur nicht aus (Umfang etwa 400 Byte). Nachteilig ist, dass sie die Dateinamen nicht automatisch erkennt und zum Starten des Lesevorganges verwendet.
Das für den Datenaustausch zwischen Heimcomputer häufig verwendete Verfahren "Super Tape" [19] arbeitet gleichfalls nach der Kodierungsvorschrift für Split-Phase-Space. Bemerkenswert ist, dass es ein zeitlich optimiertes Programm verwendet. Die erforderliche Zeit zwischen den Abfragen bzw. Ausgaben beim Lesen und Schreiben wird durch die Anzahl der verbrauchten Takte der auszuführenden Befehle in Abhängigkeit von der Taktfrequenz der ZVE des Rechners bestimmt. Das Verfahren erreicht damit Bitraten von 3600 Bit/s oder teilweise 7200 Bit/s. Allerdings war nicht mit jedem Bandgerät eine ausreichend niedrige Fehlerrate erreichbar. Ungenügend ist die implementierte Fehlererkennung. Es wird lediglich die Anzahl aller übertragenen logischen Einsen verglichen. Die Angabe des Dateinamens und -typs entspricht üblichen Standards. Automatische Synchronisation und Fehlererkennung sind gewährleistet. Das in [8] beschriebene Verfahren für den "AC1" arbeitet nach der Kodierungsvorschrift für Phase-Encoding (Richtungstaktschrift, Bild 21b). Das zeitlich nicht optimierte Programm verwendet eine Bitrate von 1500 Bit/s. Die Erkennung der Phasenlage erfolgt durch bitweises Abfragen der Synchronbytes der zu lesenden Datei (bei Verwendung verschiedener Geräte erforderlich). Blockstruktur, automatische Synchronisation und Namenserkennung sind nicht vorgesehen. Kritisch ist außerdem die Übertragung von Dateiparametern (Anfangsadresse, Startadresse, etc.) ohne Prüfung. Anforderungen an ein Aufzeichnungsverfahren für Kassettenbandgeräte:
Das nachfolgend beschriebene Programm stellt einen Kompromiss des Forderungskatalogs dar.
ProgrammbeschreibungDas Programm V-Tape arbeitet nach der Kodierungsvorschrift für Phase-Encoding [20] bei einer typischen Bitrate von 3600 Bit/s (Bitraten von 1200 Bit/s, 2400 Bit/s und 4800 Bit/s sind ebenfalls möglich). Diese Bitrate setzt ein zeitlich optimiertes Programm voraus. Die Verwendung von CTC Interrupts für das Timing des Programms ist nur eingeschränkt möglich, da es selbst bei ständiger Interruptfreigabe zu unterschiedlichen Zeiten zur Annahme der Interruptanforderung kommen kann. Für einen gerade auszuführenden OR A Befehl sind das, bei 2,6 MHz Taktfrequenz der ZVE, 1,6 µs, für den Befehl INC (IX+d) 9,2 µs. Bezogen auf eine Halbperiode der Bittaktfrequenz ergibt sich ein Zeitfehler (bei 3600 Bit/s) bis zu 5 %. Existiert eine NMI Quelle, so vergrößert sich dieser Fehler programmabhängig. Weiterhin muss der CTC Interrupt die höchste Priorität im System besitzen oder die einzige zugelassene Interruptquelle sein. Für V-Tape wurde der Weg der zeitlichen Optimierung des Programms gewählt. Dabei beträgt der Zeitfehler beim Schreiben und beim Lesen der Informationen weniger als 1 % der halben Periode der Bittaktfrequenz und wirkt sich praktisch nicht mehr auf die Datensicherheit bei der Übertragung aus. Die Anpassung des Programms an verschiedene Taktfrequenzen und die Geschwindigkeitsänderung erfolgt durch Einfügen von Warteschleifen in die Unterprogramme zur Ausgabe eines Bit bzw. Byte (Bild 19). Durch den Zeitverbrauch für Operationen zum Einlesen der Daten in den Speicher, zum Vergleichen, zur Prüfsummenbildung usw. ergibt sich eine erforderliche Mindesttaktfrequenz der ZVE von 1,3 MHz. Die erforderliche Leistungsbandbreite beträgt nach [17] für eine Bitrate von 3600 Bit/s 720 Hz bis 5040 Hz und ist damit von jedem Heimmagnetbandgerät übertragbar, richtige Kopfposition vorausgesetzt. Die Erkennung der Phasenlage der zu lesenden Daten erfolgt programmseitig bei selbsttätiger Inversion der gelesenen Datenbits.
Die DateistrukturDie Daten werden bei der Aufzeichnung in geblockter Form gesendet. Ein Rahmen besteht aus Kennzeichnungs- und Datenblock. Vor einem Datenblock steht ein vollständiger Kennzeichnungsblock, vor jedem Block stehen wiederum Synchronzeichen. Danach folgen unterschiedliche Kennbytes, die Kennzeichnungsblock und Datenblock eindeutig voneinander unterscheiden. So erreicht man, dass das Empfangsprogramm innerhalb einer Aufzeichnung synchronisiert und wichtige Parameter, wie der aktuelle Name, zu lesen sind. Das Auffinden einer Datei auf einer Kassette vereinfacht sich dadurch wesentlich. Weiterhin wird von einer dynamischen Rahmenlänge ausgegangen. Innerhalb eines Rahmens bleibt die Struktur dabei vollständig erhalten. Der Kennzeichnungsblock führt dazu eine Information über die Länge des nachfolgenden Datenblocks mit. Folglich sind beliebige Dateilängen auf ein Byte genau speicherbar und wieder lesbar.
Die RahmenstrukturDer Kennzeichnungsblock (Bild 20a) besteht aus Dateinamen und Dateityp. Wir haben die für das Betriebssystem CP/M übliche Struktur verwendet. Dabei besteht der Dateiname aus 8 ASCII Zeichen, gefolgt von einem Punkt (0x2e), und dem Dateityp, bestehend aus 3 ASCII Zeichen. Die weiteren Bytes besitzen nachfolgende Bedeutung:
Byte 12, 13 (Kennzeichnungsnummer)
Fortlaufende Nummerierung des Rahmens (0 bis 655535).
Byte 14 (Dateiendkennung) Zeigt das physische Ende der Aufzeichnung (Datei) mit 0xaa an, sonst immer 0x00.
Byte 15 (Datenbytes) Anzahl der Bytes im nachfolgenden Datenblock (1 bis 256).
Byte 16, 17 (Ladeadresse) Adresse, auf die der nachfolgende Datenblock geladen werden soll (0x0000 bis 0xffff).
Byte 18, 19 (Startadresse) Startadresse für unmittelbar lauffähige Programme.
Byte 20 (Prüfsumme) Byteprüfsumme des Kennzeichnungsblocks (Byte 1 bis 19).
Der Datenblock (Bild 20b) setzt sich aus der Anzahl der in Byte 15 des Kennzeichnungsblocks festgelegten Anzahl von Datenbytes und der nachfolgenden Byteprüfsumme zusammen. ZusammenfassungDurch Verwendung einer Byteprüfsumme ist eine für das Anwendungsgebiet ausreichende Datensicherheit erreichbar. Die testweise Prüfung von mehreren hundert Kilobyte mittels CRC Berechnung erbrachte keine zusätzlichen Fehlermeldungen. Eine Überprüfung der gespeicherten Datei ist durch den VERIFY Befehl möglich. Hauptfehlerursachen waren Fehlstellen in der Magnetschicht der verwendeten (ungeprüften) Kassetten. Zum Einpegeln, insbesondere für Kassettengeräte mit automatischer Pegelreglung, wird vor der Ausgabe einer Datei ein Kennton gesendet. Das beschriebene Programm stellt eine deutliche Komfortverbesserung zu den bisher verwendeten Verfahren dar. Datensicherheit und Übertragungsgeschwindigkeit sind für viele Anwendungen ausreichend. Auf einer C60 Kassette können mindestens 1 MByte Daten (bei 3600 Bit/s) aufgezeichnet werden. Mittels der nachladbaren Programme AC-TAPE und SUPERT sind auch Dateien und Programme im "AC1" Format und im "Super Tape" Format lad- und speicherbar.
5.3.2 Der KommandoprozessorDer logische Teil des Grundbetriebssystems gestattet das Lesen, Speichern und Vergleichen von Dateien und Programmen mit KMBG mit unterschiedlichen Geschwindigkeiten. Zusätzliche Möglichkeiten sind durch den Aufruf von Programmen, Umschalten der Speicherbereiche und spezielle RAM-Floppy-Operationen gegeben. Vom Kommandoprozessor aus kann das RAM-Floppy-System gestartet werden, aber auch mit anderen Programmen, Dateien und Betriebssystemen gearbeitet werden.
Das V-Tape-Modul befindet sich ab Adresse 0xf000 bis 0xf7ff im RAM des PC/M-Computers (Bild 39).0xf000 (Eintritt in das V-Tape-Modul)
0xf003 (Sprung zur CI Routine im BIOS) 0xf005 (Sprung zur CO Routine im BIOS) Das Grundbetriebssystem meldet sich immer mit der Ausschrift "V". Danach werden Eingaben erwartet, die immer mit ENTER (0x0d) abgeschlossen werden müssen. Der eingebaute Zeileninterpreter wandelt die Eingabezeile und übergibt eventuelle Parameter der Eingabe an die jeweiligen Unterprogramme. Buchstaben dürfen sowohl in Groß- als auch Kleinschreibung erscheinen. Zur Eingabe des Dateinamens und des Dateityps können die Symbole "*" (0x2a) und "?" (0x3f) dienen. Bei "*" werden alle Zeichen des Dateinamens oder -typs ab der Position des "*" überlesen, d.h., nicht zum Namensvergleich verwendet. Die Eingabe des "?" führt zum Überlesen des Zeichens mit der Position des "?". Der Kommandoprozessor kann die nachfolgenden Befehle ausführen (zuerst ist immer der Befehlscode mit kurzer Erläuterung angegeben, danach folgt die Form der Eingabezeile und schließlich die Erläuterung):
verwendete Abkürzungen und Symbole:
filename - Name einer Datei, bestehend aus 0 bis 8 ASCII-Zeichen
type - Typ einer Datei, bestehend aus 0 bis 3 ASCII-Zeichen aaaa, bbbb ... - Parameter 0x0000 ... 0xffff in hexadezimaler Schreibweise o - Option X - Angabe des gewünschten Laufwerks (A, B, ...) Befehle: 1 (Speicherbank 1)
V> 1Die Speicherbank 1 wird als Arbeitsspeicher verwendet. 2 (Speicherbank 2) V> 2Die Speicherbank 2 wird als Arbeitsspeicher verwendet. B (Betriebssystem) V> BDer System-ROM-Bereich wird eingeblendet (RAM 0x0000-0x1fff ist abgeschaltet). C (RAM-Floppy-System-Start) V> CEs wird versucht, das RAM-Floppy-System (mit CCP und BDOS) zu starten, der Fehlerfall bewirkt die Ausschrift "CCP/BDOS Laden!" oder "BDOS Laden!". Bei erfolgreichem Start erscheint die Ausschrift des Aktuellen Laufwerkes z.B. "A". Danach erfolgt die weitere Arbeit entsprechend den Bedingungen der CP/M-Version 2.2. D (Debugger) V> DDer Debugger wird auf Adresse 0xe800 angesprungen und gestartet. F (Formatieren) V> F XDer Bereich des Inhaltsverzeichnisses im Laufwerk X wird formatiert (löschen und neuinitialisieren). G (Go) V> G aaaaDurch diesen Befehl springt die CPU direkt auf die Adresse aaaa, um z.B. ein dort befindliches Programm zu starten. I (Inhaltsverzeichnis) V> IDie auf dem KMBG aufgezeichneten Dateien erscheinen entsprechend der Reihenfolge auf dem Magnetband auf dem Bildschirm. Abbruch mit Ctrl-C, auch bei Magnetbandende. L (Lesen) V> L filename.typ aaaa / bbbb ccccEs wird versucht, die Datei filename.typ von Kassette zu lesen. Bei Angabe von aaaa erfolgt das Einlesen auf die angegebene Adresse (0x0001..0xffff), sonst gelangt die Datei auf den Bereich, von dem sie gespeichert wurde. Bei Angabe von bbbb erfolgt das Lesen von Blocknummer bbbb und bei Angabe von cccc wird bei Blocknummer cccc abgebrochen (sonst alle Blöcke). Das Erkennen eines Fehlers im Kennzeichnungs- oder Datenblock (Prüfsumme) unterbricht den Lesevorgang. Durch Rückspulen des Magnetbandes und erneutes Einlesen lässt sich der Lesevorgang fortsetzen. Betätigen von Ctrl-C (0x03) bricht den Lesevorgang ab. R (Read) V> R filename.typ XDie RAM-Diskette X wird mit dem Inhalt der Datei filename.typ gefüllt (Abbruch mit Ctrl-C). S (Speichern) V> S filename.typ aaaa bbbb cccc /o ddddEine Datei filename.typ wird ab Adresse aaaa bis Adresse bbbb des Arbeitsspeichers auf Magnetband abgelegt. Bei Angabe von cccc dient dieser Wert als Startadresse für lauffähige Programme (Datei von Typ ".COM"). Nach dem Optionsstrich folgt bei Bedarf die Option F. Das verhindert das Eintragen der Dateiendekennung und die Datei kann unter Angabe der nächsten freien Rahmennummer (Parameter dddd) fortgesetzt werden. Damit kann man beim Laden eines Programms die komplette Datei bis zur Endekennung ohne erneuten L-Befehl lesen. Ohne Eingabe der Option F erfolgt die Speicherung unter Verwendung (ab) der als dddd angegebenen Rahmennummer. Die Option D führt zur Vergrößerung der Abstände zwischen zwei Blöcken beim Speichern. Der Speichervorgang lässt sich durch Betätigen der Tasten Ctrl-C (0x03) abbrechen. V (Vergleichen) V> V filename.typ aaaa / bbbb ccccDie Datei auf Magnetband wird mit dem Arbeitsspeicherinhalt verglichen, sonst wie L. W (Write) V> W filename.typ XDer gesamte Inhalt des RAM-Floppy-Laufwerkes X wird unter filename.typ auf Magnetband abgelegt (Abbruch mit Ctrl-C). X (Execute) V> X filename.typ aaaa / bbbb ccccEin Programm mit filename.typ wird eingelesen und auf der beim Speichern (S) vereinbarten Adresse gestartet (Abbruch mit Ctrl-C). Weiter wie bei L. Z (Zeitkonstanten) V> Z aaaaDie Bitrate aaaa kann betragen: 1200, 2400, 3600 und 4800 in Bit/s. Standard nach RESET: aaaa = 3600 Bit/s. filename (Laden und Starten einer ".COM"-Datei)
V> filenameDie Datei (Programm) filename mit dem Type .COM wird auf der Kassette gesucht, geladen und auf der beim Speichern (S) angegebenen Adresse gestartet. 5.4 Der DebuggerDer Debugger (Version 2.2) dient dem Eingeben, Ändern, Testen und zum Suchen von Fehlern in Maschinenprogrammen und Dateien, sowie der Unterstützung beim Bedienen peripherer Geräte (z.B. Drucker; Bild 40).
Die Struktur des Programms gestattet die Erweiterung des Befehlssatzes um spezielle Anwenderbefehle. Die Anpassung an beliebige U880-Systeme erfolgt durch Änderung der Sprungvektoren in einer Tabelle. Die anzuspringenden systemspezifischen Programmteile sind den üblichen Standards angepasst. Besonderheiten stellen Routinen zur Realisierung des Schrittbetriebes und zum Setzen eines Software-Breakpoints zur gezielten Programmunterbrechung dar.
Die Gesamtlänge des Programms beträgt 2 KByte, beginnend auf Adresse 0xe800 des PC/M-Computers. Die Sprungvektoren sind in Tabelle 6 zusammengefasst. BefehlseingabeNach dem Aufruf (Befehl D im Kommandoprozessor) meldet sich das Programm mit einem Symbol "R". Die jeweiligen Befehle werden in Form einer Eingabezeile editiert und nach Betätigen der ENTER-Taste (0x0d) an den Zeileninterpreter übergeben. Das Übersetzen erfolgt in zwei Stufen. Zuerst wird der eingegebene Befehl im Arbeitsbereich des Programms gesucht, danach geprüft, ob die Eingabezeile mit ":" abgeschlossen wurde. In diesem Fall werden die Parameter aaaa, bbbb und cccc nicht gelesen, sondern die Argumente der letzten Eingabe verwendet:
ohne ":"
R> A aaaa bbbb ccccDie Parameter (aaaa, bbbb, ...) werden gelesen. mit ":" R> A aaaa bbbb cccc :Es gelten die Parameter der letzten Eingabe; das Zeichen ":" muss durch ein Leerzeichen vom letzten Parameter getrennt sein. Anschließend werden der entsprechende Befehl aufgerufen und weitere angegebene Optionen bzw. Parameter interpretiert. Alle Zahlenangaben erfolgen hexadezimal. Es sind Groß- und Kleinschreibung zugelassen. Der Bildwiederholspeicher arbeitet als Eingabepuffer!
B (Breakpoint)
R> B aaaaDer Breakpoint dient der Unterbrechung eines Programms auf einer frei wählbaren Adresse aaaa innerhalb eines RAM-Bereiches. Ein mit den Befehlen E oder F gestartetes Programm wird an der Position des Breakpoints unterbrochen. Es erfolgt die Ausschrift der aktuellen PC-Adresse ("Program Counter"). Die Adresse des Breakpoints und der Inhalt der Speicherzellen ab der Breakpointadresse erscheinen als Ausschrift "BP:4400 C3 24 18 00". Die Programmunterbrechung entsteht durch einen RESTART Befehl (0xff) auf die Adresse 0x0038 des Computers, der an der Stelle der Breakpointadresse im RAM eingetragen wird. Nach Ausführung des RESTART Befehls erscheint dort wieder der ursprüngliche Wert. C (Compare; Vergleich) R> C aaaa bbbb ccccDurch diesen Befehl vergleicht das Programm zwei Speicherbereiche miteinander. Es ist aaaa die Anfangsadresse des ersten Speicherbereiches und bbbb die Anfangsadresse des zweiten Speicherbereiches, die über die Länge cccc miteinander verglichen werden. Nichtübereinstimmung führt zur Anzeige der Adresse des ersten Bereiches und des Inhalts dieser Speicherzelle sowie der Adresse des zweiten Speicherbereiches und des Inhaltes der Speicherzelle. Betätigen von ENTER setzt den Vergleich fort. Die Eingabe eines Punktes (0x2e) führt zum Abbruch des Befehls. R> C 1000 2000 10 D (Device; Gerät) Es lässt sich ein Drucker parallel zur Bildschirmausgabe aufrufen (s. Sprungvektoren für den Debugger).
R> D WDrucker zugewiesen. R> DNur Bildschirmausgabe zugelassen. E (Execute; Ausführung) R> E aaaaEin Programm wird ab Adresse aaaa unter Breakpointkontrolle gestartet. F (Programm fortsetzen) R> FDie Ausführung des Programms erfolgt unter Breakpointkontrolle ab der durch PC festgelegten Adresse. G (Go; direktes Anspringen einer Adresse) R> G aaaaEin Programm wird auf der Adresse aaaa angesprungen. Es erfolgt keine Breakpointkontrolle. Ist das Programm mit RET (0xc9) abgeschlossen, erfolgt die Rückkehr in den Debugger. I (Init; Debugger in Grundstellung bringen) R> IAlle Register werden auf 0x00 gesetzt, der Stackpointer SP auf 0x4300. Als Ausgabegerät ist nur die Konsole (Bildschirm) zugelassen. Das Schrittregister (SR) steht auf 1. R> I K (Register und Speicher anzeigen) R> KNach Eingabe von K werden alle Register der ZVE angezeigt. Mit "MAIN" ist der Arbeitsregistersatz gekennzeichnet. "EXXR" zeigt auf die Schattenregister. Die Flags werden durch Ausgabe der jeweiligen Buchstaben bei gesetzten Flags angezeigt (Flags des Schattenregisters in Klammern). Flagzeile bei allen gesetzten Flags: "SZHPNC (SZHPNC)" Der Angabe des SP folgt die aktuelle Adresse des Stackpointers und die nächsten vier Byte. Das geschieht gleichermaßen für BP, das Breakpointregister. Außerdem kommt das Schrittregister zur Anzeige (SR). Zusätzlich erfolgt die Anzeige der 0x80 Byte, in denen sich der PC befindet. Die aktuelle PC Position ist durch ein "->>" Symbol markiert. R> Iführt zu MAIN AF: 00 00 BC: 00 00 DE: 00 00 HL: 00 00 (HL):C3 J (Jump; Sprung) R> J aaaaEin Anwenderprogramm wird auf der Adresse aaaa angesprungen. Es erfolgt keine Breakpointaktivierung und es kann nicht mit einem RET (0xc9) zurückgekehrt werden. M (Modify Memory; Speicherinhalt ändern) R> M aaaaAb Adresse aaaa kann der Speicher beschrieben werden. Dazu erfolgt, nach Betätigen von ENTER, die Anzeige der aktuellen Eingabeposition und des dort befindlichen Datenbytes. Nachfolgend sind die Daten einzugeben. Die zulässige Länge einer Eingabezeile (eine Bildschirmseite) darf man dabei nicht überschreiten. Die Eingabe eines Punktes (0x2e) führt zum Verlassen der Routine. R> M 8000 O (Lower Block; PC um 0x80 verringern) R> OEs werden das Bild analog K ausgegeben und der PC um 0x80 erniedrigt. P (Pattern; Muster) R> P aaaa bbbb ccDer Bereich von aaaa bis bbbb wird mit dem Muster cc (Byte) aufgefüllt (ohne Angabe von cc mit 0x00). Q (Quit; Rücksprung zum CP/V-Grundsystem) R> QEs erfolgt der Rücksprung in das Betriebssystem. R (Register) R> R NN aaaaDas angegebene Registerpaar (Register) NN wird auf den Wert aaaa (aa) eingestellt. Die Eingabe von R : hat die Anzeige des kompletten Registersatzes zur Folge. Danach erfolgt immer die Ausgabe des Bildes nach K. Ein ' (0x27) nach Angabe des Registers bewirkt die Auswahl der "EXXR" Register (Schattenregister). Für NN kann stehen: AF, BC, DE, HL, AF', BC', DE', HL', M, M', I, SP, PC, IX, IY, SR. R> R AF' 01E6Das Registerpaar AF' wird auf 0x01 für A' und 0xe6 für F' eingestellt. R> R M C3Der Inhalt der Speicherzelle, auf die HL zeigt, wird auf 0xc3 gesetzt. R> R :Der komplette Registersatz gelangt zur Anzeige. S (Speicher schreiben) R> S nnSchreiben der Daten nn (1 Byte) auf die durch den PC angezeigten Speicherzelle. T (Transfer) R> T aaaa bbb ccccVerschiebung eines Speicherbereiches von Adresse aaaa auf die Adresse bbbb mit einer Länge von cccc. U (Upper Block; PC um 0x80 erhöhen) R> UDas Bild analog K gelangt zur Ausgabe, wobei der PC um 0x80 erhöht wird. X (Speicherbereich anzeigen) R> X aaaa bbbb NAusgabe des Bereiches von aaaa bis bbbb an die über D zugewiesenen Geräte. Für N ist zugelassen: H (Hex-Dump) Ausgabe des hexadezimalen Speicherinhaltes unter Angabe der Adresse (nach 0x10 Byte).
S (ASCII) Der Speicherbereich kommt als ASCII Zeichen zur Ausgabe; Steuerzeichen (0x00..0x1f, 0x7f) werden unterdrückt und als Punkt (0x2e) ausgegeben, Rücksetzen des Bit 7.
T (ASCIITXT) Wie S, aber mit Ausgabe der ASCII Steuerzeichen.
M (Manual) Konsole und zugewiesenes Gerät sind parallel geschaltet, direkte Ausgabe, Bit 7 wie S.
aaaa bbbb cccc (Vorbereitung für FA und FH) R> aaaa bbbb ccccDie Argumente aaaa, bbbb und cccc werden in Zwischenspeicherzellen eingetragen, um sie später für FA und FH benutzen zu können. FA (Find ASCII String; ASCII Zeichenkette suchen) R> FA abc...xyz...Es lässt sich ein beliebiger ASCII-String (Zeichenkette mit alphanumerischen Zeichen) eingeben und im zuvor festgelegten Speicherbereich suchen. Die als Argument angegebene Zeichenkette darf kein SPACE (0x20) enthalten. Sollte die Zeichenkette nicht zu finden sein, erfolgt die Ausschrift "NOT FOUND", ist sie vorhanden, wird die Position angezeigt und in den "Modify (M)"-Mode übergegangen. Ist die Zeichenkette durch einen Doppelpunkt (":") abgeschlossen, beginnt die Suche ab der zuvor eingetragenen Adresse. R> FA TestDie Zeichenkette "Test" soll gesucht werden, ist aber nicht vorhanden. Ab Adresse 0x1000 soll nach der Zeichenkette "HELP" gesucht werden. Diese wird auf Adresse 0x872e gefunden; erstes Zeichen "H" = 0x48. FH (Find Hexadezimal String; Hexwert suchen) R> FH aa bb cc dd ee ...Der Befehl arbeitet analog zu FA, jedoch lassen sich hexadezimale Zahlen eingeben und suchen. R> FH 00 09 53 0D & (Checksum; Prüfsumme bilden) R> & aaaa bbbbBerechnung und Ausgabe der Prüfsumme (Kontrollsumme) des Speicherbereiches von aaaa bis bbbb. R> & 0000 03FF DirektfunktionenNachfolgende Funktionen werden direkt ausgeführt, nachdem man die entsprechende Taste betätigt hat. Ausnahme ist der X und M Mode. Dabei werden die Direktfunktionen, außer BREAK (0x03), gesperrt.
BREAK (0x03, Ctrl-C)
Die Ausgaben bei "X..." werden unterbrochen, der Schrittbetrieb bricht ab.
STEP (0x19, Ctrl-Y) Dieser Befehl realisiert den Schrittbetrieb des Computers. Dadurch ist ein einfaches Testen der Wirkung einzelner Befehle und Befehlsgruppen möglich. Dazu wird über das NMI Port der zentralen Platine nach Ausführung des nächsten Befehls im Anwenderprogramm ein NMI ausgelöst. Die Rückkehr in den Debugger erfolgt über einen Sprungvektor. Danach gelangen alle Register und der Speicher (analog zu K) zur Anzeige, um Änderungen feststellen zu können. Das Schrittregister legt die Anzahl der auszuführenden Anwenderbefehle fest.
IPC (0x1a, Ctrl-Z) Der Befehlszähler erhöht sich um 1 (Inkrement) und das Bild analog zu K erscheint.
DPC (0x0a, Ctrl-J) Der Befehlszähler erniedrigt sich um 1 (Dekrement) und das Bild analog zu K erscheint.
Fehlermeldungen"INIT SP!"
Der Stackpointer befindet sich nicht im RAM. Prüfung bei J, E und F.
"INP-ERROR" Der eingegebene Befehl existiert nicht oder hat eine falsche Syntax.
"FC-ERROR" Die angegebene Funktion hat unzulässige Parameter.
"NOT FOUND" Der Ausdruck existiert nicht bzw. wurde nicht gefunden.
"RAM-ERROR" Die Speicherzelle läßt sich nicht beschreiben bzw. ordnungsgemäß lesen.
5.5 Das RAM-Floppy-SystemEin wesentlicher Bestandteil des Betriebssystems CP/V im PC/M-Computer ist das RAM-Floppy-Betriebssystem. Dieses Betriebssystem ermöglicht die Nutzung aller Programme, die die üblichen CP/M-Schnittstellen einhalten (Stand CP/M Version 2.2 [5]). Einschränkungen sind lediglich durch den Bildschirm (manche Programme arbeiten nur sinnvoll mit einem 2 KByte Bildschirm; 80 Zeichen/Zeile und 24 Zeilen) und die verfügbare Diskettenkapazität gegeben, denn große Programmpakete können ohne weiteres einen Umfang von bis zu 500 KByte annehmen, sind aber speziell für den kommerziellen Bereich gedacht. 124 KByte RAM als "Floppy-Speicher" sind eine gute Basis für zahlreiche Programme und Dateien.
Die Beschreibung des kompletten Systems ist sehr umfangreich. Wer das System voll ausnutzen will, sei auf die Fachliteratur bzw. auf die Programmbeschreibungen eines kompatiblen Betriebssystemes verwiesen (z.B. SCP). Bild 5 zeigt den Speicheraufbau des PC/M-Computers. Je nach Bestückung ist der CCP auf ROM abgelegt, oder er ist für den Start des Systems zusammen mit dem BDOS nachzuladen (Bild 38a, Bild 38b und Bild 38c). Im TPA (Terminal Program Area) werden Programme und Dateien abgelegt. Der CCP lädt die Programme grundsätzlich auf die Adresse 0x0100 des Computers und startet sie auch dort. Die Größe des TPA ergibt sich aus der Anfangsadresse des BDOS, die auf Adresse 0x0006 und 0x0007 im RAM abgelegt ist. Der CCP wird also unter Umständen während der Arbeit in einem Programm überschrieben und ist dann erneut nachzuladen. Ist der EPROM mit dem CCP gesteckt, übernimmt diese Aufgabe das BIOS; anderenfalls ist ein Nachladen von Kassette erforderlich. Der CCP hat die Aufgabe, die Kontrolle über das Betriebssystem zu übernehmen, verschiedene Kommandos zuzulassen und Programme von Diskette (RAM-Floppy) zu laden und zu starten, die dann die Kontrolle über den PC/M-Computer übernehmen.
Der CCP und viele Programme erwarten eine typische Datei- bzw. Programmbezeichnung. Diese sieht wie folgt aus: [d:]filename[.typ], wobei filename aus 0..8 und typ aus 0..3 ASCII-Zeichen bestehen. Die Angaben in eckigen Klammern sind nicht immer erforderlich: d: weist auf das Floppy-Laufwerk hin, auf dem mit der Datei filename gearbeitet werden soll. Der typ ist nicht erforderlich, sollte aber zur Kennzeichnung der Dateien verwendet werden. Typische Bezeichnungen sind: COM
Programme, die sofort lauffähig sind und auf Adresse 0x0100 gestartet werden können.
BAS Basic-Datei
DBF Datenbank-Datei
FOR FORTRAN-Quellprogramm
PAS PASCAL-Quellprogramm
C C-Quellprogramm
MAC Makroassembler-Datei
DOC Programmbeschreibung, Dokumentation
REL Verschiebbare Datei (Programm)
Weiter können die Zeichen "*" und "?" analog zum Kassettenmodul verwendet werden. Die Zeichen "<>.,:;[]" sind nicht zulässig. Die Funktionen (residente Kommandos) des CCP sind:
d: (Laufwerk umschalten)
Es wird das Laufwerk "d" (A, B, C, ...) aktiviert, d.h. alle weiteren Kommandos beziehen sich vorrangig auf dieses neu eingestellte Laufwerk.
DIR (Inhaltsverzeichnis) Das Inhaltsverzeichnis (die vorhandenen Dateien) auf dem aktuellen Laufwerk wird angezeigt. Der Vorsatz d: ermöglicht die Anwendung des Kommandos auf ein anderes Laufwerk, bei gleichzeitiger Laufwerksumschaltung. Bei Angaben von d: nach dem Kommando wird das Kommando lediglich auf dem bezeichneten Laufwerk ausgeführt, ohne dass eine Umschaltung erfolgt.
ERA filename.typ (Datei löschen) Die Datei filename.typ wird im Inhaltsverzeichnis der Diskette gelöscht. Die Zeichen "?" und "*" sind zulässig.
REN FILENAME.TYP=filename.typ (Datei umbenennen) Die Datei filename.typ bekommt die neue Bezeichnung FILENAME.TYP. Es sind keine "?" und "*" zulässig.
TYPE filename.typ (Anzeigen einer Datei) Der Inhalt der Datei filename.typ erscheint auf dem Display (nur sinnvoll bei Dateien aus ASCII Zeichen).
SAVE n d:filename.typ (Speichern einer Datei) Der TPA Inhalt wird ab Adresse 0x0100 unter der Bezeichnung filename.typ auf dem Laufwerk d: gespeichert. Dabei ist n die Anzahl der 256 Byte Blöcke. Ist n = 4, so werden 1024 Byte Daten, also 1 KByte) abgespeichert.
USER n (Nutzerbereich zuweisen) Es lässt sich ein Nutzerbereich (von n = 0..15) einstellen, um die Diskette für verschiedene Nutzer aufzuteilen (für RAM-Floppy nicht sinnvoll).
Der CCP gibt noch einige Fehlermeldungen bei Fehlbedienung aus, die leicht verständlich sind und nicht weiter erklärt werden.
Das BDOS organisiert wesentliche Teile des Betriebssystems (insbesondere die Arbeit mit dem Floppy-Laufwerk). Über das BDOS benutzen die meisten Programme das Betriebssystem eines CP/M-kompatiblen Computers. Die Schnittstelle dafür ist die Adresse 0x0005 des Computers, auf der ein Sprung zum BDOS eingetragen ist. Wird diese Adresse aufgerufen und im Register C eine Kommandonummer übergeben, führt das BDOS die entsprechenden Funktionen aus und kehrt in das aufrufende Programm zurück. Das BDOS selbst greift aber niemals selbst auf die Hardware des Computers zu, sondern organisiert die erforderliche Arbeit immer über das BIOS. Damit wird es möglich, in Rechnersystemen mit unterschiedlicher Hardware (lediglich unterschiedliches BIOS), die gleichen Programme zu verwenden (gleicher Prozessorkern vorausgesetzt). Dies ist wohl der wesentliche Grund für die Verbreitung des Systems und für die überraschend große Anzahl verfügbarer Programme (einige Tausend). Die einzelnen BDOS-Funktionen haben unterschiedliche Aufruf- und Rückkehrparameter, die im Detail entsprechender Literatur zu entnehmen sind. Die BDOS-Funktionen lt. Tabelle 7 sind möglich. BDOS ist in der Lage, verschiedene Fehlermeldungen zu erzeugen, die aber vorrangig bei der Arbeit mit Floppy-Laufwerken von Bedeutung sind. Beabsichtigt man eigene CP/M-kompatible Programme zu erstellen, sind detaillierte Handbücher erforderlich, die den Rahmen dieses Beitrages übersteigen würden. Besondere Bedeutung für den Nutzer haben die verschiedenen Ebenen der Arbeit mit dem PC/M-Computer. Bild 35 stellt verschiedene Ebenen, deren Aufruf und die mögliche Rückkehr dar. 5.6 Laden und Speichern von ProgrammenNach dem Einschalten sind der Arbeitsspeicher sowie der Inhalt der RAM-Floppy unbestimmt, d.h. durch ein zufälliges Muster belegt. Lediglich die EPROM-Bestandteile (BIOS, CP/V-Grundsystem, Debugger und CCP) sind sofort verfügbar. Nachdem sich das CP/V-System gemeldet hat, können die verschiedenen Kommandos genutzt werden. Damit ist das Laden der Systemprogramme möglich (Bild 35). Will man den Debugger verwenden, so ist er durch das Kommando D vom CP/V-System aus erreichbar. Die Arbeit mit der RAM-Floppy erfordert entweder das Laden eines Disketteninhaltes vom Kassettenmagnetbandgerät (R) oder man formatiert die RAM-Diskette neu (F), um sie dann mittels des -Kommandos des CCP zu beschreiben.
Ist eine RAM-Diskette geladen oder formatiert worden, muss das BDOS geladen werden, um das komplette RAM-Floppy-System zur Verfügung zu haben. Der Aufruf des RAM-Floppy-Systems erfolgt mit dem Kommando des CP/V-Systems, die Rückkehr in das CP/V-System mit dem Tastencode 0x1f. Die Rückkehr ist immer dann erforderlich, wenn der veränderte RAM-Floppy-Inhalt abgespeichert werden soll (Kommando W). Das Speichern der RAM-Floppy-Inhalte sollte auf geprüften Kassetten und eventuell mehrmals hintereinander erfolgen, um Fehlstellen im Bandmaterial kompensieren zu können. Auf einer Kassette C60 lassen sich etwa zehn RAM-Disketten abspeichern. Mit V-Tape bei 3600 Bit/s benötigt man für eine RAM-Diskette mit 124 KByte etwa 5 min. Soll nicht immer der komplette RAM-Floppy-Inhalt gespeichert werden, ist das V-Tape-Kopierprogramm VTCOP einsetzbar, mit dem man einzelne Dateien und Programme der Diskette abspeichern und auch wieder einlesen kann. Dadurch lässt sich Zeit für das Kopieren bestehender Programme wesentlich verringern. Befindet sich ein Programm bereits im Arbeitsspeicher, kann es durch das SAVE-Kommando des CCP im RAM-Floppy-Bereich abgelegt werden. Für spezielle Operationen innerhalb des RAM-Floppy-Systems steht der Debugger VDB zur Verfügung, der einen dem Systemdebugger ähnlichen Befehlssatz besitzt. Die Vielzahl der möglichen Programme, einschließlich deren Beschreibung, ist nicht im Rahmen dieses Beitrages darstellbar. Häufig genutzte Programme (BASIC, PASCAL, Textverarbeitung, div. Assembler und Linker und die üblichen Dienst- und Hilfsprogramme) stehen auf Kassette zur Verfügung. 6 ZusammenfassungDer vorgestellte PC/M-Computer gestattet die Arbeit mit einem heute bei 8 Bit Mikrorechnern weit verbreiteten Betriebssystem. Die nutzbare Software übersteigt die Möglichkeiten des Anwenders zum Test der einzelnen Programme bei weitem. Eigene Programme, die die beschriebenen BDOS-Schnittstellen einhalten, sind auch auf Rechnern mit völlig anderer Hardware lauffähig (z.B. BC A5120, A5130, PC1715, C128 u.a.). Durch Verwendung eines Kassettenmagnetbandgerätes als Datenspeicher ist die Nutzung im Heimbereich problemlos möglich. Die Dokumentation von Hard- und Software soll einen breiten Kreis von Interessenten die Möglichkeit eines solchen Systems erschließen. Nicht zuletzt sind periphere Baugruppen anschließbar, die den PC/M-Computer erweitern können. Übliche Baugruppen sind Farbgrafik, Floppy-Disk-Steuerung, EPROM-Programmiereinheit, AD/DA-Wandler usw. Dafür wurde der Systembus einschließlich spezieller Nutzerschnittstellen nach außen geführt.
Schließlich steht eine Vielzahl von Software für die Ausbaustufe mit nur 64 KByte RAM zur Verfügung. Dazu gehören bei 64 KByte RAM ein Tiny-BASIC (2 KByte), ein erweitertes BASIC (15 KByte) einschließlich verschiedener BASIC-Programme, ein PASCAL-Compiler (20 KByte), verschiedene Texteditoren, Assembler und Reassembler für Z80 / U880 sowie Z8 / U8080, Schach, Morseübungsprogramme, Sprachein- und ausgabe, Speichertest, Debugger und verschiedene Module für AC1-, Super Tape- und Kleinkomputeraufzeichnungen (KC 85/1, KC 85/2, KC 85/3). Die Nutzung des PC/M-Computers, einschließlich der Systemsoftware, unterliegt im Falle der privaten Anwendung keinerlei Einschränkungen. Kommerzielle Interessenten wenden sich bitte direkt an die Autoren. Der PC/M-Computer (PC/M - Personal Computer Mugler) ist aufgrund seiner modularen Struktur ein erweiterbares System. Je nach Wunsch des Anwenders sind dazu unterschiedliche Hardwaremodule nachrüstbar. Um die Anzahl systemspezifischer Module zu begrenzen, wurde ein K1520 Buskoppler entwickelt, der den Anschluss von K1520 Baugruppen über den dort definierten Systembus ermöglicht. Darüber hinaus werden durch uns und durch Anwender des PC/M-Computers unterschiedliche Leiterplatten zur AD/DA-Wandlung, zur Tonausgabe, zur RAM-Erweiterung bis zu 512 KByte (Zusatz-RAM-Floppy), zur EPROM-Erweiterung (als EPROM-Floppy), als EPROM-Emulator und Programmierzusatz sowie eine Floppy-Disk-Steuerung entwickelt. Zusätzlich existieren Varianten der Tastatursteuerung, die zu gegebenem Zeitpunkt veröffentlicht werden. Als Grafikzusatz empfehlen wir den Einsatz einer der bereits zahlreich veröffentlichten Versionen (radio fernsehen elektronik, Mikroprozessortechnik u.a.) für K1520 Systeme. Das Betriebssystem wurde weiterentwickelt und steht momentan (08/88) in der Version 2.02 bei voller Kompatibilität zum veröffentlichten System zur Verfügung. Anhang C: Tabellen zur Software
hochauflösende AbbildungenScans vom Original in niedriger QualitätPCM_BA_FA061988_LQ.pdf
Teil 6: FA-6/1988 S.283-284,289-290 PC/M Bauanleitung Teil 6: FA-6/1988 S.283-284,289-290 PCM_BA_FA071988_LQ.pdf
Teil 7: FA-7/1988 S.335-336,341-342 PC/M Bauanleitung Teil 7: FA-7/1988 S.335-336,341-342 PCM_BA_FA081988_LQ.pdf
Teil 8: FA-8/1988 S.387-388,393-394 PC/M Bauanleitung Teil 8: FA-8/1988 S.387-388,393-394 PCM_BA_FA091988_LQ.pdf
Teil 9: FA-9/1988 S.439-440,445-446 PC/M Bauanleitung Teil 9: FA-9/1988 S.439-440,445-446 PCM_BA_FA101988_LQ.pdf
Teil 10: FA-10/1988 S.439-440,445-446 PC/M Bauanleitung Teil 10: FA-10/1988 S.491-492,497-498 PCM_BA_FA111988_LQ.pdf
Teil 11: FA-11/1988 S.535-538 PC/M Bauanleitung Teil 11: FA-11/1988 S.535-538 Scans vom Original in hoher QualitätPCM_BA_FA061988_1_HQ.pdf
Teil 6.1: FA-6/1988 S.283-284 PC/M Bauanleitung Teil 6: FA-6/1988 S.283-284 PCM_BA_FA061988_2_HQ.pdf
Teil 6.2: FA-6/1988 S.289-290 PC/M Bauanleitung Teil 6: FA-6/1988 S.289-290 PCM_BA_FA071988_1_HQ.pdf
Teil 7.1: FA-7/1988 S.335-336 PC/M Bauanleitung Teil 7: FA-7/1988 S.335-336 PCM_BA_FA071988_2_HQ.pdf
Teil 7.2: FA-7/1988 S.341-342 PC/M Bauanleitung Teil 7: FA-7/1988 S.341-342 PCM_BA_FA081988_1_HQ.pdf
Teil 8.1: FA-8/1988 S.387-388 PC/M Bauanleitung Teil 8: FA-8/1988 S.387-388 PCM_BA_FA081988_2_HQ.pdf
Teil 8.2: FA-8/1988 S.393-394 PC/M Bauanleitung Teil 8: FA-8/1988 S.393-394 PCM_BA_FA091988_1_HQ.pdf
Teil 9.1: FA-9/1988 S.439-440 PC/M Bauanleitung Teil 9: FA-9/1988 S.439-440 PCM_BA_FA091988_2_HQ.pdf
Teil 9.2: FA-9/1988 S.445-446 PC/M Bauanleitung Teil 9: FA-9/1988 S.445-446 PCM_BA_FA101988_1_HQ.pdf
Teil 10.1: FA-10/1988 S.439-440 PC/M Bauanleitung Teil 10: FA-10/1988 S.491-492 PCM_BA_FA101988_2_HQ.pdf
Teil 10.2: FA-10/1988 S.445-446 PC/M Bauanleitung Teil 10: FA-10/1988 S.497-498 PCM_BA_FA111988_1_HQ.pdf
Teil 11.1: FA-11/1988 S.535 PC/M Bauanleitung Teil 11: FA-11/1988 S.535-536
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Copyright © 2000-2021 by Li-Pro.Net · info (at) li-pro (dot) net · Tel.: +49 (0) 3641 / 21 23 02 · cms: phpwcms | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||