systemless 0.8.3

High-Level Emulation for classic Macintosh applications
Documentation
# Changelog

## [0.8.3]https://github.com/benletchford/systemless/compare/v0.8.2...v0.8.3 (2026-07-29)


### Bug Fixes

* render generated RGB pixel patterns in color ports ([5afe04d]https://github.com/benletchford/systemless/commit/5afe04d8c916f2c775d7655054a188936c1fbd44)

## [0.8.2]https://github.com/benletchford/systemless/compare/v0.8.1...v0.8.2 (2026-07-28)


### Bug Fixes

* honor MakeRGBPat colors in FillCRect ([#128]https://github.com/benletchford/systemless/issues/128) ([7f50f52]https://github.com/benletchford/systemless/commit/7f50f527dd619eddd6ebe307919aca5f321a9ed9)
* implement Pack4 binary-to-decimal conversion ([#126]https://github.com/benletchford/systemless/issues/126) ([3623732]https://github.com/benletchford/systemless/commit/3623732d066b75c786c204ed1654db2c6bb9c023)
* resolve legacy PBCreate through working directory references ([#124]https://github.com/benletchford/systemless/issues/124) ([185b8c5]https://github.com/benletchford/systemless/commit/185b8c583287a2588b094e4e31f991f78f59b95e)
* treat nonzero control visibility values as visible ([#122]https://github.com/benletchford/systemless/issues/122) ([133c00a]https://github.com/benletchford/systemless/commit/133c00ac4b7b7248575a7b24248f6a0b0e2f58c7)

## [0.8.1]https://github.com/benletchford/systemless/compare/v0.8.0...v0.8.1 (2026-07-28)


### Bug Fixes

* accept a Pascal BOOLEAN parameter in either byte of its stack slot ([#114]https://github.com/benletchford/systemless/issues/114) ([d4ea0f5]https://github.com/benletchford/systemless/commit/d4ea0f5f9f3e8437d3346f57ba1138a6490d8b25)
* preserve Sound Manager Pascal callback and dispatch frames ([#120]https://github.com/benletchford/systemless/issues/120) ([a89d233]https://github.com/benletchford/systemless/commit/a89d233a75b2cde2c964f7be61b76b5583bef70a)
* resolve control title ink against the live device colour table ([#119]https://github.com/benletchford/systemless/issues/119) ([c804e91]https://github.com/benletchford/systemless/commit/c804e91b5524a183dad2ce89fa6afdb194a09218)

## [0.8.0]https://github.com/benletchford/systemless/compare/v0.7.1...v0.8.0 (2026-07-27)


### Features

* implement the full Thread Manager selector table for cooperative threads ([0545f62]https://github.com/benletchford/systemless/commit/0545f62de193dbb2d4c1cf8279083243e1246cc3)

## [0.7.1]https://github.com/benletchford/systemless/compare/v0.7.0...v0.7.1 (2026-07-27)


### Bug Fixes

* activate queued launches when caller exits ([0b8c40a]https://github.com/benletchford/systemless/commit/0b8c40a1890714df2e05d53b9fed44d48eb7f2c6)
* correct sound doubleback argument order ([f390999]https://github.com/benletchford/systemless/commit/f39099990f19c64e90c297c1d584a900e0d0ef64)
* deliver asynchronous file read completions ([49759a4]https://github.com/benletchford/systemless/commit/49759a4ffb1e2eeea5983f1de3a56a8942ab4e67)
* honor ShieldCursor intersection visibility ([b27a3f3]https://github.com/benletchford/systemless/commit/b27a3f386ab7c9c214c343a0574631d531bb5b11)
* initialize QuickDraw cursor vectors ([5117ad4]https://github.com/benletchford/systemless/commit/5117ad435dedb15959dd87dc3e9e30518c77fc19)
* initialize shield cursor vector ([66faeef]https://github.com/benletchford/systemless/commit/66faeef1fe7af40f6254fa8b552d172c00e2fde6)
* initialize show cursor vector ([0670e85]https://github.com/benletchford/systemless/commit/0670e85fa26924cbd822bde50f4a433e06491829)
* initialize swap mmu trap vector ([b3395ae]https://github.com/benletchford/systemless/commit/b3395ae23e5e125000268fd5ec9d3cfb04214587)
* interleave sub-vbl timer callbacks ([0d3a3fe]https://github.com/benletchford/systemless/commit/0d3a3fe2e8e87c4051f71a066f85967ab5c94b25)
* isolate sound callback trampolines ([3c08c52]https://github.com/benletchford/systemless/commit/3c08c523978e2cb92c0e4e2378750d8976d02e22)
* **memory:** keep application allocations inside the zone boundary ([76dbf1e]https://github.com/benletchford/systemless/commit/76dbf1e0f5f8c29effd33b8f695b78a2317780c1)
* pace self-reprimed timer tasks ([48494fb]https://github.com/benletchford/systemless/commit/48494fb274f846e23e2459a69b245c881bb6773a)
* preserve concurrent timer callbacks ([69e6402]https://github.com/benletchford/systemless/commit/69e64027a54bbef4808c6791023d869ff082ec55)
* preserve sub-vbl timer deadlines ([284495f]https://github.com/benletchford/systemless/commit/284495f9361699a4f3a8cb26d5cd263143d7ed4c)
* prioritize overdue timer callbacks ([95fad8f]https://github.com/benletchford/systemless/commit/95fad8fed3ef017e74469e7adc9b0ddbce6d7a28)
* **quickdraw:** support packed indexed CopyBits sources ([d211fa4]https://github.com/benletchford/systemless/commit/d211fa4202d73d883c1ab991bb16a38549d76ecf)
* resolve menu definition procedure handles ([25f7829]https://github.com/benletchford/systemless/commit/25f7829412190352ff4dbac737b399fd0b145d6e)
* stabilize centered fullscreen margins ([f5fffd0]https://github.com/benletchford/systemless/commit/f5fffd0696ae6262485553a3ca9ae23bf9c7293e)
* **window:** expose the legacy window manager port layout ([dcac552]https://github.com/benletchford/systemless/commit/dcac552bc0d1956c893c5b8e330463d2b4bd731e)

## [0.7.0]https://github.com/benletchford/systemless/compare/v0.6.0...v0.7.0 (2026-07-26)


### Features

* add cooperative Thread Manager support ([04348cd]https://github.com/benletchford/systemless/commit/04348cde025509160b5becbec81061b7dff3262f)


### Bug Fixes

* terminate indexed volume enumeration ([40bd9a3]https://github.com/benletchford/systemless/commit/40bd9a3124a4dc297b039a0fba8c67dac84c27d8)

## [0.6.0]https://github.com/benletchford/systemless/compare/v0.5.0...v0.6.0 (2026-07-26)


### Features

* **macos:** mirror guest menus in the menu bar ([c27d671]https://github.com/benletchford/systemless/commit/c27d6716afb4d6981629d980620bcab38b62f918)


### Bug Fixes

* **gui:** derive viewports from guest-drawn frames ([9ab5281]https://github.com/benletchford/systemless/commit/9ab528128b5d5fb91f7e7522aa34bf54cff19694)
* **quickdraw:** frame complex regions as outlines ([67d69dd]https://github.com/benletchford/systemless/commit/67d69dd8725424767948d3a370b6f985687bdee5)
* **quickdraw:** honor application bitmap fonts and face widths ([cbd7f67]https://github.com/benletchford/systemless/commit/cbd7f67f1e443f18361e70ef6672830218d2606a)
* **quickdraw:** implement SetPortPix for color ports ([d704cc5]https://github.com/benletchford/systemless/commit/d704cc532b526b0b59ceeee44191decd89337b78)
* **quickdraw:** preserve destinations in colored OR modes ([7b0dde1]https://github.com/benletchford/systemless/commit/7b0dde1b8fdfa2aaa63bf0d9365890449019e048)
* **quickdraw:** preserve polygon boundaries in regions ([00026af]https://github.com/benletchford/systemless/commit/00026afbe257d78ea1aa6793fe628dbafeafe49d)


### Performance Improvements

* **macos:** stage only visible guest framebuffer rows ([ce355f9]https://github.com/benletchford/systemless/commit/ce355f9f69045444c5a0edd494aad55033c832fe)
* **runner:** fast-forward signed TickCount waits ([c42dbb3]https://github.com/benletchford/systemless/commit/c42dbb368787ecbab1a5674b3fa6701509b7f3f9)

## [0.5.0]https://github.com/benletchford/systemless/compare/v0.4.2...v0.5.0 (2026-07-26)


### Features

* document Homebrew installation ([be7742f]https://github.com/benletchford/systemless/commit/be7742f030dc63289b84141c328fef3d8f1aacdc)


### Bug Fixes

* decode menu titles and item text as Mac Roman instead of UTF-8 ([b719dc4]https://github.com/benletchford/systemless/commit/b719dc4112cdae50475b91c353e6095f269653f4)
* draw dimmed menu items, dividers and title metrics the way System 7.5.3 does ([0230216]https://github.com/benletchford/systemless/commit/0230216bfe16c80760b56a658a90131722285a55)
* preserve direct framebuffer output after pointer resize failures ([4ce0903]https://github.com/benletchford/systemless/commit/4ce090384ac148cc00dcf8a48be0338b62719a8d)
* preserve VBL queues and Color QuickDraw indices for direct-drawing games ([be22899]https://github.com/benletchford/systemless/commit/be228991c3064444ccc686b849ce7ef093223dea)

## [0.4.2]https://github.com/benletchford/systemless/compare/v0.4.1...v0.4.2 (2026-07-26)


### Bug Fixes

* preserve application-painted dialog pixels during framebuffer redraws ([954de06]https://github.com/benletchford/systemless/commit/954de06e6ccc76d57dc28e1b5740cdf3152b5f56)
* stop ModalDialog repainting a dialog the application already drew itself ([a56286d]https://github.com/benletchford/systemless/commit/a56286d908d1ed5850d857a571c09ca2056bb514)

## [0.4.1]https://github.com/benletchford/systemless/compare/v0.4.0...v0.4.1 (2026-07-25)


### Bug Fixes

* dim a disabled menu title with the gray pattern instead of hiding it ([92d9246]https://github.com/benletchford/systemless/commit/92d92466037b45d703e6045ad09dad25e03909d4)
* keep the menu-bar exclusion out of a window's content region so moved windows do not lose their top rows ([3ba5c08]https://github.com/benletchford/systemless/commit/3ba5c083b51c5e72e0cc7ea34880c32e10a241e5)
* populate the 68k exception vector table so a stray deref of address 0 lands in ROM space ([b764613]https://github.com/benletchford/systemless/commit/b7646136281e71bc02879327047a9ce70fbef60f)
* report a loaded resource handle's exact byte count from GetHandleSize ([e85894e]https://github.com/benletchford/systemless/commit/e85894e88544f84fca84d50c417aec361af3cab0)
* subtract front windows from visRgn so a background repaint cannot erase a modal dialog ([2420fb0]https://github.com/benletchford/systemless/commit/2420fb06c5a1b5b64f2872096afba568c99635e7)

## [0.4.0]https://github.com/benletchford/systemless/compare/v0.3.0...v0.4.0 (2026-07-25)


### Features

* play QuickTime movies on a timeline with cvid, rle and smc image decoders ([37b62a7]https://github.com/benletchford/systemless/commit/37b62a76b7ebaede548b281ecc83ee1a027e6d7b)

## [0.3.0]https://github.com/benletchford/systemless/compare/v0.2.5...v0.3.0 (2026-07-25)


### Features

* show the retro computer menu mark in 68k games ([e96d4a5]https://github.com/benletchford/systemless/commit/e96d4a5691324cf7d1a62d4a0433b554f2ca5677)


### Bug Fixes

* .release-please-manifest.json ([4a7fe45]https://github.com/benletchford/systemless/commit/4a7fe45a08df5799a79808af2e0f8a8cc72d3096)
* **audio:** recover buffered lead after frontend stalls ([3cf0a5f]https://github.com/benletchford/systemless/commit/3cf0a5fb54e247801fd860d3840aff15b95ba1dd)
* **build:** keep the Metal presenter out of automatic binaries ([ad9a089]https://github.com/benletchford/systemless/commit/ad9a089eeb47b9cfd6c3943660a40f5d275dffa7)
* **deps:** update m68k to 0.2.4 ([a7882de]https://github.com/benletchford/systemless/commit/a7882de4d7eecd0e4cf3bd86c31654de4dc93933)
* **event:** initialize classic double-click interval ([a95e9d3]https://github.com/benletchford/systemless/commit/a95e9d3de6260c1a0f0504cde7d0ab9f234502ce)
* **event:** initialize classic double-click interval ([d42f3d1]https://github.com/benletchford/systemless/commit/d42f3d177c15108b29181724d708c14a0aa0295a)
* **gui:** detect and cache centered game viewports ([74a3391]https://github.com/benletchford/systemless/commit/74a33911dc1200da87578d0eff1e0f2db6cbd88e)
* **gui:** preserve cached crop during startup detection ([3ab59ab]https://github.com/benletchford/systemless/commit/3ab59ab76c292a06803c99ec2b9c8f0e93c01c8f)
* **gui:** preserve transactional resizing with async presentation ([891562c]https://github.com/benletchford/systemless/commit/891562cf0b216d00d5716437cb0251b3645aea24)
* **gui:** reveal transient dialogs without resize bounce ([b3d4164]https://github.com/benletchford/systemless/commit/b3d4164f127b685e4d2169aa9d6432d54e0687a5)
* honor the system event mask when posting key-up events ([e81e949]https://github.com/benletchford/systemless/commit/e81e949e9bab24b8a806b59992891cf664cf19e7)
* **macos:** drain Metal worker autoreleases ([e98664d]https://github.com/benletchford/systemless/commit/e98664d97390136bc5e79d5c16d8d3086a1681de)
* **macos:** drain Metal worker autoreleases ([a8e0f1b]https://github.com/benletchford/systemless/commit/a8e0f1b459e5732be0632dbe68e1658a97ac892f)
* **memory:** validate RecoverHandle master-pointer slots ([b72ea7d]https://github.com/benletchford/systemless/commit/b72ea7ddb50f784fdf49d67f4322b09bd4805f0d)
* **memory:** validate RecoverHandle master-pointer slots ([53c1fa7]https://github.com/benletchford/systemless/commit/53c1fa7afdfa6a018023a017739ad36cc5e1693d)
* preserve guest menu enable flags in MORE ([04370de]https://github.com/benletchford/systemless/commit/04370de9f5575c043d21303ae5b73e0c3d81dbcc)
* select menu item at mouse release ([c2177b1]https://github.com/benletchford/systemless/commit/c2177b12f12a5c18681328bb1b9a0b48e4f1cc19)
* suppress duplicate host keydown events ([38155a2]https://github.com/benletchford/systemless/commit/38155a2b6d3a015ec828588300eb7b58ac14980b)
* suppress standalone modifier key events ([f286228]https://github.com/benletchford/systemless/commit/f2862283ad72c1e654d4cf3a08364d95f4a07b65)
* terminate exhausted Marathon terminal style insertions ([30f49a4]https://github.com/benletchford/systemless/commit/30f49a4d929c37ecd9e5c4de14b2ead5af420d89)


### Performance Improvements

* **gui:** decode guest framebuffers in Metal ([fca3ecc]https://github.com/benletchford/systemless/commit/fca3ecccf0a88570c5542e4d9eb8faf290f810d1)
* **gui:** decode guest framebuffers in Metal ([76c3925]https://github.com/benletchford/systemless/commit/76c3925496d43097b2cc016b9f2208c3782d14f2)
* **gui:** decouple Metal presentation from emulation ([b165448]https://github.com/benletchford/systemless/commit/b165448b317acae1d3bf51ce94174265dd166d79)
* **gui:** decouple Metal presentation from emulation ([e03f4b0]https://github.com/benletchford/systemless/commit/e03f4b02440b20703644ea86d804cd42dcd948dc), closes [#23]https://github.com/benletchford/systemless/issues/23
* **gui:** present macOS frames with Metal ([ec589a8]https://github.com/benletchford/systemless/commit/ec589a825fa6cc7dd0015558317dc70a4af7f9f4)
* **gui:** present macOS frames with Metal ([35cef58]https://github.com/benletchford/systemless/commit/35cef58733c62aa77211188533e2d212129efae5)
* **gui:** skip unchanged Metal guest frames ([812e1a7]https://github.com/benletchford/systemless/commit/812e1a749009da7824d91b65b2dbfb0832e304ec)
* **gui:** skip unchanged Metal guest frames ([d2ab17c]https://github.com/benletchford/systemless/commit/d2ab17c062f7a51859c106f94caddd6a07eabcd0)
* **runner:** fast-forward capped GUI TickCount waits ([7b9b940]https://github.com/benletchford/systemless/commit/7b9b940424f89b8ad70ff9d270fcf082ee642147)
* **runner:** fast-forward capped GUI TickCount waits ([721ab96]https://github.com/benletchford/systemless/commit/721ab96cccf836afa156b787e6d183ef28ac7ea3)
* **runner:** fast-forward TickCount BEQ waits ([6dc03b4]https://github.com/benletchford/systemless/commit/6dc03b430dc11ffd13c19c18ef583767c3abe6e6)
* **runner:** fast-forward TickCount BEQ waits ([22231e0]https://github.com/benletchford/systemless/commit/22231e0803c1b67f7fddca559f514a9cd359995c)

## [0.2.2]https://github.com/benletchford/systemless/compare/v0.2.1...v0.2.2 (2026-07-24)


### Bug Fixes

* **deps:** update m68k to 0.2.4 ([a7882de]https://github.com/benletchford/systemless/commit/a7882de4d7eecd0e4cf3bd86c31654de4dc93933)

## [0.2.1]https://github.com/benletchford/systemless/compare/v0.2.0...v0.2.1 (2026-07-24)


### Bug Fixes

* **macos:** drain Metal worker autoreleases ([e98664d]https://github.com/benletchford/systemless/commit/e98664d97390136bc5e79d5c16d8d3086a1681de)
* **macos:** drain Metal worker autoreleases ([a8e0f1b]https://github.com/benletchford/systemless/commit/a8e0f1b459e5732be0632dbe68e1658a97ac892f)


### Performance Improvements

* **runner:** fast-forward TickCount BEQ waits ([6dc03b4]https://github.com/benletchford/systemless/commit/6dc03b430dc11ffd13c19c18ef583767c3abe6e6)
* **runner:** fast-forward TickCount BEQ waits ([22231e0]https://github.com/benletchford/systemless/commit/22231e0803c1b67f7fddca559f514a9cd359995c)

## [0.2.0]https://github.com/benletchford/systemless/compare/v0.1.133...v0.2.0 (2026-07-23)


### Features

* show the retro computer menu mark in 68k games ([e96d4a5]https://github.com/benletchford/systemless/commit/e96d4a5691324cf7d1a62d4a0433b554f2ca5677)


### Bug Fixes

* preserve guest menu enable flags in MORE ([04370de]https://github.com/benletchford/systemless/commit/04370de9f5575c043d21303ae5b73e0c3d81dbcc)
* select menu item at mouse release ([c2177b1]https://github.com/benletchford/systemless/commit/c2177b12f12a5c18681328bb1b9a0b48e4f1cc19)
* suppress standalone modifier key events ([f286228]https://github.com/benletchford/systemless/commit/f2862283ad72c1e654d4cf3a08364d95f4a07b65)

## [0.1.133]https://github.com/benletchford/systemless/compare/v0.1.132...v0.1.133 (2026-07-23)


### Bug Fixes

* **audio:** recover buffered lead after frontend stalls ([3cf0a5f]https://github.com/benletchford/systemless/commit/3cf0a5fb54e247801fd860d3840aff15b95ba1dd)
* **build:** keep the Metal presenter out of automatic binaries ([ad9a089]https://github.com/benletchford/systemless/commit/ad9a089eeb47b9cfd6c3943660a40f5d275dffa7)
* **event:** initialize classic double-click interval ([a95e9d3]https://github.com/benletchford/systemless/commit/a95e9d3de6260c1a0f0504cde7d0ab9f234502ce)
* **event:** initialize classic double-click interval ([d42f3d1]https://github.com/benletchford/systemless/commit/d42f3d177c15108b29181724d708c14a0aa0295a)
* **gui:** detect and cache centered game viewports ([74a3391]https://github.com/benletchford/systemless/commit/74a33911dc1200da87578d0eff1e0f2db6cbd88e)
* **gui:** preserve cached crop during startup detection ([3ab59ab]https://github.com/benletchford/systemless/commit/3ab59ab76c292a06803c99ec2b9c8f0e93c01c8f)
* **gui:** preserve transactional resizing with async presentation ([891562c]https://github.com/benletchford/systemless/commit/891562cf0b216d00d5716437cb0251b3645aea24)
* **gui:** reveal transient dialogs without resize bounce ([b3d4164]https://github.com/benletchford/systemless/commit/b3d4164f127b685e4d2169aa9d6432d54e0687a5)
* **memory:** validate RecoverHandle master-pointer slots ([b72ea7d]https://github.com/benletchford/systemless/commit/b72ea7ddb50f784fdf49d67f4322b09bd4805f0d)
* **memory:** validate RecoverHandle master-pointer slots ([53c1fa7]https://github.com/benletchford/systemless/commit/53c1fa7afdfa6a018023a017739ad36cc5e1693d)


### Performance Improvements

* **gui:** decode guest framebuffers in Metal ([fca3ecc]https://github.com/benletchford/systemless/commit/fca3ecccf0a88570c5542e4d9eb8faf290f810d1)
* **gui:** decode guest framebuffers in Metal ([76c3925]https://github.com/benletchford/systemless/commit/76c3925496d43097b2cc016b9f2208c3782d14f2)
* **gui:** decouple Metal presentation from emulation ([b165448]https://github.com/benletchford/systemless/commit/b165448b317acae1d3bf51ce94174265dd166d79)
* **gui:** decouple Metal presentation from emulation ([e03f4b0]https://github.com/benletchford/systemless/commit/e03f4b02440b20703644ea86d804cd42dcd948dc), closes [#23]https://github.com/benletchford/systemless/issues/23
* **gui:** present macOS frames with Metal ([ec589a8]https://github.com/benletchford/systemless/commit/ec589a825fa6cc7dd0015558317dc70a4af7f9f4)
* **gui:** present macOS frames with Metal ([35cef58]https://github.com/benletchford/systemless/commit/35cef58733c62aa77211188533e2d212129efae5)
* **gui:** skip unchanged Metal guest frames ([812e1a7]https://github.com/benletchford/systemless/commit/812e1a749009da7824d91b65b2dbfb0832e304ec)
* **gui:** skip unchanged Metal guest frames ([d2ab17c]https://github.com/benletchford/systemless/commit/d2ab17c062f7a51859c106f94caddd6a07eabcd0)
* **runner:** fast-forward capped GUI TickCount waits ([7b9b940]https://github.com/benletchford/systemless/commit/7b9b940424f89b8ad70ff9d270fcf082ee642147)
* **runner:** fast-forward capped GUI TickCount waits ([721ab96]https://github.com/benletchford/systemless/commit/721ab96cccf836afa156b787e6d183ef28ac7ea3)

## [0.1.132]https://github.com/benletchford/systemless/compare/v0.1.131...v0.1.132 (2026-07-12)


### Bug Fixes

* honor the system event mask when posting key-up events ([e81e949]https://github.com/benletchford/systemless/commit/e81e949e9bab24b8a806b59992891cf664cf19e7)
* suppress duplicate host keydown events ([38155a2]https://github.com/benletchford/systemless/commit/38155a2b6d3a015ec828588300eb7b58ac14980b)
* terminate exhausted Marathon terminal style insertions ([30f49a4]https://github.com/benletchford/systemless/commit/30f49a4d929c37ecd9e5c4de14b2ead5af420d89)