Code review changes and build fix.

This commit is contained in:
IrgendwerA8 2019-03-04 23:13:24 +01:00
parent 8ead5f2f5a
commit e1a4910580
2 changed files with 25 additions and 15 deletions

View File

@ -57,7 +57,7 @@
/* I/O control block */
typedef struct {
struct __iocb {
unsigned char handler; /* handler index number (0xff free) */
unsigned char drive; /* device number (drive) */
unsigned char command; /* command */
@ -71,22 +71,26 @@ typedef struct {
unsigned char aux4; /* 4th auxiliary byte */
unsigned char aux5; /* 5th auxiliary byte */
unsigned char spare; /* spare byte */
} IOCB;
};
typedef struct __iocb IOCB;
/* DOS 2.x zeropage variables */
typedef struct {
struct __dos2x {
unsigned char* zbufp; /* points to user filename */
unsigned char* zdrva; /* points to serveral buffers (mostly VTOC) */
unsigned char* zsba; /* points to sector buffer */
unsigned char errno; /* number of occured error */
} DOS2X;
};
typedef struct __dos2x DOS2X;
/* A single device handler formed by it's routines */
typedef struct {
struct __devhdl {
void *open; /* address of OPEN routine -1 */
void *close; /* address of CLOSE routine -1 */
void *get; /* address of GET BYTE routine -1 */
@ -95,26 +99,33 @@ typedef struct {
void *special; /* address od SPECIAL routine -1 */
void (*init)(void); /* init routine (JMP INIT) */
void *reserved; /* unused */
} DEVHDL;
};
typedef struct __devhdl DEVHDL;
/* List of device handlers, as managed in HATABS */
typedef struct {
struct __hatabs {
unsigned char id; /* ATASCII code of handler e.g. 'C','D','E','K','P','S','R' */
DEVHDL* devhdl; /* Pointer to routines of device */
} HATABS;
};
typedef struct __hatabs HATABS;
/* Floating point register */
typedef struct {
struct __fpreg {
#ifdef OS_REV2
unsigned char fr;
unsigned char frm[5]; /* 5-byte register mantissa */
#else
unsigned char fr[6]; /* 6 bytes for single register */
#endif
} FPREG;
};
typedef struct __fpreg FPREG;
enum { /* enum for access of floating point registers */
R0 = 0, /* (to use as index) */
@ -653,3 +664,4 @@ struct __basic {
unsigned int binint; // = $D4/$D5 USR-CALL RETURN VALUE
};
#endif

View File

@ -22,13 +22,11 @@ static char C_dev[] = "C:";
static struct __iocb *findfreeiocb(void)
{
struct __iocb *iocb = &IOCB; /* first IOCB (#0) */
int i;
for (i = 0; i < 8; i++) {
if (iocb->handler == 0xff)
return iocb;
iocb++;
if (OS.iocb[i].handler == 0xff)
return &OS.iocb[i];
}
return NULL;
}
@ -52,7 +50,7 @@ int main(int argc, char **argv)
fprintf(stderr, "couldn't find a free iocb\n");
return 1;
}
iocb_num = (iocb - &IOCB) * 16;
iocb_num = (iocb - OS.iocb) * 16;
if (verbose)
printf("using iocb index $%02X ($%04X)\n", iocb_num, iocb);