PDA

Просмотр полной версии : Корвет на ПЛИС ?



SaintTurnip
09.03.2011, 23:16
---

balu_dark
10.03.2011, 00:59
Если хочеш плату еще и на вырост - смотри в сторону Terrasic DE0 или более полноценная DE1. Если - просто на поиграться и на попробовать - смотри местную платку под названием Reverse. она в 2х вариантах существует. это все на Альтеровских чипах платы. для Xilinx - надо искать.

SaintTurnip
10.03.2011, 02:15
DE1 с академической скидкой по цене более чем привлекательна.

Единственное, как оценить емкость чипа? Там 20000 LE, а сколько нужно для Z80, например?

balu_dark
10.03.2011, 02:49
2500 вроде надо для зетника. вся остальная схема как правило не более 500 LE.

---------- Post added at 03:49 ---------- Previous post was at 03:47 ----------

еще гдето 2000 надо для звукового сопроцессора. короче - тут у народа спектрумы со всеми наворотами - вполне влазят в 5000 а в 12000 влазит уже амига. этих 20000 хватит ну ооооочень на долго.

SaintTurnip
10.03.2011, 05:29
Спасибо за консультацию! Эту плату и закажу. Там еще и портов ввода-вывода полно, можно будет подключить настоящую корветовскую клавиатуру :)

ILoveSpeccy
13.03.2011, 17:49
Года 2 или 3 назад я начинал делать корвет на VHDL.
Сделал только текстовый экран, клавиатуру, и все режимы работы с памятью.
Потом застрял на графике. В корвете очень интересно графика реализована.
По сути там для графики используется 24 микросхемы памяти, к которым идёт
доступ одновременно. Из за того что я сразу не совсем разобрался с работой
корвета я стал писать его эмулятор на си. За основу брал эмулятор Сергея
Ерохина. Только писал с использованием библиотеки SDL. Работал эмул под
виндой и под линуксом. Довёл до состояния рабочего и из за нехватки времени
отложил. Сейчас к сожалению нет времени добить вариант на плис.
Но когда нибудь (надеюсь) закончу.

---------- Post added at 15:49 ---------- Previous post was at 15:43 ----------


вся остальная схема как правило не более 500 LE.[COLOR="Silver"]
Я так не думаю. Корвет гораздо сложнее технически чем спектрум.
Надо писать: таймер вв53, контроллер прерываний, 3 штуки вв55,
контроллер памяти для графики (идея у меня уже есть как его
реализовать) и т.д.
+ для полноценного корвета ещё и контроллер сетки (порт
последовательный) и ещё мелочёвка.

Поэтому я бы сказал, что надо как минимум 5-6 тыщ LEшек альтеровских.

esl
13.03.2011, 19:33
контроллер графики - очень похож на EGA режимы, а оно вроде есть готовое ?

ILoveSpeccy
24.05.2011, 13:07
Вчера запустил свой эмуль корвета и поигрался немного в Rally и Klad1.
Такая настальгия навалилась... :) Короче решил по возможности доделывать
потихоньку корвет на FPGA. Портирую то, что уже есть, на DE1 (чтобы
многие могли попробовать) и буду доводить его до состояния полноценной
замены реала. Кстати, реальный корвет я приобрёл. Только он при включении
постоянно пишет, что не найдена нулевая дорожка на дискете. С проблемой
пока не разобрался.

Видеовыхлоп буду делать на VGA в разрешении 1024x768 так как только этот
режим позволит вывод изображения корвета на полный экран. Правда пиксельклок
будет 65MHz и памяти придётся работать быстро. Идеи релизации уже есть. Буду по
возможности клепать проект.

BYTEMAN
24.05.2011, 17:17
Только он при включении
постоянно пишет, что не найдена нулевая дорожка на дискете.
Интересная ошибка... А что именно (какой текст) пишет? Обычно он просто в Бейсик вываливается.

ILoveSpeccy
24.05.2011, 21:41
Этот корвет я купил у Шканова Андрея. Он мне говорил, если я не ошибаюсь,
что это вроде один из "прототипов" корвета. Это полноценный аппарат ПК-8020,
но у него была только одна ПЗУ из трёх. Я прошил 3 ПЗУ вроде версией 2.0
с бейсиком но он не работал с ними. Чего не работало уже не помню.
Потом я прошил одну ПЗУ прошивкой от контура вроде. Вот с ней он заработал.
Но там нет бейсика. Только загрузка с диска. Так вот он и не может запуститься.
Пишет что нулевая дорожка (или сектор, не помню уже) не найдена.
Я пока долго с ним не возился. Может возьмусь да запущу (с Вашей помощью :) ).

---------- Post added at 19:16 ---------- Previous post was at 19:10 ----------

Кстати, когда-то я неплохо программировал на корветовском бейсике и написал
несколько прикольных игр. В играх использовал спрайты, которые выводились
на экран через ассемблер. Было достаточно динамично, не смотря на то, что на бейсике.
И часто в играх я пользовался ЛУТом. Можно было делать плавное появение текста и т.д.
Прошло уже больше 15 лет с тех пор и я конечно же всё давно забыл. Так вот, для тестов
контроллера графики мне нужно опять всё вспомнить. Может у кого нибудь есть подобная
информация по программированию на бейсике корвета?

---------- Post added at 19:38 ---------- Previous post was at 19:16 ----------

Если кому интересно, я выложил свой эмулятор корвета. Эмулятор написан
на Си с использованием SDL. Проект отличается от подобных тем, что в
нём не использовано никакой оптимизации :v2_dizzy_messed: Мне нужно было понять как и
что работает в корвете. Поэтому писал эмуль. Многое позаимствовал из
исходников Сергея Ерохина (отдельное спасибо за проект!) :v2_thumb:
Вывод на экран через OpenGL.

Кнопки:
F8 - переключение оконный режим/на весь экран
F9 - меню выбора образа диска (выход из меню так же по F9)
F10 - турбо режим
F11 - сброс
F12 - выход

Скачать:
http://www.speccyland.net/index.php?option=com_phocadownload&view=category&id=4:2011-05-24-17-25-48&Itemid=16

---------- Post added at 19:41 ---------- Previous post was at 19:38 ----------

Эмуль очень сырой. Много чего не работает. Таймер - только 1 канал.
Контроллер прерываний вообще слов нет, строк 20.
Но для начала пойдёт. Главное завёлся эмуль!

ILoveSpeccy
01.06.2011, 01:08
Лёд тронулся...
http://speccyland.net/index.php?option=com_content&view=article&id=6:2011-05-31-21-02-57&catid=5:2011-05-31-20-57-30&Itemid=19

ILoveSpeccy
03.06.2011, 00:36
Добавил АЦЗУ и ПЗУ знакогенератора. Теперь работает чтение из АЦЗУ и вывод на экран графики и символов (пока только 64 в строке). Цвета в игре "Rally" неправильные так как значения в LUT "от балды". Нужно было лишь проверить.

Скриншот тут:
http://speccyland.net/index.php?option=com_content&view=article&id=6:2011-05-31-21-02-57&catid=5:2011-05-31-20-57-30&Itemid=19

svofski
16.06.2011, 18:56
Надо писать: таймер вв53, контроллер прерываний, 3 штуки вв55,

ВИ53 я сделал для Вектора, можно взять оттуда. В тех режимах, которые в Векторе применялись, он неплохо отлажен. ВВ55 там тоже есть, но не мой а из FPGAArcade.

ILoveSpeccy
17.06.2011, 01:14
Дело двинулось дальше...

http://speccyland.net/index.php?option=com_content&view=article&id=6:2011-05-31-21-02-57&catid=5:2011-05-31-20-57-30&Itemid=19


ВИ53 я сделал для Вектора, можно взять оттуда. В тех режимах, которые в Векторе применялись, он неплохо отлажен. ВВ55 там тоже есть, но не мой а из FPGAArcade.

Спасибо! ВВ55 я какраз оттуда и взял. И таймер теперь есть.
Даже контроллер прерываний 8259 нашел.

----------------------------------------------

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

esl
17.06.2011, 01:27
;)
при старте ОПТС (ака BIOS) стек ставит в конец памяти ГЗУ
это просто стек
пока тесты не пройдут он там дергается

при наличии ошибок ОПТС кое что говорит (желательно ОПТС2)

BYTEMAN
17.06.2011, 02:24
при наличии ошибок ОПТС кое что говорит (желательно ОПТС2)
Если бы не ОПТС, я бы до сих пор геморроился с ремонтом Корветов...

ILoveSpeccy
17.06.2011, 14:23
На данный момент проект состоит из:
- ПЗУ
- ОЗУ
- АЦЗУ
- ЦПУ
- Видео, вывод ГЗУ и АЦЗУ, но так как
ГЗУ пока нет вообще, то и на экран ничего не выводится
- ППи1, Порты А и С, ППИ2 Порт А (без них корвет не заводился)

Вот пока и всё. Вообще нет таймера, контроллера прерываний, ГЗУ, ППИ3.

Интересно что тест проходит вроде как.
Никаких ошибок ОПТС не выводит (или я их не вижу :) )

Надо будет попробовать версию 2. Только там клава без
контроллера прерываний работать не будет.
Вечером попробую.

ILoveSpeccy
16.07.2011, 01:50
Прошел почти месяц. Совсем недавно наконец-то разобрался с кое
какими глюками и теперь дело пошло дальше.
Самое главное, я запустил ГЗУ. Реализовал все 4 страницы.
Работает ЛУТ.
ОПТС 2.0 теперь тоже проходит без ошибок. Надо было только дописать
третий i8055.
Теперь буду прикручивать контроллер прерываний!

Несколько вопросов по делу:
1. Как я понимаю, при рисовании и закрашивании в бейсике используется
цветовой режим. Рисование линий и окружностей работет. Тоесть запись
в норме. Закраска тоже работает, значит и чтение в норме.
Какие программы/игры используют послойный режим доступа к ГЗУ?
Нужно для тестов.
2. Использовались ли в корвете какие либо прерывания кроме video blank?
3. Какие режимы прерывания использовались в корвете?

esl
25.07.2011, 12:33
привет,
1. послойный использует например рамдиск в cp/m
это диск e:
зайти на него era *.*
потом на него копировать и сравнивать
есть на дисках тест КТДП - он тестирует и видеопамять
2. да, в доке есть список всех
видел использование hbl
прерывание от fdd (правда только в ROM от контура но там оно есть)
и от сети конечно
3. хороший вопрос, но когда писал эмулятор сделал все, ибо нарывался на что-то неработающие
хотя извратные режимы - вряди конечно, но он не так сложен в общем то

SaintTurnip
11.11.2012, 05:23
ILoveSpeccy, есть ли прогресс? У меня-то нету никакого :-)

ILoveSpeccy
12.05.2013, 21:28
ILoveSpeccy, есть ли прогресс? У меня-то нету никакого :-)

Вчера вечером вспомнил про свой проект корвета на DE1. Отрыл сырки, запустил, побаловался немного. Решил по-возможности продолжить работу над проектом. Новостей пока нет. Немного прибрал сырки, и по ходу появилась пара идей, как оптимировать работу с графикой. Пока займусь этим.

Если у кого нибудь есть плата Altera DE1 и желание "поиграться" с текущим проектом, могу выложить файлы для заливки в FPGA.

ILoveSpeccy
16.05.2013, 01:30
Вопрос Сергею,
палитра цветов Корвета в Вашем эмуляторе просто "на глаз" сделана?
Цвета у меня в эмуле и на DE1 не такие как у Вас.

Может кто подскажет как сделать красивую палитру 16 цветов в формате RGB по 8 бит на цвет?

esl
16.05.2013, 12:04
так, а там жеж как бы нет палитры ...

там же просто RGBI

или Вы про оттенки цветов ??

в откуда взялитсь цифры в коде - не помню уже
но там 8битная палитра

вроде и у меня и у b2m цвета похожи ...

ILoveSpeccy
16.05.2013, 12:16
или Вы про оттенки цветов ??

Да, я это имел в виду.
У меня цвета получаются, как бы это описать, очень яркие. Не приятно смотрится картинка.

В Вашем эмуляторе цвета "нежнее".

Тогда я просто "передеру" их у Вас один-в-один! :)

---------- Post added at 10:16 ---------- Previous post was at 10:12 ----------

Вчера отладил в симуляторе свой контроллер прерываний на VHDL. Вроде работает. Только доделать чтение из регистров осталось. Приоритетов нет. IRQ0 у меня первый, остальные после него по-очереди.
В корвете вообще приоритеты прерываниям важны???

В моём эмуляторе вообще только одно прерывание по VBLANK и из регистров всегда читается "0". Но софт, который я пробовал, вроде весь работал...

esl
16.05.2013, 13:18
Да, я это имел в виду.
У меня цвета получаются, как бы это описать, очень яркие. Не приятно смотрится картинка.

В Вашем эмуляторе цвета "нежнее".

Тогда я просто "передеру" их у Вас один-в-один! :)

;)

можно попросить "электронщиков" посчитать цвета по схеме ;)


Да, я это имел в виду.

Вчера отладил в симуляторе свой контроллер прерываний на VHDL. Вроде работает. Только доделать чтение из регистров осталось. Приоритетов нет. IRQ0 у меня первый, остальные после него по-очереди.
В корвете вообще приоритеты прерываниям важны???

В моём эмуляторе вообще только одно прерывание по VBLANK и из регистров всегда читается "0". Но софт, который я пробовал, вроде весь работал...

флаги, маски - нужны, вроде были глюки без них (на память приходит POPCORN)

приоритеты вроде не используются, вроде смысла нет использовать

у меня использовалось 2 (VBL+SERIAL (для мыши)

хотя правильно надо бы
обязательное
VBL

очень желательное
TIMER2 (для плат с ОПТС2)

очень желательное
SERIAL (мышка)
NET (для сети ;))

вот описание с коментарием (где видел использование)

>0 - запрос от дополнительных внешних устройств, подключенных к разъему РАСШИРЕНИЕ;

ПЗУ ОПТС для определения подключенного внешнего блока пзу

>1 - запрос от адаптера последовательного интерфейса (готовность приема);
>2 - запрос от адаптера последовательного интерфейса (готовность передачи);

1 - нужно для мышки

>3 - запрос от адаптера локальной сети;

нужно если реализовывать сеть

>4 - запрос сигналом кадрового гасящего импульса VBL с частотой 50 Гц;

обязательно, это основное прерывание

>5 - запрос от канала 2 программируемого таймера;

а с ним прикол, в оригинальных платах (ОПТС1), там на входе VBL, не очень полезно, и не видел использования
в новых платах ОПТС2 там на входе ~HBL, и можно получить прерывание когда лучь пройдет нужную строку
на сколько я знаю его использует АБРИС
и игры от GoldSoft (без него они тоже работали, но графика мигает)


>6 - запрос от интерфейса принтера;

разве что в теории можно использовать для фоновой печати.

>7 - запрос от контроллера НГМД.

последнее я так и не понял как можно использовать, оно происходит через когда гаснет лампа выбора дисковода (3 сек после последнего обращения), как это можно использовать - я не понял

ILoveSpeccy
19.05.2013, 22:30
С прерываниями пока вроде всё ясно. Теперь по таймеру есть вопрос.
Сергей, в Вашем эмуляторе не реализовано чтение у таймера ВВ53.
Это как либо повлияло на совместимость с каким либо корветовским софтом?

p.S. что с Вашим сайтом pk8020.narod.ru ???

p.p.S сегодня полностью переписал код ВВ55. Как приду домой, буду прикручивать доделанный контроллер прерываний. Осталось немного до работоспособного клона корвета на FPGA...

---------- Post added at 20:30 ---------- Previous post was at 20:24 ----------

Кстати, может ли реально пригодиться на FPGA-корвете реализация порта принтера, магнитофона, мыши, джойстика, сети, последовательного порта, порта расширения?
Просто работы много требует, а будет ли смысл?

Как допилю таймер и прерывания, останется только дисковод... Да и тот уже отлажен в си.

esl
20.05.2013, 11:24
Теперь по таймеру есть вопрос.
Сергей, в Вашем эмуляторе не реализовано чтение у таймера ВВ53.
Это как либо повлияло на совместимость с каким либо корветовским софтом?

ух ты, а я и забыл :(
для правильной эмуляции я бы теперь делал чтение ...
тем более вроде есть готовые PIT для альтеры



p.S. что с Вашим сайтом pk8020.narod.ru ???

переезд на ucoz ....

при переезде все HTML стали =0
хотя остальные файлы остались и качаются по прямым ссылкам

уже месяц пишу в поддержку.
они все сделаем, сделаем, в факе написано "не трогайте исходные файлы"
вот я и жду, вдруг починят

хотя похоже уже проще перезалить из бекапа



p.p.S сегодня полностью переписал код ВВ55. Как приду домой, буду прикручивать доделанный контроллер прерываний. Осталось немного до работоспособного клона корвета на FPGA...

супер!



Кстати, может ли реально пригодиться на FPGA-корвете реализация порта принтера, магнитофона, мыши, джойстика, сети, последовательного порта, порта расширения?
Просто работы много требует, а будет ли смысл?


мое имхо

>порта принтера по идее он и есть (последовательного порт),
имхо нет смысла совсем, что печатать с корвета ???
>магнитофона,
почти нет, разве что есть желание с этим играться ;)
>мыши,
есть несколько граф редакторов в которых она работает
собственно эт обычный RS232
>джойстика,
имхо - нет, т.к. нет "сандартного" джойстика
тот что на плате - "Аналоговый" не видел чтоб разводили на школьных машинах
и тем более использовали
в нескольких игрушках есть упоминание джойстика, но эт скорее экзотика
тем более точно были и другие реализации
т.е. имхо - нет
>сети,
разве что для экспериментов, хотя забавно, но там же токовая петля ;)
>порта расширения?
опять же, если совсем много портов есть лишних, то было бы забавно
но там же целых 25 бит портов
вход прерываний
таймер

в реальной жизни есть мое описание внешнего ПЗУ
есть некий набор "расширителя портов" с джойстиком и мышой (без поддержки софтом
в общем. эт из серии "чтоб все было"

вот таймер точно было бы полезно иметь полный
и PIC тоже

ILoveSpeccy
20.05.2013, 12:55
Просидел до 4 утра, но PIC так и не удалось запустить. Смотрю логическим анализатором...
ОПТС2.0. При разрешении прерывания процом 3 раза генерируется INTA, процом читаются байты 0xCD, 0xF0, 0xF7. Текущий адрес сохраняется в стёке и прыгаем по адресу. Короче вроде всё как надо. Но нет. Примерно через секунду после обработки первого прерывания, так и не выйдя в бейсик, экран заполняется девятками и висим.
Пробовал также корку 8259 из исходников башкирии от b2m. Абсолютно такая же реакция.

Может существует возможность как нибудь быстро диагностировать проблему?

Пока я только один путь вижу, дампить по RS232 например всё, что пишет/читает проц и сравнивать с эмулятором на компе. Потом искать где расхождения и почему.

esl
20.05.2013, 13:20
даже мысли нет,
а конец прерываний ты обрабатываеш ?
тот что EOI

ILoveSpeccy
20.05.2013, 13:24
Можно подробнее?

b2m
20.05.2013, 16:09
Может существует возможность как нибудь быстро диагностировать проблему?
Если пишешь на верилоге, то можно запустить в Icarus Verilog и сравнить с эмулятором. Тестовый модуль верхнего уровня пишется за 15 минут. Вот такой, например:

module test;

reg[7:0] mem[0:127];

wire[15:0] addrbus;
wire[7:0] cpu_i = mem[addrbus];
wire[7:0] cpu_o;
wire cpu_ce = 1'b1;
wire cpu_sync;
wire cpu_rd;
wire cpu_wr_n;

reg reset;
reg clk;

k580wm80a cpu(.clk(clk), .ce(cpu_ce), .reset(reset),
.idata(cpu_i), .addr(addrbus), .sync(cpu_sync),
.rd(cpu_rd), .wr_n(cpu_wr_n), .odata(cpu_o));

always #5 clk = ~clk;

always @(posedge clk) if(~cpu_wr_n) mem[addrbus] <= cpu_o;

initial begin
$readmemh("k580test.hex", mem);
$dumpfile("k580test.vcd");
$dumpvars(2, test);
reset = 1; clk = 0;
#100
reset = 0;
#3000
$finish;
end

endmodule

Это я в своё время процессор тестировал, но в тест можно и других устройств напихать. Спецы с marsohod.org таким образом даже linux для ARM до промпта запускали. :)

ILoveSpeccy
20.05.2013, 17:00
Я на VHDL пишу, а отлаживаю в Active HDL.
В том то и дело, что в симуляторе прерывания работают как надо.

И прерывания обрабатываются несколько раз, только потом зависание.

Сейчас переписал top под Ваши корки ВМ80 и ВН59 из башкирии 2м.
Проблема один-в-один как с моими корками.

ILoveSpeccy
20.05.2013, 22:33
Я думаю мне от этого никуда не уйти, но без элементарных знаний ассемблера i8080 мне будет очень сложно довести проект до завершения. Поэтому я решил написать простое тестовое ПЗУ для корвета. Так как я абсолютно не знаю ассемблера i8080, то начинать буду действительно с нуля.
* Какой ассемблер использовать?
* Какую литературу мне посоветуете.
* очень был бы благодарен за простые примеры вывода текста на экран, инициализации контроллера прерываний и их обработки с последующим выводом на экран...

esl
20.05.2013, 22:54
я пишу (грномко сказано) для 8080 в мнемонике Z80
только не используя комманды специфичные для z80

есть исходник ОПТС 1 ранних версий,
могу расшарить, могу еще базы для IDA с разными ромами (там можно переключать i8080,z80)

а какие примеры, код на чистом железе работать должен ?

ILoveSpeccy
20.05.2013, 23:03
я пишу (грномко сказано) для 8080 в мнемонике Z80
только не используя комманды специфичные для z80

есть исходник ОПТС 1 ранних версий,
могу расшарить, могу еще базы для IDA с разными ромами (там можно переключать i8080,z80)

а какие примеры, код на чистом железе работать должен ?

Сергей, какими инструментами Вы пользуетесь. Я скачал книгу по ассемблеру 8080 инашел немного кода в инете. Но как мне сделать bin файл? Есть ли какой нибудь кросс-ассемблер для винды?
Пробовать буду в эмуляторе (подгружать бинарник вместо ПЗУ) и на FPGA.

---------- Post added at 21:03 ---------- Previous post was at 21:02 ----------

исходники ОПТС думаю тоже пригодятся.

esl
20.05.2013, 23:22
ОПТС2.0. При разрешении прерывания процом 3 раза генерируется INTA, процом читаются байты 0xCD, 0xF0, 0xF7. Текущий адрес сохраняется в стёке и прыгаем по адресу.

а что в памяти по адресe f7f0?
должно быть c3 76 00 (jmp 0076)

есть идея, что эти байты не записались в RAM (они копируются из ром на этапе инициализации)

и еще вопрос, а работает ли CP/M после загрузки ?
и ОПТС1 должен работать, там клавиатура работает не по прерываниям, они запрещены

вот код обработчика из ОПТС2 в мнемонике i8080



RAM:0076 C3 94 0F jmp Int_Periodical

RAM:0F94 Int_Periodical: ; CODE XREF: RAM:0076j
RAM:0F94 F5 push psw
RAM:0F95 3A 6E F7 lda LutFlag
RAM:0F98 B7 ora a
RAM:0F99 C4 AF 0F cnz UpdateLUT
RAM:0F9C FB ei
RAM:0F9D 3A 19 F7 lda SYMNBUF
RAM:0FA0 B7 ora a
RAM:0FA1 C4 7C 00 cnz INT_routine
RAM:0FA4 F1 pop psw
RAM:0FA5
RAM:0FA5 _EOI: ; CODE XREF: RAM:loc_70j
RAM:0FA5 F3 di
RAM:0FA6 F5 push psw
RAM:0FA7 3E 20 mvi a, 20h ; ' '
RAM:0FA9 32 28 FB sta PIC_RUS
RAM:0FAC F1 pop psw
RAM:0FAD FB ei
RAM:0FAE C9 ret


а вот он-же в z80


RAM:007C INT_routine: ; CODE XREF: RAM:0FA1p
RAM:0076 C3 94 0F jp Int_Periodical

RAM:0F94 Int_Periodical: ; CODE XREF: RAM:0076j
RAM:0F94 F5 push af
RAM:0F95 3A 6E F7 ld a, (LutFlag)
RAM:0F98 B7 or a
RAM:0F99 C4 AF 0F call nz, UpdateLUT
RAM:0F9C FB ei
RAM:0F9D 3A 19 F7 ld a, (SYMNBUF)
RAM:0FA0 B7 or a
RAM:0FA1 C4 7C 00 call nz, INT_routine
RAM:0FA4 F1 pop af
RAM:0FA5
RAM:0FA5 _EOI: ; CODE XREF: RAM:0070j
RAM:0FA5 F3 di
RAM:0FA6 F5 push af
RAM:0FA7 3E 20 ld a, 20h ; ' '
RAM:0FA9 32 28 FB ld (PIC_RUS), a
RAM:0FAC F1 pop af
RAM:0FAD FB ei
RAM:0FAE C9 ret


---------- Post added at 22:22 ---------- Previous post was at 22:16 ----------


Сергей, какими инструментами Вы пользуетесь. Я скачал книгу по ассемблеру 8080 инашел немного кода в инете. Но как мне сделать bin файл? Есть ли какой нибудь кросс-ассемблер для винды?
Пробовать буду в эмуляторе (подгружать бинарник вместо ПЗУ) и на FPGA.

---------- Post added at 21:03 ---------- Previous post was at 21:02 ----------

исходники ОПТС думаю тоже пригодятся.

чуть позже выложу

например http://home.comcast.net/~tasm/index.htm
доки можно посмотреть на сайте Вектора
http://vector06c.narod.ru/
и их архиве софта http://asdasd.rpg.fi/~svo/scalar/categories/41/

ILoveSpeccy
20.05.2013, 23:29
ОПТС1 работает прекрасно. Могу рисовать на бейсике и т.д.
Ассемблер попробую.

Ща я сделаю трассировку прерываний в Вашем эмуляторе и посмотрю куды прыгаем при прерываниях...

esl
21.05.2013, 00:05
собственно идея в том что может не отрабатывает запись в RAM
у корвета любая запись в место куда нельзя писать приводит к записи в память по соответствующему адресу
например при записи в подключенный ROM пишем в рам
при записи в подключенные порты клавиатуры пишем в рам под ним

но это версия ....

ILoveSpeccy
21.05.2013, 00:08
В файле pic.c в обработчике прерываний int DoPIC (void)
добавил перед return строку printf("\nDoPIC CALL Addr: %04X", (picHIGH<<8) | Low);

Результат с ОПТС2 ниже

Driver: Allegmix Lautsprecher (Realtek High Definition Audio)
DoPIC CALL Addr: F7F0
DoPIC CALL Addr: F7F0
DoPIC CALL Addr: F7F0
DoPIC CALL Addr: F7F0
DoPIC CALL Addr: F7F0
DoPIC CALL Addr: F7F0
DoPIC CALL Addr: F7F0
DoPIC CALL Addr: F7F0
DoPIC CALL Addr: F7F0
DoPIC CALL Addr: F7F0
DoPIC CALL Addr: F7F0

И в FPGA тоже самое.
Мож я чегото путаю?

---------- Post added at 22:08 ---------- Previous post was at 22:06 ----------


собственно идея в том что может не отрабатывает запись в RAM
у корвета любая запись в место куда нельзя писать приводит к записи в память по соответствующему адресу
например при записи в подключенный ROM пишем в рам
при записи в подключенные порты клавиатуры пишем в рам под ним

но это версия ....

я так и делаю
вот кусок кода:

elsif CPU_WR = '0' then -- write
case MAPPER_DO is
when M_RAM | M_ROM0 | M_ROM1 | M_ROM2 | M_KEYBOARD =>
STATE <= SRAMWRITE;

DDp
21.05.2013, 00:09
какими инструментами Вы пользуетесь. Я скачал книгу по ассемблеру 8080 инашел немного кода в инете. Но как мне сделать bin файл? Есть ли какой нибудь кросс-ассемблер для винды?

http://john.ccac.rwth-aachen.de:8000/as/

make.bat

set PROJNAME=my_prog
set ASMDIR=c:\prog\asw
%ASMDIR%\bin\asw.exe -cpu 8080 -L %PROJNAME%.asm
if exist %PROJNAME%.p %ASMDIR%\bin\p2bin.exe %PROJNAME%.p %PROJNAME%.bin -r $-$ -k

svofski
21.05.2013, 01:22
ILoveSpeccy, я пользуюсь Прекрасным ассемблером (http://sensi.org/~svo/i8080/) :) У меня есть оффлайновая версия тоже.

ILoveSpeccy
21.05.2013, 01:41
ILoveSpeccy, я пользуюсь Прекрасным ассемблером (http://sensi.org/~svo/i8080/) :) У меня есть оффлайновая версия тоже.

Да, я его как раз сейчас пробую. А где можно скачать оффлайн версию? Я попробовал сохранить локально. Получилось 2 файла: html и css. А если хочу сгенерировать бинарник, ему нужен cgi скрипт.
Хотел завтра на работу взять а в ноуте нет инета.

svofski
21.05.2013, 03:13
ILoveSpeccy, отписал в личку.

ILoveSpeccy
24.05.2013, 01:28
Я вроде немного продвинулся дальше с проблемой с прерываниями.
Очень нужна помощь знатаков i8080. Попробую описать что к чему...
И так. Имеются: рабочий эмулятор корвета, основанный на исходниках эмулятора Сергея, и пока не рабочий дизайн корвета на FPGA.
В обоих случаях используется ОПТС2.0. При помощи простейшей трассировки программы выяснилось следующее:
Пока не приходит прерывание, результат сравнения один в один.
Но как только приходит прерывание происходит вот что...


Emulator FPGA
---------- ----------
RD 181B,13 RD 181B,13
RD 181C,2B RD 181C,2B
RD 181D,BC RD 181D,BC
RD 181E,C2 RD 181E,C2
RD 181F,1A RD 181F,1A
RD 1820,18 RD 1820,18
RD 181A,12 RD 181A,12
WR 6703,00 WR 6703,00
RD 181B,13 RD 181B,13
RD 181C,2B RD 181C,2B
interrupt
WR F499,18 WR F499,18
WR F498,1C WR F498,1F
RD F7F0,C3 RD F7F0,C3
RD F7F1,76 RD F7F1,76
RD F7F2,00 RD F7F2,00
RD 0076,C3 RD 0076,C3
RD 0077,94 RD 0077,94
RD 0078,0F RD 0078,0F
...
...
interrupt routine
...
...
RD 0FAD,FB RD 0FAD,FB
RD 0FAE,C9 RD 0FAE,C9
RD F498,1C RD F498,1F
RD F499,18 RD F499,18
RD 181C,2B RD 181F,1A
RD 181D,BC RD 6704,XX
RD 181E,C2 RD 1820,18
RD 181F,1A RD 1821,BD
...
...
...

Думаю так понятно будет.
Для объективности результата я вызываю прерывание в FPGA абсолютно в то же время что и в эмуляторе. Но! Эмулятор заносит в стёк адрес 0x181C, а FPGA 0x1F. Ну и как результат, при выходе из подрограммы обработки прерывания в FPGA всё валится.

Может у кого нибудь есть идеи на этот счёт?

---------- Post added at 21:30 ---------- Previous post was at 21:17 ----------

Да, совсем забыл написать, что использую корку T80 из проекта Вектора 06Ц на FPGA от Svofski.

---------- Post added at 22:24 ---------- Previous post was at 21:30 ----------

Интересно... только что поменял T80 на k580wm80a.v из проекта "Башкирии" на DE1 от b2m.... и теперь прерывания отрабатываются правильно.
Скорей всего с этой коркой заведётся... Если всё получится, перепишу её на VHDL потом, если b2m будет не против!

---------- Post added at 23:28 ---------- Previous post was at 22:24 ----------

Ну наконец-то! В симуляторе всё заработало!

b2m
24.05.2013, 09:45
Скорей всего с этой коркой заведётся... Если всё получится, перепишу её на VHDL потом, если b2m будет не против!
Чего это я бы был против? Не забудь только в комментариях указать, откуда дровишки :)

ILoveSpeccy
24.05.2013, 10:23
Не забудь только в комментариях указать, откуда дровишки :)
Сомо собой!

esl
24.05.2013, 13:21
перечитывал pk8020.lib

обратил внимание на цитату



; Одновибратор включения двигателя запускается на время 3 с
; при переходе сигнала (бита) MOTOR из 0 в 1. Для разгона
; двигателя требуется время около 0,5 с, после этого можно
; инициировать операции контроллера НГМД. Если двигатель
; уже был включен, время на разгон не требуется. Опрос
; состояния одновибратора включения двигателя производится
; через регистр запросов контроллера прерываний.

т.е. получается что INT7 не используется и мало смысла имеет, зато чтением из PIC
можно прочитать стостояние мотора ....

т.е. используют PIC как порт ввода/вывода

хотя не уверен что используется.

ILoveSpeccy
24.05.2013, 18:39
Постораюсь сегодня запутить контроллер прерываний в железе. И если заработает, то доделаю чтение из PIC. За ненадобностью приоритеты, наверное, делать не буду.

А! Вот ещё что. Я буду эмулировать дисковод микроконтроллером (пока точно не решил, внутренним или внешним), но всё же заинтерисован в реализации работы с SD-картой напрямую из CP/M. Сам я этого не осилю (мои познания ассемблера 8080 уникальны :D я уже как дня 3 его изучать начал :v2_dizzy_botan: ), но если бы кто нибудь "допилил" бы корветовскую ПЗУ или что там ещё надо, было бы классно!

esl
24.05.2013, 20:18
пзу точно трогать нет смысла, оно только грузит с диска и передает ему управление

чтобы сделать универсально, можно сделать через порт расширения,
тем боле там 3 8битых доступны.

там через "загрузку внешнего ПЗУ" оно будет загрузчик грузить
а он уже читает и диск с SD
там можно для простоты "монтировать" стандартный KDI

блин, можно было бы и попробовать написать, заманчиво ;)
собственно если бы был контроллер которому мы даем "номер сектора в KDI" а он выдает нам его, со стороны CP/M bios это было бы достаточно просто

вон vinxru делает что-то в ту степь, как раз на мелком AVR работа с SD

ILoveSpeccy
24.05.2013, 20:51
собственно если бы был контроллер которому мы даем "номер сектора в KDI" а он выдает нам его, со стороны CP/M bios это было бы достаточно просто

Как раз это для меня и не составляет никаких проблем! Для полного счастья сделать ещё и выбор образа диска прямо из CP/M!

з.Ы. Сергей, у Вас есть плата Altera DE1?

esl
24.05.2013, 21:07
неа :(
я несколько далек от железа ...

разве что реализовать в эмуляторе (можно даже мой реанимировать) ...
просто врядли это будет быстро, у меня мой даже не собирается
тогда его портировать на sdl,linux,macosx, да и для винды нормальный сделать

ILoveSpeccy
24.05.2013, 21:17
Я могу свой эмулятор допилить до нужного состояния. У меня на SDL/OPENGL. В win32 и в линуксе собирается без проблем.

Запущу контроллер прерываний и таймер, потом займусь эмулем. Надо только решить однозначно как это работать будет. Хорошо, ПЗУ как внешнее на третьем ВВ55, а вот доступ к выбору образа и доступа к секторам .KDI надо замапить на свободные порты (свободное место в PORTBASE кажеться есть, надо глянуть).

esl
24.05.2013, 21:43
не, не надо,
просто во внешнем ПЗУ отключается ПЗУ от портов, и дальше они уже как порты для данных

там же не настоящее пзу, а скорее "внешний рамдиск" из которого умеет грузиться биос
и который может отключаться.

я думал, что можно вообще сделать на одном контроллере,
который бы битиком CS переключался между режимом ПЗУ и контроллера

в режиме ПЗУ
(при записи в один из порторв "младший байт адреса", выставлять на втором "значение")
там 256 байт на "загрузчик" хватит, он дальше снимает CS, а дальше порты используем уже как нам удобно
например 1 порт для "флагов" 1 для обмена данными, один для "адресса"
хотя можно и 2мя обойтись
"статус/cmd" и "данные"

прелесть этой штуки, что ее можно к любому корвету подключить и оно будет работать, и в схему вообще не лезть

b2m
24.05.2013, 22:12
Я буду эмулировать дисковод микроконтроллером (пока точно не решил, внутренним или внешним), но всё же заинтерисован в реализации работы с SD-картой напрямую из CP/M.
Разве микроконтроллер обязательно нужен? У меня в проекте, откуда ты корку процессора брал, работа с SD-картой напрямую из CP/M. Правда там нехилое допущение, что файл образа диска нефрагментирован. При таком подходе биосу CP/M нужно лишь знать номер сектора начала файла (у меня загрузчик биоса из корневого каталога вытягивает данные и считает номер сектора).

---------- Post added at 23:12 ---------- Previous post was at 23:10 ----------

А отлаживал я в своём эмуляторе. При желании, можно состряпать конфиг и для Корвета с SD-картой. Контроллер SPI у меня реализован на сдвиговом регистре.

marinovsoft
24.05.2013, 22:54
А не замахнуться ли на внешнее устройство, подключаемое к порту расширения и на этапе загрузки эмулирующее внешнее ПЗУ, а после загрузки - как диск. Концепция примерно как sdrive к 8бит атари ?
Т.е после хардсброса загружается оболочка, в которой можно выбрать файл для монтирования в виртуальный диск, после софтсброса (какая-то резидентная програма или просто команда оболочки) - грузимся с примотированного диска.

ILoveSpeccy
24.05.2013, 22:58
Как раз это и планируется. Только пока в FPGA, хотя ничего не мешает превратить эту "фукцию" в отдельную железку для порта расширения.

ILoveSpeccy
25.05.2013, 02:23
Заработал контроллер прерываний!
Теперь наконец-то работает клавиатура в бейсике 2.0
Приберу код немного, доделаю чтение из контроллера прерываний и буду прикручивать таймер!
Ещё хочу полностью переписать арбитр памяти. Так как всё ОЗУ и ГЗУ хранятся в одной микросхеме SRAM, пришлось немного поизвращаться. Есть идеи как упростить эту часть, хотя и сейчас память работает вроде без сбоев.

esl
25.05.2013, 20:53
порылся в ПЗУ ОПТС2 и ОПТС1

они таки читают из контроллера прерываний состояние вращение мотора
и так определяют надо ли грузиться с дисковода

т.е. если не будет инта от motor on и не будет работать чтение из PIT
ОПТС не бедет пробовать грузиться автоматом

ILoveSpeccy
25.05.2013, 21:55
Я только что попробовал в своём эмуляторе.
У меня очень кастрированый PIC, который при чтении всегда возвращает 0x00 и дисковод работает без проблем. Пробовал на ОПТС1.1 и ОПТС2.0

---------- Post added at 19:54 ---------- Previous post was at 19:21 ----------

Появилась, или точнее выявилась небольшая проблема!
В бейсике 1.1 всё работает нормально, а в бейсике 2.0 при закраске (paint) всё виснет. Тоесть начинается закраска, и через пол секунды экран в девятках.

Чем отличается алгоритм PAINT у бейсика 2.0 от 1.1? Где искать проблему?

esl
26.05.2013, 00:14
Оно должно грузится само
Без нажатой F1

При на датой f1 оно не проверяет железо а пробует сразу грузится

На живом корвете если вставлен диск, оно с него грузится сразу после теста

Про паинт - посмотрю

ILoveSpeccy
26.05.2013, 00:21
Интересно получается...
В обеих версиях бейсика используется только цветовой режим доступа к ГЗУ. А раз в бейсике 1.1 всё работает, значит запись и чтение ГЗУ в порядке.
Поэтому я решил попробовать отключить прерывания во время закраски. И на тебе, всё закрасилось как надо. Поэтому я решил вместо корки 8080 от b2m попробовать cpu8080 из OpenCores.org . С этим процессором всё работает!
Меня смущает тот факт, что корка от b2m работает правильно всё остальное время. В чём проблема я не понимаю.
Если у b2m есть интерес, я могу дать ему весь проект для установки причины. Я всётаки думаю что проблема в корке CPU (надеюсь что я ошибаюсь).

---------- Post added at 22:21 ---------- Previous post was at 22:19 ----------


Оно должно грузится само
Без нажатой F1
Так теперь всё само и загружается. Все тесты проходит ОПТС (1.1 и 2.0) и в бейсик вываливаюсь.
Уже похоже на реальный корвет ;)

esl
26.05.2013, 00:25
При подключенном диске должно загрузится с диска а не выпасть в бейсик

ILoveSpeccy
26.05.2013, 00:26
Я совсем забыл про расширенные символы, надо доделать!
Знакогенератор я урезал до одного. Не знаю, есть ли толк от альтернативного? Использовался ли реально?

---------- Post added at 22:26 ---------- Previous post was at 22:25 ----------


При подключенном диске должно загрузится с диска а не выпасть в бейсик

Так диска пока нет никакого, на вг93 заглушка.

esl
26.05.2013, 00:29
Надо оба, использует например шахматы и ещё кое кто
Там досовская кодировка таблички
И широкий режим тоже используется

ILoveSpeccy
26.05.2013, 00:30
Сергей, повторю вопрос, уже как-то заданный.
У Вас в эмуляторе цвет 8 бит. Как можно его представить в 24 битах?
Тоесть мне нужна табличка для каждого из 16 цветов корвета в виде:

- 8 bit RED
- 8 bit GREEN
- 8 bit BLUE

---------- Post added at 22:30 ---------- Previous post was at 22:30 ----------


Надо оба, использует например шахматы и ещё кое кто
Там досовская кодировка таблички
И широкий режим тоже используется

Тогда сделаю оба знакогенератора.
И широкие символы я часто встречал!

ILoveSpeccy
26.05.2013, 12:03
С цветами разобрался тоже. Теперь выглядит достаточно симпотично! Так же сделал черно--зеленую палитру. Смотрится классно! У нас в классе с корветами был один такой монитор. Ностальгия!!!

esl
26.05.2013, 13:44
Круто !

Я все больше думаю что дефолтный должен быть чб
Т.к. в основном были чб мониторы
И по софту это видно
У нас в классе цвет подключали только на посмотреть
Не понравилось ... Да и монитор был маленький

breeze
26.05.2013, 15:43
У нас в классе цвет подключали только на посмотреть

Хех, я цветной «Абрис» видел вообще только вообще в журнале, то ли «Техника молодёжи», то ли «Радио» какое-то было. А так учительский комп у нас отличался наличием 2х TEAC'ов и надписью 8020 ;)

ILoveSpeccy
26.05.2013, 21:34
Прикрутил аудиокодек к корвету, пока без таймера.
Но при включении "пищит" как надо, так как третий бит порта C второй вв55 дёргает спикер.
Завтра постараюсь доделать таймер (который тоже пока возьму у b2m).

Ну и конечно же хотелось бы попробовать какие нибудь игры на моём de1-корвете.
Поэтому есть 2 вопроса:
1. где взять игры (rally, помоему, была для плёнки)?
2. как мне сделать WAV для заливки через магнитофонный вход?

Почитал тему про загрузку с магнитофона, но ответов так и не нашел
(а может просто чего-то проглядел).

---------- Post added at 19:34 ---------- Previous post was at 19:28 ----------


Я все больше думаю что дефолтный должен быть чб
Т.к. в основном были чб мониторы
Сделаю по умолчанию ч/б, а кнопрой F12 сделаю переключение между
ч/б, ч/зел., и цветным режимами. Также включение/выключение эффекта
телевизора. Я вроде уже писал о нём, когда отдельные строки пикселов
по-вертикали различить можно. Выглядит как на реале!

marinovsoft
27.05.2013, 05:24
Надо взять bin файл, msxcas с этой странички
http://marinovsoft.narod.ru/pk8020.htm, обновить исполняемый файл до версии 2.1 с этой странички
http://zx-pk.ru/showpost.php?p=361528&postcount=62
Прочитать ридмишку и сделать как там написано.
Удачи!

ILoveSpeccy
27.05.2013, 09:07
Получилось сделать из файла GONKI файл WAV, который длиной 2 мин 21 сек.
В корвете ввожу LOAD"CAS:GONKI ",B,R и после пилотного тона выскакивает "ОШИБКА ЧТЕНИЯ"
Что интересно, если я на корвете делаю команду SAVE"CAS:ABC" то тональность пилотного
тона ниже, чем в полученном WAV-файле.
Сегодня вечером попробую на реале загрузить.

---------- Post added at 07:07 ---------- Previous post was at 07:04 ----------

@marinovsoft
На Вашем сайте я скачал 2 документа, про форматы Бейсик- и ASCII-файлов.
Не могли бы Вы поделиться форматом BIN-файлов?
В планах сделать "проигрыватель" прямо в DE1.

esl
27.05.2013, 12:28
можно попробовать для быстро сделать некотороые игрушки вместо стандартной ром, эт не очень сложно,
но нужно ли ?
;)

ILoveSpeccy
27.05.2013, 12:47
можно попробовать для быстро сделать некотороые игрушки вместо стандартной ром, эт не очень сложно,
но нужно ли ?
;)

Хотябы одну, для пробы, я думаю не мешало бы!

А по-поводу отличия тональности пилотного тона, кажеться я обсчитался
в делении частоты для процессора и поделил частоту дизайна 32.5MHz
на 14 вместо 13.
Вечером буду дома и попробую.

marinovsoft
27.05.2013, 18:02
На Вашем сайте я скачал 2 документа, про форматы Бейсик- и ASCII-файлов.
Не могли бы Вы поделиться форматом BIN-файлов?
Бейсик-файлы бывают трех видов - токенизированный, текстовый и двоичный (исполняемый). В статье "Формат кассетных файлов Бейсик-Корвет" описаны общие моменты для этих файлов. BIN файл (если смотреть на с IBM) это тоже самое что и COM файл, т.е. исполняемый код без заголовка. При конвертации в "музыкальный файл" в начало файла добавляется еще шесть байт: адрес загрузки, адрес конца загрузки и адрес запуска (по два байта на каждый).

ILoveSpeccy
27.05.2013, 19:43
Есть!
Запустил первую игру на DE1-корвете!!! Это гонки!
Проблема была в том, что на ноутбуке, который я использовал как магнитофон,
в драйвере звука была включена функция якобы оптимизации звука.
Так оптимировало, что корвет не понимал что это.
Выяснил так: подрубил выход на магнитофон от реала ко входу DE1 и напрямую
"передал" программку из двух строчек. Получилось с первого раза.
Тут стало ясно, что магнитофонный вход работает, а причина в другом.

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

ILoveSpeccy
28.05.2013, 00:19
Заработал звук. Правдо пока не без проблем.
Не работает вообще при команде BEEP и в игре гонки. Только щёлкает.
Зато в treasure звук отличный. Пока не знаю в чём дело.
ВВ53 взял готовую, от b2m.
Больше игр для плёнки я не нашел. Так бы проверил!

---------- Post added at 22:11 ---------- Previous post was at 22:09 ----------

и ещё... почемуто в бейсике 2.0 загрузка с ленты работает прекрасно, а
в 1.1 постоянно после первого пилот-тона "ошибка чтения" выскакивает.
Может у кого будут идеи на этот счёт?

---------- Post added at 22:14 ---------- Previous post was at 22:11 ----------

Интересно... в бейсике 1.1 beep работает!

---------- Post added at 22:19 ---------- Previous post was at 22:14 ----------

Блин, в бейсике 1.1 после перезагрузки beep опять не работает. х.з. что такое
надо разбираться. скорее всего с таймером чтото

BYTEMAN
28.05.2013, 00:41
у корвета вроде как есть отдельный пин sound который разрешает/запрещает прохождение звука... Может быть надо сюда копать?

ILoveSpeccy
28.05.2013, 01:08
Не, я его первым делом сделал. Через него пищит оптс при включении.

---------- Post added at 23:08 ---------- Previous post was at 23:07 ----------

Со звуком тоже разобрался! Не правильно работало чтение из ВИ53. Теперь всё в норме!!!

ILoveSpeccy
28.05.2013, 10:10
Проблема с загрузкой с ленты в бейсике 1.1 так и осталась. Никак не могу понять в чем дело. Может у кого будут идеи? Чем отличается загрузка в бейсиках 1.1 и 2.0??

Все остальные пока найденные проблемы исправлены.
Я немного прибрал исходники, и теперь проект на такой стадии, что не стыдно показать людям.
По-возможности выложу сам проект с исходниками и описанием у себя на сайте.
Новости буду опубликовывать здесь.

Ну и на очереди теперь эмуляция дисковёрта!

ILoveSpeccy
28.05.2013, 22:12
Немного новостей.
У моего реального корвета вообще нет входново каскада читалки с ленты,
а на 4 пин вв55 (D119) сигнал заведён напрямую с разъёма.
Короче пришлось побыстрому склепать простенький вход на 74HC04.
Бейсик 2.0. Гружу с плёнки "rally". Игра успешно запускается. Немного
поиграл и нажимаю "СТОП". Выходим в бейсик, но кнопки не работают.
Я думал это только на DE1-корвете косяк такой. Оказалось что нет. После
сброса всё ок.
Вырубаю корвет, меняю всё 3 ПЗУшки на версию 1.1. Пытаюсь грузиться с
ленты.... а не тут то было! Один-в-один как на DE1, сразу "ошибка чтения"
Значит мой корвет на DE1 не парится! Но теперь задачка.
Кто нибудь успешно грузил проги с магнитофона в корвет с ПЗУ в.1.1???
Саму прошивку я брал из папки DATA в эмуляторе Сергея. Та, что
называется "korvet11.rom". Может есть альтернативная прошивка?
Или формат записи на ленту не совместим у версий 1.1 и 2.0????
Короче я в ступоре!
Одно радует, корвет на DE1 ведёт себя абсолютно также, как и реал! :v2_cool:

marinovsoft
28.05.2013, 22:18
Проверить можно так.
1. Берем ОПТС 2. Грузим файл с магнитофона, но не запускаем.
2. Сохраняем файл на магнитофон.
3. Берем ОПТС 1. Грузим полученный на шаге 2 файл.

ILoveSpeccy
28.05.2013, 22:39
Проверить можно так.
1. Берем ОПТС 2. Грузим файл с магнитофона, но не запускаем.
2. Сохраняем файл на магнитофон.
3. Берем ОПТС 1. Грузим полученный на шаге 2 файл.
Тоесть:

1. LOAD"CAS:GONKI ",B в бейсике 2.0
2. SAVE"CAS:GONKI ",B в бейсике 2.0
3. LOAD"CAS:GONKI ",B,R в бейсике 1.1

Так?

marinovsoft
28.05.2013, 22:48
С синтаксисом в п.2 напутано, там надо адреса еще указывать. Попробуйте методом научного тыка, я сейчас все равно не вспомню.

мысль какая - скорее всего период сигнала msxcas для 2.0 входит в допустимый предел, а для 1.1. - нет. А так хотя бы можн проверить совместимы ли вообще по форматам эти версии.

ILoveSpeccy
28.05.2013, 22:51
Короче, сохранил я в бейсике 2.0 на магнитофон простенькую программу на 2 строчки,
и в бейсике 1.1 без проблем её загрузил.
Вывод, что-то Ваш, marinovsoft, конвертер не так делает. Хотя бейсик 2.0 понимает.

marinovsoft
28.05.2013, 22:59
99,9% что проблема с периодом. Корвета 1.1 нет и не предвидется.



Const
Arr1:Array[1..8] Of Byte=($1,$2,$4,$8,$10,$20,$40,$80);
Const
Bit1 : Array[1..36] Of Integer =
(-5000,-5000,-5000,-5000,-5000,-5000,-5000,-5000,-5000,
5000, 5000, 5000, 5000, 5000, 5000, 5000, 5000, 5000,
-5000,-5000,-5000,-5000,-5000,-5000,-5000,-5000,-5000,
5000, 5000, 5000, 5000, 5000, 5000, 5000, 5000, 5000);
Bit0 : Array[1..36] Of Integer =
(-5000,-5000,-5000,-5000,-5000,-5000,-5000,-5000,-5000,
-5000,-5000,-5000,-5000,-5000,-5000,-5000,-5000,-5000,
5000, 5000, 5000, 5000, 5000, 5000, 5000, 5000, 5000,
5000, 5000, 5000, 5000, 5000, 5000, 5000, 5000, 5000);
Procedure Write_bit_1;
begin
BlockWrite(_RAWFile,Bit1,SizeOf(Bit1));
end;
Procedure Write_bit_0;
begin
BlockWrite(_RAWFile,Bit0,SizeOf(Bit0));
end;

ILoveSpeccy
28.05.2013, 23:09
Блин, замешкался. Я записал и опять считал в бейсике 2.0.
Ща попробовал загрузить в бейсике 1.1.
Появляется "ЗАГРУЗКА ФАЙЛА 123" и всё. Дальше не грузится.
Но хоть заголовок читает.

ILoveSpeccy
30.05.2013, 23:37
Мечты сбываются однако! Работает загрузка с KDI-образов на SD-карте! Пока всё очень сырое: нет возможности выбрать образ, нет выбора дисков A или B и т.д. Пока реализовано с применением обкатанного много раз мной SoftCore Plasma (немного кастрированный процессор MIPS R2000). Зато потенциаль какой! 8Мб SDRAM в моём распоряжении. В конце концов я всё равно переведу эмуляцию дисковода, наверное, на Z80.
Время будет, немного подробнее опишу как и что. Сейчас руки чешуться попробовать софта побольше!

ILoveSpeccy
31.05.2013, 17:55
Появилась идея у меня,
я, наверное, сделаю эмуляцию дисковода на VHDL а образы дисков
будут читаться из FLASH на DE1. Так как ПЗУ, FontROM и маппер не
вмещаются во внутреннюю память FPGA, то ПЗУ я храню во FLASH.
Ну а раз людям, решившим самим "пощупать" корвет на DE1 всё равно
придётся прошивать флэш, то за одно можно туда же и пару KDI-образов
прошить. Соберу туда самые интересные игрушки, а их не так уж и
много, и приложу файл к проекту. Переключать образы стандартным
способом можно будет, A:, B: и т.д.
Так я приведу мой проект в более или менее юзабельный вид. Просто
времени у меня на моё творчество не много осталось. Дел недоделанных
поднакопилось уйма. Надо будет сделать паузу. И за одно получится
урезанная корка ВГ93 на VHDL! Может кому она понадобится.

svofski
31.05.2013, 21:35
Плохо напрягать пользователя прошивкой флеша на DE1. Это когда разрабатываешь кажется, что невелик напряг прошить флеш, потому что по сравнению с разработкой это действительно не напряг ни разу. А когда ты играешься с чужими проектами, напряг оказывается велик и мотивация смотреть на такой проект сразу падает. Тем более, если во флеше уже что-то другое (например, куски OCM, как у меня). Не получается сделать начальный загрузчик с SD, который работает на том же процессоре, всасывает биос из какого-то предопределенного файла в рутовом каталоге и, затем, делает какой-то магический пас по которому самоуничтожается?

ILoveSpeccy
31.05.2013, 22:01
Не получается сделать начальный загрузчик с SD, который работает на том же процессоре, всасывает биос из какого-то предопределенного файла в рутовом каталоге и, затем, делает какой-то магический пас по которому самоуничтожается?
У меня всего одна проблема, это нехватка M4K памяти у циклона.
Всего около 8кбайт свободно, и выкинуть нечего. Всё нужно.
Тоесть, если уложиться в 8Кб кода, тогда без проблем. Но есть одно но!
Моих знаний ассемблера на это не хватит, а писать на си, код получится,
я думаю, больше. Хотя попробовать можно.

svofski
01.06.2013, 02:39
А почему нельзя выкинуть? Это ПЗУ, или ОЗУ? Если ПЗУ, то их можно считать с той же SD. Загрузчик как раз эту проблему и должен решить. Но и в 8К он должен прекрасно поместиться.

Не знаю, может быть tiny fatfs можно скомпилировать BDS C? Чем еще компилируют C для 8080 — когда я интересовался, никакого ответа я не нашел. В моей БК для этого используется ее же родной vm1, благо для него целых два компилятора есть. Может быть можно попробовать его выдрать и заставить работать загрузчиком :)

PPC
01.06.2013, 04:58
Напрямую tinyFATfs BDS C не скомпилит. Уж очень он не стандартный, даже не K&R. А вот сделать порт под BDS - имхо вполне. Причём, если ориентироваться на 80ю корку, то как раз BDS ИМХО-самое то в смысле компактности сгенерённого кода. Ещё пришло на ум предложить посмотреть на C цомпилер, написанный vinxru. Он, вроде стандартный x3.169, если даже не выше.

ILoveSpeccy
01.06.2013, 12:54
Напрямую tinyFATfs BDS C не скомпилит.
Ну, тут я свободен в выборе! Можно использовать, например, ZPU. Или какой нибудь другой SoftCore, под который полноценный GCC имеется. На OpenCores есть несколько AVR-корочек. Правда я пока не пробовал ни одной из них. Места в FPGA ещё уйма, только с M4K напряг.
На странице ElmChan написано, что TinyFATfs занимает около 4кб. В таком случае шансов много!

ILoveSpeccy
01.06.2013, 16:56
Заменил FatFS на Petit FatFS, отключил запись и...
Проект занял всего 5кб кода! И это для MIPS с 32-битными инструкциями!
Не ожидал! Есть надежды, что всё получится!

svofski
01.06.2013, 20:48
Еще много места остается. Загрузчик для bk0010 занимает 8кБ, причем это скомпилированный адским древним pcc. GCC может быть был бы компактней, хотя кто его знает. Там тоже le petit fatfs + то да се, там даже printf() есть.

А что за MIPS ты используешь и сколько ресурсов он сам занимает?

BYTEMAN
01.06.2013, 23:18
ILoveSpeccy, немного оффтопик.... А машинки с реальным MIPS'ом (например, SGI-шного чего-нить) у вас случаем нет? Или может быть опыт работы с такими машинами есть?

ILoveSpeccy
01.06.2013, 23:24
Я использую процессор mlite из проекта Plasma (на opencores.org).
32-бинтый MIPS R2000 совместимый (все команды, кроме "unaligned load/stores" и exceprions). 1 такт на 1 команду. 1.25DMIPS/MHz. Производительность на высоте!
На моём сайте есть собранные GCC (C,C++) с библиотеками (newlib) под windows и linux.
Само ядро занимает примерно 2000LE's во втором циклоне (de1). Тоесть, примерно как T80, только производительность в 50 раз (может ещё выше, не сравнивал) выше, при той же частоте.
Зато сравнивал с ATMEGA64, затактованным на 20MHz. Короче ATMEGA делает 6.5DMIPS (~0.33 DMIPS/MHz). Тоесть по тесту DHRYSTONE plasma быстрее, чем мега в 4 раза, при той же частоте.


---------- Post added at 21:24 ---------- Previous post was at 21:21 ----------


ILoveSpeccy, немного оффтопик.... А машинки с реальным MIPS'ом (например, SGI-шного чего-нить) у вас случаем нет? Или может быть опыт работы с такими машинами есть?
Не, даже в глаза не видел! Я с архитектурой MIPS познакомился во время знакомства с "плазмой". Заказал книгу из штатов и немного проштудировал как там и что. Интересная архитектура, ассемблер приятный. Ну и полноценная поддержка со стороны GCC. Чего ещё надо? :)

BYTEMAN
02.06.2013, 00:56
Не, даже в глаза не видел! Я с архитектурой MIPS познакомился во время знакомства с "плазмой". Заказал книгу из штатов и немного проштудировал как там и что. Интересная архитектура, ассемблер приятный. Ну и полноценная поддержка со стороны GCC. Чего ещё надо?
аа... я просто подумал, что быть может работали со станциями SGI-шными... То думал парочку вопросов задать...

ILoveSpeccy
11.06.2013, 00:56
Догнал эмуляцию дисковёрта до достаточно безглючного состояния. Теперь всё, что пробовал, грузится и работает. Пришлось быстренько сварганить тестовую платку с PIC24 и SD-картой, так как не мог выловить кой какие глюки. Казалось дело было в softcore, а оказалось , как это часто бывает, банальная невнимательность.
Теперь вопрос к знатокам! как мне привязать свой дисковёрт к корвету так, чтобы стандартными методами можно было выводить список образов с карты и выбирать нужный. В лучшем случае прямо из бейсика или cp/m, без использования других ромов. Можно ли доработать стандартный?
Подобное, например, сделано в эмуляторе дисковода MMC2IEC для C64.

esl
11.06.2013, 12:51
ROM бейсик - про существование дисковода и не догадывается

если логика контроллера своя - то как вариант можно сделать спец работу с например 255 дорожкой (на реальных дисках не бывает)
типа читаем из 255/01 - получаем 1к названий образов
пишем имя образа и номер диска в 255/01 - выбираем какой образ выбрать

ILoveSpeccy
11.06.2013, 13:45
Да, со стороны "железа" это довольно просто реализовать. И контроллеру программу доделать не составит труда мне. Что я сам не осилю, так это программную поддержку со стороны корвета. Если кто нибудь смог бы мне помочь в этом, то я доведу проект до своего логического завершения. Могу "допилить" эмулятор Сергея, чтобы эмулировался мой контроллер дисковода. Тогда отладить можно будет в эмуляторе. А к железу я прикручу...

esl
11.06.2013, 14:03
будет эмулятор - написать тулзу не сильно сложно
попробую написать

ILoveSpeccy
11.06.2013, 14:38
Займусь эмулятором...

ILoveSpeccy
17.09.2013, 11:00
Давно новостей от меня не было.
Последние месяцы занимался разводкой, пайкой и сборкой девайса, на котором со вчерашнего дня "тикает" мой корвет.
Всю информацию о девайсе: схемы, плату, прошивки и т.д. постораюсь как можно быстрее выложить у себя на сайте.

ILoveSpeccy
22.09.2013, 02:08
Накалякал краткое описание проекта и выложил пару фоток, схему и рисунки платы.
Всё тут: http://speccyland.net/

ILoveSpeccy
20.10.2013, 20:05
Пока плата нового Aeon на производстве, я нашел всётаки немного время и довёл до рабочего состояния bootloader с SD-карточки. А это значит, что теперь можно доделать корвет на DE1. Программа для работы с образами, эмуляцией дисковода и пр. может грузиться с карты в SDRAM. Теперь всё ограничевается только фантазией, так как у нас в распоряжении 8 мегабайт.
Например, сам bootloader занял всего 4473 байта. И это для 32-битного MIPS процессора с полной поддержкой SD/SDHC карт и файловой системы FAT12/16/32.
На днях постораюсь склепать первую рабочую версию для DE1. Нужна будет только карта, на которую закидываются firmware, образы FONT, ROM и дисков. Карту в DE1, и enjoy!

Krautsov
13.09.2014, 20:56
Давно новостей от меня не было.
Последние месяцы занимался разводкой, пайкой и сборкой девайса, на котором со вчерашнего дня "тикает" мой корвет.

Девайс будет запущен в массовое производство ? Если да, то какова стоимость ???

ILoveSpeccy
13.09.2014, 23:14
Девайс будет запущен в массовое производство ? Если да, то какова стоимость ???
По-поводу приобритения девайса обращаться сюда:
http://zx-pk.ru/market/viewtopic.php?f=7&t=2131

Xrust
17.06.2019, 20:44
Может и зря поднимаю старую тему. Нужен совет опытных схемотехников.
В Корвете видеопамять реализована весьма специфическим образом. Запись и чтение по раздельным входам и выходам. Но это не главная заморочка. Главное - запись происходит по маске отдельно в каждую микросхему памяти. А они там однобитные РУ6(РУ5). Если маска позволяет - инициируется сигнал разрешения записи и в соответствующую ячейку соответствующего чипа происходит запись. Если маска не позволяет - сохраняется предыдущее состояние. Вопрос: как реализовать все это не на 24 РУ5, а на 3 61512, например. Только предварительно считав содержимое в регистр? Нет ли более простого решения? Если я что-то не понял в схеме - поправьте.

BYTEMAN
17.06.2019, 20:48
Если там запись реализована так, как вы описали, то только через read-modify-write

Xrust
17.06.2019, 21:48
Если там запись реализована так, как вы описали, то только через read-modify-write

Ну как-то так. Три банка по восемь РУшек. Входы данных в каждом банке объединены, выходы раздельны. Запись инициируется в каждую микросхему из банка раздельно. Пишется один и тот же бит во все 8 чипов, но по разрешающей маске.

LeoN65816
18.06.2019, 08:37
Да, интересный ты нюанс затронул. И важный! Действительно, на обычной статике такого не реализовать без RMW... Да и "необычной" такой статики (с маской) вроде бы нет...
Поэтому совет: реализовывать ГЗУ (а также и АЦЗУ) на внутренней памяти FPGA (причем и конфигурить её как двухпортовую - для беспроблемного видеовыхлопа). То есть 1 страница (4, если памяти дох....) х 3 плоскости х 8 разрядов (здесь маску и замутить) х (16К х 1).

Xrust
18.06.2019, 08:41
LeoN65816, проблема в том, что не хочу FPGA. Хочется странного - CPLD :rolleyes: и железного проца, чипсета...

LeoN65816
18.06.2019, 09:06
CPLD - сильно урезанный младший брат FPGA (точнее, FPGA - это развитие CPLD). В CPLD ограниченное количество внутренних связей (на простых проектах это не сказывается, а на серьёзных приводит в тупик), отсутствует внутренняя память, малое количество логических элементов.
Ну, и по железному процу - никто не заставляет тебя юзать софтядро, юзай натуральный чип.

Xrust
18.06.2019, 09:13
Ну, и по железному процу - никто не заставляет тебя юзать софтядро, юзай натуральный чип.
Заставляет напряжение питания...

LeoN65816
18.06.2019, 10:12
Взгляни на семейства Flex10K и Acex1K.

Xrust
18.06.2019, 23:48
LeoN65816, есть над чем подумать.

Xrust
28.07.2019, 18:50
реализовывать ГЗУ (а также и АЦЗУ) на внутренней памяти FPGA (причем и конфигурить её как двухпортовую - для беспроблемного видеовыхлопа)
Почитал даташиты - увы, у FLEX и ACEX внутренней памяти кот наплакал. Не хватит даже под минимальную конфигурацию. И еще: если 7128 достаточно доступны как по цене та и по наличию, то более серьезные чипы встречаются редко и дороже на порядок.

Mick
24.12.2021, 20:00
Народ, а у кого нибудь остались файлы от проекта. А то speccyland.net похоже умер уже давно.

А, все нашел, теперь все гитхабе - https://github.com/ILoveSpeccy/Aeon-Lite