Ретрокод на ассемблере для Спектрума, #1. Предисловие и первая программа "Привет Мир!"
ฝัง
- เผยแพร่เมื่อ 26 ส.ค. 2024
- Программирование на ассемблере для ретро платформы ZX Spectrum(Спектрум). Введение и первая традиционная программа - "Привет Мир!". Вещание на эмуляторе Fuse, ассемблер ALASM, отладчик STS и много чая! :)
speccy.info/ALASM
Как пользоваться ALASM - zx-pk.ru/threa...
Вещание программирования на канале: / bitscode .
Наш основной канал: / 8bitteaparty .
Репозиторий с исходным кодом: github.com/dre....
Сайт 8-Битного Чаепития - 8bittea.party/.
Подскажите пожалуйста, какой образ ALASM используется, или как переключить редактор, а то у меня запускается на чёрном экране и шрифт более мелкий.
Образ Алазма используем версии 5.09 и отладчик СТС вместе с ним. Можно посмотреть на странице AloneCoder - alonecoder.nedopc.com/zx/index.html. Там же на образе дискеты есть файл помощи, его можно выгрузить и смотреть просто как текстовый файл на основной машине. ;) Чтобы шрифт был крупнее - 42 символа в строке, надо запускать "alasm42.B" файл на дискете, 64 символа в строке, согласимся, мелковато. Чтобы настроить цвета - нажмите в режиме команд Алазма "F" - config и там уже меняете цвета Ink и Paper. Или еще много полезных ссылок у нас в репозитории/вики github.com/dreamy-cat/8-Bit-Tea-Party/wiki.
@@8BitTeaParty Огромное спасибо за столь развёрнутый ответ! И отдельно спасибо за этот цикл по ассемблеру, очень качественно подан материал и просто приятно слушать! )
Моё знакомство с асемблером началось с маленькой брошюрки Ю. Родионова выпущенной издательством Питер. Я уже не помню как она называлась, что то по взлому загрузчиков программ для спектрума. Но это был начальный и полезный этап понимания всей кухни работы програм. В результате портировал множество программ с кассетной версии на дисковую. В дальнейшем стал писать драйверы для перефирии. В частности сделал шрифты и загрузчик кирилицы в 24 точечный принтер сейкоша, довольно экзотический по тем временам. Журнал zx ревю читался как забористый детектив. Были идеи использовать спектрум для управления станком ЧПУ, но наступила эра IBM.
Мне повезло чуть больше. У меня была простая книжка от VA Print. По ассемблеру и еще пару справочников с таблицами кодов команд. В целом можно было и по ним методом проб и ошибок также изучить. ;) Жаль только что не было книги популярной от Инфоркома. Но и того что было - в целом хватило. Плюс журналы. ZX Ревю был хорош и это был интернет того времени. Ну и журналы на дискетах Спектрофон, ЗХ Формат и другие. С переферией поработать лично не успел, еле справился тогда даже с муз. сопроцессором - использовал готовый плеер в исходниках. Русификатор многие делали для поддержки хотя бы в Бейсике. Ну а по ЧПУ - возможно что для простого управления Z80 можно и сейчас попробовать использовать. :)
@@BitsCode мне попадался компьютер на базе zx spectrum с блоком управления для фрезеровки изделий из дерева. Работал через параллельный порт. Программа написана на basic. Это чудо работало. Хоть и с примитивным интерфейсом. Эпоха развития частного бизнеса.
Это. Просто. Потрясающе! Как раз собираю себе pentagon 128 и тут такой подарок) Обязательно попробую для души повторить ну и охото своих штучек понаписать) Так что спасибо за видео) Ассамблер со времен avr не видел. Соскучился)
Спасибо за теплый отзыв! Прямо целая куча вопросов, тут пока кратко и на следующем вещании подробнее ответим на вопросы! :) Если что вещание кода на Твиче по субботам в 18-00, канал bitscode. Или наш основной канал там же, 8bitteaparty. Также мы всегда открыты для новых участников в проектах, можно посмотреть репозиторий на ГитХабе(ссылка в описании). Видео длинные у нас, формат вещаний, так что не стесняемся применять скорость 2Х. ))
Ссылки на документацию есть у нас в репозитории, прямо в Вики немного. Также можно посмотреть ресурсы для начала speccy.info, там есть и описание горячих клавиш для отладчика СТС. Комбинации команд и клавиш для среды разработки АЛАЗМ - есть в документации к нему, прямо в текстовом виде. :)
Из книг для вспомнить/изучить порекомендуем издательство Инфоркома - Программирование в машинных кодах, ну и старые журналы конечно же, сайт zxpress.ru
Про ОЗУ, да программа там же и ассемблируется подробнее на следующем вещании. ;)
Насчет продакшена, если имеется ввиду что планируется именно практическое современное применение, то мы будем сильно удивлены, у нас всё таки ретро вещание. :) Ну а мы храним всё на дискете Streams.trd - образ есть в репозитории и там же файлы .asm которые можно посмотреть прямо так. Старые вещания располагаются в директории /archive. Если пользуются современными средствами разработки, то порекомендуем кросс-ассемблер и любую среду. И хранить уже прямо исходник + образ для размещения в памяти, для эмулятора.
Постараемся на вещании этот вопрос тоже затронуть. ;)
Классная тема! Прям вернулся на 20 лет назад, когда также в аласме писали демки, интры и TR-DOS загрузчики для кассетных игр! лайк, подписка )
Это не машинные коды. Это язык близкий к машинным кодам. Машинные коды имели кодировку типа "0F", которые заносились в память или регистры. На ассемблере было легче писать, без необходимости все помнить. В некоторых случаях программы прямо писали в ассемблере, так как удавалось делать самые быстрые игры. Так как компьютеры тогда были ужасно медленные и на Бейсике получались вообще тормозные игры. Был компьютер PK86, который имел быстрый экран за счет алфавитно-символьного вывода, там игры хоть и были квадратные, зато были динамичными. С появлением IBM PC появился язык С, который был языком высокого уровня и на нем было эффективно писать программы, чем кодировать их по байтам. Сегодня никто даже не пишет коды, а использует развитые библиотеки, где практически все есть. В последнее время программированием занялся искусственный интеллект, который не только умеет создавать код, но и тестировать его, а в случае обнаружения проблем - устранять их.
Вау! Это я удачно зашёл
Был у меня когда то Пентагон-128 в отдельном системном блоке с двумя дисководами. Пользовался ассемблером GENS-4D и отладчиком MONS-4D. Была у меня еще книжка "Как написать игру на ассемблере", по ней и изучал. Был у меня и Си компилятор HiSoft C Compiler. Изучал на нем Си по легендарной "Белой книге" Кернигана и Ричи. Программы на Си работали заметно медленнее аналогичных на ассемблере, но все же сильно быстрее, чем интерпретируемые на Бэйсике. Славное было время :-)
Ох. С удовольствием досмотрел видео! Было приятно посмотреть и очень хочется повторить. Чем и планирую заняться вскоре.
Привет, от меня лайк и подписка. Я с 90 г. в этой теме !
Супер! Спасибо!
Щас я проверяю звук у нас у вещания все ли хорошо. Щас я проверяю звук у нас у вещания все ли хорошо. Щас я проверяю звук у вещания все ли хорошо. Ага все отлично😆
разобрался с эмулятором fuse
если выбирать file-open и образ дискеты с ALASM, то он требует rom от скорпион256 и в нём срабатывает автозапуск утилиты восстановления. А всё потому что в скорпионе tr-dos не даёт командную строку и пытается сразу запустить дискету. если дискеты нет, система выходит на первое меню выбора что запускать tr-dos или бэйсик.
А вот если выбрать rom pentagon128 в нём tr-dos работает корректно и автозапуска дискеты нет, командная строка работает и команда list показывает список файлов.
а дискета подключается media-disk-driveA-insert
А запуск и просмотр дискеты происходит по команде
list
Run "alasm42"
всё забыл за 30 лет )))
Хех, да, всё верно, мы использовали конфигурацию Пентагона-128К, которая и была у меня самого в 90-ых. :) Скорпиона в наших краях не водилось, или я таковых не знал. Ленинград, Пентагон или местные варианты с радио-заводов. Но мы так-то для основных проектов, стараемся ориентироваться на оригинальный Спектрум. :) Дополнительно, команды алазм-а можно посмотреть в текстовом файле, который идёт в комплекте. ;)
Давно хотел вникнуть в ассемблер Z80. Может теперь получитcя :)
Получилось?
Лучше этот канал не смореть враньё на вранье. Самодельщина и выдумки. Трдос была в мизерном колве. Это не тот легендарный спектрум. Это тр-дос с дисками, которых не было ни у кого, от слова совсем. Спек был на магнитофоне и памяти 48к. А здесь пентагон128. Да ещё в эмуляторе ;))) хватит пудрить моск наивным людям.
У полстраны был ленинград 48к Зонова, а не эта хрень. Отписывайтесь и не смотрите эту фантастическую хрень.;)
@@jenix102 Чудила, смотри комментарий Alone Coder "ALASM 4.46 работает на 48K. Но надо учесть, что он занимает #8000..#bfff под себя, #c000.. под исходник (затирается в процессе компиляции), ...#ffff под метки." Можешь приступать на своём убогом 48к 🙂
Как же лампово. Подписался.
Отписывайся, тут враньё на вранье
@@jenix102 Ты больной 🙂
круто!
CPU. могу представить "технологический" комп. прошивка для того чтобы играть AY-шную музыку. Всё есть. всё работает. с 90-х лежит. Есть ещё: картридж для спекки.
FIFO - "первый вошол - первый вышел".
экранную область тоже можно использовать как изменяемую область! для переадресации !
Очень интересно!
У вас есть редактор, мы прямо в машинном коде писали.
Эх, суровое было время! Да, этот редактор еще относительно удобен. До этого были разные ZEUS-ы и другие простые инструменты. Но да, первые попытки в машинный код обычно делались через POKE и DATA, набранные в ручную. :)
Ну я в бейстке тоже коды набивал, но не практично это....
Епа мать ALASM ... уахахахаха TASM юзал , самый лучший был
24:50 В официальной документации по ROM процедура #1601 называется CHAN_OPEN
Если использовать официальные названия - проще понимать (на заметку!)
Собственно название и подставили, но да, возможно что если будет соответствие между официальными названиями из ПЗУ и в коде, то будет лучше для восприятия. Но у нас пока что, кроме работы с ТР-ДОС-ом более вызовов не планируется. Ну или совсем всё будет круто и мы реулизуем возможность движка с подгрузкой. :)
И есть на спек хорошие ассемлеры, забыл название но максимум 16 ул кода. Так как одна страница была всего для когда, но очень быстро грузил куски данных с диска и include.
Немного не ясно описано, но если что ALASM как раз грузит исходный код в дополнительные страницы. Используется синтаксис INCLUDE "FILE", MEMORY PAGE. Дополнительно по ассемблерам можно посмотреть на speccy.info.
Так это иине спек, это трдос, дисклвая система на пентагоне 128. К тому же на эмуляторе )) короче чушь и враньём погоняет.
Спек был массовым от 1 до 1,5 млн штук в россии, а трдос это 10 тыс штук. Очень узкая прослойка.
@@jenix102 Чувак, тебя заклинило, проспись !!!
Только есть небольшое пожелание. Прикрепите, пожалуйста, ссылку на справочник. А то не очень ясен был момент с вызовом подпрограммы. Я примерно представляю, как оно там устроено, как бы я реализовал. Но хотелось бы подробнее сразу прочитать. Почему записаны адрес строки и ее длина были именно в эти регистры. Было бы полезно.
потому что подпрограмма печати принимает параметры в этих регистрах
А нельзя ли после строки объявить ещё одну переменную и находить длину строки как разницу адресов?
Можно и так, функционал вроде бы в ALASM-е поддерживается но поскольку у нас тут был очень простой и быстрый пример, то ограничились подсчетом на глазок! :)
только зашел на стрим. допишите? помню были скрины видать с компрессией. о чем пишем на следующем стриме расскажите сразу. я я как понял что то хотите представить похожее на приключения вилли
Остальные видео смотрите здесь же на канале, есть плейлист. У нас по общему программирования в планах осталось видео с анимацией простой и дальше в планах только движок для простой игры, но это будет уже наверное ближе к конце года, спасибо за поддержку! :)
А rst #16 не?
Можно использовать и стандартное прерывание. Но тут были вопросы. Первые самодельные Спектрумы могли иметь проблемы с прерываниями. Стандартные прерывания вроде бы у всех работали, но т.к. рисковать особенно не хотелось, то были справочники, где адреса функции Бейсика приводились, поэтому и здесь по старой памяти появился просто вызов. :)
Где взять образ конкретно этого ALASM? И как его прикрутить к FUSE? . По вашей ссылке открывается какой то файл реаниматор просит сканировать диски, подключал файлы и ALASM509_STS75 и ALASM508
надо на этом диске запускать программу "alasm42"
@@alonecoder600 так он ни на какие клавиши не реагирует, считывает каталог на дискете и всё. а всё разобрался сам. у меня автостарт стоял.
никаких задержек луча в оригинале небыло... как вы вообще представляете себе задержку луча элт ?!
Хм, возможно не удачно выразились. Луч понятно не останавливается совсем. Но есть активная область отрисовки и возврат в левую верхнюю точку, когда и начинается формирование нового кадра на экране ЭЛТ. Для VGA адаптера например это была еще и возможность посылать импульсы синхронизации и возможность отслеживать процессором, порты 0x3DA(0x3BA), Vertical Retrace. Для Спектрума и его возможных модификаций посмотрим подробнее уже на "Дневниках разработки №7", но в целом отрисовка и прерывания совпадали по тайминнгу, ~50 кадров в сек.
Лусше этот канал не смореть враньё на вранье. Самодельщина и ввдумки. Трдос была в мищерном колве. Это не тот легендареый спектрум. Это трдос с дисками, которых не было ни у кого, от слова совсем. Спек был на магнитофоне и памяти 48к. А здесь пентагон128. Да ещё в эмуляторе ;)))
@@jenix102 🤣🤣🤣
Было (обратный ход луча) и не только это, ещё в оригинале была медленная память и быстрая память из-за конфликта для отрисовки видео.
@@jenix102 Чувак, ты несёшь какую-то дичь, иди играй в свой 48к спек на магнитофоне и памяти 48к не в эмуляторе, не порть настроение людям ! У меня есть и 48к и аналог Scorpion ZS 256 и ZX Evolution, и меня твоя классика нисколько не конторит, все Спеки хороши, включая эмулятор !
Запилите пожалуйста видео просто как подключить этот Аласм к эмулятору, как его запустить и как начать на нём писать, а то начать невозможно..
Постараемся выпустить подобное краткое видео для тех кто начинает. :) Однако если хочется именно изучать программирование, то мы порекомендуем смотреть в сторону Питона, как более доступного языка программирования для новичков. Ну или у нас на канале чуть посложнее, есть разбор школьныых задач по программированию. :)
@@8BitTeaParty Ребята решили что могут программировать сразу на nightmare уровне ))) ...поддерживаю, пусть (хотя бы) basic выучат )
@@8BitTeaParty Не, Питон хоть и проще начать, но от сути программирования он держит на парсеки. Не уверен, что ассемблер лучше. Надо всего понемножку пробовать и изучать, это самый верный способ: Питон, Си/Си++, Ассемблер, обязательно Лисп (Common Lisp и Scheme имеют сильно разный подход), Prolog пощупать надо. На Спеке не зазорно и с Бейсика начать 🙂
@@starwalker.odessa тут ещё и дурачки бегают вокруг, советуют, как заразиться программированием и стать дурачком или идиотом. 🤣
Alasm,- gno, zxasm 3.00 -ок, xasm (для xl Малов) это асмы для програминга
ZXAsm - в целом был неплохой редактор, более того мы сначала хотели использовать его. Но он всё таки был немного сыроват. Работа с памятью, некоторые функции по конвертации исходников и многое по мелочи. Но самое главное - для вещания он точно не подходил, т.к. имел свой внутренний упакованный формат представления, который чтобы достать потом в текст, пришлось бы изучить его и написать инструмент. Иначе у нас бы в репозитории не было бы кода, который могли посмотреть/загрузить другие. :) XASM - ом не пользовались, поэтому сложно что-то сказать. :)
R Tape Loading Error, 0:1.
Охренеть, вы набераете кодовую базу для игр... ?чем помочь? .,.по теории база - хорошая!
Учился сам по книге И вначале вообще gems грузил с кассеты. 2 минуты сброс. И опять гружу.
Наверное имелся ввиду GENS. Да, он был одним из первых. По современным меркам он очень простой и использовать его затруднительно. Но по сравнению с редактированием чистого машинного кода - это уже было шагом вперед. Сам не использовал его, но видел как применяли другие. У меня уже был ZX-ASM и TR-DOS. :)
Интересно,а на чём сам ассемблер писали?🤔
Он сам себя компилирует.
На другом ассемблере, а самый первый ассемблер был написан непосредственно в кодах.
я в кодах писал
На машинных кодах 🤣
Скорее всего на более высоких языках, в то время для спектрума это было нормально.
Z80 работает на 3.5Мгц. На 3.5ГГц работает мой двухведерный атлон
Удивительно, но в видео говорится ровно о том же!
@@saszab пардон, видимо пропустил этот момент
@@saszab Александр ошибся и написал вместо MHz, Hhz, но это просто опечатка :)
@@MustangDSG Hhz - это тоже не GHz, так что всё равно претензия Евгения мимо кассы :-)
Самое смешное, что в z80, фактически, тоже два ядра.
Что за текстовый редактор с нестандартным размером знакоместа 6×6?
ALASM
В ответе на закрепленный комментарий есть ссылка на скачивание редактора и дополнительные утилиты. Ну или загляните в плейлист "Дневники разработки" - можно использовать и современные инструменты.
Вопрос: запустится ли ALASM на Ленинград-48? Хочется, так сказать, на натурном железе потискать.
Увы, насколько мы пробовали, то в режиме 48 килобайт - именно эта версия АЛАЗМ-а не запускается, для хранения исходников и других параметров требуются дополнительные страницы памяти. Драйвера были для разных машин и модификаций, Пентагон, Скорпион, Кэй и т.д. до 1024Кб. Но для 48К кажется нет. Но посмотрим подробнее ответ в следующих дневниках разработки или может еще подскажут какой классный был для 48К.
@@8BitTeaParty ALASM 4.46 работает на 48K. Но надо учесть, что он занимает #8000..#bfff под себя, #c000.. под исходник (затирается в процессе компиляции), ...#ffff под метки.
Собственно у полстраны Ленинград 48 ,А здесь вообще неизвестно О чём говорят. Отписывайтесь лучше и не слушайте эту хрень
Так же ничего не сказано было о комбинациях нажатий. То есть горячие клавиши. На сохранение. Работа с отладчиком и так далее.
Да мне тоже не хватает, но это есть в доках по ALASM. Есть инглиш доки в виде Word или PDF файла и в самом дистрибутиве ALASM тоже есть в виде H файлов, можно открыть его же редактором.
Сказали частота процессора 3.5 МГц, а написали какую-то чехорду))
;CPU: Zilog Z80, 3.5HhZ
Да, это опечатка
да, и "monochrome" прописано с ошибкой
А почему под переменную выделили память именно в 0000? Ведь можно было бы между стеком и самой программой.
Уточните пожалуйста строку... Хм, так-то у нас программа стартует с 24 килобайт адресного пространства. Т.е. 16к - ПЗУ, потом экран 6+ килобайт и немного системных переменных. Если имеется ввиду директива DEFW или DEFB, то они просто заполняются нулями эти ячейки и всё. Это просто инициализация, они располагаются по адресу, сразу следующими за адресом команды RET. Ширина шины данных для Спектрума была 8 бит, поэтому выравнивания данных нет. ;)
@@8BitTeaParty Спасибо за ответ) А где можно новичку посмотреть распределение памяти подробнее? Узнать, что занято ОС, что занято экраном, что занято самой утилитой ALASM? Просто не ясно, сколько действительно памяти мне доступно для написания софта и в каких регионах. 6+ - не совсем ясно звучит. Нужно знать точное значение...
"Если имеется ввиду директива DEFW или DEFB, то они просто заполняются нулями эти ячейки и всё. Это просто инициализация, они располагаются по адресу, сразу следующими за адресом команды RET. Ширина шины данных для Спектрума была 8 бит, поэтому выравнивания данных нет. ;)"
А... Вот оно как работает. Я думал, что DEFW - это объявление указателя на переменную... Вообще, чтобы не задавать таких тупых вопросов больше, где можно посмотреть синтаксис ALASM? Просто там же свои фишки, отличные от описания стандартного синтаксиса. Я вот например следующее видео все осилить не могу. Там вы используете команду OR без второго операнда. Понятно из контекста, что OR E делает это с аккумулятором A, т.к. в нем ранее велась работа. Но вот дойти до этого самому - сложно Есть ли где-то документ, на подобии ассемблера у AVR? Просто таблица на 3 страницы где у каждой команды описаны варианты синтаксиса.
@@8BitTeaParty Я посмотрел здесь файл помощи. Но он скорее руководство к программе-редактору, чем к ассемблеру. Там на zx-pk есть doc версия.
В 0000 не получится, там ПЗУ
@@IExSet да уже ответили, что там одно адресное пространство)
Скажите, что за справочник, где взять?
Издательство «Инфорком» (Москва 1993) - ПЕРСОНАЛЬНЫЙ КОМПЬЮТЕР "ZX-SPECTRUM". Программирование в машинных кодах и на языке АССЕМБЛЕРА. Можно воспользоваться поиском.
@@8BitTeaParty Спасибо!
Ой, как то так плохо все говорят, я если бы не знал ассемблера на z80 не понял бы нифига.
Понимать не обязательно, можно просто смотреть! :)
Отлично всё говорят, слишком подробно даже
Кстати говоря. Не сразу дошло, что скомпилированная программа так же ляжет в ОЗУ... Привык уже, что все равно в постоянке лежит. Как в микроконтроллерах или на компьютере...
На компьютере тоже не всегда на диск падает, полно систем где компиляция происходит в память, начиная с Common Lisp, заканчивая всякими Pythonами.
@@IExSet python неудачный пример. Ибо он скриптовый. Хотя тот же байт-код можно положить и в ПЗУ.
В целом да, верно, но тут именно что у нас есть внешняя система и эмулятор машины, Спектрума. И поэтому и появляется такая возможность, вынести всё во вне её. Чуть подробнее в серии дневников разработки. Также в любом случае рекомендуем всем сохраняться всегда перед запуском. :)
@@user-rl8bu2hc8t Насчет Питона тут можно и покомпилировать при желании. :) Но да, для Бейсика используется собственный байт-код, интерпретатор располагается в ПЗУ и там же жестко записаны базовые функции. Поэтому и формат Бейсика относительно компактный по объему занимаемой памяти.
@@user-rl8bu2hc8t Да тот же Forth тоже скриптовый, рядом с жёстким машинным кодом :-) Сам язык Питон относится к динамически типизированным, как тот же Common Lisp, оба с указанием и выводом типов превращаются в статически типизированные и компилируемые в целевой проц. У Common Lisp эта проблема УЖЕ давно решена, он хоть и жирен, но довольно эффективен на оптимизированных участках (на уровне C/C++), используются и векторные расширения для арифметики, причём оптимизировать можно лишь узкие места, наплевав на указания типов и оптимизацию не критических мест (которые выполняются < 10% времени). В принципе асм спека мог бы сразу валить объектный код на диск через TR-DOS (или NedoOS на новых ATM Turbo совместимых спеках). Но памяти и так дофига, на новых 256 страниц 4 мега всё таки.
А как запустить Alasm на Fuse? Как вообще всё это настроить..?
По ссылке в закрепленном комментарии можно скачать с сайта архив и образ дискеты, файл .TRD. После этого во Fuse, "Media->Disk->Beta->Drive A->Insert...". Монтируйте дискету и дальше уже через ТР-ДОС. Если ТР-ДОС-а нету в вашей конфигурации(меню РОМ). Для быстроты можно воспользоваться эмулятором UnrealSpeccy. Там уже ТР-ДОС есть по умолчанию и ALT+F1 - меню и там вклада Beta128. Аналогично монтируем образ. Скачать можно там же на странице AloneCoder-a. alonecoder.nedopc.com/zx/
@@8BitTeaParty Спасибо, буду пробовать так сделать.
@@8BitTeaParty ребятушки 2 года конечно прошло, но что такое 2 года против 30 лет , пролистал все комменты , вынесите в заголовок или в отельное видео пошагово как включается эмуль, грузится дискета, какие клавиши. так будет удобнее )))
а то я образ дискета скачал, она на автозапуске мне гонит листинг файлов и потом выходит. а за 30 лет порядком подзабыл как с дискетами на спектруме работать ))
а да и еще скачал сначала эмулятор fuse а в нём не все rom были, искал недостающие ))) образ дискеты с ALASM требовал ромов от скорпиона 256 почему-то
А если я хочу "в продакшен" утилиту, то я могу как-то скомпилированную программу сохранить? Чтобы запускать с дискеты или по аудио каналу там...
Конечно можете, иначе зачем нужен ассемблер. Но потребуется загрузчик. Надо сохранить CODE файлы из областей памяти, а затем BASIC загрузчик при запуске должен их загрузить типа LOAD"MYEXE"CODE MEMADDRESS.
SAVEOBJ*.H - сохраняет любое количество кусков кода из любых страниц в разные файлы с заданными именами.
m2hr*.H - пакует непрерывный кусок хрустом2 и склеивает программу с бейсик-загрузчиком.
mrip*.H - то же, но пакует мрипом (сильнее).
Вариантов решения много образы кассет, дискет памяти, завтра утром будет опубликовано видео, если еще не успели посмотреть на трансляции, и там немного затронем эту тему, вариант с памятью. :)
в комплекте есть исходник SAVEOBJ (может сохранять много блоков, но без загрузчика) и исходники m2hr и mrip (могут сохранять один блок с загрузчиком, упакованный).
Давно хотел протокол I2C на реальном Спектруме запилить. Может поможете?
в спектруме таймера нет, это извращение
Полюключите ардуино к портам
@@SergeDzus зачем тогда реализация на Спектруме? :) это уже реализация на atmega328, а код как туда грузить будешь? через ВВ55 или ИР23? atmega не успеет шину в Z переводить, или последовательно загружать как на магнитофон?
тогда надо делать обвес, ИР23 на данные и мелкороссыпь на запись/чтение
Хм, насчет I2C уверенности нет, разве что кто-то реализует отдельно подобный функционал. Но тут как верно заметили, воспользоваться чем-то современным по железу будет сильно проще. Мы будем работать с некотороми портами(уже настраивали прерывания), но в целом для Спектрума возможно поработаем с простой переферией.
@@8BitTeaParty Хотелось бы увидеть код для I2C. По железу это реализовать просто, хоть через порт#31 на чтение и порт #FE на запись и резистор. Хотелось бы подключить некоторые I2C микросхемы через Спектрум.
я обычно пишу код а потом иду по факторингу.кода время экономится ребята я вижу что з80 лупите по уму
Что делаете ?
А, почему не MASM?
@BitsCode Уже почитал, про Аласм. Прикольный проект. Я остановился на TASM и MASM, и дебагеге STS (вроде так он назывался), последующие уже не застал.
@BitsCode worldofspectrum.org/software?id=0021423 - MASM был для Спектрума, но это другой MASM.
Почему не С ?
Си для x86 есть тут - th-cam.com/play/PL0mHYOOrrdC0qxi6hK--R5AW9GmRKcfsA.html , а для Спектрума Си - язык со слишком высоким уровнем абстракции от железа
Про высокий уровень для Спектрума уже отметили, но дополним, что именно на ассемблере писать код - самое интересное и кусочек ностальгии. ;) Частично Бейсик есть в "Дневниках разработки" посмотрите в листах, Бейсик был значимым языком в те времена! ;)
1) Памяти мало. В 48kb нужно вместить и комплилятор C, и исходники программы и получаемую программу, и данные. Это сложно, если программа не совсем мелкая.
Хорошие функциональные программы и особенно игры на ZX-Spectrum обычно занимали бОльшую часть оперативной памяти.
Хотя я подозреваю, что вывернувшись наизнанку, можно было и на C как-то писать, компилируя кусками и выгружая комплилятор, собирать и тестировать на откомпилированном коде, и потом обратно загружать компилятор, но, наверное, проще было привыкнуть к ассемблеру.
2) Ассемблер дает больше свободы, чем Си. В случае с ZX-Spectrum, учитывая его медлительность и необходимость экономить каждый байт (не килобайт, а байт), на ассемблере можно придумывать разные "хаки", "жонглируя" регистрами, а никакой компилятор так не может.
@@ArtZ0777 я имел в виду кросс-компилятор Си.. На самом спекки ясно дело так не получится.
@@alexlozhkin1907 а-а, простите, я неправильно понял.
Страшно Вас слушать, господа программисты, мой любимый asm-xl-desidn там ошибок нет и все четко
Не использовали ASM-XL - поэтому сложно что-то сказать, но если удобно пользоваться именно им - то выбор за каждым. ALASM - пока что за исключением пары моментов, когда команда была написана с синтаксической ошибкой у меня, то ассемблер сработал, а по факту появились другие машинные коды, заметил только отладчиком. В остальном АЛАЗМ работает и претензий нет. :)
Полвидео вписывал комментарии... Нахрена? Ты думаешь, смотрят те, кто не понимает?
Мы стараемся быть понятными широкой аудитории и для тех кто впервые, возможно, нашел видео/канал. Для тех кто более опытен, всегда можно перемотать видео или ускорить. Также порекомендуем отличный канал Дмитрия, "Alone Coder" - там уровень для "тех кто понимает". :) th-cam.com/video/sNhMh_TW7BY/w-d-xo.html
Мне 17, я этих компов уже не застал. О программировании начал узнавать с Паскаля и Джавы. Так что очень даже спасибо им за такие подробности.
Я давно писал под Z80, уже всё забыл, комментарии очнь помогли. Как по мне - в ролике всё по теме, ничего лишнего.
@@yar0607 В принципе и сейчас можно ударить по X64 ассемблеру, хотя лучше и теплее начать с ретро 🙂
@@8BitTeaParty и правильно. комменты вещь нужная
зачем это в 2023 году ?..
Затем же, зачем будет и в 2024-м: для веселья, для отдыха, для любопытства... Фундаментальные основы информатики не поменялись с тех пор.
@@8BitTeaParty так полезнее было бы учить для арм или х86. зачем тратить время на некрофилию?
@@jemmini2 а для чего люди играют, коллекционируют монеты, клеят масштабные модели, пишут комментарии под видео, которые им не интересны? Зачем тратить время?
Ну, кроме того что мы сами отдыхали и получали удовольствие от ностальгии... ;) В целом, для изучения низкоуровневого программирования и понимания логики минимального набора команд, с помощью которого строится любая вычислимая(рекурсивная) функция можно использовать и подобный ассемблер. Практика и общее понимание поможет в написании и обычного кода на любом языке программирования. Единственное, что Спектрум не очень может быть удобен в плане архитектуры и редактирования кода. Для тех кто впервые знакомится, можем порекомендовать ДОС и процессор 8086 - там более удобный редактор ДосНавигатор и система команд немного полегче, чем для Z80. :)
@@BitsCode одинаковая система команд. но для 86 это можно будет применять практически, здесь и сейчас, как есть. а для z80 знания останутся лишь как чисто теоретические...
Что тут можно сказать - дисковые версии это оооочень узкая прослойка людей, те про неё говорить, что это массовый комп ? Это враньё, тем более пентагон 128. Это идёт речь об 10 тысячах людей, от силы.
Настрящий же спектрум, который легендарный и массовый (от 1 до 1,5 млн штук в россии только) это и близко не про это видео.
Вобщем видео про неизвестно что, запудривание мозгов молодым дуракам. Чистое араньё короче.
Ты чего такой злой, спектрумист 🙂Требования в этом видео, спектрум 128, не обязательно Пентагон. TR-DOS был сравнительно массовым на просторах СССР, энтузиастов осталось мало, какие уж там миллионы, нет никакого смысла рассматривать что то иное. Вообще рекомендую приобрести ZX Evolution с NEO GS и сетевухой и радоваться жизни !!!