! reconstituted from intexts
EXTERNALROUTINE RECODE(INTEGER S, TO, BASE)
CONSTINTEGERARRAY OPCODES(0 : 255) = C
0(4),
M'SPM ',M'BALR',M'BCTR',M'BCR ',M'SSK ',M'ISK ',M'SVC ', 0(5),
M'LPR ',
M'LNR ',M'LTR ',M'LCR ',M'NR ',M'CLR ',M'OR ',M'XR ',M'LR ',
M'CR ',
M'AR ',M'SR ',M'MR ',M'DR ',M'ALR ',M'SLR ',M'LPDR',M'LNDR',
M'LTDR',
M'LCDR',M'HDR ',M'LRDR',M'MXR ',M'MXDR',M'LDR ',M'CDR ',M'ADR ',M'SDR ',
M'MDR ',
M'DDR ',M'AWR ',M'SWR ',M'LPER',M'LNER',M'LTER',M'LCER',M'HER ',M'LRER',
M'AXR ',
M'SXR ',M'LER ',M'CER ',M'AER ',M'SER ',M'MER ',M'DER ',M'AUR ',M'SUR ',
M'STH ',
M'LA ',M'STC ',M'IC ',M'EX ',M'BAL ',M'BCT ',M'BC ',M'LH ',M'CH ',
M'AH ',
M'SH ',M'MH ', 0,
M'CVD ',
M'CVB ',M'ST ', 0(3),M'N ',M'CL ',M'O ',
M'X ',
M'L ',M'C ',M'A ',M'S ',M'M ',M'D ',M'AL ',M'SL ',M'STD ',
0(6),
M'MXD ',
M'LD ',M'CD ',M'AD ',M'SD ',M'MD ',M'DD ',M'AW ',M'SW ',
M'STE ',
0(7),
M'LE ',
M'CE ',M'AE ',M'SE ',M'ME ',M'DE ',M'AU ',M'SU ',
M'SSM',
0,M'LPSW',M'DIAG',M'WRD ',M'RDD ',M'BXH ',M'BXLE',M'SRL ',M'SLL ',
M'SRA ',
M'SLA ',M'SRDL',M'SLDL',M'SRDA',M'SLDA',M'STM ',M'TM ',M'MVI ',
M'TS ',
M'NI ',M'CLI ',M'OI ',M'XI ',M'LM ', 0(3),
M'SIO ',
M'TIO ',M'HIO ',
M'TCH ',
0(49),
M'MVN ',
M'MVC ',M'MVZ ',M'NC ',M'CLC ',M'OC ',M'XC ', 0(4),
M'TR ',
M'TRT ',M'ED ',M'EDMK', 0(17),M'MVO ',M'PACK',M'UNPK', 0(4),
M'ZAP ',
M'CP ',M'AP ',M'SP ',M'MP ',M'DP ', 0, 0
INTEGER J, K, L, M
INTEGER T
ROUTINESPEC HEX(INTEGER N)
ROUTINESPEC HEX8(INTEGER N)
ROUTINESPEC PUT(INTEGER S, C)
!printstring("RECODE(X'"); HEX8(S)
!printstring("', X'"); HEX8(TO)
!printstring("', X'"); HEX8(BASE)
!printstring("')".snl)
S = S&(¬1)
BASE = BASE-S
L1: NEWLINE
NEWLINE AND RETURN IF S >= TO
PRINT STRING("C ")
HEX8(BASE+S)
SPACES(4)
J = SHORTINTEGER(S); S = S+2
M = J>>8&255
T = OPCODES(M)
HEX(J)
-> L1 IF T = 0
IF M>>6 = 0 THEN START; ! RR
PUT(12,T)
WRITE(J>>4&15,4)
print symbol(',')
WRITE(J&15,2)
-> L1
FINISH
K = SHORTINTEGER(S); S = S+2
HEX(K)
IF M>>6 = 1 THEN START; ! RX
PUT(8,T)
WRITE(J>>4&15,4); print symbol(',')
WRITE(K&X'FFF',4); print symbol('(')
WRITE(J&15,2); print symbol(',')
L3: WRITE(K>>12&15,2); print symbol(')')
-> L1
FINISH
IF M&X'F8' = X'88' THEN START
PUT(8,T)
WRITE(J>>4&15,4); print symbol(',')
L2: WRITE(K&X'FFF',4); print symbol('(')
-> L3
FINISH
IF M > 192 THEN START
L = SHORTINTEGER(S); S = S+2
HEX(L)
PUT(4,T)
WRITE(K&X'FFF',5); print symbol('(')
IF M>>4&15 # 15 THEN WRITE(J&255+1,2) C
ELSE WRITE(J>>4&15,2)
print symbol(',')
WRITE(K>>12&15,2); print symbol(')'); print symbol(',')
WRITE(L&X'FFF',4); print symbol('(')
IF M>>4&15 = 15 THEN START
WRITE(J&15,2); print symbol(',')
FINISH
WRITE(L>>12&15,2); print symbol(')')
-> L1
FINISH
IF M = 134 OR M = 135 OR M = 144 OR M = 152 THEN START
PUT(8,T)
WRITE(J>>4&15,4); print symbol(',')
WRITE(J&15,2); print symbol(',')
-> L2
FINISH
PUT(8,T)
WRITE(K&X'FFF',5); print symbol('(')
WRITE(K>>12&15,2); print symbol(')')
print symbol(',')
WRITE(J&255,2)
-> L1
ROUTINE HEX(INTEGER N)
CONSTBYTEINTEGERARRAY XSYM(0 : 15) = C
'0', '1', '2', '3',
'4', '5', '6', '7',
'8', '9', 'A', 'B',
'C', 'D', 'E', 'F'
INTEGER J, S
CYCLE J = 1,1,4; !8
S = (N>>12)&15; !S = N>>28
N = N<<4
PRINTSYMBOL(XSYM(S))
REPEAT
END
ROUTINE HEX8(INTEGER N)
CONSTBYTEINTEGERARRAY XSYM(0 : 15) = C
'0', '1', '2', '3',
'4', '5', '6', '7',
'8', '9', 'A', 'B',
'C', 'D', 'E', 'F'
INTEGER J, S
CYCLE J = 1,1,8
S = (N>>28)&15
N = N<<4
PRINTSYMBOL(XSYM(S))
REPEAT
END
ROUTINE PUT(INTEGER SP, SYMS)
INTEGER I
SPACES(SP)
CYCLE I = 1,1,4
PRINT SYMBOL(SYMS>>24&127); SYMS = SYMS << 8
REPEAT
END
END
ENDOFFILE