Знакомство с Amstrad PCW
Еще один интересный экземпляр, с которым я столкнулся, когда изучал CP/M, однако знакомство с архитектурой было отложено.
Для начала:
Wiki
Программы, игры и другая документация
Для начала нужно скачать CP/M Box
и сконфигурировать: OPtions->Hardware, выбрать Mapping, включить External Drive и указать папку в поле Directory, в этом случае файлы, находящиеся в папке будут видны как диск M:
Первый шаг: File-Drive A->Insert, указать образ дискеты, который можно найти здесь
Теперь можно запустить эмулятор и начать программировать. Я остановился на звуке и графике
Звук
Карта портов меня запутала, поэтому помогло дизассемблирование одной программы.
Запись $0C в порт $F8 включит бипер, $0B - выключает.
Звук я взял из Beepola, и переписал полученный .asm
Например, для движка Triton код выглядит так:
DRUM_NOISE_L0: LD A,(HL)
AND D
; OUT ($FE),A
ld a,$0C
jr nz,nobit2
ld a,$0B
nobit2:
OUT ($F8),A
Качество эмуляции звука оставляет желать лучшего.
графика
С информацией тоже негусто, помогли книги, найденые на пропавшем сайте: PCW Machine Code.pdf и PCW Super Code.pdf.
Разрешение экрана 720х256. Для памяти отводится Блок1, Блок2 хранит информацию о шрифтах и об адресах, так называемые Roller-RAM. Мало, что понятно, заработал этот пример кода:
;******************************************
; ZEICHENSATZ MAL ANDERS *
; DIREKTE KOPIE IN DEN BILDSCHIRMSPEICHER *
;******************************************
ORG 0100H
CALL 0FC5AH ;XBIOS
DEFW 00C2H ;BILDSCHIRMRESET
DI ;RST 38H SETZT AUF
;BANK 1
LD A,081H ;BILDSCHIRMSPEICHER
OUT (0F1H),A ;IN BANK 0
LD A,082H
OUT (0F2H),A
LD HL,(0B700H) ;BILDSCHIRMMITTE
ADD HL,HL ;OFFSET
LD E,L ;ADRESSE IN DE
LD D,H
LD HL,0B800H ;ANFANG ZEICHENSATZ
LD BC,0800H ;LAENGE ZEICHENSATZ
LDIR ;KOPIERE
JP 0 ;WBOOT SCHALTET
;BANK 1 EIN
END
при подключенных страницах адреса, начиная с $B600, указывают на видеопамять, 8 байт сверху вниз, затем следующие позиции 0-79.
источник
Вышло вот что:
Исследования продолжаются.
Комментарии
Трекбэков
Всего трекбэков 0
Ссылка трекбэка: