53249 220 IF STICK(0)=13 THEN D=USR(DOWN,PM BASE+511+Y):Y=Y+1 250 GOTO 210 300 U=USR(UP,PMBASE+511+Y):Y=Y-l 310 RETURN This will move any nine-line (or less) size player vertically with the joystick. If you have a larger player size, increase the 11 in line 140 to a number two larger than the number of vertical lines the player uses, and change the ten in line 150 to one greater than the number of lines. To add horizontal movement, add the following lines: 6 HPOS = 53248 230 IF STICK(0) = 11 THEN X = X - 1: POKE HPOS, X 240 IF STICK(0) = 7 THEN X = X + 1: POKE HPOS, X You can use the routine to move any player by changing the number 511 in the USR calls to one less than the start address of the object to be moved. See the appendix for a map of P/M graphics memory use. Missiles are more difficult to move vertically with this routine, since it moves an entire byte, not bits. It would be useful for moving all four missiles vertically if you need to do so; they could still be moved horizontally in an individual manner. See COMPUTE!, December 1981, February 1982, and May 1982, for some solutions and some machine language move routines, and COMPUTE!, October 1981, for a solution with animation involving P/M graphics. M0PF (R) Missile 0 to playfield collision. This register will tell you which playfield the object has "collided" with, i.e., overlapped. If missile 0 collides with playfield two, the register would read four and so on. Bit use is: Bit 7 6 5 4 3 2 1 0 Playfield .....unused..... 3 2 1 0 Decimal ................ 8 4 2 1 53249 D00l HOPSP1 (W) Horizontal position of player 1. M1PF (R) Missile 1 to playfield collision. 53250 D002 HPOSP2 (W) Horizontal position of player 2. M2PF