2SMT а как в дампе быстро перейти на нужный адрес?
Вид для печати
2SMT а как в дампе быстро перейти на нужный адрес?
Ctrl+GЦитата:
Сообщение от jerri
altlock=0 в ini?Цитата:
Сообщение от jerri
кнопку можно прописать в ini в строке mem.goto, окно дампа должно быть активноЦитата:
Сообщение от jerri
С #1FFD очень надо!Цитата:
Сообщение от SMT
Как и обещал пишу тебе как можно отвязать импорт меток от STS'а.
Пересмотрел я все имеющиеся у меня версии Alasm (4.42-4.46 и 5.00). В них есть общая для всех версий процедура передачи адреса/банка (с началом меток) в STS. В зависимости от версии Alasm и STS меняются 2 адреса (см.ниже). Вот эта процедура для разных версий Alasm:
Алгоритм будет следующий:Код:ALASM 4.42
B625:
LD HL,(9319) ;\
LD (FEFE),HL ; это не для меток
LD (FEE4),HL ;/
LD HL,(931B) ;тут лежит искомый адрес!
INC HL
LD (FE63),HL ;сохраняем его в STS
LD A,(IX+1D) ;страница с метками
AND C7 ;маска для этой страницы
LD (FE69),A ;помещаем и ее в STS
LD HL,...
ALASM 4.43
B5CF:
LD HL,(9321)
LD (FEFE),HL
LD (FEE4),HL
LD HL,(9323)
INC HL
LD (FE63),HL
LD A,(IX+1D)
AND (IX+32)
LD (FE69),A
LD HL,...
ALASM 4.44
B608:
LD HL,(9374)
LD (FEFE),HL
LD (FEE4),HL
LD HL,(9376)
INC HL
LD (FE63),HL
LD A,(IX+1D)
AND (IX+32)
LD (FE69),A
LD HL,...
ALASM 4.45
B608:
LD HL,(9351)
LD (FEFE),HL
LD (FEE4),HL
LD HL,(9353)
INC HL
LD (FE7C),HL
LD A,(IX+1D)
AND (IX+32)
LD (FE88),A
LD HL,...
ALASM 4.46
B56F:
LD HL,(934A)
LD (FEFE),HL
LD (FEE4),HL
LD HL,(934C)
INC HL
LD (FE7C),HL
LD A,(IX+1D)
AND (IX+32)
LD (FE88),A
LD HL,...
ALASM 5.00
B58E:
LD HL,(9362)
LD (FEFE),HL
LD (FEE4),HL
LD HL,(9364)
INC HL
LD (FE7C),HL
LD A,(IX+1D)
AND (IX+32)
LD (FE88),A
LD HL,...
1. Ищем во всех страницах памяти сигнатуру (если откинуть Alasm 4.42)
LD HL,(nn)
LD (FEFE),HL
LD (FEE4),HL
LD HL,(adr)
INC HL
LD (nn),HL
LD A,(IX+1D)
AND (IX+32)
LD (nn),A
LD HL,nn
2. Можно дополнительно проверить что сигнатура лежит в диапазоне #B400..#B7FF и это именно страница с Аласмом (у него есть ряд фиксированных адресов).
3. В найденной странице берем интересующие нас сведения. Искомый адрес начала меток лежит в (adr). Учитывая что во всех версиях IX=80BF, но Alasm переносит себя из С000 в 8000 где и работает, делаем на это поправку: искомая страница: (C0DC) AND (C0F1).
Этот алгоритм будет работать на версиях Alasm'а 4.43 и выше.
проверишь?Цитата:
Сообщение от Spectre
Код:version 0.32b3 05 oct 2005
+ monitor: Alt-M to edit model-specific high memory port [sb Spectre]
+ monitor: reading ALASM labels without STS [thanks to Spectre]
единственное, по этому способу поиск осуществляется в нижней (128k) памяти. так как АЛАСМ под банк выделяет только 1 ячейку, я считаю, что это значение, выводимое в #7FFD. как используется верхняя память скорпиона, пока не разбирался
память поддерживается любая но то что кидается в 1FFD задается СТСом
а АлКо переписал драйвер для Аласма и задает страницу для скорпиона 1 байтом
Hello Guest!
05 Oct 05 19:10, Guest from forum zx pk ru wrote to All:
используй драйвер скорповой памяти с пентагоновской нумерацией страницЦитата:
Gr> единственное, по этому способу поиск осуществляется в нижней (128k)
Gr> памяти. так как АЛАСМ под банк выделяет только 1 ячейку, я считаю, что
Gr> это значение, выводимое в #7FFD. как используется верхняя память
Gr> скорпиона, пока не разбирался
(ZSKAY512), старый - давить, ибо несовместимость.
Hомера страниц #40..#47 - со включенным 4 битом #1ffd, а номера #00..#07 - с
выключенным.
- A.Coder [Wolf3d2004 InfoGuide7 ACEdit96 ACN42 PT3695 Chip13 HexFill HDDoct6]
[Ansi04 8col12 ZXRar27UnR59 Jpg042 CacVox1 Dbs07 Gluk61R PC21 Alasm50f2 Sts70i]
... ZX Spectrum today
Проверил. Alasm 4.42,4.45,4.46,5.01 метки импортируются нормально. Нашел один глюк: если метки приходятся на область ПЗУ (0..#3fff) они не отображаются. У меня программа при помощи DISP 0 туда компилируется и там работает, а меток не видно. :(Цитата:
Сообщение от SMT
Насчет импорта из памяти >128К все правильно написал AlCo (Dima Bystrov) - номер банка это не совсем число которое заносится в #7FFD. Биты 0,1,2 заносятся в #7FFD, а 6-ой и 7-ой биты надо занести в Extended port. Я так понимаю соответствие следующее (лучше чтобы AlCo подтвердил):
#7FFD биты 6,7 - Pentagon
#1FFD биты 4,6 - Scorpion/KAY
#DFFD биты 0,1 - Profi
#FDFD биты 0,1 - ATM1
метки привязаны не к адресу, а к физической ячейке памяти. это сделано, чтобы в разных страницах были свои метки в области #C000-#FFFF и чтобы метки basic48/128/trdos не мешали друг другу. если у тебя программа ниже #4000 физически лежит в кеше или ПЗУ, то unreal это не поймёт, а если в нулевой банке, включенной вместо озу, должно работатьЦитата:
если метки приходятся на область ПЗУ (0..#3fff) они не отображаются
ну я так и думал, просто перестраховался. чтобы разблокировать поиски в верхней памяти, нужно по адресу #24BE3 в файле unreal.exe записать 16 (#10) вместо 8Цитата:
Насчет импорта из памяти >128К все правильно написал AlCo