Browse code

Optimised DIV2 by powers of 2 to SFT2

Andrew Alderwick authored on 24/05/2021 21:36:15
Showing 14 changed files
... ...
@@ -6,6 +6,7 @@
6 6
 %RTN { JMP2r }
7 7
 %MOD { DUP2 DIV MUL SUB }
8 8
 %TOS { #00 SWP }
9
+%2// { #01 SFT2 }
9 10
 
10 11
 ( devices )
11 12
 
... ...
@@ -38,8 +39,8 @@
38 39
 	;on-mouse .Mouse/vector DEO2
39 40
 
40 41
 	( find center )
41
-	.Screen/width DEI2 #0002 DIV2 .center/x STZ2
42
-	.Screen/height DEI2 #0002 DIV2 .center/y STZ2
42
+	.Screen/width DEI2 2// .center/x STZ2
43
+	.Screen/height DEI2 2// .center/y STZ2
43 44
 
44 45
 	( background ) 
45 46
 	;tiles ;cover-pattern JSR2
... ...
@@ -4,10 +4,10 @@
4 4
 		- When selecting a pad, should highlight note in octave
5 5
 )
6 6
 
7
-%+  { ADD } %-   { SUB }  %*  { MUL } %/   { DIV }  
8
-%<  { LTH } %>   { GTH }  %=  { EQU } %!   { NEQ } 
9
-%++ { ADD2 } %-- { SUB2 } %** { MUL2 } %// { DIV2 } 
10
-%<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 }  
7
+%+  { ADD } %-   { SUB }  %*  { MUL } %/   { DIV }
8
+%<  { LTH } %>   { GTH }  %=  { EQU } %!   { NEQ }
9
+%++ { ADD2 } %-- { SUB2 } %** { MUL2 } %// { DIV2 }
10
+%<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 }
11 11
 
12 12
 %TOB { SWP POP } %TOS { #00 SWP }
13 13
 %RTN { JMP2r }
... ...
@@ -15,11 +15,12 @@
15 15
 %RTN  { JMP2r }   %MOD  { DUP2 / * - }
16 16
 %MOD8 { #07 AND } %MOD2 { #01 AND }
17 17
 %SFL  { #40 SFT SFT }
18
+%2//  { #01 SFT2 } %8//  { #03 SFT2 }
18 19
 
19 20
 %WIDTH { #40 }   %HEIGHT { #40 }
20 21
 %BANK1 { #8000 } %BANK2 { #a000 }
21 22
 
22
-%GET-SIZE { WIDTH TOS #0008 // HEIGHT TOS ** }
23
+%GET-SIZE { WIDTH TOS 8// HEIGHT TOS ** }
23 24
 %GET-ITERATORS { SWP2k POP SWP POP }
24 25
 
25 26
 ( devices )
... ...
@@ -58,8 +59,8 @@
58 59
 	#07 #05 ;set-cell JSR2
59 60
 	#06 #05 ;set-cell JSR2
60 61
 
61
-	.Screen/width DEI2 #0002 // WIDTH TOS -- .anchor/x STZ2
62
-	.Screen/height DEI2 #0002 // HEIGHT TOS -- .anchor/y STZ2
62
+	.Screen/width DEI2 2// WIDTH TOS -- .anchor/x STZ2
63
+	.Screen/height DEI2 2// HEIGHT TOS -- .anchor/y STZ2
63 64
 
64 65
 	#01 .world/paused STZ
65 66
 
... ...
@@ -2,8 +2,8 @@
2 2
 
3 3
 %RTN { JMP2r }
4 4
 %8++ { #0008 ADD2 } %8-- { #0008 SUB2 }
5
-%8** { #0008 MUL2 } %8// { #0008 DIV2 }
6
-%++ { #0001 ADD2 }
5
+%8** { #0008 MUL2 } %8// { #03 SFT2 }
6
+%++ { #0001 ADD2 }  %2// { #01 SFT2 }
7 7
 %MOD8 { #07 AND }
8 8
 %TRACK { ;track/ch1 #00 .track/active LDZ #0020 MUL2 ADD2 }
9 9
 
... ...
@@ -43,9 +43,9 @@
43 43
 	( vectors ) ;on-mouse .Mouse/vector DEO2
44 44
 	( vectors ) ;on-button .Controller/vector DEO2
45 45
 
46
-	.Screen/width DEI2 #0002 DIV2 DUP2 #0080 SUB2 .trkframe/x1 STZ2
46
+	.Screen/width DEI2 2// DUP2 #0080 SUB2 .trkframe/x1 STZ2
47 47
 	 #0080 ADD2 .trkframe/x2 STZ2
48
-	.Screen/height DEI2 #0002 DIV2 DUP2 #0038 SUB2 #0010 SUB2 .trkframe/y1 STZ2
48
+	.Screen/height DEI2 2// DUP2 #0038 SUB2 #0010 SUB2 .trkframe/y1 STZ2
49 49
 	 #0038 ADD2 #0010 SUB2 .trkframe/y2 STZ2
50 50
 
51 51
 	.trkframe/x1 LDZ2 .chnframe/x1 STZ2 .trkframe/y2 LDZ2 .chnframe/y1 STZ2
... ...
@@ -1,9 +1,9 @@
1 1
 ( piano )
2 2
 
3
-%+  { ADD } %-   { SUB }  %*  { MUL } %/   { DIV }  
4
-%<  { LTH } %>   { GTH }  %=  { EQU } %!   { NEQ } 
5
-%++ { ADD2 } %-- { SUB2 } %** { MUL2 } %// { DIV2 } 
6
-%<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 }  
3
+%+  { ADD } %-   { SUB }  %*  { MUL } %/   { DIV }
4
+%<  { LTH } %>   { GTH }  %=  { EQU } %!   { NEQ }
5
+%++ { ADD2 } %-- { SUB2 } %** { MUL2 } %// { DIV2 }
6
+%<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 }
7 7
 
8 8
 %RTN  { JMP2r }
9 9
 %TOS  { #00 SWP }
... ...
@@ -11,6 +11,9 @@
11 11
 %LTS2 { #8000 ++ SWP2 #8000 ++ >> }
12 12
 %GTS2 { #8000 ++ SWP2 #8000 ++ << }
13 13
 %INCR { SWP #01 + SWP }
14
+%2//  { #01 SFT2 }
15
+%4//  { #02 SFT2 }
16
+%8//  { #03 SFT2 }
14 17
 
15 18
 %WAVEFORM { #1000 }
16 19
 
... ...
@@ -62,8 +65,8 @@
62 65
 	;saw-path   .File/name DEO2 #0100 .File/length DEO2 WAVEFORM #0500 ++ .File/load DEO2
63 66
 
64 67
 	( find center )
65
-	.Screen/width DEI2 #0002 // .center/x STZ2
66
-	.Screen/height DEI2 #0002 // .center/y STZ2
68
+	.Screen/width DEI2 2// .center/x STZ2
69
+	.Screen/height DEI2 2// .center/y STZ2
67 70
 
68 71
 	( place octave )
69 72
 	.center/x LDZ2 #0080 -- .octave-view/x1 STZ2
... ...
@@ -191,8 +194,8 @@ BRK
191 194
 
192 195
 @on-touch-octave-view ( -> )
193 196
 
194
-	.Mouse/x DEI2 .octave-view/x1 LDZ2 -- #0008 // SWP POP #09 ! ,&no-mod JCN
195
-		.Mouse/y DEI2 .octave-view/y1 LDZ2 -- #0008 // SWP POP 
197
+	.Mouse/x DEI2 .octave-view/x1 LDZ2 -- 8// SWP POP #09 ! ,&no-mod JCN
198
+		.Mouse/y DEI2 .octave-view/y1 LDZ2 -- 8// SWP POP 
196 199
 		DUP #00 ! ,&no-incr JCN
197 200
 			.octave LDZ #01 + .octave STZ &no-incr
198 201
 		DUP #02 ! ,&no-decr JCN
... ...
@@ -203,8 +206,8 @@ BRK
203 206
 		BRK
204 207
 	&no-mod
205 208
 
206
-	.Mouse/x DEI2 .octave-view/x1 LDZ2 -- #0008 // SWP POP #06 > ,&no-key JCN
207
-		.Mouse/x DEI2 .octave-view/x1 LDZ2 -- #0008 // DUP2 SWP POP .last-note STZ ;notes ++ LDA ;play JSR2
209
+	.Mouse/x DEI2 .octave-view/x1 LDZ2 -- 8// SWP POP #06 > ,&no-key JCN
210
+		.Mouse/x DEI2 .octave-view/x1 LDZ2 -- 8// DUP2 SWP POP .last-note STZ ;notes ++ LDA ;play JSR2
208 211
 		( release ) #00 .Mouse/state DEO
209 212
 		;draw-octave JSR2
210 213
 	&no-key
... ...
@@ -213,7 +216,7 @@ BRK
213 216
 
214 217
 @on-touch-adsr-view ( -> )
215 218
 
216
-	.Mouse/x DEI2 .adsr-view/x1 LDZ2 -- #0008 // SWP POP #03 /
219
+	.Mouse/x DEI2 .adsr-view/x1 LDZ2 -- 8// SWP POP #03 /
217 220
 	DUP #00 ! ,&no-a JCN
218 221
 		.Audio0/adsr DEI
219 222
 		#10 .Mouse/state DEI #10 = #e0 * + +
... ...
@@ -363,7 +366,7 @@ RTN
363 366
 		&no-dot
364 367
 		OVR TOS .Audio0/addr DEI2 ++ LDA 
365 368
 		#02 /
366
-		TOS #0004 // .wave-view/y1 LDZ2 ++ .Screen/y DEO2
369
+		TOS 4// .wave-view/y1 LDZ2 ++ .Screen/y DEO2
367 370
 		.Screen/x DEI2 #0001 ++ .Screen/x DEO2
368 371
 		( draw ) OVR .Audio0/length DEI2 SWP POP > #02 * #01 + .Screen/color DEO
369 372
 		( incr ) INCR
... ...
@@ -1,6 +1,8 @@
1 1
 ( polycat )
2 2
 
3 3
 %RTN { JMP2r }
4
+%2// { #01 SFT2 }
5
+%4// { #02 SFT2 }
4 6
 
5 7
 ( devices )
6 8
 
... ...
@@ -25,8 +27,8 @@
25 27
 	#0caf .System/b DEO2
26 28
 
27 29
 	( find center )
28
-	.Screen/width DEI2 #0002 DIV2 #0008 SUB2 .cat/x STZ2
29
-	.Screen/height DEI2 #0004 DIV2 #0003 MUL2 #0018 SUB2 .cat/y STZ2
30
+	.Screen/width DEI2 2// #0008 SUB2 .cat/x STZ2
31
+	.Screen/height DEI2 4// #0003 MUL2 #0018 SUB2 .cat/y STZ2
30 32
 
31 33
 	( vectors )
32 34
 	;on-mouse .Mouse/vector DEO2
... ...
@@ -2,7 +2,8 @@
2 2
 
3 3
 %RTN { JMP2r }
4 4
 %++  { #0001 ADD2 }
5
-%2/  { #01 SFT2 }
5
+%2// { #01 SFT2 }
6
+%4// { #02 SFT2 }
6 7
 %8+  { #0008 ADD2 }
7 8
 %STEP8 { #33 SFT2 }
8 9
 
... ...
@@ -48,8 +49,8 @@
48 49
 	#0050 .window/h STZ2
49 50
 
50 51
 	( center window )
51
-	.Screen/width DEI2 2/ .window/w LDZ2 2/ SUB2 .window/x1 STZ2
52
-	.Screen/height DEI2 2/ .window/h LDZ2 2/ SUB2 .window/y1 STZ2
52
+	.Screen/width DEI2 2// .window/w LDZ2 2// SUB2 .window/x1 STZ2
53
+	.Screen/height DEI2 2// .window/h LDZ2 2// SUB2 .window/y1 STZ2
53 54
 
54 55
 	#01 .theme/r1 STZ #02 .theme/g1 STZ #03 .theme/b1 STZ
55 56
 	#04 .theme/r2 STZ #06 .theme/g2 STZ #07 .theme/b2 STZ
... ...
@@ -57,8 +58,8 @@
57 58
 	#0c .theme/r4 STZ #0b .theme/g4 STZ #0d .theme/b4 STZ
58 59
 
59 60
 	( find screen center )
60
-	.Screen/width DEI2 2/ .center/x STZ2
61
-	.Screen/height DEI2 2/ .center/y STZ2
61
+	.Screen/width DEI2 2// .center/x STZ2
62
+	.Screen/height DEI2 2// .center/y STZ2
62 63
 
63 64
 	;update-theme JSR2
64 65
 	;draw-background JSR2
... ...
@@ -76,22 +77,22 @@ BRK
76 77
 	DUP2 #0010 NEQ2 ,&no-touch-red JCN
77 78
 		.Mouse/x DEI2 .window/x1 LDZ2 #0060 ADD2 LTH2 ,&no-touch-red JCN
78 79
 		.Mouse/x DEI2 .window/x1 LDZ2 #009c ADD2 GTH2 ,&no-touch-red JCN
79
-		( get new value ) .Mouse/x DEI2 .window/x1 LDZ2 SUB2 #0060 SUB2 #0004 DIV2 SWP POP ;theme/r1 #00 .selection LDZ ADD2 STA
80
+		( get new value ) .Mouse/x DEI2 .window/x1 LDZ2 SUB2 #0060 SUB2 4// SWP POP ;theme/r1 #00 .selection LDZ ADD2 STA
80 81
 	&no-touch-red
81 82
 	DUP2 #0020 NEQ2 ,&no-touch-green JCN
82 83
 		.Mouse/x DEI2 .window/x1 LDZ2 #0060 ADD2 LTH2 ,&no-touch-green JCN
83 84
 		.Mouse/x DEI2 .window/x1 LDZ2 #009c ADD2 GTH2 ,&no-touch-green JCN
84
-		( get new value ) .Mouse/x DEI2 .window/x1 LDZ2 SUB2 #0060 SUB2 #0004 DIV2 SWP POP ;theme/g1 #00 .selection LDZ ADD2 STA
85
+		( get new value ) .Mouse/x DEI2 .window/x1 LDZ2 SUB2 #0060 SUB2 4// SWP POP ;theme/g1 #00 .selection LDZ ADD2 STA
85 86
 	&no-touch-green
86 87
 	DUP2 #0030 NEQ2 ,&no-touch-blue JCN
87 88
 		.Mouse/x DEI2 .window/x1 LDZ2 #0060 ADD2 LTH2 ,&no-touch-blue JCN
88 89
 		.Mouse/x DEI2 .window/x1 LDZ2 #009c ADD2 GTH2 ,&no-touch-blue JCN
89
-		( get new value ) .Mouse/x DEI2 .window/x1 LDZ2 SUB2 #0060 SUB2 #0004 DIV2 SWP POP ;theme/b1 #00 .selection LDZ ADD2 STA
90
+		( get new value ) .Mouse/x DEI2 .window/x1 LDZ2 SUB2 #0060 SUB2 4// SWP POP ;theme/b1 #00 .selection LDZ ADD2 STA
90 91
 	&no-touch-blue
91 92
 	DUP2 #0040 NEQ2 ,&no-touch-radio JCN
92 93
 		.Mouse/x DEI2 .window/x1 LDZ2 #0050 ADD2 LTH2 ,&no-touch-radio JCN
93 94
 		.Mouse/x DEI2 .window/x1 LDZ2 #008c ADD2 GTH2 ,&no-touch-radio JCN
94
-		.Mouse/x DEI2 .window/x1 LDZ2 SUB2 #0050 SUB2 STEP8 2/ #0008 DIV2 SWP POP .selection STZ
95
+		.Mouse/x DEI2 .window/x1 LDZ2 SUB2 #0050 SUB2 STEP8 2// #0008 DIV2 SWP POP .selection STZ
95 96
 	&no-touch-radio
96 97
 	POP2
97 98
 
... ...
@@ -2,6 +2,7 @@
2 2
 
3 3
 %++ { #0001 ADD2 } 
4 4
 %-- { #0001 SUB2 }
5
+%2// { #01 SFT2 }
5 6
 
6 7
 ( devices )
7 8
 
... ...
@@ -28,8 +29,8 @@
28 29
 	;on-frame .Screen/vector DEO2
29 30
 	
30 31
 	( set origin )
31
-	.Screen/width DEI2 #0002 DIV2 .Screen/x DEO2
32
-	.Screen/height DEI2 #0002 DIV2 .Screen/y DEO2
32
+	.Screen/width DEI2 2// .Screen/x DEO2
33
+	.Screen/height DEI2 2// .Screen/y DEO2
33 34
 
34 35
 	;default_icn .Screen/addr DEO2
35 36
 	#31 .Screen/color DEO
... ...
@@ -1,10 +1,13 @@
1 1
 ( Dev/Time )
2 2
 
3
+%2// { #01 SFT2 }
4
+%4// { #02 SFT2 }
5
+
3 6
 %RTN     { JMP2r }
4 7
 %MOD     { DUP2 DIV MUL SUB }
5 8
 %ABS2    { DUP2 #0f SFT2 EQU #04 JCN #ffff MUL2 }
6
-%SCALEX  { #0002 DIV2 .Screen/width DEI2 #0002 DIV2 ADD2 #0040 SUB2 }
7
-%SCALEY  { #0002 DIV2 .Screen/height DEI2 #0002 DIV2 ADD2 #0040 SUB2 }
9
+%SCALEX  { 2// .Screen/width DEI2 2// ADD2 #0040 SUB2 }
10
+%SCALEY  { 2// .Screen/height DEI2 2// ADD2 #0040 SUB2 }
8 11
 %12HOURS { DUP #0c GTH #0c MUL SUB }
9 12
 %LTS2    { #8000 ADD2 SWP2 #8000 ADD2 GTH2 }
10 13
 %GTS2    { #8000 ADD2 SWP2 #8000 ADD2 LTH2 }
... ...
@@ -55,11 +58,11 @@ BRK
55 58
 		#00 SWP SCALEY .needles/sy STZ2
56 59
 		#00 SWP SCALEX .needles/sx STZ2
57 60
 	#00 .DateTime/minute DEI #0002 MUL2 ;table ADD2 LDA2
58
-		#00 SWP #0004 DIV2 #0003 MUL2 #0020 ADD2 SCALEY .needles/my STZ2
59
-		#00 SWP #0004 DIV2 #0003 MUL2 #0020 ADD2 SCALEX .needles/mx STZ2
61
+		#00 SWP 4// #0003 MUL2 #0020 ADD2 SCALEY .needles/my STZ2
62
+		#00 SWP 4// #0003 MUL2 #0020 ADD2 SCALEX .needles/mx STZ2
60 63
 	#00 .DateTime/hour DEI 12HOURS #05 MUL #0002 MUL2 ;table ADD2 LDA2
61
-		#00 SWP #0002 DIV2 #0040 ADD2 SCALEY .needles/hy STZ2
62
-		#00 SWP #0002 DIV2 #0040 ADD2 SCALEX .needles/hx STZ2
64
+		#00 SWP 2// #0040 ADD2 SCALEY .needles/hy STZ2
65
+		#00 SWP 2// #0040 ADD2 SCALEX .needles/hx STZ2
63 66
 
64 67
 	( needles )
65 68
 	#0080 SCALEX #0080 SCALEY .needles/sx LDZ2 .needles/sy LDZ2 #02 ;draw-line JSR2
... ...
@@ -83,8 +86,8 @@ BRK
83 86
 
84 87
 @draw-display ( -- )
85 88
 
86
-	.Screen/height DEI2 #0002 DIV2 #0048 ADD2 .Screen/y DEO2
87
-	.Screen/width DEI2 #0002 DIV2
89
+	.Screen/height DEI2 2// #0048 ADD2 .Screen/y DEO2
90
+	.Screen/width DEI2 2//
88 91
 	DUP2 #0020 SUB2 .Screen/x DEO2
89 92
 		;font-hex #00 .DateTime/hour DEI #0a DIV #08 MUL ADD2 .Screen/addr DEO2
90 93
 		#22 .Screen/color DEO
... ...
@@ -2,6 +2,7 @@
2 2
 
3 3
 %RTN { JMP2r }
4 4
 %MOD { DUP2 DIV MUL SUB }
5
+%2// { #01 SFT2 }
5 6
 
6 7
 ( devices )
7 8
 
... ...
@@ -24,8 +25,8 @@
24 25
 	#0da4 .System/b DEO2 
25 26
 
26 27
 	( find screen center )
27
-	.Screen/width DEI2 #0002 DIV2 .center/x STZ2
28
-	.Screen/height DEI2 #0002 DIV2 .center/y STZ2
28
+	.Screen/width DEI2 2// .center/x STZ2
29
+	.Screen/height DEI2 2// .center/y STZ2
29 30
 
30 31
 	( draw )
31 32
 	;draw-table JSR2
... ...
@@ -1,5 +1,9 @@
1 1
 ( GUI Animation )
2 2
 
3
+%2// { #01 SFT2 }
4
+
5
+( devices )
6
+
3 7
 |00 @System     [ &vector $2 &pad    $6 &r      $2 &g     $2 &b      $2 ]
4 8
 |20 @Screen     [ &vector $2 &width  $2 &height $2 &pad   $2 &x      $2 &y $2 &addr $2 &color $1 ]
5 9
 
... ...
@@ -20,8 +24,8 @@
20 24
 	;on-frame .Screen/vector DEO2
21 25
 
22 26
 	( starting position )
23
-	.Screen/width DEI2 #0002 DIV2 .dvd/x STZ2
24
-	.Screen/height DEI2 #0002 DIV2 .dvd/y STZ2
27
+	.Screen/width DEI2 2// .dvd/x STZ2
28
+	.Screen/height DEI2 2// .dvd/y STZ2
25 29
 	
26 30
 	#21 ;draw-dvd JSR2
27 31
 	
... ...
@@ -1,6 +1,7 @@
1 1
 ( GUI Labels )
2 2
 
3 3
 %RTN { JMP2r }
4
+%2// { #01 SFT2 }
4 5
 
5 6
 ( devices )
6 7
 
... ...
@@ -27,8 +28,8 @@ BRK
27 28
 @draw ( -- )
28 29
 	
29 30
 	( find screen center )
30
-	.Screen/width DEI2 #0002 DIV2 .center/x STZ2
31
-	.Screen/height DEI2 #0002 DIV2 .center/y STZ2
31
+	.Screen/width DEI2 2// .center/x STZ2
32
+	.Screen/height DEI2 2// .center/y STZ2
32 33
 
33 34
 	( draw ver line )
34 35
 	.center/x LDZ2 .Screen/x DEO2 #0000 .Screen/y DEO2
... ...
@@ -61,7 +62,7 @@ RTN
61 62
 @draw-label-middle ( x y color addr -- )
62 63
 	
63 64
 	( load ) .label/addr STZ2 .label/color STZ .Screen/y DEO2
64
-	( align ) .label/addr LDZ2 ;get-text-length JSR2 #0008 MUL2 #0002 DIV2 SUB2 .Screen/x DEO2
65
+	( align ) .label/addr LDZ2 ;get-text-length JSR2 #0008 MUL2 2// SUB2 .Screen/x DEO2
65 66
 	.label/addr LDZ2
66 67
 	&loop
67 68
 		( draw ) DUP2 LDA #00 SWP #0008 MUL2 ;font ADD2 .Screen/addr DEO2 .label/color LDZ .Screen/color DEO
... ...
@@ -85,7 +85,7 @@
85 85
 	JMP2r
86 86
 
87 87
 @arvelie-text ( -- )
88
-	.Screen/width DEI2 #0002 DIV2 #0034 SUB2 .Screen/x DEO2
88
+	.Screen/width DEI2 #01 SFT2 #0034 SUB2 .Screen/x DEO2
89 89
 	.Screen/height DEI2 #0008 SUB2 .Screen/y DEO2
90 90
 	.DateTime/year DEI2 #07d6 SUB2
91 91
 	#000a ;modf JSR2 ;digit JSR2
... ...
@@ -97,7 +97,7 @@
97 97
 	JMP2r
98 98
 
99 99
 @neralie-text ( -- )
100
-	.Screen/width DEI2 #0002 DIV2 #0004 SUB2 .Screen/x DEO2
100
+	.Screen/width DEI2 #01 SFT2 #0004 SUB2 .Screen/x DEO2
101 101
 	.neralie/n0123 LDZ2
102 102
 	#03e8 ;modf JSR2 ,digit JSR
103 103
 	#0064 ;modf JSR2 ,digit JSR
... ...
@@ -14,7 +14,7 @@
14 14
 %RTN { JMP2r }
15 15
 %++ { #01 ADD } %-- { #01 SUB }
16 16
 %8+ { #0008 ADD2 }
17
-%8* { #0008 MUL2 } %8/ { #0008 DIV2 }
17
+%8* { #0008 MUL2 } %8/ { #03 SFT2 }
18 18
 %MOD { DUP2 DIV MUL SUB }
19 19
 %MOD8 { #07 AND }
20 20
 %MOD2 { #01 AND }