So how'd you make out with another joystick?

On 7/10/2018 3:05 PM, Evan Koblentz wrote:

Well that is mighty simple.
So if you speak the truth, your PC subroutine becomes:

3000  REM NAVIGATION
3010 FB=STICK(1):LR=STICK(0):M=0: REM SET VARIABLES
3020  IF FB < 75 THEN M = 5
3030  IF FB > 180 THEN M = 10
3040  IF LR < 75 THEN M = 9
3050  IF LR > 180 THEN M = 6
3060 OUT P,M: REM SEND COMMANDS
3070  REM IF M = 10 THEN  CALL  - 198: FOR W = 1 TO 500: NEXT W: REM BACKUP ALERT
3080  RETURN

Yep.


Is P set somewhere?

Yes, it's set at the start of the program in the card initialization routine.


and is it definitely not being clobbered somewhere?
That would be a difference you would not notice on the
Apple side since it uses L instead of P.

Nope it's all good.


And this is obviously a subroutine, so there could be other areas of the code that
are not portable between the PC and Apple.
For instance, all the pokes shown on the web page won't work:
These poke into Apple memory space where the card is mapped; not the same  on the PC.

1000 REM Activate the Lego interface card
1010 S = 7:L = 49280 + S * 16
1020 POKE L + 3,1: POKE L + 2,63: POKE L + 1,0
1030 POKE L,0: REM CLEAR ALL PORTS
1040 RETURN

That's the Apple code. The IBM init code is here: http://www.snarc.net/mbts/ibmbasic.htm ... I am on top of all this. :)