diff options
Diffstat (limited to 'Chip/BusDevice.cs')
| -rw-r--r-- | Chip/BusDevice.cs | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/Chip/BusDevice.cs b/Chip/BusDevice.cs index e1f559c..8b677c5 100644 --- a/Chip/BusDevice.cs +++ b/Chip/BusDevice.cs @@ -14,20 +14,26 @@ public abstract class BusDevice public abstract u8 Read(u16 address); public abstract void Write(u16 address, u8 value); - public abstract ref8 ReadSeq(u16 address, u16 length); - public abstract void WriteSeq(u16 address, u16 length, ref8 value); - public u16 ReadWord(u16 address) { - ref8 data = this.ReadSeq(address, 2); - u16 value = Make.u16(data); + u8 high = this.Read(address); + u8 low = this.Read((u16) (address + 1)); + u16 value = Make.u16(high, low); return value; } public void WriteWord(u16 address, u16 value) { ref8 data = Make.ref8(value); - this.WriteSeq(address, 2, data); + this.Write(address, data[0]); + this.Write((u16) (address + 1), data[1]); + } + + public i16 ReadSignedWord(u16 address) + { + u8 high = this.Read(address); + u8 low = this.Read((u16) (address + 1)); + return Make.i16(high, low); } public virtual void Clock() { } |
