Incompatibilities with "real" classic BASIC

1
2
3
4
5

There are a few differences that I know of between Quite BASIC and many of the "real" classic BASIC implementations. I want to fix them all but I don't seem to have enough time. If I get feedback on what is the most important, it may help me focus so I'd appreciate feedback.

Here are some:

  1. INPUT. Quite BASIC only allows one variable input per INPUT command. Many classic BASIC versions allow multiple variable input delimited by semicolon. High priority
  2. DEF. Quite BASIC does not support the DEF keyword for creating new functions. High priority.
  3. Function names. There could be differences in the naming of functions. Medium priority.
  4. Escape characters. Quite BASIC doesn't really have a "terminal" so priniting special charcters doesn't have the effect of doing things like repositioning the cursor etc. This is pretty hard and may never be fixed. :( Low priority.
  5. FIXED! "ON" command. This ugly syntax is used in many early BASIC programs.
  6. FIXED! Multidimensional arrays. Quite BASIC now (May 1008) supports multi dimensional arrays.
  7. FIXED! Array indices can now (May 2008) be either enclosed by parentheses or brackes! Like this: A[5] or like this: A(5).
  8. FIXED! As of today, colon works properly to delimit commands on the same line.
  9. FIXED! Variable names. Quite BASIC used to only allow single letter variables. This is fixed as of Feb 3, 2008. Now variable names are a letter followed by optional digits. Also we allow a $ sign to appended to variable names.
  10. FIXED (for 1-dim)! Arrays. Initially only the non-standars ARRAY keyword was supported. On Feb 2, 2008 I deployed a fix so that the DIM keywork is now supported. However, only one-dimensional arrays are supported.
  11. FIXED! Semicolon. This issue is fixed for PRINT commands as of Feb 2, 2008.
  12. FIXED! DATA / READ. As of Feb 4, 2008 DATA and READ in part of the Quite BASIC language.

I'd sincerely appreciate feedback on this and if you find other incompatibilities I'd like to hear about it too.

regarding escape characters - an alternative

I suggest an ASC() function so we can trap enter and backspace keys.
Then we can just print a newline or use a CLT to clear text if the user makes a keystroke error and wants to erase. It would be good for games or other programs that require more than one key for input, such as text adventures.

For example:

1 REM ASCII value of backspace is 8
10 LET C = GETCHAR()
20 if ASC(C) = 8 THEN GOTO 100
20 LET B = B + C
30 REM ...displaying input goes here, etc
40 GOTO 10

100 LET B = LEFT(B,LEN(B)-1)
110 CLT
120 PRINT B; : REM Looks just like a backspace
130 GOTO 10

And have a swell day! :-)