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