ASMB,R,L,C HED * OUTBR * OUTPUT RELOCATABLES * A-29102-60025-1 REV. A NAM BROUT,7 92413-16021A 760329 ******************************************************** * * SOURCE: 92413-18021 REV A * RELOC: 92413-16021 REV A * * ********************************************************** * * ENTRY POINTS: * ENT RBOID ENT RBBFA ENT RBBUF ENT TYREB ENT CKSUM ENT LODAD ENT DBLIN ENT DBLEA ENT DBLOU ENT ENTIN ENT ENTEA ENT ENTOU ENT EXTIN ENT EXTEA ENT EXTOU ENT ENTW2 ENT EXTW2 ENT OUTIT * ******************************************************** * * EXTERNAL REFERENCES: * EXT WRITF EXT A1DCB EXT GT0UT * ******************************************************** * * BEFORE CALLING THE ROUTINES IN THIS PACKAGE, * SET RBOID TO THE ID NBR OF THE OUTPUT DEVICE. * ******************************************************** SKP HED * ENT RECORD OUTPUT ROUTINES * A-29102-60025-1 REV. A ***** * ** ENTIN ** ENT RECORD OUTPUT INITIALIZE ROUTINE * * CALLING SEQUENCE: * * JSB ENTIN * RETURN * ***** * ENTIN NOP LDA RBBFA ADA B3 STA RBPTR POINTER TO NEXT WORD IN BUFFER LDA MD15 ALLOW MAXIMUM 14 PER RECORD STA CNT14 CLA STA CNTEN NUMBER OF ENTRIES LDA B3 STA RBLEN LENGTH OF RECORD JMP ENTIN,I SKP ***** * ** ENTEA ** ADD AN ENTRY TO CURRENT ENT RECORD * * CALLING SEQUENCE * * LDB POINTER TO ENTRY TO PUT IN BUFFER * (WORD 1 = FIRST 2 CHARS OF NAME) * (WORD 2 = SECOND TWO CHARS OF NAME (BLANK FILL)) * (WORD 3 = LAST CHAR AND RELOCATION BASE) * (WORD 4 = RELOCATABLE VALUE OF ENTRY POINT) * JSB ENTEA * RETURN * ***** * ENTEA NOP STB TEMPB ISZ CNT14 BUFFER FULL? JMP ENT01 NO, ADD ENTRY LDA ENTW2 YES JSB ENTOU MUST FLUSH THE BUFFER JSB ENTIN THEN REINITIALIZE BUFFER ISZ CNT14 BUMP MAX ENTRIES POINTER * ** ADD ENTRY TO BUFFER * ENT01 ISZ CNTEN COUNT ENTRY LDA MB4 STA CNTR MOVE 4 WORDS LDB TEMPB LOOPN LDA 1,I STA RBPTR,I ISZ RBPTR BUMP OUTPUT POINTER INB BUMP INPUT POINTER ISZ RBLEN BUMP WORD COUNT ISZ CNTR ARE ALL WORDS MOVED? JMP LOOPN NO, MOVE NEXT ONE JMP ENTEA,I YES, RETURN SKP ***** * ** ENTOU ** COMPLETE BUFFER AND OUTPUT IT * * CALLING SEQUENCE: * * LDA ENTW2 (WORD 2 MASK FOR ENT) * RECORD IN RBBUF BUFFER * JSB ENTOU * RETURN * * NOTE: THIS ROUTIN IS USED BY BOTH ENT AND EXT RECORD PROCESSORS * ***** * ENTOU NOP IOR CNTEN BUILD WORD TWO OF RECORD STA TYREB AND STORE IT IN RECORD LDA RBLEN ALF,ALF POSITION WORD COUNT STA RBBUF AND STORE IT IN WORD ONE JSB OUTIT OUTPUT BUFFER(COMPUTES OWN CKSUM) JMP ENTOU,I SKP HED *EXT RECORD OUTPUT PROCESSORS* A-29102-60025-1 REV. A ***** * ** EXTIN **INITIALIZE BUFFER FOR EXT RECORD OUTPUT * * CALLING SEQUENCE: * * JSB EXTIN * RETURN * ***** * EXTIN NOP LDA RBBFA ADA B3 STA RBPTR POINTER TO NEXT WORD IN BUFFER LDA MD20 ALLOW MAXIMUM 19 ENTRIES PER RECORD STA CNT19 CLA STA CNTEN NUMBER OF ENTRIES COUNTER LDA B3 STA RBLEN LENGTH OF RECORD JMP EXTIN,I SKP ***** * ** EXTEA ** ADD AN ENTRY TO CURRENT EXT RECORD * * CALLING SEQUENCE: * * LDB POINTER TO ENTRY TO PUT IN BUFFER * (WORD 1 = FIRST 2 CHARS OF NAME) * (WORD 2 = NEXT TWO CHARS (BLANK FILL)) * (WORD 3 = LAST CHAR, EXT ID NUMBER) * JSB EXTEA * RETURN * ***** * EXTEA NOP STB TEMPB ISZ CNT19 BUFFER FULL? JMP EXT01 NO, ADD ENTRY LDA EXTW2 YES, JSB EXTOU MUST FLUSH BUFFER JSB EXTIN REINITIALIZE BUFEER ISZ CNT19 BUMP MAX NBR OF ENTRIES COUNTER * ** ADD ENTRY TO BUFFER * EXT01 ISZ CNTEN COUNT ENTRY LDA MB3 STA CNTR MOVE 4 WORDS LDB TEMPB LOOPM LDA 1,I STA RBPTR,I ISZ RBPTR BUMP OUT PUT POINTER INB BUMP INPUT POINTER ISZ RBLEN BUMP WORD COUNT ISZ CNTR ARE ALL WORDS MOVED? JMP LOOPM NO, MOVE NEXT ONE JMP EXTEA,I YES, RETURN SKP ***** * ** EXTOU ** COMPLETE BUFFER AND OUTPUT IT * * CALLING SEQUENCE: * * LDA EXTW2 (WORD 2 MASK FOR EXT) * RECORD IN RBBUF BUFFER * JSB EXTOU * RETURN * * NOTE: THIS ACTUALLY USES THE SAME ROUTINE AS ENTS (ENTOU) * ***** * * EXTOU EQU ENTOU * SKP HED * DBL RECORD OUTPUT ROUTINES * A-29102-60025-1 REV. A ***** * ** DBLIN ** INITIALIZE DBL BUFFER FOR OUTPUT * * CALLING SEQUENCE * * LDA TYPE OF RELOCATION BASE * LDB RELOCATABLE LOAD ADDRESS * JSB DBLIN * RETURN * ***** * DBLIN NOP ALF POSITION RELOCATION BASE RAL,RAL IOR WORD2 INITIALIZE WORD 2 OF RECORD STA TYREB TYPE, RELOCATION BASE, #INSTR WORDS STB LODAD INITIALIZE RELOCATION ADDRESS LDB RBBFA ADB B4 STB PTR5 AND POINTER TO BLOCK WORD INB STB RBPTR AND NEXT WORD BUFFER POINTER LDA B5 STA RBBUF INITIALIZE RECORD LENGTH LDA MB5 STA CNT5 INTIALIZE BLOCK OF 5 COUNTER CLA STA PTR5,I AND THE BLOCK WORD ITSELF JMP DBLIN,I SKP ***** * ** DBLEA ** ROUTINE TO BUILD DBL RECORDS ONE DATUM AT A TIME * * CALLING SEQUENCE: * * LDA RELOCATION INDICATOR(SEE RECORD DESCRIPTION) * LDB POINTER TO DATUM (DATUM MAY BE TWO WORDS) * JSB DBLEA * RETURN * ***** * DBLEA NOP STA TEMPA STB TEMPB CLB,INB CPA B5 IS THIS A MEMORY REFERENCE (TWO WORD) DATUM? INB YES, COUNT THE SECOND WORD ADB RBBUF .B. NOW HAS LENGTH WITH ADDED DATUM ADB MD61 SSB IS THERE ROOM? JMP ADDIT YES, MERELY ADD DATUM JSB DBLOU NO, MUST FLUSH BUFFER LDA TYREB AND B77 ADA LODAD GET NEW LOAD ADDRESS STA 1 INTO THE B REG FOR DBLIN CALL LDA TYREB AND GET RELOCATION BASE INTO AREG AND B300 ALF,ALF RAL,RAL JSB DBLIN INITIALIZE RELOC OUTPUT PARAMETERS * ** ADD A DATUM * ADDIT LDA TEMPA IOR PTR5,I INSERT DATA TYPE ALF,RAR STA PTR5,I INTO BLOCK WORD LDA TEMPB,I INSERT FIRST WORD OF DATUM STA RBPTR,I ISZ RBPTR BUMP RECORD WORD POINTER ISZ RBBUF BUMP WORD COUNT ISZ TYREB BUMP DATA ITEM COUNT LDA TEMPA CPA B5 IS THERE A SECOND WORD? RSS JMP BLKCK NO LDB TEMPB YES, GET IT TOO INB LDA 1,I STA RBPTR,I ISZ RBPTR ISZ RBBUF * ** CHECK TO SEE IF NEED TO SET UP A NEW ** 5DATUM BLOCK * BLKCK ISZ CNT5 COUNT LAST DATUM AND TEST FOR END JMP DBLEA,I NOT AT END OF BLOCK, RETURN LDA PTR5,I YES, DO FINAL POSITIONING RAR,RAR STA PTR5,I LDB RBPTR THEN SET UP FOR NEW BLOCK OF 5 STB PTR5 LDA MB5 STA CNT5 RESET COUNTER CLA STA PTR5,I START WORD OUT AS ZERO ISZ RBPTR BUMP BUFFER POINTER ISZ RBBUF AND WORD COUNT JMP DBLEA,I THEN RETURN SKP ***** * ** DBLOU ** ROUTINE TO FLUSH RELOC BUFFER * * CALLING SEQUENCE: * * JSB DBLOU * RETURN * ***** * DBLOU NOP LDA RBBUF CPA B5 IS THERE ANYTHING IN THE BUFFER? JMP DBLOU,I NO, RETURN IMMEDIATELY LDB CNT5 CPB MB5 ARE WE AT THE START OF A 5 BLOCK? JMP NEW5 YES LDA PTR5,I NO, MUST POSITION WHAT WE HAVE ALF,RAR ROTATE 3 LEFT FOR EACH MISSING ITEM ISZ CNT5 JMP *-2 RAR,RAR DO FINAL POSITIONING STA PTR5,I JMP KEPON * ** WE HAVE JUST STARTED A NEW BLOCK OF 5 ITEMS ** BUT HAVE NOT YET ADDED A DATUM IN THIS BLOCK * NEW5 CCA ADA RBBUF STA RBBUF DECREMENT WORD COUNT KEPON LDA RBBUF ALF,ALF POSITION RECORD WORD COUNT STA RBBUF AND RECORD IS READY FOR OUTPUT JSB OUTIT OUTPUT THE RECORD JMP DBLOU,I SKP ***** * ** OUTIT ** COMPUTE CHECKSUM AND OUTPUT RECORD * * CALLING SEQUENCE: * * PUT RECORD INTO RBBUF BUFFER * JSB OUTIT * RETURN * ***** * OUTIT NOP LDA RBBUF ALF,ALF CPA B3 IS THIS A "NO DATA RECORD" ? JMP OUTIT,I YES, RETURN IMMEDIATELY STA RBLEN STORE IT FOR FWRIT CALL CMA,INA SET UP COUNTER FOR COMPUTING CKSUM ADA B3 TWO WORDS ARE NOT INCLUDED IN CKSUM STA FLCNT SET UP WORD COUNTER LDB RBBFA .B.= POINTER TO WORD ADB B2 LDA TYREB START WITH WORD2 INB ADVANCE TO NEXT WORD ADA 1,I ISZ FLCNT COUNT WORD, ARE WE DONE? JMP *-3 NO, KEEP GOING STA CKSUM YES, STORE IN RECORD * ** OUTPUT RECORD * JSB WRITF DEF *+5 DEF A1DCB DEF RBERR DEF RBBUF DEF RBLEN * LDA RBERR SSA CHECK FOR IO ERROR JSB IOERR FOUND AN ERROR JMP OUTIT,I NO ERROR, RETURN * ***** * ** ERROR ROUTINE !!! MUST BE REPLACED FOR PRODUCTION RUN !!!!! * ***** * IOERR NOP JSB GT0UT JMP OUTIT,I SKP HED **** CONSTANTS AND VARIABLES * A-29102-60025-1 REV. A ***** * ** CONSTANTS AND VARIABLES * ***** * RBBFA DEF RBBUF POINTER TO RELOCATABLE BUFFER RBBUF NOP RECORD LENGTH (WORD ONE OF BUFFER) TYREB NOP TYPE, RELOCATION BASE, # INSTRUCTION WORDS CKSUM NOP CHECKSUM LODAD NOP UNRELOCATED LOAD ADDRESS BSS 56 REST OF BUFFER (60 WORDS) * TEMPA NOP TEMPB NOP FLCNT NOP RBOID OCT 3 OUTPUT ID NUMBER RBERR NOP ERROR CODE GOES HERE RBLEN NOP LENGTH OF BUFFER (FOR FWRIT) PTR5 NOP POINTER TO HEAD OF 5 WORD BLOCK RBPTR NOP POINTER TO NEXT AVAILABLE WORD IN BUFFER CNT5 NOP CNT14 NOP CNT19 NOP CNTEN NOP CNTR NOP ENTW2 OCT 40000 WORD TWO MASK FOR ENT RECORDS EXTW2 OCT 100000 WORD TWO MASK FOR EXT RECORDS WORD2 OCT 60000 WORD TWO MASK FOR DBL RECORDS * MD61 DEC -61 MD20 DEC -20 MD15 DEC -15 MB5 OCT -5 MB4 OCT -4 MB3 OCT -3 B2 OCT 2 B3 OCT 3 B4 OCT 4 B5 OCT 5 B77 OCT 77 B300 OCT 300 END