File QDSP20

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

*20
/  QUICK AND DIRTY SPIKE ANALYSIS
/
/PROCEDURE:
/  INITIALIZATION:
/	I/O PRESET
/	START 20 (IF DATA HAVE BEEN SAVED,LS 0020). 
/		 PRINTS LF,CR, AND ASKS FOR FIRST
/                TBLK (IN DECIMAL) FROM TTY.
/
/  REINITIALIZE TRIAL:
/       START 400 (ZEROS ALL DATA SINCE LAST WRITE.
/
/  START SAMPLING:
/	CONTINUE
/	XSL 1 HIGH: ENABLES, GOES TO WAIT LOOP
/	XSL 0 HIGH: ZEROES CLOCK, STARTS SAMPLING.
/
/  STOP SAMPLING:
/	XSL 1 LOW: ZEROES REST OF CURRENT DF,AND
/	           PRINTS EXPECTED FIRST TBLK (IN
/                  DECIMAL) FOR NEXT SAMPLING.
/	XSL 5 HIGH: WRITES ON TAPE. ONLY WORKS
/		   FROM XSL 1 WAIT LOOP.
/
/
/SNS 0 IS DISABLE STORAGE
/SNS 1 IS ENABLE CH 1
/SNS 2 READS LSW TO WIMAX,RSW TO WIVAL
/SNS 4 IS HALT COMPUTER
/        (WITH SECONDS IN AC)
/SNS 5 IS WRITE. ONLY WORKS FROM XSL 1 WAIT LOOP.
/        HALTS COMPUTER. PRESS CONTINUE TO WRITE.
/
/INPUT DATA IN AD 11
/AD 1 IS AD 11 THRESHOLD
/
/INTENSIFY PULSES FR0M LATCHES & MONOS:641X,642X
/  STORE     0
/  VALLEY    2:SPIKE PASSES CRITERIA.
/  ABORT     3:SPIKE DOES NOT PASS CRITERIA.
/  THRESHOLD 4
/
	SEGMNT 0
	*20
	LDF 2
	JMP LFCR	/CARRIAGE RETURN
	LDA I
	TYPMS1		/ADDRESS OF MESSAGE
	PDP
	PMODE
	JMS I PTYPQ1	/ASK FOR FIRST TBLK
	JMS I PTBLK	/GET ANSWER
	LINC
	LMODE
	STC MTBLK	/STORE FIRST TBLK
	JMP LFCR
	JMP START
WIMIN,	2		/NO. OF SAMS MIN.
WIMAX,  10              /NO. OF SAMS MAX
WIVAL,	12		/NO.SAMS PEAK TO VALLEY
WIDISP,	20	       /WIDTH OF DISPLAY
PCRIT,	20		/PKOVR CRITERION
VLCRIT,	5		/VALLEY   "
/
PTYPQ1,	TYPSTG		/ADDR.TYPE HANDLER
PTBLK,	SICONV		/ADDR.DEC-OCT.IN
PDECPR,	OCDCPR		/ADDR.OCT-DEC.PRINT
/
START,	LDA
	CORE
	STC LASTDF	/LAST DF AT END OF CORE
	LDA
	WIVAL
	ADD WIMIN
	STC VALWID	/TEMPO DSPLY BRITN VALLEY
CLDFS,	SET I 2
	2000
	CLR		/CLR DATA FIELD 1
	STA 2
	XSK I 2
	JMP .-3
	IOB
	6214		/READ DF
	ROR 1
	SAE
	LASTDF		/LAST DF?
	SKP		/NO
	JMP .+6		/YES
	ADA I
	641		/GENERATE NEW DF
	STC .+1
	LDF		/REPLACED
	JMP CLDFS
	LDF 1
	SET I 2
	T1-1     /CLEAR TABLES...
        CLR
	STA I 2
	LDA
	2
	SAE I
	350		/...TO LOC 350
	JMP .-6
	SET I DATSTO	/DATA STORAGE POINTER
	3777
BLKPRT,	LDA		/NUM OF FIRST...
	MTBLK		/TBLK TYPED
	JMP DECPRT
	JMP SPACE
	LDF 2
	LDA
	XSL5FL		/FLAG 5 SET?
	AZE I
	JMP MESSG1	/NO. INQUIRE IF TBLK OK.
	CLR		/YES.CLEAR IT & GO.
	STC XSL5FL
CHECK5,	SXL I 5		/SNS,XSL 5 HIGH?
	JMP MESSG2	/YES.DSPLY "CLEAR SNS 5"
	SNS I 5		/SNS 5 STILL SET?
	JMP MESSG2
DELAY5,	SET I 2		/DELAY FOR SWITCH BOUNCE
	-100		/400 MSEC
	XSK I 1
	JMP .-1
	XSK I 2
	JMP .-3
	JMP RELAY0
/
	*140
/T1  (TABLE OF FLAGS AND SAVE REGISTERS)
SAMPLE,	0		/CURRENT SAM
PREVSM,	0		/PREVIOUS SAMPLE
PDCTR,	0		/PEAK DETECT COUNTER
STOFLG,	0		/STORE FLAG
ABORFL,	0		/ABORT FLAG
HFPKFL,	0		/HALF-PEAK FLAG (HALF DECAY POINT)
PVRCTR,	0		/PEAK-OVER COUNTER
SAVSEC,	0		/SAVE TIME (SEC)
SAVMS,	0		/SAVE TIME (MSEC)
SAVAMP,	0		/SAVE AMPLITUDE
PKSMSV,	0		/SAVE PEAK SAMPLE
XSL5FL,	0		/EXT.SNS LINE 5 FLAG
/REUSABLE BETA REGISTERS=1-7
/DEDICATED  "      "  :
	DISPTR=10
	DISHOR=11
	DISVERT=12
	BRICTR=13
	FRACTN=14
	MSEC=15
	SEC=16
	DATSTO=17
	T1=140		/TABLE 1
	DISPT=160	/DISPLAY TABLE
	D1=160		/CH.1 "   "
	MONSET=6420	/SET MONO&LATCH
	RESET=6430	/RESET LATCH
/
	*340
BRIHOR,	0		/BRIGHTEN CONSTANTS
BRIVER,	0
BRIEND,	0
VALHOR,	0		/VALLEY BRITN HOR
VALVRT,	0
VLBRFL,	0		/VALLEY BRIGHTEN FLAG
	*360
LASTDF,	37		/REPLACED BY CORE
MTBLK,	000
LASTBK,	777
TEMRY,	0		
CORE,	37		/MEMORY SIZE
/
/
	*400
	JMP START
RELAY0,	LDA I
	0040
	ATR		/RELAY 0 ON
WAIT1,	SXL 1		/XSL 1 HIGH?
	JMP MESSG3	/NO.DSPLY "READY XSL 1"
	JMP DELAY	/YES
	SNS I 4
	JMP HALTCP	/HALT COMPUTER
	SNS I 5
	JMP STOPDA	/STOP DATA & WRITE
	SXL 5		/XSL 5 SET (HIGH)?
	JMP WAIT1	/NO
	LDA I		/YES.
	1
	STC XSL5FL	/SET FLAG
	JMP STOPDA	/STOP DATA AND WRITE.
DELAY,	SET I 2		/DUR.OF DELAY LOOP
	-20
	XSK I 1		/DELAY LOOP
	JMP .-1   	/...FOR RELAY BOUNCE
	XSK I 2
	JMP .-3
	SXL 1		/XSL 1 STILL HIGH?
	JMP WAIT1	/NO. FALSE ALARM
WAIT0,	SXL 0		/YES. IS XSL 0 HIGH?
	JMP MESSG4	/NO.WAIT & DISPL
RELAY1,	LDA I
	60		/RELAY 1 ON (0 LEFT ON)
	ATR
	CLR
	STC FRACTN	/ZERO TIME
	STC MSEC
	STC SEC
CLOCK,	LDA I
	0300		/FULL-SIZE CHAR,FAST SAM
	ESF
	PDP
	PMODE
	CLA
	CLLR
	CLEN
	TAD K310	/ INTERVALS
	CIA
	CLAB
	CLA
	TAD K0100	/AC BIT 5 SET
	CLLR		/GENERATE CLR CTR
	CLSA
	CLA 
	TAD K0300	/AC BITS 4,5 SET
	CLEN
	CLA
	TAD K2100	/100 KHZ RATE
	CLLR
	JMP .+5
K310,	24
K0100,	100
K0300,	300
K2100,	2100
	LINC
	LMODE
/
/END OF SET-UP ROUTINES. INITIALIZE DISP
/
BRICAL,	LDA
	WIMIN		/HOR:INCR BY 
	MUL I		/...MIN WIDTH
	10		/10 SCREEN UNITS/POINT
	ADA I
	40+60+220-20	/4 PTS+6 SPACES + MARGIN
	STC BRIHOR
	LDA		/VERT
	WIMIN		/BRIGHT FROM WIMIN...
	ADA I
	DISPT+2
	STC BRIVER
	LDA
	WIMAX		/...TO WIMAX
	ADA I
	DISPT+3
	STC BRIEND
CURINL, SET I 11	/HOR
	220		/MARGIN
	XSK I 13	/CTR=0?
	JMP BRITN	/NO. DISP WINDOW
	SET I 13	/YES. DISP ALL
BRIFAC,	-14		/ (BRITN FACTOR)
	SET I 12	/VERT
	DISPT
	LDA
	WIDISP
	ADA I
	DISPT+3
	STC ENDDIS
DSPSEC,	LDA		/DISPLAY SECONDS
	SEC
	ADD SEC
	ADA I
	NUMTAB-1
	STC 2		/PTR TO NUMBER TABLE
	SET I 1
	100		/HOR=100; VERT=0
	DSC I 2
	DSC I 2		/DISPLAY SECS
WIDADJ,	SNS 2		/WIDTH ADJUST
	JMP LOOP
	CLR
	LSW		/LEFT SW.=WIMAX
	STC WIMAX
	RSW		/RIGHT SW.=WIVAL
	STC WIVAL
	JMP LOOP
BRITN,	SET 11		/BRIGHTEN WINDOW
	BRIHOR		/HOR
	SET 12		/VERT
	BRIVER
	LDA
	BRIEND
	STC ENDDIS
/
/MAIN PROGRAM
/
LOOP,	IOB
	6131		/SKIP ON CLOCK FLAG
	SKP
	JMP TIME
	SNS 1		/PERMIT DISP IF...
	JMP DISP	/ SNS1 NOT ENABLED
	LDA		/IN A SPIKE?
	PDCTR
	AZE
	JMP LOOP	/YES. DONT DISPLAY.
DISP,	LDA I 12	/NO. DISPLAY.
	SCR 2		/SAM/4
	DIS I 11
	LDA I
	7		/SPACES
	ADM
	11
	LDA
	12
	SAE I
	DISPT+3
	JMP .+6
	LDA		/SPACES
	11
	ADA I
	60
	STC 11
	LDA 		/END DISPLAY?
	12
	COM
	ADA I
ENDDIS,	210		/(REPLACED)
	APO I
	JMP CHOICE	/NO. RETURN.
/
/SPECIAL BRIGHTENING SUBROUTINES
/
BRISAM,	SET I 11	/YES.BRITN CURRENT SAM
	220+40		/HOR
	LDA
	SAMPLE		/VERT
	SCR 2
	DIS I 11	/DISP CURRENT SAM
BRIVAL,	LDA
	VLBRFL		/VALLEY BRIGHTEN FLAG SET?
	AZE I		/HAS VALLEY DISPLAYED?
	JMP .+4		/NO.  BRITN VALLEY MAX.
	CLR		/YES. CLEAR
	STC VLBRFL
	JMP BRICAL	/AND INITIALIZE.
	LDA I
VALWID,	0000		/(REPLACED)
	MUL I
	10
	ADA I
	220+40+60-20	/HOR
	STC 11
	LDA
	VALWID
	ADA I
	DISPT+2
	STA
	12
	STC VLBRFL	/SET VALLEY BRIGHTEN FLAG
	JMP CHOICE
TIME,	IOB
	6135		/CLEAR CLOK FLAG
	XSK I FRACTN	/INCR FRACTN CTR
	JMP CHOICE
	SET I FRACTN
	-5		/-1/FRACTION OF MSEC
TIMEMS, XSK I MSEC	/INCR.MSEC CTR.
	LDA
	MSEC
	SAE I
	1750		/ =1000(10)MSEC?
	JMP CHOICE	/NO
	SET I MSEC	/YES.RESET MSEC CTR
	0
	LDA I
	1		/INCR. SEC CTR.
	ADM
	SEC
CHOICE,	SNS 1
	JMP RETRN1
	SAM 11		/INITIATE SAM
	JMP ONE		/TO CH.1
RETRN1,	SNS I 4
	JMP HALTCP    /HALT COMPUTER
	SXL I 1		/XSL 1  LOW?
	JMP LOOP	/NO.
/
/
/SUBROUTINES
/
/
ENDTRI,	CLR		/CALC BLKS USED
	IOB
	6214		/READ DF
	ROR 1
	ADA I
	-2		/BEGAN IN DF2, SO -2
	MUL I		/...X4...
	4
	STC ADDBLK	/+ NEW ONES:
END1BK,	LDA I
	-2370
	ADD DATSTO	/DATA PTR
	APO I		/DATSTO < 2370?
	JMP END2BK	/NO
	LDA I		/YES.ZERO TO END OF BLK
	2377
	STC ENDCLR
	LDA I		/ADD ONE BLK
	1
	JMP ADDBLK-1
END2BK,	LDA I
	-2770
	ADD DATSTO
	APO I		/DATSTO < 2770?
	JMP END3BK	/NO
	LDA I		/YES.CLR TO 2777
	2777
	STC ENDCLR
	LDA I
	2		/ADD 2 BLKS
	JMP ADDBLK-1
END3BK,	LDA I
	-3370
	ADD DATSTO
	APO I		/DATSTO < 3370?
	JMP END4BK	/NO
	LDA I		/YES.CLR TO END OF BLK
	3377
	STC ENDCLR
	LDA I
	3		/ADD 3 BKS
	JMP ADDBLK-1
END4BK,	LDA I		/CLR TO END OF DF
	3777
	STC ENDCLR
	LDA I
	4		/ADD 4 BLKS
	ADA I
ADDBLK,	0000		/REPLACED
	ADD MTBLK	/+ OLD TBLK
	JMP DECPRT
	JMP SPACE
	CLR
	STA I DATSTO
	LDA
	DATSTO
	SAE I		/CLR TO END OF 
ENDCLR,	0000		/(REPLACED)
	JMP .-6		/DESIGNATED BLK.
	LDA I
	40
	ATR		/RELAY 1 OFF (0 LEFT ON)
	XSK DATSTO
	JMP WAIT1
	JMP INCRDF	/+1 TO DF
	JMP WAIT1	/ & WAIT FOR XSL 1
/
/
ONE,	SAM 1
	STC SAMPLE
	LDA
	PDCTR
	AZE		/PD CTR > 0 ?
	JMP PEAK1	/YES
	SAM 11		/THRESHOLD A-D 1
	STA
	D1+3		/ " TO DISPT.
	COM
	ADD SAMPLE	/ > THRESHOLD ?
	APO I
	JMP PKINL	/YES
	JMP RETRN1	/NO
PKINL,	CLR
	STC D1+2	/CLR STORE DISP.PLS.
	IOB
	MONSET 4	/SET MONO 4 (THRESHOLD)
	SET I DISPTR	/BETA 10
	D1+4		/DISP TBL PTR
	LDA 
	SAMPLE
	STA DISPTR 
	LDA I
	1
	STC PDCTR	/+1 TO PDCTR
	IOB
	RESET 4		/RESET LATCH 4
	NOP		/HRDWR BUG FIX
	JMP INCRTN
PEAK1,  LDA
	SAMPLE
	STA I DISPTR	/...TO DISP TABLE
	LDA I		/+1 TO PEAK DETECT COUNTER
	1
	ADM
	PDCTR
	SAE		/DISPLAY TABLE FULL?
	WIDISP		/(PDCTR=DISP WIDTH MAX?)
	SKP
	JMP CLEAR	/YES. CLEAR.
	LDA
	ABORFL		/ABORT FLAG SET?
	AZE
	JMP LOOP	/YES
POVER1,	LDA		/NO
	PVRCTR		/POVER CTR>0?
	AZE		/(OVER PEAK?)
	JMP WIDTH1	/YES
	LDA		/NO
	SAMPLE
	ADD PCRIT	/CRITN PEAKOVER
	COM		/ -SAM...
	ADD PREVSM	/FROM PREV. SAM
	APO		/REACH CRITN?
	JMP INCRTN	/NO.
	LDA
	SEC		/SAVE TIME & SAM
	STC SAVSEC	/SEC.
	LDA
	MSEC
	STC SAVMS	/MSEC.
	LDA
	PREVSM		/PEAK SAM...
	STC PKSMSV	/SAVED
WIDTH1,	LDA I
	1
	ADM
	PVRCTR		/+1 TO POVER CTR
	SAE
	WIVAL		/PVRCTR=WIVAL?
	JMP .+4		/NO.
	LDA		/YES.BRITN VALLEY.
	PDCTR
	STC VALWID
	LDA
	HFPKFL		/HALF-PEAK FLAG SET?
	AZE
	JMP VALLEY	/YES.
	LDA		/NO.
	PKSMSV		/PEAK SAM
	SCR 1		/DIV. BY 2...
	COM
	ADD SAMPLE	/>SAM?(I.E., BELOW
	APO I		/HALF-DECAY POINT?)
	JMP INCRTN	/NO.
	LDA		/YES.CHECK WIDTH
	PDCTR		/WIMIN>PDCTR?
	COM
	ADD WIMIN	/I.E., TOO NARROW?
	ADA I
	1		/COUNTERACT NEG 0
	APO I
	JMP ABORT	/YES.NARROW.CLEAR.
	LDA		/NO.
	PDCTR		/PD CTR > WIMAX?
	COM
	ADD WIMAX
	ADA I
	1		/COUNTERACT -0
	APO		/(TOO WIDE?)
	JMP ABORT	/YES. CLEAR
	LDA I		/NO.
	1
	STC HFPKFL	/SET HALF PEAK FLAG
	JMP INCRTN
VALLEY,	LDA
	STOFLG		/STORE FLAG SET?
	AZE
	JMP INCRTN	/YES
	LDA		/NO.
	SAMPLE
	COM		/-SAM
	ADD PREVSM	/+PREVIOUS SAM
	ADD VLCRIT
	APO I		/REACH CRITN?
	JMP INCRTN	/NO.
	LDA		/YES. VALLEY FOUND.
	PVRCTR		/(PVRCTR>VALLEY WIDTH?)
	COM
	ADD WIVAL	/NUM.SAMS PKOVR TO VALLEY
	APO		/TOO WIDE?
	JMP ABORT	/YES.
	LDA
	PREVSM		/LOWEST POINT
	COM
	ADD PKSMSV	/PK-VALLEY=AMPL.
	STC SAVAMP	/SAVE AMPLITUDE.
	IOB	
	MONSET 2	/SET MONO & LATCH 2
	SNS 0		/SNS 0 DISABLE STORE
	JMP STORE
SRETRN,	LDA I
	1200
	SNS I 0		/(IF SNS 5 SET...
	COM		/...INVERT FLAG)
	STC D1+2	/DISP.STORE FLAG
	IOB		/RESET LATCH 2
	RESET 2
	LDA I
	1
	STC STOFLG	/SET STORE FLAG
INCRTN, LDA
	SAMPLE
	STC PREVSM	/SAVE SAM
	JMP RETRN1	/RETURN
ABORT,	IOB		/SET MONO 3 (ABORT)
	MONSET 3
	NOP		/KLUGE HRDWR BUG
	LDA I
	-1100		/ABORT DISP INDICATOR...
	STA I DISPTR	/AT NEXT SAM
	LDA I
	1
	STC ABORFL	/SET ABORT FLAG
	IOB
	RESET 3		/RESET LATCH 3
	JMP LOOP
CLEAR,	CLR
	STC STOFLG	/CLR STORE FLAG
	STC HFPKFL	/CLR HALF PEAK FLAG
	ST54



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