объявлены даты 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 комментария

avatar
Осведомленность о возможностях Enterprise напоминает ситуацию с С64 середины и конца 90-х.
Когда только-только открывались и изобретались новые граф режимы и разведывались неизвестные особенности SID.
Очень интересная и перспективная машинка для ретро демосценининга. Жалко что впечатление о платформе сильно подпортили порты всего и вся со спектрума, но это поправимо.
avatar
Enterprise128 ассоциируется с журналом «Техника — Молодежи» 1991 года. Я статьи не читал, потому что ничего не было про Atari(я в те годы плотно сидел на этом компьютере). Сейчас объем информации увеличился: есть Wiki, которая постепенно переводится на английский, на форуме есть англоязычный раздел, есть примеры и есть люди, которые подскажут и помогут.

Короче говоря, делай что-нибудь и тебе будут рады:)

Древние демы не сильно порадовали: они состоят из слайдшоу графики ZX Spectrum, Atari и прочего, либо порты дем Lords с адаптацией музыки под Dave, либо цифровой звук+анимация.

Принципиально новое сделано недавно:

В общем, возможности есть, например я повторил Chess 4K, которая работает так же шустро. Было бы желание, и демы появятся.
avatar
компо завершено.
Описание работ с видео от SlashNet.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.