PC-01 Lviv

It is currently 26 Apr 2024, 20:42

Forum Games WEB Tape Loader Twitter RSS

All times are UTC+03:00




Post new topic  Reply to topic  [ 53 posts ]  Go to page Previous 1 2 3 4 Next
Author Message
PostPosted: 30 Apr 2021, 11:55 
Offline

Joined: 18 May 2016, 19:55
Posts: 426
REPEAT UNTIL
Code:
MODULE DemoLvov; (*$MAIN*)
IMPORT Lvov;
VAR b1:INT8;
PROCEDURE PUSTO; BEGIN END PUSTO;

BEGIN
REPEAT

PUSTO;

UNTIL b1< 127
END DemoLvov.
Code:
{Дизкомпилированный файл: 'DemoLvov.lvt'}
{Формат LVT}
{ Начальный адрес: $0000 (0) }
{ Конечный адрес : $001F (31) }
{ Адрес старта   : $0000 (0) }

program Project; uses  uMD01u in 'uMD01u.pas';

VAR
L0007, L0008, L0019, L001A
:TLabelLV;

BEGIN
INITCompiler;

SetFullNameLVTfile('DemoLvov.lvt');
SetNameInternalKOI(#$44+#$65+#$6D+#$6F+#$4C+#$76);

SetAddrRAM($0000);

StartProgram;
Call(L0008);
JMP($F875);
DB($E9);

LabelA(L0007);     //PROCEDURE PUSTO; BEGIN END PUSTO;
RET;

	LabelA(L0008);     // REPEAT

	Call(L0007);     //PUSTO;

	LxiHL(L0019);     //HL=^b1

	Call(L001A);     // Опять двадцать пять!!!!!!!!!!!

	MovAL;
	Sui($7F);     // вычитание  127 
	cmc;        // инверсия признака с (насколько я помню)
	Jc(L0008);      //UNTIL b1< 127

	RET;

LabelA(L0019);     // VAR b1:INT8;
DB($00);

LabelA(L001A);     // Опять двадцать пять!!!!!!!!!!!
MovAM;
MovLA;
rlc;
SbbA;
MovHA;
RET;
FINALCompiler;
END.
Да что это за обработка такая ?
Code:
LabelA(L001A);     // Опять двадцать пять!!!!!!!!!!!
MovAM;
MovLA;
rlc;
SbbA;
MovHA;
RET;


Top
   
PostPosted: 30 Apr 2021, 13:03 
Offline

Joined: 18 May 2016, 19:55
Posts: 426
НДА!.... Если коротко - Я ПРОСТО В ШОКЕ!
Остальное посмотрите сами!
Code:
MODULE DemoLvov; (*$MAIN*)
IMPORT Lvov;
VAR b1,b2:INT8;
PROCEDURE PUSTO1; BEGIN b1:=b2;END PUSTO1;
PROCEDURE PUSTO2(b1,b2:INT8); BEGIN b1:=b2;END PUSTO2;
PROCEDURE PUSTO3(VAR b1,b2:INT8); BEGIN b1:=b2;END PUSTO3;

BEGIN

PUSTO1;
PUSTO2(b1,b2);
PUSTO3(@b1,@b2);
(* Забавно  з етими "собачками", правда может это не то чего я хочу и ожидаю*)

(* IF b1<>b2 THEN PUSTO2(b1,b2); END; *)
(* IF b1><b2 THEN PUSTO2(b1,b2); END; *)
(* А ЧТО НЕРАВНО НЕТУ В ОБЕРОНЕ ТАКОГО ИЛИ КАКОЙ ЗНАЧОК ТО ?*)
IF b1=b2 THEN PUSTO2(b1,b2); END;
IF b1>b2 THEN PUSTO2(b1,b2); END;
IF b1<b2 THEN PUSTO2(b1,b2); END;

IF b1=b2 THEN PUSTO3(@b1,@b2); END;
IF b1>b2 THEN PUSTO3(@b1,@b2); END;
IF b1<b2 THEN PUSTO3(@b1,@b2); END;


END DemoLvov.
Code:
{Дизкомпилированный файл: 'DemoLvov.lvt'}
{Формат LVT}
{ Начальный адрес: $0000 (0) }
{ Конечный адрес : $017D (381) }
{ Адрес старта   : $0000 (0) }

program Project; uses  uMD01u in 'uMD01u.pas';

VAR
L0000, L0004, L0007, L0012, L0020, L0030, L007A, L00A1, L00C8, L00E9, 
L010A, L012B, L012C{b1}, L012D{b2}, L012E, L0134, L0141, L014A, L015A, L0160, 
L0170
:TLabelLV;

BEGIN
INITCompiler;

SetFullNameLVTfile('DemoLvov.lvt');
SetNameInternalKOI(#$44+#$65+#$6D+#$6F+#$4C+#$76);

SetAddrRAM($0000);

StartProgram;

LabelA(L0000);
Call(L0030);

LABELp1(L0004);
JMP($F875);
DB($E9);

	LabelA(L0007);// похоже на что-то чему-то равно возможно PROCEDURE PUSTO1; BEGIN b1:=b2;END PUSTO1;
	LxiHL(L012D{b2});
	Call(L012E);// видимо проверка пределов каких-то
	MovAL;
	Sta(L012C{b1});
	RET;

	LabelA(L0012);
	LxiHL(L0004);// !??!?!
	DadSP;
	PushHL;
	DcxHL;
	DcxHL;
	Call(L012E);// видимо проверка пределов каких-то
	PopDE;
	MovAL;
	StaxDE;
	RET;

	LabelA(L0020);
	LxiHL(L0004);
	Call(L0141);
	LxiHL(L0004);// !??!?!
	Call(L0134);
	PopDE;
	MovAL;
	StaxDE;
	RET;

	LabelA(L0030);// Call со старта прямо сюда
	Call(L0007);
	LxiHL(L012C{b1});
	Call(L012E);// видимо проверка пределов каких-то
	PushHL;
	LxiHL(L012D{b2});
Call(L012E);// видимо проверка пределов каких-то
PushHL;
Call(L0012);
PopBC;
PopBC;
LxiHL(L012C{b1});
PushHL;
LxiHL(L012D{b2});
PushHL;
Call(L0020);
PopBC;
PopBC;
LxiHL(L012C{b1});
Call(L012E);// видимо проверка пределов каких-то
PushHL;
LxiHL(L012D{b2});
Call(L012E);// видимо проверка пределов каких-то
PopDE;
Call(L0170);
Jnc(L007A);
LxiHL(L012C{b1});
Call(L012E);// видимо проверка пределов каких-то
PushHL;
LxiHL(L012D{b2});
Call(L012E);// видимо проверка пределов каких-то
PushHL;
Call(L0012);
PopBC;
PopBC;

LabelA(L007A);
LxiHL(L012C{b1});
Call(L012E);// видимо проверка пределов каких-то
PushHL;
LxiHL(L012D{b2});
Call(L012E);// видимо проверка пределов каких-то
PopDE;
Call(L014A);
Jnc(L00A1);

LxiHL(L012C{b1});
Call(L012E);// видимо проверка пределов каких-то
PushHL;
LxiHL(L012D{b2});
Call(L012E);// видимо проверка пределов каких-то
PushHL;
Call(L0012);
PopBC;
PopBC;

LabelA(L00A1);
LxiHL(L012C{b1});
Call(L012E);// видимо проверка пределов каких-то
PushHL;
LxiHL(L012D{b2});
Call(L012E);// видимо проверка пределов каких-то
PopDE;
Call(L0160);
Jnc(L00C8);
LxiHL(L012C{b1});
Call(L012E);// видимо проверка пределов каких-то
PushHL;
LxiHL(L012D{b2});
Call(L012E);// видимо проверка пределов каких-то
PushHL;
Call(L0012);
PopBC;
PopBC;

LabelA(L00C8);
LxiHL(L012C{b1});
Call(L012E);// видимо проверка пределов каких-то
PushHL;
LxiHL(L012D{b2});
Call(L012E);// видимо проверка пределов каких-то
PopDE;
Call(L0170);
Jnc(L00E9);
LxiHL(L012C{b1});
PushHL;
LxiHL(L012D{b2});
PushHL;
Call(L0020);
PopBC;
PopBC;

LabelA(L00E9);
LxiHL(L012C{b1});
Call(L012E);// видимо проверка пределов каких-то
PushHL;
LxiHL(L012D{b2});
Call(L012E);// видимо проверка пределов каких-то
PopDE;
Call(L014A);
Jnc(L010A);
LxiHL(L012C{b1});
PushHL;
LxiHL(L012D{b2});
PushHL;
Call(L0020);
PopBC;
PopBC;

LabelA(L010A);
LxiHL(L012C{b1});
Call(L012E);// видимо проверка пределов каких-то
PushHL;
LxiHL(L012D{b2});
Call(L012E);// видимо проверка пределов каких-то
PopDE;
Call(L0160);// переход на конец RET;
Jnc(L012B);
LxiHL(L012C{b1});
PushHL;
LxiHL(L012D{b2});
PushHL;
Call(L0020);
PopBC;
PopBC;

LabelA(L012B);
RET;

LabelA(L012C{b1});
DB($00);

LabelA(L012D{b2});
DB($00);

LabelA(L012E);// видимо проверка пределов каких-то
MovAM;
MovLA;
rlc;
SbbA;
MovHA;
RET;

	LabelA(L0134);
	DadSP;
	InxHL;
	InxHL;
	MovAM;
	InxHL;
	MovHM;
	MovLA;
	MovAM;
	MovLA;
	rlc;
	SbbA;
	MovHA;
	RET;

LabelA(L0141);
DadSP;
InxHL;
InxHL;
MovAM;
InxHL;
MovHM;
MovLA;
xtHL;
PCHL;

LabelA(L014A);
MovAD;
Adi($80);
MovBA;
MovAH;
Adi($80);
CmpB;
Jnz(L015A);
MovAL;
CmpE;
JMP(L015A);

LabelA(L015A);
LxiHL(L0000);
Rnc;
InxHL;
RET;

LabelA(L0160);
MovAH;
Adi($80);
MovBA;
MovAD;
Adi($80);
CmpB;
Jnz(L015A);
MovAE;
CmpL;
JMP(L015A);

LabelA(L0170);
MovAL;
SubE;
MovLA;
MovAH;
SbbD;
MovHA;
OraL;
InxHL;
stc;
Rz;
XraA;
MovLA;
MovHA;
RET;

FINALCompiler;
END.



Top
   
PostPosted: 30 Apr 2021, 14:56 
Offline

Joined: 18 May 2016, 19:55
Posts: 426
Зорко,
Как я понимаю, твоя система, не только ж для РК86 или Львова...
А скажи-ка пожалуйста, где можна посмотреть ЕЩЕ какие-то игры (программы) (кроме "Охоты на лис"), написанные на твоей системе для ЛЮБЫХ ретро-машин ? Дай ссылки пожалуйста. Ну или готовые файлы. Что тебе легче, мне все равно.
Ну похвастайся перед НАРОДОМ! Рекламни возможности своей системы!
В частности интересуют именно ДИНАМИЧЕСКИЕ игры (программы), подобные моему "Лабиринт"
http://pc01.lviv.ua/games/page.php?name=saslab
http://pc01.lviv.ua/games/page.php?name=saslab2018
а не "крестики-нолики" или "Морской бой в "тетрадочку".

А то я вот посмотрел как компилируются написанное твоей системой (см.выше сообщения), так почему-то свой МАДЛ вспомнил! Который ты, критиковал даже не видя его!
Quote:
Который свой МАДЛ всё никак не допилит чтоб кому-то хотя бы показать? .... Нахожу ситуацию даже комичной
Это было сказано вот здесь:
viewtopic.php?f=8&t=391&p=5330&hilit=%D ... 0%9B#p5330
Вот я то, точно сейчас вижу ситуацию очень даже комичной!

Я твою диковинку хотя бы рассмотрел ХОРОШЕНЬКО!
И понял, что скоре всего, вряд ли я напишу на ней, что-то подобное моему "Лабиринт".
А "Крестики-нолики" или "Морской бой в "тетрадочку", "Охота на лис" написание такого или подобного меня не интересует и не впечатляет!
"Лабиринт", между прочим, писанный на моём несчастном, тогда еще (в 2014 году)"кривом" МАДЛе! Которым тогда мог пользоваться только я! И то неуверенно!

На мой вопрос где-то в темах, о том, смогу ли я написать на твоей системе, что-то подобное "Лабиринт", насколько я помню, ты уклонился от ответа! Будто бы тебе это не интересно и ты вообще не понимаешь о чём и речь то идёт! Что-то мне словечко вспоминается, которым я тебя обозвал и ты его за оскорбление посчитал! Никакое то оскорбление! То УЖЕ факт! Даже судя по "отмазам" на мой вопрос о возможности написать подобие "Лабиринт" на твоей системе!

И вот возвращаюсь к вопросу который я Зорко задал первым:
Quote:
А ДЛЯ КОГО ЭТО ВСЕ ДЕЛАЕТСЯ ?!
вот здесь: viewtopic.php?f=20&t=223#p5211

Зорко ответ был такой:
Quote:
Эта среда разработки делалась в первую очередь для себя из желания писать для ретро на хорошем языке.
Это вот здесь: viewtopic.php?f=20&t=223#p5212
Зорко, ответ неверный!
Верный ответ:
Система предназначена для любителей написания игр подобных "Крестики-нолики", а так же возможно послужит развлечением для детей, в нарисовании всяких кубиков, кружочков и прочего! Возможно просто позабавляет, любителей позабавлятся и поприкалыватся на чём-то подобном! Для более же серьёзных целей а также динамических игр (требующих хорошего быстродействия) и прочего подобного, - система не предназначена! Хотя вполне можете попытаться, исходя из соображений таких так - "так ото - чисто по-приколу"!

(прям готовое описание к твоей системе! Дарю! Вставь где-то там в архиве к своей системе)

А ты про какой-то там "на хорошем языке".

Надо быть честным с другими людьми!
И тогда тебя не будут обзывать "Мудаком"!


Ну если такие примитивные конструкции компилировать в такой код, который за каждым "b1:=b2;" или "IF b1=b2 THEN" прокручивает какие-то процедуры (похожие на какие-то, то ли проверки границ для данного типа, то ли перестраховки выхода за границы данного типа или бог весть что то вообще такое), - НУ ИЗВИНИ МЕНЯ!

Не, ну как я уже писал, поприкалыватся, позабавлятся подобным вполне можно!
И я не исключаю, что и я еще позабавляюсь с этим какое-то время, но не более!


Top
   
PostPosted: 30 Apr 2021, 15:44 
Offline

Joined: 18 May 2016, 19:55
Posts: 426
У меня б на МАДЛе (МД02) который я обвешал макросами, последний ПОДОБНЫЙ код выглядел бы так:
Code:
Var b1,b2:TByteLV;
PUSTO1,PUSTO2,PUSTO3:TProcedureLV;
BEGIN
INITCompiler;

VarByte(b1,'b1',0);VarByte(b2,'b2',0);

BEGINPROCEDURE(PUSTO1);
R(b1,b2);
ENDPROCEDURE;

BEGINPROCEDURE(PUSTO2);
R(b1,b2);
ENDPROCEDURE;

BEGINPROCEDURE(PUSTO3);
R(b1,b2);
ENDPROCEDURE;

StartProgram;
PROCs(PUSTO1,PUSTO2,PUSTO3);

IfIs(b1,b2,PUSTO2);
IfMore(b1,b2,PUSTO2);
IfLess(b1,b2,PUSTO2);

IfIs(b1,b2,PUSTO3);
IfMore(b1,b2,PUSTO3);
IfLess(b1,b2,PUSTO3);

FINALCompiler;
END.
И дискомпиляция вот такая
Code:
{Дизкомпилированный файл: '_res.LVT'}
{Формат LVT}
{ Начальный адрес: $0000 (0) }
{ Конечный адрес : $0061 (97) }
{ Адрес старта   : $0017 (23) }

program Project; uses  uMD01u in 'uMD01u.pas';

VAR
L0000, L0001, L0002, L0009, L0010
:TLabelLV;

BEGIN
INITCompiler;

SetFullNameLVTfile('_res.LVT');
SetNameInternalKOI(#$20+#$20+#$20+#$20+#$20+#$20);

SetAddrRAM($0000);

LabelA(L0000);
DB($00);

LabelA(L0001);
DB($00);

LabelA(L0002);
Lda(L0001);
Sta(L0000);
RET;

LabelA(L0009);
Lda(L0001);
Sta(L0000);
RET;

LabelA(L0010);
Lda(L0001);
Sta(L0000);
RET;

StartProgram;
Call(L0002);
Call(L0009);
Call(L0010);
Lda(L0001);
MovBA;
Lda(L0000);
CmpB;
Cz(L0009);
Lda(L0001);
MovBA;
Lda(L0000);
CmpB;
Cp(L0009);
Lda(L0001);
MovBA;
Lda(L0000);
CmpB;
Cm(L0009);
Lda(L0001);
MovBA;
Lda(L0000);
CmpB;
Cz(L0010);
Lda(L0001);
MovBA;
Lda(L0000);
CmpB;
Cp(L0010);
Lda(L0001);
MovBA;
Lda(L0000);
CmpB;
Cm(L0010);
FINALCompiler;
END.
Размер лвт этого - 120байт
лвт Зорко, - - 404 байт


Top
   
PostPosted: 30 Apr 2021, 22:38 
Offline

Joined: 18 May 2016, 19:55
Posts: 426
Время компиляции.
Когда я писал МАДЛ, еще первые разы, задумывался он очень крутой и изящный. :-)
И пока я его писал и отрабатывал его, компиляция игры "Лабиринт" на нём длилась 4-6 секунд.
У меня это начало вызывать отвращение! И я понял одну простою истину, - если же это у меня вызывает отвращение, подобная длительность компиляции, то другие только лишь из-за этого и вовсе пользоваться не будут таким!
Вот давайте посмотрим какая ситуция с K580Dev.

Создал DemoLvov.Mod
из повторяющихся блока строк
Lvov.CLS(255);
Lvov.PSET(0, 32, 3);
Lvov.PRESET(10, 33);
Lvov.LINE(0, 0, 128, 128, 2);
Lvov.LINE(0, 10, 128, 138, 1);
Lvov.BOX(50, 50, 75, 75, 3);
Lvov.FIL_BOX(150, 150, 75, 75, 3);
Lvov.COLOR(5, 0);
Lvov.PAINT(130, 30, 2, 3);

Всего из строк из таких команд с 5 по 3181 (353 блоков)
Всего строк в файле DemoLvov.Mod, = 3188
Размер файла получился - 89751 байт
Запустил на компиляцию в K580Dev.
Компиляция длилась 3 мин 13 секунд т.е. = 193 секунды.
Видимо у меня компьютер какой-то не такой. :-) Сильно ретро. :-)
Попробуйте вы, у Вас то компьютеры получше. Наверное.
Получившийся размер ЛВТ-файла DemoLvov.lvt = 48170 байт.

Далее я DemoLvov.lvt декомпилировал МАДЛом (MD01).
К слову декомпилятор, декомпилировал 4 секунды, а то и меньше.
Получился файл Project.dpr.

Всего строк в файле Project.dpr, = 23462
Размер файла получился = 282 554 байта.
Запустил на компиляцию в МАДЛе.
Компилятором fpc, компиляция длилась = 2-3 сек.
Компилятором dcc32.exe (Дельфи 7), компиляция длилась = 1-2 сек.
Компьютер тот же, если шо :-)

И вот если предположить, что я на Обероне, буду писать игрушку, подобную "Лабиринт", подобным размером и.д. А размер игрушки = 8511 байт. То написав её в Обероне, его конструкциями, размер её будет раза в 3-4 больше (опыт уже есть, см. в сообщениях выше) т.е. размер её будет от 25533 - 34044 байт. И доводя её до ума, исправляя всякие мелочи, запуская и запуская на компиляцию, каждая компиляция у меня будет длится 102-136 секунд. Даже если предположить, что размер кода Оберона будет такой же, т.е. 8511 байт, а не так как я пишу, что в 3-4 раза больше, то это не спасёт ситуацию, компиляция будет длится 34 секунды! Что тоже не мало! Про что можна говорить, если меня раздражала коипиляция длившееся 4-6 секунд ?!

Конечно компиляция игры FoxHunt.Mod автора K580Dev, у меня длится 4-6 секунд. Но данная игра не показатель времени компиляции это точно! По сравнению с такой игрой как "Лабиринт", где все таки база уровней есть, да и кода побольше!

Все что я тут написал, это не обсырательство, это как автор K580Dev выражается, - все в карму! Ему естестенно! :-)

Attachment:
TEST3.7Z [1.5 KiB]
Downloaded 519 times


Top
   
PostPosted: 30 Apr 2021, 23:06 
Offline

Joined: 18 May 2016, 19:55
Posts: 426
Размеры строк.
Еще одна немаловажная деталь, максимальный размер строки, т.е. до ввода.
Когда есть инициализированные каким нибудь числом переменные или константы, причём целый массив таких, подобные
Var ArrConstDATALEVELS:array[0..2000] of Byte=($00,$01 ... $39,$A5,$2F,$7B);
например данные уровней, в которых тысячами данных, то у меня например появляется желание куда-то это спрятать! :-) Причём даже если это все в отдельном модуле. Естественно я стараюсь их делать в одну строку, чтобы в редакторе видно было лишь только начало строки. А всё остальное за екраном справа.
Такое могу проделывать и с процедурами, которые уже проверены и работают правильно. Как говориться чтобы под "ногами" не путались.
Но везде есть ограничение на количество символов в одной строке (до ввода). К слову, первые свои МАДЛы я пытался писать с расчётом, хоть вообще было всю программу напиши без единого ввода, любым размером, до (4 гиг). :-) Не пойму, с чем связано, что разработчики делают ограничение строк. Уж я то сам касался этого и понимаю, что можна вообще без ограничений делать.
Ну да ладно. :-)
В FPC 2.6.0 - слабое ограничение = 255 символов в строке.
В дельфи 7 - 1000 (немного больше 1000, вроде так)

А вот K580Dev, приятно удивил, - "натолкал" в одну строку ему 15100 символов! Компилирует! Больше 15100 символов не проверял! Приятно удивлён!:-)


Правда тут такой момент. Что в его редакторе, все строки то на экране показывает. Строки не "уходят" вправо за екран в редакторе. Может это конечно настраивается где-то в редакторе. Было бы хорошо!


Top
   
PostPosted: 01 May 2021, 10:25 
Offline

Joined: 18 May 2016, 19:55
Posts: 426
Изменение местоположения папки z88dk
Решил перенести папку z88dk с диска C:\ в C:\XDev\ . Для удобства.
Поменял переменные среды соответственно
Path C:\XDev\z88dk\bin;
ZCCCFG C:\XDev\z88dk\lib\config\
Думаю, дай-ка очередной раз попробую запустить C:\XDev\XDevLite.exe БЕЗ ПЕРЕГРУЗКИ!
И вот получается "картина". Пишет, что не находит zcc.exe, но тем не менее DemoLvov.lvt запускает!
Вот только он, так сказать, БЫВШЕЙ КОМПИЛЯЦИИ! И если кто-то не поймёт в чём дело, то будет думать, что всё нормально! А какая-то жалоба на какой-то там "zcc.exe", то всё ерунда. Все ведь вроде как компилируется и главное запускается! Вот правда, что не напиши в C:\XDev\XDevLite.exe , - запускаться будет одно и тоже! БЫВШЕЙ КОМПИЛЯЦИИ! :-)
У меня в МАДЛе такое продумано!
В CompileFPC_RUN.bat который компилирует и запускает прописано в первых же строках, УДАЛИТЬ БЫВШИЕ КОМПИЛЯЦИИ. Во избежание запуска старой компиляции Project.exe в случае ошибки новой компиляции.
Ну и к слову, в конце компиляции и запуска, чистит за собою (del).
Quote:
del _res.LVT
del Project.exe

c:\FPC\2.6.0\bin\i386-win32\fpc.exe Project.dpr
Project.exe
del *.o
del *.ppu
del libimpuMD00u.a
del libimpuMD01u.a
del OnClose.SasLVE
del QuickSave.SasLVE

del Project.cfg
del *.dcu
del Project.dof
Если вдруг кому чего не нравиться в CompileFPC_RUN.bat, может добавлять/удалять на своё усмотрение. :-)

Ну и завершая тему изменения папки C:\z88dk на другую папку, перезагрузил комп, заработало все нормально!
ПЕРЕГРУЗКА В ВИНДОВС ХР ПОСЛЕ ИЗМЕНЕНИЯ ПЕРЕМЕННЫХ СРЕД ОБЯЗАТЕЛЬНА!


Top
   
PostPosted: 01 May 2021, 12:43 
Offline

Joined: 18 May 2016, 19:55
Posts: 426
z88dk.XDev.K580Dev.
Рассматривая как это все работает...
Эти все
C:\XDev\K580Dev\Obj\DemoLvov.bat
и C:\XDev\K580Dev\Bin\Build.bat и с его содержимым
:Lviv
%K580Dev%\Bin\MakeLvov\MakeLvov.exe %MainMod% > NUL
MOVE %MainMod%.lvt .. >NUL
а также
C:\XDev\K580Dev\Obj\DemoLvov.c
вообщем как это все работает.... Если я, конечно это все правильно понял...
Первое что пришло мне в голову...

О-о-о-оо-о! Так у тебя Порядочный Программист будут и порядочные проблемы!

Которые связаны с копиляцией кода в разные части памяти. Т.е. в ($0000-$7FFF) и в ($8000 - $BFFF).
И скорее всего у тебя большая зависимость от z88dk и её разработчиков. Если они это (компиляцию в разные части памяти ПК-01) реализуют, то может быть, что-то из этого всего (для ПК-01) и получится! А если нет, то тут и - СТОП! И как результат, в лучшем случае разработка K580Dev для ПК-01 закончится, тем, что будут возможности только лишь ПЗУ. Никакого вывода спрайтов не будет! И естественно толку от такой разработки (во всяком случае мне), - как я уже и писал, - ну разве что позабавляться! Детям! Я тебе еще добавлю "масла в огонь", тем, что данные спрайта должны как и процедура по обработке спрайта должны находится в ($8000 - $BFFF). Или это для тебя это чепуха ? Ну подождём.... мою маму... (из песни):-) Посмотрим, что из этого всего получится. Хотя то, что он не является сюда, то скорее всего обиделся! На меня! На ПК-01, что он так устроен! :-) На форум! И на все что только можно! Меня "обзывал" мнительным, а сам оказался еще более мнительным, чем я! :-) Вот так бывает! Возможно уже никогда ничего от него не ждать и не стоит! Во всяком случае для ПК-01!

А программист из тебя как с меня балерина! Программист это Я, который "щупает" каждый байтик своми руками и может этим управлять! И на самом низком уровне доступ имеет до кода КР580 до каждого байтика в ПК-01, в её ОЗУ, ПЗУ, порты, регистры и т.д.! При желании и нужде могу и "гибриды" писать, что часть программы в Дельфи выполняется, а часть кодам КР580, и делать это как только фантазия позволяет!

А ты, - взял "Оберон" который перекидывает в "С" который с помощью z88dk перекидыват в КР580 и т.д.
В чём твоё участие то ?! Класно настроить эту всю "переброску" ?!.. и написать "обвёртки" ПЗУ для конкретной ретро-машины ?!
Но тут попалось такое как ПК-01, со своей переключалкой страниц ОЗУ. Видимо такое еще не попадалось! Вот порядочный програмист и думает как все в один блок, а далее с "хвоста" того блока перекидывать процедуру вывода спрайта и это уже самим ПК-01 должно делаться при запуске! Про данные спрайтов тоже не забудь! Их тоже надо перекидывать!
Успехов!

А теперь вопрос к спецу Зеле!
А скажите-ка пожалуйста. А что ретро-машин, аналогий ПК-01 с таким же переключением страниц ОЗУ и ВидеоОЗУ не существует ? И с таким же условием, чтобы процедура вывода на экран и данные спрайта были в определённой области памяти ($8000 - $BFFF) ?
Или же с таким просто еще не сталкивался Порядочный Программист ?


Зато размах у парня то какой, - среду для всех ретро-машин! СРАЗУ! :-) ВО КАК!
А вот беда то... Не все ведь самим писано! Значит не все и поддается его управлению так как хочеться! Зависимый слишком от z88dk! или еще от чего... уже не знаю...

Надеюсь я Порядочному Программисту этим текстом добавил то "в карму" :-) или как он там выражается...


Top
   
PostPosted: 01 May 2021, 20:51 
Offline

Joined: 20 Apr 2021, 05:09
Posts: 100
Quote:
Как я понимаю, твоя система, не только ж для РК86 или Львова...
А скажи-ка пожалуйста, где можна посмотреть ЕЩЕ какие-то игры (программы) (кроме "Охоты на лис"), написанные на твоей системе для ЛЮБЫХ ретро-машин ? Дай ссылки пожалуйста. Ну или готовые файлы. Что тебе легче, мне все равно.
Посмотри на форуме. Там есть портированные с Бейсика несколько штук. Что-то есть на sf.net
Quote:
Ну похвастайся перед НАРОДОМ! Рекламни возможности своей системы!
Нечем хвастаться.
Quote:
В частности интересуют именно ДИНАМИЧЕСКИЕ игры (программы), подобные моему "Лабиринт"
"А покажи мне такие твои игры на Обероне, которые круче моих на асме" - так? Хы. Смешно.
Quote:
А то я вот посмотрел как компилируются написанное твоей системой (см.выше сообщения), так почему-то свой МАДЛ вспомнил! Который ты, критиковал даже не видя его!
Я сам подход критикую. Мне не нравится язык для одной платформы, крепко завязанный на её железе. Я это уже проходил в 90-х. Не интересно.
Quote:
Я твою диковинку хотя бы рассмотрел ХОРОШЕНЬКО!
И понял, что скоре всего, вряд ли я напишу на ней, что-то подобное моему "Лабиринт".
А "Крестики-нолики" или "Морской бой в "тетрадочку", "Охота на лис" написание такого или подобного меня не интересует и не впечатляет!
Не напишешь. Это понятно.
Quote:
"Лабиринт", между прочим, писанный на моём несчастном, тогда еще (в 2014 году)"кривом" МАДЛе! Которым тогда мог пользоваться только я! И то неуверенно!
То есть, на асме.
Quote:
На мой вопрос где-то в темах, о том, смогу ли я написать на твоей системе, что-то подобное "Лабиринт", насколько я помню, ты уклонился от ответа!
Не сможешь.
Quote:
Система предназначена для любителей написания игр подобных "Крестики-нолики", а так же возможно послужит развлечением для детей, в нарисовании всяких кубиков, кружочков и прочего! Возможно просто позабавляет, любителей позабавлятся и поприкалыватся на чём-то подобном! Для более же серьёзных целей а также динамических игр (требующих хорошего быстродействия) и прочего подобного, - система не предназначена! Хотя вполне можете попытаться, исходя из соображений таких так - "так ото - чисто по-приколу"!
Правильно. Быстрый и лёгкий старт важен. Не всякий программист будет писать утилиту для Львова, чтобы нарисовать на Львове кружочек. А ассемблер потом при необходимости.

А почему ты не критикуешь чистый Си для Львова? Критикуй его.
Quote:
Не, ну как я уже писал, поприкалыватся, позабавлятся подобным вполне можно!
И я не исключаю, что и я еще позабавляюсь с этим какое-то время, но не более!
Да иди ты. Простыни твои читать преобъёмные это атас.


Top
   
PostPosted: 01 May 2021, 21:02 
Offline

Joined: 20 Apr 2021, 05:09
Posts: 100
Quote:
Зорко, так а вывод текста на екран пока нет ?
Пока нет.

Quote:
Зорко, что-то я не пойму...
DemoLvov.Mod - работает нормально
стоит его копировать переименовать в другие имена
и соответственно исправить в программе, не компилируется не создает
.lvt и запускает не мой прикрученный эмулятор, запускает "Башкирию"-с-"РК86" (видимо пустую рк86)
В чем может быть проблема ?
Obj/DemoLvov.bat
Там платформа прописана. XDev не знает что для РК, а что для Львова, это надо прописать.

Quote:
по сути
BEGIN
END DemoLvov.
пустой! Почему запускается PROCEDURE p1( a:INT16); ?
Наверно что-то с точкой входа. Надо смотреть.

Quote:
что такое (*$MAIN*) ?
Главный модуль.
Quote:
Зорко, подавай эффективные типы данных и конструкции! :-)
Все претензии к z88dk. Иди помоги его авторам, что ли. Всяко лучше, чем макроассемблер заново изобретать. А потом раскрыть ротяку, что-де твой ассемблер каждый байтик. Зато мой Оберон каждую платформу. А на байтики всем начхать.


Top
   
PostPosted: 01 May 2021, 22:00 
Offline

Joined: 18 May 2016, 19:55
Posts: 426
Quote:
Да иди ты. Простыни твои читать преобъёмные это атас.
Да то ж я тебе все "в карму"... :D
Ладно давай по сути...
Вот сделал очередной тест4
Attachment:
TEST4.7Z [775 Bytes]
Downloaded 501 times
Code:
MODULE DemoLvov; (*$MAIN*)
IMPORT Lvov;
VAR X,Y,W:INT16;

PROCEDURE P1(posX,posY:INT16;color:INT8);
BEGIN  Lvov.FIL_BOX(posX,posY, posX+8,posY+8, color); END P1;

PROCEDURE Delay(W:INT16); VAR v:INT16; BEGIN FOR v:=0 TO W DO END;END Delay;

BEGIN
X:=0; W:=1000;
REPEAT
IF W>1 THEN W:=W-50;END;
REPEAT  X:=X+1; P1(X*8,0,3);P1(((X-1)*8),0,0); Delay(W); UNTIL X>=24;
REPEAT  X:=X-1; P1(X*8,0,3);P1(((X+1)*8),0,0); Delay(W);UNTIL X<=0;
UNTIL X>X;

END DemoLvov.
Там кубик ганяет туда-сюда розганяя скорост!, На удивление впечатлила скорость работы твоей диковинки! Честно говоря ожидал худшего! Вот вопрос в том, что УПРАВЛЯТЬ НЕЧЕМ тот кубик!
Не поверишь, - придумал игрушку которую можна написать! И она будет динамическая! Но она будет ПРОСТЕЙШАЯ!ПРО-СТЕЙ-ШАЯ! Зато для рассмотрения классная (из-за того, что простейшая!) В примеры пойдет!
Управление (опрос клавиатуры) скоро будет ?
или ты уже со мной не разговариваешь ? :P

(Далее отпишу еще сообщение по управлению и задержке)


Top
   
PostPosted: 01 May 2021, 22:06 
Offline

Joined: 18 May 2016, 19:55
Posts: 426
Quote:
А почему ты не критикуешь чистый Си для Львова? Критикуй его.
Я терпеть не могу Си и его мнемонику, вот поэтому и торчу на паскелеподобных!
Quote:
Obj/DemoLvov.bat
Там платформа прописана. XDev не знает что для РК, а что для Львова, это надо прописать.
Спасибо! Буду смотреть!... вот только разберусь ли...


Top
   
PostPosted: 01 May 2021, 23:32 
Offline

Joined: 20 Apr 2021, 05:09
Posts: 100
Не буду спорить, применимость у K580Dev ограничена. Сильно крутую игру на Обероне можно сделать только если будет очень много подпрограмм на асме. Тогда в основном всё будет работать на асме, а Оберон будет только склеивать вызовы, быть своеобразным клеем этих подпрограмм.

Но не сравнивай K580Dev с МАДЛом. Вообще. На XDev ты можешь делать проект сразу на трёх языках: асме, Си и Обероне, притом сразу на пяти его диалектах. С хорошей перспективой переноса на другие платформы. Если доля участия асма будет: 95% асма на 5% Оберона, то по всем критериям приблизится к МАДЛу. Но пойми главное: я сделал аналог твоего МАДЛа ещё в 97-м. С некоторым отличием: у меня тогда была только Орель БК-08, а это что-то вроде Львова. Потом я написал на COLOSS'е игру Морской бой. Я наигрался со всем этим счастьем по самое небалуйся. И я похоронил этот низкоуровневый подход, сознательно выбрав другой. Ты можешь это понять, потому что имеешь представление о некоторой совместимости снизу вверх Turbo Pascal'я с Delphi.
Quote:
Там кубик ганяет туда-сюда розганяя скорост!, На удивление впечатлила скорость работы твоей диковинки! Честно говоря ожидал худшего! Вот вопрос в том, что УПРАВЛЯТЬ НЕЧЕМ тот кубик!
Тут проще некуда: лезь в C/Lvov.c и смотри как там устроены машкодовые процедуры. Может с первого раза добавить и не получится, но если захочешь - применишься.

Комплименты по производительности все давай передадим команде z88dk. Как и проклятия по поводу недостатков кода. Всё зависит от их работы. Чего смогут внедрить по оптимизации - то сделают. SDCC сделал в этом смысле серьёзный рывок от того времени, когда я начал им пользоваться, до теперешнего. Появилась передача параметров в регистре/ах, хорошо улучшилось качество кода. Но он по-прежнему не идеальный. И наверно таковым никогда не будет.
Quote:
Не поверишь, - придумал игрушку которую можна написать! И она будет динамическая! Но она будет ПРОСТЕЙШАЯ!ПРО-СТЕЙ-ШАЯ! Зато для рассмотрения классная (из-за того, что простейшая!) В примеры пойдет!
Управление (опрос клавиатуры) скоро будет ?
или ты уже со мной не разговариваешь ? :P
Я потерялся в твоих сообщениях. Вроде ты что-то давал по опросу, но давай освежим. Давай так. Ты даёшь подпрограмму на асме, я её добавляю в библиотеку Lvov, а потом показываю тебе дифф, т.е. что именно менял. Дальше по аналогии научишься добавлять сам любые машкодовые процедуры.


Top
   
PostPosted: 02 May 2021, 00:21 
Offline

Joined: 18 May 2016, 19:55
Posts: 426
Quote:
Не буду спорить, применимость у K580Dev ограничена. Сильно крутую игру на Обероне можно сделать только если будет очень много подпрограмм на асме.
да если бы ты сделал асм-вставки (кр580) в оберон то цены бы не было бы твоей диковинке! Тебе не нужно бы было делать просто больше ничего ! РОВНЫМ СЧЁТОМ - НИЧЕГО! Т.е. никаких "оберток" ПЗУ! Не мучался бы зря! Кто, что хотел бы (как и я), написал бы в процедурах САМ(!) на асм-кр580 вставках.
Я бы, писал бы на обероне (как видишь готовлю себя тестами к оберону, все верю в лучшее, правда и хвалить не знаю пока за что, критикую :-) ), и знал бы следующее - где быстродействие критично, - на асм-вставки написать/переписать с оберона, а все остальное, - на обероне ! Но ты ж я так понимаю не сделаешь такого! И как говорил, не по твоей вине такое! и т.д. и ла-ла-ла бла-бла-бла...
Quote:
Тогда в основном всё будет работать на асме, а Оберон будет только склеивать вызовы, быть своеобразным клеем этих подпрограмм.
Ну ?!? так сделай так! А чем плохо ? а чего только только склеивать вызовы ? Множить то нужно, процедуры с параметрами и т.д.
Quote:
Но не сравнивай K580Dev с МАДЛом. Вообще. На XDev ты можешь делать проект сразу на трёх языках: асме, Си и Обероне, притом сразу на пяти его диалектах. С хорошей перспективой переноса на другие платформы.
Слушай, Зорко, я не являюсь программистом! Это так ото, - забавы у меня такие, хобби, любительство. Как и ПК-01 и многое что другое. Поэтому то, что ты мне рассказываешь, про широкие возможности и спектр применения XDev... ну это так ото... хорошо если вспомню, когда понадобится, что ты мне рассказывал то, но могу и не вспомнить почему-то...
Quote:
Если доля участия асма будет: 95% асма на 5% Оберона, то по всем критериям приблизится к МАДЛу.
Давай я тебе скажу так! Во всех нормальных средах програмирования были, есть и будут асм вставки! И нормальные разработчики ЯВУ никогда не рискнут отменить это! И если задать самому себе вопрос "А почему же ?!" - и все станет ясно! Всегда был и будет "критический код" который нужно писать именно на асме.
Еще раз, - напишу я на обероне, а быстродействия не хватает... вот и выкинь написанное!
Были бы возможности асм-вставок-кр580 - решение - "перебить" на асм на том же месте некоторые процедуры где много циклов или еще чего.
Quote:
Я наигрался со всем этим счастьем по самое небалуйся. И я похоронил этот низкоуровневый подход, сознательно выбрав другой. Ты можешь это понять, потому что имеешь представление о некоторой совместимости снизу вверх Turbo Pascal'я с Delphi.
Некоторые вещи я не понимаю и не воспринимаю даже в паскале и дельфи. Как по мне все это объектно-ориентированное програмирование, создает только глюки, тормоза и неприятности. Когда-то пытался так сказать объектами писать, свои создавать на этом всем строить что-то (типа дурачился) - разплевался я с этим всем! У меня другое видение нормального развития а не то структурное то объектное, ну сделайте еще чтобы блок-схемы понимало что меняет то ?! Ты со своим подходом что-то удивительное напишешь ?! самостоятельное ?! - Всё равно набахкивать по клаве нужно по 10-12 часов в день, чтобы что-то нормальное написать то! Хоть с твоим подходом, хоть с моим, хоть еще с чьим-то, хоть со старым, хоть с новым... да короче... :-)
Quote:
Тут проще некуда: лезь в C/Lvov.c и смотри как там устроены машкодовые процедуры. Может с первого раза добавить и не получится, но если захочешь - применишься.
О! А это интересный разговор пошёл! Т.е. если я туда добавлю, то оно подхватит при компиляции тот файлик ? ну он не для просмотра только, он участвует ?
Беда мнемонику си не знаю, хотя... разобраться я смотрел можно!
Спасибо!
Quote:
Появилась передача параметров в регистре/ах, хорошо улучшилось качество кода. Но он по-прежнему не идеальный. И наверно таковым никогда не будет.
Слушай, ты видел мои тесты ну и в чём я не прав ? - какого черта за каждым (А+В) или (А=В) выполнять какие-то процедуры проверок типа или его границ ?! - НУ ЭТО Ж КР580 все таки...
Слушай, мысля была...
а в обероне есть такое как директивы ? типа в дельфи {$I-} {$I+}
может это отлючить можна те дописки пройедур на проверки типа, пределов его ?
в дельфи помоему всякое (редко пользовался) {$R-} -помому проверки границ масивов отключает и т.д.
Quote:
Ты даёшь подпрограмму на асме, я её добавляю в библиотеку Lvov, а потом показываю тебе дифф, т.е. что именно менял. Дальше по аналогии научишься добавлять сам любые машкодовые процедуры.
Пока посмотрю ссылку разберусь!
========
В Си дурня такая есть терпеть её не мог (когда-то пытался СИ учить все таки :-) )что кроме Lvov.c куда-то еще надо вставлять типа в Lvov.h ? или тут такого нет ?


Last edited by als on 02 May 2021, 00:55, edited 1 time in total.

Top
   
PostPosted: 02 May 2021, 00:52 
Offline

Joined: 18 May 2016, 19:55
Posts: 426
ТЕСТ 5 Закраска средней части экрана кубиками 8на8 приблизительно как в Лабиринт
НУ СПРАЙТАМИ БЫСТРЕЕ, ЕЖУ ПОНЯТНО! БЕЗ СПРАЙТОВ НИКУДА :-(

Attachment:
TEST05.7Z [891 Bytes]
Downloaded 478 times
Code:
(* ТЕСТ 5 Закраска средней части экрана кубиками 8на8 приблизительно как в Лабиринт *)
(* НУ СПРАЙТАМИ БЫСТРЕЕ, ЕЖУ ПОНЯТНО! БЕЗ СПРАЙТОВ НИКУДА :-( *)
MODULE DemoLvov; (*$MAIN*)
IMPORT Lvov;
VAR X,Y,color:INT8;

PROCEDURE P1(posX,posY:INT8;color:INT8);
BEGIN  Lvov.FIL_BOX(posX,posY, posX+8,posY+8, color); END P1;

PROCEDURE P2(posX,posY:INT8;color:INT8);
BEGIN  P1((posX*8),(posY*8),color) END P2;

(* PROCEDURE Delay(W:INT16); VAR v:INT16; BEGIN FOR v:=0 TO W DO END;END Delay; *)

BEGIN
color:=1;
REPEAT
Y:=0; 
REPEAT X:=0; REPEAT P2(X,Y,color); X:=X+1; UNTIL X>24; Y:=Y+1;UNTIL Y>27;

color:=color+1;IF color >3 THEN color:=0;END;
UNTIL X>X;

END DemoLvov.



Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 53 posts ]  Go to page Previous 1 2 3 4 Next

Forum Games WEB Tape Loader Twitter RSS

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
cron
Powered by phpBB® Forum Software © phpBB Limited