The statements used as examples assume the following declarations:
LOWER INTEGER LIX,LIA(10); REAL LRX,LRA(10); LONG INTEGER LIIX; LONG REAL LRRX; LOWEND; BASE; INTEGER UIA(10),UIX;
In the examples following, the names of the lower identifiers will be used in the code to refer to the address of that identifier. The base directive will cause a lower cell with address BASEU to be defined and will contain the base address of the upper domain. The notation $UIX will be used to represent the address equal to the displacement of UIX from the base. Constants used in the programs are assumed to be stored at the following addresses:
ADDRESS CONSTANT L3 3 LM3 -3 L3P 3.0 L31CNT #03700000 LABCD 'ABCD' LABCE 'ABCE'
Branches used in the program are written as L1, L2, L3 etc. A temporary working space is assumed to be allocated at address TEMP.
PLASYD instruction Code Generated
Integer Accumulator Assignments
(1) X1 := 3; LDN 1 3
(2) X1 := X2; LDX 1 2
(3) X2 := MINUS 3; LDX 2 LM3
(4) X2 := #12; LDN 2 10
(5) X2 := 31CNT; LDX 2 L31CNT
(6) X2 :='ABCD'; LDX 2 LABCD
(7) X2 := LIX; LDX 2 LIX
(8) X2 := LIA(-1); LDX 2 LIA-1
(9) X2 := (30); LDX 2 30
(10) X2 := (X3+4); LDX 2 4(X3)
(11) X2 := LIA(X3); LDX 2 LIA(X3)
(12) X2 := UIX(X3); LDX 2 $UIX(X3)
(13) X2 := LIA(X3+1); LDX 2 LIA+1(X3)
(14) X2 := UIX(X3+1); LDX 2 $UIX+1(X3)
(15) X2 := (LIX); SMO LIX
LDX 2 0
(16) X2 := ((30)); SMO 30
LDX 2 0
(17) X2 := (LIA(X3+2)+X1); SMO LIA+2(X3)
LDX 2 0(X1)
(18) X4 := LIA(LIX(X3+1)+2); SMO LIX+1(X3)
LDX 4 LIA+2
(19) X4 := NEG 3; NGN 4 3
(20) X4 := EX 3; LDEX 4 L3
(21) X4 := CH 3; LDCH 4 L3
(22) X4 := CARRY 3; LDNC 4 3
(23) X4 := NEG CARRY 3; NGNC 4 3
(24) X4 := NEG X3; NGX 4 3
(25) X4 := EX X3; LDEX 4 3
(26) X4 := CH X3; LDCH 4 3
(27) X4 := CARRY X3; LDXC 4 3
(28) X4 := NEG CARRY X3; NGXC 4 3
(29) X4 := CNT 3; LDCT 4 3
(30) X4 := CNT X2; LDCT 4 0(X2)
(31) X4 := £LIA; LDN 4 0
(32) X4 := £UIA(X3); LDX 4 BASEU(X3)
(33) X4 := @LIA; LDN 4 LIA
(34) X4 := @UIA; LDX 4 BASEU
ADN 4 0
(35) X4 := @UIA(X3); LDX 4 BASEU
ADN 4 0(X3)
(36) X4 := $UIA; LDN 4 $UIA
(37) X4 := $(X1+2); LDN 4 2(X1)
(38) X4 := X3+X2; LDX 4 3
ADX 4 2
(39) X4 := 4++3-2; LDN 4 4
ADNC 4 3
SBN 4 2
(40) X4 := LIX(3)--LIA(2); LDX 4 LIX+3
SBXC 4 LIA+2
(41) X4 := LIX*LIA; LDX 4 LIX
MPY 4 LIA
SLA2 4 23
(42) X4 := LIX/LIA; LDX 4 LIX
DVS 3 LIA
(43) X4 := X4 AND 3 OR LIX; ANDN 4 3
ORX 4 LIX
(44) X4 := 4 SLL 3 SRL 2; LDN 4 4
SLL 4 3
SRL 4 2
(45) X4 := X4 SLL X3 SLL(X1); SLL 4 0(X3)
SMO 0(X1)
SLL 4 0
Real Accumulator Assignments
(46) A1 := LRX; LFP LRX
(47) A1 := A1+LRX*LRA; FAD LRX
FMPY LRA
(48) A1 := LRX(X1+3)-URX(X2); LFP LRX+3(X1)
FSB $URX(X2)
(49) A1 := NEG LRX; LFPZ
FSB LRX
(50) A1 := A1/LRX FROM LRA; FDVD LRX
FSB 4 LRA
(51) A1 := A1 UNDER LRX; FDVD 4 LRX
Long Integer Accumulator Assignments
(52) X12:= LIIX LDX 2 LIIX+1
LDX 1 LIIX
(53) X12:= NEG LIIX; NGXC 2 LIIX+1
NGX 1 LIIX
(54) X12:= X67+X67-LIIX LDX 2 7
LDX 1 6
ADXC 2 7
ADX 1 6
SBXC 2 LIIX+1
SBX 1 LIIX
(55) X67:= X67 SLA 2 SRL 3 SLA2 6 2
SRL2 6 3
(56) X67:= (X1) LDX 7 1(X1)
LDX 6 0(X1)
(57) X67:= X67+(X1) ADXC 7 1(X1)
ADX 6 0(X1)
Long Real Accumulator Assignments
(58) A12:= LRRX; LFP 2 LRRX
(59) A12:= NEG LRRX+LRRX; LFPZ
FSB 2 LRRX
FAD 2 LRRX
(60) A12:= A12-LRRX*LRRX/LRRX; FSB 2 LRRX
FMPY 2 LRRX
FDVD 2 LRRX
Integer Cell Assignments
(61) LIX:= X1; STO 1 LIX
(62) (3):= X4; STO 4 3
(63) (X1):= X2; STO 2 0(X1)
(64) UIA(X1-5) := X2; STO 2 $UIA-5(X1)
(65) LIX := 0; STOZ LIX
(66) LIX := NEG X3; NGS 3 LIX
(67) LIX := CARRY X3; STOC 3 LIX
(68) LIX := NEG CARRY X3; NGSC 3 LIX
(69) LIX := EX X3; DEX 3 LIX
(70) LIX := SA X3; DSA 3 LIX
(71) LIX := LA X3; DLA 3 LIX
(72) LIX := CH X3; DCH 3 LIX
(73) LIX := X1-X2+X3--X4; STO 1 LIX
SBS 2 LIX
ADS 3 LIX
SBSC 4 LIX
(74) LIX := LIX AND X1 OR X2; ANDS 1 LIX
ORS 2 LIX
(75) (3) := (3)+X2; ADS 2 3
Real Cell Assignments
(76) LRX := 0.0; STOZ LRX
STOZ LRX+1
(77) LRX := A1; SFP LRX
Long Cell Assignments
(78) LIIX := 0; STOZ LIIX
STOZ LIIX+1
(79) LIIX := X12; STO 2 LIIX+1
STO 1 LIIX
(80) LIIX := NEG X12; NGSC 2 LIIX+1
NGS 1 LIIX
(81) LIIX := LIIX+X12--X56; ADSC 2 LIIX+1
ADS 1 LIIX
SBSC 6 LIIX+1
SBSC 5 LIIX
(82) LRRX := A12; SFP 2 LRRX+2
SFP LRRX
(83) (X1) := X67; STO 7 1(X1)
STO 6 0(X1)
Procedure Calling
Assume that link used is X1
(84) FRED; CALL 1 FRED
(85) OBEY(X1+2); OBEY 2(X1)
(86) RETURN; EXIT 1 0
(87) RETURN(5); EXIT 1 5
(88) GOTO F; BRN F
Case Statement
(89) CASE X1 OF BRN L3
L1 L2
A1 := A1+LRX L2 FAD LRX
A1 := A1-LRX; FSB LRX
GOTO F; BRN F
X1 := NEG LIX; NGX 1 LIX
LIX := 0; STOZ LIX
CASEND; BRN L4
L3 ADX 1 L1
OBEY 0(X1)
L4
If Statement
(90) IF X1=0 BNZ 1 L2
AND OVERFLOW BVCR L2
AND A1=3.0 SFP TEMP
FSB L3P
BFP 0 L1
LFP TEMP
BRN L2
L1 LFP TEMP
THEN X2 :=0; LDN 2 0
L2
(91) IF X1=0 BZE 1 L2
OR OVERFLOW BVCR L2
OR A1=3.0 SFP TEMP
FSB L3P
BFP 0 L1
LFP TEMP
BRN L2
L1 LFP TEMP
THEN X2 := 0; LDN 2 0
L2
(92) IF FOVERFLOW BFP 4 L1
THEN X2 := 0; LDN 2 0
L1
(93) IF CARRY BCC L1
THEN X2 := 0; LDN 2 0
(94) IF NOT FOVERFLOW BFP 5 L1
THEN X2 := 0; LDN 2 0
(95) IF A1>0.0 BFP 0 L2
BFP 3 L2
AND A1<0.0 BFP 2 L2
AND A1=0.0 BFP 1 L2
AND A1≤0.0 BFP 0 L1
BFP 2 L2
AND A1≥0.0 L1 BFP 3 L2
AND A1 NOT=0.0 BFP 0 L2
THEN X1 := 0; LDN 1 0
L2
(96) IF X1 <CH 'ABCD' TXL 1 LABCD
BCC L1
THEN X2 :=0; LDN 2 0
L1
(97) IF X1 >CH 'ABCE' TXL 1 LABCE
BCS L1
THEN X2 :=0; LDN 2 0
L1
(98) IF X1=0 BNZ 1 L1
THEN X2 :=0 LDN 2 0
BRN L2
ELSE X3 :=0; L1 LDN 3 0
L2
(99) IF X1 <3 BNG 2 L1
THEN X1 := 0; TXL 2 3
BCC L2
L1 LDN 1 0
L2
(100) IF X2 < CH 3 TXL 2 3
THEN X1 := 0; BCC L1
LDN 1 0
L1
(101) IF X2 > 3 BNG 2 L1
THEN X1 := 0; TXL 2 3
BCS L1
LDN 1 0
L1
(102) IF X2 >CH 3 TXL 2 3
THEN X1 := 0; BCS L1
LDN 1 0
L1
(103) IF X2 > X1 STO 2 TEMP
THEN X3 := 0; SBX 2 1
BZE 2 L1
BPZ 2 L2
L1 LDX 2 TEMP
BRN L3
L2 LDX 2 TEMP
LDN 3 0
L3
(104) IF X2 >CH X1 TXU 2 1
THEN X3 := 0; BCC L1
TXL 2 1
BCS L1
LDN 3 0
L1
(105) IF X2 < X1 STO 2 TEMP
THEN X3 := 0; SBX 2 1
BNG 2 L1
LDX 2 TEMP
BRN L2
L1 LDX 2 TEMP
LDN 3 0
L2
(106) IF X4 <CH X1 TXL 4 1
AND X5 <CH X1 BCC L1
THEN X3 := 0; TXL 5 1
BCC L1
LDN 3 0
L1
(107) IF X4 <CH X1 TXL 4 1
AND X5 <CH X1 BCC L1
THEN GOTO FRED; TXL 5 1
BCS FRED
L1
(108) IF X4 <CH X1 TXL 4 1
OR X5 <CH X1 BCS L1
THEN X3 := 0; TXL 5 1
BCC L2
L1 LDN 3 0
L2
For Statement
(109) FOR X1 := LIX STEP 5 LDX 1 LIX
UNTIL UIX(3) DO L1 STOZ LIA(X1)
LIA(X1) := 0; TXU 1 $UIX(X3)
BCC L2
ADN 1 5
BRN L1
L2
(110) FOR X1 := LIX STEP -1 LDX 1 LIX
UNTIL 3 DO L1 STOZ LIA(X1)
LIA(X1) := 0; SBN 1 3
BZE 1 L2
ADN 1 3
SBN 1 1
BRN L1
(111) FOR X1 := LIX STEP -1 LDX 1 LIX
UNTIL 0 DO L1 STOZ LIA(X1)
LIA(X1) := 0; BZE 1 L2
SBN 1 1
BRN L1
L2
(112) FOR X1 := LIX STEP 1 LDX 1 LIX
UNTIL LIA DO L1 STOZ LIA(X1)
LIA(X1) := 0; SBX 1 LIA
BZE 1 L2
ADX 1 LIA
ADN 1 1
BRN L1
L2
(113) FOR X2 := CHAR 1 OF £UIA LDCT 2 128
STEP CHAR ADX 2 BASEU
UNITL LIX DO L1 LDCH 6 $UIA(X2)
X6 := CH UIA(X2); TXU 2 LIX
BCC L2
BCHX 2 L1
L2
While Statement
(114) WHILE A1<LRX DO L1 SFP TEMP
A1 := A1+LRA; FSB LRX
BFP 3 L2
LFP TEMP
BRN L3
L2 LFP TEMP
FAD LRA
BRN L1
L3