mirror of
https://github.com/bobbimanners/emailler.git
synced 2025-08-09 05:24:58 +00:00
EDIT: Added code to disconnect /RAM
This commit is contained in:
46
apps/edit.c
46
apps/edit.c
@@ -39,8 +39,8 @@
|
|||||||
#define BUFSZ 0xb7fe // Aux from 0x800 to 0xbfff, minus a pad byte
|
#define BUFSZ 0xb7fe // Aux from 0x800 to 0xbfff, minus a pad byte
|
||||||
char iobuf[CUTBUFSZ]; // Buffer for disk I/O and cut/paste
|
char iobuf[CUTBUFSZ]; // Buffer for disk I/O and cut/paste
|
||||||
uint8_t banktbl[1+8*16]; // Handles up to 8MB. Map of banks.
|
uint8_t banktbl[1+8*16]; // Handles up to 8MB. Map of banks.
|
||||||
uint8_t auxbank; // Currently selected aux bank (physical)
|
uint8_t auxbank = 0; // Currently selected aux bank (physical)
|
||||||
uint8_t l_auxbank; // Currently selected aux bank (logical)
|
uint8_t l_auxbank = 1; // Currently selected aux bank (logical)
|
||||||
uint16_t cutbuflen = 0; // Length of data in cut buffer
|
uint16_t cutbuflen = 0; // Length of data in cut buffer
|
||||||
#else
|
#else
|
||||||
#define BUFSZ (20480 - 1024) // 19KB
|
#define BUFSZ (20480 - 1024) // 19KB
|
||||||
@@ -1723,6 +1723,31 @@ search:
|
|||||||
mode = SEL_NONE;
|
mode = SEL_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Disconnect RAM disk /RAM
|
||||||
|
*/
|
||||||
|
void disconnect_ramdisk(void) {
|
||||||
|
uint8_t i, j;
|
||||||
|
uint8_t *devcnt = (uint8_t*)0xbf31; // Number of devices
|
||||||
|
uint8_t *devlst = (uint8_t*)0xbf32; // Disk device numbers
|
||||||
|
uint16_t *s0d1 = (uint16_t*)0xbf10; // s0d1 driver vector
|
||||||
|
uint16_t *s3d2 = (uint16_t*)0xbf26; // s3d2 driver vector
|
||||||
|
if (*s0d1 == *s3d2)
|
||||||
|
return; // No /RAM connected
|
||||||
|
for (i = *devcnt; i >= 0; --i) {
|
||||||
|
if ((devlst[i] == 0xbf) || (devlst[i] == 0xbb) ||
|
||||||
|
(devlst[i] == 0xb7) || (devlst[i] == 0xb3))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (i > 0) {
|
||||||
|
for (j = i; j < *devcnt; ++j) {
|
||||||
|
devlst[j] = devlst[j + 1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*s3d2 = *s0d1;
|
||||||
|
--(*devcnt);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Available aux banks. Taken from RamWorks III Manual p47
|
* Available aux banks. Taken from RamWorks III Manual p47
|
||||||
* banktbl is populated as follows:
|
* banktbl is populated as follows:
|
||||||
@@ -1919,10 +1944,6 @@ int edit(char *fname) {
|
|||||||
strcpy(filename, "");
|
strcpy(filename, "");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
jump_pos(0);
|
|
||||||
set_modified(0);
|
|
||||||
startsel = endsel = 65535U;
|
|
||||||
mode = SEL_NONE;
|
|
||||||
draw_screen();
|
draw_screen();
|
||||||
while (1) {
|
while (1) {
|
||||||
cursor(1);
|
cursor(1);
|
||||||
@@ -2102,8 +2123,10 @@ int edit(char *fname) {
|
|||||||
break; // ESC pressed
|
break; // ESC pressed
|
||||||
if (strlen(userentry) == 0)
|
if (strlen(userentry) == 0)
|
||||||
break;
|
break;
|
||||||
if (load_file(userentry, 0))
|
if (load_file(userentry, 0)) {
|
||||||
show_error("Can't open");
|
snprintf(iobuf, 80, "Can't open '%s'", userentry);
|
||||||
|
show_error(iobuf);
|
||||||
|
}
|
||||||
draw_screen();
|
draw_screen();
|
||||||
break;
|
break;
|
||||||
case 0x80 + 'O': // OA-O "Open"
|
case 0x80 + 'O': // OA-O "Open"
|
||||||
@@ -2114,12 +2137,6 @@ int edit(char *fname) {
|
|||||||
break; // ESC pressed
|
break; // ESC pressed
|
||||||
if (strlen(userentry) == 0)
|
if (strlen(userentry) == 0)
|
||||||
break;
|
break;
|
||||||
jump_pos(0);
|
|
||||||
set_modified(0);
|
|
||||||
startsel = endsel = 65535U;
|
|
||||||
mode = SEL_NONE;
|
|
||||||
gapbegin = 0;
|
|
||||||
gapend = BUFSZ - 1;
|
|
||||||
strcpy(filename, userentry);
|
strcpy(filename, userentry);
|
||||||
if (load_file(filename, 1)) {
|
if (load_file(filename, 1)) {
|
||||||
snprintf(userentry, 80, "Can't open '%s'", filename);
|
snprintf(userentry, 80, "Can't open '%s'", filename);
|
||||||
@@ -2332,6 +2349,7 @@ void main(int argc, char *argv[]) {
|
|||||||
#ifdef AUXMEM
|
#ifdef AUXMEM
|
||||||
char *pad = (char*)0xbfff;
|
char *pad = (char*)0xbfff;
|
||||||
*pad = '\0'; // Null termination for strstr()
|
*pad = '\0'; // Null termination for strstr()
|
||||||
|
disconnect_ramdisk();
|
||||||
avail_aux_banks();
|
avail_aux_banks();
|
||||||
init_aux_banks();
|
init_aux_banks();
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user