; s.fadecode
; Machine code routines for screen handling

	GET	h.RegDefs

	AREA	|Scrn$$Code|, CODE

	EXPORT	fadecode_screen
	EXPORT	fadecode_screen_vga
	EXPORT	fadecode_man
	EXPORT	fadecode_man_vga

; VGA routines

; Take a register and fade each byte using workreg and table
	MACRO
	FADE_WORD_VGA	$register, $workreg, $table
	AND	$workreg,$register,#&ff
	LDRB	$workreg,[$table,$workreg]
	BIC	$register,#&ff
	ORR	$register,$workreg
	MOV	$workreg,#&ff
	AND	$workreg,$register,LSR #8
	LDRB	$workreg,[$table,$workreg]
	BIC	$register,#&ff00
	ORR	$register,$workreg,LSL #8
	MOV	$workreg,#&ff
	AND	$workreg,$register,LSR #16
	LDRB	$workreg,[$table,$workreg]
	BIC	$register,#&ff0000
	ORR	$register,$workreg,LSL #16
	MOV	$workreg,#&ff
	AND	$workreg,$register,LSR #24
	LDRB	$workreg,[$table,$workreg]
	BIC	$register,#&ff000000
	ORR	$register,$workreg,LSL #24
	MEND

; Fade 4 words (v1-v4) from dest', store at src', lr = workreg
; dest' and src' are then updated
	MACRO
	FADE_QUADWORD_VGA
	LDMIA

; a1 = dest
; a2 = src
; a3 = table
; a4 = rowsize
