Open Source

Docs + other stuff

Atari, Hatari and games

Pages from last century

Links and trivia

oak (at) helsinkinet fi

News and History of things I'm (or have recently been) involved with


  • 2019/08: Added 32-bit Linux FB driver, libinput keyboard + mouse, evdev mouse support, and removed obsolete SVGAlib from the W Window system (WWS). First one is to help WWS testing on x86 Linux, input drivers to help getting it running on m68k Linux
  • 2019/06: EmuTOS v0.9.11 released with much nicer icons and other improvements
  • 2019/04: Added Linux Loader (LILO) support, improved RTC emulation and debugger backtrace support for Hatari. Latter makes sometimes debugging Linux kernel issues easier under Hatari than natively on x86. As result, found out that Linux relies on ignoring bus errors on certain situations, but 030 bus error handler didn't do that (which resulted in BUG / system hangs)
  • 2019/03: Fixed W Window system to build with latest Debian GCC and packaging tools
  • 2019/02: Hatari source repository switched from Mercurial to Git
  • 2019/02: Hatari v2.2.0/2.2.1 released with a lot of small fixes and improvements


  • 2018/12: EmuTOS v0.9.10 released with largely improved disk handling performance and other improvements
  • 2018/10: Ported Hatari Python UI from PyGtk v2 to Gtk v2. Several Hatari bug fixes and debugger improvements
  • 2018/09: Thomas added experimental SCSI emulation support and IDE improvements to Hatari
  • 2018/05: changed all Hatari output to have a suitable prefix and respect specified logging level, a huge reduction in output Hatari produces by default (a popular request)
  • 2018/03: Added Gtk2 evaluation report to docs, and fixed links
  • 2018/02: Hatari v2.1 released which adds full MMU support, cache emulation for 020/030/040/060, changes mentioned below, and more
  • 2018/01: Implemented some Hatari debugger symbol handling improvements requested by others


  • 2017/12: EmuTOS v0.9.9 released with VDI blitter support, additional desktop features, and a lot of bug fixes
  • 2017/11: Fixed Python 2 vs 3 issues in Hatari TOS bootup tester, and issues related to autoboot & resolution setting changes
  • 2017/11: Added a.out symbols support (contributed by Thorsten Otto) to Hatari debugger and did some other symbol handling improvements
  • 2017/10: Added CMake integration and fixes for Hatari PortMidi support (contributed by Jari Kleimola), which means that Hatari finally supports MIDI input/output on OSX and Windows
  • 2017/05: Re-factored Hatari virtual INF file / autoboot handling to provide modified version of existing INF file (instead of overriding it), support for overriding TOS resolution (for VDI emu) and to be able to autoboot progams also from other than GEMDOS HD emulated disks
  • 2017/04: EmuTOS v0.9.8 released with additional desktop features, improved Amiga support and a lot of bug fixes
  • 2017/04: Minor improvements to Hatari autoboot / GEMDOS HD emulation
  • 2017/02: Made fixes to Hatari virtual INF file / autoboot and error handling
  • 2017/02: Mesa v17.0 released with GL 4.5 support, and Mesa moves to year based release numbering
  • 2017/01: Added support for both Python v2 + v3 to Hatari Python utilities / GUI (needed by few Linux distros)


  • 2016/11: EmuTOS v0.9.7 released with many additional desktop features, a standalone version of EmuCON2, improved HW support and lot of bug fixes
  • 2016/11: Added dumb Videl address counter emulation to Hatari (fixes several Falcon programs) + minor debugger improvements
  • 2016/11: Hatari v2.0 released which enables SDL2 support / GL window scaling by default (fixes OSX performance issues) + uses WinUAE CPU also for ST/STE emulation
  • 2016/11: Mesa v13.0 released with GL 4.4 support
  • 2016/06: Mesa v12.0 released with GL 4.3 support
  • 2016/05: EmuTOS v0.9.6 released with proper Atari TT support and many fixes
  • 2016/04: Did several minor fixes and improvements to Hatari debugger + test-case updates
  • 2015/03: Rewrote Hatari's TT palette handling to behave like real HW (thanks to Roger's test programs + testing on real TT)


  • 2015/10: EmuTOS v0.9.5 released
  • 2015/09: Added Uwe's NatFeats SCSI drive emulation to Hatari
  • 2015/09: Hatari v1.9 released
  • 2015/09: Mesa v11.0 released with GL 4.1 support
  • 2015/08: Completed EmuTOS Line-A drawing API support + fixed all known issues
  • 2015/06: Supported both oldUAE and WinUAE CPUs + TT-Ram in Hatari TOS bootup tester. Rewrote CPU halt dialog
  • 2015/05: Added d-cache profiling, cache hit info and 'os_base' trace option to Hatari debugger. Support WinUAE CPU core in Hatari Python debugger GUI. Fix Hatari bugs listed in Debian bug tracker and debug symbol reading on Windows. Conditional breakpoint fixes
  • 2015/04: Added TT-RAM support to Hatari profiler and fixed debugger issues with it. Helper script for renaming files with long file names so that they work also under TOS + TT-RAM in addition to MiNT (fixes OpenTTD and ScummVm)
  • 2015/04: EmuTOS moves (finally) from CVS to Git
  • 2015/03: Added multiple ACSI bus support for Hatari
  • 2015/03: EmuTOS v0.9.4 released
  • 2015/01: Did misc Hatari fixes + many documentation updates. Added script for autorunning Atari programs with arguments (uses debugger to inject arguments into program basepage)


  • 2014/12: BadMooD Beta released
  • 2012/12: Added TT-RAM support to Hatari SDL GUI (config dialog, statusbar)
  • 2012/11: Made minor improvements to Hatari harddisk image handling
  • 2014/08: Nicolas updated Hatari WinUAE CPU core: TT-RAM, 030 MMU and 060 work now!
  • 2014/08: Added keyboard shortcut + joystick navigation, file selector sorting and UTF-8 to latin1 conversion to Hatari SDL GUI, MIDI tracing and 'reset' debugger command. Max provided code for mapping 8-bit file names between host and emulation
  • 2014/07: BadMooD Beta optimizations by Doug
  • 2014/07: Hatari v1.8 released
  • 2014/07: Spent a week in London with Kirsi and my sister's family. Following the paw prints of Paddington and visiting Harry Potter studios...
  • 2014/06: Added support for many new Hatari options to its Python/Gtk GUI, improved Hatari's Native Features support, debugger symbol type support and Hatari console
  • 2014/05: Hatari statusbar improvements and misc fixes
  • 2014/02: EmuTOS v0.9.3 released
  • 2014/01: Hatari exception debugging support rewrite and Native Features example / test code
  • 2014/01: BadMooD Alpha released


  • 2013/11: Found out that fixing broken thermostat for a fridgerator is surprisingly simple... Except for the problem of getting the capillary pipe attached properly back behind the cooling element (spend nearly 1/2 hour at that, with hands shaking at the end).
  • 2013/10: Hacky port of Douglas' Atari ST Doom-style rendering engine from GCC 4.x cross-compiler to native GCC 2.x (needed to disable a lot of inline asm with newer syntax), and some profiling/automation for that.
  • 2013/09: Mesa v10.0 released
  • 2013/09: Contributed support for most of Line-A functions to EmuTOS (included into EmuTOS CVS-20130925 snapshot). This allows many additional (old) games to work with it.
  • 2013/08: Support for profiling loops (to optimize register waits and DSP / CPU communication) and several debugger improvements to Hatari.
  • 2013/07: Spent a week in Barcelona with Kirsi and my sister's family. We had an apartment with a (shared) pool as we thought that children would like it. Whole week had hot weather, so it turned out that adults appreciated the pool too, after walking hours around the city...
  • 2013/07: EmuTOS v0.9.1 released
  • 2013/06: Hatari v1.7 released
  • 2013/06: Hatari support for outputting backtraces while profiling. Automated Hatari profiling support to Douglas' Quake 1 Atari port.
  • 2013/05: Many small fixes to Hatari in preparation for v1.7 release + some documentation updates. Doom profiling improvements and some optimizations to its startup.
  • 2013/05: Started as graphics performance engineer at Intel
  • 2013/05: Added support for building Douglas' Atari Doom I/II port natively with Vasm & GCC 2.95 and wrote some automated profiling for it. Fixed more profiler corner-cases and (finally) "finished" documentation for Hatari profiler and its post-processor, debugger section is now >1/3 of the whole Hatari manual...
  • 2013/04: Profiled Quake2 startup and Doom frame-rendering under Falcon emulation and found out that Vincent's MiNTlib (Atari libc) build is lacking symbols for the part taking over half of the CPU... After adding symbols manually and reading MiNTlib sources, I found the cause and Douglas fixed the Doom sources.
  • 2013/04: Added support for collecting accurate subroutine call costs to profiler as costs cannot be reliably calculated in post-processing. Fixed many (hopefully all) corner case issues in the CPU and DSP profiling functionality, added some minor post-processing features, and post-processessor installation to the system. Added symbol importing from DRI/GST format symbol tables in Atari binaries and some minor debugger features + fixes. Updated debugger and profiler documentation in Hatari manual.
  • 2013/03: After many new features and bugfixes, Hatari profiler and its data post-processor are starting to be pretty complete. Profiling data can be used e.g. to verify accuracy of rest of the emulator. Adding Callgrind format output to be able to view the profile data in Kcachegrind took only a couple of hours, but unfortunately Kcachegrind source view doesn't handle TABs properly in the profile assembly data.
  • 2013/03: Investigated Badmood (Doom I/II WAD BSP viewer for Falcon) MIDI player and came up with a MIDI format 1 to format 0 (i.e. from multi to single track) converter which produces MIDI files that this player accepts.
  • 2013/03: EmuTOS v0.9.0 released. It includes important improvements for emulator usage and a bug fix to a drawing bug for which I wrote a test-case. Did a lot of testing for it and contributed some doc update + code cleanup patches.
  • 2013/02: Added caller information to Hatari emulator profiler output and callgraph generation to its post-processor. Provided with it a graph of what calls are done and where the time goes on EmuTOS disk info functionality.
  • 2013/01: Added preliminary CPU cycles & cache miss support to Hatari profiler and wrote profiler disassembly post-processor which (with suitable symbol address information) provides function level information on executed DSP & CPU instructions, used cycles and CPU cache misses.
  • 2013/01: Read about "Modern C++", re-learned C++ & Qt and wrote a Qt settings editor and launcher for/included with my Mortar game.
  • 2013/01: Hatari debugger is used to debug issues with FPGA Atari implementation, and to optimize Doom for (16Mhz) Falcon by splitting the work appropriately between CPU and DSP.
  • 2013/01: Did a lot of Aranym testing, including running the latest m68k version of Debian, which is much slower than m68k Debian Sarge at boot & login. Boot is slow due to udev etc, login because PAM is now by default using sha512 instead of md5 for password encryption.


  • 2012/12: Updated versions of Clac and Mortar and found more issues with AHCC and VBCC C-compilers and their standard libraries. Some experimentation with LZO and LZ77 compression/decompression speeds on Atari.
  • 2012/11: Did lots of testing for the experimental standalone Atari TOS version of VBCC compiler (latest VBCC 0.9b release was built with GCC/MiNTlib, not by VBCC itself) and found several issues when it's run under TOS and several corner case issues with the compiler code generation. Provided a native C-build environment with AHCC and VBCC for Hatari on my Atari development page.
  • 2012/11: Added "next" and "step" shortcuts and fixed a lot of (mostly corner-case) Hatari debugger issues based on feedback from Frank Wille (VBCC compiler Amiga/Atari backend maintainer) and what I noticed while debugging Hatari GEMDOS HD emulation Pexec() bug reported by him. Made Hatari dissassembler selection run-time configurable (as UAE CPU core's internal dissassember and the default external disassembler have their own pros & cons).
  • 2012/10: Added separate page for my old Atari programs and moved Filler & PUNSSi info from open SW page to there. It has information and links to sources of also other older Atari programs I've ported to ANSI-C and newer compilers. I'm doing this to test new AHCC and VBCC C-compiler versions and their m68k/ColdFire support.
  • 2012/10: Added sources for Python m68k instruction encoder and my old WWS Python bindings to open SW page.
  • 2012/09: As Nokia is getting rid of even its remaining Linux operations, I resigned from there and I'm now looking for a new job.
  • 2012/09: Debugged issues Filler has with multitasking AES (mainly XaAES / fullscreen) and fVDI VDI replacement (drawing operations), reported bugs on them on the MiNT mailing list and added workarounds for them to Filler code. Built also a ColdFire version of Filler with latest AHCC that is compatible with XaAES and fVDI, which Vincent kindly verified to work on a FireBee.
  • 2012/08: Spent weekend and few evenings writing a simple new game for Atari computers and emulators called Filler.
    Some time went to debugging evnt_multi() button input handling bug I found in EmuTOS.
  • 2012/07: Spent a week driving around Sottland with Kirsi and my sister's family. Some things that stuck to mind from the trip were:
    • The rented car's tire breaking completely, less than 2 miles out of the Airport. At night. When my sister had a flu bug and was vomiting.
    • The tropical paradise looking, but really cold beach at Fraserburgh.
    • Climbing to the clouds at Ben Nevis mountain.
    • In Oban, the children's chocolate making course (on which I acted as interpreter for my nieces, aged 8 and 10) and the fresh plate of langoustines later in a seafront restaurant. The crustacean put up a fight, but I finally won it with only minor casulties...
    • Everything being deep-fried, even pizza and Mars bars.
    • The large tide differences, causing hundred(s) of meters of revealed seabottom with beached boats.
    The views on the country side around Scottland were memorable, I hope to visit some of those places again, with more time.
  • 2012/07: PR1.3 software update for N9.
  • 2012/06: Hatari v1.6.2 released with a boatload of fixes all over + support for Videl borders. My TOS (bootup) tester supports now all TOS versions and Hatari HW configurations.
  • 2012/06: EmuTOS v0.8.7 released with resolution switching and full TT + Falcon XBIOS support. It also fixes a large number of VDI rendering and crash issues (for which I've written test programs).
  • 2012/05: ARM Thumb support fixed in Functracer v1.4 by patches from Siarhei.
  • 2012/04: AHCC v4.10 gives warnings for issues (taking address of syscall, nested comments) for which I got in earlier version just mystery linker errors.
  • 2012/02: PR1.2 software update for N9.
  • 2012/01: Hatari v1.6 and v1.6.1 released with more accurate FDC emulation and 030 MMU emulation with WinUAE CPU core.


  • 2011/12: Hatari hosting moved from BerliOS to TuxFamily as it was announced during fall that BerliOS will close down.
  • 2011/11: AHCC v4.8 with fix to bus error and v_pieslice bug I've found with my EmuTOS VDI testers.
  • 2011/11: PR1.1 software update for N9.
  • 2011/11: EmuTOS v0.8.6 released which is VFAT compatible and fixes serious VDI arrow mis-drawing/crasher bug (for which I provided a minimal test-case as it was triggered by several nice GEM games).
  • 2011/09: N9 is finally in shops...
  • 2011/08: Ubuntu/Linaro tracing release includes some Maemo (tracing) tools. For more details, see the blueprint.
  • 2011/07: Hatari v1.5 is released with large improvements to debugger and sound emulation + optional WinAUE support for more accurate 030+ CPU emulation.
  • 2011/06: N9, Nokia's best phone at the moment (and running Linux) is announced.
  • 2011/06: AHCC v4.5 and v4.6 Atari C-compiler versions with completed ColdFire instruction set support and fixes to additional issue I had + atan2 from pmlib (which I needed to build Ballerburg with AHCC).
  • 2011/04: Spent a week in Paris with Kirsi. This time we got only few hundred photos. The best of the traditional tourist places were the ones with the most memorable architecture or statues: Additionally:
    • we toured several of the parks in Paris, the favorite being Buttes Chaumont with its children's Easter egg hunt and hills...
    • The most memorable thing from the Arc de Triomphe were the police with their submachine guns and from Champs-Élysées, the luxory Macaron shop and the amazingly long queue in front of the Luis Vutton shop (personally I wouldn't buy anything that expensive if I would need to queue for it)...
    • Best food on the trip we ate in restaurant L'Avant-Goût!
  • 2011/02: AHCC v4.4 with preliminary ColdFire support and fixes to some issues I've reported, is released.







  • 2005/11: Nokia 770 with OS2005 is released.
  • 2005/5: Was at Guadec 2005 in Stuttgart.
  • 2005/5: Nokia 770, Nokia's first Linux based internet tablet, is announced.
  • 2005/4: Gramps v2.0 is released.
  • 2005/2: Added a couple of new screen update modes to Mortar game source code: either blit each updated screen area separately or coalesce successive regions together if they overlap. Earlier there was just max. updated area rectangle.
  • 2005/1: Major update to the Gramps statistics chart plugin. Takes advantage of the report plugin API rewrite discussed with Alex Roitman.


  • 2004/10: Fixed compilation warnings in W window system and Makefile bug in the Wyrms W game.
  • 2004/9: I created a bar graphics statistics report plugin for Gramps.
  • 2004/7: I translated Gramps, the Gnome genealogy program to Finnish.
  • 2004/5: Mortar updated. Nicer wind meter, frame time fix (game speed / CPU usage fix for fast machines).
  • 2004/4: Thomas Huth kindly cross-compiled PUNSSi for Atari, so that I could include the binary with PUNSSi source code.
  • 2004/3: Did some performance improvements for sound to the Hatari Atari ST emulator + minor code cleanups. I've heard that Hatari can be used with sound on some PDA machines, e.g. on Sharp Zaurus.
  • 2004/2: I found the code for my PUNSSi game from one of my old Atari floppies, so I put it up here. I also added links to Solarwolf graphics I've created (both of these things are under GPL).


  • 2003/8: Documented Scratchbox design and the problems it's aimed to solve with Erik, Lauri and Veli.
  • 2003/7: Scratchbox, a toolset & environment for cross-compiling whole Linux distributions (based on ideas in the FOSDEM presentation below) gets its own www-site.
  • 2003/6: Mortar has new cannon and shot images and some Makefile improvements.
  • 2003/5: Added SDL backed to W Window System, updated W-Lua interpreter to Lua v4 and updated the HTML documentation to current state. W toolkit is now in the same package with the rest of WWS.
  • 2003/3: Had a presentation about Cross-compiling Open Source in FOSDEM 2003.
  • 2003/1: Wrote some code and animated POV models (dragon, cannon, zeppelin etc) for Airstrike game.


  • 2002/9: Made a lot of sounds with Spiral Synth.
  • 2002/7: Validated and uploaded the poems page from my archives.
  • 2002/6: Uploaded my script (shell, python etc) collection.
  • 2002/5: 16-bit framebuffer support added to Mortar.
  • 2002/4: Naputus, my first PyGame program.


  • 2001/10: Public version of the GTK Toolkit v1 Evaluation document.
  • 2001/10: SDL/SDL_mixer port of Mortar game. Game images can now be compressed.
  • 2001/9: Moved from Adcore to Movial.


  • 2000/10: Added preliminary Lua bindings to WWS (Lua is one of the smallest script languages and can be programmed in OO-style) for Wlib and W toolkit.
  • 2000/7: WWS wterm color attribute handling is fixed (by Benjamin Sittler) and there are some minor fixes and updates to makefiles and sources.


  • 1999/10: Frank Wille brought W window system Amiga NetBSD port upto date.
  • 1999/9: Amiga port of Mortar game.
  • 1999/5: WWS has now separate key press and release events. I needed this for the W port of Heretic. MacMiNT port of W (by Jonathan Oddie).
  • 1999/3: Faster GGI version of Mortar game.
  • 1999/1: Wt support for W special keys (arrows etc).
  • 1999/1: x86-linux FB/GPM support for W.


  • 1998: I'm now the W Window System and Wt maintainer. For more information on WWS, see my historical pages.
  • 1998: W, GGI, FB and TOS version of the Mortar game with GSI sample and midi playing support.


  • 1997: Started working at Netmill doing www-sites with PHP and SQL on top of LAMP stack. (Netmill was later bought by a Swedish technology company called Information Highway which after several other purchases and a merger with a Danish consultation company and changed its name to Adcore.)
  • 1997: Wlib palette, image block handling and font handling completed with appropiate server modifications. All Wlib functions have now manual pages. W linux version works now also on x86.
  • 1997: Ported the Mutt language and text editor (ME) v3 to Linux. I had used a GEM version of ME2 on Atari and wanted to use ME on Linux console too...
  • 1997: PUNSSi game got rewritten 680x0 asm-code for the keyboard handler, which can now emulate joysticks.


  • 1996: W window system v1 releases 2/3 (resizable windows, clipping, polygons, color, GCs and graphics modes) from Tesche. W toolkit and Wetscape browser from Kay. Made networked board game framework and did a couple of games for W and Wt.


  • 1995: Created PUNSSi, my first arcade game for Atari. Multitasking friendly, supports joystick and works in the monochrome mode. I even got a postcard for it from overseas.
  • 1995: Updated version of Clac calculator (with readline and Atari GEM user interfaces). Used it in testing two new free Atari C-compilers. Clac GUI popup code is used in the Mgif graphics manipulation program which included convolution filters, DSP code etc. before any other Open Source image viewer / editor I know of.


  • 1994: Made ST-Guide hypertext versions of some of the project Gutenberg texts and Alko's Cocktail Guide.
  • 1994: Clac command line calculator is created. A simplified version of it is included as a column filter for Edith, a commercial programmer's text editor for Atari. A message passing version of Clac for MiNT.

Even earlier

Wrote a midi player, sound synthetizer and ASCII graphics editor in GFA Basic for Atari ST. Sound synthetizer had some supporting assembler code to actually create the sounds fast enough according to what user had selected in the GUI.

Copyright © 2001-2017 by Eero Tamminen

Valid XHTML 1.0!