{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: PERFPASS864)}}
====== PERFPASS864 ======
(George Source)
**Macros used:** [[george:macro:ADDMODE|ADDMODE]], [[george:macro:BASEFCB|BASEFCB]], [[george:macro:BXE|BXE]], [[george:macro:CHNUMCOD|CHNUMCOD]], [[george:macro:CLOSE|CLOSE]], [[george:macro:CLOSETOP|CLOSETOP]], [[george:macro:COBJUNUSE|COBJUNUSE]], [[george:macro:COBJUSE|COBJUSE]], [[george:macro:COMBRKIN|COMBRKIN]], [[george:macro:COOR4|COOR4]], [[george:macro:CREATEB|CREATEB]], [[george:macro:ELSE|ELSE]], [[george:macro:ENDCOM|ENDCOM]], [[george:macro:FI|FI]], [[george:macro:FNORM|FNORM]], [[george:macro:FREECORE|FREECORE]], [[george:macro:HUNTMISB|HUNTMISB]], [[george:macro:HUNTW|HUNTW]], [[george:macro:IF|IF]], [[george:macro:INSTPARA|INSTPARA]], [[george:macro:ISSUCOMB|ISSUCOMB]], [[george:macro:LONGOFF|LONGOFF]], [[george:macro:LONGON1|LONGON1]], [[george:macro:LONGSET|LONGSET]], [[george:macro:LONGSTOP|LONGSTOP]], [[george:macro:MFREE|MFREE]], [[george:macro:MHUNT|MHUNT]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:MONOUT|MONOUT]], [[george:macro:NAMETOP|NAMETOP]], [[george:macro:NEXTFCB|NEXTFCB]], [[george:macro:OPEN|OPEN]], [[george:macro:OPEND|OPEND]], [[george:macro:OUTNUM|OUTNUM]], [[george:macro:REPERR|REPERR]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETMODE|SETMODE]], [[george:macro:SETNCORE|SETNCORE]], [[george:macro:SPARAPAS|SPARAPAS]], [[george:macro:STEP|STEP]], [[george:macro:TESTBRKIN|TESTBRKIN]], [[george:macro:TESTREP2|TESTREP2]], [[george:macro:THEN|THEN]], [[george:macro:USEROPEX|USEROPEX]], [[george:macro:ZERRORX|ZERRORX]], [[george:macro:ZERRORY|ZERRORY]]
22FL #SEG PERFPASS
22LS ...#OPT K0PERFPASS=0
22S2 ...#LIS K0PERFPASS
22^= #DEF RD=0 [ DATE
23DW #DEF RT=RD+2 [ TIME
23YG #DEF RMJ=RT+1 [ MOP JOBS
24D6 #DEF RBJ=RMJ+1 [ BACKGROUND JOBS
24XQ #DEF RCI=RBJ+1 [ CORE IMAGES
25CB #DEF ROC=RCI+1 [ OBJECT PROGRAM CORE
25X2 #DEF RGC=ROC+1 [ GEORGE CHAPTER CORE
26BL #DEF RF=RGC+1 [ FREE CORE
26W= #DEF RGM=RF+1 [ GEORGE MILL TIME
27*W #DEF ROM=RGM+2 [ OBJECT MILL TIME
27TG #DEF RBR=ROM+2 [ FILESTORE READS
28*6 #DEF RBW=RBR+2 [ FILESTORE WRITES
28SQ #DEF RST=RBW+2 [ SWAP TRANSFERS
29#B #DEF RCT=RST+2 [ CHAPTER TRANSFERS
29S2 #DEF RCF=RCT+2 [ CHAPTERS FREED
2=?L #DEF RCC=RCF+2 [ CHAPTER CHANGES
2=R= #DEF RFM=RCC+1 [ CHAPTERS FREED BY INFLIGHT GC
2?=W #DEF RCH=RFM+1 [ LENGTH OF CHAPTER CHAIN
2?QG #DEF RFC=RCH+1 [ USAGE BLOCKS IN FILE CHAIN
2#=6 #DEF RHO=RFC+1 [ FILES ON HALF-OPEN CHAIN
2#PQ #DEF RCU=RHO+1 [ CORE UNJAMMER ENTERED
2*47 ...#DEF RID=RCU+1 [ EXECUTIVE IDLE TIME
2*BJ ...#DEF RFRH=40
2*P2 8HPERFPASS
2B8L SEGENTRY K1PERFPASS,ZK1
2BN= [THIS SEGMENT IS OBEYED TO WRITE PERFORMANCE DATA TO A FILE.
2C7W [THE MASTER COMPONENT CONTAINS THE CODE FOR OPENING THE FILE
2CMG [AND SUBROUTINES FOR WRITING THE FIXED FORMAT DATA AT THE FRONT
2D76 [OF THE RECORD
2DLQ [THE REST OF THE SEGMENT CONTAINS VARIOUS ROUTINES FOR COLLECTING
2F6B [MORE SPECIFIC DATA. THE CURRENT ACTIVITY IS ROUTED TO THE APPROPRIATE
2FL2 [COLLECTION CODE BY COMMAND PARAMETER.
2G5L [
2GK= [ABSOLUTE FILE NAME FOR INSTALLATION PARAMETERS FILE
2H4W ZFABSNB +10
2HJG 12HSYSTEM
2J46 #SKI G3
2JHQ 12HPARAMINDEX
2K3B #SKI G4
2KH2 12HPARAMINDEXG4
2L2L +0
2LG= +1
2L^W 4HB1
2MFG [ ********************
2M^6 [
2NDQ [ SUBROUTINES
2NYB [
2PD2 [ ********************
2PXL [
2QC= #PAGE
2QWW [
2RBG ZDPSPARAM
2RW6 [
2S*Q [ THIS SUBROUTINE TRANSFERS THE NEXT PARAMETER TO A CPB/CUNI
2STB [ EXIT 0 IF PARAMETER NULL OR MISSING - CPB/CUNI FREED
2T*2 [ EXIT 1 IF PARAMETER FOUND
2TSL [ X7 USED AS LINK ACCUMULATOR
2W#= [ CHANGES - X0 DESTROYED
2WRW [ X1 = FX1
2X?G [ X2 = FX2
2XR6 [
2Y=Q [ ****** THIS SUBROUTINE CO-ORDINATES ******
2YQB [
2^=2 SBX 7 FX1 [ PREPARE TO CO-ORDINATE
2^PL SPARAPAS [ GET PARAMETER
329= ADX 7 FX1
32NW MHUNT 1,CPB,CUNI [ HUNT CPB/CUNI
338G NGX 0 ANUM(1) [ GET CONTENT POINTER
33N6 BPZ 0 PNULL [ BRANCH IF NULL OR ABSENT
347Q LDX 1 FX1 [ RESET X1
34MB EXIT 7 1 [ EXIT OK
3572 PNULL FREECORE 1 [ FREE CPB/CUNI
35LL EXIT 7 0 [ EXIT 0
366= [
36KW #PAGE
375G [
37K6 ZDPNUMCON
384Q [
38JB [ THIS SUBROUTINE CONVERTS THE PARAMETER IN THE FIRST CPB/CUNI
3942 [ FROM CHARACTERS TO BINARY - ERROR MESSAGE GENERATED IF
39HL [ PARAMETER FOUND IS NOT A VALID NUMBER FORMAT
3=3= [ EXIT 0 IF FAILED
3=GW [ EXIT 1 IF CONVERSION SUCCESSFUL
3?2G [ X7 USED AS LINK ACCUMULATOR
3?G6 [ CHANGES - X0 DESTROYED
3?^Q [ X1 = FX1
3#FB [ X2 = FX2
3#^2 [ X6 = RESULT IF CONVERSION SUCCESSFUL
3*DL [ FIRST CPB/CUNI BLOCK WILL HAVE BEEN FREED
3*Y= [
3BCW [ ****** THIS SUBROUTINE CO-ORDINATES ******
3BXG [
3CC6 SBX 7 FX1 [ PREPARE TO CO-ORDINATE
3CWQ CHNUMCOD [ CONVERT PARAMETER
3DBB ADX 7 FX1
3DW2 MFREE CPB,CUNI [ FREE CPB/CUNI BLOCK
3F*L TESTREP2 CHNUMERR,(7) [ TEST FOR ERROR REPLY
3FT= LDX 6 ACOMMUNE1(2) [ SUCCESS - GET RESULT
3G#W EXIT 7 1 [ AND EXIT OK
3GSG [
3H#6 #PAGE
3HRQ [
3J?B ZDPFINTIME
3JR2 [
3K=L [ THIS SUBROUTINE ACCESSES THE NEXT COMMAND PARAMETER AND
3KQ= [ IF ONE IS FOUND CONVERTS IT TO A FINISH TIME STORED IN X6
3L9W [ AND AWORK2. IF PARAMETER IS NULL OR MISSING X6 AND AWORK2
3LPG [ WILL BE SET NEGATIVE
3M96 [ EXIT 0 IF PARAMETER FORMAT ERROR
3MNQ [ EXIT 1 IF OK
3N8B [ X7 USED AS LINK ACCUMULATOR
3NN2 [ CHANGES - X0 DESTROYED
3P7L [ X1 = FX1
3PM= [ X2 = FX2
3Q6W [ X6 = AWORK2 = FINISH TIME OR NEGATIVE
3QLG [
3R66 [ ****** THIS SUBROUTINE CO-ORDINATES ******
3RKQ [
3S5B SBX 7 FX1 [ PREPARE TO CO-ORDINATE
3SK2 SMO FX2
3T4L STO 7 AWORK2 [ PRESERVE RETURN ADDRESS
3TJ= CALL 7 ZDPSPARAM [ GET NEXT PARAMETER
3W3W BRN PINF [ ABSENT - BRANCH
3WHG CALL 7 ZDPNUMCON [ CONVERT
3X36 BRN PERR [ FORMAT ERROR - BRANCH
3XGQ MPY 6 TIME(1) [ CONVERT FROM MINUTES
3Y2B ADX 7 CLEANCT [ PLUS 'TIME NOW'
3YG2 LDX 6 7 [ TRANSFER RESULT
3Y^L POUT LDX 7 AWORK2(2) [ RECOVER RETURN ADDRESS
3^F= STO 6 AWORK2(2) [ STORE RESULT
3^YW ADX 7 FX1
42DG EXIT 7 1 [ EXIT OK
42Y6 PINF NGS 1 6 [ SET X6 NEGATIVE
43CQ BRN POUT
43XB PERR LDX 7 AWORK2(2) [ RECOVER RETURN ADDRESS
44C2 ADX 7 FX1
44WL EXIT 7 0 [ EXIT 0
45B= TIME 60*1000/K9
45TW [
46*G [
46T6 #PAGE
47#Q [
47SB ZDPCHECTIM
48#2 [
48RL [ THIS SUBROUTINE COMPARES A FINISH TIME IN AWORK2 WITH TIME
49?= [ NOW AND EXITS 0 IF TIME HAS EXPIRED (NO CHECK IF AWORK2
49QW [ IS -VE) ELSE EXIT 1. IF TIME NOW IS MORE THAN 20 HOURS
4==G [ LESS THAN AWORK2 'OVER MIDNIGHT' IS ASSUMED AND 24 HOURS
4=Q6 [ IS SUBTRACTED FROM AWORK2.
4?9Q [ BREAKIN IS TESTED FOR AND IF FOUND IS TREATED AS 'TIME UP'
4?PB [ BITS 1-23 OF ADPSUICIDE ZERO ALSO TREATED AS 'TIME UP'
4#92 [ EXIT 0 IF TIME UP
4#NL [ EXIT 1 IF TIME NOT UP
4*8= [ X7 USED AS LINK ACCUMULATOR
4*MW [ CHANGES - X0 DESTROYED
4B7G [ X1 = FX1
4BM6 [ X2 = FX2
4C6Q [
4CLB LDX 1 FX1
4D62 LDX 2 FX2
4DKL LDXC 0 AWORK2(2) [ GET FINISH TIME
4F5= BCS ZNUP [ -VE - BRANCH
4FJW SBX 0 CLEANCT [ SUBTRACT TIME NOW
4G4G BNG 0 (7) [ TIME UP - EXIT 0
4GJ6 TXL 0 T20HRS(1) [ HUGE REMAINDER?
4H3Q BCS ZNUP [ NO - BRANCH
4HHB LDX 0 T24HRS(1) [ GET VALUE OF 24 HRS. AND
4J32 SBS 0 AWORK2(2) [ SUBTRACT FROM FINISH TIME
4JGL ZNUP TESTBRKIN (7) [ BREAKIN ALSO = TIME UP
4K2= LDXC 0 ADPSUICIDE [ CRASH CLOSE?
4KFW BZE 0 (7) [ YES - EXIT 0
4K^G EXIT 7 1 [ EXIT 1
4LF6 T20HRS 1000/K9*20*60*60
4LYQ T24HRS 1000/K9*24*60*60
4MDB [
4MY2 [
4NCL #PAGE
4NX= [
4PBW ZDPOPENFILE
4PWG [
4QB6 [ THIS SUBROUTINE ACCESSES THE NEXT COMMAND PARAMETER AND
4QTQ [ IF ONE IS FOUND WILL ATTEMPT TO OPEN A FILE (BASIC) IN
4R*B [ THAT NAME, EXIT 2 WITH FILE OPEN AND AWORK1 SET ZERO IF
4RT2 [ SUCCESSFUL. IF PARAMETER IS NULL OR MISSING NO OPEN WILL
4S#L [ BE ATTEMPTED, WILL EXIT 2 WITH AWORK1 SET NON-ZERO
4SS= [ EXIT 0 IF BREAKIN OCCURS
4T?W [ EXIT 1 IF OTHER ERROR
4TRG [ EXIT 2 IF OK
4W?6 [ X7 USED AS LINK ACCUMULATOR
4WQQ [ CHANGES - X0 DESTROYED
4X=B [ X1 = FX1
4XQ2 [ X2 = FX2
4Y9L [ X3 DESTROYED
4YP= [
4^8W [ ****** THIS SUBROUTINE CO-ORDINATES ******
4^NG [
5286 SBX 7 FX1 [ PREPARE TO CO-ORDINATE
52MQ SMO FX2
537B STO 7 AWORK1 [ PRESERVE RETURN ADDRESS
53M2 CALL 7 ZDPSPARAM [ GET NEXT PARAMETER
546L BRN NERR [ ABSENT - ERROR
54L= MHUNT 1,CPB,CUNI [ FIND CPB/CUNI
555W NAMETOP 1,FILE,FNAME [ RENAME FOR FNORM
55KG FNORM 1 [ NORMALISE NAME
5656 TESTREP2 NAMEFORM,NERR [ CHECK REPLY
56JQ MHUNT 1,FILE,FNAME [ FIND FILE/FNAME BLOCK
574B NAMETOP 1,CPB,CUNI [ RENAME
57J2 LDCT 7 #400 [ SET X7 NEGATIVE
583L TESTREPN ADJUNCTS,PFA [ BRANCH IF REPLY NOT ADJ.
58H= HUNTW 2,FILE,ADJUNCTS [ FIND FILE/ADJUNCTS BLOCK
592W LDX 7 A1+1(2) [ RESET X7
59GG PFA CALL 3 ZDPCREATE [ SET UP FILE CREATE/BLOCK
5=26 LDX 1 7 [ TRANSFER X7
5=FQ SETMODE 7,COMMUNE,NOWAIT,REPLY
5=^B ANDX 7 1 [ ADD ANY MISSING MODES
5?F2 BNG 1 PFA1 [ BRANCH IF X1 STILL -VE
5?YL MHUNTW 1,FILE,ADJUNCTS [ RELOCATE FILE ADJUNCTS
5#D= LDX 0 A1+2(1)
5#XW BZE 0 PFA1
5*CG STO 0 CETM(2) [ STORE ORIGINAL TYPE
5*X6 PFA1 LDX 0 GSIGN
5BBQ ORS 0 CEINF1(2)
5BWB ADDMODE 7,APPEND,EMPTY,CREATE
5CB2 USEROPEX PBRK,7 [ OPEN IT!
5CTL REPERR PFA2 [ BRANCH IF SUCCESSFUL
5D*= NERR LDX 7 AWORK1(2) [ RECOVER RETURN ADDRESS
5DSW NGS 1 AWORK1(2) [ SET AWORK1 NEGATIVE
5F#G ADX 7 FX1
5FS6 EXIT 7 1 [ EXIT 1
5G?Q PFA2 LDX 7 AWORK1(2) [ RECOVER RETURN ADDRESS
5GRB STOZ AWORK1(2) [ ZEROISE AWORK1
5H?2 PFA3 ADX 7 FX1
5HQL EXIT 7 2 [ EXIT OK
5J== PBRK SMO FX2
5JPW LDX 7 AWORK1 [ RECOVER RETURN ADDRESS
5K9G ADX 7 FX1
5KP6 EXIT 7 0 [ EXIT 0
5L8Q [
5LNB [ THIS SUBROUTINE SETS UP A FILE/CREATE BLOCK WITH TYPE SET
5M82 [ TO BASIC
5MML [ EXIT 0 ALWAYS
5N7= [ X3 USED AS LINK ACCUMULATOR
5NLW [ CHANGES - X0 DESTROYED
5P6G [ X1 = FX1
5PL6 [ X2 = POINTER TO BLOCK
5Q5Q [
5QKB [ ****** THIS SUBROUTINE CO-ORDINATES ******
5R52 [
5RJL ZDPCREATE
5S4= [
5SHW SBX 3 FX1 [ PREPARE TO CO-ORDINATE
5T3G CREATEB 2 [ SET UP FILE/CREATE BLOCK
5TH6 LDX 0 TYPE(1) [ GET TYPE BASIC
5W2Q STO 0 CETM(2) [ AND STORE IN BLOCK
5WGB ADX 3 FX1
5X22 EXIT 3 0
5XFL TYPE #40000012
5X^= [
5YDW #PAGE
5YYG [
5^D6 ZDPSTEP
5^XQ [
62CB [ THIS SUBROUTINE PREPARES A BUFFER FOR THE TOP FILE
62X2 [ OPEN OR IF AWORK1 IS NON-ZERO WILL DISPATCH A GMON/JRNAL
63BL [ BLOCK IF ONE IS FOUND AFTER CPAT - IF AWORK1 IS POSITIVE
63W= [ A NEW G/J BLK. WILL BE SET UP WITH AWORK1 AS IT'S MESSAGE NO.
64*W [ X4 SPECIFIES THE REQUIRED BUFFER SIZE IN BOTH CASES
64TG [ EXIT 0 IF SERIOUS ERROR - TOP FILE WILL HAVE BEEN CLOSED
65*6 [ IF ONE OPEN AND AWORK1 SET NEGATIVE
65SQ [ EXIT 1 IF OK - X3 POINTS TO HEAD OF BUFFER
66#B [ X7 USED AS LINK ACCUMULATOR
66S2 [ CHANGES - X0 DESTROYED
67?L [ X1 = FX1
67R= [ X2 = FX2
68=W [ X3 POINTS TO BUFFER IF OK
68QG [ X6 DESTROYED
69=6 [ THE TOP FILE MAY HAVE BEEN CLOSED AND A NEW FILE
69PQ [ ONE GENERATION NO. HIGHER OPENED IF FILE IS FOUND
6=9B [ TO BE FULL
6=P2 [
6?8L [ ****** THIS SUBROUTINE MAY CO-ORDINATE ******
6?N= [
6#7W LDX 2 FX2
6#MG SBX 7 FX1 [ PREPARE TO CO-ORDINATE
6*76 LDX 0 AWORK1(2) [ IS SJ BEING USED?
6*LQ BNZ 0 ZBRK2 [ YES - ERROR
6B6B ADN 4 2 [ ALLOW SPACE FOR RED-TAPE
6BL2 TESTREP2 FNEARLY,ZFULL [ FNEARLY ALREADY SET?
6C5L ZSTEP LDX 1 4 [ SET X1 TO BUFFER SIZE
6CK= STEP ,0(1),ZBRK1 [ SET UP BUFFER
6D4W TESTREP2 OK,ZGOOD,COORED,ZGOOD,FNEARLY,ZGOOD
6DJG ZFULL CLOSE [ CLOSE TOP FILE
6F46 CALL 3 ZDPCREATE [ SET UP FILE/CREATE BLOCK
6FHQ MHUNT 3,FILE,FABSNB [ FIND FILE/FABSNB
6G3B LDN 0 1
6GH2 ADX 3 HDREC(3) [ GET RECORD HEADER
6H2L SBN 3 2 [ LOCATE GENERATION NO.
6HG= ADS 0 HDREC(3) [ INCREMENT GEN. NO.
6H^W OPEN ZBRK,APPEND,EMPTY,CREATE,NOWAIT,REPLY,COMMUNE
6JFG TESTREP2 OK,ZSTEP [ BRANCH IF OPEN OK
6J^6 BRN ZBRK [ OPEN FAIL - BRANCH
6KDQ ZGOOD STO 4 FRH(3) [ RED-TAPE WORD 1
6KYB LDN 0 #41
6LD2 STO 0 FRH+1(3) [ RED-TAPE WORD 2
6LXL ADN 3 2+FRH [ ALLOW FOR RED-TAPE
6MC= SBN 4 2 [ RESET X4 TO ENTRY VALUE
6MWW ZOK9 ADX 7 FX1
6NBG EXIT 7 1 [ EXIT OK
6NW6 ZBRK1 CLOSE [ CLOSE TOP FILE
6P*Q ZBRK SBN 4 2 [ RESET X4 TO ENTRY VALUE
6PTB ZBRK2 ADX 7 FX1
6Q*2 NGS 2 AWORK1(2) [ NO FILE OPEN MARKER
6QSL EXIT 7 0 [ EXIT 0
6R#= #PAGE
6RRW [
6S?G [
6SR6 ZDPSCANCH
6T=Q [
6TQB [ THIS SUBROUTINE FINDS THE NUMBER OF BLOCKS OF TYPE SPECIFIED
6W=2 [ IN LOCATION FOLLOWING CALL ON CHAIN - BASE ADDRESS IN X1 -
6WPL [ CHAIN MUST END IN FIXED - BLOCK TOTAL IN X6 ON EXIT
6X9= [ EXIT 1 ALWAYS
6XNW [ X2 USED AS LINK ACCUMULATOR
6Y8G [ CHANGES - X0 DESTROYED
6YN6 [ X1 DESTROYED
6^7Q [ X6 CONTAINS BLOCK COUNT
6^MB [
7272 LDN 6 0 [ INITIALISE X6
72LL WLOP3 LDX 1 FPTR(1) [ FIND NEXT BLOCK
736= TXL 1 ENDFIX [ END OF CHAIN?
73KW BCS WEND3 [ YES - BRANCH
745G LDX 0 ATYPE(1)
74K6 SRL 0 12
754Q TXU 0 0(2) [ MATCH?
75JB BCS WLOP3 [ NO - BRANCH
7642 ADN 6 1 [ YES - INCREMENT COUNT
76HL BRN WLOP3 [ AND RETURN TO LOOP
773= WEND3 EXIT 2 1 [ EXIT 1
77GW [
782G [
78G6 #PAGE
78^Q [
79FB ZDPSNAPSHOT
79^2 [THIS S/R COLLECTS 'GFRH' WORDS OF DATA FROM FIXED CORE AND
7=DL [VARIOUS CHAINS AND STORES THEM IN THE CURRENT BUFFER
7=Y= [INDICATED BY X3. ON EXIT X1=FX1 , X2=FX2, X4 AND X5 DESTROYED
7?CW [EXIT 0 IF 'LIMIT OF ONLINE B/S' REACHED
7?XG LDN 0 FDATE
7#C6 LDN 1 RD(3)
7#WQ MOVE 0 2 [DATE
7*BB LDX 0 CLEANCT
7*W2 STO 0 RT(3) [TIME
7B*L SBX 0 CJTIME
7BT= STO 0 RCU(3) [CORE UNJAMMER ENTERED
7C#W LDX 0 ACTPROGS
7CSG STO 0 RCI(3) [CORE IMAGES
7LM= COBJUSE
7M6W STO 0 ROC(3) [OBJECT CORE
7MLG LDX 0 ACHAP
7N66 STO 0 RGC(3) [GEORGE CHAPTERS
7N7Y ...#UNS ISTDP
7N9Q ... COBJUNUSE [ "FREE" OBJECT CORE
7N?J ...#UNS ISTDP
7N*B ...#SKI
7NC8 ...(
7NF2 ...#SKI G4
7NGS ...(
7NJL ... LDX 0 COBJFREE [ "FREE" OBJECT CORE
7NLD ... SLL 0 10
7NN= ...)
7NQ4 ...#SKI G3
7NRW ... LDX 0 CFREE
7NTN ...)
7NXG ...#SKI G3
7N^# ...#UNS ISTDP
7P36 ... ADX 0 CFREE
7P5B ADX 0 FREZFREE ['FROZEN'FREECORE
7PK2 STO 0 RF(3) [FREECORE
7Q4L LDN 0 GEOTIME
7QJ= LDN 1 RGM(3) [GEORGE MILL
7R3W MOVE 0 2
7RHG LDN 0 GPROGTIME
7S36 LDN 1 ROM(3) [OBJECT MILL
7SGQ MOVE 0 2
7T2B LDN 0 BSFSR
7TG2 LDN 1 RBR(3) [FILESTORE READS
7T^L MOVE 0 2
7WF= LDN 0 BSFSW
7WYW LDN 1 RBW(3) [FILESTORE WRITES
7XDG MOVE 0 2
7XY6 LDN 0 BSAPS
7YCQ LDN 1 RST(3) [SWAP TRANS.
7YXB MOVE 0 2
7^C2 LDN 0 BSCHCH
7^WL LDN 1 RCT(3) [CHAPTER TRANS.
82B= MOVE 0 2
82TW LDN 0 FCCHAPFREE
83*G LDN 1 RCF(3) [CHAPTERS FREED
83T6 MOVE 0 2
84#Q LDX 0 CHCHCOUNT
84SB STO 0 RCC(3) [NO. OF CHAPTER CHANGES
85#2 HUNTMISB 2,JWELL
85RL LDEX 0 JOBENTS+JOBCTS(2) [ GET BKGND JOB COUNT
86?= STO 0 RBJ(3) [ AND STORE
86QW LDEX 0 JOBENTS+JOBCTS+JWENTRY(2) [MOP JOB COUNT
87=G STO 0 RMJ(3) [ AND STORE
87Q6 LDN 1 BCHAP [CHAIN BASE
889Q ... CALL 2 ZDPSCANCH [CALC. NO. OF BLOCKS ON CHAIN
88PB +BSTB+CHAPTER [OF TYPE 'CHAPTER'
8992 STO 6 RCH(3)
89NL LDX 0 FCCHAPMID
8=8= [CHAPTERS FREED 'IN-FLIGHT' BY GETCORE
8=MW STO 0 RFM(3)
8?7G #OPT IFS=0
8?M6 #SKI IFS
8#6Q #SKI
8#LB (
8*62 [USAGE BLOCKS ON FILE CHAIN
8*KL LDN 1 BFILE [BASE OF FILE CHAIN
8B5= CALL 2 ZDPSCANCH [CALC. NO. OF BLOCKS
8BJW +FILE+FURB
8C4G STO 6 RFC(3)
8CJ6 LDN 1 BFILE
8D3Q CALL 2 ZDPSCANCH
8DHB +FILE+FUWB
8F32 ADS 6 RFC(3)
8FGL )
8G2= #SKI IFS
8GFW (
8G^G BASEFCB OPEN,2 [ FIND 'BASE OF FCB CHAIN'
8HF6 LDN 6 0 [ INITIALISE COUNT
8HYQ NFCB NEXTFCB OPEN,2,NLEFT [ FIND NEXT FCB
8JDB NBLK LDX 2 FPTR(2) [ NEXT BLOCK ON RING
8JY2 LDX 0 ATYPE(2) [ GET TYPE
8KCL BXE 0 FILEPLUSFCB,NFCB [ END OF RING?
8KX= TXU 0 FFSFURB [ FURB?
8LBW BCC YBLK [ YES - BRANCH
8LWG TXU 0 FFSFUWB [ FUWB?
8MB6 BCS NBLK [ NO - RETURN FOR NEXT
8MTQ YBLK ADN 6 1 [ INCREMENT BLOCK COUNT
8N*B BRN NBLK [ AND RETURN FOR NEXT
8NT2 NLEFT STO 6 RFC(3) [ STORE FILE COUNT
8P#L )
8PS= LDX 6 HALFFCB [ COUNT OF HALF-OPEN FCB'S
8Q?W STO 6 RHO(3)
8Q#P ... IF ENV, MEEP
8Q*J ... THEN
8QBC ... LDX 0 3 [- COLLECT VME/B DATA
8QC= ... ADN 0 RID [- X3 -> DATA AREA
8QD5 ... ADX 0 GEODATUM [- & DATUMISE
8QDY ... LDX 2 K31+63 [- X2 -> CONSOLE T/W IN BDT
8QFR ... LDX 2 0(2) [- X2 -> CONSOLE T/W DEVICE LIST
8QGL ... LDX 1 FX1
8QHF ... ADN 1 XECMODE [- ADDRESS OF EXEC MODE ROUTINE
8QJ# ... ADX 1 GEODATUM [- ABSOLUTE
8QK7 ... STO 1 K55+2(2) [- STORE THIS ADDRESS IN DEVICE LIST
8QL2 ... ALLOT 0 2 [- OBEY ROUTINE IN EXEC MODE. ALLOT =
8QLT ... ELSE
8QMN ... LDN 0 EXECIDLE
8QNH ... LDN 1 RID(3) [- EXEC IDLE MILL
8QPB ... MOVE 0 2
8QQ9 ... FI
8QRG LDX 1 FX1
8R?6 LDX 2 FX2
8RQQ EXIT 7 0
8RS# ...[
8RTW ...[- ROUTINE TO ISSUE 170 X 600 IN EXEC MODE
8RXD ...[
8R^2 ...XECMODE
8S2J ... '170 0 600
8S46 ... MODE 0
8S5N ...#ORD
8S7= ... BRN #20
8S8S ...#EXT
8S=B [
8SQ2 #PAGE
8T9L [
8TBS ...#UNS ADPIPSET
8TJ2 ...(
8TP= ZDPIPSET
8W8W [
8WNG [ THIS SUBROUTINE CHANGES IP VALUES
8X86 [
8XMQ LDX 4 7
8Y7B SBX 4 FX1
8YM2 NEW1 CALL 7 ZDPSPARAM [ GET IP NAME
8^6L BRN ZEND1 [ ABSENT - EXIT OK
8^L= SETMODE 3,CLEAN
925W SETNCORE 10,2,FILE,FABSNB
92KG LDN 0 ZFABSNB(1)
9356 LDN 1 A1(2)
93JQ MOVE 0 10
944B OPEND ZEND4,3 [ OPEN PARAMINDEX
94J2 MFREE FILE,FABSNB
953L CALL 7 ZDPSPARAM [ GET NEW IP VALUE
95H= BRN ZEND2 [ ABSENT - EXIT 1
962W CALL 7 ZDPNUMCON [ CONVERT
96GG BRN ZEND2 [ ERROR - EXIT 1
9726 STEP
97FQ MHUNT 1,CPB,CUNI [ LOCATE IP NAME
97^B STO 6 ACOMMUNE1(2) [ PRESERVE IP VALUE
98F2 LDEX 6 FRH(3) [ RECORD HEADER
98YL LDN 5 0
99D= LDN 7 IPLINE
99XW DVR 5 7 [ LOOP COUNT IN X6
9=CG STO 6 ACOMMUNE2(2) [ PRESERVE
9=X6 LDX 6 ACES [ SPACE FILL X6
9?BQ LDX 7 ACES [ AND X7
9?WB LDX 2 ALOGLEN(1)
9#B2 SBN 2 APARA+4-JPARNUM [ X2 = NO. OF WORDS - 4
9#TL BPZ 2 ZEND2 [ BRANCH IF TOO MANY
9**= LDN 0 APARA(1) [ TAKE ADDRESS
9*SW LDN 1 5 [ PUT ADDRESS
9B#G MOVE 0 4(2) [ TRANSFER NAME
9BS6 SMO FX2
9C?Q LDX 2 ACOMMUNE2 [ RECOVER LOOP COUNT
9CRB NEXT1 TXU 5 IPNAME-A1(3) [ COMPARE WORD ONE
9D?2 TXU 6 IPNAME+1-A1(3) [ WORD TWO AND
9DQL TXU 7 IPNAME+2-A1(3) [ WORD THREE
9F== BCC MATCH [ BRANCH IF THEY MATCH
9FPW ADN 3 IPLINE [ INCREMENT ADDRESS
9G9G BCT 2 NEXT1 [ AND TRY AGAIN
9GP6 ZEND2 STOZ 5
9H8Q MATCH SMO FX2
9HNB LDX 3 ACOMMUNE1 [ RECOVER NEW IP VALUE
9J82 MFREE CPB,CUNI [ FREE CPB-CUNI
9JML CLOSETOP [ CLOSE PARAMINDEX
9K7= BPZ 5 ZEND3
9KLW LDN 1 5 [ POINTER TO NAME
9L6G INSTPARA ZEND4,1,3,ZEND3 [ CHANGE IP!
9LL6 BRN NEW1 [ AND RETURN FOR NEXT
9M5Q ZEND1 ADN 4 1 [ EXIT 2
9MKB ZEND3 ADN 4 1 [ VALUE OUT OF RANGE
9N52 ZEND4 ADX 4 FX1 [ BREAKIN EXIT
9NJL LDX 7 4
9P4= EXIT 7 0
9PHW [
9Q3G #PAGE
9Q3Y ...)
9Q4B ...[
9Q4S ... SEGENTRY ZDPLOGPD
9Q5= ...[
9Q5N ...[- EFFECTIVELY, THIS SUBROUTINE CALLS THE BMEEP PROCEDURE B3-PERFORMANCE
9Q66 ...[- BY ISSUING A '170 X 601 ORDER. THE BMEEP ROUTINE LOGS DATA ON TRANSFE
9Q6J ...[- THE JOURNAL AND CALLS THE VME/B PROCEDURE LOG-PERFORMANCE-DATA
9Q72 ...[- X7 USED AS LINK ACCUMULATOR
9Q7D ...[- ON EXIT X1 = FX1
9Q7W ...[- X2 = FX2
9Q8# ...[- OTHERS : UNCHANGED
9Q8Q ...[
9Q98 ... IF ENV,MEEP
9Q9L ... THEN
9Q=4 ... LDX 2 K31+63 [- CONSOLE T/W IN BDT
9Q=G ... LDX 2 0(2) [- X2 -> T/W DEVICE LIST
9Q=Y ... LDX 1 FX1
9Q?B ... ADN 1 XEC [- EXEC MODE ROUTINE
9Q?S ... ADX 1 GEODATUM [- ABSOLUTE ADDRESS
9Q#= ... STO 1 K55+2(2) [- STORE IN DEVICE LIST
9Q#N ... ALLOT 0 2 [- CALL ROUTINE IN EXEC MODE ('156)
9Q*6 ... FI
9Q*J ...[
9QB2 ... LDX 1 FX1
9QBD ... LDX 2 FX2
9QBW ... EXIT 7 0
9QC# ...[
9QCQ ...XEC '170 0 601
9QD8 ... MODE 0
9QDL ...#ORD
9QF4 ... BRN #20
9QFG ...#EXT
9QFY ...[
9QGB ...#PAGE
9QH6 [ ****************
9R2Q [ ERROR LABELS
9RGB [ AND
9S22 [ STANDARD EXITS
9SFL [ ****************
9S^= ZERRORY [COMPILE S/R
9TDW TIDYFILE
9TYG LDX 2 FX2
9WD6 LDX 0 AWORK1(2)
9WXQ BNZ 0 (5) [ NO FILE TO CLOSE - EXIT
9XCB SBX 5 FX1
9XX2 CLOSE
9YBL ADX 5 FX1
9YW= EXIT 5 0
9^*W ZDPJPARMIS
9^TG CALL 5 TIDYFILE
=2*6 ZERRORX JPARMIS [PARAMETER MISSING
=2SQ ZDPJOURA
=3#B CALL 5 TIDYFILE
=3S2 ZERRORX JOURA [PARAMETER OUT OF RANGE
=4?L ZDPAPFERR
=4R= CALL 5 TIDYFILE
=5=W ZERRORX APFERR [PARAMETER FORMAT ERROR
=5D4 ...ZDPENDCOM1
=5K= ... CALL 7 ZDPLOGPD
=5QG ZDPENDCOM
=6=6 CALL 5 TIDYFILE
=6PQ ENDCOM
=79B ZDPCOMBRKIN
=7P2 CALL 5 TIDYFILE
=88L COMBRKIN
=8N= [ ****************
=97W [
=9MG [ ENTRY POINT
==76 [
==LQ [ ****************
=?6B ZK1
=?L2 [ENTRY FROM ZP COMMAND. WE EXTRACT MODULE NUMBER AND LEAP
=#5L [INTO BRANCH TABLE
=#K= CALL 7 ZDPSPARAM [PICK UP PARAMETER
=*4W BRN ZDPJPARMIS [ERROR
=*JG CALL 7 ZDPNUMCON [CONVERT MODULE NUMBER
=B46 BRN ZDPAPFERR [ERROR
=BHQ ORS 1 ADPSUICIDE [ UNSET POSSIBLE CRASH CLOSE
=C3B NGS 1 AWORK1(2)
=CH2 SBN 6 2
=D2L BNZ 6 ZZ2
=DG= CALL 7 ZDPOPENFILE
=D^W BRN ZDPCOMBRKIN
=FFG BRN ZDPAPFERR
=F^6 CALL 7 ZDPFINTIME [ GET FINISH TIME
=GDQ BRN ZDPENDCOM
=GKY ...#UNS ADPIPSET
=GR6 ...(
=GYB CALL 7 ZDPIPSET [ CHANGE IP'S
=HD2 BRN ZDPCOMBRKIN
=HXL BRN ZDPJOURA
=J7D ...)
=JC= LDEX 0 ADPJOBCT [ GET NO. OF WAITING ZP 9'S
=JWW STO 0 AWORK4(2) [ AND STORE IN AWORK4
=KBG STO 0 ADPJOBCT [ UNSET POSSIBLE CRASH CLOSE
=KW6 ... BZE 0 SLOPA [ BRANCH IF NONE
=L*Q LDN 0 9
=LTB LONGON1 APERFSTYLE,0 [ WAKE UP 'ZP 9' JOBS
=M58 ...SLOPA CALL 7 ZDPLOGPD
=M*2 ...SLOOP LDN 4 RFRH [ RECORD LENGTH
=MSL CALL 7 ZDPSTEP [ SET UP BUFFER
=N#= BRN ZDPENDCOM [ ERROR
=NRW CALL 7 ZDPSNAPSHOT [ COLLECT SNAPSHOT DATA
=P?G CALL 7 ZDPCHECTIM [ TIME EXPIRED?
=PR6 ... BRN ZDPENDCOM1 [ YES - ENDCOM
=Q=Q LDX 0 ADPJOBCT [ GET NO. OF JOBS WAITING
=QQB BZE 0 NOJBS [ ZERO - IGNORE
=R=2 TXL 0 AWORK4(2) [ CRASH CLOSE OR JOBS FINISHED?
=RPL BCC ZDPENDCOM [ YES - ENDCOM
=S9= NOJBS COOR4 ADPSTYLE [ WAIT 4 SECS.
=SNW BRN SLOOP [ AND RETURN TO LOOP
=T8G ...ZZ2 SBN 6 6
=TN6 BNZ 6 ZZ8
=W7Q CALL 7 ZDPSPARAM
=WMB BRN ZDPJPARMIS
=X72 CALL 7 ZDPNUMCON
=XLL BRN ZDPENDCOM
=Y6= SBN 6 2
=YKW BNZ 6 ZDPJOURA
=^5G LDCT 0 #400
=^K6 ORS 0 ADPJOBCT
?24Q BRN ZDPENDCOM
?2JB ZZ8 SBN 6 1
?342 BNZ 6 ZZ9
?3HL LDN 5 1 [ SET X5 = 1 AND
?43= ADS 5 ADPJOBCT [ INCREMENT JOB COUNT
?4GW LDX 0 BITS22LS
?52G ANDS 0 ADPSUICIDE [ UNSET POSSIBLE SUICIDE
?5=# ... LDN 7 9
?5G6 ... LONGOFF
?5PY ... LONGSET APERFSTYLE,ZWT,7
?5^Q ... LONGSTOP ZWT,,AWAIT,ZWT1
?69J ...ZWT SBS 5 ADPJOBCT [ DECREMENT JOB WAIT COUNT
?6FB ... LDXC 0 ADPSUICIDE [ SUICIDE?
?6^2 ... BCC ZDPENDCOM [ NO - ENDCOM
?7DL SETNCORE 10,3,ADATA,CREADL [ YES - EJ
?7Y= LDN 0 #4
?8CW STO 0 A1(3)
?8XG LDX 0 WEND(1)
?9C6 STO 0 A1+2(3)
?9WQ ISSUCOMB ZEND,ZEND
?=BB ZEND BRN ZDPENDCOM
?=W2 WEND #45522020
??*L ZZ9 SBN 6 15
??T= BNZ 6 ZZ24
?##W LDCT 0 #400
?#SG ANDS 0 ADPSUICIDE
?*#6 BRN ZDPENDCOM
?*RQ ZZ24 SBN 6 1
?B?B ... BNZ 6 ZZ31
?BR2 LDCT 0 #400
?C=L ORS 0 ADPSUICIDE
?CCS ... LDN 0 9
?CK2 ... LONGON1 APERFSTYLE,0
?CQ= BRN ZDPENDCOM
?CST ...ZZ31 SBN 6 6
?CXD ... BNZ 6 ZDPJOURA
?D23 ... OUTNUM AFREE,7 [- O/P'S AFREE AS A 7 DIGIT
?D4L ... MONOUT ADPCOMMENT [- NO. IN COMMENT CATEGORY
?D79 ... BRN ZDPENDCOM
?D9W ...#END
^^^^ ...507014220002