home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Oakland CPM Archive
/
oakcpm.iso
/
cpm
/
turbopas
/
turbopat.lbr
/
TPATCH1.Z80
next >
Wrap
Text File
|
1988-04-06
|
2KB
|
76 lines
; TURBO PASCAL VERSION 3.0 PATCH BY JAY SAGE, 04/22/85
; This code patches TURBO Pascal Version 3.0 so that it will find the
; error message overlay file TURBO.MSG in a different user area (given
; by the equate TUSER below). The patch is appended to the standard code
; but relocates itself higher in memory so that it is not overwritten by
; the error message text as it is loaded. The call at address 2232h is
; the one made if the question about including the error messages was answered
; in the affirmative. The call is replaced by a conditional call to this
; patch code. The patch code in turn calls the original code, but only after
; the user number has been switched to the special value. After the MSG file
; is loaded, the patch code re-logs the original user area. This patch does
; nothing about the logged drive, since Turbo itself tries a number of drives.
; My directory TURBO: is on drive A and is always found. If this patch fails
; to find the right drive for you, try adding code to log in the desired
; drive in the same way. Remember that the relocated code has no absolute
; addresses so that it can simply be copied to its new location.
tbdos equ 7265h ;Turbo's BDOS call (protects IX, IY)
userf equ 20h ;BDOS get/set user number function
tuser equ 2 ;user number of TURBO: directory
dest equ 9000h ;destination for relocated section (above
;..area used for messages)
; --------------------
org 2232h ;original code to patch
call nz,patch
; --------------------
org 7980h ;new code to append to original code
patch:
push hl ;save registers
push de
push bc
;relocate patch code to safe area
ld hl,pbeg ;source of code to move
ld de,dest ;destination
ld bc,pend-pbeg ;length of section to move
ldir ;move it
jp dest ;continue with moved code
;code to be relocated
pbeg:
ld c,userf ;get current user #
ld e,0ffh
call tbdos
push af ;save user number
ld c,userf ;log in Turbo user area
ld e,tuser
call tbdos
call 2da4h ;call Turbo code for loading TURBO.MSG
pop af ;restore user number
ld e,a
ld c,userf
call tbdos
pop bc ;restore registers
pop de
pop hl
ret
pend equ $ ;mark end of code for relocation
end