Запускаем раритетные платы фискальной памяти

в 8:05, , рубрики: 486, eeprom, flash, ISA, pentium mmx, pos-терминал, timeweb_статьи, касса, кассовый аппарат, ККМ, ПЗУ, фискальная память
Приветствую всех!
Давным-давно, во второй половине девяностых, с появлением больших супермаркетов начали получать распространение различные системы по автоматизации торговли, в числе которых были кассы на базе обычных компьютеров. Примерно в то же время появилось требование оснащать кассовые аппараты фискальной памятью, что в сочетании с подобными системами породило немало кажущихся сейчас забавными или просто нелогичными конструктивных решений.

Запускаем раритетные платы фискальной памяти - 1

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

Суть такова

Запускаем раритетные платы фискальной памяти - 2

Запускаем раритетные платы фискальной памяти - 3

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

Запускаем раритетные платы фискальной памяти - 4

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

Запускаем раритетные платы фискальной памяти - 5

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

Запускаем раритетные платы фискальной памяти - 6

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

Обзор оборудования

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

Запускаем раритетные платы фискальной памяти - 7

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

Запускаем раритетные платы фискальной памяти - 8

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

Запускаем раритетные платы фискальной памяти - 9

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

Запускаем раритетные платы фискальной памяти - 10

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

FIS221

Начнём с более простой платы.

Запускаем раритетные платы фискальной памяти - 11

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

Запускаем раритетные платы фискальной памяти - 12

Запускаем раритетные платы фискальной памяти - 13

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

Запускаем раритетные платы фискальной памяти - 14

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

Запускаем раритетные платы фискальной памяти - 15

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

Запускаем раритетные платы фискальной памяти - 16

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

Запускаем раритетные платы фискальной памяти - 17

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

Запускаем раритетные платы фискальной памяти - 18

Даже утилита перезаписи BIOS её не видела.

FIS520SPF

Вторая плата оказалась поинтереснее.

Запускаем раритетные платы фискальной памяти - 19

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

Запускаем раритетные платы фискальной памяти - 20

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

Запускаем раритетные платы фискальной памяти - 21

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

Запускаем раритетные платы фискальной памяти - 22

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

Запускаем раритетные платы фискальной памяти - 23

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

Запускаем раритетные платы фискальной памяти - 24

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

Запускаем раритетные платы фискальной памяти - 25

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

Ещё скриншоты

Запускаем раритетные платы фискальной памяти - 26

Запускаем раритетные платы фискальной памяти - 27

Запускаем раритетные платы фискальной памяти - 28

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

Запускаем раритетные платы фискальной памяти - 29

Одна лишь проблема: кассового софта, чтобы выбивать чеки с использованием этой штуки, у меня нет. Те дистрибутивы, которые распространялись «Сервис-плюсом», привязывались к номеру платы, поэтому толку от имеющихся у меня весьма немного.

Фискальная плата для программиста

Поскольку всё это создавалось в девяностые, в эпоху господства 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

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

Фискальный регистратор

Но как же можно рассказывать про такие штуки и не выбить ни одного чека? Исправим это положение.

Запускаем раритетные платы фискальной памяти - 30

image

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

Запускаем раритетные платы фискальной памяти - 32

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

Запускаем раритетные платы фискальной памяти - 33

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

Запускаем раритетные платы фискальной памяти - 34

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

Запускаем раритетные платы фискальной памяти - 35

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

Запускаем раритетные платы фискальной памяти - 36

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

Запускаем раритетные платы фискальной памяти - 37

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

Запускаем раритетные платы фискальной памяти - 38

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

Запускаем раритетные платы фискальной памяти - 39

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

Запускаем раритетные платы фискальной памяти - 40

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

Запускаем раритетные платы фискальной памяти - 41

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

Разбираем ФР

Разумеется, мне стало интересно узнать, что там внутри.

Запускаем раритетные платы фискальной памяти - 42

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

Запускаем раритетные платы фискальной памяти - 43

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

Запускаем раритетные платы фискальной памяти - 44

Схема платы.

Запускаем раритетные платы фискальной памяти - 45

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

Запускаем раритетные платы фискальной памяти - 46

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

Запускаем раритетные платы фискальной памяти - 47

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

Печатаем чеки

Ну что же, время запускать!

Запускаем раритетные платы фискальной памяти - 48

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

Запускаем раритетные платы фискальной памяти - 49

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

Запускаем раритетные платы фискальной памяти - 50

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

Запускаем раритетные платы фискальной памяти - 51

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

Запускаем раритетные платы фискальной памяти - 52

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

Запускаем раритетные платы фискальной памяти - 53

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

Запускаем раритетные платы фискальной памяти - 54

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

Запускаем раритетные платы фискальной памяти - 55

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

Запускаем раритетные платы фискальной памяти - 56

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

Запускаем раритетные платы фискальной памяти - 57

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

Запускаем раритетные платы фискальной памяти - 58

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

Запускаем раритетные платы фискальной памяти - 59

Наигравшись, снимаем Z-отчёт. ФР предупреждает, что в фискальной памяти осталось мало свободных полей, но это не страшно, её всегда можно сбросить программатором.

Что же в итоге?

Вот такими интересными штуками оказались эти платы. Но их использование создавало ряд довольно очевидных проблем. Самой главной из них было то, что компьютер после этого превращался в полноценную ККМ, разбирать которую можно было только в аккредитованном центре технического обслуживания. Таким образом, админ в магазине не мог даже банально почистить кассовый ПК от пыли, на все операции, требовавшие разборки корпуса, требовалось везти девайс в сервис. Кассовое ПО делалось под конкретную плату, а порой и конкретную модель ПК, что тоже вызывало неудобства. Ну, а если компьютер сдох, нельзя было просто отключить его и поменять на резервный, если он не был зарегистрирован как ещё одна ККМ.
Так что уже к концу девяностых эти платы ушли в историю, уступив место привычным нам фискальным регистраторам вроде того, что был показан тут.

Такие дела.


Перед оплатой в разделе «Бонусы и промокоды» в панели управления активируйте промокод и получите кэшбэк на баланс.

Читайте также:

Автор: MaFrance351

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js