Here it is: (It isn't hooked up to a starting vector or anything, but that's easy to do. Also, this is meant for the 80186 if that is useful.)
Code: Select all
start:
mov XDirection, 0x0001
mov YDirection, 0x0001
mov XPosition, 0x0000
mov YPosition, 0x0000
x_movement__start:
mov DX, #BallXVelocity
x_movement_loop:
jz y_movement_loop
add XPosition, XDirection
mov AX, #(ScreenWidth+BallDiameter) ;you write it like that, right?
cmp XPosition, AX
ja x_out_of_bounds
dec DX
jmp x_movement_loop
x_out_of_bounds:
xor XDirection, 0xFFFF
add XPosition, XDirection
dec DX
jmp x_movement_loop
y_movement__start:
mov DX, #BallYVelocity
y_movement_loop:
jz next_frame
add YPosition, YDirection
mov AX, #(ScreenHieght+BallDiameter) ;you write it like that, right?
cmp YPosition, AX
ja y_out_of_bounds
dec DX
jmp y_movement_loop
y_out_of_bounds:
xor YDirection, 0xFFFF
add YPosition, YDirection
dec DX
jmp y_movement_loop
next_frame:
int ;is this like wai?
jmp x_movement__start