;;; Copyright (c) 1999 Massachusetts Institute of Technology ;;; ;;; This program is free software; you can redistribute it and/or ;;; modify it under the terms of the GNU General Public License as ;;; published by the Free Software Foundation; either version 3 of the ;;; License, or (at your option) any later version. ;;; ;;; This program is distributed in the hope that it will be useful, ;;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;;; General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with this program; if not, write to the Free Software ;;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. .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! ;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==*SECBLK/NSECS DEFSYM MFDSEC==*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==*SECBLK/NSECS DEFSYM TUTSEC==*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 /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 ;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