Annotation of researchv10no/cmd/PDP11/11as/as11.c, revision 1.1.1.1

1.1       root        1: /* PDP-11 assembler pass 0 */
                      2: #include "as1.h"
                      3: #include <signal.h>
                      4: 
                      5: #ifndef PASS2PGM
                      6: #define PASS2PGM "/lib/as2"            /*god: is tweakable */
                      7: #endif
                      8: #ifndef A_DOT_OUT
                      9: #define A_DOT_OUT "a.out"              /*god: " */
                     10: #endif
                     11: 
                     12: char *atmp1 = "/tmp/atm1XXXXXX";
                     13: char *atmp2 = "/tmp/atm2XXXXXX";
                     14: char *atmp3 = "/tmp/atm3XXXXXX";
                     15: char *fpass2 = PASS2PGM;               /*god: use -DPASS2PGM=/xxxx... */
                     16: char unglob[3] = "-";
                     17: char *outfile = A_DOT_OUT;             /*god:6/17/80 made for porting*/
                     18: int    debug;
                     19: 
                     20: main(argc, argv)
                     21: char **argv;
                     22: {
                     23:        extern char *sbrk();
                     24:        extern aexit();
                     25:        FILE *t;
                     26:        char *buf1,*buf2;
                     27: 
                     28:        if (signal(SIGINT,SIG_IGN)!=SIG_IGN) signal(SIGINT,aexit);
                     29:        while (--argc>=0 && (++argv)[0][0]=='-') {
                     30:                if (argv[0][1]=='u' || argv[0][1]=='\0') unglob[1]='g';
                     31:                else if (argv[0][1]=='o' && --argc>=0) outfile= *++argv;
                     32:                else if (argv[0][1]=='d') {
                     33:                        atmp1 = "T1"; atmp2 = "T2", atmp3 = "T3";
                     34:                        debug++;
                     35:                }
                     36:        }
                     37:        nargs=argc+1; curarg=argv-1;
                     38:        if (NULL==(pof=fopen(mktemp(atmp1),"w"))) wrterr();
                     39:        setbuf(pof,buf1=sbrk(BUFSIZ));
                     40:        if (NULL==(fbfil=fopen(mktemp(atmp2),"w"))) wrterr();
                     41:        setbuf(fbfil,buf2=sbrk(BUFSIZ));
                     42:        setup();
                     43:        fclose(stdin);
                     44:        assem();
                     45:        if (EOF==fclose(pof)) wrterr(); if (EOF==fclose(fbfil)) wrterr();
                     46:        if (errflg) aexit();
                     47:        if (NULL==(t=fopen(mktemp(atmp3),"w"))) wrterr();
                     48:        setbuf(t,buf1);
                     49:        if ((symend-usymtab)!=fwrite(usymtab,sizeof(*usymtab),symend-usymtab,t)) wrterr();
                     50:        if (EOF==fclose(t)) wrterr();
                     51:        if (debug)
                     52:                exit(1);
                     53:        execl(fpass2,fpass2,unglob,"-o",outfile,atmp1,atmp2,atmp3,0);
                     54:        filerr(fpass2,"?\n");
                     55:        aexit();
                     56: }
                     57: 
                     58: aexit()
                     59: {
                     60:        unlink(atmp1); unlink(atmp2); unlink(atmp3);
                     61:        exit(3);
                     62: }
                     63: 
                     64: filerr(file,str)
                     65: char *file,*str;
                     66: {
                     67:        fprintf(stderr,"%s%s",file,str);
                     68: }
                     69: 
                     70: wrterr()
                     71: {
                     72:        fprintf(stderr,"as: Write error on temp file.\n");
                     73:        ++errflg; aexit();
                     74: }

unix.superglobalmegacorp.com

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