1 TITLE SYSINI - SYSTEM INITIALIZATION AND RESTART
2 SUBTTL TH/GH TS 11 NOV 68 V006
4 ;PUT VERSION NUMBER IN GLOB LISTING AND LOADER STORAGE MAP
7 EXTERNAL NULJOB,ONCE,SYSBEG,SYSBG1,SYSEND
8 EXTERNAL CORTAB,COREP,CORLST,CORTAL,CORBLK,SYSSIZ,LINKSR
12 \f;INITIALIZE SYSTEM DATA STORAGE
14 INTERNAL FTDISK,SYSINI,FTSWAP,JSR2,CRSHAC,CRSH16,CRSH17,CORLIM
17 SYSINI: CONO APR,200000 ;IO RESET
18 JSR1: JSR ONCE ;DO ONCE ONLY CODE ONCE
19 JSR2: JSR LINKSR ;LINK IO SERVICE ROUTINES
22 MOVSM TAC,JSR1 ;CLEAR SYSTEM DATA STORAGE
24 HRRI TAC,SYSBG1 ;CLEAR SYSTEM DATA STORAGE
26 MOVSI TAC, DVDIRIN+TTYATC+TTYUSE
27 HRRI TAC,ASSCON+ASSPRG
28 HLRZ DEVDAT,DEVLST ;SCAN ALL DEVICES
29 SYS1: ANDCAM TAC, DEVMOD(DEVDAT) ;CLEAR DIRECTORY IN CORE BIT,
30 ;ASSIGNED BY CONSOLE & PROGRAM
31 SETZB TAC1,DEVLOG(DEVDAT) ;CLEAR LOGICAL NAME AND TAC1
32 ; FOR NXM LOOP BELOW(SYS2-SYS3)
34 HLRZ DEVDAT, DEVSER(DEVDAT)
37 ;PLACE TO STORE CRASH ACS ON 147 RESTART
40 \f;SETUP CORE USE BIT TABLE(CORTAB)
41 ;1 BIT FOR EACH 1K OF POSSIBLE MEMORY
42 ; BIT=0 IF AVAILABLE TO USERS
43 ; BIT=1 IF USED BY MONITOR,USER PROGRAM, OR NON-EXISTENT
44 ; EXISTENT MEMORY MUST BE CONTIGUOUS(OR ELSE CORE SHUFFLER WON'T WORK)
45 ; IF NOT CONTIGUOUS, BANKS ABOVE FIRST NON-EXISTENT ONE ARE IGNORED
47 MOVEI TAC,CORBLK ;NO. OF BIT BYTES IN CORTAB
48 CORLIM: MOVEI AC1,USRLIM ;LIMIT OF NO. OF K AVAIL. TO ASINGLE USER
49 ; RH PATCHED BY ONCE ONLY CODE
51 MOVE JDAT,COREP ;1 BIT BYTE POINTER TO FIRST K-1
52 CONO APR,NXM ;CLEAR NON EX MEM ONCE
54 MOVEI UUO,2000 ;CORE SIZE INCREMENT TO UPDATE CORMAX
56 SYS2: IBP JDAT ;MOVE BYTE POINTER UP BY 1K
57 HLLO DAT,(TAC1) ;REFERENCE MEMORY, SET RH OF DAT TO 1
58 CAML TAC1,SYSSIZ ;STILL IN MONITOR(FIRST LOC NOT USED BY MON)?
59 CONSZ APR,NXM ;NO, SEEN ANY NON-EX 1K YET?
60 JRST SYS3 ;YES, GO STORE 1 BIT IN CORTAB INDICATING
62 MOVEM JDAT,CORLST ;NO, SET LAST AVAILABLE BLOCK EVEN HIGHER
63 CAML AC1,CORTAL ;MAX RESTRICTED BY ONCE ONLY CODE?
64 JRST SYS4 ;400 MEANS OPERATOR DIDN'T SPECIFY ANY
67 ADDM UUO,CORMAX ;INCREASE MAX SIZE CORE AVAIL. TO A USER
69 SYS4: AOSA CORTAL ;INCREMENT NO. OF FREE 1K BLOCKS
70 ; AND LEAVE 0 BIT IN CORTAB TO FLAG IT AS FREE
71 SYS3: DPB DAT,JDAT ;YES, FLAG THIS 1K AS NOT AVAILABLE(1 BIT IN CORATB)
72 ADDI TAC1,2000 ;INCREMENT MEMORY REF
73 SOJG TAC,SYS2 ;FINISHED CORTAB YET?
74 IBP CORLST ;SET TO FIRST UNAVAILABLE BLOCK
78 MOVEI PDP,SYSPDL ;RECLAIM MONITOR CORE (SIZE OF MONITOR INCREASED
79 PUSHJ PDP,ACCINI ;AT ONCE ONLY TIME) USED BY DISK DEVICE DATA BLOCKS
80 ; (IF THIS IS RESTART)
81 MOVE TAC,CORTAL ;THESE 3 INSTR. TEMPORARY UNTIL ACCINI
82 LSH TAC,12 ;IS REWRITTEN
83 MOVEM TAC, CORMAX ;AND MOST OF ITS WORK PUT IN ONCE ONLY TIME
86 HRRM 1,SYSDSP ;FALL INTO IOGO
87 \f;INITIALIZE ALL IODEVICES
90 EXTERNAL DEVLST, MJOBN, JBTADR,JBTSTS,CLKINI,NXTINI
91 EXTERNAL SYSPDL,JOBMAX,CLRJOB,APRRST,JOBADR
94 IOGO: CONO APR,APRRST ;APR RESET (IO RESET)
95 CONO PI,611577 ;CLEAR PI SYSTEM (AND MEM PARITY AND POWER FAIL)
96 HLRZ TAC, DEVLST ;CHAIN OF DEVICE DATA BLOKS
97 IOG0: MOVEI TAC1,ASSPRG ;CLEAR ASSIGNED BY PROGRAM BIT
98 ANDCAB TAC1,DEVMOD(TAC)
99 HRLOI ITEM,77 ;DO NOT CLEAR HUNG DEVICE COUNT SETTING
100 TRNE TAC1,ASSCON ;ASSIGNED BY CONSOLE?
101 TLO ITEM,770000 ;YES, DO NOT CLEAR JOB NO.
102 ANDM ITEM,DEVCHR(TAC) ;CLEAR HUNG DEVICE COUNT.
103 SETZM DEVIOS(TAC) ;CLEAR IO STATUS WORD
104 SETZM DEVBUF(TAC) ;CLEAR BUFFER ADDRESSES
105 HLRZ TAC, DEVSER(TAC)
107 MOVEI PDP,SYSPDL ;REUSABLE SPACE(SEE IOINI1)
108 PUSHJ PDP,NXTINI ;ALWAYS INITILIZE SCHEDULER FIST
109 ;SO DEVICES MAY RESET QUEUES IF DESIRED
110 HLRZ AC3,DEVLST ;ADDR OF FIRST DDB
112 IOG01: MOVE AC3,DEVSER(AC3)
114 CAIE TAC,@SAVITM ;SAME DEVICE
115 PUSHJ PDP,DINI(AC3) ;NO. INITIALIZE IT.
118 JUMPN AC3,IOG01 ;INITILIZE CLOCK
119 PUSHJ PDP,CLKINI ;YES,INITILIZE CLOCK
122 PUSHJ PDP,QINI ;PUT ALL JOBS IN NULL QUEUE IF SWAPPER
126 PUSHJ PDP,SEGINI ;INITIALIZE HIGH SEGMENTS
128 MOVEI ITEM,JOBMAX ;MAX INDEX IN JOB AND HIGH SEG TABLES
129 IOG2: HRLOI TAC1,JNA+JLOG+SWP ;CLEAR ALL BUT JOB NO. ASSIGNED,
130 ANDM TAC1,JBTSTS(ITEM) ;JOB LOGGED IN(SHRSEG, IF HIGH SEG)
131 ; AND JOB SWAPPED BITS
132 SKIPE JDAT,JBTADR(ITEM) ;DOES THIS JOB HAVE CORE IN MEMORY?
133 PUSHJ PDP,CLRJOB ;YES, CLEAR JOB DATA AREA PROTECTED
134 IOG3: SOJG ITEM,IOG2 ;FROM IO SERVICE(DEVICE ASSIGNMENT TABLE)
135 ;AND SET JERR BIT SO JOB CANNOT CONT
136 ; FINISH WITH ITEM=0 FOR NULL JOB
137 CONO PI,52377 ;TURN ON ALL PI CHANNELS (ENABLE MEM PARITY)
138 JRST NULJOB ;START THE NULL JOB (ITEM=0)
144 \f\0\0\0\0\0\0\0\0\0\0\0\0