DataMuseum.dk

Presents historical artifacts from the history of:

Philips Data Systems

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Philips Data Systems

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦f064d59dd⟧

    Length: 10938 (0x2aba)
    Notes: pts_type(SC)
    Names: »CPDKMT.SC«

Derivation

└─⟦5c22ed822⟧ Bits:30009675 Philips computer tape "600209"
    └─⟦this⟧ »TOOL/CPDKMT.SC« 
└─⟦bf903a231⟧ Bits:30009665 Philips computer tape "600109"
    └─⟦this⟧ »TOOL/CPDKMT.SC« 

PTS(SC)

	IDENT	CPDKMT	* 790122 C.EKERT
*************************************************************** 
* 
*   COPY DISK TO 1/2 INC. MAG-TAPE ( & REVERSE) UTILITY.      * 
*                                                             * 
*************************************************************** 
* 
*  THE IMPROVED DISK TO TAPE SAVE AND RESTORE FACILITY.   * 
* THE UTILITY HAS BEEN ADAPTED TO BE CALLED FROM A        * 
* 'CREDIT'-PROGRAM. TWO ENTRYPOINTS ARE PROVIDED, 'CDT'   * 
* AND 'CTD'. THE 'CDT' ENTRY CAUSES A DISK TO BE SAVED ON * 
* A MAGNETIC TAPE AND 'CTD' RESTORES THE DISK FROM A      * 
* MAGNETIC TAPE WHICH HAS PREVIOUSLY BEEN CREATED VIA THE * 
* 'CDT' ENTRY. THE DISK IS READ/WRITTEN SECTOR BY SECTOR  * 
* AND BLOCKED BEFORE TRANFERRED TO THE TAPE..             * 
*                                                         * 
*  NOTES:                                                 * 
*   IMMEDIATLY WHEN AN I/O-FAILURE IS DETECTED THE        * 
* PROCESSING IS ABORTED AND THE CALLING PROGRAM IS        * 
* INFORMED VIA THE RETURNCODE, WHICH CONTAINS THE DEVICE  * 
* DEPENDENT RETURNCODE FROM THE DRIVER. NO AUTOMATIC      * 
* RECOVERY PROCEDURE IS INITIATED.                        * 
*                                                         * 
*  'CREDIT' INTERFACE:                                    * 
*  CALLING SEQUENCE:                                      * 
*     CALL CDT,DKFC,MTFC,FRST,LAST,SLTH,BLKF,BUFF,RETC         *
*  <CDT>  :    : ENTRY DISK TO TAPE COPY ROUTINE          * 
*  <DKFC> :BIN : DISK - FILE CODE.                        * 
*  <MTFC> :BIN : MAG. TAPE FILE CODE.                     * 
*  <FRST> :BIN : NUMBER OF FIRST SECTOR TO BE TRANSFERRED * 
*  <LAST> :BIN : NUMBER OF LAST SECTOR TO BE TRANSFERRED  * 
*  <SLTH> :BIN : SECTOR LENGTH IN BYTES                   * 
*  <BLKF> :BIN : BLOCKING FACTOR (RECORDS/BLOCK)          * 
*  <BUFF> :STRG: I/O-BUFFER ADDRESS                       * 
*  <RETC> :BIN : RETURN CODE.                             * 
*                =0 IF THE PROCESSING TERMINATED          * 
*                SUCCESSFULLY. IF AN I/O ERROR OCCURRED   * 
*                THE RETURNCODE CONTAINS THE RETURNCODE   * 
*                FROM THE DRIVER AND THE 1:ST BYTE IN THE * 
*                I/O-BUFFER CONTAINS A 'M' OR A 'D'       * 
*                INDICATING THE FAILING UNIT.             * 
*                                                         * 
*********************************************************** 
*************************************************************** 
* 
	ENTRY	CDT	 * COPY DISK TO TAPE 
	ENTRY	CTD	* RESTORE DISK FROM TAPE 
* 
* 
	EXTRN	I:EVA0	* RETREIVE CALLING PARAMS.
	EXTRN	I:RT1	* RETURN TO 'CREDIT' USER. 
* 
* 
	EJECT
* 
* 
CDT	EQU	* 
* 
*  COPY ENTIRE DISK SECTOR BY SECTOR TO 1/2 INC. TAPE.
* 
*  TO TAPE INITIALIZATIONS. 
* 
	LDK	A7,X'91'	* ORDERCODE PHYSICAL READ 
	SC	A7,DKORDR 
	LDK	A7,X'85'	* ORDERCODE 'WRITE TAPE'
	SC	A7,MTORDR 
	LDKL	A7,MTIOLB 
	ST	A7,SWTCH2 
* 
	LDKL	A7,DKIO 
	ST	A7,SWTCH1 
* 
	LDKL	A7,X'AA67'	* WRT TAPE MASK
	ST	A7,MTMSK2 
* 
	LDKL	A7,X'AA61'	* WTM - MASK 
	ST	A7,MTMSK1 
* 
	LDK	A7,X'A2'	* ORDERCODE WRT TAPEMARK
	SC	A7,MTHEAD 
	RF	TPMRK 
* 
* 
	EJECT
* 
* 
CTD	EQU	* 
* 
*  RESTORE DISK FROM 1/2 TAPE, SECTOR BY SECTOR.
* 
*  INITIALIZATIONS FOR DISK RESTORE.
* 
	LDK	A7,X'95'	* ORDERCODE PHYSICAL WRITE DISK 
	SC	A7,DKORDR 
* 
	LDK	A7,X'82'	* ORDERCODE 'READ TAPE' 
	SC	A7,MTORDR 
* 
	LDKL	A7,RETURN 
	ST	A7,SWTCH2 
* 
	LDKL	A7,MTIO 
	ST	A7,SWTCH1 
* 
	LDKL	A7,X'B87F'	* MASK 'TAPE READ' 
	ST	A7,MTMSK2 
* 
	LDKL	A7,X'A87F'	* MASK 'TAPE READ' 
	ST	A7,MTMSK1 
* 
	LDK	A7,X'82'	* ORDERCODE 'READ TAPE' 
	SC	A7,MTHEAD 
* 
* 
	EJECT
* 
* 
*   WRITE / BYPASS 1:ST TAPE MARK.
* 
TPMRK	EQU	* 
	CF	A14,I:EVA0	* RETREIVE DISK FILE CODE
	LDR*	A7,A9 
	ST	A7,DKECB
	CF	A14,I:EVA0	* RETREIVE TAPE FILE CODE
	LDR*	A7,A9 
	ST	A7,MTECB
	CF	A14,I:EVA0	* RETREIVE FIRST SECTOR NO.
	LDR*	A7,A9 
	ST	A7,DKECBC	* SAVE IN CONTROL WORD
	CF	A14,I:EVA0	* RETREIVE LAST SECTOR NO. 
	LDR*	A7,A9 
	ST	A7,DKSECN	* SAVE IN LOOP CONTROL. 
	CF	A14,I:EVA0	* RETREIVE SECTOR LENGTH 
	LDR*	A7,A9 
	ST	A7,DKECBL 
	LDR	A6,A7	* SAVE SECTOR LENGTH 
	CF	A14,I:EVA0	* RETREIVE BLOCK FACTOR
	LDR*	A7,A9 
	ST	A7,BLKFCT 
	LDR	A2,A6	* CALC. MT-BUFFER SIZE 
	MUR	A7 
	ST	A2,MTECBL	* SAVE MT-BUFFERSIZE
	CF	A14,I:EVA0	* RETREIVE BUFFER ADDR.
	ST	A9,MTECBB 
	ST	A9,DKECBB 
	CM	RECCNT
	LDK	A7,X'00' 
MTHEAD	EQU	*-1
	LDKL	A8,MTECB
	LKM
	DATA	1 
	LDKL	A7,X'1000'	* 'TAPE MARK' MASK 
	AN	A7,MTECBR 
	RF(Z)	MTERR
	LDKL	A7,X'0000'
MTMSK1	EQU	*-1
	AN	A7,MTECBR 
	RF(NZ)	MTERR 
	LDKL	A7,NXTBLK 
	ST	A7,SWTCH3 
	ABL	X'0000'
SWTCH1	EQU	*-1 * DKIO / MTIO
* 
* 
	EJECT
* 
*   DISK - I/O
* 
DKIO	EQU	*
	LDK	A7,X'00' 
DKORDR	EQU	*-1
	LDKL	A8,DKECB
	LKM
	DATA	1 
* 
*  I/O ANALYSIS.
* 
	LDKL	A7,X'820F'
	AN	A7,DKECBR 
	RF(NZ)	DKERR 
* 
*  REPEAT I/O IF 'NEW VOLUME' DETECTED. 
* 
	LDK	A7,X'80'	* MASK 'NEW VOL.' 
	AN	A7,DKECBR 
	RB(NZ)	DKIO	* REPEAT I/O 
* 
* INCREMENT SECTOR COUNTER
* 
	IM	DKECBC	* INCR. SECTOR COUNTER 
	IM	RECCNT	* INCR. RECORD COUNTER 
* 
*  SECTOR READ. INCREMENT BUFFER POINTER & CHECK IF END OF BUFFER 
* 
	LD	A7,DKECBB	*LOAD BUFFER ADDR.
	AD	A7,DKECBL	* ADD ON RECORD LENGTH
	ST	A7,DKECBB	* SAVE NEW BUFF. ADDR.
* 
*  CHECK IF LAST SECTOR PROCESSED AND BRANCH ACORDINGLY.
* 
	LD	A7,DKECBC	* LOAD SECTOR COUNTER 
	CW	A7,DKSECN 
	ABL(G)	X'0000' 
SWTCH2	EQU	*-1 *MTIOLB / RETURN 
* 
*  CHECK IF BLOCK IS COMPLETE.
* 
	LD	A7,RECCNT 
	CW	A7,BLKFCT 
	RF(Z)	MTIO	* YES! TRANS. TO TAPE 
	RB	DKIO	* READ NEXT SECTOR IF NOT LAST 
* 
* 
	EJECT
* 
* 
* 
*  MAG. TAPE I/O. 
* 
MTIOLB	EQU	*
* 
*  FIX WHEN LAST BLOCK PROCESSED. 
* 
	LDKL	A7,WRTPMK 
	ST	A7,SWTCH3 
* 
*  NORMAL TAPE-I/O ENTRY. 
* 
MTIO	EQU	*
	LDK	A7,X'00'	* LOAD ORDERCODE
MTORDR	EQU	*-1
	LDKL	A8,MTECB
	LKM
	DATA	1 
* 
*  RETURN CODE ANALYSIS.
* 
	LDKL	A7,X'0000'	* LOAD MASK
MTMSK2	EQU	*-1
	AN	A7,MTECBR 
	RF(NZ)	MTERR 
* 
*  RETURN IF LAST SECTOR ELSE PERPARE FOR NEXT BLOCK. 
* 
	ABL	X'0000'
SWTCH3	EQU	*-1 * NXTBLK / WRTPMK
* 
* 
* 
NXTBLK	EQU	*
	LD	A7,MTECBB 
	ST	A7,DKECBB	* RESTORE BUFFER ADDR.
	CM	RECCNT	* RESET RECORD COUNTER.
	RB	DKIO	* READ NEXT SECTOR 
* 
* 
	EJECT
* 
* 
* NORMAL TERMINATION. 
* 
WRTPMK	EQU	*
* 
* WRITE TAPE MARK 
* 
	LDK	A7,X'A2'	* ORDERCODE WTM 
	LDKL	A8,MTECB
	LKM
	DATA	1 
	LDKL	A7,X'1000'
	AN	A7,MTECBR 
	RF(Z)	MTERR
* 
* 
RETURN EQU *
	LDK	A6,0	* RETURN CODE = OK. 
	RF	SETRC		 
* 
* 
*  I/O ERROR HANDLING.
* 
* 
MTERR	EQU	* 
	LDKL	A8,'M'	* INDICATE MAG.TAPE
	LD	A6,MTECBR	* PICK UP DRIVER RET. CODE
	RF	ERRHDL
* 
* 
DKERR	EQU	* 
	LDKL	A8,'D'	* INDICATE DISK
	LDKL	A6,DKECBR 
* 
* 
ERRHDL	EQU	*
	LD	A7,MTECBB	* PICK UP BUFFER ADDR.
	SCR	A8,A7	* TRANS. FAILING UNIT
* 
* 
SETRC	EQU	* 
	CF	A14,I:EVA0	* PICK UP ADDR. OF RETURNCODE
	STR	A6,A9	* TRANS. DRIVER RET. CODE
* 
* 
	ABL	I:RT1	* RETURN TO 'CREDIT' USER
* 
* 
* 
	EJECT
* 
* 
*   EVENT CONTROL BLOCKS. MAG. TAPE AND DISK
* 
MTECB	DATA	/0070	* FILE CODE TAPE DRIVE 
MTECBB	DATA	0	* BUFFER ADDR.
MTECBL	DATA	3280,0	* BUFFER LENGTH (8 SECTORS)
MTECBR	DATA	0	* RETURN CODE 
MTECBC	DATA	0	* NO BLOCK SEQUENCE NO. 
* 
* 
* 
DKECB	DATA	/00F0	* FILE CODE FIXED DISK 1 
DKECBB	DATA	0	* BUFFER ADDR.
DKECBL	DATA	410,0	* SECTOR LENGTH 
DKECBR	DATA	0	* RETURN CODE 
DKECBC	DATA	0	* SECTOR COUNTER
* 
* 
* 
DKSECN	DATA	13055	* NO. OF LAST SECTOR
BLKFCT	DATA	0	*BLOCK FACTOR 
RECCNT	DATA	0	* RECORD IN BLOCK COUNT.
* 
* 
* 
	END

Full view