home *** CD-ROM | disk | FTP | other *** search
/ Enigma Amiga Life 109 / EnigmaAmiga109CD.iso / software / varie / envhex13 / english / rexx / insertbyte.rexx < prev    next >
Encoding:
OS/2 REXX Batch file  |  1999-12-11  |  3.9 KB  |  134 lines

  1. /* ©1996 Dietmar Eilert. Empty GoldED macro */
  2.  
  3. OPTIONS RESULTS                             /* enable return codes     */
  4.  
  5. if (LEFT(ADDRESS(), 6) ~= "GOLDED") then    /* not started by GoldEd ? */
  6.     address 'GOLDED.1'
  7.  
  8. 'LOCK CURRENT RELEASE=4'                    /* lock GUI, gain access   */
  9.  
  10. if (RC ~= 0) then
  11.     exit
  12.  
  13. OPTIONS FAILAT 6                            /* ignore warnings         */
  14.  
  15. SIGNAL ON SYNTAX                            /* ensure clean exit       */
  16.  
  17. /* ------------------------ INSERT YOUR CODE HERE: ------------------- */
  18. /* $VER: 1.3, ©1999 Wolfgang Morgeneier */
  19.  
  20. parse arg sprache
  21. if sprache = "d" then do
  22.    R1B= "Wirklich ein Byte einfügen?|Programmdateien werden dadurch unbrauchbar!"
  23.    R1T= "Achtung"
  24.    R1X= "OK|!Abbrechen"
  25.    R2P= "Der Cursor muß sich im Hexbereich innerhalb eines Bytes befinden"
  26. end
  27. else do
  28.    R1B= "Really insert a byte?|Program files will not be useable any more!"
  29.    R1T= "Attention"
  30.    R1X= "OK|!Cancel"
  31.    R2P= "The cursor must be in the hex area at a byte"
  32. end
  33.  
  34. 'REQUEST Body="' || R1B || '" Title="' || R1T || '" Button="' || R1X || '"'
  35. if Result = 0 then do
  36.    'UNLOCK'
  37.    exit
  38. end
  39.  
  40. 'QUERY Name=Column Var=Spalte'
  41. 'QUERY Name=Code Var=Zeichen'
  42. if Spalte<11 | Spalte>45 | Zeichen=32 then do
  43.    'REQUEST Problem="' || R2P || '"'
  44.    'UNLOCK'
  45.    exit
  46. end
  47.  
  48. 'QUERY Name=Line Var=Zeile'
  49. 'QUERY Name=Lines Var=GesZeilen'
  50. 'QUERY Name=Buffer Var=Inhalt'
  51. 'GOTO Column=11'
  52.  
  53. Zeile1= compress(substr(Inhalt, 11, 35))
  54. Start= ((Spalte-11)-((Spalte-11)%9)) % 2
  55. Zeile1x= right(Zeile1, 2)
  56. if length(Zeile1)=32 then do
  57.    if Start > 0 then   Zeile1= left(Zeile1, 2*Start) || "00" || substr(Zeile1, 2*Start+1, 30-2*Start)
  58.    else                Zeile1= "00" || left(Zeile1, 30)
  59.  
  60.    if Zeile=GesZeilen then do
  61.       'HEXKEY KEYL="' || Zeile1 || '"'
  62.       'SMARTCR'
  63.       'GOTO Column=1'
  64.       Addresse= d2x(x2d(left(Inhalt, 8))+16)
  65.       Addresse= reverse(overlay(reverse(Addresse), "00000000", 1, 8, "0"))
  66.       Inhalt= Addresse || "  " || Zeile1x || "                                   "
  67.       'FIX Var=Inhalt'
  68.       'TEXT stay T="' || Inhalt || '"'
  69.       'GOTO Column=11'
  70.       'HEXKEY KEYL="' || Zeile1x || copies(" ", 30) || '"'
  71.    end
  72.    else do
  73.       'HEXKEY KEYL="' || Zeile1 || '"'
  74.    end
  75.    if Zeile<GesZeilen-1 then do
  76.       do i=Zeile+1 to GesZeilen-1
  77.          'DOWN'
  78.          'GOTO Column=11'
  79.          'QUERY Name=Buffer Var=Inhalt'
  80.          Zeile1= compress(substr(Inhalt, 11, 35))
  81.          Zeile2x= right(Zeile1, 2)
  82.          Zeile1= Zeile1x || left(Zeile1, 30)
  83.          Zeile1x= Zeile2x
  84.          'HEXKEY KEYL="' || Zeile1 || '"'
  85.       end
  86.    end
  87.    if Zeile<GesZeilen then do
  88.       'SMARTCR'
  89.       'GOTO Column=11'
  90.       'QUERY Name=Buffer Var=Inhalt'
  91.       Zeile1= compress(substr(Inhalt, 11, 35))
  92.       if length(Zeile1) = 32 then do
  93.          Zeile2x= right(Zeile1, 2)
  94.          Zeile1= Zeile1x || left(Zeile1, 30)
  95.          Zeile1x= Zeile2x
  96.          'HEXKEY KEYL="' || Zeile1 || '"'
  97.          'SMARTCR'
  98.          'GOTO Column=1'
  99.          Addresse= d2x(x2d(left(Inhalt, 8))+16)
  100.          Addresse= reverse(overlay(reverse(Addresse), "00000000", 1, 8, "0"))
  101.          Inhalt= Addresse || "  " || Zeile1x || "                                   "
  102.          'FIX Var=Inhalt'
  103.          'TEXT stay T="' || Inhalt || '"'
  104.          'GOTO Column=11'
  105.          'HEXKEY KEYL="' || Zeile1x || copies(" ", 30) || '"'
  106.       end
  107.       else do
  108.          Zeile1= Zeile1x || left(Zeile1, 30)
  109.          'HEXKEY KEYL="' || Zeile1 || '"'
  110.       end
  111.    end
  112. end
  113. else do
  114.    if Start > 0 then   Zeile1= left(Zeile1, 2*Start) || "00" || substr(Zeile1, 2*Start+1, length(Zeile1)-2*Start)
  115.    else                Zeile1= "00" || Zeile1
  116.    if length(Zeile1) < 32 then Zeile1=substr(Zeile1,1,32)
  117.    'HEXKEY KEYL="' || Zeile1 || '"'
  118. end
  119.  
  120. 'GOTO Line=' || Zeile || ' Column=' || Spalte
  121.  
  122. 'UNLOCK'
  123. exit
  124.  
  125. /* ---------------------------- END OF YOUR CODE --------------------- */
  126.  
  127. SYNTAX:
  128.  
  129. SAY "Sorry, error line" SIGL ":" ERRORTEXT(RC) ":-("
  130.  
  131. 'UNLOCK'
  132.  
  133. exit
  134.