@program prog_code,prog_name ;************** Start of Fargo program *************** prog_code: jsr flib[clr_scr] move.w #120,d3 move.w #064,d4 move.w #2,d5 clr.w d6 main_loop: tst.w ($75B0) beq no_key clr.w ($75B0) move.w ($75B2),d0 try_key_exit: cmp.w #$0108,d0 ; [ESC] to quit beq exit not_key_exit: try_key_r: cmp.w #$0072,d0 ; [R] to reverse time bne not_key_r not.w d6 not_key_r: no_key: tst.w d6 bne time_reverse bsr do_direction do_langston: move.w d4,-(a7) move.w d3,-(a7) jsr flib[find_pixel] add.l #4,a7 bchg.b d0,(a0) bne pixel_1 pixel_0: add.w #3,d5 and.w #3,d5 bra main_loop pixel_1: add.w #1,d5 and.w #3,d5 bra main_loop time_reverse: move.w d4,-(a7) move.w d3,-(a7) jsr flib[find_pixel] add.l #4,a7 bchg.b d0,(a0) bne r_pixel_1 r_pixel_0: add.w #3,d5 and.w #3,d5 bra r_do_direction r_pixel_1: add.w #1,d5 and.w #3,d5 bra r_do_direction r_do_direction: bchg.w #1,d5 bsr do_direction bchg.w #1,d5 bra main_loop exit: rts ;***************************************************** do_direction: d_0: tst.w d5 bne d_1 add.w #1,d3 cmp.w #240,d3 bne dir_done clr.w d3 rts d_1: cmp.w #1,d5 bne d_2 add.w #1,d4 cmp.w #121,d4 bne dir_done clr.w d4 rts d_2: cmp.w #2,d5 bne d_3 sub.w #1,d3 bcc dir_done move.w #239,d3 rts d_3: sub.w #1,d4 bcc dir_done move.w #120,d4 dir_done: rts ;***************************************************** prog_name: dc.b "Langston's Ant",0 ;*************** End of Fargo program **************** reloc_open add_library flib reloc_close end