You are on page 1of 65
vortex BOS 2.0 Benutzerhandbuch comPpUTE RS YS TEME oeenenete eeseeeee eeeenees seneeeee +" a ott ane oe or oe ord +e 88 ae owe Prd +” MF wee nee aenesere ae +9 senesees oee8 ” +e #8 ” * a8 Prd we ord red “ ” wo aon Pe Pid eeneseees eeeenens wensenes segeeueres ae BENUTZERHANDBUCH Rev. 1 / 10.11.1986 1. Auflage (€)1986 vortex Computersy: Falteratrafe 51-53 D-7101 Flein bei Heilbronn © GmbH Tv 2 07131/52061 FeseH: ae ” ee # 48 re 88 ee eee eeeee: 88 ee on eae Prd a +” “7 eee DAS INHALTSVERZEICHNIS Vorwort ...e..eee Seite 1 Einbau des Eproms .....2-+--200+- dee lecden facta acpoateeng-o/e-eeataey-ote-e Seite 2 Die Ramdisk unter Basic .. Seite 4 FORMAT .... tee eeee Seite 4 MD .eeeeeee Seite 5 DIR... . Seite 7 REN . . . Seite & ERA . : le : : Seite 8 DRIVE . . seen Seite 9 USER .... eee Seite 9 SELECT + . . . Seite 10 RESET . stale alestoae Seite 10 ATTRIBUT .....- a Seite 11 Relative und sequentielle Dateiverwaltung Seite 13 FILES . eee eeee oe oe as Seite 16 OPEN .....eeeeeeee Seite 17 FIELD ..... Seite 18 GET «1.2066 Seite 18 PUT ....-.- Seite 19 CLOSE - Seite 20 Das ervweiterte Basic des Seite 24 CONFIG Seite 24 ID .sssee Seite 25 SPOOL.ON .. Seite 26 SPOOL. OFF. . Seite 27 SPOOL. CONT Seite 27 PEEK .. Seite 27 LPEEK ..... 28 POKE .. Seite 29 LPOKE . Seite 29 CALL .. Seite 29 LCALL . Seite 30 BOS ... : Seite 30 BANK .... eee . Seite 32 LIST ..ee.eeeeeee vee. Seite 33 DEV cece eee eee . Seite 34 GOTO .. oe sees Seite 34 GOSUB . tere eee . Seite 35 RETURN ...---0005 Seite 36 SAVE wee ececeee Seite 37 LOAD ....- eee Seite 37 RUN «4.2455 eee Seite 38 COMMON ... Seite 39 NEW . : Seite 40 VIDEO.ON ........- Seite 41 SCREENS .. . Seite 41 SCREEN. OUT : Seite 42 SCREEN. IN : Seite 42 FORWARD .. : Seite 43 BACKWARD . . Seite 43 SCR. BASE . Seite 44 RAMOPEN .... RAMFIELD ... RAMWRITE ... RAMREAD ...... RAMCLOSE ..... RECORDS ...... Der ROM-residente Monitor XM .. Weiter niitzliche RSX-Befehle .. FAST oe. eee eee eee eee FRAME GCHAR GPAPER .. GPEN ........-.- MASK ... UNMASK .. SLOW .... ROMOFF . DISBOS . ROMCAT . Flr versierte Assembler-Programmierer ........ Referenzkarte der BOS 2.0-RSX-Befehle ..........5 Seite Seite Seite Seite Seite Seite Seite Seite Seite Seite Seite Seite Seite Seite Seite Seite Seite Seite Seite Seite Seite 44 45 45 46 46 46 a7 53 53 83 54 54 s4 55 55 55 55 56 56 87 s9 Benutzerhandbuch vortex BOS 2.0 (©1986 vortex GmbH BOS 2.0 - DAS NEUE BETRIEBSSYTEM DER VORTEX SPEICHERERWEITERUNG Jetzt haben Sie es in den H&nden, das neue BOS 2.0. Fir viele Besitzer der vortex-Speichererweiterung zum CPC 664 ist es das erste Basic-Betriebssystem flr ihre bislang nur unter CP/M nutzbare Speichererveiterung, und fr noch mehr Anvender der Speicherkarte am CPC 464 ist es eine wesentliche Erveiterung der MSglichkeiten, von der Sie bislang nur zu hoffen wagten. Endlich kann man aus der Original-Konfiguration den Speicher der Erweiterungskarte sofort nutzen, ohne eine spezielle Initialisie- rung aufzurufen, nach der in der Originalbank nur noch 32 KB Speicher Ubrig sind. Der Drucker-Spooler, Peek- und Poke-Befehle sind sofort nutzbar. Was aber das Wesentlichste ist: die unter CP/M bekannte Ramdisk ist nun auch unter Basic verfigber. Und zwar mit den kompletten Vorteilen des VDOS-Betriebssystens. Trotz allem ist die Miglichkeit der Erveiterung des Programm gpeichers nicht unter den Tisch gefallen: Sie kinnen veiterhin zusStzliche Basic-Programmbinke instellieren, es gibt aber nicht mehr ein ‘Alles oder Nichts". Bisleng konnte man unter BOS 1.0 nur die maximal mlgliche Anzehl an 2usitzlichen Basic-Banken einbinden. Dies ktnnen Sie jetzt zwar auch noch, aber wenn Sie beispielsweise bei der SP512 keine 8 sondern nur 3 zusitzliche Basic-Banke ben&tigen, so ist das problemlos miglich. Dies ist sehr vorteiiheft, denn der Rest der Speichererveiterung verbleibt dann vweiterhin fir Remdisk und Drucker-Spooler. Apropos Verbleiben: der Speicher ist frei zwischen Basic, Ren- disk, Ramdatei, Videospeicher und Drucker-Spooler aufteilbar. Wenn Sie also einen 512 KB grofien Drucker-Spooler benttigen, #0 ist dies einfachst durch Sie zu initialisieren. Und ale letzte Neuerung: der Video-Mode wurde stark verbessert. Insgesamt kann man nun bis zu 32 Bilder in Speicherervei- terung ablegen und mit zvei neuen Befehlen wesentlich schneller sichtber machen. Eine Bildlade-Frequenz von circa 10 Bildern pro Sekunde ist nun wmiglich, vas sogar bei einer entprechenden Bildfolge eine fliefende Bewegung ergibt. Aber genug der Vorrede. Es kribbelt Sie garantiert schon in den Fingern, alle diese neuen Miglichkeiten auazuprobieren. Deshalb n&chte ich Ihnen auch sofort beschreiben, vie Sie den neuen Eprom in Ihre Speichererveiterung einsetzen. Seite 1 Benutzerhandbuch vortex BOS 2.0 (C)1986 vortex GmbH DER EINBAU DES EPROMS IN DIE SPEICHERERWEITERUNG 1. Schalten Sie s&mtliche Ger&te Ihres Computersystems ab und stecken sie s&mtliche an Ihre CPC-Konsole angeschlossene Peripherie und Kabel ab, damit Sie die Konsole frei bewegen k8nnen. 2. Legen Sie die Konsole mit der Oberseite nach unten auf eine veiche Unterlage und 18sen Sie mit einem Kreuzschraubenzieher die gechs (beim CPC 664 sieben) Kreuzschravben, die das Bodenteil mit dem Oberteil verbinden. 3. Drehen Sie die Konsole jetzt vorsichtig um. Dabei werden die gel§sten Schrauben herausfallen. Sammeln Sie die Schrauben ein und legen Sie sie beiseite. Die Konsole sollte jetzt so vor Ihnen liegen, wie sie auch im Betrieb vor Ihnen liegt. 4, Beim CPC 464 klappen Sie jetzt das Oberteil vorsichtig nach vorne veg, beim CPC 664 nach links. Sie sehen jetzt in beiden F&llen die CPC-Grundplatine mit eingebauter Speichererveiterunga- platine. 5S. Wenn Sie jetzt auf die Bestickungsseite der Speicherer weiterung schauen, sehen Sie an der linken Seite der Platine zvei IC- oder Sockelreihen mit je acht 16-fUBigen ICe oder Sockel. Dies sind die beiden Speicherb&nke. Direkt daneben ist eine 28- polige Faseung, die beim CPC 664 leer ist und in der beim CPC 464 das Eprom mit dem BOS 1.0 steckt. 6. Wenn Sie vor einem CPC 664 sitzen, dann lesen Sie doch bei Punkt 7 weiter, denn an dieser Stelle missen die CPC 464-Besitzer Ihren BOS 1.0-Eprom aus dem Sockel holen. Das geht eigentlich recht einfech: Nehmen Sie einen kleinen Geradschlitzschrauben- zieher und hebeln Sie mit diesem den Eprom langeam und vorsichtig aus seiner Fassung. Am besten wechseln Sie zvischen den beiden Seiten sogar ab. 7. Nun nehmen Sie den neuen BOS 2.0-Eprom zur Hand und stecken Inn in diese Fassung. Sie milssen dabei beachten, daf Sie ihn "richtigherum" einstecken. Der Eprom hat n&mlich eine kleine Kerbe, die zu Ihnen, also in Richtung Platinenmitte zeigen mu8. Wenn Sie kein FiSchen des Eproms verbogen haben, ist der gréfte Teil der Arbeit schon getan. @. Achten Sie darauf, daS die Schutzfolie richtig zwischen der Speichererveiterung und der Grundplatine liegt. Dann kinnen Sie das Ger&t jetzt vieder zuschrauben. 9. Nechdem Sie Ihre komplette Peripherie wieder angeachlossen und das System wieder eingeschaltet haben, mus die Einschaltmeldung des BOS 2.0 erscheinen. Diese sieht so aus (bei der SP512): BOS 2.0 SP512 (C)1986 vortex GmbH Seite 2 Benutzerhandbuch vortex BOS 2.0 (€)1986 vortex GmbH Ihr BOS 2.0 ist damit betriebsbereit und Sie k&nnen mit der Erklarung des neuen Betriebssystems veitermachen. Sollte die Einschaltmeldung nicht kommen, 0 iiberpriifen Sie bitte, ob Sie den Eprom richtig gesteckt haben und ob der Clip der Speicherer- weiterung richtig angebracht ist (siehe Einbauanleitung der Speichererveiterung). Bei der Befehlsbeschreibung sind zwei Dinge zu beachten: - alle Befehle werden in einem Kustchen vor ihrer edigentlichen Beschreibung kurz in Ihrer Syntax und Funktion definiert. Bei der Syntax-Definition kenn es nun sein, dafi ein oder mehrere Parameter mit zwei Schragstrichen ("/Parameter/") eingerahmt sind. Solch ein Parameter muf nicht zvingend Obergeben werden, darf aber vom Benutzer optional benutzt werden. - wird als Parameter eine Zeichenkette verlangt, so kann dies eine direkte Eingabe zwischen zwei Anfthrungszeichen oder aber eine aliphanumerische Variable sein. Wenn Sie in einem solchen Fall Sie die Zeichenkette in einer alphanumeriachen Variablen stehen haben, muf die Adresse dieses Strings Ubergeben verden. Das sieht dann beispielsweise so au: aS="teat" tera, @aé Dieselbe Funktion hat dann, wie gerade beschrieben, der Befehl lera, "test" Seite 3 Benutzerhandbuch vortex BOS 2.0 (€)1986 vortex GmbH DIE RAMDISK UNTER BASIC Wenn Sie eine Diskettenstation besitzen, werden Sie als Benutzter der vortex Speichererweiterung die Ramdisk unter CP/M sicherlich kennen. Sie steht Ihnen ab sofort auch unter Basic zur Verfilgung. Stimtliche RSX-Befehle von VDOS und AMSDOS wirken nun auch auf dieses Laufverk. Sie missen dabei allerdings beachten, daf diese erst ab der SP128 sofort verfigbar ist. Dies liegt an der Kompatibilitét zu der Ramdisk unter CP/M. Daher haben Sie bei einer dieser Erweiterungen beim Einschaiten eine Ramdisk mit derselben Grtfie wie unter CP/M. Wie Sie die Ramdisk vergrifern kinnen wird bei der Erklarung des Befehls 1BOS heschrieben. Wenn Sie eine SP64 besitzen, so geben Sie jetzt bitte folgenden Befehl ein: Ibos, 0,0, 2 Damit steht auch dem SP64-Resitzer eine Ramdisk zur Verfigung. Die Befehlesequenz, die Sie in diesem Falle gerade eingegeben haben, wird spiter erkl&rt werden. Nach dem Ejinschalten des Systems ist die Ramdisk nicht formatiert, d.h. sie ist nicht gebrauchsfertig. Sie kann unter Basic erat benutzt werden, wenn Sie unter CP/M automatiach beim Booten oder einmal durch des Programm RAMDISK.COM formatiert wurde. Es geht aber euch vesentlich einfacher, n&mlich mit dem Befehl ARR R AER E RHEE E EEE R EERE ER EOE ER EER ROSE EES EREEREE ERR ORE EEE R EEE ER Aufruf: |FORMAT Funktion: Formatieren der Ramdisk. ACHTUNG: SANTLICHE DATEN AUF DER RAMDISK GEHEN VERLOREN Pewee nee Geben Sie doch einfach diesen Befehl ein. Es kommt sofort die Rickfrage “Ramdisk formatieren J/N ?", um ein versehentliches Formatieren der Ramdisk (und einen damit verbundenen Datenver- lust) zu vermeiden. Wenn Sie N drilcken, kehren Sie ohne irgendwelche Folgen ins Basic zuriick, drilcken Sie allerdings J, s0 wird die Ramdisk formatiert. Der erfolgreiche Formatiervorgang wird Ihnen mit der Meldung “"Ramdisk formatiert" nochmele bestatigt. Seite 4 Benutzerhandbuch vortex BOS 2.0 (€)1986 vortex GmbH Die Ramdisk ist nun also formatiert und gebrauchsfertig. Aber wie benutzt man Sie nun? Ganz einfach: genauso wie Sie bei VDOS oder AMSDOS mit RSX-Befehlen A und B zwischen den beiden Disketten- laufwerken hin- und herschalten kinnen, gibt es nun einen RSX- Befehl zum Einblenden der Ramdisk als ektives Laufwerk. Dies ist der Befehl * * . Aufruf: IMD * . * . Funktion: Einblenden der Ramdisk als Default-Laufverk. * Die normalen Basic-Befehle zum Abspeichern, Laden und Katelogisieren, sovie die RSX-Befehle dee DOS beziehen sich nun auf die Ramdisk. Aktivieren Sie doch mit IMD Ihre Ramdisk und verlangen Sie mit CAT eine Auflistung aller vorhandener Dateien. Als Ausgabe werden Sie diese Bildschirw- Meldung erhalten: Laufwerk M: User 0 OK in 0 Files, 444K frei Beachten Sie dabei bitte, dafi sich diese und des weiteren als Beispiele aufgefihrte Meldungen immer auf eine eingebaute SP512 beziehen. Sollten Sie eine kleinere Erweiterung haben, so ist die im obigen Beispiel aufgefihrte freie Kapazitét Ihrer Ramdisk natOrlich kleiner. Die Ramdiek ist also das Laufwerk M - der Befehl zum Umschalten heift allerdings IMD und vieso nicht IM ? Ganz einfach: wir wollten Konflikte mit anderen Erveiterungen vermeiden, denn e1 gibt schon ROMs, die ebenfalls den Befehl IM haben. Dies sind beispielsveise das VDOS 2.0 der S- und D-Stationen unseres Hav (Aufruf des Monitosr) und MAMAM von Arnor (Aufruf des Assembler: MD ist im BOS 2.0 die Abkirzung fOr "Memory Drive". Jetzt wissen vir also, daf noch sehr viel Platz auf der Ramdisk frei ist. Daher verden vir els néchstes ein kleines Basic- Programm abspeichern. Geben Sie doch einfach den "Einzeiler" 10 print "Dies ist ein Test":goto 10 ein und speichern Sie dieses kleine Programs mit gave"test auf der Ramdisk ab. Denach zerst&ren Sie di Programm mit new Seite 5 Benutzerhandbuch vortex BOS 2.0 (©)1986 vortex GmbH im Basic-Speicher. Es dfirfte nun nicht mehr vorhanden sein, vas Sie mit list Uberprifen kunnen. Dafir wmiifte es jetzt doch auf der Randisk sein! Also schnell mit cat nachscheuen und siehe da, es kommt folgende Ausgabé Laufverk M: User 0 TEST -BAS 1K 2K in 1 Files, 442 K frei Man sollte es nun doch auch einfach wieder in den Basic-Speicher laden kinnen, oder? Richtig - geben Sie einfach nur load"test list ein und das Programa wird Ihnen in seiner vollen Lange von einer Zeile auegegeben. Selbstverst&ndlich kinnen Sie auch ein Programm von der Ramdisk aus direkt starten. Dazu milsen Sie nur run"test eingeben und das kleine Teatprogramm wird von der Ramdisk geladen und sofort gestertet. Wie in Ihrem Benutzerhandbuch zum CPC beschrieben, k&nnen Sie genauso einfach und problemlos die BASIC-Befehle OPENIN, OPENOUT, CLOSEIN, CLOSEOUT, PRINT #9 und INPUT #9 verwenden. Das Abepeichern und Laden von Bin&r- und ASCII-Dateien, gowie daa "mergen" von Programmen ist selbstverstindlich auch miglich. ZusStzlich zu diesen Basic-Befehlen gibt es noch eine Vielzahl von RSX-Befehlen, welche die gleiche Syntax der entsprechenden RSX-Befehle aus VDOS oder AMSDOS haben. Diese wollen wir nun der Reihe nach durchgehen. Der erste Befehl dieser DOS-Befehle ist 6 Benutzerhandbuch vortex BOS 2.0 (€)1986 vortex GmbH Aufruf: IDIR /,Befehlsstring/ . . * . . Funktion: Ausgabe des Diskettenkataloges oder Teilen * . davon. . * * RRR N ERO eRe E EEE EERO REESE EEE EERE REEL E EER OEE EERE EERE E EERE LER In seiner einfachsten Form entspricht der DIR-Befehl dem CAT- Befehl. Nach Eingabe von idir erhalten Sie die von vorher bekannte Auflistung d auf de Ramdisk vorhandenen Dateien. Sie kénnen im Gegensatz zum CAT- Befehl bei diesem Befehl die Katalog-Ausgabe noch spezifizieren. Geben Sie heispielsveise Idir,"*,bas* ein, so verden Ihnen nur die Dateien mit der Extension BAS, d.h. alle Basic-Programme aufgelistet. Das Zeichen * im obigen Bei- spiel hat einen spezielien Namen: WILDCARD. AuSer dem * gibt es noch ein weiteres Wildcard-Zeichen, das Fragezeichen. Wirde man statt dem Stern im obigen Beispiel ein Fragezeichen einfilgen, das heist dir, "?.bas" eingeben, so wiirden alle Dateien auagegeben verden, deren N nur ein Zeichen lang sind und welche die Extension BAS haben. In der bisleng von uns vervendeten Form greift der DIR-Befehl immer auf das Defeult-Laufwerk zu, und dies ist ja zur Zeit die Ramdisk. Sie k8nnen allerdings auch von einem anderen Leufverk das Inheltsverzeichnis ausgeben lassen, ohne zuvor auf dieses umzuschalten. Das geht mit der Befehlssequenz Idir, "e:test.«" die Ihnen alle Dateien mit dem Namen TEST vom Laufverk A auflisten wirde. Was k&nnte man nun mit der immer noch vorhandenen Datei TEST. BAS noch machen? Wir kinnten uns zum Beispiel sagen, da® uns der Name der Datei nicht mehr gefSlit. Algo volien wir die Datei umbenennen. Mit dem nichsten Befehl ist die ganz einfach. Seite 7 Benutzerhandbuch vortex BOS 2.0 (©1986 vortex GmbH . Aufruf: |REN, "neuer Name","alter Name” * . Funktion: die Datei "alter Name" wird in "neuer Name” * . umbenannt. - Wir wollen der Datei jetzt einfach den Namen NEUTEST. BAS zuveisen. Dazu mu8 der REN-Befehl wie folgt angewendet werden: lren, "neutest. bas", "test.bas"” Wenn wir une jetzt dae Inhalteverzeichnis der Ramdisk mit dem Befehl CAT anschaven, so gibt es immer noch eine Datei, die jetzt aber NEUTEST.BAS heift. Es ist unsere ehemalige Datei TEST.BAS - oder glauben Sie es nicht? Dann laden Sie die Datei mit load*neutest in den Basic-Speicher und schauen Sie es sich mit LIST an. So, nun wollen Sie die von uns angelegte Datei NEUTEST. BAS ververfen, da di sovieso nur ein Beispiel ist und nichts anderes bringt, ale wertvollen Speicherpletz auf der Ramdisk zu verschlingen. Aber wie l8scht man diese Datei nur ?!? Keine Angst, es geht - denn es gibt den Befehl PER ERR EERE REDON ORE R ERE ERE ER EH ORERE EOE ER SORES ER EEE ERODES EEE R ERS Aufruf: |ERA,"Befehlastring" Funktion: Luechen einer oder mehrerer Dateien. aeeae * Wollen wir jetzt die Beispiel-Detei ltschen, so missen vir nur lera, "neutest. bas" eingeben und die Dated ist nicht mehr vorhanden, ves Sie mit einem Aufruf des CAT-Befehls tberprifen kinnen. Der ERA-Befehl arbeitet genauso wie der DIR-Befehl mit Wildcards, d.h. Sie kinnen beispielsveise lera,"*.«" eingeben, vas zur Folge hatte, daf alle Dateien auf dem derzeit aktiven Laufwerk gelischt verden. Gerade lera,"*.* kann aber auch fatale Folgen haben, wenn Sie ihn versehentlich anvenden. Gehen Sie daher vorsichtig mit diesem Befehl um! Seite 8 Benutzerhandbuch vortex BOS 2.0 (C1986 vortex GmbH Bei der Ausgabe des Inhaltsverzeichnisses mit dem Befehl CAT oder DIR ist Ihnen sicherlich die Zeile "Laufwerk M: User 0" aufgefal- len. Es gibt im DOS also zvei Unterteilungen, “Laufverk" und "User", die man anv&hlen kann. Wie weiter oben besprochen, 18A8t sich das Laufverk mit den Befehlen 1A, 1B und IMD umschalten. Es gibt allerdings noch eine weitere Méglichkeit: Aufruf: !DRIVE, "Laufwerkskennung" werk * * * * * Funktion: programmierbares Wechseln des aktiven Lauf- * * * An eaneneeeneneneenenarenenes Durch Eingabe von Idrive, "a" kénnen wir einfach auf das Leufverk A umachalten. Da statt des direkt eingegebenen Strings auch eine Stringvariable tbergeben werden kann, ist es ein Einfaches das Laufwerk in einem Programm frei zu wechseln. Soich ein kleines Beispielprogramm wire: 10 input "welch 20 Idrive, @1¢ 30 cat 40 goto 10 Laufverk *,16 Es frégt Sie immer nech einer Laufverksnummer, wihit diese dann mit IDRIVE an und zeigt Ihnen das Inhaltsverzeichnis dieses Laufverkes. Jetzt ist noch der Begriff USER zu erkl#ren. Aber das tun wir am besten mit dem dazugehdrigen Befehl: Aenenenenenenereneesenenees ARORA RRR EERE ROR ER ERE ENeR EER TORRES Aufruf: |USER, Integer-Wert * Funktion: Anvuhlen eines Benutzerbereiches. . * . * * ARR n eRe R RM ER eE Ee ROR ENTER EEE ROSE: neeeeee Jedes Laufwerk 18A8t sich unter BOS 2.0, VDOS und AMSDOS in 16 Benutzerbereiche - die sogenannten Userbereiche - unterteilen. Dies macht vor allem dann einen Sinn, wenn mehrere Anvender die gleiche Diskette benutzen, oder wenn Sie als einzelner Anvwender in verschiedenen Bereichen verschiedene Anwendungsprogramme haben wollen. Wenn Sie beispielsveise im Userbereich 4 alle CP/M- Programme abgespeichert haben, so verden dieze nur dann beim Auflisten dee Inhaltsverzeichnises angezeigt, wenn Sie zuvor den Userbereich 4 angewShlt haben. Dies geschieht einfach mit Seite 9 Benutzerhandbuch vortex BOS 2.0 (©1986 vortex GmbH luser, 4 Ein nachfolgender CAT-Befehl viirde so aussehen: Laufverk M: User 4 OK in 0 Files, 442K frei Als Zusammenfassung der beiden Befehle DRIVE und USER, die im AMSDOS verwendet werden, gibt es noch den Befehl RRR Rene RRR ROE Ree HORDE RE EERO ERE EER ERESEREHOROROE REL ERO R TREE EERE * Aufruf: |SELECT, Befehlestring * . Funktion: Laufwerk und/oder Userbereich anvithlen . RRR ROHR HERRERA ERE RRR ERE TOES E TEER TEER EER EERO EEE ERO REE E ORES ERED Nit ihm kSnnen Sie auf einfache Art Benutzerbereiche und Lauf- verke anwihlen. Dazu zvei Beispiele: Iselect, "6" scheltet auf den Userbereich 6 des derzeitigen Laufwerkes um. Soliten Sie gleichzeitig noch ein anderes Laufverk anv&hlen vollen, so athe die Befehlssequenz so aus: Iselect, "BG" Damit h&tten Sie gleichzeitig euf das Laufverk B umgeschaltet und den Userbereich 6 angewShlt. Jetzt gibt es noch zwei speziellere Befehle, die folgende Bedeutung heben: * Aufruf: |RESET . * Funktion: Schliefien aller derzeit offenen Dateien. * Wollen Sie sicher sein, daf@ alle Dateien geschiossen sind, brauchen Sie nur den Befehl lreget eingeben. Er schlie#t Ihnen automatisch alle eventuell noch offenen Dateien. Dies ist vor allem sinnvoll, wenn man bei einem Diskettenlaufverk Disketten wechseln michte, ohne versehentlich Dateien offen zu lassen. Seite 10 Benutzerhandbuch vortex BOS 2.0 (C)1986 vortex GmbH Aufruf: |ATTRIBUT, Dateiname, Dateiattribut Funktion: Einer Datei bestimmte Zustinde zuordnen. eaeee * ORO R ORR R RRR R ER HOE EAR ERE REE EERE OEE E ERE SESE S ER ESET REO RE EERE REESE Mit dem ATTRIBUT-Befehl hahen Sie die Miglichkeit, einer Datei bestimmte Merkmale zuzuordnen. Dabei gibt es vier verschiedene Merkmale. Diese sind: S - Die Dated ist eine sogenannte "SYS*- oder "System"-Datei. Sie wird beim Auflisten des Inhelteverzeichniases mittels der Befehle CAT und IDIR nicht mehr angezeigt, sie ist also "unsichtbar". D - Die Dated ist eine sogenannte "DIR*- oder "Directory*-Datei. D.h. sie wird bei der Auflistung des Inhalteverzeichni angezeigt. Dies ist der Normalzustand nach dem Erstelien einer Datei. W - Die Datei ist R/W (read/write). D.h. schreib/lesbar. Sie kann auch gel&scht verden. Dies ist ebenfalls der Default-Zustand nach dem ersatmaligen Eratellen einer Datei. R - Die Datei ist R/O (read only). D.h. nur lesber und damit schreibgeschitzt. Sie kenn also auch nicht geltscht oder umbenannt werden. Ale Beispiel vollen wir eine Datei schreibschitzen. Dezu aissen vir allerdinge zuerst vieder eine Datei auf der Ramdisk haben. Also geben Sie folgende Befehlssequenz ein: 10 rem test Igelect, "m0" ve"test cat Lauverk M: User 0 TEST .BAS ik 2k in 1 Files, 442K frei Auf der Ramdisk befindet sich nun wieder ein kleines Basic- programm, des sich vie veiter oben beschrieben wieder laden, umbennen und l8schen 148t. Das Schreibschitzen der Datei geht nun go: lattribut, "test. bas", *r* Listen Sie das Inhaltsverzeichnis mit cat Seite 11 Benutzerhandbuch vortex BOS 2.0 (©)1986 vortex GmbH auf, so erhalten Sie diese Ausgabe: Laufwerk M: User 0 TEST + BAS ike 2K in 1 Files, 442K frei Wie Ihnen sicherlich sofort auffdllt, wurde hinter der Ausgabe der Dateildnge ein "#" ausgegeben. Dies bedeutet, dai diese Datei schreibgeschitzt (R/O) ist. Ein einfaches (oder versehentliches) Léschen dieser Datei ist nun nicht mehr miglich. Wenn Sie es mit lera, "test.bas versuchen, so meldet Ihnen das Betriebssyst. TEST .BAS nur lesber und lSscht die Datei nicht, was Sie mit einem erneuten Auflisten dee Inhalteverzeichnisses iberpriifen kinnen. Erst nach Eingabe von lattribut, "test. bas", "wv" kSnnen Sie die Datei wieder 1l8schen. Seite 12 Benutzerhandbuch vortex BOS 2.0 (€)1986 vortex GmbH RELATIVE UND SEQUENTIELLE DATEIVERWALTUNG Bislang hatten wir nur immer Uber Dateien gesprochen, deren Inhalt ein Programm darstelite (Programn-Dateien). Stellen Sie sich vor, Sie mBchten ein kleines Adressvervaltungs- programm in BASIC schreiben mit dem Sie die Adressen (Nene, Anschrift usv.) Ihrer Bekannten bearbeiten ktnnen, d.h. eingeben, &ndern und suchen kinnen. Das setzt aber voraus, daf Sie diese "Daten" permanent speichern kSnnen (euf Diskette oder Cassette). Sie missen Ihr Programm also derart konstruieren, daf es eine Adresa-Datei anlegt, in der elle Adressen stehen. Diese Dated ware also eine reine Daten-Datei, ihr Inhalt vére kein ausfihrberes Programn. Sie haben jetzt zwei sogenannte "Kan@le" (Ein- und Ausgabekanal) Uber die Sie Daten zum Rekorder, oder auch zum eventuell vorhan- denen Laufverk schicken und von dort auch empfangen kinnen (die Englischen Fachbegriffe sind hierftr INPUT-Stream und QUTPUT- Stream). D.h. Sie k8nnen gleichzeitig immer nur eine Dated zum Schreiben und eine Datei zum Lesen "gedffnet" haben. Bevor Sie auf eine Datei "zugreifen* kinnen, mu8 diese erst "geSffnet” werden. Wenn Sie die Datei im Moment nicht mehr brauchen, mu8 sie wieder geschlossen verden. Eg geht also nicht, dafi Sie gleichzeitig zvei Dateien zum Schreiben &ffnen, oder gleichzeitig zwei Dateien zum Lesen Sffnen. Dies ist natirlich eine gewisse Einschrankung, mit der in aber leben kann. Ein weitaus grdferer Nachteil ist es, da& der Inhelt dieser Dateien nur nacheinander gelesen und auch nur nacheinander geschrieben verden kann. Dieses “Nacheinander* kennzeichnet die Art, wie diese Dateien vom Betriebssystem her "verwaltet" werden. Man nennt diese Dateiverwaltung deshalb auch "Sequentielle Datei- vervaltung". Wenn Sie z.B. 1000 Adressen in Ihrer Adresskartei haben und die letzte lesen vollen, dann missen Sie sich erst durch die 999 Adressen davor durchlesen. Das dauert und bringt wenig Effizienz in die ganze Sache. Das Vorhandensein der Sequentiellen Dateiverwaltung ist historisch bedingt. Der erste Schneider (der CPC464) ver nur mit einem Cassettenrecorder ausgeriistet. Es ist eigentlich kler, das eine Dateiverwaltung hier nur sequentiell sein kann, denn das Speichermedium ist hier ein Band. Will man von X nach Y, dann auf das ganze Band dazwischen durchlaufen verden. Dann kamen die 3" Laufwerke. Man hat hier praktisch am Betriebesystem venig gelindert, es wurde "einfach" der Rekorder durch das Leufverk ersetzt. Es blieb bei der Sequentiellen Dateivervaltung, obvohl mit einem Disketten-Laufwerk vesentlich mehr gemacht werden kann. Nachfolgend finden Sie ein kleines Beispiel fur die Sequentielle Dateivervaltung. einer Typische BASIC Befehle, die im Zusammenhang mit dem Li sequentiellen Datei auftauchen, sind Seite 13 Benutzerhandbuch vortex BOS 2.0 (©)1986 vortex GmbH OPENIN EOF INPUT#9: LINE INPUT#9 CLOSEIN Typische BASIC Befehle die im Zusammenhang mit dem Schreiben einer sequentiellen Datei auftauchen sind: OPENOUT PRINT#9 WRITE#9 CLOSEOUT 10 OPENOUT "ZAHLEN. DAT" 20 FOR A=1 TO 100 30 AS=STRS(A) 40 PRINT#9, Ao SO NEXT 60 CLOSEOUT 70 OPENIN "ZAHLEN. DAT" 80 INPUT "Welche Zahl suchen Sie ", ZAHLS 90 INPUT#9, VARS 100 IF ZAHL$=VAR$ THEN GOTO 130 110 Z=Z+1 120 GOTO 90 130 PRINT "Die Zahl steht an der ";Z+. 140 CLOSEIN 150 END ten Position in der Datei* Mit Zeile 10 wird die Dated ZAHLEN.DAT zum Schreiben ge&ffnet, war Sie bisleng noch nicht vorhanden, dann wird Sie jetzt angelegt. Innerhalb der FOR/NEXT Schleife werden die Zahlen 1 bis 100 - umgevandelt in Strings - mit PRINT#9,A® in diese Datei geschrieben. Zeile 60 schlieAt die Datei ordnungsgemas. In 70 vird die Datei vieder zum Lesen getffnet. Wir suchen eine bestimmte Zahl, bzv. deren Position in der Datei ZAHLEN. DAT. Zeile 100 zeigt einen fir sequentielle Dateien typischen Ver- gleich: man mu8 sich durch die Datei "durchvergleichen", bis man den Datensetz gefunden hat, den man eigentlich gesucht hat. So, nun haben Sie allerdings des BOS 2.0 und verfiigen damit euf der Ramdisk ber VDOS-F&higkeiten ! Es beherrecht die gerade beschriebene Sequentielle Dateiver- waltung natirlich auch, Es kenn aber noch wesentlich mehr. Es ermSglicht Ihnen eine "Relative Dateiverwaltung". Eine Relative Dateiverwaltung zeichnet aus, def ein Datensatz an jeder beliebigen Stelle der Datei herausgeholt, oder hineingeschrieben werden kann, ohne jedoch vorher elle Datensitze davor gelesen zu haben. Es kann hier auf jeden Datensatz per Datensetznummer wahlfrei zugegriffen werden, das spart natirlich Zeit und Programmierauf- wand. Auferdem erlaubt Ihnen BOS 2.0 neben den 2 sequentiellen Ken&len noch bis zu 16 (1!) relative Kan&le gleichzeitig zu Sffnen. Damit darfte sich jedes gestellte Problem optimal in ein Programm vervandeln lassen. Relative Dateien bestehen vie die sequentiellen Dateien aus Datens&tzen (auch Rekords genannt). Im Unterschied zu einer gequentiellen Datei, sind aber bei der relativen Datei diese Rekords vollkommen unabhingig voneinander. Seite 14 Benutzerhandbuch vortex BOS 2.0 (€)1986 vortex GmbH Jeder Rekord hat eine Nummer Uber die er selektiert werden kann. Rekords kinnen in beliebiger Reihenfolge gelesen bzw. geschrieben werden. Die Linge eines Datensatzes kann innerhalb gevisser Grenzen frei gewdhlt verden Es wird fir jede gedfinete relative Datei im RAM-Speicher ein bestimmter Bereich reserviert, der sogenannte *Rekordpuffer*. Wird ein Datensatz gelesen bzw. geschrieben, dann gelengt der Datensetz immer Uber diesen Puffer aus der Datei bzw. in die Datei. Es ist klar, da die Grife dieses Puffers von der einmal gewhiten Rekordl&nge abhéngt. Es ist zu beachten, daf bei einer geSffneten relativen Datei die Datensatzlunge nicht Snderbar ist. Ein veiterer Unterschied zwischen beiden ‘Verwaltungsarten" besteht darin, daf bei einer relativen Datei die Datensitze (Rekords) noch strukturiert verden kinnen. Man sagt auch der Rekord kann noch in verschiedene "Felder" unterteilt werden. Men kenn also sagen die Relative Datei besteht aus einer bestimmten Anzahl von Datensitzen, wobei alle Datens&tze noch in eine bestimmte Anzahl von Feldern unterteilt sind. Die Feldaufteilung in einer relativen Datei muf bei allen Datens&tzen dieselbe sein. Jede getffnete relative Datei bendtigt fir ihren Rekordpuffer, fOr Ihren FCB (File Control Block, enthdlt auch die Dateibe- zeichnung der relativen Datei) und etliche interne Zeiger und Zhler Speicher im RAM (alles in allem 90 Bytes + Rekordpuffer pro Kanal). Dieser Speicher wird bei der Definition des Kanals (siehe {FILES Befehl) im oberen Speicherbereich des CPC’s durch dynamisches Herabsetzen des HIMEM’s reserviert. Wurde ein Kanal definiert, so kenn eine relative Datei auf ihm ertffnet verden (siehe |OPEN Befehl). Es ist zu beachten, daf sovohl bei der Kanaldefinition (IFILES), als auch beim Sffnen einer Datei auf diesem Kanal (1O0PEN), Rekordlungen angegeben werden misgen. Dies hat folgenden leicht einsehbaren Grund: Ee ist durchaus miglich auf einem Kanal hintereinander mnehrere Relative Dateien zu tffnen und zu schliefen, ohne das jedesmal eine Kanaldefinition (iFILES) erfolgen mus. Nan gibt nur bei der einmaligen Kanaldefinition die gr8fte zu erwartende Rekordlénge an und 8ffnet dann spiter die einzelnen Dateien (/OPEN) mit ihren jeweile individuellen Rekordlingen. Nechdem eine relative Datei geSffnet wurde (IOPEN), mu8 der Rekordpuffer vor dem ersten Zugriff auf die Datei (IPUT, IGET) strukturiert werden, also in Felder unterteilt werden (IFIELD), d.h. man muf angeben, velche Teile des Rekords beim Zugriff in Variablen eingelesen werden sollen. Jetzt ist die relative Datei fiir Datentibertragung bereit und man kann bis zum Schliefen der Datei (!ICLOSE) wahlfrei (man sagt oft auch zufSllig, deher kommt auch die manchmal gefundene Englische Bezeichnung "Random File") Rekords lesen und schreiben. Es ist zu beachten, de8 ausschlieflich Stringvariablen in Rekords geschrieben und auch wieder auagelesen werden kSnnen. Will man numerische Variablen oder Felder (auch String-Felder) in Relativen Dateien speichern, go mu8 man diese zuerst in Stringvariablen umvendeln, bzw. einer Stringvariablen zuveisen Seite 15 Benutzerhandbuch vortex BOS 2.0 (©1986 vortex GmbH und diese dann abspeichern (siehe BASIC Befehl STRS in Ihrem CPC BASIC Handbuch). Will man z.B. wieder einen numerischen Wert ‘riickgevinnen", so mu8 er nach dem Auslesen aus der Datei, mittels des BASIC Befehls VAL wieder umgewandelt werden. Ein Rekord kann, nachdem die Datei getffnet wurde, durchaus mehrmals neu segmentiert (IFIELD) werden, ohne daf die Datei jedeemal geschlossen und wieder neu getffnet werden milste. Doch nun zu den Befehlen, die den Umgang mit den Relativen Dateien ermiglichen. Aufruf: |FILES, Kanalnummer, Pufferlunge /,.../ . Funktion: Reservieren von Arbeitsspeicher fiir eine oder * . mehrere relative Dateien. . Bevor mit einer Relativen Datei gearbeitet werden kann, mus hierzu ein Kanel und ein Rekordpuffer definiert werden. Das &ffnen einer Relativen Datei ohne vorhergehendes Reservieren eines Puffers fir diese Kanalnummer mit dem IFILES Befehl ergibt die Fehlermeldung: Feld nicht definiert Aus diesem Grunde solite (muf aber nicht 1) der IFILES Befehi am Anfang eines BASIC Progr: stehen und fir alle spiter verwendeten Kanalnummern ein ausreichender Rekordpuffer reserviert verden. Der IFILES Befehl arbeitet mit Zahlen-Doubletten, d.h. zu jeder angegebenen Kenalnummer mu8 eine meximale Rekordlinge mitan- gegeben werden. Die Kenalnummer darf Werte von O bis 127 annehmen (es dirfen insgesamt 16 Kandle gleichzeitig geSfinet sein), die maximale Rekordlaénge kann beliebig gewuhlt werden und ist nur durch den zur Verfilgung stehenden Arbeitsspeicher be- grenzt. Jeder veitere IFILES macht den zuvor erfolgten hinf&llig. Wird nur FILES eingegeben, so verden alle Arbeitsbereiche von Relativen Dateien im RAM gel&scht. Durch die Eingabe von: I FILES, 1, 128, 2,64,12,20 werden ftir Kanal 1 ein 126 Bytes grofer Rekordpuffer, flr Kanal 2 ein 64 Bytes grofer Rekordpuffer und fir Kenal 12 ein 20 Bytes grofer Rekordpuffer reserviert. Es kunnen jetzt auf diesen 3 KanSlen Relative Dateien eriffnet werden. Seite 16 Benutzerhandbuch vortex BOS 2.0 (C1986 vortex GmbH Aufruf: !OPEN, "Dateiname", Rekordlénge, Kanalnummer . Funktion: Sffnen einer Relativen Datei. . * * Mit dem IFILES Befehl haben wir die Voraussetzung dafir geschaffen, daS eine Relative Datei tiberhaupt benutzt verden kann. Der nfichete Schritt ist, da& die relative Datei "getffnet" wird, damit wir Daten in sie schreiben, oder Daten aus ihr lesen k&nnen. Dazu dient der |OPEN Befehl. IFILES, 3, 300 JOPEN, "DATEI. REL", 145, 3 Schaven wir uns den Befehl |OPEN einmal genauer en. Offensicht- lich wird hier eine Relative Dated namene DATEI.REL gedffnet. Ist sie bereits auf der Diskette vorhanden, denn vird sie einfach getffnet, existiert sie noch gar nicht, dann wird sie ersteinmal gelegt und dann gebffnet. "145" ist die aktuelle Rekordlinge, die kleiner gleich der maximalen Rekordlinge (im IFILES auf 300, eingestelit) sein mus. Getffnet wird die Dated auf Kanal 3, auf dem zu diesem Zeitpunkt keine veitere Datei geSffnet sein dart. Noch einmal: auf ein und demselben Kanal darf gleichzeitig nur eine Datei geSffnet sein. Brauchen Sie aber weitere Dateien, dann w&hlen Sie einfach eine andere Kanainummer. Wenn Sie eine Datei Sffnen, die bereits offen ist, dann erhalten wir folgende Meldung: Kanal bereits geoeffnet Vergessen Sie einmal den IOPEN Befehl und benutzen Sie denn trotzdem den {PUT oder den IGET Befehl, dann erhalten Sie folgende Meldung: Kanal nicht definiert Seite 17 Benutzerhandbuch vortex BOS 2.0 (€)1986 vortex GmbH Aufruf: |FIELD, Kanalnummer,Lange1 /,Lunge2 /, ... // * Funktion: Strukturieren des Rekordpuffers. * Nachdem eine Relative Datei geéffnet wurde, mu deren Rekord- puffer segmentiert verden, d.h. man muS angeben, wieviele Variablen mit welcher L&nge in einem Rekord der Datei stehen sollen. Man vill in einem Datensatz folgende drei Variablen haben: NAMES mit einer maximalen L&nge von 12 Bytes, ORTS mit einer maximalen L&nge von 20 Bytes und TELS mit einer maximalen Lénge von 15 Bytes. Der IFIELD Befehl flr diese Kombination sieht z. B. wie folgt aus: IFIELD, 4, 12, 20, 15 Die aktuelle Linge des Puffers im IOPEN Befehl mifte also 12+20+15=47 oder gréfer gewesen sein. Diese Segmentierung bezient sich avf den Rekordpuffer des Kenal 4. Im Zusammenhang mit dem IFIELD Befehl k&nnen wir folgende Meldungen erhalten: Feld zu lang Wir haben eine Feldlinge definiert, die die Lange des Rekord- puffers - festgelegt mit IFILES - Oberschreitet. Feld nicht definiert Wir haben in einem IPUT oder IGET Befehl eine Variable angegeben, f0r die im IFIELD Befehl kein Platz vorgesehen ist. Feld nicht segmentiert Wir haben mit |IPUT oder !IGET einen Datensatz schreiben oder lesen wollen, obwohl wir ihn noch gar nicht mit dem iFIELD Befehl in einzelne Felder unterteilt (segmentiert) haben. Prererrreriierirrirrrittrrirititiiitirireiiericcrrrrris rire * Aufruf: IGET,Kenalnummer, Setznummer, @Stringi /,String2 © * Ly ee Sf SENTER> * * * * Funktion: Lesen eines Datensatzes. * * * PePUICrerertrrrertretrrrrrtrirrierrirritriitiiirir iri resririiey Mit dem IGET Befehl liest man den Detensatz mit der angegebenen Nummer aus der Datei auf diesem Kanal in die angegebenen Variablen, die vorher definiert sein missen. Wurden die Variablen nicht definiert, dann erhalten wir die Fehlermeldung: improper argument Seite 18 nutzerhandbuch vortex BOS 2.0 (C)1986 vortex GmbH 10 NAMES="":ORT: 20 IFILES, 1,100 30 |OPEN, "ADRESS. REL", 47,1 40 IFIELD, 1,12, 20,15 60 IGET, 1,174, @NAMES, @ORTS, @TELS 70 PRINT NAMES, ORTS, TELS 80 ICLOSE, 1 =": TELS="" Hier verden zuerst die Variablen definiert (Zeile 10) und dann wird der Datensatz mit der Nummer 174 aus der Datei auf Kanal A in die Variablen NAMES, ORTS und TELS eingelesen. Bitte beachten Sie, da& hier nur die Darstellung mit dem "@" (Klammeraffen) zugelassen ist !. Zuvor missen ordnungsgemife IFILES, !OPEN und IFIELD Befehle gestartet worden sein. Enth< der gelesene Rekord keine Daten, so erhalten wir die Meldung: Rekord enthaelt keine Daten Aufruf: |PUT, Kanalnumner, Satznummer, @Stringl /, @String2 Jy see Sf * Funktion: Schreiben eines Datensatzes. . . IPUT arbeitet genaugo wie der IGET Befehl, nur schreibt er den Inhalt der angegebenen Variabeln in die Dated auf dem angewahlten Kanal. 10 NAME@="":ORTS="":TELS="" 20 IFILES, 1,100 30 1OPEN, "ADRESS. REL", 47,1 40 IFIELD, 1,12, 20,15 SO INPUT NAMES, ORTS, TELS 60 IPUT, 1,174, @NAMES, @ORTS, @TELS 70 ICLOSE, 1 Der {PUT Befehl kann auch ohne den "@* (Klammeraffen) verwendet werden: IPUT, 1,15, "Mueller "Koeln", "123456" Hier werden direkt, die drei Worte in den Detensatz mit der Nummer 15 in die Datei auf Kanal 1 veggeschrieben. Es ist natiirlich klar - und das gilt auch flr den IGET Befehl -, daf die Satz-Nummer auch durch eine Variable ergetzt verden kann. So z.B. 10 NAMES="":ORTS="* : TEL: 20 IFILES, 1,100 30 1OPEN, "ADRESS. REL", 47,1 40 IFIELD, 1, 12, 20,15 45 INPUT "Geben Sie die Datensatznummer ein", REC Seite 19 Benutzerhandbuch vortex BOS 2.0 (€)1986 vortex GmbH 50 INPUT NAMES, ORTS, TELS 60 PUT, 1, REC, @NANES, @ORTS, @TELS 70 ICLOSE, 1 Durch die Wahl von REC kann die Datensatznummer bestimmt werden, in die der Inhalt der drei Variablen geschrieben verden kann. Wenn Sie einmal eine Rekordnummer angeben, die den Rahmen der Datei sprengt, dann erhalten Sie die Meldung: Rekordnummer zu gross rrrrrrrrrererrrerrrrtrerrrorerrrecrrerirtrereres * * . Aufruf: ICLOSE,Kanalnummer * * Funktion: Schliefen einer relativen Datei. . * * * * ERROR ERE RE REAR ER ERROR ES OREM EEO R EOE EEE O EERE RE EERE EERE ERED Soll die Benutzung einer Relativen Detei ordnungsgem&& ablaufen, dann muf zum Schlu@ die relative Dated wieder geschlossen werden. CLOSE, 1 SchlieB®t die Datei, die auf Kanal 1 gedfinet var. Ist auf diesem Kanal keine Datei vorhanden, dan bekommen Sie die Meldung: Kanal nicht geoeffnet Seite 20 jenutzerhandbuch vortex BOS 2.0 (€)1986 vortex GmbH Zwei kleine Anwendungen Hier folgen nun die Listings zveier kleiner Programme, die Ihnen das Arbeiten mit relativen Dateien nochnals verdeutlichen sollen. Beim ersten Beispiel wird die Datei TEST.REL getffnet und es wird ein selektierberer Rekord gelesen und angezeigt oder es wird ein Rekord mit eingebbarem Inhalt beschrieben. 10 IFILES, 1,600 20 1OPEN, "TEST. REL", 520, 1 30 IFIELD, 1,250,250 40 X9="": Yoon" SO'PRINT "(L)esen oder (S)chreiben eines Rekords oder (E)nde* 60 KS=UPPERS(INKEYS):IF K8<>"L" and K@<>"S" THEN GOTO 60 70 INPUT "Rekordnummer", REC 80 IF K<>"L" THEN GOTO 110 90 1GET, 1, REC, xs, eYs 100 PRINT X$, Y$:GOTO 50 110 IF Ke<>"S" THEN GOTO 160 120 INPUT "1. Variable", xs 130 INPUT "2. Verdiable", Ys 140 IPUT, 1, REC, @xS, @YS 150 GoTo 50 160 ICLOSE, 1:END 10: Einrichten eines Puffers von 600 Bytes Linge fir den Kenal mit der Nummer 1 20: Sffnen der Datei TEST.REL mit der aktuellen Setzlunge von 520 Bytes auf Kenal 1 30: Es wird nur der Inhalt zveier Variablen in den Puffer geschrieben. Die Inhalte beider Verieblen dirfen eine maximale Linge von 250 Bytes haben. 40: Definieren der beiden Variablen fir den IGET B 50: Abfrage, was getan werden soll 60: Eingabeschleife 70: Eingeben der Datensatz Nuamer 90: Hier kommen Sie an, wenn Sie oben "L" eingegeben haben. Der Inhalt des durch REC selektierten Satzes vird in die Variablen X$ und Y$ eingelesen. 100: Ausdrucken des Inhaltee 120: Hier kommen Sie an, wenn Sie oben "S" eingegeben haben. Sie geben den Variablen X$ und YS (Zeile 130) einen Wert. 140: Der Inhalt der beiden Veriablen wird in den durch REC selektierten Datensatz geschrieben 150: Riicksprung auf Zeile 50 fir erneute Eingabe 160: Hier kommen Sie an, wenn Sie *E" eingegeben haben. Die Datei wird ordnungsgem&8 geschlos: Sie sollten zumindest ein pear Mal nur die Wahl ‘"S* treffen, damit die Datei TEST.REL dherhaupt einmal einen Inhalt bekommt, der dann mit "L" ge. n werden kann. Benutzerhandbuch vortex BOS 2.0 (C)1986 vortex GmbH Im zweiten Beispiel verden nacheinander 1000 Rekords in die Relative Datei ZUFALL.REL geschrieben. Danach wird fiber die Zufallsfunktion (RND=random) im vahrsten Sinne des Wortes "rein zuf&llig" auf die Datens&tze der Datei zugegriffen. 10 FILES, 10, 120 20 1OPEN, "ZUFALL. REL", 25,10 30 I FIELD, 10, 25 40 xs="" SO FOR REC=1 ta 1000 60 X9="Rekord Nr. "*STR9(REC) 70 PUT, 10, REC, @XS @0 NEXT REC 90 REC1=INT(1000*RND(1))+1 100 IGET, 10, REC1, exe 110 PRINT Xo 120 GOTO 90 10: Reservieren eines 120 Bytes grofen Puffers flr Kanal 10. 20: &ffnen der Reletiven Datei ZUFALL.REL auf Kanal 10 mit der aktuellen Rekordlinge von 25 30: Segmentierung des Puffere. Es wird nur eine Varieble angelegt. Definition der Variablen X$ {Gr den IGET Befehl. Es werden 1000 Rekordi "Rekord Nr. 1", “"Rekord Nr. 2", ass, "Rekord Nr. 1000" in die Datei ZUFALL.TXT geschrieben. 90: Erzeugen einer Zufallszehl zvischen 1 und 1000 100: Auslesen des Datensatzes mit der Nummer der Zufallezahl. 110: Anzeigen dea Datensatzes 120: erneut eine Zufellszahl erzeugen und Datensatz auslesen. Mit diesem Beispiel wird sehr gut die hohe Zugriffsge- schwindigkeit auf die Daten der relativen Datei demonstriert. Das nachfolgende Programm erf0llt dieselben Aufgaben vie das gerade gezeigte Beispiel, nur deaf hier Sequentielle Dateien verwendet verden. Geben Sie es einmal ein. Sie werden staunen um wieviel langsamer hier alles léuft. Das zeigt einmal mehr, das fr professionelles Arbeiten das ‘Werkzeug" einer Reletiven Dateivervaltung unerléAlich ist. 10 OPENOUT *ZUFALL. SEQ" 20 FOR REC=1 TO 1000 30 X9="Rekord Nr. "+STRS(REC) 40 PRINT #9,XS SO NEXT 60 CLOSEOUT 70 OPENIN *ZUFALL.SEQ* 80 RECI=INT(1000+RND(1)) +1 90 VGLE="Rekord Nr. "+STR(REC1) 95 FOR A=1 TO 1000 100 INPUT#9, x9 110 IF X$=VGL¢ THEN GOTO 120 115 NEXT 120 PRINT xs Seite 22 Benutzerhandbuch vortex BOS 2.0 (C)1986 vortex GmbH 125 CLOSEIN 130 GOTO 70 In Zeile 10 bis Zeile 60 wird die Datei ZUFALL.SEQ angelegt. Sie sehen, da® die Daten ohne jegliche Nummernkennzeichnung veg- geachrieben werden. In Zeile 110 wird der vom Zufallsgenerator in Zeile 90 erzeugte String mit dem gerade ausgelesenen verglichen. Sind beide identisch, dann wird der String angezeigt (Zeile 120). Sind sie nicht gleich, dann mu@ veiter verglichen werden, bis vielleicht dann der 1000 ste Satz Ubereinstimmt (unginstigster Fall). Stimmt gleich der erste Vergleich (Rekord Nr. 1) Uberein, dann haben wir den ginstigsten Fall. Bei der relativen Dateiverveltung gibt es keine giinstigen und unginstigen Félle, alle sind gleich. Wie Sie leicht feststellen werden, wird ein und dieselbe Aufgabe von der Relativen Dateiverwaltung des VDOS ca. 10 mal schneller als von der Sequentiellen Dateivervaltung gelist. Seite 23 Benutzerhandbuch vortex BOS 2.0 (€)1986 vortex GmbH DAS ERWEITERTE BASIC DES BOS 2.0 Viele von Ihnen kennen wahrscheinlich den Vorg&nger von BOS 2.0, das Basic-Betriebssystem BOS 1.0 . Das wesentliche Merkmal dieses erveiterten Basics ist das Umschalten mit 1B0S, um die Speicher- erveiterung unter Basic nutzen zu kinnen. Damit wurde aber eine maximal migliche Anzahl an 32 KB grofen Basic-Programmb&nken initialisiert und viele bislang erstellte Basic-Programme liefen nicht mehr, da Sie echlicht und einfach zu lang waren. Dieses Manko wurde im BOS 2.0 behoben. Nach dem Einschalten des Systems befinden Sie sich n&mlich schon im ervweiterten Basic- Betriebssystem auf der Bank 0. Diese Bank 0 ist allerdings fast noch so gro8 wie Ihr Original-Basicspeicher, nur der vom BOS-Rom bendtigte Speicher (wenige 100 Bytes am unteren und oberen Ende des freien RAM) wurde abgezogen. Fir die weitere Beschreibung der Befehle wollen wir noch die im weiteren h&ufig gebrauchten Begriffe "Bank" und "Block" erkléren. Mit Bank ist eine der physikalischen, 64 KByte grofien Speicher- b&nke gemeint. Von diesen Binken kann es, je nach Grife der Speichererweiterung, bis zu neun geben. Dabei wird von 0 bis acht nummeriert und die Speicherbank 0 ist der Original-RAM des CPCs, die Bunke 1 bis 8 liegen in der Speichererveiterung. Jede dieser physikalischen Banke ist nun noch in zvei Blicke a 32 KByte unterteilt, vobei im BOS 2.0 mit zvei Eingchrankungen jeder Block eine von #Gnf Funktionen (Video, Basic, Ramdisk, Spooler, Ramdatei) innehaben kann. Die zwei Einschr&nkungen waren: 1. Die beiden Bl&cke des Originalspeichers (Bank 0) kinnen nur Basic- Speicher sein und 2. nur der untere Block der Banke 1 bis & kann als Basic-Programmspeicher benutzt werden. Das heiSt, da@ es nur 9 Basic-Programmbinke gibt, wobei immer nur die untere H&lfte des Speichers gemapped wird und die obere H&lfte immer der obere 32 KByte-Block des Original-RAM (Bank 0) ist. Nach dem Einschalten hat das Betriebasystem einen 64 KB grofen Druckerspooler installiert (der aber noch ausgeschaltet ist) und hat den Rest des vorhandenen Zusatzspeichers fir die Randisk reserviert. Mit dem Befehl Aufruf: ICONFIG * * * Funktion: Ausgabe der derzeitigen physikalischen * * RAM-Konfiguration. * wird Ihnen die derzeitige RAM-Konfiguration bildlich dargestellt. Dies wiirde bei einer SP512 so aussehen: Seite 24 Benutzerhandbuch vortex BOS 2.0 (€)1986 vortex GmbH tconfig BSRRRRRRR BSRRRRRRR Dabei ist die erste Spalte mit den beiden B Ihr Originalspeicher im CPC und die n&chsten & Spalten sind die physikelischen Banke der Speichererweiterung. Jede physikalische Speichererwei- terungsbank ist vwiederum zveigeteilt und jede dieser beiden H&lften kann eine endere Funktion besitzen. Die Bedeutungen der miglichen Funktionen sind: B - Basic D - Ramdatei R - Ramdisk S - Druckerspooler Vv - Videospeicher Weitere Statusinformationen erhalten Sie noch mit dem Befehl FREE HR EERE EERE REET CERO RT EREREDEREEERORR EEE ER EERE ER ER EERE ORE R REET Aufruf: |ID saeae * Funktion: Ausgabe von BOS-Statusmeldungen. AONE R OER E REAR ERR EEE CORSET EEE E EERE OREO RHEE EERE der Ihnen nach dem Aufruf folgende Meldung auegibt: BOS 2.0 SP5i2 (C)1986 vortex GmbH ° 9 64k 448K 64k oK Bks Scr Basic Randisk Spooler Ramdatei Bke gibt Ihnen dabei die maximale Basic-Banknummer an, Scr gibt die Anzahl der abspeicherbaren Bildschirminhelte (siehe VIDEO- Befehlegruppe), die restlichen Angaben sind die Grifen der fir Besic, Ramdisk, Spooler und Ramdatei reservierten Rambereiche. Es gibt allerdings noch eine weitere Miglichkeit Statusinforma- tionen zur Speichererweiterung zu erhalten und di zudem permanent, d.h. auch beigspieleweise beim Ableuf eines Progra: Dezu missen Sie nur die Tasten "CTRL" und *?" gleichzeitig dricken. Daraufhin wird Ihnen links unten auf dem Bildschirm ein kleines Men in inverser Schrift ausgegeben. Die erste sichtbare Meldung bezieht sich auf die derzeit aktive Basic-Bank, in unserem Fall ist das augenblicklich die Bank 0. Es gibt aber noch weitere Statusinformationen, die Sie mit den Cursortesten "Pfeil unten" und "Pfeil oben" erreichen kinnen. D.h., Sie kinnen mit diesen beiden Tasten "bléttern". Die n&chsten beiden Informatio- nen beziehen sich auf den freien Basic-Speicher in der derzeit Seite 25 Benutzerhandbuch vortex BOS 2.0 (€)1986 vortex GmbH aktiven Basic-Bank und die Programmldnge des Basic-Programmes in dieser Bank. Des veiteren gibt es noch eine Ausgabe zum Symbol After-Befehl. D.h., es wird ausgegeben, ab welchem ASCII-Wert die Zeichen benutzerdefiniert sind. Dieses Statusmeni kénnen Sie durch Dricken der ESC-Taste verlas- sen und Sie werden bemerken, daf@ der Bildschirm an der Stelle der MenWausgabe wieder richtig hergestellt wurde, und ein méglicher- veise laufendes Programm weiter abgearbeitet wird. Wenn Sie einen Drucker an die parallele Schnittstelle Ihres CPCs angeschlossen haben, k&nnen Sie sofort und einfach den Gebrauch der zus&tzlichen Basic-Befehle anhand des Spoolers austesten. Dazu dient der Befehl A enenenenenentenenenenenneree * Aufruf: 1SPOOL.ON * * Funktion: Einschalten des Drucker-Spoolers. . ROR eRe EER EMER ERE R EERO R EERE ROE EEE SEEDER EERE ERE ROR ERE EERE EE Aber vas ist da ein “Drucker-Spooler"? Ganz einfach: Normalerveise hat ein Drucker einen Puffer zum Zwigchenspeichern von auszugebenden Zeichen. Dieser ist aber meistens nicht sonderlich gro® (ca. 2-4 KB) und ist daher sehr schnell voll. Wenn Sie dann ein léngeres Basic-Programm ausgeben, ist Ihr Rechner lange Zeit blockiert, de er sehr schnell Daten absenden kann, aber immer auf den langsamen Drucker vwarten mu8. Ein Drucker-Spooler vergrifert nun Ihren Puffer und Sie kunnen bei der derzeit gewShlten Gr&fe bis zu 65536 Zeichen absenden, ohne das Ihr Drucker selektiert oder gar angeschloszen ist. Da Betriebasystem versucht nun leufend ein Zeichen abzusenden und tut dies, wenn Ihr Drucker bereit ist. In dieser Zeit kSnnen Sie aber problemlos mit dem Rechner veiterarbeiten - was der Riesen- Vorteil des Drucker-Spoolers ist. Diesen beschriebenen Vorgang k&nnen vir ganz einfach testen. Schelten Sie Ihren Drucker einmal aus, und geben Sie einfach folgendes ein: tepool.on print #8,"Dies ist ein Test des Spoolers!* Normalerweise wiirde Ihr Rechner jetzt blockiert sein, da er laufend versucht, den Text an den nicht selektierten Drucker auszugeben. Jetzt kam er aber sofort mit dem READY zuriick und Sie knnen weiterarbeiten - der Text steht im Spooler und im Hinter- grund wird laufend versucht diesen Text auszugeben. Wenn Sie jetzt Ihren Drucker einachalten wird er sofort ausgegeben. Den Drucker-Spooler k&nnen Sie mit Seite 26 Benutzerhandbuch vortex BOS 2.0 (€)1986 vortex GmbH * Aufruf: {SPOOL.OFF * * * * Funktion: Augschalten des Drucker-Spoolers. . jederzeit desaktivieren. Die Ausgabe Uber den Kanal & erfolgt jetzt wieder im Originalzustand. D.h. nur dann, wenn wirklich ein Drucker angeschlossen und empfangsbereit ist. Sollte im Spooler noch etwas gestanden haben, go wird diee nicht gel&scht. Nur der Befehl !SPOOL.ON initialisiert den Spooler komplett und léscht ihn dabei auch. Wenn Sie einen mit SPOOL. OFF unterbrochenen Spool-Vorgang weiterlaufen lassen wollen, geht dies mit RRR RR RRR ARETE ARERR ED REE EEE EMER ERE EEO EE OREM ERT ORT ERER RESO RER ET : Aufruf: |SPOOL.CONT : : Funktion: Drucker-Spooler weiter entleeren. : aneeenansendeersnersnecenveneonenaasenensentsennennseneooeneennes Ein Aufruf dieses Kommandos leitet die Druckerausgabe vieder tber den Spooler, ohne einen miglicherweisze noch vorhandenen alten Inhalt zu l8schen. Eine veitere Miglichkeit, sofort etwas mit der Speichererw terung zu tun, bietet sich mit: seneneneneneee oer rrr rere Aufruf: IPEEK, Speicherbank, Adresse, @Integervarieble kalischen Speicherbank in eine Integerveri- able einlesen. * Funktion: den Inhalt einer Speicherzelle einer physi- Sicherlich kennen Sie den Basic-Befehl PEEK, der Ihnen den Inhalt einer Speicherzelie riickmeldet. Der RSX-Befehl |PEEK gibt Ihnen die zusitzliche Miglichkeit aus allen vorhandenen physikalischen B&nken Speicherzellen auszulesen. Dabei wird der ausgelesene Wert in eine Integervariable eingeschrieben, die auch virklich existieren muf. Der komplette Aufruf des RSX-Befehls |PEEK sieht dann so aus: Seite 27 Benutzerhandbuch vortex BOS 2.0 (€)1986 vortex GmbH defint w <-- Definition als Integervariable. w=0 <-- reeles Anlegen der Variablen. Ipeek, 1,0, @w print chr$(w) D Ready Wir haben in diesem Beispiel den Inhalt der Adresse O der Speicherbank 1 ausgelesen. Erinnern Sie sich en die Ausgabe nach dem RSX-Befehl ICONFIG. Die Bank 0 war die Original-Bank im CPC, die Bank 1 var der Drucker-Spooler und die restlichen Banke varen die Remdisk. In der von uns angelegten Integervariablen W steht nun algo das erste Byte der Spooler-Benk. Da wir zuvor den Satz ‘Dies ist ein T..." dber den Drucker-Spooler ausgegeben haben, erhalten vir als Inhalt der Speicherzelle den ASCII-Wert des Zeichens "D*. Ein Aquivalent zu diesem physikaligchen PEEK-Befehl ist der Befehl . Aufruf: |LPEEK, Basic-Banknummer, Adresse, @Integer- * . variable 7 * * . Funktion: den Inhalt einer Speicherzelle einer logischen «© . Basic-Bank in eine Integervariable einlesen. . Er unterscheidet sich von IPEEK insofern, da& nur aus einer zulfgsigen Basic-Bank "gepeekt" werden kann. In unserem Fall kann also derzeit nur aus der Bank 0 ein Wert ausgelesen verden. Als Beispiel: defint v w=0 ILPEEK, 0,0, @v print hex9(w) 2 Ready liest den Inhait der Speicherzelle 1 der Basic-Bank © in die Integervariable W. Wird eine Banknummer grifer der maximalen Basic-Bank Ubergeben, 80 erfolgt die Meldung “unzuleessige Benknummer". Dae Gegenetick zum PEEK-Befehl des Basic diirfte Ihnen auch bekannt sein - das Einschreiben eines Wertes in eine Speicher- zelle mit dem POKE-Befehl. Wie Sie sich denken kinnen, gibt es diesen Befehl nun auch als RSX-Befehi fiir des "Poken" in die Speicherbanke. Seite 28 Benutzerhandbuch vortex BOS 2.0 (©1986 vortex GmbH ene e Rene REO OREN HOE O HOE R ESTE REED EEE ORE ER EREESPO ERROR EERE EEE Aufruf: !POKE,Speicherbank, Adresse, Wert einer physikalischen Speichererveiterungsbank. teens . Funktion: Einschreiben eines Wertes in die Speicherzelle Henne e enna nn ewee an eeeee eee neee: preererrirsd Als Gegensttck zum !PEEK-Befehl kann man mit diesem Befehl in eine physikelische Speichererveiterungsbank “poken". Anhand eines Beispiels 1&8t er sich leicht erklire: Ipoke, 1,0,&41 Nit dieser Sequenz haben vir in die Adresse null der Spooler-Bank den Wert 41 hexadezimal eingetragen. Hatten wir weiter oben den Spooler nicht geleert und abgeschaltet, so wire bei Selektierung des Druckera stett des Wortes "Dies" "Aies" eusgedruckt vorden. Entsprechend den Peek-Befehlen gibt es auch noch den logischen Poke-Befehl PAREN O ERO NR EERE REEMA TERETE OER E REE ER EEE EERE EERE REE ED Aufruf: ILPOKE, Basic-Banknumner, Adre: e, Wert . - Funktion: einen Wert in eine Speicherzelle einer logi- * schen Basic-Bank eintragen. . PANEER ERR E ERE R EERE TERE RESERERS ETOCS ER SORT EEE RE LED Die Syntax entepricht vollgiltig dem IPOKE-Befehl, nur wird bed Qbergabe einer Banknumner grifler der maximalen Basic-Bank die Fehiermeldung "unzuleessige Banknuemer" ausgegeben. Ein ebenfalls bekannter Basic-Befehl ist im BOS als RSX-Befehl flr die Speichererveiterung vorhanden. Es handelt sich um den Befehl CALL zum Aufruf eines Maschinenprogrammes. Prrtririrtritiitiiriiiiiiiiii re Aufruf: 1ICALL,Speicherbank, Adresse /, Parameter! /,Parameter2 ... /,Parameter30/// Funktion: Aufruf eines Magchinenprogramms in ein beliebigen Speichererveiterungsbank. sae aeeae Enteprechend dem normelen CALL-Befehl des Basic kann mit det Befehl CALL ein Maschinenprogramm in einer beliebigen physika- lischen Speichererveiterungsbank aufgerufen verden. Der einzige Unterschied besteht in der Anzahl der wbergebbaren Parameter. Beim normalen CALL sind bis zu 32 optionale Parameter miglich, Seite 29 Benutzerhandbuch vortex BOS 2.0 (C1986 vortex GmbH beim RSX-Befehl ICALL allerdinge nur bis zu 30. Ale Beispiel: Icall,7,&5000,45 ruft das Meschinenprogramn ab Adresse £5000 in der physikalischen Bank 7 auf und dbergibt einen Parameter, der den Wert 45 hat. Entaprechend den Peek- und Poke-Befehlen gibt es auch hier das Aquivalent fir den Aufruf von Maschinenprogrammen in einer logischen Basic-Benk. Es ist der Befehl RAPA EERE ERE O HERE REET ERE RE REREREOEEERSEREOEERE EERE ET ERO R ERO EES Aufruf: ILCALL, Basic-Banknummer, Adresse /, Parameter! /,Parameter2 ... /,Parameter30/// schen Basic-Bank eintragen. . * . Funktion: einen Wert in eine Speicherzelle einer logi- * ORE ERO R ARERR E ERE RRR ARETE REEOESEEE TREE ERE REER ERE SEETHER EEE DE Der logische Call-Befehi ILCALL entspricht in seiner Syntax voligtltig dem ICALL-Befehl. Einzige Ausnahme ist, daf stett der physikelischen Banknummer eine logische Basic-Banknummer dberge- ben werden mus. Di waren die Befehle, mit denen Sie die Speichererweiterung direkt angprechen k&nnen, ohne einen bestimmten Modus extre aufgerufen zu haben. Nun folgen die Befehle zur Erweiterung des Besic-Programmspeichers, en deren erster Stelle dieser Befehl steht: Preerirrrererrsy Prrrrriririrrerriririr rrr . Aufruf: |BOS, Video-Blicke /,Basic-Blicke /,Ramdisk-Blicke * . /,Spooler-Blicke /,Ramdatei-Bl3cke//// * * Funktion: die Aufteilung des Ramspeichers neu konfi- * * gurieren. 7 * * POOR R HERRERA OR ERERERRE RESORT RHEE REP EREERERETOEE EEE OEE R ERO ER EERE Wie Sie es vom BOS 1.0 her vielleicht kennen, missen Sie such im BOS 2.0 mit einem bestimmten Befehl den erweiterten Programm- speicher initialisieren. Im Unterschied zum BOS 1.0 kénnen Sie jetzt allerdings sagen, vie viele zusitzliche Programm-Banke Sie noch haben wolien. PQEGQQEQCUSS EPP EP SSP PPE PEPE REPEAL PEPE PELE EES ETAL AuSerdem geht ein in der Originalbank befindliches Basic-Programn bei der Initialisierung der zus&tzlichen Basic-Binke nicht verloren. AEELELELLCL2002022 222 P Pete eee P eS Egg S EPP g PPLE gga see ata Die maximale Anzahl der zus&tzlichen Basic-Bunke kann sich zwischen 1 (bei der SP64) und 8 (bei der SP512) bewegen. Die Seite 30 Benutzerhandbuch vortex BOS 2.0 (C)1986 vortex GmbH Anzahl bei den anderen Funktionen darf sich zwischen OQ und 16 bewegen (wobei hier 32KB-Blcke gemeint sind). Geben Sie Zahlen ale Parameter ein, die grifer als die maximal miglichen sind, so wird diese Meximalzehl initialisiert. Dabei werden in der ent- aprechenden Reihenfolge auch die Priorit&éten gesetzt. D.h. wenn Sie mit Video-, Besic- und Ramdisk-Baénken die maximal vorhandene Bankanzehl achon belegt haben und trotzdem noch Spooler- oder Ramdatei-Baénke angeben, verden diese ignoriert. Ein paar kleine Beispiele bos, 0,4 initialisiert Ihnen 4 zus&tzliche Basic-Banke und reserviert den verbleibenden Speicher fir die Ramdisk. Ibos, 0, 2, 0,100 dnitielisiert Ihnen 2 zusitzliche Basic-B&nke und reserviert den Rest der Speichererveiterung als Drucker-Spooler. 'bos, 0, 0, 8,8 unterteilt bei einer SP512 die Speichererweiterung hélftig in Ramdisk und Druckergpooler. I bos, 0, 0,0,0,16 reserviert die komplette Erveiterung als Ramdatei. Die enteprechenden Anderungen der logischen RAM-Konfiguration k8nnen Sie sich am besten veranschaulichen, wenn Sie sich nach dem {BOS-Befehl mit den RSX-Befehlen ICONFIG und IID die entsprechenden Meldungen ausgeben lessen. Wir wollen jetzt aber die zusStzlichen Programmier-RSX-Befehle an einem Beispiel durchgehen, das mit jeder Speichererweiterung funktioniert, sei es nun die SP64 oder die SP512. Setzen Sie deshalb Ihren Rechner mit CTRL-SHIFT-ESC zurtick und geben Sie !bos,0,1 ein. Wir haben jetzt zwei Basic-Ba&nke zur Verfgung. Einmal die Bank O (Original-Speicher des CPC) und dann noch die Bank 1, die in der Speichererveiterung liegt. Fir Programmierer, die es interessiert: Beachten Sie bitte, daf die Basic-Bank 1 nicht zwingend in der physikalischen Speicherbank 1 liegen must Also - wir wi RSX-Befehl 11D yn, da® wir eine weitere Basic-Bank haben, der idet es ja auch: Seite 31 Benutzerhandbuch vortex BOS 2.0 (C1986 vortex GmbH \id BOS 2.0 SP512 (C)1986 vortex GmbH a o 96K 448K 32k OK Bka Scr Basic Remdisk Spooler Randatei Aber wie nutzt man diese zveite Bank 717 Zuerst mu8 man die M&glichkeit haben, auf diese Bank zu gelangen. Dazu gibt es den Befehi Aufruf: |BANK, Basic-Banknummer * Funktion: eine andere logische Basic-Bank einblenden. Wenn zusStzliche Basic-Bunke initielisiert wurden, kann man mit diegem Befehl zvischen den einzelnen Basic-Bunken wechseln. Da wir uns auf Bank 0 befinden und eine zusitzliche Basic-Bank initielisiert haben, kinnten wir auf die Bank 1 wechseln, was vir jetzt auch tun: bank, 1 Mit dem CTRL-?-Hilfsmend kinnen Sie sofort nachschauen, ob es auch geklappt hat. Sie werden als erste Meldung "Bank-Nr. 1" erhalten und vielleicht schon wirklich glauben, de® vir wirklich auf einer anderen Basic-Bank sind. Um Ihnen dies ganz klar zu verdeutlichen, wollen wir ein kleines Programm eingeben: 10 print"Dies ist die Basic-Bank eins" 20 goto 10 Nun vechseln wir mit bank, 0 wieder in die Bank null. Wenn wir jetzt mit list nachschauen, vas im Programmspeicher steht, so wird uns nichts eusgegeben - der Programmspeicher der Bank 0 ist erwartungsgem&s leer. Deshalb schreiben wir auch in die Bank O ein kleines Programm: 100 print"Die Basic-Bank null ist aktiv!" 110 goto 100 Seite 32 Benutzerhandbuch vortex BOS 2.0 (€)1986 vortex GmbH Ein LIST Gberzeugt uns, daé dis Programm wirklich im Speicher steht. Wir wechseln einfach in Bank 1 und “listen” dort einmal: tbank, 1 list 10 PRINT"Dies ist die Basic-Bank eins" 20 GOTO 10 Wir haben elso verifiziert, def zwei verschiedene Programme im Speicher stehen. Diese laufen auch getrennt, was Sie durch Bankvechsel und Start des Programmes (RUN) tiberprifen k&nnen. Wie Sie enhend des Beispieles erkennt haben, ist das Auflisten aller im Speicher vorhandenen Programme mit dem normalen Basic- Befehl LIST etwas umst&ndlich. Deshalb gibt es den RSX-Befehl ARORA ORR AE HERRERA EER EERE ORS EOEEHEEORE REEL ERE EERO ER ERTL ER OEE EER Aufruf: ILIST /,Beanknummeri ... /,Banknummer9// . . * Funktion: Programme ber mehrere Bunke hinveg auflisten. FREE RE RRR R EERO ROR EEE E ER ERED ER EREOEEOEEREREE SEDER OEE R OPER RED, Wenn Sie den RSX-Befehl ILIST ohne Parameter eingeben, #0 eracheint bei uns derzeit folgende Ausgabe: Bank 0 ----- 0-100 PRINT*Die Basic-Bank null ist aktivi" 0-110 GOTO 100 - Bank 1 -- 1-10 PRINT"Dies ist die Basic-Bank eins" 1-20 GOTO 10 Enteprechend kénnen Sie als Parameter auch Basic-Banknu angeben, die dann nur aufgelistet werden. Jlist,1 wirde Ihnen beispielsweise nur die Bank 1 auflisten. Wenn Sie die Ausgehe des ILIST-Befehls umleiten wollen, haben Sie diese Miglichkeit mit dem |DEV-Befehl. Seite 33 Benutzerhandbuch vortex BOS 2.0 (C)1986 vortex GmbH Aufruf: IDEV /,Kanainummer/ * Funktion: Zuweisung eines Ausgabekanals fiir den ervei- * * terten |LIST-Befehl. * Es stehen Ihnen folgende Moglichkeiten der Ausgabeumleitung zur Verfiigung: 0 - Bildschirm 8 - Drucker 9 - Diskettenlaufverk/Recorder. Rufen Sie den IDEV-Befehl mit idev,8 auf, so wird bis zum nichsten Aufruf des IDEV-Befehles die komplette Ausgabe dee ILIST-Befehles auf den Drucker umgeschal- tet. Geben Sie beim Aufruf dee IDEV-Befehles keinen Parameter an, wird automatisch Kanal 0, d.h. der Bildschirm gevuéhlt. So, jetzt wissen wir also, vie man zwischen Banken umschaltet, in die B&nke eigenst&ndige Programme schreibt und diese auch komplett auflisten kann. Aber wie verkettet man nun die Programme in den einzelnen Binken? Dazu gibt es wiederum eine Gruppe von RSX-Befehlen. A ARO REO EERE EERE TERRE ER ORE REE Aufruf: 1GOTO, Basic-Banknummer, Zeilennummer und die Programmausfihrung vird in der Uberge- * * Funktion: Es wird die entaprechende Basic-Bank gewechselt * benen Zeilennummer fortgesetzt. * . ORE ROE R ERE R RERUN EER ER EERE EERE EERE SEER ER EERE RRRER ERLE P ERE E REE Wie es Ihnen die kurze Funktionsbeschreibung schon kler gemacht het, dient dieser Befehl dezu, einen Sprung in ein Programm n, dag in einer anderen Speicherbank liegt. In unser Beispielprogramm kann man solche Springe einfach ein- bauen, und das wollen wir auch tun. Geben Sie einfach die folgende Befehlssequenz ein. Ibank, 0 110 Igoto, 1,10 bank, 1 20 Igota, 0,100 list Seite 34 Benutzerhandbuch vortex BOS 2.0 (€)1986 vortex GmbH 0-100 PRINT"Die Basic-Bank null ist aktivi" 0-110 1GOTO, 1,10 1-10 PRINT"Dies ist die Basic-Bank eins" 1-20 1GOTQ, 0,100 Wir haben jetzt aus den zvei separaten Programmen ein zusammenh&ngendes gemacht. Wenn wir es starten, milfte immer eine Meldung auegedruckt, die Bank gevechselt und die nlchste Meldung ausgegeben verden. Starten Sie es einfach mit run und Sie sehen - es kleppt! Um Sie noch etwas zu verbliffen: Es muf keine feste Zeilennumner im erveiterten GOTO-Befehl stehen, sondern man kann auch in eine Zeile Springen, deren Nummer in einer Variablen steht. Durch eine einfache inderung im Programm 188t sich dies zeigen: Ibank,O 105 zeile=10 110 igoto,1,zeile run Wir haben nur eine Integervariable definiert und springen nun in die Bank 1 in die Zeile, die in der Variablen ZEILE steht. Da die Variable den festen Wert 10 zugeordnet bekommen hat, ifuft das Programm genauso wie vorher. PQUDEEACSEAEESE REESE AAPA P EERE PARES EAE S ELSES EEA ESSERE Aber eines muf hier gesagt verden: Wenn Sie in einer Bank die Zeilennummern mit dem Basic-Befehl RENUM neu numerieren, so missen Sie in di nderen B&nken die RSX-GOTO-Zeilennummern manuell &ndern. Das Gleiche gilt auch fUr den RSX-GOSUB-Befehl, der gleich erkl&rt wird. Also: Ein wichtiger Punkt, den es immer zu beachten gilt! AQESESEPAEAS EAP PP SEAS ESSER EASE E APTA SLATS ARNE RRR RTE ERE E ERE E ARERR ERROR EEO EOEER RETESET ERE EERE ROE E EE Aufruf: |GOSUB, Basic-Banknummer, Zeilennummer . Funktion: ein Unterprogramm in einer anderen Basic- . Bank avfrufen. . Xhnlich wie der RSX-Befehl GOTO verzveigt auch dieser in eine Zeile in einer anderen Basic-Bank. Unser Beispielprogramm ver- andern vir mit der Erkl&rung des n&chsten Befehles. Seite 35 Benutzerhandbuch vortex BOS 2.0 (€)1986 vortex GmbH Aufruf: !RETURN * * * Funktion: in die Bank und Zeile zuriickkehren, von der aus * . ein Unterprogramm mit IGOSUB aufgerufen wurde. + . * Am besten und einsichtigsten lassen sich die Befehle !GOSUB und IRETURN erklaren, wenn wir unser Beispielprogramm G&ndern. Also geben Sie folgende Befehissequenz ein: tbank, 0 110 Igosub, 1,zeile 120 goto 100 Ibank, 1 20 Ireturn Hist Bank 0 0-100 PRINT"Die Basic-Bank null ist ektiv!* 9-105 zeile=10 0-110 1GOSUB, 1,10 0-120 GOTO 100 Bank 1 - 1-10 PRINT*Dies ist die Basic-Bank eins" 1-20 IRETURN bank, O run Des Programm gibt nun die erste Meldung aus, springt in das "Unterprogramm" in Bank 1, und gibt dort die zweite Meldung aus. Dann kehrt es mit dem IRETURN in das "“Hauptprogramm" in Bank O zurtick und springt dort wieder an den Anfang des Programms. Bevor wir zu einem ganz vesentlichem Punkt, n&mlich der Variab- lenverwaltung kommen, kl&ren wir erst noch den Punkt des Laden und Speichern von Programmen im Bank-Basic. Seite 36 Benutzerhandbuch vortex BOS 2.0 (€)1986 vortex GmbH RRP RO EERE ERE EERE EERE EERE EEO E EEE R EERE EORERERERE EERE EEO ER EERE EEE Aufruf: ISAVE, "Dateiname" /,Banki /,Bank2 /, ... /// . Funktion: Abspeichern eines Programmes, das auf mehrere * * Basic-Baénke verteilt iat. * PEER EERE ERE E REE EEE ERRORS EEE E EERE EERE ER EE EERE REE EEE EERE REE EE Mit Hilfe dieses Befehles kSnnen Sie ein Programm, des Ober mehrere Basic-Badnke verteilt ist, in einem Arbeitsgang auf Diskette/Cassette sichern. Haben Sie zum Beispiel ein Programm Uber drei Banke verteilt im Speicher liegen, so kunnen Sie es mit te "teat" abspeichern. Danach befinden sich auf der Diskette/Cassette folgende Programme: TEST.BBS - das Ladeprogramn. TEST.BKO - der Programmteil aus der ersten Bank. TEST.BK1 - der Programmteil aus der zveiten Bank. TEST.BK2 - der Programmteil aus der dritten Bank. Dieses Programm kSnnen Sie sofort mit dem ILOAD-Befehl wieder in den Speicher laden. Prrrrerrrrerrrrrerrrerererrrrirrroger Aufruf: ILOAD, "Dateiname" . Funktion: Laden eines mit dem ISAVE-Befehl abge- * speicherten Programmes. * tnnenensenes aenensnerenenenees Mit dem Befehl Jload, "test" wieder in die wird das zuvor mit ISAVE gespeicherte Progra verschiedenen Basic-Binke geladen. Wenn Sie edn solches Programm mit ILOAD geleden haben, milszen Sie es noch mit dem Basic-Befehl RUN starten. Um beides in einem Zuge zu erledigen, gibt es noch den RSX-Befehl: Seite 37 Benutzerhandbuch vortex BOS 2.0 (€)1986 vortex GmbH Aufruf: (RUN, "Dateiname” /, Basic-Banknummer, Zeilen- nummer// Funktion: Laden und Starten eines mit dem !SAVE-Befehl . abgespeicherten Basic-Programmes. * run, "teat" wirde das zuvor gespeicherte Programm TEST.BAS in die verschiedenen Basic-Banke laden und den Programmablauf in der ersten Zeile der mowentan aktiven Basic-Bank starten. Geben Sie optional eine Basic-Banknummer und eine Zeilennummer ein, so wird das Programm in der entsprechenden Bank und Zeile gestartet. Jrun, "test", 3,100 ludt beispielsveise das Programm TEST.BAS in die verschiedenen Basic-Banke, wechselt auf die Basic-Bank Nummer 3 und startet dort das Programm mit der Zeilennummer 100. So, nun kommen vir zu dem etwas schvierigeren Teil, der Varieblenverwaltung. In unserem Beispielprogramm haben vir bislang nur eine Variable benutzt. Die Integerveriable ZEILE in der Programmbank 0 diente ung dazu, den erweiterten IGOTO- und !GOSUB-Befehl mit Variablen zu demonstrieren. Sie bekam in Zeile 0-105 st&ndig den Wert 100 zugewiesen, aber velchen Wert hat diese Variable in der Programmbank 1 ? Das 188t sich doch leicht festatellen. Geben Sie nur folgende Befehle ein: bank, 1 15 print zeile ibank, 0 run Es wird uns nun der Wert der Integer-Veriablen ZEILE in der Programmbank 1 ausgegeben. In der Bank 0 hat die Variable den Wert 100, aber in Bank 1 wird nun laufend der Wert O ausgegeben ? Des R&tsels LUsung: ohne andere Dekleration ist jede Variable im Bank-Basic eine "lokele” Variable. Das heift ganz einfach, das Wertzuveisungen an eine Variable nur in der derzeitig aktiven Basic-Bank vollzogen werden oder noch klerer ausgedriickt: Sie kSnnen in jeder Basic-Bank Variablen mit gleichem Namen anlegen, die allerdings véllig unabhéngig voneinander verschiedene Werte haben k&nnen - ein Riesen-Vorteil fir Programmierer, die Strukturen bevorzugen: endlich kann man Unterprogramme mit lokalen Variablen entwickeln! Seite 38

You might also like