      SUBROUTINE MAIN
      LOGICAL*1 BUF(400)
      INTEGER GETARG, OPEN
      INTEGER I
      I=1
23000 CONTINUE
      IF(.NOT.(GETARG(I,BUF,400) .EQ. -1))GOTO 23003
      IF(.NOT.(I .NE. 1))GOTO 23005
      GOTO 23002
23005 CONTINUE
      INT = 1
      GOTO 23004
23003 CONTINUE
      IF(.NOT.(BUF(1) .EQ. 63 .AND. BUF(2) .EQ. 0))GOTO 23007
      CALL ERROR(22Husage:  os [file ...].)
      GOTO 23008
23007 CONTINUE
      IF(.NOT.(BUF(1) .EQ. 45 .AND. BUF(2) .EQ. 0))GOTO 23009
      INT = 1
      GOTO 23010
23009 CONTINUE
      INT = OPEN(BUF,1)
      IF(.NOT.(INT .EQ. -3))GOTO 23011
      CALL CANT(BUF)
23011 CONTINUE
23010 CONTINUE
23008 CONTINUE
23004 CONTINUE
      CALL OVERS (INT)
      IF(.NOT.(INT .NE. 1))GOTO 23013
      CALL CLOSE(INT)
23013 CONTINUE
23001 I=I+1
      GOTO 23000
23002 CONTINUE
      RETURN
      END
      SUBROUTINE OVERS(INT)
      LOGICAL*1 GETCH
      LOGICAL*1 C
      INTEGER COL, NEWCOL, INT
      COL = 1
23015 CONTINUE
      NEWCOL = COL
23018 IF(.NOT.(GETCH(C,INT) .EQ. 8))GOTO 23019
      NEWCOL = MAX0(NEWCOL-1, 1)
      GOTO 23018
23019 CONTINUE
      IF(.NOT.(NEWCOL .LT. COL))GOTO 23020
      CALL PUTC(10)
      CALL PUTC(43)
      COL=1
23022 IF(.NOT.(COL.LT.NEWCOL))GOTO 23024
      CALL PUTC(32)
23023 COL=COL+1
      GOTO 23022
23024 CONTINUE
      GOTO 23021
23020 CONTINUE
      IF(.NOT.(COL .EQ. 1 .AND. C .NE. -1))GOTO 23025
      CALL PUTC(32)
23025 CONTINUE
23021 CONTINUE
      IF(.NOT.(C .EQ. -1))GOTO 23027
      GOTO 23017
23027 CONTINUE
      CALL PUTC(C)
      IF(.NOT.(C .EQ. 10))GOTO 23029
      COL = 1
      GOTO 23030
23029 CONTINUE
      COL = COL + 1
23030 CONTINUE
23016 GOTO 23015
23017 CONTINUE
      RETURN
      END
