X-Git-Url: http://cloudbase.mooo.com/gitweb/z180-stamp.git/blobdiff_plain/cb4fb1ed02b59f798368a76f2596d7c24125e68a..eb49471efdeb6b317afeffa9bc05b25cb7d7a72c:/avr/command_tbl.c diff --git a/avr/command_tbl.c b/avr/command_tbl.c index 944c1c4..5a63e76 100644 --- a/avr/command_tbl.c +++ b/avr/command_tbl.c @@ -1,5 +1,5 @@ /* - * (C) Copyright 2014-2016 Leo C. + * (C) Copyright 2014-2016, 2018 Leo C. * * SPDX-License-Identifier: GPL-2.0 */ @@ -7,47 +7,37 @@ #include "common.h" #include "command.h" #include "cmd_mem.h" +#include "cmd_boot.h" +#include "cmd_cpu.h" +#include "cmd_misc.h" +#include "cmd_date.h" +#include "cmd_run.h" +#include "cmd_loadcpm3.h" +#include "cmd_loadihex.h" +#include "cmd_gpio.h" +#include "cmd_sd.h" +#include "cmd_fat.h" +#include "cmd_attach.h" +#include "env.h" +#include "debug.h" -extern command_ret_t do_help(cmd_tbl_t *, int, int, char * const []); -extern command_ret_t do_echo(cmd_tbl_t *, int, int, char * const []); -extern command_ret_t do_sleep(cmd_tbl_t *, int, int, char * const []); -extern command_ret_t do_env_print(cmd_tbl_t *, int, int, char * const []); -extern command_ret_t do_env_default(cmd_tbl_t *, int, int, char * const []); -extern command_ret_t do_env_set(cmd_tbl_t *, int, int, char * const []); -extern command_ret_t do_env_save(cmd_tbl_t *, int, int, char * const []); -extern command_ret_t do_loadf(cmd_tbl_t *, int, int, char * const []); -extern command_ret_t do_loadcpm3(cmd_tbl_t *, int, int, char * const []); -extern command_ret_t do_loadihex(cmd_tbl_t *, int, int, char * const []); -#if defined(CONFIG_CMD_LOADB) -extern command_ret_t do_load_serial_bin(cmd_tbl_t *, int, int, char * const []); -#endif -extern command_ret_t do_go(cmd_tbl_t *, int, int, char * const []); -extern command_ret_t do_restart(cmd_tbl_t *, int, int, char * const []); -extern command_ret_t do_console(cmd_tbl_t *, int, int, char * const []); -extern command_ret_t do_dump_mem(cmd_tbl_t *, int, int, char * const []); -extern command_ret_t do_mem_mm_avr(cmd_tbl_t *, int, int, char * const []); -extern command_ret_t do_mem_nm_avr(cmd_tbl_t *, int, int, char * const []); -extern command_ret_t do_eep_cp(cmd_tbl_t *, int, int, char * const []); -extern command_ret_t do_busreq_pulse(cmd_tbl_t *, int, int, char * const []); -extern command_ret_t do_date(cmd_tbl_t *, int, int, char * const []); -extern command_ret_t do_gpio(cmd_tbl_t *, int, int, char * const []); -extern command_ret_t do_sd(cmd_tbl_t *, int, int, char * const []); -extern command_ret_t do_fat_stat(cmd_tbl_t *, int, int, char * const []); -extern command_ret_t do_fat_ls(cmd_tbl_t *, int, int, char * const []); -extern command_ret_t do_fat_rw(cmd_tbl_t *, int, int, char * const []); -extern command_ret_t do_run(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]); -extern command_ret_t do_source(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]); -extern command_ret_t do_attach(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]); -#ifdef CONFIG_SYS_LONGHELP -const FLASH char sd_help_text[] = - "bla \t- do bla\n" - ; -#endif /* CONFIG_SYS_LONGHELP */ +cmd_tbl_t cmd_tbl[] = { +CMD_TBL_ITEM_TOP( + xx, CONFIG_SYS_MAXARGS, 0, do_cpu, + "experimental commands", + " args ...\n" + "xx help\n", + cmd_tbl_cpu +), -cmd_tbl_t cmd_tbl[] = { +CMD_TBL_ITEM( + time, CONFIG_SYS_MAXARGS, 0, do_time, + "run command and print execution time", + "command [args...]\n" +), CMD_TBL_ITEM( date, 2, 1, do_date, "get/set date & time", @@ -59,36 +49,51 @@ CMD_TBL_ITEM( #ifdef DEBUG CMD_TBL_ITEM( - !mdr, 3, 1, do_dump_mem, + !mdr, 3, CTBL_DBG|CTBL_RPT, do_dump_mem, "RAM dump", "address [count]" ), CMD_TBL_ITEM( - !mde, 3, 1, do_dump_mem, + !mde, 3, CTBL_DBG|CTBL_RPT, do_dump_mem, "EEPROM dump", "address [count]" ), CMD_TBL_ITEM( - !mdf, 3, 1, do_dump_mem, + !mdf, 3, CTBL_DBG|CTBL_RPT, do_dump_mem, "FLASH dump", "address [count]" ), CMD_TBL_ITEM( - !cpe, 4, 0, do_eep_cp, + !cpe, 4, CTBL_DBG, do_eep_cp, "EEPROM copy", "source target count" ), CMD_TBL_ITEM( - !mm, 2, 1, do_mem_mm_avr, + !mm, 2, CTBL_DBG|CTBL_RPT, do_mem_mm_avr, "avr memory modify (auto-incrementing address)", "address" ), CMD_TBL_ITEM( - !nm, 2, 1, do_mem_nm_avr, + !nm, 2, CTBL_DBG|CTBL_RPT, do_mem_nm_avr, "avr memory modify (constant address)", "address" ), +CMD_TBL_ITEM( + !prfree, 1, CTBL_DBG|CTBL_RPT, do_pr_free_avr, + "print avr heap free list", + "" +), +CMD_TBL_ITEM( + !prheap, 1, CTBL_DBG, do_pr_heap_avr, + "dump avr heap", + "" +), #endif +CMD_TBL_ITEM( + msize, 1, 1, do_mem_size, + "Detect memory size", + "" +), CMD_TBL_ITEM( mstep, 2, 1, do_busreq_pulse, "execute one M cycle", @@ -106,7 +111,7 @@ CMD_TBL_ITEM( sleep , 2, 1, do_sleep, "delay execution for some time", "N[m][s]\n" - " - delay execution for decimal N (milli) seconds" + " - delay execution for hexadecimal N (milli) seconds" ), CMD_TBL_ITEM_COMPLETE( run, CONFIG_SYS_MAXARGS, 1, do_run, @@ -115,6 +120,11 @@ CMD_TBL_ITEM_COMPLETE( " - run the commands in the environment variable(s) 'var'", var_complete ), +CMD_TBL_ITEM( + boot, 1, 1, do_bootd, + "boot default, i.e., run 'bootcmd'", + "" +), CMD_TBL_ITEM_COMPLETE( source, CONFIG_SYS_MAXARGS, 1, do_source, "run commands from a file", @@ -122,33 +132,12 @@ CMD_TBL_ITEM_COMPLETE( " - run the commands in the script file 'filename'", var_complete ), -CMD_TBL_ITEM_COMPLETE( - printenv, CONFIG_SYS_MAXARGS, 1, do_env_print, - "print environment variables", - "\n" - " - print values of all environment variables\n" - "printenv name ...\n" - " - print value of environment variable 'name'", - var_complete -), -CMD_TBL_ITEM_COMPLETE( - setenv, CONFIG_SYS_MAXARGS, 0, do_env_set, - "set environment variables", - "name value ...\n" - " - set environment variable 'name' to 'value ...'\n" - "setenv name\n" - " - delete environment variable 'name'", - var_complete -), -CMD_TBL_ITEM( - saveenv, 1, 0, do_env_save, - "save environment variables to persistent storage", - "" -), -CMD_TBL_ITEM( - defaultenv, 1, 0, do_env_default, - "set all environment variables to their default values", - "" + +CMD_TBL_ITEM_TOP( + env, CONFIG_SYS_MAXARGS, 0, do_env, + "environment handling commands", + "", + cmd_tbl_env ), CMD_TBL_ITEM( @@ -156,6 +145,27 @@ CMD_TBL_ITEM( "load srec_cat prepared image from controller flash", "" ), +CMD_TBL_ITEM( + bootcf, CONFIG_SYS_MAXARGS, 0, do_bootcf, + "boot from cf card", + "[options]\n" + " Load a number of sectors from the first CP/M partition and jump to\n" + " the load address.\n" + " -a ADDRESS\n" + " Load and start address (default 100 hex)\n" + " -s NUM\n" + " First sector of partition to load (0..255, default 0)\n" + " -c NUM\n" + " Number of sectors to load (1..127, default 7)\n" + " -i NUM\n" + " Partition type to look for (default 52 hex)\n" + " -n\n" + " Load only, do not execute\n" + " -t NUM\n" + " Timeout for IDE commands (1..65535, default 10000)\n" + " -v verbose\n" + " TODO: be verbose" +), CMD_TBL_ITEM( loadcpm3, 3, 0, do_loadcpm3, "load CPM3.SYS file", @@ -196,12 +206,10 @@ CMD_TBL_ITEM( #endif /* CONFIG_CMD_LOADB */ CMD_TBL_ITEM( - go, 2, 0, do_go, + go, CONFIG_SYS_MAXARGS, 0, do_go, "start application at address 'addr'", - "addr\n" + "[-h] addr\n" " - start application at address 'addr'" -// "\n" -// " passing 'arg' as arguments" ), CMD_TBL_ITEM( reset, 1, 0, do_reset, @@ -242,35 +250,35 @@ CMD_TBL_ITEM( ), CMD_TBL_ITEM( - md, 3, 1, do_mem_md, + md, 3, CTBL_RPT, do_mem_md, "memory display", "address [# of objects]" ), CMD_TBL_ITEM( - mm, 2, 1, do_mem_mm, + mm, 2, CTBL_RPT, do_mem_mm, "memory modify (auto-incrementing address)", "address" ), CMD_TBL_ITEM( - nm, 2, 1, do_mem_nm, + nm, 2, CTBL_RPT, do_mem_nm, "memory modify (constant address)", "address" ), CMD_TBL_ITEM( - mw, CONFIG_SYS_MAXARGS, 1, do_mem_mw, + mw, CONFIG_SYS_MAXARGS, CTBL_RPT, do_mem_mw, "memory write (fill)", "[-bwl] address value [count]\n" " -b write value as byte (8 bit, default)\n" " -w write value as word (16 bit)\n" - " -l write value as long (32 bit)\n" + " -l write value as long (32 bit)" ), CMD_TBL_ITEM( - cp, 4, 1, do_mem_cp, + mcp, 4, CTBL_RPT, do_mem_cp, "memory copy", "source target count" ), CMD_TBL_ITEM( - cmp, 4, 1, do_mem_cmp, + mcmp, 4, CTBL_RPT, do_mem_cmp, "memory compare", "addr1 addr2 count" ), @@ -283,19 +291,19 @@ CMD_TBL_ITEM( " - set address offset for memory commands to 'offset'" ), CMD_TBL_ITEM( - mloop, 3, 1, do_mem_loop, + mloop, 3, CTBL_RPT, do_mem_loop, "infinite loop on address range", "address number_of_bytes" ), CMD_TBL_ITEM( - mloopw, 4, 1, do_mem_loopw, + mloopw, 4, CTBL_RPT, do_mem_loopw, "infinite write loop on address range", "address number_of_bytes data_to_write" ), #ifdef CONFIG_CMD_MEMTEST CMD_TBL_ITEM( - mtest, 4, 1, do_mem_mtest, + mtest, 4, CTBL_RPT, do_mem_mtest, "simple RAM read/write test", "[start [end [iterations]]]" ), @@ -303,77 +311,79 @@ CMD_TBL_ITEM( #ifdef CONFIG_MX_CYCLIC CMD_TBL_ITEM( - mdc, 4, 1, do_mem_mdc, + mdc, 4, CTBL_RPT, do_mem_mdc, "memory display cyclic", "address count delay(ms)" ), CMD_TBL_ITEM( - mwc, 4, 1, do_mem_mdc, + mwc, CONFIG_SYS_MAXARGS, CTBL_RPT, do_mem_mdc, "memory write cyclic", - "address value delay(ms)" + "[-bwl] address value delay(ms)\n" + " -b write value as byte (8 bit, default)\n" + " -w write value as word (16 bit)\n" + " -l write value as long (32 bit)" ), #endif /* CONFIG_MX_CYCLIC */ -CMD_TBL_ITEM( - sd, CONFIG_SYS_MAXARGS, 1, do_sd, +CMD_TBL_ITEM_TOP( + sd, CONFIG_SYS_MAXARGS, 0, do_sd, "SD/MMC card handling commands", " args ...\n" "sd help\n" - " - print help on subcommands" -), - -CMD_TBL_ITEM( - fatstat, 2, 1, do_fat_stat, - "Show logical drive status", - "dev" -), -CMD_TBL_ITEM( - fatls, 2, 1, do_fat_ls, - "Directory listing", - "path" + " - print help on subcommands", + cmd_tbl_sd ), -CMD_TBL_ITEM( - fatload, 5, 0, do_fat_rw, - "load binary file from a dos filesystem", - " [bytes [pos]]\n" - " - Load binary file 'path/filename' on logical drive 'd'\n" - " to address 'addr' from dos filesystem.\n" - " 'pos' gives the file position to start loading from.\n" - " If 'pos' is omitted, 0 is used. 'pos' requires 'bytes'.\n" - " 'bytes' gives the size to load. If 'bytes' is 0 or omitted,\n" - " the load stops on end of file." -), -CMD_TBL_ITEM( - fatwrite, 4, 0, do_fat_rw, - "write file into a dos filesystem", - " \n" - " - Write file to 'path/filename' on logical drive 'd' from RAM\n" - " starting at address 'addr'.\n" +CMD_TBL_ITEM_TOP( + fat, CONFIG_SYS_MAXARGS, 0, do_fat, + "fat filesystem commands", + " args ...\n" + "fat help\n" + " - print help on subcommands", + cmd_tbl_fat ), + CMD_TBL_ITEM( - attach, CONFIG_SYS_MAXARGS, 1, do_attach, + attach, CONFIG_SYS_MAXARGS, CTBL_RPT, do_attach, "attach filesystem image file to CP/M drive", - "[options] [dsk ]\n" - " - attach drive number to diskfile \n" - "attach -d dsk\n" - " - detach drive\n" + "[-rw] [-o options] dsk diskfile\n" + " Attach diskfile to dsk, where n in 0.."CONFIG_CPM_MAX_DRNR_STR"\n" + " -r File is read only (write protected)\n" + " -w File is read/write (default)\n" + " -o options\n" + " Options is a comma-separated list of\n" + " ro, rw, debug, nodebug\n" + "\n" + "attach [-rw] -o reattach[,other options] dsk\n" + " Change options for dsk.\n" + " Options as above.\n" + "\n" + "attach -d -a|dsk\n" + "detach -a|dsk\n" + " Detach diskfile from dsk.\n" + " -a Detach all.\n" + "\n" "attach\n" - " - without arguments, list current assignments" + " Without arguments, list current assignments" ), CMD_TBL_ITEM( - detach, 2, 1, do_attach, + detach, 2, 0, do_attach, "detach file from CP/M drive", "dsk]\n" - " - same as attach -d dsk" + " - alias for 'attach -d dsk'" ), CMD_TBL_ITEM( - help, CONFIG_SYS_MAXARGS, 1, do_help, + help, CONFIG_SYS_MAXARGS, 0, do_help, "print command description/usage", - "\n" - " - print brief description of all commands\n" - "help command ...\n" - " - print detailed usage of 'command'" + "[-a]\n" + " print brief description of all commands\n" + " -a print description of subcommands too\n" + "help -fk keyword ...\n" + " print brief description of commands matching keyword\n" + " -f search keyword in command name\n" + " -k search keyword in command name and description\n" + "help [-a] command ...\n" + " print detailed usage of 'command'" ), /* This does not use the CMD_TBL_ITEM macro as ? can't be used in symbol names */ @@ -382,10 +392,11 @@ CMD_TBL_ITEM( #ifdef CONFIG_SYS_LONGHELP FSTR(""), #endif /* CONFIG_SYS_LONGHELP */ + NULL, #ifdef CONFIG_AUTO_COMPLETE - 0, + NULL, #endif }, /* Mark end of table */ -{ 0 }, +CMD_TBL_END(cmd_tbl) };