Ну не то чтобы часто, но было бы крайне полезно. Хотя как вариант могу и SCL использовать. Его проще создать сразу и полностью. Но тоже несколько извратно :)
Вид для печати
Ну я думаю достаточно хотя бы сделать посекторную запись например во вновь созданный трд образ. Или еще как вариант возможность создания бейсик файла в соответствии с его форматом и заданным размером в секторах для создания моноблока и посекторным доступом к образу. Ну или как то так.
я думаю для счастья нужно только это:
1. запись блока данных в TAP в настраиваемом формате (можно сделать что заголовок формировать блоком DB, так будет гибче).
2. запись в TRD файла с произвольным заголовком (т.е. чтобы указывался тип файла, старт и длина (они могут отличаться от реальных!!!))
все это можно сделать даже внешней утилитой (нет такой? надо чтобы кто-нить сделал). и так же внешней утилитой склеивать файлы в TRD.
вопрос в том, надо ли все это реализовывать именно в ассемблере? я не уверен.
Незнаю бага или фича.
Вот кусок
вызывается такКод:MACRO DBG stat
ld a,stat ; !!!!
out (0xFF),a
ENDM
MACRO TESTMEM addr
ld hl, addr
ld a, ((addr >> 12) & 0x0F) | (((addr >> 8)^0xFF) & 0xF0)
ld (hl), a
nop
ld a, (hl)
DBG a ; !!!!!
ENDM
результат выглядит такКод:TESTMEM 0x0000
TESTMEM 0x4000
TESTMEM 0x8000
TESTMEM 0xC000
Как по мне можно имеет смысле викидывать 0078 7F то есть при развороте макроса DBG a, получилась инструкция ld a,aКод:58 0070 TESTMEM 0x0000
58 0070 21 00 00 > ld hl, addr
58 0073 3E F0 > ld a, ((addr >> 12) & 0x0F) | (((addr >> 8)^0xFF) & 0xF0)
58 0075 77 > ld (hl), a
58 0076 00 > nop
58 0077 7E > ld a, (hl)
58 0078 7F > ld a,stat ;!!!!
58 0079 D3 FF > out (0xFF),a
Я про этап разворота макроса...
Как вариант можно добавить возможность проверить что было передано в параметре макроса пусть даже в виде строки
багофича будет тогда, когда асм самовольно станет что-то оптимизировать.. а если я специально сделал такой макрос?
так что все ок.
Можно ли как нить изобразить что нить в таком духе ?
то есть проверяю что передан параметром регистр a, например заюзав каким то боком luaКод:MACRO DBG stat
if stat != 'a'
ld a,stat ; !!!!
endif
out (0xFF),a
ENDM
Граждане, подскажите как быть.
ассембер сий как я понимаю требует пробел перед инструкцией или метку,
а моя буржуйская прога TommyGun генерит defb-ы кучами без пробелов сначала
в результате компилятор страшно ругается и компилить отказывается.
как то бы с этим справится нельзя?
сделать поиск и замену 'defb' на ' defb'
2psb: не не катит))) при каждой компиляции файлы ресурсов поиском-заменой проходить не вариант, тем более их несколько. я сейчас поставил версию 1.05, в ней все нормально, почему в 1.07 убрали это не понимаю(
Написать обертку для генератора, которая будет вызывать оригинальную тулзу и делать пост-процессинг.
2Vitamin: Балин, ну очевидные идеи подсказываете. но этож маразм, так можно и до собственного ассемблера дойти. А времени свободного совсем мало, хочется под спек что-нибудь сделать, а больше времени гробится на написание левых утилит. Может афтар всеж сделает возможность писать инструкции без меток и пробелов вначале, тем более это уже было реализовано в версии 1.05. почему убрали?
2Aprisobal: Ха! как это нет логики? Во всех языках есть логика, а тут вдруг пропала? и в alasm даже помнится так можно было делать. ну ладна попробуем инглишь вспомнить и написать. А может можно какой патчик соорудить для тех кому это надо?
Второй вопрос:
Пытался сделать библиотеку, ну например собрать
в файлик interrupt.asm несколько процедур для старта - остановки - обработки im2 прерывания. ну в нем к примеру есть макрос im2start.
инклужу в основной блок
INCLUDE "lib/interrut.asm"
и потом делаю:
im2start vector,jump
в результате получаю Unrecognized instruction: im2start
это что получается макросы из инклуда он не видит? как тогда библотеки организовывать части которых компилируются по мере надобности?
Я конечно понимаю что годы программирования на ПЦ меня испортили, но все же)))
p.s. версия 1.05
---------- Post added at 15:01 ---------- Previous post was at 14:49 ----------
Ой соори, моя глупая ошибка, файл инклуда был в другой директории.
Асм почему-то не ругнулся на это
2psb: ну это дело принципа, я принципиально противник методов "заплаток" и "костылей". опыт как раз показывает, что после навешивания всяких "переходников" для постпроцессинга и подобного проект в конце концов превращается в "черте что" где "черт ногу сломит".
Можно не писать, можно взять готовый, тот же sed, например. Проблема в том чтобы прикрутить его к существующему вызову.
Вобщем у меня такое пожелание к автору, вдруг прислушается...
Раз уж кому-то надо пробел в начале если нет метки, а кому-то не надо, предлагаю
ввести директиву компиляции включающую такой режим при необходимости. будет вообще шикарно
А так - ассемблеру цены нет, респект и уважуха
Вопросик №1
В чём отличие меток с двоеточием, от меток без двоеточия?
---------- Post added at 18:32 ---------- Previous post was at 18:24 ----------
И ещё вопрос №2 в догонку.
Код в аласме:
в SJASM'е должен быть таким:Цитата:
IFN ?METKA
LD A,B
ELSE
LD A,C
ENDIF
?Цитата:
IFNDEF METKA
LD A,B
ELSE
LD A,C
ENDIF
Вопрос №3
Почему не компилится:
Цитата:
MACRO LOADHL reg
LD reg,(HL)
INC HL
ENDM
LOADHL <E,D,C,B>
Aprisobal, очень благодарен, твоей команде, за проделанную работу. Компилятором вполне доволен.
Вот это зря, я имею ввиду вообще совместимость, а не конкретно двоеточия. Чем больше совместимости, тем больше глюков. Самому частенько приходится писать(не для спека) процедурки совместимые с чем попало, а это куча проверок-перепроверок, бывает так код запутывается, что дебагером не всегда распутаешь.
Лучше повышать функционал, а не совместимость(кому надо - те уже перегнали свои исходники)
Небольшой багрепорт. Столнулся со следующей проблемой. Переносил чужие сорцы из аласма с кучей DISP и ни одного ENT (DISPов штуки 4 как минимум). Ни одного сообщения об ошибке, компилер просто падает (вылетает в винду с сообщением об ошибке).
да в виндах есть UnxUtils, но не у каждого;) а какое-то средство разработки вроде как уже стояло...
2psb: php - одна короткая регулярка. ) Кстати я пытался связаться с автором томмигана - не отвечает, и томмиган уж год не обновлялся, наверное заброшена очередная хорошая идя(
Пока перебиваюсь старой версией sjasm-а, жду может всеж афтар сделает диррективу компиляции) Постпроцессинг навешивать - принципиально не хочу. Если уж и буду писать что-то дополнительное - так утилиту типа того же томмигана под себя.
Aprisobal, вот бы SjASMPlus под PocketPC заиметь?! Сможете скомпилировать?
Консоль и Unreal на КПК установлены.
P.S.Очень много времени в общественном транспорте провожу, вот бы это время с пользой для спека проводить.
У меня была подобная идея и даже начал реализацию в какой-то момент, пока имел в наличии смартфон на Windows Mobile. Но, к сожалению, толковых средств дебаггинга у Microsoft не было, приложение хоть и компилировалось, но ужасно глючило на самом смартфоне. И на смартфонах нет консольных приложений, поэтому была дополнительная головная боль сделать редактор текста с возможностью компиляции.
На PocketPC возможен запуск консольных программ? Просто никогда с КПК на PocketPC толком не работал.
Aprisobal, PocketC# и PocketGCC только через консоль и работают.
Консолей очень много различных.
Может все таки попробуешь?
DimkaM, PocketGCC это интересно. Попробуем.
Граждане, вот еще вопросик. sjasm генерит при компиляции lst файл. это я как понимаю файл с названиями меток. А есть ли такой эмуль который может этот файл понимать, и в дебаггере эти метки именами показывать?
Unreal Speccy