home *** CD-ROM | disk | FTP | other *** search
/ RUN Flagazine: Run 1 / run1.zip / CHECKLUX.BAS < prev    next >
BASIC Source File  |  2014-09-03  |  6KB  |  80 lines

  1. 100 REM GWBASIC controle op RUN-listings (c) Nico Baaijens
  2. 110 CLS:KEY OFF:B=1:CHKSUM=0:VL=1:ZOEK1$=CHR$(47)+CHR$(42)+CHR$(32):SCREEN 0,0,0
  3. 120 WIDTH 80:RR=20:NN=5:ON ERROR GOTO 760:COLOR 15,0
  4. 130 PRINT TAB(20) "Listing-controle - Exclusief voor RUN":COLOR 2,0                 :PRINT STRING$(79,205);
  5. 140 BB=4:LOCATE 4,1:PRINT CHR$(218)STRING$(77,196)CHR$(191)
  6. 150 FOR A=5 TO 13:LOCATE A,1:PRINT CHR$(179):LOCATE A,79:PRINT CHR$(179):NEXT
  7. 160 PRINT CHR$(192)STRING$(77,196)CHR$(217):LOCATE 21,1                             :PRINT CHR$(218)STRING$(77,196)CHR$(191)
  8. 170 LOCATE 24,1:PRINT CHR$(192)STRING$(77,196);CHR$(217);
  9. 180 FOR A=22 TO 23:LOCATE A,1:PRINT CHR$(179):LOCATE A,79:PRINT CHR$(179):NEXT
  10. 190 LOCATE 22,2:PRINT "Berekende checksum: ":LOCATE 22,27                           :PRINT "│Cumulatieve checksum: ":LOCATE 22,59:PRINT "│Gevonden fouten: "
  11. 200 LOCATE 23,2:PRINT "Geldige checksum..: ":LOCATE 23,27                           :PRINT "│Aantal statements...:":LOCATE 23,59:PRINT "│Aantal regels..: "
  12. 210 DEF SEG=0:POKE 1047,PEEK(1047) OR 64:DEF SEG:COLOR 7,0
  13. 220 ZOEK2$=CHR$(47)+CHR$(42):LOCATE 3,1
  14. 230 LINE INPUT "Naam van het te controleren programma: ";PROG$
  15. 240 FOR A=1 TO LEN(PROG$)
  16. 250 IF MID$(PROG$,A,1)=CHR$(46) THEN 270 ELSE NEXT A:PROG$=PROG$+".BAS"
  17. 260 LOCATE 3,40:PRINT PROG$;
  18. 270 LOCATE 5,3:COLOR 30,0:PRINT "Controleren checksums":COLOR 7,0
  19. 280 OPEN PROG$ FOR INPUT AS #1:WHILE NOT EOF(1):LINE INPUT #1,REGEL$
  20. 290 Y=INSTR(REGEL$,ZOEK1$):IF Y<>0 THEN LIMIT=VAL(MID$(REGEL$,12,2))
  21. 300 IF LIMIT<10 THEN LIMIT=10
  22. 310 WEND:CLOSE:DIM REGC(LIMIT),CHK(LIMIT),FOUT(LIMIT)
  23. 320 OPEN PROG$ FOR INPUT AS #1:WHILE NOT EOF(1):LINE INPUT #1,REGEL$
  24. 330 IF ASC(LEFT$(REGEL$,1))<49 OR ASC(LEFT$(REGEL$,1))>57 THEN 700
  25. 340 Y=INSTR(REGEL$,ZOEK2$):IF Y<>0 THEN GOSUB 710:LOCATE 5,3:PRINT SPACE$(7)
  26. 350 WEND:CLOSE:COLOR 2,0:LOCATE BB+1,1:PRINT CHR$(195)STRING$(77,196)CHR$(180);     :LOCATE 13,3:PRINT "Totale Checksum..............: ";:COLOR 14,0                :PRINT CT:COLOR 7,0
  27. 360 IF CT=0 THEN BEEP:LOCATE 16,1                                                   :PRINT "Geen checksumregels..! CHECK onmogelijk.";:GOTO 750
  28. 370 FL=0:IF CT<>VAL(RIGHT$(REGEL$,6)) THEN IF REGC(1)<>0 THEN FL=1
  29. 380 IF FL=1 THEN LOCATE 16,1:PRINT "Fouten in checksumregels!"                      :LOCATE 25,1:PRINT "Toets <Enter> om ";PROG$" te laden";:GOTO 690
  30. 390 LOCATE 25,1:PRINT "Controleren: ";PROG$;
  31. 400 OPEN PROG$ FOR INPUT AS #1:WHILE NOT EOF(1):LINE INPUT #1,REGEL$
  32. 410 TEL2=TEL2+1:TEL3=TEL3+1
  33. 420 LOCATE 22,22:COLOR 15,0:PRINT USING "####";TEL4;:LOCATE 22,51                    :PRINT USING "#######";CHKSUM:LOCATE 22,77:PRINT USING "##";TEL;
  34. 430 LOCATE 23,22:PRINT USING "####";REGC(P);:LOCATE 23,51                           :PRINT USING "#######";TEL3;
  35. 440 LOCATE 23,77:PRINT USING "##";TEL2;
  36. 450 LOCATE 15,1:COLOR 14,0:FOR A=1 TO LEN(REGEL$)
  37. 460 IF MID$(REGEL$,A,7)=CHR$(32)+CHR$(82)+CHR$(69)+CHR$(77)+CHR$(32)+ZOEK2$         THEN TEL2=TEL2-1:GOTO 570
  38. 470 IF MID$(REGEL$,A,1)=CHR$(58) THEN TEL3=TEL3+1
  39. 480  IF MID$(REGEL$,A,4)=CHR$(32)+CHR$(82)+CHR$(69)+CHR$(77) THEN                    TEL2=TEL2-2:PRINT:FOR B=1 TO LEN(REGEL$):PRINT MID$(REGEL$,B,1);                :NEXT B:COLOR 7,0:GOSUB 740:GOTO 570
  40. 490  IF ASC(MID$(REGEL$,A,1))=32 THEN IF VL=1 THEN VL=0
  41. 500  IF ASC(MID$(REGEL$,A,1))<>32 THEN IF A>4 THEN                                      CHKSUM=CHKSUM+ASC(MID$(REGEL$,A,1)):                                            REGCHS=REGCHS+ASC(MID$(REGEL$,A,1))
  42. 510 NEXT A:PRINT:VL=1:TEL4=REGCHS
  43. 520 P=P+1:IF REGCHS<>REGC(P) THEN BEEP:LOCATE 22,22:COLOR 30,0:PRINT USING          "####";REGCHS;:LOCATE 23,22:COLOR 15,0:PRINT USING "####";REGC(P);:TEL=TEL+1
  44. 530 IF REGCHS<>REGC(P) THEN LOCATE 16,1:COLOR 30,0:FOR A=1 TO LEN(REGEL$)           :PRINT MID$(REGEL$,A,1);:NEXT A:GOSUB 740:FOR T=1 TO 4000:NEXT T:COLOR 7,0      :GOTO 550
  45. 540 COLOR 14,0:PRINT LEFT$(REGEL$,3);:FOR A=4 TO LEN(REGEL$)                        :PRINT MID$(REGEL$,A,1);:NEXT A:GOSUB 740
  46. 550 CHK(P)=REGCHS:REGCHS=0:FOUT(P)=VAL(LEFT$(REGEL$,4))
  47. 560 IF TEL2=>1 THEN GOSUB 770
  48. 570 WEND:GOSUB 770:COLOR 15,0:LOCATE 15,1:PRINT "De resulterende Checksum is....: ";CHKSUM
  49. 580 IF CT<>CHKSUM THEN 610
  50. 590 FOR A=1 TO LIMIT:IF REGC(A)<>CHK(A) THEN CHKSUM=CHKSUM-1
  51. 600 NEXT A
  52. 610 IF VAL(RIGHT$(REGEL$,6)) <> CHKSUM THEN                                         LOCATE 18,1:PRINT "U heeft typefouten gemaakt!":GOTO 650
  53. 620 A$="CDEFGAB>C<":A$=A$+A$:PLAY "MLT255L64XA$;XA$;XA$;XA$;XA$;"
  54. 630 LOCATE 18,1:PRINT "Programma: ";PROG$;" correct ingetypt!":COLOR 7,0            :LOCATE 25,1:PRINT "Toets <Enter>";SPACE$(20);:CLOSE
  55. 640 WHILE INKEY$<>CHR$(13):WEND:DEF SEG=0:POKE 1047,PEEK (1047) AND 191             :DEF SEG:RUN PROG$
  56. 650 PRINT "De fouten zijn vastgesteld in de programmaregel(s):";
  57. 660 FOR A=1 TO LIMIT:IF REGC(A)<>CHK(A) THEN PRINT FOUT(A);
  58. 670 NEXT A
  59. 680 BEEP:LOCATE 25,1:PRINT "Toets <Enter> om ";PROG$;" te laden";
  60. 690 WHILE INKEY$<>CHR$(13):WEND:CLS:LOAD PROG$
  61. 700 LOCATE 17,1:PRINT PROG$;" is niet gesaved in de A-optie":CLOSE:GOTO 680
  62. 710 FOR A=16 TO 61 STEP 5:CNT=CNT+1:IF CNT=LIMIT+1 THEN 730
  63. 720 REGC(CNT)=VAL(MID$(REGEL$,A,4)):CT=CT+REGC(CNT):NEXT A
  64. 730 BB=BB+1:LOCATE BB,10:COLOR 14,0:PRINT REGEL$;:COLOR 7,0:RETURN
  65. 740 FOR Q=A TO 285:PRINT CHR$(32);:NEXT Q:RETURN
  66. 750 LOCATE 25,1:PRINT "Toets <Enter>";SPACE$(40);:WHILE INKEY$<>CHR$(13)            :WEND:CLS:DEF SEG=0:POKE 1047,PEEK (1047) AND 191:DEF SEG:CLOSE:END
  67. 760 BEEP:LOCATE 17,1:PRINT "Programma: ";PROG$;" niet gevonden.";:LOCATE 25,1       :PRINT "Toets <Enter>";:LINE INPUT A$:RUN
  68. 770 IF RR=20 THEN LOCATE NN,RR-10:PRINT SPACE$(15);
  69. 780 RR=RR+5:DD=DD+1:IF DD<11 THEN LOCATE NN,RR:PRINT SPACE$(5);:GOTO 800
  70. 790 DD=0:NN=NN+1:RR=20:GOTO 770
  71. 800 RETURN
  72. 810 REM /* 70/.4591,2911,6176,3231,4333,5318,3096,4381,9472,9023
  73. 820 REM /*/....3069,2030,4634,1221,3856,1497,4460,3826,3966,1527
  74. 830 REM /*/....3311,3826,3513,4413,9777,6261,3631,8620,2846,3826
  75. 840 REM /*/....1482,7273,4607,2075,2603,5526,2607,9473,2833,7074
  76. 850 REM /*/....2013,8774,8973,5834,3312,1439,6019,1329,3446,0384
  77. 860 REM /*/....6501,3611,8451,5006,5146,3293,0384,4206,2695,4986
  78. 870 REM /*/....3187,3416,3865,2709,8419,8012,2812,4141,1678,0480
  79. 880 REM Checksum...............:  302716
  80.