PDA

Просмотр полной версии : Пишем на ассемблере под эмулятором



GM BIT
26.06.2009, 07:36
Для создания программы на ассемблере под эмулятором скачиваем пакет основных программ (программы выбраны сугубо индивидуально, по такому же принципу используется любая удобная связка):

Spectaculator – эмулятор ZX с простым интерфейсом
http://trd.speccy.cz/emulz/SPECT701.ZIP эмулятор
http://trd.speccy.cz/emulz/SP701PCR.ZIP таблетка

Crimson Editor 3.70 Release – обычный текстовый редактор, где непосредственно и будет редактироваться текст программы
http://www.crimsoneditor.com/download/cedt370r.exe

ASAM Compiler By Rob F. / Entire Group – компилятор нужен для превращения текстового файла в готовый код с созданием образа диска и выгрузкой кодового блока на этот образ

Far manager + ZX plugins – файловый менеджер позволяющий редактировать образ *.trd
http://zxfiles.ru/downloads.php?id=511

1. Устанавливаем Spectaculator

2. Устанавливаем Crimson Editor

3. Далее прикручиваем к редактору компилятор вызываемый по нажатию Ctrl+1
Tools → Preferences → User Tools (горячие кнопочки)
Рис.1
В Menu text пишем название т.е. Компилятор
В Command прописываем путь к компилятору
В Argument указываем, текущий текстовый файл + .txt и дописываем собственно файл с командами z80.cmd (в пакете с компилятором)
В Inital Dir указываем текущую директорию

В результате нажатия Ctrl+1 получаем компиляцию (ассемблирование) текстового файла открытого в данный момент и сохраненного в папке с компилятором.

4. Далее прикручиваем к редактору эмулятор вызываемый по нажатию Ctrl+2.
Рис.2
В Menu text пишем название т.е. Эмулятор
В Command прописываем путь к Эмулятору
В Argument указываем образ диска *.trd который будет запущен сразу после загрузки эмулятора

В результате нажатия Ctrl+2 получаем запуск эмулятора вместе с *.trd образом диска (в данном случае probe.trd).

5. По такому же принципу на Ctrl+3 навешиваем файл менеджер.
В Menu text пишем название т.е. Файл менеджер
В Command прописываем путь к Менеджеру

В результате нажатия Ctrl+3 получаем запуск файл менеджера для редактирования *.trd образа.

Вот в принципе и все, что надо для первого раза.

----------------------------------------------------------------------

Пишем в редакторе простой пример:

CreateImage "probe.trd"
;создание образа диска probe.trd для последующей записи откомпилированной программы
org #8000
di
halt
;сам код программы (задумались навсегда)
SaveTRD "probe.trd",'dihalt.C',#8000,2
;выгружаем кодовый блок с адреса #8000 размером два байта

Сохраняем текстовый файл в папочку с компилятором и нажимаем Ctrl+1 в результате получаем созданный образ probe.trd в той же папочке а уже в нем имеем файл dihalt.C (в этом можно убедиться нажав Ctrl+3 и открыть probe.trd)

------------------------------------------------------------------------

Для запуска кодового блока в эмуляторе надо написать загрузчик в Бейсик (можно конечно для этого и ASAM использовать).

Запускаем Spectaculator
Подключаем образ:
View – Disk Driver
Находим наш probe.trd выбираем и разрешаем запись на образ (открыть замочек)

Выходим в 48 BASIC
пишем:
10 RANDOMIZE USR 15619: REM: LOAD “dihalt” CODE
20 RANDOMIZE USR 32768
и выгружаем
RANDOMIZE USR 15619: REM: SAVE “boot”

В результате имеем уже второй файл (бейсик загрузчик кодового блока) на образе probe.trd
Закрываем Spectaculator

------------------------------------------------------------------------

* После первой компиляции необходимо закомментировать строку CreateImage "probe.trd" т.к. повторная компиляция создаст новый и чистенький образ "probe.trd"

------------------------------------------------------------------------

Кому надо расскрасить команды скачиваем архив с двумя файлами
(z80-asm.spc и z80-asm.key) распаковываем его в папку Crimson'a SPEC

Далее Tools → Preferences → Syntax Type на первой свободной Syntax Type пишем:
Description: Z80
Lang Spec: Прописываем путь к файлу z80-asm.spc
KeyWords: Прописываем путь к файлу z80-asm.key

Далее: Document → Syntax Type → Z80

И наслаждаемся листом программы в цвете

GM BIT
26.06.2009, 08:27
Для пробы файл scroll.txt
Компилируем, создаем загрузчик и запускаем.

nyuk
26.06.2009, 11:57
Интересно, но многое спорно.

Моя связка:
Эмулятор UnrealSpeccy
Есть встроенный отладчик, загрузка меток из исходника.

Редактор Notepad++
Пробовал так же CrimsonEditor, UltraEdit, MultiEdit... дело вкуса. Кстати, в тексте ни слова про настройку подсветки синтаксиса, а оно есть на форуме, в том числе и про CrimsonEditor есть, но нужно искать.

Ассемблер SJASMPlus (http://www.zx.pk.ru/showthread.php?t=447)
ASAM не пробовал, поэтому сравнивать не могу.

Работа с *.trd через FAR Manager + xTRD.
Все-таки, под виндой виндовые инструменты работают лучше.


А еще вот можно почитать:
http://www.zx.pk.ru/showthread.php?t=4327
http://www.zx.pk.ru/showthread.php?t=4175

Evgeny Muchkin
26.06.2009, 12:41
off: а я бы такой скролл проще бы скодил ;) ггг... ;)

TomCaT
26.06.2009, 14:21
off: не верим, однако... ;)

Evgeny Muchkin
26.06.2009, 14:43
off: почему не верим? ;)

Kurles
26.06.2009, 15:53
off: не верим, однако... ;)конкурс на самый оптимальный вариант попиксельного скролла устройте :)

---------- Post added at 15:53 ---------- Previous post was at 15:44 ----------


Для создания программы на ассемблере под эмулятором скачиваем пакет основных программ (программы выбраны сугубо индивидуально, по такому же принципу используется любая удобная связка):
Компромиссом самописному IDE, заточеному под программинг на спеке, я думаю, был бы автоматический инсталятор такой связки, что бы пользователю оставалось выбрать место, куда эту связку запихать :) Что-то типа этого (http://zx.pk.ru/showpost.php?p=191617&postcount=989), только плюс настроенные редактор и ассемблер.

AAA
26.06.2009, 16:20
А для даунов можно сделать болванку с пояснениями на ассемблере, которая:

1. определяет орг 25000
2 бордюр делает определенного цвета
3. загружает и выводит картинку
4. эквалайзер простенький трехлепестковый с пояснениями что где менять. чтобы по экрану двигать
5. музон грузит и запускает
6. скролл шрифт арт студийный 3 х килобайтный загружает
7. скролл пишется непосредственно в коде+ раскладка по кнопкам русского и английского.

Хочу сделать дему бест 1. :v2_wink2:

Желательно с пояснениями что конкретно и где менять, чтобы по экрану двигать, т.к.. потом охота делать демы бест 2,3,4,5.

GM BIT
26.06.2009, 17:29
Если scroll (пост #2) у тебя откомпилился и ты его запустил тогда можно :)

Addison
26.06.2009, 17:32
Для создания программы на ассемблере под эмулятором
Любой эмулятор со встроенным ассемблером подойдет.
Например, эмулятор В.Кладова ZXwin.
Я пользуюсь эмулятором Spin, у него прекрасный встроенный ассемблер и дебагер.
После написания программы просто ассемблируешь ее в озу эмулируемого спека, а там блок сохраняй как хочешь в зависимости от модели Спектрума либо в тап, либо в трд, либо в дск...

Здесь нет никакой проблемы.

rasmer
26.06.2009, 17:52
для венды сджасм+анрыл+фарманагер(ка� � брайзер трд образов, так и редактор асм-исходняков с раскраской от аига) РУЛЯТ ИМХО ПАЛЮБАСУ!!!!... а так... - " "у каждого свой вкус" сказал индус снимая с члена обезьяну"...

Mat1sha
26.06.2009, 18:12
rasmer, где кстати плагин для FAR-а взять и как его поставить? Чтобы ESN не юзать, а то тормозит безбожно, да и незачем файловые менеджеры плодить.

nyuk
26.06.2009, 18:27
rasmer, где кстати плагин для FAR-а взять и как его поставить? Чтобы ESN не юзать, а то тормозит безбожно, да и незачем файловые менеджеры плодить.
http://thex.untergrund.net

По минимуму это: xTRD, xSCL, xCreate. Но лучше брать всё.
Скоприровать в каталог плагинов и перезапустить фар.

Ewgeny7
26.06.2009, 21:02
Скоприровать в каталог плагинов и перезапустить фар
Скопировал. Получилось типа так: FAR\Plugins\ZX\xTRD\ и так далее.
Не хотит работать :(
Пишет, что не прочитать ини файлы у всех плагинов.

nyuk
26.06.2009, 22:58
Посмотрел у себя.
Каталог Far\Plugins\xFAR
В нем так:
xCreate
xFORMAT
xHRiP
xiSD
xLOOK
xSCL
xTRD
xZXZIP
TYPES.INI
xCreate.txt
xHRiP.txt
XiSD.txt
xSCL.txt
xTRD.txt
xZXZIP.txt

Внутри ничего не правил. Вроде бы.

Aprisobal
27.06.2009, 02:07
Неверное название топика. Прочитав, подумал, что автор будет писать о "нативных" ассемблерах: ALASM, TASM и другие.

Правильнее: Пишем на ассемблере Z80 вместе с PC :)

Ewgeny7
27.06.2009, 17:42
Нифига не получается :(
Всё упирается в мессаджи "Can't read ini". В меню плагинов F11 появились форматирование и создание ТР-ДОС образов" но работать они отказываются. При попытке "войти" в .trd или .scl просто запускается Спектакулятор.
Какая версия ФАРа нужна? Я розыскал в локалке версию 1,8. Древняя, как г...о мамонта...

rasmer
27.06.2009, 17:46
1.8 древняя????
тогда вот уж точно у меня работало с farpowerpack 1.13

GM BIT
27.06.2009, 17:58
Согласен ESN тормозит, перешел на Far.
http://zxfiles.ru/downloads.php?id=511 Far Manager v2.0 build 981 x86 + Plagins for ZX

rasmer
27.06.2009, 18:34
ещё советую найти колорер с раскраской спктрумовских асмовых команд... оч удобно...

Ewgeny7
27.06.2009, 19:31
GM BIT, всё работает! Спасибо!

GM BIT
27.06.2009, 19:42
У меня чего-то с архивами барахлит :(

rasmer
27.06.2009, 21:57
это... в наименовании папки со спектрумовскими читалками первым символом поставь "_" - подчёркивание.

Kurles
28.06.2009, 00:37
ещё советую найти колорер с раскраской спктрумовских асмовых команд... оч удобно...Лет 5 назад, как только у меня появился плагин colorer настроил раскраску под спековский асм :)

rasmer
28.06.2009, 01:15
вывали сюда... просто я уже щас ненайду это факт где я свой качал...

Ewgeny7
28.06.2009, 13:00
Накопал тут у себя на винте такой ассемблер Z80 для ПЦ.
Откуда он - непомню. Я и спользовал его для написания коротеньких прог для отладки "Ориона". В общем, забирайте кому надо.

Rubts0FF
28.06.2009, 15:46
Х-м, и что ж у вас от спека осталось .., мнемоники .., зачем, писали бы для ПЦ.
Мой выбор, любой эмуль (у меня Шалаев), любой родной zx-ассемблер.

Kurles
28.06.2009, 17:38
Х-м, и что ж у вас от спека осталось ..,
Целевая платформа :)

GM BIT
28.06.2009, 19:37
По раскраске обновил пост #1

GM BIT
29.06.2009, 07:10
Все загрузки через бейсик в boot, остальное в ассемблере

Kurles
29.06.2009, 09:42
Все загрузки через бейсик в boot, остальное в ассемблереАнализаторы забыл прикрутить :)

GM BIT
29.06.2009, 11:03
Пусть будет с анализаторами :)

elf/2
29.06.2009, 12:28
Согласен ESN тормозит, перешел на Far.
http://zxfiles.ru/downloads.php?id=511 Far Manager v2.0 build 981 x86 + Plagins for ZX

в паке не хватает xLook'a и theX.pvd с PictureView :)

snb
29.06.2009, 18:01
Накопал тут у себя на винте такой ассемблер Z80 для ПЦ.
Называется Z80 PC Assembler, автор Peter Hanratty


Откуда он - непомню.
Наверняка из этого набора (http://www.z80.info/z80sdt.htm) :-)


Я и спользовал его для написания коротеньких прог для отладки "Ориона". В общем, забирайте кому надо.
Отличная вещь, но есть пара "засад": не понимает команды типа:

ld yh,FFh
ld yl,a
И не указывает место, где возникла ошибка при компиляции. Как дебил потом сидишь и разбираешься в многозначительной фразе "Invalid, missed or duplicated label".А ежели у меня этих меток дофига? То-то...

Впрочем, при использовании метода из сообщ. №1 тоже нифига не понятно, что там компилятор в консоль валит (строка с ошибкой и т.д.).

Короче, идеал пока недостижим...

GM BIT
04.09.2011, 10:57
Для создания программы в ассемблере Z80 на PC под эмулятором скачиваем пакет основных программ (программы выбраны сугубо индивидуально, по такому же принципу используется любая удобная связка):

Spectaculator – эмулятор ZX с простым интерфейсом

Crimson Editor 3.70 Release – обычный текстовый редактор, где непосредственно и будет редактироваться текст программы

SjASMPlus Z80 кросс ассемблер – компилятор нужен для превращения текстового файла в готовый код либо в снапшоте либо с формированием файла на trd образе (как это делается написано в help к SjASM)

1. Устанавливаем Spectaculator

2. Устанавливаем Crimson Editor

3. Далее прикручиваем к редактору компилятор вызываемый по нажатию F4
Tools → Preferences → User Tools (горячие кнопочки)
Рис.1
1. В Menu text пишем название т.е. Assembly
2. В Command прописываем путь к компилятору (к sjasmplus.exe)
3. В Argument указываем, текущий текстовый файл $(FileName) (стрелочка справа)
4. В Inital Dir указываем текущую директорию $(FileDir) (стрелочка справа)
5. В окошке Hot Key нажимаем F4 (или другую, кому как нравится)

В результате нажатия F4 получаем компиляцию (ассемблирование) текстового файла открытого в данный момент.
В этом же окне поставьте галочку Capture output (внизу появится окошко где будет виден результат компиляции)


4. Далее прикручиваем к редактору эмулятор вызываемый по нажатию F1.
Рис.2
1. В Menu text пишем название т.е. Emul
2. В Command прописываем путь к Эмулятору (к Spectaculator.exe)
3. В Argument указываем заголовок откоплилированного файла $(FileTitle) (кнопка справа) и дописываем .sna который будет запущен сразу после загрузки эмулятора
4. В окошке Hot Key нажимаем F1 (или другую, кому как нравится)

В результате нажатия F1 получаем запуск эмулятора и откомпилированного SNA файла.

Вот в принципе и все, что надо для первого раза.

----------------------------------------------------------------------

Пишем в редакторе простой пример:


device zxspectrum128
org #6000
ei
xor a
out (254),a
ld hl,23295
ld (hl),a
or (hl)
dec hl
jr z,$-3
jr $
savesna "probe.sna",#6000

В примере делаем очистку экрана, бордюр черным и зависание

Сохраняем текстовый файл с именем probe. Имя файла обязательно должно совпадать с тем, что написано в savesna. Если кто знает, как автоматически в тексте в savesna ставить "имя текстового файла" (типа $FileName) поделитесь, у меня не получилось
Нажатие F4 – получаем снапшот написанного
Нажатие F1 – получаем запуск эмулятора и Вашего снапшота (и любуемся написанным)

------------------------------------------------------------------------

Кому надо расскрасить команды скачиваем архив с двумя файлами
(z80-asm.spc и z80-asm.key) распаковываем его в папку Crimson'a SPEC

Далее Tools → Preferences → Syntax Type на первой свободной Syntax Type пишем:
Description: Z80
Lang Spec: Прописываем путь к файлу z80-asm.spc
KeyWords: Прописываем путь к файлу z80-asm.key

Далее: Document → Syntax Type → Z80

И наслаждаемся листом программы в цвете

http://s45.radikal.ru/i107/1109/b6/719805c953ed.jpg (http://www.radikal.ru)

http://s03.radikal.ru/i176/1109/01/cda367427ce0.jpg (http://www.radikal.ru)[COLOR="Silver"]

---------- Post added at 10:57 ---------- Previous post was at 10:52 ----------

РЕЗУЛЬТАТ В ДВА НАЖАТИЯ

palsw
04.09.2011, 12:41
Всё настроил по мануалу ,кнопки срабатывают :)
хотел узнать сильно отличается этот асм от GENS4?не компилируется простейшая программка(я только учусь -написал что первое в голову пришло для проверки)
http://s61.radikal.ru/i173/1109/14/012537b2851d.jpg (http://www.radikal.ru)

Andrew771
04.09.2011, 12:42
В эмуляторе EmuZWin встроенный ассемблер и отладчик. Я в нем сижу, удобно.

palsw
04.09.2011, 12:46
В эмуляторе EmuZWin встроенный ассемблер и отладчик. Я в нем сижу, удобно.

я вообще сижу на реале и набираю программки в GENS4 по книжке "Как написать игру на асме" и пока всё запускалось и работало как нада :)

http://s19.radikal.ru/i192/1109/aa/b356a6505489.jpg (http://www.radikal.ru)

Shadow Maker
04.09.2011, 12:52
palsw, ну ты зачем впритык-то написал. надо минимум 1 пробел спереди, а то он считает, что это или инструкция, или метка.

---------- Post added at 12:51 ---------- Previous post was at 12:48 ----------


Всё настроил по мануалу ,кнопки срабатывают :)
хотел узнать сильно отличается этот асм от GENS4?не компилируется простейшая программка(я только учусь -написал что первое в голову пришло для проверки)
Не сильно. Во-первых ENT надо без $, и так понятно, где надо. Во-вторых, тут он вообще не нужен, этот ENT, он используется только, если у тебя программа будет ассемблироваться в другой адрес, соответственно в паре с командой DISP (прочитай в документации, там описано). Так что убери её совсем и у тебя все заработает.

---------- Post added at 12:52 ---------- Previous post was at 12:51 ----------


РЕЗУЛЬТАТ В ДВА НАЖАТИЯ
Можно и в одно, если побольше аргументов написать или батник какой запускать, если кримсон не понимает.

Titus
04.09.2011, 12:56
В эмуляторе EmuZWin встроенный ассемблер и отладчик. Я в нем сижу, удобно.
Отладчик там хороший, а вот ассемблер очень тихий, фиг два поймешь, чего ему не нравится, если где ошибку допустил.

palsw
04.09.2011, 13:10
разобрался.под win7 эта связка будет работать?
http://s015.radikal.ru/i330/1109/1d/ccd8992cd589.jpg (http://www.radikal.ru)

GM BIT
04.09.2011, 13:28
разобрался.под win7 эта связка будет работать?
наверное будет :)

---------- Post added at 13:16 ---------- Previous post was at 13:12 ----------


хотел узнать сильно отличается этот асм от GENS4?не компилируется простейшая программка(я только учусь -написал что первое в голову пришло для проверки)
Надо обязательно писать некоторые строчки для компилятора
В моем примере - это строка 1 и последняя

---------- Post added at 13:20 ---------- Previous post was at 13:16 ----------


В эмуляторе EmuZWin встроенный ассемблер и отладчик. Я в нем сижу, удобно.
Я пока то же но решил попробывать Sjasm.

Обновил пост убрав строчку с меткой start в примере

---------- Post added at 13:28 ---------- Previous post was at 13:20 ----------


palsw, ну ты зачем впритык-то написал. надо минимум 1 пробел спереди, а то он считает, что это или инструкция, или метка.
Кстати у меня в примере написано с пробелами, почему форум их не отображает неизвестно

Shadow Maker
04.09.2011, 13:37
Надо тэг форума [ code] [ /code] использовать, потому что форум считает, что у тебя там стандартный текст, в котором не надо лишние пробелы показывать.

Тогда будет вот так:


device zxspectrum128
org #6000
ei
xor a
out (254),a
ld hl,23295
ld (hl),a
or (hl)
dec hl
jr z,$-3
jr $
savesna "probe.sna",#6000

palsw
04.09.2011, 13:43
Можете меня поздравить -написал первую программку с головы и она работает (значит не даром книжки читаю :))


device zxspectrum48
org 60000
start

ld b,255
ruun ld a,0
out (254),a
nop
ld a,7
out (254),a
nop
ld a,1
out (254),a
nop
dec b
jr nz,ruun
jp start
ret

GM BIT
04.09.2011, 13:47
Молодца!!!!!!!

Andrew771
04.09.2011, 13:50
Сообщение от Andrew771
В эмуляторе EmuZWin встроенный ассемблер и отладчик. Я в нем сижу, удобно.
Отладчик там хороший, а вот ассемблер очень тихий, фиг два поймешь, чего ему не нравится, если где ошибку допустил.
Я сам так раньше думал, но оказывается нужно в окне ассемблера подвинуть вверх сплиттер внизу, тогда откроется окошко, показывающее ошибки при компиляции. Если тыкать на эти ошибки, то показывается строка с ошибкой в коде.

GM BIT
04.09.2011, 14:15
Sjasm также указывает на строку с ошибкой
Если включить Capture output внизу будет окошко с результатом, тыкаеть по ошибке и автоматом попадаешь на ошибку в тексте

---------- Post added at 14:15 ---------- Previous post was at 13:59 ----------

А в Crimson'е кто-нибудь работает? Какие фишки в нем есть?
Допустим у меня есть моя библиотека процедурок (.txt)
Как допустим пишешь down_hl в редакторе а он вставляет в текст программы


down_hl
inc h
ld a,h
and 7
ret nz
ld a,l
add a,32
ld l,a
ret c
ld a,h
sub 8
ld h,a
ret

palsw
04.09.2011, 16:13
есть маленький вопрос где почитать описание самого ассемблера на русском (директивы)
а сейчас подскажите как вводить например опрос клавиш?

device zxspectrum48
ORG 60000

XOR A
LD (23560),A ;в системную переменную LAST_K (код
; последней нажатой клавиши) заносится 0
LOOP LD A,(23560) ;из этой системной переменной
; считывается значение кода нажатой клавиши
CP "P" ;сравнение двух кодов - находящегося
; в регистре A и символа P
JR NZ,LOOP ;если результат сравнения не равен 0,
; то переход на метку LOOP, если 0,
RET

savesna "probe.sna",#6000
на клавишу "P" не реагирует.если вместо "P" постоавить "0" тогда реагирует на 0 .как же прописать тогда клавиши?


KEY XOR A
LD (23560),A
MET1 LD A,(23560)
CP "P" ;сравнение двух кодов
; Если результат сравнения не равен нулю (то есть нажата не P),
; то переход на метку MET2, после которой проверяются нажатия других клавиш
JR NZ,MET2
LD DE,TXT1
PRINT LD BC,5 ;вывод на экран символа,
CALL 8252 ; соответствующего нажатой клавише
LD A,13
RST 16
JR KEY ;переход на начало программы
MET2 CP "O" ;проверка нажатия клавиши O
JR NZ,MET3
LD DE,TXT2
JR PRINT
MET3 CP "Q" ;проверка нажатия клавиши Q
JR NZ,MET4
LD DE,TXT3
JR PRINT
MET4 CP "A" ;проверка нажатия клавиши A
JR NZ,MET5
LD DE,TXT4
JR PRINT
MET5 CP "0" ;проверка нажатия клавиши 0
JR NZ,MET1 ;если коды не совпадают,
; повторяем все сначала
RET ; иначе - выход из программы
; Данные для печати
TXT1 DEFM "KEY P"
TXT2 DEFM "KEY O"
TXT3 DEFM "KEY Q"
TXT4 DEFM "KEY A"

После того как вы нажмете клавишу P, O, Q или A, программа напечатает в левом верхнем углу экрана одну из фраз, перечисленных в блоке данных, например, «KEY Q».

Shadow Maker
04.09.2011, 16:26
маленькую p поставь или с капсом нажимай

palsw
04.09.2011, 17:26
маленькую p поставь или с капсом нажимай

не работает ни с капсом ни маленькими буквами.на реале в GENS4 все эти примеры работают корректно

Shadow Maker
04.09.2011, 17:37
Ну поставь EI в начало - заработает. Только печатать не будет через RST 16, естессно. У тебя ж в снапшоте бейсик не инициализирован, а ты через его вызовы пытаешься печатать. И буквы маленькие не забудь.

Вообще если хочешь через RST 16, то лучше кодовый блок записывать, а не снапшот, потом в эмуляторе его грузить. Или бейсик-загрузчик написать и записывать в trd. А то без инициализации бейсика это работать не будет.

palsw
04.09.2011, 18:11
Ну поставь EI в начало - заработает. Только печатать не будет через RST 16, естессно. У тебя ж в снапшоте бейсик не инициализирован, а ты через его вызовы пытаешься печатать.

спасибо за ответ.я понял что мне еще рано на этот ассемблер переходить -слишком он сложный для начала.Буду в Gens4 дальше на реале всё набивать и на дискетку сохранять.там всё хоть работает :)

добавление EI не дало результата,а вот замена букв на цифры 6,7,8,9,0 -работает !так в чём прикол с буковками?


device zxspectrum48
ORG 60000
EI
XOR A
CALL 8859
LD A,68
LD (23693),A
CALL 3435
LD A,2
CALL 5633
; Î÷èñòêà ñòðîêè äëÿ ââîäà èìåíè
LD HL,NAME
LD DE,NAME+1
LD BC,19
LD (HL)," "
LDIR
; Âûâîä òàáëèöû ñèìâîëîâ â ðàìêå
CALL TABL
CALL LINES
LD A,68
LD (23693),A
LD BC,#506 ;íà÷àëüíûå êîîðäèíàòû êóðñîðà â òàáëèöå
LD E,0 ;íîìåð ñèìâîëà â ñòðîêå ââîäà
SET 3,(IY+48) ;ðåæèì ââîäà ïðîïèñíûõ áóêâ
; Óïðàâëåíèå êóðñîðîì è ïå÷àòü âûáðàííîãî ñèìâîëà â ñòðîêó
KEYS CALL SETCUR ;âûâîä êóðñîðà
XOR A
LD (23560),A
WAIT LD A,(23560) ;îæèäàíèå íàæàòèÿ êëàâèøè
AND A
JR Z,WAIT
CP "6" ;ïåðåìåùåíèå êóðñîðà íà
JR Z,RIGHT ; îäèí øàã âïðàâî
CP "7" ;ïåðåìåùåíèå êóðñîðà
JR Z,LEFT ; íà îäèí øàã âëåâî
CP "9" ;ïåðåìåùåíèå êóðñîðà
JR Z,UP ; íà îäèí øàã ââåðõ
CP "8" ;ïåðåìåùåíèå êóðñîðà
JR Z,DOWN ; íà îäèí øàã âíèç
CP "0" ;ïå÷àòü âûáðàííîãî ñèìâîëà
JR Z,SELECT ; â ñòðîêå ââîäà
JR KEYS
; Ïåðåìåùåíèå êóðñîðà âïðàâî
RIGHT LD A,C ;ïðîâåðêà äîñòèæåíèÿ êóðñîðîì
CP 24 ; ïðàâîé ãðàíèöû òàáëèöû
JR NC,KEYS
CALL RESCUR ;óäàëåíèå êóðñîðà íà ïðåæíåì ìåñòå
INC C ;èçìåíåíèå ïîëîæåíèÿ êóðñîðà
INC C
CALL SETCUR ;óñòàíîâêà êóðñîðà íà áóêâó òàáëèöû
JR KEYS
; Ïåðåìåùåíèå êóðñîðà âëåâî
LEFT LD A,C ;ïðîâåðêà äîñòèæåíèÿ êóðñîðîì
CP 7 ; ëåâîé ãðàíèöû òàáëèöû
JR C,KEYS
CALL RESCUR
DEC C
DEC C
CALL SETCUR
JR KEYS
; Ïåðåìåùåíèå êóðñîðà ââåðõ
UP LD A,B ;ïðîâåðêà äîñòèæåíèÿ êóðñîðîì
CP 6 ; âåðõíåé ãðàíèöû òàáëèöû
JR C,KEYS
CALL RESCUR
DEC B
DEC B
CALL SETCUR
JR KEYS
; Ïåðåìåùåíèå êóðñîðà âíèç
DOWN LD A,B ;ïðîâåðêà äîñòèæåíèÿ êóðñîðîì
CP 11 ; íèæíåé ãðàíèöû òàáëèöû
JR NC,KEYS
CALL RESCUR
INC B
INC B
CALL SETCUR
JR KEYS
; Âûáîð ñèìâîëà, êîòîðûé çàòåì áóäåò íàïå÷àòàí â ñòðîêå èëè âûáîð
; ôóíêöèè äëÿ ðåäàêòèðîâàíèÿ ýòîé ñòðîêè
SELECT PUSH BC
PUSH DE
CALL SND ;çâóêîâîé ñèãíàë, èçäàâàåìûé ïðè
; ïåðåìåùåíèè ñèìâîëà èç òàáëèöû â
; íàáèðàåìóþ ñòðîêó
POP DE
POP BC
LD A,B
CP 11
JR NZ,MOVE ;ïå÷àòü ñèìâîëà
LD A,C
CP 20
JR Z,DELETE ;óäàëåíèå ñèìâîëà â ñòðîêå
CP 22
JR Z,SPACE ;ïå÷àòü ïðîáåëà â ñòðîêå
CP 24
RET Z ;âûõîä èç ïðîãðàììû
; Ïåðåìåùàåì ñèìâîë èç òàáëèöû â íàáèðàåìóþ ñòðîêó è ñìåùàåì êóðñîð
; íà ïîçèöèþ âïðàâî, ïðè ýòîì äåëàåì ïðîâåðêó òîãî, ÷òîáû ñèìâîë
; íå âûøåë çà çàäàííûå ãðàíèöû ñòðîêè (ñëåâà è ñïðàâà).
MOVE LD A,E
CP 20
JP NC,KEYS
LD D,0
PUSH BC
PUSH DE
LD A,B ;ïî âåðòèêàëüíîé êîîðäèíàòå êóðñîðà
; îïðåäåëÿåì àäðåñ äàííûõ ñòðîêè
; òàáëèöû (STR1, STR2, STR3 èëè STR4)
SUB 5
LD HL,D_STR
LD E,A
ADD HL,DE
LD E,(HL)
INC HL
LD D,(HL)
EX DE,HL
LD A,C ;ïî ãîðèçîíòàëüíîé êîîðäèíàòå íàõîäèì
; êîä ñèìâîëà â áëîêå äàííûõ
SUB 6
LD C,A
LD B,0
ADD HL,BC
POP DE
POP BC
LD A,(HL) ;ïîìåùàåì êîä ñèìâîëà â A
LD HL,NAME ;îïðåäåëÿåì àäðåñ â ñòðîêå NAME
ADD HL,DE ; äëÿ ââîäà ñèìâîëà
LD (HL),A ;ïîìåùàåì ñèìâîë â ñòðîêó ââîäà
CALL PR_STR ;âûâîäèì ñòðîêó ââîäà íà ýêðàí
INC E ;ñìåùàåì ïîçèöèþ ââîäà âïåðåä
JP KEYS
; Óäàëåíèå íåïðàâèëüíî íàáðàííîãî ñèìâîëà
DELETE LD A,E ;ïðîâåðêà äîñòèæåíèÿ íà÷àëà ñòðîêè ââîäà
AND A
JP Z,KEYS
DEC E ;óìåíüøàåì ïîçèöèþ ââîäà
LD D,0
LD HL,NAME
ADD HL,DE
LD (HL)," " ;çàìåíÿåì óäàëÿåìûé ñèìâîë ïðîáåëîì
CALL PR_STR
JP KEYS
; Ââîä ïðîáåëà
SPACE LD A,E ;ïðîâåðêà äîñòèæåíèÿ êîíöà ñòðîêè ââîäà
CP 20
JP NC,KEYS
LD D,0
LD HL,NAME
ADD HL,DE
LD (HL)," "
CALL PR_STR
INC E ;óâåëè÷èâàåì ïîçèöèþ ââîäà
JP KEYS
; Âûâîä êóðñîðà èçìåíåíèåì áàéòà àòðèáóòîâ
RESCUR LD A,68 ;PAPER 0, INK 4, BRIGHT 1
JR PRATTR
; Óäàëåíèå êóðñîðà âîññòàíîâëåíèåì áàéòà àòðèáóòîâ
SETCUR LD A,79 ;PAPER 1, INK 7, BRIGHT 1
; Âû÷èñëÿåì àäðåñ àòðèáóòîâ çíàêîìåñòà è çàíîñèì
; ïî ýòîìó àäðåñó áàéò èç àêêóìóëÿòîðà
PRATTR LD L,B
LD H,0
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
PUSH AF
LD A,H
ADD A,#58
LD H,A
LD A,L
ADD A,C
LD L,A
POP AF
LD (HL),A
RET
; Ïîäïðîãðàììà ïå÷àòè òàáëèöû ñèìâîëîâ
TABL LD DE,STR
LD BC,LENSTR
JP 8252
; Ïîäïðîãðàììà ïå÷àòè ââåäåííîé ñòðîêè
PR_STR PUSH BC
PUSH DE
LD DE,STR5
LD BC,LENLIN
CALL 8252
POP DE
POP BC
RET
; Ïîäïðîãðàììà ðèñîâàíèÿ ðàìêè
LINES EXX
PUSH HL
LD A,66
LD (23695),A
LD BC,#8A2C ;B = 138, C = 44
CALL 8933
LD DE,#101
LD BC,160 ;B = 0, C = 160
CALL 9402
LD DE,#FF01
LD BC,#3D00 ;B = 61, C = 0
CALL 9402
LD DE,#1FF
LD BC,160
CALL 9402
LD DE,#101
LD BC,#3D00
CALL 9402
POP HL
EXX
RET
; Êîðîòêèé çâóêîâîé ñèãíàë
SND LD B,30
LD HL,350
LD DE,2
SND1 PUSH BC
PUSH DE
PUSH HL
CALL 949
POP HL
POP DE
POP BC
SBC HL,DE
DJNZ SND1
RET
; Äàííûå òàáëèöû ñèìâîëîâ
STR DEFB 22,5,6
STR1 DEFM "1 2 3 4 5 6 7 8 9 0" ;ñèìâîëû ÷åðåç îäèí ïðîáåë
DEFB 22,7,6
STR2 DEFM "A B C D E F G H I J"
DEFB 22,9,6
STR3 DEFM "K L M N O P Q R S T"
DEFB 22,11,6
STR4 DEFM "U V W X Y Z . d s e"
STR5 DEFB 22,19,5,16,5,">",16,2
NAME DEFM "····················"
DEFB 16,5,"<"
LENSTR EQU $-STR ;&#228;&#235;&#232;&#237;&#224; &#241;&#242;&#240;&#238;&#234;&#232; &#228;&#235;&#255; &#239;&#229;&#247;&#224;&#242;&#232; &#242;&#224;&#225;&#235;&#232;&#246;&#251;
LENLIN EQU $-STR5 ;&#228;&#235;&#232;&#237;&#224; &#241;&#242;&#240;&#238;&#234;&#232; &#226;&#226;&#238;&#228;&#224; &#232;&#236;&#229;&#237;&#232;
; &#192;&#228;&#240;&#229;&#241;&#224; &#228;&#224;&#237;&#237;&#251;&#245; &#241;&#232;&#236;&#226;&#238;&#235;&#238;&#226; &#226; &#242;&#224;&#225;&#235;&#232;&#246;&#229;
D_STR DEFW STR1,STR2,STR3,STR4

savesna "probe.sna",#6000

---------- Post added at 17:11 ---------- Previous post was at 16:57 ----------

только на пробел программа тоже не реагирует.только цифры ...

AER
04.09.2011, 18:14
Буду в Gens4 дальше на реале
а я в TASM

Shadow Maker
04.09.2011, 18:25
только на пробел программа тоже не реагирует.только цифры ...
Ну прочитай в той книжке, по который ты набиваешь, про прерывания.
Прикол в том, что в этой переменной (KSTATE вроде она называется) данные появляются посредством бейсиковых прерываний (раз в прерывание обновляются данные). При старте из снапшота бейсик убит, и (я чет не помню, откуда там берется таблица соответствий кодов клавиш) по этой причине коды клавиш, которые суются в #5c08 - другие, а не те, какие надо, видимо только цифровым повезло, правильные коды вставляются. Дальше там у тебя в книжке должно быть написано про нормальную обработку клавиш через порт #fe, вот им лучше пользуйся, наиболее здравый метод.

NovaStorm
04.09.2011, 20:15
>про нормальную обработку клавиш через порт #fe
Угу, про ПЗУ лучше вообще не вспоминать, оно так гораздо проще выходит =)

Andrew771
04.09.2011, 21:08
После команды LD (23560),A поставь команду HALT - дождаться прерывания. А EI, если до этого не было DI, ничего не дает.
А вообще, лучше применяй из этой же книжки другую процедуру опроса клавиш - по портам, а не по кодам клавиш.

GM BIT
06.09.2011, 07:43
Прикрутил 3 эмулятора под запуск снапшота. Spectaculator, EmuzWin, Unrel

Как написать бат файл для эмуляторов EmuzWin, Unrel - чтоб не открывался второй, третий и т.д. эмулятор, а открывался как Spectaculator однократно? Возможно это?

Buyan
06.09.2011, 08:18
Как вариант, можно перед запуском снапшота убивать уже запущенный процесс командой taskkill, например
taskkill /F /IM emuzwin.exe

GM BIT
06.09.2011, 09:10
А передать аргумент (имя снапшота) в уже открытый эмулятор, или я глупость говорю

Andrew771
06.09.2011, 14:28
добавление EI не дало результата,а вот замена букв на цифры 6,7,8,9,0 -работает !так в чём прикол с буковками?
В общем, проверка в эмуляторе EmuZWin показала, что буквы нужно вставлять обязательно заглавные и в апострофах, а не в кавычках. А лучше еще - коды нужных клавиш в числовом виде. Тогда всё нормально работает.
Команду HALT ставить не обязательно, но я ставлю, т.к. высер

XOR A
LD (23560),A
WAIT LD A,(23560)
AND A
JR Z,WAIT

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

palsw
06.09.2011, 14:34
EmuZWin cкачал эмуль -ассемблер в нём мне нравиться .буду разбираться с ним.думаю тему новую создать по этому эмулю для вопросов.есть только 1 проблема - на работе winXP работает всё как нада ,а дома WIN7 -эмуль запускается но в окне его не видно эмуляции самого спектрума (окно просто молоко).

Andrew771
06.09.2011, 15:34
EmuZWin cкачал эмуль -ассемблер в нём мне нравиться .буду разбираться с ним.думаю тему новую создать по этому эмулю для вопросов.есть только 1 проблема - на работе winXP работает всё как нада ,а дома WIN7 -эмуль запускается но в окне его не видно эмуляции самого спектрума (окно просто молоко).
Такая тема уже есть, можно туда писать: http://zx.pk.ru/showthread.php?t=1345&highlight=emuzwin
А насчет Win7 не знаю. В свойствах файла emuzwin.exe может можно поставить совместимость?

Asd1995sse
22.09.2011, 21:43
ASAM Compiler By Rob F. / Entire Group
не скачивается. Есть у когонить киньте на [email protected]

GM BIT
03.10.2011, 20:17
Добавил в первый пост компилятор ASAM

denpopov
24.08.2014, 06:57
Называется Z80 PC Assembler, автор Peter Hanratty

Тысяча извинений за некроап темы. почему-то ассемблер не понимает out (c),a и похожие команды..

jerri
24.08.2014, 14:37
denpopov, используй sjasm

denpopov
24.08.2014, 14:50
denpopov, используй sjasm
ладно, повторю сказанное на канале: я не помню байткоды всех команд, онлайн справочник не катит, в готовый справочник иногда лень лезть, вот я и подумал, что ассемблер пригоден для таких целей. Глупо, наверное..

jerri
26.08.2014, 10:20
denpopov, ммм?

если не понимает out (C),a
то либо ты гдето неправильно написал либо глючит сам компилятор

denpopov
30.08.2014, 21:28
если не понимает out (C),a
то либо ты гдето неправильно написал либо глючит сам компилятор

попробуй сам, если сомневаешься..

Shadow Maker
31.08.2014, 03:55
Тысяча извинений за некроап темы. почему-то ассемблер не понимает out (c),a и похожие команды..
А он не знает, что есть такая команда, для него все ауты - это только в порт типа OUT (255),A

Ну запиши опкод на бумажке для этого аута тогда, раз он нужен. Вообще если влом смотреть байткод - открыл какой-нибудь Unreal и в дебаггере написал команду, слева посмотрел опкод.

drbars
02.09.2014, 11:38
denpopov, когда-то на GENS'е не писал? Он много команд не знал, но разве это нас останавливало?:)

denpopov
02.09.2014, 12:08
denpopov, когда-то на GENS'е не писал? Он много команд не знал, но разве это нас останавливало?

нет. начинал с ZEUS на кассете, потом купил дисковод и понеслись - ZEUS, адаптированный под диск, а потом STORM вытеснил все.

кстати, не помню, ZEUS понимал половинки IX/IY?

ZX_КМV
15.07.2016, 15:35
Попробовал связку Spectaculator + Crimson Editor 3.70 Release + SjASMPlus Z80 кросс ассемблер, все настроил как GM BIT выше подробно написал, но не пойму как полученный снапшот запустить на эмуляторе, у меня после нажатия F1 запускается Spectaculator, но ругается на снапшот-файл и фигвам, потому что это не объектный файл типа tap, а обычный текстовый. Наверняка что-то у меня с руками, подскажите, что я не так делаю, очень хочется чтобы в эмуляторе можно было проверять свои художества .

Заранее благодарен за объяснения.

- - - Добавлено - - -


В эмуляторе EmuZWin встроенный ассемблер и отладчик. Я в нем сижу, удобно. Попробовал EnumZWin, запустил в нем Assembler, скомпилировал, зашел в debug, но не хватает у меня мозгов КАК запустить мой asm код в эмуляторе EmuZWin, чтобы увидеть результат!!! Подскажите как запустить ассемблерный код, или его надо сначала как то в tap файл превратить?

Hacker VBI
15.07.2016, 15:47
ZX_КМV, так скомпилируй и на выходе сделай что-то типа
savesna "dcdd.sna", start

старт - это точка входа
org #8000
start
di
ld sp,#bfff

и потом уже открывай сна в эмуле

Reobne
15.07.2016, 18:20
EmuZWin, чтобы увидеть результат!!! Подскажите как запустить ассемблерный код
В нужном месте программы нужно написать:
entrypoint $
Что переводится: "Точка входа тут".
После компиляции сразу запуститься с нужного места. (только с паузы сняться)
И консольное окно с результатом компиляции внизу спрятано, если есть ошибки. Двойной щёлк на ошибке - попадаем на неё в тексте.

А если в дебагере, то PC нужно подредактировать на начало исполнения, но это муторнее.

Titus
15.07.2016, 18:54
И консольное окно с результатом компиляции внизу спрятано, если есть ошибки. Двойной щёлк на ошибке - попадаем на неё в тексте.

А если в дебагере, то PC нужно подредактировать на начало исполнения, но это муторнее.

Окно так запрятно, что я раньше даже не знал, что можно смотреть ошибки) Писал без ошибок)

А что дебаггере? Вроде, когда откомпилируешь, там кнопочка есть типа PC на ней написано, и можно сразу нажав перейти в начало твоей программы и запуститься.

Reobne
15.07.2016, 20:04
Я только entrypoint $ пользовался.


там кнопочка есть типа PC
Это, возможно, перезапустить программу без компиляции. А я постоянно компиляцией запускал, F4.
F12 - переключиться между дебагером и редактором.