We Don't Miss The Past

Writing an audio player in the classic Mac OS is rather unpleasant. All is well and good until the first time you click open a menu and the music stops playing in the background, and you suddenly have the sinking realization that because classic Mac OS only has cooperative multitasking, your audio player is not getting any processor time while the menu is held open.

Obviously this won't do, so you start modifying the code to run at "interrupt time" -- a privileged execution level where the OS can't neglect to run your code. Then you discover the joyous restrictions of working at interrupt time: no allocation, deallocation, movement or otherwise fondling of memory allowed. No calling into the operating system toolbox, which in turn means no filesystem access, limited network and sound output access, and absolutely no GUI updates. Oh, and do everything you need to do in the fewest number of milliseconds possible, otherwise the mouse cursor will start to chop-chop-chop around the screen.

One false move in interrupt time and, hey presto!, down comes the entire OS, and it's reboot time. I wonder how many times I had to reboot my Mac while writing Audion. Yikes. Thank the heavens for Mac OS X.

-Steven Frank