{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: IPCON864)}}
====== IPCON864 ======
(George Source)
**Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:BXE|BXE]], [[george:macro:BXL|BXL]], [[george:macro:BXU|BXU]], [[george:macro:CCBB|CCBB]], [[george:macro:CLEAR|CLEAR]], [[george:macro:DCA|DCA]], [[george:macro:DECLINK|DECLINK]], [[george:macro:DESUSPEND|DESUSPEND]], [[george:macro:DSCA|DSCA]], [[george:macro:FADDRESS|FADDRESS]], [[george:macro:FINDACTFB|FINDACTFB]], [[george:macro:FINMOVE|FINMOVE]], [[george:macro:FSHCODE|FSHCODE]], [[george:macro:FSHSKIP|FSHSKIP]], [[george:macro:GEOERR|GEOERR]], [[george:macro:GPERIIPC|GPERIIPC]], [[george:macro:HUNT2|HUNT2]], [[george:macro:HUNTW|HUNTW]], [[george:macro:JDISENG|JDISENG]], [[george:macro:JRESET|JRESET]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MFREE|MFREE]], [[george:macro:OPEN|OPEN]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SIPCM|SIPCM]], [[george:macro:SREP|SREP]], [[george:macro:TICKLE|TICKLE]], [[george:macro:TIPCREP|TIPCREP]], [[george:macro:TRACE|TRACE]], [[george:macro:TRACEIF|TRACEIF]]
22FL ... SEG IPCON,,KEITH MARTIN
22^= # THIS SEGMENT HANDLES TYPE 28 IPBS IN ORDER TO IMPLEMENT
23DW # THE INTER-PROGRAM COMMUNICATION FACILITY.
23YG #
24D6 SEGENTRY K1IPCON,X1IPCON
24XQ SEGENTRY K3IPCON,X3IPCON
25CB # STORED WORDS
25X2 RESBITS #777700
26BL TMESSCODES #04000040
26W= #04000041
27*W #04000042
27TG #04000043
28*6 #04000046
28SQ #03000047
29#B #07000060
29S2 #07000061
2=?L #04000066
2=R= #03000067
2?=W #02000070
2?QG #02000071
2#=6 #03000077
2#PQ TBIT1 #20000000
2*9B TBIT2 #10000000
2*P2 TBIT3 #4000000
2B8L TBIT4 #2000000
2BN= TBIT5 #1000000
2C7W TBIT7 #00200000
2CMG TBIT11 #10000
2D76 TTLIM +8 [MAX TASK NO + 1
2DLQ TIPBACT +IPCA+IPCBX [TYPE OF IPB ACTIVITY
2F6B RNF #02200000
2FL2 ROK #0
2G5L RTO #22000000
2GK= RNI #02000000
2H4W RNINE #02400000
2HJG OBJW #40000*IPCG4+#11
2J46 OBJR #40000*IPCG4+#12
2JHQ # SUBROUTINE USED TO SET OBJECT PROGRAM REPLIES
2K3B #
2KH2 SREP
2L2L CALL 7 SREL
2LG= STO 4 ACC4(2)
2L^W STO 5 ACC5(2)
2MFG LDX 5 AREPPTR(3) [ADDRESS OF REPLY WORD
2M^6 #SKI G3
2NDQ (
2NYB SMO FPTR(3)
2PD2 LDX 3 APETADDR-ARINGEL
2PXL )
2QC= #SKI G4
2QWW (
2RBG LDX 3 FPTR(3)
2RW6 SBN 3 ARINGEL
2S*Q )
2STB LDN 4 ACOMMUNE2(2)
2T*2 LDN 7 1
2TSL #SKI IPCG4
2W#= HUNT2 2,ADATA,HLOCKDOWN,3
2WRW FINMOVE 3,5,4,7,HLOCKB1,2,1
2X?G LDX 2 FX2
2XR6 LDX 4 ACC4(2)
2Y=Q LDX 5 ACC5(2)
2YQB CALL 7 SREL
2^=2 NGNC 0 8
2^PL ANDS 0 ASTATUS1(3) [CALL TR STORED & IN PROGRESS BITS
329= STOZ ATIMCT(3)
32NW STOZ ASTR(3)
338G STOZ ALENTR(3)
33N6 STOZ AREPPTR(3)
347Q LDX 0 ASTMEL(3)
34MB STO 0 AWORK4(2)
3572 STOZ ASTMEL(3)
35LL NGN 0 2
366= ANDS 0 ASTATUS2(3)
36KW LDX 3 FPTR(3)
375G SBN 3 ARINGEL
37K6 #SKI IPCG4
384Q (
38JB HUNT2 2,ADATA,HLOCKDOWN,3
3942 CLEAR APETADDR(3),0,HLOCKB1,2,2
39HL LDX 2 FX2
3=3= )
3=GW CCBB 3
3=P6 ... STO 5 ACC5(2)
3=XB ... LDX 5 AWORK4(2)
3?5L ... TICKLE JOBNO(3),5
3??W ... LDX 5 ACC5(2)
3?G6 MFREE IPCD,ATASK
3?^Q EXIT 6 0
3#FB # SUBROUTINE TO LOCATE LINKS RING ELEMENT
3#^2 # GIVEN THE LINK IDENTIFIER IN ACOMMUNE1(2) [X2 MUST = FX2]
3*DL # ADDRESS IS LEFT IN X3. LINK IS X7. ON EXIT X1=FX1
3*Y= #
3BCW SREL
3BXG LDX 3 IPCPTR(2) [FIND IPC ACTIVITY
3CC6 HUNT2 3,IPCD,IPSTACK [FIND STACK BLOCK
3CWQ LDX 1 ARINGNO(3)
3DBB ANDN 1 #7777
3DW2 BZE 1 SFR1 [STACK EMPTY
3F*L ADN 3 A1
3FT= SFR3 LDX 0 ALINUM(3)
3G#W BXE 0 ACOMMUNE1(2),SFR2
3GSG ADN 3 ARECLEN
3H#6 BCT 1 SFR3
3HRQ SFR1 NGN 3 #7777
3J?B SFR2 LDX 1 FX1
3JR2 EXIT 7 0
3K=L # S/R TO LOCATE ACTIVITY OWNING A GEORGE LINK
3KQ= SLACT LDX 2 FPTR(3) [CONTROL BLOCK
3L9W SBN 2 A1
3LPG SLACT1
3M96 LDX 2 BPTR(2)
3MNQ LDX 0 ATYPE(2)
3N8B BXL 0 CACT,SLACT1
3NN2 EXIT 7 0
3P7L # S/R TO SET REPLY ETC ON GEORGE LINK
3PM= SGCLR LDX 2 FPTR(3)
3Q6W STO 6 IPCGREP-A1(2) [STORE REPLY
3QLG LDX 0 GSIGN
3R66 ERS 0 ASTATUS1(3) [UNSET T.I.P.
3RKQ STOZ ATIMCT(3)
3S5B STOZ ASTR(3)
3SK2 STOZ ALENTR(3)
3TJ= STOZ ASTMEL(3)
3W3W LDX 1 7
3WHG CALL 7 SLACT
3X36 LDX 7 1
3XGQ DESUSPEND [DESUSPEND ACTIVITY
3Y2B MFREE IPCD,ATASK [FREE TASK BLOCK
3YG2 EXIT 7 0
3Y^L # THIS PART OF THE SEGMENT IS THE POINT TO WHICH CONTROL
3^F= # IS RETURNED WHEN A MESSAGE SEQUENCE OR OTHER ACTION IS
3^YW # COMPLETED.
42DG PCNXT
42Y6 MFREE IPCD,ATASK
43CQ X1IPCON
43XB NEXTASK
443? ... FSHCODE AORB
4478 ... TRACEIF K6IPCON,199,299,IPREB(2),IPCON1
44?5 ... FSHSKIP
44C2 TRACE IPREB(2),IPCON1
44WL JDISENG ,NOP [J IF INOPERABLE
45B= JRESET ,RESETA [J IF RESET
45TW # ANY TASKS ?
46*G HUNTW 3,IPCD,ATASK [LOOK FOR TASK BLOCK
46T6 BPZ 3 TASK [IF FOUND,GO TO PROCESS TASK
47#Q ACROSS IPCONA,1 [IF NONE,GO QUIESCENT
47SB # SWITCH ON TASK TYPE
48#2 TASK LDX 0 A1+1(3)
48RL BZE 0 TA1
49?= TXL 0 TTLIM(1)
49QW BCS TA2
4==G TA1 GEOERR 1,IPCON1
4=Q6 TA2 SMO 0
4?9Q BRN TA2+1
4?PB BRN OPEN
4#92 BRN TRAN
4#NL BRN TCLOS
4*8= BRN TRAN
4*MW BRN OPGEO
4B7G BRN TFRG
4BM6 BRN TCLOS
4C6Q # THIS SECTION DEALS WITH OPEN REQUEST TASKS
4CLB OPEN ACROSS IPCONB,1
4D62 # THIS SECTION DEALS WITH TRANSFER TASKS
4DKL #
4F5= TRAN
4FJW LDX 0 A1(3)
4G4G STO 0 ACOMMUNE1(2)
4GJ6 TRACE 0,IPCON3
4H3Q LDX 0 A1+1(3)
4HHB STO 0 ACOMMUNE2(2)
4J32 CALL 7 SREL
4JGL ... BNG 3 PCNXT
4K2= ... LDX 0 ASTATUS1(3)
4KFW ... ANDN 0 1
4K^G ... BZE 0 PCNXT
4LF6 LDX 0 GSIGN
4LYQ ORS 0 ASTATUS1(3) [SET TRANSFER IN PROGRESS
4MDB # SET UP TRANSFER REQUEST MESSAGE
4MY2 LDX 2 FPTR(3) [ADDRESS OF AOLPT
4NCL LDX 0 ALINDIR-ARINGEL(2) [OPENING MODE
4NX= SRL 0 8 [0=READ,1=WRITE
4PBW SMO FX2
4PWG LDX 5 ACOMMUNE2
4QB6 SBN 5 2 [0=UNCONDITIONAL,2=CONDITIONAL
4QTQ ADX 1 0
4R*B ADX 1 5
4RT2 LDX 0 TMESSCODES(1) [HEADER
4S#L LDX 1 FX1
4SS= LDX 2 FX2
4T?W STO 0 IPWRB(2) [STORE HEADER
4TRG LDX 0 ACOMMUNE1(2)
4W?6 STO 0 IPWRB+1(2) [STORE LINK IDENTIFIER
4WQQ LDX 0 ALENTR(3)
4X=B STO 0 IPWRB+2(2) [STORE LENGTH OF TRANSFER
4XQ2 LDN 7 IPWRB(2)
4Y9L SUM 6 3
4YP= NGS 6 IPWRB+3(2) [STORE CHECKSUM
4^8W # SEND MESSAGE :-
4^NG # SET UP CONTROL AREA
5286 LDN 0 #31
52MQ DCA ,DLA,0,MODE
537B LDN 0 4
53M2 DCA ,DLA,0,COUNT
546L LDN 0 IPWRB(2)
54L= DCA ,STO,0,CTSA
555W LDN 0 #32
55KG DSCA ,DLA,0,MODE
5656 LDN 4 11
56JQ DSCA ,DLA,4,COUNT
574B LDN 0 IPREB(2)
57J2 DSCA ,STO,0,CTSA
583L # ISSUE PERI
58H= GPERIIPC ,2,
592W ... TIPCREP ,TE1,TE2,TE3,NPUT,WHOOPS,RESETA,NOP
59GG # CHECKSUM REPLY
5=26 LDX 5 CPRW2(2)
5=FQ ANDN 5 #777
5=^B SBX 4 5
5?F2 LDN 7 IPREB(2)
5?YL SMO 4
5#D= SUM 6 0 [CALCULATE CHECKSUM
5#XW BNZ 6 TE4 [WRONG
5*CG # FURTHER VALIDATION OF REPLY
5*X6 LDCH 0 IPREB(2)
5BBQ BXU 0 4,TE4 [COUNT WRONG
5BWB LDX 0 IPREB+1(2)
5CB2 SRC 0 12
5CTL ERX 0 IPWRB+1(2)
5D*= ANDN 0 #7777
5DSW BNZ 0 TE4 [NOT FOR SAME LINK
5F#G LDX 0 IPREB(2)
5FS6 ANDN 0 #77
5G?Q SBN 0 #46
5GRB BZE 0 OBJPERI [DO ACTUAL TRANSFER
5H?2 SBN 0 1
5HQL BZE 0 WAIT [NONE READY
5J== SBN 0 #20
5JPW BNZ 0 TE4 [EH?
5K9G # DEAL WITH 'NO LINK' REPLY
5KP6 CALL 7 SREL [RELOCATE RING EL
5L8Q LDX 0 TBIT1(1)
5LNB ORS 0 ASTATUS2(3) [MARK NOT ESTABLISHED
5M82 STOZ APTRIPB(3)
5MML LDX 0 TBIT3(1)
5N7= ORS 0 ASTATUS2(3) [MARK 'NE REPLY SET'
5NLW LDX 0 RNINE(1)
5P6G STO 0 ACOMMUNE2(2)
5PL6 LDN 0 #7777
5Q5Q ANDS 0 ACOMMUNE1(2)
5QKB ANDS 0 ALINUM(3)
5R52 CALL 6 SREP [SET REPLY
5RJL DECLINK
5S4= BRN NEXTASK
5SHW # NO TRANSFER REPLY
5T3G WAIT CALL 7 SREL
5TH6 LDX 0 ACOMMUNE2(2)
5W2Q SBN 0 4
5WGB BZE 0 WAIT1 [J IF CONDITIONAL TRANSFER
5X22 LDX 0 ATIMCT(3)
5XFL BNZ 0 WAIT2 [J TO WAIT IF TIME NOT UP
5X^= WAIT1 LDX 6 RTO(1)
5YDW JDISENG CPPTR(2),WAIT1A
5YYG ORX 6 TBIT5(1)
5^D6 WAIT1A
5^XQ STO 6 ACOMMUNE2(2)
62CB CALL 6 SREP [SET REPLY ETC
62X2 BRN NEXTASK
63BL WAIT2 NGNC 0 1
63W= ANDS 0 ASTATUS1(3) [UNSET TIP & LEAVE WAITING
64*W NGN 0 2
64TG ANDS 0 ASTATUS2(3)
65*6 BRN PCNXT
65SQ # DO ACTUAL TRANSFER
66#B OBJPERI
66S2 TRACE IPREB+1(2),IPCON4
67?L LDX 0 IPREB+2(2)
67R= STO 0 AWORK3(2) [DIFFERENCE IN COUNTS
68=W X3IPCON
68QG CALL 7 SREL [RELOCATE RING EL
69=6 SMO FPTR(3)
69PQ LDX 5 ALINDIR-ARINGEL
6=9B SBN 5 #200
6=P2 BZE 5 OBJREAD [READ REQUIRED
6?8L # DO WRITE
6?N= LDX 0 OBJW(1)
6#7W DCA ,DLA,0,MODE
6#MG LDX 0 AWORK3(2)
6*76 BPZ 0 OB1
6*LQ ADX 0 ALENTR(3)
6B6B BZE 0 TE4
6BL2 BRN OB2
6C5L OB1 LDX 0 ALENTR(3)
6CK= OB2
6D4W DCA ,DLA,0,COUNT
6DJG LDX 7 ASTR(3)
6F46 LDX 1 FPTR(3)
6FHQ SBN 1 ARINGEL
6G3B FINDACTFB 1,,APET,,,BPTR
6GH2 #SKI IPCG4
6H2L (
6HG= LDX 0 ASEGTAB(1)
6H^W DCA ,STO,0,SEGTAB
6JFG )
6J^6 #SKI IPCG4<1$1
6KDQ FADDRESS 1,7 [ABSOLUTE ADDRESS
6KYB DCA ,STO,7,CTSA
6LD2 GPERIIPC ,2,CT
6LXL TIPCREP CT,TE1,TE2,TE3,TE4
6M3H ... LDX 0 CPRW1(2) [REPLY WORD
6M7D ... ANDN 0 #7777 [LOOK FOR REMAINDER
6M?* ... BNZ 0 TE4 [MAJOR ERROR IF SEEN
6MC= BRN OBJP1
6MWW # DO READ
6NBG OBJREAD
6NW6 LDX 0 OBJR(1)
6P*Q DSCA ,DLA,0,MODE
6PTB LDX 0 AWORK3(2)
6Q*2 BPZ 0 OB3
6QSL LDX 0 ALENTR(3)
6R#= BRN OB4
6RRW OB3 LDX 0 ALENTR(3)
6S?G SBX 0 AWORK3(2)
6SR6 BZE 0 TE4
6T=Q OB4
6TQB DSCA ,DLA,0,COUNT
6W=2 LDX 7 ASTR(3)
6WPL LDX 1 FPTR(3)
6X9= SBN 1 ARINGEL
6XNW FINDACTFB 1,,APET,,,BPTR
6Y8G #SKI IPCG4
6YN6 (
6^7Q LDX 0 ASEGTAB(1)
6^MB DSCA ,STO,0,SEGTAB
7272 )
72LL #SKI IPCG4<1$1
736= FADDRESS 1,7 [ABSOLUTE ADDRESS
73KW DSCA ,STO,7,CTSA
745G LDX 1 FX1
74K6 GPERIIPC ,2,SP
754Q ... TIPCREP SP,TE1,TE2,TE3,,TE4
75JB # SET REPLY TO OBJ PROG
7642 OBJP1 LDX 0 ROK(1)
76HL JDISENG ,OBJP2
773= LDX 0 TBIT5(1)
77GW OBJP2 LDX 6 AWORK3(2)
782G BNG 6 OBJP5
78G6 BZE 5 OBJP6
78^Q BRN OBJP4
79FB OBJP5 ORX 0 TBIT2(1)
79^2 BZE 5 OBJP4
7=DL NGX 6 6
7=Y= OBJP6
7?CW ORX 0 6 [REMAINDER COUNT
7?XG OBJP4 STO 0 ACOMMUNE2(2)
7#C6 CALL 6 SREP [SET REPLY
7#WQ BRN NEXTASK
7*BB OBJP3 ANDX 0 TBIT2(1) [IONG BLOCK
7*W2 BRN OBJP4
7B*L # DEAL WITH TRANSFER ERROR CASES
7BT= TE1 LDX 6 RNF(1)
7C#W JDISENG ,TE1A
7CSG ORX 6 TBIT5(1)
7D#6 TE1A STO 6 ACOMMUNE2(2)
7DRQ CALL 6 SREP
7F?B BRN TIME
7FR2 TE2 LDX 6 RNF(1)
7G=L ORN 6 1
7GQ= JDISENG ,TE2A
7H9W ORX 6 TBIT5(1)
7HPG TE2A STO 6 ACOMMUNE2(2)
7J96 CALL 6 SREP
7JNQ BRN RESETA
7K8B TE3 LDX 6 RNF(1)
7KN2 ORN 6 3
7L7L STO 6 ACOMMUNE2(2)
7LM= CALL 6 SREP
7M6W BRN NOPS
7MLG TE4 LDX 6 RNF(1)
7N66 ORN 6 2
7NKQ JDISENG ,TE4A
7P5B ORX 6 TBIT5(1)
7PK2 TE4A STO 6 ACOMMUNE2(2)
7Q4L CALL 6 SREP
7QJ= BRN WHOOPS
7R3W #
7YXB # CLOSE LINK TASK : THE RING ELEMENT ETC WILL HAVE ALREADY
7^C2 # BEEN FREED. THE ACTION REQUIRED IS SIMPLY TO INFORM THE
7^WL # OTHER END.
82B= # THIS TYPE OF TASK IS USED ALSO WHEN AN OPEN LINK ATTEMPT
82TW # IS ANTICIPATED BY ANOTHER SOURCE.
83*G TCLOS ACROSS IPCONC,1
83T6 # OPEN TASKS FOR GEORGE ACTIVITIES
84#Q #
84SB OPGEO
85#2 ACROSS IPCONB,4
85RL # TRANSFER TASKS FOR GEORGE ACTIVITIES
86?= #
86QW #
87=G TFRG ACROSS IPCONG,1
87Q6 TFREP #3200000
889Q TIREP #2000000
88PB NPUT ACROSS IPCONA,2
8992 NOPS SIPCM SI
89NL NOP ACROSS IPCONE,2 [DEAL WITH INOPERABLE IPB
8=8= WHOOPS
8=MW ACROSS IPCONE,1 [DEAL WITH ERROR
8?7G RESETA
8?M6 ACROSS IPCONE,3 [DEAL WITH ERROR DETECTED
8#6Q TIME
8#LB ACROSS IPCONE,5
8*62 #
8*KL #
8B5= MENDAREA 100,K9IPCON
8BJW #
8C4G #
8CJ6 #END
^^^^ ...45570403000400000000