.NLIST .INCLUDE /DISK$HUNTA:[MACROS]MACROS.MAC/ .INCLUDE /MAC11.MAC/ .LIST MODULE NAME=, REL=, VER=<05>, COMM=, TYPE= EXPORT QUALIFIED INSIZE, PCRCNT EXPORT QUALIFIED $OPCOD EXPORT QUALIFIED PCRTBL EXPORT QUALIFIED OBJSEC, OBJLOC EXPORT QUALIFIED RLDPNT, CPXSTL, OBJPNT EXPORT QUALIFIED OBJDMP, STCODE, TSTRLD, OBJINI, PCROLL, APPCOD EXPORT QUALIFIED PNCSET, ZAPCPX, RLDDMP FROM UNKNOWN IMPORT PASS FROM UNKNOWN IMPORT $WRITE FROM UNKNOWN IMPORT CLCSEC FROM UNKNOWN IMPORT CPXLST FROM UNKNOWN IMPORT SETXPR FROM UNKNOWN IMPORT VALUE FROM UNKNOWN IMPORT SETPF0 FROM UNKNOWN IMPORT SETPF1 FROM UNKNOWN IMPORT PF1 FROM UNKNOWN IMPORT SYMBOL FROM UNKNOWN IMPORT ED.PNC FROM UNKNOWN IMPORT CODLST FROM UNKNOWN IMPORT CLCNAM FROM UNKNOWN IMPORT APPEND FROM UNKNOWN IMPORT EDMASK FROM UNKNOWN IMPORT $LSCNT FROM UNKNOWN IMPORT SECTOR FROM UNKNOWN IMPORT ED.ABS FROM UNKNOWN IMPORT BUFTBL FROM UNKNOWN IMPORT SAVREG FROM UNKNOWN IMPORT ZAP FROM UNKNOWN IMPORT NEXT FROM UNKNOWN IMPORT CLCLOC FROM UNKNOWN IMPORT $LSPNT FROM UNKNOWN IMPORT CNTTBL FROM UNKNOWN IMPORT FLAGS PROCEDURE STCODE BEGIN IF PASS NE #0 AND OBJPNT NE #0 THEN CALL SAVREG CALL SETXPR ANDB #200 SET.IN (R3) THEN PUSH (R4) LET (R4)+ :B= $LSCNT+CPXLST LET (R4)+ :B= CPXSTL CALL APPCOD LET $LSPNT := #0 LOOP LET R0 := #CPXLST CALL NEXT IF RESULT IS EQ LEAVE LOOP PUSH $LSPNT CALL APPCOD POP $LSPNT END LET (R3) := #4012 + (SP)+ SWAB (R3) LET -(R4) := #0 END CALL APPCOD LET INSIZE :B= INSIZE + #1 ENTRY ZAPCPX LET R0 := #CPXLST CALL ZAP LET CPXSTL := #3 RETURN END STCODE PROCEDURE APPCOD BEGIN LET R0 := #CODLST CALL APPEND ENTRY LIIVE RETURN END APPCOD PROCEDURE PCROLL BEGIN LET R0 := #CODLST CALL NEXT IF RESULT IS EQ GOTO LIIVE CALL SAVREG LET R5 := #0 LET R4 := #0 LET R4 :B= R4 SET.BY SECTOR IF RESULT IS PL THEN LET R5 := R5 + #1 END IF PASS NE #0 THEN LET PCRCNT := PCRCNT + #1 IF RESULT IS PL THEN CALL SETPF0 END CALL SETPF1 LET R4 :B= R4 L.SHIFT 1 AND OBJPNT NE #0 AND #ED.PNC OFF.IN EDMASK THEN LET R4 := PCRTBL(R4) IFB CLCSEC EQ OBJSEC GOTO E00336 CALL E01124 LET R0 := #10 CALL TSTRLD LET (R2)+ := #7 LET (R2)+ := CLCNAM LET (R2)+ := CLCNAM+2 LET OBJSEC :B= CLCSEC GOTO E00366 END JUMPTO E00674 E00336: IF CLCLOC EQ OBJLOC GOTO E00376 CALL E01124 LET R0 := #4 CALL TSTRLD LET (R2)+ := #10 E00366: LET (R2) := CLCLOC REPEAT CALL OBJDMP E00376: LET R0 := OBJPNT + R5 - BUFTBL+6 UNTIL R0 LOS #177 LET R0 :B= R4 IF RESULT IS MI THEN LET R0 :B= VALUE+1 END CALL TSTRLD LET R1 := OBJPNT IF R1 EQ BUFTBL+6 THEN IF #ED.ABS SET.IN EDMASK THEN LET (R1)+ := #3 END LET (R1)+ := CLCLOC END LET R4 := R4 L.SHIFT 1 IF RESULT IS CS THEN LET (R2)+ :B= SECTOR LET R0 := R1 - BUFTBL+6 LET (R2)+ :B= R0 ANDB R4 MI #0 THEN LET -(SP) :B= VALUE REPEAT LET R0 := #CODLST CALL NEXT LET R4 :B= FLAGS IFB #10 SET.IN R4 GOTO E00566 LET R0 := R2 LET (R2)+ :B= #16 IFB #100 SET.IN R4 THEN CALL E00714 ELSE LET (R0) :B= (R0) + #1 IFB R4 NE #0 THEN E00566: LET (R2)+ :B= SECTOR IFB #40 OFF.IN R4 GOTO E00614 ELSE LET (R0) :B= (R0) + #1 END LET (R2)+ :B= VALUE LET (R2)+ :B= VALUE+1 END E00614: LET (SP) :B= (SP) - #1 UNTIL RESULT IS MI POP LET PF1+2 := #0 ELSE LET R4 := R4 L.SHIFT 1 IF RESULT IS CS THEN CALL E00714 END LET R4 := R4 L.SHIFT 1 IF RESULT IS CS THEN LET (R2)+ :B= VALUE LET (R2)+ :B= VALUE+1 END END LET (R1)+ :B= VALUE IF R5 NE #0 THEN LET (R1)+ :B= VALUE+1 END LET OBJPNT := R1 E00674: LET R5 := R5 + #1 LET CLCLOC := CLCLOC + R5 LET OBJLOC := CLCLOC LET R0 := SP RETURN END PCROLL PROCEDURE E00714 BEGIN LET R3 := #SYMBOL LET (R2)+ :B= (R3)+ LET (R2)+ :B= (R3)+ LET (R2)+ :B= (R3)+ LET (R2)+ :B= (R3)+ RETURN END E00714 .PSECT IMPLIN,GBL,D PCRCNT: .BLKW INSIZE: .BLKW .PSECT MIXED,D $OPCOD: .BLKW .PSECT DPURE,RO,D PCRTBL: .WORD 000000 .WORD 120004 .WORD 140006 .WORD 120004 .WORD 140006 .WORD 160010 .WORD 160010 .WORD 000000 .WORD 000000 .WORD 100002 .WORD 000000 .WORD 000000 .WORD 000000 .WORD 160010 .WORD 160010 .WORD 100377 PROCEDURE PNCSET BEGIN LET OBJSEC :B= #-1 RETURN END PNCSET PROCEDURE OBJDMP BEGIN LET @CNTTBL+6 := OBJPNT IF RESULT IS NE THEN LET @CNTTBL+6 := @CNTTBL+6 - BUFTBL+6 IF RESULT IS NE THEN LET R0 := #6 CALL $WRITE END LET R0 := BUFTBL+10 TST (R0)+ IF RLDPNT HI R0 THEN ENTRY RLDDMP IF #ED.ABS SET.IN EDMASK THEN LET @CNTTBL+10 := RLDPNT - BUFTBL+10 LET R0 := #10 CALL $WRITE END END ENTRY OBJINI LET OBJPNT := BUFTBL+6 LET RLDPNT := BUFTBL+10 LET RLDPNT := RLDPNT + #2 END RETURN END OBJDMP PROCEDURE TSTRLD BEGIN PUSH R0 LET R0 := R0 + RLDPNT - BUFTBL+10 IF R0 HI #200 THEN CALL OBJDMP END LET R2 := RLDPNT LET RLDPNT := RLDPNT + (SP)+ RETURN END TSTRLD PROCEDURE E01124 BEGIN IF #1 SET.IN RLDPNT THEN CALL OBJDMP END RETURN END E01124 .PSECT IMPPAS,GBL,D .BLKB OBJSEC: .BLKB OBJLOC: .BLKW .PSECT IMPURE,D CPXSTL: .BLKW OBJPNT: .BLKW RLDPNT: .BLKW END CODHD .END