!! !!********************************************* !! * !! EMAS INTERFACE TO OMFOUT (OMF GENERATOR) * !! VERSION 3 * !! * !!********************************************* !! SYSTEMINTEGERFNSPEC OMFOUT( C INTEGER OPSYS, ATEMP, AWRK, CONTROL, LANG CODE, ADATE, C ATIME, STRING (7) SUBNAME, STRING (4) VERSION, C STRING (31) MODULE NAME, MRTPREFIX, CEPREFIX) EXTERNALROUTINESPEC OPENOMF(STRING (32) S, INTEGER CH, MODE) EXTERNALROUTINESPEC WRITE OMF(INTEGER CH, A, L) EXTERNALROUTINESPEC DESTROY(STRING (17) S) EXTERNALROUTINESPEC CLOSEOMF(INTEGER CH) SYSTEMROUTINESPEC CONNECT(STRING (15) S, C INTEGER ACCESS, MAXBYTES, PROTECTION, C RECORDNAME R, INTEGERNAME J) RECORDFORMAT INRFM(INTEGER CONAD, FILESIZE, C BYTEINTEGER DUM1, DUM2, DUM3, DUM4, C STRING (6) DUM5, INTEGER TYPEDUM6, C INTEGER DATASTART, DATAEND, DUM7) SYSTEMROUTINESPEC OUTFILE(STRING (15) S, C INTEGER LENGTH, MAXBYTES, PROTECTION, C INTEGERNAME CONAD, J) EXTERNALSTRING (8) FNSPEC DATE EXTERNALSTRING (8) FNSPEC TIME SYSTEMINTEGERMAPSPEC COMREG(INTEGER N) SYSTEMROUTINESPEC MOVE(INTEGER L, F, T) SYSTEMROUTINESPEC PHEX(INTEGER N) SYSTEMROUTINESPEC ITOE(INTEGER A, L) EXTERNALROUTINESPEC COPY(STRING (63) S) EXTERNALROUTINESPEC DEFINE(STRING (63) S) SYSTEMROUTINESPEC SSERR(INTEGER N) !! !! ROUTINESPEC OPUT(STRING (63) S) OWNINTEGER SYS=0 EXTERNALROUTINE COBJ(STRING (63) S) SYS=1 OPUT(S) END !! EXTERNALROUTINE OPUT(STRING (63) S) OWNSTRING (63) SOUTFILE = "NR#OMF",MODULE NAME STRING (18) DATIME STRING (4) VERSION STRING (7) SUBNAME INTEGER I, J, ATEMP, AWRK STRING (63) SINFILE STRING (32) SLISTFILE,BEFORE,AFTER INTEGER CONTROL RECORD IN(INRFM) !! !! UNLESS S -> SINFILE.(",").SOUTFILE C THEN SINFILE = S UNLESS SOUTFILE -> SOUTFILE.(",").SLISTFILE C THEN SLISTFILE = ".OUT" DEFINE("STREAM01,".SLISTFILE) SELECT OUTPUT(99) PRINTSTRING(" OPUT R3 V 8/5/80 ") UNLESS SLISTFILE = ".OUT" START PRINTSTRING(" INPUT: ".SINFILE." OUTPUT: ".SOUTFILE) NEWLINE FINISH SELECT OUTPUT(1) COPY(SINFILE.",SS#TMPOB") VERSION = "3.09" ;! MUST BE FOUR CHARACTERS ITOE(ADDR(VERSION)+1,3) IF SYS=0 THEN SUBNAME = "ENV " ELSE SUBNAME="EXP " ITOE(ADDR(SUBNAME)+1,4) CONNECT("SS#TMPOB",3,0,0,IN,J) SSERR(J) UNLESS J = 0 IF INTEGER(IN_CONAD+12)#1 START PRINTSTRING(" INPUT MUST BE AN OBJECT FILE! ") STOP FINISH ATEMP = IN_CONAD OUTFILE("SS#WRK",X'80000',0,0,AWRK,J) IF J = 218 THEN AWRK = COMREG(14) AND J = 0 SSERR(J) UNLESS J = 0 OPENOMF(SOUTFILE,2,1) CONTROL = COMREG(26)!32; ! OR IN SHARE IF SYS=0 THEN CONTROL=CONTROL!16!32 ;! LIBRARY AND EXCLUSIVE DATIME = '19'.DATE.TIME; ! HAVE TO RE-ARRANGE DATE AND TIME TO ICL FORMAT J = ADDR(DATIME); ! DD/MM/YY -> 19YY/MM/DD MOVE(2,J+3,ADDR(I)) MOVE(2,J+9,J+3) MOVE(2,ADDR(I),J+9) ITOE(J+1,18) IF SOUTFILE->BEFORE.("_").AFTER THEN SOUTFILE=AFTER IF SYS=1 THEN MODULENAME=SOUTFILE ELSEC MODULENAME="ICL9CE".SOUTFILE I = OMFOUT(0,ATEMP,AWRK,CONTROL,X'C7',ADDR(DATIME)+1,ADDR( C DATIME)+11,SUBNAME,VERSION,MODULENAME,"","") CLOSEOMF(2) DESTROY("SS#WRK") DESTROY("SS#TMPOB") SELECTOUTPUT(99) IF I = 0 THEN PRINTSTRING(" NO ERRORS ") ELSESTART PRINTSTRING(" OMF GEN FAILS: ") WRITE(I,1) IF I=243 THEN PRINTSTRING(" CORRUP FIXUP ") IF I=226 THEN PRINTSTRING(" CORRUPT OBJECT FILE ") IF I=244 THEN PRINTSTRING(" TOO MANY CHS ") IF I=248 THEN PRINTSTRING(" WORKFILE FULL ") FINISH END !! !!****************** !! SYSTEMINTEGERFN SET ALIAS(INTEGER DR0,DR1) RESULT = 0 END !! !!************************* !! SYSTEMINTEGERFN OMFRECORD(INTEGER DR0,DR1) INTEGER I IF COMREG(26)&X'800000'#0 START PRINTSTRING("OMFRECORD: ") PHEX(DR1) SPACE PHEX(DR0&X'FFFFFF') NEWLINE CYCLE I=0,4,28 PHEX(INTEGER(DR1+I)) SPACE REPEAT FINISH WRITEOMF(2,DR1,DR0&X'FFFFFF') RESULT = 0 END !! ENDOFFILE