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