A Simple Operating and Learning Environment to learn programming
SOLE 64 is a starting point for those wanting to learn programming. It is designed to help you learn the basics of computer programming through examples, experimentation and creation of your own programs.
- Works offline
- Program games and other applications that use text and graphics
- Save your programs online to back them up and share with others
- Use the Three.js 3D rendering library to create simple shapes
- Built-in lessons to help you get started
- Built-in user guide for reference
- Free email support (just email firstname.lastname@example.org)
To get started, boot it up and type the following and then hit enter.
This will print out some text. You can load up an example by typing the following in and hitting enter:
Or try the guess program or circles program:
Once you load a program, type 'run' and hit enter to run the program. Type 'list' or 'ls' to view the lines of code in the program. (Note, you will need an internet connection to load these programs.)
To save a program to your computer for offline use, type
and hit enter. You can load it later like this:
Or view a list of the programs you have saved to your computer by typing 'load' and hitting enter.
If you need help when you're using SOLE 64, simply type 'help' and hit enter. You can also jump right to a programming topic by entering the topic after the word 'help', like this:
You can also type in 'learn' and hit enter to see a list of available lessons that might help you get going.
If something is broken for you or you need help, send an email to email@example.com
I am more than happy to help with any questions you have.
- Fix double entering of key strokes and an issue with saving settings locally
- Fix black screen when opening hopefully for chrome 22 and 23
- Fix black screen freeze when opening
- If you are having crashing issues, make sure you are upgraded to the latest Chrome (currently 21)
- Less of 'READY.' and lots more lowercase text (works out better with the text-to-speech)
- More simple commands: removed double quotes (") from most commands, so save "program" is now just save program. Or loading a remove program is now just: load sole64@cube
- Cleaned up some of the code for my own sanity
- On screen resize, 3D graphics context resets and resizes
- Use ctrl-d to remove a line (deletes text, then removes line when no text is left)
- Undo (ctrl-z) and redo (ctrl-y). This is on a per-line basis, so each line remembers its own undo/redo history
- Added in support for Three.js to create simple shapes. See the cube, sphere, and cylinder commands.
- Also fixed various bugs, paging up and down, page refresh, go to top and bottom (with home and end keys).
- Removed the commands for moving around canvas drawings. I couldn't figure out an easy way to do it that fit the style of SOLE 64. And animation can be achieved better with Three.js and the new startAnimation() feature.
- Changed the previous canvas drawing commands. circle becomes paintCircle, path becomes paintPath, etc. Also, to set color, use setPaintColor() instead of setColor, because the 3D drawing uses the setColor now.
- Added in lessons (type 'learn' and hit enter)
- Fixed an issue with highlighting when selecting text
- experiment with more tts (you can poke tts_enqueue and tts_rate)
- input command can now include text, like input(callback, 'What is your name?')
- Change default theme to terminal instead of c64
- Files now have file type (PRG for program, DAT for user date)
- poke the blink rate with poke('blink_rate', 500) where 500 is the number of milliseconds between blinks.
- You can now move the cursor to previous lines, hit enter, and execute that line. Very useful thing.
- stop command, which does what the CTRL-q shortcut does, stopping any programs running.
- New circlef method to draw a solid circle (filled with color set with setColor)
- oval method to draw ovals
- ovalf method to draw filled ovals
- setLineWidth to set the width of the lines you draw
- remove width parameters from line, aline, and path; use the new setLineWidth method
- BIG CHANGE: when defining and ending functions, the >> has been changed to DEF and the << has been changed to END. I think this is much more readable and makes for less messy code.
- Warn when you create a function with the same name of a reserved word. Meaning: if you create a function called "circle" you will be warned, because that function already exists in the system (it's built in).
- Line spacing tweaks
- Use shift-enter to not process a line of code
- shift-space for marking the beginning of a copy/cut operation is changed to ctrl-shift-space (I was accidentally hitting shift-space too often).
- cut/copy/paste - Use Ctrl-space to make, move cursor with arrow keys to highlight the selection, then use Ctrl-x to cut ot Ctrl-c to copy, and then Ctrl-v to paste.
- Also copy a line anywhere in the window by holding the Control (Ctrl) key and click the line you want to copy. Then Ctrl-v to paste that line where your cursor is.
- List all remote files from a specific author (load "sole64",9)
- Remove a remote file (remove "roger@myfile",9). This requires a password.
- Fixed an issue that didn't allow user input with the "input" command
- New print buffering, so listing out really big files is faster (doesn't lock the browser up).
- Set the default font size to 14 (from 16) for all themes
- Gave each graphics shape (circle, line, aline, path) it's own color, so now when you do setColor('blue') it will only apply to the next shape you draw and it won't change all the current shapes.
- New graphics: line, aline, and path
- line(100, 100, 200, 300, 1) - a line defined by starting and end points.
- aline(100, 100, 20, 55, 1) - a line defined by center point, length, angle and width.
- path([[100, 200], [200, 50]], 1) - A series of lines defined by a list of points and a width.
- Changed default font to Cousine. This is an okay-looking font and works really well on chromebooks.
- def command. Start a function by using the def command (def newfunc) to quickly get started creating a new function
- experimental graphics functions. You can create a circle like this: circle(100, 100, 10), which will create a circle at location 100, 100 with a diameter of 10. You can also move that circle like this: move(circle(100, 100, 10)).to(500, 200, 2000) which will move the given circle to location 500, 200 and that animation will take 2000 milliseconds (or two seconds). You can also set circle to a variable and pass it into the move command. Again, this is all experimental, so use at your own risk.
- delay function. You can now set a piece of code to execute after a certain period of time, like this: @3000:print('hi'). This will print 'hi' after 3000 milliseconds (3 seconds). This should be most useful for the graphics animations.
- include command. You can include one program in another program, to share functions, etc. For example, in your program code do this: include('myOtherProgram')
- Easily load list of programs by typing just 'load' instead of the longer: load "$"
- Remove local files with the remove command. (e.g. remove "myFile")
- I changed ALT-whatever to CTRL-whatever, as Chrome OS had already taken a lot of the ALT-whatever keyboard shortcuts. So to delete a whole word ALT-backspace is now CTRL-backspace.
- Some help for those who can't connect--at least now the app will function better
- You can now re-size the browser window and sole 64 will re-size along with you.
- Now when sole 64 analyzes your code to finding matching function opening and closings, it won't choke up the program. This is especially useful for programs with lots of lines of code.
- Download file works (device 7), For example, save "file",7. And to load, drag the file onto the SOLE 64 window.
- Saving locally works more consistently now. (Edit: or not... grrrrr)
- Added random and range functions. Now you can do things like random(1, 10) or range(1, 10) or range(1, 10, 2). See the help docs for more info.
- Still trying to figure out why saving locally stopped working
- Fixed problem with saving to local computer (save "myfile")
- Full support for saving to cloud (save "roger@myfile",9)