Windows Mobile
Visual3D™ Graphics Library
NSBasicCE Tutorial
Lessons in NSBasicCE

Programming Using NSBasicCE
All content (c)1999-2007 Serg Koren and VisualNewt Software.
All rights reserved.
List of Articles:
- The Package and Installation.
Discussion of the history of BASIC, and how it relates to MS VisualBasic and NSBasic. Steps needed to install NSBasic on a Casio-E105 are described.
- The Editor and Modes.
A complete discussion and exploration of the NSBasic programming environment detailing every menu item. A description of Immediate and Programatic mode programming with examples.
- Objects, Properties, and Methods! Oh My!
A beginner's explanation of Object-Oriented-Programming (OOP) with emphasis on NSBasic.
- CommandButtons.
An explanation of how to use CommandButtons in NSBasic.
- MSGBOXes, SUB and FUNCTION
What SUBroutines and FUNCTIONs are and how to use them, basic parameters, and the MSGBOX user-interface widget.
- CheckBox and Variables
A discussion of variables, how they are stored in memory, how to use them, and the CheckBox widget.
- Strings and COMBOBOX
We talk about what strings are, and how to use them and combine them. We also look at the ComboBox object.
- Dissecting Strings and the Date Object
We follow up our discussion on strings and talk about taking them apart. We also look at the buggy and barely usable Date Object.
- Arrayed Things and the INPUTBOX
This article deals with arrays, what they are, how to set them up, and use them. We also talk about the INPUTBOX and what it is good for.
- Decisions, the Label and ListBox
Getting your program to decide things for itself, and how to put labels on your screen, along with the ListBox object.
- DejaVu Again
Getting your program to loop, and the OptionButton object.
- FOR EACH, INSTR, and the PICTUREBOX object
A powerful new kind of loop, searching for a string in a string, and graphics.
- PRINT, REDIM, and the TEXTBOX object
Printing information to the screen, resizing arrays and text objects.
Sieve for PocketC & NSBasicCE
This source code is freeware. However, please do not distribute modified versions. Thanks.
This code should compile and run using PocketC .
This code should run using NSBasic.
If you download and run this program, please send me your timings and I'll post them here for comparison purposes.
The Source Code
NOTE: It appears that on WindowsCE the more memory you can give programs the faster this runs. The above timings are the fastest noted.
POCKET C
//---------------------------------------------- // Sieve // // Serg Koren // VisualNewt Software // http://www.VisualNewt.com/ // Serg@VisualNewt.com // // Ver 2.0 // Total rewrite to work under PocketC b1.30 // //------------- // /* Global defines */ #define WS_CHILD 0x40000000 #define WS_POPUP 0x80000000 #define WS_VISIBLE 0x10000000 #define SIZE 8193 #define TRUE 1 #define FALSE 0 /* Interface controls - menu */ #define MF_SEPARATOR 0x0800 #define MF_ENABLED 0x0000 #define MF_STRING 0x0000 /* Event types */ #define PM_BUTTONUP 5 #define PM_COMMAND 8 /* Our button */ #define SIEVE 100 /* our sieve array */ #define SIZE 8193 int x[SIZE]; //---------------------------------------------- // ShowResults - update our labels //---------------------------------------------- // ShowResults(int start, int end, int elapsed) { text(20,56, "Start: " + start); text(20,83,"End: " + end); text(20,108,"Elapsed:" + elapsed); text(20,140,""); } //---------------------------------------------- // DoIt // The main sieve logic. Pass in the max. // number of primes to search to. //---------------------------------------------- // DoIt(int n) { int i, j, k, p, iter, start; text(20,140,"Working..."); start = ticks(); for (iter = 1; iter <= 10; iter++) { x[1] = 0; for (i = 2; i <= n; i++) x[i] = 1; p = 2; while (p * p <= n) { j = p; while (j <= n) { x[j] = 0; j = j + p; } do { p++; } while (x[p] != 1); } } // output details j = ticks(); k =j - start; ShowResults(start,j,k); // display an alert with results alert("Done! In: " + k + " ticks."); } //---------------------------------------------- // draw_form // Setup our GUI //---------------------------------------------- // draw_form() { menu_on(); menuins(0,0,MF_SEPARATOR,200,""); menuins(0,0,MF_ENABLED|MF_STRING,201,"PalmOS (5120)"); menuins(0,0,MF_ENABLED|MF_STRING,202,"Full (8192)"); text(20,56,"Start:"); text(20,83,"End:"); text(20,108,"Elapsed:"); text(20,140,""); createctrl("BUTTON","Sieve",WS_CHILD|WS_VISIBLE,0,82,150,75,25,100); } //---------------------------------------------- // SetupAbout // Build our about box //---------------------------------------------- // SetupAbout() { about("SieveCE - PocketC by Serg Koren. VisualNewt Software http://www.VisualNewt.com/ Ver. 2.0"); } //---------------------------------------------- // MAIN // our main routine //---------------------------------------------- // main() { int e,g,m,k; int NotDone; NotDone = TRUE; draw_form(); SetupAbout(); while (NotDone) { e=event(0); k=key(); if (e==PM_BUTTONUP) { g=guiid(); if (g==SIEVE) DoIt(5120); m=menu(); } if (e==PM_COMMAND) { g=guiid(); if (g == 201) DoIt(5120); // PalmOS else if (g == 202) DoIt(8192); // Full m=menu(); } } } //-------------------END------------------------
NSBASIC CE
'----------------------------------------------------
' Sieve
'
' Serg Koren
' VisualNewt Software
' http://www.VisualNewt.com/
' Serg@VisualNewt.com
'
' 03/19/99
' Ver 1.0
'
'------------------------------------------------------
'
OPTION EXPLICIT
DIM Version ' version string
Version = "Ver. 1.0"
'------------------------------------------------------
' DoIt
'
' The actual sieve logic.
'------------------------------------------------------
'
SUB DoIt(size)
Feedback.Caption = "Working..."
UPDATESCREEN ' allow menus to refresh, etc.
DIM i, j, k, p, iter, howlong
DIM x(8193)
howlong = NOW
FOR iter = 1 To 10
x(1) = 0
FOR i = 2 TO size
x(i) = 1
NEXT
p = 2
WHILE p^2 <= size
j = p
WHILE j <= size
x(j) = 0
j = j + p
WEND
DO
p = p + 1
LOOP WHILE x(p) <> 1
WEND
NEXT
j = NOW
' display results
Feedback.Caption = ""
Start.Caption = "Start: " & howlong
EndL.Caption = "End: " & j
Elap.caption = "Elap.: " & DATEDIFF("s",howlong,j) & " sec."
END SUB
'------------------------------------------------------
' About menu item
'------------------------------------------------------
'
SUB About_click
DIM T
DIM CRLF
CRLF = CHR(13) & CHR(10)
T = "SieveCE - NSBasic" & CRLF & "by Serg Koren" & CRLF & CRLF & "VisualNewt Software"
T = T & CRLF & CRLF & "http://www.VisualNewt.com/" & CRLF & CRLF & Version
MSGBOX T,vbOKOnly,"About Sieve"
END SUB
'------------------------------------------------------
' Exit menu item
'------------------------------------------------------
'
SUB Exit_click
BYE
END SUB
'------------------------------------------------------
' PalmOS sieve request
'------------------------------------------------------
'
SUB PalmOS_click
DoIt(5120)
END SUB
'------------------------------------------------------
' Full sieve request
'------------------------------------------------------
'
SUB Full_click
DoIt(8192)
END SUB
'------------------------------------------------------
' Sieve button clicked
'------------------------------------------------------
'
SUB Sieve_click
DoIt(5120)
END SUB
'------------------------------------------------------
' SetupMenus
'------------------------------------------------------
'
SUB SetupMenus
DIM titlebar
titlebar = ARRAY("&File","&Command")
SETMENU "titlebar",titlebar
DIM fileMenu
fileMenu=array("About||About","-","E&xit||Exit")
SETMENU "&File",fileMenu
DIM commandMenu
commandMenu=array("Full (8192)||Full","PalmOS (5120)||PalmOS")
SETMENU "&Command",commandMenu
END SUB
'------------------------------------------------------
' SetupLabels
' for user feedback
'------------------------------------------------------
'
SUB SetupLabels
ADDOBJECT "Label", "Start", 10, 10, 200,20
Start.Caption = "Start:"
Start.BackColor = Output.BackColor
ADDOBJECT "Label","EndL",10, 30, 200, 20
EndL.Caption = "End:"
EndL.BackColor = Output.BackColor
ADDOBJECT "Label","Elap", 10, 50, 200,20
Elap.Caption = "Elap.:"
Elap.BackColor = Output.BackColor
ADDOBJECT "Label","Feedback", 10,70,200,20
Feedback.Caption = ""
Feedback.BackColor = Output.BackColor
END SUB
'------------------------------------------------------
' SetupButton
'------------------------------------------------------
'
SUB SetupButton
ADDOBJECT "CommandButton","Sieve", 50, 130, 50,20
END SUB
'------------------------------------------------------
' SetupGUI
' Build our user interface
'------------------------------------------------------
'
SUB SetupGUI
SetupMenus
SetupLabels
SetupButton
END SUB
'------------------------------------------------------
' MAIN
'------------------------------------------------------
'
SUB Main
SetupGUI ' and wait for events
END SUB
'------------------------------------------------------
'------------------------------------------------------
' run the program
Main
'------------------------------------------------------
'------------------------------------------------------
'----------------------END-----------------------------

