Просмотр полной версии : Любительская девборда на Z80
Ура, ура. Первое включение и ничего на сгорело.
Круто я вижу растр - цветную мозаику :)
Правда строка не сначала начинается. как бы начинается с половины первого и заканчивается на половине 80
Фото кликабельно.
http://s020.radikal.ru/i721/1307/46/a16d0abc6efdt.jpg (http://radikal.ru/F/s020.radikal.ru/i721/1307/46/a16d0abc6efdt.jpg)
В любом случае на выходных можно и отдохнуть :) Целую неделю корпел над прошивкой :)
Блин, а сигнала прерывания то нема :(
Посмотрел, что показывает монитор - он определил как 720x400. С какого такого перепугу то.
Mick, монитор твоего режима 640*400 не знает. Текстовый, как уже давно говорили, это матрица 9*16, 80*25 = 720*400, 70Гц. Это не страшно.
Как думаешь записать осмысленную инфу в ОЗУ ?
Как думаешь записать осмысленную инфу в ОЗУ ?
Очередной версией "ДиззиТеста" :)
Mick, монитор твоего режима 640*400 не знает. Текстовый, как уже давно говорили, это матрица 9*16, 80*25 = 720*400, 70Гц. Это не страшно.
Как думаешь записать осмысленную инфу в ОЗУ ?
Для начала, думаю просто в ПЗУ закачаю знакогенератор и экран и тупо его скопирую в память. Естественно при помощи процессора.
Меня другое смущает. Не видно первого и последнего символа. От них только огрызки. Увеличь фотку, там сразу увидишь о чем я.
---------- Post added at 16:07 ---------- Previous post was at 16:06 ----------
Очередной версией "ДиззиТеста" :)
Найдешь Диззи в ASCII тогда можно и его :)
---------- Post added at 16:12 ---------- Previous post was at 16:07 ----------
IanPo кажись понял о чем ты. Он вошел в текстовый режим и будет принудительно закачивать один пиксель пустышкой.
Черт, это не очень удобно. Получается что все 80 символов тупо не поместятся. Он считай отсекает два символа в легкую.
---------- Post added at 16:20 ---------- Previous post was at 16:12 ----------
Решил проверить, что будет, если я кадровую сделаю другой полярности.
Теперь он не пишет какой режим, а только 31,5KHz и 70Hz. Т.е. по сути мое предыдущее утверждение не верно. Что то я в синхрогенераторе накосячил. Он должен все 80 символов показывать а не 78 с двумя хвостами.
Надо HSync, HBorder и HBlanc подвинуть вправо. Когда НSync_Count = 0 изображение только читается из памяти, на экране оно появится позже.
Нашел причину. Я блин Scr_strobe не по нулю записывал информацию а по '1' . Вот и не влазили. Когда поменял, картинка стала другая - камуфляжная.
Скриншот сделаю и дома уже сюда закину. Сейчас уже рабочий день закончился.
Но в любом случае показывает только 79 символов. Где то еще один. Или я сбился со счету - несколько раз
А успел сделать фото. Вот кто рискнет знакоместа посчитать
Кликабельно.
http://s002.radikal.ru/i198/1307/c5/87e4dc86a937t.jpg (http://radikal.ru/F/s002.radikal.ru/i198/1307/c5/87e4dc86a937t.jpg)
79 символов насчитал.
Обращение к ОЗУ(видеовывод) надо сдвинуть относ-но синхры, имхо.
Где то еще один.
Есть повод тестбенчи писать научиться
Есть повод тестбенчи писать научиться
Ты матом то не ругайся.
---------- Post added at 18:51 ---------- Previous post was at 18:50 ----------
79 символов насчитал.
Обращение к ОЗУ(видеовывод) надо сдвинуть относ-но синхры, имхо.
Да, скорее всего. Надо посмотреть.
Тестовый полигон, делаешь к примеру генератор в модуле тестирования, к в нем подключаеш свой модуль верхнего уровня и в симуляторе смотришь на счетчики, сигналы итд
Но в любом случае показывает только 79 символов. Где то еще один. Или я сбился со счету - несколько раз
Причина здесь:
if HSync_count >= 79 then
HBorder <= '0';
else
HBorder <= '1';
end if;
При значениях HSync_count в диапазоне 1..79 HBorder равен 0. Получается 79 символов в строке. Надо писать
if HSync_count >= 80 then
и возможно нужно подвинуть HSync и HBlank.
Причина здесь:
Поправил, стало действительно 80 символов. Еще на одно знакоместо укоротил импульс гашения. Думаю не сильно монитор обидется. :)
Далее поставил процессор, без ПЗУ. Так как кнпка ресет заведена на AVR-ку, а она сейчас не прошита, то проц иногда не стартует. Но стоит отресетить, то мозаика с экрана исчезает. Вместо нее экран становится чисто белым.
А может таки выбрать АВР вместо ПИКа? Мегу16-32 TQFP, к примеру? Можно шить тем же бластером, что и ПЛИСку, цена примерно та же, софта для разработки больше, есть даже готовые программные модули.
Тут возник вопрос. Как мегу бластером прошить по JTAG.
Ее надоть прошить, а то она не прошитая немного мешает процессору из зм неопределенности на входах ACT8.
JTAG ICE есть?
Только вот такой http://www.ebay.com/itm/AVR-USB-Emulator-debugger-programmer-JTAG-ICE-for-Atmel-/160826021353?pt=LH_DefaultDomain_0&hash=item2571fa55e9
Но я не разобрался как с ним работать.
CodeMaster
22.07.2013, 16:40
Только поведай, чем шьется предполагаемый для борды ПИК? Разумеется, магазинные программаторы не в счет.
А чё так? У китайцев почти любой программатор по 10 баксов.
Прошил таки AVR ку этим программатором. Пришлось скачать AVR Studio 4.17
Только после этого он начал работать. Хотя и пришлось танцами с бубном заниматься.
Второе, обнаружилась ошибка на плате. Резать ничего не надо. Забыл сигнал IORQGE притянуть к земле. Хорошо что на слоте этот сигнал рядом с Землей. Припаял между ними чип резистор на 680 Ом.
Накатал небольшую программку, чтобы заполнила экран. Вобщем, вот что вывела.
Сразу видна ошибка в суммировании строк и цвете. Ну и некоторые символы неправильно выводятся.
И еще помоему символ разбивается пополам.
http://i053.radikal.ru/1307/97/32feec876ab1t.jpg (http://radikal.ru/F/i053.radikal.ru/1307/97/32feec876ab1t.jpg)
---------- Post added at 10:46 ---------- Previous post was at 10:21 ----------
С цветами я разобрался уже. Не те биты назначил.
Только вот середина символа как бы засвечена - т.е. экран полосатый.
---------- Post added at 11:37 ---------- Previous post was at 10:46 ----------
В суммировании тоже правильно, это я ошибся при создании экрана - затесались пару знаков табуляции.
Блин, рано я радовался. То что вывелась картинка это еще ничего не значит.
Проц в большинстве случаев не стартует. И лишь изредка выводит картинку.
В основном цветная каша, как сверху.
Сигналы MREQ и RD как бы дергаются.
У кого какие мысли по этому поводу. Что я мог не так сделать.
Проц на 10МГЦ - рабочий, проверял.
Блин, рано я радовался. То что вывелась картинка это еще ничего не значит.
Проц в большинстве случаев не стартует. И лишь изредка выводит картинку.
В основном цветная каша, как сверху.
Сигналы MREQ и RD как бы дергаются.
У кого какие мысли по этому поводу. Что я мог не так сделать.
Проц на 10МГЦ - рабочий, проверял.
традиционно с клока? посмотреть, что до буфера d9 , что после.
я клок не подтягивал после буфера к +5 . заводились 6,20Мгц камни, на поделках.
традиционно с клока? посмотреть, что до буфера d9 , что после.
я клок не подтягивал после буфера к +5 . заводились 6,20Мгц камни, на поделках.
Ну MREQ и RD дергаются, значит частота на проц приходит.
---------- Post added at 11:07 ---------- Previous post was at 09:54 ----------
Пока думал над этим нашел другую ошибку. Почему была полоса на символах. Бит 4 шины данных был не запаян на буфере.
Вот какая картинка в итоге должна была быть. Но вот бы еще каждый раз она появлялась, а не раз в 10 сбросов.
Ну что же, текстовый режим работает на ура и это радует.
http://s019.radikal.ru/i624/1307/f9/a9f86a84fba7t.jpg (http://radikal.ru/F/s019.radikal.ru/i624/1307/f9/a9f86a84fba7t.jpg)
Пока у меня мыслей нет.
Амплитуда импульсов на входе проца какая?
Доп.: от скольких питается D9 (полагаю, от 5 в).
RESET проца надежно ли срабатывает?
Сигнал /RES смотри, он не подтянут вроде, AVR проц вообще сбрасывает?
Амплитуда импульсов на входе проца какая?
Доп.: от скольких питается D9 (полагаю, от 5 в).
RESET проца надежно ли срабатывает?
Сигнал /RES смотри, он не подтянут вроде, AVR проц вообще сбрасывает?
Все это давно уже смотрел осцилографом. AVR я уже прошил маленькой программой заглушкой. Она ресетит хорошо проц. Амплитуда клоков на проце 5вольтовая.
Сейчас взял изменил фазу клоков на проце (сдвинул) стал гораздо чаще картинку выводить. Я думаю, тут связано больше с работой с памятью, чем с чем то еще. Но все равно стопроцентно пока не стартует с картинкой.
Я процедуру CLK_sync нафиг убрал, а сделал C_CLK <= not Sync_count(1);
Хотя может еще надо его синхронизовать с сигналом CLK_25MHZ?
Вот текущая прошивка. Сейчас запускается гораздо чаще. А если не сразу, то после нажатия кнопки сброса картинка появляется.
Вот текущая прошивка. Сейчас запускается гораздо чаще. А если не сразу, то после нажатия кнопки сброса картинка появляется.
хм а резет прям у цпу потягивал, к + ?
shurik-ua
25.07.2013, 00:21
вот здесь подозрительное место:
------------------------------------------------------------------------------------
-- Сигнал записи в память
------------------------------------------------------------------------------------
WE_ram : process(CLK_25MHZ,Sync_count)
begin
if Sync_count(1) ='1' then -- H1 = 1 - доступ видео
WR_RAM <= '1';
elsif (CLK_25MHZ'event and CLK_25MHZ = '0') then
if Sync_count(0) = '0' then
if (C_MREQ = '0' and C_WR = '0' and CS_RAM = '0') then
WR_RAM <= '0';
else
WR_RAM <= '1';
end if;
end if;
end if;
end process WE_ram;
т.е. условие elsif (CLK_25MHZ'event and CLK_25MHZ = '0') будет выполняться только если Sync_count(1) ='0' , если же там '1' , то всё что после (CLK_25MHZ'event and CLK_25MHZ = '0') будет проигнорировано.
p.s. лучше видеоадаптер вынести в отдельный модуль.
хм а резет прям у цпу потягивал, к + ?
Нет, цепь RES/ между AVR и процом никуда не подтянута .
---------- Post added at 06:52 ---------- Previous post was at 06:51 ----------
p.s. лучше видеоадаптер вынести в отдельный модуль.
А смысл?
Видео как раз работает нормально.
---------- Post added at 08:16 ---------- Previous post was at 06:52 ----------
вот здесь подозрительное место:
------------------------------------------------------------------------------------
-- Сигнал записи в память
------------------------------------------------------------------------------------
WE_ram : process(CLK_25MHZ,Sync_count)
begin
if Sync_count(1) ='1' then -- H1 = 1 - доступ видео
WR_RAM <= '1';
elsif (CLK_25MHZ'event and CLK_25MHZ = '0') then
if Sync_count(0) = '0' then
if (C_MREQ = '0' and C_WR = '0' and CS_RAM = '0') then
WR_RAM <= '0';
else
WR_RAM <= '1';
end if;
end if;
end if;
end process WE_ram;
т.е. условие elsif (CLK_25MHZ'event and CLK_25MHZ = '0') будет выполняться только если Sync_count(1) ='0' , если же там '1' , то всё что после (CLK_25MHZ'event and CLK_25MHZ = '0') будет проигнорировано.
Я полагаю, что CLK_25MHZ'event and CLK_25MHZ = '0 равносильно нашему триггеру типа ТМ2. Тоесть он срабатывает только при H1 =0 (Sync_count(1)), т.е. во время доступа процессора к памяти. При H1 = 1, триггер автоматом сбрасывается.
я б затянул, такие сигналы как рез и нми на + , дабы исключить всякие сюрпризы,
честно не знаю как, там авр дергает пинами при подаче питания и конфигурации, но резет я бы затянул точно.
я б затянул, такие сигналы как рез и нми на + , дабы исключить всякие сюрпризы,
честно не знаю как, там авр дергает пинами при подаче питания и конфигурации, но резет я бы затянул точно.
Сделал я для интереса - подцепил резистор к сбросу на проце. Первый же старт показал всю бессмысленность этой затеи - на экране каша.
Я вот что заметил. Цепляю щуп осцилографа на сброс - стартует всегда (сколько раз запускал, всегда картинка) нормально.
Сделал я для интереса - подцепил резистор к сбросу на проце. Первый же старт показал всю бессмысленность этой затеи - на экране каша.
Я вот что заметил. Цепляю щуп осцилографа на сброс - стартует всегда (сколько раз запускал, всегда картинка) нормально.
емкость на камень? резюк в разрыв клока , или не пропай.
такие варианты
Вобщем я так пока поступил. Так как при нажатии на кнопку Сброс - сбрасывается AVRка и устанавливает все свои ноги на вход, то как бы проц остается не сброшенным. А после AVR-ка уже ножкой дергает и сбрасывает проц.
Вобщем я подцепил временно резистор не на +, а на землю. Теперь когда AVRка сбрасывается, то сбрасывается и проц.
Картинка теперь появляется практически всегда, но иногда когда скажем передержишь кнопку всеже появляется каша.
Вот я думаю, это всетаки некая несинхронность синхрогенератора, т.е. фаза клоков при старте иногда не попадает в общую фазу.
Mick
Когда включается AVR и ноги работают на вход, на сбросе проца паразитный сигнал болтается.
Правильно, что подтянул.
Кстати, на прерываниях всяких и запросах к шине тоже имеет смысл проверить подтяжки.
Mick
Кстати, на прерываниях всяких и запросах к шине тоже имеет смысл проверить подтяжки.
С шины резисторы на все стоят. А между AVR и процом я думаю достаточно и одного сброса, так как после сброса AVR раньше сконфигурит свои выходы прежде чем отпустит ресет проца.
Вобщем я так пока поступил. Так как при нажатии на кнопку Сброс - сбрасывается AVRка и устанавливает все свои ноги на вход, то как бы проц остается не сброшенным. А после AVR-ка уже ножкой дергает и сбрасывает проц.
Вобщем я подцепил временно резистор не на +, а на землю. Теперь когда AVRка сбрасывается, то сбрасывается и проц.
Картинка теперь появляется практически всегда, но иногда когда скажем передержишь кнопку всеже появляется каша.
Вот я думаю, это всетаки некая несинхронность синхрогенератора, т.е. фаза клоков при старте иногда не попадает в общую фазу.
Обычно если со щупом на ноге,что то запускается то не хватает, емкости или сопротивления или просто накрылись уже. У тебя какой осоцил?
Обычно если со щупом на ноге,что то запускается то не хватает, емкости или сопротивления или просто накрылись уже. У тебя какой осоцил?
На работе стоит Tektronix TDS2002, правда щупы уже не родные, а китайские.
На работе стоит Tektronix TDS2002, правда щупы уже не родные, а китайские.
Посмотри что твоиться на питании осоцилом при холодном старте .
т.е теперь при холодном старте нормально запускается теперь ? если нет
ради эксперимента попробуй повесить еще электролит на питание, цпу.
а по резету получается как гбе дребезг тогда ? увеличить емкость кондера на резете?
т.е теперь при холодном старте нормально запускается теперь
Скажем приемлемо.
Думаю пока оставить эту часть и переходить к написанию биоса для AVRки и ПЗУшки.
---------- Post added at 12:08 ---------- Previous post was at 11:32 ----------
Для AVRки, я думаю первым делом надо клаву подцепить и COM порт. Чтобы худо-бедно можно было работать.
Вот в ПЗУ тут надо думать что нужно в первую очередь.
Допустим вывод в видео можно сделать через RST 10h и описать номера функций.
Допустим в регистре A - номер функции, в других - параметры.
Например
Функция 0 - Вывод символа в текущую позицию экрана
Функция 1 - Вывод строки символов заканчивающуюся 0
Функция 2 - Установка нового занкогенератора (своего), хотя командой LDIR я думаю умеете и сами пользоваться :)
Мысли какие есть?
Кстати, если интересно присоединяйтесь к разработке биоса. Чем быстрее сообразим, тем быстрее он будет работать :)
Можно что-нить выбрать из функций:
http://www.codenet.ru/progr/dos/
Можно что-нить выбрать из функций:
http://www.codenet.ru/progr/dos/
угу нафига плодить велосипеды, взять у доса бивиса ,что нужно. :v2_dizzy_indy:
хотя командой LDIR я думаю умеете и сами пользоваться
если уж пошла речь о биосе, то такими выражениями не стоит бросаться, все это должно делаться средствами биоса.
По FAT у TSL в репозитории есть сырки FAT BIOS, отучить их от DMA или прикрутить DMA в железку
угу нафига плодить велосипеды, взять у доса бивиса ,что нужно.
мож лучше у CP/M-овского биоса? эта оська куда приемлемей для зетника, чем MS-DOS.
мож лучше у CP/M-овского биоса? эта оська куда приемлемей для зетника, чем MS-DOS.
да без разницы, это даже лучше, хоть что то можно будет надергать.
BIOS у CP/M опять же состоит из 2х частей, более менее платформо независимый биос и монитор по типу тех что РК86 Специалист итд
мож лучше у CP/M-овского биоса? эта оська куда приемлемей для зетника, чем MS-DOS.
Давайте проясним ситуацию. Биос для девборды, это скажем помощник разработчику программ. Он скажем ближе должен к монитору РК подобных.
Тоесть набор простых функций, которые помогли бы самим не заморачиваться с выводом символов и строк на экран, чтение клавиатуры, ввода и вывода информации в COM порт. Ну и работа с SD картой.
Все остальные Оси это уже на любителя. Тем более Биос можно отключать и играться только с ОЗУ.
Естественно в ПЗУ будет необходим некий набор утилит для упрощения жизни разработчику.
Вот чтобы скажем упростить вызовы проще думаю их через RST делать,
например:
RST 8h - переход по адресу в другую страницу ПЗУ
RST 10h - работа с видеоадаптером
RST 18h - работа с клавиатурой и мышой
RST 20h - работа с COM портом
RST 28h - работа с SD картой
Давайте проясним ситуацию. Биос для девборды, это скажем помощник разработчику программ. Он скажем ближе должен к монитору РК подобных.
Тоесть набор простых функций, которые помогли бы самим не заморачиваться с выводом символов и строк на экран, чтение клавиатуры, ввода и вывода информации в COM порт. Ну и работа с SD картой.
Все остальные Оси это уже на любителя. Тем более Биос можно отключать и играться только с ОЗУ.
Естественно в ПЗУ будет необходим некий набор утилит для упрощения жизни разработчику.
Вот чтобы скажем упростить вызовы проще думаю их через RST делать,
например:
RST 8h - переход по адресу в другую страницу ПЗУ
RST 10h - работа с видеоадаптером
RST 18h - работа с клавиатурой и мышой
RST 20h - работа с COM портом
RST 28h - работа с SD картой
он к тому, можно повыдерать, код, чем писать полностью свое. или использовать номера функций и предаваемые значения как там.
оси то не надо, просто удобный доступ к периферии.
вообщем, чем проще тем лучше, ну а если запускать модифицированный cpm, кому то будет еще одно щастие,
по сути это уже мелко комп. :)
Ну я к тому тоже, что не пустые слова говорите, а ссылки на страницы или лучше выдержки. Чтобы было удобно самим же потом пользоваться.
Кстати подумалось. Что типа ближе CPM или MS DOS. В последней мне лично привычнее, тем более я там частый гость :)
Ну я к тому тоже, что не пустые слова говорите, а ссылки на страницы или лучше выдержки. Чтобы было удобно самим же потом пользоваться.
Кстати подумалось. Что типа ближе CPM или MS DOS. В последней мне лично привычнее, тем более я там частый гость :)
делай как считаешь нужным и удобным, для себя. все остальное можно перешить, на то и девелоп борда. каждому свое. Пзу же можно ведь нафиг отключить и залить, что угодно.
Вот похожий проект, тут есть список реализованных функций вывода:
http://habrahabr.ru/post/129746/
Вот накалякал примерный список функций видеодрайвера BIOSа.
Список управляющих символов позаимствовал из тем про Специалист.
;--------------------------------------------------------------------
; Управляющие последовательности
;--------------------------------------------------------------------
;08h - Влево, с переходом на строку выше на границе экрана
;0Ah - Перевод строки со скроллингом
;0Ch - Домой
;0Dh - Возврат каретки
;18h - Вправо с переходом на следующую строку на границе экрана
;19h - Вверх со скроллингом
;1Ah - Вниз со скроллингом
;1Fh - Очистка экрана
;
;1Bh - ESC:
;1Bh, 41h - Вверх
;1Bh, 42h - Вниз
;1Bh, 43h - Вправо
;1Bh, 44h - Влево
;1Bh, 45h - Стирание экрана
;1Bh, 48h - Домой
;1Bh, 4Ah - Стирание ниже курсора
;1Bh, 4Bh - Стирание правее курсора
;1Bh, 58h, (COLOUR) - Цвет сивола и фона
;1Bh, 59h, (XXH+20H), (YYH+20H) - Позиция курсора
;1Bh, 61h - Гашение курсора
;1Bh, 62h - Восстановление курсора
;1Bh, 70h - Включение инверсии
;1Bh, 71h - Выключение инверсии
;---------------------------------------------------------------------
; Функции видеодрайвера RST 10h
;---------------------------------------------------------------------
; Функция 00h - Инициализация видеодрайвера
;---------------------------------------------------------------------
; Входные параметры: A = 00h
; Выходные параметры: нет
; Описание: Происходит инициализация драйвера видеоконтроллера.
; Устанавливается 1 видеостраница, отображение экрана происходит
; в адресах 2000....3FFFh. Происходит очистка экрана и установка
; цвета символов и фона по умолчанию, а именно белые буквы на черном фоне
; Курсор устанавливается в левый верхний угол (коодинаты 0,0).
; Курсор при этом выключен (не отображается)
;--------------------------------------------------------------------
; Функция 01h - Установка режима работы курсора
;---------------------------------------------------------------------
; Входные параметры: A = 01h
; C = 00h - курсор выключен,
; 01h - курсор включен (мерцает)
; Выходные параметры: нет
; Описание: Происходит установка режима работы курсора. Если курсор
; включен, то текущее знакоместо будет мерцать (происходит попеременное
; влючение/выключение инверсии символа)
;--------------------------------------------------------------------
; Функция 02h - Чтение режима работы курсора
;---------------------------------------------------------------------
; Входные параметры: A = 02h
; Выходные параметры: С = текущий режим работы курсора
; Описание: Происходит чтение текущего значения режима работы курсора
; (выключен или включен).
;--------------------------------------------------------------------
; Функция 03h - Установка позиции курсора
;---------------------------------------------------------------------
; Входные параметры: A = 03h
; B = позиция по Y (вертикали), с значениями 0...24
; С = позиция по X (горизонтали), с значениями 0...79
; Выходные параметры: нет
; Описание: Происходит установка новой позиции курсора. После этого
; вывод символьной информации будет осуществлятся с новой позиции курсора
;--------------------------------------------------------------------
; Функция 04h - Чтение текущей позиции курсора
;---------------------------------------------------------------------
; Входные параметры: A = 04h
; Выходные параметры: текущая позиция курсора
; B = позиция по Y (вертикали)
; С = позиция по X (горизонтали)
; Описание: Происходит чтение текущей позиции курсора.
;--------------------------------------------------------------------
; Функция 05h - Установка цвета символов
;---------------------------------------------------------------------
; Входные параметры: A = 05h
; C = цвет фона и цвет точек, с значениями 0...15
; Выходные параметры: нет
; Описание: Происходит установка нового цвета знакоместа. После этого
; вывод символьной информации будет осуществлятся с новым цветом.
;--------------------------------------------------------------------
; Функция 06h - Чтение текущей цвета символов
;---------------------------------------------------------------------
; Входные параметры: A = 06h
; Выходные параметры: С = текущий цвет
; Описание: Происходит чтение текущего цвета.
;--------------------------------------------------------------------
; Функция 07h - Установить активную страницу экрана
;---------------------------------------------------------------------
; Входные параметры: A = 07h
; C = новая страница экрана с значением 0..7
; Выходные параметры: нет
; Описание: По этой команде происходит переключение на новую страницу экрана
;--------------------------------------------------------------------
; Функция 08h - Установить пользовательский знакогенератор
;---------------------------------------------------------------------
; Входные параметры: A = 08h
; BC = адрес знакогенератора пользователя
; Выходные параметры: нет
; Описание: По этой команде происходит копирование знакогенератора из программы
; пользователя в область знакогенератора страницы экрана
;--------------------------------------------------------------------
; Функция 09h - Вывод символа на экран
;---------------------------------------------------------------------
; Входные параметры: A = 09h
; C = выводимый символ
; Выходные параметры: нет
; Описание: Выводится символ в текущее положение курсора с текущим цветом
; Кроме того обрабатываются управляющие символы
;--------------------------------------------------------------------
; Функция 0Ah - Вывод символа и его цвета на экран
;---------------------------------------------------------------------
; Входные параметры: A = 0Ah
; B = цвет символа и цвет фона
; C = выводимый символ
; Выходные параметры: нет
; Описание: Выводится символ и его цвет в текущее положение курсора.
; В этой команде не обрабатываются управляющие символы
;--------------------------------------------------------------------
; Функция 0Bh - Прочитать символ и его цвет с текущего положения курсора
;---------------------------------------------------------------------
; Входные параметры: A = 0Bh
; Выходные параметры:
; B = цвет символа и цвет фона
; C = выводимый символ
; Описание: Происходит чтение символа и его цвета из текущего положения курсора.
;--------------------------------------------------------------------
; Функция 0Ch - Заполнение символом и его цветом область экрана
;---------------------------------------------------------------------
; Входные параметры: A = 0Сh
; B = цвет символа и цвет фона
; C = выводимый символ
; D = количество символов по Y (вертикали)
; E = количество символов по X (горизонтали)
; Выходные параметры: нет
; Описание: Заполняется область экрана начиная с текущей позиции курсора
; символом и его цветом.
; В этой команде не обрабатываются управляющие символы
;--------------------------------------------------------------------
; Функция 0Dh - Отрисовка окна без заголовка
;---------------------------------------------------------------------
; Входные параметры: A = 0Dh
; B = цвет символа и цвет фона
; C = выводимый символ
; D = размер окна Y (вертикали)
; E = размер окна по X (горизонтали)
; Выходные параметры: нет
; Описание: Создается область на экране окруженная рамкой, созданная
; символом и его цветом. Кроме того область внутри окна очищается
; символом пробела с цветом, заданным при создании окна
;--------------------------------------------------------------------
; Функция 0Eh - Отрисовка окна c заголовком
;---------------------------------------------------------------------
; Входные параметры: A = 0Eh
; B = цвет символа и цвет фона
; C = выводимый символ
; D = размер окна Y (вертикали)
; E = размер окна по X (горизонтали)
; HL = адрес текстовой строки заголовка
; Выходные параметры: нет
; Описание: Создается область на экране окруженная рамкой, созданная
; символом и его цветом. Кроме того область внутри окна очищается
; символом пробела с цветом, заданным при создании окна
;--------------------------------------------------------------------
; Функция 0Fh - Вывод строки символов на экран
;---------------------------------------------------------------------
; Входные параметры: A = 0Fh
; BC = адрес выводимой строки
; Выходные параметры: нет
; Описание: Выводится строка символов в текущее положение курсора с текущим цветом
; Кроме того обрабатываются управляющие символы.
; Строка должна заканчиваться кодом - 00h
;--------------------------------------------------------------------
; Функция 10h - Вывод строки символов и их цвета на экран
;---------------------------------------------------------------------
; Входные параметры: A = 10h
; BC = адрес выводимой строки
; Выходные параметры: нет
; Описание: Выводится строка символов в текущее положение курсора
; Формат симольной строки должен соответствовать следующей последовательности - символ, цвет,....
; Кроме того управляющие символы не обрабатываются
; Строка должна заканчиваться кодом - 00h
Если что не понятно или есть предложения, высказывайтесь.
Вот, думаю сюда еще внести функцию вывода символа в HEX виде
Лучше бы не символа в HEX-виде, а 16-битного числа в двоичном и шестнадцатиричном форматах.
A=код функции
BC=число
D=основание(2,10,16)
вывод тек.цветом с тек.позиции
Просто любопытно: вот эти функции, они где-нибудь реально используются ?
Чтение текущей позиции курсора
Прочитать символ и его цвет с текущего положения курсора
а курсор кстати софтовый будет? на прерывании висеть мигать?
а курсор кстати софтовый будет? на прерывании висеть мигать?
Да, в обработчике прерывания будет вызываться функция мигания курсора.
---------- Post added at 15:46 ---------- Previous post was at 15:42 ----------
Лучше бы не символа в HEX-виде, а 16-битного числа в двоичном и шестнадцатиричном форматах.
A=код функции
BC=число
D=основание(2,10,16)
вывод тек.цветом с тек.позиции
Вот ты это зря. Я столько раз пользовался и пользуюсь выводить символы в
HEX виде, это очень удобно со времен РКшки. :)
А функции преобразования можно отдельно забубенить. :)
---------- Post added at 15:48 ---------- Previous post was at 15:46 ----------
Просто любопытно: вот эти функции, они где-нибудь реально используются ?
Чтение текущей позиции курсора
Прочитать символ и его цвет с текущего положения курсора
Про первую не скажу, а вторая реально может использоваться если например, хочешь проинвертировать символ. Грубо говоря менять менюшки непосредственно в экранной памяти - т.е. не нужно в буфере меню еще раз отрисовывать :)
Mick, а что это значит "символ в HEX виде"? Я думал, это опечатка.
Mick, а что это значит "символ в HEX виде"? Я думал, это опечатка.
Я скорее всего неправильно выразился. Там как бы байт в HEX виде.
Вот у тебя допустим есть код в регистре 31h. Если ты выведешь как символ, то на экране будет один символ 1. А если как HEX то на экране будут уже два символа 31.
В РКшке это функция F815 ели не ошибаюсь.
Error404
26.07.2013, 23:25
Просто любопытно: вот эти функции, они где-нибудь реально используются ?
Чтение текущей позиции курсора
Прочитать символ и его цвет с текущего положения курсора
Про первую не скажу, а вторая реально может использоваться если например, хочешь проинвертировать символ. Грубо говоря менять менюшки непосредственно в экранной памяти - т.е. не нужно в буфере меню еще раз отрисовывать :)
Первая используется в любом оконном драйвере открывающем и, что принципиально, закрывающем окна с возвращением фокуса (в примитиве - курсора) туда, откуда он был сорван.
Вторая может использоваться в том же драйвере для прочитывания "подоконного" экранного ОЗУ используемого в момент закрытия окна (восстановления нижнего плана), если для этого не будет отдельной функции (ибо читать по символу да еще каждый раз выставляя курсор - тормознуто).
Первая используется в любом оконном драйвере открывающем и, что принципиально, закрывающем окна с возвращением фокуса (в примитиве - курсора) туда, откуда он был сорван.
Вторая может использоваться в том же драйвере для прочитывания "подоконного" экранного ОЗУ используемого в момент закрытия окна (восстановления нижнего плана), если для этого не будет отдельной функции (ибо читать по символу да еще каждый раз выставляя курсор - тормознуто).
Можно тогда добавить по этому случаю пару функций.
1. Копирование области экрана по указанному юзером адресу
2. Копирование из области памяти юзера в экран.
Error404
28.07.2013, 14:15
Можно тогда добавить по этому случаю пару функций.
1. Копирование области экрана по указанному юзером адресу
2. Копирование из области памяти юзера в экран.
Да, это было бы правильно. Но и чтение единичного символа под курсором все равно надо тоже оставить. Такая функция есть во многих реализациях VT-52/VT-100. Вдруг кто-то на базе БИОСа напишет эти подгружаемые драйвера.
И хорошо бы векторизировать подпрограммы БИОСа (т.е. при старте в ОЗУ инициализировать керналь через которую пропускать вызовы)
И хорошо бы векторизировать подпрограммы БИОСа (т.е. при старте в ОЗУ инициализировать керналь через которую пропускать вызовы)
Это можно сделать.
Так вот обновленный список функций RST 10h
;---------------------------------------------------------------------
; Функция 00h - Инициализация видеодрайвера
;---------------------------------------------------------------------
; Входные параметры: A = 00h
; Выходные параметры: нет
; Описание: Происходит инициализация драйвера видеоконтроллера.
; Устанавливается 1 видеостраница, отображение экрана происходит
; в адресах 2000....3FFFh. Происходит очистка экрана и установка
; цвета символов и фона по умолчанию, а именно белые буквы на черном фоне
; Курсор устанавливается в левый верхний угол (координаты 0,0).
; Курсор при этом выключен (не отображается)
;--------------------------------------------------------------------
; Функция 01h - Установка режима работы курсора
;---------------------------------------------------------------------
; Входные параметры: A = 01h
; C = 00h - курсор выключен,
; 01h - курсор включен (мерцает)
; Выходные параметры: нет
; Описание: Происходит установка режима работы курсора. Если курсор
; включен, то текущее знакоместо будет мерцать (происходит попеременное
; влючение/выключение инверсии символа)
;--------------------------------------------------------------------
; Функция 02h - Чтение режима работы курсора
;---------------------------------------------------------------------
; Входные параметры: A = 02h
; Выходные параметры: С = текущий режим работы курсора
; Описание: Происходит чтение текущего значения режима работы курсора
; (выключен или включен).
;--------------------------------------------------------------------
; Функция 03h - Установка позиции курсора
;---------------------------------------------------------------------
; Входные параметры: A = 03h
; B = позиция по Y (вертикали), с значениями 0...24
; С = позиция по X (горизонтали), с значениями 0...79
; Выходные параметры: нет
; Описание: Происходит установка новой позиции курсора. После этого
; вывод символьной информации будет осуществлятся с новой позиции курсора
;--------------------------------------------------------------------
; Функция 04h - Чтение текущей позиции курсора
;---------------------------------------------------------------------
; Входные параметры: A = 04h
; Выходные параметры: текущая позиция курсора
; B = позиция по Y (вертикали)
; С = позиция по X (горизонтали)
; Описание: Происходит чтение текущей позиции курсора.
;--------------------------------------------------------------------
; Функция 05h - Установка цвета символов
;---------------------------------------------------------------------
; Входные параметры: A = 05h
; C = цвет фона и цвет точек, с значениями 0...15
; Выходные параметры: нет
; Описание: Происходит установка нового цвета знакоместа. После этого
; вывод символьной информации будет осуществлятся с новым цветом.
;--------------------------------------------------------------------
; Функция 06h - Чтение текущей цвета символов
;---------------------------------------------------------------------
; Входные параметры: A = 06h
; Выходные параметры: С = текущий цвет
; Описание: Происходит чтение текущего цвета.
;--------------------------------------------------------------------
; Функция 07h - Установить активную страницу экрана
;---------------------------------------------------------------------
; Входные параметры: A = 07h
; C = новая страница экрана с значением 0..7
; Выходные параметры: нет
; Описание: По этой команде происходит переключение на новую страницу экрана
;--------------------------------------------------------------------
; Функция 08h - Установить пользовательский знакогенератор
;---------------------------------------------------------------------
; Входные параметры: A = 08h
; BC = адрес знакогенератора пользователя
; Выходные параметры: нет
; Описание: По этой команде происходит копирование знакогенератора из программы
; пользователя в область знакогенератора страницы экрана
;--------------------------------------------------------------------
; Функция 09h - Вывод символа на экран
;---------------------------------------------------------------------
; Входные параметры: A = 09h
; C = выводимый символ
; Выходные параметры: нет
; Описание: Выводится символ в текущее положение курсора с текущим цветом
; Кроме того обрабатываются управляющие символы
;--------------------------------------------------------------------
; Функция 0Ah - Вывод символа и его цвета на экран
;---------------------------------------------------------------------
; Входные параметры: A = 0Ah
; B = цвет символа и цвет фона
; C = выводимый символ
; Выходные параметры: нет
; Описание: Выводится символ и его цвет в текущее положение курсора.
; В этой команде не обрабатываются управляющие символы
;--------------------------------------------------------------------
; Функция 0Bh - Прочитать символ и его цвет с текущего положения курсора
;---------------------------------------------------------------------
; Входные параметры: A = 0Bh
; Выходные параметры:
; B = цвет символа и цвет фона
; C = выводимый символ
; Описание: Происходит чтение символа и его цвета из текущего положения курсора.
;--------------------------------------------------------------------
; Функция 0Ch - Заполнение символом и его цветом область экрана
;---------------------------------------------------------------------
; Входные параметры: A = 0Сh
; B = цвет символа и цвет фона
; C = выводимый символ
; D = количество строк
; E = количество символов в строке
; Выходные параметры: нет
; Описание: Заполняется область экрана начиная с текущей позиции курсора
; символом и его цветом.
; В этой команде не обрабатываются управляющие символы
;--------------------------------------------------------------------
; Функция 0Dh - Вывод байта в HEX виде экран
;---------------------------------------------------------------------
; Входные параметры: A = 0Dh
; C = выводимый байта
; Выходные параметры: нет
; Описание: Выводится байта в виде HEX в текущее положение курсора и
; в текущем цвете.
;--------------------------------------------------------------------
; Функция 0Eh - Отрисовка окна без заголовка
;---------------------------------------------------------------------
; Входные параметры: A = 0Eh
; B = цвет символа и цвет фона
; C = выводимый символ
; D = размер окна по вертикали (число строк)
; E = размер окна по горизонтали (число символов в строке)
; Выходные параметры: нет
; Описание: Создается область на экране окруженная рамкой, созданная
; символом и его цветом. Кроме того область внутри окна очищается
; символом пробела с цветом, заданным при создании окна .
; Окно отрисовывается с текущего положения курсора.
;--------------------------------------------------------------------
; Функция 0Fh - Отрисовка окна c заголовком
;---------------------------------------------------------------------
; Входные параметры: A = 0Fh
; B = цвет символа и цвет фона
; C = выводимый символ
; D = размер окна по вертикали (число строк)
; E = размер окна по горизонтали (число символов в строке)
; HL = адрес текстовой строки заголовка
; Выходные параметры: нет
; Описание: Создается область на экране окруженная рамкой, созданная
; символом и его цветом. Кроме того область внутри окна очищается
; символом пробела с цветом, заданным при создании окна
; Окно отрисовывается с текущего положения курсора.
;-----------------------------------------------------------------------
Продолжение
;--------------------------------------------------------------------
; Функция 10h - Вывод строки символов на экран
;---------------------------------------------------------------------
; Входные параметры: A = 10h
; BC = адрес выводимой строки
; Выходные параметры: нет
; Описание: Выводится строка символов в текущее положение курсора с текущим цветом
; Кроме того обрабатываются управляющие символы.
; Строка должна заканчиваться кодом - 00h
;--------------------------------------------------------------------
; Функция 11h - Вывод строки символов и их цвета на экран
;---------------------------------------------------------------------
; Входные параметры: A = 11h
; BC = адрес выводимой строки
; Выходные параметры: нет
; Описание: Выводится строка символов в текущее положение курсора
; Формат симольной строки должен соответствовать следующей последовательности - символ, цвет,....
; Кроме того управляющие символы не обрабатываются
; Строка должна заканчиваться кодом - 00h
;---------------------------------------------------------------------
; Функция 12h - Копирование области экрана в память программы пользователя
;---------------------------------------------------------------------
; Входные параметры: A = 12h
; B = количество строк
; С = количество символов в строке
; HL = адрес памяти куда будет происходить копирование
; Выходные параметры: нет
; Описание: Копируется область экранной памяти из текущей позиции курсора
; в область памяти программы пользователя. Стоит учитывать, что копируется
; кроме символа, еще и его атрибут.
;---------------------------------------------------------------------
; Функция 13h - Копирование из памяти программы пользователя в область экрана
;---------------------------------------------------------------------
; Входные параметры: A = 13h
; B = количество строк
; С = количество символов в строке
; HL = адрес памяти откуда будет происходить копирование
; Выходные параметры: нет
; Описание: Копируется из области памяти программы пользователя в область
; экранной памяти в текущую позицию курсора.
; Стоит учитывать, что копируется кроме символа, еще и его атрибут.
;--------------------------------------------------------------------
; Функция 14h - Вывод байта или слова в двоичном, десятичном или шестнадцатеричном
; виде на экран
;---------------------------------------------------------------------
; Входные параметры: A = 14h
; B = старший байт если выводится слово
; C = младший байт
; E = 00h вывод байта в двоичном виде
; = 01h вывод байта в десятичном виде
; = 02h вывод байта в шестнадцатеричном виде
; = 04h вывод слова в двоичном виде
; = 05h вывод слова в десятичном виде
; = 06h вывод слова в шестнадцатеричном виде
; Выходные параметры: нет
; Описание: Выводится байт или слова на экран в двоичном, десятичном или шестнадцатеричном
; виде на экран в текущее положение курсора и в текущем цвете.
;---------------------------------------------------------------------
Вроде все хорошо, маленькое замечание по формату:
; Формат симольной строки должен соответствовать следующей последовательности - символ, цвет,....
Нужна будет PC прога, рисующая менюшки и экранчики, и создающая текстовую последовательность для вставки в текст программ (asm и C). Может, уже есть такие?
А зачем такой формат? может упр. символ для смены цвета ввести? если выводить каждый символ с разным цветом - да, удобно, а если надо только одно-два слово подсветить в предложении?
А зачем такой формат? может упр. символ для смены цвета ввести? если выводить каждый символ с разным цветом - да, удобно, а если надо только одно-два слово подсветить в предложении?
Для этой цели есть функция 10h. Смена цвета по управляющему символу 1Bh, 58h, COLOUR.
А так функция 11h похожа на функцию копирования 13h.
---------- Post added at 11:10 ---------- Previous post was at 11:08 ----------
Вроде все хорошо, маленькое замечание по формату:
; Формат симольной строки должен соответствовать следующей последовательности - символ, цвет,....
Нужна будет PC прога, рисующая менюшки и экранчики, и создающая текстовую последовательность для вставки в текст программ (asm и C). Может, уже есть такие?
Такая функция есть на PC. Возможно и программы есть такие, надо в DOS прогах покопаться :)
Тут у меня возникла мысль.
Что если прерывания сделать не по кадровому импульсу, а по счетчику-делителю
Т.е. взять к примеру частоту кадрового делителя V1 = 7867,1875Гц
и пустить еще по одному 8 - разрядному счетчику. Сделать порт сравнения с необходимой частотой и получать на выходе необходимую частотут прерывания.
Вот например:
- загружаем в порт 9Dh (157) получаем прерывание с частотой 50,109Гц
- при значение порта 83h (131) получаем частоту 60,054Гц
Этого вполне хватит для играния AY музыки я думаю.
Mick, имхо очень полезная фича, которой спеку не хватаеть
Mick, тогда, наверно, надо сделать конфигурацию через порт, от чего проц будет прерываться - от таймера или кадра. Ведь синхронизация по кадру тоже может быть нужна?
Mick, тогда, наверно, надо сделать конфигурацию через порт, от чего проц будет прерываться - от таймера или кадра. Ведь синхронизация по кадру тоже может быть нужна?
Можно и так. Синхронизация по 70Гц кадрам нужна будет, если бадяжить графрежим какой нибудь.
Пока пусть будет порт 0С4h - конфигурация видео.
Бит 0 отвечает за источник прерывания: 0 - от кадровой развертки, 1 - от делителя
Порт 0С5h - коэфициент делителя по которому будет происходить прерывание.
Mick, может, тогда и от внешней линии прерывания сконфигурировать(из карточки из слота), чтобы не перемычками переключать. Это реализуемо или уже предусмотрены перемычки?
А почему бы не оставить кадровый и таймерный инт? просто с различными векторами их сделать и все. Так было реализовано на DMA USC - там кроме основного прерывания приходило еще 6 прерываний - 4 по завершению проигрывания сэмпла и 2 таймерных, у них различные вектора были.
Error404
29.07.2013, 15:48
Можно и так. Синхронизация по 70Гц кадрам нужна будет, если бадяжить графрежим какой нибудь.
Пока пусть будет порт 0С4h - конфигурация видео.
Бит 0 отвечает за источник прерывания: 0 - от кадровой развертки, 1 - от делителя
Порт 0С5h - коэфициент делителя по которому будет происходить прерывание.
А бит отключения прерывания уже есть?
Mick, может, тогда и от внешней линии прерывания сконфигурировать(из карточки из слота), чтобы не перемычками переключать. Это реализуемо или уже предусмотрены перемычки?
На схеме есть элемент ЛИ1, который как бы и от слота прерывания принимает.
Но как Error404 выразился, для лучшего восприятия ситуации поставить бит блокирующий внутренние прерывания.
---------- Post added at 16:00 ---------- Previous post was at 15:59 ----------
А почему бы не оставить кадровый и таймерный инт? просто с различными векторами их сделать и все. Так было реализовано на DMA USC - там кроме основного прерывания приходило еще 6 прерываний - 4 по завершению проигрывания сэмпла и 2 таймерных, у них различные вектора были.
Ты требуешь от меня невозможного :)
Я еще только учусь и контроллер прерываний это для меня пока сложно.
Да и по сути он на первых порах и не нужен.
Еще один вопрос возник.
Порты управления страницами памяти лучше сделать с возможностью для чтения, чтобы типа образов их не хранить в ячейках ОЗУ.
Если сравнивать со Спеком, то типа 7FFD только для записи, а ПЗУ Спектрума хранит его образ в паямти ОЗУ.
С возможностью чтения, я думаю удобнее?
Error404
30.07.2013, 15:26
- Порт управления страницами ПЗУ (64 страницы по 8кб) - 0С0h
- Порт управления страницами ОЗУ (64 страницы по 16кб) - 0C1h
Пара вопросов.
Есть возможность выключать ПЗУ из адресного пространства процессора? Т.е. все 64к адресного пространства - ОЗУ?
Я правильно понимаю, что пока планируется только одно окно для диспетчера памяти? Типа как в Спеке-128. Почему бы не сделать 4 окна, чтобы можно было коммутировать память не только 16к-шными, но и в максимуме 64к-шными блоками. Это может понадобиться для реализации многозадачности для больших программ, работающих только в 64к (например, CP/M-овских).
Пара вопросов.
Есть возможность выключать ПЗУ из адресного пространства процессора? Т.е. все 64к адресного пространства - ОЗУ?
Я правильно понимаю, что пока планируется только одно окно для диспетчера памяти? Типа как в Спеке-128. Почему бы не сделать 4 окна, чтобы можно было коммутировать память не только 16к-шными, но и в максимуме 64к-шными блоками. Это может понадобиться для реализации многозадачности для больших программ, работающих только в 64к (например, CP/M-овских).
Отключать ПЗУ можно совсем. Кроме того отключать можно и ОЗУ в области 0000...3FFFh
На счет окон ОЗУ. Пока сделано как для Спека, потом если что можно и как в Орионе. Я правильно понял куда ты клонишь :)
Общение с COM-портом:
http://www.codenet.ru/progr/dos/int_0013.php
я бы добавил еще ввод-вывод строки
Общение с COM-портом:
http://www.codenet.ru/progr/dos/int_0013.php
я бы добавил еще ввод-вывод строки
Это как строку вводить/выводить? Пример приведи.
Просто обертка к выводу символа.
Вывод: строка asciiz, вывести через порт в терминал. Ну, типа, для отладки.
В контроллерах такое есть, где printf реализован. Программно.
В плане ввода: ввод строки, заканчивающейся концом строки (0dh,0ah).
Где может быть нужно - некая система, посылающая и принимающая команды.
Если это не надо, то, значит, это не надо, прошу считать плодом фантазии :)
Просто обертка к выводу символа.
Вывод: строка asciiz, вывести через порт в терминал. Ну, типа, для отладки.
В контроллерах такое есть, где printf реализован. Программно.
В плане ввода: ввод строки, заканчивающейся концом строки (0dh,0ah).
Где может быть нужно - некая система, посылающая и принимающая команды.
Если это не надо, то, значит, это не надо, прошу считать плодом фантазии :)
Да не вопрос, можно и такую фишку сделать.
Я например для начала, пока SD читалку не сделаем, планирую типа мониторчика РК подобного, чтобы можно через COM порт программки загружать. Типа есть такая директива I, только не из магнитофона, а из COM порта.
Mick, тогда предлагаю не строки, а блоки добавить - загрузка блока в ОЗУ, запись блока из ОЗУ в порт.
Кстати, есть такой отладчик http://www.noicedebugger.com/targets.html - z80+порт или z180, управление с ПК - если интересно.
Error404
01.08.2013, 11:34
Да не вопрос, можно и такую фишку сделать.
Я например для начала, пока SD читалку не сделаем, планирую типа мониторчика РК подобного, чтобы можно через COM порт программки загружать. Типа есть такая директива I, только не из магнитофона, а из COM порта.
"Все уже украдено до нас" :)
Во вложении монитор от Ориона, где есть директива загрузки файла по xModem - п/п rx_file (это удобней чем просто блоки - на передающей можно использовать любые штатные терминалки: хошь от РС, хошь опять же z80-шные), можно оттуда дернуть, чтобы не задерживать разработку.
"Все уже украдено до нас" :)
Во вложении монитор от Ориона, где есть директива загрузки файла по xModem - п/п rx_file (это удобней чем просто блоки - на передающей можно использовать любые штатные терминалки: хошь от РС, хошь опять же z80-шные), можно оттуда дернуть, чтобы не задерживать разработку.
Вот что значит посильная помощь. Конечно дерним :)
---------- Post added at 11:41 ---------- Previous post was at 11:37 ----------
Кстати, есть такой отладчик http://www.noicedebugger.com/targets.html - z80+порт или z180, управление с ПК - если интересно.
Какой то убогий этот отладчик. В режиме виртульной работы не трассирует и более того вылетает. Фигня какая то. Это проще лямулятор b2m использовать. :)
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot