Trailing-Edge
-
PDP-10 Archives
-
bb-kl11c-bm_tops20_v6_1_atpch1_16
-
autopatch/cobddt.c15
There are 2 other files named cobddt.c15 in the archive. Click here to see a list.
REP 26/1 ;15C1
EDIT==47
WIT
EDIT==50
INS 58/2 ;15C2
;.AUTOPATCH 12
;.NOEDIT
;.ENDA
;.AUTOPATCH 13
;.NOEDIT
;.ENDA
;.AUTOPATCH 14
;.NOEDIT
;.ENDA
;.AUTOPATCH 15
;.EDIT 50 Fix some handling of subscripts.
; PAM,5-NOV-86,SPR:10-35348
; A:SRC COBDDT
;.ENDA
INS 23/8 ;15C3
DTOCH: POINT 15,7(DT),17 ;[50] Higher level OCCURS
DTPOP: ;[50]
DTBRO: POINT 15,2(DT),17 ;[50] Father/Brother link
REP 41/59 ;15C4
WIT
REP 42/72 ;15C5
WIT
REP 32/73 ;15C6
WIT
REP 53/74 ;15C7
WIT
REP 107/78 ;15C8
WIT
REP 4/103 ;15C9
WIT
REP 4/132 ;15C10
LDB DT,[POINT 15,DTSUBW+1(DT),17]
WIT
LDB DT,DTOCH ;[50] Get next higher OCCURS
REP 8/132 ;15C11
SUBSCA: 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
SUBSCA: 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 25/132 ;15C12
LDB T2,[POINT 15,DTSUBW+1(DT),17]
WIT
LDB T2,DTOCH ;[50] Get next higher OCCURS
REP 31/132 ;15C13
JRST SUBSCA ; [34] LOOP
WIT
JRST SUBSC1 ;[50] Loop
INS 2/134 ;15C14
; XCT table with current DATAB mode in T5, Grandfather's mode in T1
REP 7/134 ;15C15
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
MOVEI T2,^D12 ;11 COMP-2
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
PUSHJ PP,SUBSZ3 ;[50] 11 COMP-2
REP 27/134 ;15C16
WIT
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 33/134 ;15C17
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
REP 41/135 ;15C18
WIT
REP 38/136 ;15C19
WIT
REP 44/137 ;15C20
WIT
REP 40/138 ;15C21
WIT
REP 38/139 ;15C22
WIT
REP 30/140 ;15C23
WIT
REP 81/141 ;15C24
WIT
REP 41/142 ;15C25
WIT
REP 18/144 ;15C26
WIT
REP 62/146 ;15C27
WIT
REP 60/147 ;15C28
WIT
REP 76/148 ;15C29
WIT
REP 42/149 ;15C30
WIT
REP 56/150 ;15C31
WIT
SUM 123562