Mi ebben a nehéz?
Hat ha nem is nehez, torodni kell vele, az pedig az (ha jol ertem), hogy
a rendszerbovitok irasakor ( ha tudjuk hogy rombol es rambol is futtatni akarjuk ) mar elore gondolni kell erre, es az irhato memoriateruleteket (valtozoteruleteket) akkor kulon kell valasztani a kod tobbi reszetol (kod+csak olvashato memoriateruletek), es egymas melle, egy folytonos memoriablokkba kell szervezni oket ( nem lehetnek osszekeveredve a kod tobbi reszevel ),
es akkor a blokk meretenek megfelelo memoriateruletet leallokalni a rom bovito futtatasakor a rom allokalo akciokodjanal, es ezt majd IY tartalmazni fogja, mikor a romhivasok megtortennek az exos reszerol akkor ha rombol futunk,
ha nem rombol futunk, akkor minden egyes akciokod megerkezesekor az IY- t fel kell tolteni valami ram terulet cimevel, ami mondjuk abszolut ram bovito eseten lehet a kod+adat terulet utanra mutato pointer,
relativ bovito eseten meg most hirtelen nem is tudom, honnan szedjuk majd a memoriat hogy ne egy egesz szegmens lefoglalasaval jarjon, de ez nem is anynira fontos mert ilyet nem is nagyon szandekszok egyenlore.
Namost fentihez ket dolog is kell akkor:
Valtozo teruleten belul ( tehat barmi, amit irni is akarok ) nem szabad semmit sem forditasi idoben eloallt abszolut cimen elerni, hanem mindent a valtozo terulet blokk elejehez kepesti relativ cimmel kell elerni az IY regiszter felhasznalasaval,
masreszt valahogy az assembler forditoban kepezni kell tudnom a valtozoim ( valtozoterulet elejehez kepesti ) offsetjet ugy, hogy maguk a valtozok ne keruljenek bele az object kodba, hisz azok majd vagy itt lesznek, vagy ott lesznek, attol fuggoen, hogy rom vagy ram verzio fut, es mondjuk rom eseteben minek legyen a valtozoterulet a bovito kodjaban, ha ugyis kulon allokaljuk le, tehat ehhez a tenyleges kodba fordulas nelkuli valtozo offset kepzeshez kene valami assembler ficsor, amit en valszeg nem ismerhetek, mert ugye egy db, vagy dw ugyan noveli a cimszamlalot, de a targykodot is noveli, belefordul, nekem meg az kene hogy a cimkek ertekei ugyen kepzodjenek, de a targykodba ne forduljon bele a valtozom. Es jo lenne ha az offseteket nem kene nekem ilyen EQU- kkal kepeznem, mondjuk oly modon hogy szep sorban adogatom a valtozok meretet egymas utan EQU- kkal ossze.
A masik hogy egy rendszerbovito ahhoz hogy az IY erteket felulbiralja akciokod erkezesekor ( leven ha nem rom a rendszerbovito akkor IY erteke undefined ) meg kene tudnom, hogy en most rom rendszerbovito vagyok vagy ram. Ha mondjuk nem rom eseten IY- ban mondjuk specialis ertek lenne vagy ilyesmi akkor nem lenne gaz, de mivel undefined, ezert valahonnan mashonnan kell kitalalni.
Lehetne hogy ketszeri memoria irassal/olvasassal eldontom hogy ram vagy rom vagyok- e, vagy ha csak abszolut rendszerbovitok kozott kell donteni, akkor EXOS_ROM feliratbol lehetne talan donteni ( mert ha jol emlexem ram bovitonel az EXOS_ROM felirat helye fixen ki van nullazva exos altal ), de egyiket sem erzem igazan elegans modszernek, raadasul meg mindig nem tudom hogy ha ramban vagyok, akkor most abszolut vagy relativ vagyok- e ( nezegessem a PC tartalmat, es ha c00ah akkor abszolut, egyebkent meg relativ ? ), marpedig IY feltoltese fugg attol hogy abszolut vagy relativ rendzserbovito vagyok- e, meg akkor is, ha mar legalabb azt tudom, hogy nem rom.