Error 200 Turbo Pascal Division By Zero
Contents |
CRT.ASM unit included with these compilers. DOS based programs that were compiled using these buggy versions of the CRT unit will generate the RTE200 error when
Runtime Error 200 Dos
started on a CPU that is faster then 200 Mhz (though some non-Intel CPU's would tp7p5fix avoid the error up to 350 Mhz). One solution is to recompile the source code using a later version of Pascal, or
Zero Tsum Tsum
a fixed CRT.ASM unit. Obviously that's only possible if you have the source code available. The more common solution is to patch the .EXE file to disable the bug. There are several programs that allow this. The one I recommend is PatchCRT by Kennedy Software. This one is more compatible then most others, including TPPatch (which is less effecent, and uses German results and error text). I'd suggest keeping PatchCRT.exe in your path, so that you can run it from any directory simply by typing it followed by the name of the .EXE to be patched. PatchCRT will only be able to patch .EXE files which have not been compressed by an EXE compressor, such as aPACK, Diet, LZEXE, PKLite, Petite, UPX, etc. If PatchCRT fails to patch the .EXE, there is a good chance it is because the .EXE has been compressed. The best tool I have found to uncompress .EXE files is UNP. This has worked for about 80% of the compressed .EXE files I have encountered. The nice thing about UNP is it runs well under Windows. My second choice would be CUP386, but this works best in a plain DOS environment without any extended memory manager (including himem.sys or emm386.sys) installed. I have used this tool to uncompress several .EXE's which UNP was unable to do. Once you have sucessfully uncompressed a compressed .EXE file, you should then be able to run PatchCRT on it to remove the RTE200 bug. If all the above fails, the other option is to run a TSR (Terminate and Stay Resident) utility that will provide a kluge to the division by zero issue by catching this error as the .EXE is being run, and telling DOS to ignore it. The best TSR I have found to do this is TP7p5fix. Simply run the TP7P5.EXE to load the TSR into memory, and any programs being run in that DOS window will avoid the RTE200. Keep in mind that once you close this DOS Window, or
Categories 141.8K All Categories104.8K Programming Languages 6.4K Assembler Developer 1.9K Basic 39.9K C and C++ 4.3K C# 7.9K Delphi and Kylix 4 Haskell 9.6K Java 4.1K Pascal 1.3K Perl 2K PHP 524 Python 37 Ruby 4.4K VB.NET 1.6K VBA 20.8K Visual Basic 2.6K Game programming 312 Console programming 89 DirectX Game dev 1 Minecraft 110 Newbie Game Programmers 2 Oculus Rift 9K Applications 1.8K Computer Graphics 732 Computer Hardware 3.5K Database & SQL 526 Electronics development 1.6K Matlab 628 Sound & Music 257 XML Development 3.3K Classifieds 198 Co-operative Projects 189 For sale 190 FreeLance Software City 1.9K Jobs Available 601 Jobs Wanted 201 Wanted 2.9K Microsoft .NET 1.7K ASP.NET 1.1K .NET General 3.3K Miscellaneous 5 Join the Team 0 http://www.pcmicro.com/elebbs/faq/rte200.html User Profiles 354 Comments on this site 62 Computer Emulators 2.1K General programming 187 New programming languages 613 Off topic board 177 Mobile & Wireless 51 Android 124 Palm Pilot 335 Multimedia 151 Demo programming 184 MP3 programming 6.9K Operating Systems & Platforms 0 Bash scripts 22 Cloud Computing 365 Embedded / RTOS 53 FreeBSD 1.7K LINUX programming 368 MS-DOS 0 Shell scripting 320 Windows CE & Pocket PC 4.1K Windows programming 906 Software Development 408 Algorithms 68 http://www.programmersheaven.com/discussion/17674/error-200-division-by-zero Object Orientation 89 Project Management 90 Quality & Testing 250 Security 7.6K WEB-Development 1.8K Active Server Pages 61 AJAX 2 Bootstrap Themes 55 CGI Development 19 ColdFusion 224 Flash development 1.4K HTML & WEB-Design 1.4K Internet Development 2.2K JavaScript 35 JQuery 290 WEB Servers 153 WEB-Services / SOAP Error 200: Division by Zero Unknown April 1999 in Pascal I have a turbo pascal 7.0 for DOS and i tried executing one of my .PAS files from the compiler to check the code, and it returned the error 200 message. I heard this is caused by the use of an AGP graphics card. Is this true and how can i fix it! Please email ASAP.Thank you!!! 0 · Share on Facebook Comments Unknown April 1999 : I have a turbo pascal 7.0 for DOS and i tried executing one of my .PAS files from the compiler to check the code, and it returned the error 200 message. I heard this is caused by the use of an AGP graphics card. Is this true and how can i fix it! Please email ASAP.: Thank you!!!Good news: It's not caused by your AGP card.Bad news: It's caused by the Crt unit.This problem is caused when Crt are computing the correct timing values for the delay procedure. It works fine if you have got a computer slower than 200MHz but if you have got a fast comupter
MSS03USA 2006South Africa 2008 Last updated: July 18th, 1999(Uploaded May 17th, 1998) Runtime Error 200 running a Pascal program on fast systems (PII 266+) Contents of this document General information Programmers information Programmers Option 1: Enhancing the Delay-routine Programmers Option 2: Removing http://mtech.dk/thomsen/program/pasbug.php the Delay-routine Optional replacement delayloop Users Patch-program General information The Runtime Error 200 http://yosiesteban.blogspot.com/2010/12/error-200-division-by-zero.html (Division by zero) bug is not part of the Pentium Errors. It's a mistake Borland made. The initialization part of the CRT unit has a calibration loop for the procedure DELAY. The resulting value of a counter depends on the speed of the cpu. This counter has an overflow on error 200 high speed cpu's, including Pentium II 266 Mhz and faster. Actually it is the same bug that on earlier processors caused Delay to be inaccurate, that now causes programs to fail with a runtime error if they use the CRT unit! Some (earlier?) compiler versions mysteriously seem to go free of this bug - Delphi doesn't have them, for instance, and Turbo Pascal 6 error 200 turbo seems to work too. Please note: I take no responsibility for the potential damage people may do to their RTL's, working programs or vital data while using the instructions in this document. Keep backups of the appropriate files! (and then some...) Programmers As a programmer you have several different options. First of all you can disable the delay-routine completely. If you need a delay routine you can use the one found in this document, you can create your own, or you can find another one somewhere on the web. Another solution is to change the Delay-routine so it will work on todays fast systems. This solution found in this document should push the problem about 10 years into the future if we assume that Moores Law is correct. If you're having Borland Pascal, you also have the sources of the runtime library. Just make the following changes and recompile the complete runtime library. A MAKEFILE is included with the sources. If you have Turbo Pascal only, it's a bit more complicated. You'll need the sources of unit CRT. At least the files CRT.PAS, CRT.ASM and SE.ASM. They a
parte de la cláusula USES en tu programa. El error está en esa biblioteca y no tiene nada que ver con lo que hayas escrito tú. El problema con el RTL200 aparece con procesadores de más 166 MHZ si son Pentiums, o más de 200 MHZ si son Pentium MMX (y los AMD de esas o mayor velocidad también). Hoy en día esas máquinas están bastante obsoletas por lo que casi cualquier máquina actual experimentará el error mencionado. El RTL200 aparece cuando se declara la unidad estandar CRT ("uses crt;"), concretamente el problema está en la implementación del procedimiento Delay() dentro de esa unidad. El error de división por cero se debe a que cuando seiniciala unidad CRT debe calcular a cuántos ciclos de CPU equivale una centécima de segundos, para ello se pone un contador a contar los ciclos, usualmente en CPUs "lentos" la cantidad de ciclos por segundos no alcanzan a un valor muy grande como para desbordar un integer pero en los CPUs rápidos sí se produce un overflow, la variable correspondiente toma valor cero (por el overflow) y luego es usada en una división, es allí donde salta el error RTL200. ¿Como Solucionarlo? Para poder librarnos de este error son barios pasos los que hay que seguir, los cuales explico acontinuación: 1) Primero que nada vallamos a mi pc y luego a su disco local C:\ donde tenemos instalado el Turbo Pascal. Procedemos a Cambiar el nombre de la carpeta el cual es TurboPascal-7.0,cámbialopor TP. Hecho esto es tiempo de ir al paso 2. 2) Una vez hallas cambiado los nombres de las carpetas, pasamos a descargar el parche: Descargalo deAQUÍ 3) Ya descargado ahora pasamos a descomprimir: Descomprimimos todo en Disco Local (C:) \ TP \ BIN le damos click en Aceptar y pasamos al siguiente paso. 4) Daremos click en Inicio y luego en Ejecutar, en la ventana que nosaparezcaescribimos cmd y le damos a Aceptar: Ahora tendremos la ventana de comandos MS DOS Procedemos a escribir CD C:\ ypresionamosEnter. Ahora escribimos CD TPpresionamosEnter, luego escribimos CD BIN nuevamente Enter y tendremos esto. Seguimos en la misma ventana, ahora escribiremos t7tplfix y presionamos enter. bien ahora tendremos algoasí. Estas son