File: PLUSMOIN.z80 - Tab length: 1 2 4 8 - Lines: on off - No wrap: on off

 .nolist
#include "ion.inc"

#define nombrecherche saferam1
#define n_essais nombrecherche+2
#define numerau_essaye n_essais+1


 .list
#ifdef TI83P
 .org progstart-2
 .db $BB,$6D
#else
 .org progstart
#endif
 ret
 jr nc,start
 .db "PLUSMOIN2",0
 
start:

 bcall _clrlcdf
 ld b,28
 call ionRandom
 ld h,a
 ld b,255
 call ionRandom
 ld l,a
 ld (nombrecherche),hl
 ld de,0
 bcall _cphlde
 jp z,start
 ld hl,(nombrecherche)
 ld de,10000
 bcall _cphlde
 jp p,start


 ld hl,1
 ld (numerau_essaye),hl
 ld a,0
 ld (n_essais),a


 ld hl,$0000
 ld (pencol),hl
 ld hl,interval
 bcall _vputs

 ld hl,$3802
 ld (pencol),hl
 ld hl,nombredecoups
 bcall _vputs
boucle:
 ld hl,$0001
 ld (currow),hl
 ld hl,(numerau_essaye)
 bcall _disphl
 bcall _getkey


 cp 1
 call z,droite
 cp 2
 call z,gauche
 cp 3
 call z,haut
 cp 4
 call z,bas
 cp 5
 jp z,entrer


 cp 9
 jp nz,boucle
 ret

droite:
 ld hl,(numerau_essaye)
 ld de,20
 add hl,de
 ld de,10001
 bcall _cphlde
 jp m,droite_suite
 dec de; de=10 000
 sbc hl,de
droite_suite:
 ld (numerau_essaye),hl
 ret


gauche:
 ld hl,(numerau_essaye)
 ld de,20
 or a
 sbc hl,de
 call z,gauche0
 call m,gauche0
 ld (numerau_essaye),hl
 ret

gauche0:
 ld de,10000
 add hl,de
 ret


haut:
 ld de,10000
 ld hl,(numerau_essaye)
 call _cphlde
 call z,haut10000

 ld hl,numerau_essaye
 inc (hl)
 ret


haut10000:
 ld hl,1
 ld (numerau_essaye),hl
 ret

bas:
 ld hl,(numerau_essaye)
 dec hl
 ld de,0
 bcall _cphlde
 jp nz,bas_suite
 ld hl,10000
bas_suite:
 ld (numerau_essaye),hl
 ret



entrer:
 ld a,(n_essais)
 inc a
 ld (n_essais),a

 ld hl,$0A07
 ld (currow),hl
 
 ld l,a
 ld h,0
 bcall _disphl

 ld hl,(numerau_essaye)
 ld e,l
 ld d,h
 ld hl,(nombrecherche)
 call _cphlde
 jp z,victoire
 jp p,plus

 ld hl,$0F00
 ld (pencol),hl
 ld hl,moin
 bcall _vputs
 jp boucle

victoire:
 ld hl,$0204
 ld (currow),hl
 ld hl,vict
 bcall _puts

 ld hl,$0002
 ld (currow),hl
 ld hl,victeff
 bcall _puts
 bcall _getkey
 ret

plus:
 ld hl,$0F00
 ld (pencol),hl
 ld hl,plu
 bcall _vputs
 jp boucle




interval:
 .db"C'est entre 1 et 10 000",0
nombredecoups:
 .db"Nombre de coups :",0
vict:
 .db"Victoire !!!",0
victeff:
 .db"              ",0
moin:
 .db"C'est moins!",0
plu:
 .db"C'est plus!     ",0
.end