This is probably why the fonts sometimes hang systems a couple of times.
I'm looking at this and it doesn't make a lot of sense, if we assume that the first 4 bytes are for alignment then the code in BigFonts is incomplete, whatever is after the D0 becomes part of the code.
If we assume that only the first 3 are for alignmennt, then the code changes drastically:
ADD [BX+SI-33],AL
ADD AL,D0
This could do it, I guess..... If the memory pointed to by [BX+SI-33] contains the exception handler, and this handler lies somewhere below ernie in mem, adding the arbitray (or not so arbitrary!) value in AL may push the pointer up into the jump net.
But then why add d0 to AL? Unless the code somehow runs backwards. Meaning that d0 gets added to AL first, pushing it up 208 bytes + whatever is in AL?
I'm guessing here, I think this stuff is for the most part beyond me.
But I would venture to guess that: (Using Day-x as an example)
4141C00040CD04D0EBFE414141414141
The Blue bytes are for alignment.
The Green bytes do all the work.
The Red bytes are junk. Perhaps a catch all for if by some miracle the system does NOT exception.
But, I'm just guessing, hell I'm so low tech I'm using debug to dissasemble this stuff!
Morden.