Partnership
Mantissa Agents Worldwide

If you are interested in becoming a Mantissa agent worldwide, please contact us.

 

Social Media
Mantissa on Twitter & LinkedIn

Come talk to us on:

 

z86VM - for example..
z/VOS can put computer technology within reach of every student...

...what if you could put computer technology within reach of every student...?

More»

 

IBM z/10
 
This mainframe can host literally thousands of PC's - virtually. Why not let it...?

The Solution

You may recall a few weeks back that we posted a body of code from a test program used for DAT structure creation, then issued a challenge offering a new iPod for anyone who could correctly identify the bug within...Now, it's high time we posted the solution. The explanation submitted by contest winner, Jens Remus - from Böblingen, Germany - was elegant, concise and right on the money. So much so that we decided to just post his submission right here on the blog, just as he wrote it. Please read on...

------------------------------------------------------------------------------------------

 

The error is on line 102:

ag r14,=AD(((stTL/4096))+dt_r3) | show length |

 

The Table Length (TL; bits 62 and 63) is calculated incorrectly and is causing an overflow which alters the Table Type (TT; bits 60 and 61 - or DT as you call it): stTL/4096 = 4 = B'100' (overflow) DT_R3 = B'0100' (TT/DT = B'01' = region 3rd) DT_R3 + stTL/4096 = B'0100' + B'100' = B'1000'

This causes a bad TT/DT = B'10' = "region 2nd" and a bad TL = B'00' = 0 = 512 entries = 4096 bytes.

 

The line should be corrected to (assuming stTL is never less than 4096 bytes):

ag r14,=AD(((stTL/4096)-1)+dt_r3) | show length |

 
Greetings from Germany, Jens Remus

 

-----------------------------------------------------------------------------------------

 

Thanks again, Jens, and thanks to all of you who participated. Hope you all had as much fun as we did! 

 

 

/&