Repository navigation
Releases: mindbox77/zxdesk
Release list
ZX Desk 1.2.0
Apps can keep time, three can run at once, and a tape of them can be read straight into the file manager.
Importing from tape. A tape has no directory, so the commander reads from it instead. With a tape pane showing, R reads the next file into the other pane and A reads them all. After that they are ordinary files and ENTER runs them. The last file read stays in the tape buffer and runs from the tape pane, which is how a 48K runs an app too big to import.
A tick for apps. An app can name a tick routine in its descriptor. It is called once a frame while the app is in front, with the whole seconds since the last call, and is held back while a menu or panel is up. The interface is now version 4, with one new slot, ApiWinRefresh, which repaints a window in one call.
Three loaded apps at once. Each load is its own copy with its own state. Apps with no window are freed by the next load.
Two more examples. examples/stopwatch uses the tick. examples/tally saves and loads through the storage layer and asks before clearing.
Fixed. Every one line alert printed rubbish on its second line when sound was on, which is the default. This was in 1.0.0 and 1.1.0. A named load from tape now passes over other files on the way, where before it gave up at the first one on a real signal.
Also. FILE, LOAD has an EXIT row. The status row says READING TAPE. SPACE TO STOP. during any tape read, and SPACE does stop it. The README explains how loading works and lists every slot with what it takes and returns.
Apps built for 1.1.0 still load.
Files:
zxdesk-1.2.0.tapis the desktop.zxdesk-1.2.0-with-apps.tapis the desktop with COUNTER, WATCH and TALLY after it on the tape. Load it, open the commander with FILE, OPEN, and press A.counter.zxa,stopwatch.zxaandtally.zxaare the three example apps on their own.
It runs on a 48K, and a 128K gets a RAM disk and AY sound. On a 48K the tally is too big to import and runs from the tape pane instead.
ZX Desk 1.1.0
ZX Desk can now run apps it was not built with.
Loadable apps. An app is a small file: a header, an image assembled at origin nought, and a relocation table. The desktop loads it into the heap from the RAM device, a 128K bank or tape, and runs it in a window. In the commander, ENTER on an app file runs it. FILE, LOAD takes a name and loads from the current device or from tape.
An application interface. A jump table at $8000, 44 slots, append only. The clock, the calendar, the notepad and the commander all work through it now and name no desktop global, which is what makes an outside app possible.
Writing your own. mkapi.py writes the include an app is assembled against, mkapp.py assembles one and can append it to a tape, and examples/counter is a complete app in 139 bytes. The README has a section on it.
Fixed. Fills of an odd width left a column unpainted, which showed as a notch in the calendar's border. The notepad's cursor was drawn at a stray position when its row was scrolled out of view.
Files:
zxdesk-1.1.0.tapis the desktop.zxdesk-1.1.0-with-counter.tapis the desktop with the counter app after it on the tape. Load it, then FILE, LOAD, type COUNTER and set FROM to TAPE.counter.zxais the counter app on its own.
It runs on a 48K, and a 128K gets a RAM disk and AY sound. One app can be loaded at a time.
ZX Desk 1.0.0
The first release. A graphical desktop for the ZX Spectrum 48K, in Z80 assembly.
Load zxdesk-1.0.0.tap in an emulator or on the real machine. It runs on a 48K, and a 128K gets a RAM disk and AY sound.
The README has the details and the measurements.