mirror of
https://github.com/zellyn/go6502.git
synced 2025-04-09 00:36:59 +00:00
Cleaned up runtest.sh, handling of orgs, equates
This commit is contained in:
parent
495a2473e2
commit
d08ba2ec70
16
asm/asm.go
16
asm/asm.go
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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) {
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user