You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

108 lines
3.3 KiB

/* 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(&parameter_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, &current_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_*/