diff --git a/HISTORY b/HISTORY index d6e95f0..a636133 100755 --- a/HISTORY +++ b/HISTORY @@ -1,6 +1,8 @@ Dec. 30 2015 Improved error handling with sub routine and class +Implemented DIR command Polished code +Polished document Dec. 29 2015 Fixed a multiple disposing bug with expression calculation @@ -247,7 +249,8 @@ Improved sub routine Sep. 2 2015 Added sub routine type insurance Prompted more friendly dummy function message -Polished code and document +Polished code +Polished document Sep. 1 2015 Added support for user customized sub routine by DEF/ENDDEF diff --git a/MY-BASIC Quick Reference.pdf b/MY-BASIC Quick Reference.pdf index 1741ecd..6973dfc 100644 Binary files a/MY-BASIC Quick Reference.pdf and b/MY-BASIC Quick Reference.pdf differ diff --git a/shell/main.c b/shell/main.c index 3913a12..fca2d72 100755 --- a/shell/main.c +++ b/shell/main.c @@ -656,6 +656,18 @@ static void _kill_program(const char* path) { } } +static void _list_directory(const char* path) { + char line[_MAX_LINE_LENGTH]; +#ifdef _MSC_VER + if(path && *path) sprintf(line, "dir %s", path); + else sprintf(line, "dir"); +#else /* _MSC_VER */ + if(path && *path) sprintf(line, "ls %s", path); + else sprintf(line, "ls"); +#endif /* _MSC_VER */ + system(line); +} + static void _show_tip(void) { _printf("MY-BASIC Interpreter Shell - %s\n", mb_ver_string()); _printf("Copyright (C) 2011 - 2016 Wang Renxin. All Rights Reserved.\n"); @@ -664,11 +676,16 @@ static void _show_tip(void) { } static void _show_help(void) { - _printf("Parameters:\n"); + _printf("Modes:\n"); _printf(" %s - Start interactive mode without arguments\n", _BIN_FILE_NAME); _printf(" %s *.* - Load and run a file\n", _BIN_FILE_NAME); _printf(" %s -e \"expr\" - Evaluate an expression directly\n", _BIN_FILE_NAME); + _printf("\n"); + _printf("Options:\n"); + _printf(" -p n - Set memory pool threashold size, n is size in bytes\n"); + _printf("\n"); _printf("Interactive commands:\n"); + _printf(" HELP - View help information\n"); _printf(" CLS - Clear screen\n"); _printf(" NEW - Clear current program\n"); _printf(" RUN - Run current program\n"); @@ -677,14 +694,16 @@ static void _show_help(void) { _printf(" Usage: LIST [l [n]], l is start line number, n is line count\n"); _printf(" EDIT - Edit (modify/insert/remove) a line in current program\n"); _printf(" Usage: EDIT n, n is line number\n"); - _printf(" EDIT -I n, insert a line before a given line, n is line number\n"); - _printf(" EDIT -R n, remove a line, n is line number\n"); + _printf(" EDIT -i n, insert a line before a given line, n is line number\n"); + _printf(" EDIT -r n, remove a line, n is line number\n"); _printf(" LOAD - Load a file as current program\n"); _printf(" Usage: LOAD *.*\n"); _printf(" SAVE - Save current program to a file\n"); _printf(" Usage: SAVE *.*\n"); _printf(" KILL - Delete a file\n"); _printf(" Usage: KILL *.*\n"); + _printf(" DIR - List a directory\n"); + _printf(" Usage: DIR [p], p is a directory path\n"); } static int _do_line(void) { @@ -750,6 +769,9 @@ static int _do_line(void) { } else if(_str_eq(line, "KILL")) { char* path = line + strlen(line) + 1; _kill_program(path); + } else if(_str_eq(line, "DIR")) { + char* path = line + strlen(line) + 1; + _list_directory(path); } else { _append_line(c, dup); } @@ -834,7 +856,7 @@ static bool_t _process_parameters(int argc, char* argv[]) { prog = argv[++i]; #if _USE_MEM_POOL } else if(!memcmp(argv[i] + 1, "p", 1)) { - _CHECK_ARG(argc, i, "-p: Memory pool threashold expected.\n"); + _CHECK_ARG(argc, i, "-p: Memory pool threashold size expected.\n"); memp = argv[++i]; if(argc > i + 1) prog = argv[++i];