Increase upper range of idlen to 21 bits
When 'BigMap' support was added drive sizes were such that (see table and discussion in Doc/BigDisc/BigDiscs) an upper maximum of 19 bits for idlen was appropriate. Now that drives of 2^29 sectors are readily available (the limit of 'BigDisc' support) the idlen limit of 19 has meant the minimum object size has grown too. This change uses the remaining 2 indirect disc address bits to get a factor x4 reduction in minimum object size, at the expense of a 4x larger map. Defns.s: Parameterise idlen for big and small maps. Small's limit remains 15, big's limit raised from 19 to 21. Identify.s: When mounting, use the parameterised idlen upper limits to decide whether it's a valid disc or not. FileCore32.s: Adjust the BIC masks to knock out the extra 2 bits when forming the hash of the object id. Fix long standing bug updating the wrong entry in the hash table (due to LSL #2 giving 5x the entry index, rather than 3x). FileCore15.s: Take care not to shift b20 of idlen into C as a side effect of a flags changing opcode. An audit of FileCore showed this to be the only site where the subsequent condition code(s) depended on C. Tools/basic/DispMap: Updated to support BigMaps at all, previously it only worked with NewMap discs. Tested with an assortment of drives with FSBash for 300k cycles of scrambling for idlen = 17, 19, 20 & 21. Version 3.75. Tagged as 'FileCore-3_75'
Showing with 47 additions and 39 deletions