Compucolor.org – Virtual Media

Listing of file='SCROLL.MAC;01' on disk='vmedia/forutil_1-sector.ccvf'

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;	SCROLL PATCH
;
;	CALLING SEQUENCE:
;	   CALL SCROLL(X,Y,H,W,C)
;	ALL VALUES ARE BYTES
;	SEE COMPUCOLOR SCROLL PATCH FOR DESCRIPTIONS
;
;	RETURNS:
;	   NOTHING
;
	ENTRY	SCRL

	EXTRN	XYADDR

SCRL:	PUSH	D
	PUSH	H
	LDAX	B
	MOV	E,A
	INX	B
	LDAX	B
	MOV	D,A
	INX	B
	LDAX	D
	DCR	A
	STA	NOLINS

	LDAX	B
	MOV	E,A
	INX	B
	LDAX	B
	MOV	D,A
	INX	B
	LDAX	D
	MOV	H,A
	MVI	A,128
	SUB	H
	SUB	H
	STA	ENDADR

	XRA	A
	STA	DOUBLE
	MOV	A,H
	ADD	H
	STA	WIDTH

	LDAX	B
	MOV	E,A
	INX	B
	LDAX	B
	MOV	D,A
	LDAX	D
	ORA	A
	JNZ	SCRL10
	MVI	A,23H	;'INX H'
	STA	DOUBLE
	MOV	A,H
	STA	WIDTH

SCRL10:	POP	H
	POP	D
	MOV	B,M
	XCHG
	MOV	C,M
	CALL	XYADDR
	SHLD	STADR

	DB	21H	;LXI	H,STADR
STADR:	DW	7000H
	DB	06H	;MVI	B,NOLINS
NOLINS:	DB	4
SC10:	DB	0EH	;MVI	C,WIDTH
WIDTH:	DB	128
SC20:	LXI	D,128
	DAD	D
	MOV	A,M
	LXI	D,-128
	DAD	D
	MOV	M,A
	INX	H
DOUBLE:	NOP		;POKE AN 'INX H' IN HERE
	DCR	C
	JNZ	SC20
	DB	11H	;LXI	D,ENDADR
ENDADR:	DW	08H
	DAD	D
	DCR	B
	JNZ	SC10
	RET

	END