Category: финансы

Category was added automatically. Read all entries about "финансы".

Сохранение контекста - z80 vs i8080

А я со своей идеей буквально по краешку прошёл. Могло и не получиться без серьёзных оговорок. Так-то оно ещё может не получиться, а могло бы оказаться фундаментально невозможным.

Вводная - вот у нас есть переключение банков и код прерывания начинает работу в таких обстоятельствах:

1. SP показывает неизвестно куда (стек остался в прошлом банке, а у нас на этом месте что угодно, возможно даже место, где вот этот обработчик прерывания лежит)
2. оригинальное значение SP нужно восстановить при выходе (дальше банк переключится, оттуда считается адрес возврата и всё будет как надо)
3. нужно как-то сохранить все изменяемые регистры, как минимум AF

Для Z80 достаточно сделать вот так:
Collapse )

Но всё же - 8085 откладываю подальше, а Z80 мегагерц так на 20 или кавасакиевский KC80 на 33 (который по тактам быстрее) буду мучать.

Воевал с паяльником

Паять он не хотел никак (тонким жалом) - припой примерзал, по консистенции походя на мокрый песок. Да, разъём под Z84 был великоват и именно его, 84-й я и паял на макетку. Задолбавшись, обдрочил металлокерамическое по идее жало напильником (хуже уже не будет) и кое-как залудил. Паять стало лучше, но с жалом плохо решительно всё (а остальные - толстые). Надеюсь, от предыдущих попыток, после которых процессор приходилось сдувать феном, оный не помер.

Начал я игрушечный компьютер паять с шины. Взял две макетки и впаял два разъёма от края до края. Целых 128 паек. На одной макетке - зелёной - задумал Z84 с тактовым генератором и мелочью, на другой - чёрной - буферы и порты переключения банков. Будут. Теперь думаю и морально готовлюсь к МГТФ. Альтернатива - медяшка от витухи в тонком кембрике - как минимум регулярные структуры (банки ОЗУ, однородные порты и прочие параллельно соединяемые микросхемы) буду делать ей.

Пользуюсь тем, что документации __сейчас__ вагон и задумываю сразу делать на адреса правильные буферы - отключающиеся при ПДП aka DMA; часть переферии (те же порты) будут до буферов - чтоб нагрузочная способность процессора не пропадала зря :-) Читая документацию, ищу, как отловить срабатывание немаскируемого прерывания; как отловить маскируемое, написано явно.

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

Железный отладочный интерфейс [TODO зафотать] оказался к чему-то с 24 битами адреса и 16 - данных. Не катит :-( - буду делать отладчик из Атмеги с интерфейсом по типу монитора Радио-86РК на UART. Боюсь, что и DMA придётся делать из неё же, как миниумум на первое время.

----
Ко всему полезному у меня пока отвращение - так что и мышечные датчики и музыкальные устройства идут лесом.

P.S. Сегодня на ужин "Бакунинская" IPA, а потом - кого я обманываю - и DIPA; Rockets & Bishops и Fibonacci соответственно. Параллельно повторно проглатываю "Наблу-квадрат".

Бегаю по магазинам

Поскольку мои подвиги в основном строительные, все остальные занятия сводятся в основном к покупкам и разведке.

Для колонок ничего не купил - там или всё есть (железяки и провод для катушки-автотрансформатора) или непонятно где или адски дорого (пищалку с отдачей около 110дБ). Измерительный прибор обламывается - как я писал, щуп у него толстый, в мои динамики не влезет, пилить же готовый прибор я не готов, куплю датчиков Холла и буду с них лишнее сошлифовывать - они дешёвые, их не жалко, а выжившему - награда - войти в состав прибора.

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

По восьмибитной игрушке на Z80 - нарыл в запасах плату старого модема с восьмимегагаерцовым Z84 и Z85, корпус QFP со слоновьими ногами 1.2мм или сколько они там; есть и пара просто Z80, привезённый дядей из Европы чёрт-те когда; надо глянуть, может они Z80H. Купил дешифраторов и регистров.

Пока вырисовывается платка - на входе адрес 16 бит, на выходе - 21, если остановлюсь на 8 банках памяти или 22, если сделаю только 4. 8 Банков выглядят вкуснее схемотехнически и приятнее для мелких программ, но 22 бита это 22 бита. На ту же плату встанут дешифраторы адресов портов (переключения банков в том числе), системные порты и анализатор выполняемых команд - хочется поиграть с подменой страницы (чуть с задержкой) при выполнении RST XXX и таким образом вынести обработчики прерывания НАХРЕН из адресного пространства выполняемой программы. От такого эксперимента до полноценной защиты память - один шаг, но для полной красоты требуется ещё и обломать выполнение некоторых команд, например переключение режима прерываний.

Игрушечки ретрокомпьютерные

Чего мне хотелось, играя и работая с восьмибитными компами в архитектурном плане? Сразу скажу, плотно взаимодействовал только с разными видами 8080 и Z80. Думаю, у других восьмибитных могуть быть те же проблемы и благом будет их отсутствие. Вот чего хотелось:

  • Больше свободной память - чтоб не было неотключаемых ПЗУ, пустых областей и т.д.

  • Аккуратности распределения память - если дать устройствам по 2к каждому, то память будет по факту не занята, но в дырах. Сюда же - можно занять первый килобайт и CP/M всё.

  • Аккуратности распределения портов - чтоб порт сидел на одном номере, а не, например, на всех чётных (а на нечётных - другой, попробуй, расширяй).

  • Наличия внешних интерфейсов - чтоб можно было подключить светодиод или реле, не паяя ничего, кроме переходников.

  • Наличия возможности расширения вообще, точнее - отсутствие гробящих его способов нерационального использования ресурсов, если использовать прерывание неправильно (РК-86, EI/DI), то правильно уже и не получится.

* Что-то не очень последовательно у меня вышло - всё в списке связано со всем - так оно и было - так сказать, clusterfuck - всё всему мешает и не исправить по-нормальному без перекраивания дорожек и потери совместимости.

Вот чем эти хотелки были вдохновлены:

  • Радио-86РК - 32к и сразу за ней огромные области, отданные устройствам, которым столько не надо (насколько помню, им бы вообще портов хватило), но память занята. Прерывания (бит включения/выключения) используются для вывода звука. При всего 2к ПЗУ расширить память без потери совместимости нельзя.

  • Орион 128 - получше, но тоже хрен, а не прерывания (там пищалка); ПДП не было совсем (в Радио-86РК, с шансами можно было что-то кроме видео повесить на ПДП).

  • ZX-Spectrum - 16к ПЗУ в начале, если говорить о любительских устройствах, то дешифрация портов была сделана отвратительно, итого приходилось резать дорожки, чтоб подключить что-то ещё. CP/M никак - и память не так и экран не там.

  • ZX-Spectrum 128 - совсем весело, добавили 8 банков, причём биты переключения расположены так, что тем же образом уже ничего не добавить. В начале памяти снова только ОЗУ, хотя и переключаемое, но снова ещё один банк тем же образом не добавить.

  • Если ещё вспомнить IBM PC, который сложно назвать восьмибитным, то там сходная куча проблем с памятью, её (адресного пространства прежде всего) было сначала много, потом вдруг стало мало и началось веселье с утаптыванием, хаками и банками EMS/XMS в итоге (но софт не всегда умел с этими банками работать).

----
А хочется (в контексте прежде всего игрушечного и/или учебного аппарата - с которым приятно играть и учиться:

  • Память может быть свободной вся (но не сразу, конечно), освободить можно хоть начало, хоть конец, что удобнее всего сделать, разбив всё адресное пространство на переключаемые банки (и 64к ОЗУ мало же), число банков не слишком ограничено (легко поддаться соблазну использовать свободные биты порта переключения на что-то другое). Вроде как потомки Спектрума "едят" до двух мегабайт - может и не имеет смысла адресовать больше, но меньше уж точно не стоит, даже если и нет столько память.

  • Порты дешифруются полностью (вопрос про Z80 и 65536 портов отдельный), при обращении к неправильным адресам никаких операций с правильными не происходит. Могут быть выведены готовые сигналы выбора диапазонов портов для облегчения расширения (неиспользуемые выводы дешифратора).

  • Прерывания, сигналы управления и прочее - применяются по назначению или остаются незанятыми для расширения.

  • Шины буферизованы.

Это такая концептуальная красота и гибкость; что характерно - я не говорю, какое IO и какая память идут на какие устройства, лишь бы вся эта память была в банках, в большом адресном пространстве за переключателем банок банков, а не в маленьком - адресуемом процессором. И ПДП, если такой будет, хорошо бы, чтоб умел по большой памяти ходить. Иначе поперёк памяти на самом вот прямо сейчас нужном месте будет сидеть не ПЗУ, а, например, экранный или звуковой буфер.

Починка

Опять накопилась кучка наушников (причём кое-где даже не провода, а просто механика и смена расходников), а тут ещё и плеер упал. Теперь он не работает от своей батареи, только powerbank. Обнаружил, что при пошевеливании шнура USB в разъёме банка появляются призвуки, которые, как я знаю, говорят о повышенном внутреннем сопротивлении. Платка в порядке, скорее всего провод (вот лежит новый - UPD - да, это был именно провод/его_разъём) или гнездо (тут проще новый банк купить - он из радиомагазина, аккумуляторы в комплект не входят - потому дешёвый).

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

Ну а по уму - сесть, разобрать и починить всё

Ещё один

img1 img2
Мотаю второй - красиво блестит, не видно, что там 2/3 - ПЭЛШО. Счётчик - на 3 разряда, четвёртый - десятые оборота - иногда выручает, но, наверное, четвёртый полноценный разряд был бы лучше, хотя тысячи и так не путаются.

Намотал. Параллельно грею парафин - в банке видно (не знаю, как на фото), как уменьшается его объём при остывании. Вот и у народа выросшая после пропитки ёмкость при остывании значительно падает наверное поэтому.
img3 img4
На фото если очень приглядется, видно 120 градусов. До 130, не выше. Было 343 грамма, стало после пропитки 359, итого 16 граммов парафина катушка приняла. Кофе тоже получился.

Провода от машинки - с правильным цветовым кодированием.
img5 img6
Из уважения к первоисточнику (в прошлой жизни это было трансформатором от бесперебойника) креплю выводы клеем. Вот первых два (между ними будет максимум 15 вольт, так что с изоляцией особо не заморачиваюсь, только подвину чтоб проводок пересекал не голую, а изолированную часть, а вот от третьего провода, до которого 300 вольт, уже наклею два слоя бумаги).

Колёса!

Для того, чтоб из СШАмерики вернуться не просто так, а с "добычей", прикупил я там же сумку на колёсиках, добротную, да ещё и цвета синей птицы со всех сторон. Влезло в неё... много влезло, перевес даже вышел, но это потом.

А сначала же выяснилось вот что - мемориальные части города - с обелисками и музеями - покрыты по части тротуаров не асфальтом и не плиткой, а чем-то пошершавее - вот как здания под шубой бывают - один в один. И вот это покрытие довольно быстро съело резину с колёсиков, а одно ещё умудрилось этой резиной заклиниться и пока я его дотянул (метров 5-10) до места где показалось прилично остановится, съелось и под резиной почти на сантиметр, так что "вот этот-то квадрат и стучит".

Аэропорт, ещё аэропорт, третий и даже дорога до подъезда - везде меня сопровождало - тук-тук-тук-тук..! И ещё банко авокадного масла там же разбилась, но это не так громко, хотя тоже заметно.

В разобраном виде сумка пролежала всё оставшееся лето и почти всю осень - не имея колёс на замену, я не знал, чинить её или выкидывать. Тут в Икее попались колёса на 60мм. (не самые стандартные, в том и трудность), сделаны, что интересно, в Италии. Некоторое время они искали встречи с сумкой, откочевавшей на дачу (ох уж эти родственники!), сегодня время подошло.

Минут за 15-20 извлёк старое колесо, отболгарил от основания новое и придумал как прикрепить (ну это просто); повторил. Теперь думаю, как разобрать сумку до конца и простирать ткань, пока масло не полимеризовалось - так она несколько пятниста.