TITLE SYSINI - SYSTEM INITIALIZATION SUBTTL 8-9-65 EXTERNAL APRCHN,ERROR,IOINI EXTERNAL DDT,NULJOB,SYSMAK,ONCE,SYSBEG,SYSBG1,SYSEND EXTERNAL CORTAB,CORLST,CORTAL,CORBLK,SYSSIZ,LINKSR ;SYSTEM INITIALIZATION DISPATCHTABLE, STARTING AT LOC. 140 ;THIS SUBROUTINE MUST BE LOADED FIRST ;ROUTINE ONCE IS ONCE ONLY CODE. IT CONVERTS THE DATE ;AND SETS UP IO SERVICE CHAIN. INTERNAL SYSDSP SYSDSP: JRST SYSINI ;INITIALIZE SYSTEM VARIABLES ONCE ONLY JRST DDT ;EXEC DDT JRST SYSMAK ;MAKE NEW SYSTEM JRST SYSINI ;INITIALIZE SYSTEM VARIABLES ALWAYS JEN NULJOB ;ERROR RECOVERY JRST SYSONE ;DO ONCE ONLY CODE OVER AGAIN JRST JSR2 ;BYPASS ONCE ONLY OPERATOR DIALOG ;(IN CASE CONSOLE TTY DOWN) ;INITIALIZE SYSTEM DATA STORAGE INTERNAL SYSINI NXM=10000 ;NON EX MEM FLAG SYSONE: JSR ONCE ;ONCE ONLY CODE SYSINI: CONO APR,200000 ;IO RESET JSR1: JSR ONCE ;DO ONCE ONLY CODE ONCE JSR2: JSR LINKSR ;LINK IO SERVICE ROUTINES MOVS TAC,.+1 SETZB TAC1,SYSBEG MOVSM TAC,JSR1 MOVSM TAC,JSR2 HRRI TAC,SYSBG1 ;CLEAR SYSTEM DATA STORAGE BLT TAC,SYSEND MOVSI TAC, DVDIRIN+TTYATC+TTYUSE HRRI TAC,ASSCON+ASSPRG HLRZ DEVDAT,DEVLST ;SCAN ALL DEVICES SYS1: ANDCAM TAC, DEVMOD(DEVDAT) ;CLEAR DIRECTORY IN CORE BIT, ;ASSIGNED BY CONSOLE & PROGRAM SETZM DEVLOG(DEVDAT) ;CLEAR LOGICAL NAME HLRZ DEVDAT, DEVSER(DEVDAT) JUMPN DEVDAT, SYS1 MOVE JDAT,COREP ;SET UP CORE USE BIT TABLE MOVEM JDAT,CORLST MOVEI TAC,CORBLK ;NO. OF 1K BLOCKS IN TABLE SYS2: CONO APR,NXM ;CLEAR NON EX MEM IBP JDAT ;MOVE BYTE POINTER HLLZ DAT,(TAC1) ;REFERENCE MEMORY, CLEAR RT. OF DAT CAMLE TAC1,SYSSIZ ;HIGHEST LOC IN EXEC. CONSZ APR,NXM ;CAN MEMORY BE USED FOR USER PROG? AOJA DAT,SYS3 ;NO, MARK AS INACCESIBLE (1 BIT) AOS CORTAL MOVEM JDAT,CORLST ;AND SET LAST FREE BLOCK POINTER SYS3: DPB DAT,JDAT ;STORE 0 OR 1 IN TABLE ADDI TAC1,2000 ;INCREMENT MEMORY REF SOJG TAC,SYS2 IBP CORLST ;SET TO FIRST UNAVAILABLE BLOCK HRRI 1,IOGO HRRM 1,SYSDSP ;FALINTO IOGO ;INITIALIZE ALL IODEVICES INTERNAL IOGO EXTERNAL DEVLST, MJOBN, JBTADR,JBTSTS,IOINI EXTERNAL DCREQ,MTREQ,DTREQ IOGO: MOVEI TAC,APRCHN CONO APR,633440(TAC) HLRZ TAC, DEVLST ;CHAIN OF DEVICE DATA BLOKS IOG0: MOVEI TAC1,ASSPRG ;CLEAR ASSIGNED BY PROGRAM BIT ANDCAB TAC1,DEVMOD(TAC) HRLOI ITEM,IORET+7*PICHN ;CLEAR JOB NO., USER CHANNEL TRNE TAC1,ASSCON TLO ITEM,777000 ANDM ITEM,DEVCHR(TAC) ;BUT NOT IORET BIT OR PII CHA SETZM DEVIOS(TAC) ;CLEAR IO STATUS WORD SETZM DEVBUF(TAC) ;CLEAR BUFFER ADDRESS HLRZ TAC, DEVSER(TAC) JUMPN TAC, IOG0 SETOM DCREQ ;CLEAR DEVICE REQUEST COUNTS SETOM MTREQ SETOM DTREQ MOVEI PDP,IOPDL-1 PUSHJ PDP,IOINI ;INITIALIZE IO DEVICES MOVSI DAT,MJOBN ;JOB NUMBER ASSIGNED BIT MOVE TAC,[XWD JERR,1] ;SET ERROR BIT, CLEAR ALL 0TH IOG1: MOVEM TAC,JBTSTS(DAT) AOBJN DAT,IOG1 CONO PI,12377 JRST NULJOB ;START THE NULL JOB IOPDL: BLOCK 4 COREP: POINT 1,CORTAB ;1 BIT BYTE POINTER TO CORE USE TABLE END SYSINI