home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib38b.dsk / HEX.CHECKER.bas < prev    next >
BASIC Source File  |  2023-02-26  |  5KB  |  60 lines

  1. 10  REM  ************************
  2. 20  REM  * HEX.CHECKER          *
  3. 30  REM  * BY  LES STEWART      *
  4. 40  REM  * COPYRIGHT (C) 1989   *
  5. 50  REM  * MINDCRAFT PUBL. CORP.*
  6. 60  REM  * CONCORD, MA 01742    *
  7. 70  REM  ************************
  8. 80  REM 
  9. 90  REM 
  10. 100  HOME :F$ = "":D$ =  CHR$(4):A(0) = 1:A(1) = 16:A(2) = 256:A(3) = 4096
  11. 110 L1$ = "HEX.CHECKER BY LES STEWART":L2$ = "COPYRIGHT(C) 1989 MINDCRAFT PUBL. CORP.": PRINT L1$: PRINT L2$: GOSUB 550
  12. 120  VTAB 12: HTAB 1: PRINT "WHAT IS THE PATHNAME OF YOUR": PRINT 
  13. 130  PRINT "MACHINE LANGUAGE PROGRAM? (? = CATALOG)": PRINT : PRINT F$;: IF F$ = ""  THEN  INPUT "";F$: GOTO 470
  14. 140  VTAB 20: HTAB 1: PRINT "WHAT IS THE STARTING ADDRESS?": PRINT : PRINT ;: INPUT "(IN HEX) $";A$
  15. 150 L =  LEN(A$): ON L <2  OR L >4 GOTO 180: IF  RIGHT$(A$,1) = "0"  OR  RIGHT$(A$,1) = "8"  THEN 170
  16. 160 A$ =  LEFT$(A$,L -1) + CHR$(56 *( ASC( RIGHT$(A$,1)) >56) +48 *( ASC( RIGHT$(A$,1)) <56))
  17. 170 A = 0: FOR X = 1 TO L:D =  ASC( MID$ (A$,X,1)):A = A +A(L -X) *(D -48 *(D <58  AND D >47) -55 *(D >64  AND D <71)): NEXT 
  18. 180  IF A <736  OR A >39424  THEN  HOME : PRINT : PRINT  CHR$(7)"INVALID ADDRESS.  PLEASE DOUBLE CHECK": PRINT "AND RE-ENTER": PRINT : PRINT "PRESS RETURN TO CONTINUE ";: GET Z$: ON (Z$ =  CHR$(13)) +1 GOTO 180,100
  19. 190 L = 8192: IF A <9472  THEN L = 34048: REM - LOAD AT $2000 IF ADDRESS IS ABOVE $2500 OTHERWISE LOAD AT $8500
  20. 200  HOME : PRINT : PRINT "INSTALLING HEX.CHECKER MACHINE CODE"
  21. 210  FOR X = 0 TO 252: READ ML: POKE L +X,ML: NEXT 
  22. 220  IF L = 8192  THEN  FOR X = 0 TO 7: READ ML: POKE L +ML, PEEK(L +ML) -101: NEXT 
  23. 230  POKE 1014,0: POKE 1015, INT(L/256):P =  INT(A/256): POKE 6,A -256 *P: POKE 7,P
  24. 240  HOME : PRINT : PRINT "PLACE THE DISK WITH": PRINT : PRINT F$: PRINT : PRINT "IN THE DRIVE AND HIT RETURN ";: GET Z$
  25. 250  HOME : PRINT : PRINT "LOADING "F$: PRINT : PRINT : PRINT "USE '&' TO ENTER CHECKER": PRINT : PRINT "AND 'ESC' TO EXIT"
  26. 260  ONERR  GOTO 290
  27. 270  PRINT D$"BLOAD "F$",S"SL$",D"DR$
  28. 280  END 
  29. 290  POKE 216,0: CALL 62248: HOME : PRINT  CHR$(7): PRINT "UNABLE TO LOAD": PRINT : PRINT F$: PRINT : PRINT "CHECK DISK AND HIT:": PRINT : PRINT : PRINT  SPC( 3)"'RETURN' TO TRY AGAIN": PRINT : PRINT  SPC( 3)"'ESC' TO EXIT": PRINT 
  30. 300  PRINT  SPC( 3)"'R' TO RESTART ";: GET Z$
  31. 310  IF Z$ < > CHR$(13)  AND Z$ < > CHR$(27)  AND Z$ < >"R"  AND Z$ < > CHR$(114)  THEN 290
  32. 320  IF Z$ = "R"  OR Z$ =  CHR$(114)  THEN  RESTORE :F$ = "": GOTO 100
  33. 330  IF Z$ =  CHR$(13)  THEN 240
  34. 340  HOME : END 
  35. 350  DATA 169,186,141,4,2,169,160,162,7,157,0,2,232,232,232,224,28,208,246,165,7,72,41,240
  36. 360  DATA 74,74,74,74,170,189,237,133,141,0,2,104,41,15,170,189,237,133,141,1,2,165,6,72,41
  37. 370  DATA 240,74,74,74,74,170,189,237,133,141,2,2,104,41,15,170,189,237,133,141,3,2,160,255,162
  38. 380  DATA 4,134,215,230,215,200,177,6,72,41,240,74,74,74,74,170,189,237,133,166,215,157,0,2,104
  39. 390  DATA 41,15,170,189,237,133,230,215,166,215,157,0,2,230,215,165,215,201,28,208,213,165,6,72,165
  40. 400  DATA 7,72,32,174,133,104,133,7,104,133,6,162,1,32,74,249,165,7,166,6,32,65,249,165,6
  41. 410  DATA 24,105,8,133,6,208,2,230,7,32,12,253,201,155,240,3,76,0,133,32,88,252,76,208,3
  42. 420  DATA 160,0,132,6,132,8,132,9,169,2,133,7,177,6,162,8,10,38,8,38,9,144,14,72,165
  43. 430  DATA 8,73,33,133,8,165,9,73,16,133,9,104,202,208,232,200,192,28,144,223,32,251,218,32,128
  44. 440  DATA 254,56,165,8,229,9,32,218,253,32,132,254,96,176,177,178,179,180,181,182,183,184,185,193,194
  45. 450  DATA 195,196,197,198
  46. 460  DATA 31,41,57,67,92,104,128,167
  47. 470  ONERR  GOTO 590
  48. 480  IF F$ = ""  THEN 530
  49. 490  IF F$ = "?"  THEN  PRINT  CHR$(4) LEFT$("CATALOG",7 -4 *( PEEK(48896) = 76))",S"SL$",D"DR$: PRINT "PRESS RETURN TO CONTINUE";: GET R$:F$ = "": HOME : PRINT L1$: PRINT L2$: GOTO 120
  50. 500  ONERR  GOTO 530
  51. 510  PRINT D$"VERIFY"F$",S"SL$",D"DR$
  52. 520  GOTO 140
  53. 530  VTAB 22: HTAB 1: PRINT "INVALID PATHNAME...PRESS RETURN PLEASE";: GET YY$: PRINT YY$
  54. 540  VTAB 22: HTAB 1: CALL  -958:F$ = "": GOTO 120
  55. 550  VTAB 4: PRINT "ENTER SLOT # ";: GET SL$: PRINT SL$: IF  VAL(SL$) <2  OR  VAL(SL$) >7  THEN 550
  56. 560  HTAB 1: VTAB 6: PRINT "ENTER DRIVE # ";: GET DR$: PRINT DR$: IF  VAL(DR$) <1  OR  VAL(DR$) >2  THEN 560
  57. 570  VTAB 22: HTAB 1: PRINT "PRESS RETURN TO CONTINUE, ESC TO BACK UP";: GET RS$: PRINT " ": IF RS$ =  CHR$(13)  THEN  HTAB 1: VTAB 22: CALL  -958: RETURN 
  58. 580  GOTO 550
  59. 590 ER =  PEEK(222): IF ER = 3  OR ER = 2  THEN  VTAB 22: HTAB 1: PRINT "BAD SLOT OR DRIVE NUMBERS. PRESS RETURN";: GET R$: PRINT : VTAB 22: HTAB 1: CALL  -958: GOTO 100
  60. 600  IF ER = 8  THEN  VTAB 22: HTAB 1: PRINT "I/O ERROR. PRESS RETURN";: GET R$: PRINT : VTAB 22: HTAB 1: CALL  -958: GOTO 100