.TITLE PASS2 .IDENT /hah010/ ; ; VERSION 01 ; ; TOM GETZINGER 19-SEP-80 ; ; Modified: 07-Nov-83 hah005 ; Add temporary support for ISD entries (just ignores them for ; now) ; 27-Jul-85 hah010 ; Convert SELECT subroutine to support DOB as a I&D space task. ; ; ; THIS MODULE BUILDS LABEL BITMAPS, AND THE GLOBAL SYMBOL TABLE ; ; MACROs ;hah010 ; ;hah010 .macro select table ;hah010 mov r0,-(sp) ;Save R0 (restored by SELECT) ;hah010 mov table, r0 ;hah010 call select ;hah010 .endm ;hah010 ; ; LOCAL DATA ; .PSECT RODATA,RO,D table: ;hah010 .BYTE RT.GSD,RT.END ;hah010 .WORD illcod ; ILLEGAL TYPE ;hah010 .WORD GSD2+1 ; GSD (CALLED) ;hah010 .WORD skip ; END OF GSD ;hah010 .WORD TXT2+1 ; TXT (CALLED) ;hah010 .WORD RLD2+1 ; RLD (CALLED) ;hah010 .WORD skip ; ISD - IGNORE FOR NOW ;hah010 .WORD endmod ; END OF MODULE ;hah010 .PSECT CODE,RO .MCALL GET$S WRITE$ .enabl lsb ;hah010 PASS2:: MOV VBN,R1 ; GET STARTING VBN MOV VBN+2,R2 MOV BYTNUM,R3 ; GET STARTING BYTE NUMBER MOV #FDBIN,R0 ; GET INPUT FDB ADDRESS CALL .POINT ; POINT TO START OF OBJECT MODULE MOV #-1,CRNPSN ; INITIALIZE CURRENT PSECT NUMBER CLR CRNADR ; AND CURRENT ADDRESS MOV PSCEND,R2 ; POINT TO START OF GLOBAL SYMBOL TABLE MOV #-1,GBLPSN ; INITIALIZE PSECT NUMBER skip: GET$S #FDBIN ; GET THE NEXT RECORD BCS 10$ ; ERROR MOV F.NRBD(R0),R4 ; GET THE RECORD LENGTH SUB #2,R4 MOV F.NRBD+2(R0),R3 ; GET THE RECORD ADDRESS MOV (R3)+,R1 ; GET THE RECORD TYPE bic #^C7,r1 ; Clear all but used bits select #table ;hah010 BR skip ; LOOP BACK FOR NEXT RECORD 10$: TRAP INIOER ; INPUT I/O ERROR illcod: TRAP OBJFMT ; OBJECT FORMAT ERROR endmod: CALL DASM2 ; DISASSEMBLE REMAINING TEXT CLR R4 CALL RLSTXT ; RELEASE REMAINING TEXT 50$: RETURN ; AND WE'RE DONE .END