VIPBPERI864

(George Source)

Macros used: ACROSS, BXE, BXGE, BXL, BXU, CCBB, CHECKB, CHECKEXT, COOR1, DERINGD, FINMOVE, FOUTMOVE, FPUT, HUNTMISB, ILLEGALX, JALLOC, JCBB, JDISENG, JENG, LAMOP, LOCKCA, MHUNTW, MURDER, OLPFIN, PAIR, RELOFP, SCBB, SEG, SEGENTRY, TICKLE, TOPCA, TRACE, UNPLUG, UP, UPPLUS

VIPBPERI864.txt
22FL          SEG      VIPBPERI,,R.WEYAND COMM  
22^=    # THIS G3 ONLY SEGMENT CONTAINS THE VIRTUAL 7900 CODE WHICH INTERFACES  
23DW    # COMMUNICATIONS MANAGER COMMS (WMC TYPE) CHANNELS WITH THE MESSAGE 
23YG    # BUFFERING COMMUNICATIONS SUBSYSTEM (MBS)  
24D6    #   
24XQ    #     ENTRY POINTS :
25CB          SEGENTRY K1VIPBPERI,Z1VIPBPERI
25X2    # K1VIPBPERI VALIDATES ALL VIRTUAL 7900 WMC ORDERS AND STORES TRANSFER  
26BL    # ORDERS AND PROCESSES OPEN,CANCEL,CLOSE MODES ON A VIRTUAL 7900 CHANNEL
26W=    # IT RUNS IN A VIRTUAL 7900 COMMS CHANNEL AOLPT ACTIVITY .  
27*W    #   
27TG          SEGENTRY K2VIPBPERI,Z2VIPBPERI
28*6    # K2VIPBPERI IS ENTERED BY A DOWN FROM RELPER TO RELEASE A VIRTUAL 7900 
28SQ    # COMMS CHANNEL .   
29#B    #   
29S2          SEGENTRY K3VIPBPERI,Z3VIPBPERI
2=?L    # K3VIPBPERI IS ENTERED BY K1VIPBPERI TO REPORT ILLEGAL VIRTUAL 7900
2=R=    # WMC ORDERS .  
2?=W    # IT RUNS IN THE PROCESS CONTROL ACTIVITY (APET) .  
2?QG    #   
2#=6          SEGENTRY K4VIPBPERI,Z4VIPBPERI
2#PQ    # K4VIPBPERI IS ENTERED BY AN ACROSS FROM CHARGESC EVERY
2*9B    # FONINT (4) SECONDS TO TIME OUT VIRTUAL 7900 WMC   
2*P2    # TRANSFER ORDERS WHICH HAVE BEEN STORED FOR 3 FONINTP (12) SECONDS .   
2B8L    # IT RUNS IN THE BLANKET ACTIVITY . 
2BN=    #   
2C7W          SEGENTRY K5VIPBPERI,Z5VIPBPERI
2CMG    # K5VIPBPERI IMPLEMENTS VIRTUAL 7900 WMC TRANSFER ORDERS .  
2D76    # IT RUNS IN 7900 INPUT AND OUTPUT ACTIVITIES (AMOP/IPBIN & AMOP/IPBOUT)
2DLQ    #   
2F6B    #     CODING CONVENTIONS USED : 
2FL2    #     PRESET LABELS ARE PREFIXED WITH 'P'   
2G5L    #     EXCEPT THAT ENTRY POINTS ARE PREFIXED WITH 'Z'
2GK=    #     NOTE MONITORING FILE MESSAGE IDENTIFIER PRESETS FOR ILLEGAL WMC   
2H4W    #     PERI'S ARE HELD IN THE EXCEPTION PATHS AREA   
2HJG    #     SUBROUTINES LABELS ARE PREFIXED WITH 'S'  
2J46    #     PROGRAM LABELS ARE PREFIXED WITH 'V'(FOR VIRTUAL 7900)
2JHQ    #     ERROR LABELS ARE PREFIXED WITH 'X'
2K3B    #   
2KH2    [   
2L2L    [     PRESET DATA   
2LG=    [   
2L^W    #     LIST OF REPLIES SET BY THE VIRTUAL 7900 TO WMC ORDERS 
2MFG    #     EACH ENTRY (#XXX) CORRESPONDS TO B0 TO B8 OF THE REPLY WORD   
2M^6    #DEF  PTRANSFEROK = #000           [NORMAL TRANSFER 
2NDQ    #DEF  PNI         = #020           [NOT IMPLEMENTED 
2NYB    #DEF  PNIXNE      = #024           [NOT IMPLEMENTED,NOT ESTABLISHED 
2PD2    #DEF  PTOXNI      = #220           [TIME OUT,NOT IMPLEMENTED
2PXL    #DEF  PTOXNIXNE   = #224           [TIME OUT,NOT IMPLEMENTED,NOT ESTAB. 
2QC=    #     LIST OF WMC MODES ACCEPTED BY THE VIRTUAL 7900
2QWW    #     IN ORDER OF DECREASING FREQUENCY OF USE   
2RBG    PMODESLIST  
2RW6                   0                   [READ
2S*Q                   #21                 [DOUBLE-LENGTH WRITE 
2STB                   1                   [WRITE   
2T*2                   #2000               [CONDITIONAL READ
2TSL                   #2021               [CONDITIONAL DOUBLE-LENGTH WRITE 
2W#=                   #2001               [CONDITIONAL WRITE   
2WRW                   4                   [CANCEL  
2X?G                   #1000               [CLOSE   
2XR6                   #200                [OPEN LINK FOR READING   
2Y=Q                   #400                [OPEN LINK FOR WRITING   
2YQB                   -1                  [-1 INDICATES THE END OF THE LIST
2^=2    PLINKSTATE     #00600000           [B6=1 LINK OPEN FOR WRITING  
2^PL                                       [B7=1 LINK OPEN FOR READING  
329=    PMINLENGTH     3
32NW    PMINLENGTHS    1                   [MINIMUM OF EITHER DOUBLE-LENGTH 
338G                                       [WRITE LENGTHS   
33N6    PMAXLENGTH     +AVBUFFSIZE+1       [MAX+1   
347Q    PMBSBUFFSIZ    +AVBUFFSIZE  
34MB    PV7900TIMEO    3*FONINTP*1000/K9   [TIME OUT PERIOD FOR VIRTUAL 7900 WMC
3572                                       [TRANSFERS   
35LL                                       [IE 3 FONINTP INTERVALS (12 SECS) IN 
366=                                       [CLEANCT TIME FORM   
36KW    PK3VIPBPERI 
375G          PAIR     VIPBPERI,3   
37K6    [   
384Q    [     SUBROUTINES   
38JB    [   
3942    #     COMMUNAL SUBROUTINES :
39HL    #     IE SUBROUTINES USED BY MORE THAN ONE ENTRY POINT  
3=3=    #   
3=GW    #     SUBROUTINE TO DECREMENT THE VIRTUAL 7900 DEVICE LIST'S COUNT OF   
3?2G    #     STORED READ OR WRITE TRANSFERS AS APPROPRIATE 
3?G6    #     NOTE THESE COUNTS ARE USED BY MBS'S INPUT AND OUTPUT ACTIVITIES   
3?^Q    #     TO QUICKLY DETERMINE WHETHER A SUITABLE TRANSFER IS STORED
3#FB    #     ON ENTRY X3 -> OLPA WHOSE STORED TRANSFER IS BEING CANCELLED  
3#^2    #     LINK IN X7
3*DL    STRANCTDOWN 
3*Y=          LDX   0  BFSTATE(3)          [LINK DIRECTION,B6 = 1 FOR WRITE LINK
3BCW          SLC   0  6
3BXG          BNG   0  SWRITCTDOWN         [WRITE LINK  
3CC6    #              READ LINK
3CWQ    SREADCTDOWN 
3DBB          LDN   0  1
3DW2          SMO      CPPTR(3) 
3F*L          SBS   0  AVCREADS 
3FT=          EXIT  7  0
3G#W    SWRITCTDOWN 
3GSG          LDN   0  1
3H#6          SMO      CPPTR(3) 
3HRQ          SBS   0  AVCWRITES
3J?B          EXIT  7  0
3JR2    #   
3K=L    #     SUBROUTINE TO MOVE WORDS OUT OF THE PROGRAM   
3KQ=    #     ON ENTRY  
3L9W    #     X0 = NUMBER OF WORDS TO BE MOVED  
3LPG    #     X3 -> OLPA ASSOCIATED WITH THE MOVE   
3M96    #     X4 -> PROGRAM AREA (RELATIVE TO PROGRAM'S DATUM)  
3MNQ    #     X5 -> GEORGE AREA TO WHICH THE MOVE IS TO TAKE PLACE  
3N8B    #     ON EXIT X4 = GEORGE ADDRESS OF PROGRAM AREA ; OTHER ACCS UNCHANGED
3NN2    #     LINK IN X7
3P7L    SFOUTMOVE   
3PM=          FOUTMOVE APETADDR(3),4,5,0
3Q6W          EXIT  7  0
3QLG    #   
3R66    #     SUBROUTINE TO MOVE WORDS INTO THE PROGRAM 
3RKQ    #     ON ENTRY  
3S5B    #     X0 = NUMBER OF WORDS TO BE MOVED  
3SK2    #     X3 -> OLPA ASSOCIATED WITH THE MOVE   
3T4L    #     X4 -> GEORGE AREA FROM WHICH THE MOVE IS TO TAKE PLACE
3TJ=    #     X5 -> PROGRAM AREA (RELATIVE TO PROGRAM'S DATUM)  
3W3W    #     ON EXIT X5 = GEORGE ADDRESS OF PROGRAM AREA ; OTHER ACCS UNCHANGED
3WHG    #     LINK IN X7
3X36    SFINMOVE
3XGQ          FINMOVE  APETADDR(3),5,4,0
3Y2B          EXIT  7 0 
3YG2    #   
3Y^L    #     SUBROUTINE TO SET THE REPLY/RESPONSE WORD OF A PROGRAM'S WMC ORDER
3^F=    #     ON ENTRY  
3^YW    #     X3 -> OLPA ASSOCIATED WITH THE WMC ORDER  
42DG    #     X6 = REPLY/RESPONSE TO BE SET 
42Y6    #     ON EXIT X0,X4,X5 ARE UNDEFINED
43CQ    #     LINK IN X7
43XB    SETREPLYWD  
44C2          LDX   5  ACOMMUNE2(3)        [RELATIVE ADDR OF PROG'S REPLY WORD  
44WL    SETREPLYWD1    [ENTRY FOR S/RS SETACCEPTED & SETREJECTED
45B=          LDN   4  6                   [ADDR OF REPLY/RESPONSE TO BE SET
45TW          LDN   0  1                   [1 WORD MOVE 
46*G          STO   7  GEN0 
46T6          CALL  7  SFINMOVE 
47#Q          TRACE    6,V79REPWD          [REPLY/RESPONSE TO WMC ORDER 
47SB          LDX   7  GEN0 
48#2          EXIT  7  0
48RL    #   
49?=    #     SUBROUTINE SETACCEPTED GIVES AN ACCEPTED DIRECT RESPONSE TO A 
49QW    #     PROGRAM'S WMC ORDER   
4==G    #     SUBROUTINE SETREJECTED GIVES A  REJECTED DIRECT RESPONSE TO A 
4=Q6    #     PROGRAM'S WMC ORDER   
4?9Q    #     ON ENTRY X3 -> OLPA ASSOCIATED WITH THE WMC ORDER 
4?PB    #     ON EXIT X0,X4,X5 ARE UNDEFINED
4#92    #     LINK IN X7
4#NL    SETACCEPTED 
4*8=          LDCT  6  #400 
4*MW          BRN      SETRESPONSE  
4B7G    SETREJECTED 
4BM6          LDCT  6  #420 
4C6Q    SETRESPONSE 
4CLB          LDX   5  EVENT2(3)
4D62          ADN   5  1                   [RELATIVE ADDR OF PROG'S REPLY WORD  
4DKL          BRN      SETREPLYWD1  
4F5=    #   
4FJW    #     SUBROUTINE TO GIVE A POINTER TO THE NEXT OLPA ON THE AVOLPARING   
4G4G    #     ON ENTRY X3 -> BLOCK ON AVOLPARING FROM WHICH TO START
4GJ6    #     EXITS +0 WITH X3 -> V7900 DEV LIST IF END OF AVOLPARING REACHED   
4H3Q    #     EXITS +1 WITH X3 -> NEXT OLPA IF NOT END OF THE AVOLPARING
4HHB    #     LINK IN X7
4J32    SNEXTOLPA   
4JGL    #              TEST START BLOCK TYPE TO DETERMINE ROUTE TO NEXT BLOCK   
4K2=          LDX   0  ATYPE(3) 
4KFW          SRL   0  12   
4K^G          SBN   0  APERI+AV7900 
4LF6          BZE   0  SNEXTOLPADL         [START BLOCK = V7900 DEVICE LIST BLK 
4LYQ    #              START BLOCK = AN OLPA
4MDB          LDX   0  CPPTR(3)            [-> OLPA'S V7900 DEVICE LIST 
4MY2          LDX   3  BWORKRING(3) 
4NCL          BRN      SNEXTOLPAOK  
4NX=    SNEXTOLPADL 
4PBW    #              START BLOCK = V7900 DEVICE LIST BLK  
4PWG          LDX   0  3                   [-> V7900 DEVICE LIST
4QB6          LDX   3  AVOLPARING(3)
4QTQ    SNEXTOLPAOK 
4R*B          SBN   3  AVOLPARING          [POSSIBLY -> V7900 DEVICE LIST   
4RT2          BXE   0  3,(7)               [END OF AVOLPARING OR IT IS EMPTY
4S#L                                       [X3 -> V7900 DEVICE LIST 
4SS=          SBN   3  BWORKRING-AVOLPARING 
4T?W          EXIT  7  1                   [NOT END OF AVOLPARING   
4TRG                                       [X3 -> NEXT OLPA 
4W?6    #   
4WQQ    #     SUBROUTINE TO REACTIVATE THE PROGRAM MEMBER OWNING THE WMC ORDER  
4X=B    #     ON ENTRY X3 -> OLPA ASSOCIATED WITH THE WMC ORDER 
4XQ2    #     ON EXIT X0 IS UNDEFINED ; X1=FX1 ; X2=FX2 
4Y9L    #     LINK IN  X7   
4YP=    STICKLE 
4^8W          LDX   1  EVENT1(3)           [MEL ADDRESS 
4^NG          LDX   1  ARM1-AFW1(1) 
5286          SRL   1  18   
52MQ          STO   1  GEN1                [MEMBER NUMBER OWNING THE WMC ORDER  
537B          TICKLE   JOBNO(3),GEN1
53M2          EXIT  7  0
546L    #   
54L=    #     K1VIPBPERI ONLY SUBROUTINES : 
555W    #   
55KG    #     SUBROUTINE TO REACTIVATE THE PROGRAM AND WAIT FOR THE NEXT WMC
5656    #     ORDER BEFORE RE-ENTERING Z1VIPBPERI   
56JQ    #     ON ENTRY X2 -> OLPA CALLING THIS SUBROUTINE   
574B    #     ON EXIT X0 IS UNDEFINED ; X1=FX1 ; X2=FX2 
57J2    #     LINK IN X7
583L    SKICKNWAIT  
58H=          SBX   7  FX1                 [RELATIVISE LINK : DIAGNOSTIC AID
592W          OLPFIN   APETADDR(2)  
59GG          BRN      Z1VIPBPERI   
5=26    #   
5=FQ    #     SUBROUTINE TO DETERMINE THE MODE OF THE CURRENT WMC ORDER AND TO  
5=^B    #     EXIT ACCORDINGLY  
5?F2    #     ON ENTRY X2 -> OLPA CALLING THIS SUBROUTINE   
5?YL    #     ON EXIT X6 = THE MODE OF THE WMC ORDER ;  
5#D=    #     THE EXIT POINT CORRESPONDS TO THE ORDER OF THE LIST OF MODES  
5#XW    #     (PMODESLIST), NUMBERING FROM 1
5*CG    #     EXITS +0 IF THE MODE IS UNKNOWN   
5*X6    #     X4 IS OVERWRITTEN 
5BBQ    #     LINK IN X7
5BWB    SWHATMODE   
5CB2          LDN   4  1
5CTL          LDX   6  EVENT4(2)           [EXTRACT MODE OF WMC ORDER   
5D*=          ANDX  6  BSP16
5DSW    SMODETEST   
5F#G          SMO      4
5FS6          LDX   0  PMODESLIST-1(1)  
5G?Q          BXE   0  6,SWHATMODEX        [MODE MATCH  
5GRB          BNG   0  (7)                 [END OF THE LIST OF MODES : EXIT +0  
5H?2          BUX   4  SMODETEST           [TEST AGAINST NEXT MODES LIST ENTRY  
5HQL    SWHATMODEX  
5J==          SMO      4
5JPW          EXIT  7  0
5K9G    #   
5KP6    #     SUBROUTINE TO CHECK THAT THE PROGRAM'S EXTENDED CONTROL   
5L8Q    #     AREA LIES WITHIN THE PROGRAM'S RESERVATIONS   
5LNB    #     ON ENTRY  
5M82    #     X2 -> OLPA CALLING THIS SUBROUTINE
5MML    #     X5 = NUMBER OF WORDS TO BE CHECKED
5N7=    #     ON EXIT X0 IS UNDEFINED ; OTHER ACCS UNCHANGED
5NLW    #     LINK IN X7
5P6G    SCHECKCA
5PL6 ...      CHECKEXT EVENT2(2),5,XILLADDR,APETADDR(2),,(GEOERR),HLOCK1
5Q5Q          EXIT  7  0
5QKB    #   
5R52    #     SUBROUTINE TO CHECK THAT A PROGRAM AREA LIES WITHIN THE PROGRAM'S 
5RJL    #     RESERVATIONS  
5S4=    #     ON ENTRY  
5SHW    #     X2 -> OLPA CALLING THIS SUBROUTINE
5T3G    #     X4 -> PROGRAM AREA TO BE CHECKED (RELATIVE TO PROGRAM'S DATUM)
5TH6    #     X5 = NUMBER OF WORDS TO BE CHECKED
5W2Q    #     ON EXIT X0 IS UNDEFINED ; OTHER ACCS UNCHANGED
5WGB    #     LINK IN X7
5X22    SCHECKDA
5XFL          CHECKB   4,5,XILLBLKADD,APETADDR(2),,(GEOERR) 
5X^=          EXIT  7  0
5YDW    #PAGE   
5YYG    [   
5^D6    [     MAIN PATHS
5^XQ    [   
62CB    #   
62X2    # K1VIPBPERI VALIDATES ALL VIRTUAL 7900 WMC ORDERS AND STORES TRANSFER  
63BL    # ORDERS AND PROCESSES OPEN,CANCEL,CLOSE MODES ON A VIRTUAL 7900 CHANNEL
63W=    # IT RUNS IN A VIRTUAL 7900 COMMS CHANNEL AOLPT ACTIVITY .  
64*W    #   
64TG    Z1VIPBPERI  
65*6          TRACE    2,V79OLORD          [ADDRESS OF OLPA HANDLING THIS ORDER 
65SQ          TRACE    EVENT4(2),TYPEMODE  [TYPE/MODE WORD OF THIS WMC ORDER
66#B          LDX   3  2                   [SET X3 -> THIS OLPA 
66S2                                       [FOR COMMUNAL SUBROUTINES
67?L    #   
67R=          LOCKCA   APETADDR(2),EVENT2(2) [ISSUED AS A MATTER OF CONVENTION  
68=W                                       [EXEC HAS CHECKED THE 1ST 4 CA WORDS 
68QG    #     SET X6 = THE MODE OF THE PERI AND SELECT THE APPROPRIATE ROUTINE  
69=6    #     NOTE ENQUIRY MODES ARE NOT SUPPORTED  
69PQ          CALL  7  SWHATMODE
6=9B          BRN      XILLMODE            [UNKNOWN MODE
6=P2          BRN      VMODE0   
6?8L          BRN      VMODEO21 
6?N=          BRN      VMODE1   
6#7W          BRN      VMODEO2000   
6#MG          BRN      VMODEO2021   
6*76          BRN      VMODEO2001   
6*LQ          BRN      VMODE4   
6B6B          BRN      VMODEO1000   
6BL2          BRN      VMODEO200
6C5L          BRN      VMODEO400
6CK=    #   
6D4W    VMODEO200                          [OPEN WMC LINK FOR READING   
6DJG    VMODEO400                          [OPEN WMC LINK FOR WRITING   
6F46    #     MARK LINK OPEN FOR WRITING OR READING, IF NOT ALREADY OPENED  
6FHQ          LDX   0  PLINKSTATE(1)
6G3B          ANDX  0  BFSTATE(2)   
6GH2          BNZ   0  XILLMODE            [LINK ALREADY OPENED 
6H2L          SLL   6  9                   [ALIGN BITS SET IN THE MODE WORD 
6HG=                                       [(B15&16) WITH THE OPEN FLAGS (B6&7) 
6H^W          ORS   6  BFSTATE(2)          [SET OPEN FOR WRITING/READING
6JFG                                       [FLAG (B6/B7)
6J^6    #     CHECK THE 5 WORD CONTROL AREA LIES WITHIN RESERVATIONS
6KDQ          LDN   5  5                   [COUNT OF CA WORDS TO BE CHECKED 
6KYB          CALL  7  SCHECKCA 
6LD2    #     MOVE THE LINK NAME FIELD TO ACOMMUNE7-9 IN THE OLPA   
6LXL    #     FOR DIAGNOSTIC PURPOSES   
6MC=    #     DON'T BOTHER VALIDATING THE LINK NAME FOR FILE NAME FORMAT AS IT  
6MWW    #     IS NOT UTILISED - AND DON'T CHECK REQUESTED PROPERTIES AS COMMS   
6NBG    #     CHANNELS ARE WMC TYPE LINKS   
6NW6          LDN   0  3                   [COUNT OF WORDS TO BE MOVED  
6P*Q          LDX   4  EVENT2(2)
6PTB          ADN   4  2                   [-> LINK NAME FIELD  
6Q*2          LDN   5  ACOMMUNE7(2)        [-> OLPA'S ACOMMUNE7 
6QSL          CALL  7  SFOUTMOVE
6R#=    #     GIVE PROGRAM AN ACCEPTED RESPONSE AND RESTART IT  
6RRW    #     OPEN MODES ARE NEVER GIVEN A REJECTED RESPONSE
6S?G          CALL  7  SETACCEPTED  
6SR6          CALL  7  SKICKNWAIT          [****
6T=Q    #   
6TQB    VMODE4                             [CANCEL WMC TRANSFER 
6W=2    VMODEO1000                         [CLOSE DOWN WMC LINK 
6WPL    #     CANCEL ANY STORED TRANSFER AND THEN GIVE THE ORDER AN ACCEPTED
6X9=    #     RESPONSE  
6XNW    #     (CANCEL AND CLOSE ORDERS ARE ALWAYS ACCEPTED AS VIRTUAL 7900 WMC  
6Y8G    #     TRANSFERS ARE NEVER MARKED ACTIVE (IN TRANSMISSION))  
6YN6    #     ROUTINE SHOULD NOT COORDINATE BEFORE END  
6^7Q          JCBB     ,VCANCELTRAN        [TRANSFER STORED : CANCEL IT 
6^MB          BRN      VCLORCCREP          [NO TRANSFER STORED  
7272    VCANCELTRAN 
72LL          CALL  7  STRANCTDOWN         [DECREMENT COUNT OF STORED TRANSFERS 
736=          CCBB     2                   [UNSET TRANSFER STORED FLAG  
73KW          LDCT  6  PNI                 [SET REPLY NOT IMPLEMENTED   
745G          JALLOC   ,VZ1REPLYNI         [V7900 IS MOPPED ON: LINK ESTABLISHED
74K6          LDCT  6  PNIXNE              [SET REPLY NOT IMPLEMENTED,NOT ESTAB 
754Q    VZ1REPLYNI  
75JB          CALL  7  SETREPLYWD   
7642    VCLORCCREP  
76HL          CALL  7  SETACCEPTED  
773=    #     RELEASE COMMS CHANNEL (WMC LINK) IF CLOSE MODE
77GW    #     RESTART PROGRAM IF CANCEL MODE
782G          SBN   6  #1000               [MODE VALUE IS STILL IN X6   
78G6          BZE   6  VRELEASCHAN         [CLOSE MODE  
78^Q          CALL  7  SKICKNWAIT          [****
79FB    VRELEASCHAN 
79^2          RELOFP   HLSPTYPE(2)         [****
7=DL    #   
7=Y=    #     WMC TRANSFER MODES
7?CW    VMODEO21                           [DOUBLE-LENGTH WRITE 
7?XG    VMODEO2021                         [CONDITIONAL DOUBLE-LENGTH WRITE 
7#C6    #     CHECK THE 6 WORD CONTROL AREA LIES WITHIN RESERVATIONS
7#WQ          LDN   5  6                   [COUNT OF CA WORDS TO BE CHECKED 
7*BB          CALL  7  SCHECKCA 
7*W2    VMODE0                             [READ
7B*L    VMODE1                             [WRITE   
7BT=    VMODEO2000                         [CONDITIONAL READ
7C#W    VMODEO2001                         [CONDITIONAL WRITE   
7CSG    #     CHECK A TRANSFER IS NOT ALREADY STORED
7D#6          JCBB     ,VZ1STORED          [TRANSFER STORED 
7DRQ    #     CHECK THE LINK IS OPENED AND THE DIRECTION OF TRANSFER IS VALID   
7F?B    #     MODE VALUE IS IN X6 WITH B23 = 1 FOR WRITE & 0 FOR READ TRANSFER  
7FR2          LDX   0  BFSTATE(2)          [LINK DIRECTION,B6 = 1 FOR WRITE LINK
7G=L          SLC   0  7                   [B6 -> B23   
7GQ=          ERX   0  6                   [MATCH WITH TRANSFER DIRECTION   
7H9W          ANDN  0  1                   [ONLY INTERESTED IN B23  
7HPG          BNZ   0  XILLMODE            [LINK AND TRANSFER DIRECTION DISAGREE
7J96    #     COPY THE TRANSFER MODE TO AWORK2  
7JNQ    #     SET X6 -VE IF THE TRANSFER IS A DOUBLE-LENGTH WRITE   
7K8B          STO   6  AWORK2(2)
7KN2          SRC   6  5                   [MODE.B19 -> B0  
7L7L    #     MOVE THE CONTROL AREA TO ACOMMUNE1-6 IN THE OLPA  
7LM=    #     FOR K5VIPBPERI TO IMPLEMENT THE TRANSFER .
7M6W    #     THE TYPE/MODE AND REPLY WORDS ARE INCLUDED AS A DIAGNOSTIC AID
7MLG    #     (EVENT4 (TYPE/MODE) IS OVERWRITTEN IF AN ORDER IS ATTEMPTED   
7N66    #     WHILE A TRANSFER IS STORED ) .
7NKQ          STOZ     ACOMMUNE5(2)        [INITIALISE SIZE OF SECOND DATA AREA 
7P5B          STOZ     ACOMMUNE6(2)        [INITIALISE ADDR OF SECOND DATA AREA 
7PK2          LDN   0  4                   [COUNT OF WORDS TO BE MOVED  
7Q4L          BPZ   6  VSTORECA            [NOT A DOUBLE-LENGTH WRITE (#21) 
7QJ=          ADN   0  2                   [DOUBLE-LENGTH WRITE = 6 WORD CA 
7R3W    VSTORECA
7RHG          LDX   4  EVENT2(2)           [-> CONTROL AREA 
7S36          LDN   5  ACOMMUNE1(2)        [-> OLPA'S ACOMMUNE1 
7SGQ          CALL  7  SFOUTMOVE
7T2B    #     STORE THE ADDRESS OF THE REPLY WORD IN ACOMMUNE2 INSTEAD OF THE   
7TG2    #     REPLY WORD . THE ADDRESS IS RELATIVE TO PROGRAM'S DATUM   
7T^L    #     K5VIPBPERI WILL RECORD ITS REPLY IN ACOMMUNE2 (REPLY WORD COPY)   
7WF=          LDX   0  EVENT2(2)
7WYW          ADN   0  1                   [-> REPLY/RESPONSE WORD  
7XDG          STO   0  ACOMMUNE2(2) 
7XY6    #     CHECK THAT THE LENGTH OF THE TRANSFER IS IN THE PERMITTED RANGE   
7YCQ    #     IE WMC READ LENGTH = BUFFER SIZE ; WMC WRITE LENGTH = 3 TO BUFFER 
7YXB    #     SIZE (FOR DOUBLE-LENGTH WRITES THE MINIMUM VALUE OF EITHER
7^C2    #     LENGTH IS 1 AND FOR BOTH IS 3)
7^WL          LDX   0  ACOMMUNE3(2)        [LENGTH OF TRANSFER  
82B=          LDN   5  1
82TW          ANDX  5  AWORK2(2)           [MODE
83*G          BNZ   5  VCHKWRITSIZ         [WRITE TYPE TRANSFER (MODE.B23 = 1)  
83*^ ...      SMO      CPPTR(2) 
83BD ...      LDX   4  JK52H
83BX ...      BNZ   4  VCHREADEQ           [J IF READ INITIALISE ALREADY
83CB ...      SBN   0  4
83CT ...      BNG   0  XILLCOUNT           [J IF TOO SMALL FOR INITIALISE   
83D# ...      LDX   3  CPPTR(3) 
83DR ...STOPWRITES  
83F= ...
83FP ...[ NOW GET RID OF ANY WRITES, AS THEY MUST HAVE BEEN ISSUED BEFORE   
83G8 ...[ THE PROG REALISED WE WERE MOPPED OFF  
83GM ...[   
83H6 ...      CALL  7  SNEXTOLPA
83HK ...      BRN      NOWRITES 
83J4 ...      JCBB     3,YSTORED
83JH ...      BRN      STOPWRITES           [J IF NO TRANSFER   
83K2 ...YSTORED 
83KF ...      LDX   0  BFSTATE(3)   
83KY ...      SLC   0  6
83LC ...      BPZ   0  STOPWRITES           [J IF NOT WRITE 
83LW ...      LDCT  6  PTOXNIXNE
83M* ...      CALL  7  SETREPLYWD           [POINT OUT WE HAVE MOPPED BY... 
83MS ...[                                    SENDING NOT ESTAB. REPLY   
83N? ...      CALL  7  STRANCTDOWN  
83NQ ...      CCBB     3
83P9 ...      CALL  7  STICKLE              [AND WAKE PROGRAM MEMBER
83PN ...      BRN      STOPWRITES           [SEE IF ANY MORE WRITES 
83Q7 ...NOWRITES
83QL ...      LDX   3  2                    [RESET ACCS 
83R5 ...      LDX   6  AWORK2(2)
83RJ ...      SRC   6  5
83S3 ...      BRN      VCHKTRANDA   
83SG ...VCHREADEQ   
83T6          BXU   0  PMBSBUFFSIZ(1),XILLCOUNT [LENGTH OF READ TRANSFER NOT
84#Q                                            [EQUAL TO BUFFER SIZE   
84SB          BRN      VCHKTRANDA   
85#2    VCHKWRITSIZ 
85RL          BNG   6  V1STLENGTH          [DOUBLE-LENGTH WRITE 
86?=          BXL   0  PMINLENGTH(1),XILLCOUNT [LESS THAN MINIMUM   
86QW          BRN      VMAXLENGTH   
87=G    V1STLENGTH  
87Q6          BXL   0  PMINLENGTHS(1),XILLCOUNT [LESS THAN MINIMUM  
889Q          LDX   5  ACOMMUNE5(2)            [SECOND LENGTH   
88PB          BXL   5  PMINLENGTHS(1),XILLCOUNT [LESS THAN MINIMUM  
8992          ADX   0  5                       [COMBINE FIRST AND SECOND LENGTHS
89NL          BXL   0  PMINLENGTH(1),XILLCOUNT [LESS THAN TOTAL MINIMUM 
8=8=    VMAXLENGTH  
8=MW          BXGE  0  PMAXLENGTH(1),XILLCOUNT [GREATER THAN MAXIMUM LENGTH 
8?7G    VCHKTRANDA  
8?M6    #     CHECK THE DATA AREA(S) LIES WITHIN RESERVATIONS   
8#6Q          LDX   4  ACOMMUNE4(2)        [-> DATA AREA
8#LB          LDX   5  ACOMMUNE3(2)        [TRANSFER LENGTH 
8*62          CALL  7  SCHECKDA 
8*KL          BPZ   6  VENDOFDACHK         [NOT A DOUBLE-LENGTH WRITE (#21) 
8B5=          LDX   4  ACOMMUNE6(2)        [-> SECOND DATA AREA 
8BJW          LDX   5  ACOMMUNE5(2)        [TRANSFER LENGTH 
8C4G          CALL  7  SCHECKDA 
8CJ6    VENDOFDACHK 
8D3Q    #     IF TRANSFER IS CONDITIONAL AND THE LINK IS NOT ESTABLISHED(IE THE 
8DHB    #     VIRTUAL 7900 IS NOT MOPPED ON), SET PROGRAM'S REPLY WORD TO   
8F32    #     TIME OUT,NOT IMPLEMENTED,NOT ESTABLISHED  
8FGL    #     OTHERWISE EVENTUALLY GIVE THE PROGRAM AN ACCEPTED RESPONSE
8G2=    #     (A REJECTED RESPONSE TO A CONDITIONAL TRANSFER IS NEVER GIVEN 
8GFW    #     AS IT IS A HIGH PROBABILITY THE TRANSFER CAN TAKE PLACE   
8G^G    #     IMMEDIATELY)  
8HF6          LDN   0  #2000
8HYQ          ANDX  0  AWORK2(2)           [MODE
8JDB          BZE   0  VENDOFCOND          [NOT A CONDITIONAL MODE TRANSFER 
8JY2          JALLOC   ,VENDOFCOND         [V7900 IS MOPPED ON:LINK ESTABLISHED 
8KCL          LDCT  6  PTOXNIXNE           [SET REPLY TIME OUT,NOT IMP,NOT ESTAB
8KX=                                       [AND RESTART PROGRAM 
8LBW          CALL  7  SETREPLYWD   
8LWG          CALL  7  SKICKNWAIT          [****
8MB6    VENDOFCOND  
8MTQ    #   
8N*B          LAMOP    ,2                  [SET X2 -> THE MBS INPUT ACTIVITY
8NT2          LDN   5  1                   [SET X5 = 1 FOR TRANSFER CT UPDATE   
8P#L          LDN   0  1
8PS=          ANDX  0  AWORK2(3)           [MODE (IN OLPA)  
8Q?W          BNZ   0  VWRITEONLY          [WRITE TYPE TRANSFER (MODE.B23 = 1)  
8QRG    VREADONLY   
8R?6          LDX   2  IPBRING(2)          [SET X2 -> THE MBS OUTPUT ACTIVITY   
8RQQ                                       [OR IF NOT SET UP, THE MBS INPUT ACT 
8S=B          SBN   2  IPBRING  
8SQ2    #     INCREMENT COUNT OF STORED READ TRANSFERS FOR K5VIPBPERI   
8T9L          SMO      CPPTR(3) 
8TP=          ADS   5  AVCREADS 
8W8W    #     IF THIS IS THE PROGRAM'S FIRST READ,MARK THE VIRTUAL 7900 OPERABLE
8WNG    #     "WAKE" THE MBS OUTPUT ACTIVITY IF ASLEEP  
8X86          JENG     CPPTR(3),VAWAKE     [ALREADY MARKED OPERABLE 
8XMQ          SMO      CPPTR(3)            [MARK THE VIRTUAL 7900 OPERABLE  
8Y7B          ORS   5  JK52E
8YM2          BRN      VAWAKE   
8^6L    VWRITEONLY  
8^L=    #     INCREMENT COUNT OF STORED WRITE TRANSFERS FOR K5VIPBPERI  
925W          SMO      CPPTR(3) 
92KG          ADS   5  AVCWRITES
9356    #     "WAKE" THE MBS INPUT ACTIVITY IF ASLEEP   
93JQ    VAWAKE  
944B    #     SKIP WAKE UP OF THE MBS ACTIVITY IF THE V7900 IS MOPPED OFF OR
94J2    #     INOPERABLE OR THE ACTIVITY IS NOT MARKED ASLEEP   
953L          JALLOC   ,VCHKIFOPER         [V7900 IS MOPPED ON  
95H=          BRN      VSETSTORED          [V7900 IS MOPPED OFF :SKIP WAKE UP   
962W    VCHKIFOPER  
96GG          JENG     ,VCHKIFAWAKE        [V7900 IS OPERABLE   
9726          BRN      VSETSTORED          [V7900 IS INOPERABLE : SKIP WAKE UP  
97FQ                                       [IE PROG'S FIRST READ NOT ISSUED YET 
97^B    VCHKIFAWAKE 
98F2          LDCT  0  #100                [IPBSW.B2 SET IF THE ACT IS ASLEEP   
98YL          ANDX  0  IPBSW(2) 
99D=          BZE   0  VSETSTORED          [ACTIVITY NOT ASLEEP 
99XW          ERS   0  IPBSW(2)            [UNSET ASLEEP FLAG AND   
9=CG          FPUT                         [PUT ON THE ACTIVITY LIST
9=X6    #   
9?BQ    VSETSTORED  
9?WB          LDX   2  FX2  
9#B2    #     DUMP CURRENT VALUE OF CLEANCT IN AWORK1   
9#TL    #     FOR K4VIPBPERI (TIME-OUT AGENT)   
9**=          LDX   0  CLEANCT  
9*SW          STO   0  AWORK1(2)
9B#G    #     SET TRANSFER STORED FLAG  
9BS6          SCBB     2
9C?Q    #     GIVE PROGRAM AN ACCEPTED RESPONSE AND RESTART IT  
9CRB          CALL  7  SETACCEPTED  
9D?2          CALL  7  SKICKNWAIT          [****
9DQL    #   
9F==    VZ1STORED   
9FPW    #     GIVE PROGRAM A REJECTED RESPONSE AND RESTART IT   
9G9G          CALL  7  SETREJECTED  
9GP6          CALL  7  SKICKNWAIT          [****
9H8Q    #PAGE   
9HNB    #   
9J82    # K2VIPBPERI IS ENTERED BY A DOWN FROM RELPER TO RELEASE A VIRTUAL 7900 
9JML    # COMMS CHANNEL .   
9K7=    #   
9KLW    Z2VIPBPERI  
9L6G    #   
9LL6    #     ON ENTRY X3 -> THE LOCKED AOLPT TO BE RELEASED
9M5Q    #     IF A TRANSFER IS STORED   
9MKB    #     THEN IF LINK IS ESTABLISHED (IE THE V7900 IS MOPPED ON)   
9N52    #          THEN SET PROGRAM'S REPLY WORD TO NOT IMPLEMENTED 
9NJL    #          ELSE SET PROGRAM'S REPLY WORD TO NOT IMPLEMENTED,NOT ESTAB.  
9P4=          TRACE    3,V79OLREL          [ADDRESS OF OLPA BEING RELEASED  
9PHW          JCBB     3,VZ2STORED         [TRANSFER STORED 
9Q3G          BRN      VMURDEROLPA         [TRANSFER NOT STORED 
9QH6    VZ2STORED   
9R2Q          CALL  7  STRANCTDOWN         [DECREMENT COUNT OF STORED TRANSFERS 
9RGB          LDCT  6  PNI                 [SET REPLY NOT IMPLEMENTED   
9S22          JALLOC   CPPTR(3),VZ2LINKESTB[V7900 IS MOPPED ON:LINK ESTABLISHED 
9SFL          LDCT  6  PNIXNE              [SET REPLY NOT IMPLEMENTED,NOT ESTAB 
9S^=    VZ2LINKESTB 
9TDW          CALL  7  SETREPLYWD   
9TYG    VMURDEROLPA 
9WD6    #     REMOVE AOLPT FROM THE VIRTUAL 7900 OLPA RING AND MURDER IT
9WXQ          DERINGD  BWORKRING(3) 
9XCB          LDX   5  CPPTR(3)            [SAVE PTR TO OLPA'S V7900 DEV LIST   
9XX2          MURDER   3
9YBL          LDX   3  5                   [SET X3 -> OLPA'S V7900 DEV LIST 
9YW=    #     IF NO WMC LINKS OPEN FOR READING, MARK THE VIRTUAL 7900 INOPERABLE
9^*W    #     IN THE DEVICE LIST AND IN THE MBS INPUT ACTIVITY  
9^TG    VZ2LINKSCHK 
=2*6          CALL  7  SNEXTOLPA           [SETS X3 -> (NEXT) OLPA FOUND
=2SQ          BRN      VZ2MARKINOP         [NO READ LINKS OPEN : MARK V7900 INOP
=3#B          LDX   0  BFSTATE(3)   
=3S2          SLC   0  7
=4?L          BPZ   0  VZ2LINKSCHK         [THIS LINK NOT OPENED FOR READING(B7)
=4R=          BRN      VRETURNUP           [WMC READ LINKS STILL OPEN   
=5=W    VZ2MARKINOP 
=5QG                                       [X3 NOW -> V7900 DEV LIST OF OLPA'S  
=62# ...      JDISENG  3,VRETURNUP  
=6=6          LDN   0  1                   [NO READ LINKS OPEN : MARK V7900 INOP
=6PQ          ORS   0  JK52E(3) 
=79B          ERS   0  JK52E(3) 
=7P2          JALLOC   3,VZ2TELLACT        [V7900 IS MOPPED ON  
=88L          BRN      VRETURNUP           [V7900 IS MOPPED OFF : NO NEED TO
=8N=                                       [TELL MBS INPUT ACT OF INOPERABILITY 
=97W    VZ2TELLACT  
=9CN ...[                                  [J IF ALREADY INOP   
=9MG          LAMOP    3,3                 [SET X3 -> THE MBS INPUT ACTIVITY
==76          LDCT  0  #400                [MARK THE MBS INPUT ACTIVITY 
==LQ          ORS   0  IPBSW(3)            [INOPERABLE AND AWAKE IF NECESSARY   
=?6B          LDCT  0  #100 
=?L2          ANDX  0  IPBSW(3) 
=#5L          BZE   0  VRETURNUP           [ACTIVITY NOT ASLEEP 
=#K=          ERS   0  IPBSW(3)            [UNSET ASLEEP FLAG AND   
=*4W          LDX   2  3                   [PUT ON THE ACTIVITY LIST
=*JG          FPUT  
=B46          BRN      VRETURNUP
=BHQ    #   
=C3B    #PAGE   
=CH2    #   
=D2L    # K3VIPBPERI IS ENTERED BY K1VIPBPERI TO REPORT ILLEGAL VIRTUAL 7900
=DG=    # WMC ORDERS .  
=D^W    # IT RUNS IN THE PROCESS CONTROL ACTIVITY (APET) .  
=FFG    #   
=F^6    Z3VIPBPERI  
=GDQ    #     UNPLUG THE PROGRAM AND REPORT THE ILLEGAL REFERRED TO BY THE  
=GYB    #     MONITORING FILE MESSAGE IDENTIFIER HELD IN X6 
=HD2          UNPLUG                       [FROM EXEC AND PUT THE PROGRAM IN THE
=HXL                                       [STOP STATE  
=JC=          ILLEGALX 6                   [GENERATE A FAILED PROGRAM EVENT 
=JWW                                       [****
=KBG    #PAGE   
=KW6    #   
=L*Q    # K4VIPBPERI IS ENTERED BY AN ACROSS FROM CHARGESC EVERY
=LTB    # FONINT (4) SECONDS TO TIME OUT VIRTUAL 7900 WMC   
=M*2    # TRANSFER ORDERS WHICH HAVE BEEN STORED FOR 3 FONINTP (12) SECONDS .   
=MSL    # IT RUNS IN THE BLANKET ACTIVITY . 
=N#=    #   
=NRW    Z4VIPBPERI  
=P?G    #     RE-CHECK THAT A VIRTUAL 7900 IS PRESENT   
=PR6          HUNTMISB 3,APERI,AV7900   
=Q=Q          BNG   3  VTOCHARGESC         [NO VIRTUAL 7900 DEVICE LIST PRESENT 
=QQB    #     SEARCH FOR VIRTUAL 7900 AOLPT WITH A STORED TRANSFER  
=R=2    VNEXTOLPA   
=RPL          CALL  7  SNEXTOLPA
=S9= ...      BRN      VTONEXTDV           [END OF AVOLPARING   
=SNW          JCBB     3,VTESTTIMEUP       [CHANNEL BUSY : TRANSFER IS STORED   
=T8G          BRN      VNEXTOLPA           [LOOK AT NEXT OLPA   
=TN6    VTESTTIMEUP 
=W7Q    #     CHECK IF TIME UP, IE CLEANCT-AWORK1 =/> PV7900TIMEO   
=WMB    #     AWORK1 OF THE OLPA HOLDS THE CLEANCT TIME WHEN THE TRANSFER WAS   
=X72    #     STORED
=XLL          LDX   0  CLEANCT  
=Y6=          SBX   0  AWORK1(3)
=YKW          BXL   0  PV7900TIMEO(1),VNEXTOLPA [TIME NOT UP
=^5G    #     TIME UP : TIME OUT TRANSFER   
=^K6          TRACE    3,V79OLTO           [ADDRESS OF OLPA BEING TIMED OUT 
?24Q          TRACE    0,V79TIMUP          [THE TIME UP EXCESS MARGIN   
?2JB          CALL  7  STRANCTDOWN         [DECREMENT COUNT OF STORED TRANSFER  
?342    #     IF LINK IS ESTABLISHED (IE THE V7900 IS MOPPED ON)
?3HL    #     THEN SET PROGRAM'S REPLY WORD TO TIME OUT,NOT IMPLEMENTED 
?43=    #     ELSE SET PROGRAM'S REPLY WORD TO TIME OUT,NOT IMPLEMENTED,NOT ESTB
?4GW          LDCT  6  PTOXNI              [SET REPLY TIME OUT,NOT IMPLEMENTED  
?52G          JALLOC   CPPTR(3),VZ4LINKESTB[V7900 IS MOPPED ON:LINK ESTABLISHED 
?5G6          LDCT  6  PTOXNIXNE           [SET REPLY TIME OUT,NOT IMP,NOT EST  
?5^Q    VZ4LINKESTB 
?6FB          CALL  7  SETREPLYWD   
?6^2    #     UNSET TRANSFER STORED FLAG (CHANNEL BUSY BIT) AND REACTIVATE THE  
?7DL    #     PROGRAM MEMBER
?7Y=          CCBB     3
?8CW          CALL  7  STICKLE  
?8XG    #   
?9C6          BRN      VNEXTOLPA           [LOOK AT NEXT OLPA   
?9WQ    #   
?9Y7 ...VTONEXTDV                          [LOOK FOR NEXT V7900 
?9^J ...      LDN   0  AV7900+APERI 
?=2^ ...      SLL   0  12   
?=4B ...ZMHM2B3 
?=5R ...      TXU   3  BMISC
?=78 ...      BCC      VTOCHARGESC               [J IF END OF CHAIN 
?=8K ...      LDX   3  BPTR(3)  
?==2 ...      TXU   0  ATYPE(3) 
?=?C ...      BCC      VNEXTOLPA                 [J IF FOUND A V7900
?=#S ...      BRN      ZMHM2B3                   [TRY AGAIN 
?=BB    VTOCHARGESC 
?=W2          ACROSS   CHARGESC,14         [EXIT BACK TO CHARGESC   
??*L                                       [>>>>
??T=    #PAGE   
?##W    #   
?#SG    # K5VIPBPERI IMPLEMENTS VIRTUAL 7900 WMC TRANSFER ORDERS .  
?*#6    # IT RUNS IN 7900 INPUT AND OUTPUT ACTIVITIES (AMOP/IPBIN & AMOP/IPBOUT)
?*RQ    #   
?B?B    Z5VIPBPERI  
?BR2    #     ROUTINE SHOULD NOT COORDINATE BEFORE END  
?C=L    #     THIS OBVIATES THE NEED FOR A "TRANSFER ACTIVE" FLAG   
?CQ=    #     NOTE A LONG BLOCK CONDITION CAN NEVER OCCUR   
?D9W          LDX   3  CPPTR(2)            [SET X3 -> VIRTUAL 7900 DEVICE LIST  
?DPG    #     IF WRITING TO THE PROGRAM, SET X6 = 0 
?F96    #     IF READING FROM THE PROGRAM, SET X6 NON-ZERO  
?FNQ          LDX   6  ATYPE(2) 
?G8B          SRL   6  12   
?GN2          SBN   6  AMOP+IPBOUT  
?H7L    #     RE-CHECK FOR THE STORED TRANSFER (MAY HAVE BEEN TIMED OUT,
?HM=    #     CANCELLED, OR CHANNEL RELEASED)   
?J6W          BZE   6  VWRITTOPROG         [WRITING TO PROGRAM  
?JLG    #              READING FROM PROGRAM 
?K66          TRACE    2,VMBINACT          [AMOP/IPBIN IMPLEMENTING WMC XFER
?KKQ          LDX   0  AVCWRITES(3) 
?L5B          BZE   0  VRETURNUP           [NO WMC WRITE TRANSFER STORED
?LK2    #     DON'T READ FROM THE PROGRAM UNTIL MBS HAS SENT THE INITIALISE 
?M4L    #     SUPERVISORY SEGMENT (MBS'S FIRST WRITE)   
?MJ=          LDX   0  JK52H(3)            [COUNT OF TOTAL GEORGE PERI'S
?N3W                                       [COUNT IS CLEARED BY MOP OFF 
?NHG          BZE   0  VRETURNUP           ['INITIALISE' NOT YET SENT TO PROG   
?P36          BRN      VFINDOLPA
?PGQ    VWRITTOPROG 
?Q2B          TRACE    2,VMBOPACT          [AMOP/IPBOUT IMPLEMENTING WMC XFER   
?QG2          LDX   0  AVCREADS(3)  
?Q^L          BZE   0  VRETURNUP           [NO WMC READ TRANSFER STORED 
?RF=    #     FIND THE OLPA WITH THE STORED TRANSFER
?RYW    VFINDOLPA   
?SDG          CALL  7  SNEXTOLPA           [SETS X3 -> (NEXT) OLPA FOUND
?SY6          BRN      (GEOERR)            [OLPA NOT FOUND  
?TCQ          JCBB     3,VTESTOLPAOK       [CHANNEL BUSY : TRANSFER STORED  
?TXB          BRN      VFINDOLPA
?WC2    VTESTOLPAOK 
?WWL    #     CHECK THE STORED TRANSFER IS SUITABLE FOR THIS ACTIVITY   
?XB=          LDX   0  BFSTATE(3)          [LINK DIRECTION,B6 = 1 FOR WRITE LINK
?XTW          SLC   0  6
?Y*G          BZE   6  VTRANTOPROG         [WRITING TO PROGRAM  
?YT6          BPZ   0  VFINDOLPA           [OLPA IS NOT WRITING : TRY NEXT ONE  
?^#Q    #   
?^SB    #     TRANSFER FROM PROGRAM TO MBS ; CURRENT ACTIVITY IS AMOP/IPBIN AND 
#2#2    #     OLPA IS WRITING   
#2RL    #              MOVE THE PROGRAM'S "IPB BLOCK" TO MBS'S INPUT BUFFER 
#3?=          MHUNTW   2,AMXOR,INBF 
#3QW          LDX   0  ACOMMUNE3(3)        [COUNT OF WORDS TO BE MOVED  
#4=G          LDX   4  ACOMMUNE4(3)        [-> PROGRAM'S IPB BLOCK  
#4Q6          LDN   5  A1(2)               [-> MBS'S INPUT BUFFER   
#59Q          CALL  7  SFOUTMOVE           [PROGRAM -> MBS  
#5PB          LDX   0  ACOMMUNE5(3)        [SIZE OF SECOND PART OF THE DATA AREA
#692          BZE   0  VENDWRITE           [NO SECOND PART  
#6NL          ADX   5  ACOMMUNE3(3)        [UPDATE MBS'S INPUT BUFFER POINTER   
#78=          LDX   4  ACOMMUNE6(3)        [-> SECOND PART OF PROGRAM'S IPB BLK 
#7MW          CALL  7  SFOUTMOVE
#87G    VENDWRITE   
#8M6    #              SIMULATE A SUCCESSFUL 7900 READ TRANSFER REPLY FOR   
#96Q    #              K1IPBIN  
#9LB    #              CONVERT COUNT OF WORDS TRANSFERRED TO THE MBS'S INPUT
#=62    #              BUFFER INTO THE REMAINDER COUNT  
#=KL          LDCT  0  #010 
#?5=          ORX   0  ALOGLEN(2)   
#?JW          SBX   0  ACOMMUNE3(3) 
##4G          SBX   0  ACOMMUNE5(3) 
##J6          LDX   2  FX2  
#*3Q          STO   0  CPRW1(2) 
#*HB    #              DECREMENT COUNT OF STORED WRITE TRANSFERS
#B32          CALL  7  SWRITCTDOWN  
#BGL    #              SET PROGRAM'S REPLY WORD TO TRANSFER IMPLEMENTED 
#C2=    #              WITH NO REMAINDER COUNT  
#CFW          LDCT  6  PTRANSFEROK  
#C^G          CALL  7  SETREPLYWD   
#DF6          STO   6  ACOMMUNE2(3)        [COPY REPLY WORD TO OLPA'S ACOMMUNE2 
#DYQ                                       [FOR DIAGNOSTIC PURPOSES 
#FDB          BRN      VENDOFTRAN   
#FY2    VTRANTOPROG 
#GCL          BNG   0  VFINDOLPA           [OLPA IS NOT READING : TRY NEXT ONE  
#GX=    #   
#HBW    #     TRANSFER FROM MBS TO PROGRAM ; CURRENT ACTIVITY IS AMOP/IPBOUT AND
#HWG    #     OLPA IS READING   
#JB6    #              MOVE THE FIRST 9 WORDS OF THE CURRENT AMXOR/IOUT BLOCK   
#JTQ    #              TO AMOP/IPBOUT ACT'S ACOMMUNE WORDS FOR DIAGNOSTIC   
#K*B    #              PURPOSES 
#KT2          MHUNTW   2,AMXOR,IOUT        [CONTAINS MBS'S "IPB BLOCK"  
#L#L          LDN   4  IMOPTY(2)
#LS=          SMO      FX2  
#M?W          LDN   5  ACOMMUNE1
#MRG          MOVE  4  9
#N?6    #              IF MBS'S "IPB BLOCK" IS A DATA SEGMENT, COPY THE END OF  
#NQQ    #              RESTART SECTION BIT IN THE HEADER (B6) TO THE END OF 
#P=B    #              NPU BIT(B1) AS CM TREATS B1 AS END OF RESTART SECTION BIT
#PQ2    #              (LEAVE B6 UNCHANGED FOR TESTING ; CM IGNORES B6) 
#Q9L    #              CM TREATS EACH DATA SEGMENT AS A COMPLETE MESSAGE
#QP=    #              NOTE BATCHED DATA SEGMENTS ARE NOT CATERED FOR   
#R8W          LDCH  0  IPBIDE(2)
#RNG          BNZ   0  VMOVETOPROG         [NOT A DATA SEGMENT  
#S86          LDCT  0  #200                [CLEAR B1
#SMQ          ORS   0  IPBIDE+1(2)  
#T7B          ERS   0  IPBIDE+1(2)  
#TM2          LDCT  0  4                   [ISOLATE B6  
#W6L          ANDX  0  IPBIDE+1(2)  
#WL=          SLL   0  5                   [B6 -> B1
#X5W          ORS   0  IPBIDE+1(2)  
#XKG    VMOVETOPROG 
#Y56    #              MOVE MBS'S "IPB BLOCK" TO THE PROGRAM'S DATA AREA
#YJQ          LDX   0  ALOGLEN(2)   
#^4B          SBN   0  IPBIDE-A1-1         [SIZE OF MBS'S "IPB BLOCK"   
#^J2          STO   0  GEN0                [REMEMBER TRANSFER SIZE FOR REPLY
*23L          LDN   4  IBSW(2)             [-> MBS'S "IPB BLOCK"
*2H=          LDX   5  ACOMMUNE4(3)        [-> PROGRAM'S DATA AREA  
*32W          CALL  7  SFINMOVE            [MBS -> PROGRAM  
*3GG          LDX   2  FX2  
*426    #              DECREMENT COUNT OF STORED READ TRANSFERS 
*4FQ          CALL  7  SREADCTDOWN  
*4^B    #              SET PROGRAM'S REPLY WORD TO TRANSFER IMPLEMENTED 
*5F2    #              WITH REMAINDER COUNT 
*5YL          LDCT  6  PTRANSFEROK  
*6D=          LDX   0  ACOMMUNE3(3)        [CALCULATE REMAINDER COUNT   
*6XW          SBX   0  GEN0                [= REMAINDER COUNT   
*7CG          ORS   0  6
*7X6          CALL  7  SETREPLYWD   
*8BQ          STO   6  ACOMMUNE2(3)        [COPY REPLY WORD TO OLPA'S ACOMMUNE2 
*8WB                                       [FOR DIAGNOSTIC PURPOSES 
*9B2    #   
*9TL    VENDOFTRAN  
*=*=    #     INCREMENT DEVICE LIST'S COUNT OF GEORGE TRANSFERS 
*=SW          LDN   0  1
*?#G          SMO      CPPTR(2) 
*?S6          ADS   0  JK52H
*#?Q    #     UNSET TRANSFER STORED FLAG (CHANNEL BUSY BIT) AND REACTIVATE THE  
*#RB    #     PROGRAM MEMBER
**?2          CCBB     3
**QL          CALL  7  STICKLE  
*B==    #     RETURN UP +1 WHICH INDICATES THE TRANSFER WAS IMPLEMENTED 
*BPW          UPPLUS   1                   [^^^^
*C9G    #   
*CP6    VRETURNUP      [FOR K2/K5 VIPBPERI  
*D8Q          UP                           [^^^^
*DNB    #   
*F82    [   
*FML    [     EXCEPTION PATHS   
*G7=    [   
*GLW    PILLMODE       +JYMODE             [ILLEGAL:MODE IN ERROR   
*H6G    XILLMODE
*HL6          LDX   6  PILLMODE(1)  
*J5Q          BRN      XILLWMCPERI  
*JKB    PILLBLKADD     +JYNOBUF            [ILLEGAL:BUFFER OUT OF RESERVATIONS  
*K52    XILLBLKADD  
*KJL          LDX   6  PILLBLKADD(1)
*L4=          BRN      XILLWMCPERI  
*LHW    PILLCOUNT      +JYCOUNT            [ILLEGAL:COUNT OUT OF RANGE  
*M3G    XILLCOUNT   
*MH6          LDX   6  PILLCOUNT(1) 
*N2Q          BRN      XILLWMCPERI  
*NGB    PILLADDR       +JYNOCA             [ILLEGAL:CONTROL AREA OUT OF 
*P22                                       [RESERVATIONS
*PFL    XILLADDR
*P^=          LDX   6  PILLADDR(1)  
*QDW    XILLWMCPERI 
*QYG          TOPCA    PK3VIPBPERI(1)      [FPUT APET TO REPORT THE ILLEGAL 
*RD6          COOR1                        [WAIT FOR NEXT WMC PERI  
*RXQ          BRN      Z1VIPBPERI   
*SCB    #END
^^^^ ...123522240004