For Xerox Internal Use Only -- December 15, 1980 ALTO OPERATING SYSTEM REFERENCE MANUAL Compiled on: December 15, 1980 Xerox Palo Alto Research Center 3333 Coyote Hill Road Palo Alto, California 94304
For Xerox Internal Use Only -- December 15, 1980 Alto Operating System May 5, 1980 2 Alto Operating System Reference Manual OS version 19/16 1. Introduction This manual describes the operating system for the Alto. The manual will be revised as the changes. Parts of the system which are likely to be changed are so indicated; users should try to their use of these facilities in routines which can easily be modified, or better yet, avoid them entirely, possible.
For Xerox Internal Use Only -- December 15, 1980 Alto Operating System May 5, 1980 3 e) A 44-key keyboard, 5-finger keyset, and mouse f) A Diablo printer interface g) An Ethernet interface h) Interfaces for analog-to-digital and digital-to-analog conversion, for TV camera input, and for RS-232b (teletype) connection a i) A real-time clock and an interval timer (see table 2.1 for brief descriptions) 3.
For Xerox Internal Use Only -- December 15, 1980 Alto Operating System May 5, 1980 4 - A keyboard handler, which decodes keyboard interactions into a sequence of ASCII characters. - A display driver, which maintains a "system display," and handles the printing of characters on display. This is the DspStream package.
For Xerox Internal Use Only -- December 15, 1980 Alto Operating System May 5, 1980 The standard operations on streams are (S is the stream; "error" means that Errors(S, ec) is where ec is an error code): 5 executed, Gets(S) returns the next item. Some streams give an error if Endofs(S) true before the call, and others just wait for the next item. Puts(S, I) writes I into the stream as the next item; error if the stream is read-only, if there is no more space or if there is some hardware problem.
For Xerox Internal Use Only -- December 15, 1980 Alto Operating System May 5, 1980 6 The procedures that operate on disk streams are described in documentation for the "DiskStreams" software package contained in an appendix to this manual.
For Xerox Internal Use Only -- December 15, 1980 Alto Operating System May 5, 1980 7 3.4.2. Display streams Display streams are implemented with the "DspStream" package, described in separate documentation contained in an appendix to this manual. Below is a list of the functions included (in addition to the generic stream functions): CreateDisplayStream(nLines, pBlock, lBlock, Font [sysFont], wWidth [38], options [DScompactleft+DScompactright], zone [sysZone]) = a display stream.
For Xerox Internal Use Only -- December 15, 1980 Alto Operating System May 5, 1980 8 3.4.3. Keyboard Streams There is a single keyboard stream in which characters are buffered. The stream is always open, and may accessed through the system scalar "keys." The only non-null operations are Gets; Endofs, which is true no characters are waiting; and Resets, which clears the input buffer.
For Xerox Internal Use Only -- December 15, 1980 Alto Operating System May 5, 1980 9 3.5. Directory Access Most user programs do not concern themselves with file pointers, but use system routines which go from string names to streams. By a "file name" we mean a string which can be converted into a identifier by looking it up in a directory. File names are arbitrary Bcpl strings which contain only and lower case letters, digits, and characters in the string "+-.!$".
For Xerox Internal Use Only -- December 15, 1980 Alto Operating System May 5, 1980 10 verNew will create the file foo!4 by remaking the old file Note that this calculation does not verify that all between oldest and newest actually exist. foo!2. versions If only one file matches the lookup name, and its version number is 0, the file is simply overwritten (like verLatestCreate); a new version is not created. If no files of the given name exist, version number 0 of the file created (i.e.
For Xerox Internal Use Only -- December 15, 1980 Alto Operating System May 5, 1980 11 3.5.1. Lower-level directory functions Several functions are provided for those who wish to deal with directories and file names at a lower The format of an Alto file directory is documented in the Disks documentation; definitions appear AltoFileSys.d. level. in ParseFileName(destName, srcName, list, versionControl) = stream or 0.
For Xerox Internal Use Only -- December 15, 1980 Alto Operating System May 5, 1980 12 WriteDiskDescriptor() If changes have occurred, the copy of the disk descriptor sysDisk that resides in memory is written onto the disk "DiskDescriptor." for file ReadDiskDescriptor() This function restores the copy of the disk descriptor for sysDisk that resides in memory from the disk file "DiskDescriptor." 3.6. Memory management Table 3.1 shows the layout of memory. Table 3.
For Xerox Internal Use Only -- December 15, 1980 Alto Operating System May 5, 1980 13 3.8. The Basic File System A set of procedures for driving the disk hardware for Diablo Model 31 and 44 disk cartridges is included the operating system. These functions are documented in the "Disks" documentation, appended to manual. in this 3.9.
For Xerox Internal Use Only -- December 15, 1980 Alto Operating System May 5, 1980 14 TruePredicate() always returns -1. FalsePredicate() always returns 0. Noop() null operation; returns its first argument if any. Dvec(caller, nV1, nV2, ...) this routine allocates "dynamic" vectors in the current frame. caller is the name of the procedure calling Dvec.
For Xerox Internal Use Only -- December 15, 1980 Alto Operating System May 5, 1980 15 DoubleAdd(a, b) The parameters a and b each point to 2-word double-precision numbers. DoubleAdd does a_a+b. Note that subtraction can be achieved by adding the two’s complement; the two’s complement is the one’s complement (logical negation) plus 1. EnableInterrupts() Enables Alto interrupt system. DisableInterrupts() Disables interrupt system. Returns true if interrupts were on.
For Xerox Internal Use Only -- December 15, 1980 Alto Operating System May 5, 1980 16 CallFrame(f, a, b) Sends control to frame f and links it back to this one (i.e., when f returns, the CallFrame call returns). a and b are optional arguments. GotoFrame(f, a, b) Like CallFrame, but does not plant a return link. CoCall(a, b) CallFrame(CallersFrame(), a, b) CoReturn(a, b) Like CoCall, but does not plant return link. ReturnTo(label) Returns to a given label in the frame of the caller.
For Xerox Internal Use Only -- December 15, 1980 Alto Operating System May 5, 1980 normally is simply the contents of the command line which invoked the subsystem (see section 5). subroutine package GP contains a procedure to facilitate reading this string according to the by which it is normally formatted. This is not a standard routine but must be loaded with your (For more information on GP, see the "Alto Software Packages Manual.") 17 The conventions program. 3.12.
For Xerox Internal Use Only -- December 15, 1980 Alto Operating System May 5, 1980 18 3.13. Junta This section describes some procedures and conventions that can be used to permit exceptionally programs to run on the Alto, and yet to return cleanly to the operating system. The basic idea is to let program deactivate various operating system facilities, and thereby recover the memory devoted to code and data used to implement the facilities.
For Xerox Internal Use Only -- December 15, 1980 Alto Operating System May 5, 1980 This table of levels corresponds to the order in which the objects are located in the Alto memory: is at the very top; the bottom of levMain is the highest location for the Bcpl stack. 19 levBasic The "Junta" function is responsible for de-activating these levels, thereby permitting the space to reclaimed.
For Xerox Internal Use Only -- December 15, 1980 Alto Operating System sysZone = v May 5, 1980 20 // Patch my program’s version of the static //Read in the system font again: let s = OpenFileFromFp(fpSysFont) let l = FileLength(s)/2 let f = Allocate(sysZone, l) Resets(s); ReadBlock(s, f, l); Closes(s) sysFont = f+2 // Patch my program’s version of the static // Note that because os’s version is not patched, // I cannot call Ws or otherwise default dsp.
For Xerox Internal Use Only -- December 15, 1980 Alto Operating System May 5, 1980 If a program that generates an event has destroyed the event communication region, it is still possible pass the event to the operating system. For example, if the memory diagnostic is running and an connection request arrives, the mechanism can be used to load the operating system and pass eventRFC message to it. The mechanism is described in the next section. 21 to Ethernet the 3.15.
For Xerox Internal Use Only -- December 15, 1980 Alto Operating System May 5, 1980 22 4. (This step applies only if simulating InLd.) Now let msa=rv 2. This points to a location where a brief message can be stored. Set msa!0=1. Then for i=0 to lInLdMessage-1 do msa!(i+1) = PrototypeEventVector!i. 5. Jump to location 3, never to return. 4. Data structures This section describes the data structures used by the operating system that may be required by users. 4.1.
For Xerox Internal Use Only -- December 15, 1980 Alto Operating System May 5, 1980 23 4.6. Operating System Status Information A good deal of information is retained in memory that describes the state of the Alto. Much of information is of relevance to programmers, and is contained in some static scalars: this OsVersion The version number of the operating system. This number incremented with each new release of the operating incorporating changes however minor.
For Xerox Internal Use Only -- December 15, 1980 Alto Operating System May 5, 1980 24 ErrorLogAddress This static points to a network address of a spot where reports (for such things as parity errors) should be sent. structure is a "port," as defined in Pup documentation. ClockSecond This static points to a double-precision integer that gives count of number of RCLK ticks (when RCLK is viewed returning a 32-bit number) in a second. This number is used keeping time, and is nominally 1680000.
For Xerox Internal Use Only -- December 15, 1980 Alto Operating System May 5, 1980 25 @(OsBuffer>>OsBUF.In) = i OsBuffer>>OsBUF.In = newIn resultis -1 ] GetItemCount() = valof //Returns count of items in buffer [ let c = OsBuffer>>OsBUF.In-OsBuffer>>OsBUF.Out if c ls 0 then c = c+OsBuffer>>OsBUF.Last-OsBuffer>>OsBUF.First resultis c ] ResetItemBuffer() be //Set buffer to empty [ OsBuffer>>OsBUF.In = OsBuffer>>OsBUF.First OsBuffer>>OsBUF.Out = OsBuffer>>OsBUF.
For Xerox Internal Use Only -- December 15, 1980 Alto Operating System May 5, 1980 26 4.8. The Bcpl stack The Bcpl compiler determines the format of a frame and the calling convention. The strategy for stack frames, however, is determined by the operating system. We begin by describing the conventions, which are useful to know for writing machine-language routines. allocating compiler A procedure call: p(a1, a2, ...), is implemented in the following way.
For Xerox Internal Use Only -- December 15, 1980 Alto Operating System May 5, 1980 27 5. The Executive The Alto Executive is itself a subsystem and lives on the file Executive.Run; if you don’t like it, you write your own. It is currently invoked from scratch after the operating system is booted, and whenever subsystem returns. The Executive is fully documented in the "Alto Subsystems" manual. can a 6. Operating Procedures 6.1.
For Xerox Internal Use Only -- December 15, 1980 Alto Operating System May 5, 1980 When the Scavenger finishes, the attempt to invoke the Executive may fail because Scavenger invoked from another disk. Try booting. If unsuccessful, go on to step 2. 28 was 2. Use Ftp to get fresh copies of SysFont.al and Executive.Run. Again, this can be done in two ways: Place a good disk in the machine and invoke Ftp.
For Xerox Internal Use Only -- December 15, 1980 Alto Operating System May 5, 1980 29 6.4. Miscellaneous information The key in the lower right corner of the keyboard on a Microswitch keyboard () or in upper right on an ADL keyboard (FR1) is called the Swat key. If you press it, as well as the keys, the Swat debugger will be invoked. If you do this by mistake, P will resume program without interfering with its execution, and K will abort your program.
For Xerox Internal Use Only -- December 15, 1980 Alto Operating System May 5, 1980 30 Name Opcode Address Function CYCLE JSRII JSRIS CONVERT DIR EIR BRI RCLK 60000 64400 65000 67000 61000 61001 61002 61003 C D D D - SIO BLT 61004 61005 - BLKS 61006 - SIT 61007 - JMPRAM RDRAM 61010 61011 - WRTRAM DIRS VERS 61012 61013 61014 - DREAD DWRITE DEXCH 61015 61016 61017 - MUL DIV 61020 61021 - BITBLT 61024 - AC0_AC0 lcy (if C ne 0 then C else AC1); smashes AC1 AC3_PC+1; PC_rv (rv (P
For Xerox Internal Use Only -- December 15, 1980 Alto Operating System May 5, 1980 31 Device Number of drives/Alto Number of packs Diablo 31 1 or 2 1 removable Diablo 44 1 1 removable 1 fixed Number of cylinders Tracks/cylinder/pack Sectors/track Words/sector 203 2 12 2 header 8 label 256 data 3072 4872 406 2 12 same Rotation time Seek time (approx.) min-avg-max Average access to 1 megabyte 40 15+8.
For Xerox Internal Use Only -- December 15, 1980 Alto Operating System LastMemLoc ... StartSystem ... StackBase ... StackEnd ... EndCode ... StartCodeArea ... 400-777 ... 300-377 ... 20-277 ... 0-17 May 5, 1980 32 Last memory location Base of system Root of stack; stack extends downward from here Top of stack, which grows down End of user program+1 This space contains user code and statics, loaded as specified by arguments to Bldr.
For Xerox Internal Use Only -- December 15, 1980 Alto Operating System May 5, 1980 33 Operating System Change History This file contains an inverse chronological listing of changes to the Alto operating system. The "normal way" to install a new operating system is to retrieve a copy of the files NewOS.Boot, Sys.Syms, Sys.Errors and Sys.Bk that are being distributed. Say "Install NewOS.boot" to the Exec, answer the configuration questions and then delete NewOs.Boot.
For Xerox Internal Use Only -- December 15, 1980 Alto Operating System May 5, 1980 34 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.
For Xerox Internal Use Only -- December 15, 1980 Alto Operating System May 5, 1980 35 Fixed a bug in the file date code; introduced another bug in the same code. Version 14/5 -- March 1, 1978 Additions: ReadCalendar and SetCalendar - analogus to DayTime and SetDaytime only they conform the new time standard. DayTime and SetDaytime will continue work correctly until April 30, 1978. A declaration file, AltoDefs.d was created; some things were moved there from SysDefs.d. Definitions of format of .
For Xerox Internal Use Only -- December 15, 1980 Alto Operating System May 5, 1980 36 Changes: Several bugs in parity error detection and reporting were removed. Version 7/5 -- August 10, 1976 Additions: The Idle procedure and corresponding static lvIdle; lvParityPhantomEnable global static; installation options. Minor changes: Two bugs in PositionPage are fixed -- one permitted read-only files to be lengthened.
For Xerox Internal Use Only -- December 15, 1980 Alto Operating System May 5, 1980 (10) The introduction of the "disk" object has added some statics: sysDisk, some functions: LnPageSize, and optional "disk" arguments to disk stream opening functions.
For Xerox Internal Use Only -- December 15, 1980 Alto Operating System May 5, 1980 38 Operating System Software Packages Several of the modules of the operating system are also available as software packages in case the programmer wishes to include them in overlays, or modify them, etc. The sources are in OSSources.dm, and the binaries are in OSBrs.dm.
For Xerox Internal Use Only -- December 15, 1980 Disk Streams September 9, 1979 39 Disk Streams: A Byte-Oriented Disk Input/Output Package The disk streams package provides facilities for doing efficient sequential input/output to and from disk files. It also includes operations for doing random positioning with moderate efficiency, and performing various housekeeping operations. An introduction to streams can be found in the Operating System Manual.
For Xerox Internal Use Only -- December 15, 1980 Disk Streams September 9, 1979 40 A file address FA is a pointer to a specific byte in a file. It includes the address of the byte, divided into page number (the page size depends on the disk in use; normally pages contain 512 bytes) and a number.
For Xerox Internal Use Only -- December 15, 1980 Disk Streams September 9, 1979 41 ksTypeReadOnly ksTypeWriteOnly ksTypeReadWrite Its itemSize may be one of (see Streams.D for definitions): charItem wordItem If you supply a cleanup routine, it will be called with the stream as parameter just before the stream destroyed by a Close.
For Xerox Internal Use Only -- December 15, 1980 Disk Streams September 9, 1979 42 GetCompleteFa(s, completeFileAddress) stores both the file pointer and the current position in complete file address (CFA). This is enough information to create a stream (passing the file pointer CreateDiskStream) and then to return to the current position (passing the file address to JumpToFa). the to KsBufferAddress(s) returns address: returns the address in memory of the buffer for the stream.
For Xerox Internal Use Only -- December 15, 1980 Disk Streams September 9, 1979 The procedures in the DiskStreamsScan module permit reading (but not writing) of a file to proceed at to full disk speed, if the amount of computation to be performed per page is not too great (about milliseconds).
For Xerox Internal Use Only -- December 15, 1980 Disk Streams September 9, 1979 addresses in the buffer. CurrentPos is the address of the first byte to be transferred, and endPos is address of the first byte which should not be transferred. CurrentPos is rounded up to a word if the size is wordItem, and endPos is rounded up to a word.
For Xerox Internal Use Only -- December 15, 1980 Display stream package February 20, 1979 45 Display stream package A library package is now available which provides display streams of great flexibility. Special features include multiple fonts, repositioning to any bit position in the current line (or, under proper circumstances, any line), selective erasing and polarity inversion, and better utilization of the available bitmap space. The package consists of two files, DspStreamB.Bcpl and DspStreamA.
For Xerox Internal Use Only -- December 15, 1980 Display stream package February 20, 1979 46 ShowDisplayStream(s, how [DSbelow], otherStream [dsp]): This procedure controls the presentation of a chain of display control blocks on the screen. If how id DSbelow, the stream will be displayed immediately below otherStream; if DSabove, immediately above; if DSalone, it will be the only stream displayed; if DSdelete, the stream s will be removed from the screen.
For Xerox Internal Use Only -- December 15, 1980 Display stream package February 20, 1979 47 The display stream package writes characters using a very fast assembly language routine until either the current line is full or it encounters a control character. In either of these situations it calls a scrolling procedure whose address is a component of the stream. The scrolling procedure is called with the same arguments as PUTS, i.e. (ds, char), and is expected to do whatever is necessary.
For Xerox Internal Use Only -- December 15, 1980 Alloc February 19, 1979 7:23 PM 48 Alloc -- A Basic Storage Allocator The Alloc package contains a small and efficient non-relocating storage allocator. It doesn’t do much, but what it does it does very well. Initially the user gives the allocator one (or several) blocks of storage by calls on InitializeZone. The user can later add storage to a zone by calling AddToZone. The function Allocate returns a pointer to a block allocated from a given zone.
For Xerox Internal Use Only -- December 15, 1980 Alloc February 19, 1979 7:23 PM If an error is detected, the call MalFormedRoutine(zone, errCode) is executed. Values of the error are: ecOutOfSpace ecZoneAdditionError ecBlockNotAllocated ecIllFormed 1801 1802 1803 1804 49 code Not enough space to satisfy a request. Too large or too small addition to zone. Free has been called with a bad block. The consistency-checker has found some error in the zone. Consult Alloc.Bcpl.
For Xerox Internal Use Only -- December 15, 1980 Alloc February 19, 1979 7:23 PM let stack = empty while n gr 1 do [ let stkent = Allocate(FactZone, size STKENT/wordsize) stkent>>STKENT.link = stack stkent>>STKENT.value = n stack = stkent n = n-1 ] let value = 1 while stack ne empty do [ value = value*(stack>>STKENT.value) let stkent = stack stack = stkent>>STKENT.
For Xerox Internal Use Only -- December 15, 1980 Disks & Bfs August 10, 1980 51 Disks: The Alto File System This document describes the disk formats used in the Alto File System. It also describes a "disk object," a Bcpl software construct that is used to interface low-level disk drivers with packages that implement higher-level objects, such as streams.
For Xerox Internal Use Only -- December 15, 1980 Disks & Bfs August 10, 1980 52 completely empty page) to 512 (for a completely full page). ([Trident]: A full page contains characters.) 2048 A real file id, which is a three-word unique identifier for the file. The user normally deals with file ids (see the discussion of file pointers, below), which are automatically converted into real file when a label is needed.
For Xerox Internal Use Only -- December 15, 1980 Disks & Bfs August 10, 1980 53 A page number between 0 and (n-1), inclusive. A numchars word = 512 if i
For Xerox Internal Use Only -- December 15, 1980 Disks & Bfs August 10, 1980 54 The "defaultVersionsKept" entry in the DiskDescriptor records the number of old versions of files should be retained by the system. If this entry is 0, no version accounting is done: new files simply old ones. Version numbers have been deimplemented.
For Xerox Internal Use Only -- December 15, 1980 Disks & Bfs August 10, 1980 55 RealDiskDA: Converts a virtual disk address into a real disk address. InitializeDiskCBZ: Initializes a Command Buffer Zone (CBZ) for managing disk transfers. DoDiskCommand: Queues a Command Buffer (CB) to initiate a one-page transfer. GetDiskCb: Obtains another CB, possibly waiting for an earlier transfer to complete. CloseDisk: Destroys the disk object.
For Xerox Internal Use Only -- December 15, 1980 Disks & Bfs August 10, 1980 CAs: a vector indexed by page number in which the ith entry contains the core address to or from page i should be transfered. The note for DAs applies here also. 56 which fp (or filePtr): file pointer, described above. In most cases, the leader page address is not used. action: a magic number which specifies what the disk should do. Possible values are declared as constants in Disks.
For Xerox Internal Use Only -- December 15, 1980 Disks & Bfs August 10, 1980 57 The default value of returnOnCheckError is false. If returnOnCheckError is true and an error encountered, ActOnDiskPages will not retry a check error and then report an error. Instead, it will -(#100+i), where i is the page number of the last page successfully transferred. This feature ActOnDiskPages to be used when the user it not sure whether the disk address he has is correct.
For Xerox Internal Use Only -- December 15, 1980 Disks & Bfs August 10, 1980 58 CreateDiskFile(disk, name, filePtr, dirFilePtr, word1 [0], useOldFp [false], pageBuf[0]) Creates a new disk file and writes its leader page. It returns the serial number and leader disk address the FP structure filePtr. A newly created file has one data page (page 1) with numChars eq 0.
For Xerox Internal Use Only -- December 15, 1980 Disks & Bfs August 10, 1980 (The address, lvRealDA, is passed because a real disk address may occupy more than 1 word.) procedure returns eofDA if the real disk address is zero (end-of-file), and fillInDA if the real disk does not correspond to a legal virtual disk address in this file system. RealDiskDA(disk, virtualDA, lvRealDA) computes the real disk address and stores it in rv lvRealDA. function returns true if the virtual disk address is legal, i.e.
For Xerox Internal Use Only -- December 15, 1980 Disks & Bfs August 10, 1980 60 the error routine which was passed to InitializeDiskCBZ; the way this is done is explained in the description of ActOnDiskPages above. (If the error routine returns, GetDiskCb will proceed as if an error hadn’t occurred.) Otherwise, after doing a restore on the disk if errorCount ge disk>>DSK.retryCount/2, it reinitializes the CBZ with firstPage equal to the page with the error, and returns to cbz>>CBZ.
For Xerox Internal Use Only -- December 15, 1980 Disks & Bfs 1106 1107 1108 August 10, 1980 61 can’t create an essential file during NewDisk bit table problem during NewDisk attempt to access nonexistant bit table page 9. Implementation -- Bfs The implementation expects a structure BFSDSK to be passed as the "disk" argument to the routines.
For Xerox Internal Use Only -- December 15, 1980 Disks & Bfs August 10, 1980 BFSTryDisk(drive, track, sector[0]) returns true if a seek command to the specified track on the drive is successful. Note that the drive argument can contain an imbedded partition number. Seeks track zero will fail if the drive is not on line. Seeks to track BFS31NTracks+1 will fail if the drive is model 31. 62 specified to a 10.
For Xerox Internal Use Only -- December 15, 1980 INDEX December 15, 1980 #176777 . . . . . . . . . . . . . . . . . . 25 abort ActOnDiskPages AddToZone Alloc Allocate Alto disks AltoFileSys.D AltoVersion AppendVersion AssignDiskPage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
For Xerox Internal Use Only -- December 15, 1980 INDEX December 15, 1980 DCseekOnly DCwriteD DCwriteHLD DCwriteLD Default arguments DefaultArgs DeleteDiskPages DeleteFdEntry DeleteFile Directory Directory Access Directory Files Dirty DisableInterrupts disk addresses Disk Descriptor Disk file Disk files disk name disk object Disk Pack Disk stream Disk streams DiskDescriptor Disks Disks.
For Xerox Internal Use Only -- December 15, 1980 INDEX December 15, 1980 file pointer file pointers file position File System file version number FileLength FilePos fillInDA FindFdEntry Finish finish+1 FinishScanStream FixedLeft font font format FP fpComCm fpDiskDescriptor fpExecutive fpRemCm fpSysBoot fpSysDir fpSysFont fpUserCm FramesCaller FrameSize Free FreeFixed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
For Xerox Internal Use Only -- December 15, 1980 INDEX December 15, 1980 Keyboard Keyboard Buffer Keyboard Streams keys KsBufferAddress KsGetDisk KsHintLastPageFa KsSetBufferAddress ksTypeReadOnly ksTypeReadWrite ksTypeWriteOnly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
For Xerox Internal Use Only -- December 15, 1980 INDEX December 15, 1980 pages ParseFileName Password PositionPage PositionPtr Putbacks Puts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
For Xerox Internal Use Only -- December 15, 1980 INDEX December 15, 1980 Terminating Execution Tfs Timer Transfer rates Trident TruePredicate TruncateDiskStream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 51 15 31 51 14 6, 42 Umax Umin Usc user name User.