File CLUTCHB

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

*20
	PMODE
	*20
/PARAMETERS OF OPERATION: MEASURED
/IN NUMBERS OF REFRESH CYCLES: WHEN
/REFRESH(=-RFRESH)=144 (1 MSEC),
/TIMES ARE MEASURED IN MSECS.
/
PAUSE,	764		/NOW=1/2 SEC.
/LENGTH OF INTERTRIAL INTERVAL: FIXATION
/DOTS ON THROUGHOUT EXPT EXCEPT HERE.
/MEASURED FROM OFFSET OF POSTMASK.
/
AFTER,	764		/NOW=1/2 SEC.
/POSTMASK: DISPLAYED AFTER CHAR DISPLAY
/UNTIL S RESPONDS (10-KEY PANEL) AND
/THEN FOR ADDITIONAL "AFTER" COUNTS
/
/TO CHANGE POSTMASK PATTERN WORDS, PUT
/DESIRED ONES (NOW 7777 7777) INTO
/LOCATIONS PATRN-2 AND PATRN-1
/
BEFORE,	144		/NOW=1/10 SEC.
/PREMASK (USUALLY BLANK) ON (WITH FIXATN
/ION DOTS UNTIL S HITS "READY" AND THEN
/FOR ADDITIONAL "BEFORE" COUNTS.
/
/TO CHANGE PREMASK FROM BLANK, FILL
/LOCATIONS PATRN+100 & PATRN+101 WITH
/DESIRED PATTERN WORDS FOR PREMASK
/
M50,-50
K7,	7
TEMP,	0
R1,	0
R2,	0
R3,	0
INDEX6,	0
RNDM3,	0
RNDM2,	0
ADTIMS,	TIME1		/AD TIME CONDS.
ADCHRS,	CHAR1		/AD CHAR CODES
RNDM1,	RNDM
SH1,	0
SH2,	0
SH3,	0
SHUFEL,	SHUFL
RMNDR,	RMNDRX
TIMER,	0
DX,	24		/POSN SPACING
CHAR,	0
IRX,	IR
RNX,	RN
NTRIAL,	0
TIME,	0
TRTYPE,	0
KEY,	0
CHARS,	12		/NO. CHARS/COND
POSNS,	5		/NO. DISP POSNS
TIMES,	3		/NO. TIME CONDS
ADSDIF,	RESP1-CHAR1
C40,	40
/SUBR TYPES OUT AC (LESS THAN 100)
/AS 2 DIGIT DECIMAL NUMBER PLUS SPACE
DECPUT,	0
	DCA 0
	TAD C260
	DCA TIMER
	TAD 0
	TAD MD10
	SPA
	JMP .+3
	ISZ TIMER
	JMP .-4
	TAD C272
	DCA 0
	TAD TIMER
	JMS TYPE
	TAD 0
	JMS TYPE
	TAD C240
	JMS TYPE
	JMP I DECPUT
C240,	240
MD10,	-12
C260,	260
C272,	272
/SUBR TYPES CHAR FROM AC
TYPE,	0
	TLS
	TSF
	JMP .-1
	CLA
	JMP I TYPE
/SUBR GIVES CR+LF
CRLF,	0
	TAD C212
	JMS TYPE
	TAD C215
	JMS TYPE
	JMP I CRLF
C212,	212
C215,	215
/SUBR STARTS CLOCK AT 1OO KHZ RATE
CLOCK,	0
	CLA
	CLLR
	TAD C2100
	CLLR
	CLA
	JMP I CLOCK
C2100,	2100
/SUBR PAUSES UNTIL RFRESH SECS*10^-5
DELAY,	0
	CLCA
	CIA
	TAD RFRESH
	SPA SNA CLA
	JMP I DELAY	/DONE WAITING
	JMP DELAY+1	/KEEP WAITING
RFRESH,	144		/REFRESH RATE
/SUBR DISPLA SHOWS FIXATION POINTS
/AND KEY CHAR IN KEY POSN
/CHAR=40 IS THE PREMASK CODE:
/(NORMALLY BLANK:NO PREMASK)
/CHAR=0 IS THE POSTMASK CODE (NORMALLY
/=7777S:FULL POSTMASK)
DISPLA,	0
	JMS CLOCK	/START CLOCK
	LINC
	LMODE
	SNS I 0
	ADD C200	/CHAR SIZE: SW 0
	ESF		/1/2-SIZE CHARS
	SET I 1
X0,	374		/FIXATION CENTER
	LDA I
	20		/LINE ABOVE CHAR
	SNS I 0
	ROL 1		/DOUBLE IF FULL
	ADD VERCO
	DSC I
FIXAT1,	400		/LEFT FIX.N PW
	DSC I
FIXAT2,	4		/RIGHT FIXN. PW
	SET 1
	X0
	LDA I
	-20		/LINE BELOW CHAR
	SNS I 0
	ROL 1		/DOUBLE IF FULL
	ADD VERCO
	DSC I
FIXAT3,	1000
	DSC I
FIXAT4,	10
	LDA
	DX
	MUL I
KEYPOS,	0
	ADD IHORCO
	STC 1
	ADD CHAR
	ROL 1
	ADA I
	PATRN-2		/GET PW PAIR ADR
	STC 2
	LDA I
VERCO,	320
	DSC 2
	DSC I 2		/SHOW PWS
	PDP
	PMODE
	JMS DELAY	/STEADY REFRESH
	JMP I DISPLA	/THEN RETURN
/END OF DISPLAY ROUTINE
/PROGRAM STARTS HERE: INITIALIZE RANDOM
START,	ISZ TIME
	NOP
	LAS
	SZA
	JMP START
	JMS I IRX
	JMS I RNX
	ISZ TIME
	JMP .-2
/EACH BLOCK BEGINS HERE
BLOCK,	HLT CLA
	TAD POSNS
	CLL RAR
	LINC
	LMODE
	MUL
	DX		/CENTER DISPLAY
	COM
	ADD X0
	STA I
IHORCO,	0		/INIT. X COORD.
	LDA
	POSNS
	MUL
	TIMES
	STA I
CONDS,	17		/=NO. CONDS/BLK
	MUL
	CHARS
	STA I
TRIALS,	226		/=NO. TRIALS/BLK
	PDP
	PMODE
	CIA
	DCA NTRIAL
	STL RTR		/2001=1ST TRIAL
	DCA 10
	DCA 0		/FIRST COND=0
	TAD 0
	DCA I 10
	ISZ 0		/NEXT COND
	ISZ NTRIAL	/ANOTHER COND?
	JMP .-4
	TAD TRIALS
	CIA
	DCA NTRIAL	/INDEX TRIALS/BK
/ZERO THE CONDS DATA CELLS AT 4000 & UP
	STA CLL RAR	/3777=AD-1 1ST
	DCA 10		/DATA CELL
	TAD CONDS
	CIA
	DCA 7
	DCA I 10	/ZERO NEXT CELL
	ISZ 7
	JMP .-2
/SHUFFLE THE TRIALS CONDITIONS 50 TIMES
	TAD M50		/SHUFFLE 50 TIMS
	DCA 7
BSHUF,	STL RTR		/SETUP SHUFFLE
	DCA SH1
	TAD TRIALS
	DCA SH2
	STA
	DCA SH3
	JMS I SHUFEL	/SUFFLE ARRAY
	ISZ 7
	JMP BSHUF
	CLA STL RTR
	DCA 10		/2000=AD-1 CONDS
/EACH TRIAL BEGINS HERE
TRIAL,	TAD ADCHRS	/POINTS TO CHAR
	DCA KEY		/LIST ITEM
	TAD CONDS
	CIA
	DCA TEMP
	TAD I 10	/NEXT TRIAL COND
	TAD TEMP	/GET MOD CONDS
	SPA
	JMP .+3
	ISZ KEY		/NEXT CHAR COND
	JMP .-4
	TAD CONDS
	DCA TRTYPE	/IN (0,CONDS-1)
	TAD POSNS
	CIA
	DCA TEMP
	TAD ADTIMS	/POINTS TO TIME
	DCA TIME	/CONDS LIST
	TAD TRTYPE
	TAD TEMP
	SPA
	JMP .+3
	ISZ TIME	/NEXT TIME COND.
	JMP .-4
	TAD POSNS
	DCA KEYPOS	/IN (0,POSNS-1)
/NOW READY TO DISPLAY TRIAL. FIRST SHOW
/PREMASK (USUALLY BLANK) + FIXATION DOTS
/UNTIL S SIGNALS READY (4-BUTTON PANEL)
/AND THEN FOR ANOTHER "BEFORE" COUNTS
	TAD C40
	DCA CHAR	/PREMASK ASCII
	6304
	JMS DISPLA
	6302
	SNA CLA
	JMP .-3
	TAD BEFORE
	CIA
	DCA TIMER
	JMS DISPLA
	ISZ TIMER
	JMP .-2
/DISPLA ASCII CHAR IN LOCATION "KEY" FOR
/NO. COUNTS IN LOCATION "TIME" IN KEYPOS
	TAD I TIME
	CIA
	DCA TIMER
	TAD I KEY
	DCA CHAR
	JMS DISPLA
	ISZ TIMER
	JMP .-2
/NOW DISPLA POSTMASK (CHAR=0) IN KEYPOS
/UNTIL S RESPONDS ON 10-BUTTON PANEL
	6314
WAIT,	TAD DX
	LINC
	LMODE
	MUL
	KEYPOS
	ADD IHORCO
	STC 1
	ADD VERCO
	DSC
	PATRN-2
	DSC
	PATRN-1		/POSTMASK PWS
	PDP
	PMODE
	CLA
	6312
	SNA
	JMP WAIT
	DCA TEMP	/SAVE RESP
	TAD AFTER
	CIA
	DCA TIMER
	NOP
	NOP		/FILL PAGE END
	JMS DISPLA
	ISZ TIMER
	JMP .-2
	TAD ADSDIF	/RESP1-CHAR1
	TAD KEY		/=AD CORR RESP
	DCA 5
	STL RAR		/4000+TRTYPE=
	TAD TRTYPE	/AD DATA CELL
	DCA 6		/FOR THIS COND.
	TAD I 5		/CORR RESP
	CIA
	TAD TEMP	/CHECK RESP.
	SZA CLA
	JMP .+4		/ERROR
	ISZ I 6		/CORRECT: INCR.
	TAD BELL	/DATA CELL AND
	JMS TYPE	/FEEDBACK=BELL
/NOW WAIT FOR I.T.I. OF "PAUSE" COUNTS
	TAD PAUSE
	CIA
	DCA TIMER
	JMS CLOCK
	JMS DELAY
	ISZ TIMER	/WAIT FOR I.T.I.
	JMP .-3
	ISZ NTRIAL	/ANOTHER IN BLOK
	JMP I ITRIAL
	JMP I DATA
DATA,	OUTPUT		/NEXT PAGE
BELL,	207
ITRIAL,	TRIAL
/NOW AT END OF BLOCK: GIVE OUTPUT -
/ONE LINE OF CELLS FOR EACH TIME COND.
/SO CELL (I,J) OUTPUT = DATA CELL (I,J),
/WHERE I=TIME COND. (0,TIMES-1) AND J=
/POSN NO.(0,POSNS-1)
	PAGE
OUTPUT,	TAD TIMES
	CIA
	DCA 7
	STA CLL RAR	/3777=AD-1 CELLS
	DCA 10
	TAD ADTIMS
	DCA TIME	/POINTS TO TIME
	TAD C304	/D
	JMS TYPE
	TAD C330	/X
	JMS TYPE
	TAD C275	/=
	JMS TYPE
	TAD DX
	JMS DECPUT
	TAD C240
	JMS TYPE
	TAD C306	/"F" IF FULL OR
	LINC
	LMODE
	SNS 0
	ADD C2		/"H" IF HALF-SIZ
	PDP
	PMODE
	JMS TYPE
LINE,	JMS CRLF	/CR,LF
	TAD C324	/"T"
	JMS TYPE
	TAD C311	/"I"
	JMS TYPE
	TAD C315	/"M"
	JMS TYPE
	TAD C305	/"E"
	JMS TYPE
	TAD C275	/"="
	JMS TYPE
	TAD I TIME	/NEXT TIME VALUE
	JMS DECPUT
	TAD C240
	JMS TYPE	/EXTRA SPACE
	ISZ TIME
	DCA 2		/ROW SUM
	TAD POSNS
	CIA
	DCA 6		/POSNS=CELLS/LIN
NCELL,	TAD I 10	/NEXT DATA CELL
	DCA 1
	TAD 1
	TAD 2
	DCA 2		/ADD TO ROW SUM
	TAD 1
	JMS DECPUT
	ISZ 6		/ANOTHER CELL/LN
	JMP NCELL
	TAD C240
	JMS TYPE	/EXTRA BLANK
	TAD C323	/S
	JMS TYPE
	TAD C325	/U
	JMS TYPE
	TAD C315
	JMS TYPE	/M
	TAD C275
	JMS TYPE	/=
	TAD 2
	JMS DECPUT	/AND ROW SUM
	TAD C257
	JMS TYPE	/ /
	TAD CHARS
	LINC
	LMODE
	MUL
	POSNS		/=N/ROW
	PDP
	PMODE
	JMS DECPUT
	ISZ 7		/ANOTHER ROW?
	JMP LINE
	JMS CRLF
	JMS CRLF	/EXTRA CR,LF"S
	JMP I IBLOCK
IBLOCK,	BLOCK
C305,	305
C257,	257
C325,	325
C304,	304
C330,	330
C323,	323
C311,	311
C324,	324
C306,	306
C315,	315
C275,	275
C200,	200
C2,	2
/ARRAY OF (UP TO) 10 ALTERNATIVE LETTERS
/EACH SHOWN ONCE PER CONDITION
CHAR1,	2		/B
	3		/C
	4		/D
	6		/F
	7		/G
	10		/H
	12		/J
	13		/K
	14		/L
	16		/N
/ARRAY OF 10 RESPONSE KEY CODES
/IF LESS THAN 10 ALTERNATIVE LETTERS
/USED, SHOULD BE ASSIGNED TO LEFTMOST
RESP1,	1000		/LEFTMOST KEY
	400
	200
	100
	40
	20
	10
	4
	2
	1		/RIGHTMOST KEY
/ARRAY OF (UP TO) 10) TIME CONDITIONS
/EACH TIME=NO. REFRESH CYCLES. NOW SET
/AT 1 CYCLE/MSEC
TIME1,	30		/24 MSECS
	44		/36 MSECS
	60		/48 MSECS
	0		/N.U.
	0
	0
	0
	0
	0
	0
/RANDOM PACKAGE BEGINS HERE
	PAGE
RNDM,	0		/RN IN 0,RNDM3
	JMS I RNX	/36 BIT RN
	JMS I RMNDR	/REMAINDR RNDM3
	CLA
	JMP I RNDM	/DONE
M36,	-44		/
IDX1,	0		/
R1X,	0		/
R2X,	0		/
R3X,	0		/
RMNDRX,	0		/GET RMNDR
	CLA		/
	DCA RNDM2	/
	TAD R1		/
	DCA R1X		/
	TAD R2		/
	DCA R2X		/
	TAD R3		/
	DCA R3X		/
	TAD M36		/
	DCA IDX1	/FOR 36 BITS
RMN1,	CLA		/
	TAD RNDM2	/
	CLL		/
	RAL		/
	DCA RNDM2	/SHIFT LEFT 1
	TAD R1X		/
	CLL		/
	RAL		/
	DCA R1X		/SHIFT LEFT 1
	RAL		/GET LINK
	TAD RNDM2	/
	DCA RNDM2	/
	TAD R2X		/
	CLL		/
	RAL		/
	DCA R2X		/
	RAL		/GET LINK
	TAD R1X		/
	DCA R1X		/
	TAD R3X		/
	CLL		/
	RAL		/
	DCA R3X		/
	RAL		/GET LINK
	TAD R2X		/
	DCA R2X		/SHIFTS DONE
	TAD RNDM3	/NUMBER MOD
	CIA		/
	TAD RNDM2	/
	SPA		/
	JMP .+2		/
	DCA RNDM2	/SUB,REPLACE
	ISZ IDX1	/CHECK INDEX
	JMP RMN1	/CONTINUE
	JMP I RMNDRX	/RMNDR IN RNDM2
SHUFL,	0		/SHUFFLES
SHUFL1,	CLA		/
	TAD SH2		/LENGTH
	DCA RNDM3	/
	JMS I RNDM1	/GET RN
	CLA		/
	TAD SH3		/BLOCK SIZE
	DCA INDEX6	/
	TAD SH1		/ARRY-1
SHUF1,	TAD RNDM2	/ADD TO ARRY
	ISZ INDEX6	/N X M DONE?
	JMP SHUF1	/CONTINUE
	DCA TEMP	/DONE,IN TEMP
	TAD TEMP	/
	DCA 14		/
	TAD TEMP	/
	DCA 15		/
	TAD SH1		/
	DCA 16		/
	TAD SH1		/
	DCA 17		/
	TAD SH3		/
	DCA INDEX6	/-BLOCK SIZE
SHUF2,	TAD I 14	/
	DCA TEMP	/
	TAD I 16	/
	DCA I 15	/
	TAD TEMP	/
	DCA I 17	/
	ISZ INDEX6	/
	JMP SHUF2	/
	CLA CMA		/AC=-1
	TAD SH2		/LENGTH-1
	SZA		/
	JMP .+2		/
	JMP I SHUFL	/DONE
	DCA SH2		/NEW LENGTH
	TAD SH3		/BLOCK SIZE,-
	CIA		/+BLOCK SIZE
	TAD SH1		/ADD ARRAY
	DCA SH1		/NEW START
	JMP SHUFL1	/CONTINUE
	PAGE
IR,	0		/
	JMP IR1		/
RN,	0		/
	CLA		/
	TAD R3		/
	RAL		/
	AND K7400	/
	DCA T3		/
	TAD R2		/
	AND K177	/
	TAD T3		/
	RTL		/
	RTL		/
	RAL		/
	DCA T1		/
	TAD R3		/
	AND K177	/
	RTL		/
	RTL		/
	RAL		/
	TAD R2		/
	DCA T2		/
	SZL		/
	ISZ T1		/
	NOP		/
	TAD R3		/
	CLL RAL		/
	SZL		/
	ISZ T2		/
	SKP		/
	ISZ T1		/
	NOP		/
	CLL		/
	TAD R3		/
	DCA R3		/
	TAD R2		/
	RAL		/
	SZL		/
	ISZ T1		/
	NOP		/
	CLL		/
	TAD T2		/
	DCA R2		/
	TAD R1		/
	RAL		/
	TAD R1		/
	TAD T1		/
	DCA R1		/
	TAD R1		/
	JMP I RN	/
	HLT		/NOT USED
IR1,	CLA IAC		/
	DCA R3		/
	DCA R2		/
	DCA R1		/
	JMP I IR	/
K177,	177		/
K7400,	7400		/
T1,	0		/
T2,	0		/
T3,	0		/
/PATTERN WORDS FOR POSTMASK
	7777
	7777
/PATTERN WORDS FOR CHAR DISPLAY
PATRN,	4477		/A
	7744
	5177		/B
	2651
	4136		/C
	2241
	4177		/D
	3641
	4577		/E
	4145
	4477		/F
	4044
	4136		/G
	2645
	1077		/H
	7710
	7741		/I
	0041
	4142		/J
	4076
	1077		/K
	4324
	177		/L
	301
	3077		/M
	7730
	3077		/N
	7706
	4177		/O
	7741
	4477		/P
	3044
	4276		/Q
	376
	4477		/R
	3146
	5121		/S
	4651
	4040		/T
	4077
	177		/U
	7701
	176		/V
	7402
	677		/W
	7701
	1463		/X
	6314
	770		/Y
	7007
	4543		/Z
	6151
	4177		/[
	0000
	2040		/\
	0410
	0		/]
	7741
	2000		/^
	2077
	3410		/BACK ARROW
	1010
	0		/SPACE
	0
	7500		/!
	0
	6006		/"
	60
	3614		/NUMBER SIGN
	1436
	7721		/DOLLAR SIGN
	4677
	1446		/%
	6130
	5166		/&
	0523
	500		/APOSTROPHY
	6
	4163		/(
	0
	0		/)
	6341
	2050		/*
	50
	404		/+
	437
	605		/,
	0
	404		/-
	404
	1		/.
	0
	601		//
	4030
	4136		/0
	3641
	2101		/1
	177
	4523		/2
	2151
	4122		/3
	2651
	2414		/4
	477
	5172		/5
	651
	1506		/6
	4225
	4443		/7
	6050
	5126		/8
	2651
	5120		/9
	3651
	4200		/:
	0
	2601		/;
	0
	2410		/<
	0042
	1212		/=
	1212
	4200		/>
	1024
	4020		/?
	2055



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