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