1 TITLE SYSINI - SYSTEM INITIALIZATION AND RESTART - V405
\r
2 SUBTTL TH/RCC/TL/AF TS 19 DEC 69
\r
4 ;PUT VERSION NUMBER IN GLOB LISTING AND LOADER STORAGE MAP
\r
6 EXTERNAL APRCHN,ERROR
\r
7 EXTERNAL NULJOB,ONCE,SYSBEG,SYSBG1,SYSEND
\r
8 EXTERNAL CORTAB,COREP,CORLST,CORTAL,CORBLK,SYSSIZ,LINKSR
\r
12 \f;INITIALIZE SYSTEM DATA STORAGE
\r
14 INTERNAL FTDISK,SYSINI,FTSWAP,JSR2,CRSHAC,CRSH16,CRSH17,CORLIM
\r
17 SYSINI: CONO APR,200000 ;IO RESET
\r
18 JSR1: JSR ONCE ;DO ONCE ONLY CODE ONCE
\r
19 JSR2: JSR LINKSR ;LINK IO SERVICE ROUTINES
\r
22 MOVSM TAC,JSR1 ;CLEAR SYSTEM DATA STORAGE
\r
24 HRRI TAC,SYSBG1 ;CLEAR SYSTEM DATA STORAGE
\r
26 MOVE TAC,[XWD 62,63] ;CLEAR SYSTEM PDL'S, ETC., ABOVE
\r
27 SETZM 62 ; TRAP LOCATIONS
\r
28 BLT TAC,137 ; AND UP TO BASE OF COMMON
\r
29 MOVSI TAC, DVDIRIN+TTYATC+TTYUSE
\r
30 HRRI TAC,ASSCON+ASSPRG
\r
31 HLRZ DEVDAT,DEVLST ;SCAN ALL DEVICES
\r
32 SYS1: ANDCAM TAC, DEVMOD(DEVDAT) ;CLEAR DIRECTORY IN CORE BIT,
\r
33 ;ASSIGNED BY CONSOLE & PROGRAM
\r
34 SETZB TAC1,DEVLOG(DEVDAT) ;CLEAR LOGICAL NAME AND TAC1
\r
35 ; FOR NXM LOOP BELOW(SYS2-SYS3)
\r
37 HLRZ DEVDAT, DEVSER(DEVDAT)
\r
40 ;PLACE TO STORE CRASH ACS ON 147 RESTART
\r
43 \f;SETUP CORE USE BIT TABLE(CORTAB)
\r
44 ;1 BIT FOR EACH 1K OF POSSIBLE MEMORY
\r
45 ; BIT=0 IF AVAILABLE TO USERS
\r
46 ; BIT=1 IF USED BY MONITOR,USER PROGRAM, OR NON-EXISTENT
\r
47 ; EXISTENT MEMORY MUST BE CONTIGUOUS(OR ELSE CORE SHUFFLER WON'T WORK)
\r
48 ; IF NOT CONTIGUOUS, BANKS ABOVE FIRST NON-EXISTENT ONE ARE IGNORED
\r
50 MOVEI TAC,CORBLK ;NO. OF BIT BYTES IN CORTAB
\r
51 MOVE JDAT,COREP ;1 BIT BYTE POINTER TO FIRST K-1
\r
52 CONO APR,NXM ;CLEAR NON EX MEM ONCE
\r
53 MOVEI UUO,2000 ;CORE SIZE INCREMENT TO UPDATE CORMAX
\r
54 SYS2: IBP JDAT ;MOVE BYTE POINTER UP BY 1K
\r
55 HLLO DAT,(TAC1) ;REFERENCE MEMORY, SET RH OF DAT TO 1
\r
56 CAML TAC1,SYSSIZ ;STILL IN MONITOR(FIRST LOC NOT USED BY MON)?
\r
57 CONSZ APR,NXM ;NO, SEEN ANY NON-EX 1K YET?
\r
58 JRST SYS3 ;YES, GO STORE 1 BIT IN CORTAB INDICATING
\r
60 MOVEM JDAT,CORLST ;NO, SET LAST AVAILABLE BLOCK EVEN HIGHER
\r
61 CORLIM: CAIGE AC1,USRLIM ;USRLIM=MAX. CORE AVAILABLE TO A SINGLE
\r
62 ; USER AS DEFINED BY BUILD AND MODIFIED BY ONCE
\r
63 ; REACHED MAX YET FOR SIGIN USER?
\r
65 ADDM UUO,CORMAX ;INCREASE MAX SIZE CORE AVAIL. TO A USER
\r
66 SYS4: AOSA AC1,CORTAL ;INCREMENT NO. OF FREE 1K BLOCKS
\r
67 ; AND LEAVE 0 BIT IN CORTAB TO FLAG IT AS FREE
\r
68 SYS3: DPB DAT,JDAT ;YES, FLAG THIS 1K AS NOT AVAILABLE(1 BIT IN CORATB)
\r
69 ADDI TAC1,2000 ;INCREMENT MEMORY REF
\r
70 SOJG TAC,SYS2 ;FINISHED CORTAB YET?
\r
71 IBP CORLST ;SET TO FIRST UNAVAILABLE BLOCK
\r
75 MOVEI PDP,SYSPDL ;RECLAIM MONITOR CORE (SIZE OF MONITOR INCREASED
\r
76 PUSHJ PDP,ACCINI ;AT ONCE ONLY TIME) USED BY DISK DEVICE DATA BLOCKS
\r
77 ; (IF THIS IS RESTART)
\r
81 PUSHJ PDP,SWPINI ;INIT SWAPPING SPACE ALLOCATION
\r
84 HRRM 1,SYSDSP ;FALL INTO IOGO
\r
85 \f;INITIALIZE ALL IODEVICES
\r
87 INTERNAL IOGO,FT2REL
\r
88 EXTERNAL DEVLST, MJOBN, JBTADR,JBTSTS,CLKINI,NXTINI
\r
89 EXTERNAL SYSPDL,JOBMAX,CLRJOB,APRRST,JOBADR,CRSHWD,IADPTR
\r
92 IOGO: CONO APR,APRRST ;APR RESET (IO RESET)
\r
93 CONO PI,211577 ;CLEAR PI SYSTEM (AND MEM PARITY AND POWER FAIL)
\r
95 HLRZ DEVDAT, DEVLST ;CHAIN OF DEVICE DATA BLOKS
\r
96 IOG0: MOVEI TAC1,ASSPRG ;CLEAR ASSIGNED BY PROGRAM BIT
\r
97 ANDCAB TAC1,DEVMOD(DEVDAT)
\r
98 HRLOI ITEM,77 ;DO NOT CLEAR HUNG DEVICE COUNT SETTING
\r
99 TRNE TAC1,ASSCON ;ASSIGNED BY CONSOLE?
\r
100 TLO ITEM,770000 ;YES, DO NOT CLEAR JOB NO.
\r
101 ANDM ITEM,DEVCHR(DEVDAT) ;CLEAR HUNG DEVICE COUNT.
\r
102 SETZM DEVIOS(DEVDAT) ;CLEAR IO STATUS WORD
\r
103 SETZB DAT,DEVBUF(DEVDAT) ;CLEAR BUFFER ADDRESSES
\r
104 TLNE TAC1,DVDTA ;IS THIS A DECTAPE?
\r
105 DPB DAT,IADPTR ;YES, SET NO. OF USER CHANNELS INITED
\r
106 ; ON THIS DEVICE TO 0
\r
107 HLRZ DEVDAT, DEVSER(DEVDAT)
\r
109 MOVEI PDP,SYSPDL ;REUSABLE SPACE(SEE IOINI1)
\r
110 PUSHJ PDP,NXTINI ;ALWAYS INITILIZE SCHEDULER FIST
\r
111 ;SO DEVICES MAY RESET QUEUES IF DESIRED
\r
112 HLRZ AC3,DEVLST ;ADDR OF FIRST DDB
\r
114 IOG01: MOVE DEVDAT,AC3
\r
115 MOVE AC3,DEVSER(AC3)
\r
117 CAIE TAC,@SAVITM ;SAME DEVICE
\r
118 PUSHJ PDP,DINI(AC3) ;NO. INITIALIZE IT.
\r
121 JUMPN AC3,IOG01 ;INITILIZE CLOCK
\r
122 PUSHJ PDP,CLKINI ;YES,INITILIZE CLOCK
\r
125 PUSHJ PDP,QINI ;PUT ALL JOBS IN NULL QUEUE IF SWAPPER
\r
129 PUSHJ PDP,SEGINI ;INITIALIZE HIGH SEGMENTS
\r
131 MOVEI ITEM,JOBMAX ;MAX INDEX IN JOB AND HIGH SEG TABLES
\r
132 IOG2: HRLOI TAC1,JNA+JLOG+SWP ;CLEAR ALL BUT JOB NO. ASSIGNED,
\r
133 ANDM TAC1,JBTSTS(ITEM) ;JOB LOGGED IN(SHRSEG, IF HIGH SEG)
\r
134 ; AND JOB SWAPPED BITS
\r
135 SKIPE JDAT,JBTADR(ITEM) ;DOES THIS JOB HAVE CORE IN MEMORY?
\r
136 PUSHJ PDP,CLRJOB ;YES, CLEAR JOB DATA AREA PROTECTED
\r
137 IOG3: SOJG ITEM,IOG2 ;FROM IO SERVICE(DEVICE ASSIGNMENT TABLE)
\r
138 ;AND SET JERR BIT SO JOB CANNOT CONT
\r
139 ; FINISH WITH ITEM=0 FOR NULL JOB
\r
140 CONO PI,52377 ;TURN ON ALL PI CHANNELS (ENABLE MEM PARITY)
\r
141 JRST NULJOB ;START THE NULL JOB (ITEM=0)
\r