АЛГОРИТМ РАБОТЫ КАРТРИДЖА GAME500 1. АЛГОРИТМ РАБОТЫ МИКРОКОНТРОЛЛЕРА При включении или сбросе переход в режим 1. Режим 1 - эмуляция внешнего ПЗУ. Порграмма эмулирует внешнее ПЗУ объемом 256 байт. Используется только 8 младших бит адреса (ПОРТ A[0...7]) по этому 32кБайта заполнены повторяющимися блоками по 256 байт (при работе кишинеского ПЗУ). Также если установлен бит A12 PC:4 то при PA=0xff в порт PB выставляется 0x55, при PA=0xfe в порт PB выставляется 0xaa (для алгоритма распознования Вектором внешнего ПЗУ). Адреса в PA перебираются программой в Векторе последовательно, но если в PA "Вектором" сначала устанавливается 0xaa, а затем в PA устанавливается 0x55 то контроллер переходит в режим 2. Если во время работы режима 1 нажимается кнопка "PLAY" то выполняется программа проигрывания программы загрузчика через audio выход (работа режима 1 на это время прерывается). Режим 2 - чтение из флэш памяти и трансляция в порт ПУ Ждем клок от Вектора (из 0 в 1 и потом из 1 в 0) на линии A12 (PC:4) и считываем из PA старший байт смещения во флэш (H_OFFSET) Ждем еще один клок на линии A12 (PC:4) и считываем из PA младший байт смещения во флеш (L_OFFSET) Далее ждем клоки от "Вектора" на A12 и при каждом клоке последовательно считываем из флэш байты выбранного файла и выставляем в PB. Адрес файла во флэш памяти вычисляется по формуле: (H_OFFSET*0xFF+L_OFFSET)*0x2000 Также при каждом клоке анализируем порт PA. Там должен быть 0x00, но если в PA "Вектором" устанавливается 0xaa, а затем в PA устанавливается 0x55 то контроллер переходит в начальное состояние режима 2 (ожидает два клока и 2 байта с смещением во флэш). Если в PA "Вектором" устанавливается 0x66, а затем в PA устанавливается 0x81 то контроллер переходит в начальное состояние режима 1 (эмуляция ПЗУ). 2. АЛГОРИТМ РАБОТЫ ПРОГРАММ В ВЕКТОРЕ Загрузчик загруженный с магнитофона или программа в загрузочном ПЗУ загружает программу размером 32кБ с эмулятора внешнего ПЗУ. Эта программа (loader2) переводит GAME500 в режим 2, с помощью вышеописанного алгоритма загружает программу из флэш по смещению 0 (файловая оболочка), переводит GAME500 в режим 1 и запускает файловую оболочку (с адреса 0x0100). Файловая оболочка позволяет выбрать необходимый файл для загрузки. В таблице размещения файлов которая формируется питонвоским скриптом, содержится имя векторовской программы два байта смещения во флэш (H_OFFSET, L_OFFSET) и один байт размера программы кратный 8 кб (SIZE). После выбора файла программа переводит микроконтроллер в режим 2, передает два байта смещения файла в флэш памяти и последовательно загружает данные из флэш в ОЗУ. Длина файла во флэш памяти вычисляется по формуле: SIZE*0x2000 (SIZE формируется программой _make_flash.py) После загрузки всех байт, программа переводит микроконтроллер в режим 1 и запускает программу в ОЗУ с адреса 0x0000.