BMEMCHECKAQ62MEMCHECKDOC3OvMEMCHECK.A86e   !"#$%&'()o+*,-/.0132457698:;=<?>A@BCDEFGHKILJMNOPRSQUTVWXYZ[\]^_`cbdaw]% Jzg~[kwΔ Pvѻp3s|ZID&sk4sm6ԅ65̢]N^ 86J =\: riُ]Q2cx z,,x I=ږxm3EՎ_. yKV;.zFGj3j@Ԟb M͸DoOL[:εYƳm~4٪m܀eS3Ƴ-x4;ڳU*q(Lgk~i5ўV X6ExߗEPNW\ ss K_TLC9uF\0g>G7C9uF\W)%)Oq徲H}-[qZ9ӿ1s&z`e@6]BDwF?wqciFl ԱaShEve*z8Ң3M7mQDgc?o\hc^&ѷ~ǻ-Y[™<Eg􏝸CX>Y~hAwF?'rD>SEoOuǡGjC3a?#daz/z~;u=OVkG'{[jIn-zޟu`eeb5+lL*qzwIʌ{Tٓy5Pns!ha-,ѧr!WcƗil3.£5b6~XDgc?q ^gKjC lUǹB8]}Z'5pEҕEx_F=YEWH~~?h!d}myޗ9T+; d9 ܍s,:}REgI~Hѧr!WqzZg^k:N׊1Q7 Dgc?qr}Z<_:[q:NWE5 ܴCte[jS LM|iwce9> 3ME?sOS9MY}ا5pG{p[:NnV}G;`W+ ;Oi[⌍y@mKLs_g\ζV5z3a?E ~Ujak7@qWuAwF9"xF_A Cf3;rOvkf .&5k*yǢOVk9sk(9s9Bj9ுs3~l[ ;.ەrJD֞Xx͋+~1X6篁;esDyk!+ƏvJk6CQ9Go_Eog@uNQשTc_PT iq x`^&[wF?wqζ/cx48a sD~?4 ;4kƂ]뎃>m36o-1rG'"?tuJ׋)ڿnBW]wF9G~;ZٸDoѷ~'PW}Z<軉Evo*z8Ң63HWԡf\軉}}pEgI [(l mVrwѷ~ǻ軉g\]g 3`qE*[mW#-z2Q"ʢG@>O=#Dߚ_m:,}}OOcƢEGs5&ADۉ>z8ҢG@>Oa/x<^xҏ~lj3Mo wnj??E3 nDEv#-j́ѷW5 D6>GgEc6\j[s`MR'[e ,'ѷWΉ vrYG nDEv=iQk,@>Oa/x<^x#xEgI6D?E?;軉EG6$\L*S6zukxNqWȂ_tz}Y=D3Ջ~vEV0 UCekpaST}uhا#x_OzOak3M̰h@3_DگCRoP-m6D?sO>Y:$z_*Q3_DگCRoP-m~H}ZuH#*-pnjE?;ޢo6$F jVl E{-Mȃsv|!N'рm}-G@>ONJ;^t?tզ^r ؙ>6 o7d3C>fNJ~v9F>Y=DNJ~?tâ$!;4MAwFiuOVkOx D* !IW.k YP\e(aؼlWj6V}EK[kXdL)|e30fsj!-rq$zOVk6 f\'rsϢWEqp ٬E?yǟz95uኖPyڋNa3Bj`>zCЮ#dǿ4d=g';զ'=g˼}҈g˞3BAC uA5ØͩcEHrYSȂ*IW.{j5M(gj` ER'[Gu.#dǿ4mplu.#_m nAT<{_[^#ƞR4_!Vh.J.sg[E fUE)ϙsX0[ d SH*.X}L!`5[7S]0qzwS!Op뎃-9sF>OI W`袏Ǔ~5pSpSq*tE'h뎃篁8-;8+CqW3-dynj?ӻ}ZOkя]w/ߛsBR>Y~hA1n daz-;8 IylB/$D3k VQp#daz=8)-V胊 V^ I";8uoN]g V^ DjC5p(daz/^-z,m| P)CχX6I*qx%(51++ LM44_uz 4g0c:W*1A]Q2c``tTc^ޚa"TU/miiRяW: d5tazߴi0c:W: DɱcN:RTmcu 6N-Cʞsש5dHS} zN1yLJ<Ó1*:2J1k$ŹRuiQ7qc:W: .0ftVX*Ƭٓ j@m2c<| (f\gG=WBʅLDmvc:W: ZfYCÓ1٪u@SHj@l;uy₵} ??4_4jSݶf ]3Od)?k8 >=_jnlRK5}E$W<| +]BwSjqSXx̰)>?4_4+]q-ژe353-7f1ݘq1˦fa3gݗ9՘hcƗԟݘq N?SCMVKou.n04DDOCUMENTATION FOR FILE: MEMCHECK.A86 WRITTEN BY: DAVE SQUIRES 11 ARTHUR CT. SATELLITE BEACH, FL 32937 PURPOSE OF PROGRAM: Provides memory test capability for up to 15 "banks" of 64KB. Up to 15 64KB segments of memory may be tested - all but the segment at paragraph 0000. This program was especially written for a CompuPro system using the CPU 85/88 or CPU 86/87 and one of the 8086/88 operating systems. In particular, this implementation assumes that a CompuPro system support card serial port is the system console interface, although since source is provided, the program could easily be adapted to other serial interface cards. The program also assumes that a CompuPro DISK3 hard disk controller is present in the system. The DISK3 controller is disabled before the memory test begins - just in case memory is bad and the processor goes berserk. If you don't have a DISK3, just eliminate the appropriate lines (commented). OPERATION: The program loads wherever the operating system puts it, then promptly relocates itself in the lowest 64KB memory chunk available (and assumed to exist for any 8086/88 system). The program then "takes over the system" by disabling interrupts. The program provides all of its own character input/output routines since it has probably clobbered (or at least paralyzed) the operating system by now. The program then prompts the user for the range of 64KB memory chunks to test. The user may specify ranges from the second 64KB chunk thru the sixteenth chunk (corresponding to segments 1000 thru F000 hex) or any contiguous range in between. As far as the memory test scheme itself, the program checks each 64KB chunk individually. First the program writes 32K words (16 bits) corresponding to the COMPLEMENT of the word offset in the chunk. It does this for all 32K words, THEN goes back and verifies all locations in the chunk. Any errors are displayed. Then the program fills each word in the same chunk with its word offset. As before, it does this for all 32K words in the 64KB chunk before going back to verify all locations. Again, any errors are logged. Upon completion of these two complete fill/verify passes, the program proceeds with the next 64KB chunk to test, until all requested chunks have been tested. If the looping option was used, the program will test all specified memory continuously and display the total number of passes through all specified memory. This simple test algorithm is fast and is adequate for systems with static memory (where pattern sensitivity is not so common) and does detect many memory address decoding problems. Obviously this program will also work with dynamic memory, however the test is not as thorough. Once the option to quit (Q) has been taken, the program issues a final message to advise you that your system has been halted. You must reset and reboot to bring your system to life after this. FUTURE ENHANCEMENTS: Future enhancements may include a new option to allow the program to relocate itself to any specified memory segment. This will make it easy to test ALL of your system's memory. Currently, all but the lowest 64KB segment can be tested without reconfiguring memory card address switches/jumpers. DISCLAIMER: Although this program has been tested to run acceptably in my particular hardware environment, there are no guarantees made concerning freedom from bugs and "gotchas", especially on a different system. The source is provided and may be used as is or modified for any purpose. Any comments or specific suggestions for improvement are welcomed and may be left for me in the form of a message.