X-Git-Url: http://cloudbase.mooo.com/gitweb/z180-stamp.git/blobdiff_plain/8da60ec50c642816ed55a2004e99afea1cc25147..86ee5f8bc4c5a4c204be6fff004ef6bf6b839dcd:/avr/cmd_sd.c diff --git a/avr/cmd_sd.c b/avr/cmd_sd.c index 98955bd..b192215 100644 --- a/avr/cmd_sd.c +++ b/avr/cmd_sd.c @@ -1,18 +1,17 @@ /* - * (C) Copyright 2014 Leo C. + * (C) Copyright 2014, 2018 Leo C. * * SPDX-License-Identifier: GPL-2.0 */ -#include "common.h" -//#include +#include "cmd_sd.h" -#include "command.h" #include "diskio.h" #include "ff.h" #include "eval_arg.h" #include "print-utils.h" #include "z80-if.h" +#include "errnum.h" /* @@ -54,10 +53,8 @@ command_ret_t do_init(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * cons dev = (BYTE) eval_arg(argv[1], NULL); - if (disk_status(dev) & STA_NODISK) { - printf_P(PSTR("No Disk\n")); - return CMD_RET_FAILURE; - } + if (disk_status(dev) & STA_NODISK) + cmd_error(CMD_RET_FAILURE, 0, PSTR("No disk")); res = disk_initialize(dev); printf_P(PSTR("rc=%.2x\n"), res); @@ -156,10 +153,8 @@ command_ret_t do_dump(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * cons for ( ; count; count--, sec++) { res = disk_read(dev, buffer, sec, 1); - if (res) { - printf_P(PSTR("rc=%.2x\n"), res); - return CMD_RET_FAILURE; - } + if (res) + cmd_error(CMD_RET_FAILURE, 0, PSTR("rc=%.2x"), res); sprintf_P(header, PSTR("Sector: %lu"), sec); dump_ram(buffer, 0, FF_MAX_SS, header); @@ -210,10 +205,9 @@ command_ret_t do_read(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * cons for (nr = 0; nr < count;) { nr++; if ((res = disk_read(dev, buffer, sec, 1)) == RES_OK) { - if (!(z80_bus_cmd(Request) & ZST_ACQUIRED)) { - my_puts_P(PSTR("Bus timeout\n")); - return CMD_RET_FAILURE; - } + if (!(z80_bus_cmd(Request) & ZST_ACQUIRED)) + cmd_error(CMD_RET_FAILURE, EBUSTO, NULL); + z80_write_block(buffer, addr /*+ base*/, FF_MAX_SS); z80_bus_cmd(Release); sec++; addr += FF_MAX_SS; @@ -271,10 +265,9 @@ command_ret_t do_write(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * con for (nr = 0; nr < count;) { nr++; - if (!(z80_bus_cmd(Request) & ZST_ACQUIRED)) { - my_puts_P(PSTR("Bus timeout\n")); - return CMD_RET_FAILURE; - } + if (!(z80_bus_cmd(Request) & ZST_ACQUIRED)) + cmd_error(CMD_RET_FAILURE, EBUSTO, NULL); + z80_read_block(buffer, addr /*+ base*/, FF_MAX_SS); z80_bus_cmd(Release); @@ -316,48 +309,45 @@ command_ret_t do_ioctl_sync(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char } -static -command_ret_t do_help(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[]); - cmd_tbl_t cmd_tbl_sd[] = { CMD_TBL_ITEM( - status, 2, CTBL_REPEAT, do_status, - "Socket staus", + status, 2, CTBL_RPT, do_status, + "Socket status", "drive" ), CMD_TBL_ITEM( - init, 2, CTBL_REPEAT, do_init, + init, 2, CTBL_RPT, do_init, "Initialize disk", "drive" ), CMD_TBL_ITEM( - info, 2, CTBL_REPEAT, do_info, + info, 2, CTBL_RPT, do_info, "Disk info", "drive" ), CMD_TBL_ITEM( - dump, CONFIG_SYS_MAXARGS, CTBL_REPEAT, do_dump, + dump, CONFIG_SYS_MAXARGS, CTBL_RPT, do_dump, "Dump sector(s)", "drive [sector [count ]]" ), CMD_TBL_ITEM( - read, 2, CTBL_REPEAT, do_read, + read, 2, CTBL_RPT, do_read, "Read disk sector(s) into meomory", "drive [sector [count [memaddr]]]" ), CMD_TBL_ITEM( - write, 2, CTBL_REPEAT, do_write, + write, 2, CTBL_RPT, do_write, "Write sector(s) from meomory to disk", "drive [sector [count [memaddr]]]" ), CMD_TBL_ITEM( - sync, 2, CTBL_REPEAT, do_ioctl_sync, + sync, 2, CTBL_RPT, do_ioctl_sync, "Device control: SYNC", "drive" ), CMD_TBL_ITEM( - help, CONFIG_SYS_MAXARGS, CTBL_REPEAT, do_help, + help, CONFIG_SYS_MAXARGS, CTBL_RPT, do_help, "Print sub command description/usage", "\n" " - print brief description of all sub commands\n" @@ -367,7 +357,7 @@ CMD_TBL_ITEM( /* This does not use the CMD_TBL_ITEM macro as ? can't be used in symbol names */ {FSTR("?"), CONFIG_SYS_MAXARGS, 1, do_help, - FSTR("Alias for 'help'"), + NULL, #ifdef CONFIG_SYS_LONGHELP FSTR(""), #endif /* CONFIG_SYS_LONGHELP */ @@ -377,31 +367,12 @@ CMD_TBL_ITEM( #endif }, /* Mark end of table */ -{ 0 }, +CMD_TBL_END(cmd_tbl_sd) }; -static -command_ret_t do_help(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[]) -{ - return _do_help(cmd_tbl_sd, cmdtp, flag, argc, argv); -} - -command_ret_t do_sd(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[]) +command_ret_t do_sd(cmd_tbl_t *cmdtp UNUSED, uint_fast8_t flag UNUSED, int argc UNUSED, char * const argv[] UNUSED) { - cmd_tbl_t *cp; - - if (argc < 2) - return CMD_RET_USAGE; - - /* drop initial "sd" arg */ - argc--; - argv++; - - cp = find_cmd(argv[0], cmd_tbl_sd); - - if (cp) - return cp->cmd(cmdtp, flag, argc, argv); - + puts_P(PSTR("Huch?")); return CMD_RET_USAGE; }