IPBSTART867
(George Source)
Macros used: ACROSS, BXE, BXGE, CCERROR, CHAIN, CONIN, COOR1, COOR3, DCA, DERINGD, DISENGPER, DOWN, DSCA, EMPTY, ENRINGD, FON, FPUT, FREECORE, FWAIT, GEOERR, GEOPACK, GETACT, GPERI, GSPERI, HUNT2, HUNTW, ICT, IDFTPSCN, IDFTPUPD, INFORMX, JANON, JSBUSY, JSWOUT, JUNBUSY, JV7900, JWRONG, LGEOG, LINKSET, LOCK, MENDAREA, MFREEW, MHUNTW, MOVLONG, OFF, OUTBLOCN, OUTPACK, PAIR, READY, RESET, SEG, SEGENTRY, SETALLOC, SETNCORE, SETUPCORE, SETXCORE, UNLOCK, UP, VFREEW, YMOPOFF
- IPBSTART867.txt
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