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 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