Niektórzy niecierpliwie czekają na nasze światowe premiery programów, które to półżartobliwe, ale szumne określenie oznacza, że po raz pierwszy publicznie pojawia się u nas coś, co dotychczas nie było nigdzie na świecie dostępne. Dzisiaj mamy światową premierę polskiego oprogramowania użytkowego dla Atari XL/XE z lat 80.
Niedawno informowaliśmy o odnalezionej przez Marka "Pancho" Pańczyka grze RPG "Company", którą stworzył jego ojciec Janusz "JMP" Pańczyk. Jak opowiadał Marek, do narysowania do niej grafiki ojcu posłużył program "Magic Painter" i pióro świetlne. Standardowo ten program nie ma obsługi pióra świetlnego, więc pojawiła się zagadka do wyjaśnienia, czy to nieścisłość we wspomnieniach czy program w Atari Basic ze wstawkami w kodzie maszynowym został przez pana Janusza zmodyfikowany.
I ta druga teza wydaje się najbardziej prawdopodobna. Bo wśród niewielu pozostałości po ojcu, Markowi udało się też odkopać niepozorną dyskietkę z programem użytkowym Light Pen Driver For Atari Basic. I właściwie ta nazwa tłumaczy wszystko: dyskietka zawiera sterownik pióra świetlnego do wykorzystania we własnych programach w języku Atari Basic. Podobnie jak w przypadku gry "Company", której towarzyszyła (niestety zaginiona) druga dyskietka z opisem kodu źródłowego, tak i ten program został bardzo solidnie udokumentowany. Widać, że pan Janusz podchodził do sprawy w sposób usystematyzowany, nie zadowalał się samym efektem końcowym procesu programowania, ale dbał również o jego udokumentowanie. Widać tu zapewne nawyki z pracy elektronika zatrudnionego przez uczelnie - najpierw przez Uniwersytet Warszawski, a później Politechnikę Warszawską (pracował np. na wydziale geologii przy komputerach Odra i innych dużych komputerach, potem na pecetach, rosyjskich klonach tych komputerów). Dzięki takiemu podejściu na dyskietce znajdziemy nie tylko sterownik, ale również dokładny opis oraz kilka przygotowanych programów - przykładów użycia pióra świetlnego.
Z opisu wynika, że pan Janusz był zaopatrzony (posiadał? pożyczył?) w pióro świetlne firmy IBS Electronic. Najprawdopodobniej chodzi o warszawską firmę, której reklamy interfejsu CRI do podłączania zwykłych magnetofonów do Atari znajdowały się w "Bajtku". Markowi udało się namierzyć dwie takie reklamy: w numerze 2 z 1987 roku oraz w numerze 1 z 1988 roku. Obie reklamy zawierają tylko zachętę do zakupu interfejsu magnetofonu (nota bene bardzo ciekawego, bo z diodami sygnalizującymi pracę, zdolnego zatrzymywać i uruchamiać silnik magnetofonu), ale można domniemywać, że taki zakład elektroniki mógł produkować i inne drobiazgi do Atari. Gdyby ktoś z szanownych czytelników tego tekstu był w posiadaniu takiego pióra świetlnego TEJ FIRMY (a nie tak jak na zdjęciach poniżej - firmy Atari), może słyszał o takim piórze, znał kogoś kto miał, albo chociaż kojarzył taką firmę i cokolwiek o niej wie - prosimy o kontakt lub pozostawienie komentarza. Śledztwo trwa...
Obraz dyskietki w formacie ATR dorzucamy oczywiście do naszego archiwum użytków w tym miejscu. Ponieważ jednak w dobie nowoczesnych urządzeń typu SIO2... umiejętności korzystania z dyskietek z DOS-em powoli zanikają, oprócz obrazu dyskietki w formacie ATR, zamieszczam tam kilka wyekstraktowanych plików BAS, a także opis sterownika. Te programiki wrzucam również do wątku o piórze świetlnym na naszym forum tutaj. Aby ułatwić wyszukiwanie (indeksację treści w wyszukiwarkach), również opis ten zamieszczam poniżej (już z polskimi znakami, których w oryginale tekstu nie ma i drobnymi poprawkami językowymi).
LIGHT PEN DRIVER jest programem służącym do obsługi świetlnego pióra. Może współpracować z programami używającymi trybów grafiki GR.0-7, GR.12, GR.13 i GR.14. Jest instalowany w Handler Table pod nazwa "L:". Jako AUTORUN. SYS jest uruchamiany przez DOS i zajmuje w pamięci adresy $8800-$8EF5 (34816-36497).
1. URZADZENIE L: Lokowane w Handler Table pod nazwa L: wykonuje instrukcje na otwartym kanale podobnie jak i inne urządzenia. Przyjmuje do wykonania instrukcje Basica OPEN, CLOSE, PUT, GET.
OPEN - inicjuje świetlne pióro i otwiera podany kanał. CLOSE - nie likwiduje inicjacji zamykając kanał. PUT - służy do kalibracji świetlnego pióra. GET - może być używana do wybierania odpowiedniej pozycji z własnego menu.
2. KALIBRACJA
Aby przeprowadzić kalibrację pióra należy otworzyć kanał, instrukcją PUT wywołać procedurę kalibracji, po dokonaniu kalibracji wcisnąć przycisk pióra, co spowoduje powrót do Basicu.
Format: OPEN #N,8,0,"L:":PUT #N,A:CLOSE #N gdzie N - numer kanału, A - dowolny argument PUT
Na przykład OPEN #1,8,0,"L:":PUT #1,0:CLOSE #1 wywoła na ekranie krzyż i marker pióra. Należy w centrum krzyża ustawić pióro i klawiszami z symbolami strzałek (lewo/prawo/góra/dół) centrować marker, krzyż i pióro. Po zakończeniu wcisnąć LPEN. Spowoduje to przejście do instrukcji CLOSE #1, zamknie kanał i wróci do Basic.
3. MENU
Pod ta nazwą występuje korzystanie z sterownika przy obsłudze menu w programach użytkownika. Program LIGHT PEN DRIVER dzieli ekran na 192 części. 8 części w poziomie na 24 części w pionie. Wszystkie części są ponumerowane od 0 do 191, poczynając od lewego górnego rogu i w prawo:
Używając instrukcji GET możemy po wciśnięciu przycisku LPEN otrzymać numer części ekranu, nad którą stało w danej chwili pióro.
Format: OPEN #N,4,0,"L:":GET #N,A
Na przykład: 10 OPEN #2,4,0,"L:":REM inicjacja 20 GET #2,A:REM w zmiennej A otrzymamy numer wycinka ekranu po wciśnięciu LPEN 30 IF A=50 THEN 80 40 IF A<15 THEN i tak dalej... 80 PRINT "Zmienna A przyjmuje wartosci od 0 do 191 z krokiem 1"
4. INSTRUKCJE I PROCEDURY
OPEN & CLOSE
Jak mówiliśmy, OPEN używana jest do inicjacji LIGHT PEN DRIVER i w programie użytkownika musi być użyta po jednoznacznym ustaleniu trybu graficznego, w jakim pracuje dany program, a przed wykonaniem operacji ze świetlnym piórem. Może występować łącznie z CLOSE. Na przykład OPEN #1,4,0,"L:":CLOSE #1, gdyż CLOSE zamyka kanał, ale nie likwiduje inicjacji pióra. Oczywiście w tym wypadku nie możemy użyć GET lub PUT, ale można odwołać się do którejś z procedur opisanych w dalszej części.
Funkcję inicjacji pióra można wywołać również przez procedurę INIT=USR(36035), a różnica między tym rozwiązaniem a poprzez OPEN polega na tym, że procedura inicjuje pióro nie otwierając kanału. Nie można po niej użyć GET, ale można wywołać procedurę MENU=USR(36031) - patrz opis GET.
PUT
Służy tylko do początkowej kalibracji pióra. Równoznaczną funkcję można wywołać przez procedurę CALIB=USR(36039) bez otwierania kanału.
GET
Głównym jej celem jest dostarczenie w swoim argumencie A numeru wycinka ekranu w momencie przyciśnięcia LPEN. Wartosc A możemy również odczytać z komórki $8C49 (35913). Oprócz tego GET dostarcza poprzez odczytanie komórek:
$8C42 (35906) - X POSITION (0-159) $8C46 (35910) - Y POSITION (0-95) i/lub $8C4C (35916) - Y POSITION (0-190) $8CFE (36094) oraz $8CFF(36095) - młodszy i starszy bajt X POSITION (0-318) tak zwane graficzne pozycje pióra.
Oczywiście wszystkie dane są wiarygodne tylko w chwili wciśnięcia i odpuszczenia LPEN. Dlatego należy je odczytywać bezpośrednio po GET. Podobną funkcję jak GET możemy uzyskać przy zamkniętym kanale przez wywołanie procedury MENU=USR(36031), otrzymujac pod adresami:
$8C49 (35913)-numer wycinka ekranu $8C42 (35906) - XPOSITION $8C46 (35910) - Y POSITION $8C4C (35916) - Y POSITION (*2) $8CFE (36094) oraz $8CFF (36095) - X POSITION (*2)
Uwaga o aktualności danych tak jak wyżej.
Procedura CONTROL=USR(36024)
Po wywołaniu tej procedury graficzne pozycje pióra otrzymujemy pod adresami:
$8C42 (35906) - XPOSITION (0-159) $8C46 (35910) - YPOSITION (0-95) oraz dla na przykład trybu graficznego 14: $8C4C - YPOSITION (0-190) ewentualnie dla trybu graficznego na przykład 8: $8CFE oraz $8CFF - XPOSITION (0-318)
W procedurze nie jest zawarte oczekiwanie na wciśnięcie przycisku LPEN, więc określenie momentu, w którym powyższe komórki zostaną odczytane zależy od programu użytkownika. Zastosowanie: tryby graficzne.
5. PAMIĘĆ
Program LIGHT PEN DRIVER lokuje sie w adresach $8C00-$8EF5 (35840-36497). Wykorzystuje grafikę PMG do sterowania markerem pióra, ustalając PMBASE na $8800. W adresy $8800-$887F został wpisany przykładowy podprogram EXAMPLE4.BAS, który nie jest integralną częścią sterownika (patrz opis EXAMPLE4).
Sterownik zakłada, że RAMTOP=160 i nie obniża go. Nie chroni się przed zniszczeniem, aby jak najwięcej miejsca zostawić dla programu użytkownika. Oczywiście użytkownik musi być ostrożny i jego program nie może przekroczyć adresu $8800. Jak również nie można stosować (bez zmiany RAMTOP) trybu graficznego bardziej pamięciochłonnego niż tryb GR.7. Tym sposobem pamięć ekranu i Display List lokują się nad programem LIGHT PEN DRIVER i dla trybów GR.0-7 (ewentualnie GR.14) mają dość miejsca. LIGHT PEN DRIVER po załadowaniu, oprócz zainstalowania się w Handler Table, nie operuje na stronie 6 pamięci, ani nie zajmuje adresów poniżej $8800. Są one całkowicie wolne dla użytkownika.
6. RESET
Po reset LIGHT PEN DRIVER jest reinicjowany i ustawia ekran na wysoką jasność, aby użytkownik pamietał, że sterownik jest zainstalowany. Przy instrukcjach GET czy PUT, w momentach oczekiwania na wciśnięcie LPEN, klawisz BREAK chwilowo nie działa. Podczas działania procedur obsługi pióra BREAK spowodowałby zakłócenie rytmu grafiki PMG. Usunąć duszka z ekranu można przez POKE53248,0 lub ponowną inicjację pióra poprzez OPEN #1,4,0,"L:":CLOSE #1 albo INIT=USR(36035).
7. ZAWARTOŚĆ DYSKIETKI
1) DOS.SYS 2) AUTORUN.SYS - Light Pen Driver 3) HELP.DRV - krótka informacja o programie wywoływana przez AUTORUN.SYS 4) LPENDRV.COM - Light Pen Driver jako plik COM 5) README.TXT - instrukcja 6) EXAMPLE1.BAS \ proste przykłady 7) EXAMPLE2.BAS | programów 8) EXAMPLE3.BAs > wykorzystujących 9) EXAMPLE4.BAS | w pracy Light Pen Driver 10)EXAMPLE5.BAS /
Program zastrzeżony tak w całości, jak i w części. (c) J.Pańczyk, Warszawa tel. 46-20-51 w.239.
8. GRAFIKA
Możliwość współpracy z grafiką w trybach GR.0-7. Przy współpracy z GR.14 należy brać YPOSITION z adresu $8C4C. Przy GR.8 stosować ochronę przez obniżenie RAMTOP, pozycję XPOSITION brać z adresow $8CFE oraz $8CFF (młodszy i starszy bajt), a YPOSITION z $8C4C. W programach użytkowych, korzystających ze sterownika, należy każdorazowo na początku wstawiać instrukcję GRAPHICS, aby otwierany kanał dokonywał inicjacji pióra po ustaleniu trybu graficznego. Ustawienie trybu graficznego później likwidowałoby inicjację pióra i należałoby je ponownie inicjować.
Przykład wykorzystania sterownika w trybie graficznym GR.7+16 został pokazany w programie EXAMPLE4.BAS. Przyklad jest prosty, więc zostaną tu tylko opisane jego elementy asemblerowe. Ponieważ został użyty GR.7, pamięć ekranu rozpoczynająca się od adresu 36960 ma 3840 bajtów. Deklarujemy więc tablicę o takiej wielkości DIM BUF$(3840), w której będziemy przechowywać rysunek. Przepisywanie z pamięci ekranu do bufora dokonuje procedura o adresie 34837:
EKRBUF=USR(34837,ADR(BUF$))
Przepisywanie z bufora do pamięci ekranu dokonuje procedura o adresie 34888:
BUFEKR=USR(34888,ADR(BUF$))
Obie te procedury oraz procedura obsługi pióra i grafiki zostały włączone do podprogramu wywoływanego przez:
P=USR(34816,ADR(BUF$))
Początkiem podprogramu jest właśnie 34816. Parametrem dla tych wszystkich wywołań jest adres początku naszego zadeklarowanego bufora. Podprogram został umieszczony w wolnych adresach $8800-$885D i może być wykorzystany także w innych celach, choć nie jest integralną częścią LIGHT PEN DRIVER.
9. OGÓLNA STRUKTURA PROGRAMU
Pozostałe informacje o przykładzie są zawarte w samym programie EXAMPLE4.BAS.
2022-11-05 21:05 by Kaz
komentarzy: 8
mono @2022-11-05 22:01:57
Bardzo ciekawe. Driver CIO... Wygląda na naprawdę porządne opracowanie.
Zenon @2022-11-06 10:53:59
Może było, może nie... W czasopiśmie IKS znajduje się opis pióra świetlnego do.... ZX SPECTRUM. Dla zdobywającego wiedzę każde źródło informacji ważne. Zachowane mam schematy, bez opisu z których to numerów (to błąd). Schematy mam dwa, więc pochodzą z dwu numerów. Kto chętny, szukać.
Z ciekawości przejrzałem IKS-y do końca 1987 roku włącznie. W numerze 3/1986 jest rzeczony schemat pióra do Spectrum. W numerze 3/1987 jest opis oprogramowania "znacznika świetlnego" do Meritum. Innych nie materiałów tego typu nie znalazłem.
Peri Noid @2022-11-07 08:49:14
Przydałby się schemat budowy pióra. Mam pióro pracujące z C64, może zadziałałoby i z Atari ale bez porównania schematów nie będę pewien.
Krzys @2022-11-07 10:51:19
Śmiesznie, że akurat jak kupiłem sobie pióro i zacząłem coś pisać, to pojawiło się nagle kilka wątków na ten temat. No i dobrze.
Zenon @2022-11-07 13:19:34
Dlaczego śmieszne.... chcemy pomóc, wskazać na to co było, czym inni się zajmowali i do czego doszli. Co rusz jakiś temat odżywa. A materiałów różnych pałęta się tu i tam, nie zawsze łatwo znaleźć czego się szuka.
Lt_Bri @2022-11-07 17:03:04
Było coś na stronach 155-156 „Poradnika konstruktora”, poniżej odnośnik: