Cleaning up strings, officially add exit command.

This commit is contained in:
Lynn Leichtle 2024-09-18 22:06:24 +02:00
parent 1b51632360
commit 6c453709a5
Signed by: lynn
GPG key ID: 55E797F631DDA03C

View file

@ -24,22 +24,24 @@ const TOO_MANY_ARGUMENTS = "Wrong number of arguments";
const WRONG_ARGUMENT = "Invalid argument";
// COMMAND
const PROMPT_COMMAND = "prompt";
const SEGMENT_REGISTER_COMMAND = "sr";
const SEGMENT_REGISTER_COMMAND = "sreg";
const REGISTER_COMMAND = "reg";
const CLEAR_COMMAND = "cls";
const HELP_COMMAND = "?";
const EXIT_COMMAND = "exit";
// DESCRIPTION
const PROMPT_DESCRIPTION = "Change the prompt between Long-mode or Short-mode.";
const REGISTER_DESCRIPTION = "Print the current values for Registers.";
const SEGMENT_REGISTER_DESCRIPTION = "Print the current values for Segment Registers.";
const CLEAR_DESCRIPTION = "Clears the screen.";
const EXIT_DESCRIPTION = "Exits the REPL.";
// USAGE
const PROMPT_USAGE = "prompt {short|long}";
const REGISTER_USAGE = "reg";
const SEGMENT_REGISTER_USAGE = "sr";
const HELP_USAGE = "?";
const CLEAR_USAGE = "cls";
const REGISTER_USAGE = REGISTER_COMMAND;
const SEGMENT_REGISTER_USAGE = SEGMENT_REGISTER_COMMAND;
const HELP_USAGE = HELP_COMMAND;
const CLEAR_USAGE = CLEAR_COMMAND;
const EXIT_USAGE = EXIT_COMMAND;
pub fn main() !void {
var memory = mem.Memory.init();
var cpu = cpu_.Cpu.init();
@ -59,10 +61,13 @@ pub fn main() !void {
\\ to redistribute it under certain coditions;
\\ for details please refer to the LICENSE file.
\\
\\Type `?` for help.
\\Type `exit` to quit.
\\Type `{s}` for help.
\\Type `{s}` to quit.
\\
, .{});
, .{
HELP_COMMAND,
EXIT_COMMAND,
});
var buffer: [256]u8 = undefined;
while (true) {
if (long_prompt) {
@ -74,13 +79,13 @@ pub fn main() !void {
const clean = std.mem.trim(u8, line.?, " \n\r");
var it = std.mem.splitSequence(u8, clean, " ");
if (it.next()) |first_argument| {
if (std.mem.eql(u8, first_argument, "exit")) {
if (std.mem.eql(u8, first_argument, EXIT_COMMAND)) {
break;
} else if (std.mem.eql(u8, first_argument, "sr")) {
} else if (std.mem.eql(u8, first_argument, SEGMENT_REGISTER_COMMAND)) {
try handleSegmentRegisterCommand(&cpu, &it);
} else if (std.mem.eql(u8, first_argument, "prompt")) {
} else if (std.mem.eql(u8, first_argument, PROMPT_COMMAND)) {
try handlePromptCommand(&it);
} else if (std.mem.eql(u8, first_argument, "?")) {
} else if (std.mem.eql(u8, first_argument, HELP_COMMAND)) {
try handleHelpCommand(&it);
} else if (std.mem.eql(u8, first_argument, CLEAR_COMMAND)) {
try handleClearScreenCommand(&it);
@ -151,12 +156,14 @@ fn handleHelpCommand(it: anytype) !void {
\\{s: <20} {s}
\\{s: <20} {s}
\\{s: <20} {s}
\\{s: <20} {s}
\\
, .{
PROMPT_USAGE, PROMPT_DESCRIPTION,
REGISTER_USAGE, REGISTER_DESCRIPTION,
SEGMENT_REGISTER_USAGE, SEGMENT_REGISTER_DESCRIPTION,
CLEAR_USAGE, CLEAR_DESCRIPTION,
EXIT_USAGE, EXIT_DESCRIPTION,
});
}
}