#04 — И целого байта мало… | Берем БК за рога

от автора

На прошлой неделе =RMDA= выпустила свой первый релиз для легендарного советского компьютера «Электроника БК-0011М» и я хочу рассказать вам некоторые подробности. Вот сама работа: Gift 2020

image

Это gift — такой тип поздравительных intro, обычно приуроченных к Дням рождения. Так получилось, что к моменту завершения работы у двух видных деятелей российской демосцены синхронно случился день рождения, и мы решили немного переформатировать этот релиз в гифт, чтобы все остались довольны. В остальном, перед нами обычное intro/demo, никак не связанное с ограничениями по размерам.

Программировать на БК не сложнее и не проще, чем на любом другом устройстве. Берешь средства разработки, мануалы, готовые библиотеки кода, соединяешь все вместе и добавляешь к этому свою идею. Средств разработки для БК очень много, справочной информации еще больше. Фактически, все что делалось на БК до 1997 года — это один непрерывный пласт справочной информации. Есть даже весьма приличный эмулятор, который продолжают обновлять на периодической основе, правда он строго под Windows.

В чем же проблема? В чем технологический вызов? Особенно если мы пишем банальный HELLO WORLD для новой платформы?

На демосцене принято снабжать релизы .NFO-файлом, где как раз и описаны, кратко, но емко, все детали происходящего. Фактически, статья на Хабре не нужна, если вы умеете читать .NFO:

         ________    ___  ____    _______    ________        __\       \ _/   \/    \ _/       \ __\       \__        \__   __   \\     \     \\   __    \\__   __   _/         /    |/ __/           _/_   |/   _/_/    |/  /_         \    /    \_           /    /      \          \          \____\___//___\  /___/____________/\_____\___/                         \/   redefine the future! gift 2020 demo, Elektronika BK0011M + AY-8910  code - siniy  alarm - okin   farted by ded  YouTube: sorry, no YouTube, BK is too hard even for RMDA  HowTO:  1) Download emulator here http://gid.pdp-11.ru 2) Install it and find installation directory 3) Replace /image/MKDOS513.IMG with file from our release 4) Launch emulator 5) In NC-style enviroment navigate up, change dir/disk 6) Find gft2o2o.com file and press Enter 7) AY-8910 must be enabled 8) Assembler+devtools also available at http://gid.pdp-11.ru  BK - shit na veka!  RMDA 2020 @ https://rmda.su  02/04/2020  russkie idut... 

В рамках этого цикла статей на Хабре мы конечно преследуем образовательные цели. Рассказываем вам о демосцене, но при этом не ставим целей научить вас программировать на ассемблере. Работа выше — это всего лишь три слайда меняющихся под музыку. Это очень и очень просто, но давайте посмотрим в код:

	CALL CLS 	MOV #msg3,R5 	MOV #40000+4.+0x1B00,R0 	CALL PRT   MOV #8.,R0 ;сколько пустых циклов  CLR R1 L1: SOB R1,L1  SOB R0,L1  MOV #32768.,R0  MOV R0,COL  ;setup timer START:  MOV #TICK,@#100  MOV #2,@#102  CLR @#177662 ;вкл таймер, 0 палитра  SSH: ;load picture  MOV #File_002,R1  EMT 36  	MOV #msg1,R5 	MOV #40000+27.,R0 	ADD #0x3600,R0 	CALL PRT  ;play song 	MOV #1,R0 	MOV R0,PSGPA 	MOV #SONG+16.,R0 	MOV R0,PSGPO 	CALL PL 	CALL CLS   MOV #File_001,R1  EMT 36  	MOV #msg2,R5 	MOV #40000+16.,R0 	ADD #0x3600,R0 	CALL PRT  ;play song 	MOV #1,R0 	MOV R0,PSGPA 	MOV #SONG+16.,R0 	MOV R0,PSGPO 	CALL PL 	CALL CLS 	JMP SSH CLS: 	MOV #40000,R0 CL: 	CLR (R0)+ 	TST R0 	BPL CL 	RET ;************************************************************************************** ;play song PL: WAIT 	MOV PSGPA,R0 	TST R0 	BEQ PSGA 	DEC R0 	MOV R0,PSGPA 	BR PL PSGA: 	MOV PSGPO,R0 dumpreg: 	MOVB (R0)+,R1 	BIC #0xFF00,R1 	CMP #0xFF,R1 	BEQ stoplay 	CMP #0xFE,R1 	BNE nogetwait 	MOVB (R0)+,R2 	BIC #0xFF00,R2 	ASL R2 	ASL R2 	MOV R2,PSGPA 	BR stoplay nogetwait: 	CMP #0xFD,R1 	BEQ stoplay2 	COMB R1 	MOV R1,@#177714 	MOVB (R0)+,R1 	BIC #0xFF00,R1 	COMB R1 	MOVB R1,@#177714     BR dumpreg stoplay2: 	RET ;MOV #SONG+16.,R0 stoplay: 	MOV R0,PSGPO 	JMP PL  ;************************************************************************************** TICK: RTI PSGPA: .WORD 1  PSGPO: .WORD SONG+16. SONG:  .byte 0x50,0x53,0x47,0x1A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ----тут пропущены данные трека, смотрите полный исходник в архиве  .byte 0x0F,0x09,0x10,0x0A,0x0F,0x0B,0x46,0x0D,0x0C,0xFE,0x01,0x00,0xA1,0x04,0x16,0x0B  .byte 0xFD ; end of song .EVEN ;-------------------------------------------------------------- COL: .WORD 49152.;32768. PRT:  tout: 	MOVB (R5)+,R3 	SUB #32.,R3 	BIC #0xFF00,R3 ;*10 	ADD R3,R3;*2 	MOV R3,R1 	ADD R3,R3;*4 	ADD R3,R3;*8 	ADD R3,R1;*10 	ADD #112276,R1 	 	MOV R0,-(SP) 	MOVB #10.,4(SP) cf: 	MOVB (R1)+,R2  ;make for standart  	MOVB #8.,6(R6) 	MOV #0,R3 m2: 	ASR R2 	BCC m3 	BIS @#COL,R3 m3: 	CLC 	ROR R3 	ROR R3  	DECB 6(R6) 	BNE m2  	MOV R3,(R0);+ 	ADD #64.,R0 	DECB 4(SP) 	BNE cf 	 	MOV (SP)+,R0 	INC R0 	INC R0 	TSTB (R5) 	BNE tout 	RET ;-------------------------------------------------------------- msg1: .ascii /2 may 1945/  .byte 0 msg2: .ascii /Russkie idut.../ 	.byte 0,0 msg3: .ascii /Happy birthday Tim & Random!/ 	.byte 0,0  File_001:  .WORD 3,0,0 ; 1=флаг чтения, адрес загрузки, длина (0! при чтении)  .ASCII  "PO1             " ;имя 16 байт  .BYTE 5,6   ;страницы 40-100, 100-140 (если WORD -1., то в текущие)  .BLKB 20.   ;инфа о загруженном файле  File_002:  .WORD 3,0,0 ; 1=флаг чтения, адрес загрузки, длина (0! при чтении)  .ASCII  "PO2             " ;имя 16 байт  .BYTE 5,6   ;страницы 40-100, 100-140 (если WORD -1., то в текущие)  .BLKB 20.   ;инфа о загруженном файле   .EVEN  .END 

ВАЖНО! Не пытайтесь собрать код из статьи! Он специально сокращен и отформатирован под нормальную читаемость на Хабре. Если вы хотите собрать работу сами — используйте оригинальный архив на Pouet и папку /source. Стоит сразу признать — это сделана далеко не честь по чести, но для первого опыта на неведомом ранее компьютере все вполне прилично. Возможно, уже после Revision Online 2020 мы сделаем более продвинутую, финальную версию этого гифта. Возможно…

Какие выводы мы сделали из проекта на БК? С одной стороны, все прекрасно, есть средства разработки, есть документация. То что БК — ужасная архитектура, мы знали и так. Однако, никто не ожидал после ZX и PC столкнуться с ситуацией ТОТАЛЬНОГО ОТСУТСТВИЯ самых базовых процедур и библиотек. Например, мы совершенно были не готовы к тому, что для проигрывания готового chiptune-трека (сирена), написанного в Vortex Tracker, нам понадобится помощь самого Manwe_SandS. И речь не о том, что на БК в порты звукового чипа AY нужно отправлять инвертированные значения, это пол-беды. У людей за 20 лет просто не появилось банального плеера PT3, хотя в 90-ых годах огромное количество музыки с ZX Spectrum переносилось на БК в несколько кликов мышью. Вот так, за 20 лет бездействия, сцена легендарного советского компьютера полностью утратила духовность.

Ничего, =RMDA= поможет!

В остальном, БК — это весело и задорно! Смело берите БК за рога! Спасибо.

—EOF—

-01 — И целого байта мало… | Пилот)
#00 — ИЦБМ… | Приглашение на Revision Online 2020
#01 — ИЦБМ… | Какими бывают intro?
#02 — ИЦБМ… | The Cross of Changes
#03 — ИЦБМ… | 2B or not 2B
#04 — ИЦБМ… | Берем БК за рога

Развлекательный канал деда в Телеграм: teleg.run/bornded

Рядом с каналом есть чат. В нем можно попробовать поднять вопросы за демосцену, ассемблер, пиксель-арт, трекерную музыку и другие аспекты процессы. Вам могут ответить либо отправят в другие, более тематические чаты.

ТАК ПОБЕЖДАЛИ — ТАК ПОБЕДИМ!

ссылка на оригинал статьи https://habr.com/ru/post/496212/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *