perm filename CDMP11.DEC[KL,SYS] blob
sn#209163 filedate 1976-04-03 generic text, type C, neo UTF8
COMMENT ā VALID 00010 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 .SBTTL PDP-11 CORE DUMP, 4-SEPT-75
C00003 00003 PNTCI
C00004 00004 $CDFID: MOVB (R2)+,R0
C00005 00005 $CORDMP:TTPINI INITIALIZE POINTERS
C00007 00006 $CDDON: PNTCI FINISH LINE WITH CR
C00009 00007 $CDA11: TST R0 THIS WORD ALL ZEROS ?
C00011 00008 CORE DUMP TO DEVICE ROUTINES
C00013 00009 $CDDTA: TST FLOPPY
C00015 00010 $CDDTD: CLR DVBUF CLEAR LINK, THIS BLOCK EOF
C00017 ENDMK
Cā;
.SBTTL PDP-11 CORE DUMP, 4-SEPT-75
;CORE IMAGE CONVERTED TO ".A11" FORMAT
;CONSOLE COMMAND: "CD FILE START,END"
$CD: TTITRM
NAMEXT ;SETUP FILE NAME.EXT
TST R0 ;ANY EXT ?
BNE 1$ ;YES
MOV #"A1,EXTBF ;NO, USE ".A11"
MOV #"1 ,EXTBF+2
1$: TTOCTE ;INPUT DUMP START ADDRESS
MOV R0,R5
TTCOCT ;INPUT DUMP END ADDRESS
INC R0
BIC #1,R0
SUB R5,R0 ;COMPUTE DUMP WORD COUNT
BPL 99$
JMP $CDERR ;ADDRESSES BACKWARDS
99$: SR R0,1
INC R0
MOV R0,R4
TTBTRM ;VERIFY LINE TERMINATOR
PNTRST ;RESET OUTPUT POINTERS
PNTCI
';
MOV #6,R1
MOV #NAMBF,R2
JSR PC,$CDFID ;INSERT FILE NAME
PNTCI
'.
MOV #3,R1
MOV #EXTBF,R2
JSR PC,$CDFID ;INSERT FILE EXTENSION
TTBACK
TTICHR
CMPB #' ,R0
BEQ 3$
CMPB #' ,R0
BEQ 3$
2$: TST DEVTYP
BMI $CDACT ;ACT10
BNE $CDRP ;RP04
JMP $CDDTA ;DECTAPE
3$: PNTCI
"
4$: TTICHR
BCS $CDERR
CMPB #CR,R0
BEQ 2$
PNTCHR
BR 4$
$CDFID: MOVB (R2)+,R0
CMPB #' ,R0
BEQ 1$
PNTCHR
DEC R1
BNE $CDFID
1$: RTS PC
$CDRP: RPFILE ;FIND AND SETUP FILE
BCC 1$
JMP $NONXF
1$: MOV #DVBUF,CDADR ;SETUP BUFFER STORE ADDRESS
BR $CDDON
$CDACT: COMENQ
MOV #$INBUF,R0
COMCMD ;TRANSMIT COMMAND TO ACT10
CMPB #'A,R0
BNE $CDERR ;ERROR
BR $CDDON
$CORDMP:TTPINI ;INITIALIZE POINTERS
PNTCI ;LINE STARTS WITH "E" & "SPACE"
"E
MOV #16.,R3 ;SETUP ASCIIZED WORD COUNT
CMP R3,R4 ;THAT MANY WORDS LEFT IN DUMP ?
BLOS 1$
MOV R4,R3 ;NO, USE REMAINDER
1$: MOV R3,TEMP ;INIT CHECKSUM
MOV R3,R0 ;OUTPUT WORD COUNT
BIS #100,R0 ;WILL ALWAYS BE 1 THRU 16
PNTCHR
PCOMMA
MOV R5,R0 ;OUTPUT BLOCK ADDRESS
ADD R5,TEMP ;CHECKSUM
SUB R3,R4 ;DECREMENT DUMP WORD COUNT
JSR PC,$CDA11 ;ASCIIZE
PCOMMA
2$: MOV (R5)+,R0 ;OUTPUT DATA WORD
ADD R0,TEMP ;CHECKSUM
JSR PC,$CDA11 ;ASCIIZE
PCOMMA
DEC R3 ;DONE THIS BLOCKS DATA WORDS ?
BNE 2$ ;NOT YET
MOV TEMP,R0 ;OUTPUT NEGATED CHECKSUM
NEG R0
JSR PC,$CDA11 ;ASCIIZE
$CDDON: PNTCI ;FINISH LINE WITH CR
CR
TST DEVTYP
BMI $CDAC1 ;ACT10
JMP $CDDEV ;DEVICE
$CDAC1: MOV #3,R1 ;RETRY 3 TIMES
INC MSGNBR ;COUNT MESSAGE
$CDXFR: MOV #$OUTBF,R0
MOV R0,$OUTPT
COMCMD ;TRANSMIT DATA BLOCK
CMPB #'A,R0 ;ACKNOWLEDGED ?
BNE $CDTRY ;ERROR, RETRY
$CDCON: TST R4 ;DUMP COUNT POSITIVE = WORDS LEFT
BMI 1$ ;DUMP COUNT NEGATIVE = ALL DONE
BNE $CORDMP ;DUMP COUNT ZERO = DO "EOF" BLOCK
COM R4 ;TRANSMIT "END OF FILE" BLOCK
PNTCI ;EOF BLOCK = "E ,,"
"E ;WORD COUNT = 0
PNTCI ;START ADDRESS = 0
",, ; "NON-STARTABLE" ON LOAD
BR $CDDON
1$: TST DEVTYP
BMI 2$
JMP $CDDVD ;DEVICE
2$: COMEOT ;ALL DONE, FINISH FILE WITH EOT
JMP $CONSL ;WHEW, BACK TO CONSOLE
$CDTRY: DEC R1 ;RETRY ?
BNE $CDXFR ;YES, RESEND MESSAGE
$CDERR: PMSG <?CORDMP ERR>
JMP $CNTLC
$CDA11: TST R0 ;THIS WORD ALL ZEROS ?
BEQ 3$ ;YES, DON'T OUTPUT
CLR R1
MOV R0,R2 ;SETUP HI-ORDER OIT
SWAB R0
BIC #177400,R0
SHIFTR
4
TST R0 ;OIT ZERO ?
BEQ 1$ ;YES, SUPPRESS
JSR PC,$CDP11 ;ASCIIZE AND PUT IN BUFFER
COM R1
1$: MOV R2,R0 ;SETUP MIDDLE OIT
SHIFTR
6
BIC #177700,R0
TST R1 ;HI-ORDER OIT NON-ZERO ?
BNE 11$ ;YES
TST R0 ;ZERO, MIDDLE OIT ZERO ALSO ?
BEQ 2$ ;YES, SUPPRESS
11$: JSR PC,$CDP11 ;ASCIIZE AND PUT IN BUFFER
2$: MOV R2,R0 ;SETUP LOW-ORDER OIT
BIC #177700,R0
JSR PC,$CDP11 ;ASCIIZE AND PUT IN BUFFER
3$: RTS PC
$CDP11: CMP R0,#74 ;LEAVE 75, 76, 77 ALONE
BGT 1$
BIS #100,R0 ;SET BIT 7 FOR ASCIIZE
1$: PNTCHR ;PUT IN BUFFER
RTS PC
;CORE DUMP TO DEVICE ROUTINES
$CDDEV:
$CDRP1: MOV $OUTPT,R0
MOVB #LF,(R0)+ ;FINISH LINE WITH LF
CLRB (R0)
MOV CDADR,R0 ;SETUP BUFFER STORE ADDRESS
MOV #$OUTBF,R1 ;SETUP PICKUP POINTER
MOV R1,$OUTPT
$CDDT2=.
1$: CMP #DVBUF+<256.*2>,R0
BEQ 2$ ;FILLED THIS DATA BLOCK
MOVB (R1)+,(R0)+ ;PUT DATA IN DEVICE BUFFER
BNE 1$ ;NULL, END OF LINE
MOV R0,CDADR ;RESAVE BUFFER POINTER
JMP $CDCON ;CONTINUE CORE DUMP
2$: PUSH <R0,R1>
TST DEVTYP
BEQ $CDDT1 ;DECTAPE
MOV #256.,BUFSIZ
MOV #FILDSB,R0
RPWRFL ;WRITE FILE DATA BLOCK
BCS $CDDVR ;ERROR
POP <R1,R0>
MOV #DVBUF,R0
MOV R0,CDADR
BR 1$
$CDDTA: TST FLOPPY
BEQ 10$
RXFILE ;FIND AND SETUP FLOPPY FILE
BR 11$
10$: DTAFILE ;FIND AND SETUP DECTAPE FILE
11$: BCC 1$
JMP $NONXF
1$: JSR PC,$$CDTA ;SETUP FIRST BLOCK
JMP $CDDON
$$CDTA: TST FLOPPY
BEQ 10$
RXRDFL ;READ FLOPPY BLOCK
BR 11$
10$: DTRDFL ;READ DECTAPE BLOCK
11$: BCS 2$ ;EOF
MOV #DVBUF+2,R0 ;CLEAR DATA PART OF BUFFER
1$: CLR (R0)+
CMP #DVBUF+<256.*2>,R0
BNE 1$
MOV #DVBUF+2,CDADR
RTS PC
2$: PMSG <?INSUFFICIENT ROOM>
JMP $CNTLC
$CDDT1: TST FLOPPY
BEQ 10$
RXWTFL ;WRITE DATA BLOCK BACK TO FLOPPY
BR 11$
10$: DTWTFL ;WRITE DATA BLOCK BACK TO DECTAPE
11$: BCS $CDDTR ;ERROR
JSR PC,$$CDTA ;READ & SETUP NEXT
POP <R1,R0>
MOV CDADR,R0 ;BUFFER ADDRESS TO R0
BR $CDDT2
$CDDTD: CLR DVBUF ;CLEAR LINK, THIS BLOCK EOF
TST FLOPPY
BEQ 10$
RXWTFL ;WRITE LAST FLOPPY BLOCK
BR 11$
10$: DTWTFL ;WRITE LAST DECTAPE BLOCK
11$: BCS $CDDTR ;ERROR
JMP $CONSL ;ALL DONE
$CDDTR: PMSG <?WRITE ERROR>
JMP $CNTLC
;DEVICE FINISH CORE DUMP
$CDDVD: BNE $CDRP2
BR $CDDTD
$CDRP2: MOV CDADR,R0
1$: CLRB (R0)+
CMP #DVBUF+<256.*2>,R0
BNE 1$
2$: MOV CDADR,R0 ;COMPUTE WORD COUNT
SUB #DVBUF,R0
INC R0
BIC #1,R0
SR R0,1
MOV R0,BUFSIZ ;SET AS BUFFER SIZE
COM RPEOF ;WRITE END-OF-FILE
MOV #FILDSB,R0
RPWRFL ;WRITE LAST FILE DATA BLOCK
BCS $CDDVR ;ERROR
JMP $CONSL ;WHEW !, ALL DONE
$CDDVR: RPERROR