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

Это gift — такой тип поздравительных intro, обычно приуроченных к Дням Рождения. Так получилось, что к моменту завершения работы у двух видных деятелей российской демосцены синхронно случился день рождения, и мы решили немного переформатировать этот релиз в гифт, чтобы все остались довольны. В остальном, перед нами обычное intro/demo, никак не связанное с ограничениями по размерам.
Программировать на БК не сложнее и не проще, чем на любом другом устройстве. Берешь средства разработки, мануалы, готовые библиотеки кода, соединяешь все вместе и добавляешь к этому идею. Средств разработки для БК очень много, справочной информации еще больше. Фактически, все что делалось на БК до 1997 года — это один непрерывный пласт справочной информации. Есть даже весьма приличный эмулятор, который продолжают обновлять на периодической основе, правда он строго под Windows.
В чем же проблема? В чем технологический вызов? Особенно если мы пишем банальный HELLO WORLD для новой платформы?
На демосцене принято снабжать релизы .NFO-файлом, где как раз и описаны, кратко, но емко, все детали происходящего. Фактически, статья на Хабре не нужна, если вы умеете читать .NFO:
В рамках этого цикла статей на Хабре мы конечно преследуем образовательные цели. Рассказываем вам о демосцене, но при этом не ставим целей научить вас программировать на ассемблере. Работа выше — это всего лишь три слайда меняющихся под музыку. Это очень и очень просто, но давайте посмотрим в код:
ВАЖНО! Не пытайтесь собрать код из статьи! Он специально сокращен и отформатирован под нормальную читаемость на Хабре. Если вы хотите собрать работу сами — используйте оригинальный архив на Pouet и папку /source. Стоит сразу признать — сделано далеко не честь по чести, но для первого опыта на неведомом ранее компьютере все вполне прилично. Возможно, уже после Revision Online 2020 мы сделаем более продвинутую, финальную версию этого гифта. Возможно…
Какие выводы мы сделали из проекта на БК? С одной стороны, все прекрасно, есть средства разработки, есть документация. То что БК — ужасная архитектура, мы знали и так. Однако, никто не ожидал после ZX и PC столкнуться с ситуацией ТОТАЛЬНОГО ОТСУТСТВИЯ самых базовых процедур и библиотек. Например, мы совершенно были не готовы к тому, что для проигрывания готового chiptune-тре��а (сирена), написанного в Vortex Tracker, нам понадобится помощь самого Manwe_SandS. И речь не о том, что на БК в порты звукового чипа AY нужно отправлять инвертированные значения, это пол-беды. У людей за 20 лет просто не появилось банального плеера PT3, хотя в 90-ых годах огромное количество музыки с ZX Spectrum переносилось на БК в несколько кликов мышью. Вот так, за 20 лет бездействия, сцена легендарного советского компьютера полностью утратила духовность.
Ничего, =RMDA= поможет!
В остальном, БК — это весело и задорно! Смело берите БК за рога! Спасибо.
---EOF---
#FF — И целого байта мало… | Пилот)
#00 — ИЦБМ… | Приглашение на Revision Online 2020
#01 — ИЦБМ… | Какими бывают intro?
#02 — ИЦБМ… | The Cross of Changes
#03 — ИЦБМ… | 2B or not 2B
#04 — ИЦБМ… | Берем БК за рога
#05 — ИЦБМ… | Анимэ
#06 — ИЦБМ… | Метеоризмы
#07 — ИЦБМ… | Revision Online
Развлекательный канал деда в Телеграм: teleg.run/bornded
Рядом с каналом есть чат. В нем можно попробовать поднять вопросы за демосцену, ассемблер, пиксель-арт, трекерную музыку и другие аспекты процессы. Вам могут ответить либо отправят в другие, более тематические чаты.
ТАК ПОБЕЖДАЛИ — ТАК ПОБЕДИМ!

Это 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---
#FF — И целого байта мало… | Пилот)
#00 — ИЦБМ… | Приглашение на Revision Online 2020
#01 — ИЦБМ… | Какими бывают intro?
#02 — ИЦБМ… | The Cross of Changes
#03 — ИЦБМ… | 2B or not 2B
#04 — ИЦБМ… | Берем БК за рога
#05 — ИЦБМ… | Анимэ
#06 — ИЦБМ… | Метеоризмы
#07 — ИЦБМ… | Revision Online
Развлекательный канал деда в Телеграм: teleg.run/bornded
Рядом с каналом есть чат. В нем можно попробовать поднять вопросы за демосцену, ассемблер, пиксель-арт, трекерную музыку и другие аспекты процессы. Вам могут ответить либо отправят в другие, более тематические чаты.
ТАК ПОБЕЖДАЛИ — ТАК ПОБЕДИМ!
