Intel HEX

Формат файла для передачи двоичной информации

Intel hex
Расширения имени файлаОбщего назначения:
.hex , [1] .mcs , [2] .int , [3] .ihex , .ihe, .ihx[4]
Платформо-специфические:
.h80 , .h86, [5] [6] .a43 , [7] [4] .a90[7] [4]
Разделенные, банковские или страничные:
.hxl.hxh, [8] .h00.h15, .p00.pff[9]
Двоичные или Intel hex:
.obj , .obl, [8] .obh , [8] .rom ,.eep

Формат файла шестнадцатеричного объекта Intel , формат Intel hex или Intellec Hex — это формат файла , который передает двоичную информацию в текстовой форме ASCII , [10] что позволяет хранить ее на недвоичных носителях, таких как бумажная лента , перфокарты и т. д., для отображения на текстовых терминалах или печати на строчно-ориентированных принтерах . [11] Формат обычно используется для программирования микроконтроллеров , EPROM и других типов программируемых логических устройств и аппаратных эмуляторов . В типичном приложении компилятор или ассемблер преобразует исходный код программы ( например , на языке C или ассемблере ) в машинный код и выводит его в объектный или исполняемый файл в шестнадцатеричном (или двоичном) формате. В некоторых приложениях формат Intel hex также используется в качестве формата контейнера, содержащего пакеты потоковых данных . [12] Обычные расширения файлов, используемые для результирующих файлов, — .HEX [1] или .H86. [5] [6] Затем HEX-файл считывается программистом для записи машинного кода в PROM или передается в целевую систему для загрузки и выполнения. [11] [13] Существуют различные инструменты для преобразования файлов из шестнадцатеричного формата в двоичный (например, HEX2BIN ) и наоборот (например, OBJHEX, OH, OHX, BIN2HEX).

История

Формат Intel hex был первоначально разработан для Intel 's Intellec Microcomputer Development Systems [14] : 10–11  (MDS) в 1973 году для загрузки и выполнения программ с бумажной ленты . Он также использовался для указания содержимого памяти для Intel для производства ПЗУ , [15] которое ранее приходилось кодировать в гораздо менее эффективном формате BNPF (Begin-Negative-Positive-Finish). [14] : 11  В 1973 году «программная группа» Intel состояла только из Билла Байерли и Кеннета Бергетта, а также Гэри Килдалла в качестве внешнего консультанта, работавшего под названием Microcomputer Applications Associates (MAA) и основавшего Digital Research в 1974 году. [16] [17] [18] [9] Начиная с 1975 года формат использовался системами Intellec Series II ISIS-II , поддерживающими дисководы, с файлами, использующими расширение HEX. [19] Многие устройства программирования PROM и EPROM поддерживают этот формат.

Формат

Intel HEX состоит из строк текста ASCII , которые разделены символами перевода строки или возврата каретки или обоими. Каждая текстовая строка содержит заглавные шестнадцатеричные символы, которые кодируют несколько двоичных чисел. Двоичные числа могут представлять данные, адреса памяти или другие значения в зависимости от их положения в строке, а также типа и длины строки. Каждая текстовая строка называется записью .

Структура записи

Запись (строка текста) состоит из шести полей ( частей), которые располагаются в порядке слева направо: [11]

  1. Начальный код , один символ, двоеточие ASCII ' : '. Все символы, предшествующие этому символу в записи, следует игнорировать. [15] [5] [20] [21] [22] [23] Фактически, очень ранние версии спецификации даже требовали минимум 25 символов NUL , которые должны были предшествовать первой записи и следовать за последней, из-за того, что формат изначально был форматом бумажной ленты , для обработки которого требовались ввод и вывод ленты . [15] [24] [21] [22] Однако, поскольку это была малоизвестная часть спецификации, не все написанное программное обеспечение справлялось с этим правильно. Он позволяет хранить другую связанную информацию в том же файле (и даже в той же строке), [15] [23] средство, используемое различными утилитами разработки программного обеспечения для хранения таблиц символов или дополнительных комментариев, [25] [15] [21] [26] [9] [27] и сторонние расширения, использующие другие символы в качестве начального кода, такие как цифры ' 0 '..' 9 ' от Intel [28] и Keil , [26] ' $ ' от Mostek , [29] [30] или ' ! ', ' @ ', ' # ', ' \ ', ' & ' и ' ; ' от TDL . [30] [31] По соглашению, ' // ' часто используется для комментариев. [32] [33] Ни одно из этих расширений не может содержать символы ':' как часть полезной нагрузки.
  2. Количество байтов , две шестнадцатеричные цифры (одна пара шестнадцатеричных цифр), указывающие количество байтов (пар шестнадцатеричных цифр) в поле данных. Максимальное количество байтов — 255 (0xFF). Значения 8 (0x08), [9] 16 (0x10) [9] и 32 (0x20) — это обычно используемые количества байтов. Не все программное обеспечение справляется с количествами больше 16. [2]
  3. Адрес , четыре шестнадцатеричные цифры, представляющие 16-битное смещение начального адреса памяти данных. Физический адрес данных вычисляется путем добавления этого смещения к ранее установленному базовому адресу, что позволяет адресовать память за пределами 64-килобайтного предела 16-битных адресов. Базовый адрес, который по умолчанию равен нулю, может быть изменен различными типами записей. Базовые адреса и смещения адресов всегда выражаются как значения с прямым порядком байтов .
  4. Тип записи (см. типы записей ниже), две шестнадцатеричные цифры,00к05, определяющий значение поля данных.
  5. Данные , последовательность из n байтов данных, представленная 2 n шестнадцатеричными цифрами. Некоторые записи опускают это поле ( n равно нулю). Значение и интерпретация байтов данных зависят от приложения. (4-битные данные должны храниться либо в нижней, либо в верхней половине байтов, то есть один байт содержит только один адресуемый элемент данных. [15] )
  6. Контрольная сумма , две шестнадцатеричные цифры, вычисляемое значение, которое можно использовать для проверки отсутствия ошибок в записи.

Цветовая легенда

Для наглядности поля записей Intel HEX в этой статье окрашены следующим образом:

  Начальный код  Количество байтов  Адрес  Тип записи  Данные  Контрольная сумма

Расчет контрольной суммы

Байт контрольной суммы записи — это дополнение до двух младшего байта (LSB) суммы всех декодированных значений байтов в записи, предшествующей контрольной сумме. Он вычисляется путем суммирования декодированных значений байтов и извлечения LSB суммы (т. е. контрольной суммы данных), а затем вычисления дополнения до двух LSB (например, путем инвертирования его битов и добавления единицы).

Например, в случае записи : 03 0030 00 02337A 1E сумма декодированных значений байтов равна 03+00+30+00+02+33+= E2, который имеет значение LSB E2. Дополнение до двух E2равно1E — байт контрольной суммы, появляющийся в конце записи.

Достоверность записи можно проверить, вычислив ее контрольную сумму и убедившись, что вычисленная контрольная сумма равна контрольной сумме, указанной в записи; если контрольные суммы различаются, возникает ошибка. Поскольку байт контрольной суммы записи является дополнением до двух — и, следовательно, аддитивной инверсией — контрольной суммы данных, этот процесс можно свести к суммированию всех декодированных значений байтов, включая контрольную сумму записи, и проверке того, что младший бит суммы равен нулю. При применении к предыдущему примеру этот метод дает следующий результат: 03+00+30+00+02+33++1E = 100, который имеет значение LSB 00.

Ограничители текстовых строк

Записи Intel HEX обычно разделяются одним или несколькими символами завершения строки ASCII, так что каждая запись отображается отдельно в текстовой строке. Это повышает читаемость, визуально разделяя записи, а также обеспечивает заполнение между записями, что может быть использовано для повышения эффективности машинного анализа . Однако символы завершения строки являются необязательными, поскольку ' : ' используется для обнаружения начала записи. [15] [5] [24] [20] [21] [22] [23]

Программы, создающие записи HEX, обычно используют символы завершения строки, соответствующие соглашениям их операционных систем . Например, программы Linux используют один символ LF ( перевод строки , шестнадцатеричное значение 0A) для завершения строк, тогда как программы Windows используют CR ( возврат каретки , шестнадцатеричное значение 0D), за которым следует LF.

Типы записей

Intel HEX имеет шесть стандартных типов записей: [11]

Шестнадцатеричный кодТип записиОписаниеПример
00ДанныеКоличество байт указывает количество байтов данных в записи. В примере 0B(одиннадцать) байтов данных. 16-битный начальный адрес для данных (в примере адреса начинаются с0010) и данные (61,64,64,72,65,73,73,20,67,61,70).: 0B 0010 00 6164647265737320676170 A7
01Конец файлаДолжен встречаться ровно один раз в файле в последней записи файла. Количество байтов равно 00, поле адреса обычно0000и поле данных опущено.: 00 0000 01ФФ
02Расширенный адрес сегментаКоличество байтов всегда равно 02., поле адреса (обычно0000) игнорируется, а поле данных содержит 16-битный базовый адрес сегмента. Он умножается на 16 и добавляется к каждому последующему адресу записи данных для формирования начального адреса для данных. Это позволяет адресовать до одного мебибайта (1048576 байт) адресного пространства.: 02 0000 02 1200 ЭА
03Адрес начального сегментаДля процессоров 80x86 указывает начальный адрес выполнения. Количество байтов всегда равно 04, поле адреса -0000и первые два байта данных — это значение CS , последние два — это значение IP . Выполнение должно начаться с этого адреса.: 04 0000 03 00003800 С1
04Расширенный линейный адресПозволяет использовать 32-битную адресацию (до 4 ГиБ ). Количество байтов всегда равно 02и поле адреса игнорируется (обычно0000). Два байта данных (big endian) определяют верхние 16 бит 32-битного абсолютного адреса для всех последующих типов.00записи; эти верхние биты адреса применяются до следующего04запись. Абсолютный адрес для типа00запись формируется путем объединения верхних 16 бит адреса самого последнего04запись с младшими 16 битами адреса00запись. Если тип00запись не предшествует ни одному типу04записи, то его старшие 16 бит адреса по умолчанию равны 0000.: 02 0000 04 0800 F2
05Начальный линейный адресКоличество байтов всегда равно 04., поле адреса -0000. Четыре байта данных представляют собой 32-битное значение адреса (big endian). В случае процессоров, которые его поддерживают, этот 32-битный адрес является адресом, с которого должно начаться выполнение.: 04 0000 05 000000CD 2A

Для вариантов использовались и другие типы записей, в том числе06('мигающие' сообщения / контейнер протокола передачи) Уэйна и Лейна, [34] (начало блока),(конец блока),(дополненные данные),0D(пользовательские данные) и(другие данные) BBC / Micro:bit Educational Foundation , [35] и81(данные в сегменте кода ),82(данные в сегменте данных ),83(данные в сегменте стека ),84(данные в дополнительном сегменте ),85( адрес абзаца для абсолютного сегмента кода),86(адрес абзаца для абсолютного сегмента данных),87(адрес абзаца для абсолютного сегмента стека) и88(адрес абзаца для абсолютного дополнительного сегмента) от Digital Research . [6] [20]

Именованные форматы

Оригинальный формат 4-битной/8-битной бумажной ленты Intellec Hex и формат компьютерной перфокарты Intellec Hex в 1973/1974 годах поддерживали только один тип записи00. [36] [37] [25] Это было расширено около 1975 года [ когда? ] для поддержки также типа записи01. [15] Иногда называемый символическим шестнадцатеричным форматом , [38] он может включать необязательный заголовок, содержащий таблицу символов для символической отладки , [25] [28] [26] [9] все символы в записи, предшествующие двоеточию, игнорируются. [15] [5]

Около 1978 года [ когда? ] компания Intel представила новые типы записей02и03( чтобы добавить поддержку сегментированного адресного пространства новых на тот момент процессоров 8086/8088 ) в их расширенном шестнадцатеричном формате Intellec . [ когда? ]

Иногда используются специальные названия для обозначения форматов файлов HEX, которые используют определенные подмножества типов записей. Например:

  • Файлы I8HEX (также известные как HEX-80 ) используют только типы записей00и01
  • Файлы I16HEX (также известные как HEX-86 ) используют только типы записей00через03[10]
  • Файлы I32HEX (также известные как HEX-386 ) используют только типы записей00,01,04, и05

Пример файла

В этом примере показан файл, содержащий четыре записи данных, за которыми следует запись конца файла:

: 10 0100 00 214601360121470136007EFE09D21901 40 : 10 0110 00 2146017E17C20001FF5F160021480119 28 : 10 0120 00 194E792346239 65778239EDA3F01B2CA A7 : 10 0130 00 3F0156702B5E712B722B732146013421 C7 : 00 0000 01ФФ

  Начальный код  Количество байтов  Адрес  Тип записи  Данные  Контрольная сумма

Варианты

Помимо собственного расширения Intel, несколько сторонних компаний также определили варианты и расширения шестнадцатеричного формата Intel, включая Digital Research (как в так называемом «шестнадцатеричном формате Digital Research» [6] [20] ), Zilog , Mostek , [29] [30] TDL , [30] [31] Texas Instruments , Microchip , [39] [40] c't , Wayne and Layne [34] и BBC / Micro:bit Educational Foundation (с его «универсальным шестнадцатеричным форматом» [35] ). Они могут содержать информацию о точках входа программы и содержимом регистра , измененный порядок байтов в полях данных, значения заполнения для неиспользуемых областей, биты предохранителей и другие различия.

Формат шестнадцатеричного кода Digital Research для процессоров 8086 поддерживает сегментную информацию, добавляя типы записей для различения кода, данных, стека и дополнительных сегментов. [5] [6] [20]

Большинство ассемблеров для CP/M-80 (а также XASM09 для Motorola 6809 ) не используют тип записи 01h для обозначения конца файла, а вместо этого используют запись типа данных нулевой длины 00h. [41] [1] Это упрощает объединение нескольких шестнадцатеричных файлов. [42] [43] [1]

Texas Instruments определяет вариант, в котором адреса основаны на битовой ширине регистров процессора, а не на байтах.

Компания Microchip определяет варианты INTHX8S [44] (INHX8L, [1] INHX8H [1] ), INHX8M, [44] [1] [45] INHX16 [44] (INHX16M [1] ) и INHX32 [46] для своих микроконтроллеров PIC .

Известно также , что кросс-макроассемблер AS Альфреда Арнольда [1] , эмулятор 8051 Вернера Хеннига-Ролеффа SIM51 [26] и кросс-конвертер BINTEL Маттиаса Р. Пола [47] определяют расширения шестнадцатеричного формата Intel.

Смотрите также

Ссылки

  1. ^ abcdefghi Arnold, Alfred "Alf" (2020) [1996, 1989]. "6.3. P2HEX". Macro Assembler AS - Руководство пользователя. V1.42. Перевод Arnold, Alfred "Alf"; Hilse, Stefan; Kanthak, Stephan; Sellke, Oliver; De Tomasi, Vittorio. Ахен, Германия. Архивировано из оригинала 2020-02-28 . Получено 2020-02-28 . […] Для микроконтроллеров PIC переключатель -m <0..3> позволяет генерировать три различных варианта формата Intel Hex. Формат 0 - это INHX8M, который содержит все байты в порядке Lo-Hi-Order. Адреса становятся вдвое больше, поскольку PIC имеют адресное пространство, ориентированное на слова, которое увеличивает адреса только на один за слово. […] В формате 1 (INHX16M) байты хранятся в их естественном порядке. Это формат, который Microchip использует для своих собственных программных устройств. Формат 2 (INHX8L) и 3 (INHX8H) разделяет слова на нижние и верхние байты. […] К сожалению, в литературе можно найти разные утверждения о последней строке файла Intel-Hex. Поэтому P2HEX знает три разных варианта, которые можно выбрать […] :00000001FF […] :00000001 […] :0000000000 […] По умолчанию используется вариант 0, который, по-видимому, является наиболее распространенным. […] Если имя целевого файла не имеет расширения, предполагается расширение HEX. […]
  2. ^ ab "AR#476 PROMGen - Описание форматов файлов PROM/EEPROM: MCS, EXO, HEX и другие" . Xilinx . 2010-03-08. Шестнадцатеричный объект Intel MCS-86 - Код формата файла 88. Архивировано из оригинала 2020-03-03 . Получено 2020-03-03 .
  3. ^ Sabnis, Abhishek (2011-02-04). "Как преобразовать файл .out в .int, .hex, .a43". Форум Code Composer Studio . Texas Instruments . Архивировано из оригинала 2023-10-20 . Получено 2023-10-20 . Программисту TI-gang нужны форматы файлов .int, .hex, .a43.
  4. ^ abc Schuldt, Michael (2018). "intel-hex-mode". github.com . Архивировано из оригинала 2020-10-24 . Получено 2023-10-20 . По умолчанию этот режим включен для файлов с расширением .a90, .hex, .a43 или .ihx.
  5. ^ abcdef "3.1. Intel 8086 Hex File Format". CP/M-86 Operating System - System Guide (PDF) (2nd printing, 1st ed.). Pacific Grove, California, USA: Digital Research . Июнь 1981. С. 15–16. Архивировано (PDF) из оригинала 28.02.2020 . Получено 28.02.2020 . С. 16: […] Следующие данные выводятся только из ASM-86: 81 то же, что и 00, данные принадлежат сегменту кода […] 82 то же, что и 00, данные принадлежат сегменту данных […] 83 то же, что и 00, данные принадлежат сегменту стека […] 84 то же, что и 00, данные принадлежат дополнительному сегменту […] 85 адрес абзаца для абсолютного сегмента кода […] 86 адрес абзаца для абсолютного сегмента данных […] 87 адрес абзаца для абсолютного сегмента стека […] 88 адрес абзаца для абсолютного дополнительного сегмента […] Все символы, предшествующие двоеточию для каждой записи, игнорируются. […](17 страниц)
  6. ^ abcde "Приложение C. Шестнадцатеричный формат вывода ASM-86". CP/M-86 - Операционная система - Руководство программиста (PDF) (3-е изд.). Pacific Grove, Калифорния, США: Digital Research . Январь 1983 [1981]. стр. 97–100. Архивировано (PDF) из оригинала 2020-02-27 . Получено 2020-02-27 . стр. 97–99: […] Формат Intel идентичен формату, определенному Intel для 8086. Формат Digital Research почти идентичен формату Intel, но добавляет информацию о сегменте к шестнадцатеричным записям. Вывод любого формата может быть введен в GENCMD , но формат Digital Research автоматически обеспечивает идентификацию сегмента. Сегмент - это наименьшая единица программы, которая может быть перемещена. […] В определении типов записей 00 и 02 шестнадцатеричный формат Digital Research отличается от формата Intel. Intel определяет по одному значению для типа записи данных и типа адреса сегмента. Digital Research идентифицирует каждую запись с сегментом, который ее содержит. […] 00H для данных, принадлежащих всем сегментам 8086 […] 81H для данных, принадлежащих сегменту CODE […] 82H для данных, принадлежащих сегменту DATA […] 83H для данных, принадлежащих сегменту STACK […] 84H для данных, принадлежащих сегменту EXTRA […] 02H для всех записей адресов сегментов […] 85H для абсолютного адреса сегмента CODE […] 86H для адреса сегмента DATA […] 87H для адреса сегмента STACK […] 88H для адреса сегмента EXTRA […][1] (1+viii+122+2 страницы)
  7. ^ ab Ramos, Rubens (2010) [2008]. "intel-hex-mode.el --- Режим для файлов Intel Hex" . Получено 20.10.2023 .
  8. ^ abc "Интерактивный дизассемблер - Шестнадцатеричные форматы файлов". Hex-Rays . 2006. Архивировано из оригинала 2020-03-01 . Получено 2020-03-01 .[2] Архивировано 16.11.2021 на Wayback Machine
  9. ^ abcdef Рош, Эммануэль (01.04.2020). "Формат файла Intel HEX". Франция: Группа новостей : comp.os.cpm. INTELHEX.WS4. Архивировано из оригинала 08.12.2021 . Получено 08.12.2021 . […] Формат файла Intel HEX может содержать гораздо больше, чем "байты данных". Если строки не начинаются с двоеточия (":"), они могут содержать все, что угодно. […] Однажды я видел большой файл HEX […] В начале он содержал исходный код программы PL/M , а в конце — полученный файл HEX, созданный компилятором PL/M. […] Я нашел еще один файл HEX, содержащий несколько строк комментариев, не в начале и не в конце, а разделяющих несколько строк "абсолютных записей". […] он был из "(Intel) 8008 Simulator". Итак, в начале его использования было хорошо известно, что файлы HEX могут содержать пояснения. […] в CP/M или любой 8-битной системе 64K остается один случай: «Адреса страниц». Начиная с CP/M, стандартно отображать адреса памяти с использованием шестнадцатеричной системы […] как мы уже говорили для файлов BIN/COM, адреса памяти — 0000/0100. […] эти адреса памяти можно записать как 00-00/01-00 […], чтобы сказать: Страница ноль, адрес ноль / Страница один, адрес ноль. […] наивысший адрес памяти в 8-битном компьютере 64K — FFFF […] Страница FF, адрес FF […] самые низкие адреса находятся на странице ноль (или 00), а самые высокие адреса находятся на странице FF. […] Типы файлов CP/M имеют длину в 3 буквы, можно использовать типы файлов в форме P00–PFF […], чтобы указать, по какому адресу памяти загрузить файл HEX. […] Я заметил, что большинство моих адресов заканчиваются на «00», поэтому адрес загрузки можно сократить до адреса страницы, который […] можно поместить в тип файла […]
  10. ^ ab "Приложение D. Форматы файлов абсолютных объектов MCS-86: Формат файлов шестнадцатеричных объектов". 8086 Family Utilities - Руководство пользователя для систем разработки на базе 8080/8085 (PDF) . Редакция E (A620/5821 6K DD ed.). Санта-Клара, Калифорния, США: Intel Corporation . Май 1982 [1980, 1978]. стр. D-8–D-13. Номер заказа 9800639-04. Архивировано (PDF) из оригинала 29.02.2020 . Получено 29.02.2020 .
  11. ^ Спецификация формата шестнадцатеричного объектного файла abcd . Редакция A. Корпорация Intel . 1998 [1988-01-06] . Получено 2019-07-23 .[3][4][5][6][7] (11 страниц)
  12. ^ "LT Programming Hex File Format Documentation -- In Circuit Programming". Analog Devices, Inc. / Linear Technology . 2021. Архивировано из оригинала 2021-03-07 . Получено 2021-12-11 .
  13. ^ "General: Intel Hex File Format". ARM Keil . ARM Germany GmbH . 2018-05-07 [2012]. KA003292. Архивировано из оригинала 2020-02-27 . Получено 2017-09-06 .[8]
  14. ^ ab Crosby, Kip (январь–март 1994 г.). «Рассвет микро: Intellecs от Intel» (PDF) . Аналитическая машина . 1 (3). Ассоциация компьютерной истории Калифорнии: 10–14. ISSN  1071-6351. Архивировано (PDF) из оригинала 2023-10-17 . Получено 2023-10-17 . стр. 10–11: […] Intel Intellec 8 […] впервые появился где-то в 1972 или 1973 году, за два года или больше до Altair 8800, который в стандартных исторических источниках часто называют «первым микрокомпьютером». […] Intel утверждает, что 8 Mod 8 был впервые произведен в 1973 году и снят с производства в 1975 году. У Тони Дуэлла есть плата ЦП 8 Mod 80, датированная 1972 годом, а 8 Mod 8 и 4 Mod 40 обе указаны в каталоге Intel Data Catalog, опубликованном в феврале 1976 года, поэтому фактический период производства мог быть несколько дольше. (Необходимо внимательно читать соответствующие документы Intel, поскольку названия MCS4, MCS40, MCS8 и MCS80 использовались практически без разбора для обозначения чипсетов, компьютеров или полных систем.) […](52 страницы) (Примечание. В этой статье не упоминается Intel Hex, но конкретно упоминается, что система Intel Intellec была официально представлена ​​в 1973 году, но существуют некоторые устройства, датированные 1972 годом.)
  15. ^ abcdefghi "Глава 6. Технические характеристики компонентов микрокомпьютерной системы - EPROM и ROM: I. Инструкции по программированию PROM и ROM - B1. Формат бумажной ленты Intellec Hex / C1. Формат перфорированной карты Intellec Hex". Руководство пользователя MCS-80 (с введением в MCS-85). Санта-Клара, Калифорния, США: Intel Corporation . Октябрь 1977 г. [1975]. стр. 6-75–6-78. 98-153D . Получено 27.02.2020 г. стр. 6-76: […] В формате Intel Intellec Hex поле данных может содержать как 8-, так и 4-битные данные. Для представления как 8-, так и 4-битных данных необходимо использовать два шестнадцатеричных символа ASCII. В случае 4-битных данных только один из символов имеет значение и должен быть указан в форме заказа Intel PROM/ROM. […] Перед первым полем данных и после последнего поля данных должна быть длина заголовка/концевика не менее 25 нулевых символов. Комментарии (за исключением двоеточия) могут быть размещены на заголовке ленты . […] Если данные 4-битные, то либо старшая, либо младшая цифра представляет данные, а другая цифра пары может быть любой шестнадцатеричной цифрой ASCII. […][9][10] (468 страниц) (Примечание. В этом руководстве также описываются « Формат бумажной ленты BPNF », «Формат шестнадцатеричной бумажной ленты Non-Intellec» и «Формат компьютерной перфокарты PN».)
  16. ^ Kildall, Gary Arlen (январь 1980 г.). «История CP/M, эволюция отрасли: точка зрения одного человека». Журнал компьютерной гимнастики и ортодонтии доктора Добба . 5 (1): 6–7. № 41. Архивировано из оригинала 24.11.2016 . Получено 03.06.2013 . […] Программы были написаны и протестированы группой разработчиков программного обеспечения Intel, состоящей из меня и двух других людей, и мы были готовы к реальной машине. […]
  17. ^ Килдалл, Гэри Арлен (2016-08-02) [1993]. Килдалл, Скотт ; Килдалл, Кристин (ред.). Computer Connections: People, Places, and Events in the Evolution of the Personal Computer Industry (Рукопись, часть 1). Kildall Family. Архивировано (PDF) из оригинала 2016-11-17 . Получено 2016-11-17 .(Примечание. Часть 2 не опубликована по соображениям конфиденциальности.)
  18. ^ Бергетт, Кеннет "Кен" (10.11.2017). "Разработка операционной системы Intel ISIS - интервью с Кеном Бергеттом". Архивировано из оригинала 24.11.2023 . Получено 25.11.2023 .[11][12]
  19. ^ Файхтингер, Хервиг (1987). «1.8.5. Lochstreifen-Datenformate: Das Intel-Hex-Format» [1.8.5. Форматы данных бумажной ленты]. Arbeitsbuch Mikrocomputer [ Рабочая тетрадь по микрокомпьютеру ] (на немецком языке) (2-е изд.). Мюнхен, Германия: Franzis-Verlag GmbH . С. 240–243 [243]. ISBN 3-7723-8022-0.
  20. ^ abcde "4.3 Intel Hexadecimal File Format". Concurrent CP/M Operating System - Programmer's Reference Guide (PDF) (1-е изд.). Pacific Grove, Калифорния, США: Digital Research Inc. Январь 1984 г. стр. 4-9–4-12. Архивировано (PDF) из оригинала 2021-12-11 . Получено 2021-12-11 . стр. 4-11–4-12: […] Следующие данные выводятся только из ASM-86: 81 то же, что и 00, данные принадлежат сегменту кода […] 82 то же, что и 00, данные принадлежат сегменту данных […] 83 то же, что и 00, данные принадлежат сегменту стека […] 84 то же, что и 00, данные принадлежат дополнительному сегменту […] *85 адрес абзаца для абсолютного сегмента кода […] *86 адрес абзаца для абсолютного сегмента данных […] *87 адрес абзаца для абсолютного сегмента стека […] *88 адрес абзаца для абсолютного дополнительного сегмента […] * 85, 86, 87 и 88 являются расширениями цифровых исследований. […] Все символы, предшествующие двоеточию для каждой записи, игнорируются. […](346 страниц) (Примечание. В этом руководстве только типы 85, 86, 87 и 88 обозначены как расширения Digital Research, как будто типы 81, 82, 83, 84 таковыми не являются.)
  21. ^ abcd "2.8. Форматы микропроцессоров, 2.8.1. Требования к входным данным: формат Intel Intellec 8/MDS. Выберите код 83". Руководство оператора по возможностям последовательного ввода-вывода программистов ввода-вывода данных - Пакет формата перевода (PDF) . Редакция C. Data I/O Corporation . Октябрь 1980 г. стр. 2-10. 055-1901. Архивировано (PDF) из оригинала 01.03.2020 г. Получено 01.03.2020 г. стр. 2-10: […] Ввод […] Это пространство можно использовать для перевода строки, возврата каретки или комментариев. […] Вывод […] 2) Каждая строка заканчивается непечатаемым переводом строки, возвратом каретки и нулями. […](1+ii+19 страниц)
  22. ^ abc "Формат Intel Intellec 8/MDS, код 83". Форматы файлов перевода (PDF) . Data I/O Corporation . 1987-09-03. стр. 22, 26–27, 52–53, 54. Архивировано (PDF) из оригинала 2021-07-28 . Получено 2020-03-01 . стр. 22, 26, 52: […] Непечатаемый возврат каретки, перевод строки и нули, определяемые количеством нулей […](56 страниц)
  23. ^ abc "Приложение B: Intel Hex и Intel Extended Hex Format - B.1 Common Format". Руководство по контроллеру Fujitsu Semiconductor: Руководство по комплекту Softune Linkage Kit для семейства FR/F2MC для V3 (PDF) . Fujitsu Limited . 2001. стр. 319–525 [320–321]. Архивировано (PDF) из оригинала 2021-12-12 . Получено 2021-12-12 . стр. 321: […] (g) Как правило, добавляется управляющий код (например, CR и LF). Данные в этом поле пропускаются до тех пор, пока не появится начальный символ ":" (a). Поскольку поля (a), (b), (c), (d) и (f) всегда существуют, минимальная длина записи составляет 11 байт, а максимальная — 521 байт. […](4+x+350 страниц)
  24. ^ ab "1.6.4 PIP". Руководство по операционной системе CP/M (Первое издание). Pacific Grove, Калифорния, США: Digital Research . Июль 1982 г. [1976]. стр. 17–23 . Получено 12.12.2021 . стр. 19–21: […] PIP выполняет специальную функцию, если местом назначения является дисковый файл с типом "HEX" ( файл машинного кода Intel в шестнадцатеричном формате), а источником является внешнее периферийное устройство, например устройство чтения бумажной ленты . В этом случае программа PIP проверяет, содержит ли исходный файл правильно сформированный шестнадцатеричный файл с допустимыми шестнадцатеричными значениями и записями контрольной суммы. При обнаружении недопустимой входной записи PIP выводит сообщение об ошибке на консоль и ждет корректирующих действий. Обычно достаточно открыть устройство чтения и повторно запустить раздел ленты (оттянуть ленту примерно на 20 дюймов). Когда лента готова к перечитыванию, на консоли набирается один возврат каретки , и PIP попытается выполнить еще одно чтение. Если позиция ленты не может быть правильно прочитана, пользователь продолжает чтение (набирая возврат после сообщения об ошибке) и вводит запись вручную с помощью программы ED после создания файла на диске. Для удобства PIP позволяет вводить конец файла с консоли, если исходный файл является устройством RDR:. В этом случае программа PIP считывает устройство и отслеживает клавиатуру. Если на клавиатуре набирается ctl-Z , операция чтения завершается нормально. […] […] Отправьте 40 нулей на устройство перфорации ; скопируйте файл X.ASM на перфоратор, за которым следует конец файла (ctl-Z) и еще 40 нулей. […] […] Передача данных HEX: все данные проверяются на соответствие формату файла Intel Hex. Необязательные символы между записями Hex удаляются во время операции копирования. Консоль будет запрошена для корректирующих действий в случае возникновения ошибок. […] […] Игнорировать записи «:00» при передаче файла формата Intel hex (параметр I автоматически устанавливает параметр H). […] […] Сначала скопировать X.HEX на устройство PUN: и игнорировать конечную запись «:00» в X.HEX; продолжить передачу данных, прочитав Y.ZOT, который содержит записи HEX, включая любые содержащиеся в нем записи «:00». […]PIP PUN:=NUL:,X.ASM,EOF:,NUL:HIPIP PUN:=X.HEX[i],Y.ZOT[h][13] (6+250 страниц)
  25. ^ abc "Приложение A: Пример программы на PL/M: Лента шестнадцатеричных объектов". MCS-8 Руководство по программированию на PL/M (PDF) . Редакция 1 (напечатано в сентябре 1974 г.). Санта-Клара, Калифорния, США: Intel Corporation . 1974-03-15 [сентябрь 1973 г.]. стр. 102. MCS180-0774-1K, MCS280-0974-1K. Архивировано (PDF) из оригинала 29-01-2022 . Получено 18-05-2022 . стр. 102:
        1 CARRY 05714
        2 ZERO 05715
        3 SIGN 05716
        4 PARITY 05717
        5 MEMORY 06000
       23 SQUAREROOT 04003
    […]
       83 MONITORUSES 05766
     $
    ****************************************
    :1008000044520A2E0B36D0F930FA31CF30D730F9B6
    […]
    :100AF0000936F4C730D70401C8C20C0031F930F808
    :040B0000445E0AFF46
    ****************************************
    :0000000000
     $
    (1+i+100+1+11+1 страниц) (Примечание. Показывает пример, содержащий разделители на основе звездочек и заголовок с отступом в виде пробела с именами символов, которые должны обрабатываться командой Intel ISIS HEXOBJ , а также INTERP/8 или INTERP/80 для символьной отладки . Этот необязательный заголовок не документирован как часть форматов Intel hex или BNPF, но содержится в руководствах по программированию Intel PL/M и ассемблера, создающих такие таблицы символов.)
  26. ^ abcd Хенниг-Ролефф, Вернер (1 февраля 1993 г.) [1988]. «HEX.DOC: формат Intel-HEX». SIM51 . 1.04 (на немецком языке). Архивировано из оригинала 11 августа 2017 г. Проверено 8 декабря 2021 г. […] Beim Absolut-Hex Konvertierprogramm von Keil können опционально […] Символьная информация в шестнадцатеричном файле aufgenommen werden. Символьная информация всегда находится в Anfang des Files, vor dem ersten ':'. Информация о символе не содержит никаких указаний, а также не может быть использована при изменении имени модуля, CODE, XDATA, DATA, IDATA, BIT, NUMBER. Для использования символов ASCII-Zeichen verwendet. Pro Zeile ist 1 Символ angeschrieben und zwar в форме: «0 SymbolName Wert» […][14][15] (Примечание. Это старая версия SIM51, программное обеспечение и документация поддерживались до 1996 года.)
  27. ^ Г., Георг (05 сентября 2021 г.) [04 сентября 2021 г.]. «Прошивка шестнадцатеричного файла». Микроконтроллер и цифровая электроника. mikrocontroller.net (на немецком языке) . Проверено 23 ноября 2023 г. […] Информация об отладке найдена в Intel с помощью "$" и. Данн камен дер Имя символов и адрес. Комментарий может быть изменен как ";". […] ASM48 для ISIS-2 производит несколько Hexfiles, […] ASM86 также. […]
  28. ^ ab "Приложение A. Пример формата листинга / Приложение C. Формат файла шестнадцатеричного объекта". 2920 Assembly Language Manual (PDF) . Санта-Клара, Калифорния, США: Intel Corporation . Август 1979 г. стр. A-3, C-1–C-2. Номер заказа 9800987-01. Архивировано (PDF) из оригинала 2023-11-26 . Получено 2023-11-26 . стр. C-1: […] Код отформатирован в шестнадцатеричных байтах данных. Файл содержит ASCII-представление шестнадцатеричных байтов данных. Сам объектный код предваряется таблицей символов. Эти две части могут быть загружены или сохранены вместе или по отдельности. Таблица символов представляет собой ряд записей, завершающихся знаком доллара. Каждая запись содержит три поля, разделенные одним или несколькими пробелами ASCII: […] числовое поле […] поле метки, содержащее ASCII-представление исходного программного символа […] поле адреса, содержащее шестнадцатеричный адрес, назначенный символу […] Таблица символов завершается записью, первым непустым символом которой является знак доллара. Код объекта […] следует за таблицей символов […] Каждая из этих записей или физических строк представляет собой шесть логических полей различной длины в символах или кадрах. […](90 страниц) (Примечание. Intel 2920 — цифровой сигнальный процессор, выпущенный в 1979 году.)
  29. ^ ab Форманиак, Питер Г.; Лейтч, Дэвид (июль 1977 г.). «Предлагаемый стандарт программного обеспечения микропроцессора». BYTE — журнал малых систем . Технический форум. Том 2, № 7. Питерборо, Нью-Гемпшир, США: Byte Publications, Inc., стр. 34, 62–63. ark:/13960/t32245485 . Получено 06.12.2021 .(3 страницы) (Примечание. Описывает расширение шестнадцатеричного формата Intel от Mostek .)
  30. ^ abcd Огдин, Кэрол Энн; Колвин, Нил; Питтман, Том; Табб, Филипп (ноябрь 1977 г.). «Форматы кода перемещаемых объектов». BYTE — журнал Small Systems Journal . Технический форум. 2 (11). Питерборо, Нью-Гемпшир, США: Byte Publications, Inc .: 198–205. ark:/13960/t59c88b4h, ark:/13960/t3kw76j24 . Получено 06.12.2021 .(8 страниц) (Примечание. Помимо прочего, описывает несовместимое расширение шестнадцатеричного формата Intel, используемого Technical Design Labs (TDL).)
  31. ^ аб Крейдл, Гюнтер (июнь 1981 г.). «Релокатор: формат Das TDL». Аппаратное обеспечение. Журнал Nascom - Zeitschrift für Anwender des NASCOM 1 или NASCOM 2 (на немецком языке). 2 (6). Гермерсхайм, Германия: Журнал Verlag NASCOM, MK-Systemtechnik: 12–14 [12]. Архивировано из оригинала 1 декабря 2021 г. Проверено 11 декабря 2021 г.(20 страниц) (Примечание. Показывает вариант формата TDL , который сам по себе является вариантом шестнадцатеричного формата Intel.)
  32. ^ Рюгер, Стефан М. (16.06.2022). «Предоставьте формат файла I: Intel HEX с комментариями, которые игнорируют ошибки контрольной суммы». AVRDUDE . Архивировано из оригинала 25.11.2023 . Получено 25.11.2023 .(Примечание. Вариант комментария AVRDUDE: Я могу неправильно создавать символы «:» как часть шестнадцатеричного дампа .)
  33. ^ Булл, Ханс Эйрик; Дин, Брайан С.; Рюгер, Стефан М.; Вунш, Йорг (15.07.2023). "AVRDUDE - Программа для загрузки/выгрузки флэш-памяти микроконтроллера AVR, EEPROM и многого другого для AVRDUDE" (PDF) . Версия 7.2. Архивировано (PDF) из оригинала 23.11.2023 . Получено 23.11.2023 . стр. 12: […] Я […] Intel Hex с комментариями по загрузке и допустимости ошибок контрольной суммы при загрузке […](66 страниц)
  34. ^ ab Beckler, Matthew L. (2016-07-25) [2016-07-19]. "Blinky Grid - последовательный оптический поток битов". Discourse . Миннеаполис, Миннесота, США: Wayne and Layne, LLC. Архивировано из оригинала 2021-12-11 . Получено 2021-12-11 .
  35. ^ ab "Спецификация универсального шестнадцатеричного формата micro:bit - Спецификация универсального шестнадцатеричного формата micro:bit". micro:bit . 0.4.0. Образовательный фонд Micro:bit . 2021-01-26 [2020]. Архивировано из оригинала 2021-08-14 . Получено 2021-12-08 . [16][17] (Примечание. Это своего рода толстый шестнадцатеричный формат файла.)
  36. Руководство оператора микрокомпьютерной системы Intellec 8. Корпорация Intel . Ноябрь 1973 г.
  37. ^ "Приложение D. Шестнадцатеричный формат программной ленты". Руководство оператора Intellec 8/MOD 80. Intel . Июнь 1974. 98-003A. [ …] Кадры 7,8: Тип записи […] Два символа ASCII. В настоящее время (1974) все записи имеют тип 0. Это поле зарезервировано для будущего расширения […][18]
  38. ^ Development Tools Catalog 1988 (PDF) . Intel Corporation . 1988. стр. 25–26, 30–32. Номер заказа 280199-004. Архивировано (PDF) из оригинала 2023-11-26 . Получено 2023-11-26 .(46 страниц)
  39. ^ "PIC Microcontrollers: PIC Hex File Format". Блог Kanda Electronics . Canolafan, Llanafan, Aberystwyth, Wales, UK: Embedded Results Ltd. 2012-04-26. Архивировано из оригинала 2021-08-16 . Получено 2021-12-11 .
  40. ^ "15.3 XC16-BIN2HEX Utility - 15.3.3 Файлы ввода/вывода". MPLAB XC16 Assembler, Linker and Utilities - Руководство пользователя (PDF) . Microchip Technology Inc. 2018 [2013]. стр. 240–241. ISBN 978-1-5224-2828-2. DS50002106D. Архивировано (PDF) из оригинала 2019-01-22 . Получено 2023-12-05 . стр. 240: […] Поскольку формат файла Intel hex ориентирован на байты, а 16-разрядный ПК — нет, разделы памяти программ требуют специальной обработки. Каждое 24-разрядное слово программы расширяется до 32 бит путем вставки так называемого «фантомного байта». Каждый адрес памяти программ умножается на 2, чтобы получить адрес байта. Например, раздел, который находится по адресу 0x100 в памяти программ, будет представлен в файле hex как 0x200. Рассмотрим следующий исходный код на языке ассемблера: […] ; file test.s […] .section foo,code,address(0x100) […] .pword 0x112233 […] Будет создан файл […] со следующим содержимым: […] :020000040000fa […] :040200003322110096 […] :00000001FF […] запись данных (строка 2) имеет адрес загрузки 0200, тогда как в исходном коде указан адрес 0x100. […]t данные представлены в формате « little-endian », то есть наименее значимый байт отображается первым. Фантомный байт отображается последним, непосредственно перед контрольной суммой. […](277 страниц)
  41. ^ Kildall, Gary Arlen (февраль 1978) [1976]. "Простая техника статического перемещения абсолютного машинного кода". Журнал компьютерной гимнастики и ортодонтии доктора Добба . 3 (2). People's Computer Company : 10–13 (66–69). ISBN 0-8104-5490-4. #22 ark:/13960/t8hf1g21p . Получено 2017-08-19 .[19][20][21]. Первоначально представлено в: Kildall, Gary Arlen (1977) [22–24 ноября 1976 г.]. «Простая техника статического перемещения абсолютного машинного кода». Написано в Военно-морской аспирантуре , Монтерей, Калифорния, США. В Titus, Harold A. (ред.). Отчет о конференции: Десятая ежегодная Асиломарская конференция по схемам, системам и компьютерам: доклады, представленные 22–24 ноября 1976 г. Асиломарская конференция по сигналам, системам и компьютерам . Отель и конференц-площадки Asilomar, Пасифик-Гроув, Калифорния, США: Western Periodicals Company. стр. 420–424. ISSN  1058-6393 . Получено 06.12.2021 г.(609 страниц)
  42. Зшокке, Йорг (ноябрь 1987 г.). «Nicht nur Entwicklungshilfe — Загрузка для Einplatinencomputer am Beispiel des EPAC-09: Intel-Hex-Format». c't - магазин компьютерной техники (на немецком языке). Том. 1987, нет. 11. Верлаг Хайнц Хайзе ГмбХ и Ко. КГ . С. 198, 200, 202–203, [200]. ISSN  0724-8679. […] Den Vorspann beschließt ein Byte, dessen Wert den Typ des Blockes Angibt: 0 = Datenblock, 1 = Endblock. Если вы хотите, чтобы этот блок был установлен, вы можете использовать Endblock, а также прочный блокирующий блок, который не будет иметь значения. (Таким образом, ассемблер используется в CP/M , а также в XASM09; Typbyte не может быть погружен в Null). […][22] (Примечание. XASM09 — это ассемблер Motorola 6809. )
  43. ^ Прайор, Джеймс Э. (1989-02-24). "Re: Вопросы о формате Intel hex (*.HEX)". Группа новостей : comp.os.cpm . Получено 2020-02-27 .
  44. ^ abc "Спецификация программирования PIC16C5X 5.0 - Форматы шестнадцатеричных данных PIC16C5X: 5.1. 8-битный разделенный шестнадцатеричный формат Intellec (INHX8S) / 5.2. 8-битный объединенный шестнадцатеричный формат Intellec (INHX8M) / 5.3. 16-битный шестнадцатеричный формат / 5.4. 8-битный формат слова / 5.5. 16-битный формат слова". Microchip Databook (ред. 1994 г.). Microchip Technology Inc. Апрель 1994 г. стр. 3-10–3-11, 9-10, 9-15, 9-17, 9-21, 9-23, 9-27. DS00018G . Получено 28.02.2020 . […] Ассемблеры для PIC16C5X могут создавать объектные файлы PIC16C5X в различных форматах. Программист PIC16C5X должен уметь принимать и отправлять данные по крайней мере в одном из следующих форматов. Предпочтительным является 8-битный объединенный формат (INHX8M). […] формат […] INHX8S […] создает два 8-битных шестнадцатеричных файла. Один файл будет содержать пары адрес/данные для 8 бит высокого порядка, а другой файл будет содержать 8 бит низкого порядка. Расширения файлов для объектного кода будут «.obl» и «.obh» для файлов низкого и высокого порядка […] формат […] INHX8M […] создает один 8-битный шестнадцатеричный файл с комбинацией младшего байта/старшего байта. Поскольку каждый адрес может содержать только 8 бит в этом формате, все адреса будут удвоены. Расширения файлов для объектного кода будут «.obj» […] формат […] INHX16 […] создает один 16-битный шестнадцатеричный файл. Расширение файла для объектного кода будет «.obj». […][23][24]
  45. ^ Бирд, Брайан (2016) [2010]. "Формат HEX-записи Microchip INHX8M". Lucid Technologies . Архивировано из оригинала 2020-02-28 . Получено 2020-02-28 .
  46. ^ Бирд, Брайан (2016) [2013]. "Формат HEX-записи Microchip INHX32". Lucid Technologies . Архивировано из оригинала 2020-02-28 . Получено 2020-02-28 .
  47. ^ Пол, Матиас Р. (1992). BINTEL: Binär-Image-Konverter mit Intel-Hex-Unterstützung - Bedienungsanleitung [ Конвертер двоичных изображений с поддержкой Intel Hex - Руководство пользователя ] (на немецком языке).(Примечание. В результате использования инструмента для обработки, анализа, сравнения, разделения, вырезания, заполнения, объединения, перемещения или преобразования двоичных образов прошивки (например, для или из одного или нескольких ПЗУ) с намеренно липкими (фиксированными «1» или «0»), инвертированными, пропущенными (« неважно »), взаимосвязанными или переставленными линиями данных или адресов (что иногда используется для облегчения разводки печатных плат параллельных шин или в целях запутывания, чтобы затруднить разборку ), этот двоичный конвертер образов поддерживал ряд расширений формата Intel Hex.)

Дальнейшее чтение

  • "Как интерпретировать данные Motorola S и Intel HEX в формате? Intel Hex-32, код 99". Главная > Аппаратное обеспечение > … > Системы внутрисхемного тестирования > Автоматизированное испытательное оборудование [Снято с производства] > Подробности . Keysight Technologies . Архивировано из оригинала 2020-03-01 . Получено 2020-03-01 .
  • Бергманс, Сан (2019-06-02) [2001]. "Формат Intel HEX". SB-Projects . Архивировано из оригинала 2020-03-01 . Получено 2020-03-01 .
  • Бирд, Брайан (2016) [2007]. "Формат записи Intel HEX". Lucid Technologies . Архивировано из оригинала 2020-02-28 . Получено 2020-02-28 .
  • Anderson, Thomas N. (февраль 1998 г.). "Intel Hex Word Address Object Format". Руководство пользователя Telemark Assembler (TASM) (PDF) . 3.1. Issaquah, Washington, USA: Squak Valley Software. стр. 25–26. Архивировано (PDF) из оригинала 2021-12-11 . Получено 2021-12-11 . Intel Hex Word Address Object Format […] Этот формат идентичен Intel Hex Object Format, за исключением того, что адрес для каждой строки объектного кода делится на два, таким образом преобразуясь в адрес слова (16-битное слово). Все остальные поля идентичны. Вот пример: […] :180800000102030405060708090A0B0C0D0E0F101112131415161718AC […] :02080C00191AA3 […] :00000001FF […](32 страницы)
  • "ADuC70xx Serial Download Protocol" (PDF) (Application Note). Редакция C. Норвуд, Массачусетс, США: Analog Devices . 2016. AN-724. Архивировано (PDF) из оригинала 2023-10-05 . Получено 2023-10-05 .(8 страниц)
  • binex — конвертер между Intel HEX и двоичным кодом для Windows.
  • SRecord, конвертер между Intel HEX и двоичным кодом для Linux (использование), исходный код C++.
  • kk_ihex, библиотека C с открытым исходным кодом для чтения и записи Intel HEX
  • libgis, библиотека C с открытым исходным кодом, которая преобразует файлы Intel HEX, Motorola S-Record, Atmel Generic.
  • bincopy — это пакет Python для работы с файлами Intel HEX.
  • SwiftIntelHex — пакет Swift для анализа файлов Intel HEX для iOS и macOS.
Взято с "https://en.wikipedia.org/w/index.php?title=Intel_HEX&oldid=1244692998"