1) Железо - АДУК в чистом виде: микросхема на плате, внешний источник +5В и кабель с драйвером RS232 (из стартового комплекта 842).
Во вложении sheetpcb.ZIP схема и рисунок платы.
2) Среда: их две: Keil uVision 7.04 и Aspire 1.05.
В предыдущем вложении проект под Keil.
Две среды проектирования взял для страховки. А зря - результат компиляции одинаков.
Для моделирования (ес-но вместо АДуКа брал 8052 или 8032) - Proteus 7.2 SP6.
3) Что должно быть? Во-первых корректное выполнение инструкций Бейсика (версии 1.1 и 1.31 ведут себя одинаково).
Например:
*MCS-BASIC-52 V1.31*
READY
›10 ? 10
›20?20
›list
10 PRINT 10
20 PRINT 20
READY
›run
10
20
READY
›fori=0to5: ?i:nexti
0
1
2
3
4
5
›
(это то, что дает Протеус - aduc842.DSN).
------------------
А вот то, что я получаю реально на экране терминала (эмулятора терминала TTerm1.exe - см. вложение):
*MCS-BASIC-52 V1.31*
READY
›10 ? 10
›20 ? 20
›list
READY
›run
READY
›fori=0to5: ?i:nexti
0
0.081
ERROR: C-STACK
READY
›
Т.е. строки 10 и 20 не были сохранены в ОЗУ,
цикл выполнен 1 раз правильно, второй - неправильно, дальше типа переполнен стек.
Еще "перлы":
›?MTOP,MBOT,FREE,MTOP-FREE
2047 -0.0000084 E-58 1535 512
›?MBOT
-0.0000184 E-97
›NEW
›?MBOT
0.081
›
›?len
1
›
Т.е. "вершину" памяти нашел верно, разность - верно, LEN=1 это верно, если пусто в памяти. ФРИ - тоже верно. А вот МБОТ должен быть равен 0.
Еще пример:
*MCS-BASIC-52 V1.31*
READY
›?mbot
0
›?355/113
3.1415929
›?mbot
0
›fori=10to1step-1 : ?i :nexti
-?.400121 E-113
›?mbot
0.001 E-0
›
В общем таких примеров много. Мне они ни о чем конкретно не говорят,
и подсказки не дают.
Дело осложняется тем, что отладка возможна через УАРТ, а он используется самим Бейсиком. Поэтому как только я дохожу до обращения к последовательному порту, происходит ошибка и в дальнейшем я не могу проследить за ходом выполнения программы.
А в Протеусе нет адекватной модели АДуКа.
Ну а во-вторых по определенным адресам внутренней XRAM должны быть прописаны определенные коды. Они не соответствуют тому, что должно быть либо функция XBY(‹адрес›) работает неправильно.
Например по адресу 266 (10АН) д.б. 7, а есть 50, по адресу 267 д.б. 255, есть 54.
Между прочим это ячейки, где записан МТОР, хотя МТОР = 2047 - верно.