!!
!!**************************************************
!!
!!     CONVERT SOURCE
!!   
!!     TAKES SQ FILE FROM BY READBTAPE OR READKTAPE AND
!!    SHIFTS CONTENTS INTO EMAS SOURCE FILE
!!
!!***************************************************
!!
EXTERNALROUTINE  CS(STRING (63) S)
EXTERNALROUTINESPEC  OPENOMF(STRING (32) S,INTEGER  CH,MODE)
EXTERNALROUTINESPEC  READOMF(INTEGER  CH,FROM, INTEGERNAME  L)
SYSTEMROUTINESPEC  OUTFILE(STRING (15) S, INTEGERC 
LENGTH,MAXSIZE,PROTECTION,INTEGERNAME  CONAD,FLAG)
SYSTEMROUTINESPEC  CONNECT(STRING (31) S, INTEGER  A,M,P, C 
RECORDNAME  R, INTEGERNAME  FLAG)
RECORDFORMAT  RFMT(INTEGER  CONAD,FILTYPE,DATASTART, C 
DATAEND,SIZE,EEP,REP,MODE,USERS,ARCH,STRING (6) TRAN,STRING (8) DATE, C 
TIME, INTEGER  COUNT1,SPARE1,SPARE2)
SYSTEMROUTINESPEC  MOVE(INTEGER  L,FROM,TO)
SYSTEMROUTINESPEC  ETOI(INTEGER  ADDR,LENGTH)
STRING (32) INFILE,OUTF
INTEGER  CONAD,FLAG,I,L
BYTEINTEGERARRAY  B(0:133)
STRING (32) REST
STRING (6) TAIL
RECORD  R(RFMT)
!!
!!
->ERRORP UNLESS  S->INFILE.(",").REST
UNLESS  REST->OUTF.(",").TAIL THEN  OUTF=REST AND  TAIL=""
OPENOMF(INFILE,1,0)
CONNECT(INFILE,0,0,0,R,FLAG)  ;! GET SIZE OF FILE
OUTFILE(OUTF,INTEGER(R_CONAD),0,0,CONAD,FLAG)
->ERRORO IF  FLAG#0
I=CONAD+32
CYCLE 
READOMF(1,ADDR(B(0)),L)
EXIT  IF  L=0
ETOI(ADDR(B(0)),L) UNLESS  TAIL="ISO"
MOVE(L,ADDR(B(0)),I)
I=I+L
BYTEINTEGER(I)=NL
I=I+1
REPEAT 
!!

! FILL IN HEADER
!!
INTEGER(CONAD)=I-CONAD    ;!  ACTUAL LENGTH OF FILE CONTENTS
INTEGER(CONAD+4)=32   ;! LENGTH OF HEADER
INTEGER(CONAD+8)=X'10000'   ;! MAXIMUM FILE SIZE
INTEGER(CONAD+12)=3
->END
!!
ERRORP:  PRINTSTRING('
PARAMETERS FAULTY - SHOULD BE INFILE,OUTFILE 
')
->END
ERRORO: PRINTSTRING('
OUTFILE FAILS , FLAG = ')
WRITE(FLAG,0)
->END
END:   
END 
ENDOFFILE