Wie speichere ich einen String, der auch Dateiende-Zeichen ($A) enthÀlt?
Ăffnen Sie zunĂ€chst eine Random-Access-Datei ohne feste SatzlĂ€nge (OPEN "U"). Auf diese Datei greifen Sie mit GET (extended) und PUT (extended) zu. Den Dateizeiger positionieren Sie mit SEEK. Mit folgenden Prozeduren schreiben Sie einen String beliebigen Inhalts in diese Datei oder lesen ihn aus ihr.
(GĂŒnther Heidel/ah)
DEF PROC SCHREIBEN (A$)
OPEN "U", 1,"BEISPIEL.XXX"
PUT 1, MKI$(LEN (A$) ) ! erst LĂ€nge schreiben
PUT 1, A$
CLOSE 1
RETURN
DEF PROC LESEN (R Lese$)
LOCAL Laenge
OPEN "U", 1, "BEISPIEL.XXX"
SEEK 1, 0
GET 1, Lese$, 2
Laenge = CVI (Lese$)
GET 1, Lese$, Laenge
CLOSE 1
RETURN
Wie kann ich ein Degas-Bild von Diskette laden?
Eine Degas-Bild-Datei besteht aus 2 Byte Vorspann (Kennzahl fĂŒr die Bildschirmauflösung), 32 Byte Farbpalette und genau 32000 Byte fĂŒr das eigentliche Bild. Die eventuell vorhandenen Informationen ĂŒber Farbanimation wollen wir nicht berĂŒcksichtigen. Sie laden Bild und Farbpalette am einfachsten direkt mit dem Befehl OPEN "U".
OPEN "U", 1, "PICTURE.PI3"
SEEK 1, 2 ! ĂŒberspringen des Vorspanns
GET 1, $FF8240, $ 20 ! schreibt die Farbpalette
! direkt in die Register des Videoshifters
SEEK 1, 34 ! ab hier stehen die Bilddaten
XBIOS (Screen_Adr, 2?) ! holt die physikalische Bildschirmadresse
GET 1, Screen_Adr, 32000 ! und schreibt die Daten hinein
CLOSE 1
SelbstverstÀndlich muà man das Bild nicht gleich in den Bildschirm schreiben, sondern kann es zum Beispiel in einen MEMORY-Block laden.
(GĂŒnther Heidel/ah)
Wie kann ich eine Musikdatei, die im XBIOS32-Code gespeichert ist, in selbstgeschriebene Basic-Programme einbinden?
Dazu laden Sie die Musik-Datei in einen MEMORY-Block und ĂŒbergeben dessen Adresse sowie die LĂ€nge-1 der Musik-Datei an die XBios-Funktion »Dosound«.
OPEN "U", 1, "A:\BEISPIEL.MUS"
L = LOF(1) ! LĂ€nge der Datei ermitteln
M = MEMORY(L) ! Speicherblock reservieren
GET 1, M, L ! Musikdaten laden
CLOSE 1
XBIOS 32, L, M ! Musik abspielen
REPEAT
XBIOS R, 32, L, -1
UNTIL R = 0 ! Warten
FRE M ! Speicherblock wieder freigeben
Der Quelltext auf der TOS-Diskette sucht zunĂ€chst das aktuelle Verzeichnis nach allen Bildern (Dateien mit der Endung *.PIC) ab und lĂ€Ăt diese dann nacheinander von unten in den Bildschirm scrollen. Der kleine »Ruck«, der nach je zwei Bildern auftritt, lĂ€Ăt sich mit etwas Aufwand beheben: Sie laden zunĂ€chst alle Bilder in ein Stringfeld und geben sie nacheinander auf dem Bildschirm aus. Dies erfordert allerdings viel Speicher. Apropos umschreiben: Das Programm arbeitet nur mit dem Screenformat (32000 Byte) und bedarf einer Anpassung fĂŒr eventuell vorhandene Grafikkarten.
(GĂŒnther Heidel/ah)
Steuerzeichen
Jeder Computer verwendet bestimmte Steuerzeichen, um etwa Ausgaben auf dem Bildschirm zu koordinieren. Wenn Sie in einem Editor einen Text schreiben, bewegen Sie zum Beispiel mit der Hochpfeiltaste den Cursor (Schreibmarke) eine Zeile nach oben. Wenn der Editor feststellt, daĂ die Hochpfeiltaste gedrĂŒckt wurde, setzt er sich nicht selbst den Cursor eine Zeile höher, sondern lĂ€Ăt diese Arbeit vom Betriebssystem erledigen, genauer vom VT52-Emulator. Dieser Teil des Betriebssystems emuliert die Funktion des VT52-Terminals der Firma Digital Equipment. Der Emulator erledigt aber noch weitere Aufgaben: Eine AufschlĂŒsselung aller Funktionen finden Sie in Tabelle 2.
Neben den Steuerzeichen des VT52-Emulators gibt es noch Control-Sequenzen. Bei diesen handelt es sich um Steuerzeichen, die sich durch Kombination der Control-Taste und einer Buchstaben-Taste aufrufen lassen (Tabelle 1). Einige dieser Funktionen entsprechen einer speziellen Taste. So entspricht Control l der Taste TAB und Control M der Taste Return. Ein Anwendungsbeispiel fĂŒr die Funktionen des VT52-Emulators finden Sie als Omikron-Quelltext auf der TOS-Diskette.
(GĂŒnther Heidel/ah)
Kombination |
ASCII-Code |
Wirkung |
Control G |
7 |
Gibt einen Ton aus |
Control h |
8 |
Cursor eine Spalte nach links |
Control l |
9 |
Bewegt den Cursor zur nÀchsten Tabulatorstelle |
Control J |
10 |
Cursor eine Zeile nach unten |
Control M |
13 |
Bewegt den Cursor an den linken Rand |
Tabelle 1. Die Control-Steuercodes
Escape-Code |
Wirkung |
ESC A |
Bewegt den Cursor eine Zeile nach oben |
ESC B |
Bewegt den Cursor eine Zeile nach unten |
ESC C |
Bewegt den Cursor eine Spalte nach rechts |
ESC D |
Bewegt den Cursor eine Spalte nach links |
ESC E |
Löscht den Bildschirm und setzt Cursor in die linke obere Ecke |
ESC H |
Setzt den Cursor in die linke obere Ecke |
ESC I |
Bewegt den Cursor um eine Zeile nach oben und schiebt den Bildschirm eine Zeile nach unten, wenn der Cursor bereits in der obersten Zeile stand |
ESC J |
Löscht den gesamten Schirm ab der aktuellen Cursorposition |
ESC K |
Löscht ab der aktuellen Cursorposition bis zum Zeilenende |
ESC L |
FĂŒgt an der Cursorposition eine Zeile ein und schiebt Rest des Bildschirms eine Zeile nach unten |
ESC M |
Löscht an der Cursorposition eine Zeile heraus und schiebt den Rest des Bildschirms eine Zeile nach oben |
ESC Y, y, x |
Setzt den Cursor an Spalte y und Zeile x. x und y enthalten die Spalten- und Zeilennummer + 32. |
ESC b, n |
Setzt die Schriftfarbe. n ist die Farbnummer, |
ESC c, n |
Setzt die Hintergrundfarbe. n ist die Farbnummer. |
ESC d |
Löscht den Bildschirm bis zur Cursorposition |
ESC e |
Schaltet den Cursor ein |
ESC f |
Schaltet den Cursor aus |
ESC j |
Speichert die aktuelle Cursorposition in einer internen Variablen |
ESC k |
Setzt den Cursor an die mit ESC j gespeicherte Position und löscht die interne Variable |
ESC l |
Löscht die aktuelle Zeile und setzt den Cursor in die erste Spalte |
ESC o |
Löscht die aktuelle Zeile bis zum Cursor |
ESC p |
Inversdarstellung ein |
ESC q |
Inversdarstellung aus |
ESC v |
Automatischer Ăberlauf ein. Der Cursor springt automatisch in die nĂ€chste Zeile, wenn er am rechten Rand angekommen ist. |
ESC w |
Automatischer Ăberlauf aus. Der Cursor bleibt am rechten Rand stehen. |
Tabelle 2: Die Funktionen des VT-52-Emulators