HotPaw Basic for iPhone/iPad/iOS

    HotPaw icon

  • HotPaw Basic in Apple's iTunes App Store
  • HotPaw Basic for iOS on the Hotpaw website

  • The built-in Help File for HotPaw Basic for iOS (version 1.7.1)

    HotPaw Basic is a Classic BASIC language
    interpreter.  Line numbers are required to
    enter and edit programs.  You can edit
    a numbered line by using the "edit" command.
    (Please scroll this Help text to see more.)
    Type "help website" for more complete info.
    Commands and Statement Keywords:
      run new  list del  save load removefile
      let  if then else endif   dim data read restore
      for to step next  while wend  goto gosub return
      ?  print  input  open close  end stop 
      def fn  mat  randomize  cls  : rem
      int() abs() sgn()  rnd()
      sqr() exp() log() log10() sin() cos() tan() atn() 
      len() val() asc() str$() chr$() hex$() mid$() 
      ucase$() lcase$() right$() left$() field$() instr()
      eval() varptr() peek()  timer() date$ time$ pi
      +  -  *  /  mod  ^
      =   <>  >  >=  <  <=   and  or  xor  not
    Other special functions and commands:
      edit { line_number }
      dir	    : rem directory listing of .bas files
      removefile { filename$ }
      fn emailfile(address$, subject$, filename$)
      fn web(url$)	: rem launches Safari
      fn vibrate()
      fn solve1() : rem Newton-Raphson equation solver
      sound f,d,v : rem frequency, seconds duration, volume(0..99)
      morse m$    : rem plays morse code sounds 
      	      : rem morse string{,wpm{,vol{,dot_wpm{,freq_Hz}}}}
      fn fontsize(x)	:' changes console font size
      moveto x,y
      lineto x,y    :' draws a line to x,y
      fn linewidth(w)
      graphics color r,g,b
      graphics fillrect x1,y1,x2,y2
      graphics circle r  :' circle with radius r
      fn plot1()
      fn touch(0)	:' touch detect
      fn touch(1)	:' x location in graphics display
      fn touch(2)	:' y location in graphics display
      graphics cls  :' clears graphics display
      cls		:' clears both text and graphics
    On iOS AirPrint enabled devices, you can print by using:
      open "lpt1:" for output as #1
      close #1 : rem print starts after file close
    Hints, Notes and Limitations:
      String variable names must end with a
      $ character.
      Arrays must be dimensioned before use.
      Input is line input.  Only one variable
      is allowed per input statement.
      Function subroutines with return values are 
      not supported.
    New commands:
        edit .
        :' Allows multi-line program editing.
        graphics circle r
        :' Draws circle at previous moveto location
        graphics oval x1,y1,x2,y2
        :' Draws an oval within the bounding rectangle
        graphics text s$
        :' Draws string at previous moveto location
    New special functions and commands:
      dim a(8) :' create an array for GPS data
      fn location(1,a(0))
        :' Reads location in array a ( time, long, lat, alt, err )
        :' Returns time stamp (it's old data if unchanged)
      fn location(0)
        :' Stops GPS polling
      dim a(8) :' create an array for motion data
      fn accelerometer(1,a(0))
        :' Reads accelerometer into array a (time, x, y , z)
        :' Returns time stamp (it's old data if unchanged)
      fn accelerometer(0)
        :' Stops Accelerometer polling
      dim b%(65536) :' required recording array size
      fn recordaudio(64,b%(0))
        :' Continues filling array b% with PCM samples.
        :' Returns index of latest sample
      fn recordaudio(0)
        :' Stops audio recording
      sound -1, a%(), n, 44100
        :' plays n 16-bit PCM samples of sound from array a%
        :' Only the 44.1kHz sample rate is supported.
      fn say(a$)
        :' speaks the contents of a$ using voice synthesis
      :' Example for fetching text or HTML from a web URL
      :'   using HTTP:
      open "http://..." for input as #3
      fn lof(3) :' poll this function to wait for data
      rem --- when lof becomes non-zero:
      input #3, a$   :' input strings from HTTP result
      rem --- until eof(3)
      :’ Core Bluetooth LE/4.0 device access functions
      :'   It may be necessary to wait 1 or 2 seconds
      :'   between any 2 blte calls,
      :    or to repeat them to receive data.
      fn btle.init()
        :’ initializes Bluetooth LE/4.0 access
        :’ starts a BLE scan
        :’ returns 0 if the scan has started
      fn btle.list()
        :’ presents a list of discovered BLE peripherals
      fn btle.selected()
        :’ returns the UUID string for the selected device
        :’ returns the UUID of the nth listed device
        :’ returns the name of the nth listed device
      fn btle.rssi(n)
        :’ returns the RSSI of the nth listed device
      fn btle.connect(1,uuid$)
        :’ connects to a BLE device
      fn btle.connect(1,uuid$,service$,chctrstc$)
        :’ connects and requests a notification
      fn btle.request(1,service$,chctrstc$)
        :’ read request for a BLE characteristic
      fn btle.response$(1,a%(0))
        :’ the read data (if any yet) as a string
        :’ set to "" after the first read
      fn btle.responsedata(1,a%(0))
        :’ the byte count of the read data (if any yet)
        :' the bytes are return in integer array
        :'   with 2 bytes per array element
        :’ set to 0 after the first read
      fn btle.write(1,service$,chctrstc$,data$)
        :’ request a write to a BLE characteristic
      fn btle(9)
        :’ disconnects from BLE device
    Other special functions and commands:
      :' Built-in DSP functions
      fn fft1( 1, x(0), y(0), n )
        :' fft arrays x,y (real & imaginary vectors, length n)
        :' n must be a power of 2, array sizes must be >= n
      fn fft1(-1, x(0), y(0), n )
        :' inverse fft
    Use quotes around filenames with load/save.
    If you quit without saving a modified program,
    it's saved automatically in the file "tmp.bas". 
    You can use fn emailfile() to email programs
    and files to yourself to save them on your PC.
    Use 2 fingers to swipe sideways to toggle between
    full screen view and keyboard view.
    There are a few other, more advanced commands
    documented on the HotPaw website: 
    or type "help website" into the console.
    Disclaimer: These versions of HotPaw Basic are
    distributed in the hope that they might be
    not even the implied warranty of MERCHANTABILITY
    (There will be many bugs!)
    HotPaw Basic version 1.7.7 Release Notes:
    1.7.7   Updated for iOS 11 and the iPhone X. (b2112.1)
            Improved support for Accessibility Larger Text.
            Basic programs can now be downloaded using iTunes File Sharing,
                or via the iOS 11 Files app.
            Graphics drawing area is now limited to 80% of full screen.
            Bug fix for an occasionally missing "stop" button.
    	Bug fixes for Core Bluetooth background mode.
    1.7.5	Fix for a problem with utf8 quoted strings.
    1.7.4	Bug fixes for the iPad Pro and some of the built-in audio functions.
    1.7.2	Bug fix for printing on iOS 8. (b22605)
    	Bug fixes for new Core Bluetooth built-in functions.
    1.7.1	Added Core Bluetooth functions.
            Bug fix for running under iOS 6.
    	(b2606 x4)
    1.6.9   Bug fixes for the det function and graphics text command.
    1.6.8   Improvements for iPhone 6 and 6+.
            added fn touch(3) for touch time
    	- Removed Inter-App Audio synthesizer support.
    1.6.7	Bug fixes for iOS 8 and 64-bit processor (arm64) devices.
    	- Removed Audiobus support.
    1.6.6	Fixed missing numeric input issue.
    1.6.4   Edit fix, dir fix, added MIDI input support.
    1.6.3   Keyboard cursor keys fix.
    1.6.2	Updated for iOS7.
            Graphics bug fixes.
            Added a Keyboard toolbar.  
    1.6.1   Added the fn say() command to produce synthesized speech.
    	Added HTTP to file commands for accessing web site data.
    1.5.9	Enhanced support for iPhone 5 display.
    	Added Bluetooth keyboard full screen support.
    	Improved support for International/unicode strings.
    	Increased graphics window size.
    	Added half-pixel width line drawing for Retina devices.
    	Added graphics text and graphics oval commands.
    1.5.6   fixed built-in ipad fn location() documentation
    1.5.5	added functions for reading accelerometer and location
    	added a function to read mic input into an array
    	added a new edit mode
    	added the graphics circle command
    	fixed a matrix scaling bug
    1.5.3	added mat read command
    	fixed mat command matrix multiply
    	fixed a print tab() bug
    1.5.1	Universal/iPad iOS 4.x update
    Version 1.0.8(365b0i0) - original release
    Copyright 2008,2010,2012,2013,2014,2015 HotPaw Productions
    Portions Copyright 1994,2000 Ronald H Nicholson Jr.
    No warranty of functionality, fitness or
    usefulness for any purpose whatsoever is
  • Chipmunk Basic Language Manual - Those commands, statements, functions and operators which are supported by HotPaw Basic for iOS are identical to those of Chipmunk Basic.

Chipmunk Basic