mirror of
https://github.com/hsoft/collapseos.git
synced 2024-11-23 22:48:05 +11:00
tools/emul/shell: allow the growing of fsdev
This commit is contained in:
parent
f511289a3a
commit
ecbb77072e
@ -26,6 +26,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
//#define DEBUG
|
//#define DEBUG
|
||||||
|
#define MAX_FSDEV_SIZE 0x20000
|
||||||
|
|
||||||
// in sync with shell.asm
|
// in sync with shell.asm
|
||||||
#define RAMSTART 0x4000
|
#define RAMSTART 0x4000
|
||||||
@ -37,7 +38,7 @@
|
|||||||
|
|
||||||
static Z80Context cpu;
|
static Z80Context cpu;
|
||||||
static uint8_t mem[0xffff] = {0};
|
static uint8_t mem[0xffff] = {0};
|
||||||
static uint8_t fsdev[0x20000] = {0};
|
static uint8_t fsdev[MAX_FSDEV_SIZE] = {0};
|
||||||
static uint32_t fsdev_size = 0;
|
static uint32_t fsdev_size = 0;
|
||||||
static uint32_t fsdev_ptr = 0;
|
static uint32_t fsdev_ptr = 0;
|
||||||
static int running;
|
static int running;
|
||||||
@ -58,7 +59,10 @@ static uint8_t io_read(int unused, uint16_t addr)
|
|||||||
#endif
|
#endif
|
||||||
return fsdev[fsdev_ptr++];
|
return fsdev[fsdev_ptr++];
|
||||||
} else {
|
} else {
|
||||||
|
// don't warn when ==, we're not out of bounds, just at the edge.
|
||||||
|
if (fsdev_ptr > fsdev_size) {
|
||||||
fprintf(stderr, "Out of bounds FSDEV read at %d\n", fsdev_ptr);
|
fprintf(stderr, "Out of bounds FSDEV read at %d\n", fsdev_ptr);
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
} else if (addr == FS_SEEKL_PORT) {
|
} else if (addr == FS_SEEKL_PORT) {
|
||||||
@ -85,6 +89,10 @@ static void io_write(int unused, uint16_t addr, uint8_t val)
|
|||||||
} else if (addr == FS_DATA_PORT) {
|
} else if (addr == FS_DATA_PORT) {
|
||||||
if (fsdev_ptr < fsdev_size) {
|
if (fsdev_ptr < fsdev_size) {
|
||||||
fsdev[fsdev_ptr++] = val;
|
fsdev[fsdev_ptr++] = val;
|
||||||
|
} else if ((fsdev_ptr == fsdev_size) && (fsdev_ptr < MAX_FSDEV_SIZE)) {
|
||||||
|
// We're at the end of fsdev, grow it
|
||||||
|
fsdev[fsdev_ptr++] = val;
|
||||||
|
fsdev_size++;
|
||||||
} else {
|
} else {
|
||||||
fprintf(stderr, "Out of bounds FSDEV write at %d\n", fsdev_ptr);
|
fprintf(stderr, "Out of bounds FSDEV write at %d\n", fsdev_ptr);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user