You needed to go into gwbasic, type: load "condform.bas" save "condform.txt", a Regards, Michael 10 REM ===== THIS PROGRAM MUST BE IMPLEMENTED ON A SYSTEM THAT ACCEPTS A 20 REM ===== STATEMENT THAT READS A CHARACTER FROM THE KEYBOARD WHITHOUT 30 REM ===== INTERRUPTING THE PROGRAM (E.G. INKEY$). 40 GOSUB 1290 50 REM ===== CLEAR THE SCREEN 60 PRINT "*** DIALOG SUPPORT SYSTEM ***" 70 PRINT "COPYRIGHT DAVID STODOLSKY, 1986" 80 PRINT 90 PRINT "PRESS RETURN FOR INSTRUCTIONS" 100 INPUT Z$ 110 GOSUB 1290 120 GOSUB 1340 130 DIM N6$(20) 140 DIM G$(30) 150 DIM U(20) 160 DIM Q(20) 170 FOR I = 0 TO 26 180 READ G$(I) 190 NEXT I 200 LET P = 36 210 PRINT "PROGRAM LOOPS PER SECOND SET TO "; P 220 GOTO 280 230 LET S7 = S7 + 1 240 LET S1 = S7 / P 250 LET C = S1 260 REM ----- C = CURRENT TIME 270 RETURN 280 REM ===== INITIALIZATION ================================== 290 PRINT "TURN LIMIT (SEC.)"; 300 INPUT T 310 REM ----- T = TURN LIMIT 320 PRINT "DISCUSSION LIMIT (MIN.)"; 330 INPUT D 340 LET D = D * 60 350 REM ----- D = DISCUSSION LIMIT 360 PRINT "NUMBER OF PEOPLE"; 370 INPUT N2 380 FOR N1 = 1 TO N2 390 PRINT "NAME "; G$(N1) 400 INPUT N6$(N1) 410 NEXT N1 420 PRINT "IF A PERSON GETS INTERRUPTED, SHALL HE OR SHE" 430 PRINT "BE REMOVED FROM THE QUEUE? (Y/N) "; 440 INPUT P$ 450 IF P$ = "Y" THEN 510 460 IF P$ = "y" THEN 510 470 IF P$ = "n" THEN 510 480 PRINT 490 IF P$ = "N" THEN 510 500 GOTO 420 510 GOSUB 1290 520 PRINT D/60;" MIN.CONFERENCE. ";T;" SEC. TURNS." 530 GOSUB 580 540 PRINT "TIME IS UP. ************" 550 BEEP 560 BEEP 570 END 580 REM ================================================ DIALOG SUBRUTINE 590 GOSUB 230 600 REM ----- E IS THE END OF DISCUSSION TIME 610 LET E = C + D 620 GOSUB 230 630 PRINT "DISCUSSION TIME LEFT ";INT(E - C);" SECONDS." 640 GOSUB 670 650 IF C < E THEN 620 660 RETURN 670 REM ================================================ SELECT SUBRUTINE 680 GOSUB 1120 690 GOSUB 230 700 IF R=0 THEN 750 710 REM ----- R = RESPONSE, 1-9 = REQUEST, 0 = RELEASE 720 IF C < N THEN 680 730 REM ----- N = END OF TURN LIMIT 740 REM ----- U IS TIME USED 750 LET U(S9) = U(S9) + C - S 760 REM ----- S IS START TIME 770 REM ----- M IS THE MINIMUM ELAPSED TIME 780 LET M = 10 ^ 37 790 LET N = C 800 LET G1 = 0 810 LET L = S9 820 LET S9 = N2 + 1 830 FOR F = 1 TO N2 840 IF Q(F) = 0 THEN 910 850 IF U(F) > M THEN 910 860 LET G1 = 1 870 LET M = U(F) 880 LET N = C + T 890 LET S9 = F 900 LET X$ = N6$(S9) 910 NEXT F 920 IF G1 = 0 THEN GOTO 1070 930 PRINT "CURRENT SPEAKER IS ";X$ 940 LET R = S9 950 LET S = C 960 IF L = S9 THEN GOTO 1060 970 IF P$ = "N" THEN 1010 980 IF P$ = "n" THEN 1010 990 LET Q(L) = 0 1000 REM ----- 920-950 IS ADEQUATE FOR PRODUCING BEEPS ON SOME MACHINES 1010 REM ----- LET S8 = -16336 1020 REM ----- FOR A = 1 TO 5 1030 REM ----- LET B = PEEK (S8) - PEEK (S8) + PEEK (S8) - PEEK (S8) 1040 REM ----- NEXT A 1050 BEEP 1060 RETURN 1070 PRINT "WAITING FOR A NEW SPEAKER" 1080 GOTO 950 1090 REM ================================================ DISPLAY SUBRUTINE 1100 PRINT W$ 1110 RETURN 1120 REM =============================================== COLLECT SUBRUTINE 1130 LET W$ = "ENTER REQUEST" 1140 LET L$ = INKEY$ 1150 IF L$ = "" THEN 1260 1160 FOR I = 0 TO 9 1170 IF L$ = G$(I) THEN GOTO 1270 1180 NEXT I 1190 REM ----- SPEAKER INDICATES END 1200 IF R = 0 THEN 1230 1210 LET Q(R) = 1 1220 GOTO 1240 1230 LET Q(S9) = 0 1240 LET W$ = N6$(R) 1250 GOSUB 1090 1260 RETURN 1270 LET R = I 1280 GOTO 1190 1290 REM ================================================ CLEAR THE SCREEN SUB 1300 FOR I = 1 TO 24 1310 PRINT 1320 NEXT I 1330 RETURN 1340 REM =============================================== INSTRUCTIONS 1350 PRINT "THIS PROGRAM MEDIATES DIALOG" 1360 PRINT "BY RESOLVING CONFLICTING REQUESTS" 1370 PRINT "TO SPEAK IN FAVOR OF THE PERSON" 1380 PRINT "WHO HAS THUS FAR SPOKEN THE LEAST." 1390 PRINT "ASSIGN EACH PERSON A CARD" 1400 PRINT "LETTERED A THROUGH Z." 1410 PRINT "ENTER THE LETTER WHEN THEY" 1420 PRINT "HOLD UP THE CARD." 1430 PRINT 1440 PRINT " PRESS RETURN FOR MORE." 1450 INPUT Z$ 1460 GOSUB 1290 1470 PRINT " WHEN THE PERSON FINISHES " 1480 PRINT "ENTER A ZERO AND THE NAME" 1490 PRINT "OF THE NEXT SPEAKER WILL" 1500 PRINT "APPEAR." 1510 PRINT 1520 PRINT " THE PROGRAM WILL ASK FOR THE" 1530 PRINT "NUMBER OF SECONDS EACH TURN WILL " 1540 PRINT "BE LIMITED TO, THE TIME LIMIT" 1550 PRINT "FOR THE DISCUSSION IN MINUTES," 1560 PRINT "AND THE NUMBER OF SPEAKERS." 1570 PRINT "AFTER THE NAMES HAVE BEEN" 1580 PRINT "ENTERED THE PROGRAM WILL START." 1590 PRINT " PRESS RETURN FOR MORE." 1600 INPUT Z$ 1610 GOSUB 1290 1620 PRINT "WHEN THE TIME RUNS OUT" 1630 PRINT "THE PROGRAM TERMINATES!" 1640 PRINT 1650 PRINT "PRESS RETURN TO START" 1660 INPUT Z$ 1670 RETURN 1680 DATA 0,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z 1690 REM =============================================== VARIABLE NAMES 1700 REM C CURRENT TIME 1710 REM D DISCUSSION LIMIT 1720 REM E END OF DISCUSSION TIME 1730 REM F A COUNTER 1740 REM G1 IF G1 = 0 THEN OUTPUT IS "WAITING FOR A NEW SPEAKER" 1750 REM IF G1 = 1 THEN OUTPUT IS "CURRENT SPEAKER IS"... 1760 REM I A COUNTER 1770 REM L THE NUMBER OF THE PERSON WHO IS SPEAKING 1780 REM L$ THE CHARACTER THAT IS RETURNED BY INKEY$ 1790 REM M THE MINIMUM ELAPSED TIME 1800 REM N END OF TURN LIMIT (C + T) 1810 REM N1 A COUNTER 1820 REM N2 NUMBER OF PEOPLE 1830 REM N6$ AN ARRAY WITH NAMES OF PERSONS IN THE DISCUSSION 1840 REM P$ CAN BE "Y" OR "N". DETERMINES IF A PERSON WHO IS 1850 REM INTERUPTED GETS THROWN OUT OF THE QUE 1860 REM Q REQUEST TO SPEAK. IN Q(N) IS A NUMBER THAT SIGNIFIES 1870 REM IF PERSON N WANTS TO SPEAK (1) OR WANTS TO FINISH 1880 REM SPEAKING (0). 1890 REM R RESPONSE (1-9 = REQUEST, 0 = RELEASE) 1900 REM S START TIME 1910 REM S1 HAS TO DO WITH THE "CLOCK" 1920 REM S7 HAS ALSO TO DO WITH THE "CLOCK" 1930 REM S9 THE NUMBER OF THE PERSON WHO HAS THUS FAR SPOKEN THE 1940 REM LEAST OF THE PERSON WHO WANTS TO SPEAK 1950 REM T TURN LIMIT 1960 REM U IN U(N) IS THE TIME PERSON N HAS USED 1970 REM W$ TEXT THAT SHALL BE PRINTED ON THE SCREEN 1980 REM X$ THE NAME OF THE CURRENT SPEAKER 1990 REM Z$ INPUT OF RETURN 2000 REM =============================================== SUBROUTINE LOCATIONS 2010 REM 580 - 660 DIALOG SUBROUTINE 2020 REM 670 - 1080 SELECT SUBROUTINE 2030 REM 1090 - 1110 DISPLAY SUBROUTINE 2040 REM 1120 - 1280 COLLECT SUBROUTINE 2050 REM 1290 - 1330 CLEAR THE SCREEN SUBROUTINE 2060 REM 1340 - 1680 INSTRUCTIONS 2070 REM 1690 - 1990 VARIABLE NAMES 2080 REM 2000 - 2080 SUBROUTINE LOCATIONS |
| Response Title | Author and Date |
| thanks | on Nov 11 |
| *yw. | on Nov 11 |