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.


Nachrichten - paule22

Seiten: [1]
1
Softwareentwicklung / Linux Cross Compiling - Win32
« am: 08. December 2012, 20:39 »
Hallo,

ich versuche schon seit 2 Tagen .exe Dateien für Winodws 32 Bit unter Linux zu erstellen.
Leider ohne Erfolg.
Ich bekomme folgende Meldung:

root@kalli:/home/jkallup# gcc-mingw32 -m32 -Wa,--32 -Wl,--oformat,pe-i386 -o test.o -c test.c
Assembler messages:
Fatal error: selected target format 'pe-i386' unknown
root@kalli:/home/jkallup#

was kann man dagegen tun?

Danke
paule
2
Lowlevel-Coding / Re: einfache fseek implementation
« am: 01. December 2012, 20:21 »
3
Lowlevel-Coding / einfache fseek implementation
« am: 01. December 2012, 16:53 »
Hallo,

habe vor, mein Eignes OS zu programmieren.
Jetzt bin ich soweit, um ein Verzeichnis von einen CD Rom ISO Image auszulesen.
Nagut, fast :-)

wie man hier sehen kann, lese ich eine Struktur ab Sektor 23 einer CD aus:

struct directory_record
{
  char res1[108]; //res1[108+46]; +46 = nächster Eintrag
 
  WORD version;
  WORD sector;
  WORD sector_opt1;
  WORD sector_opt2;
  WORD sector_opt3;
 
  WORD length;
  WORD length_opt1;
  WORD length_opt2;
  WORD length_opt3;
 
  BYTE year;
  BYTE month;
  BYTE day;
 
  BYTE hour;
  BYTE minute;
  BYTE second;
 
  BYTE res2;
  BYTE flag;
 
  char res3[6];
 
  uint8_t ident_length;
  char ident[12];
} DIR_RECORD;
 
 
struct disk_packet
{
    byte size_pack;
    byte reserved1;
    byte no_of_blocks;
    byte reserved2;
    word offset;
    word segment;
    dword lba1;
    dword lba2;
} __attribute__((packed)) disk_pack;
 
 
void LBASectorRead(void *buffer, unsigned long lba)
{
    unsigned char bError = 0;
    REGS regs;
 
    disk_pack.size_pack = 16;
    disk_pack.no_of_blocks = 1;
    disk_pack.reserved1 = 0;
    disk_pack.reserved2 = 0;
    disk_pack.segment = (((unsigned int)buffer >> 16) << 12);
    disk_pack.offset = ((unsigned int)buffer & 0xffff);
    disk_pack.lba2 = lba >> 32;
    disk_pack.lba1 = lba & 0xffffffff;
 
regs.b.ds = (((unsigned int)&disk_pack >> 16) << 12);
regs.b.si = ((unsigned int)&disk_pack &0xffff);
regs.b.dl = 0x9f;
regs.b.ah = 0x42;
int386(0x13,&regs,&regs);
}
 
 
struct directory_record dr[2];
LBASectorRead( &dr,23);
 
printf("Verzeichnisstruktur .root:");
nl();
 
int count;
for (count = 0; count < 3; count++)
{
//if (dr[count].version == 0) break;
 
if (dr[count].flag == 0)
{ dr[count].ident[dr[count].ident_length-2] = '\0'; } else
{ dr[count].ident[dr[count].ident_length-0] = '\0'; }
 
printf("%02d.%02d.%02d %02d:%02d:%02d %8d %s",
dr[count].day,
dr[count].month,
dr[count].year+1900,
dr[count].hour,
dr[count].minute,
dr[count].second,
dr[count].length,
dr[count].ident);
 
nl();
}

Leider ist aber ein Verzeichnis Eintrag 46 Byte groß.
Also müsste ich beim nächsten einlesen 108 + 46 Byte vorwärts gehen.
Wenn ich das wie in den Code mache, dan reserviere ich ja Speicher (2 * 108) ****?
anstatt 2 * 46.

Wie ist es nun möglich, die Struktur Member res1[108] aus der Struktur zu entfernen,
so dass die dann wirklich nur 46 Bytes groß ist.
Es müsste also eiine Impplementation eines "einfachen" fseek, die dann auf Sektor 23
zeigt, 108 Bytes einliesst, geben ....

Hat da einer von Euch eine Idee?
Danke schonmal
4
Lowlevel-Coding / Re: MyOS - CDROM Verzeichnis auslesen
« am: 30. November 2012, 22:46 »
So,
jetzt hab ich schonmal eine Datei, mit Sektorposition und Größe.
ich weiss nur nicht, ob das WORD so richtig ist.
verchiedene andere Datentypen gaben Salat, oder ich mach was falsch.
kann da mal einer ein Auge drüber werfen?
weil, ich denke mal dass das WORD nur 65535 Sektoren lesen kann???

Danke schonmal
paule22


typedef unsigned short WORD;

struct directory_record
{
  char res1[108];

  WORD version;
  WORD sector;
  WORD sector_opt1;
  WORD sector_opt2;
  WORD sector_opt3;
  WORD length;
  WORD length_opt1;
  WORD length_opt2;
  WORD length_opt3;

  char res2[10];

  BYTE ident_length;
  char ident[12];
} DIR_RECORD;


struct disk_packet
{
    byte size_pack;
    byte reserved1;
    byte no_of_blocks;
    byte reserved2;
    word offset;
    word segment;
    dword lba1;
    dword lba2;
} __attribute__((packed)) disk_pack;


void LBASectorRead(void *buffer, unsigned long lba)
{
    unsigned char bError = 0;
    REGS regs;

    disk_pack.size_pack = 16;
    disk_pack.no_of_blocks = 1;
    disk_pack.reserved1 = 0;
    disk_pack.reserved2 = 0;
    disk_pack.segment = (((unsigned int)buffer >> 16) << 12);
    disk_pack.offset = ((unsigned int)buffer & 0xffff);
    disk_pack.lba2 = lba >> 32;
    disk_pack.lba1 = lba & 0xffffffff;

regs.b.ds = (((unsigned int)&disk_pack >> 16) << 12);
regs.b.si = ((unsigned int)&disk_pack &0xffff);
regs.b.dl = 0x9f;
regs.b.ah = 0x42;
int386(0x13,&regs,&regs);
}




struct directory_record dr[2];
LBASectorRead( &dr,23);

dr[0].ident[dr[0].ident_length-2] = '\0';

printf("--> %d , ver: %x , sec: %d , len: %d",
sizeof(dr[0]),
dr[0].version,
dr[0].sector,
dr[0].length); nl();

printf("--> %d", dr[0].ident_length); nl();
printf("==> %s", dr[0].ident);


http://www.freeimagehosting.net/mf1tf
5
Lowlevel-Coding / Re: MyOS - CDROM Verzeichnis auslesen
« am: 30. November 2012, 12:30 »
Hi Svenska,

ich lese ab Sector 16 den Primary Volume Descriptor.
l_path verweisst auf Sektor 24
also springe ich da hin
6
Lowlevel-Coding / Re: MyOS - CDROM Verzeichnis auslesen
« am: 29. November 2012, 17:45 »
Hallo,

habe folgendes hexdump meines iso cd rom images:
http://www.freeimagehosting.net/htrkm

wenn ich nun, folgende struktur abbilde, erhalte ich keine ausgabe des namens(ident): https://gist.github.com/4170213

auch, wenn ich noch keinen Treiber benutze, müsste man doch die CD auslesen können?
Hat da jemand eine Idee, woran das nun liegen kann?

Gruß
paule22
7
Lowlevel-Coding / Re: MyOS - CDROM Verzeichnis auslesen
« am: 28. November 2012, 21:49 »
Hallo Svenska,

ok.
hier nun die header. (die typen habe ich mal angepasst - types.h hab ich nicht, da gcc -nostdinclude
nun muss ich wissen,wie man an die Verzeichnisstruktur kommt.
Bitte kannst Du mir dabei helfen?

typedef unsigned char      __int8;
typedef unsigned short int __int16;
typedef unsigned       int __int32;
typedef long     long  int __int64;


struct CDROM_VolumeDescriptor
{
  unsigned char type;
  char ident[5];
  unsigned char version;
  char desc_type[2048-7];
} __attribute__((packed)) CD_VolumeDescriptor;

struct CDROM_BootRecord
{
  unsigned char type;
  char          ident[5];
  unsigned char version;
  char          sys_ident[32];
  char          boot_ident[32];
  char          boot_res[2048-64-7];
} __attribute__((packed)) CD_BootRecord;

struct CDROM_VolumeDescriptorSetTerminator
{
  unsigned char type;
  char ident[5];
  unsigned char version;
  char desc_type[2041];
} __attribute__((packed)) CD_VolumeSetTerminator;

struct CDROM_PrimaryVolumeDescriptor {
  unsigned char type;
  char          ident[5];
  unsigned char version;
  unsigned char unused_field_1;
  char          sys_ident[32];
  char          vol_ident[32];
  char          unused_field_2[8];
  int           vol_space_size;
  char          unused_field_3[32];
  int vol_set_size;
  int vol_seq_number;
  int log_block_size;
  int path_table_size;
  int location_L_path_table;
  int location_L_path_table_optional;
  int location_M_path_table;
  int location_M_path_table_optional;
  char root_directory_record[34];
  char volume_set_ident[128];
  char publisher_ident[128];
  char data_preparer_ident[128];
  char application_ident[128];
  char copyright_ident[37];
  char abstract_file_ident[37];
  char bib_file_ident[37];
  char volume_creation_date_time[17];
  char volume_modification_date_time[17];
  char volume_expiration_date_time[17];
  char volume_effective_date_time[17];
  int file_structure_version;
  char reserved_byte;
  char application_use[512];
  char reserved[653];
} __attribute__((packed)) CD_PrimaryVolume;

struct CDROM_VolumeTerminator {
  int type;
  char ident[5];
} __attribute__((packed)) CD_VolumeTerminator;

struct CDROM_DirectoryItem {
  __int8 sizeof_diritem;
  __int8 number_of_extsectors;
  __int64       first_sector;
  __int64 sizeof_datarange;
  __int8 created_year;  // since 1900
  __int8 created_month;
  __int8 created_day;
  __int8 created_hour;
  __int8 created_minute;
  __int8 created_second;
  __int8 gmt;
  __int8 flags;
  __int8 sizeof_interleaved_files;
  __int8 wideof_block_files;
  __int32 volume_sequence_number;
  __int8 length_ident;
  char ident[8];
} __attribute__((packed)) CD_DirectoryItem;

struct disk_packet
{
    byte size_pack;
    byte reserved1;
    byte no_of_blocks;
    byte reserved2;
    word offset;
    word segment;
    dword lba1;
    dword lba2;
} __attribute__((packed)) disk_pack;

void LBASectorRead(void *buffer, unsigned long lba)
{
    unsigned char bError = 0;
    REGS regs;

    disk_pack.size_pack = 16;
    disk_pack.no_of_blocks = 1;
    disk_pack.reserved1 = 0;
    disk_pack.reserved2 = 0;
    disk_pack.segment = (((unsigned int)buffer >> 16) << 12);
    disk_pack.offset  =  ((unsigned int)buffer & 0xffff);
    disk_pack.lba2 = lba >> 32;
    disk_pack.lba1 = lba & 0xffffffff;

regs.b.ds = (((unsigned int)&disk_pack >> 16) << 12);
regs.b.si =  ((unsigned int)&disk_pack &0xffff);
regs.b.dl = 0x9f;
regs.b.ah = 0x42;
int386(0x13,&regs,&regs);

    //printf("Error: %d\n",regs.b.ah);

}

...
  {
//static unsigned char buffer[2048] = { 0 };
    //LBASectorRead(buffer,16);

LBASectorRead(&CD_VolumeDescriptor,16);
        CD_VolumeDescriptor.ident[5] = '\0';
printf(CD_VolumeDescriptor.ident);
nl();
if (CD_VolumeDescriptor.version == 0)
printf("CDVD: Boot Record.");
nl();


LBASectorRead(&CD_BootRecord,17);
CD_BootRecord.ident[5] = '\0';
printf(CD_BootRecord.ident); nl();
printf(CD_BootRecord.sys_ident); nl();
printf(CD_BootRecord.boot_ident); nl();


LBASectorRead(&CD_VolumeSetTerminator,18);
CD_VolumeTerminator.ident[5] = '\0';
printf(CD_BootRecord.ident); nl();
        printf("-----------"); nl();


LBASectorRead(&CD_PrimaryVolume,16);
//CD_PrimaryVolume.ident[5] = '\0';
printf("%s",CD_PrimaryVolume.ident); nl();
printf("%d",CD_PrimaryVolume.location_L_path_table); nl();


LBASectorRead(&CD_DirectoryItem,24);
printf("i: %s",CD_DirectoryItem.ident); // hier wird nix ausgegeben
  }
...

Danke,
paule22
8
Lowlevel-Coding / Re: MyOS - CDROM Verzeichnis auslesen
« am: 28. November 2012, 19:32 »
Ok, Danke,

dann gleich noch eine Frage:
http://www.lowlevel.eu/wiki/ISO9660#Verzeichniseintrag

die letzten 3 items 0x23 X ident

wie kann man das in eine Struktur unterbringen?
Habe folgende Form, aber da weiss ich nicht ob die richtig ist:

struct CDROM_DirectoryItem {
  unsigned char sizeof_diritem;
  unsigned char number_of_extsectors;
  __int64       first_sector;
  __int64 sizeof_datarange;
  unsigned char created_year;  // since 1900
  unsigned char created_month;
  unsigned char created_day;
  unsigned char created_hour;
  unsigned char created_minute;
  unsigned char created_second;
  unsigned char gmt;
  unsigned char flags;
  unsigned char sizeof_interleaved_files;
  unsigned char wideof_block_files
  __int32 volume_sequence_number;
  unsigned char length_ident;
} CD_DirectoryItem __attribute__((packed));
9
Lowlevel-Coding / Re: MyOS - CDROM Verzeichnis auslesen
« am: 28. November 2012, 19:03 »
Hallo,

Danke für Deine Info.
kannst Du mir vielleicht eine Übersetzung "struct" für den Verzeichniseintrag machen?
Ich bin da etwas confused.
in lowlevel wird: 0x02    8    Erster Sektor des Datenbereichs (XE)
definert.
Die 8 - ist das ein char[8], int oder int64?
10
Lowlevel-Coding / Re: Undefined reference to XXX
« am: 28. November 2012, 18:18 »
init_ctors und dtors sind halt keine normale user funktionen
die werden verwendet um die "class" aufrufe zu händeln.
die daten werden gesammelt und der linker sollte dann alles zusammen linken

z.b. so:

gcc -o kernel.exe kernel.cc -lc

ich habs auch mal versucht, aber sein lassen.
schau mal im MyOS Thread, da hab ich einen link - wenn der noch geht,
der auf mein Projekt verweist.
Vielleicht hilft Dir das erstmal weiter.
11
Lowlevel-Coding / Re: Undefined reference to XXX
« am: 28. November 2012, 17:13 »
an der main.o,
die wird mit libc funktionen aufbereiten.
ctor = C++ constructor's
wenn Du C und C++ code verwendest
12
Lowlevel-Coding / Re: MyOS - CDROM Verzeichnis auslesen
« am: 28. November 2012, 11:16 »
Hallo,

habe da den Source von start.c: , damit nicht das komplette archiv gesaugt werden muss ...
#include "arch.h"
#include "video.h"

#include "k_defines.h"
#include "ints.h"
#include "descriptor.h"
#include "pic.h"

#include "./drivers/mindrvr.h"


void testint(void);

extern int printf(char*,...);
extern int testfat(void);

extern int ticks;
extern int   InitializeMemoryManager(void);

extern short console_cursor_xpos;
extern short console_cursor_ypos;
extern int   console_color_attribut;

#define VK_A 0x1e61
#define VK_B 0x3062
#define VK_C 0x2e63
#define VK_D 0x2064
#define VK_E 0x1265
#define VK_F 0x2166
#define VK_G 0x2267
#define VK_H 0x2368
#define VK_I 0x1769
#define VK_J 0x246a
#define VK_K 0x256b
#define VK_L 0x266c
#define VK_M 0x326d
#define VK_N 0x316e
#define VK_O 0x186f
#define VK_P 0x1970
#define VK_Q 0x1071
#define VK_R 0x1372
#define VK_S 0x1f73
#define VK_T 0x1474
#define VK_U 0x1675
#define VK_V 0x2f76
#define VK_W 0x1177
#define VK_X 0x2d78
#define VK_Y 0x2c7a
#define VK_Z 0x1579

#define VK_BACKSPACE 0xe08
#define VK_RETURN 0x1c0d

#define VK_ESC 0x11b
#define VK_F1 0x3b00
#define VK_F2 0x3c00
#define VK_F3 0x3d00
#define VK_F4 0x3e00
#define VK_F5 0x3f00
#define VK_F6 0x4000
#define VK_F7 0x4100
#define VK_F8 0x4200
#define VK_F9 0x4300
#define VK_F10 0x4400

#define MAXKEYCODES 29

struct {
  unsigned short      keycode;
  unsigned int       extended;
  unsigned int          shift;
  char           *consolecode;
} __attribute__((packed)) GERMAN_KEYBOARD_STRUCT[MAXKEYCODES] = {
   VK_A, 0, 0, "a" ,
   VK_B, 0, 0, "b" ,
   VK_C, 0, 0, "c" ,
   VK_D, 0, 0, "d" ,
   VK_E, 0, 0, "e" ,
   VK_F, 0, 0, "f" ,
   VK_G, 0, 0, "g" ,
   VK_H, 0, 0, "h" ,
   VK_I, 0, 0, "i" ,
   VK_J, 0, 0, "j" ,
   VK_K, 0, 0, "k" ,
   VK_L, 0, 0, "l" ,
   VK_M, 0, 0, "m" ,
   VK_N, 0, 0, "n" ,
   VK_O, 0, 0, "o" ,
   VK_P, 0, 0, "p" ,
   VK_Q, 0, 0, "q" ,
   VK_R, 0, 0, "r" ,
   VK_S, 0, 0, "s" ,
   VK_T, 0, 0, "t" ,
   VK_U, 0, 0, "u" ,
   VK_V, 0, 0, "v" ,
   VK_W, 0, 0, "w" ,
   VK_X, 0, 0, "x" ,
   VK_Y, 0, 0, "y" ,
   VK_Z, 0, 0, "z" ,

   VK_BACKSPACE, 0,0, "\b" ,
   VK_RETURN,    0,0, "\n" ,

   0, 0, 0, "\0"
};

void nl(void)
{
  console_cursor_xpos = 0;
  console_cursor_ypos++;
}

struct CDROM_VolumeDescriptor
{
  unsigned char type;
  char ident[5];
  unsigned char version;
  char desc_type[2041];
} CD_VolumeDescriptor;

struct CDROM_BootRecord
{
  unsigned char type;
  char          ident[5];
  unsigned char version;
  char          sys_ident[32];
  char          boot_ident[32];
  char          boot_res[2048-64-7];
} CD_BootRecord;

struct CDROM_VolumeDescriptorSetTerminator
{
  unsigned char type;
  char ident[5];
  unsigned char version;
  char desc_type[2041];
} CD_VolumeSetTerminator;

struct CDROM_PrimaryVolumeDescriptor {
  unsigned char type;
  char          ident[5];
  unsigned char version;
  unsigned char unused_field_1;
  char          sys_ident[32];
  char          vol_ident[32];
  char          unused_field_2[8];
  int           vol_space_size;
  char          unused_field_3[32];
  int vol_set_size;
  int vol_seq_number;
  int log_block_size;
  int path_table_size;
  int location_L_path_table;
  int location_L_path_table_optional;
  int location_M_path_table;
  int location_M_path_table_optional;
  char root_directory_record[34];
  char volume_set_ident[128];
  char publisher_ident[128];
  char data_preparer_ident[128];
  char application_ident[128];
  char copyright_ident[37];
  char abstract_file_ident[37];
  char bib_file_ident[37];
  char volume_creation_date_time[17];
  char volume_modification_date_time[17];
  char volume_expiration_date_time[17];
  char volume_effective_date_time[17];
  int file_structure_version;
  int reserved_byte;
  char application_use[512];
  char reserved[653];
} CD_PrimaryVolume;

struct CDROM_VolumeTerminator {
  int type;
  char ident[5];
} CD_VolumeTerminator;

struct disk_packet
{
    byte size_pack;
    byte reserved1;
    byte no_of_blocks;
    byte reserved2;
    word offset;
    word segment;
    dword lba1;
    dword lba2;
} disk_pack;

void LBASectorRead(void *buffer, unsigned long lba)
{
    unsigned char bError = 0;
    REGS regs;

    disk_pack.size_pack = 16;
    disk_pack.no_of_blocks = 1;
    disk_pack.reserved1 = 0;
    disk_pack.reserved2 = 0;
    disk_pack.segment = (((unsigned int)buffer >> 16) << 12);
    disk_pack.offset  =  ((unsigned int)buffer & 0xffff);
    disk_pack.lba2 = lba >> 32;
    disk_pack.lba1 = lba & 0xffffffff;

regs.b.ds = (((unsigned int)&disk_pack >> 16) << 12);
regs.b.si =  ((unsigned int)&disk_pack &0xffff);
regs.b.dl = 0x9f;
regs.b.ah = 0x42;
int386(0x13,&regs,&regs);

    //printf("Error: %d\n",regs.b.ah);

}

int testint_flag = 0;

extern void testsector(void);

void BootMain(char *cmd)
{
  REGS regs;
  int i,c,k, pos = 0;
  char line[1024];
  short sx = 0,sy=15;

  //VideoClearScreen(0);
  printf("kaBOX Version 0.1 (c) 2005 Jens Kallup"); nl();
  printf("BETA-Version!"); nl(); nl();

  if (InitializeMemoryManager() == 0) {
    printf("Drücken Sie eine Taste zum Neustart des Computers.");  nl();
    ConsoleGetChar();
    VideoClearScreen(0);
    return;
  }

  //RunLoader();

  nl();
  //printf("1. --> %d\n", testint_flag);
  //int386(0x21,&regs,&regs);
  //printf("2. --> %d\n", testint_flag);

  nl();  // printf("ret from int 21"); nl();

  console_cursor_ypos = 15;

  {
//static unsigned char buffer[2048] = { 0 };
    //LBASectorRead(buffer,16);

LBASectorRead(&CD_VolumeDescriptor,16);
        CD_VolumeDescriptor.ident[5] = '\0';
printf(CD_VolumeDescriptor.ident);
nl();
if (CD_VolumeDescriptor.version == 0)
printf("CDVD: Boot Record.");
nl();


LBASectorRead(&CD_BootRecord,17);
CD_BootRecord.ident[5] = '\0';
printf(CD_BootRecord.ident); nl();
printf(CD_BootRecord.sys_ident); nl();
printf(CD_BootRecord.boot_ident); nl();


LBASectorRead(&CD_VolumeSetTerminator,18);
CD_VolumeTerminator.ident[5] = '\0';
printf(CD_BootRecord.ident); nl();
        printf("-----------"); nl();


LBASectorRead(&CD_PrimaryVolume,19);
CD_PrimaryVolume.ident[5] = '\0';
printf(CD_PrimaryVolume.ident); nl();


LBASectorRead(&CD_VolumeTerminator,20);
CD_VolumeTerminator.ident[5] = '\0';
printf(CD_VolumeTerminator.ident); nl();

  }

  nl();
  //printf("System erfolgreich geladen, bereit fuer Eingabe(n):>");
  nl(); nl();

  for (;;)
  {
    anfang:
    c = ConsoleGetChar();

    if ((c == VK_W)) {
      printf("ein w\n");
//int i = 0;
//int a = 2 / i;
printf("--> %d\n",c);

    }

    sx = console_cursor_xpos;
    sy = console_cursor_ypos;

    VideoGotoXY(50, 0);    printf("                       ");
    VideoGotoXY(50, 0);    printf("kcode: 0x%5x",c);
    VideoGotoXY(sx,sy);

    if (c == VK_BACKSPACE)
    {
      console_cursor_xpos--;

      if (console_cursor_xpos <= -1) {
        console_cursor_xpos = 79;
        console_cursor_ypos--;
      }

      if (console_cursor_ypos <= 0) {
        console_cursor_xpos = 0;
        console_cursor_ypos = 0;
      }

      VideoPutChar('_',console_color_attribut,console_cursor_xpos, console_cursor_ypos);
      VideoPutChar(' ',console_color_attribut,console_cursor_xpos+1, console_cursor_ypos);
      VideoGotoXY(console_cursor_xpos,console_cursor_ypos);
      goto anfang;
    }
    else if (c == VK_RETURN) {
      VideoGotoXY(0,++console_cursor_ypos);
      printf(":>_");
      VideoGotoXY(--console_cursor_xpos,console_cursor_ypos);
      goto anfang;
    }

    for (i = 0; i < sizeof(GERMAN_KEYBOARD_STRUCT); i++)
    {
      if (GERMAN_KEYBOARD_STRUCT[i].keycode == c) {
        printf("%s",GERMAN_KEYBOARD_STRUCT[i].consolecode);
        VideoPutChar('_',console_color_attribut,console_cursor_xpos, console_cursor_ypos);
      }
    }
  }
}

/*
 * Print only supports a-z and 0-9 and other keyboard characters
 */
void print(char *msg, unsigned int line)
{
char *vidmem = (char *)0xB8000;
    unsigned int i = line*80*2, color = 0x07;



while(*msg != 0)
{  
  vidmem[i] = *msg;
  i++;
  vidmem[i] = color;
  i++;
  *msg++;
}
}

void testint(void)
{
  print("TEST INT CALLED\n\n",10);
}

irgendwas stimmt da noch nicht mit den sectors.
13
Lowlevel-Coding / Re: MyOS - CDROM Verzeichnis auslesen
« am: 27. November 2012, 20:22 »
Hallo,

so, nun bin ich soweit, das ich einige Header ausgelesen habe:

http://www22.zippyshare.com/v/32161655/file.html

siehe Source: start.c

Aber ich weiss nicht, ob das so richtig ist.
kann da mal einer mal ein Auge drauf werfen?

reichen die Header oder müssen zusätzliche ausgelesen werden?
Danke
14
Lowlevel-Coding / Re: MyOS - CDROM Verzeichnis auslesen
« am: 27. November 2012, 12:37 »
Hallo kevin,

das CD-Laufwerk kann ich ja ansprechen.
Sektoren auslesen geht auch schon recht gut - siehe source: start.c

aber halt das Verzeichnis aulesen nicht.
Bin halt noch recht neu in der Programmierung.

Gruß
15
Lowlevel-Coding / Re: MyOS - CDROM Verzeichnis auslesen
« am: 27. November 2012, 09:25 »
Hallo,

ich habe keine Idee/Plan wie man ein Joilet CD-ROM FS ausliest.
Also es fehlen mir Kentnisse in der Implementierung von den Funktionen: read und fseek - write fällt ja aus.
Desweitereren würde ich gerne eine Festplatte ansprechen so als FAT32 oder so, aber wie gesagt,
da fehlt mir die Kenntnis.

Gruß
16
Lowlevel-Coding / MyOS - CDROM Verzeichnis auslesen
« am: 26. November 2012, 22:47 »
Hallo,

hier der Source und das Image(ISO) von MyOS.
Im Moment stecke ich am Auslesen der Verzeichnisse der CDROM fest.
Kann da einer Helfen?

Hier der Link

http://www1.zippyshare.com/v/27224402/file.html

Kompiliert mit MinGW (win32 - XP)
Getestet unter VM Ware Player

Danke
Seiten: [1]

Einloggen