Initial commit
[retro-software/dec/tops10/v1.19.git] / src / syscon.mac
1 TITLE SYSCON - UUO HANDLER\r
2 SUBTTL 8-9-65\r
3 EXTERNAL CLOSE1,ILLINS,IN,JOBAC,JOBADR,JOBDAT\r
4 EXTERNAL MTAPE1,OUT,RELEA1,UINBF,UINIT,UOUTBF\r
5 EXTERNAL USRJDA,USRSAV,USTATO,USTATS,USTATZ\r
6 EXTERNAL ERROR,UUOERR,CLDS,CLEN\r
7 EXTERNAL IOIERR,MJOBPD,JOBPDL,WAIT1,USRREL,PUUOAC\r
8 EXTERNAL JOBPDL,MJOBPD,USETST\r
9 \f\r
10 \r
11 \r
12 , DEC 06 00 EX UUO L PT PRE 06 UUO HANDLER\r
13 , 3/10/65\r
14 ,   ALL UUOS DROP THEMSELVE IN REAL LOCATION 40, AND TRAP\r
15 , TO 41. THE UUO HANDLER SHUFFLES THE UUO OFF TO THE USERS\r
16 , 40,41, IF IT IS NOT A SYSTEM UUO.\r
17 , SYSTEM UUOS FALL INTO THREE CLASSES, HANDLED DIFFERENTLY\r
18 , (1) SYSTEM FUNCTIONS: LOAD ACS PDP, PROG, AND DISPATCH TO THE\r
19 , FUNCTION.\r
20 , (2) DEVICE INDEPENDENT I/O UUO: ALSO LOAD ACS DEVDAT AND IOS\r
21 , AND GO THE THE SYSTEM FUNCTION.\r
22 , (3) DEVICE DEPENDENT I/O UUOS: DO (1) AND (2), THEN DISPATCH\r
23 , THROUGH THE TABLE WHOSE ADDRESS IS IN THE RIGHT HALF OF DEVSER(DEVD\r
24 , CONTROL MAY ALWAYS BE RETURNED BY EXECUTING A\r
25 ,    JRST UXIT\r
26 , WHICH WILL RESTORE THE ACS, ARP BITS, AND RETURN.\r
27 , THE UUO HANDLER IS PURE IF THE FOLLOWING RESTRICTIONS ARE OBSERVED.\r
28 , RESTRICTIONS: UUOS CANNOT BE CALLED BY INTERRUPT SERVICE ROUTINES.\r
29 , MONITOR INTERFACE\r
30 ,         STORAGE: 89\r
31 ,         ROUTINES CALLED: ILLINS, ADRCK, EXCLK, UUOH, SETIOS,UUOUSR\r
32 ,            UUOS CALLED: CALL, INIT, RELEAS, CLOSE, OUTBUF, INBUF\r
33 ,                         STATS, STATO, STATZ, OUTPUT, INPUT\r
34 ,            DEVICE DEPENDENT:          DEN, DLK, DSO, DSI, DGF\r
35 ,         SYMBOLS SET/USED:     \r
36 ,                   ACCUMULATORS:       POP  S/U  TAC  S/U\r
37 ,                                       PROG S/U  TAC1 S/U\r
38 ,                                       SUB  S\r
39 ,                   SYSTEM PARAMETERS:  UIO   U\r
40 ,                                       USYS  U\r
41 ,                                       USYSN U\r
42 ,                   JOB AREA:           JOBAC  U  JOBDAT U\r
43 ,                                       JOBPDP U\r
44 ,                   SYSTEM ADDRESSES:   CLK    S/U\r
45 ,                                       JOBADR U\r
46 ,                                       USRLEV S/U\r
47 ,                   DEVICE DATA BLOCK:  DEVSER U\r
48 ,                   INTERNAL ADDRESSES: 40     S/U\r
49 ,                                       UUO0   S/U\r
50 ,                                       UUSAV  S/U\r
51 \f\r
52 \r
53 \r
54 INTERNAL UUO0\r
55 \r
56 UUO0:     0\r
57           EXCH TAC,40           ;SAVE TAC; PICK UP UUO\r
58           MOVEM 17,USRSAV       ;SAVE 17\r
59           TLNE TAC,77000        ;0 UUO IS ILLEGAL\r
60           TLNE TAC,740000       ;UUO FOR SYSTEM?\r
61           JRST UUOSYS           ;YES\r
62           MOVE 17,JOBADR        ;GET JOB AREA ADDRESS\r
63           MOVEM TAC,40(17)      ;STORE UUO IN USERS 40\r
64           HRRZ TAC,41(17)       ;PICK UP ADR OF USERS JSR\r
65           JUMPE TAC,UUOSYS      ;IF ADDRESS=0,ILLEGAL USER UU\r
66           HLL TAC,UUO0          ;PICK UP PROCESSOR FLAGS FOR\r
67           TLNN TAC,USRMOD       ;WAS UUO FROM USER?\r
68           JRST UUOSYS           ;NO, ILLEGAL NUUO FROM SYSTEM\r
69           MOVEI 17,(TAC)        ;17 NOW HAS REL. ADR. OF USER\r
70           CAMG 17,USRREL        ;DONT INCREMENT RETURN IF PC\r
71           HRRI TAC,1(TAC)       ;INCREMENT PC\r
72           EXCH TAC,UUO0         ;SET UP RETURN  TO USER, PICK\r
73                                 ;UP USERS FLAGS,PC\r
74           CAMLE 17,USRREL       ;LEGAL MEMORY?\r
75           JRST .+3  ;NO. DONT STORE PC\r
76           ADD 17,JOBADR         ;MAKE REL. ADR. INTO ABS. ADR\r
77           MOVEM TAC,(17)        ;STORE FLAGS AND PC LIKE JSR\r
78           MOVE TAC,40           ;RESTORE TAC\r
79           MOVE 17,USRSAV        ;RESTORE 17\r
80           JRST 2,@UUO0          ;RETURN TO USER\r
81 \f\r
82 \r
83 \r
84 UUOSYS:   EXCH TAC,40                   ;RESTORE TA. RESTORE THE UUO\r
85           MOVE 17,UUO0                  ;PICK UP PROCESSOR FLAG\r
86           TLNN 17,USRMOD                ;SYSTEM UUO FROM SYSTEM?\r
87           JRST UUOSY1                   ;YES\r
88           MOVE 17,JOBADR                ;NO. PICK UP ADR. OF USER PRO\r
89           MOVEM 16,16(17)               ;STORE AC16 IN USER 16\r
90           HRRZ 16,17                    ;SET UP BLP POINTER\r
91           BLT 16,15(17)                 ;MOVE REAL ACS TO USER AREA\r
92           MOVE 0,USRSAV                 ;MOVE USER 17 TO USERS AREA\r
93           MOVEM 0,17(17)\r
94         \r
95           MOVE JDAT,JOBDAT              ;LOAD UP JOB DAT AREA ADDRES\r
96           MOVSI PDP,MJOBPD              ;LOAD UP PUSH DOWN AC AND\r
97           HRRI PDP,JOBPDL(JDAT)                   ;MAKE ABSOLUTE PATH\r
98           SKIPA PROG,17       ;PROGRAM BASE ADDRESS\r
99 UUOSY1:   MOVE 17,USRSAV                ;RESTORE AC17 IF UUO FROM SYS\r
100           PUSH PDP,UUO0                 ;SAVE RETURN ON PUSH DOWN LIS\r
101           MOVE UUO,40                   ;GET THE UUO INTO AC(UUO)\r
102           LDB TAC1,[POINT 9,UUO,8]                ;PICK UP UUO OP COD\r
103           CAIL TAC1,100                 ;ILLEGAL INSTRUCTION?\r
104           JRST ILLINS                   ;YES\r
105           CAIGE TAC1,40                 ;SYSTEM UUO?\r
106           JRST UUOERR                   ;NO. ILLEGAL\r
107           LDB TAC,PUUOAC\r
108           MOVE DEVDAT,USRJDA(TAC)       ;GET DDB\r
109           CAIGE TAC1,100-UUOT2L                   ;AN IO UUO?\r
110           JRST UUODSP                   ;NO\r
111           CAIE TAC1,70          ;CLOSE AND RELEASE ARE ALWAYS LEGAL\r
112           CAIN TAC1,71\r
113           JUMPE DEVDAT,UXIT\r
114           JUMPE DEVDAT,IOIERR ;CHANNEL MUST BE ASSIGNED\r
115           MOVE IOS,DEVIOS(DEVDAT)                 ;GET DATA BLOCK STA\r
116           JRST UUOT2-77+UUOT2L-1(TAC1)  ;DISPATCH\r
117 \r
118 UUODSP:   CAIGE TAC1,40+UUOT1L          ;LEGAL SYSTEM UUO?\r
119           JRST UUOT1-40(TAC1)           ;YES. DISPATCH\r
120           JRST UUOERR\r
121 \f\r
122 \r
123 UUOT1:    JRST UCALL            ;40\r
124           JRST UINIT\r
125 ;ADD NON IO UUOS HERE\r
126 \r
127 UUOT1L=.-UUOT1\r
128 \r
129 UUOT2:\r
130 ;ADD IO UUOS HERE\r
131           JRST USETST\r
132           JRST USTATO\r
133           JRST USTATS\r
134           JRST USTATZ\r
135           JRST UINBF\r
136           JRST UOUTBF\r
137           JRST IN\r
138           JRST OUT\r
139           JRST CLOSE1\r
140           JRST RELEA1\r
141           JRST MTAPE1\r
142           JRST UDGF\r
143           JRST UDSI\r
144           JRST UDSO\r
145           JRST UDLK\r
146           JRST UDEN             ;77\r
147 UUOT2L=.-UUOT2\r
148 \f\r
149 \r
150 ,DISPATCH TO SPECIAL ROUTINE\r
151 DEFINE DSPT(A)\r
152 <U'A:     PUSHJ PDP,UDSP\r
153 JRST A(TAC)\r
154 >\r
155 UDSP:     MOVE TAC,DEVSER(DEVDAT)\r
156           MOVE TAC1,DEVCHR(DEVDAT)\r
157           TLNN TAC1,IORET\r
158           MOVEI TAC,NRTOSP-4    ;IGNORE THESE CALLS FOR NON-\r
159           POPJ PDP,\r
160 NRTOSP:   JRST CUXIT1           ;SKIP RETURN\r
161           JRST CUXIT1           ;SKIP RETURN\r
162           JSP DAT,ERROR         ;DUMP0\r
163           JSP DAT,ERROR         ;DUMP1\r
164           JRST UUOERR                   ;USETO\r
165           JRST UUOERR                   ;USETI\r
166           JRST UUOERR                   ;GETF\r
167 UDEN:     PUSHJ PDP,WAIT1\r
168           TLO IOS,IOBEG\r
169           TRZ IOS,776000\r
170           MOVEM IOS,DEVIOS(DEVDAT)\r
171           LDB TAC,PUUOAC\r
172           TLO DEVDAT,ENTRB\r
173           TLZ DEVDAT,CLOSB\r
174           HLLM DEVDAT,USRJDA(TAC)\r
175           PUSHJ PDP,UDSP\r
176           JRST DEN(TAC)\r
177 \r
178 UDLK:     PUSHJ PDP,WAIT1\r
179           TDZ IOS,[XWD IOEND,776000]\r
180           MOVEM IOS,DEVIOS(DEVDAT)\r
181           LDB TAC,PUUOAC\r
182           TLO DEVDAT,LOOKB\r
183           TLZ DEVDAT,CLOSB\r
184           HLLM DEVDAT,USRJDA(TAC)\r
185           PUSHJ PDP,UDSP\r
186           JRST DLK(TAC)\r
187 \r
188           DSPT(DSO)\r
189 \r
190           DSPT(DSI)\r
191 \r
192           DSPT(DGF)\r
193 \r
194 \f\r
195 \r
196 , 6-CSS-DEC-CALL-PL-PRE2\r
197 , H. R. MORSE       64-11-17\r
198 , CALLING SEQUENCE\r
199 ,         CALL 0,[SIXBIT/NAME/]\r
200 , WHERE NAME IS THE NAME OF A SYSTEM ROUTINE.\r
201 , IF NO SYSTEM ROUTINE WITH THE SPECIFIED NAME IF FOUND, THIS ROUTINE\r
202 , EXISTS TO ERROR.\r
203 , MONITOR INTERFACE\r
204 ,         ROUTINES CALLED: ERROR, HASH, SYSTEM ROUTINES DEFINED BY\r
205 ,                             USE OF UCALIN.\r
206 ,         SYMBOLS SET/USED:\r
207 ,                   ACCUMULATORS:       DAT S/U         PROG U\r
208 ,                                       PDP U           UUO  S/U\r
209 ;CONTENTS OF USER AC PLACED IN AC TAC\r
210 \r
211 UCALL:    TLO UUO,JDAT          ;RELATIVIZE UUO ADDRESS\r
212           MOVE DAT,@UUO;                  DAT:=NAME OF SYSTEM ROUTINE C\r
213           MOVSI TAC1,-UCLLEN\r
214           CAME DAT,UCLTAB(TAC1);          SEARCH SYSTEM TOUTINE NAME TA\r
215           AOBJN TAC1,.-1\r
216           LDB DAT,PUUOAC        ;USER UUO AC FIELD\r
217           HRLI DAT,JDAT\r
218           MOVE TAC,@DAT         ;PICK UP CONTENTS OF USER AC\r
219           JUMPL TAC1,@UCLJMP(TAC1)\r
220           JRST UUOERR\r
221 \r
222 DEFINE NAMES\r
223 <         X DDTIN,DDTIN\r
224  X DDTOUT,DDTOUT\r
225  X DDTGT,DDTGT\r
226  X DDTRL,DDTRL\r
227  X SETDDT,SETDDT\r
228  X DEVCHR,DVCHR\r
229 X GETCHR,DVCHR\r
230 X WAIT,WAIT\r
231  X RESET,RESET\r
232  X EXIT,EXIT\r
233  X LDRBLT,LDRBLT\r
234  X UTPCLR,UTPCLR\r
235  X DATE,DATE\r
236  X SETPOV,SETPOV\r
237  X SWITCH,SWITCH\r
238  X TIMER,TIMER\r
239 >\r
240 DEFINE X (A,B)\r
241 <         SIXBIT /A/\r
242 >\r
243 UCLTAB:   NAMES\r
244 UCLLEN=.-UCLTAB\r
245 \r
246 DEFINE X(A,B)\r
247 <         JRST B\r
248 EXTERNAL B\r
249 >\r
250 UCLJMP:   NAMES\r
251 \f\r
252 \r
253 , DEV 06 00 EX COM L PT PRE 02 UXIT\r
254 , H. R. MORSE       64-12-26\r
255 , CALLING SEQUENCE\r
256 ,         ANY TRANSFER OF CONTROL TO UXIT\r
257 , EXITS THIS UUO CALL.\r
258 , MONITOR INTERFACE\r
259 ,         SYMBOLS SET/USED:\r
260 ,                   ACCUMULATORS:       MAY RESTORE ALL ACCUMULATORS\r
261 ,                                       JDAT U\r
262 ,                                       PDP U\r
263 ,                                       17  S/U\r
264 ,                   JOB AREA:           JOBAC U\r
265 ,                   SYSTEM ADDRESSES:   USRUXT U\r
266 ,                                       USRLEV S/U\r
267 \f\r
268 \r
269 \r
270           INTERN UXIT,CUXIT1,CUXIT2\r
271 \r
272 CUXIT2:   AOS (PDP)\r
273 CUXIT1:   AOS (PDP)\r
274 UXIT:     POP PDP,USRSAV                ;RESTORE UUO EXIT ADDRESS FRO\r
275           EXCH TAC,USRSAV\r
276           TLNN TAC,USRMOD               ;WAS ENTRY FROM USER MODE?\r
277           JRST UXIT2\r
278           MOVEM TAC,USRSAV              ;SET UP RETURN\r
279           MOVSI 17, JOBAC(JDAT)                   ;RESTORE ACCUMULATO\r
280           BLT 17,17\r
281 UXIT1:    JRST 2,@USRSAV                ;RETURN TO USERS PROGRAM\r
282 \r
283 UXIT2:    EXCH TAC,USRSAV\r
284           JRST 2,@USRSAV\r
285 \r
286           END,\r