;Contrast Wizard for the TI-83 by Andrew Von Dollen (svndlln@rain.org)
;Version 1.0  November 2,1996
;This program actually has a small 
;amount of usefulness 
.NOLIST
#define equ .equ
#define EQU .equ
#define end .end
#include "Ti83asm.inc"
.LIST
#DEFINE kLeft      02h
#DEFINE kRight     01h
#DEFINE kEnter     05h
#DEFINE PROGSTART  9327h
#DEFINE curcont    8265h
#DEFINE xcoord     8270h
#DEFINE ycoord     8275h
.org PROGSTART
  ld a,47                     ;initialize x & y coordinates
  ld (xcoord),a
  ld a,34
  ld (ycoord),a
  call clrLCDFULL             ;clear screen
  call GRBUFCLR               ;clear backup graph buffer
  ld b,2                      
  ld c,34
  ld d,47
  ld e,34
  ld h,1
  call ILINE                  ;draw 1st starting line
  ld b,2
  ld c,33
  ld d,47
  ld e,33
  ld h,1
  call ILINE                  ;draw 2nd starting line
  ld b,2
  ld c,32
  ld d,47
  ld e,32
  ld h,1
  call ILINE                  ;draw 3rd starting line
  ld a,44d
  ld (curcont),a
  ld a,(curcont)
  or 0C0h
  call lcd_busy
  out (LCDINSTPORT),a         ;make the contrast 44d (about half way)
textdisp:                     ;display my name and e-mail and "Contrast Wizard"
  ld a,14
  ld (PENROW),a
  ld a,20
  ld (PENCOL),a
  ld hl,wizstr
  call vputs
  ld a,41
  ld (PENROW),a
  ld a,15
  ld (PENCOL),a
  ld hl,bystr
  call vputs
  ld a,49
  ld (PENROW),a
  ld a,18
  ld (PENCOL),a
  ld hl,mailstr
  call vputs
mainloop:                    ;wait for good key
  call getkey
  cp kLeft
  jr z,less
  cp kRight
  jp z,more
  cp kEnter
  jp z,exit
  jr mainloop
more:                        ;increase contrast by 1d
  ld a,(curcont)
  cp 62d
  jp z,nomore
  ld a,(curcont)
  ld b,1d
  add a,b
  ld (curcont),a
  ld a,(curcont)
  or 0C0h
  call lcd_busy
  out (LCDINSTPORT),a
  ld a,(xcoord)
  ld b,a
  ld a,(ycoord)
  ld c,a
  ld d,1
  call IPOINT
  ld a,(xcoord)
  ld b,a
  ld a,(ycoord)
  dec a
  ld c,a
  ld d,1
  call IPOINT
  ld a,(xcoord)
  ld b,a
  ld a,(ycoord)
  dec a
  dec a
  ld c,a
  ld d,1
  call IPOINT
  ld a,(xcoord)
  inc a
  ld (xcoord),a
  jp mainloop
less:                           ;decrease contrast
  ld a,(curcont)
  cp 23d
  jr z,noless
  ld a,(curcont)
  ld b,1d
  sub b
  ld (curcont),a
  ld a,(curcont)
  or 0C0h
  call lcd_busy
  out (LCDINSTPORT),a
  ld a,(xcoord)
  ld b,a
  ld a,(ycoord)
  ld c,a
  ld d,0
  call IPOINT
  ld a,(xcoord)
  ld b,a
  ld a,(ycoord)
  dec a
  ld c,a
  ld d,0
  call IPOINT
  ld a,(xcoord)
  ld b,a
  ld a,(ycoord)
  dec a
  dec a
  ld c,a
  ld d,0
  call IPOINT
  ld a,(xcoord)
  dec a
  ld (xcoord),a
  jp mainloop
nomore:
  jp mainloop
noless:
  jp mainloop
exit:
  call clrLCDFULL
  ret
wizstr:
  .db   "Contrast Wizard",0
bystr:
  .db   "By Andrew Von Dollen",0
mailstr:
  .db   "svndlln@rain.org",0
.end
END