Оба варианта прекрасны!Zorko wrote:Какой набор цветов нравится больше?
Zelya wrote: просто надо свою процедуру очистки экрана сделать, вернее, заливки нужным цветом)
Code: Select all
MVI A,0 ;цвет
STA 0BE38h
CALL 0EBBCh ;процедура заливки
Оба варианта прекрасны!Zorko wrote:Какой набор цветов нравится больше?
Zelya wrote: просто надо свою процедуру очистки экрана сделать, вернее, заливки нужным цветом)
Code: Select all
MVI A,0 ;цвет
STA 0BE38h
CALL 0EBBCh ;процедура заливки
Здесь есть варианты.А можно сделать совсем несложный алгоритм замены цветов на экране и в наборе тайлов
Все варианты записать в массив в памяти.Как бы мог выглядеть алгоритм циклической смены цветов?
Конечно! Хардкорненькая игра получилась!
я так понял, что это временно...
На этом этапе разработки - да. А почему ты спросил?
Это конечно временно. Сам случайно нащупал. Я же пока что сделал поддержку только для курсорных кнопок, как ты показал. Остальные кнопки надо опрашивать по другим портам, которых я не знаю.als wrote: 14 Jun 2021, 09:46я так понял, что это временно...
или же впиши в начало чтобы знать что делать для продолжения.
Да. Я часто обновляю транслятор, но тут вроде бы критичного ничего за это время не менялось.
Всё это уровень Си и ассемблера, хорошо документированный где-то ещё. .oh - это на самом деле .h (интерфейсный файл для Си, так называемый хидер), просто переименованный, чтобы не конфликтовал с одноимёнными сишными хидерами, например, наш Math.oh с сишным стандартным math.hals wrote: 14 Jun 2021, 09:46эти все СИшные "приколы".... да эти еще файлы ".oh" туда тоже ж надо что-то как-то прописывать...
и я так и не понял как они компилируются ?...
как понять, что там всё правильно написано без ошибок ?
их отдельно ж надо компилировать как-то...
ты ж толком документированно не даёшь ответов на такие вопросы...
Всё, что ты тут перечислил, это встроенный в SDCC _ассемблер_, просто записанный мнемониками Z80. Доллар указывает на локальность метки (хотя я и сам не знаю, так ли это, потому что для глобальных есть директива .GLOBL), а решётка нужна перед всеми числами. Ну вот так придумали в сишном асме. Это всё элементарные вещи, и они тебе не нужны. Пиши в мнемониках КР580 без долларов и без решёток.als wrote: 14 Jun 2021, 09:46ты в МАДЛ видел таблицу мнемоники КР580 и МАДЛ ? ВСЕХ КОМАНД!
во и тут должно такое быть! чтобы можно было посмотреть по таблице! А не догадывать что такое "JR C,RET_FALSE$ " ? или "LD L,#1" ? что означает "LD" можна еще догадаться. а "диезка" в "#1" ? а "доллар" в конце "RET_FALSE$" ? и почему в конце?
хотя я догадываюсь, что ты скажешь, что то СИшные приколы, чтобы я СИ еще учил...
А то, что тебе не понравилось, и есть асм-вставки. В Bolder16K кроме этих вставок из Си юзается много чего просто для эффективности. У нас слабая дохлая ретро-машинка, поэтому я юзаю уровень Си чтобы добиться лучших результатов. Этому я учился несколько лет. Но всё это документировать нет смысла, потому что это не относится к Оберону и к моей среде. Можно все эти вещи и не юзать. А вот что стоило бы задокументировать - так это нестандартные расширения Оберона, которые я тоже использую. Но для них есть отдельные примеры в виде исходников. Вот как-то так.als wrote: 14 Jun 2021, 09:46Неправильно это все!
Все должно быть "завязано" на то чтобы в среде Оберона можна было бы делать! Как впрочем и в том же дельфи и паскале! Все что невозможно сделать конструкциями паскаля, предлагается не СИ, а АСМ-вставки ПРИЧЁМ "НЕ ОТХОДЯ ОТ КАССЫ", прямо там где программу пишеш!
Не, нельзя. А раньше я даже и компиляцию запускал вообще вручную сторонним батником, пока не сделал его вызов по F12.als wrote: 14 Jun 2021, 09:46Слушай, а в Обероне конце концов можна так сделать чтобы "не вылазить" из окна по всяким "Control.c" и "Control.oh" можна было бы прямо в окне писать на СИ или еще как-то....
Не жди, что всё заработает с пол-пинка. Это же как МАДЛ, вечно что-то отваливается. Ругаться тут нет смысла - надо разбираться, чтобы понимать на каком уровне у тебя ошибка. До вызова утилиты-конвертера и формирования .lvt точно доходит?als wrote: 14 Jun 2021, 10:00 Доп.
Так. Поехали все заново. XDev установил с той темы что я создавал.
есть папка Bolder16K-Lviv-0.0.6 есть C:\XDev\ и C:\z88dk\
куда что копировать чтобы он нормально компилировался ?
было копировал всю папку Bolder16K-Lviv-0.0.6 в C:\XDev\
компилирует как-то с ошибками, Bolder16K.lvt открыть не может! (нет "шапки" в ЛВТ такой как должна быть это уж точно!)
далее делаю пробы....
Ну я же писал - возможно немного увеличить надо.
Zorko wrote: 14 Jun 2021, 15:57 Это конечно временно. Сам случайно нащупал. Я же пока что сделал поддержку только для курсорных кнопок, как ты показал. Остальные кнопки надо опрашивать по другим портам, которых я не знаю.
Для подключения клавиатуры в компьютере имеется вторая микросхе-
ма КР580ВВ55. Её адреса:
D0 порт А - вывод
D1 порт В - ввод
D2 порт С - С(0-3) вывод, С(4-7) ввод
D3 RS - регистр состояния
Порты подключены, как показано на рис. 4. Путём сканирования "0"
на фоне единиц (порты А и С(0-3)) определяется "столбец" отслеживае-
мых клавиш. После ввода (порты В и С(4-7)) окончательно выявляется на-
жатая клавиша по наличию "0" в определённом разряде. Если ни одна кла-
виша не нажата, то вводятся все "1".
Code: Select all
порт А (D0) вывод
-------------------------------
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
-------------------------------
| | | | | | | |
--- --- --- --- --- --- --- ---
/ \ / \ / \ / \ / \ / \ / \ / \
--- --- --- --- --- --- --- ---
| | | |ПРО| | | | +5 В
--- ВР| ; | |СТР|БЕЛ| П | Г | 6 |
| | .-* .-* .-* .-* .-* .-* .-* .-* ---- |
| 0 |------*-|-*-|-*-|-*-|-*-|-*-|-*-|-*-|---| |--*
| | | | | | | | | | ---- |
|---| Я |РУС| |"G"| Б | О | Ш | 7 | |
| | .-* .-* .-* .-* .-* .-* .-* .-* ---- |
| 1 |------*-|-*-|-*-|-*-|-*-|-*-|-*-|-*-|---| |--*
| | | | | | | | | | ---- |
|---| Ч | СУ| Й |"В"| Ю | Л | Щ | 8 | |
| | .-* .-* .-* .-* .-* .-* .-* .-* ---- |
| 2 |------*-|-*-|-*-|-*-|-*-|-*-|-*-|-*-|---| |--*
| | | | | | | | | | ---- |
|---| Ь | П | Н | 5 | НР| ЗБ| ВК| ГТ| |
| | .-* .-* .-* .-* .-* .-* .-* .-* ---- |
порт | 3 |------*-|-*-|-*-|-*-|-*-|-*-|-*-|-*-|---| |--*
| | | | | | | | | | ---- |
В |---| Т | А | Е | 4 | _ | . | ПС|ТАБ| |
D1 | | .-* .-* .-* .-* .-* .-* .-* .-* ---- |
ввод | 4 |------*-|-*-|-*-|-*-|-*-|-*-|-*-|-*-|---| |--*
| | | | | | | | | | ---- |
|---| И | В | К | 3 |ЛАТ| Э | * | = | |
| | .-* .-* .-* .-* .-* .-* .-* .-* ---- |
| 5 |------*-|-*-|-*-|-*-|-*-|-*-|-*-|-*-|---| |--*
| | | | | | | | | | ---- |
|---| М | Ы | У | 2 | / | Ж | Х | 0 | |
| | .-* .-* .-* .-* .-* .-* .-* .-* ---- |
| 6 |------*-|-*-|-*-|-*-|-*-|-*-|-*-|-*-|---| |--*
| | | | | | | | | | ---- |
|---| С | Ф | Ц | 1 | , | Д | З | 9 | |
| | .-* .-* .-* .-* .-* .-* .-* .-* ---- |
| 7 |------*---*---*---*---*---*---*---*-----| |--*
| | ----
---
ВНИМАТЕЛЬНО РАССМОТРИ КАК УСТРОЕН ОПРОС КНОПКИ "2" НА НАЖАТОСТЬ И ОТЖАТОСТЬ ПО РАСПАЙКЕ КЛАВИАТУРЫ НА ПОРТЫ!{Процедура Опроса нажатия кл "2"}
{Byte_Color - переменная установленного цвета}
LabelA(Proc_Color);
{ изменения цвета нажатием на '2'}
MviA($EF);Out_($D0);// посылаем на порт $D0, '11101111'{$EF}
In_($D1); // опрашиваем порт $D1
Cpi($BF); //'10111111'){BF}); // сравниваем нажата ли "2"
Jnz(Proc_Color_RET);// если не нажата выход
{если же нажата .....}
{Byte_Color = Byte_Color+4}
Lda(Byte_Color); MovBA; MviA($04); AddB; Sta(Byte_Color);
Out_($C1); // { отправиляем Byte_Color на порт $C1 }
{Ожидаем отжатия "2"}
LabelA(Proc_Color_cycle1);
MviA($EF);Out_($D0); // посылаем на порт $D0, '11101111'{$EF}
In_($D1); // опрашиваем порт $D1
Cpi($BF); //'10111111'){BF}); // сравниваем нажата ли "2"
Jz(Proc_Color_cycle1); // если не ОТЖАТА, - переход LabelA(Proc_Color_cycle1);
LabelA(Proc_Color_RET); RET;
LabelA(Byte_Color);DB($00); // переменная цвета
// конец процедуры
О!
Code: Select all
BEGINPROCEDURE(pStartOrMenu);
Ar($EF);OUT_($D0);IN_($D1);IfAisNot($DF,gStartOrMenu_m2);
Ifis(bConditionOfPlay{состояние игры},4,gStartOrMenu_m3);
R(bConditionOfPlay{состояние игры},0);
Goto_(gStartOrMenu_m1);
LABELg(gStartOrMenu_m3);
R(bConditionOfPlay{состояние игры},$0F);
LABELg(gStartOrMenu_m1);Ar($EF);OUT_($D0);IN_($D1);IfAis($DF,gStartOrMenu_m1);
LABELg(gStartOrMenu_m2);
ENDPROCEDURE;Code: Select all
BEGINPROCEDURE(pPause);
Ar($EF);OUT_($D0);IN_($D1);IfAisNot($7F,gPause_m2);
x(bfPause{флаг паузы},$FF);
LABELg(gPause_m1); Ar($EF);OUT_($D0);IN_($D1); IfAis($7F,gPause_m1);
LABELg(gPause_m2);
PROC(pRndS);
ENDPROCEDURE;
Code: Select all
BEGINPROCEDURE(pColor);
Ar($EF);OUT_($D0);IN_($D1);IfAisNot($BF,gColor_m2);
P(bGeneralColorPlay{цвет игры},$04);OUT_($C1);
LABELg(gColor_m1);Ar($EF);OUT_($D0);IN_($D1);IfAis($BF,gColor_m1);
LABELg(gColor_m2);
ENDPROCEDURE;
Code: Select all
BEGINPROCEDURE(pKeyO);
R(bKeyProtect,$00);
OUT_($D0);IN_($D1);Ax($FF);
_rA(bKeyProtect);
ENDPROCEDURE;
Users browsing this forum: No registered users and 0 guests