PC-01 Lviv
http://pc01.lviv.ua/forum/

Хочу написать свой эмулятор ПК-01 Львов на Delphi
http://pc01.lviv.ua/forum/viewtopic.php?f=12&t=193
Page 1 of 15

Author:  MARAT_BEST [ 14 Sep 2012, 12:02 ]
Post subject:  Хочу написать свой эмулятор ПК-01 Львов на Delphi

Хочу написать эмулятор ПК-01 Львов на Delphi.
За основу взять представленный на сайте код написанный на javascript, можно ?
чисто попробовать свои силы. :roll:

зы. потом (в случае успеха :) ) попробую портировать на коммуникаторы под windows mobile 6.5

Author:  Zelya [ 14 Sep 2012, 12:05 ]
Post subject:  Re: Хочу написать свой эмулятор ПК-01 Львов на Delphi

MARAT_BEST

Код процентов на 50% Владимира Калашникова, еще где-то на 25% натыренный по всяким свалкам, и процентов на 25% мой. Думаю, никто с Вами судиться не будет. А я, даже наоборот, буду очень-очень рад!

Author:  liberation [ 14 Sep 2012, 13:06 ]
Post subject:  Re: Хочу написать свой эмулятор ПК-01 Львов на Delphi

Quote:
Код процентов на 50% Владимира Калашникова, еще где-то на 25% натыренный по всяким свалкам, и процентов на 25% мой. Думаю, никто с Вами судиться не будет. А я, даже наоборот, буду очень-очень рад!
Эмуляция проца i8080A утянута с эмулятора Радио-86РК Алекса Дёмина, а не на свалке.

Паблик-репозиторий будете делать?

Author:  Zelya [ 14 Sep 2012, 13:20 ]
Post subject:  Re: Хочу написать свой эмулятор ПК-01 Львов на Delphi

liberation

Простите! Забыл откуда... Просто я накачал кучу разных javascript реализаций проца, а потом выбрал самый удобный. Кстати, там была бага в одной из функций :(.

Author:  MARAT_BEST [ 14 Sep 2012, 14:11 ]
Post subject:  Re: Хочу написать свой эмулятор ПК-01 Львов на Delphi

Quote:
MARAT_BEST

Код процентов на 50% Владимира Калашникова, еще где-то на 25% натыренный по всяким свалкам, и процентов на 25% мой. Думаю, никто с Вами судиться не будет. А я, даже наоборот, буду очень-очень рад!
если что вопросы сюда можно постить ?

Author:  MARAT_BEST [ 14 Sep 2012, 14:31 ]
Post subject:  Re: Хочу написать свой эмулятор ПК-01 Львов на Delphi

Quote:
Паблик-репозиторий будете делать?
это как простите?

Author:  Zelya [ 14 Sep 2012, 14:34 ]
Post subject:  Re: Хочу написать свой эмулятор ПК-01 Львов на Delphi

MARAT_BEST

Вопросы постить - нужно. Паблик репозиторий, это место, откуда можно стянуть сорсы.

Author:  MARAT_BEST [ 14 Sep 2012, 14:37 ]
Post subject:  Re: Хочу написать свой эмулятор ПК-01 Львов на Delphi

memory: массив от 0 до 65535 вся память пк я так понимаю значение byte (0-255)
video : 0..? сколько
ports : 0..256 byte ?
dirty : это для звуков ?
bios : 0..?

Author:  MARAT_BEST [ 14 Sep 2012, 14:39 ]
Post subject:  Re: Хочу написать свой эмулятор ПК-01 Львов на Delphi

Quote:
MARAT_BEST

Вопросы постить - нужно. Паблик репозиторий, это место, откуда можно стянуть сорсы.
понял спасибо.
сорсы обязательно размещу !

ps. надеюсь заработает :roll:

Author:  Zelya [ 14 Sep 2012, 14:49 ]
Post subject:  Re: Хочу написать свой эмулятор ПК-01 Львов на Delphi

Quote:
memory: массив от 0 до 65535 вся память пк я так понимаю значение byte (0-255)
video : 0..? сколько
ports : 0..256 byte ?
dirty : это для звуков ?
bios : 0..?
Видео - 16К; порты - байты; dirty - рудимент; биос - грузится из файла в верхние 16К памяти.

Author:  sadfsdfsdaf [ 15 Sep 2012, 00:11 ]
Post subject:  Re: Хочу написать свой эмулятор ПК-01 Львов на Delphi

Quote:
dirty : это для звуков ?
Ну, если в основе фрагменты моего кода, то это оптимизация вывода на экран. При заполнении видеопамяти взводятся флаги "грязных" (изменённых) строк, их будет 256, по количеству линий на экране. Дальше на момент вывода картинки можно проверять эти флаги и выводить только изменённые строки (они у меня дополнительно агрегировались в блоки, правда ситуацию черезстрочного растра я не проверял - патологический случай true, false, true, false, true, false .... наверное это будет тормозить по сравнению с разовым выводом всего массива на экран), благо bitblit быстр для целых строк изображения (и тормозит при выводе произвольных прямогугольников, поэтому я не заморачивался с поиском изменённых двумерных блоков). Не знаю, насколько это сейчас актуально, а тогда на P120 получалось практически реальное время работы, особенно если экран слабо изменялся.

Author:  sadfsdfsdaf [ 15 Sep 2012, 00:21 ]
Post subject:  Re: Хочу написать свой эмулятор ПК-01 Львов на Delphi

Quote:
Эмуляция проца i8080A утянута с эмулятора Радио-86РК Алекса Дёмина, а не на свалке.
всё-таки судя по коду страницы эмуляция процессора там базируется на исходниках от моего эмулятора, а не Алекса, а потому вопрос:
Quote:
Простите! Забыл откуда... Просто я накачал кучу разных javascript реализаций проца, а потом выбрал самый удобный. Кстати, там была бага в одной из функций :(.
в каком месте была ошибка?

Author:  Zelya [ 15 Sep 2012, 12:02 ]
Post subject:  Re: Хочу написать свой эмулятор ПК-01 Львов на Delphi

sadfsdfsdaf

Нет, эмуляция процессора именно не Ваша (автозамена по некоторым названиям) и когда я "ремонтировал" багу, использовал Ваши сорсы.

Author:  MARAT_BEST [ 17 Sep 2012, 03:09 ]
Post subject:  Re: Хочу написать свой эмулятор ПК-01 Львов на Delphi

Доброго времени суток !!!
переделал кучу кода с javascript (язык все больше начинает нравиться своей простотой)
на данный момент два вопроса
1. почему то не совпадает значения после процедуры (разбираюсь)
i8080_do_opcodes(20000000);
2. реализация вывода на экран

Attachments:
Снимок2.JPG
Снимок2.JPG [ 26.29 KiB | Viewed 9024 times ]
Снимок.JPG
Снимок.JPG [ 22.03 KiB | Viewed 9024 times ]

Author:  MARAT_BEST [ 17 Sep 2012, 03:19 ]
Post subject:  Re: Хочу написать свой эмулятор ПК-01 Львов на Delphi

Интересует как работает данный код
Code:
var imgd = ctx.getImageData(0,0,256,256);
		var pix = imgd.data;
		for (var i = 0; i < video.length; i ++) {
            var iCol = ParseColor(video[i]);
            for (var j = 0; j < 4; j++)
            {
				var iNum = compute_color_index(ports[0xC1], iCol[3-j]%4);
			
				var pos = i*16 + j*4;
				put_pixel(iNum, pix, pos);
				
			}
		}
		ctx.putImageData(imgd, 0, 0);
		if (BigScreen)
			ctx2.drawImage(canvas ,0,0,768,512);
		else
			ctx2.drawImage(canvas,0,0);
imgd = ctx.getImageData(0,0,256,256);
зачем считывать данные с области ?
в идеале я так понимаю нужно считать Byte из массива видео, преобразовать его в 4 точки(по цветам) и вывести на экран ? (вот тут я уже забыл как это делалось на львове)

Page 1 of 15 All times are UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/