
$038B would likely be part of the kernal's trampoline logic for bank swaps, $E023 is deep in ROM. Since the keyboard polling happens at a regular interval relative to that kernal interrupt handler, pausing execution through the keyboard at any given time is going to cause the debugger to stop at roughly the same execution addresses each time. The kernal's interrupt handler, which is what you're seeing, also kicks off in response to the VERA module's VSync interrupt. This is a mostly arbitrary choice: it's convenient to do this here, as opposed to slowing down the primary CPU/execution loop when the vast, overwhelming majority of checks for keyboard input are going to come back empty anyways. This happens once per frame, in response to the VERA module deciding to fire its VSync interrupt. The debugger would preferentially halt at particular addresses because of the timing of keyboard polling in the emulator.
