home *** CD-ROM | disk | FTP | other *** search
/ Amiga Elysian Archive / AmigaElysianArchive.iso / emulate / qdos4ami.lha / docs / BTOOL.txt < prev    next >
Text File  |  1990-05-23  |  65KB  |  2,062 lines

  1. Erl€uterungen zum B-Toolkit 1.21:
  2. =================================
  3.  
  4. B-Toolkit 1.21 bindet beim Aufruf ein:
  5.    1. Einen Treiber mit dem Namen 'BToolkit' (Groœ- und Kleinschreibung
  6.       sind hier wichtig!), der Nur die Funktion hat, B-Toolkit einen
  7.       Datenbereich zur Verf‡gung zu stellen,
  8.    2. Eine 'Scheduler'-Routine, die dazu dient auch aus mit EXEC_W ge-
  9.       starteten Programmen bei verfahrenen Situationen ins BASIC zur‡ck-
  10.       kehren zu k„nnen (kein Allheilmittel!!!),
  11.    3. 'Device'-Vorgaben, wie sie auch Toolkit II mit PROG_USE, ... zur
  12.       Verf‡gung stellt (jedoch werden keine bereits vorhandenen Vorgaben)
  13.       ‡berschrieben,
  14.    4. Zwei S€tze von BASIC-Befehlen (Prozeduren und Funktionen),
  15.       von denen der eine Fest eingebunden wird, der andere jedoch
  16.       an- un abschaltbar (letzterer muœ jedoch erst "eingeschaltet"
  17.       werden).
  18.  
  19. Zur folgenden Kurzbeschreibung:
  20.    '[' ']'           -     das Argument ist optional; es kann (muœ aber
  21.                            nicht) angegeben werden.
  22.    Beispiel:
  23.          WMON [colour-mode] [, screen-type]
  24.    kann bedeuten:
  25.          WMON
  26.          WMON colour-mode
  27.          WMON , screen-type
  28.          WMON colour-mode, screen-type
  29.  
  30.    '{' '}'           -     Es k„nnen keins, ein oder mehrere Argumente des
  31.                            Typs, der in diesen Klammern eingeschlossen
  32.                            ist, folgen.
  33.    Beispiel:
  34.          CLOSE [#ch] {, #ch}
  35.    kann bedeuten:
  36.          CLOSE
  37.          CLOSE #ch
  38.          CLOSE #ch , #ch
  39.          CLOSE #ch , #ch , #ch
  40.          CLOSE #ch , #ch , #ch , #ch
  41.          ... ,
  42.                            wobei #ch nicht notwendigerweise das selbe
  43.                            Argument bezeichnet.
  44.  
  45.    In Hochkommata eingeschlossene Argumente bezeichnen Zeichenketten, d.h.
  46.    das ‡bergebene Argument muœ eine Zeichenkette sein. Im Text dienen die
  47.    Hochkommata jedoch nur, um Namen von BASIC-Befehlen, Fremdworte, etc.
  48.    hervorzuheben.
  49.  
  50.    Ein (R) in der §berschrift zu einem Befehl bedeutet, das dieser abge-
  51.    schaltet werden kann; ein (F) bedeutet, das er Fest ist.
  52.  
  53. Kurzbeschreibung der Befehle:
  54.  
  55. Funktion    ALCHP                (F)
  56. ====================================
  57. Syntax:
  58.    a = ALCHP (size [, [JobID]])
  59.  
  60. 'ALCHP' reserviert 'size' Bytes im 'common heap'; Wird hinter 'size'
  61. nichts angegeben, dann ist dieser Speicherplatz durch die Toolkit II-
  62. Befehle 'NEW', 'CLEAR', etc. l„schbar; wird jedoch ein ',' hinter 'size'
  63. angegeben, dann ist dieser Platz nur durch 'RECHP' l„schbar; dasselbe
  64. gilt, wenn eine 'JobID' hinter dem Komma folgt, nur wird dann der
  65. Speicherplatz f‡r den Job mit dieser 'JobID' reserviert, d.h. er wird
  66. automatisch freigegeben, wenn dieser Job gel„scht wird (bzw. sich selbst
  67. l„scht).
  68. Ergebnis ist die Anfangsadresse des reservierten Speicherplatzes.
  69. Beispiele:
  70.  
  71.          a = ALCHP (1000)
  72.          - reserviert 1000 Bytes im 'common heap'. Dieser Bereich wird
  73.            durch die Toolkit II-Befehle 'NEW', 'CLEAR', ... wieder frei-
  74.            gegeben
  75.  
  76.          bs = ALCHP (3000,)
  77.          - reserviert 3000 Bytes, die durch 'NEW', 'CLEAR', ... nicht
  78.            freigegeben werden k„nnen sondern nur durch 'RECHP bs'.
  79.  
  80.          add_m = ALCHP (300, 1)
  81.          - reserviert 300 Bytes f‡r den Job mit der Nummer 1; wird Job 1
  82.            beendet, dann wird dieser Platz automatisch mit freigegeben.
  83.  
  84.  
  85. Funktion    ASK                  (R)
  86. ====================================
  87. Syntax:
  88.    a = ASK ([#ch,] 'prompt')
  89.  
  90. 'ASK' dient zu Ja/Nein-Abfragen von der Tastatur; Hierzu wird im Fenster
  91. '#ch' (Vorgabe: #1) die Meldung 'prompt' ausgegeben. War das letzte
  92. nicht-Leerzeichen von 'prompt' kein '?', dann wird ' ? ' angeh€ngt
  93. (sonst nicht); anschlieœend wird eine Eingabe von der Tastatur erwartet.
  94. War die Eingabe ein 'j' oder ein 'y' (Schreibung egal), dann ist das Er-
  95. gebnis von 'ASK' 1; war es ein 'n' eingegeben, dann ist es 0.
  96. Wird eine andere Taste gedr‡ckt, dann wird ein Warnton eingegeben und
  97. erneut auf eine Tastatureingabe gewartet.
  98. Beispiel:
  99.       ...
  100.       1030 a = FILE_OPEN ('xyz', 2)
  101.       1040 IF a = -8
  102.       1050   IF ASK (#0, '- bereits vorhandene Datei ‡berschreiben')
  103.       1060     a = FILE_OPEN ('xyz', 3)
  104.       1070   ELSE
  105.       1080     REPORT a
  106.       1090   ENDIF
  107.       1100 ELSE
  108.       1110   IF a < 0: REPORT a: STOP
  109.       1120 ENDIF
  110.       1130 ...
  111.  
  112. (Ausprobieren!)
  113.  
  114.  
  115. Funktion    BASE_N               (F)
  116. ====================================
  117. Syntax:
  118.    a = BASE_N (num_base, num$)
  119.  
  120. 'BASE_N' faœt die Zeichenkette 'num$' als Zahl zur Basis 'num_base' auf
  121. und wandelt diese in bin€re Form um. 'num_base' muœ zwischen 2 und 36
  122. liegen; 'num$' darf nur die Ziffern '0'...'9' und die Buchstaben 'A'...'Z'
  123. (Schreibweise egal) enthalten, jedoch h„chstens das Zeichen aus diesem
  124. Bereich, das 'num_base-1' entspricht.
  125. Beispiele:
  126.  
  127.    PRINT #0, BASE_N (36, 'ABC')
  128.    13368
  129.  
  130.    PRINT #0, BASE_N (36, 'AZ3')
  131.    14223
  132.  
  133.    PRINT #0, BASE_N (1, 'xxx')
  134.    bad parameter
  135.  
  136.    PRINT #0, BASE_N (16, 'ABC)')
  137.    bad parameter
  138.  
  139.  
  140. Funktion    BASE_N$              (F)
  141. ====================================
  142. Syntax:
  143.    a$ = BASE_N$ (num_base, num, num_bits)
  144.  
  145. 'BASE_N$' wandelt die unteren 'num_bits' Stellen der Bin€rzahl 'num' in
  146. eine Darstellung zur Basis 'num_base' um. 'num_base' muœ zwischen 2 und 36
  147. liegen; 'num_bits' muœ zwischen 1 und 32 liegen.
  148. Das Ergebnis von 'BASE_N$' ist eine Zeichenkette.
  149. Beispiele:
  150.  
  151.    PRINT #0, BASE_N$ (36, 13368, 21)
  152.    00ABC
  153.  
  154.    PRINT #0, BASE_N$ (16, 2748, 20)
  155.    00ABC
  156.  
  157.    PRINT #0, BASE_N$ (2, 2748, 12)
  158.    101010111100
  159.  
  160.  
  161. Funktion    BASIC                (R)
  162. ====================================
  163. Syntax:
  164.    a = BASIC (ptr)
  165.    a = BASIC
  166.  
  167. 'BASIC' ohne Argument liefert die Anfangsadresse von SuperBASIC;
  168. 'BASIC' mit Argument liefert die Absolute Adresse eines Teilbereichs
  169. von SuperBASIC auf die die BASIC-Statusvariable 'ptr' zeigt.
  170. Beispiel:
  171.       a = PEEK_L (BASIC (48))
  172.       - liefert die 'channel id' des BASIC-Kanals #0 in a.
  173.         (Besser jedoch, es wird in diesem Fall mit 'CHANID' gearbeitet.)
  174.  
  175.  
  176. Funktion    BASIC_B              (R)
  177. ====================================
  178. Syntax:
  179.    a = BASIC_B (rel.addr)
  180.  
  181. 'BASIC_B' liefert ein Byte aus dem Bereich von SuperBASIC; 'rel.addr' ist
  182. ein Zeiger auf dieses Byte relativ zur Anfangsadresse von SuperBASIC.
  183.  
  184.  
  185. Funktion    BASIC_L              (R)
  186. ====================================
  187. Syntax:
  188.    a = BASIC_L (rel.addr)
  189.  
  190. 'BASIC_L' liefert ein Langwort aus dem Bereich von SuperBASIC; 'rel.addr'
  191. hat dieselbe Bedeutung wie bei 'BASIC_B', muœ jedoch gerade sein.
  192.  
  193.  
  194. Funktion    BASIC_W              (R)
  195. ====================================
  196. Syntax:
  197.    a = BASIC_W (rel.addr)
  198.  
  199. 'BASIC_W' funktioniert genau wie 'BASIC_B' und 'BASIC_L'; jedoch liefert
  200. es ein Wort; 'rel.addr' muœ wieder gerade sein.
  201.  
  202.  
  203. Befehl      BCLEAR               (R)
  204. ====================================
  205. Syntax:
  206.    BCLEAR
  207.  
  208. 'BCLEAR' l„scht den gerade aktiven Tastaturpuffer. Der Tastaturpuffer
  209. eines 'CON_'-Fensters kann durch IO_PEND% aktiviert werden.
  210.  
  211.  
  212. Funktion    BIN                  (F)
  213. ====================================
  214. Syntax:
  215.    a = BIN ('binary-digits')
  216.  
  217. 'BIN' faœt eine Zeichenkette 'binary-digits' als Bin€rzahl auf und liefert
  218. den zugeh„rigen Zahlenwert als Ganzzahl. 'binary-digits' darf nur '0' und
  219. '1' enthalten.
  220. Beispiel:
  221.  
  222.    PRINT #0, BIN ('11000001')
  223.    193
  224.  
  225.  
  226. Funktion    BIN$                 (F)
  227. ====================================
  228. Syntax:
  229.    a$ = BIN$ (long-int, bit-num)
  230.  
  231. 'BIN$' wandelt die 'bit-num' untersten Bin€rstellen der Zahl 'long-int' in
  232. eine Bin€rzeichenkette um.
  233. Beispiel:
  234.  
  235.    PRINT #0, BIN$ (231, 8)
  236.    11100111
  237.  
  238.  
  239. Befehl      BREAK                (R)
  240. ====================================
  241. Syntax:
  242.    BREAK flag
  243.    BREAK ON
  244.    BREAK OFF
  245.  
  246. 'BREAK' schaltet CTRL & SPACE f‡r BASIC-Programme ab ('flag' = 0) oder
  247. ein ('flag' <> 0). Vorsicht!!! Endlosschleifen k„nnen nach 'BREAK OFF'
  248. nicht wieder verlassen werden.
  249.  
  250.  
  251. Funktion    BREAK%               (R)
  252. ====================================
  253. Syntax:
  254.    a = BREAK%
  255.  
  256. 'BREAK%' liefert 0 bei abgeschaltetem CTRL & SPACE (verg. 'BREAK') und 1,
  257. falls CTRL & SPACE eingeschaltet ist.
  258. Beispiel:
  259.  
  260.       ...
  261.       130 BREAK OFF: REMark CTRL & SPACE ist nun abgeschaltet
  262.       ...
  263.       ...
  264.       250 PRINT 'CTRL & SPACE ist ';
  265.       260 IF BREAK% = 0: PRINT 'ab';: ELSE PRINT 'ein';
  266.       270 PRINT 'geschaltet'
  267.       ...
  268.       ...
  269.       960 BREAK ON: REMark CTRL & SPACE einschalten
  270.       ...
  271.  
  272.  
  273. Befehl      BSAVE                (R)
  274. ====================================
  275. Syntax:
  276.    BSAVE filename, address, length [p [dsz]]
  277.  
  278.    p = , | \ | !
  279.  
  280. 'BSAVE' speichert 'length' Bytes ab 'address' in der Datei 'filename' ab.
  281. Wird 'dsz' angegeben, dann wird eine Programmdatei mit 'dsz' als Gr„œe
  282. des Datenbereichs abgespeichert. Mit den  Trennzeichen ',', '\' und '!'
  283. wird Entschieden, weche Erg€nzung an den Dateinamen angeh€ngt werden soll.
  284. Im Falle das ',' gew€hlt wurde (oder 'TO' oder ';') wird keine Erg€nzung
  285. angeh€ngt. F‡r '\' wird bei vorhandenem 'dsz' '_ex' und sonst '_cde' ange-
  286. h€ngt, f‡r '!' hingegen '_ew' bzw. '_rext'. Wenn bereits eine Datei unter
  287. dem Namen 'filename' (+ extension) existiert, dann wird mit
  288. 'already exists' abgebrochen.
  289.  
  290. Beispiel:
  291.  
  292.    BSAVE flp2_Clock, a, 1000 \ 512
  293.    - legt 1000 Bytes ab a in der Programmdatei 'Clock_ex' in 'flp2_' ab.
  294.      Der 'Data Size' wird auf 512 Bytes festgelegt.
  295.  
  296.    BSAVE 'flp2_QUILL', AddrOfQuill, 53092 ! 1280
  297.    - legt 53092 Bytes ab 'AddrOfQuill' in der Programmdatei 'QUILL_ew' in
  298.      'flp2_' ab. Der 'Data Size' wird hierbei auf 1280 Bytes gesetzt.
  299.  
  300.    BSAVE 'flp2_ARC', AddrOfArc, 32000, 5000
  301.    - legt 32000 Bytes ab 'AddrOfArc' in der Programmdatei 'ARC' in 'flp2_'
  302.      ab. Der 'Data Size' wird auf 5000 Bytes festgelegt.
  303.  
  304.    BSAVE 'ram2_saturn_scr', 131072, 32768
  305.    - speichert den Inhalt des Bildschirmes in der Datendatei 'saturn_scr'
  306.      in 'ram2_'.
  307.  
  308.    BSAVE 'flp1_Compress', AddrOfCompress, 1000 \
  309.    - legt 1000 Bytes ab 'AddrOfCompress' in der Datendatei 'Compress_cde'
  310.      in 'flp1_' ab.
  311.  
  312.    BSAVE 'mdv1_HotII', AddrOfHotII, LenOfHotII !
  313.    - legt 'LenOfHotII' Bytes ab 'AddrOfHotII' in der DatenDatei
  314.      'HotII_rext' in 'mdv1_' ab.
  315.  
  316.  
  317. Befehl      BSAVE_O              (R)
  318. ====================================
  319. Syntax:
  320.    BSAVE_O filename, address, length [p [dsz]]
  321.  
  322.    p = , | \ | !
  323.  
  324. 'BSAVE_O' speichert 'length' Bytes ab 'address' in der Datei 'filename' ab.
  325. Wird 'dsz' angegeben, dann wird eine Programmdatei mit 'dsz' als Gr„œe
  326. des Datenbereichs abgespeichert. Mit den  Trennzeichen ',', '\' und '!'
  327. wird Entschieden, weche Erg€nzung an den Dateinamen angeh€ngt werden soll.
  328. Im Falle das ',' gew€hlt wurde (oder 'TO' oder ';') wird keine Erg€nzung
  329. angeh€ngt. F‡r '\' wird bei vorhandenem 'dsz' '_ex' und sonst '_cde' ange-
  330. h€ngt, f‡r '!' hingegen '_ew' bzw. '_rext'. Wenn bereits eine Datei unter
  331. dem Namen 'filename' (+ extension) existiert, dann diese ‡berschrieben.
  332.  
  333. Beispiel:
  334.  
  335.    BSAVE_O flp2_Clock, a, 1000 \ 512
  336.    - legt 1000 Bytes ab a in der Programmdatei 'Clock_ex' in 'flp2_' ab.
  337.      Der 'Data Size' wird auf 512 Bytes festgelegt.
  338.  
  339.    BSAVE_O 'flp2_QUILL', AddrOfQuill, 53092 ! 1280
  340.    - legt 53092 Bytes ab 'AddrOfQuill' in der Programmdatei 'QUILL_ew' in
  341.      'flp2_' ab. Der 'Data Size' wird hierbei auf 1280 Bytes gesetzt.
  342.  
  343.    BSAVE_O 'flp2_ARC', AddrOfArc, 32000, 5000
  344.    - legt 32000 Bytes ab 'AddrOfArc' in der Programmdatei 'ARC' in 'flp2_'
  345.      ab. Der 'Data Size' wird auf 5000 Bytes festgelegt.
  346.  
  347.    BSAVE_O 'ram2_saturn_scr', 131072, 32768
  348.    - speichert den Inhalt des Bildschirmes in der Datendatei 'saturn_scr'
  349.      in 'ram2_'.
  350.  
  351.    BSAVE_O 'flp1_Compress', AddrOfCompress, 1000 \
  352.    - legt 1000 Bytes ab 'AddrOfCompress' in der Datendatei 'Compress_cde'
  353.      in 'flp1_' ab.
  354.  
  355.    BSAVE_O 'mdv1_HotII', AddrOfHotII, LenOfHotII !
  356.    - legt 'LenOfHotII' Bytes ab 'AddrOfHotII' in der DatenDatei
  357.      'HotII_rext' in 'mdv1_' ab.
  358.  
  359.  
  360. Befehl      BTool_EXT            (R)
  361. ====================================
  362. Syntax:
  363.    BTool_EXT
  364.  
  365. 'BTool_EXT' schaltet den abschaltbaren Teil von B-Toolkit (das sind alle
  366. in dieser Beschreibung mit (R) versehenen Befehle/Funktionen) ein.
  367.  
  368.  
  369. Befehl      BTool_RMV            (R)
  370. ====================================
  371. Syntax:
  372.    BTool_RMV
  373.  
  374. 'BTool_RMV' schaltet den abschaltbaren Teil von B-Toolkit (das sind alle
  375. in dieser Beschreibung mit (R) versehenen Befehle/Funktionen) ab. Diese
  376. sind dann bis zum n€chsten 'BTool_EXT' nicht mehr verf‡gbar.
  377.  
  378.  
  379. Funktion    CBASE                (R)
  380. ====================================
  381. Syntax:
  382.    a = CBASE [(#ch)]
  383.  
  384. 'CBASE' liefert die Adresse der 'channel defninition' eines Kanals '#ch'
  385. (das ist der Datenbereich, mit dem QDOS auf Kanal arbeitet); Vorgabe f‡r
  386. '#ch' ist #1.
  387.  
  388.  
  389. Funktion    CHANID               (F)
  390. ====================================
  391. Syntax:
  392.    a = CHANID [(#ch)]
  393.  
  394. 'CHANID' liefert die 'channel id' eines Kanals '#ch' (das ist die Nummer,
  395. unter der dieser Kanal QDOS bekannt ist). Vorgabe f‡r '#ch' ist #1.
  396.  
  397.  
  398. Befehl      CHANNELS             (R)
  399. ====================================
  400. Syntax:
  401.    CHANNELS [channel]
  402.  
  403. 'CHANNELS' listet die f‡r QDOS offenen Kan€le ‡bersichtlich in 'channel'.
  404. 'channel' kann hierbei eine Kanalnummer "#ch" oder ein impliziter Kanal
  405. "\device-name" sein. Vorgabe f‡r 'channel' ist #1.
  406.  
  407.  
  408. Funktion    CHR$                 (F)
  409. ====================================
  410. Syntax:
  411.    a$ = CHR$ (char-range {, char-range})
  412.  
  413. 'CHR$' hat die aus den Argumenten 'char-range' entwickelten Teilzeichen-
  414. ketten in der Reihenfolge des Auftretens verkettet zum Ergebnis.
  415. 'char-range' hat hierbei folgende Bedeutung(en):
  416.  
  417.    char-range           Bedeutung
  418.       num               Ist 'num' in einem Byte darstellbar, dann ergibt
  419.                         sich das Zeichen, das 'num' im Zeichensatz
  420.                         entspricht; falls 'num' nicht durch ein Byte dar-
  421.                         stellbar ist, dann ergeben sich zwei Zeichen.
  422.  
  423.       str               Die Zeichenkette 'str' wird unver€ndert ‡ber-
  424.                         nommen.
  425.  
  426.       TO                Es wird eine Zeichenkette erzeugt, die aus s€mt-
  427.                         lichen Zeichen des Zeichensatzes in aufsteigender
  428.                         Reihenfolge besteht.
  429.  
  430.    num/str TO           Es wird eine Zeichenkette erzeugt, die aus allen
  431.                         Zeichen des Zeichensatzes ab 'num/str' in aufstei-
  432.                         gender Reihenfolge besteht. 'num/str' ist hierbei
  433.                         entweder eine (in einem Byte darstellbare) Zahl,
  434.                         oder eine Zeichenkette, deren erstes Zeichen
  435.                         benutzt wird. Eine leere Zeichenkette entspricht
  436.                         hierbei CHR$ (0).
  437.  
  438.    TO num/str           Es wird eine Zeichenkette erzeugt, die aus allen
  439.                         Zeichen des Zeichensatzes bis 'num/str' in auf-
  440.                         steigender Reihenfolge besteht. Eine leere
  441.                         Zeichenkette 'num/str' entspricht CHR$ (255).
  442.  
  443.    num/str1 TO num/str2     Es wird eine Zeichenkette erzeugt, die alle
  444.                         Zeichen des Zeichensatzes im Bereich zwischen
  445.                         'num/str1' und 'num/str2' enth€lt. Ist 'num/str1'
  446.                         leer, dann entspricht das CHR$ (0); ein leeres
  447.                         'num/str2' entspricht CHR$ (255).
  448.  
  449. Beispiele:
  450.  
  451.    OPEN #3, 'SER1': PRINT #3, CHR$ (27, 'M', ' ' TO 126, 10, 27, '@');:
  452.    CLOSE #3
  453.    - setzt einen (EPSON-kompatiblen) Drucker an 'SER1' auf 'Elite'-Modus,
  454.      gibt anschlieœend den gesamten sichtbaren Teil des ASCII-Zeichen-
  455.      satzes auf diesem aus und initialisiert den Drucker anschlieœend neu.
  456.  
  457.  
  458. Befehl      CLCHP                (F)
  459. ====================================
  460. Syntax:
  461.    CLCHP
  462.  
  463. 'CLCHP' l„scht s€mtliche mit 'ALCHP' erzeugten l„schbaren (!!!)
  464. Speicherbereiche; l„schbare Bereiche sind solche, die mit ALCHP ohne
  465. Trennzeichen bzw. zweiten Parameter erzeugt wurden.
  466. Beispiel:
  467.  
  468.    a = ALCHP (300)
  469.    b = ALCHP (512,)
  470.    c = ALCHP (6030)
  471.    d = ALCHP (512, 1)
  472.    CLCHP
  473.    - Die Speicherfl€chen, auf die 'a' und 'c' zeigen werden freigegeben,
  474.      die, auf die 'b' und 'd' zeigen hingegen nicht.
  475.  
  476.  
  477. Befehl      CLOSE                (F)
  478. ====================================
  479. Syntax:
  480.    CLOSE [channel] {, channel}
  481.  
  482. 'CLOSE' schlieœt alle angegebenen Kan€le 'channel'. Wird nichts angegeben,
  483. dann werden sogar BASIC-Kan€le bis auf #0, #1 und #2 geschlossen.
  484. 'channel' kann eine BASIC-Kananummer #ch sein, aber auch eine System-
  485. Kanalnummer \ch. Systemkan€le lassen sich mit dem 'CHANNELS'-Befehl
  486. listen.
  487. Beispiele:
  488.  
  489.    CLOSE #3, #4, #15
  490.    - schlieœt #3, #4 und #15
  491.  
  492.    CLOSE
  493.    - schlieœt alle BASIC-Kan€le auœer #0, #1 und #2
  494.  
  495.    CLOSE \4
  496.    - schlieœt den Systemkanal mit der Nummer 4
  497.  
  498. Vorsicht! Das 'Pointer Enviroment' und der MG(G)-'Point Patch' „ffnen ein
  499. Systemfenster. Dieses sorgt daf‡r, daœ der 'MODE'-Befehl auch weiterhin
  500. funktioniert. Wird dieses jedoch geschlossen, kann dies zum Absturz des
  501. QL f‡hren.
  502.  
  503.  
  504. Befehl      COMPRESS             (R)
  505. ====================================
  506. Syntax:
  507.    COMPRESS filename
  508.  
  509. 'COMPRESS' speichert den Bildschirm des QL in komprimierter Form in der
  510. Datei 'filename' ab. Die Kompression funktioniert jedoch nur, solange
  511. keine zu zuf€lligen Daten im Bidschirmspeicher stehen. Maximal ergibt sich
  512. eine Dateil€nge von 64K.
  513. Das 'data default device' des Toolkit II wird unterst‡tzt.
  514.  
  515.  
  516. Befehl      COPY                 (F)
  517. ====================================
  518.  
  519.  
  520. Befehl      CopySize             (F)
  521. ====================================
  522. Syntax:
  523.    CopySize size%
  524.  
  525. 'CopySize' legt die Gr„œe des Speicherplatzes, der f‡r die Befehle
  526. 'COPY', 'COPY_N', 'COPY_O' und 'COPY_ON' als Puffer reserviert werden
  527. soll, fest. 'size%' kann bis 32768 Bytes groœ werden.
  528.  
  529.  
  530. Befehl      COPY_N               (F)
  531. ====================================
  532. Syntax:
  533.    COPY_N [DEVn_]filename [, [DEVn_][filename|dirname_]]
  534.  
  535. 'COPY_N' funktioniert im wesentlichen wie der entsprechende
  536. Tony Tebby-Befehl; jedoch reicht es, beim zweiten Parameter einen
  537. Pfad (mit '_' am Ende) anzugeben; in diesem Fall wird der vollst€ndige
  538. Dateiname 'filename' dahinterkopiert.
  539. Beispiel:
  540.  
  541.    COPY_N 'flp1_ENTRY_asm' TO 'ram1_'
  542.    WDIR 'ram1_'
  543.    ...
  544.    ENTRY_asm
  545.    ...
  546.  
  547.  
  548. Befehl      COPY_O               (F)
  549. ====================================
  550. Syntax:
  551.    COPY_O [DEVn_]filename [, [DEVn_][filename|dirname_]]
  552.  
  553. 'COPY_O' funktioniert im wesentlichen wie der entsprechende
  554. Tony Tebby-Befehl; jedoch reicht es, beim zweiten Parameter einen
  555. Pfad (mit '_' am Ende) anzugeben; in diesem Fall wird der vollst€ndige
  556. Dateiname 'filename' dahinterkopiert.
  557. Beispiel:
  558.  
  559.    COPY_O 'flp1_ENTRY_asm' TO 'ram1_'
  560.    WDIR 'ram1_'
  561.    ...
  562.    ENTRY_asm
  563.    ...
  564.  
  565.  
  566. Befehl      COPY_ON              (F)
  567. ====================================
  568. Syntax:
  569.    COPY_ON [DEVn_]filename [, [DEVn_][filename|dirname_]]
  570.  
  571. 'COPY_ON' ist eine Kombination von 'COPY_O' und 'COPY_N'. Es kopiert
  572. eine Datei ohne 'header' und ‡berschreibt dabei eine vorhandene alte auf
  573. dem Zielmedium. Wie bei den anderen COPY-Befehlen reicht es, beim
  574. zweiten Parameter einen Pfad (mit '_' am Ende) anzugeben; in diesem Fall
  575. wird der vollst€ndige Dateiname 'filename' dahinterkopiert.
  576. Beispiel:
  577.  
  578.    COPY_ON 'flp1_ENTRY_asm' TO 'ram1_'
  579.    WDIR 'ram1_'
  580.    ...
  581.    ENTRY_asm
  582.    ...
  583.  
  584.  
  585. Funktion    CTAB$                (R)
  586. ====================================
  587. Syntax:
  588.    a$ = CTAB (b$ [, tab-size])
  589.  
  590. 'CTAB$' wandelt eine Zeichenkette derart um, das dort, wo dies m„glich war
  591. statt der Leerzeichen ein TAB-Zeichen (CHR$ (9)) steht. M„glich heiœt, daœ
  592. die Kette ab einer Postion bis zur n€chsten Tabulatorposition mindestens
  593. ein Leerzeichen enth€lt. 'tab-size' gibt hierbei die Tabulatorposition an,
  594. n€mlich alle 'tab-size' Zeichen. Die Voreinstellung f‡r 'tab-size' ist 8.
  595. Beispiele:
  596.  
  597.    PRINT #0, CTAB$ ('START:  MOVEM.L D1-D7/A1-A5,-(SP)')
  598.    START:#MOVEM.L#D1-D7/A1-A5,-(SP)
  599.  
  600.    PRINT #0, CTAB$ ('Dies  ist ein     Beispiel    f‡r die Verwendung von CTAB$', 6)
  601.    Dies#ist ein#Beispiel#f‡r die Verwendung von CTAB$
  602.  
  603.  
  604. Befehl      CURSOR               (F)
  605. ====================================
  606. Syntax:
  607.    CURSOR [#ch,] px, py
  608.    CURSOR [#ch,] gx, gy, dx, dy
  609.    CURSOR [#ch,] flag
  610.  
  611. 'CURSOR' mit zwei Argumenten setzt den 'Cursor' auf die Position in
  612. Pixel-Koordinaten 'px', 'py';
  613. 'CURSOR' mit vier Argumenten setzt den 'Cursor' auf die Position in
  614. den virtuellen Koordinaten 'gx', 'gy', 'dx', 'dy'.
  615. 'CURSOR' mit einem Argument schaltet den Cursor in Fenster '#ch' ein
  616. ('flag' <> 0) oder aus ('flag' = 0)
  617. Beispiele:
  618.  
  619.    CURSOR #1, ON: a$ = INKEY$ (#1, -1): CURSOR #1, OFF
  620.  
  621.    CURSOR 10, 15: PRINT 'ABCD': CURSOR 0, 0: PRINT 'ABCD'
  622.  
  623.    (Ausprobieren!)
  624.  
  625.  
  626. Funktion    CURSOR%              (R)
  627. ====================================
  628. Syntax:
  629.    a = CURSOR% (#ch)
  630.  
  631. 'CURSOR%' liefert den Status des Cursors des Fensters #ch (Vorgabe: #1).
  632. Hierbei ist das Ergebnis:
  633.       0     -     Cursor ist 'disabled'
  634.      -1     -     Cursor ist 'enabled' aber gerade unsichtbar
  635.       1     -     Cursor ist 'enabled' und sichtbar
  636.  
  637.  
  638. Funktion    CvCASE$              (R)
  639. ====================================
  640. Syntax:
  641.    a$ = CvCASE$ (b$ [, flag])
  642.  
  643. 'CvCASE$' dient dazu, alle Buchstaben einer Zeichenkette 'b$' in Groœ-
  644. ('flag' = 0) oder Kleinbuchstaben ('flag' <> 0) umzuwandeln.
  645. Voreinstellung f‡r 'flag' ist 1.
  646. Beispiele:
  647.  
  648.    PRINT #0, CvCASE$ ('ein neger mit gazelle zagt im regen nie', 0)
  649.    EIN NEGER MIT GAZELLE ZAGT IM REGEN NIE
  650.  
  651.    PRINT #0, CvCASE$ ('Otto', 1)
  652.    otto
  653.  
  654.    PRINT #0, CvCASE$ ('Groœ- und Kleinschreibung werden gleichbehandelt')
  655.    groœ- und kleinschreibung werden gleichbehandelt
  656.  
  657.  
  658. Funktion    CVF                  (R)
  659. ====================================
  660. Syntax:
  661.    a = CVF ('string')
  662.  
  663. 'CVF' liefert die ersten sechs Bytes einer Zeichenkette als Gleitpunkt-
  664. zahl.
  665.  
  666.  
  667. Funktion    CVI%                 (R)
  668. ====================================
  669. Syntax:
  670.    a% = CVI% ('string')
  671.  
  672. 'CVI' liefert die ersten zwei Bytes einer Zeichenkette als Ganzzahl.
  673.  
  674.  
  675. Funktion    CVL                  (R)
  676. ====================================
  677. Syntax:
  678.    a = CVL ('string')
  679.  
  680. 'CVL' liefert die ersten vier Bytes einer Zeichenkette als Gleitpunkt-
  681. zahl.
  682.  
  683.  
  684. Funktion    CVS$                 (R)
  685. ====================================
  686. Syntax:
  687.    a$ = CVS$ ('string')
  688.  
  689. 'CVS$' liefert eine in einer Zeichenkette 'string' enthaltene Zeichen-
  690. kette (also 1 Wort L€nge + den Text).
  691.  
  692.  
  693. Befehl      DDEV                 (F)
  694. ====================================
  695. Syntax:
  696.    DDEV default-num, devicename
  697.  
  698. 'DDEV' legt den Namen 'devicename' (BASIC-Name oder Zeichenkette) als
  699. Voreinstellung f‡r die Toolkit II-Opreationen 'LOAD', ... usw. an.
  700. 'default-num' entscheidet, welche Voreinstellung angelegt wird:
  701.  
  702.    0     -     Programme; alle Operationen wie 'LOAD', 'EXEC', ...
  703.                benutzen diese Einstellung
  704.  
  705.    1     -     Daten; Operationen wie 'FILE_OPEN', 'OPEN', ...
  706.                und die 'COPY'-Befehle benutzen diese Einstellung.
  707.  
  708.    2     -     Ziel; Die 'COPY'-Befehle und der 'SPL'-Befehl benutzen
  709.                diese Voreinstellung.
  710.  
  711. Beispiele:
  712.  
  713.    DDEV 0, 'FLP2': EXEC 'editor'
  714.    - startet das Programm 'editor' von 'flp2_'
  715.  
  716.    DDEV 1, 'ram2_': WDIR
  717.    - listet das Inhaltsverzeichnis von 'ram2_' in Fenster #1
  718.  
  719.  
  720. Funktion    DDEV$                (F)
  721. ====================================
  722. Syntax:
  723.    a$ = DDEV$ (default-num)
  724.  
  725. 'DDEV$' liefert die mit 'DDEV' angelegte Voreinstellung.
  726. Beispiele: (mit unter 'DDEV' angegebenen Einstellungen)
  727.  
  728.    PRINT #0, DDEV$ (0)
  729.    FLP1_
  730.  
  731.    PRINT #0, DDEV$ (1)
  732.    ram2_
  733.  
  734.  
  735.  
  736. Funktion    DEFAULT              (R)
  737. ====================================
  738. Syntax:
  739.    a = DEFAULT (parameter, float-expr)
  740.  
  741. Ist 'parameter' ein Parameter einer in BASIC geschriebenen Prozedur, dann
  742. liefert 'DEFAULT' den Wert dieses Parameters, wenn er beim Aufruf der
  743. Prozedur angegeben wurde (also einen definierten Wert hat); wurde f‡r
  744. 'parameter' jedoch beim Aufruf nichts ‡bergeben, dann liefert 'DEFAULT'
  745. den Wert von 'float-expr' (eine Gleitpunktzahl also).
  746.  
  747.  
  748. Funktion    DEFAULT$             (R)
  749. ====================================
  750. Syntax:
  751.    a$ = DEFAULT$ (parameter, string-expr)
  752.  
  753. 'DEFAULT$' arbeitet wie 'DEFAULT'; jedoch wird im Falle eines undefinier-
  754. ten Parameters die Zeichenkette 'string-expr' geliefert.
  755.  
  756.  
  757. Funktion    DEFAULT%             (R)
  758. ====================================
  759. Syntax:
  760.    a% = DEFAULT% (parameter, int-expr)
  761.  
  762. 'DEFAULT%' entspricht 'DEFAULT' und 'DEFAULT$'; hier wird jedoch f‡r einen
  763. undefinierten Parameter 'parameter' eine Ganzzahl ('int-expr') zur‡ck-
  764. gegeben.
  765.  
  766.  
  767. Funktion    DEFINED              (R)
  768. ====================================
  769. Syntax:
  770.    flag = DEFINED (variable)
  771.  
  772. 'DEFINED' liefert 1, wenn 'variable' (eine normale BASIC-Variable)
  773. definiert wurde (z.B. durch Zuweisung), und 0, falls nicht.
  774. Beispiele:
  775.  
  776.       NEW
  777.       PRINT #0, DEFINED (a)
  778.       0
  779.  
  780.       a = ALCHP (30)
  781.       PRINT #0, DEFINED (a)
  782.       1
  783.  
  784.  
  785. Funktion    DirDefAddr           (R)
  786. ====================================
  787. Syntax:
  788.    addr = DirDefAddr (directory-device-name)
  789.  
  790. 'DirDefAddr' liefert die Adresse der Definition eines Plattentreibers
  791. (RAM-Disk, FLoPpy-Disk, MicroDriVe, WINchester, ...). F‡r die Beschreibung
  792. eines Plattentreibers muœ im 'Advanced User Guide' nachgeschlagen werden.
  793. Beispiel:
  794.  
  795.    PRINT #0, DirDefAddr (FLP)
  796.    177488
  797.    PRINT #0, PEEK$ (177488+60)
  798.    FLP
  799.  
  800.  
  801. Befehl      DISCNAME             (R)
  802. ====================================
  803. Syntax:
  804.    DISCNAME DEVn_new_name
  805.  
  806. 'DISCNAME' benennt eine Diskette um. Der Disketten-Controller muœ dem
  807. Tony Tebby-Standard gen‡gen, d.h. Disketten m‡ssen sich direkt lesen
  808. und schreiben lassen (OPEN #ch, 'DEVn_*Dxy'). 'DEVn_' ist der Disketten-
  809. Ger€tename und 'new_name' der Name, den die Diskette bekommen soll
  810. (notfalls wird dieser auf die 10 zul€ssigen Zeichen gek‡rzt).
  811.  
  812.  
  813. Funktion    EQ$                  (R)
  814. ====================================
  815. Syntax:
  816.    flag = EQ$ (comp-type, string1, string2)
  817.  
  818. 'EQ$' vergleicht die beiden Zeichenketten mit dem Vergleichstyp
  819. 'comp-type' und liefert 1, falls beide Zeichenketten 'gleich' (nach
  820. 'comp-type') waren, sonst 0.
  821. 'comp-type' hat folgende Bedeutung:
  822.  
  823.   -1     -     Die Zeichenketten werden Zeichenweise nach ihrer Reihenfol-
  824.                ge im ASCII-Zeichensatz verglichen.
  825.  
  826.    0     -     Die Zeichenketten werden Zeichenweise verglichen, wobei
  827.                Groœ- und Kleinschreibung, sowie enthaltene Zahlen, sofern
  828.                sie nicht zeichenweise ‡bereinstimmen unterschieden werden.
  829.  
  830.    1     -     Die Zeichenketten werden wie nach Typ 1 verglichen, mit dem
  831.                Unterschied, daœ Groœ- und Kleinschreibung nicht (!) unter-
  832.                schieden werden.
  833.  
  834.    2     -     In den Zeichenketten enthaltene Zahlen werden numerisch,
  835.                d.h. nach ihrem Zahlenwert verglichen; Groœ- und Klein-
  836.                schreibung werden unterschieden.
  837.  
  838.    3     -     Wie Typ 2; jedoch werden Groœ- und Kleinschreibung nicht
  839.                unterschieden.
  840.  
  841.  
  842. Funktion    ERR_DF               (F)
  843. ====================================
  844. Syntax:
  845.    a = ERR_DF
  846.  
  847. 'ERR_DF' behebt den entsprechenden Fehler im ROM der QL-Versionen JS und
  848. MG(G).
  849.  
  850.  
  851. Funktion    ETAB$                (R)
  852. ====================================
  853. Syntax:
  854.    a$ = ETAB$ (b$ [, tab-size])
  855.  
  856. 'ETAB$' wandelt in einer Zeichenkette enthaltene TAB-Zeichen (CHR$(9))
  857. in soviele Leerzeichen um, das die folgenden Zeichen genau auf der sich
  858. aus 'tab-size' berechneten Tabulatorposition befinden, d.h. z.B. f‡r
  859. 'tab-size' = 8 die Positionen 1, 9, 17, ...
  860. Die Voreinstellung f‡r 'tab-size' ist 8.
  861. Beispiel:
  862.  
  863.    PRINT #0, ETAB$ (CHR$ ('START:', 9, 'MOVEM.L', 9, 'D1-D7/A1-A5,-(SP)'), 12)
  864.    START:      MOVEM.L     D1-D7/A1-A5,-(SP)
  865.  
  866.  
  867. Befehl      EXPAND               (R)
  868. ====================================
  869. Syntax:
  870.    EXPAND filename
  871.  
  872. 'EXPAND' l€dt eine mit 'COMPRESS' abgespeicherte Datei in den Bildschirm-
  873. speicher des QL zur‡ck.
  874. Das 'data default device' des Toolkit II wird unterst‡tzt.
  875.  
  876.  
  877. Befehl      EXTRAS               (F)
  878. ====================================
  879. Syntax:
  880.    EXTRAS [channel,] ['wild',] [line-size]
  881.  
  882. 'EXTRAS' listet die Namen der Befehle aller verf‡gbaren Toolkits in ‡ber-
  883. sichtlicher Form in 'channel' auf - und zwar spaltenweise. 'wild'
  884. entscheidet dar‡ber, welche Befehle aufgef‡hrt werden sollen; wird z.B.
  885. 'a' ‡bergeben, dann werden alle Befehle, die mit einem 'A' beginnen (bei
  886. vorhandenem Toolkit II z.B.: ALTKEY ALARM AJOB ...) gelistet. Die Ausgabe
  887. erfolgt in Spalten zu (Vielfachen von) 12 Zeichen. 'line-size' entscheidet
  888. ‡ber die maximale L€nge einer Ausgabezeile.
  889. In dem Falle, daœ 'line-size' nicht angegeben wird, gilt:
  890. Wird ein BASIC-Kanal #ch f‡r 'channel' verwendet, dann dient die
  891. 'WIDTH'-Einstellung dieses Kanals als 'line-size'. Sonst wird 85 Zeichen
  892. Ausgabebreite angenommen. Zu beachten ist jedoch, daœ die Grenzen eines
  893. Bildschirmfensters Vorrang vor 'line-size' haben; ist 'line-size' n€mlich
  894. gr„œer als die maximale Ausgabebreite eines Bildschirmfensters (in
  895. Zeichen), dann wird es auf diese gek‡rzt. Wird z.B. 80 angegeben, das
  896. Fenster hat aber nur 32 Zeichen Platz in einer Zeile, dann wird auch nur
  897. mit maximal 32 Zeichen pro Zeile ausgegeben.
  898. F‡r 'channel' kann schlieœlich noch eine BASIC-Kanalnummer stehen - oder
  899. auch ein impliziter Kanal '\device'.
  900. Beispiele:
  901.  
  902.    EXTRAS
  903.  
  904.    EXTRAS #2, 'AL'
  905.    - bei vorhandenem Toolkit II werden ALARM, ALTKEY und ALCHP ausgegeben
  906.  
  907.    EXTRAS  \'SER1', 'C', 120
  908.    - Alle Befehle, die mit einem 'C' beginnen, werden in Zeilen zu je 120
  909.      Zeichen ‡ber die serielle Schnittstelle ausgegeben
  910.  
  911.    OPEN #3, 'SER1': WIDTH #3, 120: EXTRAS #3, 'C': CLOSE #3
  912.    - bewirkt dasselbe, wie das 2. Beispiel.
  913.  
  914.  
  915. Funktion    FDAT                 (F)
  916. ====================================
  917. Syntax:
  918.    a = FDAT [(channel)]
  919.  
  920. Wenn 'channel' (BASIC-Kanalnummer '#ch' oder impliziter Kanal '\device')
  921. eine Datei bezeichnet, die normalerweise durch 'EXEC'/'EXEC_W' als
  922. Programm aufgerufen wird, dann liefert 'FDAT' die Gr„œe des f‡r Daten
  923. dieses Programmes zu reservierenden Speicherpatzes.
  924.  
  925.  
  926. Funktion    FGETB                (R)
  927. ====================================
  928. Syntax:
  929.    a = FGETB [(#ch)]
  930.  
  931. 'FGETB' liefert ein vom Kanal '#ch' gelesenes Byte als Zahl zwischen
  932. 0 und 255 ab.
  933.  
  934.  
  935. Funktion    FGETF                (R)
  936. ====================================
  937. Syntax:
  938.    a = FGETF [(#ch)]
  939.  
  940. 'FGETF' faœt die n€chsten sechs von dem Kanal gelesenen Bytes als
  941. Gleitpunktzahl auf und liefert letztere als Funktionsergebnis ab.
  942.  
  943.  
  944. Funktion    FGETH$               (R)
  945. ====================================
  946. Syntax:
  947.    a$ = FGETH$ [(#ch)]
  948.  
  949. 'FGETH$' liefert den 'file-header' der Datei '#ch' als 64 Bytes lange
  950. Zeichenkette.
  951.  
  952.  
  953. Funktion    FGETL                (R)
  954. ====================================
  955. Syntax:
  956.    a = FGETL [(#ch)]
  957.  
  958. 'FGETL' faœt die n€chsten vier vom Kanal '#ch' kommenden Bytes als
  959. Langwort; dieses ist (in eine Gleitpunktzahl umgewandelt) das Funktions-
  960. ergebnis.
  961.  
  962.  
  963. Funktion    FGET$                (R)
  964. ====================================
  965. Syntax:
  966.    a$ = FGET$ [(#ch)]
  967.  
  968. 'FGET$' liest eine Zeichenkette vom Kanal '#ch'. Es werden genausoviele
  969. Bytes gelesen, wie die ersten zwei gelesenen Bytes plus zwei angeben.
  970.  
  971.  
  972. Funktion    FGET%                (R)
  973. ====================================
  974. Syntax:
  975.    a% = FGET% [(#ch)]
  976.  
  977. 'FGET%' liest zwei Bytes von '#ch' und liefert diese als Ganzzahl ab.
  978.  
  979.  
  980. Funktion    FILE_OPEN            (F)
  981. ====================================
  982. Syntax:
  983.    ch_or_err = FILE_OPEN ([#ch,] devicename [, open-mode])
  984.  
  985. 'FILE_OPEN' dient zum er„ffnen eines 'devices'. Ergebnis ist, bei
  986. fehlendem ersten Argument '#ch' die BASIC-Kanalnummer, mit der er„ffnet
  987. wurde, oder eine (negative) QDOS-Fehlernummer; wurde '#ch' angegeben,
  988. dann ergibt sich f‡r erfolgreiches Er„ffnen 0. 'open-mode' ist f‡r
  989. Dateien die Art, in der Er„ffnet werden soll und f‡r 'PIPE's die
  990. QDOS-'channel id' der 'output pipe', die mit der zu er„ffnenden
  991. 'input pipe' verbunden werden soll. Diese kann f‡r BASIC-Kan€le mittels
  992. 'CHANID' (siehe weiter oben) ermittelt werden.
  993. Beispiele:
  994.  
  995.       con_ch = FILE_OPEN (#3, 'CON')
  996.  
  997.       scr_ch = FILE_OPEN ('SCR')
  998.  
  999.       100 out_pipe = FILE_OPEN ('PIPE_5000')
  1000.       110 in_pipe = FILE_OPEN ('PIPE', CHANID (#out_pipe))
  1001.       120 DIR #out_pipe, 'MDV1_': CLOSE #out_pipe
  1002.       125 f = 0
  1003.       130 REPeat get_dir
  1004.       140   IF EOF (#in_pipe): EXIT get_dir
  1005.       150   INPUT #in_pipe, a$
  1006.       160   PRINT a$; TO 37;: IF f: PRINT
  1007.       165   f = NOT f
  1008.       170 END REPeat get_dir
  1009.       180 CLOSE #in_pipe
  1010.  
  1011.  
  1012. Funktion    FIND                 (R)
  1013. ====================================
  1014. Syntax:
  1015.    a = FIND ('procedure-name')
  1016.  
  1017. 'FIND' liefert die erste Zeilennummer der Definiton einer in BASIC ge-
  1018. schriebenen Prozedur/Funktion bzw. die (absolute) Adresse eines in
  1019. Maschinensprache geschriebenen Befehls (einer Funktion).
  1020. Beispiel:
  1021.  
  1022.       MONQL FIND ('BASE_N$')
  1023.       - setzt den MONQL-Monitor/Debugger auf die Startadresse von
  1024.         'BASE_N$'.
  1025.  
  1026.  
  1027. Funktion    FLEN                 (F)
  1028. ====================================
  1029. Syntax:
  1030.    a = FLEN [(channel)]
  1031.  
  1032. 'FLEN' liefert die L€nge der mit 'channel' angesprochenen Datei.
  1033. 'channel' ist eine BASIC-Kanalnummer oder ein impliziter Kanal '\device'.
  1034.  
  1035.  
  1036. Funktion    FNAME$               (F)
  1037. ====================================
  1038. Syntax:
  1039.    a$ = FNAME$ [(channel)]
  1040.  
  1041. 'FNAME$' liefert den Namen der mit 'channel' angesprochenen Datei.
  1042. 'channel' ist eine BASIC-Kanalnummer oder ein impliziter Kanal '\device'.
  1043.  
  1044.  
  1045. Funktion    FPOS                 (F)
  1046. ====================================
  1047. Syntax:
  1048.    a = FPOS [(#ch)]
  1049.  
  1050. 'FPOS' liefert den aktuellen Stand des Dateizeigers von '#ch', d.h. die
  1051. Position von der bei der n€chsten Lese-Operation gelesen / an die bei der
  1052. n€chsten Schreiboperation geschrieben wird. '#ch' ist auf #1 voreinge-
  1053. stellt.
  1054.  
  1055.  
  1056. Befehl      FPOS_A               (R)
  1057. ====================================
  1058. Syntax:
  1059.    FPOS_A [#ch,] position
  1060.  
  1061. 'FPOS_A' bringt den Dateizeiger von '#ch' an die Position 'position'
  1062. (Langwort). '#ch' ist auf #1 voreingestellt.
  1063.  
  1064.  
  1065. Befehl      FPOS_R               (R)
  1066. ====================================
  1067. Syntax:
  1068.    FPOS_R [#ch,] offset
  1069.  
  1070. 'FPOS_R' verschiebt den Dateizeiger von '#ch' um 'offset' Bytes nach
  1071. vorn ('offset' < 0) oder nach hinten ('offset' > 0).
  1072. Die Voreinstellung f‡r '#ch' ist #1.
  1073.  
  1074.  
  1075. Befehl      FPUTF                (R)
  1076. ====================================
  1077. Syntax:
  1078.    FPUTF [#ch,] fexpr {, fexpr}
  1079.  
  1080. 'FPUTF' schreibt die Gleitpunktzahlen 'fexpr' nach '#ch' (Voreinstellung:
  1081. #1).
  1082.  
  1083.  
  1084. Befehl      FPUTL                (R)
  1085. ====================================
  1086. Syntax:
  1087.    FPUTL [#ch,] longword {, longword}
  1088.  
  1089. 'FPUTL' schreibt seine Argumente 'longword' als Langworte (vier Bytes)
  1090. nach '#ch' (#1).
  1091.  
  1092.  
  1093. Befehl      FPUT$                (R)
  1094. ====================================
  1095. Syntax:
  1096.    FPUT$ [#ch,] string {,string}
  1097.  
  1098. 'FPUT$' schreibt seine Argumente 'string' als Zeichenketten (zwei Bytes
  1099. L€nge gefolgt von dem eigentlichen Text) nach '#ch' (#1).
  1100.  
  1101.  
  1102. Befehl      FPUT%                (R)
  1103. ====================================
  1104. Syntax:
  1105.    FPUT% [#ch,] iexpr {, iexpr}
  1106.  
  1107. 'FPUT%' schreibt seine Argumente 'iexpr' als (2 Byte-) Ganzzahlen nach
  1108. '#ch' (#1).
  1109.  
  1110.  
  1111. Funktion    FREAD$               (R)
  1112. ====================================
  1113. Syntax:
  1114.    a$ = FREAD$ (#ch, length)
  1115.  
  1116. 'FREAD$' liest (maximal) 'length' Bytes vom Kanal '#ch' und gibt diese als
  1117. Zeichenkette zur‡ck. Wird ein Dateiende erreicht, dann werden dement-
  1118. sprechend auch weniger Zeichen zur‡ckgegeben.
  1119. Vorsicht! 'FREAD$' liefert bei auftretenden Lesefehlern keine
  1120. Fehlermeldung. Daher sollte das Funktionsergebnis nicht in Ausdr‡cken
  1121. weiterverwendet werden. Ein sich ergebender Fehler kann mittels
  1122. 'ERNUM' (JS/MG(G)) bzw. 'Q_ERR' (QLib_ext(ensions)) abgefragt und weiter-
  1123. verarbeitet werden. (inzuzuf‡gen ist, daœ ein Dateiende nicht als Fehler
  1124. angesehen wird und demzufolge auch nicht durch 'ERNUM' zu bestimmen ist,
  1125. sondern durch vergleich der L€nge des Ergebnisses mit 'length'.
  1126. Beispiel:
  1127.  
  1128.    ...
  1129.    9340 a$ = FREAD$ (#4, 600)
  1130.    9350 fails = Q_ERR
  1131.    9360 IF (fails = 0) AND (LEN (a$) < 600): end_file = 1
  1132.    9370 IF fails
  1133.    ...
  1134.  
  1135. (Ausprobieren!)
  1136.  
  1137.  
  1138. Befehl      FREEZE               (R)
  1139. ====================================
  1140. Syntax:
  1141.    FREEZE flag
  1142.  
  1143. 'FREEZE' schaltet den Bildschirm-Freeze (CTRL & F5) f‡r 'flag' = 0 ab
  1144. und f‡r 'flag' <> 0 wieder ein.
  1145. Beispiel:
  1146.  
  1147.    FREEZE OFF: WDIR: FREEZE ON
  1148.    (Ausprobieren!)
  1149.  
  1150.  
  1151. Funktion    FREEZE%              (R)
  1152. ====================================
  1153. Syntax:
  1154.    flag = FREEZE%
  1155.  
  1156. 'FREEZE' liefert 1 bei eingeschaltetem und 0 bei abgeschaltetem CTRL & F5.
  1157.  
  1158.  
  1159. Funktion    FREE_MEM             (F)
  1160. ====================================
  1161. Syntax:
  1162.    free_area = FREE_MEM
  1163.  
  1164. 'FREE_MEM' liefert die Gr„œe des Bereichs zwischen dem Ende des
  1165. 'common heap' und dem Anfang des BASIC-Programmbereichs in Bytes zur‡ck.
  1166.  
  1167.  
  1168. Funktion    FSETH$               (R)
  1169. ====================================
  1170. Syntax:
  1171.    FSETH$ [#ch,] string
  1172.  
  1173. 'FSETH$' setzt die ersten 14 Bytes des 'file headers' der Datei '#ch'
  1174. neu. Die Zeichenkette 'string' sollte vorher mit 'FGETH$' eingelesen
  1175. worden sein; im ‡brigen werden auch nur Zeichenketten der L€ngen 14 oder
  1176. 64 akzeptiert.
  1177.  
  1178.  
  1179. Funktion    FTYP                 (F)
  1180. ====================================
  1181. Syntax:
  1182.    a = FTYP [(channel)]
  1183.  
  1184. 'FTYP' liefert den Typ der Datei 'channel'. Dieser ist:
  1185.  
  1186.    0     -     f‡r BASIC-Programme, MC-Befehle, Daten usw.
  1187.    1     -     f‡r mit 'EXEC'/'EXEC_W' ausf‡hrbare Dateien
  1188.    2     -     f‡r die von (unter anderem) von 'Prospero - PASCAL'
  1189.                erzeugten '_REL' - Dateien sowie f‡r die Prozedurbibliothek
  1190.                dieses (und anderer) Compilers.
  1191.    n     -     irgendein anderer Dateityp (n = 3, ..., 255).
  1192.  
  1193.  
  1194. Funktion    FUPDT                (F)
  1195. ====================================
  1196. Syntax:
  1197.    a = FUPDT [(channel)]
  1198.  
  1199. 'FUPDT' liefert das 'update date', d.h. das Datum der letzten  nderung der
  1200. Datei 'channel' in interner Form. Das Datum als Zeichenkette erh€lt man,
  1201. indem man auf das Ergebnis von 'FUPDT' die Funktion 'DATE$' anwendet, z.B.
  1202.  
  1203.    PRINT DATE$ (FUPDT (\flp1_GENQL_bin))
  1204.  
  1205.  
  1206. Funktion    FXTRA                (F)
  1207. ====================================
  1208. Syntax:
  1209.    a = FXTRA [(channel)]
  1210.  
  1211. 'FXTRA' liefert den Inhalt der bislang unbenutzten vier Bytes des
  1212. 'file headers' der Datei 'channel', die hinter denen von 'FDAT' gelesenen
  1213. in diesem liegen.
  1214.  
  1215.  
  1216. Funktion    GE$                  (R)
  1217. ====================================
  1218. Syntax:
  1219.    flag = GE$ (comp-type, a$, b$)
  1220.  
  1221. 'GE$' vergleicht 'a$' und 'b$' mit dem Vergleichstyp 'comp-type' (siehe
  1222. hierf‡r: 'EQ$') und liefert 1, wenn 'a$' entspr. 'comp-type' gr„œer oder
  1223. gleich 'b$' ist, sonst 0.
  1224.  
  1225.  
  1226. Funktion    GT$                  (R)
  1227. ====================================
  1228. Syntax:
  1229.    flag = GT$ (comp-type, a$, b$)
  1230.  
  1231. 'GT$' vergleicht 'a$' und 'b$' mit dem Vergleichstyp 'comp-type' (siehe
  1232. hierf‡r: 'EQ$') und liefert 1, wenn 'a$' entspr. 'comp-type' gr„œer als
  1233. 'b$' ist, sonst 0.
  1234.  
  1235.  
  1236. Funktion    HeapFree             (R)
  1237. ====================================
  1238. Syntax:
  1239.    a = HeapFree
  1240.  
  1241. 'HeapFree' liefert die L€nge des gr„œten zusammenh€ngenden Speicher-
  1242. platzes im 'common heap' bzw., die L€nge des Bereichs zwischen dem Ende
  1243. des 'common heap' und dem SuperBASIC-Programmbereich (sofern dieser gr„œer
  1244. als alle Speicherfl€chen im 'common heap' ist).
  1245.  
  1246.  
  1247. Funktion    HEX                  (F)
  1248. ====================================
  1249. Syntax:
  1250.    a = HEX ('hex-string')
  1251.  
  1252. 'HEX' faœt die Zeichenkette 'hex-string' als hexadezimalzahl auf und
  1253. gibt das maschineninterne  quivalent zu dieser zur‡ck.
  1254. Beispiel:
  1255.  
  1256.    PRINT #0, HEX ('C0')
  1257.    192
  1258.  
  1259.  
  1260. Funktion    HEX$                 (F)
  1261. ====================================
  1262. Syntax:
  1263.    a$ = HEX$ (long-int, bit-num)
  1264.  
  1265. 'HEX$' wandelt 'bit-num' Bin€rstellen von 'long-int' in eine hexadezimale
  1266. Zeichenkette um und gibt diese zur‡ck.
  1267. Beispiel:
  1268.  
  1269.    PRINT #0, HEX$ (223, 16)
  1270.    00DF
  1271.  
  1272.  
  1273. Befehl      INITTURTLE           (R)
  1274. ====================================
  1275. Syntax:
  1276.    INITTURTLE [#ch]
  1277.  
  1278. 'INITTURTLE' setzt die Werte des Graphik-Cursors eines BASIC-Fensters auf
  1279. ihre Standarderte zur‡ck. Es entspricht der Befehlsfolge:
  1280. PENUP: MOVETO 0, 0: TURNTO 0
  1281.  
  1282.  
  1283. Funktion    INPUT$               (R)
  1284. ====================================
  1285. Syntax:
  1286.    a$ = INPUT$ ([#ch,] length)
  1287.  
  1288. 'INPUT$' liest aus '#ch' 'length' Bytes maximal jedoch bis zum n€chsten
  1289. 'line feed' (einschl. diesem) von '#ch'. Falls bei einer Datei das
  1290. Dateiende w€rend des Lesens ‡berschritten wird, dann werden dement-
  1291. sprechend nur die Bytes bis zu diesem eingelesen.
  1292. Vorsicht! 'INPUT$' liefert bei fehlerhaften Dateioperationen keine
  1293. Fehlermeldung. Daher solte es nicht in Ausdr‡cken, sondern nur in
  1294. Zuweisungen verwendet werden. Der Fehler kann direkt danach durch
  1295. 'ERNUM' (JS/MG(G)) bzw. 'Q_ERR' (QLib_ext(ensions)) abgefragt werden.
  1296. Beispiel:
  1297.  
  1298.    ...
  1299.    1320 a$ = INPUT$ (#3, 30)
  1300.    1330 fails = ERNUM
  1301.    ...
  1302.  
  1303.  
  1304. Funktion    IO_PEND%             (R)
  1305. ====================================
  1306. Syntax:
  1307.    a = IO_PEND% [(#ch)]
  1308.  
  1309. 'IO_PEND%' testet einen Kanal. Ergebnis ist eine QDOS-Fehlernummer oder 0.
  1310. Bei Bildschirmfenstern kann dies dazu verwendet werden, den Tastaturpuffer
  1311. eines solchen in den Vordergrund zu holen, d.h. daœ alle folgenden
  1312. Eingaben von diesem erfolgen.
  1313.  
  1314.  
  1315. Funktion    JobCBS               (R)
  1316. ====================================
  1317. Syntax:
  1318.    a = JobCBS (job-id)
  1319.  
  1320. 'JobCBS' liefert die Basisadresse des Kontrollbereichs eines Jobs, das ist
  1321. die Adresse, wo bei einem Task-Wechsel die Register hin gerettet werden
  1322. bzw. wo Informattionen wie die Priorit€t des Jobs usw. stehen.
  1323.  
  1324.  
  1325. Befehl      KillCmd              (F)
  1326. ====================================
  1327. Syntax:
  1328.    KillCmd 'ext_name'
  1329.  
  1330. 'KillCmd' entfernt ein mit 'MakeCmd' resident gemachtes Programm
  1331. (und nur ein solches!) wieder aus dem Speicher.
  1332. 'KillCmd' pr‡ft, ob ein Job mit diesem Programmcode l€uft. In diesem
  1333. Fall bricht der Befehl mit 'in use' ab. Jobs mit Kopien des Programmcodes
  1334. f‡hren bei 'KillCmd' jedoch nich zum Abbruch.
  1335. Beispiel:
  1336.  
  1337.       - Wurde der 'Digital Precision'-Editor mit 'MakeCmd' (siehe dort)
  1338.         unter dem Namen 'DP_Edit' resident gemacht, dann entfernt
  1339.       KillCmd 'DP_Edit'
  1340.       - diesen wieder aus dem Speicher.
  1341.  
  1342.  
  1343. Befehl      KJOB                 (F)
  1344. ====================================
  1345. Syntax:
  1346.    KJOB job-id
  1347.  
  1348. 'KJOB' entfernt einen Job aus dem System.
  1349.  
  1350.  
  1351. Befehl      KJOBS                (F)
  1352. ====================================
  1353. Syntax:
  1354.    KJOBS
  1355.  
  1356. 'KJOBS' entfernt alle Jobs auœer Job 0 (SuperBASIC) aus dem System; dieser
  1357. Befehl ist mit Vorsicht anzuwenden, da z.B Jobs die durch den Aufruf des
  1358. 'Eddi Young'-Editors entstanden sind, nur mit diesem auch wieder entfernt
  1359. werden d‡rfen (sonst st‡rtzt der QL ab).
  1360.  
  1361.  
  1362. Befehl      LBYTES               (F)
  1363. ====================================
  1364. Syntax:
  1365.    LBYTES filename, address
  1366.  
  1367. 'LBYTES' l€dt den Inhalt der Datei 'filename' ab 'address' vollst€ndig in
  1368. den Speicher. Wird 'filename' nicht gefunden, dann wird nacheinander mit
  1369. den Erg€nzungen '_cde', '_rext' und '_rom' weitergesucht. Wird auch
  1370. 'filename'&'ext' ('ext' = '_cde', '_rext', '_rom') nicht gefunden, dann
  1371. wird mit 'not found' abgebrochen. Das 'Data Default' wird unterst‡tzt.
  1372.  
  1373. Beispiel:
  1374.  
  1375.    LBYTES 'flp2_saturn_scr', 131072
  1376.    - l€dt die Datei 'saturn_scr' von 'flp2_' in den Bildschirmspeicher.
  1377.  
  1378.  
  1379. Funktion    LE$                  (R)
  1380. ====================================
  1381. Syntax:
  1382.    a = LE$ (comp-type, a$, b$)
  1383.  
  1384. 'LE$' vergleicht die Zeichenketten 'a$' und 'b$'  mit dem Vergleichstyp
  1385. 'comp-type'. Ergebnis ist 1, wenn a$ vor b$ (nach 'comp-type') ist, bzw.
  1386. wenn a$ = b$ ist, und 0 in jedem anderen Fall. F‡r 'comp-type' muœ unter
  1387. 'EQ$' nachgesehen werden.
  1388.  
  1389.  
  1390. Funktion    LOAD_FILE            (R)
  1391. ====================================
  1392. Syntax:
  1393.    a = LOAD_FILE ([#ch,] buffer-address, buffer-size)
  1394.  
  1395. 'LOAD_FILE' l€dt den Inhalt der Datei #ch (Voreinstellung: #1) in den
  1396. Speicher ab der Adresse 'buffer-address'. Maximal werden 'buffer-size'
  1397. Bytes geladen. Ergebnis ist die Zahl der tats€chlich geladenen Bytes.
  1398. Vorsicht! Im Fehlerfall ist das Ergebnis von LOAD_FILE -1. Der Fehler
  1399. kann dann mit 'ERNUM' (JS/MG(G)) bzw. 'Q_ERR' (QLib_ext(ensions))
  1400. abgefragt werden.
  1401.  
  1402.  
  1403. Befehl      LRESPR               (F)
  1404. ====================================
  1405. Syntax:
  1406.    LRESPR   filename
  1407.  
  1408. 'LRESPR' l€dt eine Maschinensprache-Datei 'filename' in ein eigens hierf‡r
  1409. reserviertes Speicherareal; dieses wird im 'common heap' reserviert, wenn
  1410. irgend ein Job im Speicher ist und sonst im 'resident procedure area'.
  1411. Steht am Anfang des eingeladenen Codes ein ROM-header, dann wird eine
  1412. ROM-initialiserung durchgef‡hrt; sonst wird ein Unterprogrammansprung
  1413. (CALL) auf den Anfang des Codes ausgef‡hrt.
  1414.  
  1415.  
  1416. Funktion    LT$                  (R)
  1417. ====================================
  1418. Syntax:
  1419.    a = LT$ (comp-type, a$, b$)
  1420.  
  1421. 'LT$' vergleicht die Zeichenketten 'a$' und 'b$'  mit dem Vergleichstyp
  1422. 'comp-type'. Ergebnis ist 1, wenn a$ vor b$ (nach 'comp-type') ist und 0
  1423. in jedem anderen Fall. F‡r 'comp-type' muœ unter 'EQ$' nachgesehen werden.
  1424.  
  1425.  
  1426.  
  1427. Befehl      MakeCmd              (F)
  1428. ====================================
  1429. Syntax:
  1430.    MakeCmd 'filename' [, '[:]extension-name'] [, priority]
  1431.  
  1432. 'MakeCmd' macht ein Programm (kein SuperBASIC!) resident. Ben„tigt wird
  1433. nur der Dateiname; jedoch k„nnen der Name, unter dem das residente
  1434. Programm aufgerufen werden soll und die Job-Priorit€t, mit der dies
  1435. geschehen soll zus€tzlich angegeben werden. Fehlt 'extension-name',
  1436. dann wird der Dateiname ohne 'Device'-Vorsatz verwendet. Fehlt 'priority',
  1437. dann wird 'priority' = 32 angenommen.
  1438. Das Programm wird durch
  1439.  
  1440.    ext_name [wa][! | \][prio] [, 'command' {, channel}]
  1441.  
  1442. aktiviert. 'ext_name' ist hierbei der Name unter dem das Programm resident
  1443. gemacht wurde ('filename' oder 'extension-name').
  1444. Mit 'wa' und 'prio' k„nnen die Gr„œe des 'data area' bzw. die Priorit€t
  1445. des Jobs zus€tzlich noch einmal eingestellt werden (bei nicht-Angabe werden
  1446. 'priority' f‡r 'prio' bzw. der im 'file header' des Programms gefundene
  1447. Wert f‡r 'wa' angenommen). '!' bedeutet, daœ der 'owner', das ist der Job,
  1448. der 'ext_name' aufruft, warten soll, bis der neue Job beendet ist (EXEC_W);
  1449. bei '\' wartet der 'owner' nicht.
  1450. F‡r 'command' muœ eine Zeichenkette ‡bergeben werden.
  1451. F‡r die Parameter 'channel' ist zu beachten:
  1452.    - §bergeben werden k„nnen eine BASIC-Kanalnummer (#n)
  1453.      oder ein Dateiname bzw. 'Device'-Name (also z.B. 'FLP1_ed', 'SER1');
  1454.      Kan€le auf 'Device'-Namen bzw. Dateinamen werden intern f‡r den neuen
  1455.      Job er„ffnet.
  1456.    - Der erste 'channel'-Parameter fungiert als Eingabe-Kanal (wird mit
  1457.      'OPEN_IN' er„ffnet, falls ein 'Device'-Name bzw. Dateiname angegeben
  1458.      wurde).
  1459.    - Der zweite 'channel'-Parameter fungiert als Ausgabe-Kanal (wird also
  1460.      mit 'OPEN_OVER' er„ffnet, falls ein 'Device'- bzw. Dateiname angegeben
  1461.      wurde).
  1462. Zur ':'-Option im 'extension-name'-Parameter bei 'MakeCmd' ist noch folgendes
  1463. zu sagen:
  1464.    Es gibt Programme (wie z.B. alle 'TURBO'-kompilierten), die ihren
  1465.    Arbeitsbereich 'wa' PC-relativ adressieren und solche, die sich selbst
  1466.    auf eine bestimmte Adresse umschreiben (relokieren)
  1467.    (z.B. die 'Prospero'-Compiler bzw. mit diesen erzeugte Programme).
  1468.    Damit solche Software als residentes Programm einwandfrei l€uft, muœ
  1469.    der Programmk„rper beim Aufruf kopiert werden. Die ':'-Option sorgt nun
  1470.    daf‡r, das beim Aufruf von 'ext_name' genau dies geschieht.
  1471.  
  1472. Beispiele:
  1473.  
  1474.    MakeCmd 'flp1_DISCED', 127
  1475.    - macht das Programm 'DISCED' auf 'flp1_' unter dem Namen 'DISCED'
  1476.      resident.
  1477.    - Der Aufruf erfolgt mit:
  1478.    DISCED
  1479.  
  1480.    MakeCmd 'QUILL'
  1481.    - macht das Textprogramm 'QUILL' auf dem 'program default device'
  1482.      unter dem Namen 'QUILL' resident.
  1483.      Aufruf:
  1484.    QUILL!
  1485.  
  1486.    MakeCmd 'flp2_EDT_bin', ':DP_Edit'
  1487.    - macht den 'Digital Precision'-Editor unter dem Namen 'DP_Edit'
  1488.      resident. Aufruf erfolgt mit:
  1489.    DP_Edit
  1490.  
  1491. (Ausprobieren!)
  1492.  
  1493.  
  1494. Befehl      MCOPY                (R)
  1495. ====================================
  1496. Syntax:
  1497.    MCOPY source-addr, dest-addr, length
  1498.    MCOPY source-addr, length TO dest-addr
  1499.  
  1500. 'MCOPY' kopiert 'length' Bytes von 'source-addr' nach 'dest-addr'.
  1501. Hierbei ist es gleich, ob 'source-addr' kleiner als 'dest-addr' ist
  1502. oder nicht.
  1503. Beispiel:
  1504.  
  1505.    MCOPY 0, 16384 TO 131072
  1506.    - bzw.
  1507.    MCOPY 0, 131072, 16384
  1508.    - kopieren die untersten 16K des Betriebssystem-ROMs in den
  1509.      Bildschirm; das Ergebnis durfte ziemlich wirr aussehen.
  1510.    (Ausprobieren!)
  1511.  
  1512.  
  1513. Funktion    MKF$                 (R)
  1514. ====================================
  1515. Syntax:
  1516.    a$ = MKF$ (float-num)
  1517.  
  1518. 'MKF$' liefert die interne Form der Gleitpunktzahl 'float-num' als genau
  1519. sechs Bytes lange Zeichenkette.
  1520.  
  1521.  
  1522. Funktion    MKI$                 (R)
  1523. ====================================
  1524. Syntax:
  1525.    a$ = MKI$ (int-num)
  1526.  
  1527. 'MKI$' liefert die interne Form der Ganzzahl 'int-num' als genau zwei
  1528. Bytes lange Zeichenkette.
  1529.  
  1530.  
  1531. Funktion    MKL$                 (R)
  1532. ====================================
  1533. Syntax:
  1534.    a$ = MKL$ (long-int)
  1535.  
  1536. 'MKL$' liefert die interne Form der Ganzzahl 'long-int' als genau vier
  1537. Bytes lange Zeichenkette.
  1538.  
  1539.  
  1540. Funktion    MKS$                 (R)
  1541. ====================================
  1542. Syntax:
  1543.    a$ = MKS$ ('string')
  1544.  
  1545. 'MKS$' liefert die interne Form der Zeichenkette (2 Bytes L€nge, gefolgt
  1546. von dem eigentlichen Inhalt) als Zeichenkette zur‡ck. Das Ergebnis ist
  1547. genau zwei Bytes l€nger als 'string'; darum darf 'string' auch nur maximal
  1548. 32763 Zeichen lang sein.
  1549.  
  1550.  
  1551. Befehl      MOVETO               (R)
  1552. ====================================
  1553. Syntax:
  1554.    MOVETO [#ch,] x, y
  1555.  
  1556. 'MOVETO' setzt den Graphik-Cursor eines BASIC-Fensters auf die Position
  1557. <x, y> (Graphikkoordinaten). Ist PENDOWN #ch eingestellt, dann wird eine
  1558. Linie von der letzten Position des Graphik-Cursors nach <x, y> gezeichnet.
  1559.  
  1560.  
  1561. Funktion    NE$                  (R)
  1562. ====================================
  1563. Syntax:
  1564.    a = NE$ (comp-type, a$, b$)
  1565.  
  1566. 'NE$' vergleicht die Zeichenketten 'a$' und 'b$'  mit dem Vergleichstyp
  1567. 'comp-type'. Ergebnis ist 1, wenn a$ = b$ ist, sonst 0. F‡r 'comp-type'
  1568. siehe unter 'EQ$'.
  1569.  
  1570.  
  1571. Funktion    ODD                  (R)
  1572. ====================================
  1573. Syntax:
  1574.    a = ODD (num)
  1575.  
  1576. 'ODD' liefert 1, falls 'num' ungerade ist, sonst 0.
  1577.  
  1578.  
  1579. Funktion    OFF                  (R)
  1580. ====================================
  1581. Syntax:
  1582.    a = OFF
  1583.  
  1584. Das Ergebnis von 'OFF' ist 0.
  1585.  
  1586.  
  1587. Funktion    ON                   (R)
  1588. ====================================
  1589. Syntax:
  1590.    a = ON
  1591.  
  1592. Das Ergebnis von 'ON' ist 1.
  1593.  
  1594.  
  1595. Funktion    PEEK_F               (R)
  1596. ====================================
  1597. Syntax:
  1598.    a = PEEK_F (address)
  1599.  
  1600. Ergebnis von 'PEEK_F' ist die an der (geraden) Adresse 'address' stehende
  1601. Gleitpunktzahl.
  1602.  
  1603.  
  1604. Funktion    PEEK$                (R)
  1605. ====================================
  1606. Syntax:
  1607.    a$ = PEEK$ (address[, length])
  1608.  
  1609. Wird 'length' angegeben, dann liefert 'PEEK$' die 'length' Zeichen ab
  1610. der (auch ungeraden) Adresse 'address' als Zeichenkette zur‡ck.
  1611. Wird 'length' nicht angegeben, dann liefert 'PEEK$' die an der (geraden)
  1612. Adresse 'address' stehende Zeichenkette.
  1613.  
  1614.  
  1615. Befehl      POKE_F               (R)
  1616. ====================================
  1617. Syntax:
  1618.    POKE_F address, float-num
  1619.  
  1620. 'POKE_F' schreibt die Gleitpunktzahl 'float-num' an die (gerade) Adresse
  1621. 'address'.
  1622.  
  1623.  
  1624. Befehl      POKE$                (R)
  1625. ====================================
  1626. Syntax:
  1627.    POKE$ address, 'string' [, length]
  1628.  
  1629. Wird 'length' angegeben, dann schreibt 'POKE$' 'length' (maximal jedoch
  1630. die L€nge von 'string') Zeichen von 'string' ab der (auch ungeraden)
  1631. Adresse 'address' in den Speicher.
  1632. Wird 'length' nicht angegeben, dann wird die Zeichenkette 'string' an
  1633. die (gerade) Adresse 'address' in den Speicher gebracht.
  1634.  
  1635.  
  1636. Funktion    QDOS$                (R)
  1637. ====================================
  1638. Syntax:
  1639.    a$ = QDOS$
  1640.  
  1641. 'QDOS$' liefert die Versionsnummer des Betriebssystems als vier Zeichen
  1642. lange Zeichenkette.
  1643. Beispiel:
  1644.    - f‡r MG(G)
  1645.    PRINT #0, QDOS$
  1646.    1G13
  1647.  
  1648.  
  1649. Funktion    QRAM$                (R)
  1650. ====================================
  1651. Syntax:
  1652.    a$ = QRAM$ [(#ch)]
  1653.  
  1654. 'QRAM$' liefert die Versionsnummer des aktivierten 'pointer interface' als
  1655. Zeichenkette oder '', falls kein 'pointer interface' aktiv ist.
  1656.  
  1657.  
  1658. Befehl      RECHP                (F)
  1659. ====================================
  1660. Syntax:
  1661.    RECHP address {, address}
  1662.  
  1663. 'RECHP' gibt mit 'ALCHP' reservierte Speicherfl€chen wieder ans Betriebs-
  1664. system zur‡ck. 'address' m‡ssen genau die Adressen sein, die 'ALCHP' ge-
  1665. liefert hat. 'RECHP' ist in der Lage auf beliebige Art mit 'ALCHP' reser-
  1666. vierte Speicherfl€chen freizugeben.
  1667.  
  1668.  
  1669. Befehl      RELJOB               (F)
  1670. ====================================
  1671. Syntax:
  1672.    RELJOB job-id
  1673.  
  1674. 'RELJOB' gibt einen Suspendierten Job frei.
  1675. Vorsicht! 'RELJOB' sollte niemals auf Jobs angewendet werden, die suspen-
  1676. diert sind, weil sie auf die Beendigung einer Ein- oder Ausgabeoperation
  1677. warten.
  1678.  
  1679.  
  1680. Funktion    REPLY                (R)
  1681. ====================================
  1682. Syntax:
  1683.    a = REPLY ([#ch,] ['valid' [, lettercase-flag]])
  1684.  
  1685. 'REPLY' erm„glicht eine gezielte Auswahl bei Ein-Zeichen-Eingaben.
  1686. Nachdem im Fenster #ch der Cursor aktiviert wurde, wird auf eine Eingabe
  1687. von der Tastatur gewartet. Wird diese in 'valid' nicht gefunden, dann
  1688. wird ein Warnton ausgegeben und anschlieœend erneut auf eine Eingabe
  1689. gewartet. Dies geschieht solange, bis eine g‡ltige Eingabe gemacht wurde.
  1690. Ergebnis ist die Position des Zeichens innerhalb von 'valid'.
  1691. 'lettercase-flag' entscheidet, ob bei Buchstabeneingaben zwischen Klein-
  1692. und Groœschreibung unterschieden werden soll (lettercase-flag = 0)
  1693. oder nicht (lettercase-flag = 1).
  1694. Mit 'REPLY' lassen sich auch ALT-Tastenkombinationen abfragen. In diesem
  1695. Fall muœ die Kombination CHR$(255)&CHR$(Taste) in 'valid' enthalten sein;
  1696. das Ergebnis ist dann die Position des direkt vor CHR$(Taste) stehenden
  1697. CHR$(255) innerhalb von 'valid'.
  1698.  
  1699. Es ist auch m„glich 'valid' nicht anzugeben. Es gilt:
  1700.   Wird 'valid' nicht angegeben oder ist leer, dann ist das Ergebnis
  1701.   f‡r einfache Tastendr‡cke der ASCII-Code der gedr‡ckten Taste und
  1702.   f‡r ALT-Tastendr‡cke der ASCII-Code der Taste weniger 256.
  1703.  
  1704. Die Voreinstellungen sind #1 f‡r '#ch' und 0 f‡r 'lettercase-flag'.
  1705.  
  1706.  
  1707.  
  1708. Befehl      REPORT               (F)
  1709. ====================================
  1710. Syntax:
  1711.    REPORT [#ch,] qdos-errnum
  1712.  
  1713. 'REPORT' gibt die der Fehlernummer 'qdos-errnum' entsprechende Meldung
  1714. in Kanal '#ch' (Voreingestellt ist #0) aus. Existiert keine solche
  1715. Meldung, dann wird 'undefined error' ausgegeben.
  1716.  
  1717.  
  1718. Befehl      RESET                (F)
  1719. ====================================
  1720. Syntax:
  1721.    RESET ram-size
  1722.  
  1723. 'RESET' f‡hrt eine Neuinitialisierung des QL mit der Speicherkonfiguration
  1724. 'ram-size' durch. 'ram-size' muœ in 64K-Schritten zwischen 128 und 640
  1725. liegen.
  1726.  
  1727.  
  1728. Funktion    RESPR                (F)
  1729. ====================================
  1730. Syntax:
  1731.    a = RESPR (mem-size)
  1732.  
  1733. 'RESPR' reserviert minimal 'mem-size' Bytes im Speicher und gibt die
  1734. Anfangsadresse der reservierten Speicherfl€che zur‡ck.
  1735. 'RESPR' reserviert normalerweise Platz im 'resident procedure area'.
  1736. Funktioniert dies jedoch nicht, weil ein Job l€uft, dann wird stattdessen
  1737. Platz im 'common heap' reserviert.
  1738.  
  1739.  
  1740. Befehl      RJOB                 (F)
  1741. ====================================
  1742. Syntax:
  1743.    RJOB job-id, qdos-errnum
  1744.  
  1745. 'RJOB' l„scht den Job 'job-id' und gibt die Fehlernummer 'qdos-errnum' an
  1746. dessen 'owner' zur‡ck.
  1747.  
  1748.  
  1749. Befehl      RPT$                 (R)
  1750. ====================================
  1751. Syntax:
  1752.    a$ = RPT$ (str/num, n)
  1753.  
  1754. 'RPT$' gibt das 'n'-mal vervielf€ltigte Argument 'str/num' als Zeichen-
  1755. kette zur‡ck.
  1756. 'str/num' kann sein sein:
  1757.    1. eine Zeichenkette; dann wird diese entsprechend oft vervielf€ltigt.
  1758.    2. eine Zahl im Bereich 0...255; In diesem Fall wird
  1759.       CHR$(str/num) vervielf€ltigt.
  1760.    3. eine Ganzzahl > 255 bzw. < 0; In diesem Fall wird
  1761.       CHR$(str/num DIV 255) & CHR$(str/num MOD 255) vervielf€ltigt.
  1762.  
  1763.  
  1764. Befehl      SBYTES               (F)
  1765. ====================================
  1766. Syntax:
  1767.    SBYTES filename, address, length
  1768.  
  1769. 'SBYTES' speichert 'length' Bytes ab der Adresse 'address' in der Datei
  1770. 'filename'. Wenn eine Datei mit dem Namen 'filename' bereits existiert,
  1771. dann wird mit 'already exists' abgebrochen.
  1772. Das 'Data Default' wird unterst‡tzt.
  1773.  
  1774. Beispiel:
  1775.  
  1776.    SBYTES flp2_saturn_scr, 131072, 32768
  1777.    - speichert den Bildschirminhalt unter dem Namen 'saturn_scr' auf
  1778.      'flp2_'
  1779.  
  1780.  
  1781. Befehl      SBYTES_O             (F)
  1782. ====================================
  1783. Syntax:
  1784.    SBYTES_O filename, address, length
  1785.  
  1786. 'SBYTES_O' speichert 'length' Bytes ab der Adresse 'address' in der Datei
  1787. 'filename'. Wenn eine Datei mit dem Namen 'filename' bereits existiert,
  1788. dann wird sie ‡berschrieben.
  1789. Das 'Data Default' wird unterst‡tzt.
  1790.  
  1791. Beispiel:
  1792.  
  1793.    SBYTES_O flp2_saturn_scr, 131072, 32768
  1794.    - speichert den Bildschirminhalt unter dem Namen 'saturn_scr' auf
  1795.      'flp2_' und ‡berschreibt eine evtl. bereits existierende dieses
  1796.      Namens.
  1797.  
  1798.  
  1799. Funktion    SEARCH               (R)
  1800. ====================================
  1801. Syntax:
  1802.    addr = SEARCH (start-address, end-address, 'pattern' [, upper-flag])
  1803.  
  1804. 'SEARCH' sucht im Bereich zwischen 'start-address' und 'end-address' nach
  1805. der Zeichenkette 'pattern'. Im Falle eines Erfolgs wird die Adresse des
  1806. ersten Zeichens von Pattern zur‡ckgegeben; bei einem Miœerfolg 0. Wird
  1807. f‡r 'upper-flag' 1 ‡bergeben, dann wird zwischen Groœ- und Kleinschreibung
  1808. bei der Suche nicht unterschieden; Voreinstellung ist 0.
  1809.  
  1810.  
  1811. Befehl      SETMON               (F)
  1812. ====================================
  1813. Syntax:
  1814.    SETMON #x, bw, bc, ww, wh, wx, wy  (#x = #0, #1, #2)
  1815. oder:
  1816.    SETMON bw0,bc0,ww0,wh0,wx0,wy0, bw1,bc1,ww1,wh1,wx1,wy1, bw2,bc2,ww2,
  1817.           wh2,wx2,wy2
  1818.  
  1819. 'SETMON' legt die Einstellungen der Fenster #0, #1, #2 f‡r den Befehl
  1820. 'WMON n, -1' fest. Es geschieht jedoch noch nichts auf dem Bildschirm.
  1821.  
  1822.  
  1823. Befehl      SETTV                (F)
  1824. ====================================
  1825. Syntax:
  1826.    SETTV #x, bw, bc, ww, wh, wx, wy  (#x = #0, #1, #2)
  1827. oder:
  1828.    SETTV bw0,bc0,ww0,wh0,wx0,wy0, bw1,bc1,ww1,wh1,wx1,wy1, bw2,bc2,ww2,
  1829.           wh2,wx2,wy2
  1830.  
  1831. 'SETTV' legt die Einstellungen der Fenster #0, #1, #2 f‡r den Befehl
  1832. 'WTV n, -1' fest. Es geschieht jedoch noch nichts auf dem Bildschirm.
  1833.  
  1834.  
  1835. Befehl      SEXEC                (F)
  1836. ====================================
  1837. Syntax:
  1838.    SEXEC filename, address, length, datasize
  1839.  
  1840. 'SEXEC' speichert 'length' Bytes ab 'address' als Programmdatei 'filename'
  1841. mit einem Datenbereich der Gr„œe 'datasize'. Wenn eine Datei des Namens
  1842. 'filename' bereits existiert, dann wird mit 'already exists' abgebrochen.
  1843.  
  1844. Beispiel:
  1845.  
  1846.    SEXEC 'flp2_Clock', a, 1000, 512
  1847.    - speichert 1000 Bytes ab a als mit 'EX' aufrufbare Datei 'Clock' auf
  1848.      'flp2_' mit dem 'data size' 512 Bytes.
  1849.  
  1850.  
  1851. Befehl      SEXEC_O                (F)
  1852. ====================================
  1853. Syntax:
  1854.    SEXEC_O filename, address, length, datasize
  1855.  
  1856. 'SEXEC_O' speichert 'length' Bytes ab 'address' als Programmdatei
  1857. 'filename' mit einem Datenbereich der Gr„œe 'datasize'. Wenn eine Datei
  1858. des Namens 'filename' bereits existiert, dann wird diese ‡berschrieben.
  1859.  
  1860. Beispiel:
  1861.  
  1862.    SEXEC_O 'flp2_Clock', a, 1000, 512
  1863.    - speichert 1000 Bytes ab a als mit 'EX' aufrufbare Datei 'Clock' auf
  1864.      'flp2_' mit dem 'data size' 512 Bytes. Eine bereits existierende
  1865.      Datei 'Clock' wird hierbei ‡berschrieben.
  1866.  
  1867.  
  1868. Funktion    SIGN                 (F)
  1869. ====================================
  1870. Syntax:
  1871.    a = SIGN (x)
  1872.  
  1873. Ergebnis von 'SIGN' ist das Vorzeichen der Zahl 'x', d.h. 1 f‡r positives
  1874. 'x', -1 f‡r negatives 'x', und 0, wenn 'x' gleich 0 ist.
  1875.  
  1876.  
  1877. Funktion    SINT                 (R)
  1878. ====================================
  1879. Syntax:
  1880.    a = SINT (unsigned-integer)
  1881.  
  1882. 'SINT' wandelt eine Zahl im Bereich zwischen 0 und 65535 in eine Zahl im
  1883. Bereich -32768...+32767 um.
  1884.  
  1885.  
  1886. Befehl      SPJOB                (F)
  1887. ====================================
  1888. Syntax:
  1889.    SPJOB job-id, priority
  1890.  
  1891. 'SPJOB' setzt die Priorit€t eines Jobs auf den Wert 'priority'.
  1892.  
  1893.  
  1894. Befehl      SUSJOB               (F)
  1895. ====================================
  1896. Syntax:
  1897.    SUSJOB job-id, timeout
  1898.  
  1899. 'SUSJOB' suspendiert einen Job f‡r die angegebene Zeit 'timeout'.
  1900. 'timeout' z€hlt hierbei in 'frames'; dies sind in der BRD 20ms-Zeiteinhei-
  1901. ten (die Frequenz des Strahr‡cklaufs eines Fernsehers oder Monitors).
  1902.  
  1903.  
  1904. Funktion    TPAFree              (F)
  1905. ====================================
  1906. Syntax:
  1907.    free_space = TPAFree
  1908.  
  1909. 'TPAFree' gibt die l€nge des gr„œten f‡r Jobs zur Verf‡gung stehenden
  1910. zusammenh€ngenden Speicherbereichs zur‡ck. Intern ist 'TPAFree' mit
  1911. 'MT.FREE' (TRAP #1; D0 = $06) identisch.
  1912.  
  1913.  
  1914. Funktion    TURTLE               (R)
  1915. ====================================
  1916. Syntax:
  1917.    tst = TURTLE ([#ch,] stat-num)
  1918.  
  1919. 'TURTLE' gibt den Status des Graphik-Cursors eines BASIC-Fensters zur‡ck.
  1920. F‡r stat-num wird zur‡ckgegeben:
  1921.         0         y-Koordinate des Graphik-Cursors
  1922.         1         x-Koordinate des Graphik-Cursors
  1923.         2         Winkel ('heading') des Graphik-Cursors
  1924.         3         0 f‡r PENUP, 1 f‡r PENDOWN
  1925.  
  1926.  
  1927. Funktion    TYPE                 (R)
  1928. ====================================
  1929. Syntax:
  1930.    use = TYPE ('basic_name')
  1931.  
  1932. 'TYPE' gibt den Verwendungstyp eines BASIC-Namens 'basic_name' zur‡ck.
  1933. F‡r BASIC-Prozeduren ist dies 1026, f‡r BASIC-Funktionen 1282 (Gleitpunkt-),
  1934. 1283 (Ganzahl-) bzw. 1281 (Zeichenkettenfunktionen).
  1935. F‡r MC-Prozeduren ergibt sich 2048, f‡r MC-Funktionen 2304.
  1936.  
  1937.  
  1938. Befehl      TYPE_IN              (R)
  1939. ====================================
  1940. Syntax:
  1941.    TYPE_IN 'input-line'
  1942.  
  1943. 'TYPE_IN' schreibt die Zeichenkette 'input-line' in den gerade aktiven
  1944. Tastaturpuffer.
  1945. Beispiel:
  1946.  
  1947.    ...
  1948.    2310 xx = IO_PEND% (#1): REMark aktiviere Tastaturpuffer von #1
  1949.    2320 TYPE_IN 'FLP1_'
  1950.    2330 INPUT 'Type filename:' ! fnm$
  1951.  
  1952.  
  1953. Funktion    UINT                 (R)
  1954. ====================================
  1955. Syntax:
  1956.    unsigned_int = UINT (signed_int)
  1957.  
  1958. 'UINT' wandelt eine Ganzzahl im Bereich -32768...32767 in eine Ganzzahl
  1959. zwischen 0 und 65535 um.
  1960. Beispiele:
  1961.  
  1962.    PRINT #0, UINT (-32768)
  1963.    32768
  1964.  
  1965.    PRINT #0, UINT (-1)
  1966.    65535
  1967.  
  1968.    PRINT #0, UINT (16240)
  1969.    16240
  1970.  
  1971.  
  1972. Befehl      VIEW                 (F)
  1973. ====================================
  1974. Syntax:
  1975.    VIEW [channel,] filename [\]
  1976.  
  1977. 'VIEW' listet den Inhalt der Datei 'filename' in dem Kanal 'channel'.
  1978. 'channel' kann eine BASIC-Kanalnummer oder ein 'impliziter' Kanal
  1979. '\device' sein. Wird 'channel' gar nicht angegeben, dann wird #1
  1980. angenommen. Wird '\' zus€tzlich angegeben, dann wird der Rest einer Zeile
  1981. bei Ausgabe in einem Bildschirmfenster 'verschluckt', sondern in den
  1982. folgenden Zeilen des Fensters bis zum n€chsten 'line feed' vollst€ndig
  1983. ausgegeben.
  1984.  
  1985.  
  1986. Funktion    WinCTRL              (R)
  1987. ====================================
  1988. Syntax:
  1989.    addr = WinCTRL ([channel,] offset)
  1990.  
  1991. 'WinCTRL' liefert einen Zeiger auf eine Speicherstelle im Standard-Teil
  1992. der 'window definition' und zwar unabh€ngig davon, ob das 'pointer enviroment'
  1993. aktiv ist oder nicht. 'offset' gibt die Adresse der Speicherstelle relativ
  1994. zum Anfang der 'standard window definition' an.
  1995.  
  1996.  
  1997. Befehl      WinLOAD              (R)
  1998. ====================================
  1999. Syntax:
  2000.    WinLOAD address
  2001.  
  2002. 'WinLOAD' l€dt ein mit 'WinSAVE' abgespeichertes Bildschirmfenster wieder
  2003. in den Bildschirm zur‡ck. 'address' muœ die von 'WinSAVE' gelieferte Adresse
  2004. des Speicherfeldes sein. Das Speicherfeld wird hinterher an das System zu-
  2005. r‡ckgegeben.
  2006.  
  2007.  
  2008. Funktion    WinSAVE              (R)
  2009. ====================================
  2010. Syntax:
  2011.    addr = WinSAVE [(#ch)]
  2012.  
  2013. 'WinSAVE' speichert den Inhalt des Fensters #ch (Voreinstellung: #1) in
  2014. einen eigens hierf‡r reservierten Seicherbereich ab. Ergebnis ist die
  2015. Anfangsadresse des reservierten Bereichs.
  2016.  
  2017.  
  2018. Befehl      WinSHOW              (R)
  2019. ====================================
  2020. Syntax:
  2021.    WinSHOW address
  2022.  
  2023. 'WinSHOW' arbeitet wie 'WinLOAD'; jedoch wird der reservierte Bereich
  2024. hinterher nicht freigegeben sondern bleibt erhalten.
  2025.  
  2026.  
  2027. Funktion    WMAN$                (R)
  2028. ====================================
  2029. Syntax:
  2030.    a$ = WMAN$ [(channel)]
  2031.  
  2032. 'WMAN$' liefert die Versionsnummer des 'window managers' als vier Zeichen
  2033. lange Zeichenkette - oder '', falls kein 'window manager' aktiv ist.
  2034. 'channel' kann eine BASIC- (#n) oder eine Systemkanalnummer (\n) sein.
  2035. Voreingestellt ist #1.
  2036.  
  2037.  
  2038. Befehl      WMON                 (F)
  2039. ====================================
  2040. Syntax:
  2041.    WMON [colour-mode][, screen-config]
  2042.  
  2043. 'WMON' setzt die drei Standardfenster (#0, #1, #2) auf einen definierten Wert
  2044. 'screen-config' und f‡hrt hinterher einen 'MODE'-Befehl mit 'colour-mode'
  2045. als Parameter aus. 'screen-config' ist entweder -1 oder ein Wert zwischen
  2046. 0 und (momentan) 2. WIrd -1 angegeben, dann wird die durch 'SETMON' ein-
  2047. gestellte Konfiguration genommen. Alle anderen sind fest vorgegeben.
  2048. Voreinstellung sind immer die Parameter, die zuletzt angegeben wurden.
  2049. Wurde 'WMON' jedoch noch nicht aufgerufen, dann ist 'WMON 4, 0' voreinge-
  2050. stelt.
  2051.  
  2052.  
  2053. Befehl      WTV                  (F)
  2054. ====================================
  2055. Syntax:
  2056.    WTV [colour-mode][, screen-config]
  2057.  
  2058. 'WTV' funktoniert im Prinzip genau wie 'WMON'; jedoch werden andere
  2059. Fensterkonfigurationen verwendet. F‡r 'WTV , -1' muœ der 'SETTV'-Befehl
  2060. zur Einstellung der Fenster verwendet werden. Wurde 'WTV' noch nicht mit
  2061. Parametern aufgerufen, dann gilt 'WTV 8, 0' als Voreinstellung.
  2062.