From 9eb3ef14889f355421196b1309d774e4b02bd321 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Szostak?= Date: Sat, 20 Apr 2024 16:44:04 +0200 Subject: [PATCH] Implemented a memory array --- src/sillymachine.adb | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/sillymachine.adb b/src/sillymachine.adb index 98f1c9b..fa3d8b1 100644 --- a/src/sillymachine.adb +++ b/src/sillymachine.adb @@ -16,6 +16,8 @@ procedure sillymachine is I : Integer := 0; Value : Byte; + MemorySize : Integer := 1048576; -- default memory is 1 mb (TODO: figure out why 8 mb produces STORAGE_ERROR) + begin ValidHeader (0) := 6; @@ -37,7 +39,7 @@ begin if Argument_Count = 0 then New_Line(1); - Put_Line("Usage: sillymachine "); + Put_Line("Usage: sillymachine "); New_Line(1); goto THE_END; end if; @@ -62,7 +64,24 @@ begin end loop; Put_Line("Header passed"); + if Argument_Count > 1 then + MemorySize := 1048576 * Integer'Value(Argument (2)); + end if; + + declare + MemoryArr : ByteArr (0 .. MemorySize); + begin + for i in 0 .. MemorySize loop -- zero initialise memory + MemoryArr (i) := 0; + end loop; + + + + end; + << THE_END >> exception when Name_Error => New_Line(1); Put("Error: File '"); Put(FileName); Put_Line("' does not exist!"); New_Line(1); + when Constraint_Error => New_Line(1); Put_Line("Error: Memory should be passed as an Integer"); New_Line(1); + when Storage_Error => New_Line(1); Put_Line("Error: Something went silly!"); New_Line(1); end sillymachine;