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
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
v0.9.11 released with much nicer icons and other improvements
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)
Fixed W Window system to build with latest Debian GCC and packaging tools
Hatari source repository switched from Mercurial to Git
Hatari v2.2.0/2.2.1 released
with a lot of small fixes and improvements
v0.9.10 released with largely improved disk handling performance and
Ported Hatari Python UI from PyGtk v2 to Gtk v2. Several Hatari
bug fixes and debugger improvements
Thomas added experimental SCSI emulation support and IDE
improvements to Hatari
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)
Added Gtk2 evaluation report to docs, and fixed links
Hatari v2.1 released
which adds full MMU support, cache emulation for 020/030/040/060,
changes mentioned below, and more
Implemented some Hatari debugger symbol handling improvements requested
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
- 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
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
released with GL 4.5 support, and Mesa moves to year based release
- 2017/01: Added support for both Python v2 + v3 to Hatari Python utilities
/ GUI (needed by few Linux distros)
v0.9.7 released with many additional desktop features,
a standalone version of EmuCON2, improved HW support and lot of
- 2016/11: Added dumb Videl address counter emulation to Hatari
(fixes several Falcon programs) + minor debugger improvements
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
released with GL 4.4 support
released with GL 4.3 support
v0.9.6 released with proper Atari TT support and many fixes
Did several minor fixes and improvements to Hatari debugger + test-case updates
Rewrote Hatari's TT palette handling to behave like real HW
(thanks to Roger's test programs + testing on real TT)
EmuTOS v0.9.5 released
Added Uwe's NatFeats SCSI drive emulation to Hatari
Hatari v1.9 released
released with GL 4.1 support
Completed EmuTOS Line-A drawing API support + fixed all known issues
Supported both oldUAE and WinUAE CPUs + TT-Ram in Hatari TOS bootup tester.
Rewrote CPU halt dialog
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
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)
EmuTOS moves (finally) from CVS to Git
Added multiple ACSI bus support for Hatari
EmuTOS v0.9.4 released
Did misc Hatari fixes + many documentation updates. Added script
for autorunning Atari programs with arguments (uses debugger to
inject arguments into program basepage)
BadMooD Beta released
Added TT-RAM support to Hatari SDL GUI (config dialog, statusbar)
Made minor improvements to Hatari harddisk image handling
Nicolas updated Hatari WinUAE CPU core: TT-RAM, 030 MMU and 060 work now!
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
BadMooD Beta optimizations by Doug
Hatari v1.8 released
Spent a week in London with Kirsi and my sister's family.
Following the paw prints of Paddington and visiting Harry Potter
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
Hatari statusbar improvements and misc fixes
EmuTOS v0.9.3 released
Hatari exception debugging support rewrite and Native Features
example / test code
BadMooD Alpha released
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).
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
Mesa v10.0 released
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.
Support for profiling loops (to optimize register waits and
DSP / CPU communication) and several debugger improvements
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
EmuTOS v0.9.1 released
Hatari v1.7 released
Hatari support for outputting backtraces while profiling.
Automated Hatari profiling support to Douglas' Quake 1 Atari port.
Many small fixes to Hatari in preparation for v1.7 release + some
documentation updates. Doom profiling improvements and some
optimizations to its startup.
Started as graphics performance engineer at Intel
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
for Hatari profiler and its post-processor, debugger section
is now >1/3 of the whole Hatari manual...
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,
found the cause and Douglas fixed the Doom sources.
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.
After many new features and bugfixes, Hatari profiler and its data
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
took only a couple of hours, but unfortunately Kcachegrind source
view doesn't handle TABs properly in the profile assembly data.
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
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.
information to Hatari emulator profiler output and
generation to its post-processor. Provided with it
of what calls are done and where the time goes on EmuTOS disk info functionality.
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.
Read about "Modern C++", re-learned C++ & Qt and wrote a Qt settings
editor and launcher for/included with my Mortar game.
Hatari debugger is used to debug issues with FPGA Atari implementation, and to
Doom for (16Mhz) Falcon by splitting the work appropriately between CPU and DSP.
Did a lot of Aranym testing, including running the
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.
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.
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.
Added "next" and "step" shortcuts and fixed a lot of (mostly corner-case)
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).
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.
Added sources for Python m68k instruction encoder and my old WWS Python
bindings to open SW page.
As Nokia is getting rid of even its remaining Linux operations,
I resigned from there and I'm now looking for a new job.
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
Built also a ColdFire version of Filler with latest
that is compatible with XaAES and fVDI, which Vincent kindly
verified to work on a FireBee.
Spent weekend and few evenings writing a simple new game for Atari
computers and emulators called Filler.
Some time went to debugging
button input handling bug I found in EmuTOS.
Spent a week driving around
with Kirsi and my sister's family. Some things that stuck to mind from the trip were:
The views on the country side around Scottland were memorable,
I hope to visit some of those places again, with more time.
- 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
- Climbing to the clouds at Ben Nevis
- 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
- Everything being deep-fried, even pizza and Mars bars.
- The large tide differences, causing hundred(s) of meters of revealed seabottom with beached boats.
PR1.3 software update for N9.
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.
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).
ARM Thumb support fixed in Functracer v1.4
by patches from Siarhei.
AHCC v4.10 gives
warnings for issues (taking address of syscall, nested comments)
for which I got in earlier version just mystery linker errors.
PR1.2 software update for N9.
v1.6 and v1.6.1 released with more accurate FDC emulation and 030 MMU emulation with WinUAE CPU core.
Hatari hosting moved from BerliOS to TuxFamily
as it was announced during fall that BerliOS will close down.
AHCC v4.8 with fix to
bus error and v_pieslice bug I've found with my EmuTOS VDI testers.
PR1.1 software update for N9.
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).
is finally in shops...
tracing release includes some Maemo (tracing) tools. For more details, see the
v1.5 is released with large improvements to debugger and sound emulation
+ optional WinAUE support for more accurate 030+ CPU emulation.
Nokia's best phone at the moment (and running Linux) is announced.
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).
Spent a week in
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:
- we toured several of the parks in Paris, the favorite being
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
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
AHCC v4.4 with preliminary ColdFire support and fixes to some
issues I've reported, is released.
Maemo5 is released.
Nokia's first Linux phone is announced.
v1.3.1 bugfix release.
- 2009/09: W Window System v1.4.5 released.
It's now Debian packaged, updated to build with GCC 4.x, terminals build
with Unix98 PTS, WLua interpreter builds with (latest) Lua 5.1 and manual
pages are added to all games & apps missing them.
- 2009/09: Nokia N900 running
Maemo 5 is launched!
released. It has major DSP emulation and internal debugger improvements +
many other improvements.
- 2009/08: Fixed GCC 4.x compilation warnings, added Debian packaging
and long-lost documentation to Clac.
- 2009/06: Added
breakpoints support to Hatari debugger. They work a bit like Gdb
watchpoints, but are for the emulated CPU + DSP registers and memory
- 2009/05: Moved Hatari UI code to
repo at BerliOS and updated it for Hatari v1.2.
- 2009/04: Gave
Maemo Open Source contributions
in St. Petersburg.
- 2009/04: Spent 10 days in
with Kirsi. We got over 600 photos, visited e.g. Harlem and the
Apollo theater, but skipped (the queue) for Statue of Liberty...
Favorite spots on NY:
- 2009/01: Hatari v1.2 released
Nokia 770 with OS2005 is released.
- 2005/5: Was at Guadec 2005 in Stuttgart.
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
- 2003/8: Documented
Scratchbox design and the problems it's aimed to solve
with Erik, Lauri and Veli.
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
- 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.
Had a presentation about
Cross-compiling Open Source in
- 2003/1: Wrote some code and animated POV models (dragon, cannon, zeppelin
etc) for Airstrike
- 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
- 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
- 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
- 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.
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.