Tak jsem zatím alespoň přešel na FAT32... :)
Příspěvky odeslané z IP adresy 78.136.153.–
Takovouto obecnou definici znám... Potřebuji znát přesné hodnoty tak, abych mohl pomocí JSA pracovat s tímto FS... (Navíc bych co se týče EXT ocenil více EXT4...) Takže například jak najít hlavní adresář, jak v něm vyhledat kernel podle názvu, jak tento kernel načíst do SI (source index register) a následně tak spustit... Aktuálně pracuji s Clustery atd:
http://en.wikipedia.org/…cation_Table
Přesně toto mám na mysli... (Ze začátku mám přístup jen k přerušení do BIOSu - takže potřebuji přesně takovou to tabulku...)
Dobrý den,
článků o zpracování jiných, než FAT systémů moc není. Mě se podařilo dát dokupy VFAT. Ovšem nyní bych už chtěl přejít do vyššího levelu. Vůbec první věc je zpracování FS při bootování - totiž spuštění kernelu. Druhá - následné čtení a zapisování... Mám vizi vlastního FS, ale než jej rozchodím - nebyl by někde odrobný popis EXT? (Tak abych mohl provést výše uvedené úkony v Assembly.)
Děkuji.
Neee - tak to je fatk moc... :) Nemohu deklarovat proměnnou v lokální adrese - stačilo jí dát pod tento zázrak... (deklaraci)
Oprava - nepopoval jsem si ve vynuceném řádku - problém to však nemohlo ovlivnit - v testovaném textu vynucení nemám...
OsPrintString:
line db 0
pusha
mov ah, 0Eh ; int 10h teletype function
.loadWord:
push si
jmp .chaining
.summary:
pop si
cmp [line], cl
jg .newLine
jmp .writeWord
.chaining:
lodsb
cmp al, 0
je .summary
cmp al, 92
je .chanTestEsc
cmp al, 32
je .summary
inc byte [line]
jmp .chaining
.chanTestEsc:
lodsb
cmp al, 36
je .pop
inc byte [line]
cmp al, 92
je .chanTestEsc
inc byte [line]
jmp .chaining
.writeWord:
lodsb ; Get char from string
cmp al, 0
je .done ; If char is zero, end of string
cmp al, 92 ; Is escape letter?
je .testEsc
int 10h ; Otherwise, print it
cmp al, 32
je .loadWord
jmp .writeWord
.testEsc:
lodsb
cmp al, 36
je .loadWord
mov bl, al
mov al, 92
int 10h
mov al, bl
cmp al, 92
je .testEsc
int 10h
jmp .writeWord
.pop:
pop si
.newLine:
inc dh
mov byte [line], 0
call OsMoveCursor
jmp .writeWord
.done:
popa
ret
Dobrý den,
snažím se vypsat inteligentně text - tedy wrapovat v mezerách. Postupuji tak, že si vložím si do záslobníku, načítám byte per byte slovo dokud nenajdu mezeru, či vynucení nového řádku - pro což jsem si vyčlenil \$. Pokud najdu mezeru, podívám se, zda se toto slovo vejde do řádku - jehož velikost je uchována v cl (používám lodsb, který char ukládá do al). Pokud ne, či pokud došlo na vynucení řádku - \$, zavolá se .newLine - který jen posune kurzor o řádek dolů a anuluje počítanou velikost řádku. Nyní vypíše slovo do teletextu byte per byte, dokud nenajde mezeru, či vynucení - tentokrát se ale vrací na "zčeknutí" dalšího slova.
OsPrintString:
line db 0
pusha
mov ah, 0Eh ; int 10h teletype function
.loadWord:
push si
jmp .chaining
.summary:
pop si
cmp [line], cl
jg .newLine
jmp .writeWord
.chaining:
lodsb
cmp al, 0
je .summary
cmp al, 92
je .chanTestEsc
cmp al, 32
je .summary
inc byte [line]
jmp .chaining
.chanTestEsc:
lodsb
cmp al, 36
je .newLine
inc byte [line]
cmp al, 92
je .chanTestEsc
inc byte [line]
jmp .chaining
.writeWord:
lodsb ; Get char from string
cmp al, 0
je .done ; If char is zero, end of string
cmp al, 92 ; Is escape letter?
je .testEsc
int 10h ; Otherwise, print it
cmp al, 32
je .loadWord
jmp .writeWord
.testEsc:
lodsb
cmp al, 36
je .loadWord
mov bl, al
mov al, 92
int 10h
mov al, bl
cmp al, 92
je .testEsc
int 10h
jmp .writeWord
.newLine:
inc dh
mov byte [line], 0
call OsMoveCursor
jmp .writeWord
Něco je však na mé logice špatně... :) (Něco se přecijen vypíše - ale vidím jen horní konce delších písmen - těsně pod obrazovkou.)
Děkuji.