Hardware manual
structure is now public, and is defined in Disks.d and documented in the "Disks and BFS" description.
InitializeDiskCBZ defaults its errorRtn argument. DoDiskCommand has an optional nextCb argument.
DefaultBfsErrorRtn and BfsNonEx are exported in Sys.bk, so user programs can load BFSInit. The BFS
can now operate in any of the file system partitions available on the large disks of Dorados and D0s. An
optional hintLastPage argument to ActOnDiskPages, WriteDiskPages, and DeleteDiskPages has been
added. New procedures include Min, Max, Umin, Umax, and Call10 through Call15.
[Disk streams] A DiskStreamsScan level has been added, containing the procedures InitScanStream,
GetScanStreamBuffer, and FinishScanStream; these support overlapped reads at full disk speed.
[Keyboard] Shift-LF generates Ascii 140B -- accent grave.
Deletions: The remaining vestiges of the Sys.Log code are gone. BFSSetStartingVDA removed -- use
ReleaseDiskPage(disk, AssignDiskPage(disk, desiredVDA-1)). All support for version numbers has been
removed from the standard release; an alternate release (NewOsV.boot) is available in which the version
number facility has been retained, but it does not benefit from the improved directory lookup
performance, it is somewhat larger, and it may not be supported in the future.
Changes: levBasic is now guaranteed to be at 175000B or higher, for the benefit of Mesa and Smalltalk.
ReleaseDiskPage doesn’t increment the page count if the page released is already free. The BFS now
retries data-late errors indefinitely. The BFS cleanup routine is now called with three arguments. The
DiskDescriptor file is now allocated next to SysDir rather than in the middle of the disk as it was in OS 16.
The old write date is not restored to a directory file (directory bit on in serial number) if the file is opened
for writing but never dirtied. A number of bugs in the disk streams code have been fixed that prevented
manipulation of files greater than 32767 pages long. Directory operations (OpenFile, DeleteFile, etc.) now
search the directory at essentially full disk speed. Booting has been speeded up somewhat. The OS uses
and maintains disk shape information as a DSHAPE file property in the leader page of SysDir.
Version 16/16 -- February 19, 1979
This version contains many internal changes but few external ones. Even though it is technically
incompatible with previous releases (OS 16/16 rather than OS 16/5), most programs are not affected.
There are three major changes: 1) backward compatibility for the "old" OS has been removed, 2) the disk
bit table is now paged rather than occupying a fixed area in memory, and 3) the interface between Swat
and the OS changed - Swat.25 is required.
Additions: the BitBlt instruction is accessible from Bcpl and a structure definition for a BitBlt table was
added to AltoDefs.d. More of the page 1 and I/O area location names were added to AltoDefs.d. A new
declaration file, BcplFiles.d, was created and the Bcpl file format definitions were moved there from
SysDefs.d. The OS corrects parity in extended memory banks during booting. The "new" file date
standard is implemented. The DDMgr object operations were added to Calls.asm.
Deletions: the compatiblity package has been removed. All of the commonly used subsystems which
depended on it have been updated. They are: Asm, RamLoad, CleanDir, EDP, and Scavenger. If you
keep any of these on your disk, you should get new copies from the <Alto> directory. fpSysLog, fpSysTs,
fpWorkingDir, faSysLog, and nameWorkingDir went away.
Reorganiztions: the BFS was extensively reorganized to bring it into sync with the TFS. The code for
creating a virgin file system and creating a DSK object has been disentangled from OS initialization. The
Bcpl frame-munging code was split out of BFSML.asm and put into a new file: BcplTricks.asm.
Initialization for the keyboard was moved from the OS initializtion modules into KeyStreamsB.bcpl,
making it self-contained. Parity Error handling, Calendar clock update, Swat interface, and InOutLd were
split into separate modules.
Changes: DisableInterrupts returns true if interrupts were on. The VERS and DCB structure were moved
into AltoDefs.d. The names of many OS modules changed. The long installation dialog permits more
precise control over the handling of memory errors. The erase disk dialog permits you to create an extra
big directory. The interface to Swat has changed - Swat.25 is the new version.
Version 15/5 -- March 15, 1978
Alto Operating System May 5, 1980 34
For Xerox Internal Use Only -- December 15, 1980










