home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Simtel MSDOS - Coast to Coast
/
simteldosarchivecoasttocoast2.iso
/
hamradio
/
contest.zip
/
CQSS.TB
< prev
next >
Wrap
Text File
|
1989-12-26
|
26KB
|
577 lines
'CQSS10 COPYRIGHT JOE KASSER G3ZCZ (C) 1989, 1990
' THESE ARE LOADED FROM DISK
' MClr=15:MClrBG=1 ' MENU
' PClr=14:PClrBG=4 ' PROMPT
' KClr=7 :KClrBG=5 ' KEY COLOR
' LClr=14:LClrBG=1 ' LOG WINDOW
' WClr=30:WcLRbg=4 ' WARNING (INC BLINK)
' QClr=15:QClrBG=4 ' STATUS
' JCLR=15:JCLRBG=5 ' STATUS VARIABLES
' Sect1=15:SectBG1=4: sect2=14:SectBG2=1: Sect3=13:SectBG3=0:
' Sect4=15:SectBG4=1: Sect5=14:SectBG5=2: Sect6=15:SectBG6=0:
' Sect7=15:SectBG7=2: Sect8=14:SectBG8=4: Sect9=14:SectBG9=1:
' Sect10=13:SectBG10=0: Sect11=15:SectBG11=4
PRL=17:LGL=3:TXL=18:QRUL=23 ' LINES ON WHICH THINGS HAPPEN
SCORER=19:SCOREC=47 ' SCORE LINES
DEF FNstring$(VALUE)
FMINUTE$="00"+STR$(VALUE):
FOR I=1 TO LEN(FMINUTE$)
IF MID$(FMINUTE$,I,1)=" " THEN MID$(FMINUTE$,I,1)="0"
NEXT
FNstring$=RIGHT$(FMINUTE$,2)
END DEF
BLANK$=" "
Bar$="════════════════════════════════════════════"
LClr=14:LClrBG=0:WClr=31:WcLRbg=1 ' ASSUME BEFORE LOADING
10 on error goto 8000
20 K=3000 'number of stations in contest
30 k1=0: color LClr,LClrBG: CLS: gosub 5900
40 Q4=19:K7=74:K6=66:L0$=BLANK$
50 N1=1:B1=100:B2=200:B3=300:B4=400:B5=500:
60 DIM L(7),L$(5),C$(K),C(K),S(K7),S$(K7),P$(4),Z$(Q4),B$(4),M$(5):
70 B$(0)="10":B$(1)="15":B$(2)="20":B$(3)="40":B$(4)="80":
80 P$(0)="W":P$(1)="K":P$(2)="WA":P$(3)="WB":P$(4)="N":Q$="QWERTYUIOPASDFGHJKLZXCVBNM"
90 Z$(0)="CALL":Z$(1)="LOG":Z$(2)="BAND ":Z$(3)="CHECK":X$=CHR$(7)
100 Z$(4)="COLOR":Z$(5)="BREAK":Z$(6)="QSL":E$=" DE ":SAVE$="CQSS.DAT"
110 Z$(8)="REPEAT":Z$(9)="QRT":Z$(13)="DUPLICATE":
120 M$(0)="NUMBER":M$(1)="POWER":M$(4)=Z$(3):M$(5)="SECTION"
130 M$(2)=Z$(0):H=21:D=19:R$=" !#*":D$="NOVEMBER":N=1968:K$="CK":
140 Z$(7)="SEND":Z$(10)="TUNE":Z$(11)="RESTORE":Z$(12)="SAVE":M$(3)=Z$(3)
230 Z$(14)=M$(5):Z$(15)="HELP":Z$(16)="CQ":Z$(17)="WORKED"
Z$(18)="+MORE":Z$(Q4)="DEBUG"
240 S$(0)="CT":S$(1)="EMASS":S$(2)="ME":S$(3)="NH":S$(4)="RI"
S$(5)="VT":S$(6)="WMASS":S$(7)="ENY":S$(8)="NY-LI":
S$(9)="NNJ":S$(10)="SNJ":S$(11)="WNY":S$(12)="DE":
S$(13)="E.PA":S$(14)="M.DC":S$(15)="W.PA":S$(16)="ALA":
S$(17)="GA":S$(18)="KY":S$(19)="NC":S$(20)="NFLA":
S$(21)="SC":S$(22)="SFLA":S$(23)="TN":S$(24)="VA":
S$(25)="WI":S$(26)="ARKS":S$(27)="LA":S$(28)="MISS":
S$(29)="NM":S$(30)="N.TEX":S$(31)="OK":S$(32)="S.TEX":
S$(33)="CZ":S$(34)="E BAY":S$(35)="LAX":S$(36)="ORGE":
S$(37)="SB":S$(38)="SCV":S$(39)="SDG":S$(40)="SF"
S$(41)="SJV":S$(42)="SV":S$(43)="PCF":S$(44)="AZ":
S$(45)="ID":S$(46)="MT":S$(47)="NV":S$(48)="ORGN":
S$(49)="UT":S$(50)="WA":S$(51)="ALSK":S$(52)="WY":
S$(53)="MI":S$(54)="OH":S$(55)="W VA":S$(56)="IL":
S$(57)="IN":S$(58)="WSC":S$(59)="CO":S$(60)="IA":
S$(61)="KS":S$(62)="MN":S$(63)="MO":S$(64)="NB":
S$(65)="NDK":S$(66)="SDK":S$(67)="MAR":S$(68)="QB":
S$(69)="ONT":S$(70)="MAN"
S$(71)="SK":S$(72)="AB":S$(73)="BC":S$(74)="NWT"
LOCATE 10,30: COLOR WCLR,WCLRBG: PRINT "QRX - LOADING CALLS"
301 open "CQSS.SS" for input as #1
INPUT#1, Mycall$
INPUT#1, MClr,MClrBG,PClr,PClrBG,KClr,KClrBG,LClr,LClrBG,WClr,WcLRbg,QClr,QClrBG,JCLR,JCLRBG
INPUT#1, Sect1,SectBG1,sect2,SectBG2,Sect3,SectBG3,Sect4,SectBG4,Sect5,SectBG5
INPUT#1, Sect6,SectBG6,Sect7,SectBG7,Sect8,SectBG8,Sect9,SectBG9,Sect10,SectBG10,Sect11,SectBG
FOR I=0 TO K
303 input#1, c$(i),c(i)
next:
305 CLOSE #1:PRINT: RANDOMIZE TIMER
gosub 5900
IF Mycall$ = "G3ZCZ" THEN GOTO 380 ELSE GOTO 395
380 LOCATE 5,1:INPUT "Are you a HAM Radio Operator";I$:IF LEFT$(I$,1)<>"Y" THEN 420
390 INPUT "Your Call";Mycall$: if Mycall$ = "" then 390
395 FOR I = 1 TO LEN(Mycall$): IF MID$(Mycall$,I,1) = "3" THEN 400 ELSE NEXT
IF RIGHT$(Mycall$,2)<>"/3" THEN Mycall$=Mycall$+"/3"
400 INPUT "Year First Licensed (19XX) ";N
410 IF N<1900 THEN PRINT "YOU MUST HAVE BEEN LICENSED BEFORE 1900":GOTO 400
420 F$=STR$(N-1900): print:
PRINT "The Station CALL is ";Mycall$:PRINT "The QTH is Silver Spring, Maryland ":
PRINT : PRINT
440 INPUT "DO YOU NEED INSTRUCTIONS ";I$:IF LEFT$(I$,1)="Y" THEN GOSUB 3300
N=1:gosub 500:PRINT "THE CONTEST HAS STARTED"+X$:GOSUB 5800: GOTO 1050
' MAIN LOOP
500 color LClr,LClrBG
gosub 5900:GOSUB 4000:GOSUB 1170:GOSUB 9930:GOSUB 5020:GOSUB 5800
RETURN
700 color MClr,MClrBG
IF N>=K THEN 2010
LOCATE QRUL+1 ,1:PRINT "BAND ";
COLOR JClr,JClrBG: PRINT BI$;
color MClr,MClrBG:PRINT " NEXT QSO=";
COLOR JClr,JClrBG: PRINT N;
color MClr,MClrBG:print " TIME (GMT) ";
COLOR JClr,JClrBG:PRINT FNstring$(H);":";FNstring$(M);
color MClr,MClrBG:PRINT " ELAPSED ";
COLOR JClr,JClrBG:PRINT FNstring$(H1);":";FNstring$(M1);
color MClr,MClrBG:PRINT " C-DUPS ";
COLOR JClr,JClrBG: PRINT Ndupes;
color MClr,MClrBG:PRINT " C-LID ";
COLOR JClr,JClrBG: PRINT Nlids;
color MClr,MClrBG
710 IF Q1=0 AND RND(1)<0.1 THEN 2930
720 IF H1>24 OR D>=21 AND H>20 THEN PRINT "CONTEST IS OVER":GOTO 1480
730 color MClr,MClrBG:LOCATE QRUL,1:PRINT BLANK$:LOCATE QRUL,1
INPUT "QRU";I$:IF LEN(I$)<2 THEN PRINT "WHAT"+X$;:GOTO 730
735 FOR I=1 TO LEN(I$)
IF MID$(I$,I,1)=" " THEN I$=LEFT$(I$,I-1)::GOTO 740
NEXT
740 FOR I=0 TO Q4:IF I$=LEFT$(Z$(I),LEN(I$)) THEN 760
750 NEXT:I=15
760 GOSUB 5800
IF I>8 THEN ON I-8 GOTO 1480,1490,4600,4500,1980,3270,1340,930,1750,925,1730
770 ON I GOTO 840,1040,1090,1140,1240,1300,1350,1450
780 Q6=0:ON Q1 GOTO 800,1670,1700,1620
790 GOSUB 4400:color WClr,WClrBG:PRINT "CALL WHOM ?"+X$:
GOSUB 4400:PRINT "TRY TUNING OR PUT OUT A CQ":GOTO 700
800 IF L(7)=0 AND RND(1)>.5 THEN 1030
810 color WClr,WClrBG:PRINT "TRY SEND OR REPEAT, DON'T WASTE TIME";X$:GOTO 700
820 IF L(6)=0 AND RND(1)<0.1 THEN PRINT "REPEAT PLEASE":GOTO 700
830 Q1=0:GOTO 700
840 IF C(P)>K7 THEN color WClr,WClrBG:PRINT x$+"IN THE LOG ALREADY":GOSUB 4710:GOTO 700
850 IF Q5=0 THEN color WClr,WClrBG:PRINT X$ +"SEND HIM HIS REPORT FIRST":GOSUB 4700:GOTO 730
860 FOR I=0 TO 7:IF L(I)=0 THEN I=1:GOSUB 1580:GOTO 700
870 Q7=0:NEXT:Y=C(P):N=N+1
880 IF Y>K7 THEN Y=Y-B:GOTO 880
GOSUB 5000:GOSUB 5800
890 Y3=S(Y):S(Y)=1:C(P)=C(P)+B:
IF Y3=0 AND S(Y)=1 THEN GOSUB 4200 'ONLY UPDATE IF NEW ONE
GOSUB 920:Q1=0:GOSUB 1170:GOSUB 5800
900 IF Q6=1 AND RND(1)>.5 OR RND(1)<0.1 THEN 930
910 GOTO 700
920 Q5=0:FOR I=0 TO 7:L(I)=0:NEXT:RETURN
925 ' show keys
IF K1=1 THEN K1=0 ELSE K1=1
gosub 9930:goto 700
930 Q6=1:Y=24:GOSUB 1770: IF Y5=0 THEN 700 'CQ
940 IF RND(1)<0.1 THEN GOSUB 4400:PRINT "FREQUENCY IS IN USE OM":GOTO 700
950 IF RND(1)<0.1 OR B=B4 AND H>=20 AND RND(1)>.5 THEN GOSUB 4400:PRINT R$;" QRM ";R$:GOTO 700
960 IF Q7=0 THEN GOSUB 1970
970 IF Q7=1 AND Q1=1 THEN N1=N1+1
980 GOSUB 1900:Q1=1:GOSUB 4400:PRINT Mycall$;E$;C$(P):L(2)=1
990 IF C(P)>K7 AND Q6=1 AND RND(1)< 0.2 THEN 700
1000 IF C(P)>K7 AND Q6=1 THEN 1020
1010 IF C(P)>K7 AND RND(1)>.5 THEN GOSUB 4400:PRINT "WE'VE WORKED OM !":GOTO 700
1020 IF RND(1)>.5 THEN 700
1030 J$=Mycall$:GOSUB 1860: GOTO 700
1040 ' CHANGE BAND
1050 color MClr,MClrBG:LOCATE QRUL,1:PRINT BLANK$:LOCATE QRUL,1:INPUT "WHICH BAND ";BI$:
FOR I=0 TO 4:IF BI$=B$(I) THEN 1070
1060 NEXT:COLOR WCLR, WCLRBG: LOCATE TXL+3,2:PRINT "ONLY WORKING 10, 15, 20, 40 and 80" : GOTO 1050
1070 GOSUB 5800: IF B=(1+I)*B1 THEN 700
1080 B=(1+I)*B1:GOSUB 920:GOTO 700
1090 COLOR wCLR, WCLRbg:IF L(2)=0 AND L(5)=0 THEN PRINT "CHECK WHAT":GOTO 700
1100 IF C(P)>=B1 THEN GOSUB 4400:PRINT C$(P);" WORKED ON ";B$(INT(C(P) / B1)-1):GOTO 700
1110 Y=C(P):
1115 IF Y>=B1 THEN Y=Y-B1:GOTO 1115
1120 IF L(5)=1 THEN GOSUB 4400:PRINT "SECTION " ;:IF S(Y)=1 THEN PRINT "WORKED":GOTO 700
1130 PRINT "NOT WORKED YET":GOTO 700
1140 'VIEW COLOR COMBINATIONS
COLOR 15,0: cls
LOCATE 2,2 :PRINT "COLOR COMBINATIONS, FOREGROUND,BACKGROUND NUMBERS"
for i = 0 to 15: for j = 0 to 8
color i, j :LOCATE I+4,1+J*6:print I;j;:
next j:print:next i: COLOR 31,0
PRINT:PRINT"ADD 16 TO FOREGROUND FOR BLINKING":PRINT:COLOR 15,0
GOSUB 3900:GOSUB 500:GOTO 700
1170 COLOR QCLR,QClrBG
LOCATE SCORER,SCOREC: PRINT "╔═══════════ STATUS ═══════════╗"
LOCATE SCORER+1,SCOREC:print "║ QSO'S SECTIONS SCORE ║"
LOCATE SCORER+2,SCOREC:print "║ ║"
LOCATE SCORER+2,SCOREC+2:PRINT N-1 ;
Y9=0:FOR J=0 TO K7:IF S(J)=1 THEN Y9=Y9+1
NEXT:LOCATE SCORER+2,SCOREC+14:PRINT Y9
LOCATE SCORER+2,SCOREC+ 22:PRINT 2*(N-1)*Y9 ;:
LOCATE SCORER+3,SCOREC:print "║ RATE ║"
LOCATE SCORER+3,SCOREC+10
IF H1=0 AND M1=0 THEN PRINT "-"; ELSE PRINT INT((N-1)*60/(H1*60+M1)) ;
PRINT "QSO'S/HOUR"
LOCATE SCORER+4,SCOREC: print"╚══════════════════════════════╝";
RETURN
1240 color MClr,MClrBG:
LOCATE QRUL,1:PRINT BLANK$:LOCATE QRUL,1:INPUT "HOURS ";H2: IF H2<0 THEN 1240
1245 LOCATE QRUL,1:PRINT BLANK$:LOCATE QRUL,1:INPUT "MINUTES ";Y: IF Y<0 THEN 1245
IF H2=0 AND Y=0 THEN GOTO 700
IF H2=0 AND Y<15 THEN I=5:GOSUB 1580:GOTO 1240
1250 IF H2>=24 OR Y>=60 THEN GOSUB 1290:IF LEFT$(I$,1)<>"Y" THEN 1240
1260 M=M+Y:IF M>=60 THEN M=M-60:H=H+1
1270 H=H+H2:IF H>=24 THEN H=H-24:D=D+1
1280 GOSUB 920:Q1=0:GOTO 700
1290 GOSUB 4400:color WClr,WClrBG:
INPUT "ARE YOU SURE YOU MEANT THAT";I$:RETURN
1300 IF L(7)=1 THEN GOSUB 4400:PRINT "73, SEE YOU LATER":GOTO 700
1310 IF RND(1)>0.1 THEN L(7)=1:GOSUB 4400:PRINT "ROGER":GOTO 700
1320 IF RND(1)>=0.1 THEN GOSUB 4400:PRINT "DO YOU QSL ?"
1330 GOTO 700
1340 GOSUB 3300:gosub 500:GOTO 700
1350 COLOR wCLR, WCLRbg:' ME SENDING
IF L(2)=0 OR Q1=0 THEN PRINT X$+"TO WHOM":GOTO 700
1360 IF Q1<>1 THEN PRINT "TUT TUT-CALL HIM FIRST";X$:GOTO 700
COLOR PClr, PClrBG: GOSUB 4400:
1370 GOSUB 4400:PRINT L$(2);" UR";N ;:PRINT "A";E$;Mycall$ ;:PRINT " ";K$;" ";F$;" MD K"
1380 GOSUB 4400:IF RND(1)<0.1 THEN PRINT Mycall$;" PLEASE REPEAT";E$;C$(P):GOTO 700
1390 Q5=1:L(6)=1:IF L(7)=1 THEN PRINT "QSL":GOTO 700
1400 IF RND(1)>.5 THEN J$=Mycall$:GOSUB 1860:GOSUB 4400:PRINT "DO YOU QSL ?"
1410 GOTO 700
1450 IF Q1<>1 THEN COLOR WCLR,WCLRBG:PRINT "CALL HIM FIRST"+X$:GOTO 700
1460 IF RND(1)>0.1 THEN J$=Mycall$:GOSUB 1860:GOTO 700
1470 GOSUB 4400:PRINT "SORRY OM, QRM ... TRY AGAIN":GOTO 700
1480 GOTO 3500 ' CONTEST IS OVER
1490 IF B<400 AND H>16 AND RND(1)<0.1 THEN GOSUB 3110:GOTO 700
1500 IF RND(1)>=.6 AND B=B4 AND (H>=20 OR H<6) THEN GOSUB 3170:GOTO 700
1510 GOSUB 920:Q1=0:Y=26:GOSUB 1770:IF Y5=0 THEN 700
1520 L(2)=1:Q1=INT(RND(1)*3)+2:ON Q1 GOTO 1530,1540,1550
1530 GOSUB 4400:PRINT "QRZ";E$;C$(P):GOTO 700
1540 FOR T=0 TO INT(RND(1)*3):GOSUB 4400:PRINT "CQ CQ CQ";E$ ;C$(P):NEXT:PRINT: GOTO 700
1550 GOSUB 1810:GOSUB 4400:PRINT C$(K);E$;C$(P):IF RND(1)>.5 THEN 700
1560 Q7=1:GOSUB 1970
1570 GOSUB 1900:J$=C$(K):GOSUB 1860:GOTO 700
1580 COLOR WCLR,WCLRBG:GOSUB 4400:PRINT "THAT'S AGAINST THE RULES"; X$:GOSUB 4400:
1590 IF I=1 THEN PRINT "QSO NOT COMPLETED"
1600 IF I=5 THEN PRINT "15 MINUTE MINIMUM"
1610 GOSUB 4700:RETURN
1620 IF RND(1)>.5 THEN 1850
1630 IF Q7=1 AND RND(1)>.5 THEN 970
1640 IF RND(1)>.5 THEN Q1=2:GOTO 1530
1650 GOSUB 4400:IF RND(1)<.5 THEN PRINT "PLEASE, I'M IN QSO":GOTO 700
1660 PRINT C$(K);E$;C$(P);" SORRY QRM, REPEAT":GOTO 700
1670 IF RND(1)>.5 THEN 1530
1680 IF RND(1)<0.1 THEN Q1=3:GOTO 1540
1690 Q1=1:GOTO 960
1700 IF RND(1)>.5 THEN 1540
1710 IF RND(1)>.5 THEN Q1=2:GOTO 1530
1720 Q1=1:GOTO 960
1730 CLS:I = 0:FOR J=0 TO K:PRINT C$(J);C(j);:IF C(J)>K7 THEN PRINT "*" ;: I = I+1
PRINT,:NEXT:PRINT:PRINT I: PRINT: GOSUB 3900:GOSUB 500:GOTO 700
1750 CLS:i = 0: FOR J=0 TO K '- 1:
IF C(J)>K7 THEN PRINT C$(J);C(j), : i = i+1
1760 NEXT:print:print i: print:GOSUB 3900:PRINT:GOSUB 500:GOTO 700
1770 Y=RND(1)*Y+4:FOR T=0 TO 2:GOSUB 2860:GOSUB 2820:GOSUB 2030
1780 IF Y5=0 OR RND(1)<.1 THEN NEXT:GOTO 1800
1790 IF Y5=1 THEN GOSUB 1900
1800 RETURN
1810 I=K:T=INT(RND(1)*3+2):J$=P$(INT(RND(1)*3))
1820 C$(I)=J$+RIGHT$(STR$(T),1):GOSUB 2920:GOSUB 2920:GOSUB 2920
1830 IF C$(I)=Mycall$ THEN 1810
1840 RETURN
1850 GOSUB 1810:J$=C$(K):GOSUB 1860:N1=N1+1:Q7=1:GOTO 700
1860 L$(0)= STR$(N1):
L(7)=1:GOSUB 4400:PRINT J$;" UR" ;:
1870 FOR J=0 TO 5:IF L(J)=1 OR RND(1)>=0.1 THEN L(J)=1:PRINT " ";L$(J) ;:GOTO 1890
1880 PRINT R$ ;
1890 NEXT:PRINT: RETURN
1900 FOR J=1 TO 26:IF RIGHT$(C$(P),1)<>MID$(Q$,J,1) THEN NEXT
1910 L$(1)="A":IF J>=12 THEN L$(1)="B"
1920 Y8=0:FOR J=1 TO 3:Y8=Y8+ASC(MID$(RIGHT$(C$(P),3),J,1)):NEXT
1930 L$(4)=STR$(INT(Y8/2-57)):L$(0)=STR$(N1)
1940 L$(2)=C$(P):L$(3)=K$:Y=C(P)
1950 IF Y>=B1 THEN Y=Y-B1:GOTO 1950
1960 L$(5)=S$(Y):RETURN
1970 N1=1+INT(N*1.2*RND(1)):RETURN
1980 IF RND(1)<0.1 THEN 700
1990 IF RND(1)>.5 THEN GOSUB 4400:PRINT "SORRY"
2000 Q1=0:GOTO 900
2010 COLOR WCLR,WCLRBG: GOSUB 4400:PRINT "ANTENNA BLEW DOWN IN WIND"
2020 GOSUB 4400:PRINT "NO WAY TO FIX IT - QRT":GOTO 1480
2030 IF C(P)<B1 THEN 2070
2040 X1=C(P)
2050 C(P)=C(P)-B1:IF C(P)>=B1 THEN 2050
2060 GOSUB 2070: C(P)=X1: RETURN
2070 Y5=0:IF C(P)=14 OR C(P)=24 THEN 2810
2080 IF C(P)<8 THEN 2230
2090 IF C(P)<12 THEN 2280
2100 IF C(P)<16 THEN 2310
2110 IF C(P)=25 THEN 2710
2120 IF C(P)<25 THEN 2340
2130 IF C(P)=33 THEN 2750
2140 IF C(P)<33 THEN 2380
2150 IF C(P)=43 THEN 2640
2160 IF C(P)<43 THEN 2420
2170 IF C(P)=51 THEN 2640
2180 IF C(P)<53 THEN 2480
2190 IF C(P)<56 THEN 2530
2200 IF C(P)<59 THEN 2550
2210 IF C(P)<67 THEN 2580
2220 ON C(P)-67 GOTO 2280,2530,2550,2580,2480,2480,2480
2230 IF B=B4 OR B=B5 AND H<12 OR B=B3 AND H>=20 AND RND(1)>.5 THEN 2810
2240 IF B=B3 AND (H<20 AND H>=12 OR RND(1)>.5 AND H>=8) THEN 2810
2250 IF B=B2 AND (H>=20 OR H>=8 AND H<12) AND RND(1)<0.1 THEN 2810
2260 IF B=B1 AND (H>=12 AND Q=2 AND H<20 OR H>=20 AND RND(1)>.5) THEN 2810
2270 RETURN
2280 IF B=B3 AND (H>=8 AND H<12 OR H>=20) AND RND(1)>.5 THEN 2810
2290 IF B>=B4 OR B=B1 AND Q=1 AND RND(1)<.5 AND H<16 AND H>=12 THEN 2810
2300 RETURN
2310 IF B=B5 OR B=B4 AND H<8 AND RND(1)>.5 THEN 2810
2320 IF B=B4 AND (H>=20 OR H>=8 AND H<12) THEN 2810
2330 RETURN
2340 IF B=B4 OR B=B3 AND H>=8 OR B=B1 AND Q=3 AND H>=12 AND RND(1)>.5 THEN 2810
2350 IF B=B2 AND H<20 AND H>=12 AND RND(1)>.5 THEN 2810
2360 IF B=B5 AND H<16 OR (H>=20 OR H<12) AND RND(1)>.5 THEN 2810
2370 RETURN
2380 IF B<B4 AND H>=12 AND H<20 OR B=B4 AND H<8 THEN 2810
2390 IF B=B5 AND (H<8 AND H>=4 OR H<4 AND RND(1)>.5) THEN 2810
2400 IF RND(1)>.5 AND (H>=20 OR H>=8 AND H<12) THEN 2810
2410 RETURN
2420 IF H<8 AND H>=12 AND RND(1)<0.1 THEN 2810
2430 IF B<B4 AND H>=12 AND H<20 OR B>=B3 AND H<8 AND H>=4 THEN 2810
2440 IF H>=20 AND B<B3 AND RND(1)>.5 THEN 2810
2450 IF H>=20 AND (B=B3 OR B=B4 AND RND(1)<0.1) THEN 2810
2460 IF H<4 AND (B=B4 OR B=B5 AND RND(1)>.5) THEN 2810
2470 RETURN
2480 IF B<B4 AND H<20 AND H>=12 THEN 2810
2490 IF H>=20 AND B>B1 AND B<B5 AND RND(1)>.5 THEN 2810
2500 IF B=B4 AND (H<8 OR H>=20 AND RND(1)>.5) THEN 2810
2510 IF B=B5 AND (H<8 AND H>=4 OR H<4 AND RND(1)>.5) THEN 2810
2520 RETURN
2530 IF B=B5 OR B=B4 AND (H>=8 OR RND(1)>.5) THEN 2810
2540 RETURN
2550 IF B=B4 OR B=B5 AND (H<8 OR RND(1)>.5 AND H<12 OR H>=20) THEN 2810
2560 IF B=B3 AND H>=12 AND H<20 THEN 2810
2570 RETURN
2580 IF B>B3 AND H<8 OR H<12 AND RND(1)>.5 THEN 2810
2590 IF B=B1 AND Q=5 AND H>=12 AND RND(1)>.5 THEN 2810
2600 IF B=B2 AND H<20 AND H>=12 AND RND(1)>.5 THEN 2810
2610 IF B=B3 AND (H<20 AND H>=12 OR H>=20 AND RND(1)>.5) THEN 2810
2620 IF H>=20 AND (B=B4 AND RND(1)>.5 OR B=B5 AND RND(1)<0.1) THEN 2810
2630 RETURN
2640 IF B<B4 AND H<20 AND H>=16 THEN 2810
2650 IF B=B3 AND (H>=12 AND RND(1)>.5 OR H>=8 AND H<12 AND RND(1)<0.1) THEN 2810
2660 IF B=B1 AND H>=12 AND (H<20 OR RND(1)>.5) THEN 2810
2670 IF B=B2 AND (H<16 AND H>=12 AND RND(1)>.5 OR H>=20 AND RND(1)<0.1) THEN 2810
2680 IF B=B4 AND H<8 AND (H>=4 OR RND(1)>.5) THEN 2810
2690 IF B=B5 AND H>=4 AND H<8 AND RND(1)>.5 THEN 2810
2700 RETURN
2710 IF B=B5 AND H<8 OR B<B4 AND H>=8 AND H<20 THEN 2810
2720 IF H>=20 AND (B=B1 AND RND(1)>.5 OR B=B2 OR B=B3) THEN 2810
2730 IF B=B4 AND (H>=4 AND H<8 OR H<4 AND RND(1)<0.1) THEN 2810
2740 RETURN
2750 IF B<B3 AND H<20 AND (H>=12 AND H<16 OR H>=8 AND RND(1)>.5) THEN 2810
2760 IF H>=20 AND (B=B2 OR B=B4) AND RND(1)>.5 THEN 2810
2770 IF H>=16 AND B=B3 OR B=B4 AND H<8 THEN 2810
2780 IF B=B4 AND RND(1)>.5 AND H<12 THEN 2810
2790 IF B=B5 AND H<8 AND (H>=4 OR RND(1)>.5) THEN 2810
2800 RETURN
2810 Y5=1:RETURN
2820 P=INT(RND(1)*K)*(INT(RND(1)*10)):FOR P9 = 1 TO 5:P=P+INT(RND(1)*K):NEXT
2830 IF P>K THEN P=P-K :GOTO 2830
2840 IF B=B1 AND RND(1)>0.01 THEN Q=Q+INT(RND(1)+4):IF Q>5 THEN Q=Q-5
2850 RETURN
2860 S1=S1+Y:IF S1<60 THEN RETURN
2870 S1=S1-60:M1=M1+1:M=M+1:IF S1>=60 THEN 2870
2880 IF M>=60 THEN M=M-60:H=H+1:GOTO 2880
2890 IF M1>=60 THEN M1=M1-60:H1=H1+1:GOTO 2890
2900 IF H<24 THEN RETURN
2910 H=H-24:D=D+1:RETURN
2920 I$=MID$(Q$,INT(RND(1)*26)+1,1):C$(I)=C$(I)+I$:RETURN
2930 IF RND(1)>0.05 THEN 700
2935 IF RND(1)>0.5 THEN 700
2940 X3=INT(RND(1)*10)+1:GOSUB 5800:COLOR WCLR, WCLRBG: GOSUB 4400:
2950 ON X3 GOTO 2960,2970,2980,2960,2960,2960,2960,2960,3070,3020,2960
2960 PRINT "TIMEOUT IN THE BATHROOM":Y=20:GOTO 2990
2970 PRINT "TIMEOUT TO CLEAR UP SPILT COFFEE":Y=5:GOTO 2990
2980 PRINT "KIDS ARE FIGHTING..TIMEOUT":Y=16
2990 GOSUB 4400:Y=INT(RND(1)*Y)+3:
COLOR PClr, PClrBG:PRINT "OFF THE AIR FOR ";Y;" MIN"
3000 IF Y>14 THEN H2=0:GOTO 1260
3010 Y=Y*60:GOSUB 2860:GOTO 700
3020 IF RND(1)*10<.5 THEN 2010
3030 GOSUB 4400:PRINT "POWER LINE BLACKOUT":H2=INT(RND(1)*5):Y=INT(RND(1)*24)+8
3040 COLOR PClr, PClrBG:GOSUB 4400::PRINT "POWER CAME BACK ON AFTER ";H2;" HRS";Y;" MIN"
3050 IF H2=0 AND Y<15 THEN Y=Y*60:GOSUB 2860:GOTO 700
3060 GOTO 1260
3070 GOSUB 4400:PRINT "FINAL TUBES BLEW OUT":COLOR PClr, PClrBG:
3090 GOSUB 4400::PRINT "LUCKY YOU, SPARES ARE TO HAND "
3100 GOSUB 4400::PRINT "REPLACING THEM NOW":Y=60:GOTO 2990
3110 I$="YV4":IF RND(1)>.5 THEN I$="HK3"
GOSUB 3160:GOSUB 3160:GOSUB 3160:
3120 J$="MIAMI":IF RND(1)>.5 THEN J$="LOS ANGELES" ELSE IF RND(1)>.3 THEN J$="WASHINGTON DC"
3130 GOSUB 4400:PRINT "CQ CQ CQ DE ";
3140 GOSUB 4400:PRINT "THIS IS ";I$;" LOOKING FOR A PHONE PATCH"
GOSUB 4400:PRINT "INTO ";J$
3150 RETURN
3160 I$=I$+MID$(Q$,INT(RND(1)*26)+1,1):RETURN
3170 X3=INT(RND(1)*4):
IF RND(1)>.5 THEN BBC$="THIS IS " ELSE BBC$="YOU ARE LISTENING TO "
3190 ON X3 GOTO 3210,3220,3230
3200 BBC$=BBC$+"RADIO MOSCOW":GOTO 3240
3210 BBC$=BBC$+ "RADIO PEKING":GOTO 3240
3220 BBC$=BBC$+ "RADIO ALBANIA":GOTO 3240
3230 BBC$=BBC$+ "THE BBC":
3240 GOSUB 4400:PRINT BBC$:GOSUB 4400:
IF RND(1)<0.2 THEN PRINT "THIS IS RADIO NEWSREEL":GOTO 3260
IF RND(1)>.5 THEN PRINT "A NEWS BROADCAST FOLLOWS":GOTO 3260
3250 IF RND(1)>.5 THEN GOTO 3260
GOSUB 4400:PRINT "YOU HAVE BEEN LISTENING"
GOSUB 4400:PRINT "TO A COMMENTARY ON THE NEWS"
3260 RETURN
3270 GOSUB 4000:GOTO 700 ' REDISPLAY SECTION WINDOW
3300 CLS:PRINT Z$(0),"CALL OTHER STATION"
3310 PRINT Z$(1),"ENTER CONTACT IN LOG"
3320 PRINT Z$(2),"CHANGE BANDS"
3330 PRINT Z$(3),"CHECK TO SEE IF WORKED"
3340 PRINT Z$(4),"VIEW COLOR COMBINATIONS FOR CUSTOMISING"
3350 PRINT Z$(5),"TAKE A BREAK (TIMEOUT)"
3360 PRINT Z$(6),"CONFIRM RECEPTION OF CONTEST DATA "
3370 PRINT Z$(7),"SEND YOUR DATA TO OTHER STATION"
3380 PRINT Z$(8),"REQUEST REPEAT OF OTHER STATION'S DATA "
3390 PRINT Z$(9),"GIVE UP AND SWITCH OFF EQUIPMENT"
3400 PRINT Z$(10),"TUNE ACROSS BAND "
3410 PRINT Z$(11),"RESTORE SAVED GAME"
3420 PRINT Z$(12),"SAVE STATE of CONTEST GAME"
3430 PRINT Z$(13),"TELL OTHER STATION THAT YOU HAVE WORKED BEFORE"
3440 ' PRINT Z$(14),"LIST SECTIONS STILL NEEDED"
3450 PRINT Z$(15),"RECEIVE SUMMARY OF INSTRUCTIONS"
3460 PRINT Z$(16),"CALL ";Z$(16)
3470 PRINT ' Z$(17),"LIST OF STATIONS WORKED (UNSORTED)"
3480 ' PRINT "YOU MAY TYPE FIRST TWO LETTERS FOR ALL ENTRIES, EXCEPT",
3490 ' PRINT Z$(14);" (TYPE 3)":
PRINT:GOSUB 3900:RETURN
3500 GOSUB 4400 :PRINT "HOPE YOU ENJOYED THE CONTEST":goto 9999
3900 INPUT "PUSH ENTER TO CONTINUE "; DUMMY$:RETURN
4000 ' show sections
color LClr,LClrBG:joel=2:joes=48:
locate joel,joes-1:print "╔══════ SECTIONS NEEDED ═══════╗"
joel=joel+1
FOR JOE=0 TO k7 STEP 5
color LClr,LClrBG:
locate joel,joes-1:print "║ ║"
locate joel,joes:JoeQ=joe:GOSUB 4100
locate joel,joes+6:JoeQ=joe+1:GOSUB 4100
locate joel,joes+12:JoeQ=joeq+1:GOSUB 4100
locate joel,joes+18:JoeQ=joeq+1:GOSUB 4100
locate joel,joes+24:JoeQ=joeq+1:GOSUB 4100
joel=joeL +1
next joe
color LClr,LClrBG:
locate joeL,joes-1:print"╚══════════════════════════════╝";
return
4100 ' CHANGE COLORS
IF JOEQ=0 THEN DCLR=Sect1:DCLRBG=SectBG1
IF JoeQ=7 THEN DcLR=Sect2:DclrBG=SectBG2
IF JoeQ=12 THEN DcLR=Sect3:DclrBG=SectBG3
IF JoeQ=16 THEN DcLR=Sect4:DclrBG=SectBG4
IF JoeQ=26 THEN DcLR=Sect5:DclrBG=SectBG5
IF JoeQ=34 THEN DcLR=Sect6:DclrBG=SectBG6
IF JoeQ=44 THEN DcLR=Sect7:DclrBG=SectBG7
IF JoeQ=53 THEN DcLR=Sect8:DclrBG=SectBG8
IF JoeQ=56 THEN DcLR=Sect9:DclrBG=SectBG9
IF JoeQ=59 THEN DcLR=Sect10:DclrBG=SectBG10
IF JoeQ=67 THEN DcLR=Sect11:DclrBG=SectBG11
COLOR DcLR, DclrBG
IF S(JoeQ)=1 THEN PRINT " "; ELSE print LEFT$(S$(JoeQ)+" ",6);
RETURN
4200 ' Y=SECTION NUMBER SHOW JUST SECTION NUMBER
DCLR=Sect1:DCLRBG=SectBG1
IF Y>=34 THEN DcLR=Sect2:DclrBG=SectBG6:GOTO 4220
IF Y>=12 THEN DcLR=Sect2:DclrBG=SectBG3:GOTO 4210
IF Y>=7 THEN DcLR=Sect2:DclrBG=SectBG2
GOTO 4250
4210 IF Y>=26 THEN DcLR=Sect2:DclrBG=SectBG5:GOTO 4250
IF Y>=16 THEN DcLR=Sect2:DclrBG=SectBG4
GOTO 4250
4220 IF Y>=56 THEN DcLR=Sect2:DclrBG=SectBG9 :GOTO 4240
IF Y>=53 THEN DcLR=Sect2:DclrBG=SectBG8:GOTO 4250
IF Y>=44 THEN DcLR=Sect2:DclrBG=SectBG7
GOTO 4250
4240 IF Y>=67 THEN DcLR=Sect2:DclrBG=SectBG11:GOTO 4250
IF Y>=59 THEN DcLR=Sect2:DclrBG=SectBG10
4250 COLOR DcLR, DclrBG
joel=3:joes=48:Y1=INT(Y/5):Y2=Y-Y1*5
JOEL=Y1 +JOEL:JOES=JOES+(6*Y2)
locate joel,joes:PRINT " ";
RETURN
4400 ' position cursor
row=csrlin : col=2+posn : locate row,col: return
4500 ' save
4510 color PClr,PClrBG:LOCATE QRUL,1:PRINT BLANK$:LOCATE QRUL,1
print "Save Game to what file ("+SAVE$+") ";: INPUT SAVE1$
IF SAVE1$ <> "" THEN SAVE$ = SAVE1$
IF SAVE$ = "" THEN 700
COLOR WCLR, WCLRBG:LOCATE TXL+2,10:PRINT "QRX - SAVING GAME";
open "O" ,#2, SAVE$
WRITE#2, Ndupes,NLIDS
for i=0 to k7:write#2, s(i):next
for i=0 to k:write#2, c(i):next
write #2, d,h1,m1,h,m,n,n1,b,BI$
write #2, L0$,L1$,L2$,L3$,L4$,L5$,L6$,L7$,L8$,L9$,L10$,L11$,L12$,L13$
close#2 : LOCATE TXL+2,10:PRINT " ";
goto 700
4600 ' RESTORE
color PClr,PClrBG:LOCATE QRUL,1:PRINT BLANK$:LOCATE QRUL,1
PRINT "Restore Game from what file ("+SAVE$+") ";: INPUT SAVE1$
IF SAVE1$ <> "" THEN SAVE$ = SAVE1$
IF SAVE$ = "" THEN 700
COLOR WCLR, WCLRBG:LOCATE TXL+2,10:PRINT "QRX - RESTORING GAME";
open "I" ,#3,SAVE$
INPUT#3, Ndupes,NLIDS
for i=0 to k7:INPUT#3, s(i):next
for i=0 to k:INPUT#3, c(i):next
INPUT#3, d,h1,m1,h,m,n,n1,b,BI$
INPUT#3, L0$,L1$,L2$,L3$,L4$,L5$,L6$,L7$,L8$,L9$,L10$,L11$,L12$,L13$
close#3
GOSUB 500:goto 700
4700 nlids=Nlids+1:RETURN ' LID COUNT
4710 Ndupes=Ndupes+1:RETURN ' DUP ATTEMPT
5000 ' LOGGING UPDATES
L0$=BLANK$:DAY$=STR$(D):
MID$(L0$,1)="68/11/"+ FNstring$(D) ' RIGHT$(DAY$,2)
MID$(L0$,10)=FNstring$(H)+":"+FNstring$(M)
MID$(L0$,16)=BI$:
L00$ = RIGHT$(" 000" + STR$(N1),4):
' L00$ = RIGHT$(L00$,4):
FOR I5=1 TO 4
IF MID$(L00$,I5,1)=" " THEN MID$(L00$,I5,1)="0"
NEXT : IF LEFT$(L00$,1)="0" THEN MID$(L00$,1,1)=" "
MID$(L0$,19)=L00$:
MID$(L0$,23)=L$(1): MID$(L0$,25)=C$(P):
MID$(L0$,35)=L$(4): MID$(L0$,39)=S$(Y)
L13$=L12$:L12$=L11$:L11$=L10$:L10$=L9$:L9$=L8$:L8$=L7$:L7$=L6$:
L6$=L5$:L5$=L4$:L4$=L3$:L3$=L2$:L2$=L1$:L1$=L0$:
5020 COLOR LClr,LClrBG
LOCATE 2,1:PRINT "╔══════════════ LOG ENTRIES ═════════════════╗"
I=3:GOSUB 5780:PRINT L13$:I=I+1:GOSUB 5780:PRINT L12$:
I=I+1:GOSUB 5780:PRINT L11$:I=I+1:GOSUB 5780:PRINT L10$
I=I+1:GOSUB 5780:PRINT L9$:I=I+1:GOSUB 5780:PRINT L8$:
I=I+1:GOSUB 5780:PRINT L7$:I=I+1:GOSUB 5780:PRINT L6$
I=I+1:GOSUB 5780:PRINT L5$:I=I+1:GOSUB 5780:PRINT L4$:
I=I+1:GOSUB 5780:PRINT L3$:I=I+1:GOSUB 5780:PRINT L2$
I=I+1:GOSUB 5780:PRINT L1$:
LOCATE 16,1:PRINT"╚"; BAR$;"╝";
RETURN
5780 LOCATE I,1:PRINT "║";BLANK$;"║":LOCATE I,2:RETURN
5800 COLOR PClr, PClrBG:
LOCATE TXL-1,1:PRINT "╔"; BAR$;"╗"
PRINT "║";BLANK$;"║"
PRINT "║";BLANK$;"║"
PRINT "║";BLANK$;"║"
PRINT "║";BLANK$;"║"
LOCATE txl +4,1:print"╚"; BAR$;"╝";
LOCATE TXL,2
RETURN
5900 color LClr,LClrBG:cls:LOCATE 1,10:
PRINT "PC-HAM SWEEPSTAKES CONTEST Version 3.3 (c) G3ZCZ 1990"
return
8000 COLOR WCLR, WCLRBG:LOCATE TXL+2,10:
if erl=301 THEN print "FILE CALLS.SS MISSING"
if erl=303 then PRINT "ERROR READING CALLS.SS"
if erl=305 then PRINT "ERROR CLOSING CALLS.SS"
IF ERL=>4500 AND ERL<4600 THEN PRINT "ERROR SAVING GAME": RESUME 700
IF ERL=>4600 AND ERL<4700 THEN PRINT "ERROR RESTORING GAME": RESUME 700
GOTO 9999
9930 IF K1=1 THEN 9970
9940 KEY 1,"QSL "+CHR$(13):KEY 2,"DUP "+CHR$(13):
KEY 3,"CALL "+CHR$(13):KEY 4,"TUNE "+CHR$(13):
KEY 5,"CHECK "+CHR$(13):KEY 6,"CQ "+CHR$(13):
KEY 7,"SEND "+CHR$(13):KEY 8,"REPEAT"+CHR$(13):
KEY 9,"LOG "+CHR$(13):KEY 10,"+MORE "+CHR$(13):
9960 GOTO 9990
9970 KEY 1,"BREAK "+CHR$(13):KEY 2,"BAND "+CHR$(13):
KEY 3,"QRT "+CHR$(13):KEY 4,"SAVE "+CHR$(13):
KEY 5,"RESTOR"+CHR$(13):KEY 6," "+CHR$(13):
KEY 7," "+CHR$(13):KEY 8,"COLOR "+CHR$(13):
KEY 9,"HELP "+CHR$(13):KEY 10,"+MORE "+CHR$(13):
9990 color KClr, KClrBG:KEY ON:color MClr,MClrBG:return
9999 IF L1G$="Y" THEN CLOSE#4
LOCATE 24,1: end