2,376

(49 odpowiedzi, napisanych Software, Gry - 8bit)

no to juz wiem co mam dodac do asemblera, DATA, TEXT, BSS :) i pewnie REL aby zasygnalizowac ze piszemy relokowalny

Nowy format pliku binarnego ?  Jak dotad jedynie Sparta udostepnia inny format plikow binarnych i potrafi go odczytac. Powstaje pytanie co bylo pierwsze kura czy jajko ? Najpierw powstaje format pliku binarnego a potem DOS, OS, czy może to niezbyt własciwa kolejnosc ?

Przyklad Lizarda:

    .text 
    lda vfname 
    ldx vfname+1 
    jsr fopen 

    .data 
vfname .rw fname         ; relocatable word ;) 
fname  .by "D:nazwa.ext" 

    .text 
fopen sta $0314 
    stx $0315  

Jesli blok TEXT (jeden za drugim) zostanie umieszczony pod $2000, a blok DATA pod $9000, dodatkowo 'vfname' zostanie zmodyfikowane bo jest typu .rw  to czy rozkazy w bloku TEXT odwolujace sie do 'vfname' tez zostana zmodyfikowane, powinny byc bo inaczej ten przyklad nie zadziala.

A czy nie prosciej byloby zalozyc, ze relokowalne sa wszystkie odwolania w obszarze bloku. Zakladamy ze program relokowalny miesci sie poza obszarem strony zerowej i w pewnych granicach pamieci, np. $0400-$BFFF
Jesli adresujemy w obrebie programu to te rozkazy beda poddane relokacji, poza w/w zdefiniowanym obszarem nie beda poddawane relokacji (w koncu nie mozemy dopuscic aby program ladowal sie np. na caly stos czy w inne obszary ktore potrzebuje OS do dzialania)

    rel    ; informacja dla asemblera, ze teraz leci relokowalny kod i zeby zaczal go kontrolowac

    lda vfname      ; relokowac bo adresowanie w obrebie programu
    ldx vfname+1  ; relokowac bo adresowanie w obrebie programu
    jsr fopen         ; relokowac bo adresowanie w obrebie programu

vfname adr(fname)   ; relokowac, bo to adres adr() czy tez .rw

fname  .by "D:nazwa.ext"   ; nie relokowac, bo zaden rozkaz
              ; nie odwoluje sie do 'fname', rozkazy typu adr i .rw nie sa brane pod uwage

fopen sta $0314                  ; nie relokowac bo adresowanie poza programem
    stx $0315                   ; nie relokowac bo adresowanie poza programem

Asembler domyslnie zasembluje od najmniejszego dozwolonego obszaru ($400), koniec sam okresli po asemblacji, jesli jakis tryb adresowania odwola sie ponizej $400 i powyzej dlugosci programu nie bedzie relokowalny, pojawi sie ostrzezenie. Ofsety do bajtow ktore maja zostac poddane relokacji zostana umieszczone w tablicy na koncu wczytywanego bloku razem z informacja czy modyfikowane jest 16bit czy 24bit.

OS zacznie czytac taki plik, odczyta naglowek, w ktorym bedzie informacja o dlugosci bloku i jego rodzaju w tym przypadku blok relokowalny. Na podstawie dlugosci bloku zarezerwuje obszar pamieci zaczynajacy sie od MEMLO, wczyta tam blok. OS zacznie czytac nastepny blok ktory jest tablica ofsetow. Procedury OS zaczna modyfikowac wczytany blok na podstawie tablicy ofsetow. W tablicy ofsetow powinna znalezc sie informacja czy ofset wskazuje na wartosc typu 16bit czy 24bit.

2,377

(34 odpowiedzi, napisanych Zloty)

MY DOROŚLI ZACHOWUJEMY SIĘ INACZEJ  8)

chodzi Ci o tego buga dzieki ktoremu mozliwy jest HIP ? :)

2,379

(3 odpowiedzi, napisanych Software, Gry - 8bit)

super, hiper, scisle tajny rejestr odpowiedzialny za punkt G u Twojej dziewczyny :D

2,380

(20 odpowiedzi, napisanych Sprzęt - 8bit)

Wg mnie nalezaloby zlozyc 2-3 gotowe (dzialajace!) karty i wyslac po sztuce epiemu (neotracker, neoplayer) oraz Jaskierowi (theta).

Sluszna idea :)

Bo jak powiadaja, komputer bez oprogramowania to złom.

A gdzie znalezc Apple, mysle ze w Indiach :) W tamte rejony wysylaja kupe zlomy, a tubylcy odzyskuja metale szlachetne.