| ... | ... |
@@ -79,7 +79,8 @@ do |
| 79 | 79 |
['['] = 'asma-ignore', |
| 80 | 80 |
[']'] = 'asma-ignore', |
| 81 | 81 |
['('] = 'asma-comment-start',
|
| 82 |
- [')'] = 'asma-comment-end' |
|
| 82 |
+ [')'] = 'asma-comment-end', |
|
| 83 |
+ ['~'] = 'asma-include' |
|
| 83 | 84 |
}) |
| 84 | 85 |
process('asma-first-char-macro', {
|
| 85 | 86 |
['('] = 'asma-comment-start',
|
| ... | ... |
@@ -147,8 +148,8 @@ fmt = function(...) |
| 147 | 148 |
return (('\t%-11s %-10s %-12s %-14s %s '):format(...):gsub(' +$', '\n'))
|
| 148 | 149 |
end |
| 149 | 150 |
do |
| 150 |
- local _with_0 = assert(io.open('projects/software/asma.tal.tmp', 'w'))
|
|
| 151 |
- for l in assert(io.lines('projects/software/asma.tal')) do
|
|
| 151 |
+ local _with_0 = assert(io.open('projects/library/asma.tal.tmp', 'w'))
|
|
| 152 |
+ for l in assert(io.lines('projects/library/asma.tal')) do
|
|
| 152 | 153 |
if l:match('--- cut here ---') then
|
| 153 | 154 |
break |
| 154 | 155 |
end |
| ... | ... |
@@ -189,43 +190,6 @@ do |
| 189 | 190 |
end |
| 190 | 191 |
_with_0:write('\n')
|
| 191 | 192 |
end |
| 192 |
- _with_0:write([[( |
|
| 193 |
- Heap, a large temporary area for keeping track of labels. More complex |
|
| 194 |
- programs need more of this space. If there's insufficient space then the |
|
| 195 |
- assembly process will fail, but having extra space above what the most |
|
| 196 |
- complex program needs provides no benefit. |
|
| 197 |
- |
|
| 198 |
- This heap, and the buffers below, are free to be used to hold temporary |
|
| 199 |
- data between assembly runs, and do not need to be initialized with any |
|
| 200 |
- particular contents to use the assembler. |
|
| 201 |
-) |
|
| 202 |
- |
|
| 203 |
-@asma-heap |
|
| 204 |
- |
|
| 205 |
-|e000 &end |
|
| 206 |
- |
|
| 207 |
-( |
|
| 208 |
- Buffer for use with loading source code. |
|
| 209 |
- The minimum size is the length of the longest token plus one, which is |
|
| 210 |
- 0x21 to keep the same capability of the C assembler. |
|
| 211 |
- Larger sizes are more efficient, provided there is enough |
|
| 212 |
- heap space to keep track of all the labels. |
|
| 213 |
-) |
|
| 214 |
- |
|
| 215 |
-@asma-read-buffer |
|
| 216 |
- |
|
| 217 |
-|f800 &end |
|
| 218 |
- |
|
| 219 |
-( |
|
| 220 |
- Buffer for use with writing output. |
|
| 221 |
- The minimum size is 1, and larger sizes are more efficient. |
|
| 222 |
-) |
|
| 223 |
- |
|
| 224 |
-@asma-write-buffer |
|
| 225 |
- |
|
| 226 |
-|ffff &end |
|
| 227 |
- |
|
| 228 |
-]]) |
|
| 229 | 193 |
_with_0:close() |
| 230 | 194 |
end |
| 231 |
-return os.execute('mv projects/software/asma.tal.tmp projects/software/asma.tal')
|
|
| 195 |
+return os.execute('mv projects/library/asma.tal.tmp projects/library/asma.tal')
|
| ... | ... |
@@ -1,7 +1,7 @@ |
| 1 | 1 |
-- |
| 2 | 2 |
-- Asma tree helper script |
| 3 | 3 |
-- |
| 4 |
+-- This script updates the trees at the end of projects/library/asma.tal when |
|
| 4 | 5 |
-- Uxn's opcode set changes or new runes (first character of tokens) are |
| 5 | 6 |
-- created, so that new changes in the C assembler can be incorporated rapidly |
| 6 | 7 |
-- into asma. |
| ... | ... |
@@ -80,6 +80,7 @@ do -- first characters |
| 80 | 80 |
']': 'asma-ignore' |
| 81 | 81 |
'(': 'asma-comment-start'
|
| 82 | 82 |
')': 'asma-comment-end' |
| 83 |
+ '~': 'asma-include' |
|
| 83 | 84 |
process 'asma-first-char-macro', |
| 84 | 85 |
'(': 'asma-comment-start'
|
| 85 | 86 |
')': 'asma-comment-end' |
| ... | ... |
@@ -122,8 +123,8 @@ printout = true |
| 122 | 123 |
fmt = (...) -> |
| 123 | 124 |
('\t%-11s %-10s %-12s %-14s %s '\format(...)\gsub ' +$', '\n')
|
| 124 | 125 |
|
| 125 |
-with assert io.open 'projects/software/asma.tal.tmp', 'w' |
|
| 126 |
- for l in assert io.lines 'projects/software/asma.tal' |
|
| 126 |
+with assert io.open 'projects/library/asma.tal.tmp', 'w' |
|
| 127 |
+ for l in assert io.lines 'projects/library/asma.tal' |
|
| 127 | 128 |
if l\match '--- cut here ---' |
| 128 | 129 |
break |
| 129 | 130 |
\write l |
| ... | ... |
@@ -155,43 +156,6 @@ with assert io.open 'projects/software/asma.tal.tmp', 'w' |
| 155 | 156 |
'' |
| 156 | 157 |
\write fmt label, lefts[k] or ' $2', rights[k] or ' $2', unpack v |
| 157 | 158 |
\write '\n' |
| 158 |
- \write [[( |
|
| 159 |
- Heap, a large temporary area for keeping track of labels. More complex |
|
| 160 |
- programs need more of this space. If there's insufficient space then the |
|
| 161 |
- assembly process will fail, but having extra space above what the most |
|
| 162 |
- complex program needs provides no benefit. |
|
| 163 |
- |
|
| 164 |
- This heap, and the buffers below, are free to be used to hold temporary |
|
| 165 |
- data between assembly runs, and do not need to be initialized with any |
|
| 166 |
- particular contents to use the assembler. |
|
| 167 |
-) |
|
| 168 |
- |
|
| 169 |
-@asma-heap |
|
| 170 |
- |
|
| 171 |
-|e000 &end |
|
| 172 |
- |
|
| 173 |
-( |
|
| 174 |
- Buffer for use with loading source code. |
|
| 175 |
- The minimum size is the length of the longest token plus one, which is |
|
| 176 |
- 0x21 to keep the same capability of the C assembler. |
|
| 177 |
- Larger sizes are more efficient, provided there is enough |
|
| 178 |
- heap space to keep track of all the labels. |
|
| 179 |
-) |
|
| 180 |
- |
|
| 181 |
-@asma-read-buffer |
|
| 182 |
- |
|
| 183 |
-|f800 &end |
|
| 184 |
- |
|
| 185 |
-( |
|
| 186 |
- Buffer for use with writing output. |
|
| 187 |
- The minimum size is 1, and larger sizes are more efficient. |
|
| 188 |
-) |
|
| 189 |
- |
|
| 190 |
-@asma-write-buffer |
|
| 191 |
- |
|
| 192 |
-|ffff &end |
|
| 193 |
- |
|
| 194 |
-]] |
|
| 195 | 159 |
\close! |
| 196 |
-os.execute 'mv projects/software/asma.tal.tmp projects/software/asma.tal' |
|
| 160 |
+os.execute 'mv projects/library/asma.tal.tmp projects/library/asma.tal' |
|
| 197 | 161 |
|
| ... | ... |
@@ -931,10 +931,10 @@ |
| 931 | 931 |
&3b :&3a $2 '; 00 :asma-literal-abs-addr |
| 932 | 932 |
&40 :&3b :&5b '@ 00 :asma-label-define |
| 933 | 933 |
&5b $2 $2 '[ 00 :asma-ignore |
| 934 |
- &5d :&40 :&7c '] 00 :asma-ignore |
|
| 934 |
+ &5d :&40 :&7d '] 00 :asma-ignore |
|
| 935 | 935 |
&7b $2 $2 '{ 00 :asma-ignore
|
| 936 |
- &7c :&7b :&7d '| 00 :asma-pad-absolute |
|
| 937 |
- &7d $2 :&7e '} 00 :asma-ignore |
|
| 936 |
+ &7c :&7b $2 '| 00 :asma-pad-absolute |
|
| 937 |
+ &7d :&7c :&7e '} 00 :asma-ignore |
|
| 938 | 938 |
&7e $2 $2 '~ 00 :asma-include |
| 939 | 939 |
|
| 940 | 940 |
@asma-opcodes |