X-Git-Url: http://git.sky-visions.com/cgi-bin/gitweb.cgi/retro-software/dec/tops10/v4.5.git/blobdiff_plain/cda2ba6d27526e5ef6f27f7b3391cfb55055bf2e..0000ed8f3efcdbf411f6c91517909089e5d7ef5d:/src/clock1.mac diff --git a/src/clock1.mac b/src/clock1.mac index eff0f89..d337313 100644 --- a/src/clock1.mac +++ b/src/clock1.mac @@ -11,6 +11,7 @@ CLOCK1: ;FOR SCHEDULING JOBS AND ERROR HANDLING THAT THE USER ;IS NOT ENABLED TO HANDLE HIMSELF + EXTERNAL TIME,TIMEF,CLKFLG,REQCLK,APRCHL,APRPC,UPTIME EXTERNAL JOBDAT,JOBTPC,JOBCNI,JOBAPR,APRERR,SCHEDF @@ -20,6 +21,7 @@ EXTERNAL RELEA9,CRSHWD,CRASHX INTERNAL FTTTYSER ;THIS ROUTINE MAY BE ASSEMBLED TO WORD EITHER ; THE OLD SCNSER OR THE NEW TTYSER. + INTERNAL FTCHECK,FTMONP IFN FTCHECK+FTMONP,< @@ -33,11 +35,9 @@ APRCON: 231000 ;MONITOR ENABLED CPU FLAGS APRIN1: 0 ;USER ENABLED CPU FLAGS CLKS17: 0 ;PLACE TO SAVE AC17 ON CLOCK INTERRUPT DAMESS: ASCIZ /-JAN-/ - CLOCK: POINT 36,CIPWTM,35 ;BYTE POINTER TO CLOCK REQ QUEUE > - - INTERN APRINT + INTERN APRINT APRINT: JRST APRPAR ;ALWAYS CHECK APR AND PI DEVICES JRST . ;CHECK OTHER DEVICES @@ -65,7 +65,7 @@ APRPAR: CONSZ PI,600000 ;MEM PARITY ERROR OR POWER FAILURE? CONO PI,REQCLK ;REQUEST INTERRUPT ON CLK CHANNEL CONSZ APR,@APRIN1 ;IS USER ENABLE FOR ANY FLAGS(INCLUDING CLOCK) ; RH ALSO MODIFIED EACH TIME A USER RUNS - JRST APRER ;YES, GO PROCESS TRAP + JRST APRER1 ;YES, GO PROCESS TRAP CONO APR,1000+APRCHN ;NO, CLEAR ONLY THE CLOCK FLAG JEN @APRCHL ;DISMISS INTERRUPT @@ -76,8 +76,7 @@ APRER1: CONO APR,1000+APRCHN ;NOW CLEAR CLOCK FLAG TLNE TAC,USRMOD ;IS PC FROM USER MODE? JRST APRER4 ;YES, GO TRAP TO HIM JRST APRER2 ;NO. GO CHECK IN CASE ALSO A SERIOUS ERROR - -;OTHER APR INTERRUPTS BESIDES CLOCK + ;OTHER APR INTERRUPTS BESIDES CLOCK APRER: EXCH TAC,APRCHL ;SAVE TAC, GET PC TLNE TAC,USRMOD ;IS PC IN USER MODE? @@ -96,15 +95,13 @@ APRER4: EXCH JDAT,JOBDAT ;YES, SAVE JDAT, GET CURRENT JOB DATA AREA ADR. EXCH JDAT,JOBDAT ;RESTORE JDAT,JOBDAT CONO APR,440+APRCHN ;DISBALE FOV, AROVF IN CASE ON ;SO USER MUST REENABLE WITH SETAPR UUO - APRER3: TLZ TAC,440000 ;CLEAR FOV (PC CHANGE ON PDP-6) AND AR OVF FLAGS ; SO INTERRUPT MAY BE DISMISSED EXCH TAC,APRCHL ;RESTORE TAC & APRCHL CONO APR,430110+APRCHN ;CLEAR ALL ERROR FLAGS WHICH CAN CAUSE INTERRUPTS ; EXCEPT CLOCK FLAG(ELSE LOSE TIME OF DAY) JEN @APRCHL ;DISMISS INTERRUPT - -APRER2: CONSO APR,NXM!ILM!POV! ;DOES EXEC CARE? + APRER2: CONSO APR,NXM!ILM!POV! ;DOES EXEC CARE? JRST APRER3 ;NO. IGNORE EXEC OVERFLOW (MUST BE FOV OR AROVF MOVEM TAC,APRPC ;STORE ERROR PC FOR CLK CHANNEL CONI APR,APRERR ;STORE ERROR FLAGS @@ -123,8 +120,7 @@ IFN FTHALT,< > JRST APRER3 ;NO,MUST BE UUO LEVEL(OR USER MODE AND ; MEMORY DROPPED OUT) - -SUBTTL CLOCK - LOW PRIORITY CLOCK SERVICE(CLK) + SUBTTL CLOCK - LOW PRIORITY CLOCK SERVICE(CLK) ;THIS ROUTINE RUNS ON THE LOWEST PRIORITY PI CHANNEL AND AT UUO LEVEL ;TO CAUSE AN INTERRUPT ON CLK CHANNEL: @@ -143,7 +139,6 @@ SUBTTL CLOCK - LOW PRIORITY CLOCK SERVICE(CLK) ;THEN CALLS SCHEDULER ;IF THE CURRENT JOB IS IN EXEC MODE THE ABOVE 4 TASKS ARE ;DELAYED UNTIL THE CURRENT JOB ENTERS A STOPPABLE STATE: I.E., UNTIL - ; 1. JOB STARTS TO WAIT FOR A BUSY SHARABLE DEVICE ; 2. JOB STARTS TO WAIT FOR A IO TO COMPLETE ; 3. CONTROL ABOUT TO RETURN TO USER MODE @@ -186,10 +181,12 @@ WSCHED: POP PDP,USRPC ;SAVE PC IN PROTECTED PART OF SYSTEM DATA MOVEI AC3,JOBDAC(JDAT) ;SAVE ACS 0-16 IN DUMP ACS BLT AC3,JOBD16(JDAT) ;IN CURRENT JOB DATA AREA MOVEI PDP,NULPDL ;NULL JOB PD LIST - HRLI PDP,MJOBP1 ; OTHERWISE GET PD OUF + HRLI PDP,MJOBP1 ;USED TO CALL SCHEDULER AND COMMAND DECODE + ; OTHERWISE GET PD OUF JRST RSCHED ;GO RESCHEDULE + ;HERE AT UUO LEVEL WHEN CURRENT JOB RETURNS TO USER MODE ;FROM A UUO CALL AND EITHER: ; 1. CURRENT JOB TYPED CONTROL C WHILE IN EXEC MODE @@ -225,7 +222,6 @@ CLKINT: SKIPN CLKFLG ;CLK INTERRUPT REQUEST? JEN @CLKCHL SAVPC: MOVEM 17,USRPC ;SAVE PC IN PROTECTED PART OF SYSTEM DATA - ; STORAGE FOR CURRENT JOB CLKERR: SKIPN 17,JOBDAT ;CURRENT JOB DATA AREA, IS THERE ONE? MOVEI 17,NULDAT ;NO, MUST BE NULL JOB OR CORE 0 @@ -241,9 +237,8 @@ CLKERR: SKIPN 17,JOBDAT ;CURRENT JOB DATA AREA, IS THERE ONE? SKIPE TAC,APRERR ;IT THIS AN ERROR INTERRUPT? PUSHJ PDP,APRILM ;YES, GO PROCESS ERROR, APRILM WILL CLEAR APRERR ; FLAG IMMEDIATELY - -EXTERNAL COMCNT,NXTJOB,HNGTIM,POTLST,LSTWRD -EXTERNAL TIMEF,APRERR,CLKFLG,SCHEDF,JDB,PMONTB + EXTERNAL COMCNT,NXTJOB,HNGTIM,POTLST,LSTWRD +EXTERNAL TIMEF,APRERR,CLKFLG,SCHEDF,JOB,PMONTB RSCHED: SKIPN TIMEF ;HAS CLOCK GONE OFF SINCE LAST CALL? JRST CIP6 ;NO, JUST RESCHEDULE @@ -268,7 +263,6 @@ IFN FTKCT,< ADDI TAC,1 ;MAKE IT NO. OF 1K BLOCKS ADDM TAC,JBTKCT(ITEM) ;ADD IN ACCUMULATED CORE RUNNING TIME PRODUCT ; (KILO-CORE TICKS) - IFN FT2REL,< EXTERN CHGHGH PUSHJ PDP,CHGHGH ;CHARGE USER FOR HIGH SEGMENT IF HE HAS ONE @@ -286,8 +280,7 @@ CIP3: SETZB IOS,TIME ;YES, RESET TIME OF DAY LDB TAC,PMONTB CAMGE TAC,TAC1 ;END OF MONTH? JRST CIP3 ;YES. - -;PROCESS TIMING REQUESTS STORED IN QUEUE + ;PROCESS TIMING REQUESTS STORED IN QUEUE CIP2: HRRZ STOR,CLOCK ;GET END OF LIST CIP4: CAIN STOR,CIPWTM1 ;END YET? @@ -299,7 +292,7 @@ CIP4: CAIN STOR,CIPWTM1 ;END YET? MOVE TAC, @CLOCK SOS CLOCK MOVEM TAC, (STOR) - CONI PI,PION + CONO PI,PION LDB TAC, [POINT 6, TAC1, 23] ;GET 6 BIT DATA ITEM MOVSS TAC1 ;SETUP DISPATCH ADDRESS PUSH PDP, STOR ;SAVE ONLY VALUABLE AC @@ -318,8 +311,7 @@ CIP6: PUSHJ PDP,NXTJOB ;CALL SCHEDULER SETZM SCHEDF ;CLEAR FORCED SCHEDULING FLAG CAMN ITEM,JOB ;IS NEXT JOB SAME AS LAST ONE? JRST CIP8 ;YES, JUST RESTORE ACS AND DISMISS - -;DIFFERENT JOB. SAVE SOFTWARE STATE(HARDWARE ALREADY SAVED) + ;DIFFERENT JOB. SAVE SOFTWARE STATE(HARDWARE ALREADY SAVED) EXTERNAL JOB,JOBDAT,JOBPRT,USRPRT,USRHCU,JOBJDA @@ -335,9 +327,9 @@ EXTERNAL JOB,JOBDAT,JOBPRT,USRPRT,USRHCU,JOBJDA ; SINCE IT DOES IO INTO AND OUT OF ; CHANNEL LOCATIONS (JOBJDA+1..,JOBJDA+17), ADD JA,T1 ;RELOCATE TO USER AREA - BLT T,JOBJDA(JA) ; STOP WITH USER CHANNEL 0-1+C(USRHCU) - -;RESTORE SOFTWARE STATE OF NEW JOB,THEN HARDWARE STATE + BLT T,JOBJDA(JA) ;MOVE TO USER JOB DATA AREA + ; STOP WITH USER CHANNEL 0-1+C(USRHCU) + ;RESTORE SOFTWARE STATE OF NEW JOB,THEN HARDWARE STATE INTERNAL NULJOB,NULADR EXTERNAL JOB,JBTDAT,JOBDAT,USRPRT,JOBPRT @@ -356,7 +348,6 @@ IFN FTHALT,< MOVEI T,USRPRT ;NO, DEST,#PROTECTED AREA IN MONITOR HRLI T,JOBPRT(JA) ;SOURCE#FIRST PROTECT LOC. IN JB DATA AREA SKIPL T1,JOBHCU(JA) ;MOVE NO. OF USER IO CHAN. IN USE - CAILE T1,17 ;MUST BE 17 OR LESS(IO MIGHT CLOBBER ; IF ADRRESS CHECKING MISSES MOVEI T1,0 ;MOVEJUST CHAN 0 IF NEG. OR GREATER THAN 17 @@ -391,7 +382,6 @@ IFN FTCHECK, SETZB 0,NULERR ;CLEAR AC 0 USED FOR USUAL MONITORING - ; CLEAR FLAG SAYING ERROR IN NULL JOB ; OF NULL TIME INTERVAL ; LOC JOBDAT (LOCATION OF NULL JOB DATA AREA) TO 0 @@ -402,8 +392,7 @@ IFN FTCHECK, ; IF THIS IS THE LARGEST JOB IN USE,FIND NEXT @@ -531,8 +519,7 @@ EXTERN PRJPRG SOJG TAC,-1 ;NO,KEEP LOOKING,FINISHED(TRUE IF THIS THE ONLY JOB MOVEM TAC,HIGHJB ;YES,STORE NEW HIGHEST JOB NUMBER ASSIGNED JRST ESTOP ;GO SET ERROR BIT - -;ROUTINE TO STOP JOB, SET ERROR BIT AND PRINT MESSAGE + ;ROUTINE TO STOP JOB, SET ERROR BIT AND PRINT MESSAGE ;THEM ADD ^TC ;CALL: MOVEI TAC,ADR. OF MESSAGE ; PUSHJ PDP,PHOLD @@ -559,6 +546,7 @@ HOLD1: PUSHJ PDP,TTYSTC ;MAKE SURE TTY STAYS IN MONITOR MODE ;ROUTINE TO STOP USER AND FLAG AS ERROR STOP + INTERNAL ESTOP,ESTOP1 EXTERNAL JBTSTS,STUSER,STREQ,STAVAL EXTERNAL SCHEDF,JOB,CPOPJ @@ -574,10 +562,8 @@ ESTOP1: MOVSI TAC,JERR ;SSET ERROR BIT IN JOB STATUS WORD MOVSI TAC,637163 ;FIND SYS DDB PUSHJ PDP,DEVSRC ;SYSTEM ERROR IF NOT FOUND JSP DAT,ERROR - PUSHJ PDP,RELEA9 ;YES, RELEASE SYSTEM TAPE WITHOUT WAITING - -;ROUTINE TO STOP NY JOB FROM BEING SCHEDULED + ;ROUTINE TO STOP NY JOB FROM BEING SCHEDULED ;CALL: ; MOVE ITEM, JOB NUMBER ; PUSHJ PDP, STOP1 @@ -613,18 +599,18 @@ IFE FTSWAP,< IFN FTSWAP,< JRST REQUE ;SET REQUE JOB FLAG > + SKIPL TAC,JBTSTS(ITEM) ;RUN FLAG OFF? TLNN TAC,JERR ;YES, ERROR FLAG ON? JRST STOP2 ;NO SETOM SCHEDF ;YES, FORCE RESCHEDULING EVEN IF JOB IN EXEC MODE JRST STOP2 ;YES, MAKE CLK RESCHEDULE ANOTHER JOB - -;ROUTINE TO REQUE JOB WHICH HAS HAD A COMMAND TYPED + ;ROUTINE TO REQUE JOB WHICH HAS HAD A COMMAND TYPED ;WHICH NEEDS CORE AND THE CORE IMAGE IS ON THE DISK. ;OR IS IN CORE AND HAS ACTIVE DEVICES. ;CALLED FROM COMMAND DECODER ;CALL: MOVE ITEM,JOB NO. - PUSHJ PDP,DLYCOM +; PUSHJ PDP,DLYCOM INTERNAL DLYCOM @@ -638,22 +624,21 @@ INTERNAL FTSWAP IFN FTSWAP,< TLNN TAC,CMWB PUSHJ PDP,REQUE - > POPJ PDP, -;ROUTINE TO PUT JONB IN NO CORE QUEUE +;ROUTINE TO PUT JOB IN NO CORE QUEUE + INTERNAL FTSWAP IFN FTSWAP, - -;ROUTINE TO SETUP MONITOR JOB TO RUN LATER AT UUO LEVEL + ;ROUTINE TO SETUP MONITOR JOB TO RUN LATER AT UUO LEVEL ;CALLED BY COMMANDS WHICH MAY OR MAY NOT NEED TO ;RUN MONITOR JOB DEPENDING ON WHETHER JOB HAS CORE(KJOB,IJOB) ;TTY WILL REMAIN IN MONITOR MODE @@ -669,6 +654,7 @@ MONJOB: PUSHJ PDP,MSTART ;START WITH PC IN MONITOR JRST SETRUN ;SET TTY TO START JOB WHEN COMMAND RESPONSE ; IS FINISHED AND KEEP TTY IN MONITOR MODE + ;ROUTINE TO SETUP ACS FOR MONITOR JOB STARTING AT UUO LEVEL ;SETS UP ITEM, WITH JOB NO.; PROG WITH RELOCATION, AND PDP ;WITH PUSH DOWN LIST ADR. IN JOB DATA AREA @@ -690,8 +676,7 @@ IFN JDAT-PROG,< PUSH PDP,TAC1 ;SAVE STOP ADDRESS JRST (TAC) ;RETURN AND DO MONITOR JOB ; WITH TT DDB,OUTPUT BYTE POINTER, AND JOB NO. - -;ROUTINE TO SET JOB STATE TO BE SCHEDULED TO RUN + ;ROUTINE TO SET JOB STATE TO BE SCHEDULED TO RUN ;WITH SPECIFIED STARTING ADDRESS INCLUDING PC FLAGS ;CALLED ONLY WHEN JOB IN CORE AND AFTER JOB HAS BEEN ;SAFELY STOPPED IN ONE OF 3 STATES: @@ -710,7 +695,6 @@ EXTERNAL JOBPC,JOBDAC,JOBD17,TTYSET,JOBOPC,JOBPD1 USTART: MOVE TAC,JOBPC(JDAT) ;GET OLD PC TLNE TAC,USRMOD ;IS IT IN USER MODE TOO? JRST USTRT1 ;YES, DUMP ACS AND PC FLAGS ARE ALREADY HIS - MOVEI TAC,JOBDAC(JDAT) ;NO. MOVE USERS(UUO) ACS TO DUMP ACS HRL TAC,JDAT ;SOURCE=REL, 0,DEST,=JOBDAC IN JOB DATA AREA BLT TAC,JOBD17(JDAT) ;MOVE ALL ACS @@ -726,13 +710,14 @@ USTRT1: MOVEM TAC,JOBOPC(JDAT) ;STORE OLD PC FOR USER TO LOOK AT MSTART: MOVEM TAC1,JOBPC(JDAT) ;STORE NEW PC MOVSI TAC,JERR+WTMASK ANDCAM TAC,JBTSTS(ITEM) ;CLEAR ERROR AND WAIT STATUS BITS - ;SET TTY STATE TO INITAL COND. + JRST TTYSET ;SET TTY STATE TO INITAL COND. ; TTYUSR OR TTYURC SHOULD BE CALLED ; TO INDICATE WHETHER TTY TO USER OR EXEC MODE ; AND THAT JOB IS TO RUN(RUN BIT =1) WHEN ; MONITOR COMMAND RESPONSE FINISHES. ; SEE SETRUN BELOW + ;ROUTINE TO SET JOB STATUS RUN BIT(RUN) ;CALLED BY SCANNER SERVICE WHEN TTY MONITOR COMMAND ;RESPONSE FINISHES, THIS ACTION IS ENABLED BY CALLING @@ -793,8 +778,7 @@ SETSLP: MOVSI TAC,CLKR ;FLAG THAT A CLOCK REQUEST HAS BEEN PUT IN ;JOB NO. IN AC TAC INTERNAL WAKE - -EXTERNAL PJSTS,RNQ,SLPQ +EXTERNAL PJBSTS,RNQ,SLPQ WAKE: MOVEI TAC1,RNQ ;RUN QUEUE CODE MOVE ITEM,TAC ;JOB NO. @@ -807,8 +791,7 @@ WAKE: MOVEI TAC1,RNQ ;RUN QUEUE CODE ; (CONTROL C, START CAN GET JOB OUT SLEEP) JRST SETR2 > - -;ROUTINE TO GET DATA CONTROL AND ANOTHER SHARABLE DEVICE + ;ROUTINE TO GET DATA CONTROL AND ANOTHER SHARABLE DEVICE ;JOB NEVER GETS ONE DEVICE AND WAITS FOR SECOND, SINCE TYPING ;CONTROL C WOULD NEVER FINISH WITH FIRST DEVICE ;CALL PUSHJ PDP,GETDCXX @@ -855,7 +838,6 @@ INTERNAL MTWAIT,STWAIT,DTWAIT,DCWAIT,DAWAIT,MQWAIT,AUWAIT EXTERNAL JOB,REQTAB MTWAIT:DTWAIT:DCWAIT:STWAIT:DAWAIT:MQWAIT:AUWAIT: - DVWAIT: MOVE AC1,(PDP) ;GET ADR. OF CALLER MOVE AC1,-2(AC1) ;GEET AOSLE XXREQ INSTRUCTION JRST .+2 @@ -869,8 +851,7 @@ SETSTT: MOVE AC3,JOB ;CURRENT JOB NO. PJBS1: POINT JWSIZ,JBTSTS(AC3),JWPOS ;BYTE POINTER TO JOB STATUS ; WORD WAIT QUEUE CODE - -;ROUTINE TO SET JOB TO RUN AFTER IT HAS BEEN STOPPED + ;ROUTINE TO SET JOB TO RUN AFTER IT HAS BEEN STOPPED ;BECAUSE IT HAD TO WAIT FOR IO TO COMPLETE FOR SOME DEVICE ;EACH SERVICE ROUTINE WILL AT INTERRUPT LEVEL ;CHECK EACH TIME IT FINISHED A TASK(RUNFFERFUL) @@ -890,6 +871,7 @@ EXTERNAL WSQ,WSAVAL,TSQ,TSAVAL,JOB,PJOBN PJBS2: POINT JWSIZ,JBTSTS(TAC),JWPOS ;BYTE POINTER TO JOB STATUS ; WORD QUEUE CODE + STTIOD: MOVEI TAC1,TSQ ;SET TTY IO WAIT SATISFIED QUEUE CODE AOS TSAVAL JRST SETIO1 @@ -897,13 +879,13 @@ SETIOD: MOVEI TAC1,WSQ ;REQUE TO WAIT SATISFIED Q AOS WSAVAL ;INCR, NO, OF JOBS WITH IO WAIT ; SATISFIED, NON-ZERO WSAVAL WILL ; CAUSE SCHED, TO SCAN FOR IO + ; SATISFIED JOB. SETIO1: LDB TAC,PJOBN DPB TAC1,PJBS2 ;IN JOB STATUS WORD INTERNAL FTSWAP IFN FTSWAP,< EXTERN QJOB,JBTSTS - MOVSI QJOB,JBTSTS MOVSI TAC1,JRQ ;SET JOB TO BE REQUEUED AT NEXT CLOCK TICK TDNN TAC1,JBTSTS(TAC) ;IS REQUE BIT ALREADY ON? AOS QJOB ;NO, INCREMENT COUNT ONCE FOR EACH JOB @@ -911,8 +893,7 @@ IFN FTSWAP,< > NULTST: SKIPE JOB ;IS NULL JOB RUNNING? POPJ PDP, ;NO LET OTHER JOB RUN TILL SCHEDULER IS TRAPPED TO - -;ROUTINE TO CAUSE CLK TO ROUTINE TO RESCHEDULE + ;ROUTINE TO CAUSE CLK TO ROUTINE TO RESCHEDULE ;CALLED AT ANY LEVEL ;CALL: PUSHJ PDP,STOP2 ; RETURN IMMEDIATELY EXCEPT IF AT UUO LEVEL @@ -927,8 +908,7 @@ STOP2: CONO PI,PIOFF ;PREVENT CLOCK INTERRUPT DURING STOP2 CODE CONO PI,PICLK ;TURN PI BACK ON AND REQUESST INTERRUPT TO ; CLK PI CHANNEL(LOWEST PRIORITY CHANNEL) POPJ PDP, ;INTERRUPT IMMEDIATELY IF AT UUO LEVEL - -;ROUTINE TO WAIT TILL DEVICE CATCHES UP WITH USER AND BECOMES INCTIVE + ;ROUTINE TO WAIT TILL DEVICE CATCHES UP WITH USER AND BECOMES INCTIVE ,CALLING SEQUENCE , PUSHJ PDP, WAIT1 , EXIT ALWAYS RETURN HERE @@ -959,6 +939,7 @@ WAIT1: MOVE IOS,DEVIOS(DEVDAT) ; RETURN IMMEDIATELY IF DEVICE IS INACTIVE ; RETURN WHEN DEVICE FINISHES NEXT BUFFER IF IT IS ACTIVE + INTERNAL WSYNC EXTERNAL IOWQ,TIOWQ,PION,PIOFF @@ -968,7 +949,6 @@ WSYNC: MOVSI IOS,IOW ;SETUP DEVICE IO WAIT BIT TLNE AC3,DVTTY ;IS THIS DEVICE A TTY? MOVEI AC1,TIOWQ ;YES, SET TTY WAIT STATE CODE MOVE AC3,JOB ;CURRENT JOB NO. - MOVEI AC2,IOACT ;DEVICE ACTIVE BIT CONO PI, PIOFF ;TURN PI OFF TDNN AC2,DEVIOS(DEVDAT) ;IS THE DEVICE ACTIVE? @@ -986,4 +966,5 @@ WSYNC1: CONO PI, PION ANDCAB IOS, DEVIOS(DEVDAT) ;CLEAR DEVIVCE IO-WAIT BIT POPJ PDP, + CLKEND: END