Google
 

Trailing-Edge - PDP-10 Archives - bb-jr93h-bb - 7,6/ap016/cobddt.c16
There are 8 other files named cobddt.c16 in the archive. Click here to see a list.
 REP 26/1	;16C1
	EDIT==47
 WIT
	EDIT==50
 INS 60/2	;16C2
	;.VERSION 12C
	;.AUTOPATCH 13
	;.NOEDIT
	;.ENDA
	;.AUTOPATCH 14
	;.NOEDIT
	;.ENDA
	;.AUTOPATCH 15
	;.NOEDIT
	;.ENDA
	;.AUTOPATCH 16
	;.EDIT	50	Fix some problems with Subscript handling
	;		PAM,5-NOV-86,SPR:10-35348
	;		A:SRC COBDDT
	;.ENDA
	;.ENDV
 REP 23/8	;16C3
	DTFAL:	POINT 1,4(T4),8		;[43] FATHER/BROTHER LINK
 WIT
	DTOCH:	POINT 15,7(DT),17	;[50] Higher level OCCURS
	DTPOP:				;[50]
	DTBRO:	POINT 15,2(DT),17	;[50] Father/Brother link
	DTFAL:	POINT 1,4(T4),8		;[43] Father/Brother link flag
 REP 4/121	;16C4
		LDB	DT,[POINT 15,DTSUBW+1(DT),17]
		ADD	DT,@%DT
	SUBSCA:	;GET PROPER BYTE SIZE FOR RECORD
		LDB	T3,DTUSAG	;GET USAGE
		CAIN	T3,%US.IN	;INDEX?
		MOVEI	T3,D1MODE+1	;USE COMP
		HLRZ	T2,BYPTRS-1(T3)	;SKELETON BYTE POINTER
		TRZ	T2,770077	;JUST LEAVE BYTE SIZE
		TLO	W2,(T2)		;PUT BYTE SIZE IN
 WIT
		LDB	DT,DTOCH	;[50] Get next higher OCCURS
		ADD	DT,@%DT
	SUBSCA:	;GET PROPER BYTE SIZE FOR RECORD
		PUSHJ	PP,SUBSCK	;[50] Get usage mode in T1, check for COMP
		HLRZ	T2,BYPTRS-1(T1)	;[50] Get prototype byte pointer
		TRZ	T2,770077	;JUST LEAVE BYTE SIZE
		TLO	W2,(T2)		;PUT BYTE SIZE IN
		;Remember that top level usage is in T1 -- preserve it for SUBSIZ
 REP 24/121	;16C5
		LDB	T2,[POINT 15,DTSUBW+1(DT),17]
 WIT
		LDB	T2,DTOCH	;[50] Get next higher OCCURS
 REP 30/121	;16C6
	;[D42]	JRST	SUBSC1		;LOOP
		JRST	SUBSCA		;[M42] LOOP
 WIT
		JRST	SUBSC1		;[50] Loop
 INS 2/122	;16C7
	; XCT table with current DATAB mode in T5, Grandfather's mode in T1
 REP 7/122	;16C8
		MOVEI	T2,6		;4 1-WORD COMP
		MOVEI	T2,^D12		;5 2-WORD COMP
		MOVEI	T2,6		;6 COMP-1
		MOVEI	T2,6		;7 INDEX
		PUSHJ	PP,SUBSZC	;10 COMP-3
 WIT
		PUSHJ	PP,SUBSZ2	;[50] 4 1-WORD COMP
		PUSHJ 	PP,SUBSZ3	;[50] 5 2-WORD COMP
		PUSHJ	PP,SUBSZ2	;[50] 6 COMP-1
		PUSHJ	PP,SUBSZ2	;[50] 7 INDEX
		PUSHJ	PP,SUBSZC	;[50] 10 COMP-3
 INS 27/122	;16C9
	SUBSZ2:	MOVEI	T2,6		;[50] Assume Grandfather is SIXBIT
		CAIN	T1,%US.D7	;[50] Grandfather ASCII?
		MOVEI	T2,5		;[50] Yes, 5 chrs per word
		CAIN	T1,%US.EB	;[50] EBCDIC?
		MOVEI	T2,4		;[50] Yes, 4 chars/word
		POPJ	PP,		;[50] Done

	SUBSZ3:	PUSHJ	PP,SUBSZ2	;[50] Get bytes per word
		LSH	T2,1		;[50] Double it
		POPJ	PP,		;[50] Return.

 INS 32/122	;16C10

	SUBSCK:	LDB	T1,DTUSAG	;[50] Get item's usage
		CAIN	T1,%US.C3	;[50] If it's COMP-3, his father
		SKIPA	T1,[EXP %US.EB]	;[50]  must be EBCDIC
		CAIG	T1,%US.DS	;[50] Is item display?
		POPJ	PP,		;[50]  Yes, we are done
		PUSH	PP,DT		;[50] Save DATAB pointer
		PUSHJ	PP,LNKGFA	;[50] Find the Grandfather
		LDB	T1,DTUSAG	;[50] Get his usage
		CAILE	T1,%US.DS	;[50] Display?
		MOVEI	T1,%US.D6	;[50] No, pretend it is SIXBIT
		POP	PP,DT		;[50] Restore DATAB pointer
		POPJ	PP,		;[50] Return with usage in T1

	LNKGFA:	LDB	T1,DTPOP	;[50] Get Father/Brother link
		JUMPE	T1,CPOPJ	;[50] No links, should be top level
		HRRZ	DT,T1		;[50] Create new DATAB pointer
		ADD	DT,@%DT		;[50] 
		JRST	LNKGFA		;[50] Follow Father/Brother chain

 SUM 64079