×ETPATCH1 Z80Æ/TPATCH2 Z80šzÿ ; 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 ; This is a patch for the CP/M-80 version of Turbo Pascal version 3 to make ; it include or not include the error message overlay file without asking. ; It works by replacing that code by a default answer. NO EQU 0 YES EQU NOT NO INCLUDE EQU YES ;use no to omit error message overlay START EQU 0220DH ;address where Turbo puts up message ;.. asking whether to include error ;.. message overlay CONT EQU 0222FH ;address where code continues after ;.. yes/no question is answered ORG START IF INCLUDE LD A,'Y' ;value for affirmative answer ELSE LD A,'N' ;value for negative answer ENDIF SUB 'N' JP CONT ;go on with code END