TCH (statz) | #1, Főfasz (10466) |
1978 | #2911 | ^ | Idézet | Sun, 08 Dec 2013 10:15:50 +01 |
31.46.*.* | *.catv.pool.telekom.hu |
Írtam egy kis makrót, ami érzékeli, hogyha nem C64-en vagyunk, hanem C128-on.; det_c128 macro detects c128 ; should be called during initialization, to detect c128 hardware present ekr = $d02f ; on c128, $d02f is the extra keyboard register c128_det: .byte 0 ; c128 detected: 0 = c64, !0 = c128 .defm det_c128 lda ekr ; load ekr original value to accu dec ekr ; decrement ekr eor ekr ; xor original ekr with current sta c128_det ; store result (only 0, if original and current ekr matches) inc ekr ; restore ekr to original value .endmÉs használni úgy lehet, hogy először meghívjuk ezt a makrót #det_c128(az include lehetőleg az adatok között történjen, mert a c128_det adat, a makró pedig csak meghíváskor fordul be a kódba), utána pedig ha tudni akarjuk, hogy éppen milyen gépen vagyunk lda c128_det bne stuff_with_c128 beq stuff_with_c64Bár nem hiszem, hogy itt rajtam kívül bárki is 65xx-ezne, vagy programozna C64-en/C128-on, de azért használjátok egész seggel. Sz*rk: Közbe olvasgattam, mások hogy csinálják. Ők nem vergődtek zöld ágra a sima forgatós/csökkentős móddal, de nekem adtak egy ötletet és nekem sikerült, az én kódom működik is és kisebb/gyorsabb, mint az övék. Sz*rk 2: Közben rájöttem, hogy az egyik csávó igazából megcsinálta, csak épp nem jött rá, mert mindenáron úgy akarták, hogy az akkuban csak 0 vagy 1 lehet és az ő megoldása az egyik esetben 2-t ad vissza. Csakhogy valójában a 2 ugyanúgy logikai igaz, mint az 1, tehát használható. Ennek megfelelően az én kódomban a cmp/bne páros kiváltható egy eor utasítással, mert ha kizáró vagy után nulla az eredmény, akkor a két paraméter egyezett, tehát nincs változás, ergo c64, ha meg nem nulla, akkor c128. |