Ardutosh - Classic Macintosh style desktop environment

You could do a lot of fun stuff if some sort of interpreter/virtualmachine is embedded. You could run virtual code (like CHIP8) or a script (like BASIC / lua) from external flash

1 Like

Flash space was almost entirely used for this. I had to shuffle some code around so that I could keep under the limit and have all the features I wanted.

Would be interesting to see a VM byte code / interpreted language that could run using the flash mod. It should be relatively straightforward to make my interactive fiction engine run with a flash mod but the instructions for that VM wouldn’t really suit this.

The instructions from my unfinished ShouHon project would.
They’re (mostly) stack based and designed more like standard CPU instructions with a few visual novel specific add-ons.

(The Break instruction could be used for yielding control to the UI and the End instruction can terminate the program.)

As I said back then:

My main obstacle (other than allocating the time) is/was that I still find uploading data to the flash chip and coordinating that data with the corresponding program to be rather awkward.

I have an idea for you @jhhoward , you could give us different versions of the software. e.g. a productivity one with apps like calculator and calendar and a word processor or a gaming version with some popular game like tetris or 2048. Btw you can add fullscreen for some apps like calendar and EEPROM manager and also a shutdown where after closing windows and cleaning up RAM, you could display the nostalgic message, ‘Your Arduboy is safe to be powered off’.


Lol, see what happens when you start making things.


Entirely doable, but really starts to not be much fun with our memory constraints. Now talking about this sort of thing on say a SAMD51 where you can actually run programs from RAM and protect different zones of memory starts to be a LOT more interesting.

1 Like

This program is very good. It would be better to add auto loading game application

Hello everybody! This Ardutosh is super amazing! Thank you very much. I’m actually edit the source code a little for using my arduboy with cnc controlled laser, so I edit the code for Joystic like this


so I just replace the KEY_*_ARROW with the keys I needed for lasergrbl software. So the question is:
how to make a condition: if I pressed two buttons at the same time (with the short delay about 100 - 200ms I guess) on my arduboy (left + up for ex.) then keypress ‘Q’. Thank you very much for suggestions!
BTW: That will be fun if the user will be able to assign specific output in the joystick mode!

If controlling your laser is the only thing you want to do then you don’t necessarily need Ardutosh to be able to do that, you can just use the Arduino Keyboard.h library directly.

Pressing two buttons at the exact same time is unlikely,
it’s more likely that a frame will have passed by the time you press the second button,
so you probably want something more robust like:

  • A list of commands that you can scroll through
  • The ability to reassign buttons
  • A button to hold that indicates that you’re entering a command that can then be released to send the command.
    • E.g. Press B -> Press Left -> Release Left -> Press Up -> Release Up -> Release B results in'Q'); Keyboard.release('Q');. (B is the ‘command button’.)
1 Like

DUDE This is awesome! I even got to play roblox with it! I was just wondering how to change what the inputs do for the gamepad?

1 Like

Have a look in the main sketch file in the loop() function inside the if(remoteGamepadEnabled) block

You can change the bindings there

So I looked up the documentation for the keyboard, and i couldn’t find anything that specifies how you call each key… what should i put in there if i’m trying to change one to the E key?

Should just be:‘e’);

1 Like


Love your work on this desktop environment, I will love to integrate it in the GUI explorer of this:

My boot-loader already eat 31KB of ROM, but never mind, I can increase the available ROM to 64KB to accommodate this desktop environment :smiley:

This little program dramatically exceeded my expectations. I figured it would be something novel to check out that I’d never use again. This program is deceptively packed with features that are largely separate apps when done by other people. Accessing all of the features with the “Mac” interface was intuitive. I just loved this and will be using it often.


Welcome @PhoenixDowner to the community! :tada:
Also, thanks for reminding me how awesome this little app is. :slight_smile:


Thanks so much. I’ve been wanting to learn to program from a long time, but there is so much out there it was hard for me to find a direction. The Arduboy is quite on point in that regards. I began making a Game Boy game using GB Studio. I ran across this platform by accident when looking up where to buy the Micro Arcades because my nickname is Dig Dug in some circles (gardening joke). I haven’t decided if I am going to continue using GB Studio while learning this, or just move the project to Arduboy completely. Anyways, talking out loud and kind of rambling.

Yeah, I was just casually checking it out for the novelty factor. I wasn’t expecting it to be actually useful. Seems to be a good way to get the RGB values for the LED lights. I want to experiment with a game design that utilizes that in some way without being obnoxious. I knew there was other programs to use the Arduboy as a controller, but I will be using this one knowing it is baked in. I intend to use the Arduboy for my speedrunning controller for Game Boy games.


There’s also the RGBled sketch included in the Arduboy2 library examples.
File > Examples > Arduboy2 > RGBled

1 Like

Thank you for pointing me in that direction. My experience with programming is marginal. I just so happen to be looking at libraries now and figuring out how they are organized and how to understand them. Much appreciation.

1 Like