File CYCLON

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

*20
	PMODE
/PROGRAM CONSTANTS, PAGE ZERO
	*40
C0077,	77
TEMP,	0
M215,	-215
M212,	-212
CHTABL,	2001		/2001=TEXT
BELL,	207
M377,	-377
M43,	-43
PLACE,	0		/TEXT POINTER
C7400,	7400
M20,	-20
MBLK,	0
TBLK,	0
CHSIZE,	0
FULL,	200
C1000,	1000
PWTABL,	PATRN-2		/AD-2 OF PW TABL
FIRST,	2000		/FINAL TEXT ADDR
CHAR,	0
M56,	-56
CHMASK,	MASKON+2
WARN,	4141		/WARN SIG PW
MON,	MONIT
LOCHAR,	0		/DISPLAY POINTER
LMHC,	0		/HC OF L MASK
HCWIND,	0		/HC OF WINDOW
RMHC,	0		/HC OF R MASK
C10,	10
M40,	-40
PSTART,	EPROG
MASKIT,	MASK
SHOW,	WINDOW
NTIME,	0
ONCE,	0
HOLD,	0
KLOCK,	4100		/MSEC CLOCK
KLOCKP,	5100		/HSEC CLOCK
ANALOG,	ANADIG
CHECK,	0
REM,	0
COUNT,	0
M200,	-200
C400,	400
M1777,	-1777
LASTCH,	0
C40,	40
/DISPLAY PARAMETERS
WINDSP,	1		/CHAR SPACING
MASKSP,	2		/MASK-CHAR "
BOUND,	-700		/-R DISP BORDER
INSERT,	0		/NO EXTRA BLANKS
IHORCO,	0		/LEFTMOST HC
VERCO,	0		/VERT DISP COOR
SLIDE,	1		/NEW CHARS/FRAME
LSIZE,	-6		/-SIZE OF L MASK
RSIZE,	-6		/-SIZE OF R MASK
WSIZE,	-3		/-WINDOW WIDTH
MOVE,	0		/DELTA HC/FRAME
/TIME PARAMETERS
DISPON,	-24		/-MSEC/FRAME ON
DISPOF,	-50		/-MSEC/FRAME OFF
PAUSET,	-310		/-HSEC BET STRNG
WARNON,	-144		/-HSEC E-LINE SG
OFFMAX,	1000		/MAX OFF TIME
RSAMP,	144		/MSEC/SAMPLE
/SUBR DOUBLES AC IF FULL-SIZE CHAR
DOUBLE,	0
	DCA HOLD	/SAVE AC
	TAD CHSIZE
	SZA CLA		/RETURN IF ZERO
	JMP .+3
	TAD HOLD
	JMP I DOUBLE
	TAD HOLD
	CLL RAL		/DOUBLE
	JMP I DOUBLE
/SUBR SETS HCS RELATIVE TO LMHC
SETUP,	0
	CLA
	TAD LSIZE
	CIA
	CLL RTL
	TAD MASKSP
	JMS DOUBLE
	TAD LMHC
	DCA HCWIND
	TAD WSIZE
	DCA TEMP
	SKP
	TAD WINDSP
	TAD C10
	ISZ TEMP
	JMP .-3
	TAD MASKSP
	JMS DOUBLE
	TAD HCWIND
	DCA RMHC
	JMP I SETUP
/SPECIAL INITIALIZATION
	*2000
	2200		/STOPS TEXT LOSS
/PROGRAM MONITOR
	*200
MONIT,	CLA
	TLS
	TAD BELL	/ASCII CODE BELL
	TSF
	JMP .-1
	TLS		/RING BELL
	CLA
	LINC
	LMODE
	ADD TBLK	/DIS LAST TBLK
ACT,	HLT
	CLR
	SNS I 5
	JMP SHOWIT	/SW 5=DISPLAY
	SNS I 4
	JMP SAVEIT	/SW 4=SAVE TEXT
	SNS I 3
	JMP FINDIT	/SW 3=TEXT-TAPE
	SNS 2
	JMP ACT		/NO SW=HLT AGAIN
	SNS 1		/TT INPUT:ADD ON
	JMP START-1	/TT INPUT: NEW
	PDP
	PMODE
	JMP READ-1
	LMODE
	PDP
	PMODE
START,	TLS
	TAD CHTABL	/START AD D TEXT
	DCA PLACE
	KCC
READ,	KSF
	JMP .-1
	KRB
	TSF
	JMP .-1
	TLS		/ECHO CHAR
	DCA TEMP	/SAVE CHAR
	TAD TEMP
	TAD M200	/CHECK FOR L/T
	SNA CLA
	JMP READ	/SKIP L/T
	TAD TEMP
	SNA
	JMP READ	/SKIP NO PUNCH
	TAD M215	/CHECK FOR CR
	SNA CLA
	JMP READ	/SKIP CR
	TAD TEMP
	TAD M212	/CHECK FOR LF
	SNA CLA
	JMP READ	/SKIP LF
	TAD TEMP
	TAD M377	/RUBOUT?
	SZA CLA
	JMP .+5	
	STA		/RUBOUT:AC=-1
	TAD PLACE
	DCA PLACE	/DECR TEXT AD
	JMP READ	/REREAD LAST CH
	TAD TEMP
	AND C0077	/STRIP ASCII
	DCA TEMP
	TAD TEMP
	DCA I PLACE	/STORE CHAR
	TAD TEMP
	TAD M43
	SZA CLA		/END OF TEXT?
	JMP .+4	
	TAD PLACE
	DCA I FIRST     /SAVE LAST LOC
	JMP MONIT	/DONE
	ISZ PLACE	/INCR TEXT AD
	JMP READ
	HLT		/OUT OF ROOM
/MAG TAPE I/O SEGMENT
	LMODE
FINDIT,	LDA I 0		/MODE INSTR=
	RDC U		/READ TAPE 1
	JMP LAB
SAVEIT,	LDA I 0		/MODE INSTR=
	WRC U		/WRITE TAPE 1
LAB,	STC MODE	/STORE MODE INST
	STC ONCE	/ONCE THRU FLAG
	LDF 1		/LINC DF = 1
	LDA I 0
	4000	
	STC MBLK	/MEM BLK=4
	HLT
	RSW		/OFF R SW GET
	STC TBLK	/INIT TAPE BLK
FIX,	ADD TBLK
	ADD MBLK	/FORM 2ND TAPE
	STC MODE+1	/INSTR
MODE,	0		/RDC-WRC 1
	0		/2ND TAPE INSTR
	PDP
	PMODE
	CLA
	TAD ONCE
	SZA CLA		/DO ONLY ONCE
	JMP CONT
	TAD I FIRST	/GET ADD OF
	DCA TEMP       /LAST TEXT
	TAD LAB+2	/SET LDF=1 FOR
	DCA HOKEY	/LATER USE
	TAD TEMP
	AND C7400	/HOW MANY I/O
	CLL RTR		/BLOCKS MORE?
	CLL RTR
	CLL RTR
	TAD M20
	CLL RTR		/LEAVE 0-13 BLKS
	SNA
	JMP CONT+2	/DONE: RETURN
	CIA
	DCA TEMP	/ISZ LOOP
	ISZ ONCE	/SET ONCE FLAG
	JMP CLAW
CONT,	ISZ TEMP       /ANOTHER BLK?
	JMP CLAW
	TAD I FIRST
	DCA PLACE       /SET TEXT-END
	JMP  MONIT	/DONE: RETURN
CLAW,	TAD C1000
	TAD MBLK	/NEXT MBLK
	SZA		/RESET IF MBLK=0
	JMP .+3
	TAD LAB+4	/MBLK=4
	ISZ HOKEY	/INCR LDF
	DCA MBLK	/NEW MBLK
	ISZ TBLK	/NEW TBLK
	LINC
	LMODE
HOKEY,	0		/LDF N INSTR
	JMP FIX		/NEXT I/O
/MASKING SUBROUTINE
	PMODE
MASK,	0		/HOLDS RET ADR
	CLA
	DCA ONCE	/LEFT FIRST
	TAD LSIZE	/-LEFT M SIZE
	SMA		/ANY L M AT ALL?
	JMP RIGHT
	DCA NTIME	/SET UP ISZ LOOP
	TAD LMHC	/HC OF L MASK
	DCA 1		/LINC BETA-1 REG
	TAD VERCO	/VERT. COOR.
MASKON,	LINC
	LMODE
	DSC I 0		/DISP MASK PW
	7777		/FOUND HERE
	PDP
	PMODE
	ISZ NTIME	/MORE MASK AREA?
	JMP MASKON	/MORE MASK 
	CLA
	TAD ONCE	/DONE RIGHT YET?
	SZA
	JMP I MASK	/RETURN
RIGHT,	ISZ ONCE
	TAD RSIZE	/-R MASK SIZE
	SMA
	JMP I MASK	/NO R MASK
	DCA NTIME
	TAD RMHC
	JMP MASKON-2
/WINDOW DISPLAY SUBROUTINE
WINDOW,	0		/HOLDS RET AD
	CLA
	TAD WSIZE
	DCA NTIME	/SET UP ISZ LOOP
	TAD HCWIND	/PUT WINDOW HC 
	DCA 1		/INTO LINC B-2 
	TAD LOCHAR	/AD-1 OF FIRST
	DCA 10		/INTO AUTO IND
WNEXT,	TAD I 10	/GET NEXT CHAR
	DCA CHAR
	TAD CHAR
	TAD M56		/END OF STRING?
	SNA CLA
	JMP I WINDOW	/RETURN
	TAD CHAR
	CLL RAL		/DOUBLE CODE
	TAD PWTABL	/AD PW TABLE
	DCA 2		/INTO LINC B-2
	TAD VERCO	/VERT. CO.
	LINC 
	LMODE
	DSC 2		/DISPLAY PWS
	DSC I 2
	PDP
	PMODE
	ISZ NTIME	/DONE?
	JMP .+2
	JMP I WINDOW	/RETURN
	CLA
	TAD WINDSP
	JMS DOUBLE
	TAD 1
	DCA 1		/INCR H.C.
	JMP WNEXT	/DO NEXT CHAR
/SUBR SAMPLES A-D CHAN 10:EVERY -RSAMP
/TIMES PUTS AC=1 IF ABOVE 200, AC=-1 IF
/BELOW -200, AC=0 OTHERWISE
SAMPLE,	0
	LINC
	LMODE
	SAM 10
	PDP
	PMODE
	TAD M200
	SMA
	JMP .+6
	TAD C400
	SMA CLA
	JMP I SAMPLE	/NEITHER:AC=0
	STA		/LOW:AC=-1
	JMP I SAMPLE
	CLA IAC		/HIGH:AC=1
	JMP I SAMPLE
/SUBR INCR OR DECR DISPOF ACCORDING 
/TO OUTPUT OF SAMPLE
ANADIG,	0
	CLA
	JMS SAMPLE
	SNA
	JMP I ANADIG	/NO CHANGE
	SMA CLA
	JMP POS
	STA
	TAD DISPOF
	DCA CHECK	/INCREASE DISPOF
	TAD OFFMAX	/PAST LIMIT?
	TAD CHECK
	SPA CLA
	JMP I ANADIG	/NO CHANGE
	TAD CHECK
	DCA DISPOF
	JMP I ANADIG
POS,	ISZ DISPOF	/DECREASE DISPOF
	JMP I ANADIG
	STA
	DCA DISPOF	/NO CHANGE
	JMP I ANADIG
/DISPLAY SEGMENT
	*600
	LMODE
SHOWIT,	LDA I 0
	2000		/INIT TEXT AD-1
	STC 12
WAIT,	SNS I 1		/HALT SW1 OFF
	JMP NOSTOP
	PDP
	PMODE
	TAD DISPON
	TAD DISPOF
	CIA		/FRAME TIME
	HLT		/PAUSE,DISPLAY
	CLA
	LINC
	LMODE
NOSTOP,	SNS I 0		/CHAR SIZE: SW0
	ADD FULL
	ESF
	STC CHSIZE	/SET CHAR SIZE
	PDP
	PMODE
	TAD IHORCO	/SET INITIAL HC
	DCA LMHC
	CLLR		/CLEAR CLOCK
	TAD KLOCKP	/
	CLLR		/LOAD CLOCK
	JMS SETUP	/SET HCS
/LOAD TEXT BUFFER WITH NEXT SENTENCE, 
/EXTRA BLANKS AS PER INSERT
	TAD PSTART
	DCA 11		/FIRST BUF LOC
	TAD PSTART
	DCA LOCHAR
	TAD WSIZE
	DCA NTIME
	TAD C40
	JMS BUFFER	/LEADING BLANKS
	ISZ NTIME
	JMP .-3
NEXTCH,	TAD I 12	/NEXT TEXT CHAR
	DCA CHAR
	TAD CHAR
	TAD M40
	SZA CLA		/BLANK?
	JMP .+4
	TAD INSERT	/NO. EXTRA BLNKS
	CMA		/+TEXT BLANK
	JMP NEXTCH-5	/ADD BLANKS
	TAD CHAR
	JMS BUFFER	/STORE CHAR
	TAD CHAR
	TAD M56
	SNA CLA		/END SENTENCE?
	JMP PAUSE
	TAD CHAR
	TAD M43
	SZA CLA		/LAST SENT?
	JMP NEXTCH
	JMP I MON	/DONE DISPLAYING
/SUBR STORES CHAR AND CHECKS FOR ROOM
BUFFER,	0
	DCA I 11	/STORE IN NEXT
	TAD M1777
	TAD 11
	SPA CLA		/MORE ROOM?
	JMP I BUFFER
	HLT		/NOT USED:HOPE
PAUSE,	TAD 11
	CIA
	DCA LASTCH	/SAVE LAST POSN
	JMS I MASKIT	/MASK THRU PAUSE
	CLCA		/CLOCK READING
	TAD PAUSET
	SPA CLA		/DONE PAUSING?
	JMP .-4
GO,	TAD DISPON	/FRAME STARTS
	TAD DISPOF
	TAD REM
	DCA COUNT	/SAMPLE INTERVAL
	TAD COUNT
	TAD RSAMP
	SMA		/SAMPLE TIME?
	JMP .+4
	DCA COUNT
	JMS I ANALOG	/READ A-D CHAN
	JMP .-6		/TRY AGAIN
	CIA
	TAD RSAMP
	CIA
	DCA REM		/FOR NEXT SAMP T
	CLLR
	TAD KLOCK
	CLLR
	JMS I MASKIT
	JMS I SHOW
	CLCA
	TAD DISPON
	SPA CLA
	JMP .-5
	CLLR
	TAD KLOCK
	CLLR
	JMS I MASKIT
	CLCA
	TAD DISPOF
	SPA CLA
	JMP .-4
	TAD MOVE
	JMS DOUBLE	/DOUBLE IF FULL
	TAD LMHC
	DCA LMHC	/INCR LMHC
	JMS SETUP	/NEW HCS
	TAD SLIDE
	TAD LOCHAR
	DCA LOCHAR	/NEW CHARS
	TAD LOCHAR
	TAD LASTCH
	SPA CLA		/PAST END?
	JMP .+3
	LINC
	LMODE
	JMP WAIT
	PMODE
/ENOUGH ROOM LEFT ON DISP LINE?
	TAD RMHC
	TAD BOUND
	SPA CLA		/HC PAST BOUND?
	JMP GO		/O.K.:NEXT FRAME
	TAD WARN	/PW FOR END-
	DCA I CHMASK	/LINE SIGNAL
	TAD IHORCO
	DCA LMHC	/RESET
	CLLR
	TAD KLOCKP	/LOAD CLOCK
	CLLR
AGAIN,	JMS I MASKIT	/WARN SIGNAL
	CLCA		/CLOCK TIME
	TAD WARNON
	SPA		/DONE WARNING?
	JMP I BACK
	STA		/RESTORE MASK PW
	DCA I CHMASK
	JMS SETUP	/RESET HCS
	JMP I IGO	/NEXT FRAME
IGO,	GO
BACK,	AGAIN
/PATTERN WORDS FOR CHAR DISPL.
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		/?
EPROG,	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