IDENT KTSDMP,FETS
ABS
SST LA
ENTRY KTSDMP
ENTRY RFL=
SYSCOM B1
*COMMENT KTSDMP - *TAF* TASK MEMORY DUMP.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
TITLE KTSDMP - KTS MEMORY DUMP.
SPACE 4
***** KTSDMP - KTS MEMORY DUMP.
* J. C. BOHNHOFF. 72/09/23.
* W. E. MARTIN. 78/08/30.
SPACE 4,20
*** *KTSDMP* IS AUTOMATICALLY CALLED BY THE TRANSACTION FACILITY
* TO PROCESS A MEMORY DUMP AFTER A TASK ABORT OR AN EXPLICIT
* *CMDUMP* REQUEST. IF THE *P* OPTION IS USED, AN
* INSTALLATION MAY KEEP A RUNNING STACK OF MEMORY DUMPS TO BE
* SELECTIVELY LISTED AT SOME LATER TIME. TO LIST ALL DUMPS
* ON THE PERMANENT DUMP FILE, ATTACH THE FILE AND EXECUTE
* *KTSDMP*. ALL DUMP RECORDS ON THE FILE WILL BE PROCESSED.
* TO LIST ONLY SELECTED DUMPS, ATTACH THE PERMANENT FILE
* AND EXTRACT THE DESIRED DUMP RECORDS USING *GTR* -
* THEN EXECUTE *KTSDMP* TO PROCESS THE EXTRACTED RECORDS.
* THE INPUT FILE FORMAT IS DESCRIBED IN THE *KTSDMP*
* DOCUMENTATION. ITEMS THAT MAY BE LISTED INCLUDE -
*
* CENTRAL MEMORY OF A TASK OR PROGRAM.
* EXCHANGE PACKAGE OF A TASK.
* CONTROL POINT AREA OF A TASK.
* COMMUNICATION BLOCK OF A TASK.
* DATA BUFFERS.
SPACE 4,20
*** CONTROL CARD CALL.
*
* KTSDMP(IF,OF,P,O)
*
* IF - INPUT FILE NAME.
* IF ABSENT - *INPUT*.
*
* OF - OUTPUT FILE NAME.
* IF ABSENT - *OUTPUT*.
*
* P - IF PRESENT - *APPEND* FILE *IF* ON DIRECT ACCESS
* PERMANENT FILE *OF*. THE JOB MUST BE RUNNING WITH
* THE PROPER USER NUMBER, AND FILE *OF* MUST BE
* DEFINED. FURTHER, AN END-OF-FILE IS NOT COPIED TO
* *OF*.
*
* O - *OCTAL* FORMAT IF SPECIFIED - OTHERWISE DEFAULT
* IS *DISPLAY*.
SPACE 4,25
*** DAYFILE MESSAGES ISSUED.
*
* * DISPLAY DUMP NOT ALLOWED TO TERMINAL.*
* A DISPLAY DUMP (DEFAULT) IS NOT ALLOWED TO AN
* INTER-ACTIVE TERMINAL. OCTAL DUMPS, OBTAINED WITH
* THE *O* CONTROL CARD PARAMETER, ARE ALLOWED.
*
* * FILE NAME CONFLICT.*
* THE INPUT FILE NAME IS THE SAME AS THE OUTPUT FILE
* NAME.
*
* * FWA .GE. LWA+1.*
* DUMP FIRST WORD ADDRESS IS GIVEN AS .GE. THE LAST WORD
* ADDRESS + 1.
*
* * KTSDMP COMPLETE.*
* DUMP COMPLETED NORMALLY.
*
* * UNKNOWN FILE FORMAT.*
* FILE DOES NOT CONFORM TO THE FORMAT RULES ESTABLISHED.
*
* * XXXXXXX NOT FOUND.*
* THE FILE SPECIFIED ON THE P-PARAMETER WAS NOT FOUND
* IN THE USER-S PERMANENT FILE CATALOG.
SPACE 4,80
** DUMP INPUT FILE FORMAT -
*
* THE DUMP INPUT FILE IS COMPOSED OF AT LEAST ONE RECORD
* COMPRISED OF SEVERAL TABLES, EACH CONTAINING DATA PERTAINING
* TO A TYPE OF DUMP AS DESCRIBED ABOVE. SEVERAL RECORDS MAY
* APPEAR IN THE FILE, EACH STARTING A NEW DUMP SEQUENCE.
* ALL TABLES EXCEPT TABLE-0 MAY APPEAR IN ANY ORDER AND MAY
* BE REPEATED INDEFINITELY OR MAY BE SUPPRESSED.
*
* RECORD FORMAT -
*
* WORD 1 - RECORD NAME.
*T WD1 42/ NAME,18/ 0
*
* WHERE - NAME MAY BE USED BY OTHER UTILITIES TO IDENTIFY
* THE RECORD.
*
* TABLE 0 - GENERAL INFORMATION.
*T GIN 12/ 2000B,30/ 0,18/ 0
*T, 60/ LABEL
*T, 60/ DUMP DATE
*T, 60/ DUMP TIME
*T, 60/ RESERVED
*
* WHERE - LABEL IS USED FOR IDENTIFICATION IN TITLE LINES.
* DUMP DATE IS THE DATE UPON WHICH THE INPUT FILE WAS
* CREATED.
* DUMP TIME IS THE TIME AT WHICH THE INPUT FILE WAS
* CREATED.
*
* TABLE 1 - MEMORY DUMP.
*T MED 12/ 2001B,30/ 0,18/ N
*T, 42/ 0,18/ FWA
*T, 42/ 0,18/ LWA
*T, 60/ RESERVED
*T, 60/ RESERVED
*T, 60/ ... FIRST OF N WORDS OF MEMORY TO DUMP ...
*
* WHERE - FWA IS THE FIRST WORD ADDRESS OF THE DUMP AREA.
* FWA IS ROUNDED UP TO A MULTIPLE OF FOUR, AND LWA IS
* THE LAST WORD ADDRESS OF THE DUMP AREA. LWA IS
* IS ROUNDED DOWN TO A MULTIPLE OF FOUR.
*
* TABLE 2 - EXCHANGE PACKAGE.
*T EXP 12/ 2002B,30/ 0,18/ N
*T, 60/ RESERVED
*T, 60/ RESERVED
*T, 60/ RESERVED
*T, 60/ RESERVED
*T, 60/ ... FIRST OF 20B WORDS OF EXCHANGE PACKAGE ...
*T, 60/ ... FIRST OF *M* WORDS OF TASK CONTROL POINT AREA ...
*
* WHERE - *N* IS THE TOTAL OF 20B EXCHANGE PACKAGE WORDS
* PLUS *M* TASK CONTROL POINT WORDS.
*
* TABLE 3 - COMMUNICATION BLOCK.
*T CMB 12/ 2003B,30/ 0,18/ N
*T, 42/ TASK NAME,18/ 0
*T, 36/ 0 ,24/ SEQUENCE NUMBER
*T, 42/ 0 ,18/ ADDRESS
*T, 60/ RESERVED
*T, 60/ ... FIRST OF *N* WORDS OF COMMUNICATION BLOCK ...
*
* WHERE - SEQUENCE NUMBER IS THE TRANSACTION SEQUENCE NUMBER.
* ADDRESS IS THE ADDRESS FROM WHICH THE DUMP WAS
* CALLED.
*
* TABLE 4 - DATA BUFFERS.
*T DAB 12/ 2004B,30/ 0,18/N
*T, 6/ DB,36/ FILE NAME,18/ 0
*T, 60/ .. FIRST OF 2 WORDS OF CURRENT KEY VALUE ...
*T, 60/ ... ...
*T, 30/ CURRENT PRU ADDRESS,30/ CURRENT FILE STATUS
*T, 60/ .. FIRST OF N WORDS OF DATA BUFFER TO DUMP ...
*
* WHERE - DB IS THE DATA BASE NAME.
TITLE MACRO DEFINITIONS.
* COMMON TEXT.
*CALL COMSPFM
*CALL COMCMAC
*CALL COMKMAC
TRXCOM
SPACE 4
* ASSEMBLY CONSTANTS.
CMBM OCTMIC COMC FWA OF COMMUNICATION BLOCK
IBUFL EQU 1001B INPUT BUFFER SIZE
OBUFL EQU 4001B OUTPUT BUFFER SIZE
SPACE 4
* FET DEFINITIONS.
ORG 115B
FETS BSS 0
I BSS 0 INPUT FILE
INPUT FILEB IBUF,IBUFL
O BSS 0 OUTPUT FILE
OUTPUT FILEC OBUF,OBUFL,FET=CFLM
TITLE GLOBAL STORAGE.
* GLOBAL STORAGE.
CW BSSZ 5 TABLE CONTROL WORDS
FW CON 0 FWA OF DUMP
LW CON 0 LWA OF DUMP
LA CON 0 LINE ADDRESS
DB CON 0 DUMP BLOCK INDEX
DC VFD 6/36B,18/,18/2,18/4 DUMP CONTROL
EP CON 0 EXCHANGE PACKAGE DUMP INDICATOR
IND CON BUF2
DF CON 0 DISPLAY/OCTAL DUMP FLAG
TERM CON 0 TERMINAL OUTPUT FLAG (IF SET)
ZR CON 0 ZERO WORD
MBUF BSSZ 3 *PFM* ERROR MESSAGE BUFFER
TITLE MAIN PROGRAM.
** MAIN PROGRAM.
KTSDMP SB1 1
RJ PRS PRESET PROGRAM
NZ X5,KTS5 IF *APPEND* TO PERMAMENT FILE OPERATION
* PROCESS DUMP LIST.
KTS1 SX7 0 CLEAR EXCHANGE PACKAGE DUMPED INDICATOR
SA7 EP
RJ COF CHECK OUTPUT FILE
READ I START READ OF DUMP RECORD
READW I,CW,B1 SKIP RECORD NAME
NZ X1,KTS2 IF EOR/EOF/EOI
* RETURN FROM DUMP PROCESSORS.
KTSX READW I,CW,5 READ TABLE CONTROL WORDS
NZ X1,KTS2 IF EOR/EOF/EOI
SA1 CW PROCESS TABLE
UX6,B7 X1
NG B7,ERR1 IF UNKNOWN TABLE
SB7 B7-TCTPL
PL B7,ERR1 IF UNKNOWN TABLE
JP TCTP+TCTPL+B7 EXECUTE DUMP PROCESSOR
KTS2 NG X1,KTS3 IF EOF/EOI
WRITER O,R END OUTPUT RECORD
RJ CFA CLEAR FILE ARGUMENTS
EQ KTS1 LOOP TO END OF FILE
KTS3 WRITER O,R END OUTPUT RECORD
KTS4 MESSAGE (=C* KTSDMP COMPLETE.*)
ENDRUN
* APPEND *IF* TO PERMENANT FILE *OF*.
KTS5 SA1 O+B1 SET *EP* BIT
SX2 B1
LX2 44
BX6 X1+X2
SX7 MBUF SET ERROR MESSAGE RETURN ADDRESS
SA6 A1
SA7 O+CFPW
KTS6 ATTACH O,,,,M
SA1 X2 CHECK ERROR FLAG
MX0 -8
LX1 -10
BX2 -X0*X1
ZR X2,KTS7 IF NO ERROR ON ATTACH
SX2 X2-1
NZ X2,ERR4 IF NOT *FILE BUSY*
BX6 X0*X1 CLEAR STATUS FIELD
LX6 10
SA6 A1+
ROLLOUT ZR WAIT FOR FILE NOT BUSY
EQ KTS6 RETRY OPERATION
KTS7 SA1 A1+B1 CLEAR *EP* BIT
MX2 -1
SX7 B0 CLEAR ERROR ADDRESS
LX2 44
BX6 X1*X2
SA7 O+CFPW
SA6 A1
SKIPEI O POSITION TO WRITE AT EOI
KTS8 READ I COPY RECORD
RECALL O
KTS9 READW I,BUF,100B
NZ X1,KTS10 IF EOR/EOF/EOI
WRITEW O,BUF,100B
EQ KTS9 LOOP TO EOR
KTS10 NG X1,KTS4 IF EOF/EOI
WRITEW O,BUF,X1-BUF TERMINATE RECORD
WRITER O
EQ KTS8 LOOP TO EOF
SPACE 4
* TABLE OF FUNCTION PROCESSORS.
TCTP BSS 0
LOC 0
EQ GIN GENERAL INFORMATION
EQ MED MEMORY DUMP
EQ XPD EXCHANGE PACKAGE DUMP
EQ CBD COMMUNICATION BLOCK DUMP
EQ DBD DATA BUFFER DUMP
TCTPL BSS 0 LENGTH OF TABLE
LOC *O
GIN TITLE PROCESS TABLE 0 - GENERAL INFORMATION.
GIN SPACE 4,10
** GIN - PROCESS GENERAL INFORMATION TABLE.
*
* ENTRY (CW - CW+3) = TABLE CONTROL WORDS.
*
* EXIT TO *KTSX*.
*
* USES A - 1, 2, 3, 6, 7.
* X - 0, 1, 2, 3, 6, 7.
*
* CALLS SKW.
GIN BSS 0 ENTRY
SA1 CW+1 READ LABEL
SA2 A1+B1 READ DUMP DATE
SA3 A2+B1 READ DUMP TIME
BX6 X1
LX7 X2
SA6 LB STORE LABEL
SA7 DD STORE DUMP DATE
SA1 A1-B1 READ TABLE LENGTH
BX6 X3
SX0 X1+
SA6 DT STORE DUMP TIME
RJ SKW SKIP EXCESS WORDS IN TABLE
EQ KTSX RETURN
MED TITLE PROCESS TABLE 1 - MEMORY DUMP.
MED SPACE 4,15
** MED - PROCESS MEMORY DUMP TABLE.
*
* ENTRY (CW - CW+3) = TABLE CONTROL WORDS.
*
* EXIT TO *KTSX*.
* TO *ERR1* - IF UNKNOWN FILE FORMAT.
* TO *ERR2* - IF FWA .GE. LWA+1.
*
* USES A - 0, 1, 2, 3, 6, 7.
* X - ALL.
* B - 2.
*
* CALLS COD, DCM, SKW, WTL.
MED BSS 0 ENTRY
SA1 CW READ TABLE LENGTH
SA2 A1+B1 READ FWA
SA3 A2+B1 READ LWA
SX1 X1 N
SX2 X2 FWA
SX3 X3 LWA
IX4 X2+X1 FWA+N
NG X2,ERR1 IF FWA .LT. 0
NZ X3,MED1 IF LWA .NE. 0
SX3 X4-1 LWA = FWA+N-1
MED1 SX3 X3+B1 LIMIT = LWA+1
IX5 X3-X4
NG X5,MED2 IF TOO MANY WORDS ON FILE - LIMIT = LWA+1
SX3 X4+ LIMIT = FWA+N
MED2 IX7 X2-X3 FWA - LIMIT
PL X7,ERR2 IF FWA .GE. LIMIT
SB2 B1+B1 ROUND UP FWA
SX0 X2+3
AX6 X3,B2 ROUND DOWN LWA
AX0 X0,B2
LX6 X6,B2
LX7 X0,B2
SA6 LW STORE LIMIT
IX0 X7-X2 FIND NUMBER OF WORDS FWA ROUNDED UP
IX6 X6-X4
SA7 FW STORE FWA
IX6 X6+X0 DECREMENT EXCESS WORD COUNT
SA6 MEDA
RJ SKW SKIP WORDS TO FWA
SA1 FW SET SECOND TITLE LINE
RJ COD CONVERT FWA
SA1 MEDC
LX6 3*6
BX7 X1-X6
SA1 LW CONVERT LIMIT
SA7 MEDB+2
RJ COD CONVERT CONSTANT TO DISPLAY
LX6 3*6
SA0 MEDB SET TITLE ADDRESS
SA6 MEDB+3
RJ WTL WRITE TITLE LINES
RJ DCM DUMP CENTRAL MEMORY
SA1 MEDA SKIP EXCESS WORDS
PL X1,KTSX IF NO EXCESS WORDS - RETURN
BX0 -X1
SX0 X0-1
ZR X0,KTSX IF NO EXCESS WORDS - RETURN
RJ SKW SKIP EXCESS WORDS
EQ KTSX RETURN
MEDA CON 0 STORAGE FOR EXCESS WORD COUNT
MEDB DATA 1H0 SET DOUBLE SPACE
DATA 10HDUMP FROM
CON 0 STORAGE FOR FWA OF DUMP
CON 0 STORAGE FOR LWA OF DUMP
CON 0 LINE TERMINATOR
MEDC CON 2ATO&2A
XPD TITLE PROCESS TABLE 2 - EXCHANGE PACKAGE DUMP.
XPD SPACE 4,15
** XPD - PROCESS EXCHANGE PACKAGE DUMP.
*
* ENTRY (CW - CW+3) = TABLE CONTROL WORDS.
*
* EXIT TO *KTSX*.
* TO *ERR1* - UNKNOWN FILE FORMAT.
*
* USES A - 0, 1, 6, 7.
* X - 0, 1, 6, 7.
* B - 7.
*
* CALLS DCM, DXP, SKW, WTL.
*
* MACROS READW, WRITEC.
XPD BSS 0 ENTRY
SA1 CW READ TABLE LENGTH
SB7 X1-20B
NG B7,ERR1 IF .LT. 20B WORDS
READW I,BUF,20B READ EXCHANGE PACKAGE
SA0 XPDA SET TITLE ADDRESS
RJ WTL WRITE TITLE LINES
RJ DXP DUMP EXCHANGE PACKAGE
SX7 B1+ SET EXCHANGE PACKAGE DUMPED INDICATOR
SA1 CW CHECK TASK CONTROL POINT AREA PRESENT
SX0 X1-20B
SA7 EP
ZR X0,KTSX IF NO CONTROL POINT - RETURN
WRITEC O,XPDB LIST CONTROL POINT AREA HEADER
WRITEC O,XPDC
SX7 X0+20B SET DUMP FROM 20 TO 20+M (MOD 4)
IX6 X7-X0
AX7 2 ROUND LWA DOWN
SA6 FW
LX7 2
IX6 X0-X7
SA7 LW
SX6 X6+20B
SA6 XPDD SAVE EXCESS WORD COUNT
RJ DCM DUMP IN CM FORMAT
SA1 XPDD READ EXCESS WORD COUNT
SX0 X1+
RJ SKW SKIP EXCESS WORDS
EQ KTSX RETURN
XPDA DATA 1H0 DOUBLE SPACE CARRIAGE CONTROL
DATA C*EXCHANGE PACKAGE.*
XPDB DATA 1H- TRIPLE SPACE CARRIAGE CONTROL
DATA C*TASK CONTROL POINT AREA.*
XPDC DATA 1L BLANK LINE
XPDD CON 0
CBD TITLE PROCESS TABLE 3 - COMMUNICATION BLOCK DUMP.
CBD SPACE 4,15
** CBD - PROCESS COMMUNICATION BLOCK DUMP.
*
* ENTRY (CW - CW+3) = TABLE CONTROL WORDS.
*
* EXIT TO *KTSX*.
*
* USES A - 0, 1, 6, 7.
* X - 0, 1, 6, 7.
* B - 2.
*
* CALLS CDD, COD, DCM, SFN, SKW, WTL.
*
* MACROS WRITEC.
CBD BSS 0 ENTRY
SX6 COMC SET FWA OF TASK LOAD
SA1 CW CALCULATE LWA+1
SA6 FW STORE FWA
SX1 X1 NUMBER OF WORDS
SB2 B1+B1 ROUND DOWN NUMBER OF WORDS
AX0 X1,B2
LX0 X0,B2
IX7 X1-X0 NUMBER OF EXCESS WORDS IN TABLE
IX6 X6+X0 SET LWA+1
SX1 COMC+COMCL-1 SET LWA OF COMMUNICATION BLOCK
SA7 CBDC
SA6 LW STORE LIMIT
RJ COD CONVERT LWA
BX6 X4
SA1 CW+B1 SET TITLE LINE
MX0 42
SA6 CBDB
BX1 X0*X1
RJ SFN SPACE FILL NAME
SA6 CBDB+2
SA1 CW+2 CONVERT *TRF* NUMBER
MX0 -24
BX1 -X0*X1
RJ COD CONVERT TO OCTAL DISPLAY CODE
LX6 6
MX0 54
SX1 1RB
BX6 X0*X6
BX6 X6+X1
SA6 CBDB+4
SA1 CW+3 CONVERT CALL ADDRESS
SX1 X1+
RJ COD CONVERT TO DECIMAL
BX6 X4
SA0 CBDA SET TITLE ADDRESS
SA6 CBDB+6
SA1 EP
NZ X1,CBD1 IF EXCHANGE PACKAGE DUMPED FOR THIS RECORD
RJ WTL WRITE TITLE LINES
EQ CBD2 WRITE BLANK LINE
CBD1 WRITEC O,CBDA WRITE COMMUNICATION BLOCK HEADER
CBD2 WRITEC O,CBDD
RJ DCM DUMP CENTRAL MEMORY
SA1 CBDC READ EXCESS WORD COUNT
BX0 X1
RJ SKW SKIP EXCESS WORDS
EQ KTSX RETURN
CBDA DATA 1H- SET TRIPLE SPACE
DATA H*COMMUNICATION BLOCK DUMP FROM "CMBM" TO *
CBDB CON 0 LWA
DATA 10H PROGRAM
CON 0 TASK/PROGRAM NAME
DATA 10H SEQUENCE
CON 0 SEQUENCE NUMBER
DATA 10H ADDRESS
CON 0 CALL ADDRESS
CON 0 LINE TERMINATOR
CBDC CON 0
CBDD DATA 1L BLANK LINE
DBD TITLE PROCESS TABLE 4 - DATA BUFFER DUMP.
DBD SPACE 4,15
** DBD - PROCESS DATA BUFFER DUMP.
*
* ENTRY (CW - CW+4) = TABLE CONTROL WORDS.
*
* EXIT TO *KTSX*.
* TO *ERR1* - IF UNKNOWN FILE FORMAT.
*
* USES A - 0, 1, 2, 6, 7.
* X - 0, 1, 2, 6, 7.
*
* CALLS DCM, OCB, SFN, SKW, WOD, WTL.
*
* MACROS WRITEW.
DBD BSS 0 ENTRY
SX6 0 SET FWA OF DUMP
SA1 CW FIND LWA+1
SA6 FW
SX7 X1+ LWA+1
SX1 X1
AX7 2 ROUND DOWN LWA+1
ZR X1,KTSX IF TABLE EMPTY - RETURN
LX7 2
IX6 X1-X7 EXCESS WORDS
NG X1,ERR1 IF N .LT. ZERO
SA7 LW STORE LWA
SA6 DBDF SAVE EXCESS
SA1 CW+1 SET DATA BASE, FILE NAME IN TITLE
MX0 42
BX1 X0*X1
RJ SFN SPACE FILL NAME
SA6 DBDA+3
SA0 DBDA SET FWA OF LINE TO BE WRITTEN
RJ WTL WRITE TITLE LINES
SA1 DBDB SET KEY VALUE
SA2 DBDC
BX6 X1
LX7 X2
SA6 BUFO
SA7 BUFO+1
SA6 BUFO+3
SX7 0
SA1 CW+2 CONVERT KEY VALUE
SA7 BUFO+2
RJ OCB OCTAL CONVERSION TO BUFO+4, +5
SA1 CW+2 SET DISPLAY INTERPRETATION
RJ SFN SPACE FILL NAME
SA2 TERM GET TERMINAL OUTPUT FLAG
SX7 B0+ TERMINATE LINE
NZ X2,DBD1 IF OUTPUT TO TERMINAL
SA6 A6+1
DBD1 SA7 A6+1
SA2 DBDB STORE SECOND KEY VALUE WORD
SA1 CW+3
BX6 X2
SA6 A7+B1
RJ OCB CONVERT WORD 2
SA1 CW+3
RJ SFN SPACE FILL NAME
SA2 TERM GET TERMINAL OUTPUT FLAG
SX7 B0+
NZ X2,DBD2 IF OUTPUT TO TERMINAL
SA6 A6+1
DBD2 SA7 A6+1
WRITEW O,BUFO,A7-BUFO+1 LIST KEY VALUE
SA1 CW+4 CONVERT PRU NUMBER
RJ WOD CONVERT WORD TO OCTAL DISPLAY
SA1 CW+4 CONVERT STATUS
SA6 DBDD+3
RJ WOD CONVERT WORD TO OCTAL DISPLAY
SA7 DBDE+2
WRITEW O,DBDD,DBDDL LIST PRU, STATUS
RJ DCM DUMP CENTRAL MEMORY BUFFER
SA1 DBDF READ EXCESS WORD COUNT
BX0 X1
RJ SKW SKIP EXCESS WORDS
EQ KTSX RETURN
DBDA DATA 1H0 DOUBLE SPACE PAGE HEADER
DATA H*DATA BUFFER DUMP OF *
CON 0 DB,FN
CON 0 LINE TERMINATOR
DBDB DATA 10H
DBDC DATA 10HKEY VALUE
DBDD DATA 2L
DATA 10H
DATA 10HPRU
CON 0 PRU NUMBER
CON 0
DBDE DATA 10H
DATA 10HSTATUS
CON 0 STATUS
CON 0
DATA 2L
DBDDL EQU *-DBDD
DBDF CON 0
CFA TITLE SUBROUTINES.
CFA SPACE 4,10
** CFA - CLEAR FILE ARGUMENTS.
*
* EXIT (LB), (DD), AND (DT) RESET TO (CFAA).
*
* USES A - 1, 6, 7.
* X - 1, 6, 7.
CFA SUBR ENTRY/EXIT
SA1 CFAA RESET LABEL, DUMP DATE, DUMP TIME
BX6 X1
LX7 X1
SA6 LB
SA7 DD
SA6 DT
EQ CFAX RETURN
CFAA CON 1H BLANKS
COF SPACE 4,10
** COF - CHECK OUTPUT FILE NAME AND ASSIGNMENT.
*
* EXIT (X2) = FWA OF ERROR MESSAGE - IF ERROR.
* TO *ERR3* - IF OUTPUT FILE IS TERMINAL FILE AND *DMD*
* TYPE DUMP REQUESTED.
*
* USES A - 1, 2, 4, 6, 7.
* X - 1, 2, 4, 6, 7.
*
* CALLS STF.
COF SUBR ENTRY/EXIT
SX2 O
RJ STF CHECK FILE ASSIGNMENT
NZ X6,COFX IF OUTPUT NOT ASSIGNED TO TERMINAL
SA1 DF
ZR X1,ERR3 IF DISPLAY DUMP REQUESTED
SA4 COFB TERMINAL DUMP CONTROL WORD
BX6 X4
SA2 COFA CLEAR AUTO EJECT
LX7 X2
SA6 DC NEW DUMP CONTROL WORD
SA7 WTLB
SX6 B1+ SET TERMINAL OUTPUT FLAG
SX7 BUF1+2
SA6 TERM
SA7 IND
SA1 COFC CLEAR OTHER CARRIAGE CONTROL CHARACTERS
BX6 X1
LX7 X1
SA6 MEDB
SA7 XPDA
SA6 XPDB
SA7 CBDA
SA6 DBDA
SA7 WTLA
EQ COFX RETURN
COFA CON 1L
COFB VFD 6/30B,18/0,18/1,18/2 TERMINAL DUMP CONTROL WORD
COFC DATA 10H BLANK FILLER
DCK SPACE 4,15
** DCK - STRING OUT DATA.
*
* ENTRY (X6) = FIRST CONVERTED WORD OF DUMP.
* (X7) = SECOND CONVERTED WORD OF DUMP.
* (B3) = INDEX OF SPACE.
* (A7) = LOCATION IN DESTINATION LINE.
*
* EXIT WORDS PACKED AND INTERPRETED INTO BUFFER.
*
* USES A - 3, 4, 6, 7.
* X - 2, 3, 4, 6, 7.
* B - 2, 3, 4, 5.
DCK SUBR ENTRY/EXIT
SB4 B3
SB5 1
BX3 X6 SAVE (X6)
DCK1 SA4 B4+SBUF+19
SB4 B4-B1
BX6 X4
SA6 B4+SBUF
PL B4,DCK1 IF TRANSFER RESIDUE
NG B7,DCK2 IF NO SPACE PRESENT
SX6 1R
SA6 B3+SBUF
SB3 B3+1
DCK2 SB2 10
MX2 6
DCK3 BX6 X2*X3
LX6 6
SA6 B3+SBUF
SB2 B2-B1 SHIFT COUNT
LX3 6
SB3 B3+1
NZ B2,DCK3 IF COMPLETE STRING
BX3 X7
SB5 B5-B1
ZR B5,DCK2 IF ZERO - PROCESS SECOND WORD
SB5 B1
SB3 B0
DCK4 SB2 10
SX7 0
DCK5 SA3 B3+SBUF
NZ X3,DCK6 IF NOT A 0-CHARACTER
SX3 1R
DCK6 LX7 6
BX7 X7+X3
SB3 B3+B1
SB2 B2-B1
NZ B2,DCK5 IF COMPLETE STRING
SA7 A7+B1
SB5 B5-B1
ZR B5,DCK4 IF ZERO - DO SECOND WORD
EQ DCKX RETURN
DCM SPACE 4,15
** DCM - DUMP CENTRAL MEMORY.
*
* ENTRY (FW) = FWA OF DUMP.
* (LW) = LIMIT ADDRESS OF DUMP.
*
* EXIT TO *ERR1* - IF PREMATURE EOR/EOF/EOI.
*
* USES A - 0, 1, 2, 3, 5, 6, 7.
* X - ALL.
* B - 2, 6, 7.
*
* CALLS COD, OCT, RDW=.
*
* MACROS READW, WRITEW.
DCM4 SA1 LA READ ADDRESS
RJ COD CONVERT OCTAL TO DISPLAY
SA1 DB SET BLOCK INDEX
LX6 2*6
SA0 BUF1+X1
SA6 BUF
SB7 X5
RJ OCT LIST MEMORY IN OCTAL
DCM SUBR ENTRY/EXIT
SA1 FW SET LINE ADDRESS
SA5 DC SET DUMP CONTROL
SX6 X1
BX7 X7-X7 CLEAR BUFFER INDEX
SA6 LA
SA7 DB
READW I,BUF1,X5 READ FIRST BLOCK
DCM1 SA1 LA CONVERT LINE ADDRESS
RJ COD CONVERT OCTAL TO DISPLAY
SA1 DB SET BLOCK INDEX
LX6 2*6
SA0 BUF1+X1 FWA OF MEMORY TO CONVERT
SA6 BUF DESTINATION ADDRESS - 1
SB7 X5 WORD COUNT
RJ OCT LIST MEMORY IN OCTAL
SA5 DC SET DUMP CONTROL
SA1 DB TOGGLE DUMP BLOCK
SX2 X5
BX6 X1-X2
SA6 A1
BX0 X1-X2
* READW I,BUF1+X0,X5 READ NEXT BLOCK
DCM2 SB6 BUF1+X0
SB7 X5+
SX2 I
RJ RDW= READ SPECIFIED NUMBER OF WORDS
SA3 LA ADVANCE LINE ADDRESS
NZ X1,ERR1 IF EOR/EOF/EOI
SA1 BUF1 LOAD FIRST WORD PAIR
SA2 IND
SA2 X2
LX4 X5,B1 SET WORD COUNT
SB2 X5
BX7 X7-X7 CLEAR DIFFERENCE
SX6 X3+B2
DCM3 BX3 X1-X2 COMPARE WORDS
LX4 1 COUNT WORD
SA1 A1+B1
BX7 X7+X3 ACCUMULATE DIFFERENCES
SA2 A2+B1
NG X4,DCM3 IF .LT. ZERO - LOOP FOR ALL WRODS
SA1 A3-B1 CHECK LIMIT REACHED
IX2 X6-X1
SA6 A3+ STORE ADDRESS
SB6 X2+B2
PL B6,DCM4 IF LIMIT REACHED
NZ X7,DCM1 IF DIFFERENT WORD DETECTED
NG X7,DCM1 IF DIFFERENT WORD DETECTED
NG X5,DCM2 IF DUPLICATE LINE SET
WRITEW O,DCMA,DCMAL
MX1 1 SET DUPLICATE LINE
BX5 X1+X5
EQ DCM2 CONTINUE DUMPING MEMORY
DCMA DATA 1H BLANKS
DATA C*DUPLICATED LINES.*
DCMAL EQU *-DCMA
DXP SPACE 4,15
** DXP - DUMP EXCHANGE PACKAGE.
*
* ENTRY (BUF - BUF+17B) = EXCHANGE PACKAGE.
*
* EXIT CONVERTED EXCHANGE PACKAGE WRITTEN TO OUTPUT BUFFER.
*
* USES A - 0, 1, 2, 5, 6.
* X - 0, 1, 2, 3, 5, 6.
* B - 2.
*
* CALLS COD, OCB.
*
* MACROS WRITEW.
DXP SUBR ENTRY/EXIT
SA0 0 INITIALIZE REGISTER INDEX
SA5 BUF
DXP1 SA1 DXPA+A0 SET REGISTER NAME
SA2 DXPB
MX0 4*6
SB2 X1 SET SHIFT
BX3 X0*X1
LX3 4*6
IX6 X2+X3
MX0 -18
SA6 BUFO
NG X1,DXP2 IF BLANK FIELD
LX2 X5,B2 EXTRACT REGISTER
BX1 -X0*X2
RJ COD CONVERT OCTAL TO DISPLAY
DXP2 LX6 4*6 CONVERT A-REGISTER
SX3 2RA0-2R +A0
IX6 X6+X3
SA6 A6+B1
LX5 -18
SX0 1RB-1R
MX2 -18
BX1 -X2*X5
RJ COD CONVERT OCTAL TO DISPLAY
LX6 3*6
IX6 X6+X0
SA6 A6+B1
LX5 18 CONVERT B-REGISTER
SX0 1R0-1R +A0
MX2 -18
BX1 -X2*X5
LX0 54
RJ COD CONVERT OCTAL TO DISPLAY
LX6 2*6
IX6 X6+X0
SA6 A6+1
BX6 X6-X6 CLEAR LAST WORD
SA6 A6+B1
WRITEW O,BUFO,A6-BUFO+1
SA0 A0+1 ADVANCE REGISTER
SB2 A0-10B
SA5 BUF+A0 READ REGISTER
NZ B2,DXP1 IF MORE A-REGISTERS TO PROCESS
WRITEW O,(=C* *),B1 SPACE
DXP3 SA2 DXPC CONVERT X-REGISTERS
SX3 A0-10B
LX3 2*6
IX6 X2+X3
SA1 BUF+A0
SA6 BUFO
RJ OCB CONVERT OCTAL BY BYTES
BX6 X6-X6
SA6 A6+B1
WRITEW O,BUFO,A6-BUFO+1
SA0 A0+1 ADVANCE REGISTER
SB2 A0-20B
NZ B2,DXP3 IF NOT ZERO - PROCESS END OF REGISTERS
EQ DXPX RETURN
DXPA VFD 24/0HP,36/24
VFD 24/0HRA,36/24
VFD 24/0HFL,36/24
VFD 24/0HEM,36/12
VFD 24/0HRAE,36/18
VFD 24/0HFLE,36/18
VFD 24/0HMA,36/24
VFD 60/1H
DXPB DATA 6L
DXPC DATA 4AX0
DXPAL EQU *-DXPA LENGTH OF EXCHANGE PACKAGE
ERR SPACE 4,10
** ERR - PROCESS ERROR.
*
* MACROS ABORT, MESSAGE.
ERR MESSAGE X2,0,R ISSUE DAYFILE MESSAGE
ABORT
ERR1 SX2 ERRA * UNKNOWN FILE FORMAT.*
EQ ERR PROCESS ERROR
ERR2 SX2 ERRB * FWA .GE. LWA+1.*
EQ ERR PROCESS ERROR
ERR3 SX2 ERRC * DISPLAY DUMP NOT ALLOWED TO TERMINAL.*
EQ ERR PROCESS ERROR
ERR4 SX2 MBUF * XXXXXXX NOT FOUND.*
EQ ERR PROCESS ERROR
ERRA DATA C* UNKNOWN FILE FORMAT.*
ERRB DATA C* FWA .GE. LWA+1.*
ERRC DATA C* DISPLAY DUMP NOT ALLOWED TO TERMINAL.*
OCB SPACE 4,15
** OCB - CONVERT OCTAL BY BYTES.
*
* ENTRY (X1) = WORD TO CONVERT.
* (A6) = BUFFER ADDRESS.
*
* EXIT (A6) = BUFFER ADDRESS ADVANCED.
*
* USES A - 1, 6, 7.
* X - ALL.
*
* CALLS WOD.
OCB SUBR ENTRY/EXIT
RJ WOD CONVERT WORD (ABCDEFGHIJ KLMNOPQRST)
SA1 OCBA
MX2 -2*6
BX5 -X2*X6 ........IJ
MX0 4*6
BX3 X0*X6 ABCD......
LX0 -4*6
IX4 X1+X3 ABCD*....*
BX2 X0*X6
LX2 -6 .....EFGH.
BX6 X4+X2 ABCD*EFGH*
LX7 -4*6 QRSTKLMNOP
SA6 A6+B1
MX0 4*6
BX6 X0*X7 QRST......
LX5 8*6 IJ........
BX7 -X0*X7 ....KLMNOP
LX7 2*6 ..KLMONP..
IX2 X5+X7 IJKLMNOP..
BX3 X0*X2 IJKL......
LX0 -4*6
IX4 X1+X3 IJKL*....*
BX5 X0*X2 ....MNOP..
SA1 A1+B1 ....******
LX5 -6 .....MNOP.
IX7 X4+X5 IJKL*MNOP*
BX6 X1+X6 QRST******
SA7 A6+B1
SA6 A7+B1
EQ OCBX RETURN
OCBA VFD 24/0,6/1R ,24/0,6/1R
VFD 24/0,36/6H
OCT SPACE 4,15
** OCT - LIST OCTAL OR OCTAL WITH DISPLAY.
*
* ENTRY (B7) = WORD COUNT.
* (A0) = WORD ADDRESS.
* (A6) = DESTINATION ADDRESS - 1.
*
* EXIT NONE.
*
* USES A - 1, 2, 6, 7.
* X - ALL.
* B - 6, 7.
*
* CALLS WOD, SFN.
*
* MACROS WRITEW.
OCT SUBR ENTRY/EXIT
SA1 A0 READ FIRST WORD
SB6 B7
SA2 DF READ CONVERSION TYPE FLAG
ZR X2,OCT2 IF DISPLAY DUMP REQUESTED
OCT1 RJ WOD CONVERT WORD TO DISPLAY
MX5 5*6
BX3 X5*X6 ABCDE.....
SA2 OCTA
LX3 -4*6 ....ABCDE.
BX1 -X5*X6 .....FGHIJ
IX6 X2+X3 ****ABCDE*
SA2 A2+B1
LX1 5*6 FGHIJ.....
BX4 -X5*X7 .....PQRST
MX3 -4*6
IX2 X2+X1 FGHIJ*....
SA6 A6+B1
LX7 -6*6 OPQRSTKLMN
BX0 -X3*X7 ......KLMN
SA3 A2+B1
IX6 X2+X0 FGHIJ*KLMN
MX5 1*6
SA6 A6+B1
IX4 X3+X4 ***.*PQRST
SB7 B7-B1
BX3 X5*X7 O.........
SA1 A1+B1 NEXT DUMP BLOCK WORD
LX4 3*6 .*PQRST***
IX6 X3+X4 O*PQRST***
SA6 A6+B1
NZ B7,OCT1 IF NOT ZERO - CONTINUE CONVERTING
MX6 0
SA6 A6+B1
WRITEW O,BUF,A6-BUF+1
EQ OCTX RETURN
* LIST MEMORY WITH DISPLAY CODE INTERPRETATION.
OCT2 RJ WOD CONVERT WORD TO OCTAL
SA6 A6+1
SA7 A6+1
OCT3 SA1 A1+1 NEXT DUMP BLOCK
RJ WOD CONVERT WORD TO OCTAL
SB7 B7-1
ZR B7,OCT4 IF END OF NUMBER FORMATTING
SB2 3
SB3 B2-B7
RJ DCK STRING OUT DATA
EQ OCT3 PROCESS NEXT WORD
OCT4 SB6 B1
SA1 A0-B1
SB3 3
OCT5 SA1 A1+B1
BX6 X1
SA1 A1+B1
BX7 X1
RJ DCK STRING OUT DATA
SB6 B6-B1
SB7 B7-B1
SB3 4
PL B6,OCT5 IF POSITIVE - CONTINUE COMMENTS
MX6 0
SX7 B0
RJ DCK FLUSH BUFFER AND ADD TERMINATING BYTE
MX2 24
SA1 BUF+13
BX6 X2*X1 SET TERMINATION BYTE
SA6 A1
WRITEW O,BUF,A7-BUF
EQ OCTX RETURN
OCTA BSS 0
VFD 24/1H ,30/0,6/1H
VFD 30/0,6/1H ,24/0
VFD 18/1H ,6/0,6/1H ,30/0
OCTB CON 1H
SKW SPACE 4,10
** SKW - SKIP WORDS.
*
* ENTRY (X0) = WORD COUNT.
*
* USES X - 0.
*
* MACROS READW.
SKW SUBR ENTRY/EXIT
SKW1 ZR X0,SKWX IF NO WORDS TO SKIP - RETURN
SX0 X0-100B
PL X0,SKW2 IF .GE. 100B WORDS TO SKIP
READW I,BUF,X0+100B SKIP
EQ SKWX RETURN
SKW2 READW I,BUF,100B SKIP
EQ SKW1 LOOP
WTL SPACE 4,10
** WTL - WRITE TITLE LINES.
*
* ENTRY (A0) = ADDRESS OF SECOND TITLE LINE.
*
* MACROS CLOCK, WRITEC, WRITEW.
WTL SUBR ENTRY/EXIT
CLOCK TM GET TIME
WRITEW O,WTLA,WTLAL WRITE LINE ONE
WRITEC O,A0 WRITE LINE TWO
WRITEW O,(=C* *),B1 SPACE
WRITEW O,WTLB,B1 SET AUTO EJECT
EQ WTLX RETURN
WTLA BSS 0 TITLE LINES
DATA 10H1 EJECT PAGE
DATA 10HKTSDMP -
LB CON 0 LABEL
DD CON 0 DUMP DATE
DT CON 0 DUMP TIME
DATA 10H BLANKS
DA CON 0 CURRENT DATE
TM CON 0 CURRENT TIME
CON 0 LINE TERMINATOR
WTLAL EQU *-WTLA
WTLB DATA 1LR SET AUTO EJECT
SPACE 4
* COMMON DECKS.
*CALL COMCCDD
*CALL COMCCIO
*CALL COMCCOD
*CALL COMCCPM
*CALL COMCPFM
*CALL COMCRDW
*CALL COMCSFN
*CALL COMCSTF
*CALL COMCSYS
*CALL COMCWOD
*CALL COMCWTC
*CALL COMCWTW
BUFFERS TITLE BUFFERS.
* BUFFERS.
USE BUFFERS.
BUFFERS BSS 0
IBUF EQU BUFFERS INPUT FILE BUFFER
OBUF EQU IBUF+IBUFL OUTPUT FILE BUFFER
BUF EQU OBUF+OBUFL WORKING BUFFER
BUFO EQU BUF+20B EXCHANGE PACKAGE OUTPUT BUFFER
BUF1 EQU BUF+400B DUMP BUFFERS
BUF2 EQU BUF1+4 DUMP BUFFER
SBUF EQU BUF1-24 STRING BUFER FOR DISPLAY CODE
RFL= EQU BUF2+10B
USE *
PRS TITLE PRESET.
** PRS - PRESET KTSDMP.
*
* EXIT (X5) = .GT. 0 - APPEND *IF* TO *P*.
* (X5) = 0 - LIST *IF* TO *OF*.
* (DA) = CURRENT DATE.
* (DF) = 0 - LIST WITH DISPLAY CODE.
* (DF) = 1 - LIST WITH OCTAL ONLY.
*
* USES B - 7.
* A - 1, 2, 3, 6, 7.
* X - 0, 1, 2, 3, 5, 6, 7.
*
* MACROS ABORT, DATE, MESSAGE.
ORG BUFFERS
PRS SUBR ENTRY/EXIT
SA1 ACTR READ ARGUMENT COUNT
SA2 ARGR READ FIRST ARGUMENT
SB7 X1
MX0 42
ZR B7,PRS2 IF NO ARGUMENTS - COMPLETE PRESETTING
SX3 3
ZR X2,PRS1 IF DEFAULT INPUT FILE
BX6 X0*X2 SET INPUT FILE NAME
IX7 X6+X3
SA7 I
PRS1 SB7 B7-B1 DECREMENT NUMBER OF REMAINING ARGUMENTS
ZR B7,PRS2 IF END OF ARGUMENTS
SA2 A2+B1 READ SECOND ARGUMENT
ZR X2,PRS2 IF DEFAULT OUTPUT FILE NAME
BX6 X0*X2 STORE OUTPUT FILE NAME
IX7 X6+X3
SB7 B7-1 DECREMENT ARGUMENT COUNT
SA7 O
PRS2 SA1 I CHECK FILE NAME CONFLICT
SA3 O
BX6 X1-X3
BX7 X0*X6
ZR X7,PRS5 IF I = O
ZR B7,PRS4 IF ARGUMENT COUNT EXHAUSTED
SA2 A2+B1 READ *APPEND* PARAMETER
SB7 B7-B1
BX2 X0*X2
ZR X2,PRS3 IF NULL ARGUMENT
SX5 1 SET *APPEND* FLAG
ZR B7,PRS4 IF ARGUMENT COUNT EXHAUSTED
PRS3 SA2 A2+B1 READ *OCTAL* PARAMETER
BX2 X0*X2
ZR X2,PRS4 IF NO PARAMETER SPECIFIED
SX6 B1
SA6 DF
PRS4 DATE DA
EQ PRSX RETURN
PRS5 MESSAGE PRSA,R
ABORT
PRSA DATA C* FILE NAME CONFLICT.*
SPACE 4
END