Anonymní profil Matěj Andrle – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Matěj Andrle – Programujte.comAnonymní profil Matěj Andrle – Programujte.com

 

Příspěvky odeslané z IP adresy 78.136.153.–

Matěj Andrle
Assembler › Souborové systémy
27. 4. 2013   #175491
Matěj Andrle
Assembler › Souborové systémy
26. 4. 2013   #175468

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...)

Matěj Andrle
Assembler › Souborové systémy
26. 4. 2013   #175458

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.

Matěj Andrle
Assembler › Teletext do boxu
23. 4. 2013   #175388

Neee - tak to je fatk moc... :) Nemohu deklarovat proměnnou v lokální adrese - stačilo jí dát pod tento zázrak... (deklaraci)

Matěj Andrle
Assembler › Teletext do boxu
22. 4. 2013   #175381

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
Matěj Andrle
Assembler › Teletext do boxu
22. 4. 2013   #175378

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.

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý