{{htmlmetatags>metatag-description:(ICL George 3 and George 4 source: LISTPARS867)}}
====== LISTPARS867 ======
(George Source)
**Macros used:** [[george:macro:ACROSS|ACROSS]], [[george:macro:ADDMODE|ADDMODE]], [[george:macro:ALTLEN|ALTLEN]], [[george:macro:AND|AND]], [[george:macro:BS|BS]], [[george:macro:BXE|BXE]], [[george:macro:BXU|BXU]], [[george:macro:CHAIN|CHAIN]], [[george:macro:CHEKLFN2|CHEKLFN2]], [[george:macro:CLOSE|CLOSE]], [[george:macro:CLOSETOP|CLOSETOP]], [[george:macro:COMBRKIN|COMBRKIN]], [[george:macro:COMERRX|COMERRX]], [[george:macro:COMPACT|COMPACT]], [[george:macro:DOWN|DOWN]], [[george:macro:ELSE|ELSE]], [[george:macro:ENDCOM|ENDCOM]], [[george:macro:FI|FI]], [[george:macro:FNORM|FNORM]], [[george:macro:FREECORE|FREECORE]], [[george:macro:FREELINK|FREELINK]], [[george:macro:FSHENTRY|FSHENTRY]], [[george:macro:GEOERR|GEOERR]], [[george:macro:HUNTW|HUNTW]], [[george:macro:IF|IF]], [[george:macro:ISPER|ISPER]], [[george:macro:JBC|JBC]], [[george:macro:LDBIT|LDBIT]], [[george:macro:LFCHAIN|LFCHAIN]], [[george:macro:LFHUNT|LFHUNT]], [[george:macro:LFKEY|LFKEY]], [[george:macro:MBS|MBS]], [[george:macro:MFREE|MFREE]], [[george:macro:MHUNT|MHUNT]], [[george:macro:MHUNTW|MHUNTW]], [[george:macro:MONOUT|MONOUT]], [[george:macro:NAME|NAME]], [[george:macro:NAMETOP|NAMETOP]], [[george:macro:OR|OR]], [[george:macro:PARAFREE|PARAFREE]], [[george:macro:PARALYSE|PARALYSE]], [[george:macro:PARAMOVE|PARAMOVE]], [[george:macro:PARANUMB|PARANUMB]], [[george:macro:REPERR|REPERR]], [[george:macro:SEG|SEG]], [[george:macro:SEGENTRY|SEGENTRY]], [[george:macro:SETENTRY|SETENTRY]], [[george:macro:SETMODE|SETMODE]], [[george:macro:SETUPCORE|SETUPCORE]], [[george:macro:SPARABEG|SPARABEG]], [[george:macro:SPARABEX|SPARABEX]], [[george:macro:SPARANOT|SPARANOT]], [[george:macro:SPARANOX|SPARANOX]], [[george:macro:SPARAPAS|SPARAPAS]], [[george:macro:STEP|STEP]], [[george:macro:TESTRACE|TESTRACE]], [[george:macro:TESTREP2|TESTREP2]], [[george:macro:TESTRPN2|TESTRPN2]], [[george:macro:THEN|THEN]], [[george:macro:TREPN2|TREPN2]], [[george:macro:UP|UP]], [[george:macro:UPPLUS|UPPLUS]], [[george:macro:USEROPEN|USEROPEN]], [[george:macro:USEROPEX|USEROPEX]], [[george:macro:VFREE|VFREE]], [[george:macro:ZERRORX|ZERRORX]], [[george:macro:ZERRORY|ZERRORY]]
22FL #OPT K0LISTPARS=0
22^= #LIS K0LISTPARS>K0LISTFILE>K0ALLGEO
233K ... SEG LISTPARS,,,,G253,G502,G503
235Y ...[
238? ...[ (C) COPYRIGHT INTERNATIONAL COMPUTERS LTD 1982
23=L ...[ THIS EXCLUDES CODE UNDER #SKI G253
23#^ ...[ AND UNDER #SKI G502
23FM ...[
23J2 ...#OPT G234 = 0
23L* ...#OPT G253 = 0
23NN ...#SKI G253&1
23R3 ...# WITH UGUG EDIT M253 (LISTFILE IN NO-USER CONTEXT)
23TB ...#OPT G254 = 0
23XP ...#OPT G264 = 0
2424 ...#OPT G502 = 0
244C ...#SKI G502&1
246Q ...# WITH UGUG EDIT M502 (SHIFT AND GRAPHICS OUTPUT ON MOP)
2495 ...#OPT G503 = 0
24?D ...#SKI G503&1
24*R ...# WITH UGUG EDIT M503 (PAGING AND FRAMING ON MOP LISTFILES)
24D6 SETENTRY LISTPARS,POINT,5
24XQ FSHENTRY K7LISTPARS,,POINT7,POINT7
25X2 [
26BL [THIS SEGMENT CHECKS THE PROPERTY AND SETUP PARAMETERS.IT SETS UP THE
26W= [PROPERTY BLOCK IF ANY,AND PERFORMS AN ISPER,DEALING WITH ANY ERRORS
27*W [IF THIS IS SUCCESSFUL,ENTRY IS MADE TO LISTFREE TO FREEZE ANY FILES
27TG [THIS SEGMENT CONTAINS THE CODE FOR THE MACROS PROPERTY AND LFMULT.
28*6 [
28SQ [***********************************************************************
29#B [DATA AREA
29D? [
29J8 SETUP
29N5 8HSETUP
2?=W PERFREBIT
2?QG #20 [ PERI IS FREE AT ISPER
2#=6 PROPBIT
2#PQ #4000000 [ PROPERTY BLOCK
2*9B SETUPBIT
2*P2 #10000000 [ SETUP FILE
2B8L PERISBIT
2BN= #200 [ ISPER BEING PERFORMED
2C7W SMULTFILE
2CMG #2000
2D76 SMULTSETBIT
2DLQ #10 [ MULTIFILE WITH SETUP
2F6B [***********************************************************************
2FL2 [MAIN BODY OF SEGMENT
2G5L [***********************************************************************
2GK= [
2H4W POINT1
2HJG [THIS IS THE ENTRY POINT FROM ONLINE WHERE ANY PROPERTY PARAMETER HAS
2J46 [ALREADY BEEN ANALYSED.WE ARE ABOUT TO CHECK ON THE EXISTENCE AND
2JHQ [AVAILABILITY OF A PERIPHERAL TO MEET THE REQUIREMENTS OF COMMAND PARS
2K3B [JOB SOURCE.THIS IS DONE BY THE 'ISPER' MACRO.
2KH2 [FIRST THOUGH,THE GOUT/INFO IS CHAINED IN THE LISTFILE CHAIN(HAVING
2L2L [BEEN RENAMED A GOUT/GKEY TO WARD OFF INTEREST BY THE SCHEDULER).
2LG= [THIS IS TO PROVIDE AN INTERLOCK WITH THE SCHEDULER,WHEN THE LATTER
2L^W [IS AWARE OF A FREE PERIPHERAL BUT CAN FIND NO IMMEDIATE USE FOR IT.
2MFG [OUR ISPER MIGHT MISS THIS PERIPHERAL SO THE SCHEDULER OBLIGINGLY
2M^6 [SETS A BIT IN GMODE IN THE GOUT/GKEY IF THE DEVICE WAS OF THE REQUIRED
2NDQ [TYPE.
2NYB [THE REASON FOR THESE ACROBATICS IS THAT THE SCHEDULER WILL ONLY TRY
2PD2 [TO OBTAIN PERIPHERALS FOR THOSE REQUESTS WHICH INDICATE THAT A
2PXL [POTENTIALLY SUITABLE DEVICE WAS FREE AT ISPER TIME.
2QC= XISPER
2QWW MHUNTW 3,GOUT,INFO
2RBG LDX 5 GMODE(3)
2RW6 LDCT 6 #400 [ SET BIT 0 OR 1 DEPENDING ON WHEATHE
2S*Q ANDX 6 GMODE(3)
2STB BPZ 6 OFL [ ONLINE OR NOT FOR THE ISPER
2T*2 SRA 6 1
2TSL LDX 4 GOPTY(3)
2W#= SLL 4 3
2WRW STO 4 GOPTY(3)
2X?G [WE MUST CREATE A KEY PAIR FOR ONLINE
2XR6 LFKEY ,3
2Y=Q BRN WISP
2YQB OFL
2^=2 LDX 0 GSIGN
2^PL ORS 0 GMODE(3) [ NO MAINFILE NAME BLOCK YET
329= WISP
32NW ERX 6 GSIGN
338G LDX 4 GOPTY(3)
33N6 BZE 4 NMONFOP [ J IF LISTING TO MONITORING FILE
347Q [WE NOW REMEMBER INDEX KEY AND COMPLETE DELAILS OF GOUT/GKEY
34MB LDX 0 GOUTKEY1(3)
3572 STO 0 AWORK2(2)
35LL LDX 0 GSIGN
366= STO 0 GOUTYPE(3)
36KW STOZ GMULTID(3)
375G STOZ GCOUNT(3)
37K6 NAME 3,GOUT,GKEY
384Q LDX 0 PERISBIT(1) [ SHOW ISPER IS BEING PERFORMED
38JB ORS 0 GMODE(3)
3942 LFCHAIN GOUT,GKEY [ HANG BL6CK ON LISTFILE C8AIN.
39HL SRL 4 18 [ PUT IN LAST 6 BITS FOR ISPER
3=3= ORX 4 6 [ TO INDICATE WHETHER OL OR LF
3=GW STOZ AWORK4(2) [ SET UP SUB-KEY
3?2G ISPER 4,SBRKIN
3?9R ...OLREJ
3?F4 ... BPZ 5 TREPLY [J IF NOT ONLINE
3?N* ...[ SPECIAL CODE FOR OLREJECT MACRO
3?XL ...[COMMAND ERROR NOTAV OR WRNG REPLIES ROM ISPER
3#6X ...[TO PREVENT ONLINE WAITING
3#B8 ... SEGENTRY K50LISTPARS
3#KF ... BRN OLWRNG
3#SQ ... TESTREP2 NOTAV,NFRIG,WRNG,NFRIG
3*43 ...OLWRNG
3*?# ... SEGENTRY K51LISTPARS
3*GK ... BRN TREPLY
3*PW ... TESTREP2 WRNG,NFRIG
3*^7 ...TREPLY
3B8D ... SEGENTRY K52LISTPARS
3BCW TESTREP2 OKAY,OK,NOTAV,OK1,WRNG,OK1
3BLJ ... BPZ 5 TREPLY2 [J IF NOT ONLINE
3BT= ... SEGENTRY K53LISTPARS
3C3Y ... BRN TREPLY2
3C=L ... TESTREP2 NOPROP,NFRIG,PERMEXCL,NFRIG
3CF# ...TREPLY2
3CN2 ... SEGENTRY K54LISTPARS
3CWQ [ SPECIAL CODE FOR LFDBAID MACRO !!
3DBB [ WE ALLOW NOPROP OR PERMEXCL REPLIES FROM ISPER
3DW2 [ ONLY IF LISTING TO A LOCAL DEVICE !!
3F8C ... SEGENTRY K60LISTPARS
3FGS ... BRN NFRIG
3FT= TESTREP2 NOPROP,TDBAID,PERMEXCL,TDBAID
3G#W BRN NFRIG
3GSG TDBAID
3H#6 HUNTW 3,APERI,APROPNOS
3HRQ BNG 3 OK1
3J?B LDX 0 CPROPNO(3)
3JR2 BZE 0 OK1
3K=L NFRIG
3KQ= SEGENTRY K61LISTPARS
3L9W [A SUITABLE DEVICE DOES NOT EXIST. W5 MUST TIDY UP AND REPORT ERROR.
3LPG [FIRST WE THROW A6AY THE GOUT/GKEY ON THE LISTFILE CHAIN.
3M96 STOZ AWORK4(2) [ CREATE INDEX SUB-KEY
3MNQ STO 6 ACOMMUNE2(2)
3N8B LFHUNT 7,AWORK2(2),AWORK4(2)
3NN2 LDX 6 ACOMMUNE2(2)
3P7L LDX 7 GMODE(3)
3PM= FREECORE 3
3Q6W ANDN 7 4 [ CHECK FOR MONFILE
3QLG BZE 7 NOTMONL
3R66 LDX 7 EXEC3(2) [ PRESERVE REPLY
3RKQ LDX 5 ACOMMUNE1(2) [ PRESERVE POSS ERRONEOUS PROP PTR
3S5B MONOUT JLFMONFG [ MONFILE LISTFILE FAILED
3SK2 STO 7 EXEC3(2) [ RESET REPLY
3T4L STO 5 ACOMMUNE1(2) [ RESET ERRONEOUS PROP PTR
3TJ= NOTMONL
3TLF ... BNG 6 TREPLY3 [BRN IF NOT ONLINE
3TNN ... SEGENTRY K62LISTPARS
3TQX ... BRN TREPLY3
3TT6 ... TESTREP2 NOTAV,NAV,WRNG,WR
3TX* ...TREPLY3
3T^J ... SEGENTRY K63LISTPARS
3W3W TESTREP2 NOPER,NOP,XPROP,XP,PERMEXCL,PE,NOPROP,NOPR
3WHG [
3X36 [ OKAY = DEVICE IS FREE
3XGQ [ NOTAV = DEVICE EXISTS BUT IS NOT AVAILABLE
3Y2B [ NOPER = DEVICE IS NOT ALLOCATED TO GEORGE
3YG2 [ XPROP = PROPERTY POINTED AT BY ACOM1 DOES NOT EXIST
3Y^L [ PERMEXCL = ALL DEVICES OF THIS TYPE HAVE UNSPECIFIED PERMANENT
3^F= [ EXCLUSIVE PROPERTIES
3^YW [ NOPROP = NO DEVICE HAS PERMANENT PROPERTIES REQUESTED
4264 [ TWOMEEPS = TWO SIGNET PROPERTIES REQUESTED IN LF
42?= [ XMEEP = MEEP PROPERTY NOT ALLOWED WITH CONSOLE PROPERTY
42DG [
42HL #UNS G3SIGNET
42LQ (
42PW TESTREP2 TWOMEEPS,XMEEPERR,XMEEP,XMECON
42T2 )
42Y6 TESTREP2 XCPROP,XC,MAXATT,XT,CPROPS,XLF
43CQ XGEO
43XB GEOERR 1,PERIPHLF
44C2 [
44WL [ XCPROP = THIS IS AN ONLINE REQUEST,AND THE PROPERTY POINTED
45B= [ AT BY ACOM1 IS A CONSOLE PROPERTY
45TW [ MAXATT = TO MANY PROPERTIES SPECIFIED
46*G [ CPROPS = MORE THAN ONE OF THE PROPERTIES IS A CONSOLE PROPERTY
46T6 [ WRNG = ALL SUITABLE DEVICES ARE WRONGED
47#Q ZERRORY
47SB NOP
48#2 SPARANOX AWORK3(2) [ GET PERIPHERAL TYPE
48RL ZERRORX JPERNA
48TT ...NAV
48Y4 ... SPARANOT 1
492? ... ZERRORX JPERNCA
494G ...WR
496P ... SPARANOT 1
498Y ... ZERRORX JPERWR
49?= PE
49QW ZERRORX JPERMX
4==G XT
4=Q6 ZERRORX JPERR2
4=S4 #UNS G3SIGNET
4=W2 (
4=XY XMEEPERR
4=^W ZERRORX JTWOMP
4?3S XMECON
4?5Q ZERRORX JMECON
4?7N )
4?9Q XLF
4?PB BPZ 6 XC [ ERROR IF ONLINE
4#92 ZERRORX JPERR3
4#NL PARER
4*8= [ S/R FOR PICKING UP PROPERTY NAME
4*MW SBX 4 FX1
4B7G LDN 5 6
4BM6 MHUNT 3,CPB,CUNI
4C6Q ALTLEN 3,5,CPB,CUNI [ ENSURE BIG ENOUGH
4CLB MHUNTW 1,APERI,APROPS
4D62 MHUNT 3,CPB,CUNI
4DKL ADX 1 ACOMMUNE1(2)
4F5= LDN 2 ANUM(3)
4FJW LDX 5 0(1) [ LOAD NO.OF CHARACTERS IN PROPERTY
4G4G ADN 5 4 [ ADD 4 FOR COUNT
4GJ6 SMO 5
4H3Q MVCH 1 0
4HHB ADX 4 FX1
4J32 EXIT 4 0
4JGL XP
4K2= CALL 4 PARER
4KFW ZERRORX JPROPUNK
4K^G XC
4LF6 BNG 6 XGEO [ J IF NOT ONLINE
4LYQ CALL 4 PARER
4MDB ZERRORX JPERR1
4MY2 NOPR
4NCL ZERRORX JLFNPERM
4PWG [
4QB6 [ ****************************************
4QTQ [
4R*B [SUCCESS
58H= OK
592W ORX 5 PERFREBIT(1)
59GG OK1
5=26 STO 5 AWORK1(2)
5=FQ SLL 4 18
5=^B STO 4 AWORK3(2) [ PRESERVE GOPTY
5?F2 LDX 6 AWORK4(2) [ NUMBER OF PARAMETERS LEFT
5?YL STOZ AWORK4(2) [ INDEX SUB-KEY
5#D= LFHUNT 7,AWORK2(2),AWORK4(2)
5#XW LDX 0 PERISBIT(1)
5*CG ERS 0 GMODE(3)
5*X6 LDX 0 PERFREBIT(1)
5BBQ ANDX 0 AWORK1(2)
5BWB ORS 0 GMODE(3)
5CB2 HUNTW 1,APERI,APROPNOS
5CTL BNG 1 NOPRO
5D*= NAME 1,GOUT,INFO4
5DSW SMO FX1
5F#G LDX 0 PROPBIT
5FS6 ORS 0 AWORK1(2)
5G?Q ORS 0 GMODE(3)
5GRB CHAIN 1,3
5H?2 VFREE CPB,CUNI
5HQL NOPRO
5J== LDX 1 FX1 [ SET X1=FX1
5JPW [
5K9G [NEXT ANALYSE THE SETUP PARAMETER
5KP6 [
5L8Q BZE 6 NOSETUP [ NO MORE PARAMETERS
5LNB LDN 6 1
5M82 LDN 7 5
5MML XAGAIN
5N7= SPARABEX 6,7,SETUP(1),,0
5NLW MHUNT 1,CPB,CUNI
5P6G LDX 4 ANUM(1)
5PL6 BPZ 4 XOK [ J IF NOT NONEXISTSTENT
5Q5Q FREECORE 1
5QKB SBN 7 3
5R52 LDN 6 1 [ RESET X6
5RJL BPZ 7 XAGAIN [ IF NOT'SETUP',TRY'SE'
5S4= BRN NOSETUP [ J NOT FOUND
5SHW XOK
5YDW LDX 6 JPARNUM(1)
5YYG BZE 4 NOFILENAME
5^D6 COMPACT [ REMOVES REDUNDANT FILENAME SPACES
5^XQ MHUNT 1,CPB,CUNI
62CB NAMETOP 1,FILE,FNAME
62X2 BPZ 5 NOMSGE [ J IF NOT ONLINE
63BL MONOUT JSEWT [ WAITING FOR PRINTER TO BE LINED UP
63W= NOMSGE
64*W PARAMOVE 7,6 [ GET SE PARAM WITHOUT SE IN CALAS
64TG LDX 0 SETUPBIT(1) [ TO SHOW THERE IS
65*6 ORS 0 AWORK1(2) [ A SETUP FILE
65SQ LDCH 4 AWORK3(2) [ OUTPUT PERI TYPE
66#B ANDN 4 2
66S2 BZE 4 WRONGPERIF [ J NOT LP
66T? ...#SKI G253&1
66WJ ...(
66XT ... IF BC,2,CXTUSER
66^6 ... THEN
672C ... FNORM 2
673N ... TESTRPN2 OK,SEND
674^ ... MHUNT 1,FILE,FNAME
676= ... NAMETOP 1,CPB,CUNI
677H ... CALL 4 RU2
678S ... FI
67=5 ...)
67?L ACROSS LISTFREE,1
67R= NOSETUP
67YD ...#SKI G253&1
685L ... CALL 4 RU2 [ CHANGE CPREFIX FOR TRAPS
68=W ACROSS LISTFREE,2
68QG SBRKIN
69=6 LFHUNT 7,AWORK2(2),AWORK4(2)
69PQ FREECORE 3
6=9B SCOM
6=P2 COMBRKIN
6?8L SEND
6?N= ENDCOM
6?P9 ...#SKI G253&1
6?Q8 ...(
6?R7 ...RU2 [ NO USER CONTEXT TIDY UP
6?S6 ... IF BC,2,CXTUSER
6?T5 ... THEN
6?W4 ... MHUNT 1,IUSER,JBL
6?X3 ... LDN 5 JUSER(1) [ PROPER USERNAME
6?Y2 ... LDN 6 CPREFIX(2)
6?Y^ ... MOVE 5 3
6?^Y ... FREECORE 1
6#2X ... MHUNT 1,FILE,FNAME
6#3W ... NAMETOP 1,CPB,CUNI [ FOR REPERR
6#4T ... FI
6#5S ... EXIT 4 0
6#6R ...)
6#7W [
6#MG [THIS DEALS WITH CASE WHERE THERE IS NO MULTIREEL FILE ALLOWED
6*76 [I.E. WHERE THERE IS NO PERIPHERAL PARAMETER
6*LQ [
6B6B NMONFOP
6B?J ...#SKI G253&1
6BDQ ... CALL 4 RU2
6BL2 LDN 4 4 [ MASK FOR TESTRACE MACRO
6C5L TESTRACE 4,NOMON
6C73 ...#SKI G253&1
6C8D ...(
6C9T ... LDBIT 4,ECVUSER
6C?= ... ANDX 4 CONTEXT(2)
6C#M ... SETMODE 3,READ,LEAVE
6CB4 ... BNZ 4 USER1 [ SET 'TERMDIR' IN NO-USER CXT TO
6CCF ... ADDMODE 3,TERMDIR [ AVOID 'ASSIDIR' PRIV CHECK WHICH
6CDW ...USER1 USEROPEX SCOM,3 [ BREAKS IF SUPERIOR IS :MASTER.
6CG? ...)
6CHN ...#SKI G253&1$1
6CK= USEROPEN SCOM,READ,LEAVE
6D4W REPERR OKAY1
6DJG BRN SEND [ ENDCOM
6F46 OKAY1
6F48 [
6F49 SMO FX2
6F4= LDX 3 CONTEXT
6F4? BNG 3 OKAY2 [J IF SYSTEM ISSUED JOB
6F4# [ MUST CHECK FILE NOT A VITAL SYSTEM FILE OR MACRO
6F4* MHUNTW 3,FILE,ENT
6F4B JBC OKAY2,3,BECARE
6F4D CLOSE
6F4G ZERRORX ERWRONG
6F4J BRN SEND
6F4L OKAY2
6F4N ...#SKI G253&1
6F4Q ...(
6F4S ... BNZ 4 USER2
6F4W ... TREPN2 DIR,USER2
6F4Y ... CLOSETOP
6F52 ... ZERRORX ERWRONG [ STOP NO-USER LF OF DIRECTORY
6F54 ...USER2
6F56 ...)
6FHQ MHUNTW 3,GOUT,INFO
6MWW MHUNTW 1,FILE,ENT
6N4Y IF +ETM(1),NZ [ NOT AMORPHOUS FILE
6N?2 THEN
6NF4 BS 3,BLFBASIC
6NF# ...#SKI G502&1
6NFJ ...(
6NFS ...# THIS INSERTION GIVES DEFAULT MODES OF ONLINE MOP LISTING FOR THE
6NG4 ...# FILE TYPES GRAPHIC, NORMAL, ALLCHAR. THESE ARE OVERRIDDEN BY
6NG# ...# USE OF ANY OF THE PARAMETERS 'GRAPHIC', 'NORMAL', 'ALLCHAR',
6NGJ ...# 'SHIF', 'GR', 'PICT' IN THE LISTFILE COMMAND.
6NGS ...#
6NH4 ... IF MBAC,3,BLFXTRASHIF,BLFXTRAGR,BLFSPECIAL
6NH# ... LDN 4 #10
6NHJ ... ANDX 4 ETM(1)
6NHS ... AND 4,ZE
6NJ4 ... THEN [ NOT GRAPHIC
6NJ# ... LDN 4 #20
6NJJ ... ANDX 4 ETM(1)
6NJS ... IF 4,ZE
6NK4 ... THEN [ NORMAL
6NK# ... BS 3,BLFXTRASHIF
6NKJ ... ELSE [ ALLCHAR
6NKS ... MBS 3,BLFXTRASHIF,BLFXTRANOPA
6NL4 ... FI
6NL# ... FI
6NLJ ...)
6NM6 FI
6NT8 FREECORE 1
6P3= IF EITHER,+GFLI(3),NZ [ "FROM" SELECTION
6P9# OR BS,3,BLFTOCTEXT [ "TO" CONTEXT SELECTION
6PCB THEN
6PKD DOWN LISTRING,2
6PRG ELSE
6P^J STEP
6Q7L IF 3,ZE [ FILE EMPTY
6Q*N THEN
6QHQ DOWN LISTRING,3
6QPS FI
6QXW FI
6R5Y ACROSS LISTMOP,1
6R#=
6RRW [
6S?G [
6SR6 WRONGPERIF
6T=Q ZERRORX HSETUP
6TQB WRONGFN
6W=2 XFORMAT
6WPL ZERRORX APFERR
6X9= NOFILENAME
6XNW LDX 1 FX1
6Y8G BZE 3 NOPROPERTY
6YN6 LDX 2 XJFNAME(1)
6^7Q BRN XCOMR
6^MB NOPROPERTY
7272 LDX 2 XJPROPNA(1)
72LL XCOMR
736= LDX 1 XJPARMIS(1)
73KW COMERRX 1,2
745G NOMON
74K6 MONOUT JMTRACE1
754Q BRN SEND
75JB XJFNAME
7642 +JFNAME
76HL XJPROPNA
773= +JPROPNA
77GW XJPARMIS
782G +JPARMIS
78G6 [
78^Q ZERRORY
79FB [THIS ENTRY POINT IS FROM MACROS SAR AND DOES MOST OF THE WORK FOR THE
79^2 [PROPERTY MACRO
7=DL [ %A LABEL TO JUMP TO IF THE PARAMETER IS NULL OR NONEXISTENT
7=Y= [ %B NO. OF THE FIRST PARAMETER NOT TO BE CHECKED FOR PR OR PROPERTY
7?CW [ %C NO. OF THE 2ND PARAMETER NOT TO BE CHECKED FOR PR OR PROPERTY
7?XG [ ALL ACCUMULATORS ARE OVERWRITTEN
7#C6 [ A CPB/CUNI IS LEFT AS AFTER A SPARABEG ON PR OR PROPERTY
7#WQ [
7*BB ZFRELINK
7*W2 LDX 0 AWORK1(2)
7B*L BZE 0 ZNFR
7BT= FREELINK
7C#W ZNFR
7CSG EXIT 7 0
7D#6 ZPROPERTY
7DRQ 8HPROPERTY
7F?B POINT4
7FR2 STO 1 AWORK1(2)
7G=L PRTEST
7GQ= LDN 6 1
7H9W LDN 7 8
7HPG ZAGAIN
7J96 SPARABEX 6,7,ZPROPERTY(1) [ ANALYSE PR OR PROPERTY
7JNQ MHUNT 1,CPB,CUNI
7K8B LDX 3 ANUM(1)
7KN2 BNG 3 ZNONE
7L7L BNZ 3 ZOK [ J IF PRESENT
7LM= ZNONE
7M6W FREECORE 1
7MLG SRL 7 2 [ X7=0 OR 2
7N66 LDN 6 1 [ RESET X6
7NKQ BNZ 7 ZAGAIN
7P5B LDX 0 AWORK1(2) [ TEST IF WE HAVE COME HERE FROM
7PK2 BZE 0 XISPER [ WITHIN THIS SEGMENT
7Q4L UP
7QJ= ZOK
7R3W LDX 0 JPARNUM(1)
7RHG SBX 0 4
7S36 BZE 0 ZNOT
7SGQ SBX 0 5
7T2B ZNOT
7TG2 BNZ 0 ZOK1
7T^L ADN 6 1
7WF= FREECORE 1
7WYW BRN ZAGAIN
7XDG ZEND1
7XY6 CALL 7 ZFRELINK
7YCQ ZERRORX JNLFNF
83T6 ZZ
84#Q CALL 7 ZFRELINK
84SB ZERRORX APFERR
84WK #UNS ANSTOOMANY
84YS (
8533 XTOOMANY
855= CALL 7 ZFRELINK
857F ZERRORX JMAXPAR
859N )
85#2 ZOK1
85RL BZE 2 ZZ
86?= [ THE FOLLOWING PARALYSE USES JPARNUM OF /CUNI, WHICH
86QW [ HOLDS THE PARAMETER NUMBER OF THE PARENT PARAMETER IN
87=G [ THE CPB/CALAS. FOR THIS REASON, MACROS 'PROPERTY' AND
87Q6 [ 'PROPUNAC' MAY ONLY BE USED AT ANALYSIS LEVEL ZERO.
889Q PARALYSE #26,,JPARNUM(1) [ SPLIT AT &
88BY #UNS ANSTOOMANY
88J6 TESTREP2 TOOMANY,XTOOMANY
88PB PARANUMB 6
8992 LDX 3 6
89NL SLL 3 2
8=8= ADN 3 2 [ BLOCK LENGTH
8=MW SETUPCORE 3,2,APERI,APROPS [ SET UP APERI APROPS FOR ISPER
8?7G STO 3 A1+FRH(2) [ STORE FR+1
8?M6 STO 6 A1+1(2) [ STORE PROPERTY COUNT
8#6Q SPARAPAS [ SET UP POINTER FOR NEXT SPARAPAS
8#LB MFREE CPB,CUNI
8*62 LDX 0 AWORK1(2)
8*KL SBN 0 1
8B5= BZE 0 ZSPAR [ IF NOT PROPUNAC THEN
8BJW LDX 4 ZPROPERTY(1) [ X45 := 'PROPERTY'
8C4G LDX 5 1+ZPROPERTY(1) [ (OTHERWISE ALREADY KEYSTRING)
8CJ6 ZSPAR
8D3Q [ FI
8DHB SPARABEG 1,7,4
8F32 LDN 5 A1+2 [ START OF PROPERTY RECORD
8FGL BRN ZFIRST
8G2= ZNEXT
8GFW SPARAPAS [ PASS 1ST PROPERTY
8G^G ZFIRST
8HF6 MHUNT 3,CPB,CUNI
8HYQ CHEKLFN2 ZZ,ZEND1,3
8JDB MHUNTW 1,APERI,APROPS
8JY2 LDN 4 APARA(3)
8KCL ADN 5 0(1)
8KX= LDEX 2 ANUM(3)
8LBW SMO 5
8LWG STO 2 0 [ STORE CHARACTER COUNT
8MB6 ADN 5 1
8MTQ ADN 2 3
8N*B SRL 2 2 [ NO OF WORDS TO MOVE
8NT2 MOVE 4 0(2) [ MOVE PROPERTY TO BLOCK
8P#L ADX 5 2
8PS= ERN 2 3 [ NO OF WORDS TO SPACE FILL
8Q?W BZE 2 ZOK4
8QRG LDX 0 ACES
8R?6 ZSF
8RQQ SMO 5
8S=B STO 0 0 [ STORE SPACES
8SQ2 ADN 5 1
8T9L BCT 2 ZSF
8TP= ZOK4
8W8W [
8WNG [ THE FOLLOWING SECTION CHECKS WHETHER THE PROPERTY NAME JUST ADDED
8X86 [ ALREADY EXISTS IN THE APROPS BLOCK (I.E. WAS DUPLICATED IN THE
8XMQ [ PARAMETER). IF IT DOES, THEN THE NAME IS FORGOTTEN AND THE
8Y7B [ RELEVANT POINTERS AND HEADERS DECREMENTED
8YM2 [
8^6L [ ACCUMULATORS 0,2,3,4 DESTROYED IN THIS SECTION
8^L= [
925W LDX 4 1
92KG FREECORE 3
9356 LDX 1 4
93JQ LDN 2 A1+2(1) [ X2(CURRENT CELL) -> FIRST CELL
944B UNTILJUST
94J2 LDX 3 5 [ X3 -> CELL JUST COPIED OVER
953L SBN 3 4
95H= BXE 2 3,UNIQUECELL [ UNTIL CURRENT IS JUSTCOPIED DO
962W LDN 4 4
96GG TINYLOOP
9726 LDX 0 0(2)
97FQ BXU 0 0(3),THESEDIFF [ IF CELLS EQUAL
97^B ADN 2 1
98F2 ADN 3 1
98YL BCT 4 TINYLOOP [ THEN
99D= LDN 0 4
99XW SBS 0 A1(1) [ REDUCE HDDR WD
9=CG LDN 0 1
9=X6 SBS 0 A1+1(1) [ REDUCE PROP COUNT WD
9?BQ SBN 5 4 [ SET WRITE PTR BACK ONE CELL
9?WB BRN UNIQUECELL [ GOTO UNIQUECELL
9#B2 THESEDIFF
9#TL [ FI
9**= ADX 2 4
9*SW BRN UNTILJUST [ REPEAT
9B#G UNIQUECELL
9BS6 [
9C?Q [ END OF DUPLICATION CHECK
9CRB [
9D?2 SBN 5 0(1)
9DQL BCT 6 ZNEXT
9F== PARAFREE
9FPW LDX 0 AWORK1(2) [ TEST IF WE HAVE COME HERE FROM
9G9G BZE 0 XISPER [ WITHIN THIS SEGMENT
9GP6 SBN 0 1
9H8Q BZE 0 ZUP2 [ IF FROM K4 (PROPERTY) ...
9HNB UPPLUS 1 [ THEN AVOID BRN %A
9J82 ZUP2
9JML [ ELSE FROM K5 (PROPUNAC)
9K7= UPPLUS 2 [ WHEN ALSO MUST AVOID BRN %B
9KLW [
9L6G [ ****************************************************************
9LL6 [
9M5Q [ W W WWWWW
9MKB [ W W W
9N52 [ W W WWWW
9NJL [ WW WW
9P4= [ W W W
9PHW [ W W WW
9Q3G [ W W WWWW
9QH6 [
9R2Q [
9RGB [ MACRO 'PROPUNAC' FINDS THE FIRST UNACCESSED PARAMETER COMMENCING
9S22 [ WITH A SPECIFIED STRING. IF NONE GIVEN,TRIES FOR
9SFL [ 'PROPERTY', OR IF THERE ISN'T ONE, THE FIRST COMMENCING 'PR',
9S^= [
9TDW [ %A - LABEL TO GOTO IF PARAMETER IS ABSENT
9TYG [ %B - LABEL TO GOTO IF PARAMETER IS NULL
9WD6 [ %C - CHAR CT OF KEYSTRING (OPTIONAL)
9WXQ [ %D - KEYSTRING IF %C GIVEN (DEFAULT 1+%C)
9XCB [
9XX2 [ BLOCKS SET UP :
9YBL [ CPB/CUNI AS AFTER SPARABEG ON KEYSTRING
9YW= [ (IF PARAMETER EXISTS)
9^*W [ APERI/APROPS CONTAINING PROPERTY NAMES
9^TG [ (IF NON-NULL PARAM FOUND)
=2*6 [
=2SQ [
=3#B POINT5
=3S2 LDN 7 1
=4?L STO 7 AWORK1(2) [ TO CONTROL THE EXIT AFTER ZOK4
=4R= LDN 6 0 [ X6=0 => KEYSTRING PARAM
=5=W LDX 7 ACOMMUNE1(2)
=5QG BZE 7 STDEFAULT [ IF KEY WAS GIVEN THEN
=6=6 LDX 4 ACOMMUNE2(2)
=6PQ LDX 5 ACOMMUNE3(2) [ X45 := KEY
=79B BRN NXTPROPTEST [ ELSE
=7P2 STDEFAULT
=88L LDN 6 1 [ X6 => NO KEYSTRING
=8N= LDX 4 ZPROPERTY(1)
=97W LDX 5 1+ZPROPERTY(1) [ X45 := 'PROPERTY'
=9MG LDN 7 8
==76 NXTPROPTEST
==LQ SPARABEG 1,7,4,,0
=?6B MHUNT 1,CPB,CUNI
=?L2 LDX 3 ANUM(1)
=#5L BNG 3 ZNONE1 [ IF PARAM FOUND THEN
=#K= BNZ 3 ZOK1 [ IF NOT NULL, SET UP APROPS
=*4W UPPLUS 1 [ ELSE BRN %B - NULL PARAM
=*JG ZNONE1
=B46 [ FI
=BHQ FREECORE 1
=C3B SRL 7 2 [ ELSE
=CH2 BZE 6 STK5UP [ (NO RETRY IF KEY SPECIFIED)
=D2L BNZ 7 NXTPROPTEST [ IF LOOKED FOR 'PROPERTY', TRY 'PR'
=DG= STK5UP
=D^W UP [ ELSE BRN %A - NO PARAM FI
=FFG [ FI
=F^6
=GDQ [
=GYB [***********************************************************************
=HD2 POINT2
=HXL [THIS IS THE ENTRY POINT FROM LISTFILE
=JC= [WE CHECK FOR ANY PROPERTY PARAMETERS
=JD^ ...#SKI G253&1
=JGN ...(
=JJC ... LDX 5 AWORK2(2) [ NO OF PARAMS BEFORE FILENAME
=JL6 ... BZE 5 RU1 [ J IF ORDINARY LISTFILE
=JMT ... LDX 4 GSIGN
=JPJ ... ORS 4 ALFCNT(2) [ MARKER NOT TO COUNT THIS LISTING
=JR? ...RU1
=JT2 ...)
=JWW LDX 0 AWORK4(2)
=KBG BZE 0 XISPER [ J IF NO MORE PARAMETERS
=KW6 MHUNTW 3,GOUT,INFO
=L5Y ...#SKI G253&1$1
=L*Q LDN 5 0
=LTB LDN 4 1
=M*2 STOZ AWORK1(2)
=MSL BRN PRTEST
=N#= [***********************************************************************
=NRW POINT3
=P?G [THIS ENTRY POINT IMPLEMENTS THE MACRO LFMULT.
=PR6 [AND SETS UP GWAKECOUNT AND GMULTID.
=Q=Q [
=QQB MHUNTW 1,GOUT,INFO
=R=2 LFHUNT 7,GOUTKEY1(1),GOUTKEY2(1)
=RPL SMO FX1
=S9= LDX 0 SETUPBIT
=SNW ANDX 0 GMODE(3)
=T8G BZE 0 NOSETUPM [ J IF NO SETUP FILE
=TN6 SMO FX1
=W7Q LDX 0 SMULTSETBIT
=WMB ORS 0 GMODE(3) [ TO PREVENT THAWING AT LISTNEXT
=X72 NOSETUPM
=XLL SMO FX1
=Y6= LDX 0 SMULTFILE
=YKW ORS 0 GMODE(3) [ SET B13 TO IND. MF
=^5G LDX 0 ACOMMUNE1(2)
=^K6 STO 0 GWAKECOUNT(3)
?24Q LDX 0 ACOMMUNE2(2)
?2JB STO 0 GMULTID(3)
?342 [
?3HL MHUNT 1,FILE,FABSNB [ UPDATE GEN. NO. IN FABSNB
?43= ADX 1 HDREC(1) [ SO THAT IT NOW NAMES THE
?4GW SBN 1 2 [ FIRST COMPONENT AND NOT
?52G LDN 0 1 [ THE S.D.F.
?5G6 ADS 0 HDREC(1)
?5^Q CLOSETOP [ CLOSE DIRECTORY
?6FB UP
?6^2 #END
^^^^ ...610755360003