/* Adress to dump ax, 7C2A*/ /* Address to print 7C47*/ /* */ /* */ #include "main.h" int main(selector, pointer_parameter_segment, pointer_parameter_struct) int selector; void* pointer_parameter_segment; void* pointer_parameter_struct; { /* selectot should be a "selector" for which disk service*/ /* one wnats to use. */ /* 0 should not be used, to try to ensure that a value has been set explicitly. */ FSCI fsci; Service_Action service_action; Directory_Table current_table; Parameter_Struct parameter_struct; int local_segment = 0x7e0; unsigned int heap_start = 0x2000; unsigned int heap_end = 0xffff; int stack_segment = 0x8fc0; int path_length; long index_as_long; char *local_path = 0; service_action = selector; switch (service_action) { case SERIVCE_LOAD_DISK: { /* What do we need to know: Index of FSCI */ index_as_long = pointer_parameter_struct; disk_service_read_data_from_disk(index_as_long, 1, &fsci, stack_segment); print("File System has been loaded: "); print_newline(); set_heap_settings(heap_start, heap_end); print_stack(fsci.filesystem_information); print_newline(); } break; case SERVICE_FIND_ENTRY: { String_Array *path_array; int i; memcpy(¶meter_struct, stack_segment, pointer_parameter_struct, pointer_parameter_segment, sizeof(Parameter_Struct)); path_length = strlen(parameter_struct.path, pointer_parameter_segment); local_path = malloc(256); memcpy(local_path, local_segment, parameter_struct.path, pointer_parameter_segment, path_length); local_path[path_length] = 0; print(local_path); path_array = string_split_c(local_path, '/', 0); 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(); disk_service_read_data_from_disk(fsci.master_table_index[0], DEFAULT_TABLE_SIZE, ¤t_table, stack_segment); print("Current table: "); print_newline(); print_stack(current_table.entries[0].filename); print_newline(); print_stack(current_table.entries[1].filename); print_newline(); print_stack(current_table.entries[2].filename); print_newline(); } break; case SERIVCE_READ_DATA: { /* What do we need to know: path Buffer: destination_segment destination_address buffer_size offset_into_file */ print("Hit READ case"); } break; case SERIVCE_WRITE_DATA: { print("Hit WRITE case"); } break; default: { print("Default case"); } } return 0; } /* void load_*/