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 - clemensoft

Seiten: [1]
1
Offtopic / EXE-Datei in eine andere einbetten?
« am: 17. February 2006, 22:42 »
Servus!

Ich bin hier grad wie wild am proggen und zwar ein Setup-Programm.
Das soll eine einzelne EXE-Datei am Ende sein. wie kann ich eine vorhandene exe-datei in mein programm einbetten dass sei zum beispiel nach C:\eingebettetesproggi.exe geschreiben wird? benutze dev-c++ mit winapi

cl
2
Das Wiki / LowLevel.de.vu?
« am: 29. September 2005, 17:41 »
Hey LowLevel,

vielleicht solltet ihr mal bei denic.de.vu meckern!
http://www.lowlevel.de.vu
Das ist doch kein Zustand *mecker*

clemens
3
Lowlevel-Coding / VESA im PM
« am: 11. August 2005, 21:30 »
Hi!
Ich will den Grafikmodus auch im PM mal wechseln. Gibt es Beispielcode für das VESA Protected Mode Interface?

CL
4
Offtopic / USB-Linux
« am: 26. March 2005, 15:14 »
Kennt wer ein bootbares Stick-Linux für 256 MB oder 512 MB? Möglichst mit X-Server und den Sourcen für den Kernel, der verwendet wird? Muss nämlich meine Kernelmods noch reinbasteln.
5
Offtopic / Der tolle Microsoft Support :-(
« am: 25. March 2005, 20:35 »
Echt freundlich. Macht echt Spaß, sich mit einem Chatbot zu unterhalten. Immerhin kann man ihn anmachen, ohne dass er wütend wird ;-)
Hier mal die (auto-) Mail, die von Microsoft kam:

CASE_ID_NUM: SRZ050325002009
MESSAGE:
**********************************************************************

Dies ist eine Antwort von Microsoft betreffend Ihrer Supportanfrage.
Betreff: Server 2003 Problem; Domainbutton grau!
Bitte beachten Sie folgendes, wenn Sie auf diese Nachricht antworten:

  +  belassen Sie die Bearbeitungsnummer (SRxxxx) in der Betreffzeile.
  +  f?gen Sie den Originaltext nicht Ihrer Antwort bei.

********* Hier folgt Ihre Nachricht von unserem Mitarbeiter **********

Sehr geehrter Herr Brust,

vielen Dank, dass Sie sich an den Windows XP Service Pack 2 Support gewendet haben. Leider konnte ihre Anfrage nicht im Rahmen des Chat-Supports bearbeitet werden. Daher moechten wir Ihnen den Email-Support anbieten.

Leider m?ssen wir Ihnen mitteilen, dass der SP2 Ihnen keine Unterst?tzung bei Server 2003 Problem; Domainbutton grau! anbieten kann.
**Kommentar: dass das / der Service Pack mir hilft ist doch klar!**
Unterst?tzung erhalten Sie bei unserem professional Support. Diesen erreichen Sie unter:
Deutschland: 0180 67 23 30
(tm)sterreich: 0150 222 23 30
Schweiz: 0848 80 23 30

Auf Grund der fehlenden Zust"ndigkeit werden wir Ihre Anfrage jetzt schlieáen.


Mit freundlichen Gruessen

Bianca Baum

Microsoft Contact Centre (Deutschland): 01801 000 854 (0,04 Euro/Minute aus dem Festnetz der Deutschen Telekom) Microsoft Contact Centre (Oesterreich): 0810 001231 (0,07 Euro/Minute) Microsoft Contact Centre (Schweiz): 0844 000 200 (zum Lokaltarif bzw. zum Tarif Ihres Mobilanbieters) **TEUER! IST JA FAST SO TEUER WIE NORMAL TELEFONIEREN! SCHON MAL WAS VON 0800 GEHÖRT??!

Microsoft Service Pack 2 Support Services http://support.microsoft.com/

**********************************************
Disclaimer
Microsoft stellt Ihnen die in der Artikel und Informationen als Service-Leistung zur Verfuegung. Microsoft uebernimmt keinerlei Gewaehrleistung dafuer, dass die angebotenen Artikel  und Informationen auch in Ihrer Einsatzumgebung die erwuenschten Ergebnisse erzielen. Die  Entscheidung darueber, ob und in welcher Form Sie die angebotenen Artikel und Informationen  nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung fuer Vorsatz ist  jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder  Informationen ausgeschlossen.




FEEDBACK #####################################

Wir bei Microsoft sind froh darueber, Ihnen den bestmoeglichen Service anzubieten und wir sind uns sicher, dass Sie mit dem Service zufrieden waren, den Sie erhalten haben.
Falls Sie Vorschlaege oder Kommentare ueber meine/unsere Arbeit oder Ihre Support Erfahrung haben, dann schicken Sie bitte eine E-Mail an meinen Manager und das Deutschland Management Team:
mailto:ukfeed@microsoft.com?subject=Attention_of_Harald_Werner **Haben die nen Virenscanner?**

ICH DACHTE XP PRO UNTERSTÜTZT DOMAINS?????? WOZU LAD ICH NE SERVER 03 DEMO :roll:  RUNTER, WENN DIESER KRAM NUR MIT WIN2000 CLIENTS GEHT????!!

Da denke ich lieber an den blitzartigen Support in der PearPC-Mailingliste oder den Support von Programmen, die ein einziger Mensch geschrieben hat und sein Geld damit verdient. Der hat mir sogar zu einem Problem in einer Demoversion eine lange Mail zurückgeschrieben. Solche Programme kaufe ich dann auch gerne. Aber schon gut, dass der Microsoft Support nur 1,5 µs braucht um ne einseitige Mail zu schreiben. Da find ich Apple besser, die ihre tausenden Beschwerden wegen zu dunklem Videosignal am Mac mini alle selber beantworten. Echte Menschen. Da wartet man dann auch noch etwas lieber. Was meint ihr zum allgemeinen Thema "Support von Riesenfirmen wie IBM,Microsoft,Novell etc..."?
Schreibt!

EDIT: Umlaute scheint Microsoft (tm)sterreich jedenfalls nicht zu kennen. Und das, obwohl ich die Mail mir Outlook abgerufen hab.
6
Lowlevel-Coding / LD Problem
« am: 24. March 2005, 15:54 »
Hi!
Seit ich auf Linux umgestiegen bin und meinen Kernel nicht mehr mit cygwin kompiliere, streikt ld. Angeblich kann es keine Symbole finden, die vom C- ins ASM-Modul oder umgekehrt gehen.
seht selbst:

Buildscript:

cd src
cd core
nasm -f aout -o /tmp/nanocore.pef nc_main.asm

gcc -o /tmp/nanocore.cef -fwritable-strings -ffreestanding -c everything.c

ld -T link.ld -o ../../bin/nanocore.dnc /tmp/nanocore.cef /tmp/nanocore.pef
cd ..
cd ..

Output:

nasm sagt nix, gcc hat das auf win auch gesagt und es hat immer geklappt!
cc1: Anmerkung: -fwritable-strings veraltet, schauen Sie in die Dokumentation für Details
/tmp/nanocore.cef(.text+0x4c): In function `k_main':
: undefined reference to `getmemsize'
/tmp/nanocore.cef(.text+0xc7): In function `k_main':
: undefined reference to `getcpuid'
/tmp/nanocore.cef(.text+0x7fd): In function `nanocore_setup_idt':
: undefined reference to `isr_0'
/tmp/nanocore.cef(.text+0x811): In function `nanocore_setup_idt':
: undefined reference to `isr_1'
/tmp/nanocore.cef(.text+0x825): In function `nanocore_setup_idt':
: undefined reference to `isr_2'
/tmp/nanocore.cef(.text+0x839): In function `nanocore_setup_idt':
: undefined reference to `isr_3'
/tmp/nanocore.cef(.text+0x84d): In function `nanocore_setup_idt':
: undefined reference to `isr_4'
/tmp/nanocore.cef(.text+0x861): In function `nanocore_setup_idt':
: undefined reference to `isr_5'
/tmp/nanocore.cef(.text+0x875): In function `nanocore_setup_idt':
: undefined reference to `isr_6'
/tmp/nanocore.cef(.text+0x889): In function `nanocore_setup_idt':
: undefined reference to `isr_7'
/tmp/nanocore.cef(.text+0x89d): In function `nanocore_setup_idt':
: undefined reference to `isr_8'
/tmp/nanocore.cef(.text+0x8b1): In function `nanocore_setup_idt':
: undefined reference to `isr_9'
/tmp/nanocore.cef(.text+0x8c5): In function `nanocore_setup_idt':
: undefined reference to `isr_10'
/tmp/nanocore.cef(.text+0x8d9): In function `nanocore_setup_idt':
: undefined reference to `isr_11'
/tmp/nanocore.cef(.text+0x8ed): In function `nanocore_setup_idt':
: undefined reference to `isr_12'
/tmp/nanocore.cef(.text+0x901): In function `nanocore_setup_idt':
: undefined reference to `isr_13'
/tmp/nanocore.cef(.text+0x915): In function `nanocore_setup_idt':
: undefined reference to `isr_14'
/tmp/nanocore.cef(.text+0x929): In function `nanocore_setup_idt':
: undefined reference to `isr_15'
/tmp/nanocore.cef(.text+0x93d): In function `nanocore_setup_idt':
: undefined reference to `isr_16'
/tmp/nanocore.cef(.text+0x951): In function `nanocore_setup_idt':
: undefined reference to `isr_17'
/tmp/nanocore.cef(.text+0x965): In function `nanocore_setup_idt':
: undefined reference to `isr_18'
/tmp/nanocore.cef(.text+0x979): In function `nanocore_setup_idt':
: undefined reference to `isr_19'
/tmp/nanocore.cef(.text+0x98d): In function `nanocore_setup_idt':
: undefined reference to `isr_32'
/tmp/nanocore.cef(.text+0x9a1): In function `nanocore_setup_idt':
: undefined reference to `isr_33'
/tmp/nanocore.cef(.text+0x9b5): In function `nanocore_setup_idt':
: undefined reference to `isr_38'
/tmp/nanocore.cef(.text+0x9c9): In function `nanocore_setup_idt':
: undefined reference to `isr_44'
/tmp/nanocore.cef(.text+0xb6d): In function `task_init':
: undefined reference to `read_esp'
/tmp/nanocore.cef(.text+0xb7a): In function `task_init':
: undefined reference to `read_cr3'
/tmp/nanocore.cef(.text+0xc14): In function `task_add':
: undefined reference to `read_esp'
/tmp/nanocore.cef(.text+0xc22): In function `task_add':
: undefined reference to `write_esp'
/tmp/nanocore.cef(.text+0xc45): In function `task_add':
: undefined reference to `pushval'
/tmp/nanocore.cef(.text+0xc5d): In function `task_add':
: undefined reference to `read_esp'
/tmp/nanocore.cef(.text+0xe25): In function `task_store_data':
: undefined reference to `read_esp'
/tmp/nanocore.cef(.text+0xe32): In function `task_store_data':
: undefined reference to `read_cr3'
/tmp/nanocore.pef(.text+0x8):/tmp/nanocore.pef: undefined reference to `_interrupt_0'
/tmp/nanocore.pef(.text+0x1c):/tmp/nanocore.pef: undefined reference to `_interrupt_1'
/tmp/nanocore.pef(.text+0x30):/tmp/nanocore.pef: undefined reference to `_interrupt_2'
/tmp/nanocore.pef(.text+0x44):/tmp/nanocore.pef: undefined reference to `_interrupt_3'
/tmp/nanocore.pef(.text+0x58):/tmp/nanocore.pef: undefined reference to `_interrupt_4'
/tmp/nanocore.pef(.text+0x6c):/tmp/nanocore.pef: undefined reference to `_interrupt_5'
/tmp/nanocore.pef(.text+0x80):/tmp/nanocore.pef: undefined reference to `_interrupt_6'
/tmp/nanocore.pef(.text+0x94):/tmp/nanocore.pef: undefined reference to `_interrupt_7'
/tmp/nanocore.pef(.text+0xa8):/tmp/nanocore.pef: undefined reference to `_interrupt_8'
/tmp/nanocore.pef(.text+0xbc):/tmp/nanocore.pef: undefined reference to `_interrupt_9'
/tmp/nanocore.pef(.text+0xd0):/tmp/nanocore.pef: undefined reference to `_interrupt_10'
/tmp/nanocore.pef(.text+0xe4):/tmp/nanocore.pef: undefined reference to `_interrupt_11'
/tmp/nanocore.pef(.text+0xf8):/tmp/nanocore.pef: undefined reference to `_interrupt_12'
/tmp/nanocore.pef(.text+0x10c):/tmp/nanocore.pef: undefined reference to `_interrupt_13'
/tmp/nanocore.pef(.text+0x13f):/tmp/nanocore.pef: undefined reference to `_interrupt_14'
/tmp/nanocore.pef(.text+0x15b):/tmp/nanocore.pef: undefined reference to `_interrupt_15'
/tmp/nanocore.pef(.text+0x16f):/tmp/nanocore.pef: undefined reference to `_interrupt_16'
/tmp/nanocore.pef(.text+0x183):/tmp/nanocore.pef: undefined reference to `_interrupt_17'
/tmp/nanocore.pef(.text+0x197):/tmp/nanocore.pef: undefined reference to `_interrupt_18'
/tmp/nanocore.pef(.text+0x1ab):/tmp/nanocore.pef: undefined reference to `_interrupt_19'
/tmp/nanocore.pef(.text+0x1c1):/tmp/nanocore.pef: undefined reference to `_IRQ1'/tmp/nanocore.pef(.text+0x1db):/tmp/nanocore.pef: undefined reference to `_IRQ6'/tmp/nanocore.pef(.text+0x1f3):/tmp/nanocore.pef: undefined reference to `_IRQ12'
/tmp/nanocore.pef(.text+0x20f):/tmp/nanocore.pef: undefined reference to `_nanocall'
/tmp/nanocore.pef(.text+0x22e):/tmp/nanocore.pef: undefined reference to `_task_scheduler'
/tmp/nanocore.pef(.text+0x24d):/tmp/nanocore.pef: undefined reference to `_k_main'
/tmp/nanocore.pef(.text+0x25e):/tmp/nanocore.pef: undefined reference to `_printm'
7
Lowlevel-Coding / Multitasking bug?
« am: 22. March 2005, 14:16 »
Ich hab hier irgendeinen Bug im Multitasking, und zwar wird beim return von task_scheduler() irgendwo hingesprungen, wo gar nicht gesprungen werden soll. Wers hinkriegt, darf den taskhandler behalten/benutzen
task.asm (handler)


[global _timer_int]
[extern _task_scheduler]
_timer_int:

cli
pusha ;Save registers
push ds
push es
push fs
push gs

call _task_scheduler ;Call C Scheduler

mov esp, eax ;Put return value(eax) into esp

;Send EOI to PIC
mov al, 0x20
out 0x20, al

pop gs
pop fs
pop es
pop ds
popa
sti
iret


task.c (die logik und alles)

/*-------------------------------------------------------------------------------------------

Delta Nanocore
This file is part of the implementation of Delta Nanocore.
You may use this code to understand how things work, but
you may NOT copy/use this code for your own purposes.
If you want to, you need permission by the Author of this code (Clemens Brust).
You may distribute the binaries for free. If you want to sell them, ask the Author
for permission.

Copyright (C) 2005 by Clemens-Alexander Brust

-------------------------------------------------------------------------------------------*/
struct task
{
unsigned long t_esp;
unsigned long t_id;
unsigned long t_cr3;
char* t_descriptor;
};


struct task_node
{
struct task t_task;
struct task_node* prev;
struct task_node* next;
};

struct task_node* task_current;
unsigned long task_enable=0;
unsigned long esptarget;
unsigned long cr3target;
// Prototypes:

struct task_node* task_init();
unsigned long task_add(unsigned long t_eip, unsigned long t_esp, unsigned long t_id, unsigned long t_cr3, char* descriptor);
struct task_node* task_last();
struct task_node* task_first();
void task_unlink(struct task_node* tnode);
void task_attach(struct task_node* tnode);
void task_next();
unsigned long task_scheduler();
void task_store_data();

//Implementations
struct task_node* task_init()
{
task_current=kmalloc(sizeof(struct task_node));
if(task_current==0)
return 0;
task_current->prev=0;
task_current->next=0;
task_current->t_task.t_id=0;
task_current->t_task.t_esp=read_esp();
task_current->t_task.t_cr3=read_cr3();
task_current->t_task.t_descriptor="Nanocore";
task_enable=1;
return task_current;
}

unsigned long task_add(unsigned long t_eip, unsigned long t_esp, unsigned long t_id, unsigned long t_cr3, char* descriptor)
{
struct task_node* tnode=0;
tnode=kmalloc(sizeof(struct task_node));
if(tnode==0)
{
return 0;
}
tnode->t_task.t_esp=t_esp;
*(unsigned long*)t_esp=t_eip;
asm("cli");
unsigned long tmp_esp=read_esp();
write_esp(t_esp-4);
asm("pushal");
asm("push %ds");
asm("push %es");
asm("push %fs");
asm("push %gs");
write_esp(tmp_esp);

tnode->t_task.t_id=t_id;
tnode->t_task.t_cr3=t_cr3;
tnode->t_task.t_descriptor=descriptor;
tnode->prev=task_current;
task_attach(tnode);
asm("sti");
return;
}


struct task_node* task_last()
{
struct task_node* p=task_current;
while(p->next)
{
p=p->next;
}
return p;
}
struct task_node* task_first()
{
struct task_node* p=task_current;
while(p->prev)
{
p=p->prev;
}
return p;
}

void task_unlink(struct task_node* tnode)
{
if(tnode)
{
if(tnode->next)
tnode->next->prev=tnode->prev;
if(tnode->prev)
tnode->prev->next=tnode->next;
}
return;
}

void task_attach(struct task_node* tnode)
{
task_last()->next=tnode;
return;
}

void task_next()
{
if(task_current->next)
{
task_current=task_current->next;
}
else
{
task_current=task_first();
}
return;
}

unsigned long task_scheduler()
{
printm("task_scheduler","test");
if(task_enable)
{
task_store_data(); // Save
task_next(); // All the logic is in there
printm("using task",task_current->t_task.t_descriptor);
char esp_d[8];
itoa(esp_d,'x',task_current->t_task.t_esp);
printm("esp",esp_d);
return task_current->t_task.t_esp; //<<<<<------ ERROR!
}
printm("task_scheduler","done");
return read_esp();
}


void task_store_data()
{
task_current->t_task.t_esp=read_esp();
task_current->t_task.t_cr3=read_cr3();
return;
}

8
Lowlevel-Coding / Interrupt anlegen klappt nicht!
« am: 31. January 2005, 20:24 »
Ich habe mir den Code von Lobmann angeschaut und um eine Funktion zum hinzufügen von Interrupts erweitert. Wenn ich aber einen von meinen Interrupts aufrufe, wird die 'Interrupt ignoriert' Funktion aufgerufen. Entweder mein Code ist fehlerhaft, oder ...?
Hier ist ein funktioneller Teil des Codes, einfach nach C:\OS-Dev\dhome extrahieren, und make.bat starten. Fertiges Image ist nanocore.raw, PM-Kernel, der nach 0x100000 geladen wird, ist bin\nanocore.dnc:
http://www.clemensoft.de/delta.zip
9
Lowlevel-Coding / IDEE
« am: 30. January 2005, 23:11 »
Ich hab eine spontane Idee, wie man das altbekannte Problem (wie soll ein Micro- bzw. Nanokernel seine Module laden) lösen kann:
1. Mit dem Bootloader. Auch altbekannt.
2. Die Module werden in den Kernel zwar einkompiliert, aber ans Ende vom Kernel. Dann guckt das Modul-Modul *g* im Kernelspeicher nach, ob irgendwo Module sind. Die erkennt es am Header. Somit könnte man Delta auch für Umgebungen (x86 wohlgemerkt) nutzen, die nicht mal wissen, was ein Laufwerk ist.
10
Lowlevel-Coding / GRUB/Multiboot.
« am: 24. January 2005, 18:34 »
Hallo. Hat jemand von euch ein Multiboot-kompatibles Betriebssystem geschrieben? Ich hab versucht, Delta Multiboot-konform zu machen, ich kriege die GRUB-Meldung: 13: Unsupported executable format. Ich habs mit ELF, A.OUT, COFF, PE und sonstwas probiert. Müsste mit bin eigentlich gehen! Hier mal der Code von nc_init.asm:


;=======================================\
;   Delta Nanocore Project              |
;                                       |
;    Nanocore Main Core                 |
;=======================================/


%define dnc_version 'Delta Nanocore v0.0.0-14012005-deca1',dnc_arch,dnc_tag,' compiled with nasm-',__NASM_VER__  ;Nanocore version information
%define dnc_arch '-x86-32-grub'
%define dnc_tag '-epsilon15' ;Place your name here if you edited the file



;Functions in this file:

;IM, BF nanocore_entry:
;Start of Nanocore. Gets memory size and initializes the core

;IM, BF nanocore_hangup:
;Used to kill the computer by infinite loop

;IM, BF debug_print:
;Clears the first line of the screen and prints a 0-terminated String at DS:ESI

;IM, BF nanocore_getmemsize:
;BUG: This doesn't work uin VMware
;Counts the amount of memory installed in the computer





bits 32
org 0x100000
jmp nanocore_entry



;Multiboot Header
nmh_magic dd 0x1BADB002
nmh_flags dd 0x00000000
nmh_checksum dd 0xE4524FFE

nmh_header_addr dd nmh_magic
nmh_load_addr dd 0x100000
nmh_load_end_addr dd nanocore_end_kernel
nmh_bss_end_addr dd 0
entry_addr dd nanocore_entry



;Nanocore's Entry Point

nanocore_entry:
    mov esp,0x200000
    call nanocore_getmemsize
    cmp ax,0x10
   
    jl nanocore_entry.toolessmem ;comment this out if you build for VMWare
   
    jmp nanocore_entry.enoughmem ;enough...
   
    nanocore_entry.toolessmem:
    mov esi, msg_memtooless
    call debug_print ; And tell the user
    jmp nanocore_hangup ; And hang up ;)
       
    ;Here we go:
    nanocore_entry.enoughmem:
    mov esi, msg_memenough
    call debug_print
    mov esi, msg_version
    call debug_print
   
    ;call nanocore_init_mods

nanocore_hangup:
    jmp nanocore_hangup
   


debug_print:
mov edi, 0xB8000
mov ecx, 80*2*25
xor eax, eax
rep stosb
mov edi, 0xB8000
debug_print.1:
lodsb
or al, al
jz debug_print.2
stosb
mov al, 12
stosb
jmp debug_print.1
debug_print.2:
ret

nanocore_getmemsize:
    push ebp
    mov ebp, esp
    push edx
    mov eax, 0
    mov edx, 0x1EFFFC
    nanocore_getmemsize.1:
    inc eax
    mov DWORD [edx], 0xAAAAAAAA
    mov ebx, [edx]
    add edx, 0x100000
    cmp ebx, 0xAAAAAAAA
    je nanocore_getmemsize.1
    pop edx
    mov esp, ebp
    pop ebp
    ret



nanocore_data:
    msg_version db dnc_version,0
    msg_memenough db 'nanocore:You have enough RAM',0
    msg_memtooless db "nanocore:FATAL:You don't have enough RAM! Note: if you have more than 16 MB RAM, you are possibly running Delta Nanocore on VMWare. Either get the VMWare-compatible kernel or use Bochs as a virtual machine or use it on a real computer. If you still get this message, something is terribly wrong i.e., Nanocore doesn't fit your system.",0
   
   
   
   

nanocore_end_kernel:

11
Lowlevel-Coding / Delta Nanocore-Update
« am: 08. January 2005, 01:03 »
Die Projektseite ist jetzt online! Ihr könnt euch registrien, auch wenn ihr nicht mitmachen wollt. Wenn ihr mitmachen wollt, bitte email an epsilon15@gmail.com

Seite
http://www.clemensoft.de/Mambo
12
Offtopic / Bestes OS für...
« am: 07. January 2005, 01:12 »
Bestes OS für einen alten Pentium MMX Laptop. Eigentlich ist er ganz okay, aber er hat nur 32 MB RAM, also kann ich Linux knicken. Aber Windows will ich auch nicht. Was soll ich nehmen bzw. wie kriege ich Linux MIT X zum Laufen?

THX.
13
Lowlevel-Coding / Delta Nanocore
« am: 06. January 2005, 14:18 »
Hat irgendwer Lust, dabei mitzumachen? Ich habe schon einen ftp-Server aufgesetzt, und ein Forum kommt auch bald, ebenso eine Webseite. Die Planung des Projekts wird von mir durchgeführt, an meinem Linux-Rechner, an dem regelmäßig (Immer Sonntag Vormittags) Builds durchgeführt werden.
Hier mal der Designtext

Delta Nanocore ist ein sehr sicheres Betriebssystem, obwohl es kooperatives Multitasking benutzt. Wenn Prozesse nicht kooperieren, merkt sich der Nanocore dies und killt den Prozess nach einer Bestimmten Zeit. Der Benutzer wird sofort informiert. Das Ziel ist, den Kernel möglichst klein zu halten, und alle unnötigen Funktionen in Module zu verpacken. Diese Reduzierung erfolgt bis zu einer Ebene, wo Software vollkommen Betriebssystemunabhängig laufen kann. Für diesen Nanocore werden dann Module programmiert, wie zum Beispiel Grafiktreiber oder Diskettentreiber.
Basierend auf diesem Prinzip wird eine Grafische Benutzeroberfläche programmiert, die auf bestimmte Module zurückgreift.
Der Nanocore wird von einem in zwei Stufen geteilten Loader geladen. Die erste Stufe (Stage-B) wechselt in den Protected Mode und lädt die zweite Stufe (Stage-M), einen monolithischen Kernel, der den Prozessor und andere Geräte auf Delta vorbereitet und auf Kompatibilität prüft. Ist alles ok, wird der Nanocore von Diskette oder Festplatte oder Netzwerk geladen. Er wird anhand zweier Prüfsummen analysiert (zum Beispiel auf Infektion durch Viren). Wurden Fehler festgestellt, wird der Benutzer informiert. Falls Stage-M Zugriff aufs Internet oder Netzwerk hat, wird ein aktueller Nanocore heruntergeladen und installiert. Dann werden noch die Module überprüft, die geladen werden sollen. Wird hier kein Fehler oder Inkompatibilität festgestellt, werden die Module in eigene Adressräume geladen. Jedes Modul wird initialisiert. Danach wird der Nanocore an eine bestimmte Speicheradresse geladen. Dann werden dem Nanocore an einer anderen Speicheradresse Parameter übergeben, also welches Modul (in diesem Fall das GUI) nach dem Start aufzurufen ist usw.Dann wird der Nanocore aufgerufen. Er zerstört per Speicherüberschreibung alles vom Loader. Dann schaut er in seiner Parameterliste nach, welches Modul er zuerst aufrufen soll. Dieses Modul wird dann in einen geschützten Speicherbereich geladen und ausgeführt. Dieses Sicherheitsprinzip setzt sich im ganzen System durch, alles ist isoliert, Kommunikation zwischen Objekten nur durch Pipes und System Calls.

Ich bin schon beim Coden und grade dabei, ein VESA-Modul zu schreiben.
14
Lowlevel-Coding / Funzt nicht?
« am: 30. December 2004, 17:32 »
Ich benutze folgenden Code, um in den PM zu kommen. Wenn ich ihn starte, stürzt VMWare ab, Bochs und mein PC starten neu. Codesegment und Datensegment im Real Mode sind 2000h



load_pm:
xor eax,eax
mov ax,cs
shl eax,4
add ax,eos_null_desc
mov dword [BaseAddr],eax
bits 32
lgdt [eos_gdt_desc+20000h]
mov eax,cr0
or eax,1
mov cr0,eax
mov word ax, [eos_code_selector]
mov cs, ax
mov word ax, [eos_data_selector]
mov ds, ax
mov word [kernlin],kernel_pm

DB 0EAh
DW 0000000000010000b
kernlin DW 0



;Data


eos_data_selector:
dw 0000000000001000b
eos_code_selector:
dw 0000000000010000b


eos_gdt_desc:
Limit dw 3*8
BaseAddr dd 0

eos_gdt:

eos_null_desc:
dw 0
dw 0
dw 0
dw 0

eos_firstmb_data_desc:

dw 100h                    ;Segment Limiter 0-15
dw 2000h                   ;Segmentbasisadresse 0-15
db 0                       ;Segmentbasisadresse 16-23
db 10010010b               ;Data Segement (Writeable), Ring-0, no expand-down, present
db 11000000b               ;4KB Granularity, 386, 0,0 , Segment Limiter 16-19
db 0                       ;Segmentbasisadresse 24-31

eos_firstmb_code_desc:

dw 100h                    ;Segment Limiter 0-15
dw 2000h                   ;Segmentbasisadresse 0-15
db 0                       ;Segmentbasisadresse 16-23
db 10011010b               ;Code Segement (Readable), Ring-0, no expand-down, present
db 11000000b               ;4KB Granularity, 386, 0,0 , Segment Limiter 16-19
db 0                       ;Segmentbasisadresse 24-31


kernel_pm:
bits 32

;Hier fängt der 32-Bit Kernel an!
mov word [ds:0B8000h],"P "

test_hang:
jmp test_hang
15
Lowlevel-Coding / BIOS-Interrupt im FRM
« am: 30. December 2004, 15:23 »
Wenn ich mit Interrupt 0x13 Funktion 2 auf das Diskettenlaufwerk zugreifen will, kann ich den Inhalt über der 1MB-Marke (FRM 8) ) platzieren? Oder wird dann der höhere Teil abgeschnitten?
16
Offtopic / PsychoTest
« am: 22. December 2004, 15:43 »
Bitte langsam lesen und auch wirklich mitm
man wird sich wundern,aber
es stimmt halt(self-fullfilling
achen,prophecg) !! Folge den Anweisungen!!
Nicht mogeln oder es wird nicht klappen und du wirst
dir wünschen,
du hättest nicht gemogelt!!
Nimm dir 3 Minuten Zeit
und führ das Spiel durch,
es wird dich begeistern!!
Mein Wunsch ging nach 10 Minuten in Erfüllung,
deiner vielleicht auch??

Mal sehen, aber
unbedingt
NICHT mogeln !!

das spiel hat für jeden Einzelnen ein witziges
Ergebnis,
lies nicht zu weit, spiel das Spiel der Reihenfolge
nach!!

Nun denn, zuerst hol dir Papier und Stift . Wenn
du dir Namen ausssuchst,
nimm Leute, die du kennst und HANDLE NACH
DEINEM INSTINKT!!



Also gut, es kann losgehen...

1.Zuerst schreib die Zahlen von 1-11
in einer Reihe untereinander!!









2.Dann neben die Zahlen 1 und 2
schreib eine beliebige Nummer!!









3.Neben 3 und 7 schreib Namen zweier Menschen des
anderen Geschlechts!!






4. Nicht am Ende gucken,
es ist kein
Verarschungsmail,
sondern hat eher
was mit Psychologie zu tun.Wenn ihr das Ende lest,
ist der Effekt unwirksam.









5.Schreib irgendeinen Namen (Freunde oder Familie)
an die 4te,5te und 6te Stelle!!!









6. Schreib vier Songtitel bei 8,9,10 und 11 auf!!









7. und als letztes wünsch dir was!!









NUN hier die Auflösung des Spiels:

a. Du musst so vielen Personen ,wie du an Stelle 2
geschrieben hast, von diesem Spiel erzählen!!





b.die Person an Stelle 3 ist die, die du liebst!!!





c.die person an siebter Stelle magst du, kannst aber
nie mit ihr zusammenkommen!!





d.Die person an Stelle 4 magst du am meisten!!





e. die Person an 5ter Stelle kennt Dich sehr gut!!





f. die Nummer 6 bringt Glück!!





f.der Song an Stelle 8 steht im Zusammenhang mit
der Person an Stelle 3!!!






h. Der Titel an 9. ist der Song für Person Nummer 7!!





i.Der Song an Stelle 10 ist Derjenige,der am meisten
über dein Wesen aussagt!!





j.und 11tens ist der Song, der dein Lebensgefühl
ausdrückt!!




O.K. sende dies an 10 Leute innerhalb in der Stunde
in der du es liest wenn das tust ,wird dein Wunsch in
Erfüllung
gehen
wenn nicht geschied das Gegenteil!!
Wunsch
17
Das Wiki / Flat Real Mode aka Voodoo Mode aka Unreal Mode - Tut
« am: 20. December 2004, 20:01 »
Ich hab im Moment mein halbes OS damit geschrieben, jetzt frage ich die Redaktion von Lowlevel: Darf/Soll ich ein Tutorial darüber schreiben, damit auch Leute wie z.B. ich vor einer Woche diesen Bug verstehen?
18
OS-Design / Timer-Interrupt
« am: 20. December 2004, 17:53 »
Also, ich brauche einen Interrupt, der in regelmäßigen Abständen vom Prozessor aufgerufen wird. Ich kenne nur 0x1C, der 18,2 mal pro Sekunde aufgerufen wird, der ist mir zu langsam. Bei Win***s gibt es doch auch so eine Timer-Funktion mit 1000 Ticks pro Sekunde, und wenn ich mich recht entsinne, gibt es im PC einen Baustein names Performance Counter mit einem Quarzkristall...
19
Lowlevel-Coding / ASCII-Code für Rücktaste
« am: 19. December 2004, 20:38 »
^^ Der Titel sagt alles, ich progge grade eine Routine für gepufferte Eingabe einer Zeichenkette, dabei soll sowas wie "dec di" passieren. Um diese Taste abzufangen, brauch ich den ASCII Code davon!
20
Lowlevel-Coding / Flat Real Mode?
« am: 18. December 2004, 18:18 »
Ich habe darüber in einigen Threads gehört, dieser Modus sei ein ganz normaler RM, aber mit 32-bit-addressierung. Wie funktioniert das? Um 32-Bit-Addressen anzugeben, braucht man doch 32-Bit-Register, die meines Wissens nach nur im PM verfügbar sind?
Hat wer ein Tutorial oder sowas? Mein OS braucht einfach mehr Speicher, der eine MB ist schon etwas kanpp bemessen...
Seiten: [1]

Einloggen