Hey Bane ! you found something,
using “old” PS2 DualShock 1 mode ($73) makes the Lynxmotion Pad to be able to vibrate
.
so, here’s some explanations about your program which was not working :
- Temp( 7 ) and temp( 8 ) were not read, so they were filled with random values
- using for-next loop is too slow to read PS2 flow, so we must read all data within a line
- “large” and “small” variables were inverted in the “shiftout” line, the first one to be sent is “small” then “large”
some pauses are added
temp array is reduced to 7 bytes
temp1 and cntr variables deleted
please note :
using DS1 mode ($73), all buttons are numeric, no more analog.
so here’s the corrected code (SEL and CLK lines were swapped to see pin assignment incremental)
Thanks for your help solving this 
[code]; PS2 Controller Program for BB1/BB2
; PS2 mode $73, Dualshock 1 mode, compatible with DS1 and DS2 PAD
; 16 numeric buttons and 2 X 2 axis analog joysticks
; vibration compatible with PS2 Lynxmotion controller
;
; push right arrow to enable the small vibration motor (only “on” or “off”)
;
; push left arrow to allow the large vibration motor, keep pressed
; then move the right joystick vertically to control the large motor speed
;BotBoard I
DAT con P4
CMD con P5
SEL con P6
CLK con P7
; BotBoard II
;DAT con P12
;CMD con P13
;SEL con P14
;CLK con P15
index var byte
temp var byte(7)
mode var byte
small var byte
large var byte
high CLK
low SEL
shiftout CMD,CLK,FASTLSBPRE,$1\8,$43\8,$0\8,$1\8,$0\8] ;Config Enable
high SEL
pause 1
low SEL
shiftout CMD,CLK,FASTLSBPRE,$01\8,$44\8,$00\8,$01\8,$03\8,$00\8,$00\8,$00\8,$00\8] ;Set Mode and Fix(Analog
high SEL
pause 100
low SEL
shiftout CMD,CLK,FASTLSBPRE,$01\8,$4D\8,$00\8,$00\8,$01\8,$ff\8,$ff\8,$ff\8,$ff\8] ;Vibration Enable
high SEL
pause 1
low SEL
shiftout CMD,CLK,FASTLSBPRE,$01\8,$43\8,$00\8,$00\8,$00\8,$00\8,$00\8,$00\8,$00\8] ;Config Exit
high SEL
pause 1
main
low SEL
shiftout CMD,CLK,FASTLSBPRE,$1\8]
shiftin DAT,CLK,FASTLSBPOST,[mode\8]
high SEL
low SEL
shiftout CMD,CLK,FASTLSBPRE,$1\8,$42\8]
shiftin DAT,CLK,FASTLSBPOST,[temp(0)\8,temp(1)\8,temp(2)\8]
high SEL
low SEL
shiftout CMD,CLK,FASTLSBPRE,$1\8,$42\8,$0\8,small\8,large\8]
shiftin DAT,CLK,FASTLSBPOST,[temp(3)\8,temp(4)\8,temp(5)\8,temp(6)\8]
high SEL
serout S_OUT,i57600,[13,hex2 mode\2]
for index = 1 to 6
serout S_OUT,i57600," ",dec3 temp(index)\3]
next
small = 1 - temp(1).bit5
if temp(1).bit7 then
Large = 0
else
large = 255 - temp(4)
endif
goto main[/code]