10 !CHR$(26)
20 !" PROGRAMMED CURRENT SOURCE - VERSION 1.0"
30 !:!:!
40 OUT195,128
50 !"LOAD (OHMS)";:INPUT R
60 IF R=0 THEN 50
80 H=INT((18.5*100)/R)/100
90 !"PEAK CURRENT (MAX. =";H;"AMP.)";:INPUT I
100 IF I>H THEN 90
110 V1=INT(255*I*R/18.45)
120 IF V1>24 THEN V2=24:GOTO 150
130 IF V1>16 THEN V2=22:GOTO 150
140 V2=INT(1.7*V1)
150 !"DURATION (SEC.)";:INPUT T1
160 IF T1<.5 THEN !:!">>>MINIMUM DURATION 0.5 SEC.<<<":!:GOTO 150
170 T1=INT(T1*10)
180 !"COERCIVE CURRENT (ON/OFF)";:INPUT W$
190 IF W$="ON" THEN F=1:GOTO 220
200 IF W$="OFF" THEN F=0:GOTO 220
210 GOTO 180
220 !"CYCLES (#)";:INPUT N
230 IF N<1 THEN 220
240 T2=25
250 IF N=1 THEN 350
260 IF F=0 THEN 280
270 IF F=1 THEN 320
280 !"INTERPULSE INTERVAL (MIN.=1.0 SEC.)";:INPUT T2
290 T2=INT(T2*10)
300 IF T2<10 THEN 280
310 GOTO 350
320 !"INTERPULSE INTERVAL (MIN.=2.5 SEC.)";:INPUT T2
330 T2=INT(T2*10)
340 IF T2<25 THEN 320
350 !"
ULSE, AMP OR BORT";:INPUT M$
360 IF M$="P" THEN 400
370 IF M$="R" THEN 400
380 IF M$="A" THEN 10
390 GOTO 350
400 OUT194,1
410 FOR A=1 TO N
420 Q=0
430 IF M$="P" THEN 470
440 FOR R=0 TO V1
450 OUT193,R
460 NEXT R
470 OUT128,4:OUT128,0
480 OUT193,V1
490 K=INP(129)
500 C=INP(129)
510 IF C=K THEN 500
520 Q=Q+1
530 IF Q=T1 THEN 550
540 GOTO 490
550 IF M$="P" THEN 590
560 FOR R=0 TO V1
570 OUT193,(V1-R)
580 NEXT R
590 OUT193,0
600 Q=0
610 IF F=1 THEN GOSUB 720
620 K=INP(129)
630 C=INP(129)
640 IF C=K THEN 630
650 Q=Q+1
660 IF Q=T2 THEN 680
670 GOTO 620
680 NEXT A
690 OUT194,0
700 !CHR$(7)
710 END
720 K=INP(129)
730 C=INP(129)
740 IF C=K THEN 730
750 Q=Q+1
760 IF Q=9 THEN 780
770 GOTO 720
780 OUT194,3
790 K=INP(129)
800 C=INP(129)
810 IF C=K THEN 800
820 Q=Q+1
830 OUT193,V2
840 K=INP(129)
850 C=INP(129)
860 IF C=K THEN 850
870 Q=Q+1
880 IF Q=17 THEN 900
890 GOTO 840
900 OUT 193,0
910 K=INP(129)
920 C=INP(129)
930 IF C=K THEN 920
940 Q=Q+1
950 IF Q=24 THEN 970
960 GOTO 910
970 OUT194,1
980 RETURN