Skip to main content

New Firmwares With New Features

Thanks to the help of Rafael Molina Chasserot some new features have been added to the TZXDuino and CASDuino firmwares which has freed up some memory as well, which may lead to more features being added in the future.
A percentage counter and a timer counter have been added to all screens so that you know how much is left of a file to play and how long it has taken to load.
The OLED1306 and PCD8544 use completely new routines for the firmwares saving a lot of memory.
Folder navigation is now different. Rather than using the Menu button on TZXDuino or the Stop button on CASDuino to return to the ROOT directory, if you press the stop button when no file is playing you will go up one folder only making it easier to navigate.


The TZXDuino has had a menu added so that MSX users can set the Baud rate of TSX files so that they can load faster than normal.
A few more emulator only IDs have been fixed so that they are skipped by TZXDuino.

CASduino has had a Baud Rate of 3675 added to its menu, which is the maximum speed an MSX can load from cassette.
CAS files should now run automatically on CoCo computers.

Here are some videos of the new firmwares in action.





TZXDuino 1.9 Here
CASDuino 1.17 Here
Libraries Here


  1. Hi,

    I have a question about the MaxDuino firmware which combines both TZXduino and CASduino features. Is it possible to program it? I have tried but alway get an error while sketch compiling.

    1. Only just found out about this comment, Sorry.

      MaxDuino is not supported by myself and is created by others using our code as the basis for it.

  2. Hello,
    I've uploaded this 1.9 firmware and everything is fine except my OLED1306 contrast.
    After update t is too low for me comparing to what I've had in previous firmware versions.
    Is there a way to set the contrast higher?
    If yes - which command / setting is responsible for this?
    Thanks a lot,

    1. 1.9 TZXDuino is a very old firmware. You should download the latest which is 1.15.1. You can find links to it on the latest post on this blog.

  3. Hi again,
    how can I add one line (line spacing) in OLED1306 display?
    I mean, after "Select File.." line I would like to have second line empty (line spacing) and then third line with name of the file to load.
    Default setting is: "Select File.." in first line and name of the file to load in second line - no line spacing between...
    Thanks a lot.

    1. I'm not sure if this would work but at the beginning you could add
      char line2[17];
      to the following

      #ifdef OLED1306
      char line0[17];
      char line1[17];
      char lineclr[17];
      char indicators[] = {'|', '/', '-',92};

      and then in the printtextF function change

      #ifdef OLED1306
      char* space = PSTR(" ");
      strncpy_P(lineclr, space, 16);
      if ( l == 0 ) {
      strncpy_P(line0, text, 16);
      } else {
      strncpy_P(line1, text, 16);


      #ifdef OLED1306
      char* space = PSTR(" ");
      strncpy_P(lineclr, space, 16);
      if ( l == 0 ) {
      strncpy_P(line0, text, 16);
      } else {
      strncpy_P(line2, text, 16);

      There may be issues with the printtext function though but as far as I know that is only used in the scrolltext function

      all you would need to do then is find the #IFDEF OLED1306 and scroll down to

      Like I say
      I'm not sure if that would work but in theory it should.

  4. > Buleste:
    thanks a lot, works like a charm! :)

  5. Buleste, one more question:
    - is there possibility to make the default font bold (or itallic)?
    Or maybe even to use completly different font?
    If yes - how to do it?
    Thank You! :)

    1. It is possible to change the font and add a new font but it is not easy and bigger fonts take up more memory and may mess up how the display shows things.

      If you look in the display tab you will see

      // Small 8x8 font
      const unsigned char myFont[][8] PROGMEM = {

      Followed by Hex code. You can find similar such listings in U8glib and others.

      As I say though, they will take up more precious memory.

    2. Well,
      I really don't know how to do it, too difficult for me...
      Where exactly can I find such hex font strings to make easy copy-paste?
      Is there any simplier way, maybe just to make deafualt fonts bolder?

    3. There is no simple way to do it and there is a reason as to why that font is used, it uses minimal memory.
      The only way to make the font bolder is to change the font used.

    4. Ok,
      I understand,
      but where can I find ready to copy proper HEX strings of different fonts, so I could paste them into TZXDuino sketch?
      Or do I need to use any converter?

    5. You can get the source for fonts from u8glib on Github.
      Unfortunately they are in decimal but the should still work.

  6. Just to be clear:
    1. I must add u8g.h file to sketch.
    2. Add #include "u8g.h" line to sketch
    3. Then copy all lines from (i.e) "u8g_font_04b_03.c" and paste it instead of original hex code after "// Small 8x8 font" description.
    If yes - it didn't work...
    Ok, I am complete noob, need short step-by-step guide, please...

    1. Don't add u8g.h

      I would leave small 8x8 font alone and call your font something.

      const unsigned char geloFont[][8] PROGMEM = {

      and then using the find tool replace myFont with geloFont. That way it's easy to correct any mistakes.

      After the const unsigned char geloFont[][8] PROGMEM = { you copy and paste the numbers.

  7. This method seems to doesn't work.
    If I just copy and paste the numbers, instead of any fonts I got strange glitches / dots / pixels on the display...
    Maybe those numbers must be grouped somehow?
    It's a pitty, that they are not in HEX... :(

  8. Ok,
    I've managed to:
    1. copy "ssd1306xled_font8x16" HEX text I found in "Google",
    2. changed the line "const unsigned char myFont[][8] PROGMEM = {"
    "const unsigned char myFont[][16] PROGMEM = {"
    The icons are now bigger, nicer, but there is only one half of their height visible…
    Do I need to make some more changes in the sketch to make them entire visible?

    1. As I told you it was not recommended because it is difficult.

      The display is set to display 16 columns and 8 rows and at the moment your font is only being displayed on one row but needs 2. You will need to adjust the code to display the full font.

      The library used for the 1306 is a common small library that is used by many projects. You should ask these questions on an Arduino or programming forum.

  9. This comment has been removed by a blog administrator.

  10. "You will need to adjust the code to display the full font".
    Ok, and could You tell me how can I do it, please?


Post a Comment

Popular posts from this blog

TZXDuino Firmware 1.16, 1.17, and an updated TZXDuino Instruction Manual

  TZXDuino 1.16 In TZXDuino 1.15.3 I added a bug that lowered the volume of some Spectrum TZX files and all ZX80/81 TZX, O, and P files so they didn't work for many people. I fixed this for 1.16. You can download TZXDuino 1.16 from here.   TZXDuino 1.17 The MAXDuino team added ORIC TAP playback functionality to their firmware which I have adapted to TZXDuino. I don't have an Oric Atmos to test it on so I have been recording the playback and loading on Oricutron and everything I have tried has worked. Obviously things may be different on a real machine. Team MAXDuino have also added a speed up function for Oric TAP files which I will add to TZXDuino 1.18 but so far I have been unable to get it to work correctly. You can download TZXDuino 1.17 from here.   And finally there is the updated instruction manual which now tells you how to access Turbo mode for the Electron, ZX80, and ZX81. It also says for Oric but that has not been implemented yet. You can download the pdf of v1.2 fo

And Now For Something Completely Amazing.

 When Andrew Beer and I came up with this idea the intention was for people to build their own and many people have but once in a while someone comes up with something so amazing it really needs to be shared. JamHamster came up with the idea of fitting a TZXDuino in a cassette. Originally it was powered by USB and had a 3.5mm Ear socket but it looked amazing. Then he added a battery so that it was self powered. Then he added a head from a CD to cassette adapter. Then he added a switch under that head so that when you press play on the Cassette Recorder it plays the file you've selected. And the TZXCassette was born Because he is a great guy he's also uploaded the instructions on how to build one to Github and you can download the instructions and build your own. Now at the moment there is no REM control it may not work as well with a CPC 464 as it does with with a Spectrum +2 but it is a stunning piece of electrical engineering and a work of art in my opinion.

Latest Firmwares

Whilst it may seem there han't been much going on in recent months we have been working behind the scenes on improving and adding more options to the various firmwares and trying to improve the hardware. The main difference with these firmwares is that OLED 1306 screens are now fully working on all of them and that the PCD8544 has added as a screen option. I will go into the hardware changes needed for that at a later date. ArduiTape 1.5 What's New Added support for the PCD7544. Download from here. CASDuino 1.15 What's New Improved support for CoCo and Dragon Added support for OLED1306 and PCD8544. Download from here. TZXDuino 1.8 What's New Added ID2A Added support for PCD8544 Download from here. TZXDuino 1.8.1 What's New TSX support for MSX TSX files added by Natalia Pujol. Not officially supported and any bugs should be reported to her. Download from here.