.
. 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