File TM8ET.PA (PAL assembler source file)

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

/TM8-E HANDLER FOR RTS-8

	LWCR=6701	/LOAD WORD COUNT REGISTER AND CLEAR AC
	LCAR=6703	/LOAD CURRENT ADDRESS REGISTER AND CLEAR AC
	LCMR=6705	/LOAD COMMAND REGISTER AND CLEAR AC
	LFGR=6706	/LOAD FUNCTION REGISTER AND CLEAR AC
	CLT=6712	/CLEAR TRANSPORT
	RMSR=6714	/CLEAR AC AND READ MAIN STATUS REGISTER
	RCMR=6715	/READ COMMAND REGISTER
	RFSR=6716	/CLEAR AC AND READ STUFF
	SKEF=6721	/SKIP IF ERROR FLAG IS SET
	SKJD=6723	/SKIP IF THE JOB IS DONE (MTTF IS SET)

	MTAVERSION="E&77

/SPECIAL CODES USED WHEN PAGE COUNT=0 (CODES IN BITS 9-11 OF FN WORD)

/0	(CLOSE) WRITE 2 EOF'S
/1	REWIND
/2	SPACE FORWARD/REVERSE RECORDS
/	IF BIT 0 OF THE FUNCTION WORD IS A 0,
/		THIS CODE ADVANCES RECORDS.
/		THE NEGATIVE OF THE NUMBER OF RECODRDS IS SPECIFIED IN ARG 3
/	IF BIT 0 OF THE FUNCTION WORD IS A 1,
/		THIS CODE BACKSPACES RECORDS.
/		THE NEGATIVE OF THE NUMBER OF RECORDS IS SPECIFIED AS ARG 3.
/	UNDER NO CIRCUMSTANCES DOES THIS COMMAND CONTINUE PAST A FILE MARK.
/3	SPACE FORWARD/REVERSE FILES
/	IF BIT 0 OF THE FUNCTION WORD IS A 0
/		THEN THIS FUNCTION ADVANCE FILE MARKS
/		THE NEGATIVE OF THE NUMBER OF FILE MARKS IS SPECIFIED BY ARG3
/		THE TAPE IS LEFT POSITIONED AFTER THIS FILE MARK
/		BUT UNDER NO CIRCUMSTANCES DOES THE TAPE ADVANCE PAST
/		THE SECOND MARK OF TWO CONSECUTIVE FILE MARKS
/	IF BIT 0 OF THE FUNCTION WORD IS A 1,
/		THIS CODE BACKSPACES PAST FILE MARKS.
/		THE NEGATIVE OF THE NUMBER OF FILE MARKS IS SPECIFIED BY ARG 3.
/		THE TAPE IS LEFT POSITIONED BEFORE THE LAST FILE MARK,
/		SO THE USER PROBABLY WANTS TO DO A FORWARD RECORD NEXT.
/4	REWIND AND PUT OFF-LINE
/5	WRITE EOF
/6	PERFORM OPERATION WITH SPECIFIED BLOCKSIZE
/	THE NEGATIVE OF THE DESIRED BLOCKSIZE IS SPECIFIED AS ARG 3.
/7	CURRENTLY UNUSED

CUR=0 TASK=TM8E INIWT=0 IFNDEF TM8ELD <TM8ELD=5400> *TM8ELD PARITY, 702 /CHANGE TO 302 TO HAVE EVEN PARITY BLOCK0, 1 /SET TO 1 TO INHIBIT REWIND ON BLOCK 0 EIRG, 0 /OR 400 FOR EXTENDED IRG MTFUN, 0 NBLOK, 0 L1100, 1100 /REWIND CODE FOR BLOCK 0 STUF STOP, CDF /MESSAGE FIELD DCA I MTHX /STASH STATUS CLT /CLEAR ANY FLAGS LEFT TAD (-7 /BACK UP TO MESSAGE HEADDER TAD MTHX CAL /AND POST THE E.F. POST TMCDF, CDF /MESSAGE FIELD TM8ET, CAL RECEIVE MTHX, 0 /RECIEVES MESSAGE DCA TMCDF /STASH FOR POSTING EF TAD TMCDF /GET CDF BACK DCA STOP /STASH FOR EXIT TAD TMCDF /AND AGAIN DCA .+1 /FOR GETTING TO PROPER FIELD CDF /TO MESSAGE FIELD TAD I MTHX /GET UNIT NUMBER ISZ MTHX /POINT TO FUNCTION CLL RTR;RTR /SHIFT TO BITS 0-2 DCA MTANO /SAVE UNIT NUMBER TAD I MTHX /GET FUNCTION WORD DCA MTFUN /SAVE IT IN 'MTFUN' ISZ MTHX /POINT TO BUFFER ADDRESS STA /GET ONE LESS THAN TAD I MTHX /BUFFER ADDRESS DCA NBUFF /AND STORE AWAY ISZ MTHX /POINT TO BLOCK NUMBER TAD I MTHX /GET BLOCK NUMBER DCA NBLOK /STORE AWAY ISZ MTHX /POINT TO STATUS RETURNED CIF CDF CUR /TO THIS FIELD TAD MTFUN /RETRIEVE FUNCTION WORD AND L70 /ISOLATE FIELD OF BUFFER TAD PARITY /SET ODD PARITY BITS, AND DENSITY 8 (800 BPI, 7-CHANNEL) TAD MTANO /COMBINE WITH UNIT NUMBER DCA MTAWD /TO GET A USEFUL MTA COMMAND TAD MTFUN /ZERO BUFFER FOR PIP ON EJF AND L70 /FIELD OF ORIGIN TAD MTCDF DCA USRCDF USRCDF, MTANO, 0 TAD MTFUN RAL AND P7600 /GET # OF WORDS IN BUFFER SNA SZL /ZERO BUFFER IF READING JMP P7600 CIA DCA MTH TAD NBUFF DCA ERROR MCLRLP, ISZ ERROR L100, 100 DCA I ERROR ISZ MTH JMP MCLRLP P7600, 7600 MTCDF, CDF 0 TAD BLOCK0 SNA /OPERATE IN MULTIPLE-FILE MODE? TAD NBLOK /RETRIEVE BLOCK SZA CLA /IS IT BLOCK 0? JMP BIGBLK /NO TAD L1100 /YES, REWIND JMS MTH /CALL MAGTAPE ROUTINE MTAWD, 1000 /CA IMMATERIAL M7603, -7603 /WC IMMATERIAL L70, 70 /NO REWIND ERRORS (THESE CAN'T OCCUR) BIGBLK, TAD MTFUN JMS I (NEXT /GO READ OR WRITE NEXT PAGE NBUFF, 0 /ONE LESS THAN ADDRESS OF BUFFER /MUST BE AT LOC AFTER CALL TO NEXT
/ MTH /SET UP WC AND CA REGISTERS, LOAD FUNCTION AND GO /CALLING SEQUENCE: / TAD (FNWORD / JMS MTH / BUFFER ADDRESS-1 / -WORD COUNT / MASK FOR UNACCEPTABLE ERROR CONDITIONS / <NORMAL RETURN> / TAKES HANDLER ERROR RETURN ON ERRORS. / IF ERROR, AC HAS ERROR CODE FROM MAIN STATUS REGISTER / AC IS POSITIVE IF E.O.F. READ MTH, 0 /MUST BE AT 2ND LOC AFTER CALL TO NEXT TAD EIRG /ADD IN EXTENDED IRG BIT DCA ERROR /SAVE FUNCTION TEMPORARILY CLT /CLEAR THE WORLD TAD MTAWD LCMR /LOAD COMMAND REGISTER TAD I MTH /GET CURRENT ADDRESS LCAR /LOAD IT ISZ MTH /POINT TO WORD COUNT TAD I MTH /GET WORD COUNT (TWO'S COMPLEMENT THEREOF) LWCR /LOAD IT ISZ MTH /POINT TO ERROR MASK TAD ERROR /GET FUNCTION BACK LFGR /GO BABY GO CAL /NOW WAIT FOR TM8EEF WAITE TM8EEF ISZ I .-1 /SET BUSY AGAIN JMS ERROR /YES, ANY ERRORS? E1, ISZ MTH /AMAZING WE MADE IT (NO ERRORS) JMP I MTH /NORMAL RETURN IFNZRO MTH-NBUFF-1 <MTHERR,XXX>
ERROR, 0 SKEF /SKIP ON ERROR JMP I ERROR /RETURN, NO ERRORS RMSR /WHAT'S CAUSING THE ERROR? AND I MTH /IS IT A GOOD ONE? (USE ERROR MASK) SNA CLA /IS ERROR ACCEPTABLE? JMP E1 /YES RMSR /NOT ACCEPTABLE AND L100 /IS IT AN E.O.F.? SNA /IF SO, LEAVE BIT 0 CLEAR RMSR JMP STOP /AND LEAVE WITH STATUS IN AC PAGE
NEXT, 0 DCA RECNO /READ OR WRITE AND HOW MANY TAD I (NBLOK DCA WC TAD I NEXT DCA BUFFER /GET BUFFER ADDRESS - 1 ISZ NEXT /POINT TO MTH TAD RECNO CLL RAL /LINK SPECIFIES READ JR WRITE AND L7600 /-(# OF BLOCKS)^200 SNA JMP ZERO /0 PAGE COUNT! DCA RECNO SZL /READ OR WRITE? STL CLA RTR /WRITE. +2000 TO CONVERT READ CODE TO WRITE CODE TAD L2100 /READ (OR WRITE) & GO DCA TEMP /SAVE THIS COMMAND TAD L7600 DCA SIZE /OS/8 USES 128 WORD BLOCKS RL1, TAD TEMP JMS DO TAD BUFFER /NEXT 200 WORDS TAD L200 DCA BUFFER TAD RECNO /ANY MORE? TAD L7600 SNA JMP I (STOP /NO, FINISH DCA RECNO /YES, LOOP JMP RL1 /REJOIN PROCESSING FLAG, /NON-ZERO MEANS FOUND A RECORD DO, 0 JMS I NEXT /GO DO IT (CALL MTH) BUFFER, HLT /BUFFER LOCATION SIZE, 0 /NEGATIVE OF BLOCK SIZE M1, 7777 /ALL ERRORS ARE FATAL JMP I DO
COUNT, TEMP, 0 EFL2, TAD M1 /WRITE 2 EOF'S EFL1, TAD M1 /WRITE AN EOF DCA COUNT EOF, TAD L5100 JMS GO ISZ COUNT JMP EOF JMP I (STOP GO, 0 JMS I NEXT /CALL MTH L5100, 5100 WC, -1 /USE NEG OF BLOCK # TO SPEC # OF SKIPS OR BACKSPACES 3677 /MOST ERRORS ILLEGAL JMP I GO RECNO, 0 L7, 7 L2100, 2100
ZERO, TAD RECNO /RETRIEVE FN WORD (MUST PRESERVE LINK) AND L7 /ISOLATE SPECIAL CODE TAD PJUMP DCA .+1 FN, HLT /BRANCH THROUGH JUMP TABLE PJUMP, JMP TABLE TABLE, JMP EFL2 /0 CLOSE. WRITE TWO EOF'S JMP REW /1 REWIND JMP SPACE /2 SPACE FORWARD/REVERSE RECORDS JMP SEOF /3 SPACE FORWARD/REVERSE FILES JMP UNLOAD /4 REWIND AND OFF-LINE JMP EFL1 /5 WRITE EOF JMP SPEC /6 READ OR WRITE WITH SPECIAL BLOCKSIZE JMP I (STOP /7 UNUSED SPACE, RAR /LINK ON MEANS REVERSE (READ BIT) STL RAR STL RAR UNLOAD, TAD P100 /ADD IN 'GO' BIT JMS GO JMP I (STOP SEOF, RAR /LINK ON MEANS REVERSE RTR TAD L6100 DCA FN TAD WC DCA COUNT STA DCA WC SKP FILE, CLA IAC FILE2, DCA FLAG TAD FN JMS GO RMSR AND P100 /SPACE FORWARD TO FILE MARK SNA CLA JMP FILE ISZ COUNT SKP /CONTINUE? JMP I (STOP TAD FLAG SZA CLA /WAS THERE ANY DATA? JMP FILE2 /YES, CONTINUE TAD L7100 /NO, BACKSPACE RECORD JMS GO JMP I (STOP
L7100, 7100 L6100, 6100 P100, 100 L7600, 7600 SPEC, TAD WC /GET ARG3 DCA SIZE SZL /LINK STILL CONTAINS READ/WRITE BIT STL CLA RTR TAD L2100 JMS DO JMP I (STOP REW, TAD P1100 JMS I NEXT /CALL MTH P1100, 1100 /CA IMMATERIAL L200, 200 /WC IMMATERIAL 0 /NO REWIND ERRORS JMP I (STOP PAGE
/INTERRUPT SERVICE FOR TM8E TASK.. POSTS TM8EEF ON /ANY ERROR AND MERELY CLEARS INTERRUPT ENABLE TMINT1, ZBLOCK 2 /RTS-8 OVERHEAD SKJD /SKIP IF JOB DONE JMP I TMINT1 /CONTINUE CHAIN CDF CIF CUR /TO THIS FIELD TMCOMM, RCMR /READ COMMAND REG AND (300 /WE MAY HAVE FLAGS UP SNA CLA /AND INTRUPTS DISABLED JMP NOTTM /YEP: CONTINUE THE INTERRUPT CHAIN RCMR /READ COMMAND REG AND (7477 /RID OF INT ENABLES LCMR /RELOAD COMMAND REG TAD (TM8EEF CIF 0 /NOW POST TM8EEF POSTDS /COME HERE WHEN TM8E FLAGS UP BUT INTERRUPTS DISABLED NOTTM, TAD TMINT2+1 /TMINT2 IS AFTER TMINT1 IN DCA .+1 /INTERRUPT CHAIN SO CDF CIF /CONTINUE FROM THERE TO NEXT JMP I TMINT2 /ONE IN CHAIN. TMINT2, ZBLOCK 2 SKEF /CHECK ERROR FLAG JMP I TMINT2 /CONTINUE SKIP CHAIN CDF CIF CUR /TO THIS FIELD JMP TMCOMM /AND DO COMMON CODE TM8EEF, 1 /START IN WAITING CONDITION START, CAL /INSERT MODULES IN SKIP CHAIN SKPINS TMINT1 CAL /AND OTHER ONE SKPINS TMINT2 JMP I (TM8ET PAGE
EJECT TM8EC - TM8E TASK CONTROLLER... TASK2=TM8EC CUR2=0 INIWT2=0 /RECIEVES MESSAGES CONTAINING BUFFERS TO BE WRITTEN /ON TM8E MAGTAPE. THIS TASK WRITES 123*12=1476(10) WORD /RECORDS WITH SOME RECOVERY ON ERRORS. UPON COMPLETION /OF A SUCESSFUL WRITE, THE MESSAGE IS RETURNED TO /THE AVG TASK. STAGAIN,DCA I RETNME /CLEAR MF SO CAN RETURN CAL SEND /SEND MESSAGE BACK TO AVG AVG RETNME, 0 /MESSAGE POINTER JMP NEXTOP /GO TO NEXT REQUEST START2, CAL /START BY SENDING SEND /TWO MESSAGES TO AVG AVG AVGM1 CAL SEND AVG AVGM2 NEXTOP, TAD (AVG /MESSAGES FROM AVG CAL RECEIVE MESAGP, 0 STA CLL RTL /MESSAGE MUST BE IN FIELD CUR TAD MESAGP /CALC MESSAGE POINTER DCA RETNME /STASH FOR RETURN DCA I (EIRG /SET IRG=SHORT TAD I MESAGP /GET FIELD OF BUFFER AND (70 /MASK OUT FIELD BITS TAD (4006 /SPECIAL WRITE DCA TMCALF /STASH FUNCTION WORD ISZ MESAGP /POINT TO STARTING ADD TAD I MESAGP /OF BUFFER AND GET IT DCA TMCALF+1 /SET ADDRESS TM8EC1, CAL /NOW WRITE IT SENDW /BY CALLING TM8E TASK TM8E TM8EMP, TM8EM TAD TMCALS /PICK UP STATUS SNA /SKIP IF AN ERROR JMP STAGAIN /AND GO POST EVENT FLAG AND (3514 /THESE ERRORS ARE FATAL SZA CLA JMP FATAL /GO HANDLE IT TAD I (EIRG /GET IRG WORD TAD (400 /AND COMPLEMENT AND (400 /THE SIZE DCA I (EIRG /RESTORE IT CAL /NOW BACK THE TAPE UP SENDW TM8E BACKUP JMP TM8EC1 /AND REWRITE /FATAL ERRORS ARE: / TAPE REWINDING / BOT (AFTER WRITE???) / EOT (END OF TAPE=MUST BE DONE) / WRITE PROTECT ERROR=NEED RING /WE WILL ISSUE A REWIND OFF LINE AND SUSPEND MYSELF FATAL, CAL SENDW TM8E OFFLINE CAL SUSPND JMP STAGAIN TM8EM, ZBLOCK 3 /RTS8 OVERHEAD 0 /UNIT 0 TMCALF, 4006 /FUNCTION WORD 0 /CORE ADDRESS DECIMAL -1476 /BLOCK SIZE OCTAL TMCALS, 0 /STATUS WORD BACKUP, ZBLOCK 3 0;4002;0;-1;0 OFFLINE,ZBLOCK 3 0;0004;0;0;0 DECIMAL ADCBF2=ADCBF1+80+16 DTEMP=ADCBF2+80+16 CURBUF=DTEMP+2 CUMBU1=80^2+CURBUF CUMBU2=80^2+CUMBU1 WINDBUF=80^2+CUMBU2 AVGB1=42+WINDBUF AVGB2=123^12+AVGB1 LASTBUFLOC=123^12+AVGB2 OCTAL AVGM1, ZBLOCK 3 /TWO MESSAGES FOR AVG CDF BUFFLD AVGB1 AVGM2, ZBLOCK 3 CDF BUFFLD AVGB2 PAGE
0;4002;0;-1;0 OFFLINE,ZBLOCK 3 0;0004;0;0;P
P100, 100 L7600, 7600 SPEC, TAD WC /GET ARG3 DCA SIZE SZL /LINK STILL CONTAINS READ/WRITE BIT TAD L20 /TURNS READ INTO WRITE TAD L20 JMS DO JMP I NSTOP REW, TAD P10 JMS I NEXT /CALL MTH P10, 10 /CA IMMATERIAL L200, 200 /WC IMMATERIAL 0 /NO REWIND ERRORS JMP I NSTOP PAGE $
ES, CONTINUE TAD (70 /NO, BACKSPACE RECORD JMS GO JMP I NSTO/AVG TASK /THIS TASK IS USED TO TAKE A BUFFER OF DOUBLE PRECISION /NUMBERS CREATED BY "CUMU" TASK AND DIVIDE THEM BY THE /NUMBER OF SAMPLES IN THE SUM (IE COMPLETE THE AVERAGE). /THE DATA TO BE WRITTEN ON TAPE IS A ONE SECOND AVERAGE, /BUT IS WRITTEN EVERY 1/2 SECOND. HENCE THIS ROUTINE /ALWAYS SAVES THE RESULT OF THE PREVIOUS .5 SEC AVERAGING /PROCESS. /INPUT BUFFERS COME FROM THE TASK "AVG" AND WHEN A BUFFER /IS EMPTIED IT IS RETURN TO THAT TASK. /OUTPUT BUFFERS ARE RECIEVED FROM THE "TM8EC" TASK /AND RETURNED WITH A SEQUENCE OF 12 "STANDARD" RECORDS /OF DATA. THE TASK "WIND" ACCUMULATES A BUNCH OF EXTRA /INFO (INCLINOMETER, WIND SPEED ETC.) ALWAYS CURRENT /IN THE BUFFER "WINDBUF". AVG PUTS A COPY OF THIS AT /THE END OF THE AVERAGED DATA. /ALL MESSAGES MUST BE IN FIELD CUR. /THE FORMAT OF A STANDARD RECORD(123(10) WORDS) IS: /WORD(S) DESCRIPTION / 0 RUN I.D. / 1-80 AVERAGED RADAR DATA / 81-100 INCLINOMETER VALUES (2@10HZ) /101-110 WAVE HEIGHTS (1@10HZ) /111-114 WIND SPEED (2@2HZ) /115-118 WIND DIRECTION (2@2HZ) /119-120 COMPASS HEADING (1@2HZ) /121 TIME OF DAY (BCD DIGITS) / BITS 0-3 H.O. HRS / BITS 4-7 L.O. HRS / BITS 8-11 H.O. MINS /122 TIME OF DAY (BCD DIGITS) / BITS 0-3 L.O. MINS / BITS 4-7 H.O. SECS / BITS 8-11 L.O. SECS
TASK=AVG INIWT=0 /COMES UP RUNNING CUR=0 FIELD CUR IFNDEF AVGST <AVGST=3600> *AVGST AVGT, TAD (TM8EC /GET OUTBUFF MESSAGE FROM CAL /TM8EC TASK RECEIVE TM8MPT, 0 /GETS MESSAGE POINTER STA CLL RAL /CALC START OF MESSAGE TAD TM8MPT /WHICH MUST BE IN FIELD CUR DCA RETNOB /STASH FOR RETURNING BUFFER TAD I TM8MPT /FETCH CDF FIELD OF BUFFER DCA CDFOB /STICK IN INNER LOOP ISZ TM8MPT /POINT TO BUFFER ADDRESS TAD I TM8MPT /PICKUP ADDRESS OF OUT BUFFER DCA OBPNTR /STASH TAD (-14 /12(10) GROUPS OF DATA DCA CNTR /STASH OUTLOOP,TAD (CUMU /NOW GET AN INPUT BUFFER MESSAGE CAL /FROM CUMU TASK RECEIVE AVGMPT, 0 /POINTS TO IN BUFFER MESSAGE ADDRESS STA CLL RAL /MUST BE IN FIELD CUR TAD AVGMPT /CALC WHERE IB MESSAGE STARTS DCA I (RETNIB /STASH FOR RETURNING TO CUMU TAD I AVGMPT /GET CDF BUFFER FIELD DCA CDFIB /STASH IN INNER LOOP ISZ AVGMPT /POINT TO ADDRESS OF BUFFER TAD I AVGMPT /PICK UP ADDRESS OF IN BUFFER DCA IBPNTR /STASH TAD AVGMPT /CONSTRUCT POINTER TO # SUMMED IAC /AS IS NEXT AFTER BUFFER ADD. DCA DIVISORP /STASH POINTER TO DIVISOR DECIMAL TAD (-80 /THAT'S HOW MANY THERE ARE OCTAL DCA CNTR2 /STASH INNER LOOP COUNTER TAD (CURBUF /CONSTRUCT POINTER TO SAVED DCA CURPNT /DATA LAST .5 SEC. /********** /EAE STATUS SAVING CODE. /MQ SAVED BY RTS8. ENDS UP IN MODE B.. IFNZRO PDP8E-1 <BADEAE, => IFNZRO EAE-1 <BADEAE, => IFNZRO SAVESC < SCA /ONLY SAVE STEP COUNTER DCA STPCNT> CAM /MAKE SURE MQ CLEARED DPSZ /SKIP IF MODE B TAD (SWBA-SWAB /CONSTRUCT RESTORE INSTR. TAD .+1 /FOR MODE SWAB /AND END UP IN MODE B DCA EAERES /SAVE FOR RESTORATION /********** JMS CDFOBS TAD RUNID /FIRST IN BUFFER GOES DCA I OBPNTR /THE RUN ID. INNERL, STA CLL RAL /-2 DCA SIGN /FOR SIGN CHECK CDFIB, CDF /TO INPUT BUFFER FIELD CAM DAD /DOUBLE PRECISION LOAD IBPNTR, 0 /CUMULATIVE DATA CDF CUR /FOR DIVIDE SMA /SKIP IF NEED TO NEGATE ISZ SIGN /FLAG NO SIGN CHANGE SPA DCM /MAKE POSITIVE DVI /MAKE AVERAGE:CANT OVERFLO DIVISOR, 0 /ADDRESS OF NUMBER SUMMED RAL /PUT SIGN OF REMAINDER IN LINK CLA MQA /GET 12-BIT RESULT SZL /AND SEE IF ROUNDING REQRD IAC /YEP: ROUND UP ISZ SIGN /SKIP IF WAS POSITIVE CIA /WAS NEG=MAKE IT SUCH ASR;1 /SHIFT RIGHT ONCE FOR OVERFLO CASE CDF CURFLD /TO FIELD OF CURBUF DST;DTEMP /STORE COPY IN A TEMP THERE DAD /AND ADD VALUE FROM PREV .5 SEC CURPNT, 0 JMS CDFOBS /TO OUT BUFF FIELD DCA I OBPNTR /STASH RESULT



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