Давным-давно, во второй половине девяностых, с появлением больших супермаркетов начали получать распространение различные системы по автоматизации торговли, в числе которых были кассы на базе обычных компьютеров. Примерно в то же время появилось требование оснащать кассовые аппараты фискальной памятью, что в сочетании с подобными системами породило немало кажущихся сейчас забавными или просто нелогичными конструктивных решений.

Что же это были за девайсы и чем такие кассовые аппараты отличались от обычных ПК? Сейчас и узнаем: взглянем на железо пары таких компьютеров и фискальный регистратор тех же годов. И, конечно же, попробуем увидеть всё это в работе.
❯ Суть такова

Давным-давно я уже как-то рассказывал про кассы с фискальной памятью. Но в той статье речь шла об автономных устройствах (привычных нам кассовых аппаратах с клавиатурой и индикатором), тогда как был ещё один довольно интересный класс — POS-терминалы (не путать с банковскими, сегодня речь пойдёт не о них), в простонародье — кассовые компьютеры.

Типичный такой девайс представлял собой системный блок в компактном корпусе с простеньким энергоэффективным железом (в те годы им были в основном i486SX и первые «пеньки»), всей необходимой периферией и кассовым софтом (обычно под DOS).

Некоторые такие девайсы выглядели очень аутентично…

Конкретно этот экземпляр — Fujitsu ICL TeamPOS 4000, в России устанавливавшийся компанией «Пилот» в крупные магазины вроде «Иль де ботэ», «Л'этуаль», «Детского мира» и многих других.

Так вот. Чтобы иметь возможность выбивать чеки на такой машине, она должна была соответствовать всем требованиям, предъявляемым к ККМ. Казалось бы, ничего сложного — подключаем к COM-порту обычный кассовый аппарат (на тот момент немалая их часть была оборудована интерфейсом для связи с ПК) или фискальный регистратор, и проблема исчерпана. Но, как выяснилось, у некоторых производителей был свой путь…
❯ Обзор оборудования
Что же придумали те производители? В кассовые компьютеры устанавливались специальные платы фискальной памяти в виде карты расширения на шину ISA. Поскольку большая часть кассового софта в те годы работала под DOS, каких-либо сложностей для разработчиков это не вызывало.

Первой на очереди идёт плата FIS520SPF от компании «Сервис-Плюс». Такие устанавливались в ККМ «SIEMENS NIXDORF BEETLE 20 MF», сделанные, как нетрудно догадаться, на базе POS-компьютера Beetle от Siemens Nixdorf (или такого же от Wincor Nixdorf). Когда-то давно она была закрыта опломбированной крышкой, но сейчас она утеряна.

Следующая плата — FIS221, предназначавшаяся для ККМ АСТ-ЭЛИТ-Ф на базе Fujitsu TeamPOS.

Про неё не удаётся найти решительно ничего, если бы не подсказка того, кто их обслуживал, я бы в жизни не догадался, для чего эта штука.

Также был добыт фискальный регистратор «Феликс-Р Ф», одна из первых моделей ФР в России наравне с Штрих ФР-Ф. Он уже из более позднего времени, такие девайсы появились лет на пять позже первых фискальных плат на шину ISA.
❯ FIS221
Начнём с более простой платы.

Она довольно простая: два чипа Flash, EEPROM и немного дискретной логики.

Заинтересовавшись побольше, отреверсил и её схему. По сути эта плата — этакий твердотельный диск на шину ISA с небольшими модификациями в виде добавления EEPROM с интерфейсом Microwire. Если записать в эти чипы какое-нибудь расширение BIOS и несколько модифицировать адресный дешифратор, то карту можно будет использовать и в других, более интересных целях.

Тестировать всё это решил на плате Asus P2B. Она довольно новая для таких железок, но с DOS и ISA-платами проблем с ней не возникало ни разу. Кассового софта для этих плат у меня нет, а вот сервисный — пожалуйста.

Загружаем драйвер платы.

А вот и утилита для тестирования. Она позволяет выгрузить дамп памяти платы, провести пробную продажу и тому подобные операции.

Но, увы, с ней мне не повезло. Несмотря на все попытки, плата упорно прикидывалась кирпичом и нигде не определялась.

Я пробовал разные версии DOS, разные материнские платы (M396F, LS-486E, SP97-V), однако на результат это не повлияло никак. То ли фискальная плата была дохлая, то ли для неё был нужен какой-то другой софт.

Даже утилита перезаписи BIOS её не видела.
❯ FIS520SPF
Вторая плата оказалась поинтереснее.

Компонентов здесь заметно больше. Помимо двух флешек здесь есть микроконтроллер, а также драйвер RS-232 и буфер для LPT-порта. Это позволяло подключать чековый принтер напрямую к плате, получая тем самым этакий фискальный регистратор на шину ISA, где надо было только отправлять команды на продажи, снятие отчётов, открытие и закрытие чеков, а всё остальное совершалось средствами самой платы. В NVRAM хранится заводской номер, информация о фискализациях и перерегистрациях, заголовки чеков и тому подобные данные.

Помимо нашего экземпляра всё той же компанией выпускалась плата FIS520SPF на шину PCI (с драйвером под Windows 2000), а также FIS420SPF для работы в некоем IPC POS-IIS СПF, для которого сейчас не найти даже фотографий.

При запуске компьютера загружается расширение BIOS, записанное в ПЗУ платы. Если тестирование проходит успешно, ПК продолжает работу, иначе — блокируется до перезапуска.

Запускаем сервисный софт и выясняем, что память таки побилась, вероятно, из-за разряда батарейки, поддерживавшей NVRAM.

Не сумев решить этот косяк имевшимися средствами, блок памяти я стёр. Вообще, официально делать так было запрещено. Ремонт фискальной памяти не допускался ни при каких условиях, а при выходе из строя требовалось скопировать её дамп (если это было возможно), а умерший модуль — заменить. Но практически у всех производителей были утилиты, позволявшие вернуть блок в исходное состояние.

Вот и всё — теперь плата как будто никогда и не устанавливалась.

Перезагружаем компьютер и вводим данные.



После этого плата загружается в нефискальном режиме, и её можно активировать.

Одна лишь проблема: кассового софта, чтобы выбивать чеки с использованием этой штуки, у меня нет. Те дистрибутивы, которые распространялись «Сервис-плюсом», привязывались к номеру платы, поэтому толку от имеющихся у меня весьма немного.
❯ Фискальная плата для программиста
Поскольку всё это создавалось в девяностые, в эпоху господства DOS, каких-то специальных библиотек у таких плат не было. Все операции производились путём ручной записи соответствующих данных при помощи ассемблерных вставок. С предыдущей картой всё было чуть проще: в DOS загружалась управлявшая платой резидентная программа (та самая ICL service, которую можно было видеть на скриншотах), а кассовый софт взаимодействовал уже с ней.
typedef struct {
unsigned date, value, decpoint, lastday;
} TDenomination;
typedef struct {
unsigned long lo;
unsigned short hi;
} verylong; // :)
typedef struct {
unsigned char Type;
unsigned char ItemAmount;
verylong TotalAmount;
unsigned short TicketNumber;
unsigned short AssociatedTicket;
unsigned short Section;
unsigned short Cashier;
unsigned short Date;
unsigned short Time;
unsigned long FiscDocNum;
} TReceiptData;
typedef struct {
char Name[26];
verylong ItemAmount;
} TItemData;
int PrintJournal()
{
unsigned Code;
asm {
mov ah, 11
mov al, 2
int 18h
jc Err
mov Code, 0
jmp Done
} // asm
Err:
asm {
mov Code, ax
} // asm
Done:
return Code;
} // PrintJournal
int ReceiptOperation(TReceiptData far const * const receipt, TItemData far const * const items, char count) {
unsigned Code;
char far * buffer = new char[sizeof(TReceiptData) + count * sizeof(TItemData) + 2];
_fmemcpy(buffer, receipt, sizeof(TReceiptData));
_fmemcpy(buffer + sizeof(TReceiptData), items, count * sizeof(TItemData));
asm {
mov ah, 7
les di, buffer
int 18h
jc Err
mov Code, 0
jmp Done
} // asm
Err:
asm {
mov Code, ax
} // asm
Done:
delete buffer;
return Code;
} // ReceiptOperation
В более поздних версиях появились привычные библиотеки. Впрочем, какой софт был написан с их использованием и где его сейчас раздобыть — очень хороший вопрос.
❯ Фискальный регистратор
Но как же можно рассказывать про такие штуки и не выбить ни одного чека? Исправим это положение.

Несколькими годами спустя на рынке кассовых аппаратов появились ранее невиданные приборы — фискальные регистраторы (ФР). Одним из самых первых получивших распространение экземпляров стал вот такой Штрих-ФР-Ф. Спустя годы он переживёт несколько модификаций (сначала под ЭКЛЗ, потом под фискальные накопители), даже сейчас практически такие же внешне, но полностью другие внутри аппараты выпускаются и продаются.

Перейдём к нашему «Феликсу». По виду он, за исключением названия, ничем не отличается от ФР «Феликс-02К». По сути это тот же самый аппарат, но без возможности установки ЭКЛЗ.

Под крышкой два принтера — чековый и контрольный. Контрольную ленту по окончании рулона требовалось сматывать, подписывать и хранить пять лет. Требование это во многом было абсурдным, так как зачастую некачественная термобумага за год-другой хранения полностью выцветала, отчего в кладовках больших магазинов стояли целые коробки, набитые просто белой бумажной лентой. Толку от них не было уже никакого, однако хранить их всё равно было необходимо.

Внутри него даже осталась оригинальная контрольная лента, откуда мы узнаём, что последняя смена была закрыта в далёком 2012 году. Всего на этой кассе выбили чеков на 6934053,06 рубля.

С обратной стороны разъёмы питания, денежных ящиков (для возможности подключения таковых с электромагнитами на разное напряжение), дисплея покупателя и нуль-модемного кабеля для подключения к компьютеру.

Какой же кассовый аппарат без голограмм (средств визуального контроля, как они назывались официально)? Наклейки эти должны были демонстрировать, что ККМ внесена в госреестр и стоит на учёте в центре технического обслуживания. В случае с ранее показанными фискальными платами голограммы лепили на корпус системного блока.

Мой экземпляр довольно поздний, 2003 года, тогда как выпускаться они начали ещё в конце девяностых.

Не имеющая почему-то никакого штампа пломба, которую мы, конечно же, отковыряем.

Оригинальный нуль-модемный кабель.

Блок питания таких внушительных размеров, что иной адаптер от топового игрового ноутбука окажется меньше.

Выдаёт он скромные 12 В, 3 А. Напряжение нестандартное для торгового оборудования, отчего при втыкании блока от любого другого фискального регистратора или термопринтера из аппарата выходит белый дым.

В плане схемы это простенький импульсный БП, ничего примечательного в его устройстве нет.
❯ Разбираем ФР
Разумеется, мне стало интересно узнать, что там внутри.

А вот и начинка. Слева плата фискальной памяти. Болтаться так она не должна, вместо этого ей требовалось находиться в специальном опломбированном корпусе, который задолго до меня кто-то потерял. Будем надеяться, что до меня девайс не включали и плата ни на что не закоротила. Несмотря на то, что этот аппарат не оборудован ЭКЛЗ, задел в виде разъёма под неё присутствует. Интересно, это просто предусмотрительность, или мне попалась уже поздняя версия, когда скорое введение ЭКЛЗ было очевидным?

А вот для сравнения «Феликс-02К». Как видно, отличия минимальны…

Схема платы.

Фискальная память.

Такой модуль использовался во всех «Феликсах» вплоть до ухода в историю ФП как таковой.

Разумеется, чип памяти я отпаял и прочитал программатором. Разметка памяти оказалась такой же, как у «Феликса-02К», за исключением того, что записей об активизациях ЭКЛЗ она не содержит.
❯ Печатаем чеки
Ну что же, время запускать!

Промотал контрольную ленту на участок без замятий, загрязнений и заломов. Оба рулона оставил оригинальные, 2012 года.

Подаём питание. ФР пискнул, скрипнул мотором чекового принтера и зажёг зелёный светодиод. Отлично.

Для того, чтобы распечатать чек, воспользуемся всё тем же драйвером ККМ, где этот девайс также поддерживается.

Создаём новое устройство, указываем параметры обмена и пробуем установить связь.

Судя по заголовку чека, ФР стоял в какой-то аптеке.

Поискав по ИНН, выяснил, что компания жива и поныне.

Дата и время ушли всего на двадцать минут. Хорошая точность за десять с лишним лет простоя для такого древнего чипа RTC как DS1307.

Пробуем напечатать чек. И… термоголовка оказалась порядком уставшей. Извечная проблема для отечественных ТПГ ТД4032А, порой оказывавшихся дохлыми прямо с завода.

Какие-то группы пикселей не печатают вообще, какие-то недогревают термоленту.

На контрольной ленте дублируются все операции.

Но в целом, несмотря на косяк с принтером, всё отлично работает.

Наигравшись, снимаем Z-отчёт. ФР предупреждает, что в фискальной памяти осталось мало свободных полей, но это не страшно, её всегда можно сбросить программатором.
❯ Что же в итоге?
Вот такими интересными штуками оказались эти платы. Но их использование создавало ряд довольно очевидных проблем. Самой главной из них было то, что компьютер после этого превращался в полноценную ККМ, разбирать которую можно было только в аккредитованном центре технического обслуживания. Таким образом, админ в магазине не мог даже банально почистить кассовый ПК от пыли, на все операции, требовавшие разборки корпуса, требовалось везти девайс в сервис. Кассовое ПО делалось под конкретную плату, а порой и конкретную модель ПК, что тоже вызывало неудобства. Ну, а если компьютер сдох, нельзя было просто отключить его и поменять на резервный, если он не был зарегистрирован как ещё одна ККМ.
Так что уже к концу девяностых эти платы ушли в историю, уступив место привычным нам фискальным регистраторам вроде того, что был показан тут.
Такие дела.
Новости, обзоры продуктов и конкурсы от команды Timeweb.Cloud — в нашем Telegram-канале ↩

Перед оплатой в разделе «Бонусы и промокоды» в панели управления активируйте промокод и получите кэшбэк на баланс.
Читайте также:
- ➤ Сенсорные выключатели советской эпохи
- ➤ Проект «Мультиключ». Эмулятор ключей от домофона на ESP8266
- ➤ Объяснение графических процессоров для тех, кто привык работать с ЦП
- ➤ Самодельная паяльная станция с цифровой индикацией температуры на жесткой логике
- ➤ История жанра «симулятор» в сеттинге «Вторая Мировая война»
Комментарии (14)
MaFrance351 Автор
16.05.2025 08:41О, вот ещё вспомнилось.
Эти "Феликсы" поздних модификаций иногда испытывали премерзкий глюк: во время печати ФР зависал и не реагировал ни на что, пока его не перезагружали тумблером.
Причина была довольно интересной: чековая лента при трении об пластиковый корпус работала как своеобразный генератор Ван де Граафа и электроника тупила от статики. Вообще, моток с лентой должен был стоять на специальной оси, но нетрудно догадаться, что на практике её теряли уже после первого рулона.
Решалась эта проблема всякими шайтан-методами типа обклейки фольгой.
gravity
16.05.2025 08:41Не помогало. Брызгали антистатиком, частично решало проблему. Помогал комплекс : никакого синтетического нижнего белья у кассирок, антистатик, обклейка внутреннего дна корпуса фольгой на клеевой основе и изоляция отсека для чековой ленты.
MaFrance351 Автор
16.05.2025 08:41А куда им брызгали? В отсек для термоленты? Или весь корпус обрабатывали?
gravity
16.05.2025 08:41Снаружи по кругу корпуса, достаточно было наклониться и потереться шерстяным свитером для того, что-бы касса поехала в ремонт. Повреждалась прошивка принтерного процессора (6 пиков динамиком). Почему-то именно принтерный проц.
daggert
16.05.2025 08:41я с этими делами столкнулся чуток, но все еще перетряхивает от воспоминаний работы со всеми этими делами. А еще были весы… блин
MaFrance351 Автор
16.05.2025 08:41А почему перетряхивает?
daggert
16.05.2025 08:41Почти все они работали через хрен пойми какое место. ФНки умирали, шрифты на чеках иногда слетали на иероглифы, денежный ящик дергал током, софт через ком-порт иногда не видел кассу, а после настройки зачастую надо было прописывать параметры нажимая интер раз пять, иначе могло прописаться не до конца. Это я не говорю уж про качество сборки/пайки - оно зачастую ниже плинтуса было, особенно Меркурии.
Dimanchik_ZX
16.05.2025 08:41Статья интересная, старые ккт и пос системы зацепил только чуть-чуть, сейчас то конечно всё понадежнее и попроще стало. Но вот кассы самсунг на азс до сих пор вспоминаю с содроганием :-)
CyrK
16.05.2025 08:41А сейчас почти везде МК на stm32 и ФН...
MaFrance351 Автор
16.05.2025 08:41Такая у меня тоже есть. Но пока не придумал, что бы интересного с ней сделать...
AVX
16.05.2025 08:41Лет 7 назад был опыт работ с похожими "штрихами", там ФН в виде маленкой коробочки внутри, которая шлейфом подключалась. Если не путаю, яркость печати можно было в той же утилите настроить, иногда подстраивали под конкретную партию бумаги. Все эти чистки от пыли, протирка спиртом печатающей головки... А ещë замена и регистрация ФН (там и по сроку действия вроде полтора года, и количество записей ограничено), обновление прошивок и ещë какие-то работы проводили. Поменять ФР просто так тоже нельзя - его надо в налоговой регистрировать, и с переносом ФН тоже какие-то заморочки. ФН потом полагалось в налоговую сдавать, но вроде сроков не было жëстких, и они у нас десятками-сотнями лежали, вместе со всякими актами (что там-то такой-то специалист заменил ФН, и финальный отчет закрытия ФН в виде чека туда же в коробочку). Так-то интересная область, но ошибаться нельзя, всë с деньгами связано и с налоговой, а они очень любят за всякие "нарушения" штрафы накладывать.
AGalilov
Никогда не имел дела с фискальным оборудованием, но в голове почему-то крутится мотив песни Nostalgie:
Nostalgie on se ressemble
Tu es tendre, moi aussi
Nostalgie je pense à elle
Je l'appelle dans la nuit...
Julio Iglesias
https://youtu.be/PeShS2kxDJ0
MaFrance351 Автор
Никогда в детстве не любил ходить по магазинам. А сейчас иногда думаю, что погулял бы по какому-нибудь из торговых центров той эпохи, когда вот это вот всё было актуальным.