Trailing-Edge
-
PDP-10 Archives
-
decuslib20-03
-
decus/20-0078/comp/dm.mac
There are 2 other files named dm.mac in the archive. Click here to see a list.
;NAME: DM
;====
;AUTHOR: KIM WALDEN
;======
;PURPOSE: TO UPDATE DIAGNOSTICS MESSAGES TABLE, ZDM
;=======
;FUNCTION: DM CONSTRUCTS A NEW ENTRY IN ZDM. IT INSERTS
;======== THE ERROR NUMBER, FIRST AND LAST LINE NUMBER,
; AND WHEN APPLICABLE, ASCII TEXT OR INDICES
; TO SYMBOL TABLE/CONTROL WORD TABLES, WHEN
; SUCH ENTITIES ARE TO BE EDITED INTO THE ERROR
; MESSAGE. IT ALSO INSERTS THE SEMICOLON COUNT.
;ENVIRONMENT: DM IS CALLED VIA UUO:S
;=========== ERR,ERRI1,ERRI2,ERRI3,ERRT IN THE FOLLOWING MANNER:
; <UUO> TYPE,ERRNO
; WHERE TYPE IS 0 FOR TYPE E
; 1 FOR TYPE T
; 2 FOR TYPE W
; WHEN UUO IS ERRT, THEN THE ASCII TEXT IS IN REG X1
; WHEN UUO IS ERRI1,ERRI2,ERRI3 RESP. THEN THE INDICES ARE
; IN REGS X1,X2,X3 RESP.
; UUO ERRLI MEANS THAT LAST LINE NUMBER IS SUPPLIED IN
; YELIN2, AND IS TO BE INSERTED IN PROPER FIELDS OF
; ALL PREVIOUS ZDM ENTRYS THAT HAS NOT YET RECEIVED
; SUCH A NUMBER. THESE RECORDS HAVE BEEN CHAINED, AND
; THE INDEX TO THE LAST CHAIN MEMBER IS IN YECHDM.
; IF THE CALL IS DIRECTLY FOLLOWED BY A WORD,
; CONTAINING A NOP IN THE OP CODE FIELD, AND
; AN ADDRESS TO AN ASCIZ STRING IN THE ADDRESS
; FIELD, THEN DM WILL PRINT THIS STRING ON THE
; TTY, IF IN DEBUG MODE
IF2,<PRINTX VERSION: 8 DATE: 10-MAR-75/RK>
SALL
SEARCH SIMMAC,SIMMC3 ;[104]
CTITLE DM
MACINIT
P3INIT ;[104]
TWOSEG
RELOC 400000
;FIELD DEFINITIONS:
;=================
DF ZUUOOP,40,9,8
DF ZUUOTP,40,4,12
DF ZUUONO,40,18,35
;ASSEMBLY TIME VARIABLES:
;=======================
EXTERN YSWITCH
EXTERN .JBOPC
EXTERN YDMEND,YELIN1,YELIN2,YESEM,YWARCT,YERRCT,YECHDM ;[104] ZDM removed
ENTRY DM
;[31006] Remove XPAS from RENAME and SAVE
RNAME <XENTRY,XPT,XW,XETYP>,<X4,X5,X6,X7>
PROC
DM: IFON YSWTRM
RETURN
SAVE <XENTRY,XPT,XW,XETYP>
;load UUO type: ERRT,,ERRI3,ERRI2,ERRI1,ERR,ERRLI
LF XENTRY,ZUUOOP
;if ERRLI then jump
CAIN XENTRY,QERRLI
GOTO ERRLI
;load pointer to first free entry in ZDM
L XPT,YDMEND
LF XETYP,ZUUOTP
CAIN XETYP,QW
GOTO WAR
CAIN XETYP,QT
GOTO TER
;type was ERROR
ERR: AOS YERRCT
CAIGE XPT,QLDM
GOTO ADV
;table full
L YERRCT
CAILE QLDM/3
GOTO OUT
;Warning message exists in ZDM. Replace it with current message
;[31006] Replace the last WARNING in ZDM instead of the first.
;Make XPT point to first WARNING record in ZDM (or last record)
;[301006] Do not replace the 10 first messages.
SCAN:
LI XPT,QLDM
LOOP SUBI XPT,3
LF ,ZDMEN(XPT,ZDM) ;[104]
;[31006] Correct the check on type WARNING.
IF
CAIGE X0,Q1.ERR
GOTO TRUE ;W1
CAIGE X0,Q2.WAR
GOTO FALSE
CAIGE X0,Q2.ERR
GOTO TRUE ;W2
CAIGE X0,Q3.WAR
GOTO FALSE
CAIL X0,Q3.ERR ;W3
THEN
GOTO FILL ;REPLACE
FI
AS CAIL XPT,^D10*3 ;DO NOT REPLACE THE 10 FIRST
GOTO TRUE
LI XPT,QLDM-3 ;Let XPT point to the last rec.
SA
;insert information of message in ZDM
;set fields of new entry
FILL: LF ,ZUUONO
SF ,ZDMEN(XPT,ZDM) ;[104]
L YELIN1
SF ,ZDML1(XPT,ZDM) ;[104]
L YESEM
SF ,ZDMSM(XPT,ZDM) ;[104]
IF SKIPN YELIN2
GOTO FALSE
THEN ;line 2 present
L YELIN2
SF ,ZDML2(XPT,ZDM) ;[104]
ELSE
SETZM YECHDM
HLLOS ZDM+1(XPT) ;line 2 field = -1
FI
GOTO FIN-QUUO(XENTRY)
FIN: SF X1,ZDMTX(XPT,ZDM) ;store ASCII text ;[104]
GOTO OUT
SF X3,ZDME3(XPT,ZDM) ;store index 3 ;[104]
SF X2,ZDME2(XPT,ZDM) ;store index 2 ;[104]
SF X1,ZDME1(XPT,ZDM) ;store index 1 ;[104]
OUT: RETURN
;type was WARNING
WAR: AOS YWARCT
IFOFF YSWW
GOTO OUT
CAIL XPT,QLDM ;table full?
GOTO OUT
;table not full
ADV: LI 3
ADDM YDMEND
GOTO FILL
;type was TERMINATION
TER: SETON YSWTRM
CAIL XPT,QLDM ;table full?
GOTO SCAN
GOTO ADV
ERRLI:
;insert last line number
SKIPGE YECHDM
GOTO OUT
SETZ XPT,
L YELIN2
WHILE LFE XW,ZDML2(XPT,ZDM) ;[104]
SKIPGE XW
SF ,ZDML2(XPT,ZDM) ;[104]
DO ADDI XPT,3
CAIGE XPT,QLDM
OD
GOTO OUT
EPROC
LIT
END