Implemented a memory array

This commit is contained in:
Bartłomiej Szostak 2024-04-20 16:44:04 +02:00
parent ce51ce0b19
commit 9eb3ef1488
No known key found for this signature in database
GPG Key ID: 562DACF230A18086

View File

@ -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 <sm binary file>");
Put_Line("Usage: sillymachine <sm binary file> <number of megabytes for wanted memory (optional)>");
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;