mirror of
https://github.com/NeoFlock/neonucleus.git
synced 2025-09-24 09:03:32 +02:00
fix byte indexing for drives
This commit is contained in:
parent
20fecebb90
commit
7c15adc305
@ -73,11 +73,10 @@ void nn_drive_writeSector(nn_drive *drive, void *_, nn_component *component, nn_
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
void nn_drive_readByte(nn_drive *drive, void *_, nn_component *component, nn_computer *computer) {
|
void nn_drive_readByte(nn_drive *drive, void *_, nn_component *component, nn_computer *computer) {
|
||||||
// TODO: calculate the right index aaaaargh
|
|
||||||
nn_value offsetValue = nn_getArgument(computer, 0);
|
nn_value offsetValue = nn_getArgument(computer, 0);
|
||||||
size_t disk_offset = nn_toInt(offsetValue);
|
size_t disk_offset = nn_toInt(offsetValue) - 1;
|
||||||
size_t sector_size = drive->getSectorSize(component, drive->userdata);
|
size_t sector_size = drive->getSectorSize(component, drive->userdata);
|
||||||
int sector = disk_offset / sector_size;
|
int sector = (disk_offset / sector_size) + 1;
|
||||||
size_t sector_offset = disk_offset % sector_size;
|
size_t sector_offset = disk_offset % sector_size;
|
||||||
|
|
||||||
char buf[sector_size];
|
char buf[sector_size];
|
||||||
@ -86,13 +85,12 @@ void nn_drive_readByte(nn_drive *drive, void *_, nn_component *component, nn_com
|
|||||||
nn_return(computer, nn_values_integer(buf[sector_offset]));
|
nn_return(computer, nn_values_integer(buf[sector_offset]));
|
||||||
}
|
}
|
||||||
void nn_drive_writeByte(nn_drive *drive, void *_, nn_component *component, nn_computer *computer) {
|
void nn_drive_writeByte(nn_drive *drive, void *_, nn_component *component, nn_computer *computer) {
|
||||||
// TODO: calculate the right index aaaaargh
|
|
||||||
nn_value offsetValue = nn_getArgument(computer, 0);
|
nn_value offsetValue = nn_getArgument(computer, 0);
|
||||||
nn_value writeValue = nn_getArgument(computer, 1);
|
nn_value writeValue = nn_getArgument(computer, 1);
|
||||||
size_t disk_offset = nn_toInt(offsetValue);
|
size_t disk_offset = nn_toInt(offsetValue) - 1;
|
||||||
char write = nn_toInt(writeValue);
|
char write = nn_toInt(writeValue);
|
||||||
size_t sector_size = drive->getSectorSize(component, drive->userdata);
|
size_t sector_size = drive->getSectorSize(component, drive->userdata);
|
||||||
int sector = disk_offset / sector_size;
|
int sector = (disk_offset / sector_size) + 1;
|
||||||
size_t sector_offset = disk_offset % sector_size;
|
size_t sector_offset = disk_offset % sector_size;
|
||||||
|
|
||||||
char buf[sector_size];
|
char buf[sector_size];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user