Skip to content

Latest commit

 

History

25 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

a2-filer

ZipFiler — a two-panel file manager for the Enhanced Apple //e, ProDOS 8, in 6502 assembly. Two directories on screen at once, the cursor keys to pick from them, and single letters to act — so a pathname never has to be typed.

Apple's own utilities want a pathname typed at a prompt. This one shows you both ends of the job and lets you point at them.

Requires an Enhanced //e with 128K and ProDOS 8. Eighty columns, and about 9K on disk.

Keys

ARROWS move the cursor
TAB the other panel
RET go into a directory — or run a program
LEFT up a level; out of a volume root it lists the volumes
/ jump to a name — type as much of it as you need
SPACE tag; commands act on the tagged set
A tag all, or clear them if all are set already
C copy, left panel to right — directories and their contents included
M move: copy across, then remove the original
D R N delete, rename, new directory
L lock, or unlock if every target is locked already
S swap the panels over
P PR# — boot a slot
Q quit to ProDOS
? the help screen

A command with nothing tagged acts on the line the cursor is on, so the common case needs no tagging at all.

Running programs

RET on a SYS, BIN or BAS file runs it. A SYS file is entered at $2000; a BIN at the address it names in its own aux_type; a BAS file loads BASIC.SYSTEM — which must be on the same volume — and is named to it, so it runs rather than dropping you at a prompt.

Since a program loads over ZipFiler itself, the loader is a position-independent stub copied below $2000 first. docs/design.md §14 has the details, including the two approaches that did not work and why.

Coming back to it

Quitting a program normally lands you in the ProDOS selector — Bitsy Bye, on 2.4. QPATCH.SYSTEM, on the disk beside ZipFiler, can change that so quitting any program on a volume comes back to ZipFiler instead. It lists the volumes on line, says which routine each currently has, and installs or restores on the one you pick.

It saves what it replaces to QUIT.ORIG on that volume and reads it back to check before it touches PRODOS at all, so a failed save leaves the disk exactly as it was. R puts the original back. The change takes effect at the next boot.

There is a Mac-side equivalent for disk images — make quitpatch, make unquit, make quitstatus — but a card partition or a volume on a network share is not an image, and that is what QPATCH.SYSTEM is for. docs/design.md §15 has the mechanism.

Building

make disk      a bootable image, build/ZIPFILER.po
make fixture   the same with files on it to practise on
make test      the regression suite, 170 assertions
make card VOL="NAME"   copy an image to a mounted card

Merlin32 cross-assembles on the Mac; the suite drives Virtual ][ through AppleScript and asserts against the emulated screen and emulated RAM. The suite never points at a real card, and never at anybody's boot volume — see docs/design.md §12.

docs/design.md is the design and the reasoning behind it, including the things that turned out to be harder than they looked.

Related

ZipEdit, a Markdown editor for the same machine, is where the toolchain, the display layer and the Virtual ][ test harness come from.

Licence

MIT — see LICENSE.

About

ZipFiler -- a two-panel ProDOS 8 file manager for the Enhanced Apple //e, in 6502 assembly

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages