^^^^^0200 DO "Kommandofile" (Parameter)* Ausfuehrung der Kommandos, die im Kommandofile stehen. Substitution des N-ten Parameters fuer jedes #N, wobei N <= der Parameteranzahl ist. Die moegliche Parameteranzahl wird festgelegt durch paarweise Benutzung der eckigen Klammern []. Parameter ueber die Anzahl der Klammerpaare hinaus werden ignoriert. Das DO Kommando kann rekursiv benutzt werden, d.h. auch im Kommandofile selbst, wenn die properties von DO "F" enthalten. Im Beispiel soll ein Kommandofile namens 'LIST' mit dem Inhalt: ACTIVATE $DRUCK [COPY #1 $DRUCK [;COPY #2 $DRUCK [;COPY #3 $DRUCK ]]] DEACTIVATE $DRUCK existieren. %DO LIST filespec1 filspec2 filespec3 Treiber $DRUCK wird activiert. Die files mit den Spezifizierungen filespec1 ...2, ...3 werden gedruckt; $DRUCK wird deactiviert. ^^^^^0210 DUMP filespec [M[ N]] Vom angegebenen file wird ein Speicherbelegungsbild (hexadezimal und ASCII) auf SYSLST ausgegeben. Nichtdruckbare Bytes werden in der ASCII-Spalte als '.' dargestellt. M = Nummer des 1. auszugebenden Records N = " " letzten auszugebenden Records Wenn die Angaben M,N fehlen, wird vom 1. bis zum letzten Record ausgegeben. (Zahlenangabe dezimal). Das Kommando benutzt die logischen Einheiten: unit 3: Ausgabe des Speicherbelegungsbildes unit 4: Eingabe der darzustellenden Datei %DUMP $PROM/DATA Der Inhalt des files "DATA" vom Treiber "PROM" wird hexadezimal und ASCII auf unit 3 ausgegeben. ^^^^^0220 ECHO [$"Treiber"] "Zeichenkette" Kopiert die Zeichenkette auf $Treiber (write binaer Request) $Treiber muss ein konsoltypisches Geraet sein (Characterdevice). fehlt die Treiberangabe, so wird $CON genutzt (unit 2). Ermoeglicht Textausgaben mittels Kommandozeilen, bedeutsam bei Kommandofiles. %COPY,;ECHO Disketten einlegen; PAUSE;I;X * parameter ... Nachdem das Kommando COPY geladen wurde, wird die Zeichenkette 'Disketten einlegen' auf den Bildschirm (genauer: unit 2) ausgegeben und die Kommandoabarbeitung wird unterbrochen (PAUSE), bis der Bediener eine Taste betaetigt. Anschliessend wird das interne Kommando I abgearbeitet und mit X das bereits geladene 'COPY' mit den Parametern gestartet. ^^^^^0240 EXTRACT "filespec" Vom file werden folgende Daten auf unit 2 ausgegeben: - RECORD COUNT (Anzahl der Records) - RECORD LENGTH (Record-Laenge) - BYTES IN LAST RECORD (Byteanzahl im letzten Record) bei procedure-files zusaetzlich: - ENTRY POINT (Programmeintrittspunkt, Startadresse) - LOW ADDRESS (niedrigste benutzte Speicheradresse) - HIGH ADDRESS (hoechste benutzte Speicheradresse) - STACK SIZE (Stackgroesse fuer das Programm) - SEGMENTS (Adressen der Speichersegmente,die vom file belegt werden) 'EXTRACT' kann benutzt werden, um die guenstigste Recordlaenge fuer Procedurefiles zu finden. %EXTRACT EXTRACT RECORD COUNT=0001 RECORD LENGTH=0200 BUTES IN LAST RECORD=0200 ENTRY=4000 LOW ADDRES=4000 HIGH ADDRESS=43FF STACK SIZE=0080 SEGMENTS: 4400 45F2 ^^^^^0250 FORCE "Kommando" "Parameterliste" Bewirkt, dass alle Kommandofiles in der laufenden Kommandozeile (bis ';' oder Zeilenende) geladen werden, ohne Ruecksicht auf vorherige Speicherreservierung. (Normalerweise wird ein Procedurefile nur geladen, wenn der erforderliche Speicherbereich nicht reserviert ist.) Anwendungsbeispiele fuer FORCE: Overlaystrukturen und rekursive Programmaufrufe. Wenn ein file die Eigenschaft 'F' besitzt (props = F, FORCE MEMORY ALLOCATION), hat dies die gleiche Auswirkung wie das FORCE-Kommando. %F FILEA, FILEB, FILEC die Procedurefiles FILEA FILEB und FILEC werden geladen , auch wenn sie sich gegenseitig speichermaessig ueberlappen. FILEC wird ausgefuehrt. ^^^^^0260 FORMAT Formatiert eine 5,25"-Diskette mit 80 bzw. 40 Spuren zu je 16 bzw. 32 Sektoren (mit Rueckseite) Der Diskettenbelegungsplan (DISK ALLOCATION MAP) und eine Disketten- Nutzungs-Statistik werden initialisiert. Ein leeres directory (Disketteninhaltsverzeichnis), das nur die Angaben des directory-files selbst enthaelt, wird angelegt. 2 Sectoren werden vom DISK.-Belegungsplan (DISK ALLOCATION MAP) und 11 Sectoren werden vom directory belegt. Beim Formatieren einer Systemdiskette werden zusaetzlich fuer den System- lader 16 Sectoren reserviert. Beim Erzeugen des physischen Aufzeichnungsformates werden alle Spuren kontrollgelesen. Bei festgestellten Aufzeichnungsfehlern (Diskettendefekte) werden die defekten Spuren im Diskettenbelegungsplan als belegt gekennzeichnet, wodurch eine weitere Benutzung verhindert wird. Die Diskette ist aber weiterhin verwendbar. Zur Formatierung einer Systemdiskette muss ein entsprechendes Original (Mutter- systemdiskette) zur Verfuegung stehen. %FORMAT FORMATIEREN VON UDOS DISKETTEN 80 (40) * 32 (16) * 256 Drive : "drive" 80 Spuren ? J | N Doppelseitig ? J | N Disk-ID : "name" Systemdisk ? J | N Bereit ? J | N Formatiert die Diskette in Laufwerk "drive" mit dem angegebenen Namen ent- sprechend der Dialogfragenbeantwortung. ^^^^^0270 IMAGE "filespec" ("Erste Speicheradresse" "Letzte Speicheradresse" )+ [E="Eintrittspunkt"] [RL="Recordlaenge"] [ST="Stacktiefe"] Kopiert den/die angegebenen Speicherbereich(e) auf das file mit der angegebenen Filespezifizierung als procedur-file. Alle Zahlen sind hexadezimal anzugeben. Wenn Angabe 'E' fehlt: "Eintrittspunkt" = 0 "Recordlaenge" darf sein 80H, 100H, 200H, 400H oder 800H ohne Angabe: RL = 100H "Stacktiefe" - ohne Angabe = 80H Mindestens ein - hoechstens 16 Segmente koennen spezifiziert werden. Beim Schreiben des files werden die exakten Speicherbelegungen einschliesslich erste und letzte Speicherzelle fuer jedes Segment kopiert. Hoechste und niedrigste Speicherzelle des files werden im Descriptorrecord eingetragen. %IMAGE zwei.Bloecke 4400 4425 7000 7FF0 E=7000 Kopiert den Inhalt der Speicherbereiche 4000-4425 und 7000-7FF0 auf das file namens 'zwei.Bloecke'. Dieses file enthaelt 17 Records je 100H Bytes, Eintrittspunkt = 7000H STACK-Tiefe = 80H ^^^^^0280 I[NITIALIZE] [$"Treibername"[ Parameterliste]] Sendet ein INITIALIZE-Request zum MASTER-device oder zu einem optional angegebenen Treiber, welcher vorher aktiviert sein muss. Die Zusatz-Parameteradresse des I/O-Vectors (SPV, Supplemental Parameter Vector Address) zeigt auf das Trennzeichen hinter dem Kommando, bzw. falls angegeben, hinter dem Treibernamen. %I $EDR K='Kopfzeile' Sendet ein INITIALIZE-Request zum Treiber $EDR. Die Zusatzparameter-Adresse des I/O-Vectors zeigt im Kommandopuffer vor die Zeichenkette 'K=.......' . Das Treiberprogramm hat somit die Moeglichkeit die weiteren Angaben in der Kommandozeile auszuwerten. Die Reaktion auf den INITIALIZE-Request ist treiberspezifisch. %I Sendet INITIALIZE-Request zum MASTER-Treiber ($NDOS). Dabei werden von allen aktiven Floppy-DISK-Laufwerken die Diskettenbelegungsmaps eingelesen und im Arbeitsspeicher bereitgestellt. ^^^^^0290 LADT Listet die zur Zeit aktiven Treiberprogramme, deren Eintrittspunkte, Groesse und die Zuordnung zu den logischen Einheiten (auf unit 3) auf. %LADT LADT DEVICE ENTRY MODUL MAPPED NAME POINT ADDRESS UNITS NDOS 2600 1A00 0 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 CON 2110 0500 1 2 3 NULL 1D51 0000 20 PCON 0BEE 0000 FLOPPY 0BFD 0000 'MODUL ADDRESS =0' bedeutet, dass diese Treiber zum System gehoeren und nicht aktiviert werden muessen.