ANSWER: Weekly Classic Computer Trivia Question (20150121)

Doug Ingraham dpi at dustyoldcomputers.com
Mon Jan 26 10:57:16 CST 2015


And this question must have been too obscure to elicit any response.  The
answer is C) 50.

After posting the trivia question I came up with a way on the PDP8 to
measure time events to a resolution of 1.5 microseconds and went back and
retested the High Speed Paper tape reader hardware.  The earlier version
could only measure to 3.0 microseconds resolution.  Here is the 1.5
microsecond version of the program:

/ ADVANCED HIGH SPEED PAPER TAPE TIMING PROGRAM
/
/ USES FIELD 1 AND LINK/AC TO MEASURE TIME DELAY
/ WITH INTERRUPTS.
*0000
        .-.             / INTERRUPT ENTRY POINT
        RSF             / MAKE CERTAIN IT WAS A HSR INTERRUPT
        HLT             / HOUSTON WE HAVE A PROBLEM
        DCA I AUTO0     / SAVE COUNT AND LINK AS A 24 BIT
        RAL
        DCA I AUTO0     / SAVE LINK
        JMP MORE
*0010
AUTO0,  .-.

/
MORE,   ISZ Z FRM1      / CHECK FOR DONE
        JMP NEXT        / EXIT INTERRUPT AND CONTINUE TIMING
        TAD Z COUNTS    / POINT AT START OF ARRAY
        DCA Z AUTO0
        TAD Z CNTS      / GET BACK ORIGINAL COUNT OF SAMPLES
        DCA Z FRM1
        TLS             / PRIME THE PUMP
PRLP,   TAD I Z AUTO0   / GET 12 BIT PART
        DCA Z BASE
        TAD I Z AUTO0   / GET LINK PART
        CLL RAR         / RESTORE THE LINK
        TAD Z BASE      / COUNT IS IN LINK AND AC
        TAD Z C0002     / ADD 2 WHICH CORRECTS TIMING FOR START DELAY
        DCA Z BASE      / SAVE FOR PRINTING
        RAL             / PRINT THE LEADING OCTAL DIGIT
        TAD Z CHZERO    / ADD IN '0' TO GET LEADING DIGIT
        JMS PRINT       / AND WE DONT HAVE TO WORRY ABOUT THE LINK ANYMORE
        TAD Z M0004     / INITIALIZE DIGIT COUNTER
        DCA Z DIGCNT
DIGLP,  TAD Z BASE      / OCTAL DIGIT IS IN UPPER 3 BITS
        RTL
        RAL
        DCA Z BASE      / NEXT DIGIT IS IN UPPER 3 BITS
        TAD Z BASE      / NEED TO SHIFT ONCE MORE TO GET IN LOWER 3 BITS
        RAL
        AND Z C0007     / KEEP JUST THE LOWER 3 BITS
        TAD Z CHZERO    / ADD IN THE OFFSET FOR ASCII 0 CHARACTER
        JMS PRINT       / AND GO PRINT IT
        ISZ Z DIGCNT
        JMP DIGLP
        TAD Z CHSPC     / PRINT A SPACE
        JMS PRINT
        TAD Z CHCR      / PRINT CR
        JMS PRINT
        TAD Z CHLF      / PRINT LF
        JMS PRINT
        ISZ Z FRM1      / ARE WE DONE?
        JMP PRLP        / NO
        HLT             / ALL DONE
        JMP START       / GO AGAIN
NEXT,
        CLA CLL         / LINK AND AC MAKE A 13 BIT COUNTER
        ION             / INTERRUPTS ON.  CIF THAT FOLLOWS DELAYS THIS
        CIF 10          / SWITCH TO FIELD 1 AT THE JMP I CZERO
        RFC             / START THE NEXT READ
        JMP I C0000     / START COUNTING (ADDS 2 TO THE ACTUAL COUNT)

PRINT,  .-.             / PRINT THE CHARACTER IN THE AC
        TSF             / WAIT FOR LAST CHARACTER TO FINISH PRINTING
        JMP .-1         / WAIT
        TLS             / SHIP IT
        CLA CLL         / RETURN WITH AC CLEAR
        JMP I PRINT     / RETURN

/ CONSTANTS
C0000,  0
C0002,  2
C0007,  0007            / MASK
CIAC,   IAC             / IAC CONSTANT
CHLF,   0012            / CONSTANT FOR LINE FEED
CHCR,   0015            / CONSTANT FOR CARRIAGE RETURN
CHSPC,  0040            / CONSTANT FOR A SPACE CHARACTER
CHZERO, 0260            / CONSTANT FOR '0' CHARACTER
COUNTS, ARRAY-1         / POINTER TO COUNTS ARRAY-1 FOR AUTO INCREMENT
INITIALIZE
M0004,  -4

/ VARIABLES
FRM1,   0000            / FRAME COUNT KEPT HERE
CNTS,   0000            / COPY OF FRAME COUNT READ FROM SWITCHES
BASE,   0000            / TEMPORARY STORAGE OF WORD BEING PRINTED
DIGCNT, 0000            / COUNT OF DIGITS WHEN PRINTING

*0200
START,  CLA
        DCA FRM1        / FILL ALL OF FIELD 1 WITH IAC INSTRUCTIONS
        CDF 10
FILL,   TAD CIAC        / GET THE CIAC INSTRUCTION
        DCA I FRM1      / PUT IT ON FIELD 1
        ISZ FRM1        / BUMP AND CHECK FOR DONE
        JMP FILL        / NOT DONE
        CDF 00          / RESTORE TO FIELD ZERO
AGAIN,  LAS             / READ SR
        CMA             / INITIALIZE FRAME COUNT FROM SR FOR ISZ
        DCA Z FRM1
        TAD Z FRM1
        DCA Z CNTS      / KEEP A COPY FOR USE WHEN PRINTING
        TAD Z COUNTS    / INITIALIZE THE AUTO INCREMENT REGISTER
        DCA Z AUTO0
        JMP NEXT        / AND GO MAKE A PASS

*0400
ARRAY,  .-.             /STORE THE COUNTS HERE

$

The program fills field 1 with IAC instructions and then reads the switch
register to find out how many frames to process.  Each frame is timed and
the result stored in words pairs starting at 0400.  Counts are 0-8191 which
on a straight 8 would represent 0 - 12286.5 microseconds.  The actual time
is 2 counts more than this because of the JMP I C0000 to switch fields and
start execution of the timer.  Once the switch register count of frames is
reached the contents of the array plus 2 is dumped out as 5 octal digits to
the teletype.  In the case of the Type 750 and PC01 the first character
read sets the flag immediately so the first entry in the table shows as 2
which for the purpose of my emulator I fixed the first entry.  My emulator
of course gives the same answers as the 8 but then it has to because it
uses the table generated by the real 8.  The only other place I ran it was
on Sim8 which always gives 0145 as the answer which is not even close.

I will come up with something of more general interest for the next trivia
question.  I have something in mind already.

Doug Ingraham
PDP-8 S/N 1175


On Wed, Jan 21, 2015 at 11:27 PM, Doug Ingraham <dpi at dustyoldcomputers.com>
wrote:

> Many of us on this list are collectors of one sort of computer or
> another.  I don't think of myself as a collector so much as a caretaker of
> my PDP-8.  Of the things it has been fairly easy to get in recent years are
> the CPU and its related cards for the models that were produced in fairly
> large numbers.  What is not easy to get are peripherals for these
> machines.  So here is a question relating to the Type 750 high speed paper
> tape reader found on the early models.  A few years back we were working on
> getting the CPU back in good working order.  We needed to read in the
> diagnostic paper tapes but the reader was not reliable.  Went through the
> tuning procedure and found that it was trying to read the tape at nearly
> 450 cps.  After tuning it up the full speed now sits at 342 cps.
>
> The question is how many frames does it have to read before it reaches
> full speed?
>
> A) 1
> B) 10
> C) 50
> D) 100
>
> This is probably a somewhat squishy number and would depend somewhat on
> tuning.  I wrote a couple of programs to determine this so I could add
> correct delays to my emulator.  I was able to obtain a 3 microsecond
> resolution count of the delay.  How that was accomplished might make for
> another trivia question.
>
>
>
>
>


-- 
Doug Ingraham
PDP-8 SN 1175


More information about the cctalk mailing list