; Dstar89 v1.1 made by Alban Gervaise ; for Doorsos v0.91Beta ; last released 12/12/98 include "doorsos.h" include "userlib.h" include "graphlib.h" xdef _main xdef _comment xdef _ti89 level_nbr = 25 mask0 equ %11111110 ;(up\2nd\donw...) mask1 equ %11111101 ;(Enter\clear...) mask2 equ %11111011 ;( <- ) mask3 equ %11110111 ;(catalog...) mask4 equ %11101111 ;(Mode...) mask5 equ %11011111 ;(Home...) mask6 equ %10111111 ;(ESC...) _main: bsr int_on main bsr ini_level clr.b dir bsr disppos bsr delay key_loop: move.w #mask0,d0 bsr get_key btst.b #0,d0 beq haut btst.b #3,d0 beq droite btst.b #1,d0 beq gauche btst.b #2,d0 beq bas btst.b #4,d0 beq change move.w #mask6,d0 bsr get_key btst.b #0,d0 beq int_off move.w #mask1,d0 bsr get_key btst.b #6,d0 beq restart btst.b #1,d0 beq plus btst.b #2,d0 beq moins move.w #mask5,d0 bsr get_key btst.b #6,d0 beq int_off bra key_loop restart bsr int_off bra main delay move.w #1000,d0 \loopa move.w #100,d1 \loopc dbra d1,\loopc dbra d0,\loopa rts get_key move.w d0,$600018 move.w #50,d0 delay_c dbra d0,delay_c move.b $60001b,d0 exit rts plus add.b #1,levelnbr cmp.b #level_nbr,levelnbr bne main moins sub.b #1,levelnbr cmp.b #-1,levelnbr bne main add.b #1,levelnbr bra main cb_pos move.b box,pos tst.b dir bne exit move.b cur,pos rts pos_cb tst.b dir bne \autre move.b pos,cur rts \autre move.b pos,box rts change bchg.b #1,dir bsr disppos \loop move.w #mask0,d0 bsr get_key btst.b #4,d0 bne key_loop bra \loop disppos clr.w d0 move.w #90,d1 move.w #20,d2 move.w #10,d3 move.w #1,d4 jsr graphlib::fill tst.b dir beq \autre move.l #sprite+3*24,a0 bra \saute \autre move.l #sprite+2*24,a0 \saute clr.w d0 move.w #90,d1 clr.b d3 jsr graphlib::put_sprite_mask move.w #1,-(a7) jsr doorsos::FontSetSys move.w #4,-(a7) move.l #_comment,-(a7) move.w #92,-(a7) move.w #30,-(a7) jsr doorsos::DrawStrXY lea 12(a7),a7 rts bas move.l #level+16,a0 move.b #16,d5 bsr check_dir tst.b d0 bne check bra bas haut move.l #level-16,a0 move.b #-16,d5 bsr check_dir tst.b d0 bne check bra haut gauche move.l #level-1,a0 move.b #-1,d5 bsr check_dir tst.b d0 bne check bra gauche droite move.l #level+1,a0 move.b #1,d5 bsr check_dir tst.b d0 bne check bra droite check_dir: bsr cb_pos clr.l d0 move.b pos,d0 move.l #level,a1 add.l d0,a1 clr.b (a1) add.l d0,a0 tst.b (a0) beq \loop cmp.b #1,(a0) beq exit tst.b dir bne exit cmp.b #2,(a0) bne exit clr.b (a0) \loop clr.l d0 move.b pos,d0 bsr convert_type move.b #%11111111,d3 move.l #blank,a0 jsr graphlib::put_sprite_mask add.w #8,d0 move.B #%11000000,d3 jsr graphlib::put_sprite_mask add.b d5,pos bsr pos_cb bsr disp_cur clr.l d0 rts check clr.l d0 move.l #level,a1 move.b pos,d0 add.l d0,a1 move.b cur,(a1) move.l #level,a0 move.w #143,d2 \loop move.b (a0)+,d3 cmp.b #2,d3 beq key_loop dbra d2,\loop bra plus ini_level: clr.l d0 move.l #level,a1 move.b levelnbr,d0 mulu #38,d0 move.l #level1,a0 add.l d0,a0 move.b (a0)+,cur move.b (a0)+,box move.w #6,d3 move.w #35,d7 \loop move.b (a0),d0 ror.b d3,d0 and.b #%00000011,d0 move.b d0,(a1)+ cmp.w #2,d3 beq \ok sub.w #2,d3 bra \loop \ok move.b (a0)+,d0 and.b #%00000011,d0 move.b d0,(a1)+ move.w #6,d3 dbra d7,\loop jsr graphlib::clr_scr move.l #level,a1 clr.w d0 clr.w d1 move.w #8,d5 clr.l d2 loop_1 move.w #15,d4 loop_0 move.b (a1)+,d2 tst.b d2 beq \apres bsr print_sprite \apres add.w #10,d0 dbra d4,loop_0 add.w #10,d1 clr.w d0 dbra d5,loop_1 move.b #1,dir bsr cb_pos move.l #level,a0 clr.l d0 move.b pos,d0 add.l d0,a0 move.b pos,(a0) disp_cur: clr.l d0 clr.l d2 move.b cur,d0 bsr convert_type move.b #3,d2 bsr print_sprite clr.l d2 move.b box,d0 bsr convert_type move.b #4,d2 bsr print_sprite rts print_sprite: clr.b d3 mulu #24,d2 move.l #sprite-24,a0 add.l d2,a0 jsr graphlib::put_sprite_mask rts convert_type: clr.l d1 sub.b #1,d0 divu #16,d0 move.b d0,d1 mulu #10,d1 clr.w d0 swap d0 mulu #10,d0 add.w #10,d0 rts int_on clr.l d0 move.w #$0700,d0 trap #1 bclr.b #2,($600001) move.l ($64),old_int1 move.l #new_int,($64) bset.b #2,($600001) trap #1 rts int_off clr.l d0 move.w #$0700,d0 trap #1 bclr.b #2,($600001) move.l old_int1,($64) bset.b #2,($600001) trap #1 rts new_int rte sprite dc.w 10 dc.w 2 dc.b %01111111,%10000000 dc.b %10100110,%01000000 dc.b %11110010,%01000000 dc.b %10001100,%11000000 dc.b %11110011,%01000000 dc.b %11001100,%11000000 dc.b %11110011,%01000000 dc.b %10001011,%11000000 dc.b %10011100,%01000000 dc.b %01111111,%10000000 dc.w 10,2 dc.b %00000000,%00000000 dc.b %00000110,%00000000 dc.b %00001001,%00000000 dc.b %00010000,%10000000 dc.b %00100000,%01000000 dc.b %00100000,%01000000 dc.b %00010000,%10000000 dc.b %00001001,%00000000 dc.b %00000110,%00000000 dc.b %00000000,%00000000 dc.w 10,2 dc.b %00000000,%00000000 dc.b %00001110,%00000000 dc.b %00011111,%00000000 dc.b %00111111,%10000000 dc.B %01111100,%11000000 dc.b %01111111,%11000000 dc.b %00111111,%10000000 dc.b %00011111,%00000000 dc.b %00001110,%00000000 dc.b %00000000,%00000000 dc.w 10,2 dc.b %00000000,%00000000 dc.b %01111111,%10000000 dc.b %01111111,%10000000 dc.b %01111111,%10000000 dc.b %01111111,%10000000 dc.b %01111111,%10000000 dc.b %01111111,%10000000 dc.b %01111111,%10000000 dc.b %01111111,%10000000 dc.b %00000000,%00000000 blank dc.w 10,1 dc.b 0 dc.b 0 dc.b 0 dc.b 0 dc.b 0 dc.b 0 dc.b 0 dc.b 0 dc.b 0 dc.b 0 level1: dc.b 65,30 dc.b %01010101,%01010101,%01010101,%01010101 dc.b %01000101,%00000000,%00000000,%10010001 dc.b %01000000,%00000000,%00000010,%00010101 dc.b %01000000,%00000000,%01011000,%00000001 dc.b %01000000,%01010010,%00000000,%00000101 dc.b %01010010,%00001000,%00000000,%10000001 dc.b %01001000,%00000000,%00100101,%00100001 dc.b %01000000,%00000101,%10000000,%00001001 dc.b %01010101,%01010101,%01010101,%01010101 level2: dc.b 30,86 dc.b %00010000,%01000100,%01000000,%01000101 dc.b %01000000,%10000000,%00000000,%00000001 dc.b %00000001,%10000001,%10000000,%10000000 dc.b %01000100,%10000000,%00001000,%00010001 dc.b %00000000,%00000100,%00001000,%00000100 dc.b %01000000,%00010001,%00001000,%00000001 dc.b %00000001,%00000100,%01000000,%01101001 dc.b %01000000,%00000000,%00000000,%00000100 dc.b %00010000,%01000000,%00000000,%00010000 level3: dc.b 30,46 dc.b %01010101,%01010101,%01010101,%01010101 dc.b %01000000,%00000000,%00000000,%10010001 dc.b %01000000,%01010000,%00000000,%01010001 dc.b %01000000,%01100000,%00000010,%00000001 dc.b %01001000,%00000000,%10010100,%00001001 dc.b %01000110,%00001000,%00100100,%00100101 dc.b %01000101,%10000110,%00001000,%10010101 dc.b %01100000,%00000101,%10000000,%00000001 dc.b %01010101,%01010101,%01010101,%01010101 level4: dc.b 125,30 dc.b %01010101,%01010101,%01010101,%01010101 dc.b %01000000,%00000000,%00000000,%00010001 dc.b %01000000,%00000100,%00000000,%00000001 dc.b %01011001,%10001001,%10011001,%10011001 dc.b %01000100,%01100010,%01000100,%01000101 dc.b %01011001,%10011000,%10011001,%10011001 dc.b %01000000,%00000100,%00000000,%00000001 dc.b %01000000,%01000000,%00000000,%01000001 dc.b %01010101,%01010101,%01010101,%01010101 level5: dc.b 17,110 dc.b %00010101,%01010101,%01010101,%01010100 dc.b %01000000,%01000000,%01000001,%00000001 dc.b %01000001,%10000100,%10000010,%00010001 dc.b %01010000,%00000000,%01000001,%00000001 dc.b %01100001,%10010000,%00000000,%00000101 dc.b %01010000,%00000001,%00100001,%00000001 dc.b %01100100,%00010001,%00010000,%00010001 dc.b %01000000,%01000000,%00100100,%00011001 dc.b %00010101,%01010101,%01010101,%01010100 level6: dc.b 65,113 dc.b %00000000,%01010101,%01010101,%01010101 dc.b %00000001,%00000010,%00000001,%10001001 dc.b %00000100,%00000010,%00000000,%01000101 dc.b %00010000,%00000010,%00000000,%00000001 dc.b %01000000,%00000010,%00000000,%00000001 dc.b %01010000,%00000010,%00000100,%00000101 dc.b %01000000,%00000010,%00000000,%01000001 dc.b %01000001,%00000010,%00000101,%10000001 dc.b %01010101,%01010101,%01010101,%01010101 level7: dc.b 115,122 dc.b %01010101,%01010101,%01010101,%01010101 dc.b %01000000,%00000000,%00000000,%00000001 dc.b %00010100,%01010100,%00011000,%01011001 dc.b %00011000,%00011000,%01000100,%01000100 dc.b %00000100,%00010000,%01010100,%01010000 dc.b %00010100,%00010000,%01100100,%01100100 dc.b %01000000,%00000000,%00000000,%00000001 dc.b %01000000,%01100000,%00000000,%00011001 dc.b %01010101,%01010101,%01010101,%01010101 level8: dc.b 108,98 dc.b %01010101,%01010101,%01010101,%01010100 dc.b %01000010,%01010000,%00000000,%00000101 dc.b %01000001,%10000001,%01001000,%00000001 dc.b %01000010,%01010001,%00011000,%00000001 dc.b %01010000,%00000001,%01000001,%10010001 dc.b %01010001,%00000000,%00000010,%01100001 dc.b %01100010,%01000000,%10000001,%00010001 dc.b %01010000,%00000000,%00000000,%00000001 dc.b %00010101,%01010101,%01010101,%01010101 level9: dc.b 30,72 dc.b %00000100,%01010101,%01010101,%01010100 dc.b %00011001,%10000000,%00000001,%00000001 dc.b %01100010,%01000000,%00100000,%00000100 dc.b %00010001,%00001001,%01000010,%01000001 dc.b %01000001,%10000110,%00100000,%00001001 dc.b %01000000,%00001001,%01000000,%00000100 dc.b %01100110,%00000000,%00000000,%00010000 dc.b %01000000,%00000000,%00000000,%01000000 dc.b %01010101,%01010101,%01010101,%00000000 level10: dc.b 93,36 dc.b %00000000,%01010101,%01010101,%01010100 dc.b %01010101,%00100000,%00000000,%00000001 dc.b %01000000,%00000101,%01100010,%01001001 dc.b %01001000,%00000110,%00011000,%00000100 dc.b %01000000,%00000100,%00100000,%01001001 dc.b %01100110,%00000100,%10010000,%01000100 dc.b %00011000,%00000101,%01000001,%01010000 dc.b %01000000,%00000000,%00000100,%01000100 dc.b %00010101,%01010101,%01010000,%01000001 level11: dc.b 30,108 dc.b %01010101,%01010101,%01010101,%01010101 dc.b %01000000,%00000001,%00000000,%00000001 dc.b %01000001,%10100000,%00000010,%10000101 dc.b %01010000,%00100000,%00010100,%00001001 dc.b %01100000,%00000110,%01101000,%00010101 dc.b %01010001,%01000000,%00010100,%00000001 dc.b %01100000,%10010010,%00000000,%00001001 dc.b %01011001,%01010000,%00000100,%00000101 dc.b %00010100,%01010101,%01010101,%01010100 level12: dc.b 17,92 dc.b %01010000,%00000001,%01000001,%01010100 dc.b %01000101,%01010110,%00010101,%00100101 dc.b %01000000,%00101000,%00000000,%10000001 dc.b %01000101,%00000101,%10000001,%10010001 dc.b %01000100,%10000101,%01100001,%01000001 dc.b %01000101,%00000101,%00000001,%00010001 dc.b %01000000,%00001000,%00000000,%00000001 dc.b %01000000,%00000000,%00100000,%00000001 dc.b %01010101,%01010101,%01010101,%01010101 level13: dc.b 18,113 dc.b %00010101,%01010101,%01010101,%01010100 dc.b %01000001,%00000000,%00000000,%10000101 dc.b %01000100,%00000110,%00000010,%01010001 dc.b %01000000,%00000000,%10000000,%00010001 dc.b %01001000,%00000000,%00000000,%00011001 dc.b %01000100,%00000000,%00100000,%00000001 dc.b %01010000,%00000000,%10001000,%00011001 dc.b %01000000,%01000000,%00100001,%00010001 dc.b %00010101,%01010101,%01010101,%01010100 level14: dc.b 36,50 dc.b %01010101,%01010101,%01010101,%01010101 dc.b %01100110,%00000000,%00000000,%10011001 dc.b %01001001,%00000000,%00000001,%01000001 dc.b %01000000,%00000000,%00000010,%00000001 dc.b %01000000,%00000000,%00100100,%00000001 dc.b %01000000,%00000010,%00000000,%00000001 dc.b %01001001,%00000000,%00000000,%01000001 dc.b %01100110,%00000000,%00000000,%10011001 dc.b %01010101,%01010101,%01010101,%01010101 level15: dc.b 51,76 dc.b %00010101,%01010100,%01010101,%01010100 dc.b %01000000,%00001001,%00000000,%00100001 dc.b %01000100,%10000100,%00010000,%00100001 dc.b %01000000,%01000000,%01101000,%01100001 dc.b %00010001,%00000001,%00100000,%00010001 dc.b %01100000,%00000000,%00010000,%01100001 dc.b %00010000,%00000000,%10000000,%00000100 dc.b %01100000,%00000000,%00000000,%00001001 dc.b %00010101,%01010101,%01010101,%01010100 level16: dc.b 35,19 dc.b %01010101,%01010101,%01010101,%01010101 dc.b %01010000,%01100010,%00000000,%00001001 dc.b %01100000,%10011000,%00000000,%00000101 dc.b %01010001,%01010000,%00001000,%00000101 dc.b %01010000,%00000010,%01100100,%00000001 dc.b %01101000,%00000000,%00001001,%10000001 dc.b %01010010,%00000000,%01010101,%10000001 dc.b %01011001,%00000100,%00000000,%00000001 dc.b %01010101,%01010101,%01010101,%01010101 level17: dc.b 29,124 dc.b %01010101,%01010101,%01010101,%01010101 dc.b %01001001,%00000000,%00000000,%01000001 dc.b %01000100,%00100110,%10011000,%00010001 dc.b %01000000,%00011001,%01100100,%10000001 dc.b %01001001,%00000000,%00000010,%01000001 dc.b %01000010,%01100000,%00001001,%00000001 dc.b %01000100,%00010001,%01100100,%00010001 dc.b %01000000,%00100001,%10000000,%00000001 dc.b %01010101,%01010101,%01010101,%01010101 level18: dc.b 115,26 dc.b %01010101,%01010101,%01010101,%01010101 dc.b %01001000,%00000010,%00000001,%00000001 dc.b %01000001,%10011000,%00000110,%00000001 dc.b %01000000,%01100100,%00000001,%10000001 dc.b %01000000,%10000001,%00000010,%01100001 dc.b %01000110,%01000000,%01001001,%00000001 dc.b %01001001,%10000100,%10000100,%00000001 dc.b %01100100,%00000100,%00000000,%01000001 dc.b %01010101,%01010101,%01010101,%01010101 level19: dc.b 126,110 dc.b %01010101,%01010101,%01010101,%01010101 dc.b %01100000,%00010100,%00000000,%01011001 dc.b %01000100,%00010000,%00000000,%01100001 dc.b %01001001,%00000010,%01010000,%10000001 dc.b %01000100,%00000001,%10000000,%00000001 dc.b %01000000,%00010000,%00100100,%00000001 dc.b %01000101,%00100100,%01011000,%00010001 dc.b %01001001,%00011000,%00000000,%01010001 dc.b %01010101,%01010101,%01010101,%01010101 level20: dc.b 77,66 dc.b %01010101,%01010101,%01010101,%01010101 dc.b %01000000,%10011000,%00000000,%00000001 dc.b %01011000,%00100100,%01011000,%00000101 dc.b %01000100,%01001000,%00000100,%00010001 dc.b %01000000,%01000001,%01000001,%00001001 dc.b %01000100,%00010000,%00100001,%00010001 dc.b %01010000,%00100101,%00011000,%00100101 dc.b %01000000,%00000000,%00100110,%00000001 dc.b %01010101,%01010101,%01010101,%01010101 level21: dc.b 103,105 dc.b %01010101,%01010101,%01010101,%01010101 dc.b %01000101,%01000000,%00001000,%00000101 dc.b %01000000,%01000000,%00000000,%01000101 dc.b %01000000,%01011000,%00000000,%00100001 dc.b %01000010,%00000000,%10000000,%10000101 dc.b %01000000,%00010000,%00000101,%01100001 dc.b %01000010,%00100000,%00000010,%00101001 dc.b %01010101,%01010101,%01010101,%01010101 dc.b %00000000,%00000000,%00000000,%00000000 level22: dc.b 103,105 dc.b %01010101,%01010101,%01010101,%01010101 dc.b %01100100,%00011001,%00011000,%00010001 dc.b %01000000,%00010000,%00000000,%00000001 dc.b %01100000,%00010000,%01100000,%10000001 dc.b %01010001,%10000000,%00000010,%00010101 dc.b %01001000,%01000000,%01010110,%00000001 dc.b %01000000,%00000100,%01000000,%10000001 dc.b %01010101,%01010101,%01010101,%01010101 dc.b %00000000,%00000000,%00000000,%00000000 level23: dc.b 103,105 dc.b %00010101,%01010101,%01010101,%01010100 dc.b %01000100,%00011001,%00011000,%00010001 dc.b %01000000,%00100000,%01000000,%00000001 dc.b %01010000,%00010000,%00100001,%10000001 dc.b %01000001,%10000001,%00001010,%00100001 dc.b %01011000,%01000000,%01010010,%00000001 dc.b %01000000,%00000100,%01000000,%10000001 dc.b %00010101,%01010101,%01010101,%01010100 dc.b %00000000,%00000000,%00000000,%00000000 level24: dc.b 103,105 dc.b %01010101,%01010101,%01010101,%01010101 dc.b %01000000,%00000100,%00000000,%00000101 dc.b %01000101,%10001000,%00000001,%01100101 dc.b %01000110,%00000000,%00100100,%00010101 dc.b %01001010,%00001001,%00010100,%00000001 dc.b %01000110,%00100001,%00000000,%01010001 dc.b %01000101,%00000000,%01000101,%01101001 dc.b %01010101,%01010101,%01010101,%01010101 dc.b %00000000,%00000000,%00000000,%00000000 level25: dc.b 103,105 dc.b %01010101,%01010101,%01010101,%01010101 dc.b %01000000,%00000000,%00000000,%00010001 dc.b %01001000,%01011000,%00001000,%00000001 dc.b %01000000,%01100000,%10000001,%01000001 dc.b %01001000,%00000001,%01000001,%10000001 dc.b %01000110,%00000010,%01000000,%00100001 dc.b %01000101,%10000100,%00000000,%00000001 dc.b %01010101,%01010101,%01010101,%01010101 dc.b %00000000,%00000000,%00000000,%00000000 cur ds.b 1 box ds.b 1 dir ds.b 1 levelnbr ds.b 1 _comment dc.b "DSTAR89 by Endive",0 BSS old_int1 ds.l 1 level ds.b 144 pos ds.b 1 end ;Dstar89 v1.1 ;made by Alban Gervaise