COBE 0.1 ALPHA
|
00001 #include <syscalls.h> 00002 #include <multitasking.h> 00003 #include <stdio.h> 00004 #include <io.h> 00005 #include <stdint.h> 00006 #include <cmos.h> 00007 #include <pgng.h> 00008 #include <fdc.h> 00009 #include <fat.h> 00010 00011 extern struct paging_directory* kernel_map; 00012 extern new_task_t* current_task; 00013 extern multiboot_info_t* mbinfo; 00014 extern char curr_dir[40]; 00015 00016 cpu_regs* syscall(cpu_regs* cpu) { 00017 //----------Aktiviere Interrupts in den Syscalls---------- 00018 __asm("sti"); 00019 00020 switch(cpu->eax) 00021 { 00022 00023 case 0x1: 00024 switch(cpu->edx) { //Input/Output 00025 case 0x0: kputchar((char)cpu->ebx); break; 00026 case 0x1: kputx(cpu->ebx, cpu->ecx); break; 00027 case 0x2: kputstring((char*)cpu->ebx); break; 00028 case 0x3: kgets((char*)cpu->ebx); break; 00029 default: break; 00030 } 00031 break; 00032 00033 case 0x2: 00034 outb(0x64, 0xFE); //----------0xFE in den Port 0x64 startet die CPU neu---------- 00035 break; 00036 00037 case 0x3: 00038 switch(cpu->edx) { //Prozesse 00039 case 0x1: kill_task(cpu->ecx); 00040 default: break; 00041 } 00042 break; 00043 00044 case 0x4: 00045 break; 00046 00047 case 0x5: 00048 show_floppys(); 00049 break; 00050 00051 case 0x6: //Dateien 00052 switch(cpu->ebx) 00053 { 00054 case 0x1: fat_show_directory(); break; 00055 case 0x2: fat_change_directory((char*)cpu->ecx); break; 00056 case 0x3: kstrcpy(curr_dir,(char*)cpu->ecx); break; 00057 case 0x4: copy_sector((uint8_t)cpu->ebx, (uint8_t)cpu->ecx, (uint8_t)cpu->edx, (uint8_t)cpu->esi, (void*)cpu->edi, (bool)cpu->ebp); break; 00058 case 0x5: fat_mkdir((char*)cpu->ecx); break; 00059 case 0x6: fat_del((char*)cpu->ecx); break; 00060 default: break; 00061 } 00062 break; 00063 00064 default: 00065 break; 00066 00067 } 00068 00069 //----------Gebe den neuen CPU-Zustand zurück---------- 00070 return cpu; 00071 } 00072 00073 /*****SYSCALL-NUMMERN***** 00074 // 00075 // 1: print 00076 // 2: restart cpu 00077 // 3: get keys 00078 // 4: print number 00079 // 5: show floppys 00080 // 6: copy sector 00081 *************************/