14 2278 ... SEG PERCON,867,SECTION CENT,,G505 4 22#B ...[ 15 22FJ ...[ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982 13 22LQ ...[ THIS EXCLUDES CODE UNDER #SKI G505 4 22RY ...[ 7 22_= #OPT K0PERCON=0 14 23DW #LIS K0PERCON>K0ALLGEO>K0GREATGEO>K0UTILITY 8 23YG #DEF TRACE=K6PERCON 4 24D6 [ 20 24XQ [ THIS SEGMENT SERVICES THE PERCON,PERCONA AND QUALCON MACROS 4 25CB [ 7 25JJ ...#OPT G505 = 0 6 25PQ ...#SKI G505&1 19 25WY ...# WITH UGUG EDIT M505 (3-SHIFT WORKING FOR MOP ONLINE PROGRAMS) 4 2646 ...[ 4 269# ...[ 4 26BL [ 8 26W= [ ENTRY POINTS 18 27*W SEGENTRY K1PERCON,ZEP1 [ENTRY FROM PERCON MACRO 18 27TG SEGENTRY K2PERCON,ZEP2 [ENTRY FROM QUALCON MACRO 18 28*6 SEGENTRY K3PERCON,ZEP3 [ENTRY FROM PERCONA MACRO 4 28SQ [ 8 29#B THIRTEEN +13 8 29J8 TWELVE +12 8 29S2 TEN +10 8 2=?L THREE +3 7 2=HD TWO56 +256 8 2=R= SIXFOUR +64 8 2?=W TYPBAD #4000 8 2?QG X4 +4 8 2#=6 X161 +161 4 2#PQ # 11 2*9B # ERROR MESSAGES 20 2*P2 QERM +ILLQUAL [%C CONTAINS ILLEGAL QUALIFIER 21 2B8L UERM +ERRPERC [%C IS NOT A CORRECT PERIPHERAL NAME 19 2BDD TERM +JMAXPAR [>24 PARAMS WITHIN BRACKETS 21 2BN= XERM +ERUNPAIR [%C CONTAINS AN UNPAIRED DELIMETER 21 2C7W ZERM +INCOMQU [%C CONTAINS INCOMPATIBLE QUALIFIERS 4 2CMG # 17 2D76 # IDENTIFIERS IN THE QTABENT MACRO ENTRIES 7 2DLQ #DEF WFLAG=0 8 2F6B #DEF WQUAL=WFLAG+1 8 2FL2 #DEF WPER2=WQUAL+2 8 2G5L #DEF WPER3=WPER2+1 8 2GK= #DEF WPER4=WPER3+1 16 2H4W #DEF WENTR=WPER4+1 [SIZE OF ENTRY 20 2HJG [LIST OF ACCEPTABLE PERIPHERAL MNEMONICS AND CORRESPONDING NUMERICAL 5 2J46 [CODES 4 2JHQ [ 17 2K3B TYPES #00006462 [TYPE 0 TR TAPE READER 16 2KH2 #01006460 [TYPE 1 TP TAPE PUNCH 17 2L2L #02005460 [TYPE 2 LP LINE PRINTER 17 2LG= #03004362 [TYPE 3 CR CARD READER 16 2L_W #04004360 [TYPE 4 CP CARD PUNCH 18 2MFG #05005564 [TYPE 5 MT MAGNETIC TAPE 21 2M_6 #06004544 [TYPE 6 ED EXCHANGEABLE DISC STORE 19 2NDQ #06004441 [TYPE 6 ALSO DA UNDER UDAS 18 2NYB #07005543 [TYPE 7 MC MAG CARD FILE 19 2PD2 #10004444 [TYPE 8 DD DATA DISC STORE 18 2PXL #11004462 [TYPE 9 DR MAGNETIC DRUM 17 2QC= #12005164 [TYPE 10 IT UNIPLEXOR 17 2QWW #12006570 [TYPE 10 UNIPLEXOR 17 2RBG #12006556 [TYPE 10 UNIPLEXOR 18 2RW6 #13005570 [TYPE 11 MX MULTIPLEXOR 18 2S*Q #14004364 [TYPE12 CT CASSETTE TAPE 21 2STB #06004644 [TYPE 6 (PRE-UDAS13) FD FIXED DISC 6 2T*2 #SKIP APER14 8 2TSL #HAL #1601,+APER14 6 2W#= #SKIP APER15 8 2WRW #HAL #1701,+APER15 6 2X?G #SKIP APER16 8 2XR6 #HAL #2001,+APER16 6 2Y=Q #SKIP APER17 8 2YQB #HAL #2101,+APER17 6 2_=2 #SKIP APER18 8 2_PL #HAL #2201,+APER18 6 329= #SKIP APER19 8 32NW #HAL #2301,+APER19 6 338G #SKIP APER20 8 33N6 #HAL #2401,+APER20 6 347Q #SKIP APER21 8 34MB #HAL #2501,+APER21 6 3572 #SKIP APER22 8 35LL #HAL #2601,+APER22 6 366= #SKIP APER23 8 36KW #HAL #2701,+APER23 6 375G #SKIP APER24 8 37K6 #HAL #3001,+APER24 6 384Q #SKIP APER25 8 38JB #HAL #3101,+APER25 6 3942 #SKIP APER26 8 39HL #HAL #3201,+APER26 6 3=3= #SKIP APER27 8 3=GW #HAL #3301,+APER27 6 3?2G #SKIP APER28 8 3?G6 #HAL #3401,+APER28 6 3?_Q #SKIP APER29 8 3#FB #HAL #3501,+APER29 6 3#_2 #SKIP APER30 8 3*DL #HAL #3601,+APER30 6 3*Y= #SKIP APER31 8 3BCW #HAL #3701,+APER31 6 3BXG #SKIP APER32 8 3CC6 #HAL #4001,+APER32 6 3CWQ #SKIP APER33 8 3DBB #HAL #4101,+APER33 6 3DW2 #SKIP APER34 8 3F*L #HAL #4201,+APER34 6 3FT= #SKIP APER35 8 3G#W #HAL #4301,+APER35 6 3GSG #SKIP APER36 8 3H#6 #HAL #4401,+APER36 6 3HRQ #SKIP APER37 8 3J?B #HAL #4501,+APER37 6 3JR2 #SKIP APER38 8 3K=L #HAL #4601,+APER38 6 3KQ= #SKIP APER39 8 3L9W #HAL #4701,+APER39 6 3LPG #SKIP APER40 8 3M96 #HAL #5001,+APER40 6 3MNQ #SKIP APER41 8 3N8B #HAL #5101,+APER41 6 3NN2 #SKIP APER42 8 3P7L #HAL #5201,+APER42 6 3PM= #SKIP APER43 8 3Q6W #HAL #5301,+APER43 6 3QLG #SKIP APER44 8 3R66 #HAL #5401,+APER44 6 3RKQ #SKIP APER45 8 3S5B #HAL #5501,+APER45 6 3SK2 #SKIP APER46 8 3T4L #HAL #5601,+APER46 6 3TJ= #SKIP APER47 8 3W3W #HAL #5701,+APER47 6 3WHG #SKIP APER48 8 3X36 #HAL #6001,+APER48 6 3XGQ #SKIP APER49 8 3Y2B #HAL #6101,+APER49 6 3YG2 #SKIP APER50 8 3Y_L #HAL #6201,+APER50 6 3_F= #SKIP APER51 8 3_YW #HAL #6301,+APER51 6 42DG #SKIP APER52 8 42Y6 #HAL #6401,+APER52 6 43CQ #SKIP APER53 8 43XB #HAL #6501,+APER53 6 44C2 #SKIP APER54 8 44WL #HAL #6601,+APER54 6 45B= #SKIP APER55 8 45TW #HAL #6701,+APER55 6 46*G #SKIP APER56 8 46T6 #HAL #7001,+APER56 6 47#Q #SKIP APER57 8 47SB #HAL #7101,+APER57 6 48#2 #SKIP APER58 8 48RL #HAL #7201,+APER58 6 49?= #SKIP APER59 8 49QW #HAL #7301,+APER59 6 4==G #SKIP APER60 8 4=Q6 #HAL #7401,+APER60 6 4?9Q #SKIP APER61 8 4?PB #HAL #7501,+APER61 6 4#92 #SKIP APER62 8 4#NL #HAL #7601,+APER62 6 4*8= #SKIP APER63 8 4*MW #HAL #7701,+APER63 5 4B7G #REP 5 17 4BM6 +0 [END OF TABLE MARKER 4 4C6Q [ 20 4CLB [LIST OF QUALIFIER TABLES . EACH TYPE HAS A HALF WORD ENTRY IN THE 19 4D62 [FOLLOWING FORMAT : #4000 IF TYPE IS ILLEGAL (EG *HD TYPE 25) 18 4DKL [ ELSE ADDRESS OF HEAD OF QUALIFIER TABLE 17 4F5= [ 0 IF TYPE CAN HAVE NO QUALIFIERS 4 4FJW [ 5 4G4G TYPLIST 14 4GJ6 #HAL +TYP0,+TYP1 [TR TP 14 4H3Q #HAL +TYP2,+TYP3 [LP CR 14 4HHB #HAL +TYP4,+TYP5 [CP MT 14 4J32 #HAL +TYP6,+0 [DA 7 14 4JGL #HAL +0,+TYP9 [8 DR 14 4K2= #HAL +0,+0 [10 MX 20 4KFW #HAL +0,#4000 [12 13 (*13 -> *06 BEFORE HERE 14 4K_G #HAL +0,+0 [14 15 14 4LF6 #HAL +0,+0 [16 17 14 4LYQ #HAL +0,+0 [18 19 14 4MDB #HAL +0,+0 [20 21 14 4MY2 #HAL +0,+0 [22 23 14 4NCL #HAL TYP24,#4000 [CC HD 16 4NX= #HAL #4000,+0 [26 (EDS30) 27 14 4PBW #HAL +TYP28,+0 [PB 29 14 4PWG #HAL +0,+0 [30 31 14 4QB6 #HAL +0,+0 [32 33 14 4QTQ #HAL +0,+0 [34 35 14 4R*B #HAL +0,+0 [36 37 14 4RT2 #HAL +0,+0 [38 39 14 4S#L #HAL +0,+0 [40 41 14 4SS= #HAL +0,+0 [42 43 14 4T?W #HAL +0,+0 [44 45 14 4TRG #HAL +0,+0 [46 47 14 4W?6 #HAL +0,+0 [48 49 14 4WQQ #HAL +TYP50,+TYP51 [FR FW 7 4X2J #SKI JSKI19<1$1 14 4X=B #HAL +0,+0 [52 53 6 4XCJ #SKI JSKI19 14 4XJQ #HAL +TYP52,+0 [52 53 14 4XQ2 #HAL +0,+0 [54 55 14 4Y9L #HAL +0,+0 [56 57 14 4YP= #HAL +0,+0 [58 59 14 4_8W #HAL +TYP60,+0 [CI 61 14 4_NG #HAL +0,+0 [62 63 4 5286 [ 21 52MQ [THERE NOW FOLLOWS THE QUALIFIER TABLES ACCESSED THROUGH TYPLIST.EACH 10 537B [HAS HEADER,ENTRY LIST,TAIL. 15 53M2 [HEADER IS POINTER TO APPROPRIATE LOGIC TABLE 20 546L [EACH ENTRY IS EITHER A QTABENT MACRO ENTRY (QV) OR,IF B0 OF WORD 0 13 54L= [ IS SET,B12-23 POINT TO NEXT ENTRY 8 555W [TAIL IS A ZERO WORD 4 55KG [ 20 5656 [EACH QUALIFIER HAS A LEVEL NUMBER (LN). NO 2 QUALS WITH SAME LN CAN 21 56JQ [OCCUR TOGETHER. P IS'TRUE'IF QUALIFIER IS PRESENT,ELSE'FALSE';THE 21 574B [CONJUNCTION OF THE PARAMETERS OF THE APPROPRIATE QLOGIC MACRO IS'TRUE' 17 57J2 [IF THE CORRESPONDING QUALIFIER COMBINATION IS ILLEGAL 4 583L [ 9 58H= TYP2 +TYP2L 12 592W QTABENT 4,AUTO,1,0,0,0,XTAUTO 14 59=N QTABENT 8,EXTENDED,1,#00040000,0,0 6 59*K ...#SKI G505&1 9 59DG ... +TYP3+1.2 7 59HC ...#SKI G505&1$1 19 59LC +TYP1+1.2 [-> OTHER SLOW PERIPHERALS 4 5=26 [ 9 5=9Y TYP0 +TYP0L 13 5=FQ QTABENT 6,NLNULL,1,#00020000,0,0 6 5=J* ...#SKI G505&1 13 5=LY ... QTABENT 6,CURSOR,1,0,0,#20060000 9 5=PJ +TYP1+1.2 4 5=_B TYP1 6 5?3# ...#SKI G505&1 4 5?5= ...( 9 5?78 ... +TYP0L 13 5?96 ... QTABENT 6,NORMAL,1,0,0,#00040000 13 5??4 ... QTABENT 7,ALLCHAR,1,0,0,#00060000 9 5?*2 ... +TYP3+1.2 4 5?BY ...) 4 5?F2 TYP3 4 5?YL TYP4 5 5#4H TYP50 5 5#8D TYP51 5 5##* TYP52 9 5#D= +TYP0L 12 5#XW QTABENT 8,IDENTIFY,0,0,0,0.2 17 5*CG +TYPCOMMON+1.2 [-> COMMON QUALIFIERS 4 5*X6 [ 9 5BBQ TYP5 +TYP5L 13 5BWB QTABENT 4,MODE,1,0,#74,0,XTMODE 5 5CB2 T5AND28 11 5CTL QTABENT 4,READ,0,0,1,0 11 5D*= QTABENT 5,WRITE,0,1,1,0 17 5DSW +TYPCOMMON+1.2 [-> COMMON QUALIFIERS 4 5F#G TYP6 5 5FS6 TYP13 9 5G?Q +TYP6L 11 5GRB QTABENT 4,READ,0,#200,0,0 12 5H?2 QTABENT 5,WRITE,0,#300,0,0 12 5HQL QTABENT 7,OVERLAY,0,#100,0,0 12 5J== QTABENT 6,OFFSET,0,#400,0,0 12 5JPW QTABENT 7,SCRATCH,0,#600,0,0 17 5K9G +TYPCOMMON+1.2 [-> COMMON QUALIFIERS 5 5KP6 TYP28 9 5L8Q +TYP28L 10 5LNB QTABENT 3,IMC,1,0,2,0 10 5M82 QTABENT 3,WMC,1,2,2,0 13 5MML QTABENT 5,DELAY,2,0,0,0,XTDELAY 20 5N7= +T5AND28.2 [-> READ & WRITE - SAME AS *MT 21 5NLW [ NOW THE COMMON QUALIFIERS. THE NUMBER OF COMMON QUALIFIER LEVELS IS 15 5P6G [ THE VALUE OF GCOMQU , DEFINED IN COMPS PERCON 6 5PL6 TYPCOMMON 4 5Q5Q TYP9 5 5QKB TYP11 5 5R52 TYP24 5 5SHW TYP60 10 5T3G +TYPCOMMONL 6 5TH6 #SKI ARETLO 11 5W2Q QTABENT 4,KEEP,-1,0,0,0.1 21 5WGB +0 [END OF TABLES - (IE ROOT OF TREE) 4 5X22 [ 20 5XFL [ NOW THE LOGIC TABLES - IN FACT THEY ARE ALL DEGENERATE , SO WE MAP 13 5X_= [ THEM ALL INTO A SINGLE QLOGIC ENTRY 5 5YDW TYP0L 5 5YYG TYP2L 5 5_D6 TYP5L 5 5_XQ TYP6L 5 62CB TYP28L 6 62X2 TYPCOMMONL 9 63BL QLOGIC -GCOMQU,2 4 63W= [ 10 64*W [ NOW THE ACTUAL CODE 11 64TG [ AWORK1,2 ARE USED AS FOLLOWS 18 65*6 [ AWORK1 B0-5 CP LEVEL OF MULTI BLOCK HOLDING QUALIFIERS 16 65SQ [ B12 SET IF NO UNIT NUMBER SPECIFIED 15 66#B [ B13 SET IF ENTERED FROM PERCON 15 66S2 [ B14 SET IF ENTERED FROM QUALCON 18 67?L [ B15 SET IF UNI CNTG PERL NAME+ QUALS SET UP 16 67R= [ B16 SET IF CPAR/GPERCON BLOCK SET UP 17 68=W [ AWORK2 B0-11 ADDRESS OF QLOGIC ENTRY FOR THIS TYPE 16 68QG [ B12-23 ADDRESS OF CURRENT QTABENT ENTRY 4 69=6 [ 18 69PQ ZEP1 [ENTRY FROM PERCON MACRO 8 6=9B LDN 0 #2000 21 6=P2 STO 0 AWORK1(2) [CLEAR FLAGS - B13=1 FOR PERCON ENTRY 10 6?8L LDX 4 ACOMMUNE7(2) 20 6?N= BZE 4 UXIST [J IF UNI BLOCK PASSED TO MACRO 21 6#7W PARANOTX 4 [ ELSE SET UP ONE FOR ERROR MESSAGES 8 6#MG LDN 0 #400 19 6*76 ORS 0 AWORK1(2) [ AND SET FLAG TO REMEMBER IT 10 6*LQ UXIST HUNT 3,CPB,CUNI 19 6B6B BNG 3 (GEOERR) [GEORGE ERROR IF NOT FOUND 9 6BL2 NGX 0 ANUM(3) 19 6C5L BPZ 0 UERR [ERROR IF ITS NULL OR ABSENT 9 6CK= LDX 4 ATYPE(3) 17 6D4W ANDN 4 #7777 [GET PARAMETER NUMBER 17 6DJG SET LDN 5 0 [SET ANALYSIS LEVEL 20 6F46 PARALYSE ,5,4 [SPLIT INTO AND 7 6F9# #UNS ANSTOOMANY 4 6FBG #SKI 17 6FHQ TESTREP UNPAIR,XERR [J IF ANALYSIS ERROR 7 6FNY #UNS ANSTOOMANY 19 6FW6 TESTREP2 UNPAIR,XERR,TOOMANY,TERR [J IF ANALYSIS ERROR 7 6G3B PARANUMB 4 10 6GH2 BXGE 4 THREE(1),UERR 21 6H2L BZE 4 UERR [J IF NOT 1 OR 2 PARAMETERS PRODUCED 18 6HG= PARAPASS [GET 8 6H_W BRN START 4 6JFG [ 18 6J_6 ZEP3 [ENTRY FROM PERCONA MACRO 21 6KDQ STOZ AWORK1(2) [CLEAR FLAGS - B13=0 FOR PERCONA ENTR 16 6KYB START MHUNT 3,CPB,CUNI [LOCATE PARAMETER 9 6LD2 LDX 6 ANUM(3) 17 6LXL BNG 6 UERR1 [J IF NON-EXISTENT 14 6MC= BZE 6 UERR1 [ OR NULL 8 6MWW ANDN 6 #7777 8 6NBG ADN 3 APARA 8 6NW6 LDCH 0 0(3) 8 6P*Q SBN 0 #32 19 6PTB BNZ 0 UERR2 [J IF FIRST CHARACTER NOT * 19 6Q*2 CALL 0 ZCHAR [ADVANCE TO NEXT CHARACTER 18 6QSL BRN UERR2 [ AND J IF THERE IS NONE 21 6R#= CALL 7 ZNUM [TRY TO CONVERT NEXT TWO 'NUMBERS' 20 6RRW BZE 7 NUM [J IF TWO NUMBERS CONVERTED OK 7 6S?G SBN 7 1 21 6SR6 BZE 7 UERR2 [J IF JUST ONE NUMBER CONVERTED-ERROR 20 6T=Q CALL 7 ZMNEM [ ELSE TRY TO MATCH UP MNEMONIC 19 6TQB BRN UERR2 [J IF MNEMONIC NOT RECOGNISED 19 6W=2 NUM BXGE 5 SIXFOUR(1),UERR2 [J IF CONVERTED TYPE NOT < 64 19 6WPL BXU 5 THIRTEEN(1),NFD [REPLACE TYPE 13 BY TYPE 6 7 6X9= LDN 5 6 7 6XNW NFD SRC 5 9 15 6Y8G STO 5 AWORK2(2) [TYPE TO B0-8 18 6Y9# SEGENTRY K90PERCON [ENTRY FOR MANYDA RESTORE MACRO 8 6Y=6 BRN XK91 7 6Y=Y SLC 5 9 7 6Y?Q SBN 5 6 13 6Y#J BNZ 5 XK91 [J IF NOT DA 14 6Y*B BZE 6 NOUNNO [J IF NO UNIT NO 14 6YB8 LDN 7 3 [CHAR CT FOR UNIT NO 7 6YC2 LDN 4 0 7 6YCS LDN 5 0 8 6YDL ZUNUM CDB 4 0(3) 9 6YFD BCS ZUNUM1 15 6YG= CALL 0 ZCHAR [GET PTR TO NEXT CHAR 12 6YH4 BRN ZUNUM1 [J IF END 9 6YHW BCT 7 ZUNUM 5 6YJN ZUNUM1 15 6YKG BXGE 5 TWO56(1),UERR2 [J IF TOO BIG 8 6YL# BRN UNITN 4 6YLP XK91 9 6YM6 SEGENTRY K91PERCON 20 6YN6 CALL 7 ZNUM [TRY TO CONVERT NEXT NUMBER(S) 20 6_7Q BXGE 5 SIXFOUR(1),UERR2 [J IF CONVERTED UNIT NO NOT < 64 7 6_MB SBN 7 2 21 7272 BNZ 7 UNITN [J IF UNIT NO WAS ACTUALLY SPECIFIED 5 72BS NOUNNO 8 72LL LDN 0 #4000 20 736= ORS 0 AWORK1(2) [ ELSE SET 'NO UNIT NO' SWITCH 20 73KW UNITN ORS 5 AWORK2(2) [AWORK2:B0-8 TYPE B9-23 UNIT NO 9 745G LDX 0 AWORK1(2) 8 74K6 ANDN 0 #2000 16 754Q BNZ 0 NOTA [J IF NOT PERCONA 4 75JB [ 21 7642 [ALTHOUGH IT IS ERRONEOUS FOR QUALIFIERS TO OCCUR WITH PERCONA WE CHECK 20 76HL [THAT THE TYPE IS NOT SUCH THAT A QUALIFIER IS MANDATORY (CURRENTLY 10 773= [THERE ARE NO SUCH TYPES) 4 77GW [ 19 782G BZE 6 NIQ [J IF NO MORE CHARACTERS LEFT 21 78G6 LDCH 0 0(3) [ ELSE ERROR . 'ILLEGAL QUALIFIER' 21 78_Q SBN 0 #30 [ IF FIRST CHAR '(' ELSE 'INCORRECT 16 79FB BZE 0 QERR [ PERIPHERAL NAME 8 79_2 BRN UERR 19 7=DL NIQ LDX 5 AWORK2(2) [X5=PERIPHERAL TYPE NUMBER 7 7=Y= SLC 5 9 8 7?CW ANDN 5 #77 8 7?XG CALL 7 QTAB 18 7#C6 BRN UERR [ERROR IF ILLEGAL TYPE 19 7#WQ BZE 3 NOQU [J IF CANNOT HAVE QUALIFIERS 8 7*BB SMO FX1 21 7*W2 LDX 6 0(3) [ ELSE GET QUALIFIER LOGIC ADDRESS 18 7B*L LDN 3 0 [INDICATE NO QUALIFIERS 19 7BT= CALL 7 ZLOGIC [CHECK THIS IS OK WITH LOGIC 8 7C#W BRN ZERR1 9 7CSG NOQU LDX 0 AWORK1(2) 8 7D#6 ANDN 0 #4000 8 7DRQ SLL 0 12 21 7F?B STO 0 ACOMMUNE2(2) [SET B0 IF'NO UNIT NUMBER' SWITCH SET 9 7FR2 LDX 0 AWORK2(2) 15 7G=L STO 0 ACOMMUNE1(2) [SET RESULT 8 7GQ= SETREP OK 8 7H9W #SKI TRACE>999-999 4 7HPG ( 12 7J96 OUTNUM ACOMMUNE1(2),OCTAL 12 7JNQ OUTNUM ACOMMUNE2(2),OCTAL 9 7K8B MONOUT IPLISTING 4 7KN2 ) 14 7L7L UP [RETURN 4 7LM= NOTA 4 7LSD [ 8 7L_L [ NOT PERCONA 20 7M6W BNZ 6 UERR2 [INVALID NAME IF ANY EXTRA CHARS 18 7MLG HUNT 3,CPB,CUNI [RENAME PARAMETER BLOCK 11 7N66 NAME 3,CPAR,GPERCON 8 7NKQ ALTLEND 3,4 8 7P5B LDN 0 #200 21 7PK2 ORS 0 AWORK1(2) [REMEMBER CPAR/GPERCON BLOCK SET UP 11 7Q4L HUNT 3,CPAR,GPERCON 9 7QJ= LDX 5 AWORK2(2) 17 7R3W STO 5 GPER1(3) [SET PERIPHERAL NAME 16 7RHG SRL 5 15 [TYPE -> B15-23 19 7S36 STOZ GPER2(3) [INITIALISE QUALIFIER WORDS 9 7SGQ STOZ GPER3(3) 9 7T2B STOZ GPER4(3) 7 7TG2 LDN 6 1 7 7T_L LDN 7 2 9 7WF= PARALYSE #34,6,7 7 7WLD #UNS ANSTOOMANY 4 7WRL #SKI 18 7WYW TESTREP UNPAIR,XERR [J IF ERROR IN SPLITTING 7 7X64 #UNS ANSTOOMANY 20 7X?= TESTREP2 UNPAIR,XERR,TOOMANY,TERR [J IF ERROR IN SPLITTING 17 7XDG DCH 7 AWORK1(2) [STORE ANALYSIS LEVEL 8 7XY6 BRN PBEF 18 7YCQ ZEP2 [ENTRY FROM QUALCON MACRO 10 7YXB LDX 5 ACOMMUNE7(2) 10 7_C2 LDX 0 ACOMMUNE8(2) 8 7_WL SLL 0 18 8 82B= ORN 0 #1200 21 82TW STO 0 AWORK1(2) [DUMP ANALYSIS LEVEL & CLEAR FLAGS, 20 83*G [ SETTING B14 FOR QUALCON ENTRY 20 83T6 [ & B16 FOR GPERCON BLOCK SET UP 11 84#Q SETNCORE 4,3,CPAR,GPERCON 19 84SB STOZ GPER1(3) [INITIALISE QUALIFIER WORDS 9 85#2 STOZ GPER2(3) 9 85RL STOZ GPER3(3) 9 86?= STOZ GPER4(3) 9 86QW PBEF LDCH 7 AWORK1(2) 8 87=G PARANUMB 6,7 20 87Q6 BNG 6 (GEOERR) [GEORGE ERROR IF NO MULTI BLOCK 17 889Q BZE 6 NOQUA [J IF NO QUALIFIERS 21 88PB CALL 7 QTAB [CHECK TYPE LEGALITY,FIND QUAL TABLE 8 8992 BRN ZERR 20 89NL BZE 3 QERR [ERROR IF TYPE HAS NO QUALIFIERS 8 8=8= SMO FX1 21 8=MW LDX 0 0(3) [GET RELATIVE ADDRESS OF LOGIC ENTRY 8 8?7G SLL 0 12 16 8?M6 STO 0 AWORK2(2) [ & REMEMBER IT 21 8#6Q ADN 3 1(1) [STEP X3 TO POINT TO FIRST QUAL ENTRY 16 8#LB NXQU LDXC 4 WFLAG(3) [GET NEXT ENTRY 18 8*62 BCC NOTR [J IF ITS NOT A REPLACER 19 8*KL LDX 3 4 [ ELSE J TO REPLACED ADDRESS 8 8B5= ADX 3 FX1 8 8BJW BRN NXQU 4 8BSN [ 18 8C4G NOTR BZE 4 QERR [ERROR IF END OF TABLE 8 8CJ6 #SKI TRACE>599-599 11 8D3Q TRACE WQUAL(3),TESTQUAL 7 8DHB LDX 5 4 20 8F32 ANDN 5 #17 [NUMBER OF CHARACTERS IN STRING 17 8FGL LDCH 7 AWORK1(2) [GET ANALYSIS LEVEL 7 8G2= LDX 0 3 8 8GFW SBX 0 FX1 21 8G_G DSA 0 AWORK2(2) [REMEMBER RELATIVISED ENTRY ADDRESS 11 8HF6 PARABEG 1,5,WQUAL(3),7 10 8HYQ HUNT 3,CPB,CUNI 9 8JDB LDX 5 ANUM(3) 16 8JY2 BPZ 5 XMFND [J IF MATCH FOUND 21 8KCL LDX 3 AWORK2(2) [ELSE RESET X3 ->CURRENT ENTRY & J 8 8KX= ANDN 3 #7777 8 8LBW ADX 3 FX1 8 8LWG BRN XSTEP 4 8M6# [ 7 8MB6 XMFND LDX 0 4 8 8MTQ SRL 0 12 8 8N*B ANDN 0 #1777 18 8NT2 BZE 0 NOFAG [J IF NO FAG END ANALYSIS 8 8P#L ADX 0 FX1 20 8PS= CALL 7 (0) [CALL FAG END ANALYSIS SUBROUTINE 8 8Q?W BRN QUOK 21 8QRG NOFAG BNZ 5 QERR1 [ERROR IF FAG END BUT NO ANALYSIS S/R 9 8R?6 QUOK LDX 3 AWORK2(2) 8 8RQQ ANDN 3 #7777 20 8S=B ADX 3 FX1 [FETCH & DATUMISE ENTRY POINTER 11 8SQ2 MHUNT 2,CPAR,GPERCON 9 8T9L LDX 0 WPER4(3) 9 8TP= ANDX 0 GPER4(2) 8 8W8W ANDN 0 #7777 21 8WNG BNZ 0 ZERR1 [J IF CURRENT QUAL LEV ALREADY FOUND 18 8X86 LDX 0 WPER2(3) ['OR' IN THE CODE WORDS 9 8XMQ ORS 0 GPER2(2) 9 8Y7B LDX 0 WPER3(3) 9 8YM2 ORS 0 GPER3(2) 9 8_6L LDX 0 WPER4(3) 9 8_L= ORS 0 GPER4(2) 4 8_M5 ...[ 4 8_MY ...[ 6 8_NR ...#SKI G505&1 4 8_PL ...( 11 8_QF ...[ MEND EXCHANGE SCHEME CODE 7 8_R# ... LDXC 0 0 9 8_S7 ... ANDX 0 HALFTOP 8 8_T2 ... IF 0,NZ 9 8_TT ... LDCT 0 #076 10 8_WN ... ANDX 0 GPER1(2) 15 8_XH ... AND 0,ZE [ *TR OR *TP 18 8_YB ... THEN [ SHIFT QUALS ON *TR/*TP 19 8__9 ... JBC QERR1,FX2,CXTMOP [ - MUST BE MOP ONLINE 5 9224 ... FI 4 922X ...) 4 923Q ...[ 4 924K ...[ 8 925W LDX 2 FX2 21 92KG SBN 6 1 [DECREMENT COUNT OF QUALIFIERS TO CHK 9 9356 XSTEP MFREE CPB,CUNI 8 93JQ ADN 3 WENTR 20 944B BNZ 6 NXQU [J IF MORE QUALIFIERS TO CHECK 9 94J2 LDX 6 AWORK2(2) 18 953L SRL 6 12 [GET LOGIC TABLE ADDRESS 11 95H= XEND2 MHUNT 3,CPAR,GPERCON 9 962W LDX 3 GPER4(3) 21 96GG ANDN 3 #7777 [POINTS TO TRUTH TABLE ENTRY REQUIRED 21 9726 CALL 7 ZLOGIC [CHECK COMPATIBILITY OF QUALIFIERS 8 97FQ BRN ZERR 8 97_B XEND1 SETREP OK 9 98F2 XFIN LDX 0 AWORK1(2) 8 98YL ANDN 0 #2000 20 99D= BZE 0 NOTPC [J IF ENTRY NOT BY PERCON MACRO 18 99XW PARAFREE [ ELSE FREE MULTI BLOCKS 9 9=CG LDX 0 AWORK1(2) 8 9=X6 ANDN 0 #400 21 9?BQ BZE 0 NOTPC [J IF WE DIDNT SET UP CUNI AT START 16 9?WB MFREE CPB,CUNI [ ELSE FREE IT 5 9#B2 NOTPC 8 9#TL #SKI TRACE>999-999 4 9**= ( 11 9*SW MHUNT 3,CPAR,GPERCON 8 9B#G BNG 3 ZZ2 7 9BS6 LOCK 3 7 9C?Q LDN 7 4 11 9CRB ZZ1 OUTNUM GPER1(3),OCTAL 7 9D?2 ADN 3 1 8 9DQL BCT 7 ZZ1 9 9F== MONOUT IPLISTING 7 9FPW SBN 3 4 7 9G9G UNLOCK 3 4 9GP6 ZZ2 4 9H8Q ) 5 9HNB UP 4 9J82 [ 18 9JML [ENTER HERE IF NO QUALIFIERS GIVEN,WITH TYPE NUMBER IN X5 4 9K7= [ 8 9KLW NOQUA CALL 7 QTAB 8 9L6G BRN UERR 8 9LL6 LDX 2 FX2 20 9M5Q BZE 3 XEND1 [J IF TYPE CANNOT HAVE QUALIFIERS 8 9MKB SMO FX1 21 9N52 LDX 6 0(3) [ OTHERWISE CHECK FOR MANDATORY QUAL 8 9NJL BRN XEND2 4 9P4= [ 14 9PHW [ WE NOW HAVE THE VARIOUS ERROR EXITS. 21 9Q3G [ LABELS WITH SUFFIX 1:QUALCON=>NO MESS;ELSE FREE FIRST UNI (UNLESS 14 9QH6 [ PERCONA) BEFORE ISSUING ERROR MESSAGE 4 9R2Q [ 8 9RGB XERR1 LDN 3 XERM 8 9S22 BRN XCOMA 8 9SFL UERR1 LDN 3 UERM 8 9S_= BRN XCOMA 8 9TDW QERR1 LDN 3 QERM 8 9TYG BRN XCOMA 8 9WD6 ZERR1 LDN 3 ZERM 9 9WXQ XCOMA LDX 0 AWORK1(2) 8 9XCB ANDN 0 #2000 18 9XX2 BZE 0 XCOMB [J IF ENTERED IN PERCONA 19 9YBL MFREE CPB,CUNI [ ELSE FREE FIRST CUNI BLOCK 8 9YW= BRN ZEND1 4 9_*W [ 20 9_TG [ LABELS WITH SUFFIX 2 : QUALCON=> NO MESS; ELSE FREE FIRST UNI 16 =2*6 [ (UNLESS PERCONA) AFTER ISSUING ERROR MESSAGE 4 =2SQ [ 8 =3#B UERR2 LDN 3 UERM 7 =3S2 LDN 7 1 8 =4?L BRN ZEND 4 =4R= [ 19 =5=W [ LABELS WITHOUT SUFFIX 1 :QUALCON=> NO MESSAGE;ELSE ISSUE 11 =5QG [ APPROPRIATE ERROR MESSAGE 4 =6=6 [ 8 =6PQ XERR LDN 3 XERM 8 =79B BRN XCOMB 8 =7P2 UERR LDN 3 UERM 8 =88L BRN XCOMB 8 =8N= QERR LDN 3 QERM 8 =97W BRN XCOMB 8 =9*4 TERR LDN 3 TERM 8 =9G= BRN XCOMB 8 =9MG ZERR LDN 3 ZERM 9 ==76 XCOMB LDX 0 AWORK1(2) 8 ==LQ ANDN 0 #1000 19 =?6B BNZ 0 ZEND2 [J IF ENTERED FROM QUALCON 7 =?L2 ZEND1 LDN 7 0 8 =#5L ZEND SMO FX1 8 =#K= LDX 4 0(3) 8 =#T4 ... JANAL ZEND2 7 =*4W ERRORX 4 9 =*JG ZEND2 BZE 7 QUAERR 21 =B46 MFREE CPB,CUNI [IF SUBSCRIPT 2 ENTRY , FREE UNI BLK 5 =BHQ QUAERR 9 =C3B LDX 0 AWORK1(2) 8 =CH2 ANDN 0 #200 8 =D2L BZE 0 QUA1 20 =DG= MFREE CPAR,GPERCON [FREE CPAR/GPERCON IF IT EXISTS 9 =D_W QUA1 SETREP PARERR 8 =FFG BRN XFIN 4 =F_6 [ 14 =GDQ [ THERE NOW FOLLOW VARIOUS SUBROUTINES 4 =GYB [ 4 =HD2 [ 21 =HXL [ FINDS NEXT NON-SPACE CHARACTER.ENTER X3-> STRING, X6=COUNT REMAINING 19 =JC= [ EXIT :FAILURE - NO NON SPACE CHAR FOUND EXIT TO CALL - X6=0 18 =JWW [ :SUCCESS - X3,X6 REFER TO THAT CHAR , EXIT TO CALL+1 14 =KBG [ LINK X0 , X0 DESTROYED , V PRESERVED 4 =KW6 [ 5 =L*Q ZCHAR 8 =LTB STO 0 GEN0 8 =M*2 BZE 6 ZCHA2 7 =MSL ZCHA1 BCHX 3 / 8 =N#= BCT 6 ZCHA3 8 =NRW ZCHA2 LDX 0 GEN0 7 =P?G EXIT 0 0 8 =PR6 ZCHA3 LDCH 0 0(3) 8 =Q=Q SBN 0 #20 8 =QQB BZE 0 ZCHA1 8 =R=2 LDX 0 GEN0 7 =RPL EXIT 0 1 4 =S9= [ 14 =SNW [TRIES TO CONVERT A NUMBER OF UP TO 2 CHARS 12 =T8G [ENTER:X3-> STRING,X6=COUNT,LINK X7 21 =TN6 [EXIT :X5=RESULT,X7=2-(NO OF CHARS CONVERTED),X3,X6 -> CHAR AFTER LAST 11 =W7Q [ CONVERTED ,X0,X4 DESTROYED 4 =WMB [ 15 =X72 ZNUM STO 7 GEN1 [STORE LINK 7 =XLL LDN 7 2 7 =Y6= LDN 4 0 7 =YKW LDN 5 0 17 =_5G BZE 6 ZNUM1 [J IF END OF STRING 17 =_K6 ZNUM3 CDB 4 0(3) [CONVERT CHARACTER 8 ?24Q BCS ZNUM1 21 ?2JB SBN 7 1 [DECREMENT CNT OF CHARS CONVERTED OK 17 ?342 CALL 0 ZCHAR [STEP TO NEXT CHAR 17 ?3HL BRN ZNUM1 [J IF END OF STRING 18 ?43= BNZ 7 ZNUM3 [J IF < 2 CHARS CONVERTED 9 ?4GW ZNUM1 BRN (GEN1) 4 ?52G [ 14 ?5G6 [TRIES TO RECOGNISE A TWO CHARACTER MNEMONIC 12 ?5_Q [ENTER X3-> STRING,X6=COUNT,LINK X7 21 ?6FB [EXIT-FAIL (<2 CHARS OR NEXT 2 CHARS UNRECOGNISED) X0,4,7 DESTRD,X1=FX1 8 ?6_2 [ EXIT TO CALL 21 ?7DL [ SUCCESS X3,X6 REFER TO NEXT CHAR,X5=TYPE NO ,X0,4,7 DESTRD,X1=FX1 8 ?7Y= [ EXIT TO CALL+1 4 ?8CW [ 5 ?8XG ZMNEM 8 ?9C6 LDCT 1 #400 7 ?9WQ LDN 4 0 17 ?=BB ZMN3 BZE 6 ZMN1 [J IF NO CHARS LEFT 8 ?=W2 LDCH 0 0(3) 19 ??*L DCH 0 4(1) [COPY NEXT CHARACTER TO X4 15 ??T= CALL 0 ZCHAR [ADVANCE X3 18 ?##W NULL [IGNORE IF NO MORE CHARS 15 ?#SG BCHX 1 / [ADVANCE X1 21 ?*#6 BVCI ZMN3 [J IF JUST ONE CHARACTER FOUND SO FAR 9 ?*RQ LDN 1 TYPES-1 8 ?B?B ADX 1 FX1 7 ?BR2 ZMN4 ADN 1 1 20 ?C=L LDX 0 0(1) [GET NEXT ENTRY IN MNEMONIC TABLE 21 ?CQ= BZE 0 ZMN1 [J IF END OF TABLE - MATCH NOT FOUND 8 ?D9W ANDN 0 #7777 21 ?DPG BXU 0 4,ZMN4 [J BACK IF THIS ENTRY DOESNT MATCH 20 ?F96 LDCH 5 0(1) [MATCH FOUND - GET TYPE NUMBER 8 ?FNQ LDX 1 FX1 15 ?G8B EXIT 7 1 [SUCCESS EXIT 8 ?GN2 ZMN1 LDX 1 FX1 15 ?H7L EXIT 7 0 [FAILURE EXIT 4 ?HM= [ 20 ?J6W [CHECKS LEGALITY OF A GIVEN TYPE ,AND GIVES QUALIFIER TABLE ENTRY 10 ?JLG [ENTER : X5=TYPE , LINK X7 17 ?K66 [EXIT : IF TYPE ILLEGAL EXIT TO CALL, X0,X3 DESTROYED 21 ?KKQ [ : OTHERWISE EXIT TO CALL+1,X3-> QUAL TABLE (0 IF NONE),X0 DESTRD 4 ?L5B [ 4 ?LK2 QTAB 7 ?M4L SRC 5 1 7 ?MJ= SMO 5 21 ?N3W LDX 3 TYPLIST(1) [GET WORD CONTAINING HALF WORD ENTRY 8 ?NHG BNG 5 QTAB1 18 ?P36 SRL 3 12 [GET CORRECT HALF OF WORD 7 ?PGQ QTAB1 SLC 5 1 16 ?Q2B ANDN 3 #7777 [ERASE THE REST 18 ?QG2 BXE 3 TYPBAD(1),(7) [EXIT TO CALL IF ILLEGAL 7 ?Q_L EXIT 7 1 4 ?RF= [ 16 ?RYW [THIS SUBROUTINE CHECKS FOR QUALIFIER LOGIC ERROR 21 ?SDG [ENTER : X6-> LOGIC TABLE (REL TO FX1) X3=LOGIC NUMBER (TRUTH VECTOR) 17 ?SY6 [EXIT : IF LOGIC ERROR EXIT TO CALL X0,3,4 DESTROYED 16 ?TCQ [ OTHERWISE EXIT TO CALL+1 X0,3,4 DESTROYED 4 ?TXB [ 5 ?WC2 ZLOGIC 7 ?WWL SRL 34 4 8 ?XB= ADX 3 FX1 7 ?XTW SMO 6 20 ?Y*G LDX 0 0(3) [GET RIGHT WORD IN LOGIC TABLE 7 ?YT6 SLL 34 4 8 ?_#Q ANDN 3 #17 16 ?_SB SLL 0 0(3) [GET RIGHT BIT 21 #2#2 BNG 0 (7) [BIT SET => ILLEGAL QUAL COMBINATION 7 #2RL EXIT 7 1 4 #3?= [ 21 #3QW [ THE FOLLOWING SUBROUTINES ANALYSE FAG ENDS OF QUALIFIERS.THEY SHARE 9 #4=G [ THE FOLLOWING SPEC. 18 #4Q6 [ ENTRY:X3-> CUNI BLOCK CONTAINING FAG END ,X1=FX1 ,X2=FX2 19 #59Q [ EXIT :SUBROUTINE MAY DESTROY (1) ACCS BAR X6 (2)ACOMMUNE WORDS 20 #5PB [ (3) AWORK3,4 BUT NOTHING ELSE,& MUST NOT FREE CUNI BLOCK (UNLESS 11 #692 [ TAKING ERROR EXIT).LINK IS X7 4 #6NL [ 17 #78= XTMODE [ *MT MODE QUALIFIER 9 #7MW NGX 0 ANUM(3) 19 #87G BPZ 0 QERR1 [ERROR IF NO FAG END GIVEN 8 #8M6 SBX 7 FX1 20 #96Q CHNUMCO1 [CONVERT NUMBER FOLLOWING MODE 16 #9LB TESTREP OK,XTMO1 [J IF NOT ERROR 21 #=62 MFREE CPB,CUNI [ ELSE CLEAR UP & TERMINATE - ERROR 18 #=KL BRN QUAERR [ MESSAGE ALREADY OUTPUT 10 #?5= XTMO1 LDX 4 ACOMMUNE1(2) 7 #?JW SRC 4 2 20 ##4G BXGE 4 TWELVE(1),QERR1 [J IF NOT 0,4,8,12,...36,40,44 7 ##J6 SLC 4 2 11 #*3Q HUNT 3,CPAR,GPERCON 9 #*HB ORS 4 GPER2(3) 8 #B32 ADX 7 FX1 7 #BGL EXIT 7 0 4 #C2= [ 17 #CFW XTDELAY [ *PB DELAY QUALIFIER 9 #C_G NGX 0 ANUM(3) 19 #DF6 BPZ 0 QERR1 [ERROR IF NO FAG END GIVEN 8 #DYQ SBX 7 FX1 20 #FDB CHNUMCO1 [CONVERT NUMBER FOLLOWING DELAY 16 #FY2 TESTREP OK,XTDE1 [J IF NOT ERROR 21 #GCL MFREE CPB,CUNI [ ELSE CLEAR UP & TERMINATE - ERROR 18 #GX= BRN QUAERR [ MESSAGE ALREADY OUTPUT 10 #HBW XTDE1 LDX 4 ACOMMUNE1(2) 19 #HWG BXGE 4 BIT11,QERR1 [J IF NOT IN RANGE 0 TO 4095 11 #JB6 HUNT 3,CPAR,GPERCON 8 #JTQ SLL 4 12 9 #K*B ORS 4 GPER2(3) 8 #KT2 ADX 7 FX1 7 #L#L EXIT 7 0 4 #LS= [ 17 #M?W XTAUTO [*LP AUTO QUALIFIER 8 #MRG LDN 4 120 9 #N?6 LDX 5 ANUM(3) 8 #NQQ ANDN 5 #7777 16 #P=B BZE 5 XTAU1 [J IF NO FAG END 8 #PLG CHNUMCOD 1,3 11 #Q2L TESTREP2 CHNUMERR,QERR1 10 #QBQ LDX 4 ACOMMUNE1(2) 10 #QQW BXL 4 X4(1),QERR1 10 #R72 BXGE 4 X161(1),QERR1 7 #RH6 ANDN 4 3 8 #RX= BNZ 4 QERR1 10 #S?B LDX 4 ACOMMUNE1(2) 11 #SMQ XTAU1 MHUNT 3,CPAR,GPERCON 9 #T7B ORS 4 GPER2(3) 7 #TM2 EXIT 7 0 4 #W6L [ 8 #WL= MENDAREA 25 4 #X5W #END 8 ____ ...64460017000300000000