;;;MODIFICATION HISTORY ;;; ;;; 15 NOV 75 OBTAINED FROM DEC (KLDCP REV 7) ;;; 15 NOV 75 CONVERTED TO PALX FORMAT ;;; .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 THROUGH 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 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 TST DEVTYP BEQ $CDDT1 ;DECTAPE MOV #256.,BUFSIZ MOV #FILDSB,R0 RPWRFL ;WRITE FILE DATA BLOCK BCS $CDDVR ;ERROR POP 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 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 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 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