Code Monkey home page Code Monkey logo

a2d's Introduction

Apple II DeskTop

build stats GitHub release (latest by date) GitHub release (latest by date)

GitHub release (latest by date including pre-releases)

Disassembly and enhancements for Apple II DeskTop (a.k.a. Mouse Desk), a "Finder"-like GUI application for 8-bit Apples and clones with 128k of memory, utilizing double hi-res monochrome graphics (560x192), an optional mouse, and the ProDOS 8 operating system.

💾 Download Disk Images

📖 Read the Documentation

📝 Check the Release Notes

Background

The application started its life as Mouse Desk by Version Soft. Apple Computer licensed the software and released it, at first as Mouse Desk 2.0, then rebranded Apple II DeskTop as the initial system software for the Apple IIgs before 16-bit GS/OS replaced it. It still functions on 8-bit Apples, including the Apple IIe, Apple IIc, Apple IIc Plus, Apple IIe Option Card for Macintosh, Laser 128, and Franklin ACE 2X00/500.

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 then GEOS, serving only as a file manager and application launcher, it follows more common interface paradigms and is 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.

End-user documentation is at the companion web site: https://a2desktop.com

Alt Text
KansasFest 2018 presentation by @mgcaret

Additional help is welcome! See the guide for Contributing.

Tools

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

See Building And Running instructions.

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.

a2d's People

Contributors

a2-4am avatar apple2geek avatar buserror avatar c0mmander8 avatar eric-ja avatar frankmilliron avatar inexorabletash avatar mgcaret avatar peterferrie avatar polluks avatar rebeccargb avatar whscullin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

a2d's Issues

Calculator: Cursor glitches briefly after window is drawn

When the Calculator window is being drawn the cursor is hidden. When it is shown again the bitmap is mangled.

The code includes a call to A2D_SET_CURSOR and embeds an entire cursor definition (with bitmap/mask/hotspot), seemingly to work around this bug.

Show Image File: MouseDesk compatibility

Show Image File locks up the desktop after exiting under MouseDesk; its fine under A2D

Possibly the missing jsr $8E00 .byte $0C .addr $0000 after destroying the window?

Control Panel DA: Edit DeskTop pattern

Like the old Mac control panel.

Could persist by writing into the DESKTOP.SYSTEM binary with no new DeskTop code, or an API/settings file could be added.

Show clock on menu bar

Could be integrated into main "get input" routine.

Would break the "Show Image" DA as-is, since it naively overwrites the menu bar. So would probably require API additions.

Support DHGR Mono

See AppleWin/AppleWin#523

Some non-Apple 80 column cards with DHR support allowed software control of DHGR monochrome vs. color. (My Laser 128EX has a hardware switch, some monitors had color killer buttons.)

Since A2D assumes monochrome, might as well try to support this for emulators/hardware that can be forced into monochrome mode while A2D is running. It seems like it's a combination of softswitches then remembering to set/clear the otherwise unused high bit.

This would likely require changes to the GUI library (which may leave the high bits in a random state; need to inspect all the code) and anything like the (new) Image Viewer DA that writes directly to the screen buffer.

Support copying GEOS files

GEOS can copy ordinary ProDOS files. Seems only fair that A2D should be able to copy GEOS files (with normally illegal characters in the filenames).

Hook up screen dump code

The "loader" code includes an unused fourth segment that can dump an image of the screen to an ImageWriter II printer hooked up via an SSC in Slot 1. This is never placed in memory but would reside in pages 2/3 where the "invoker" lives.

It looks like this was hooked into the main input logic and would intercept OA-CA-P; possibly it was hacked in for some builds in order to generate screenshots for the manual.

Finding a place to store this and activate it would be pretty cool.

New DeskTop command: Command Prompt Here

Offer a command to launch BASIC.SYSTEM with PREFIX set to a window's directory.

Maybe search for BS up the path from the window first, then start from A2D's directory and go up from there.

New DA: Window Inspector

Set cursor to a + or ⌖ symbol. When clicked, query the target and report on the window's properties.

DeskTop: Cursor flashes during window redraw

As a DeskTop window is being redrawn the cursor appears to be hidden/shown for each icon. If correct, this would impact performance. The cursor should be hidden before each window redraw, shown again afterwards.

Desktop crashes to monitor on GS CFFA with 3+ volumes

Desktop boots normally and allows user input (click menus, etc). After a couple seconds Desktop crashes to the monitor. I suspect Desktop is crashing trying to directly call the device driver for the 3rd CFFA smartport volume which has been remapped by ProDOS 2.x to an empty slot.

The crash does not happen with ProDOS 1.x, or if the CFFA is restricted to mounting only 2 volumes.

Sort Directory DA is a no-op until a file is selected

The Sort Directory DA sorts directory contents by selection order (using OA-click to select multiple), and the remaining entries alphabetically.

But if you just want alphabetical sorting, you need to first select an icon, then unselect it, or the DA does nothing.

New DA: Eyes

Like the classic XEyes, a:

  • movable
  • resizable
  • window that draws eyes that track the mouse

Add DOS3.3 Launcher support

DOS3.3.Launcher support (file types $F1…$F4, aux type 0)

Requires following general ProDOS 8 Startup Protocol support

Possible complication: $F1 type is used for the DAs as well.

Allow file moves within a volume (not just copies)

Add the ability to choose move instead of copy when dragging files, e.g. via modifier keys.

Possibly switch the default to match modern operating systems (move is the default if the source/destination are same-volume, copy otherwise)

Date writes to MD.SYSTEM

The Date DA attempts to persist the updated date bytes to "MD.SYSTEM", presumably so that is used on the next startup if there is no clock.

With A2D there is no such file.

Check to see if this is used in DESKTOP.SYSTEM and, if so, update the path.

Option to "open in same window" (or at least close the parent)

When navigating down directories, the naive "keep opening windows" approach makes the desktop very cluttered. Either:

  • Allow "navigating" a window to point at a different folder without opening a one (like most modern OSs), or
  • Allow closing the previous window when opening a directory (e.g. via modifier keys)

FloppyEmu SmartPort hard disks show as 3.5" floppies on Laser 128

SmartPort HDs appear as floppies on Laser 128 w/ Floppy Emu

No repro on Virtual II (which has its "OmniDisk" smartport drive). Possibilities include:

  • A2D is interpreting anything from the Laser's LIRON-ish SmartPort as a floppy
  • FloppyEmu is reporting itself incorrectly
  • ???

Need to attempt to repro on a non-Laser with LIRON and FloppyEmu and a non-Laser with a IIc or IIgs.

Launch unknown file types with BASIS.SYSTEM

https://www.youtube.com/watch?v=Sm4D1wtWPck&t=986s

ProDOS 2.4 comes with BASIS.SYSTEM which is used by Bitsy Bye to to launch files beyond BASIC and SYSTEM. The vision is that it could maintain a file/aux type mapping to launch appropriate handler apps that follow the "interpreter" protocol.

(See ProDOS TRM 5.1.5.1 - Starting System Programs for the protocol. TL;DR: jmp start; .byte $EE, $EE, buffer_length; .res buffer_length; start: ...)

So... any file type which is double-clicked could be launched this way. If BASIS.SYSTEM can't handle it it will QUIT back to ProDOS which should re-launch A2D.

IIc+: Mouse pointer issues

Reported on comp.sys.apple2:

In addition to the IIc+ constant internal disk access bug, the mouse pointer tends to drop down to the bottom of the screen and stay there on the IIc+. This happens at normal and fast speed.

Calculator: DeskTop icons not redrawn if dragged to screen bottom

Discovered via code inspection (yay!)

Repro:

  1. Launch Calculator DA (via Apple menu)
  2. Drag calculator window over a desktop icon (e.g. Trash, disks) and let go
  3. Drag calculator to the bottom of the screen so that only the title bar is visible and let go

The icons fail to redraw.

This appears to be a bug in the code; after a drag the window position is checked and a flag is set if the top of the client area is below the screen. This flag could be used to avoid an unnecessary repaint if the client area is offscreen although it is not. Instead, the flag is used to skip repainting the desktop icons. But given the above repro steps this means the icons won't be redrawn given the above repro steps.

The optimization seems unnecessary, given how rarely it would be used in practice.

Revise menu items / keyboard shortcuts

The existing menu items have (by modern standards) unusual names and non-intuitive shortcuts.

Examples:

  • "Rename an Icon..." - why not just "Rename..." ?

Others...?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.