SCREEN 12: REM 640 x 480, 16 colours stepnum = 50 ShoulderX = 320 ShoulderY = 100 Armlen1 = 190 Armlen2 = 190 Armlen3 = 95 Armang1 = 0 Armang2 = 0 Armang3 = ATN(1) * 4 / -4 Baseang = 0 jump = stepnum * (8 / (45 * 50)) * ATN(1) basejump = stepnum * 8 * ATN(1) / 1565 main: a$ = "" WHILE a$ = "" a$ = INKEY$ WEND IF a$ = "a" THEN Baseang = Baseang + basejump: motor = 24: dir = 2: GOSUB parport IF a$ = "d" THEN Baseang = Baseang - basejump: motor = 24: dir = 0: GOSUB parport IF a$ = "w" THEN Armang1 = Armang1 + jump: motor = 20: dir = 2: GOSUB parport IF a$ = "z" THEN Armang1 = Armang1 - jump: motor = 20: dir = 0: GOSUB parport IF a$ = "e" THEN Armang2 = Armang2 + jump: motor = 16: dir = 0: GOSUB parport IF a$ = "x" THEN Armang2 = Armang2 - jump: motor = 16: dir = 2: GOSUB parport IF a$ = "r" THEN Armang3 = Armang3 + jump: motor = 4: dir = 2: GOSUB parport IF a$ = "c" THEN Armang3 = Armang3 - jump: motor = 4: dir = 0: GOSUB parport IF a$ = "q" THEN END GOSUB drawarm GOTO main parport: REM communicate with arm on parallel port REM step arm by 1, then 0 REM direction is 2 or 0 REM motor select is 4,8,12,16,20,24 for motors 1-6 ArmPort = 888 info = dir + motor FOR t = 1 TO stepnum OUT ArmPort, info FOR q = 1 TO 5: NEXT q OUT ArmPort, info + 1 FOR q = 1 TO 5: NEXT q OUT ArmPort, info FOR q = 1 TO 5: NEXT q NEXT t RETURN drawarm: CLS CIRCLE (ShoulderX, 480 - ShoulderY), 10 LINE (ShoulderX, 480 - ShoulderY)-STEP(Armlen1 * COS(Armang1), -Armlen1 * SIN(Armang1)) CIRCLE STEP(0, 0), 10 LINE -STEP(Armlen2 * COS(Armang2), -Armlen2 * SIN(Armang2)) CIRCLE STEP(0, 0), 10 LINE -STEP(Armlen3 * COS(Armang3), -Armlen3 * SIN(Armang3)) PRINT Baseang RETURN