File: DISPV3.PA of Tape: Various/System-Tapes/s5
(Source file text) 

/SCOPE  DISPLAY HANDLER V3 (2-PAGE)

/W.V.D.M.

	/DEFINITIONS OF CHARACTER DISPLAY
	DSC=6067	/DISPLAYS 6-BIT CHARACTER
			/RECOGNIZES 4TAB,CR,FF
	DCHS=6074	/SELECT SCOPE CHANNEL
	DCSI=6077	/CLEAR REGISTERS
	DSCD=6052	/SKIP ON CHAR.,CLEAR FLAG

	/EAE DEFINITIONS
	SWAB=7431
	DLD=7663
	SWP=7521
	BSW=7002
	SHL=7413
	SWBA=7447
	MQL=7421
	MQA=7501
	CAM=7621
	DVI=7407

	FIXTAB

	FIELD 0

	*0		/HEADER BLOCK
	-1		/ONE HANDLER IN THIS FILE

	DEVICE DISP
	DEVICE TV
	1300
	4000
	ZBLOCK 2
	*200

DIS,	03		/SYSTEM DEVICE NAME = 6711
DS7600,	7600		/CLA CLEARS AC
DIS214,	RDF
	TAD DISCIF	/FORM CIF CDF N
	DCA DISXIT	/SAVE CALLING FIELD
	TAD I DIS	/GET FUNCTION WORD
	AND DIS070	/GET BUFFER FIELD BITS
	TAD DISCDF	/MAKE A CDF N
	DCA DISLP	/SAVE IT
	TAD DISLP
	DCA DSCDN	/AND AGAIN
	CLL CML RAR	/TEST WRITE BIT
	TAD I DIS	/FUNCTION WORD AGAIN
	AND DS7700	/GET COUNT BITS
	ISZ DIS
	SPA SNA		/-:FATAL,L=0;0:IGNORE,L=1
DSJMP1,	JMP DSEXIT
	CLL RAL		/TIMES TWO,SET L=0
	TAD I DIS	/BUFFER ADRESS+WORD COUNT
	CIA		/-END ADRESS
	DCA DSEADR
	TAD I DIS	/BUFFER ADRESS
	DCA DSCAIN	/SAVE STARTING ADRESS
	ISZ DIS		/AT BLOCK NUMBER
	TAD I DIS	/GET BLOCK NUMBER
	SNA CLA		/TEST FOR BLOCK 0
DSNEWS,	CLL CML		/LNK WAS CLEARED -
DIS160,	160		/ALSO RESTART
DISCDF,	CDF 0		/WE ARE IN FIELD 0
DSJINI,	JMP DISSET	/BECOMES 0 AFTER INIT
	DCSI		/CLEAR
	DCHS		/SCOPE CHANNEL
	DSC		/SET FLAG
	TAD DSCAIN	/GET BUFFER START
	DCA DISCA
	DCA DSJMPE	/CLEAR EXIT
DSNWPG,	JMS I DSXTRN	/FIX TRUNCATION AND LINE START
	TAD DISCA	/GET LAST ADRESS
	DCA DISCAA	/DEFINE NEW START
DSJMPE,	0		/GETS MODIFIED FOR EXIT
	JMP DSTTCH-2	/FOR INTIALIZING;COMES BACK+1
DSOLPG,	SWAB		/CLEARS AC ALSO
	TAD DISCAA	/GET OLD START
	DCA DISCA	/DEFINE SAME START
	DCA DSJMPE	/NO EXIT IF RESTART
DISLP,	HLT		/BUFFER DATA FIELD
	TAD I DISCA	/GET FIRST WORD
	CDF 0
	JMS I DISXCH
DSCDN,	HLT		/BUFFER DATA FIELD
	DLD		/HERE COMES THE EAE
DISCA,	0		/CURRENT ADD REGISTER
	CDF 0
	SWP		/WORD 1 IN AC
	BSW		/DONT CARE ABOUT WORD 1
	RTR		/WORD3A IN AC8-11
	SHL		
	4		/WORD 3 IN AC4-11
	DCA DSLPTP
	SWP		/WORD 2 IN AC0-7
	RTR
	RTR		/WORD 2 IN AC8-11
	JMS I DISXCH	/PUT OUT WORD  2
	CLA CLL CML RTL	/AS 3 HAVE GONE
	TAD DISCA
	DCA DISCA	/INC 'DISCA' BY 2
	TAD DSLPTP
	JMS I DISXCH	/PUT OUT WORD 3
	TAD DISCA
	TAD DSEADR	/END OF BUFFER
	SNL CLA
	JMP DISLP	/GET NEXT 3
	TAD DSJMP1	/OVERFLOW OVERFLOWS
	DCA DSJMPE	/SETS EXIT
	CLA CLL IAC RTL	/4 FOR FF.
	JMP I DSXFFE	/TO GET LINES CORRECT
DSTTCH,	KSF
	JMP DSOLPG	/NO FLAG LOOP
	KRB		/JAM TRANSFER
	DCA DSKRBT
	TAD DSKRBT
	AND DIS160	/CHECK FOR NON CONTROL
	SZA CLA
	JMP DSOLPG
	TAD DSKRBT
	AND DIS017	/GET OUT PARITY AND SO ON
	CLL IAC RTR
	SPA SZL		/PICKS UP 8 ^CHARS
	JMP DSOLPG	/NONE OF THEM
	TAD DSJMP2	/BUILD JUMP
	DCA DISXXX
DISXXX,	HLT
DSJMP2,	JMP .		/LINK IS CLEARED HERE
	JMP DISCIF	/^C:EXIT KEYMON
	JMP DSNEWS	/^G/BELL:START ALL OVER
	JMP DSNWPG	/^K/VT:GET NEW INFO
DSEXIT,	SZL		/^O:NON FATAL EXIT
	ISZ DIS		/INC ONCE FOR ZERO WC
	ISZ DIS		/INC TWICE;ERROR AT BUFFER ADRESS
	ISZ DIS		/NORMAL AT BLOCK NUMBER
DISXIT,	HLT		/HERE CDI N
	JMP I DIS

DISCIF,	CIF CDF 0
	JMP I DS7600	/EXIT KEYMON

DISSET,	JMS .		/FIND OUT LOC
DSBS1,	TAD DSXIN2
DSKRBT,	SNA		/ZERO ENDS LIST
DISCAA,	JMP DSNXIN
	TAD DISSET
	DCA DSXIN2	/DOUBLY USED LOCS
	ISZ .-1
	ISZ DSBS1
	JMP DSBS1

DSNXIN,	JMS I DSXIN2	/TO NEXT PAGE INIT
DSBS2,	DCA DSJINI	/CLOSE INIT
	JMP DSNEWS

DSXIN2,	DISIN2-DSBS1
DISXCH,	DISCH-DSBS1
DSXTRN,	DSTRNC-DSBS1
DSXFFE,	DSFFE-DSBS1
DSLPTP,	0
DSCAIN,	0
DSEADR,	0
DS7700,	7700	
DIS070,	70
DIS017,	17

	PAGE
DIS177,	177

DSWAIT,	0
	DSCD		/AT LEAST ONE CHAR WAS GIVEN
	JMP .-1
	DSC		/DISPLAY NEW
	ISZ DSLPTR	/COUNT CHARS PER LINE
	JMP I DSWAIT
TABEX,	CAM		/LINE OVERFLOWED
	JMP DISVT	/GO TO NEXT LINE

DSM40,	-40
DISN20,	-20
DIS10,	10

DS7770,	7770		/DON'T MOVE

DISCH,	0
	ISZ DSCCNT	/COUNT CHARS
	JMP DISEXT	/ONLY FIRST TIME PER PAGE(NOPPED)
	JMS DSWAIT	/DISPLAY ANYTHING
DIS200,	AND DIS177	/PARITY OFF
	TAD DSM40
	SNA		/SPACE?
	JMP DISEX	/YES GET OUT BEFORE IT'S TOO LATE
	SPA		/CONTROL CHAR?
	JMP DISCTL	/YES;TREAT IT
	TAD DSM100
	SMA CLA
	JMP DISLOW	/LOWER CASE
	JMP DISEX	/FORGET ABOUT NORMAL CHARS

DSUPAR,	CLA CMA		/MAKE '^'
DISLOW,	TAD DIS37	/MAKE '_'
	JMS DSWAIT
DISEX,	CLA CLL
	JMP I DISCH

DIS6,	6		/DON'T MOVE

DISCTL,	TAD DIS22	/CHAR-16
NOPI,	CLL CML
DIS40,	TAD DIS6	/OVERFLOW FROM 10-15
	SZL SNA		/'AND' MICRO;DISREGARD 10
	JMP DSUPAR	/FLAG UNKNOWN CNTRL CODE
DSFF1,	RAL		/BUILD JMP
	TAD DSJCTL
	DCA .+6
	CLA CMA		/FORMATTING DOES'NT COUNT
	TAD DSLPTR	/INTERMEDIATE STORAGE
	MQL		/SO WE CAN RESET IT BEFORE
	MQA
	DCA DSLPTR	/RESTORE
	HLT
DSJCTL,	JMP .
DIS37,	37
	JMP DISTAB	/TAB ENTRY;LNK IS SET?
DSCCNT,	0
	JMP DISLF
DIS22,	22
DISVT,	ISZ DSLNBR	/VERT. TAB ENTRY;GIVE ONE LINE
	SKP		/IF IT SKIPS THEN FF
	TAD .-1		/FF. SET PAGE EXIT
	DCA DISMOD
	TAD DSN200	/CR. ENTRY
	DCA DSLPTR	/RESET TO BEGINNING
DISMOD,	0		/'SKP' IF PAGE EXIT
	JMP DISEX
	DCA .-2		/MAKE SURE
	TAD DISFFN
	DSC
	MQA CLA
	DCA DSSPTP	/NOW STORE DEFINITIVELY
	TAD DISN20
	DCA DSLNBR	/RESET LINE COUNTER
	SWBA		/RELOCATABLE HANDLER!
	TAD DSCCNT	/CHAR COUNT
	MQL DVI		/MODULO 3
	3
	CMA
	DCA DSREST	/KEEP FOR AFTER
	DCA DSCCNT
	TAD (JMP DISEXT
	DCA DISCH+2	/NEXT CHAR REROUTED
	JMP I DSXTCH	/GO FOR TTY: CHECKS

DISEXT,	DCA DSCHTP	/KEEP CHAR
	TAD DSLVOT	/GET TRUNCATION VALUE
	TAD DSCCNT
	SPA CLA
	JMP DISEX	/IGNORE
DISCON,	TAD DSLPTR	/FIRST TIME -200
	TAD DSSTLN	/CHECK FOR EXTRA SPACES ON FIRST LINE
DSM100,	SMA CLA
	JMP DISOUT	/NO MORE
	TAD DIS40	/SHIFT LINE
	JMS DSWAIT	/WITH SPACES
DSN200,	7600		/GROUP 2 CLA
	JMP DISCON	/CONTINUE
DISOUT,	TAD NOPI	/IT'S A 'CLL CML'
	DCA DISCH+2	/SO WE DON'T COME BACK TO 'DISEXT'
	TAD DSCHTP	/GET BACK VALUE OF CHAR
	JMP DISCH+3	/BACK TO MAIN LOOP
DSCHTP,
DSTRNC,	0		/SUBROUTINE FOR SETTING VALUES
	TAD DIS200	/FOR TRUNCATION AND START OF LINE
	SZL
	JMP .+4		/NZL IS NEW START
	CLA 
	TAD DSSPTP
	CIA
	DCA DSSTLN
	SNL
	TAD DSREST
	DCA DSLVOT
	CLL
	JMP I DSTRNC

DSFFE,	ISZ DSLPTR
	JMP DSFF1
DISTAB,	TAD DSLPTR
DISFFN,	AND DS7770	/HACK OFF LAST 8
	TAD DIS10	/PLUS 8
	DCA DSLPTR
	SZL
	JMP DISEX
	JMP TABEX

DISLF,	ISZ DSLNBR
	JMP DISEX
	JMP DISMOD+2

DSSPTP,
DISIN2,	0
DSREST,	TAD DSXTCH
DSLVOT,	TAD DISIN2	/DOUBLY USED LOCS
DSLNBR,	DCA DSXTCH
DSLPTR,	JMP I DISIN2
DSXTCH,	DSTTCH-DSBS2
DSSTLN,	0

	PAGE

$$$$$$$$$$