SPL,L,M,O,T,C NAME DINIT(8) "REV G 770323" ! ! MAY BE KEPT IN A SEGMENT IF DESIRED. LET PD BE INTEGER(1),EXTERNAL LET EXEC,.XEC BE SUBROUTINE,EXTERNAL LET MIN BE FUNCTION,EXTERNAL LET MOVE. BE SUBROUTINE,EXTERNAL LET LUCNT,FRLST,ZZZ,LPAGE,FIRST,EXBAS,SYSIZ,\ LAST,WKTOP,LINKF,TSIZE,SESIZ,FETRK,LID,PDSIZ,\ SYMT,FREE4 BE INTEGER,EXTERNAL ! DINIT:SUBROUTINE GLOBAL ! ! INITIALIZES ALL OF WORKSPACE/SYMBOL TABLE MECHANISM ! "SGINT" MUST BE CALLED FIRST TO ESTABLISH "EXBAS"= ! LARGEST+1 ADDRESS OF SXL'S SEGMENTS. ! LET WATG BE INTEGER(14) INITIALIZE WATG TO " SXL WAITING FOR DISC TRACKS" MOVE.($SYMT,$EXBAS,[J_(SYSIZ+1)-<7])!MOVE SYMT TO EXTENSION AREA. FOR I_0 TO SYSIZ-<7 BY 200K DO$(EXBAS+I+3)_1 ! MARK PAGES CHANGED FOR I_1 TO 240 DO PD(I)_-1 FREE4,LUCNT,FRLST_0 ZZZ_EXBAS FOR LPAGE_0 TO SYSIZ DO PD(LPAGE+1)_LPAGE<-7 LPAGE_SYSIZ ! ASSIGN LARGEST PAGE REFERENCED FIRST_EXBAS+J ! ASSIGN FIRST AVAILABLE WORKSPACE ADDRESS. LAST,WKTOP_($1777K-7)OR 7!ASSIGN LAST AVAIL WKSPC ADDR !THE PAGE DIRECTORY *PD* NOW LOOKS LIKE THE FOLLOWING: ! PD(1) 000000K ! PD(2) 000200K ! PD(3) 000400K ! . . ! . . ! . . ! PD(N) 00XX00K WHERE XX::=2*(NUMBER OF PAGES - 1) ! PD(N+1) -1 ! PD(N+2) -1 ! . . ! . . ! . . ! PD(240) -1 ! ! IF THIS IS A SEGMENT INITIALIZATION, TRACKS HAVE ALREADY BEEN ! ALLOCATED. ! IF LINKF AND 60000K THEN RETURN ! ! ALLOCATE TRACKS FROM RTE RT3: SESIZ_5 !MAKE A GUESS RT2: CALL EXEC(4,SESIZ+100000K,FETRK,LID,TSIZE)!TRY TO GET THEM IF FETRK= -1 THEN[SESIZ_SESIZ-1; GOTO RT2] TSIZE_TSIZE>-1 !ASSIGN # PAGES / TRACK IFNOT SESIZ THEN\ NO TRACKS AVAILABLE.PRINT WAITING MSG & [CALL .XEC(2,WATG,14); CALL EXEC(7);\ SUSPEND GOTO RT3] !RETRY ON OPERATOR "GO" RT1: PDSIZ_MIN(240, TSIZE*SESIZ) RETURN END END END$