Za jídlo, šaty a vzduch otročíme na programech z temných světů

Čtení čárových kódů s Psion Organiser IIXP

Během období, kdy jsem psal diplomku, jsem zprovoznil čtečku čárových kódů u Psionu Organiser IIXP. Je načase podívat se na ni poněkud podrobněji.

Jestliže je Psion Series 3 jeden z nejlepších handheldů, které jsem kdy měl v ruce, pak je Psion Organiser IIXP rozhodně jeden z nejlepších kapesních osmibitů. Člověku se ani nechce věřit, co vše s 920kHz Hitachi HD6303X a 32kB RAM v osmdesátých letech zvládli. Celá řada Psion Organiser má klávesnici uspořádánu abecedně a jedná se tak vlastně spíše o předchůdce průmyslové série Workabout, než o přímého předka trojky (pětky/sedmičky). Tomu odpovídá i v té době prodávané příslušenství. I když i manažer mohl využít IIXP jako poznámkový blok na cestách, čtečka čárových kódů najde uplatnění spíše u skladníka nebo řidiče zásilkovky.

Hardwarově je čtečka realizována pomocí čtecího pera, které se asi nebude principiálně lišit od dnešních pokladních skenerů, jen mu chybí jeden rozměr. Ten rozměr dodává uživatel tím, že perem při stisknutém tlačítku elegantně svihne zprava doleva přes kód. Čtení čárových kódů není zdaleka tak hardwarově náročné, jak by se z opruzů realizovaných kamerkou mobilních telefonů mohlo zdát. Organiseru při správném švihnutí rukou netrvá načtení více než pár zlomků sekundy, ostatně celá teorie čárových kódů vznikla prakticky na poválečné technologii a tenkrát se na megapixely a gigahertzy nehrálo.

Na osmibitech je obecně nejkrásnější vlastností jejich přirozené fungování stylem plug-and-play. Žádné instalování ovladačů, modul s perem zasunete do slotu a vše funguje. Modul totiž obsahuje paměť ROM, která v sobě skrývá rozšíření jazyka OPL o funkci BAR$, s jejíž pomocí je možno číst devět typů jednorozměrných kódu rychleji než řekněte „java“. Konkrétně to jsou:

  • EAN (A)
  • UPC (B)
  • CODE39 (C)
  • ITF (D)
  • CODABAR (E)
  • TELEPEN (F)
  • MODIFIED PLESSEY (G)
  • PLESSEY (H)
  • CODE128 (I)

Jejich typ je identifikován prvním znakem řetězce (uveden v závorce), který vám vrátí BAR$, po tomto znaku už následuje samotná hodnota kódu. Ať jsem dělal, co jsem dělal, nalezl jsem doma jen dva z těchto kódů, takže jsem se pro účely ukázky nenamáhal v OPL naimplementovat žádné další. Jak to celé funguje stručně ukazuje následující video.

Zdrojový kód programu z ukázky je až primitivně jednoduchý, vychází z příkladů v dostupné dokumentaci, přesto jím lze velmi rychle vytvořit například seznam kódů všech knih v knihovně v csv formátu a ten pak na nějakém vícebitu prohnat některou z online služeb, nabízející bibliografické údaje podle ISBN/ISSN kódu. Vzhledem ke snadné obsluze z jazyka OPL se není co divit, že program pro obsluhu obchodu, včetně evidence cen zboží a pokladního systému se vejde na 16kB datapak.

BARTST:
LOCAL A$(1),B$(255),C$(8)
ESCAPE OFF
IF EXIST("A:DATA")
 OPEN "A:DATA",A,D$
ELSE
 CREATE "A:DATA",A,D$
ENDIF
DO
 CLS
 B$=BAR$:(511,-1,0)
 A$=LEFT$(B$,1)
 B$=MID$(B$,2,255)
 BEEP 100,100
 IF A$="A":C$="EAN"
 ELSEIF A$="B":C$="UPC"
 ELSE
  C$="UNKNOWN"
 ENDIF
 PRINT C$
 PRINT B$
 A.D$=C$+","+B$
 APPEND
 PAUSE 40
UNTIL KEY=1


Jsem rád, že se mi tento kousek dostal do sbírky. Katalogizovat knihovnu se sice asi nedonutím, ale mám další krásnou ukázku toho, jak příjemně úsporné technologie se kdysi dělaly.