C64Power Forum
Software => Programowanie => Wątek zaczęty przez: qus w 26 Maja 2016, 08:15
-
Kernal zawiera pod adresami
0xFEC2 timingi NTSC
0xE4EC timingi PAL
dla RS232. Ale nie bardzo widzę, aby jakiś kod kernala z tych tabel korzystał. Coś mi umknęło?
-
OK, już znalazłem. Odwołanie jest, ale o dwa bajty niżej.
-
To jeszcze inna rzecz. Co robi bajt 2c w poniższym kodzie? To nie jedyne miejsce w kernalu, gdzie dzieje się coś takiego...
.edad lda #$80 ; flag ?DEVICE NOT PRESENT
.byte $2c ; mask LDA #$03
.edb0 lda #$03 ; flag write timeout
.edb2 jsr $fe1c ; set I/O status word
cli
clc
bcc $ee03 ; allways jump, do final handshake
-
myśłę że zajęcie się tym co oznacza rozkaz $2c oraz dlaczego jest ładowanie do rejestru wartością przed wykonaniem procedury, inteligentym ludziom zajmie kilka minut.
-
Znaczy, że jest to źle zdisasembliwany op BIT? Ciekawe, że wygląda to tak w kilku różnych zrzutach dostępnych w sieci.
-
oooo ja wszystko źle... a może dobrze ? bit nie zmienia zawartości rejestru.
masz jeszcze 42s.
-
czas minął... next time poszukaj lepszego przykładu :)
-
Co przegrałem? Ok, rozumiem że to potrójny NOP. Jednak trudno to nazwać intuicyjnym...
-
faktycznie 33 lata później ... Polak, nie syryjczyk, żyd , murzyn z brukina faso.... stwierdził że KOD z 1982 roku jest mało przejrzysty bo prawdziwy białas żąda transparentności...
...no a na poważnie to wiele takich myków nie ma w romie.
ps. hint, mega hint..w czasach gdy oni pisali kod, to nie było narzędzi aby to zobaczyć jak człowiek... a jednak się udało. Więc jak narzekasz....
-
ps. hint, mega hint..w czasach gdy oni pisali kod, to nie było narzędzi aby to zobaczyć jak człowiek... a jednak się udało. Więc jak narzekasz....
Faktycznie zastanawia mnie to jak z tym dali radę i chyba była to droga przez mękę
-
Znaczy, że jest to źle zdisasembliwany op BIT? Ciekawe, że wygląda to tak w kilku różnych zrzutach dostępnych w sieci.
Jest dobrze zdissasemblowany. Ta procedura ma dwa wejscia od adresu $edad i $edb0. Gdyby zdissasemblowqc ja tak jak sugerujesz "dobrze" to dopiero bys sie zastanowial co robi skok pod adres $eeb0.
Oczywiscie mogli zamiast bit dac np. Jmp $edb2 albo bne 2 ale to dodatkowy bajt a pamiec ROM z gumy nie jest sie nie rozciagnie. Taka sztuczka pozwola na zaoszczedzeniu 1 bajta ;)