Doc polish, 68080 tier, dirty state tracking, dd2.4 with paging - #34
Draft
pulchart wants to merge 22 commits into
Draft
Doc polish, 68080 tier, dirty state tracking, dd2.4 with paging#34pulchart wants to merge 22 commits into
pulchart wants to merge 22 commits into
Conversation
The CHECKSUMS block labelled the per-tier builds "<name>_<cpu>", which carries no flavour: the day ptable-bundle stages full next to small, two lines would read ptable.library_68020 with different hashes. Name them by their archive-relative path instead, as compactflash.device does. Also add the missing Requires: header and state the major version at the top of WHAT'S NEW.
It uses one instruction: PERM, which permutes four bytes of a register pair in a single opcode and replaces the rol.w/swap/rol.w sequence in ReverseL. That macro is the endian primitive the whole handler is built on, so MoveLE32_BE and RCopyMSDE inherit it untouched, and the directory scan calls RCopyMSDE once per entry. The tier assembles as -m68020 and switches to 68080 with a machine directive around PERM alone. Assembling the whole file as -m68080 makes vasm 2.0e rewrite sub.l #<imm16>,Dn into addiw.l #-<imm>,Dn, which the Programmer's Reference Manual suggests (p. 11, "There is no subiw.l, just use a negative value with addiw.l") but which inverts the carry: SUB sets it as a borrow, ADD as a carry. Both rewrite sites landed on the sub.l #1004-35,d0 and sub.l #4200-1036,d0 of the DOS packet dispatch, each immediately followed by bcs.s s_unknown, so every packet type from 1004 up returned error 209 and no file could be opened.
clr.q zeroes 8 bytes per instruction and replaces the clr.l pair in lob_ktloop (a deleted 32-byte directory entry) and xtd_clear (a whole new directory block), through a new CLRQ macro that keeps the 020 clr.l pair and the 000 move.l pair. movs.b fuses the load and the sign-extend in s_envfill. Both are LineA opcodes, so s_start enables them with ori.w #$800,sr, and each sits inside a machine 68080 bracket like PERM. All three are behind ifd APOLLOON, which only the 68080 build defines and only when APOLLOON=1. Mounting the 68080 tier with them enabled fails on an IceDrake V4 with alert $8000000A, ACPU_LineA. The alert is not ACPU_PrivErr, so the user-mode SR write itself succeeds; the opcodes are simply absent on that core. Default off, so the 68080 tier uses the 020 paths and PERM.
The install step, the CPU tier table and the archive file list gain their 68080 row, and changes.md its entry. The wording says which board the tier needs and claims nothing about speed: on an IceDrake V4 every 68020-against-68080 difference the test harness reports falls inside one 50 Hz tick. Carries the release date bump and the generated files that embed it, plus the release-notes rewording already in progress.
The scan asked "is the first free cluster known" on every free FAT entry, though the answer changes once per scan. It is now decided once per FAT window, and the loop counts with dbf. Roughly a third off the loop on every tier.
pulchart
force-pushed
the
wip/jpu/dist-polish
branch
2 times, most recently
from
September 8, 2026 12:15
938463a to
ab8e03d
Compare
Invalidate FSInfo before writes, retain failed buffers and isolate media generations. Keep protection state consistent.
pulchart
force-pushed
the
wip/jpu/dist-polish
branch
from
September 8, 2026 12:56
ab8e03d to
9963361
Compare
Mark managed FAT copies dirty before writes. Restore initially clean volumes after completed flushes, preserving cached FAT changes and media isolation.
pulchart
force-pushed
the
wip/jpu/dist-polish
branch
from
September 10, 2026 11:44
1bd4ee6 to
ea4d7fe
Compare
ACTION_IS_FILESYSTEM, ACTION_EXAMINE_ALL_END and ACTION_FREE_DISK_FSSM had identical bodies and now share one dispatch target, as s_unknown already does for the unimplemented slots. The table keeps 65 entries; only those three change, so no other action moves. In CheckDirSpace, bcs plus beq to the same target after one subtraction is bls.
ExtendDir held the parent XLock in d0 across MakeIntRef, which reaches R2CopyMSDE and returns d0 as the reversed MSDE_FSize of the copied entry, 0 for a directory. The following test therefore read XL_Parent at absolute address 12. With VBR at 0 that is the address-error vector, non-zero on a running machine, so the root-parent case never zeroed the ".." cluster; once the vector moves it reads arbitrary RAM. The pointer now goes on the stack.
SerializeDisk overwrote UpdateDisk's result with TRUE, so a failed write-back still returned success through Action4200 into DP_Res1, while LatchWriteFault had already dropped the volume to read-only with error 225. The result now carries the write-back outcome; ErrorNum already reaches DP_Res2.
_OpenPtable's ROM-bootstrap retry returned straight from OpenLibrary, whose CCR is undefined; exec.doc documents d0 alone. PublishViaPtable and MarkAbsentViaPtable branch after a MOVEA, which sets no flags, so on that path a valid base could be skipped along with CloseLibrary, or a null base called through. The routine now sets the flags from d0, which the two callers that already test d0 re-derive unchanged.
The 35-line help scrolled its first page away. PrintHelp now writes one screenful at a time, sized from the console's WINDOW BOUNDS REPORT, with Q to stop. A stream that reports no height, or that is not the same handler as the input, gets the whole help in one Write. The help lines end in LF alone now, as dd's error messages already do, so a redirected help no longer carries a CR on every line. The early "?" check branched on flags a MOVEA cannot set, so it tested FindName's result instead of CmdLine.
The INSPECT and transfer reports ended their lines with CR+LF, so a redirected report carried a CR on every line. They use LF alone now, like the error messages already did, and the literals are spelled CR and LF. The progress counter keeps its CR: it overwrites its own line.
The pager moved out of PrintHelp into PageBegin, PageLine and PageEnd; PrintInspect calls them per line, so a long VERBOSE command list pauses like the help does and Q stops the listing.
pulchart
force-pushed
the
wip/jpu/dist-polish
branch
from
September 11, 2026 08:30
c00455b to
7a3b141
Compare
pulchart
force-pushed
the
wip/jpu/dist-polish
branch
from
September 11, 2026 08:54
7a3b141 to
74cd664
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.