Annotation of researchv9/jerq/src/lib/sys/setup.c, revision 1.1.1.1

1.1       root        1: #define y_line_to_pt(val)  ((val)*NS + YMARGIN)
                      2: 
                      3: #define SETUP_OWN      1       /* owner of setup.h definitions */
                      4: 
                      5: /* entrance to this routine happens when keyboard interrupt handler sees
                      6:        a setup key.   */
                      7: #include <jerq.h>
                      8: #include <font.h>
                      9: #include <kbd.h>
                     10: #include <setup.h>
                     11: extern Point cur;                      /* current cursor position */
                     12: extern int kbdstatus;
                     13: extern Point pt();             /* converts from row/col to Point */
                     14: extern aciainit();
                     15: 
                     16: int    Pf_edit;        /* flag 1= editing pf key 0= in setup options mode */
                     17: Word setup_space[XMAX/(8*sizeof(Word))][NS*2]; /* space for setup to   */
                     18:                                                /* screenswap to        */
                     19: Bitmap setup_swap = { setup_space, XMAX/(8*sizeof(Word)), 
                     20:                        {{(short) 0, (short) 0},{(short) XMAX,(short) NS*2}},
                     21:                        (char *) 0};
                     22: 
                     23: setupdisplay() /* draws the initial setup display, and the current values */
                     24: {
                     25:        Point setupcur;         /* save value of terminal cursor during setup */
                     26:        int tmpc;               /* temp char value : (int to avoid sgs bug) */
                     27:        int cursindx;           /* index into cursor position array */
                     28: 
                     29:        /* the setup routines assume a routine called kgetc(), which is */
                     30:        /* equivalent to getc() or kbdchar(), except that it comes straight */
                     31:        /* from the keyboard DUART, not through the queues */
                     32: 
                     33:        checkbram();            /* check bram checksum, if bad, set all 0s */
                     34:        setupcur = cur;         /* save cursor away */
                     35:        screenswap(&setup_swap,setup_swap.rect,
                     36:                        Rect(0,y_line_to_pt(ymax+1),XMAX,y_line_to_pt(ymax+3)));
                     37: 
                     38: reset_setup:
                     39:        clear (Rect(0, ymax+1, xmax+1, ymax+3));        /* might want to use */
                     40:                                                        /* a graypat instead */
                     41: 
                     42:                        /* NOTE: in layers mode, must do a "top" of the */
                     43:                        /* physical setup layer first                   */
                     44:                /* HMM... TOM, I just realized we really do want to allow */
                     45:                /* interrupts while doing this stuff... otherwise, suppose */
                     46:                /* I hit setup during download,  the terminal will never get */
                     47:                /* out of download mode if I take too long setting up */
                     48:                /* are there other UGH problems if the download completes */
                     49:                /* while still in setup mode???                         */
                     50:                
                     51:        Pf_edit =  cur.x = 0;
                     52:        cur.y = ymax+1;
                     53:        string (&defont, SETUP_HEADINGS, &display, pt(cur), F_STORE);
                     54:        cur.y++;
                     55: 
                     56:        for (cursindx = BAUD; cursindx < NUMOPTS; cursindx++)
                     57:        {
                     58:                string (&defont, val_indx[cursindx][BRAM->opts.opt_array[cursindx].byte],
                     59:                                        &display, pt(cur), F_STORE);
                     60:                cur.x = curpos[cursindx+1];
                     61:        }
                     62: 
                     63:        cap_setup();
                     64:        num_setup();
                     65:        cur.x = 0;
                     66:        cursindx = 0;
                     67:        curse();
                     68:        while((tmpc = kgetc()) != SETUPKEY)     /* 0xae */
                     69:        {
                     70:                switch (tmpc) {
                     71:                case TABKEY: 
                     72:                        curse();        /* erase old cursor */
                     73:                        cur.x = curpos[(cursindx + 1 >= NUMOPTS ? cursindx : ++cursindx)];
                     74:                        curse();
                     75:                        break;
                     76:                case BACKSPCKEY:
                     77:                        curse();        /* erase old cursor */
                     78:                        cur.x = curpos [(cursindx - 1 < 0 ? 0 : --cursindx)];
                     79:                        curse();
                     80:                        break;
                     81:                case SPACEKEY:
                     82:                        curse();        /* erase old cursor */
                     83:                        if (++BRAM->opts.opt_array[cursindx].byte >= val_maxes[cursindx])
                     84:                                BRAM->opts.opt_array[cursindx].byte = 0;
                     85:                        string (&defont, val_indx[cursindx][BRAM->opts.opt_array[cursindx].byte], &display, pt(cur), F_STORE);
                     86:                        switch (cursindx){
                     87:                        case BAUD:
                     88:                                aciainit(baud_speeds[VALBAUD]);
                     89:                                break;
                     90:                        case RETKEY:
                     91:                                /* This is examined in vitty.c:main */
                     92:                        case NEWLINE:
                     93:                                /* This is examined in vitty.c:introutine */
                     94:                        case DUPLEX:
                     95:                                /* This is examined in vitty.c:introutine */
                     96:                                break;
                     97:                        case KEYTONE:
                     98:                                if (VALKEYTONE)
                     99:                                        kbdstatus &= ~TTY_CHIRP;
                    100:                                else
                    101:                                        kbdstatus |= TTY_CHIRP;
                    102:                                DUART->b_data = kbdstatus;
                    103:                                break;
                    104:                        case SCREENCOLOR:
                    105:                                if (VALSCREENCOLOR)
                    106:                                        BonW();
                    107:                                else
                    108:                                        WonB();
                    109:                                break;
                    110:                        default:
                    111:                                /* Illegal value, force cursindx to 0 */
                    112:                                cursindx = 0;
                    113:                                break;
                    114:                        }
                    115:                        curse();        /* restore cursor */
                    116:                        break;
                    117:                case FUNC1KEY: case FUNC2KEY: case FUNC3KEY: case FUNC4KEY:
                    118:                case FUNC5KEY: case FUNC6KEY: case FUNC7KEY: case FUNC8KEY: 
                    119:                        Pf_edit = 1;
                    120:                        if (pfkey(tmpc - FUNC1KEY + 1) != SETUPKEY)
                    121:                                goto reset_setup;
                    122:                        else    /* exit of pfkey mode with setup means quit */
                    123:                                goto exit_setup;
                    124:                default:
                    125:                        /* ignore */
                    126:                        break;
                    127:                }
                    128:        }
                    129: exit_setup:            /* can jump here from pfkey exit via setupmode key */
                    130: 
                    131:                /* restore saved screen values */
                    132:        screenswap(&setup_swap,setup_swap.rect,Rect(0,y_line_to_pt(ymax+1),XMAX,y_line_to_pt(ymax+3)));
                    133:        /*
                    134:        * fix caps lock label 
                    135:        */
                    136:        caps_msg();
                    137:        num_msg();
                    138:        cur = setupcur; /* restore cursor value */
                    139:        setbram();      /* reset checksum value in BRAM */
                    140: }
                    141: 
                    142: caps_msg()
                    143: {
                    144:        Point ncur;
                    145:        int mode;
                    146: 
                    147:        if(VALDWNLDFLAG)
                    148:                return; /* a program is downloaded so don't show the message */
                    149:        mode = (VALCAPS ? F_STORE : F_CLR);
                    150:        ncur.x = 25;
                    151:        ncur.y = ymax+1;
                    152:        string(&defont, "caps", &display, pt(ncur), mode);
                    153:        ncur.y = ymax+2;
                    154:        string(&defont, "lock", &display, pt(ncur), mode);
                    155: }
                    156: num_msg()
                    157: {
                    158:        Point ncur;
                    159:        int mode;
                    160: 
                    161:        if(VALDWNLDFLAG)
                    162:                return; /* a program is downloaded so don't show message */
                    163:        mode = (VALNUM ? F_STORE : F_CLR);
                    164:        ncur.x = 44;
                    165:        ncur.y = ymax+1;
                    166:        string(&defont, "num", &display, pt(ncur), mode);
                    167:        ncur.y = ymax+2;
                    168:        string(&defont, "lock", &display, pt(ncur), mode);
                    169: }
                    170: 
                    171: cap_setup()
                    172: {
                    173:        Point ncur;
                    174: 
                    175:        if(Pf_edit)
                    176:                return;
                    177:        ncur.x = 64;
                    178:        ncur.y = ymax+2;
                    179:        string(&defont,"CAPS LOCK",&display,pt(ncur),(VALCAPS ? F_STORE : F_CLR));
                    180: }
                    181: 
                    182: num_setup()
                    183: {
                    184:        Point ncur;
                    185:        
                    186:        if(Pf_edit)
                    187:                return;
                    188:        ncur.x = 77;
                    189:        ncur.y = ymax + 2;
                    190:        string(&defont,"NUM LOCK", &display, pt(ncur), (VALNUM ? F_STORE : F_CLR));
                    191: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.