home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / ATARI / HEXBIN11.BAS < prev    next >
BASIC Source File  |  2000-06-30  |  2KB  |  54 lines

  1. 1 REM HEXBIN 1.1, DECEMBER 1984
  2. 2 REM -- BY DAN FLEYSHER --
  3. 3 REM (FLEYSHER.WBST@XEROX)
  4. 4 REM THIS BASIC PROGRAM CONVERTS A
  5. 5 REM HEXADECIMAL TEXT FILE CREATED
  6. 6 REM BY COMPANION PROGRAM BINHEX
  7. 7 REM BACK INTO ITS ORIGINAL BINARY
  8. 8 REM FILE FORMAT.  THE CHECKSUM AT
  9. 9 REM THE END OF THE INPUT HEX FILE
  10. 10 REM IS VERIFIED.
  11. 11 REM 
  12. 20 DIM FILEIN$(15),FILEOUT$(15)
  13. 30 BUFSIZ=37:DIM BUF$(BUFSIZ)
  14. 40 ASCA=ASC("A"):ASCF=ASC("F"):ASC0=ASC("0"):ASC9=ASC("9")
  15. 50 ? "}             HEXBIN 1.0":? :? 
  16. 60 TRAP 60:? "INPUT FILENAME";:INPUT FILEOUT$
  17. 70 IF FILEOUT$<>"" THEN 90
  18. 80 FILEOUT$="D:HEXFILE.TXT":? "                ";FILEOUT$:GOTO 100
  19. 90 GOSUB 1000
  20. 100 FILEIN$=FILEOUT$:? 
  21. 110 TRAP 110:? "OUTPUT FILENAME";:INPUT FILEOUT$:GOSUB 1000:? 
  22. 120 TRAP 40000:SUM=0
  23. 130 OPEN #4,4,0,FILEIN$:OPEN #5,8,0,FILEOUT$
  24. 140 TRAP 310:INPUT #4,BUF$:? BUF$:LBUF=LEN(BUF$):IF LBUF<7 THEN 140
  25. 142 FOR I=1 TO LBUF-6:IF BUF$(I,I+6)=".START." THEN 146
  26. 144 NEXT I:GOTO 140
  27. 146 POP :? "       STARTING FILE CONVERSION"
  28. 150 TRAP 310:INPUT #4,BUF$:? BUF$:LBUF=LEN(BUF$):EVENODD=0:REM EVEN=0
  29. 155 IF LBUF = 0 THEN 150
  30. 160 FOR I=1 TO LBUF
  31. 170 HEX1=ASC(BUF$(I,I))
  32. 180 IF HEX1>=ASC0 AND HEX1<=ASC9 THEN HEX1=HEX1-ASC0:GOTO 200
  33. 190 IF HEX1>=ASCA AND HEX1<=ASCF THEN HEX1=HEX1-ASCA+10:GOTO 200
  34. 192 IF LBUF<I+5 THEN GOTO 240
  35. 194 IF BUF$(I,I+5)=".STOP." THEN 260
  36. 196 GOTO 240
  37. 200 EVENODD= NOT EVENODD
  38. 210 IF EVENODD THEN BYTE=HEX1:GOTO 240
  39. 220 BYTE=(16*BYTE)+HEX1
  40. 230 SUM=SUM+BYTE:PUT #5,BYTE
  41. 240 NEXT I:IF EVENODD THEN ? "ERROR - MISSING 1 OR MORE NIBBLES"
  42. 250 GOTO 150
  43. 260 POP :TRAP 40000:IF SUM=VAL(BUF$(I+6)) THEN ? "CHECK SUM VERIFIED.":? :GOTO 330
  44. 270 ? "CHECK SUM ERROR:":GOTO 320
  45. 310 ? "PREMATURE END OF FILE - NO CHECK SUM:"
  46. 320 ? "  COMPUTED CHECK SUM = ";SUM
  47. 330 CLOSE #4:CLOSE #5
  48. 340 END 
  49. 1000 IF LEN(FILEOUT$)<3 THEN GOTO 1040
  50. 1010 IF FILEOUT$(1,2)="D:" THEN RETURN 
  51. 1020 IF LEN(FILEOUT$)<4 THEN GOTO 1040
  52. 1030 IF FILEOUT$(1,1)="D" AND FILEOUT$(3,3)=":" THEN RETURN 
  53. 1040 BUF$=FILEOUT$:FILEOUT$="D:":FILEOUT$(3)=BUF$:RETURN 
  54.