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 11:11 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 11:11 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 11:11
       
      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 11:11 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 11:11
       
      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 11:11
       
      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 11:11 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 12:11
       
      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 12:11
       
      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 13:11 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 13:11 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 16:11
       
      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 17:11
       
      Do malucha jest lightpen
      • 14: CommentAuthorpigula
      • CommentTime4 Nov 2022 17:11
       
      i środeczek
      • 15: CommentAuthorZuluGula
      • CommentTime4 Nov 2022 17:11
       
      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 17:11
       
      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 18:11 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 18:11 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 18:11
       
      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 21:11
       
      @ZuluGula touch tablet to 2 paddle - naciskanie w różnych miejscach generuje różne opory.
      • 21:
         
        CommentAuthorgienekp
      • CommentTime4 Nov 2022 21:11 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 05:11
       
      Jaki mikrokontroler :) Liczniki i komparator :) Czyli zwykłe PLD.
      • 23:
         
        CommentAuthorgienekp
      • CommentTime5 Nov 2022 11:11
       
      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 20:11 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 21:11 zmieniony
       
      A przy okazji dorzucam do tego wątku link do dzisiejszego artka o Light Pen Driver: ->link<-
      • 26:
         
        CommentAuthorKaz
      • CommentTime5 Nov 2022 21:11 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 22:11
       
      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 22:11 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 23:11
       
      Tak to wygląda w Atari800.
      • 30:
         
        CommentAuthorKaz
      • CommentTime9 Nov 2022 23:11 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 23:11 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)...