Skip to content

Instantly share code, notes, and snippets.

@rvalles
Last active February 25, 2023 05:34
Show Gist options
  • Save rvalles/20b485abb07ba3af4ae6be1046d93bfb to your computer and use it in GitHub Desktop.
Save rvalles/20b485abb07ba3af4ae6be1046d93bfb to your computer and use it in GitHub Desktop.
torture test for verifiedreadmem/verifiedwritemem
#!/usr/bin/env python3
import serial
import time
import random
import struct
from Crc import Crc
from RomWack import RomWack
from SAD import SAD
from ExecLibrary import ExecLibrary
from AmigaSnippets import AmigaSnippets
def transfertest(snip, addr, size):
count = 0
while True:
data = random.randbytes(size)
start = time.monotonic()
snip.verifiedwritemem(addr, data)
end = time.monotonic()
print(f'->A count: {count} diff: {end-start}s')
start = time.monotonic()
rdata = snip.verifiedreadmem(addr, size)
end = time.monotonic()
print(f'<-A count: {count} diff: {end-start}s')
if data != rdata:
print("Data mismatch (?!)")
exit(1)
count += 1
def main():
serialdev = "/dev/ttyUSB0"
scratchsize = 0x10000
ser = serial.Serial(serialdev, 9600, timeout=None)
print("Serial device opened.")
amiga = RomWack(serial=ser, Debug=False)
#amiga = SAD(serial=ser, Debug=False)
if amiga.debugger == "SAD":
print(f'In SAD debugger. Bugged: {amiga.sadbug}. Entry: {amiga.entry}.')
else:
print("In debugger.")
execlib = ExecLibrary(amiga)
print(f'Exec v{execlib.version}.{execlib.revision}.')
if amiga.debugger == "SAD":
execlib.enterdebugloop()
execlib.Disable() #romwack unreliable at wire speed if interrupts on, on 000/010 7MHz.
print("Disable.")
snip = AmigaSnippets(
#dbpath="amigasnips.db",
debugger=amiga,
serial=ser,
execlib=execlib,
allocmem=execlib.AllocMem,
verifyupload=True,
verifyuse=False,
debug=False,
serper=6,
baudrate=506699,
# readmemserper=3,
# readmembaudrate=886723,
readmemserper=6,
readmembaudrate=506699,
writememserper=6,
writemembaudrate=506699
#serper=29,
#baudrate=115200,
#readmemserper=29,
#readmembaudrate=115200,
#writememserper=29,
#writemembaudrate=115200
#readmemserper=368,
#readmembaudrate=9600,
#writememserper=368,
#writemembaudrate=9600
)
if snip.reusing:
print("Reusing snippets.")
else:
print("Bootstrapped snippets.")
execlib.availdump()
scratch = execlib.AllocMem(scratchsize, 0)
print(f'Scratch allocated at {hex(scratch)}.')
transfertest(snip, scratch, scratchsize)
if amiga.debugger == "SAD":
execlib.exitdebugloop()
amiga.setreg('d0', 0)
amiga.resume()
exit(0)
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment