22FL #LIS K0MONEVENT 22^= ... SEG MONEVENT,867,SECTION CENT,,G400 23DW # 23J* ...[ 23MS ...[ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982 23R? ...[ 23WQ ...#UNS G400 2429 ...( 245N ...# THIS CHAPTER IS FOR G3PLUS-IH MK2 2497 ...# 24#L ...) 24D6 # THIS SEGMENT HAS THE FOLLOWING ENTRY POINTS:- 24XQ # 25CB SEGENTRY K1MONEVENT,ZEP1 [ENTRY FROM MONITOR MACRO 25X2 SEGENTRY K2MONEVENT,ZEP2 [ENTRY FROM CILLEGAL MACRO 26BL SEGENTRY K3MONEVENT,ZEP3 [ENTRY FROM REPMON MACRO 26W= SEGENTRY K5MONEVENT,ZEP5 [ENTRY FROM MONEND MACRO 27*W SEGENTRY K7MONEVENT,ZEP7 [ENTRY FROM MONENDB MACRO 27TG # 28*6 # FOR ENTRY POINTS 1 AND 2 ENTRY IS MADE IN THE CPA WITH ADDRESS OF 28SQ # EVENT MESSAGE IN X5 AND MEMBER NUMBER IN X4.(NB MESSAGE MUST HAVE 29#B # RETAIN OUTPUT BLOCK BIT SET IN CATEGORY WORD). 29S2 # 2=?L # FOR ENTRY POINT 3 WE ENTER IN THE PCA,WITH THE O/P UNPLUGGED,AND WITH 2=R= # X5=TYPE OF MONITORING ;X7=O/P CA ADDR (IF PERI) ; 2?=W # X6= B0-5 TYPE B6-14 UNIT NO (MK6) B0-8 TYPE B9-23 UNIT NO (MK6.5) 2?QG # WE FIRST EXTRACT FROM THE O/P INFORMATION NEEDED TO CONSTRUCT A MNTRG 2#=6 # MESSAGE,THEN CAPCA,THEN FORM THE MESSAGE,THEN BRANCH TO K1MONEVENT 2#PQ # 2*9B #DEF VENTLEN=16 [MAX LENGTH OF EVENT MESSAGE (WORDS) 2*P2 #DEF VCOUNT=A1 [ADDR OF RECORD IN GMON,AOUT 2B8L #DEF NOFN=BBCLOSE^BBEXTEND [PERI TYPES WITHOUT FILENAME 2BN= #DEF YESFN=BBOPEN^BBRENAME [PERI TYPES WITH FILENAME 2C7W QIN #51562000 2CMG XMONRES +JMONRES [MONRESUME COMPLETED 2D76 XILLINS +JYILLINS 2DLQ XJZMONITOR +JZMONITOR 2F6B XJZFAILED +JZFAILED 2FL2 ZMONINF +JZMONINF [%A *%B %C CA%D M=#%E FN=%F 2G5L YMONINF +JYMONINF [%A *%B %C CA%D M=#%E 2GK= XMONINF +JXMONINF [%A *%B %C 2H4W TAB1 [LIST OF 'OPEN PERI' TYPE MNTRG TYPES 2HJG 8HREL [CORESPONDING BIT IN AMON:20 2J46 8HDIS [ 19 2JHQ 8HCONT [ 18 2K3B 8HALLOT [ 17 2KH2 8HOPEN [ 16 2L2L 8HCLOSE [ 15 2LG= 8HRENAME [ 14 2L^W 8HEXTEND [ 13 2MFG T1END 2M^6 #DEF MONUM=T1END-TAB1/2 [NUMBER OF MNTRG TYPES 2NDQ ZEP2 [ENTRY FROM CILLEGAL MACRO 2NYB LDN 6 APEDFAIL [ENTRY POINT 2PD2 BNZ 5 ZA1 [SET CONVENTIONAL VALUE FOR ILLEGAL 2PXL LDX 5 XILLINS(1) [MESSAGE 2QC= BRN ZA1 2QWW ZEP1 [ENTRY FROM MONITOR MACRO 2RBG LDN 6 APEDMON [MONITOR CATEGORY 2RW6 ZA1 2S*Q FPCACA 3,2 2STB LDX 4 ANM(3) 2T*2 MONOUTX 5 2TSL #SKIP K6MONEVENT>99-99 2W#= TRACE JOBNO(2),MONEVENT 2WRW CALL 7 XGMON [FIND BLOCK WITH MESSAGE 2X?G LDX 5 VCOUNT(3) [OBTAIN LENGTH OF MESSAGE 2XR6 ANDN 5 #7777 [IGNORE ANY MESSAGE NUMBER 2Y=Q ADN 5 11 2YQB SRL 5 2 2^=2 SBN 5 VENTLEN+2 2^PL BNG 5 ZA2 329= LDN 5 0 32NW ZA2 ADN 5 VENTLEN+3 338G SETUPCORE 5,2,APED,ANEVENT 33N6 SBN 5 3 347Q CALL 7 XGMON 34MB ANDN 4 3 3572 STO 4 APEDSP1(2) [MEMBER NO 35LL STO 6 APEDSP1+1(2) [CATEGORY 366= SLL 5 2 36KW STO 5 APEDSP1+2(2) [NO OF CHARS. 375G SRL 5 2 37K6 BZE 5 ZA3 384Q LDN 0 APEDSP1+3(2) [MESSAGE 38JB LDN 7 VCOUNT+2(3) 3942 SMO 5 39HL MOVE 7 0 3=3= # OUTPUT MONITORED OR FAILED MESSAGE 3=GW ZA3 FREECORE 3 3?2G OUTMILL 3?G6 LDX 5 ACES [MEMBER NO 3?^Q BZE 4 ZA4 3#FB LDX 5 QIN(1) 3#^2 ORX 5 4 3*DL ZA4 STO 5 ACOMMUNE9(2) [OUTPUT AS PARAM OF MESSAGE 3*Y= LDN 1 4 3BCW LDN 5 ACOMMUNE9 3BXG CALL 4 OUTPARAX 3CC6 LDX 5 XJZMONITOR(1) [LOAD ADDR OF MESSAGE 3CWQ SBN 6 APEDMON 3DBB BZE 6 ZA5 3DW2 LDX 5 XJZFAILED(1) 3F*L ZA5 3FT= MONOUTX 5 3FWH ...#UNS G400 3FXS ...( 3F^5 ... TESTHKN XDSK1 3G2B ... HUNT 2,IUSER,G400BLK 3G3M ... BNG 2 XDSK1 3G4Y ... LDX 0 A1(2) 3G69 ... SBN 0 5 3G7G ... BNZ 0 XDSK1 3G8R ... ACROSS DOMONOP,2 3G=4 ...XDSK1 3G?* ...) 3G#W PROGEND 3GSG # 3H#6 ZEP3 [ENTRY FROM REPMON MACRO 3HF# ... CLEAR 2,0 [DONT WANT ANY LOCKS LEFT BY 3HLG ...[...CALLING ROUTINE 3HRQ STOZ AWORK1(2) [UNSET SWITCHES 3J?B LDN 4 1 [CA AT LEAST 1 WORD FOR CLOSE MODE 3JR2 LDX 0 5 3K=L ANDN 0 NOFN 3KQ= BNZ 0 XCLO [J IF PERI WITH NO FILE NAME 3L9W LDX 0 5 3LPG ANDN 0 YESFN 3M96 BZE 0 MEMB [J IF NOT PERI WITH FILE NAME 3MNQ LDCT 0 #200 3N8B ORS 0 AWORK1(2) [SET FILE-NAME SWITCH 3NN2 LDN 4 5 [CA AT LEAST 5 WORDS 3P7L XCLO 3PM= CHECKA 7,4,RESVI,,,XCOOR [CHECK CA IN RESERVATION 3Q6W XCOOR 3QLG LDX 1 2 3R66 LDX 2 7 3RKQ LDN 3 ACOMMUNE1(1) 3S5B FOUTMOVE 1,2,3,4,HLOCK1 [MOVE [X4] WDS FROM CA TO ACOM1 ETC 3SK2 SBN 4 5 3T4L BNZ 4 XCLO1 [J NOT OPEN OR RENAME 3TJ= LDX 2 FX2 [ ELSE FILE NAME TO AWORK2-4 3W3W LDN 3 AWORK2(2) 3WHG ADN 2 ACOMMUNE1+2 3X36 MOVE 2 3 3XGQ XCLO1 LDX 2 FX2 3Y2B LDX 3 ACOMMUNE1(2) 3YG2 LDCT 0 #400 [SET 'PERI WITH IN-RESERVN CA'SWITCH 3Y^L ORS 0 AWORK1(2) 3^F= RESVI 3^YW MEMB LDX 2 FX2 42DG LDX 0 ANM(2) 42Y6 ANDN 0 3 43CQ ORS 0 AWORK1(2) [MEMBER NO TO B22-23 OF AWORK1 43XB CAPCA 44C2 # 44WL # O/P NOW SWAPABLE AND WE ENTER CPA WITH X3=TYPE/MODE WORD OF CA 45B= # X5=TYPE OF MONITORING 45TW # X6=TYPE/UNIT NO OF PERIPHERAL ; X7=O/P ADDR OF CA 46*G # AWORK1:B0 SET IF PERI WITH IN-RESN CA ;B1 SET IF PERI MAYBE HAS FN 46T6 # B22-23 MEMBER NUMBER 47#Q # 47SB LDX 0 6 48#2 ANDX 0 ZFORMAT(1) 48RL BZE 0 ZFOK [J IF PERIPHERAL NAME IN N/I FORMAT 49?= GEOERR 1,PRLFRMAT 49QW ...ZFORMAT #70077400 4==G ZFOK 4=Q6 OUTBLOCN 17 [NOW WE CONSTRUCT THE MONITOR MESSAGE 4?9Q LDN 0 MONUM 4?PB ADN 1 TAB1 4#92 SRC 5 4 4#NL NXTYP BNG 5 MTYPE [J IF TYPE FOUND,WITH X1->CHAR STRING 4*8= ADN 1 2 4*MW SRC 5 1 4B7G BCT 0 NXTYP 4BM6 GEOERR 1,MONTYPE? [MNTRG TYPE IN X5 NOT CORRECT 4C6Q MTYPE ADN 2 ACOMMUNE1 4CLB MOVE 1 2 [ACOMMUNE1,2 =TYPE OF MNTRG 4D62 LDN 1 8 4DKL LDN 5 ACOMMUNE1 4F5= CALL 4 OUTPARAX [ %A=8 CHAR STRING GIVING MNTRG TYPE 4FJW OUTPACKC 6,1,PERINAME [ %B=4 CHAR STRING,PERIPH TYPE/UNIT 4G4G FPCACA 2 4GJ6 HUNT2 2,APERI,APERIRES 4H3Q LDN 5 #56 [ N 4HHB FPERENTA 2,6,UNALL [J TO UNALL IF SPECD TYPE/UNO UNALOCD 4J32 LDN 5 #71 [ Y 4JGL UNALL LDX 2 FX2 4K2= DCH 5 ACOMMUNE1(2) 4KFW LDN 1 1 4K^G LDN 5 ACOMMUNE1 4LF6 CALL 4 OUTPARAX [ %C =Y (ALLOCATED) OR N(UNALLOCATED) 4LYQ LDX 5 XMONINF(1) 4MDB LDX 0 AWORK1(2) 4MY2 BPZ 0 SHORT [J IF NOT PERI WITH IN-RESERVATION CA 4NCL OUTNUM 7,7,1 [ %D=7CHAR R/JUSTIFIED,ZERO SUP ADDR 4NX= [ OF O/P CONTROL AREA 4PBW ANDX 3 BSP16 [GET MODE OF PERI (B9-13) 4PWG LDN 4 0 [NOW CONVERT IT TO A FIVE CHARACTER 4QB6 LDN 0 4 [ STRING 4QTQ LDX 5 3 4R*B SLL 5 9 4RT2 XOCT SLL 4 3 4S#L SLL 45 3 4SS= BCT 0 XOCT 4T?W STO 4 ACOMMUNE1(2) 4TRG SRL 5 3 4W?6 STO 5 ACOMMUNE2(2) 4WQQ LDN 1 5 4X=B LDN 5 ACOMMUNE1 4XQ2 CALL 4 OUTPARAX [ %E =5 CHAR STRING,MODE OF PERI 4Y9L LDX 5 YMONINF(1) 4YP= LDCT 0 #200 4^8W ANDX 0 AWORK1(2) 4^NG BZE 0 MEDI [J IF NO CHANCE OF A FILE-NAME 4^R5 ...[ EXTRA TEST FOR MODE #1200 - B-0292 4^TN ... LDX 0 3 4^Y? ... ANDN 0 #1777 522W ... SBN 0 #1200 525F ... BZE 0 PB0292 5286 LDX 0 3 52MQ ANDN 0 #1077 537B BNZ 0 MEDI [J IF MODE (LESS ANY ADDITIVE MODES) 53M2 [ IS NOT ONE OF #100,#200,#300,#400, 546L [#500,#600,#700 - NO FILE NAME 54L= LDX 0 3 555W ANDN 0 #1777 55KG SBN 0 #600 5656 BZE 0 MEDI [J IF MODE (LESS AD.MD) IS #600 56#Y ...PB0292 56JQ LDX 2 FX2 [ OTHERWISE MOVE FILE NAME TO ACOM1-3 574B LDN 1 AWORK2(2) 57J2 ADN 2 ACOMMUNE1 583L MOVE 1 3 58H= LDN 1 12 592W LDN 5 ACOMMUNE1 59GG CALL 4 OUTPARAX [ %F=12CHAR STRING - FILE NAME 5=26 LDX 5 ZMONINF(1) 5=FQ SHORT 5=^B MEDI 5?F2 LDX 4 AWORK1(2) 5?YL BRN K1MONEVENT 5#D= # 5#XW # ENTRY POINTS 5 AND 7 ARE FOR THE MACROS MONEND AND MONENDB RESPECTIVEY 5*CG # THE CURRENT ACTIVITY BECOMES THE CPA, AND A PROGRAM EVEVNT OF TYPE 5*X6 # MONITOR,MESSAGE 'MONRESUME COMPLETED' IS GENERATED 5BBQ # 5BWB ZEP5 [ENTRY FOR MONEND MACRO 5CB2 LDCT 0 #600 5CTL ANDX 0 AMON(2) 5D*= ERS 0 AMON(2) [CLEAR MONRESUME BITS 5DSW SLL 0 1 5F#G BNG 0 XSTOP [IF MR STOP,J TO CREATE MONITOR EVENT 5FS6 EVENTFIN [ ELSE RESTART PROGRAM 5G?Q XSTOP UNPLUG 5GRB ZPCA CAPCA 5H?2 ZCPA LDX 5 XMONRES(1) [MESSAGE 5HQL BRN ZEP1 [GENERATE MONITOR EVENT 5J== # 5JPW ZEP7 [ENTRY FOR MONENDB MACRO 5K9G LDCH 0 ATYPE(2) 5KP6 SBN 0 APET/64 5L8Q BZE 0 ZPCA [J IF CURRENT ACTIVITY IS PCA 5LNB BRN ZCPA [ ELSE J AND AVOID CAPCA 5M82 # SUBROUTINES 5MML # 5N7= XGMON HUNT2 3,GMON,AOUT,FX2 5NLW EXIT 7 0 5P6G # 5PL6 OUTPARAX [JUST THE OUTPARAX MACRO 5Q5Q SBX 4 FX1 5QKB OUTPARAX 1,5 5R52 ADX 4 FX1 5RJL EXIT 4 0 5S4= # 5SHW MENDAREA 20,K99MONEVENT 5T3G #END ^^^^ ...31247464000200000000