Difference between revisions of "ARM BBC BASIC"
m (WikiSysop moved page BBC BASIC (ARM) to ARM BBC BASIC without leaving a redirect: Consistent naming scheme.) |
m (Typos.) |
||
Line 18: | Line 18: | ||
* STEP TRACE | * STEP TRACE | ||
* Commands for the new sound system, mouse, graphics | * Commands for the new sound system, mouse, graphics | ||
+ | |||
== ARM BASIC 1.00, 1986 == | == ARM BASIC 1.00, 1986 == | ||
Line 42: | Line 43: | ||
* ERROR EXT passes an error to the caller's error handler | * ERROR EXT passes an error to the caller's error handler | ||
* =QUIT will return TRUE if BASIC has been called with -quit on command line | * =QUIT will return TRUE if BASIC has been called with -quit on command line | ||
− | * A list of free string space is kept, with each list having one size in | + | * A list of free string space is kept, with each list having one size in words. When strings are allocated, the appropriate string-size list is scanned for a free space before extending the heap. |
− | words. When strings are allocated, the appropriate string-size list is | ||
− | scanned for a free space before extending the heap. | ||
* Error messages revised | * Error messages revised | ||
* Setting bit 3 in OPT wil check assembly does not flow past a limit in L% | * Setting bit 3 in OPT wil check assembly does not flow past a limit in L% | ||
Line 56: | Line 55: | ||
* HIMEM=HIMEM wouldn't work | * HIMEM=HIMEM wouldn't work | ||
* CREATE was uncallable due to LVBLNK loosing R4 | * CREATE was uncallable due to LVBLNK loosing R4 | ||
− | * STRACC postion changed | + | * STRACC postion changed from Arthur 2.00 |
* $A="" check for <&8000 | * $A="" check for <&8000 | ||
* 50IF<false>THEN50 unescapeable | * 50IF<false>THEN50 unescapeable | ||
Line 68: | Line 67: | ||
* ADR with errors suppressed (bit 1 clear) gives an error if the label is out of range | * ADR with errors suppressed (bit 1 clear) gives an error if the label is out of range | ||
* ADVAL only returns 8 bits to program, OS returns 32 bits. | * ADVAL only returns 8 bits to program, OS returns 32 bits. | ||
+ | * ADVAL calls OS_Byte instead of XOS_Byte, so generates an error if a device is missing instead of returning a null/default value. | ||
+ | |||
== ARM BASIC 1.05, 1992 == | == ARM BASIC 1.05, 1992 == | ||
Line 75: | Line 76: | ||
* Uses BASICTrans for message translation | * Uses BASICTrans for message translation | ||
* @% can be set to print "," instead of "." | * @% can be set to print "," instead of "." | ||
− | * @% is reported by LVAR in ANSI printf format, and is also settable using | + | * @% is reported by LVAR in ANSI printf format, and is also settable using this format, eg @%="G10.9". Partial setting of @% is supported. |
− | this format, eg @%="G10.9". Partial setting of @% is supported. | + | * Error messages from libraries are tagged with the name of the library which caused the error message, found from the REM on the first line of a library |
− | * Error messages from libraries are tagged with the name of the library | ||
− | which caused the error message, found from the REM on the first line of a | ||
− | library | ||
* Array statements have been sped up | * Array statements have been sped up | ||
− | * TRACE TO <filename>, TRACE CLOSE implemented. =TRACE returns trace file | + | * TRACE TO <filename>, TRACE CLOSE implemented. =TRACE returns trace file handle for, eg BPUT#TRACE,"debug text" |
− | handle for, eg BPUT#TRACE,"debug text" | ||
* TEXTLOAD and TEXTSAVE commands added | * TEXTLOAD and TEXTSAVE commands added | ||
* CRUNCH command added | * CRUNCH command added | ||
Line 88: | Line 85: | ||
=== Bugfixes === | === Bugfixes === | ||
* INSTALL no longer allowed within programs | * INSTALL no longer allowed within programs | ||
− | * ADR with bit 1 clear in OPT no longer | + | * ADR with bit 1 clear in OPT no longer gives an error when the label is out of range |
* Fatal errors are *only* 0 | * Fatal errors are *only* 0 | ||
− | * Both 5 byte real (&80, value) and 8 byte real (&88, value) values are | + | * Both 5 byte real (&80, value) and 8 byte real (&88, value) values are accepted by INPUT# |
− | accepted | + | * END= may be used almost anywhere. Can be used anywhere except with INSTALLed libraries, nested within EVAL or LOCAL ERROR, nested within assignments to local arrays, nested local arrays. END= resets HIMEM and clears local arrays if faulty. |
− | * END= may be used almost anywhere. Can be used anywhere except with | ||
− | INSTALLed libraries, nested within EVAL or LOCAL ERROR, nested within | ||
− | assignments to local arrays, nested local arrays. END= resets HIMEM | ||
− | and clears local arrays if faulty. | ||
* Fixed TAN1E-5 bug (misread the flow chart in Cody and Waite!) | * Fixed TAN1E-5 bug (misread the flow chart in Cody and Waite!) | ||
* -1^-10 blew up | * -1^-10 blew up | ||
Line 108: | Line 101: | ||
* Change to ADVAL to return all 32 bits | * Change to ADVAL to return all 32 bits | ||
* TRACE TO "printer:" didn't work because of the type setting | * TRACE TO "printer:" didn't work because of the type setting | ||
− | |||
Line 117: | Line 109: | ||
== ARM BASIC 1.22, 2001 == | == ARM BASIC 1.22, 2001 == | ||
Supplied with RISC OS 4. | Supplied with RISC OS 4. | ||
+ | |||
== ARM BASIC VI == | == ARM BASIC VI == | ||
BASIC VI is supplied with the latest RISC OS alongside BASIC V. BASIC VI can handle real numbers with greater accuracy as the improved floating-point handling performs to IEEE standard 754, using an 8-byte representation for real numbers - where BASIC V uses a 5-byte representation. <ref>http://www.riscos.com/brochure/BrochureA4.pdf, Page 3.</ref> | BASIC VI is supplied with the latest RISC OS alongside BASIC V. BASIC VI can handle real numbers with greater accuracy as the improved floating-point handling performs to IEEE standard 754, using an 8-byte representation for real numbers - where BASIC V uses a 5-byte representation. <ref>http://www.riscos.com/brochure/BrochureA4.pdf, Page 3.</ref> | ||
− | == | + | == Reference == |
− | |||
− | |||
− | |||
<references/> | <references/> |
Latest revision as of 20:35, 8 March 2015
BASIC V
The ARM version of BBC BASIC developed on from 6502 BASIC 4 and added a lot of extra functionality.
Additions
- WHILE-ENDWHILE
- IF-THEN-ELSE-ENDIF
- CASE-OF-WHEN-OTHERWISE-ENDCASE
- RETURN parameters in procedures
- local arrays
- procedure libraries (LIBRARY, INSTALL and OVERLAY)
- LOCAL DATA and LOCAL ERROR handlers
- relative RESTORE
- array operations
- +=, -=, >>, << and >>> operators
- STEP TRACE
- Commands for the new sound system, mouse, graphics
ARM BASIC 1.00, 1986
Supplied with the ARM Development System and the ARM Evaluation System (ARM Second Processors).
ARM BASIC 1.02, 1987
Supplied with Arthur 1.20 and RISC OS prior to 3.00.
ARM BASIC 1.03
ARM BASIC 1.04, 1988
Supplied with RISC OS 3.0x
Additions
- Added OVERLAY command
- Added LOCAL DATA, RESTORE DATA
- Arrays can be initialised with A$()=<factor>,<expression>,<expression> ..
- Added =SUMLEN
- MOD can return modulus of an array parameter
- ERROR EXT passes an error to the caller's error handler
- =QUIT will return TRUE if BASIC has been called with -quit on command line
- A list of free string space is kept, with each list having one size in words. When strings are allocated, the appropriate string-size list is scanned for a free space before extending the heap.
- Error messages revised
- Setting bit 3 in OPT wil check assembly does not flow past a limit in L%
- More routines are exported to CALL
- Many simple expressions have been sped up. SYS with no TO sped up.
- division by power of 2 did not check under/overflow
- LOCAL A() fixed
- A()=const fixed
- LOCAL A():DIM A(1,1) messed stack due to bug in DIM
- LINE INPUT had sense of LINE flag wrong
- HIMEM=HIMEM wouldn't work
- CREATE was uncallable due to LVBLNK loosing R4
- STRACC postion changed from Arthur 2.00
- $A="" check for <&8000
- 50IF<false>THEN50 unescapeable
- INPUT#,a$ at end of file gives end of file message
- ATN of a large power of 2 went wrong
- WHILE <no sd> failed in TRACE state due to moving LINE in SLOWMUNG
- EXP .00001 corrected
Bugs
- INSTALL allowable in a program, wiping out a substantial portion of the interpreter's stack
- ADR with errors suppressed (bit 1 clear) gives an error if the label is out of range
- ADVAL only returns 8 bits to program, OS returns 32 bits.
- ADVAL calls OS_Byte instead of XOS_Byte, so generates an error if a device is missing instead of returning a null/default value.
ARM BASIC 1.05, 1992
Supplied with RISC OS 3.1x
Additions
- Uses BASICTrans for message translation
- @% can be set to print "," instead of "."
- @% is reported by LVAR in ANSI printf format, and is also settable using this format, eg @%="G10.9". Partial setting of @% is supported.
- Error messages from libraries are tagged with the name of the library which caused the error message, found from the REM on the first line of a library
- Array statements have been sped up
- TRACE TO <filename>, TRACE CLOSE implemented. =TRACE returns trace file handle for, eg BPUT#TRACE,"debug text"
- TEXTLOAD and TEXTSAVE commands added
- CRUNCH command added
Bugfixes
- INSTALL no longer allowed within programs
- ADR with bit 1 clear in OPT no longer gives an error when the label is out of range
- Fatal errors are *only* 0
- Both 5 byte real (&80, value) and 8 byte real (&88, value) values are accepted by INPUT#
- END= may be used almost anywhere. Can be used anywhere except with INSTALLed libraries, nested within EVAL or LOCAL ERROR, nested within assignments to local arrays, nested local arrays. END= resets HIMEM and clears local arrays if faulty.
- Fixed TAN1E-5 bug (misread the flow chart in Cody and Waite!)
- -1^-10 blew up
- " unlistable token " not terminated by >&7F
- F1XSUB, F1SUB could return -0 which various xxSTAs can't cope with
- Difference between IF THENELSE and IF THEN ELSE fixed
- Cache not being flushed on errors could cause problems with EVAL
- Bug in printing 0 in E mode removed
- INT-(3*2^30) didn't give error
- Assembler OPT not reset on -chain or -quit
- A()=B() messed up
- Change to ADVAL to return all 32 bits
- TRACE TO "printer:" didn't work because of the type setting
ARM BASIC 1.14, 1994
Supplied with RISC OS 3.60.
ARM BASIC 1.22, 2001
Supplied with RISC OS 4.
ARM BASIC VI
BASIC VI is supplied with the latest RISC OS alongside BASIC V. BASIC VI can handle real numbers with greater accuracy as the improved floating-point handling performs to IEEE standard 754, using an 8-byte representation for real numbers - where BASIC V uses a 5-byte representation. [1]