Kyllä meni 2 iltaa tätä vikaa etsiessä...
Olen ottanut projektissani käyttöön tällaisen näppärän autostart menetelmän "METHOD #1: RTS TO STACK" @ https://codebase64.org/doku.php?id=base:autostarting_disk_files eikä siinä mitään, hienosti toimii. Kävi kuitenkin niin, että kun myöhemmin lisäsin projektiin näppäimistön skannaus koodin (ei kernalia käytössä) niin sen kanssa oli ihme murheita, mm. joskus se melkein toimi, joskus luki vain muutamaa näppäintä, parhaimmillaankin pimeänä kuitenkin aina yksi näppäinmatriisin sarake (se jossa mm Q,E,T,U,O). Tätä sitten tosiaan pari iltaa debuggasin enkä osannut yhdistää sitä mitenkään tuohon autostarttiin, vaan luulin, että vika oli muutoksissa jotka minun piti tehdä löytämääni skannauskoodiin. Mutta vihdoin hokasin, että autostartin kolme ensimmäistä riviä
ovat syypäänä ongelmiini.
Paikat joihin se kirjoittaa %01111111 ovat CIA#1:n "Interrupt control and status register" ja "Timer A control register".
En saa mitään tolkkua miksi rutiinin kirjoittaja tekee noin ja tekeekö nuo rivit edes sen mitä kommenteissa lukee? Tulkintani mukaan siinä nimenomaan pistetään timeri ja keskeytykset päälle, mutta onko näin?
Kaikki toimii hienosti kun rivit poistaa (itseasiassa vain sta $dc0e poisto riittää), mutta jokin tarkoitus kai niillä on? Että pitäisikö ne jättää siihen ja konffata CIA myöhemmin oletusasetuksiin, kunhan nekin jostain löytäisi.
Sekin olisi tietty tietää mikä saa näppäimistön skannauksen sekoilemaan kun CIA on kyseisellä tavalla konffattu.
Olen ottanut projektissani käyttöön tällaisen näppärän autostart menetelmän "METHOD #1: RTS TO STACK" @ https://codebase64.org/doku.php?id=base:autostarting_disk_files eikä siinä mitään, hienosti toimii. Kävi kuitenkin niin, että kun myöhemmin lisäsin projektiin näppäimistön skannaus koodin (ei kernalia käytössä) niin sen kanssa oli ihme murheita, mm. joskus se melkein toimi, joskus luki vain muutamaa näppäintä, parhaimmillaankin pimeänä kuitenkin aina yksi näppäinmatriisin sarake (se jossa mm Q,E,T,U,O). Tätä sitten tosiaan pari iltaa debuggasin enkä osannut yhdistää sitä mitenkään tuohon autostarttiin, vaan luulin, että vika oli muutoksissa jotka minun piti tehdä löytämääni skannauskoodiin. Mutta vihdoin hokasin, että autostartin kolme ensimmäistä riviä
Koodi [Valitse]
lda #$7f ;suppress any irq&nmi
sta $dc0d ;to disallow abort load by R/S
sta $dc0e
ovat syypäänä ongelmiini.
Paikat joihin se kirjoittaa %01111111 ovat CIA#1:n "Interrupt control and status register" ja "Timer A control register".
En saa mitään tolkkua miksi rutiinin kirjoittaja tekee noin ja tekeekö nuo rivit edes sen mitä kommenteissa lukee? Tulkintani mukaan siinä nimenomaan pistetään timeri ja keskeytykset päälle, mutta onko näin?
Kaikki toimii hienosti kun rivit poistaa (itseasiassa vain sta $dc0e poisto riittää), mutta jokin tarkoitus kai niillä on? Että pitäisikö ne jättää siihen ja konffata CIA myöhemmin oletusasetuksiin, kunhan nekin jostain löytäisi.
Sekin olisi tietty tietää mikä saa näppäimistön skannauksen sekoilemaan kun CIA on kyseisellä tavalla konffattu.