22FL ...#SEG UNPLUG850 [DEK BEASLEY :CENT 22KH ...[ 22PD ...[ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1983 22T* ...[ 22^= #OPT K0UNPLUG=0 23DW #LIS K0UNPLUG>K0ALLGEO>K0LLS 23YG 8HUNPLUG 24D6 # 24XQ # THIS SEGMENT IMPLEMENTS THE UNPLUG,NOTBUSY,UNPLUGRT AND UNPLUGRT 25CB # 'PUC' MACROS 25X2 # 26BL # THE ENTRY POINTS ARE AS FOLLOWS: 26W= # 27*W # K1,K2 : THE NOTBUSY MACRO,WHICH MERELY UNBUSIES A PROGRAM'S 27TG # PERIPHERALS 28*6 # K3 : THE UNPLUGRT MACRO 28SQ # K4 : THE UNPLUGRT 'PUC' MACRO 29#B # K5 : ENTRY TO UNPLUG FOR SPEC SWAPOUT NO SFWT REQUIRED 29S2 # K7 : ENTRY TO UNPLUG FOLLOWED BY SWAPOUT(IN PCA) 2=?L # K8,K18,K28,K38 : THE UNPLUG MACRO 2=R= # K9 : ENTRY TO UNBUSY AND UNPLUG FOR MOVE 2?=W # 2?QG SEGENTRY K2UNPLUG,XX2U 2#=6 SEGENTRY K3UNPLUG,XX3U 2#PQ SEGENTRY K4UNPLUG,XX4U 2*9B SEGENTRY K5UNPLUG,XX5U 2*P2 SEGENTRY K7UNPLUG,XX7U 2B8L SEGENTRY K8UNPLUG,XX8U 2BN= SEGENTRY K18UNPLUG,XX18U 2C7W SEGENTRY K28UNPLUG,XX28U 2CMG SEGENTRY K38UNPLUG,XX38U 2D76 SEGENTRY K9UNPLUG,XX9U 2DLQ SEGENTRY K10UNPLUG,XX10U 2F6B [ 2FL2 [ 2G5L [ BITS TO DEFINE TYPE OF UNPLUG,HOPEFULLY MNEMONIC 2GK= [ 2H4W BITDEFS AWORK1,0,RETURN,NOTBUSY,STEPBAC,NOSFWT,SWAPOUT,REPLY 2HJG BITDEFS AWORK1,6,TIMEOUT 2J46 2JHQ [ 2K3B [ 2KH2 # 2L2L # 2LG= TON +100 2L^W PK9 +K9 2MFG THOUSK9 1000/K9 2M^6 P17 PAIR PERFAIL,2 [FOR ON-LINE PERIPHERAL FAILURE 2NDQ P18 PAIR EVENTS,5 [FOR PROGRAM TIMEUP 2NYB SPECLINK 2PXL LINK SWAP,4 2RBG SWAPLINK 2T*2 LINK SWAP,2 2TSL # 2W#= # 2WRW UGEO3 MELUNRING 3 2X?G #SKI K6LLSTEST>499-499 2XR6 ( 2Y=Q LDX 0 ABW1(3) 2YQB ADX 0 ABW2(3) 2^=2 ADX 0 ABW3(3) 2^PL ADX 0 ABW4(3) 329= BNZ 0 (GEOERR) [QUICK CHECK THAT DERINGED 32NW ) 338G EXIT 4 0 33N6 347Q # 34MB # SUBROUTINE TO SET FAIR WAIT TIME AND TIME LAST RUN,X3-> JOBBLOCK 3572 # LINK X0,USES X4,5,6,7,ON EXIT X1=FX1 X2=FX2 35LL # 35P9 ...[ WITH IGNOREFWT RESTORE TIME MACRO SWAITCHED ON (WHICH IS AALSO 35RS ...[ THE DEFAULT); JCFWT IS SET TO ZERO RATHER THAN CALCULATED(WHICH 35WC ...[ IMPLIES FWT NOT USED WHEN SELECTING PROGRAM TO SWAP IN) UNLESS 35^2 ...[ HLS IS OFF FOR TYPE OF JOB WHOSE PROGRAM IS BEING UNPLUGGED AND 363K ...[ CPIFORTIMES IS IN USE. 366= # 36KW SFWT STO 0 GEN0 375G LDX 1 FX1 37K6 LDX 5 HTIMES(3) 384Q ADN 5 K9-1 [ROUND UP 38JB DVS 4 PK9(1) [X5 HAS RESULT 3942 LDX 7 JCPI(3) 3?7= ... JBS XBACK,3,JBOFFL [J IF BACKGROUND JOB 3?7D ... SEGENTRY K44UNPLUG 3?7S ... JBS XK42,,HLSMFS 3?9L ... LDX 7 IMOPCPI [HLS OFF FOR MOP 3?=S ... LDN 2 0 3?#2 ... BRN MOP 3?*8 ...XBACK 3?*B ... SEGENTRY K45UNPLUG 3?*Q ... JBS XK42,,HLSBFS 3?CJ ... LDX 7 IMOPCPI [HLS OFF FOR BACKGROUND 3?G6 LDN 2 1 3?^Q SBN 7 100 3#FB NGX 7 7 [=100-MOPCPI 3#^2 MOP 3*4X ... SEGENTRY K40UNPLUG 3*#P ... BSOFF CPIBIT,XK42 [J IF CPIFORTIMES NOT IN USE 3*DL DVS 6 HLSCOUNT(2) 3*Y= LDX 6 7 [ MAKE FRACTION 3BCW LDN 7 0 3BXG DVD 6 TON(1) 3C25 ... SEGENTRY K41UNPLUG 3C7? ...ONHLS BXGE 5 7,XK42 3CWQ ... LDCH 0 APROCNO [NO OF PROCESSORS 3DBB ... DVS 4 0 [> 1 PROCESSOR,CPI MULTIPLE EFFECTI 3DW2 ... [DIVIDEND + QUOTIENT IN X5 3FT= ONE STO 7 JCPI(3) 3FWH ... SEGENTRY K42UNPLUG 3G2B ...XK42 3G3M ... NULL 3G4Y ... NULL 3G69 ... LDN 6 0 [SET FWT = 0 TO IGNORE 3HRQ MEET STO 6 JCFWT(3) [SET FAIR WAITING TIME 3J?B LDX 0 APROCTIME 3JR2 STO 0 JCTLR(3) [AND TIME LAST RUN 3K=L LDX 2 FX2 3KQ= BRN (GEN0) 3L24 ... SEGENTRY K43UNPLUG 3L9W SMALL LDX 6 5 3LPG LDX 5 HOLDUP [ADJUST BY HOLDUP 3M96 MPA 5 THOUSK9(1) 3MNQ BRN MEET 3N8B # 3NN2 # UNPLUG THE PROGRAM WHOSE JOB BLOCK ADDRESS IS IN X3 ON ENTR 3P7L # LINK X7.NO COORDINATION.ON EXIT,X1=FX1,X2=FX2,X3 IS UNCHANGED. 3PM= # OTHER ACCUMULATORS ARE DESTROYED. 3Q6W # 3QLG SUNPLUG1 3R66 LDX 5 3 [STORE JOB BLOCK ADDR 3RKQ FPCAJO 3 3S5B PCATEST 3,NORMAL,TP,PUC 3SK2 TP FINDPUC 3,3 3T4L PUC CALL 4 UGEO3 [DERIND PUC 3TJ= FINDTP 3,3 3W3W NORMAL 3WHG CALL 4 UGEO3 [DERING TP/NORMAL 3X36 XM4 3XGQ TRACE JOBNO(3),UNPLUGGD 3Y2B LDX 3 5 [RESTORE JOBLOCK ADDR 3YG2 EXIT 7 0 3Y^L # 3^F= # 3^YW # SUBROUTINE TO UNLOCK THE PRB AND ANY OLPAS.LINK X7.ON EXIT,X1=FX1, 42DG # X2=FX2,ALL OTHER ACCUMULATORS ARE DESTROYED. 42Y6 # 43CQ SUNPLUG2 43XB LDX 5 3 [PRESERVE JOB BLOCK ADDR 44C2 FPCAJO 3 [FIND PCA 44WL LDX 2 3 45B= HUNT2 1,APERI,APERIRES,3 [X1 ->PRB 45TW PCATEST 3,NORM,TP1,PUC1 46*G TP1 FINDPUC 2,2 [X2 ->PUC 46T6 PUC1 LDN 0 A1(1) 47#Q SBS 0 APRB(2) [ADJUST PUCS PRB PTR 47SB FINDTP 2,3 [X3 -> TP 48#2 NORM UNLOCK 1 [UNLOCK PRB 48RL BRN PUN3 48^W ...PUN2 4986 ...#UNS CAFSINT 49BB ... JCAFSBSY 3,PUN3 [OMIT UNLOCK FOR BUSY CAFS CHANNEL 49JL ... UNLOCK 3 49QW PUN3 LDX 3 ACTRING(3) 4==G SBN 3 ACTRING 4=Q6 LDCH 0 ATYPE(3) 4?9Q SBN 0 AOLPT/64 4?PB BZE 0 PUN2 [UNLOCK ANY OLPAS 4?^8 ... LDX 3 5 [RELOAD JOB BLOCK ADDR. 4#92 EXIT 7 0 4#NL # 4*8= # 4*MW # ROUTINE TO JBUSY AN ONLINE PERIPHERAL.ENTERED WITH X4 -> DEVICE 4B7G ...# LIST.X6 IS LINK.DOES JBUSY AND EXITS 0 IF BUSY.IF FAILED,EXIT 1 IS 4BM6 # OBEYED.EXIT 2 IS OBEYED IF THE 4C6Q # PERIPHERAL IS NOT BUSY AND HAS NOT FAILED. 4CLB # NO COORDINATION. ON EXIT, X1=FX1,X2=FX2;X0,X5,X6 ARE DESTROY 4D62 # 4DKL UNBUSY 4F5= LDX 1 FX1 4FJW LDX 2 FX2 4G4G ... JBUSY 4,(6) [EXIT 0 IF BUSY 4GJ6 ... JSBUSY 4,(6) 4H3Q ... ADN 6 1 4HHB ... JFAIL 4,(6) [EXIT 1 IF FAILED 4J32 EXIT 6 1 [EXIT 2 IF OK 4JGL # 4K2= # 6=R= ...[ SUBROUTINE TO DECANT PROGRAM TIMERS, CONVERT TO MILLISECONDS,ACCUMULAT 6=RS ...[ AND UPDATE TIME USED FOR EACH MEMBER. 6=SB ...[ X1 -> PCA, LINK X7 (MOVED), [ X1 -> PCA, LINK X7 (MOVED), X4,X5,X6,X7 6=SY ...TIMERS 6=TG ... STO 7 GEN2 [REMEMBER LINK 6=W4 ... [STARTING AT LAST MEMBER 6=WL ... LDN 7 ATM4-ATM1 [-> MEL RELATIVE TO ATM1 6=X8 ... LDN 6 4 [NUMBER OF MEMBER 6=XQ ...TM1 SMO 7 6=Y# ... LDXC 5 ASU1(1) 6=YW ... BCS TM2 [NULL MEMBER 6=^D ... SMO 7 6?22 ... LDX 5 ATM1(1) [TIME USED 6?2J ... DVS 4 BEATTIME [CONVERT TO MILLISECONDS 6?36 ... SMO 7 6?3N ... STO 4 ATM1(1) [LEAVE REMAINDER 6?4= ... SMO 6 6?4S ... ADS 5 ATU1-1(1) [TIME USED 6?5B ... ADS 5 GEN1 [ACCUMULATE TIME USED 6?5Y ...TM2 SBN 7 ATM2-ATM1 [UPDATE TO NEXT MEL 6?6G ... BCT 6 TM1 [NEXT MEMBER 6?74 ... BRN (GEN2) 6?7N ...# 6?7P ...# FOR B0233: S/R TO ZEROISE POINTER IN DEVICE LIST,FOR EXEC 6?7Q ...# TO TEST TO SEE IF PROGRAM UNPLUGGED, SO AVOIDING TROUBLE 6?7R ...# FROM SPURIOUS INTERRUPTS - SEE B9610. 6?7S ...# UNNECCESSARY BUT HARMLESS FOR NOTBUSY MACRO. 6?7Y ...# 6?82 ...SDPTR 6?86 ... SMO 4 6?88 ... STOZ JCCA5 6?8= ... EXIT 6 0 6?8# ...# 6?8L [ 6?N= [ 6#7W [ SUBROUTINE TO UNBUSY AND CHECK FOR TIMEUP AND PORFAIL 6#MG [ LINK X7,EXPECTS X7-> PCA,USES X6,X3,X5 6*76 [ 6*LQ [ 6B6B NOTBUSY1 6BL2 SBX 7 FX1 6C5L PCATEST 2,NBNORM,NBNORM 6CK= FINDTP 2,2 [X2 -> TP 6D4W NBNORM 6DJG LDX 3 APRB(2) [X3 ->1ST ENTRY IN PRB 6F46 SMO FX2 6FHQ STO 2 AWORK2 6FMM ... LDX 2 FX2 6FRJ ...[ 6FXF ...[ THE FOLLOWING CORRECTS B3341 WHICH MEANT WE ONLY TRIED 6G3B ...[ TO UNBUSY A PERIPHERAL ONCE 6G7? ...[ 6G?8 ...NEXT 6GC5 ... LDX 5 IREVIEW 6GH2 ...[ 6GLX ...NEXT1 6GQS ... LDXC 0 0(3) 6GWP ...[ 6H2L BCS PRBEND 6HG= LDXC 1 1(3) 6H^W BCC ONLINE1 [J IF ONLINE 6JFG ANDX 1 BITS22LS 6JK5 ... SBN 1 CHAINADD [X1 -> OLPA 6K4P ... JCBB 1,XIPCCHECK [J IF IPC AND CHANNEL BUSY 6K*Y ...#UNS CAFSINT 6KM7 ... JCAFSBSY 1,XCAFSCHECK [JIF CAFS CHANNEL BUSY 6KYB LDX 0 0(3) 6LD2 SLC 0 9 6LXL ANDN 0 #177 6MC= SBN 0 #30 6MWW BNZ 0 NOTIPB 6NBG CONCISBY 1,NBACK [J IF CONC IPB NOT BUSY 6NL# ... BRN XIPBCHECK [FOR B8179 6NW6 ...WAIT 6PTB UNPL COOR3 #41 [WAIF K9MS 6Q*2 ... JBC NEXT1,2,TIMEOUT [IF NO TIMEOUT WE LOOP TILL 6QSL ... BCT 5 NEXT1 6R#= BRN NBUP [IF NOTBUSY INFORM THEM OF BUSY PER 6R#Q ...#UNS CAFSINT 6R*= ...XCAFSCHECK 6R*S ...XIPBCHECK 6RCB ...XIPCCHECK 6RDY ... JBS WAIT,2,NOTBUSY [J IF NOT UNPLUG MACRO 6RGG ... FJOPCA 1,FX2 6RKL ... JBS NBACK,1,JBREEF [OK IF PROG IS REALTIME 6RNQ ... BRN WAIT 6RRW NOTIPB 6S?G JAUTOFF 1,NBACK 6SR6 JAUTFAIL 1,NBACK 6T=Q BRN WAIT 6TQB ONLINE1 6W=2 ANDX 1 BITS22LS 6WPL CHECKFLA 1,NOTFLAG [WE IGNORE FLAG WAVERS 6X9= NBACK BDX 3 NEXT [GET NEXT PER 6XNW NOTFLAG 6Y8G JCANTENG 1,NBACK [IGNORE NON ENGAGEABLES 6YN6 LDX 4 1 6^7Q CALL 6 UNBUSY 6^L4 ... BRN WAIT [BUSY 724B ... BRN PHAIL [FAILED 72GP ...# THE FOLLOWING LINES INVOLVING NPTR DEAL WITH B9610 72WD ... BRN NPTR 73=7 ...PHAIL JBC NPTR,2,RETURN 73KW CLFAIL 4 [CLEAR FAILURE COUNT 73TN ...NPTR 745G ... CALL 6 SDPTR 74*# ... BRN NBACK 74K6 PRBEND 754Q LDX 1 FX1 75JB JBC STOP,2,RETURN 7642 JBC NOCHECK,2,REPLY 76HL STOP [CHECK FOR PERFAIL & TIME UP 773= LDX 2 AWORK2(2) [X2 ->PCA(TP IF RCTP) 77?4 ... LDX 3 2 77GW PCATEST 2,USUAL,,(GEOERR) 782G FINDPUC 2,3 [X3 -> PUC 78G6 LDEX 0 ASTOP(3) 78^Q BNZ 0 PERFAIL 79FB USUAL LDEX 0 ASTOP(2) 79^2 BZE 0 NOPF 7=DL PERFAIL 7=Y= LDN 3 P17(1) [PERFAIL LINK 7?CW BRN MEET1 7?MN ...NOPF BBS 1,ASTOP(3),TIMEUP 7?XG ... BBUS 1,ASTOP(2),NOCHECK [J IF NO TIME UP 7#7# ...TIMEUP 7#C6 LDN 3 P18(1) [FOR ILLEGAL TIMEUP 7#WQ MEET1 JMBAS UP,FX2,REPLY,NOTBUSY [J IF TO BE REPORTED TO CALLING 7*BB ... JBSC XLINK,FX2,REPLY [CLEAR REPLY SWITCH TO REMMBER FAIL 7B*L SMO FX2 7BT= LDX 2 AWORK2 7C#W JBS USEPCA,FX2,SWAPOUT 7CSG FINDLINK 2 7D#6 USEPCA 7DRQ LINKSET 2,0(3) 7DW* ... BRN XTEST 7DYY ...XLINK 7F3H ... LDX 0 0(3) 7F66 ... STO 0 ACOMMUNE1(2) 7F8P ...XTEST 7F?B JBC NOSB,FX2,STEPBAC [J IF NO STEPBAC REQD 7FR2 DATUMA 3 7G=L STEPBAC1 ,3 [ADJUST ONR 7GQ= TRACE 8(3),WORD8ALT 7H9W NOCHECK 7HPG ...NOSB LDX 1 FX1 7J96 LDX 2 FX2 7JNQ ADX 7 FX1 7K8B EXIT 7 0 [AT LAST ! 7KN2 [ 7L7L [ ENTRIES FOR NOTBUSY 7LM= [ 7M6W XX10U 7MLG STOZ AWORK1(2) 7N66 MBS 2,RETURN,REPLY,NOTBUSY 7NKQ BRN NBJOIN 7P5B XX2U STOZ AWORK1(2) 7PK2 MBS 2,RETURN,NOTBUSY,REPLY,TIMEOUT 7Q4L NBJOIN 7QJ= LDX 2 ACOMMUNE1(2) [X2-7 PCA 7R3W CALL 7 NOTBUSY1 7RHG UPPLUS 1 [OK 7S36 UP LDX 0 0(3) 7SGQ STO 0 ACOMMUNE1(2) 7T2B NBUP UP [REPORT TO CALLING ROUTINE 7TG2 [ 7T^L [ ENTRY FOR VARIOUS UNPLUGS SEE PRM 7WF= [ 7WYW XX8U 7XDG BSXD 0,STEPBAC 7XY6 BRN XJOIN 7YCQ XX18U LDN 0 0 7YXB BRN XJOIN 7^C2 XX28U BSXD 0,RETURN 7^WL BRN XJOIN 82B= XX38U MBSXD 0,RETURN,REPLY 82TW XJOIN STO 0 AWORK1(2) 83*G FJOPCA 3,2 85#W ...[ EMPTY PROGRAM MILL TIMERS 85*5 ... STOZ GEN1 [TO ACCUMULATE TIME YSED 85*# ... LDX 1 2 [ADDRESS OF PCA 85*H ... PCATEST 2,NORM3,,PUC3 [CHECK RCTP 85*Q ... FINDPUC 1,1 [OBEYED IF TP 85*^ ...PUC3 CALL 7 TIMERS [DECANT FOR PUC PCA 85B8 ... FINDTP 1,1 [SET UP FOR TP PCA 85BC ...NORM3 CALL 7 TIMERS [DECANT TIMERS 85BL ... LDX 5 GEN1 [TOTAL MIL USED 85BT ... LDN 4 0 85C4 ... ADSC 5 GPROGTIME+1 [STEP TOTAL OBJECT PROGRAM TIME 85C? ... ADS 4 GPROGTIME 85CG ... ADSC 5 HCLOCKTIME+1(3) 85CP ... ADS 4 HCLOCKTIME(3) 85CY ...[ 85D7 ...[ CHARGE TIME SPENT IN PCA AND OLPAS 85DB ... LDN 6 0 85DK ... PCATEST 2,NORM1,TP2,PUC2 85DS ...TP2 FINDPUC 2,2 85F3 ...PUC2 ADX 6 ACTCHCH(2) 85F= ... STOZ ACTCHCH(2) 85FF ... FINDTP 2,2 85FN ...NORM1 ADX 6 ACTCHCH(2) 85FX ... STOZ ACTCHCH(2) [CHARGE FOR PCAS 85G6 ... LDX 1 APRB(2) [X1 -> PRB 85G* ...TOUR LDXC 0 0(1) 85GJ ... BCS PEND 85GR ... LDXC 2 1(1) 85H2 ... BCC ONLINE [J IF ONLINE PERI 85H9 ... ADX 6 ACTCHCH-CHAINADD(2) 85HD ... STOZ ACTCHCH-CHAINADD(2) 85HM ...ONLINE 85HW ... BDX 1 TOUR [BACK FOR NEXT 85J5 ...PEND FCAJO 2,3 [X2 -> CPA 85J# ...PEND1 LDX 7 ATUSE(2) 85JH ... MPA 6 CHAPTIME 85JQ ... DVD 6 BEATTIME [CONVERT 85J^ ... ADX 5 7 [TOTAL 85K8 ... STO 6 ATUSE(2) [REMAINDER 85KC ... FPCAJO 2,3 [X2 -> PCA 85KL ...[ 85KT ...[ UPDATE TIMERS IN JOB BLOCK AND SET STOP WORD IF TIME-UP CONDITION 85L4 ... LDN 4 0 85L? ... ADSC 5 HTIMEJ+1(3) 85LG ... ADS 4 HTIMEJ(3) [STEP JOB TIME 85LP ... SBSC 5 APROGTIME+1(3) 85LY ... SBS 4 APROGTIME(3) [STEP PROGRAM TIME 85M7 ... ADS 5 HTIMES(3) [STEP SLOT TIME 85MB ...#SKI G4 85MK ... SBS 5 HRTIMES(3) [REDUCE TIME LEFT TO END OF SCI 85MS ... LA ASTOPTIM,5 [SET PROGRAM TIMEUP 85N3 ... LDX 6 APROGTIME(3) [TEST IF PROGRAM TIMEUP 85N= ... BNG 6 TC3 [YES 85NF ... LA ASTOPJOB,5 [SET JOB TIME UP 85NN ... LDXC 7 HTIMEJ+1(3) 85NX ... LDX 6 HTIMEJ(3) 85P6 ... TXL 7 ATIMEJ+1(3) [TEST IF TIME UP FOR JOB 85P* ... TXL 6 ATIMEJ(3) 85PJ ... BCC TC3 [YES 85PR ... LDN 5 0 [SET NO TIMEUPS 85Q2 ...TC3 85Q9 ... ORS 5 ASTOP(2) [SET ANY TIMEUP STOP BIT 85RL CALL 7 NOTBUSY1 86?= FJOTP 3,2 [X3 -> JOBBLOCK 86QW CALL 0 SFWT 87=G BS 3,JBSTOP 87Q6 BC 3,JBPLUG 88PB JBS REAL,3,JBREEF 8992 CALL 7 SUNPLUG1 [ONLY DERING NON REALTIME 89NL REAL CALL 7 SUNPLUG2 [UNLOCK BLOX 8=8= JBS UPPL,2,REPLY 8=MW UP 8?7G UPPL UPPLUS 1 8?M6 [ 8#6Q [ ENTRIES FOR UNPLUG PRIOR TO SWAPOUT 8#LB [ 8*62 XX7U STOZ AWORK1(2) 8*KL BS 2,SWAPOUT 8B5= BRN SPEC 8BJW XX5U STOZ AWORK1(2) 8C4G MBS 2,SWAPOUT,NOSFWT 8CJ6 SPEC 8D3Q CALL 7 NOTBUSY1 [DO UNBUSY ETC 8DHB FJOTP 3,2 8F32 BS 3,JBSTOP 8FGL BC 3,JBPLUG 8G2= JBS NOFWT,2,NOSFWT 8GFW CALL 0 SFWT 8G^G BRN NOTSPEC 8HF6 NOFWT 8HYQ MBI 3,JBSTOP,JBPISO 8JDB NOTSPEC 8JY2 JBS (GEOERR),3,JBREEF 8KCL CALL 7 SUNPLUG1 8KX= CALL 7 SUNPLUG2 [DO ACTUAL UNPLUG 8LBW LDN 3 SPECLINK(1) 8LWG JBS SPECO,2,NOSFWT 8MB6 LDN 3 SWAPLINK(1) 8MTQ SPECO ACROSSVA 0(3) [DO SWAPOUT 8N*B [ 8NT2 [ ENTRY FOR USE BY ASWINT TO UNPLUG AND NOTBUSY A PLUGGED IN 8P#L [ PROGRAM PRIOR TO PROGRAM MOVE 8PS= [ 8Q?W [ 8QRG XX9U STOZ AWORK1(2) 8R?6 MBS 2,RETURN,NOTBUSY,TIMEOUT 8RQQ STO 3 AWORK4(2) [KEEP PCA PTR 8S=B LDX 2 3 8SQ2 CALL 7 NOTBUSY1 8T9L FJOTP 3,AWORK4(2) 8TP= CALL 7 SUNPLUG1 8W8W CALL 7 SUNPLUG2 8WNG MBI 3,JBPLUG,JBSTOP [SET UNPLUGGED 8X86 UPPLUS 1 8XMQ # THIS SECTION IMPLEMENTS THE UNPLUGRT MACRO TO ACTUALLY 8Y7B # UNPLUG (MELUNRING) A REALTIME PROGRAM 8YM2 # 8^6L XX3U 8^L= FPCACA 2 8^LP ... LDX 5 2 [SAVE PCA PTR 8^M9 ... HUNT2 2,APERI,APERIRES 8^N8 ... LDX 1 2 8^NM ... LDN 7 0 [SET OLPA COUNT 8^P7 ...UPRTX0 8^Q6 ... LDXC 0 A1(2) 8^R5 ... BCS UPRTX1 [J IF END OF PRB 8^S4 ... LDXC 0 A1+1(2) 8^T3 ... BCC UPRTX2 8^TC ... ADN 7 1 [UPDATE OLPA COUNT 8^TR ... LDX 6 7 8^TT ... [FIND NTH OLPA 8^TX ... LDX 3 5 8^T^ ... [ADDRESS OF APET 8^W3 ...NOLPA 8^W5 ... LDX 3 ACTRING+FPTR(3) 8^W7 ... SBN 3 ACTRING 8^W9 ... TXU 3 FX2 8^W? ... BCC (GEOERR) 8^W* ... LDCH 0 ATYPE(3) 8^WC ... SBN 0 AOLPT/64 8^WF ... BNZ 0 NOLPA 8^WH ... BCT 6 NOLPA [X3->OLPA 8^W^ ... JCBB 3,UPRTX3 [J IF IPC AND CHANNEL BUSY 8^X3 ...#UNS CAFSINT 8^X5 ... JCAFSBSY 3,UPRTX3 [JIF CAFS CHANNEL BUSY 8^X8 ...# [FOR B8179 8^X9 ... LDX 0 A1(2) [CHECK IF THIS AN IPB DEVICE 8^X= ... SLC 0 9 8^X? ... ANDN 0 #177 8^X# ... SBN 0 #30 [JIF NOT AN IPB - CAN'T DO A 8^X* ... BNZ 0 UPRTX2 ['CONCISBY' FOR OTHER DEVICES!!! 8^XC ... CONCISBY 3,UPRTX2 [J IF CONC IPB NOTBUSY 8^XL ... BRN UPRTX3 8^XY ...UPRTX2 8^YX ... BDX 2 UPRTX0 8^^W ...UPRTX3 922T ... COOR3 #41 923S ... BRN XX3U 924R ...UPRTX1 9356 ... HUNT2B 2,AOBJPROG,0,1 93JQ LDX 0 ALOGLEN(2) [DECREMENT CORE USED FOR REALRIME PRO 944B SBS 0 COBJUSRT 94J2 NGNC 0 1 953L ANDS 0 JRETI(2) [ERASE 'REALTIME' MARK IN PROGRAM BLO 962W ... LDX 2 1 96GG UPRT1 LDX 0 A1(2) 9726 BNG 0 UPRT3 [JUMP IF NO MORE ENTRIES 97FQ LDXC 4 A1+1(2) 97^B BCS UPRT2 [JUMP IF OFFLINE 98F2 ANDX 4 BITS22LS 98YL JCANTENG 4,UPRT15 99D= CHECKFLAG 4,UPRT2 [JUMP UNLESS FLAGWAVER 99XW UPRT15 9=CG DISENGPER 4 9=M# ... CALL 6 SDPTR [FOR B9610 9=X6 UPRT2 BDX 2 UPRT1 [BACK FOR NEXT 9?BQ UPRT3 9?WB FJOCA 3,FX2 9#B2 CALL 7 SUNPLUG1 [UNPLUG AND FREE EXEC SOCKET 9#TL BC 3,JBREEF [UNSET REALTIME EFFECTED MARKER 9**= UP 9*SW XX4U 9B#G FINDPUC 2,3 9BS6 CALL 4 UGEO3 [UNPLUG THE PUC 9C?Q UP 9CRB MENDAREA 50,K100UNPLUG 9D?2 #END ^^^^ ...600434500003