Cleanup of typos.
[retro-software/dec/tops10/v1.19.git] / src / ioini1.mac
1           TITLE IOINI1 - IO INITIALIZATION PART 1\r
2           NAME1\r
3           DATE1\r
4           VERS1\r
5           CUSP1\r
6 \r
7 ;CONFIGURATION INDEPENDANT PART OF IOINIT FOLLOWS:\r
8 \r
9 EXTERNAL ERROR\r
10 \r
11 ;SETUP CHANNEL SAVE AND RESTORE ROUTINES\r
12 \r
13 CHANU1=0\r
14 CHANU2=0\r
15 CHANU3=0\r
16 CHANU4=0\r
17 CHANU5=0\r
18 CHANU6=0\r
19 CHANU7=0\r
20 DEFINE ASSOC(A,NO,D)\r
21 <IFE CHANU'NO,<\r
22 CHANU'NO=1\r
23 INTERNAL CH'NO'SAV,CH'NO',CH'NO'XIT,CH'NO'SAC\r
24 \r
25 CH'NO'SAV: 0\r
26   MOVEM CH'NO'N, CH'NO'SAC+CH'NO'N\r
27   MOVEI CH'NO'N, CH'NO'SAC\r
28   BLT CH'NO'N,CH'NO'SAC+CH'NO'N-1       ;DO ONLY ONCE FOR EACH CHANNEL\r
29   MOVE PDP, CH'NO'CJ\r
30   JRST @CH'NO'SAV\r
31 \r
32 CH'NO'SAC: REPEAT CH'NO'N+1,<EXP 0>     ;SPACE TO SAVE SOME AC'S\r
33           EXP CH'NO'XIT         ;FIRST ENTRY IN PD LIST(CHAN. EXIT)\r
34           REPEAT CH'NO'PDN-1,<EXP 0>    ;REST OF PD LIST\r
35 \r
36 CH'NO'XIT: MOVSI CH'NO'N, CH'NO'SAC\r
37  BLT CH'NO'N, CH'NO'N\r
38  JEN @CH'NO\r
39 \r
40 CH'NO'CJ: XWD -CH'NO'PDN+1,CH'NO'SAC+CH'NO'N+1  ;INIT. SETTING OF P\r
41 \r
42 CH'NO':   0             ;PC STORED HERE BY JSR\r
43  JRST .+1 ;INSTR. AT END OF SERVICE CHAIN\r
44  AOS CH'NO'ERR          ;SPURIOUS INTERRUPT, ADD TO COUNT\r
45  JEN @CH'NO             ;AND DISMISS\r
46 >\r
47 >\r
48 ;GENERATE THE SAVE AND RESTORE ROUTINES\r
49 \r
50           SYSTEM\r
51 \r
52 ;SET UP NULL CHANNEL ROUTINES FOR UNUSED CHANNELS\r
53 \r
54 DEFINE NULCHN(J)\r
55 <\r
56 INTERNAL CH'J,CH'J'XIT\r
57 CH'J:     0\r
58 CH'J'XIT: AOS CH'J'ERR\r
59  JEN @CH'J\r
60 >\r
61 \r
62           IFE CHANU1,<NULCHN(1)>\r
63           IFE CHANU2,<NULCHN(2)>\r
64           IFE CHANU3,<NULCHN(3)>\r
65           IFE CHANU4,<NULCHN(4)>\r
66           IFE CHANU5,<NULCHN(5)>\r
67           IFE CHANU6,<NULCHN(6)>\r
68           IFE CHANU7,<NULCHN(7)>\r
69 \f\r
70 \r
71 ;ASSIGN DEVICE TO CHANNELS AND SETUP CORESPONDENCE TABLE\r
72 ;OF CHANNELS TO SERVICE ROUTINES\r
73 \r
74 DEFINE ASSOC (A,N,D)\r
75 <         A'RET=CH'N'XIT\r
76  A'SAV=CH'N'SAV\r
77  A'SAC=CH'N'SAC\r
78  A'CHL=CH'N\r
79  A'CHN=N\r
80  A'BIT=1\r
81  REPEAT 7-N,<A'BIT=A'BIT*2>\r
82  A'OFF=1000+A'BIT       ;CONO PI, A'OFF WIL TURN CHANNEL OFF\r
83  A'ON=2000+A'BIT        ;TURN BACK ON\r
84  A'ACT=4000+A'BIT       ;FORCE INTERRUPT ON CHAN.\r
85 INTERN A'RET, A'SAV, A'CHL, A'CHN, A'SAC\r
86 INTERNAL A'OFF,A'ON,A'ACT,A'BIT\r
87  XWD A'CHL,A'INT\r
88  EXTERNAL A'INT\r
89 >\r
90 \r
91 INTERNAL DEVINT\r
92 DEVINT:   SYSTEM\r
93 NDEV=.-DEVINT           ;NO. OF DEVICE INTERUPT SERVICE ROUTINES\r
94 NDEVM1=NDEV-1           ;(USED BY ONCE)\r
95 INTERNAL NDEVM1\r
96 \f\r
97 \r
98 ;INITIALIZE SOME IO DEVICES\r
99 ;IOINI CALLED BY A PUSHJ PDP, FROM SYSINI AT SYSTEM INITIALIZATION\r
100 \r
101 DEFINE IOINIT (A)\r
102 <IRP A\r
103 <         EXTERNAL A'INI\r
104  PUSHJ PDP,A'INI\r
105 >>\r
106 \r
107 DEFINE ASSOC (A,B,C)\r
108 <         IFIDN <A><MTC>,< IOINIT MTC>\r
109  IFIDN <A><DTC>,< IOINIT DTC>\r
110  IFIDN <A><LPT>,< IOINIT LPT>\r
111  IFIDN <A><SCN>,< IOINIT SCN>\r
112  IFIDN <A><PTP>,<IOINIT PTP>\r
113  IFIDN <A><PTR>,<IOINIT PTR>\r
114 >\r
115 \r
116 INTERNAL IOINI\r
117 \r
118 IOINI:  SYSTEM\r
119         JRST CLKINI             ;ALWAYS INIT. CLOCK\r
120 \r
121 EXTERNAL CLKINI\r
122 \f\r
123 \r
124 ;CLOCK CONTROL PARAMETERS\r
125 \r
126           CLDS=4000+APRCHN      ;CLOCK DISABLE\r
127           CLEN=200+APRCHN       ;CLOCK ENABLE\r
128 \r
129           INTERNAL CLDS,CLEN\r
130 \r
131 ;BYTE POINTERS\r
132 \r
133 PUUOAC:   POINT 4,UUO,12        ;UUO AC FIELD\r
134 PIOMOD:   POINT 4,IOS,35        ;MODE BITS\r
135 PJOBN:    POINT 9,DEVCHR(DEVDAT),8      ;DEVICE JOB ASSIGNMENT\r
136 PJDCHN:   POINT 4,DEVCHR(DEVDAT),17     ;JOB DEVICE CHANNEL NO.\r
137 PUNIT:    POINT 6,DEVCHR(DEVDAT),23     ;DEVICE UNIT NO.\r
138 \r
139 INTERNAL PUUOAC,PIOMOD,PJOBN,PJDCHN,PUNIT\r
140 \r
141 ;COMMON SUBROUTINE RETURNS\r
142 \r
143 CPOPJ2:   AOS (PDP)\r
144 CPOPJ1:   AOS (PDP)\r
145 CPOPJ:    POPJ PDP,\r
146 \r
147 INTERNAL CPOPJ,CPOPJ1,CPOPJ2\r
148 \f\r
149 ,SYSTEM DATA STORAGE\r
150 \r
151 \r
152 INTERNAL JOB,JOBADR,JBTADR,JBTSTS,USRREL,USRINF,USRJDA\r
153 INTERNAL USRPDP,JOBDAT,USRDDT,USRSAV,USRUXT,USRLO,USRHI\r
154 INTERNAL COMCNT,IOCOMP,USRPOV,STOPU,SCHEDF,TIME,JBTAD1\r
155 INTERNAL MTAVAL,DCAVAL,DTAVAL,MTREQ,DCREQ,DTREQ,TTYTAB,CORTAB\r
156 INTERNAL CH1ERR,CH2ERR,CH3ERR,CH4ERR,CH5ERR,CH6ERR,CH7ERR\r
157 INTERNAL CORLST,CORTAB,CORTAL,SYSEND,SYSBEG,DEVOPR\r
158 \r
159 JOBN=0  ;DEFINE NO. OF JOBS (0 THRU JOBN-1)\r
160 ;THERE MUST BE MORE TTY DEVICE DATA BLCKS THAN JOBS.\r
161 \r
162 DEFINE ASSOC (A,N,D)\r
163 <IRP D,<IFIDN <A><SCN>,<JOBN=JOBN+1>>>\r
164           SYSTEM\r
165 MJOBN=-JOBN\r
166 INTERNAL JOBN,MJOBN\r
167 \r
168 SYSBEG:   ;FIRST LOC IN SYSTEM DATA AREA\r
169 XP SYSBG1,SYSBEG+1      ;FIRST LOC+1\r
170 JOB:      0             ;CURRENT JOB NUMBER EXCEPT WEN SCHEDF IS NON-ZERO\r
171 JOBADR:   0             ;CONTAINS ADDRESS OF JOB CURRENTLY RUNNING\r
172 JOBDAT:   0             ;CONTAINS ADDRESS OF JOB DATA AREA\r
173 \r
174 JBTADR:   BLOCK JOBN            ;C(LH)=PROTECT, C(RH)=RELOCATION\r
175 XP JBTAD1,JBTADR+1   ;ADDRESS OF JOB 1(USED BY SYSMAK)\r
176 JBTSTS:   BLOCK JOBN            ;CONTAINS STATUS INFORMATION FOR EACH J\r
177 \r
178 USRPDP:   0         ;USER PUSH DOWN POINTER\r
179 USRREL:   0         ;LH=0, RH CONTAINS CONTENTS OF PROTECTION REGISTER\r
180 USRLO:    ;FIRST LOC CLEARD BY SETUSR SUBROUTINE\r
181 USRUXT:   0         ;UNUSED,  JOBUXT USED TO SAVE UUO PC(UUO0)\r
182 USRLEV:   0         ;UNUSED,  JOBLEV USED TO SAVE LOC. 40\r
183 USRSAV:   0         ;TEMPORARY STORAGE FOR UUO HANDLER\r
184 USRPOV:   0         ;PUSH DOWN OVERFLOW TRAP\r
185           BLOCK 2\r
186 USRINF:   0         ;UN LAYED OUT USER INFORMATION\r
187 USRJDA:   BLOCK 20  ;RH=JOB DEVICE ASSIGNMENTS FOR THIS USER,LH=UUOS\r
188 XP USRHI,.-1        ;LAST LOC CLEARED BY SETUSR ROUTINE\r
189 XP USRPFI,.-1       ;LAST LOC PROTECTED FROM IO SERVICE\r
190 XP USRPFU,.         ;LAST LOC PROTECTED FROM USER PROGRAM\r
191 USRDDT:   0         ;STARTING ADDR OF USER DDT\r
192 \r
193 ;DEVICE JUSTR BECOME AVAILABLE FLAGS\r
194 MTAVAL:   0          ;MAGNETIC TAPE\r
195 DCAVAL:   0          ;DATA CONTROL\r
196 DTAVAL:   0          ;DECTAPE\r
197 \r
198 ;NUMBER OF JOBS WAITING FOR DEVICES(-1=NONE, 0=1 USING, 1=1 USING)\r
199 MTREQ:    -1        ;MAGNETIC TAPE\r
200 DCREQ:    -1        ;DATA CONTROL\r
201 DTREQ:    -1        ;DECTAPE\r
202 IOCOMP:   0         ;NUMBER OF USERS IN IO WAIT STATE\r
203 COMCNT:   0         ;NUMBER OF COMMANDS TYPED-IN BUT NOT DECODED\r
204 STOPU:    0         ;NON-ZERO WHEN CLOCK INTERRUPT FORCED TO STOP USER\r
205 SCHEDF:   0         ;NON-ZERO WHEN CLOCK ROUTINE IS SCHEDULING\r
206 \r
207 CH1ERR:   0         ;SPURIOUS INTERRUPT COUNTS FOR EACH CHANNEL\r
208 CH2ERR:   0\r
209 CH3ERR:   0\r
210 CH4ERR:   0\r
211 CH5ERR:   0\r
212 CH6ERR:   0\r
213 CH7ERR:   0\r
214 \r
215            USRLO1=USRLO+1\r
216            INTERNAL USRLO1\r
217 \f\r
218 TIME:     0             ;TIME SYSTEM HAS RUN IN 60THS OF A SECOND\r
219 \r
220 \r
221 XP TTYLEN,SCNLIN+1   ;LENGTH OF TTY TRANSLATOR TABLES(INCLUDING CTY)\r
222 TTYTAB:   BLOCK TTYLEN          ;TTY TRANSLATOR TABLE\r
223                                 ;SIGN BIT = 1 IF COMMAND JUST TYPED\r
224                                 ;BITS 1 -9, JOB CONSOLE IS ATTACHED TO\r
225                                 ;BITS 18-35, THE DEVICE DATA BLOCK FOR\r
226 DEVOPR:   0             ;SIXBIT PHYSICAL NAME OF OPERATORS\r
227                         ;CONSOLE SET BY SCNSER TO FIRST ACTIVE TTY.\r
228 ;LOCATIONS FOR CORE ALLOCATION\r
229 XP CORBLK,^D256          ;NO. OF 1K BLOCKS POSSIBLE\r
230 CORTAB:   BLOCK <CORBLK>/^D36+1         ;1K BLOCK USE BIT TABLE\r
231                                 ;A 1 MEANS BLOCK IS IN USE\r
232 CORLST:   0             ;1 BIT BYTE POINTER TO LAST FREE BLOCK POSSIBLE\r
233 CORTAL:   0             ;TOTAL NO. OF FREE CORE BLOCKS LEFT\r
234 ;CORLST AND CORTAL ARE SET UP AT SYSTEM INITIALIZATION\r
235 \r
236 SYSEND=.-1              ;LAST LOC. CLEARED BY SYSINI\r
237 \r
238 INTERNAL SYSSIZ\r
239 EXTERNAL SYSFIN\r
240 SYSSIZ:   EXP SYSFIN            ;SIZE OF MONITOR(LAST LOC. USED)\r
241 \f\r
242           END,\r