Просмотр полной версии : Как в Spectrum бейсике вставить код ассемблера?
KJIaBogaB
21.09.2022, 00:06
В Паскале IBM совместимого ПК легко:
var a:integer;
begin
asm
mov bx,10
mov a,bx
end;
writeln(a);
end.
Я раньше так и осваивал ассемблер в 90-е.
А в бейсике для спека я устал гуглить. Везде только указывается, как подготовить текст ассемблера для компиляции в программе.
А как из приглашения бейсика, когда моргает курсор "K" ?
Скорее всего, как я понял - никак :) писать в машинных кодах сразу после компиляции по бумажке? Так что ли делали раньше? :)
Просто в той же книге "Как написать игру на ассемблере для ZX Spectrum" - приводится много интересных примеров на асме, но бейсик эти тексты не воспринимает :)
Я запустил дельту-с 128, БК-0010-01 - ни в одном из их бейсиков не работает :)
А если загрузить с кассеты ассемблер - то в нём пишем, сохраняем на кассету и потом уже загружаем программу через load " " ?
Spectramine
21.09.2022, 00:54
А как из приглашения бейсика, когда моргает курсор "K" ?
Никак.
писать в машинных кодах сразу после компиляции по бумажке? Так что ли делали раньше?
Кто как. Либо набирали код в мониторе, либо компилировали из ассемблера, либо пихали POKE-ами.
- - - Добавлено - - -
А если загрузить с кассеты ассемблер - то в нём пишем, сохраняем на кассету и потом уже загружаем программу через load " " ?
В нем пишем, компилируем, можно скомпилировать в заранее зарезервированное место в бейсик-программе после REM, можно в свободную область памяти. Сохраняем соответственно либо SAVE "имя", либо SAVE "имя" CODE начало,длина. И загружаем соответственно.
приводится много интересных примеров на асме
..а перед этим целая инструкция по работе с ассемблером =)
Еще один экзотический вариант - массив DATA и забивать в память через POKE, но к асму это уже не относится.
null_device
21.09.2022, 03:29
KJIaBogaB, на чистом спектрум-бейсике, короткий машкод обычно внедряют с начала программы, в пространство "забитое" необходимым количеством символов после команды REM.
Притом, именно машкодом, а не его командами. Для работы с ними как раз и загружают ассемблер-транслятор.
KJIaBogaB
21.09.2022, 04:47
Всё понял. Спасибо! Буду пробовать писать в эмуляторе, нет смысла "в живую" сидеть пол дня набирать код на не совсем удобной клавиатуре :)
Я испытал культурный шок со скорости обработки circle 50,50,50 :) Реально думал, что будет быстрее на Дельте-С 128. Помню как в школе в 1996 на 386sx под ДОСом на бейсике писали анимацию, 2 круга - колеса и прямоугольник - корпус машины - едет с левого края экрана в правый. Дак там прорисовывалось конечно шлейфом, но не так, как тут - один кружок без анимации - секунду целую :)
null_device
21.09.2022, 09:02
KJIaBogaB, в книжке "Диалекты бейсика zx-spextrum", объясняется причина медлительности выполнения программ на встроенном бейсике.
На реальном спектруме, работать с магнитофоном - то ещё "удовольствие". В частности времени на загрузку: монитора-ассемблера, листинга программы или кода, сохранение готовой программы или кода. Запуск полученного кода. В случае зависания или ошибки, начинать все по новой.
Я испытал культурный шок со скорости обработки circle 50,50,50
https://zxdemos.ru/uploads/images/93/bfbb4564f6488782f19899795640e7de.jpg
А мне у Вектора скорость Бейсика понравилась. Спектрум бейсик конечно, как одно из самых теплых воспоминаний из детства... Но все же...
нет смысла "в живую" сидеть пол дня набирать код на не совсем удобной клавиатуре
...когда понимаешь, о чем идет речь, но все равно не понимаешь, как может быть неудобной родная расширенная клава, под которую заточен весь доэмуляторный софт.
KJIaBogaB
21.09.2022, 16:59
...когда понимаешь, о чем идет речь, но все равно не понимаешь, как может быть неудобной родная расширенная клава, под которую заточен весь доэмуляторный софт.
Да сам не понимаю, как я мог до 3 ночи сидеть набирать одну свою старую программку и никак не мог оторваться :) Ну не понимаю я, щелкаю по клавишам. они залипают, дребежжат - но это какая-то магия!
Никто не поделится МП3 файлом любого совместимого бейсика для спека? Я скачал где-то коллекцию игр образов с кассет уже в МП3 - 2/3 не запустилась из-за авторского ограничения от копирования. Поиграл в те, что загрузились. Опять испытал культурный шок, но всё равно не мог оторваться от процесса...
И, кстати, можно ли со спека записывать в микрофон своего ПК результаты труда - или там уровни слабые и не получится?
или там уровни слабые и не получится?
наоборот, у Спека (наших клонов, по крайней мере) очень мощный сигнал, желательно сделать простейший "делитель" на резисторах, а потом втыкать в линейный вход
Что касается загрузки с PC - вроде же TZX/TAP плеер не такая уж и редкая штука, подключение выходов элементарное.. Проблем быть не должно.
Теперь к теме встраивания кода ассемблер-а в BASIC (не претендую на оригинальность) сначала командой CLEAR резервируешь область памяти для кодов ассемблера. Ну что-то в духе CLEAR 29999. Тогда с адреса 30000 бейсик память не тронет. Правда если программа на бейсике большая, то есть риск столкнуться с нехваткой памяти. Такие дела. Что касается набора кодов ассемблера - существует масса онлайн-редакторов существенно упрощающих задачу. Но мне вот GENS4 зашел. Хотя и очень древний. Толковый шрифт, простейший запуск и работа. Да, по возможностям он уступает тому же MASM. Зато без напрягов работает с кассетой, а именно это мне и требовалось. В эмуляторе то, в общем-то, все равно. Но при работе на реальном 48к спектруме удобство этого ассемблера более чем очевидно. Хотя большую программу на нем не набрать. Все сказанное сугубо имхо.
P.S. ну то есть сам редактор загрузить с адреса 30000, а вот оттранслированные программы будут храниться где-то с адреса 38000 что ли, или чуть повыше. Точно не помню, но ниже коды самого ассемблера. Так что таким макаром места под программы останется немного. Но пока, судя по всему, это и не нужно ). Вызов USR addr, addr - десятичный адрес нужной подпрограммы. В конце каждой подпрограммы ставить RET. А то без него всякое может быть на 48к, хотя местные вроде как и убеждали что он вроде как и не особо обязателен. Тут (https://zx-pk.ru/threads/34049-vopros-po-assembleru-z80.html) моя тема по программированию на ассемблере для ZX. И вот там то вопрос взаимодействия ассемблера и бейсика, по моим бестолковым вопросам, был рассмотрен очень подробно, за что спасибо местным гуру )
мне вот GENS4 зашел
он вроде с половинками IX/IY не умеет работать
он вроде с половинками IX/IY не умеет работать
Да он много чего не умеет. Но он умеет делать то, что мне нужно, без шаманских танцев с бубнами. Я ведь сразу отписал, что GENS очень древний и многого не умеет.
он умеет делать то, что мне нужно, без шаманских танцев с бубнами
ммм а какие танцы могут быть, например, в Аласме?
плюс в Генсе просто ужасный строчный редактор (редактирование уже набитых строк)
ммм а какие танцы могут быть, например, в Аласме?
плюс в Генсе просто ужасный строчный редактор (редактирование уже набитых строк)
ALASM я запустить так и не смог ;) в связи с чем он и был заброшен. Второе - в TRD же он. А человек, как и я, планирует с образами кассет работать. В ALASM 4.44 (вроде) я даже упоминания об этом не нашел. Reddie, я прекрасно понимаю, что Вы хотите сказать. Но почему то вот Вы не пытаетесь понять то, что говорю я ).
Black Cat / Era CG
22.09.2022, 06:35
Ну на кассете асмить -- это отдельный уровень ностальгии, конечно.
человек, как и я, планирует с образами кассет работать
а, ну тогда другое дело. это, как сказали выше, особый вид мазохизма =)
из кассетных есть еще Zeus, тоже дичь, но строчный редактор поудобней (имхо)
в защиту gens`a могу вспомнить что игра НЛО (очень крупный проект) была сделана в нём.
Spectramine
22.09.2022, 13:02
а, ну тогда другое дело. это, как сказали выше, особый вид мазохизма =)
из кассетных есть еще Zeus, тоже дичь, но строчный редактор поудобней (имхо)
В Zeus полноэкранный редактор с нумерацией строк, что выгодно отличало его от GENS. (Впрочем, мне и этого было мало в свое время, и я наваял к нему нормальный текстовый редактор без номеров строк, с копированием блоков и т.п.)
- - - Добавлено - - -
Чем ещё Zeus хорош - сжимает асмовские токены в однобайтовые коды, что неплохо ужимало исходники.
BlaireCas
22.09.2022, 13:10
Вот так вот и подумаешь мол "А как раньше люди кодили". Где-нибудь в 83-м году. Ну или в 85-м даже.
Возможно брали кроссплатформу какую-ту и кодили для спека 48к иначе ну а как на самом-же спеке накодить было игруху которая на всю память 48 килобайт?
Кусками видимо причем они еще и перемещаемые должны были быть, жуть да и только.
Black Cat / Era CG
22.09.2022, 13:12
Возможно брали кроссплатформу какую-ту и кодили для спека 48к иначе ну а как на самом-же спеке накодить было игруху которая на всю память 48 килобайт?
Кусками видимо причем они еще и перемещаемые должны были быть, жуть да и только.Так и было. При возможности юзали кросс-платформу, дисководы. А код не обязательно должен быть перемещаемым, если асм (генс например) перемещаемый.
В Zeus полноэкранный редактор с нумерацией строк
Уж что-то, а нумерация строк в любом асме - самая бесполезная вещь, смысла она несет ровно ноль.
Но, за неимением ндикаторов текущей строки и средств работы с группами строк, хотя бы так.
Spectramine
22.09.2022, 19:17
Уж что-то, а нумерация строк в любом асме - самая бесполезная вещь, смысла она несет ровно ноль. Смысла она несет ровно столько, сколько нужно для редактирования исходников ориентированными на пронумерованные строки редакторами - строчным, как в Gens, или экранным, как Zeus - без нумерации строк редактор с его идеологией просто невозможен (в отличие от Gens, где теоретически можно обойтись без номеров строк в памяти). Индикатор текущей строки и средства работы с группами строк - далеко не главное, что нужно для привычного текстового редактора - в Zeus индикатор текущей строки есть, это курсор, да и средства работы с группами строк можно организовать, ориентируясь на нумерацию (а может, они в нем и были штатно, уже не помню).
Andrew771
23.09.2022, 16:37
Возможно брали кроссплатформу какую-ту и кодили для спека 48к иначе ну а как на самом-же спеке накодить было игруху которая на всю память 48 килобайт?
Кусками видимо причем они еще и перемещаемые должны были быть, жуть да и только.
Так и было. При возможности юзали кросс-платформу, дисководы. А код не обязательно должен быть перемещаемым, если асм (генс например) перемещаемый.
Если графика/данные игры занимают больше половины памяти (а так обычно и бывает), то не всё так страшно. Кодируешь в асме, компилируешь, потом подгружаешь графику/данные из другого файла, запускаешь. Вуаля!
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot