Beiträge anzeigen

Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.


Themen - zacK

Seiten: [1] 2
1
Lowlevel-Coding / FAT16
« am: 01. December 2005, 15:24 »
hallo zusammen.
hat jemand von euch informationen zum fat16 dateisystem?
hat das auch ein root verzeichniss?
k.P.

Danke.
2
Lowlevel-Coding / VESA
« am: 17. November 2005, 16:39 »
hallo zusammen

hat jemand von euch vesa im vmware zum laufen gebracht?
mein vesa code hat bis jetzt auf allen pc functioniert auf bochs, qemu auch nur auf dem vmware geht das nicht. was macht vmware anders?
wer hat erfahrungen?

danke & gruss
zack
3
Lowlevel-Coding / PAGING - Code
« am: 20. October 2005, 13:32 »
Na hallo wieder einmal ;)

ich habe immer noch probleme mit meinem paging code...
mein pc / emulator startet immer wieder neu. hat jemand eine ahnung? nach der letzten zeile in SetupPaging() startet er neu...
/*
;
;---------------------------------------------------------------+
;       .__               __                           ¦
;______ |__|___________ _/  |_            ____  ______ ¦
;\____ \|  \_  __ \__  \\   __\  ______  /  _ \/  ___/ ¦
;|  |_> >  ||  | \// __ \|  |   /_____/ (  <_> )___ \ ¦
;|   __/|__||__|  (____  /__|            \____/____  > ¦
;|__|                  \/                          \/ ¦
;---------------------------------------------------------------+
;
;[1] Informations
;
; Last Modified: 21. Oktober 2004
; Begin: 15. Juni 2004
; Version: 0.000
; Coder: z4ck
;
;
;[2] Tasks
;
; Task Done Coder
;----------------------------------------------------------------
; -                   [  0%] z4ck
;----------------------------------------------------------------
; TOTAL [  0%] z4ck
;================================================================
*/

#include <memory.h>
#include <io.h>

/***************************************/
//Global Variables
PageDir *PageDirectory;
PageTbl *PageTable;

void SetupPaging()
{
PageDirectory = (PageDir *) 0x100000;
PageTable = (PageTbl *) 0x101000;

unsigned long i = 0;

for (; i < 1024; i++)
{
PageDirectory[i].PageTable = (PageTbl *)((unsigned long)&PageTable[i] | PAGE_RW | PAGE_PRE);
}

MapMemory ( 0, 0, 1024 * 4, PAGE_RW | PAGE_PRE);
WriteCr( (int)PageDirectory, 3);
WriteCr( (ReadCr(0) | 0x80000000) , 0);
};

int SetPage ( unsigned long _phyAdress, unsigned long _vAdress, unsigned long _opt)
{


unsigned long table = _vAdress >> 22;
unsigned long entry   = ( (_vAdress & 0xFFFFF000) << 10) >> 22;

if (table < 1024 && entry < 1024)
{
PageDirectory[table].PageTable->PageFrame[entry] = _phyAdress | _opt;
return 1;
}
return 0;
};

int MapMemory ( unsigned long _phyAdress, unsigned long _vAdress, unsigned long _lenght, unsigned long _opt)
{
while (_lenght > 0)
{
SetPage (_phyAdress, _vAdress, _opt);
_vAdress += 4096;
_phyAdress += 4096;
_lenght--;
}
return 0;
};

void *malloc(unsigned long _size)
{

return (void *) 0;
};

void free()
{

};

void memcpy(unsigned *_dest, unsigned *_src, unsigned long _lenght)
{
unsigned long i = 0;
for (; i < _lenght; i++)
_dest[i] = _src[i];
};
4
Offtopic / Fentilator
« am: 09. May 2005, 16:59 »
Moinz
Ich habe mir einen externen Fentilator gekauft.
Den kann ich in ein USB-Slot einstecken und dann um das Notebook herum biegen damit er mir schön ans gesicht windet.

Das dumme ist, wenn ich ihn eingesteckt habe läuft er einfach. Ich kann in nur anhalten wenn ich ihn ausziehe.

Nun meine frage:
Kan ich die USB-Stromzufuhr auf irgend eine Weise unterbrechen?
Möglicherweise selbst ein Programm schreiben.


mfg Zack
5
OS-Design / Paging
« am: 02. May 2005, 10:27 »
Juden dasch! (sprich: Guten Tag -> nix mit juden... ;)

ehm, ich wollte eigendlich mal paging coden damit ich ein anständiges gui machen kann (wegen malloc und free...etc) aber irgendwie blicke ich da nicht so ganz durch...

wenn ich nun platz für eine structur brauche -> myObj = malloc(...)... Das objekt/structur ist aber nur einige bytes gross. muss ich da ne ganze page freigeben?

oder wie oder was?

und wie mappe ich einen bereich linear?
und von wo bis wo mappt ihr...? gewisse speicherbereiche sind ja besetzt im ram.. oder?

thx4help
6
Lowlevel-Coding / A20-Gate
« am: 21. April 2005, 17:27 »
Huhu

ich habe schon ein paar mal in threads gefragt was mit meinem a20-gate code ist, leider aber keine antworten bekommen. desshalb versuche ich es nun wieder.

da mein code mir auf dem bildschirm angibt das a20 aktiviert ist dem aber nicht so ist, scheint mein a20-prüfcode nicht richtig zu funktionieren...

könnte jemand von euch mir sagen ob dieser code funktioniert?

der code sollte in ax 1 ausgeben wenn a20 aktiviert ist. sonst 0!
;===============================================================
;|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
;|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
;|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
;-----------Test if a20 is set----------------------------------
TestA20:
.0:
push bx
push cx
push es

.1:
mov bx, 0xFFFF
mov es, bx
push bx
mov ax, [es:0x100]
not ax
xor bx, bx
mov es, bx
mov [es:0x100], ax
pop bx
mov es, bx
cmp ax, [es:0x100]
je .2

mov ax, 1
jmp .3

.2:
mov ax, 0

.3:
pop es
pop cx
pop bx
ret


thx
7
Offtopic / FUN: Etwas zur allgemeinen aufheiterung
« am: 07. April 2005, 15:48 »
huhu..
ich dachte man könnte mal einen thread aufmachen mit fun-links..

hier mal mein favourit:
http://www.beast.mos-worlds.de/modules/news/article.php?storyid=184

ausser dem hier ne seite die so sachen zusammenfasst:
http://www.unf-unf.de
http://www.deine-ip.de

have fun ^^
8
Offtopic / Zeilen zählen
« am: 07. April 2005, 10:08 »
Ich möchte gerne mal wissen wie viele Zeilen Code ich schon habe. Und zwar ohne kommentare. Mein OS ist in ASM und C geschrieben was das zählen erschwärt. Wenn es nur in asm wäre wäre es ja nicht so die sache...

Hat das schon jemand probiert?

thx
9
Lowlevel-Coding / Keyboard
« am: 06. April 2005, 09:06 »
HUHU

ich bin gerade meinem vesa treiber am aktualisieren. ich möchte das ich mit verschiedenen tast die auflösung wählen kann.

doch ich habe gemerkt das wenn ich den pc boote, das da schon was im keyboard buffer steht...

damit hole ich ne taste
getkey:
xor ax,ax
int 0x16
ret


nun muss ich immer die getkey 2 mal aufrufen weil sie beim ersten mal überspringt wird da im buffer die 2 steht... hat jemand ne ahnung wie ich diesen buffer lehren kann?

thx
10
Offtopic / Handy: Java-Program
« am: 28. March 2005, 19:42 »
Moinz...


ich bin auf der suche nach einem programm mit dem ich zum beispiel meinen tv steuern kann. ich hatte da mal eines für meinen palm. mit dem programm konnte ich alle geräte bedienen die sich mit infrarot steuern lassen. nun suche ich ein ähnliches programm als jar-file für mein natel (sony-ericson t630)..

hat jemand ein solches oder kennt jemand eins (namen?)??

vielen dank!
11
Lowlevel-Coding / A20
« am: 22. March 2005, 09:27 »
Huhu!

Ich habe gerade bei mit jemandem gemailt der mir mitgeteilt hat das ich mein a20 gate aufgrund fehlerhaften dokumentationen falsch setzte... diese methode funktioniere anscheinend nur auf alten geräten. wo durch ich auch auf den neuen probleme mit meinem video treiber habe... (komisch in bochs funktioniert es, und beim real-pc sehe ich auch zeichen auf dem bildschirm obwohl das weit oben der 1mb grenze ist..)

hat da jemand schon erfahrungen oder so?

hier wäre nun dieses anscheinend fehlerhafte code von mir:
EnableA20Gate:

.0:
push eax
.1:

in al, 0x64
test al, 00000010b
jnz .1

.2:
mov al, 0xD0
out 0x64, al

.3:
in al, 0x64
test al, 00000001b
jnz .3

.4:
in al, 0x60
or al, 00000010b
push eax

.5:
in al, 0x64
test al, 00000010b
jnz .5

.6:
mov al, 0xD1
out 0x64, al

.7:
in al, 0x64
test al, 00000010b
jnz .7

.8:
pop eax
out 0x60, al

.9:
pop eax
ret



thx 4 help

ps: das hat er mir geschrieben
Zitat
Lieber zack!
Einen Fehler fand ich sofort. Er kommt von falscher Dokumentation, die an
jeder Ecke ohne Prüfung abgeschrieben und weiter verbreitet wird. Mich hat
das eine  Woche meines Lebens gekostet...
Das Einschalten der A20-Leitung geht nicht mit der Oderierung, die bei Dir
unter label "4:" steht! Am besten kopierst Du einfach, was in meiner Quelle
steht (in FDOS1, ab Zeile 643). Ich hab's aus linuxquellen extrahiert. Es
läuft problemlos auf 4 Maschinen von 1980-2004.
Was Du geschrieben hast, läuft nur auf meiner ältesten Maschine.
12
Lowlevel-Coding / Zahl in String umwandeln
« am: 17. March 2005, 16:48 »
moinz all!

Um Zahlen auf den Bildschirm auszugeben muss man die zahl ja in ein string umwandeln. Nun wie wird das realisiert... hat das schon jemand gemacht?

da habe ich null ahnung... :(

thx for help
13
Offtopic / T630
« am: 10. March 2005, 15:58 »
moinz,
da ich da das thema über ipods gesehen habe, frage ich mich ob es auch möglich ist  mein natel quasi zu flashen... denn ich habe auf meinem t630 einen schwulen vodafon knopf... ausserdem sind überall buttons versteckt wo man direkt ins internet geht. zudem kommen bilder/töne die ich nicht löschen kann. das stört mich grausam. ich dachte villeicht könnte ich das os von sony/ericson ohne branding neu draufflashen oder so...

hat da jemand schon erfahrungen oder schon was gelesen?
14
Lowlevel-Coding / Globale ASM Variablen in C gebrauchen
« am: 04. March 2005, 14:38 »
Huhu

Ich würde gerne eine Asm-Variable

DummyVariable db 0

in c auslesen können.

wie kann ich das realisieren?

irgendwie mit
global DummyVariable db 0 ??

und wie muss ich sie im c dann einbinden?
15
Lowlevel-Coding / Compilieren / Linken
« am: 17. January 2005, 15:23 »
Hallo Leute,

ich habe das gefühl, dass mein Link / Compile - Script irgendwie nicht stimmt / fehler hat....

könnte das jemand kurz für mich überprüfen?

mein kernel besteh wie bei tj aus drei teilen:
kernel16.asm
kernel32.asm
kernel.c

der kernel lade ich ins ram an die adresse: 0x1000:0

nun meine batchs/scripts zum linken und compilieren:

compile.bat

@ echo off
nasm -f bin -o kernel16.bin kernel16.asm
nasm -f aout -o kernel32.o kernel32.asm
nasm -f aout -o isr.o isr.asm
make all
..\tools\mergekernel kernel.sys kernel16.bin kernelc.bin
del *.o
del *.bin
pause
exit


Makefile

SRC     =       kernel.c video.c pic.c io.c pit.c idt.c system.c fdc.c kbc.c mouse.c

OBJ     =       kernel32.o kernel.o video.o pic.o io.o pit.o idt.o isr.o system.o fdc.o kbc.o mouse.o

LD_OPTIONS=-T linkfile.ld -o kernelc.bin



all: asm c link
asm:

c:
gcc -ffreestanding -fno-builtin -nostdinc -c $(SRC) -I include

link:
ld $(LD_OPTIONS) $(OBJ)



linkfile.ld

OUTPUT_FORMAT("binary")
ENTRY(start)
SECTIONS
{
  .text 0x10200 : {
    *(.text)
  }
  .data : {
    *(.data)
  }
  .bss :  {
    *(.bss)
  }
}



vielen dank! grunz
16
Lowlevel-Coding / Wieder mal ein paar Fragen (PMode, IDT)
« am: 02. December 2004, 14:09 »
Hiho zusammen...

Irgendwie bin ich da wieder mal am anschlag... Sobald ich ein Interrupt aufruffe im PMode kommt ein Fehler von Bochs: prefetch: running in bogus memory...

ich habe mir da gedacht das das am wahrscheindlichsten an gdt oder am linkerscript liegt...


gdt_START:

gdt_NULL:
dd 0
dd 0

gdt_CODE:
dw 0xFFFF ; Segmentgrösse
dw 0x0 ; Segmentbasisadresse
db 0x1 ; Segmentbasisadresse
db 10011010b ; [1]=present,[00]=Level0,[1]=segment,[101]=type,[0]=busy flag
db 11001111b ; Zusatz
db 0x0 ; Segmentbasisadresse

gdt_DATA:
dw 0xFFFF
dw 0x0
db 0x0
db 10010010b ; [1]=present,[00]=level0,[1]=segment,[001]=type,[0]=busy flag
db 11001111b
db 0x0

gdt_END:

gdt_DESC:
limit dw gdt_END - gdt_START - 1
base dd gdt_START + 0x10000


da wundere ich mich warum beim cs ein 0x01 beim segmentbasisadresse ist aber beim ds selektor 0x00.. ändere ich es, dann funtzt es net mer..

und hier das linkerscript:

OUTPUT_FORMAT("binary")
ENTRY(start)
SECTIONS
{
  .text 0x10200 : {
    *(.text)
  }
  .data : {
    *(.data)
  }
  .bss :  {
    *(.bss)
  }
}


der c-kernel liegt an position 0x10200 und der asm teil mit gdt an pos 0x10000

kann ich irgendwie testen ob der idt korrekt geladen wurde? bzw. ob dort die richtige adresse vermerkt ist?

brauche dringend hilfe

thx4help
17
Lowlevel-Coding / wieder mal ein paar fragen
« am: 11. October 2004, 16:39 »
hiho... ;)

1. bis wo geht die lineare adresse im rm ?

2. wenn ich etwas an die stelle 0x10000 laden will, muss ich doch das segment auf 0x1000 und das offset auf 0 stellen?

3. wenn ich nun im kernel anfangen zu coden will. muss ich zuerst alle segmente updaten (es, ds, fs, gs,...) oder reicht es wenn ich nur [org 0x....] schreibe?

lauter anfänger fragen aber es wäre mir sehr nützlich wenn diese jemand kurz beantworten würde ...

meine vermutungen:
1. Bis 0x100000
2. ja
3. beides
....


pls help
18
Offtopic / Hilfe Diese Begriffe kenne ich nicht
« am: 01. October 2004, 15:06 »
Ich dachte man könnte mal ein Topic aufmachen mit begriffen die man nicht kenn:

Was mich persönlich wunder nimmt, was ist der Unterschied zwischen:

- Multitasking
- Multithreading
- Multiprozessing
-..

k.a.

mfg
19
Lowlevel-Coding / Kernel
« am: 27. September 2004, 15:27 »
hm

ich lade mit meinem bootloader den kernel an die stelle 0x8E00.

was muss ich nun alles machen damit ich weitercoden kann.

muss ich mit:
org 0x8E00

oder muss ich:
mov      ax, 0x8E00
mov      ds, ax
mov      cs, ax
.......

und was mit dem stack? Ich würde gerne den alten überschreiben da ich den nicht mehr brauche.


thx 4 helping
20
OS-Design / Eigenes FS
« am: 27. September 2004, 10:36 »
hi,

mich nimmt mal wunder ob sich jemand schon mal gedanken über ein eigenes fs gemacht hat, und was man sich dabei überlegen sollte. (evt. ein bestehendes veränder/verbessern?)

mfg
Seiten: [1] 2

Einloggen