{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: IPBSTART867)}}
====== IPBSTART867 ======
(George Source)
**Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:BXE|BXE]], [[george:macro:BXGE|BXGE]], [[george:macro:CCERROR|CCERROR]], [[george:macro:CHAIN|CHAIN]], [[george:macro:CONIN|CONIN]], [[george:macro:COOR1|COOR1]], [[george:macro:COOR3|COOR3]], [[george:macro:DCA|DCA]], [[george:macro:DERINGD|DERINGD]], [[george:macro:DISENGPER|DISENGPER]], [[george:macro:DOWN|DOWN]], [[george:macro:DSCA|DSCA]], [[george:macro:EMPTY|EMPTY]], [[george:macro:ENRINGD|ENRINGD]], [[george:macro:FON|FON]], [[george:macro:FPUT|FPUT]], [[george:macro:FREECORE|FREECORE]], [[george:macro:FWAIT|FWAIT]], [[george:macro:GEOERR|GEOERR]], [[george:macro:GEOPACK|GEOPACK]], [[george:macro:GETACT|GETACT]], [[george:macro:GPERI|GPERI]], [[george:macro:GSPERI|GSPERI]], [[george:macro:HUNT2|HUNT2]], [[george:macro:HUNTW|HUNTW]], [[george:macro:ICT|ICT]], [[george:macro:IDFTPSCN|IDFTPSCN]], [[george:macro:IDFTPUPD|IDFTPUPD]], [[george:macro:INFORMX|INFORMX]], [[george:macro:JANON|JANON]], [[george:macro:JSBUSY|JSBUSY]], [[george:macro:JSWOUT|JSWOUT]], [[george:macro:JUNBUSY|JUNBUSY]], [[george:macro:JV7900|JV7900]], [[george:macro:JWRONG|JWRONG]], [[george:macro:LGEOG|LGEOG]], [[george:macro:LINKSET|LINKSET]], [[george:macro:LOCK|LOCK]], [[george:macro:MENDAREA|MENDAREA]], [[george:macro:MFREEW|MFREEW]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:MOVLONG|MOVLONG]], [[george:macro:OFF|OFF]], [[george:macro:OUTBLOCN|OUTBLOCN]], [[george:macro:OUTPACK|OUTPACK]], [[george:macro:PAIR|PAIR]], [[george:macro:READY|READY]], [[george:macro:RESET|RESET]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETALLOC|SETALLOC]], [[george:macro:SETNCORE|SETNCORE]], [[george:macro:SETUPCORE|SETUPCORE]], [[george:macro:SETXCORE|SETXCORE]], [[george:macro:UNLOCK|UNLOCK]], [[george:macro:UP|UP]], [[george:macro:VFREEW|VFREEW]], [[george:macro:YMOPOFF|YMOPOFF]]
22FL ... SEG IPBSTART,,,,G269
22^= [ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD. 1982
23DW #LIS K0IPBSTART>K0IPB>K0ALLGEO
23NN ...#OPT G269 = 0
23YG ...#SKI G269&1
248# ...# WITH UGUG EDIT M269 (REMOTE LISTFILE DEBATCHERS)
24D6 #
24XQ SEGENTRY K2IPBSTART,SK2IPBSTART
25CB # K2IPBSTART IS ENTERED FROM SETIDF IF AN IDF FILE HAS JUST BEEN SET UP.
25X2 # IT INITIALISES THE IPB AND OBTAINS A CONFIGURATION REPORT, WHICH IT
26BL # PASSES DOWN TO THE IDF ROUTINES, FOR EVERY IPB THAT IS NOT WRONGED.
26W= #
27*W SEGENTRY K3IPBSTART,SK3IPBSTART
27TG # K3IPBSTART IS ENTERED FROM SETIDF IF AN IDF ALREADY EXISTED BEFORE EMS
28*6 # THE ACTION TAKEN IS THE SAME AS FOR K2IPBSTART, EXCEPT THAT THE LOCAL
28SQ # OPERATOR IS GIVEN THE OPTION OF HAVING A CONFIGURATION REPORT OR USING
29#B # THE INFORMATION ALREADY IN THE IDF. IN THE FORMER CASE THE IPB IS LEFT
29S2 # MOPPED OFF, OTHERWISE, IF THE DEVICE IS MOPPED ON IN THE IDF,
2=?L # A SCANNING ACTIVITY IS CREATED AND LEFT WAITING FOR THE END OF
2=R= # EARLY MORNING START. THE PROCEDURE IS REPEATED FOR EACH AVAILABLE IPB.
2?=W #
2?QG SEGENTRY K4IPBSTART,SK4IPBSTART
2#=6 # K4IPBSTART IS CODE USED BY THE INPUT ACTIVITY DURING START UP.
2#PQ # (I.E. DURING E.M.S. AND MOPPING ON).
2*9B #
2*P2 SEGENTRY K5IPBSTART,SK5IPBSTART
2B8L #
2BN= PAIR2 PAIR IPBSCAN,1
2C7W PAIR3 PAIR IPBIN,1
2CMG ...PAIR4 PAIR IPBSTARB,5
2D76 PAIR5 PAIR IPBSTARB,7
2DLQ PAIR6 PAIR IPBSTARB,11
2DWJ ...PAIR7 PAIR IPBSTARB,12
2F6B #
2FL2 #UNS CCERROR
2G5L (
2J46 SCCA SBX 5 FX1
2JHQ CCERROR 6,7
2K3B ADX 5 FX1
2KH2 EXIT 5 0
2L2L SCCE CALL 5 SCCA
2MFG BRN REDOK
2M^6 REJO
2NDQ LDN 6 CCREJECTOT
2NYB LDX 7 CPRW1(2)
2PD2 CALL 5 SCCA
2PXL BRN ZINOP
2QC= )
2QWW SEGINIT #400:0
2RBG #020:0
2RW6 SEGENTRY K50IPBSTART
2S*Q #HAL INPUSIZE+3,INPUSIZE+3
2STB #
2T*2 #UNS JPGLTER
2TSL SEGGT #02150000 [SUP. SEG. FOR GLOBAL TERMINATOR
2W#= SEGCONFIG #01140000
2WRW #
2X?G SEGCLOSE #01110000
2XR6 #
2Y=Q V7900SSSBLK [CONTENTS OF THE VIRTUAL 7900 SYSTEM SUPERVISORY SEGMENTS
2YQB [AMXOR/IOUT BLOCK
2^=2 0 [IMOPTY
2^PL #40000000 [IBSW
329= #03000000 ['INITIALISE' SS
32NW #HAL AVBUFFSIZE,AVBUFFSIZE[(INPUT AND OUTPUT BUFFER SIZES)
338G 4HGEO3 [(PROGRAM NAME)
33N6 #DEF VSSSBLKLEN = 0? - V7900SSSBLK
347Q VGTBLOCK [CONTAINS GLOBAL TERM FOR V7900
34MB 0 [IMOPTY
3572 #40000000 [IBSW
35LL #02150000 [SET GLOBAL TERM
366= #DEF VSSSGTERM = 0? - VGTBLOCK
36KW 0
375G #DEF VGTLEN = 0? - VGTBLOCK
37K6 #
384Q TYPEI #430:2
38JB TYPEO #430:#15
3942 #
39HL SATEM +100
3=3= TEN +10
3=GW XMASK #74777776 [MASK OUT BITS 4,5 & 23
3=N4 ...#SKI G269&1
3=T= ...ZZZZ 4HZZZZ
3?2G #
3?G6 ZJIPBERR +JIPBERR
3?^Q ZJINOP +HUINOP
3#6Y ... +JIPBCONF
3##6 ...ZJWARN +JIPBWARN
3#FB ZJMOP3 +JMOP3
3#^2 #UNS CRAMP
3*DL ZJMOP4 +JMOP4 [UNIT %A : MOP ON ABANDONED
3*Y= ZJCONFIG +JCONFIG
3BCW ZJUPFAIL +JUPFAIL
3BXG #UNS CRAMP
3CC6 ZJUPOK +JUPOK [UNIT %A : UPDATE SUCCESSFUL
3CWQ ...ZAHLOST +GSEMBAHLOST
3DBB XIN 4HIN
3DL8 ...XOUT 4HOU
3DW2 #
3F*L [
3FT= [ SUBROUTINE TO SAVE SPACE BY PUTTING GETACT MACRO IN SUBROUTINE
3G#W [
3GSG XGETACT
3H#6 SBX 7 FX1
3HRQ GETACT AMSCAN,IPBTYPE,1
3J?B ADX 7 FX1
3JR2 EXIT 7 0
3K=L [
3KQ= [ SUBROUTINE TO SAVE SPAVE
3L9W [ BY PUTTING SET UP OF AMXOR IOUT INTO A SUBROUTINE
3LPG [
3M96 XSETIOUT
3MNQ SBX 7 FX1
3N8B ... SETUPCORE 6,2,AMXOR,IOUT
3NN2 ADX 7 FX1
3P7L EXIT 7 0
3PM= [
3Q6W [ SUBROUTINE TO SAVE SPACE
3QLG [ PUTTING IDFTPSCN INTO A SUBROUTINE
3R66 [
3RKQ XIDFSCN
3S5B SBX 7 FX1
3SK2 IDFTPSCN XBI,XIDFA
3T4L SETALLOC
3TJ= ADN 7 1
3W3W XIDFA
3WHG ADX 7 FX1
3X36 EXIT 7 0
3XGQ #
3Y2B # SUBROUTINE TO TEST IF AN IPB IS A VIRTUAL 7900 AND IF TRUE TO
3YG2 # SET UP AN AMXOR/IOUT BLOCK CONTAINING THE SYSTEM SUPERVISORY
3Y^L # SEGMENTS 'INITIALISE' AND 'SET GLOBAL TERMINATOR' AND TO SET UP
3^F= # AN INPUT BUFFER FOR THE INPUT ACTIVITY .
3^YW # THE SYSTEM SUPERVISORIES AMXOR/IOUT BLOCK WILL EVENTUALLY BE
42DG # OUTPUT BY THE AMOP/IPBOUT ACTIVITY .
42Y6 # ON ENTRY AND EXIT X3 -> THE IPB INPUT ACTIVITY
43CQ # EXITS+1 IF IPB IS NOT A VIRTUAL 7900, ELSE EXITS+0
43XB # HAVING COORDINATED WITH X6 & X7 UNDEFINED
44C2 # LINK IN X5
44WL #
45B= SVIOUTINBF
45TW JV7900 CPPTR(3),SVSUPBLK
46*G EXIT 5 1 [IPB IS NOT A VIRTUAL 7900 : EXIT +1
46T6 SVSUPBLK
47#Q SBX 5 FX1
47SB LDN 6 VSSSBLKLEN
48#2 CALL 7 XSETIOUT
48RL LDN 6 V7900SSSBLK(1)
49?= LDN 7 A1(2)
49QW MOVE 6 VSSSBLKLEN
4==G LDN 6 VGTLEN
4=Q6 CALL 7 XSETIOUT
4?9Q LDN 6 VGTBLOCK(1)
4?PB LDN 7 A1(2)
4#92 MOVE 6 VGTLEN
4#NL LDX 6 GTERM [MOVE IN THE GLOBAL TERMINATOR CHARS
4*8= STO 6 A1+VSSSGTERM(2)
4*MW LDN 6 AVBUFFSIZE [SET UP INPUT BUFFER AND CHAIN
4B7G SETUPCORE 6,2,AMXOR,INBF,1 [AFTER THE INPUT ACTIVITY
4BM6 CHAIN 2,3
4C6Q ADX 5 FX1 [EXIT +0
4CLB EXIT 5 0
4D62 #
4DKL #
4F5= [
4FJW [ SUBROUTINE TO READ IN AND WRITE OUT
4G4G [
4GJ6 PERIN MHUNTW 3,AMXOR,INBF [ENTRY FOR INPUT PERI
4H3Q SEGENTRY K52IPBSTART
4HHB LDN 5 INPUSIZE+3 [LENGTH OF INPUT TRANSFER.
4J32 LOCK 3
4JGL ADN 3 A1
4K2= #SKI K6IPB>100-100
4KFW JSBUSY ,PGE
4K^G DSCA ,STO,3,CTSA
4LF6 DSCA ,STO,5,COUNT
4LYQ DSCA ,DLA,7,MODE
4MDB LDN 5 0 [SET INPUT SWITCH FOR WAIT1
4MY2 PERAG GSPERI ,2 [ISSUE READ
4NCL BRN PERY1
4NX= #
4PBW PEROT LOCK 3 [ENTRY FOR OUTPUT PERI
4PWG ADN 3 A1
4QB6 #SKI K6IPB>100-100
4QTQ (
4R*B JUNBUSY ,PFREE
4RT2 PGE GEOERR 1,CABUSY
4S#L )
4SS= PFREE DCA ,STO,3,CTSA
4T?W DCA ,STO,5,COUNT
4TRG DCA ,DLA,4,MODE
4W?6 JANON CPPTR(2),XIT61 [J. IF ANONYMOUS AS IF INOP
4WQQ PEROG GPERI ,2 [ISSUE WRITE.
4X=B PERY1 LDXC 0 CPRW1(2) [REPLY WORD.
4XQ2 BCC WAIT2 [J. IF ALREADY FINISHED.
4Y9L SLC 0 6
4YP= ANDN 0 3
4^8W BZE 0 WAIT1 [J. IF DIRECT RESPONSE "ACCEPTED".
4^NG ANDN 0 1
5286 BNZ 0 XIT61 [J. IF REJECTED - INOPERABLE.
52MQ EXIT 6 0 [REJECTED - OPERABLE.
537B WAIT1 BZE 5 WAIT2 [AMOP/IPBIN IS IN FIXED CHAPTER AREA
53M2 LOCK 2
546L WAIT2 SBX 6 FX1
54L= WAIT3 COOR1 [WAIT FOR NOTIFICATION OF END OF PERI
555W LDXC 0 CPRW1(2)
55KG BCS WAIT3
5656 SLC 0 5
56JQ ADX 6 1
574B BPZ 0 XIT61 [J. IF INOPERABLE.
57J2 ANDN 0 #13
583L BZE 0 XIT63 [J. IF TRANFER O.K.
58H= SRC 0 2
592W BNG 0 XIT61
59GG SRC 0 2
5=26 BNG 0 XIT62
5=FQ EXIT 6 0
5=^B XIT61 EXIT 6 1
5?F2 XIT62 EXIT 6 2
5?H4 ...XIT63
5?H= ... BZE 5 XIT63D
5?HD ... STOZ 5
5?HL ... LDX 2 IPBRING(2)
5?HS ... SBN 2 IPBRING
5?J2 ... BRN XIT63B
5?J8 ...XIT63D
5?JB ... LDX 5 XIN(1)
5?JJ ... LDX 0 0(3)
5?JQ ... DSA 0 5
5?K6 ... STOZ 0
5?M8 ...XIT63C
5?P= ... LDX 4 1(3)
5?R# ... BXE 4 XMSK1(1),XIT63A
5?TB ...XIT63B
5?TF ... HUNT2 2,AMXOR,AJOURN
5?TJ ... LDN 0 486
5?TM ... SBX 0 IPBCOUNT(2)
5?TQ ... BPZ 0 XJRN1
5?TT ... STOZ IPBCOUNT(2)
5?TY ...XJRN1
5?W3 ... BNZ 5 XJRN2
5?W6 ... LDX 5 XOUT(1)
5?W9 ...XJRN2
5?W# ... LDX 0 5
5?WC ... LDN 5 IPBDATA(2)
5?WG ... ADX 5 IPBCOUNT(2)
5?WK ... SMO 5
5?WN ... STO 0 0
5?WR ... LDX 0 1(3)
5?WW ... SMO 5
5?W^ ... STO 0 1
5?X4 ... LDN 0 2
5?X7 ... ADS 0 IPBCOUNT(2)
5?X= ... LDX 2 FX2
5?XD ... EXIT 6 3 [FOUND DATA
5?^G ...XIT63A
5#3J ... ADN 3 1 [LOOK AT NEXT WORD OF DATA
5#5L ... SBN 0 2
5#7N ... BZE 0 XIT63B [FOUND 3 NULLS,NEXT WD MUST BE DATA
5#9Q ... ADN 0 3 [RESTORE COUNT OF NULLS
5#?S ... BRN XIT63C
5#*W ...XMSK1 #01570000
5#D= #
5#XW ROUT1 SMO FX2
5*CG LDX 3 IPBRING
5*X6 SBN 3 IPBRING [GET ADDRESS OF OTHER ACTIVITY.
5BBQ ... STO 0 ACC5(3)
5BWB SBX 5 1 [DEDATUMISE OWN LINK.
5C3J ... MHUNTW 2,AMXOR,IOUT
5C8Q ... BRN ROUT25
5CB2 ROUT2 ADS 0 ACC5(3) [STEP (OR SET) LINK IN OTHER ACTIVITY
5CTL ...ROUT25
5D*= UNLOCK 2 [UNLOCK THE BUFFER
5DSW ROUT3 LDX 2 3
5F#G FPUT [ENLIST OTHER ACTIVITY.
5FS6 COOR1 [WAIT TO BE WOKEN.
5G?Q SK4IPBSTART
5GRB ADX 5 1 [EXIT TO LINK.
5H?2 EXIT 5 0
5HQL #
5J== # READ RUBBISH OR "READY" FOLLOWING INITIALISE COMMAND.
5JPW #
5K9G READY LDN 7 #12 [END READ MODE FOR READY.
5KP6 BRN RENM
5L8Q READR LDN 7 2 [READ MODE FOR RUBBISH
5LNB RENM CALL 6 PERIN [DO THE READ.
5M82 BRN TINOP [TREAT AS INOPERABLE IF REJECTED
5MML BRN TINOP [OR INOPERABLE
5N7= BRN TIMEO [TIMED OUT : TRY TWICE
5NLW ANDN 7 #10
5P6G BZE 7 REDOK [J. IF READ RUBBISH
5PL6 LDCT 6 #014 [J. IF MESSAGE IS "READY" TO WAKE
5Q5Q ERX 6 1(3) [UP THE E.M.S. ACTIVITY
5QKB BNZ 6 READY [NOT "READY" : REPEAT READ
5QM2 ... BCHX 3 £
5QNL ... LDCH 6 2(3)
5QQ= ... SBN 6 #45
5QRW ... BNZ 6 REDOK
5QTG ... ANDX 3 BITS22LS
5QX6 ... LDCH 6 3(3)
5QYQ ... SBN 6 22
5R2B ... BZE 6 RWARN
5R42 ... ADN 6 1
5R5L ... BNZ 6 REDOK
5R7= ... LDN 4 1
5R8W ... BRN TIN1
5R=G ...RWARN
5R#6 ... LDX 3 2
5R*Q ... LDX 4 ZJWARN(1)
5RCB ... CALL 5 OGE
5RF2 ...REDOK
5RGL ... MHUNTW 2,AMXOR,INBF
5RJL SMO FX2
5S4= LDX 3 IPBRING
5SHW LDN 0 1 [STEP LINK TO EXIT +1.
5T3G SBN 3 IPBRING
5TH6 BRN ROUT2 [WAKE E.M.S. ACTIVITY
5W2Q TIMEO ERX 7 GSIGN [TIMED OUT : TRY TWICE
5WGB BNG 7 PERAG [TRY AGAIN
5X22 BRN TINOP [T.O. TWICE : TREAT AS INOPERABLE
5XFL #UNS JPGLTER
5X^= (
5YDW # READ REPLY TO GLOBAL TERMINATOR SETTIMG
5YYG RGTAK LDN 0 4
5^D6 ORS 0 IPBSW(2) [SET GLOBAL TERMINATOR APPLICABLE
5^XQ LDN 7 #12 [MODE
62CB CALL 6 PERIN [READ
62X2 BRN REJOP [REJECTED OPERABLE
63BL BRN TINOP [INOPERABLE
63W= BRN PERAG [TIMED OUT - TRY AGAIN
64*W LDN 7 #141
64TG BRN XCHREP
65*6 )
65SQ #
66#B # READ CONFIGURATION REPORT FOLLOWING CONFIGURATION REQUEST.
66S2 #
67?L RCONF LDN 7 2
67R= CALL 6 PERIN [DO THE READ.
68=W BRN REJOP [REJECTED - OPERABLE.
68QG BRN TINOP [INOPERABLE.
69=6 BRN PERAG [TIMED OUT : TRY AGAIN
69PQ LDN 7 #154
6=9B XCHREP
6=P2 LDX 6 1(3)
6?8L SRL 6 12
6?N= ERX 6 7
6#7W SBN 7 #154
6#MG BZE 6 XCHB
6*76 ERN 6 #245$#141
6*LQ BNZ 6 SOSSS
6B6B LDX 0 2(3)
6BL2 SRL 0 12
6C5L SBN 0 #2114
6CK= BZE 7 XCHA
6D4W SBN 0 1
6DJG XCHA
6F46 BNZ 0 SOSSS
6FHQ BZE 7 REDOK
6G3B LDN 0 4
6GH2 ERS 0 IPBSW(2)
6H2L BRN REDOK
6HG= XCHB
6H^W BZE 7 XCONF
6JFG BRN REDOK
6J^6 SOSSS
6KDQ LDN 6 CCSSSWRONG
6KGN ... BZE 7 SOSST
6KJL ... LDX 7 1(3)
6KLJ ... CALL 5 SCCA
6KNG ... MHUNTW 3,AMXOR,INBF
6KQD ... ADN 3 A1
6KSB ... BRN TINOP
6KW# ...SOSST
6KYB LDX 7 1(3)
6LD2 BRN SCCE
6LXL XCONF
6MC= LDX 7 2(3)
6MWW #UNS CRAMP
6NBG (
6NW6 SBN 7 1
6P*Q BZE 7 REDOK [NULL CONFIGURATION REPORT
6PTB ADN 7 1 [RESET LENGTH OF REPORT
6Q*2 )
6QSL STOZ AWORK4(2) [CURRENT POSITION IN OUTPUT BLOCK.
773= LDN 4 2(3)
77GW SETUPCORE 7,1,IDF,IREPORT [SET UP BLOCK TO HOLD COMPLETE REPORT
782G NGX 3 CPRW1(2) [FIND LENGTH OF THIS MESSAGE.
78G6 SEGENTRY K51IPBSTART
78^Q ADN 3 INPUSIZE+1
79FB LDN 5 A1(1)
79^2 ANDN 3 #7777 [MASK OUT OPERABLE BIT IN CHARACTER 0
7=DL ADX 5 AWORK4(2) [CURRENT POSITION IN OUTPUT BLOCK.
7=Y= ADS 3 AWORK4(2) [UPDATE OUTPUT POINTER.
7?CW #SKI K6IPB>99$99
7?XG (
7#C6 BXGE 7 AWORK4(2),OKSIZ [J. IF MESSAGE < LENGTH ANNOUNCED.
7#WQ #UNS CCERROR
7*BB #SKI
7*W2 GEOERR 1,BIGREPRT
7B*L #UNS CCERROR
7BT= (
7C#W LDN 6 CCBIGREPORT
7CSG BRN SCCE [REPORT ERROR
7D#6 )
7DRQ OKSIZ
7F?B )
7FR2 MOVLONG 4,5,3
7G=L ... BXE 7 AWORK4(2),REPRT
7GQ= LDN 7 2
7H9W CALL 6 PERIN [READ MORE.
7HPG BRN REJOP [REJECTED - OPERABLE.
7J96 BRN SINOP [INOPERABLE.
7JNQ BRN PERAG [TIMED OUT : TRY AGAIN
7K8B LDCT 0 #40 [J. IF NOT CONTINUATION OF REPORT.
7KN2 ANDX 0 0(3)
7L7L BZE 0 NCONT
7LM= LDN 4 1(3) [SET POINTER FOR MOVE.
7M6W NGX 3 CPRW1(2) [FIND THE LENGTH OF THIS MESSAGE.
7MLG MHUNTW 1,IDF,IREPORT [RELOCATE THE OUTPUT BLOCK.
7N66 LDX 7 ALOGLEN(1) [DECLARED REPORT LENGTH
7NKQ BUX 3 K51IPBSTART
7P5B #UNS CCERROR
7PK2 #SKI
7Q4L REJOP GEOERR 1,REJECTED [TRANSFER REJECTED - OPERABLE.
7QJ= #UNS CCERROR
7R3W (
7RHG REJOP LDN 6 CCREJECTIN
7S36 LDX 7 CPRW1(2)
7SGQ BRN SCCE
7T2B )
7TG2 #UNS CCERROR
7T^L #SKI
7WF= NCONT GEOERR 1,CONFIG'N [CONFIGURATION REPORT < LENGTH GIVEN.
7WYW #UNS CCERROR
7XDG (
7XY6 NCONT LDN 6 CCNOCONTCR
7YCQ LDX 7 0(3)
7YXB BRN SCCE
7^C2 )
7^WL #
82B= #
82TW REPRT LDX 3 IPBRING(2) [RELOCATE THE "WRITING" ACTIVITY.
83*G SBN 3 IPBRING
83T6 CHAIN 1,3 [THE E.M.S. ACTIVITY & WAKE IT UP.
84#Q MHUNTW 2,AMXOR,INBF
85#2 LDN 0 2 [STEP LINK TO EXIT AT +2.
85RL BRN ROUT2
86?= #
86QW #UNS CCERROR
87=G #SKI
87Q6 SINOP MFREEW IDF,IREPORT [FREE THE PARTLY FILLED REPORT BLOCK.
889Q #UNS CCERROR
88PB (
8992 SINOP VFREEW IDF,IREPORT
89NL )
89WW ...TINOP
8=56 ... LDN 4 0
8=?B ...TIN1
8=FL ... MHUNTW 3,AMXOR,INBF
8=MW FREECORE 3 [AMXOR/INBF BLOCK
8?7G LDX 2 IPBRING(2) [FIND THE "WRITING" ACTIVITY.
8?M6 SBN 2 IPBRING
8?WY ... ADS 4 AWORK2(2)
8#6Q FPUT [SET IT GOING.
8#LB DERINGD IPBRING(2) [CLEAR THE RING.
8*62 EMPTY IPBRING(2) [RESET OUR RING ELEMENTS.
8*KL ZUNNO
8B5= NGS 1 CHAINADD(2) [MARK TO TELL BLANKET WE'RE ASLEEP.
8BJW DISENGPER [DISENGAGE THE IPB.
8C4G COOR1 [WAIT FOR RE-ENGAGEMENT.
8CJ6 #
8D3Q SK5IPBSTART
8DHB ... ACROSS IPBSTARB,5
8LWG #
8MB6 # ###########################################################
8MTQ #
8N*B # CODE ABOVE IS OBEYED IN AMOP/IPBIN ; BELOW IN EMS ACTIVITY.
8NT2 #
8P#L # ###########################################################
8PS= #
8Q?W # SUBROUTINE TO ISSUE "INITIALISE" COMMAND AND CHECK THE REPLY (IF ANY).
8QRG #
8R?6 START SBX 4 FX1
8RQQ SEGENTRY K53IPBSTART
8S=B LDN 5 INPUSIZE+3 [SET UP INPUT BUFFER AND CHAIN
8SQ2 SETUPCORE 5,1,AMXOR,INBF,1 [AFTER THE INPUT ACTIVITY
8T9L STO 4 AWORK3(2) [SAVE LINK.
8TFD ... STOZ AWORK2(2)
8TP= CHAIN 1,3
8W8W ENRINGD IPBRING(2),IPBRING(3)[RING IN THE IPBIN ACTIVITY(->X3)
8WNG TINIT MHUNTW 3,AMXOR,IOUT
8X86 LDN 4 #15 [END WRITE CANCEL READ MODE
8XMQ LDN 5 3 [WORD COUNT
8Y7B CALL 6 PEROT [OUTPUT THE "INITIALISE" MESSAGE
8YM2 BRN RUBSH [J. TO READ RUBBISH IF REJECTED.
8^6L BRN ZINOP [INOPERABLE
8^L= BRN PEROG [REPEAT IF TIMED OUT
925W JANON ,ZINOP [OPERABLE BUT ANON UNIT NO SO
9356 LDN 0 READY [SET LINK TO READ "READY".
93JQ CALL 5 ROUT1 [WAKE UP INPUT ACTIVITY & AWAIT REPLY
944B BRN VINOP [J. IF IT WENT INOPERABLE DURING READ
94J2 #UNS JPGLTER
953L (
95H= MHUNTW 3,AMXOR,IOUT
962W LDX 5 SEGGT(1) [GLOBAL TERMINATOR SETTING
96GG STO 5 A1+1(3)
9726 LDX 5 GTERM
97FQ STO 5 A1+2(3)
97^B LDN 5 3 [COUNT
98F2 LDN 4 #15 [MODE
98YL CALL 6 PEROT [SEND EEGMENT
99D= #UNS CCERROR
99XW #SKI
9=CG BRN REJOP [REJECTED OPERABLE
9=X6 #UNS CCERROR
9?BQ (
9?WB BRN REJO [REJECTED OPERABLE
9#B2 )
9#TL BRN ZINOP [INOPERABLE
9**= BRN PEROG [TIMED
9B#G LDN 0 RGTAK [LINK FOR INPUT ACTIVITY
9BS6 CALL 5 ROUT1 [SWITCH ACTIVITIES
9C?Q BRN VINOP [INOPERABLE
9CRB )
9D?2 SMO AWORK3(2) [OTHERWISE EXIT TO THE LINK + 1.
9DQL EXIT 1 1
9F== #
9FPW ...RUBSH
9G9G LDN 0 READR [DOING INITIALISE AGAIN.
9GP6 CALL 5 ROUT1 [WAIT FOR READ: RETURN IS TO "TINIT".
9H8Q BRN VINOP [INOP DURING READ
9HNB BRN TINIT [READ OK : TRY "INITIALISE" AGAIN
9J82 #
9JML # SUBROUTINE TO INFORM CONSOLE MESSAGE ; IPB GEOG NO IN X6 ;
9K7= # MESSAGE ADDRESS IN X4 ; CALL ON X5
9KLW #
9L6G OGE LGEOG CPPTR(3),6 [GET GEOG NO.
9LL6 OMES SBX 5 FX1
9M5Q GEOPACK 6,6,6
9MKB OUTPACK 6,1,GEOPER
9N52 INFORMX ,4,1
9NJL ADX 5 FX1
9P4= EXIT 5 0
9PHW #
9Q3G # SUBROUTINE TO ISSUE "CLOSE DOWN" COMMAND TO THE DCP.
9QH6 #
9R2Q SHUT SBX 6 1
9RGB STO 6 AWORK3(2) [SAVE LINK.
9S22 BRN OFF
9SFL #
9S^= #
9TDW # SUBROUTINE TO ISSUE "CONFIGURATION REQUEST", USING THE REPLY TO UPDATE
9TYG # THE IDF, AND THEN CLOSE THE DCP. V IS SET ON EXIT IF REPORT OBTAINED.
9WD6 #
9WXQ UPDAT SBX 6 1
9XCB STO 6 AWORK3(2) [SAVE LINK.
9XX2 MHUNTW 3,AMXOR,IOUT
9YBL LDX 5 SEGCONFIG(1) [SET UP THE CONFIGURATION REQUEST.
9YW= STO 5 A1+1(3)
9^*W LDN 5 2 [WORD COUNT.
9^TG LDN 4 #15 [MODE.
=2*6 CALL 6 PEROT [AND PERI IT TO THE IPB.
=2SQ #UNS CCERROR
=3#B #SKI
=3S2 BRN REJOP [REJECTED - OPERABLE.
=4?L #UNS CCERROR
=4R= (
=5=W BRN REJO
=5QG )
=6=6 BRN ZINOP [J. IF INOPERABLE.
=6PQ BRN PEROG [TIMED OUT
=7P2 LDN 0 RCONF [SET LINK TO READ CONFIG. REPORT.
=88L CALL 5 ROUT1 [WAKE UP INPUT ACTIVITY & AWAIT REPLY
=8N= BRN VINOP [J. IF IT WENT INOPERABLE DURING READ
=97W BRN OFF [J. IF CONFIG. REPORT NOT FORTHCOMING
=9MG LDX 0 GSIGN [SET B0 IN LINK (SETS V ON EXIT).
==76 ORS 0 AWORK3(2)
==LQ IDFTPUPD XBI [PASS THE REPORT TO THE IDF
==N^ ... SEGENTRY K91IPBSTART
==R8 ... LDN 0 AHRETAIN
==TC ... BZE 0 XNORE
==XL ... LDX 4 ZAHLOST(1)
==^T ... CALL 5 OGE
=?44 ...XNORE
=?6B #
=?L2 #UNS CRAMP<1$1
=#5L OFF MHUNTW 3,AMXOR,IOUT [RELOCATE THE OUTPUT BUFFER.
=#K= #UNS CRAMP
=*4W (
=*JG OFF LDX 0 AWORK4(2) [TEST FOR CLOSE DOWN SUPPRESSION FLAG
=B46 STOC 0 AWORK4(2) [LEAVING IT UNSET(NO INOPERABILITY)
=BHQ BCS NBACK [WAS SET : SKIP CLOSE DOWN & EXIT
=C3B MHUNTW 3,AMXOR,IOUT [RELOCATE THE OUTPUT BUFFER
=CH2 )
=D2L LDX 5 SEGCLOSE(1) [SET UP THE CLOSE DOWN MESSAGE.
=DG= STO 5 A1+1(3)
=D^W LDN 4 #15 [MODE
=FFG LDN 5 2 [WORD COUNT
=F^6 CALL 6 PEROT [OUTPUT THE CLOSE DOWN MESSAGE.
=GDQ #UNS CCERROR
=GYB #SKI
=HD2 BRN REJOP [REJECTED - OPERABLE.
=HXL #UNS CCERROR
=JC= (
=JWW BRN REJO
=KBG )
=KW6 BRN ZINOP [J. IF INOPERABLE.
=L*Q BRN PEROG [TIMED OUT
=LTB CALL 6 UINOP [CLEAR DOWN THE IPBIN.
=M*2 STOZ CHAINADD(3) [UNSET "WAKE ME UP" MARKER.
=MSL #UNS CRAMP<1$1
=N#= ADX 1 AWORK3(2)
=NRW #UNS CRAMP
=P?G NBACK ADX 1 AWORK3(2)
=PR6 EXIT 1 0
=Q=Q #
=QQB UINOP SBN 3 A1
=R=2 UNLOCK 3 [OUTPUT BUFFER.
=RPL LDX 3 IPBRING(2)
=S9= SBN 3 IPBRING
=SNW ... LINKSET 3,PAIR4(1)
=T8G HUNT2 1,AMXOR,INBF,3 [FREE THE INPUT BUFFER.
=TN6 FREECORE 1
=W7Q DERINGD IPBRING(2) [CLEAR THE RING.
=WMB EMPTY IPBRING(2) [RESET OUR RING ELEMENTS.
=X72 NGS 1 CHAINADD(3) [MARK IPBIN ASLEEP FOR BLANKET.
=XLL DISENGPER [DISENGAGE THE IPB.
=Y6= EXIT 6 0
=YKW #
=^5G ZINOP CALL 6 UINOP [RESET THE IPBIN.
=^*# ...VINOP
=^K6 #UNS CRAMP
?24Q (
?2JB ... LDCT 0 #400
?342 ANDX 0 AWORK4(2) [I.E. K9 ENTRY,UNSET "WAKE ME UP"
?3HL ORS 0 CHAINADD(3) [MARKER IF SET
?43= ERS 0 CHAINADD(3)
?8XG )
?B?B ADX 1 AWORK3(2)
?BR2 EXIT 1 0
?C=L #
?CQ= #
?D9W # SUBROUTINE TO SET UP AN AMXOR/ADEVS BLOCK OF THE REQUIRED LENGTH
?DPG # AND CHAIN IT AFTER THE AMOP/IPBIN ACTIVITY.
?F96 #
?FNQ NDEVS SBX 4 1 [RELATIVISE LINK.
?G8B MHUNTW 1,IDF,IDENTIFIERS
?GN2 LDX 5 ALOGLEN(1)
?GNF ...#SKI G269&1
?GNY ...(
?GPC ... SBN 5 1 [ NO. OF IDENTIFIERS
?GPW ... LDN 7 0 [ COUNT OF *LP'S
?GQ* ...XCT1 SMO 5
?GQS ... LDEX 0 A1(1)
?GR? ... SBN 0 3 [ *LP IDENT.
?GRQ ... BNZ 0 XCT2
?GS9 ... ADN 7 2
?GSN ...XCT2 BCT 5 XCT1
?GT7 ...# NOW SET UP NEW BLOCK TYPE IUSER/BATCHC WITH A TWO-WORD
?GTL ...# ... ENTRY FOR EACH REMOTE LP: IDENTIFIER,DEBATCHER WORD
?GW5 ... SETUPCORE 7,2,IUSER,BATCHC
?GWJ ... LDX 6 ZZZZ(1)
?GX3 ... MHUNTW 1,IDF,IDENTIFIERS
?GXG ... LDX 5 ALOGLEN(1)
?GX^ ... SBN 5 1
?GYD ...XSAT1 SMO 5
?GYX ... LDEX 0 A1(1)
?G^B ... SBN 0 3
?G^T ... BNZ 0 XSAT2
?H2# ... LDX 0 5
?H2R ... ADX 0 A1(1) [ IDENTIFIER NO.
?H3= ... STO 0 A1(2)
?H3P ... STO 6 A1+1(2) [ INITIALIZE ZZZZ
?H48 ... ADN 2 2
?H4M ...XSAT2 BCT 5 XSAT1
?H56 ... SBX 2 7 [ RESET TO START OF BLOCK
?H5K ... LDX 5 ALOGLEN(1) [ REINSTATE X5
?H64 ... CHAIN 2,3 [ ONTO IPBIN ACTIVITY
?H6H ...)
?H7L LDX 6 5
?HM= SLL 5 2 [SET UP THE IDENTIFIER ROUTING BLOCK.
?J6W SETXCORE 5,1,AMXOR,ADEVS,,6,4
?JLG LDCT 5 #40 [SET THE "TO BE SCANNED" BIT.
?K66 ADX 5 BIT9 [SET "CLOSED" BIT
?KKQ LDX 2 1
?L5B NGN 7 A1 [INITIALISE THE ROUTING BLOCK.
?LK2 RESET STOZ A1+BPTR(2)
?M4L STO 7 A1+BSTART(2)
?MJ= STO 5 A1+FOURTHWD(2)
?N3W ADN 2 4
?NHG SBN 7 4
?P36 BCT 6 RESET
?PGQ MHUNTW 2,IDF,IDENTIFIERS
?Q2B LDX 0 A1(2)
?QG2 STO 0 A1+FOURTHWD(1) [STORE LOWEST IDENTIFIER NO.-1
?Q^L CHAIN 1,3 [CHAIN AFTER THE INPUT ACTIVITY.
?RF= SMO 4
?RYW EXIT 1 0 [EXIT TO LINK.
?SDG #
?SY6 #
?TCQ SK2IPBSTART
?TXB LDN 5 0 [SET SWITCH - CONFIG. REPORT REQUIRED
?WC2 BRN SWICH
?WWL #
?XB= #
?XTW SK3IPBSTART
?Y*G LDN 5 1 [SET SWITCH - ASK OPERATOR ABOUT CONF
?YT6 SWICH
#692 STOZ AWORK4(2)
#6NL LDN 6 3
#78= CALL 7 XSETIOUT [SET UP OUTPUT BUFFER
#7MW LDX 7 5
#87G LDN 3 IPBADDR-IPBL
#8M6 SMO FX2
#96Q STO 3 AWORK1
#9LB BRN NEXT1
#=62 NEXT0 MHUNTW 2,AMXOR,IOUT [RELOCATE THE OUTPUT BUFFER.
#=KL NEXT1 LDX 1 FX1 [SET UP "INITIALISE" MESSAGE
#?5= LDN 4 SEGINIT(1)
#?JW LDN 5 A1(2)
##4G MOVE 4 3
##J6 LDX 2 FX2
#*3Q NEXT2 SMO AWORK1(2)
#*HB LDX 3 IPBL [GET NEXT IPB ACTIVITY.
#B32 BZE 3 OUT [J. OUT IF NONE.
#BGL STO 3 AWORK1(2) [REMEMBER FOR NEXT PASS.
#BH= ... LDCT 0 2
#BHW ... ANDX 0 IPBSW(3)
#BJG ... BNZ 0 NEXT2
#BK9 ... SETNCORE 499,2,AMXOR,AJOURN
#BMS ... STOZ IPBCOUNT(2)
#BQC ... LDX 0 CPPTR(3)
#BT2 ... STO 0 IPBDATA+497(2)
#BXK ... CHAIN 2,3
#C2= JWRONG CPPTR(3),NEXT2
#CFW JV7900 CPPTR(3),NEXT2 [IGNORE VIRTUAL 7900'S
#C^G [AS THE IDF ALREADY KNOWS THEIR CONF.
#DF6 JSWOUT CPPTR(3),NEXT2 [J. UNIT IS SWITCHED OUT
#DYQ LDX 0 CPPTR(3) [SET UP THE DEVICE LIST POINTER
#FDB STO 0 CPPTR(2) [IN THE EMS ACTIVITY.
#FY2 CALL 4 START [INITIALISE THE DCP.
#GCL BRN TNOPL
#GX= LDX 0 IPBSW(3)
#HBW ANDX 0 BIT10
#HWG BNZ 0 XOPUN [J. NOT IN IDF
#JB6 BZE 7 WASK2 [J. IF CONFIG. REPORT MANDATORY.
#JTQ REPQN SMO FX1
#K*B LDX 4 ZJCONFIG [IS A CONFIGURATION REPORT REQUIRED
#KT2 CALL 5 OGE
#L#L #SKI EMSJNL<1$1
#LS= (
#M?W FON #50
#MRG COOR3 #53 [WAIT FOR END OF TRANSFER
#N?6 )
#NQQ CONIN
#P=B HUNTW 2,CONBUFF,EMSIN [IS THERE A REPLY MESSAGE BLOCK.
#PQ2 LDX 1 2 [SAVE ADDRESS OF BLOCK.
#Q9L LDX 0 A1(2) [CHARACTER COUNT.
#QP= NXTCH LDCH 5 A1+1(2) [GET NEXT CHARACTER
#R8W SBN 5 #20
#RNG BNZ 5 TESTN [J. IF NOT SPACE CHARACTER
#S86 BCHX 2 £ [STEP POINTER.
#SMQ BCT 0 NXTCH [J. IF MORE CHARACTERS.
#T7B FREECORE 1 [FREE THE MESSAGE BLOCK.
#TM2 BRN REPQN [REPEAT QUERY IF MESSAGE ALL SPACES.
#W6L TESTN FREECORE 1 [FREE THE MESSAGE BLOCK.
#WL= SBN 5 #56-#20
#X5W BZE 5 NOUPD [J. IF REPLY "N"
#XKG SBN 5 #71-#56
#Y56 BNZ 5 REPQN [J. TO REPEAT IF REPLY NOT "Y"
#YJQ YMOPOFF XBI,WASK2 [MOP UNIT OFF ; MESSAGE IF WAS ON
#^4B OUTBLOCN 4
#^J2 LDN 4 0 [VALUE OF 'OFF' SUBMESSAGE
*23L OUTPACK 4,1,SWITCH
*2H= LDX 4 ZJMOP3(1) [MOP OFF COMPLETED
*32W CALL 5 OGE
*3GG WASK2 CALL 6 UPDAT [GET THE CONFIGURATION REPORT.
*426 LDX 1 FX1
*4FQ LDN 0 0
*4^B ADSC 0 CHAINADD(3) [IN CASE INOP DURING UPDAT
*5F2 BVSR NEXT0 [J. IF EVERYTHING WENT OK.
*5YL LDX 4 ZJUPFAIL(1) [UPDATE FAILED
*6D= CALL 5 OGE
*6XW BRN NEXT0
*7CG [
*7X6 [ AN IPB UNIT WITH BIT 10 SET HAS BECOME OPERABLE SO INFORMATION
*8BQ [ ABOUT THE UNIT MUST BE INSERTED INTO THE IDF
*8WB [
*9B2 XOPUN
*9TL DOWN IDFCHK,4
*=*= #
*=SW TNOPL
*?#G LDX 0 IPBSW(3)
*?S6 ANDX 0 BIT10
*#?Q BNZ 0 NEXT2 [BIT 10 IN IPBSW INDICATES UNIT NOT
*#RB [DEFINED IN THE IDF BECAUSE ANON
**?2 CALL 7 XIDFSCN
**QL BRN TOFF
*B== LDX 5 CACT
*BPW LDX 3 FPTR(2)
*C9G SBN 5 1
*CP6 SFRE TXL 5 ATYPE(3)
*CRP ... BCC SFR1
*CW# ... CALL 7 XGETACT
*CYX ... LDX 7 CPPTR(2)
*D3G ... LDX 0 AWORK2(2)
*D65 ... LDX 2 BPTR(2)
*D8N ... STO 7 CPPTR(2)
*D?? ... STO 0 AWORK2(2)
*D*W ... LINKSET 2,PAIR7(1)
*DDF ... FPUT
*DH4 ... BRN NEXT2
*DKM ...SFR1
*DNB LDCH 0 ATYPE(3)
*F82 SBN 0 IDF/64
*FML LDX 3 FPTR(3)
*G7= BNZ 0 SFRE
*GLW FREECORE BPTR(3) [SURPLUS IDF BLOCK
*H6G BRN SFRE
*H=C ...TOFF
*HB# ... SMO FX2
*HG9 ... LDX 1 AWORK2
*HL6 ... ADX 1 FX1
*HQ3 ... LDX 4 ZJINOP(1)
*HTY ... CALL 5 OGE
*H^T ... LDN 0 0
*J5Q ADSC 0 CHAINADD(3) [MOPPED OFF : IGNORE ENGAGE BUTTONS
*JKB BRN NEXT2
*K52 #
*KJL NOMOP CALL 6 SHUT [CLOSE DOWN THE DCP.
*L4= LDX 1 FX1
*LHW BRN NEXT0 [J. FOR NEXT UNIT.
*M3G #
*MH6 NOUPD
*N2Q CALL 7 XIDFSCN
*NGB BRN NOMOP
*P22 CALL 7 XGETACT [GET SCANNING ACTIVITY
*PFL LDX 7 CPPTR(2)
*P^= LDX 2 BPTR(2)
*QDW LINKSET 2,PAIR2(1) [SET LINK TO K1IPBSCAN
*QYG STO 7 CPPTR(2) [ADDRESS OF IPB DEVICE LIST.
*RD6 LINKSET 3,PAIR3(1) [SET IPBIN'S LINK TO K1IPBIN
*RXQ STO 3 ACC3(2) [SAVE ADDRESS OF IPBIN.
*SCB FWAIT #54 [SET WAITING FOR THE END OF E.M.S.
*SX2 LDX 2 3 [SET IPBIN WAITING FOR THE END OF EMS
*TBL FWAIT #54
*TW= CALL 4 NDEVS [SET UP THE ROUTING BLOCK.
*W*W #SKI ICT
*WTG FON ADEVLIN [START ACTIVITIES WAITING FOR ADEVS
*X*6 LDX 1 2 [PASS THE IDF INFO. BLOCKS TO
*XSQ NXTS LDX 1 FPTR(1) [THE SCANNING ACTIVITY.
*Y#B LDCH 0 ATYPE(1)
*YS2 SBN 0 IDF/64
*^?L BNZ 0 NIDF [J. IF NOT IDF TYPE BLOCK.
*^R= LDX 2 1 [OTHERWISE REMEMBER THE ADDRESS.
B2=W NIDF SBN 0 GENERAL-IDF/64
B2QG BNG 0 NXTS [J. IF NOT ACTIVITY TYPE.
B3=6 CHAIN FX2,2 [RECHAIN THE CURRENT ACTIVITY.
B3PQ DERINGD IPBRING(2) [DISCONNECT AMOP FROM EMS ACTIVITY
B49B BRN NEXT0 [J. FOR NEXT UNIT
B4P2 #
B58L #
B5N= OUT MFREEW AMXOR,IOUT [FREE THE OUTPUT BUFFER.
B67W STOZ CPPTR(2) [CLEAR OUT THE DEVICE LIST POINTER.
B6MG UP [RETURN TO SETUP.
B776 XBI GEOERR 1,BREAKIN! [CANT HAVE BREAK-IN
B7LQ MENDAREA 50,K99IPBSTART
B86B #END
^^^^ ...500676350014