From: Fred Haines
To: Rick Charnes
Date: January 8, 1988
Subj: MLOAD24 patch
Rick,
Here's the way I patched the exit routine of MLOAD24 to get��
around the problem I had running under XBIOS. The lines preceded��
by double semicolons are the ones I commented out; the line with��
the double semicolons before the comment is the one line I added.
;; lda system+2 ;get top of memory pointer
;; sui 9 ;allow for ccp+slop
;; lxi h,hiload+1 ;highest load address
;; sub m ;above ccp?
;; jc warmbt ;then warm-boot
;; lhld spsave ;nope, ccp still in memory
;; sphl ;restore its stack
;; ret ;return to ccp
jmp warmbt ;; unconditional jump inserted
��
;
; load program initialization
;
I hasten to emphasize that this is NOT a fix to MLOAD24. Quite��
the contrary, this patch actually eliminates a desirable feature,��
the ability of the program to quit without warmbooting if it��
determines that the load did not overwrite the CCP. It's First��
Aid rather than a miracle cure.
"Top of memory" is the base address of DOS, "hiload" is the��
highest address affected by the load, "warmbt" equals 0000h. The��
routine provides two ways to quit, by jump to warmbt, or by a��
simple ret to CPM.
I believe it is the second routine that is causing the problem,��
which behaves like a damaged CCP or a blown pointer to the CCP,��
but I'm not able to follow the intricacies of the checking to see��
whether the CCP has been overwritten or not. Somebody will crack��
this case in short order, but the patch may keep you afloat until��
he does.