Reading over some old articles on Alpha I realized I really didn't understand PALcode. So I did a little reading on that.
PALcode is stored in main memory, is written in Alpha ML, and is called by a table entry. On calling a PAL instruction, it spills the pipeline, looks up that entry number from PAL_BASE, and JSRs to that address.
So isn't that basically identical to what any other platform would call a vectored interrupt?
Is there something else? Special instructions or internal data that is only accessible via PAL?