Browse Source

Lost work

pull/2/head
Jørn Guldberg 4 years ago
parent
commit
8adca8f575
6 changed files with 172 additions and 164 deletions
  1. BIN
      disk.out
  2. +1
    -1
      driver/disk.h
  3. +5
    -5
      implementation/lsfs.c
  4. +15
    -10
      main.c
  5. +6
    -5
      main.h
  6. +145
    -143
      main.s

BIN
disk.out View File


+ 1
- 1
driver/disk.h View File

@ -9,7 +9,7 @@ unsigned int data_buffer_segment;
{
#asm
#define index 4[bp]; // Note that this is a 32-bit argument.
#define index 4[bp]; /* Note that this is a 32-bit argument. */
#define number_sectors 8[bp];
#define data_buffer 12[bp];
#define data_buffer_segment 14[bp];

+ 5
- 5
implementation/lsfs.c View File

@ -43,7 +43,7 @@ short drop_filename;
String_Array *split_path;
Directory_Table *dir_table = calloc(1, sizeof(Directory_Table));
/* printf("Table index: %lu \n",fsci.master_table_index ); */
disk_service_read_data_from_disk(fsci.master_table_index[0], DEFAULT_TABLE_SIZE, dir_table, 0x7e0);
disk_service_read_data_from_disk(fsci.master_table_index[0], DEFAULT_TABLE_SIZE, dir_table, 0x50);
split_path = string_split_c(path, '/', false);
number_of_traversal = split_path->length;
@ -118,10 +118,10 @@ unsigned int data_segment;
{
break;
}
disk_service_read_data_from_disk(file->data_pointer[data_pointer_index], DEFAULT_DATA_POINTER_SIZE, tmp_buffer, 0x7e0);
disk_service_read_data_from_disk(file->data_pointer[data_pointer_index], DEFAULT_DATA_POINTER_SIZE, tmp_buffer, 0x50);
print_newline();
print_newline();
memcpy((data + amount_read), data_segment, tmp_buffer, 0x7e0, amount_to_read);
memcpy((data + amount_read), data_segment, tmp_buffer, 0x50, amount_to_read);
data_length -= amount_to_read;
amount_read += amount_to_read;
data_pointer_index = data_pointer_index + 2; /* Rember that we only use 32-bit, and thats why we jump to at a time*/
@ -141,9 +141,9 @@ unsigned int data_segment;
amount_to_read = ((DEFAULT_DATA_POINTER_SIZE * SECTOR_SIZE) - remaining_offset);
}
disk_service_read_data_from_disk(file->data_pointer[data_pointer_index], DEFAULT_DATA_POINTER_SIZE, tmp_buffer, 0x7e0);
disk_service_read_data_from_disk(file->data_pointer[data_pointer_index], DEFAULT_DATA_POINTER_SIZE, tmp_buffer, 0x50);
memcpy(data, data_segment, (tmp_buffer + remaining_offset), 0x7e0, amount_to_read);
memcpy(data, data_segment, (tmp_buffer + remaining_offset), 0x50, amount_to_read);
data_length -= amount_to_read;
amount_read += amount_to_read;
remaining_offset -= amount_to_read;

+ 15
- 10
main.c View File

@ -13,7 +13,7 @@ void* pointer_parameter_struct;
Service_Action service_action;
Directory_Table current_table;
Parameter_Struct parameter_struct;
int local_segment = 0x7e0;
int local_segment = 0x50;
unsigned int heap_start = 0x2200;
unsigned int heap_end = 0xffff;
int stack_segment = 0x8fc0;
@ -80,16 +80,13 @@ void* pointer_parameter_struct;
find_file = calloc(sizeof(lsfs_file), 1);
lsfs_disk_getattr(find_file, local_path, fsci);
print_newline();
print("Loding SingOS kernel: ");
print(find_file->filename);
print("Buffer_address: ");
dump_ax(parameter_struct.buffer_address);
print_newline();
print("Kernel file id: ");
print_newline();
print("Kernel file size: ");
print_newline();
print("Kernel first data pointer: ");
print("Buffer_segmnent: ");
dump_ax(parameter_struct.buffer_segment);
lsfs_disk_read_data_from_file(find_file, 0xffff, 0x00, (long) 0x0, 0x50);
lsfs_disk_read_data_from_file(find_file, parameter_struct.buffer_size, parameter_struct.buffer_address, (long) 0x0, parameter_struct.buffer_segment);
} break;
@ -110,9 +107,17 @@ void* pointer_parameter_struct;
{
print("Hit WRITE case");
} break;
case SERIVCE_WRITE_FS_INFO:
{
print_newline();
print(fsci->filesystem_information);
print_newline();
} break;
default:
{
print("Default case");
print("Default case: ");
dump_ax(service_action);
}
}

+ 6
- 5
main.h View File

@ -38,6 +38,7 @@ typedef enum Service_Action
SERVICE_FIND_ENTRY = 2,
SERIVCE_READ_DATA = 3,
SERIVCE_WRITE_DATA = 4,
SERIVCE_WRITE_FS_INFO = 10,
} Service_Action;
@ -61,11 +62,11 @@ struct Parameter_Struct
{
char* path;
char* new_path;
int buffer_segment;
int buffer_address;
int buffer_size;
int data_length;
int byte_offset_into_file;
unsigned int buffer_segment;
unsigned int buffer_address;
unsigned int buffer_size;
unsigned int data_length;
unsigned int byte_offset_into_file;
short entry_kind;
};

+ 145
- 143
main.s View File

@ -1422,10 +1422,7 @@ _disk_service_read_data_from_disk.data_buffer set $A
_disk_service_read_data_from_disk.number_sectors set 6
_disk_service_read_data_from_disk.data_buffer_segment set $C
_disk_service_read_data_from_disk.index set 2
! 13 define number_sectors 8[bp];
! 12 16
push bp
mov bp,sp
@ -1489,59 +1486,60 @@ ret
! 38 SERVICE_FIND_ENTRY = 2,
! 39 SERIVCE_READ_DATA = 3,
! 40 SERIVCE_WRITE_DATA = 4,
! 41
! 42 } Service_Action;
! 41 SERIVCE_WRITE_FS_INFO = 10,
! 42
! 43 } Service_Action;
!BCC_EOS
! 43
! 44 struct File_System_Control_Information
! 45 {
! 46 char filesystem_information[256];
! 44
! 45 struct File_System_Control_Information
! 46 {
! 47 char filesystem_information[256];
!BCC_EOS
! 47 long master_table_index[2];
! 48 long master_table_index[2];
!BCC_EOS
! 48 long this_partition_offset_on_disk[2];
! 49 long this_partition_offset_on_disk[2];
!BCC_EOS
! 49 long next_free_sector[2
! 49 ];
! 50 long next_free_sector[2];
!BCC_EOS
! 50 long next_uniqe_id[2];
! 51
! 51 long next_uniqe_id[2];
!BCC_EOS
! 51 long next_sector_reuse_pointer[2];
! 52 long next_sector_reuse_pointer[2];
!BCC_EOS
! 52 long last_sector_index_on_partition[2];
! 53 long last_sector_index_on_partition[2];
!BCC_EOS
! 53 long maximum_sectors_on_disk[2];
! 54 long maximum_sectors_on_disk[2];
!BCC_EOS
! 54 long sector_size_on_disk[2];
! 55 long sector_size_on_disk[2];
!BCC_EOS
! 55 long not_used[48];
! 56 long not_used[48];
!BCC_EOS
! 56
! 57 };
! 57
! 58 };
!BCC_EOS
! 58
! 59
! 60 struct Parameter_Struct
! 61 {
! 62 char* path;
! 60
! 61 struct Parameter_Struct
! 62 {
! 63 char* path;
!BCC_EOS
! 63 char* new_path;
! 64 char* new_path;
!BCC_EOS
! 64 int buffer_segment;
! 65 unsigned int buffer_segment;
!BCC_EOS
! 65 int buffer_address;
! 66 unsigned int buffer_address;
!BCC_EOS
! 66 int buffer_size;
! 67 unsigned int buffer_size;
!BCC_EOS
! 67 int data_length;
! 68 unsigned int data_length;
!BCC_EOS
! 68 int byte_offset_into_file;
! 69 unsigned int byte_offset_into_file;
!BCC_EOS
! 69 short entry_kind;
! 70 short entry_kind;
!BCC_EOS
! 70 };
! 71 };
!BCC_EOS
! 71 # 6 "implementation/lsfs.h"
! 72 # 6 "implementation/lsfs.h"
! 6 typedef struct lsfs_file lsfs_file;
!BCC_EOS
! 7 typedef struct Directory_Table Directory_Table;
@ -1681,10 +1679,10 @@ mov -$A[bp],bx
!BCC_EOS
! 83
! 84
! 85 Directory_Table *dir_table = lsfs_find_directory(pa
! 85 Directory
! 85 _Table *dir_table = lsfs_find_directory(path, 1 , fsci);
dec sp
dec sp
! 85 th, 1 , fsci);
! Debug: list * struct File_System_Control_Information fsci = [S+$E+6] (used reg = )
push 8[bp]
! Debug: list int = const 1 (used reg = )
@ -2144,8 +2142,9 @@ mov -6[bp],ax
! 146 }
! 147
! 148
! 149 for (i = 0; i < number_of_traversal; ++i)
! 149 for (i =
.38:
! 149 0; i < number_of_traversal; ++i)
! Debug: eq int = const 0 to int i = [S+$10-$A] (used reg = )
xor ax,ax
mov -8[bp],ax
@ -2154,8 +2153,7 @@ mov -8[bp],ax
! 150 {
br .3C
.3D:
! 151
! 151 for (j = 0; j < 16 ; ++j)
! 151 for (j = 0; j < 16 ; ++j)
! Debug: eq int = const 0 to int j = [S+$10-$C] (used reg = )
xor ax,ax
mov -$A[bp],ax
@ -2520,6 +2518,7 @@ br .4A
call _print_newline
!BCC_EOS
! 225 dump_ax(file->data_pointer[data_pointer_index]);
! 225
mov bx,4[bp]
! Debug: ptradd int data_pointer_index = [S+$1A-$18] to [$36] long = bx+$44 (used reg = )
mov ax,-$16[bp]
@ -2537,8 +2536,7 @@ add sp,*4
! Debug: func () void = print_newline+0 (used reg = )
call _print_newline
!BCC_EOS
! 227
! 227 next_data = data + amount_read;
! 227 next_data = data + amount_read;
! Debug: ptradd unsigned int amount_read = [S+$1A-$10] to * char data = [S+$1A+6] (used reg = )
mov ax,-$E[bp]
add ax,8[bp]
@ -2802,14 +2800,14 @@ _main:
!BCC_EOS
! 15 Parameter_Struct parameter_struct;
!BCC_EOS
! 16 int local_segment = 0x7e0;
! 16 int local_segment = 0x50;
push bp
mov bp,sp
push di
push si
add sp,#-$2014
! Debug: eq int = const $7E0 to int local_segment = [S+$201A-$201A] (used reg = )
mov ax,#$7E0
! Debug: eq int = const $50 to int local_segment = [S+$201A-$201A] (used reg = )
mov ax,*$50
mov -$2018[bp],ax
!BCC_EOS
! 17 unsigned int heap_start = 0x2200;
@ -2864,12 +2862,12 @@ mov ax,4[bp]
mov -6[bp],ax
!BCC_EOS
! 26
! 27
! 27 switch (service_action)
mov ax,-6[bp]
! 28 {
br .5E
! 29
! 29 case SERIVCE_LOAD_DISK:
! 29 case SERIVCE_LOAD_DISK:
! 30 {
.5F:
! 31
@ -3149,7 +3147,7 @@ add sp,*6
! Debug: func () void = print_newline+0 (used reg = )
call _print_newline
!BCC_EOS
! 83 print("Loding SingOS kernel: ");
! 83 print("Buffer_address: ");
! Debug: list * char = .67+0 (used reg = )
mov bx,#.67
push bx
@ -3158,12 +3156,11 @@ call _print
inc sp
inc sp
!BCC_EOS
! 84 print(find_file->filename);
mov bx,-$202C[bp]
! Debug: list * char = [bx+$12] (used reg = )
push $12[bx]
! Debug: func () void = print+0 (used reg = )
call _print
! 84 dump_ax(parameter_struct.buffer_address);
! Debug: list unsigned int parameter_struct = [S+$2030-$2012] (used reg = )
push -$2010[bp]
! Debug: func () void = dump_ax+0 (used reg = )
call _dump_ax
inc sp
inc sp
!BCC_EOS
@ -3171,7 +3168,7 @@ inc sp
! Debug: func () void = print_newline+0 (used reg = )
call _print_newline
!BCC_EOS
! 86 print("Kernel file id: ");
! 86 print("Buffer_segmnent: ");
! Debug: list * char = .68+0 (used reg = )
mov bx,#.68
push bx
@ -3180,66 +3177,60 @@ call _print
inc sp
inc sp
!BCC_EOS
! 87 print_newline();
! Debug: func () void = print_newline+0 (used reg = )
call _print_newline
!BCC_EOS
! 88 print("Kernel file size: ");
! Debug: list * char = .69+0 (used reg = )
mov bx,#.69
push bx
! Debug: func () void = print+0 (used reg = )
call _print
inc sp
inc sp
!BCC_EOS
! 89 print_newline();
! Debug: func () void = print_newline+0 (used reg = )
call _print_newline
!BCC_EOS
! 90 print("Kernel first data pointer: ");
! Debug: list * char = .6A+0 (used reg = )
mov bx,#.6A
push bx
! Debug: func () void = print+0 (used reg = )
call _print
! 87 dump_ax(parameter_struct.buffer_segment);
! Debug: list unsigned int parameter_struct = [S+$2030-$2014] (used reg = )
push -$2012[bp]
! Debug: func () void = dump_ax+0 (used reg = )
call _dump_ax
inc sp
inc sp
!BCC_EOS
! 91
! 92 lsfs_disk_read_data_from_file(find_file, 0xffff, 0x
! 92 00, (long) 0x0, 0x50);
! Debug: list int = const $50 (used reg = )
mov ax,*$50
push ax
! 88
! 89 lsfs_disk_read_data_from_file(find_file, parameter_struct.buffer_size, parameter_struct.buffer_a
! 89 ddress, (long) 0x0, parameter_struct.buffer_segment);
! Debug: list unsigned int parameter_struct = [S+$2030-$2014] (used reg = )
push -$2012[bp]
! Debug: list long = const 0 (used reg = )
xor ax,ax
xor bx,bx
push bx
push ax
! Debug: list int = const 0 (used reg = )
xor ax,ax
push ax
! Debug: list unsigned int = const $FFFF (used reg = )
mov ax,#$FFFF
push ax
! Debug: list unsigned int parameter_struct = [S+$2036-$2012] (used reg = )
push -$2010[bp]
! Debug: list unsigned int parameter_struct = [S+$2038-$2010] (used reg = )
push -$200E[bp]
! Debug: list * struct lsfs_file find_file = [S+$203A-$202E] (used reg = )
push -$202C[bp]
! Debug: func () int = lsfs_disk_read_data_from_file+0 (used reg = )
call _lsfs_disk_read_data_from_file
add sp,*$C
!BCC_EOS
! 93
! 94
! 95 } break;
! 90
! 91
! 92 } break;
jmp .5C
!BCC_EOS
! 93 case SERIVCE_READ_DATA:
! 94 {
.69:
! 95 # 103
! 103
! 104 print("Hit READ case");
! Debug: list * char = .6A+0 (used reg = )
mov bx,#.6A
push bx
! Debug: func () void = print+0 (used reg = )
call _print
inc sp
inc sp
!BCC_EOS
! 105 } break;
jmp .5C
!BCC_EOS
! 96 case SERIVCE_READ_DATA:
! 97 {
! 106 case SERIVCE_WRITE_DATA:
! 107 {
.6B:
! 98 # 106
! 106
! 107 print("Hit READ case");
! 108 print("Hit WRITE case");
! Debug: list * char = .6C+0 (used reg = )
mov bx,#.6C
push bx
@ -3248,40 +3239,57 @@ call _print
inc sp
inc sp
!BCC_EOS
! 108 } break;
! 109 } break;
jmp .5C
!BCC_EOS
! 109 case SERIVCE_WRITE_DATA:
! 110 {
! 110 case SERIVCE_WRITE_FS_INFO:
! 111 {
.6D:
! 111 print("Hit WRITE case");
! Debug: list * char = .6E+0 (used reg = )
mov bx,#.6E
push bx
! 112 print_newline();
! Debug: func () void = print_newline+0 (used reg = )
call _print_newline
!BCC_EOS
! 113 print(fsci->filesystem_information);
! Debug: cast * char = const 0 to [$100] char fsci = [S+$202A-$202A] (used reg = )
! Debug: list * char fsci = [S+$202A-$202A] (used reg = )
push -$2028[bp]
! Debug: func () void = print+0 (used reg = )
call _print
inc sp
inc sp
!BCC_EOS
! 112 } break;
! 114 print_newline();
! Debug: func () void = print_newline+0 (used reg = )
call _print_newline
!BCC_EOS
! 115 } break;
jmp .5C
!BCC_EOS
! 113 default:
! 114 {
.6F:
! 115 print("Default case");
! Debug: list * char = .70+0 (used reg = )
mov bx,#.70
! 116
! 117 default:
! 118 {
.6E:
! 119 print("Default case: ");
! Debug: list * char = .6F+0 (used reg = )
mov bx,#.6F
push bx
! Debug: func () void = print+0 (used reg = )
call _print
inc sp
inc sp
!BCC_EOS
! 116 }
! 117 }
! 118
! 119 return 0;
! 120 dump_ax(service_action);
! Debug: list int service_action = [S+$202A-8] (used reg = )
push -6[bp]
! Debug: func () void = dump_ax+0 (used reg = )
call _dump_ax
inc sp
inc sp
!BCC_EOS
! 121 }
! 122 }
! 123
! 124 return 0;
jmp .5C
.5E:
add sp,*-6
@ -3290,10 +3298,12 @@ beq .5F
sub ax,*1
beq .61
sub ax,*1
je .6B
je .69
sub ax,*1
je .6B
sub ax,*6
je .6D
jmp .6F
jmp .6E
.5C:
..FFFF = -$2030
add sp,*6
@ -3304,52 +3314,44 @@ pop di
pop bp
ret
!BCC_EOS
! 120
! 121 }
! 122
! 125
! 126 }
! 127
! Register BX used in function main
.6F:
.70:
.71:
.ascii "Default case"
.byte 0
.6E:
.72:
.ascii "Hit WRITE case"
.ascii "Default case: "
.byte 0
.6C:
.73:
.ascii "Hit READ case"
.71:
.ascii "Hit WRITE case"
.byte 0
.6A:
.74:
.ascii "Kernel first data pointer: "
.byte 0
.69:
.75:
.ascii "Kernel file size: "
.72:
.ascii "Hit READ case"
.byte 0
.68:
.76:
.ascii "Kernel file id: "
.73:
.ascii "Buffer_segmnent: "
.byte 0
.67:
.77:
.ascii "Loding SingOS kernel: "
.74:
.ascii "Buffer_address: "
.byte 0
.60:
.78:
.75:
.ascii "File System has been loaded: "
.byte 0
.43:
.79:
.76:
.ascii "vs "
.byte 0
.42:
.7A:
.77:
.ascii "New: "
.byte 0
.2E:
.7B:
.78:
.ascii "Size of table_entry: "
.byte 0
.bss

Loading…
Cancel
Save