Console switches configurable on command line
This commit is contained in:
parent
ad44232120
commit
88933e303c
5 changed files with 19 additions and 9 deletions
4
bus.cpp
4
bus.cpp
|
@ -67,9 +67,9 @@ uint16_t bus::read(const uint16_t a, const bool word_mode, const bool use_prev,
|
|||
}
|
||||
|
||||
if (a == 0177570) { // console switch & display register
|
||||
DOLOG(debug, !peek_only, "read console switch");
|
||||
DOLOG(debug, !peek_only, "read console switch (%06o)", console_switches);
|
||||
|
||||
return debug_mode ? 128 : 0;
|
||||
return console_switches;
|
||||
}
|
||||
|
||||
if (a == 0172540) { // KW11P programmable clock
|
||||
|
|
5
bus.h
5
bus.h
|
@ -39,7 +39,7 @@ private:
|
|||
|
||||
uint16_t lf_csr { 0 };
|
||||
|
||||
bool debug_mode { false };
|
||||
uint16_t console_switches { 0 };
|
||||
|
||||
public:
|
||||
bus();
|
||||
|
@ -47,7 +47,8 @@ public:
|
|||
|
||||
void clearmem();
|
||||
|
||||
void set_debug_mode(const bool state) { debug_mode = state; }
|
||||
void set_console_switches(const uint16_t new_state) { console_switches = new_state; }
|
||||
void set_debug_mode() { console_switches |= 128; }
|
||||
|
||||
void add_cpu(cpu *const c) { this -> c = c; }
|
||||
void add_tm11(tm_11 *tm11) { this -> tm11 = tm11; }
|
||||
|
|
|
@ -120,7 +120,7 @@ void debugger(console *const cnsl, bus *const b, std::atomic_uint32_t *const sto
|
|||
|
||||
cpu *const c = b->getCpu();
|
||||
|
||||
b->set_debug_mode(true);
|
||||
b->set_debug_mode();
|
||||
|
||||
bool single_step = false;
|
||||
|
||||
|
|
|
@ -178,7 +178,7 @@ void load_p11_x11(bus *const b, const std::string & file)
|
|||
break;
|
||||
|
||||
if (n) {
|
||||
uint8_t byte = strtol(buffer, NULL, 16);
|
||||
uint8_t byte = strtol(buffer, nullptr, 16);
|
||||
|
||||
b->writeByte(addr, byte);
|
||||
|
||||
|
@ -189,8 +189,8 @@ void load_p11_x11(bus *const b, const std::string & file)
|
|||
else {
|
||||
std::vector<std::string> parts = split(buffer, " ");
|
||||
|
||||
addr = strtol(parts[0].c_str(), NULL, 16);
|
||||
n = strtol(parts[1].c_str(), NULL, 16);
|
||||
addr = strtol(parts[0].c_str(), nullptr, 16);
|
||||
n = strtol(parts[1].c_str(), nullptr, 16);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
11
main.cpp
11
main.cpp
|
@ -48,6 +48,7 @@ void help()
|
|||
printf("-b x enable bootloader (build-in), parameter must be \"rk05\" or \"rl02\"\n");
|
||||
printf("-n ncurses UI\n");
|
||||
printf("-d enable debugger\n");
|
||||
printf("-s x set console switches state - octal number\n");
|
||||
printf("-t enable tracing (disassemble to stderr, requires -d as well)\n");
|
||||
printf("-l x log to file x\n");
|
||||
printf("-L x,y set log level for screen (x) and file (y)\n");
|
||||
|
@ -76,14 +77,20 @@ int main(int argc, char *argv[])
|
|||
|
||||
std::string tape;
|
||||
|
||||
uint16_t console_switches = 0;
|
||||
|
||||
int opt = -1;
|
||||
while((opt = getopt(argc, argv, "hm:T:r:R:p:ndtL:b:l:3")) != -1)
|
||||
while((opt = getopt(argc, argv, "hm:T:r:R:p:ndtL:b:l:3s:")) != -1)
|
||||
{
|
||||
switch(opt) {
|
||||
case 'h':
|
||||
help();
|
||||
return 1;
|
||||
|
||||
case 's':
|
||||
console_switches = strtol(optarg, NULL, 8);
|
||||
break;
|
||||
|
||||
case '3':
|
||||
mode_34 = true; // switch from 11/70 to 11/34
|
||||
break;
|
||||
|
@ -154,6 +161,8 @@ int main(int argc, char *argv[])
|
|||
|
||||
bus *b = new bus();
|
||||
|
||||
b->set_console_switches(console_switches);
|
||||
|
||||
cpu *c = new cpu(b, &event);
|
||||
b->add_cpu(c);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue