diff svp.cpu @ 1614:c9639139aedf

Did some cleanup of SVP code using the newly more powerful DSL if block and fixed some issues in the DSL implementation that cropped up as a result
author Michael Pavone <pavone@retrodev.com>
date Fri, 21 Sep 2018 09:26:12 -0700
parents 2d9e8a7b8ba2
children 28f80d1b343e
line wrap: on
line diff
--- a/svp.cpu	Tue Sep 18 09:06:42 2018 -0700
+++ b/svp.cpu	Fri Sep 21 09:26:12 2018 -0700
@@ -71,11 +71,8 @@
 	#loop decremenet
 	meta modestr -
 	mov reg tmp
-	switch rpl
-		case 0
-		sub 1 reg reg
-		
-		default
+	
+	if rpl
 		lsl 1 rpl rpl
 		sub 1 rpl rpl
 		local mask 16
@@ -84,19 +81,16 @@
 		sub 1 tmp tmp
 		and rpl tmp tmp
 		or rpl reg reg
-		
-		end
+	else
+		sub 1 reg reg
+	end
 	
 	case 3
 	#loop increment
 	meta modestr +
 	
 	and 7 st rpl
-	switch rpl
-		case 0
-		sub 1 reg reg
-		
-		default
+	if rpl
 		mov reg tmp
 		lsl 1 rpl rpl
 		sub 1 rpl rpl
@@ -106,8 +100,8 @@
 		add 1 tmp tmp
 		and rpl tmp tmp
 		or rpl reg reg
-		
-		end
+	else
+		sub 1 reg reg
 	end
 	
 	and 255 idx idx
@@ -184,13 +178,14 @@
 	default
 	meta flag 0
 	end
-	switch fval
-	case 0
+	
+	if fval
+	meta istrue flag
+	
+	else
 	lnot flag invert
-	meta istrue invert 
+	meta istrue invert
 	
-	default
-	meta istrue flag
 	end
 	
 PPP0000000000000 alu_n1
@@ -282,10 +277,8 @@
 	
 1001000FCCCC0OOO cond_mod
 	svp_check_cond F C
-	switch istrue
-	case 0
-	
-	default
+	if istrue
+
 	switch O
 	case 2
 	asr a 1 a
@@ -303,6 +296,7 @@
 	abs a a
 	update_flags N
 	end
+	end
 
 000000000DDD0SSS ld_int_int
 	dis "ld %s, %s" internal.D internal.S
@@ -508,10 +502,8 @@
 0100100FCCCC0000 call_cond
 	svp_check_cond F C
 	svp_op_fetch
-	switch istrue
-	case 0
 	
-	default
+	if istrue
 	svp_push pc
 	mov scratch1 pc
 	end
@@ -519,10 +511,7 @@
 0100110FCCCC0000 bra_cond
 	svp_check_cond F C
 	svp_op_fetch
-	switch istrue
-	case 0
-	
-	default
+	if istrue
 	mov scratch1 pc
 	end