объявлены даты Enterprise Devcompo #2
Компо начинается с 01.12.2016 по 16.05.2017.
Что такое Enterprise? Английский компьютер с памятью 64-128Кб, процессор Z80 4 МГц, графический чип Nick и звуковой Dave.
Подробно можно почитать информацию на сайте, пересказывать весь контент неинтересно.
Со звуком нет никаких проблем, можно воспользоваться готовыми наработками эмуляции AY-8910 и SID.
С эмулятором стало проще, не надо шариться по интернетам в поисках ROM. Версия 2.0.10. при установке включает опцию скачивания набора необходимых файлов.
Скачано, установлено, осталось только настроить эмулятор для разработки программ. Вот один вариант:
-Создать папку prj;
-Запустить эмулятор, загрузить конфигурацию EP_128k_Tape_FileIO_TASMON.cfg, ткнуть Alt+F(set workng directory) и выбрать папку prj;
— при запуске эмулятора жмется F1 и в диалоговом окне выбирается файл .com например.
Разработка
мне показалось, что удобнее будет работать с cjasm и местным редактором.
Начало будет выглядеть так:
device zxspectrum128
ORG $F0
begin
;Define EXOS call macro (not needed in Enterprise assemblers)
MACRO EXOS n
RST 30H
DB n
ENDM
DB 0,5 ;type 5 = machine code application program
DW VEGE-100H ;16 bit lenght
DB 0,0,0,0,0,0,0,0,0,0,0,0 ;not used bytes
;start of program, loaded at 100h
LD SP,100H ;set the User Stack, 164 bytes free
первые 4 байта — стандартный заголовок, следующие 16 байт отведены для стека.
С чего начать? Понадобится список функций, доступных в EXDOS
Например
LD BC,100H+27 ;B=1 write
;C=27 number of system variable (BORDER)
LD D,0 ;new value
EXOS 16 ;handling EXOS variable
Комментарии опережают меня.
Чтение файла(дизассемблер демо EYE) выглядит вот так:
di
ld sp, 0FFh
ld a, 1
ld de, unk_3E0 ; EYE
rst 30h
db 1 ; open channel
; DE pointer to device/filename string
; ---------------------------------------------------------------------------
ld a, 0FCh
out (0B1h), a
ld a, 1
ld de, 6000h
ld bc, 1FFFh
rst 30h
db 6 ; Function 6 - Read Block
; Parameters : A channel number
; BC byte count
; DE buffer address
; ---------------------------------------------------------------------------
ld a, 1 ; Function 3 - Close Channel
rst 30h
db 3
unk_3E0: db 3 ; Длина строки EYE - 3 байта
db 45h ; E
db 59h ; Y
db 45h ; E
db 0
db 0
Память разбита на сегменты 16384 байт, которые выбираются с помощью портов:
$B0: $0000-$3FFF
$B1: $4000-$7FFF
$B2: $8000-$BFFF
$B3: $C000-$FFFF
Опрос клавиатуры:
Зная такую таблицу:
;EP keyboard matrix:
; b7 b6 b5 b4 b3 b2 b1 b0
;Row 80H 40H 20H 10H 08H 04H 02H 01H
; 0 L.SH. Z X V C B \ N
; 1 CTRL A S F D G LOCK H
; 2 TAB W E T R Y Q U
; 3 ESC 2 3 5 4 6 1 7
; 4 F1 F2 F7 F5 F6 F3 F8 F4
; 5 ERASE ^ 0 - 9 8
; 6 ] : L ; K J
; 7 ALT ENTER LEFT HOLD UP RIGHT DOWN STOP
; 8 INS SPACE R.SH. . / , DEL M
; 9 [ P @ 0 I
получается опрос:
LD A,8 ;number of Space row
OUT (0B5H),A ;select at the keyboard matrix
SPACE IN A,(0B5H) ;read the selected row from matrix
BIT 6,A ;SPACE pressed?
JR NZ,SPACE ;continue waiting if no
Казалось бы, что короткого перечня сведений хватит на то, чтобы написать программу, выводящую сообщение «Hello,Enterprise!» и почувствовать себя гениальным программистом.
Нет, для меня сама сложность в графике. Видеопамять отведена сегментам $FC-$FF(64Кб), все связано с чипом Nick.
Начну с цветов:
источник
Для Nick существуют некие LPT(Line Parameter Table) длиной 16 байт, которые состоят как набор немыслимых инструкций что и как отображать на экране.
Например:
LPT: DB -200 ;200 lines
DB 32H ;0 01 1 001 0
;VINT=0, no IRQ
;Colour Mode=01, 4 colours mode
;VRES=1, full vertical resolution
;Video Mode=001, pixel graphics mode
;Reload=0, LPT will continue
DB 11 ;left margin=11
DB 51 ;right margin=51
VIDCIM1: DW 0 ;primary video address, address of pixel data
DW 0 ;secondary videу address, not used in pixel graphics mode
;PALETTE: DB 0,1,9,15,0,0,0,0
;PALETTE: DB 0,2,$1A,$10,0,0,0,0
PALETTE: DB 0,$34,$3A,$3d,0,0,0,0
Китайская грамота изложена по ссылке, мне до сих пор неясны некоторые нюансы и тонкости, я постепенно пытаюсь вникнуть в суть.
Например, есть перечень режимов:
Текстовые режимы
42 колонки * 28 строк (2 цвета) 4 KB
84 колонки * 28 строк (4 цвета) 18 KB
84 колонки * 50 строк (интерлейс) 44 KB
Графические режимы Lo-Res
42 * 256 (256 цветов) 11 KB
84 * 256 (16 цветов) 11 KB
168 * 256 (4 цвета) 11 KB
336 * 256 (2 цвета) 11 KB
Графические режимы Hi-Res
84 * 256 (256 цветов) 22 KB
168 * 256 (16 цветов) 22 KB
336 * 256 (4 цвета) 22 KB
672 * 256 (2 цвета) 22 KB
672 * 512 (2 цвета; интерлейс) 44 KB
Атрибутный графический режим
336 * 256 (16 цветов) (блок 8*1)
Выбираю простой монохромный режим, записываю в память данные и вижу на экране
Оказывается, я упустил бит VRES, исправляю LPT и вижу картинку:
Американский форум. Задаёшь вопрос, потом тебе отвечают.
Израильский форум. Задаёшь вопрос, потом тебе задают вопрос.
Русский форум. Задаёшь вопрос, потом тебе долго рассказывают, какой ты мудак.
Нет, EnterpriseForever не попадает ни в одну из категорий. Спросил про режим 16 цветов и окончательно заблудился. Отложил знакомство на будущее. Форматы пикселей показались хитровыдуманными, я остановился на режиме 4 цвета(Flora).
Остались текстовые режимы, geco после DevCompo#1 дал пример кода с комментариями — формирование режима ch64. Получилось вот что:
Не ахти какое достижение, но я сам разбирался с некоторыми тонкостями. Например, цвета в LPT для данного режима предназначены очень хитро. Plasma+исходники.
Естественно, остановиться на подобном режиме не наш уровень. Игры уже делались, поэтому я планирую сделать другую работу.
1 декабря будет запущен пробный шар. А дальше — исследования продолжатся.
UPD1:JSeP — эмулятор с возможностью запуска игр и демо
3 комментария
Когда только-только открывались и изобретались новые граф режимы и разведывались неизвестные особенности SID.
Очень интересная и перспективная машинка для ретро демосценининга. Жалко что впечатление о платформе сильно подпортили порты всего и вся со спектрума, но это поправимо.
Короче говоря, делай что-нибудь и тебе будут рады:)
Древние демы не сильно порадовали: они состоят из слайдшоу графики ZX Spectrum, Atari и прочего, либо порты дем Lords с адаптацией музыки под Dave, либо цифровой звук+анимация.
Принципиально новое сделано недавно:
В общем, возможности есть, например я повторил Chess 4K, которая работает так же шустро. Было бы желание, и демы появятся.
Описание работ с видео от SlashNet.