C64Power Forum

Ogólne => Forum Ogólnodyskusyjne => Wątek zaczęty przez: Tomaaz w 06 Lipca 2009, 17:56

Tytuł: Przerwania
Wiadomość wysłana przez: Tomaaz w 06 Lipca 2009, 17:56
 Czy  ktoś  mógłby  mi  pokrótce  przypomnieć  najważniejsze  informacje  dotyczące  obsługi  wszystkich  typów  przerwań?  Z  góry  dziękuję!
Tytuł: Przerwania
Wiadomość wysłana przez: chateau w 06 Lipca 2009, 19:17
 zacznij  od  irq  w  vic-ii,najprostsze.  uruchamiasz  w  d01a,linie  na  poczatku  ktorej  ma  wystartowac  wybierasz  w  d012  (i  najwyzszym  bicie  d011  bo  mamy  wiecej  niz  $ff  linii),potwierdzasz  wykonanie  w  d019.  sei/cli  uzywasz  do  maskowania  przerwan  na  przyklad  na  czas  ustawiania  parametrow  przerwania.  w  punkcie  3.12  artykulu  o  vic-ii  jest  wiecej  informacji:  http://www.zimmers.net/cbmpics/cbm/c64/vic-ii.txt
Tytuł: Przerwania
Wiadomość wysłana przez: Tomaaz w 06 Lipca 2009, 22:17
 No  to  żeś  mi  jasno,  klarownie  i  konkretnie  przypomniał.  :)  W  każdym  razie  -  dzięki  za  linka!  A  może  ktoś  jeszcze  coś  dorzuci?
Tytuł: Przerwania
Wiadomość wysłana przez: Skull w 07 Lipca 2009, 08:21
 tutaj:  http://www.codebase64.org/doku.php?id=base:introduction_to_raster_irqs
Tytuł: Przerwania
Wiadomość wysłana przez: 2sam w 09 Lipca 2009, 20:15
 To  co  moim  zdaniem  jest  zbyt  często  pomijane  to  źródła  przerwań  oraz  rola  układów  CIA.  Samo  IRQ  może  mieć  kilka  źródeł  np.  rozkaz  BRK  -  polecam  deasemblację  Kernela.    
   
  Jest  jeszcze  przerwanie  NMI  które  pomimo  swojej  nazwy  może  zostać  zablokowane.  
       
Tytuł: Przerwania
Wiadomość wysłana przez: wegi w 16 Lipca 2009, 19:23
 stawiam,  że  klawisza  restore  zablokować  się  nie  da  
   
  http://c64scene.pl/viewtopic.php?t=159
Tytuł: Przerwania
Wiadomość wysłana przez: 2sam w 19 Lipca 2009, 18:36
 Zależy  co  rozumiesz  przez  \'zablokować\'.  Samego  klawisza  faktycznie  nie  zablokujesz,  ale  przerwanie  NMI  można  zablokować  i  robi  się  to  bardzo  prosto  (chociaż  nie  tak  jak  w  przypadku  IRQ  tylko  rozkazem  SEI).    
   
  Blokowanie  NMI  polega  na  użyciu  timera  CIA  aby  wyzwolić  NMI  a  następnie  go  nie  potwierdzić  (ACK).  Prawdą  jest  że  6502  i  jego  różne  wersje  nie  mają  potwierdzenia  przerwań,  ale  Komodorek  nie  składa  się  tylko  z  procesora.  W  tym  przypadku  za  potwierdzenie  odpowiada  układ  CIA.  Dodam  jeszcze  że  są  2  wersje  tego  układu  (6526  i  6526A)  które  mają  jedną  istotną  różnicę:  NMI  jest  wywoływane  jeden  cykl  później  lub  wcześniej  w  zależności  od  wersji.    
   
  Sensowność  blokowania  NMI  także  jest  niepodważalna  ;)  Po  pierwsze  w  przypadku  operacji  krytycznych  czasowo  pozwala  to  chronić  przed  nieprzewidzianym  przerwaniem.  Po  drugie  trick  ten  jest  stosowany  w  niektórych  zabezpieczeniach  przed  kopiowaniem  (a  raczej  opcją  typu  freeze)  chociaż  AR  i  jego  klony  oraz  nowsze  wersje  (RR  i  MMC  Replay)  działają  bez  problemu  nawet  bez  przerwań  IRQ  i  NMI  (BRK  nie  liczę  bo  rozkaz  ten  zawsze  kończy  się  wywołaniem  IRQ).  Także  Expert  sobie  poradzi  bo  zostanie  uaktywniony  (jeśli  jest  włączony).  Jeśli  nie  to  lampka  ESM  sygnalizuje  że  trzeba  potwierdzić  przerwanie  przyciskiem  ESM.  
   
  Generalnie  to  jedna  z  pozaciekawszy  IMHO  funkcji  układów  CIA  wokół  której  narosło  wiele  legend  i  nieporozumień.          
Tytuł: Przerwania
Wiadomość wysłana przez: Kisiel w 19 Lipca 2009, 19:58
 tyle  napisałeś  i  nic  z  tego  nie  wynika.  NMI,jak  sama  nazwa  wskazuje,  nie  da  się  zblokować.  Reszta  zdań  jest  bełkotem,  wystarczy  wcisnąć  reset  w  actione  i  potem  restore  aby  się  przekonać  jak  on  działa.
Tytuł: Przerwania
Wiadomość wysłana przez: 2sam w 19 Lipca 2009, 20:17
 W  obrażaniu  jesteś  super  :)    
   
  Żeby  nie  było  że  znów  coś  napisałem  nie  tak  dla  innych  wielkich  znawców  C64  to  podaję  źródła  ogólnie  dostępne:  
   
  http://codebase64.org/doku.php?id=base:nmi_lock  
   
  http://codebase64.org/doku.php?id=base:detecting_6526_vs_6526a_cia_chips
   
  Życzę  sukcesów  w  dalszym  byciu  miłym.  To  bardzo  przyciąga  kolejnych  ludzi  do  forum.
Tytuł: Przerwania
Wiadomość wysłana przez: Kisiel w 19 Lipca 2009, 20:47
 oj  hardware  guru  urażony?  NMI  nie  da  się  zablokować  poza  fizycznym  usunięciem  połączenia  na  płycie.  Kiedyś  zwalił  mi  się  scalak  od  obsługi  restore  i  musiałem  tak  to  zrobić.  Bełkotanie  o  budowie  actiona  nie  mogę  inaczej  nazwać  bo  niestety  jako  jedyny  na  tym  forum  go  sklonowałem  (AFIK)  
   
Tytuł: Przerwania
Wiadomość wysłana przez: wegi w 19 Lipca 2009, 22:23
 Umówmy  się  tak:  
   
  Można  zablokować  jedno  źródło  generowania  NMI,  natomiast  klawisz  restore  za  każdym  razem  gdy  go  wdusisz  geneuje  NMI  i  nie  ma  sposobu  softwarowego  aby  to  zablokowac.
Tytuł: Przerwania
Wiadomość wysłana przez: Kisiel w 20 Lipca 2009, 15:48
 nie  no  idea  jest  taka  sama  jak  uszkodzenie  mechaniczne  płytki  j.w.,  ustawiamy  na  zero  NMI  i  nie  ma  możliwości  wywołania  przerwania.  
Tytuł: Przerwania
Wiadomość wysłana przez: .pr0lame w 21 Lipca 2009, 03:32
 aha  :)
Tytuł: Przerwania
Wiadomość wysłana przez: wegi w 31 Lipca 2009, 20:49
 Właśnie  wymyśliłem  sposób  na  zablokowanie  NMI  :)  
   
  O  ile  mnie  pamięć  nie  myli  przerwanie  wyzwalane  jest  opadającym  zboczem  tak  więc  ustawienie  linii  NMI  w  stanie  niskim  uniemożliwia  nawet  sprzętowe  wywołanie  NMI.  
   
  Linię  NMI  wprowadzamy  w  stan  niski  wciskając  klawisz  restore.  Tylko...  potem...  nie  można  go  już  puścić  hehe  \'\'  
Tytuł: Przerwania
Wiadomość wysłana przez: wegi w 01 Sierpnia 2009, 19:00
 moja  teoria  updła  -  w  realu  nie  działa  -  odszczekuję  -  na  c64scene  Nitro  podał  sposób  na  zablokowanie  nmi  -  sprawdzę  i  może  drugi  raz  odszczekam  :)
Tytuł: Przerwania
Wiadomość wysłana przez: wegi w 01 Sierpnia 2009, 22:13
 Sprawdziłem  sposób  podany  przez  Nitro  -  klawisz  restore  nie  wywołuje  NMI  \'\'  Nie  zgłasza  się  frezerka  z  actina  (w  1541u)  menu  1541u  też  nie  zawsze  się  zgłasza    \'\'    \'\'  Ni  mniej  ni  więcej  oznacza  to,  że  nasz  oczytany  kolega  2sam  MIAŁ  RACJĘ    \'\'    \'\'    
   
   
Tytuł: Przerwania
Wiadomość wysłana przez: Kisiel w 01 Sierpnia 2009, 23:46
 znaczy  się  ustawienie  na  zero  nmi  daje  radę..  qrwa  nie  możliwe  hahahaha  dobrze  że  wiedziałem  to  ponad  10  lat  temu  bo  inaczej  nigdy  bym  nie  dokończył  c64+
Tytuł: Przerwania
Wiadomość wysłana przez: chateau w 02 Sierpnia 2009, 02:03
 przeciez  to  co  nitro  podal  na  tamtym  forum  to  jest  to  samo  co  2sam  wkleil  pare  postow  wyzej  w  linku  http://codebase64.org/doku.php?id=base:nmi_lock   \'\'  czasem  warto  troche  poczytac    \'\'  
Tytuł: Przerwania
Wiadomość wysłana przez: wegi w 02 Sierpnia 2009, 08:48
 no  zagapiłem  się  przepraszam  \'\'