Disassembly of the Apple II Desktop - ProDOS GUI
Go to file
Joshua Bell 46e413f3f1 Prevent crashes in Calculator/Eyes DA using ROM FP routines
During calls, MGTK uses the top half of the zero page to hold the
active grafport and local variables. It normally saves/restores the ZP
on each call so that the application's ZP state is preserved. Per
docs, the ZP1 call with param $00 can be used to disable this; MGTK
will write its state to the ZP and assume the ZP is not touched until
a subsequent ZP1 call with param $80, allowing higher performance.

DeskTop would normally run in this state ($00), except when DAs were
invoked since they could use ROM routines (etc) and expect the top
half of the ZP to be preserved during MGTK calls. But it did this with
a toggle ($00, $80, run the DA, then $00 again). Confusingly, the Calc
(and Eyes, c/o copy/pasta) DA would also attempt to get to a normal
state when running ($80, run, $00).

In rev 30532c31 I disabled DeskTop's toggling around DAs to fix an
issue in the Sort Directory DA (see #119), which might have changed
the overall behavior. The result is that on the IIc+ (and possibly
other hardware, but not Virtual II or Laser 128EX) the Calc and Eyes
DAs would crash.

This change disables use of the ZP1 by DeskTop and the DAs. This will
likely impair performance somewhat due to the save/restore overhead on
each call, but at least this gets us to a "known good state".

Fixes #157, #158
2019-07-11 15:50:20 -07:00
desk.acc Prevent crashes in Calculator/Eyes DA using ROM FP routines 2019-07-11 15:50:20 -07:00
desktop Prevent crashes in Calculator/Eyes DA using ROM FP routines 2019-07-11 15:50:20 -07:00
desktop.system Macro tidying: use param blocks; dedupe macros that differ only by order 2019-03-30 08:34:49 -07:00
docs Hold Apple key when double-clicking/File>Open to close parent. Resolves #9 2019-05-13 20:46:05 -07:00
fonts
inc Hook reset to cleanly quit DeskTop back to ProDOS. Resolves #141 2019-03-29 18:52:52 -07:00
preview Add 'Screen Saver' DA, issue #27. Also adds DrawMenu to MGTK, fixes #136. 2019-03-11 19:44:07 -07:00
res Travis CI: Deploy tagged versions as pre-releases 2019-05-05 18:12:50 -07:00
.gitignore add script to generate ShrinkIt file if nulib2 is available (#128) 2019-02-14 11:06:08 -08:00
.travis.yml Travis CI: Deploy tagged versions as pre-releases 2019-05-05 18:12:50 -07:00
APIs.md
CODE_OF_CONDUCT.md
CodingStyle.md
CONTRIBUTING.md
desktop.inc DeskTop: Make type remapping data driven 2019-04-28 23:11:48 -07:00
macros.inc Macro tidying: use param blocks; dedupe macros that differ only by order 2019-03-30 08:34:49 -07:00
mgtk.inc Add 'Screen Saver' DA, issue #27. Also adds DrawMenu to MGTK, fixes #136. 2019-03-11 19:44:07 -07:00
MGTK.md Add docs about Mouse Keys mode 2019-05-12 19:01:53 -07:00
README.md Updated README 2019-04-22 21:23:36 -07:00
RELEASE-NOTES.md Hold Apple key when double-clicking/File>Open to close parent. Resolves #9 2019-05-13 20:46:05 -07:00

Apple II DeskTop

Build Status

Work-in-Progress disassembly and enhancements for Apple II Desktop (a.k.a. MouseDesk)

💾 Disk images can be found on the Releases page 💾

Background

This application started its life as MouseDesk by Version Soft. It is a mouse-driven Mac-like "Finder" GUI application for 8-bit Apples and clones with 128k of memory, utilizing double-hires monochrome graphics (560x192), an optional mouse, and the ProDOS operating system.

Apple Computer acquired the software and released it - rebranded as Apple II DeskTop - as the initial system software for the Apple IIgs before 16-bit GS/OS replaced it. The rebranded version still functions on 8-bit Apples, including the Apple IIe, Apple IIc, Apple IIc Plus, Apple IIe Option Card for Macintosh, and the Laser 128 family.

Other GUI environments exist for the 8-bit Apples, including GEOS (which includes productivity applications) and Quark Catalyst. While Apple II DeskTop is more limited - serving only as a file manager and application launcher - it is (subjectively) more visually appealing and better integrated with ProDOS.

This Project

The goal of this project is to disassemble/reverse-engineer the suite with an eye towards understanding how it functions, fixing bugs, and adding functionality.

See the Release Notes for a list of enhancements and fixes so far.

Alt text
KansasFest 2018 presentation by @mgcaret

Additional help is welcome! See the guide for Contributing.

Tools

The cc65 tool chain will be used; source files will target the ca65 macro assembler. Cross-development on modern systems will be assumed. (Sorry, Merlin purists! We still love you.)

Code of Conduct

Discussions should be polite, respectful and inclusive, and focus on the code. Harassment will not be tolerated. Keep comments constructive. Please read the full Code of Conduct.