Contact us Heritage collections Image license terms
HOME ACL Associates Technology Literature Applications Society Software revisited
Further reading □ Contents □ 1. Introduction □ 2. Basic symbols and comments □ 3. Identifiers, accumulators and cells □ 4. Types and values □ 5. Addresses and storage allocation □ 6. Simple cell designation □ 7. Assignment statements □ 8. Integer accumulator assignments □ 9. Real accumulator assignments □ 10. Long accumulator assignments □ 11. Cell assignments □ 12. Block structure □ 13. Procedures and labels □ 14. Conditional and control statements □ 15. Functions □ 16. Cell declarations □ 17. Synonym declarations □ 18. Storage allocation □ 19. Subcompilation and global storage □ 20. Define statements, conditional compilation and include statements □ 21. Compiler directives □ 22. FORTRAN/PLASYD mixed programming □ 23. ALGOL/PLASYD mixed programming □ 24. Useful library routines □ 25. Use of TASK macro to compile PLASYD programs □ 26. SMO cell designation □ 27. Compiler output □ 28. PLAN instructions not provided for in PLASYD □ Appendices □ 1: Errors and comments □ 2: 1900 character set □ 3: Syntax definitions in alphabetical order □ 4: Use of program XMED □ 5: 1900 order code □ 6: Code genereated for typical PLASYD statements □ 7: A sample PLASYD program □ 8: Less commonly used directives □ References
ACD C&A INF CCD CISD Archives Contact us Heritage archives Image license terms

Search

   
⟶ ACL ⟶ Literature ⟶ ICL 1906A manuals ⟶ PLASYD
⟶ ACL ⟶ Literature ⟶ ICL 1906A manuals ⟶ PLASYD
ACL ACD C&A INF CCD CISD Archives
Further reading ⇓

□ Contents □ 1. Introduction □ 2. Basic symbols and comments □ 3. Identifiers, accumulators and cells □ 4. Types and values □ 5. Addresses and storage allocation □ 6. Simple cell designation □ 7. Assignment statements □ 8. Integer accumulator assignments □ 9. Real accumulator assignments □ 10. Long accumulator assignments □ 11. Cell assignments □ 12. Block structure □ 13. Procedures and labels □ 14. Conditional and control statements □ 15. Functions □ 16. Cell declarations □ 17. Synonym declarations □ 18. Storage allocation □ 19. Subcompilation and global storage □ 20. Define statements, conditional compilation and include statements □ 21. Compiler directives □ 22. FORTRAN/PLASYD mixed programming □ 23. ALGOL/PLASYD mixed programming □ 24. Useful library routines □ 25. Use of TASK macro to compile PLASYD programs □ 26. SMO cell designation □ 27. Compiler output □ 28. PLAN instructions not provided for in PLASYD
Appendices
□ 1: Errors and comments □ 2: 1900 character set □ 3: Syntax definitions in alphabetical order □ 4: Use of program XMED □ 5: 1900 order code □ 6: Code genereated for typical PLASYD statements □ 7: A sample PLASYD program □ 8: Less commonly used directives □ References

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