Забыл сообщить. С часиками я уже разобрался. Виной всему была микросхема КР1834ВВ55А, которую я установил вместо КР580ВВ55. После установки на плату КР580ВВ55А часы работают отлично. Дата больше не сбивается.
Вид для печати
Ну и отлично! Насчет креша тестов. Я думаю вы зря грешите на формирователь импулься прерываний. Я не думаю, что плохая работа этого узла приведт к крэшу системы на тесте памяти. Скорее это может привести к каким либо визуальным дефектам, или повлияет на темп игры, демки, музыки. А если крэш тут нуадо смотреть на процессор, память, шины адресов, данных, дешифраторы устройст ввода вывода, формирователи RAS,CAS, маппер, и тому подобное
О прогрмме DBG. Она позволяет: исполнять программу, выпонять программу по шагам или до точки останова, добавлять снимать точки останова. Просматривать и изменять регистры и флаги процессора, а также просматривать и изменять состояние маппера. Писать новую или справлять имеющуюся программу встроемным интерактивным ассемблером. Загружать в память файл с диска, и записывать фрагменты памяти на диск. Просматривать и редактировать hex-dump памяти.
Выше кто то говорил (или спрашивал) про обьем памяти в режиме CPC. Оказывается не имея данных мы сделали расширение почти совместимое с dk'tronics модулем
На этой страничке написано про Aleste так:
Semi-Standard Expansions
Aleste 520EX - a CPC clone that allows to access 256K (of its total 512K memory) in Inicron-style fashion (ie. as on a 64K computer with 192K expansion which can be mapped to 4000h..7FFFh).
На другой страничке они интерпретируют D28 Aleste, ту часть которая в режиме CPC
Но стандарное расширение dk'tronics немного отличается. Вообще они (dk'tronics) называют первые (основные) 64 килобайта Block 1, а дополнительные Block 2Код:0000: 0 1 2 3 0 1 2 7 4 5 6 7 0 3 2 7 ;-1st+2nd 64K banks (as on cpc 6128)
0010: 0 4 2 3 0 5 2 3 0 6 2 3 0 7 2 3 ;-1st+2nd 64K banks (as on cpc 6128)
0020: 0 1 2 3 0 1 2 7 4 5 6 7 0 3 2 7 ;-1st+2nd 64K banks (mirror of 6128)
0030: 0 8 2 3 0 9 2 3 0 A 2 3 0 B 2 3 ;-1st+3rd 64K banks (as on dk'tronics)
0080: 0 1 2 3 0 1 2 7 4 5 6 7 0 3 2 7 ;-1st+2nd 64K banks (mirror of 6128)
0090: 0 C 2 3 0 D 2 3 0 E 2 3 0 F 2 3 ;-1st+4th 64K banks (as on dk'tronics)
00A0: 0 1 2 3 0 1 2 7 4 5 6 7 0 3 2 7 ;-1st+2nd 64K banks (mirror of 6128)
00B0: 0 C 2 3 0 D 2 3 0 E 2 3 0 F 2 3 ;-1st+4th 64K banks (mirror of above)
Если я правильно понимаю документацию... Приведу фрагмент:
То это означает, что биты D3-D5 дожны выбирать то какой из банков начиная с Bank 2 будет подключаться каждый раз когда у CPC128 подключается страница отличная от основной (Bank 1). То есть битами D3..5 выбирается Bank 2,3,4,5,...,9. Всего возможно (дополнительно к 64КБ) 512 расширения.Код:
The numbers 0, 1, 2, 3 refer to the four 16K sub blocks in a 64K block in the
obvious way. The star (*) indicates that the memory is from a 'new' block, i.e.
block 2 or higher, otherwise the 'original', block 1, is implied.
Thus, code 0 selects the original, unmapped 64K, code 2 selects a completely
new block of 64K, the other codes are a mixture.
Bits D5-D3, 64K Block Select Codes.
D5 D4 D3 BLOCK.
0 0 0 2 (ie, 'new' memory sub blocks came from block 2, as in CPC 6128.
0 0 1 3
0 1 0 4
0 1 1 5
Таким образом мы "не угадали" с расширением. Тесть мы его сделали, но немного иначе.
Чтоы это исправить, можно изменить прошивку так.
В итоге в режиме CPC должно получится 256Кб. Но это нужно тестировать.Код:
Далее к страницам 4,5,6,7 (это банк 2) используются как на Aleste
0000: 0 1 2 3 0 1 2 7 4 5 6 7 0 3 2 7 ; Bank 2
0010: 0 4 2 3 0 5 2 3 0 6 2 3 0 7 2 3 ;
Далее к страницам 4,5,6,7 (это банк 2) нужно добавить 4
0020: 0 1 2 3 0 1 2 B 8 9 A B 0 3 2 B ; Bank 3
0030: 0 8 2 3 0 9 2 3 0 A 2 3 0 B 2 3 ;
Далее к страницам 4,5,6,7 (это банк 2) нужно добавить 8
0080: 0 1 2 3 0 1 2 F 4 D E F 0 3 2 F ; Bank 4
0090: 0 C 2 3 0 D 2 3 0 E 2 3 0 F 2 3 ; Last possible page accessible by D28
Вернутся к самой первой конфигурации
00A0: 0 1 2 3 0 1 2 7 4 5 6 7 0 3 2 7 ; Bank 2
00B0: 0 4 2 3 0 5 2 3 0 6 2 3 0 7 2 3 ;
P.S. Такое странное число от того что D28 формирует только A14..A17 тогда как маппер имеет на одну адресную линию больше A14..A18.
Надеюсь Дмитрий2012 меня простит, что лезу поперек него. В режиме CPC он действительно обнаружил 192 Кб доп. памяти.
P.S. Еще один момент. В режиме CPC, тоесть когда MAPMOD=0 процессор имеет доступ только к странице 0 маппера.
Иначе говоря доступо по адресам #7CXX, #7DXX, #7EXX, #7FXX эквивалентен доступу к #7CXX
Таким оразом если предположить, что содержимое маппера не определено, то перед тем как его включить (установить MAPMOD=1)
Необходимо из адресного пространтва 0x0000-0x3FFF установить значение 0 в #7CXX..#7FXX.
Это гарантирует что в пространтве 0x0000-0x3FFF будет расположена страница 0 из банка 1 в режиме CPC и MSX.
Теперь по шагам
1 Передать управление коду в адресах 0000-3FFF
2 Запретить прерывания
3 Включить CPC конфигурацию памяти 0, при которой с 0000 по 3FFF будет страница 0 банка 1.А именно записать по адресу #7FXX значение С0.
4 Установить MAPMOD 1
5 При необходимости настройть все страницы маппера #7DXX, #7EXX, #7FXX
7 Гарантировать валидность таблицы прерываний
8 Разрешить прерывания
Я думаю тот тест Алесты который написал автор Arnold эмулятора, мог крешится именно из за этого. Потому что он собран с адреса 9000.
Перед включением MAPMOD он конечно утанавливал конфигурацию 0. Но при включении MAPMOD=1 страница памяти с 8000 устанавливается той которая установлена в маппере #7EXX. А у меня нет гарантии того, что после старта компьютера, БИОС настроил маппер так, что страница которая при MAPMOD=0, находилась по адресам c 8000, будет там же при MAPMOD=1. Но может быть и будет, а можт и нет. Правильнее гарантировать то что все окажется там где должно быть.
- - - Добавлено - - -
Он обнаружил, но она не совсем стандартная. Об этом я и информирую.
Без софтовой поддержки ivagor я бы ничего не выяснил и не проверил бы память. За что ему огромное спасибо.
А можно для тестов сделать модифицированную прошивку для D28 в виде.BIN файла ?
Не совсем понял, что необходимо в ней прописывать по адресам 00А0-00FFh
Сделаю. Дайте время.
Должно быть так.
Код:0000: 0 1 2 3 0 1 2 7 4 5 6 7 0 3 2 7 ; bank 1 & 2 (same as was before)
0010: 0 4 2 3 0 5 2 3 0 6 2 3 0 7 2 3 ; bank 1 & 2 (same as was before)
0020: 0 1 2 3 0 1 2 B 8 9 A B 0 3 2 B ; bank 1 & 3 (modified)
0030: 0 8 2 3 0 9 2 3 0 A 2 3 0 B 2 3 ; bank 1 & 3 (modified)
0040: 0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3 ; MSX (same as was before)
0050: 4 4 4 4 5 5 5 5 6 6 6 6 7 7 7 7 ; MSX (same as was before)
0060: 8 8 8 8 9 9 9 9 A A A A B B B B ; MSX (same as was before)
0070: C C C C D D D D E E E E F F F F ; MSX (same as was before)
0080: 0 1 2 3 0 1 2 F C D E F 0 3 2 F ; bank 1 & 4 (modified)
0090: 0 C 2 3 0 D 2 3 0 E 2 3 0 F 2 3 ; bank 1 & 4 (modified)
00A0: 0 1 2 3 0 1 2 7 4 5 6 7 0 3 2 7 ; bank 1 & 2 (modified) (same as at 0000)
00B0: 0 4 2 3 0 5 2 3 0 6 2 3 0 7 2 3 ; bank 1 & 2 (modified) (same as at 0010)
00C0: 0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3 ; MSX (same as was before)
00D0: 4 4 4 4 5 5 5 5 6 6 6 6 7 7 7 7 ; MSX (same as was before)
00E0: 8 8 8 8 9 9 9 9 A A A A B B B B ; MSX (same as was before)
00F0: C C C C D D D D E E E E F F F F ; MSX (same as was before)
Тут привожу таблицу всех конфигураций памяти в зависимости от значения 7FXX
Звездочкой * обозначены значаения которые должны быть модифицированы
Код:
BANKS 1 & 2
0000 ----- ----- ----- ----- ----- ----- ----- -----
! 0 ! ! 0 ! !*4 ! ! 0 ! ! 0 ! ! 0 ! ! 0 ! ! 0 !
4000 ----- ----- ----- ----- ----- ----- ----- -----
! 1 ! ! 1 ! !*5 ! ! 3 ! !*4 ! !*5 ! !*6 ! !*7 !
8000 ----- ----- ----- ----- ----- ----- ----- -----
! 2 ! ! 2 ! !*6 ! ! 2 ! ! 2 ! ! 2 ! ! 2 ! ! 2 !
С000 ----- ----- ----- ----- ----- ----- ----- -----
! 3 ! !*7 ! !*7 ! !*7 ! ! 3 ! ! 3 ! ! 3 ! ! 3 !
FFFF ----- ----- ----- ----- ----- ----- ----- -----
0 1 2 3 4 5 6 7 Reg #7FXX
BANKS 1 & 3
0000 ----- ----- ----- ----- ----- ----- ----- -----
! 0 ! ! 0 ! !*8 ! ! 0 ! ! 0 ! ! 0 ! ! 0 ! ! 0 !
4000 ----- ----- ----- ----- ----- ----- ----- -----
! 1 ! ! 1 ! !*9 ! ! 3 ! !*8 ! !*9 ! !*A ! !*B !
8000 ----- ----- ----- ----- ----- ----- ----- -----
! 2 ! ! 2 ! !*A ! ! 2 ! ! 2 ! ! 2 ! ! 2 ! ! 2 !
С000 ----- ----- ----- ----- ----- ----- ----- -----
! 3 ! !*B ! !*B ! !*B ! ! 3 ! ! 3 ! ! 3 ! ! 3 !
FFFF ----- ----- ----- ----- ----- ----- ----- -----
8 9 A B C D E F Reg #7FXX
BANKS 1 & 4
0000 ----- ----- ----- ----- ----- ----- ----- -----
! 0 ! ! 0 ! !*C ! ! 0 ! ! 0 ! ! 0 ! ! 0 ! ! 0 !
4000 ----- ----- ----- ----- ----- ----- ----- -----
! 1 ! ! 1 ! !*D ! ! 3 ! !*C ! !*D ! !*E ! !*F !
8000 ----- ----- ----- ----- ----- ----- ----- -----
! 2 ! ! 2 ! !*E ! ! 2 ! ! 2 ! ! 2 ! ! 2 ! ! 2 !
С000 ----- ----- ----- ----- ----- ----- ----- -----
! 3 ! !*F ! !*F ! !*F ! ! 3 ! ! 3 ! ! 3 ! ! 3 !
FFFF ----- ----- ----- ----- ----- ----- ----- -----
10 11 12 13 14 15 16 17 Reg #7FXX
Всетаки перед прошивкой прошу вникнуть и проверить на ошибки.
Вижу 3 дополнительных банка/блока 2-4, т.е. 64*3=192 Кб доп. памяти. Патченый memcheck как видел 192 Кб. дополнительной памяти, так и будет видеть.
- - - Добавлено - - -
Как я понимаю, фишка изменения D28 в том, чтобы программы, ожидающие увидеть доп. память именно при D5=0 и D4-D3 00/01/10/11 увидели ее там. А memcheck (патченый) прощелкивает все (а непатченый даже больше чем все). Это я к тому, что если изменять D28, то проверять нужно не memcheckом, или нужно его еще патчить.
Представим что вся память компьютера выглядит так.
Номером в клетке обозначен номер 16КБ страницы во всей памяти компьютераКод:0000 ----- ----- ----- ----- ------ ------ ------ ------
! 0 ! ! 4 ! ! 8 ! ! C ! ! 10 ! ! 14 ! ! 18 ! ! 1C !
4000 ----- ----- ----- ----- ------ ------ ------ ------
! 1 ! ! 5 ! ! 9 ! ! D ! ! 11 ! ! 15 ! ! 19 ! ! 1D !
8000 ----- ----- ----- ----- ------ ------ ------ ------
! 2 ! ! 6 ! ! A ! ! E ! ! 12 ! ! 16 ! ! 1A ! ! 1E !
C000 ----- ----- ----- ----- ------ ------ ------ ------
! 3 ! ! 7 ! ! B ! ! F ! ! 13 ! ! 17 ! ! 1B ! ! 1F !
FFFF ----- ----- ----- ----- ------ ------ ------ ------
BANK 1 BANK 2 BANK 3 BANK 4 BANK 5 BANK 6 BANK 7 BANK 8
N.B. Однако D28 не имеет возможности адресоваться в в банки с 5 до 8
Тест памяти который мне дал Дмитрий, работал так: перебилал все возможные страницы во всех банках.
Где номер nn это номер страницы внутри банка а bbb это номер банка, старший бит которого игнорирован. D5 в игноре.Код:#7FXX
D7 D6 D5 D4 D3 D2 D1 D0
1 1 b b b 1 n n
В результате когда тест перебирая значение bbbnn от 1FH до 0H но при D2=1. Получалется следующая послдовательность страниц в адресном пространстве с 4000-7FFFF
Оригинальная прошивка получила быКод:7 6 5 4 F E D C B A 9 8 7 6 5 4 7 6 5 4 F E D C B A 9 8 7 6 5 4
Но изменение прошивки касается и отсальных конфигураций, тех которые при D2=0Код:F E D C F E D C B A 9 8 7 6 5 4 F E D C F E D C B A 9 8 7 6 5 4
Т.е. при D4D3=11 были C-F, станут 4-7? И зачем менять шило на мыло? Есть CPCшные программы, которые не работают при текущем варианте и заработают при коррекции?
Это при D2=1, есть еще и D2=0.
Это решать тем - кого эта тема интересует, а тем кому безразлична смысла действительно нет.
Чтобы ответить на вопрос однозначно, нужно протестировать 100% програм, а это не представляется возможным.
P.S. Для того чтобы задействовать все 512 КБ необходимо заменить D28 на другую микросхему. Или поставить поверх нее дополнительную.
Возможно кто-нибудь опять спросит "а стоит менять шило на мыло?". Ответ тот же самый.
А возможно и одной из первых, скажем тест CPC у Дмитрия не работает. Быть может в этом и причина.
И вообще, есть и такой вопрос, а почему тест CPC проверяет расширение памяти? Можно подумать, что существуют CPC программы которым эта память нужна.
И стоит ли тестировать расширение, если программ которым это расширение нужно нет?
Зачем люди покупали расширение dk'troniсs если нет программ для которых оно необходимо?
Все эти вопросы нужно задавать владельцам этого компьютера. Я лишь говорю о битах, и микросхемах.
Если речь про memcheck, то я на 99.99% уверен, что там причина в другом.
Например symbos может использовать доп. память
В обращении к портам 7CXX-7EXX
Ожидал такого ответа, но надеялся, что его не будет, т.к. при этом смысл разговора о доп. памяти в режиме CPC стремится к 0. Программ, которые для работы обязательно требуют больше памяти, чем в 6128, скорее всего очень мало (если они вобще есть). Самое главное, что среди них вряд ли есть интересные и полезные широкому кругу пользователей. Программисты в качестве достаточного минимума придерживаются распространенных моделей. При наличии доп. памяти программы, которые ее поддерживает, получают дополнительные возможности или работают быстрее или что-то в этом духе. Все это известные вещи, даже не знаю, зачем я их написал.
по ссылке перечислено, какие варианты расширения памяти symbos поддерживает
Итак, перепрошил D28 как предложил Sherlock. Есть изменения в работе компа в лучшую сторону при работе SymbOS. Она теперь видит полноценные 256кб и позволяет уже запускать больше программ. Это хорошо:) Со старой прошивкой OC видит только 128кб. Sherlock спасибо за данную прошивку.
С новой прошивкой изменений в работе игр и другого софта не заметил. Какие проги работали со страрой прошивкой, так продолжают нормально работать с новой. Какие не запускались так и не запускаются с новой прошивкой.
Тест памяти для Aleste, который написал Arnold также не работает с новой прошивкой.
SymbOS со старой прошивкой.
http://i91.fastpic.ru/thumb/2017/102...27d6ea08b.jpeg
SymbOS с новой прошивкой
http://i91.fastpic.ru/thumb/2017/102...8ea3dc4ff.jpeg
Да, так и есть с новой прошивкой memcheck надо патчить, иначе показывает 192КБ. Не патченный также зависает, как и на старой прошивке. Ivagor уже озвучил возможную причину зависания теста при старте.
Если такая доработка появится я ее непременно внедрю у себя на реальном железе:) Для запуска и работы в SymbOS нужно как можно больше памяти… иначе толком в ней ничего не запустишь.
Дмитрий, вы молодец что не побоялись и попробовали. Good job! :) Вот такой разговор мне больше нравится.
Не удивляет. Там не правильно включается MAPPER. Об этом мной написано выше.Цитата:
Тест памяти для Aleste, который написал Arnold также не работает с новой прошивкой
Я подумаю что вам посоветовать. Дайте немного времени.Цитата:
Если такая доработка появится я ее непременно внедрю у себя на реальном железе Для запуска и работы в SymbOS нужно как можно больше памяти… иначе толком в ней ничего не запустишь.
- - - Добавлено - - -
Какой emu?
Совместно с Дмитрий2012 выяснили, что memcheck сбоил при обращении к портам 7880h и 7A80h
Может звуковая плата....Код:
Magic sound short description
A[10 9 8 5 3 2 1 0]
0 X X 0 X X X X The board selected.
0 0 0 0 r r r r RW DMA 8237
rrrr is reg number
D[7..0] Data
0 0 1 0 1 0 r r -W TIMER 8254 CHANNELS 0,1,2
rr is reg number
D[7..0] Data
0 0 1 0 0 1 r r -W TIMER 8254 CHANNELS 3, and DAC
nn is reg number
D[7..0] Data
0 1 0 0 X X c c -W VOLUME CONTROL
cc is channel number
D[5..0] Volume
0 1 1 0 c c m m -W MAPPER
cc is channel number
mm is mapper’s page register
D[5..0] inverted page number
After reset timers do not work untill first write to it’s regs
- - - Добавлено - - -
Если А10 и А5 в 0 это доступ к звуковой карте, к устройству по A8,A9.
7880h доступ к DMA
7A80h доступ к к регистру громкости
Но возникает два вопроса
1) Зачем тест туда ползет?
2) Как доступ к несуществующим портам приводит к жесткому крешу?
Он пытается проверить расширение на 4Мб Extended 1M-4M Expansions (RAM7/Yarek-style) CPC4MB
Добавил вариант Алесты с расширением памяти из этой темы. Обновление на сайте.
Насчет расширения памяти в режиме CPC.
Если я правильно вижу, у D88 2 бита свободные, на один из них можно завести XD5 c D62. С соответствующего выхода D88 получим M5. В качестве D28 вместо РТ4 потребуется что-то вроде РТ5 (будут задействованы только 5 бит из 8 в каждом байте), на "лишний" старший адресный вход подаем M5. С выхода РТ5 можно получить MAP18, не надо его формировать на D85. Ну и конечно нужно доопределить прошивку для РТ5. Правда такая (или подобная) доработка вряд ли положительно скажется на надежности работы.
Выглядит на первый взгляд несложно, интересно, что я не учел.
- - - Добавлено - - -
И предполагаемая прошивка.
Делать, то что я написал, ни в коем случае нельзя, это больше затравка для критики.
Все верно. Должно работать. Но если делать это то лучше будет MAPMOD кинуть на старшую адресную линию у ROM. Чисто порядок данных будет понятнее.
P.S. Еще один вариант: заменить D87,D88,D28, и тот D85.X на небольшую PLD
P.S. Еще вариант засунуть все дискретные элементы в чуть большую PLD, или самую мелкую FPGA.
P.S. Ну и наконец, но это не очень интересно, модифицировать AmstradCore для MiST, до поддержки Aleste.
Если подумать, то конструктивно вышеописанная доработка не очень удобная (РТ5 будет в воздухе, скорее всего придется ее положить на плату вверх ногами и подсоединить проводками).
Как вариант возможна сокращенная доработка, при которой доп. память в режиме CPC увеличится со 192 до 256 Кб (не до 448, как в варианте с РТ5). До D28 в этом случае ничего не трогаем. На место D28 ставим 2 РТ4 друг на друга. В верхней будет задействован только 1 бит. В качестве прошивки можно использовать первую половину D28_RT5 (в нижнюю - младший полубайт, в верхнюю - старший). С верхней РТ4 теперь снимаем не MAP18, а промежуточный сигнал, можно назвать его PreMAP18. Если на плате есть свободный элемент ИЛИ, то используем его для XMAPMOD=MAPMOD ИЛИ PreMAP18. Если свободного ИЛИ нет, то придется его куда то ставить, что опять не очень хорошо. Последний шаг - на вход 9 D85 теперь подаем не MAPMOD, а XMAPMOD.
Все эти РТ4 - зло. Платы все новодельные, туда сразу надо ставить winbond-ы 27С512, они емкие, дешевые (30руб.) быстродействующие (45нс), многократно программируемые (и программаторы их берут любые из тех что у людей в использовании). Стояло бы там такое, проблемы бы не было, ИМХО.
Удалил пост с описанием варианта с одной РТ4 - он был неправильный.
В качестве "компенсации" выкладываю альтернативный layout.kbd для emu. Со стандартным очень неудобно управлять курсором в SymbOS. А здесь переопределил дополнительное цифровое поле на джойстик, как в WinAPE. 8 - вверх, 4 - влево, 6 - вправо, 2 - вниз, 5 - FIRE1, .Del - FIRE2.
Наверно еще рано полностью удалять "старый" layout.kbd, может кто найдет, где он лучше "нового" (хотя это вряд ли). Может "новый" в Aleste520EX_1.cfg прописать, чтобы был конфиг более подходящий для SymbOS?
А насчет оставления/убирания "старого" маппера это как реальщики скажут. Дмитрий2012 поменял, а может все остальные оставят "классику".
- - - Добавлено - - -
Только сейчас задумался - алестовский джойстик совпадает с амстрадовским?