Hi Barry,
BB> DB>> push CS
BB> DB>> pop DS
It would be the above, which I didn't really notice before. After the INT 2E
call, SS:SP would be trashed. So when we PUSH CS, we would be pushing it to
n
unknown memory area. The PUSH/POP itself is fine, but it's where the
pusing/poping is happening that's the problem.
We might be pushing our CS into some other program's code/data, possible
screwing it up.
BB> DB>> mov SS,[_SS] ;restore them back again
BB> DB>> mov SP,[_SP]
BB> DB>> ...
BB> FS> Are you sure this is safe? You are using the stack here. Not good
en
BB> FS> There's nothing wrong with:
BB> FS> mov ss,cs:[_ss]
BB> FS> mov sp,cs:[_sp]
Try that and see what happens.
BB> I don't see the problem. push,then pop. Stack is not altered, right?
BB> However, I tried the tsr with Denis's change and it still crashes :)
Oh well, worked in BACKUP :) perhaps it needs a total re-work, and the most
try saving EVERYTHING! :) registers, stack, etc.
Cheers,
Denis Boyles
* OLX 2.1 TD * Unable to locate Coffee -- Operator Halted!
--- Maximus/2 3.01
---------------
* Origin: Frog Hollow Port Moody BC 604-469-0264/0284 (1:153/290)
|