;*********************************************************
; NAMN		:	FIXPROM
; PROGRAMMERARE	:	L-O/IND
; DATUM		:	86-10-14
; MODIFIERAD	:	
;*********************************************************
;
; SYFTE		:	Se till att checksumman blir 0000
;
; ANROPAS FR]N	:	Debuggern
;
;*********************************************************
;
	FORMLN	42
	NAME	FIXPROM

	INCLUDE	TMC.H
;
; LABLAR:
;
	EXTERN	PRMEND, CHKSUM
;
	INTERN	FIXPROM, ENDFIX
;
	PAGE
;*********************************************************
;
; L{s i f|rsta adressen
; REPEAT "Sum"
;     N{sta adress
;     Addera
; END "Sum" WHEN sista adressen
; CHKSUM := 0 - (framr{knad summa - CHKSUM)
;
;*********************************************************
;
	RSECT	RAM
;
FIXPROM:
;
	LD	DE,PRMEND	; Stoppadr
	SRL	D		; Promstorlek
	RR	E		; /2
;
	LD	HL,0		; Ackumulator
	LD	IY,0		; Pekare
ADDLOP:
	LD	C,(IY+0)	; LSByte
	INC	IY
	LD	B,(IY+0)	; MSByte
	ADD	HL,BC		; Checksumman
	INC	IY
	DEC	DE		;
	LD	A,D		; Sista adressen?
	OR	E		;
	JP	NZ,ADDLOP	; Nej

	LD	BC,(CHKSUM)	; Kompensationsword
	AND	A
	SBC	HL,BC

	LD	DE,0
	EX	DE, HL
	AND	A
	SBC	HL,DE

	LD	(CHKSUM),HL	; Store new checksum-compensation word
ENDFIX:
	NOP
	NOP
;
	END
