NEW 100 REM IOTEST.BAS, FOR THE 110 REM INDUSTROLOGIC SBC-1. 120 REM TESTS THE I/O HARDWARE 130 REM ON THE SBC-1. 140 REM 190 REM ---------- 200 PRINT CHR(12); 210 PRINT "Industrologic, "; 220 PRINT "Inc. SBC-1" 230 PRINT "I/O hardware "; 240 PRINT "test program" 250 PRINT "Version 01/21/99" 260 PRINT 270 PRINT "0=Exit program" 280 PRINT "1=Serial port 1 "; 290 PRINT "(echo keys)" 300 PRINT "2=Serial port 2 "; 310 PRINT "loopback" 320 PRINT "3=Digital outputs" 330 PRINT "4=Digital inputs" 340 PRINT "5=Interrupt inputs"; 350 PRINT " and A/D converter" 360 PRINT "6=Real-time clock" 370 PRINT "7=LED-8 display" 380 PRINT 390 PRINT "Enter (0-6)"; 400 INPUT M 410 IF M=0 THEN END 420 IF M>7 THEN GOTO 200 430 IF M=1 THEN M=0:GOSUB 1000 440 IF M=2 THEN M=0:GOSUB 1200 450 IF M=3 THEN M=0:GOSUB 1600 460 IF M=4 THEN M=0:GOSUB 2800 470 IF M=5 THEN M=0:GOSUB 3200 480 IF M=6 THEN M=0:GOSUB 3500 490 IF M=7 THEN M=0:GOSUB 6000 500 GOTO 200 990 REM ---------- 1000 PRINT CHR(12); 1010 PRINT "Echoing keys, "; 1020 PRINT "ESCape to exit:" 1030 PRINT 1040 A=INKEY 1050 IF A=0 THEN GOTO 1040 1060 IF A=27 THEN RETURN 1070 PRINT CHR(A); 1080 GOTO 1040 1190 REM ---------- 1200 PRINT CHR(12); 1210 PRINT "Connect pins 2 "; 1220 PRINT "and 3 on Serial "; 1230 PRINT "port 2 and hit "; 1240 PRINT "any key to "; 1250 PRINT "continue" 1260 K=INKEY 1270 IF K=0 THEN GOTO 1260 1280 PRINT "Testing..." 1300 E=0 1310 SELPORT2=9600 1320 FOR A=65 TO 90 1330 PRINT CHR(A); 1340 SETTIME1=0,0,0,1 1350 G=GETTIME1 1360 IF G=0 THEN GOTO 1350 1370 B=INKEY 1380 IF B<>A THEN E=1 1390 NEXT A 1400 IF E=1 THEN GOTO 1460 1420 SELPORT1=9600 1430 PRINT 1440 PRINT "Loopback passed" 1450 GOTO 1490 1460 SELPORT1=9600 1470 PRINT 1480 PRINT "Loopback failed" 1490 SETTIME1=0,0,2,0 1500 G=GETTIME1 1510 IF G=0 THEN GOTO 1500 1520 RETURN 1590 REM ---------- 1600 PRINT CHR(12); 1610 PRINT "Digital outputs:" 1620 PRINT 1630 PRINT "Select output "; 1640 PRINT "(1-24)" 1650 PRINT "or 0=exit, 25="; 1660 PRINT "all on, 26=all "; 1670 PRINT "off, 27=cycle "; 1680 PRINT "all on and off"; 1690 INPUT A 1700 IF A=0 THEN RETURN 1710 IF A>27 THEN GOTO 1630 1720 IF A=25 THEN GOTO 2000 1730 IF A=26 THEN GOTO 2020 1740 IF A=27 THEN GOTO 2200 1750 PRINT "On or off? (1 or "; 1760 PRINT "0), 2=exit"; 1770 INPUT B 1780 IF B>2 THEN GOTO 1750 1790 IF B=2 THEN RETURN 1800 OUTBIT A=B 1810 IOSCAN 1820 GOTO 1600 1830 REM --- 2000 B=1 2010 GOTO 2030 2020 B=0 2030 PRINT 2040 FOR P=1 TO 24 2050 OUTBIT P=B 2060 NEXT P 2070 IOSCAN 2080 GOTO 1600 2090 REM --- 2200 PRINT "Cycling digital "; 2210 PRINT "outputs, "; 2220 PRINT "ESCape to exit" 2230 B=1:GOSUB 2400 2240 IF R=1 THEN GOTO 1600 2250 B=0:GOSUB 2400 2260 IF R=1 THEN GOTO 1600 2270 GOTO 2230 2280 REM --- 2400 R=0 2410 FOR P=1 TO 24 2420 OUTBIT P=B 2430 IOSCAN 2440 SETTIME1=0,0,0,10 2450 G=GETTIME1 2460 K=INKEY 2470 IF K=27 THEN R=1:P=24 2480 IF G=0 THEN GOTO 2450 2490 NEXT P 2500 RETURN 2790 REM ---------- 2800 PRINT CHR(12); 2810 PRINT "Digital inputs, "; 2820 PRINT "ESCape to "; 2830 PRINT "exit:" 2840 PRINT 2850 PRINT " Input "; 2860 FOR P=1 TO 24 2870 IF P<10 PRINT "0"; 2880 PRINT P;" "; 2890 NEXT P 2900 PRINT 2910 IOSCAN 2920 PRINT "Status"; 2930 FOR P=1 TO 24 2940 PRINT " ";INBIT P; 2950 NEXT P 2960 PRINT 2970 K=INKEY 2980 IF K=0 THEN GOTO 2910 2990 IF K=27 THEN RETURN 3000 GOTO 2840 3190 REM ---------- 3200 PRINT CHR(12); 3210 PRINT "Interrupt inputs "; 3220 PRINT "and Analog to Dig"; 3230 PRINT "ital converter, "; 3240 PRINT "ESCape to exit:" 3250 PRINT 3260 SETTIME1=0,0,1,0 3270 G=GETTIME1 3280 IF G=0 THEN GOTO 3270 3290 IOSCAN 3300 A=INTIN1 3310 PRINT "Input 1="; 3320 IOSCAN 3330 B=INTIN2 3340 PRINT A; 3350 PRINT " Input 2="; 3360 C=VIN1 3370 PRINT B; 3380 PRINT " A/D value="; 3390 PRINT C 3400 K=INKEY 3410 IF K=27 THEN RETURN 3420 GOTO 3290 3490 REM ---------- 3500 PRINT CHR(12); 3510 PRINT "Real-time clock:" 3520 PRINT 3530 PRINT "0=exit" 3540 PRINT "1=Display clock" 3550 PRINT "2=Set clock" 3560 PRINT 3570 PRINT "Enter (0-2)"; 3600 INPUT A 3610 IF A=0 THEN RETURN 3620 IF A>2 THEN GOTO 3500 3630 IF A=1 THEN GOTO 4000 3640 IF A=2 THEN GOTO 4500 3990 REM --- 4000 PRINT CHR(12); 4010 PRINT "Display clock, "; 4020 PRINT "ESCape to exit" 4030 PRINT 4040 CLOCK 0 4050 S=SEC0 4060 K=INKEY 4070 IF K=27 THEN GOTO 3500 4080 IF SEC0=S THEN GOTO 4060 4090 GOTO 4000 4100 REM --- 4500 PRINT CHR(12); 4510 PRINT "Set clock:" 4520 PRINT "Currently "; 4530 CLOCK 0:PRINT 4540 PRINT 4590 PRINT "Sun=1, Sat=7" 4600 PRINT "Day of Week (1-7)"; 4610 INPUT W 4620 IF W<1 THEN GOTO 4600 4630 IF W>7 THEN GOTO 4600 4700 PRINT "Month (1-12)"; 4710 INPUT M 4720 IF M<1 THEN GOTO 4700 4730 IF M>12 THEN GOTO 4700 4800 PRINT "Day (1-31)"; 4810 INPUT D 4820 IF D<1 THEN GOTO 4800 4830 IF D>31 THEN GOTO 4800 4900 PRINT "Year (0-99)"; 4910 INPUT Y 4920 IF Y<0 THEN GOTO 4900 4930 IF Y>99 THEN GOTO 4900 5000 PRINT "Hour (0-23)"; 5010 INPUT H 5020 IF H<0 THEN GOTO 5000 5030 IF H>23 THEN GOTO 5000 5100 PRINT "Minute (0-59)"; 5110 INPUT N 5120 IF N<0 THEN GOTO 5100 5130 IF N>59 THEN GOTO 5100 5200 PRINT 5210 PRINT "Seconds are alway"; 5220 PRINT "s set to zero-" 5230 PRINT "ESCape to exit, "; 5240 PRINT "any other key to "; 5250 PRINT "set clock now..." 5300 K=INKEY 5310 IF K=27 THEN GOTO 3500 5320 IF K=0 THEN GOTO 5300 5400 YR0=Y 5410 MON0=M 5420 DAY0=D 5430 DOW0=W 5440 HR0=H 5450 MIN0=N 5460 GOTO 3500 5470 REM --- 6000 PRINT 6000 PRINT CHR(12); 6010 PRINT "LED-8 test, "; 6020 PRINT "ESCape to "; 6030 PRINT "exit:" 6040 PRINT 6050 DCLOCK3 6060 K=INKEY 6070 IF K=27 GOTO 6300 6080 PAUSE 80 6090 DPRINT "OOOOOOOO" 6100 K=INKEY 6110 IF K=27 GOTO 6300 6120 PAUSE 80 6130 DPRINT "********" 6140 K=INKEY 6150 IF K=27 GOTO 6300 6160 PAUSE 80 6170 DPRINT "........" 6180 K=INKEY 6190 IF K=27 GOTO 6300 6200 PAUSE 80 6210 GOTO 6050 6300 DPRINT 6310 RETURN