2,776

(82 odpowiedzi, napisanych Fabryka - 8bit)

No piękne. Ja bym się pisał na to. Jaki soft to będzie obsługiwał? KMK?

2,777

(117 odpowiedzi, napisanych Programowanie - 8 bit)

Tak właśnie mi się zdarzyło.

2,778

(117 odpowiedzi, napisanych Programowanie - 8 bit)

Właśnie natknąłem się na błąd (tak mi się wydaje) w mads 1.8.5. Assemblacja:

cmp #

kończy się generowaniem:

C9 00

Poprosiłbym może o jakiś syntax error? Albo przynajmniej warning jeśli to jest usprawnienie.
Używam madsa kompilowanego fpc na ubuntu 9.04 (x86_64).

2,779

(26 odpowiedzi, napisanych Sprzęt - 16/32bit)

$ sudo su
<podajesz hasło swojego użytkownika>

Z poziomu roota możesz ustawić hasło roota za pomocą

$ passwd

po czym z dowolnego usera możesz już zrobić

$ su
<podajesz hasło roota

i jesteś root.
Możesz też skonfigurować dostęp do programów, jako root w pliku /etc/sudoers (polecenie visudo) np. wstawiając tam linię:

piotr ALL=(ALL) ALL

i wtedy odpalać programy przez:

$ sudo <program odpalany z uprawnieniami roota

ale jak widzę jesteś w grupie admin (w sudoers jest domyślnie %admin ALL=(ALL) ALL) więc powinieneś mieć już możliwość odpalania aplikacji przez sudo.
Z ST nie mam doświadczenia - więcej z 8-bit, dlatego pisałem że odnośnie ST musisz pytać kogoś innego.
Na codzień używam linuxa ubuntu 9.04.

2,780

(26 odpowiedzi, napisanych Sprzęt - 16/32bit)

Kroll napisał/a:

The PC is running linux. Just type in:

    pppd crtscts lock 192.168.1.1:192.168.1.2 /dev/ttyS1 115200

jak probowalem to pokazywal sie permision denied

Sprawdź czy twój użytkownik jest w grupie dialout za pomocą:

$ groups

bo tylko wtedy będziesz mógł otworzyć urządzenie do odczytu i zapisu (ttyUSB0 ma uprawnienia rw dla grupy). Jeśli nie ma przeedytuj /etc/group tak, żeby znalazła się tam linia:

dialout:x:<id grupy>:<nazwa twojego usera>

np. u mnie to wygląda tak:

dialout:x:20:mono

IMHO nie potrzebujesz uruchamiać pppd (który służy do ustanawiania połączeń p2p między hostami w sieci), bo wystarczy że dobierzesz się do łącza szeregowego dowolnym programem umożliwiającym odczyt i zapis z łącza szeregowego (np. wspomnianym minicom'em, czy innym microcom'em).

2,781

(26 odpowiedzi, napisanych Sprzęt - 16/32bit)

To co opisałem, to tylko konfiguracja linuxa (też ubuntu, ale 9.04) odnośnie uruchomienia i sprawdzenia kabelka.
Nie mam niestety Falcona. Szczegółów dotyczących Atari musi Ci udzielić ktoś inny :(

Edit: Dzięki za model kabelka - spróbuję go namierzyć i wypróbuję.

2,782

(26 odpowiedzi, napisanych Sprzęt - 16/32bit)

Kroll napisał/a:

Bus 003 Device 006: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC

To jest raczej to.

Kroll napisał/a:

usbserial              36232  1 ftdi_sio

Bardzo dobrze. usbserial korzysta z ftdi_sio - sprawdź dalej ftdi_sio za pomocą

$ lsmod | grep ftdi_sio

aż trafisz na moduł, który nie korzysta już z innego. Ale te poszukiwania nie są już konieczne w świetle tego co poniżej.

Kroll napisał/a:

crw-rw----   1 root dialout 188,   0 2009-11-12 23:59 ttyUSB0

To jest to.

Kroll napisał/a:

Kabla jeszcze nie zapetlalem z obu stron mam zenskie koncowki ale jak potrzeba to cos takiego zrobie

Jeśli masz wtyczki DB9 to wystarczy pin 2 połączyć drutem z 3.

BTW. Możesz mi podać konkretny model twojego kabla? Sam (jak dało się zauważyć) używam noname'a opartego o prolific pl2303, ale to jest niedobry kabelek i chętnie przesiadłbym się na lepszy.

2,783

(26 odpowiedzi, napisanych Sprzęt - 16/32bit)

Po włączeniu przejściówki do usb polecenie:
$ lsusb
powinno ci ją pokazać (zależy od modelu przejściówki jaki posiadasz, ale najczęściej coś z pl2303). Ponadto:
$ lsmod
powinien pokazać załadowany automatycznie moduł pl2303 właśnie.
Z kolei:
$ ls -ltra /dev/ | tail
powinno pokazać urządzenie ttyUSBx (gdzie x to nr urządzenia od 0 włącznie).
Sprawdzić transmisję można zapętlając kabel i malując:
$ picocom /dev/ttyUSB0
wciskanie literek powinno dawać echo (przy niezapętlonym nie zobaczysz nic).

Hehe. Fakt!

Hmmm. Faktycznie jest na szybie PBI zanegowany więc teoretycznie elektronika mogłaby nim wyłączać w dowolnej chwili pakiet fp. Znane są takie przypadki w istniejących urządzeniach? Może są jakieś zalecenia firmy ATARI co do konstruowania nowych urządzeń?

@drac030: nie wiem skąd się wzięło to "podnoszenie" romów, ale odkąd pamiętam zawsze w ten sposób określaliśmy (z kolegami) wyłączenie romu i włączenie ramu :) Może z c64 - w podręczniku Bohdana Frelka ( http://www.starekompy.pl/frelek.jpg ) przy konfigurowaniu pamięci rysunki przesuwały części pamięci to w górę, to w dół...

Dzięki.

W atariki i tym wątku wyczytałem, że rom nowego urządzenia włączany jest tylko na czas operacji i/o.
Analiza kodu procedury reset i przerwań maskowalnych wskazuje, że ten rom jest włączany przy manipulacjach rejestrem PDVREG ($d1ff), czyli przy wyborze nowego urządzenia (zapalenie konkretnego bitu odpowiadającego urządzeniu), a wyłączany po jego wyzerowaniu.
Czy dobrze więc rozumiem, że kiedy żadne nowe urządzenie nie jest wybrane wtedy zwyczajnie jest tam pakiet fp (o ile rom z systemem jest opuszczony)? Można na tym polegać, czy są jeszcze jakieś sytuacje (prócz podniesienia romu z systemem) kiedy pakiet fp nie jest widoczny dla cpu?

2,788

(11 odpowiedzi, napisanych Bałagan)

Miło i przyjemnie czasem się zafortepianić.

2,789

(5 odpowiedzi, napisanych Programowanie - 8 bit)

Cieszę się, że ktoś to już wymyślił :D Znaczy, że idę dobrym torem.

Edit: Wielkie dzięki. Ta procedura jest lepsza, bo obsługa przerwania może być nawet w x-ram.

2,790

(5 odpowiedzi, napisanych Programowanie - 8 bit)

Interesuje mnie jak wywoływać procedury z romu kiedy go nie ma :D
Konkretnie chodzi o zagwarantowanie poprawnej obsługi przerwań przez system kiedy podnoszę sobie rom i operuję na ramie pod nim.
Założenia:
1. Nie satysfakcjonuje mnie blokada przerwań na czas operacji na ramie pod romem.
2. Chciałbym wywoływać przerwanie z romu przez jmp ($fffe) zakończone oczywiście przez rti.
Czy poniższy kod zadziała poprawnie? Na początek irq:

  ;ustawiamy wektory obslugi przerwan w ramie pod romem
  sei
  lda #0
  sta irqen
  lda #%11111110
  sta portb
  ldx <irqproc
  ldy >irqproc
  stx irqvec     ;$fffe
  sty irqvec+1 ;$ffff
  ;opuszczamy rom
  lda #%11111111
  sta portb
  lda #$c0
  sta irqen
  cli
  ...
  ;tu się dalej coś dzieje łącznie z podnoszeniem romu i opuszczaniem bez żadnej synchronizacji
  ...

irqproc equ *
  sta irq_a
  lda portb
  sta irq_pb
  lda #%11111111
  sta portb
  lda <irqret
  pha
  lda >irqret
  pha
  php
  lda irq_a
  jmp (irqvec)   ;$fffe
irqret equ *
  lda irq_pb
  sta portb
  lda irq_a
  rti

irq_a org *+1
irq_pb org *+1

Żeby spełnić założenia mój kod obsługi irq:
1. Zachowuje konfigurację pamięci.
2. Wstawia flagi i adres procedury odtwarzającej portb na stos.
3. Opuszcza rom i skacze pod $fffe.
Ponieważ flagi odkładane na stos mają celowo ustawiony znacznik I (php w procedurze przerwania - dodatkowo przenosi ono jeszcze flagę B dla przerwań brk) więc po wykonaniu rti z procedury systemowej (do której skaczemy jmp ($fffe)) powinniśmy z blokadą przerwań irq wrócić pod irqret i odtworzyć konfigurację pamięci - prawda? irq, które zdarzy się podczas obsługi nie powinno zostać odebrane, bo ma czekać na skasowanie flagi I. Akumulator w zasadzie mógłby być odtwarzany tylko w irqret, ale zakładam, że może być potrzebny userowi i stąd lda irq_a przed jmp ($fffe).

A teraz ta sama sztuczka tylko dla nmi :)
Jak wiadomo nmi nie można opóźnić (niezależnie od stanu flagi I zawsze jest wykonywana procedura obsługi przerwania) - da się go tylko zablokować, co mi kompletnie nie odpowiada, bo nie wiem w którym momencie przyjdzie mi skorzystać z ramu pod romem.
Czy poniższy kod zadziała poprawnie?

nmiproc equ *  
  sta nmi_a
  lda portb
  sta nmi_pb
  lda #%11111111
  sta portb
  lda <nmiret
  pha
  lda >nmiret
  pha
  php
  lda nmi_a
  jmp (nmivec)   ;$fffa
nmiret equ *
  lda nmi_pb
  sta portb
  lda nmi_a
  rti

nmi_a org *+1
nmi_pb org *+1

Implementacja się nie różni od tej dla irq, ale:
1. Mimo, że nmi mogą się przerywać, to w chwili kiedy włączymy rom mamy już obsługę nmi systemową i nie musimy nic przełączać (!) a więc specjalna obsługa potrzebna jest tylko kiedy rom jest podniesiony.
2. Sztuczka z php dalej przydaje się do odwlekania irq.
Najbardziej wrażliwy punkt to moment od przyjęcia przerwania do włączenia romu - 17 cykli. Jeśli vblk i dli nie będą interferować to chyba nie powinno być problemu?
Może ktoś z tym ma jakieś doświadczenia? Będzie to działać poprawnie?

Edit: Oczywiście całe cyklowanie dli pójdzie w kosz, ale na to już nic nie poradzę :(

2,791

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

Bit 3 pbctl odpowiada za przełączanie stanu linii command. Wydaje mi się, że już w momencie kiedy atari czeka na odbiór bajtu statusu jest ona puszczana (stan wysoki). Ponieważ podczas wysyłania nie zdarzy się żaden błąd to po wysłaniu 4 bajtów + crc o ile procedura nie zostanie przerwana klawiszem break, to powina zainicjalizować odczyt statusu a więc ustawić stan linii command w stan wysoki (na odebranie statusu ustawiany jest timeout 2 ramek - 2/50 s w pal). Obsługa klawisza break również powoduje natychmiastowe ustawienie linii w stan wysoki.

Edit:
Warto może jeszcze dodać, że od chwili ściągnięcia command na 0 wykonywany jest kod:

     LDX #$01
LOOP1 LDY #$FF
LOOP2 DEY
     BNE LOOP2
     DEX
     BNE LOOP1

co daje ok 1285 cykli procesora (726 us?). Ale po wysłaniu komendy raczej nie powinno być wielkich opóźnień (co nie pokrywałoby się z Twoimi spostrzeżeniami).

2,792

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

Może w modemie?

2,793

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

Czy przypadkiem w protokole XF551 nie było tak, że komendy z najwyższym bitem ustawionym nie przełączały stacji w tryb turbo (38400? 57600? pamiętam, że w audf ustawiało się 6)?
O ile pamiętam wyglądało to tak:
1. atari wysyła polecenie w 19200 (pbctl=$34)
2. xf odpowiada ack/nack w 19200 (pbctl=$3c)
3. atari wysyła blok w turbo
4. xf odpowiada ack/nack
W przypadku odbioru bloku przez atari nie ma p4 - nie jestem też pewny czy p4 idzie w 19200 czy w turbo.
Nie wiem, jak jest w przypadku innych stacji i systemów turbo.

@pecus: magnetofon - 600 :D, ale ta prędkość jest w pewnym zakresie zdaje się korygowana podczas odczytu dwóch pierwszych bajtów rekordu zawierających naprzemiennie zera i jedynki ($5555).

2,794

(7 odpowiedzi, napisanych Bałagan)

Cosi napisał/a:

...nazywałyby się np. ataraki :D

i Bajteny.

2,795

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

Zerknij na zawartość DVSTAT ($2ea)- można go wypełnić (dla stacji nr 1) za pomocą:

lda #'S'
sta dcmnd   ;$302
jsr jdskint   ;$e453

W DVSTAT dostajesz 4 bajty statusu http://atariki.krap.pl/index.php/SIO#Stacja_dysk.C3.B3w.
Czemu Waść nie spojrzysz w linki, które ludzie dobrzy podają?
Informacje które Ci podałem znajdziesz w książce Zientary "Procedury wejścia/wyjścia" w rozdziale "Sterownik dyskowy": http://tajemnice.atari8.info/ksiazki/zi … yjscia.zip

2,796

(23 odpowiedzi, napisanych Bałagan)

Napisz napisz. Napisz coś ładnego.

2,797

(25 odpowiedzi, napisanych Software, Gry - 8bit)

Hmmm. Kto wie, kto wie :) Póki co oglądam sobie.
Nigdy w tę grę nie grałem.

Edit: Przyznam się, że grafika Anj zrobiła na mnie kolosalne wrażenie!

2,798

(25 odpowiedzi, napisanych Software, Gry - 8bit)

Bardzo dziękuję :)

2,799

(19 odpowiedzi, napisanych Software, Gry - 8bit)

1. Czas obsługi brk od jsr teoretycznie różni się jednym cyklem zdaje się, ale co jeśli brk zrobisz podczas obsługi irq?
2. Blokada przerwań irq podczas brk może być zaletą lub wadą zależnie od kontekstu.
3. 3 bajty na stosie zamiast 2 - czy to wada, czy zaleta też zależy od kontekstu.
4. Adres powrotu odłożony na stosie można wykorzystać do pobrania parametrów następujących po opkodzie brk, ale trochę z tym zabawy.
5. Konieczność dzielenia wektora brk z irq a co za tym idzie odróżniania źródła przerwania.
Taką "emulację" dowolnego procesora prefiksowaną brk można zrobić softwareowo, ale szybkie to nie będzie :/

2,800

(19 odpowiedzi, napisanych Software, Gry - 8bit)

Hehe - w ogóle przerwania nie są potrzebne. Rozpraszają tylko człowieka niepotrzebnie ;). Vide Propeller - http://www.parallax.com/tabid/407/Default.aspx (btw. czy ktoś miał okazję tego używać?).