; FIXPCH.M68  1.9(11)  Created Nov/84, Last modified 26-Aug-85
; Patches to FIX.LIT[1,4]  version 1.1(120)  701-705-065-424
; by Mike Rosenberg & Irv Bromberg

COPY PATCH				; includes SEARCH SYS
OVER 1,1,0,120.,0
NVER 1,1,0,120.,7			; set #patches installed
OHASH 701,705,065,424
NHASH 340,362,450,101

IF EQ,1

List of Patches installed:
1.  up arrow/^K --> TCRT call
2.  backspace --> rubout
3.  single-step through floating point call
4.  "AlphaFIX/L"
5.  decimal mode display, support decimal input radix, preserve J.DEC bit
6.  preserve JOBEXI(JCB)
7.  Debugging {RES:}{MEM:}filespec {with SYM}

ENDC

SEARCH TRM

Atemp=A6
Dtemp=D6

J.DEC=J.HEX_8.

 .=606
	CALL	EXsave			; save JOBEXI(JCB)

 .=626
	ANDW	#<J.HEX!J.DEC>,D7	; save J.DEC bit too

 .=1226		; was CLR JOBEXI(A6), should clear JOBBPT instead
		; so FIX can be called by a monitor execution program
		; such as AMOS.SBR.
	CALL	EXrest

 .=1236
	ANDW	#^C<J.HEX!J.DEC>,D7	; clear J.DEC bit too

; Patch to treat left arrow (backspace) like delete
 .=1352
	JMP	Pat1
Ret:

 .=1650
; was	TYPE	< AlphaFIX/L >
	TTYI
	ASCIZ	"AlphaFIX/L  "
	EVEN

; Patch to display Decimal mode properly
 .=2272
CALL	ShowMode
BR	L2306
 .=2306
L2306:

 .=2340
	CALL RESMEM	; patch to show whether PRG in RES: or MEM: area
	NOP		; we clobbered the PFILE instruction

; Patch to use TCRT for cursor up output
 .=12506
	JMP	Pat2
 .=12514
Ret1:

; Patch to allow floating point oparations to take place in one step

 .=13040
	JMP	Paddr
 .=13046
Ret2:

 .=33126
Paddr:	CMPW	D7,#47100
	JNE	Ret2

	MOV	A6,204(A0)
	MOVW	(A6),210(A0)	
	MOVW	#47161,(A6)
	MOVW	-2(A6),A5
	SUBW	#<47100-40>,A5
	
	ORW	#32768.,74(SP)
	MOV	A6,76(SP)

	MOV	2064(A0),A6
	MOVW	2070(A0),D1
	ANDW	#31.,D1
	ANDW	#-32.,(A6)
	ORW	D1,(A6)

	ADD	A5,A5
	MOV	0(A5)[A5],A6
	REST	A0-A5,D0-D7
	MOV	(SP),-(SP)
	MOV	A6,4(SP)
	POP	A6
	RTN

; Patch for left arrow
Pat1:	CMPB	D1,#127.
	JEQ	Ret
	CMPB	D1,#8.	
	JMP	Ret

; Patch for cursor up
Pat2:	MOVW	#^H0FF03,D1	
	TCRT
	MOV	2012(A0),D0
	JMP	Ret1

ShowMode:MOVW	JOBTYP(Atemp),Dtemp
	ANDW	#J.DEC,Dtemp
	BEQ	Hex
	TYPE	<decimal >
	MOVB	#10.,1240(A0)	; force base 10 for expression evaluations
	RTN
Hex:	TYPE	<hex     >
	RTN

EXsave:	CLR	140(A6)		; do the instruction that we clobbered
	LEA	A1,SAVEXI	; with the patch's call, save the
	MOV	JOBEXI(A6),@A1	; JOBEXI stack pointer
	RTN

EXrest:	CLR	JOBBPT(A6)	; clear breakpoint instead of JOBEXI!
	LEA	A1,SAVEXI
	MOV	@A1,JOBEXI(A6)	; restore the JOBEXI
	RTN

SAVEXI:	BLKL	1		; save JOBEXI here

RESMEM:	MOV	364(A0),A6	; get PRGBAS
	CMP	A6,MEMBAS	; is module in SYSTEM memory?
	BHI	10$
	TYPE	<RES:>		; yes, show RES:
	BR	20$
10$:	TSTW	-10(A6)		; any module flag bits set?
	BEQ	20$		; no, not loaded/permanent/data
	TYPE	<MEM:>		; yes, show MEM:
20$:	PFILE	214(A0)		; replace the PFILE instruction we clobbered
	RTN

	END