From 7644b59da3a6592eab8ecc05c1649d8be1bffad8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rn=20Guldberg?= Date: Tue, 14 Jul 2020 13:50:06 +0200 Subject: [PATCH] Removed a lot of debug prints --- disk.out | Bin 3471 -> 0 bytes implementation/lsfs.c | 169 -------- implementation/lsfs.h | 14 +- main.c | 30 +- main.s | 967 ++++++++++++++++-------------------------- 5 files changed, 385 insertions(+), 795 deletions(-) delete mode 100644 disk.out delete mode 100644 implementation/lsfs.c diff --git a/disk.out b/disk.out deleted file mode 100644 index 1d39b628f46c0771d1f532d46ebcd4cef955772b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3471 zcma)8Z)_9i89&FDv#~;Ax(?B8N<6v>1VhA|DmDUBpw|nPBIMRU{j_an}e$RUs ztVVWC zdvE=_=MWj3uYYUpwD&E~v^SlW#1B@T9qsME8<&_?#?z_E=f))vEy|b_bNf@ON`|^t zwg{m=JXJ;n`hI0G!?a?1yWR-%P(hd%tIXHkbd7%FG*47bJ=23$kl!DfI#-YnC!3n zLW|Ch;i;wMoGU;nIcg41$xJI*dxigq_AOc|>PebJQs5RIn{aifrZ55-@UttU@=jN^ zS~WtYmuCpn>h!xuHKqBsICQO~ssTPOp{^<*A(-Wu{`LTt0q%nQp@a7Jq#_0QC!eb- z(tu=Ya%+I!728t9Sh0MR_-**`K*y<-SlUWs8TUXosU}!k4G}Sg#btzDeGZC-?u&Av z1xa2K*QZA*yB(RM>$k})J?h%2DMRaZt<>70l_M@)E22P(5JPhr3!&c9Rx^k!uGBMQ zMScf3FfETPpG-wvbi_hdNjfB~RfmRG9g53a&US-vY70<6NC9hurMy+UM+m0~LF@|% zte}VT`)1~xZ8gYXEXQ`J>X(Fi=Ku75_lCz?Z?bMe)6Q;|l&x-9Aq&~B>I`stVBe^d$m~W=`NDpG-BJJm6R%$MDuqNe=yu z8V8eE7lHrKn1pX^aIh|~RfVs!>#WVq;^?iFTCD4_Rjk=spTqwVQ+KhhAHW=U^%q&& z<1CJ@S!u1Gaw7nbgQ*)>*VmxyPm!vR#Wz+qn^}BIWz)>!-&x_rys*V#UfAs5XFkO> z3C4VuTA}JHT7G5@wTALX6I=8Z{nTb0yaflVtV@IYWl7qMYi3;Kd&nJ_t>__iYJT_E zrI-HzJ^M1>WAU9JQE^o1qNkup3E1tH8cy$cPxPw5j!Ey?X-?p?>m+ZWJhp_S%YfgI2HxecoCYY`vU4_vbM@TQnu608!{> z;%J>5_0XRsOeHiOk`&-)D1N4KDDRfM5jR$AluKT$qNwKW((6{y`M3zMsa4fXvxBc& ztX8nA?rISpc@dgxh+kW>mV1^L3Y70~nVQnaw5{)!vM4EU|B06>IxHf1p6xwM2a7)yjFfSb8<{oeH6)rg^S;AO+&0X_ zU4uVGaNyni(9TS7h-MAyeRQUoxQXq@2EUAIubX@xZS#+Us*(o31|l;7XSa;8iLwz~ z25e&1s5JX1nI*mA1wh~0LU-N>@=Z7yU*C$Em^b*lpHNmt=8UA|!1oXQQs`!4&agGC zsBRd10h%5inocNKUp;05d=)m!!-Dq5;a*`Q*9}7910%appSW)5pjNbcJ*w}>(*AH9RPgA}!@hw&U$p1&v2Zth I51s(`KgwdCRsaA1 diff --git a/implementation/lsfs.c b/implementation/lsfs.c deleted file mode 100644 index 72a3f45..0000000 --- a/implementation/lsfs.c +++ /dev/null @@ -1,169 +0,0 @@ -#include "lsfs.h" -/* #include "../std_singos/string.h" */ -extern FSCI fsci; - -int lsfs_disk_getattr(find_file, path) -lsfs_file* find_file; -char* path; -{ - int i; - String_Array *split_path = string_split_c(path, '/', false); - Length_String *filename = split_path->strings[split_path->length-1]; - - /* Start from the master table*/ - Directory_Table *dir_table = lsfs_find_directory(path, true); - - for (i = 0; i < DEFAULT_TABLE_SIZE; ++i) - { - if(strcmp( filename->chars, dir_table->entries[i].filename ) == 0) { - find_file->file_id[0] = dir_table->entries[i].file_id; - find_file->entry_kind = dir_table->entries[i].entry_kind; - find_file->table_entry_pointer[0] = i; - find_file->filename = dir_table->entries[i].filename; - find_file->table_entry_sector_index[0] = dir_table->entries[i].table_entry_sector_index; - find_file->owner_id = 1; - find_file->size[0] = dir_table->entries[i].file_size; /* dir_table->entries[i].data_pointer[0]; ;*/ - find_file->creation_date[0] = 0; - find_file->access_time[0] = 0; - find_file->modification_time[0] = 0; - memcpy(find_file->data_pointer, dir_table->entries[i].data_pointer, NUM_DATA_POINTERS * 8); - find_file->number_sector = 1; /* TODO: should be loaded from disk.*/ - return 1; - } - } - return 0; -} - -Directory_Table* lsfs_find_directory(path, drop_filename) -char *path; -short drop_filename; -{ - int number_of_traversal; - int i, j; - 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, 0x50); - split_path = string_split_c(path, '/', false); - - number_of_traversal = split_path->length; - - if (drop_filename) - { - number_of_traversal -= 1; - } - - /* Start from the master table */ - for (i = 0; i < number_of_traversal; ++i) - { - for (j = 0; j < DEFAULT_TABLE_SIZE; ++j) - { - if (strcmp(dir_table->entries[j].filename, split_path->strings[i]->chars) == 0) - { - int index_sector = dir_table->entries[j].data_pointer[0]; - /* printf("Table index: %lu \n",index_sector ); */ - disk_service_read_data_from_disk(index_sector, DEFAULT_TABLE_SIZE, dir_table); - break; - } - } - } - return dir_table; -} - -int lsfs_disk_read_data_from_file(file, buffer_size, data, offset_to_next_entry, data_segment) -lsfs_file *file; -int buffer_size; -char *data; -long offset_to_next_entry; -unsigned int data_segment; -{ - int integer_file_size = file->size; - int integer_offset = offset_to_next_entry; - int integer_datapointer = 0; - int data_length = integer_file_size - integer_offset; - int amount_read = 0; - int amount_to_read = 0; - int remaining_offset = offset_to_next_entry; - /* printf("READ: buffer_size: %d\n", buffer_size); */ - /* printf("READ: Data length: %d\n", data_length); */ - /* printf("READ: Offset length: %d\n", offset_to_next_entry); */ - - - int data_pointer_index = 0; /* start at first data pointer. */ - - if (data_length > buffer_size) - { - data_length = buffer_size; - } - - while(data_length > 0) /* We have more to write */ - { - /* printf("READ: Remaing Data length: %d\n", data_length); */ - if (remaining_offset == 0) - { - char *tmp_buffer = calloc(DEFAULT_DATA_POINTER_SIZE, SECTOR_SIZE); - /* assert(tmp_buffer); */ - - if (data_length < (DEFAULT_DATA_POINTER_SIZE * SECTOR_SIZE)) - { - amount_to_read = data_length; - } - else - { - amount_to_read = (DEFAULT_DATA_POINTER_SIZE * SECTOR_SIZE); - } - /* disk_service_read_data_from_disk(lsfs_sector_offset index, uint32_t number_sector, void* data_buffer) */ - integer_datapointer = file->data_pointer[data_pointer_index]; - if (integer_datapointer == 0) - { - break; - } - 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, 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*/ - /* free(tmp_buffer); */ - } - else if (remaining_offset < (DEFAULT_DATA_POINTER_SIZE * SECTOR_SIZE)) - { - char *tmp_buffer = calloc(1, (DEFAULT_DATA_POINTER_SIZE * SECTOR_SIZE)); - /* assert(tmp_buffer); */ - - if (data_length < ((DEFAULT_DATA_POINTER_SIZE * SECTOR_SIZE) - remaining_offset) ) - { - amount_to_read = data_length; - } - else - { - 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, 0x50); - - 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; - - data_pointer_index = data_pointer_index + 2; /* Rember that we only use 32-bit, and thats why we jump to at a time*/ - /* free(tmp_buffer); */ - } - else - { - /* We have to skip a whole data pointer: */ - remaining_offset -= (DEFAULT_DATA_POINTER_SIZE * SECTOR_SIZE); - data_pointer_index++; - } - - } - /* - time_t current_time; - time ( ¤t_time ); - file->access_time = current_time; - */ - return amount_read; - -} diff --git a/implementation/lsfs.h b/implementation/lsfs.h index df17d89..ee8b6a4 100644 --- a/implementation/lsfs.h +++ b/implementation/lsfs.h @@ -87,6 +87,7 @@ FSCI *fsci; for (i = 0; i < DEFAULT_TABLE_SIZE; i++) { int j; + /* print(dir_table->entries[i].filename); print(filename->chars); print_newline(); @@ -95,6 +96,7 @@ FSCI *fsci; dump_ax(sizeof(Table_Entry)); print_newline(); print_newline(); + */ if(strcmp( filename->chars, dir_table->entries[i].filename ) == 0) { find_file->file_id[0] = dir_table->entries[i].file_id[0]; find_file->entry_kind = dir_table->entries[i].entry_kind; @@ -106,12 +108,10 @@ FSCI *fsci; find_file->creation_date[0] = 0; find_file->access_time[0] = 0; find_file->modification_time[0] = 0; - dump_ax(dir_table->entries[i].data_pointer[0]); /* memcpy(find_file->data_pointer, dir_table->entries[i].data_pointer, NUM_DATA_POINTERS * 8); */ for (j = 0; j < NUM_DATA_POINTERS; j = j + 2) { find_file->data_pointer[j] = dir_table->entries[i].data_pointer[j]; - dump_ax(find_file->data_pointer[j]); } @@ -132,9 +132,7 @@ FSCI *fsci; String_Array *split_path; Directory_Table *dir_table = calloc(1, sizeof(Directory_Table)); /* printf("Table index: %lu \n",fsci->master_table_index ); */ - dump_ax(fsci->master_table_index[0]); disk_service_read_data_from_disk(fsci->master_table_index[0], (long) DEFAULT_TABLE_SIZE, dir_table, 0x7e0); - print(dir_table->entries[0].filename); split_path = string_split_c(path, '/', false); number_of_traversal = split_path->length; @@ -150,18 +148,19 @@ FSCI *fsci; { for (j = 0; j < DEFAULT_TABLE_SIZE; ++j) { + /* print_newline(); print("New: "); print(dir_table->entries[j].filename); print("vs "); print(split_path->strings[i]->chars); print_newline(); + */ if (strcmp(dir_table->entries[j].filename, split_path->strings[i]->chars) == 0) { long index_sector = dir_table->entries[j].data_pointer[0]; /* printf("Table index: %lu \n",index_sector ); */ /* print(dir_table->entries[j].filename); */ - dump_ax(index_sector); disk_service_read_data_from_disk(index_sector, (long) DEFAULT_TABLE_SIZE, dir_table, 0x7e0); break; } @@ -221,12 +220,7 @@ unsigned int data_segment; { break; } - print_newline(); - dump_ax(file->data_pointer[data_pointer_index]); - print_newline(); next_data = data + amount_read; - dump_ax(next_data); - print_newline(); disk_service_read_data_from_disk(file->data_pointer[data_pointer_index], (long) DEFAULT_DATA_POINTER_SIZE, next_data, data_segment); /* memcpy((data + amount_read), data_segment, tmp_buffer, 0x7e0, amount_to_read); */ diff --git a/main.c b/main.c index 3151111..10ec7de 100644 --- a/main.c +++ b/main.c @@ -36,7 +36,10 @@ 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("16-bit implementation "); + print_newline(); } break; case SERVICE_FIND_ENTRY: { @@ -60,32 +63,31 @@ void* pointer_parameter_struct; local_path = malloc(256); memcpy(local_path, local_segment, parameter_struct.path, pointer_parameter_segment, path_length); local_path[path_length] = 0; + print("Read file: "); print(local_path); - - path_array = string_split_c(local_path, '/', 0); + 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(); */ + path_array = string_split_c(local_path, '/', 0); find_file = calloc(sizeof(lsfs_file), 1); if ( !lsfs_disk_getattr(find_file, local_path, fsci) ) { print("File not found"); + print_newline(); } - /* print_newline(); */ + else + { + print("File has been read"); + print_newline(); + } + /* + print_newline(); print("Buffer_address: "); dump_ax(parameter_struct.buffer_address); - /* print_newline(); */ + print_newline(); print("Buffer_segmnent: "); dump_ax(parameter_struct.buffer_segment); - + */ lsfs_disk_read_data_from_file(find_file, parameter_struct.buffer_size, parameter_struct.buffer_address, (long) 0x0, parameter_struct.buffer_segment); diff --git a/main.s b/main.s index 94dcd41..aa9dc78 100644 --- a/main.s +++ b/main.s @@ -1708,7 +1708,9 @@ br .2C .2D: ! 89 int j; !BCC_EOS -! 90 print(dir_table->entries[i].filename); +! 90 # 99 +! 99 +! 100 if(strcmp( filename->chars, dir_table->entries[i].filename ) == 0) { dec sp dec sp ! Debug: ptradd int i = [S+$10-8] to [8] struct Table_Entry dir_table = [S+$10-$E] (used reg = ) @@ -1720,64 +1722,6 @@ mov bx,ax ! Debug: cast * char = const 0 to [$100] char = bx+0 (used reg = ) ! Debug: list * char = bx+0 (used reg = ) push bx -! Debug: func () void = print+0 (used reg = ) -call _print -inc sp -inc sp -!BCC_EOS -! 91 print(filename->chars); -mov bx,-$A[bp] -! Debug: list * char = [bx+4] (used reg = ) -push 4[bx] -! Debug: func () void = print+0 (used reg = ) -call _print -inc sp -inc sp -!BCC_EOS -! 92 print_newline(); -! Debug: func () void = print_newline+0 (used reg = ) -call _print_newline -!BCC_EOS -! 93 print_newline(); -! Debug: func () void = print_newline+0 (used reg = ) -call _print_newline -!BCC_EOS -! 94 print("Size of table_entry: "); -! Debug: list * char = .2E+0 (used reg = ) -mov bx,#.2E -push bx -! Debug: func () void = print+0 (used reg = ) -call _print -inc sp -inc sp -!BCC_EOS -! 95 dump_ax(sizeof(Table_Entry)); -! Debug: list int = const $200 (used reg = ) -mov ax,#$200 -push ax -! Debug: func () void = dump_ax+0 (used reg = ) -call _dump_ax -inc sp -inc sp -!BCC_EOS -! 96 print_newline(); -! Debug: func () void = print_newline+0 (used reg = ) -call _print_newline -!BCC_EOS -! 97 print_newline(); -! Debug: func () void = print_newline+0 (used reg = ) -call _print_newline -!BCC_EOS -! 98 if(strcmp( filename->chars, dir_table->entries[i].filename ) == 0) { -! 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 -add ax,-$C[bp] -mov bx,ax -! Debug: cast * char = const 0 to [$100] char = bx+0 (used reg = ) -! Debug: list * char = bx+0 (used reg = ) -push bx mov bx,-$A[bp] ! Debug: list * char = [bx+4] (used reg = ) push 4[bx] @@ -1786,9 +1730,9 @@ call _strcmp add sp,*4 ! Debug: logeq int = const 0 to int = ax+0 (used reg = ) test ax,ax -bne .2F -.30: -! 99 find_file->file_id[0] = dir_table->entries[i].file_id[0]; +bne .2E +.2F: +! 101 find_file->file_id[0] = dir_table->entries[i].file_id[0]; ! 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 @@ -1804,7 +1748,7 @@ mov bx,$102[bx] mov [si],ax mov 2[si],bx !BCC_EOS -! 100 find_file->entry_kind = dir_table->entries[i].entry_kind; +! 102 find_file->entry_kind = dir_table->entries[i].entry_kind; ! 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 @@ -1816,7 +1760,7 @@ mov si,4[bp] mov bx,$118[bx] mov $10[si],bx !BCC_EOS -! 101 find_file->table_entry_pointer[0] = i; +! 103 find_file->table_entry_pointer[0] = i; mov bx,4[bp] ! Debug: ptradd int = const 0 to [2] long = bx+8 (used reg = ) ! Debug: eq int i = [S+$10-8] to long = [bx+8] (used reg = ) @@ -1826,7 +1770,7 @@ mov si,dx mov 8[bx],ax mov $A[bx],si !BCC_EOS -! 102 find_file->filename = dir_table->entries[i].filename; +! 104 find_file->filename = dir_table->entries[i].filename; ! 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 @@ -1837,7 +1781,7 @@ mov si,4[bp] ! Debug: eq [$100] char = bx+0 to * char = [si+$12] (used reg = ) mov $12[si],bx !BCC_EOS -! 103 find_file->table_entry_sector_index[0] = dir_table->entries[i].table_entry_sector_index; +! 105 find_file->table_entry_sector_index[0] = dir_table->entries[i].table_entry_sector_index; ! 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 @@ -1853,7 +1797,7 @@ xor bx,bx mov $3C[si],ax mov $3E[si],bx !BCC_EOS -! 104 find_file->owner_id = 1; +! 106 find_file->owner_id = 1; mov bx,4[bp] ! Debug: eq int = const 1 to long = [bx+$14] (used reg = ) mov ax,*1 @@ -1861,7 +1805,7 @@ xor si,si mov $14[bx],ax mov $16[bx],si !BCC_EOS -! 105 find_file->size[0] = dir_table->entries[i].file_size[0]; +! 107 find_file->size[0] = dir_table->entries[i].file_size[0]; ! 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 @@ -1877,7 +1821,7 @@ mov bx,$10A[bx] mov $18[si],ax mov $1A[si],bx !BCC_EOS -! 106 find_file->creation_date[0] = 0; +! 108 find_file->creation_date[0] = 0; mov bx,4[bp] ! Debug: ptradd int = const 0 to [2] long = bx+$20 (used reg = ) ! Debug: eq int = const 0 to long = [bx+$20] (used reg = ) @@ -1886,7 +1830,7 @@ xor si,si mov $20[bx],ax mov $22[bx],si !BCC_EOS -! 107 find_file->access_time[0] = 0; +! 109 find_file->access_time[0] = 0; mov bx,4[bp] ! Debug: ptradd int = const 0 to [2] long = bx+$28 (used reg = ) ! Debug: eq int = const 0 to long = [bx+$28] (used reg = ) @@ -1895,7 +1839,7 @@ xor si,si mov $28[bx],ax mov $2A[bx],si !BCC_EOS -! 108 find_file->modification_time[0] = 0; +! 110 find_file->modification_time[0] = 0; mov bx,4[bp] ! Debug: ptradd int = const 0 to [2] long = bx+$30 (used reg = ) ! Debug: eq int = const 0 to long = [bx+$30] (used reg = ) @@ -1904,32 +1848,17 @@ xor si,si 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 [8] struct Table_Entry dir_table = [S+$10-$E] (used reg = ) -mov ax,-6[bp] -mov cx,#$200 -imul cx -add ax,-$C[bp] -mov bx,ax -! Debug: ptradd int = const 0 to [$36] long = bx+$128 (used reg = ) -! Debug: list long = [bx+$128] (used reg = ) -push $12A[bx] -push $128[bx] -! Debug: func () void = dump_ax+0 (used reg = ) -call _dump_ax -add sp,*4 -!BCC_EOS -! 110 -! 111 for (j = 0; j < 27 ; j = j + 2) +! 111 +! 112 for (j = 0; j < 27 ; j = j + 2) ! Debug: eq int = const 0 to int j = [S+$10-$10] (used reg = ) xor ax,ax mov -$E[bp],ax !BCC_EOS !BCC_EOS -! 112 { -jmp .34 -.35: -! 113 find_file->data_pointer[j] = dir_table->entries[i].data_pointer[j]; +! 113 { +jmp .33 +.34: +! 114 find_file->data_pointer[j] = dir_table->entries[i].data_pointer[j]; ! 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 @@ -1953,38 +1882,24 @@ mov bx,$12A[bx] mov $44[si],ax mov $46[si],bx !BCC_EOS -! 114 dump_ax(find_file->data_pointer[j]); -mov bx,4[bp] -! Debug: ptradd int j = [S+$10-$10] to [$36] long = bx+$44 (used reg = ) -mov ax,-$E[bp] -shl ax,*1 -shl ax,*1 -add bx,ax -! Debug: list long = [bx+$44] (used reg = ) -push $46[bx] -push $44[bx] -! Debug: func () void = dump_ax+0 (used reg = ) -call _dump_ax -add sp,*4 -!BCC_EOS ! 115 } ! 116 ! 117 ! 118 find_file->number_sector = 1; -.33: +.32: ! Debug: add int = const 2 to int j = [S+$10-$10] (used reg = ) mov ax,-$E[bp] ! Debug: eq int = ax+2 to int j = [S+$10-$10] (used reg = ) inc ax inc ax mov -$E[bp],ax -.34: +.33: ! Debug: lt int = const $1B to int j = [S+$10-$10] (used reg = ) mov ax,-$E[bp] cmp ax,*$1B -jl .35 -.36: -.32: +jl .34 +.35: +.31: mov bx,4[bp] ! Debug: eq int = const 1 to long = [bx+$38] (used reg = ) mov ax,*1 @@ -2002,7 +1917,7 @@ ret !BCC_EOS ! 120 } ! 121 } -.2F: +.2E: inc sp inc sp ! 122 return 0; @@ -2016,7 +1931,7 @@ mov -6[bp],ax mov ax,-6[bp] cmp ax,*8 blt .2D -.37: +.36: .2A: xor ax,ax add sp,*8 @@ -2063,17 +1978,7 @@ add sp,*4 mov -$E[bp],ax !BCC_EOS ! 134 -! 135 dump_ax(fsci->master_table_index[0]); -mov bx,8[bp] -! Debug: ptradd int = const 0 to [2] long = bx+$100 (used reg = ) -! Debug: list long = [bx+$100] (used reg = ) -push $102[bx] -push $100[bx] -! Debug: func () void = dump_ax+0 (used reg = ) -call _dump_ax -add sp,*4 -!BCC_EOS -! 136 disk_service_read_data_from_disk(fsci->master_table_index[0], (long) 8 , dir_table, 0x7e0); +! 135 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 @@ -2093,17 +1998,7 @@ push $100[bx] 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 [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] -! Debug: func () void = print+0 (used reg = ) -call _print -inc sp -inc sp -!BCC_EOS -! 138 split_path = string_split_c(path, '/', 0 ); +! 136 split_path = string_split_c(path, '/', 0 ); ! Debug: list int = const 0 (used reg = ) xor ax,ax push ax @@ -2118,106 +2013,51 @@ add sp,*6 ! Debug: eq * struct String_Array = ax+0 to * struct String_Array split_path = [S+$10-$E] (used reg = ) mov -$C[bp],ax !BCC_EOS -! 139 -! 140 number_of_traversal = split_path->length; +! 137 +! 138 number_of_traversal = split_path->length; mov bx,-$C[bp] ! Debug: eq unsigned int = [bx+0] to int number_of_traversal = [S+$10-8] (used reg = ) mov bx,[bx] mov -6[bp],bx !BCC_EOS -! 141 -! 142 -! 143 if (drop_filename) +! 139 +! 140 +! 141 if (drop_filename) mov ax,6[bp] test ax,ax -je .38 -.39: -! 144 { -! 145 number_of_traversal -= 1; +je .37 +.38: +! 142 { +! 143 number_of_traversal -= 1; ! Debug: subab int = const 1 to int number_of_traversal = [S+$10-8] (used reg = ) mov ax,-6[bp] dec ax mov -6[bp],ax !BCC_EOS -! 146 } -! 147 -! 148 -! 149 for (i = -.38: -! 149 0; i < number_of_traversal; ++i) +! 144 } +! 145 +! 146 +! 147 for (i = 0; i < number_of_traversal; ++i) +.37: ! Debug: eq int = const 0 to int i = [S+$10-$A] (used reg = ) xor ax,ax mov -8[bp],ax !BCC_EOS !BCC_EOS -! 150 { -br .3C -.3D: -! 151 for (j = 0; j < 8 ; ++j) +! 148 { +br .3B +.3C: +! 149 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 !BCC_EOS !BCC_EOS -! 152 { -br .40 -.41: -! 153 print_newline(); -! Debug: func () void = print_newline+0 (used reg = ) -call _print_newline -!BCC_EOS -! 154 print("New: "); -! Debug: list * char = .42+0 (used reg = ) -mov bx,#.42 -push bx -! Debug: func () void = print+0 (used reg = ) -call _print -inc sp -inc sp -!BCC_EOS -! 155 print(dir_table->entries[j].filename); -! 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 -add ax,-$E[bp] -mov bx,ax -! Debug: cast * char = const 0 to [$100] char = bx+0 (used reg = ) -! Debug: list * char = bx+0 (used reg = ) -push bx -! Debug: func () void = print+0 (used reg = ) -call _print -inc sp -inc sp -!BCC_EOS -! 156 print("vs "); -! Debug: list * char = .43+0 (used reg = ) -mov bx,#.43 -push bx -! Debug: func () void = print+0 (used reg = ) -call _print -inc sp -inc sp -!BCC_EOS -! 157 print(split_path->strings[i]->chars); -mov bx,-$C[bp] -! Debug: ptradd int i = [S+$10-$A] to * * struct Length_String = [bx+2] (used reg = ) -mov ax,-8[bp] -shl ax,*1 -add ax,2[bx] -mov bx,ax -mov bx,[bx] -! Debug: list * char = [bx+4] (used reg = ) -push 4[bx] -! Debug: func () void = print+0 (used reg = ) -call _print -inc sp -inc sp -!BCC_EOS -! 158 print_newline(); -! Debug: func () void = print_newline+0 (used reg = ) -call _print_newline -!BCC_EOS +! 150 { +jmp .3F +.40: +! 151 # 158 +! 158 ! 159 if (strcmp(dir_table->entries[j].filename, split_path->strings[i]->chars) == 0) mov bx,-$C[bp] ! Debug: ptradd int i = [S+$10-$A] to * * struct Length_String = [bx+2] (used reg = ) @@ -2242,8 +2082,8 @@ call _strcmp add sp,*4 ! Debug: logeq int = const 0 to int = ax+0 (used reg = ) test ax,ax -jne .44 -.45: +jne .41 +.42: ! 160 { ! 161 long index_sector = dir_table->entries[j].data_pointer[0]; add sp,*-4 @@ -2262,15 +2102,7 @@ mov -$10[bp],bx !BCC_EOS ! 162 ! 163 -! 164 dump_ax(index_sector); -! Debug: list long index_sector = [S+$14-$14] (used reg = ) -push -$10[bp] -push -$12[bp] -! Debug: func () void = dump_ax+0 (used reg = ) -call _dump_ax -add sp,*4 -!BCC_EOS -! 165 disk_service_read_data_from_disk(index_sector, (long) 8 , dir_table, 0x7e0); +! 164 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 @@ -2288,40 +2120,41 @@ push -$12[bp] call _disk_service_read_data_from_disk add sp,*$C !BCC_EOS -! 166 break; +! 165 break; add sp,*4 -jmp .3E +jmp .3D !BCC_EOS -! 167 } +! 166 } add sp,*4 -! 168 } -.44: -! 169 } -.3F: +! 167 +! 167 } +.41: +! 168 } +.3E: ! Debug: preinc int j = [S+$10-$C] (used reg = ) mov ax,-$A[bp] inc ax mov -$A[bp],ax -.40: +.3F: ! Debug: lt int = const 8 to int j = [S+$10-$C] (used reg = ) mov ax,-$A[bp] cmp ax,*8 -blt .41 -.46: -.3E: -! 170 return dir_table; -.3B: +jl .40 +.43: +.3D: +! 169 return dir_table; +.3A: ! Debug: preinc int i = [S+$10-$A] (used reg = ) mov ax,-8[bp] inc ax mov -8[bp],ax -.3C: +.3B: ! Debug: lt int number_of_traversal = [S+$10-8] to int i = [S+$10-$A] (used reg = ) mov ax,-8[bp] cmp ax,-6[bp] -blt .3D -.47: -.3A: +blt .3C +.44: +.39: mov ax,-$E[bp] add sp,*$A pop si @@ -2329,24 +2162,24 @@ pop di pop bp ret !BCC_EOS -! 171 } -! 172 -! 173 int lsfs_disk_read_data_from_file(file, buffer_size, data, offset_to_next_entry, data_segment) +! 170 } +! 171 +! 172 int lsfs_disk_read_data_from_file(file, buffer_size, data, offset_to_next_entry, data_segment) ! Register BX used in function lsfs_find_directory -! 174 lsfs_file *file; +! 173 lsfs_file *file; export _lsfs_disk_read_data_from_file _lsfs_disk_read_data_from_file: !BCC_EOS -! 175 unsigned int buffer_size; +! 174 unsigned int buffer_size; !BCC_EOS -! 176 char *data; +! 175 char *data; !BCC_EOS -! 177 long offset_to_next_entry; +! 176 long offset_to_next_entry; !BCC_EOS -! 178 unsigned int data_segment; +! 177 unsigned int data_segment; !BCC_EOS -! 179 { -! 180 unsigned int integer_file_size = file->size[0]; +! 178 { +! 179 unsigned int integer_file_size = file->size[0]; push bp mov bp,sp push di @@ -2359,21 +2192,21 @@ mov bx,4[bp] mov bx,$18[bx] mov -6[bp],bx !BCC_EOS -! 181 unsigned int integer_offset = offset_to_next_entry; +! 180 unsigned int integer_offset = offset_to_next_entry; dec sp dec sp ! Debug: eq long offset_to_next_entry = [S+$A+8] to unsigned int integer_offset = [S+$A-$A] (used reg = ) mov ax,$A[bp] mov -8[bp],ax !BCC_EOS -! 182 unsigned int integer_datapointer = 0; +! 181 unsigned int integer_datapointer = 0; dec sp dec sp ! Debug: eq int = const 0 to unsigned int integer_datapointer = [S+$C-$C] (used reg = ) xor ax,ax mov -$A[bp],ax !BCC_EOS -! 183 unsigned int data_length = integer_file_size - integer_offset; +! 182 unsigned int data_length = integer_file_size - integer_offset; dec sp dec sp ! Debug: sub unsigned int integer_offset = [S+$E-$A] to unsigned int integer_file_size = [S+$E-8] (used reg = ) @@ -2382,71 +2215,71 @@ sub ax,-8[bp] ! Debug: eq unsigned int = ax+0 to unsigned int data_length = [S+$E-$E] (used reg = ) mov -$C[bp],ax !BCC_EOS -! 184 unsigned int amount_read = 0; +! 183 unsigned int amount_read = 0; dec sp dec sp ! Debug: eq int = const 0 to unsigned int amount_read = [S+$10-$10] (used reg = ) xor ax,ax mov -$E[bp],ax !BCC_EOS -! 185 unsigned int amount_to_read = 0; +! 184 unsigned int amount_to_read = 0; dec sp dec sp ! Debug: eq int = const 0 to unsigned int amount_to_read = [S+$12-$12] (used reg = ) xor ax,ax mov -$10[bp],ax !BCC_EOS -! 186 unsigned int remaining_offset = offset_to_next_entry; +! 185 unsigned int remaining_offset = offset_to_next_entry; dec sp dec sp ! Debug: eq long offset_to_next_entry = [S+$14+8] to unsigned int remaining_offset = [S+$14-$14] (used reg = ) mov ax,$A[bp] mov -$12[bp],ax !BCC_EOS -! 187 void *next_data; +! 186 void *next_data; !BCC_EOS +! 187 ! 188 ! 189 -! 190 +! 190 ! 191 -! 192 -! 193 int data_pointer_index = 0; +! 192 int data_pointer_index = 0; add sp,*-4 ! Debug: eq int = const 0 to int data_pointer_index = [S+$18-$18] (used reg = ) xor ax,ax mov -$16[bp],ax !BCC_EOS -! 194 -! 195 -! 196 -! 197 if (data_length > buffer_size) +! 193 +! 194 +! 195 +! 196 if (data_length > buffer_size) ! Debug: gt unsigned int buffer_size = [S+$18+4] to unsigned int data_length = [S+$18-$E] (used reg = ) mov ax,-$C[bp] cmp ax,6[bp] -jbe .48 -.49: -! 198 { -! 199 data_length = buffer_size; +jbe .45 +.46: +! 197 { +! 198 data_length = buffer_size; ! Debug: eq unsigned int buffer_size = [S+$18+4] to unsigned int data_length = [S+$18-$E] (used reg = ) mov ax,6[bp] mov -$C[bp],ax !BCC_EOS -! 200 } -! 201 -! 202 while(data_length > 0) -.48: -! 203 { -br .4B -.4C: -! 204 -! 205 if (remaining_offset == 0) +! 199 } +! 200 +! 201 while(data_length > 0) +.45: +! 202 { +br .48 +.49: +! 203 +! 204 if (remaining_offset == 0) ! Debug: logeq int = const 0 to unsigned int remaining_offset = [S+$18-$14] (used reg = ) mov ax,-$12[bp] test ax,ax -bne .4D -.4E: -! 206 { -! 207 char *tmp_buffer = calloc(8 , 512 ); +bne .4A +.4B: +! 205 { +! 206 char *tmp_buffer = calloc(8 , 512 ); dec sp dec sp ! Debug: list int = const $200 (used reg = ) @@ -2461,34 +2294,34 @@ add sp,*4 ! Debug: eq * void = ax+0 to * char tmp_buffer = [S+$1A-$1A] (used reg = ) mov -$18[bp],ax !BCC_EOS -! 208 -! 209 -! 210 if (data_length < (8 * 512 )) +! 207 +! 208 +! 209 if (data_length < (8 * 512 )) ! Debug: lt int = const $1000 to unsigned int data_length = [S+$1A-$E] (used reg = ) mov ax,-$C[bp] cmp ax,#$1000 -jae .4F -.50: -! 211 { -! 212 amount_to_read = data_length; +jae .4C +.4D: +! 210 { +! 211 amount_to_read = data_length; ! Debug: eq unsigned int data_length = [S+$1A-$E] to unsigned int amount_to_read = [S+$1A-$12] (used reg = ) mov ax,-$C[bp] mov -$10[bp],ax !BCC_EOS -! 213 } -! 214 else -! 215 { -jmp .51 -.4F: -! 216 amount_to_read = (8 * 512 ); +! 212 } +! 213 else +! 214 { +jmp .4E +.4C: +! 215 amount_to_read = (8 * 512 ); ! Debug: eq int = const $1000 to unsigned int amount_to_read = [S+$1A-$12] (used reg = ) mov ax,#$1000 mov -$10[bp],ax !BCC_EOS -! 217 } -! 218 -! 219 integer_datapointer = file->data_pointer[data_pointer_index]; -.51: +! 216 } +! 217 +! 218 integer_datapointer = file->data_pointer[data_pointer_index]; +.4E: mov bx,4[bp] ! Debug: ptradd int data_pointer_index = [S+$1A-$18] to [$36] long = bx+$44 (used reg = ) mov ax,-$16[bp] @@ -2499,63 +2332,28 @@ add bx,ax mov bx,$44[bx] mov -$A[bp],bx !BCC_EOS -! 220 if (integer_datapointer == 0) +! 219 if (integer_datapointer == 0) ! Debug: logeq int = const 0 to unsigned int integer_datapointer = [S+$1A-$C] (used reg = ) mov ax,-$A[bp] test ax,ax -jne .52 -.53: -! 221 { -! 222 break; +jne .4F +.50: +! 220 { +! 221 break; inc sp inc sp -br .4A -!BCC_EOS -! 223 } -! 224 print_newline(); -.52: -! Debug: func () void = print_newline+0 (used reg = ) -call _print_newline +br .47 !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] -shl ax,*1 -shl ax,*1 -add bx,ax -! Debug: list long = [bx+$44] (used reg = ) -push $46[bx] -push $44[bx] -! Debug: func () void = dump_ax+0 (used reg = ) -call _dump_ax -add sp,*4 -!BCC_EOS -! 226 print_newline(); -! Debug: func () void = print_newline+0 (used reg = ) -call _print_newline -!BCC_EOS -! 227 next_data = data + amount_read; +! 222 } +! 223 next_data = data + amount_read; +.4F: ! 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] ! Debug: eq * char = ax+0 to * void next_data = [S+$1A-$16] (used reg = ) mov -$14[bp],ax !BCC_EOS -! 228 dump_ax(next_data); -! Debug: list * void next_data = [S+$1A-$16] (used reg = ) -push -$14[bp] -! Debug: func () void = dump_ax+0 (used reg = ) -call _dump_ax -inc sp -inc sp -!BCC_EOS -! 229 print_newline(); -! Debug: func () void = print_newline+0 (used reg = ) -call _print_newline -!BCC_EOS -! 230 disk_service_read_data_from_disk(file->data_pointer[data_pointer_index], (long) 8 , next_data, data_segment); +! 224 disk_service_read_data_from_disk(file->data_pointer[data_pointer_index], (long) 8 , next_data, data_segment); ! Debug: list unsigned int data_segment = [S+$1A+$C] (used reg = ) push $E[bp] ! Debug: list * void next_data = [S+$1C-$16] (used reg = ) @@ -2578,22 +2376,22 @@ push $44[bx] call _disk_service_read_data_from_disk add sp,*$C !BCC_EOS -! 231 -! 232 -! 233 -! 234 data_length -= amount_to_read; +! 225 +! 226 +! 227 +! 228 data_length -= amount_to_read; ! Debug: subab unsigned int amount_to_read = [S+$1A-$12] to unsigned int data_length = [S+$1A-$E] (used reg = ) mov ax,-$C[bp] sub ax,-$10[bp] mov -$C[bp],ax !BCC_EOS -! 235 amount_read += amount_to_read; +! 229 amount_read += amount_to_read; ! Debug: addab unsigned int amount_to_read = [S+$1A-$12] to unsigned int amount_read = [S+$1A-$10] (used reg = ) mov ax,-$E[bp] add ax,-$10[bp] mov -$E[bp],ax !BCC_EOS -! 236 data_pointer_index = data_pointer_index + 2; +! 230 data_pointer_index = data_pointer_index + 2; ! Debug: add int = const 2 to int data_pointer_index = [S+$1A-$18] (used reg = ) mov ax,-$16[bp] ! Debug: eq int = ax+2 to int data_pointer_index = [S+$1A-$18] (used reg = ) @@ -2601,20 +2399,20 @@ inc ax inc ax mov -$16[bp],ax !BCC_EOS -! 237 -! 238 } +! 231 +! 232 } inc sp inc sp -! 239 else if (remaining_offset < (8 * 512 )) -br .54 -.4D: +! 233 else if (remaining_offset < (8 * 512 )) +br .51 +.4A: ! Debug: lt int = const $1000 to unsigned int remaining_offset = [S+$18-$14] (used reg = ) mov ax,-$12[bp] cmp ax,#$1000 -bhis .55 -.56: -! 240 { -! 241 char *tmp_buffer = calloc(1, (8 * 512 )); +bhis .52 +.53: +! 234 { +! 235 char *tmp_buffer = calloc(1, (8 * 512 )); dec sp dec sp ! Debug: list int = const $1000 (used reg = ) @@ -2629,38 +2427,39 @@ add sp,*4 ! Debug: eq * void = ax+0 to * char tmp_buffer = [S+$1A-$1A] (used reg = ) mov -$18[bp],ax !BCC_EOS -! 242 -! 243 -! 244 if (data_length < ((8 * 512 ) - remaining_offset) ) +! 236 +! 237 +! 238 if (data_length < ((8 * 512 ) - remaining_offset) ) ! Debug: sub unsigned int remaining_offset = [S+$1A-$14] to int = const $1000 (used reg = ) mov ax,#$1000 sub ax,-$12[bp] ! Debug: lt unsigned int = ax+0 to unsigned int data_length = [S+$1A-$E] (used reg = ) cmp ax,-$C[bp] -jbe .57 -.58: -! 245 { -! 246 amount_to_read = data_length; +jbe .54 +.55: +! 239 { +! 240 amount_to_read = data_length; ! Debug: eq unsigned int data_length = [S+$1A-$E] to unsigned int amount_to_read = [S+$1A-$12] (used reg = ) mov ax,-$C[bp] mov -$10[bp],ax !BCC_EOS -! 247 } -! 248 else -! 249 { -jmp .59 -.57: -! 250 amount_to_read = ((8 * 512 ) - remaining_offset); +! 241 } +! 242 else +! 243 { +jmp .56 +.54: +! 244 amount_to_read = ((8 * 512 ) - remaining_off +! 244 set); ! Debug: sub unsigned int remaining_offset = [S+$1A-$14] to int = const $1000 (used reg = ) mov ax,#$1000 sub ax,-$12[bp] ! Debug: eq unsigned int = ax+0 to unsigned int amount_to_read = [S+$1A-$12] (used reg = ) mov -$10[bp],ax !BCC_EOS -! 251 } -! 252 -! 253 disk_service_read_data_from_disk(file->data_pointer[data_pointer_index], (long) 8 , tmp_buffer, 0x7e0); -.59: +! 245 } +! 246 +! 247 disk_service_read_data_from_disk(file->data_pointer[data_pointer_index], (long) 8 , tmp_buffer, 0x7e0); +.56: ! Debug: list int = const $7E0 (used reg = ) mov ax,#$7E0 push ax @@ -2684,8 +2483,8 @@ push $44[bx] call _disk_service_read_data_from_disk add sp,*$C !BCC_EOS -! 254 -! 255 memcpy(data, data_segment, (tmp_buffer + remaining_offset), 0x7e0, amount_to_read); +! 248 +! 249 memcpy(data, data_segment, (tmp_buffer + remaining_offset), 0x7e0, amount_to_read); ! Debug: list unsigned int amount_to_read = [S+$1A-$12] (used reg = ) push -$10[bp] ! Debug: list int = const $7E0 (used reg = ) @@ -2704,26 +2503,26 @@ push 8[bp] call _memcpy add sp,*$A !BCC_EOS -! 256 data_length -= amount_to_read; +! 250 data_length -= amount_to_read; ! Debug: subab unsigned int amount_to_read = [S+$1A-$12] to unsigned int data_length = [S+$1A-$E] (used reg = ) mov ax,-$C[bp] sub ax,-$10[bp] mov -$C[bp],ax !BCC_EOS -! 257 amount_read += amount_to_read; +! 251 amount_read += amount_to_read; ! Debug: addab unsigned int amount_to_read = [S+$1A-$12] to unsigned int amount_read = [S+$1A-$10] (used reg = ) mov ax,-$E[bp] add ax,-$10[bp] mov -$E[bp],ax !BCC_EOS -! 258 remaining_offset -= amount_to_read; +! 252 remaining_offset -= amount_to_read; ! Debug: subab unsigned int amount_to_read = [S+$1A-$12] to unsigned int remaining_offset = [S+$1A-$14] (used reg = ) mov ax,-$12[bp] sub ax,-$10[bp] mov -$12[bp],ax !BCC_EOS -! 259 -! 260 data_pointer_index = data_pointer_index + 2; +! 253 +! 254 data_pointer_index = data_pointer_index + 2; ! Debug: add int = const 2 to int data_pointer_index = [S+$1A-$18] (used reg = ) mov ax,-$16[bp] ! Debug: eq int = ax+2 to int data_pointer_index = [S+$1A-$18] (used reg = ) @@ -2731,22 +2530,22 @@ inc ax inc ax mov -$16[bp],ax !BCC_EOS -! 261 -! 262 } +! 255 +! 256 } inc sp inc sp -! 263 else -! 264 { -jmp .5A -.55: -! 265 -! 266 remaining_offset -= (8 * 512 ); +! 257 else +! 258 { +jmp .57 +.52: +! 259 +! 260 remaining_offset -= (8 * 512 ); ! Debug: subab int = const $1000 to unsigned int remaining_offset = [S+$18-$14] (used reg = ) mov ax,-$12[bp] add ax,#-$1000 mov -$12[bp],ax !BCC_EOS -! 267 data_pointer_index = data_pointer_index + 2; +! 261 data_pointer_index = data_pointer_index + 2; ! Debug: add int = const 2 to int data_pointer_index = [S+$18-$18] (used reg = ) mov ax,-$16[bp] ! Debug: eq int = ax+2 to int data_pointer_index = [S+$18-$18] (used reg = ) @@ -2754,21 +2553,21 @@ inc ax inc ax mov -$16[bp],ax !BCC_EOS -! 268 } -! 269 -! 270 } -.5A: -.54: -! 271 # 275 -! 275 -! 276 return amount_read; -.4B: +! 262 } +! 263 +! 264 } +.57: +.51: +! 265 # 269 +! 269 +! 270 return amount_read; +.48: ! Debug: gt int = const 0 to unsigned int data_length = [S+$18-$E] (used reg = ) mov ax,-$C[bp] test ax,ax -bne .4C -.5B: -.4A: +bne .49 +.58: +.47: mov ax,-$E[bp] add sp,*$12 pop si @@ -2776,9 +2575,9 @@ pop di pop bp ret !BCC_EOS -! 277 -! 278 } -! 279 # 4 "main.c" +! 271 +! 272 } +! 273 # 4 "main.c" ! 4 int main(selector, pointer_parameter_segment, pointer_parameter_struct) ! Register BX used in function lsfs_disk_read_data_from_file ! 5 int selector; @@ -2800,14 +2599,14 @@ _main: !BCC_EOS ! 15 Parameter_Struct parameter_struct; !BCC_EOS -! 16 int local_segment = 0x50; +! 16 int local_segment = 0x7e0; push bp mov bp,sp push di push si add sp,#-$1014 -! Debug: eq int = const $50 to int local_segment = [S+$101A-$101A] (used reg = ) -mov ax,*$50 +! Debug: eq int = const $7E0 to int local_segment = [S+$101A-$101A] (used reg = ) +mov ax,#$7E0 mov -$1018[bp],ax !BCC_EOS ! 17 unsigned int heap_start = 0x2200; @@ -2862,14 +2661,13 @@ mov ax,4[bp] mov -6[bp],ax !BCC_EOS ! 26 -! 27 ! 27 switch (service_action) mov ax,-6[bp] ! 28 { -br .5E +br .5B ! 29 case SERIVCE_LOAD_DISK: ! 30 { -.5F: +.5C: ! 31 ! 32 ! 33 @@ -2908,15 +2706,19 @@ call _disk_service_read_data_from_disk add sp,*$C !BCC_EOS ! 38 print("File System has been loaded: "); -! Debug: list * char = .60+0 (used reg = ) -mov bx,#.60 +! Debug: list * char = .5D+0 (used reg = ) +mov bx,#.5D push bx ! Debug: func () void = print+0 (used reg = ) call _print inc sp inc sp !BCC_EOS -! 39 print(fsci->filesystem_information); +! 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+$102A-$102A] (used reg = ) ! Debug: list * char fsci = [S+$102A-$102A] (used reg = ) push -$1028[bp] @@ -2925,19 +2727,32 @@ call _print inc sp inc sp !BCC_EOS -! 40 } break; -br .5C +! 41 print("16-bit implementation "); +! Debug: list * char = .5E+0 (used reg = ) +mov bx,#.5E +push bx +! Debug: func () void = print+0 (used reg = ) +call _print +inc sp +inc sp !BCC_EOS -! 41 case SERVICE_FIND_ENTRY: -! 42 { -.61: -! 43 String_Array *path_array; +! 42 print_newline(); +! Debug: func () void = print_newline+0 (used reg = ) +call _print_newline !BCC_EOS -! 44 lsfs_file* find_file; +! 43 } break; +br .59 !BCC_EOS -! 45 int i; +! 44 case SERVICE_FIND_ENTRY: +! 45 { +.5F: +! 46 String_Array *path_array; +!BCC_EOS +! 47 lsfs_file* find_file; +!BCC_EOS +! 48 int i; !BCC_EOS -! 46 disk_service_read_data_from_disk(fsci->master_table_index[0], (long) 8 , ¤t_table, stack_segment); +! 49 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 = ) @@ -2957,10 +2772,11 @@ push $100[bx] call _disk_service_read_data_from_disk add sp,*$C !BCC_EOS -! 47 # 56 -! 56 -! 57 -! 58 memcpy(¶meter_struct, stack_segment, pointer_parameter_struct, pointer_parameter_segment, sizeof(Parameter_Struct)); +! 50 # 59 +! 59 +! 60 +! 61 memcpy(¶meter_struct +! 61 , stack_segment, pointer_parameter_struct, pointer_parameter_segment, sizeof(Parameter_Struct)); ! Debug: list int = const $10 (used reg = ) mov ax,*$10 push ax @@ -2977,7 +2793,7 @@ push bx call _memcpy add sp,*$A !BCC_EOS -! 59 path_length = strlen(parameter_struct.path, pointer_parameter_segment); +! 62 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+$1032-$1018] (used reg = ) @@ -2988,7 +2804,7 @@ add sp,*4 ! Debug: eq int = ax+0 to int path_length = [S+$1030-$1022] (used reg = ) mov -$1020[bp],ax !BCC_EOS -! 60 local_path = malloc(256); +! 63 local_path = malloc(256); ! Debug: list int = const $100 (used reg = ) mov ax,#$100 push ax @@ -2999,7 +2815,7 @@ inc sp ! Debug: eq * void = ax+0 to * char local_path = [S+$1030-$1028] (used reg = ) mov -$1026[bp],ax !BCC_EOS -! 61 memcpy(local_path, local_segment, parameter_struct.path, pointer_parameter_segment, path_length); +! 64 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 = ) @@ -3014,7 +2830,7 @@ push -$1026[bp] call _memcpy add sp,*$A !BCC_EOS -! 62 local_path[path_length] = 0; +! 65 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] @@ -3023,7 +2839,16 @@ mov bx,ax xor al,al mov [bx],al !BCC_EOS -! 63 print(local_path); +! 66 print("Read file: "); +! Debug: list * char = .60+0 (used reg = ) +mov bx,#.60 +push bx +! Debug: func () void = print+0 (used reg = ) +call _print +inc sp +inc sp +!BCC_EOS +! 67 print(local_path); ! Debug: list * char local_path = [S+$1030-$1028] (used reg = ) push -$1026[bp] ! Debug: func () void = print+0 (used reg = ) @@ -3031,8 +2856,12 @@ call _print inc sp inc sp !BCC_EOS -! 64 -! 65 path_array = string_split_c(local_path, '/', 0); +! 68 print_newline(); +! Debug: func () void = print_newline+0 (used reg = ) +call _print_newline +!BCC_EOS +! 69 +! 70 path_array = string_split_c(local_path, '/', 0); ! Debug: list int = const 0 (used reg = ) xor ax,ax push ax @@ -3047,52 +2876,8 @@ add sp,*6 ! Debug: eq * struct String_Array = ax+0 to * struct String_Array path_array = [S+$1030-$102C] (used reg = ) mov -$102A[bp],ax !BCC_EOS -! 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 -$102E[bp],ax -!BCC_EOS -!BCC_EOS -! 70 { -jmp .64 -.65: -! 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 -mov bx,[bx] -! Debug: list * char = [bx+4] (used reg = ) -push 4[bx] -! Debug: func () void = print+0 (used reg = ) -call _print -inc sp -inc sp -!BCC_EOS -! 72 -! 73 } -! 74 -! 75 -! 76 -! 77 find_file = calloc(sizeof(lsfs_file), 1); -.63: -! Debug: preinc int i = [S+$1030-$1030] (used reg = ) -mov ax,-$102E[bp] -inc ax -mov -$102E[bp],ax -.64: -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: +! 71 +! 72 find_file = calloc(sizeof(lsfs_file), 1); ! Debug: list int = const 1 (used reg = ) mov ax,*1 push ax @@ -3105,7 +2890,7 @@ add sp,*4 ! 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) ) +! 73 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 = ) @@ -3116,58 +2901,45 @@ push -$102C[bp] 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 -! 81 } -! 82 -! 83 print("Buffer_address: "); -.67: -! Debug: list * char = .6A+0 (used reg = ) -mov bx,#.6A +jne .61 +.62: +! 74 { +! 75 print("File not found"); +! Debug: list * char = .63+0 (used reg = ) +mov bx,#.63 push bx ! Debug: func () void = print+0 (used reg = ) call _print inc sp inc sp !BCC_EOS -! 84 dump_ax(parameter_struct.buffer_address); -! 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 +! 76 print_newline(); +! Debug: func () void = print_newline+0 (used reg = ) +call _print_newline !BCC_EOS -! 85 -! 86 print("Buffer_segmnent: "); -! Debug: list * char = .6B+0 (used reg = ) -mov bx,#.6B +! 77 } +! 78 else +! 79 { +jmp .64 +.61: +! 80 print("File has been read"); +! Debug: list * char = .65+0 (used reg = ) +mov bx,#.65 push bx ! Debug: func () void = print+0 (used reg = ) call _print inc sp inc sp !BCC_EOS -! 87 dump_ax(parameter_struct.buffer_segment); -! 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 +! 81 print_newline(); +! Debug: func () void = print_newline+0 (used reg = ) +call _print_newline !BCC_EOS -! 88 -! 89 lsfs_disk_read_data_from_file(find_file, parameter_struct.buffer_size, parameter_struct.buffer_address, (long) 0x0, parameter_struct.buffer_segment); +! 82 } +! 83 # 90 +! 90 +! 91 lsfs_disk_read_data_from_file(find_file, parameter_struct.buffer_size, parameter_struct.buffer_address, (long) 0x0, parameter_struct.buffer_segment); +.64: ! Debug: list unsigned int parameter_struct = [S+$1030-$1014] (used reg = ) push -$1012[bp] ! Debug: list long = const 0 (used reg = ) @@ -3185,49 +2957,48 @@ push -$102C[bp] call _lsfs_disk_read_data_from_file add sp,*$C !BCC_EOS -! 90 -! 91 -! 92 } break; -jmp .5C +! 92 +! 93 +! 94 } break; +jmp .59 !BCC_EOS -! 93 case SERIVCE_READ_DATA: -! 94 -! 94 { -.6C: -! 95 # 103 -! 103 -! 104 print("Hit READ case"); -! Debug: list * char = .6D+0 (used reg = ) -mov bx,#.6D +! 95 case SERIVCE_READ_DATA: +! 96 { +.66: +! 97 # 105 +! 105 +! 106 print("Hit READ case"); +! Debug: list * char = .67+0 (used reg = ) +mov bx,#.67 push bx ! Debug: func () void = print+0 (used reg = ) call _print inc sp inc sp !BCC_EOS -! 105 } break; -jmp .5C +! 107 } break; +jmp .59 !BCC_EOS -! 106 case SERIVCE_WRITE_DATA: -! 107 { -.6E: -! 108 print("Hit WRITE case"); -! Debug: list * char = .6F+0 (used reg = ) -mov bx,#.6F +! 108 case SERIVCE_WRITE_DATA: +! 109 { +.68: +! 110 print("Hit WRITE case"); +! 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 -! 109 } break; -jmp .5C +! 111 } break; +jmp .59 !BCC_EOS -! 110 case SERIVCE_WRITE_FS_INFO: -! 111 { -.70: -! 112 -! 113 print(fsci->filesystem_information); +! 112 case SERIVCE_WRITE_FS_INFO: +! 113 { +.6A: +! 114 +! 115 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] @@ -3236,24 +3007,24 @@ call _print inc sp inc sp !BCC_EOS -! 114 -! 115 } break; -br .5C +! 116 +! 117 } break; +jmp .59 !BCC_EOS -! 116 -! 117 default: -! 118 { -.71: -! 119 print("Default case: "); -! Debug: list * char = .72+0 (used reg = ) -mov bx,#.72 +! 118 +! 119 default: +! 120 { +.6B: +! 121 print("Default case: "); +! Debug: list * char = .6C+0 (used reg = ) +mov bx,#.6C push bx ! Debug: func () void = print+0 (used reg = ) call _print inc sp inc sp !BCC_EOS -! 120 dump_ax(service_action); +! 122 dump_ax(service_action); ! Debug: list int service_action = [S+$102A-8] (used reg = ) push -6[bp] ! Debug: func () void = dump_ax+0 (used reg = ) @@ -3261,25 +3032,25 @@ call _dump_ax inc sp inc sp !BCC_EOS -! 121 } -! 122 } -! 123 -! 124 return 0; -jmp .5C -.5E: +! 123 } +! 124 } +! 125 +! 126 return 0; +jmp .59 +.5B: add sp,*-6 sub ax,*1 -beq .5F +beq .5C sub ax,*1 -beq .61 +beq .5F sub ax,*1 -je .6C +je .66 sub ax,*1 -je .6E +je .68 sub ax,*6 -je .70 -jmp .71 -.5C: +je .6A +jmp .6B +.59: ..FFFF = -$1030 add sp,*6 xor ax,ax @@ -3289,49 +3060,41 @@ pop di pop bp ret !BCC_EOS -! 125 -! 126 } ! 127 +! 128 } +! 129 ! Register BX used in function main -.72: -.73: +.6C: +.6D: .ascii "Default case: " .byte 0 -.6F: -.74: +.69: +.6E: .ascii "Hit WRITE case" .byte 0 -.6D: -.75: +.67: +.6F: .ascii "Hit READ case" .byte 0 -.6B: -.76: -.ascii "Buffer_segmnent: " -.byte 0 -.6A: -.77: -.ascii "Buffer_address: " +.65: +.70: +.ascii "File has been read" .byte 0 -.69: -.78: +.63: +.71: .ascii "File not found" .byte 0 .60: -.79: -.ascii "File System has been loaded: " -.byte 0 -.43: -.7A: -.ascii "vs " +.72: +.ascii "Read file: " .byte 0 -.42: -.7B: -.ascii "New: " +.5E: +.73: +.ascii "16-bit implementation " .byte 0 -.2E: -.7C: -.ascii "Size of table_entry: " +.5D: +.74: +.ascii "File System has been loaded: " .byte 0 .bss