SAMPLE PROGRAMS Following are two sample programs, the second of which implements several options of the Extended Assembler. PARTS FILE UPDATE A master file of parts is updated by a parts usage list to produce a new master parts file. A report, consisting of the parts used and their cost, is also produced. The organization of the files is a follows: Parts Master Files (PRTSM) --------------------------------------------- | Identification | Quantity | Cost/Item | --------------------------------------------- Identification fields of the Parts Master Files exists in ASCII although the entire record is read ans written in binary. Parts Usage FIle (PRTSU) ------------------------------- | Identification | Quantity | ------------------------------- The parts usage file has been recorded in ASCII. Parts Cost Report (PRTSC) ----------------------------------------------------------------------- | Identification | //// | Quantity used | //// | $ | Cost for Qty | ----------------------------------------------------------------------- The Parts Cost Report is recorded in ASCII with spacing and editing for printing. The sample program reads and writes the files, adjusts the new stock levels, and calculates the cost. External subprograms perform the binary-to-decimal and decimal-to-binary conversions and handle unrecoverable input/output errors, invalid data conditions, and normal program termination. Input/output operations are performed using the Basic Control System input/output sub- routine, .IOC. D-1 SAMPLE PROGRAM GENERAL FLOW CHART D-2 SAMPLE ASSEMBLER SYMBOL TABLE OUTPUT D-3 SAMPLE ASSEMBLER LIST OUTPUT D-4 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 EXT .IOC. PERFORM I/O OPERATIONS USING BCS * I/O CONTROL ROUTINE. EXT BCONV ENTRY POINT FOR DECIMAL(ASCII) * TO BINARY CONVERSION SUBPROGRAM. EXT DCONV ENTRY POINT FOR BINARY TO * DECIMAL(ASCII) CONVERSION SUB- * PROGRAM EXT ABORT ENTRY POINT FOR SUBPROGRAM WHICH * HANDLES UNRECOVERABLE I/O ERRORS * OR INVALID DATA. 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 PTRSU ADDRESS OF STORAGE AREA; AREA IS DEC 4 4 WORDS LONG. CXSTU JSB .IOC. CHECK STATUS OF UNIT 1. OCT 40001 RAL SSA JMP CHKSTU 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 OETS1 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. RJTCM 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