EMDMP * /--- FILE TYPE = E * /--- BLOCK INTRO 00 000 82/09/30 08.35 IDENT EMDMP,111B,EMDMP TITLE EMDMP - CONTROL POINT EM DUMP (PLATO). * * * * DUMPS EXTENDED MEMORY LOCATIONS INTO FILE * NAMED IN FIRST ARGUMENT. FILE IS WRITTEN AS A * SERIES OF 1000B (512) WORD RECORDS AND IS ENDED * WITH AN END-OF-FILE. THE CALLING JOB MUST * ALREADY HAVE AN EM FIELD LENGTH SET, EMDMP DOES * NOT REQUEST ANY EM OF ITS OWN. * * THE FIRST RECORD OF EVERY DUMP IS A HEADER RECORD * CONTAINING THE NAME OF THE JOB WHICH DID THE DUMP * AND THE DATE AND TIME OF THE DUMP. * * * * EMDMP(FILE,FFFF,LLLL) * * FILE = FILE NAME TO RECEIVE DUMP (ASSUMES *EMFILE*) * FFFF = FIRST WORD TO DUMP/1000B (IN OCTAL) * LLLL = LAST WORD OF TO DUMP/1000B (IN OCTAL) * * * * * COMMENT COPYRIGHT CONTROL DATA CORP. 1982. *COMMENT EMDMP - CONTROL POINT EM DUMP (PLATO). * ABS SST SYSCOM B1 *CALL COMCMAC * BUFL EQU 1001B CIO BUFFER LENGTH * /--- BLOCK MAIN 00 000 82/09/30 08.40 TITLE MAIN LOOP ORG 111B * EMDMP RJ PRS SA1 ECSL CHECK FOR NOTHING TO DO ZR X1,ECDONE NG X1,ECDONE OPEN EMFILE,WRITE,R RECALL EMFILE REWIND EMFILE,R RECALL EMFILE * * WRITE HEADER RECORD * GETJN BUFF SET JOB NAME IN HEADER DATE BUFF+1 SET DATE IN HEADER CLOCK BUFF+2 SET TIME IN HEADER SX6 BUFF+3 SET IN POINTER SA6 EMFILE+2 SX6 BUFF SET OUT POINTER SA6 A6+B1 WRITER EMFILE,R WRITE HEADER RECALL EMFILE * * SET ERROR EXIT ADDRESS TO ALLOW ORDERLY EXIT * EREXIT ECDONE * * SET UP FOR EM DUMP * SA0 BUFF CM ADDRESS SA1 ECSF SET BEGINNING EM ADDRESS LX1 9 BX0 X1 * ECLOOP BX1 X0 ISSUE MESSAGE RJ COD SA6 MSG+1 MESSAGE MSG,1,R RE BUFL-1 READ WORDS INTO BUFFER - RJ ECSERR SX6 BUFF+BUFL-1 RESET CIO POINTERS FOR TRANSFR SA6 EMFILE+2 SX6 BUFF SA6 A6+B1 WRITER EMFILE,R TRANSFER DATA RECALL EMFILE SX1 BUFL-1 INCREMENT EM ADDRESS IX0 X0+X1 SA2 ECSL DECREMENT LENGTH TO READ AX1 9 IX6 X2-X1 ZR X6,ECDONE IF ALL DUMPED NG X6,ECDONE IF ALL DUMPED SA6 A2 EQ ECLOOP * ECDONE BSS 0 WRITEF EMFILE,R TACK ON AN EOF RECALL EMFILE ENDRUN QUIT * * MSG CON 10LDUMPING - BSS 1 CON 0 * /--- BLOCK ECSERR 00 000 82/09/30 08.41 TITLE ECSERR -- REPORT EM ERRORS ** * ECSERR - REPORT EM ERRORS * * ON ENTRY - X0 = ADDRESS OF EM READ * * ISSUES ERROR MESSAGE * * ECSERR EQ *+400000B BX1 X0 CONVERT ADDRESS TO DISPLAY CODE RJ COD SA6 ADDR MESSAGE ERR,0,R SX1 BUFL-1 DUMMY UP A RECORD AX1 1 DIVIDE BY TWO SB2 X1 SA1 DUMMY SA2 A1+B1 BX6 X1 BX7 X2 SA6 BUFF SA7 A6+B1 * ECSERR1 SB2 B2-B1 ZR B2,ECSERR IF DONE NG B2,ECSERR IF OVER-DONE SA6 A6+2 SA7 A6+B1 EQ ECSERR1 * * ERR DIS 2,(EMDMP) ECS ERROR - ADDR BSS 1 CON 0 * DUMMY DIS ,/*** ECS ERROR ***/ * * /--- BLOCK COD 00 000 82/09/30 08.41 COD TITLE CONVERSION ROUTINES ** * COD - CONSTANT TO OCTAL DISPLAY CODE CONVERSION * * CONVERT 10 OCTAL DIGITS TO DISPLAY CODE WITHOUT * LEADING ZERO SUPPRESSION * * MODIFICATION OF KRONOS COMMON DECK COMCCOD * * ENTRY X1=NUMBER TO CONVERT * * EXIT X6=DPC CONVERSION * * USES - A - NONE * X - 1,2,3,4,6 * B - 3 * * CALLS NONE * * COD EQ *+400000B SB3 10 CONVERT 10 DIGITS MX2 -3 DIGIT MASK MX6 0 SX3 1R0 CONVERSION CONSTANT * COD1 BX4 -X2*X1 GET DIGIT IX4 X4+X3 CONVERT LX4 -6 LX6 -6 BX6 X6+X4 INSERT CHAR SB3 B3-B1 EQ B3,B0,COD JUMP IF 10 DIGITS AX1 3 GO TO NEXT DIGIT EQ COD1 LOOP TILL 10 DIGITS * /--- BLOCK MISC 00 000 82/09/30 08.43 TITLE COMMON DECKS / FETS / ETC. *CALL COMCCPM *CALL COMCCIO *CALL COMCSYS SPACE 4 ECSF BSS 1 FIRST WORD TO DUMP/1000B ECSL BSS 1 ECS DUMP LENGTH/1000B * * * FET AND BUFFER * EMFILE FILEB BUFF,BUFL * * BUFF EQU * * * RFL= EQU BUFF+BUFL+2 * /--- BLOCK PRS 00 000 82/09/30 08.47 TITLE PRESET * * INITIALIZATIONS GO INTO CIO BUFFER * PRS EQ *+400000B SB1 1 * * SET OUTPUT FILE NAME * SA1 ARGR SET FILE NAME MX6 42 BX6 X6*X1 ZR X6,INIT1 IF NONE, USE *EMFILE* SX7 B1 BX6 X6+X7 SA6 EMFILE * * CONVERT EM FWA TO OCTAL * INIT1 MX0 -6 MX6 0 CLEAR NUMBER BUILDING SA1 ARGR+1 LOAD EM FWA ZR X1,W10 BX2 -X0*X1 CHECK FOR LEGAL ARGUMENT NZ X2,W10 RJ ATOO * W10 SA6 ECSF * * CONVERT EM LWA TO OCTAL * MX0 -6 MX6 0 CLEAR NUMBER BUILDING SA1 ARGR+2 LOAD EM LWA ZR X1,W100 BX2 -X0*X1 CHECK FOR LEGAL ARGUMENT NZ X2,W100 RJ ATOO * W100 SA1 ECSF CHANGE TO EM LENGTH TO DUMP IX6 X6-X1 SA6 ECSL EQ PRS * * * ATOO EQ * LX1 6 POSITION NEXT CHARACTER BX2 -X0*X1 ZR X2,ATOO EXIT IF END SX2 X2-1R0 CONVERT TO OCTAL LX6 3 IX6 X2+X6 ADD TO NUMBER BUILDING EQ ATOO+1 SPACE 3 END