atarionline.pl Pióro świetlne jako "dotyk". - Forum Atarum

Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.

  • :
  • :

Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.

    • 1:
       
      CommentAuthorgienekp
    • CommentTime4 Nov 2022 zmieniony
     
    Kaz na głównej:
    ->link<-

    zapytał:
    Odnośnie pióra świetlnego, które zostało wykorzystane do stworzenia tej gry - czy ktoś z szanownych czytelników posiada takowe?(...)


    I zawierciło mi to w głowie, bo nigdy pióra w ręce nie miałem. Czy ktoś kiedyś coś z tym robił? Jak to się programuje? ATARI chyba to jakoś sprzętowo robi...

    Bo jakby tak wziąć takie panele LCD dotykowe jak są do Raspberry Pi. Po różnych przejściówkach wejściach/wyjściach/fikołkach podłączyć do ATARI. Z ATARI synchronizacją pionową kasować zwykły licznik co by zliczał do pozycji dotkniętej na ekranie (z tego co pamiętam to tam po SPI się czyta pozycję) i po zliczeniu dać impuls do ATARI. To czy czasem ATARI nie zareaguje jakby ktoś piórem po nim malował? Takie ATARI smyrane pseudo piórem świetlnym.
    • 2:
       
      CommentAuthorPeri Noid
    • CommentTime4 Nov 2022 zmieniony
     
    Ja mam pióro ale do Commodore C64. Nawet działa. Samo pióro konstrukcyjnie składa się z fotodiody, rezystora i tranzystora. Może by i zadziałało z Atari - nie wiem. Możliwe też, że to są konstrukcje niestandardowe - jeśli w ogóle standardowe były. Stąd kwestia, jak takie coś emulować.
    • 3:
       
      CommentAuthorgienekp
    • CommentTime4 Nov 2022
     
    A jest jakiś program na ATARI co to umie obsłużyć? Bo może na podstawie programu będzie wiadomo jak wtedy do tego podchodzono.
    • 4: CommentAuthorBarman
    • CommentTime4 Nov 2022 zmieniony
     
    Proste jak konstrukcja cepa. Pióro świetlne obsłużysz np. w Atari BASIC - adres 564 pozycja X, adres 565 pozycja Y

    10 GRAPHICS 7+16
    20 SETCOLOR 4,0,14:COLOR 3
    30 X=PEEK(564)
    40 IF X<70 THEN X=X+230
    50 Y=PEEK(565)
    60 IF Y<17 OR Y>112 THEN 50
    70 X=X-75:Y=Y-14
    80 IF X<0 OR X>159 THEN 30
    90 TRAP 30:IF STICK(0)=15 THEN PLOT X,Y
    100 GOTO 30

    szukaj ATARI CX75

    lub zrób to sam

    ->link<-

    :)

    cytując ATARIKI
    Lista programów wspierających light pen:

    Alien Blast, Richard Gore for DGS, 1993
    AtariGraphics by Steve Gibson for Atari (RX8054, shipped with CX75)
    Bedtime Stories - Little Red Riding Hood by Futurehouse, 1983
    Blazing Paddles by Baudville, 1986
    Concentration by Stack Computer Services, 1983
    Crossword Twister by Stack Computer Services, 1983
    Draughts by Stack Computer Services, 1983
    Go by Stack Computer Services, 1983
    Hardwaretester/Peripheral Test 2.0 by Florian Dingler, 2008
    Language Skills - Alphabet Recognition by Futurehouse, 1982
    Language Skills - Different Symbol Discrimination by Futurehouse, 1982
    Language Skills - Letter Sequences by Futurehouse, 1982
    Language Skills - Like Symbol Discrimination by Futurehouse, 1982
    Letter Tutor by Edgework for Atari, 1984 prototype
    Life by Stack Computer Services, 1983
    Light Pen Doodle by John and Mary Harrison for Antic, 1984
    Lost in the Labyrinth by Stack Computer Services, 1983
    Math Fun for the Young - Level I by Tech-Sketch, 1983
    Math Fun for the Young - Level II by Tech-Sketch, 1983
    Matrix by Dave Oblad, 1985
    Micro Illustrator by Island Graphics for Tech Sketch (shipped with Tech Sketch Light Pen)
    Othello by Stack Computer Services, 1983
    Paint-n-Sketch I by Tech Sketch, 1983
    Seek and Destroy by Stack Computer Services, 1983
    Shape and Color Recognition by Tech Sketch, 1983
    Shuffler by Stack Computer Services, 1983
    Simon by Stack Computer Services, 1983
    • 5: CommentAuthormono
    • CommentTime4 Nov 2022
     
    ANTIC obsługuje pióro automatycznie. W chwili gdy przycisk jest wciśnięty, wtedy wewnętrzny licznik pozycji X i Y plamki zatrzaskiwany jest w LPENH (wartości 0-228) i LPENV (wartości 0-156). Przycisk pióra czyta się w PORTA (bit 0 pióro w porcie A, bit 4 pióro w porcie B).
    ->link<-
    ->link<-
    Kiedyś Gzynio był łaskaw pożyczyć mi swoje piórko dzięki czemu mogłem wprowadzić obsługę do Graph8.
    Zdaje się, że BlazingPaddles i Koala Microillustrator potrafiły obsługiwać pióro świetlne.
    ->link<-
    ->link<-
    • 6:
       
      CommentAuthorgienekp
    • CommentTime4 Nov 2022
     
    LPENV (wartości 0-156) to domyślam się, że liczy jak VCOUNT.
    Ale LPENH (wartości 0-228) to w jakiej by to było jednostce?

    i czy to czasem nie trzeba jakoś kalibrować?
    • 7: CommentAuthormono
    • CommentTime4 Nov 2022 zmieniony
     
    W cyklach koloru (czyli w pikselach trybu multicolor). Kalibracja odbywa się za pomocą rozjaśniania obrazu potencjometrem w monitorze.
    • 8:
       
      CommentAuthorgienekp
    • CommentTime4 Nov 2022
     
    No jak w cyklach to superowo (!), bo to znaczy, że nie ma kompletnie znaczenia co tak naprawdę ATARI wyświetla.

    Czyli ewentualną kalibrację musi sobie każdy program samemu zrobić. Czyli roboty mniej...

    Faktycznie jest tych programów i gier trochę. O grach nie pomyślałem, że można by "paluchem strzelać". :)

    Trzeba stare schematy TV przeglądnąć, bo tam kiedyś robiło się na dwóch tranzystorach wyłapywanie impulsu synchronizacji pionowej. Od impulsu do X,Y w cyklach i fire.

    Może taka logika dla panelu dotykowego byłaby trywialna i ATARI jak smartfon by poleciał :)
    • 9: CommentAuthormono
    • CommentTime4 Nov 2022
     
    Trzeba by od Atari wysyłać impuls cyklicznie n.p. na VBLK. Kuba pokazywał niedawno jak to robić za pomocą paddli - a najśmieszniejsze że robi to już OS. Wtedy można by w odpowiedniej chwili generować impuls na linię spustu joya.
    • 10:
       
      CommentAuthorgienekp
    • CommentTime4 Nov 2022 zmieniony
     
    No jakby impuls 0,0 szedł z ATARI to robi się jeszcze prościej. Tylko, że to chyba trzeba program pod takie coś przygotować.

    Natomiast na sygnale wideo jak jest impuls VBLANK to to jest ten zakres "m". Nie jest to specjalnie trudne do wykrycia bo tam to jest tak dobrane (te czasy) że jakiś tam kondensator o danej pojemności zdąży się naładować i impuls jest.

    Pytanie poboczne, ATARI generuje obraz PAL w przeplocie gdzie oba półobrazy są takie same? Czy zawsze generuje pole np. parzyste (chodzi o zakres "n")?
    • 11: CommentAuthormono
    • CommentTime4 Nov 2022 zmieniony
     
    Ale chodzi o to, żeby nie korzystać z sygnału wizji (bo Ci się zrobi milion wtyczek i przelotek), a tylko z portu joysticka.
    Co ramkę TV na przerwaniu VBLK inicjalizowane jest przetwarzanie ADC żeby zczytać wartości paddli. Odbywa się to (na ile zrozumiałem Kubę Husaka) przez zwarcie do masy układu RC który potem jest ładowany. Więc ten moment pewnie można wykryć z zewnątrz patrząc na któregoś paddla.
    Mierząc czas między tymi resetami znajdziemy system TV (16 ms vs 20 ms) więc będzie wiadomo ile trwa linia i jak szybko taktować licznik cykli i linii od momentu sygnału na paddlu.
    Nastepnie zależnie od X,Y w panelu dotykowym w odpowiedniej chwili zgłosić impuls na linię spustu joysticka.

    Takie teoretyzowanie.

    Edit: Atari generuje zawsze ramki jednego rodzaju - chyba parzyste.

    Edit 2: A jeśli skanowanie panelu dotykowego odbywa się linia po linii to może wystarczyłoby właściwie tylko dostroić taktowanie takiego skanowania i moment jego rozpoczęcia i wystawić sygnał bezpośrednio na fire.
    • 12: CommentAuthorKrzys
    • CommentTime4 Nov 2022
     
    Akurat jestem bardziej na bieżąco z piórem, bo szykuję pracę wykorzystującą je. Teoretycznie to jest fajne narzędzie, w praktyce bywa toporne, w komórkach czasami pojawiają się dziwne artefakty, więc w prostej pracy 256B trzeba uważać co wpada do rejestrów. Ale niewątpliwie ma klimat.
    • 13: CommentAuthorpigula
    • CommentTime4 Nov 2022
     
    Do malucha jest lightpen
    • 14: CommentAuthorpigula
    • CommentTime4 Nov 2022
     
    i środeczek
    • 15: CommentAuthorZuluGula
    • CommentTime4 Nov 2022
     
    Moim zdaniem pióro świetlne a "dotyk" to dwie różne sprawy. Atari zrobilo Touch Tablet CX77, byl tez Koala Pad. Na jakiej zasadzie działają te urządzenia? Pewnie gdyby ktoś miał lcd z ekranem dotykowym (oporowym?), to mozna by zrobic do tego interfejs podobny do CX77 i sterować Atari z takiego ekranu dotykowego.
    • 16: CommentAuthorZenon
    • CommentTime4 Nov 2022
     
    Jest taka strona, ja wpisuję i szukam ...igiblog
    W dziale archiwum znaleźć można co nieco o piórze, np pod hasłem svetelne pero schemat, opis.
    • 17:
       
      CommentAuthorKaz
    • CommentTime4 Nov 2022 zmieniony
     
    Dwa pióra świetlne wyprodukowała firma Atari: model CX-70 to ten większy do serii 400/800, a ten mniejszy to CX-75. Przypomnę tylko, że ja szukam pióra polskiego do Atari, firmy IBS Electronic.

    CX-70
    ->link<-

    CX-75
    ->link<-

    Wczoraj Cyprian zamówił dla nas w USA cztery sztuki CX-75, zobaczymy co i jak. Mono - mój mogę wysłać Tobie do testów.



    • 18: CommentAuthor0xF
    • CommentTime4 Nov 2022 zmieniony
     
    Fajny pomysł, żeby podłączyć panel dotykowy do Atarki. Powinno się udać.
    AtariGraphics - super soft na tamte czasy.
    Odczyt pozycji poziomej jest nieprecyzyjny, AtariGraphics stosuje średnią kroczącą z iluś ramek (konfigurowalne ilu).
    Kalibracja jest kliknięciem białej kreski na początku, później program stosuje wyznaczony w ten sposób offset.
    • 19: CommentAuthorBarman
    • CommentTime4 Nov 2022
     
    Ale po co ta dygresja. Pióro świetlne jest, tabliczka też jest - Koala Pad jak by ktoś nie wiedział... chyba że tworzymy nowy sprzęt co zmienia postać rzeczy. Jeżeli tak to należy podjąć formalnie decyzje czy ma to być kompatybilne ze starymi rozwiązaniami czy działamy na nowym polu i jest to projekt nowego urządzenia.
    • 20:
       
      CommentAuthorpirx
    • CommentTime4 Nov 2022
     
    @ZuluGula touch tablet to 2 paddle - naciskanie w różnych miejscach generuje różne opory.
    • 21:
       
      CommentAuthorgienekp
    • CommentTime4 Nov 2022 zmieniony
     
    @mono
    no faktycznie, jakby wszystko portem joya zrobić to dobry pomysł. Rozumiem, że na bolcu od paddla jak podłączę oscyloskop to zobaczę piłę? Tak w ogóle to można by też taką kombinowaną myszkę zrobić. Skoro idzie w cyklach koloru to i PM można by posadzić o tych samych współrzędnych i by wskaźnik latał.

    Jedne panele LCD z dotykiem to dają sygnał USB jak myszka, ale są takie co zwracają tam pozycję interfejsem np. SPI. Więc jakby dać taki mały mikrokontroler to w zasadzie powinien ogarnąć to tak, że stare programy nawet nie będą wiedzieć, że to nie pióro. Po prostu jak mikrokontroler dostanie pozycję. To poczeka na VBLANK, odliczy czas i "naciśnie" fire.

    Ciekawe czy te wyświetlacze do rPI co mają HDMI łykną sygnał PAL z ATARI. Bo może się okazać, że tam jest HDMI ale rozdzielczości to jakieś mutanty VGA. Wtedy będzie dotykanie na ślepo bez obrazu.
    • 22: CommentAuthormono
    • CommentTime5 Nov 2022
     
    Jaki mikrokontroler :) Liczniki i komparator :) Czyli zwykłe PLD.
    • 23:
       
      CommentAuthorgienekp
    • CommentTime5 Nov 2022
     
    No powinno się udać PLDkami to zrobić :)

    Pojawiły się na Mouserze "ATF22V10C-7PX". Zamówiłem do testowania cartów to jak przyjdą to może uda mi się zrobić pseudo pióro na panelu dotykowym :)
    • 24:
       
      CommentAuthorKaz
    • CommentTime5 Nov 2022 zmieniony
     
    Też się pochwalę piórem CX70 - ale niestety nie swoim. Pożyczyłem od Tigera do testów piórko, które wygrał na gfx compo SV. Piękny egzemplarz, marzy się taki.

    PS. Ale coś u mnie nie działa, nie kalibruje - kabel wygląda na bardzo zmurszały, ale nie wiem czy to jest przyczyna nieprawidłowego działania.
    • 25:
       
      CommentAuthorKaz
    • CommentTime5 Nov 2022 zmieniony
     
    A przy okazji dorzucam do tego wątku link do dzisiejszego artka o Light Pen Driver: ->link<-
    • 26:
       
      CommentAuthorKaz
    • CommentTime5 Nov 2022 zmieniony
     
    Oraz obiecane tam programiki przykładowe w Atari Basic, może się komuś przydadzą.

    EXAMPL14.BAS

    5 POKE 106,160:GRAPHICS 0
    10 DIM BUF$(3840),LINE$(33),TYP$(4),FILE$(12),CIO$(6):CIO$="h" LVd"
    15 BUF=ADR(BUF$)
    20 REM kasowanie
    30 GRAPHICS 14+16
    40 EKRBUF=USR(34837,BUF):REM Ekran do bufora - wyzerowanie
    99 REM MENU
    100 GRAPHICS 0:POKE 752,1:CLOSE #1:OPEN #1,4,0,"L:"
    105 POKE 709,0:POKE 710,14:POKE 712,14
    110 POSITION 26,0:? "..":POSITION 15,1:? "RYSOWANIE . .":POSITION 24,2:? ". .":POSITION 24,3:? "..."
    120 POSITION 10,6:? "...."
    130 POSITION 10,7:? ". . KASOWANIE"
    140 POSITION 10,8:? ". ."
    150 POSITION 11,9:? ".."
    160 POSITION 24,12:? "....."
    170 POSITION 24,13:? "| . |"
    180 POSITION 17,14:? "DYSK | | |"
    190 POSITION 24,15:? "....."
    200 POSITION 9,17:? "EXAMPLE 4 w grafice 14"
    210 ? :? " w tescie poslugiwano sie swietlnym piorem f-my IBS-ELECTRONIC."
    215 IF STICK(0)=14 THEN 215
    220 GET #1,A:CLOSE #1
    230 IF A>72 THEN 2000:REM obsl. dysku
    240 IF A>48 THEN 20:REM kasowanie
    999 REM rysowanie
    1000 GRAPHICS 14+16
    1010 INIT=USR(36035):REM inicjacja piora przez wywolanie procedury INIT
    1020 POKE 708,0:POKE 712,14:COLOR 1
    1030 BUFEKR=USR(34888,BUF):REM bufor do pamieci EKRANU
    1031 REM
    1032 REM
    1035 REM P - podprogram dla Example4 w GR.7+16 obslugujacy pozycje piora, Ekran i Bufor - $8800(34816)
    1036 REM START - powrot do Menu
    1037 REM OPTION - odnowa Bufora
    1040 P=USR(34816,BUF):GOTO 1050+PEEK(35915)
    1050 IF STICK(0)=14 THEN X=PEEK(35906):Y=PEEK(35916):PLOT X,Y:GOTO 1060
    1055 GOTO 1040
    1060 IF STICK(0)=14 THEN P=USR(34816,BUF):DRAWTO PEEK(35906),PEEK(35916):GOTO 1060
    1070 GOTO 1040
    1250 GOTO 100:REM przy pomocy komorki pomocniczej (35915) powrot do menu po wcisnieciu START
    1999 REM operacje dyskowe
    2000 GRAPHICS 1+16:CLOSE #1:OPEN #1,4,0,"L:":POKE 708,0:POKE 712,14
    2010 POSITION 8,0:? #6;"DISK":POSITION 8,1:? #6;"----"
    2020 POSITION 8,6:? #6;"DIR"
    2030 POSITION 8,9:? #6;"LOAD"
    2040 POSITION 8,12:? #6;"SAVE"
    2050 POSITION 8,15:? #6;"MENU"
    2055 IF STICK(0)=14 THEN 2055
    2060 GET #1,A:CLOSE #1
    2070 IF A>111 THEN 100
    2075 IF A>88 THEN W=8:R=11:TYP$="SAVE":GOTO 4000
    2080 IF A>63 THEN W=4:R=7:TYP$="LOAD":GOTO 4000
    2999 REM directory
    3000 GRAPHICS 0:POKE 752,1:? " DIRECTORY"
    3010 OPEN #2,6,0,"D:*.*":TRAP 3030
    3020 INPUT #2,LINE$:? " ";LINE$:GOTO 3020
    3030 IF STICK(0)=14 THEN CLOSE #2:GOTO 2000
    3040 GOTO 3030
    3999 REM load/save rysunku
    4000 GRAPHICS 0:POSITION 18,5:? TYP$:POSITION 12,7:? "> <":POSITION 13,7:INPUT FILE$
    4010 TRAP 4100:LINE$(3,LEN(FILE$)+2)=FILE$:LINE$(1,2)="D:"
    4020 OPEN #2,W,0,LINE$
    4030 GRAPHICS 14+16:BUFEKR=USR(34888,BUF)
    4040 POKE 866,R:POKE 868,96:POKE 869,144:POKE 872,0:POKE 873,15:REM parametry dla IOCB2
    4050 CIO=USR(ADR(CIO$))
    4060 IF W=4 THEN EKRBUF=USR(34837,BUF)
    4070 CLOSE #2:GOTO 100
    4100 ? CHR$(125):POSITION 9,10:? "ERROR - wcisnij LPEN":? CHR$(253)
    4110 IF STICK(0)=15 THEN 4110
    4120 CLOSE #2:GOTO 2000


    EXAMPLE5.BAS

    1 REM ** RYSOWANIE **
    2 REM w GR.8
    3 REM dla grafiki 8 wielk. pozycji Y zawarta w granicach 0-190. Wartosc te mozna otrzymac z komorki 35916($8C4C)
    4 REM natomiast wartosc pozycji X w granicach 0-318. XPOS mozemy odczytac z dwu komorek 36094(ml.) i 36095(st.)
    5 REM jako PEEK(36094)+256*PEEK(36095)
    6 REM UWAGA! : grafika 8 przy niezmienionym RAMTOP wejdzie na obszar programu LIGHT PEN DRIVER i zniszczy go,
    7 REM i aby tego uniknac nalezy RAMTOP zmniejszyc do 128 niestety zmniejszajac tez pamiec dla uzytkownika.
    8 REM
    9 POKE 106,128:REM ochrona LPEN DRIVER i PMG (PMBASE=$8800).RAMTOP=: 128*256
    10 GRAPHICS 8+16:REM natychmiastowe ustalenie grafiki aby przesunac pamiec ekranu w nowy obszar.
    20 REM inicjacja piora i ustalenie jasnosci dla danej grafiki
    21 OPEN #1,4,0,"L:":CLOSE #1:POKE 704,0:POKE 708,0:POKE 712,14:COLOR 1
    30 REM wywolanie procedury CONTROL
    31 U=USR(36024)
    40 IF STICK(0)=14 THEN X=PEEK(36094)+256*PEEK(36095):Y=PEEK(35916):PLOT X,Y:GOTO 50
    45 GOTO 30
    50 IF STICK(0)=14 THEN C=USR(36024):DRAWTO PEEK(36094)+256*PEEK(36095),PEEK(35916):GOTO 50
    60 GOTO 30


    EXAMPLE4.BAS

    10 DIM BUF$(3840),LINE$(33),TYP$(4),FILE$(12),CIO$(6):CIO$="h" LVd"
    15 BUF=ADR(BUF$)
    20 REM kasowanie
    30 GRAPHICS 7+16
    40 EKRBUF=USR(34837,BUF):REM Ekran do bufora - wyzerowanie
    99 REM MENU
    100 GRAPHICS 0:POKE 752,1:CLOSE #1:OPEN #1,4,0,"L:"
    105 POKE 709,0:POKE 710,14:POKE 712,14
    110 POSITION 26,0:? "..":POSITION 15,1:? "RYSOWANIE . .":POSITION 24,2:? ". .":POSITION 24,3:? "..."
    120 POSITION 10,6:? "...."
    130 POSITION 10,7:? ". . KASOWANIE"
    140 POSITION 10,8:? ". ."
    150 POSITION 11,9:? ".."
    160 POSITION 24,12:? "....."
    170 POSITION 24,13:? "| . |"
    180 POSITION 17,14:? "DYSK | | |"
    190 POSITION 24,15:? "....."
    200 POSITION 15,17:? "EXAMPLE 4"
    210 ? :? " w tescie poslugiwano sie swietlnym piorem f-my IBS-ELECTRONIC."
    215 IF STICK(0)=14 THEN 215
    220 GET #1,A:CLOSE #1
    230 IF A>72 THEN 2000:REM obsl. dysku
    240 IF A>48 THEN 20:REM kasowanie
    999 REM rysowanie
    1000 GRAPHICS 7+16
    1010 INIT=USR(36035):REM inicjacja piora przez wywolanie procedury INIT
    1020 POKE 708,0:POKE 712,14:COLOR 1
    1030 BUFEKR=USR(34888,BUF):REM bufor do pamieci EKRANU
    1031 REM
    1032 REM
    1035 REM P - podprogram dla Example4 w GR.7+16 obslugujacy pozycje piora, Ekran i Bufor - $8800(34816)
    1036 REM START - powrot do Menu
    1037 REM OPTION - odnowa Bufora
    1040 P=USR(34816,BUF):GOTO 1050+PEEK(35915)
    1050 IF STICK(0)=14 THEN X=PEEK(35906):Y=PEEK(35910):PLOT X,Y:GOTO 1060
    1055 GOTO 1040
    1060 IF STICK(0)=14 THEN P=USR(34816,BUF):DRAWTO PEEK(35906),PEEK(35910):GOTO 1060
    1070 GOTO 1040
    1250 GOTO 100:REM przy pomocy komorki pomocniczej (35915) powrot do menu po wcisnieciu START
    1999 REM operacje dyskowe
    2000 GRAPHICS 1+16:CLOSE #1:OPEN #1,4,0,"L:":POKE 708,0:POKE 712,14
    2010 POSITION 8,0:? #6;"DISK":POSITION 8,1:? #6;"----"
    2020 POSITION 8,6:? #6;"DIR"
    2030 POSITION 8,9:? #6;"LOAD"
    2040 POSITION 8,12:? #6;"SAVE"
    2050 POSITION 8,15:? #6;"MENU"
    2055 IF STICK(0)=14 THEN 2055
    2060 GET #1,A:CLOSE #1
    2070 IF A>111 THEN 100
    2075 IF A>88 THEN W=8:R=11:TYP$="SAVE":GOTO 4000
    2080 IF A>63 THEN W=4:R=7:TYP$="LOAD":GOTO 4000
    2999 REM directory
    3000 GRAPHICS 0:POKE 752,1:? " DIRECTORY"
    3010 OPEN #2,6,0,"D:*.*":TRAP 3030
    3020 INPUT #2,LINE$:? " ";LINE$:GOTO 3020
    3030 IF STICK(0)=14 THEN CLOSE #2:GOTO 2000
    3040 GOTO 3030
    3999 REM load/save rysunku
    4000 GRAPHICS 0:POSITION 18,5:? TYP$:POSITION 12,7:? "> <":POSITION 13,7:INPUT FILE$
    4010 TRAP 4100:LINE$(3,LEN(FILE$)+2)=FILE$:LINE$(1,2)="D:"
    4020 OPEN #2,W,0,LINE$
    4030 GRAPHICS 7+16:BUFEKR=USR(34888,BUF)
    4040 POKE 866,R:POKE 868,96:POKE 869,144:POKE 872,0:POKE 873,15:REM parametry dla IOCB2
    4050 CIO=USR(ADR(CIO$))
    4060 IF W=4 THEN EKRBUF=USR(34837,BUF)
    4070 CLOSE #2:GOTO 100
    4100 ? CHR$(125):POSITION 9,10:? "ERROR - wcisnij LPEN":? CHR$(253)
    4110 IF STICK(0)=15 THEN 4110
    4120 CLOSE #2:GOTO 2000


    EXAMPLE3.BAS

    1 REM ** RYSOWANIE **
    2 REM w GR.14
    3 REM dla grafiki 14 wielk. pozycji Y zawarta w granicach 0-190. Wartosc te mozna otrzymac z komorki 35916($8C4C)
    10 GRAPHICS 14+16
    20 REM inicjacja piora i ustalenie jasnosci dla danej grafiki
    21 OPEN #1,4,0,"L:":CLOSE #1:POKE 704,0:POKE 708,0:POKE 712,14:COLOR 1
    30 REM wywolanie procedury CONTROL
    31 U=USR(36024)
    40 IF STICK(0)=14 THEN X=PEEK(35906):Y=PEEK(35916):PLOT X,Y:GOTO 50
    45 GOTO 30
    50 IF STICK(0)=14 THEN C=USR(36024):DRAWTO PEEK(35906),PEEK(35916):GOTO 50
    60 GOTO 30


    EXAMPLE2.BAS

    1 REM ** LINIA **
    2 REM Wykorzystanie funkcji GET oraz procedury USR(36024) do rysowa- nia linii
    10 GRAPHICS 7+16
    20 CLOSE #1:OPEN #1,4,0,"L:":REM inicjacja piora
    25 POKE 704,0:POKE 708,0:POKE 712,14:COLOR 1:REM jasnosc i kolor grafiki
    30 GET #1,A:REM zmienna 'A' nie potrzebna ale po wcisnieciu przycisku mozemy w ten sposob odczytac X i Y pozycje
    40 X=PEEK(35906):Y=PEEK(35910)
    50 PLOT X,Y:REM narysowanie punktu poczatkowego linii
    70 C=USR(36024):REM wywolanie procedury obslugi piora (wewnatrz procedura nie obsluguje przycisku i nie czeka)
    80 IF STICK(0)=15 THEN 70:REM oczekiwanie na wcisniecie LPEN
    90 X=PEEK(35906):Y=PEEK(35910):REM okreslenie punktow koncowych
    100 DRAWTO X,Y:REM wykreslenie linii
    110 IF STICK(0)=14 THEN 110:REM mozna ta instrukcje usunac i zobaczyc efekt
    120 GOTO 30


    EXAMPLE1.BAS

    1 REM ** MENU **
    2 REM ekran podzielony na 192 czesci.
    3 REM 8 czesci w poziomie, 24 w pionie4 REM Czesci sa ponumerowane od 0-191
    5 REM liczac od lewego gornego rogu i w prawo. Czyli :
    6 REM 0,1,2,3,4,5,6,7
    7 REM 8,9,........,15
    8 REM ...............
    9 REM ............191
    10 REM Do obslugi wlasnego Menu sluzy funkcja GET.
    11 REM Otrzymujemy przy jej pomocy nr wycinka Ekranu ktorego dotyka pioro po wcisnieciu przyc.LPEN
    12 REM
    20 GRAPHICS 1+16:REM ustalenie grafiki
    25 CLOSE #1:OPEN #1,4,0,"L:":REM Ka- nal 1 otwarty do odczytu dla LPEN.
    30 POKE 704,0:POKE 708,0:POKE 712,14:REM ustalenie koloru i jasnosci dla tla i liter
    40 GET #1,A:REM po wcisnieciu LPEN w zmiennej 'A' otrzymamy nr.wycinka Ekranu nad ktorym stalo pioro.
    50 X=PEEK(35906):REM pobranie pozycji poziomej piora ( 0 - 159 )
    60 Y=PEEK(35910):REM pobranie pozycji pionowej piora ( 0 - 95 )
    70 TRAP 25
    80 POSITION INT(X/8),INT(Y/4):REM ustawienie kursora na pozycje wskazana przez pioro
    90 PRINT #6;A:REM wydruk w tej pozycjinr. tegoz odcinka ekranu
    100 GOTO 40
    • 27:
       
      CommentAuthorgienekp
    • CommentTime5 Nov 2022
     
    Czy któryś z emulatorów "umie" pióro świetlne? W Atari800MacX jest jakieś CX85 ale to chyba nie pióro. :/
    • 28:
       
      CommentAuthorKaz
    • CommentTime5 Nov 2022 zmieniony
     
    Powinny umieć. Kiedyś testowałem Atari800Win PLus - umie. Ustawiasz np. myszkę jako light pen, klawisz F12 włącza myszkę, używasz... :)

    PS. CX85 to dodatkowa klawiatura numeryczna.

    PS2. Skoro Mono dodał ekran z Atari800, to ja dodaję z Atari800Win:
    • 29: CommentAuthormono
    • CommentTime5 Nov 2022
     
    Tak to wygląda w Atari800.
    • 30:
       
      CommentAuthorKaz
    • CommentTime9 Nov 2022 zmieniony
     
    Skoro już mamy wątek o piórze świetlnym, to dorzucę tu materiały o tym, które mogą się komuś przydać.

    Najpierw interfejsy dla ZX Spectrum i info od Zenona:

    Zenon:

    mam jeden schemat z IKSa, drugi BAJTEK 10/86.


    Uściślę, że chodzi o IKS 3/1986 i dodam, że jest jeszcze w IKS opis oprogramowania "znacznika świetlnego" (bo taka była propozycja nazywania pióra świetlnego w owych czasach) do Meritum I, ale to nam mniej przydatne. Wrzucam tu zdjęcia ze słynnego zeszytu Zenona:
    • 31:
       
      CommentAuthorKaz
    • CommentTime9 Nov 2022 zmieniony
     
    I jeszcze LP z książki "Poradnik konstruktora" (Ireneusz Wiater), mamy tę pozycję w Bibliotece Atarowca (ale niepełną).
  1.  
    Here are some lightpen test programs I have, as well as a game. One may use most (if not all) lightgun games with a lightpen. Allthough the lightpen is very inaccurate and the trigger is reversed (in some games we therefore have auto-fire, e.g. Operation Blood lightgun), most games are still playable.

    Also added a fileversion of Atari Graphics for those that do not have the cart and on one of the disks is also a converter program for Atari Graphics pictures (to convert them into Koala or Micropainter, if I remember correctly)...