REM >TestPBox REM ----------------------------- REM by Rudolf Cardinal, 21 Oct 97 REM Tests in/out lines on pellet boxes. REM REM 15 Jun 98 - modified for pellet boxes REM 16 Sep 98 - modified for modular/library system (wiring system #2) REM 17 Oct 98 - more modularisation REM ================================== REM Libraries REM ================================== PROCinit :REM Arachnid init PROCkill_all :REM Arachnid init LIBRARY ".ProgLibs.Arachnid" LIBRARY ".ProgLibs.BoxConst" PROCpellet_boxes DIM left_count%(nboxes%), right_count%(nboxes%) REM ================================= REM Initialize screen REM ================================= MODE 8:CLS PRINT "TestBoxes; by Rudolf Cardinal, 21 Oct 97." PRINT "PELLET BOXES, 15 Jun 98." PRINT "Press Q to quit." PRINT PRINT PRINT "OUTPUT STATUS:" PRINT " A. Houselight" PRINT " B. Traylight" PRINT " C. Pellet dispenser" PRINT " D. Left lever (spare1)" PRINT " E. Right lever (spare3)" PRINT " F. Left lever light" PRINT " G. Right lever light" PRINT PRINT "INPUT COUNT:" PRINT " Magazine entry" PRINT " Left lever" PRINT " Right lever" PRINT PRINT "To operate, press 1-";nboxes%;" to control a box and A-G to switch an output." PRINT "Currently controlling box ." FOR box%=1 TO nboxes% PRINT TAB(29+7*(box%-1),4) "Box-";box% NEXT REM ========================================== REM Init hardware, assign events and run REM ========================================== PROCpipe_keybd(0,0,0,"FNkeyboard_handler(",0,E%) FOR box%=1 TO nboxes% PROCpipe_switch(leftlever%(box%),On,1,"FNleftlever(",box%,E%) PROCpipe_switch(rightlever%(box%),On,1,"FNrightlever(",box%,E%) NEXT dummy%=FNcurrent_box(1) REM --- PROCdebug_fnswitch:IFGET PROCwait(E%): *AE REM --- PROCdebug_fnswitch:IFGET PRINT TAB(0,23) END REM ============================================ REM ******************************************** REM ============================================ DEF FNkeyboard_handler(P%,R%) IF R%=0 =0 key% = GET IF key%>=ASC("a") AND key%<=ASC("z") THEN key%-=32 IF key%>=ASC("1") AND key%<=ASC("9") =FNcurrent_box(key%-ASC("0")) IF key% = ASC("A") =FNhouselight(current_box%) IF key% = ASC("B") =FNcentrelight(current_box%) IF key% = ASC("C") =FNpellet(current_box%) IF key% = ASC("D") =FNleftlevercontrol(current_box%) IF key% = ASC("E") =FNrightlevercontrol(current_box%) IF key% = ASC("F") =FNleftlight(current_box%) IF key% = ASC("G") =FNrightlight(current_box%) IF key% = ASC("Q") =FNend(P%,R%) =0 DEF FNcurrent_box(box%) IF box%<1 OR box%>nboxes% =0 current_box%=box% PRINT TAB(26,20);current_box% =0 DEF FNhouselight(box%) LOCAL i$ PROCswitch_over(houselight%(box%),E%) IF FNswitch(houselight%(box%),E%)=On THEN i$="X" ELSE i$=" " PRINT TAB(29+7*(box%-1),6); i$ =0 DEF FNcentrelight(box%) LOCAL i$ PROCswitch_over(centrelight%(box%),E%) IF FNswitch(centrelight%(box%),E%)=On THEN i$="X" ELSE i$=" " PRINT TAB(29+7*(box%-1),7); i$ =0 DEF FNpellet(box%) LOCAL i$ PROCswitch_over(pellet%(box%),E%) IF FNswitch(pellet%(box%),E%)=On THEN i$="X" ELSE i$=" " PRINT TAB(29+7*(box%-1),8); i$ =0 DEF FNleftlevercontrol(box%) LOCAL i$ PROCswitch_over(leftlevercontrol%(box%),E%) IF FNswitch(leftlevercontrol%(box%),E%)=On THEN i$="X" ELSE i$=" " PRINT TAB(29+7*(box%-1),9); i$ =0 DEF FNrightlevercontrol(box%) LOCAL i$ PROCswitch_over(rightlevercontrol%(box%),E%) IF FNswitch(rightlevercontrol%(box%),E%)=On THEN i$="X" ELSE i$=" " PRINT TAB(29+7*(box%-1),10); i$ =0 DEF FNleftlight(box%) LOCAL i$ PROCswitch_over(leftlight%(box%),E%) IF FNswitch(leftlight%(box%),E%)=On THEN i$="X" ELSE i$=" " PRINT TAB(29+7*(box%-1),11); i$ =0 DEF FNrightlight(box%) LOCAL i$ PROCswitch_over(rightlight%(box%),E%) IF FNswitch(rightlight%(box%),E%)=On THEN i$="X" ELSE i$=" " PRINT TAB(29+7*(box%-1),12); i$ =0 DEF FNleftlever(box%,R%) IF R%=0 =0 left_count%(box%)+=1 PRINT TAB(29+7*(box%-1),16); left_count%(box%) =0 DEF FNrightlever(box%,R%) IF R%=0 =0 right_count%(box%)+=1 PRINT TAB(29+7*(box%-1),17); right_count%(box%) =0 DEF FNend(N%,R%) IF R%=0 =0 PROCkill_all =0 DEF PROCdebug_fnswitch FOR i%=0 TO 20 PROCswitch_on(i%,E%) A%=FNswitch(i%,E%) PRINT "FNswitch on line ";i%;" is ";A%;" with error ";E%;" ." NEXT ENDPROC