/
hyppotest

hyppotest

Hyppotest is a tool @Paul Gardner-Stephen introduced into the mega65-core repo to run a suite of automated tests on the hypervisor.

  • Source-code is located at src/tools/hyppotest.c

  • Can be built from the base of mega65-core repo with make src/tools/hyppotest

 

To run the tool, just provide the name of a test-script to execute, e.g.:

./hyppotest hyppotest-self.test

[PASS] assemble with acme [PASS] poke directive [PASS] check mem [PASS] ignore reg directives [PASS] clear breakpoint directives [PASS] step and run directives [PASS] let directive [ ] flag directivesAborted (core dumped)

 

Jimbo has made improvements in this PR which has been merged into development branch:

 

I’ll paste the details he shared there into here, as a starting point for documentation on this tool:

Enhancements

  • The lines of hyppotest test files can be freely indented with initial whitespace.

  • hyppotest can run just a specific test in a test file.

    • hyppotest can take a 2nd optional command-line argument, which is the name of a test in the test file.

    • When this 2nd argument is present, hyppotest only runs the named test. hyppotest ignores any other tests in the test file.

  • hyppotest can test the CPU flags as the F register.

  • The instruction log's capacity has been doubled.

  • hyppotest can execute and disassemble all (officially documented) 6502 and 65C02 opcodes.

  • Additional test files

    • src/tools/hyppotest-self.test tests some of hyppotest's directives.

    • src/tools/hyppotest-opcodes.test tests hyppotest's (officially documented) 6502 and 65c02 opcodes.

New test directives

There are new directives for use in hyppotest test files.

  • allow stack <overflow|underflow>

  • assemble [at <address|symbol>] with acme

  • check regs

    • synonym for check registers

  • check <mem|memory>

    • synonym for check ram

  • clear all breakpoints

  • clear breakpoint (address|symbol)

  • clear flag flag

  • define name as value

  • end assemble

  • end test

    • synonym for test end

  • expect flag flag is <clear|set>

  • forbid stack <overflow|underflow>

  • let reg = value

    • Presets the value of a register

  • poke <address|symbol>, value[, value…]

  • ignore reg name

    • Excludes the named register from the check registers directive.

  • ignore all regs

  • run until <brk|jsr>

  • set flag flag

  • step [count]

Fixes

  • For the jmp and jsr directives:

    • arguments like $nnnn are interpreted as literal addresses; and

    • symbols can be either hyppo or non-hyppo symbols.

  • Negative symbol deltas (eg sym-16 or sym-$0a) calculate the correct address.

  • make clean deletes the tool binaries that had been built and the FAIL and PASS files output by hyppotest.

  • Git ignores the FAIL and PASS files output by hyppotest.

  • hyppotest consistently writes to the simulated ram and leaves the expected ram for the expect and check directives.

  • A test fails if any of the directives in the test fail.

  • The base register is set to 0 when hyppotest starts execution outside the hyppo.

  • When hyppotest can't read the test file, the error message from hyppotest includes the name of the test file.

  • hyppotest shows addresses that exactly match a symbol as that symbol.

Related content

HYPPO mode programs
HYPPO mode programs
More like this
MEGAFLASH Testing
MEGAFLASH Testing
More like this
Terminal
Terminal
More like this
Release verification 0.96 (Batch 3 - MEGA65r6 bringup)
Release verification 0.96 (Batch 3 - MEGA65r6 bringup)
More like this
Curious about the MEGA65? Want to try the emulator?
Curious about the MEGA65? Want to try the emulator?
More like this
MegaWAT!?
MegaWAT!?
More like this