Show pageBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. {{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]] <code - PMDUMP85.txt>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 </code> Last modified: 17/01/2024 11:55by 127.0.0.1 Log In