diff --git a/build.sh b/build.sh index 6ef7f99..ff0fdde 100644 --- a/build.sh +++ b/build.sh @@ -1,4 +1,4 @@ -bcc -S main.c -o main.s +brucecc -S main.c -o main.s echo -e "push bp mov bp,sp push 10[bp] diff --git a/disk.out b/disk.out index 2f3f9d1..1d39b62 100644 Binary files a/disk.out and b/disk.out differ diff --git a/implementation/lsfs.c b/implementation/lsfs.c index bd25d41..72a3f45 100644 --- a/implementation/lsfs.c +++ b/implementation/lsfs.c @@ -119,8 +119,8 @@ unsigned int data_segment; break; } disk_service_read_data_from_disk(file->data_pointer[data_pointer_index], DEFAULT_DATA_POINTER_SIZE, tmp_buffer, 0x50); - print_newline(); - print_newline(); + /* print_newline(); */ + /* print_newline(); */ memcpy((data + amount_read), data_segment, tmp_buffer, 0x50, amount_to_read); data_length -= amount_to_read; amount_read += amount_to_read; diff --git a/lsfs.bin b/lsfs.bin new file mode 100644 index 0000000..1c583f0 Binary files /dev/null and b/lsfs.bin differ diff --git a/main.c b/main.c index 1abcb34..d505b48 100644 --- a/main.c +++ b/main.c @@ -36,10 +36,7 @@ void* pointer_parameter_struct; index_as_long = pointer_parameter_struct; disk_service_read_data_from_disk(index_as_long, (long) 1, fsci, local_segment); print("File System has been loaded: "); - print_newline(); print(fsci->filesystem_information); - print_newline(); - print_newline(); } break; case SERVICE_FIND_ENTRY: { @@ -67,22 +64,25 @@ void* pointer_parameter_struct; path_array = string_split_c(local_path, '/', 0); - print_newline(); - print_newline(); + /* print_newline(); */ + /* print_newline(); */ for (i = 0; i < path_array->length; ++i) { print(path_array->strings[i]->chars); - print_newline(); + /* print_newline(); */ } - print_newline(); - print_newline(); + /* print_newline(); */ + /* print_newline(); */ find_file = calloc(sizeof(lsfs_file), 1); - lsfs_disk_getattr(find_file, local_path, fsci); - print_newline(); + if ( !lsfs_disk_getattr(find_file, local_path, fsci) ) + { + print("File not found"); + } + /* print_newline(); */ print("Buffer_address: "); dump_ax(parameter_struct.buffer_address); - print_newline(); + /* print_newline(); */ print("Buffer_segmnent: "); dump_ax(parameter_struct.buffer_segment); @@ -109,9 +109,9 @@ void* pointer_parameter_struct; } break; case SERIVCE_WRITE_FS_INFO: { - print_newline(); + /* print_newline(); */ print(fsci->filesystem_information); - print_newline(); + /* print_newline(); */ } break; default: diff --git a/main.h b/main.h index a371b4c..9d81891 100644 --- a/main.h +++ b/main.h @@ -4,15 +4,15 @@ #define false 0 #define true 1 -#define SPACE_MBR_RECORD 2048 /* Sectors*/ -#define SPACE_VBR_RECORD 2048 /* Sectors*/ +#define SPACE_MBR_RECORD 32 /* 2048 */ /* Sectors*/ +#define SPACE_VBR_RECORD 32 /*2048*/ /* Sectors*/ #define SIZE_FSCI_RECORD 1 /* Sectors*/ #define DEFAULT_ENTRY_SIZE 1 /* Sectors*/ #define SECTOR_SIZE 512 /* BYTES*/ #define NUMBER_OF_MBR_PARTITIONS 4 #define DEFAULT_FILE_SIZE 8 /* This is in sectors*/ #define DEFAULT_DATA_POINTER_SIZE 8 /* This is in sectors*/ -#define DEFAULT_TABLE_SIZE 16 +#define DEFAULT_TABLE_SIZE 8 /*16*/ #define NUM_DATA_POINTERS 27 #include "std_singos/stdio.h" diff --git a/main.s b/main.s index ce7b8ad..94dcd41 100644 --- a/main.s +++ b/main.s @@ -1622,7 +1622,7 @@ ret ! 52 ! 53 struct Directory_Table ! 54 { -! 55 Table_Entry entries[16 ]; +! 55 Table_Entry entries[8 ]; !BCC_EOS ! 56 ! 57 }; @@ -1697,7 +1697,7 @@ add sp,*6 mov -$C[bp],ax !BCC_EOS ! 86 -! 87 for (i = 0; i < 16 ; i++) +! 87 for (i = 0; i < 8 ; i++) ! Debug: eq int = const 0 to int i = [S+$E-8] (used reg = ) xor ax,ax mov -6[bp],ax @@ -1711,7 +1711,7 @@ br .2C ! 90 print(dir_table->entries[i].filename); dec sp dec sp -! Debug: ptradd int i = [S+$10-8] to [$10] struct Table_Entry dir_table = [S+$10-$E] (used reg = ) +! Debug: ptradd int i = [S+$10-8] to [8] struct Table_Entry dir_table = [S+$10-$E] (used reg = ) mov ax,-6[bp] mov cx,#$200 imul cx @@ -1769,7 +1769,7 @@ call _print_newline call _print_newline !BCC_EOS ! 98 if(strcmp( filename->chars, dir_table->entries[i].filename ) == 0) { -! Debug: ptradd int i = [S+$10-8] to [$10] struct Table_Entry dir_table = [S+$10-$E] (used reg = ) +! Debug: ptradd int i = [S+$10-8] to [8] struct Table_Entry dir_table = [S+$10-$E] (used reg = ) mov ax,-6[bp] mov cx,#$200 imul cx @@ -1789,7 +1789,7 @@ test ax,ax bne .2F .30: ! 99 find_file->file_id[0] = dir_table->entries[i].file_id[0]; -! Debug: ptradd int i = [S+$10-8] to [$10] struct Table_Entry dir_table = [S+$10-$E] (used reg = ) +! Debug: ptradd int i = [S+$10-8] to [8] struct Table_Entry dir_table = [S+$10-$E] (used reg = ) mov ax,-6[bp] mov cx,#$200 imul cx @@ -1805,7 +1805,7 @@ mov [si],ax mov 2[si],bx !BCC_EOS ! 100 find_file->entry_kind = dir_table->entries[i].entry_kind; -! Debug: ptradd int i = [S+$10-8] to [$10] struct Table_Entry dir_table = [S+$10-$E] (used reg = ) +! Debug: ptradd int i = [S+$10-8] to [8] struct Table_Entry dir_table = [S+$10-$E] (used reg = ) mov ax,-6[bp] mov cx,#$200 imul cx @@ -1827,7 +1827,7 @@ mov 8[bx],ax mov $A[bx],si !BCC_EOS ! 102 find_file->filename = dir_table->entries[i].filename; -! Debug: ptradd int i = [S+$10-8] to [$10] struct Table_Entry dir_table = [S+$10-$E] (used reg = ) +! Debug: ptradd int i = [S+$10-8] to [8] struct Table_Entry dir_table = [S+$10-$E] (used reg = ) mov ax,-6[bp] mov cx,#$200 imul cx @@ -1838,7 +1838,7 @@ mov si,4[bp] mov $12[si],bx !BCC_EOS ! 103 find_file->table_entry_sector_index[0] = dir_table->entries[i].table_entry_sector_index; -! Debug: ptradd int i = [S+$10-8] to [$10] struct Table_Entry dir_table = [S+$10-$E] (used reg = ) +! Debug: ptradd int i = [S+$10-8] to [8] struct Table_Entry dir_table = [S+$10-$E] (used reg = ) mov ax,-6[bp] mov cx,#$200 imul cx @@ -1862,7 +1862,7 @@ mov $14[bx],ax mov $16[bx],si !BCC_EOS ! 105 find_file->size[0] = dir_table->entries[i].file_size[0]; -! Debug: ptradd int i = [S+$10-8] to [$10] struct Table_Entry dir_table = [S+$10-$E] (used reg = ) +! Debug: ptradd int i = [S+$10-8] to [8] struct Table_Entry dir_table = [S+$10-$E] (used reg = ) mov ax,-6[bp] mov cx,#$200 imul cx @@ -1905,7 +1905,7 @@ mov $30[bx],ax mov $32[bx],si !BCC_EOS ! 109 dump_ax(dir_table->entries[i].data_pointer[0]); -! Debug: ptradd int i = [S+$10-8] to [$10] struct Table_Entry dir_table = [S+$10-$E] (used reg = ) +! Debug: ptradd int i = [S+$10-8] to [8] struct Table_Entry dir_table = [S+$10-$E] (used reg = ) mov ax,-6[bp] mov cx,#$200 imul cx @@ -1930,7 +1930,7 @@ mov -$E[bp],ax jmp .34 .35: ! 113 find_file->data_pointer[j] = dir_table->entries[i].data_pointer[j]; -! Debug: ptradd int i = [S+$10-8] to [$10] struct Table_Entry dir_table = [S+$10-$E] (used reg = ) +! Debug: ptradd int i = [S+$10-8] to [8] struct Table_Entry dir_table = [S+$10-$E] (used reg = ) mov ax,-6[bp] mov cx,#$200 imul cx @@ -2012,9 +2012,9 @@ mov ax,-6[bp] inc ax mov -6[bp],ax .2C: -! Debug: lt int = const $10 to int i = [S+$E-8] (used reg = ) +! Debug: lt int = const 8 to int i = [S+$E-8] (used reg = ) mov ax,-6[bp] -cmp ax,*$10 +cmp ax,*8 blt .2D .37: .2A: @@ -2050,8 +2050,8 @@ mov bp,sp push di push si add sp,*-$A -! Debug: list int = const $2000 (used reg = ) -mov ax,#$2000 +! Debug: list int = const $1000 (used reg = ) +mov ax,#$1000 push ax ! Debug: list int = const 1 (used reg = ) mov ax,*1 @@ -2073,14 +2073,14 @@ push $100[bx] call _dump_ax add sp,*4 !BCC_EOS -! 136 disk_service_read_data_from_disk(fsci->master_table_index[0], (long) 16 , dir_table, 0x7e0); +! 136 disk_service_read_data_from_disk(fsci->master_table_index[0], (long) 8 , dir_table, 0x7e0); ! Debug: list int = const $7E0 (used reg = ) mov ax,#$7E0 push ax ! Debug: list * struct Directory_Table dir_table = [S+$12-$10] (used reg = ) push -$E[bp] -! Debug: list long = const $10 (used reg = ) -mov ax,*$10 +! Debug: list long = const 8 (used reg = ) +mov ax,*8 xor bx,bx push bx push ax @@ -2094,7 +2094,7 @@ call _disk_service_read_data_from_disk add sp,*$C !BCC_EOS ! 137 print(dir_table->entries[0].filename); -! Debug: ptradd int = const 0 to [$10] struct Table_Entry dir_table = [S+$10-$10] (used reg = ) +! Debug: ptradd int = const 0 to [8] struct Table_Entry dir_table = [S+$10-$10] (used reg = ) ! Debug: cast * char = const 0 to [$100] char dir_table = [S+$10-$10] (used reg = ) ! Debug: list * char dir_table = [S+$10-$10] (used reg = ) push -$E[bp] @@ -2153,7 +2153,7 @@ mov -8[bp],ax ! 150 { br .3C .3D: -! 151 for (j = 0; j < 16 ; ++j) +! 151 for (j = 0; j < 8 ; ++j) ! Debug: eq int = const 0 to int j = [S+$10-$C] (used reg = ) xor ax,ax mov -$A[bp],ax @@ -2176,7 +2176,7 @@ inc sp inc sp !BCC_EOS ! 155 print(dir_table->entries[j].filename); -! Debug: ptradd int j = [S+$10-$C] to [$10] struct Table_Entry dir_table = [S+$10-$10] (used reg = ) +! Debug: ptradd int j = [S+$10-$C] to [8] struct Table_Entry dir_table = [S+$10-$10] (used reg = ) mov ax,-$A[bp] mov cx,#$200 imul cx @@ -2228,7 +2228,7 @@ mov bx,ax mov bx,[bx] ! Debug: list * char = [bx+4] (used reg = ) push 4[bx] -! Debug: ptradd int j = [S+$12-$C] to [$10] struct Table_Entry dir_table = [S+$12-$10] (used reg = ) +! Debug: ptradd int j = [S+$12-$C] to [8] struct Table_Entry dir_table = [S+$12-$10] (used reg = ) mov ax,-$A[bp] mov cx,#$200 imul cx @@ -2247,7 +2247,7 @@ jne .44 ! 160 { ! 161 long index_sector = dir_table->entries[j].data_pointer[0]; add sp,*-4 -! Debug: ptradd int j = [S+$14-$C] to [$10] struct Table_Entry dir_table = [S+$14-$10] (used reg = ) +! Debug: ptradd int j = [S+$14-$C] to [8] struct Table_Entry dir_table = [S+$14-$10] (used reg = ) mov ax,-$A[bp] mov cx,#$200 imul cx @@ -2270,14 +2270,14 @@ push -$12[bp] call _dump_ax add sp,*4 !BCC_EOS -! 165 disk_service_read_data_from_disk(index_sector, (long) 16 , dir_table, 0x7e0); +! 165 disk_service_read_data_from_disk(index_sector, (long) 8 , dir_table, 0x7e0); ! Debug: list int = const $7E0 (used reg = ) mov ax,#$7E0 push ax ! Debug: list * struct Directory_Table dir_table = [S+$16-$10] (used reg = ) push -$E[bp] -! Debug: list long = const $10 (used reg = ) -mov ax,*$10 +! Debug: list long = const 8 (used reg = ) +mov ax,*8 xor bx,bx push bx push ax @@ -2303,9 +2303,9 @@ mov ax,-$A[bp] inc ax mov -$A[bp],ax .40: -! Debug: lt int = const $10 to int j = [S+$10-$C] (used reg = ) +! Debug: lt int = const 8 to int j = [S+$10-$C] (used reg = ) mov ax,-$A[bp] -cmp ax,*$10 +cmp ax,*8 blt .41 .46: .3E: @@ -2805,59 +2805,59 @@ push bp mov bp,sp push di push si -add sp,#-$2014 -! Debug: eq int = const $50 to int local_segment = [S+$201A-$201A] (used reg = ) +add sp,#-$1014 +! Debug: eq int = const $50 to int local_segment = [S+$101A-$101A] (used reg = ) mov ax,*$50 -mov -$2018[bp],ax +mov -$1018[bp],ax !BCC_EOS ! 17 unsigned int heap_start = 0x2200; dec sp dec sp -! Debug: eq int = const $2200 to unsigned int heap_start = [S+$201C-$201C] (used reg = ) +! Debug: eq int = const $2200 to unsigned int heap_start = [S+$101C-$101C] (used reg = ) mov ax,#$2200 -mov -$201A[bp],ax +mov -$101A[bp],ax !BCC_EOS ! 18 unsigned int heap_end = 0xffff; dec sp dec sp -! Debug: eq unsigned int = const $FFFF to unsigned int heap_end = [S+$201E-$201E] (used reg = ) +! Debug: eq unsigned int = const $FFFF to unsigned int heap_end = [S+$101E-$101E] (used reg = ) mov ax,#$FFFF -mov -$201C[bp],ax +mov -$101C[bp],ax !BCC_EOS ! 19 int stack_segment = 0x8fc0; dec sp dec sp -! Debug: eq unsigned int = const $8FC0 to int stack_segment = [S+$2020-$2020] (used reg = ) +! Debug: eq unsigned int = const $8FC0 to int stack_segment = [S+$1020-$1020] (used reg = ) mov ax,#$8FC0 -mov -$201E[bp],ax +mov -$101E[bp],ax !BCC_EOS ! 20 int path_length; !BCC_EOS ! 21 long index_as_long = 0; add sp,*-6 -! Debug: eq int = const 0 to long index_as_long = [S+$2026-$2026] (used reg = ) +! Debug: eq int = const 0 to long index_as_long = [S+$1026-$1026] (used reg = ) xor ax,ax xor bx,bx -mov -$2024[bp],ax -mov -$2022[bp],bx +mov -$1024[bp],ax +mov -$1022[bp],bx !BCC_EOS ! 22 ! 23 char *local_path = 0; dec sp dec sp -! Debug: eq int = const 0 to * char local_path = [S+$2028-$2028] (used reg = ) +! Debug: eq int = const 0 to * char local_path = [S+$1028-$1028] (used reg = ) xor ax,ax -mov -$2026[bp],ax +mov -$1026[bp],ax !BCC_EOS ! 24 FSCI *fsci = 0x2000; dec sp dec sp -! Debug: eq int = const $2000 to * struct File_System_Control_Information fsci = [S+$202A-$202A] (used reg = ) +! Debug: eq int = const $2000 to * struct File_System_Control_Information fsci = [S+$102A-$102A] (used reg = ) mov ax,#$2000 -mov -$2028[bp],ax +mov -$1028[bp],ax !BCC_EOS ! 25 service_action = selector; -! Debug: eq int selector = [S+$202A+2] to int service_action = [S+$202A-8] (used reg = ) +! Debug: eq int selector = [S+$102A+2] to int service_action = [S+$102A-8] (used reg = ) mov ax,4[bp] mov -6[bp],ax !BCC_EOS @@ -2875,34 +2875,34 @@ br .5E ! 33 ! 34 ! 35 set_heap_settings(heap_start, heap_end); -! Debug: list unsigned int heap_end = [S+$202A-$201E] (used reg = ) -push -$201C[bp] -! Debug: list unsigned int heap_start = [S+$202C-$201C] (used reg = ) -push -$201A[bp] +! Debug: list unsigned int heap_end = [S+$102A-$101E] (used reg = ) +push -$101C[bp] +! Debug: list unsigned int heap_start = [S+$102C-$101C] (used reg = ) +push -$101A[bp] ! Debug: func () int = set_heap_settings+0 (used reg = ) call _set_heap_settings add sp,*4 !BCC_EOS ! 36 index_as_long = pointer_parameter_struct; -! Debug: eq * void pointer_parameter_struct = [S+$202A+6] to long index_as_long = [S+$202A-$2026] (used reg = ) +! Debug: eq * void pointer_parameter_struct = [S+$102A+6] to long index_as_long = [S+$102A-$1026] (used reg = ) mov ax,8[bp] xor bx,bx -mov -$2024[bp],ax -mov -$2022[bp],bx +mov -$1024[bp],ax +mov -$1022[bp],bx !BCC_EOS ! 37 disk_service_read_data_from_disk(index_as_long, (long) 1, fsci, local_segment); -! Debug: list int local_segment = [S+$202A-$201A] (used reg = ) -push -$2018[bp] -! Debug: list * struct File_System_Control_Information fsci = [S+$202C-$202A] (used reg = ) -push -$2028[bp] +! Debug: list int local_segment = [S+$102A-$101A] (used reg = ) +push -$1018[bp] +! Debug: list * struct File_System_Control_Information fsci = [S+$102C-$102A] (used reg = ) +push -$1028[bp] ! Debug: list long = const 1 (used reg = ) mov ax,*1 xor bx,bx push bx push ax -! Debug: list long index_as_long = [S+$2032-$2026] (used reg = ) -push -$2022[bp] -push -$2024[bp] +! Debug: list long index_as_long = [S+$1032-$1026] (used reg = ) +push -$1022[bp] +push -$1024[bp] ! Debug: func () int = disk_service_read_data_from_disk+0 (used reg = ) call _disk_service_read_data_from_disk add sp,*$C @@ -2916,51 +2916,39 @@ call _print inc sp inc sp !BCC_EOS -! 39 print_newline(); -! Debug: func () void = print_newline+0 (used reg = ) -call _print_newline -!BCC_EOS -! 40 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] +! 39 print(fsci->filesystem_information); +! Debug: cast * char = const 0 to [$100] char fsci = [S+$102A-$102A] (used reg = ) +! Debug: list * char fsci = [S+$102A-$102A] (used reg = ) +push -$1028[bp] ! Debug: func () void = print+0 (used reg = ) call _print inc sp inc sp !BCC_EOS -! 41 print_newline(); -! Debug: func () void = print_newline+0 (used reg = ) -call _print_newline -!BCC_EOS -! 42 print_newline(); -! Debug: func () void = print_newline+0 (used reg = ) -call _print_newline -!BCC_EOS -! 43 } break; +! 40 } break; br .5C !BCC_EOS -! 44 case SERVICE_FIND_ENTRY: -! 45 { +! 41 case SERVICE_FIND_ENTRY: +! 42 { .61: -! 46 String_Array *path_array; +! 43 String_Array *path_array; !BCC_EOS -! 47 lsfs_file* find_file; +! 44 lsfs_file* find_file; !BCC_EOS -! 48 int i; +! 45 int i; !BCC_EOS -! 49 disk_service_read_data_from_disk(fsci->master_table_index[0], (long) 16 , ¤t_table, stack_segment); -! Debug: list int stack_segment = [S+$2030-$2020] (used reg = ) -push -$201E[bp] -! Debug: list * struct Directory_Table current_table = S+$2032-$2008 (used reg = ) -lea bx,-$2006[bp] +! 46 disk_service_read_data_from_disk(fsci->master_table_index[0], (long) 8 , ¤t_table, stack_segment); +! Debug: list int stack_segment = [S+$1030-$1020] (used reg = ) +push -$101E[bp] +! Debug: list * struct Directory_Table current_table = S+$1032-$1008 (used reg = ) +lea bx,-$1006[bp] push bx -! Debug: list long = const $10 (used reg = ) -mov ax,*$10 +! Debug: list long = const 8 (used reg = ) +mov ax,*8 xor bx,bx push bx push ax -mov bx,-$2028[bp] +mov bx,-$1028[bp] ! Debug: ptradd int = const 0 to [2] long = bx+$100 (used reg = ) ! Debug: list long = [bx+$100] (used reg = ) push $102[bx] @@ -2969,38 +2957,38 @@ push $100[bx] call _disk_service_read_data_from_disk add sp,*$C !BCC_EOS -! 50 # 59 -! 59 -! 60 -! 61 memcpy(¶meter_struct, stack_segment, pointer_parameter_struct, pointer_parameter_segment, sizeof(Parameter_Struct)); +! 47 # 56 +! 56 +! 57 +! 58 memcpy(¶meter_struct, stack_segment, pointer_parameter_struct, pointer_parameter_segment, sizeof(Parameter_Struct)); ! Debug: list int = const $10 (used reg = ) mov ax,*$10 push ax -! Debug: list * void pointer_parameter_segment = [S+$2032+4] (used reg = ) +! Debug: list * void pointer_parameter_segment = [S+$1032+4] (used reg = ) push 6[bp] -! Debug: list * void pointer_parameter_struct = [S+$2034+6] (used reg = ) +! Debug: list * void pointer_parameter_struct = [S+$1034+6] (used reg = ) push 8[bp] -! Debug: list int stack_segment = [S+$2036-$2020] (used reg = ) -push -$201E[bp] -! Debug: list * struct Parameter_Struct parameter_struct = S+$2038-$2018 (used reg = ) -lea bx,-$2016[bp] +! Debug: list int stack_segment = [S+$1036-$1020] (used reg = ) +push -$101E[bp] +! Debug: list * struct Parameter_Struct parameter_struct = S+$1038-$1018 (used reg = ) +lea bx,-$1016[bp] push bx ! Debug: func () void = memcpy+0 (used reg = ) call _memcpy add sp,*$A !BCC_EOS -! 62 path_length = strlen(parameter_struct.path, pointer_parameter_segment); -! Debug: list * void pointer_parameter_segment = [S+$2030+4] (used reg = ) +! 59 path_length = strlen(parameter_struct.path, pointer_parameter_segment); +! Debug: list * void pointer_parameter_segment = [S+$1030+4] (used reg = ) push 6[bp] -! Debug: list * char parameter_struct = [S+$2032-$2018] (used reg = ) -push -$2016[bp] +! Debug: list * char parameter_struct = [S+$1032-$1018] (used reg = ) +push -$1016[bp] ! Debug: func () int = strlen+0 (used reg = ) call _strlen add sp,*4 -! Debug: eq int = ax+0 to int path_length = [S+$2030-$2022] (used reg = ) -mov -$2020[bp],ax +! Debug: eq int = ax+0 to int path_length = [S+$1030-$1022] (used reg = ) +mov -$1020[bp],ax !BCC_EOS -! 63 local_path = malloc(256); +! 60 local_path = malloc(256); ! Debug: list int = const $100 (used reg = ) mov ax,#$100 push ax @@ -3008,79 +2996,73 @@ push ax call _malloc inc sp inc sp -! Debug: eq * void = ax+0 to * char local_path = [S+$2030-$2028] (used reg = ) -mov -$2026[bp],ax +! Debug: eq * void = ax+0 to * char local_path = [S+$1030-$1028] (used reg = ) +mov -$1026[bp],ax !BCC_EOS -! 64 memcpy(local_path, local_segment, parameter_struct.path, pointer_parameter_segment, path_length); -! Debug: list int path_length = [S+$2030-$2022] (used reg = ) -push -$2020[bp] -! Debug: list * void pointer_parameter_segment = [S+$2032+4] (used reg = ) +! 61 memcpy(local_path, local_segment, parameter_struct.path, pointer_parameter_segment, path_length); +! Debug: list int path_length = [S+$1030-$1022] (used reg = ) +push -$1020[bp] +! Debug: list * void pointer_parameter_segment = [S+$1032+4] (used reg = ) push 6[bp] -! Debug: list * char parameter_struct = [S+$2034-$2018] (used reg = ) -push -$2016[bp] -! Debug: list int local_segment = [S+$2036-$201A] (used reg = ) -push -$2018[bp] -! Debug: list * char local_path = [S+$2038-$2028] (used reg = ) -push -$2026[bp] +! Debug: list * char parameter_struct = [S+$1034-$1018] (used reg = ) +push -$1016[bp] +! Debug: list int local_segment = [S+$1036-$101A] (used reg = ) +push -$1018[bp] +! Debug: list * char local_path = [S+$1038-$1028] (used reg = ) +push -$1026[bp] ! Debug: func () void = memcpy+0 (used reg = ) call _memcpy add sp,*$A !BCC_EOS -! 65 local_path[path_length] = 0; -! Debug: ptradd int path_length = [S+$2030-$2022] to * char local_path = [S+$2030-$2028] (used reg = ) -mov ax,-$2020[bp] -add ax,-$2026[bp] +! 62 local_path[path_length] = 0; +! Debug: ptradd int path_length = [S+$1030-$1022] to * char local_path = [S+$1030-$1028] (used reg = ) +mov ax,-$1020[bp] +add ax,-$1026[bp] mov bx,ax ! Debug: eq int = const 0 to char = [bx+0] (used reg = ) xor al,al mov [bx],al !BCC_EOS -! 66 print(local_path); -! Debug: list * char local_path = [S+$2030-$2028] (used reg = ) -push -$2026[bp] +! 63 print(local_path); +! Debug: list * char local_path = [S+$1030-$1028] (used reg = ) +push -$1026[bp] ! Debug: func () void = print+0 (used reg = ) call _print inc sp inc sp !BCC_EOS -! 67 -! 68 path_array = string_split_c(local_path, '/', 0); +! 64 +! 65 path_array = string_split_c(local_path, '/', 0); ! Debug: list int = const 0 (used reg = ) xor ax,ax push ax ! Debug: list int = const $2F (used reg = ) mov ax,*$2F push ax -! Debug: list * char local_path = [S+$2034-$2028] (used reg = ) -push -$2026[bp] +! Debug: list * char local_path = [S+$1034-$1028] (used reg = ) +push -$1026[bp] ! Debug: func () * struct String_Array = string_split_c+0 (used reg = ) call _string_split_c add sp,*6 -! Debug: eq * struct String_Array = ax+0 to * struct String_Array path_array = [S+$2030-$202C] (used reg = ) -mov -$202A[bp],ax -!BCC_EOS -! 69 -! 70 print_newline(); -! Debug: func () void = print_newline+0 (used reg = ) -call _print_newline +! Debug: eq * struct String_Array = ax+0 to * struct String_Array path_array = [S+$1030-$102C] (used reg = ) +mov -$102A[bp],ax !BCC_EOS -! 71 print_newline(); -! Debug: func () void = print_newline+0 (used reg = ) -call _print_newline -!BCC_EOS -! 72 for (i = 0; i < path_array->length; ++i) -! Debug: eq int = const 0 to int i = [S+$2030-$2030] (used reg = ) +! 66 +! 67 +! 68 +! 69 for (i = 0; i < path_array->length; ++i) +! Debug: eq int = const 0 to int i = [S+$1030-$1030] (used reg = ) xor ax,ax -mov -$202E[bp],ax +mov -$102E[bp],ax !BCC_EOS !BCC_EOS -! 73 { +! 70 { jmp .64 .65: -! 74 print(path_array->strings[i]->chars); -mov bx,-$202A[bp] -! Debug: ptradd int i = [S+$2030-$2030] to * * struct Length_String = [bx+2] (used reg = ) -mov ax,-$202E[bp] +! 71 print(path_array->strings[i]->chars); +mov bx,-$102A[bp] +! Debug: ptradd int i = [S+$1030-$1030] to * * struct Length_String = [bx+2] (used reg = ) +mov ax,-$102E[bp] shl ax,*1 add ax,2[bx] mov bx,ax @@ -3092,34 +3074,25 @@ call _print inc sp inc sp !BCC_EOS -! 75 print_newline(); -! Debug: func () void = print_newline+0 (used reg = ) -call _print_newline -!BCC_EOS -! 76 } -! 77 print_newline(); +! 72 +! 73 } +! 74 +! 75 +! 76 +! 77 find_file = calloc(sizeof(lsfs_file), 1); .63: -! Debug: preinc int i = [S+$2030-$2030] (used reg = ) -mov ax,-$202E[bp] +! Debug: preinc int i = [S+$1030-$1030] (used reg = ) +mov ax,-$102E[bp] inc ax -mov -$202E[bp],ax +mov -$102E[bp],ax .64: -mov bx,-$202A[bp] -! Debug: lt unsigned int = [bx+0] to int i = [S+$2030-$2030] (used reg = ) -mov ax,-$202E[bp] +mov bx,-$102A[bp] +! Debug: lt unsigned int = [bx+0] to int i = [S+$1030-$1030] (used reg = ) +mov ax,-$102E[bp] cmp ax,[bx] jb .65 .66: .62: -! Debug: func () void = print_newline+0 (used reg = ) -call _print_newline -!BCC_EOS -! 78 print_newline(); -! Debug: func () void = print_newline+0 (used reg = ) -call _print_newline -!BCC_EOS -! 79 -! 80 find_file = calloc(sizeof(lsfs_file), 1); ! Debug: list int = const 1 (used reg = ) mov ax,*1 push ax @@ -3129,27 +3102,38 @@ push ax ! Debug: func () * void = calloc+0 (used reg = ) call _calloc add sp,*4 -! Debug: eq * void = ax+0 to * struct lsfs_file find_file = [S+$2030-$202E] (used reg = ) -mov -$202C[bp],ax -!BCC_EOS -! 81 lsfs_disk_getattr(find_file, local_path, fsci); -! Debug: list * struct File_System_Control_Information fsci = [S+$2030-$202A] (used reg = ) -push -$2028[bp] -! Debug: list * char local_path = [S+$2032-$2028] (used reg = ) -push -$2026[bp] -! Debug: list * struct lsfs_file find_file = [S+$2034-$202E] (used reg = ) -push -$202C[bp] +! Debug: eq * void = ax+0 to * struct lsfs_file find_file = [S+$1030-$102E] (used reg = ) +mov -$102C[bp],ax +!BCC_EOS +! 78 if ( !lsfs_disk_getattr(find_file, local_path, fsci) ) +! Debug: list * struct File_System_Control_Information fsci = [S+$1030-$102A] (used reg = ) +push -$1028[bp] +! Debug: list * char local_path = [S+$1032-$1028] (used reg = ) +push -$1026[bp] +! Debug: list * struct lsfs_file find_file = [S+$1034-$102E] (used reg = ) +push -$102C[bp] ! Debug: func () int = lsfs_disk_getattr+0 (used reg = ) call _lsfs_disk_getattr add sp,*6 +test ax,ax +jne .67 +.68: +! 79 { +! 80 print("File not found"); +! 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 -! 82 print_newline(); -! Debug: func () void = print_newline+0 (used reg = ) -call _print_newline -!BCC_EOS +! 81 } +! 82 ! 83 print("Buffer_address: "); -! Debug: list * char = .67+0 (used reg = ) -mov bx,#.67 +.67: +! Debug: list * char = .6A+0 (used reg = ) +mov bx,#.6A push bx ! Debug: func () void = print+0 (used reg = ) call _print @@ -3157,20 +3141,17 @@ inc sp inc sp !BCC_EOS ! 84 dump_ax(parameter_struct.buffer_address); -! Debug: list unsigned int parameter_struct = [S+$2030-$2012] (used reg = ) -push -$2010[bp] +! Debug: list unsigned int parameter_struct = [S+$1030-$1012] (used reg = ) +push -$1010[bp] ! Debug: func () void = dump_ax+0 (used reg = ) call _dump_ax inc sp inc sp !BCC_EOS -! 85 print_newline(); -! Debug: func () void = print_newline+0 (used reg = ) -call _print_newline -!BCC_EOS +! 85 ! 86 print("Buffer_segmnent: "); -! Debug: list * char = .68+0 (used reg = ) -mov bx,#.68 +! Debug: list * char = .6B+0 (used reg = ) +mov bx,#.6B push bx ! Debug: func () void = print+0 (used reg = ) call _print @@ -3178,29 +3159,28 @@ inc sp inc sp !BCC_EOS ! 87 dump_ax(parameter_struct.buffer_segment); -! Debug: list unsigned int parameter_struct = [S+$2030-$2014] (used reg = ) -push -$2012[bp] +! Debug: list unsigned int parameter_struct = [S+$1030-$1014] (used reg = ) +push -$1012[bp] ! Debug: func () void = dump_ax+0 (used reg = ) call _dump_ax inc sp inc sp !BCC_EOS ! 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] +! 89 lsfs_disk_read_data_from_file(find_file, parameter_struct.buffer_size, parameter_struct.buffer_address, (long) 0x0, parameter_struct.buffer_segment); +! Debug: list unsigned int parameter_struct = [S+$1030-$1014] (used reg = ) +push -$1012[bp] ! Debug: list long = const 0 (used reg = ) xor ax,ax xor bx,bx push bx 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: list unsigned int parameter_struct = [S+$1036-$1012] (used reg = ) +push -$1010[bp] +! Debug: list unsigned int parameter_struct = [S+$1038-$1010] (used reg = ) +push -$100E[bp] +! Debug: list * struct lsfs_file find_file = [S+$103A-$102E] (used reg = ) +push -$102C[bp] ! Debug: func () int = lsfs_disk_read_data_from_file+0 (used reg = ) call _lsfs_disk_read_data_from_file add sp,*$C @@ -3211,13 +3191,14 @@ add sp,*$C jmp .5C !BCC_EOS ! 93 case SERIVCE_READ_DATA: -! 94 { -.69: +! 94 +! 94 { +.6C: ! 95 # 103 ! 103 ! 104 print("Hit READ case"); -! Debug: list * char = .6A+0 (used reg = ) -mov bx,#.6A +! Debug: list * char = .6D+0 (used reg = ) +mov bx,#.6D push bx ! Debug: func () void = print+0 (used reg = ) call _print @@ -3229,10 +3210,10 @@ jmp .5C !BCC_EOS ! 106 case SERIVCE_WRITE_DATA: ! 107 { -.6B: +.6E: ! 108 print("Hit WRITE case"); -! Debug: list * char = .6C+0 (used reg = ) -mov bx,#.6C +! Debug: list * char = .6F+0 (used reg = ) +mov bx,#.6F push bx ! Debug: func () void = print+0 (used reg = ) call _print @@ -3244,34 +3225,28 @@ jmp .5C !BCC_EOS ! 110 case SERIVCE_WRITE_FS_INFO: ! 111 { -.6D: -! 112 print_newline(); -! Debug: func () void = print_newline+0 (used reg = ) -call _print_newline -!BCC_EOS +.70: +! 112 ! 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: cast * char = const 0 to [$100] char fsci = [S+$102A-$102A] (used reg = ) +! Debug: list * char fsci = [S+$102A-$102A] (used reg = ) +push -$1028[bp] ! Debug: func () void = print+0 (used reg = ) call _print inc sp inc sp !BCC_EOS -! 114 print_newline(); -! Debug: func () void = print_newline+0 (used reg = ) -call _print_newline -!BCC_EOS +! 114 ! 115 } break; -jmp .5C +br .5C !BCC_EOS ! 116 ! 117 default: ! 118 { -.6E: +.71: ! 119 print("Default case: "); -! Debug: list * char = .6F+0 (used reg = ) -mov bx,#.6F +! Debug: list * char = .72+0 (used reg = ) +mov bx,#.72 push bx ! Debug: func () void = print+0 (used reg = ) call _print @@ -3279,7 +3254,7 @@ inc sp inc sp !BCC_EOS ! 120 dump_ax(service_action); -! Debug: list int service_action = [S+$202A-8] (used reg = ) +! Debug: list int service_action = [S+$102A-8] (used reg = ) push -6[bp] ! Debug: func () void = dump_ax+0 (used reg = ) call _dump_ax @@ -3298,14 +3273,14 @@ beq .5F sub ax,*1 beq .61 sub ax,*1 -je .69 +je .6C sub ax,*1 -je .6B +je .6E sub ax,*6 -je .6D -jmp .6E +je .70 +jmp .71 .5C: -..FFFF = -$2030 +..FFFF = -$1030 add sp,*6 xor ax,ax lea sp,-4[bp] @@ -3318,40 +3293,44 @@ ret ! 126 } ! 127 ! Register BX used in function main -.6F: -.70: +.72: +.73: .ascii "Default case: " .byte 0 -.6C: -.71: +.6F: +.74: .ascii "Hit WRITE case" .byte 0 -.6A: -.72: +.6D: +.75: .ascii "Hit READ case" .byte 0 -.68: -.73: +.6B: +.76: .ascii "Buffer_segmnent: " .byte 0 -.67: -.74: +.6A: +.77: .ascii "Buffer_address: " .byte 0 +.69: +.78: +.ascii "File not found" +.byte 0 .60: -.75: +.79: .ascii "File System has been loaded: " .byte 0 .43: -.76: +.7A: .ascii "vs " .byte 0 .42: -.77: +.7B: .ascii "New: " .byte 0 .2E: -.78: +.7C: .ascii "Size of table_entry: " .byte 0 .bss