File QCSP2

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

*20
/  QUICK AND CLEAN SPIKE ANALYSIS
/
/SAVES -MSEC,SEC, PK AMPLITUDE, VALLEY AMPLITUDE,
/AND TIME (IN 200 MICROSECOND UNITS) BETWEEN
/PEAK AND VALLEY.
/
/ZEROES WORD FOLLOWING DATA, AND TO END OF BLK.
/IF LAST SPIKE FILLS BLK,THE WHOLE SPIKE IS ZEROED.
/
/
/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.
/XSL 13 IS DISABLE VOLTAGE WINDOW LINES.
/        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
	PDP
	PMODE
	JMS I PTYPE	/TYPE:HEADER,DATE?,TBLK?
	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   "
/
PTYPE,	HEADER		/ADDR.HEADER TYPEOUT
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 WAIT1
/
	*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
ALLBLK,	0		/TBLK+ADDBLK
/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
/
/TABLE OF CONSTANTS
	*360
LASTDF,	37		/REPLACED BY CORE
MTBLK,	000
LASTBK,	777
TEMRY,	0		
CORE,	37		/MEMORY SIZE
XSL5FL,	0		/SENSE LINE 5 FLAG
/
/
	*400
	JMP START
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
	SET I FRACTN	/ZERO FRACTN
	-5
	CLR
	STC MSEC	/ZERO MSEC
	STC SEC		/ZERO SEC
	LDA I
	0300		/FULL-SIZE CHAR,FAST SAM
	ESF
	PDP
	PMODE
CLOCK,	CLA		/ZERO CLOCK,SET RATE
	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
/
/ROUTINE TO DISPLAY VOLTAGE WINDOW
/
	XSK I 7		/7=DISP CTR
	JMP CHOICE
	SXL I 13	/XSL 13 HIGH?
	JMP CHOICE	/YES. DONT DISPLAY.
	SET I 7		/NO. DISPLAY.
	-20		/DISP EVERY 20 PASSES
	SET I 4
	320		/LEFT MARGIN
LINE,	LDA I
	1200		/MAX VOLTAGE
	DIS I 4
	XSK I 4
	XSK I 4
	COM		/MIN VOLTAGE
	DIS I 4
	XSK I 4
	XSK I 4
	LDA
	4
	ADA I
	-520		/-RIGHT MARGIN
	APO		/FINISHED?
	JMP LINE	/NO
	JMP CHOICE	/YES.RETURN
/
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
	XSK DATSTO	/END ON FULL DF?
	JMP ENDNF	/NO. NOT FULL.
	IOB		/YES.
	6214		/CORRECT FOR DF INCR
	ROR 1
	ADA I
	640-1		/DECREMENT DF
	STC .+1
	LDF		/REPLACED
ENDNF,	IOB		/END NOT-FULL
	6214		/READ DF
	ROR 1
	ADA I
	-2		/BEGAN IN DF 2, SO -2
	MUL I		/...X4...
	4
	STC ADDBLK	/+ NEW ONES:
END1BK,	LDA I
	-2376
	ADD DATSTO	/DATA PTR
	APO I		/DATSTO <OR= 2376?
	SKP
	JMP CLR1BK	/YES
	LDA		/NO
	DATSTO
	SAE I
	2377		/DATSTO=2377?
	JMP END2BK	/NO. DATSTO>2377
	SET I DATSTO	/YES. ZERO LAST SPIKE.
	2372
/
/NOTE: IF DATA EXTEND TO LAST WORD IN BLK, 
/THE LAST 3-WORD SPIKE IS ZEROED.
/THUS AT LEAST ONE ZERO FOLLOWS DATA.
/
CLR1BK,	LDA I		/ZERO TO END OF BLK
	2377
	STC ENDCLR
	LDA I		/ADD ONE BLK
	1
	JMP ADDBLK-1
END2BK,	LDA I
	-2776
	ADD DATSTO
	APO I		/DATSTO <OR= 2776?
	SKP
	JMP CLR2BK	/YES.
	LDA		/NO
	DATSTO
	SAE I
	2777		/DATSTO=2777?
	JMP END3BK	/NO. DATSTO>2777
	SET I DATSTO	/YES. ZERO LAST SPIKE.
	2772
CLR2BK,	LDA I		/CLR TO 2777
	2777
	STC ENDCLR
	LDA I
	2		/ADD 2 BLKS
	JMP ADDBLK-1
END3BK,	LDA I
	-3376
	ADD DATSTO
	APO I		/DATSTO <OR= 3376?
	SKP
	JMP CLR3BK	/YES
	LDA 		/NO. DATSTO=3377?
	DATSTO
	SAE I
	3377
	JMP END4BK	/NO. DATSTO>3377
	SET I DATSTO	/YES.DATSTO=3377
	3372		/ZERO LAST SPIKE
CLR3BK,	LDA I		/CLR TO END OF BLK
	3377
	STC ENDCLR
	LDA I
	3		/ADD 3 BKS
	JMP ADDBLK-1
END4BK,	XSK DATSTO	/STOPPED ON FULL DF?
	JMP .+3		/NO
	SET I DATSTO	/YES. ZERO LAST SPIKE.
	3772
 	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
	BCL I
	7000		/TBLK ONLY
	STA
	ALLBLK		/TBLK+ADDBLK
	JMP DECPRT
	JMP SPACE
	CLR
	STA I DATSTO
	LDA
	DATSTO
	SAE I		/CLR TO END OF 
ENDCLR,	0000		/(REPLACED)
	JMP .-6		/DESIGNATED BLK.
	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
	STC ABORFL	/CLR ABORT FLAG
	STC PDCTR	/CLR PD.CTR.
        STC PVRCTR	/CLR POVER CTR
	JMP LOOP
STORE,	IOB
	MONSET 0	/SET MONO & LATCH 0
	LDA
	SAVMS
	COM
	STA I DATSTO	/STORE -MSEC AT PK
	XSK DATSTO	/END OF DF?
	SKP
	JMP INCRDF	/YES.
        LDA		/NO.
	SAVSEC
	STA I DATSTO 	/STORES SECONDS AT PK
	XSK DATSTO
	SKP
	JMP INCRDF
	LDA
	PKSMSV		/PEAK
	STA I DATSTO	/STORE PK AMPLITUDE
	XSK DATSTO
	SKP
	JMP INCRDF
	LDA
	PREVSM		/VALLEY
	APO		/NEGATIVE?
	COM		/YES.COMPLEMENT.
	STA I DATSTO	/STORE ABSOLUTE VALUE...
	XSK DATSTO	/OF VALLEY AMPLITUDE.
	SKP
	JMP INCRDF
	LDA
	PVRCTR
	STA I DATSTO	/STORE PK-VAL INTERVAL.
	XSK DATSTO
	SKP
	JMP INCRDF
	IOB
	RESET 0		/RESET LATCH 0
	JMP SRETRN
INCRDF,	CLR
	IOB
	6214		/READ DF
	ROR 1
	SAE 
        LASTDF	        /LAST DF?
	SKP		/NO
	JMP WRITE	/YES.WRITE ON TAPE.
	ADA I
	641		/INCR. DF
	STC .+1
	LDF		/REPLACED
	JMP 0		/RETURN TO CALL
HALTCP,	CLR
	ATR		/RELAYS OFF
	LDA
	SEC		/SEC.CTR. TO AC
	HLT
	LDA I
	0040		/RELAY 0 ON
	ATR
	JMP LOOP	/RESTART
/
STOPDA,	LDA		/STOP DATA INTAKE
	SEC
	SXL 5		/REMOTE WRITE ENABLE
        HLT		/SAFETY STOP
	CLR		/NO. ZERO...
	STA I DATSTO	/...TO END OF DF
	XSK DATSTO
	JMP .-2
	IOB
	6214		/READ DF
	ROR 1
	STC LASTDF	/DF TO LASTDF
WRITE,	LDF 2		/BEGIN WRITE,DF2
WRITMO,	SET I 2		/COUNTER OF DFS
	-4
	LDA
	MTBLK
	BCL I		/CUT M OFF MTBLK
	7000
	ADA I
	4000		/M=4
	STA
	MTBLK		/SAVE NEW MTBLK
WRINCR,	LDA
	MTBLK
	STC .+2
	WRC 10		/WRITE ON UNIT 1
	4000		/REPLACED
	LDA I
	1001		/INCR M AND T BLKS
	ADM
	MTBLK
	XSK I 2		/4 MBLKS WRITN?
	JMP .+5		/NO
	LDA I		/YES
	-1
	ADM		/COUNTERACT 1S COMPL.
	MTBLK
	BCL I
	7000		/TBLK ONLY
	SAE
	ALLBLK		/LAST OF DATA WRITN?
	SKP		/NO
	JMP WRITST	/YES.STOP WRITING.
	SAE
	LASTBK		/LAST BLK ALLOWED?
	SKP		/NO
	JMP WRITST	/YES.STOP WRITING.
	XSK 2		/4 BLKS (1 DF) WRITN?
	JMP WRINCR	/NO
	CLR		/YES.READ DF.
	IOB
	6214
	ROR 1
	SAE		/LAST DF WRITN?
	LASTDF
	JMP INCR04	/NO
WRITST, JMP SPACE	/YES.STOP WRITING
	JMP SPACE
	LDA		/PRINT LAST
	MTBLK		/...TBLK NUM,
	ADA I
	-1
	JMP DECPRT
	JMP LFCR
	LDA 
	CORE
	STC LASTDF	/RESET LASTDF
	JMP START	/..& START AGAIN
INCR04, ADA I
	641		/INCR. DF
	STC .+1
	LDF		/REPLACED
	JMP WRITMO
/
/DISPLAY MESSAGES
/
MESSG1,	SET I 4		/DSPLY "TBLK OK?"
	-1700		/CTR FOR TIME LAPSE
	SET I 2		/PTR
	TBLKOK-1
	SET I 3
	-8		/NUM. OF CHARS
	JMP DISCHR	/DSPLY CHARS
	XSK I 4		/CTR=0?
	JMP MESSG1+2	/NO
	HLT		/YES.SAFETY STOP
	JMP CHECK5
MESSG2,	SET I 2		/DSPLY "CLEAR SNS 5"
	CLRSNS-1	/PTR
	SET I 3
	-13		/NUM. OF CHARS.
	JMP DISCHR
	JMP CHECK5
MESSG3,	SET I 2		/DSPLY "READY XSL 1"
	READY-1		/POINTER
	SET I 3		/NUM.OF CHARS.
	-13
	JMP DISCHR
	JMP WAIT1+3
MESSG4,	SET I 2		/DSPLY "READY"
	READY-1
	SET I 3
	-5		/NUM.OF CHARS.
	JMP DISCHR
	JMP WAIT0
DISCHR,	SET I 1		/HOR
	200
	LDA I		/VERT
	0005
	DSC I 2		/2 IS PTR FROM CALL
	DSC I 2
	XSK I 1
	XSK I 1
	DJR
	XSK I 3		/CTR FROM CALL
	JMP .-6
	JMP 0		/RETURN
NUMTAB,	4136		/0
	3641
	2101		/1
	0177
	4523		/2
	2151
	4122		/3
	2651
	2414		/4
	0477
	5172		/5
	0651
	1506		/6
	4225
	4443		/7
	6050
	5126		/8
	2651
	5122		/9
	3651
/
DECPRT,	BCL I
	7000
	PDP		/...CONV. TO DECIMAL
	PMODE
	JMS I PDECPR
	LINC
	LMODE
	JMP 0		/RETURN TO CALL
SPACE,	LDA I
	240		/TYPE A SPACE
	PDP
	PMODE
	TLS
	TSF
	JMP .-1
	LINC
	LMODE
	JMP 0
LFCR,	PDP		/LINC LINEFEED-
	PMODE		/CARRIAGE RETRN
	JMS I PLFCR
	LINC
	LMODE
	JMP 0
PLFCR,	PCRLF		/ADDR. OF HANDLER
/
READY,	4477		/R
	3146
	4577		/E
	4145
	4477		/A
	7744
	4177		/D
	3641
	0770		/Y
	7007
	0000		/SPACE
	0000
	1463		/X
	6314
	5121		/S
	4621
	0177		/L
	0301
	0000		/SPACE
	0000
	2101		/1
	0177
TBLKOK,	4040		/T (TAPE TBLK OK?)
	4077
	5177		/B
	2651
	0177		/L
	0301
	1077		/K
	4324
	0000		/SPACE
	0000
	4177		/O
	7741
	1077		/K
	4324
	4020		/?
	2055
CLRSNS,	4136		/C (CLEAR SNS 5)
	2241
	0177		/L
	0301
	4577		/E
	4145
	4477		/A
	7744
	4477		/R
	3146
	0000		/SPACE
	0000
	5121		/S
	4651
	3077		/N
	7706
	5121		/S
	4651
	0000		/SPACE
	0000
	5172		/5
AAENDI,	0651
/
/
	PMODE
	*2020
/TYPE HEADER ROUTINE
HEADER,	0
	JMS PCRLF
	CLA CLL
	TAD ADRMS1	/MSG.1:HEADING
	JMS TYPSTG	/TYPE IT
	JMS PCRLF	/CR-LF
	CLA CLL
	TAD ADRMS2	/MSG 2:DATE?
	JMS TYPSTG	/TYPE IT
	JMS PCRLF	/CR-LF
	JMS PCRLF	/CR-LF
	CLA CLL
	TAD ADRMS3	/MSG.3:TBLK NUM?
	JMS TYPSTG	/TYPE IT
	JMS I GETKBD	/GET TBLK
	JMP I HEADER	/EXIT
ADRMS1,	TYPMS1
ADRMS2,	TYPMS2		/ADDRESS OF MESSAGES
ADRMS3,	TYPMS3
GETKBD,	SICONV
/
/
PCRLF,	0		/CR-LF ROUTINE
	CLA CLL
	TAD K15		/CR
	TLS
	TSF
	JMP .-1
	CLA
	TAD K12		/LF
	TLS
	TSF
	JMP .-1
	JMP I PCRLF
K15,	15
K12,	12
/
/DIGITAL 8-20-U
/CHARACTER STRING TYPE-OUT
/CALL WITH STRING ADDRESS IN
/C(AC); ALL CODES MAY BE DEVELOPED
/RETURN FOLLOWING THE JMS
/
	PMODE
/
TYPSTG,   0
          DCA TEMQ            /STORE INITIAL ADDRESS
          DCA FLAG            /CLEAR FLAG
TSCC1,    TAD I TEMQ          /PICK UP DATA
          RTR                 /ROTATE 6 BITS RIGHT
          RTR
          RTR
          JMS TSCC2           /TYPE FIRST CHARACTER
          TAD I TEMQ          /PICK UP DATA
          JMS TSCC2           /TYPE SECOND CHARACTER
          ISZ TEMQ            /INCREMENT STORAGE ADDRESS
          JMP TSCC1           /GO BACK FOR MORE
TSCC2,    0
          AND K77             /MASK OFF 6 BITS
          DCA TEMR            /SAVE CHARACTER
          TAD FLAG            /TEST "SPECIAL" FLAG
          SZA CLA
          JMP TYPSP           /SET: TYPE SPECIAL
          TAD TEMR            /NO: REGULAR CHARACTER
          SNA                 /IS IT ZERO?
          JMP .+3             /YES: SET FLAG
TYPAT,    JMS PRINT           /NO: PRINT IT
          JMP I TSCC2         /RETURN
          ISZ FLAG            /SET "SPECIAL" FLAG
          JMP I TSCC2         /EXIT
TYPSP,    DCA FLAG            /CLEAR "SPECIAL" FLAG
          TAD TEMR            /TEST FOR "0"
          CIA
          SNA
          JMP TYPAT           /0: TYPE ""
          IAC                 /TEST FOR 01
          SNA CLA
          JMP I TYPSTG     /YES: EXIT CODE
          TAD SKIPMA          /ALTER INSTRUCTION
          DCA SWITCH          /TO BE "SMA"
          TAD TEMR            /TYPE CHARACTER
          JMS PRINT
          TAD SKIPPA          /ALTER INSTRUCTION
          DCA SWITCH          /TO BE "SPA"
          JMP I TSCC2         /RETURN
PRINT,    0
          TAD M40             /COMPARE WITH 40
SWITCH,   SPA                 /OR SMA FOR SPECIAL CODES
          TAD C100
          TAD C240
          TLS
          TSF
          JMP .-1
          CLA
          JMP I PRINT
/CONSTANTS AND TEMPORARY REGISTERS
TEMQ,     0                   /CONTAINS STRING ADDRESS
TEMR,     0                   /CONTAINS 6 BIT CHARACTER
FLAG,     0                   /"SPECIAL" FLAG
K77,      77
M40,      -40
C100,     100
C240,     240
SKIPMA,   SMA
SKIPPA,   SPA
/
	*2200
/  28UASCII  SICONV (MOD BY FH&SK)
/SINGLE PRECISION DECIMAL INPUT FROM KEYBOARD
/CALLING SEQUENCE: JMS SICONV
/ACC IGNORED, RETURN WITH BINARY WORD IN ACC
/
	PMODE
/
SICONV,   0
          CLA CLL
          TAD SISET1+1         /INITIALIZE PROGRAM SWITCHES
          DCA SICTRL
          TAD SISET1+1
          DCA SIXSW1
          DCA SIHOLD
          DCA SINEG1            /CLEAR NEGATIVE SWITCH
          JMP SINPUT
SIPROC,   DCA SISAVE
          TAD SISAVE            /STORE AND THE PROCESS CHARACTER
          TAD SIRBUT
          SNA                   /IS IT A "BACK-ARROW" (IE. ERASE) KEY
          JMP SICONV+1         /YES, REINITIALIZE
          TAD SIM260
          SPA                   /IS IT LESS THAN 260 (IE. "0")
          JMP SICTRL            /YES. TRANSFER TO SEE WHAT CHAR. IT IS
          TAD SIM271            
          SMA SZA CLA           /IS IT GREATER THAN 271 (IE. "9")?
          JMP SICTRL            /YES, TRANSFER TO SEE WHAT CHARACTER IT 
SIXSW1,   CLA CLL               /NO, FIRST CHARACTER WAS A DECIMAL DIGIT
          TAD .+4               /CLOSE SWITCH TO GO TO "SINMBR" NEXT
          DCA .-2
          TAD SINMBR-1         /SET SWITCH TO SENSE TERMINATING CHAR.
          DCA SICTRL
          JMP SINMBR
SICTRL,   CLA CLL               /CONTINUE CHECKING
          TAD SISAVE
          TAD SIMSPC
          SNA                   /IS IT A SPACE?
          JMP SISET1+1         /YES, SET SWITCH TO SENSE TERM. CHAR.
          TAD SIMPLS            
          SNA                   /IS IT A "PLUS"?
          JMP SISET1+1         /YES, SET SW TO SENSE TERM. CHAR.
          TAD SIMMNS
          SNA CLA               /IS IT A MINUS?
          JMP SISET1            /YES, SET NEGATIVE XSWITCH AND TERM SW.
          JMP SIEND             /NO, IT WAS A TERMINATING CHAR.
SINMBR,   TAD SIHOLD            /MULTIPLY CURRENT ASSEMBLED NUMBER BY 10
          CLL RTL
          TAD SIHOLD
          RAL
          DCA SIHOLD
          TAD SISAVE            /PICK UP CURRENT DIGIT
          AND SIMASK            /MASK OFF THE HIGH ORDER BITD
          TAD SIHOLD            /ADD TO ASSEMBLED NUMBER
          DCA SIHOLD            /STORE BACK IN  SIHOLD
SINPUT,   KSF        /INPUT ROUTINE
          JMP .-1
          KRB
          TLS
          JMP SIPROC
/TERMINATING ROUTINE
SIEND,    CLA CLL
          TAD SINEG1
          RAR                   /PUT NEGATIVE SWITCH INTO LINK
          TAD SIHOLD
          SZL                   /IS THE LINK "1"?
          CMA IAC               /YES, NUMBER NEGATIVE. COMPLEMENT
          JMP I SICONV          /RETURN.
SISET1,   ISZ SINEG1            /SET NEGATIVE SWITCH
          CLA CLL
          TAD SINMBR-1         /CLOSE SW TO TRANSFER TO TERM.
          DCA SICTRL
          JMP SINPUT
/CONSTANTS AND VARIABLES
SIMASK,   17
SIRBUT,   -337                  /CODE FOR ERASE
SIM260,   57                    /NUMBER USED TO GENERATE CODE "260"
SIM271,   -11                   /NUMBER USED TO GENERATE CODE "271"
SIMSPC,   -240                  /CODE FOR SPACE
SIMPLS,   -13                   /NUMBER USED TO GENERATE CODE "253" (+)
SIMMNS,   -2                    /NUMBER USED TO GENERATE CODE "255" (-)
SISAVE,   0                     /STORAGE LOCATIONS
SIHOLD,   0
SINEG1,   0
/
/
/DIGITAL 8-22-U
/UNSIGNED DECIMAL PRINT
/CALL WITH NUMBER TO BE TYPED IN C(AC)
/RETURN TO LOCATION FOLLOWING THE JMS
OCDCPR,	0
          DCA VALUE           /SAVE INPUT
          DCA DIGIT           /CLEAR
          TAD CNTRZA
          DCA CNTRZB          /SET COUNTER TO FOUR
          TAD ADDRZA
          DCA ARROW           /SET TABLE POINTER
          SKP
          DCA VALUE           /SAVE
          CLL
          TAD VALUE
ARROW,    TAD TENPWR          /SUBTRACT POWER OF TEN
          SZL
          ISZ DIGIT           /DEVELOP BCD DIGIT
          SZL
          JMP ARROW-3         /LOOP
          CLA                 /HAVE BCD DIGIT
          TAD DIGIT           /GET DIGIT
          TAD K260            /MAKE IT ASCII
          TSF                 /OR TAD DIGIT
          JMP .-1             /   JMS TDIGIT(SEE 8-19-U)
          TLS                 /TYPE DIGIT
          CLA
          DCA DIGIT           /CLEAR
          ISZ ARROW           /UPDATE POINTER
          ISZ CNTRZB          /DONE ALL FOUR?
          JMP ARROW-1         /NO: CONTINUE
	TSF
	JMP .-1		/WAIT FOR FLAG
	JMP I OCDCPR	/RETURN TO CALL
ADDRZA,   TAD TENPWR
CNTRZA,   -4
TENPWR,   -1750               /ONE THOUSAND
          -0144               /ONE HUNDRED
          -0012               /TEN
          -0001               /ONE
K260,     260
VALUE,    0
DIGIT,    0
CNTRZB,   0
/
/
	PAGE
/
/TYPE OUT MESSAGE
/
TYPMS1,   TEXT Z     QUICK AND CLEAN SPIKE ANALYSIS (FIVE WORDS/SPIKE) V.1Z
	0001		/TERMINATOR
TYPMS2,	TEXT ZDATE OF EXPERIMENT: Z
	0001
TYPMS3, TEXT ZFIRST TBLK (IN DECIMAL)? Z
	0100		/TERMINATOR
/
/END OF MESSAGES
/
	LMODE
	SEGMNT 2
	*20
	LIF 0
	JMP 20		/ALLOW START 20



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