mirror of
https://github.com/PDP-10/its.git
synced 2026-01-11 23:53:12 +00:00
89 lines
3.9 KiB
Plaintext
Executable File
89 lines
3.9 KiB
Plaintext
Executable File
Copyright (c) 1999 Massachusetts Institute of Technology
|
||
See the COPYING file at the top-level directory of this project.
|
||
------------------------------
|
||
|
||
;Archive device format:
|
||
|
||
;The first page of an archive device file is its directory.
|
||
;The remaining pages are data.
|
||
|
||
;The directory may not even be looked at unless the archive is "locked".
|
||
.SEE LOCK,UNLOCK ;Only one ARCDEV can lock a given archive at a time.
|
||
;Shuffling the directory should not be done in place, even when it is locked.
|
||
;Instead, use DIRGET to make a copy and DIRPUT to store the copy back in.
|
||
;When a file is open, the address of its data area is remembered in FILADR.
|
||
;The data area of a file never moves, and the file can be open only in one
|
||
;direction at a time, so reading or writing the data area requires no interlocking.
|
||
|
||
;The format of the archive device directory is approximately that of
|
||
;an I.T.S. UFD. The differences are:
|
||
|
||
;In the fixed header, word 0 (UDESCP) contains SIXBIT /ARC1!!/
|
||
;Word 1 points to the beginning of the name area, as in UFDs.
|
||
;Word 2 points to the end of the data area.
|
||
;Word 3 is used to tell when the archive needs to be cleaned
|
||
; because it is being touched for the first time since the system came up.
|
||
;Word 4 contains what is supposed to be the creation date of the archive.
|
||
; Since locking the archive device clobbers the creation date,
|
||
; we store it here so we can restore it after clobbering it.
|
||
;Word 5 similarly stores the dumped bit.
|
||
|
||
;There is nothing analogous to the "descriptors" in a disk UFD.
|
||
|
||
;Random info in UFD
|
||
UDESCP==0 ;SIXBIT /ARC1!!/
|
||
UDNAMP==1 ;Address in directory of first filename block.
|
||
UDDATP==2 ;Address of first free word past data area of last file.
|
||
UDINIT==3 ;Time of startup of last run of system during which this
|
||
;archive was cleaned (ARCCLN). If not same as startup time
|
||
;of this run of the system, we must do ARCCLN.
|
||
UDCRDT==4 ;This word holds what ought to be the creation date
|
||
;of the archive device file itself.
|
||
;0 => this archive antedates the UDCRDT word, in which
|
||
;case it gets set from today's date.
|
||
UDDMPB==5 ;This is like UDCRDT but stores the dumped bit.
|
||
|
||
UDNMIN==10 ;If UDNAMP is less than this, there is no room for another filename block.
|
||
|
||
;In each filename block, the UNFN1, UNFN2, UNDATE and UNREF words are
|
||
;just as in UFDs. The UNRNDM word is slightly different:
|
||
|
||
LUNBLK==5 ;Number of words in each filename block.
|
||
UNFN1==0 ;First file name.
|
||
UNFN2==1 ;Second file name.
|
||
UNRNDM==2 ;All kinds of random info:
|
||
;The RH is the address in the file of the start of the file's data area header.
|
||
;The LH contains these bits:
|
||
UNWRIT==4 ;Open for writing. Not actually maintained in the archive,
|
||
;Just reflected to the user when he reads ARC:.FILE. (DIR).
|
||
UNCDEL==20 ;Delete this file when it is closed.
|
||
UNIGFL==24 ;Bits to ignore file
|
||
UNWRDC==301200,, ;Word count of last block mod 2000.
|
||
;This information really lives in UHWCNT, and is just reflected
|
||
;here when the user reads the image directory.
|
||
UNDATE==3 ;Date and time file last modified.
|
||
UNTIM==2200,, ;Compacted time of creation
|
||
UNYMD==222000,, ;Y,M,D of creation
|
||
UNMON==270400,, ;Month
|
||
UNDAY==220500,, ;Day
|
||
UNYRB==330700,, ;Year
|
||
UNREF==4 ;Reference date same as left half of undate
|
||
UNREFD==222000,, ;Reference date byte pointer
|
||
UNAUTH==111100,, ;MFD index of author, all 1=> no directory.
|
||
UNBYTE==001100,, ;File byte size and length info.
|
||
;LET S=BITS PER BYTE, C=COUNT OF UNUSED BYTES IN LAST WD
|
||
;400+100xS+C S=1 TO 3 C=0 TO 35.
|
||
;200+20xS+C S=4 TO 7 C=0 TO 8
|
||
;44+4xS+C S=8 TO 18. C=0 TO 3
|
||
;44-S S=19. TO 36. C=0
|
||
;NOTE THAT OLD FILES HAVE UNBYTE=0 => S=36.
|
||
|
||
|
||
;The data of a file starts with two words of header information:
|
||
UHWCNT==0 ;Total length of the file's data, including header, in words.
|
||
UHREFC==1 ;RH: Number of archives using the file, in either direction.
|
||
;LH: -1 if file open for writing.
|
||
UHNAMP==2 ;Unused
|
||
UHBLEN==3 ;Length of this header; offset to 1st actual data word.
|
||
|