#type ("12")##limit (16.0)##block##pageblock# #head# #center#Dokumentation zum EUMEL-SHard #end# #bottom# #center#- % - #end# ************************************************************************ * * * D o k u m e n t a t i o n z u m S H a r d (8) * * * * Stand der Dokumentation: 26.06.87 * * Stand der Implementation: 26.06.87, Version 1.5 * * * * Michael Staubermann * * Moränenstraße 29 * * 44 Münster-Hiltrup * ************************************************************************ 1. Allgemeines 1.1 Neuheiten 1.2 Logische und physische Kanäle 2. Block I/O 2.1 Harddisk (Kanal 0) 2.2 SCSI-Floppy (Kanal 31) 2.3 Harddisk-Volume (Kanal 28) 2.4 160k/640k-Floppys (Kanal 29, 30) 2.5 Graphikmemory (Kanal 1) 3. Stream I/O 3.1 Konsole (Kanal 1) 3.2 6551-Seriell (Kanal 5) 3.3 SCCs (Kanal 2, 3) 3.4 CIO-Drucker (Kanal 4) 3.5 Motherboard-Drucker (Kanal 6) 4. Graphik 4.1 CTRL 4.2 MOVE 4.3 DRAW 4.4 TEST 4.5 CLR 4.6 FILL 4.7 TRANS 5. Hardware 5.1 Zugriff auf die Hardware-Uhr 5.2 Zugriff auf die Analog-Ports 5.3 Zugriff auf die I/O-Ports 5.4 ID-Felder 6. Installation 6.1 Vortest/Speichertest 6.2 Konsole 6.3 SCSI-Floppy 6.4 Harddisk Volume 6.5 Logische Kanäle zuordnen 6.6 Installation auf Harddisk 6.7 Installation auf Floppy #page# #ub#1 Allgemeines#ue# #ub#1.1 Neuheiten#ue# Neu in Version 1.2: 40% höherer CPU-Durchsatz. Neu in Version 1.4: Texthardcopy mit SHIFT CTRL F12. Neu in Version 1.5: Beide Printer-Spooler löschbar mit control (-10,...). Korrektur in 1.5: Kanal 4 - Printer darf auch während des Betriebs aus- und eingeschaltet werden (läuft automatisch wieder an). #ub#1.2 Logische und physische Kanäle#ue# Die Unterscheidung zwischen logischen und physischen Kanälen bringt Vortei- le: - Der Systemstart muß nicht mehr an der Konsole erfolgen (jetzt z.B. an einem externen Terminal). - Systemfehler/Hardwarefehler und Info werden damit auch an einem anderen physischen Kanal ausgegeben. - Das Hintergrundmedium muß nicht mehr unbedingt die Harddisk sein. Eine SCSI-Floppy (720k) wäre denkbar, oder ein anderes Harddisk-Volume. - Das Archivmedium muß nicht mehr unbedingt die SCSI-Floppy sein. Ein Hard- diskvolume oder eine 640k-Floppy wären denkbar. - Für einen anderen SHard geschriebene Software (z.B. alter Druckertrei- ber/Graphiktreiber) muß nicht geändert werden. #page# #ub#2. Block I/O#ue# #ub#2.1 Harddisk (Kanal 0)#ue# Keine Recalibrates (wg. Timeout/DMA-Fehler) mehr! Das beste Sektor-Interleave ist 5. #ub#2.2 SCSI-Floppy (Kanal 31)#ue# - Falls keine Floppy im Schacht liegt, werden keine Retries mehr gemacht. Bei Write-Protect auch nicht. - Harddisk und Floppy arbeiten jetzt auch bei intensiver Benutzung gut nebeneinander. - Mit 'size (schluessel)' kann vom EUMEL aus das Format eingestellt werden. Interpretiert wird 0 und 2 als 720k-Format und 1 als 360k-Format, sowie der analytische Schlüssel (lt. Portierungshandbuch). - 'format (schluessel)' formatiert eine Floppy im 720k-Format. Der Control- ler wird allerdings wie bei 'size (schluessel)' vorher initialisiert, da EUMEL das nicht macht. - Falls gewünscht kann auch SCSI-Floppy #1 über Kanal 31 angesprochen wer- den. Die entsprechende Frage wird im Installationsprogramm gestellt. #ub#2.3 Harddisk-Volume (Kanal 28)#ue# Mit diesem Kanal ist es möglich, ein anderes Harddisk-Volume, dessen Anfang und Größe auf der Platte mit dem Installationsprogramm ausgewählt wurde, anzusprechen. Ein CP/M-Volume kann z.B. auch durch EUMEL genutzt werden oder das Harddisk-Volume wird als Archiv-Kanal genutzt. #ub#2.4 160k/640k Floppys (Kanal 29, 30)#ue# - Kanal 29 spricht Disk #1 in Slot 6 an, - Kanal 30 spricht Disk #0 in Slot 6 an. - Da sich beide Disks einen Controller und Datenbereich (4k-Cache) teilen, kann Block I/O nicht auf beiden Kanen parallel ablaufen. Blockweise Ab- wechslung ist allerdings möglich (Wird durch Semaphor geregelt). - Formatieren ist auf diesen Kanälen nicht möglich. - Das Format (160k/640k) wird mit 'size (schluessel)' im EUMEL eingestellt. Außer dem analytischen Schlüssel wird noch 0 und 2 für 2 * 80 Tracks (640k) und 1 für 1 * 40 Tracks (160k) interpretiert. - Ein (CP/M-) Interleave von 3 Sektoren ist eingestellt. - Daten werden jeweils Trackweise in einen Puffer gelesen und in 512-Byte Blöcken an EUMEL übergeben. Bei 'blockout' wird der Block (512-Bytes) sofort auf die Floppy geschrieben. - Writeprotection wird erkannt. - Media-Mangel wird nicht erkannt, sondern als Lesefehler interpretiert bei dem Retries versucht werden. (SHard führt von sich aus 1 Recalibrate aus, den Rest muß EUMEL machen). #ub#2.5 Graphikmemory (Kanal 1)#ue# - Dieser flüchtige Speicher hat eine Größe von 32KB (64 Blöcke) - 4 Graphikseiten zu jeweils 8KB sind linear angeordnet. - Seiten 0 und 1 können als Grahikbitmap angezeigt werden - Seiten 2 und 3 können dienen als Hilfsspeicherseiten #page# #ub#3. Stream I/O#ue# #ub#3.1 Konsole (Kanal 1)#ue# - Die Blinkfrequenz des Cursors kann nicht mehr mit 'control' eingestellt werden, sondern vor dem Systemstart mit dem Installationsprogramm. - Zusätzlich kann die Tonhöhe des Steuercodes ""7"" bestimmt werden (Im Installationsprogramm). - Der Zeichensatz wird nicht mehr mit 'control' eingestellt. Da jetzt Steu- ercodes benutzt werden, kann der Zeichensatz in der Typtabelle festgelegt werden. - Zeichencodes 128..255 werden ohne Umsetzung auf den Bildschirm geschrie- ben. - Folgenden Steuercodes sind definiert: 0 - Keine Aktion 1 - Cursor Home 2 - Cursor right 3 - Cursor up 4 - Clear to end of Page 5 - Clear to end of Line 6 - Cursor Positionierung (Row, Column) (ohne Offset!) 7 - Bell 8 - Cursor left 9 - Clear Screen 10 - Cursor down 11 - Insert Line 12 - Delete Line 13 - Carriage Return 14 - End Mark 15 - Begin Mark 16 - Deutscher Zeichensatz (German ASCII) 17 - ASCII Zeichensatz 18 - APL Zeichensatz 19 - Universal Zeichensatz (German ASCII + APL) 20 - Mode einschalten: Inverse Zeichen blinken nicht 21 - Mode einschalten: Inverse Zeichen blinken - Es werden keine Eingabeumcodierungen gemacht, dies soll in der Typtabelle geschehen. - Falls EUMEL keine Eingabezeichen mehr puffern kann, werden diese im Ta- staturpuffer gespeichert. Damit ist es möglich bis zu 270 Tastendrücke im voraus zu tippen. Werden noch mehr Tasten gedrückt, ertönt ein Signal, da weitere Tastendrücke verlorengehen. EUMEL wird beim nächsten Inputinter- rupt ein Overrun-Error gemeldet. - Einige Funktionstasten haben eine besondere Bedeutung: F2 = SV-Call: Diese Taste wird auch dann weitergeleitet, wenn EUMEL keine weiteren Zeichen puffern kann, damit Tasks, die nicht auf Eingabe warten, abgebrochen werden können. SHIFT CTRL F12 = Texthardcopy: Durch Drücken dieser Tasten wird der In- halt des Textbildschirms auf einem Drucker an der paralle- len Basisschnittstelle ausgedruckt. Achtung: Dies funktio- niert nur, wenn der Spooler leer ist. Falls ein Druckauf- trag läuft, sollte keine Hardcopy gemacht werden (Falls der Spooler nämlich kurzfristig leer ist, wird die Hardcopy gedruckt den Druckauftrag ruinieren.) SHIFT CTRL F13 = Weiter: Durch Drücken dieser Tasten wird der Tastatur- puffer ohne Rücksicht darauf, ob EUMEL noch Zeichen puffern kann, zeichenweise entleert. (Wird wohl kaum benutzt werden müßen). SHIFT CTRL F14 = Shutup: Durch Drücken dieser Tasten wird das System kontrolliert heruntergefahren. SHIFT CTRL F15 = Reset: Falls verdrahtet löst die Software einen Hard- warereset aus. #ub#3.2 6551-Seriell (Kanal 5)#ue# Dieser Kanal wurde erweitert: - Außer Baudrate können jetzt auch Stopbits, Datenbits, Parity und Fluß- kontrolle eingestellt werden (CTS, DSR/DTR, XON/XOFF). - Ein Empfangspuffer von 2300 Zeichen wurde eingebaut und der Ausgabepuffer auf 1k erweitert. - Ein- und Ausgabe läuft jetzt Interruptgetrieben, kann also auch während einer Floppyoperation stattfinden. - Übertragungsfehler (Parity, Framing, Overrun) werden beim Inputinterrupt an EUMEL gemeldet. Die Fehler werden in dem Moment, in dem sie bemerkt werden gemeldet, d.h. i.d.R. nicht passend zum gleichzeitig übermittelten Zeichen. - Ein Break-Kommando wird interpretiert und ggf. an EUMEL gemeldet. Folgt auf das Break-Kommando ('00' + Framing Error) ein 'Kommandozeichen', dann wird dieses Remote-Kommando ausgeführt, anderenfalls wird das auf 'Break' folgende Zeichen in den Empfangspuffer geschrieben und 'Break' an EUMEL gemeldet. - Folgende Break-Komandos werden interpretiert: : SV-Call ohne Rücksicht auf Verluste an EUMEL leiten. W : Wie SHIFT CTRL F13 bei Keyboard. S : Shutup, System kontrolliert herunterfahren. R : Software löst, falls verdrahtet, einen Hardarereset aus. #ub#3.3 SCCs (Kanal 2, 3)#ue# - Außer der Baudrate kann man jetzt auch Stopbits, Datenbits, Parity und Flußkontrolle (RTS+DTR /CTS) einstellen. XON/XOFF wird nicht empfohlen. - Übertragungsfehler (Overrun, Parity und Break) werden EUMEL gemeldet. - Beide Kanäle besitzen einen Ausgabepuffer von jeweils 2KB. #ub#3.4 CIO-Drucker (Kanal 4)#ue# - Der Drucker wird mit Strobe/-ACK - Protokoll angeschloßen. - Dieser Kanal besitzt einen Ausgabepuffer von 4KB (Interruptgetrieben). - Der Druckerpuffer kann mit 'control (-10, 0, 0, r)' an Kanal 4 gelöscht werden. #ub#3.5 Motherboard-Drucker (Kanal 6)#ue# - Der Drucker wird mit Strobe/-ACK - Protokoll angeschloßen. - Dieser Kanal besitzt einen 4KB Ausgabepuffer (Polling). - Der Druckerpuffer kann mit 'control (-10, 0, 0, r)' an Kanal 6 gelöscht werden. #page# #ub#4. Graphik#ue# #ub#4.1 CTRL#ue# control (-8, flags, linienmuster, r) Setzt verschiedene Graphikmodi. Die Bits im Parameter 'flags' sind folgendermaßen zugeordnet: Bit 0 : 0 = Textmodus einschalten, Graphikmodus ausschalten 1 = Graphikmodus einschalten, Textmodus ausschalten Bit 1 : 0 = Seite 0 als sichtbare Seite wählen 1 = Seite 1 als sichtbare Seite wählen Bit 2 : 0 = Seite 0 als bearbeitete Seite wählen 1 = Seite 1 als bearbeitete Seite wählen Bit 3, 4 : Verknüpfung Patternbit: 0 1 0 OR setzen unverändert 1 NAND löschen unverändert 2 XOR invertieren unverändert 3 COPY löschen setzen Bit 5 : 0 = Der gesamte Bildschirm zeigt die Graphikseite ('full screen') 1 = In den letzten 32 Graphikzeilen erscheint die Textseite ('mixed') Bit 6 : 0 = Das im zweiten Parameter übergebene Wort wird als 16-Bit Linienmuster eingestellt. Modus siehe Bit 3/4. 1 = Das alte (bzw. voreingestellte) Linienmuster wird benutzt Bit 7 : 0 = Als Punkthelligkeit wird 'dunkel' (bzw. Violett) eingestellt 1 = Als Punkthelligkeit word 'hell' (bzw. Gelb) eingestellt Bit 8..11 : 0 = Default-Strichdicke (1) 1..15 = Strichdicke (Es werden 2*s-1 Linien parallel gezeichnet.) Der zweite Parameter enthält das 16-Bit Linienmuster. Dieses wird beim Zeichnen einer Linie zyklisch Bitweise abgetastet. Je nach Status des Bits im Linienmuster wird eine Punktaktion ausgeführt, deren Wirkung in 'flags' mit den Bits 3 und 4 spezifiziert wird. #ub#4.2 MOVE#ue# control (-5, x pos, y pos, r) Setzt den (unsichtbaren) Graphikcursor auf xpos/ypos. Der nächste 'draw' zeichnet eine Linie beginnend bei xpos/ypos. #ub#4.3 DRAW#ue# control (-6, x pos, y pos, r) Zeichnet eine Linie zur angegebenen Position xpos/ypos. Die eingestellten Parameter Helligkeit, Linientyp, Bitverknüpfung und Dicke werden beachtet. Der nächste 'draw' zeichnet eine Linie beginnend bei xpos/ypos. #ub#4.4 TEST#ue# control (-7, x pos, y pos, result) Testet den Status eines bestimmten Pixels. Die Pixelposition wird mit xpos/ypos beschrieben. Als 'result' wird zurückgeliefert: 255, falls xpos/ypos außerhalb des sichtbaren Fensters liegt. Bit 0 = 1: Pixel sichtbar Bit 0 = 0: Pixel unsichtbar Bit 7 = 1: Pixelfarbe ist hell (gelb) Bit 7 = 0: Pixelfarbe ist dunkel (violett) #ub#4.5 CLR#ue# control (-3, seite, muster, r) Füllt die angegebene Seite mit dem angegebenen Muster. Bit 7 des Musters bestimmt die Farbe (0 = dunkel, 1 = hell). Das Muster wird zyklisch Spalten- und Zeilenweise wiederholt. muster=128 löscht z.B. die Graphikseite. #ub#4.6 FILL#ue# control (-4, muster nummer, 0, return) Füllt eine beliebig durchgehend begrenzte Fläche mit dem angegebenen Mu- ster. Das Muster ist eine 8 x 8 Matrix, die sich auf allen (pos MOD 8)-Pixel- adressen wiederholt. Im NAND-Modus wird mit dem inversen Muster gefüllt. Die Fläche muß dann aber mit unsichtbaren Pixeln begrenzt werden. Folgende Muster sind möglich: 0 = 'solid' (alles gefüllt) 1 = 'lrs2' (jeder zweite Punkt, Zeilenweise versetzt) 2 = 'row4' (jede 4. Zeile wird gefüllt) 3 = 'row2' (jede 2. Zeile wird gefüllt) 4 = 'col4' (jede 4. Spalte wird gefüllt) 5 = 'col2' (jede 2. Spalte wird gefüllt) 6 = 'grid4' (jede 4. Spalte/Zeile wird gefüllt) 7 = 'grid2' (jede 2. Spalte/Zeile wird gefüllt) 8 = 'ls4' (Schraffur links unten --> rechts oben, jede 4.) 9 = 'rs4' (Schraffur rechts unten --> links oben, jede 4.) 10 = 'lrs4' (Schräges Gitter wie 8 und 9 zusammen) 11 = 'point2'(In jeder 2. Zeile jeder 2. Punkt) 12 = 'wall4' (Mauer, ein Ziegelstein 4 Pixel hoch) 13 = 'basket'(Korb/Netz) 14 = 'wave4' (Wellenlinie 4 Pixel hoch) 15 = 'wave8' (Wellenlinie 8 Pixel hoch) Falls die zu füllende Fläche zu komplex wird, kann es vorkommen, daß der interne Stack überläuft. In diesem Fall wird nicht die gesamte Fläche ge- füllt. #ub#4.7 TRANS#ue# control (-9, from page, to page, r) Kopiert den Inhalt der Graphikseite 'from page' in die Seite 'to page'. Folgende Seitennummern sind möglich: 0 : Seite 0 kann mit 'visible page (0)' angezeigt werden 1 : Seite 1 kann mit 'visible page (1)' angezeigt werden 2 : Seite 2 kann nicht sichtbar werden (Hilfsspeicher-Seite) 3 : Ähnlich Seite 2, wird aber bei 'FILL' noch als Arbeitsseite benutzt (wird dann überschrieben!) #page# #ub#5. Hardware#ue# #ub#5.1 Zugriff auf die Hardware-Uhr#ue# Mit 'TEXT PROC calendar (INT CONST feld)' kann in Söhnen von SYSUR die Hardware-Uhr gelesen werden. Für 'feld' sind folgende Werte zugeordnet: 0 Sekunden (0..59) 1 Minuten (0..59) 2 Stunden (0..23) 3 Tag des Monats (1..31) 4 Monat (1..12) 5 Jahr (87..99) Ist die Uhr richtig gestellt (das ist aus CP/M mit 'date set' möglich), liefert jeder Aufruf von 'calendar' eine Zahl, anderenfalls wird immer 'niltext' geliefert und EUMEL fragt nach dem Systemstart nach dem Datum. Dabei wird die Hardware-Uhr jedoch #ub#nicht#ue# gestellt. In diesem Fall ist der Akku wahrscheinlich entladen (Abhilfe: Rechner eini- ge Stunden laufen lassen) oder die Uhr ist noch nicht gestellt worden (Ab- hilfe: 'date set' im CP/M). In Tasks, die keine Söhne von SYSUR sind, kann die Hardware-Uhr mit TEXT PROC calendar (INT CONST feld) : INT VAR r ; control (10, feld, 0, r) ; text (r DIV 256 * 10 + (r AND 15)) ENDPROC calendar ; abgefragt werden. #ub#5.2 Zugriff auf die Analog-Ports#ue# Die 4 Analog-Ports auf dem Motherboard können mit control (-2, port, 0, r) abgefragt werden. 'port' kann 1..4 sein, in 'r' werden Werte von 1..255 zurückgemeldet. Dieser Wert ist proportional dem Widerstandswert zwischen +5V und Analogeingang. Für Hardwarefreaks : Port Connectorpin ------------------ 1 6 2 10 3 7 4 11 +5V 1 Da der Meßwertaufnehmer ein 'LS123 mit C#d#t#e#=68nF, R#d#t#e#=0.27+R#d#x#e# kOhm ist, gilt: t#d#w#e#=0.45 * R#d#t#e# * C#d#t#e# = (30.6 * R#d#x#e# + 8.262) [us]. t#d#w#e# wird gemessen. (t#d#w#e# = 11 Zyklen * r + 5 Zyklen bei 1.023 MHz) ==> 30.6 * R#d#x#e# + 8.262 = (11 * r + 5) / 1.023 [us] <==> R#d#x#e# = ((11 * r - 5) / 1.023 -8.262) / 30.6 [kOhm] (Damit ist auch klar, warum der Wert 0 nicht geliefert wird.) R#d#x#e# [kOhm] = 0.351 * r + 0.43 r = 2.846 * R#d#x#e# + 1.221 #ub#5.3 Zugriff auf die I/O-Ports#ue# Das Schreiben #ub#und#ue# Lesen der I/O-Ports der CPU ist jetzt nur an privilegier- ten Kanälen (25..32) möglich. control (-1, port, -1, r) kann der angegebene Port 'port' (0..255) gelesen werden. Das Resultat (By- te) steht dann in 'r'. Falls der aufrufende Kanal ungültig war, wird -1 geliefert. Mit control (-1, port, wert, r) kann der angegebene Port 'port' (0..255) beschrieben werden. Der Bytewert steht in 'wert', die Erfolgsmeldung in 'r' (0 = ok). #ub#5.4 ID-Felder#ue# Mit 'INT PROC id (INT CONST feld nr)' können Systemkonstanten abgefragt werden. Für 'feld nr' sind folgende Werte zugeordnet: 0 Minimale Hintergrundversion (175) 1 Urladertyp (1 = Z80) 2 Urladerversion (101 = Version 1.1) 3 Reserviert 4 Lizenznummer des SHards 5 Installationsnummer 6 Reserviert 7 Versionsnummer des SHards: 1000 * Interfaceversion + SHard Version (ent- hält z.Zt. 8105, d.h. Interface 8, Version 1.5) #page# #ub#6. Installation#ue# #ub#6.1 Vortest/Speichertest#ue# Vortest und Speichertest sollten normalerweise durchgeführt werden. (Beide Fragen mit 'j' beantworten). Wird kein Vortest gewünscht, wird automatisch auch kein Speichertest durchgeführt und es besteht keine Möglichkeit, das Hardwaretest-Menue aufzurufen. #ub#6.2 Konsole#ue# Die Blinkperiode des Cursor und die Tonhöhe des Steuercodes ""7"" kann verändert werden (Sekunden bzw. Hertz). Defaults sind 0.8s und 500Hz. #ub#6.3 SCSI-Floppy#ue# Falls nicht SCSI-Floppy #0 sondern, falls vorhanden, SCSI-Floppy #1 als Kanal 31 angesprochen werden soll, wird diese Frage mit 'n' beantwortet. #ub#6.4 Harddisk Volume#ue# Als Kanal 28 kann ein Harddisk-Volume angesprochen werden. Alle verfügbaren Volumes werden angeboten und ein ausgewähltes wird im SHard als Kanal 28 installiert. Achtung: Sollte dieses Volume gelöscht, vergrößert oder ver- schoben werden (durch CP/M) dann weiß SHard noch nichts davon. Deshalb sollte der SHard nach einer solchen Aktion noch einmal installiert werden. Aus Sicherheitsgründen wird empfohlen, ein spezielles Volume einzurichten, über das dann der Datenaustauch CP/M <--> EUMEL läuft. #ub#6.5 Logische Kanäle zuordnen#ue# Als logische Kanäle stehen Kanal 0..31 zur Verfügung, als physiche Kanäle 0..6 und 28..31. Den logischen Kanälen können fast beliebig physische Kanä- le zugeordnet werden. Ausnahmen: - Der log. Kanal 0 (Hintergrund) muß als Blockkanal definiert werden (d.h. die physischen Kanäle 0, 28, 29, 30, 31 können zugeordnet werden.) - Der log. Kanal 1 (Systemkanal) muß als Stream-I/O-Kanal definiert werden (d.h. die physischen Kanäle 1, 2, 3, 5 können zugeordnet werden.) - Der log. Kanal 31 (Archiv) sollte definiert werden, dann aber als Block- kanal (d.h. die physischen Kanäle 0, 28, 29, 30, 31) können zugeorndet werden.) - Nicht jeder physische Kanal muß zugeordnet werden. - Jeder physische Kanal darf höchstens einmal zugeordnet werden. Hinweis: EUMEL verwaltet Kanal 1..16 als (unprivilegierte) Stream-Kanäle, Kanal 17..24 als unprivilegierte Block-Kanäle, Kanal 25..31 als privillegierte Block-Kanäle. #ub#6.6 Installation auf Harddisk#ue# Wie früher kann der SHard auf einem Harddisk-Volume installiert werden. Dazu werden alle vorhandenen EUMEL-Volumes angeboten und das gewünschte ausgesucht. Falls kein EUMEL-Volume (mehr) vorhanden ist, werden alle ande- ren Volumes angeboten. Dadurch ist es möglich ein neues EUMEL-Volume einzu- richten (mit 'dmgr' unter CP/M). Der SHard belegt 2 Tracks (16k) auf der Harddisk. #ub#6.7 Installation auf Floppy#ue# Um ganz auf eine Harddisk verzichten zu können oder falls der Harddisk- SHard zerstört wurde, kann EUMEL jetzt auch über eine Boot-Diskette hochge- fahren werden. Eine Bootdiskette (160k oder 640k) enthält auf den ersten 4 Tracks den SHard, kann deshalb nicht mehr als CP/M-Datendiskette verwendet werden. Die Floppy kann mit dem Installationsprogramm bootfähig gemacht werden.