Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   WinXP & Borland Pascal 7.0 (http://forum.oszone.net/showthread.php?t=30242)

MF CAP 18-03-2003 20:03 207902

Вобщем обьснять не буду зачем мне это понадобилось... а трабл такой при компиляци объекта(попытке запустить прогу ctrl+F9) паскаль ругаетсяся типо дивижн бу зеро... любая прога... даже 1+1... все равно!
вот логи
Цитата:

C:\PASCAL>turbo
Turbo Pascal *Version 7.0 *Copyright (c) 1983,92 Borland International
Runtime error 200 at 0999:0091.
C:\PASCAL>ver
Microsoft Windows XP [Версия 5.1.2600]
может что посоветуете... уж ооочень не хочется вин9Х опять стваить...:)

Добавлено:

эээ! глюк изза строчки Uses CRT... что делать и кто виноват? ЗЫ: без нее никак... сами понимаете!

ilusha sh 18-03-2003 23:43 207903

Такая проблема бывает связана со следующим.

Как я помню, в CRT лежит процедура delay, которая
(по крайней мере, во многих компиляторах)  реализуется
как пустой цикл. Можно предположить, что количество
итераций N необходимых на единицу задержки определяется
так: во время инициализации модуля запускается достаточно
большой цикл и далее  получаем  
N=число итераций большого цикла /T, где  T - время его исполнения.
Если T=0, то имеем runtime error 200.

Crew 19-03-2003 00:37 207904

ilusha sh
И что, delay вырезать надо?

Ork Yason 19-03-2003 09:46 207905

ыыыыыыы...
такое было, но даже под досом... но давно ;)
попробуй там в параметрах орболочки поковырять сопроцессор...

idLe 19-03-2003 10:43 207906

Я как-то тоже столкнулся с этой проблемой, и единственное, что придумал - переписать на асме все жизненно необходимые функции. Т.к. прога была небольшой - меня на них хватило :) Вот чуть-чуть:

procedure cls;assembler; {clear screen}
asm
   mov AH,06
   mov AL,0
   mov CX,0
   mov DH,50
   mov DL,80
   mov BH,07
   int 10h
   mov DH,0
   mov DL,0
   mov AH,02
   xor BH,BH
   int 10h
end;

procedure gtxy(x, y : byte);assembler; {gotoxy}
asm
   mov DH,byte ptr y          { coords        x}
   mov DL,byte ptr x          {               y}
   mov AH,02
   int 10h
end;

function getkey:char;assembler; {аналог readkey}
asm
   mov AH,10h
   int 16h
end;

function getextkey:integer;assembler;
{аналог readkey- только дает  расширенный код символа}
asm
   mov AH,10h
   int 16h

procedure wait(time:longint); assembler; {эту я откуда-то сдул}
asm
   mov AH,86h
   mov DX,word ptr time
   mov CX,word ptr time+2
   int 15h
end;

noname00.pas 19-03-2003 11:01 207907

Проблема решается двумя способами:
1) Положить в соответствующий каталог пропатченный файл crt.tpu (он у меня где-то был - могу поискать)

2) Взять любой дизассемблер и в программе, выдающей ошибку найти примерно следующее:
not ax
not dx
mov cx,00037
div cx

И в этом месте забить div cx nop-ами.

П.С. Только что проверил - у меня есть пропатченный crt.tpu
П.П.С. В любом случае процедура delay работать уже не будет - нужно делать его своими силами. Я бы например повесил свою процедуру на тик таймера и замерил бы, сколько операций делается за тик.

Olga Pashkevitch 07-10-2003 17:29 207908

>Может, кому-нибудь не жалко пропатченный crt.tpu прислать, про который тут выше говорили?

Спасибо добрым людям за модуль. Просьба снимается.

[s]Исправлено: Olga Pashkevitch, 18:14 8-10-2003[/s]


Время: 15:18.

Время: 15:18.
© OSzone.net 2001-