Просмотр полной версии : APU для Spectrum -арифметический сопроцессор
набрел здесь на заметку, о подключении 8231 к спектруму, пишут из старого немецкого журнала
схемка
https://www.applefritter.com/files/2019/01/26/Snapshot%20ZX48%20APU%20card.JPG
I'm probably able to give you some hints because of... a couple of weeks ago I started to build a Sinclair ZX / ZX81 APU Prototyp card based on an article of an old German computer magazin.
So even that the ROM seems to be missing on your card you are probably able to use the card with some Basic coding as we started here in Germany to do some simple tests.
APU Intel 8231A or AMD AM9511A are pin compatible
So beside some coding we started with using the original Spectrum ZX ROM without any changes:
Used I/O Addresses to communicate with the APU are as follows, while the APU is using two registers for the calculation(s): a Data- and a Command Register
D=Data-Adresse = 31d -> 1Fh (or 125d -> 7Dh)
C=Command-Adresse = 95d -> 5Fh (or 127d -> 7Fh)
in our case we toggle address bit A6 to switch between Data and Command register (see my attached schematic snapshoot), so the Apple I/O Addresses needs to be used here, instead.
APU Testprogramm using the Standard Speccy 48K ROM
Arithmetic APU Operation -> 16 Bit Addition: Command 108d -> 6Ch
PROGRAM: APU-Test
100 REM TESTPGM 8231A or AM9511A APU
110 LET C=95: LET D=31 REM 95d = Command Register; 31d = Data Register
120 OUT D,10: OUT D,0 REM load value 10 to the APU
130 OUT D,20: OUT D,0 REM load value 20 to the APU
140 OUT C,108 REM use APU command 108d -> 6Ch to do a 16nd Bit Addition
150 LET A=IN D: LET B=IN D REM get calculation result(s)
160 PRINT A REM A should held 0
160 PRINT B REM B should held 30 -> which is the result of 10 + 20 (see above)
хехЪ
здесь ориджинал
https://www.applefritter.com/comment/86258#comment-86258
sergio78
09.02.2019, 15:44
зачем оно надо? кто то будет новую Элиту с заливкой делать?
sergio78, а вдруг?
или сумасшедший старый физик, на спектруме с арифметическим сопроцессором, посчитает пузырь Алькубьерре
shurik-ua
09.02.2019, 15:50
смотрел я както даташит на чип АМД - 4 тыс тактов на один синус - малавата будет )
http://www.hartetechnologies.com/manuals/AMD/AMD%209511%20FPU.pdf
стр. 6
sergio78
09.02.2019, 16:14
а вдруг?
по этому- а вдруг, падает только рубль на бирже. а новая спековкая Элита с заливкой, это из раздела, Сказки и Фантастические истории.
- - - Добавлено - - -
малавата будет )
для чего, маловато? Если для игр, аля Квейк, таки да.
Smalovsky
13.03.2022, 10:06
Учитывая успехи орионщиков, тема становится актуальной.
Не знаю как там на ваши рубли, но на наши их цена сегодня четыре огромных сумки жрачки. Так что актуальной становится эмуляция этого чипа на другом железе. Да и Paypal отрубили, нечем более на eBay баблить.
Так что актуальной становится эмуляция этого чипа на другом железе.
Можно на STM32 сделать. И тогда уже не эмулятор этой микросхемы, а полноценный вычислитель. Правда цены сейчас -- порядка 1000р за голый контроллер. У кого 500..600 -- нет в наличии. То есть висит старая цена без обновлений.
Короме того, возникает вопрос, а зачем в качестве ускорителя использовать машинку, которая как минимум в100 раз быстрее спектрума ;)
а зачем в качестве ускорителя использовать машинку, которая как минимум в100 раз быстрее спектрума
для ускорения, ваш КО
Да и Paypal отрубили, нечем более на eBay баблить.
Я последний примерно год или полтора покупки на eBay оплачивал без PayPal - напрямую, с карты сбера. Но сейчас проблема в другом - в доставке. Так что вариантов нет не из-за PayPal. Перекрестился (хоть и не верующий), что две последние покупки всё таки доставили - терять больше семисот баксов как то было не очень весело
Можно на STM32 сделать
А на ESP32 можно? Его с Алика можно привезти и дешевле 500руб.
Короме того, возникает вопрос, а зачем в качестве ускорителя использовать машинку, которая как минимум в100 раз быстрее спектрума
Да хоть в миллион раз, если бы стоила дешево. Это ассимитричная архитектура процедурного процессора. Программы пишутся для z80, а процедуры и функции или на нем же медленно, или для ускорения "тяжелых вычислений" аппаратно на сопроцессоре. Тогда то, что на z80 выполняется десятки секунд, на сопроцессоре милисекунды. Не имеет смысл вычислять за доли мкс, если перемещение входных/выходных данных занимает сотни мксек. Пользователь ускорения не ощутит.
Smalovsky
14.03.2022, 12:36
Идея сделать сопроцессор на мк stm или esp очень хорошая. У этих мк уже есть операции с вещественной арифметикой, поэтому производительность будет максимальной. Только интерфейс нужен как у 8231/9511.
При быстром арифметическом процессоре хоббисты начнут придумывать новые или ускорять старые 3d игры.
А на ESP32 можно? Его с Алика можно привезти и дешевле 500руб.
Технически возможно. Прицепить как двунаправленный восьмибитный порт, например, и через него обмениваться даннными и засылать команды. Обвязки .. ну не более десятка корпусов, это точно. Думаю, реально уложиться в 5..6 мелочи. Не, в теории можно и на самом ESP эмулировать шину, но это изрядно пожрёт его производительность.
Да хоть в миллион раз, если бы стоила дешево. Это ассимитричная архитектура процедурного процессора.
Как GPGPU в современных машинах? Ну да, можно и так. Собственно, в таком случае даже разумно копировать их модель вычислений: загрузили инструкции, загрузили данные, выгрузили результат.
Smalovsky
14.03.2022, 14:43
Не надо усложнять. Железный интерфейс как у 8231/9511, скорость вычислений stm/esp. Очень быстрый нужен сопроцессор.
Я как раз упрощаю. 9511 именно что и работает в описанной мной модели. А GPGPUшная ещё проще и удобнее -- меньше мороки с синхронизацией и перекидкой данных.
Интереснее было бы решение с перехватом исполнения участков ПЗУ, отвечающих за калькуляции по RST #28.
Давайте хоть с чего-то начнем. ESP32 без проблем возится и будет возится, если Китай нас не сольет, с Алика. Хотя stm32 привычней конечно для многих.
- - - Добавлено - - -
Интереснее было бы решение с перехватом исполнения участков ПЗУ, отвечающих за калькуляции по RST #28.
это выродится в аппаратный эмулятор z80 имхо. Или уже будет разделение памяти между двумя процами, что тоже усложнит задачу.
- - - Добавлено - - -
При быстром арифметическом процессоре хоббисты начнут придумывать новые или ускорять старые 3d игры
и не только игры. Модельки можно делать. Это сейчас модно.
Эмулировать z80 ни к чему. Достаточно иметь доступ к тому же ОЗУ (чтобы и перехватывать, и читать байткод, и работать со стеком калькулятора), и wait. И такое решение ускорит все бейсиковские программы помимо прочего.
А как разделять при этом память и ввод/вывод? В системе будут два параллельных процессора и при этом z80 об этом ничего знать не будет( не должен), чтобы правильно выполнялся на нем весь старый софт. Когда операции выполняет "процедурник" (PROCOP ) он должен принудительно выполнять возврат из подпрограмм и выводить z80 из HALT(WAIT), а перед этим вводить его или в это состояние или как-то еще "замораживать" z80 на всё время своей работы. Ибо какой смысл давать z80 что-то делать в это время? Как быть с флагами, которые должны установиться в z80 во время ( точнее в результате) исполнения кода процедур? А если в них содержится код обращения к портам и внутренним регистрам? Можно это все проделать подменой кода исполнения z80, потеряв на это некоторое время и похоже все эти проблемы удобнее отладить, эмулируя z80 на процедурнике, а для "рабочего" режима уже все это убрав.
Интереснее было бы решение с перехватом исполнения участков ПЗУ, отвечающих за калькуляции по RST #28.
А не проще пропатчить само ПЗУ?
Патчить пзу конечно проще, но это будет вероятная потеря совместимости. Как минимум адреса входов в подпрограммы необходимо сохранять. В любом случае такой подход сделает возможной работу программ вне зависимости от наличия "ускорителя", хоть и медленно. И ускорит не только специально написанный под это софт.
И ускорит не только специально написанный под это софт.
Каким образом?
Каким образом?
Прозрачным. Ускорится весь софт на бейсике (что касается вычислений), и весь софт который использует rst #38 (наверняка такой имеется).
Smalovsky
15.03.2022, 21:30
К делу надо подходить системно. Лучше всего организовать конкурс для железячников на лучшую реализацию сопроцессора на железе.
Для конкурса нужно продумать следующие моменты и правила:
1. Сроки конкурса и призовой фонд
2. Способ обмена данными с сопроцессором( отображение на ячейки памяти, через порты)
3. Методы оценки производительности. Например, можно сравнивать время вычисления какой-нибудь задачи с сопроцессором и без. Такую задачу в коде необходимо подготовить к конкурсу. Это может быть расчет кадра из игры Элиты или абстрактные вычисления.
4. Сопряжение с компьютером( краевой разъем фирменного спектрума, zx-bus)
Можно и так. Можно и эмулятор с открытым кодом( на нем проще экспериментировать). И временные затраты меньше и проще участников привлечь.
Эмулировать z80 ни к чему. Достаточно иметь доступ к тому же ОЗУ (чтобы и перехватывать, и читать байткод, и работать со стеком калькулятора), и wait. И такое решение ускорит все бейсиковские программы помимо прочего.
В Хоббите таким образом обходятся ошибки родного ПЗУ (со слов автора).
И это 100% сделано в Хоббите (большом). при этом ни один байт оригинальной прошивки не пострадал
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot