1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-11-21 21:33:54 +00:00

Test digits individually; CSLs autolink.

This commit is contained in:
Thomas Harte 2024-08-07 22:44:48 -04:00
parent ef11262721
commit 30b1b36e63
2 changed files with 34 additions and 29 deletions

View File

@ -951,18 +951,23 @@ class ConcreteMachine:
const auto code = uint16_t(
((ssm_code_ << 8) & 0xff00) | ((ssm_code_ >> 16) & 0x00ff)
);
ssm_code_ = 0;
const auto is_valid = [](uint8_t digit) {
return
(digit <= 0x3f) ||
(digit >= 0x7f && digit <= 0x9f) ||
(digit >= 0xa4 && digit <= 0xa7) ||
(digit >= 0xac && digit <= 0xaf) ||
(digit >= 0xb4 && digit <= 0xb7) ||
(digit >= 0xbc && digit <= 0xbf) ||
(digit >= 0xc0 && digit <= 0xfd);
};
if(
(code <= 0x3f3f) ||
(code >= 0x7f7f && code <= 0x9f9f) ||
(code >= 0xa4a4 && code <= 0xa7a7) ||
(code >= 0xacac && code <= 0xafaf) ||
(code >= 0xb4b4 && code <= 0xb7b7) ||
(code >= 0xbcbc && code <= 0xbfbf) ||
(code >= 0xc0c0 && code <= 0xfdfd)
is_valid(static_cast<uint8_t>(code)) && is_valid(static_cast<uint8_t>(code >> 8))
) {
ssm_delegate_->perform(code);
ssm_code_ = 0;
}
}
} else if((ssm_code_ & 0xffff) == 0xedfe) {

View File

@ -178,7 +178,7 @@ private:
if(!lazy_machine) {
Machine::Error error;
lazy_machine = Machine::MachineForTarget(&target, CSROMFetcher(), error);
reinterpret_cast<AmstradCPC::Machine *>(lazy_machine->raw_pointer())
static_cast<AmstradCPC::Machine *>(lazy_machine->raw_pointer())
->set_ssm_delegate(&ssm_delegate);
lazy_machine->scan_producer()->set_scan_target(&scan_target);
@ -295,38 +295,38 @@ private:
- (void)testModuleA {
[self testModulePath:@"MODULE A" name:@"SHAKE26A-0.CSL"];
[self testModulePath:@"MODULE A" name:@"SHAKE26A-1.CSL"];
[self testModulePath:@"MODULE A" name:@"SHAKE26A-2.CSL"];
[self testModulePath:@"MODULE A" name:@"SHAKE26A-3.CSL"];
[self testModulePath:@"MODULE A" name:@"SHAKE26A-4.CSL"];
// [self testModulePath:@"MODULE A" name:@"SHAKE26A-1.CSL"];
// [self testModulePath:@"MODULE A" name:@"SHAKE26A-2.CSL"];
// [self testModulePath:@"MODULE A" name:@"SHAKE26A-3.CSL"];
// [self testModulePath:@"MODULE A" name:@"SHAKE26A-4.CSL"];
}
- (void)testModuleB {
[self testModulePath:@"MODULE B" name:@"SHAKE26B-0.CSL"];
[self testModulePath:@"MODULE B" name:@"SHAKE26B-1.CSL"];
[self testModulePath:@"MODULE B" name:@"SHAKE26B-2.CSL"];
[self testModulePath:@"MODULE B" name:@"SHAKE26B-3.CSL"];
[self testModulePath:@"MODULE B" name:@"SHAKE26B-4.CSL"];
// [self testModulePath:@"MODULE B" name:@"SHAKE26B-1.CSL"];
// [self testModulePath:@"MODULE B" name:@"SHAKE26B-2.CSL"];
// [self testModulePath:@"MODULE B" name:@"SHAKE26B-3.CSL"];
// [self testModulePath:@"MODULE B" name:@"SHAKE26B-4.CSL"];
}
- (void)testModuleC {
[self testModulePath:@"MODULE C" name:@"SHAKE26C-0.CSL"];
[self testModulePath:@"MODULE C" name:@"SHAKE26C-1.CSL"];
[self testModulePath:@"MODULE C" name:@"SHAKE26C-2.CSL"];
[self testModulePath:@"MODULE C" name:@"SHAKE26C-3.CSL"];
[self testModulePath:@"MODULE C" name:@"SHAKE26C-4.CSL"];
// [self testModulePath:@"MODULE C" name:@"SHAKE26C-1.CSL"];
// [self testModulePath:@"MODULE C" name:@"SHAKE26C-2.CSL"];
// [self testModulePath:@"MODULE C" name:@"SHAKE26C-3.CSL"];
// [self testModulePath:@"MODULE C" name:@"SHAKE26C-4.CSL"];
}
- (void)testModuleD {
[self testModulePath:@"MODULE D" name:@"SHAKE26D-0.CSL"];
[self testModulePath:@"MODULE D" name:@"SHAKE26D-1.CSL"];
[self testModulePath:@"MODULE D" name:@"SHAKE26D-2.CSL"];
[self testModulePath:@"MODULE D" name:@"SHAKE26D-3.CSL"];
[self testModulePath:@"MODULE D" name:@"SHAKE26D-4.CSL"];
// [self testModulePath:@"MODULE D" name:@"SHAKE26D-1.CSL"];
// [self testModulePath:@"MODULE D" name:@"SHAKE26D-2.CSL"];
// [self testModulePath:@"MODULE D" name:@"SHAKE26D-3.CSL"];
// [self testModulePath:@"MODULE D" name:@"SHAKE26D-4.CSL"];
}
- (void)testModuleE {
[self testModulePath:@"MODULE E" name:@"SHAKE26E-0.CSL"];
[self testModulePath:@"MODULE E" name:@"SHAKE26E-1.CSL"];
[self testModulePath:@"MODULE E" name:@"SHAKE26E-2.CSL"];
[self testModulePath:@"MODULE E" name:@"SHAKE26E-3.CSL"];
[self testModulePath:@"MODULE E" name:@"SHAKE26E-4.CSL"];
// [self testModulePath:@"MODULE E" name:@"SHAKE26E-1.CSL"];
// [self testModulePath:@"MODULE E" name:@"SHAKE26E-2.CSL"];
// [self testModulePath:@"MODULE E" name:@"SHAKE26E-3.CSL"];
// [self testModulePath:@"MODULE E" name:@"SHAKE26E-4.CSL"];
}
@end