diff --git a/Source/Core/Core/DSP/DSPAssembler.cpp b/Source/Core/Core/DSP/DSPAssembler.cpp index b535557b05..8f4f51f278 100644 --- a/Source/Core/Core/DSP/DSPAssembler.cpp +++ b/Source/Core/Core/DSP/DSPAssembler.cpp @@ -46,7 +46,8 @@ static const char* err_string[] = {"", "Wrong parameter: must be accumulator register", "Wrong parameter: must be mid accumulator register", "Invalid register", - "Number out of range"}; + "Number out of range", + "Program counter out of range"}; DSPAssembler::DSPAssembler(const AssemblerSettings& settings) : m_cur_addr(0), m_cur_pass(0), m_current_param(0), settings_(settings) @@ -944,9 +945,14 @@ bool DSPAssembler::AssemblePass(const std::string& text, int pass) if (strcmp("ORG", opcode) == 0) { if (params[0].type == P_VAL) + { + m_totalSize = std::max(m_cur_addr, params[0].val); m_cur_addr = params[0].val; + } else + { ShowError(ERR_EXPECTED_PARAM_VAL); + } continue; } diff --git a/Source/Core/Core/DSP/DSPAssembler.h b/Source/Core/Core/DSP/DSPAssembler.h index b2dfef56ec..aab86f92e9 100644 --- a/Source/Core/Core/DSP/DSPAssembler.h +++ b/Source/Core/Core/DSP/DSPAssembler.h @@ -42,7 +42,8 @@ enum err_t ERR_WRONG_PARAMETER_ACC, ERR_WRONG_PARAMETER_MID_ACC, ERR_INVALID_REGISTER, - ERR_OUT_RANGE_NUMBER + ERR_OUT_RANGE_NUMBER, + ERR_OUT_RANGE_PC, }; // Unless you want labels to carry over between files, you probably