Извиняюсь, почему-то сложилось впечатление, что ромы были включены. Сейчас немало эмуляторов идут с встроенными ромами. Прикреплю файлик - распаковать в папку roms. Автазапуска у Amstrad CPC нет - загрузку с диска надо делать через команду, которую приводил ранее. Более того такой путь потребует работы с образами дисков... Честно, озадачили вы меня фразой, что через дебаггер неудобно. Наберите приведенную команду в блокноте и копипастите её в дебаггер одним кликом - что ещё может быть удобнее, совершенно не могу представить.
Последний раз редактировалось litwr; 12.12.2021 в 12:30.
Спасибо за roms, порой найти их непросто.
По сборке проекта, на спектруме, для примера, популярен кросс-ассемблер sjasm. Он позволяет сохранить откомпилированный образ в формате снапошота, который эмулятор может запускать автоматически. Т.к. программа может быть довольно объёмной и загружать бинарники вручную после каждой компиляции крайне не удобно. Может ли pasmo создавать такие спапшот образы?
- - - Добавлено - - -
Чего-то ещё нехватает, не запускается эмулятор к сожалению. Видимо придётся искать более dev ориентированный эмулятор![]()
Извиняюсь, прямо беда какая-то с этими ромами. Архив получился битый - как такое могло случиться?!Там всего два файла cpc6128.rom и cpc_amsdos.rom - с ними всё должно работать. Только там эмуль не только Амстрада, а ещё и Спека и Энтерпрайза. По умолчанию запускается Энтерпрайз, для Амстрада надо указывать опцию -cpc. Эмулятор возможно не лучший для начинающих Амстрадовцев.
Сам то я с Амстрадами знаком с 1988... Но меня этот эмуль устраивает, пробовал ещё MAME/MESS - вроде работает, но там много всякого лишнего и эмуляция иногда для некоторых платформ с проблемами. Люди хвалят Арнольда, но с ним не работал.
Конечно, получить снэпшот сразу это наверное оптимально, но пасмо так не умеет. Это не чисто Амстрадовский ассемблер. С другой стороны, то что вам предложил - это практически одно и то же. Со снэпшотом: 1) щелкаем на load snapshot; 2) выбираем его и активируем. Мой вариант: 1) щелкаем на дебаггер; 2) копипастим текст. Выбирать мышкой снапшот дольше, чем копипастить.Конечно, снапшот можно указать и в командной строке - тут мы можем сэкономить 1-2 секунды, но если захотим перезапустить, то через дебаггер быстрее.
Oчень сомневаюсь, что после reddie кто-то что-то сможит что-то улучшить...
cpc6128.zip
Кстати, выложил все исходники на гитхабе - там в главном цикле ничего нового нет, только добавил сбросы переносов.
Ещё добавлю, что в состав эмулятора ep128emu входит и отличный конвертор картинок - весьма вкусная плюшка.![]()
Последний раз редактировалось litwr; 12.12.2021 в 14:10.
litwr(14.12.2021)
Выложил Мандельброта на амстрадовский форум. Они там даже видео сделали с реальной машинки или точнее даже с двух одновременно - https://www.youtube.com/watch?v=zCm-6tUHJzMА тут всем спасибо за поддержку, почти догнали существенно более дорогой компик, BBC Micro.
Так что дальнейшая оптимизация потребует нового релиза... Но чисто спортивно интересно, что можно тут максимально выжать из Z80. Оптимизация кода Z80, по моему опыту, может длиться почти бесконечно.![]()
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Удалось сделать код возможно совершенным. Кстати, понял как можно использовать болеe быстрый доступ к массиву через SET - пришлось переконфигурировать Амстрад для этого, превращать его в почти Спектрум.
Предполагаю, улучшить тут что-то уже скорее невозможно. Даже по размерам (54 байта) код стал близок к кодам для x86 и 68k (46 байт). Этот код обгоняет даже код для Спектрума автора исходной программы, где используется SP - https://github.com/smaslovski/foobarКод:loc1: push hl res 0,l set 7,h ld c,(hl) inc l ld b,(hl) ;mov sqr(r1), r3 pop hl add hl,de ;add r0, r1 ex de,hl ;de - r1, hl - r0, bc - r3 res 0,l set 7,h ld a,(hl) inc l ld h,(hl) ld l,a ;mov sqr(r0), r0 add hl,bc ;add r3, r0 ld a,h and $f8 jr nz,loc2 push hl sbc hl,bc ;x^2 ;set C=0 sbc hl,bc ;x^2-y^2 r4 equ $+1 ld bc,0 add hl,bc ;x^2-y^2+x0 ex de,hl ;de - r0, hl - r1 set 7,h res 0,l ld a,(hl) inc l ld h,(hl) ld l,a ;(x+y)^2 r5 equ $+1 ld bc,0 add hl,bc ;sets C=0 pop bc ;r0 sbc hl,bc ;2xy+y0 dec ixh jr nz,loc1 ;sob r2,1$
Но БК0010 всё ещё быстрее, но только на 1.5%. Зато BBC Micro теперпь отстаёт от Амстрада почти на 10%.
Таким образом, с помощью знатоков Z80 удалось разогнать код для Амстрада более, чем на 20%. Всем спасибо.
reddie(21.12.2021)
Да, про это и говорил: подгоняем таблицу данных до определённых адресов, взамен получая "ограничитель" всего из одной команды SET. Что куда быстрее и компактнее проверок через аккумулятор с перезагрузками.Сообщение от litwr
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)