2,626

(37 odpowiedzi, napisanych Programowanie - 8 bit)

Rzeczywiście. Sztuczka z POKE 842,13. Ale to chyba jedyny (poza USR i świadomym przesuwaniem programu w pamięci procedurami maszynowymi) sposób na samomodyfikację programu w BASICu?

Kupię chętnie zanim wszyscy przerobią je wg recepty Simiusa. Chodzi mi o takie, które ma uszkodzenie GTIA typu 1.

Edit: Nabędę też chętnie wersję z uszkodzeniem typu 2, bo okazało się że w moim 800 XE mam jednak sprawne GTIA.

2,628

(37 odpowiedzi, napisanych Programowanie - 8 bit)

Dla kompletu spróbuj jeszcze:

A=1: ? ADR(A$(A))

Jeśli to piszesz w trybie bezpośrednim dostajesz różne adresy ze względu na to, że długość linii jest różna w każdej z podanych postaci a przecież tablica zmiennych indeksowanych znajduje się ZA KODEM PROGRAMU (linia w trybie bezpośrednim ma numer 32768 i zawsze jest częścią programu mimo, że BASIC jej nie pokazuje przy listowaniu; jest natomiast zapisywana przy CSAVE/SAVE i oczywiście ładowana przez CLOAD/LOAD). Tokeny indeksujące ciąg zajmują 2 bajty, liczba indeksująca ciąg zajmuje 6 bajtów, zmienna indeksująca zajmuje 1 bajt.
Przy wykonaniu tych samych instrukcji w kodzie programu niezależnie od postaci dostaniesz zawsze ten sam adres, ponieważ linia 32768 ma wtedy tylko token RUN.

Edit: W trakcie działania programu nie może się zmienić rozmiar zmiennych (nie można redeklarować zmiennych w BASICu), wszystkie zmienne deklarowane są w trakcie parsowania linii przy wprowadzaniu. W trakcie działania programu zatem zmienne się nie przesuwają w pamięci.

2,629

(219 odpowiedzi, napisanych Zloty)

Giera bardzo trafiona biorąc pod uwagę ekwilibrystykę, jaką trzeba było uprawiać oddając mocz w parcianej toalecie :) Na dodatek po zakończonej czynności spłuczka strzelała do niczego nie podejrzewającego delikwenta...
Bardzo fajne party! Pinus! Wielkie dzięki!
Dracon & Yerzmyey - dziękuję za przetestowanie maszyny.

Super! To podtrzymuję zamówienie.

A nie może być małe logo z przodu na lewej piersi? Na czarnym tle białe.

Edit: Chodzi o logo only mode.

2,632

(202 odpowiedzi, napisanych Sprzęt - 8bit)

No a ja ostatnio chciałem właśnie kupić 800xe z wadliwym GTIA i okazało się, że jest dobre :( Więc nie pomogę. Mogę tylko napisać, że jeśli ktoś chciałby się zamienić to chętnie oddam mu moje dobre 800xe a przyjmę takie z wadliwym GTIA (ale działającym rzecz jasna). A wtedy mogę służyć układem do testów.

Ja proszę dwie czarne koszulki L wersja logo only.

Sikoru - a czarnych koszulek L z małym logo Atari z przodu i czystych z tyłu byś nie miał?

2,635

(65 odpowiedzi, napisanych Sprzęt - 8bit)

Poproszę 1 szt. dla 65XE z expansion port.

2,636

(16 odpowiedzi, napisanych Sprzęt - 8bit)

ad.1.: http://atarionline.pl/v01/index.phtml?s … olony+2106
ad.2.: joy - wystarczy spojrzeć na pinout: http://pinouts.ru/Inputs/AmigaMouseJoy_pinout.shtml (to samo z wersją st: http://pinouts.ru/Inputs/AtariMouseJoy_pinout.shtml )

2,637

(16 odpowiedzi, napisanych Sprzęt - 8bit)

@seban: No co ty? Jaki tam atak. Nie przesadzajmy.
A co do braku informacji czyje rozwiązanie się sprzedaje, to oczywiście masz rację. Nie popieram. Ale tak naprawdę to na stronie nie znalazłem żadnej informacji - ani skąd to koleś wziął, ani że jest pomysłodawcą (lub nie), ani nie udało mi się znaleźć firmy, która to produkuje. Rozbebeszyłem interfejs, żeby zobaczyć co tam jest i wtedy odkryłem nazwę firmy, która się podpisała na płytce. Cieszę się, że to mi działa tak, jak działać powinno. Gdybym miał możliwość kupienia gotowego interfacu od Twórcy - zrobiłbym to z największą przyjemnością :) bo sam se nie zrobię :/.

@Candle: Gratuluję :)

2,638

(16 odpowiedzi, napisanych Sprzęt - 8bit)

Być może, ale kogo nie pytałem to rozkładał ręce, pokazywał 20 letnią mychę do ST czy A i mówił: "co to Panie będzie, jak mi to padnie...". Cóż, mi padła myszka do Amigi parę lat temu i do dzisiaj nie miałem zamiennika. Znalazłem więc się dzielę.
Przy okazji dodałem do swojego programu graficznego support myszki od Atari ST (do Amigowej był od zawsze).

Edit: Konwerter z PC USB do ST również działa świetnie.

2,639

(16 odpowiedzi, napisanych Sprzęt - 8bit)

Właśnie nabyłem konwerter z myszki PC USB na myszkę Amiga i spieszę się pochwalić, że TO DZIAŁA!
Podpinam zwykłą mysz na USB (mam jakiś Logic M-1 optical mouse) z drugiej strony mam zwykły DB9 do portu joysticka i to ustrojstwo potrafi dokładnie emulować myszkę od Amigi. Wygląda na to, że dostosowuje też dpi do standardu myszki Amigowej (mogłem napisać głupotę - nie znam się :]).
Wtyczka DB9 wymagała wyprofilowania, żeby mogła się zmieścić do XE.
Poza osiami X i Y działają wszystkie 3 przyciski:
- LMB na zwykłym triggerze (odpowiedni STRIG zwraca 0 kiedy wciśnięty, 1 kiedy zwolniony),
- MMB i RMB na paddlach (odpowiedni PADDLE zwraca 228 kiedy wciśnięty, 9, 10 kiedy zwolniony).
W środku ma to tylko procesor Microchip PIC 16F627-04/P, który realizuje całą logikę.
Produkuje to firma PPUH MAFA.
Wg sprzedawcy z Allegro:
"Obsługuje bezproblemowo myszki tradycyjne, optyczne, radiowe z następującymi protokołami:
? Standardowy protokół PS/2
? Microsoft Intellimouse,
? Microsoft Intellimouse Explorer
? Genius NetScroll Optical"
Tak więc polecam! Można to kupić bez obawy, że będzie działać inaczej niż standardowa mysz od Amigi.

Edit: Sprzedawca Mata24 ma w ofercie również wersje dla PS/2 i konwertery dla ST. Nabyłem takowy również i zabieram się do testowania (na pierwszy rzut oka wygląda identycznie, różni się tylko dwoma zworkami na płytce).

2,640

(4 odpowiedzi, napisanych Kupię / Sprzedam / Zamienię Atari)

Aha. No to zainteresuj się IO-Boardem, AKI, SimpleStereo i SIO2PC przez USB (które jest na IO-Boardzie) :)

2,641

(4 odpowiedzi, napisanych Kupię / Sprzedam / Zamienię Atari)

Zainteresuj się do tego IO-Boardem Candle'a. Masz tam sio2pc na usb, aki (podpinasz klawiaturę od pc; masz tam skróty klawiaturowe definiowane) i simple-stereo.

2,642

(26 odpowiedzi, napisanych Bałagan)

Obsługa wiosełek w BASICu: V=PADDLE(n), gdzie n = {0,1,2,3,4,5,6,7} (w xl ma sens użycie 4 pierwszych). Dostajesz wartości 0..228.

2,643

(51 odpowiedzi, napisanych Różne)

Finalna wersja atra jest tutaj.

2,644

(51 odpowiedzi, napisanych Różne)

No to właśnie wstawiam :)

85 DIM E$(9):E$(1)=CHR$(18):E$(2)=CHR$(6):E$(3)=CHR$(124):E$(4)=CHR$(7):E$(5)=CHR$(18):E$(6)=CHR$(6):E$(7)=CHR$(124):E$(8)=CHR$(7):E$(9)=CHR$(18):DATA 1,0,1,-1,0,-1,-1,-1,-1,0,-1,1,0,1,1,1,1,0
86 DIM X(4),Y(4),A(4),DX(8),DY(8)
87 FOR I=0 TO 4:X(I)=INT(39*RND(0)):Y(I)=INT(16*RND(0)):A(I)=6.28318*RND(0):NEXT I
88 FOR I=0 TO 8:READ X,Y:DX(I)=X:DY(I)=Y:NEXT I
89 P=0:PI=3.1415926:PIPI=2*PI:PI2=PI/2:PI4=PI2/2:PI8=PI4/2
400 I=INT((A(P)+PI8)/PI4)
410 POSITION X(P),2+Y(P):? E$(1+I,1+I)
420 X(P)=X(P)+DX(I):Y(P)=Y(P)+DY(I)
430 IF X(P)>38 THEN X(P)=0
440 IF X(P)<0 THEN X(P)=38
450 IF Y(P)>15 THEN Y(P)=0
460 IF Y(P)<0 THEN Y(P)=15
470 A(P)=A(P)+PI2*RND(0)-PI4
480 IF A(P)>=PIPI THEN A(P)=A(P)-PIPI
490 IF A(P)<0 THEN A(P)=A(P)+PIPI
500 P=P+1:IF P>4 THEN P=0

Efekt jest piorunujący (!) haaaa - nazwałem go "ślimaki" ;) To jedyny efekt do dema, który potrafię zakodować... :/ Wiem - to przykre, ale niestety taka jest prawda. Przykro mi bardzo.

Edit: A w załączniku kod.

2,645

(51 odpowiedzi, napisanych Różne)

Sikor! Jeszcze do północy jest godzina! Ja chce mój efekt wstawić :D

@MaW: To ja już wstawię Twój zakłócacz, który wywaliłem przypadkiem i dodam wszystko do atra.
@Sikor: Jeszcze chwilka - cierpliwości :)

2,646

(51 odpowiedzi, napisanych Różne)

@MaW: Nie wiem do czego potrzebujesz tablicy E, ale wstawiłem Twój kod (nieco zmodyfikowany) do mojej wersji i wygląda to tak:

10 GRAPHICS 0:POKE 752,1
11 DIM T$(1000):L=37
12 T$="       Prima Aprilis - edycja 2010 ;)"
13 T$(38)="    Idea by Sikor, programming by Sikor, MaW, Mono..."
14 T$(91)="    Made only for fun."
15 T$(113)=""
20 POKE 710,0:? T$(1,L);
30 DIM F(3),V(3),P(3),D(3),C(5)
40 FOR S=0 TO 3:V(S)=0:P(S)=0:NEXT S
50 DATA 0,8,4,2,12,10
60 FOR I=0 TO 5:READ D:C(I)=D:NEXT I
70 S=0
80 DLL=PEEK(560)+256*PEEK(561):DLV1=16
90 DIM LL$(128),LR$(128),L$(6):L$(1)=CHR$(160):L$(2)=CHR$(25):L$(3)=CHR$(32):L$(4)=CHR$(32):L$(5)=CHR$(153):L$(6)=CHR$(160)
91 FOR I=0 TO 15:FOR J=0 TO 7
92 LL$(1+I*8+J)=L$(2+SGN(2*J-I)):LR$(1+I*8+J)=L$(5+SGN(2*J+1-(15-I)))
93 NEXT J:NEXT I
100 L=L+1:IF L>LEN(T$) THEN L=1
110 POSITION 0,0:? CHR$(254)
120 POSITION 38,0:? T$(L,L);
130 IF V(S)>0 THEN V(S)=V(S)-1:GOTO 190
140 POSITION P(S),19:? " ";
150 F(S)=INT(256*RND(0))
160 V(S)=INT(16*RND(0))
170 P(S)=38-INT(F(S)/256*39)
180 D(S)=INT(6*RND(0))
185 IF S<2 THEN V=1+V(S)*8:POSITION 0,21+S:? LL$(V,V+7);
186 IF S>=2 THEN V=1+V(S)*8:POSITION 31,19+S:? LR$(V,V+7);
190 POSITION P(S),19:? CHR$(20);
200 SOUND S,F(S),C(D(S)),V(S)
205 IF S<2 THEN D=V(S)/2:IF D<=7 THEN V=1+V(S)*8+D:POSITION D,21+S:? LL$(V,V);
206 IF S>=2 THEN D=INT(0.5+V(S)/2):IF D<8 THEN V=8+V(S)*8-D:POSITION 38-D,19+S:? LR$(V,V);
210 S=S+1:IF S>3 THEN S=0
300 A=PEEK(20)
310 IF PEEK(20)=A THEN 310
320 POKE DLL,DLV1-16:POKE DLL+6,128-DLV1
330 DLV1=DLV1*2:IF DLV1>128 THEN DLV1=16
10000 GOTO 100

Zsynchronizowałem zmiany dlist z ramką (linia 300..310), żeby ekran nie latał "w te i we wte" ;) oraz modyfikuję puste linie na początku dlist i tylko jeden wiersz trybu 0 dzięki czemu mamy na ekranie 23 wiersze, a nie 22.
Jeśli chodzi o synchronizację to trick jest prosty - komórka 20 zmienia się co ramkę na VBLK więc czekam na zmianę po czym szybko zapisuję nowe puste linie do dlist. BASIC jest na tyle wolny, że odbywa się to zapewne już po wyświetleniu drugiego wiersza trybu tekstowego (który zamieniany jest na puste linie). Gdyby w przyszłości metoda okazała się za wolna, można spróbować innej sztuczki:

300 A=PEEK(20): FOR B=0 TO 1:IF PEEK(20)=A THEN B=0:NEXT B
310 POP

Technika jest szybsza niż GOTO, bo BASIC przy każdej pętli FOR odkłada na stos "adres" początku pętli FOR..NEXT dzięki czemu nie szuka numeru wiersza (wyszukiwanie wiersza odbywa się zawsze od początku pamięci programu, co trwa i trwa). No a POP zdejmuje to, co FOR wstawiło.

2,647

(51 odpowiedzi, napisanych Różne)

Pozwolisz MaW, że zerknę:

70 DLL=PEEK(560)+256*PEEK(561)+6:DLV1=16
300 POKE DLL,DLV1-16:POKE DLL+2,128-DLV1
310 DLV1=DLV1*2:IF DLV1>128 THEN DLV1=16
320
330
340
350

Teraz chyba nieco lepiej.

2,648

(26 odpowiedzi, napisanych Bałagan)

A AprilisCompo? Jeszcze parę godzin jest :) Ja mam nawet efekt zrobony, ale MaW miał swoje poprawki wprowadzić...

2,649

(51 odpowiedzi, napisanych Różne)

Kod w aktualnej postaci wygląda tak:

10 GRAPHICS 0:POKE 752,1
11 DIM T$(1000):L=37
12 T$="       Prima Aprilis - edycja 2010 ;)"
13 T$(38)="    Idea by Sikor, programming by Sikor, MaW, Mono..."
14 T$(91)="    Made only for fun."
15 T$(113)=""
20 POKE 710,0:? T$(1,L);
30 DIM F(3),V(3),P(3),D(3),C(5)
40 FOR S=0 TO 3:V(S)=0:P(S)=0:NEXT S
50 DATA 0,8,4,2,12,10
60 FOR I=0 TO 5:READ D:C(I)=D:NEXT I
70 S=0
90 DIM LL$(128),LR$(128),L$(6):L$(1)=CHR$(160):L$(2)=CHR$(25):L$(3)=CHR$(32):L$(4)=CHR$(32):L$(5)=CHR$(153):L$(6)=CHR$(160)
91 FOR I=0 TO 15:FOR J=0 TO 7
92 LL$(1+I*8+J)=L$(2+SGN(2*J-I)):LR$(1+I*8+J)=L$(5+SGN(2*J+1-(15-I)))
93 NEXT J:NEXT I
100 L=L+1:IF L>LEN(T$) THEN L=1
110 POSITION 0,0:? CHR$(254)
120 POSITION 38,0:? T$(L,L);
130 IF V(S)>0 THEN V(S)=V(S)-1:GOTO 190
140 POSITION P(S),20:? " ";
150 F(S)=INT(256*RND(0))
160 V(S)=INT(16*RND(0))
170 P(S)=38-INT(F(S)/256*39)
180 D(S)=INT(6*RND(0))
185 IF S<2 THEN V=1+V(S)*8:POSITION 0,22+S:? LL$(V,V+7);
186 IF S>=2 THEN V=1+V(S)*8:POSITION 31,20+S:? LR$(V,V+7);
190 POSITION P(S),20:? CHR$(20);
200 SOUND S,F(S),C(D(S)),V(S)
205 IF S<2 THEN D=V(S)/2:IF D<=7 THEN V=1+V(S)*8+D:POSITION D,22+S:? LL$(V,V);
206 IF S>=2 THEN D=INT(0.5+V(S)/2):IF D<8 THEN V=8+V(S)*8-D:POSITION 38-D,20+S:? LR$(V,V);
210 S=S+1:IF S>3 THEN S=0
220 GOTO 100

2,650

(51 odpowiedzi, napisanych Różne)

Nikt się nie chce bawić? No to naści - wskaźnik poziomu sygnału:

90 DIM LL$(128),LR$(128),L$(6):L$(1)=CHR$(160):L$(2)=CHR$(25):L$(3)=CHR$(32):L$(4)=CHR$(32):L$(5)=CHR$(153):L$(6)=CHR$(160)
91 FOR I=0 TO 15:FOR J=0 TO 7
92 LL$(1+I*8+J)=L$(2+SGN(2*J-I)):LR$(1+I*8+J)=L$(5+SGN(2*J+1-(15-I)))
93 NEXT J:NEXT I
170 P(S)=38-INT(F(S)/256*39)
185 IF S<2 THEN V=1+V(S)*8:POSITION 0,22+S:? LL$(V,V+7);
186 IF S>=2 THEN V=1+V(S)*8:POSITION 30,20+S:? LR$(V,V+7);
205 IF S<2 THEN D=V(S)/2:IF D<=7 THEN V=1+V(S)*8+D:POSITION D,22+S:? LL$(V,V);
206 IF S>=2 THEN D=INT(0.5+V(S)/2):IF D<8 THEN V=8+V(S)*8-D:POSITION 37-D,20+S:? LR$(V,V);