home *** CD-ROM | disk | FTP | other *** search
/ PDA Software Library / pdasoftwarelib.iso / PILOT / APPS / CBASPAD / CBASPAD.TXT < prev    next >
Encoding:
Text File  |  1997-07-20  |  28.1 KB  |  731 lines

  1. Chipmunk Tiny Basic for Pilot README and Command Summary
  2.   for cbasPad version 0.82  <http://www.nicholson.com/rhn/pilot.html>  
  3.   Please see the Revision History for important changes.
  4.  
  5. Abstract:
  6.   This README is a description of cbasPad, a Tiny Basic programming
  7.   language interpreter with integrated text editor for the USR Pilot. 
  8.   Features include math functions, sounds and morse code and simple
  9.   graphics. See below for a complete list of commands, statements &
  10.   functions.
  11.  
  12. Contents:
  13.   Introduction
  14.   Installation
  15.   Running a cbasPad Basic program
  16.   Basic Statement, Command & Function Summary
  17.   Additional Commands & Functions
  18.   Some Warnings
  19.   Examples
  20.   Revision History
  21.   FAQ
  22.   Copyright and Disclaimer notice
  23.  
  24. Introduction
  25.  
  26.   This a version of Tiny Basic for the USR Pilot palmtop computer.
  27.   
  28.   BASIC is an easy to learn computer programming language, invented at
  29.   Dartmouth college around 1963.  Various TINY Basic implementations
  30.   were written around 1976 for use in early personal computers with
  31.   very limited memory configurations (8 KBytes or less).
  32.  
  33.   The cbasPad interpreter was written as an experiment in writing a
  34.   small Basic interpreter in portable c.  After the 1st versions of
  35.   integer cbasPad were written, various features were added to make it
  36.   more useful.  These added features include some limited floating point
  37.   math, and various "op" commands and "fn" functions to access the
  38.   Pilot hardware and databases.  Please note that no formal or complete
  39.   verification has been done on any of cbasPad's functionality.
  40.  
  41. ***
  42. Installation:
  43.  
  44.   - Use the USR Install Application and then HotSync.
  45.   - You may need to select "All File Types" since a zip file doesn't
  46.     preserve the Mac file creator type info.
  47.   - If HotSync fails, you may need to manually delete any prc files left
  48.     in your install directory in order to get HotSync working again.
  49.   - If you have the 1.0 OS, you may need to install the OS 1.0.6 patch to
  50.     install a program this large.
  51.   - Use yMFrag app to check for memory fragementation if you still have
  52.     out-of-memory problems during an install hotsync.
  53.   - cbasPad 0.77+ requires a memory heap with at least one 30K block.
  54.  
  55. Installing cbasPad Basic programs:
  56.  
  57.   - cbasPad uses it's own memo database and it's own built in memo
  58.     editor.  This is to prevent any accidental overwriting of the
  59.     MemoPad database.
  60.   - You can just hit "New";and write you own Basic program.
  61.   - You can use the "import" menu item to import a page from the
  62.     MemoPad.  A dialog box will ask you for the Memo title.
  63.   - The following web site has win32 tools for combining several cbasPad
  64.     programs into one pdb file:
  65.         <http://home.pacific.net.sg/~kokmun/basic.htm>
  66.   - The following web site has a Win95 HotSync conduit for cbasPad:
  67.         <http://cpu563.adsl.sympatico.ca/gcm.htm>
  68.  
  69. Running a cbasPad Basic program:
  70.  
  71.   - From the edit page, you can select a range of unnumbered lines
  72.     and hit the "Exec" button.
  73.   - From an edit page, you can hit the "Select All" button and then
  74.     the "Exec" button to run either direct mode statements or the first
  75.     program on the page.
  76.   - From the main cbasPad index page, you can select a program from the
  77.     list and hit the "Exec" button.
  78.   - To stop a running program, hit the "Done" button.
  79.   - To stop a running program when an input dialog is present, use the
  80.     "Stop" menu item.
  81.  
  82. ***
  83. The cbasPad BASIC Programming Language
  84.  
  85.    The cbasPad language is mostly compatible with books on programming
  86.    in the BASIC language that were published between 1977 and 1988.
  87.    Since these books are mostly out of print, your best bet is to try
  88.    your local public library.  cbasPad is a minimal subset of the Basic
  89.    language, so many features of a full version of the Basic language
  90.    are not present.
  91.    
  92.    cbasPad requires that every program begin with the "new" command
  93.    and end with the "run" command.  These commands should not have line
  94.    numbers.  Any un-numbered lines before the first "new" command are
  95.    executed in direct mode (as they are encountered.)
  96.    
  97.    cbasPad either requires that every program line have a line number,
  98.    or requires the use of the #autonum comment. If #autonum is present,
  99.    then any lines without numbers are automatically assumed to have a
  100.    line number that is one greater than the line number of the previous
  101.    line. This means that any line numbers used as labels for "goto" and
  102.    "gosub" targets must be in order and spaced far enough apart for all
  103.    the intervening lines.
  104.  
  105.    cbasPad-memo's are limited to about 4000 characters in length.  To
  106.    create a longer program, one can use the  #include <#TITLE>  comment.
  107.    cbasPad will look for a cbasPad-memo titled "#TITLE"  and insert lines
  108.    from that memo as an in-line [sub]routine
  109.    
  110.    The "print" command will append output at the end of the current
  111.    cbasPad-memo.  Use "dprint" or "?" to send output to a dialog box
  112.    instead.  You can also change the cbasPad-memo used for print output
  113.    by using the op "page"   command.  A program can use the op "page",-1
  114.    command to create a new cbasPad-memo page for print output.
  115.  
  116.    There is a fairly complete list of www pointers to information on the
  117.    generic Basic language near the end of my 'Basic' web page:
  118.    <http://www.nicholson.com/rhn/basic/>
  119.  
  120. ***
  121. Basic Statement, Command & Function Summary:
  122.  
  123.   Comment lines are lines that start with the '#' character.
  124.   
  125.   Operators, Statements, Functions and Reserved Keywords:
  126.  
  127.   Operators:
  128.     +  -  *  /  mod  ^
  129.     =   <>  >  >=  <  <=   and  or  xor  not
  130.  
  131.   Commands and Statements:
  132.     let    print  dprint  ?   input
  133.     if  then   for  to  step  next 
  134.     gosub  return   goto  :
  135.     dim  float  end   run  new    rem  #
  136.  
  137.   Functions:
  138.     int()  rnd()
  139.     sqr() exp() log()   sin() cos() tan() atn() 
  140.     len()  val()  str$() chr$() hex$() mid$() 
  141.  
  142.   Special functions and commands:
  143.     fre   peek()  poke  call  varptr()  eval()  
  144.     fn  op   grline   sound   sersend
  145.  
  146.   Variables and Constants:
  147.     Hex constants may be entered by preceding them with "0x".
  148.  
  149.     Variable names may be up to 15 characters in length.
  150.     Integer variables should end with the '%' character.
  151.  
  152.     Floating point variables should be declared with the float command.
  153.     Floating point numbers and variable are represented by a format
  154.     similar to IEEE single extended.
  155.  
  156.     When the '#opt int' pragma is present, variables without a suffix
  157.     start out as integer variables; but promote to floating point
  158.     if a floating point value is assigned.
  159.  
  160.     String variables must end with the '$' character.
  161.     There is a limit of 12 string variables and 1 built-in string array.
  162.   
  163.   Notes:
  164.  
  165.     ALL keywords must entered in be lower case.
  166.  
  167.     Lines starting with the character '#' are ignored (comments).
  168.  
  169.     The '#include <TITLE>' comment will include statements from the
  170.     cbasPad page starting with TITLE in its first line.  The include
  171.     comments may not be nested.
  172.  
  173.     Exponentiation must be parenthesized.  e.g.  x = (y ^ 2.0)
  174.  
  175.     The "and", "or" and "xor" operators do bit-wise operations;
  176.     "not" is a boolean operator and only returns 1 or 0.
  177.  
  178.     print    : appends to the end of the cbasPad-memo text.
  179.     dprint    : prints to a mini-dialog box.
  180.     ?        : a question mark is an alternate symbol for dprint.
  181.  
  182.     The "let" before an assignment is optional.
  183.     
  184.     float    : Declares a list of floating point variables.
  185.     dim         : Numeric arrays must be dimensioned before use and are
  186.                   limited to one dimension.
  187.                   float arrays must first be declared as float.
  188.  
  189.     fre         : returns size of free dynamic heap space.
  190.     rnd(n)     : returns a pseudo random integer in the range 0..n-1
  191.     int(x)     : truncates toward zero.
  192.  
  193.     Transcendental functions only work with explicit floating point
  194.     operands.
  195.  
  196.     log(x)    : natural log (base e)
  197.     sin(x)    : trig function, x in radians
  198.  
  199.   Current String Limitations:
  200.     There are a maximum of 12 string variables plus one string array;
  201.       use more than 12 and you may just get aliases to existing strings.
  202.     The maximum length of a string is 31 characters.
  203.     Only the "=" comparison works for strings.
  204.     Use "+" to concatenate two strings.
  205.     Complex expressions involving strings don't work.
  206.     Only 1 string array is allowed: s$(). (auto-dimensioned to 31)
  207.   
  208.   Current Floating Point Limitations:
  209.     Power operation
  210.         x = (x ^ y)
  211.         raises x to the y power; parenthesis are required.
  212.     The error of transcendental functions is unknown.
  213.     Integer addition/subtraction can overflow 2^31.
  214.     Integer values greater than 2^31 may overflow unless declared float.
  215.     If '#opt int' comment is present, mul/div of integer operands will
  216.     default to integer math.
  217.     
  218. ***
  219. Program Execution
  220.  
  221.   Statements without line numbers, but before a "new" statement, are
  222.   executed in direct execution mode in the order they are listed.
  223.   
  224.   Statements with line numbers or between a "new" statement and the "run"
  225.   command are executed in deferred mode; that is, only after a "run"
  226.   command.
  227.   
  228.   If the "#autonum" comment is present, unnumbered statements between
  229.   the "new" statement and the first "run" command are automatically given
  230.   sequential line numbers incrementing by 1 from the previous line.  Any
  231.   line number labels present should be in increasing order and differ by
  232.   at least the number of intervening lines plus two.
  233.  
  234.   All statements after the first "run" command are ignored.
  235.  
  236.   Program execution terminates after encountering the "end" statement.
  237.  
  238.   When making any changes to numbered program lines, it's good form to
  239.   precede the entire program with a "new" command.
  240.  
  241.   Single statements without line numbers can be executed by selecting
  242.   just the line the statement is on, and then hitting the "Exec" button.
  243.  
  244.   To stop a running program, hit the "Done" button.  To stop a running
  245.   program when an input dialog is present, use the "Stop" menu item.
  246.  
  247. ***
  248.  
  249. Some Examples:
  250.  
  251.   # this is a comment line (because of the leading '#').  # multiple
  252.   statements per line allowed.  x = 7 : y = 3 + 4
  253.  
  254.   # dprint prints 1 line to a dialog box.  dprint "hello ",123
  255.  
  256.   dprint "hello "; dprint 23+7
  257.  
  258.   # ? is an abbreviation for "dprint" ?  x
  259.  
  260.   # print appends text to your program file.  print chr$(65) print
  261.   "0x";hex$(255)
  262.  
  263.   # input can read numbers or strings.  input "prompt", y input
  264.   "prompt", a$
  265.  
  266.   # Arrays must be dimensioned.  # Arrays are limited to one
  267.   dimension.  dim a(4) for i=0 to 4 : a(i) = i : next i
  268.  
  269.   Example Statements:
  270.  
  271.     10 rem - this is also a comment
  272.     20 if (x = 7) then y = 4
  273.     30 for i=0 to 10 step 2 : print i,
  274.     40 next i
  275.     50 gosub 100
  276.     90 end
  277.     100 print "sub @ 100"
  278.     120 return
  279.  
  280. Additional Commands:
  281.  
  282.   float x    - declare x as a float var
  283.  
  284.   dprint    - redirects 1 line of print to a dialog box.
  285.   grline x1,y1,x2,y2,1     - draw line on display [0..159]
  286.   grline x1,y1,x2,y2,2     - draw gray line
  287.   grline x1,y1,x2,y2,-1  - erases a line
  288.   grline x1,y1,x2,y2,4     - draw rect    (topLeft, extent)
  289.   grline x1,y1,x2,y2,5     - draw gray rect
  290.   grline x1,y1,x2,y2,7     - draw filled rect
  291.   grline x1,y1,x2,y2,-7     - erase rect
  292.  
  293.   sound { frequency in Hz }, { duration in mS }, { vol 0..64 }
  294.   sound freq, c_wpm, vol64, morse$ [ , Farnsworth_wpm ]
  295.   sound 660, 18, 10, "cq de n6ywu", 13   : rem  An example.
  296.  
  297.   sersend { mem_address }, { len }, { baud_rate 2400..19200 }
  298.   op "ds",a$,x,y    - draws text at (x,y)
  299.   op "ds",a$, n*1000 + x, y    - draws text using font n
  300.       - there are only 6 fonts, most have many missing chars.
  301.   op "sety",y    - replaces line y with following print output.
  302.   op "page","title"    - changes cbasPad input/output page
  303.   op "page","",n    - changes output page to record #n
  304.   op "page","",-1    - adds a new output page and changes to it.
  305.   
  306.   op "dt",t$        - changes fn 30 dialog title
  307.   op "it",t$        - changes input dialog title to t$
  308.   op "mfind",x$,n     - finds MemoPad entry starting with x$
  309.                         - returns Memo index or -1 for fail.
  310.   op "dbrd","memo",n,m     - reads MemoPad entry n into s$(0).
  311.                         - m is a char offset into the memo.
  312.                         - if m is -1, then read the next line
  313.                         - returns category number or -1 for fail.
  314.   op "dbrd","addr",n      - reads AddressBook entry n into s$ array.
  315.                         - strings longer than 31 chars will truncate.
  316.                         - returns category number or -1 for fail.
  317.   op "dbrd","date",n      - might read something interesting in s$()
  318.   op "dbrd","todo",n      - might read something interesting in s$()
  319.   op "dbwr!","memo",n,1 
  320.           - appends s$(0) to the end of MemoPad memo n
  321.           - the last parameter appends a linefeed.
  322.   op "dbwr!","addr",n    - writes s$(0..18) to AddressBook item n
  323.                         - returns 1 if successful
  324.   ( #added disclaimer: you can trash your MemoPad and AddressBook
  325.     databases using "dbwr!". This is an *untested* function! )
  326.  
  327.   op "db",type,creat,i    - returns length of DB record i
  328.       - if non zero then 'fn 80' returns pointer to DB record
  329.       - for type & creat, convert (e.g. 'DATA' & 'memo') to
  330.         32-bit integers.
  331.       
  332.   call a    - 68k machine jsr to addr a
  333.           (You can stuff 68K machine code in integer arrays.
  334.          Remember that integers are 4 bytes long.)
  335.   
  336.   (These commands may change or be removed in future versions!)
  337.   
  338. Additional Functions:
  339.  
  340.   sqr(x) - square root
  341.   exp(x) - e ^ x
  342.   log(x) - natural log of x
  343.   sin(x) cos(x) tan(x) atn(x) - trig functions for x in radians
  344.  
  345.   len(a$)   - returns length of string a$
  346.   val(a$)   - returns numeric value of a$ or 0
  347.   str$(x) - returns string representation of x
  348.   chr$(c) - returns string of ascii char c, length 1
  349.   hex$(n) - returns hex string
  350.   mid$(a$,s,n) - returns substring of a$ starting at s length n
  351.   eval(q$)  - evaluates string q$ as a numeric expression ("1+2")
  352.  
  353.   varptr(y) - returns memory address of variable y (or y$).
  354.   peek(a)   - returns 8-bit byte at address a
  355.   peek(a,2) - returns the 16-bit value at word aligned address a
  356.   peek(a,4) - ... 32-bit value at word aligned address a
  357.   fn 16  - returns seconds timer
  358.   fn 17  - returns tick timer (100 Hz)
  359.   fn 24  - returns decimal date
  360.   fn 25  - returns decimal time
  361.   fn 22  - waits (pauses) for 2 seconds, returns 0
  362.   fn 20  - returns scaled battery voltage
  363.   fn 19  - returns length of the clipboard text
  364.   fn 18  - returns memory address of the clipboard text
  365.   fn 33  - returns asc(input$(1)). Waits for 1 graffiti char.
  366.          - also captures presses on the rightmost 5 button.
  367.   fn 38  - asc(inkey$)  e.g. non-blocking form of fn 33
  368.   fn 34  - returns tick time of last pendown or input$ char
  369.   fn 30  - display 9 line dialog, returns dialog button status
  370.   fn 39  - returns last input or dialog button status
  371.   fn 42  - temporarily clears middle of screen, returns 0
  372.   op "gnum", n    - returns the first number from line n of the page
  373.   op "get$", n    - returns a string from line n of the current page
  374.   sersend { buffer_mem_address }, { max_len }, -2
  375.     - returns length of serial data received in buffer.
  376.     This function can only be used after the baud rate has been
  377.     initialized by a prior "sersend" in the current running program.
  378.     Use a varptr to a string variable for the buffer address and a max
  379.     of 31 for the length.  If the return is n > 0, then n bytes have
  380.     been read from the serial port input into your string variable .
  381.     Warning: Using sersend drains your battery around 4 times faster.
  382.  
  383.   (These functions may change or be removed in future versions!)
  384.  
  385. Additional Operators:
  386.   x = (x ^ y)    - raise x to a power; parenthesis are required.
  387.  
  388. Additional Variables:
  389.   String variable name must end with a '$', e.g. name$
  390.   The print, dprint and input commands will take string vars.
  391.   let a$ = "hello" : dprint a$,a$
  392.   There is one string array: s$() - auto-dimensioned on first
  393.   use with 31 elements s$(0) .. s$(30)
  394.  
  395. Additional Dialog Form:
  396.   fn 30  - displays a dialog form with 9 lines
  397.   s$(0), s$(2) ... are the prompt strings
  398.   s$(1), s$(3) ... are the default & return values
  399.   return value is 1 for OK, 2 for A button, 3 for B button
  400.  
  401. Some Warnings:
  402.   Integer overflow (> 2^32-1) will not signal any warnings.
  403.  
  404.   If you don't use the "new" command, old deleted program statements may
  405.   still be in the execution buffer.
  406.   
  407.   You may have to turn off alarms when running cbasPad programs that leave
  408.   less than 5000 bytes of free memory (use the fre function to determine
  409.   how much a program uses.)  An alarm occuring while having a program
  410.   running, or still open after running, that leave less than 5000 bytes
  411.   of free memory may cause your Pilot to crash.
  412.  
  413.   You can lock up your pilot and corrupt ALL your data when using peek,
  414.   poke and call.  Use at your own risk.  HotSync and backup often if you
  415.   want to play with these functions.  Memory above the first 32K is
  416.   protected and cannot be poked without an OS write enable call (read the
  417.   SDK docs).
  418.  
  419.   Using sersend will drain the battery much faster than normal.
  420.  
  421.   Installing 0.5x, or later, over 0.02x will cause hotsync to crash.
  422.  
  423. Bugs:
  424.   Many.  Please send bug reports to rhn@nicholson.com * Bug reports
  425.   without the version number will be ignored. *
  426.  
  427.   Some floating point values may print incorrectly. (ROM bug.)
  428.   Some syntax errors are reported without line numbers.
  429.   Deep GOSUB nesting may cause stack overflow crashes.
  430.   Complex expression nesting may cause stack overflow crashes.
  431.   Divide by 0, log(0), overflow, etc.  produce undefined results.
  432.  
  433.  
  434. ***
  435. Examples
  436.  
  437. Example 1:
  438.  
  439. # example 1
  440. new
  441. 10 for i=1 to 7 : print 3 * i,
  442. 20 next i
  443. run
  444. # Now use the menus to "select all"
  445. # and to "run selection".
  446.  
  447.  
  448. Example 2:
  449.  
  450. # print out character set
  451. new
  452. 10 for c=33 to 255:print chr$ c;:next
  453. run
  454.  
  455.  
  456. Example 3:
  457.  
  458. # send the clipboard text
  459. #   out the serial port
  460. new
  461. 10 a=fn 18 : n=fn 19
  462. 20 if n > 0 then sersend a,n,19200
  463. run
  464.  
  465.  
  466. ***
  467. Revision History:
  468.  
  469. For compatibility with the latest version, please add the comment
  470. #opt int
  471. before the first numbered line in pre 0.74 cbasPad program.
  472. Please DELETE versions 0.2b9 or older BEFORE installing this version.
  473.  
  474. -- Version 0.82 --      (97Jul20)
  475.  
  476. Fixed a bug in importing non-existent memos into cbasPad.
  477.  
  478. -- Version 0.81 --      (97Jul03)
  479. Fixed a bug in the int(0) function.
  480. Expanded the range over which exp(), log() and sqr() might have
  481. some resemblence of correctness.
  482. Added some protection against too deep expression nesting which could
  483. cause a stack overflow crashes. (limit is 4 or 5 parens.)
  484. op "dbrd","todo"  does something which might change in future revs.
  485. -- Version 0.80 --      (97Jun27)
  486. Changed all variables and multiply to floating point by default.
  487. Up to 3 lines may now be placed in the dprint dialog by seperating
  488. the lines with the VT (ascii 0x0b) character.
  489. e.g.  dprint "line 1";chr$(11);"line 2"
  490. Fixed an if-then goto freeze up bug.
  491. Fixed a 0.0^n exponent bug.
  492. -- Version 0.79 --      (97Jun20)
  493. Changed divide to produce floating point results by default.
  494. Added op command to set input & dialog titles.
  495. Added more grline options (grey lines, rects, etc.)
  496. Fixed a display bug with long strings in the fn 30 dialog.
  497. Fixed a quit during import bug.
  498. -- Version 0.78 --      (97May24)
  499. Fixed s$() init problem with op "dbrd".
  500. Added op "mfind" and op "dbwr!" commands.
  501. Added custom launch codes for scriptability from other apps.
  502. -- Version 0.77 --      (97May20)
  503. Integer variables names can end with '%' (e.g. a%, foo%).
  504. Other variables will auto-promote to floats on fp assignment.
  505. Added the '#opt int' pragma to disable auto-promotion.
  506. Bugs: In 0.77, the sersend,,-2 function might return 7608, instead
  507.   of 0, if there are no bytes in the serial port receive buffer.
  508. -- Version 0.76 --      (97May17)
  509. Added a menu item to import new programs from the MemoPad.
  510. Added #include <#title>  capability for longer programs.
  511.     Includes cannot be nested.
  512. Added #autonum  to auto number lines by +1 between "new" and "run".
  513.     Linenumber labels must be in order and be different by
  514.     greater than the number of intervening lines.
  515. The mod operator now coerces float operands to integer.
  516. The op "dbrd","addr,n  function now returns the category number.
  517. Fixed a dialog field cursor restore bug.
  518. Now remembers top visible record shown on startup.
  519. Now hides the exec and select-all buttons when running a program.
  520. -- Version 0.75 --      (97May16)
  521. Fixed an array assignment bug (crashed mileage and battery log).
  522. Fixed a rounding error in the int() function.
  523. Added  op "dbrd","addr",n  to read AddressBook entry n into s$.
  524. -- Version 0.74 --      (97May12)
  525. Variables now auto promote to floats when assigned a float.
  526. Added for-next support for float index variables.
  527. Added op "ds" to draw strings.
  528. Now displays record numbers on main screen.
  529. Changed op "page","",-1 to add a new output page.
  530. Fix a float assignment bug in 0.72b & resource crash in 0.73b.
  531. -- Version 0.71 --      (97Apr09)
  532. Increased memory efficiency; cbasPad now uses a temporary DB for tokens.
  533. Added "cbasPad working..." while loading program.
  534. 0.70 was broken and only ran programs once before crashing.
  535. -- Version 0.68 --      (97Feb05)
  536. Fixed 1 fp compare bug.
  537. Fixed 1 low memory application switch problem.
  538. Changed fre function.
  539. Added op "pclip",s$  to paste string to clipboard.
  540. -- Version 0.67 --      (97Jan27)
  541. Fixed op "gnum" bug.
  542. Fixed a small memory leak.
  543. Better out-of-memory behavior, less crashes.
  544. -- Version 0.65 --      (97Jan18)
  545. Increased number of string vars from 8 to 12.
  546. fn 39 now returns button status of last dprint statement.
  547. -- Version 0.64 --    (97Jan09)
  548. Fixed bug in float array assignment.
  549. fn 34 returns last pendown tickcount.
  550. -- Version 0.62 --    (97Jan06)
  551. Increased the maximum program text size to 4000 characters.
  552. Added playing morse code tones via the sound command.
  553.     sound 660,18,10,"cq de n6ywu",13
  554. Added op "get$",n function (reads string from page).
  555. Added limited form of serial input polling.
  556. Added fn 22 wait/delay/pause function.
  557. Reduced code 0 rsrc size (should fix some install problems.)
  558. -- Version 0.58 --    (96Dec12)
  559. Fixed a string memory leak.
  560. Removed op "dpr" command.
  561. -- Version 0.57 --    (96Dec11)
  562. Changed the ? shortcut to dprint instead of print.
  563. Fixed a string array assignment bug.
  564. Fixed yet another floating point bug (division sign).
  565. -- Version 0.55 --    (96Dec03)
  566. Fixed op "sety" initialization bug.
  567. Disallow sound 0,d,v  (frequency = 0 causes a crash).
  568. Added morse-code-like beeping.
  569. -- Version 0.54 --    (96Nov23)
  570. Fix to create non null database on first use.
  571. Added "Stop" to input dialog menus.
  572. -- Version 0.53 --    (96Nov17)
  573. Fixed length bug in the mid$(s$,start,length) function.
  574. Fixed peek() to require parenthesis around all parameters.
  575. Cosmetic cleanup of dprint dialog.
  576. Enabled use of float vars as tests in if-then statements.
  577. Added floating point equality test.
  578. -- Version 0.52 --    (96Nov16)
  579. Physical scroll buttons now scroll by page.
  580. Enabled editing in the input dialog.
  581. Added mid$() function.
  582. Reduced screen flash when executing from the main form.
  583. -- Version 0.51 --    (96Nov15)
  584. Added eval() to evaluate a string as an expression.
  585. Fixed a print bug when executing from the main form.
  586. Fixed a few float to int number conversions.
  587. -- Version 0.50 --    (96Oct25)
  588. Fixed a memory allocation leak.
  589. Changed the creator signature type to 'cBAS'.
  590.  
  591.   *** *** WARNING *** ***
  592. The application signature has changed in versions 0.5X from
  593. that of old versions 0.02X.  You will have to *DELETE* old
  594. version 0.2b9, or earlier, of cbasPad *BEFORE* upgrading.
  595. First copy any Basic programs that you wish to save to the
  596. Memo Pad, delete the old version, and then copy your saved
  597. programs back after installing the new version of cbasPad.
  598. If you don't do this your hotsync may crash.
  599.  
  600. -- Version 0.02b9 --    (96Oct19)
  601. Exec from main screen now returns to main screen.
  602. Fixed reading the 9th line of input dialog.
  603. Fixed op "db" command item indexing.
  604. Fixed val() to work with hex strings ("0x1abc").
  605. Added hex$() to string functions.
  606. Added standard edit menu to input dialogs.
  607. -- Version 0.02b8 --    (96Oct06)
  608. Fixed integer input statement bug.
  609. Fixed string parameter precedence bugs in val() and len().
  610. Increased size of s$() to 20 elements.
  611. Increased size of dialog form to 9 input fields.
  612. -- Version 0.02b7 --    (96Oct05)
  613. Added dialog form with 8 input fields.
  614. Added auto-dimensioned s$() array of 16 elements.
  615. Edit button replaces auto-edit mode.
  616. Exec button added to main form.
  617. -- Version 0.02b5 --    (96Oct01)
  618. Fixed string initialization bug that can hang machine.
  619. -- Version 0.02b4 --    (96Sept26)
  620. Added dprint command to replace op "dpr".
  621. Restored printing of characters with ASCII value > 129.
  622. Added alpha test versions of trig functions.
  623. Added very limited string variables (max of 8 total).
  624. -- Version 0.02b3 --    (96Sept22)
  625. Fixed handling of tabs in comment lines.
  626. Fixed printing of a few floating point values.
  627. Added rnd() function.
  628. -- Version 0.02b2 --    (96Sept14)
  629. Added experimental versions of sqr(), exp(), log() and ^.
  630. Fixed printing of a few floating point values.
  631. Cleaned up "dpr" dialog box just a little.
  632. Added method to peek at the data of other applications.
  633. -- Version 0.02b1 --    (96Sept09)
  634. Fixed a bug in array assignment.
  635. Fixed a bug that caused crashes on empty input statements.
  636. Disabled tap text select during print output.
  637. Added the command 'op "dpr"' to print to the dialog box.
  638. -- Version 0.02b0 --    (96Sept08)
  639. More floating point expressions allowed.
  640. -- Version 0.02a9 --    (96Sept07)
  641. Added limited function floating point variables.
  642.   *** See the floating point limitations section below. ***
  643. Fixed an error dialog bug.
  644. Error messages are no longer repeated in the text output.
  645. Fixed a bug in illegal string variable names.
  646. -- Version 0.02a8 --    (96Sept05)
  647. Added the "new" command to clear out old programs.
  648. Stopped cursor blink when running.
  649. Increased max "run" time before sleep to 5 minutes.
  650. -- Version 0.02a7 --    (96Aug31)
  651. Fixed input form background display.
  652. Added "input" statement.
  653. Increased maximum text form length to 2K.
  654. -- Version 0.02a5 --    (96Aug24)
  655. Fixed bug in dimensioning arrays on repeated runs.
  656. Added error report dialog.
  657. Renamed Buttons to "SelectAll" and "Exec"
  658. Halt script execution after the first "run" command.
  659. Removed ability to search cbas database.
  660. Added functions to get clipboard Ptr and len.
  661. (I use this and the sersend command to upload memos to my
  662.  Unix workstation.)
  663. -- Version 0.02a4 --    (96Aug18)
  664. Fixed printing negative numbers.
  665. Fixed crash on done button while running.
  666. Fixed HotSync of DB.
  667. Added print hex$(), print chr$()
  668. Cleaned up mislabled resources.
  669. Changed type of app and DB (You should delete the old cBASpadDB.)
  670. Added poke, varptr(), call, serial port transmit.
  671.  
  672. -- Version 0.02a1 --    (96Aug17)
  673.  
  674. Initial Experimental Release.
  675.  
  676. ----------------------------------------------------------------
  677. End of release notes.
  678.  
  679. ***
  680. FAQ
  681.   
  682.   There are several Pilot FAQ's on the Web.  Try these URL's:
  683.   http://home.pacific.net.sg/~kokmun/tips.htm
  684.   http://www.nicholson.com/rhn/pfaq4.txt
  685.   http://www.pilotfaq.com/
  686.  
  687. ***
  688. Credits:
  689.   
  690.   cbasPad is based on the Pilot MemoPad tutorial,
  691.   which is Copyright ⌐ Palm Computing 1996, and on Chipmunk Basic.
  692.  
  693. Permission:
  694.   Pilot cbasPad is Copyright 1996,1997 by Ronald H. Nicholson, Jr.,
  695.   All Rights Reserved.
  696.  
  697.   There is NO shareware fee required for personal, educational or
  698.   noncommercial use of this version of cbasPad. $0.00 (USD) !
  699.  
  700.   Permission to use, copy and distribute this software without fee for
  701.   non-commercial or educational purposes is hereby granted, provided
  702.   that the above copyright notice appear in all copies, and that both
  703.   the copyright notice and this permission notice with the following
  704.   disclaimer appear in all documentation.
  705.  
  706. Disclaimer:
  707.   The cbasPad program is distributed in the hope that it will be useful,
  708.   but WITHOUT ANY WARRANTY OF ANY KIND; not even the implied warranty of
  709.   MERCHANTABILITY or fitness for ANY particular purpose.
  710.  
  711. ***
  712. --
  713. 97Jul20
  714. Copyright 1997 Ronald H. Nicholson, Jr.   rhn@nicholson.com
  715. ***
  716.  
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.  
  731.