home *** CD-ROM | disk | FTP | other *** search
/ Antic Magazine 1987 May / Antic_Magazine_1987_05_Antic_Side_B.atr / typost.bas < prev    next >
BASIC Source File  |  2023-02-26  |  2KB  |  63 lines

  1.  
  2. 1000  ' TYPO/ST
  3. 1010  ' (c) 1986 Antic Publishing
  4. 1020  ' Written by Patrick Bass and Bill Marquardt
  5. 1030  ' Version 050286
  6. 1040  '-----------------------------------------------------------------
  7. 1050  '
  8. 1060   DISK=1: OUTPUT=2: TRUE=(-1): FALSE=0: CHECKSUMMING=TRUE
  9. 1070   TV=FALSE: PRINTER=FALSE
  10. 1080  '
  11. 1090   print "File to Check:": input FILENAME$
  12. 1100   print "Output on:"
  13. 1110   print "(S)creen or ": print "(P)rinter ": input DEVICE$
  14. 1120   if( DEVICE$="p" )or( DEVICE$="P" )then PRINTER=TRUE else TV=TRUE
  15. 1130  '
  16. 1140   if TV then print "Checksum for file: ": print FILENAME$: print
  17. 1150   if PRINTER then lprint "Checksum for file: ";FILENAME$: lprint
  18. 1160  '
  19. 1170  '-----------------------------------------------------------------
  20. 1180   open "I", #DISK, FILENAME$
  21. 1190  '
  22. 1200   while CHECKSUMMING
  23. 1210      LINENUMBER=0: CHECKSUM=0
  24. 1220  '
  25. 1230      gosub GETALINE
  26. 1240  '
  27. 1250      DECIMAL=CHECKSUM: gosub DECTOHEX
  28. 1260      OUTPUT$=str$( LINENUMBER )+" :"+HI$+LO$
  29. 1270      if PRINTER then lprint OUTPUT$ else print OUTPUT$
  30. 1280   wend
  31. 1290  '
  32. 1300   close DISK
  33. 1310  end
  34. 1320  '
  35. 1330  '-----------------------------------------------------------------
  36. 1340  GETALINE:
  37. 1350   BLINE$="": on error goto 1300
  38. 1360   GOTALINE=FALSE
  39. 1370  '
  40. 1380   while not GOTALINE
  41. 1390      line input#DISK, BLINE$
  42. 1400      if len( BLINE$ )>1 then GOTALINE=TRUE
  43. 1410   wend
  44. 1420  '
  45. 1430   LINENUMBER=val( BLINE$ )
  46. 1440   for CHAR=1 to len( BLINE$ )
  47. 1450      OK=TRUE
  48. 1460      CHARACTER$=mid$( BLINE$, CHAR, 1 )
  49. 1470      if CHARACTER$=" " then OK=FALSE
  50. 1480      if OK then CHECKSUM=CHECKSUM+asc( CHARACTER$+chr$( 0 ))
  51. 1490   next CHAR
  52. 1500  return
  53. 1510  '
  54. 1520  '-----------------------------------------------------------------
  55. 1530  DECTOHEX:
  56. 1540   DECIMAL=abs( DECIMAL )
  57. 1550   HI=int( DECIMAL/256 ): LO=( DECIMAL-( HI*256 ))
  58. 1560   HH=int( HI/16 ): HL=( HI-( HH*16 ))
  59. 1570   LH=int( LO/16 ): LL=( LO-( LH*16 ))
  60. 1580   HI$=chr$( 48+HH-( 7*( HH>9 )))+chr$( 48+HL-( 7*( HL>9 )))
  61. 1590   LO$=chr$( 48+LH-( 7*( LH>9 )))+chr$( 48+LL-( 7*( LL>9 )))
  62. 1600  return
  63.