{ File Name: ChainSub.mc
This file contains subroutines used for ChainBlt.mc.
1. SaveChainReg - save registers for ChainBlt.
2. RestoreChainReg - restore all registers for ChainBlt.
Author: MYT
Created: July 30, 1986
last edited: Oct. 6 (change dstWidth to bitWidth)
}
{ Copyright (C) 1986 by XEROX corporation. All rights reserved.}
{****************************************************************************************
SaveChainReg: Save register before call some other routine.
L2 is caller
First ccle - c2
Last ccle - c2
3 1/3 clicks
*****************************************************************************************}
SaveChainReg:
USavelength ← length, c2;
USavecount ← bitWidth, c3;
USavedstbit ← DBit, c1;
USavechainbasel ← rchainbasel, c2;
USavewritebit ← writebit, c3;
USavedstlow ← rdstlow, c1;
Q ← rhchainbaseh, c2;
USavechainbaseh ← Q, c3;
Q ← rhdsthigh, pRet2, c1;
USavedsthigh ← Q, RET[SaveChainRegRet], c2;
{****************************************************************************************
RestoreChainReg: Restore registers.
L5 is caller
First ccle - c1
Last ccle - c1
3 1/3 clicks
*****************************************************************************************}
RestoreChainReg:
length ← USavelength, c1;
bitWidth ← USavecount, c2;
DBit ← USavedstbit, c3;
rchainbasel ← USavechainbasel, c1;
writebit ← USavewritebit, c2;
rdstlow ← USavedstlow, c3;
Q ← USavechainbaseh, c1;
rhchainbaseh ← Q LRot0, c2;
Q ← USavedsthigh, pRet5, c3;
rhdsthigh ← Q LRot0,RET[RestoreChainRegRet], c1;