ASMB,A,L,C HED TDMP - STANDALONE DUMP TO TAPE ORG 2 RUN PROGRAM JMP 3,I BY SETTING P REG DEF TDMP TO 2 * * ORG 77377B * * !TDMP IS A STANDALONE PROGRAM THAT DUMPS A CRASHED * SYSTEM TO MAG TAPE. * * THE PROGRAM DUMPS 48K OF MEMORY AND THE 4 SYSTEM MAPS, FOLLOWED * BY THE CONTENTS OF THE SYSTEM AND USER ADDRESS SPACES. NOTE * THAT THE DUMP ORDER IS: THE FIRST 32K, THE MAPS, THE NEXT 16K, * AND THE PAGES OF THE SYSTEM AND USER ADDRESS SPACES THAT ARE NOT * IN THE FIRST 48K. * * A HALT 41 INDICATES TAPE NOT READY. (NOT AT LOAD POINT) * A HALT 42 INDICATES A NONRECOVERABLE WRITE ERROR. * A HALT 43 INDICATES UNABLE TO WRITE END OF FILE. * BY HITTING RUN YOU CAN TRY AGAIN. * A HALT 77 INDICATES A NORMAL COMPLETION. * * TO RUN -- SET THE P REGISTER TO 2 AND THE S REGISTER TO * THE SELECT CODE OF THE MAG TAPE. * * THIS PROGRAM IS PART OF THE CRASH DUMP ANALYSIS PACKAGE * * 24999- REV 1902 * * TEF 12/23/78 * JEF 01/16/80 CHANGED TO DUMP ANOTHER 16K, SYSTEM AND USER * ADDRESS SPACES, AND "DEAD SPOT" - SEE END OF FILE * * A EQU 0 B EQU 1 S EQU 1 * * * * * SELECT CODE OF M.T. INITIALIZATION * TDMP LIA S GET THE LOWER M.T. SELECT CODE STA DC SET THE DATA CHANNEL INA STA CC SET THE COMMAND CHANNEL * * SET-UP I/O INSTRUCTIONS FOR M.T. * LDA OTA.1 IOR CC STA OTA.1 STA OTA.2 STA OTA.4 STA OTA.5 STA OTA.6 LDA STC.2 IOR DC STA STC.2 INA STA STC.4 STA STC.5 STA STC.6 LDA LIA.1 IOR CC STA LIA.1 STA LIA.2 STA LIA.4 * * INITIALIZE THE M.T. INTERFACE * MEM1 LDA CLR CLEAR THE INTERFACE OTA.1 OTA 00 LDA SLECT UNIT SELECT OTA.2 OTA 00 * * CHECK THE M.T. INITIAL STAT * LIA.2 LIA 00 AND ALL7 MASK OFF THE DENSITY BIT CPA BIT6 ONLY THE LOAD POINT BIT SHOULD BE SET JMP READY HLT 41B JMP LIA.2 ***** * * MAIN ROUTINE * ***** READY RSA SAVE STA MSTAT MEMORY STATUS REGISTER * * DUMP THE FIRST 32K OF PHYSICAL MEMORY (MAPPING OFF) * CLB STARTING ADDR STB DPAD OF DUMP PH1 JSB WRIT WRITE 128 WORDS LDB DPAD INCR ADB B200 DUMP ADDRESS STB DPAD SSB,RSS ARE WE DONE? JMP PH1 NO - DO ANOTHER RECORD * * WRITE THE MAPS TO THE TAPE * JSB MAPS * * TURN THE MAPS ON * LDA D32 CAX LOAD 32 MAP REGISTERS CLA STARTING WITH MR 0 CLB AND VALUES FROM 0 XMS DO IT SJP CONT TURN ON MAPS * * SINCE WE CAN'T DETERMINE WHERE THE DRIVER PARTITIONS * END, WE ALWAYS DUMP 48K * HERE, WE DUMP THE LATTER 16K (MAPS ON) * CONT LDB D32 SET STB CPAGE CURRENT PAGE NUMBER * * WRITE PAGES TO TAPE * PH2 JSB POUT PUT OUT PAGE ISZ CPAGE BUMP PAGE # LDB CPAGE CPB DLIM LAST PAGE? RSS JMP PH2 NO - DO MORE * * DUMP THE CONTENTS OF THE SYSTEM AND USER MAPS * DO NOT DUMP PAGES THAT ALREADY HAVE BEEN DUMPED * I.E., PAGES IN THE FIRST 48K OF PHYS MEMORY * LDA B2000 INIT STA MADDR LOOP WL LDA MADDR,I GET PAGE # AND B1777 MASK OUT READ/WRITE PROTECT STA TMP HOLD CMA,INA CHECK ADA DLIM IF PAGE HAS TO CMA,SSA,INA,SZA BE DUMPED JMP NEXT NO - PAGE WAS ALREADY DUMPED LDB TMP YES - WRITE JSB POUT PAGE NEXT ISZ MADDR BUMP PAGE LDA MADDR NUMBER CPA B2100 ARE WE ALL DONE? RSS JMP WL NO - CONTINUE * * NOW WRITE AN END OF FILE * LDA WEOF WRITE AN EOF ON M.T. OTA.4 OTA 00 STC.4 STC 00,C LIA.4 LIA 00 AND ALL7 CPA O4200 EOF + ODD # OF BYTES XFERRED JMP MEM5 JSB CKSTA JMP LIA.4 HLT 43B JMP LIA.4 MEM5 LDA REWOF REWIND TO OFF-LINE OTA.5 OTA 00 STC.5 STC 00,C HLT 77B SUCCESSFUL COMPLETION * * MAPS WRITES THE FOUR MAPS TO THE TAPE * MAPS NOP LDA BADDR SAVE SYA USA MAPS PAA PBA LDB D1 WRITE JSB MSET -SET MAP- LDB B2000 MAPS JSB WRIT JMP MAPS,I RETURN * * POUT WRITES A PAGE OF MEMORY TO THE TAPE * THE B REGISTER HAS THE PAGE NUMBER * POUT NOP JSB MSET SET MAP LDB B4000 INIT STB DPAD ADDR PCONT JSB WRIT WRITE 128 WORDS LDB DPAD INCR DUMP ADDR ADB B200 BY 128 STB DPAD CPB B6000 DONE? JMP POUT,I YES - RETURN JMP PCONT NO - DO MORE * * MSET SETS THE MAP REGISTER SPECIFIED BY WPAG * TO THE PAGE SPECIFIED BY THE B REGISTER * MSET NOP LDA D1 MAP CAX THE PAGE SPECIFIED LDA WPAG TO WPAG XMS JMP MSET,I RETURN * * SET UP DMA WITH THE 3 CONTROL WORDS : * * CW1 --- M.T. SELECT CODE * CW2 --- STARTING ADDRESS * CW3 --- NO. OF WORDS TO BE TRANSFERRED * * WRIT WRITES 128 BYTES FROM THE ADDRESS SPECIFIED * BY THE B REGISTER (MAPPING MUST ALREADY BE DONE) * WRIT NOP LDA DC IOR BIT13 CLEAR CONTROL AT END OF XFER OTA 6 OUTPUT CW1 TO DCPC CHANNEL 1 CLC 2 OTB 2 OUTPUT CW2 STC 2 LDA M128 ALWAYS DO 128 WORDS OTA 2 OUTPUT CW3 * * INITIATE M.T. & DMA * LDA WREC WRITE 1 RECORD COMMAND OTA.6 OTA 00 STC.6 STC 00,C STC.2 STC 00,C STC 6,C INITIATE DMA * * WAIT FOR COMPLETION OF DMA TO M.T. * SFS 6 JMP *-1 * * DMA TO M.T. COMPLETED , CHECK FOR STAT FROM M.T. * LIA.1 LIA 00 GET STAT FROM COMMAND CHANNEL AND ALL7 MASK OFF DENSITY BIT SZA,RSS JMP WRIT,I NO ERROR , EXIT JSB CKSTA CHECK STAT OF M.T. JMP LIA.1 LDA STAT HLT 42B UNRECOVERABLE WRITE ERROR JMP MEM1 START FROM BEGINNING * * SUBROUTINE TO CHECK THE STAT OF M.T. * CKSTA NOP STA STAT SAVE STAT AND BIT8 CHECK FOR CONTROLLER BUSY FLAG SZA JMP CKSTA,I LDA STAT AND BIT3 CHECK FOR REJECT FLAG SZA JMP CKSTA,I LDA STAT AND BIT9 CHECK FOR TRANSPORT BUSY FLAG SZA JMP CKSTA,I ISZ CKSTA JMP CKSTA,I * * MAG TAPE COMMANDS FOR OUTPUT * CLR OCT 110 SLECT OCT 1400 WREC OCT 31 WEOF OCT 211 REWOF OCT 105 * BIT3 OCT 10 BIT6 OCT 100 BIT8 OCT 400 BIT9 OCT 1000 O4200 OCT 4200 BIT13 OCT 20000 ALL7 OCT 77777 * CC OCT 0 DC OCT 0 STAT OCT 0 M128 DEC -128 DLIM DEF 48 NUMBER OF PHYSICAL PAGES TO DUMP CPAGE DEF *-* PAGE BEING DUMPED B2000 OCT 2000 TMP DEF *-* B1777 OCT 1777 MADDR DEF *-* ADDRESS WITHIN MAP TABLE B2100 OCT 2100 ADDRESS OF 65TH PAGE IN MAP TABLE D1 DEC 1 D32 DEC 32 BADDR OCT 102000 FOR DUMPING MAPS TO 2000 B4000 OCT 4000 B200 OCT 200 B6000 OCT 6000 DPAD DEF *-* ADDRESS OF NEXT RECORD TO WRITE WPAG DEF 66 MAP REGISTER # TO USE FOR I/O * * THE NEXT FOUR WORDS CONTAIN THE MEMORY STATUS REGISTER * AND THE ADDRESSES OF THE "DEAD SPOT" * THEY ARE ASSUMED TO BE AT 077674-077677 ABSOLUTE * MSTAT DEF *-* MEMORY STATUS REG IMAGE DEF TDMP FIRST LOCATION IN PROGRAM =>DEAD DEF 77777B LAST LOCATION IN MEMORY =>SPOT DEF 4666 MAGIC NUMBER * END END$