1
0
mirror of https://github.com/PDP-10/its.git synced 2026-02-07 17:01:19 +00:00
Files
PDP-10.its/src/system/fsdefs.43
2016-10-31 08:41:05 +01:00

217 lines
7.7 KiB
Plaintext
Executable File
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
.AUXIL
IFNDEF DEFSYM,[ ;ALLOW USER TO USE SYMBOLS IN OTHER WAYS IF HE WISHES.
;BUT NORMALLY, DEFSYM FOO==BAR DOES FOO==BAR WITH ERROR CHECK.
DEFINE DEFSYM X/
IRPS Z,,[X]
IFNDEF Z,X
.ELSE [
$$TEM1==Z
X
IFN Z-$$TEM1,.ERR Z MULTIPLY .QUOTE`.QUOTE/DEFINED/`
]
.ISTOP
TERMIN TERMIN
IFLE .MLLIT,.ERR .MLLIT MUST BE 1; SETTING IT TO 1.
.MLLIT==1
$$TEMP==1
]
.ELSE $$TEMP==0
;FILE SYSTEM PARAMETERS - APPLIES TO ALL ITS MACHINES
;9/5/79 - tut format changed!
;8/19/90 - DM "funny" bit flushed
;MFD INFO
IFDEF NBLKS,[ ;MFDBLK KNOWN ONLY IF .INSRT APPROPRIATE PHYSICAL PARAMS FILE
DEFSYM MFDBLK==NBLKS/2-1 ;LOC ON DISK
DEFSYM MFDCYL==MFDBLK/NBLKSC
DEFSYM MFDSRF==<MFDBLK-MFDCYL*NBLKSC>*SECBLK/NSECS
DEFSYM MFDSEC==<MFDBLK-MFDCYL*NBLKSC>*SECBLK-MFDSRF*NSECS
]
;RANDOM INFO IN MFD
DEFSYM MDNUM==0 ;ASCENDING DIR NUM
DEFSYM MDNAMP==1 ;PNTR TO ORG OF USER NAME BLOCK AREA
DEFSYM MDYEAR==2 ;CURRENT YEAR
DEFSYM MPDOFF==3 ;DE-CORIOLIS CLOCK OFFSET
DEFSYM MPDWDK==4 ;PREFERRED WRITING DISK (PHYSICAL DRIVE #)
DEFSYM MDCHK==5 ;THIS WORD MUST BE M.F.D. (FOR CHECKING)
DEFSYM MDNUDS==6 ;NUMBER USER DIRECTORIES (FOR CHECKING ONLY)
DEFSYM LMIBLK==7 ;TOTAL STG USED BY HACKS LIKE THIS
;USER NAME BLKS FROM C(MDNAMP) TO END
DEFSYM LMNBLK==2 ;# WDS/BLK
DEFSYM MNUNAM==0 ;6BIT USER NAME
;SECOND WORD OF A USER-NAME BLOCK IS ZERO.
;DECUUO CONTAINS A KLUDGE WHICH DEPENDS ON THIS,
;PLEASE NOTIFY BUG-DECUUO BEFORE CHANGING IT.
;TUT INFO
IFDEF NBLKS,[
DEFSYM TUTBLK==MFDBLK-NTUTBL ;LOC ON DISK
DEFSYM TUTCYL==TUTBLK/NBLKSC
DEFSYM TUTSRF==<TUTBLK-TUTCYL*NBLKSC>*SECBLK/NSECS
DEFSYM TUTSEC==<TUTBLK-TUTCYL*NBLKSC>*SECBLK-TUTSRF*NSECS
]
DEFSYM TUTBYT==3 ;SIZE OF BYTES (USED TO BE 4)
DEFSYM TUTBP==<440000+TUTBYT_6>,,
DEFSYM TUTEPW==36./TUTBYT ;NUMBER OF ENTRIES PER WORD
DEFSYM TUTMAX==1_TUTBYT
DEFSYM TUTLK==TUTMAX-1 ;HIGHEST CODE MEANS LOCKED OUT
DEFSYM TUTMNY==TUTLK-1 ;TUT MANY OR MORE REFS
;RANDOM INFO IN TUT (AT THE FRONT)
DEFSYM QPKNUM==0 ;PACK #
DEFSYM QPAKID==1 ;PACK ID
DEFSYM QTUTP==2 ;FREE SPACE POINTER TO TRACK AREA. ADVANCE BY CYLINDERS
DEFSYM QSWAPA==3 ;SWAPPING AREA. FIRST TRACK OF NON-SWAPPING AREA
;NEW FILES WILL NOT BE WRITTEN LOWER THAN THIS.
DEFSYM QFRSTB==4 ;FIRST BLOCK TUT'ED
DEFSYM QLASTB==5 ;LAST BLOCK TUT'ED
DEFSYM QTRSRV==6 ;-1 IF ONLY ALLOCATED DIRS CAN HAVE FILES ON THIS PACK
;IF NOT 0 AND NOT -1, SIXBIT NAME OF "SECONDARY" PACK
;STG FOR RANDOM INFO ^
DEFSYM LTIBLK==20 ;BYTES MAPPING THE DISK START HERE
;UFD INFO
;IF A IS RELATIVE LOCATION OF MFD ENTRY, USER DIR IS LOCATED IN
;TRACK NUMBERED <A-2000+2*MDNUDS>/2 (SEE QFL2)
DEFSYM UFDBYT==6 ;SIZE OF BYTES (Do not change!)
DEFSYM UFDBPW==36./UFDBYT ;NUMBER OF BYTES PER WORD
;RANDOM INFO IN UFD
DEFSYM UDESCP==0 ;FS PNTR TO DESC AREA
DEFSYM UDNAMP==1 ;PNTR TO ORG OF NAME AREA
DEFSYM UDNAME==2 ;USER NAME (FOR CHECKING)
DEFSYM UDBLKS==3 ;LEFT HALF HAS AMOUNT OF SPACE ALLOCATED (NOT USED
; CURRENTLY BY SYSTEM), RIGHT HALF HAS NUMBER OF BLOCKS USED.
DEFSYM UDALLO==4 ;IF NONZERO, LEFT HALF HAS DISK NUMBER, RIGHT
; HALF HAS AMOUNT OF SPACE ALLOCATED
DEFSYM UDDESC==11. ;FIRST LOC AVAIL FOR DESC
; 8/19/90 Due to the larger size of RP07s it was necessary to officially
; flush the DM "funny" bit. This change only changes the comments in this
; file, but any program that interprets UFD descriptors needs to be fixed
; to not mask that bit out (as most of them currently do). Fortunately all
; the known ITS filesystems have zeros in all their "funny" bits, so the
; change is upward compatible.
; UFD descriptor format described:
;
; Each 6-bit byte is taken in turn and used to compute a sequence of block
; numbers. If N is the current descriptor byte, and B is the current block
; number (initially undefined), then N is interpreted as follows:
;
; 0 Marks the end of the file description.
;
; 1 to UDTKMX (1 to 14) "Take" N blocks.
; Blocks B through B + N - 1 are the next N blocks of the file.
; Set B := B + N .
;
; UDTKMX+1 to UDWPH-1 (15 to 36) "Skip" B - UDTKMX blocks.
; Set N := N + B - UDTKMX .
; (ITS has been broken for years such that it never uses this
; UFD descriptor code!)
;
; UDWPH (37) Write Place Holder
; A noop. Used to reserve space in directories for files that are
; being written. Just skip over it and read the next byte.
;
; 40 - 77 Load address and take 1.
; Read the next NXLBYT descriptor bytes (NXLBYT=2), N2 and N3.
; Set B := LSH(AND(N, 37), 12.) + LSH(N2, 6) + N3 .
; Block B is the next block in the file.
; Set B := B + 1 .
;
; A zero length file is described as two bytes: UDWPH then 0. UDWPH does
; not otherwise normally appear in UFD descriptions for closed files.
; Note that a legal description must use codes 40 - 77 before it can use
; any code other than UDWPH.
; Links are described as a sequence of SIXBIT characters terminated with a
; 0 byte. The directory, first and second name are stored in order.
; The first two components are terminated with a ";" if they are less than
; 6 characters long. ";" (73), ":" (72) and " " (0) are quoted by
; preceding them with a ":". Some examples:
;
; Link target names: Bytes stored in directory:
;
; 123456 123456 123456 "123456123456123456 "
; ALAN FOO BAR "ALAN;FOO;BAR "
; .MAIL. NAMES > ".MAIL.NAMES;> "
; .MAIL. LISTS MSGS ".MAIL.: LISTS: : MSGS "
; MOON LUNAR :EJ "MOON;LUNAR;::EJ "
;
; There are a lot of illegal or wasteful possibilities for link descriptors
; ("A;B ", "A;B;C;D ", ":A;:B;:C ", etc.), which is suprising since
; somebody was clearly trying to compress them into as few bytes as
; possible.
; Here is the pre 8/19/90 comment describing UFD descriptors:
;
; ;UFD DESCRIPTORS
; ;0 => FREE 1-UDTKMX => TAKE NEXT N
; ;UDTKMX+1 THRU UDWPH-1 => SKIP N-UDTKMX AND TAKE ONE
; ;UDWPH => WRITE-PLACE-HOLDER
; ;40 BIT SET => LOAD ADDRESS. LOWER 5 BITS PLUS NEXT NXLBYT (2)
; ; CHARS (17 BITS IN ALL)
; ;40 BIT & 20 BIT => "FUNNY" BLOCK IF DMDSK. WHAT IS THIS, ANYWAY?
; ;END BY 0
;
; ;IF LINK DESCR
; ;6 CHAR OR UNTIL ; = SYS NAME. MUST HAVE NO CHAR = 0 IN THIS OR
; ; NEXT 2 NAMES
; ;NEXT CHAR QUOTED BY : (FOR NAMES WITH : OR ;)
; ;NEXT CHAR N1
; ;NEXT CHAR N2
; ;END BY 0
DEFSYM UDTKMX==12. ;HIGHEST "TAKE N" CODE
DEFSYM UDWPH==31. ;PLACE HOLDER ON WRITE (OR NULL FILE)
DEFSYM UDSKMX==UDWPH-UDTKMX-1 ;# BLOCKS THAT CAN BE SKIPPED
DEFSYM NXLBYT==2 ;# ADDITIONAL BYTES FOR LOAD ADDR
;IN SYSTEM THIS IS DEFINED AT FRONT OF FILE
;NAME AREA DATA
DEFSYM LUNBLK==5 ;WDS/NAME BLK
DEFSYM UNFN1==0 ;FIRST FN
DEFSYM UNFN2==1 ;SECOND FN
DEFSYM UNRNDM==2 ;ALL KINDS OF RANDOM INFO
DEFSYM UNDSCP==1500,, ;PNTR TO DESC
DEFSYM UNPKN==150500,, ;PACK #
DEFSYM UNLINK==1 ;LINK BIT
DEFSYM UNLNKB==220100,,
DEFSYM UNREAP==2 ;IF 1, DONT REAP FILE
DEFSYM UNWRIT==4 ;OPEN FOR WRITING
DEFSYM UNMARK==10 ;GC MARK BIT
DEFSYM UNCDEL==20 ;DEL WHEN CLOSED
DEFSYM DELBTS==20 ;DELETED -- IGNORE
DEFSYM UNIGFL==24 ;BITS TO IGNORE FILE
DEFSYM UNWRDC==301200,, ;WORD COUNT OF LAST BLOCK MOD 2000
DEFSYM UNDUMP==400000 ;HAS BEEN DUMPED
DEFSYM UNDATE==3 ;DATE ETC.
DEFSYM UNTIM==2200,, ;COMPACTED TIME OF CREATION
DEFSYM UNYMD==222000,, ;Y,M,D OF CREATION
DEFSYM UNMON==270400,, ;MONTH
DEFSYM UNDAY==220500,, ;DAY
DEFSYM UNYRB==330700,, ;YEAR
DEFSYM UNREF==4 ;REFERENCE DATE SAME AS LEFT HALF OF UNDATE
DEFSYM UNREFD==222000,, ;REFERENCE DATE BYTE POINTER
DEFSYM UNAUTH==111100,, ;MFD INDEX OF AUTHOR, ALL 1=> NO DIRECTORY
DEFSYM 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.
IF1 IFDEF NUDSL, IFG NUDSL*LMNBLK+LMIBLK-2000,.ERR MFD LOSES
IFN $$TEMP,EXPUNG DEFSYM