home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / dtx9203 / naxos / doc / system.doc < prev   
Encoding:
Text File  |  1992-02-09  |  14.9 KB  |  410 lines

  1. Beschreibung der Systemworte
  2.  
  3. Im folgenden wird der Bezeichner 'code' verwendet. Unter code
  4. dürfen stehen: Literale, Inlinecode, Namen von
  5. Wörterbuchdefinitionen, Strukturworte und einige sonstige
  6. Systemworte, aber niemals Definitionsworte.
  7.  
  8. 1. Definitionsworte:
  9.  
  10. :          Definition einer Prozedur, die als Makro oder als
  11.            Subroutine verwendet werden darf.
  12.            Syntax:  : name code ;
  13.            'name' wird im Wörterbuch eingetragen mit:
  14.            Worttyp = 12, PAR0 = Codeadresse; PAR1 = Codelänge.
  15.            Der Code wird in das .COM-File übertragen.
  16.            Wird 'name' später genannt, so wird
  17.            MOV DI,PAR0  CALL DI  compiliert. Ist jedoch
  18.            codelen <= m-limit, so wird der Code als Makro
  19.            eingesetzt.
  20.  
  21. PROC       Definition einer Prozedur, die nur als Subroutine
  22.            verwendet werden darf.
  23.            Syntax:  PROC name code ;
  24.            'name' wird im Wörterbuch eingetragen mit:
  25.            Worttyp = 13, PAR0 = Codeadresse; PAR1 = Codelänge.
  26.            Der Code wird in das .COM-File übertragen.
  27.            Wird 'name' später genannt, so wird
  28.            MOV DI,PAR0  CALL DI  compiliert.
  29.  
  30. VECTOR     Definition eines Vektors
  31.            Syntax:  VECTOR name ;
  32.            'name' wird in das Wörterbuch eingetragen mit:
  33.            Worttyp = 14; PAR0 = codeadresse; PAR1 = 3.
  34.            Compiliert wird $C3 $00 $00.
  35.            Ein Vektor kann später mit 'MAKE' gesetzt werden.
  36.            Vektoren können für Vorwärtsreferenzen verwendet werden
  37.            oder um Ein- oder Ausgabe umzulenken.
  38.            Wird 'name' später genannt, so wird
  39.            JMP distance     compiliert.
  40.  
  41. VAR        Definition einer Datenstruktur
  42.            Syntax:  VAR name [ n , .. c c, ] ;
  43.                     VAR name varname ;
  44.                     VAR name varname do: code ;
  45.                     VAR name varname n
  46.                     VAR name varname n do. code ;
  47.                     VAR name string c ;
  48.                     VAR name " Zeichenkette" ;
  49.            n ist ein 16-Bit Zahlenwert oder der Name eines
  50.            Wörterbucheintrages, c ist ein 8-Bit Zahlenwert.
  51.            Der Code nach do: ist 'privater Code' der Struktur
  52.            'varname' ist der Name einer bereits vorher definierten
  53.            Datenstruktur.
  54.            Datenstrukturen können:
  55.            (1) mit Zahlen, Konstanten, Codeadressen oder
  56.            Datenadressen initialisiert werden
  57.            (2) Initialisierung und gegebenenfalls privaten Code
  58.            von varname erben. Enthält die neue Struktur ebenfalls
  59.            privaten Code, so wird dieser an den geerbten angehängt
  60.            (3) die Struktur von varname n mal verfielfältigen.
  61.            Die Initiierung ist in diesem Fall 0, privater Code
  62.            wird jedoch übernommen
  63.            (4) Zeichenketten direkt initialisieren
  64.  
  65.            'name' wird in das Wörterbuch eingetragen mit:
  66.            Worttyp = 1-5; PAR0 = Datenadresse; PAR1 = Datenlänge;
  67.            PAR2 = private Codeadresse; PAR3 = private Codelänge.
  68.            PAR1 Bytes werden im .COM-File reserviert, der
  69.            private Code übertragen.
  70.            Wird 'name' später genannt, so wird compiliert:
  71.            MOV BX,PAR0, der private Code angehängt.
  72.  
  73. TYP        Synonym für VAR
  74.  
  75. CONST      Definition einer 16-Bit-Konstanten
  76.            Syntax:  CONST name n ;
  77.            n ist ein 16-Bit Zahlenwert oder ein Wörterbuchname.
  78.            'name' wird in das Wörterbuch eingetragen mit:
  79.            Worttyp = 10; PAR0 = n oder PAR0 des Wörterbuchnamens;
  80.            PAR1 = 2.
  81.            Im .COM-File wird nichts eingetragen.
  82.            Wird 'name' später genannt, so wird compiliert:
  83.            MOV AX,PAR0.
  84.         
  85. DCONST     Definition einer 32-Bit-Konstanten
  86.            Syntax;  DCONST name d ;
  87.            d ist ein 32-Bit Zahlenwert.
  88.            'name' wird in das Wörterbuch eingetragen mit:
  89.            Worttyp = 15; PAR0 = lo(d); PAR1 = hi(d).
  90.            Im .COM-File wird nichts eingetragen.
  91.            Wird 'name' später genannt, so wird compiliert:
  92.            MOV AX,PAR0  MOV DX,PAR1.
  93.         
  94. FCONST     Definition einer Realzahl
  95.            Syntax;  FCONST name r ;
  96.            r ist ein 64-Bit Zahlenwert.
  97.            'name' wird in das Wörterbuch eingetragen mit:
  98.            Worttyp = 16; PAR0 = lsb(r) .... PAR3 = msb(r).
  99.            Im .COM-File wird nichts eingetragen.
  100.            Wird 'name' später genannt, so wird die Realzahl
  101.            direkt auf den Koprozessorstack geladen.
  102.         
  103.  
  104.  
  105. 2.Compileranweisungen:
  106. a) ausserhalb von Definitionen:
  107.  
  108.  
  109. M-LIMIT    Setzt die Makrogrenze fest
  110.            Syntax:  M-LIMIT n
  111.            n ist ein beliebiger Zahlenwert, als Grenzen
  112.            werden jedoch nur Werte von 7 bis 64 eingestellt.
  113.            Mit M-LIMIT wird festgelegt, ob eine Kolon-Prozedur
  114.            als Makro oder als Subroutine compiliert wird.
  115.  
  116.  
  117.  
  118. INCLUDE    Öffnet Zugriff auf ein Wörterbuch
  119.            Syntax:  INCLUDE Filename
  120.            Es ist nur ein INCLUDE in einem Programm oder
  121.            neuem Wörterbuch erlaubt. Der Filename wird ohne
  122.            Extension angegeben.
  123.  
  124. DICTIONARY Anlegen eines Wörterbuches
  125.            Syntax:  DICTIONARY
  126.            Der Kode des Quellfiles wird beim Compilieren als
  127.            Wörterbuch angelegt. Als Filename wird der Name des
  128.            Quellfiles mit der Extension .DIC verwendet.
  129.  
  130. STACKSIZE( Einstellung des freien Speichers und der Stackgrößen
  131.            Syntax:  STACKSIZE( n1 n2 )
  132.            n1 ist die Bytezahl, die für freien Speicher ( PAD )
  133.            plus Datenstack reserviert werden soll, n2 die Zahl der
  134.            Returnstackbytes. Mit dieser Anweisung können weniger als
  135.            64kByte für das .COM-File reserviert werden. Wird diese
  136.            Anweisung nicht angegeben, so werden 64kByte reserviert
  137.            mit s0 := $FE00 und r0 := $0000 ( $FFFF + 1 )
  138.  
  139.  
  140. b) innerhalb von Definitionen ( Code )
  141.  
  142. ;          Beendet ein Definitionswort
  143.            Syntax:  siehe :
  144.            ; wird als return ( $C3 ) in das .COM-File compiliert.
  145.  
  146. [          Leitet Inline-Code ein
  147.            Syntax:  [ n1 ..... ni ]
  148.            Die Zahlenwerte werden direkt in das .COM-File
  149.            compiliert. Sie werden in der Regel als Hexzahlen
  150.            angegeben.
  151.  
  152. ]          Beendet Inline-Code
  153.            Syntax:  siehe [
  154.  
  155. MACRO      Setzt die Makrogrenze auf 64 Bytes herauf
  156.  
  157. -MACRO     Setzt die Makrogrenze auf M-LIMIT herab
  158.  
  159. (LONG)     Compiliere lange Sprünge
  160.            Syntax:  (LONG)
  161.            Sprünge innerhalb des gesamten Codesegments können
  162.            compiliert werden. Diese Einstellung kann mit (SHORT)
  163.            abgestellt werden. Automatisch wird sie durch ';'
  164.            abgestellt.
  165.  
  166. (SHORT)    Compiliere kurze Sprünge
  167.            Syntax:  (SHORT)
  168.            Dies ist die Voreinstellung des Compilers. Sind
  169.            kurze Sprünge ( +-127 Byte ) nicht möglich, so meldet
  170.            der Compiler einen Fehler, es muss dann die (LONG)-
  171.            Einstellung angegeben werden
  172.  
  173.  
  174.  
  175.  
  176.  
  177. 3. Strukturworte (nur innerhalb von Code):
  178.  
  179. IF         Start einer Entscheidungsstruktur
  180.            Syntax:  IF T-code ENDIF
  181.                 IF T-code ELSE F-code ENDIF
  182.            IF entscheidet am Zustand des Carry-Flags.
  183.            Ist dieses true (=1), so wird T-code durchlaufen,
  184.            ist es false (=0), so wird in Form(1) das Programm hinter
  185.            ENDIF angesprungen, bei Form(2) der F-code durchlaufen
  186.            und hinter Endif fortgefahren.
  187.            IF ELSE ENDIF verändern keine Register.
  188.  
  189. C@IF       Alternative zu IF
  190.            Entscheidungskriterium ist nicht das Carry-Flag,
  191.            sondern das niederwertige Byte einer Datenzelle,
  192.            dessen Adresse c@if in BX erwartet.
  193.            Byte = 0: False; Byte <> 0: True.
  194.            Register werden nicht verändert.
  195.  
  196. @IF        Alternative zu IF
  197.            Entscheidungskriterium ist nicht das Carry-Flag,
  198.            sondern das Wort einer Datenzelle,
  199.            dessen Adresse @if in BX erwartet.
  200.            Wort = 0: False; Wort <> 0: True.
  201.            Register werden nicht verändert.
  202.  
  203. 0=IF       Alternative zu IF
  204.            Entscheidungskriterium ist nicht das Carry-Flag,
  205.            sondern der Wert in AX.
  206.            Wert = 0: False; Wert <> 0: True.
  207.            Register werden nicht verändert.
  208.  
  209. ELSE       Teil der Entscheidungsstruktur
  210.            Syntax:  siehe IF
  211.  
  212. ENDIF      Schliesst Entscheidungsstruktur
  213.            Syntax:  siehe IF
  214.  
  215. CASE       Leitet Mehrfachverzweigung ein
  216.            Syntax:  CASE
  217.                     n  OF code ;;
  218.                     n >OF code ;;
  219.                     n <OF code ;;
  220.                     ELSE  code
  221.                     ENDCASE
  222.            CASE verzweigt anhand des Wertes in AX. n ist ein
  223.            Literal. Ist der Wert in AX = > oder < als das Literal,
  224.            so wird der entsprechende code bis ;; durchlaufen und zu
  225.            ENDCASE verzweigt. Der ELSE-Teil kann entfallen. Es
  226.            dürfen beliebig viele OF >OF <OF Sätze angegeben werden.
  227.            Die Worte der Mehrfachverzweigung verändern keine
  228.            Register ( ausser eventuell die Code-Teile).
  229.  
  230. OF         Teil der Mehrfachverzweigung
  231.            Syntax:  siehe CASE
  232.  
  233. >OF        Teil der Mehrfachverzweigung
  234.            Syntax:  siehe CASE
  235.  
  236. <OF        Teil der Mehrfachverzweigung
  237.            Syntax:  siehe CASE
  238.  
  239. ;;         Teil der Mehrfachverzweigung
  240.            Syntax:  siehe CASE
  241.  
  242. ENDCASE    Ende der Mehrfachverzweigung
  243.            Syntax:  siehe CASE
  244.  
  245.  
  246. BEGIN      Start einer der folgenden Programm-Schleifen:
  247.            Syntax:  BEGIN code  AGAIN
  248.                     BEGIN code  UNTIL
  249.                     BEGIN code1 WHILE code2 REPEAT
  250.            Form(1) ist eine Endlosschleife. Sie kann nur mit
  251.            ^C beendet werden oder wenn 'code' ein IF EXIT ENDIF
  252.            enthält. Form(2) prüft bei UNTIL das Carry-Flag. Ist
  253.            es false (=0), so wird BEGIN angesprungen, ist es
  254.            true (=1), so wird hinter UNTIL fortgefahren.
  255.            In Form(3) wird das Carry-Flag bei WHILE geprüft.
  256.            Ist es true (=1), so wird code2 durchlaufen und bei
  257.            REPEAT zu BEGIN zurückgesprungen. Ist es false (=0),
  258.            so wird von WHILE aus mit dem Code hinter REPEAT
  259.            fortgefahren. Die Worte der Programmschleife verändern
  260.            keine Register.
  261.  
  262. AGAIN      Teil der BEGIN-Struktur
  263.            Syntax:  siehe BEGIN
  264.  
  265. UNTIL      Teil der BEGIN-Struktur
  266.            Syntax:  siehe BEGIN
  267.  
  268. WHILE      Teil der BEGIN-Struktur
  269.            Syntax:  siehe BEGIN
  270.  
  271. REPEAT     Teil der BEGIN-Struktur
  272.            Syntax:  siehe BEGIN
  273.  
  274.  
  275. DO         Programmschleife mit fester Durchlaufzahl
  276.            Syntax:  DO code  LOOP
  277.                     DO code +LOOP
  278.                     DO code -LOOP
  279.                     DO code /LOOP
  280.            Diese Schleife arbeitet mit einem Zähler (Register CX).
  281.            DO erwartet in DX den Anfangswert, in AX den Endwert
  282.            für den Zähler. DO lädt den DX-Wert nach CX, den AX-Wert
  283.            nach BP, sodass die Register für 'code' wieder frei sind.
  284.            In Form(1) wird bei LOOP geprüft, ob BP = oder > CX ist.
  285.            In diesem Fall wird mit dem Code hinter LOOP
  286.            fortgefahren, sonst wird CX um 1 erhöht und zu DO
  287.            zurückgesprungen. In den Formen(2-4) erwartet LOOP
  288.            einen Wert in AX, der zu CX addiert, subtrahiert oder
  289.            absolut addiert wird.
  290.            Eine DO-Schleife wird in jedem Fall einmal durchlaufen.
  291.         
  292.  
  293. LOOP       Teil einer DO-Schleife
  294.            Syntax:  siehe DO
  295.  
  296. +LOOP      Teil einer DO-Schleife
  297.            Syntax:  siehe DO
  298.  
  299. -LOOP      Teil einer DO-Schleife
  300.            Syntax:  siehe DO
  301.  
  302. /LOOP      Teil einer DO-Schleife
  303.            Syntax:  siehe DO
  304.  
  305.  
  306.  
  307. 4. Präfixe:
  308.  
  309. AX         Lädt AX mit einem Wert
  310.            Syntax:  AX n
  311.            n ist ein Zahlenwert oder ein Wörterbuchname.
  312.            Ist n ein Literal, so wird dieses geladen.
  313.            Ist n ein Name, so wird PAR0 geladen.
  314.            Im .COM-File wird compiliert:
  315.            MOV AX,n  oder MOV AX,PAR0
  316.  
  317. BX         Lädt BX mit einem Wert
  318.            Syntax:  AX n
  319.            n ist ein Zahlenwert oder ein Wörterbuchname.
  320.            Ist n ein Literal, so wird dieses geladen.
  321.            Ist n ein Name, so wird PAR0 geladen.
  322.            Im .COM-File wird compiliert:
  323.            MOV BX,n  oder MOV BX,PAR0
  324.  
  325. ADR        Synonym für BX
  326.  
  327. DX         Lädt DX mit einem Wert
  328.            Syntax:  AX n
  329.            n ist ein Zahlenwert oder ein Wörterbuchname.
  330.            Ist n ein Literal, so wird dieses geladen.
  331.            Ist n ein Name, so wird PAR0 geladen.
  332.            Im .COM-File wird compiliert:
  333.            MOV DX,n  oder MOV DX,PAR0
  334.  
  335. TO         Synonym für DX
  336.  
  337. ,          Synonym für DX
  338.  
  339. SX         Bringt Literale auf Datenstack
  340.            Syntax:  SX n1 n2 .. ni
  341.            ni sind Zahlenwerte.
  342.            PAR0 von Wörterbuchnamen lassen sich nicht direkt
  343.            auf den Stack bringen.
  344.            Wird in das .COM-File compiliert als:
  345.            DEC SI  DEC SI  MOV [SI],n
  346.  
  347. OFFSET     Addiert Wert zu BX
  348.            Syntax:  OFFSET n
  349.            n ist ein Zahlenwert oder ein Wörterbuchname.
  350.            In das .COM-File wird compiliert:
  351.            ADD BX,n oder ADD BX,PAR0
  352.  
  353.  
  354.  
  355. 5. Sonstige:
  356. a) an beliebiger Stelle:
  357.  
  358. (          Leitet Kommentar ein
  359.            Syntax:  ( Kommentar )
  360.            Beide Klammern müssen durch Leerzeichen vom übrigen
  361.            Text getrennt sein. ( Kommentar(NAXOS) ) ist somit
  362.            möglich. 
  363.  
  364. )          Schliesst Kommentar ab
  365.            Syntax:  siehe (
  366.  
  367. b) nur innerhalb von Code:
  368.  
  369.  
  370. "          Leitet ein Stringliteral ein
  371.            Syntax:  " Zeichenkette"
  372.            Die Zeichenkette wird mit countbyte im .COM-File
  373.            abgelegt. Die Adresse des countbytes steht in BX.
  374.            Das Leerzeichen hinter dem führenden " wird nicht
  375.            mitgezählt.
  376.  
  377. ."         Gibt Zeichenkette aus
  378.            Syntax:  ." Zeichenkette"
  379.            Das Leerzeichen hinter ." wird nicht ausgegeben.
  380.  
  381. RECLEN     Bringt die Länge der letztgenannten Datenstruktur nach AX
  382.            Syntax:  RECLEN
  383.            In das .COM-File wird compiliert:
  384.            MOV AX,reclen
  385.  
  386. MAKE       Setzt einen Vektor
  387.            Syntax:  MAKE vecname procname
  388.            'vecname' ist der Wörterbuchname eines zuvor definierten
  389.            Vektors, 'procname' der Wörterbuchname einer zuvor
  390.            definierten PROC-Definition.
  391.            In das .COM-File wird an der adresse von vecname
  392.            compiliert: JMP distance(proc-codeadresse)
  393.  
  394. {          Öffnet den Bedingungsstack
  395.            Syntax:  { code }
  396.            '{' wird als PUSH BP, '}' als POP BP compiliert
  397.  
  398. }          Schliesst den Bedingungsstack
  399.            Syntax:  siehe {
  400.  
  401. PUSHF      Rettet das Carry-Flag
  402.            Syntax:  PUSHF
  403.            Darf nur innerhalb von { ... } verwendet werden.
  404.            Wird im .COM-File compiliert als:
  405.            SHL BP,1
  406.  
  407.  
  408. ( SYSTEM.DOC Ende )
  409.  
  410.