      INTEGER A$BUF(200)
      INTEGER AP,TERMO0,INITO0,MAINO0
      INTEGER GETARG,MAPDN,PARSCL,LENGTH,INDEX
      INTEGER FD
      INTEGER MKTEMP
      INTEGER ARG(102),OUTPU0(102),FILE(102)
      INTEGER SWTCM0(11)
      INTEGER SWTTP0(12)
      INTEGER AAAAA0
      INTEGER AAAAB0
      INTEGER AAAAC0
      INTEGER AAAAD0
      INTEGER AAAAE0
      INTEGER AAAAF0(65)
      INTEGER AAAAG0(13)
      INTEGER AAAAH0(28)
      INTEGER AAAAI0(17)
      INTEGER AAAAJ0(3)
      INTEGER AAAAK0(3)
      INTEGER CTOC
      INTEGER AAAAL0(8)
      INTEGER AAAAM0
      INTEGER AAAAN0(5)
      INTEGER AAAAO0(7)
      INTEGER AAAAP0(8)
      INTEGER AAAAQ0(3)
      INTEGER AAAAR0(3)
      INTEGER AAAAS0(8)
      INTEGER AAAAT0
      INTEGER AAAAU0(16)
      INTEGER AAAAV0(3)
      INTEGER AAAAW0(3)
      INTEGER AAAAX0(32),AAAAY0(32)
      INTEGER EXPAND
      INTEGER AAAAZ0(9)
      INTEGER AAABA0(9)
      INTEGER AAABB0(29)
      INTEGER AAABC0(7)
      INTEGER AAABD0(8)
      INTEGER AAABE0(16)
      INTEGER AAABF0(12)
      INTEGER AAABG0(12)
      INTEGER AAABH0(7)
      INTEGER AAABI0(8)
      INTEGER AAABJ0(9)
      INTEGER AAABK0(8)
      INTEGER AAABL0(7)
      INTEGER AAABM0(8)
      INTEGER AAABN0(11)
      INTEGER AAABO0(7)
      INTEGER AAABP0(12)
      INTEGER AAABQ0(12)
      DATA SWTCM0/180,176,180,176,175,177,176,176,176,176,0/
      DATA SWTTP0/178,176,179,176,175,177,178,176,176,176,176,0/
      DATA TERMO0/0/,INITO0/0/,MAINO0/0/,FD/-3/
      DATA AAAAF0/219,173,225,226,228,230,238,240,246,245,221,160,219,17
     *3,239,188,242,229,241,160,243,244,242,190,221,160,173,243,188,233,
     *231,238,190,160,173,237,188,233,231,238,190,160,173,236,188,233,23
     *1,238,190,173,233,188,233,231,238,190,160,173,244,188,233,231,238,
     *190,0/
      DATA AAAAG0/230,233,236,229,160,174,174,242,245,238,170,238,0/
      DATA AAAAH0/227,239,240,249,160,174,174,242,245,238,160,170,243,16
     *0,173,228,229,236,229,244,229,160,173,238,241,170,238,0/
      DATA AAAAI0/227,238,225,237,229,160,174,174,242,245,238,160,170,24
     *3,170,238,0/
      DATA AAAAJ0/174,226,0/
      DATA AAAAK0/174,239,0/
      DATA AAAAL0/236,239,160,170,243,170,238,0/
      DATA AAAAN0/170,243,170,238,0/
      DATA AAAAO0/246,243,247,244,236,226,0/
      DATA AAAAP0/236,239,160,170,243,170,238,0/
      DATA AAAAQ0/174,239,0/
      DATA AAAAR0/174,237,0/
      DATA AAAAS0/237,225,160,170,243,170,238,0/
      DATA AAAAU0/237,225,160,173,245,238,228,229,230,233,238,229,228,17
     *0,238,0/
      DATA AAAAV0/174,239,0/
      DATA AAAAW0/174,237,0/
      DATA AAAAZ0/189,227,237,223,236,239,227,189,0/
      DATA AAABA0/189,244,240,223,236,239,227,189,0/
      DATA AAABB0/243,249,160,243,247,244,164,227,237,160,170,243,170,23
     *8,243,249,160,243,247,244,164,244,240,160,170,243,170,238,0/
      DATA AAABC0/227,164,237,225,233,238,0/
      DATA AAABD0/236,239,160,170,243,170,238,0/
      DATA AAABE0/236,239,160,236,233,226,190,227,227,237,225,233,238,17
     *0,238,0/
      DATA AAABF0/236,233,160,240,236,177,231,236,226,170,238,0/
      DATA AAABG0/236,233,160,240,225,243,236,233,226,170,238,0/
      DATA AAABH0/227,233,239,236,233,226,0/
      DATA AAABI0/236,239,160,170,243,170,238,0/
      DATA AAABJ0/246,243,247,244,237,225,244,232,0/
      DATA AAABK0/236,239,160,170,243,170,238,0/
      DATA AAABL0/246,243,232,236,233,226,0/
      DATA AAABM0/236,239,160,170,243,170,238,0/
      DATA AAABN0/236,233,160,227,227,236,233,226,170,238,0/
      DATA AAABO0/246,243,247,244,236,226,0/
      DATA AAABP0/236,239,160,170,243,170,238,236,233,170,238,0/
      DATA AAABQ0/228,249,238,244,160,173,225,236,236,170,238,0/
      IF((PARSCL(AAAAF0,A$BUF).NE.-3))GOTO 10005
        AAAAA0=1
        GOTO 10000
10006 CONTINUE
10005 FD=MKTEMP(3)
      IF((FD.NE.-3))GOTO 10007
        CALL ERROR('can''t open temporary file.')
10007 AAAAE0=1
      GOTO 10004
10008 CALL REWIND(FD)
      CALL PRINT(-11,'bind*n.')
      CALL FCOPY(FD,-11)
      CALL PRINT(-11,AAAAG0)
      IF((INDEX(OUTPU0,190).EQ.0))GOTO 10009
        CALL PRINT(-11,AAAAH0,OUTPU0)
        GOTO 10010
10009   CALL PRINT(-11,AAAAI0,OUTPU0)
10010 CALL RMTEMP(FD)
      CALL REMOVE(A$BUF(A$BUF(239-225+27)))
      CALL SWT
10004 IF((A$BUF(238-225+1).NE.0))GOTO 10011
        AAAAB0=1
        GOTO 10001
10012 CONTINUE
10011 AP=1
      GOTO 10015
10013 AP=AP+(1)
10015 IF((GETARG(AP,ARG,102).EQ.-1))GOTO 10014
        IF((ARG(1).EQ.173))GOTO 10016
          IF((A$BUF(A$BUF(239-225+27)).NE.0))GOTO 10017
            CALL SUFFIX(ARG,AAAAJ0,FILE,AAAAK0)
            IF((A$BUF(239-225+1).EQ.2))GOTO 10018
              A$BUF(239-225+27)=A$BUF(53)
              A$BUF(53)=A$BUF(53)+(1+CTOC(FILE,A$BUF(A$BUF(53)),200))
10018     CONTINUE
10017     AAAAC0=1
          GOTO 10002
10019     CALL MKTREE(ARG,FILE)
          CALL PRINT(FD,AAAAL0,FILE)
          GOTO 10020
10016     IF((ARG(3).EQ.0))GOTO 10021
            AAAAA0=2
            GOTO 10000
10022       GOTO 10023
10021       AAAAM0=MAPDN(ARG(2))
            GOTO 10024
10025         IF((GETARG(AP+1,ARG,102).EQ.-1))GOTO 10027
              IF((ARG(1).EQ.173))GOTO 10027
              GOTO 10026
10027           AAAAA0=3
                GOTO 10000
10028         CONTINUE
10026         AP=AP+(1)
              CALL PRINT(FD,AAAAN0,ARG)
            GOTO 10029
10030         IF((GETARG(AP+1,ARG,102).EQ.-1))GOTO 10032
              IF((ARG(1).EQ.173))GOTO 10032
              GOTO 10031
10032           CALL SCOPY(AAAAO0,1,ARG,1)
                GOTO 10033
10031           AP=AP+(1)
10033         AAAAC0=2
              GOTO 10002
10034         CALL MAKEL0(ARG,FILE)
              CALL PRINT(FD,AAAAP0,FILE)
            GOTO 10029
10035         IF((GETARG(AP+1,ARG,102).EQ.-1))GOTO 10037
              IF((ARG(1).EQ.173))GOTO 10037
              GOTO 10036
10037           ARG(1)=0
                GOTO 10038
10036           AP=AP+(1)
10038         IF((ARG(1).NE.0))GOTO 10039
                CALL SUFFIX(A$BUF(A$BUF(239-225+27)),AAAAQ0,FILE,AAAAR0)
                CALL MKTREE(FILE,FILE)
                GOTO 10040
10039           CALL MKTREE(ARG,FILE)
10040         CALL PRINT(FD,AAAAS0,FILE)
            GOTO 10029
10041         AAAAB0=2
              GOTO 10001
10042       GOTO 10029
10043         AAAAD0=1
              GOTO 10003
10044       GOTO 10029
10024       AAAAT0=AAAAM0-232
            GOTO(10041,10045,10045,10030,10035,10045,10045,10045,10045,1
     *0045,10025,10043),AAAAT0
10045         AAAAA0=4
              GOTO 10000
10046       CONTINUE
10029     CONTINUE
10023   CONTINUE
10020 GOTO 10013
10014 IF((A$BUF(238-225+1).NE.0))GOTO 10047
        AAAAD0=2
        GOTO 10003
10048 CONTINUE
10047 IF((A$BUF(245-225+1).EQ.0))GOTO 10049
        CALL PRINT(FD,AAAAU0)
10049 IF((A$BUF(230-225+1).EQ.0))GOTO 10050
        CALL SUFFIX(A$BUF(A$BUF(239-225+27)),AAAAV0,FILE,AAAAW0)
        CALL MKTREE(FILE,FILE)
        CALL PRINT(FD,'ma *s*n.',FILE)
10050 CALL MKTREE(A$BUF(A$BUF(239-225+27)),OUTPU0)
      GOTO 10051
10001 IF((EXPAND(AAAAZ0,AAAAX0,32).NE.-3))GOTO 10052
        CALL SCOPY(SWTCM0,1,AAAAX0,1)
10052 IF((EXPAND(AAABA0,AAAAY0,32).NE.-3))GOTO 10053
        CALL SCOPY(SWTTP0,1,AAAAY0,1)
10053 CALL PRINT(FD,AAABB0,AAAAX0,AAAAY0)
      GOTO 10054
10002 IF((A$BUF(226-225+1).EQ.0))GOTO 10055
      IF((MAINO0.NE.0))GOTO 10055
        CALL MAKEL0(AAABC0,FILE)
        CALL PRINT(FD,AAABD0,FILE)
        MAINO0=1
10055 IF((A$BUF(247-225+1).EQ.0))GOTO 10056
      IF((MAINO0.NE.0))GOTO 10056
        CALL PRINT(FD,AAABE0)
        MAINO0=1
10056 GOTO 10057
10003 IF((TERMO0.NE.0))GOTO 10058
        IF((A$BUF(240-225+1).EQ.0))GOTO 10059
          CALL PRINT(FD,AAABF0)
10059   IF((A$BUF(225-225+1).EQ.0))GOTO 10060
          CALL PRINT(FD,AAABG0)
10060   IF((A$BUF(226-225+1).EQ.0))GOTO 10061
          CALL MAKEL0(AAABH0,FILE)
          CALL PRINT(FD,AAABI0,FILE)
          CALL MAKEL0(AAABJ0,FILE)
          CALL PRINT(FD,AAABK0,FILE)
          CALL MAKEL0(AAABL0,FILE)
          CALL PRINT(FD,AAABM0,FILE)
10061   IF((A$BUF(247-225+1).EQ.0))GOTO 10062
          CALL PRINT(FD,AAABN0)
10062   CALL MAKEL0(AAABO0,FILE)
        CALL PRINT(FD,AAABP0,FILE)
        IF((A$BUF(228-225+1).EQ.0))GOTO 10063
          CALL PRINT(FD,AAABQ0)
10063 CONTINUE
10058 TERMO0=1
      GOTO 10064
10000 IF((FD.EQ.-3))GOTO 10065
        CALL RMTEMP(FD)
10065 CALL REMARK('Usage: bind -{a|b|f|n|p} [-o <output file>].')
      CALL REMARK('          { <binary file> | -m [<map opt>] | -s <comm
     *and>.')
      CALL REMARK('             | -l [<library>] | -i | -t.')
      CALL SETERR(1000)
      CALL SWT
10057 GOTO(10019,10034),AAAAC0
      GOTO 10057
10066 GOTO(10006,10022,10028,10046),AAAAA0
      GOTO 10066
10054 GOTO(10012,10042),AAAAB0
      GOTO 10054
10051 GOTO 10008
10064 GOTO(10044,10048),AAAAD0
      GOTO 10064
      END
      SUBROUTINE MKTREE(STR,OUT)
      INTEGER STR(1),OUT(1)
      INTEGER I
      INTEGER MKTR$,INDEX
      INTEGER IN(102)
      CALL EXPAND(STR,IN,102)
      IF((INDEX(IN,175).NE.0))GOTO 10067
      IF((INDEX(IN,220).NE.0))GOTO 10067
        CALL SCOPY(IN,1,OUT,1)
        RETURN
10067 OUT(1)=167
      I=MKTR$(IN,OUT(2))+2
      OUT(I)=167
      OUT(I+1)=0
      RETURN
      END
      SUBROUTINE MAKEL0(NAME,FILE)
      INTEGER NAME(1),FILE(1)
      INTEGER STR(102)
      INTEGER AAABR0(12)
      DATA AAABR0/189,238,229,247,236,233,226,189,175,170,243,0/
      CALL ENCODE(STR,102,AAABR0,NAME)
      CALL MKTREE(STR,FILE)
      RETURN
      END
      SUBROUTINE SUFFIX(SRC,SSUFF,DEST,DSUFF)
      INTEGER SRC(1),SSUFF(1),DEST(1),DSUFF(1)
      INTEGER SUFF(102)
      INTEGER LENGTH,EQUAL
      CALL STAKE(SRC,SUFF,-LENGTH(SSUFF))
      IF((EQUAL(SUFF,SSUFF).NE.1))GOTO 10068
        CALL SDROP(SRC,DEST,-LENGTH(SUFF))
        GOTO 10069
10068   CALL SCOPY(SRC,1,DEST,1)
10069 CALL SCOPY(DSUFF,1,DEST,LENGTH(DEST)+1)
      RETURN
      END
C ---- Long Name Map ----
C termout                        termo0
C swtcmloc                       swtcm0
C putloadmain                    putlo0
C makelibname                    makel0
C outputfile                     outpu0
C putinitcommands                putin0
C createloadercommands           creat0
C mainout                        maino0
C swttploc                       swttp0
C puttermcommands                putte0
C initout                        inito0
