Directory DragonMicroPLA; Imports Atom, BitOps, Dragon, DragonIFU; IALRegAddr: CELL [ SAB INT[8], LSum0A SAB, l => LAB, cBase => DragonIFU.PRtoByte[euConstant], aBase => DragonIFU.PRtoByte[euAux], iRef => DragonIFU.PRtoByte[ifuXBus]+4, zero => 0, ENDCASE => ERROR; addBus1 _ SELECT ASum1B FROM op47 => OpBA MOD 16, alpha => AlphaBA, alpha03 => AlphaBA/16, alpha47 => AlphaBA MOD 16, beta => BetaBA, beta03 => BetaBA/16, beta47 => BetaBA MOD 16, minus4 => -4, minus3 => -3, minus2 => -2, minus1 => -1, zero => 0, one => 1, two => 2, three => 3, ENDCASE => ERROR; END; IF PhA THEN BEGIN addBus0 _ SELECT LSum0A FROM s => sBA, l => lBA, xBus => BitOps.ECFD[XBus, 32, xBusPos, 7], zero => 0, ENDCASE => ERROR; addBus1 _ SELECT LSum1A FROM alpha => AlphaBA, zero => 0, one => 1, ENDCASE => ERROR; END; sum _ (addBus0+addBus1+256) MOD 256; IF PhB THEN Lev0AaddrBA _ SELECT ASum0B FROM s, l => sum MOD 128, ENDCASE => sum; IF PhA THEN LAB _ sum MOD 128; Initializer xBusPos _ NARROW[ NARROW[initData, Atom.PropList].GetPropFromList[$xBusPos], REF INT]^; ENDCELL; IBSRegAddr: CELL [ LAB INT[8], SSum0A SAB, l => LAB, cBase => DragonIFU.PRtoByte[euConstant], aBase => DragonIFU.PRtoByte[euAux], iRef => DragonIFU.PRtoByte[ifuXBus]+4, zero => 0, ENDCASE => ERROR; addBus1 _ SELECT BSum1B FROM op47 => OpBA MOD 16, alpha => AlphaBA, alpha03 => AlphaBA/16, alpha47 => AlphaBA MOD 16, beta => BetaBA, beta03 => BetaBA/16, beta47 => BetaBA MOD 16, minus4 => -4, minus3 => -3, minus2 => -2, minus1 => -1, zero => 0, one => 1, two => 2, three => 3, ENDCASE => ERROR; END; IF PhA THEN BEGIN addBus0 _ SELECT SSum0A FROM s => sBA, l => lBA, xBus => BitOps.ECFD[XBus, 32, xBusPos, 7], zero => 0, ENDCASE => ERROR; addBus1 _ SELECT SSum1A FROM alpha => AlphaBA, deltaS => DeltaSPlus2A-2, zero => 0, one => 1, ENDCASE => ERROR; END; sum _ (addBus0+addBus1+256) MOD 256; IF PhB THEN Lev0BaddrBA _ SELECT BSum0B FROM s, l => sum MOD 128, ENDCASE => sum; IF PhA THEN SAB _ sum MOD 128; Initializer xBusPos _ NARROW[ NARROW[initData, Atom.PropList].GetPropFromList[$xBusPos], REF INT]^; ENDCELL; ICRegAddr: CELL [ SAB INT[8], XBus =INT[32], ReadSLimitA BOOL, PhA sBA, l => lBA, cBase => DragonIFU.PRtoByte[euConstant], aBase => DragonIFU.PRtoByte[euAux], iRef => DragonIFU.PRtoByte[ifuXBus]+4, zero => 0, ENDCASE => ERROR; addBus1 _ SELECT CSum1A FROM op47 => OpBA MOD 16, alpha => AlphaBA, alpha03 => AlphaBA/16, alpha47 => AlphaBA MOD 16, beta => BetaBA, beta03 => BetaBA/16, beta47 => BetaBA MOD 16, minus4 => -4, minus3 => -3, minus2 => -2, minus1 => -1, zero => 0, one => 1, two => 2, three => 3, ENDCASE => ERROR; END; sum _ (addBus0+addBus1+256) MOD 256; IF PhB THEN EStkOverflowBA _ (sum MOD 128) IN [0..15); IF PhA THEN Lev0CaddrA _ SELECT CSum0A FROM s, l => sum MOD 128, ENDCASE => sum; ENDCELL 4IRegAddr.rose Copyright c 1984 by Xerox Corporation. All rights reserved. Last edited by: McCreight, May 2, 1984 4:42:22 pm PDT Last edited by: Curry, August 21, 1984 12:40:08 pm PDT Last Edited by: Twilliams, August 28, 1984 9:36:15 am PDT Change this 15 back to 16 when Russ changes his 17 to 16 Ê ½˜šÐbl ™ Jšœ Ïmœ1™