mirror of
https://github.com/pevans/erc-c.git
synced 2024-12-21 08:30:55 +00:00
Add set16 function
This commit is contained in:
parent
6af0ae85a4
commit
fcba14f91b
@ -58,6 +58,7 @@ extern int vm_segment_copy_buf(vm_segment *, const vm_8bit *, size_t, size_t, si
|
|||||||
extern int vm_segment_fread(vm_segment *, FILE *, size_t, size_t);
|
extern int vm_segment_fread(vm_segment *, FILE *, size_t, size_t);
|
||||||
extern int vm_segment_read_map(vm_segment *, size_t, vm_segment_read_fn);
|
extern int vm_segment_read_map(vm_segment *, size_t, vm_segment_read_fn);
|
||||||
extern int vm_segment_set(vm_segment *, size_t, vm_8bit);
|
extern int vm_segment_set(vm_segment *, size_t, vm_8bit);
|
||||||
|
extern int vm_segment_set16(vm_segment *, size_t, vm_16bit);
|
||||||
extern int vm_segment_write_map(vm_segment *, size_t, vm_segment_write_fn);
|
extern int vm_segment_write_map(vm_segment *, size_t, vm_segment_write_fn);
|
||||||
extern vm_16bit vm_segment_get16(vm_segment *, size_t);
|
extern vm_16bit vm_segment_get16(vm_segment *, size_t);
|
||||||
extern vm_8bit vm_segment_get(vm_segment *, size_t);
|
extern vm_8bit vm_segment_get(vm_segment *, size_t);
|
||||||
|
@ -303,3 +303,28 @@ vm_segment_get_map_machine()
|
|||||||
{
|
{
|
||||||
return map_mach;
|
return map_mach;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
vm_segment_set16(vm_segment *segment, size_t addr, vm_16bit value)
|
||||||
|
{
|
||||||
|
vm_8bit lsb, msb;
|
||||||
|
int err;
|
||||||
|
|
||||||
|
lsb = value & 0xff;
|
||||||
|
msb = value >> 8;
|
||||||
|
|
||||||
|
// This data needs to be saved in little-endian order; e.g. if we
|
||||||
|
// get $1234, then we need to store it as $34 $12.
|
||||||
|
err = vm_segment_set(segment, addr, lsb);
|
||||||
|
|
||||||
|
// If the previous set() worked out, then let's try it again with
|
||||||
|
// the msb.
|
||||||
|
if (err == OK) {
|
||||||
|
err = vm_segment_set(segment, addr + 1, msb);
|
||||||
|
}
|
||||||
|
|
||||||
|
// If err != OK above, we will just return the err code. If err was
|
||||||
|
// OK, but is not OK after the msb set, then we'll return with that
|
||||||
|
// code.
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
@ -174,3 +174,9 @@ Test(vm_segment, get16)
|
|||||||
|
|
||||||
cr_assert_eq(vm_segment_get16(segment, 0), 0x1234);
|
cr_assert_eq(vm_segment_get16(segment, 0), 0x1234);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Test(vm_segment, set16)
|
||||||
|
{
|
||||||
|
vm_segment_set16(segment, 0, 0x2345);
|
||||||
|
cr_assert_eq(vm_segment_get16(segment, 0), 0x2345);
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user