Re: LZ: That didnt work


[Prev][Next][Index][Thread]

Re: LZ: That didnt work



When you use CALL it puts the address of the next instruction on
the stack.  Then your final exit return returns to that address.
If you run the program for a while and press enough keys it'll
use up all the available memory and crash.  It probably will clear
your memory in the process.


I'm not going through your program to figure out what all the
problems are.  I'm just pointing out what I see right away.  I
don't guarantee there are no more problems.  There probably are,
but that's for you to work out.  Stick with it.  You'll get there.


Barry


On Wed, 25 Sep 1996, Frank  wrote:


> I have tried what barrym said ... but it didnt help... here is the code ... 
> and all that is wrong is it wont leave the program... it just freezes on the 
> exiting text#include "ti-85.h"
> .org 0
> .db "By Frank Apap",0
> 
> Init:
>  ld a,4
>  out (5),a
>  ROM_CALL(CLEARLCD)
>  ld b,40                   ; x start
>  ld c,30                   ; y start
> 
> Start:
>     call GET_KEY   ; get a key
>     cp $04         ; up ?
>      jr nz,nextkey
>     CALL_Z(up)
>      JUMP_(Start)
> 
> nextkey:
>     cp $01         ; down
>     CALL_Z(down)
> 
>     cp $02           ; left?
>     CALL_Z(left)
> 
>     cp $03        ; right
>     CALL_Z(right)
> 
>     cp $37              ;exit
>     JUMP_Z(exit)
> 
>     cp $0F   ;clear
>     JUMP_Z(clear)
>     
>     JUMP_(Start)    ; loop
> up:
>   inc c  ; x=x+1
>   CALL_(PlotPixel) ; draw it
>   JUMP_(Start)		; This should be a RET, not a JUMP.
> 				; The same is true for the others.
> down:
>      dec c ; x=x-1
>      CALL_(PlotPixel)
>      JUMP_(Start)
> 
> right:
>   inc b  ; y=y+1
>   CALL_(PlotPixel) ; draw it
>   JUMP_(Start)    ; go back
> 
> left:
>   dec b  ; y=y-1
>   CALL_(PlotPixel) ; draw it
>   JUMP_(Start)   ; go back
> clear:
>     ROM_CALL(CLEARLCD)
>     JUMP_(init)
> 
> PlotPixel:
>     ROM_CALL(FIND_PIXEL)
>     ld de,$FC00
>     add hl,de
>     or (HL)
>     ld (HL),a
>     JUMP_(Start)
> 
> exit:
>      ROM_CALL(CLEARLCD)
>      ld hl,$1A1A
>      ld ($8333), hl
>      ld hl, (PROGRAM_ADDR)
>      ld de,bye
>      add hl,de
>      ROM_CALL(D_ZM_STR)
> exitloop: 
>    call GET_KEY
>    cp $37
>    ret z
>    jr exitloop
>    
> 
> bye: .db "BYE THANKS FOR TESTING",0
> .end
> 


References: