Browse code

Updated SFT2 to take byte for shift amount

Andrew Alderwick authored on 23/05/2021 15:27:15
Showing 13 changed files
... ...
@@ -107,7 +107,7 @@ RTN
107 107
 		( save-x ) OVR #03 MOD TOS #0008 MUL2 .anchor/x LDZ2 ADD2 .Screen/x DEO2
108 108
 		( save-y ) OVR #03 DIV TOS #0008 MUL2 .anchor/y LDZ2 ADD2 .Screen/y DEO2
109 109
 		( get digit* ) OVR STHkr #02 MUL TOS ;digits ADD2 LDA2 
110
-		( get bit ) ROT #0e SWP SUB TOS SFT2 #0001 AND2 
110
+		( get bit ) ROT #0e SWP SUB SFT2 #0001 AND2 
111 111
 		( set tile ) #0008 MUL2 ;tiles ADD2 
112 112
 		( set style ) .style LDZ #10 MUL TOS ADD2
113 113
 		.Screen/addr DEO2
... ...
@@ -2,9 +2,9 @@
2 2
 
3 3
 %RTN { JMP2r }
4 4
 %++  { #0001 ADD2 }
5
-%2/  { #0001 SFT2 }
5
+%2/  { #01 SFT2 }
6 6
 %8+  { #0008 ADD2 }
7
-%STEP8 { #0033 SFT2 }
7
+%STEP8 { #33 SFT2 }
8 8
 
9 9
 ( devices )
10 10
 
... ...
@@ -43,10 +43,10 @@ RTN
43 43
 @print-hexadecimal ( short -- )
44 44
 	LIT '0 .Console/char DEO
45 45
 	LIT 'x .Console/char DEO
46
-	DUP2 #000c SFT2 ,&digit JSR
47
-	DUP2 #0008 SFT2 ,&digit JSR
48
-	DUP2 #0004 SFT2 ,&digit JSR
49
-	                ,&digit JSR
46
+	DUP2 #0c SFT2 ,&digit JSR
47
+	DUP2 #08 SFT2 ,&digit JSR
48
+	DUP2 #04 SFT2 ,&digit JSR
49
+	              ,&digit JSR
50 50
 RTN
51 51
 
52 52
 	&digit
... ...
@@ -2,7 +2,7 @@
2 2
 
3 3
 %RTN { JMP2r }
4 4
 %8+  { #0008 ADD2 }
5
-%8*  { #0030 SFT2 }
5
+%8*  { #30 SFT2 }
6 6
 
7 7
 ( devices )
8 8
 
... ...
@@ -2,7 +2,7 @@
2 2
 
3 3
 %RTN     { JMP2r }
4 4
 %MOD     { DUP2 DIV MUL SUB }
5
-%ABS2    { DUP2 #000f SFT2 EQU #04 JCN #ffff MUL2 }
5
+%ABS2    { DUP2 #0f SFT2 EQU #04 JCN #ffff MUL2 }
6 6
 %SCALEX  { #0002 DIV2 .Screen/width DEI2 #0002 DIV2 ADD2 #0040 SUB2 }
7 7
 %SCALEY  { #0002 DIV2 .Screen/height DEI2 #0002 DIV2 ADD2 #0040 SUB2 }
8 8
 %12HOURS { DUP #0c GTH #0c MUL SUB }
... ...
@@ -41,7 +41,7 @@
41 41
 	EQU2k ,&end JCN
42 42
 	LDAk
43 43
 	DUP #0a EQU ,&linefeed JCN
44
-	#00 #0005 SFT2 ;font ADD2
44
+	#0005 SFT2 ;font ADD2
45 45
 	.Screen/addr DEO2
46 46
 	#29 .Screen/color DEO
47 47
 	.Screen/x DEI2 #0008 ADD2 .Screen/x DEO2
... ...
@@ -1,7 +1,7 @@
1 1
 ( dev/mouse )
2 2
 
3 3
 %RTN   { JMP2r }
4
-%ABS2  { DUP2 #000f SFT2 EQU #04 JCN #ffff MUL2 }
4
+%ABS2  { DUP2 #0f SFT2 EQU #04 JCN #ffff MUL2 }
5 5
 %LTS2  { #8000 ADD2 SWP2 #8000 ADD2 GTH2 }
6 6
 %GTS2  { #8000 ADD2 SWP2 #8000 ADD2 LTH2 }
7 7
 
... ...
@@ -28,7 +28,7 @@ BRK
28 28
 	LDAk
29 29
 	DUP #00 EQU ,&end JCN
30 30
 	DUP #0a EQU ,&linefeed JCN
31
-	#00 #0005 SFT2 ;font ADD2
31
+	#0005 SFT2 ;font ADD2
32 32
 	DUP2 .Screen/addr DEO2
33 33
 	#29 .Screen/color DEO
34 34
 	,get-x-advance JSR .Screen/x DEI2 ADD2 STH2kr ADD2 .Screen/x DEO2
... ...
@@ -4,7 +4,7 @@
4 4
 %++  { #0001 ADD2 }
5 5
 %--  { #0001 SUB2 }
6 6
 %8+  { #0008 ADD2 }
7
-%ABS2 { DUP2 #000f SFT2 EQU #04 JCN #ffff MUL2 }
7
+%ABS2 { DUP2 #0f SFT2 EQU #04 JCN #ffff MUL2 }
8 8
 %LTS2  { #8000 ADD2 SWP2 #8000 ADD2 GTH2 }
9 9
 %GTS2  { #8000 ADD2 SWP2 #8000 ADD2 LTH2 }
10 10
 
... ...
@@ -11,7 +11,7 @@
11 11
 
12 12
 |0100 ( -> )
13 13
 	#90ff .System/r DEO2 #9000 .System/g DEO2 #900f .System/b DEO2
14
-	#08e0 .Screen/width DEI2 #0001 SFT2 SUB2 .scroll/x STZ2
14
+	#08e0 .Screen/width DEI2 #01 SFT2 SUB2 .scroll/x STZ2
15 15
 	#09b0 .scroll/y STZ2
16 16
 	;frame .Screen/vector DEO2
17 17
 	#30 .scroll/wait STZ
... ...
@@ -432,7 +432,7 @@
432 432
 	STAr
433 433
 	,&not-found JCN
434 434
 
435
-	;asma-opcodes/_disasm SUB2 #0003 SFT2 ( 00 byte / end* )
435
+	;asma-opcodes/_disasm SUB2 #03 SFT2 ( 00 byte / end* )
436 436
 	&loop
437 437
 	LDAkr STHr LIT2r 0001 ADD2r ( 00 byte char / end* )
438 438
 	DUP ,&not-end JCN
... ...
@@ -23,7 +23,7 @@
23 23
 %RTN? { #00 EQU #02 JCN STH2r JMP2 }
24 24
 
25 25
 %++ { #0001 ADD2 } %-- { #0001 SUB2 }
26
-%8/ { #0003 SFT2 } %8* { #0030 SFT2 }
26
+%8/ { #03 SFT2 } %8* { #30 SFT2 }
27 27
 %8- { #0008 SUB2 } %8+ { #0008 ADD2 }
28 28
 
29 29
 ( devices )
... ...
@@ -98,7 +98,7 @@ void op_div16(Uxn *u) { Uint16 a = pop16(u->src), b = pop16(u->src); push16(u->s
98 98
 void op_and16(Uxn *u) { Uint16 a = pop16(u->src), b = pop16(u->src); push16(u->src, b & a); }
99 99
 void op_ora16(Uxn *u) { Uint16 a = pop16(u->src), b = pop16(u->src); push16(u->src, b | a); }
100 100
 void op_eor16(Uxn *u) { Uint16 a = pop16(u->src), b = pop16(u->src); push16(u->src, b ^ a); }
101
-void op_sft16(Uxn *u) { Uint16 a = pop16(u->src), b = pop16(u->src); push16(u->src, b >> (a & 0x000f) << ((a & 0x00f0) >> 4)); }
101
+void op_sft16(Uxn *u) { Uint8 a = pop8(u->src); Uint16 b = pop16(u->src); push16(u->src, b >> (a & 0x0f) << ((a & 0xf0) >> 4)); }
102 102
 
103 103
 void (*ops[])(Uxn *u) = {
104 104
 	op_brk, op_lit, op_nop, op_pop, op_dup, op_swp, op_ovr, op_rot,