TITLE IOINI1 - IO INITIALIZATION PART 1 NAME1 DATE1 VERS1 CUSP1 ;CONFIGURATION INDEPENDANT PART OF IOINIT FOLLOWS: EXTERNAL ERROR ;SETUP CHANNEL SAVE AND RESTORE ROUTINES CHANU1=0 CHANU2=0 CHANU3=0 CHANU4=0 CHANU5=0 CHANU6=0 CHANU7=0 DEFINE ASSOC(A,NO,D) ;SPACE TO SAVE SOME AC'S EXP CH'NO'XIT ;FIRST ENTRY IN PD LIST(CHAN. EXIT) REPEAT CH'NO'PDN-1, ;REST OF PD LIST CH'NO'XIT: MOVSI CH'NO'N, CH'NO'SAC BLT CH'NO'N, CH'NO'N JEN @CH'NO CH'NO'CJ: XWD -CH'NO'PDN+1,CH'NO'SAC+CH'NO'N+1 ;INIT. SETTING OF P CH'NO': 0 ;PC STORED HERE BY JSR JRST .+1 ;INSTR. AT END OF SERVICE CHAIN AOS CH'NO'ERR ;SPURIOUS INTERRUPT, ADD TO COUNT JEN @CH'NO ;AND DISMISS > > ;GENERATE THE SAVE AND RESTORE ROUTINES SYSTEM ;SET UP NULL CHANNEL ROUTINES FOR UNUSED CHANNELS DEFINE NULCHN(J) < INTERNAL CH'J,CH'J'XIT CH'J: 0 CH'J'XIT: AOS CH'J'ERR JEN @CH'J > IFE CHANU1, IFE CHANU2, IFE CHANU3, IFE CHANU4, IFE CHANU5, IFE CHANU6, IFE CHANU7, ;ASSIGN DEVICE TO CHANNELS AND SETUP CORESPONDENCE TABLE ;OF CHANNELS TO SERVICE ROUTINES DEFINE ASSOC (A,N,D) < A'RET=CH'N'XIT A'SAV=CH'N'SAV A'SAC=CH'N'SAC A'CHL=CH'N A'CHN=N A'BIT=1 REPEAT 7-N, A'OFF=1000+A'BIT ;CONO PI, A'OFF WIL TURN CHANNEL OFF A'ON=2000+A'BIT ;TURN BACK ON A'ACT=4000+A'BIT ;FORCE INTERRUPT ON CHAN. INTERN A'RET, A'SAV, A'CHL, A'CHN, A'SAC INTERNAL A'OFF,A'ON,A'ACT,A'BIT XWD A'CHL,A'INT EXTERNAL A'INT > INTERNAL DEVINT DEVINT: SYSTEM NDEV=.-DEVINT ;NO. OF DEVICE INTERUPT SERVICE ROUTINES NDEVM1=NDEV-1 ;(USED BY ONCE) INTERNAL NDEVM1 ;INITIALIZE SOME IO DEVICES ;IOINI CALLED BY A PUSHJ PDP, FROM SYSINI AT SYSTEM INITIALIZATION DEFINE IOINIT (A) > DEFINE ASSOC (A,B,C) < IFIDN ,< IOINIT MTC> IFIDN ,< IOINIT DTC> IFIDN ,< IOINIT LPT> IFIDN ,< IOINIT SCN> IFIDN , IFIDN , > INTERNAL IOINI IOINI: SYSTEM JRST CLKINI ;ALWAYS INIT. CLOCK EXTERNAL CLKINI ;CLOCK CONTROL PARAMETERS CLDS=4000+APRCHN ;CLOCK DISABLE CLEN=200+APRCHN ;CLOCK ENABLE INTERNAL CLDS,CLEN ;BYTE POINTERS PUUOAC: POINT 4,UUO,12 ;UUO AC FIELD PIOMOD: POINT 4,IOS,35 ;MODE BITS PJOBN: POINT 9,DEVCHR(DEVDAT),8 ;DEVICE JOB ASSIGNMENT PJDCHN: POINT 4,DEVCHR(DEVDAT),17 ;JOB DEVICE CHANNEL NO. PUNIT: POINT 6,DEVCHR(DEVDAT),23 ;DEVICE UNIT NO. INTERNAL PUUOAC,PIOMOD,PJOBN,PJDCHN,PUNIT ;COMMON SUBROUTINE RETURNS CPOPJ2: AOS (PDP) CPOPJ1: AOS (PDP) CPOPJ: POPJ PDP, INTERNAL CPOPJ,CPOPJ1,CPOPJ2 ,SYSTEM DATA STORAGE INTERNAL JOB,JOBADR,JBTADR,JBTSTS,USRREL,USRINF,USRJDA INTERNAL USRPDP,JOBDAT,USRDDT,USRSAV,USRUXT,USRLO,USRHI INTERNAL COMCNT,IOCOMP,USRPOV,STOPU,SCHEDF,TIME,JBTAD1 INTERNAL MTAVAL,DCAVAL,DTAVAL,MTREQ,DCREQ,DTREQ,TTYTAB,CORTAB INTERNAL CH1ERR,CH2ERR,CH3ERR,CH4ERR,CH5ERR,CH6ERR,CH7ERR INTERNAL CORLST,CORTAB,CORTAL,SYSEND,SYSBEG,DEVOPR JOBN=0 ;DEFINE NO. OF JOBS (0 THRU JOBN-1) ;THERE MUST BE MORE TTY DEVICE DATA BLCKS THAN JOBS. DEFINE ASSOC (A,N,D) ,>> SYSTEM MJOBN=-JOBN INTERNAL JOBN,MJOBN SYSBEG: ;FIRST LOC IN SYSTEM DATA AREA XP SYSBG1,SYSBEG+1 ;FIRST LOC+1 JOB: 0 ;CURRENT JOB NUMBER EXCEPT WEN SCHEDF IS NON-ZERO JOBADR: 0 ;CONTAINS ADDRESS OF JOB CURRENTLY RUNNING JOBDAT: 0 ;CONTAINS ADDRESS OF JOB DATA AREA JBTADR: BLOCK JOBN ;C(LH)=PROTECT, C(RH)=RELOCATION XP JBTAD1,JBTADR+1 ;ADDRESS OF JOB 1(USED BY SYSMAK) JBTSTS: BLOCK JOBN ;CONTAINS STATUS INFORMATION FOR EACH J USRPDP: 0 ;USER PUSH DOWN POINTER USRREL: 0 ;LH=0, RH CONTAINS CONTENTS OF PROTECTION REGISTER USRLO: ;FIRST LOC CLEARD BY SETUSR SUBROUTINE USRUXT: 0 ;UNUSED, JOBUXT USED TO SAVE UUO PC(UUO0) USRLEV: 0 ;UNUSED, JOBLEV USED TO SAVE LOC. 40 USRSAV: 0 ;TEMPORARY STORAGE FOR UUO HANDLER USRPOV: 0 ;PUSH DOWN OVERFLOW TRAP BLOCK 2 USRINF: 0 ;UN LAYED OUT USER INFORMATION USRJDA: BLOCK 20 ;RH=JOB DEVICE ASSIGNMENTS FOR THIS USER,LH=UUOS XP USRHI,.-1 ;LAST LOC CLEARED BY SETUSR ROUTINE XP USRPFI,.-1 ;LAST LOC PROTECTED FROM IO SERVICE XP USRPFU,. ;LAST LOC PROTECTED FROM USER PROGRAM USRDDT: 0 ;STARTING ADDR OF USER DDT ;DEVICE JUSTR BECOME AVAILABLE FLAGS MTAVAL: 0 ;MAGNETIC TAPE DCAVAL: 0 ;DATA CONTROL DTAVAL: 0 ;DECTAPE ;NUMBER OF JOBS WAITING FOR DEVICES(-1=NONE, 0=1 USING, 1=1 USING) MTREQ: -1 ;MAGNETIC TAPE DCREQ: -1 ;DATA CONTROL DTREQ: -1 ;DECTAPE IOCOMP: 0 ;NUMBER OF USERS IN IO WAIT STATE COMCNT: 0 ;NUMBER OF COMMANDS TYPED-IN BUT NOT DECODED STOPU: 0 ;NON-ZERO WHEN CLOCK INTERRUPT FORCED TO STOP USER SCHEDF: 0 ;NON-ZERO WHEN CLOCK ROUTINE IS SCHEDULING CH1ERR: 0 ;SPURIOUS INTERRUPT COUNTS FOR EACH CHANNEL CH2ERR: 0 CH3ERR: 0 CH4ERR: 0 CH5ERR: 0 CH6ERR: 0 CH7ERR: 0 USRLO1=USRLO+1 INTERNAL USRLO1 TIME: 0 ;TIME SYSTEM HAS RUN IN 60THS OF A SECOND XP TTYLEN,SCNLIN+1 ;LENGTH OF TTY TRANSLATOR TABLES(INCLUDING CTY) TTYTAB: BLOCK TTYLEN ;TTY TRANSLATOR TABLE ;SIGN BIT = 1 IF COMMAND JUST TYPED ;BITS 1 -9, JOB CONSOLE IS ATTACHED TO ;BITS 18-35, THE DEVICE DATA BLOCK FOR DEVOPR: 0 ;SIXBIT PHYSICAL NAME OF OPERATORS ;CONSOLE SET BY SCNSER TO FIRST ACTIVE TTY. ;LOCATIONS FOR CORE ALLOCATION XP CORBLK,^D256 ;NO. OF 1K BLOCKS POSSIBLE CORTAB: BLOCK /^D36+1 ;1K BLOCK USE BIT TABLE ;A 1 MEANS BLOCK IS IN USE CORLST: 0 ;1 BIT BYTE POINTER TO LAST FREE BLOCK POSSIBLE CORTAL: 0 ;TOTAL NO. OF FREE CORE BLOCKS LEFT ;CORLST AND CORTAL ARE SET UP AT SYSTEM INITIALIZATION SYSEND=.-1 ;LAST LOC. CLEARED BY SYSINI INTERNAL SYSSIZ EXTERNAL SYSFIN SYSSIZ: EXP SYSFIN ;SIZE OF MONITOR(LAST LOC. USED) END,