/PATCH CHANGES INTERRUPT VERSION OF /DECTAPE I/O TO NON-INTERRUPT CALL /TO GENERALIZED I/O IN LAST PAGE, /AND RETURNS AS IF INTERRUPT OCCURED DCMA=6601 DTXA=6764 FIXTAB /POINTERS TO LOCATIONS IN PIP DTABSY=2000 CDIOX=2001 ERROR=2147 SKPZ=120 ZRET=53 TAC=3 LINK=4 SYSIO=121 A4=133 IDLEO=300 IDLEZ=72 ITIMER=5 IDLE=302 IDLE1=307 OUTDEV=155 INDEV=156 A3=17 A7=15 M3=136 BUFPTI=440 BUFSZI=441 BUFSTI=151 IWAIT=153 OWAIT=154 BUFSTO=152 BUFPTO=511 BUFSZO=512 M200=123 /INTERRUPT SERVICE ROUTINE PATCHES *213 DCMA /CLEAR DISK FLAG *210 DTXA /CLEAR DECTAPE FLAG /MODIFICATIONS TO OPERATING LEVEL ROUTINE *IDLE+4 JMP I IDLE5 /INPUT BUFFER EMPTY *IDLE1+4 JMP I IDLE6 /OUTPUT BUFFER FULL /FREE CORE MEMORY *374 IDLE5, IDLE5A IDLE6, IDLE6A *2202 HLT /THERE IS NO DISK!! IDLE5A, TAD INDEV SMA CLA JMP I IDLEZ /NON-FILE IOF /GENERATE INTERRUPT TAD IDLEZ DCA 0 /IWAIT WILL INDICATE DCA TAC /IF READ DESIRED JMP I ZRET IDLE6A, TAD OUTDEV SMA CLA JMP I IDLE1Z /NON-FILE IOF TAD OWAIT /FLAG TO START OUTPUT IAC DCA OWAIT TAD IDLE1Z DCA 0 DCA TAC JMP I ZRET IDLE1Z, IDLE1 *CDIOX CDIOX, 0 IOF NOP /FOR DEBUGGING CLA DCA DTABSY TAD I CDIOX ISZ CDIOX DCA P8EFN /FUNCTION WORD TAD I CDIOX ISZ CDIOX DCA P8EBL /BLOCK ADDRESS TAD I CDIOX ISZ CDIOX DCA P8ECR /CORE ADDRESS TAD CDIOX DCA P8ELKA /ADDRESS OF LINK TAD I P8ELKA /LINK ISZ CDIOX DCA P8ELK /CALLING LINK TAD SKPZ DCA I IDLEOZ DCA ITIMER DCA TAC DCA LINK NOP /FOR DEBUGGING NOP NOP JMS I SYSIO P8EFN, 0 P8EBL, 0 P8ECR, 0 P8ELK, 0 JMP ERROR+6 NOP NOP NOP /FOR DEBUGGING CLA TAD P8EFN /READ? AND A7 TAD M3 SZA CLA JMP P8EWRT TAD P8ELK DCA I P8ELKA /RETURN LINK IAC DCA I BUFSTI /MARK BUFFER FULL ISZ BUFSTI /GET POINTER TO NEXT TAD I BUFSTI /BUFFER DCA BUFSTI /STORE POINTER (PERMANENT) TAD BUFSTI TAD A3 DCA I BFPTI TAD M200 /FIXED BUFFER SIZE=128 WORDS DCA I BFSZI ISZ IWAIT /SET FLAG FOR NEXT READ JMP I CDIOX P8EWRT, CLA CMA DCA I BUFSTO /MARK BUFFER TO BE EMPTY ISZ BUFSTO TAD I BUFSTO /GET POINTER TO NEXT DCA BUFSTO /BUFFER HEADER TAD BUFSTO /SETUP POINTER TO TAD A3 /BUFFER DCA I BFPTO CMA TAD M200 /GET -201 DCA I BFSZO JMP I CDIOX BFPTI, BUFPTI BFSZI, BUFSZI BFPTO, BUFPTO BFSZO, BUFSZO P8ELKA, 0 IDLEOZ, IDLEO /SAVE TIME IN "TIME" *5160 NOP NOP NOP NOP $