File DFORTRAN

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

*20
	PMODE
	*6003
	LMODE
FROZEN,	0		/<>0:OUPUT FROZN
DISPON,	0		/0:TTY;<>0:SCOPE
LCOUNT,	0		/LINE COUNTER
FULLSN,	0		/0:HALT WHEN FUL
ADBUFR,	BUFFER+4000	/AD+1/2 BUFFER
	PMODE
/6010: END-BUFFER POINTER
	*6020
WRITE,	0		/OUPUT ENTRY
	JMP WRITE1	/GO TO IT
	LMODE
MLINES,	0		/-MAX DISP LINES
CYCLES,	0		/AC CYCLE COUNTR
RFRESH,	0		/CYCLES/REFRESH
/CONTROL ARRIVES HERE ON INTERRUPT
	PMODE
DISPLA,	DCA ACSAVE	/SAVE AC
	RAR
	DCA LSAVE	/SAVE LINK
	CLSA
	AND C60		/TRIGGER 1 ?
	SNA CLA
	JMP RETURN	/NO:FALSE ALARM
	ISZ CYCLES	/REFRESH YET?
	JMP RETURN
	TAD RFRESH	/YES:RESET CYCLE
	DCA CYCLES	/COUNTER
	LINC
	LMODE
	ESF		/HALF-SIZE
	SET I 11	/DISP BUFF POINT
	BUFFER		/AD BEG BUFFER
	LDA I
	360		/TOP LINE V.C.
	STC Y
DLINE,	SET I 1		/LEFTMOST H.C.
	-2
	LDH I 11	/NEXT BUFF CHAR
	AZE I
	JMP RETURN-1	/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
	PDP
	PMODE
RETURN,	CLA CLL
	TAD LSAVE
	RAL		/RESTORE LINK
	TAD ACSAVE	/RESTORE AC
	RMF		/ " MEM FIELDS
	ION
	JMP I 0		/RETURN MAINLINE
ACSAVE,	0
LSAVE,	0
C60,	60
ITYPE,	TYPE
/
/END OF INTERRUPT HANDLER - DISPLAY
/
/CONTROL ARRIVES HERE WHENEVER FORTRAN
/WRITE ON TTY GIVEN; IF DISPON=0,NORMAL
/TTY ACTION TAKEN; IF NON-0,ASCII CHAR
/STRIPPED AND ENTERED INTO DISPLAY 
/BUFFER.
/
WRITE1,	DCA ASCII	/SAVE 8-BIT CODE
	ISZ WRITE	/INCR RETURN ADR
	TAD DISPON
	SNA CLA		/TTY OR SCOPE?
	JMP I ITYPE	/NORMAL TTY
	IOF		/MOMENTARILY
	LINC
	LMODE
	ADD FROZEN	/SCOPE FROZEN?
	AZE
	JMP CHTHAW	/YES:CHECK&WAIT
	LDA I
ASCII,	0		/8-BIT CODE
	SAE I
	212
	SKP
	JMP WRETRN	/IGNORE LF
	SAE I
	300
	JMP .+4
	LDA I
	40		/AT-SIGN DISPL.
	JMP STORE	/AS BLANK
	SAE I
	243		/NUM SIGN DISP.
	SKP		/AS BLANK
	JMP .-6
	SHD I
	0		/IGNORE 0N00
	JMP WRETRN
	SAE I
	215		/CR?
	JMP STORE	/NO:STORE CHAR
	LDA I
	43		/STORE CR AS 43
	STH 10		/INTO BUFFER
	CLR
	STH I 10	/NEW 0=END
	ADD 10
	SAE
	ENDBUF		/END OF BUFFER?
	SKP
	JMP FREEZE	/YES:FREEZE IT
	XSK I 5		/MAX LINES YET?
	JMP WRETRN	/NO:RETURN
	LDA
	FULLSN		/YES: ACTION?
	APO
	JMP FREEZE	/<0:FREEZE DISP
/FULLSN>=0: SHIFT DISPLAY UP ONE LINE,
/DELETING TOP LINE FROM BUFFER.
	SET I 12
	BUFFER
	LDH I 12
	SAE I
	43		/FIND END TOP LN
	JMP .-3
	SET I 10	/SHIFT IT DOWN
	BUFFER
	LDH I 12
	STH I 10	/SHIFT NEXT CHAR
	AZE		/LAST OF BUFFER?
	JMP .-3		/NO: DO NEXT
	SET I 5
	-1		/ROOM FOR 1 LINE
	JMP WRETRN	/RETURN
/SECTION "FREEZES" DISPLAY -- OCCURS
/WHEN EITHER BUFFER FULL OR MAX LINES
/DISPLAYED WITH "FREEZE" OPTION. IN
/EITHER CASE, ALL FURTHER SCOPE OUTPUT
/LOST UNTIL (ANY) TTY KEY STRUCK, AFTER
/WHICH SCOPE CLEARED.
FREEZE,	SET I 3
	1		/FROZEN=1
	LDA I
	207		/RING BELL AND
	PDP		/RETURN
	PMODE
	JMP TYPE+1
/CONTROL ARRIVES HERE WHEN SCOPE FROZEN
/AND FURTHER OUTPUT REQUIRED: CHECKS
/FOR TTY KEY STRUCK; IF FOUND, CLEARS
/BUFFER AND IS SET TO GO AGAIN.
	LMODE
CHTHAW,	KST		/KEY STRUCK?
	JMP WRETRN	/NO:RETURN FROZN
	CLR
	STC FROZEN	/YES:DEFREEZE
	SET I 10
	BUFFER		/RESET BUFFR PTR
	STH 10		/0=END
	SET 5
	MLINES		/RESET LIN COUNT
	JMP WRETRN
/SECTION STORES OUTPUT CHAR
STORE,	STH 10		/0 TO 6-BIT CHAR
	CLR
	STH I 10	/NEW ZERO=END
	ADD 10
	SAE I		/END OF BUFFER?
ENDBUF,	5577		/7577 IS END!!
	SKP
	JMP FREEZE	/END:FREEZE IT
WRETRN,	PDP
	PMODE		/SETUP EFFECTIVE
	CLA		/JMP I WRITE
	TAD I IWRITE	/GET RET. ADR.
	DCA IWRITE-1
	TAD I IDISPN	/IF SCOPE MODE,
	SZA CLA		/TURN INTERRUPT
	ION		/BACK ON
	JMP I IWRITE-1
	0		/=JMP I WRITE
IWRITE,	WRITE
IASCII,	ASCII
IDISPN,	DISPON
/SECTION USED FOR NORMAL TTY OUTPUT
/AND FOR BELL-RINGING IN FROZEN STATE
TYPE,	TAD I IASCII	/GET STORED CODE
	TSF
	JMP .-1
	TLS
	JMP WRETRN+1	/EXIT ABOVE
/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