{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: PMDUMP85)}}
====== PMDUMP85 ======
(George Source)
**Macros used:** [[george:macro:DATUMBLK|DATUMBLK]], [[george:macro:DCA|DCA]], [[george:macro:GPERI|GPERI]], [[george:macro:IDENTITY|IDENTITY]], [[george:macro:JBUSY|JBUSY]], [[george:macro:JENG|JENG]], [[george:macro:JPMFAIL|JPMFAIL]], [[george:macro:LINT|LINT]], [[george:macro:MEND|MEND]], [[george:macro:PMBSADD|PMBSADD]], [[george:macro:PMDLGET|PMDLGET]], [[george:macro:PMOVE|PMOVE]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SIX|SIX]], [[george:macro:TEST|TEST]]
22FL #OPT K0PMDUMP=0
22^= #LIS K0PMDUMP>K0POST>K0ALLGEO
23DW #
23YG #SEG PMDUMP85 [M.C.D. MANN
24D6 #
24XQ # THIS SEGMENT GIVES A POSTMORTEM DUMP TO MT AND DA
25CB # BY THE METHOD OF TRUNCATING AND BUNCHING LP IMAGES
25X2 #
26BL 8HPMDUMP
26W= #
27*W # ENTRY POINT TABLE
27TG #
28*6 SEGENTRY K1PMDUMP,XK1PMDUMP
28SQ SEGENTRY K2PMDUMP,XK2PMDUMP
29#B SEGENTRY K3PMDUMP,XK3PMDUMP
29S2 SEGENTRY K4PMDUMP,XK4PMDUMP
2=?L SEGENTRY K5PMDUMP,XK5PMDUMP
2=R= #
2?=W MESSI 18,18H^*END OF PM DUMP^*
2?QG MESSJ 22,22H ^*UNIT FAIL ^*
2#=6 MESSK 17,17H^*UNIT FIX^*
2#FY ...MESSL 27,27H ^*UNIT FORMAT ERROR^*
2#PQ POSTDUMP 12HPOSTDUMP
2*9B PMCOMM 8HPMDACOMM
2*P2 XFAILFLAG 0
2B8L XBLOCNT 0 [TO HOLD BLOCK COUNT
2BN= XBUFF +MTBUF [ADDRESS OF MT BUFFER
2C7W TWEN4 24
2CMG XFIVE 5
2D76 SPACE #20
2DLQ WLINK 0
2F6B STORE 0
2FL2 SPACEFUL #20202020
2G5L MTSZE +BUFL
2GK= SCANDUMP 0 [TO HOLD BS ADDRESS IN BUFFDUMP
2H4W TRADUMP +BUFL [TO HOLD BS ADDRESS IN BUFFDUMP
2HJG SIX 6
2J46 XLASREC 16H0004000A
2JHQ #
2K3B # MAG TAPE FAILURE ROUTINE
2K8J ...#
2K*Q ...# OUTPUT ON CONSOLE:
2KGY ...#
2KN6 ...# EITHER "UNIT NN FAIL N" (BIT 3 SET)
2KT# ...# "UNIT NN FAIL" (BIT 5 SET: INOPERABLE)
2L2G ...# OR "UNIT NN FORMAT ERROR" (BIT 1 SET: LONG BLOCK)
2L7N ...#
2L#W ...# AND REWIND THE TAPE
2LG= # ENTRY X3=START ADDRESS OF PCA
2L^W #
2MFG ...# EXIT PMOVE TO K1PMDUMPMT
2M^6 #
2NDQ MT1
2NYB LDX 1 FXPM1
2PD2 SMO FXPMDR
2PXL ... LDX 6 JMTRW1 [LOAD THE REPLY WORD
2Q4S ... SLC 6 5 [LOOK AT BIT 5
2Q=2 ... BNG 6 MT1A [NO CODE IF DECK INOPERABLE
2QC8 ... SRC 6 2 [LOOK AT BIT 3
2QJB ... BPZ 6 MT1B [J IF LONG BLOCK DETECTED (BIT 1)
2QPJ ... SRC 6 3
2QWW SMO FXPM1
2RBG DCH 6 MESSJ+5 [DUMP FAIL NO.:- 0,1,2 OR 3
2RW6 ...MT1A SMO FXPMDR
2S*Q LDX 6 JMTGEOG [PICK UP UNIT NUMBER OF MT DECK
2STB CALL 7 (JGNO1) [CONVERT IT TO CHARACTER FORM
2T*2 STO 5 MESSJ+3(1)
2TSL LDN 3 MESSJ(1)
2T^# ... CALL 7 (JCONOUT) [OUTPUT FAIL MESSAGE ON CONSOLE
2W62 ... BRN MT1C [REWIND THE TAPE
2W=N ...MT1B SMO FXPMDR
2WCB ... LDX 6 JMTGEOG [UNIT NUMBER OF MT DECK
2WJ4 ... CALL 7 (JGNO1) [CONVERT IT TO CHARACTER FORM
2WNQ ... STO 5 MESSL+3(1) [AND INSERT IT IN THE MESSAGE
2WTD ... LDN 3 MESSL(1) [PRINT ON THE CONSOLE:
2X26 ... CALL 7 (JCONOUT) ["UNIT NN FORMAT ERROR"
2X6S ...MT1C LDN 1 9 [REWIND AND DISENGAGE MODE
2X?G SMO FXPMDR
2XR6 LDX 3 JMTPTR
2Y=Q DCA 3,DLA,1,MODE
2YQB SMO FXPMDR
2^=2 LDN 1 JMTPTR-CPPTR
2^PL ... GPERI ,1,NC [REWIND AND DISENGAGE THE TAPE
329= LDX 4 FXPM1DUMP
32NW STO 4 FXPM1
338G PMOVE PMDUMPMT,FXPM1,1
33N6 #
347Q #
34MB # ROUTINE TO MOVE A STRING OF 8 CHARACTERS. LEADING NON-SPACE
3572 # CHARACTERS ARE INSERTED AT THE END OF THE OUTPUT AREA
35LL # ENTRY X2=START ADD. OF CHAR. STRING
366= # X3=START ADD. OF AREA TO RECEIVE CHAR. STRING
36KW # EXIT X2=ADD. OF CHAR. AFTER CHAR. STRING
375G # X3=ADD. OF LAST CHAR. INSERTED IN OUTPUT AREA
37K6 # X6,X7=UNDEFINED
384Q # X0=LINK
38JB #
3942 XIDENT
39HL LDX 7 SPACEFUL(1)
3=3= STO 7 0(3) [SPACE FILL
3=GW STO 7 1(3) [OUTPUT AREA
3?2G LDN 7 8 [CHAR. COUNT
3?G6 XID LDCH 6 0(2)
3?^Q TXU 6 SPACE(1) [J IF NON-SPACE
3#FB BCS XID1 [CHAR. FOUND
3#^2 BCHX 2 £
3*DL BCT 7 XID
3*Y= XID2 EXIT 0 0
3BCW XID3 LDCH 6 0(2) [GET NEXT CHAR.
3BXG XID1 DCH 6 0(3) [STORE IN OUTPUT AREA
3CC6 BCHX 2 £
3CWQ SBN 7 1
3DBB BZE 7 XID2 [J WHEN 8 DONE
3DW2 BCHX 3 XID3
3F*L #
3FT= # ROUTINE TO ZEROISE TWENTY WORD AREA
3G#W # ENTRY X3=START ADD. OF AREA
3GSG # EXIT X3=UNCHANGED
3H#6 # X6,X7=UNDEFINED
3HRQ # WLINK=LINK
3J?B #
3JR2 ZERO20
3K=L SMO FXPM1
3KQ= STO 7 WLINK [STORE LINK
3L9W STOZ 0(3)
3LPG LDN 6 0(3)
3M96 LDN 7 1(3)
3MNQ MOVE 6 19
3N8B SMO FXPM1
3NN2 LDX 7 WLINK
3P7L EXIT 7 0
3PM= #
3Q6W # MAG. TAPE WRITE ROUTINES
3QLG # ENTRY X2=DECK UNIT NO.
3R66 # X3=START ADD. OF CURRENT MT BUFFER
3RKQ # ('WRITE' ONLY X2=LENGTH OF BLOCK,NOT INCL COUNT & CHECKSUM)
3S5B # ('SENSTART' ONLY X5=START ADD. OF SUBFILE NAME)
3SK2 # EXIT X2=UNCHANGED
3T4L # X3=ADD. OF NEW MT BUFFER
3TJ= # X0=LINK
3W3W # X5,X6,X7=UNDEFINED
3WHG # ('WRITE' ONLY X2=UNDEFINED)
3X36 #
3XGQ TRAILER [WRITE TRAILER LABEL
3Y2B CALL 7 ZERO20
3YG2 LDN 7 7
3Y^L BRN SENT
3^F= SENTEND [WRITE END OF SUBFILE SENTINEL
3^YW CALL 7 ZERO20
42DG LDX 7 XBLOCNT(1)
42Y6 STOZ XBLOCNT(1)
43CQ STO 7 1(3) [STORE BLOCK COUNT
43XB LDCT 7 256
44C2 BRN SENT
44WL SENSTART [WRITE START OF SUBFILE SENTINEL
45B= CALL 7 ZERO20
45TW LDN 7 6
46*G LDN 6 2(3)
46T6 MOVE 5 3 [SUBFILE NAME
47#Q SENT LDN 5 20 [LENGTH OF BLOCK
47SB STO 7 0(3)
48#2 STO 0 WLINK(1) [STORE LINK
48RL MTISBOK
49?= SMO FXPMDR
49QW LDX 3 JMTPTR
4==G JBUSY 3,MTISBOK
4=Q6 LDN 2 5 [WRITE A TAPE MARK MODE
4?9Q DCA 3,DLA,2,MODE
4?PB SMO FXPMDR
4#92 LDN 2 JMTPTR-CPPTR
4#NL GPERI ,2,NC
4*8= SENT3
4*MW SMO FXPMDR
4B7G LDX 6 JMTPTR
4BM6 SNT3 JBUSY 6,SNT3 [LOOP IF BUSY
4C6Q ... JPMFAIL 6,MT1 [J TO MT1 IF FAIL
4CLB SENT1
4D62 LDN 2 1
4DKL SMO FXPMDR
4F5= LDX 6 JMTPTR
4FJW DCA 6,DLA,2,MODE
4G4G DCA 6,STO,5,COUNT
4GJ6 LDX 3 XBUFF(1)
4H3Q DCA 6,STO,3,CTSA
4HHB SMO FXPMDR
4J32 LDN 2 JMTPTR-CPPTR
4JGL GPERI ,2,NC
4K2= SENT2 SMO FXPMDR
4KFW LDX 6 JMTPTR
4K^G SNT2 JBUSY 6,SNT2 [LOOP WHILE BUSY
4LF6 ... JPMFAIL 6,MT1 [J IF FAIL
4LYQ LDX 0 WLINK(1)
4MDB EXIT 0 0
4MY2 WRITE [WRITE VARIABLE LENGTH BLOCK
4NCL STO 0 WLINK(1)
4NX= BRN SENT1
4PBW #
4PWG # ROUTINE TO INITIALISE AND DATUMISE
4QB6 #
4QTQ XINIT LDX 1 FXPM1
4R*B ADS 1 XBUFF(1)
4RT2 PMDLGET BUFFDUMP,2
4S#L ADS 2 SCANDUMP(1)
4SS= ADS 2 TRADUMP(1)
4T?W EXIT 0 0
4TRG #
4W?6 #
4WQQ # ROUTINE TO PREPARE US FOR DUMPING-MAKE THEM THINK
4X=B # WE USE LP-CREATE TWO 512 WORD BUFFERS AT END OF
4XQ2 # FIXED CORE-MOVE BUNCHING ROUTINE TO START OF SEGMENT
4Y9L # -RESET ALLPOST AND SEGTAB PTR
4YP= #
4^8W # ENTRY: X7 - DESTINATION ADDR OF BUNCH. ROUTINE(DIFF.
4^NG # FOR MT & DA DUMP)
5286 # EXIT: X1,X3 UNCHANGED
52MQ # X7 POINTS AFTER MOVED BUNCH. ROUTINE
537B #
53M2 PREDUMP
546L SMO FXPMDR
54L= LDX 2 JMTPTR [MAKE PMJOBS THINK
555W SMO FXPMDR
55KG STO 2 JUNITNO [THERE IS AN LP
5656 LDN 4 1
56JQ DCA 2,DLA,4,MODE
574B SMO FXPMDR
57J2 STOZ JTRA+7-1 [CLEAR COUNT WORDS IN
583L SMO FXPMDR
58H= STOZ JTRA+3-1 [PMDR LP CONTROL AREAS
592W LDX 2 ENDFIX [END ADDR OF FIXED STORE
59GG SBN 2 BUFL
5=26 SMO FXPMDR
5=FQ STO 2 JTRA+8-1 [SECOND MT BUFFER ADDRESS
5=^B SBN 2 BUFL
5?F2 SMO FXPMDR
5?YL STO 2 JTRA+4-1 [FIRST MT BUFFER ADDRESS
5#D= SMO FXPMDR
5#XW STOZ EXCHANGE [CLEAR BUFFER SWITCH
5*CG LDX 4 XBLOCNT(1) [PRESERVE THE BLOCK
5*X6 SMO FXPMDR
5BBQ STO 4 BLKSDMPD [COUNT IN PMDR
5BWB LDX 6 SPACEFUL(1)
5CB2 STO 6 1(2)
5CTL LDN 5 1(2)
5D*= LDN 6 2(2)
5DSW MOVE 5 30 [SPACEFILL FIRST LP RECORD
5F#G LDCT 4 #600
5FS6 ADN 4 1
5G?Q ADX 2 4
5GRB STO 2 JOZ [SET UP 'LP' MODIFIERS
5H?2 STO 2 JPMOD
5HQL BCHX 2 £
5J== STO 2 JLPMOD
5JPW #
5K9G # MOVE ROUTINES INTO PMDR
5KP6 #
5L8Q SMO FXPMDR
5LNB STO 7 JBUNCHBASE
5M82 LDN 6 MT0(1) [OVERWRITE PMDR PRINT ROUTINE
5MML MOVE 6 MT4-MT0 [WITH BUNCHING ROUTINE
5N7= ADN 7 MT4-MT0
5NLW SMO FXPMDR
5P6G STO 7 JDUMPBASE
5PL6 #
5Q5Q # RESET ALLPOST BIT PATTERN AND PMSEG TABLE POINTER
5QKB #
5R52 SMO FXPMDR
5RJL LDX 4 ALLPOST
5S4= ANDN 4 #7467 [CLEAR BITS 17,16,20 (ENTRY CONDITION
5SHW ORN 4 #26 [SET BITS 19,21,22 (ENTRY CONDITIONS
5T3G SMO FXPMDR
5TH6 STO 4 ALLPOST [PLUS FULL LISTING BITS
5W2Q SMO FXPMDR
5WGB LDX 4 JDUMP
5X22 SMO FXPMDR
5XFL STO 4 JTABP
5X^= EXIT 0 0
5YDW #
5YYG #
5^D6 #
5^XQ # ROUTINE TO INTERCEPT AND BUNCH UP LP TRANSFERS INTO
62CB # THE MT/DA BUFFERS. THE ROUTINE IS MOVED TO FXPM1 BY
62X2 # THIS SEGMENT BEFORE DUMPING STARTS AND THE CORE ADDRESS OF THE
63BL # ROUTINE IS RECORDED IN JBUNCHBASE.
63W= #
64*W # ENTRY X1=BUFFER SWITCH
64TG # X3=BUFFER ADDRESS
65*6 # X6=PFCC
65SQ # EXIT X3,X5,X6,X7 UNDEFINED
66#B #
66S2 MT0 SMO FXPMDR
67?L ADX 3 JTRA+3-1(1)
67R= STO 6 1(3)
68=W LDN 1 30
68QG MT2 SMO 3
69=6 LDX 6 1(1)
69PQ SMO FXPMDR
6=9B TXU 6 FLUSH
6=P2 BCS MT8 [J IF WORD NOT BLANK
6?8L BCT 1 MT2
6?N= MT8 ADN 1 2
6#7W STO 1 0(3)
6#MG SMO FXPMDR
6*76 LDX 3 EXCHANGE
6*LQ ADX 3 FXPMDR
6B6B ADX 1 JTRA+3-1(3)
6BL2 STO 1 JTRA+3-1(3) [UPDATE BLOCK COUNT
6CK= LDX 6 JTRA+3-1(3)
6D4W ADX 6 JTRA+4-1(3) [NEW RECORD ADDRESS
6D?6 ... SBN 1 BUFL
6DFB ... BZE 1 MT3Y [J IF THIS BLOCK IS FULL
6DML ... ADN 1 31
6DTW ... BPZ 1 MT3X [J IF NO ROOM FOR ANOTHER BLOCK
6F46 SBX 3 FXPMDR
6FHQ MT3 LDCT 1 #600
6G3B ADN 1 1
6GH2 ADX 1 6 [READY TO SET UP POINTERS
6H2L SMO FXPMDR
6HG= LDX 5 JBUNCHEND
6H^W BRN (5)
6JFG MT3X SMO 6
6J^6 STOZ 0 [INSERT A ZERO RECORD HEADER
6KDQ ...MT3Y SMO FXPMDR
6KYB LDX 5 JDUMPBASE
6LD2 BRN (5)
6LXL #
6MC= # ROUTINE TO OUTPUT A BLOCK OF LP IMAGES TO MT. THIS ROUTINE
6MWW # IS MOVED TO A POSITION ABOVE (HIGH ADDRESS END OF) THE
6NBG # BUNCHING ROUTINE AND IS ENTERED BY THE LATTER ROUTINE.
6NW6 #
6P*Q # SEE BUNCHING ROUTINE FOR ENTRY/EXIT CONDITIONS
6PTB #
6Q*2 MT4 SMO FXPMDR
6QSL LDX 6 JMTPTR
6R#= MTBUS JBUSY 6,MTBUS [LOOP WHILE BUSY
6RRW ... JPMFAIL 6,TF [J IF FAIL
6S?G BRN MT7 [J IF TRANSFER OK
6SR6 TF SMO FXPMDR
6T=Q LDX 5 JVARCRUPT [VARIABLE CORE OVERWRITTEN ?
6TQB BPZ 5 MT4X [J IF NOT SO
6W=2 LDX 5 K2PMCRABS [RESTORE VARIABLE CORE
6WPL ADX 5 FXPM2
6X9= CALL 6 (5)
6XNW MT4X PMOVE PMDUMP,FXPM1,4 [EXIT TO FAIL ROUTINE
6Y8G MT7 SMO FXPMDR
6YN6 LDX 1 EXCHANGE [GET BUFFER MODIFIER
6^7Q SMO FXPMDR
6^MB LDX 3 JMTPTR [GET DEVICE LIST POINTER
7272 SMO FXPMDR
72LL LDX 6 JTRA+3-1(1)
736= DCA 3,STO,6,COUNT
73KW SMO FXPMDR
745G LDX 6 JTRA+4-1(1)
74K6 DCA 3,STO,6,CTSA
754Q SMO FXPMDR
75JB LDN 3 JMTPTR-CPPTR
7642 GPERI ,3,NC
76HL LDN 6 1
773= SMO FXPMDR
77GW ADS 6 BLKSDMPD [UPDATE BLOCK COUNT
782G LDX 0 JLINK0
78G6 ERN 1 4
78^Q SMO FXPMDR
79FB STO 1 EXCHANGE [DOUBLE BUFFERING
79^2 SMO FXPMDR
7=DL STOZ JTRA+3-1(1) [ZEROISE RECORD POINTER
7=Y= SMO FXPMDR
7?CW LDX 6 JTRA+4-1(1) [NEW RECORD ADDRESS
7?XG LDN 1 MT3-MT0
7#C6 SMO FXPMDR
7#WQ ADX 1 JBUNCHBASE
7*BB BRN (1)
7*W2 MT6
7B*L #
7BT= # ROUTINE TO OUTPUT A BLOCK OF LP IMAGES TO A UDAS DEVICE.
7C#W # THIS ROUTINE IS MOVED TO A POSITION ABOVE (HIGH ADDRESS END
7CSG # OF) THE BUNCHING ROUTINE AND IS ENTERED BY THIS LATTER
7D#6 # ROUTINE WHEN A BLOCK BECOMES FULL.
7DRQ #
7F?B XDAPERI
7FR2 SMO FXPMDR
7G=L STO 2 JPDLINK2 [SAVE X2 AROUND THE DA TRANSFER
7GQ= XDAP SMO FXPMDR
7H9W LDX 6 JMTPTR
7HPG XBUS JBUSY 6,XBUS [LOOP WHILE BUSY
7J96 ... JPMFAIL 6,XF [J IF FAIL
7JNQ BRN XDAOK [J IF TRNSFR OK
7K8B XF LDN 5 1
7KN2 SMO FXPM1DUMP
7L7L NGS 5 11 [SET FAIL FLAG FOR K4PMDUMP
7LM= XFAIL SMO FXPMDR
7M6W LDX 5 JVARCRUPT [VARIABLE CORE OVERWRITTEN ?
7MLG BPZ 5 XDAF [J IF NOT SO
7N66 LDX 5 K2PMCRABS [RESTORE VARIABLE CORE
7NKQ ADX 5 FXPM2
7P5B CALL 6 (5)
7PK2 XDAF PMOVE PMDUMP,FXPM1,4 [EXIT TO FAIL ROUTINE
7Q4L XDAOK SMO FXPMDR
7QJ= LDX 2 JMTRW1
7R3W SLL 2 5
7RHG BPZ 2 XOP [J IF OPERABLE
7S36 CALL 3 £ [DATUMISE FOR THE "FIX" MESSAGE
7SGQ BRN XFIXDISC
7T2B XFIXM 18,18H ^*UNIT FIX^*
7TG2 XFIXDISC
7T^L ADN 3 1
7WF= CALL 7 (JCONOUT) [PRINT "UNIT N FIX" ON THE CONSOLE
7WYW SMO FXPM1DUMP [PICK UP ADDRESS OF THE CONSOLE'S
7XDG LDX 2 10 [EBA BIT FROM COMMUNICATION AREA
7XY6 SRL 23 15 [X2 = BIT POSITION WITHIN WORD
7YCQ SRL 3 9 [X3 = WORD DISPLACEMENT IN EBA
7YXB LDCT 7 #400
7^C2 BZE 2 XF1
7^WL SMO 2
82B= SRL 7 0
82TW XF1 ORS 7 EBA(3) [UNSET THE EBA BIT
83*G ERS 7 EBA(3)
83T6 SMO FXPMDR
84#Q LDX 2 JMTPTR [PICK UP DA DEVICE'S DL POINTER
84SB XF2 JENG 2,XF3 [J IF DA UNIT NOW ENGAGED
85#2 LDX 5 7 [DA DEVICE IS STILL OFFLINE
85RL ANDX 5 EBA(3) [SO CHECK FOR CONSOLE INPUT
86?= BZE 5 XF2 [J IF NO CONSOLE INPUT EITHER
86QW LDN 5 1 [CONSOLE INPUT BUTTON PRESSED
87=G SMO FXPM1DUMP
87Q6 STO 5 11 [SO SET "ABORT" FLAG FOR XK4PMDUMP
889Q BRN XFAIL [AND JOIN THE CLEAN-UP PATH
88PB XF3 SMO FXPMDR
8992 LDX 2 JMTPTR
89NL SMO FXPMDR
8=8= LDN 3 JMTPTR-CPPTR
8=MW GPERI 2,3,NC [REPEAT THE PREVIOUS PERI
8?7G BRN XDAP [AND TRY AGAIN
8?M6 XOP SMO FXPMDR
8#6Q LDX 2 BLKSDMPD
8#LB SMO FXPM1DUMP
8*62 LDN 5 2
8*KL SBN 5 A1
8B5= DATUMBLK 2,5 [CONVERT BLOCK NUMBER TO HARDWARE FOR
8BJW
8C4G BZE 1 XFK [J IF ADDRESS OUT OF RANGE
8CJ6 BZE 2 XFOK
8D3Q XFK LDN 2 2
8DHB SMO FXPM1DUMP [SET "FILE FULL" FLAG
8F32 STO 2 11 [FOR XK4PMDUMP
8FGL BRN XFAIL [AND JOIN THE CLEAN-UP PATH
8G2= XFOK SMO FXPMDR
8GFW LDX 2 JMTPTR
8G^G LDN 6 512
8HF6 DCA 2,STO,6,COUNT
8HL# ... LDN 6 1
8HRG ... DCA 2,DLA,6,MODE [SET WRITE MODE
8HYQ DCA 2,STO,1,DTSA
8JDB SMO FXPMDR
8JY2 LDX 1 EXCHANGE
8KCL SMO FXPMDR
8KX= LDX 6 JTRA+3(1)
8LBW DCA 2,STO,6,CTSA
8LWG SMO FXPMDR
8MB6 LDN 3 JMTPTR-CPPTR
8MTQ GPERI 2,3,NC
8N*B LDN 6 4
8NT2 SMO FXPMDR
8P#L ADS 6 BLKSDMPD [ UPDATE BLOCK COUNT
8PS= LDX 0 JLINK0
8Q?W ERN 1 4
8QRG SMO FXPMDR
8R?6 STO 1 EXCHANGE [ DOUBLE BUFFERING
8RQQ SMO FXPMDR
8S=B STOZ JTRA+3-1(1) [ZEROISE RECORD POINTER
8SQ2 SMO FXPMDR
8T9L LDX 6 JTRA+4-1(1) [NEW RECORD ADDRESS
8TP= LDN 1 MT3-MT0
8W8W SMO FXPMDR
8WNG ADX 1 JBUNCHBASE
8X86 SMO FXPMDR
8XMQ LDX 2 JPDLINK2 [RESTORE X2
8Y7B BRN (1)
8YM2 XDAEND
8^6L #
8^L= # S/R TO CHECK WHETHER GIVEN DEVICE ENGAGED
925W # X3 - PTR TO THE DEVICE RECORD
92KG #
9356 XCHENG
93JQ LINT 3,6
944B DVS 5 TWEN4(1)
94J2 LDX 7 5
953L LDX 2 6
95H= SLL 6 9
962W SRL 56 9
96GG LDCT 5 #400
9726 BZE 7 XUN
97FQ SMO 7
97^B SRL 5 0
98F2 XUN ANDX 5 EBA(2)
98YL BZE 5 (0) [EXIT 0 IF NOT ENG,
99D= EXIT 0 1 [EXIT 1 IF ENG.
99XW #
9=CG # ROUTINE TO TRNSFR BLOCK TO-FROM UDAS DEVICE
9=X6 # X0-LINK
9?BQ # X4-MODE
9?WB # X5-COUNT
9#B2 # X6-CORE ADDR
9#TL # X7-B-S ADDR
9**= #
9*SW XDATR STO 0 WLINK(1)
9B#G SMO FXPMDR
9BS6 LDX 2 JMTPTR
9C?Q DCA 2,DLA,4,MODE
9CRB DCA 2,STO,5,COUNT
9D?2 DCA 2,STO,6,CTSA
9DQL DCA 2,STO,7,DTSA
9F== SMO FXPMDR
9FPW LDN 3 JMTPTR-CPPTR
9G9G GPERI 2,3,NC
9GP6 LDX 0 WLINK(1)
9H8Q EXIT 0 0
9HNB #
9J82 #
9JML # ROUTINE TO TEST LAST PERI'S REPLY
9K7= # AND DO SOMETHING ABOUT IT IF REQ'D
9KLW #
9L6G TEST STO 0 STORE(1)
9LL6 X9 SMO FXPMDR
9M5Q LDX 4 JMTPTR
9MKB X91 JBUSY 4,X91
9N52 ... JPMFAIL 4,XDFAIL [J IF FAIL
9NJL SMO FXPMDR
9P4= LDX 4 JMTRW1
9PHW SLL 4 5
9Q3G BPZ 4 X92
9QH6 CALL 0 XFIX
9R2Q BRN X9
9RGB X92 LDX 0 STORE(1)
9S22 EXIT 0 0
9SFL #
9S^= #
9TDW # ROUTINE TO OUTPUT 'FIX' MESSAGE TO OPS' CONSOLE
9TYG # AND OTHER THINGS
9WD6 #
9WXQ XFIX STO 0 WLINK(1)
9XCB SMO FXPMDR
9XX2 LDX 6 JMTGEOG
9YBL CALL 7 (JGNO1)
9YW= STO 5 MESSK+2(1)
9^*W LDN 3 MESSK(1)
9^TG CALL 7 (JCONOUT) [OUTPUT 'FIX' MESSAGE
=2*6 X21DA SMO FXPMDR
=2SQ LDX 3 JMTPTR
=3#B JENG 3,X22DA
=3S2 CALL 0 XCHENG [TEST CONSOLE ENGAGE BIT
=4?L BRN X21DA [J IF CONSOLE ISN'T ENGAGED
=4R= LDXC 4 FXPM1DUMP
=5=W BCS £
=5QG STO 4 FXPM1
=6=6 PMOVE PMDUMPDA,FXPM1,1
=6PQ X22DA SMO FXPMDR
=79B LDN 2 JMTPTR-CPPTR
=7P2 GPERI 3,2,NC
=88L LDX 0 WLINK(1)
=8N= EXIT 0 0
=97W #
=9MG #
==76 # CODING TO DUMP GEORGE3 TO MAG. TAPE
==LQ #
=?6B XK1PMDUMP
=?L2 CALL 0 XINIT
=#5L #
=#=S ... LDX 0 FXPM1 [SET UP FXPM1DUMP IN CASE OF
=#D2 ... STO 0 FXPM1DUMP [MT FAIL WHILE WRITING 1ST BLOCK
=#K= LDX 3 XBUFF(1) [ADDRESS OF MT BUFFER
=*4W #
=*JG # WRITE IDENTITY SUBFILE
=B46 #
=BHQ LDN 5 POSTDUMP(1)
=C3B CALL 0 SENSTART ['POSTDUMP' START OF S/F SENTINEL
=CH2 LDN 4 10
=D2L STO 4 0(3) [STORE HDDR
=DG= STO 3 4
=D^W ADN 3 1
=FFG LDN 2 IDENTITY [MOVE IDENTITY INTO
=F^6 CALL 0 XIDENT [MT BUFFER AREA
=GDQ LDX 3 4
=GYB ADN 3 3 [MOVE TIME OF RUN INTO
=HD2 CALL 0 XIDENT [MT BUFFER AREA
=HXL LDX 3 4
=JC= ADN 3 5 [MOVE DATE OF RUN INTO
=JWW CALL 0 XIDENT [MT BUFFER AREA
=KBG LDX 3 4 [RESET X3=START ADDRESS OF MT BUFFER
=KW6 ADN 3 7
=L*Q LDN 2 POSTDUMP(1) [MOVE 'POSTDUMP' INTO
=LTB CALL 0 XIDENT [MT BUFFER AREA
=M*2 LDX 3 4
=MSL STOZ 9(3)
=N#= LDN 2 10
=NRW CALL 0 WRITE [WRITE BLOCK
=P?G LDN 7 2(1) [ADDR FOR BUNCHING ROUTINE
=PR6 CALL 0 PREDUMP
=Q=Q LDN 6 MT4(1)
=QQB MOVE 6 MT6-MT4 [MOVE MT PERI ROUTINE
=R=2 LDX 0 FXPM1
=RPL STO 0 FXPM1DUMP
=S9= ADN 0 MT4-MT0+2
=SNW ADN 0 MT6-MT4
=T8G STO 0 FXPM1
=TN6 BRN (JPMSEG)
=W7Q #
=WMB # ON B/S, USING THE AREA BUFFDUMP. IT THEN COPIES THE CURRENT
=X72 # MT BUFFER FROM THE END OF FIXED STORE INTO THE GSCAN BUFFER
=XLL # AND CHANGES THE CORE ADDRESSES IN THE CONTROL AREAS ACCORDINGLY
=Y6= #
=YKW XK2PMDUMP
=^5G CALL 0 XINIT
=^K6 PMBSADD GEO,1,MTSZE(1),GSCANBUFF,SCANDUMP(1),AUTO
?24Q LDX 1 FXPM1
?2JB PMBSADD GEO,1,MTSZE(1),JTRABUFF,TRADUMP(1)
?342 #
?3HL # CHECK LAST MT TRANSFER AND MOVE CURRENT MT BUFFER
?43= #
?4GW M2 SMO FXPMDR
?52G LDX 4 JMTPTR
?5G6 M2MT JBUSY 4,M2MT [LOOP IF BUSY
?5^Q ... JPMFAIL 4,XK4PMDUMP
?6FB LDXC 4 FXPM1DUMP
?6^2 BCS X2DA [J IF DA DUMP
?7DL M21MT SMO FXPMDR
?7Y= LDX 1 EXCHANGE
?8CW SMO FXPMDR
?8XG LDX 4 JTRA+4-1(1)
?9C6 LDX 5 GSCANBUFF
?9WQ MOVE 4 0 [MOVE CONTENTS OF CURRENT BUFFER
?=BB SMO FXPMDR
?=W2 STO 5 JTRA+4-1(1)
??*L ERN 1 4
??T= LDX 5 JTRABUFF
?##W SMO FXPMDR
?#SG STO 5 JTRA+4-1(1)
?*#6 CALL 7 (JPRINT1)
?*RQ BRN (JPMSEG)
?B?B X2DA SMO FXPMDR
?BR2 LDX 4 JMTRW1
?C=L SLL 4 5
?CQ= BPZ 4 M21MT
?D9W CALL 0 XFIX
?DPG BRN M2
?F96 #
?FNQ # ENTRY POINT TO FINISH DUMP TO TAPE OR DISC
?G8B #
?GN2 XK3PMDUMP
?H7L CALL 0 XINIT
?HM= M3 SMO FXPMDR
?J6W LDX 4 JMTPTR
?JLG M3MT JBUSY 4,M3MT [LOOP IF BUSY
?K66 ... JPMFAIL 4,XK4PMDUMP
?KKQ LDXC 4 FXPM1DUMP
?L5B BCS M3DA [J IF DUMPING TO DA
?LK2 SMO FXPMDR
?M4L LDX 1 EXCHANGE
?MJ= SMO FXPMDR
?N3W LDX 5 JTRA+3-1(1)
?NHG BZE 5 M4 [J IF NO RECORDS IN BLOCK
?P36 SMO FXPMDR
?PGQ LDX 7 JTRA+3(1)
?Q2B ADX 7 5 [X7 -> FIRST FREE WORD IN THE BLOCK
?QG2 SMO FXPM1
?Q^L TXL 5 SIX
?RF= BCC M3MT1 [J IF LENGTH OK
?RYW ADN 5 4
?SDG SMO FXPMDR
?SY6 STO 5 JTRA+2(1)
?TCQ SMO FXPM1
?TXB LDN 6 XLASREC [FILL UP THE SPACE
?WC2
?WWL MOVE 6 4
?XB= ADN 7 4
?XTW M3MT1 SMO 7 [INSERT A ZERO RECORD HEADER
?Y*G STOZ 0 [AT THE END OF THE LAST RECORD
?YT6 LDN 3 1
?^#Q SMO FXPMDR [AND UPDATE THE BLOCK WORD COUNT
?^SB ADS 3 JTRA+2(1)
#2#2 SMO FXPMDR
#2RL LDX 3 JMTPTR
#3?= DCA 3,STO,5,COUNT
#3QW SMO FXPMDR
#4=G LDX 4 JTRA+4-1(1)
#4Q6 DCA 3,STO,4,CTSA
#59Q SMO FXPMDR
#5PB LDN 2 JMTPTR-CPPTR
#692 GPERI 3,2,NC [WRITE LAST DATA BLOCK
#6NL M5 SMO FXPMDR
#78= LDX 4 JMTPTR
#7MW M5MT JBUSY 4,M5MT [LOOP IF BUSY
#87G ... JPMFAIL 4,XK4PMDUMP
#8M6 LDN 5 1
#96Q M4 SMO FXPMDR
#9LB ADX 5 BLKSDMPD
#=62 SMO FXPM1
#=KL STO 5 XBLOCNT
#?5= SMO FXPM1
#?JW LDX 3 XBUFF
##4G LDX 1 FXPM1
##J6 CALL 0 SENTEND [END OF 'POSTDUMP' SENTINEL
#*3Q CALL 0 TRAILER
#*HB MEND SMO FXPM1
#B32 LDN 3 MESSI ['END OF PM DUMP'
#BGL CALL 7 (JCONOUT)
#C2= LDXC 4 FXPM1DUMP
#CFW BCS £
#C^G STO 4 FXPM1
#DF6 BRN (JPMSEG)
#DYQ M3DA SMO FXPMDR
#FDB LDX 4 JMTRW1
#FY2 SLL 4 5
#GCL BPZ 4 M31DA
#GX= CALL 0 XFIX
#HBW BRN M3
#HWG M31DA SMO FXPMDR
#JB6 LDX 3 EXCHANGE
#JTQ SMO FXPMDR
#K*B LDX 4 JTRA+2(3)
#KT2 BZE 4 XDA4 [J IF NO RECS IN LAST BLK
#L#L TXL 4 MTSZE(1) [BLK FULL?
#LS= BCC M4DA [J IF YES
#M?W SMO FXPMDR
#MRG LDX 2 JTRA+3(3)
#N?6 ADX 2 4
#NQQ STOZ 0(2) [INSERT A ZERO RECORD HEADER
#Q9L M4DA SMO FXPMDR
#QP= LDX 4 BLKSDMPD
#R8W SMO FXPM1DUMP
#RNG LDN 5 2
#S86 SBN 5 A1
#SMQ DATUMBLK 4,5
#T7B BZE 1 M3N
#TM2 BZE 2 XNG
#W6L M3N LDN 4 2
#WL= SMO FXPM1DUMP [SET "FILE FULL" FLAG
#X5W STO 4 11 [FOR K4PMDUMP
#XKG BRN XK4PMDUMP [AND JOIN THE CLEAN-UP PATH
#Y56 XNG LDN 4 1
#YJQ LDX 7 1
#^4B LDX 1 FXPM1
#^J2 LDN 5 512
*23L SMO FXPMDR
*2H= LDX 6 JTRA+3(3)
*32W CALL 0 XDATR [WRITE THE BLK AWAY
*3GG LDN 6 4
*426 SMO FXPMDR
*4FQ ADS 6 BLKSDMPD
*4^B CALL 0 TEST
*5F2 XDA4 SMO FXPM1DUMP
*5YL LDX 7 8 [PICK UP DATUMISED H/W ADDR OF FIC
*6D= SMO FXPMDR
*6XW LDX 6 JTRA+3
*7CG LDN 5 512
*7X6 LDN 4 0
*8BQ CALL 0 XDATR [READ FIC BLK
*8WB CALL 0 TEST
*9B2 LDX 3 6 [CORE ADDRESS OF THE FIC BLOCK
*9TL LDX 4 1(3) [PICK UP THE BLOCK CHECKSUM
*=*= BZE 4 XDA5 [J IF NO CHECKSUMMING REQUIRED
*=SW SUM 2 128 [CHECKSUM THE BLOCK
*?#G BNZ 2 XDFAIL [J IF CHECKSUM FAIL
*?S6 XDA5 SMO FXPMDR
*#?Q LDX 4 BLKSDMPD
*#RB SRL 4 2 [CONVERT BLOCKS WRITTEN TO BUCKETS
**?2 STO 6 STORE(1)
**QL SMO FXPM1DUMP
*B== ADX 6 9 [X6 -> CORE ADDRESS OF OUR FIC
*BPW SMO 6
*C9G STO 4 12 [STORE THE END OF FILE MARKER
*CP6 LDX 0 K30+K70 [PICK UP TODAY'S DATE
*D8Q SMO 6
*DNB STO 0 8 [AND RECORD IT IN THE FIC
*F82 SMO 6
*FML STOZ 9 [SET A ZERO RETENTION PERIOD
*G7= LDX 3 STORE(1) [PICK UP CORE ADDRESS OF THE BLOCK
*GLW LDX 6 1(3) [PICK UP THE BLOCK CHECKSUM
*H6G BZE 6 XDA6 [J IF NO CHECKSUMMING REQUIRED
*HL6 STOZ 1(3) [ZEROISE THE CHECKSUM WORD
*J5Q SUM 2 128 [CALCULATE THE NEW CHECKSUM
*JKB NGS 2 1(3) [AND STORE IT IN THE RED TAPE
*K52 XDA6 LDX 6 STORE(1)
*KJL STO 4 XBLOCNT(1)
*L4= LDN 4 1
*LHW CALL 0 XDATR [WRITE IT AWAY
*M3G CALL 0 TEST
*MH6 SMO FXPM1DUMP
*N2Q LDN 5 2
*NGB SBN 5 A1
*P22 LDN 4 0
*PFL DATUMBLK 4,5 [DATUMISE IDENTITY BLK
*P^= BZE 1 M3N
*QDW BNZ 2 M3N
*QYG LDN 5 512
*RD6 LDX 7 1
*RXQ LDX 1 FXPM1
*SCB CALL 0 XDATR [READ IDENTITY BLK
*SX2 CALL 0 TEST
*TBL LDX 4 XBLOCNT(1)
*TW= SMO 6
*W*W STO 4 9 [STORE THE END OF FILE MARKER
*WTG LDN 4 1
*X*6 CALL 0 XDATR [WRITE IT BACK
*XSQ CALL 0 TEST
*Y#B BRN MEND
*YS2 #
*^?L #
*^R= # ENTRY POINT 4 IS USED WHEN:
B2=W #
B2QG # 1) A DA/MT FAIL OCCURS DURING THE DUMP
B3=6 # 2) THE DISC FILE BECOMES FULL
B3PQ # 3) THE DA UNIT BECOMES INOPERABLE AND THE OPERATORS ABORT
B49B # THE DUMP BY INPUTTING A MESSAGE ON THE CONSOLE
B4P2 #
B58L XDFAIL
B5N= LDN 4 1
B67W STO 4 XFAILFLAG(1)
B6MG BRN M6A
B776 XK4PMDUMP
B7LQ CALL 0 XINIT
B86B STOZ XFAILFLAG(1)
B8L2 M6A SMO FXPMDR
B95L LDX 4 JTRA+4-1
B9K= TXL 4 ENDFIX [TEST AND J IF MT BUFFERS
B=4W BCS M6 [ARE IN FIXED STORE
B=JG PMBSADD GEO,0,MTSZE(1),GSCANBUFF,SCANDUMP(1),AUTO
B?46 LDX 1 FXPM1
B?HQ PMBSADD GEO,0,MTSZE(1),JTRABUFF,TRADUMP(1)
B#3B LDX 1 FXPM1
B#H2 M6 LDX 3 XFAILFLAG(1)
B*2L BNZ 3 M8 [J IF DISC FAIL DETECTED IN THIS SEGM
B*G= LDXC 3 FXPM1DUMP
B*^W BCS M7 [J IF DA DUMP
BBFG LDX 3 XBUFF(1)
BB^6 BRN MT1 [J TO MT FAIL ROUTINE
BCDQ M7 STO 3 FXPM1 [RESET FXPM1
BCYB SMO FXPM1 [PICK UP THE "FAILURE" FLAG
BDD2 LDX 3 11 [LEFT BY THE DA PERI ROUTINE
BDXL BNG 3 M8 [J IF THE DISC HAS FAILED
BFC= SBN 3 1
BFWW BZE 3 M9 [J IF THE OPERATORS ABORTED THE DUMP
BGBG PMOVE PMDUMPDA,FXPM1,4 [OTHERWISE THE DISC FILE IS FULL
BGW6 M8 PMOVE PMDUMPDA,FXPM1,3 [GO AND PRINT FAIL INFORMATION
BH*Q M9 PMOVE PMDUMPDA,FXPM1,1 [RESTART THE DUMP
BHTB #
BJ*2 #
BJSL # CODING TO DUMP PM TO UDAS DEVICE
BK#= #
BKRW XK5PMDUMP
BL?G CALL 0 XINIT
BLR6 LDN 2 PMCOMM(1) [MOVE THE CHARACTER STRING:
BM=Q LDX 3 1
BMQB MOVE 2 2 ["PMDACOMM" TO [FXPM1]
BN=2 LDN 3 2(1)
BNPL LDN 2 JDUMPFD(1) [MOVE THE REMAINING 10 WORDS OF THE
BP9= MOVE 2 10 [COMMUNICATION AREA TO [FXPM1] + 2
BPNW LDX 3 XBUFF(1)
BQ8G LDN 4 10
BQN6 STO 4 0(3) [STORE HDDR
BR7Q STO 3 4
BRMB ADN 3 1
BS72 LDN 2 IDENTITY [MOVE IDENTITY INTO
BSLL CALL 0 XIDENT [MT BUFFER AREA
BT6= LDX 3 4
BTKW ADN 3 3 [MOVE TIME OF RUN INTO
BW5G CALL 0 XIDENT [MT BUFFER AREA
BWK6 LDX 3 4
BX4Q ADN 3 5 [MOVE DATE OF RUN INTO
BXJB CALL 0 XIDENT [MT BUFFER AREA
BY42 LDX 3 4 [RESET X3=START ADDRESS OF MT BUFFER
BYHL ADN 3 7
B^3= LDN 2 POSTDUMP(1) [MOVE 'POSTDUMP' INTO
B^GW CALL 0 XIDENT [MT BUFFER AREA
C22G LDX 3 4
C28Q ... LDX 6 5(1) [NUMBER OF CYLINDERS IN THE FILE
C2C2 ... MPY 6 6(1) [* BLOCKS PER CYLINDER
C2K= ... SRL 7 2 [/ 4 = NO OF BUCKETS IN THE FILE
C2RG ... STO 7 9(3) [STORE INITIAL EOF TAG IN IDENT BLOCK
C2^Q LDX 4 1
C3FB SBN 4 A1-2
C3^2 LDN 5 0
C4DL DATUMBLK 5,4
C4Y= BZE 1 M3N [ABORT THE DUMP IF DISC FILE FULL
C5CW BNZ 2 M3N
C5XG LDN 4 1 [SET WRITE MODE
C6C6 LDN 5 512 [AND THE PERI COUNT
C6WQ LDX 7 1 [SET THE DEVICE TRANSFER ADDRESS
C7BB LDX 1 FXPM1 [RESTORE OUR DATUM
C7W2 LDX 6 XBUFF(1) [AND SET THE CORE TRANSFER ADDRESS
C8*L CALL 0 XDATR [WRITE THE FIRST BLOCK AWAY
C8T= CALL 0 TEST [CHECK THAT THE TRANSFER WAS OK
C9#W LDN 4 4
C9SG STO 4 XBLOCNT(1) [INITIAL COUNT OF BLOCKS WRITTEN
C=#6 LDX 7 1
C=RQ ADN 7 13
C??B CALL 0 PREDUMP
C?R2 LDCT 6 #400
C#=L ORX 6 FXPM1
C#Q= STO 6 FXPM1DUMP
C*9W LDX 6 FXPM1
C*PG ADN 6 MT4-MT0+13
CB96 ADN 6 XDAEND-XDAPERI
CBNQ STO 6 FXPM1
CC8B LDN 6 XDAPERI(1)
CCN2 MOVE 6 XDAEND-XDAPERI
CD7L LDX 2 7 [PICK UP CORE ADDRESS DAPERI ROUTINE
CDM= ADN 2 XFIXM+3-XDAPERI [ADD DISPLACEMENT OF "FIX" MESSAGE
CF6W SMO FXPMDR
CFLG LDX 6 JMTGEOG [PICK UP DA DEVICE'S UNIT NUMBER AND
CG66 CALL 7 (JGNO1) [STORE IT IN THE MESSAGE IN CASE
CGKQ STO 5 0(2) [OF INOPERABILITY DURING THE DUMP
CH5B BRN (JPMSEG)
CHK2 #
CJ4L #ALT JPMDSIZE=MT4-MT0+2+((13+XDAEND-XDAPERI)>(MT6-MT4))
CJJ= #
CK3W MTBUF [MAG TAPE BUFFERS
CKHG #END
^^^^ ...617424120008