Hi inet,"HIX CODER" >!
no itt megy a binaris baszas forrasa...
> -----------------------------------------------------------------------------
firstbyte:
call j1 ;push ip...;))))
j1:
pop si ;no nezzuk csak aszt az ip-t...;)))
sub si,3 ;minusz a call hossza....;)))
cli ;koszi, de no ints....;)))
cld ;a normal irany...;))))
push word 50h ;ide fogunk menni...
pop es ;ez lesz a cel szegmens...
push es ;es a ds-t is felsetupojjuk...;)))
pop ds
push word offset firstbyte ;ez meg lesz a cel offset...
pop di ;0h:600h=50h:100h... dos coms rulez...;)))
mov cx,100h ;256 wordot fogunk masolni...
rep ;na izibe masojjunk 1et...
movsw cs
push es ;ez lesz a far ret hez a szegmens...
push word offset j2 ;ez meg lesz hozza az offset...
retf ;es indiccsuk is el a kodot...
j2:
mov cx,4 ;hanyszor is kell vegignyalni az egeszet?!?!
mov si,2beh ;no itt lesz valahol a parti data...
j3:
lodsb ;toocsuk csak be aszt a nyamvatt adatot...
and al,80h ;vajon ez itt bootol6o particijo?!?!?
jnz byte megvan ;igennnnn!!! megtalaltam...;)))))))))))
add si,0fh ;a kovetkezo bejegyzesre mutat...
loop j3 ;nezzuk csak at az osszeset...
mov si,offset txt01 ;no es a szoveg...
bugvolt: ;bugreport, ds:si-be megy az asciiz...
call write ;no rizsajjunk 1et...;)))
bugvolt_j1:
cli ;senki sem allithat meg...
jmp byte bugvolt_j1 ;...kiveve a power kapcsolot...;))))))
megvan:
push si ;mencsuk a kello regeket.. sose lehet tudni;)
mov bx,55aah ;egy kis id senkinek se art....;))))
mov ah,41h ;extended int13h check...
mov dl,80h ;biza az elso vincsirol...
int 13h ;na nezzuk a medvet...
pop si ;ne haggyunk szemetet a stacken....;)))
jc byte chsmode ;carry-->hiba-->chs mode....;(((
cmp bx,0aa55h ;vajon az viaszajovo id is jo?!?!
jne byte chsmode ;nem-->chs mode...;((((
mov eax,def:[si+7] ;vajon hol is van a parti kezdete...
mov def:[DataBuf_pos],eax ;nem tul elegancsos dworddel, de6 istenem;))
mov si,offset DataBuf_id1 ;a buffer kezdete...
mov ah,42h ;extended int13h read...
mov dl,80h ;biza az elso vincsirol...
int 13h ;na nezzuk a medvet...
jmp byte startit ;es mar nincs mas 6ra, mint elore...;))
chsmode:
mov cx,def:[si+1] ;ez lesz a packet cyl+sec...;)
mov dh,def:[si] ;ez pedig a (skin)hed lesz...;))))))
les bx,def:[DataBuf_ptr] ;es ide yo7 a sok szemet....;)))))
mov ax,0201h ;olvasni akarok 1 szektort...
mov dl,80h ;biza az elso vincsirol...
int 13h ;na nezzuk a medvet...
startit:
mov si,offset txt02 ;no es a szoveg...
jc byte bugvolt ;carry-->hiba...;))))
lss sp,def:[DataBuf_ptr] ;no alliccsuk csak be a stacket...
sub ax,ax ;regek torlese...
sub cx,cx
sub dx,dx
sub bx,bx
sub si,si
sub di,di
sub bp,bp
push ax ;es beallitasa...
pop es
push ax ;ds beallitasa...
pop ds
jmp dword cs:[DataBuf_ptr] ;es vegul indiccsuk el a balhet...;)
DataBuf_id1 db 10h ;packet merete...
DataBuf_id2 db 0 ;reserved, 0...;)
DataBuf_num dw 1 ;sectorok szama...
DataBuf_ptr dw 7c00h,0h ;buffer cime...
DataBuf_pos dd 0,0 ;starting sector...
txt01 db 'no bootable partition found!',0
txt02 db 'error reading operating system!',0
write: ;kiiras, ds:si-be megy az asciiz...
lodsb ;1 karakter betoltese...
or al,al ;nezzuk csak, 0-e...
jz byte write_j1 ;igen-->'vege, vege, vege mindennek'...;))
mov ah,0eh ;kiiras...
int 10h ;na lassuk...
jmp byte write ;es a kovetkezo bytevel mi lesz?!?! ;)
write_j1:
ret ;vissza ahonnan jottunk...;)
> -----------------------------------------------------------------------------
csao, es jok legyetek nekem....;))))
Mc
|
Hi inet,"HIX CODER" >!
iC> Cim Hossz Leiras
iC> 0 1 byte Bootolhato-e
iC> 1 3 byte start address (CHS)
iC> 4 3 byte end address (CHS)
iC> 7 4 byte relative sectors <----
iC> 10 4 byte sectors <----
na igen.... han van extInt13, akkor az osszes particijonal csak erre a 2
ertekre koncertralsz... az Lso megmonnya, hogy mit kell beadni abba a 64
bites valtozoba az extInt13h hivashoz, a masik pedig a parti meretet mondja
meg... ha nincs extint13h, akkor a chs moccerrel kell jaccadoznod, es akkor
akarmit is teszel, uccse lesz a gebben nagyobb vincsi, vagy ha igen, akkor
meg tok foloslegesen ugralsz, mert akkor az os vagy volt oyan ertelmes, hogy
valami valos adatot irt be, vagy nem, de akkor az eredeti parti tabla kod se
lenne kepes betolteni... szoval faszom, osszefoglalva a dolgokat sokaccor de
_utojjara_ /reszemrol/
- van ExtInt13: akkor a dwordoket hasznalod, es nincs mese
- nincs eksztinttizenharom: akkor a chs-t hasznalod, es nincs mese...
remelem most mar igy vilagosabb volt... de ha most ujra leirod ugyanaszt a
feladatot, amit mar 3x csak 1re hosszabban es szajbaragosabban, akkor tutira
felfallak vacsira....;))))) ja, es itt megy egy parti betolto kodocska...
keres, talal, betolt, stb sza'l szerintem fasza...
ja, feltettem ide 1 masik cimrol 1 masik levlben /99 sor suxx!/ 1 kisebb asm
kodot, szerintem semmi mast nem irtam a levelben, annak itt megy a bin
valtozata:
> -----------------------------------------------------------------------------
db 0E8h,000h,000h,05Eh,081h,0EEh,003h,000h,0FAh,0FCh,068h,050h,000h,007h,006h
db 01Fh,068h,000h,001h,05Fh,0B9h,000h,001h,0F3h,02Eh,0A5h,006h,068h,01Fh,001h
db 0CBh,0B9h,004h,000h,0BEh,0BEh,002h,0ACh,080h,0E0h,080h,075h,00Fh,081h,0C6h
db 00Fh,000h,0E2h,0F4h,0BEh,0A2h,001h,0E8h,0A8h,000h,0FAh,0EBh,0FDh,056h,0BBh
db 0AAh,055h,0B4h,041h,0B2h,080h,0CDh,013h,05Eh,072h,01Ah,081h,0FBh,055h,0AAh
db 075h,014h,066h,08Bh,044h,007h,066h,089h,006h,09Ah,001h,0BEh,092h,001h,0B4h
db 042h,0B2h,080h,0CDh,013h,0EBh,010h,08Bh,04Ch,001h,08Ah,034h,0C4h,01Eh,096h
db 001h,0B8h,001h,002h,0B2h,080h,0CDh,013h,0BEh,0BFh,001h,072h,0BEh,00Fh,0B2h
db 026h,096h,001h,02Bh,0C0h,02Bh,0C9h,02Bh,0D2h,02Bh,0DBh,02Bh,0F6h,02Bh,0FFh
db 02Bh,0EDh,050h,007h,050h,01Fh,02Eh,0FFh,02Eh,096h,001h,010h,000h,001h,000h
db 000h,07Ch,000h,000h,000h,000h,000h,000h,000h,000h,000h,000h,06Eh,06Fh,020h
db 062h,06Fh,06Fh,074h,061h,062h,06Ch,065h,020h,070h,061h,072h,074h,069h,074h
db 069h,06Fh,06Eh,020h,066h,06Fh,075h,06Eh,064h,021h,000h,065h,072h,072h,06Fh
db 072h,020h,072h,065h,061h,064h,069h,06Eh,067h,020h,06Fh,070h,065h,072h,061h
db 074h,069h,06Eh,067h,020h,073h,079h,073h,074h,065h,06Dh,021h,000h,0ACh,00Ah
db 0C0h,074h,006h,0B4h,00Eh,0CDh,010h,0EBh,0F5h,0C3h
> -----------------------------------------------------------------------------
ez a kis kodocska ha lefordul, es bekerul a 0,0,1 sectorba /parti tabla/
az eredti kod hejere, akkor csodat tesz; betolti az elso kijelot ost...
ha nem talal kijelolt os-t, akkor kiirja... ha talal, de valami mijatt
az int13 errort reportal, akkor is szol.. szoval nagyon majer...;)))))
ui; ha a kod es a forras es a szamtalan Mber magyarazata utan sem
vilagos, hogy mit kell tegyel, hogy irjal egy rendesen muxxo betoltot,
akkor viszont rohattul nemtom, hogy ennel jobban hogy tudnank elmagyarazni
neked a dolgokat.... no csao es jo kodolast...
Mc
|