1000 ' TYPO/ST 1010 ' (c) 1986 Antic Publishing 1020 ' Written by Patrick Bass and Bill Marquardt 1030 ' Version 050286 1040 '----------------------------------------------------------------- 1050 ' 1060 DISK=1: OUTPUT=2: TRUE=(-1): FALSE=0: CHECKSUMMING=TRUE 1070 TV=FALSE: PRINTER=FALSE 1080 ' 1090 print "File to Check:": input FILENAME\$ 1100 print "Output on:" 1110 print "(S)creen or ": print "(P)rinter ": input DEVICE\$ 1120 if( DEVICE\$="p" )or( DEVICE\$="P" )then PRINTER=TRUE else TV=TRUE 1130 ' 1140 if TV then print "Checksum for file: ": print FILENAME\$: print 1150 if PRINTER then lprint "Checksum for file: ";FILENAME\$: lprint 1160 ' 1170 '----------------------------------------------------------------- 1180 open "I", #DISK, FILENAME\$ 1190 ' 1200 while CHECKSUMMING 1210 LINENUMBER=0: CHECKSUM=0 1220 ' 1230 gosub GETALINE 1240 ' 1250 DECIMAL=CHECKSUM: gosub DECTOHEX 1260 OUTPUT\$=str\$( LINENUMBER )+" :"+HI\$+LO\$ 1270 if PRINTER then lprint OUTPUT\$ else print OUTPUT\$ 1280 wend 1290 ' 1300 close DISK 1310 end 1320 ' 1330 '----------------------------------------------------------------- 1340 GETALINE: 1350 BLINE\$="": on error goto 1300 1360 GOTALINE=FALSE 1370 ' 1380 while not GOTALINE 1390 line input#DISK, BLINE\$ 1400 if len( BLINE\$ )>1 then GOTALINE=TRUE 1410 wend 1420 ' 1430 LINENUMBER=val( BLINE\$ ) 1440 for CHAR=1 to len( BLINE\$ ) 1450 OK=TRUE 1460 CHARACTER\$=mid\$( BLINE\$, CHAR, 1 ) 1470 if CHARACTER\$=" " then OK=FALSE 1480 if OK then CHECKSUM=CHECKSUM+asc( CHARACTER\$+chr\$( 0 )) 1490 next CHAR 1500 return 1510 ' 1520 '----------------------------------------------------------------- 1530 DECTOHEX: 1540 DECIMAL=abs( DECIMAL ) 1550 HI=int( DECIMAL/256 ): LO=( DECIMAL-( HI*256 )) 1560 HH=int( HI/16 ): HL=( HI-( HH*16 )) 1570 LH=int( LO/16 ): LL=( LO-( LH*16 )) 1580 HI\$=chr\$( 48+HH-( 7*( HH>9 )))+chr\$( 48+HL-( 7*( HL>9 ))) 1590 LO\$=chr\$( 48+LH-( 7*( LH>9 )))+chr\$( 48+LL-( 7*( LL>9 ))) 1600 return