. = torg + 1000 main: mov #newboard, r0 mov #Init_S, r1 loop1: movb edge,(r0)+ cmpb r0,#2005 bne loop1 loop2: movb edge,(r0)+ movb edge,(r0)+ movb (r1)+,(r0)+ movb (r1)+,(r0)+ movb (r1)+,(r0)+ movb (r1)+,(r0)+ cmpb r0,#2035 bne loop2 loop3: movb edge,(r0)+ cmpb r0,#2043 bne loop3 mov #2035, r0 loop4: cmpb -(r0),0 bne loop4 mov #Moves, r1 movb (r1)+,temp movb temp,r2 switch: clr r3 cmpb (r1), #'U beq up cmpb (r1), #'R beq right cmpb (r1), #'L beq left cmpb (r1), #'D beq down end: movb (r3), (r0) clrb (r3) mov r3, r0 sub #1,r2 cmp r2,#0 bne switch mov #2007, r0 mov #End_S, r1 loop5: cmpb (r1)+,(r0)+ bne compare cmpb (r1)+,(r0)+ bne compare cmpb (r1)+,(r0)+ bne compare cmpb (r1)+,(r0)+ bne compare add #2, r0 cmp r0, #2037 bne loop5 halt compare: mov #0, Output halt
up: mov r0, r3 sub #6, r3 add #1, r1 cmpb (r3), edge bne end mov #2, Output halt
down: mov r0, r3 add #6, r3 add #1, r1 cmpb (r3), edge bne end mov #2, Output halt right: mov r0, r3 add #1, r3 add #1, r1 cmpb (r3), edge bne end mov #2, Output halt left: mov r0, r3 sub #1, r3 add #1, r1 cmpb (r3), edge bne end mov #2, Output halt . = torg + 2000 newboard: .blkw 22
. = torg + 2100 edge: .ascii <x>
. = torg + 2150 Output: .byte 1 . = torg + 2160 temp: .byte 0 . = torg + 2200 Init_S: .byte 4, 2, 9, 1, 5, 0, 7, 8, 3, 6, 14, 12, 13, 15, 11, 10 . = torg + 2350 End_S: .byte 4, 2, 9, 1, 5, 0, 7, 8, 3, 6, 14, 12, 13, 11, 15, 10 . = torg + 2500 Moves: .byte 0
|