home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128Toolkit / COMAL-SYNTAX < prev    next >
Encoding:
Text File  |  2019-04-13  |  9.6 KB  |  448 lines

  1.  COMAL Syntax:  C-64 / Version 0.14
  2.  
  3.  
  4.  Note:  Items in brackets ([]) are optional.
  5.  
  6.  // -- allows comments in a program
  7.   //[<anything>]
  8.  
  9.  ABS -- returns absolute value
  10.   ABS(<numeric expression>)
  11.  
  12.  AND -- logical AND
  13.   <expression> AND <expression>
  14.  
  15.  APPEND -- start at end of seq file
  16.   OPEN [FILE] <file#>,<filename>,APPEND
  17.  
  18.  ATN -- returns arctangent in radians
  19.   ATN(<numeric expression>)
  20.  
  21.  AUTO -- automatic line numbering
  22.   AUTO [<start line>][,<increment>]
  23.  
  24.  BASIC -- return to BASIC mode
  25.   BASIC
  26.  
  27.  CASE -- multiple choice decisions
  28.   CASE <control expression> [OF]
  29.  
  30.  CAT -- disk catalog (directory)
  31.   CAT [<drive number>]
  32.  
  33.  CHAIN -- load & run program on disk
  34.   CHAIN <filename>
  35.  
  36.  CHR$ -- returns CBM ASCII code; inverse of ORD
  37.   CHR$(<numeric expression>)
  38.  
  39.  CLOSE -- closes files
  40.   CLOSE [[FILE] <filenum>]
  41.   CLOSE with no file # closes all open files
  42.  
  43.  CLOSED -- makes all proc/func variables local
  44.   PROC <procname>[(params)] [CLOSED]
  45.   FUNC <funcname>[(params)] [CLOSED]
  46.  
  47.  CON -- continue program execution
  48.   CON
  49.  
  50.  COS -- returns cosine (angle in radians)
  51.   COS(<numeric expression>)
  52.  
  53.  DATA -- provides data for a READ
  54.   DATA <value>[,<value>][,...]
  55.  
  56.  DEL -- deletes lines
  57.   DEL <range>
  58.  
  59.  DELETE -- deletes a file from disk
  60.   DELETE <filename>
  61.  
  62.  DIM -- reserve/allocate string/array space
  63.   DIM <string var> OF <max char>
  64.   DIM <str array>(<index>) OF <max char>
  65.   DIM <array name>(<index>)
  66.  
  67.  DIV -- division with integer answer
  68.   <dividend> DIV <divisor>
  69.  
  70.  DO -- do the following statements
  71.   DO <statements>
  72.  
  73.  EDIT -- list lines without indentations
  74.   EDIT [<range>]
  75.  
  76.  ELIF -- short for ELSE IF condition
  77.   ELIF <expression> [THEN]
  78.  
  79.  ELSE -- alternative statements in IF structure
  80.   ELSE
  81.  
  82.  END -- halt program execution
  83.   END
  84.  
  85.  ENDCASE -- end of CASE structure
  86.   ENDCASE
  87.  
  88.  ENDFOR -- end of FOR structure
  89.   ENDFOR [<control variable>]
  90.  
  91.  ENDFUNC -- end of function
  92.   ENDFUNC [<function name>]
  93.  
  94.  ENDIF -- end of IF structure
  95.   ENDIF
  96.  
  97.  ENDPROC -- end of procedure
  98.   ENDPROC [<procedure name>]
  99.  
  100.  ENDWHILE -- end of WHILE structure
  101.   ENDWHILE
  102.  
  103.  ENTER -- merge LISTed program segment from disk
  104.   ENTER <filename>
  105.  
  106.  EOD -- End Of Data flag
  107.   EOD
  108.  
  109.  EOF -- End Of File flag
  110.   EOF(<filenum>)
  111.  
  112.  ESC -- stop key pressed flag
  113.   ESC
  114.   TRAP ESC<type>
  115.  
  116.  EXEC -- execute a procedure
  117.   [EXEC] <procname>[(<parameter list>)]
  118.  
  119.  EXP -- returns e^n (e=base of natural logs=2.18281828459045+)
  120.   EXP(<numeric expression>)
  121.  
  122.  FALSE -- predefined value = 0
  123.   FALSE
  124.  
  125.  FILE -- specifies file I/O is to be used
  126.   INPUT FILE <file#>[,<rec#>]: <varlist>
  127.   PRINT FILE <file#>[,<rec#>]: <varlist>
  128.   READ  FILE <file#>[,<rec#>]: <varlist>
  129.   WRITE FILE <file#>[,<rec#>]: <varlist>
  130.   OPEN [FILE] <file#>,<filenam>[,<type>]
  131.   CLOSE [[FILE] <file#>]
  132.  
  133.  FOR -- start of FOR loop structure
  134.   FOR <var>:=<start> TO <end> [STEP <s>]
  135.  
  136.  FUNC -- start of a multiline function
  137.   FUNC <name>[(<params>)] [CLOSED]
  138.  
  139.  GOTO -- go to line with this label
  140.   GOTO <label name>
  141.  
  142.  IF -- start of conditional IF structure
  143.   IF <condition> [THEN]
  144.   IF <condition> THEN <statement>
  145.  
  146.  IN -- returns position of string1 within string2
  147.   <string1> IN <string2>
  148.  
  149.  INPUT -- input from keyboard or file
  150.   INPUT [<prompt>:] <varlist>
  151.   INPUT FILE <file#>[,<rec#>]:<varlist>
  152.  
  153.  INT -- returns truncated integer value
  154.   INT(<numeric expression>)
  155.  
  156.  KEY$ -- current key pressed
  157.   KEY$
  158.  
  159.  LABEL -- assign a label
  160.   <label name>:
  161.  
  162.  LEN -- returns string length
  163.   LEN(<string expression>)
  164.  
  165.  LET -- assign value to variable
  166.   :=   or   :+    or   :-
  167.   A:+B -> A:=A+B;  A:-B -> A:=A-B
  168.  
  169.  LIST -- list program
  170.   LIST [<range>] [<filename>]
  171.   LIST <filename> puts list file on disk
  172.  
  173.  LOAD -- load a program from disk
  174.   LOAD <filename>
  175.  
  176.  LOG -- returns natural logarithm of n
  177.   LOG(<numeric expression>)
  178.  
  179.  MOD -- remainder of division (modulo)
  180.   <dividend> MOD <divisor>
  181.  
  182.  NEW -- clears program from memory
  183.   NEW
  184.  
  185.  NEXT -- alternate form of ENDFOR
  186.   NEXT [<control variable>]
  187.  
  188.  NOT -- logical NOT
  189.   NOT <condition>
  190.  
  191.  NULL -- does nothing (no op)
  192.   NULL
  193.  
  194.  OF -- part of DIM or CASE structure
  195.   CASE <expression> [OF]
  196.   DIM <stringvar> OF <max char>
  197.   DIM <stringarray>(index) OF <max char>
  198.  
  199.  OPEN -- open a file
  200.   OPEN [FILE] <file#>,<filenam>[,UNIT <dev>[,<secondary address>]][,<type>]
  201.  
  202.  OR -- logical OR
  203.   <condition> OR <condition>
  204.  
  205.  ORD -- returns integer representing character; inverse of CHR$
  206.   ORD(<string expression>)
  207.  
  208.  OTHERWISE -- default for CASE
  209.   OTHERWISE
  210.  
  211.  OUTPUT -- select output location
  212.   SELECT [OUTPUT] <type>
  213.   <type> is either "DS:" (for Display Screen) or "LP:" (for Line Printer)
  214.   
  215.  PASS -- pass string to disk command chan
  216.   PASS <disk command>
  217.  
  218.  PEEK -- returns value of memory at address
  219.   PEEK(<memory address>)
  220.  
  221.  POKE -- change memory location
  222.   POKE <memory address>,<contents>
  223.  
  224.  PRINT -- print items to screen/printer/file
  225.   PRINT [FILE <#>:] [<varlist>]
  226.   PRINT [FILE <#>:] USING <format>:<varlist>
  227.   (RANDOM file use: [FILE <#>,<rec#>:])
  228.  
  229.  PROC -- start of multiline procedure
  230.   PROC <name>[(<params>)] [CLOSED]
  231.  
  232.  RANDOM -- random access file type
  233.   OPEN FILE <#>,<filenam>,RANDOM <recln>
  234.  
  235.  READ -- read data from DATA line or file
  236.   READ <varlist>
  237.   READ FILE <file#>[,<rec#>]: <varlist>
  238.   OPEN [FILE] <filenum>,<filename>,READ
  239.  
  240.  REF -- designates call by reference parameter in PROC or FUNC
  241.   REF <var>
  242.  
  243.  RENUM -- renumber program
  244.   RENUM [<targetstart>][,<increment>]
  245.  
  246.  REPEAT -- start of REPEAT structure
  247.   REPEAT
  248.  
  249.  RESTORE -- reuse DATA with READ
  250.   RESTORE
  251.  
  252.  RND -- returns random number
  253.   RND(<num>)
  254.   RND(<start num>:<end num>)
  255.  
  256.  RUN -- run program now in memory
  257.   RUN
  258.  
  259.  SAVE -- record program on disk
  260.   SAVE <filename>
  261.  
  262.  SELECT -- choose output location
  263.   SELECT [OUTPUT] <type>
  264.   <type> is either "DS:" (for Display Screen) or "LP:" (for Line Printer)
  265.  
  266.  SGN -- returns -1 if negative, 0 if zero, 1 if positive
  267.   SGN(<numeric expression>)
  268.  
  269.  SIN -- returns sine (angle in radians)
  270.   SIN(<numeric expression>)
  271.  
  272.  SIZE -- show amount of free memory
  273.   SIZE
  274.  
  275.  SQR -- returns square root
  276.   SQR(<numeric expression>)
  277.  
  278.  STATUS$ -- displays or returns disk channel status
  279.   STATUS$
  280.  
  281.  STEP -- increment FOR loop by this amount
  282.   STEP <numeric expression>
  283.  
  284.  STOP -- halt program execution
  285.   STOP
  286.  
  287.  SYS -- transfer control to machine code
  288.   SYS(<memory address>)
  289.  
  290.  TAB -- print spaces to specified column
  291.   TAB(<column number>)
  292.  
  293.  TAN -- returns tangent (angle in radians)
  294.   TAN(<numeric expression>)
  295.  
  296.  THEN -- part of IF structure
  297.   THEN
  298.  
  299.  TO -- increment FOR variable start TO end
  300.   <start num> TO <end num>
  301.  
  302.  TRAP -- disable stop key
  303.   TRAP ESC<type>
  304.  
  305.  TRUE -- predefined value of 1
  306.   TRUE
  307.  
  308.  UNIT -- specify unit (device)
  309.   OPEN [FILE] <file#>,<filenam>[,UNIT <dev>[,<secondary address>]][,<type>]
  310.  
  311.  UNTIL -- end of REPEAT loop
  312.   UNTIL <expression>
  313.  
  314.  USING -- formatted output
  315.   PRINT USING <format>: <varlist>
  316.  
  317.  WHEN -- choice in CASE structure
  318.   WHEN <list of values>
  319.  
  320.  WHILE -- start of WHILE structure
  321.   WHILE <expression> [DO] [<statement>]
  322.  
  323.  WRITE -- write to a file
  324.   WRITE FILE <file#>[,<rec#>]: <varlist>
  325.   OPEN [FILE] <filenum>,<filename>,WRITE
  326.  
  327.  ZONE -- sets or returns tab interval
  328.   ZONE <tab interval> - sets interval
  329.   ZONE - returns interval (x:=ZONE)
  330.  
  331.  
  332.  
  333.  HIGH-RES & TURTLE GRAPHICS
  334.  
  335.  
  336.  BACK -- move turtle backwards
  337.   BACK <length>
  338.  
  339.  BACKGROUND -- set screen background color
  340.   BACKGROUND <color number>
  341.  
  342.  BORDER -- set screen border color
  343.   BORDER <color number>
  344.  
  345.  CLEAR -- clear the graphics screen
  346.   CLEAR
  347.  
  348.  DRAWTO -- draw line from current point
  349.   DRAWTO <x coordinate>,<y coordinate>
  350.  
  351.  FILL -- fill in area with current color
  352.   FILL <x coordinate>,<y coordinate>
  353.  
  354.  FORWARD -- move turtle forward
  355.   FORWARD <length>
  356.  
  357.  FRAME -- set up a screen window
  358.   FRAME <x0>,<x1>,<y0>,<y1>
  359.  
  360.  FULLSCREEN -- fullscreen graphics (F5)
  361.   FULLSCREEN
  362.  
  363.  HIDETURTLE -- make the turtle invisible
  364.   HIDETURTLE
  365.  
  366.  HOME -- put turtle in its home position
  367.   HOME
  368.  
  369.  LEFT -- turn turtle left
  370.   LEFT <degrees>
  371.  
  372.  MOVETO -- move to x,y point without line
  373.   MOVETO <x coordinate>,<y coordinate>
  374.  
  375.  PENCOLOR -- set current pen color
  376.   PENCOLOR <color number>
  377.  
  378.  PENDOWN -- put pen down-turtle draws line
  379.   PENDOWN
  380.  
  381.  PENUP -- pick up pen-turtle doesn't draw
  382.   PENUP
  383.  
  384.  PLOT -- plot a point in current color
  385.   PLOT <x coordinate>,<y coordinate>
  386.  
  387.  PLOTTEXT -- print text on graphics screen
  388.   PLOTTEXT <x coordinate>,<y coordinate>,<text$>
  389.  
  390.  RIGHT -- turn turtle right
  391.   RIGHT <degrees>
  392.  
  393.  SETGRAPHIC -- turn on graphics screen
  394.   SETGRAPHIC [<type>]
  395.  
  396.  SETHEADING -- set turtle heading
  397.   SETHEADING <degree>
  398.  
  399.  SETTEXT -- turn on text screen (F1)
  400.   SETTEXT
  401.  
  402.  SETXY -- set turtle x and y coordinates
  403.   SETXY <x coordinate>,<y coordinate>
  404.  
  405.  SHOWTURTLE -- make turtle visible
  406.   SHOWTURTLE
  407.  
  408.  SPLITSCREEN -- 2 text lines above graphics screen (F3)
  409.   SPLITSCREEN
  410.  
  411.  TURTLESIZE -- set turtle size (0 to 10)
  412.   TURTLESIZE <size>
  413.  
  414.  
  415.  
  416.  SPRITES
  417.  
  418.  
  419.  DATACOLLISION -- test collision with data
  420.   DATACOLLISION <sprite#>,<reset collision flag>
  421.  
  422.  DEFINE -- set up sprite image for lateruse
  423.   DEFINE <sprite definition #>,<64 byte def$>
  424.  
  425.  HIDESPRITE -- turn off specified sprite
  426.   HIDESPRITE <sprite number>
  427.  
  428.  IDENTIFY -- assign an image to a sprite
  429.   IDENTIFY <sprite number>,<definition#>
  430.   (note: sprite 7 is used for turtle)
  431.  
  432.  PRIORITY -- data priority over sprite?
  433.   PRIORITY <sprite #>,<data priority?>
  434.  
  435.  SPRITEBACK -- set 2 sprite multicolors
  436.   SPRITEBACK <color1>,<color2>
  437.  
  438.  SPRITECOLLISION -- test sprite collision
  439.   SPRITECOLLISION <sprite#>,<reset collision flag>
  440.  
  441.  SPRITECOLOR -- set sprite color
  442.   SPRITECOLOR <sprite #>,<color number>
  443.  
  444.  SPRITEPOS -- put sprite at x,y location
  445.   SPRITEPOS <sprite#>,<x coordinate>,<y coorinate>
  446.  
  447.  SPRITESIZE -- set sprite size (expand or not)
  448.   SPRITESIZE <sprite#>,<x expand flag>,<y expand flag>