[LispM] Outstanding Meroko bugs and a question of my own

nyef at lisphacker.com nyef at lisphacker.com
Sun Oct 9 08:31:55 PDT 2005


Daniel, everyone else, 

For DISPATCH on Oldspace, just pick up the oldspace bit from the level-1 map 
indexed by MD. Should be easy enough to get working once you have a failing 
test. 

For Stack-Self on DISPATCH, when the N bit is set in the Jump-Op (that is, 
Jump-Op is 3), subtract 1 from the stored uPC. 

Dispatch-Source-MF-Bus is almost a misnomer. It's something like 
dispatch_source = (MFBus >> 24) & 0x3e;. 

Dispatch-Source-MIR (sources 2 and 3) are more complex. The main bit of 
logic runs something like this: 

 int is_miscop = ((MIB >> 9) & 0xf) == 0xd;
 int is_group1 = MIB & 0x2000; 

 if (is_miscop && (MCR & MCR_Misc_Op_Group_0)
               && (is_group1? (MCR & MCR_Misc_Op_Group_1): 1)) {
   dispatch_source = 0x800 | (MIB & 0x1ff) | (is_group1? 0x200: 0);
 } else {
   dispatch_source = 0xc00 | ((MIB >> 6) & 0x3ff);
 } 

 if (MInst_Dispatch_Source == 3) {
   /* May apply to source 1 as well */
   MInst_Disp_Address &= 0xc7f;
 } 

And now my own cry for help: I was two days into my latest attempt to figure 
out why my emulator isn't passing the instruction-stream tests from EXPT 
when I found out about Meroko being released. The specific case I'm having 
trouble with is when bit 14 is set in the return address for a POPJ and the 
MCR has the chain-enable bit set. Can anyone tell me what's supposed to 
happen here? 

 --Alastair Bridgewater 



More information about the LispM mailing list