home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / misc / pc_ham3 / contest.bas < prev    next >
BASIC Source File  |  1986-04-04  |  7KB  |  111 lines

  1. 10 ON ERROR GOTO 950
  2. 20 G$="G3ZCZ CONTEST LOGGING PROGRAM VERSION 2.20":CLS:WIDTH 80:LOCATE 10,1:PRINT G$
  3. 30 BANDS=7:M9=4000:DIM W$(M9),F1(M9),B(BANDS),B1(BANDS):R1$="00":S1$="59":C$="?"
  4. 40 BLANK$="                                                                    "
  5. 50 C4$="RXWBMCFL*/Q?O":L0$=BLANK$:QS$="-":QR$=QS$:R$=R1$:S$=S1$:L1$=L0$:L2$=L0$:L3$=L0$:L4$=L0$
  6. 60 L5$=L0$:L6$=L0$:L7$=L0$:L8$=L0$:L13$=L0$:L12$=L0$:L11$=L0$:L10$=L0$:L9$=L0$
  7. 70 FOR I%=1 TO BANDS:READ B(I%):NEXT:DATA 1,4,16,64,256,1024,4096
  8. 80 FOR I%=1 TO BANDS:READ B1(I%):NEXT:DATA 10,15,20,40,80,160,2
  9. 90 LOCATE 12,1:INPUT "Enter name of lOG file (D:NAME) Log type .LOG Assumed ",L$:IF L$="" THEN 90
  10. 95 INPUT "Do you want a running log printed out (Y/N) "; A$: IF A$="" THEN 95
  11. 98 IF LEFT$(A$,1)="Y" THEN P1 = 1 ELSE IF LEFT$(A$,1)="N" THEN P1 = 0 ELSE 95
  12. 100 GOSUB 880
  13. 110 OPEN L$+".$$$" FOR OUTPUT AS #2
  14. 120 OPEN L$+".LOG" FOR INPUT AS #1:GOTO 140
  15. 130 GOSUB 380 :GOSUB 390 :GOSUB 420:GOTO 800
  16. 140 LOCATE 23,1:PRINT "LOADING LAST ENTRY STRINGS":OPEN L$+".CHK" FOR INPUT AS #3
  17. 150 INPUT#3,L13$,L12$,L11$,L10$,L9$,L8$,L7$,L6$,L5$,L4$,L3$,L2$,L1$:CLOSE#3
  18. 160 PRINT "OPENING LOGBOOK ";L$:N4=0
  19. 170 IF EOF(1) THEN GOSUB 650:INPUT"Waiting,touch ENTER to continue ";A$:GOTO 800
  20. 180 INPUT#1,D$,T$,B$,C$,R$,S$,M$,P$,QS$,QR$,X$ : PRINT N4,C$,X$:IF C$="/*" THEN N4=N4-1 ELSE N4=N4+1
  21. 185 IF C$="/*" THEN C$=C8$:GOSUB 270:W$(J)=" ":F1(J)=F1(J)-B(B%):C$="/*":GOTO 210
  22. 190 GOSUB 270:W$(J)=C$:F=VAL(B$):FOR Q%=1 TO BANDS:IF INT(F)=B1(Q%) THEN F1(J)=F1(J)+B(Q%):B%=Q%:GOTO 210
  23. 200 NEXT
  24. 210 C8$=C$:PRINT#2,D$;",";T$;",";B$;",";C$;",";R$;",";S$;",";M$;",";P$;",";QS$;",";QR$;",";X$:GOTO 170
  25. 220 LOCATE 20,1:PRINT BLANK$:LOCATE 20,1:RETURN
  26. 230 L0$=BLANK$:MID$(L0$,6)=D$:MID$(L0$,15)=T$:MID$(L0$,20)=C$:MID$(L0$,32)=B$:MID$(L0$,36)=M$:MID$(L0$,40)=P$
  27. 240 IF C$="/*" THEN MID$(L0$,1)="-" ELSE N4$=STR$(N4):MID$(L0$,1)=MID$(N4$,2)
  28. 250 MID$(L0$,45)=R$:MID$(L0$,49)=S$:MID$(L0$,53)=QS$:MID$(L0$,55)=QR$:MID$(L0$,57)=X$:RETURN
  29. 260 T$=LEFT$(TIME$,2)+MID$(TIME$,4,2):D$=RIGHT$(DATE$,2)+"/"+LEFT$(DATE$,2)+"/"+MID$(DATE$,4,2):RETURN
  30. 270 J=0:IF C$="/*" THEN 350
  31. 280 FOR I%=1 TO LEN(C$):A$=MID$(C$,I%,1):J=J+(ASC(A$)-47):NEXT:J=J*25:IF J<0 THEN J=0
  32. 290 IF J>M9 THEN J = J-M9 : GOTO 290
  33. 300 IF LEN(W$(J))<1 THEN 350
  34. 310 IF LEFT$(W$(J),1)=" " THEN 350
  35. 320 IF LEFT$(W$(J),LEN(C$))=C$ THEN 340
  36. 330 J=J+1:GOTO 290
  37. 340 I=0:RETURN
  38. 350 I=1:RETURN
  39. 360 INPUT "REPORT RECEIVED ";A$:IF A$="" THEN 365 ELSE X$=A$
  40. 365 RETURN
  41. 370 GOSUB 220:INPUT "REPORT SENT     ";S$:IF S$>"599" THEN 370 ELSE RETURN
  42. 380 GOSUB 220:INPUT "POWER (watts)   ";P$:IF P$<"0" THEN 380 ELSE RETURN
  43. 390 GOSUB 220:INPUT "BAND            ";F : IF F>160 THEN 390
  44. 400 FOR I%=1 TO BANDS:IF INT(F)=B1(I%) THEN 410 ELSE NEXT:LOCATE 22,1:FOR I%=1 TO BANDS:PRINT B1(I%);" ";:NEXT:GOTO 390
  45. 410 B$=MID$(STR$(F),2):B%=I%:GOSUB 650:RETURN
  46. 420 GOSUB 220:INPUT "MODE            ";M$: IF M$="" THEN 420 ELSE RETURN
  47. 430 GOSUB 220:INPUT "CALL SIGN       ";A$
  48. 440 IF A$="" THEN 510 :IF LEFT$(A$,1)="" THEN A$=LEFT$(A$,LEN(A$):GOTO 440
  49. 450 LOCATE 22,1:PRINT BLANK$: LOCATE 22,1:C$=A$:GOSUB 270:IF I=1 THEN PRINT "OK":GOTO 510
  50. 460 F2=F1(J): PRINT "WORKED on ";
  51. 470 FOR Q%=BANDS TO 1 STEP -1: IF F2<B(Q%) THEN 500
  52. 480 PRINT B1(Q%);" ";:F2=F2-B(Q%):IF B1(Q%)=INT(F) THEN PRINT "DUPLICATE";CHR$(7);
  53. 490 IF F2>=B(Q%) THEN 470
  54. 500 NEXT
  55. 510 RETURN
  56. 520 GOSUB 220:INPUT "ARE YOU SURE ";A$ :IF A$="" THEN RETURN
  57. 530 IF N4<1 THEN GOSUB 220 : PRINT "CAN'T F***** A ZERO ENTRY":RETURN
  58. 540 IF A$=""OR LEFT$(A$,1) <> "Y" THEN RETURN
  59. 550 C$=C8$:GOSUB 270:F1(J)=F1(J)-B(B%):IF F1(J)<=0 THEN W$(J)=" "
  60. 560 C$="/*":GOTO 600
  61. 570 IF LEN(X$)=0 THEN 580 ELSE IF LEFT$(C$,1)="?" THEN 580 ELSE 590
  62. 580 LOCATE 22,1:PRINT BLANK$: LOCATE 22,1:PRINT "GET THE DATA FIRST":RETURN
  63. 590 GOSUB 260:C8$=C$:GOSUB 270: F1(J)=F1(J)+B(B%):W$(J)=C$:GOSUB 860
  64. 600 PRINT#2,D$;",";T$;",";B$;",";C$;",";R$;",";S$;",";M$;",";P$;",";QS$;",";QR$;",";X$
  65. 610 IF C$="/*" THEN 620 ELSE N4=N4+1:GOTO 630
  66. 620 N4=N4-1:IF N4<0 THEN N4=0
  67. 630 GOSUB 230:L13$=L12$:L12$=L11$:L11$=L10$:L10$=L9$:LOCATE 1,5:PRINT G$
  68. 640 L9$=L8$:L8$=L7$:L7$=L6$:L6$=L5$:L5$=L4$:L4$=L3$:L3$=L2$:L2$=L1$:L1$=L0$:IF P1 = 1 THEN LPRINT L0$
  69. 650 GOSUB 660:C$="?":R$=R1$:S$=S1$:X$="":RETURN
  70. 660 I=3:GOSUB 700:PRINT L13$:I=4:GOSUB 700:PRINT L12$:I=5:GOSUB 700:PRINT L11$:I=6:GOSUB 700:PRINT L10$
  71. 670 I=7:GOSUB 700:PRINT L9$:I=8:GOSUB 700:PRINT L8$:I=9:GOSUB 700:PRINT L7$:I=10:GOSUB 700:PRINT L6$
  72. 680 I=11:GOSUB 700:PRINT L5$:I=12:GOSUB 700:PRINT L4$:I=13:GOSUB 700:PRINT L3$:I=14:GOSUB 700:PRINT L2$
  73. 690 I=15:GOSUB 700:PRINT L1$:RETURN
  74. 700 LOCATE I,1:PRINT BLANK$:LOCATE I,1:RETURN
  75. 710 GOSUB 220:INPUT "ARE YOU SURE ";A$:IF A$="" THEN RETURN
  76. 720 IF LEFT$(A$,1)<>"Y" THEN RETURN
  77. 730 CLS:PRINT "SAVING LAST ENTRY STRINGS BEFORE CLOSING":OPEN L$+".CHK" FOR OUTPUT AS #3
  78. 740 PRINT#3,L13$;",";L12$;",";L11$;",";L10$;",";L9$;",";L8$;",";L7$;",";L6$;",";L5$;",";L4$;",";L3$;",";L2$;",";L1$
  79. 750 CLOSE#3:CLOSE#1:CLOSE#2
  80. 760 KILL L$+".BAK"
  81. 770 NAME L$+".LOG" AS L$+".BAK"
  82. 780 NAME L$+".$$$" AS L$+".LOG"
  83. 790 GOTO 1000 : REM END
  84. 800 GOSUB 880: LOCATE 1,5:PRINT G$,L$:GOSUB 660
  85. 810 LOCATE 17,30:PRINT "CURRENT ENTRY":GOSUB 260:GOSUB 230
  86. 820 MID$(L0$,1)=STR$(N4+1):LOCATE 18,1 : PRINT BLANK$:LOCATE 18,1 : PRINT STR$(N4+1),C$,X$
  87. 830 GOSUB 220:INPUT "QRU ";A$:IF A$=""THEN 830
  88. 840 FOR J2%=1 TO LEN(C4$):IF LEFT$(A$,1)=MID$(C4$,J2%,1) THEN 850 ELSE NEXT:GOTO 830
  89. 850 GOSUB 220:ON J2% GOSUB 360,370,380,390,420,430,520,570,710,890,870,860,1200:GOTO 810
  90. 860 LOCATE 21,1:PRINT BLANK$:PRINT BLANK$:PRINT BLANK$:RETURN
  91. 870 LOCATE 22,1:PRINT L0$:RETURN
  92. 880 CLS:KEY OFF:LOCATE 25,1:FOR I = 1 TO LEN(C4$):PRINT MID$(C4$,I,1);" ";:NEXT:RETURN
  93. 890 GOSUB 220:INPUT "ARE YOU SURE ";A$:IF A$="" THEN RETURN
  94. 900 INPUT "WHICH PREFIX ";A$:IF LEN(A$)<1 THEN A$="*"
  95. 910 I%=0:FOR Q=1 TO M9:IF LEN(W$(Q))<=2 THEN 940
  96. 920 IF A$="*" THEN 930 ELSE IF A$=LEFT$(W$(Q),LEN(A$)) THEN 930 ELSE 940
  97. 930 PRINT W$(Q),:I%=I%+1:IF I%=4 THEN I%=0:PRINT
  98. 940 NEXT:PRINT:INPUT "READY WHEN YOU ARE, HIT ENTER TO CONTINUE";A$:CLS:GOSUB 880:GOSUB 660:RETURN
  99. 950 IF ERL = 120 THEN OPEN L$+".LOG" FOR OUTPUT AS #3:CLOSE#3:OPEN L$+".LOG" FOR INPUT AS #1:RESUME 130
  100. 955 IF ERR = 61 THEN PRINT "Yuk Yuk Yuk DISK FULL ERROR - You may have blown it" :GOTO 1000
  101. 960 IF ERL=140 THEN PRINT "CHECK LIST ERROR, RECOVERING....":RESUME 160
  102. 965 IF ERL = 640 THEN RESUME 650
  103. 970 IF ERL = 760 THEN RESUME 770
  104. 975 IF ERR = 62 AND ERL = 180 THEN GOSUB 650:INPUT"Waiting,touch ENTER to continue ";A$:RESUME 800
  105. 980 PRINT "ERROR ";ERR;" AT LINE ";ERL
  106. 990 REM RESUME 750:REM CLOSE DOWN IN AN ORDERLY MANNER
  107. 1000 END
  108. 1200 INPUT "What is the number of lost calls (to be added to the memory) ";O:IF O <0 THEN 1200
  109. 1210 N4 = N4+O : RETURN
  110.  END
  111. 1200 INPUT "What