GoGo board Cricket Logo Implementation
BETA Version 0.91 
Last Update: Mar 23, 2004
This Cricket Logo interpreter has been re-written in PIC-C (from CCS). The VM size including the  original GoGo teathered-mode features is 5.3k. It has been tested with Logo Blocks and Jackal. The following list shows the byte codes that have been ported and their status.
Stuatus Code Description Note
Ok code-end terminates code.  
Ok byte pushes 16-bit number on stack. takes one immediate byte as number in code stream (resulting number is 16-bit representation of 0 - 255).  
Ok number pushes 16-bit number on stack. takes two immediate bytes as number in code stream.  
Ok list "start of list"; opens a code block  
Ok eol "end of list"; closes a code block  
Ok eolr "end of list reporter"; closes a code block that will return a value (e.g, for when, waituntil)  
Ok lthing "local thing"; uses stack frame to retrieve proc args  
Ok stop stops currently running procedure, returning control to caller  
Ok output stops currently running procedure, returning value to caller  
Ok repeat repeats block for specific number of times  
Ok if if input expression is true, executes block  
Ok ifelse if input expression is true, executes block1, else executes block2  
Ok beep causes Cricket to beep  
Not yet note makes Cricket play note of specified pitch and duration  
Ok waituntil repeatedly executes block until it evaluates to true  
Ok loop indefinitely executes block  
Ok wait waits for specified time period  
Ok timer returns value of free-running timer  
Ok resett resets free-running timer to zero  
Ok send sends specified value out IR port, with 0.1 sec trailing delay GoGo will send a 16 bit value through the serial port.
Ok ir reports value of most recently received IR byte Replaces IR with serial
Ok newir? reports whether IR value has been received since last call to "ir" Same as ir.
Ok random reports pseudorandom 16 bit value  
Ok + reports sum of two inputs  
Ok - reports difference of two imputs  
Ok * reports product of two inputs  
Ok / reports division of two inputs  
Ok % reports remainder of division of two inputs  
Ok = reports boolean equality of two inputs  
Ok > reports boolean "greater than" of two inputs  
Ok < reports boolean "less than" of two inputs  
Ok and reports bitwise/logical AND of two inputs  
Ok or reports bitwise/logical OR of two inputs  
Ok xor reports bitwise XOR of two inputs  
Ok not reports bitwise/logical NOT of two inputs  
Ok setglobal sets numbered global to value  
Ok global reports value of numbered global Crickets allow 16 global variables. Same for GoGo.
Ok aset sets numbered array with numbered element to value GoGo uses memory where Crickets store data recordings allowing larger array sizes. They can contain up to 1250 16 bit items. 
Ok aget reports value of numbered element of numbered array  
Ok record records 16-bit value into data buffer  *Since GoGo has 32K of EEPROM (Cricket has 4K), we have 26K for Data recording.
Ok recall reports 16-bit value stored in data buffer *the Cricket records and stores 8 bit values (not 16).
Ok resetdp resets data buffer pointer to zero
Ok setdp sets data buffer pointer to specified value (in 16 bit units)  
Ok erase erases data point  
X when sets up daemon with condition block and action block  
X whenoff terminates "when" daemon  
Ok a, selects motor A for control  
Ok b, selects motor B for control  
Ok ab, selects motors A and B  
Ok on turns on selected motor(s)  
Ok onfor turns on selected motor(s) for specified period of time  
Ok off turns off selectec motor(s)  
Ok thisway sets selected motor(s) direction to green LED  
Ok thatway sets selected motor(s) direction to red LED  
Ok rd reverses direction of selected motor(s)  
Ok sensora reports value of sensor A  
Ok sensorb reports value of sensor B  
Ok switcha reports boolean value of sensor A  
Ok switchb reports boolean value of sensor B  
Ok setpower sets power level of selected motor(s)  
Ok brake sets selected motor(s) for active braking  
X bsend sends value out Bus Port Will implement a version for I2C bus instead.
X bsr sends value out Bus Port and reports reply Same as bsend.
Ok c, selects bus motor C for control  
Ok d, selects bus motor D for control  
Ok cd, selects bus motors C and D for control  
Ok abcd, selects all motors for control  
X fastsend sends specified value out IR port without trailing delay  
Ok stop! terminates execution completely Untested
Ok eb "examine byte"; reports value of Cricket memory at specified address Untested
Ok db "deposit byte"; pokes byte into Cricket memory Untested
Ok low-byte reports low byte of input  
Ok high-byte reports high byte of input  
X = No plan for implementation