File PREMASK

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

/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
NXCHP,	LDH I 7		/NEXT PERIPH CHR
	SHD I
BLKDEF,	4000
	JMP BLANK
	SHD I
	4300		/END OF LINE?
	JMP CHNXLN
/PERDEF=-33:ONLY NON-LETTER CHARS SHOWN
/IN PERIPHERY;PERDEF=0,ALL CHARS SHOWN
	ADA I
PERDEF,	-33		/SHOW NON-LETTER
	APO		/CHARS IN PERIPH
	JMP MASKCH	/LETTER: MASK IT
	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,	7007		/MASK PW
	LDA I
	5
	ADM
ONE,	1		/SKIP 2ND PW
	XSK I 5		/ANOTHER P-CHAR?
	JMP NXCHP
/DONE WITH LEFT PERIPHERY. NOW DO WINDOW
WINDOW,	SET I 5
MWIDTH,	-10		/WINDOW WIDTH
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
	JMP NXCHP
/
/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
/(AC=+0) OR AT BOTTOM LINE (AC=-0 WHEN
/FIXATION BELOW BOTTOM LINE: CAN"T OCCUR
/UNLESS <"LINES" SHOWN & FIXATION BELOW
/BOTTOM LINE.)
/
WRAPUP,	SET I 3
ADLIN1,	LINADS+1777	/L ADS-1 LDF 2
	SET I 4
ADLIN2,	LINCON+1777	/L CTRL-1 LDF 2
	LDA I
YTOP,	360		/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 STEXIT	/SETUP RETURN
	DTEXT		/TEXT,PWS,CTRLS
	ADD DLINES	/NO. TO DISPLAY
	COM
	STA
	MLINES
	STC 6
	SET I 7
PAGEPT,	6001		/PTR START PAGE
	DTEXT		/TEXT LDF
	SET I 3
	LINADS+1777	/LINE POINTERS
	SET I 4
	LINCON+1777	/LINE CONTRL WDS
CODLIN,	JMP NXTCH	/SUBR CHECKS BUF
	LDH I 7
	AZE I
	JMP ENDFIL	/END OF FILE
	SAE I
	57		/SKIP LEAD "/"
	JMP ERROR	/FIRST NOT "/"
	LDA
	7
	STA I 3		/NEXT LINE PTR
	JMP NXTCH
	LDH I 7
	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
STEXIT,	HLT		/RETURN JUMP
/END OF FILE ENCOUNTERED: DECREASE NO.
/OF LINES TO BE DISPLAYED.
/
ENDFIL,	ADD 6
	COM
	ADD MLINES
	STC MLINES
	JMP STEXIT-1	/RETURN
/
/SUBR CHECKS FOR TEXT POINTER=END OF
/TEXT BUFFER. IF AT END, SHIFTS ENTIRE
/BUFFER DOWN SO THAT START=PAGEPT IS IN
/FIRST BLOCK OF BUFFER.
/
NXTCH,	LDA
	7		/TEXT PTR
	SAE I
	7377		/7377=END BLOK 3
	JMP		/NOT END:RETURN
	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
	JMP SETPAG+4	/REENCODE TEXT
/
/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	/DEFINES TBLK
	ADD
	STC TXIRET	/RETURN JUMP
	STD
	JMP .-1		/WAIT IF BUSY
	AXO		/NO EXT.TAPE OPS
	DTEXT		/TEXT LDF
	ADD C4000
	JMP TBLKIN	/1ST BLOCK IN
	LDA I
	5001
	JMP TBLKIN	/2ND BLOCK
	LDA I
	6002
	JMP TBLKIN	/3RD BLOCK
TXIRET,	HLT		/RETURN
/
/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
/
/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		/RETURN
/
/ERROR ROUTINE. CONTROL ARRIVES HERE
/WHEN FATAL OPERATIONAL ERROR OCCURS.
/TYPES OUT "ERROR" AND HALTS WITH
/JMP-TO-PC INSTR. IN AC.CONTINUES:MONIT
/
ERROR,	LDA
	0
	STC D
	SET I 1
	ERLABL-4000	/PTR TO "ERROR"
	PROG1		/LIF 1
	JMP MESSAG	/CR,CR,"ERROR"
	ADD D		/JMP PC IN AC
/
/SYSTEM MONITOR HERE. HALTS AND WHEN
/STARTED, RUNS NEW JOB
/
MONIT,	HLT
/NOW READ IN PARAMETER VALUES FOR NEXT
/READING TASK. EACH PARAMETER
/NAME IS TYPED OUT, FOLLOWED BY "=",
/AND THEN ITS CURRENT VALUE AND
/THEN A SPACE. THEN A NUMBER (SIGNED
/DECIMAL INTEGER) IS ENTERED,
/IF A NEW VALUE IS DESIRED (LEADING
/ZEROES MAY BE SURPRESSED), OR A DIRECT
/CR IF THE SAME VALUE IS DESIRED. A
/"RUBOUT" BEFORE THE CR RESTARTS THE
/INPUT AT THE "=" FOR THE PARAMETER.
/
	SET I 13
	PGCODE		/PGCODE FIXED
	SET I 1		/AD-1/2 PARAM
	LABEL1-4000	/LABELS (HF-WDS)
	SET I 6
	-12
PGET,	XSK I 13
	PROG1
	JMP MESSAG	/TYPE PARAM LABL
TYVAL,	LDA 13
	PROG1
	JMP DECPUT	/"=XXX"SG DECIM.
	PROG1
	JMP GETDEC	/I3 DEC INPUT
	STC Y		/SAVE INPUT
	DATA		/C(3) IN LIF 1
	LDA 		/=-4 MEANS
	2003		/INITIAL CR:KEEP
	ADD C4		/CURRENT VALUE
	AZE I
	JMP .+4
	LDA
	Y
	STA 13
	XSK I 6		/ANOTHER PARAM?
	JMP PGET
/PARAMETERS OBTAINED. COMPUTE YTOP AND
/PROCEED TO "ADJUST".
	LDA
	TOPLIN
	APO
	JMP ERROR	/CANT BE <0
	MUL I
M20,	-20
	ADA I
C360,	360
	STC YTOP
	ADD C40		/ENABLE 1/2-SIZE
C4,	ESF		/NO TTY INTERUPT
	JMP ADJUST
/
/THIS SECTION "RUNS" PAGE DISPLAY AND
/WINDOW CONTROL AND DATA ACQUISITION.
/
RUNPAG,	LDA I
	1
	ADM
	NPAGE		/INCR NPAGE&PUT
	JMP STORE	/INTO DATA FILE
	LDA
	MLINES
	COM
	JMP STORE	/SAVE LINES/PAGE
/INITIALIZE EYE-POSITION SAMPLERS SO
/THAT PROGRAM STARTS IN "MOVING" MODE 
/WITH LAST FIXATION AT (0,0). WILL GIVE
/DUMMY (15,14) TIMING WORD AT TOP OF 
/DATA. ALLOWS IST WINDOW TO BE SET
/IMMEDIATELY.
INIT,	STC FIXING	/>0:MOVING FROM
	ADD C360	/ASSUMED FIXATON
	STC XFIX	/(360,0):CANT BE
	STC YFIX	/THERE:INITIAL
	STC 14		/FIXATION SETUP
	STC 15		/0 DURATION
/TURN ON CLOCK INTERRUPT
	LDA I
	100
	PDP
	PMODE
	CLEN		/CLOCK ENABLED
	TAD C3000	/3000+100=3100
	CLLR		/10 KHZ CLOCK
	CLA
	TAD MDT		/SAMPLING RATE
	CLAB		/TO BUFFER PRSET
	CLSA		/CLEAR REQUESTS
	6314		/CLEAR PANEL
	LINC
	LMODE
DISPLA,	IOB
	6001		/ION
	JMP SHPAGE	/DISPLAY ON
	JMP .-1		/KEEP DISPLAYING
/
/END OF PAGE-RUNNING SECTION
/
/THIS SECTION DISPLAYS 3 X 3 "X" PATTERN
/OVER PARAMETER-SELECTED DISPLAY AREA,
/PROCEEDING TO CALIBRATE WHEN SW 5 DOWN.
/FIRST READS IN TBLKS=270-272:3 LINES
/ADJUST PATTERN+16 LINES CALIBR/VERIFY,
/AND THEN (WITHOUT PAUSING) MOVES TAPE
/TO TEXT SOURCE (DOESN"T READ IT YET).
/
ADJUST,	LDA I
	3
	STC DLINES	/3-LINE ADJ PATT
	LDA I
CALBLK,	270		/SYSTEM SOURCE
	JMP NEWTEX	/FETCH FILE
	LDA I
	10
	AXO		/SET NO PAUSE
	LDA
	TEXBLK
	STC .+2
	CHK		/POSN TAPE AT
	0		/TEXT FILE
	SNS 5
	JMP CALIBR	/SKIP ADJUST
	LDA I
M1,	-1
	ADD LINES
	MUL
	SPACIN
	SCR 1
	MUL I
	-20
	STC DY
	STC PERDEF	/ALL TEXT
	JMP SHPAGE	/PATTERN ON
	SNS I 5
	JMP .-2		/ON UNTIL 5 DOWN
/
/CALIBRATION SECTION.USES NEXT "LINES"OF
/"CALBLK" SYSTEM FILE READ IN DURING
/ADJUST FOR TEXT AND SUPERIMPOSES SMALL
/SQUARES ONE-BY-ONE FOR VOLTAGE SAMPLING
/THIS CALIBRATION IS LINES BY 8 POINTS,
/WITH X AVERAGED W/R/T Y ("LINES") AND Y
/W/R/T X (8 OF THEM).
/USES JOB PARAMETERS, AND AFTER CHECKING
/THEM, SKIPS TO "VERIFY" IF SW 4 DOWN.
/
CALIBR,	LDA I
	-33
	STC PERDEF	/NORMAL PERIPHER
	ADD LINES
	ADD M20
	APO I		/NO MORE THAN 16
	JMP ERROR	/LINES/PAGE
	ADA I
	20		/MUST BE>0
	APO
	JMP ERROR
	STC DLINES
	ADD SPACIN
	APO
	JMP ERROR	/SPACING>0?
	AZE I
	JMP ERROR
	MUL I
	-20
	STC DY
	ADD M1
	ADD LINES
	MUL
	SPACIN
	ADD TOPLIN
	ADA I
	-37
	APO I		/LAST LINE NO.
	JMP ERROR	/MUST <32
	LDA
	ENDPAG
	STC PAGEPT	/SETUP NEXT 
	JMP SETPAG	/LINES OF CALBLK
	SNS 4
	JMP VERIFY
/ACQUIRE X & Y READINGS AT 8 POINTS FOR
/EACH OF "LINES". TEMPORARY STORAGE IN
/TABLES LDF FOR RUNNING SUM OF Y READING
/W/R/T X (16:3000 UP) AND X READINGS
/W/R/T Y (17,3400 UP).
/S FIXATES EACH SQUARE SUPERIMPOSED ON
/CALIB. TEXT (ALL PERIPH.) AND WHILE
/FIXATING HITS PANEL KEY, THEN MOVES ON.
/SW 0 ON: GET TYPEOUT OF TRANSFORMED
/VOLTAGE AVGS: 1ST LINE=X"S, 2ND=Y"S.
	ADD MLINES
	STC 14
	SET I 15
	-10		/ZERO 8 X-SUMS
	SET I 17
	3377
	TABLES		/LDF
	STA I 17
	XSK I 15
	JMP .-2
	SET I 16
	3000
	ADD YTOP
CLINE,	STC YFIX	/V.C. CURRENT LN
	ADD M2		/INIT HC/LINE
	STC XFIX	/H.C. CALIB PT.
	STA 16		/ZERO Y SUM
	SET I 15
	-10		/8 PTS./LINE
	SET I 17	/AD-1 X-SUMS
	3377
CSPOT,	IOB
	6314		/CLEAR PANEL
	JMP SHPAGE	/DISPLAY PAGE
	SET 1
	XFIX
C1000,	LDA
	YFIX
	DSC I		/SUPERIMPOSE
	7777		/SQUARE AT
	DSC I		/(XFIX,YFIX)
	7777
	IOB
	6311		/DISPLAY UNTIL
	JMP CSPOT+2	/PANEL HIT
	TABLES
	YSAMP		/GET Y-VOLTAGE
	ADD C1000
	SCR 2		/INTO (0,377)
	ADM 16		/ADD TO Y-SUM
	XSAMP		/GET X-VOLTAGE
	ADD C1000
	SCR 2
	ADM I 17	/ADD TO X-SUM
	LDA I
CDX,	110
	ADM
	XFIX		/H.C. NEXT PT.
	XSK I 15	/ANOTHER PT/LINE
	JMP CSPOT
/END-OF-LINE: AVERAGE Y-VALUE OVER 8 PTS
	LDA 16
	SCR 3
	STA 16
	XSK I 16	/NEXT LINE Y-SUM
	LDA
	DY
	ADD YFIX
	XSK I 14	/ANOTHER LINE?
	JMP CLINE
/SAMPLING COMPLETE: AVERAGE X-VALUES
/BY DIVIDING EACH BY "LINES"
	SNS 0
	JMP .+5
	SET I 1
	XLABEL-4000	/CR,"X-VOLTS:"
	PROG1		/IF SW 0 UP
	JMP MESSAG
	SET I 15
M10,	-10
	SET I 17
	3377
/DIVIDE BY "LINES"(12 BITS - IGNORE SIGN
XAVG,	CLR		/CLEAR LINK
	STC 3		/QUOTIENT COUNTR
	SET I 2
	-2		/INDEX PSEUDO"-"
	LDA I 17
	APO I		/PSEUDO SIGN?
	JMP .+3
/SIGN BIT (AC0) SET: ROTATE IT OUT WITH
/ROR I 1 (LINK CLEAR) AND INDEX 2 TO -1
/LATER WILL HAVE TO DOUBLE QUOTIENT
	XSK I 2		/YES:SET IT AND
	ROR I 1		/ROTATE IT OUT
	ADD MLINES	/BEGIN SUBTRACTN
	APO
	JMP .+3
	XSK I 3		/INCR.QUOTIENT
	JMP .-4
	AZE I		/INCR. IF -0
	XSK I 3
	LDA
	3		/GET QUOTIENT
	XSK I 2		/DOUBLE " IF
	SKP		/PSEUDO-SIGN WAS
	ROL 1		/ROTATED OUT
/PROPER QUOTIENT NOW IN AC
	STA 17
	SNS 0
	JMP .+3
	PROG1
	JMP DECPUT	/TYPE IF SW 0 UP
	LDA I
C2400,	2400
	ADM 17		/FORM VOLT-ADR.
	XSK I 15	/ANOTHER?
	JMP XAVG
/NOW SET-UP (0,377) MATRIX FOR X-LOOKUP
/AS FUNCTION OF HORIZ. VOLTAGE. FOR
/EACH VOLTAGE V, PUT INTERPOLATED X POSN
/IN (0,70) AT 2400+V IN TABLES LDF.
	SET I 17
	2377
	SET I 15
	-400
	CLR
	STC XFIX	/WILL HOLD X-POS
	ADD M1
	STA I 17	/INIT ALL=-1
	XSK I 15
	JMP .-2
/NOW FILL IN OBTAINED CALIB PTS.
	SET I 17
	3377
	SET I 15
	-10
FILLX,	LDA I 17	/NEXT X VO



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