NS Basic/Palm Enhancements

January 27, 2009

© NS BASIC Corporation. All rights reserved.

This is a release by release listing of all the changes to NS Basic/Palm. To upgrade your copy to the latest version, visit our Upgrade Order Page.


NS Basic/Palm 7

What's new in 7.0.1

  1. IDE: Updated to XP theme.
  2. IDE: Now runs on Vista 64 bit (see notes).
  3. Help: NS Basic Handbook now in pdf form.
  4. Runtime: ScrollBar.Value now works on all devices.
  5. Runtime: Fatal Error on Palm OS 3.1-3.5 fixed.
  6. Runtime: Bitmaps with scripts are now included in Navigation.

What's new in 7.0.0

  1. Help: "NS Basic Programming for Palm OS" by Verive now included.
  2. Help: Language Reference updated.
  3. IDE: Bitmaps are now displayed on the design screen.
  4. IDE: Design screen shows colors in current theme
  5. IDE: External operations now time out after 10 seconds.
  6. IDE: File pickers in Properties no longer change default directory
  7. IDE: Fixed 'File Not Found' when saving project to another folder
  8. IDE: Gradient buttons and labels can now be created. (See docs below)
  9. IDE: If Bitmap ID is changed, project is marked as dirty.
  10. IDE: Images on Bitmaps can now be sized to fit. (See docs below)
  11. IDE: Open Image now defaults to Bitmap directory
  12. IDE: Other fonts can now be used on buttons and labels.
  13. IDE: Resource file names now use absolute paths
  14. IDE: Text coloring fixed for some commands
  15. IDE: Theme Editor added.
  16. IDE: Toolbox: Grid and Slider now show tool tips
  17. IDE: New constants: nsbIrCOMM, nsbRFCOMM and nsbBTCM.
  18. IDE: NS Basic/Symbian projects can be opened by NS Basic/Palm.
  19. IDE: Ctrl-P shortcut to print added.
  20. Library: Dictionary library added. (See Notes)
  21. Runtime: Grid.TextMatrix fixed in ARM Runtime.
  22. Runtime: SetTheme() function added.
  23. Runtime: Theme support added.
  24. Runtime: Resources of type DBIM are automatically saved as Databases.
  25. Runtime: Entire region of a bitmap is now clickable.
  26. Runtime: Topmost object gets the click, instead of bottom most.
  27. Runtime: Automatically starts in 16 bit mode in ARM Runtime.
  28. Samples: BetterBitmap added.
  29. Samples: GradientButtons added.
  30. Samples: Derby sample updated.
  31. Samples: Dictionary sample added.
  32. Samples: StockQuote added.
  33. Samples: Names of Shared Samples improved.
  34. Simulator: "Storage Snapshot not found" message fixed.
  35. TechNote 42 added: Using NSDictLib.
  36. Tutorial 08 added: Using TCPIPLib to get a Stock Quote.
  37. Tutorial 09 added: Bitmaps, Gradient Buttons and Pictures.
Documentation Notes in 7.0.0
  1. Gradient Buttons and Labels: Now you can create objects that have a background that gradually goes from one color at the top to another at the bottom. The Bitmap object has been enhanced with several new properties that can be set at design time. The image of what it will look like is displayed in the Design Screen. At compile time, the image is transferred into a bitmap resource in the project, and saved as a file in \NSBasic\bitmaps\.

    The new properties are:
    Gradient Color1: The top (or left) color.
    Gradient Color2: The bottom (or right) color
    Gradient Style: 1 for top to bottom, 0 for left to right.

    You can use a bitmap instead of a label of the same size. Since Bitmap objects can have a script (just like a Button object), BitMap object buttons work the same way as Button Object buttons - but there are more options on appearance.

    Gradients work best on devices which support 16 bit color, with screens at least 320x320 in size. For devices which are 160x160, you will need to click on the border of the Design Screen so it switches to its smaller size, so the bitmaps can be created properly.

  2. Using other fonts: Bitmaps can now have text on them, using any font that is on your desktop system. The new properties are:
    Caption: The text to appear
    Alignment: 0 for left, 1 for right, 2 for centered.
    Appearance: 0 for flat, 1 for 3D
    Border Style: 0 for none, 1 for 1 border around the image.
    Caption Color: The color of the text.
    Font Name: The name of the font. Can use any font installed on your system.
    FontSize: The size of the letters.
    FontBold: Are the characters in boldface?
    FontItalic: Are the characters italicized?
    FontStrikeThru: Is there a line through the characters?
    FontUnderline: Is there a line under the characters?

    Note that captions and gradients only apply to Bitmap objects. Label and CommandButton objects will continue to use the installed fonts and cannot have gradients.

  3. Sizing images on Bitmaps: You can now specify the image to appear on a bitmap as well as its size. The new properties are:
    Picture: The pathname to the image. It can be bmp, gif, jpg and other format.
    Stretch: If False, the image will be the size of the orginal image, aligned at the top left. If the image if larger than the bitmap object, it will be clipped. If Stretch is True, the image will be scaled to fit the current size of the bitmap object.

    Keep in mind that the maximum size of a bitmap is 65,512 bytes. The formula for calculating the size of a bitmap is (width * height) * 8.

    Projects with existing bitmap objects will continue to work as before.

  4. Themes: This new feature allows you to enhance the appearance of your application by adding color to it. In Project Properties, you define a Theme. A theme defines colors for 22 different features of a form. There are 30 themes included with the release.

    To edit a theme or to create a new one, start the IDE and open a project. Select the Theme Editor under the Tools menu. It will automatically open the theme for the current form for editing, but allows you to also modify other themes or create new ones.

    Projects are automatically given the "Classic" theme. There is no restriction on changing the theme of an existing program.

    The theme you specify in Project Properties will be automatically be added as a resource to your project. If you use additional themes, you have to add them as resources. Themes are kept in c:\NSBasic\Themes. You can put additional themes you create in that folder or elsewhere. If you update a theme on your desktop, it will not change on the device until you manually delete the old theme on the device.

  5. Dictionary Object: The new object lets you set up a list of values you can quickly lookup and change during runtime. See Tech Note 42 and the new NSDictLib sample.

NS Basic/Palm 6

Enhancements and Fixes in 6.1.0

  1. Support added for AlphaSmart Dana (See below)
  2. PDB Creator Lite upgraded to PDB Converter Pro (See below)
  3. Recent.Dat is no longer overwritten on an upgrade.
  4. Japanese Language Reference converted for Vista
  5. English Language Reference changed to correct version.
  6. Version number shows correctly on NSBRuntimeARM68k
  7. TreoLib is now Version 2 (no changes to actual shared library)
Documentation Notes in 6.1.0
  1. AlphaSmart Dana: The Dana is Palm OS device with a 560x160 screen and a full keyboard. NS Basic/Palm now lets you use the full screen size. To enable it, go into Options on the Tools menu of the IDE. In the Compile/Download tab, turn on "Set WideScreen for AlphaSmart Dana". The IDE will then display the design window as 560 pixels wide and the app will use the full screen width when running.
  2. PDB Creator Pro: This utility allows you to create and manipulate Palm OS databases on the desktop. It has the following features:
    • Up to 32K records, 255 fields per record
    • Numerous data types supported, including variable and fixed-length strings, long and short integers, single and double-precision floating point, byte, and NSBasic date and time
    • CSV, tab-delimited text, text with user-defined delimiters, HanDBase (up to version 2.75), and Excel, HTML table and web-page (for output)
    • Multi-level sorting
    • Interactive (direct data entry and manipulation)
    • Byte-level editor (directly edit PDB header and record data)
    More info is available at

Enhancements and Fixes in 6.0.3

  1. A new suite of Tutorials has been added to the Help menu.
  2. IDE: Project files are closed properly after being read in.
  3. IDE: Error 53 on some language Help files fixed.
  4. Help: German Language reference converted from .hlp to .chm for Vista
  5. ARM Native: Problem with Grid.TopRow fixed,
  6. ARM Native: Problem with database fixed.
  7. ARM Native: Problem with Grid fixed.

Enhancements and Fixes in 6.0.2

  1. Compile: Starts in correct folder so relative paths resolve correctly. (Fixes possible Error 91)
  2. Debug: If a breakpoint has opened a code window, it cannot be opened again.
  3. Debug: If a code window for an object is already open, a breakpoint will not open it again.
  4. IDE: Arrows on empty menu no longer get error.
  5. IDE: Module names are properly assigned.
  6. ScreenLibTest sample updated.
  7. DocReader sample updated.
  8. IDE: Error 91 on Slider paste fixed.

Enhancements and Fixes in 6.0.1

  1. IDE: Editing of Resource Path fixed.
  2. IDE: A maximum of 18 forms can have navigation. Additional forms will have navigation turned off.
  3. Runtime: Field events are now executed when navigating using 5-way control.
  4. SymbolLib.inf: formatting problem fixed.

Enhancements and Fixes in 6.0.0

  1. IDE: Navigation capabilities added for Treo and other Palm Inc devices. See notes below.
  2. IDE: Compile times are about 40% faster.
  3. IDE: Support for Vista added
  4. IDE: English help now in chm format.
  5. IDE: Modal forms with Tips now supported. See notes below.
  6. IDE: Pathnames of modules, resources and bitmaps that are on the same drive as the projects are now relative, making it easier to move them to a different folder.
  7. IDE: Resource numbers greater than 9999 are no longer created.
  8. IDE: Modules no longer increment their resource numbers when reopened.
  9. IDE: Form name trimmed of leading and following spaces.
  10. IDE: No longer uses Scrrun.dll
  11. IDE: Files that are not .prj cannot be opened.
  12. IDE: A couple of dialog boxes that did not support Japanese have been fixed.
  13. TreoLib: New functions added: GetLibRefNum, GetRingProfile, GetRoamMode, GetRoamWarnings, PhonePower, SetRingProfile, SetRoamMode and SetRoamWarnings. See Tech Note 30.
  14. Support added for PDB Creator Pro - Create, view and edit Palm databases on the desktop. See below.
  15. Compiler: Scrollbar.Current (obsolete from of .Value) compiles properly.
  16. Compiler: Reports total compile time.
  17. Runtime: PopUp time All Day values fixed for European time.
  18. Runtime: Bug in IR communications fixed.
  19. New Sample: Navigation
  20. New Sample: ModalForms
  21. Updates Sample: TreoTest includes new functions.
  22. Help files updated for new release.
  23. Tech Notes updated for new release.
  24. Handbook updated for new release.
Documentation Notes in 6.0.0

1. Navigation

Starting with the Treo, Palm added Navigation features to many of its devices. Using the 5 way control, a user can tab from field to field on a form. NS Basic/Palm allows you to control how this tabbing works.

Navigation is controlled by properties of the form and of objects that support navigation. Don't worry about running programs on devices without navigation: the navigation info is simply ignored.

If you do not set up any Navigation information, it will still work. The default tab order is used, where the left and right five way buttons move through the objects in the order that they are created. You can change this order by right clicking on the form name in the Project Explorer.

Interaction Mode vs. Navigation Mode

More complex objects need to "take over" the scroll keys in order to interact with them. For example, a text field needs to allocate all four scroll keys to move the cursor. Similarly, a pop-up list needs to use up and down to change the selection in the list. This conflicts with the requirement of using the scroll keys to navigate between objects. As a result, these complex objects need to have an interaction mode, where they can take over control of the keys. The opposite of interaction mode is navigation mode, where scroll keys navigate between objects. On a system with one-handed navigation, pressing "center" toggles between interaction mode and navigation mode. Finally, a subset of interaction mode is edit mode, which refers specifically to text fields.

Object Focus Mode vs. Application Focus Mode

Interaction mode and Navigation mode are Palm.com concepts. Access (formerly PalmSource, Inc) has defined application focus mode and object focus mode. Application focus mode refers to applications that do not have keyboard navigation enabled. In this state, up and down act as page up and page down in the traditional method that Palm OS implemented in its original form. Object focus mode refers to the state where individual objects on the screen can receive focus, essentially what "navigation mode" refers to above. Applications may or may not be able to toggle between application focus and object focus modes.

Form Navigation Properties

Object Navigation Properties

Additional Notes on Navigation

Grafitti Shift Indicator and Bitmap cannot be navigated to. Label and Scrollbar are always skipped. If you navigate to slider, the arrows on the five way control the slider and do not tab.

See the NavDemo.prj sample for more information.

5. Modal Forms with Tips

A Modal Form is a sub form that is used for a specific purpose. Modal forms are displayed on top of the current form. Modal forms have a different title bar style than modeless forms, and they have a border. Modal forms should be far less common in your application than modeless forms. Their main use is for setting options, such as application preferences. The title bar cannot be clicked on except on the "i" icon, which bring up some tips.

Modal forms do not have to be full screen - in fact, they should be no taller than necessary. Since they have a border, they look best if they are positioned 4 pixels from the left with a width of 154. They are usually positioned at the bottom of a screen. There is usually a Done button to close the form.

To make a form modal, set its Modal property to True. Enter whatever tips you want to show in the Tips property. The Tips property can be wider than the property box allows, but cannot contain any return characters.

See the ModalForms.prj sample for more.

Read more about modal forms on Palmsource's website here: http://www.palmos.com/dev/support/docs/ui/UI_Forms.html

14. PDB Creator Pro

NS Basic/Palm 6.0 includes a free license to PDB Creator Pro. PDB Creator Pro is a powerful database creation and editing solution for those who simply need to create, edit, or debug Palm OS databases on the Windows desktop.

PDB Creator Pro features:

  1. Up to 32K records per database
  2. Up to 255 fields per record
  3. Numerous data types supported, including variable and fixed-length strings, long and short integers, single and double-precision floating point, byte, and NSBasic date and time
  4. Multi-level sorting
You can download PDB Creator Pro for NS Basic/Palm here.

NS Basic/Palm 5

Enhancements and Fixes in 5.0.5

  1. You can now use the & operator to concatenate two strings.
  2. DevInfoLib and DocReaderLib files now installed
  3. Codemax is now Version
  4. Problem with large numbers fixed (1E53, 1E54)
  5. Warning from Simulator about some scrollbar functions fixed
  6. Scroller.MaxValue now uses proper glue function.
  7. Maxiumum number of string variables in a single statement increased to 100.
  8. IDE: Added confirmation dialog to form deletion
  9. IDE: Brace matching (and other code window options) are now saved properly
  10. IDE: Code Windows keyboard command prefs are now saved properly
  11. IDE: ListBox.Remove now appears on code completion.
  12. IDE: Grid.BindToDatabase now appears on code completion.
  13. IDE: LET is now colored properly
  14. IDE: Moving the Explorer too far left no longer gets an error
  15. IDE: Moving the top of Properties Windows too far down no longer creates problems
  16. IDE: ScrollBar.Current works the same as ScrollBar.Value
  17. TreoTest sample updated: Use the SendEMail function to send email.

Enhancements and Fixes in 5.0.4

  1. Code Window: Right click to set Properties added
  2. Tech Notes updated
  3. Slider hints changed to Min and Max
  4. Problem with ARM Native and PinMgr fixed.
  5. Spanish String Table updated.
  6. CodeMax control updated to
  7. Variables beginning with "Sub" or "Func" no longer cause problems with selection
  8. Code completion for object functions with arguments fixed.

Enhancements and Fixes in 5.0.3

  1. Code Window: Show Whitespace added to right click menu
  2. Code Window: Block Comment/UnComment added to right click menu
  3. Code Window: Set Repeat Count added to right click menu
  4. Code Window: Execute Command added to right click menu
  5. Code Window: Properties added to right click menu
  6. Code Window: Ctl F, Ctl H, Ctl G work for Find, Replace and Goto
  7. Error in block Find/Replace fixed.
  8. Replace now changes all occurances
  9. ARM Native: Slider.Value fixed
  10. ARM Native: Scroller.PageSize, Min and Max fixed
  11. ARM Native: Fixes to Grid
  12. Register.bat now works on Windows 98/ME systems
  13. Tracker.prj fixed
  14. HiRes.prj fixed.

Enhancements and Fixes in 5.0.4

  1. Code Window: Right click to set Properties added
  2. Tech Notes updated
  3. Slider hints changed to Min and Max
  4. Problem with ARM Native and PinMgr fixed.
  5. Spanish String Table updated.
  6. CodeMax control updated to
  7. Variables beginning with "Sub" or "Func" no longer cause problems with selection
  8. Code completion for object functions with arguments fixed.

Enhancements and Fixes in 5.0.3

  1. Code Window: Show Whitespace added to right click menu
  2. Code Window: Block Comment/UnComment added to right click menu
  3. Code Window: Set Repeat Count added to right click menu
  4. Code Window: Execute Command added to right click menu
  5. Code Window: Properties added to right click menu
  6. Code Window: Ctl F, Ctl H, Ctl G work for Find, Replace and Goto
  7. Error in block Find/Replace fixed.
  8. Replace now changes all occurances
  9. ARM Native: Slider.Value fixed
  10. ARM Native: Scroller.PageSize, Min and Max fixed
  11. ARM Native: Fixes to Grid
  12. Register.bat now works on Windows 98/ME systems
  13. Tracker.prj fixed
  14. HiRes.prj fixed.

Enhancements and Fixes in 5.0.2

  1. Timer added. See documentation below.
  2. New sample: Timer.prj.
  3. Runtime Error when typing "." after a form name fixed.
  4. Register.bat fixed.
  5. FontMatrix now leaves the default font unchanged (as used in DrawText).
  6. Error 6 in compile fixed.
  7. Error 40020 when starting program twice in Debug mode fixed.
  8. Redo now has keyboard shortcut of Ctrl Y.
  9. Doing a paste to an unselected code window no longer causes an Error 438.
  10. ARM Runtime updated to 5.0.2, solves a bunch of problems. ARM Runtime and normal runtime should be identical now.
  11. CodeMax control, used by code window, is now
Documentation Notes in 5.0.2
  1. The new Timer feature allows you to generate your own events that fire after a set interval. This is useful for situations where you expect a response after a certain interval and you want to take action if you do not get that response. For example, if you are doing communications with another computer and you want to check from time to time if any data has come in.

    To set a timer, do the following statement:

       SysInfoSet("Timer", 3000)   'Set a timer for 3 seconds later. 

    To respond to the Timer event in your program, use something like this in your Events script:

       If getEevent()=nsbTimer then
           MsgBox "Timer Event Received" 'respond to event
           SysInfoSet("Timer", 3000)     'set up another timer
       End If 
    To cancel a timer currently in effect, do SysInfoSet("Timer", 0). If you exit your program, the timer is cancelled. There is no need to do SetEventHandled for this event. See the Timer sample to try this out.

Enhancements and Fixes in 5.0.1

  1. FontMatrix compiles properly
  2. Grid.Value compiles properly
  3. Slider compiles properly
  4. Error in Find/Replace fixed
  5. Multiple messages when searching entire project fixed.
  6. Ctrl S and Ctrl H in search fixed.
  7. Debugger made more robust
  8. End option added to Run menu to end while at a Breakpoint.
  9. If you set Grid.row to -1, it will unselect the grid.
  10. Slider fixed on LifeDrive and E2.
  11. TechNote 14 (SystemLib) updated with LifeDrive, E2 changes

Enhancements and Fixes in 5.0.0

  1. New Runtime Debugger. See Tech Note 35 for instructions.
  2. Code Hints - see args to functions as you type.
  3. Code Completion - see members of objects as you type.
  4. Auto Indent - code automatically indents as you type.
  5. Code drag and drop supported in Code Window.
  6. Automatic brace matching - keep your parenthesis matched!
  7. Horizonal line dividers between subs and funcs.
  8. Left, top, width, height of objects can be changed at runtime.
  9. New Slider control.
  10. Screen Object Sampler updated with Slider, Scrollbar, Shift Indicator.
  11. New Shared Library: DBLib for databases. See Tech Note 36.
  12. New Shared Library: DevInfoLib for device info. See Tech Note 37.
  13. New Shared Library: DocLib. See Tech Note 38.
  14. New Shared Library: DocReaderLib for DOC reading. See Tech Note 39.
  15. New Shared Library: NSBLifeDrive for multimedia. See Tech Note 40.
  16. Samples for Shared Libs put into separate folder.
  17. Language Reference Help file updated.
  18. Shared libs, SysTrap functions now support arrays (and nulls!)
  19. Tech Notes 5 and 6 on Shared Libraries and SysTraps updated.
  20. New Grid.FontMatrix(row,col) function.
  21. New Tech Note 34: Using NS Basic/Desktop to access pdb files.
  22. New Tech Note 35: Using the debugger.
  23. F1 brings up the Language Reference help file.
  24. SerialClose no longer raises an error if serial port not open. Instead, err 777 returned.
  25. Error 770 on SerialSet fixed.
  26. Problem with Grid and deleting database entries fixed.
  27. Refresh of bound grid now shows all data.
  28. MsgBox in after code no longer causes problems in POSE.
  29. ARM Runtime was not going into ARM mode on all devices fixed.
Documentation Notes in 5.0.0

2-6. We've updated to a new version of the control we use for code windows. This gives a quite a few new capabilities. NS Basic/Palm programmers do not need to do anything to take advantage of these: they come automatically. There are actually a ton of new features that are not documented: explore some of the options when you right click in the control to see them all.

8. The Left, Top, Height and Width properties used to be design only. You can now modify them at runtime to move objects on the screen or to resize them.

9. The new Slider control brings up a standard Palm OS horizontal slider. See the Language Reference under the Help menu for complete documentation.

10. Shared Libraries and SysTrap functions now take byte arrays as arguments. This will allow you to get around many of the old restrictions on structures and strings with embedded nulls being passed. Each element of the byte array sends one byte to the function being called. If the array is of type Short, each element sends two bytes to the function.

'Example of array in SysTrapFunction
'Read in the date
Dim dt(7) as Short
Dim s as Integer

s = SysTrapFunc(245, 0)     ' TimGetSeconds
SysTrapSub 252, 2, s, dt    ' TimSecondsToDateTime
MsgBox str(dt(4))
MsgBox str(dt(5))

20. Grid.FontMatrix(row, col) = FontNumber allows you to set the font of any cell in a grid. The values for FontNumber are typically 0 to 7, as shown in section 10.A of the Handbook. If you're using a tall font, you can adjust the row height.

NS Basic/Palm 4

Enhancements and Fixes in 4.4.2

  1. PopUpDate in ARM Runtime fixed
  2. Command toolbar stroke now works with NSB apps
  3. Pendown event after tapping bitmap no longer lost
  4. Grid alignment in ARM Runtime fixed.
  5. SysInfo(5) fixed in ARM Runtime.
  6. Key events fixed in ARM Runtime.
  7. Help now called Language Reference
  8. Grid cut and paste no longer gets error 9.
  9. Technotes updated

Enhancements and Fixes in 4.4.1

  1. Form Update event handling improved to fix odd errors.
  2. Format("nn.n") changed to work like Format("nn.0:).
  3. PlaySound: will no longer error on certain Sony models.
  4. Samples: IRTest updated.
  5. Samples: Controls updated.
  6. Samples: New NSBiQueGPS_Test.
  7. Samples: New NSBPinMgr_Test.
  8. SerialSet("IR",2) enables IR and turns off receiving.

Enhancements and Fixes in 4.4.0

  1. New library: NSBPinMgr allows NSB programs to use the full 320x480 screen. See Tech Note 31.
  2. New library: NSBiQueGPS adds support for Garmin iQue devices. See Tech Note 32.
  3. New GetEventType: nsbFormUpdate. Use this event to redraw your screen when the OS messes it up, like in a PopUpDate call.
  4. New GetEventType: nsbFormClose
  5. New Grid Method: ShowGridLines
  6. New Grid Method: HideGridLines
  7. Grid Sample updated
  8. Bug fixed in ARM Native Grid support on Treo600

Enhancements and Fixes in 4.3.1

  1. To clear the Grid selection, set .row to 0.
  2. All hard key codes are passed through as events now.

Enhancements and Fixes in 4.3.0

  1. NSBTreoLib adds support for Treo devices. See Tech Note 30.
  2. Grid: Numeric columns are now right justified.
  3. Grid: If you hilite a row, it does not always become top row.
  4. Grid: Add method changed to AddRow (Add will still work)
  5. Grid: Controls(x).AddRow now works
  6. Grid: Right and bottom borders now hidden on Hide.
  7. Grid: Clear no longer clears column definitions.
  8. Function arg variables may now refer to other objects.
  9. ARM Runtime: problem with Grid text assignment fixed.
  10. ARM Runtime: problem with dbs>256 records on some devices fixed.

Enhancements and Fixes in 4.2.1

  1. Grid docs are in \program files\nsbasic\palm\Grid.htm.
  2. Help files updated.
  3. ARM Runtime: Accessing Unopened Database problem fixed.
  4. ARM Runtime: STR function problem on large numbers fixed.
  5. ARM Runtime: "Set Selected Row" message at runtime fixed.
  6. ARM Runtime: Grid.clear problem fixed.

Enhancements and Fixes in 4.2.0

  1. Grid control added. Documentation is currently under the Start menu.
  2. New Sample: Grid.prj
  3. Syntax errors are now followed by an error number.
  4. The .text value for the first object on an untitled form now works
  5. In ARM Native, Popup displays the selection properly.
  6. Error on improper closing of shared libs fixed.
  7. Download Runtime on the Run menu now looks at the ARM Native setting.
  8. Error in SysInfo(5) in ARM Native runtime fixed.

Enhancements and Fixes in 4.1.5

  1. New Sample: IRTest
  2. ReRegister now in \Program files\nsbasic to solve some install issues.
  3. Changing a read only .cod module will give a message, not an error.
  4. IDE value of scrollbar set properly.
  5. BitsNBytes.CycleShiftByte fixed.
  6. BitsNBytes.CRC32 on ARM Native fixed.
  7. Negative coordinates on DrawBitmap on ARM Native fixed.
  8. Scrolling on multiline field on ARM Native fixed.
  9. Dirty bit on record now set properly on ARM Native.
  10. DayOfYear in ARM Native fixed.
  11. Bug with NSBjpgView on Zire71 fixed.
  12. Bug with TcpIpLib fixed.
  13. Fatal exception in ARM Native on Zire71 fixed.
  14. Memory leak fixed in ARM Native.
  15. Objects can no longer be moved out of bounds on IDE.
  16. The German on line documentation has been updated.

Enhancements and Fixes in 4.1.4

  1. PlaySound checks if sound feature is present in device
  2. SoundTest sample added
  3. Bug in Signature Capture on some devices fixed
  4. Bug in TestNum fixed
  5. Bug in String Concatenation fixed
  6. Bug that caused weird crashes fixed
  7. More fixes in Find/Replace

Enhancements and Fixes in 4.1.3

  1. New statement: PlaySound resource#, ampScale, flags
  2. Add Resource can add more file types
  3. True and False now colored in Code Window
  4. NSBRuntimeARM68K.prc is now in \nsbasic\Download
  5. CodeMax20.ocx updated
  6. Problem with click on Alert box fixed
  7. Problem with SysInfo(7) in ARM native fixed
  8. Problem with dbCreate fixed in ARM native
  9. Problem with popUp.text "Late Return" fixed in Arm native
  10. Problem with YearMonth in ARM Native fixed
  11. Problem with dbOpen in ARM Native fixed
  12. TcpIpDemo sample added into Samples
  13. TcpIp and DbFunctions samples dropped
  14. SpecEvnt and derby samples updated
  15. Default size of Simulator snapshot reduced to 16 megs

Documentation for 4.1.3

The PlaySound statement allows you to play short pre recorded sounds in your program. It can only be used on Palm OS 5.0 and later. The format of the function is:

PlaySound(resource#, ampScale, flags)
resource# is the resource number in your project. The sound must be in wav format and be less that 64k. Test the sounds on the device you want to use carefully: 16 bit mono, 8khz PCM encoded sound seems to work well. Add sounds to your project by doing "Add Resource", then setting the Type of the resource to 'wave'.
ampScale is the volume. The setting is from 0 to 32767.
flags determine how the sound plays. 0 means do not continue until the sound stops playing; 1 means to keep processing while the sound plays.

Enhancements and Fixes in 4.1.2

  1. Emulink version number changed
  2. Codemax updated
  3. problems with Replace All fixed
  4. Error 384 on minimize fixed
  5. Error 6 when including bitmap>64k fixed.
  6. Memory leak on simple variables fixed
  7. Problem with Instr function fixed in ARM native
  8. Problem with Left function fixed in ARM native
  9. dmOpenDatabase problem in ARM native may be fixed (Bob - please test!)

Enhancements and Fixes in 4.1.1

  1. Errors when downloading to Palm and Simulator fixed
  2. Emulink.ocx is now version 2.0.
  3. Error in Round() fixed in ARM native runtime.
  4. Errors in date functions fixed in ARM native runtime.
  5. Close method called with Shared Library is closed.
  6. Error in subtractDays function fixed in ARM native runtime
  7. Errors in SysEventAvailable functions fixed in ARM native runtime

Enhancements and Fixes in 4.1.0

  1. New runtime for Palm OS 5 devices runs up to 25 times faster.
  2. Include Arm Native Runtime option added to Options: Compile
  3. The order of forms can be changed by right click in Project Explorer.
  4. Controls can now be reordered.
  5. Numerous problems with Find/Replace fixed. (Hooray!)
  6. Launcher Name now checked for quotation marks.
  7. Cursor is positioned properly in code after compile error.
  8. Unable to Save warning message appears if project file is read only.
  9. Error 91 when Project Explorer closed fixed.
  10. Menu item delete fixed.
  11. Cut and paste of form now keeps objects positions the same.
  12. Error when editing path to a resource fixed.
  13. Group ID must be in range 0-255.
  14. Code Window now remembers italic settings.
  15. Error when creating duplicate button fixed.
  16. Checking for valid Creator ID fixed.
  17. Opening a nonexistant Recent Item no longer bombs.
  18. Exiting NS Basic while changed code window open now works properly.
  19. Setting form width to 1600 no longer causes problems.
  20. Name checking for duplicate buttons is now case insensitive.
  21. Error 91 when deleteing form with open code window fixed.
  22. Options Dialog appearance improved for Windows XP.
  23. Cut and paste of submenus fixed.
  24. Error 5 when using illegal object name fixed.
  25. Error 380 caused by resizing IDE fixed.
  26. Select All keyboard shortcut added to code window.
  27. Menu elements can be cut or delete by right click in Project Explorer
  28. If width of a control is 160, the left property can now be changed.
  29. Memory leak on List.remove fixed.
  30. Options: Global Path is now Files Directory and cannot be changed.
  31. Project names with spaces can now be opened by clicking on them.
Documentation Notes in 4.1.0
  1. Native Runtime: NSBRuntimeARM68K.prc is currently being installed into \Program Files\NS Basic\Palm. To use it, either download it to your device (or the simulator) or select "Include Arm Native Runtime" in Options...Compile. See this Tech Note for more info.
Enhancements and Fixes in 4.0.0
  1. Shared library support greatly enhanced. See docs below.
    a. .INF format enhanced to contain variable type info.
    b. .INF file needs InfVers=2.0 in first section to use .inf format
    c. Up to 50 args now allowed on shared lib and API calls.
    d. No need to preallocate string for return values
    e. LoadLibrary can access the shared libs that are resources in the project.
    f. NSBTerm code now ignores libs unloaded by other apps
    g. Conditional loading of library based on SysLibFind
  2. The Emulator now includes a ROM - no need to download/upload!
  3. The Simulator can now be controlled from NS Basic.
  4. GetVersion(prcName) returns the TVER version number of any prc file.
  5. Pocket Purchase support added. See docs below.
  6. Support added for Tungsten T3.
  7. Chinese Help files added.
  8. French String Table added.
  9. Hebrew String Table added.
  10. Portuguese (Brasil) String Table added.
  11. Russion String Table added.
  12. Faster and more reliable installer. (though larger)
  13. Changes made to Pa1m0ne device event codes. See docs below.
  14. GetVersion(prcName) returns tver version string for apps.
  15. Tech Notes updated
  16. SpecEvents sample updated
  17. Improved messages in low memory situations
  18. VFSLib: New function: GetDeviceUniqueString
  19. SysInfo(9,10,11) added. (see below)
  20. Problem with SysInfo(5) fixed.
  21. POSE does not hang anymore when started after compile.
Documentation Notes in 4.0.0

1. For detailed information on the enhanced Shared Library support, see Tech Note 5d. For a Tutorial, see Tech Note 5e.

2. Pocket Purchase is a plug in for NS Basic apps that makes it easy to sell your app. It adds a "Buy It Now" feature to your application that collects credit card information from the customer, transmits it to Pocket Purchase, securely, and registers your app. Pocket Purchase, Inc. with then send you a check. For more information on Pocket Purchase, see Tech Note 28.

3. Pa1m0ne Device Events: Various Zire and Tungsten devices have some soft buttons in the Grafitti area and a Five way selector. These can now be trapped as events. You can detect an event for a Pa1m0ne device by checking for GetEventType()=7 in your Event script. Then, call GetKey to see what the specific event is. Note that these values have changed since NS Basic/Palm 3.1.1 to better capture the events. The new T3 devices were creating conflicts with the values we had. The values in this table are based on tests run on different devices. They may differ from device to device. Pa1m0ne have not published the values.
WARNING: These values had to change in 4.0.0, since new devices were creating the same codes for new buttons as existing ones.

Button GetEventType() Asc(getKey())
5 way released 7 200
Left (5 way select) 7 204
right (5 way select) 7 208
select (5 way select) 7 216
Alpha Keyboard 7 13
Numeric Keyboard 7 14
Contrast 7 11
silk screen clock 7 0
Virtual Clock 7 1
Brightness 7 13
Camera shutter button 7 8
Close T3 Case 7 4
Open T3 Case 7 5
Soft Grafitti Area 1 7 15
Soft Grafitti Area 2 7 16
Soft Grafitti Area 3 7 17
Soft Grafitti Area 4 7 18

4. PopUpDate on T3 devices: On returning from PopUpDate calls, the results of DRAW* statements will not be refreshed. This is something that the Palm OS used to handle, but according to PalmSource, is now the responsibility of the calling app.

5. SysInfo(9) Referred to as KeyDownEvent.chr in the Palm OS documention. This is the character code that caused the event. This could be any of the regular keyboard characters, a soft or hard button on the device or other event. Devices from different manufacturers will have special chr values. For example, PalmOne has special events in the 1280 to 3925 range. Values should be described in files in the SDK from the hardware manufacturer (i.e. PalmChars.h).

SysInfo(10) Referred to as KeyDownEvent.keyCode in the Palm OS documention. It is used to contain additional information about the chr. For example, the Palm 5-Way button uses this value to tell if the event is up, down, left or right.

SysInfo(11) Referred to as KeyDownEvent.modifiers in the Palm OS documention. Flags are defined in SysEvent.h. You will need to test the bits of this value to check is a flag is set. For example, 0x0008 being set mean the 'commandKeyMask' bit is set and the chr received is a command, not a character.

NS Basic/Palm 3

  1. Palm OS 5.x Devices supported Programs written using NS Basic will run on the new Palm OS 5.x devices, including the Palm Tungsten, Sony NX Series and others. The really nice part is that you won't have to change your programs for the new devices: just install the new runtime that is freely available. Programs compiled with NS Basic 2.1 should even run without recompiling!

    Programs can be tested using POSE, the Palm Simulator or an actual device.

  2. Speed of many operations greatly increased. We've improved how variables are accessed. Programs run up to twice as fast as a result on all devices. Programs need to be compiled under 3.x to see the increase.
  3. New function: SysInfoSet("HeapVariableCount",n) Sets the number of numeric variables to be allocated in the Dynamic Store, where n is the count of variables (default is 200.) This results in faster execution, since variables can be more quickly accessed. Variables are added to this area in order of compilation. Each variable used takes 22 bytes of space from the Dynamic Store. Consult PalmSource's documentation to find out how much Dynamic Store is on your device. Only the actual number of variables used is allocated. The full number in SetHeapVariableCount will only be used if you actually have that number of variables. This function should be called in your Program Startup code.
  4. New shared library: NSBVFSLib. This new shared library allows NS Basic programs to access and manipulate files that are stored on cards.
  5. DEFINE statement no longer needed. This statement is no longer used. In earlier versions, it was used to define functions so they could be referenced earlier in the program than they appeared. The compiler now collects all the functions at the start of the compile step and automatically defines them.

    If you have Define statements in your current code, don't worry: they will simply be ignored. Important: Do not rename the Project_startup() code to another name.

  6. New function: DateDiff(dateVar1,dateVar2) Returns the number of days between two dates. See Help or Handbook for more info. If you currently have a DateDiff user function in your code, rename it or use the new function to avoid a compile error.
  7. New function: TimeDiff(timeVar1, TimeVar2) Returns the number of seconds from timeVar1 to timeVar2. See Help or Handbook for more info. If you currently have a TimeDiff user function in your code, rename it or use the new function to avoid a compile error.
  8. New form method: frmName.Clear Sets the values of all fields to null ("").
  9. New form property: frmName.Count Returns the number of objects on the form. If the form has a title, the count will include the form title as an object.
  10. New object property: objName.Index Returns a objects's position on the currently active form. The first position is position 0. If a form has a title, the title will be in position 0 and other objects will be numbered 1-n.
  11. New object property: objName.Type Returns the type of control as
    0=Field control
    2=List control
    4=Bitmap control
    8=Label control
    9=form Title
    10=Popup control
    11=Graffiti Shift Indicator
    12=Gadget control
    13=ScrollBar control
    23=popup trigger
  12. NextForm can now take a variable
  13. NextForm now has option to restore initial state nextForm stringVarName[,clear]
    where stringVarName is a string variable containing the name of the form to transfer to. If "clear" is added to the end of the statement, the form is restored to its design time state, eliminating all changes made to the form including field values, checkbox and choicebox settings, emptying lists and popups, and eliminating any changes to object labels or text.
  14. Controls array can be used to set or get properties or methods of objects Controls(position) can be used to reference objects in the same way that an objName is used. Position 0 is the form title if it has one.
  15. Objects can be referred to by a variable A string variable can be used to reference objects in the same way that an objName is used.

    There are now 3 ways to refer to a property of an object
    Field1.text 'As before
    varname.text 'variable reference
    controls(0).text 'positional

    See the new "Controls" sample for more. NOTE: For bitmaps, the show and hide methods only work the first way.

  16. 16 bit images can now be included in projects. This allows color image support for the most advanced Palm OS devices. Images can be jpg, gif or bmp.
  17. The IDE is now available in Spanish. You can select the language in Tools...Options...General. Spanish is available in addition to English, Japanese and German.
  18. AppLaunch now returns codes 32768-65535. Formerly, just return codes to 32767 were returned.
  19. Custom fill type You can now create custom fill patterns for rectangles. The best way to see how this is done is to look at the program sample Pattern.prj.
    Example: Dim PatternStr as String PatternStr = &hFF808080FF080808 'Brick pattern SysTrapSub 548,1,PatternStr 'WinSetPattern FillRectangle 24,20,110,110,55,nsbCustom DrawRectangle 24,20,110,110,54,nsbNormal
  20. Function calls can be made without assigning the result x=funcName(params...) 'current format still works
    or funcName(params) 'ignores the result
  21. dbPut no longer puts out null characters between fields DbPut has been changed to write exactly the number of bytes as the passed variables at the offset given. If a string is passed, it will write the number of characters in the string plus one ending null character. There are no longer an extra null character written at the end of a record.

    Before, if you overwrote an existing record, the data written for a string field would match the length of the original string. Now, only the new length is written, and the record is shortened if the new field is shorter or lengthened if the new string field is longer than the old record field.

    The old way always ended up with an extra null character at the end of a record. The new way does not end with an extra null character. The length of a record will be the sum of the length of the data fields written (this includes a terminating null character at the end of each string field).

  22. Changing text in hidden field will not cause scrollbar to show
  23. Setfocus works after MsgBox statements.
  24. Down button no longer causes hidden field to appear.
  25. Bugs in TestNum function fixed.
  26. Bugs in Val fixed.
  27. MenuTest sample updated.
  28. Problem with signatures in Palm OS 5.0 fixed.
  29. Samples now default to type 'appl', not 'Test'
  30. EasyCalc.cod module put back into Samples
  31. Adding a resource greater than 64k no longer puts IDE in loop.
  32. All variables must be declared using DIM or GLOBAL.
  33. Compile step checks for literal table overflow.
  34. Memory leaks have been cleaned up.
  35. Compatability. Programs compiled under 2.1 should run using NSBRuntime 3.x without needing to be recompiled. However, they will no see any speed increase. Programs compiled under 3.x will not run using earlier runtimes.
Enhancements and Fixes in 3.0.1
  1. Checkboxes with default width & label don't get cut off at runtime.
  2. Checkboxes appear more accurately on Palm Screen.
  3. Message when building project with no startup, but with functions removed.
  4. Calculations involving PI are more accurate
  5. Popups no longer persist when moving to new form.
  6. Conversion errors in Palm OS 5 fixed.
  7. Fix made to signature capture
  8. German string table updated with Version 3.0
  9. New Tech Note: 02a: PDB format
  10. New Tech Note: 23a: Reading PDB file from VFS
  11. New sample: VFSeg
  12. New sample: PDBeg
  13. HostFS_Emulator.prc included for POSE card support
  14. Online help for V3 is now available in German
  15. Online help for V3 is now available in Japanese
  16. Japanese string table updated with Version 3.0
Enhancements and Fixes in 3.0.2
  1. Allow more than 32767 characters in startup code.
  2. Allow ports>32767 in SerialOpen
  3. No Library globals on Symbol 1550 fixed.
  4. Rand() will no longer produce a result of 1.0 exactly.
  5. Compiler now checks for objects with same name as form.
  6. Setting property with variable object name on 2nd form fixed.
  7. Controls().label now works for buttons.
  8. Compiler now checks for missing NEXT.
  9. Compiler now checks for missing END SELECT.
  10. Evaluation problem with complex expressions fixed.
  11. Conversion of numeric literals with more than 16 digits fixed.
  12. New version of Tutorials 1 and 2.
  13. Functions in .cod modules don't need DEFINE statements
  14. Error 91 with empty .cod module fixed.
  15. Error with invalid MaxChars fixed.
  16. Error with invalid Top, Left, Right, Bottom, FontID values fixed.
  17. Error when changing the path of a resource fixed.
  18. A warning appears after compile if not registered.
  19. Bug in InStr fixed.
  20. If program times out, device does not force a reset.
  21. Memory overlock problem fixed.
  22. Support for Tungsten 5way button added
  23. SpecEvent.prj sample updated for Tungsten
Documentation Changes in 3.0.2

1. The Handbook says the Bluetooth port is 'rcfm'. It is 'rfcm'.

2. Tungsten: Palm's new Tungsten devices have a new button with a top, left, bottom and select (in the middle). These buttons all will generate repeated events if held down.

Top and Bottom send the same codes as on any Palm OS device, however on devices with the 5Way button, they generate an extra event when they are released. GetEventType will return nsbPalm5Way with getkey() of 0 when any of the buttons are released.

Left, Right and Select will generate a GetEventType() of nsbPalm5Way with a getKey value of 4,8 or 16 respectively. Like Top and Bottom, these are followed by an extra event when released.

See the SpecEvent sample to see how this works.

Enhancements and Fixes in 3.1.0

  1. Auto Lock restart with password now works properly.
  2. PopupTime: start and end times can now be passed in and out.
  3. SysInfo(6) now returns ROM version
  4. SysInfo(7) now returns Coordinate System (See HiRes note below)
  5. SysInfoSet("CoordinateSystem",x) (See HiRes note below)
  6. Signature Capture now works on 5.x Hi Res devices
  7. New Sample: HiRes
  8. Apps timing out no longer hang device
  9. OS5 compatibility problem fixed when getting Popup.text
  10. IDE now available in Chinese Traditional and Simplified.
  11. Runtime rebuilt under CodeWarrior 9.
  12. Support for HiRes bitmaps added. (see below)
  13. ResIn updated.
  14. New GetKey(): If battery is low, value of 19 is returned.
  15. New GetKey(): Soft buttons on new devices added (see below)
Documentation Notes in 3.1.0

1. Hi Res Support: We've added more support for Palm OS 5 Hi Res devices. These devices typically allow you to view the screen as 160x160 or 320x320 (HiRes). HiRes applies to Bitmaps and Draw commands.

The Palm OS HiRes support does not change to how objects are drawn. This is due to the Palm OS works, not NS Basic. Objects live in a 160x160 world. When you run on a HiRes device, your objects will be drawn in the same position as before. It is not possible to have your objects automatically drawn at half the size. When PalmSource added HiRes support, it was done so that existing apps would not be affected.

The Coordinate System setting determines how Draw statements will work. Use SysInfo(7) to get the current Coordinate System setting. In LoRes mode, 72 is returned. In HiRes, 144 is returned. In Palm OS 5, only these values are supported, although other values may be possible in the future. 72 and 144 are arbitrary values, but can be thought of as dots per inch.

Use SysInfoSet("CoordinateSystem",144) to set your device into HiRes mode. The effect on various Draw commands is as follows:

DrawLine: Line will be drawn using 320x320 coordinates. The thickness of the actual line being drawn will be cut in half.

DrawText: The position of the text will be on the 320x320 screen. The characters themselves are unchanged. A different font will be needed to draw smaller text.

DrawRectangle: The position of the rectangle will be based on the 320x320 screen. The line thickness will unchanged.

DrawBitmap: The position of the bitmap will be based on the 320x320 screen. The bitmap itself will be unchanged. HiRes bitmaps have a different format than LoRes bitmaps. The current ResIn module that NS Basic uses does not produce HiRes bitmaps, so a third party utility would have to be used to add HiRes bitmaps to an NS Basic project.

Note that the Sony HiRes prior to Palm OS 5 is not supported. With Palm OS 5, Sony uses the same HiRes implementation as Palm.

2. Signature Capture: This works properly on HiRes devices now. Due to the Palm OS limit of 64 k in a record, a string or a resource, you will need to limit the size of the input area. It's easy to capture an image larger than 64k. For example, a 100x100 screen capture area on a 16 bit screen is really 200x200 due to HiRes. (200 * 200 * 16 bits)/8 bits per byte = 80,000 bytes, which is too large.

3. HiRes Bitmap support: In addition to the current 1,2,4,8 and 16 bit images, you can now add 1,2,4,8 and 16 bit HiRes images to your project. The same images that you currently use can be entered as HiRes images, but they will be displayed at half the size of the LoRes version. In other words, if you want to have a HiRes bitmap the same size as a LoRes Bitmap, you need to make it twice as large.

The different images listed under one Bitmap enter in the Project Explorer are collectively called a family. Since the family is saved in a single 64k resource, care has to be taken not to exceed the maximum size. As with Signatures, it is easy to break that limit with just a single image, let alone a family.

If you have a family with bith HiRes and LoRes images, the Palm OS will pick the appropriate one for your device. If the device supports HiRes, the HiRes image will always be chosen, regardless of the Coordinate System being used. If there is no HiRes image and you are on device that support HiRes, the LoRes image will be displayed at the proper size.

4. Soft Buttons on Zire and Tungsten: The new Zire and Tungsten devices have some new soft buttons in the Grafitti area. These can now be trapped as events.
WARNING: These values had to change in 3.2.0, since new devices were creating the same codes for new buttons as existing ones.

Button GetEventType() Asc(getKey())
5 way released 7 0
Left (5 way select) 7 4
right (5 way select) 7 8
select (5 way select) 7 16
Alpha Keyboard 7 29
Numeric Keyboard 7 30
Contrast 7 31
silk screen clock 7 32
Virtual Clock 7 33
Brightness 7 34
Camera shutter button 7 40

Enhancements and Fixes in 3.1.1

  1. Problem with DbUpdate fixed.
  2. Problem with Val converting more than 8 digits fixed.
  3. German translation string table updated.
  4. Memory leak on Menus fixed.
  5. NSBSystemLib 2.0 - add new features, plus stuff from BitsNBytes and Screenlib. See Tech Note.
  6. Tech Notes updated.
  7. SysInfo(8) returns kbytes of free storage (3.2.0a)
Documentation Notes in 3.1.1

1. SysInfo(8) function returns the number of Kbytes of storage heap the remaings. Your app should check this before starting anything that needs a significant amount of additional storage to complete.


If sysinfo(8)<2 then 'we want to make sure at least 2k is free
    msgbox "Operation could not be performed. Your device is low on memory"
    ... go ahead and process as usual
End if 

NS Basic/Palm 2

NS Basic/Palm 2 is a major upgrade to the NS Basic development environment. Almost every aspect of it has been reconsidered and improved.

Probably the single most important enhancement is that multiple code windows can be opened at the same time. You can also customize the look by hiding information that used to appear. The Properties windows has been changed to look like the properties windows of most IDEs.

No change has been made to NSBRuntime, other than the version number. There are no changes to the syntax of the languge.

Enhancements and Changes in 2.0.0


  1. Multiple Document Interface implemented. Multiple code windows can now be opened at the same time.
  2. Toolbar added. This provides a list of icons for common functions such as Save, Find, Compile, Cut, Paste, Add Objects, etc. This toolbar can be hidden.
  3. Toolbox reformatted to take less space.
  4. Toolbox can be hidden.
  5. Web link to special IDE page on NS Basic site added. Click on this to get the latest information on NS Basic/Palm.
  6. Web link to Palm Creator ID page added
  7. Project, form, objects and bitmaps use new Property Window.
  8. Multiple objects can be selected for align objects.
  9. All documentation now available in English, German and Japanese.

Property Window

  1. Formatted as a grid
  2. Only properties that are actually editable for an object appear. Version 1.x allowed you to set properties that are actually calculated by the Palm OS. An example is the width and height properties that used to appear for the Label object.
  3. Listbox and Popup objects can now accept a list of values to be loaded automatically at start of the application.

Code Window

  1. Multiple code windows can be opened at the same time.

Project Explorer

  1. Can be hidden.
  2. Maintains current state and selected item as objects are added or removed.

Menu Editor

  1. Now under the Tools Menu
  2. Completely redone
  3. Menu items are now part of the Project Explorer as well
  4. Shortcut hints can be added to the menu that displays

Bitmaps and Icons

  1. Bitmaps and icons can now be .bmp, .gif or .jpg. They will be converted to Palm bitmaps automatically at compile time.
  2. IconMake will go away after 2.0. Since NS Basic/Palm now takes standard image types, you may use standard icon editing tools to make your icons.
  3. Bitmaps and Icons can be 1,2,4 or 8 bit color.
  4. When you add a bitmap to a project, it defaults to single bit depth. When you edit the properties of a bitmap, you can set filenames for other bitmap depths.
  5. Icon files (.icn) from NS Basic/Palm 1.x will no longer work. Use IconMake to save them as .bmp files.
  6. Add your Icons to the project as regular bitmaps. In Project Properties, enter the Resource ID of the bitmaps for Large and Small Icon.
  7. Make sure your icons are the correct size. Large icons must be 22x22. Small icons must be 15x9. Note: Special thanks to Christien Lee for the modifications to IconMake. Check out his NS Basic CodeTools if you have a chance.

Palm Screen

  1. Text is now drawn using Palm fonts, which is much faster and more accurate.
  2. Objects are displayed more accurately.
  3. Moving objects around is more precise.
  4. Redraw of Palm Screen greatly speeded up.
  5. Multiple object selection is now enabled.
  6. You can Right-Click shortcut to the Format menu with a multiple object selection, or do Shift Key + Right-Click for a single object.
  7. Single task Snap-To-Grid functionality is available even when global preference is disabled. Shift-Key attempts to enforce grid regardless of global preference, and Ctrl-Key attempts to ignore grid regardless of global preference.
  8. Format has been greatly enhanced, with new options for Make the Same Size, Horizontal and Vertical spacing and centering in form.
  9. Palm Screen TitleBar can edit Title property via Double-Click
  10. Clicking on the on silkscreen menu button opens menu editor.
  11. Clipboard support now includes Cut.
  12. Selecting multiple objects and right clicking brings up Format menu.
  13. Shift-Right-Click of single screen object gives format menu.
  14. Click on border changes magnification.


  1. POSE can now be controlled directly from NS Basic.
  2. You can compile, download and run an app in POSE in one step.
  3. POSE is included in the installer. To get the latest POSE skins, documentation and POSE software, go to http://www.palmos.com/dev/tech/tools/emulator/. If you are using a device that is made by one of Palm licencees, you may also find device specific POSE versions on their web site. POSE is distributed under GPL, the full text of which is available as part of the download of the complete POSE package from Palm. You can also get to the Emulator page on the Palm site from the Help menu in NS Basic/Palm.
  4. If you get an error in POSE, it is important to clear the error before sending more commands from NS Basic/Palm. Sometimes NS Basic/Palm will issue multiple commands to POSE. If one of them has error, both NS Basic/Palm and POSE will hang. To clear this, exit POSE and restart it. For example, if your app generates an error when exiting, this situation will occur.
  5. If you are using the HandEra ROM, do not use the version of emulator.exe that is included with NS Basic/Palm. Instead, use the Emulator.exe from the HandEra website.

Shared Libraries

  1. BitsNBytes Shared Library. This library has additional functions for bit manipulation, hex and binary conversion, encryption and more.
  2. Symbol Shared Library. This provides support for Symbol devices, including the Symbol CSM 150 Handspring module
  3. HandEra Shared Library. This provides support for the additional features of the new Handera 330 device.
  4. Kyocera Shared Library: This provides support for the advanced features of the Kyocera 6036 Smartphone.
  5. ScreenLib: adds 48 new functions to control the Palm screen.
  6. SystemLib: add 147 new functions to control all sorts of handy system functions.


  1. Support for running on Linux with VMWare and Win4Lin added
  2. Samples moved to a subdirectory of Projects
  3. There is a new Tools item in the menu. It allows the addition of third party tools to the IDE. To add a tool to the menu, put an exe into \nsbasic\tools. Next time NS Basic is started, the exe will appear on the Tools menu. (The same is true for .lnk and .bat files)

Backwards Compatibility

After saving a project using NS Basic 2.0, you will not be able to open it again under 1.12. However, using the Notepad, it is possible to modify a .prj file saved under 2.0 so it can be opened under 1.12 again. Here is what to do:
  1. Under 2.0, remove all the bitmaps and icons from the project
  2. Open the .prj file using Notepad.
  3. Change the second line from a 7 to a 6.
  4. Add the bitmaps and icons back in.
NS Basic 2.0 is able to load NS Basic 1.12 projects without any changes.

Enhancements and Fixes in 2.1.1

  1. Numeric literals without a decimal point are stored as integers
  2. DbOpen can now open a Read only file and returns a result code of 3.
  3. CodeMax control updated.
  4. Support for New Serial Manager added. (See docs below)
  5. SysInfo(3), SerialSet("PortID",x) functions added
  6. SerialReceiveWithEvent function added.
  7. DTRAssert added to SerialSet function.
  8. SerTester.nsb sample updated with serial events.
  9. MenuTest sample added.
  10. IDE no longer terminates if shared lib not found in compile
  11. Download to POSE can now happen when in General Prefs form.
  12. Changes made to integer conversion logic
  13. ResIn fixed to handle images in Windows XP properly
  14. Installer no longer overwrites Recent.dat file
  15. Resources can now be added to a project
  16. DbCreateDatabaseFromResource (See docs below)
  17. Font ID shows up for the List Object's Properties Window.
  18. Tools...Options let you select different emulators
  19. SysInfo(4) returns the current Form ID.
  20. SysInfo(5) returns the number of bytes waiting on serial port
  21. Compile now check DIM...AS digits values for correctness.
  22. DbPut now sets the busy bit properly.
  23. Problem with focus after NextForm fixed.
  24. CASE cannot contain expressions.
  25. Double quotes are now allowed in Listbox and Popup lists
  26. Floats are converted correctly on Palm OS 4.1 devices
  27. Problem with scrolling using hard buttons fixed
  28. Bug in which Before/After code to run on new form fixed.
  29. Error 778 on IR comms of new Palm devices fixed.
  30. The application type can be changed in Project Properties
Enhancements and Fixes in 2.1.0
  1. Support for Palm OS 5.0 added
  2. POSE warnings about accessing structures fixed.
  3. POSE now has built in OS 4.1 ROM image
  4. Lost clicks after returning from another form fixed.
  5. Field scrollbar now appears and disappears correctly.
  6. Next event after Repeater object is released no longer lost.
  7. String compare now recognises trailing spaces.
  8. Hidden bitmaps now pass events properly.
  9. Updating a list on another form no longer makes it appear.
  10. The Tools menu can now open links to other tools.
  11. All objects now have an ID property that can be accessed at runtime.
  12. NSBSystemLib updated with 21 new functions.
  13. Sort array functions added to NSBSystemLib.
  14. The Variant datatype can now handle a Palm OS Uint32 value.
  15. The rand() function has been made more random.
  16. Field change events are more consistantly executed.
  17. Maximum variables in a program increased from 1800 to 3600.
  18. Links to Palm's site updated.
  19. Help from Start menu fixed.
  20. HostTraceLib shared library now available in Tech Notes.
  21. Error with Down button in scrolling textbox fixed.
  22. Tech Notes and documentation updated.
  23. Round off errors in large integers fixed.
  24. All objects now retain their values when returning to a form.
  25. Integers written to databases are now rounded properly.
  26. Assigning to an integer will round to the nearest integer (like VB).
  27. EasyCalc sample updated
  28. KeyedPhoneDB sample updated.
Enhancements and Fixes in 2.0.5
  1. Problem with quotes when pasting labels fixed.
  2. Double clicking in Project Explorer now opens Code Window properly.
  3. Problem adding multiple code modules fixed.
  4. Double clicking left edge of Project Explorer fixed.
  5. Problem losing name of 8 bit bitmap fixed.
  6. Messages for missing bitmaps improved.
  7. Compile error in code module no longer opens a second window.
  8. Problems in Find/Replace fixed.
  9. Code in code module now saved properly in all cases.
  10. Property windows now allows edit of project name on entry.
  11. Right click in Code Windows allows cut and paste.
  12. Pasting a bitmap no longer duplicates the bitmap number.
  13. Combo box problem in Project Properties fixed.
  14. Error 380 when closing NS Basic while minimized fixed.
  15. In Menu Editor, Insert Dropdown then Delete no longer crashes.
  16. Val/Str now give correct results on large numbers.
  17. Menus dismiss properly when tap is outside bounds
  18. UDT's can be used as function parameters.
  19. Arrays can be used as function parameters, if DIMed the same.
  20. Problem with LET fld.text=var fixed.
  21. Round off errors in STR and VAL fixed.
  22. Scrollbar returns correct values (was 1 too low).
  23. Fixed signature gadget errors on display.
  24. Clicks on MsgBox no longer fall through to bitmap.
  25. A(0), which is undefined, was executing as A(1).
  26. POSE complaints about WinInitializeWindow fixed.
  27. Rand() function now uses a random seed.
  28. Error in operator precedence fixed ((59+1)/2*30)
  29. Dates prior to Jan 1, 1900 fixed.
  30. Operator precedence problem with ^ fixed.
  31. Runtime is built using the Palm OS 4.0 SDK
  32. NSBStringLib Shared Library added.
  33. If module not found when project opens, file name is shown.
  34. The Tech Notes are now installed under the Help menu.
  35. Problem with quoted strings in code modules fixed.
  36. Problem with changing Global Path in Options fixed.
  37. Cancel in Compile/Download options now really does cancel.
  38. Horizontal scroll added to code window.
  39. Clicking on the code window will not affect underlying objects.
  40. Bug in open project by double clicking it fixed.
  41. Losing focus from a field object will only its execute script once.
  42. MathLib is properly closed on exiting
  43. Clicking on the Title in the Palm Screen brings up correct prompts
  44. If Pushbutton Selected is true, Group ID's can be changed.
  45. Error 13 when right clicking in Property window fixed.
  46. A message appears if the variable table overflows.
  47. Fixes were made to the SymbolLib for Symbol devices
Enhancements and Fixes in 2.0.4
  1. Multiple languages supported in IDE menus and messages.
  2. Copy Protect added to Compile Options.
  3. NSBSymbolLib.prc internal file name fixed.
  4. PalmRI renamed to ResIn.
  5. Bugs in displaying bitmaps fixed.
  6. Emulator 3.3 now included. Check Palm site for enhancement list.
  7. ROMTransfer.prc now included to upload ROM to emulator.
  8. Compile checks that referenced bitmaps exist.
  9. NS Basic/Palm can be started from a command line.
  10. There is a new command line flag, "-compile".
  11. .Prj files will now open NS Basic when clicked on.
  12. Print can now be in landscape mode.
  13. CodeMax (the Code Window control) updated to latest version.
  14. ScreenLib Shared Library added.
  15. NSBSystemLib Shared Library added.
  16. The Tools menu now supports third party add ons.
  17. Windows XP is now supported.
  18. The displayed size of the compile project now includes bitmaps.
  19. Online help is now available in English, Japanese and German.
  20. NextForm is properly colored in the code window.
  21. Code Window displays correctly with non-Western character sets.
Enhancements and Fixes in 2.0.3
  1. Kyocera SmartPhone Shared Library added
  2. ListBox and Popup objects have a new property called List. It lets you set up the values at design time in the IDE.
  3. Bitmap names now display in Project Explorer.
  4. Bitmaps with spaces in the path name now work.
  5. Bitmaps: all image types show when adding from Property Window.
  6. Bitmaps: quotes no longer allowed in file names
  7. Changes in one project not saved when opening another
  8. Code Module: Open and cancel immediately now works.
  9. Code Module: Removing in Explorer while window open fixed.
  10. Code Modules: quote and tilde characters now handled properly
  11. Code Window: right click brings up cut & paste menu
  12. Compile: File size sometimes reported incorrect size
  13. Error 5 when clicking on an object fixed.
  14. Fat App chunk overlocked after running 14 times fixed.
  15. Field: Logic in changing true/false exclusions fixed
  16. Find: a number of problems fixed
  17. Find: Error message fixed
  18. Items added to the View menu
  19. Japanese (and other languages) now display properly in the Palm Screen on Windows 2000 with Japanese language kit
  20. Menu Bar: Coordinates for current object added
  21. Menu Editor: Up and Down arrows now appear on all platforms
  22. No longer possible to open multiple projects at once.
  23. Options: Cancel no longer saves the changed options
  24. Problem with buttons moving when double clicked in Palm Screen improved. Runtime error when opening 2 copies of NS BASIC fixed.
  25. Problem with moving menu items up and down fixed.
  26. Runtime error 438 when closing project fixed.
  27. Runtime error 91 with Palm Screen closed fixed.
  28. Save: move of object just before exiting now saved.
  29. Shift Indicator: problem in resizing fixed.
Enhancements and Fixes in 2.0.2
  1. PalmRI timing problem fixed on slow CPUs. Caused fatal errors, etc.
  2. Bitmaps: If missing, better error message is produced.
  3. Bitmaps: All valid image types now show, not just bmp
  4. Bitmaps: Long filenames supported (multiple selection feature lost)
  5. Bitmaps: Projects with multiple depth bitmaps now load properly.
  6. Compile: Error 6 with double byte characters in project name fixed
  7. Compile: Small Icon does not appear
  8. Run Menu: Reorganised so Hotsync or POSE can be selected without changing Compile Options
  9. The word "Compiling" clears from the status bar if there is a compile error
Enhancements and Fixes in 2.0.1
  1. Add multiple bitmaps fixed.
  2. Menu Shortcuts can now be displayed.
  3. Cursor position shows when editing objects
  4. Error 380 when NS Basic minimized, then closed fixed.
  5. Error when stopping minimized NSBasic from Task Manager fixed.
  6. Error when having two copies of NS Basic running at once fixed.
  7. Menu Tool: Move up and down now work
  8. When you copy and paste an object, the new instance will be a few pixels removed from the original.
  9. Bug in Paste Form fixed.
  10. Documentation note: To paste a form, highlight the project the
  11. Project Explorer and use right click.
  12. Palm Screen: resizes properly with zoom and minimize/maximize
  13. Find/Replace: some problems fixed.
  14. If you have a compile error and the code window is already open, another instance of the code window is not created.
  15. Modules with more than 64k of code are loaded properly.
  16. Changes in an open Code Window are now saved properly.
  17. Incorrect "Project already has an object..." message bug fixed.
  18. Focus problem in Property Window fixed.
  19. Menu Editor: Error in Delete option after Insert fixed.
  20. Field object: Exclusion logic for options improved.
  21. Symbol library updated and renamed to NSBSymbolLib. Check your code!
  22. Newer version of UserData.dll now installed.