File DFORT

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

*20
	PMODE
	*6400
MLINES,	0		/2ND SCOPE PARAM
DLINES,	0
M212,	-212
M3,	-3
C207,	207
M233,	-233
M26,	-26
M35,	-35
C77,	77
C40,	40
C43,	43
	LMODE
ADBUFR,	BUFFER		/LMODE BUFFER(0)
	PMODE
/ENTRY FOR DIVERTED HISPEED PUNCH OUTPUT
DWRITE,	0
	IOF		/INTER. OFF
	DCA ASCII	/SAVE CHAR
	ISZ DWRITE	/INCR. RET.ADDR.
	TAD MLINES	/2ND SCOPE PARAM
	SNA CLA
	JMP I DWRITE	/=0:NO OUTPUT
	TAD ASCII
	TAD M212
	SNA
	JMP RETURN	/IGNORE LF
	TAD M3		/-215
	SNA
	JMP CR		/CAR. RET.
	TAD M26		/-243
	SNA
	JMP BLNK	/NO. SIGN=BLANK
	TAD M35		/-300
	SNA CLA
	JMP BLNK	/AT-SIGN=BLANK
	TAD ASCII
	AND C77
	SNA
	JMP RETURN	/IGNORE "OPEN"
	DCA ASCII	/STRIPPED
	JMS STORE	/PUT INTO BUFFER
RETURN,	ION		/INTER. BACK ON
	JMP I DWRITE
BLNK,	CLA
	TAD C40
	JMP RETURN-2
CR,	CLA
	TAD C43
	DCA ASCII
	JMS STORE	/43=CR CODE
	ISZ DLINES	/ROOM ANOTHER LN
	JMP RETURN
	TAD MLINES	/NO MORE LINES:
	SPA CLA	
	JMP FREEZE	/<0:FREEZE PROG.
/MAX. NO. LINES FILLED; SINCE 2ND PARAM
/>0, KEEP ONLY MOST RECENT LINES.
	LINC
	LMODE
	ADD 0		/SAVE L-REG 0
	STC SAVE0
	JMP PUSHBF	/DELETE TOP LINE
	PMODE
/ENTER "FREEZE" STATE WHEN EITHER MAX.
/NO. LINES DISPLAYED OR BUFFER FILLED.
/RING BELL AND FREEZE (WITH DISPLAY ON)
/UNTIL CTRL/S HIT ON TTY, THEN CLEAR
/BUFFER AND START ANEW.
FREEZE,	TAD C207
	TSF
	JMP .-1
	TLS		/RING BELL
FWAIT,	KSF		/TTY KEY YET?
	JMP FROZEN
	KRB
	TAD M233	/YES: CTRL/S?
	SNA CLA
	JMP THAW	/YES:RELEASE
FROZEN,	ION
	NOP		/DISPLAY INT.
	IOF		/HERE ONLY
	JMP FWAIT	/KEEP WAITING
THAW,	TAD MLINES
	SMA
	CIA
	DCA DLINES	/RESET MAX LINES
	TAD ADBUFR
	DCA EPOINT	/CLEAR BUFFER
	DCA I IBUFFR	/0=END-MARKER
	JMP RETURN
IBUFFR,	BUFFER
/SUBROUTINE STORES HALF-WORD STRIPPED
/ASCII IN BUFFER, WITH FOLLOWING TERMIN-
/TOR=0, END-MARKER. AS IN LMODE, MUST
/SAVE CONTENTS OF REGISTERS 0&1
STORE,	0
	LINC
	LMODE
	ADD 0
	STC SAVE0
	ADD 1
	STC SAVE1
	SET I 1		/SET 1/2 POINTER
EPOINT,	BUFFER		/TO END-BUFFER
	LDA I
ASCII,	0
	STH 1		/SAVE CHAR
	CLR
	STH I 1		/FOLLOWING 0
	ADD 1
	STC EPOINT	/SAVE PTR
	SET I 1
SAVE1,	0		/RESTORE 1
	ADD EPOINT
	SAE I
ENDBUF,	5577		/END BUFFER=7757
	JMP SAVE0-1	/NO
	SET 0		/YES:RESTORE 0
	SAVE0		/AND FREEZE
	PDP
	PMODE
	CLA
	JMP FREEZE
	LMODE
	SET I 0		/RESTORE 0 AND
SAVE0,	0		/RETURN
	PDP
	PMODE
	CLA
	JMP I STORE
/THIS SECTION SLIDES TOP LINE OUT OF
/BUFFER.
	LMODE
PUSHBF,	ADD 1
	STC SAVE1	/SAVE 1
	ADD 2
	STC SAVE2	/SAVE 2
	SET I 2
	BUFFER-4000
	LDH I 2
	SAE I
	43
	JMP .-3		/LOOK FOR 1ST CR
	SET I 1
	BUFFER-4000
	LDH I 2		/SHIFT CHAR DOWN
	STH I 1		/UNTIL FINAL 0
	AZE
	JMP .-3
	ADD 1
	STC EPOINT	/NEW END-BUFFER"	SUV 0
	SAVE0		/RESTORE 0
	SET 1
	SAVE1		/RESTORE 1
	SET I 2
SAVE2,	0		/RESTORE 2
	PDP
	PMODE
	STA		/ROOM=1 LINE
	DCA I IDLINS	/DCA DLINES
	JMP I IRETN	/JMP RETURN
IDLINS,	DLINES
IRETN,	RETURN
/
/THIS SECTION HANDLES THE (8-MODE ONLY!)
/INTERRUPTS FOR DISPLAY REFRESHING
/
RFRESH,	0		/1ST SCOPE PARAM
CYCLES,	-1
/
DISPLA,	DCA ACSAVE	/SAVE AC
	RAR
	DCA LSAVE	/SAVE LINK
	CLSA
	AND C60		/TRIGGER 1 ?
	SNA CLA
	JMP BACK	/NO:FALSE ALARM
	ISZ CYCLES	/REFRESH YET?
	JMP BACK
	TAD RFRESH	/YES:RESET CYCLE
	DCA CYCLES	/COUNTER
	LINC
	LMODE
	ESF		/HALF-SIZE
	ADD 0
	STC SAVE0	/SAVE 0
	ADD 1
	STC SAVE1	/SAVE 1
	ADD 2
	STC SAVE2	/SAVE 2
	ADD 3
	STC SAVE3
	SET I 3
	BUFFER-4000	/CHAR PTR
	LDA I
	360		/TOP LINE V.C.
	STC Y
DLINE,	SET I 1		/LEFTMOST H.C.
	-2
	LDH I 3		/NEXT BUFFER CHR
	AZE I
	JMP BACK1	/0-END BUFFER
	SHD I
	4000		/DONT DISP BLANK
	JMP BLANK
	SHD I
	4300
	JMP NXLINE	/END OF LINE
	ROL 1
	ADA I
	PATRN-2
	STC 2		/AD PW PAIR
	LDA I
Y,	0		/CURRENT V.C.
	DSC 2
	DSC I 2		/DISPLAY CHAR
	XSK I 1		/CHAR SPACING
	JMP DLINE+2	/NEXT CHAR
BLANK,	LDA I
	11		/SKIP CHAR POSN
	ADM
	1
	JMP DLINE+2
NXLINE,	LDA I
	-20		/LINE SPACING
	ADM
	Y
	JMP DLINE	/NEXT LINE
BACK1,	SET 0
	SAVE0
	SET 1
	SAVE1
	SET 2
	SAVE2
	SET I 3
SAVE3,	0		/RESTORE 0,1,2,3
	PDP
	PMODE
BACK,	CLA CLL		/SETUP RETURN
	TAD LSAVE
	RAL		/RESTORE LINK
	TAD ACSAVE	/RESTORE AC
	RMF		/ " MEM FIELDS
	ION
	JMP I 0		/RETURN MAINLINE
ACSAVE,	0
LSAVE,	0
C60,	60
/
/END OF INTERRUPT HANDLER - DISPLAY
/PATTERN WORDS FOR CHAR DISPLAY FOLLOWS
	LMODE
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		/BLANK
	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		/?
	2055
/SCOPE STORAGE BUFFER BEGINS HERE
BUFFER,	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