      NAM UPDTE
START NOP
      JMP OPEN
      ORB           ASSIGN STORAGE & CONSTANTS TO BP
PRTSM BSS 4         MASTER PARTS FILE - BINARY.
PRTSU BSS 4         PARTS USAGE LIST - ASCII.
PRTSC BSS 11        PARTS USAGE REPORT - ASCII.
EOTS1 JMP READM
EOTS2 JMP WRITN
MTEMP BSS 1
UTEMP BSS 1
SWTMP BSS 2
SPACS ASC 2,
DLRSG ASC 1, $
*A     EQU 0
*B     EQU 1
.IOC. EQU 0 
*      EXT .IOC.     PERFORM I/O OPERATIONS USING BCS
*                                   I/O CONTROL ROUTINE.
BCONF EQU 0
*      EXT BCONV     ENTRY POINT FOR DECIMAL(ASCII)
*                                   TO BINARY CONVERSION SUBPROGRAM.
DCONV EQU 0
*      EXT DCONV     ENTRY POINT FOR BINARY TO
*                                   DECIMAL(ASCII) CONVERSION SUB-
*                                   PROGRAM
ABORT EQU 0
*      EXT ABORT     ENTRY POINT FOR SUBPROGRAM WHICH
*                                   HANDLES UNRECOVERABLE I/O ERRORS
*                                   OR INVALID DATA.
HALT  EQU 0
*      EXT HALT      END OF PROGRAM SUBROUTINE.
      COM DTOBI(2),DTOBO,BTODI(2),BTODO(2)
*                                   COMMON STORAGE LOCATIONS USED TO
*                                   PASS DATA BETWEEN MAIN PROGRAM
*                                   AND CONVERSION SUBPROGRAMS.
      ORR           RESETS PLC AFTER USE OF ORB AT
*                                   BEGINNING OF PROGRAM
OPEN  NOP
SPCFL DLD SPACS     STORES EDITING CHARACTERS IN
      DST PRTSC+2   OUTPUT AREA FOR PARTS COST
      DST PRTSC+6   REPORT.
      LDA DLRSG
      STA PRTSC+8
READU JSB .IOC.     READ ONE RECORD FROM USAGE LIST
      OCT 10001     LOCATED ON STANDARD UNIT 1
      JMP RJCTU     (TELEPRINTER INPUT). PRTUS IS
      DEF PRTSU     ADDRESS OF STORAGE AREA; AREA IS
      DEC 4         4 WORDS LONG.
CKSTU JSB .IOC.     CHECK STATUS OF UNIT 1.
      OCT 40001
      RAL
      SSA
      JMP CKSTU     IF BUSY, LOOP UNTIL FREE.
      RAL
      SSA
      JMP *+2
      JMP READM     IF COMPLETE, TRANSFER TO SECTION
*                                 WHICH READS MASTER FILE RECORD.
      ALF,ALF       TEST END OF TAPE STATUS BIT
      RAL           (ORIGINAL BIT 05).
      SSA
      JMP EOTU      IF SET, GO TO EOT PROCEDURE.
      JMP ABORT     IF NOT SET, SOME ERROR CONDITION
*                                 (UNRECOVERABLE) EXISTS.
RJCTU SSB           CHECK CAUSE OF REJECT. IF UNIT
      JMP READU     BUSY LOOP UNTIL FREE. ANY OTHER
      JMP ABORT     CAUSE IS UNRECOVERABLE ERROR.
EOTU  LDA EOTS1     IF END OF USAGE FILE, ALTER
      STA OPEN      PROGRAM SEQUENCE TO BYPASS
      LDA EOTS2     SECTIONS THAT READ AND PROCESS
      STA COMPR     USAGE FILE. PRINT MESSAGE ON
      JSB .IOC.     TELEPRINTER INDICATING EOT.
      OCT 20002
      JMP EOTU+4
      DEF MSGU
      DEC 9
MSGU  ASC 9,END OF USAGE FILE
      JMP READM
READM JSB .IOC.     READ A RECORD FROM MASTER PARTS
      OCT 10105     FILE ON STANDARD UNIT 05(PUNCHED
      JMP RJCTM     TAPE READER). PRTSM  IS ADDRESS
      DEF PRTSM     OF STORAGE AREA; AREA IS 4 WORDS
      DEF 4         LONG. RECORD IS IN BINARY FORMAT
CKSTM JSB .IOC.     CHECK STATUS OF UNIT 5.
      OCT 40005
      SSA
      JMP CKSTM     IF BUSY, LOOP UNTIL FREE.
      RAL
      SSA
      JMP *+2
      JMP COMPR     IF COMPLETE, TRANSFER TO EITHER
      ALF,ALF       PROCESSING OR WRITE OUTPUT
      RAL           DEPENDING ON SETTING OF COMPR.
      SSA           TEST FOR END OF TAPE.
      JMP EOTM      IF END, GO TO EOT PROCEDURE.
      JMP ABORT     IF NOT, AN UNRECOVERABLE ERROR
*                              EXISTS.
RJCTM SSB           CHECK CONTENTS OF B FOR CAUSE OF
      JMP READM     REJECT. IF UNIT BUSY, LOOP UNTIL
      JMP ABORT     FREE, OTHERWISE I/O ERROR EXISTS
EOTM  LDA HLTSW     ALTER PROGRAM SEQUENCE TO HALT
      STA CKSTN+7   EXECUTION AFTER LAST RECORD IS
      JSB .IOC.     WRITTEN  PRINT MESSAGE
      OCT 20002     INDICATING END OF MASTER INPUT.
      JMP EOTM+2
      DEF MSGM
      DEC 15
MSGM  ASC 15,END OF MASTER PARTS FILE INPUT
      JMP COMPR
HLTSW JMP HALT      END OF PROGRAM SUBROUTINE
COMPR NOP
      JSB CONUI     CONVERT ID NUMBER FIELDS OF
      JSB CONVM     MASTER AND USAGE FILES TO BIN.
      LDA UTEMP     LOAD THESE FIELDS FROM TEMPORARY
      LDB MTEMP     SROTAGE.
      CPA B         COMPARE
      JMP PROCM     IF EQUAL, JUMP TO PROCESSING
      CMB,INB       IF ID NUMBER OF MASTER GREATER
      ADA B         THAN ID NUMBER OF USAGE, DATA IN
      SSA           USAGE FILE ERRONEOUS. TERMINATE
      JMP ABORT     RUN.
      LDA *+3       IF ID MASTER LESS THAN ID USAGE,
      STA CKSTN+7   ALTER SEQUENCE: READ NEXT MASTER
      JMP WRITN     RECORD IMMEDIATELY AFTER WRITING
      JMP READM     CURRENT MASTER RECORD.
PROCM JSB CONU2     CONVERT QUANTITY FIELD OF USAGE
      LDA PRTSM+2   FILE TO BINARY AND SUBTRACT FROM
      LDB UTEMP+1   QUANTITY FIELD OF MASTER AND
      CMB,INB       STORE RESULT
      ADA B
      STA PRISM+2
PROCC DLD PRTSU     STORE ID OF PARTS USED IN REPORT
      DST PRTSC     FILE STORAGE AREA.
      DLD PRTSU+2   STORE QUANTITY OF PARTS USED IN
      DST PRTSC+4   REPORT FILE STORAGE AREA
      LDA PRTSM+3   COMPUTE COST OF PARTS USED.
      MPY UTEMP+1
      STA SWTMP+1
      STB SWTMP
      JSB CONVC     CONVERT RESULT TO DECIMAL
      DLD SWTMP
      DST PRTSC+9   STORE IN REPORT FILE AREA.
      LDA *+3       ALTER SEQUENCE: READ NEXT USAGE
      STA CKSTN+7   RECORD AFTER WRITING CURRENT
      JMP WRITC     MASTER RECORD.
      JMP READU
CONVM NOP
      DLD PRTSM     STORE ID FIELDS IN COMMON
      DST DTOBI     LOCATIONS TO BE PROCESSED BY
      JSB BCONV     CONVERSION SUBPROGRAM. ON
      LDA DTOBO     COMPLETION, STORE RESULTS IN
      STA MTEMP     LOCATIONS USED BY PROCESSING
      JMP CONVM,I   SECTIONS. CONVM APPLIES TO ID OF
CONU1 NOP           MASTER PARTS FILE; CONU1, TO ID
      DLD PRTSU     OF USAGE; CONU2, TO QUANTITY OF
      DST DTOBI     USAGE; AND CONVC, TO COST OF
      JSB BCONV     PARTS(THIS IS A BINARY TO
      LDA DTOBO     DECIMAL CONVERSION).
      STA UTEMP
      JMP CONU1,I
CONU2 NOP
      DLD SWTMP
      DST BTODI
      JSB DCONV
      DLD BTODO
      DST SWTMP
      JSB CONVC,I
WRITC JSB .IOC.     WRITE ONE RECORD OF PARTS COST
      OCT 20102     REPORT ON STANDARD UNIT 2
      JMP RJCTC     (TELEPRINTER OUTPUT). PRTSC IS
      DEF PRTSC     ADDRESS IN STORAGE AREA; AREA IS
      DEC 11        11 WORDS LONG. RECORD IS IN ASCII
CKSTC JSB .IOC.     CHECK STATUS OF UNIT 2
      OCT 40002
      SSA
      JMP CKSTC
      RAL
      SSA
      JMP ABORT     TERMINATE IF ANY I/O ERROR.
      JMP WRITN     IF COMPLETE, TRANSFER TO WRITN
RJCTC SSB           IF BUSY, LOOP UNTIL FREE.
      JMP WRITC     TERMINATE ON ANY OTHER REJECT
      JMP ABORT     CONDITION
WRITN JSB .IOC.     WRITE ONE RECORD (BINARY) OF
      OCT 20104     NEW MASTER PARTS LIST ON UNIT 4
      JMP RJCTN     (TAPE PUNCH). PRTSM (INPUT AREA)
      DEF PRTSM     IS ALSO USED AS OUTPUT AREA.
      DEC 4
CKSTN JSB .IOC.     CHECK STATUS OF UNIT 4.
      OCT 40004
      SSA
      JMP CKSTN     IF BUSY, LOOP UNTIL FREE.
      RAL
      SSA
      JMP ABORT
      JMP READU
RJCTN SSB           IF BUSY, LOOP UNTIL FREE, OTHER-
      JMP WRITN     WISE TERMINATE.
      JMP ABORT
      END START

