@@ -48,7 +48,9 @@ def __init__(self, text_program: str) -> None:
48
48
labels = {}
49
49
instructions = []
50
50
sideset_count = 0
51
- sideset_enable = 0
51
+ sideset_enable = False
52
+ wrap = None
53
+ wrap_target = 0
52
54
for line in text_program .split ("\n " ):
53
55
line = line .strip ()
54
56
if not line :
@@ -60,13 +62,14 @@ def __init__(self, text_program: str) -> None:
60
62
raise RuntimeError ("Multiple programs not supported" )
61
63
program_name = line .split ()[1 ]
62
64
elif line .startswith (".wrap_target" ):
63
- if len (instructions ) > 0 :
64
- raise RuntimeError ("wrap_target not supported" )
65
+ wrap_target = len (instructions )
65
66
elif line .startswith (".wrap" ):
66
- pass
67
+ if len (instructions ) == 0 :
68
+ raise RuntimeError ("Cannot have .wrap as first instruction" )
69
+ wrap = len (instructions ) - 1
67
70
elif line .startswith (".side_set" ):
68
71
sideset_count = int (line .split ()[1 ])
69
- sideset_enable = 1 if "opt" in line else 0
72
+ sideset_enable = "opt" in line
70
73
elif line .endswith (":" ):
71
74
label = line [:- 1 ]
72
75
if label in labels :
@@ -223,6 +226,10 @@ def __init__(self, text_program: str) -> None:
223
226
"sideset_enable" : sideset_enable ,
224
227
}
225
228
229
+ if wrap is not None :
230
+ self .pio_kwargs ["wrap" ] = wrap
231
+ self .pio_kwargs ["wrap_target" ] = wrap_target
232
+
226
233
self .assembled = array .array ("H" , assembled )
227
234
228
235
0 commit comments