Contact us Heritage collections Image license terms
HOME ACL Associates Technology Literature Applications Society Software revisited
Further reading □ Contents1. Introduction2. Basic symbols and comments3. Identifiers, accumulators and cells4. Types and values5. Addresses and storage allocation6. Simple cell designation7. Assignment statements8. Integer accumulator assignments9. Real accumulator assignments10. Long accumulator assignments11. Cell assignments12. Block structure13. Procedures and labels14. Conditional and control statements15. Functions16. Cell declarations17. Synonym declarations18. Storage allocation19. Subcompilation and global storage20. Define statements, conditional compilation and include statements21. Compiler directives22. FORTRAN/PLASYD mixed programming23. ALGOL/PLASYD mixed programming24. Useful library routines25. Use of TASK macro to compile PLASYD programs26. SMO cell designation27. Compiler output28. PLAN instructions not provided for in PLASYD □ Appendices □ 1: Errors and comments2: 1900 character set3: Syntax definitions in alphabetical order4: Use of program XMED5: 1900 order code6: Code genereated for typical PLASYD statements7: A sample PLASYD program8: Less commonly used directivesReferences
ACD C&A INF CCD CISD Archives Contact us Heritage archives Image license terms

Search

   
ACLLiteratureICL 1906A manualsPLASYD
ACLLiteratureICL 1906A manualsPLASYD
ACL ACD C&A INF CCD CISD Archives
Further reading

Contents1. Introduction2. Basic symbols and comments3. Identifiers, accumulators and cells4. Types and values5. Addresses and storage allocation6. Simple cell designation7. Assignment statements8. Integer accumulator assignments9. Real accumulator assignments10. Long accumulator assignments11. Cell assignments12. Block structure13. Procedures and labels14. Conditional and control statements15. Functions16. Cell declarations17. Synonym declarations18. Storage allocation19. Subcompilation and global storage20. Define statements, conditional compilation and include statements21. Compiler directives22. FORTRAN/PLASYD mixed programming23. ALGOL/PLASYD mixed programming24. Useful library routines25. Use of TASK macro to compile PLASYD programs26. SMO cell designation27. Compiler output28. PLAN instructions not provided for in PLASYD
Appendices
1: Errors and comments2: 1900 character set3: Syntax definitions in alphabetical order4: Use of program XMED5: 1900 order code6: Code genereated for typical PLASYD statements7: A sample PLASYD program8: Less commonly used directivesReferences

APPENDIX 3: SYNTAX DEFINITIONS IN ALPHABETICAL ORDER

αaccsyn             ::= αidentifier SYN αacc {α=x|r|xx|rr}
αaccsyndec          ::= ACC αaccsynlist, αaccsyn {α=x|r|xx|rr}
αaccsynlist         ::= αaccsyn|αaccsynlist, αaccsyn {α=x|r|xx|rr}
αcell               ::= simpleαcell|smoαcell  {α=x|r|xx|rr}
αcelldec            ::= αtype αitemlist; {α=x|r|xx|rr}
αcellsyndec         ::= αtype αsynlist; {α=x|r|xx|rr}
αfixedcell          ::= αidentifier|αidentifier(integer)|αidentifier(-integer) {α=x|r|xx|rr}
αidentifier         ::= identifier {α=x|r|xx|rr}
αinitial            ::= αvalue {α=r|xx|rr}
αinitiallist        ::= αinitial|αinitial*integer|αinitiallist,αinitial|
                              αinitiallist, αinitial*integer {α=x|r|xx|rr}
αitem               ::= αidentifier|αidentifier=αinitial|αidentifier(integer)|
                              αidentifier(integer)=(αinitiallist) {α=x|r|xx|rr}
αitemlist           ::= αitem|αitemlist, αitem { α= x|r|xx|rr}
αrelationex         ::= αacc relation αprimary {α=r|xx|rr}
αsyn                ::= αidentifier SYN fixedcell|αidentifier SYN(integer)|
                              αidentifier SYN (integer)=αinitial {α=x|r|xx|rr}
αsynlist            ::= αsyn|αsynlist, αsyn {α=x|r|xx|rr}
accsyndec           ::= xaccsyndec|raccsyndec|xxacsyndec|rracsyndec
addop               ::= +|-|++|--
address             ::= wordaddress | CHAR integer | CHAR integer OF wordaddress | @ identifier
addto               ::= ADDTO (file. subfile)|ADD TO (file. subfile) 
andexpression       ::= condition AND condition|andexpression AND condition
aop                 ::= +|-|*|/
assignment          ::= xassignment|rassignment|xxassignntent|rrassignment
basedec             ::= BASE;
basicfixed          ::= @fixedcell|$fixedcell|£identifier
basicsymbol         ::= char|reservedword|'|"
block               ::= BEGIN blockbody label? END|BEGIN declist blockbody label? END
blockbody           ::= statement;|blockbody statement;
blockidentifier     ::= identifier
casestatement       ::= CASE modifier OF statementlist CASEND
cell                ::= xcell|rcell|xxcell|rrcell
cellassignment      ::= xcellassignment|rcellassignment|xxcellassignment|rrcellassignment
celldec             ::= xcelldec|rcelldec|xxcelldec|rrcelldec
celldeclist         ::= celldec|celldeclist celldec
cellidentifier      ::= upperidentifier|loweridentifier
cellsyndec          ::= xcellsyndec|rcellsyndec|xxcellsyndec|rrcellsyndec 
ch                  ::= char|''|_|"
char                ::= letter|digit|+|-|*|/|<|=|>|#|,|.|;|:|@|&|%|(|)|[|]|£|$|?|!
charel              ::= <CH|>CH|≤CH|≥CH
charsequence        ::= 'ch'|'ch ch'|'ch ch ch'|'ch ch ch ch'
complexstatement    ::= ifstatement|forstatement|whilestatement|includestatement|
                        label complexstatement
conditcomp          ::= ?integer(section of program)?integer
condition           ::= relationex|OVERFLOW|FOVERFLOW|CARRY|NOT OVERFLOW|NOT FOVERFLOW|NOT CARRY
coperand            ::= integer|octalinteger|modifier|simplexcell
count               ::= integer CNT
compilesmo          ::= COMPILESMO
datastatement       ::= DATA initial|DATA(initiallist)
dec                 ::= accsyndec|cellsyndec|definedec|externaldec|
                        nonplasyddec|proceduredec|puredec|storagedec
declist             ::= dec|declist dec
defbasic            ::= integer|identifier
defexpr             ::= defprim|defprim aop defbasic
definedec           ::= DEFINE deflist ;
definestat          ::= DEFINE deflist ;
deflist             ::= identifier=defexpr|deflist, identifier=defexpr
defprim             ::= defbasic|$fixedcellidentifier|@fcd-@fcd|
                        £upperidentifier-£upperidentifier|
                        £loweridentifier-£loweridentifier|
                        @instruction identifier-@instruction identifier
digit               ::= 0|1|2|3|4|5|6|7|8|9
dumpon              ::= DUMPON (file)|DUMP ON (file) 
exponent            ::= integer|MINUS integer
extendedcell        ::= cell|upperidentifier (integer)|upperidentifier (-integer)
externaldec         ::= EXTERNAL externallist;
externallist        ::= spec|externallist, spec
fcd                 ::= integer|identifier(integer)|identifer(-integer)
fidone              ::= BRN|BVS|BVSR|BVC|BVCR|BCS|BCC|BVCI|SUSTY|DISTY|
                        DELTY|SUSWT|DISP|DEL|OBEY|MODE|FIX|SFPZ|SMO|
                        STOZ|ACT|RMS
fidsimple           ::= NULL|SUSAR|LFPZ
fidtwo              ::= SFP|SUSBY|REL|DIS|CONT|SUSDP|ALLOT|PERI|SUSMA|
                        AUTO|SUSIN|GIVE|RRQ|LDX|ADX|NGX|SBX|LDXC|ADXC|
                        NGXC|SBXC|STO|ADS|NGS|SBS|STOC|ADSC|NGSC|SBSC|
                        ANDX|ORX|ERX|LDCH|LDEX|TXU|TXL|ANDS|ORS|ERS|
                        DCH|DEX|DSA|DLA|MPY|MPR|MPA|CDB|DVD|DVR|DVS|
                        CBD|BZE|BNZ|BPZ|BNG|BUX|BDX|BCHX|BCT|CALL|EXIT|
                        BFP|LDN|ADN|NGN|SBN|LDNC|ADNC|NGNC|SBNC|SLC|SLL|
                        SLA|SRC|SRL|SRA|SRAV|NORM|MVCH|SLC2|SLL2|SLA2|
                        SRC2|SRL2|SRA2|SRAV2|ANDN|ORN|ERN|LDCT|MOVE|SUM|
                        FLOAT|DAF|FSB|FMPY|FDVD|LFP
file                ::= filename|filename (integer)
fixedaddress        ::= basicfixed|CHAR integer|CHAR integer OF basicfixed|
                        @identifier|@lidentifier
fixedcell           ::= xfixedcell|xxfixedcell|rfixedcell|rrfixedcell
forstatement        ::= FOR xassignment STEP increment UNTIL xprimary DO statement
fraction            ::= integer . digit|fraction digit
functionstatement   ::= simplef|oneargf|twoargf
gl                  ::= GLABEL:
gldeclist           ::= blockidentifier : simpledeclist| gldeclist blockidentifier : simpledeclist
globaldec           ::= GLOBAL gldeclist GLOBEND;
globalseg           ::= GLOBAL SEGMENTS
                    ::= blockidentifier : simpledeclist|gldeclist blockidentifier:simpledidist
gotostatement       ::= GOTO lidentifier|GOTO pidentifier|
                        GO TO lidentifier|GO TO pidentifier
identifier          ::= letter|%|identifier letter|identifier digit|identifier %
ifstatement         ::= IF logicalexpression THEN simplestatement ELSE statement|
                        IF logicalexpression THEN statement
ignore              ::= IGNORE (updown)
includestat         ::= INCLUDE(subfilename)|INCLUDE(subfilename, SL)
increment           ::= xprimary|-xprimary|CHAR
initial             ::= xinitial|rinitial|xxinitial|rrinitial
initiallist         ::= initial|initial*integer|initiallist,initial|
                        initiallist, initial*integer
instridentifier     ::= lidentifier|pidentifier
integer             ::= digit|integer digit
label               ::= gl? lidentifier:|ENTRY digit:
letter              ::= A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z
libfile             ::= LIBRARY (file. subfile) 
lidentifier         ::= identifier
listlevel           ::= LIST|SHORTLIST|NOLIST
local               ::= LOCAL  localtail
localseg            ::= LOCAL SEGMENTS
localtail           ::= ALL|: namelist|ALL BUT:namelist
logical             ::= AND|OR|ER
logicalexpression   ::= andexpression|orexpression|condition
lowerαidentifier    ::= identifier   {α=x|r|xx|rr}
loweridentifier     ::= lowewrxidentifier|lowerridentifier|lowerxxidentifier|lowerrridentifier
lowerdec            ::= LOWER lwdeclist LOWEND;
lowerglobaldec      ::= GLOBAL lowergldeclist GLOBEND;
lowergldeclist      ::= blockidentifier:celldeclist|lowergldeclist blockidentifier:celldeclist
lwdeclist           ::= celldec|lowerglobaldec|lwdeclist celldec|lwdeclist lowerglobaldec
macrofile           ::= MACROFILE (file)
mda                 ::= 15AM|22AM
mdb                 ::= DBM|EBM
mdc                 ::= 15CH|22CH|MIXAM
mdd                 ::= 15AM|22AM|MIXAM
mde                 ::= DBM|EBM|MIXBM
modifer             ::= X1|X2|X3
monadic             ::=  NEG|EX|CH|CARRY|NEG CARRY
nameline            ::= NAME (name)
namelist            ::= name, namelist|name
nonplasyddec        ::= NONPLASYD externallist;
nonplasydstatement  ::= pidentifier|lidentifier|pidentifier(integer)|lidentifier(integer)
nparam              ::= simplecell|integer|octalinteger|charsequence|
                        pidentifier|lidentifier
numberlist          ::= integer, nunberlist|integer
obeystatement       ::= OBEY xcell
octaldigit          ::= 0|1|2|3|4|5|6|7
octalinteger        ::= #octaldigit|octalinteger octaldigit
oneargf             ::= !fidone  (nparam)
orexpression        ::= condition OR condition|orexpression OR condition
overlay             ::= OVERLAY (integer, integer) namelist
overcommon          ::= OVERCOMMON (integer) namelist
partaddress         ::= £cellidentifier|$cellidentifier
partop              ::= EX|SA|LA|CH
pidentifier         ::= identifier
pmodedescrip        ::= mdα,  mdβ,  mdδ|mdα,  mdβ|mdα
priority            ::= PRIORITY (integer)
proceduredec        ::= gl?  PROCEDURE pidentifier   (xacc ret?);statement;
procedurestatement  ::= lidentifier|pidentifier
progeven            ::= PROGEVEN (UPDOWN)
progmode            ::= PROGRAM MODE (pmodedescrip)
program             ::= statement
publicfile          ::= PUBLICFILE (file)
puredec             ::= PURE storagedeclist PUREND;
racc                ::= A1
rarithmetic         ::= +|-|*|/
rassignment         ::= A1:=rprimary|A1:=A1|A1:=NEG rprimary|
                        rassignment FROM rprimary|rassignment UNDER rprimary|
                        rassignment  rarithmetic  rprimary
rcell               ::= simplercell | (simplesmo)
rcellassignment     ::= rcell:=A1|rcell:=0.0
readfrom            ::= READ FROM (subdescrip)
real                ::= fraction|fraction & exponent|integer & exponent
relation            ::= <|>|≤|≥|NOT=|=
relationex          ::= xrelationex|rrelationex|xxrelationex|rrrelationex
reservedword        ::= ACC|AND|A1|A2|
                        BASE!BEGIN|
                        CARRY|CASE|CASEND|CH|CHAR|CNT
                        DATA|DEFINE|DO|
                        ELSE|END|ENTRY|ER|EX|EXTERNAL
                        FIX|FLOAT|FOR|FOVERFLOW|FROM|FUNCTION|
                        GLABEL|GLOBAL|GLOBEND|GO|GOTO|
                        IF|INCLUDE|INTEGER|
                        LA|LOGICAL|LONG|LOWEND|LOWER|
                        MINUS|
                        NEG|NONPLASYD|NOT=|NULL|
                        OBEY|OF|OR|OVERFLOW|
                        PROCEDURE|PURE|PUREND|
                        REAL|RETURN|
                        SA|SLA|SLC|SLL|SRA|SRAV|SRC|SRL|STEP|SYN|
                        THEN|TO|TOPGLOBAL|
                        UNDER|UNTIL|
                        WHILE|X0|X1|X2|X3|X4|X5|X6|X7|
                        X01|X12|X23|X34|X45|X56|X67|X70|
                        <CH|>CH|<=CH|>=CH|<=|>=|
                        :=|++|--|''|""
ret                ::= ,integer
returnstatement    ::= RETURN|RETURN(integer)
rprimary           ::= rvalue|rcell
rracc              ::= A12
rrarithmetic       ::= +|-|*|/
rrassignment       ::= A12:=rrprimary|A12:=NEG  rrprimary|A12:=A12|
                            rrassignment rrarithmetic rrprimary
rrcellassignment   ::= rrcell:=A12
rrprimary          ::= rrvalue|rrcell
rrtype             ::= LONG REAL
rrvalue            ::= real L|MINUS real L
rtype              ::= REAL
rvalue             ::= real|MINUS real
samexcellassign    ::= xcell:=xcell
samexxcellassign   ::= xxcell:=xxcell
segeven            ::= SEGEVEN (updown)|SEGEVEN
segment            ::= program|proceduredec
segments           ::= SEGMENTS
segmode            ::= SEGMENT MODE (smodedescrip)
semifile           ::= SEMICOMPILED (file. subfile) 
sendto             ::= SENDTO (file. subfile)|SEND TO (file. subfile)
shift              ::= SLL|SRL|SLA|SRA|SRAV|SLC|SRC
simpleαcell        ::= lowerαidentifier|lowerαidentifier(integer)|
                            lowerαidentifier(-integer)|(integer)|(modifier)|
                            (modifier + integer)|αidentifier(modifier)|
                            αidentifier(modifier+integer)| 
                            αidentifier(modifier-integer)  {α=x|r|xx|rr}
simplecell         ::= xcell|rcell|xxcell|rrcell
simpledeclist      ::= celldec|basedec|simpledeclist celldec|simpledeclist basedec
simplef            ::= !fidsimple
simplesmo          ::= simpleαcell|£upperidentifier|blockidentifier
simplestatement    ::= assignment|cellassignment|functionstatement|nonplasydstatement|
                            procedurestatement|casestatement|block|gotostatement|returnstatement|
                            datastatement|obeystatement|NULL|label simplestatement
smoαcell           ::= (simplesmo)|(simplesmo+integer)|(simplesmo+modifier)|
                            (simplesmo+modifier+integer)| αidentifier(simplesmo)|
                            αidentifier(simplesmo+integer)|αidentifier(simplesmo+modifier)|
                            αidentifier(simplesmo+modifier+integer) {a=x|r}
smodedescrip       ::= mdα, mdβ|mdα
smomacro           ::= SMOMACRO
spec               ::= pidentifier|lidentifier|pidentifier(xacc)|lidentifier(xacc)
st                 ::= char|""|_|'
statement          ::= simplestatement|complexstatement
statementlist      ::= statement;|statementlist statement;
stlist             ::= st|stlist st
storagedec         ::= celldec|basedec|lowerdec|globaldec|topglobaldec|lowerglobaldec
storagedeclist     ::= storagedec|storagedeclist storagedec
storeop            ::= NEG|CARRY|NEG CARRY
string             ::= "stlist"
subdescrip         ::= file. subfile|file|. subfile
subfile            ::= subfilename|subfilename (integer)
subfilename        ::= identifier . identifier
switch             ::= SWITCH(numberlist)
tabset             ::= TAB integer
topglobaldec       ::= TOPGLOBAL blockidentifier:simpledeclist GLOBEND;
truncated          ::= integer T integer|MINUS integer T integer
trusted            ::= TRUSTED (integer)
twoargf            ::= !fidtwo (xparam, nparam) | !fidtwo(,nparam)
updown             ::= UPPER, LOWER|LOWER, UPPER|UPPER|LOWER
upperαidentifier   ::= identifier   {α=x|r|xx|rr}
upperidentifier    ::= upperxidentifier|upperridentifier|upperxxidentifier|upperrridentifier
whilestatement     ::= WHILE logicalexpression DO statement|DO statement
wordaddress        ::=  $ extendedcell|@ extendedcell|£ identifier
xacc               ::= X0|X1|X2|X3|X4|X5|X6|X7
xarithmetic        ::= +|++|-|--|*|/
xasgn              ::= X0:=X0|X1:=X1|X2:=X2|X3:=X3|X4:=X4|X5:=X5|X6:=X6|X7:=X7
xassignment        ::= xacc:=xprimary|xacc:=address|xasgn + address|
                            xasgn-wordaddress|xacc:=monadic xprimary|
                            xacc:=CNT coperand|xassignment  xarithmetic xprimary|
                            xassignment logical xprimary|xassignment shift coperand
xcell              ::= simplexcell | (simplesmo)
xcellassignment    ::= xcell:=xacc|xcell:=0|xcell:=storeop xacc|
                            xcell:=partop xacc|samexcellassign|xcellassignment addop xcell|
                            xcellassignment logical xacc
xinitial           ::= xvalue|string|fixedaddress|functionstatement|
                             count+fixedaddress|count+integer|count+truncated|
                             count+octalinteger
xparam             ::= octaldigit|xacc|xcell|
xprimary           ::= xvalue|xacc|xcell
xrelationex        ::= xacc relation xprimary|xacc relation partaddress|xacc charel xprimary
xtype              ::= INTEGER | LOGICAL
xvalue             ::= integer|MINUS integer|octalinteger|truncated|count|charsequence|string
xxacc              ::= X01|X12|X23|X34|X45|X56|X67|X70
xxarithmetic       ::= +|-|++|--
xxassignment       ::= xxacc:=xxprimary|xxacc:=NEG xxprimary|
                             xxassignment xxarithmetic xxprimary|xxacc:=xprimary| 
                             xxassignment shift coperand
xxcellassignment   ::= xxcell:=xxacc|xxcell:=0|xxcell:=NEG xxacc|
                             samexxcellassign|xxcellassignment addop xxacc
xxprimary          ::= xxvalue|xxacc|xxcell
xxtype             ::= LONG INTEGER
xxvalue            ::= integer D|MINUS integer D|octalinteger D]
⇑ Top of page
© Chilton Computing and UKRI Science and Technology Facilities Council webmaster@chilton-computing.org.uk
Our thanks to UKRI Science and Technology Facilities Council for hosting this site