Интерес к этому компьютеру вызвало появление на pouet.net демо:

Let's Dance(http://www.pouet.net/prod.php?which=53826)
Википедия(https://ru.wikipedia.org/wiki/KC_85) говорит, что использовался
процессор U8880 (клон Z80), разрешение экрана 320х256(40х32 символов).
Ок, первых сведений достаточно, хотелось бы больше подробностей о разработке
приложений. На страничке эмулятора нашелся
пример(https://floooh.github.io/virtualkc/p035_helloworld.html)
Дополнительную информацию можно найти тут же. Теперь второй шаг - ассемблер.
Тут грустно все - существует
MicroDOS(http://www.mpm-kc85.de/html/MicroDOS.htm), представляющий собой
копию CP/M

Возможность работать с готовыми утилитами мне никак не улыбается, продолжу
поиски. Нашлось описание (http://kc85.datahammer.de/KC85FileFormats.txt)
Ок, осталось найти подходящий эмулятор.
KCEMU (http://kcemu.sourceforge.net)

Обширный выбор моделей, поддержка различных форматов, плоттер, и отсутствие
отладчика.
Описание формата .kcc меня просто запутало, и программа, написанная в
качестве пробы не запустилась.
JKCEMU(http://www.jens-mueller.org/jkcemu/)

Здесь есть куча средств для разработки - ассемблер, дизассемблер, отладчик,
но есть жирный минус - интерфейс на немецком. И снова созданный мной .kcc не
принимает.
Для пробы написал программу(Нажать Alt+T)
Набираю текст:
org 100h
ld hl,08000h
ld de,80001h
ld bc,027ffh
ld (hl),l
ldir
ld hl,08000h
lp:
ld (hl),l
inc l
jr nz,lp
ret
жму F8, настройки такие:

жму Shift+F8, и любуюсь на картинку

Осталось разобраться с цветами, я хотел сделать простой эффект, но ассемблер
жутко неудобен - не понимает привычную запись шестнадцатиричных и бинарных
чисел, требователен к отступам, тяжело писать что-либо
Хорошо, поступим старым индейским способом: MESS будет удобнее. Найти нужный
ROM легко, запустить отладчик - еще проще. В документации указано, что
уществует возможность загрузки в память бинарного файла.
Однако задуманный эффект не заработал, после двухдневных мучений я отбросил
подобную идею.
Вернулся к JKCEMU, решил реализовать простой демоэффект.
Сначала об организации памяти. VideoRAM расположена по адресу $8000. каждый
байт отвечает за пиксели. Из примера программы видно, что первая колонка
данных предназначена для адресов $8000-$80FF. Так получаем 256/8=32 символа.
Символы справа отведены для адресов $8100,$8200..$A700. Так получается 40
символов.
С цветами оказалось проще, нашелся готовый пакет
https://github.com/floooh/kc85sdk , где приведены необходимые процедуры.
Теперь я написал программу, которая нарисует шахматную доску:
ORG 100h
; установка конфигурации экрана, описание у
virtualkc(https://floooh.github.io/virtualkc/p050_hwref.html)
di
in a,(84h)
res 0,a
res 2,a
res 1,a;pixels
out (84h),a
Код выглядел таким:
ld hl,8000h
ld de,255
lp0:
ld c,32
lp2:
push hl
ld b,10
push de
LP1:
call bswap
ld (hl),e
inc h
ld (hl),e
inc h
ld (hl),e
inc h
ld (hl),e
inc h
djnz LP1
pop de
pop hl
inc l
dec c
jr nz,lp2
call bswap
inc l
dec l
jr nz,lp0
..
bswap:
ld a,e
ld e,d
ld d,a
ret
Следующим шагом было рисование радужных полос. Написал простой код и убил
два часа на поиск ошибок, потому что получал невнятное изображение без
цветов.
Стал искать, в чем проблема. Причина была простой: нужно было до записи в
videoRAM менять конфигурацию порта $84.
Поэтому процедура подготовки экрана выглядела так:
ld hl,8000h
ld de,255
lp0:
ld c,32
lp2:
push hl
ld b,10
push de
LP1:
call bswap
;запись цвета
in a,(84h)
set 1,a
out (84h),a; 1-color,0-pixel
push hl
ld a,l
bit 3,a
jr z,noi
cpl
noi:
and 7
or 64
push bc
ld b,40
fl:
ld (hl),a
inc h
djnz fl
pop bc
pop hl
in a,(84h)
res 1,a
out (84h),a; 1-color,0-pixel
ld (hl),e
inc h
ld (hl),e
inc h
ld (hl),e
inc h
ld (hl),e
inc h
djnz LP1
pop de
;call bswap
pop hl
inc l
dec c
jr nz,lp2
call bswap
inc l
dec l
jr nz,lp0
Осталась синхронизация вывода. Из беглого поиска выяснилось, что в содранном
процессоре прерывания не реализованы, забудьте о IM 2/HALT.
Чтение исходников ничего не прояснило. Помогло демо Let's Dance, автор
которого почему-то включил исходный код внутрь программы.
Задержка сделана примерно так:
;;delay
ld c,10
dl1:
ld b,15
dl2:
nop
nop
nop
nop
nop
djnz dl2
dec c
jr nz,dl1
Получился файл .kcc размером 256 байт. За вычетом заголовка 128 байт
получается интро размером 128 байт.
Увы, информация по железу недостаточно, изучать криво сканированные
руководства мне не улыбается.
А где программма? Наверное, появится после выхода номера.