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