1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-12-27 01:31:42 +00:00

Adjusted the Acorn tape parser to avoid signed left shifts.

This commit is contained in:
Thomas Harte 2017-10-17 22:34:49 -04:00
parent ba5f668338
commit 7c8e830b90
2 changed files with 7 additions and 7 deletions

View File

@ -41,14 +41,14 @@ int Parser::get_next_byte(const std::shared_ptr<Storage::Tape::Tape> &tape) {
return value; return value;
} }
int Parser::get_next_short(const std::shared_ptr<Storage::Tape::Tape> &tape) { unsigned int Parser::get_next_short(const std::shared_ptr<Storage::Tape::Tape> &tape) {
int result = get_next_byte(tape); unsigned int result = static_cast<unsigned int>(get_next_byte(tape));
result |= get_next_byte(tape) << 8; result |= static_cast<unsigned int>(get_next_byte(tape)) << 8;
return result; return result;
} }
int Parser::get_next_word(const std::shared_ptr<Storage::Tape::Tape> &tape) { unsigned int Parser::get_next_word(const std::shared_ptr<Storage::Tape::Tape> &tape) {
int result = get_next_short(tape); unsigned int result = get_next_short(tape);
result |= get_next_short(tape) << 8; result |= get_next_short(tape) << 8;
return result; return result;
} }

View File

@ -53,8 +53,8 @@ class Parser: public Storage::Tape::Parser<SymbolType>, public Shifter::Delegate
int get_next_bit(const std::shared_ptr<Storage::Tape::Tape> &tape); int get_next_bit(const std::shared_ptr<Storage::Tape::Tape> &tape);
int get_next_byte(const std::shared_ptr<Storage::Tape::Tape> &tape); int get_next_byte(const std::shared_ptr<Storage::Tape::Tape> &tape);
int get_next_short(const std::shared_ptr<Storage::Tape::Tape> &tape); unsigned int get_next_short(const std::shared_ptr<Storage::Tape::Tape> &tape);
int get_next_word(const std::shared_ptr<Storage::Tape::Tape> &tape); unsigned int get_next_word(const std::shared_ptr<Storage::Tape::Tape> &tape);
void reset_crc(); void reset_crc();
uint16_t get_crc(); uint16_t get_crc();