File PE.TK

Directory of image this file is from
This file as a plain text file

/******* MULTI8 PTP-PUNCHER EMULATOR *******
/LAST EDIT: 10-MAR-76, ELC (REMOVED FAKEHANDLER STUFF)
/LAST EDIT:  5-FEB-76, ELC (ADAPTED TO V6)
/LAST EDIT: 30-DEC-75, JV
/CREATED: 29-DEC-75, JV (FROM LE)

/FUNCTION: TO EMULATE THE PTP-PUNCHER IOTS AND TO SEND CHAR-
/	ACTERS FROM THE USER ACCUMULATOR TO THE PTP-PUNCHER.
/CONCEPT:THE PAPERTAPE-PUNCHER IS A SHARED DEVICE.
/	IT WOULD BE CONVENIENT IF THE CLAIM FOR IT
/	COULD BE HANDLED AUTOMATICALLY WITHOUT CONFLICTS.
/	THIS COULD BE ACHIEVED BY USING THE PTP-PUNCHER
/	BLOCKDRIVER AS OUTPUT MEDIUM: FOREGROUND PROGRAMS
/	USE IT TOO. SO WHOEVER HAS CLAIMED THE PTP-PUNCHER
/	BLOCKDRIVER, HAS CLAIMED THE PTP-PUNCHER TOO.
/	TWO BUFFERS ARE USED FOR SMOOTH OPERATION BETWEEN
/	BACKGROUND SWAPS.
/	ANY BLANKS SEND BEFORE THE FIRST PSF INSTRUCTION ARE
/	IGNORED (TO SUPPRESS THE HANGING IN CASE OF PROGRAMS
/	THAT DON'T ACTUALLY USE THE PUNCHER, BUT DO A 6024
/	JUST TO RAISE THE FLAG, E.G. FORERS FROM THE BACKGROUND  INTO A BUFFER AS THEY AS FULL, THE BACKGROUND IHE BG-SCHEDULER INFORMED OF THIS. THEN THE
/	PTP-PUNCHER BLOCKDRIVER IS CALLED. WHEN BUSY, THIS
/	TASK LOOPS TO RETRY. BEFORE AWAITING THE COMPLETION
/	OF THE TRANSFER, A NEW BUFFER IS PREPARED FOR THE
/	NECESSAR BUFFER IS TERMINA-
/	TDED WITH BLANKS.
/	ON T 232 (CTRL/Z) IS PUT INT)
/	AND A "CLEAR SWPOUT" IS DONE.
/	NOTE THAT PE CARRIES ITS BUFFERS IN ITS OWN BODY AND
/	IS THUS RATHER LARGE. PART OF THE INITIALISING CODE
/	RESIDES IN THE BUFFER (ONCE ONLY CODE).

/	PAPERTAPE-IOTS ARE EMULATED AS FOLLOWS:
/	6020,5&7:ERROR RETURN, RESULTING IN ERROR MESSAGE
/	6021	:OVERLAID BY A PERMANENT SKIP
/	6022&3	:NO OPERATION
/	6024&6	:PUT CHARACTER IN BUFFER
/	6000	:COPY BLOCKS INTO BUFFER (FOR FAKE HANDLER)


PEBUFMAX=200 /LENGTH OF BUFFERS , MUST BE 1 PAGE OR 2,4,8,ETC. IFNZRO PEBUFMAX&177+PEBUFMAX-1&PEBUFMAX <LNGTHR,XERROR> BUFLNG=PEBUFMAX^2 PEUPC, "P^100+"E&3777 /"PE" PEUFLDS,200+BUFLNG /ONE PAGE PLUS BUFFER(S) PEBUFI, PEINIT /START OF INITIALISATION PETVI, PETV /POINTER TO TRANSFER VECTOR PECA, 0 PE, JMP I PEBUFI /DO INITIALISATION. OVERLAYD WITH: / SNA CLA JMP PECLR /'CLEAR': CLOSE OUTPUT AND SWPOUT PESTRT, TAD I PEUINST /FETCH INSTRUCTION AND C7 CLL RAR SNA JMP PE2 /6020 OR 6021 PEERR, TAD M1 SZL /6022 AND /ERROR FOR 6020, 6025 FOR 6022 & 6023, REST # 6026 MEAN: PUNCH AND TAD PEM232 /-232 SNA /A ^Z IS CONSIDERED END OF INPUT JMP PECLR / PEEND, TAD PE232 / PMYCDF, HLT /BUFFER IS IN THIS FIELD PEJMP, JMP I PEP /COROUTINE ! PEP, PEP1 /ROUTINE TO GET NEXT CHAR FROM USER PRN TO CENTRAL EMULATOR TAD PEJMP DCA PERET /FS DCA PEPAT1 /DISABLE 2 DCA PEPAT3 /LET PE DO A SWPOUT JMP PEEND /BE SURE TO WRITE THE BUFFER /PATCH THE USER INSTRUCTION FOR FAST EMULATION. PE2, /SNL CLA / JMP PEERR /6020 ACM1 /6021: SKIP ON FLAG, PATCH BG ! TAD I PEUPC /NOTE THIS FLIPS THE LINK !! ISZ I PEUPC /LET HIM SKIP RIGHT NOW DCA ZTEM1 /ADDRESS OF INSTRUCTION TAD I PEUFLDS AND C70 TAD C6201 DCA .+2 TAD PESKP CDF //CDF TO USERS INSTRUCTION FIELD DCA I ZTEM1 // JMP PERET //
PEP0, JMS PEP /GET FIRST CHAR PEP1, DCA I PECA /STORE IN BUFFER JMS PEP /GET SECOND CHAR DCA PETMP /SET ASIDE FOR A WHILE JMS PEP /GET THIRD CHAR RTL RTL DCA ZTEM1 /8 BITS LEFT JUSTIFIED TAD ZTEM1 AND C7400 /TAKE FOUR HIGH ORDER BITS TAD I PECA /ADD INTO FIRST BUFFER WORD DCA I PECA /THATS ONE ISZ PECA /BUMP POINTER TO NEXT BUFFER WORD TAD ZTEM1 RTL RTL AND C7400 /FOR LOW ORDER BITS TAD PETMP /ADD SECOND CHAR DCA I PECA /STORE IN SECOND BUFFER WORD ISZ PECA /BUMP POINTER FOR NEXT TIMEOUBLE-WORD COUNTER JMYET, GO ON PEPAT1, JMS G TAD PECA TAD PEBUFULL BUFFER DCA PETV+1 /DROP INTO TRANSFER VECTOR TAD PEBUFI CIA TAD PECA PE377, AND PEBUFL /-PEBUFMAX-PEBUFMAX-1 WRAP AROUND TAD PEBUFI DCA PECA JMS PEWT /WAIT FOR COMPL. OF PREVIOUS XFER. PECALL, TADRANSFER VECTOR JMS MON00+"P&3777 JMP PEWAIT BY FOREGR. DCA PESLOTEPAT2, JMS PEFLIP /ACTIVATE THE BG TAD PEPENG /-PEBUFMAX%2!4000 DCA PEWC /RESET WORDCOUNT PEPAT3, JMP PEP0 /AND CONTINUE JMS PEWT /WAIT FOR COMPLETION OF LAST XFER. JMS MONITOR EXIT SWPOUT
PEFLIP, /ACTIVATE/DEACTIVATE BG PEWC, -PEBUFMAX%2!4000/SHARED LOCATION ! CDF MONFLD TAD I PEUSTAT RAL CML RAL /COMPLEMENT INACTIVE BIT CML RTR /COMPLEMENT EMULATE BIT IFNZRO BGMAX-1 < AND PELNG1 /CLEAR LONG SO WE GET PRIORITY > DCA I PEUSTAT IFNZRO BGMAX-1 < JMS MONITOR /KICK THE BG-SCHEDULER SO HE KNOWS SIGNAL BSSLOT / > CDTOIF JMP I PEFLIP PETMP, /SHARED LOCATION PEWT, .-. /WAIT FOR COMPLETION JMS MONITOR WAIT PESLOT, -1 /MAKES 'WAIT' BEHAVE LIKE 'NOP' CLA /IGNORE ERRORS AND COMPLETION JMP I PEWT PEWAIT, JMS MONITOR STALL DGNTICK / CLA JMP PECALL PETV, 0 //* /THIS IS THE ACTUAL TRANSFER VECTOR 0 //* /2 WORDS, BLOCK NUMBER NOT USED PEUSTAT,0 //* PEUAC, 0 //*THESE 5 WORDS IN THIS ORDER (PESKP, SKP IFNZRO BGMAX > PEPENG, -PEBUFMAX%2!, -232 IFZERO .-377&400BUFMAX PEBUFL, -PEBUFMAX-PEBUFMAX-1 PAGE BUFBEG=. /BEGIN OF BUFFER
/THIS IS THE FIRST PAGE OF THE BUFFER AND CONTAINS /A LOT OF INITIALISATION CODE. PEBUF0, BUFBEG /STARTING ADDRESS OF THIS PAGE PEBUF1, PETV-1 PEBUF5, PMYCDF PEBUF7, PE&7600-1 PEBUF8, PEP PEBUF9, PEP1 PBUF10, PESTRT 0 PEINIT, SZA /INITIALISATION CODE JMP .+3 PEIGNR, JMS MONITOR /JUST A 'CLEAR' EXIT RELEASE DCA ZTEM1 /POINTER TO BG-AREA TAD ZTEM1 TAD (UINST JMS DEFER TAD (-PLS SZA /PLS ? JMP PEGO TAD ZTEM1 TAD (UAC JMS DEFER /GET UAC PEGO, CDTOIF SNA CLA /IS IT A BLANK ? JMP PEIGNR /YES, THEN IGNORE THIS TRAP TAD PEBUF7 DCA AUTO10 TAD ZTEM1 TAD (UPC /SET UP PEUPC DCA I AUTO10 TAD ZTEM1 TAD (UFLDS DCA I AUTO10 /SET UP PEUFLDS TAD PEBUF0 R POINTER ISZ A TO DTV TAD PEB8 /INITIALISE COROUTI DCA I AUTO10 /INITIALISE BUFFER POINTER TAD (SNA CLA DCA I AUTO10 /PATCH INITIALISATION CALL TAD MYCDF DCA I PEBUF5 /SET UP PMYCDF TAD PEBUF1 DCEBUFMAX%2+4000/SET UP PE DCA I AUTO10 T AUTO10 TAD ZTE TAD ZTEM1 TAD (UAC DCA I AUTO10 TAD ZTEM1 TAD (UINST DCA I AUTO10 CDF MONFLD /+ ORIG. DF JMP I PBUF10 /START TASK PAGE $



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search