Don't preseed devices in label tree.
This commit is contained in:
parent
8bf9aa78da
commit
300f3dfa75
36
etc/asma.lua
36
etc/asma.lua
|
@ -23,7 +23,6 @@ spairs = function(t)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
local trees = {
|
local trees = {
|
||||||
['asma-labels'] = { },
|
|
||||||
['asma-opcodes'] = { }
|
['asma-opcodes'] = { }
|
||||||
}
|
}
|
||||||
local opcodes_in_order = { }
|
local opcodes_in_order = { }
|
||||||
|
@ -49,41 +48,6 @@ do
|
||||||
end
|
end
|
||||||
assert(#opcodes_in_order == 32, 'didn\'t find 32 opcodes in assembler code!')
|
assert(#opcodes_in_order == 32, 'didn\'t find 32 opcodes in assembler code!')
|
||||||
end
|
end
|
||||||
do
|
|
||||||
local add_device
|
|
||||||
add_device = function(addr, name, fields)
|
|
||||||
addr = tonumber(addr, 16)
|
|
||||||
local k
|
|
||||||
if name:match('^Audio%x+$') then
|
|
||||||
k = 'asma-ldev-Audio'
|
|
||||||
else
|
|
||||||
k = ('asma-ldev-%s'):format(name)
|
|
||||||
end
|
|
||||||
trees['asma-labels'][name] = {
|
|
||||||
('"%s 00'):format(name),
|
|
||||||
('00%02x :%s/_entry'):format(addr, k)
|
|
||||||
}
|
|
||||||
trees[k] = { }
|
|
||||||
addr = 0
|
|
||||||
for fname, flen in fields:gmatch('%&(%S+) +%$(%x+)') do
|
|
||||||
if fname ~= 'pad' then
|
|
||||||
trees[k][fname] = {
|
|
||||||
('"%s 00'):format(fname),
|
|
||||||
('00%02x'):format(addr)
|
|
||||||
}
|
|
||||||
end
|
|
||||||
addr = addr + tonumber(flen, 16)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
for l in assert(io.lines('projects/examples/blank.usm')) do
|
|
||||||
local f = {
|
|
||||||
l:match('^%|(%x%x) +%@(%S+) +%[ (.*) %]')
|
|
||||||
}
|
|
||||||
if f[1] then
|
|
||||||
add_device(unpack(f))
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
do
|
do
|
||||||
local representation = setmetatable({
|
local representation = setmetatable({
|
||||||
['&'] = '26 00 ( & )'
|
['&'] = '26 00 ( & )'
|
||||||
|
|
|
@ -9,7 +9,6 @@ spairs = (t) ->
|
||||||
keys[i], t[keys[i]]
|
keys[i], t[keys[i]]
|
||||||
|
|
||||||
trees = {
|
trees = {
|
||||||
['asma-labels']: {}
|
|
||||||
['asma-opcodes']: {}
|
['asma-opcodes']: {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,32 +31,6 @@ do -- opcodes
|
||||||
table.insert opcodes_in_order, w
|
table.insert opcodes_in_order, w
|
||||||
assert #opcodes_in_order == 32, 'didn\'t find 32 opcodes in assembler code!'
|
assert #opcodes_in_order == 32, 'didn\'t find 32 opcodes in assembler code!'
|
||||||
|
|
||||||
do -- devices -> labels
|
|
||||||
add_device = (addr, name, fields) ->
|
|
||||||
addr = tonumber addr, 16
|
|
||||||
k = if name\match '^Audio%x+$'
|
|
||||||
'asma-ldev-Audio'
|
|
||||||
else
|
|
||||||
'asma-ldev-%s'\format name
|
|
||||||
trees['asma-labels'][name] = {
|
|
||||||
'"%s 00'\format name
|
|
||||||
'00%02x :%s/_entry'\format addr, k
|
|
||||||
}
|
|
||||||
trees[k] = {}
|
|
||||||
addr = 0
|
|
||||||
for fname, flen in fields\gmatch '%&(%S+) +%$(%x+)'
|
|
||||||
if fname != 'pad'
|
|
||||||
trees[k][fname] = {
|
|
||||||
'"%s 00'\format fname,
|
|
||||||
'00%02x'\format addr
|
|
||||||
}
|
|
||||||
addr += tonumber flen, 16
|
|
||||||
for l in assert io.lines 'projects/examples/blank.usm'
|
|
||||||
f = { l\match '^%|(%x%x) +%@(%S+) +%[ (.*) %]' }
|
|
||||||
if f[1]
|
|
||||||
add_device unpack f
|
|
||||||
|
|
||||||
|
|
||||||
do -- first characters
|
do -- first characters
|
||||||
representation = setmetatable {
|
representation = setmetatable {
|
||||||
'&': '26 00 ( & )'
|
'&': '26 00 ( & )'
|
||||||
|
|
|
@ -148,7 +148,7 @@
|
||||||
#ff ;asma/pass STA
|
#ff ;asma/pass STA
|
||||||
#0000 ;asma/error STA2
|
#0000 ;asma/error STA2
|
||||||
;asma-heap ;asma/heap STA2
|
;asma-heap ;asma/heap STA2
|
||||||
;asma-labels/_entry ;asma-trees/labels STA2
|
#0000 ;asma-trees/labels STA2
|
||||||
( FIXME should walk the label tree and remove any in the heap )
|
( FIXME should walk the label tree and remove any in the heap )
|
||||||
;asma-opcodes/_entry ;asma-trees/opcodes STA2
|
;asma-opcodes/_entry ;asma-trees/opcodes STA2
|
||||||
#0000 ;asma-trees/macros STA2
|
#0000 ;asma-trees/macros STA2
|
||||||
|
@ -754,91 +754,6 @@
|
||||||
&7c :&7b :&7d '| 00 :asma-pad-absolute
|
&7c :&7b :&7d '| 00 :asma-pad-absolute
|
||||||
&7d $2 $2 '} 00 :asma-ignore
|
&7d $2 $2 '} 00 :asma-ignore
|
||||||
|
|
||||||
@asma-labels
|
|
||||||
&Audio0 $2 $2 "Audio0 00 0030 :asma-ldev-Audio/_entry
|
|
||||||
&Audio1 :&Audio0 :&Audio2 "Audio1 00 0040 :asma-ldev-Audio/_entry
|
|
||||||
&Audio2 $2 $2 "Audio2 00 0050 :asma-ldev-Audio/_entry
|
|
||||||
&Audio3 :&Audio1 :&Controller "Audio3 00 0060 :asma-ldev-Audio/_entry
|
|
||||||
&Console $2 $2 "Console 00 0010 :asma-ldev-Console/_entry
|
|
||||||
&Controller :&Console $2 "Controller 00 0080 :asma-ldev-Controller/_entry
|
|
||||||
&_entry :&Audio3 :&Mouse "DateTime 00 00b0 :asma-ldev-DateTime/_entry
|
|
||||||
&File $2 $2 "File 00 00a0 :asma-ldev-File/_entry
|
|
||||||
&Midi :&File $2 "Midi 00 0070 :asma-ldev-Midi/_entry
|
|
||||||
&Mouse :&Midi :&System "Mouse 00 0090 :asma-ldev-Mouse/_entry
|
|
||||||
&Screen $2 $2 "Screen 00 0020 :asma-ldev-Screen/_entry
|
|
||||||
&System :&Screen $2 "System 00 0000 :asma-ldev-System/_entry
|
|
||||||
|
|
||||||
@asma-ldev-Audio
|
|
||||||
&addr $2 $2 "addr 00 000c
|
|
||||||
&adsr :&addr $2 "adsr 00 0008
|
|
||||||
&length :&adsr :&output "length 00 000a
|
|
||||||
&output $2 $2 "output 00 0004
|
|
||||||
&_entry :&length :&vector "pitch 00 000f
|
|
||||||
&position $2 $2 "position 00 0002
|
|
||||||
&vector :&position :&volume "vector 00 0000
|
|
||||||
&volume $2 $2 "volume 00 000e
|
|
||||||
|
|
||||||
@asma-ldev-Console
|
|
||||||
&byte $2 $2 "byte 00 0009
|
|
||||||
&char :&byte $2 "char 00 0008
|
|
||||||
&_entry :&char :&string "short 00 000a
|
|
||||||
&string $2 $2 "string 00 000c
|
|
||||||
|
|
||||||
@asma-ldev-Controller
|
|
||||||
&button $2 $2 "button 00 0002
|
|
||||||
&_entry :&button :&vector "key 00 0003
|
|
||||||
&vector $2 $2 "vector 00 0000
|
|
||||||
|
|
||||||
@asma-ldev-DateTime
|
|
||||||
&day $2 $2 "day 00 0003
|
|
||||||
&dotw :&day $2 "dotw 00 0007
|
|
||||||
&doty :&dotw :&hour "doty 00 0008
|
|
||||||
&hour $2 $2 "hour 00 0004
|
|
||||||
&_entry :&doty :&second "isdst 00 000a
|
|
||||||
&minute $2 $2 "minute 00 0005
|
|
||||||
&month :&minute $2 "month 00 0002
|
|
||||||
&second :&month :&year "second 00 0006
|
|
||||||
&year $2 $2 "year 00 0000
|
|
||||||
|
|
||||||
@asma-ldev-File
|
|
||||||
&length $2 $2 "length 00 000a
|
|
||||||
&load :&length :&name "load 00 000c
|
|
||||||
&name $2 $2 "name 00 0008
|
|
||||||
&_entry :&load :&success "offset 00 0004
|
|
||||||
&save $2 $2 "save 00 000e
|
|
||||||
&success :&save :&vector "success 00 0002
|
|
||||||
&vector $2 $2 "vector 00 0000
|
|
||||||
|
|
||||||
@asma-ldev-Midi
|
|
||||||
&channel $2 $2 "channel 00 0002
|
|
||||||
¬e :&channel $2 "note 00 0003
|
|
||||||
&_entry :¬e :&velocity "vector 00 0000
|
|
||||||
&velocity $2 $2 "velocity 00 0004
|
|
||||||
|
|
||||||
@asma-ldev-Mouse
|
|
||||||
&chord $2 $2 "chord 00 0007
|
|
||||||
&state :&chord $2 "state 00 0006
|
|
||||||
&_entry :&state :&y "vector 00 0000
|
|
||||||
&x $2 $2 "x 00 0002
|
|
||||||
&y :&x $2 "y 00 0004
|
|
||||||
|
|
||||||
@asma-ldev-Screen
|
|
||||||
&addr $2 $2 "addr 00 000c
|
|
||||||
&color :&addr :&height "color 00 000e
|
|
||||||
&height $2 $2 "height 00 0004
|
|
||||||
&_entry :&color :&x "vector 00 0000
|
|
||||||
&width $2 $2 "width 00 0002
|
|
||||||
&x :&width :&y "x 00 0008
|
|
||||||
&y $2 $2 "y 00 000a
|
|
||||||
|
|
||||||
@asma-ldev-System
|
|
||||||
&b $2 $2 "b 00 000c
|
|
||||||
&g :&b :&r "g 00 000a
|
|
||||||
&r $2 $2 "r 00 0008
|
|
||||||
&_entry :&g :&wst "rst 00 0003
|
|
||||||
&vector $2 $2 "vector 00 0000
|
|
||||||
&wst :&vector $2 "wst 00 0002
|
|
||||||
|
|
||||||
@asma-opcodes
|
@asma-opcodes
|
||||||
&BRK :&AND :&DEI &_disasm "BRK 00
|
&BRK :&AND :&DEI &_disasm "BRK 00
|
||||||
&_entry :&EQU :&ROT "LIT 00
|
&_entry :&EQU :&ROT "LIT 00
|
||||||
|
|
Loading…
Reference in New Issue