Ne légy negatív! Azért van abban valami jó, amikor megcsinál az ember egy ilyet. Nyáron nem csinálnám, de most semmi problémám ezzel. Amúgy fordítva ültem a pacira: az isr keretét C-ben írtam, onnan tudom hívni az USB stack service függvényét, meg a saját, assembly-ben implementált timer rutinomat. Kevésbé tetszik, mert az isr keretét is én szerettem volna írni, de workaroundnak szódával még elmegy. Sikerült lefordítani, viszont nem működik. Most van az az érzésem, hogy „de hát ez már egyszer működött!”. :)
Szerk. 1: Nagyszerű, amikor a fordító a globálisan meghirdetett függvényem címét tudja, mert a C kódból a hívás címét konkrétan 0x3e1b-re álmodja - azon lendüljünk hirtelen túl, hogy 0x1fff-ig tart a programtár -, majd maga a kód már nincs benne, a lista file-ban többet sehol sem szerepel a 0x3e1b cím, de a 0x1e1b sem. (C-ben extern-ként deklarálva.) Pedig az assembler optimalizációját is kikapcsoltam már. Nyilván fejreállt, az első időalap megszakítás alkalmával memória szemétre adódott a vezérlés, szóval nem jutott messzire. Milyen jó is, amikor nem az értelmes részével vív az ember, de meg vagyok verve egy compilerrel is. Ezért szeretek tisztán assembly-ben programozni, ott az van és úgy, amit mondok neki.
Szerk. 2: Kezdek rossz kedvű lenni. Van a psect direktívának egy limit=max_cím flag-je a dokumentáció szerint. Erre a fordító szintaktikai hibát mond. Próbáltam decimálisan is, hexadecimálisan is, argumentum nélkül is - bár úgy semmi értelme. Bezzeg a többi flag működik, épp az nem, amellyel jobb belátásra tudnám kényszeríteni a linkert. :(
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE