From 724a1aa988f9c93a8f2b30e4dcf3e7e6124e9d06 Mon Sep 17 00:00:00 2001 From: Bobbi Webber-Manners Date: Fri, 4 Sep 2020 01:23:03 -0400 Subject: [PATCH] EDIT: Removed AUXMEM ifdef. The code now requires aux memory (128K on //e) --- apps/edit.c | 109 +--------------------------------------------------- 1 file changed, 1 insertion(+), 108 deletions(-) diff --git a/apps/edit.c b/apps/edit.c index 14f03f1..8a6c907 100644 --- a/apps/edit.c +++ b/apps/edit.c @@ -10,8 +10,6 @@ // Note: Use my fork of cc65 to get a flashing cursor!! ///////////////////////////////////////////////////////////////////////////// -#define AUXMEM // No longer builds without AUXMEM - #include #include #include @@ -36,18 +34,12 @@ #define ESC 0x1b #define DELETE 0x7f -#ifdef AUXMEM #define BUFSZ 0xb7fe // Aux from 0x800 to 0xbfff, minus a pad byte 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 auxbank = 0; // Currently selected aux bank (physical) uint8_t l_auxbank = 1; // Currently selected aux bank (logical) uint16_t cutbuflen = 0; // Length of data in cut buffer -#else -#define BUFSZ (20480 - 1024) // 19KB -char gapbuf[BUFSZ]; -char padding = 0; // To null terminate for strstr() -#endif // The following fields, plus the gap buffer, represent the state of // the current buffer. These are stashed in each aux page from 0x200 up. @@ -121,7 +113,6 @@ char namefilemsg[] = */ #pragma code-name (push, "LC") char get_gapbuf(uint16_t i) { -#ifdef AUXMEM *(uint16_t*)(0xfe) = (uint16_t)0x0800 + i; // Stuff address in Zero Page __asm__("lda %v", auxbank); __asm__("sta $c073"); // Set aux bank @@ -132,9 +123,6 @@ char get_gapbuf(uint16_t i) { __asm__("lda #$00"); __asm__("sta $c073"); // Set aux bank back to 0 return *(uint8_t*)(0xff); -#else - return gapbuf[i]; -#endif } #pragma code-name (pop) @@ -146,7 +134,6 @@ char get_gapbuf(uint16_t i) { */ #pragma code-name (push, "LC") void set_gapbuf(uint16_t i, char c) { -#ifdef AUXMEM __asm__("lda %v", auxbank); __asm__("sta $c073"); // Set aux bank __asm__("sta $c005"); // Write aux mem @@ -154,9 +141,6 @@ void set_gapbuf(uint16_t i, char c) { __asm__("sta $c004"); // Write main mem __asm__("lda #$00"); __asm__("sta $c073"); // Set aux bank back to 0 -#else - gapbuf[i] = c; -#endif } #pragma code-name (pop) @@ -169,18 +153,15 @@ void set_gapbuf(uint16_t i, char c) { */ #pragma code-name (push, "LC") void move_in_gapbuf(uint16_t dst, uint16_t src, size_t n) { -#ifdef AUXMEM if (dst > src) { // Start with highest addr and copy downwards *(uint16_t*)(0xfa) = n; // Stuff sz in ZP *(uint16_t*)(0xfc) = (uint16_t)0x0800 + src - 1; // Stuff src in ZP *(uint16_t*)(0xfe) = (uint16_t)0x0800 + dst - 1; // Stuff dst in ZP -#ifdef AUXMEM __asm__("lda %v", auxbank); __asm__("sta $c073"); // Set aux bank __asm__("sta $c005"); // Write aux mem __asm__("sta $c003"); // Read aux mem -#endif __asm__("clc"); // Prepare the source pointer __asm__("lda $fd"); // MSB of source __asm__("adc $fb"); // MSB of n @@ -216,23 +197,19 @@ dl3: __asm__("inx"); __asm__("jmp %g", dl2); ds2: -#ifdef AUXMEM __asm__("sta $c002"); // Read main mem __asm__("sta $c004"); // Write main mem __asm__("lda #$00"); __asm__("sta $c073"); // Set aux bank back to 0 -#endif } else { // Start with lowest addr and copy upwards *(uint16_t*)(0xfa) = n; // Stuff sz in ZP *(uint16_t*)(0xfc) = (uint16_t)0x0800 + src; // Stuff src in ZP *(uint16_t*)(0xfe) = (uint16_t)0x0800 + dst; // Stuff dst in ZP -#ifdef AUXMEM __asm__("lda %v", auxbank); __asm__("sta $c073"); // Set aux bank __asm__("sta $c005"); // Write aux mem __asm__("sta $c003"); // Read aux mem -#endif __asm__("ldx #$00"); al1: __asm__("cpx $fb"); // MSB of n @@ -259,21 +236,16 @@ al3: __asm__("iny"); __asm__("jmp %g", al3); as2: -#ifdef AUXMEM __asm__("sta $c002"); // Read main mem __asm__("sta $c004"); // Write main mem __asm__("lda #$00"); __asm__("sta $c073"); // Set aux bank back to 0 -#endif } -#else - memmove(gapbuf + dst, gapbuf + src, n); -#endif } #pragma code-name (pop) #pragma data-name (push, "LC") -char needle[80] = ""; // Must be in LC memory if using AUXMEM +char needle[80] = ""; // Must be in LC memory #pragma data-name (pop) /* @@ -301,15 +273,11 @@ uint8_t search_in_gapbuf(uint16_t i, char *srch, uint16_t *loc) { *(uint16_t*)(0xfc) = (uint16_t)needle; *(uint16_t*)(0xf8) = (uint16_t)needle; // Another copy of needle ptr -#ifdef AUXMEM *(uint16_t*)(0xfa) = (uint16_t)0x0800 + i; // Haystack pointer __asm__("lda %v", auxbank); __asm__("sta $c073"); // Set aux bank __asm__("sta $c005"); // Write aux mem __asm__("sta $c003"); // Read aux mem -#else - *(uint16_t*)(0xfa) = (uint16_t)gapbuf + i; // Haystack pointer -#endif __asm__("ldy #$00"); __asm__("lda ($fc),y"); // Get first byte of needle @@ -365,25 +333,19 @@ l5: // We found the needle found: -#ifdef AUXMEM __asm__("sta $c002"); // Read main mem __asm__("sta $c004"); // Write main mem __asm__("lda #$00"); __asm__("sta $c073"); // Set aux bank back to 0 *loc = *(uint16_t*)0xfa - 0x0800; -#else - *loc = *(uint16_t*)0xfa - (uint16_t)gapbuf; -#endif return 1; // We reached end of haystack without finding needle notfound: -#ifdef AUXMEM __asm__("sta $c002"); // Read main mem __asm__("sta $c004"); // Write main mem __asm__("lda #$00"); __asm__("sta $c073"); // Set aux bank back to 0 -#endif return 0; //#else @@ -696,7 +658,6 @@ uint8_t next_tabstop(uint8_t col) { return (col / 8) * 8 + 8; } -#ifdef AUXMEM #define FROMAUX 0 #define TOAUX 1 /* @@ -717,7 +678,6 @@ void copyaux(char *src, char *dst, uint16_t len, uint8_t dir) { __asm__("jsr $c311"); // AUXMOVE } } -#endif /* * Translate logic aux bank number to physical. @@ -734,7 +694,6 @@ uint8_t bank_log_to_phys(uint8_t l) { * Current physical bank is in auxbank * logbank - desired logical bank */ -#ifdef AUXMEM #pragma code-name (push, "LC") void change_aux_bank(uint8_t logbank) { if (logbank > banktbl[0]) { @@ -755,7 +714,6 @@ void change_aux_bank(uint8_t logbank) { __asm__("sta $c073"); // Set aux bank back to 0 } #pragma code-name (pop) -#endif /* * Used by load_file() when opening a new bank for a large file @@ -827,19 +785,9 @@ uint8_t load_file(char *fname, uint8_t replace, uint8_t copymode) { gapend = BUFSZ - 1; col = 0; } -#ifdef AUXMEM cutbuflen = 0; p = iobuf; -#else - p = gapbuf + gapend - IOSZ; // Read to mem just before gapend -#endif do { -#ifndef AUXMEM - if (FREESPACE() < IOSZ * 2) { - show_error("File truncated"); - goto done; - } -#endif spinner(DATASIZE(), 0, copymode); s = fread(p, 1, IOSZ, fp); cont = (s == IOSZ ? 1 : 0); @@ -849,7 +797,6 @@ uint8_t load_file(char *fname, uint8_t replace, uint8_t copymode) { case '\n': // UNIX files set_gapbuf(gapbegin++, '\r'); col = 0; -#ifdef AUXMEM if (replace && (FREESPACE() < 15000) && (banktbl[0] > 1)) { draw_screen(); if (open_new_aux_bank(++partctr) == 1) { @@ -862,7 +809,6 @@ uint8_t load_file(char *fname, uint8_t replace, uint8_t copymode) { goto done; } } -#endif break; case '\t': c = next_tabstop(col) - col; @@ -883,10 +829,8 @@ uint8_t load_file(char *fname, uint8_t replace, uint8_t copymode) { done: fclose(fp); if (replace) { -#ifdef AUXMEM if (partctr > 0) status[2] = ++partctr; -#endif jump_pos(0); pos = 0; set_modified(0); @@ -906,19 +850,12 @@ done: * Returns 0 on success * 1 if file can't be opened */ -#ifndef AUXMEM -#pragma code-name (push, "LC") -#endif uint8_t save_file(uint8_t copymode, uint8_t append) { uint16_t pos = gapbegin; uint16_t sz; uint8_t retval = 1; uint8_t i; -#ifdef AUXMEM uint16_t p, j; -#else - char *p; -#endif FILE *fp; _filetype = PRODOS_T_TXT; _auxtype = 0; @@ -927,39 +864,24 @@ uint8_t save_file(uint8_t copymode, uint8_t append) { goto done; jump_pos(copymode == 1 ? startsel : 0); goto_prompt_row(); -#ifdef AUXMEM cutbuflen = 0; p = gapend + 1; -#else - p = gapbuf + gapend + 1; -#endif if (copymode) sz = endsel - startsel; else sz = DATASIZE(); for (i = 0; i < sz / IOSZ; ++i) { spinner(i * IOSZ, 1, copymode); -#ifdef AUXMEM for (j = 0; j < IOSZ; ++j) iobuf[j] = get_gapbuf(p++); if (fwrite(iobuf, IOSZ, 1, fp) != 1) goto done; -#else - if (fwrite(p, IOSZ, 1, fp) != 1) - goto done; - p += IOSZ; -#endif } spinner(i * IOSZ, 1, copymode); -#ifdef AUXMEM for (j = 0; j < sz - (IOSZ * i); ++j) iobuf[j] = get_gapbuf(p++); if (fwrite(iobuf, sz - (IOSZ * i), 1, fp) != 1) goto done; -#else - if (fwrite(p, sz - (IOSZ * i), 1, fp) != 1) - goto done; -#endif retval = 0; status[0] = 0; // No longer marked modified done: @@ -967,14 +889,10 @@ done: jump_pos(pos); return retval; } -#ifndef AUXMEM -#pragma code-name (pop) -#endif /* * Obtain the first bank number for the current file */ -#ifdef AUXMEM uint8_t find_first_bank(void) { if (status[2] == 0) // Not a multi-bank file return l_auxbank; @@ -982,12 +900,10 @@ uint8_t find_first_bank(void) { return l_auxbank; return l_auxbank - status[2] + 1; // Assumes banks allocated in order } -#endif /* * Save a large file that spans multiple banks */ -#ifdef AUXMEM uint8_t save_multibank_file(void) { uint8_t bank = find_first_bank(); uint8_t origbank = l_auxbank; @@ -1031,7 +947,6 @@ done: } return retval; } -#endif /* * Read next char from gapbuf[] and update state. @@ -1603,12 +1518,8 @@ void help(uint8_t num) { printf("Can't open help file\n\n"); goto done; } -#ifdef AUXMEM cutbuflen = 0; p = iobuf; -#else - p = gapbuf + gapend - IOSZ; // Read to just before gapend -#endif do { if (FREESPACE() < IOSZ) { beep(); @@ -1677,11 +1588,7 @@ void save(void) { } fclose(fp); } -#ifdef AUXMEM rc = save_multibank_file(); -#else - rc = save_file(0, 0); -#endif switch (rc) { case 0: // Success status[1] = 0; // No need to prompt for overwrite next time @@ -1870,7 +1777,6 @@ void init_aux_banks(void) { /* * Generate buffer list */ -#ifdef AUXMEM #pragma code-name (push, "LC") void buffer_list(void) { uint8_t o_aux = l_auxbank, row = 0; @@ -1904,7 +1810,6 @@ void buffer_list(void) { cgetc(); } #pragma code-name (pop) -#endif /* * Rename a file, taking care of multi-bank files @@ -1945,7 +1850,6 @@ void name_file(void) { /* * Save all modified buffers */ -#ifdef AUXMEM void save_all(void) { uint8_t o_aux = l_auxbank; uint8_t i; @@ -1965,7 +1869,6 @@ void save_all(void) { } change_aux_bank(o_aux); } -#endif /* * Sort startsel / endsel in ascending order to allow backwards selection @@ -2371,7 +2274,6 @@ int edit(char *fname) { } order_selection(); position = gapbegin; -#ifdef AUXMEM if (endsel - startsel <= CUTBUFSZ) { cutbuflen = endsel - startsel; jump_pos(startsel); @@ -2382,15 +2284,12 @@ int edit(char *fname) { __asm__("sta $c073"); // Set aux bank back to 0 } else { cutbuflen = 0; -#endif if (save_file(1, 0) == 1) { show_error("Can't save CLIPBOARD"); draw_screen(); break; } -#ifdef AUXMEM } -#endif if (tmp == 0) { // Cut mark_undo(); jump_pos(startsel); @@ -2628,7 +2527,6 @@ donehelp: } break; default: -#ifdef AUXMEM if (*(uint8_t*)0xc062 & 0x80) { // Closed Apple depressed // CA-number (1-9) - quick jump to first 9 buffers if ((c >= '1') && (c <= '9')) { @@ -2707,9 +2605,6 @@ donehelp: } } else if ((c >= 0x20) && (c < 0x80) && (mode == SEL_NONE)) { -#else - if ((c >= 0x20) && (c < 0x80) && (mode == SEL_NONE)) { -#endif mark_undo(); insert_char(c); update_after_insert_char(); @@ -2730,7 +2625,6 @@ void usage(void) { void main(int argc, char *argv[]) { uint8_t i; -#ifdef AUXMEM uint8_t *pp = (uint8_t*)0xbf98; if (!(*pp & 0x02)) { printf("Need 80 cols"); @@ -2744,7 +2638,6 @@ void main(int argc, char *argv[]) { avail_aux_banks(); init_aux_banks(); getcwd(startdir, 80); -#endif email_mode = 0; switch (argc) { case 3: