diff --git a/src/agon_machine.rs b/src/agon_machine.rs index 7140e82..d52fdcc 100644 --- a/src/agon_machine.rs +++ b/src/agon_machine.rs @@ -999,7 +999,9 @@ impl AgonMachine { // save the size in the FIL structure let mut file_len = f.seek(SeekFrom::End(0)).unwrap(); - f.seek(SeekFrom::Start(0)).unwrap(); + if mode & mos::FA_SEEKEND == 0 { + f.seek(SeekFrom::Start(0)).unwrap(); + } // XXX don't support files larger than 512KiB file_len = file_len.min(1<<19); @@ -1018,7 +1020,6 @@ impl AgonMachine { _ => cpu.state.reg.set24(Reg16::HL, 1) } } - } Environment::new(&mut cpu.state, self).subroutine_return(); } diff --git a/src/mos.rs b/src/mos.rs index cd9f2eb..f1667b1 100644 --- a/src/mos.rs +++ b/src/mos.rs @@ -21,6 +21,7 @@ pub const FILINFO_MEMBER_FNAME_256BYTES: u32 = 22; pub const FA_WRITE: u32 = 2; pub const FA_CREATE_NEW: u32 = 4; pub const FA_CREATE_ALWAYS: u32 = 8; +pub const FA_SEEKEND: u32 = 0x20; #[derive(Clone, Default)] pub struct MosMap {