(George Source)
Macros used: ACROSS, BRUSEN, BXU, CLOSETOP, DOWN, FC, FI, FNORM, FREECORE, HUNTACTF, IF, JBS, JMBS, MFREE, MHUNT, MHUNTW, NAMETOP, OPENDIR, PARAFREE, PARASTRING, SEG, SEGENTRY, TESTRPN2, THEN
22FL SEG ASTONIF,,CENT(COMMAND PROCESSOR),,G275 22^= # FOR UGUG MEND M275 (MISCELLANEOUS NEW IF CONDITIONS) 23DW # 23YG # THIS SEGMENT IS ENTERED FROM IFEXPAN TO DEAL WITH THE 24D6 # NEW CONDITIONS INCLUDED BY THE UNIVERSITY OF ASTON 24XQ # 25CB # XCHARS CONTAINS COUNT OF CHARS REMAINING IN THE 25X2 # LINE BUFFER 26BL # 26W= # ON EXIT : XCHPTR & XCHARS MAY HAVE BEEN UPDATED 27*W # : X7 CONTAINS RESULT - 0 TRUE 27TG # 1 FALSE 28*6 # B0 ERROR 28SQ # B1 ERROR 29#B # B012 BREAKIN 29S2 # 2=?L # 2=R= # ENTRY POINTS 2?=W # 2?QG SEGENTRY K1ASTONIF,XSYS [ SYSTEM ISSUED 2#=6 SEGENTRY K2ASTONIF,XFST [ FULLY STARTED 2#PQ SEGENTRY K3ASTONIF,XTST [ TENTATIVELY STARTED 2*9B ... SEGENTRY K4ASTONIF,XOFL [ OFFLINE 2*P2 SEGENTRY K7ASTONIF,XONL [ ONLINE 2B8L SEGENTRY K8ASTONIF,XPRI [ PRIVILEGE 2BN= # 2C7W # WORKING SPACE IN COMMAND PROCESSOR ACTIVITY BLOCK 2CMG # 2D76 #DEF XLBP=EXT 2DLQ #DEF XCHARS=EXT+1 2F6B #DEF XCHPTR=EXT+2 2FL2 #DEF XSTATE=EXT+3 2G5L #DEF XCOUNT=EXT+4 2GK= # 2H4W # 2HJG # CONSTANTS 2J46 # 2JHQ XBRA #30 [ OPEN BRACKET 2K3B XKET #31 [ CLOSE BRACKET 2KH2 XSP #20 2L2L # 2LG= # 2L^W # XSUBA - SUBROUTINE TO SEARCH FOR A L.H.BRACKET AND 2MFG # THEN READ THE PARAMETERS INSIDE THE BRACKETS, 2M^6 # AND THEN OBTAIN THE FIRST PARAMETER. 2NDQ # 2NYB XSUBA 2PD2 SBX 6 FX1 2PXL HUNTACTF CLB,3,FX2 2QC= STO 3 XLBP(2) 2QWW ADX 3 XCHPTR(2) 2RBG LDX 4 XCHARS(2) 2RW6 XSUBA1 2S*Q LDCH 0 0(3) 2STB BXU 0 XSP(1),XSUBA2 2T*2 BCHX 3 £ 2TSL BCT 4 XSUBA1 [ SKIP SPACES 2W#= XSUBA2 2WRW BXU 0 XBRA(1),XERROR [ ERROR IF NOT L.H.BRACKET 2X?G SBX 3 XLBP(2) [ RELATIVISE CHAR. POINTER 2XR6 LDX 0 XSTATE(2) [ PRESERVE EXT+3,4 2Y=Q STO 0 AWORK3(2) 2YQB LDX 0 XCOUNT(2) 2^=2 STO 0 AWORK4(2) 2^PL PARASTRING 3,4,CLB 329= LDX 3 ACOMMUNE1(2) 32NW BZE 3 YERROR [ IF ZERO - FORMAT ERROR 338G STO 3 AWORK2(2) [ NEW RELATIVE CHAR. POINTER 33N6 LDX 4 ACOMMUNE2(2) 347Q BZE 4 YERROR 34MB STO 4 AWORK1(2) 3572 SPARAPASS 35LL MHUNT 3,CPB,CUNI 366= ADX 6 FX1 36KW EXIT 6 0 375G # 37K6 # 384Q # THIS SECTION SETS THE RESULT OF THE CONDITION 38JB # IN X7 & RETURNS TO IFEXPAN 3942 # 39HL XTRUE 3=3= LDN 7 0 3=GW XRET 3?2G ACROSS IFEXPAN,3 3?G6 XFALSE 3?^Q LDN 7 1 3#FB BRN XRET 3#^2 YERROR 3*DL LDX 2 FX2 3*Y= LDX 7 AWORK4(2) 3BCW STO 7 XCOUNT(2) 3BXG XERROR 3CC6 LDCT 7 #400 [ UNREPORTED ILLEGAL INDICATOR 3CWQ BRN XRET 3DBB XERROR1 3DW2 LDCT 7 #600 3F*L BRN XRET 3FT= XBREAK 3G#W LDCT 7 #700 [ BREAK IN INDICATOR 3GSG BRN XRET 3H#6 XRET1 3HRQ LDN 1 AWORK1(2) 3J?B LDN 2 XCHARS(2) 3JR2 MOVE 1 4 3K=L BRN XRET 3KQ= # 3L9W # 3LPG # IF SYS,... SYSTEM ISSUED 3M96 # 3MNQ XSYS 3N8B LDX 0 CONTEXT(2) 3NN2 BNG 0 XTRUE 3P7L BRN XFALSE 3PM= # 3Q6W # 3QLG # IF FST,... FULLY STARTED 3R66 # 3RKQ XFST 3S5B LDX 0 CONTEXT(2) 3SK2 SLL 0 12 3T4L BNG 0 XTRUE 3TJ= BRN XFALSE 3W3W # 3WHG # 3X36 # IF TST,... TENTATIVELY STARTED 3XGQ # 3Y2B XTST 3YG2 LDX 0 CONTEXT(2) 3Y^L SLL 0 13 3^F= BNG 0 XTRUE 3^YW BRN XFALSE 42DG # 42Y6 # 43CQ # IF ONL(... ),... ONLINE 43XB # 44C2 # IF OFL(... ),... OFFLINE 44WL # 45B= # IF THE SPECIFIED FILE IS ONLINE/ 45TW # OFFLINE, THEN THE CONDITION IS 46*G # TRUE. 46T6 # 47#Q XOFL NGNC 0 1 [ SET X7 = 1 (FALSE) FOR 'OFFLINE', 47SB XONL LDN 7 0 [ OR X7 = 0 (TRUE) FOR 'ONLINE' TEST 48#2 CALL 6 XSUBA 48RL NAMETOP 3,FILE,FNAME 49?= FNORM 24 49QW MFREE FILE,FNAME 4==G TESTRPN2 OK,YERROR 4=Q6 MHUNT 3,FILE,FABSNB 4?9Q IF BC,2,CXTUSER 4?PB THEN 4#92 JBS YERROR,3,BFABLOCONLY 4#B8 ... LDX 0 A1+1(3) 4#HB ... BZE 0 YERROR 4#NL FI 4*8= IF BC,3,BFABWORK [ W/F IS ONLINE, SO X7 CORRECT 4*MW THEN 4B7G JMBS YERROR,3,BFABTSN,BFABREEL 4BM6 FC 3,FFABTYPE 4C6Q OPENDIR XBREAK,READ,QUERY 4CLB ... TESTRPN2 OK,YERROR 4D62 CLOSETOP 4DKL PARAFREE 4F5= MHUNTW 3,FILE,ENT 4FJW ERX 7 ECOPS(3) 4G4G ANDN 7 1 [ 1 TRUE, 0 FALSE 4GJ6 ERN 7 1 [ 0 TRUE, 1 FALSE, AS REQD 4H3Q FI 4HHB FREECORE 3 4J32 BRN XRET1 4JGL # 4K2= # 4KFW # IF PRI(... ),... PRIVILEGE 4K^G # 4LF6 # IF THE USER HAS THE SPECIFIED 4LYQ # PRIVILEGE THEN THE CONDITION IS 4MDB # TRUE 4MY2 # 4NCL XPRI 4NX= CALL 6 XSUBA 4PBW BRUSEN YERROR,2 4PWG LDX 0 ACES 4QB6 STO 0 ACOMMUNE1(2) 4QTQ STO 0 ACOMMUNE2(2) 4R*B LDN 4 APARA(3) 4RT2 LDN 5 ACOMMUNE1(2) 4S#L LDX 6 ANUM(3) 4SS= SBN 6 1 4T?W TXL 6 EIGHT [ TOO LONG OR ILLEGAL CHAR 4TRG BCC YERROR 4W?6 SMO 6 4WQQ MVCH 4 1 4X=B DOWN CHEKPRIV,10 [ SEE CHEKPRIV MACRO 4XQ2 NGNC 0 1 [ EXIT 0 - FALSE 4Y9L LDN 7 0 [ 0 PRIV O.K., 1 IF NOT 4YP= BRN XRET1 4^8W # 4^NG # 5286 # 52MQ #END ^^^^ ...750534310002