Annotation of cci/usr/src/usr.bin/bsc/cmd/3270/makebuf.c, revision 1.1.1.1

1.1       root        1: #include <stdio.h>
                      2: FILE * f;
                      3: char buf[133];
                      4: int cc,count;
                      5: 
                      6: main(argc,argv)
                      7: char *argv[];
                      8: int argc;
                      9: {
                     10:        long ftell(), where1, where2;
                     11:        f = fopen(argv[1],"w");
                     12: top:
                     13:        where1 = ftell(f);
                     14:        count = 0;
                     15:        putw(count,f);
                     16:        fputc(0x27,f);  /* ESC */
                     17:        ++count;
                     18:        puts("Cmd code: (1 - Write, 2 - Rdbuf, 5 - Erase/Write, ");
                     19:        puts("           6 - Rdmod, 7 - Copy, ? - EAU) ");
                     20:        gets(buf);
                     21:        ascebc(buf,1);
                     22:        fputc(buf[0],f); ++count;
                     23:        ebcasc(buf,1);
                     24:        if (buf[0] == '1' || buf[0] == '5') {
                     25:                puts("WCC: Print format (0 - var., 1 - 40, 2 - 64, 3 - 80)");
                     26:                gets(buf);
                     27:                cc = ((buf[0] - '0') << 4) | 0x40;
                     28:                puts("     Start Print: (1/0)");
                     29:                gets(buf);
                     30:                if (buf[0] == '1') cc |= 0x08;
                     31:                puts("     Sound Alarm: (1/0)");
                     32:                gets(buf);
                     33:                if (buf[0] == '1') cc |= 0x04;
                     34:                puts("     Restore Keyboard: (1/0)");
                     35:                gets(buf);
                     36:                if (buf[0] == '1') cc |= 0x02;
                     37:                puts("     Reset MDT Bits: (1/0)");
                     38:                gets(buf);
                     39:                if (buf[0] == '1') cc |= 0x01;
                     40:                fputc(cc,f); ++count;
                     41:                puts("Orders and/or Buffer Data: (ESC/CR to enter Order)");
                     42:                for (gets(buf); buf[0]; gets(buf)) {
                     43:                        if (buf[0] == 033) {    /* Order */
                     44:                                puts("  Order: 1=SF 2=SBA 3=IC 4=PT 5=RA 6=EUA 7=EM, 8=end buffer");
                     45:                                gets(buf);
                     46:                                switch (buf[0]-'0') {
                     47:                                case 1: /* SF, followed by attr char */
                     48:                                        fputc(0x1d,f); ++count;
                     49:                                        cc = 0x40;
                     50:                                        puts("Attr Char: Protected: (1/0)");
                     51:                                        gets(buf);
                     52:                                        if (buf[0] == '1') cc |= 0x20;
                     53:                                        puts("           Numeric: (1/0)");
                     54:                                        gets(buf);
                     55:                                        if (buf[0] == '1') cc |= 0x10;
                     56:                                        puts("           Display:0=yes 2=hl 3=invis");
                     57:                                        gets(buf);
                     58:                                        cc |= ((buf[0] - '0') << 2);
                     59:                                        puts("           MDT: (1/0)");
                     60:                                        gets(buf);
                     61:                                        if (buf[0] == '1') cc |= 0x01;
                     62:                                        fputc(cc,f); ++count;
                     63:                                        break;
                     64:                                case 2: /* SBA, followed by addr */
                     65:                                        fputc(0x11,f); ++count;
                     66:                                        doaddr();
                     67:                                        break;
                     68:                                case 3:  /* IC */
                     69:                                        fputc(0x13,f); ++count;
                     70:                                        break;
                     71:                                case 4:  /* PT */
                     72:                                        fputc(0x05,f); ++count;
                     73:                                        break;
                     74:                                case 5: /* RA, followed by addr and char  */
                     75:                                        fputc(0x3c,f); ++count;
                     76:                                        doaddr();
                     77:                                        puts("Character to repeat:");
                     78:                                        gets(buf);
                     79:                                        ascebc(buf,1);
                     80:                                        fputc(buf[0],f); ++count;
                     81:                                        break;
                     82:                                case 6: /* EUA, then addr */
                     83:                                        fputc(0x12,f); ++count;
                     84:                                        doaddr();
                     85:                                        break;
                     86:                                /* case 3:  newline 
                     87:                                        fputc(0x15,f); ++count;
                     88:                                        break;
                     89:                                case 4:  form feed 
                     90:                                        fputc(0x0c,f); ++count;
                     91:                                        break;
                     92:                                case 5: carriage return 
                     93:                                        fputc(0x0d,f); ++count;
                     94:                                        break;
                     95:                                
                     96:                                case 6:  SI 
                     97:                                        fputc(0x0f,f); ++count;
                     98:                                        break;  */
                     99:                                case 7: /* EM */
                    100:                                        fputc(0x19,f); ++count;
                    101:                                        break;
                    102:                                case 8: /* end buffer, start new one */
                    103:                                startnew:
                    104:                                        puts("Start new or Quit (s/q):");
                    105:                                        gets(buf);
                    106:                                        where2 = ftell(f);
                    107:                                        fseek(f, where1, 0);
                    108:                                        putw(count,f);
                    109:                                        if (buf[0] == 's' || buf[0] == 'S') {
                    110:                                                fseek(f, where2, 0);
                    111:                                                goto top;
                    112:                                        }
                    113:                                        fclose(f);
                    114:                                        exit(0);
                    115:                                }
                    116:                        }
                    117:                        else    {  /* data */
                    118:                                ascebc(buf,strlen(buf));
                    119:                                fputs(buf,f);
                    120:                                count += strlen(buf);
                    121:                        }               
                    122:                }
                    123:        }
                    124:        goto startnew;
                    125: }
                    126: char eadr_tbl[] = {    /* EBCDIC hex cursor address encoding table */
                    127:        0x40,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0x4a,0x4b,
                    128:        0x4c,0x4d,0x4e,0x4f,0x50,0xd1,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,
                    129:        0xd8,0xd9,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f,0x60,0x61,0xe2,0xe3,
                    130:        0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,
                    131:        0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0x7a,0x7b,
                    132:        0x7c,0x7d,0x7e,0x7f};
                    133: doaddr() {
                    134:        puts("Address (0-1919):");
                    135:        gets(buf);
                    136:        cc = atoi(buf);
                    137:        fputc(eadr_tbl[cc/64],f); ++count;
                    138:        cc &= 0x3f;
                    139:        fputc(eadr_tbl[cc],f); ++count;
                    140: }

unix.superglobalmegacorp.com

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