home *** CD-ROM | disk | FTP | other *** search
- START
- 16 PE
- 4 PORTS
- SCALAR I4 4( I4 ) I4 B1
- VECTOR I2 I5 B3
- 1 : GOTO 22;
- 2 : PROC 1 VECTOR I1;
- POPV VI1:1;
- VI[VI1:1] := 0;
- PUSHV VI1:1;
- RETURN;
- 3 : PROC 1;
- ERROR "value out of range";
- RETURN;
- 4 : PROC 1;
- ERROR "division by 0";
- RETURN;
- 5 : PROC 1
- SCALAR
- VECTOR I3 I1; group number 1
- PUSHV ADDR VI1:3;
- 6 : VI1:1 := ID - 1; for PIC calculating DIMi
- VI1:2 := VI1:1 MOD 4; DIM2
- VI1:1 := VI1:1 / 4; DIM1
- 7 : VI1:3 := VI1:1 * 4;
- 8 : VI1:4 := VI1:2 + 1;
- 9 : VI1:3 := VI1:3 + VI1:4;
- VI1:3 := VI1:3 + 1;
- IF VI1:1 < 0 CALL 2;
- IF VI1:1 > 3 CALL 2;
- IF VI1:4 < 0 CALL 2;
- IF VI1:4 > 3 CALL 2;
- CONNECT 1 TO 2 AT VI1:3;
- 10 : VI1:3 := VI1:1 * 4;
- 11 : VI1:4 := VI1:2 - 1;
- 12 : VI1:3 := VI1:3 + VI1:4;
- VI1:3 := VI1:3 + 1;
- IF VI1:1 < 0 CALL 2;
- IF VI1:1 > 3 CALL 2;
- IF VI1:4 < 0 CALL 2;
- IF VI1:4 > 3 CALL 2;
- CONNECT 2 TO 1 AT VI1:3;
- 13 : VI1:4 := VI1:1 + 1;
- 14 : VI1:3 := VI1:4 * 4;
- 15 : VI1:3 := VI1:3 + VI1:2;
- VI1:3 := VI1:3 + 1;
- IF VI1:4 < 0 CALL 2;
- IF VI1:4 > 3 CALL 2;
- IF VI1:2 < 0 CALL 2;
- IF VI1:2 > 3 CALL 2;
- CONNECT 3 TO 4 AT VI1:3;
- 16 : VI1:4 := VI1:1 - 1;
- 17 : VI1:3 := VI1:4 * 4;
- 18 : VI1:3 := VI1:3 + VI1:2;
- VI1:3 := VI1:3 + 1;
- IF VI1:4 < 0 CALL 2;
- IF VI1:4 > 3 CALL 2;
- IF VI1:2 < 0 CALL 2;
- IF VI1:2 > 3 CALL 2;
- CONNECT 4 TO 3 AT VI1:3;
- 19 : POPV VI1:3;
- 20 : RETURN; group number : 1
- 21 : PROC 1; configuration : PIC
- VI0:1 := ID - 1; for PIC calculating DIMi
- VI0:2 := VI0:1 MOD 4; DIM2
- VI0:1 := VI0:1 / 4; DIM1
- RETURN; configuration : PIC
- 22 : CALL 5; connections
- 23!20 : SI0:1 := 4; line 20 column 2
- 24!22 : SI0:3 := 1; line 22 column 2
- 25 : SI0:21 := 4;
- 26!22 : IF SI0:3 > SI0:21 GOTO 44; line 22 column 2
- 27!23 : SI0:4 := 1; line 23 column 4
- 28 : SI0:22 := 4;
- 29!23 : IF SI0:4 > SI0:22 GOTO 42; line 23 column 4
- 30!24 : IF SI0:3 < 1 CALL 3; line 24 column 6
- 31 : IF 4 < SI0:3 CALL 3;
- 32 : IF SI0:4 < 1 CALL 3;
- 33 : IF 4 < SI0:4 CALL 3;
- 34 : SI0:23 := ADDR SI0:5 - SIZE( I4 I1 );
- 35 : SI0:24 := SI0:4 * SIZE( I1 );
- 36 : SI0:23 := SI0:23 + SI0:24;
- 37 : SI0:24 := SI0:3 * SIZE( I4 );
- 38 : SI0:23 := SI0:23 + SI0:24;
- 39 : SI[SI0:23] := 0;
- 40 : SI0:4 := SI0:4 + 1;
- 41 : GOTO 29;
- 42 : SI0:3 := SI0:3 + 1;
- 43 : GOTO 26;
- 44!27 : SI0:3 := 1; line 27 column 2
- 45 : SI0:21 := 4;
- 46!27 : IF SI0:3 > SI0:21 GOTO 59; line 27 column 2
- 47!27 : IF SI0:3 < 1 CALL 3; line 27 column 24
- 48 : IF 4 < SI0:3 CALL 3;
- 49 : IF SI0:3 < 1 CALL 3;
- 50 : IF 4 < SI0:3 CALL 3;
- 51 : SI0:22 := ADDR SI0:5 - SIZE( I4 I1 );
- 52 : SI0:23 := SI0:3 * SIZE( I1 );
- 53 : SI0:22 := SI0:22 + SI0:23;
- 54 : SI0:23 := SI0:3 * SIZE( I4 );
- 55 : SI0:22 := SI0:22 + SI0:23;
- 56 : SI[SI0:22] := SI0:3;
- 57 : SI0:3 := SI0:3 + 1;
- 58 : GOTO 46;
- 59!30 : CALL 21; line 30 column 2
- 60 : LOAD VI0:3 WITH SI0:5;
- 61 : GOTO 164; line 32 column 2
- 62!33 : SI0:2 := SI0:1 / 2; line 33 column 4
- 63!34 : CALL 21; line 34 column 4
- 64!35 : IF SI0:1 = 0 CALL 4; line 35 column 6
- 65 : VI0:7 := VI0:1 MOD SI0:1;
- 66!36 : IF SI0:1 = 0 CALL 4; line 36 column 6
- 67 : VI0:6 := VI0:2 MOD SI0:1;
- 68!38 : VI0:4 := VI0:3; line 38 column 6
- 69!39 : VB0:1 := VI0:6 < SI0:2; line 39 column 6
- 70 : VB0:2 := TRUE;
- 71 : IF VB0:1 CALL 88;
- 72 : IF VB0:2 CALL 74;
- 73 : GOTO 103;
- 74 : PROC 1;
- 75!41 : IF SI0:2 > 0 GOTO 77; line 41 column 24
- 76 : ERROR "number must be positive";
- 77 : SI0:21 := 0;
- 78 : PROPAGATE VI0:4 OUT 4 IN 3;
- 79 : SI0:21 := SI0:21 + 1;
- 80 : IF SI0:21 < SI0:2 GOTO 78;
- 81!42 : VB0:1 := VI0:7 < SI0:2; line 42 column 24
- 82 : IF VB0:1 CALL 84;
- 83 : GOTO 87;
- 84 : PROC 1;
- 85!42 : VI0:5 := VI0:4; line 42 column 41
- 86 : RETURN;
- 87 : RETURN;
- 88 : PROC 1;
- 89 : VB0:2 := FALSE;
- 90!39 : IF SI0:2 > 0 GOTO 92; line 39 column 24
- 91 : ERROR "number must be positive";
- 92 : SI0:21 := 0;
- 93 : PROPAGATE VI0:4 OUT 3 IN 4;
- 94 : SI0:21 := SI0:21 + 1;
- 95 : IF SI0:21 < SI0:2 GOTO 93;
- 96!40 : VB0:3 := VI0:7 >= SI0:2; line 40 column 24
- 97 : IF VB0:3 CALL 99;
- 98 : GOTO 102;
- 99 : PROC 1;
- 100!40 : VI0:5 := VI0:4; line 40 column 41
- 101 : RETURN;
- 102 : RETURN;
- 103!45 : VI0:4 := VI0:3; line 45 column 6
- 104!46 : VB0:2 := VI0:7 < SI0:2; line 46 column 6
- 105 : VB0:1 := TRUE;
- 106 : IF VB0:2 CALL 123;
- 107 : IF VB0:1 CALL 109;
- 108 : GOTO 138;
- 109 : PROC 1;
- 110!48 : IF SI0:2 > 0 GOTO 112; line 48 column 24
- 111 : ERROR "number must be positive";
- 112 : SI0:21 := 0;
- 113 : PROPAGATE VI0:4 OUT 1 IN 2;
- 114 : SI0:21 := SI0:21 + 1;
- 115 : IF SI0:21 < SI0:2 GOTO 113;
- 116!49 : VB0:2 := VI0:6 >= SI0:2; line 49 column 24
- 117 : IF VB0:2 CALL 119;
- 118 : GOTO 122;
- 119 : PROC 1;
- 120!49 : VI0:5 := VI0:4; line 49 column 41
- 121 : RETURN;
- 122 : RETURN;
- 123 : PROC 1;
- 124 : VB0:1 := FALSE;
- 125!46 : IF SI0:2 > 0 GOTO 127; line 46 column 24
- 126 : ERROR "number must be positive";
- 127 : SI0:21 := 0;
- 128 : PROPAGATE VI0:4 OUT 2 IN 1;
- 129 : SI0:21 := SI0:21 + 1;
- 130 : IF SI0:21 < SI0:2 GOTO 128;
- 131!47 : VB0:3 := VI0:6 < SI0:2; line 47 column 24
- 132 : IF VB0:3 CALL 134;
- 133 : GOTO 137;
- 134 : PROC 1;
- 135!47 : VI0:5 := VI0:4; line 47 column 41
- 136 : RETURN;
- 137 : RETURN;
- 138!52 : VI0:3 := VI0:5; line 52 column 6
- 139!54 : SI0:1 := SI0:2; line 54 column 4
- 140!56 : CALL 21; line 56 column 4
- 141 : STORE VI0:3 TO SI0:5;
- 142!58 : WRITE EOL; line 58 column 4
- 143!59 : SI0:3 := 1; line 59 column 4
- 144 : SI0:21 := 4;
- 145!59 : IF SI0:3 > SI0:21 GOTO 164; line 59 column 4
- 146!60 : SI0:4 := 1; line 60 column 6
- 147 : SI0:22 := 4;
- 148!60 : IF SI0:4 > SI0:22 GOTO 161; line 60 column 6
- 149!61 : IF SI0:3 < 1 CALL 3; line 61 column 8
- 150 : IF 4 < SI0:3 CALL 3;
- 151 : IF SI0:4 < 1 CALL 3;
- 152 : IF 4 < SI0:4 CALL 3;
- 153 : SI0:23 := ADDR SI0:5 - SIZE( I4 I1 );
- 154 : SI0:24 := SI0:4 * SIZE( I1 );
- 155 : SI0:23 := SI0:23 + SI0:24;
- 156 : SI0:24 := SI0:3 * SIZE( I4 );
- 157 : SI0:23 := SI0:23 + SI0:24;
- 158 : WRITE SI[SI0:23] 2;
- 159 : SI0:4 := SI0:4 + 1;
- 160 : GOTO 148;
- 161!63 : WRITE EOL; line 63 column 6
- 162 : SI0:3 := SI0:3 + 1;
- 163 : GOTO 145;
- 164!32 : SB0:1 := SI0:1 > 1; line 32 column 2
- 165 : IF SB0:1 GOTO 62;
- 166 : END; IMAGE_ROTATION
- STOP
-