From a5b17932caa75aa69245c639ab0a8084b2448446 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Thu, 8 Sep 2016 21:09:37 -0400 Subject: [PATCH] Attempted further to improve memory model guesswork. With many further improvements to make... --- StaticAnalyser/Commodore/CommodoreAnalyser.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/StaticAnalyser/Commodore/CommodoreAnalyser.cpp b/StaticAnalyser/Commodore/CommodoreAnalyser.cpp index f744a8b85..22b9d74ec 100644 --- a/StaticAnalyser/Commodore/CommodoreAnalyser.cpp +++ b/StaticAnalyser/Commodore/CommodoreAnalyser.cpp @@ -83,6 +83,8 @@ void StaticAnalyser::Commodore::AddTargets( if(is_basic) { target.loadingCommand = "LOAD\"\",1,0\nRUN\n"; + + // make a first guess based on loading address switch(files.front().starting_address) { case 0x1001: @@ -94,6 +96,21 @@ void StaticAnalyser::Commodore::AddTargets( target.vic20.memory_model = Vic20MemoryModel::EightKB; break; } + + // An unexpanded machine has 3583 bytes free for BASIC; + // a 3kb expanded machine has 6655 bytes free. + + // we'll be relocating though, so up size if necessary + size_t file_size = files.front().data.size(); + if(file_size > 6655) + { + target.vic20.memory_model = Vic20MemoryModel::ThirtyTwoKB; + } + else if(file_size > 3583) + { + if(target.vic20.memory_model == Vic20MemoryModel::Unexpanded) + target.vic20.memory_model = Vic20MemoryModel::EightKB; + } } else {