REM >5cb-test REM tests 5-choice box REM REM 29 May 99 - rewritten for AC: uses my libraries properly (supersedes version for Yogi) REM 7 Jun 99 - tone support PROCinit :REM Arachnid init PROCkill_all :REM Arachnid init LIBRARY ".ProgLibs.Arachnid" LIBRARY ".ProgLibs.BoxConst": PROCfive_hole_boxes DIM hole_count%(nboxes%,nholes%), panel_count%(nboxes%) REM ================================= REM Initialize screen REM ================================= MODE 8:CLS PRINT "5cb-test; by Rudolf Cardinal, AC boxes, 7 Jun 99." PRINT "Press Q to quit." PRINT PRINT PRINT "OUTPUT STATUS:" PRINT " A. Houselight" PRINT " B. Traylight" PRINT " C. Pellet" PRINT " D. Hole 1 light" PRINT " E. Hole 2 light" PRINT " F. Hole 3 light" PRINT " G. Hole 4 light" PRINT " H. Hole 5 light" PRINT " I. Tone" PRINT PRINT "INPUT COUNT:" PRINT " Panel" PRINT " Hole 1" PRINT " Hole 2" PRINT " Hole 3" PRINT " Hole 4" PRINT " Hole 5" 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(panelpush%(box%),On,1,"FNpanelpush(",box%,E%) FOR hole%=1 TO nholes% PROCpipe_switch(nosepoke%(box%,hole%),On,1,"FNnosepoke("+STR$(hole%)+",",box%,E%) NEXT NEXT dummy%=FNcurrent_box(1) PROCwait(E%): *AE 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") =FNtraylight(current_box%) IF key% = ASC("C") =FNpellet(current_box%) IF key% = ASC("D") =FNholelight(current_box%,1) IF key% = ASC("E") =FNholelight(current_box%,2) IF key% = ASC("F") =FNholelight(current_box%,3) IF key% = ASC("G") =FNholelight(current_box%,4) IF key% = ASC("H") =FNholelight(current_box%,5) IF key% = ASC("I") =FNtone(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,24);current_box% =0 REM -------------------------------------- OUTPUTS 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),5); i$ =0 DEF FNtraylight(box%) LOCAL i$ PROCswitch_over(traylight%(box%),E%) IF FNswitch(traylight%(box%),E%)=On THEN i$="X" ELSE i$=" " PRINT TAB(29+7*(box%-1),6); i$ =0 DEF FNpellet(box%) LOCAL i$ PROCswitch_over(pellet_dispenser%(box%),E%) IF FNswitch(pellet_dispenser%(box%),E%)=On THEN i$="X" ELSE i$=" " PRINT TAB(29+7*(box%-1),7); i$ =0 DEF FNholelight(box%,hole%) LOCAL i$ PROCswitch_over(aperturelight%(box%,hole%),E%) IF FNswitch(aperturelight%(box%,hole%),E%)=On THEN i$="X" ELSE i$=" " PRINT TAB(29+7*(box%-1),7+hole%); i$ =0 DEF FNtone(box%) LOCAL i$ PROCswitch_over(tone%(box%),E%) IF FNswitch(tone%(box%),E%)=On THEN i$="!" ELSE i$=" " PRINT TAB(29+7*(box%-1),13); i$ =0 REM -------------------------------------- INPUTS DEF FNnosepoke(hole%,box%,R%) IF R%=0 =0 hole_count%(box%,hole%)+=1 PRINT TAB(29+7*(box%-1),16+hole%); hole_count%(box%,hole%) =0 DEF FNpanelpush(box%,R%) IF R%=0 =0 panel_count%(box%)+=1 PRINT TAB(29+7*(box%-1),16); panel_count%(box%) =0 REM -------------------------------------- DEF FNend(N%,R%) IF R%=0 =0 PROCkill_all =0