/****** TOPS8 PTR EMULATOR ******** /LAST EDIT: 29-SEP-78, HOU /LAST EDIT: 29-AUG-75, ELC /CREATED: 20-DECEMBER-74, ELC /SINGLE PAGE PAPERTAPE READER EMULATOR /THIS TASK EXPECTS THE FOLLOWING THREE IOT'S FROM THE BACKGROUND: / /6011 SKIP-ON-READER-FLAG. THIS IOT IS INITIALY PACHED WITH / A SKIP. THIS MODULE WILL TAKE CARE OF ALL SYNCRONISATION / THUS THE 6011 IS PURE OVERHEAD THAT CAN BETER BE AVOIDED. / WE DO REMEMBER HOWEVER WHERE THE 6011 WAS IN THE USERS / PROGRAM. IF WE TIMEOUT THE TAPEREADER AT THE END / WE CHANGE THE SKP IN A NOP. NORMALY BG-PROGRAMS COUNT THE / NUMBER OF 6011 THAT ARE NECESARRY TO GET THE NEXT / CHAR FROM THE / TAPE AND IF IT LASTS TOO LONG THEY DECIDE IT TO BE THE END / OF THE TAPE. SUCH A TIMEOUT LOOP WOULD TAKE QUITE SOME / TIME IF EVERY 6011 HAS TO BE EMULLATED. THUS BY PATCHING / IT WITH A NOP WE CAN LET IT GO AS SMOOTH AS NORMALLY. / NOTE THAT THE SAME READER ROUTINE IN THE BACKGROUND CAN'T / BES RESET TO A RSF FIRST ! IS THE ACTUAL READ-INST THE READER (FIRST TIME / READER INTERRUPT. THEN THE CHARACTER IS ORRED IN / THE USERS ACUUMULATOR AND WE RETURN. WHEN THE WAIT / EXITS WITH A TIMEOUT ERROR, WE GIVE A CONTROL-Z IN THE / USERS ACCUMULATOR, PATCH THE SKP TO A NOP AND MAKE / /6014 THIS INSTRUCTIFLOUS AND PATCHED / WITE IOT'S / KCC=KCC&7008P KSF=KSF&7007+KL8P TASKNA HR 200 /A ONE PAGER WITHOUT CONNECTED INT'S 0 RE, CDF MONFLD /THERE ARE THE INTERRESTING THINGS SNA JMP RECLR /AC=0: RELEASE THIS DEVICE TAD C3 /AC IS POINTER TO BG-AREA DCA REUPC TAD REUPC IAC JMS DEFER AND C70 /GET CURRENT INSTRUCTION FIELD TAD C6201 DCA RECDF /SETUP FOR PATCHES STA TAD I REUPC DCA REPNT /POINTER TO CURRENT INSTRUCTION TAD REUPC TAD C2 DCA REUAC TAD REUAC IAC JMS DEFER /GET THE TRAPPED INSTRUCTION RTR SPA CLA JMP RESKP /IOP1: SKIP SNL JMP RENOP /NOT IOP2 RERFC, KCC /IOP2: READ DCA .-1 /RFC ONE TIME ONLY TO START TAPE TAD (-DGNTICK%5!7700 /.2 SECONDS TIMEOUT JMS MONITOR WAIT HSR SZA CLA JMP REEND /TIMED OUT TAD I REUAC KRS /OR-IN NEW CHAR, KICK READER DCA I REUAC /GIVE BACK TO USER KCC RERET, JMS MONITOR RETURN RESKP, ISZ I REUPC /SKIP FIRST TIME TOO TAD REPNT DCA RESAVE /REMEMBER WHERE RSF WAS TAD (SKP-NOP RENOP, DF TO USERS INSTRUCTION F MONFLD JMP RERET +1 CDF /CDF TO USERS ANGE TO NOP FOR A SMOOT TIMEOUT LOOP DCA I RESAVE CDF MONFLD TAD I REUAC AND (-232-1 TAD (232 DCA I REUAC /OR-IN A ^Z RECLR, TAD (KCC DCA RERFC /REINITIALISE READER ROUTINE JMS MONITOR EXIT SWPREUPC, 0 REUAC, 0 REPN