# E04-S06: parse CALLS.N8, execute the emitted Counter.both, and check n=2. [CmdletBinding()] param([int]$Port = 6561, [int]$TimeoutSeconds = 180) $ErrorActionPreference = "Stop" $project = Split-Path $PSScriptRoot -Parent Import-Module (Join-Path $PSScriptRoot "lib\Nova128Test.psm1") -Force & (Join-Path $PSScriptRoot "build-calls-test.ps1") $out = Join-Path $project "build\calls-test" $disk = Join-Path $out "calls-test.d81" $failures = @() $session = Start-Nova128X128 -Autostart $disk -Drive8Image $disk -Port $Port ` -Screenshot (Join-Path $out "calls-vicii.png") try { $mb = Wait-Nova128Mailbox $session -TimeoutSeconds $TimeoutSeconds } finally { Stop-Nova128X128 $session } Write-Host ("mailbox: " + (($mb | ForEach-Object { $_.ToString('X2') }) -join ' ')) if ($mb[2] -ne 0x02) { $failures += "producer $($mb[2]) expected 2 (compiler)" } if ($mb[3] -ne 0xA5) { $failures += ("fixture status {0:X2} failed at stage {1}" -f $mb[3], $mb[4]) } if ($mb[8] -ne 0) { $failures += "diagnostics present: $($mb[8])" } if ($mb[9] -ne 0) { $failures += "emitter error $($mb[9])" } if ($mb[10] -ne 2) { $failures += "n = $($mb[10]), expected 2" } if ($mb[12] -ne 0) { $failures += "codegen error $($mb[12])" } if ($mb[13] -ne 0) { $failures += "flow error $($mb[13])" } if ($failures) { throw ("calls verification failed:`n " + ($failures -join "`n ")) } Write-Host ("emitted {0} bytes; self.n = 2 after self.tick()" -f $mb[11]) Write-Host "verified self field emission and a forward concrete self-call in x128"