{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: VIPBPERI864)}}
====== VIPBPERI864 ======
(George Source)
**Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:BXE|BXE]], [[george:macro:BXGE|BXGE]], [[george:macro:BXL|BXL]], [[george:macro:BXU|BXU]], [[george:macro:CCBB|CCBB]], [[george:macro:CHECKB|CHECKB]], [[george:macro:CHECKEXT|CHECKEXT]], [[george:macro:COOR1|COOR1]], [[george:macro:DERINGD|DERINGD]], [[george:macro:FINMOVE|FINMOVE]], [[george:macro:FOUTMOVE|FOUTMOVE]], [[george:macro:FPUT|FPUT]], [[george:macro:HUNTMISB|HUNTMISB]], [[george:macro:ILLEGALX|ILLEGALX]], [[george:macro:JALLOC|JALLOC]], [[george:macro:JCBB|JCBB]], [[george:macro:JDISENG|JDISENG]], [[george:macro:JENG|JENG]], [[george:macro:LAMOP|LAMOP]], [[george:macro:LOCKCA|LOCKCA]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:MURDER|MURDER]], [[george:macro:OLPFIN|OLPFIN]], [[george:macro:PAIR|PAIR]], [[george:macro:RELOFP|RELOFP]], [[george:macro:SCBB|SCBB]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:TICKLE|TICKLE]], [[george:macro:TOPCA|TOPCA]], [[george:macro:TRACE|TRACE]], [[george:macro:UNPLUG|UNPLUG]], [[george:macro:UP|UP]], [[george:macro:UPPLUS|UPPLUS]]
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