Pixelrat (обсуждение | вклад) |
Pixelrat (обсуждение | вклад) |
||
| Строка 3: | Строка 3: | ||
==Описание== | ==Описание== | ||
* http://cygne.emuunlim.com/files/wstech21.txt | * http://cygne.emuunlim.com/files/wstech21.txt | ||
| + | |||
| + | '''Процессор''' | ||
| + | |||
| + | Процессорное ядро - NEC V30 MZ на частоте 3.072 Мгц. | ||
| + | |||
| + | NEC V30 MZ - убыстрённая версия V30 с внутренним конвеером (16 байтовый буфер предварительной загрузки). V30MZ примерно в 4 раза быстрее V30. V30 в свою очередь является клоном Intel 8086, но работает на 30% быстрее его, может эмулировать Intel 8080 и содержит собственные инструкции. | ||
| + | |||
| + | В V30 MZ выборка команд, их декодирование и выполнение инструкций выполняется параллельно. По этой причине сложно определить, какая часть программы в настоящее время выполняется путём контроля ввода адресной шины для выборки кода команды. | ||
| + | |||
| + | Если дана команда условного перехода, даже если не выполняются ответвления, адрес назначения перехода выбирается предварительно (1 раз), и поэтому дальнейший мониторинг программы затруднён. | ||
| + | |||
| + | V30 MZ имеет 8 очередей предварительной выборки (16 байт) | ||
| + | |||
| + | Между V30MZ и V30 есть несколько отличий, например, неподдерживаемые опкоды, другая обработка флагов после mul/div. | ||
| + | |||
| + | '''Память''' | ||
| + | |||
| + | 20 бит адресного пространства = 1 Мбайт. Память разделена на сегменты по 64 Кбайт. | ||
| + | |||
| + | Сегменты: | ||
| + | * 0 - RAM - 16 Кбайт для WonderSwan / 64 КБайт для WonderSwan Color (внутреннее ОЗУ) | ||
| + | * 1 - SRAM - 256 Кбайт (32х8) - BSI device BS62LV256TC | ||
| + | * 2 - ROM bank (начальный банк = последний) | ||
| + | * 3 - ROM bank (начальный банк = последний) | ||
| + | * 4 - ROM bank (начальный банк = последний - 11) | ||
| + | * 5 - ROM bank (начальный банк = последний - 10) | ||
| + | * 6 - ROM bank (начальный банк = последний - 9) | ||
| + | * 7 - ROM bank (начальный банк = последний - 8) | ||
| + | * 8 - ROM bank (начальный банк = последний - 7) | ||
| + | * 9 - ROM bank (начальный банк = последний - 6) | ||
| + | * A - ROM bank (начальный банк = последний - 5) | ||
| + | * B - ROM bank (начальный банк = последний - 4) | ||
| + | * C - ROM bank (начальный банк = последний - 3) | ||
| + | * D - ROM bank (начальный банк = последний - 2) | ||
| + | * E - ROM bank (начальный банк = последний - 1) | ||
| + | * F - ROM bank (начальный банк = последний) | ||
| + | |||
| + | Сегменты 2-$F переключаются с помощью портов : | ||
| + | |||
| + | $C2 - Cегмент 2. Значение, записанное в порт - номер ROM-банка. $FF означает последний ROM-банк, $FE = последний - 1 .. так далее.<br/> | ||
| + | $C3 - Cегмент 3. Аналогично<br/> | ||
| + | $C0 - Cегменты 4-$F. Биты 0...3 порта $C0 - это биты 4...7 номера ROM-банка в сегментах 4-$F. Биты 0...3 берутся из номера сегмента, например, IO[$C0]=$4E -> сегмент 9 содержит ROM bank $E9. | ||
| + | |||
| + | '''RAM map''' | ||
| + | WS/WSC: | ||
| + | * $0000 - $1FFF | ||
| + | * $2000 - $3FFF - 4-цветные тайлы | ||
| + | Только для WSC: | ||
| + | * $4000 - $7FFF - банк 0 16-цветных тайлов | ||
| + | * $8000 - $BFFF - банк 1 16-цветных тайлов | ||
| + | * $C000 - $FDFF | ||
| + | * $FE00 - $FFFF - палитры | ||
| + | |||
| + | '''Графика''' | ||
| + | |||
| + | '''Звук''' | ||
| + | |||
| + | '''Заголовок ROM''' | ||
| + | |||
| + | '''Прерывания''' | ||
| + | |||
| + | '''Управление''' | ||
| + | |||
| + | '''Internal EEPROM Communication''' | ||
| + | |||
| + | '''I/O порты''' | ||
==Ассемблеры== | ==Ассемблеры== | ||
| Строка 8: | Строка 74: | ||
==Инструменты== | ==Инструменты== | ||
| − | |||
==Эмуляторы== | ==Эмуляторы== | ||
Версия 11:28, 7 апреля 2019
Содержание
Описание
Процессор
Процессорное ядро - NEC V30 MZ на частоте 3.072 Мгц.
NEC V30 MZ - убыстрённая версия V30 с внутренним конвеером (16 байтовый буфер предварительной загрузки). V30MZ примерно в 4 раза быстрее V30. V30 в свою очередь является клоном Intel 8086, но работает на 30% быстрее его, может эмулировать Intel 8080 и содержит собственные инструкции.
В V30 MZ выборка команд, их декодирование и выполнение инструкций выполняется параллельно. По этой причине сложно определить, какая часть программы в настоящее время выполняется путём контроля ввода адресной шины для выборки кода команды.
Если дана команда условного перехода, даже если не выполняются ответвления, адрес назначения перехода выбирается предварительно (1 раз), и поэтому дальнейший мониторинг программы затруднён.
V30 MZ имеет 8 очередей предварительной выборки (16 байт)
Между V30MZ и V30 есть несколько отличий, например, неподдерживаемые опкоды, другая обработка флагов после mul/div.
Память
20 бит адресного пространства = 1 Мбайт. Память разделена на сегменты по 64 Кбайт.
Сегменты:
- 0 - RAM - 16 Кбайт для WonderSwan / 64 КБайт для WonderSwan Color (внутреннее ОЗУ)
- 1 - SRAM - 256 Кбайт (32х8) - BSI device BS62LV256TC
- 2 - ROM bank (начальный банк = последний)
- 3 - ROM bank (начальный банк = последний)
- 4 - ROM bank (начальный банк = последний - 11)
- 5 - ROM bank (начальный банк = последний - 10)
- 6 - ROM bank (начальный банк = последний - 9)
- 7 - ROM bank (начальный банк = последний - 8)
- 8 - ROM bank (начальный банк = последний - 7)
- 9 - ROM bank (начальный банк = последний - 6)
- A - ROM bank (начальный банк = последний - 5)
- B - ROM bank (начальный банк = последний - 4)
- C - ROM bank (начальный банк = последний - 3)
- D - ROM bank (начальный банк = последний - 2)
- E - ROM bank (начальный банк = последний - 1)
- F - ROM bank (начальный банк = последний)
Сегменты 2-$F переключаются с помощью портов :
$C2 - Cегмент 2. Значение, записанное в порт - номер ROM-банка. $FF означает последний ROM-банк, $FE = последний - 1 .. так далее.
$C3 - Cегмент 3. Аналогично
$C0 - Cегменты 4-$F. Биты 0...3 порта $C0 - это биты 4...7 номера ROM-банка в сегментах 4-$F. Биты 0...3 берутся из номера сегмента, например, IO[$C0]=$4E -> сегмент 9 содержит ROM bank $E9.
RAM map WS/WSC:
- $0000 - $1FFF
- $2000 - $3FFF - 4-цветные тайлы
Только для WSC:
- $4000 - $7FFF - банк 0 16-цветных тайлов
- $8000 - $BFFF - банк 1 16-цветных тайлов
- $C000 - $FDFF
- $FE00 - $FFFF - палитры
Графика
Звук
Заголовок ROM
Прерывания
Управление
Internal EEPROM Communication
I/O порты
Ассемблеры
- nasm