plato:source:plaopl:cmdmp
Table of Contents
CMDMP
Table Of Contents
- [00016] CMDMP - CONTROL POINT CM DUMP (PLATO).
- [00018] CONTROL POINT CM DUMP (PLATO).
- [00033] LOCAL SYMBOLS / FETS / GLOBAL STORAGE.
- [00067] PRESET.
- [00147] MAIN LOOP.
Source Code
- CMDMP.txt
- CMDMP
- * /--- FILE TYPE = E
- * /--- BLOCK INTRO 00 000 82/09/30 10.20
- IDENT CMDMP,FETS
- ABS
- SST
- ENTRY CMDMP
- ENTRY DMP=
- ENTRY MFL=
- *COMMENT CMDMP - CONTROL POINT CM DUMP (PLATO).
- COMMENT COPYRIGHT CONTROL DATA CORP. 1982.
- SYSCOM B1
- TITLE CMDMP - CONTROL POINT CM DUMP (PLATO).
- SPACE 4
- *** CMDMP - CONTROL POINT CM DUMP (PLATO).
- *
- * E. TRUSS. PDEV. 09/28/82.
- SPACE 4
- *** CMDMP PROVIDES A FULL DUMP OF A JOBS
- * CENTRAL MEMORY TO A SPECIFIED FILE. IF NO
- * FILE IS SPECIFIED, *CMFILE* IS USED.
- *
- * THE FIRST RECORD OF THE SPECIFIED FILE IS A
- * HEADER RECORD CONTAINING THE NAME OF THE JOB
- * WHICH CALLED THE DUMP PROGRAM AND THE DATE
- * AND TIME OF THE DUMP. THE REMAINDER OF THE
- * FILE IS A SERIES OF 1000B-WORD RECORDS WHICH
- * CONTAIN THE CM DUMP AND IS TERMINATED BY AN
- * END-OF-FILE.
- TITLE LOCAL SYMBOLS / FETS / GLOBAL STORAGE.
- * LOCAL SYMBOLS.
- FBUFL EQU 1001B USER FILE BUFFER SIZE
- DBUFL EQU 401B SYSTEM DUMP FILE BUFFER SIZE
- SPACE 4
- * COMMON DECKS.
- *CALL,COMCMAC
- SPACE 4
- * FETS.
- ORG 120B
- FETS BSS 0
- CMFILE FILEB FBUF,FBUFL,(FET=8)
- D RFILEB DBUF,DBUFL
- DD EQU *
- ORG D
- VFD 42/3LDM*,18/3
- ORG DD
- SPACE 4
- * GLOBAL STORAGE.
- DL BSS 1 BLOCKS TO READ FROM DUMP FILE
- DA BSS 1 DUMP ADDRESS (0 = FILE-ONLY)
- CL BSS 1 BLOCKS TO READ FROM MEMORY
- * /--- BLOCK PRESET 00 000 82/09/29 15.06
- TITLE PRESET.
- * PRESET USER FILE NAME.
- CMDMP SB1 1
- SA1 ARGR
- MX6 42
- BX6 X6*X1
- ZR X6,CMD1
- SX1 B1
- BX6 X6+X1
- SA6 CMFILE
- * OPEN AND POSITION OUTPUT FILE.
- CMD1 OPEN CMFILE,WRITE,R
- RECALL CMFILE
- REWIND CMFILE
- RECALL CMFILE
- * WRITE HEADER RECORD
- GETJN FBUF SET JOB NAME IN HEADER
- DATE FBUF+1 SET DATE IN HEADER
- CLOCK FBUF+2 SET TIME IN HEADER
- SX6 FBUF+3 SET IN POINTER
- SA6 CMFILE+2
- SX6 FBUF SET OUT POINTER
- SA6 A6+B1
- WRITER CMFILE,R WRITE HEADER
- RECALL CMFILE
- * SET UP DUMP FILE.
- OPEN D,READ,R
- RECALL D
- SA1 D+6 SET FILE RANDOM INDEX
- MX6 42
- BX6 X6*X1
- SX1 1 SKIP SYSTEM SECTOR
- BX6 X6+X1
- SA6 A1
- READ D,R START INPUT
- RECALL D
- .OSL IFGE "MODLEVEL",552D
- SA1 DBUF+FLSW GET JOBS FIELD LENGTH
- .OSL ELSE
- SA1 DBUF+STSW GET JOBS FIELD LENGTH
- .OSL ENDIF
- MX6 -12
- BX6 -X6*X1
- LX6 6
- SA0 X6
- SX6 DBUF+200B SKIP CP AREA IN DUMP
- SA6 D+3
- * SET BLOCKS TO READ FROM DUMP FILE (DUMPS MEMORY
- * OVERWRITTEN BY THIS PROGRAM).
- SX1 A0 GET FL
- SX1 X1+FBUFL-1
- AX1 9 (IN BLOCKS)
- SX6 CMDL LENGTH OF PROGRAM
- SX6 X6+FBUFL-2
- AX6 9
- IX2 X1-X6
- SX3 X2-1
- PL X3,CMD2 IF FL .GE. PROGRAM LENGTH
- SX6 X1-1
- SA6 DL SET DUMP FILE LENGTH
- MX6 0
- SA6 CL SET MEMORY DUMP LENGTH
- SA6 DA FLAG ALL MEMORY IN FILE
- EQ MAIN
- CMD2 SA6 DL SET DUMP FILE LENGTH
- LX6 9 SET MEMORY DUMP ADDRESS
- SA6 DA
- SX6 X2-1
- SA6 CL SET MEMORY DUMP LENGTH
- * /--- BLOCK MAIN 00 000 82/09/29 15.07
- TITLE MAIN LOOP.
- * READ BLOCKS FROM DUMP FILE AND WRITE TO USER FILE
- * UNTIL THE MEMORY OVERWRITTEN BY THIS PROGRAM
- * IS DUMPED.
- MAIN SA1 DL DECREMENT BLOCK COUNT
- SX6 X1-1
- SA6 A1
- NG X6,MAIN1 IF DONE WITH FILE BLOCKS
- SA1 CMFILE+1 RESET BUFFER POINTERS
- SX6 X1+FBUFL-1
- SA6 A1+B1 SET IN
- SX6 X1
- SA6 A6+B1 SET OUT
- READW D,FBUF,FBUFL-1
- WRITER CMFILE,R WRITE TO USER FILE
- RECALL CMFILE
- EQ MAIN
- * SET BUFFER POINTERS FOR USER FILE FET INTO JOBS
- * MEMORY SO WE DON'7T NEED TO MOVE THE DATA INTO
- * THE NORMAL CIO BUFFER. WRITE REMAINDER OF JOBS
- * CM TO THE USER FILE.
- MAIN1 SA1 CL DECREMENT BLOCK COUNT
- SX6 X1-1
- SA6 A1
- NG X6,MAIN2 IF NO CM BLOCKS
- ZR X6,MAIN1A IF ON LAST FULL BLOCK
- SA1 CMFILE+1 RESET BUFFER POINTERS
- MX6 42
- BX6 X6*X1
- SA2 DA
- BX6 X6+X2
- SA6 A1 SET FIRST
- SX7 X2+FBUFL-1
- SA7 A6+B1 SET IN
- SA6 A7+B1 SET OUT
- SX6 X6+FBUFL
- SA6 A6+B1 SET LIMIT
- SX6 FBUFL-1 INCREMENT DUMP ADDRESS
- IX6 X2+X6
- SA6 A2
- WRITER CMFILE,R WRITE TO USER FILE
- RECALL CMFILE
- EQ MAIN1
- * MOVE THE LAST FULL BLOCK INTO THE USER FILE BUFFER
- * TO AVOID SETTING THE CIO POINTERS OUT OF RANGE ON
- * JOBS WHOSE FL IS AN EVEN MULTIPLE OF 10000B (IN
- * THIS CASE, ON THE LAST FULL BLOCK, *LIMIT* WILL
- * BE SET TO *FL+1*).
- MAIN1A SB2 FBUFL-2
- SA1 DA BEGINNING OF LAST FULL BLOCK
- SB3 X1
- NZ X1,MAIN1B IF BLOCK IN CM
- READW D,FBUF,FBUFL-1 READ WORDS FROM FILE
- EQ MAIN1C
- MAIN1B SA1 B3+B2
- BX6 X1
- SA6 FBUF+B2
- SB2 B2-B1
- PL B2,MAIN1B
- MAIN1C SA1 CMFILE+1 RESET BUFFER POINTERS
- MX6 42
- BX6 X6*X1
- SX1 FBUF
- BX6 X6+X1
- SA6 A1 SET FIRST
- SX6 X1+FBUFL-1
- SA6 A1+B1 SET IN
- SX6 X1
- SA6 A6+B1 SET OUT
- SX6 X1+FBUFL
- SA6 A6+B1 SET LIMIT
- SA1 DA INCREMENT DUMP ADDRESS
- SX6 FBUFL-1
- IX6 X1+X6
- SA6 A1
- WRITER CMFILE,R
- RECALL CMFILE
- * /--- BLOCK MAIN 00 000 82/09/30 10.20
- * ZERO THE USER FILE BUFFER, MOVE THE LAST (PARTIAL)
- * BLOCK INTO IT AND WRITE TO THE USER FILE.
- MAIN2 MX6 0
- SB2 FBUFL-1
- MAIN3 SA6 FBUF+B2
- SB2 B2-B1
- PL B2,MAIN3
- SX1 A0 GET LENGTH TO MOVE
- MX2 -9
- BX1 -X2*X1
- ZR X1,MAIN5 IF NO PARTIAL BLOCK
- SB2 X1-1
- SA1 DA BEGINNING OF PARTIAL BLOCK
- SB3 X1
- NZ X1,MAIN4 IF PARTIAL BLOCK IN CM
- READW D,FBUF,B2+B1 READ WORDS FROM FILE
- EQ MAIN4A
- MAIN4 SA1 B3+B2
- BX6 X1
- SA6 FBUF+B2
- SB2 B2-B1
- PL B2,MAIN4
- MAIN4A SA1 CMFILE+1 RESET BUFFER POINTERS
- MX6 42
- BX6 X6*X1
- SX1 FBUF
- BX6 X6+X1
- SA6 A1 SET FIRST
- SX6 X1+FBUFL-1
- SA6 A1+B1 SET IN
- SX6 X1
- SA6 A6+B1 SET OUT
- SX6 X1+FBUFL
- SA6 A6+B1 SET LIMIT
- WRITER CMFILE,R
- RECALL CMFILE
- MAIN5 WRITEF CMFILE
- RECALL CMFILE
- ENDRUN
- SPACE 4
- * COMMON DECKS.
- *CALL COMCSYS
- *CALL COMCCIO
- *CALL COMCCPM
- *CALL COMCRDW
- * /--- BLOCK BUFFERS 00 000 82/09/28 13.50
- BUFFS TITLE BUFFERS.
- * BUFFERS.
- BUFFERS BSS 0
- USE //
- SEG
- DBUF BSS DBUFL DM* FILE BUFFER
- FBUF BSS FBUFL USER FILE BUFFER
- BSS 10B ALLOW FOR *COMCRDW* READ AHEAD
- IDENT
- *
- * ALL FOLLOWING COMPUTATIONS MUST BE ROUNDED
- * TO NEAREST 1000B SO CORRECT NUMBER OF BLOCKS
- * OF CM WILL BE WRITTEN TO DUMP FILE.
- *
- .1 SET *+777B
- DMP= EQU .1/1000B*10B+10000B
- CMDL EQU .1/1000B*1000B END OF MEMORY IN FILE
- MFL= EQU CMDL
- END
plato/source/plaopl/cmdmp.txt ยท Last modified: 2023/08/05 18:54 by Site Administrator