cdc:nos2.source:opl871:tdump
Table of Contents
TDUMP
Table Of Contents
- [00006] TDUMP - FILE DUMP.
- [00012] FILE DUMP.
- [00044] READO - REDEFINE READ WORD MACRO TO USE CONTROL WORD READS.
- [00052] EQUIVALENCES AND CONSTANTS.
- [00096] MAIN PROGRAM.
- [00230] SUBROUTINES.
- [00232] BSB - BLANK FILL STRING BUFFER.
- [00252] CKL - CHECK LIMITS ON ALL COUNTERS.
- [00286] CPL - CHECK PAGE LIMIT.
- [00334] ELH - ENTER DUMP LINE HEADER.
- [00388] ESB - ENTER STRING BUFFER.
- [00411] FAW - FORMAT ALPHA WORD.
- [00515] FHW - FORMAT HEXADECIMAL WORD.
- [00566] FML - FORMAT PRINT LINE(S).
- [00651] FOW - FORMAT OCTAL WORD.
- [00704] RDA - READ DATA (READO MACRO).
- [00761] TDS - TERMINATE DUMP SEGMENT.
- [00798] WBL - WRITE BLANK LINE.
- [00816] WSB - WRITE STRING BUFFER.
- [00876] PRESET PROGRAM
- [00878] PRE - PRESET PROGRAM.
- [01019] CDT - CHECK DEVICE TYPE.
Source Code
- TDUMP.txt
- IDENT TDUMP,ASEM
- ABS
- ENTRY TDUMP
- ENTRY RFL=
- SST LREC
- TITLE TDUMP - FILE DUMP.
- SYSCOM B1
- SPACE 4
- *COMMENT TDUMP - FILE DUMP.
- COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
- SPACE 4
- *** TDUMP - FILE DUMP.
- * R. N. LAGERSTROM. 70/03/05.
- * D. A. HIVELEY. 72/05/16.
- SPACE 4
- *** TDUMP WILL LIST A FILE IN OCTAL, ALPHANUMERIC OR HEXADECIMAL
- * FORM. ANY OR ALL OF THE THREE FORMS MAY BE SELECTED IN ANY
- * COMBINATION. EACH LINE OF THE DUMP IS LISTED IN EACH OF THE
- * SELECTED FORMS - OCTAL, ALPHANUMERIC, AND/OR HEXADECIMAL, IN
- * THAT ORDER. BY DEFAULT, AN OCTAL/ALPHANUMERIC DUMP IS DONE
- * ON THE ENTIRE DATA FILE.
- SPACE 4
- *** CONTROL CARD CALL.
- *
- * TDUMP(P1,P2,...,PN)
- *
- * WHERE PN CAN BE -
- * I=FN INPUT FILE NAME (DEFAULT = TAPE1).
- * L=FN OUTPUT FILE NAME (DEFAULT = OUTPUT).
- * O OCTAL DUMP (DEFAULT = O AND A).
- * A ALPHANUMERIC DUMP (DEFAULT = O AND A).
- * H HEXADECIMAL DUMP (DEFAULT = O AND A).
- * R=NN RECORD COUNT(DECIMAL) (DEFAULT = TO EOI).
- * F=NN FILE COUNT(DECIMAL) (DEFAULT = TO EOI).
- * F=0 DUMP TO DOUBLE EOF (EMPTY FILE)
- * N=NN LINE LIMIT OF DUMP(DECIMAL) (DEFAULT = INFINITE).
- * C READ FILE I IN CODED MODE (DEFAULT = BINARY MODE).
- * NR DO NOT REWIND FILE I BEFORE DUMP (DEFAULT = REWIND).
- * CW PRINT CONTROL WORDS IF DEFINED ON DEVICE TYPE.
- SPACE 4
- *CALL COMCMAC
- *CALL COMCCMD
- READO SPACE 4
- ** READO - REDEFINE READ WORD MACRO TO USE CONTROL WORD READS.
- PURGMAC READO
- READO MACRO F
- SA1 F+2
- RJ RDA
- ENDM
- TITLE EQUIVALENCES AND CONSTANTS.
- OLWSL EQU 136 LINE LENGTH (CHARACTERS)
- BUFOL EQU 512*2+1 LENGTH OF OUTPUT BUFFER
- BUFFL EQU 20011B LENGTH OF *TAPE1* BUFFER
- ODFEL EQU 16 OPTICAL DISK FET EXTENSION LENGTH
- OPBO EQU 0 BIT FOR OPTION O (OCTAL DUMP)
- OPVO EQU 1S0 VALUE FOR OPTION O
- OPBA EQU 1 BIT FOR OPTION A (ALPHANUMERIC DUMP)
- OPVA EQU 1S1 VALUE FOR OPTION A
- OPBH EQU 2 BIT FOR OPTION H (HEXADECIMAL DUMP)
- OPVH EQU 1S2 VALUE FOR OPTION H
- SPACE 4
- ORG 110B
- ASEM EQU *
- RECT CON 1 RECORD COUNT
- FLCT CON 1 FILE COUNT
- PGCT CON 1 PAGE COUNT
- WDCT CON 0 WORD COUNT
- RPCT CON 0 REPEAT COUNT - SKIPPED LINES
- TLCT CON 0 TOTAL LINE COUNT
- LILM DATA 1C0 LINE LIMIT
- LREC DATA 1C0 RECORD LIMIT
- LFLC DATA 0L999999 FILE LIMIT (EOI)
- REWD CON 0 REWIND FILE
- LSCT CON 99999,0 LINE COUNT ON PAGE
- LL EQU LSCT+1 LINE LIMIT
- SCPC CON 0 BYTE POSITION
- OPWD CON OPVO+OPVA OPTION CONTROL WORD (PRESET OCTAL/ALPHA)
- EQTW CON 0 EQUIVALENCE TEST WORD
- EOFL CON 0 END OF FILE FLAG
- DTOL BSSZ 4 DATA FOR ONE LINE
- WCBL CON 0 BEGINNING OF LINE WORD COUNT
- TCCS CON 0 TERMINAL-S CURRENT CHARACTER SET
- TSRW BSSZ 2 TERMINAL STATUS REPLY WORDS
- TF CON 1 ZERO IF TERMINAL FILE
- CODD CON 0 INPUT FILE MODE (0=BINARY, 2=CODED)
- CW CON 0 CONTROL WORD FLAG (1=LEGAL)
- CWDS CON 0 CONTROL WORD DUMP SELECTED (1=SELECTED)
- * WORDS/LINE TABLE INDEXED BY *TF*.
- WPLT BSS 0
- CON 2 TERMINAL
- CON 4 NON-TERMINAL
- TITLE MAIN PROGRAM.
- * MAIN ROUTINE.
- TDM SA1 CW CHECK CONTROL WORDS LEGAL
- ZR X1,TDM0 IF CONTROL WORDS NOT LEGAL
- MX6 1 SET FIRST READ FLAG
- SA6 F-2
- READCW F,17B INITIAL FILE READ
- JP TDM1
- TDM0 READ F NORMAL FILE READ
- TDM1 SA0 B0 CLEAR ENTRY POSITION
- BX6 X6-X6
- SA6 WDCT CLEAR WORD COUNT
- SA6 WCBL CLEAR BEGINNING OF LINE COUNT
- TDM1.1 READO F READ WORD FROM FILE
- NZ X1,TDM5 IF EOR OR EOF
- BX7 X7-X7
- SX2 B1
- SA7 EOFL CLEAR EOF FLAG
- SA6 DTOL+A0 STORE IN LINE WORD BUFFER
- SA1 WDCT
- IX6 X1+X2 ADVANCE WORD COUNT
- SA6 A1
- SA0 A0+B1 ADVANCE POSITION COUNT
- SA1 TF
- SA2 X1+WPLT
- SB2 X2
- SX1 A0-B2
- NZ X1,TDM1.1 IF NOT FULL LINE
- SA4 WPLT TERMINAL WORD COUNT
- SB3 X4
- SA1 DTOL WORD 1
- SA2 A1+B1
- SA3 A2+B1
- SA4 A3+B1 WORD 4
- BX6 X1-X2 X6 = DIFF(1-2)
- EQ B2,B3,TDM1.2 IF TERMINAL
- BX7 X1-X3
- BX6 X6+X7 X6 = DIFF(1-2-3)
- BX7 X1-X4
- BX6 X6+X7 X6 = DIFF(1-2-3-4)
- TDM1.2 NZ X6,TDM1.3 IF NOT ALL SAME ON LINE
- PL X6,TDM4 IF ALL SAME ON LINE
- TDM1.3 BSS 0
- SA1 RPCT
- NZ X1,TDM3 IF LINES BEING SKIPPED
- TDM2 RJ FML FORMAT LIST LINE(S)
- SA0 B0 CLEAR POSITION COUNT
- ZR X1,TDM1.1 IF NO LIMIT REACHED
- EQ TDM10 PROCESS LIMIT
- TDM2.5 BX7 X3 USE OLD REPEAT COUNT
- SA7 A3
- TDM3 BX7 X7-X7
- SA2 RPCT
- SA7 A2 ZERO SUPPRESSING COUNT
- AX2 1
- ZR X2,TDM2 IF ONE LINE ONLY
- WRITEC O,MALR WRITE LINES REPEATED
- RJ CPL
- EQ TDM2
- TDM4 SA4 EQTW PREVIOUS IDENTITY LINE
- SA3 RPCT SKIP COUNT
- BX6 X1
- BX1 X1-X4
- SA6 A4 STORE NEW IDENTITY
- SX7 X3+B1 ADVANCE SKIP COUNT
- SA7 A3
- ZR X3,TDM2 IF NO SUPPRESSION RUNNING
- NZ X1,TDM2.5 IF PREVIOUS SUPPRESSION NOT CONTINUED
- NG X1,TDM2.5 IF PREVIOUS SUPPRESSION NOT CONTINUED
- SA2 WDCT
- BX7 X2
- SA0 B0 RESET WORD COUNT
- SA7 WCBL
- JP TDM1.1 GET NEXT WORD
- TDM5 NG X1,TDM6 IF EOF
- RJ TDS
- WRITEC O,MEOR WRITE EOR MESSAGE
- RJ WBL
- RJ CPL
- SA1 RECT
- SX7 X1+B1
- SA7 A1 ADVANCE RECORD COUNT
- RJ CKL
- NZ X1,TDM10 IF LIMIT REACHED
- SA1 CW CHECK TYPE OF READ FOR NEXT RECORD
- ZR X1,TDM0 IF NO CONTROL WORDS, ISSUE STANDARD READ
- JP TDM1 ELSE, FETCH FROM BUFFER
- TDM6 SA1 EOFL
- SA2 LFLC
- SX6 X1+B1 ADVANCE EOF FLAG
- NZ X2,TDM7 IF FILE LIMIT REQUESTED
- SA6 A1
- AX6 1
- NZ X6,TDM9 IF DOUBLE EOF TERMINATION
- TDM7 SA1 F
- LX1 59-0
- NG X1,TDM8 IF FILE NOT BUSY
- RECALL F
- EQ TDM7
- TDM8 LX1 60-9
- NG X1,TDM9 IF END OF INFORMATION
- RJ TDS
- WRITEC O,MEOF WRITE EOF MESSAGE
- RJ WBL
- RJ CPL
- SX6 B1
- SA6 RECT RESET RECORD COUNT
- SA2 FLCT
- SX7 X2+B1
- SA7 A2 ADVANCE FILE COUNT
- RJ CKL
- ZR X1,TDM IF NO LIMIT, GET NEXT FILE
- EQ TDM10 LIMIT TERMINATION
- TDM9 RJ TDS
- SX1 MEOI
- TDM10 WRITEC O,X1 WRITE TERMINATION MESSAGE
- RJ WBL
- RJ CPL
- WRITEC O,MEOD WRITE END OF DUMP
- WRITEF O
- MESSAGE TDMA
- ENDRUN
- TDMA DATA C* TDUMP COMPLETE.*
- TITLE SUBROUTINES.
- BSB SPACE 4
- ** BSB - BLANK FILL STRING BUFFER.
- *
- * ENTRY NONE.
- *
- * EXIT (OWLS) BLANK FILLED.
- *
- * USES A - 7.
- * X - 7.
- * B - 6, 7.
- BSB SUBR ENTRY/EXIT
- SX7 1R
- SB7 OLWS+OLWSL
- SB6 OLWS
- BSB1 SA7 B6
- SB6 B6+B1
- NE B6,B7,BSB1 IF NOT BLANK FILLED
- EQ BSBX RETURN
- CKL SPACE 4
- ** CKL - CHECK LIMITS ON ALL COUNTERS.
- *
- * ENTRY (TLCT), (RECT), (FLCT) CHECKED FOR LIMITS AGAINST
- * (LILM), (LREC), (LFLC).
- *
- * EXIT (X1) = 0 IF NO LIMIT REACHED.
- * ELSE, ADDRESS OF LIMIT MESSAGE.
- *
- * USES A - 1, 2.
- * X - 1, 2.
- CKL SUBR ENTRY/EXIT
- SA1 LILM
- ZR X1,CKL1 IF NO LINE LIMIT
- SA2 TLCT
- IX2 X1-X2 (LIMIT)-(TOTAL LINE COUNT)
- SX1 MLLN SET LINE LIMIT
- NG X2,CKLX IF LINE LIMIT
- CKL1 SA1 LREC
- ZR X1,CKL2 IF NO RECORD LIMIT
- SA2 RECT
- IX2 X1-X2 (LIMIT)-(RECORD COUNT)
- SX1 MLRN SET RECORD LIMIT
- NG X2,CKLX IF RECORD LIMIT
- CKL2 SA1 LFLC
- ZR X1,CKL3 IF DUMPING TO DOUBLE EOF
- SA2 FLCT
- IX2 X1-X2 (LIMIT)-(FILE COUNT)
- SX1 MLFN SET FILE LIMIT
- NG X2,CKLX IF FILE LIMIT
- CKL3 BX1 X1-X1
- EQ CKLX RETURN IF NO LIMITS REACHED
- CPL SPACE 4
- ** CPL - CHECK PAGE LIMIT.
- *
- * ENTRY (LSCT) LINE COUNT ON PAGE.
- * (TLCT) TOTAL LINE COUNT.
- *
- * EXIT (LSCT) ADVANCED BY 1 AND PAGE HEADER WRITTEN
- * AND RESET IF NECESSARY.
- * (TLCT) ALWAYS ADVANCED.
- *
- * USES X - 1, 2, 3, 6, 7.
- * A - 1, 2, 3, 6, 7.
- *
- * CALLS CDD.
- *
- * MACROS CLOCK, WRITEC.
- CPL SUBR ENTRY/EXIT
- SA1 LSCT
- SA2 TLCT
- SX6 X2+B1 ADVANCE TOTAL LINE COUNT
- SA6 A2
- SA3 TF
- ZR X3,CPLX IF TERMINAL FILE
- SX7 X1+B1 ADVANCE LINES ON PAGE
- SA7 A1
- SA3 A1+B1
- IX7 X7-X3
- NG X7,CPLX IF NOT END OF PAGE
- SX7 B1+B1
- IX6 X6+X7 ADVANCE TOTAL LINE COUNT
- SA6 A2
- SA7 A1 CLEAR LINES ON PAGE
- SA1 PGCT
- SX7 X1+B1 ADVANCE PAGE COUNT
- SA7 A1
- RJ CDD CONVERT PAGE NUMBER
- SA1 HDRMD
- MX2 30
- BX7 X2*X1
- BX6 -X2*X6
- BX7 X6+X7
- SA7 A1 STORE PAGE NUMBER IN HEADER
- CLOCK HDRMC
- WRITEC O,HDRM WRITE HEADER
- WRITEC O,WBLA WRITE BLANK LINE
- EQ CPLX RETURN
- ELH SPACE 4
- ** ELH - ENTER DUMP LINE HEADER.
- *
- * ENTRY (FLCT) FILE COUNT.
- * (RECT) RECORD COUNT.
- * (WDCT) WORD COUNT.
- *
- * EXIT LINE BUFFER CLEARED AND HEADER DATA INSERTED.
- *
- * CALLS BSB, COD, ESB.
- *
- * USES A - 1, 2, 7.
- * X - 1, 2, 3, 4, 6, 7.
- * B - 2, 3, 4, 6, 7.
- ELH SUBR ENTRY/EXIT
- RJ BSB BLANK STRING BUFFER
- * SET FILE COUNT.
- SA1 FLCT
- RJ COD CONVERT FILE COUNT
- SX7 1RF
- SA7 OLWS+1 STORE FILE IDENTIFIER
- SB7 A7+B1
- MX1 3
- LX6 48 POSITION CONVERTED DIGITS
- RJ ESB ENTER FILE COUNT
- * SET RECORD COUNT.
- SA1 RECT
- RJ COD CONVERT RECORD COUNT
- SX7 1RR
- SA7 B7+B1 STORE RECORD IDENTIFIER
- SB7 A7+B1
- MX1 4
- LX6 42
- RJ ESB ENTER RECORD COUNT
- * SET WORD COUNT.
- SA1 WCBL
- RJ COD CONVERT WORD COUNT
- SX7 1RW
- SA7 B7+B1 STORE WORD IDENTIFIER
- SB7 A7+B1
- MX1 6
- LX6 30
- RJ ESB ENTER WORD COUNT
- SX7 1R-
- SA7 B7 ENTER SEPARATOR
- EQ ELHX RETURN
- ESB SPACE 4
- ** ESB - ENTER STRING BUFFER.
- *
- * ENTRY (X6) POSITIONED CHARACTER DATA
- * (X1) NUMBER OF CHARS TO STORE (ONE BIT PER CHAR)
- * (B7) ENTRY ADDRESS IN STRING BUFFER
- *
- * EXIT (B7) NEXT ENTRY ADDRESS
- *
- * USES A - 7.
- * X - 1, 2, 6, 7.
- * B - 7.
- ESB SUBR ENTRY/EXIT
- ESB1 PL X1,ESBX RETURN
- MX2 -6
- LX1 1
- BX7 -X2*X6
- SA7 B7 STORE CHARACTER
- SB7 B7+B1 ADVANCE STORE
- LX6 6
- EQ ESB1 LOOP FOR NEXT CHARACTER
- FAW SPACE 4
- ** FAW - FORMAT ALPHA WORD.
- *
- * ENTRY (B2) = ADDRESS OF WORD TO FORMAT TO STRING BUFFER.
- * (SCPC) = BYTE POSITION.
- *
- * EXIT (B2) = UNCHANGED.
- * CHARACTERS PLACED IN STRING BUFFER AND (SCPC)
- * ADVANCED.
- *
- * CALLS BSB.
- *
- * USES X - 1, 2, 3, 4, 5, 6, 7.
- * A - 1, 3, 4, 5, 6, 7.
- * B - 4, 5, 6, 7.
- FAW SUBR ENTRY/EXIT
- SA4 SCPC
- NZ X4,FAW2 IF NOT FIRST WORD
- SA3 OPWD
- LX3 59-OPBO
- BX6 X6-X6 CLEAR POSITION INCREMENT
- SA6 FAWB
- PL X3,FAW2 IF NOT OCTAL/ALPHA MODE
- RJ BSB BLANK BUFFER
- FAW2 SA5 FAWA GET ASCII ESCAPE CHARACTER
- SA1 B2 GET DATA WORD
- MX2 10
- SA3 OPWD
- MX6 54
- LX3 59-OPBO
- SB7 1R SET BLANK REPLACE
- NG X3,FAW7 IF OCTAL/ALPHA MODE
- SA3 TAAP+X4 GET STARTING POSITION
- SB5 X3
- SB4 B1
- FAW2.1 SA3 FAWB INCREMENT STARTING POSITION
- SB5 X3+B5
- FAW3 SB6 B1+B1 SET BYTE WIDTH
- FAW4 LX1 6
- BX7 -X6*X1
- LX2 1
- SB6 B6-B1
- SA3 TCCS
- ZR X3,FAW4.1 IF TERMINAL CHARACTER SET NOT ASCII
- NZ X5,FAW9 IF PREVIOUS CHARACTER IS ESCAPE
- SX3 X7-76B
- ZR X3,FAW8 IF ESCAPE 76
- SX3 X7-74B
- ZR X3,FAW8 IF ESCAPE 74
- FAW4.1 NZ X7,FAW5 IF NOT 00 CHARACTER
- SX7 B7 FORCE BLANK
- FAW5 SA7 B5
- SB5 B5+B4 ADVANCE STORE
- NZ B6,FAW4 IF NOT END OF BYTE
- SB5 B5+B1 SKIP ONE POSITION
- NG X2,FAW3 IF NOT END OF WORD
- BX7 X5 SAVE ESCAPE CHARACTER
- SA7 FAWA
- SA4 SCPC ADVANCE POSITION
- SA3 OPWD
- SX7 X4+B1
- LX3 59-OPBO
- SX6 X7-TBOPL
- NG X3,FAW6 IF OCTAL ALPHA MODE
- SX6 X7-TAAPL
- FAW6 SA7 A4
- NZ X6,FAW IF NOT END OF LINE
- SA6 A4 SET BEGINNING OF NEXT LINE
- EQ FAWX RETURN
- FAW7 SA3 TBOP+X4 SET STARTING POSITION
- SB5 X3+B1
- SB4 B1+B1 SET INCREMENT
- EQ FAW2.1 LOOP FOR NEXT BYTE
- FAW8 BX5 X7
- SX7 B7 FORCE BLANK
- EQ FAW5 STORE CHARACTER
- FAW9 BX6 X5 STORE ESCAPE CHARACTER
- SA6 B5
- SB5 B5+1
- SA3 FAWB ADVANCE POSITION INCREMENT
- SX6 X3+B1
- SA6 A3
- BX5 X5-X5 CLEAR ESCAPE CHARACTER
- MX6 54 RESET MASK
- EQ FAW5 STORE CHARACTER
- FAWA CON 0 ASCII ESCAPE CHARACTER
- FAWB CON 0 WORD POSITION INCREMENT
- * TABLE OF BYTE FORMAT POSITIONS
- TAAP BSS 0
- LOC 0
- CON OLWS+21
- CON OLWS+38
- CON OLWS+55
- CON OLWS+72
- TAAPL EQU *
- LOC *O
- FHW SPACE 4,15
- ** FHW - FORMAT HEXADECIMAL WORD.
- *
- * ENTRY (B2) = ADDRESS OF WORD TO FORMAT TO STRING BUFFER.
- * (SCPC) = BYTE POSITION.
- *
- * EXIT (B2) = UNCHANGED.
- * (X6) = 0 IF LINE IS FILLED.
- * CHARACTERS PLACED IN STRING BUFFER AND (SCPC)
- * ADVANCED.
- *
- * USES X - 2, 3, 4, 6, 7.
- * A - 3, 4, 6, 7.
- * B - 5, 6, 7.
- *
- * CALLS BSB.
- FHW SUBR ENTRY/EXIT
- SA4 SCPC
- NZ X4,FHW0 IF NOT FIRST WORD
- SA3 OPWD
- SX3 X3-OPVH
- ZR X3,FHW0 IF ONLY H OPTION SELECTED
- RJ BSB BLANK BUFFER
- FHW0 SA4 TBOP+X4
- MX3 15 DIGIT COUNT
- SB7 X4 STORE ADDRESS
- MX2 -4
- SA4 B2
- FHW1 SB5 3
- FHW2 LX4 4
- BX7 -X2*X4 EXTRACT DIGIT
- SB6 X7-10
- LX3 1
- NG B6,FHW3 IF PURE DECIMAL DIGIT PRESENT
- SX7 X7-9-1R0 BIAS TO ALPHA
- FHW3 SX7 X7+1R0 CONVERT DIGIT
- SA7 B7 STORE RESULT
- SB5 B5-B1
- SB7 B7+1
- NZ B5,FHW2 IF NOT END OF BYTE
- SB7 B7+2 SKIP COLUMNS
- NG X3,FHW1 IF NOT END OF WORD
- SA4 SCPC
- SX7 X4+B1
- SA7 A4
- SX6 X7-TBOPL
- NZ X6,FHWX IF LINE NOT FILLED
- SA6 A4+ RESET BYTE POSITION
- EQ FHWX RETURN
- FML SPACE 4
- ** FML - FORMAT PRINT LINE(S).
- *
- * ENTRY (A0) INDEX TO LAST ENTRY+1 IN WORD BUFFER.
- *
- * EXIT (X1) = 0 IF NO LIMIT REACHED.
- *
- * USES X - 1, 2, 6, 7.
- * A - 2, 6, 7.
- * B - 2.
- *
- * CALLS ELH, FAW, FHW, FOW, WSB.
- FML SUBR ENTRY/EXIT
- BX1 X1-X1
- SX1 A0-B1
- NG X1,FMLX IF EMPTY LINE
- SA2 OPWD
- LX2 59-OPBO
- PL X2,FML2 IF NOT OCTAL MODE
- BX6 X6-X6 CLEAR BYTE POSITION
- SA6 SCPC
- RJ ELH ENTER LINE HEADER
- SB2 DTOL
- RJ FOW WORD 1
- SB2 B2+B1
- SX1 A0-2
- NG X1,FML1 IF END OF LINE
- RJ FOW WORD 2
- SB2 B2+B1
- SX1 A0-3
- NG X1,FML1 IF END OF LINE
- RJ FOW WORD 3
- SB2 B2+B1
- SX1 A0-4
- NG X1,FML1 IF END OF LINE
- RJ FOW WORD 4
- FML1 RJ WSB WRITE BUFFER
- FML2 SA2 OPWD
- LX2 59-OPBA
- BX6 X6-X6
- PL X2,FML4 IF NOT ALPHA MODE
- SA6 SCPC
- RJ ELH
- SB2 DTOL
- RJ FAW WORD 1
- SB2 B2+B1
- SX1 A0-2
- NG X1,FML3 IF END OF LINE
- RJ FAW WORD 2
- SB2 B2+B1
- SX1 A0-3
- NG X1,FML3 IF END OF LINE
- RJ FAW WORD 3
- SB2 B2+B1
- SX1 A0-4
- NG X1,FML3 IF END OF LINE
- RJ FAW WORD 4
- FML3 RJ WSB WRITE BUFFER
- FML4 SA2 OPWD
- LX2 59-OPBH
- BX6 X6-X6
- PL X2,FML6 IF NOT A HEXADECIMAL DUMP
- SA6 SCPC CLEAR BYTE COUNT
- RJ ELH SET UP LINE HEADERS
- SB2 DTOL
- RJ FHW FORMAT HEXADECIMAL WORD
- SB2 B2+1
- SX1 A0-2
- NG X1,FML5 IF END OF LINE
- RJ FHW FORMAT HEXADECIMAL WORD
- SB2 B2+1
- SX1 A0-3
- NG X1,FML5 IF END OF LINE
- RJ FHW FORMAT HEXADECIMAL WORD
- SB2 B2+1
- SX1 A0-4
- NG X1,FML5 IF END OF LINE
- RJ FHW FORMAT HEXADECIMAL WORD
- FML5 RJ WSB WRITE BUFFER
- FML6 SA2 WDCT
- BX7 X2
- SA7 WCBL SET BEGINNING OF NEXT LINE
- EQ FMLX RETURN
- FOW SPACE 4
- ** FOW - FORMAT OCTAL WORD.
- *
- * ENTRY (B2) ADDRESS OF WORD TO FORMAT.
- * (SCPC) BYTE POSITION.
- *
- * EXIT WORD PLACED IN BUFFER.
- * (SCPC) UPDATED.
- * (X6) = 0 IF LINE IS FILLED.
- * (B2) UNCHANGED.
- *
- * USES A - 4, 6, 7.
- * X - 2, 3, 4, 6, 7.
- * B - 1, 2, 5, 6, 7.
- FOW SUBR ENTRY/EXIT
- SA4 SCPC
- SA4 TBOP+X4 GET BEGINNING CHARACTER POSITION
- MX3 20 DIGIT COUNT
- SB7 X4 STORE ADDRESS
- SB6 1R0
- MX2 -3
- SA4 B2 GET INPUT WORD
- FOW2 SB5 4
- FOW3 LX4 3
- BX7 -X2*X4 GET DIGIT
- SX7 X7+B6
- LX3 1
- SA7 B7 STORE CONVERTED DIGIT
- SB7 B7+B1
- SB5 B5-B1
- NZ B5,FOW3 IF NOT END OF BYTE
- SB7 B7+B1 SKIP COLUMN
- NG X3,FOW2 IF NOT END OF WORD
- SA4 SCPC
- SX7 X4+B1
- SX6 X7-TBOPL
- SA7 A4 ADVANCE POSITION
- NZ X6,FOWX IF NOT END OF LINE
- SA6 A4 RESET BYTE POSITION
- EQ FOWX RETURN
- * TABLE OF FORMATTING VALUES
- TBOP BSS 0
- LOC 0
- CON OLWS+21
- CON OLWS+48
- CON OLWS+75
- CON OLWS+102
- TBOPL EQU *
- LOC *O
- RDA SPACE 4
- ** RDA - READ DATA (READO MACRO).
- * PROCESS READ ONE WORD REQUESTS (RDO=).
- * DEBLOCK DATA IF CONTROL WORD READS USED.
- *
- * ENTRY (X1) = (FET+2).
- * (A1) = FET+2.
- *
- * EXIT (X1) = 1 IF EOR DETECTED.
- * (X1) = -1 IF EOF DETECTED.
- * (X1) = -2 IF EOI DETECTED.
- * (X1) = 0 IF TRANSFER COMPLETE.
- *
- * USES X - 1, 2, 3, 4, 6, 7.
- * A - 1, 2, 3, 6, 7.
- * B - 4, 5, 6.
- *
- * CALLS RDO=.
- RDA5 SX7 B6 STORE WORDS REMAINING IN THIS BLOCK
- SA7 A2
- RDA6 RJ RDO= PROCESS WORD REQUEST
- RDA SUBR ENTRY/EXIT
- SA2 CWDS CHECK CONTROL WORD DUMP FLAG
- PL X2,RDA6 IF CONTROL WORDS NOT LEGAL NOW
- RDA1 SB4 A1 SAVE FET POINTER
- SA2 A1-4 GET NUMBER OF WORDS BEFORE CONTROL WORD
- SB5 X2
- NG X2,RDA4 IF FIRST READ OF FILE
- RDA2 SB6 B5-B1 DECREMENT WORDS REMAINING IN BLOCK
- PL B6,RDA5 IF ENOUGH WORDS LEFT FOR REQUEST
- SA3 A2+B1 CHECK EOR FLAG
- PL X3,RDA3 IF NOT EOR
- MX6 1 SET NEW READ FLAG ON
- SA6 A2
- SA6 A3 RESET EOR FLAG
- RJ RDO= CLEAR LEVEL WORD
- SX1 B1 SET EOR INDICATOR FOR RETURN
- JP RDAX RETURN
- RDA3 RJ RDO= CLEAR LEVEL WORD
- RDA4 SA1 B4 RESET A1, X1 VALUES
- RJ RDO= READ CONTROL WORD
- NG X1,RDAX IF EOF/EOI, RETURN
- SA1 B4 RESET A1, X1 VALUES
- BX3 X6 CONTROL WORD
- SX7 5 BYTES/WORD
- SX4 X3+4 ROUND UP
- AX3 36
- SX3 X3
- IX7 X4/X7 WORDS IN BLOCK
- IX6 X7-X3 SAVE EOR FLAG
- SA7 A1-4 STORE WORD COUNT
- SA6 A1-3 STORE EOF FLAG
- JP RDA1 CONTINUE IN LOOP
- TDS SPACE 4
- ** TDS - TERMINATE DUMP SEGMENT.
- *
- * ENTRY (A0) NUMBER OF WORDS IN BUFFER.
- *
- * EXIT (X1) = 0 IF NO LIMITS EXCEEDED.
- *
- * CALLS FML, CPL, WBL.
- *
- * USES ALL REGISTERS EXCEPT A0, X0, A5 AND X5.
- TDS SUBR ENTRY/EXIT
- SA1 RPCT
- SX2 X1-3
- AX1 1
- BX6 X6-X6
- SA6 A1 CLEAR REPEAT
- ZR X1,TDS3 IF NOT REPEAT (SUPPRESSING)
- PL X2,TDS1 IF MORE THAN TWO LINES
- SX6 A0
- ZR X6,TDS2 IF NO WORDS
- TDS1 WRITEC O,MALR WRITE REPEAT MESSAGE
- RJ WBL
- RJ CPL
- SX6 A0
- NZ X6,TDS3 IF WORDS IN BUFFER
- TDS2 SA4 TF SET WORDS/LINE FOR FILE TYPE
- SA2 X4+WPLT
- SA1 WCBL
- IX6 X1-X2
- SA6 A1
- SA0 X2
- TDS3 RJ FML
- BX6 X6-X6
- SA6 WCBL ZERO BEGIN LINE WORD COUNT
- EQ TDSX RETURN
- WBL SPACE 4
- ** WBL - WRITE BLANK LINE.
- *
- * ENTRY NONE.
- *
- * EXIT BLANK LINE WRITTEN.
- *
- * CALLS CPL, WTC.
- *
- * USES ALL REGISTERS EXCEPT A0, X0, A5 AND X5.
- WBL SUBR ENTRY/EXIT
- RJ CPL CHECK PAGE LIMIT
- WRITEC O,WBLA WRITE BLANK LINE
- EQ WBLX RETURN
- WBLA DATA 2C
- WSB SPACE 4
- ** WSB - WRITE STRING BUFFER.
- *
- * ENTRY NONE.
- *
- * EXIT (X1) = 0 IF NO LIMITS REACHED.
- * STRING BUFFER WRITTEN TO OUTPUT FILE.
- *
- * CALLS CPL, CKL, WTS.
- *
- * USES ALL REGISTERS EXCEPT A0, X0, A5 AND X5.
- WSB SUBR ENTRY/EXIT
- WRITES O,OLWS,OLWSL
- RJ CPL
- BX6 X6-X6
- SA6 SCPC SET LINE EMPTY
- RJ CKL
- EQ WSBX RETURN
- * MESSAGES.
- HDRM DATA 30H1 - FILE DUMP -
- HDRMA DATA 30H
- DATA 30H
- HDRMB DATA 10H
- HDRMC DATA 10H
- HDRMD DATA 10H PAGE 0000
- DATA 1C.
- MLLN DATA C* -- LINE LIMIT --*
- MLRN DATA C* -- RECORD LIMIT --*
- MLFN DATA C* -- FILE LIMIT --*
- MEOR DATA C* -- END OF RECORD --*
- MEOF DATA C* -- END OF FILE --*
- MEOI DATA C* -- END OF INFORMATION --*
- MEOD DATA C* -- END OF DUMP --*
- MALR DATA C* -- ABOVE LINE REPEATED --*
- * COMMON DECKS.
- *CALL,COMCCDD
- *CALL,COMCCOD
- *CALL,COMCCIO
- *CALL,COMCRDO
- *CALL,COMCSYS
- *CALL,COMCWTC
- *CALL,COMCWTS
- *CALL,COMCWTW
- * FETS.
- O BSS 0
- OUTPUT FILEB BUFO,BUFOL,EPR,(FET=8)
- CON 0 REMAINING WORD COUNT
- CON 0 EOR FLAG
- F BSS 0
- TAPE1 FILEB BUFF,BUFFL,(FET=10)
- ODFE BSSZ ODFEL OPTICAL DISK FET EXTENSION
- TITLE PRESET PROGRAM
- PRE SPACE 4
- ** PRE - PRESET PROGRAM.
- *
- * ENTRY CONTROL CARD ARGUMENTS STORED BY SYSTEM.
- *
- * EXIT (B1) = 1.
- *
- * CALLS ARG, CDT, CPL, DXB, SFN, STF.
- *
- * MACROS ABORT, DATE, GETPP, MESSAGE, OPEN, REWIND,
- * TSTATUS, WRITEW.
- TDUMP BSS 0
- PRE EQU TDUMP
- SB1 1
- SA1 ACTR
- R= A4,ARGR SET FIRST ARGUMENT
- SB4 X1 SET ARGUMENT COUNT
- SB5 TARG SET EQUIVALENCE TABLE
- RJ ARG PROCESS ARGUMENTS
- ZR X1,PRE1.1 IF NO ARGUMENT ERROR
- PRE1 SX2 =C* ARGUMENT ERROR.*
- MESSAGE X2
- ABORT
- PRE1.1 SA1 OPWA GET ALPHA DUMP OPTION
- SA2 OPWH GET HEX DUMP OPTION
- BX6 X1+X2
- SA1 OPWO GET OCTAL DUMP OPTION
- BX6 X1+X6
- ZR X6,PRE2 IF NO DUMP OPTION USE DEFAULT
- SA6 OPWD SET COMPOSITE DUMP OPTION
- PRE2 SA1 O
- MX6 42
- BX7 X7-X7
- BX1 X6*X1
- SX6 A1
- BX6 X1+X6 FORM POINTER TO *OUTPUT* FILE
- SA6 B1+B1
- SA7 A6+B1
- SX2 A1 OUTPUT FET ADDRESS
- RJ STF CHECK IF TERMINAL FILE
- SA6 TF
- NZ X6,PRE3 IF NON-TERMINAL
- TSTATUS TSRW GET CURRENT CHARACTER SET
- SA2 TSRW+1
- MX0 59
- LX2 0-2
- BX6 -X0*X2
- SA6 TCCS
- PRE3 SB7 B1 DECIMAL BASE
- SA5 LREC
- RJ DXB
- NZ X4,PRE1 IF RECORD COUNT NON NUMERIC
- SA6 A5 STORE CONVERTED VALUE
- SA5 LFLC
- ZR X5,PRE3.1 IF NO CONVERSION
- RJ DXB
- NZ X4,PRE1 IF FILE COUNT NON NUMERIC
- SA6 A5 STORE CONVERTED VALUE
- PRE3.1 SA5 LILM
- RJ DXB
- NZ X4,PRE1 IF LINE LIMIT NON NUMERIC
- SA6 A5 STORE CONVERTED VALUE
- SB6 8
- SA1 CCDR-1
- SB7 HDRMA
- MX3 54
- PRE4 SA1 A1+B1 GET WORD OF CONTROL CARD
- BX7 X1
- BX6 -X3*X1
- ZR X6,PRE6 IF LAST WORD
- SA7 B7 STORE IN HEADER LINE
- SB6 B6-B1
- SB7 B7+B1
- NZ B6,PRE4 IF MORE WORDS TO CONTROL CARD
- PRE5 DATE HDRMB
- SA1 CODD SET FET FOR CODED READ IF REQUESTED
- SA2 F
- BX6 -X1*X2
- SA6 A2
- GETPP BUFF,LL,BUFF GET PAGE SIZE PARAMETERS
- SA1 TF
- WRITEW O,A6,X1 CONDITIONALLY WRITE FORMAT EFFECTOR
- RJ CPL ISSUE FIRST LINE
- SX2 F
- SA3 PREA
- RJ SOE SET OPTICAL FET EXTENSION
- OPEN F,READNR,R CHECK IF CONTROL WORDS LEGAL
- SA1 F+1
- RJ CDT CHECK DEVICE TYPE
- ZR X7,PRE5.1 IF CONTROL WORDS NOT LEGAL
- SX7 B0+
- SA1 LREC CHECK RECORD COUNT
- NZ X1,PRE5.1 IF *R=* USED, FORCE NO CONTROL WORD READS
- SX7 1 SET CONTROL LEGAL FLAG
- SA7 CW
- PRE5.1 SA1 CWDS SET CONTROL WORD DUMP FLAG
- IX7 X1-X7
- SA7 A1
- SA1 REWD CHECK REWIND INDICATOR
- NZ X1,TDM IF NO REWIND
- REWIND F,R
- EQ TDM BEGIN PROGRAM
- PRE6 RJ SFN SPACE FILL WORD
- SA6 B7
- EQ PRE5
- PREA VFD 36/0,6/ODFEL,18/ODFE OPTICAL FET EXTENSION POINTER
- * TABLE OF ARGUMENT CONTROL WORDS
- TARG BSS 0
- CW ARG -DFCW,CWDS
- I ARG F,F,400B
- L ARG O,O,400B
- A ARG -DFVA,OPWA
- H ARG -DFVH,OPWH
- O ARG -DFVO,OPWO
- NR ARG -DFVO,REWD
- C ARG -DFVA,CODD
- R ARG LREC,LREC
- F ARG LFLC,LFLC
- N ARG LILM,LILM
- ARG
- * TABLE OF DEFAULT VALUES.
- DFCW CON 1
- DFVO CON OPVO
- DFVA CON OPVA
- DFVH CON OPVH
- * TEMPORARY OPTION CONTROL WORDS.
- OPWO CON 0 OPTION O CONTROL WORD (PRESET OMITTED)
- OPWA CON 0 OPTION A CONTROL WORD (PRESET OMITTED)
- OPWH CON 0 OPTION H CONTROL WORD (PRESET OMITTED)
- CDT SPACE 4
- ** CDT - CHECK DEVICE TYPE.
- *
- * ENTRY (X1) = (FET+1).
- *
- * EXIT (X7) = 0 IF CONTROL WORD READ/WRITE NOT SUPPORTED ON
- * THIS DEVICE.
- *
- * USES A - 2.
- * X - 0, 1, 2, 6, 7.
- CDT2 LX1 12 CHECK *TT*
- BX6 -X0*X1
- SX7 X6-2RTT
- CDT SUBR ENTRY/EXIT
- MX0 -12
- PL X1,CDT2 IF ALLOCATABLE
- LX1 12
- SA2 CDTA SEARCH DEVICE TABLE
- SX7 0 ASSUME NO FIND
- CDT1 ZR X2,CDTX IF NOT FOUND, RETURN
- BX6 X1-X2
- AX2 12
- BX6 X2*X6
- SA2 A2+B1
- NZ X6,CDT1 IF NOT MATCH
- SX7 1 INDICATE CONTROL WORD POSSIBLE
- JP CDTX RETURN
- CDTA VFD 36/,12/7703B,12/4002B
- VFD 36/,12/7703B,12/4102B
- VFD 36/,12/7777B,12/2RMT+4000B
- VFD 36/,12/7777B,12/2RNT+4000B
- VFD 36/,12/7777B,12/2RCT+4000B
- VFD 36/,12/7777B,12/2RAT+4000B
- VFD 36/,12/7777B,12/2ROD+4000B
- CON 0
- SPACE 4
- *CALL,COMCARG
- *CALL COMCCPM
- *CALL,COMCDXB
- *CALL,COMCLFM
- *CALL,COMCSFN
- *CALL,COMCSOE
- *CALL,COMCSTF
- * BUFFERS.
- OLWS EQU PRE
- BUFO EQU OLWS+OLWSL
- BUFF EQU BUFO+BUFOL
- RFL= EQU BUFF+BUFFL+4
- END
cdc/nos2.source/opl871/tdump.txt ยท Last modified: 2023/08/05 17:24 by Site Administrator