1

J'ai essaye de faire un programme apparemment facile d'apres une idee de Tama, mais ca buggue des le demarrage.

Pourriez vous me dire ou se situe mon erreur, parce que je ne vois pas .
Merci d'avance.

NOLIST
#include "ion.inc"
#define tenter 05h
#define tclear 09h
; groupe 7   :   0fdh
kenter		.equ 254
.LIST

.org progstart-2
.db $BB,$6D

start:
	call grbfclr
	bcall(_clrlcdfull)
	ld hl,1
	ld (curcol),hl
	ld hl,4
	ld (currow),hl
	ld hl,Spres
	bcall(_puts)
	ld hl,0
boucleattente:
	inc hl
	cp 5000
	jp z,suite
	jp boucleattente
suite:
	bcall(_clrlcdfull)
	ld hl,1
	ld (curcol),hl
	ld (currow),hl
	ld hl,aide
	bcall(_puts)
	ld hl,0
suite2:
	bcall(_clrlcdfull)
	call grbfclr
	ld a,87
	ld b,8
	ld l,0
	ld ix,sprite1
	call ionPutSprite
	call ionFastCopy
	bcall(_homeup)
	call grbfclr
	ld hl,0
	ld a,1
	push af
suite3:
	ld a,87
	ld l,0
	ld b,8
	ld ix,sprite2
	call ionPutSprite
boucle2:
	ld b,100
	call ionRandom
	cp 0
	jp z,suite4
	jp boucle2
suite4:
	call ionFastCopy
suite41:
	inc hl
	ld a,0feh
	out (1),a
	in a,(1)
	cp kenter
	jp z,suite5
	jp suite41
suite5:
	bcall(_disphl)
	pop af
	inc a
	cp 6
	jp z,suite6
	push af
	bcall(_newline)
	call text12
	bcall(_getkey)
	ld hl,1
	ld (curcol),hl
	ld hl,7
	ld (currow),hl
	ld hl,effacement
	bcall(_puts)
	call ionFastCopy
	ld hl,0
	jp boucle2
suite6:
	call text12
	bcall(_getkey)
	bcall(_clrlcdfull)
	ld hl,1
	ld (curcol),hl
	ld (currow),hl
	ld hl,text2
	bcall(_puts)
boucle3:
	bcall(_getkey)
	cp tenter
	jp z,suite2
	cp tclear
	jp z,suite7
	jp boucle3
suite7:
	ret
grbfclr:
	ld hl,plotSScreen 
	ld de,plotSScreen+1 
	ld (hl),%00000000 
	ld bc,767 
	ldir 
	ret
Spres:
.db "Syfo presente...",0
aide:
.db "Testez vos"
.db "reflexes:"
.db "appuyez sur la"
.db "touche enter"
.db "des que le carre"
.db "noir s'allume"
.db "[press enter]",0
text12:
	ld hl,1
	ld (curcol),hl
	ld hl,7
	ld (currow),hl
	ld hl,text1
	bcall(_puts)
	ret
text1:
.db "press enter",0
text2:
.db "Rejouer?"
.db "(enter)"
.db "Ou quitter?"
.db "(clear)",0
effacement:
.db "                ",0
sprite1:
.db %11111111
.db %10000001
.db %10000001
.db %10000001
.db %10000001
.db %10000001
.db %10000001
.db %11111111
sprite2:
.db %00000000
.db %01111110
.db %01111110
.db %01111110
.db %01111110
.db %01111110
.db %01111110
.db %00000000

.end
END


2

Tu veux le faire marcher sous Ion ou pas ? A prioris je dirai que non, alors dans ce cas c'est normale que ça ne marche pas, il faut que tu mettes les routines d'Ion dans ta source pour que ça marche. Cf la source d'Ion, le fichier 'ionf.z80' :

ionRandom:
	push	hl
	push	de
	ld	hl,(randData)
	ld	a,r
	ld	d,a
	ld	e,(hl)
	add	hl,de
	add	a,l
	xor	h
	ld	(randData),hl
	sbc	hl,hl
	ld	e,a
	ld	d,h
randomLoop:
	add	hl,de
	djnz	randomLoop
	ld	a,h
	pop	de
	pop	hl
	ret


ionPutSprite:
	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


ionFastCopy:
	di
	ld	a,$80				; 7
	out	($10),a				; 11
	ld	hl,gbuf-12-(-(12*64)+1)		; 10
	ld	a,$20				; 7
	ld	c,a				; 4
	inc	hl				; 6 waste
	dec	hl				; 6 waste
fastCopyAgain:
	ld	b,64				; 7
	inc	c				; 4
	ld	de,-(12*64)+1			; 10
	out	($10),a				; 11
	add	hl,de				; 11
	ld	de,10				; 10
fastCopyLoop:
	add	hl,de				; 11
	inc	hl				; 6 waste
	inc	hl				; 6 waste
	inc	de				; 6
	ld	a,(hl)				; 7
	out	($11),a				; 11
	dec	de				; 6
	djnz	fastCopyLoop			; 13/8
	ld	a,c				; 4
	cp	$2B+1				; 7
	jr	nz,fastCopyAgain		; 10/1
	ret					; 10


Voilà, j'éspère que ça pourra t'aider smile

Pour ce qui est de la source je l'ai pas lu entierement mais à prioris tu devrai regrouper tout ce qui est sprite/texte/chaine de caractères à la fin de la source pour 'faire plus propre'.

3

Ouais, j'ai regroupe a la fin texte, chaine et accessoirement deux routines que j'utilises plusieurs fois, une pour le graph buffer clearing, et une pour l'affichage de 'press enter'.

Oui je veux le faire pour ion. Le header n'est pas bon? Il ne correspond pas a un header de ion?

4

Nan, là c'était plutot fait pour être lancer avec 'Asm(' (mais ça n'aurai pas marcher de toute façons). Essaye avec cet header :

.nolist
#include	"ion.inc"

#define	tenter	05h 
#define	tclear	09h 

; groupe 7	:	0fdh 
#define	kenter	254 
.list

#ifdef TI83P
	.org ProgStart-2
	.db $bb,$6d
#else 
	.org ProgStart
#endif

	ret
	jr nc,Start
.db "Le nom de ton prorgramme",0

Start:

5

[edit] j'ai rien dit
programmeur sur TI ^^

mon blog sur les TI => clic

mon (p'tit) fofo sur les TI => clic

6

Ah d'accooord. Merci bien.