SfS wrote:У меня в примере вызов кода по указателю. Что не так?
Сорян, по началу кода подумал, что это что-то на сях и не стал скроллить и дальше смотреть. Но вот посмотрел:
1. во-1, тебе нужно было прибавить оффсет к адресу в de и оттуда ИЗВЛЕЧЬ адрес вызова. Ты получил только адрес адреса вызова, так понимаю, что не в этом цель была.
2. во-2 просто за push hl:pop de уже можно убивать (ну потому что ex de,hl или ld d,h:ld e,l)
3. в-3 даже в этом неправильном коде вместо эквилибристики со стеком можно было бы написать ex (sp),hl
В общем исправляй код, а в исправленном не забудь посчитать такты.
После чего остаётся вопрос - а РАДИ ЧЕГО тратить байты и такты? Ну да, загрузка драйверов в рантайме это какбэ красивая концепция, да, так умеют всякие линуксы (которые работают на процессоре, который примерно в сто тыщ раз быстрее Z80), но и что?
Щяс ядра NedoOS для любой конфигурации железа собираются за долю секунды каждый на пц, это точно надо менять? Уберём драйверы из этого кода, сэкономим 10 мс времени сборки, проебём миллионы медленных тактов Z80.