Az elsőre azt csináltam, hogy IT-ben használok bra és brw utasításokat, oda úgysem csaphat be újabb IT. Tudom, meg lehetne csinálni, de ez most hagyományosan van szervezve.
Alap szinten pedig
movlp HIGH label
goto label
Persze figyelve arra, hogy ha a goto-t egy btfs[cs] ugorja, akkor a movlp még ez elé kell.
Az USB RAM problémájával csak elnagyoltan foglalkoztam. Úgy döntöttem, az assembly betétem változóterületét fix címre, 0x620-ra allokálom, nem bízom ezt a linkerre. Ez a cím nem dual port RAM. Bár gondolom, ennek itt azért nincs jelentősége, mert vélhetően a teljes 512 byte-ot az USB stack használja.
Szerk.: Egyébként azért szeretném jobban a bra utasítást a goto-nál, mert nem kell a PCLATH-tal foglalkoznom, lévén relatív ugráskor a PCH-ba csordul az, aminek oda kell csordulnia. Hasonlóképpen a brw is a teljes PC-re képez átvitelt, szemben az addwf PCL utasítással, ahol figyelni kell arra, nehogy a PCL túlcsorduljon, azaz modulo 0x100 lapon túlra nem lehet vele ugrani.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE