{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: IPCONB8)}}
====== IPCONB8 ======
(George Source)
**Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:BXE|BXE]], [[george:macro:BXU|BXU]], [[george:macro:DCA|DCA]], [[george:macro:DSCA|DSCA]], [[george:macro:EMPTY|EMPTY]], [[george:macro:GPERIIPC|GPERIIPC]], [[george:macro:HUNT2|HUNT2]], [[george:macro:HUNT2B|HUNT2B]], [[george:macro:HUNT2OPT|HUNT2OPT]], [[george:macro:INCLINK|INCLINK]], [[george:macro:KILLHANGER|KILLHANGER]], [[george:macro:LGEOG|LGEOG]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MFREE|MFREE]], [[george:macro:MHUNT|MHUNT]], [[george:macro:OPB|OPB]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETNCORE|SETNCORE]], [[george:macro:SIPCM|SIPCM]], [[george:macro:TIPCREP|TIPCREP]], [[george:macro:TRACE|TRACE]], [[george:macro:UP|UP]], [[george:macro:WAKEHANGER|WAKEHANGER]]
22FL ... SEG IPCONB,,KEITH MARTIN
22^= # THIS SEGMENT DEALS WITH OPEN TASKS FOR IPC LINKS
23DW #
23YG SEGENTRY K1IPCONB,X1IPCONB
24D6 SEGENTRY K2IPCONB,X2IPCONB
24XQ SEGENTRY K4IPCONB,X4IPCONB
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 TBIT11 #50000
2CMG TMSK #62777777
2D76 TIPBACT +IPCA+IPCBX [TYPE OF IPB ACTIVITY
2DLQ ROK #0
2F6B RTO #22000000
2FL2 RNI #22000000
2G5L RNINE #02400000
2GK= # SUBROUTINE TO LOCATE LINKS RING ELEMENT
2H4W # GIVEN THE LINK IDENTIFIER IN ACOMMUNE1(2) [X2 MUST = FX2]
2HJG # ADDRESS IS LEFT IN X3. LINK IS X7. ON EXIT X1=FX1
2J46 #
2JHQ SREL
2K3B LDX 3 IPCPTR(2) [FIND IPC ACTIVITY
2KH2 HUNT2 3,IPCD,IPSTACK [FIND STACK BLOCK
2L2L LDX 1 ARINGNO(3)
2LG= ANDN 1 #7777
2L^W BZE 1 SRE1 [STACK EMPTY
2MFG ADN 3 A1
2M^6 SRE3 LDX 0 ALINUM(3)
2NDQ ANDN 0 #7777
2NYB BXE 0 ACOMMUNE1(2),SRE2
2PD2 ADN 3 ARECLEN
2PXL BCT 1 SRE3
2QC= SRE1 NGN 3 #7777
2QWW SRE2 LDX 1 FX1
2RBG EXIT 7 0
2RW6 # S/R TO CLEAR UP WHEN FAIL IN OPENING
2S*Q SFIO LDX 0 IPWRB+1(2)
2STB CALL 7 SREL [FIND RING EL.
2T*2 BNG 3 SFI1 [NOT FOUND
2TSL LDX 0 BPTR(3)
2W#= BNZ 0 SFI2
2WRW CALL 4 SKF
2X?G SFI4
2XR6 EXIT 6 0
2Y=Q SFI2
2YQB LDX 0 ASTATUS2(3)
2^=2 ANDX 0 TBIT1(1)
2^PL BZE 0 SF13
329= LDX 0 TBIT4(1)
32NW ORS 0 ASTATUS2(3)
338G CALL 7 SNIPB
33N6 SFI1 EXIT 6 0 [EXIT
347Q SF13 CALL 7 SKH
34MB EXIT 6 0
3572 SKH LDX 2 ALINUM(3)
35LL SKH1 KILLHANGER 2
366= LDX 1 FX1
36KW EXIT 7 0
375G SKF CALL 7 SKH
37K6 LDX 7 4
384Q CALL 4 SFREE
38JB EXIT 7 0
3942 # S/R TO PASS OPEN TASK TO NEXT IPB,IF ANY
39HL SNIPB
3?2G WAKEHANGER ALINUM(3)
3?G6 EXIT 7 0
3Q6W # S/R TO REMOVE LINK ENTRIES
3QLG SFREE LDX 0 FPTR(3)
3R66 BNZ 0 SFR1
3YML ... LDX 1 FPTR(3)
3YP3 ... EMPTY FPTR(1)
3YQD ... EMPTY FPTR(3)
3YRT ... LDN 0 #40
3YT= ... ORS 0 ASTATUS2(3)
3YWM ... LDX 1 FX1
3Y^L EXIT 4 0
3^F= SFR1 LDCT 0 #20
3^YW ORS 0 ASTATUS2(3)
42DG ERS 0 ASTATUS2(3)
42Y6 LDX 1 FX1
43CQ LDX 2 FX2
43XB EXIT 4 0
44C2 # S/R TO CLEAR UP & MARK FAIL IN GEORGE OPEN PROCEDURE
44WL SOFG CALL 7 SREL [LOCATE RING EL
452H ... LDCT 0 #010 [CLEAR OPEN IN PROGRESS
456D ... ERX 0 ASTATUS2(3)
45=* ... ANDS 0 ASTATUS2(3)
45B= LDX 0 TBIT4(1)
45TW ORS 0 ASTATUS2(3) [SET F.I.O.
46*G MFREE IPCD,ATASK
46T6 EXIT 6 0 [EXIT
47#Q X1IPCONB
47SB MHUNT 3,IPCD,ATASK
48#2 LDX 0 A1(3)
48RL STO 0 ACOMMUNE1(2)
49?= TRACE 0,IPCON2
49QW CALL 7 SREL
4==G LDX 0 BPTR(3)
4=Q6 BNZ 0 OPA
4?9Q CALL 4 SKF
4?PB ...OPB BRN NEXTASK
4#NL OPA LDX 0 ASTATUS2(3)
4*8= SLL 0 1
4*MW BNG 0 OP1
4B7G CALL 7 SKH
4BM6 BRN OPB
4C6Q # SET UP OPEN REQUEST MESSAGE
4CLB OP1
4D62 LDX 2 FPTR(3) [ADDRESS OF AOLPT
4DKL LDX 0 ALINDIR-ARINGEL(2) [MODE OF OPENING
4F5= SRL 0 8 [0=READ,1=WRITE
4FJW SMO 0
4G4G LDX 0 TMESSCODES+6(1) [HEADER
4GJ6 LDX 1 2
4H3Q LDX 2 FX2
4HHB STO 0 IPWRB(2) [STORE HEADER
4J32 LDX 0 ACOMMUNE1(2)
4JGL STO 0 IPWRB+1(2) [LINK IDENTIFIER
4K2= LDN 6 ALINAME-ARINGEL(1)
4KFW LDN 7 IPWRB+2(2)
4K^G MOVE 6 3 [STORE LINK NAME
4LF6 SBN 1 ARINGEL
4LYQ HUNT2B 1,AOBRES,0
4MDB LDX 0 A1+1(1)
4MY2 STO 0 IPWRB+5(2) [PROG NAME
4NCL LDN 7 IPWRB(2)
4NX= SUM 6 6
4PBW NGS 6 IPWRB+6(2) [STORE CHECKSUM
4PWG # TRANSMIT MESSAGE
4QB6 LDN 0 #31 [CONTROL AREA: WRITE PART
4QTQ DCA ,DLA,0,MODE
4R*B LDN 0 7
4RT2 DCA ,DLA,0,COUNT
4S#L LDN 0 IPWRB(2)
4SS= DCA ,STO,0,CTSA
4T?W LDN 0 #32 [CONTROL AREA - READ PART
4TRG DSCA ,DLA,0,MODE
4W?6 LDN 4 11
4WQQ DSCA ,DLA,4,COUNT
4X=B LDN 0 IPREB(2)
4XQ2 DSCA ,STO,0,CTSA
4Y9L GPERIIPC ,2,
4YP= ... TIPCREP ,OPTO,OPRA,OPNPS,NPUT,OPWH,OPRA,OPNP
4^8W # REPLY RECEIVED - VALIDATE IT
4^NG LDX 5 CPRW2(2)
5286 ANDN 5 #777
52MQ SBX 4 5 [NR OF WDS TRANSFERRED
537B LDN 7 IPREB(2)
53M2 SMO 4
546L SUM 6 0
54L= BNZ 6 OPWH [J CHECKSUM WRONG
555W # FURTHER VALIDATION OF REPLY
55KG LDCH 0 IPREB(2)
5656 BXU 0 4,OPWH [COUNT GIVEN IS WRONG
56JQ LDX 0 IPREB+1(2)
574B SRL 0 12
57J2 BXU 0 IPWRB+1(2),OPWH
583L LDX 0 IPREB(2)
58H= ANDN 0 #77
592W SBN 0 #66
59GG BZE 0 PEST [OK REPLY
5=26 SBN 0 1
5=FQ BNZ 0 OPWH [WRONG REPLY
5=^B # DEAL WITH'NO LINK' REPLY
5?F2 CALL 7 SREL [RELOCATE RING EL
5?YL LDX 0 BPTR(3)
5#D= BNZ 0 OP3
5#XW OP4
5*CG CALL 4 SKF
5*X6 BRN NEXTASK
5BBQ OP3
5BWB LDX 0 TBIT1(1)
5CB2 ANDX 0 ASTATUS2(3)
5FS6 BNZ 0 PSNIP
5G?Q CALL 7 SKH
5GRB BRN NEXTASK
5HQL PSNIP CALL 7 SNIPB
5J== BRN NEXTASK
5JPW # DEAL WITH 'LINK ESTABLISHED' REPLY
5K9G PEST
5KP6 CALL 7 SREL [FIND RING EL
5L8Q LDX 0 BPTR(3)
5LNB BNZ 0 PE1
5M82 CALL 4 SKF
5MML BRN PLATE
5N7= PE1 LDX 0 TBIT1(1)
5NLW ANDX 0 ASTATUS2(3)
5P6G BNZ 0 PE2
5PL6 CALL 7 SKH
5Q5Q BRN PLATE
5QKB PE2 NGN 0 1
5R52 ERX 0 TBIT4(1)
5RJL ERX 0 TBIT1(1)
5S4= ANDS 0 ASTATUS2(3) [MARK ESTABLISHED
5T3G KILLHANGER ALINUM(3)
5TH6 INCLINK
5W2Q STO 2 APTRIPB(3) [DEVICE CONTROL ACTIVITY ADDRESS
5WGB LDX 0 IPREB+2(2)
5X22 STO 0 ALTPROG(3) [ALTERNATE PROGRAM NAME
5XFL LDX 0 IPREB+1(2)
5X^= SLC 0 12
5YDW STO 0 ALINUM(3)
62CB LGEOG ,7
62X2 ANDN 7 #77
63W= ORX 7 TBIT11(1)
65*6 SMO FPTR(3)
65SQ STO 7 IPPROPS-ARINGEL
66#B LDX 0 CPPTR(2)
66S2 SMO FPTR(3)
67?L STO 0 CPPTR-ARINGEL
67R= OPTR
68=W LDX 0 ASTATUS1(3)
68QG LDX 4 0
69=6 ANDN 0 1
6?8L ... BZE 0 NEXTASK [J. IF NO TRANSFER STORED.
6?N= OPTS HUNT2OPT 2,IPCD,ATASK [SEE IF TRANSFER TASK PRESENT
6#7W BNG 2 OPTT
6#G? ... LDX 0 A1(2) [LINK NO. FROM TASK BLOCK.
6#SN ... ERX 0 ALINUM(3) [NO. OF LINK JUST ESTABLISHED.
6*76 ANDN 0 #7777
6*LQ ... BNZ 0 OPTS [J. IF NOT SAME LINK.
6B6B LDX 0 A1+1(2)
6BL2 SBN 0 2
6C5L ... BZE 0 NEXTASK [J. IF TRANSFER.
6CK= SBN 0 2
6D4W ... BZE 0 NEXTASK [J. IF CONDITIONAL TRANSFER.
6DJG ... BRN OPTS [TRY NEXT TASK BLOCK.
6F46 OPTT
6FHQ LDX 7 ALINUM(3) [LINK NR
6G3B SETNCORE 2,3,IPCD,ATASK
6GH2 STO 7 A1(3) [LINK IDENTIFIER
6H2L ... LDN 0 2 [TRANSFER TASK IDENTIFIER NO.
6HG= SLC 4 4
6H^W ... ANDN 4 4 [GEORGE LINK BIT NOW B21.
6JFG ADX 0 4
6J^6 ... STO 0 A1+1(3) [SET (GEORGE) TRANSFER.
6KDQ BRN NEXTASK [J TO PERFORM TASK
6KYB # DEAL WITH TELLING REMOTE MACHINE THAT IT WAS TOO LATE
6LD2 # WITH ITS 'LINK ESTABLISHED' REPLY
6LXL PLATE LDX 4 IPREB+1(2)
6MC= SRC 4 12
6MWW MHUNT 3,IPCD,ATASK
6NBG STO 4 A1(3) [LINK IDENTIFIER
6NW6 LDN 0 7
6P*Q STO 0 A1+1(3) [TASK TYPE
6PTB BRN NEXTASK [J TO PERFORM TASK
6Q*2 # VARIOUS FAILURES IN OPENING
6QSL OPWH CALL 6 SFIO [SEQUENCE ERROR
6R#= BRN WHOOPS
6RRW OPTO CALL 6 SFIO [TIME-OUT
6S?G BRN TIME
6SR6 OPRA CALL 6 SFIO [RESET
6T=Q BRN RESETA
6TQB OPNPS CALL 6 SFIO [INOPERABLE ON READ
6W=2 BRN NOPS
6WPL OPNP CALL 6 SFIO [INOPERABLE ON WRITE
6X9= BRN NOP
6XNW PCNXT MFREE IPCD,ATASK
6Y8G NEXTASK
6YN6 ACROSS IPCON,1
6^7Q NPUT ACROSS IPCONA,2
6^MB NOPS SIPCM SI
7272 NOP ACROSS IPCONE,2 [DEAL WITH INOPERABLE IPB
72LL WHOOPS
736= ACROSS IPCONE,1 [DEAL WITH ERROR
73KW RESETA
745G ACROSS IPCONE,3 [DEAL WITH ERROR DETECTED
74K6 TIME
754Q ACROSS IPCONE,5
75JB X2IPCONB
7642 CALL 7 SREL
76HL CALL 7 SNIPB
773= UP
77GW X4IPCONB
782G # OPEN TASK FOR GEORGE LINK
78G6 #
78^Q # 1 SET UP OPEN REQUEST MESSAGE
79FB OTG MHUNT 3,IPCD,ATASK
79^2 LDX 6 A1(3) [LINK NO
7=DL STO 6 ACOMMUNE1(2)
7=Y= CALL 7 SREL [LOCATE RING ELEMENT
7?CW LDX 0 ASTATUS2(3)
7?XG SLC 0 1
7#C6 BPZ 0 OTCU
7#WQ LDX 0 ALTPROG(3) [DIRECTION OF LINK
7*BB SMO 0
7*W2 LDX 0 TMESSCODES+6(1) [HEADER
7B*L ORN 0 #1000 ["GEORGE" BIT
7BT= STO 0 IPWRB(2) [STORE HEADER
7C#W STO 6 IPWRB+1(2) [STORE LINK NO
7CSG LDX 1 FPTR(3)
7D#6 LDN 4 IPCGNAM-A1(1)
7DRQ LDN 5 IPWRB+2(2)
7F?B MOVE 4 3 [STORE LINK NAME
7FR2 STOZ IPWRB+5(2) [ZEROISE PROGRAM NAME
7G=L ADN 4 IPCGDET-IPCGNAM
7GQ= ADN 5 4
7H9W SBN 1 A1
7HPG LDX 0 ALOGLEN(1)
7J96 SBN 0 IPCGDET-IPCRNG+1
7JNQ BZE 0 OTG1 [NO DETAILS
7K8B SMO 0
7KN2 MOVE 4 0
7L7L LDCH 7 IPWRB(2)
7LM= ADX 7 0
7M6W DCH 7 IPWRB(2) [UPDATE HEADER COUNT FOR DETAILS
7MLG ADS 0 IPWRB(2) [UPDATE HEADER FOR DETAILS
7N66 OTG1 LDN 7 IPWRB(2)
7NKQ SMO 0
7P5B SUM 6 6
7PK2 SMO 0
7Q4L NGS 6 IPWRB+6(2) [STORE CHECKSUM
7QJ= # 2 SEND OPEN REQUEST
7R3W LDN 0 #31 [CONTROL AREA : WRITE PART
7RHG DCA ,DLA,0,MODE
7S36 LDCH 0 IPWRB(2)
7SGQ DCA ,DLA,0,COUNT
7T2B LDN 0 IPWRB(2)
7TG2 DCA ,STO,0,CTSA
7T^L LDN 0 #32 [CONTROL AREA : READ PART
7WF= DSCA ,DLA,0,MODE
7WYW LDN 4 11
7XDG DSCA ,DLA,4,COUNT
7XY6 LDN 0 IPREB(2)
7YCQ DSCA ,STO,0,CTSA
7YXB GPERIIPC ,2, [ISSUE PERI
7^C2 ... TIPCREP ,OTG2,OTG3,OTG4,NPUT,OTG6,OTG3,OTG5
7^WL # 3 VALIDATE REPLY
82B= LDX 5 CPRW2(2)
82TW ANDN 5 #777
83*G SBX 4 5 [COUNT OF WORDS RECEIVED
83T6 LDN 7 IPREB(2)
84#Q SMO 4
84SB SUM 6 0
85#2 BNZ 6 OTG6 [CHECKSUM INVALID
85RL LDCH 0 IPREB(2)
86?= BXU 0 4,OTG6 [COUNT WRONG
86QW LDX 0 IPREB+1(2)
87=G SRL 0 12
87Q6 BXU 0 IPWRB+1(2),OTG6 [REPLY GIVES DIFFERENT LINK NO
889Q LDX 0 IPREB(2)
88PB ANDN 0 #77 [MESSAGE TYPE
8992 SBN 0 #66
89NL BZE 0 OTGA [LINK ESTABLISHED
8=8= SBN 0 1
8=MW BNZ 0 OTG6 [UNACCEPTABLE MESSAGE TYPE
8?7G # 4 CLEAR UP
8?M6 CALL 7 SREL
8#6Q OTCU LDX 0 TBIT5(1)
8#F7 ... ERX 0 ASTATUS2(3) [UNSET OPEN IN PROGRESS
8#RJ ... ANDS 0 ASTATUS2(3)
8*62 LDX 0 BPTR(3)
8*KL BNZ 0 OTG7 [LINK STILL OPEN
8B5= CALL 4 SFREE [IF NOT,DELETE ENTRY
8BJW OTG7 BRN PCNXT
8C4G # 5 LINK ESTABLISHED
8CJ6 OTGA CALL 7 SREL
8D3Q LDX 0 TBIT1(1)
8DHB ERS 0 ASTATUS2(3)
8F32 LDX 0 IPREB+1(2)
8FGL SRC 0 12
8G2= STO 0 ALINUM(3) [COMPLETE LINK NO
8GFW LDX 0 TMSK(1)
8G^G ANDS 0 ASTATUS2(3)
8HF6 INCLINK
8HYQ BRN OPTR
8JDB # 6 ERROR CASES
8JY2 # 6A TIME-OUT
8KCL OTG2 CALL 6 SOFG [SET F.I.O ETC
8KX= BRN TIME
8LBW # 6B RESET
8LWG OTG3 CALL 6 SOFG
8MB6 BRN RESETA [RESET
8MTQ # 6C INOPERABLE
8N*B OTG4 SIPCM SI [SEQUENCE INTERRUPTED
8NT2 OTG5 CALL 6 SOFG
8P#L BRN NOP
8PS= # 6D ERROR DETECTED
8Q?W OTG6 CALL 6 SOFG
8QRG BRN WHOOPS
8R?6 MENDAREA 1023-0?,K9IPCONB
8RQQ #END
^^^^ ...30365723001200000000