;made by Alban Gervaise ;last release 1/10/98 include "tios.h" include "util.h" include "linelib.h" xdef _main xdef _comment xdef _ti89 WriteStr MACRO move.w \3,-(a7) pea \4(pc) move.w \2,-(a7) move.w \1,-(a7) jsr tios::DrawStrXY lea 10(a7),a7 ENDM SetFont MACRO move.w \1,-(a7) jsr tios::FontSetSys lea 2(a7),a7 ENDM drawline MACRO movem.l d0-d3/a0,-(a7) lea tios::main_lcd,a0 move.w \4,d3 move.w \3,d2 move.w \2,d1 move.w \1,d0 jsr linelib::fline movem.l (a7)+,d0-d3/a0 ENDM _main: bsr var_ini bsr decors jmp check var_ini: move.b #1,joueur move.b #1,player move.b #0,gagne move.b #10,counter clr.b var1 clr.b var2 clr.b var3 clr.b var4 clr.b var5 clr.b var6 clr.b var7 clr.b var8 clr.b var9 lea tios::main_lcd,a0 rts decors: jsr util::clr_scr move.w #80,-(a7) move.w #110,-(a7) move.w #20,-(a7) move.w #50,-(a7) jsr util::frame_rect lea 8(a7),a7 move.w #80,-(a7) move.w #90,-(a7) move.w #20,-(a7) move.w #70,-(a7) jsr util::frame_rect lea 8(a7),a7 move.w #60,-(a7) move.w #110,-(a7) move.w #40,-(a7) move.w #50,-(a7) jsr util::frame_rect lea 8(a7),a7 SetFont #0 WriteStr #50,#95,#1,_comment rts loop: jsr util::idle_loop cmp #$31,d0 beq case1 cmp #$32,d0 beq case2 cmp #$33,d0 beq case3 cmp #$34,d0 beq case4 cmp #$35,d0 beq case5 cmp #$36,d0 beq case6 cmp #$37,d0 beq case7 cmp #$38,d0 beq case8 cmp #$39,d0 beq case9 cmp #264,d0 beq fin bra loop case1: cmp.b #0,var1 bne loop move.w var1c1,d0 move.w var1c2,d1 bsr check_player move.b d0,var1 bra check case2: cmp.b #0,var2 bne loop move.w var2c1,d0 move.w var2c2,d1 bsr check_player move.b d0,var2 bra check case3: cmp.b #0,var3 bne loop move.w var3c1,d0 move.w var3c2,d1 bsr check_player move.b d0,var3 bra check case4: cmp.b #0,var4 bne loop move.w var4c1,d0 move.w var4c2,d1 bsr check_player move.b d0,var4 bra check case5: cmp.b #0,var5 bne loop move.w var5c1,d0 move.w var5c2,d1 bsr check_player move.b d0,var5 bra check case6: cmp.b #0,var6 bne loop move.w var6c1,d0 move.w var6c2,d1 bsr check_player move.b d0,var6 bra check case7: cmp.b #0,var7 bne loop move.w var7c1,d0 move.w var7c2,d1 bsr check_player move.b d0,var7 bra check case8: cmp.b #0,var8 bne loop move.w var8c1,d0 move.w var8c2,d1 bsr check_player move.b d0,var8 bra check case9: cmp.b #0,var9 bne loop move.w var9c1,d0 move.w var9c2,d1 bsr check_player move.b d0,var9 bra check check_player: cmp.b #0,player beq croix_p bsr rectangle move.b player,d0 add.b #1,d0 rts croix_p: bsr croix move.b player,d0 add.b #1,d0 rts inverse1: move.b #0,player bra player1_loop check: move.b var1,d0 move.b var2,d1 move.b var3,d2 cmp.b #0,d0 beq h_2 cmp.b #0,d1 beq h_2 cmp.b #0,d2 beq h_2 add.b d1,d0 add.b d2,d0 cmp.b #6,d0 beq victory_1 cmp.b #3,d0 beq victory_2 h_2: move.b var4,d0 move.b var5,d1 move.b var6,d2 cmp.b #0,d0 beq h_3 cmp.b #0,d1 beq h_3 cmp.b #0,d2 beq h_3 add.b d1,d0 add.b d2,d0 cmp.b #6,d0 beq victory_1 cmp.b #3,d0 beq victory_2 h_3: move.b var7,d0 move.b var8,d1 move.b var9,d2 cmp.b #0,d0 beq h_4 cmp.b #0,d1 beq h_4 cmp.b #0,d2 beq h_4 add.b d1,d0 add.b d2,d0 cmp.b #6,d0 beq victory_1 cmp.b #3,d0 beq victory_2 h_4: move.b var7,d0 move.b var4,d1 move.b var1,d2 cmp.b #0,d0 beq h_5 cmp.b #0,d1 beq h_5 cmp.b #0,d2 beq h_5 add.b d1,d0 add.b d2,d0 cmp.b #6,d0 beq victory_1 cmp.b #3,d0 beq victory_2 h_5: move.b var5,d0 move.b var8,d1 move.b var2,d2 cmp.b #0,d0 beq h_6 cmp.b #0,d1 beq h_6 cmp.b #0,d2 beq h_6 add.b d1,d0 add.b d2,d0 cmp.b #6,d0 beq victory_1 cmp.b #3,d0 beq victory_2 h_6: move.b var6,d0 move.b var3,d1 move.b var9,d2 cmp.b #0,d0 beq h_7 cmp.b #0,d1 beq h_7 cmp.b #0,d2 beq h_7 add.b d1,d0 add.b d2,d0 cmp.b #6,d0 beq victory_1 cmp.b #3,d0 beq victory_2 h_7: move.b var7,d0 move.b var5,d1 move.b var3,d2 cmp.b #0,d0 beq h_8 cmp.b #0,d1 beq h_8 cmp.b #0,d2 beq h_8 add.b d1,d0 add.b d2,d0 cmp.b #6,d0 beq victory_1 cmp.b #3,d0 beq victory_2 h_8: move.b var1,d0 move.b var5,d1 move.b var9,d2 cmp.b #0,d0 beq h_9 cmp.b #0,d1 beq h_9 cmp.b #0,d2 beq h_9 add.b d1,d0 add.b d2,d0 cmp.b #6,d0 beq victory_1 cmp.b #3,d0 beq victory_2 h_9: move.b counter,d0 sub.b #1,d0 move.b d0,counter cmp.b #0,counter beq draw SetFont #1 WriteStr #40,#0,#3,blank cmp.b #1,player beq inverse1 move.b #1,player WriteStr #0,#0,#1,player2 bra loop player1_loop: WriteStr #0,#0,#1,player1 bra loop draw: SetFont #1 WriteStr #0,#0,#3,blank WriteStr #67,#0,#1,draw_str bsr wait_enter jmp _main victory_1: SetFont #1 WriteStr #0,#0,#3,blank WriteStr #42,#0,#1,vict_1 bsr wait_enter jmp _main victory_2: SetFont #1 WriteStr #0,#0,#3,blank WriteStr #42,#0,#1,vict_2 bsr wait_enter jmp _main wait_enter: jsr util::idle_loop cmp #$0D,d0 bne wait_enter rts fin: rts rectangle: move.w d0,d2 move.w d1,d3 sub.w #10,d2 sub.w #10,d3 move.w d0,-(a7) move.w d1,-(a7) move.w d2,-(a7) move.w d3,-(a7) jsr util::frame_rect lea 8(a7),a7 rts croix: move.w d0,Y1 move.w d1,X1 sub.w #10,d0 sub.w #10,d1 move.w d0,Y2 move.w d1,X2 drawline X1,Y1,X2,Y2 add.w #10,Y2 sub.w #10,Y1 drawline X1,Y1,X2,Y2 rts symbol dc.w 0 joueur dc.b 0 player dc.b 0 gagne dc.b 0 var1 dc.b 0 var2 dc.b 0 var3 dc.b 0 var4 dc.b 0 var5 dc.b 0 var6 dc.b 0 var7 dc.b 0 var8 dc.b 0 var9 dc.b 0 var1c1 dc.w 75 var1c2 dc.w 65 var2c1 dc.w 75 var2c2 dc.w 85 var3c1 dc.w 75 var3c2 dc.w 105 var4c1 dc.w 55 var4c2 dc.w 65 var5c1 dc.w 55 var5c2 dc.w 85 var6c1 dc.w 55 var6c2 dc.w 105 var7c1 dc.w 35 var7c2 dc.w 65 var8c1 dc.w 35 var8c2 dc.w 85 var9c1 dc.w 35 var9c2 dc.w 105 X1 dc.w 0 Y1 dc.w 0 X2 dc.w 0 Y2 dc.W 0 counter dc.b 0 player1 dc.b "player 1's turn",0 player2 dc.b "player 2's turn",0 blank dc.b " ",0 draw_str dc.b "draw!",0 vict_1 dc.b "player 2 wins!",0 vict_2 dc.b "player 1 wins!",0 _comment dc.b "morpion v1.0 by endive",0 end