Cleaned up runtest.sh, handling of orgs, equates

This commit is contained in:
Zellyn Hunter 2014-09-15 17:40:49 -07:00
parent 495a2473e2
commit d08ba2ec70
4 changed files with 63 additions and 42 deletions

View File

@ -71,8 +71,11 @@ func (a *Assembler) Load(filename string, prefix int) error {
return parseErr
}
if in.Type == inst.TypeOrg {
switch in.Type {
case inst.TypeOrg:
a.Ctx.SetAddr(in.Addr)
case inst.TypeTarget:
return in.Errorf("target not implemented yet")
}
// Update address
@ -211,9 +214,18 @@ func (a *Assembler) Pass2() error {
a.initPass()
for _, in := range a.Insts {
if in.Type == inst.TypeOrg {
switch in.Type {
case inst.TypeOrg:
a.Ctx.SetAddr(in.Addr)
continue
case inst.TypeEqu:
val, err := in.Exprs[0].Eval(a.Ctx, in.Line)
if err != nil {
return err
}
in.Value = val
a.Ctx.Set(in.Label, val)
continue
}
err := in.Compute(a.Ctx)

View File

@ -1,36 +1,54 @@
go run a2as.go --in ../../../../goapple2/source/redbook/monitor.asm --out monitor.rom --flavor redbooka --listing monitor.lst --prefix=-1
go run a2as.go --in ../../../../goapple2/source/redbook/miniasm.asm --out miniasm.rom --flavor redbooka --listing miniasm.lst --prefix=-1
go run a2as.go --in ../../../../goapple2/source/redbook/sweet16.asm --out sweet16.rom --flavor redbooka --listing sweet16.lst --prefix=-1
go run a2as.go --in ../../../../goapple2/source/redbook/fp.asm --out fp.rom --flavor redbookb --listing fp.lst --prefix=-1
go run a2as.go --in ../../../../goapple2/source/redbook/misc-f669.asm --out misc-f669.rom --flavor redbooka --listing misc-f669.lst --prefix=0
go run a2as.go --in ../../../../goapple2/source/redbook/intbasic.asm --out intbasic.rom --flavor merlin --listing intbasic.lst --prefix=-1
go run a2as.go --in ../../../../goapple2/source/applesoft/S.acf --out applesoft.rom --flavor scma --listing applesoft.lst --prefix=-1
MD5_APPLESOFT=$(md5 -q applesoft.rom)
[[ $MD5_APPLESOFT == '84bfbe89c9cd96e589c4d4cb01df4c4a' ]] || echo 'Wrong checksum for applesoft.rom'
MD5_FP=$(md5 -q fp.rom)
[[ $MD5_FP == '76ae6287e5e96471dc95e95eb93ba06d' ]] || echo 'Wrong checksum for fp.rom'
MD5_INTBASIC=$(md5 -q intbasic.rom)
[[ $MD5_INTBASIC == 'c22d8f7ebb54608c8718b66454ca691f' ]] || echo 'Wrong checksum for intbasic.rom'
MD5_MINIASM=$(md5 -q miniasm.rom)
[[ $MD5_MINIASM == 'e64882d56c485ee88d2bfaf4b642c2f9' ]] || echo 'Wrong checksum for miniasm.rom'
MD5_MISC_F669=$(md5 -q misc-f669.rom)
[[ $MD5_MISC_F669 == 'eccaef17e6340b54c309b87ffb6f6f22' ]] || echo 'Wrong checksum for misc-f669.rom'
MD5_MONITOR=$(md5 -q monitor.rom)
[[ $MD5_MONITOR == 'bc0163ca04c463e06f99fb029ad21b1f' ]] || echo 'Wrong checksum for monitor.rom'
[[ $MD5_MONITOR == 'bc0163ca04c463e06f99fb029ad21b1f' ]] || (echo 'Wrong checksum for monitor.rom'; false) || exit 1
rm -f monitor.rom monitor.lst
go run a2as.go --in ../../../../goapple2/source/redbook/miniasm.asm --out miniasm.rom --flavor redbooka --listing miniasm.lst --prefix=-1
MD5_MINIASM=$(md5 -q miniasm.rom)
[[ $MD5_MINIASM == 'e64882d56c485ee88d2bfaf4b642c2f9' ]] || (echo 'Wrong checksum for miniasm.rom'; false) || exit 1
rm -f miniasm.rom miniasm.lst
go run a2as.go --in ../../../../goapple2/source/redbook/sweet16.asm --out sweet16.rom --flavor redbooka --listing sweet16.lst --prefix=-1
MD5_SWEET16=$(md5 -q sweet16.rom)
[[ $MD5_SWEET16 == '93e148f5e30cdd574fd1bb3c26798787' ]] || echo 'Wrong checksum for sweet16.rom'
[[ $MD5_SWEET16 == '93e148f5e30cdd574fd1bb3c26798787' ]] || (echo 'Wrong checksum for sweet16.rom'; false) || exit 1
rm -f sweet16.rom sweet16.lst
go run a2as.go --in ../../../../goapple2/source/redbook/fp.asm --out fp.rom --flavor redbookb --listing fp.lst --prefix=-1
MD5_FP=$(md5 -q fp.rom)
[[ $MD5_FP == '76ae6287e5e96471dc95e95eb93ba06d' ]] || (echo 'Wrong checksum for fp.rom'; false) || exit 1
rm -f fp.rom fp.lst
go run a2as.go --in ../../../../goapple2/source/redbook/misc-f669.asm --out misc-f669.rom --flavor redbooka --listing misc-f669.lst --prefix=0
MD5_MISC_F669=$(md5 -q misc-f669.rom)
[[ $MD5_MISC_F669 == 'eccaef17e6340b54c309b87ffb6f6f22' ]] || (echo 'Wrong checksum for misc-f669.rom'; false) || exit 1
rm -f misc-f669.rom misc-f669.lst
go run a2as.go --in ../../../../goapple2/source/redbook/intbasic.asm --out intbasic.rom --flavor merlin --listing intbasic.lst --prefix=-1
MD5_INTBASIC=$(md5 -q intbasic.rom)
[[ $MD5_INTBASIC == 'c22d8f7ebb54608c8718b66454ca691f' ]] || (echo 'Wrong checksum for intbasic.rom'; false) || exit 1
rm -f intbasic.rom intbasic.lst
go run a2as.go --in ../../../../goapple2/source/applesoft/S.acf --out applesoft.rom --flavor scma --listing applesoft.lst --prefix=-1
MD5_APPLESOFT=$(md5 -q applesoft.rom)
[[ $MD5_APPLESOFT == '84bfbe89c9cd96e589c4d4cb01df4c4a' ]] || (echo 'Wrong checksum for applesoft.rom'; false) || exit 1
rm -f applesoft.rom applesoft.lst
go run a2as.go --in ../../../../goapple2/source/progaid/hires.asm --out hires.rom --flavor redbooka
go run a2as.go --in ../../../../goapple2/source/progaid/verify.asm --out verify.rom --flavor redbooka
go run a2as.go --in ../../../../goapple2/source/progaid/ramtest.asm --out ramtest.rom --flavor redbooka
go run a2as.go --in ../../../../goapple2/source/progaid/music.asm --out music.rom --flavor redbooka
MD5_HIRES=$(md5 -q hires.rom)
[[ $MD5_HIRES == 'efe22f1a8c94458068fb12ae702b58c4' ]] || echo 'Wrong checksum for hires.rom'
MD5_MUSIC=$(md5 -q music.rom)
[[ $MD5_MUSIC == '0ffe796a73410e822fcae5e510374924' ]] || echo 'Wrong checksum for music.rom'
MD5_RAMTEST=$(md5 -q ramtest.rom)
[[ $MD5_RAMTEST == '0420635256a3b016323989e3a9fe4ce7' ]] || echo 'Wrong checksum for ramtest.rom'
[[ $MD5_HIRES == 'efe22f1a8c94458068fb12ae702b58c4' ]] || (echo 'Wrong checksum for hires.rom'; false) || exit 1
rm -f hires.rom
go run a2as.go --in ../../../../goapple2/source/progaid/verify.asm --out verify.rom --flavor redbooka
MD5_VERIFY=$(md5 -q verify.rom)
[[ $MD5_VERIFY == '527f420462426e4851b942af46cc7f48' ]] || echo 'Wrong checksum for verify.rom'
[[ $MD5_VERIFY == '527f420462426e4851b942af46cc7f48' ]] || (echo 'Wrong checksum for verify.rom'; false) || exit 1
rm -f verify.rom
go run a2as.go --in ../../../../goapple2/source/progaid/ramtest.asm --out ramtest.rom --flavor redbooka
MD5_RAMTEST=$(md5 -q ramtest.rom)
[[ $MD5_RAMTEST == '0420635256a3b016323989e3a9fe4ce7' ]] || (echo 'Wrong checksum for ramtest.rom'; false) || exit 1
rm -f ramtest.rom
go run a2as.go --in ../../../../goapple2/source/progaid/music.asm --out music.rom --flavor redbooka
MD5_MUSIC=$(md5 -q music.rom)
[[ $MD5_MUSIC == '0ffe796a73410e822fcae5e510374924' ]] || (echo 'Wrong checksum for music.rom'; false) || exit 1
rm -f music.rom

View File

@ -8,8 +8,6 @@ import (
"github.com/zellyn/go6502/opcodes"
)
const xyzzy = false
// DecodeOp contains the common code that decodes an Opcode, once we
// have fully parsed it.
func DecodeOp(c context.Context, in inst.I, summary opcodes.OpSummary, indirect bool, xy rune, forceWide bool) (inst.I, error) {

View File

@ -160,9 +160,6 @@ func (i I) String() string {
// Compute attempts to finalize the instruction.
func (i *I) Compute(c context.Context) error {
if i.Type == TypeEqu || i.Type == TypeTarget {
return i.computeMustKnow(c)
}
if i.Final {
return nil
}
@ -171,12 +168,10 @@ func (i *I) Compute(c context.Context) error {
return i.computeOp(c)
case TypeData:
return i.computeData(c)
case TypeBlock:
panic("Compute called with TypeBlock")
}
// Everything else is zero-width
i.Width = 0
// Everything else is already final
// TODO(zellyn): warn if we reach here?
i.Final = true
return nil
@ -245,8 +240,6 @@ func (i *I) computeBlock(c context.Context, final bool) (bool, error) {
}
func (i *I) computeMustKnow(c context.Context) error {
i.Width = 0
i.Final = true
val, err := i.Exprs[0].Eval(c, i.Line)
if err != nil {
return err