TRSDOS (Tandy Radio Shack Disk Operating System) ist das Betriebssystem der Tandy TRS-80- Reihe von 8-Bit- Zilog-Z80- Mikrocomputern, die von 1977 bis 1991 über Radio Shack vertrieben wurden . In den Handbüchern von Tandy wurde die Aussprache „Triss-Doss“ empfohlen . TRSDOS ist nicht mit Tandy DOS zu verwechseln, einer von Microsoft für Tandys x86 -PCs lizenzierten Version von MS -DOS .
Beim ursprünglichen TRS-80 Modell I von 1977 diente TRSDOS primär der Erweiterung des MBASIC ( BASIC in ROM ) um zusätzliche Ein- / Ausgabebefehle, die mit Festplattendateien anstatt mit den von den Modell-I-Systemen ohne Festplattenlaufwerk verwendeten Kassetten arbeiteten. Spätere, mit Festplatten ausgestattete Modell-III- Computer nutzten eine völlig andere Version von TRSDOS von Radio Shack, die 1981 in TRSDOS Version 1.3 gipfelte. Ab 1983 verwendeten die mit Festplatten ausgestatteten TRS-80 Modell-4- Computer TRSDOS Version 6, eine Weiterentwicklung von LDOS des Modells III durch Logical Systems, Inc. Diese wurde 1987 aktualisiert und als LS-DOS 6.3 veröffentlicht.
Völlig unabhängig davon gab es eine Version von TRSDOS von Radio Shack für die professionellen Computer TRS-80 Model II und TRS-80 Model 12 aus dem Jahr 1979, die ebenfalls auf dem Z80 basierten und mit 8-Zoll-Diskettenlaufwerken ausgestattet waren. Die späteren Modelle dieser Reihe, die Modelle 16 und 16B sowie der Tandy 6000, nutzten den Z80 als I/O-Prozessor für ihren Hauptchip Motorola 68000 , wenn Betriebssysteme auf dem 68000 liefen. Sie konnten die Model-II-Version von TRSDOS ausführen, um Abwärtskompatibilität mit älterer Z80-Anwendungssoftware zu gewährleisten. Beim Betrieb der älteren Z80-Betriebssysteme wurde der 68000 nicht verwendet.
Geschichte
Der TRS-80- Mikrocomputer der Tandy Corporation besaß bei seiner Markteinführung weder ein Diskettenlaufwerk noch ein Diskettenbetriebssystem. Die erste Version von TRSDOS, entwickelt von Randy Cook, war so fehlerhaft, dass andere Entwickler Alternativen wie NewDOS und LDOS schrieben. Nach Streitigkeiten mit Cook über die Eigentumsrechte am Quellcode beauftragte Tandy Logical Systems, den Entwickler von LDOS, mit der Weiterentwicklung von TRSDOS. [ 2 ] TRSDOS 6, das 1983 mit dem TRS-80 Modell 4 ausgeliefert wurde, ist identisch mit LDOS 6.00. [ 3 ]
Termine
- Oktober 1979 – Radio Shack veröffentlicht TRSDOS 2.3
- 1. Mai 1981 – Radio Shack bringt das Modell III TRSDOS 1.3 auf den Markt.
- 26. April 1983 – Radio Shack stellt TRSDOS Version 6.0 mit dem neuen Modell 4s vor.
- 1984 – Radio Shack veröffentlicht Version 6.2, die endgültige Version für das Modell 4 [ 4 ]
- 1984 – Logical Systems veröffentlicht The Source , den kommentierten Assembler-Quellcode zu TRSDOS 6.2 [ 1 ].
- Ende 1986 – Logical Systems veröffentlicht LS-DOS 6.3, das funktional gleichwertige Update zu TRSDOS 6.2. Ab diesem Zeitpunkt liefert Tandy/Radio Shack es mit dem Modell 4D aus.
Merkmale und Fähigkeiten
Die Z80-basierten TRS-80-Computer von Radio Shack ( Modelle I/III und Modell 4 ) unterstützen bis zu vier physische Diskettenlaufwerke (Mini-Diskettenlaufwerke), die standardmäßig 5¼-Zoll-Disketten verwenden . Das ursprüngliche TRSDOS für das Modell I unterstützte nur einseitige Disketten mit 35 Spuren im Single-Density-Format ( Sektoren werden mittels Frequenzmodulation kodiert ). Das TRSDOS für Modell III (zuletzt Version 1.3) unterstützte 40-Spur-Disketten im Double-Density-Format (mittels modifizierter Frequenzmodulation ). Modelle I wurden nachträglich mit Double-Density-Controllern ausgestattet, und die Modelle I/III mit 80-Spur-Laufwerken oder doppelseitigen Laufwerken konnten TRSDOS nicht nutzen. Radio Shack vertrieb stattdessen das Betriebssystem LDOS von Logical Systems, das diese Laufwerkstypen steuern konnte. Das TRSDOS 6 des Modells 4 ist eine Weiterentwicklung von LDOS und bietet die gleichen Funktionen.
Festplatten (damals auch als Winchester-Laufwerke bekannt ) benötigten spezielle Treibersoftware der Hersteller. Diese Treiber ermöglichten es jeder TRSDOS-Installation, auf die Festplatte zuzugreifen und bis zu acht Partitionen zu erstellen, die jeweils den Laufwerksnummern null bis sieben zugewiesen wurden. Eine große Festplatte konnte mit mehr als acht Partitionen formatiert werden, TRSDOS konnte jedoch in einer Sitzung nur auf acht Laufwerke zugreifen. Festplatten konnten teilweise unter TRSDOS und teilweise unter CP/M formatiert sein. Jedes Diskettenlaufwerk im System belegte ebenfalls eine Laufwerksnummer. Das Modell 4 konnte außerdem eine RAM-Disk (Memdisk) erstellen und verwenden, der ebenfalls eine Laufwerksnummer zugewiesen werden musste.
Alle TRSDOS-Versionen verwenden Overlays , um die meisten Systemanforderungen zu erfüllen, und die Verzeichnisse der Festplatte werden nicht im Arbeitsspeicher verwaltet. Dies hat zwei Auswirkungen auf die Systemleistung. Erstens greift DOS beim ersten Dateizugriff stets auf das Festplattenverzeichnis zu, um Informationen über die physische Zuordnung des der Datei zugewiesenen Speicherplatzes (einschließlich ihrer Extents, falls vorhanden) zu erhalten. Nach dem ersten Zugriff werden diese Informationen in einem Dateikontrollblock gespeichert, dessen Speicherplatz von der aufrufenden Anwendung bereitgestellt wird. Weitere Zugriffe müssen das Festplattenverzeichnis nicht mehr lesen (es sei denn, die Datei wird beschrieben und es muss weiterer Speicherplatz zugewiesen werden). Daher hängt die Systemleistung maßgeblich davon ab, wie nah der zugewiesene Speicherplatz einer Datei am Verzeichniszylinder liegt und wie stark die Datei fragmentiert ist (d. h. ob Extents an nicht zusammenhängenden Stellen liegen). Je weiter der Verzeichniszylinder entfernt ist, desto mehr muss sich der Lese-/Schreibkopf des Laufwerks bewegen, was den Festplattenzugriff verlangsamt und zu höherem Verschleiß des Laufwerks führt. TRSDOS verfügt über Befehle, mit denen der Benutzer die Platzierung bestimmter Dateien auf dem physischen Speicherplatz der Festplatte optimieren kann, sowie über einen FREEBefehl, der eine Karte der physischen Platzierung einer Datei auf einem Laufwerk anzeigt.
Die zweite Folge der Overlay-basierten Architektur ist, dass sich auf dem Laufwerk mit der logischen Laufwerksnummer Null immer eine Festplatte mit TRSDOS-Systemdateien (Dateiendung /SYS) befinden muss. (Beim Modell 4 kann dies die Speicherdisk sein, wodurch das physische Laufwerk Null für andere Daten freigegeben wird.) LDOS und TRSDOS 6 verfügen über den Befehl SYSRES, der ausgewählte Systemdateien in den Z80-RAM lädt und so Speicherplatz auf der Systemfestplatte für andere Daten freigibt. Alle Versionen bieten Varianten des Befehls SYSTEM, mit denen logische Laufwerksnummern physischen Laufwerken neu zugewiesen werden können. Es ist möglich, Laufwerksnummern so zuzuweisen, dass einem physischen Laufwerk keine logische Laufwerksnummer mehr zugewiesen wird. Dies ist mitunter nützlich, um aus Sicherheitsgründen ( Schreibschutz ) den Zugriff auf das Laufwerk zu verhindern. (Laufwerke können auch vom DOS schreibgeschützt werden.)
Datenträgerverwaltung
Die Hauptfunktion eines jeden Festplattenbetriebssystems besteht darin, dem Benutzer die Verwaltung und den Zugriff auf auf Festplatten gespeicherte Dateien zu ermöglichen. Da der Benutzer nicht mit den physischen Details der Speichermedien selbst belastet werden soll, ist es Aufgabe des Betriebssystems, Dateizugriffsanfragen in spezifische Laufwerks-, Spur-, Sektor- und Kopfparameter zu übersetzen, die den Speicherort jedes Datensatzes genau bestimmen.
Das System verwaltet außerdem eine Laufwerkssteuerungstabelle im Z80-Speicher innerhalb von TRSDOS, die die Parameter jedes der acht logischen Laufwerke speichert. Die Laufwerksparameter steuern, wie der gesamte Speicherplatz eines Laufwerks in adressierbare Einheiten aufgeteilt wird. Die magnetischen Partikelschichten auf der Oberfläche des Datenträgers werden (während des Formatierungsprozesses) magnetisiert und in konzentrische Kreise von Speicherbereichen, sogenannte Spuren, unterteilt . Jede Spur ist in 256 Byte große Unterbereiche, sogenannte Sektoren, unterteilt . Jeder Sektor wird eindeutig durch ein Informationsmuster identifiziert, das jedem Sektor vorangestellt ist und als ID-Feld bezeichnet wird . Obwohl die Anzahl der Sektoren pro Spur je nach Medientyp variieren kann, muss die Anzahl der Sektoren in jeder Spur desselben Mediums (und in jedem Granulat) immer konstant sein.
Festplatten sind folgendermaßen aufgebaut: Jede Spur ist in eine bestimmte Anzahl von 256-Byte-Sektoren mit einer maximalen Kapazität von 32 Sektoren pro Spur formatiert. Die Sektoren sind in Blöcken, sogenannten Granulaten , zusammengefasst, deren Größe je nach Gesamtkapazität der Spuren des Speichermediums variiert. Die Granulatgröße ist jedoch für jedes Festplattenformat konstant. Bei 40-Zylinder-Festplatten mit doppelter Dichte, wie sie in den Laufwerken der TRS-80 Modelle III und 4 verbaut sind, beträgt die Granulatgröße sechs 256-Byte-Sektoren bzw. 1,5 KB. Jede Spur verfügt über drei Granulate mit einer Speicherkapazität von 4,5 KB. Jede Seite (Oberfläche) der Festplatte ist normalerweise mit 40 Spuren formatiert, was 180 KB pro Seite ergibt. Das Modell 4D mit seinen doppelseitigen Laufwerken bietet 360 KB Speicherkapazität. Wird zusätzlicher Speicherplatz für eine Datei benötigt (z. B. zum Erweitern einer Datei während des Schreibvorgangs), wird ein zusätzliches Granulat zugewiesen. Das Granulat stellt somit die kleinste Speichereinheit dar.
TRSDOS nummeriert jeden Sektor, jede Spur und jede Oberfläche. Die Oberflächen werden fortlaufend ab Null nummeriert. Die Spuren werden ebenfalls fortlaufend ab Null am äußeren Rand der Diskette nummeriert, wobei die innerste Spur die höchste Nummer erhält. Bei Mehrkopf-Laufwerken werden die Spurnummern einer Oberfläche auf jeder Oberfläche dupliziert, wobei alle gleich nummerierten Spuren einen Zylinder bilden . Bei einer doppelseitigen Diskette, wie sie auf einem Model 4D formatiert wurde, werden Spur Null der Oberfläche Null und Spur Null der Oberfläche Eins zum Zylinder Null zusammengefasst. Die Zylinderkapazität ist auf maximal 256 Sektoren pro Zylinder bzw. acht Granulate pro Zylinder begrenzt, während das System (bei Festplatten mit mehreren Speichermedien) maximal acht Köpfe pro Laufwerk unterstützt.
Der Verzeichniszylinder der Festplatte wird während des Formatierungsvorgangs auf dem mittleren Zylinder platziert; bei einer Standardfestplatte mit 40 Zylindern befindet sich das Verzeichnis also auf Zylinder 20. Dadurch wird die durchschnittliche Strecke (und damit die Zugriffszeit) des Lese-/Schreibkopfes zum Zugriff auf das Verzeichnis reduziert. Der erste Sektor des Festplattenverzeichnisses enthält die Granule Allocation Table (GAT). Die GAT ist jedem Speicherbereich der Festplatte als Bitmap zugeordnet. Weitere Felder in der GAT enthalten den Paketnamen, das Erstellungsdatum (Formatierungsdatum der Festplatte), das Paketpasswort und Daten zur Konfiguration des Laufwerks.
Beim Öffnen einer Datei sucht das System im Verzeichnis nach dem entsprechenden Verzeichniseintrag. Die Suchzeit wird minimiert, indem die aus Dateiname und Dateiendung bestehende 11-stellige Zeichenkette mithilfe eines Hash-Verfahrens auf ein Byte reduziert wird. Der Hash-Code jeder Datei wird in einer Hash-Indextabelle (HIT) gespeichert, die den zweiten Sektor des Verzeichnisses bildet. Jeder Eintrag in dieser Tabelle entspricht einem bestimmten Verzeichniseintrag. Da die Hashtabelle nur einen Sektor lang ist, kann sie maximal 256 Verzeichniseinträge oder Dateien indizieren. Die Größe des Verzeichnisses selbst richtet sich nach der Festplattenkapazität und beträgt maximal einen Zylinder (bis zu 34 Sektoren). Je größer die Festplattenkapazität, desto größer ist also auch das Verzeichnis und desto mehr Dateinamen können darauf gespeichert werden.
Der Verzeichniseintrag enthält Informationen wie das Datum der letzten Änderung, die Aktualisierungs- und Zugriffskennwörter, die Zugriffsebene und weitere Attribute, z. B. ob es sich um eine SYStem- oder PDS-Datei (Partitioned Data Set) handelt, ob eine Sicherungskopie erstellt wurde, die relative Nummer des letzten Sektors und das letzte Byte im letzten Sektor (Dateiende). Der Eintrag enthält außerdem die vom Dateisystem belegten physischen Bereiche, indem er auf den Zylinder, das relative Startgranulat und die Anzahl zusammenhängender Granulate für jeden Dateibereich verweist. Bei Dateien mit mehr als vier Bereichen werden bei Bedarf zusätzliche Verzeichniseinträge mit Vorwärts- und Rückwärtszeigern verwendet, die die Einträge jeder Datei verknüpfen. Die theoretisch maximale Anzahl von 256 Dateien auf einer Diskette ist daher nur bei fehlerfreier Dateifragmentierung realisierbar.
Wenn TRSDOS eine Diskette formatiert, werden alle zugehörigen Parameter vordefiniert. So werden die Anzahl der Sektoren pro Spur, die Anzahl der Sektoren pro Granulat und damit die Anzahl der Granulate pro Spur, die Anzahl der Seiten (Oberflächen) und die Anzahl der Zylinder sowie die Speicherdichte festgelegt. Einige dieser Werte (Dichte, Seiten, Granulate pro Spur) werden in Felder der Granulatzuordnungstabelle (GAT) geschrieben, die Teil des Diskettenverzeichnisses ist. Andere (Sektoren pro Spur, Sektoren pro Granulat, zusätzlich zu den erstgenannten Werten) sind in Feldern der Laufwerkssteuerungstabelle (DCT) enthalten. Wenn das System versucht, eine Datei auf einer Diskette zu öffnen, verwendet es den @CKDRV-Dienst, um die Verfügbarkeit der Diskette zu prüfen und sie anschließend zu protokollieren. Diese Protokollierungsfunktion aktualisiert das Feld DIRCYL und anschließend die Felder DBLBIT und MAXCYL basierend auf den in der GAT gespeicherten Informationen. Dieses Verfahren erspart dem Benutzer das manuelle Protokollieren einer neu eingelegten Diskette. Es steht ihm frei, unterschiedlich formatierte Datenträger in jedem Laufwerk auszutauschen, ohne befürchten zu müssen, dass das System fehlerhaft darauf zugreift.
Die SVC-Disk-Primitive werden über gemeinsame Systemroutinen geleitet, die in der für jeden Datenträgertyp installierten Treibersoftware enthalten sind. Der Treiber für Diskettenlaufwerke des Modells III oder 4 heißt $FD und befindet sich im unteren Speicherbereich von TRSDOS. Festplattenlaufwerke werden mit eigener Treibersoftware geliefert und üblicherweise im oberen Speicherbereich (Hauptspeicher 64 KB Z80 RAM) oberhalb des Systemzeigers HIGH$ installiert , da der Platz im unteren Speicherbereich meist nicht ausreicht (insbesondere beim Modell 4, da Software, die auf die externen Speicherbänke zugreifen muss, nicht im oberen Z80-RAM-Speicher liegen kann, weil dieser Bereich zum Auslagerungsbereich des RAM gehört). Diese Treiberroutinen stellen ein Verbindungsprotokoll zwischen der Anwendung, die den Festplattenzugriff anfordert, und der Diskettenlaufwerkscontroller-Hardware des Computers her. TRS-80-Laufwerke verwenden Controller-Chips der Western Digital- Serie: den WD1791 in der Nicht-Gate-Array-Version des Modells 4 und den WD1773 in der Gate-Array-Version des Modells 4. Wird eine E/A-Anforderung von einem übergeordneten SVC ausgelöst, beispielsweise zum Lesen eines Dateidatensatzes, wird diese Anforderung in die entsprechende Datenträgerfunktion (FDC-Befehl oder Statusbericht) übersetzt, die zur Erfüllung der Funktionsanforderung benötigt wird. Das Verknüpfungsprotokoll ist für alle an das System angeschlossenen Datenträgergeräte einheitlich. Dadurch ist der Dateizugriff unabhängig von Größe und Art des Datenträgers, solange die im DCT für dieses Laufwerk gespeicherten Parameter eingehalten werden. [ 5 ]
Dateiverwaltung
Dateien auf Festplatten werden mit zwei Zugriffsarten unterstützt: Datensatz-E/A und Zeichen-E/A. Logische Datensätze mit einer Länge von 1 bis 256 Byte können mit den SVC-Anforderungen @READ oder @WRITE gelesen oder geschrieben werden. Datensatz-E/A kann wahlfrei (durch Positions-SVC-Anforderungen vor READ/WRITE) oder sequenziell (durch wiederholte READ- oder WRITE-Anforderungen) erfolgen. Zeichen- (oder Byte-)E/A wird mit den SVC-Anforderungen @GET und @PUT realisiert und entspricht im Wesentlichen der Datensatz-E/A mit einer logischen Datensatzlänge (LRL) von 1. (Der physische Zugriff auf ein Festplattenspeichergerät erfolgt immer in Einheiten von 256-Byte-Sektoren. Dies ist durch die Hardware des TRS-80-Festplattencontrollers festgelegt.) Wird jedoch GET oder PUT für den sequenziellen Zugriff verwendet, kann eine Datei wie ein Zeichen-E/A-Gerät betrachtet werden, vergleichbar mit einem Drucker, einer seriellen Schnittstelle oder einem Bildschirm. Eine Byte-E/A-Anforderung ist daher unabhängig von dem physischen Gerät, das mit dem Steuerblock „verbunden“ ist, der die E/A anfordert. Dies macht das System „geräteunabhängig“.
Dateinamen sind auf acht alphanumerische Zeichen beschränkt (das erste Zeichen muss ein Buchstabe sein) und unterscheiden nicht zwischen Groß- und Kleinschreibung (nur Großbuchstaben werden verwendet; eingegebene Kleinbuchstaben werden großgeschrieben). Dateierweiterungen dürfen bis zu drei Zeichen lang sein und unterliegen denselben Regeln. Dateipasswörter dürfen bis zu acht Zeichen lang sein und unterliegen denselben Regeln (TRSDOS 6-Versionen bis einschließlich 6.2 unterstützen sowohl Besitzer- als auch Benutzerpasswörter). Auch ganze Disketten können mit Masterpasswörtern versehen werden, wodurch der Benutzerzugriff über die Befehle BACKUP und PURGE eingeschränkt werden kann.
Unter TRSDOS und LDOS ist das System im Gegensatz zu CP/M , PC-DOS und MS-DOS nie an einem Laufwerk „angemeldet“ . Die Systemeingabeaufforderung ist immerTRSDOS-fähigAlle Dateizugriffsanfragen (unabhängig davon, ob sie vom Benutzer an der Konsole oder von einem laufenden Programm gestellt werden) werden durchsucht, indem zunächst das Verzeichnis des ersten angegebenen Laufwerks durchsucht wird (falls keine Laufwerksnummer angegeben ist, wird Laufwerk Null verwendet). Wird die angeforderte Datei dort nicht gefunden, wird das nächste (höher nummerierte) Laufwerk im System durchsucht. Dieser Vorgang wird fortgesetzt, bis die Datei gefunden wurde oder alle Laufwerke des Systems durchsucht wurden (siehe unten für Abweichungen von dieser Regel).
Laufwerksnummern werden mit einem Doppelpunkt :gefolgt von der Laufwerksnummer angegeben. Der Doppelpunkt ist optional, es sei denn, die Laufwerksangabe wird als Suffix für einen Dateinamen verwendet. Beispiel: Der Befehl `directory` DIR
- DIRZeigt alle Dateien an, beginnend mit dem logischen Laufwerk Null, dann Laufwerk Eins usw.
- DIR :4oder durchsucht das logische Laufwerk vier (nach allen Dateien, wie immer, wenn kein Dateiname angegeben wird).DIR 4
- DIR :4-6oder durchsucht die logischen Laufwerke vier, fünf und sechs.DIR 4-6
- DIR :4-oder durchsucht die logischen Laufwerke vier, fünf, sechs und sieben.DIR 4-
- DIR FILENAME:2sucht nach DATEINAME auf dem logischen Laufwerk zwei.
- DIR FILENAME:2-Sucht nach FILENAME auf allen logischen Laufwerken, beginnend mit Laufwerk zwei.
Wie ersichtlich, dient der Bindestrich zur Angabe eines Laufwerksbereichs. Die Befehle `and` (Katalog) zeigen alle Dateispezifikationen ( filespecs ) an, die der Abfrage auf allen Laufwerken entsprechen. Andere Befehle/Dienstprogramme wie ` and` und `and` sowie Laufwerkssuchen, die von laufenden Programmen initiiert werden, beenden die Suche beim ersten gefundenen Treffer. Existiert dieselbe Dateispezifikation auf mehreren Laufwerken, werden die Dateien auf den höher nummerierten Laufwerken ausgeschlossen. -DIRCATBACKUPCOPYPURGE
Der Zugriff auf Dateien über Teile des Dateinamens ( PartSpecs ), Dateierweiterungen und Dateidatum wird unterstützt. Zum Beispiel:
- DIR SAMPLEEs werden die Dateien SAMPLE, SAMPLE1, SAMPLE23 und SAMPLEIT ausgewählt.
- DIR /BASEs werden die Dateien SAMPLE/BAS, TEST/BAS, EXAMPLE/BAS usw. ausgewählt.
Wie im vorherigen Beispiel können Laufwerksspezifikationen ( drivespecs ) an Dateispezifikationen angehängt werden. Diese Beispiele setzen voraus, dass die ausgewählten Dateien im Festplattenverzeichnis nicht ausgeblendet wurden. Dateizugriffsanfragen von Anwendungsprogrammen unter TRSDOS funktionieren analog. DIR
Befehlszeilenschnittstelle
Unter TRSDOS/LS-DOS 6.x kann der standardmäßige Systembefehlsinterpreter ( SYS1/SYS) durch einen benutzerdefinierten Interpreter ersetzt werden, indem der neue Interpreter in die Systemdatei SYS13/SYS kopiert wird (die in einer unveränderten Installation eine Dummy-Datei ist). Dabei kann es sich um eine beliebige Maschinencode-/CMD-Programmdatei handeln. In der Dokumentation wird dies als „Erweiterter Befehlsinterpreter“ (ECI) bezeichnet.
TRSDOS/LS-DOS 6.x unterstützt Wildcard-Zeichen in Dateinamen, sowohl das einzelne Zeichen ? als auch das mehrstellige Zeichen *.
TRSDOS (Version II) zeichnete sich durch die Verwendung von Füllwörtern aus , ähnlich der COBOL- Spezifikation von 1959. Diese ließen die Befehle englischsprachiger wirken. Beispielsweise funktionierten die folgenden Befehle identisch:
- COPY filea fileb
- COPY filea TO fileb
Da TRSDOS im Gegensatz zu UNIX / Linux und MS-DOS keine E/A- Umleitung kennt , unterscheidet sich der Befehl APPEND konzeptionell von der UNIX- oder MS-DOS-Idee des Anhängens per Ausgabeumleitung. TRSDOS/LS-DOS 6.x bietet jedoch E/A-Umleitung für Systemgeräte (Tastatur *KI, Bildschirm *DO, Drucker *PR, serielle Schnittstelle *CL) sowie zwischen Geräten und Dateien auf der Festplatte. Der Befehl DEVICE zeigt eine Übersicht der E/A-Verbindungen und -Routen an. Unter DOS und UNIX kann das Drucken einer Datei per Umleitung erfolgen; unter UNIX geschieht dies üblicherweise durch Spooling der Datei an den Zeilendrucker (mittels des Befehls lpr ), da UNIX traditionell ein Mehrbenutzersystem ist. Druckaufträge in TRSDOS/LS-DOS 6.x können durch Anwenden der Befehle LINK oder ROUTE auf das Systemgerät *PR umgeleitet werden (z. B. in eine Datei auf der Festplatte).
TRSDOS/LS-DOS 6.x unterstützt keine Unterverzeichnisse oder Benutzerbereiche. Die Befehle DIR und CAT (Katalog) zur Anzeige von Dateidaten unterstützen jedoch die üblichen Dateinamensteile, Suffixe und Dateidaten. Unter TRSDOS/LS-DOS 6.x können Dateien für die Befehle DIR und CAT unsichtbar gemacht und mit dem Parameter INV angezeigt werden (sofern keine passwortgeschützten Dateien vorhanden sind und das korrekte Passwort nicht angegeben wurde).
TRSDOS/LS-DOS 6.3 kann das Videobild durch Drücken von + an den Zeilendrucker ausgeben . CTRL:
Viele Versionen unterstützen eine einfache Passwortsicherheit für Dateien und Programme mit separaten Lese-/Ausführungs- und Vollzugriffsrechten. Beispiel: Dateiname/ext.Passwort:Laufwerk# . TRSDOS 6.x unterstützt sowohl Besitzer- als auch Benutzerpasswörter (maximal 8 Zeichen) für Dateien auf der Festplatte. LS-DOS 6.3 verwendet den Speicherplatz für das Benutzerpasswort für sein erweitertes Datumsschema (über den 31. Dezember 1987 hinaus). Beide Betriebssysteme des Modells 4 ermöglichen die Festlegung verschiedener Dateizugriffsebenen und den softwareseitigen Schreibschutz für Dateien und ganze Festplatten.
Befehle
Obwohl MS-DOS seine Wurzeln in erster Linie bei CP/M und damit bei TOPS-10 hat , ähneln viele der Dateimanipulationsbefehle denen von TRSDOS. Einige der folgenden TRSDOS-Befehle liegen auf der Festplatte als separate Programmdateien vor (DIR/CMD, FORMAT/CMD, BACKUP/CMD), während alle anderen als Module in den Bibliotheksdateien (technisch: Partitionierte Datensätze oder PDS) SYS6/SYS, SYS7/SYS und SYS8/SYS zusammengefasst sind; dazu gehören TRSDOS-Befehle wie CAT, COPY, LIST, REMOVE und RENAME.
Einige typische TRSDOS-Dienstprogramme:
| Befehl | MS-DOS , OS/2 , Windows | Unix , Unix-ähnlich | Beschreibung | |
|---|---|---|---|---|
| ANHÄNGEN | Datei1 >> Datei2 | cat file >> file2 | Unter TRSDOS 6.x kann die Quelle der angehängten Daten ein Systemeingabegerät wie *KI sein. Daher wird alles, was über die Tastatur eingegeben wird, an die Zieldatei angehängt. Verwenden Sie RESET *KI, um diese Funktion zu beenden. | |
| ATTRIB | Attribut | chmod | ATTRIB, PROT und der UNIX-Befehl chmod unterscheiden sich in ihrer Semantik. UNIX/Linux ist ein Mehrbenutzersystem, in dem jeder Benutzer die Lese-, Schreib- und Ausführungsberechtigungen seiner eigenen Dateien und Verzeichnisse festlegen kann . MS-DOS ist ein Einzelbenutzersystem, und die Dateiattribute „schreibgeschützt“, „versteckt“ und „System“ sind lediglich Empfehlungen. Auch TRSDOS war ein Einzelbenutzersystem. Mit dem Befehl ATTRIB von TRSDOS 6.x lässt sich der Schutzstatus aller Dateien auf einem Datenträger ändern, sofern das Masterpasswort des Datenträgers bekannt ist. Alle Benutzer- und Besitzerpasswörter sichtbarer Dateien können mit einem einzigen ATTRIB-Befehl entfernt werden. | |
| AUTO | AUTOEXEC.BAT | ~/.profile oder ~/.login oder /etc/rc* | Der Befehl AUTO legt einen automatischen Befehl fest, der beim Systemstart von TRSDOS ausgeführt wird. Unter MS-DOS enthielt die spezielle, reservierte Datei AUTOEXEC.BAT eine Liste solcher Befehle. TRSDOS/LS-DOS 6.x unterstützten die Job Control Language (JCL), mit der beliebige Textdateien mit der Endung /JCL (mittels des Befehls DO ) beliebig viele ausführbare Programmdateien stapelweise verarbeiten konnten. Eine solche Datei konnte das Objekt eines AUTO-Befehls sein. Unter UNIX enthalten eine oder mehrere rc - Dateien unter /etc/ eine Reihe von Startbefehlen („ run “). Spezielle „ Punktdateien “ im Benutzerverzeichnis werden bei jeder Anmeldung des Benutzers ausgeführt. UNIX unterstützt viele weitere Punktdateien für zahlreiche Befehle, die den Inhalten des Ordners „preferences“ unter Macintosh ähneln . | |
| BACKUP | diskcopy , tar | tar, cpio , pax , (viele andere) | TRSDOS/LS-DOS 6.x enthält das Dienstprogramm BACKUP/CMD, mit dem sich Dateien anhand von Teilnamen, Dateiendungen (z. B. /CMD oder /BAS) oder dem Dateidatum massenhaft kopieren lassen. BACKUP kann so konfiguriert werden, dass vor dem Kopieren jeder Datei die Berechtigung mit dem Parameter (Q=Y) abgefragt wird. Auf Computern mit nur einem Laufwerk ermöglicht der Parameter X das Kopieren zwischen zwei Festplatten, indem der Benutzer aufgefordert wird, die Festplatte im Laufwerk zu wechseln. | |
| KATZE | Der TRSDOS-Befehl CATalog zeigt eine Zeile mit Informationen zum ausgewählten Laufwerk (Festplattenname, Kapazität, Datum) und eine Liste der auf der Festplatte vorhandenen Dateinamen mit ihren Erweiterungen an. Dies ist eine Kurzfassung des Befehls DIRectory, die es ermöglicht, mehr Dateiinformationen auf einem einzigen Bildschirm anzuzeigen, wodurch weniger Scrollen erforderlich ist, um den gesamten Festplatteninhalt zu sehen. CAT verwendet dieselben Parameter wie DIR zum Anzeigen von INVisible- und SYStem-Dateien. | |||
| UHR | prompt $t * | in einigen Shells: PS1="...\t..." * | CLOCK installiert eine Interrupt-Aufgabe, die die Systemzeit in der oberen Ecke des Displays anzeigt; eine exakt entsprechende Funktion gibt es in MS-DOS oder UNIX nicht, obwohl viele Programme ähnliche Funktionen für DOS bereitstellten und die gängigen UNIX-Shells die Zeit in ihre benutzerdefinierte "Prompt-Zeichenkette" einbetten konnten. | |
| CLS | cls | klar | Klare Videoanzeige und Home-Cursor | |
| COMM | Unter TRSDOS 6.x ist COMM/CMD ein Terminalprogramm , das die Kommunikation zwischen der RS-232C -Schnittstelle des Model 4 und einem anderen Computer, einem Modem oder einem seriellen Drucker/Plotter herstellt. Zuerst muss der Treiber für die serielle Schnittstelle COM/DVR mit dem Befehl SET installiert werden, wodurch das Systemgerät *CL (Comm Line) eingerichtet wird. Mit SETCOM/CMD können die Kommunikationsparameter festgelegt werden. | |||
| KOPIE | Kopie | cp | Unter TRSDOS 6.x kann der Befehl COPY verwendet werden, um Informationen zwischen Systemgeräten und Dateien zu übertragen. Beispielsweise verwandelt COPY *KI *PR den Computer (sofern ein aktiver Zeilendrucker angeschlossen ist) in eine Schreibmaschine, da jedes eingegebene Zeichen sowohl an das *PR- als auch an das *DO-Gerät gesendet wird. Dies entspricht im Prinzip dem TRSDOS-Befehl LINK *KI *PR. Mit RESET *KI lässt sich diese Funktion deaktivieren. | |
| DEBUGGEN | debuggen | Die optionale Dateispezifikation führt außerdem die LOAD-Funktion für ein Ziel-/CMD-Maschinencodeprogramm aus; (ext) lädt zusätzliche Debugger-Befehle aus der Systemdatei SYS9/SYS. | ||
| GERÄT | Zeigt den Status der Systemlaufwerke und logischen Systemgeräte sowie die bestehenden ROUTEs und LINKS zwischen ihnen an. | |||
| DIR | dir | ls | DIR zeigt dieselben Dateien an, die auch vom Befehl BACKUP ausgewählt würden, und eignet sich daher gut als Vorschau. Der Parameter (p) sendet die Verzeichnisliste an den Zeilendrucker, der wiederum mit einer Datei auf der Festplatte verbunden werden kann. | |
| DISKCOPY | diskcopy | LS-DOS 6.3 enthält das Dienstprogramm DISKCOPY/CMD, das eine exakte Kopie einer Quelldiskette erstellt, indem es diese formatiert und auf eine leere Zieldiskette kopiert. | ||
| FILTER | Mit dem Befehl FILTER kann ein /FLT-Filterprogramm an ein Systemgerät angehängt werden. Drei dieser Programme sind in TRSDOS 6.x enthalten: FORMS/FLT für formatiertes Drucken, KSM/FLT für Tastaturmakros und CLICK/FLT, wodurch der Lautsprecher des Model 4 bei jedem Tastendruck einen Piepton ausgibt. | |||
| FORMAT | Format | mkfs | Standardmäßig werden 40 Spuren verwendet, einseitig bei den Modellen III und 4, doppelseitig beim Modell 4D. Die Anzahl der Spuren pro Seite kann über den Parameter (CYL= nn ) festgelegt werden. Alle Modelle 4D und die meisten Modelle 4 können 42 Spuren formatieren, obwohl die von Radio Shack gelieferten Laufwerke nominell 40 Spuren unterstützen. | |
| FORMULARE | Unter TRSDOS 6.x werden Parameter für Daten festgelegt, die an das *PR-Gerät des Systems gesendet werden, nachdem der FORMS-Filter an das *PR-Gerät angehängt wurde. Dazu gehören die Anzahl der Zeichen pro gedruckter Zeile, Zeilen pro Seite, Ränder, zusätzliche Zeilenvorschubzeichen usw. | |||
| FREI | chkdsk | df | TRSDOS 6.x zeigt eine ASCII- Karte an, die die von aktiven Dateien belegten Festplattenbereiche mit xxxxxx darstellt; der Verzeichniszylinder wird als DDDDDD angezeigt. | |
| GETDISK/GETTAPE | ? | dd | ||
| TÖTEN | del | rm | Ab TRSDOS 6.0 wurde KILL durch REMOVE ersetzt (gemäß dem LSI Journal-Artikel „Thou Shalt Not Kill“). | |
| LISTE | Typ | Katze | Unter TRSDOS/LS-DOS 6.x kann der Befehl LIST mit dem Parameter HEX den Inhalt von Nicht-ASCII-Dateien anzeigen oder ausgeben. Die Ausgabe kann mit + angehalten werden . ⇧ Shift@ | |
| LOAD filespec | (kein Äquivalent) | (kein Äquivalent) | Unter TRSDOS, DOS und UNIX erfolgt der Programmaufruf über den Dateinamen; für normale Binärdateien oder Textbefehlsdateien ( Batchdateien unter DOS und Shell-Skripte unter UNIX/Linux) ist kein expliziter LOAD- Befehl erforderlich . Der LOAD- Befehl unter TRSDOS lädt ein Binärprogramm in den Speicher, führt es aber nicht aus; weder DOS noch UNIX haben ein Äquivalent. LOAD wird unter TRSDOS fast immer verwendet, um ein Maschinencode-Z80-Programm (/CMD-Datei) dem Systemdebugger zur Untersuchung oder Änderung zur Verfügung zu stellen. | |
| ERINNERUNG | Der Befehl MEMORY zeigt die Namen und Größen der im Speicher befindlichen Module an. Er dient auch zum Ändern von Systemflag-Bytes. Beispielsweise ist Flag A das DOS-Zuordnungsbyte, das der Befehl BACKUP verwendet, um den ersten Zylinder einer Festplatte für den Kopiervorgang festzulegen. Dadurch kann der Benutzer die physische Anordnung von Dateien auf der Festplatte steuern, was wichtig ist, um die Bewegung des Lese-/Schreibkopfes beim Dateizugriff zu minimieren. | |||
| PATCH | ? | Patch | Alle Versionen von TRSDOS enthalten das PATCH/CMD-Dienstprogramm. Dieses ermöglicht die Modifizierung von Maschinencode-/CMD-Dateien mithilfe von Patch-Daten, die von einer /FIX-Datei im hexadezimalen ASCII-Format bereitgestellt werden. | |
| Dateityp >> PRN | lpr | Unter TRSDOS 6.x steht eine Interrupt-Funktion zur Verfügung, um die aktuelle Videoanzeige jederzeit an einen Zeilendrucker auszugeben. Diese wird mit der Taste + aktiviert . Wenn das Systemgerät *PR mit einer Datei auf der Festplatte verbunden ist, wird die Ausgabe dorthin gesendet. CTRL: | ||
| SÄUBERN | TRSDOS/LS-DOS 6.x unterstützt den Befehl PURGE, mit dem sich Dateien anhand von Dateinamensteilen, Dateiendungen oder Dateidatum massenhaft löschen lassen. PURGE fragt den Benutzer um Erlaubnis zum Löschen jeder einzelnen Datei, sofern der Parameter (Q=N) nicht angegeben ist. | |||
| UMBENENNEN | ren oder umbenennen | mv | Unter TRSDOS 6.x kann der Benutzer einzelne Dateien oder die gesamte Diskette umbenennen. | |
| TAPE100 | TAPE100/CMD liest und beschreibt Kassetten, die mit dem Laptop TRS-80 Modell 100 als TRSDOS 6.x-Disk-Dateien aufgenommen wurden. Hierfür ist die Verwendung der Kassettenschnittstelle des Modells 4 erforderlich, die dem tragbaren Gerät Modell 4P fehlt. |
Beispielcode
Der folgende Z80 -Assembler- Quellcode gehört zu einer Subroutine namens HELLO_WORLD . Dieses einfache Einführungsprogramm gibt eine Meldung auf dem Bildschirm aus und beendet sich anschließend. Es veranschaulicht, wie Assembler-Quellcode formatiert ist und über TRSDOS mit der Anzeigehardware interagiert. Das Beispiel verwendet einen TRS-80 Modell 4 mit TRSDOS/LS-DOS 6.x von Tandy/Radio Shack und Logical Systems und ist mit nahezu jedem von Radio Shack oder Misosys Inc. vertriebenen Assembler kompatibel (Serie I/EDTASM, ALDS, EDAS oder MRAS mit Umschalter). -GC
3000 3E 69 3002 EF 3003 21 14 30 3006 3E 0A 3008 EF 3009 0E 0D 300B 3E 02 300D EF 300E 21 00 00 3011 3E 16 3013 EF 3014 48 65 6C 6C 3018 6F 2C 20 77 301C 6F 72 6C 64 3020 21 0D 0D 3023 | ; hello_world_TRS-80 Modell 4 ; Gibt "Hallo Welt!" aus und wechselt dann zu TRSDOS Ready ; ; Eingangsregister: keine ; Rücklaufregister: keine ; ; Die folgenden Werte sind Dezimalzahlen, sofern nicht mit H suffixiert ; Der Begriff "Pseudo-Op" bedeutet dasselbe wie "Assembler-Direktive", ist kein Z80-Code ; @CLS EQU 105 ; EQU Pseudo-Op setzt @CLS Textlabel = TRSDOS Supervisor Code @DSP EQU 2 ; Setzt @DSP Textlabel = TRSDOS SVC, um ein Zeichen an die Anzeige zu senden @DSPLY EQU 10 ; Setzt @DSPLY Textlabel = SVC für die Textzeichenfolgenanzeige @EXIT EQU 22 ; Setzt @EXIT Textlabel = SVC für die Rückkehr zu TRSDOS Ready ; ORG 3000H ; ORG Pseudo-Op setzt die Standard-Startadresse unter TRSDOS 6.x START LD A , @CLS ; CLS = Bildschirm löschen, Anzeige und Home-Cursor löschen RST 40 ; Z80 Neustart-Anweisung für den System-SVC-Prozessor, @CLS ausführen LD HL , MSG ; auf die Nachrichtenzeichenkette mit HL zeigen (erforderlich von @DSPLY SVC) LD A , @DSPLY ; Textzeichenkette an das *DO-Ausgabegerät (Bildschirm) senden RST 40 ; @DSPLY SVC ausführen (13-Bit-Byte zum Abschließen der Zeichenkette erforderlich) LD C , 13 ; nun einen weiteren Wagenrücklauf senden, benötigt in Register C LD A , @DSP ; um die Hello-Nachricht von der TRSDOS-Bereitschaftsanzeige auszulösen RST 40 ; sobald wir zum System zurückkehren LD HL , 0 ; dem Befehlsinterpreter signalisieren, dass kein Fehler vorliegt LD A , @EXIT ; zu TRSDOS Ready zurückkehren RST 40 ; (Stack-Integrität erhalten, hätte auch ein RET verwendet werden können!) MSG DB 'Hello, world!' , 13 ; DB = Define Byte Pseudo-Op assembliert ASCII-String in Z80-Speicher CR DB 13 ; Byte 13 ist ein ASCII-Wagenrücklaufzeichen, bewegt den Cursor nach unten END START ; END Pseudo-Op, die vom Assembler benötigt wird , um einen Transferdatensatz zum Programmeinstiegspunkt zu erzeugen |
Referenzen
- ^ a b „The Source“ . Matthew Reeds TRS-80.org . Abgerufen am 21. Mai 2019 .
- ^ White, Ron (August 1987). „Die Tandy-Story: Alles begann vor 10 Jahren in einem umgebauten Gebrauchtwagen-Showroom…“ 80 Micro . S. 50–64 . Abgerufen am 18. Mai 2019 .
- ^ Archer, Rowland Jr. (Oktober 1983). „Radio Shack’s TRS-80 Model 4“ . BYTE . S. 292–302 . Abgerufen am 31. Januar 2015 .
- ^ „Neu! TRSDOS 6.2“ . TRS-80 Katalog (RSC-12) . Tandy/Radio Shack. 1985. S. 28. Archiviert vom Original am 5. Januar 2026. Abgerufen am 7. Mai 2019 – über die Website der Radio Shack Kataloge.
- ^ Soltoff, Roy. „Programmierhandbuch für TRSDOS 6“ (PDF) . Tim Manns Homepage . Abgerufen am 4. November 2019 .
- Clays, Michael (19. Februar 2000). „TRS-80 Model I TRSDOS“ . Mikes virtuelles Computermuseum . Archiviert vom Original am 21. Februar 2006.
Externe Links
- TRSDOS/LS-DOS 6.x Benutzerbefehlsübersicht
- TRS-80-Fehlermeldungen, archiviert am 05.03.2021 im Internetarchiv Wayback Machine
- Wiederbelebter Standort TRS-80
- Homepage des Modells III (mit Liste der TRSDOS-Alternativen für das TRS-80 Modell III)
- Matthew Reeds TRS-80-Emulator-Software läuft unter MS-DOS ; erfordert das Extrahieren eines ROM- Abbilds .
- xtrs ist ein TRS-80-Emulator für UNIX und X11; ähnliche ROM-Probleme gelten.
- TRSdisk , TRSDOS-Dienstprogramme für UNIX
- TRS-80 Virtueller Diskettenmanager
- TRSDOS-Anwendungen