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 5: 1900 ORDER CODE

The standard instruction formats on the 1900 range: NORMAL ORDERS 3 7 2 12 X F M N BRANCH ORDERS 3 6 15 X F N SHIFT ORDERS 3 7 2 2 10 X F M Nt Ns The standard word formats on the 1900 range: FLOATING POINT NUMBER S 1 14 9 15AM COUNTER-MODIFIER 9 15 xc xm 22AM COUNTER-MODIFIER 2 22 0 xem 15AM CHARACTER COUNTER-MODIFIER 2 7 15 xk xd xm 22AM CHARACTER COUNTER-MODIFIER 2 22 xk xem CHARACTER POSITIONS 6 6 6 6 n0 n1 n2 n3

Instructions marked with a * require the PLAN manual for a fuller description.

Instructions marked with a C may set the carry bit but cannot cause overflow.

The 043 order may set V or C. The carry register C is left clear by any order except 023, 117 and 123 unless that order sets C. Instructions marked with a V may cause overflow.

Arithmetic into Accumulators
V 000 LDX   X N(M)   Load contents N(M) into X
V 001 ADX   X N(M)   Add contents N(M) to X
V 002 NGX   X N(M)   Load negative of contents N(M) into X
V 003 SBX   X N(M)   Subtract contents N(M) from X
C 004 LDXC  X N(M)   Load contents N(M) into X
C 005 ADXC  X N(M)   Add contents N(M) to X
C 006 NGXC  X N(M)   Load negative of contents N(M) into X
C 007 SBXC  X N(M)   Subtract contents N(M) from X
Arithmetic into Store 
V 010 STO   X N(M)   Store X in address N(M)
V 011 ADS   X N(M)   Add X into address N(M)'s contents
V 012 NGS   X N(M)   Store negative X into address N(M)
V 013 SBS   X N(M)   Subtract X from address N(M)'s contents
C 014 STOC  X N(M)   Store X in address N(M)
C 015 ADSC  X N(M)   Add X into address N(M)'s contents
C 016 NGSC  X N(M)   Store negative X into address N(M)
C 017 SBSC  X N(M)   Subtract X from address N(M)'s contents
Logical Operations into Accumulator
  020 ANDX  X N(M)   X is result of ANDing X and contents N(M)
  021 ORX   X N(M)   X is result of ORing X and contents N(M)
  022 ERX   X N(M)   X is result of EXCLUSIVE ORing X and contents N(M)
Interpret
  023 OBEY    N(M)   Obey instruction in address N(M)   
  
Part Word into Accumulator
  024 LDCH  X N(M)   Load character at address N(M) into X
  025 IDEX  X N(M)   Load exponent (xe) from address N(M) into X
 
Comparison
  026 TXU   X N(M)   Set C if X different from contents N(M)
  027 TXL   X N(M)   Set C if X less than contents N(M)
Logical Operations into Store
  030 ANDS  X N(M)   Contents N(M) is result of ANDing X and contents N(M)
  031 ORS   X N(M)   Contents N(M) is result of ORing  X and contents N(M)
  032 ERS   X N(M)   Contents N(M) is result of EXCLUSIVE ORing X and contents N(M)
Store Zero
  033 STOZ    N(M)   Store zero in address N(M)
Part Word Manipulation into Store
  034 DCH   X N(M)   Lower 6 bits   X stored in character address N(M)
  035 DEX   X N(M)   Lower 9 bits   X stored in exponent of address N(M)
  036 DSA   X N(M)   Lower 12 bits  X stored in address N(M)
  037 DLA   X N(M)   Lower 15 bits  X stored in address N(M)
  
Multiplication
V 040 MPY   X N(M)   Multiply X by contents address N(M)
V 041 MPR   X N(M)   Multiply X by contents address N(M) and round 
* 042 MPA   X N(M)   Multiply and accumulate
  
Character Conversion
V 043  CDB  X N(M)   X is set to 10 times X plus contents of character address N(M)
* 047  CBD  X N(M)   Binary to decimal
 
Division
* 044 DVD   X N(M)   Divide
* 045 DVR   X N(M)   Divide and round
* 046 DVS   X N(M)   Divide single length
Branch on State of Accumulator
  050 BZE   X N      Branch to address N if X=0
  052 BNZ   X N      Branch to address N if X≠0
  054 BPZ   X N      Branch to address N if X≥0
  056 BNG   X N      Branch to address N if X<0
Indexing and Counting
  060 BUX   X N      15AM: Add 1 to xm  part of X and subtract 1 from xc part. Branch to address N if xc≠0
  060 BUX   X N      22AM: Add 1 to xem part of X and branch to address N
  062 BDX   X N      15AM: Add 2 to xm  part of X and subtract 1 from xc part. Branch to address N if xc≠0
  062 BDX   X N      22AM: Add 2 to xem part of X and branch and branch to address N
  064 BCHX  X N      15AM: Increment character address (xk:xm) of X by 1 and subtract 1 from xd. Branch to address N if xd≠0
  064 BCHX  X N      22AM: Increment character address and jump to address N
Subroutine Linkage
  070 CALL  X N      Call routine at address N leaving link in X
V 072 EXIT  X N      Return to address N+X
Miscellaneous Branch
  074 BRN    N       X=0, branch to address N
  074 BVS    N       X=1, branch to address N if V set 
  074 BVSR   N       X=2, branch to address N if V set   and clear V
  074 BVC    N       X=3, branch to address N if V clear
  074 BVCR   N       X=4, branch to address N if V clear and clear V
  074 BCS    N       X=5, branch to address N if C is set 
  074 BCC    N       X=6, branch to address N if C is clear 
V 074 BVCI   N       X=7, branch to address N if V is clear and invert V 
V 076 BFP    N       X=0, branch to address N if A1=0.0
V 076 BFP    N       X=1, branch to address N if A1≠0.0
V 076 BFP    N       X=2, branch to address N if A1≥0.0
V 076 BFP    N       X=3, branch to address N if A1<0.0
  076 BFP    N       X=4, branch to address N if floating point overflow clear
  076 BFP    N       X=5, branch to address N if floating point overflow set
Arithmetic with Small Integers
  100 LDN   X N(M)   Set  X to N(M)
V 101 ADN   X N(M)   Add N(M) to X
  102 NGN   X N(M)   Set  X to -N(M)
V 103 SBN   X N(M)   Subtract N(M) from X
  104 LDNC  X N(M)   Set  X to N(M)
C 105 ADNC  X N(M)   Add N(M) to X
C 106 NGNC  X N(M)   Set  X to -N(M)
C 107 SBNC  X N(M)   Subtract N(M) from X
Shifting
  110 SLC   X N(M)   Nt=0, shift X left Ns places circular
  110 SLL   X N(M)   Nt=1, shift X left Ns places logical
V 110 SLA   X N(M)   Nt=2, shift X left Ns places arithmetic
  111 SLC2  X N(M)   Nt=0, shift X, X+1 left Ns places circular
  111 SLL2  X N(M)   Nt=1, shift X, X+1 left Ns places logical
V 111 SLA2  X N(M)   Nt=2, shift X, X+1 left Ns places arithmetic
  112 SRC   X N(M)   Nt=0, shift X right Ns places circular
  112 SRL   X N(M)   Nt=1, shift X right Ns places logical
V 112 SRA   X N(M)   Nt=2, shift X right Ns places arithmetic
  112 SRAV  X N(M)   Nt=3, shift X right Ns places arithmetic on overflow
  113 SRC2  X N(M)   Nt=0, shift X, X+1 right Ns places circular
  113 SRL2  X N(M)   Nt=1, shift X, X+1 right Ns places logical
V 113 SRA2  X N(M)   Nt=2, shift X, X+1 right Ns places arithmetic
  113 SRAV2 X N(M)   Nt=3, shift X, X+1 right Ns places arithmetic on overflow
Floating Point Normalise
  114 NORM  X N(M)   Normalise X
  115 NORM  X N(M)   Normalise X, X+1
  
Logical Operations with Small Integers
  120 ANDN  X N(M)   X is set to X AND N(M)
  121 ORN   X N(M)   X is set to X OR  N(M)
  122 ERN   X N(M)   X is set to X EXCLUSIVE OR N(M)
Miscellaneous
  123 NULL           Null operation
  124 LDCT  X N(M)   Sets xc of X to N(M), xm of X to zero
* 125 MODE    N(M)   Set zero suppression mode
  126 MOVE  X N(M)   Transfer N(M) words from address X to address X+1
  127 SUM   X N(M)   X is sum of N(M) words from address X+1
  
Floating Point  
  130 FLOAT X N(M)   Set A1 to contents N(M) floated
  131 FIX   X N(M)   Fix contents A1 and store in N(M)
  132 FAD   X N(M)   Add contents N(M) to A1 (X=0)
  133 FSB   X N(M)   Subtract contents N(M) from A1 (X=0)
  133 FSB   X N(M)   Contents A1 becomes contents N(M) minus A1 (X=4)
  134 FMPY  X N(M)   Multiply contents N(M) by A1 (X=0)
  135 FDVD  X N(M)   Divide contents A1 by N(M) (X=0)
  135 FDVD  X N(M)   A1 becomes contents N(M) divided by A1 (X=4)
  136 LFP     N(M)   A1 set to contents N(M)
  136 LFPZ           A1 set to zero, X=1
  137 SFP     N(M)   Store A1 in address N(M)
  137 SFPZ    N(M)   Store A1 in address N(M) and set A1 = 0, X=1
Peripheral Control
  150 SUSBY X        Suspend if specified peripheral is active
  151 REL   X        Release a specified peripheral
  152 DIS   X        Disengage a specified peripheral
  154 CONT  X N(M)   Read more program from a specified peripheral
  155 SUSDP X N(M)   Suspend and dump program on specified peripheral
  156 ALLOT X        Allocate a specified peripheral
  157 PERI  X N(M)   Peripheral transfer depending on control area
Interrupt and Delete
  160 SUSTY   N(M)   X=0, Suspend and type message on console typewriter
  160 DISTY   N(M)   X=1, Display message
  160 DELTY   N(M)   X=2, Delete program and type message 
  161 SUSWT          X=0, Suspend and wait 
  161 DISP           X=1, Display 
  161 DEL            X=2, Delete
* 162 SUSMA          
  163 AUTO  X N(M)   Activate member X at N(M)
  164 SUSAR          Suspend member awaiting reactivation
  164 SUSIN          Suspend member awaiting flag-setting interrupt
  165 GIVE  X        N(M)=0,  Give date in binary in X
  165 GIVE  X        N(M)=1,  Give date in characters in X, X+1
  165 GIVE  X        N(M)=2,  Give time in characters in X, X+1
  165 GIVE  X        N(M)=3,  Give current core store location in X
  165 GIVE  X        N(M)=4,  Alter core store allocation to that specified by X
  165 GIVE  X        N(M)=5,  Give details of executive and central processor
  165 GIVE  X        N(M)=8,  Give current address mode and branch mode in X 
  165 GIVE  X        N(M)=9,  Alter address mode and branch mode to that given in X
  165 GIVE  X        N(M)=10, Give mill time (in microseconds) used by current core image in X, X+1
  165 GIVE  X        N(M)=11, Give the time in seconds since midnight as a mid-point number in X, X+1
  165 GIVE  X        N(M)=12, Alter size of the active part of the core image to the value 
                              contained in X:  this has the same effect as GIVE with N(M)=3 under GEORGE 4.
  165 GIVE  X        N(M)=16, Report on the status of an area of the current core image, as specified 
                              in X, X+1. 'Status' refers to read/write/execute permission, shareability 
                              and an indication of whether the area has been used.  
                              This is only applicable to GEORGE 4 environments.
  165 GIVE  X        N(M)=17, Change the permission to that specified in X, X+1.  
                              This is only applicable to GEORGE 4 environments.
  165 GIVE  X        N(M)=18, Give the permission specified in X, X+1 (in addition to any current permission).  
                              This is only applicable to GEORGE 4 environments.
  165 GIVE  X        N(M)=19, Withhold the permission specified in X, X+1. 
  166 RRQ     N(M)   X=0, read request block into N(M)  
  166 RRQ     N(M)   X=1, replace request block from address N(M)
  
Special (available on 1906A but not all 1900's)
  066 BCT     N      Subtract 1 from xm part of X and branch N if nonzero
  116 MVCH  X N(M)   Transfer N(M) characters
  117 SMO   X N(M)   Supplementary modifier to next instruction.
  
The following mnemonics for handling R-TRUSTED programs exist in PLASYD (but not in PLAN):
  160 RMS            X=7, request console message.  This is not implemented for 
                          programs running under GEORGE 3/4
  164 ACT            X=7, N(M)=0, activate the program under control (PUC)
  167 SPP            Set up parameters for PUC
  

For further information on these, see User Notice 4 to the Central Processors Manual (ICL Technical Publication 4095).

⇑ 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