• De afgelopen dagen zijn er meerdere fora waarop bestaande accounts worden overgenomen door spammers. De gebruikersnamen en wachtwoorden zijn via een hack of een lek via andere sites buitgemaakt. Via have i been pwned? kan je controleren of jouw gegeven ook zijn buitgemaakt. Wijzig bij twijfel jouw wachtwoord of schakel de twee-staps-verificatie in.

print string OS development

  • Onderwerp starter Verwijderd lid 166773
  • Startdatum
Status
Niet open voor verdere reacties.
V

Verwijderd lid 166773

Gast
Nog een vraag van me! Jullie worden vast gek van me... :D
Dit keer een probleem waarvan ik vind dat het vaag is. Dus hier gaan we:

Code:
//(zie beneden in deze post de video memory map)

uint8 strlngth(string str);  //maakt niet uit of dit uint8 of uint16 het geeft hetzelfde aan

void print(const char* str){		//deze void print de tekst op het scherm (in text mode)
	
	uint16 i = 0;
	uint8 length = strlngth(str);  //de lengte van de string
	
	for(i; i < length; i++){       //zolang i niet de lengte van de string is gaat dit door
		printch(str[i]);           //gooi de letter/het leesteken op het scherm
	}
}

//Deze functie hoort niet bij het probleem maar wel bij 'void print()'

void printch(char c){
	
	string vidmem = (string) 0xb8000;  //locatie van de video memory in een VGA omgeving
	switch(c){
		
		
		case('\n'):                    //als er \n in staat:
				cursorX = 0; //zet de X positie van de cursor op 0
				cursorY++;   //en de Y cursor positie op CursorY + 1
				break;
		default:
                vidmem [((cursorY * width + cursorX))*depth] = c;  //Video memory = character c (zie beneden in deze post de video memory map)
                vidmem [((cursorY * width + cursorX))*depth+1] = color; //video memory = color (zie beneden in deze post de video memory map)
                cursorX++; //cursor
                break;
	}
	
	updCurs();  //update de Cursor (zit hier niet bij, is ook niet nodig)
}

Cygwin is het daar niet mee eens en zegt dit:
Code:
$ make obj/screen.o
i586-elf-gcc.exe -m32  -o obj/screen.o -c include/screen.c
include/screen.c: In function 'print':
include/screen.c:39: warning: passing argument 1 of 'strlngth' discards qualifiers from pointer target type

Alhoewel dit slechts een waarschuwing is wil ik dit wel even fixen. Dus ik vraag me af wat dit moet betekenen.... Iemand een idee?

De video memory map:
------------------------------------------
[Char | color] [Char | color] [Char | color]
------------------------------------------

legenda:

[] = 2 bytes
char = de high byte met het karakter
color = de low byte met de kleur in hex, BIOS default: 0x07 (licht grijs op zwart)

Belangrijk: dit is niet letterlijk een memory map maar meer een schema van hoe video memory eruit ziet.

Wie kan me hierbi helpen?

Dank je!
Maarten
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan