!!
!!**************************************************
!!
!! 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