From 86f4463935d24402153ad8a89687a2a4b427433d Mon Sep 17 00:00:00 2001 From: Robert Pengelly Date: Wed, 7 Aug 2024 12:11:41 +0100 Subject: [PATCH] Fixed off by 1 bugs --- build/chimaera.img | Bin 368640 -> 368640 bytes build/chimaera.vhd | Bin 34120704 -> 34120704 bytes src/apps/hello/hello.asm | 4 +- src/kernel/file.asm | 86 +++++++++++++++++++++++++++++++++++---- 4 files changed, 80 insertions(+), 10 deletions(-) diff --git a/build/chimaera.img b/build/chimaera.img index c557ec32ece0d8483a2638fcac5af373429a7b09..2979e9a6ab4ad936b400bfd86c80bf5a0f0bdb0b 100644 GIT binary patch delta 5157 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 LgUi^ViQxV}4{UG> diff --git a/build/chimaera.vhd b/build/chimaera.vhd index 4f0093bfadd441215f898dbee5b4b661fd9829b3..cb81b9896e35a529d13f514c119092e474b81155 100644 GIT binary patch delta 7778 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 delta 7776 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