ЕМНИП, в мониторе числа шестнадцатиричные. 8 бит = 256 байт. 100h = 256.
Вид для печати
ЕМНИП, в мониторе числа шестнадцатиричные. 8 бит = 256 байт. 100h = 256.
Во-первых, загрузчик маленький, вполне помещается в 128 байт.
А во-вторых, в контроллере и так мало ОЗУ, зачем лишнее использовать.
Директива U (как и любая другая не обработанная монитором) передаёт управление по адресу F000. Твоё предложение требует эмуляции ПЗУ по адресу F000, а тут идёт обмен данными через ВВ55. Под режимом эмуляции ПЗУ имеется ввиду эмуляция ROM-диска РК86.
Приехали платки проекта https://github.com/andykarpov/radio-86rk-sdcard, изготовленные dfrobot.com, есть 8 штук в наличии.
Тема в барахолке: http://zx-pk.ru/market/viewtopic.php?f=7&t=2567
Собрал свою платку.
https://farm8.staticflickr.com/7503/...4a058c6886.jpg
Пока не получается заставить ее работать :(
Собирал, правда, на Atmega328p. Проект в CodeVisionAVR пересобрал под этот камень, но есть подозрение, что где-то в коде есть привязки к Atmega8. Пока не могу понять. Вот если бы автор ткнул носом :)
Fuse bits выставил такие: -U lfuse:w:0xc2:m -U hfuse:w:0xd9:m -U efuse:w:0xff:m
Если карточку не вставить - то моргает светодиод, как по логике задумано.
Если карточку вставить с нужными ей файлами - то светодиод один раз зажигается и тухнет. После этого, если в мониторе набрать R0,100 - ничего не происходит. Память девственно чистая. Есть подозрение на код эмуляции ПЗУ.
Там меня смущает один момент... Не понимаю, что это значит:
.EQU PIND = $10
.EQU DDRD = $11
.EQU PORTD = $12
.EQU PINC = $13
.EQU DDRC = $14
.EQU PORTC = $15
.EQU PINB = $16
.EQU DDRB = $17
.EQU PORTB = $18
Что тут непонятного? Эти же определения прописаны в инклюдах к конкретному камню. Номера портов.
---------- Post added at 16:01 ---------- Previous post was at 15:59 ----------
А если открыть инклуд к мега328р, то наблюдаем:
sfrb PINB=3;
sfrb DDRB=4;
sfrb PORTB=5;
sfrb PINC=6;
sfrb DDRC=7;
sfrb PORTC=8;
sfrb PIND=9;
sfrb DDRD=0xa;
sfrb PORTD=0xb;
Намек ясен, куда копать? ;)
---------- Post added at 16:02 ---------- Previous post was at 16:01 ----------
В награду требую бронирования платки! :)
пообщался с многоуважаемым Vinxru. Поведал мне автор о секретах, например об обязательном контроле адреса массива rom (по файлу .map) с тем, что прописано в asm-секции. У меня почему-то смещение 0x300, посему .EQU ROM должно быть 3 вместо 1. Либо надо было крутить размер стека таким образом, чтобы переменная rom начала находиться по адресу 0x100.
После этих манипуляций эмуляция ПЗУ завелась! Ура :)
Но данные не совсем соотетствуют тому, что находится в файле boot.rk.
В файле: 0E 00 CD 69 00 C3 17 00
Я получаю: 0E 00 8D 79 00 83 07 00
Уже курил на тему подтяжки MISO, длины шлейфа, допаял на карточку дополнительный конденсатор, понизил скорость SPI - ничего не помогает.
При этом если запускать несколько раз R0,100, потом смотреть D0,100 - данные с одними и теми же ошибками. Посему можно сделать вывод, что при чтении с карточки они попадают во внутренний буфер уже поломанными.