Annotation of researchv10no/cmd/PDP11/11as/as11.c, revision 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.