Re: A89: Another easy one


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

Re: A89: Another easy one




after bsr anim_sprite, after you returned, you branch to IOH, and it ends 
main, shouldn't you bra to main again?
i probably wrong myself.
Thanks,
Rob Smith
At 08:10 PM 12/29/99 -0500, you wrote:

>Ok, I fixed the 1111 error (I don't know why, but it stopped.)  Now, I've got
>a different problem.  I can't seem to read keys.  I've tried a few different
>methods; I can't get any to work.  Here's the source as it is now.  The
>problems: It fires immediately when I start the prgm, after I press a key on
>the "You Lost" screen, it returns to moving the target, when the target
>reaches the bottom, the "You lost" screen freezes, and I get address errors
>and illegal instructions periodically.  I must be doing something really,
>really wrong... Please help me!
>
>;libraries
>     include "doorsos.h"
>     include "userlib.h"
>     include "graphlib.h"
>
>;definitions
>     xdef    _main
>     xdef    _comment
>     xdef    _ti89
>
>;main program
>_main:
>     move.l  $300000,d0
>     cmp.l   #$4E56FFCC,d0
>     beq v1_00_rom
>     cmp.l   #$77044EB9,d0
>     beq v1_05_rom
>     bra other_rom
>
>Go:
>     move.l  #3840,-(a7)
>     jsr doorsos::HeapAlloc  ;Allocate 3840 bytes
>     addq.l  #4,a7
>     or.w    d0,d0
>     beq exit_prgm       ;Check that memory was allocated
>     move.w  d0,vid_handle
>     doorsos::DEREF  d0,a0
>     move.l  a0,vid_addr
>     eor.l   d0,d0       ;clear d0
>     move.l  d0,x_pos
>     move.l  d0,y_pos
>     move.l  #88,Bullet
>     bsr anim_sprite
>     bra IOH
>
>v1_00_rom:
>     move.b  #$00,d0
>     bra found_rom
>
>v1_05_rom:
>     move.b  #$01,d0
>     bra found_rom
>
>other_rom:
>     bra err
>
>found_rom
>     move.b  d0,rom_ver
>     bra Go
>
>err:
>     jsr graphlib::clr_scr
>     move.w  #4,-(a7)
>     pea rom(pc)
>     move.w  #0,-(a7)
>     move.w  #0,-(a7)
>     jsr doorsos::DrawStrXY
>     lea 10(a7),a7
>     jsr userlib::idle_loop
>     bra IOH
>
>anim_sprite:
>     bsr ClearBuffer
>     move.l  y_pos,d1
>     move.l  x_pos,d0
>     lea target(pc),a0
>     bsr PutSprite       ;draw target
>     move.l  Bullet,d1
>     move.l  #76,d0
>     lea shot(pc),a0
>     bsr PutSprite       ;draw bullet
>     bsr CopyBufferToScreen
>     bsr Updatex
>     bsr UpdateBullet
>     cmp #88,Bullet
>     beq Checkkeys
>     bra anim_sprite
>     rts
>
>Updatex:
>     move.l  x_pos,d0
>     addq.l  #1,d0
>     move.l  d0,x_pos
>     cmp #152,d0
>     beq Updatey
>     rts
>
>Updatey:
>     move.l  y_pos,d1
>     addq.l  #8,d1
>     move.l  d1,y_pos
>     move.l  #0,x_pos
>     cmp #88,d1
>     beq Lose
>     rts
>
>UpdateBullet:
>     move.l  Bullet,d1
>     cmp #92,d1
>     bne MoveBullet
>     rts
>
>MoveBullet:
>     subq.l  #1,d1
>     move.l  d1,Bullet
>     move.l  y_pos,d2
>     addq.l  #7,d2
>     cmp d1,d2
>     beq CheckHit
>     cmp #0,d1
>     beq Lose
>     rts
>
>CheckHit:
>     cmp #76,x_pos
>     ble Checkhitb
>     rts
>
>Checkhitb:
>     cmp #76,x_pos
>     bge win
>     rts
>
>Checkkeys:
>     move.b  rom_ver,d0
>     cmp.b   #$00,d0
>     beq v1_00_key
>     cmp #13,d0
>     beq Fire
>     rts
>
>v1_05_key:
>     eor.w   d0,d0
>     tst.w   doorsos::kb_vars+$1c+4
>     beq done_check
>     move.w  doorsos::kb_vars+$1e+4,d0
>     clr.w   doorsos::kb_vars+$1c+4
>     bsr done_check
>     rts
>
>v1_00_key
>     eor.w   d0,d0
>     tst.w   doorsos::kb_vars+$1c
>     beq done_check
>     move.w  doorsos::kb_vars+$1e,d0
>     clr.w   doorsos::kb_vars+$1c
>     bsr done_check
>     rts
>
>done_check
>     rts
>
>Fire:
>     move.l  #87,Bullet
>     rts
>
>exit_prgm:
>     jsr graphlib::clr_scr
>     move.w  #4,-(a7)
>     pea mem(pc)
>     move.w  #0,-(a7)
>     move.w  #0,-(a7)
>     jsr doorsos::DrawStrXY
>     lea 10(a7),a7
>     jsr userlib::idle_loop
>     bra IOH
>
>Lose:
>     jsr graphlib::clr_scr
>     move.w  #4,-(a7)
>     pea lost(pc)
>     move.w  #0,-(a7)
>     move.w  #0,-(a7)
>     jsr doorsos::DrawStrXY
>     lea 10(a7),a7
>     jsr userlib::idle_loop
>     bra IOH
>
>win:
>     jsr graphlib::clr_scr
>     move.w  #4,-(a7)
>     pea won(pc)
>     move.w  #0,-(a7)
>     move.w  #0,-(a7)
>     jsr doorsos::DrawStrXY
>     lea 10(a7),a7
>     jsr userlib::idle_loop
>     bra IOH
>
>ClearBuffer:
>     move.l  vid_addr,a0
>     eor.l   d0,d0
>     move.l  #959,d1
>
>clear_buffer:
>     move.l  d0,(a0)
>     addq    #4,a0
>     dbra    d1,clear_buffer
>     rts
>
>CopyBufferToScreen:
>     move.l  vid_addr,a0
>     lea doorsos::main_lcd,a1
>     move.l  #3839,d1
>
>copy_buffer:
>     move.b  (a0),d0
>     move.b  d0,(a1)
>     addq    #1,a0
>     addq    #1,a1
>     dbra    d1,copy_buffer
>     rts
>
>PutSprite:
>     move.l  vid_addr,a1
>     mulu    #30,d1
>     adda.l  d1,a1
>     move.w  d0,d1
>     lsr.w   #3,d1
>     adda.l  d1,a1
>     andi.l  #%111,d0
>     moveq   #7,d2
>
>draw_a_row:
>     eor d1,d1
>     move.b  (a0),d1
>     ror.w   d0,d1
>     or.b    d1,(a1)
>     addq    #1,a1
>     rol.w   #8,d1
>     or.b    d1,(a1)
>     adda.l  #29,a1
>     addq    #1,a0
>     dbra    d2,draw_a_row
>     rts
>
>IOH:
>     move.w  vid_handle,-(a7)
>     jsr doorsos::HeapFree
>     addq.l  #2,a7
>     rts
>
>;strings
>_comment:
>     dc.b "Archer By Grant Elliott",0
>won:
>     dc.b "Congratulations",0
>lost:
>     dc.b "You Lost",0
>mem:
>     dc.b "Not Enough Memory",0
>rom:
>     dc.b "Invalid Rom",0
>
>;variables
>rom_ver:
>     dc.b    0
>Bullet:
>     dc.w    88
>y_pos:
>     dc.l    0
>x_pos:
>     dc.l    0
>vid_addr:
>     dc.l    0
>vid_handle:
>     dc.w    0
>
>
>;sprites
>target:
>     dc.b    %11111111
>     dc.b    %10000001
>     dc.b    %10011001
>     dc.b    %10111101
>     dc.b    %10111101
>     dc.b    %10011001
>     dc.b    %10000001
>     dc.b    %11111111
>
>shot:
>     dc.b    %00011000
>     dc.b    %00111100
>     dc.b    %00111100
>     dc.b    %00111100
>     dc.b    %00111100
>     dc.b    %00111100
>     dc.b    %00111100
>     dc.b    %00111100
>
>     end
>
>                                             Grant Elliott
>                                             <A
>HREF="http://www.crosswinds.net/~proganon">Programmers Anonymous</A>

__________________________________________
NetZero - Defenders of the Free World
Get your FREE Internet Access and Email at
http://www.netzero.net/download/index.html


References: