.nolist		
	#include "ion.inc"
.list	
#ifdef TI83P		
	.org progstart-2
	.db $BB,$6D

#else		
	.org progstart

#endif		
	xor a
	jr nc,Start
	.db "Guess",0

#define	min		saferam1
#define	max		saferam1+1
#define	num		saferam1+2

start:
	ld (min),a
	ld a,255
	ld (max),a
	ld b,a
	call ionrandom
	ld (num),a
guess:
	call ionfastcopy
	bcall(_homeup)
	ld hl,str1
	bcall(_puts)
	ld de,9*256+1
	ld (currow),de
	ld a,(min)
	call dispahex
	ld a,'-'
	bcall(_putc)
	ld de,12*256+1
	ld (currow),de
	ld a,(max)
	call dispahex
	ld de,0*256+2
	ld (currow),de
	ld hl,guessstr
	bcall(_puts)
	ld de,6*256+2
	ld (currow),de
glop:
	bcall(_cursoron)
	call getkey
	or a
	ret z
	ld a,c
	rlca
	rlca
	rlca
	rlca
	push af
	call getkey
	or a
	ret z
	bcall(_cursoroff)
	pop af
	add a,c
	ld b,a
	ld a,(num)
	cp b
	ld a,b
	jr z,righton
	jr c,tohigh
	ld b,a
	ld a,(min)
	cp b
	jr nc,ldunderstr
	ld a,b
	ld (min),a
ldunderstr:
	ld hl,understr
	jr waitloop
tohigh:
	ld b,a
	ld a,(max)
	cp b
	jr c,ldoverstr
	ld a,b
	ld (max),a
ldoverstr:
	ld hl,overstr
waitloop:
	ld de,9*256+2
	ld (currow),de
	bcall(_puts)
wl:	bcall(_getcsc)
	cp $36
	jp z,guess
	cp $0F
	jr nz,wl
	ret
righton:
	ld hl,onstr
	ld de,9*256+2
	ld (currow),de
	bcall(_puts)
rolp:
	bcall(_getcsc)
	cp $0F
	jr nz,rolp
	ret




getkey:
	bcall(_getcsc)
	or a
	jr z,getkey
	cp $0F
	jr z,return
	ld hl,keytable
	ld bc,16*256+0
	ld d,a
getkeyloop:
	ld a,(hl)
	cp d
	jr z,hexdisp
	inc hl
	inc c
	djnz getkeyloop
	jr getkey
return:
	bcall(_cursoroff)
	xor a
	ret
keytable:
	.db $21,$22,$1A,$12,$23,$1B,$13,$24,$1C,$14,$2F,$27,$1F,$2E,$26,$1E
str1:
	.db "Enter a number  "
	.db "between:",0
guessstr:
	.db "Guess=  ",0
understr:
	.db "under",0
overstr:
	.db "over",0
onstr:
	.db "you win",0
dispahex:
	ld bc,15*256+0
	ld de,$0000
	push af
	and %11110000
	rrca
	rrca
	rrca
	rrca
	call hexloop
	pop af
jpl:
	ld de,$0000
	ld bc,15*256+0
	and %00001111
hexloop:
	cp c
	jr z,hexdisp
	inc c
	djnz hexloop
hexdisp:
	ld b,0
	ld hl,hexstr
	add hl,bc
	ld a,(hl)
	bcall(_putc)
	ret
hexstr:
	.db "0123456789ABCDEF"
.end
.end