Trailing-Edge
-
PDP-10 Archives
-
bb-m780a-sm
-
monitor-sources/postld.mac
There are 51 other files named postld.mac in the archive. Click here to see a list.
; UPD ID= 457, SNARK:<5.MONITOR>POSTLD.MAC.5, 2-Feb-82 09:48:06 by PAETZOLD
;TCO 5.1714 - Fix code so that BUGSTRINGS.TXT knows difference between
; BUGHLT, BUGCHK, and BUGINF
; UPD ID= 1457, SNARK:<5.MONITOR>POSTLD.MAC.4, 20-Jan-81 09:36:38 by DONAHUE
;TCO 5.1235 - add label BUGD:
; UPD ID= 796, SNARK:<5.MONITOR>POSTLD.MAC.3, 24-Jul-80 10:56:19 by HALL
;DEFINE FFF HERE SO THAT IT CAN BE THE LAST THING IN RSDAT
; UPD ID= 421, SNARK:<5.MONITOR>POSTLD.MAC.2, 11-Apr-80 13:51:20 by HALL
;CHANGES TO WRITE-PROTECT RESIDENT MONITOR
; ADD RSDAT PSECT TO PEND INVOCATION
; ADD RSDAT PSECT TO ARGUMENTS FOR SSAVE JSYS
;<4.1.MONITOR>POSTLD.MAC.16, 8-Nov-79 06:36:56, EDIT BY R.ACE
;<R.ACE>POSTLD.MAC.1, 7-Nov-79 12:25:39, EDIT BY R.ACE
;MAKE POSTLD TYPE NAME AND VERSION #
;<4.MONITOR>POSTLD.MAC.15, 30-Oct-79 11:37:18, EDIT BY MILLER
;<4.MONITOR>POSTLD.MAC.14, 30-Oct-79 10:31:48, EDIT BY MILLER
;GET SYS TIME AND DATE FROM FDB OF VERSIO.MAC
;<4.MONITOR>POSTLD.MAC.13, 20-Aug-79 02:45:20, EDIT BY GILBERT
;Re-implement BUGSTF and HIDSYM conditionals after edit 12.
;<4.MONITOR>POSTLD.MAC.12, 17-Aug-79 03:40:47, EDIT BY GILBERT
;TCO 4.2408: MAKE TYPEOUT FORMAT EASIER TO READ, ADD VARIOUS CHECKS TO
;SEE IF THE MONITOR WILL RUN, DISPLAY ALL PSECTS INCLUDING POSTCD.
;<4.MONITOR>POSTLD.MAC.11, 15-Jun-79 01:38:41, EDIT BY GILBERT
;REMOVE CODE TO GET AROUND MACRO BUG WHICH IS NOW FIXED.
;<4.MONITOR>POSTLD.MAC.10, 9-Apr-79 14:29:33, EDIT BY DBELL
;TCO 4.2227 - FIX SSEG MACRO WHICH SOMETIMES FAILED TO SAVE A PAGE.
;<4.MONITOR>POSTLD.MAC.9, 6-Mar-79 09:43:00, EDIT BY KONEN
;UPDATE COPYRIGHT FOR RELEASE 4
;<4.MONITOR>POSTLD.MAC.8, 18-Jan-79 13:35:19, EDIT BY GILBERT
;REALLY FIX BUG IF SYMBOL TABLE STARTS ON SAME PAGE THAT INCOD ENDS.
;<4.MONITOR>POSTLD.MAC.6, 15-Jan-79 07:46:33, EDIT BY GILBERT
;More TCO 4.1255:
; Re-arrange the PSECTs.
; Fix bug if symbol table starts in same page that INCOD ends.
;<4.MONITOR>POSTLD.MAC.5, 8-Jan-79 06:56:36, EDIT BY GILBERT
;TCO 4.2155 - Implement hidden symbol tables:
; Make PSECT end names uniform.
; Remove all symbol table processing code.
; Clean up PSECT overlap typeout and teach about new PSECT order.
;<4.MONITOR>POSTLD.MAC.4, 22-Jun-78 16:25:36, EDIT BY MILLER
;ADD AN "XPUNGE"
;<1BOSACK>POSTLD.MAC.1001, 15-Jun-78 15:36:36, EDIT BY BOSACK
;<1BOSACK>POSTLD.MAC.1000, 1-Jun-78 21:06:27, EDIT BY BOSACK
;CHANGES FOR MORE PSECTS
;<4.MONITOR>POSTLD.MAC.2, 14-Jun-78 06:41:41, Edit by JBORCHEK
;ADD BUGSTF FLAG TO PUT BUGSTRINGS IN MONITOR VAS
;<3A.MONITOR>POSTLD.MAC.7, 7-Mar-78 18:54:08, EDIT BY BOSACK
;<3A.MONITOR>POSTLD.MAC.6, 7-Mar-78 18:34:40, EDIT BY BOSACK
;<3A.MONITOR>POSTLD.MAC.5, 7-Mar-78 18:33:50, EDIT BY BOSACK
;OUTPUT TYPE OF BUGXXX IN BUGXXX LISTING
;<3A.MONITOR>POSTLD.MAC.4, 23-Jan-78 20:56:36, EDIT BY BOSACK
;<3A.MONITOR>POSTLD.MAC.3, 23-Jan-78 20:36:30, EDIT BY BOSACK
;MOVE BUGSTRINGS/POINTERS TO OVERLAP SWP PAGE VARS
;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED
; OR COPIED IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE.
;
;COPYRIGHT (C) 1976,1977,1978,1979,1980,1981,1982 BY DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
SEARCH PROLOG
TTITLE(POSTLD,, - POST-LOADING ONE-SHOT INIT)
EXT <NBUGP> ;NUMBER OF BUGPOINTERS
NPDL==100 ;SIZE OF LOCAL PDL
DEFINE TSTR ($MSG)<
HRROI A,[ASCIZ \$MSG\]
PSOUT>
DEFINE JSERR <
JSP 2,JSEX0>
;GET FINAL VALUE OF LOAD PC'S
DEFINE PEND(PSECT),<
IRP PSECT,<
.PSECT PSECT
PSECT'Z=:.-1
PSECT'L==:PSECT'Z_-PGSFT
.ENDPS PSECT
>
>
;ALLOCATE FFF AS THE LAST THING, SO IT'LL GET THE REST OF THE PAGE
;WHERE PSECT RSDAT IS DEFINED.
;THIS IS THE PATCH SPACE FOR THE RESIDENT MONITOR.
RSI FFF2,<>,0
RSI FFF1,<>,0
RSI FFF,<>,400
PEND <RSCOD,INCOD,RSDAT,PPVAR,RSVAR,SYVAR,PSVAR>
PEND <JSVAR,NPVAR,NRCOD,BGSTR,BGPTR,NRVAR>
;LOAD POSTLD WHERE IT WILL GET OVERLAYED BY RUNTIME STORAGE
.ENDPS RSCOD
.PSECT POSTCD
;START HERE AT COMPLETION OF LOADING
SYSG0: MOVE P,[IOWD NPDL,PDL]
SETZM T3 ;ASSUME MON: IS KNOWN
HRROI T1,[ASCIZ /MON/]
STDEV ;SEE IF MON: IS DEFINED
ADDI T3,1 ;NOT
MOVX T1,GJ%OLD!GJ%SHT ;GET THE SOURCE FILE
HRRO T2,[[ASCIZ /MON:VERSIO.MAC/]
[ASCIZ /VERSIO.MAC/]](T3)
GTJFN ;GET HANDLE
ERJMP [HRROI T1,[ASCIZ /
%VERSIO.MAC not found. Current time and date used
/]
PSOUT
GTAD ;GET TIME AND DATE
JRST SYSG00] ;AND PROCEED
MOVEI T2,T2 ;WHERE TO PUT DATE AND TIME WORD
MOVEI T3,1 ;ONE WORD IS ALL WE NEED
RFTAD ;GET TIME AND DATE WORD
RLJFN ;RELEASE JFN OF FILE
NOP
MOVE T1,T2 ;STASH WORD IN T1
SYSG00: MOVEM T1,SYSTAD ;REMEMBER IT IN SWPMON
HLRE T1,.JBSYM ;GET LENGTH OF SYMBOL TABLE
MOVN T1,T1 ;MAKE POSITIVE
MOVEI T2,SYVARZ ;FIRST WORD OF RUNTIME TABLE (-1)
ADD T2,T1 ;LAST WORD
MOVEM T2,RSTLU ;SAVE FOR PRINTOUT
ADD T1,.JBSYM ;ADD IN BEGINNING OF TABLE
SUBI T1,1 ;CONVERT FIRST FREE TO LAST USED
HRRZM T1,SYMLU ;REMEMBER IT
SKIPL T1,.JBUSY ;FIRST USED IF UNDEFINED SYMBOLS
HRRZ T1,.JBSYM ;GET FIRST USED
HRRZM T1,SYMFU ;REMEMBER IT TOO
SETZM FPAGES ;NO FREE PAGES YET
HRROI T1,[ASCIZ/
/]
PSOUT ;SKIP A LINE
HRROI T1,TSVN ;TYPE SYSTEM NAME AND VERSION #
PSOUT
HRROI T1,[ASCIZ /
Monitor address space:
Psect Start End Length Free Limit
/]
PSOUT
;DEFINE LOCAL MACRO FOR SPACE PRINTOUTS
DEFINE PRPSC($PSECT,$NEXT,$BEGA,$ENDA,$NEXTA,$LIMIT)<
XLIST
HRROI T1,[ASCIZ \
$PSECT\]
PSOUT%
..N==0
IRPC <$PSECT>,<..N==..N+1>
MOVEI T1," "
REPEAT <^D16-..N>,<PBOUT%>
IFNB <$BEGA>,<MOVE P1,$BEGA>
IFB <$BEGA>,<MOVEI P1,$PSECT>
MOVE T2,P1
CALL OCTOUC
IFNB <$ENDA>,<MOVE T2,$ENDA>
IFB <$ENDA>,<MOVEI T2,$PSECT'Z>
CALL OCTOUC
SUBM T2,P1
EXCH T2,P1
ADDI T2,1
CALL OCTOUC
IFNB <$NEXTA>,<MOVE T2,$NEXTA>
IFB <$NEXTA>,<MOVEI T2,$NEXT>
SUB T2,P1
SUBI T2,1
CALL OCTOUC
HRROI T1,[ASCIZ \ \]
PSOUT%
IFNB <$LIMIT>,<HRROI T1,[ASCIZ \$LIMIT\]
PSOUT%>
HRROI T1,[ASCIZ \ <= Overflow\] ;>
SKIPGE T2
PSOUT%
ASH T2,-9
ADDM T2,FPAGES
LIST
>
;THIS CODE NEEDS SOME WORK (FREE PAGE ACCOUNTING, CASES WHERE THE UPPER
;BOUND OF A PSECT COULD BE EITHER OF TWO OTHER OVERLAPPING PSECTS) IF
;BUGSTF=0.
PRPSC (RSCOD,INCOD)
PRPSC (INCOD,RSDAT)
PRPSC (RSDAT,PPVAR)
PRPSC (PPVAR,RSVAR)
PRPSC (RSVAR,SYVAR)
SKIPN HIDSYF ;HIDING SYMBOLS?
JRST PRPSC1 ;NO, DIFFERENT MESSAGE
PRPSC (SYVAR,PSVAR)
JRST PRPSC2 ;RE-JOIN MAIN FLOW
PRPSC1: PRPSC (SYVAR,<Loaded symbols>,,,SYMFU)
PRPSC (<Loaded symbols>,PSVAR,SYMFU,SYMLU)
PRPSC2: PRPSC (PSVAR,JSVAR)
PRPSC (JSVAR,NRVAR)
PRPSC (NRVAR,NRCOD)
SKIPN BUGTP ;BUGSTRINGS IN MONITOR VAS?
JRST PRPSC3 ;NO, DIFFERENT MESSAGE
PRPSC (NRCOD,BGSTR)
PRPSC (BGSTR,BGPTR)
PRPSC (BGPTR,POSTCD)
JRST PRPSC4 ;RE-JOIN MAIN FLOW
PRPSC3: PRPSC (NRCOD,POSTCD)
PRPSC4: PRPSC (POSTCD,NPVAR,,[PSTEND])
PRPSC (NPVAR,<Section 0 end>,,,[1000000],777777)
TSTR <
>
PUSH P,FPAGES
SKIPN HIDSYF ;NEED MORE INFO?
JRST PRPSC5 ;NO, SKIP THIS
PRPSC (<Loaded symbols >,,SYMFU,SYMLU,[NRCOD],NRCOD)
PRPSC (<Runtime symbols>,,[SYVARZ+1],RSTLU,[NPVAR],NPVAR)
TSTR <
The symbols will be moved to their runtime area right after
the SYVAR psect by STG early in the monitor's initialization.
>
; ..
PRPSC5: SKIPE BUGTP ;NEED MORE INFO?
JRST PRPSC6 ;NO, DONE
PRPSC (BGSTR,BGPTR)
PRPSC (BGPTR,POSTCD,,,,POSTCD)
TSTR <
>
PRPSC6: POP P,FPAGES
TSTR <
There are >
MOVE T2,FPAGES
CALL OCTOUT
TSTR < (octal) free pages, not counting symbols.
>
HRROI T1,[
ASCIZ \% Runtime symbols must end by 360000 in order to run on a 128K system.
\]
MOVEI T2,360000-1 ;IN ORDER TO LEAVE 20P FOR BOOT
SUB T2,RSTLU
SKIPGE T2
PSOUT%
HRROI T1,[
ASCIZ \% End of resident free pool (RESFRZ) overlaps BOOT area at 760000.
\]
MOVEI T2,RESFRZ ;LAST 20P OF VAS RESERVED FOR BOOT
CAIL T2,760000 ;RESFRP SHOULD REALLY BE IN ITS OWN PSECT
PSOUT%
;SET ENTRY VECTOR AND START ADDRESS
MOVEI 1,.FHSLF
MOVE 2,[JRST EVGO] ;MAIN START LOCATION
HRRM 2,.JBSA
SEVEC
; ..
;DUMP BUG STRINGS TO FILE, SETUP BUGTABLE IN SWPMON
BUGSR3: MOVX T1,GJ%FOU+GJ%SHT
HRROI 2,[ASCIZ /BUGSTRINGS.TXT/]
GTJFN
JSERR
PUSH P,T1 ;SAVE JFN
MOVE T2,T1 ;JFN IN T2
TSTR <Writing sorted bug list to file >
MOVEI T1,.PRIOU ;TO TERMINAL
POP P,T2 ;FILE DESCRIBED BY THIS JFN
SETZ T3, ;USUAL TEXT
JFNS ;TYPE THE FILESPEC
MOVE T1,T2 ;JFN TO T1 FOR OPENF
MOVE 2,[7B5+1B20]
OPENF
JSERR
SETZ 3,
HRROI 2,TSVN ;SYSTEM VERSION TEXT
SOUT
HRROI 2,[ASCIZ /
BUGHLT and BUGCHK names and descriptions
/]
SOUT
;SORT THE BUG TABLE BY SIXBIT NAME
MOVSI 7,-NBUGP
JUMPE 7,BUGEND ;NO BUGPOINTERS LOADED?
BUGSR4: MOVSI 5,-NBUGP(7) ;SCAN FROM HERE TO END
HRRI 5,0(7)
HRLOI 3,377777 ;INITIAL MINIMUM
BUGSR1: HLRZ 6,BGPTR(5) ;BUG ADDRESS
JUMPE 6,BUGSR2 ;IGNORE ZEROS
BUGSR5: MOVE 2,1(6) ;GET NEXT WORD FROM BLOCK
TLNN 2,770000 ;FOUND THE SIXBIT NAME?
AOJA 6,BUGSR5 ;NO, LOOP BACK UNTIL FOUND
TXC 2,1B0 ;SO COMPARE WORKS ON SIXBIT NAME
CAML 2,3 ;MIN SO FAR?
JRST BUGSR2 ;NO
MOVE 3,2 ;YES, REMEMBER THIS VALUE
MOVEI 4,0(5) ;AND LOCATION
BUGSR2: AOBJN 5,BUGSR1
CAMN 3,[377777,,777777] ;FOUND A MIN?
JRST BUGD ;NO, NOTHING BUT ZEROS LEFT
MOVE 6,BGPTR(4) ;INTERCHANGE MIN WITH TOP OF TABLE
EXCH 6,BGPTR(7)
MOVEM 6,BGPTR(4)
AOBJN 7,BUGSR4 ;(ALWAYS JUMP)
;PRINT STRINGS TO BUGSTRINGS.TXT
BUGD: MOVSI 7,-NBUGP ;LOOP OVER ALL OF THE MESSAGES
BUGD1: MOVE 6,BGPTR(7) ;TABLE ENTRY
HLRZ 2,6 ;ADDRESS
BUGD2: MOVE 3,1(2) ;GET NEXT WORD FROM BLOCK
TLNN 3,770000 ;FOUND THE SIXBIT NAME YET?
AOJA 2,BUGD2 ;NO, LOOP UNTIL IT IS FOUND
BUGD4: SETZ 2, ;NOW TYPE OUT NAME
LSHC 2,6 ;GET NEXT CHARACTER
ADDI 2," " ;MAKE IT ASCII
BOUT ;OUTPUT IT
JUMPN 3,BUGD4 ;LOOP UNTIL NAME IS FINISHED
HLRZ 3,6 ;GET ADDRESS
HRRZ 3,(3) ;GET BUGXXX ADDRESS
HRROI 2,[ASCIZ / [UNK] /]
CAIN 3,BUGHLT ;BUGHLT?
HRROI 2,[ASCIZ / [HLT] /]
CAIN 3,BGCCHK ;BUGCHK
HRROI 2,[ASCIZ / [CHK] /]
CAIN 3,BGCINF ;BUGINF?
HRROI 2,[ASCIZ / [INF] /]
MOVEI 3,0
SOUT ;OUTPUT DESCRIPTION
HRROI 2,0(6)
SETZ 3,
SOUT ;PRINT THE STRING
HRROI 2,[ASCIZ /
/]
SOUT
AOBJN 7,BUGD1
CLOSF ;CLOSE BUGSTRINGS.TXT
JFCL
;CREATE THE EXE FILE CONTAINING THE MONITOR
BUGEND: MOVX A,GJ%FOU+GJ%SHT ;GET NEXT VERSION OF MONITOR FILE
HRROI B,MONSNM ;GET NAME TO SAVE AS
GTJFN
JSERR
PUSH P,A
TSTR <
Saving monitor as >
MOVEI A,101
HRRZ B,0(P)
SETZ C,
JFNS
MOVE A,SYMFU ;BEGINNING OF SYMBOL TABLE
MOVEI B,INCODZ ;END OF INIT CODE
IORI B,777 ;END OF THAT PAGE
CAMLE A,B ;SYMS ON SAME PAGE AS INCOD?
JRST BUGEN2 ;NO, PROCEED
AOS A,B ;YES, START AT FIRST PAGE AFTER INIT CODE
MOVEM A,SYMFU ;STORE FOR SSEG MACRO BELOW
BUGEN2: POP P,A
HRLI A,.FHSLF ;CONSTRUCT FORKH,,JFN FOR SSAVE
MOVEI B,1(P) ;BUILD SSAVE LIST ON STACK
DEFINE SSEG($START,$END)<
XLIST
..NSG==..NSG+1
HRRZ C,$END ;;GET LAST ADDRESS OF A REGION
HRRZ D,$START ;;AND THE FIRST ADDRESS OF THE REGION
LSH C,-PGSFT ;;GET ENDING PAGE NUMBER
LSH D,-PGSFT ;;AND BEGINNING PAGE NUMBER
SUB C,D ;;SEE HOW MANY PAGES BETWEEN THEM
MOVNI C,1(C) ;;GET NEGATIVE OF NUMBER OF PAGES IN REGION
HRL D,C ;;PUT COUNT IN LEFT HALF
TRO D,1B18!1B20!1B22 ;;SET FLAGS
PUSH P,D ;;STORE THE WORD
LIST
>
;USE THE ABOVE MACRO TO GENERATE AN ARGUMENT LIST ON THE STACK
..NSG==0
SSEG([EXP 0],[EXP RSCODZ])
SSEG([EXP INCOD],[EXP INCODZ])
SSEG([EXP RSDAT],[EXP RSDATZ])
SSEG(SYMFU,SYMLU)
SKIPE BUGTP ;WANT THE BUGSTRINGS?
JRST SAVBUG ;YES, GO SAVE THEM
SSEG([EXP NRCOD],[EXP NRCODZ])
JRST SAVEND ;DONE
SAVBUG: SSEG([EXP NRCOD],[EXP BGPTRZ])
SAVEND: PUSH P,[0] ;TERMINATE LIST WITH 0
SETZ C,
SSAVE
SUB P,[XWD ..NSG+1,..NSG+1] ;FLUSH ARG LIST FROM STACK
TSTR <
> ;NOTE SUCCESSFUL COMPLETION
;ALL USEFUL STUFF HAS BEEN WRITTEN, FLUSH THIS ADR SPACE
SETO T1,
MOVE T2,[.FHSLF,,1] ;FLUSH PAGES 1-777
MOVE T3,[1B0+777]
MOVE 16,[CLRPRG,,5] ;THIS CODE WILL VANISH IN THE CLEARING,
BLT 16,16 ;SO PUT THE CLEAR LOOP IN THE AC'S
JRST 5
CLRPRG: PHASE 5
PMAP
HALTF
JRST .-1
DEPHASE
;JSYS ERROR
JSEX0: HRROI 1,[ASCIZ /
?JSYS ERROR: /]
PSOUT
MOVEI 1,101 ;PRINT ERROR STRING ON PRIMARY OUTPUT,
HRLOI 2,400000 ; THIS FORK ,, LAST ERROR
SETZ 3,
ERSTR
JFCL
JFCL
HRROI 1,[ASCIZ /
/]
PSOUT
HALTF
OCTOUT: SKIPA T3,[FLD(8,NO%RDX)] ;FREE FORMAT
OCTOUC: MOVX 3,NO%LFL+FLD(8,NO%COL)+FLD(8,NO%RDX) ;8 COLUMNS
MOVEI T1,.PRIOU ;PRIMARY OUTPUT
NOUT
JSERR
RET
SYMFU: BLOCK 1 ;FIRST WORD OF SYMBOL TABLE
SYMLU: BLOCK 1 ;LAST WORD OF SYMBOL TABLE
RSTLU: BLOCK 1 ;LAST WORD OF RUNTIME SYMBOL TABLE
FPAGES: BLOCK 1 ;FREE PAGE COUNT
PDL: BLOCK NPDL
TNXEND
PSTEND: END SYSG0