I would increase the time, for example
time = 22;
and then cut off the excess plot below the x axis using PlotRange:
Show[m, b, PlotRange -> {0, Max[dataset[[All, 2]]] + 5},
PlotRangePadding -> None]
You can build your dataset with Table, instead of For:
dataset = Table[{ux*t, (uy*t) + (1/2*a*t^2)},
{t, 0, 21}]