[#1]
Re: Ks. Jan Pikul (luty 2007)
Tutaj publikuję nieco szersze rozwinięcie tematu
"jak były robione sterowniki drukarek"
Sprawa jest dość skomplikowana, a moje działanie było uzależnione od aktualnego stanu mojej wiedzy i od możliwości narzędziowych. W tworzeniu polskich sterowników za punkt wyjścia przyjmowałem najbardziej odpowiednie dla danej drukarki sterowniki oryginalne. Początkowo pracowałem nad sterownikami Workbencha 1.2 całkowicie „ręcznie", tzn. sam rozszyfrowywałem budowę plików ładowalnych (sterownik jest takim plikiem, mimo że nie jest samodzielnym programem, tylko jest ładowany i uruchamiany przez printer.device; ma nawet kod bezpieczeństwa – nic nie robiący program na samym początku na wypadek przypadkowego uruchomienia spod shellu), modyfikowałem kod maszynowy w postaci heksadecymalnej (nawet nie w asemblerze) i poprawiałem ręcznie wszystkie referencje. Wymagało to wielu godzin „kontemplacji ekranu" i odkrywania Ameryki na nowo (nie miałem żadnych podręczników). Moje modyfikacje dotyczyły wtedy tylko tablic sterownika CommandTable, ExtendedCharTable i funkcji DoSpecial. Zakres modyfikacji zależał naturalnie od drukarki. Rzadkością były wtedy drukarki wyposażone w polskie znaki, więc upychałem w sterowniku definicje znaków „download" w trybach draft i NLQ – na różne sposoby (moje pierwsze sterowniki wymagały przesłania definicji znaków do drukarki przed drukiem przy pomocy specjalnego programu inicjującego – potem wszystko mieściłem już w sterowniku). Trzeba się było nieźle gimnastykować, bo drukarki miały różne grymasy przy pracy z „downloadami", a zależało mi na tym, by nie ograniczać możliwości drukarki w zakresie wyboru czcionki i jej atrybutów. Później zdobyłem podręczniki systemowe do systemu 1.3 (Amiga ROM Kernel Manual) oraz program ułatwiający disasemblację plików ładowalnych (ReSource) i zacząłem tworzyć sterowniki w asemblerze. W systemie 1.3 dodano do sterownika drukarki opcjonalną funkcję ConvFunc, która ogromnie ułatwiła mi pracę (bo pozwalała przejąć kontrolę nad interpretacją każdego znaku), więc powstała nowsza generacja polskich sterowników, a praca stała się łatwiejsza. W tym czasie właśnie amigowska „konferencja okrągłego stołu" przyjęła standard polskich znaków wg prof. Bruszewskiego (Amiga PL), a ja zobowiązałem się przetłumaczyć moje sterowniki z dawnego standardu (JP – stworzyłem go na własne potrzeby) na nowy. Nie były to tylko proste „tłumaczenia" kodów polskich znaków, ale w wielu przypadkach nowe opracowania, przy wykorzystaniu nowych możliwości systemu (funkcji ConvFunc). Większość modyfikacji sterowników dotyczyła teraz tworzenia niezliczonych wersji funkcji ConvFunc (to były właściwie całkiem samodzielne opracowania, jako że „firmowe" sterowniki nie zawierały wcale tej funkcji), choć oczywiście zmiany w pozostałych modułach sterownika też bywały konieczne. Najrzadziej modyfikowałem funkcję do druku grafiki Render (druk graficzny polskich znaków był oczywiście zawsze możliwy bez jakiejkolwiek ingerencji w sterownik oryginalny), ale i to się zdarzało, gdy pojawiły się drukarki o większej rozdzielczości grafiki, niż oferowały sterowniki systemowe. Do drukarek innych niż 9-igłowe nie robiłem już sterowników z „downloadami", gdyż w dobie popularności 24-igłówek, a potem drukarek laserowych i atramentowych, praktycznie wszystkie modele miały już wbudowane polskie znaki. Wspomnę jeszcze, że poza drukarkami Star LN-10 i później Epson Stylus 800, które sam posiadałem, nie miałem bezpośredniego dostępu do innych drukarek i większość testów przeprowadzałem korespondencyjnie z właścicielami drukarek, którzy prosili mnie listownie lub telefonicznie o kolejny sterownik. Nie muszę dodawać, że były to pionierskie czasy, kiedy nie obowiązywały u nas prawa chroniące firmowe oprogramowanie, a każdy radził sobie, jak umiał. Wiele rzeczy robiło się też bez oczekiwania jakiejkolwiek korzyści materialnej i ja nie byłem tu wcale wyjątkiem – w środowisku amigowców panowała wielka solidarność.
Ks. Jan Pikul