Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.50/22: Рейтинг темы: голосов - 22, средняя оценка - 4.50
1 / 1 / 0
Регистрация: 14.07.2012
Сообщений: 25

DprToLvt (PasToLvt). Пишу среду разработки (Эмулятор) для ПК-01 Львов

15.07.2012, 09:56. Показов 4875. Ответов 46
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Команды КР580 в виде Дельфи процедур…

Правильно ли реализованы следующие процедуры:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Procedure SBBD; 
Begin 
if FlagC then wremb:=1 else wremb:=0; 
RgA:=RgA-RgD-wremb;
end;
 
Procedure SBI(b:byte);
Begin
if FlagC then wremb:=1 else wremb:=0;
RgA:=RgA-b-wremb;
 end;
 
Procedure ORI(b:byte);
Begin 
RgA:=RgA or b; 
SetFlagAc(false);SetFlagC(false);
end;

Не знаю как реализовать Команду DAA на Дельфи, вот есть вырезки из СИ(которого я не знаю) и Асма, помогите транслировать в Дельфи конструкции или опишите пожалуйста каждую строку словами

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
Procedure DAA;
case 0x27: // 27 DAA
    tmp1 = 0;
    if ((RgF & f_C) || ( RgA         > 0x99)) tmp1 |= 0x60;
    if ((RgF & f_A) || ((RgA & 0x0F) > 0x09)) tmp1 |= 0x06;
    tmp2 = RgA + tmp1;
    RgF = i8080_flags[tmp2 & 0xFF];
    if ((tmp2 ^ RgA ^ tmp1) & 0x10) RgF |= f_A;
    if (tmp2 > 0xFF) RgF |= f_C;
    RgA = tmp2 & 0xFF;
    clock += 4;
    izmRgPC(+1);
    break;
Assembler
1
2
3
4
5
6
7
8
; DAA
C27:
        mov ax, [RgPSW]
        sahf
        daa
        lahf
        mov [RgPSW], ax
        ret
вот еще огрызок который мне пытались перевести на паскаль (Дельфи):
Pascal
1
2
3
tmp := src1 + src2;
SetFlagAc(((src1 xor src2 xor tmp) and 16) <> 0);
dst := tmp;
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.07.2012, 09:56
Ответы с готовыми решениями:

Подскажите среду для разработки
Доброе время суток! Волей судеб приходится сидеть на работе на стареньком НБ Toshiba. Естествено не о каком мак и на худой конец linux...

Подскажите среду для разработки
Всем доброго времени суток) Наверное этот вопрос уже задавался, но я не нашел. Подскажите среду для разработки под андроид, если я...

Скачать среду разработки для программирования
Здравствуйте. Я, не как, и не где не могу скачать среду для разработки программирования. подскажите пожалуйста где его скачать.

46
1 / 1 / 0
Регистрация: 14.07.2012
Сообщений: 25
06.09.2013, 09:37  [ТС]
Студворк — интернет-сервис помощи студентам
Уважаемые форумчане! Обращаюсь к тем кто скачивал и запускал (пользуется) моим эмулятором ( http://sas.forumbb.ru/click.ph... fid=394807 ). Очень прошу Вас написать о его торможении. Имеется ли оно?... Часто ли?... Может как-то знаете или поняли как избавляться от него?.. Стоит ли мне думать о том как от него в эмуляторе избавится??!!.. (если оно есть конечно). :-)
У меня лично — всё в порядке! Но это если в памяти «висит» Дельфи 7. Как это зависимо ума не приложу. :-) Напишите пожалуйста при каких случаях у Вас всё хорошо (или плохо).
С уважением, SAS,
автор SAS emulator.
0
4189 / 1837 / 220
Регистрация: 06.10.2010
Сообщений: 4,124
06.09.2013, 13:28
Не уверен можно ли это назвать тормозами. Лагает конечно, но возможно это из-за низкой частоты обновления таймера. В общем я не запускал эти игры на настоящей машине и не знаю должны ли они идти быстрее или вот так - рывками.

Также есть подозрения, что тормозит код вывода на экран, потому что я вижу как изображение прорисовывается сверху-вниз. Этого ведь не должно быть?

В википедии сказано что там "Видео — 16 КБ с разрешением 256×256 — 4 цвета". Не знаю как делаешь ты, но я бы для отрисовки использовал 2-битный палитровый битмап.

Добавлено через 8 минут
Кстати таймер довольно таки глючная штука. Лучше сделай так: запускаешь отдельный поток для рачётов
Delphi
1
2
3
4
5
6
7
repeat
  StartTime:=GetTickCount;
  // тут твои расчёты
  n:=StartTime+20-GetTickCount; //вычисляем сколько времени до следующего тика
  if n>0 then
    Sleep(n);
until false;
Добавлено через 4 минуты
Был такой случай - в сообщении WM_PAINT забыл поставить ValidateRect и сообщение WM_TIMER вообще не приходило, т.к WM_PAINT приоритетнее.
1
1 / 1 / 0
Регистрация: 14.07.2012
Сообщений: 25
06.09.2013, 17:16  [ТС]
Приношу извинения за то что не пояснил что подразумевается под «торможение»...
Привожу тест для его определения.
Надеюсь от подобного теста Вы получите удовольствие. :-)
Запустите SASEmulator1.2Beta
Выберите в Комбобокс игру: «Аэрокобра(1)» либо откройте её имя файла:Аэрокобра1.LVT
При необходимости проверьте (либо установите) FPS=50, Freq/fps=68000
Установите графический режим 768х512 Меню:Tools\Graphic Mode\768x512
На экране заставка Aerocobara. Нажмите пробел.
На экране: «Ваша задача — забрать....»
Подготовьте часы так чтобы было видно секунды (на компе).
При нажатии пробела одновременно запомните время минуты и секунды.
Происходит «синяя» очистка экрана и далее пошла игра.
Пройдите всеми правдами и не правдами :-) Первый уровень до момента окончания (синяя очистка, перед STAGE 02)
снимите показания времени.
При нормальной работе эмулятора без торможения, время прохождения 1-го уровня должно быть в пределах 47-51 секундах. У меня было 48сек(50сек). Чем ближе к 47 — тем лучше. :-)
При торможении время прохождения увеличивается. У меня было 78 сек.
При изменени граф.режима на 512х512 и торможении, время = 58 сек.
При торможении и увеличении граф.режима более чем 512х512, явно заметно изменение скорости игры по сравнению с более маленькими разрешениями (256х256). При нормальной работе — такого явно заметно быть не должно!... и время прохождения 1-го уровня (на любых граф. Режимах) остается в тех же пределах т.*е. (в пределах 47-51 секундах)
Заранее благодарен за внимание к моему эмулятору и за проведенный тест.

Добавлено через 1 час 26 минут
Цитата Сообщение от murderer Посмотреть сообщение
Не знаю как делаешь ты,
var gamecanvas: tbitmap;

MainFormEmu.Canvas.StretchDraw(rect(0,To olBar1Height,MainFormEmuClientWidth,Main FormEmuClientHeight),gamecanvas);

Цитата Сообщение от murderer Посмотреть сообщение
но я бы для отрисовки использовал 2-битный палитровый битмап.
А что єто такое ?... можно поточнее...

Цитата Сообщение от murderer Посмотреть сообщение
Кстати таймер довольно таки глючная штука. Лучше сделай так: запускаешь отдельный поток для рачётов
С отдельными потоками уменя были сложности уже непомню какие... вроде проц сильно грузит... да и сам я в них хилый спец - боюсь! :-)
Цитата Сообщение от murderer Посмотреть сообщение
Delphi
1
2
3
4
5
6
7
repeat
  StartTime:=GetTickCount;
  // тут твои расчёты
  n:=StartTime+20-GetTickCount; //вычисляем сколько времени до следующего тика
  if n>0 then
    Sleep(n);
until false;
Расммотрю что это за код... а ведь его можно в таймер вставить и при этом интревал таймера = 1 т.е. 1/1000 секунды?... и пусть работает словно в потоке :-)
0
4189 / 1837 / 220
Регистрация: 06.10.2010
Сообщений: 4,124
11.09.2013, 07:19
А что єто такое ?... можно поточнее...
Создаётся функцией CreateDIBSection. В структуру BITMAPINFO в поле bmiColors записываешь палитру. Поле bmiHeader заполняется так:
Code
1
2
3
4
5
6
7
8
9
10
11
biSize          sizeof(BITMAPINFOHEADER)
biWidth         256
biHeight        256
biPlanes        1
biBitCount      2
biCompression   0
biSizeImage     16384
biXPelsPerMeter 0
biYPelsPerMeter 0
biClrUsed       4
biClrImportant  4
Вывод на экран осуществляется функцией StretchBlt.
1
1 / 1 / 0
Регистрация: 14.07.2012
Сообщений: 25
11.09.2013, 10:39  [ТС]
murderer, спасибо за совет (подсказку)... но, я вот порылся в инете и не нахожу готовых исходников на Дельфи по применению CreateDIBSection и StretchBlt. В частях кода я врядле чего разберусь. Поэтому отложу-ка я это видимо в "долгий ящик". :-(
0
1 / 1 / 0
Регистрация: 14.07.2012
Сообщений: 25
13.09.2013, 12:31  [ТС]
SAS emulator 1.3 Beta (от 13-09-2013)
* Постоянная прорисовка экрана. Теперь переходя из фонового режима в эмулятор, экран будет прорисован автоматически. Тоже самое во время паузы.
* Меню Tools\”Debugger...” был заменён тремя формами «Assembler”, “Registers and flags”, “Memory”.
* Добавлено в меню Tools переключение способа вывода на экран «Screen Drawing”, где можно переключить на способ вывода «Timer” либо «RDTSC”. Попробуйте это при торможении эмулятора. Скорость эмулятора в режиме «RDTSC” регулировалась при FPS=50, Freq/fps=68500.
* Добавлены игры в каталог GAMES (и в ComboBox): Цветные Линии(3)=lines_03.lvt ; Arcanoid=Arcanoid.SasLVE ; Circus=Circus.SasLVE ; Домино=DOMINO.SasLVE ; Утки=ducks.SasLVE
frog=frog.SasLVE ; International Karate=karateint.SasLVE ; Корона=korona.SasLVE ; Лагуна=laguna.SasLVE ; Pool=pool.SasLVE ; Sokoban(3)=sokoban3.SasLVE ; Space Shock=spaceshock.SasLVE ; Star Raider=Starraider.SasLVE ; Тетрис 4=TETRIS4.SasLVE
* В калатоге GAMES все игры преобразованы в формат SasLVE. Это удобно и красиво. :-)
* В случае отсутствия каталогов «AutoSave» и «Log» - создаются автоматически.
* Преобразована дата (и время) в именах файлов при автозаписи в каталог «AutoSave».
* Совместил модуль DprPasToLV с эмулятором. Надеюсь в эмуляторе ничего не «разшатал» :-)
( Для тех кому непонятно что такое DprPasToLV почитать можно здесь: DprToLvt (PasToLvt) )
Существует два файла для запуска эмулятора, SASEmulator.exe и SASEmulator_.exe. Запускать эмулятор можно любым каким душа пожелает :-) разница между ними в том, что SASEmulator.exe - использует DprPasToLV.dll, а SASEmulator_.exe - работает самостоятельно, без модуля DprPasToLV.dll. В их работе разницы не должно быть, во всяком случае мной замечено не было!
Каталог Samples содержит примеры использования модуля DprPasToLV.dl, а в файле DLLFP.pas описание процедур доступных для использования.
Поскольку на торможение эмулятора я слышал всего лишь одну жалобу... :-) а на просьбу провести тест определения торможения, вообще «глухо», ничего не слышал :-) то пока вывод на экран оставляю таким как есть!

Если у Вас поялось желание что либо сказать :-) по поводу эмулятора, прошу сюда...

Ну вот пока всё! Надеюсь ничего не забыл!... описать и укомплектовать в архив ! :-)
Пишите. Жду. :-)

Скачать:http://file.oboz.ua/download.php?fid=494897
0
1 / 1 / 0
Регистрация: 14.07.2012
Сообщений: 25
26.11.2013, 17:54  [ТС]
Дано:
1.программа (пишу её), использующая 2 и 3.
2.длл, - использующая 3
3.длл
Когда 1 и 2 использует 3 это будет использоваться как одна копия 3(с общими данными)? или для 1 своя копия 3, а для 2 — своя ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.11.2013, 17:54
Помогаю со студенческими работами здесь

Какую среду разработки выбрать на Mac для С++?
Добрый день! Недавно решил заняться изучением программирования на С++, однако сразу возник вопрос: какую среду разработки лучше...

Какую среду разработки для Qt4.5 выбрать?
Раньше был линукс там ide for Qt4 уже шла на диске отличная. Какая среда разработки для Qt4 под виндоус есть? Знаю что есть nokia Qt...

Какую среду разработки выбрать для диплома
Здравствуйте всем! Подошло время для диплома, с темой определился, а с какой средой разработки нет. Можете посоветовать, что лучше? Я хочу...

Посоветуйте среду разработки (с лицензией для студентов)
Захотел попробовать с++,скачал visual studio,после intelij IDEA для меня что-то начатое но незаконченное. Так вот вопрос есть ли...

Посоветуйте выбор среду для разработки приложения для работы с БД
Здравствуйте. Появилась задача создать программу для работы с базой данных(несколько клиентов-сервер. Думаю использовать БД MySQL). Также...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
47
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru