. . SDF TRANSFER COMMAND PROCESS . . THIS ROUTINE IS ENTERED FROM THE TRANSFER COMMAND PROCESS TO . EXECUTE THE TRANSFER,F COMMAND. . AXR$ . . (C) Copyright 1972-1978 John Walker . . This software is in the public domain . DEFUNCT$ FANG . E1 EQU R10 ELEMENT CLASS FOR FIRST FILE E2 EQU R11 ELEMENT CLASS FOR SECOND FILE F1 EQU R12 FDT, FCT FOR FILE 1 F2 EQU R13 FDT, FCT FOR FILE 2 . . . FILE TO FILE: SDF TEXT IS SIMPLY COPIED UNTIL AN SDF . END OF FILE SENTINEL IS ENCOUNTERED. . NO FORMAT CONVERSION WILL OCCUR. . . . ELEMENT TO FILE: THE FIRST SYMBOLIC ELEMENT SELECTED . BY FILESCAN IS CHANGED INTO AN SDF FILE. . SDFI IS USED TO READ IMAGES SO THAT . DELETED IMAGES MAY BE REMOVED. CONTROL . WORDS WRITTEN TO THE OUTPUT SDF FILE . WILL BE FREE OF CYCLE INFORMATION, ETC. . . . FILE TO ELEMENT: THE SDF FILE WILL BE READ USING SDFI, . AND AN ELEMENT CONSISTING OF THE . SDF FILE NAME RENAMED BY THE NAME ON . THE SECOND SPECIFICATION WILL BE WRITTEN . CONSISTING OF THE TEXT IMAGES OF THE . SDF FILE. CONTROL WORDS WILL BE CHANGED . TO CONFORM TO CYCLE 0 IMAGES IN A NEW . ELEMENT. ALL 051 CONTROL IMAGES WILL . BE REMOVED. . TRANSFERSDF*. LA A0,E1 LOAD FIRST ELEMENT SPECIFICATION LA A1,E2 LOAD SECOND ELEMENT SPECIFICATION TNZ ELALL,A0 IS INPUT FILE OR ELEMENT ? J IELT INPUT IS ELEMENT. READ UP TOC . . INPUT SPECIFICATION IS A FILE NAME. DOES OUTPUT HAVE AN ELEMENT . NAME SPECIFIED ? . TNZ ELALL,A1 DOES OUTPUT HAVE AN ELEMENT SPECIFIED ? J OELT YES. ASSUME INPUT IS A FILE . . BOTH SPECIFICATIONS ARE FILES. WE MUST READ IN SECTOR ZERO OF . THE INPUT FILE TO DECIDE WHETHER IT IS A FILE OR A PROGRAM FILE. . IF IT IS A PROGRAM FILE, WE JUMP OFF TO IELT TO PROCESS IT WITH . FILESCAN. IF IT IS SDF, WE COPY IT SDF FILE TO FILE. . /. . . SDF => SDF . . THE SDF FILE TO FILE TRANSFER IS PERFORMED DIRECTLY BY THE INPUT . AND OUTPUT ROUTINES, WHICH SIMPLY COPY BLOCKS, BUT SCAN FOR AN . END-OF-FILE SENTINEL. IN THIS WAY THEY ARE GUARANTEED TO PRESERVE . ALL CONTROL IMAGES IN INTACT FORM. THIS ALSO IS MUCH LESS EXPENSIVE . THAN COPYING IMAGE-BY-IMAGE. . LX X10,F1 LOAD INPUT FILE FCT LX X9,F2 LOAD OUTPUT FILE FCT LA,U A0,'F' LOAD SDF FILE SCAN MODE SA A0,IOOPT,X10 SET MODE FOR INPUT ROUTINE LMJ A2,INPUT CREATE READER ACTIVITY LMJ A2,OUTPUT CREATE OUTPUT ACTIVITY P IOBB+QL,X9 WAIT FOR OUTPUT TO TERMINATE . . IF THE INPUT FILE IS TAPE, WE PEEK AHEAD AT THE NEXT BLOCK. . IF IT IS AN END-OF-FILE, WE ADVANCE AFTER IT. . SDTOUT LX X10,F1 LOAD INPUT FILE FCT LX X9,F2 LOAD POINTER TO OUTPUT FILE FCT TZ IOMASS,X10 IS INPUT FILE TAPE ? J INOT NO. SKIP THIS STUFF INOT BRELP X10 RELEASE INPUT FCT SZ F1 MARK INPUT FILE FCT RELEASED TZ IOMASS,X9 IS OUTPUT TAPE ? J SSLVMRK ALL DONE IF MASS STORAGE LA,U A0,WEF$ LOAD WRITE END OF FILE FUNCTION LA A1,IOFUNC,X9 LOAD CURRENT FUNCTION IN PACKET SA A0,IOFUNC,X9 SET WEF$ FUNCTION IN OUTPUT PACKET SZ IOACW,X9 CLEAR ACCESS WORD TNE,U A1,WEF$ EOF ALREADY WRITTEN ? J SKWEF1 YES. DON'T NEED FIRST MARK IOW$ IOPKT,X9 WRITE END OF FILE ON OUTPUT TAPE TZ IOSTATUS,X9 NORMAL STATUS ? J SSIOEF NO. EDIT ERROR MESSAGE SKWEF1 IOW$ IOPKT,X9 WRITE SECOND EOF MARK TZ IOSTATUS,X9 NORMAL STATUS ? J SSIOEF ERROR. PROCESS IT LA,U A0,MB$ GET BACKSPACE BLOCK FUNCTION SA A0,IOFUNC,X9 SET FUNCTION IN PACKET IOW$ IOPKT,X9 BACK OVER SECOND EOF MARK LA A0,IOSTATUS,X9 LOAD I/O STATUS TE,U A0,1 NORMAL EOF MARK STATUS ? J SSIOEF NO. ERROR LA A0,CDOPTS,X8 LOAD OPTIONS ON COMMAND TEP,U A0,OPTION('M') MARK DESIRED AT END OF COPY ? J SSLVMRK YES. LEAVE ONE MARK AT END IOW$ IOPKT,X9 BACK UP OVER SECOND MARK LA A1,IOSTATUS,X9 LOAD I/O STATUS TE,U A1,1 NORMAL BACK UP OVER EOF ? J SSIOEF NO. ERROR CLOSING SDF OUTPUT TAPE SSLVMRK BRELP X9 RELEASE THE OUTPUT FCT BRELA . RELEASE ALL BUFFERS FOR THE COMMAND COMPLETE . TERMINATE NORMALLY . . I/O ERROR CLOSING OUTPUT . SSIOEF LA,U A0,IOPKT,X9 LOAD I/O PACKET ADDRESS LMJ X11,IOSEDT EDIT I/O STATUS ERROR MESSAGE . . GENERAL ENTRY TO ERROR THE COMMAND AND GET OUT . SSERR ZAP . ERROR THE COMMAND LA A0,F1 LOAD FILE 1 FCT ADDRESS TZ A0 STILL ALLOCATED ? BRELP A0 YES. RELEASE IT LA A0,F2 LOAD FILE 2 FCT TZ A0 STILL ALLOCATED ? BRELP A0 YES. RELEASE IT BRELA . RELEASE ALL RANDOM BUFFERS COMPLETE . TERMINATE THE COMMAND /. . . INPUT IS AN ELEMENT. THIS IS UNAMBIGUOUS, AS WE KNOW THAT THE . INPUT IS TO BE A PROGRAM FILE. . IELT LX X9,E1 LOAD INPUT ELEMENT CLASS LA A0,ELFDT,X9 LOAD LINK TO ASSOCIATED FDT LA A1,FDTYPE,A0 LOAD TYPE FIELD FROM FDT JTAPE A1,IELTAP ERROR IF ELEMENT SOURCE IS TAPE LA,U A7 DON'T ACCEPT DELETED ELEMENTS LMJ X11,FILESCAN PREPARE LIST OF ELEMENTS TO PROCESS J IEBSPR BSP ERROR. TERMINATE LMJ X11,ELTREL RELEASE ELEMENT TABLE BUFFER JZ A8,IELTMT MESSAGE IF NO ELEMENTS SELECTED LA A8,CDOPTS,X8 LOAD COMMAND OPTIONS TEP A8,(OPTION('A')) WRITE 'EM OUT ALPHABETICALLY ? LMJ X11,FILESORT YES. REORDER ELEMENT LIST BGETL SDFL*2 ALLOCATE SDF I/O FCT'S AU,U A0,SDFL GET ADDRESS OF SECOND FCT IN A1 DS A0,X9 SAVE FCT ADDRESSES IN X9, X10 DL A2,F1 LOAD FCT POINTERS SA A0,IOACW,A2 SAVE FIRST FCT ADDRESS SA A1,IOACW,A3 SAVE SECOND FCT ADDRESS LA A1,F1 LOAD FDT, FCT FOR INPUT SSL A1,18 SHIFT DOWN FDT ADDRESS LA,U A2,R$ LOAD READ FUNCTION LMJ X11,SDFFCT INITIALISE SDF I/O FCT AA,U A0,SDFL INCREMENT TO NEXT FCT LA A1,F2 LOAD OUTPUT FILE FDT,FCT SSL A1,18 SHIFT FDT TO H2 LA,U A2,W$ LOAD WRITE FUNCTION LA,U A3 START AT ADDRESS ZERO LMJ X11,SDFFCT BUULD SDF I/O FCT sdfoo . OPEN SDF OUTPUT LA,U A1,SDFIMAGE,A0 GET OUTPUT IMAGE ADDRESS SA,H2 A1,SDFIMA,X9 PUT IT IN IMAGE POINTER FOR INPUT DSL A14,72 CLEAR OPEN FLAG, IMAGE COUNT . . PROCESS NEXT ELEMENT . IELTN REMOVE CDELTQ,X8 REMOVE NEXT ELEMENT FROM QUEUE TNE,U A1,CDELTQ,X8 END OF THE QUEUE ? J IELTDONE YES. ALL DONE ANA,U A1,EIFQ BACK UP TO ELEMENT ITEM LA A5,EITYP,A1 LOAD TYPE OF THE ELEMENT TG,U A5,TY$REL IS IT SYMBOLIC OR A PROC ? J IELTIGN NO. IGNORE THIS ELEMENT LA A5,EITXTA,A1 LOAD STARTING TEXT ADDRESS OF ELEMENT SA A5,SDFADR,X9 SET STARTING ADDRESS FOR SDF INPUT JNZ A14,IEOPNA HAS LABEL BEEN WRITTEN ALREADY ? LA,U A13 NO. SET CHARACTER SET AS FIELDATA SA A1,A14 SAVE ELEMENT ITEM, SET OPENED FLAG LA A4,(0500130,0) LOAD LABEL CONTROL IMAGE LA A0,EIFLG,A1 LOAD FLAG BITS FOR THIS ELEMENT TEP,U A0,FL$ASC IS ELEMENT RECORDED IN ASCII ? LA,U A13,1 YES. SET INITIAL SET TO ASCII AA A4,A13 ADD CHARACTER SET TO LABEL CTL WORD SA A4,SDFICW,X10 SET LABEL CONTROL WORD IN SDFO PACKET LA A4,('*SDFF*') LOAD LABEL TEXT SA A4,SDFIMAGE,X10 PUT LABEL TEXT IN IMAGE BUFFER LA A0,X10 LOAD OUTPUT FCT ADDRESS sdfo . WRITE LABEL IMAGE FOR FILE J IEOSR SDF OUTPUT ERROR LA A1,A14 RESTORE ELEMENT FIND ITEM IEOPNA TOP,U A8,OPTION('T') TOC OF ELEMENTS PROCESSED WANTED ? J IELTNOT NO. SKIP TOC CODE LA,U A10 CLEAR SEQUENCE NUMBER TO INDICATE TRANS LX,U X9,,A1 LOAD ADDRESS OF ELEMENT ITEM R$DIT . SET UP THE EDITOR LMJ X5,TOCLE EDIT THE TOC LINE R$DITX . TERMINATE THE EDITOR LA A1,X9 RESTORE ELEMENT ITEM LX X9,F1 GET I/O FCT ADDRESS BACK LX X9,IOACW,X9 RECOVER THE SDF I/O FCT ADDRESS IELTNOT BRELR A1 RELEASE THE ELEMENT ITEM LA,U A0,,X9 GET FCT ADDRESS FOR INPUT sdfio . OPEN SDF INPUT J IEISR INPUT SDF ERROR IEIMGL LA A0,X9 LOAD FCT ADDRESS sdfi . GET NEXT IMAGE FROM INPUT J IEISR INPUT ERROR. J IEEOF EOF ON THIS ELEMENT TP SDFICW,X9 IS IT A CONTROL IMAGE ? J IELBL YES. CHECK FOR LABEL TZ,S4 SDFICW,X9 IS THE IMAGE DELETED ? J IEIMGL YES. DON'T TRANSFER IT SZ SDFICW,X10 CLEAR IMAGE CONTROL WORD LA,T1 A4,SDFICW,X9 LOAD LENGTH FROM INPUT SA,T1 A4,SDFICW,X10 COPY LENGTH TO OUTPUT AA,U A15,1 INCREMENT IMAGED COPIED IECPY . . *** CHECK FOR TRUNCATION *** LA A0,X10 LOAD OUTPUT FCT ADDRESS sdfo . WRITE IMAGE TO OUTPUT J IEOSR OUTPUT SDF ERROR J IEIMGL PROCESS NEXT IMAGE . . PROCESS CONTROL OR LABEL IMAGE . IELBL LA,S1 A4,SDFICW,X9 LOAD INPUT IMAGE TYPE TE,U A4,050 IS IT A LABEL IMAGE (DEFINES CHAR SET) TNE,U A4,042 CHANGE CHARACTER SET ? J IECCI YES. PROCESS CODE CHANGE J IEIMGL NO. IGNORE OTHER CONTROL IMAGE . . PROCESS CHANGE CHARACTER SET IMAGE (042 OR 050) . IECCI LA,S6 A4,SDFICW,X9 LOAD NEW CHARACTER SET CODE TNE A4,A13 IS SET CHANGING ? J IEIMGL NO. DON'T NEED TO ISSUE CHANGE LA A5,(0420000,0) LOAD CHANGE CHARACTER SET CONTROL WORD SA A5,SDFICW,X10 SET IMAGE IN COBTROL WORD FOR OUTPUT SA,S6 A4,SDFICW,X10 STORE DESIRED CHARACTER SET IN IMAGE SA A4,A13 SET CURRENT SET TO NEW SET J IECPY OUTPUT A CHANGE SET IMAGE . IEEOF LA A0,X9 LOAD INPUT FCT ADDRESS sdfic . CLOSE SDF INPUT J IELTN PROCESS NEXT INPUT ELEMENT . . IGNORE INPUT ELEMENT . IELTIGN BRELR A1 RELEASE ELEMENT FIND ITEM J IELTN GET NEXT ELEMENT . . DONE PROCESSING. CLOSE OUT . IELTDONE LA A0,X10 LOAD OUTPUT FCT ADDRESS sdfoc . CLOSE SDF OUTPUT J IEOSR SDF OUTPUT ERROR BRELR X9 RELEASE OUTPUT FCT LX X9,F2 LOAD OUTPUT I/O FCT ADDRESS SZ IOFUNC,X9 SET LAST FUNCTION TO NULL (NON WEF$) J SDTOUT COMPLETE PROCESSING. MARK OUTPUT TAPE . . BSP ERROR ON INPUT . iebspr la a2,a14 load BSP FCT address LMJ X11,BSPERP EDIT AND PRINT BSP ERROR MESSAGE J SSERR ERROR THE COMMAND . . INPUT ELEMENT FILE IS ON TAPE - ERROR FOR NOW . IELTAP R$DIT . ENTER EDITING MODE E$MSG IELTMS EDIT AN ERROR MESSAGE IELTMO LA A0,E1 LOAD ELEMENT CLASS ITEM FOR INPUT FILE OELTMO LA A0,ELFDT,A0 LINK TO THE FDT LMJ X11,FIST APPEND FILE AND STATEMENT J SSERR ENTER COMMON ERROR CODE . . NO ELEMENTS SELECTED FROM INPUT ELEMENT FILE . IELTMT R$DIT . ENTER EDITING MODE E$MSG IELTMTM COPY THE MESSAGE FOR NULL INPUT J IELTMO PROCESS LIKE INPUT ON TAPE . . COMMON PROCESSING FOR I/O ERROR FROM SDFI OR SDFO . IEISR . IEOSR . OEISR . OEOSR LA A1,F1 GET I/O FCT FOR FIRST FILE TE,H2 A0,IOACW,A1 WAS ERROR ON F1 ? LA A1,F2 NO. GET POINTER TO FCT FOR OUTPUT FILE LA A2,IOSTATUS,A0 LOAD I/O ERROR STATUS SA A2,IOSTATUS,A1 COPU I/O STATUS TO FCT LA A0,A1 GET FCT ADDRESS IN A0 LMJ X11,IOSEDT EDIT THE I/O ERROR MESSAGE J SSERR PROCESS COMMAND ERROR /. . . OUTPUT HAS ELEMENT CLASS SPECIFIED. THIS MEANS THAT WE TAKE AN . INPUT SDF FILE AND WRITE AN ELEMENT CONSISTING OF THE FILE NAME . RENAMED BY THE ELEMENT CLASS SPECIFICATION. . OELT LX X9,E2 LOAD OUTPUT ELEMENT CLASS LA A0,ELFDT,X9 LOAD FDT POINTER FOR OUTPUT LA A1,FDTYPE,A0 LOAD TYPE FROM THE FDT JTAPE A1,OELTAP ERROR. CAN'T WRITE OUTPUT ELT ON TAPE BGETL FTIL ALLOCATE FTI FOR OUTPUT FILE SA A0,A14 SAVE FTI ADDRESS LA A1,F2 LOAD OUTPUT FILE FCT ADDRESS DL A4,IOFN,A1 LOAD INTERNAL FILE NAME DS A4,FTIFN,A0 STORE INTO FTI FILE NAME rfti . READ FTI INTO MEMORY J OEBSPR BSP ERROR ON OUTPUT ELEMENT BGETL SDFL*2 ALLOCATE SDF FCT'S, BUFFERS, LINES AU,U A0,SDFL GET ADDRESS OF SECOND FCT DS A0,X9 SAVE POINTERS IN X9, X10 LA A1,F1 GET INPUT FDT, FCT SSL A1,18 SHIFT DOWN FDT ADDRESS LA,U A2,R$ LOAD READ FUNCTION LA,U A3 CLEAR READ ADDRESS LMJ X11,SDFFCT BUILD SDF INPUT FCT AA,U A0,SDFL GET ADDRESS OF OUTPUT FCT LA A1,F2 LOAD OUTPUT FDT, FCT SSL A1,18 SHIFT DOWN THE FDT LA,U A2,W$ LOAD WRITE FUNCTION LX X11,A14 LOAD FTI ADDRESS LA A3,FTIWL,X11 LOAD NEXT WRITE LOCATION LMJ X11,SDFFCT BUILD OUTPUT SDF FCT sdfoo . OPEN SDF OUTPUT LA A1,('*SDFF*') LOAD SDF LABEL TEXT SA A1,SDFIMAGE,X10 SET AS TEXT FOR OUTPUT LA A1,(0500130,0) LOAD STANDARD ELEMENT LABEL SA A1,SDFICW,X10 SET OUTPUT LABEL IMAGE LA,U A0,,X9 GET INPUT FCT ADDRESS sdfio . OPEN SDF INPUT J OEISR INPUT SDF ERROR SZ A12 SET OUTPUT TEXT INITIALLY FIELDATA sdfi . READ FIRST IMAGE OF FILE J OEISR ERROR. TERMINATE J OEEOF EOF. WRITE NULL ELEMENT TN SDFICW,X9 IS FIRST IMAGE CONTROL ? J OEWLB NO. WRITE OUR LABEL LA,S1 A1,SDFICW,X9 LOAD CONTROL IMAGE TYPE TNE,U A1,050 IS IT A LABEL IMAGE ? J OESCT YES. SET CHARACTER SET TE,U A1,042 IS FIRST CHANGE CHARACTER SET ? J OEWLB NO. WRITE STANDARD LABEL OESCT LA,S6 A1,SDFICW,X9 LOAD CHARACTER SET FOR INPUT TZ A1 DOES FILE START IN ASCII ? LA,U A12,FL$ASC YES. MARK ELEMENT TEXT ASCII SA,S6 A1,SDFICW,X10 STORE CHARACTER SET IN OUTPUT LABEL OEWLB LA A0,X10 LOAD OUTPUT FCT ADDRESS sdfo . WRITE LABEL IMAGE TO FILE J OEOSR SDF OUTPUT ERROR LA,U A0,SDFIMAGE,X9 LOAD INPUT IMAGE ADDRESS SA,H2 A0,SDFIMA,X10 SET AS OUTPUT IMAGE ALSO TN SDFICW,X9 DID WE SKIP CONTROL IMAGE ? J OETXTI NO. PROCESS TEXT IMAGE OENEXT LA A0,X9 LOAD INPUT FCT ADDRESS sdfi . READ NEXT IMAGE J OEISR INPUT I/O ERROR J OEEOF EOF. WIND UP OUTPUT FILE TN SDFICW,X9 TEXT IMAGE ? J OETXTI YES. OUTPUT IT CLEANED UP LA,S1 A0,SDFICW,X9 LOAD CONTROL IMAGE TYPE TE,U A0,042 CHANGE CHARACTER SET ? J OENEXT NO. IGNORE OTHER CONTROL IMAGES SZ SDFICW,X10 CLEAR OUTPUT CONTROL IMAGE SA,S1 A0,SDFICW,X10 SET IMAGE TYPE IN IMAGE LA,S6 A0,SDFICW,X9 LOAD DESIRED CODE TYPE SA,S6 A0,SDFICW,X10 PUT IN OUTPUT IMAGE TYPE J OEWRITE WRITE IMAGE TO FILE . . PROCESS TEXT IMAGE . OETXTI SZ SDFICW,X10 CLEAR OUTPUT IMAGE CONTROL WORD LA,T1 A0,SDFICW,X9 LOAD LENGTH OF INPUT IMAGE SA,T1 A0,SDFICW,X10 COPY IT TO OUTPUT AA,U A15,1 INCREMENT IMAGES WRITTEN OEWRITE LA A0,X10 LOAD OUTPUT FCT ADDRESS sdfo . COPY IMAGE TO OUTPUT ELEMENT J OEOSR OUTPUT SDF I/O ERROR J OENEXT WRITE NEXT IMAGE . OEEOF LA A0,X9 LOAD INPUT FCT ADDRESS sdfic . CLOSE SDF INPUT LA A0,X10 LOAD OUTPUT FCT sdfoc . CLOSE OUTPUT J OEOSR OUTPUT WRITE ERROR LA A0,A14 LOAD FTI ADDRESS LA,U A0,FTIET,A0 LOAD ELEMENT TABLE ENTRY ADDRESS LMJ X11,PFTLEN COMPUTE OPTIMAL TABLE LENGTH AA,U A0,EIL LEAVE ROOM FOR ONE MORE ELEMENT TG,U A0,BUFELTT+1 ARE WE FORCED TO PAGE ? LA,U A0,BUFELTT YES. LIMIT BUFFER SIZE SA A0,A1 SAVE BUFFER SIZE AA,U A0,EIL ADD SPACE FOR INSERT ITEM BGETL . ALLOCATE ELEMENT TABLE AND INSERT ITEM SA A0,A13 SAVE THE ELEMENT TABLE ADDRESS LXI,U A1,EIL,A0 LOAD ELEMENT TABLE START ADDRESS LA A0,A14 LOAD FTI ADDRESS rpfet . READ ELEMENT TABLE J OEBSPR OUTPUT BSP ERROR LA A0,A13 LOAD ELEMENT ITEM BUFFER ADDRESS LA A1,E2 GET OUTPUT ELEMENT CLASS LA A2,F1 LOAD INPUT FCT, FDT SSL A2,18 SHIFT FDT TO H2 DL A4,FDFN,A2 LOAD FILE NAME FROM FDT DS A4,EIEN,A0 PUT AS ELEMENT NAME OF ELEMENT DL A4,(LJSF$2 ' ') LOAD BLANK VERSION NAME DS A4,EIVER,A0 SET VERSION AS BLANK LA A4,(5,,1) LOAD CANNED CYCLE WORD SA A4,EICYCW,A0 SET CYCLE WORD IN ELEMENT ITEM LA A4,SDFADR,X10 LOAD NEXT WRITE ADDRESS AFTER ELEMENT LA A2,A14 LOAD FTI ADDRESS ANU A4,FTIWL,A2 COMPUTE ELEMENT LENGTH LA A3,FTIWL,A2 LOAD START ADDRESS OF THIS ELEMENT SA A4,FTIWL,A2 UPDATE NEXT WRITE LOCATION SA A5,EITXTL,A0 SET ELEMENT TEXT LENGTH SA A3,EITXTA,A0 SET TEXT STARTING ADDRESS FOR ELEMENT SZ EITIME,A0 CLEAR TIME SO BSP WILL USE CURRENT SZ EIPLNK,A0 CLEAR POINTER LINK SZ EIVLNK,A0 CLEAR VERSION LINK SZ EIFLGW,A0 CLEAR FLAGS, TYPE LINK SA A12,EIFLG,A0 SET FIELDATA / ASCII TEXT MODE DSL A4,72 CLEAR TYPE, PROCESSOR CODE LA,U A4,TY$SYM SET TYPE SYMBOLIC LA A2,ELTBIT,A1 LOAD TYPE BITS TEP,U A2,BIT(TY$SYM-1) SYMBOLIC TYPE ? J OESYMEL YES. CHECK PROCESSOR CODES TEP,U A2,BIT(TY$ASMP-1) ASM PROC ? LA,U A4,TY$ASMP YES. LOAD ITS TYPE TEP,U A2,BIT(TY$COBP-1) COBOL PROC ? LA,U A4,TY$COBP YES. LOAD THE TYPE TEP,U A2,BIT(TY$FORP-1) FORTRAN PROC ? LA,U A4,TY$FORP YES. LOAD TYPE CODE TE,U A4,TY$SYM SYMBOLIC TYPE ? J OETYSET NO. SET DESIRED MAJOR TYPE OESYMEL SSL A2,GTTYPE SHIFT OFF MAJOR TYPE BITS OESTYL JZ A2,OETYSET SET TYPE SYMBOLIC IF NO PROCESSOR CODE JB A2,OETYSET SET TYPE NOW IF BIT FOUND AA,U A5,1 INCREMENT PROCESSOR CODE SSL A2,1 MOVE NEXT BIT TO LOW ORDER J OESTYL LOOP UNTIL PROCESSOR CODE FOUND OETYSET SA A4,EITYP,A0 SET MAJOR TYPE IN ELEMENT ITEM SA A5,EIPCOD,A0 STORE PROCESSOR CODE FOR SYMBOLICS LMJ X11,RENAME APPLY RENAMING RULES TO FILE NAME LA A1,A13 LOAD ELEMENT ADD ITEM LA A0,A14 LOAD FTI ADDRESS etia . ADD ELEMENT TO ELEMENT TABLE J OEBSPR BSP ERROR. LA A0,A14 LOAD FTI ADDRESS wpfet . REWRITE ELEMEMT TABLE J OEBSPR BSP ERROR. LA A0,A14 LOAD FTI ADDRESS BACK wfti . WRITE BACK FTI, NEXT WRITE ADDRESS J OEBSPR BSP ERROR. J SDTOUT EXIT THE COMMAND . . BSP ERROR ON OUTPUT FILE . oebspr la a2,a14 load the BSP FCT address LMJ X11,BSPERP EDIT AND PRINT BSP ERROR MESSAGE J SSERR ERROR THE COMMAND . . OUTPUT ELEMENT IS TO BE WRITTEN TO TAPE . OELTAP R$DIT . ENTER EDITING MODE E$MSG OELTMS EDIT THE ERROR MESSAGE LA A0,E2 LOAD OUTPUT ELEMENT CLASS PARAMETER J OELTMO ENTER COMMON CODE FOR INPUT . PURE DATA . IELTMS 'INPUT ELEMENTS MAY NOT COME FROM TAPE !' IELTMTM 'NO ELEMENTS SELECTED FOR SDF TRANSFER FROM !' OELTMS 'OUTPUT ELEMENT MAY NOT BE WRITTEN TO TAPE !' END