File: RE.TK of Disk: Disks/MyPDP/m8-blue-rka1-rkb1
(Source file text)
/RE.TK 10-JUN-80 /**UASEM VERSION** /IN VIEW OF THE DEVELOPMENT OF THE NETWORK SOFTWARE /A NEW PAPERTAPE READER EMULATOR IS CREATED THAT READS THE TAPE /THROUGH THE NORMAL BLOCKDRIVER, PR. THIS MAKES IT POSSIBLE /TO READ TAPES THROUGH THE NETWORK LINK. LENGTH=200 /BUFFER LENGTH, E.G. 200, 400, 600, 1000 /SETUP EMTAB: *0 CDF 10 /EMTAB IS IN FIELD 1 EMTAB+01 /DEVICE CODE 01 "R^100+"E&3777 /NAME OF THIS EMULATOR TASK *200 "R^100+"E&3777 /NAME IS RE 200+LENGTH /ONE PAGE CODE AND THE BUFFER REXDTV, REDTV /ADDRESS OF DATA TRANSFER VECTOR XBUF, BUFFER /ADDRESS OF BUFFER XINIT, INIT /ADDRESS OF INITIALIZATION CODE (IN BUFFER) RESAVE, 0 RE, JMP I XINIT /THIS INSTRUCTION IS REPLACED /SZL CLA /BY SZL CLA JMP RECLR /THE USER IS OUT TAD I REUINST /GET THE INSTRUCTION AND C7 /GET IOP'S TAD (JMP JMP0 DCA .+1 HLT /BRANCH TO EMULATION ROUTINE JMP0, JMP RERET /0 NOP JMP RERSF /1 A VERY DELICATE INSTRUCTION JMP RERRB /2 READ A CHARACHTER JMP RERET /3 NOP JMP RERFC /4 MAKE IT A NOP JMP RERET /5 NOP JMP RERRB /6 READ A CHARACTER / JMP RERET /7 NOP RERET, JMS MONITOR /RETURN TO CENTRAL EMULATOR RETURN RERRB, JMS REIN /GET A CHARACTER FROM THE TAPE MQL CDF 10 TAD I REUAC /GET USERS AC MQA /OR-IN THE CHARACTER DCA I REUAC / JMP RERET /AND RETURN RERSF, TAD I REUPC /REMEMBER WHERE THE RSF WAS DCA RESAVE TAD XSKP /MAKE IT A SKP XSKP, SKP RERFC, TAD C7000 /(NOP JMP RERET /PATCH THIS INSTRUCTION WITH A NOP REEND, TAD RESAVE /ADDRESS OF RSF INSTRUCTION CDF 10 DCA I REUPC /BRUTELY DERAIL HIM TO HIS WAITLOOP TAD XSKP /LET EMULATOR THINK THAT THE SKP DCA I REUINST /WAS TRAPPED (TO FAKE EMCHCK). JMP RERFC /GO PATCH THE SKP (RFC) WITH NOP REIN, 0 /ROUTINE TO READ A CHARACTER FROM TAPE CDTOIF JMP I REOUT /CO-ROUTINES! REOUT, RE2 /ADJUSTED BY INIT AND (377 JMP I REIN RE1, JMS RESUB DCA RETEMP JMS RESUB CLL RTR RTR TAD RETEMP RTR RTR JMS REOUT /THAT'S THE THIRD CHARACTER ISZ REWC JMP RE1 RE2, JMS REFLIP /MAKE BG INACTIVE RECALL, TAD REXDTV JMS MONITOR CALL "P^100+"R&3777 JMP REWAIT /PR SEEMS BUSY ! DCA .+3 JMS MONITOR WAIT REWC, 0 /A SHARED LOCATION CDTOIF SZA CLA JMP REEOM /ASSUME IT'S END OF TAPE RECONT, JMS REFLIP /MAKE BG ACTIVE AGAIN TAD (-LENGTH%2!4000 DCA REWC TAD XBUF DCA RECA JMP RE1 REEOM, TAD (JMP REEND /DON'T READ ANOTHER BUFFER AFTER THIS ONE DCA RECALL-1 JMP RECONT /NOW PASS ALL OF THIS BUFFER TO THE USER RESUB, 0 TAD I RECA JMS REOUT TAD I RECA AND C7400 ISZ RECA NOP JMP I RESUB REWAIT, JMS MONITOR STALL DGNTICK CLA CLL JMP RECALL REFLIP, 0 /CHANGE BG STATUS AND KICK BS CDF 10 TAD I RESTAT CLL RAL CML RAL CML RTR AND (-LONG-1 /GET PRIORITY DCA I RESTAT JMS MONITOR SIGNAL BSSLOT CDTOIF JMP I REFLIP RECLR, DCA REXDTV /MAKE A FINAL CLOSE CALL CDTOIF TAD (JMP REXIT DCA REWC+1 REFAKE, JMP RECALL /CALL PR ONCE AGAIN REXIT, JMS MONITOR EXIT SWPOUT REDTV, ZBLOCK 2 RESTAT, 0 REUPC, 0 REUINST,0 REUAC, 0 RECA, 0 RETEMP, 0 PAGE BUFFER, REDTV-1 /ADDRESS OF VARIABLE TABLE YBUF, BUFFER XRE2, RE2 XREOUT, REOUT XRE, RE XREPAT, 0 INIT, DCA ZTEM1 TAD ZTEM1 TAD (UASEM-1 /SETUP POINTER TO UASEM DCA XREPAT /IN OUR BG TABLE REASLP, ISZ XREPAT TAD I XREPAT /LOOK AT ENTRY SNA /IS IT FREE ? JMP REASFR /YES, GO PUT IN MY NAME CIA TAD RENAME /WAS IT ALREADY USED BY ME ? SZA CLA JMP REASLP /NO, SOME OTHER TASK, LOOK FOR MORE REASFR, TAD RENAME DCA I XREPAT /OK, PUT MY NAME IN UASEM TABLE CDTOIF TAD BUFFER DCA AUTO10 TAD (LENGTH%2 /READ ONE BUFFER RIF /THIS FIELD DCA I AUTO10 /FUNCTION WORD OF DTV TAD YBUF DCA I AUTO10 /ADDRESS OF BUFFER TAD ZTEM1 DCA I AUTO10 /RESTAT TAD ZTEM1 TAD (UPC DCA I AUTO10 /REUPC TAD ZTEM1 TAD (UINST DCA I AUTO10 /REUINST TAD ZTEM1 TAD (UAC DCA I AUTO10 /REUAC TAD XRE2 DCA I XREOUT /INITIALIZE COROUTINES TAD (SZL CLA DCA I XRE CDF 10 CLL JMP I XRE RENAME, "R^100+"E&3777 PAGE ZBLOCK LENGTH-200 $$$