18 22=M ... SEG IFEXPAN,,CENT(COMMAND PROCESSOR),,G275,G400 4 22H# ...[ 15 22R_ ...[ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982 13 234L ...[ THIS EXCLUDES CODE UNDER #SKI G275 4 23*? ...[ 7 23KY ...#OPT G275 = 0 6 23WK ...#SKI G275&1 17 247= ...# WITH UGUG EDIT M275 (MISCELLANEOUS NEW IF CONDITIONS) 6 248P ...#UNS G400 4 24=8 ...( 15 24?M ...# THIS CHAPTER IS MODIFIED FOR G3PLUS-IH MK2 4 24*6 ...# 4 24BK ...) 18 24D6 # THIS IS THE SEGMENT FOR DEALING WITH THE IF COMMAND. 21 24XQ # IT PERFORMS THE MAIN ANALYSIS OF THE CONDITION & SWITCHES TO OTHER 21 25CB # SEGMENTS(IFXCODES & IFNUMS)TO DEAL WITH VARIOUS SIMPLE CONDITIONS 17 25X2 # THE COMMAND IS NON STANDARD IN A NUMBER OF WAYS 21 26BL # 1)IT ANALYSES THE CONDITION BY EXAMINING THE LINE BUFFER SINCE IT HA 15 26W= # TO RECOGNISE'AND'&'OR'&'NOT'AS SEPERATORS 21 27*W # 2)IT USES WORKING SPACE IN THE COM PROC ACT WHICH ARE NORMALLY USED 19 27TG # BY THE COMMAND PROCESSOR & PARAMETER ANALYSING ROUTINES 20 28*6 # 3)IT HAS A SPECIAL ENTRY POINT BACK TO THE COM PROC TO AVOID ANY 12 28SQ # UNACCESSED PARAMETER MESSAGES 21 29#B # 4)IF THE CONDITION IS TRUE THE COMMAND FOLLOWING THE COMMA IS COPIED 21 29S2 # INTO AN ADATA,CREADL BLOCK.THE COMMAND PROCESSOR WILL PICK THIS UP 13 2=?L # AS THE NEXT COMMAND TO BE OBEYED 21 2=R= # 5)WHERE A NUMBER LIST IS TO BE EVALUATED A CPB,CUNI BLOCK IS SET UP 17 2?=W # & THE LIST COPIED IN SO THAT CHNUMCON CAN BE USED 8 2?QG # ENTRY POINTS:- 21 2#=6 SEGENTRY K1IFEXPAN,XIF1 [MAIN ENTRY FROM THE COMMAND PROCESSR 21 2#PQ SEGENTRY K2IFEXPAN,XIF2 [IFEXPAN ENTERS ITSELF HERE WHENEVER 18 2*9B [THE STATE WORD IS FULL 21 2*P2 SEGENTRY K3IFEXPAN,XIF3 [RETURN FROM EVALN OF SIMPLE CONDN 13 2B8L # FORMAT OF LINE BUFFER [TYPE-CLB]:- 20 2BN= #DEF VSTART=CLBFIR [START OF COMMAND IN LINE BUFFER 19 2C7W # WORKING SPACE USED IN COMMAND PROCESSING ACTIVITY BLOCK 18 2CMG # AT THE MOMENT R.V.WALKER'S EXTENTION WORDS ARE USED 17 2D76 #DEF XLBP=EXT [PTR TO LINE BUFFER 21 2DLQ #DEF XCHARS=EXT+1 [NO.OF CHARS OF COMMAND LEFT TO BE RE 20 2F6B #DEF XCHPTR=EXT+2 [PTR. TO NEXT CHAR. TO BE READ 17 2FL2 #DEF XSTATE=EXT+3 [STATE OF CALCULATION 17 2G5L #DEF XCOUNT=EXT+4 [LEVEL OF CALCULATION 10 2GK= # CONSTANTS USED IN IFEXPAN 8 2H4W XBRA #30 8 2HJG XKET #31 8 2J46 XCOMMA #34 8 2JHQ XAND 4HAND 8 2K3B XOR 4HOR 8 2KH2 XELSE 4HELS 8 2L2L XEQ #15 9 2LG= XSPS #20202020 8 2L_W XSP #20 8 2MFG XMIN #41 8 2M_6 XMAX #73 9 2NDQ QMINUS1 #77777777 9 2NYB QMASK1 #77777776 9 2PD2 QMASK2 #77777774 9 2PXL QMASK #17777777 12 2QC= # SWITCH TABLE FOR BASIC CONDITIONS 21 2QWW # THIS IS DIVIDED INTO TWO PARTS:ONE FOR CONDITIONS THAT CAN BE DEAL 21 2RBG # IN THIS SEGMENT & ONE FOR THOSE REQUIRING ENTRY TO ANOTHER SEGMENT 5 2STB XTBASE 8 2T*2 4HTRU 8 2TSL BRN XTRUE 8 2W#= 4HFAL 9 2WRW BRN XFALSE 8 2X?G 4HNOT 8 2XR6 BRN XNOT 8 2Y=Q 4HCOR 8 2YQB BRN XCORE 8 2_=2 4HMOP 9 2_PL BRN XONLINE 8 329= 4HUSE 8 32NW BRN XUSER 8 338G 4HFIN 9 33N6 BRN XFINISH 8 33PH 4HBRE 8 33QY BRN XBREA 8 33S* 4HPRO 8 33TQ BRN XPROG 8 33X7 4HREM 8 33YJ BRN XREMO 8 33__ 4HREA 8 343B BRN XREAD 8 344R 4HOPE 8 3468 BRN XOPER 8 347Q XEXI 4HEXI 9 34MB BRN XEXISTS 6 34MR ...#UNS G400 4 34N8 ...( 8 34NK ... 4HDAT 8 34P2 ... BRN XMTY 8 34PC ... 4HSYS 8 34PS ... BRN XSYSI 8 34Q9 ... 4HFST 8 34QL ... BRN XFST 8 34R3 ... 4HABA 8 34RD ... BRN XABD 8 34RT ... 4HRLT 8 34S= ... BRN XRLT 8 34SM ... 4HOLP 8 34T4 ... BRN XOLP 8 34TF ... 4HASP 8 34TW ... BRN XASP 4 34W? ...) 17 34WC ...#UNS FSHIFMAC [SHFS REVERSION CODE 4 34WH ...( 8 34WM ... 4HLIN 9 34WR ... BRN XFALSE 4 34WX ...) 5 34X8 ...XTBASE2 19 3535 ...#DEF VTBCOUNT1=0?-XTBASE/2 [NO ENTRIES IN 1ST PART TABLE 8 3572 4HHAL 10 35LL ACROSS IFXCODES,1 8 366= 4HDEL 10 36KW ACROSS IFXCODES,2 8 375G 4HDIS 10 37K6 ACROSS IFXCODES,3 8 384Q 4HFAI 10 38JB ACROSS IFXCODES,4 8 3942 4HMON 10 39HL ACROSS IFXCODES,5 8 3=3= 4HSTR 10 3=GW ACROSS IFXCODES,7 8 3?2G 4HABS 10 3?G6 ACROSS IFXCODES,12 8 3?_Q 4HPRE 10 3#FB ACROSS IFXCODES,13 8 3#_2 4HREP 10 3*DL ACROSS IFXCODES,14 6 3*Y= 4HZER 9 3BCW ACROSS IFNUMS,1 6 3BXG 4HON 9 3CC6 ACROSS IFNUMS,2 6 3CWQ 4HOFF 9 3DBB ACROSS IFNUMS,3 6 3DW2 4HMEM 9 3F*L ACROSS IFNUMS,4 6 3FT= 4HPOS 9 3G#W ACROSS IFNUMS,5 6 3GSG 4HNEG 9 3H#6 ACROSS IFNUMS,7 6 3HFY 4HRES 10 3HHW ACROSS IFXCODES,15 6 3HKS 4HGEN 10 3HMQ ACROSS IFXCODES,16 6 3HMX ...#SKI G275&1 4 3HN4 ...( 8 3HN9 ... 4HSYS 9 3HNB ... ACROSS ASTONIF,1 8 3HNH ... 4HFST 9 3HNN ... ACROSS ASTONIF,2 8 3HNT ... 4HTST 9 3HP2 ... ACROSS ASTONIF,3 8 3HP7 ... 4HOFL 9 3HP# ... ACROSS ASTONIF,4 8 3HPF ... 4HONL 9 3HPL ... ACROSS ASTONIF,7 8 3HPR ... 4HPRI 9 3HPY ... ACROSS ASTONIF,8 4 3HQ5 ...) 6 3HQP 4HPAR 10 3HR4 ACROSS IFXCODES,17 17 3HR7 ...#UNS FSHIFMAC [SHFS REVERSION CODE 4 3HR= ...( 8 3HR* ... 4HMAC 10 3HRD ... ACROSS IFXCODES,18 4 3HRH ...) 4 3HRQ # 21 3J3J ...#DEF VTBCOUNT2 = 0?-XTBASE2/(HLINK+2) [NO OF ENTRIES IN 2ND PART TABLE 21 3J?B # THIS READS THE FIRST NON SPACE INTO X6 & IF NOT A LETTER EXITS+1 20 3JR2 # IF A LETTER IT READS TO A NON LETTER STORING FIRST THREE IN X6 21 3K=L # X7=LINK X3=CHAR PTR X4=CHARS LEFT.X1=FX1 X2=FX2 X0&X5 DESTROYED 18 3KQ= NCHAL BCT 4 ZB1 [ERROR IF NO MORE CHARS 9 3L9W BRN XERROR 17 3LPG ZB1 LDCH 6 0(3) [PICK UP NEXT CHAR 7 3M96 BCHX 3 / 9 3MNQ TXU 6 XSP(1) 8 3N8B BCC NCHAL 17 3NN2 TXL 6 XMIN(1) [JUMP IF NOT LETTER 8 3P7L BCS ZB2 9 3PM= TXL 6 XMAX(1) 8 3Q6W BCC ZB2 15 3QLG LDX 5 6 [INITIALISE 9 3R66 LDX 6 XSPS(1) 7 3RKQ LDN 2 6 7 3S5B LDN 0 3 15 3SK2 ZB5 DCH 5 0(2) [DUMP CHAR 7 3T4L BCHX 2 / 8 3TJ= ZB3 BCT 4 ZB3A 8 3W3W BRN ZB4A 8 3WHG ZB3A LDCH 5 0(3) 17 3X36 TXL 5 XMIN(1) [JUMP IF NOT LETTER 8 3XGQ BCS ZB4A 9 3Y2B TXL 5 XMAX(1) 8 3YG2 BCC ZB4A 7 3Y_L BCHX 3 / 17 3_F= BCT 0 ZB5 [REPEAT UNLESS HOLDER 17 3_YW LDN 0 1 [FULL IN WHICH CASE 16 42DG BRN ZB3 [DO NOT DUMP CHAR 7 42Y6 ZB4A ADN 4 1 4 43CQ ZB4 11 43XB #SKIP K6IFEXPAN>999-999 10 44C2 TRACE 6,IFRDALPH 14 44WL LDX 2 FX2 [RESET X2 7 45B= EXIT 7 0 4 45TW ZB2 11 46*G #SKIP K6IFEXPAN>999-999 10 46T6 TRACE 6,IFRDCHAR 7 47#Q EXIT 7 1 18 47SB # IFEXPAN ENTERS ITSELF HERE WHEN THE STATE WORD IS FULL 7 48#2 XIF2 STO 3 5 11 48RL #SKIP K6IFEXPAN>999-999 9 49?= TRACE 1,IFENTRY2 8 49QW HUNT 3,CLB 9 4==G STO 3 XLBP(2) 7 4=Q6 ADX 3 5 8 4?9Q BRN ZD1 12 4?PB # ENTRY FROM COMMAND PROCESSOR. 21 4#92 # THIS FIRST SECTION PERFORMS SOME INITIALISATION.IT SETS UP A PTR T 21 4#NL # THE COMMAND IN THE LINE BUFFER,SETS THE NO OF CHARS REMAINING & TH 21 4*8= # LOOKS FOR & IGNORES ANY LABELS & THE CHARS'IF'SETTING THE PTR TO R 13 4*MW # THE CONDITION PART OF THE COMMAND. 4 4B7G XIF1 11 4BM6 #SKIP K6IFEXPAN>99-99 9 4C6Q TRACE 1,IFENTRY 8 4CLB HUNT 3,CLB 9 4D62 STO 3 XLBP(2) 15 4DKL LDX 4 ANUMCHA(3) [NO. OF CHARS 16 4F5= ADN 3 VSTART [INIT CHAR PTR 7 4FJW ADN 4 1 15 4G4G CALL 7 NCHAL [IGNORE'IF' 8 4GJ6 BRN ZD2 8 4H3Q ZD3 BCT 4 ZD4 9 4HHB BRN XERROR 8 4J32 ZD4 LDCH 6 0(3) 7 4JGL BCHX 3 / 8 4K2= SBN 6 #20 8 4KFW BNZ 6 ZD3 8 4K_G CALL 7 NCHAL 17 4LF6 ZD2 STOZ XCOUNT(2) [CLEAR COUNT & STATE 9 4LYQ ZD1 STOZ XSTATE(2) 15 4MDB ZA1A LDN 7 1 [STEP COUNT 9 4MY2 ADS 7 XCOUNT(2) 4 4NCL # 21 4NX= # START OF THE MAIN LOOP WE EXPECT TO FIND AN ALPHABETIC STRING INTR 21 4PBW # A SIMPLE CONDITION & IF SO COMPARE IT WITH THE TABLE & SWITCH TO T 21 4PWG # APPROP ROUTINE TO DEAL WITH IT.WE MAY ALSO FIND A BRA & IN THIS CA 21 4QB6 # WE HAVE TO INTRODUCE A NEW LEVEL OF CALCULATION.SINCE THE STATE OF 21 4QTQ # THE CALCULATION AT ANY LEVEL IS HELD IN 3 BITS WE NORMALL ONLY SHI 21 4R*B # THE WORD 3 PLACES LEFT BUT IF IT IS FULL THE WHOLE WORD IS SAVED B 20 4RT2 # PUTTING IT IN AN ACC & GOING DOWN.ITS VALUE IS RESET ON RETURN 4 4S#L # 15 4SS= ZA1 CALL 7 NCHAL [READ CHAR 17 4T?W BRN ZC1 [JUMP IF ALPHABETIC 16 4TRG TXU 6 XBRA(1) [ERROR UNLESS BRA 9 4W?6 BCS XERROR 16 4WQQ LDX 5 XCOUNT(2) [PICK UP COUNT 17 4X=B ANDN 5 7 [JUMP IF COUNT = 8N 8 4XQ2 BZE 5 ZA2 16 4Y9L LDX 5 XSTATE(2) [SHIFT STATE WORD 7 4YP= SLL 5 3 9 4_8W STO 5 XSTATE(2) 8 4_NG BRN ZA1A 15 5286 ZA2 LDX 5 XSTATE(2) [SAVE STATE 17 52MQ SBX 3 XLBP(2) [RELATIVISE CHAR PTR 16 537B DOWN IFEXPAN,2 [RE-ENTER IFEXPAN 16 53M2 LDX 7 XSTATE(2) [PICK UP RESULT 16 546L STO 5 XSTATE(2) [RESET STATE REG 19 54L= # ENTRY POINT FROM ROUTINES DEALING WITH SIMPLE CONDITIONS 21 555W # RESULT HELD IN X7.0-TRUE,1-FALSE.B0=1 ERROR.B1=1 ERROR ALREADY REP 21 55KG # IF THE RESULT INDICATES THE WAS AN ERROR WE TIDY UP & REPORT AN ER 21 5656 # IF THE RESULT WAS FALSE WE SWITCH THE BOTTOM BIT OF THE STATE WORD 9 56JQ XIF3 BNG 7 XERROR1 9 574B HUNTACTF CLB,3,FX2 9 57J2 STO 3 XLBP(2) 9 583L ADX 3 XCHPTR(2) 9 58H= LDX 4 XCHARS(2) 8 592W BRN ZA3 5 59GG XFALSE 7 5=26 LDN 7 1 9 5=FQ BRN XTRUE1 7 5=_B XTRUE LDN 7 0 5 5?F2 XTRUE1 8 5?YL LDX 1 FX1 8 5#D= LDX 2 FX2 9 5#XW ZA3 ERS 7 XSTATE(2) 11 5*CG #SKIP K6IFEXPAN>999-999 4 5*X6 ( 11 5BBQ TRACE XSTATE(2),IFSTATE 11 5BWB TRACE XCOUNT(2),IFCOUNT 4 5CB2 ) 21 5CTL # A SIMPLE CONDITION MAY BE FOLLOWED BY'AND' 'OR',A KET OR A COMMA 21 5D*= # IF A KET OR COMMA THE BOTTOM 3 BITS OF THE STATE WORD ARE EXAMINED 21 5DSW # SEE WHETHER THE CONDITION AT THIS LEVEL WAS TRUE OR NOT & X7 IS SE 20 5F#G # [B21=1 OR B21=B22=B23=0 INDICATE TRUE & OTHERS INDICATE FALSE] 21 5FS6 # A KET IS ONLY ALLOWED IF THERE WAS A MATCHING BRA(I.E.COUNT>1)& A 21 5G?Q # COMMA IF THERE ARE NO UNMATCHED BRAS(I.E COUNT=1)WHEN IT SIGNIFIES 11 5GRB # THE END OF THE CONDITION 8 5H?2 CALL 7 NCHAL 16 5HQL BRN ZC2 [JUMP IF LETTER 18 5J== LDN 7 0 [DETERMINE RESULT HELD IN 17 5JPW LDN 0 7 [BOTTOM OF STATE REG 18 5K9G ANDX 0 XSTATE(2) [ & SET X7 ACCORDINGLY 8 5KP6 BZE 0 ZA4 7 5L8Q SBN 0 4 8 5LNB BPZ 0 ZA4 7 5M82 LDN 7 1 15 5MML ZA4 LDX 5 XCOUNT(2) [REDUCE COUNT 16 5N7= BCT 5 ZA5 [JUMP UNLESS ZERO 17 5NLW TXU 6 XCOMMA(1) [ERROR UNLESS COMMA 9 5P6G BCS XERROR 11 5PL6 #SKIP K6IFEXPAN>99-99 10 5Q5Q TRACE 7,IFRESULT 7 5QKB LDN 5 0 8 5R52 ZA13 BCT 4 ZA10 8 5RJL BZE 5 ZA17 9 5S4= BPZ 5 ZERROR 8 5SHW BRN ZA7 8 5T3G ZA10 LDCH 6 0(3) 9 5TH6 TXU 6 XSP(1) 8 5W2Q BCC ZA11 8 5WGB BNG 5 ZA15 9 5X22 TXU 6 XBRA(1) 8 5XFL BCC ZA12 9 5X_= BNZ 5 ZERROR 8 5YDW BNZ 7 ZA7 8 5YYG BRN ZA8 7 5_D6 ZA11 BCHX 3 / 8 5_XQ BRN ZA13 7 62CB ZA15 ADN 4 1 8 62X2 CALL 7 NCHAL 8 63BL BRN ZA16 9 63W= BRN ZERRORA 4 64*W ZA12 9 64TG SBX 3 XLBP(2) 9 65*6 PARASTRING 3,4,CLB 10 65SQ LDX 6 ACOMMUNE1(2) 9 66#B BZE 6 ZERROR 8 66S2 MHUNT 3,CLB 9 67?L STO 3 XLBP(2) 7 67R= ADX 3 6 10 68=W LDX 4 ACOMMUNE2(2) 8 68QG BZE 5 ZA19 8 69=6 BZE 4 ZA14 4 69FY ZASP 8 69PQ LDCH 6 0(3) 10 69S* BXU 6 XSP(1),ZANSP 7 69WY BCHX 3 / 8 69_H BCT 4 ZASP 8 6=46 BRN ZA14 5 6=6P ZANSP 9 6=9B TXU 6 XCOMMA(1) 9 6=P2 BCS ZERROR 8 6?8L ZA19 BZE 7 ZA14 10 6?N= MFREE CPB,CMULTI 8 6#7W BZE 4 ZA7 7 6#MG ADN 4 1 7 6*76 NGN 5 1 8 6*LQ BRN ZA13 9 6B6B ZA16 TXU 6 XELSE(1) 9 6BL2 BCS ZERROR 7 6C5L LDN 7 0 7 6CK= LDN 5 1 8 6D4W BRN ZA13 9 6DJG ZA14 MHUNT 2,CPB,CMULTI 7 6F46 LDX 1 2 10 6FHQ LDX 6 APARAFIR(2) 18 6G3B ANDN 6 #7777 [CHAR COUNT OF COMMAND 19 6GH2 ADN 2 APARAFIR+1 [ADDRESS OF START OF COMMAND 11 6H2L ZA20 NAME 1,ADATA,CREADL 8 6HG= STO 6 A1(1) 8 6H_W BZE 6 ZA18 20 6JFG LDN 3 CPDATA(1) [ADDRESS OF DESTINATION OF MVCH 7 6J_6 #SKI JSKI02<1$1 4 6KDQ ( 7 6KYB SMO 6 7 6LD2 MVCH 2 0 4 6LXL ) 6 6MC= #SKI JSKI02 8 6MWW CHARMOVE 2,6 8 6NBG ZA18 MHUNT 2,CLB 7 6NW6 CHAIN 1,2 7 6P*Q ZA7 ENDIFREC 8 6PTB ZA17 BNZ 7 ZA7 11 6Q*2 SETNCORE 2,1,ADATA,CREADL 8 6QSL STOZ A1(1) 8 6R#= BRN ZA18 5 6RRW ZERRORA 9 6S?G TXU 6 XCOMMA(1) 21 6SR6 BCC ZA7 [NO ERROR IF 3RD PARAMETER PRESENT 5 6T=Q ZERROR 7 6TQB LDN 7 0 8 6W=2 SPARANOT 2,7 8 6WPL COMERR APFERR 4 6X9= # 17 6XNW # THIS SECTION IS ENTERED WHEN AN ERROR IS DETECTED 21 6Y8G # IT TIDIES UP BY GETTING RID OF ANY LINK BLOCKS MADE BY RECURSIVE E 15 6YN6 # TO IFEXPAN(NECESSARY IF COUNT EXCEEDS 8). 21 6_7Q # IT SENDS AN ERROR MESSAGE UNLESS THIS HAS ALREADY BEEN SENT(B1 OF 4 6_MB # 5 7272 XBREAK 8 72LL LDCT 7 #700 9 736= BRN XERROR1 5 73KW YERROR 9 745G LDX 7 AWORK4(2) 9 74K6 STO 7 XCOUNT(2) 17 754Q XERROR [NORMAL ILLEGAL LABEL 19 75JB LDCT 7 #400 [UNREPORTED ILLEGAL INDICATOR 5 7642 XERROR1 11 76HL #SKIP K6IFEXPAN>99-99 9 773= TRACE 3,IFERROR 8 77GW LDX 2 FX2 9 782G LDX 6 XCOUNT(2) 7 78G6 SBN 6 9 8 78_Q ZA9 BNG 6 ZA9A 7 79FB SBN 6 8 7 79_2 FREELINK 21 7=DL BRN ZA9 [LOOPS,FREEING LINKS,IFEXPAN HAVING 17 7=Y= [GONE DOWN TO ITSELF 20 7?CW ZA9A SLL 7 1 [JUMP IF ERROR ALREADY REPORTED 8 7?XG BNG 7 ZA9B 15 7#C6 ERROR JIFERR [REPORT ERROR 4 7#WQ ZA9B 7 7*BB SLL 7 1 8 7*W2 BNG 7 ZA9C 6 7B*L ENDCOM 4 7BT= ZA9C 7 7C#W COMBRKIN 21 7CSG # IF A KET FOLLOWS A SIMPLE CONDITION WE RETURN TO THE LEVEL ABOVE,W 20 7D#6 # X7 OR XSTATE HOLDING THE RESULT OF THE CONDITION AT THIS LEVEL 15 7DRQ ZA5 STO 5 XCOUNT(2) [UPDATE COUNT 16 7F?B TXU 6 XKET(1) [ERROR UNLESS KET 9 7FR2 BCS XERROR 18 7G=L ANDN 5 7 [JUMP IF STATE REG EMPTY 8 7GQ= BZE 5 ZA6 16 7H9W LDX 5 XSTATE(2) [SHIFT STATE REG 7 7HPG SRL 5 3 9 7J96 STO 5 XSTATE(2) 8 7JNQ BRN ZA3 17 7K8B ZA6 SBX 3 XLBP(2) [STORE RELATIVE PTR 9 7KN2 STO 3 XCHPTR(2) 16 7L7L STO 4 XCHARS(2) [STORE CHAR COUNT 9 7LM= STO 7 XSTATE(2) 17 7M6W UP [BACK UP TO IFEXPAN 6 7M8K ...#UNS G400 4 7M=# ...( 4 7M#3 ...# 11 7M*Q ...# THIS DEALS WITH IF DATA 4 7MCF ...# 16 7MF8 ...XMTY LDN 6 0 [MARK AS IF DATA 19 7MGX ... BRN XXMTY [CONTINUE AS IF 'IF EXISTS' 4 7MJL ...) 4 7MLG # 17 7N66 # THIS SECTION DEALS WITH THE 'IF EXISTS' CONDITION: 4 7NKQ # 21 7P5B # THE ENTRANT DESCRIPTION IS PARASTRINGED INTO A CPB/CMULTI BLOCK, 21 7PK2 # THE MACRO TAKING IT FROM BETWEEN ITS OUTERMOST BRACKETS,AND SET 17 7Q4L # UP FOR ANALYSIS BY FNORM.ITS EXISTENCE OR NOT IS 16 7QJ= # THEN CHECKED BY TESTING THE REPLY TO OPENDIR. 4 7R3W # 5 7RHG XEXISTS 6 7RL5 ...#UNS G400 4 7RNN ...( 16 7RR? ... LDN 6 1 [MARK AS IF EXI 5 7RTW ...XXMTY 4 7RYF ...) 8 7S36 LDCH 0 0(3) 9 7SGQ TXU 0 XSP(1) 8 7T2B BCS XEX1 7 7TG2 BCHX 3 / 6 7TK6 ...#UNS G400 8 7TN= ... BCT 4 XXMTY 6 7TRB ...#UNS G400 4 7TWG ...#SKI 15 7T_L BCT 4 XEXISTS [SKIP SPACES 9 7WF= XEX1 TXU 0 XBRA(1) 19 7WYW BCS XERROR [ERROR IF NOT L.H. BRACKET 18 7XDG SBX 3 XLBP(2) [RELATIVISE CHAR. POINTER 20 7XY6 LDX 0 XSTATE(2) [STORE EXT+3,4 TO PROTECT FROM 9 7YCQ STO 0 AWORK3(2) 18 7YXB LDX 0 XCOUNT(2) [PARAMETER PASSING MACROS 9 7_C2 STO 0 AWORK4(2) 10 7_WL PARASTRING 3,4,CLB 15 82B= LDX 3 ACOMMUNE1(2) [ZERO REPLY? 9 82TW BZE 3 YERROR 20 83*G STO 3 AWORK2(2) [SAVE NEW RELATIVE CHAR. POINTER 17 83T6 LDX 4 ACOMMUNE2(2) [GET NEW CHAR. COUNT 9 84#Q BZE 4 YERROR 17 84SB STO 4 AWORK1(2) [SAVE NEW CHAR. COUNT 7 85#2 SPARAPAS 10 85RL MHUNT 3,CPB,CUNI 10 85TT LDX 0 CONTEXT(2) 8 85Y4 ANDN 0 1 15 862? BNZ 0 OKUSER [J IF USER CONTEXT 18 864G CHEKLFN2 OKUSER,OKUSER,3 [FALSE IF LOCALNAME ONLY 8 866P BRN XEX9 5 868Y OKUSER 10 86?= NAMETOP 3,FILE,FNAME 4 86QW # 20 87=G # THIS ENTRANT,IF A TEMPORARY FILE CAN BE A WORKFILE OR A NAMED 17 87Q6 # WORKTAPE. IF A WORKFILE ERROR REPORTING IS SUPRESSED 4 889Q # 7 88PB FNORM 24 10 8992 MFREE FILE,FNAME 9 89NL TESTREPN OK,XEX5 10 8=8= MHUNT 3,FILE,FABSNB 7 8=MW LDN 0 2 10 8?7G ANDX 0 CONTEXT(2) 8 8?M6 BZE 0 XEX4 8 8#6Q LDN 0 #1000 9 8#LB ANDX 0 ATYPE(3) 9 8*62 BNZ 0 YERROR 16 8*?8 LDX 0 A1+1(3) [COMMAND ERROR IF 15 8*DB BZE 0 YERROR [NO USER NAME 4 8*KL XEX4 8 8B5= LDN 0 #2000 9 8BJW ANDX 0 ATYPE(3) 8 8C4G BZE 0 NOTSN 8 8CJ6 SMO A1(3) 9 8D3Q LDXC 0 A1+1(3) 17 8DHB BCS XEX10 [J IF XENOTAPE=FALSE 5 8F32 NOTSN 21 8FGL LDN 0 #200 [TEST AND BRN IF ENTRANT IS NOT TEMP 9 8G2= ANDX 0 ATYPE(3) 8 8GFW BZE 0 XEX6 21 8G_G LDN 0 1 [IF ENTRANT NOT A NAMED WORKTAPE THEN 21 8HF6 ANDX 0 ATYPE(3) [IT MUST EXIST OTHERWISE TREAT AS 15 8HYQ BZE 0 XEX7 [NAMED FILE 9 8J8J BRN NBIT22 4 8JDB XEX6 16 8JG# ... [B2839 11-04-83 17 8JJ= ... LDN 0 #400 [BIT 15 REEL SEQ NO. 16 8JL8 ... ANDX 0 ATYPE(3) [OR RET.PERIOD 8 8JN6 ... BZE 0 XEX6A 19 8JQ4 ... LDN 0 1 [SET BIT 23 - TAPE ENTRANT 14 8JS2 ... BRN XEX6B [REQD. 5 8JTY ...XEX6A 7 8JY2 LDN 0 2 5 8K7S ...XEX6B 9 8KCL ORS 0 ATYPE(3) 5 8KMD NBIT22 11 8KX= OPENDIR NBRK,READ,QUERY 10 8LBW MFREE FILE,FABSNB 10 8LWG TESTREPNOT OK,XN1 6 8LXF ...#UNS G400 4 8LYD ...( 16 8L_C ... BNZ 6 XNMTY [JUMP NOT IF DATA 9 8M2B ... MHUNTW 3,FILE,ENT 9 8M3* ... LDX 7 EINF1(3) 17 8M4# ... SLL 7 7 [GET UNCLEAN OPEN BIT 18 8M5? ... BNG 7 XBR3 [OPEN SO GIVE TRUE REPLY 9 8M6= ... LDX 7 ECOPS(3) 8 8M79 ... SRL 7 15 8 8M88 ...XBR3 MFREE FILE,ENT 7 8M97 ... CLOSETOP 14 8M=6 ...XBR2 BZE 7 XEX9 [NO DATA 8 8M?5 ... BRN XEX8 5 8M#4 ...XNMTY 4 8M*3 ...) 9 8MB6 MFREE FILE,ENT 7 8MTQ CLOSETOP 4 8N*B XEX8 7 8NT2 LDN 7 0 7 8P#L XN3 PARAFREE 17 8PS= LDN 1 AWORK1(2) [RESTORE EXT+1,2,3,4 9 8Q?W LDN 2 XCHARS(2) 7 8QRG MOVE 1 4 8 8R?6 LDX 2 FX2 8 8RQQ MHUNT 3,CLB 20 8S=B STO 3 XLBP(2) [STORE NEW LINE BUFFER POINTER 19 8SQ2 ADX 3 XCHPTR(2) [UNRELATIVISE CHAR. POINTER 8 8T9L BZE 7 XTRUE 9 8TP= BRN XFALSE 9 8W8W XN1 VFREE FILE,ENT 4 8WNG XEX9 7 8X86 NGN 7 1 8 8XMQ BRN XN3 5 8Y7B XEX10 7 8YM2 FREECORE 3 8 8_6L BRN XEX9 4 8_L= XEX7 6 8_MH ...#UNS G400 4 8_NS ...( 18 8_Q5 ... BNZ 6 XBR1 [JUMP IF NOT 'IF DATA' 17 8_RB ... FINDWFL 3 [GET WORKFILE DETAILS 9 8_SM ... MFREE FILE,FABSNB 9 8_TY ... TESTREPNOT OK,XEX9 19 8_X9 ... LDX 7 FBLMOD(3) [GET NUMBER OF BLOCK IN FILE 9 8_YG ... SBN 7 FBLKS-A1 19 8__R ... BRN XBR2 [GO BACK TO STANDARD STREAM 4 9234 ...XBR1 4 924* ...) 9 925W MFREE FILE,FABSNB 8 92KG BRN XEX8 4 9356 XEX5 19 93JQ TESTREPN NOFILE,YERROR [IF NOT NOFILE MUST BE NON 17 944B BRN XEX9 [EXISTANT WORK FILE 6 944K ...#UNS G400 4 944S ...( 13 9453 ...# IF OL/AS CONDITIONS(CF IF EXISTS) 7 945= ...XOLP LDN 7 0 8 945F ... BRN XAS1 7 945N ...XASP LDN 7 1 4 945X ...XAS1 8 9466 ... LDCH 0 0(3) 14 946* ... TXU 0 XSP(1) [SPACE 8 946J ... BCS XAS2 7 946R ... BCHX 3 / 15 9472 ... BCT 4 XAS1 [SKIP SPACES 9 9479 ...XAS2 TXU 0 XBRA(1) 17 947D ... BCS XERROR [ERROR,NOT LH BRA 9 947M ... SBX 3 XLBP(2) 9 947W ... LDX 0 XSTATE(2) 9 9485 ... STO 0 AWORK3(2) 16 948# ... LDX 0 XCOUNT(2) [SAVE EXT+3,4.... 19 948H ... STO 0 AWORK4(2) [TO PROTECT FROM PARAM MACROS 10 948Q ... PARASTRING 3,4,CLB 10 948_ ... LDX 3 ACOMMUNE1(2) 9 9498 ... BZE 3 YERROR 9 949C ... STO 3 AWORK2(2) 16 949L ... LDX 4 ACOMMUNE2(2) [GET NEW CHAR CT 9 949T ... BZE 4 YERROR 16 94=4 ... STO 4 AWORK1(2) [SAVE NEW CHAR CT 7 94=? ... PARAPASS 10 94=G ... LDX 0 CONTEXT(2) 8 94=P ... SLL 0 14 8 94=Y ... BPZ 0 XASF 7 94?7 ... PERCONA 10 94?B ... LDX 4 ACOMMUNE1(2) 9 94?K ... TESTREPN OK,YERROR 8 94?S ... FPCACA 3,FX2 16 94#3 ... HUNT2 3,APERI,APERIRES [FIND PERI RES BK 8 94#= ... ADN 3 A1 16 94#F ... FPERENT 4,3,2,1 [FIND PRB ENTRY 8 94#N ... SMO FX2 9 94#X ... LDX 4 AWORK1 17 94*6 ... BNG 2 XASF [IF NOT PRESENT,FALSE 17 94** ... LDXC 2 1(2) [2ND WD OF PRB ENTRY 14 94*J ... BCS XAS3 [OFFLINE 16 94*R ... BZE 7 XAST [ONLINE/OL-TRUE 16 94B2 ... BNZ 7 XASF [ONLINE/AS-FALSE 15 94B9 ...XAS3 SBN 3 A1 [INITIAL PTR 14 94BD ...XAS5 LDX 3 FPTR(3) [NEXT BLK 15 94BM ... LDX 0 ATYPE(3) [TYPE OF BLK 8 94BW ... TXL 0 CACT 17 94C5 ... BCS XAS5 [J IF NOT ACTY BLK 8 94C# ... SRL 0 12 8 94CH ... SBN 0 AOLPT 8 94CQ ... BZE 0 XAS6 14 94C_ ... GEOERR 1,OLPA [FAKE OLPA 8 94D8 ...XAS6 BCT 1 XAS5 17 94DC ... LDX 0 ATMARK(3) [FOUND OLPA,LD ATMARK 13 94DL ... BZE 0 XAS4 [FILE 15 94DT ... BZE 7 XAST [ELSE TRUE-OL 14 94F4 ... BRN XASF [FALSE-AS 14 94F? ...XAS4 BZE 7 XASF [FALSE-OL 7 94FG ...XAST LDN 7 0 8 94FP ... BRN XN3 7 94FY ...XASF NGN 7 1 8 94G7 ... BRN XN3 4 94GB ...) 4 94J2 # 21 953L # AN ALPHABETIC STRING FOLLOWING A SIMPLE CONDITION MUST BE'AND'OR'O 13 95H= # WE ADJUST BOTTOM BITS OF STATE:- 18 962W # IF'AND':IF B23=1 THEN SET B22=1 & B23=0 ELSE NO CHANGE 21 96GG # IF'OR' :IF B22=B23=0 THEN SET B21=1 & B22=B23=0 ELSE CLEAR B22&B23 19 9726 # THEN WE JUMP BACK TO LOOK FOR THE NEXT SIMPLE CONDITION 9 97FQ ZC2 LDX 0 XSTATE(2) 17 97_B TXU 6 XAND(1) [JUMP UNLESS 'AND' 8 98F2 BCS ZC3 19 98YL ANDX 0 QMASK1(1) [IF BOTTOM BIT OF STATE IS 19 99D= TXU 0 XSTATE(2) ['TRUE' DO NOT ALTER STATE 8 99XW BCC ZA1 18 9=CG ORN 0 2 [OTHERWISE SET B22 BIT 17 9=X6 STO 0 XSTATE(2) [& CLEAR BOTTOM BIT 8 9?BQ BRN ZA1 17 9?WB ZC3 TXU 6 XOR(1) [ERROR UNLESS 'OR' 9 9#B2 BCS XERROR 18 9#TL ANDX 0 QMASK2(1) [IF BOTTOM BITS OF STATE 20 9**= TXU 0 XSTATE(2) [ARE'FALSE' DO NOT ALTER STATE 8 9*SW BCS ZC3A 18 9B#G ORN 0 4 [OTHERWISE SET BIT 21 & 4 9BS6 ZC3A 17 9C?Q STO 0 XSTATE(2) [ CLEAR BOTTOM BITS 8 9CRB BRN ZA1 21 9D?2 # THIS SECTION LOOKS UP AN ALPHABETIC STRING IN THE TABLE & SWITCHES 16 9DQL ZC1 LDN 2 XTBASE(1) [LOAD PTR & COUNT 9 9F== LDN 0 VTBCOUNT1 18 9FPW ZC1A TXU 6 0(2) [COMPARE WITH TABLE ENTRY 16 9G9G BCC ZC1B [& JUMP IF MATCH 19 9GP6 ADN 2 2 [FIRST PART OF TABLE IS FOR 19 9H8Q BCT 0 ZC1A [CONDS DEALT WITH IN THIS SEG 19 9HNB LDN 0 VTBCOUNT2 [THE SECOND PART IS FOR THOSE 19 9J82 ZC1D TXU 6 0(2) [WHICH INVOLVE OTHER SEGMENTS 8 9JML BCC ZC1C 21 9K7= ADN 2 2+HLINK [STEP TO NEXT ENTRY IN PT 2 OF TABLE 8 9KLW BCT 0 ZC1D 9 9L6G BRN XERROR 17 9LL6 ZC1B LDX 7 2 [RESET X2 & SWITCH 7 9M5Q SBX 7 1 8 9MKB LDX 2 FX2 7 9N52 SMO 7 7 9NJL BRN 1 7 9P4= ZC1C LDX 7 2 7 9PHW SBX 7 1 8 9Q3G LDX 2 FX2 9 9QH6 SBX 3 XLBP(2) 9 9R2Q STO 3 XCHPTR(2) 9 9RGB STO 4 XCHARS(2) 7 9S22 SMO 7 7 9SFL BRN 1 21 9S_= # IF'NOT'FOUND BEFORE SIMPLE CONDITION SWITCH B23 OF STATE & JUMP BA 7 9TDW XNOT LDN 7 1 9 9TYG ERS 7 XSTATE(2) 9 9WD6 #SKIP K6IFEXPAN>99-99 11 9WXQ TRACE XSTATE(2),IFXNOT 8 9XCB BRN ZA1 18 9XX2 # THESE NEXT SECTIONS DEAL WITH THE CONTEXT CONDITIONS 4 9YBL # 18 9YW= # IF FINISH :TRUE IF FINISH COMMAND PREVIOUSLY ISSUED. 4 9_*W # 5 9_TG XFINISH 9 =2*6 LDX 0 FINISH 9 =2SQ BPZ 0 XFALSE 8 =3#B BRN XTRUE 21 =3S2 # IF USER :TRUE IF THE JOB IS IN USER CONTEXT(I.E.AFTER JOB OR LOGIN 17 =4?L XUSER LDN 0 1 [SET USER CONTEXT BIT 5 =4L3 XCTXT 10 =4YD ANDX 0 CONTEXT(2) 18 =5=W BZE 0 XFALSE [FALSE UNLESS CONTEXT SET 8 =5QG BRN XTRUE 6 =5R7 ...#UNS G400 4 =5RS ...( 19 =5SF ...XSYSI LDCT 0 #400 [SYSTEM ISSUED CONTEXT MASK 15 =5T6 ... BRN XCTXT [J TO TEST 7 =5TR ...XFST LDCT 0 1 19 =5WD ... SRL 0 4 [FULLY STARTED CONTEXT MASK 15 =5X5 ... BRN XCTXT [J TO TEST 7 =5XQ ...XABD LDCT 0 4 19 =5YC ... ANDX 0 JOBEVENTS(2) [ABANDONED BIT IN JOBEVENTS 9 =5_4 ... BZE 0 XFALSE 8 =5_P ... BRN XTRUE 17 =62B ...XRLT SMO FX2 [TEST FOR REALTIME 9 =633 ... LDX 0 CONTEXT 7 =63N ... SRC 0 2 17 =64* ... BNG 0 XFALSE [J IF NO-USER CONTEXT 7 =652 ... FJOCA 2 8 =65M ... LDN 0 #600 19 =66# ... ANDX 0 JMISC(2) [REALTIME BIT IN JOBQ BLOCK 8 =66_ ... LDX 2 FX2 9 =67L ... BZE 0 XFALSE 8 =68? ... BRN XTRUE 4 =68Y ...) 21 =6=6 # IF ONLINE:TRUE IF THE JOB IS IN ONLINE CONTEXT(I.E.FROM MOP CONSOL 5 =6PQ XONLINE 18 =79B LDN 0 8 [SET ONLINE CONTEXT BIT 8 =7P2 BRN XCTXT 20 =88L # IF CORE IMAGE OR COREIMAGE (I.E.ONE WORD OR TWO):TRUE IF THERE 17 =8N= # IS A CORE IMAGE ASSOC WITH THE JOB. 18 =97W XCORE STO 3 XCHPTR(2) [SAVE PTR & CHAR COUNT 9 =9MG STO 4 XCHARS(2) 16 ==76 CALL 7 NCHAL [READ NEXT CHARS 19 ==LQ LDX 0 0 [(NULL INSTR 1FOR SUBR) 19 =?6B LDN 0 #1000 [SET CORE IMAGE CONTEXT BIT 16 =?L2 TXU 6 QIMA(1) [JUMP IF'IMAGE'. 8 =#5L BCC XCTXT 19 =#K= LDX 3 XCHPTR(2) [OTHERWISE RESET PTR & COUNT 9 =*4W LDX 4 XCHARS(2) 8 =*JG BRN XCTXT 8 =B46 QIMA 4HIMA 16 =B4K # IF BREAK IN OR BREAKIN (I.E. ONE WORD OR TWO) 12 =B54 # TRUE : IF IN BREAK IN CONTEXT. 18 =B5H XBREA STO 3 XCHPTR(2) [SAVE PTR & CHAR COUNT 9 =B62 STO 4 XCHARS(2) 16 =B6F CALL 7 NCHAL [READ NEXT CHARS 19 =B6Y LDX 0 0 [(NULL INSTR 1FOR SUBR) 7 =B7C LDN 0 1 16 =B7W SLL 0 14 [SET CONTEXT BIT 15 =B8* TXU 6 QIN(1) [JUMP IF ^IN^ 8 =B8S BCC XCTXT 19 =B9? LDX 3 XCHPTR(2) [OTHERWISE RESET PTR & COUNT 9 =B9Q LDX 4 XCHARS(2) 8 =B=9 BRN XCTXT 8 =B=N QIN 4HIN 14 =B?7 # IF PROGRAM : TRUE IF PROGRAM ISSUED 4 =B?L # 7 =B#5 XPROG LDN 0 1 16 =B#J SLL 0 12 [SET CONTEXT BIT 8 =B*3 BRN XCTXT 2 =B*G 14 =B*_ # IF REMOTE : TRUE IF IN REMOTE CONTEXT 4 =BBD # 16 =BBX XREMO LDN 0 #200 [SET CONTEXT BIT 8 =BCB BRN XCTXT 13 =BCT # IF READER : TRUE IF FROM A READER 4 =BD# # 16 =BDR XREAD LDN 0 #40 [SET CONTEXT BIT 8 =BF= BRN XCTXT 18 =BFP # IF OPERATOR : TRUE IF ISSUED FROM OPERATORS CONSOLE 4 =BG8 # 16 =BGM XOPER LDN 0 #20 [SET CONTEXT BIT 8 =BH6 BRN XCTXT 21 =BHQ # IF THE CONDITION IS FOUND TO BE SATISFIED(I.E.TRUE) THE COMMAND FO 21 =C3B # THE COMMA TERMINATING THE CONDITION IS MOVED INTO A READ LINE BLOC 18 =CH2 # SO THAT IT WILL BE OBEYED BY THE COMMAND PROCESSOR. 6 =D2L #SKI AMK7IF 8 =DG= ZA8 BZE 4 ZA10 7 =D_W #SKI AMK7IF<1$1 9 =FFG ZA8 BZE 4 XERROR 18 =F_6 SBX 3 XLBP(2) [MAKE CHAR PTR RELATIVE 16 =GDQ LDX 6 4 [NO OF CHARS LEFT 19 =GYB ADN 4 CPDATA-A1*4+3 [ADJUSTMENT FOR START OF DATA 7 =HD2 SRL 4 2 15 =HXL GETCORE 4,1 [MAKE BLOCK 7 =JC= FINDCORE 1 8 =JWW MHUNT 2,CLB 19 =KBG ADX 2 3 [ADDRESS OF START OF COMMAND 8 =KW6 BRN ZA20 10 =L*Q NBRK GEOERR 1,BRKINDIR 8 =LC7 FSHCODE AORB 4 =LDJ ( 4 =LF_ # 18 =LHB # IF LINK : TRUE IF THE SHARED FILESTORE LINK IS RUNNING 4 =LJR # 5 =LL8 XLINK 4 =LMK # 21 =LP2 JBS XTRUE,,FSHRUNNING [JIF THE SHARED FILESTORE LINK IS UP 18 =LQC BRN XFALSE [ELSE CONDITION NOT MET 4 =LRS ) 10 =LTB MENDAREA 50,GAPIFEXPAN 4 =M*2 #END 8 ____ ...20425541000300000000