Maybe some code will help him out. This is a little program I made when I was first learning Asm. It's a mirage program and uses Ion libs for sprites. Note that it is for the 83+, so you'll have to change some things for the 83.
Code:
#include "ti83plus.inc"
#include "mirage.inc"
.org $9D93 ;Origin (set back two to account for AsmPrgm)
.db $BB,$6D ;Compiled AsmPrgm token
ret ;So TIOS wont run the program
.db 1 ;Identifier as MirageOS program
.db %11111111,%11111111 ;15x15 button
.db %11000000,%00000011
.db %11000000,%00000011
.db %11000000,%00000011
.db %11000000,%00000011
.db %11000000,%00000011
.db %11111111,%11111110
.db %11111111,%11111100
.db %11000000,%00000110
.db %11000000,%00000111
.db %11000000,%00000011
.db %11000000,%00000011
.db %11000000,%00000011
.db %11000000,%00000011
.db %11000000,%00000011
.db "See Something Bounce!",0
ProgStart:
;isprite - ion putsprite routine sprites will be 8x8, so maxes will be 48 and 84
;input: b=sprite height
;a=x coordinate
;l=y coordinate
;ix->sprite
;Output: Sprite is XORed to the graph buffer.
;ix->next sprite
;Destroys: af bc de hl ix
;irandom - ion random routine
;Input: b=upper bound
;Output: a=answer (0<=a<b)
;b=0
;Destroys af b
;ifastcopy - ion fastcopy routine
;Input: nothing
;Output: graph buffer is copied to the screen
;Destroys: af bc de hl
;fastcopys - Runs fastcopy, but preserves all registers
;row change all occurences of xcoor, etc to address xcoor1 is $8000 ycoor1 is $8002 addx1 is $8004 addy1 is $8005
;xcoor2 is $8006 xcoor3 is $8008 xcoor4 is $800A ycoor2 is $800C ycoor3 is $800E ycoor4 is $8010 addx2 is $8012 addx3 is $8013
;addx4 is $8014 addy2 is $8015 addy3 is $8016 addy4 is $8017
bcall(_ClrLCDFull)
bcall(_RunIndicOff)
ld b,86
call irandom
ld ix, $8000
ld (ix),a
ld b,86
call irandom
ld ( ix + $6),a
ld b,86
call irandom
ld (ix + $8),a
ld b,86
call irandom
ld (ix + $A),a
ld b,56
call irandom
ld (ix + $C),a
ld b,56
call irandom
ld (ix + $E),a
ld b,56
call irandom
ld (ix + $10),a
ld b,56
call irandom
ld (ix + $2),a
ld a,1
ld (ix + $4),a ;61
ld (ix + $5),a
ld (ix + $12),a
ld (ix + $16),a
neg
ld (ix + $13),a
ld (ix + $14),a
ld (ix + $15),a
ld (ix + $17),a
Draw:
bcall(_GrBufClr)
ld b,8
ld ix, $8000
ld a,(ix)
ld l,(ix + $2)
ld ix,Ball ;ball will be sprite
call isprite
ld ix, $8000
ld b,8
ld a,(ix + $6)
ld l,(ix + $C)
ld ix,Ghost
call isprite
ld ix, $8000
ld b,8
ld a,(ix + $8)
ld l,(ix + $E)
ld ix,Man
call isprite
ld ix, $8000
ld b,8
ld a,(ix + $A)
ld l,(ix + $10)
ld ix,Superman
call isprite
call ifastcopy
bcall(_GetCSC)
cp skEnter
jp z,Quit
ld b,5
call delayb
Check:
ld ix, $8000
ld a,(ix + $2)
cp 1
jp c,Incol1
cp 56
jp nc,Decol1
ld a,(ix)
cp 1
jp c,Incrow1
cp 86
jp nc,Decrow1
ld a,(ix + $6)
cp 1
jp c,Incrow2
cp 86
jp nc,Decrow2
ld a,(ix + $C)
cp 1
jp c,Incol2
cp 56
jp nc,Decol2
ld a,(ix + $8)
cp 1
jp c,Incrow3
cp 86
jp nc,Decrow3
ld a,(ix + $E)
cp 1
jp c,Incol3
cp 56
jp nc,Decol3
ld a,(ix + $A)
cp 1
jp c,Incrow4
cp 86
jp nc,Decrow4
ld a,(ix + $10)
cp 1
jp c,Incol4
cp 56
jp nc,Decol4
jp Update
Incol1: ;ld a,1
ld b,1
ld (ix + $5),b
ld a,(ix + $2)
add a,b
ld (ix + $2),a
jp Check
Decol1: ;ld a,blah
ld b,%11111111
ld (ix + $5),b
ld a,(ix + $2)
add a,b
ld (ix + $2),a
jp Check
Incrow1: ;ld a,blah
ld b,1
ld (ix + $4),b
ld a,(ix)
add a,b
ld (ix),a
jp Check
Decrow1: ;ld a,blah and point 100
ld b,%11111111
ld (ix + $4),b
ld a,(ix)
add a,b
ld (ix),a
jp Check
Incrow2:
ld b,1
ld (ix + $12),b
ld a,(ix + $6)
add a,b
ld (ix + $6),a
jp Check
Decrow2:
ld b,%11111111
ld (ix + $12),b
ld a,(ix + $6)
add a,b
ld (ix + $6),a
jp Check
Incol2:
ld b,1
ld (ix + $15),b
ld a,(ix + $C)
add a,b
ld (ix + $C),a
jp Check
Decol2:
ld b,%11111111
ld (ix + $15),b
ld a,(ix + $C)
add a,b
ld (ix + $C),a
jp Check
Incrow3:
ld b,1
ld (ix + $13),b
ld a,(ix + $8)
add a,b
ld (ix + $8),a
jp Check
Decrow3:
ld b,%11111111
ld (ix + $13),b
ld a,(ix + $8)
add a,b
ld (ix + $8),a
jp Check
Incol3:
ld b,1
ld (ix + $16),b
ld a,(ix + $E)
add a,b
ld (ix + $E),a
jp Check
Decol3:
ld b,%11111111
ld (ix + $16),b
ld a,(ix + $E)
add a,b
ld (ix + $E),a
jp Check
Incrow4:
ld b,1
ld (ix + $14),b
ld a,(ix + $A)
add a,b
ld (ix + $A),a
jp Check
Decrow4:
ld b,%11111111
ld (ix + $14),b
ld a,(ix + $A)
add a,b
ld (ix + $A),a
jp Check
Incol4:
ld b,1
ld (ix + $17),b
ld a,(ix + $10)
add a,b
ld (ix + $10),a
jp Check ;line 280
Decol4:
ld b,%11111111
ld (ix + $17),b
ld a,(ix + $10)
add a,b
ld (ix + $10),a
jp Check
Update:
ld a,(ix)
ld h,(ix + $4)
add a,h
ld (ix),a
ld a,(ix + $2)
ld h,(ix + $5)
add a,h
ld (ix + $2),a
ld a,(ix + $6)
ld h,(ix + $12)
add a,h
ld (ix + $6),a
ld a,(ix + $8)
ld h,(ix + $13)
add a,h
ld (ix + $8),a
ld a,(ix + $A)
ld h,(ix + $14)
add a,h
ld (ix + $A),a
ld a,(ix + $C)
ld h,(ix + $15)
add a,h
ld (ix + $C),a
ld a,(ix + $E)
ld h,(ix + $16)
add a,h
ld (ix + $E),a
ld a,(ix + $10)
ld h,(ix + $17)
add a,h
ld (ix + $10),a
jp Draw
Ghost:
.db %00111100
.db %01111110
.db %01101010
.db %01111110
.db %01111110
.db %01111110
.db %11111111
.db %10110101
Ball:
.db %00000000
.db %00111100
.db %01100110
.db %01100110
.db %01111110
.db %01111110
.db %00111100
.db %00000000
Man:
.db %10110000
.db %10110000
.db %10010000
.db %01111111
.db %00110111
.db %00110111
.db %00110010
.db %11001100
Superman:
.db %00111100
.db %01000010
.db %11011111
.db %11000011
.db %11111011
.db %01000010
.db %00111100
.db %00011000
Quit:
bcall(_GetKey)
bcall(_ClrLCDFull)
bcall(_RunIndicOn)
ret
end
end
On a side note, did the tag buttons always look like that? They look cool.