home *** CD-ROM | disk | FTP | other *** search
/ Software Du Jour / SoftwareDuJour.iso / BUSINESS / DBASE / DBAPG.ARC / HEX2POKE.PRG < prev    next >
Text File  |  1984-08-12  |  3KB  |  101 lines

  1. * Program.: HEX2POKE.PRG
  2. * Author..: Luis A. Castro
  3. * Date....: 01/17/84
  4. * Notice..: Copyright 1984, Ashton-Tate, All Rights Reserved
  5. * Version.: dBASE II, version 2.4x
  6. * Notes...: Creates a dBASE II POKE sequence from a HEX file.
  7. * Local...: hexvalues, Mhexlen, Mhexaddr, filename,
  8. *           address, linelen, decimals, item
  9. *
  10. SET TALK OFF 
  11. SET RAW ON
  12. STORE "123456789ABCDEF" TO hexvalues
  13. * ---Macros to convert hex values to decimal values.
  14. STORE [@($(Hlength,1,1),hexvalues)*16 +;
  15.    @($(Hlength,2,1),hexvalues)] TO Mhexlen
  16. STORE [@($(Haddress,1,1),hexvalues)*4096+;
  17.    @($(Haddress,2,1),hexvalues)*256+;
  18.    @($(Haddress,3,1),hexvalues)*16+;
  19.    @($(Haddress,4,1),hexvalues)] TO Mhexaddr
  20. *
  21. ERASE 
  22. @ 2, 0 SAY "H E X - T O - P O K E    C O N V E R T E R"
  23. @ 2,72 SAY DATE()
  24. @ 3, 0 SAY "========================================"
  25. @ 3,40 SAY "========================================"
  26. ACCEPT "Enter hex file....." TO filename
  27. STORE !( TRIM(filename) ) + "." TO filename
  28. STORE $( filename, 1, @(".",filename) - 1 ) TO filename
  29. DO CASE
  30.    CASE filename = " "
  31.       SET TALK ON
  32.       SET RAW OFF
  33.       RETURN
  34.    CASE .NOT. FILE(filename+".HEX")
  35.       ? "FILE DOES NOT EXIST"
  36.       SET TALK ON
  37.       SET RAW OFF
  38.       RETURN
  39. ENDCASE
  40. ?
  41. ? "Copying structure to HEX2POKE.$$$...."
  42. USE Hex2poke
  43. COPY STRUCTURE TO Hex2poke.$$$
  44. USE Hex2poke.$$$
  45. ? "Appending from &filename..HEX... "
  46. APPEND FROM &filename..HEX SDF
  47. GO TOP
  48. *
  49. * ---Generate the POKE sequence.
  50. ERASE
  51. SET ALTERNATE TO &filename..LIB
  52. SET ALTERNATE ON
  53. ? [* Subroutine.: ]+filename+[.LIB]
  54. ? [* Author.....: Your Name]
  55. ? [* Created on.: ]+DATE()
  56. ? [*]
  57. STORE &Mhexaddr TO address
  58. ? [SET CALL TO ]+STR(address,5)
  59. ? [* -----------0---1---2---3---4---5---6---7---8---9]
  60. DO WHILE .NOT. EOF
  61.    STORE &Mhexlen TO linelen
  62.    STORE &Mhexaddr TO address
  63.    IF linelen <> 0
  64.       STORE " " TO decimals
  65.       STORE "11" TO item
  66.       DO WHILE VAL(item)-10 <= linelen
  67.          STORE decimals+","+STR(@($(H&item,1,1),hexvalues)*16;
  68.                  + @($(H&item,2,1),hexvalues),3) TO decimals
  69.          STORE STR(VAL(item)+1,2) TO item
  70.       ENDDO
  71.       DO CASE
  72.          CASE LEN(decimals)-2 <= 40
  73.             ? [POKE ] + STR(address,5) + [,] + $(decimals,3)
  74.          CASE LEN(decimals)-2 <= 80
  75.             ? [POKE ]+STR(address,5)+[,] + $(decimals,3,40)+[;]
  76.             ? [           ]+$(decimals,43)
  77.          OTHERWISE
  78.          * ---LEN(decimals)-2 > 80
  79.             ? [POKE ]+STR(address,5)+[,] + $(decimals,3,40)+[;]
  80.             ? [           ]+$(decimals,43,40)+[;]
  81.             ? [           ]+$(decimals,83)
  82.       ENDCASE
  83.    ENDIF
  84.    IF ( # - 4*INT(#/4) ) = 0
  85.       ? [* -----------0---1---2---3---4---5---6---7---8---9]
  86.    ENDIF
  87.    SKIP
  88. ENDDO 
  89. ? [*]
  90. ? [RETURN]
  91. ? [* EOF: ] + filename + [.LIB]
  92. SET ALTERNATE OFF
  93. SET ALTERNATE TO
  94. CLEAR
  95. DELETE FILE Hex2poke.$$$
  96. SET RAW OFF
  97. SET TALK ON
  98. RETURN
  99. * EOF: HEX2POKE.PRG
  100.