From fd75f3937097ec2a8451bbfe58bd68c7e00a0b5f Mon Sep 17 00:00:00 2001 From: Etienne Brateau <etienne.brateau@ensiie.fr> Date: Sat, 15 Dec 2018 07:52:46 +0100 Subject: [PATCH] Reindent diggates.c --- log/src/diggates.c | 1260 ++++++++++++++++++++++---------------------- 1 file changed, 618 insertions(+), 642 deletions(-) diff --git a/log/src/diggates.c b/log/src/diggates.c index 950f07c..546e470 100644 --- a/log/src/diggates.c +++ b/log/src/diggates.c @@ -7,18 +7,18 @@ Copyright (C) 1985, 1990 John Lazzaro. Author's address: lazzaro@csvax.caltech.edu; 256-80 Caltech. -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation (any version). + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation (any version). -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. -You should have received a copy of the GNU General Public License -along with this program; see the file COPYING. If not, write to -the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ + You should have received a copy of the GNU General Public License + along with this program; see the file COPYING. If not, write to + the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* Pascal module for SRAM8K and other gates */ @@ -52,312 +52,307 @@ typedef uchar ramarray[ramsize + 1]; /* Local variables for Log_mygates_sram8k: */ struct LOC_Log_mygates_sram8k { - log_16_action *act; - uchar *ram; -} ; + log_16_action *act; + uchar *ram; +}; -static void peek(n, LINK) -long n; -struct LOC_Log_mygates_sram8k *LINK; +static void peek(long n, struct LOC_Log_mygates_sram8k *LINK) { - log_16_action *WITH; - log_action_t *WITH1; - log_grec *WITH2; - - WITH = LINK->act; - WITH1 = WITH->lact; - WITH2 = WITH1->actgate; - LINK->ram = (uchar *)WITH2->info; - if (n < 0) - n = 0; - else if (n > ramsize) - n = ramsize; - if (n != WITH2->attr[attr_addrhex - 1].UU.U73.i1) - WITH2->attr[attr_addrhex - 1].changed = true; - if (n != WITH2->attr[attr_addrdec - 1].UU.U73.i1) - WITH2->attr[attr_addrdec - 1].changed = true; - if (LINK->ram[n] != WITH2->attr[attr_valhex - 1].UU.U73.i1) - WITH2->attr[attr_valhex - 1].changed = true; - if (LINK->ram[n] != WITH2->attr[attr_valdec - 1].UU.U73.i1) - WITH2->attr[attr_valdec - 1].changed = true; - WITH2->attr[attr_addrhex - 1].UU.U73.i1 = n; - WITH2->attr[attr_addrdec - 1].UU.U73.i1 = n; - WITH2->attr[attr_valhex - 1].UU.U73.i1 = LINK->ram[n]; - WITH2->attr[attr_valdec - 1].UU.U73.i1 = LINK->ram[n]; + log_16_action *WITH; + log_action_t *WITH1; + log_grec *WITH2; + + WITH = LINK->act; + WITH1 = WITH->lact; + WITH2 = WITH1->actgate; + LINK->ram = (uchar *)WITH2->info; + if (n < 0) + n = 0; + else if (n > ramsize) + n = ramsize; + + if (n != WITH2->attr[attr_addrhex - 1].UU.U73.i1) + WITH2->attr[attr_addrhex - 1].changed = true; + if (n != WITH2->attr[attr_addrdec - 1].UU.U73.i1) + WITH2->attr[attr_addrdec - 1].changed = true; + if (LINK->ram[n] != WITH2->attr[attr_valhex - 1].UU.U73.i1) + WITH2->attr[attr_valhex - 1].changed = true; + if (LINK->ram[n] != WITH2->attr[attr_valdec - 1].UU.U73.i1) + WITH2->attr[attr_valdec - 1].changed = true; + + WITH2->attr[attr_addrhex - 1].UU.U73.i1 = n; + WITH2->attr[attr_addrdec - 1].UU.U73.i1 = n; + WITH2->attr[attr_valhex - 1].UU.U73.i1 = LINK->ram[n]; + WITH2->attr[attr_valdec - 1].UU.U73.i1 = LINK->ram[n]; } -static void poke(n, LINK) -long n; -struct LOC_Log_mygates_sram8k *LINK; +static void poke(long n, struct LOC_Log_mygates_sram8k *LINK) { - log_16_action *WITH; - log_action_t *WITH1; - log_grec *WITH2; - - WITH = LINK->act; - WITH1 = WITH->lact; - WITH2 = WITH1->actgate; - LINK->ram = (uchar *)WITH2->info; - if (n < 0) - n = 0; - else if (n > 255) - n = 255; - LINK->ram[WITH2->attr[attr_addrdec - 1].UU.U73.i1] = n; - if (WITH2->attr[attr_mode - 1].UU.nv != 1) { - peek(WITH2->attr[attr_addrdec - 1].UU.U73.i1 + 1, LINK); - return; - } - WITH2->attr[attr_valdec - 1].UU.U73.i1 = n; - WITH2->attr[attr_valdec - 1].changed = true; - WITH2->attr[attr_valhex - 1].UU.U73.i1 = n; - WITH2->attr[attr_valhex - 1].changed = true; + log_16_action *WITH; + log_action_t *WITH1; + log_grec *WITH2; + + WITH = LINK->act; + WITH1 = WITH->lact; + WITH2 = WITH1->actgate; + LINK->ram = (uchar *)WITH2->info; + if (n < 0) + n = 0; + else if (n > 255) + n = 255; + + LINK->ram[WITH2->attr[attr_addrdec - 1].UU.U73.i1] = n; + if (WITH2->attr[attr_mode - 1].UU.nv != 1) { + peek(WITH2->attr[attr_addrdec - 1].UU.U73.i1 + 1, LINK); + return; + } + WITH2->attr[attr_valdec - 1].UU.U73.i1 = n; + WITH2->attr[attr_valdec - 1].changed = true; + WITH2->attr[attr_valhex - 1].UU.U73.i1 = n; + WITH2->attr[attr_valhex - 1].changed = true; } -static void configchgate(LINK) -struct LOC_Log_mygates_sram8k *LINK; +static void configchgate(struct LOC_Log_mygates_sram8k *LINK) { - long index_; - int lineflag; - char buf[256]; - FILE *textfile; - log_16_action *WITH; - log_action_t *WITH1; - log_grec *WITH2; - log_gattrrec *WITH3; - long FORLIM; - char STR3[256]; - char *TEMP; - - textfile = NULL; - WITH = LINK->act; - WITH1 = WITH->lact; - WITH2 = WITH1->actgate; - WITH3 = &WITH2->attr[WITH1->actx - 1]; - switch (WITH1->actx) { - - case attr_addrdec: - case attr_addrhex: - peek(WITH3->UU.U73.i1, LINK); - break; - - case attr_valdec: - case attr_valhex: - if (WITH2->attr[attr_mode - 1].UU.nv != 0) - poke(WITH3->UU.U73.i1, LINK); - else - WITH1->actflag = false; - break; - - case attr_savename: - strcpy(buf, WITH3->UU.c); - newci_fixfname(buf, "ram", ""); - TRY(try1); - if (textfile != NULL) - textfile = freopen(buf, "w", textfile); - else - textfile = fopen(buf, "w"); - if (textfile == NULL) { - P_escapecode = -10; - P_ioresult = FileNotFound; - goto _Ltry1; - } - lineflag = true; - FORLIM = WITH2->attr[attr_savemax - 1].UU.U73.i1; - for (index_ = WITH2->attr[attr_savemin - 1].UU.U73.i1; - index_ <= FORLIM; - index_++) { - if (lineflag) - fprintf(textfile, "%.4lX:", index_ & 0xffffL); - lineflag = false; - fprintf(textfile, "%.2X", LINK->ram[index_] & 0xff); - if ((index_ & 15) == 15) { - putc('\n', textfile); - lineflag = true; - } - } - if (!lineflag) - putc('\n', textfile); - if (textfile != NULL) - fclose(textfile); - textfile = NULL; - RECOVER2(try1,_Ltry1); - if (P_escapecode == -20) - _Escape(P_escapecode); - ENDTRY(try1); - *WITH3->UU.c = '\0'; - break; - - case attr_loadname: - strcpy(buf, WITH3->UU.c); - newci_fixfname(buf, "ram", ""); - TRY(try2); - if (textfile != NULL) - textfile = freopen(buf, "r", textfile); - else - textfile = fopen(buf, "r"); - if (textfile == NULL) { - P_escapecode = -10; - P_ioresult = FileNotFound; - goto _Ltry2; - } - while (fgets(buf, 256, textfile) != NULL) { - TEMP = (char *) strchr(buf, '\n'); - if (TEMP != NULL) - *TEMP = 0; - sprintf(STR3, "%.4s", buf); - index_ = strtol(STR3, NULL, 16); - while (strlen(buf) > 6) { - LINK->ram[index_] = strtol(strpart(STR3, buf, 6, 7), NULL, 16); - strcpy_overlap(buf, buf + 2); - index_ = (index_ + 1) % (ramsize + 1); -/* p2c: diggates.text, line 160: - * Note: Using % for possibly-negative arguments [317] */ + long index_; + int lineflag; + char buf[256]; + FILE *textfile; + log_16_action *WITH; + log_action_t *WITH1; + log_grec *WITH2; + log_gattrrec *WITH3; + long FORLIM; + char STR3[256]; + char *TEMP; + + textfile = NULL; + WITH = LINK->act; + WITH1 = WITH->lact; + WITH2 = WITH1->actgate; + WITH3 = &WITH2->attr[WITH1->actx - 1]; + switch (WITH1->actx) { + + case attr_addrdec: + case attr_addrhex: + peek(WITH3->UU.U73.i1, LINK); + break; + + case attr_valdec: + case attr_valhex: + if (WITH2->attr[attr_mode - 1].UU.nv != 0) + poke(WITH3->UU.U73.i1, LINK); + else + WITH1->actflag = false; + break; + + case attr_savename: + strcpy(buf, WITH3->UU.c); + newci_fixfname(buf, "ram", ""); + TRY(try1); + if (textfile != NULL) + textfile = freopen(buf, "w", textfile); + else + textfile = fopen(buf, "w"); + if (textfile == NULL) { + P_escapecode = -10; + P_ioresult = FileNotFound; + goto _Ltry1; + } + lineflag = true; + FORLIM = WITH2->attr[attr_savemax - 1].UU.U73.i1; + for (index_ = WITH2->attr[attr_savemin - 1].UU.U73.i1; + index_ <= FORLIM; + index_++) { + if (lineflag) + fprintf(textfile, "%.4lX:", index_ & 0xffffL); + lineflag = false; + fprintf(textfile, "%.2X", LINK->ram[index_] & 0xff); + if ((index_ & 15) == 15) { + putc('\n', textfile); + lineflag = true; + } + } + if (!lineflag) + putc('\n', textfile); + if (textfile != NULL) + fclose(textfile); + textfile = NULL; + RECOVER2(try1,_Ltry1); + if (P_escapecode == -20) + _Escape(P_escapecode); + ENDTRY(try1); + *WITH3->UU.c = '\0'; + break; + + case attr_loadname: + strcpy(buf, WITH3->UU.c); + newci_fixfname(buf, "ram", ""); + TRY(try2); + if (textfile != NULL) + textfile = freopen(buf, "r", textfile); + else + textfile = fopen(buf, "r"); + if (textfile == NULL) { + P_escapecode = -10; + P_ioresult = FileNotFound; + goto _Ltry2; + } + while (fgets(buf, 256, textfile) != NULL) { + TEMP = (char *) strchr(buf, '\n'); + if (TEMP != NULL) + *TEMP = 0; + sprintf(STR3, "%.4s", buf); + index_ = strtol(STR3, NULL, 16); + while (strlen(buf) > 6) { + LINK->ram[index_] = strtol(strpart(STR3, buf, 6, 7), NULL, 16); + strcpy_overlap(buf, buf + 2); + index_ = (index_ + 1) % (ramsize + 1); + } + } + if (textfile != NULL) + fclose(textfile); + textfile = NULL; + RECOVER2(try2,_Ltry2); + if (P_escapecode == -20) + _Escape(P_escapecode); + ENDTRY(try2); + *WITH3->UU.c = '\0'; + peek(WITH2->attr[attr_addrdec - 1].UU.U73.i1, LINK); + break; } - } - if (textfile != NULL) - fclose(textfile); - textfile = NULL; - RECOVER2(try2,_Ltry2); - if (P_escapecode == -20) - _Escape(P_escapecode); - ENDTRY(try2); - *WITH3->UU.c = '\0'; - peek(WITH2->attr[attr_addrdec - 1].UU.U73.i1, LINK); - break; - } - if (textfile != NULL) - fclose(textfile); + if (textfile != NULL) + fclose(textfile); } -void Log_mygates_sram8k(act_) -log_16_action *act_; +void Log_mygates_sram8k(log_16_action *act_) { /*sram8k*/ - struct LOC_Log_mygates_sram8k V; - log_16_value v; - uchar *ram2; - long addr, ramval; - log_16_action *WITH; - log_action_t *WITH1; - log_grec *WITH2; - long FORLIM; - int TEMP; - - V.act = act_; - WITH = V.act; - WITH1 = WITH->lact; - WITH2 = WITH1->actgate; - switch (V.act->action) { - - case act_16_new: - V.ram = (uchar *)Malloc(sizeof(ramarray)); - WITH2->info = (void *)V.ram; - break; - - case act_16_copy: - V.ram = (uchar *)Malloc(sizeof(ramarray)); - WITH2->info = (void *)V.ram; - ram2 = (uchar *)WITH1->actgate2->info; - memcpy(V.ram, ram2, sizeof(ramarray)); - break; - - case act_16_dispose: - V.ram = (uchar *)WITH2->info; - Free(V.ram); - break; - - case act_16_sim: - if ((((unsigned long)WITH2->vars) & (1L << 13)) == 0) { - V.ram = (uchar *)WITH2->info; - /* addr := vars.u1 div 8; */ - addr = ((((unsigned long)WITH2->vars) & (1L << 0)) != 0) * 4096 + - ((((unsigned long)WITH2->vars) & (1L << 1)) != 0) * 2048 + - ((((unsigned long)WITH2->vars) & (1L << 2)) != 0) * 1024 + - ((((unsigned long)WITH2->vars) & (1L << 3)) != 0) * 512 + - ((((unsigned long)WITH2->vars) & (1L << 4)) != 0) * 256 + - ((((unsigned long)WITH2->vars) & (1L << 5)) != 0) * 128; - addr += ((((unsigned long)WITH2->vars) & (1L << 6)) != 0) * 64 + - ((((unsigned long)WITH2->vars) & (1L << 7)) != 0) * 32 + - ((((unsigned long)WITH2->vars) & (1L << 8)) != 0) * 16 + - ((((unsigned long)WITH2->vars) & (1L << 9)) != 0) * 8 + - ((((unsigned long)WITH2->vars) & (1L << 10)) != 0) * 4 + - ((((unsigned long)WITH2->vars) & (1L << 11)) != 0) * 2 + - ((((unsigned long)WITH2->vars) & (1L << 12)) != 0); - if ((((unsigned long)WITH2->vars) & (1L << 14)) != 0 && - (((unsigned long)WITH2->vars) & (1L << 15)) == 0) { - ramval = V.ram[addr]; - (*WITH->hook_output)(WITH->lact, WITH2->pin[13], - log_16_bv[((ramval / 128) & 1) - false]); - (*WITH->hook_output)(WITH->lact, WITH2->pin[14], - log_16_bv[((ramval / 64) & 1) - false]); - (*WITH->hook_output)(WITH->lact, WITH2->pin[15], - log_16_bv[((ramval / 32) & 1) - false]); - (*WITH->hook_output)(WITH->lact, WITH2->pin[16], - log_16_bv[((ramval / 16) & 1) - false]); - (*WITH->hook_output)(WITH->lact, WITH2->pin[17], - log_16_bv[((ramval / 8) & 1) - false]); - (*WITH->hook_output)(WITH->lact, WITH2->pin[18], - log_16_bv[((ramval / 4) & 1) - false]); - (*WITH->hook_output)(WITH->lact, WITH2->pin[19], - log_16_bv[((ramval / 2) & 1) - false]); - (*WITH->hook_output)(WITH->lact, WITH2->pin[20], - log_16_bv[(ramval & 1) - false]); - } else if ((((unsigned long)WITH2->vars) & (1L << 14)) == 0) { - (*WITH->hook_input)(WITH->lact, WITH2->pin[13], &v); - ramval = log_16_vb[(long)v - (long)log_none]; - (*WITH->hook_input)(WITH->lact, WITH2->pin[14], &v); - ramval = ramval * 2 + log_16_vb[(long)v - (long)log_none]; - (*WITH->hook_input)(WITH->lact, WITH2->pin[15], &v); - ramval = ramval * 2 + log_16_vb[(long)v - (long)log_none]; - (*WITH->hook_input)(WITH->lact, WITH2->pin[16], &v); - ramval = ramval * 2 + log_16_vb[(long)v - (long)log_none]; - (*WITH->hook_input)(WITH->lact, WITH2->pin[17], &v); - ramval = ramval * 2 + log_16_vb[(long)v - (long)log_none]; - (*WITH->hook_input)(WITH->lact, WITH2->pin[18], &v); - ramval = ramval * 2 + log_16_vb[(long)v - (long)log_none]; - (*WITH->hook_input)(WITH->lact, WITH2->pin[19], &v); - ramval = ramval * 2 + log_16_vb[(long)v - (long)log_none]; - (*WITH->hook_input)(WITH->lact, WITH2->pin[20], &v); - ramval = ramval * 2 + log_16_vb[(long)v - (long)log_none]; - V.ram[addr] = ramval; - } - } - break; - - case act_16_configgate: - peek(WITH2->attr[attr_addrdec - 1].UU.U73.i1, &V); - break; - - case act_16_configchgate: - V.ram = (uchar *)WITH2->info; - configchgate(&V); - break; - - case act_16_write: - if (WITH2->attr[attr_saveit - 1].UU.b) { - V.ram = (uchar *)WITH2->info; - FORLIM = WITH2->attr[attr_savemax - 1].UU.U73.i1; - for (addr = WITH2->attr[attr_savemin - 1].UU.U73.i1; addr <= FORLIM; addr++) - fprintf(*WITH1->actfile, "%d\n", V.ram[addr]); - } - break; - - case act_16_read: - if (WITH2->attr[attr_saveit - 1].UU.b) { - V.ram = (uchar *)WITH2->info; - FORLIM = WITH2->attr[attr_savemax - 1].UU.U73.i1; - for (addr = WITH2->attr[attr_savemin - 1].UU.U73.i1; addr <= FORLIM; addr++) { - fscanf(*WITH1->actfile, "%d%*[^\n]", &TEMP); - getc(*WITH1->actfile); - V.ram[addr] = TEMP; - } - } - break; - - default: - break; - } + struct LOC_Log_mygates_sram8k V; + log_16_value v; + uchar *ram2; + long addr, ramval; + log_16_action *WITH; + log_action_t *WITH1; + log_grec *WITH2; + long FORLIM; + int TEMP; + + V.act = act_; + WITH = V.act; + WITH1 = WITH->lact; + WITH2 = WITH1->actgate; + switch (V.act->action) { + + case act_16_new: + V.ram = (uchar *)Malloc(sizeof(ramarray)); + WITH2->info = (void *)V.ram; + break; + + case act_16_copy: + V.ram = (uchar *)Malloc(sizeof(ramarray)); + WITH2->info = (void *)V.ram; + ram2 = (uchar *)WITH1->actgate2->info; + memcpy(V.ram, ram2, sizeof(ramarray)); + break; + + case act_16_dispose: + V.ram = (uchar *)WITH2->info; + Free(V.ram); + break; + + case act_16_sim: + if ((((unsigned long)WITH2->vars) & (1L << 13)) == 0) { + V.ram = (uchar *)WITH2->info; + /* addr := vars.u1 div 8; */ + addr = ((((unsigned long)WITH2->vars) & (1L << 0)) != 0) * 4096 + + ((((unsigned long)WITH2->vars) & (1L << 1)) != 0) * 2048 + + ((((unsigned long)WITH2->vars) & (1L << 2)) != 0) * 1024 + + ((((unsigned long)WITH2->vars) & (1L << 3)) != 0) * 512 + + ((((unsigned long)WITH2->vars) & (1L << 4)) != 0) * 256 + + ((((unsigned long)WITH2->vars) & (1L << 5)) != 0) * 128; + addr += ((((unsigned long)WITH2->vars) & (1L << 6)) != 0) * 64 + + ((((unsigned long)WITH2->vars) & (1L << 7)) != 0) * 32 + + ((((unsigned long)WITH2->vars) & (1L << 8)) != 0) * 16 + + ((((unsigned long)WITH2->vars) & (1L << 9)) != 0) * 8 + + ((((unsigned long)WITH2->vars) & (1L << 10)) != 0) * 4 + + ((((unsigned long)WITH2->vars) & (1L << 11)) != 0) * 2 + + ((((unsigned long)WITH2->vars) & (1L << 12)) != 0); + if ((((unsigned long)WITH2->vars) & (1L << 14)) != 0 && + (((unsigned long)WITH2->vars) & (1L << 15)) == 0) { + ramval = V.ram[addr]; + (*WITH->hook_output)(WITH->lact, WITH2->pin[13], + log_16_bv[((ramval / 128) & 1) - false]); + (*WITH->hook_output)(WITH->lact, WITH2->pin[14], + log_16_bv[((ramval / 64) & 1) - false]); + (*WITH->hook_output)(WITH->lact, WITH2->pin[15], + log_16_bv[((ramval / 32) & 1) - false]); + (*WITH->hook_output)(WITH->lact, WITH2->pin[16], + log_16_bv[((ramval / 16) & 1) - false]); + (*WITH->hook_output)(WITH->lact, WITH2->pin[17], + log_16_bv[((ramval / 8) & 1) - false]); + (*WITH->hook_output)(WITH->lact, WITH2->pin[18], + log_16_bv[((ramval / 4) & 1) - false]); + (*WITH->hook_output)(WITH->lact, WITH2->pin[19], + log_16_bv[((ramval / 2) & 1) - false]); + (*WITH->hook_output)(WITH->lact, WITH2->pin[20], + log_16_bv[(ramval & 1) - false]); + } else if ((((unsigned long)WITH2->vars) & (1L << 14)) == 0) { + (*WITH->hook_input)(WITH->lact, WITH2->pin[13], &v); + ramval = log_16_vb[(long)v - (long)log_none]; + (*WITH->hook_input)(WITH->lact, WITH2->pin[14], &v); + ramval = ramval * 2 + log_16_vb[(long)v - (long)log_none]; + (*WITH->hook_input)(WITH->lact, WITH2->pin[15], &v); + ramval = ramval * 2 + log_16_vb[(long)v - (long)log_none]; + (*WITH->hook_input)(WITH->lact, WITH2->pin[16], &v); + ramval = ramval * 2 + log_16_vb[(long)v - (long)log_none]; + (*WITH->hook_input)(WITH->lact, WITH2->pin[17], &v); + ramval = ramval * 2 + log_16_vb[(long)v - (long)log_none]; + (*WITH->hook_input)(WITH->lact, WITH2->pin[18], &v); + ramval = ramval * 2 + log_16_vb[(long)v - (long)log_none]; + (*WITH->hook_input)(WITH->lact, WITH2->pin[19], &v); + ramval = ramval * 2 + log_16_vb[(long)v - (long)log_none]; + (*WITH->hook_input)(WITH->lact, WITH2->pin[20], &v); + ramval = ramval * 2 + log_16_vb[(long)v - (long)log_none]; + V.ram[addr] = ramval; + } + } + break; + + case act_16_configgate: + peek(WITH2->attr[attr_addrdec - 1].UU.U73.i1, &V); + break; + + case act_16_configchgate: + V.ram = (uchar *)WITH2->info; + configchgate(&V); + break; + + case act_16_write: + if (WITH2->attr[attr_saveit - 1].UU.b) { + V.ram = (uchar *)WITH2->info; + FORLIM = WITH2->attr[attr_savemax - 1].UU.U73.i1; + for (addr = WITH2->attr[attr_savemin - 1].UU.U73.i1; addr <= FORLIM; addr++) + fprintf(*WITH1->actfile, "%d\n", V.ram[addr]); + } + break; + + case act_16_read: + if (WITH2->attr[attr_saveit - 1].UU.b) { + V.ram = (uchar *)WITH2->info; + FORLIM = WITH2->attr[attr_savemax - 1].UU.U73.i1; + for (addr = WITH2->attr[attr_savemin - 1].UU.U73.i1; addr <= FORLIM; addr++) { + fscanf(*WITH1->actfile, "%d%*[^\n]", &TEMP); + getc(*WITH1->actfile); + V.ram[addr] = TEMP; + } + } + break; + + default: + break; + } } #undef ramsize @@ -373,17 +368,13 @@ log_16_action *act_; #undef attr_savemax - - -static long byte_reverse(n) -long n; +static long byte_reverse(long n) { - return (((n / 128) & 1) + ((n / 64) & 1) * 2 + ((n / 32) & 1) * 4 + - ((n / 16) & 1) * 8 + ((n / 8) & 1) * 16 + ((n / 4) & 1) * 32 + - ((n / 2) & 1) * 64 + (n & 1) * 128); + return (((n / 128) & 1) + ((n / 64) & 1) * 2 + ((n / 32) & 1) * 4 + + ((n / 16) & 1) * 8 + ((n / 8) & 1) * 16 + ((n / 4) & 1) * 32 + + ((n / 2) & 1) * 64 + (n & 1) * 128); } - #define width_ 64 #define height_ 16 #define xspc 6 @@ -393,301 +384,290 @@ long n; typedef struct dispinfo { - long xpos, ypos; - int savetrig, saveclr, chgflag; - char scrn[height_][width_]; + long xpos, ypos; + int savetrig, saveclr, chgflag; + char scrn[height_][width_]; } dispinfo; /* Local variables for Log_mygates_ascdisp: */ struct LOC_Log_mygates_ascdisp { - log_16_action *act; - dispinfo *dip; -} ; + log_16_action *act; + dispinfo *dip; +}; -static void findorg(xorg, yorg, LINK) -long *xorg, *yorg; -struct LOC_Log_mygates_ascdisp *LINK; +static void findorg(long *xorg, long *yorg, struct LOC_Log_mygates_ascdisp *LINK) { - short tx, ty; - dispinfo *WITH; - log_action_t *WITH1; - - WITH = LINK->dip; - WITH1 = LINK->act->lact; - tx = 0; - ty = 0; - (*WITH1->hook.xform)(WITH1->actgate, &tx, &ty); - *xorg = tx - 21; - *yorg = ty - yspc * height_ + 22; + short tx, ty; + dispinfo *WITH; + log_action_t *WITH1; + + WITH = LINK->dip; + WITH1 = LINK->act->lact; + tx = 0; + ty = 0; + (*WITH1->hook.xform)(WITH1->actgate, &tx, &ty); + *xorg = tx - 21; + *yorg = ty - yspc * height_ + 22; } -static void xorcursor(LINK) -struct LOC_Log_mygates_ascdisp *LINK; +static void xorcursor(struct LOC_Log_mygates_ascdisp *LINK) { - long xorg, yorg; - dispinfo *WITH; - log_action_t *WITH1; - - WITH = LINK->dip; - WITH1 = LINK->act->lact; - findorg(&xorg, &yorg, LINK); - m_color((long)crtcolor); - m_colormode((long)m_xor); - m_fillrect(xorg + WITH->xpos * xspc, yorg + WITH->ypos * yspc, - xorg + (WITH->xpos + 1) * xspc - 1, - yorg + (WITH->ypos + 1) * yspc - 1); - m_colormode((long)m_normal); + long xorg, yorg; + dispinfo *WITH; + log_action_t *WITH1; + + WITH = LINK->dip; + WITH1 = LINK->act->lact; + findorg(&xorg, &yorg, LINK); + m_color((long)crtcolor); + m_colormode((long)m_xor); + m_fillrect(xorg + WITH->xpos * xspc, yorg + WITH->ypos * yspc, + xorg + (WITH->xpos + 1) * xspc - 1, + yorg + (WITH->ypos + 1) * yspc - 1); + m_colormode((long)m_normal); } -static void erasedisp(LINK) -struct LOC_Log_mygates_ascdisp *LINK; +static void erasedisp(struct LOC_Log_mygates_ascdisp *LINK) { - long xorg, yorg; - dispinfo *WITH; - log_action_t *WITH1; - - WITH = LINK->dip; - WITH1 = LINK->act->lact; - (*WITH1->hook.hidecursor)(); - findorg(&xorg, &yorg, LINK); - m_color((long)WITH1->color.backgr); - m_fillrect(xorg - 2, yorg - 2, xorg + xspc * width_ + 1, - yorg + yspc * height_ + 1); - (*WITH1->hook.unhidecursor)(); + long xorg, yorg; + dispinfo *WITH; + log_action_t *WITH1; + + WITH = LINK->dip; + WITH1 = LINK->act->lact; + (*WITH1->hook.hidecursor)(); + findorg(&xorg, &yorg, LINK); + m_color((long)WITH1->color.backgr); + m_fillrect(xorg - 2, yorg - 2, xorg + xspc * width_ + 1, + yorg + yspc * height_ + 1); + (*WITH1->hook.unhidecursor)(); } -static void refrdisp(LINK) -struct LOC_Log_mygates_ascdisp *LINK; +static void refrdisp(struct LOC_Log_mygates_ascdisp *LINK) { - long x, y, yy, xorg, yorg; - dispinfo *WITH; - log_action_t *WITH1; - char STR1[2]; - - WITH = LINK->dip; - WITH1 = LINK->act->lact; - (*WITH1->hook.hidecursor)(); - findorg(&xorg, &yorg, LINK); - m_color((long)WITH1->color.gate); - m_drawrect(xorg - 2, yorg - 2, xorg + xspc * width_ + 1, - yorg + yspc * height_ + 1); - for (y = 0; y < height_; y++) { - yy = yorg + y * yspc; - m_color((long)WITH1->color.backgr); - m_fillrect(xorg, yy, xorg + xspc * width_ - 1, yy + yspc - 1); - m_color((long)crtcolor); - for (x = 0; x < width_; x++) { - if (WITH->scrn[y][x] != ' ') { - sprintf(STR1, "%c", WITH->scrn[y][x]); - m_drawstr(xorg + x * xspc, yy, (char *) crtfont, STR1); - } - } - } - xorcursor(LINK); - (*WITH1->hook.unhidecursor)(); + long x, y, yy, xorg, yorg; + dispinfo *WITH; + log_action_t *WITH1; + char STR1[2]; + + WITH = LINK->dip; + WITH1 = LINK->act->lact; + (*WITH1->hook.hidecursor)(); + findorg(&xorg, &yorg, LINK); + m_color((long)WITH1->color.gate); + m_drawrect(xorg - 2, yorg - 2, xorg + xspc * width_ + 1, + yorg + yspc * height_ + 1); + for (y = 0; y < height_; y++) { + yy = yorg + y * yspc; + m_color((long)WITH1->color.backgr); + m_fillrect(xorg, yy, xorg + xspc * width_ - 1, yy + yspc - 1); + m_color((long)crtcolor); + for (x = 0; x < width_; x++) { + if (WITH->scrn[y][x] != ' ') { + sprintf(STR1, "%c", WITH->scrn[y][x]); + m_drawstr(xorg + x * xspc, yy, (char *) crtfont, STR1); + } + } + } + xorcursor(LINK); + (*WITH1->hook.unhidecursor)(); } -static void cleardisp(LINK) -struct LOC_Log_mygates_ascdisp *LINK; +static void cleardisp(struct LOC_Log_mygates_ascdisp *LINK) { - log_action_t *WITH; - dispinfo *WITH1; - - WITH = LINK->act->lact; - WITH1 = LINK->dip; - memset((void *)WITH1->scrn, ' ', (long)(width_ * height_)); - WITH1->xpos = 0; - WITH1->ypos = 0; - WITH1->chgflag = true; + log_action_t *WITH; + dispinfo *WITH1; + + WITH = LINK->act->lact; + WITH1 = LINK->dip; + memset((void *)WITH1->scrn, ' ', (long)(width_ * height_)); + WITH1->xpos = 0; + WITH1->ypos = 0; + WITH1->chgflag = true; } -static void scrollup(LINK) -struct LOC_Log_mygates_ascdisp *LINK; +static void scrollup(struct LOC_Log_mygates_ascdisp *LINK) { - log_action_t *WITH; - dispinfo *WITH1; - - WITH = LINK->act->lact; - WITH1 = LINK->dip; - memmove((void *)WITH1->scrn[0], (void *)WITH1->scrn[1], - width_ * (height_ - 1L)); - memset((void *)WITH1->scrn[height_ - 1], ' ', (long)width_); - WITH1->chgflag = true; + log_action_t *WITH; + dispinfo *WITH1; + + WITH = LINK->act->lact; + WITH1 = LINK->dip; + memmove((void *)WITH1->scrn[0], (void *)WITH1->scrn[1], + width_ * (height_ - 1L)); + memset((void *)WITH1->scrn[height_ - 1], ' ', (long)width_); + WITH1->chgflag = true; } -static void drawchar(ch, LINK) -char ch; -struct LOC_Log_mygates_ascdisp *LINK; +static void drawchar(char ch, struct LOC_Log_mygates_ascdisp *LINK) { - short attrnum; - log_action_t *WITH; - dispinfo *WITH1; - - WITH = LINK->act->lact; - WITH1 = LINK->dip; - if (ch < ' ') { - switch (ch) { - - case '\001': - WITH1->xpos = 0; - WITH1->ypos = 0; - WITH1->chgflag = true; - break; - - case '\007': - putchar('\007'); - break; - - case '\b': - if (WITH1->xpos > 0) { - WITH1->xpos--; - WITH1->chgflag = true; - (*WITH->hook2->findattrnum)(WITH->actgate->kind, "erase-bs", "B", - &attrnum); - if (attrnum != 0 && WITH->actgate->attr[attrnum - 1].UU.b) - WITH1->scrn[WITH1->ypos][WITH1->xpos] = ' '; - } - break; - - case '\t': - memset((void *)(&WITH1->scrn[WITH1->ypos][WITH1->xpos]), ' ', - width_ - WITH1->xpos); - WITH1->chgflag = true; - break; - - case '\n': - if (WITH1->ypos < height_ - 1) { - WITH1->ypos++; - WITH1->chgflag = true; - } else - scrollup(LINK); - break; - - case '\013': - memset((void *)(&WITH1->scrn[WITH1->ypos][WITH1->xpos]), ' ', - width_ * height_ - WITH1->ypos * width_ - WITH1->xpos); - WITH1->chgflag = true; - break; - - case '\f': - cleardisp(LINK); - break; - - case '\015': - WITH1->xpos = 0; - WITH1->chgflag = true; - (*WITH->hook2->findattrnum)(WITH->actgate->kind, "auto-lf", "B", - &attrnum); - if (attrnum != 0 && WITH->actgate->attr[attrnum - 1].UU.b) - drawchar('\n', LINK); - break; - - case '\034': - if (WITH1->xpos < width_ - 1) { + short attrnum; + log_action_t *WITH; + dispinfo *WITH1; + + WITH = LINK->act->lact; + WITH1 = LINK->dip; + if (ch < ' ') { + switch (ch) { + + case '\001': + WITH1->xpos = 0; + WITH1->ypos = 0; + WITH1->chgflag = true; + break; + + case '\007': + putchar('\007'); + break; + + case '\b': + if (WITH1->xpos > 0) { + WITH1->xpos--; + WITH1->chgflag = true; + (*WITH->hook2->findattrnum)(WITH->actgate->kind, "erase-bs", "B", + &attrnum); + if (attrnum != 0 && WITH->actgate->attr[attrnum - 1].UU.b) + WITH1->scrn[WITH1->ypos][WITH1->xpos] = ' '; + } + break; + + case '\t': + memset((void *)(&WITH1->scrn[WITH1->ypos][WITH1->xpos]), ' ', + width_ - WITH1->xpos); + WITH1->chgflag = true; + break; + + case '\n': + if (WITH1->ypos < height_ - 1) { + WITH1->ypos++; + WITH1->chgflag = true; + } else + scrollup(LINK); + break; + + case '\013': + memset((void *)(&WITH1->scrn[WITH1->ypos][WITH1->xpos]), ' ', + width_ * height_ - WITH1->ypos * width_ - WITH1->xpos); + WITH1->chgflag = true; + break; + + case '\f': + cleardisp(LINK); + break; + + case '\015': + WITH1->xpos = 0; + WITH1->chgflag = true; + (*WITH->hook2->findattrnum)(WITH->actgate->kind, "auto-lf", "B", + &attrnum); + if (attrnum != 0 && WITH->actgate->attr[attrnum - 1].UU.b) + drawchar('\n', LINK); + break; + + case '\034': + if (WITH1->xpos < width_ - 1) { + WITH1->xpos++; + WITH1->chgflag = true; + } + break; + + case '\037': + if (WITH1->ypos > 0) { + WITH1->ypos--; + WITH1->chgflag = true; + } + break; + } + return; + } + if ((ch & (~127)) != 0) + return; + WITH1->scrn[WITH1->ypos][WITH1->xpos] = ch; WITH1->xpos++; - WITH1->chgflag = true; - } - break; - - case '\037': - if (WITH1->ypos > 0) { - WITH1->ypos--; - WITH1->chgflag = true; - } - break; - } - return; - } - if ((ch & (~127)) != 0) - return; -/* p2c: diggates.text, line 472: Note: character >= 128 encountered [281] */ - WITH1->scrn[WITH1->ypos][WITH1->xpos] = ch; - WITH1->xpos++; - if (WITH1->xpos >= width_) { - (*WITH->hook2->findattrnum)(WITH->actgate->kind, "auto-wrap", "B", + if (WITH1->xpos >= width_) { + (*WITH->hook2->findattrnum)(WITH->actgate->kind, "auto-wrap", "B", &attrnum); - if (attrnum != 0 && WITH->actgate->attr[attrnum - 1].UU.b) { - WITH1->xpos = 0; - if (WITH1->ypos < height_ - 1) - WITH1->ypos++; - else - scrollup(LINK); - } else - WITH1->xpos--; - } - WITH1->chgflag = true; + if (attrnum != 0 && WITH->actgate->attr[attrnum - 1].UU.b) { + WITH1->xpos = 0; + if (WITH1->ypos < height_ - 1) + WITH1->ypos++; + else + scrollup(LINK); + } else + WITH1->xpos--; + } + WITH1->chgflag = true; } -void Log_mygates_ascdisp(act_) -log_16_action *act_; +void Log_mygates_ascdisp(log_16_action *act_) { /*ascdisp*/ - struct LOC_Log_mygates_ascdisp V; - dispinfo *dip2; - m_chpicrec **savef; - log_16_action *WITH; - log_action_t *WITH1; - log_grec *WITH2; - - V.act = act_; - WITH = V.act; - WITH1 = WITH->lact; - WITH2 = WITH1->actgate; - switch (V.act->action) { - - case act_16_new: - (*WITH1->hook.getcolor)("CRT", &crtcolor, log_green); - m_seefont(&savef); - m_choosefont(0L); - m_seefont(&crtfont); - m_setfont(savef); - V.dip = (dispinfo *)Malloc(sizeof(dispinfo)); - WITH2->info = (void *)V.dip; - cleardisp(&V); - V.dip->savetrig = true; - V.dip->saveclr = true; - break; - - case act_16_copy: - V.dip = (dispinfo *)Malloc(sizeof(dispinfo)); - WITH2->info = (void *)V.dip; - dip2 = (dispinfo *)WITH1->actgate2->info; - *V.dip = *dip2; - break; - - case act_16_dispose: - V.dip = (dispinfo *)WITH2->info; - Free(V.dip); - break; - - case act_16_sim: - V.dip = (dispinfo *)WITH2->info; - if ((((unsigned long)WITH2->vars) & (1L << 6)) != 0) { - if (!V.dip->saveclr) - cleardisp(&V); - } else if ((((unsigned long)WITH2->vars) & (1L << 7)) != 0 && !V.dip->savetrig) - drawchar((char)byte_reverse(((long)WITH2->vars / 256L) & 255), &V); - V.dip->saveclr = ((((unsigned long)WITH2->vars) & (1L << 6)) != 0); - V.dip->savetrig = ((((unsigned long)WITH2->vars) & (1L << 7)) != 0); - break; - - case act_16_draw: - V.dip = (dispinfo *)WITH2->info; - if (WITH1->refrflag || V.dip->chgflag) { - refrdisp(&V); - V.dip->chgflag = false; - } - break; - - case act_16_erase: - V.dip = (dispinfo *)WITH2->info; - erasedisp(&V); - break; - - default: - break; - } + struct LOC_Log_mygates_ascdisp V; + dispinfo *dip2; + m_chpicrec **savef; + log_16_action *WITH; + log_action_t *WITH1; + log_grec *WITH2; + + V.act = act_; + WITH = V.act; + WITH1 = WITH->lact; + WITH2 = WITH1->actgate; + switch (V.act->action) { + + case act_16_new: + (*WITH1->hook.getcolor)("CRT", &crtcolor, log_green); + m_seefont(&savef); + m_choosefont(0L); + m_seefont(&crtfont); + m_setfont(savef); + V.dip = (dispinfo *)Malloc(sizeof(dispinfo)); + WITH2->info = (void *)V.dip; + cleardisp(&V); + V.dip->savetrig = true; + V.dip->saveclr = true; + break; + + case act_16_copy: + V.dip = (dispinfo *)Malloc(sizeof(dispinfo)); + WITH2->info = (void *)V.dip; + dip2 = (dispinfo *)WITH1->actgate2->info; + *V.dip = *dip2; + break; + + case act_16_dispose: + V.dip = (dispinfo *)WITH2->info; + Free(V.dip); + break; + + case act_16_sim: + V.dip = (dispinfo *)WITH2->info; + if ((((unsigned long)WITH2->vars) & (1L << 6)) != 0) { + if (!V.dip->saveclr) + cleardisp(&V); + } else if ((((unsigned long)WITH2->vars) & (1L << 7)) != 0 && !V.dip->savetrig) + drawchar((char)byte_reverse(((long)WITH2->vars / 256L) & 255), &V); + V.dip->saveclr = ((((unsigned long)WITH2->vars) & (1L << 6)) != 0); + V.dip->savetrig = ((((unsigned long)WITH2->vars) & (1L << 7)) != 0); + break; + + case act_16_draw: + V.dip = (dispinfo *)WITH2->info; + if (WITH1->refrflag || V.dip->chgflag) { + refrdisp(&V); + V.dip->chgflag = false; + } + break; + + case act_16_erase: + V.dip = (dispinfo *)WITH2->info; + erasedisp(&V); + break; + + default: + break; + } } #undef width_ @@ -704,76 +684,72 @@ log_16_action *act_; * Warning: Multi-element string constructors not yet supported [136] */ #define map_c "12345\036789\0\037\036\021\027\005\022\024\031\025\t\017\020\033\035\001\023\004\006\007\b\n\013\f~`\015" - - - -void Log_mygates_asckbd(act) -log_16_action *act; +void Log_mygates_asckbd(log_16_action *act) { - char ch; - long keyx, keyy; - int asciimode; - log_action_t *WITH; - log_grec *WITH1; - int TEMP; - - WITH = act->lact; - WITH1 = WITH->actgate; - switch (act->action) { - - case act_16_sim: - if ((long)WITH1->info <= 0) { - if ((((unsigned long)WITH1->vars) & (1L << 7)) != 0) - WITH1->info = (na_long)6; - } else { - WITH1->info = (na_long)((long)WITH1->info - 1); - if ((long)WITH1->info <= 0) - WITH1->vars = (na_long)(((unsigned long)WITH1->vars) & (~(1L << 7))); - } - break; - - case act_16_touch: - if (P_ibetween(-11L, WITH->actx, 12L) && P_ibetween(-5L, WITH->acty, 4L)) { - keyx = (WITH->actx + 11) / 2; - keyy = (WITH->acty + 5) / 2; - if (keyy != 4 || ((unsigned long)keyx < 32 && ((1L << keyx) & 0x1f9) != 0)) { - asciimode = (WITH1->attr[0].UU.nv == 0); - if (asciimode && keyy == 3 && keyx == 10) { - TEMP = ((((unsigned long)WITH1->vars) & (1L << 6)) == 0); - WITH1->vars = (na_long)(((unsigned long)WITH1->vars) & (~(1L << 6))); - WITH1->vars = (na_long) - (((unsigned long)WITH1->vars) | (((long)TEMP) << 6)); - /*shift key*/ - WITH1->vars = (na_long)(((unsigned long)WITH1->vars) & (~(1L << 5))); - } else if (asciimode && keyy == 4 && keyx == 0) { - TEMP = ((((unsigned long)WITH1->vars) & (1L << 5)) == 0); - WITH1->vars = (na_long)(((unsigned long)WITH1->vars) & (~(1L << 5))); - WITH1->vars = (na_long) - (((unsigned long)WITH1->vars) | (((long)TEMP) << 5)); - /*ctrl key*/ - WITH1->vars = (na_long)(((unsigned long)WITH1->vars) & (~(1L << 6))); - } else { - if (keyy == 4 && keyx >= 3 && keyx <= 8) - keyx = 3; - if (asciimode) { - if ((((unsigned long)WITH1->vars) & (1L << 5)) != 0) - ch = map_c[keyy * 12 + keyx]; - else if ((((unsigned long)WITH1->vars) & (1L << 6)) != 0) - ch = map_s[keyy * 12 + keyx]; - else - ch = map[keyy * 12 + keyx]; - } else - ch = (char)(keyy * 16 + keyx); - WITH1->vars = (na_long)(byte_reverse((long)ch) * 256 + 128); + char ch; + long keyx, keyy; + int asciimode; + log_action_t *WITH; + log_grec *WITH1; + int TEMP; + + WITH = act->lact; + WITH1 = WITH->actgate; + switch (act->action) { + + case act_16_sim: + if ((long)WITH1->info <= 0) { + if ((((unsigned long)WITH1->vars) & (1L << 7)) != 0) + WITH1->info = (na_long)6; + } else { + WITH1->info = (na_long)((long)WITH1->info - 1); + if ((long)WITH1->info <= 0) + WITH1->vars = (na_long)(((unsigned long)WITH1->vars) & (~(1L << 7))); + } + break; + + case act_16_touch: + if (P_ibetween(-11L, WITH->actx, 12L) && P_ibetween(-5L, WITH->acty, 4L)) { + keyx = (WITH->actx + 11) / 2; + keyy = (WITH->acty + 5) / 2; + if (keyy != 4 || ((unsigned long)keyx < 32 && ((1L << keyx) & 0x1f9) != 0)) { + asciimode = (WITH1->attr[0].UU.nv == 0); + if (asciimode && keyy == 3 && keyx == 10) { + TEMP = ((((unsigned long)WITH1->vars) & (1L << 6)) == 0); + WITH1->vars = (na_long)(((unsigned long)WITH1->vars) & (~(1L << 6))); + WITH1->vars = (na_long) + (((unsigned long)WITH1->vars) | (((long)TEMP) << 6)); + /*shift key*/ + WITH1->vars = (na_long)(((unsigned long)WITH1->vars) & (~(1L << 5))); + } else if (asciimode && keyy == 4 && keyx == 0) { + TEMP = ((((unsigned long)WITH1->vars) & (1L << 5)) == 0); + WITH1->vars = (na_long)(((unsigned long)WITH1->vars) & (~(1L << 5))); + WITH1->vars = (na_long) + (((unsigned long)WITH1->vars) | (((long)TEMP) << 5)); + /*ctrl key*/ + WITH1->vars = (na_long)(((unsigned long)WITH1->vars) & (~(1L << 6))); + } else { + if (keyy == 4 && keyx >= 3 && keyx <= 8) + keyx = 3; + if (asciimode) { + if ((((unsigned long)WITH1->vars) & (1L << 5)) != 0) + ch = map_c[keyy * 12 + keyx]; + else if ((((unsigned long)WITH1->vars) & (1L << 6)) != 0) + ch = map_s[keyy * 12 + keyx]; + else + ch = map[keyy * 12 + keyx]; + } else + ch = (char)(keyy * 16 + keyx); + WITH1->vars = (na_long)(byte_reverse((long)ch) * 256 + 128); + } + WITH->actflag = true; + } + } + break; + + default: + break; } - WITH->actflag = true; - } - } - break; - - default: - break; - } } #undef map -- GitLab