File: ONQIB.RA of Tape: Sources/Fortran/os8-f4-3
(Source file text)
/ON INTERRUPT QUEUE + ON BACKGROUND QUEUE ROUTINES / / / VERSION 40A 27-MAY-80 WVDM / / FIELD1 ONQI /PDP8-CODE 0 JMP SETINT /SET UP #INT INITIALLY ISZ ONQI /BUMP ARG POINTER ISZ INTQ+1 /BUMP INTERRUPT Q POINTER IOF /** DCA% INTQ+1 /STICK IOT ONTO INT Q TAD XSKP /FOLLOWED BY A SKIP ISZ INTQ+1 DCA% INTQ+1 /ONTO INT Q ISZ ONQI /SKIP FIRST WORD OF ADDR ISZ INTQ+1 ONQISW, TAD% ONQI /GET INT HANDLER ADDRESS ISZ ONQI DCA% INTADR+1 /ONTO ADDRESS STACK TAD INTADR+1 /NOW MAKE JMS% AND L177 TAD L4600 DCA% INTQ+1 /ONTO INT Q ISZ INTADR+1 ION /:: ISZ IQSIZE /ROOM FOR MORE ? JMP% ONQI /YES TAD .-1 /NO, CLOSE OUT THE SUBR DCA ONQI+1 JMP% ONQI / SETINT, TAD ONQISW /DO THIS PART ONLY ONCE DCA ONQI+1 CDF 0 IOF /** TAD XSKP /FIX UP #INT DCA% XINT+1 ISZ XINT+1 TAD INTQ+1 DCA% XINT+1 ISZ XINT+1 TAD CIFCDF DCA% XINT+1 ION /** CIFCDF, CDF CIF 10 JMP ONQI+1 /BACK TO ONQI / EXTERN #INT XINT, ADDR #INT INTQ, ADDR IHANDL INTADR, ADDR IHADRS IQSIZE, -5 XSKP, SKP L177, 177 L4600, 4600 CDF CIF JMP% IHANDL IHANDL, 0 REPEAT 16 JMP IHANDL-2 IHADRS, 0;0;0;0;0 ENTRY ONQB ONQB, 0 JMP SETBAK /SETUP #IDLE TAD% ONQB /GET ADDRESS OF IDLE JOB ONQBSW, ISZ ONQB DCA% BAKADR+1 /STORE ONTO BACKROUND JOB Q TAD BAKADR+1 /MAKE A JMS% ISZ BAKADR+1 AND L177 TAD L4600 ISZ BAKQ+1 DCA% BAKQ+1 ISZ BQSIZE /MORE ROOM ? JMP% ONQB /YES TAD .-1 /NO, CLOSE THE DOOR DCA ONQB+1 JMP% ONQB / SETBAK, TAD ONQBSW /CLOSE OFF #IDLE INITIALIZATION DCA ONQB+1 CDF 0 TAD XSKP /FIX UP #IDLE DCA% XIDLE+1 TAD BAKQ+1 ISZ XIDLE+1 DCA% XIDLE+1 ISZ XIDLE+1 TAD CIFCDF DCA% XIDLE+1 CIF CDF 10 JMP ONQB+1 / EXTERN #IDLE XIDLE, ADDR #IDLE BAKQ, ADDR BAKRND BAKADR, ADDR BHADRS BQSIZE, -5 CDF CIF JMP% BAKRND BAKRND, 0 REPEAT 6 JMP BAKRND-2 BHADRS, 0;0;0;0;0 END