You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

38 lines
1.7KB

  1. # E04-S08: parse ARGS.N8, run Calc.twice, and check the byte result is 6.
  2. [CmdletBinding()]
  3. param([int]$Port = 6563, [int]$TimeoutSeconds = 180)
  4. $ErrorActionPreference = "Stop"
  5. $project = Split-Path $PSScriptRoot -Parent
  6. Import-Module (Join-Path $PSScriptRoot "lib\Nova128Test.psm1") -Force
  7. & (Join-Path $PSScriptRoot "build-args-test.ps1")
  8. $out = Join-Path $project "build\args-test"
  9. $disk = Join-Path $out "args-test.d81"
  10. $failures = @()
  11. $session = Start-Nova128X128 -Autostart $disk -Drive8Image $disk -Port $Port `
  12. -Screenshot (Join-Path $out "args-vicii.png")
  13. try {
  14. $mb = Wait-Nova128Mailbox $session -TimeoutSeconds $TimeoutSeconds
  15. } catch {
  16. $dump = Read-Nova128Memory $session 0x1BF0 16
  17. Write-Host ("timeout mailbox: " + (($dump | ForEach-Object { $_.ToString('X2') }) -join ' '))
  18. throw
  19. } finally {
  20. Stop-Nova128X128 $session
  21. }
  22. Write-Host ("mailbox: " + (($mb | ForEach-Object { $_.ToString('X2') }) -join ' '))
  23. if ($mb[2] -ne 0x02) { $failures += "producer $($mb[2]) expected 2 (compiler)" }
  24. if ($mb[3] -ne 0xA5) { $failures += ("fixture status {0:X2} failed at stage {1}" -f $mb[3], $mb[4]) }
  25. if ($mb[8] -ne 0) { $failures += "diagnostics present: $($mb[8])" }
  26. if ($mb[9] -ne 0) { $failures += "emitter error $($mb[9])" }
  27. if ($mb[10] -ne 6) { $failures += "result = $($mb[10]), expected 6" }
  28. if ($mb[12] -ne 0) { $failures += "codegen error $($mb[12])" }
  29. if ($mb[13] -ne 0) { $failures += "flow error $($mb[13])" }
  30. if ($failures) { throw ("args verification failed:`n " + ($failures -join "`n ")) }
  31. Write-Host ("emitted {0} bytes; Calc.twice returned {1}" -f $mb[11], $mb[10])
  32. Write-Host "verified byte argument push, sized prologue, and byte return in x128"

Powered by TurnKey Linux.