DIRECTORY DragOpsCross, DragOpsCrossUtils, HandCoding, HandCodingPseudos, HandCodingSupport, Rope; DDKBusTest: CEDAR PROGRAM IMPORTS DragOpsCrossUtils, HandCoding, HandCodingPseudos, HandCodingSupport = BEGIN OPEN DragOpsCrossUtils, HandCoding, HandCodingPseudos, HandCodingSupport; instrSize: AuxRegSpec = [aux[10]]; -- must contain the length of trapping instructns underflowHandler: AuxRegSpec = [aux[12]]; All: PROC = { GenLSUnderflowKernel: PROC RETURNS [ lsUnderflowKernel: Label ] = { sLimitValue: [0..128) = 16; underflowTrap: Label; lsUnderflowKernel _ GenLabelHere[]; -- one frame on IFU stack drLIB[sLimitValue]; drSIP[DragOpsCross.ProcessorRegister[ifuSLimit].ORD]; GetEldestPC[]; -- pops IFU stack to EU stack top drSFC[]; -- Call caller's return PC (underflowTrap pushed onto IFU stack) underflowTrap _ GenLabelHere[]; -- no frames on stack drROR[c: pushDst, a: const0, b: underflowHandler]; drSFC[]; drJB[UseLabel8A[underflowTrap]]}; FillTrap: PROC [ trap: DragOpsCross.TrapIndex, label: Label ] = { oldPC: LONG CARDINAL = GetOutputPC[]; SetOutputPC[DragOpsCrossUtils.TrapIndexToBytePC[trap]]; drJDB[UseLabel16[label]]; -- go to trap handler SetOutputPC[oldPC]}; LSUnderflowKernel: Label = GenLSUnderflowKernel[]; Start: Label = GenLabel[]; FillTrap[ResetTrap, Start ]; SetLabel[ Start ]; -- gets here from reset in kernel mode with traps off drLFC[UseLabel16[ LSUnderflowKernel ]]; drLIQB[ CardToWord[000000000H]]; SetEldestPC[]; GetEldestPC[]; drLIQB[ CardToWord[055555555H]]; SetEldestPC[]; GetEldestPC[]; drLIQB[ CardToWord[0FFFFFFFFH]]; SetEldestPC[]; GetEldestPC[]; drLIQB[ CardToWord[0AAAAAAAAH]]; SetEldestPC[]; GetEldestPC[]; drLIQB[ CardToWord[000000000H]]; Halt[0FFFFH]}; -- end of test END. üDDKBusTest.mesa Don Curry February 5, 1987 0:16:16 am PST UnderflowHandler must have been set. M A I N L I N E C O D E Start Set up EU SLimit and install IFU stack underflow service routine (kernel mode, traps off) Exercise KBus End of test Ê-˜šœ™J™)—J˜šÏk ˜ Jšœ ˜ J˜Jšœ ˜ Jšœ˜Jšœ˜Jšœ˜J˜—šœ œ˜JšœD˜KJšœœœE˜QJ˜Jšœ&Ïc1˜Wšœ)˜)J˜—JšÏnœœ˜ ˜šŸœœœŸœ ˜CJ˜Jšœ$™$Jšœ˜šœ$ž˜=J˜Jšœ0œ˜5Jšœž!˜0Jšœ ž@˜I—šœ ž˜5Jšœ2˜2J˜Jšœ!˜!—J˜—šŸœœ3˜AJšœœœ˜%J˜7Jšœž˜/J˜J˜—Jšœ™J˜Jšœ4˜4Jšœ ˜ J˜šœ˜J˜—šœ™Jšœ Ïbœž5˜H—J™šœY™YJšœ œ˜'—J™™ Jšœ ˜ Jšœ˜Jšœ˜JšÏf ˜ Jšœ˜Jšœ˜Jš¡Ðfk ¡˜ Jšœ˜Jšœ˜Jš¡ ˜ Jšœ˜Jšœ˜Jš¡ ˜ ——™šœ ™ šœž˜J˜———Jšœ˜J˜J˜J˜——…—Ð ù