| PLEX86 | ||
Zeroing core. 2573Zeroing core. 2577 The tradition is from C, but it's pretty widely used other places as well. Another convention is to end the number...
something similar ... was the MVCL instruction introduced on 370. the source and destination lengths were different and if the source length was less than the destination length ... there was a pad-fill value. so you could set the source length to zero, the destination length to all of memory and the pad-fill value to zero. Zeroing core. 2575 MOV -(PC), -(PC) IIRC It didn't leave zeros behind. I'm not sure what happened at address zero. Which... the was an early microcode bug on the 370-125 for the MVCL instruction. all 360 instructions would pretest start and ending addresses for valid and abort with approriate failure if either was a problem. MVCL was a new type of instruction introduced on 370 which incrementally executed and allowed restartable ... and that things like access to memroy checking was done incrementally as the instruction got to that address. 370-125 bug was that it did the pretesting rules from 360 ... instead of the 370 incremental testing rules. vm370 used the MVCL at boot to both clear and test for end of memory ... setting a destination length to max. 125 would abort w-o executing any of the instruction (doing pretest of ending address instead of testing each location as processed) ... so the result appeared as if the machine didn't have any memory. theer was also story about Zeroing core. 2574 Couple of problem with this, if your objective is to clear ALL of memory. If the... somewhere in the history ... somebody decided that the TR and TRT instructions had a bug. TR-TRT references a 256byte table ... the value of each character in the source is used to index the 256byte table. the 360 implementation did pretest on the starting address of the table and buttumed the ending address was +256 (for pretest before starting the instruction). however, it is possible to use the instructions with "short" tables for situations where the source input is known to contain constrained values. one scenario is where the starting address plus 256 crosses a page boundary and might result in a page fault ... but the actual end of short table wouldn't so the TR-TRT insturction implementation was changed so that it tests the +256 ending address and if there possibly is an access problem ... the instruction is then pre-executed testing each of the possible source character values to see if it results in a table address resulting in some sort of access issue ... like a page fault. instead of automatically taking an exception with access issue with +256 ending address ... it prechecks each possible source character processing (to see if it will result in calculated table position on the other side of the access boundary). i have some vague recollection of different MVCL microcode bug on some machine when there was full 16mbytes of addressing memory (the 125 m'code bug i got involved in diagnosing, but this one i've just heard stories about). microcode had been dependent on getting an invalid memory address to stop the operation ... however with full 16mbytes of addressable memory, the address wrap from 16mbytes back to zero and kept going. the intention with 16mbyte length was to stop at end of memory as opposed to wrapping around and actually wiping all of memory. --
|
||||
Alt Folklore Computers from Newsgroups The #1 Usenet Provider on the Internet
|
||||