What's New.New commands and features for each release.
|
Downloads
DECEMBER 21, 2023 Install packages for Windows (.Net 6 and .Net 4)
NOVEMBER 7, 2020 TANDY Model I/III General Ledger software package from 1978
OCTOBER 1, 2020 Biorhythm graphics program
SEPTEMBER 1, 2020 Tiny Basic interpreter and manual
AUGUST 10, 2020 BASIC computer games from Creative Computing library
AUGUST 1, 2020 Historical trigonometric functions, self-reproducing program example
DECEMBER 21, 2023 Install packages for Windows (.Net 6 and .Net 4)
NOVEMBER 7, 2020 TANDY Model I/III General Ledger software package from 1978
OCTOBER 1, 2020 Biorhythm graphics program
SEPTEMBER 1, 2020 Tiny Basic interpreter and manual
AUGUST 10, 2020 BASIC computer games from Creative Computing library
AUGUST 1, 2020 Historical trigonometric functions, self-reproducing program example
VERSION 3.0.5 (RELEASE 46) December 21, 2023
- New REPLACENAME2$ function to replace filename parts.
- Updated REPLACENAME$ function to replace a filename part.
- Updated help documentation and references.
VERSION 3.0.4 (RELEASE 45) DECEMBER 10, 2023
- Fixed issue in READ statement reading numbers as strings.
- Updated help documentation and references.
VERSION 3.0.3 (RELEASE 44) NOVEMBER 7, 2023
- New LINPUT statement.
- Updated FOR/NEXT statements (always loop if STEP is 0).
- Updated help documentation and references.
VERSION 3.0.2 (RELEASE 43) JULY 6, 2023
- Updated ATTACH and DETACH statements for log files.
- PEEK to get color palette information documented (56388).
- POKE to set color palette information documented (56388).
- Updated help documentation and references.
VERSION 3.0.1 (RELEASE 42) MAY 7, 2023
- New PALETTE statement to set palette.
- New PALETTE and PALETTE% functions to return current palette.
- New COLORS and COLORS% functions to return number of colors in current palette.
- New ARRANGE$ function to arrange characters in a string.
- New EXCLUDE$ function to return a string excluding characters from another string.
- New INCLUDE$ function to return a string including only characters from another string.
- New REDUCE$ function to return a string with duplicate characters removed.
- New ISUTF8, ISUTF8%, REMUTF8$ and RPLUTF8$ functions that operate on unicode strings.
- Updated SKIP$ function to skip characters in a string.
- Documented EXT alias for XCH separator in PRINT statement.
- Fixed display issue when pasting text from the clipboard that contains unicode characters into the input buffer.
- Updated help documentation and references.
VERSION 3.0 (RELEASE 41) FEBRUARY 19, 2023
- This version has an updated code base including new and improved I/O, display driver, program compilation, internal librarian and object caching supporting both .NET 4 and .NET 6. Multiple color palettes and character sets have been added along with new statements, functions, PEEKs, POKEs, USRs, updated help documentation, bug fixes and more.
- New color palettes (up to 256 colors) are now available in the Display options dialog.
- New user-defined shortcut keys are now available in the Editor options dialog.
- New extended characters.
- New support for character sets.
- ARRAY INSERT statement now allows a value to be inserted at or beyond end of array.
- CHAIN statement now correctly begins execution at line number or label if specified.
- CONT statement now restores screen locked (LOCK) and cursor enabled (CURSOR) states.
- RENUM and UNNUM statements now leave modified flag unchanged if no lines are renumbered.
- ESC$ function now allows optional parentheses.
- OPENIN% and OPENOUT% functions now allow optional parentheses.
- New CALL CST statement to display characters using a character set.
- New CALL EXT alias for CALL XCH statement.
- New DIRFMT statement to set the format of the DIR and SEARCH statements.
- New LISTC statement to list a program from the clipboard.
- New MAT LPRINT statement to print arrays to the printer.
- New CST and UTF8 separators for PRINT statement.
- New VARREF statement to assign a value to a variable at an address.
- New CHARS2$ function to return characters.
- New SELECT% function to change character set.
- New SKIP$ function to skip characters in a string.
- New VARREF function to return value of variable at an address.
- New PEEK to get current palette (8460).
- New PEEK to get number of colors in current palette (10803).
- New POKE to set current palette (8460).
- New POKE to use unicode for extended line drawing characters (14784).
- New POKE to set character set for POKE 16418 (33012).
- New POKE to set current maximum nested GOSUB depth (38400).
- New POKE to set format used for DIR and SEARCH statements (42126).
- New USR to get character set of character at row,column position (29718).
- New CTRL+ALT+HOME key added to copy text or graphics screen to clipboard.
- New SHIFT+ALT+HOME key added to copy text screen to clipboard.
- New /dirfmt command line option added.
- Updated $XREF statement with options for numbers and strings.
- Updated FILEINFO$ function now allows optional format to be specified.
- Implemented ANSI, OEM and SEL separators for PRINT statement.
- Implemented SELECT statement and SELECT function.
- Implemented POKEs to set character set (29538 and 46966).
- Fixed exception in ON BREAK when BREAK key is pressed in input mode and the BREAK trap status is STOP.
- Deprecated statements SWAP, GOTO TIMER and ABORT have been removed and are no longer available.
- File dialog now resets the file list when the file name text box is cleared.
- Character position in input buffer and current character set are now shown in the status bar.
- Updated help documentation and references.
VERSION 2.9.2 (RELEASE 40) November 28, 2022
- HTAB statement now checks column if past end of row.
- ICOLOR and ICOLOR2 statements now map colors when start and end parameters specified.
- KILL and VOLINI statements now use the recycle bin if set.
- LINE EDIT statement now correctly positions cursor if input buffer extends past end of screen.
- LISTF statement now uses same page mode settings as LIST statement.
- OLD statement now loads program if confirm mode is off and the current program is not modified.
- PPRINT statement now uses a single bit per pixel to allow correct color matching in graphics.
- RENLBL statement now renames label if only statement in line.
- REOPEN statement now allocates record buffer and field list if reopening file for random from another mode.
- SEEK statement now checks position parameter error.
- $XREF statement updated with new statements and functions.
- FILEINFO$ function now returns long name of file.
VERSION 2.9.1 (RELEASE 39) JULY 1, 2022
- PRINT statement now restores initial foreground and background colors if colors are changed using print separators (CLR or REV).
- Compiler now sets correct statement version meta data if data type specified in user defined function (DEF FN statement and FN function).
VERSION 2.9 (RELEASE 38) JANUARY 19,2021
- Support for many common ANSI escape sequences.
- Revised History dialog (history search, save and clear history, Ctrl+A|C|S|F and Delete keys).
- Revised Load and Save dialogs (volume search, Ctrl+F key).
- Revised Manage Volumes dialog (volume search, Ctrl+F and Delete keys).
- Revised Options dialog (tab width, reset).
- Revised Select Volume dialog (volume search, Ctrl+F key).
- Support for Select Folder dialog (Windows 10+/8.1/8/7/Vista).
- Browse for Folder dialog (Windows XP) now starts at the last selected folder in the Add Volume dialog.
- Edit | Paste menu command is now available while a program is running.
- Volumes can now be added in the Manage Volumes dialog while a program is running.
- New ECHO statement.
- New $REP function.
- New POKE to set insert/overwrite mode (3031).
- New USR to move cursor (17685).
- Updated CSI$ function.
- Fixed issue in Load/Save dialogs with Add... button not working.
- Updated help documentation and references.
VERSION 2.8.6 (RELEASE 37) DECEMBER 10,2020
- New POKE to set printer columns (64090).
- New USR to delete characters (29780).
- New USR to delete lines (29800).
- New USR to insert characters (45870).
- New USR to insert lines (46640).
- New USR to save or load cursor position (41265).
- New USR to save, restore, or reset text colors (50163).
- Updated PRINT statement.
- CALL USR statement documented.
- Fixed issue with the Escape key not cancelling EDIT statement.
- Updated help documentation and references.
VERSION 2.8.5 (RELEASE 36) NOVEMBER 7,2020
- New features for TANDY/Radio Shack Model I/III/IV computers using TRSDOS Level II BASIC.
- New CVI1, CVI1% and MKI1$ functions.
- New CVI2, CVI2% and MKI2$ functions.
- New CVI4, CVI4% and MKI4$ functions.
- New STR2$ function.
- New STRING2$ function.
- New POKE to set PRINT statement @@ column width (9050).
- New POKE to temporarily disable error trapping in the ON ERROR statement (47814).
- Updated PRINT statement.
- Fixed issues in Manage Volumes dialog with default volume changes.
- Fixed issue in the TAB([tab%]) separator when printing to a printer.
- Fixed issue in numeric formats with trailing sign.
- Updated help documentation and references.
VERSION 2.8.4 (RELEASE 35) OCTOBER 10,2020
- New USR to get printer page sizes (51025).
VERSION 2.8.3 (RELEASE 34) OCTOBER 1,2020
- New PEEK to get character at cursor location (16418).
- New PEEK to get attributes at cursor location (17984).
- New POKE to set attributes for POKE 16418 (16413).
- New POKE to set character at cursor location (16418).
- New USR to clear to end of line (24984).
- New USR to clear to beginning of line (25002).
- New USR to clear line (25020).
- New USR to move cursor backward (29640).
- New USR to move cursor up (29660).
- New USR to move cursor forward (29680).
- New USR to move cursor down (29700).
- New USR to clear spaces (29720).
- New USR to clear screen (29740).
- New USR to turn inverse on or off (29760).
- New control characters for cursor and screen operations.
- Updated help documentation and references.
VERSION 2.8.2 (RELEASE 33) SEPTEMBER 9,2020
- Fixed issue in compiler with invalid variable names.
VERSION 2.8.1 (RELEASE 32) SEPTEMBER 1,2020
- New POKE to enable the MAT INPUT and MAT LINPUT statements to print the array name and indices in the prompt (11022).
- New POKE to enable the MAT LINPUT statement to print a blank line between arrays (11760).
- New CTRL+F5 key added to continue the current program after a break (CONT).
- Fixed issues with user-defined functions and labels in $XREF statement.
- Fixed issue restoring cursor state in CONT and STEP statements.
- Updated help documentation and references.
VERSION 2.8 (RELEASE 31) JULY 6,2020
- New MAT, MAT INPUT, MAT LINPUT, MAT PRINT and MAT READ statements.
- New DET function.
- New POKE to set the exponent of the matrix decomposition limit (30654).
- BACKUP and TOUCH statements updated.
- $INF function updated.
- Fixed issue with numeric literal exponent parsing in compiler.
- Fixed issue with continuing BACKUP, TOUCH and WAIT statements.
- Fixed issue with continuing from confirmation dialog in program mode.
- Improved precision of mixed single and integer numeric operations.
- Updated help documentation and references.
VERSION 2.7.1 (RELEASE 30) MAY 20,2020
- Fixed issue with parsing zero fill (<0>) and blank if zero (<%>) formatting characters.
- Fixed issue with formatting value with significant 0 if no decimal point present.
VERSION 2.7 (RELEASE 29) MAY 7,2020
- New statement and functions for changing the text screen (these replace the SCREEN BACKUP/RESTORE statements and SCREEN function found in earlier versions and provide more flexibility): SCRCHK, SCRCHK%, SCRCUT$, SCREXT$, SCRGET$, SCRMAK$, SCRPUT, SCRREV$, SCRSET$
- New LISTF statement.
- New SET statement and updated RESET statement.
- New CSI$ function.
- New ISEQ, ISEQ#, ISEQ!, ISEQ% and ISEQ$ functions.
- New ISNE, ISNE#, ISNE!, ISNE% and ISNE$ functions.
- New PPOS and PPOS% functions.
- New $FILE function.
- New formatting characters for numerics - zero fill (<0>) and blank if zero (<%>).
- New F7 key added to list the directory (DIR).
- New POKE to enable the FRAME statement to clear the inside of the frame (33284).
- New POKE to enable the free disk space to be shown in the DIR statement (33307).
- New POKE to select the storage unit for the free disk space when shown in the DIR statement (33934).
- APPEND and CREATE statements updated and documented.
- CALL XCH statement documented.
- LL?, PP?, SS? and VV? statements documented.
- Fixed issue with numeric literal conversion in compiler for specific locales (Thanks Fran).
- Fixed issue with DRAW statement error index returned by $ERR function.
- Updated help documentation and references.
VERSION 2.6.2 (RELEASE 28) APRIL 10,2020
- New statements for changing graphics screens: ICOPYS, ICOPYS2
- Graphics drawing statements updated with option (STEP) to use relative drawing coordinates: ICOLOR, ICOLOR2, ICOPY, ICOPY2, IFLIP, IFLIP2, IINVERT, IINVERT2, IMOVE, IMOVE2, IROTATE, IROTATE2
- Fixed issue in graphics statements using incorrect bounds with unordered points: ICOLOR, ICOLOR2, ICOPY, ICOPY2, IFLIP, IFLIP2, IINVERT, IINVERT2, IMOVE, IMOVE2, IROTATE, IROTATE2
- Updated help documentation and references.
- The following statements have been updated with stricter parameter validation that will return a Function Call (18) error code if the computed location (row and/or column) are beyond the screen bounds: BAR, CALL HCHAR, CALL VCHAR, CLR, FILL, FRAME, HSCROLL, INVERT, VSCROLL
VERSION 2.6.1 (RELEASE 27) APRIL 4,2020
- New statements for changing graphics screens: ICOLOR, ICOLOR2, IINVERT, IINVERT2
- Updated help documentation and references.
VERSION 2.6 (RELEASE 26) MARCH 31,2020
- New statements for changing graphics screens: ICOPY, ICOPY2, IFLIP, IFLIP2, IMOVE, IMOVE2, IROTATE, IROTATE2
- New feature to allow local variables in subroutines.
- New CTRL+F1 key to get help in command or edit mode.
- New COMP statement.
- New HEAD and TAIL statements.
- New LOCAL statement.
- New MAP statement.
- New NEW! statement.
- New STAT statement.
- New TOUCH statement.
- New FILEATTR function.
- New $GLOBAL function.
- Added escape character _ (underscore) that may be prepended to variable names.
- Graphics drawing statements updated with option (STEP) to use relative drawing coordinates: ARC, BOX, CHORD, CIRCLE, GET, HCIRCLE, HGET, HLINE, HPAINT, HPRESET, HPUT, HSET, LINE, PAINT, PCLR, PCLR2, PIE, PPRINT, PPRINT USING, PRESET, PSCROLL, PSCROLL2, PSET, PUT, SPRITE
- Updated LINE INPUT and LINE EDIT statements.
- Updated STRING$ function.
- New PEEK to get current day of year (15918).
- New PEEK to get current graphics x coordinate (24966).
- New PEEK to get current graphics y coordinate (24968).
- New PEEK to get number of graphics buffers allocated with GRAPH ON or PCLEAR statements (28080).
- New PEEK to get active graphics screen (29540).
- New PEEK to get display graphics screen (29541).
- New PEEK to determine if graphics screen locked with PLOCK statement (55600).
- New POKE to set character used when displaying control characters (COMP/HEAD/TAIL/TYPE statements) (5400).
- New POKE to enable paging for HEAD/TAIL statements (8723).
- New POKE to set default lines for HEAD/TAIL statements (11100).
- New USR to get current graphics location (42696).
- GET (input) statement documented.
- PDV statement documented.
- PSTAT statement documented.
- RELABEL statement documented.
- Fixed issue in DEF FN statement to report syntax error if more than ten (10) parameters are specified.
- Fixed issue in DUMP/TYPE statements not showing last line of file if blank.
- Fixed issue in FOR statement with duplicate nesting causing incorrect looping.
- Fixed issue in POP statement to correctly enable events.
- Fixed issue in PSCROLL2 statement failing to check scroll rectangle bounds.
- Fixed issue when restoring backup program causing an exception.
- Fixed issue when automatically creating default volume during migration from version 1.x causing invalid name error.
- Updated help documentation and references.
VERSION 2.5.7 (RELEASE 25) FEBRUARY 29,2020
- New POKE to set color used to clear graphics screen in GRAPH ON and PCLEAR statements (8060).
- New POKE to enable GRAPH ON and PCLEAR statements to clear graphics screen using a color in memory (9801).
- New POKE to enable beep when input buffer is full (25976).
- New POKE to enable capitalization of program input (30901).
- New POKE to set tab width (39038).
- Updated help documentation and references.
- New contact email: [email protected]
VERSION 2.5.6 (RELEASE 24) FEBRUARY 24,2020
- New FIRSTDAY and LASTDAY functions.
- New ISGE$, ISGT$, ISLE$ and ISLT$ functions.
- New NXT function.
- Updated ISGT, ISGT#, ISGT! and ISGT% functions.
- Updated ISLT, ISLT#, ISLT! and ISLT% functions.
- Command Line Options documented.
- Fixed issue when deleting files using the recycle bin causing an I/O error.
- Updated help documentation and references.
VERSION 2.5.5 (RELEASE 23) FEBRUARY 19,2020
- New ISGE, ISGE#, ISGE! and ISGE% functions.
- New ISGT, ISGT#, ISGT! and ISGT% functions.
- New ISLE, ISLE#, ISLE! and ISLE% functions.
- New ISLT, ISLT#, ISLT! and ISLT% functions.
- VOLUME$ function updated to get source volume for program.
- Updated help documentation and references.
VERSION 2.5.4 (RELEASE 22) FEBRUARY 7,2020
- New EDIT SYNTAXERRORS statement.
- EDIT statement updated to edit lines containing a search string.
- Fixed issue in FOR statement with complex nesting and branching causing incorrect looping.
- Fixed issue in INPUT statement with multiple array values causing file error when prompting for additional input.
- Updated help documentation and references.
VERSION 2.5.3 (RELEASE 21) JANUARY 31,2020
- LI. statement documented (LIST).
- CBT, CBT% and EPS functions documented.
- New POKE to limit the screen input length for the INPUT, LINE INPUT and LINE EDIT statements (46376).
- Fixed issue in LINE EDIT statement causing input buffer overflow and application exception.
- Fixed issue in CHKREL statement parameter validation causing invalid Function Call error.
- Updated help for the LOG statement to correct the description of log operations (Thanks Ian).
- Updated Help features (Locate, New, and Start buttons in toolbar).
VERSION 2.5.2 (RELEASE 20) JANUARY 19,2020
- History dialog now has Copy All and Find... options.
- New POKE to enable PRINT TAB statement compatibility with MS BASIC (28480).
- Fixed issue in CALL HCHAR statement incorrectly calculating repeat count.
- Fixed issue in POINT function using incorrect parameter order in function call.
- Fixed issue in VERIFY and VERIFY% functions incorrectly validating volume in file name.
- Fixed issue in line with extra leading spaces causing syntax error.
- Updated help documentation.
VERSION 2.5.1 (RELEASE 19) JANUARY 7,2020
- Fixed issue in system reset to correctly update system state when in edit or input mode.
VERSION 2.5 (RELEASE 18) JANUARY 1,2020
- New CHKLBL statement.
- New EDIT DATA statement.
- New RENLBL statement.
- New EVAL!, EVAL#, EVAL$ and EVAL% functions.
- New FILEINFO2$ function.
- TAB(tab%) separator in PRINT statement can now use negative values to move the print position to the left.
- ATTACH statement can now be used with files opened in random mode.
- $ERR function has been updated to get the file number when an error occurs in file input/output.
- Fixed issue in Edit | Copy menu item causing an exception (Thanks Ian).
- Fixed issue in CHKSYN statement not reporting syntax errors (Thanks Ian).
- Fixed issue in REOPEN statement to correctly open the same file in a different mode.
- Fixed issue in PPRINT statement to correctly fill background color of strings with trailing spaces.
- Fixed issue in FILEINFO$ function to return file size without commas.
- Fixed issue in MAXLEN function to correctly return the field length of a mapped random mode file variable.
- Fixed issue when closing log file to correctly detach screen output if attached.
- Fixed issue on application startup removing required registry key causing re-installation of component.
- Updated help documentation.
- NBASIC has a new home: https://nbasic.weebly.com
VERSION 2.4 (RELEASE 17) JULY 6,2019
- New ARRAY CLEAR and ARRAY FILL statements.
- GET and PUT graphics statements now support one (1) or two (2) dimensional arrays for image data.
- OPEN PRINTER statement updated to allow a job name to be specified.
- LEFT$ and RIGHT$ functions updated to allow negative lengths.
- PRINTER$ function updated to return default and current printers.
- New LFONT statement.
- New RENVAR, RENARR and RENFN statements.
- New $STARTUP statement.
- New Printer settings tab in Options dialog.
- New File | Load from System... and File | Save to System... menu items.
- New drag and drop support of a file or folder into NBASIC.
- Length of input buffer now shown in status bar.
- New POKE to pause output from $XREF statement (7238).
- New POKE to confirm COPY or MOVE line if destination line exists (38682).
- SHIFT+TAB key no longer moves the cursor before the input start location.
- Updated help documentation.
VERSION 2.3 (RELEASE 16) FEBRUARY 19,2019
- New CHKREL statement.
- New LIST DATA and LIST REM statements.
- New PCLR2 statement.
- New PSCROLL and PSCROLL2 statements.
- New DATE3$ function.
- New JOIN$, SPLIT and SPLIT% functions.
- New MIDN function.
- New STICK and STICK% functions.
- COLOR, HCOLOR and PCOLOR statement syntax updated to allow only background color.
- MIDDLE statement updated to list lines before or after.
- SEARCH statement updated to allow wildcards for volume name.
- VOLUMES statement updated to list volumes using wildcards and properties.
- VOLUME? statement updated to filter volumes by the read-only property.
- F2 key added to list the current program.
- New POKE to enable the SEARCH statement to show volumes with no matching files (16814).
- New POKE to set MIDDLE statement default option (23613).
- New USR to get string width using graphics font (12129).
- New USR to get height of graphics font (12288).
- New USR to get current defined variable type (17968).
- Updated help documentation.
- Updated installer.
- Fixed issue in GET and PUT statements using incorrect array index causing a ?Bad subscript error.
- Fixed issue in PPRINT statement using incorrect background mode.
- Fixed issue in STEP statement stopping at the wrong breakpoint in certain cases.
- Fixed issue in MKTIME function using incorrect defaults for hour, minute and second parameters if omitted.
- Fixed issue in the location reported for syntax errors in function call argument lists.
VERSION 2.2 (RELEASE 15) JANUARY 31,2019
- FOR statement now supports the DOWNTO keyword.
- New AT(row%,column%) separator in PRINT statement.
- BOTTOM, MIDDLE and TOP statements.
- ONERR and SPEED statements (Apple ][e compatibility).
- SEARCH statement documented.
- CHKIO statement implemented and updated.
- SPLIT statement implemented and updated.
- $XREF statement has a new syntax for cross-reference options, allows listings to be paused and has been updated with new statements and functions.
- PAD$, PADC$, PADL$ and PADR$ functions.
- RNDC and RNDC% functions.
- $ERR function that returns extended error information.
- $IF function that conditionally evaluates expressions.
- $INF function that returns information about file operations.
- $SYS function that returns system information.
- FILE$ function has a new optional parameter to specify if the volume should be included in the returned file name.
- New POKE to configure where File | Load... and File | Save... menu items show the selected file name (21840).
- New POKE to set character output delay (39336).
- New POKE to specify case to use in FORMAT statement (27468).
- POKE 27217,n has been implemented to list split lines in the SPLIT statement.
- Updated help documentation.
- File | Load... and File | Save... menu items now show the file name in the status bar by default.
- Error in immediate mode no longer calls an active program mode error handler.
- RESUME NEXT no longer calls error handler a second time in certain cases.
- RETURN to immediate mode GOSUB fixed.
- String comparisons now use ordinal comparison (ASCII) instead of local culture
- LOCK #0 no longer prevents text display after program break.
- FORMAT PRINT no longer adds an extra space for PR.
- APPEND, COPY and MOVE line statements now return a function call error if the source and destination lines are the same.
- VSCROLL now scrolls the full screen up correctly.
- $XREF now properly cross-references user-defined functions with the DEF FN statement.
VERSION 2.1 (RELEASE 14) DECEMBER 31,2018
- ARRAY DELETE, ARRAY INSERT and ARRAY REVERSE statements.
- FORMAT {PRINT | ?} and FORMAT {LOCATE | @} statements.
- ISONEOF and ISONEOF% functions
- RPLBEG$, RPLEND$ and RPLSTR$ functions
- New POKE to print a space after numbers in the PRINT statement (GW-BASIC compatibility) (47104).
- New POKE to begin editing at the beginning of a line in the EDIT statement (51816).
- New POKE to prevent cursor moving to the row/column specified in the FRAME or BAR statements (58175).
- Updated help documentation.
- Cancelling the application exit dialog no longer temporarily disables the cursor.
VERSION 2.0.1 (RELEASE 13) DECEMBER 25,2018
- Selecting File | New or Tools | Options... menu items clears the input buffer.
- Selecting File | Load... or File | Save... menu items shows the file that is loaded or saved.
- Updated help documentation.
- Horizontal and vertical scroll bar limits corrected when visible if display parameters are changed.
VERSION 2.0 (RELEASE 12) DECEMBER 14,2018
- NBASIC Version 2.0 Official Release!
- We are releasing the complete standard 2.0 version to the NBASIC community. There will no longer be a cost to NBASIC and the shareware versions will no longer be available. We hope you enjoy using NBASIC as much as we enjoyed developing it.
- Complete help documentation for all new 2.0 features which is included in the install package as well as a separate download.
- All of the bug reports from the ALPHA release have been resolved.
- New downloads including Version 2.x statement and function references.
- PEEKs, POKEs, EXECs and now USRs updated.
- Additional updates throughout the website.
VERSION 2.0 (ALPHA) OCTOBER 22,2018
Everything!
We are celebrating the 15th anniversary of the initial release of NBASIC in a big way!
NBASIC 2.0 (Release 12) is finally here and has been rewritten from the ground up. Many improvements have been made and new features added including a new compiler, interpreter and runtime architecture, a new user interface, screen input/output system and graphics manager, a new memory management system, new file and printer interfaces, a new help system (HTML Help), and a new installer. Performance has also been greatly increased. Backwards compatibility with the 1.x series was a goal and only minor breaking changes are present.
NBASIC 2.x can load any program created with NBASIC 1.x. ASCII programs are always compiled when loaded and any syntax errors can be shown and corrected. Binary programs from 1.x versions are recompiled into the new format in version 2.x. NBASIC 1.x will also recompile ASCII and binary programs from version 2.x and generate syntax errors for newer 2.x language features and statements. All versions of NBASIC can load and save programs usable by any other version. Data files created by NBASIC programs are 100% compatible, regardless if the program is run in NBASIC 1.x or 2.x.
The NBASIC programming environment is unchanged, all editing and control keys work as expected. Managing volumes for files is also unchanged.
New Features
The NBASIC application now has a standard Windows menu system in addition to the context menu that is accessed by right clicking in the NBASIC screen. The application menu has all of the options in the context menu plus some extras. In the File menu, you can load and save a program using the File dialog, erase the current program using New, or exit the application. The Edit menu has options for copying and pasting text using the Windows clipboard and a History dialog that lists commands entered at the NBASIC command prompt. The other menus contain options you are already familiar with from the context menu.
The user interface also includes an improved file load and save dialog and a display options dialog.
One of the biggest changes for the NBASIC language is the addition of numeric data types. Previously, only the double-precision numeric type was available. Now single-precision and integer numeric types are supported. Double-precision numeric variables and literals are denoted by appending a hash (#) sign to the end, single-precision by an exclamation (!) point and integers by a percent (%) sign. String variables continue to use the dollar ($) sign appended to the end and string literals use double quotes. If no data type is specified in the name of a variable or numeric literal it is treated as double-precision. Automatic conversion is done between all numeric data types as long as the range of the value is within the range of the variable being assigned to. Conversion of double-precision to single-precision or integer data types will result in the loss of precision as well as conversion from single-precision to an integer. All numeric data types are automatically converted to the required type during expression evaluation, statement and function parameter passing. An overflow error will result if the value cannot be converted.
Many new numeric functions have been added to support the new numeric data types (ABS%(-2%)).
ABS#, ABS!, ABS%
CDBL#, CSNG!, CINT%
CHOOSE#, CHOOSE!, CHOOSE%
COPYSIGN#, COPYSIGN!, COPYSIGN%
CVD#, CVS!, CVI%, MKD$, MKS$, MKI$
IIF#, IIF!, IIF%
MAX#, MAX!, MAX%, MIN#, MIN!, MIN%
MAXDBL#, MINDBL#, MAXSNG!, MINSNG!, MAXINT%, MININT%
MOD#, MOD!, MOD%
SGN#, SGN!, SGN%
SWITCH#, SWITCH!, SWITCH%
VAL#, VAL!, VAL%
Existing functions that return an integer value (true/false, file number, string index, error number, etc.) may include the % data type at the end of the function name to prevent conversion of the return value to double-precision (INSTR%("ABC", "B")).
Functions that accept a file number as a parameter allow an optional # in front of the value similar to input/output statements (EOF(#1)).
The ATTACH and DETACH statements accept the keyword PRINTER in place of #-2.
The ATTRIB statement now allows the files parameter to be optional which is equivalent to "*.*".
The CLS statement now allows an optional background color to be specified as a parameter (CLS(5)).
The DEF FN statement has been extended to support the new data types just like variables.
The DIR statement now has flags to control how files are displayed (DIR [files][,{O | P | W}...]). DIR,O can be used to order the files in the directory listing. DIR,W can be used to list files using a wide format (no details). DIR,P can be used to pause the listing after each page. More than one flag can be included (DIR "*.BAS",OW).
The FOR statement now allows multiple loop variables like the NEXT statement (FOR I=1 TO 10,J=1 TO 5:NEXT J,I).
The FORMAT statement has been extended to format REM statements (FORMAT {REM | '}).
The GO IF statement has an optional else target (GO IF A>0,100,200).
The GOTO and GOSUB statements now support computed targets (GOTO (A*10)). The expression must be enclosed in parentheses.
The LOCK and UNLOCK statements now allow #0 as an optional parameter.
The LSET and RSET statements now allow multiple file buffer assignments (LSET A$=MKN$(R),B$=ACC$).
The FILE$ function now allows the file parameter to be optional which is useful when getting subsequent files (FILE$(,1)).
A new CHKVER statement that reports the minimum version of NBASIC required for a program to run.
A new REDO statement that recalls the previous command for editing.
New SORT and RSORT statements to sort arrays ([R]SORT array[,[start][,end]]).
A new set of graphics commands are available. In NBASIC 1.x, you could use only one (1) graphics buffer which is created by the GRAPH ON statement. In NBASIC 2.x you can create up to four (4) graphics buffers. To create graphics buffers and start graphics mode use the PCLEAR statement (PCLEAR buffers). PCLEAR 1 is equivalent to GRAPH ON. To end graphics mode and switch back to text mode use PCLEAR 0, which is equivalent to GRAPH OFF. The first buffer (1) is automatically set to the active and display buffer. All graphics commands send output to the active graphics buffer. If this is also the display buffer, the results are shown on the screen. To set a different active buffer use the PSCREEN statement (PSCREEN active[,display]). You can show one buffer while drawing to another and switch them using the PSCREEN statement. Use the PCOPY statement (PCOPY buffer1 TO buffer2) to copy one graphics buffer to another. Use the PFLIP statement to switch the active and display buffers.
New print separators for the PRINT statement.
New formatting characters for strings in the PRINT USING statement and USING$ function.
New PEEKs, POKEs, EXECs and USRs.
Line drawing characters (extended characters).
Breaking Changes
The ON ERROR statement is now only a single event. If an error handler is set using the ON ERROR statement, when an error occurs in the program, control is transferred to the handling routine and error trapping is turned off. This means that if an error occurs in the error handling routine, the program will stop and report the error. The error handling routine will not be called again. When the error handling routine returns to the main program using the RESUME statement, error handling is restored and any succeeding error will cause the error handling routine to be called. Perform minimal error handling to avoid errors that may stop the program.
The ON BREAK and ON TIMER statements now use GOSUB/RETURN internally instead of GOTO/RESUME. Change any ON BREAK GOTO or ON TIMER GOTO statement to an ON BREAK GOSUB and ON TIMER GOSUB statement respectively. Also, in the handling routine for each event, change the RESUME statement to a RETURN statement. You will also need to use the BREAK ON or TIMER ON statements after the event handling routine is setup in the ON BREAK or ON TIMER statements to enable the event trapping. In the handling routine, the event trapping is automatically suspended at the start of the routine and automatically enabled when the handling routine returns to the main program using the RETURN statement. You can also suspend event trapping in the main program by using the BREAK ON/STOP or TIMER ON/STOP statements. When event trapping is suspended, if the event occurs it is remembered and when event trapping is turned on the event is immediately handled. To disable event trapping and have NBASIC not remember the event use the BREAK OFF or TIMER OFF statements.
The BREAK mode peek (5794) has changed as well. If a BREAK key event trap is set using the ON BREAK statement, the return value will be 128 if event trapping is on, 129 if off and 143 if suspended. Otherwise the return value is 255 if BREAK key trapping is on and 0 if off.
The REOPEN statement alternate syntax has changed from REOPEN mode,#file to REOPEN #file,mode
The TIMER control peek/poke (51520) has changed in a similar manner. If a TIMER event trap is set using the ON TIMER statement, the return value will be 128 if event trapping is on, 129 if off and 143 if suspended. Otherwise the return value is 0. These values can be poked to enable, disable or suspend TIMER event trapping.
The GET and PUT graphics statements now require a two (2) dimensional array to store/display graphics screen images. The array will need to be dimensioned to the same dimensions of the image being captured instead of a one (1) dimensional array. This is easier to calculate when using images.
The POINT function now returns the color of the character at the specified screen location instead of a pixel on the graphics screen. Use the PPOINT function to get the color of a pixel.
If a parameter error occurs in a statement, the error code is set to ?Function call (18) instead of ?Command (6). If the error code is checked in an error handling routine for command errors, check for function call errors instead.
Minor changes to the operator precedence rules have been made. The NOT logical operator now has the same precedence as the negate (-) operator. The integer division (\), integer quotient (DIV) and the modulus (MOD) operators now have the same precedence as multiplication and division. The equal (=) and not equal (<>) comparison operators now have lower precedence then the other comparison operators. The logical operators now all have independent precedence in the following decreasing order: AND, XOR, OR, EQV and IMP.
New error codes have been added (60-70). The new error codes are file already exists (60), invalid line number (61), maximum open files exceeded (62), printer not found (63), too many arrays (64), too many EVALs (65), too many DEF FNs (66), too many GOSUBs (67), too many lines (68), too many variables (69) and undefined (70).
Escape sequences are not implemented in this release.
The AUTO statement has changed. Previously, automatic line numbering in the editor could be controlled with AUTO ON/OFF. Now, AUTO (AUTO [start[,increment]]) is a utility and not part of the editor. AUTO will allow you to enter a series of program lines without having to enter the line numbers. Each new line will have an automatically generated line number. To finish entering lines, use the BREAK key on a blank line.
The CHKIO, SCREEN BACKUP, SCREEN RESTORE and SELECT statements are not implemented in this release.
The SCREEN and SELECT functions are not implemented in this release.
Character sets are not supported in this release.
PEEK(19920) is not implemented in this release.
POKE 17984,n, POKE 19920,n, POKE 29538,n, POKE 46966,n and POKE 59325,n are not implemented in this release.
Deprecated Statements
The ABORT statement is deprecated and has been changed to the CANCEL statement. The ABORT statement will be removed in a future release.
The GOTO TIMER statement is deprecated and has been changed to the GOSUB TIMER statement. The GOTO TIMER statement will be removed in a future release.
The SWAP statement is deprecated and has been changed to the EXC statement. The SWAP statement will be removed in a future release.
Coming Soon
NBASIC Version 2.0 official release in shareware and standard editions.
Updates to the help documentation.
The new NBASIC 2.x application design will allow for future growth and expansion and will continue to be actively developed. Please join us in welcoming the long awaited version 2! Thank you for your continued support.
We are celebrating the 15th anniversary of the initial release of NBASIC in a big way!
NBASIC 2.0 (Release 12) is finally here and has been rewritten from the ground up. Many improvements have been made and new features added including a new compiler, interpreter and runtime architecture, a new user interface, screen input/output system and graphics manager, a new memory management system, new file and printer interfaces, a new help system (HTML Help), and a new installer. Performance has also been greatly increased. Backwards compatibility with the 1.x series was a goal and only minor breaking changes are present.
NBASIC 2.x can load any program created with NBASIC 1.x. ASCII programs are always compiled when loaded and any syntax errors can be shown and corrected. Binary programs from 1.x versions are recompiled into the new format in version 2.x. NBASIC 1.x will also recompile ASCII and binary programs from version 2.x and generate syntax errors for newer 2.x language features and statements. All versions of NBASIC can load and save programs usable by any other version. Data files created by NBASIC programs are 100% compatible, regardless if the program is run in NBASIC 1.x or 2.x.
The NBASIC programming environment is unchanged, all editing and control keys work as expected. Managing volumes for files is also unchanged.
New Features
The NBASIC application now has a standard Windows menu system in addition to the context menu that is accessed by right clicking in the NBASIC screen. The application menu has all of the options in the context menu plus some extras. In the File menu, you can load and save a program using the File dialog, erase the current program using New, or exit the application. The Edit menu has options for copying and pasting text using the Windows clipboard and a History dialog that lists commands entered at the NBASIC command prompt. The other menus contain options you are already familiar with from the context menu.
The user interface also includes an improved file load and save dialog and a display options dialog.
One of the biggest changes for the NBASIC language is the addition of numeric data types. Previously, only the double-precision numeric type was available. Now single-precision and integer numeric types are supported. Double-precision numeric variables and literals are denoted by appending a hash (#) sign to the end, single-precision by an exclamation (!) point and integers by a percent (%) sign. String variables continue to use the dollar ($) sign appended to the end and string literals use double quotes. If no data type is specified in the name of a variable or numeric literal it is treated as double-precision. Automatic conversion is done between all numeric data types as long as the range of the value is within the range of the variable being assigned to. Conversion of double-precision to single-precision or integer data types will result in the loss of precision as well as conversion from single-precision to an integer. All numeric data types are automatically converted to the required type during expression evaluation, statement and function parameter passing. An overflow error will result if the value cannot be converted.
Many new numeric functions have been added to support the new numeric data types (ABS%(-2%)).
ABS#, ABS!, ABS%
CDBL#, CSNG!, CINT%
CHOOSE#, CHOOSE!, CHOOSE%
COPYSIGN#, COPYSIGN!, COPYSIGN%
CVD#, CVS!, CVI%, MKD$, MKS$, MKI$
IIF#, IIF!, IIF%
MAX#, MAX!, MAX%, MIN#, MIN!, MIN%
MAXDBL#, MINDBL#, MAXSNG!, MINSNG!, MAXINT%, MININT%
MOD#, MOD!, MOD%
SGN#, SGN!, SGN%
SWITCH#, SWITCH!, SWITCH%
VAL#, VAL!, VAL%
Existing functions that return an integer value (true/false, file number, string index, error number, etc.) may include the % data type at the end of the function name to prevent conversion of the return value to double-precision (INSTR%("ABC", "B")).
Functions that accept a file number as a parameter allow an optional # in front of the value similar to input/output statements (EOF(#1)).
The ATTACH and DETACH statements accept the keyword PRINTER in place of #-2.
The ATTRIB statement now allows the files parameter to be optional which is equivalent to "*.*".
The CLS statement now allows an optional background color to be specified as a parameter (CLS(5)).
The DEF FN statement has been extended to support the new data types just like variables.
The DIR statement now has flags to control how files are displayed (DIR [files][,{O | P | W}...]). DIR,O can be used to order the files in the directory listing. DIR,W can be used to list files using a wide format (no details). DIR,P can be used to pause the listing after each page. More than one flag can be included (DIR "*.BAS",OW).
The FOR statement now allows multiple loop variables like the NEXT statement (FOR I=1 TO 10,J=1 TO 5:NEXT J,I).
The FORMAT statement has been extended to format REM statements (FORMAT {REM | '}).
The GO IF statement has an optional else target (GO IF A>0,100,200).
The GOTO and GOSUB statements now support computed targets (GOTO (A*10)). The expression must be enclosed in parentheses.
The LOCK and UNLOCK statements now allow #0 as an optional parameter.
The LSET and RSET statements now allow multiple file buffer assignments (LSET A$=MKN$(R),B$=ACC$).
The FILE$ function now allows the file parameter to be optional which is useful when getting subsequent files (FILE$(,1)).
A new CHKVER statement that reports the minimum version of NBASIC required for a program to run.
A new REDO statement that recalls the previous command for editing.
New SORT and RSORT statements to sort arrays ([R]SORT array[,[start][,end]]).
A new set of graphics commands are available. In NBASIC 1.x, you could use only one (1) graphics buffer which is created by the GRAPH ON statement. In NBASIC 2.x you can create up to four (4) graphics buffers. To create graphics buffers and start graphics mode use the PCLEAR statement (PCLEAR buffers). PCLEAR 1 is equivalent to GRAPH ON. To end graphics mode and switch back to text mode use PCLEAR 0, which is equivalent to GRAPH OFF. The first buffer (1) is automatically set to the active and display buffer. All graphics commands send output to the active graphics buffer. If this is also the display buffer, the results are shown on the screen. To set a different active buffer use the PSCREEN statement (PSCREEN active[,display]). You can show one buffer while drawing to another and switch them using the PSCREEN statement. Use the PCOPY statement (PCOPY buffer1 TO buffer2) to copy one graphics buffer to another. Use the PFLIP statement to switch the active and display buffers.
New print separators for the PRINT statement.
New formatting characters for strings in the PRINT USING statement and USING$ function.
New PEEKs, POKEs, EXECs and USRs.
Line drawing characters (extended characters).
Breaking Changes
The ON ERROR statement is now only a single event. If an error handler is set using the ON ERROR statement, when an error occurs in the program, control is transferred to the handling routine and error trapping is turned off. This means that if an error occurs in the error handling routine, the program will stop and report the error. The error handling routine will not be called again. When the error handling routine returns to the main program using the RESUME statement, error handling is restored and any succeeding error will cause the error handling routine to be called. Perform minimal error handling to avoid errors that may stop the program.
The ON BREAK and ON TIMER statements now use GOSUB/RETURN internally instead of GOTO/RESUME. Change any ON BREAK GOTO or ON TIMER GOTO statement to an ON BREAK GOSUB and ON TIMER GOSUB statement respectively. Also, in the handling routine for each event, change the RESUME statement to a RETURN statement. You will also need to use the BREAK ON or TIMER ON statements after the event handling routine is setup in the ON BREAK or ON TIMER statements to enable the event trapping. In the handling routine, the event trapping is automatically suspended at the start of the routine and automatically enabled when the handling routine returns to the main program using the RETURN statement. You can also suspend event trapping in the main program by using the BREAK ON/STOP or TIMER ON/STOP statements. When event trapping is suspended, if the event occurs it is remembered and when event trapping is turned on the event is immediately handled. To disable event trapping and have NBASIC not remember the event use the BREAK OFF or TIMER OFF statements.
The BREAK mode peek (5794) has changed as well. If a BREAK key event trap is set using the ON BREAK statement, the return value will be 128 if event trapping is on, 129 if off and 143 if suspended. Otherwise the return value is 255 if BREAK key trapping is on and 0 if off.
The REOPEN statement alternate syntax has changed from REOPEN mode,#file to REOPEN #file,mode
The TIMER control peek/poke (51520) has changed in a similar manner. If a TIMER event trap is set using the ON TIMER statement, the return value will be 128 if event trapping is on, 129 if off and 143 if suspended. Otherwise the return value is 0. These values can be poked to enable, disable or suspend TIMER event trapping.
The GET and PUT graphics statements now require a two (2) dimensional array to store/display graphics screen images. The array will need to be dimensioned to the same dimensions of the image being captured instead of a one (1) dimensional array. This is easier to calculate when using images.
The POINT function now returns the color of the character at the specified screen location instead of a pixel on the graphics screen. Use the PPOINT function to get the color of a pixel.
If a parameter error occurs in a statement, the error code is set to ?Function call (18) instead of ?Command (6). If the error code is checked in an error handling routine for command errors, check for function call errors instead.
Minor changes to the operator precedence rules have been made. The NOT logical operator now has the same precedence as the negate (-) operator. The integer division (\), integer quotient (DIV) and the modulus (MOD) operators now have the same precedence as multiplication and division. The equal (=) and not equal (<>) comparison operators now have lower precedence then the other comparison operators. The logical operators now all have independent precedence in the following decreasing order: AND, XOR, OR, EQV and IMP.
New error codes have been added (60-70). The new error codes are file already exists (60), invalid line number (61), maximum open files exceeded (62), printer not found (63), too many arrays (64), too many EVALs (65), too many DEF FNs (66), too many GOSUBs (67), too many lines (68), too many variables (69) and undefined (70).
Escape sequences are not implemented in this release.
The AUTO statement has changed. Previously, automatic line numbering in the editor could be controlled with AUTO ON/OFF. Now, AUTO (AUTO [start[,increment]]) is a utility and not part of the editor. AUTO will allow you to enter a series of program lines without having to enter the line numbers. Each new line will have an automatically generated line number. To finish entering lines, use the BREAK key on a blank line.
The CHKIO, SCREEN BACKUP, SCREEN RESTORE and SELECT statements are not implemented in this release.
The SCREEN and SELECT functions are not implemented in this release.
Character sets are not supported in this release.
PEEK(19920) is not implemented in this release.
POKE 17984,n, POKE 19920,n, POKE 29538,n, POKE 46966,n and POKE 59325,n are not implemented in this release.
Deprecated Statements
The ABORT statement is deprecated and has been changed to the CANCEL statement. The ABORT statement will be removed in a future release.
The GOTO TIMER statement is deprecated and has been changed to the GOSUB TIMER statement. The GOTO TIMER statement will be removed in a future release.
The SWAP statement is deprecated and has been changed to the EXC statement. The SWAP statement will be removed in a future release.
Coming Soon
NBASIC Version 2.0 official release in shareware and standard editions.
Updates to the help documentation.
The new NBASIC 2.x application design will allow for future growth and expansion and will continue to be actively developed. Please join us in welcoming the long awaited version 2! Thank you for your continued support.
VERSION 1.6 (RELEASE 11) February 10,2018
New Statements
- CENTER statement: CENTER
- CLIPBOARD$ statement: CLIPBOARD$="string"
- FLUSH statement: FLUSH [#file[,#file]...]
- MAXFILES statement: MAXFILES n
- PROTECT statement: PROTECT {ON | OFF}
- UNDEF FN statement: UNDEF FNname
- UNDEF USR statement: UNDEF USR[n]
- AMPM function: AMPM(time)
- CHARAT$ function: CHARAT$(string,index)
- CLIPBOARD$ function: CLIPBOARD$
- COALESCE function: COALESCE(number[,number]...)
- COALESCE$ function: COALESCE$(string[,string]...)
- CONTAINS function: CONTAINS(string1,string2)
- DEFVOL$ function: DEFVOL$
- EVAL$ function: EVAL$(string)
- FILEDATE function: FILEDATE(file[,dateoption])
- FILESIZE function: FILESIZE(file)
- GETVOL$ function: GETVOL$(filename)
- GETNAME$ function: GETNAME$(filename)
- GETEXT$ function: GETEXT$(filename)
- ISNUM function: ISNUM(string)
- RND$ function: RND$(string)
- UNQUOTE$ function: UNQUOTE$(string)
- XOR function: XOR(number, number)
- Exponentiation (**)
- Year (High) 29620
- Year (Low) 29621
- Month 29622
- Day 29623
- Hour 29624
- Minute 29625
- Second 29626
- Day of week 29627
- AM/PM 29628
- CLG (PCLS)
- EXT (LOF)
- GCOL (PCOLOR)
- HPOS (COLUMN)
- ON ERROR OFF (ON ERROR GOTO 0)
- REPORT$ (ERR$)
- VPOS (ROW)
- Fixed EVAL buffer overrun bug
- Corrected anti-aliased fonts on Windows Vista
VERSION 1.5.2 (RELEASE 10) November 7,2007
New Statements
- ARC statement.
- DLOAD and DSAVE statements.
- FIND statement.
- BEGINSWITH and ENDSWITH functions.
- BREAK function.
- CDN and CHN functions.
- CHOOSE and CHOOSE$ functions.
- COMP and COMPI functions.
- EMPTY function.
- ENCLOSE$ function.
- EVAL function.
- EXTRACT$ and REMAIN$ functions.
- FILEINFO$ and VOLINFO$ functions.
- FINDONEOF function.
- FLOOR function.
- HYPOT function.
- IIF and IIF$ functions.
- MATCH function.
- MOD function.
- PCOL and PROW functions.
- SPAN and CSPAN functions.
- SQUEEZE$ function.
- SWITCH and SWITCH$ functions.
- EDIT statement.
- RENAME statement.
- UNLOAD statement.
- CHR$ function.
- LTRIM$, RTRIM$ and TRIM$ functions.
- MAX and MIN functions.
- User Manual.
- Reference Guides.
- Peeks and Pokes.
- Fixed a bug to correctly initialize runtime to enable the CREATE statement.
VERSION 1.5.1 (RELEASE 9) FEBRUARY 19,2007
New Statements
- CREATE statement.
- FONT statement.
- FORMAT statement.
- FRAME statement.
- FRE statement.
- LINES statement.
- LOADC and SAVEC statements.
- OLD statement.
- PUSH statement.
- RUNR statement.
- SPLITNAME statement.
- COMPRESS$ function.
- COPYSIGN function.
- DOLLAR$ function.
- DTR function.
- FONT function.
- INYN$ function.
- MAKENAME$ function.
- PROMPT$ function.
- QUOTE$ function.
- RTD function.
- SELECT function.
- SET$ function.
- Fixed a bug to correctly parse filename extensions.
- Fixed a bug to correctly output text in print zones.
- CREATE statement (CR.).
- User Manual.
- Reference Guides.
VERSION 1.5 (RELEASE 8) February 19,2006
New Statements
- APPEND statement.
- ATTACH and DETACH statements.
- NOINVERSE statement.
- NOREVERSE statement.
- RENUMBER statement.
- REVERSE statement.
- UNNUM statement.
- BUFSIZ function.
- VARPTR and VARPTR$ functions.
- APPEND statement.
- ATTRIB statement.
- COPY statement.
- KILL statement.
- MOVE statement.
- RENAME statement.
- APPEND statement (A.).
- ATTRIB statement (AT.).
- BACKUP statement (B.).
- COPY statement (C.).
- HELP statement (H.).
- KILL statement (K.).
- LOAD statement (L.).
- MOVE statement (M.).
- MERGE statement (ME.).
- RENAME statement (R.).
- SAVE statement (S.).
- VOLUME statement (V.).
- HCIRCLE statement.
- HCLS statement.
- HCOLOR statement.
- HDRAW statement.
- HGET and HPUT statements.
- HLINE statement.
- HPAINT statement.
- HSET and HRESET statements.
- HPOINT function.
- ERLIN function.
- ERNO function.
- NBASIC includes Tandy/Radio Shack Color Computer 3 graphics commands that are compatible with Super Extended Color BASIC in syntax only and are provided for ease of porting Color Computer 3 programs to NBASIC. The commands are implemented using the NBASIC graphics system and DO NOT provide hardware compatibility with the Tandy/Radio Shack Color Computer 3.
- CLR statement.
- CMD statement.
- CONCAT statement.
- DISPLAY statement.
- RETURN statement.
- SYSTEM statement.
- SADD function.
- The DRAW statement has been updated with additional commands.
- The LOG statement has been changed to buffer output to the log file.
- The interpreter now recognizes 2 double quotes in a string as a single double quote.
- User Manual.
- Reference Guides.
- PEEKs/POKEs
- Added a PEEK to check if a file is attached to screen output.
- Added a POKE to flush the log file.
- Added a POKE to enable/disable the renumbering of only numbered lines.
- Fixed a bug to correctly get the name of the default printer on startup.
- Fixed a bug in the CHKUL statement to correctly check partially numbered programs.
- Fixed a bug in the DIR statement to correctly use wildcards.
- Fixed a bug in file and log output to write partial buffer if buffer causes file to exceed maximum size.
VERSION 1.4 (RELEASE 7) August 14,2005
New Statements
- ASAVE and BSAVE statements.
- AT statement.
- BKOFF and BKON statements.
- DIRR statement.
- LOCK and UNLOCK statements.
- POP statement.
- QUIT statement.
- SCREEN BACKUP and SCREEN RESTORE statements.
- SELECT statement.
- COLOR function.
- COPYIGHT$ function.
- CSRLIN function.
- LOWER$ and UPPER$ functions.
- LSET$ function and RSET$ functions.
- PPOINT function.
- RCP function.
- SCREEN function.
- SPLITNAME$ function.
- CATALOG statement.
- COLOR statement.
- GR statement.
- HCOLOR statement.
- HGR statement.
- HGR2 statement.
- HLIN and VLIN statements.
- HPLOT statement.
- HTAB and VTAB statements.
- INVERSE statement.
- NORMAL statement.
- NOTRACE statement.
- PLOT statement.
- TEXT statement.
- SCRN function.
- NBASIC includes Apple ][e graphics commands that are compatible with AppleSoft BASIC in syntax only and are provided for ease of porting Apple programs to NBASIC. The commands are implemented using the NBASIC graphics system and DO NOT provide hardware compatibility with the Apple ][e. The AppleSoft commands GR, HGR and HGR2 have the same graphics resolution (as provided by NBASIC) and internally call the NBASIC statement GRAPH ON. The AppleSoft commands HLIN, VLIN, PLOT, HPLOT, COLOR and HCOLOR are available regardless if GR, HGR or HGR2 are used and use the NBASIC graphics extents.
- BYE statement.
- CALL CLEAR, CALL SCREEN and CALL VCHAR statements.
- CON statement.
- CONTINUE statement.
- DELETE statement.
- NUMBER statement.
- RESEQUENCE statement.
- TRACE statement.
- UNBREAK statement.
- UNTRACE statement.
- CHRS$ function.
- SEG$ function.
- The LOG statement has been changed to use "log" as the default extension.
- The LSET and RSET statements have been changed to use string array variables.
- Improved the REMARK statement to detect which case to use when inserting the REM statement.
- Changed the RND function so that RND(1) returns a number between 0 and 1.
- User Manual.
- Reference Guides.
- PEEKs/POKEs
- Fixed a bug in the AUTO ON statement to correctly find the next line number.
- Fixed a bug in the BREAK and NOBREAK statements to correctly use labels.
- Fixed a bug in the CHAIN statement to correctly back up the program and to use labels.
- Fixed a bug in the CHAIN, LOAD and RUN statements to correctly report an error if the program cannot be loaded or run.
- Fixed a bug in the DUMP and LOAD statements to check the log file size.
- Fixed a bug in the LOG statement to write the file buffer up to the maximum file size.
- Fixed a bug in the STEP debugging statement to correctly step over IF/ELSE/END IF statements.
VERSION 1.3 (RELEASE 6) December 23,2004
New Statements
- REMARK and UNREMARK statements.
- SWAP statement.
- TYPE statement.
- Added a POKE to restore a program erased by NEW.
- User Manual.
- Fixed a bug in the LOAD and LOADR statements to confirm load only once.
- Added support for Windows XP control styles.
VERSION 1.2.1 (RELEASE 5) October 30,2004
New Functions
- USING$ function.
- ISNEG and ISPOS functions.
- User Manual.
VERSION 1.2 (RELEASE 4) September 21,2004
New Statements
- LINE EDIT statement.
- OPTION BASE and OPTION EXPLICIT statements.
- PCP and PRINTERS statements.
- KILL # statement.
- PAUSE statement.
- $PRINT and $XREF statements.
- LBOUND, UBOUND, SIZE and MAXSIZE functions.
- CTRL$ and SHIFT$ functions.
- IS0 and ISEMPTY$ functions.
- MAX and MIN functions.
- MAXLEN function.
- The LET statement has been updated to allow multiple variables in assignments and multiple assignments.
- The DEL, LIST, CHKIO, CHKSW, CHKSYN, CHKUL, PROFILE, BREAK and NOBREAK statements have been extended to support multiple line sequences.
- The LOAD and CHAIN statements have been improved when executing in program mode to check if the current program is modified before loading another program.
- Help documentation.
- Always Confirm New option in Editor tab (Options dialog box).
- OEM and international character sets supported.
- Added a PEEK that returns the zone width.
- Fixed a bug in the LOG statement to check the log file size.
- Fixed a bug in the ROUND function to correctly round numbers with fractions ending in 5.
- Fixed a bug in the parser to correctly reset references when a syntax error is found.
- Fixed a bug in the screen and printer drivers to correctly display text with fonts that have variable width characters.
- User Manual
- FAQs
VERSION 1.1 (RELEASE 3) February 19,2004
New Features
- Printing support featuring a classic line printer interface.
- LLIST statement.
- OPEN PRINTER statement.
- CLOSE PRINTER statement.
- LPRINT and LPRINT USING statements.
- PRINTER and PRINTER? statements.
- LPOS function.
- PRINTER$ function.
- APPEND, COPY, and MOVE editing statements
- FILES statement.
- HOME statement.
- NAME statement.
- REOPEN statement.
- REWIND statement.
- TRUNCATE statement.
- UNLOAD statement.
- ACCESS function.
- ATTRIB$ function.
- ESC$ and NUL$ functions.
- FILEMODE, FILEMODE$, and FILENAME$ functions.
- FRE function.
- GETALNUM$, GETALPHA$, GETDIGIT$, and GETYN$ functions.
- MAXNUM and MINNUM functions.
- OPEN function.
- POS function.
- TWOPI function.
- PRINT, PRINT USING, and WRITE statements updated to use printer file number (-2).
- PEEKs/POKEs
- Reference Guides.
- Added a PEEK that returns the number of printer columns.
- Added a PEEK that indicates if a printer is open.
- Added a PEEK that indicates if a printer is available.
- Added a POKE to perform a formfeed or linefeed on the printer.
- Fixed a bug to return to text mode when a program error occurs while in graphics mode.
- Fixed a bug in the LOF function to correctly return the number of records in a file opened for random access.
- Fixed a bug that does not report a log not open error when logging is off.
VERSION 1.0.1 (RELEASE 2) February 11,2004
New PEEKs/POKEs
- Added a PEEK that indicates a program is being run as the startup program specified in the startup options dialog.
- Added a POKE that tells the KILL statement to use the recycle bin.
- Fixed a bug in the parser to correctly parse the COLOR function when used in a PRINT statement.
- Fixed a bug in the EXEC &HDA83 call to correctly change the case of compiled data statements.
VERSION 1.0 (RELEASE 1) October 22,2003
- Initial release.