Initial commit
[retro-software/dec/tops10/v1.19.git] / src / sysini.mac
1 TITLE SYSINI - SYSTEM INITIALIZATION\r
2 SUBTTL 8-9-65\r
3 EXTERNAL APRCHN,ERROR,IOINI\r
4 EXTERNAL DDT,NULJOB,SYSMAK,ONCE,SYSBEG,SYSBG1,SYSEND\r
5 EXTERNAL CORTAB,CORLST,CORTAL,CORBLK,SYSSIZ,LINKSR\r
6 \r
7 ;SYSTEM INITIALIZATION DISPATCHTABLE, STARTING AT LOC. 140\r
8 ;THIS SUBROUTINE MUST BE LOADED FIRST\r
9 ;ROUTINE ONCE IS ONCE ONLY CODE. IT CONVERTS THE DATE\r
10 ;AND SETS UP IO SERVICE CHAIN.\r
11 \r
12 \r
13 \r
14 INTERNAL SYSDSP\r
15 \r
16 SYSDSP:   JRST SYSINI           ;INITIALIZE SYSTEM VARIABLES ONCE ONLY\r
17           JRST DDT      ;EXEC DDT\r
18           JRST SYSMAK           ;MAKE NEW SYSTEM\r
19           JRST SYSINI           ;INITIALIZE SYSTEM VARIABLES ALWAYS\r
20           JEN  NULJOB           ;ERROR RECOVERY\r
21           JRST SYSONE           ;DO ONCE ONLY CODE OVER AGAIN\r
22           JRST JSR2 ;BYPASS ONCE ONLY OPERATOR DIALOG\r
23                     ;(IN CASE CONSOLE TTY DOWN)\r
24 \f\r
25 \r
26 ;INITIALIZE SYSTEM DATA STORAGE\r
27 \r
28 INTERNAL SYSINI\r
29 NXM=10000 ;NON EX MEM FLAG\r
30 \r
31 SYSONE:   JSR ONCE  ;ONCE ONLY CODE\r
32 SYSINI:   CONO APR,200000       ;IO RESET\r
33 JSR1:     JSR ONCE  ;DO ONCE ONLY CODE ONCE\r
34 JSR2:     JSR LINKSR            ;LINK IO SERVICE ROUTINES\r
35           MOVS TAC,.+1\r
36           SETZB TAC1,SYSBEG\r
37           MOVSM TAC,JSR1\r
38           MOVSM TAC,JSR2\r
39           HRRI TAC,SYSBG1       ;CLEAR SYSTEM DATA STORAGE\r
40           BLT TAC,SYSEND\r
41           MOVSI TAC, DVDIRIN+TTYATC+TTYUSE\r
42           HRRI TAC,ASSCON+ASSPRG\r
43           HLRZ DEVDAT,DEVLST   ;SCAN ALL DEVICES\r
44 SYS1:     ANDCAM TAC, DEVMOD(DEVDAT)    ;CLEAR DIRECTORY IN CORE BIT,\r
45                 ;ASSIGNED BY CONSOLE & PROGRAM\r
46           SETZM DEVLOG(DEVDAT)          ;CLEAR LOGICAL NAME\r
47           HLRZ DEVDAT, DEVSER(DEVDAT)\r
48           JUMPN DEVDAT, SYS1\r
49           MOVE JDAT,COREP       ;SET UP CORE USE BIT TABLE\r
50           MOVEM JDAT,CORLST\r
51           MOVEI TAC,CORBLK      ;NO. OF 1K BLOCKS IN TABLE\r
52 SYS2:     CONO APR,NXM          ;CLEAR NON EX MEM\r
53           IBP JDAT      ;MOVE BYTE POINTER\r
54           HLLZ DAT,(TAC1)       ;REFERENCE MEMORY, CLEAR RT. OF DAT\r
55           CAMLE TAC1,SYSSIZ     ;HIGHEST LOC IN EXEC.\r
56           CONSZ APR,NXM         ;CAN MEMORY BE USED FOR USER PROG?\r
57           AOJA DAT,SYS3         ;NO, MARK AS INACCESIBLE (1 BIT)\r
58           AOS CORTAL\r
59           MOVEM JDAT,CORLST     ;AND SET LAST FREE BLOCK POINTER\r
60 SYS3:     DPB DAT,JDAT          ;STORE 0 OR 1 IN TABLE\r
61           ADDI TAC1,2000        ;INCREMENT MEMORY REF\r
62           SOJG TAC,SYS2\r
63           IBP CORLST            ;SET TO FIRST UNAVAILABLE BLOCK\r
64           HRRI 1,IOGO\r
65           HRRM 1,SYSDSP         ;FALINTO IOGO\r
66 \f\r
67 \r
68 ;INITIALIZE ALL IODEVICES\r
69 \r
70           INTERNAL IOGO\r
71           EXTERNAL DEVLST, MJOBN, JBTADR,JBTSTS,IOINI\r
72 EXTERNAL DCREQ,MTREQ,DTREQ\r
73 \r
74 IOGO:     MOVEI TAC,APRCHN\r
75           CONO APR,633440(TAC)\r
76           HLRZ TAC, DEVLST       ;CHAIN OF DEVICE DATA BLOKS\r
77 IOG0:     MOVEI TAC1,ASSPRG      ;CLEAR ASSIGNED BY PROGRAM BIT\r
78           ANDCAB TAC1,DEVMOD(TAC)\r
79           HRLOI ITEM,IORET+7*PICHN      ;CLEAR JOB NO., USER CHANNEL\r
80           TRNE TAC1,ASSCON\r
81           TLO ITEM,777000\r
82           ANDM ITEM,DEVCHR(TAC)         ;BUT NOT IORET BIT OR PII CHA\r
83           SETZM DEVIOS(TAC)     ;CLEAR IO STATUS WORD\r
84           SETZM DEVBUF(TAC)     ;CLEAR BUFFER ADDRESS\r
85           HLRZ TAC, DEVSER(TAC)\r
86           JUMPN TAC, IOG0\r
87           SETOM DCREQ           ;CLEAR DEVICE REQUEST COUNTS\r
88           SETOM MTREQ   \r
89           SETOM DTREQ\r
90           MOVEI PDP,IOPDL-1\r
91           PUSHJ PDP,IOINI       ;INITIALIZE IO DEVICES\r
92           MOVSI DAT,MJOBN       ;JOB NUMBER ASSIGNED BIT\r
93           MOVE TAC,[XWD JERR,1]         ;SET ERROR BIT, CLEAR ALL 0TH\r
94 IOG1:     MOVEM TAC,JBTSTS(DAT)\r
95           AOBJN DAT,IOG1\r
96           CONO PI,12377\r
97           JRST NULJOB           ;START THE NULL JOB\r
98 IOPDL:    BLOCK 4\r
99 COREP:    POINT 1,CORTAB        ;1 BIT BYTE POINTER TO CORE USE TABLE\r
100 \r
101           END SYSINI\r