Changes from ANFS 4.25

← Acorn ANFS 4.26 disassembly

Changes from ANFS 4.25 to ANFS 4.26

ANFS 4.26 is the next Master 128 ANFS after 4.25. Both are 65C02 ROMs that keep their filing-system workspace in HAZEL hidden RAM at &C000&C2FF, so 4.26 inherits the whole Master-128 architecture unchanged. The two 16 KB ROMs are 99.0 % identical at the same byte offset — almost nothing moves. The service entry, ROM type and copyright are unchanged.

The differences are a single reworked routine plus a small new helper; nothing about the filing-system interface changes.

ROM header and credits

Field 4.25 4.26
Title Acorn ANFS 4.25 Acorn ANFS 4.26
Copyright (C)1986 Acorn (C)1986 Acorn
ROM type &82 &82
Service entry &8A8C &8A8C

The credits easter-egg header punctuation changes from The authors of ANFS are; to The authors of ANFS are: — a one-byte cosmetic tweak in the inline string.

OSWORD &0E (14) real-time-clock routine reworked

The substantive change is a rework of the OSWORD &0E (14) real-time-clock handler. The details and meaning below follow J.G. Harston's write-up (see the reference at the foot of this page).

It now checks the current filing system first. The dispatcher osword_0e_dispatch at &A89A calls the new fs_num_via_osargs helper and only services the clock request when NetFS is the current filing system — leaving the OSWORD for other filing systems to handle otherwise.

The clock/date formatting is restructured. save_txcb_and_convert (entry moved to &A8B1) loops over the clock bytes calling a rewritten bin_to_bcd helper (decimal-mode ADC-in-a-loop) and forms the year from a 7-bit field plus a base of &51, subtracting 100 (CMP #&64 / SBC #&64) to move a year of 100 or more into the 20xx century. Years 2100-2107 are not converted to 21xx. save_txcb_done reads the CMOS clock via OSWORD and writes a default century of "20" if that read fails.

New OSARGS filing-system helper

4.26 adds a small routine, fs_num_via_osargs, in the ROM-tail space that was &FF padding in 4.25 (&BFF7&BFFF). It reads the current filing-system number via OSARGS and returns EQ when it is 5 (NetFS) — the filing-system guard the reworked clock routine uses. Its last two bytes double as the hazel_minus_2 / hazel_minus_1 indexing-base anchors that previously sat on the padding.

Bug fix: Bad string error number

The bad-inline-argument error path at &94C0 is corrected: 4.25 read the brk_ptr zero-page byte (LDA &FD) instead of loading the error number, so the Bad string error was not set correctly. 4.26 loads it as an immediate (LDA #&FD) before calling error_bad_inline.

Reference

The meaning of the RTC changes is documented by J.G. Harston, ANFS 4.26 updated OSWORD 14 RTC routine.