home *** CD-ROM | disk | FTP | other *** search
/ RUN Flagazine: Run 12 / run12.zip / CHECKLUX.BAS < prev    next >
BASIC Source File  |  1991-11-28  |  5KB  |  73 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.  
  73.