summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeo C2018-09-03 12:03:37 +0200
committerLeo C2018-09-04 21:26:04 +0200
commit5e8ac5e02a09140e97d56a9d5313504dfa31282d (patch)
tree87f6d50ce22abf3d49722da9a1f7111de812211b
parent86ee5f8bc4c5a4c204be6fff004ef6bf6b839dcd (diff)
downloadz180-stamp-5e8ac5e02a09140e97d56a9d5313504dfa31282d.zip
cmd_attach.c, cmd_boot.c, cmd_loadcpm3.c: use cmd_error()
-rw-r--r--avr/cmd_attach.c37
-rw-r--r--avr/cmd_boot.c62
-rw-r--r--avr/cmd_date.c4
-rw-r--r--avr/cmd_fat.c3
-rw-r--r--avr/cmd_loadcpm3.c119
-rw-r--r--avr/cmd_sd.c1
-rw-r--r--avr/command_tbl.c2
-rw-r--r--avr/strerror.c13
-rw-r--r--avr/z180-serv.c16
-rw-r--r--include/common.h11
-rw-r--r--include/config.h1
-rw-r--r--include/errnum.h15
-rw-r--r--include/z180-serv.h12
13 files changed, 131 insertions, 165 deletions
diff --git a/avr/cmd_attach.c b/avr/cmd_attach.c
index fcc4f49..0949687 100644
--- a/avr/cmd_attach.c
+++ b/avr/cmd_attach.c
@@ -15,34 +15,6 @@
#include "getopt-min.h"
-static const FLASH char * const FLASH rc_messages[] = {
- FSTR("OK"),
- FSTR("Unknown error"),
- FSTR("Disk number out of range 0..7"),
- FSTR("Disk allready attached"),
- FSTR("Disk not attached"),
- FSTR("File not found"),
- FSTR("Not enough memory"),
- FSTR("Error opening file"),
- FSTR("File allready attached to other drive"),
- };
-
-static
-void printerror(int rc, uint8_t unit, char *fn)
-{
- if (rc < 0 || (unsigned) rc >= ARRAY_SIZE(rc_messages))
- rc = 1;
-
-#if GCC_BUG_61443
- printf_P(PSTR("Attachment of '%s' to dsk%d failed: "), fn, unit);
- my_puts_P(rc_messages[rc]);
- my_puts_P(PSTR("!\n"));
-#else
- printf_P(PSTR("Attachment of '%s' to dsk%d failed: %S!\n"),
- fn, unit, rc_messages[rc]);
-#endif
-}
-
/*
* attach [[options] [unit [diskfile]]]
*
@@ -58,7 +30,7 @@ void printerror(int rc, uint8_t unit, char *fn)
command_ret_t do_attach(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
{
- uint8_t unit;
+ uint8_t unit = 0;
char *filename = NULL;
bool detach = false;
bool detach_all = false;
@@ -134,8 +106,7 @@ command_ret_t do_attach(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * co
strncmp_P(argv[optind], PSTR("dsk"), 3) ||
(unit = argv[optind][3] - '0') >= CONFIG_CPM_MAX_DRIVE)) {
- printf_P(PSTR("Unknown device: '%s'\n"), argv[optind]);
- return CMD_RET_FAILURE;
+ cmd_error(CMD_RET_FAILURE, 0, PSTR("Invalid device: '%s'"), argv[optind]);
}
if (detach) {
@@ -152,7 +123,7 @@ command_ret_t do_attach(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * co
res = drv_attach(unit, filename, options);
if (res)
- printerror(res, unit, filename);
+ cmd_error(CMD_RET_FAILURE, res, PSTR("Attachment of '%s' to dsk%d failed"), filename, unit);
- return res ? CMD_RET_FAILURE : CMD_RET_SUCCESS;
+ return CMD_RET_SUCCESS;
}
diff --git a/avr/cmd_boot.c b/avr/cmd_boot.c
index b4aa5c0..a1afe77 100644
--- a/avr/cmd_boot.c
+++ b/avr/cmd_boot.c
@@ -58,18 +58,18 @@ static void z80_load_mem(int_fast8_t verbosity,
}
}
-command_ret_t do_loadf(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
+command_ret_t do_loadf(cmd_tbl_t *cmdtp UNUSED, uint_fast8_t flag UNUSED, int argc UNUSED, char * const argv[] UNUSED)
{
- (void) cmdtp; (void) flag; (void) argc; (void) argv;
+ ERRNUM res = ESUCCESS;
if (z80_bus_state() & ZST_RUNNING) {
- my_puts_P(PSTR("Can't load while CPU is running!\n"));
- return CMD_RET_FAILURE;
- }
- if (!(z80_bus_cmd(Request) & ZST_ACQUIRED)) {
- my_puts_P(PSTR("Bus timeout\n"));
- return CMD_RET_FAILURE;
+ res = ERUNNING;
+ } else if (!(z80_bus_cmd(Request) & ZST_ACQUIRED)) {
+ res = EBUSTO;
}
+ if (res != ESUCCESS)
+ cmd_error(CMD_RET_FAILURE, res, NULL);
+
z80_load_mem(2, hdrom,
&hdrom_sections,
hdrom_address,
@@ -111,7 +111,7 @@ void print_vars(char *title)
* -v verbose
*/
-command_ret_t do_bootcf(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
+command_ret_t do_bootcf(cmd_tbl_t *cmdtp UNUSED, uint_fast8_t flag UNUSED, int argc, char * const argv[])
{
struct {
uint8_t jr[2];
@@ -134,8 +134,7 @@ command_ret_t do_bootcf(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * co
int_fast8_t verbosity = 0;
uint8_t default_stages;
uint32_t val;
-
- (void) cmdtp; (void) flag;
+ ERRNUM res = ESUCCESS;
/* get default values */
memcpy_P(&boot_param, cfboot, sizeof boot_param);
@@ -211,16 +210,14 @@ command_ret_t do_bootcf(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * co
return CMD_RET_FAILURE;
}
-
-
if (z80_bus_state() & ZST_RUNNING) {
- my_puts_P(PSTR("CPU is allready running!\n"));
- return CMD_RET_FAILURE;
- }
- if (!(z80_bus_cmd(Request) & ZST_ACQUIRED)) {
- my_puts_P(PSTR("Bus timeout\n"));
- return CMD_RET_FAILURE;
+ res = ERUNNING;
+ } else if (!(z80_bus_cmd(Request) & ZST_ACQUIRED)) {
+ res = EBUSTO;
}
+ if (res != ESUCCESS)
+ cmd_error(CMD_RET_FAILURE, res, NULL);
+
z80_load_mem(verbosity, cfboot,
&cfboot_sections,
cfboot_address,
@@ -273,12 +270,10 @@ command_ret_t do_bootcf(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * co
return CMD_RET_SUCCESS;
}
-command_ret_t do_busreq_pulse(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
+command_ret_t do_busreq_pulse(cmd_tbl_t *cmdtp UNUSED, uint_fast8_t flag UNUSED, int argc, char * const argv[])
{
uint16_t count=1;
- (void) cmdtp; (void) flag;
-
if (!(z80_bus_state() & ZST_RUNNING)) {
printf_P(PSTR("## CPU is not running!\n"));
return CMD_RET_FAILURE;
@@ -295,12 +290,10 @@ command_ret_t do_busreq_pulse(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, cha
}
-command_ret_t do_go(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
+command_ret_t do_go(cmd_tbl_t *cmdtp UNUSED, uint_fast8_t flag UNUSED, int argc, char * const argv[])
{
uint32_t addr;
- (void) cmdtp; (void) flag;
-
if (argc < 2)
return CMD_RET_USAGE;
addr = eval_arg(argv[1], NULL);
@@ -312,7 +305,7 @@ command_ret_t do_go(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const
}
if (z80_bus_state() & ZST_RUNNING) {
- printf_P(PSTR("## CPU allready running!\n"));
+ printf_P(PSTR("## CPU already running!\n"));
return CMD_RET_FAILURE;
}
@@ -347,20 +340,16 @@ void reset_cpu(bus_cmd_t mode)
}
-command_ret_t do_reset(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
+command_ret_t do_reset(cmd_tbl_t *cmdtp UNUSED, uint_fast8_t flag UNUSED, int argc UNUSED, char * const argv[] UNUSED)
{
- (void) cmdtp; (void) flag; (void) argc; (void) argv;
-
printf_P(PSTR("CPU now in reset state.\n"));
reset_cpu(Reset);
return CMD_RET_SUCCESS;
}
-command_ret_t do_restart(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
+command_ret_t do_restart(cmd_tbl_t *cmdtp UNUSED, uint_fast8_t flag UNUSED, int argc UNUSED, char * const argv[] UNUSED)
{
- (void) cmdtp; (void) flag; (void) argc; (void) argv;
-
reset_cpu(Restart);
return CMD_RET_SUCCESS;
@@ -382,17 +371,14 @@ void print_con_usage(char esc)
), esc + 0x40);
}
-command_ret_t do_console(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
+command_ret_t do_console(cmd_tbl_t *cmdtp UNUSED, uint_fast8_t flag UNUSED, int argc UNUSED, char * const argv[] UNUSED)
{
int ch;
uint8_t pending;
-// uint8_t help_prompt = 0;
uint8_t code = 0;
uint8_t state = 0;
char esc_char = (char) getenv_ulong(PSTR(ENV_ESC_CHAR), 16, CONFIG_ESC_CHAR);
- (void) cmdtp; (void) flag; (void) argc; (void) argv;
-
printf_P(PSTR("Connecting to CPU. Escape character is '^%c'.\n"),
esc_char + 0x40);
@@ -419,7 +405,7 @@ command_ret_t do_console(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * c
}
break;
case 2:
- printf_P(PSTR("\n"
+ my_puts_P(PSTR("\n"
"------------------------------------------------\n"));
case 1:
state = 0;
@@ -437,7 +423,7 @@ command_ret_t do_console(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * c
case 'X':
case 'Q':
- printf_P(PSTR("\n"));
+ putchar('\n');
goto quit;
break;
diff --git a/avr/cmd_date.c b/avr/cmd_date.c
index cbc4a32..0bd3ebb 100644
--- a/avr/cmd_date.c
+++ b/avr/cmd_date.c
@@ -123,15 +123,13 @@ int mk_date (const char *datestr, struct tm *tmp)
return (-1);
}
-command_ret_t do_date(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
+command_ret_t do_date(cmd_tbl_t *cmdtp UNUSED, uint_fast8_t flag UNUSED, int argc, char * const argv[])
{
struct tm t;
char buf[30];
int rc;
command_ret_t rcode = CMD_RET_FAILURE;
- (void) cmdtp; (void) flag;
-
switch (argc) {
case 2: /* set date & time */
/* initialize t with current time */
diff --git a/avr/cmd_fat.c b/avr/cmd_fat.c
index 77505b4..2970ac3 100644
--- a/avr/cmd_fat.c
+++ b/avr/cmd_fat.c
@@ -20,7 +20,6 @@
#include "timer.h"
#include "debug.h"
#include "env.h"
-#include "errnum.h"
#define DEBUG_FA 0 /* set to 1 to debug */
@@ -582,7 +581,7 @@ command_ret_t do_rw(cmd_tbl_t *cmdtp UNUSED, uint_fast8_t flag UNUSED, int argc,
if (res)
cmd_error(CMD_RET_FAILURE, res, PSTR("'%s'"), argv[1]);
- if (buserr || res)
+ if (buserr)
cmd_error(CMD_RET_FAILURE, EBUSTO, NULL);
return CMD_RET_SUCCESS;
diff --git a/avr/cmd_loadcpm3.c b/avr/cmd_loadcpm3.c
index 6ccb3f9..ee336da 100644
--- a/avr/cmd_loadcpm3.c
+++ b/avr/cmd_loadcpm3.c
@@ -1,5 +1,5 @@
/*
- * (C) Copyright 2015,2016 Leo C. <erbl259-lmu@yahoo.de>
+ * (C) Copyright 2015,2016,2018 Leo C. <erbl259-lmu@yahoo.de>
*
* SPDX-License-Identifier: GPL-2.0
*/
@@ -17,12 +17,23 @@
#include "con-utils.h"
#include "z80-if.h"
#include "debug.h"
+#include "errnum.h"
#define RS 128 /* CP/M record size */
#define FSIZE_t DWORD
+static FRESULT read_record(FIL *fp, uint8_t *buffer)
+{
+ unsigned int br; /* bytes read */
+
+ FRESULT res = f_read(fp, buffer, RS, &br);
+ if (br != RS)
+ return EEOF;
+ return res;
+}
+
/*
* Load Routine
*
@@ -30,37 +41,32 @@
* len = Length in pages of module to read
*
*/
-int load(FIL *File, uint32_t addr, uint8_t len)
+ERRNUM load(FIL *File, uint32_t addr, uint8_t len)
{
uint8_t buffer[RS];
- unsigned int br; /* bytes read */
- int res;
len *= 2; /* length in records of module */
//debug("## load: addr: 0x%.4X, records: 0x%.4X, (%u)\n", addr, len, len);
for (; len; len--) {
addr -= RS;
- res = f_read(File, buffer, RS, &br);
- if (res || br != RS) {
- return 1;
- }
+ FRESULT res = read_record(File, buffer);
+ if (res)
+ return res;
- if (!(z80_bus_cmd(Request) & ZST_ACQUIRED)) {
- my_puts_P(PSTR("Bus timeout\n"));
- return 2;
- }
+ if (!(z80_bus_cmd(Request) & ZST_ACQUIRED))
+ return EBUSTO;
z80_write_block(buffer, addr, RS);
z80_bus_cmd(Release);
//debug("## written: 0x%.4X\n", addr);
}
- return 0;
+ return ESUCCESS;
}
#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
-command_ret_t do_loadcpm3(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char * const argv[])
+command_ret_t do_loadcpm3(cmd_tbl_t *cmdtp UNUSED, uint_fast8_t flag UNUSED, int argc, char * const argv[])
{
uint16_t mem_top;
uint8_t res_len;
@@ -72,11 +78,8 @@ command_ret_t do_loadcpm3(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char *
char *fname;
FIL File;
char default_fname[strlen_P(PSTR(CONFIG_CPM3_SYSFILE)) + 1];
- unsigned int br; /* bytes read */
uint8_t buffer[RS];
- int res;
-
- (void) cmdtp; (void) flag;
+ FRESULT res;
//common_base = getenv_ulong(PSTR(ENV_CPM3_COMMON_BASE), 16,
@@ -99,16 +102,14 @@ command_ret_t do_loadcpm3(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char *
}
res = f_open(&File, fname, FA_READ );
- if (res) {
- printf_P(PSTR("Error: failed to open '%s'\n"), fname);
- return CMD_RET_FAILURE;
- }
+ if (res)
+ goto out;
printf_P(PSTR("Loading: '%s'...\n"), fname);
/* read the load record */
- res = f_read(&File, buffer, RS, &br);
- if (res || br != RS)
+ res = read_record(&File, buffer);
+ if (res)
goto out;
mem_top = buffer[0] << 8;
@@ -118,8 +119,8 @@ command_ret_t do_loadcpm3(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char *
osentry_addr = buffer[4] + (buffer[5] << 8);
/* read display info */
- res = f_read(&File, buffer, RS, &br);
- if (res || br != RS)
+ res = read_record(&File, buffer);
+ if (res)
goto out;
/* print the info */
@@ -134,11 +135,15 @@ command_ret_t do_loadcpm3(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char *
*/
FSIZE_t common_base_ofs = ((res_len - 6) << 8) + 2*RS + RS-7;
FSIZE_t cur_pos = f_tell(&File);
+ unsigned int br; /* bytes read */
if ((res = f_lseek(&File, common_base_ofs)) ||
(res = f_read(&File, buffer, 2, &br)) ||
- (br != 2) ||
(res = f_lseek(&File, cur_pos)))
goto out;
+ if (br != 2) {
+ res = EEOF;
+ goto out;
+ }
common_base = (uint16_t) buffer[0] + (buffer[1] << 8);
setenv_hex(PSTR(ENV_CPM3_COMMON_BASE), common_base);
}
@@ -157,38 +162,36 @@ command_ret_t do_loadcpm3(cmd_tbl_t *cmdtp, uint_fast8_t flag, int argc, char *
out:
f_close(&File);
- if (res) {
- printf_P(PSTR("Error: failed to read '%s'\n"), fname);
- return CMD_RET_FAILURE;
- } else {
- if (res_len != 0) {
- if (osentry_addr + common_base > 0xffff) {
- z80_bus_cmd(Request);
- if (z80_read(osentry_addr + common_base) == 0xc3) {
- osentry_addr = z80_read(osentry_addr+common_base+1) +
- (z80_read(osentry_addr + common_base+2) << 8);
- }
- z80_bus_cmd(Release);
- if (banked_base + osentry_addr > 0xffff)
- osentry_addr = 0;
+ if (res)
+ cmd_error(CMD_RET_FAILURE, res, PSTR("%s"), fname);
+
+ if (res_len != 0) {
+ if (osentry_addr + common_base > 0xffff) {
+ z80_bus_cmd(Request);
+ if (z80_read(osentry_addr + common_base) == 0xc3) {
+ osentry_addr = z80_read(osentry_addr+common_base+1) +
+ (z80_read(osentry_addr + common_base+2) << 8);
}
- setenv_hex(PSTR(ENV_STARTADDRESS), osentry_addr);
+ z80_bus_cmd(Release);
+ if (banked_base + osentry_addr > 0xffff)
+ osentry_addr = 0;
}
- printf_P(PSTR("Loaded: Resident: "));
- if (res_len != 0)
- printf_P(PSTR("0x%.5lX-0x%.5lX, "),
- (common_base + mem_top) - res_len*256,
- (common_base + mem_top) - 1);
- else
- printf_P(PSTR(" - "));
- printf_P(PSTR("Banked: "));
- if (bank_len != 0)
- printf_P(PSTR("0x%.5lX-0x%.5lX\n"),
- (banked_base + bank_top) - bank_len*256,
- (banked_base + bank_top) - 1);
- else
- printf_P(PSTR(" - \n"));
-
- return CMD_RET_SUCCESS;
+ setenv_hex(PSTR(ENV_STARTADDRESS), osentry_addr);
}
+ printf_P(PSTR("Loaded: Resident: "));
+ if (res_len != 0)
+ printf_P(PSTR("%.5lX-%.5lX, "),
+ (common_base + mem_top) - res_len*256,
+ (common_base + mem_top) - 1);
+ else
+ printf_P(PSTR(" - "));
+ printf_P(PSTR("Banked: "));
+ if (bank_len != 0)
+ printf_P(PSTR("%.5lX-%.5lX\n"),
+ (banked_base + bank_top) - bank_len*256,
+ (banked_base + bank_top) - 1);
+ else
+ printf_P(PSTR(" - \n"));
+
+ return CMD_RET_SUCCESS;
}
diff --git a/avr/cmd_sd.c b/avr/cmd_sd.c
index b192215..7484855 100644
--- a/avr/cmd_sd.c
+++ b/avr/cmd_sd.c
@@ -11,7 +11,6 @@
#include "eval_arg.h"
#include "print-utils.h"
#include "z80-if.h"
-#include "errnum.h"
/*
diff --git a/avr/command_tbl.c b/avr/command_tbl.c
index d93294b..232d718 100644
--- a/avr/command_tbl.c
+++ b/avr/command_tbl.c
@@ -328,7 +328,7 @@ CMD_TBL_ITEM(
attach, CONFIG_SYS_MAXARGS, CTBL_RPT, do_attach,
"attach filesystem image file to CP/M drive",
"[-rw] [-o options] dsk<n> diskfile\n"
- " Attach diskfile to dsk<n>, where n in 0..7\n"
+ " Attach diskfile to dsk<n>, 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"
diff --git a/avr/strerror.c b/avr/strerror.c
index bb151ad..4fdc63d 100644
--- a/avr/strerror.c
+++ b/avr/strerror.c
@@ -5,14 +5,23 @@
*/
#include "common.h"
-#include "errnum.h"
#include "cmd_fat.h"
static const FLASH char * const FLASH error_strings[] = {
FSTR("Unknown error"),
FSTR("Not enough memory"),
- FSTR("Bus timeout")
+ FSTR("Bus timeout"),
+ FSTR("Unexpected argument"),
+ FSTR("Invalid disk number"),
+ FSTR("Disk already attached"),
+ FSTR("Disk not attached"),
+ FSTR("Error opening file"),
+ FSTR("File already attached to other drive"),
+ FSTR("CPU is running"),
+ FSTR("Invalid argument"),
+ FSTR("Unexpected EOF"),
+
};
const FLASH char * my_strerror_P(ERRNUM errnum)
diff --git a/avr/z180-serv.c b/avr/z180-serv.c
index ac57645..cdc6e5e 100644
--- a/avr/z180-serv.c
+++ b/avr/z180-serv.c
@@ -292,17 +292,17 @@ int drv_attach(uint8_t unit, const char *filename, drv_opt_t options)
drv = unit;
if (drv >= CONFIG_CPM_MAX_DRIVE)
- return AT_RANGE;
+ return EATRANGE;
struct cpm_drive_s *p = &drv_table[drv];
if (options & DRV_OPT_REATTATCH) {
if (filename) {
- return AT_ERROR;
+ return EUNEXPARG;
}
if (!p->img_name) {
- return AT_NOT;
+ return EATNOT;
}
/* change options */
@@ -317,16 +317,16 @@ int drv_attach(uint8_t unit, const char *filename, drv_opt_t options)
} else {
if (p->img_name)
- return AT_ALREADY;
+ return EATALRDY;
if (drv_find_file_attached(filename) >= 0)
- return AT_OTHER;
+ return EATOTHER;
p->opt = options;
/* new attachment */
if ((p->img_name = strdup(filename)) == NULL)
- return AT_NOMEM;
+ return ENOMEM;
res = f_open(&p->fd, p->img_name,
FA_READ | (options&DRV_OPT_RO ? 0 : FA_WRITE));
@@ -355,11 +355,11 @@ int drv_attach(uint8_t unit, const char *filename, drv_opt_t options)
}
if (res) {
drv_detach(drv);
- return AT_OPEN;
+ return EATOPEN;
}
}
- return AT_OK;
+ return ESUCCESS;
}
diff --git a/include/common.h b/include/common.h
index eb38853..12d87c4 100644
--- a/include/common.h
+++ b/include/common.h
@@ -12,6 +12,7 @@
#include <stdbool.h>
#include <string.h>
#include <stdlib.h>
+#include "errnum.h"
#define GCC_VERSION (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__)
@@ -82,18 +83,18 @@ extern volatile uint_least8_t Stat;
#define S_CON_PENDING (1<<2)
static inline
-void my_puts(const char *s)
+int my_puts(const char *s)
{
- fputs(s, stdout);
+ return fputs(s, stdout);
}
static inline
-void my_puts_P(const char *s)
+int my_puts_P(const char *s)
{
#ifdef __AVR__
- fputs_P(s, stdout);
+ return fputs_P(s, stdout);
#else
- fputs(s, stdout);
+ return fputs(s, stdout);
#endif /* __AVR__ */
}
diff --git a/include/config.h b/include/config.h
index d989772..6640e67 100644
--- a/include/config.h
+++ b/include/config.h
@@ -44,6 +44,7 @@
#define CONFIG_CPM3_BANKED_BASE_STR "0"
#define CONFIG_CPM_MAX_DRIVE 8
+#define CONFIG_CPM_MAX_DRNR_STR "7"
#define CONFIG_CPM_BASE_DRIVE 'A'
#define CONFIG_CPM_BLOCK_SIZE 512
diff --git a/include/errnum.h b/include/errnum.h
index 5de8f2b..adb8a80 100644
--- a/include/errnum.h
+++ b/include/errnum.h
@@ -10,8 +10,19 @@
#include "errnum.h"
typedef enum {
- ENOMEM = 101,
- EBUSTO
+ ESUCCESS = 0,
+ ENOMEM = 101,
+ EBUSTO,
+ EUNEXPARG,
+ EATRANGE,
+ EATALRDY,
+ EATNOT,
+ EATOPEN,
+ EATOTHER,
+ ERUNNING,
+ EINVAL,
+ EEOF,
+
} ERRNUM;
#endif /* ERRNUM_H */
diff --git a/include/z180-serv.h b/include/z180-serv.h
index 3b4a462..760fa04 100644
--- a/include/z180-serv.h
+++ b/include/z180-serv.h
@@ -38,18 +38,6 @@ struct cpm_drive_s {
FIL fd;
};
-/* Return codes */
-
-#define AT_OK 0
-#define AT_ERROR 1
-#define AT_RANGE 2
-#define AT_ALREADY 3
-#define AT_NOT 4
-#define AT_NOFILE 5
-#define AT_NOMEM 6
-#define AT_OPEN 7
-#define AT_OTHER 8
-
int drv_list(void);
int drv_detach(uint8_t drv);