File: basic.doc

package info (click to toggle)
p2c 1.21alpha2-1
  • links: PTS
  • area: main
  • in suites: potato, woody
  • size: 1,996 kB
  • ctags: 3,399
  • sloc: ansic: 38,617; pascal: 2,499; makefile: 213; perl: 101
file content (448 lines) | stat: -rw-r--r-- 11,310 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448

                             Chipmunk BASIC 1.0
                               David Gillespie


       --------------------------------------------------------------




   COMMANDS


      LIST line(s)

         List the specified program lines.  For example,

               LIST 10, 100-200

         lists line 10, and lines 100 through 200, inclusive.


      RUN [line]

         Begin execution of the program at the first line, or at the
         specified line.  All variables are cleared.


      RUN file[,line]

         Load and run a program.  For example,

               RUN "FOO", 30

         loads a program from the file FOO.TEXT and begins execution at
         line 30.


      NEW

         Erase the program in memory.


      LOAD file

         Load a program into memory.  The program previously in memory is
         erased.  The file name should be in quotes; a .TEXT extension is
         automatically added.  Files contain ASCII listings of the programs.
         All lines in the file must begin with a line number, but line
         numbers do not need to be in increasing order.


      MERGE file

         Load a program into memory.  The previous program remains in
         memory; if a line exists in both programs, the newly loaded
         line is kept.


      SAVE file

         Save the program in memory to a file.


      BYE

         Return to the operating system.


      DEL line(s)

         Delete the specified program lines.  Line numbers may be
         separated by commas and dashes as in LIST.  If used inside
         a program, DEL will terminate execution only if it deletes
         the line on which it appears.


      RENUM [start[,inc]]

         Renumber program lines.  By default, the new sequence is 10,20,30,...
         The first argument is a new initial line number; the second argument
         is the increment between line numbers.




   STATEMENTS

      REM comment

         A remark; ignored.  Comments may contain any characters except
         that REM can not be immediately followed by an alphanumeric
         character.


      [LET] var = expr

         Assign a value to a variable.  Variable names contain up to 20
         significant characters, consisting of upper- and lower-case
         letters, digits, underscores, and dollar signs.  Variable names
         are case-sensitive.  Variables hold real numbers normally, or
         strings of up to 255 characters if their names end with $.

         Examples:

               LET X=20
               X$="FOO"
               X$=X$+"BAR"


      DIM var(dimensions), ...

         Allocate memory for arrays.  Arrays may have up to 4 dimensions,
         ranging from 0 to the value specified in the DIM statement.
         The same name must not be used for both a simple variable and
         an array.

         If an array is used before it is dimensioned, each dimension
         is set to 10.

         Example:

               INPUT "How many elements? "; x
               DIM array(x,1)
               FOR i=1 TO x : INPUT array(i,0), array(i,1) : NEXT


      PRINT items

         Print the items on the screen.  Items may be either numeric
         or string expressions, and may be separated by commas, semicolons,
         or nothing.

         Numbers are normally terminated by spaces.  To avoid this space,
         convert the number to a string with STR$.

         The line is terminated by a CR/LF, unless the item list ends 
         with a comma or semicolon.

         The word PRINT may be abbreviated as a question mark.

         Examples:

               PRINT "1+2=", 1+2
               PRINT X$ "=" Z$;
               ? x; y+z


      INPUT [prompt;] vars

         If a prompt string is given, it is printed.  Otherwise, a
         question mark is printed.  The computer then waits for values 
         for each variable to be entered.  If several variables are
         listed, their names must be separated by commas.

         If the variables are numeric, their values may be entered
         on separate lines, or combined with commas.  Any numeric expression
         is a valid response.

         If the variables are strings, each string is typed on a separate
         line.  The characters typed are copied verbatim into the string.

         String and numeric variables may be not mixed in a single
         INPUT statement.

         Examples:

            INPUT X$
            INPUT "Type 3 numbers: "; X, Y, Z


      GOTO line

         Begin executing statements at the specified line.  The line
         number may be any numeric expression.

         The word GO TO may be used instead of GOTO if preferable.


      IF condition THEN line/statements ELSE line/statements

         If the condition is true (i.e., the numeric expression has a
         non-zero value), the statements following the word THEN are
         executed.  Otherwise, the statements following ELSE are
         executed.  If there is no ELSE clause, execution proceeds
         to the next line in the program.

         A line number may be used after either THEN or ELSE, for an
         implied GOTO statement.


      END

         Terminate the program.  An END statement is not required.


      STOP

         Terminate the program with an identifying "Break" message.


      FOR var = first TO last [STEP inc]
      {statements}
      NEXT [var]

         Execute {statements} repeatedly while the variable counts from
         "first" to "last," incrementing by 1, or by the STEP value if
         given.  If the STEP value is negative, the variable counts
         downward.

         If "first" is greater than "last" (or less than if STEP is
         negative), execution proceeds directly to the NEXT statement,
         without executing the body of the loop at all.

         The variable name is optional on the NEXT statement.


      WHILE [condition]
      {statements}
      WEND [condition]

         Execute {statements} repeatedly until the WHILE condition (if
         given) becomes false, or until the WEND condition becomes true.
         This structure can emulate Pascal's WHILE-DO and REPEAT-UNTIL,
         or even both at once.  If no conditions are given, the loop will
         never terminate unless the Evil GOTO is used.


      GOSUB line
      RETURN

         Execute the statements beginning at the specified line, then
         when RETURN is reached, return to the statement following the 
         GOSUB.


      READ vars
      DATA values
      RESTORE line

         Read numeric or string values from the DATA statements.  Reading
         begins at the first DATA statement in the program and proceeds
         to the last.  Reading past the end the last DATA statement
         generates an error.

         The DATA values must be either numeric or string expressions,
         according to the type of variable being read.  Reading the wrong
         kind of expression produces a Syntax Error.

         The RESTORE statement causes the next READ to re-use the first
         DATA statement in the program, or the first DATA statement on
         or after a particular line.


      GOTOXY across, down

         Move the cursor to the specified screen position, between
         0,0 and 79,23.


      ON expr GOTO line, line, ...
      ON expr GOSUB line, line, ...

         If the expression's value, rounded to an integer, is N, go to
         the Nth line number in the list.  If N is less than one or is
         too large, execution continues at the next statement after
         the ON-GOTO or ON-GOSUB.


      POKE addr, data

         Store a byte at the specified address.




   NUMERIC EXPRESSIONS

      x AND y

         Logical AND of two integers.


      x OR y

         Logical OR of two integers.


      x XOR y

         Logical XOR of two integers.


      NOT x

         Logical complement of an integer.


      x+y, x-y, x*y, x/y, x^y, -x

         Typical floating-point arithmetic operations.


      x=y, x<y, x>y, x<=y, x>=y, x<>y

         Comparisons; result is 1 if true, 0 if false.


      x MOD y

         Modulo of two integers.


      SQR x

         Square of X.  Note that parentheses are not required if a function's
         argument is a single entitity; for example, SQR SIN X needs no
         parentheses, but SQR(1+X) does.


      SQRT x

         Square root of X.


      SIN x, COS x, TAN x, ARCTAN x

         Typical trig functions, in radians.


      LOG x, EXP x

         Natural logarithm, and e the power X.


      ABS x

         Absolute value of X.


      SGN x

         Sign of X:  1 if X is positive, 0 if zero, -1 if negative.


      VAL x$

         Value of the expression contained in the string X$.  For example,
         VAL "1+2" yields 3.  X$ may be a single string literal, variable,
         or function, or a string expression in parentheses.


      ASC x$

         ASCII code of the first character in X$, or 0 if X$ is null.


      LEN x$

         Number of characters in X$.


      Precedence:      Parentheses
                        Functions  (incl. NOT and unary minus)
                            ^
                        *, /, MOD
                          +, -
                   =, <, >, <=, >=, <>
                           AND
                         OR, XOR



   STRING EXPRESSIONS

      "string" or 'string'

         String literal.  Single quotes are converted to double quotes
         internally.


      x$+y$

         Concatenation.  Result must be 255 characters or less.


      x$=y$, x$<y$, x$>y$, x$<=y$, x$>=y$, x$<>y$

         String comparisons; result is 1 if true, 0 if false.


      STR$(x)

         The number X expressed as a string of digits.  No leading or
         trailing spaces are included; scientific notation is used
         if the absolute values is greater than 1E12 or less than 1E-2.


      CHR$(x)

         The character whose ASCII code is X.


      MID$(x$, y)
      MID$(x$, y, z)

         (Parentheses required.)  The substring consisting of the first
         Z characters starting at position Y of string X$.  Position 1
         is the first character of the string.  If Z is omitted, 255
         is used, i.e., the entire right part of the string.



   CONVENTIONS

      Multiple statements may be written on a line, separated by colons:

            10 INPUT X : PRINT X : STOP


      There is actually no difference between commands and statements;
      both can be used in or out of programs at will.  Certain commands,
      such as NEW, will, of course, halt program execution.


      Line numbers may be any integer from 1 to MAXINT.


      To delete a line use DEL, or type its line number alone:

            10


      Press CLR I/O to halt program execution.  [This is not supported
      by p2c's translation!]  To leave BASIC, use the BYE command.


      Keywords must be written in all upper- or all lower-case; they are
      always converted to upper-case internally.  Spaces are ignored in
      the input except between quotes.  Square brackets are converted to
      parentheses.  Missing closing quotes at the end of the line are
      added, as in the command:

            SAVE "PROGRAM