;___________________________________________________
;--*---*--*---*--*---*--*---*--*---*--*---*--*---*--
;ZSPR 83 by KammutierSpule - Mario Rui Luzeiro
;This file makes part of the ZAPI 83
;Contact me:
;ks@megamail.pt
;--*---*--*---*--*---*--*---*--*---*--*---*--*---*--
;---------------------------------------------------

.nolist
#define equ .equ
#define EQU .equ
#define end .end

	#include "ion.inc"	; \
	.list			;  \
	#ifdef TI83P		;   \
	.org	progstart-2	;    > Standard Ion Program Header
	.db	$BB,$6D		;   /
	#else			;  /
	.org	progstart	; /
	#endif			;/


	bcall(_zeroop1)
	ld hl,op1+1
	ld (hl),'Z'     ; or any other var
	bcall(_rclvarsym) ; op1 / op2 -> value
	bcall(_convop1)

#include "xspr.z80"

	ret	

Dsp_Spr:
	bcall(_RCLY)		;Recal Y user var
	bcall(_convop1)		;X is storage in op1, so lets convert it to var a
	cp	62
 	call nc,Clip_Number2
 	cp	0
 	Call c,Make_a_Zero
	
	ld	l,a
	push	hl
	bcall(_RCLX)		;Recal X user var
	bcall(_convop1)		;X is storage in op1, so lets convert it to var a
	cp	95
 	call	nc,Clip_Number
 	cp	0
 	Call c,Make_a_Zero

	pop	hl
	ld	b,8
	call	putSprite

	bcall(_zeroop1)
	ld hl,op1+1
	ld (hl),'W'     ; or any other var
	bcall(_rclvarsym) ; op1 / op2 -> value
	bcall(_convop1)
	cp	1
	ret	nz
	bcall(_grbufcpy)
        ret

Make_a_Zero:
	xor	a
	ret
Clip_Number:
	ld	a,95
	ret
Clip_Number2:
	ld	a,62
	ret

;------------------------------
;Credits for Draw a sprite
;Taken from ion83 by Joe Wing.
;!!!!!!!!!!Thanks!!!!!!!!!!!!1
;------------------------------
;-----> Draw a sprite
; b=size of sprite
; l=yc
; a=xc
; ix holds pointer
putSprite:
	ld	e,l
	ld	h,$00
	ld	d,h
	add	hl,de
	add	hl,de
	add	hl,hl
	add	hl,hl
	ld	e,a
	and	$07
	ld	c,a
	srl	e
	srl	e
	srl	e
	add	hl,de
	ld	de,gbuf
	add	hl,de
putSpriteLoop1:
sl1:	ld	d,(ix)
	ld	e,$00
	ld	a,c
	or	a
	jr	z,putSpriteSkip1
putSpriteLoop2:
	srl	d
	rr	e
	dec	a
	jr	nz,putSpriteLoop2
putSpriteSkip1:
	ld	a,(hl)
	xor	d
	ld	(hl),a
	inc	hl
	ld	a,(hl)
	xor	e
	ld	(hl),a
	ld	de,$0B
	add	hl,de
	inc	ix
	djnz	putSpriteLoop1
	ret

#include "sprdata.z80"

.end