Проблемы при компиляции Basic программ компилятором Solid VBC

Door Axe_chita

Supporter (15)

afbeelding van Axe_chita

05-10-2022, 09:14

Здравствуйте! Кто нибудь встречался с проблемами при компиляции Basic программ компилятором Solid V-Basic 2.6?
Имеется следующий код, компилируется в эмуляторе WebMSX с sysadminmosaic.ru.

10 SCREEN 2:COLOR 15,4,4:CLS
20 X1=1:Y1=1:X2=1:Y2=1
30 X3=2:Y3=5:X4=5:Y4=2
40 CL=2
50 FOR I=0 TO 1000
60 LINE(X1,X2)-(X2,Y2),CL
70 CL=CL+0.014:IF CL>15.9 THEN CL=2
80 X1=X1+X3:IF X1>255 THEN X1=255:X3=-X3
90 Y1=Y1+Y3:IF Y1>175 THEN Y1=175:Y3=-Y3
100 X2=X2+X4:IF X2>255 THEN X2=255:X4=-X4
110 Y2=Y2+Y4:IF Y2>175 THEN Y2=175:Y4=-Y4
120 IF X1<0 THEN X1=0:X3=-X3
130 IF Y1<0 THEN Y1=0:Y3=-Y3
140 IF X2<0 THEN X2=0:X4=-X4
150 IF Y2<0 THEN Y2=0:Y4=-Y4
160 NEXT I
170 STOP

При попытке скомпилировать его командой vbc viraj.bas, компиляция запускается и происходит перезагрузка. После перезагрузки попытка запустить компилятор ни к чему не приводит. Помогает только полное "отключение" виртуального MSX-а
Если запустить компиляцию командой vbc -l viraj.bas, компиляция запускается и останавливается на строке 70 (выводит её на экран) и не на что не реагирует.
Далее есть другая программа (basic benchmark) BM2

110 PRINT "START"
111 TIME=0
120 K=0
130 K=K+1
190 IF K<1000 THEN GOTO 130
191 T!=TIME/60
500 PRINT "STOP"
501 PRINT T!;"sec"
550 STOP

она компилируется и линкуется без ошибок, но в строке 130 значение К не увеличивается на один, а становится равным -1 и не изменяется при исполнении.

Aangemeld of registreer om reacties te plaatsen

Van GreyWolf

Champion (419)

afbeelding van GreyWolf

14-10-2022, 10:17

Я думаю, что никто про это ничего не скажет...
Этот проект так и остался не доделанный. Статья написана в память о Егоре.

Van Axe_chita

Supporter (15)

afbeelding van Axe_chita

18-10-2022, 16:21

Или файл компилятора VBC битый, поскольку при полностью отключенной оптимизации он сыпет мусор в ASM, как будто происходит переполнение текстового буфера.
И к проекту Егора нет никаких претензий, он успел его отпустить в свободное плавание.