File X-R3A-RJ

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

*20
	LMODE
/EXPERIMENTAL REPLAY PROGRAM FOR
/EXPERIMENTS RUN BY X-READ3A PROGRAM.
/SW 5 UP: RUNS AT SPEED DETERMINED
/FROM A-D KNOB 4
	DATA=LDF 1
	DTEXT=LDF 2
	TABLES=LDF 3
	PROG0=LIF 0
	PROG1=LIF 1
	XSAMP=SAM 15
/JOB PARAMETERS
	SEGMNT 0
	*20
PGCODE,	313
SUBSES,	0
TEXTAP,	0
TEXBLK, 0
DATBLK,	0
QBLK,	-1
TOPLIN,	8
LINES,	4
SPACIN,	6
XCRIT,	2
LINEXL,	20
LINEXR,	22
	PMODE
MDT,	-1501		/120 CPS SAMPLES
C2000,	2000		/100 KHZ CLOCK
	LMODE
/THIS SECTION HANDLES INTERRUPTS.
/MAINTAIN CURRENT FIXATION UNLESS TIMER
/EXPIRES, IN WHICH CASE DATA FOR NEXT
/FIXATION IS READ IN FROM DATA TAPE.
	*40
	0		/INTERRUPT PC
	STC ACSAVE
/SAVE AC AND 0000 BUT NOT L OR MQ.
/10&11 COUNT ELAPSED SECS.:120 SAMPS/SEC
	ADD
	STC SAVE0
	IOB
	6135		/CLSA
	APO I
	JMP RESTOR	/IGNORE-SPURIOUS
	XSK I 10	/ANOTHER "BEAT"
	JMP RESTOR
/CURRENT FIXATION HAS EXPIRED: GET NEXT
/(X,Y) (D,S) PAIR FROM DATA FILE - 
/UNLESS SW 1 UP, IN WHICH CASE CURRENT
/FIXATION HELD
/
	SNS 1
	JMP SKIPIT
	SET I 10
	-1
	JMP RESTOR
SKIPIT,	JMP FETCH
	SAE I
	7777		/END OF PAGE?
	SKP
	JMP PAGDON
	STC
	ADD
	BCL I
	7700
	STC YFIX
	ADD
	BCL I
	77
	ROL 6
	STC XFIX
	JMP FETCH
	SAE I
	7777
	SKP
	JMP PAGDON	/END OF PAGE
	AZE I		/0=EDITED OUT
	JMP SKIPIT
	STC
	ADD
	BCL I
	7000
	STC 10		/BEATS/FIX
	ADD
	BCL I
	777
	ROL 3
	ADD 10
	COM
	STC 10
/SHOW NEXT FIXATION FOR D+S COUNTS
/AFTER SETTING UP NEW DISPLAY CONTROL
/AND RESTARTING DISPLAY. FIRST GET BEAT
/"TIME" FROM KNOB 4 IF SW 0 UP
	LDA I
	-1500
	SNS I 0
	SAM 4
	IOB
	6133		/CLAB=BEAT TIME
	JMP RESET
/ARRIVES HERE IF CURRENT DISPLAY RESUMED
/
RESTOR,	LDA
C40,	40
	BSE I
	6000		/FORM RETURN JMP
	STC RETURN
	SET I 0
SAVE0,	0		/RESTORE SUBR PC
	DJR
	LDA I
ACSAVE,	0		/RESTORE AC
	IOB
	6244		/RMF
	IOB
C6001,	6001		/ION
RETURN,	HLT		/RETURN JUMP
/
/CONTROL HERE WHENEVER FIXATION ENDS:
/RESET LINE CONTROL WORD ARRAYS AND
/RESTART NEW DISPLAY!
/
RESET,	DTEXT
	SET I 4
	LINCON+1777
	SET 6
	MLINES
	ADD C7000	/EACH LINE SET
	STA I 4		/TO ALL PERIPH.
	XSK I 6
	JMP .-2
	LDA I
YFIX,	0
	ADD ADLIN2	/=AD-1 WINDOW
	STC 4		/LINE
	LDA I
XFIX,	0
	ADA I
POSN,	0		/NO. CHARS TO
	COM		/LEFT OF WINDOW
	APO I		/TOO  FAR LEFT?
	JMP NOROOM
	STA I 4		/=CONTROL WORD
	LDA I
MWIDE,	-10		/-WINDOW WIDTH
	STC MWIDTH
	JMP DISPLA	/START NEW DISPL
NOROOM,	ADD MWIDE	/DECREASE WINDOW
	AZE I
	JMP .+3
	APO
	JMP .+3
	LDA I
	-1		/MIN W=1
	STC MWIDTH
C17,	COM
	STA I 4		/CONTROL WORD=-0
	JMP DISPLA
/
/END OF PAGE: PAUSE IF SW 5 UP, ELSE
/GO ON TO NEXT PAGE
/
PAGDON,	SNS 5
	HLT
/NOW CHECK IF THERE"S MORE OF TEXT.
	LDA I
DLINES,	0
	ADD MLINES	/LAST PAGE DONE
	AZE 		/IF MLINES<LINES
	JMP MONIT	/END 0F EXPT!
/STILL LAST PAGE? FETCH NEXT PAGE TO SEE
	LDA I
ENDPAG,	0		/PTR END CURR PG
	STC PAGEPT
	JMP SETPAG	/GET NEXT PAGE
	ADD MLINES	/0 LINES:DONE
	AZE I
	JMP MONIT
	JMP RUNPAG	/DO NEXT PAGE
/
/SUBR RETRIEVES NEXT WORD FROM DATA FILE
/INTO AC, BUFFERING IN MORE DATA OFF
/TAPE 1 AS NEEDED.
/
FETCH,	DATA
	SET 11
	0		/RJ
	LDA I 13
	STC WORD
	ADD 13
	BSE I
	7400		/WILL BE 7777
	AZE		/IF END MBLK
	JMP 11		/RJ
/END MBLK: READ IT UNIT 1 & INCR DATBLK
	STD		/HAVE TIMING ERR
	JMP ERROR	/IF IN PROGRESS
	ADD 13		/CONVERT TO ABS.
	BCL I		/ADDR.BEGIN.MBLK
	377		/=3000 OR 3400
	TMA
	LDA I
	30		/ENABLE EX AD &
	AXO		/NO PAUSE OPTION
	LDA
	DATBLK
	STC .+2
	RDC U
	0
	XSK 13		/IF LAST MBLK OF
	JMP .+3		/BUFFER, RESET
	SET I 13	/13 TO AD-1 1ST
	2777		/BUFFER MBLK
	ADD ONE
	ADM
	DATBLK		/INCR.FOR NEXT
	SAE I
	1000
	SKP
	JMP ERROR	/NO WRAP-AROUND
	LDA I
WORD,	0		/RETURN VALUE
	JMP 11		/RJ
/
/SUBROUTINE DISPLAYS PAGE OF TEXT =
/"MLINES" OF TEXT, USING THE ARRAY OF
/TEXT-LINE POINTERS AND LINE CONTROL
/WORD ARRAYS.CONTROL<+0 MEANS THAT
/(UP TO) -CONTROL CHARS SHOWN LEFT OF
/WINDOW (IF ANY), FOLLOWED BY WINDOW
/AND THEN (IF ANY) REMAINING CHARS IN
/PERIPHERAL DISPLAY CONDITION.
/ALWAYS BEGINS DISPLAYING LINE NO. L,
/WHERE L=MIN(YFIX,-1-MLINES)
/
SHPAGE,	LDA
	0
	STC PGEXIT
	DTEXT		/TEXT,PWS,CONTRL
	ADD MLINES
	ADD YFIX
	APO I
	JMP TOOLOW	/BEGIN BOTTOM LN
	AZE I		/-0: " " "
	JMP TOOLOW
	LDA
	YFIX		/BEGIN "YFIX" LN
	JMP TOOLOW+4
TOOLOW,	LDA I
	1
	ADD MLINES
	COM
C4000,	STC
	SET I 6
MLINES,	-10		/-LINES TO SHOW
	ADD		/STARTING LINE
	ADD ADLIN1
	STC 3		/AD-1 ST. LIN AD
	ADD
	ADD ADLIN2
	STC 4		/AD-1 ST.LIN.CON
	ADD
	MUL
	DY
	ADD YTOP
	STC Y		/INITIAL V.C.
NXLINE,	SET I 1
C776,	776		/=-2 HC CHAN 1
	LDA I 3
	AZE I		/LINAD=0:CONT ON
	JMP WRAPUP	/TOP OF DISPLAY
	STC 7		/AD-1/2 LINE TXT
	LDA I 4		/LINE C-WORD
	APO
	JMP SHOLIN	/<0: SHOW LINE
	JMP ERROR	/NEVER?
CHNXLN,	LDA I
DY,	-40		/LINE SPACING
	ADM
	Y		/Y FOR NEXT LINE
	XSK I 6		/ANOTHER LINE?
	JMP NXLINE
PGEXIT,	HLT		/RETURN
/
/SHOW LINE: FIRST CONTROL CHARS ARE
/SHOWN IN PERIPHERAL STATUS, THEN UP TO
/"WIDTH" IN WINDOW STATUS, AND THEN
/REMAINING ONES IN PERIPH. STATUS
/PERIPHERAL SPACES ARE SHOWN IF BLKDEF=
/4000; WONT BE IF BLKDEF=0
/
SHOLIN,	AZE I
	JMP WINDOW	/-0:NO LEFT PER.
	STC 5
	ADD MASKPW
	STA
	PATRN+2076	/MASK FOR BLANKS
NXCHP,	LDH I 7		/NEXT PERIPH CHR
	SHD I
BLKDEF,	4000
	JMP BLANK
	SHD I
	4300		/END OF LINE?
	JMP CHNXLN
/PERDEF=-32:ONLY NON-LETTER /DIGIT SHOWN
/IN PERIPHERY;PERDEF=0,ALL CHARS SHOWN
	ADA I
PERDEF,	-32	
	APO	
	JMP MASKCH	/LETTER: MASK IT
	LDH 7
	ADA I
	-57
	APO
	JMP ONPER
	ADA I
	-12
	APO
	JMP MASKCH	/DIGIT: MASK IT
ONPER,	LDH 7
	ROL 1
	ADD ADPWS	/FORM PW ADDRESS
	STC 2
	ADD Y
	DSC 2		/SHOW CHAR
	DSC I 2
	XSK I 1		/ADVANCE H.C.
	XSK I 5		/ANOTHER P-CHAR?
	JMP NXCHP
	JMP WINDOW
BLANK,	LDA I
	11
	ADM
	1		/SKIP BLANK CHAR
	XSK I 5		/ANOTHER P-CHAR?
	JMP NXCHP
	JMP WINDOW
MASKCH,	LDA I
Y,	0
	DSC I
MASKPW,	7777
	LDA I
	5
	ADM
ONE,	1		/SKIP 2ND PW
	XSK I 5		/ANOTHER P-CHAR?
	JMP NXCHP
/DONE WITH LEFT PERIPHERY. NOW DO WINDOW
/AFTER DISPLAYING FIXATION DOTS
WINDOW,	SET I 5
MWIDTH,	-0		/WIND WIDTH
	SET 2		/HOLD HC
	1
	LDA I
XFIX,	0
	MUL I
	11
	ADD C4000	/CHAN 2
	STC 1
	ADD Y
	ADA I
C20,	20
	DSC I
	77
	SET 1
	2		/RESTORE HC
	CLR
	STA
	PATRN+2076	/RESTORE BLANK
NXCHW,	LDH I 7
	SHD I
	4300		/END OF LINE?
	JMP CHNXLN
	ROL 1
	ADA I
ADPWS,	PATRN+1776	/PW AD IN LDF 2
	STC 2
	ADD Y
	DSC 2
	DSC I 2		/SHOW W-CHAR
	XSK I 1		/ADVANCE HC
	XSK I 5		/ANOTHER W CHAR?
	JMP NXCHW
/DONE WITH WINDOW: FINISH LINE IN
/PERIPHERAL MODE; 5 IS AT -0 AND HENCE
/WILL XSK UNTIL END OF LINE DETECTED
	CLR
	JMP NXCHP-3
/
/CONTROL PASSES HERE WHEN DISPLAY BEGAN
/AT NON-TOP LINE OF PAGE. NOW MUST RESET
/POINTERS 3 (LINADS) AND 4 (LINCONS)
/AND Y. CONTINUE DISPLAY AT TOP LINE
/
WRAPUP,	SET I 3
ADLIN1,	LINADS+1777
	SET I 4
ADLIN2,	LINCON+1777
	LDA I
YTOP,	361		/TOP LINE Y
	JMP NXLINE-1
/
/END OF PAGE DISPLAY SUBROUTINE.
/
/SUBROUTINE SETS UP PAGE DISPLAY.
/FILLS ARRAY "LINADS" WITH 1/2 WORD
/POINTERS-1/2 FOR EACH OF NEXT "LINES"
/OF TEXT, WITH EXTRA +0 AT END FOR WRAP-
/AROUND DISPLAY. SKIPS LEADING 57 ("/")
/AT BEGINNING OF EACH LINE.
/
SETPAG,	LDA
	0
	STC SETRET
	DTEXT
	ADD DLINES	/NO. TO DISPLAY
	COM
	STA
	MLINES
	STC 6
	SET I 7
PAGEPT,	6001		/PTR START PAGE
	SET I 3
	LINADS+1777	/LINE POINTERS
	SET I 4
	LINCON+1777	/LINE CONTRL WDS
CODLIN,	JMP NXTCH	/SUBR GETS NX CH
	JMP SETPAG+4	/RET.HERE BF FLO
	AZE I		/" " AC=NEXT CH.
	JMP ENDFIL	/END OF FILE
	SAE I
	57		/"/" AT START
	JMP ERROR
/BEGINNING OF LINE OF TEXT
NEWLN,	LDA
	7
	STA I 3		/NEXT LINE PTR
	JMP NXTCH
	JMP SETPAG+4	/RESET BUFFER
	SAE I		/SKIP TO END OF
	43		/LINE=43
	JMP .-4
	ADD C7000	/EACH LINE INIT=
	STA I 4		/ALL PERIPH<<0
	XSK I 6		/ANOTHER LINE?
	JMP CODLIN
	LDA
	7
	STC ENDPAG	/SAVE END PTR
	STA I 3		/DUMMY LINAD=0
SETRET,	HLT		/RJ
/END OF FILE ENCOUNTERED: DECREASE NO.
/OF LINES TO BE DISPLAYED
/
ENDFIL,	ADD 6
	COM
	ADD MLINES
	STC MLINES
	JMP SETRET-1	/RETURN
/
/SUBR INPUTS NEXT CHAR FROM TEXT FILE BY
/LDH I 7. CHECKS FOR TEXT POINTER=END OF
/TEXT BUFFER. IF AT END, PUSHES ENTIRE
/BUFFER DOWN SO THAT "PAGEPT" IS IN 1ST
/BUFFER BLOCK; THEN RETURNS CALL+1 WITH
/AC=0. ELSE RETURNS CALL+2 WITH AC=CHAR.
/
NXTCH,	SET 5
	0		/SAVE RJ
	LDA
	7
	SAE I
	7377		/7377=END BUFFER
	JMP NXTRET+1	/NOT END
	LDA
	PAGEPT
	BCL I
	6377		/BITS 2,3=BLOCK
	SCR 10		/=NO. SHIFT DOWN
	ADD TBLK	/NEW LOW TBLK
	JMP TEXTIN	/SUBR READS TEXT
	ADD PAGEPT
	BCL I
	1400		/RESET PAGEPT
	STC PAGEPT	/INTO 1ST BLOCK
NXTRET,	JMP 5		/RETURN CALL+1
	XSK I 5
	LDH I 7		/WITH AC=CHAR,
	JMP 5		/RETURN CALL+2
/
/SUBR TAKES AC=TBLK, STRIPS BITS 0-2,
/AND THEN READS IN 3 TBLKS (UNIT 0) INTO
/TEXT BUFFER (BLOCKS 0-2 LDF 2)
/
TEXTIN,	BCL I
C7000,	7000
	STC TBLK
	ADD
	STC TXIRET	/RJ
	STD
	JMP .-1		/WAIT IF BUSY
	AXO		/NO EXT.TAPE OPS
	DTEXT
	ADD C4000
	JMP TBLKIN	/1ST BLOCK IN
	LDA I
	5001
	JMP TBLKIN	/2ND BLOCK
	LDA I
	6002
	JMP TBLKIN	/3RD BLOCK
TXIRET,	HLT		/RJ
/
/SUBR TAKES MBLK FROM AC, ADDS TBLK
/TO IT, AND THEN READS BLOCK (UNIT 0)
/
TBLKIN,	ADA I
TBLK,	0
	STC .+2
	RDC
	0
	JMP
/
/END OF PAGE ENCODING ROUTINE
/
D,	0		/TEMP
/
/SUBR INPUTS 1ST 3 BLOCKS OF TEXT FILE
/INTO BUFFER, TAKING TBLK FROM AC.
/SETS PAGEPT=6001 (SKIPS INITIAL "*20"
/LINE OF FILE) AND THEN CALLS "SETPAG".
/
NEWTEX,	STC D		/SAVE AC=TBLK
	ADD
	STC NEWRET
	ADD C6001
	STC PAGEPT
	ADD D
	JMP TEXTIN
	JMP SETPAG
NEWRET,	HLT		/RJ
/
/SUBR POSITIONS TAPE UNIT 0 AT TBLK=AC
/WITH "NO PAUSE" OPTION
/
TAPPOS,	STC TAPRET-1
	ADD
	STC TAPRET	/RJ
	STD
	JMP .-1		/WAIT IF BUSY
	LDA I
C10,	10
	AXO		/NO PAUSE
	CHK
	0
TAPRET,	HLT		/RJ
/
/ERROR ROUTINE. CONTROL ARRIVES HERE
/WHEN FATAL OPERATIONAL ERROR OCCURS.
/JMP-TO-PC INSTR. IN AC.
/
ERROR,	LDA
	0
/
/SYSTEM MONITOR HERE. HALTS AND WHEN
/STARTED, RUNS NEW JOB
/
MONIT,	HLT
	CLR
	RSW		/GET DATA FILE
	STC DATBLK
	AXO
	DATA
	ADD DATBLK
	ADA I
	3000
	STC .+2
	RDC U		/INPUT IST DATA
	0		/BLOCK INTO 3000
	ADD ONE
	ADM
	DATBLK
/START CLOCK AT 120 CPS PULSE RATE
	LDA I
	100
	PDP
	PMODE
	CLEN
	TAD C2000	/2100=100 KHZ
	CLLR
	CLA
	TAD MDT
	CLAB
	LINC
	LMODE
/NOW SET PARAMETER VALUES FOR NEXT
/JOB FROM HEADER ON DATA FILE
	SET I 13
	3000		/DATA FILE
	SET I 12
	PGCODE
	SET I 6
	-13
	LDA I 13
	STA I 12
	XSK I 6
	JMP .-3
	LDA
	TOPLIN
	MUL I
M20,	-20
	ADA I
C361,	361
	STC YTOP
	ADD C40		/ENABLE 1/2-SIZE
C4,	ESF		/NO TTY INTERUPT
	JMP READ
/
/THIS SECTION "RUNS" PAGE DISPLAY, 
/FIRST GET PAGE PARAMETERS
/
RUNPAG,	JMP FETCH	/PAGE=0: DONE
	AZE I
	HLT		/SHOULDNT BE
	JMP FETCH
	COM
	STC MLINES
	JMP FETCH
	COM
	STC MWIDE
	JMP FETCH
	STC POSN
	JMP FETCH
	STC 1
	ADD 1
	BCL I
	3777
	STC BLKDEF
	ADD 1
	APO I
	COM
	STC PERDEF
/INITIALIZE EYE-POSITION SAMPLERS SO
/THAT PROGRAM STARTS IN "MOVING" MODE 
/WITH LAST FIXATION AT (0,20). GIVES
/DUMMY (15,14) TIMING WORD AT TOP OF 
/DATA. ALLOWS IST WINDOW TO BE SET
/IMMEDIATELY.
INIT,	STC FIXING
	ADD C20
	STC XFIX
	STC YFIX
	STC 14
	STC 15
DISPLA,	IOB
	6001		/ION
	JMP SHPAGE
	JMP .-1		/KEEP DISPLAYING
/
/THIS SECTION EXECUTES "READ" TASK. 
/
READ,	LDA
	TEXBLK
	JMP NEWTEX	/FETCH TEXT
	JMP RUNPAG	/RUN 1ST PAGE
/
/
/3000-3777 THIS LDF USED FOR DATA BUFFER
/
/SEGMENT 2: 1ST 3 BLOCKS TEXT BUFFERING
/(4000-5377). THEN PATTERN WORDS (5400-
/5577). THEN LINE ADRESS AND LINE-CONTRL
/WORDS FOR DISPLAY (5600 UP)
/
	SEGMNT 2
	*1400
/PATTERN WORDS FOR CHAR DISPLAY FOLLOWS
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
	7000		/APOST.(TYPE ^)
	0
	3410		/BACK ARROW
	1010
	0		/BLANK
	0
	7500		/!
	0
	7000		/"
	70
	3614		/NO. SIGN
	1436
	7721		/$
	4677
	1446		/%
	6130
	5166		/&
	0523
	500		/APOSTROPHY
	6
	3600		/(
	41
	4100		/)
	36
	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		/<
	42
	1212		/=
	1212
	4200		/>
	1024
	4020		/?
	2055
/
/LINE ADDRESS POINTERS (1/2 WORD).UP TO
/16 OF THEM + 1 EXTRA FOR WRAP-UP
/
LINADS,	0
	*.+20
/LINE CONTROL WORDS: 16 MAX
LINCON,	0



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