 |
Scenergy Web Resource 8-bit imagination. Post your mind!
|
| Предыдущая тема :: Следующая тема |
| Автор |
Сообщение |
aprisobal
Зарегистрирован: 03.10.2004 Сообщения: 14 Откуда: Беларусь, Минск
|
Добавлено: 27.11.2004 02:52:43 Заголовок сообщения: |
|
|
| Ещё один буржуйский кросс-ассемблер - PASMO (http://www.arrakis.es/~ninsesabe/pasmo/). Поддерживает и локальные метки, и макросы, и пр. полезные фичи. Судя по форумам WOS на нём пишут большинство буржуев (он даже умеет в .tap собирать(!)). |
|
| Вернуться к началу |
|
 |
tasman^mc Гость
|
Добавлено: 29.11.2004 14:35:00 Заголовок сообщения: |
|
|
всё равно,какой-то он не доделанный..
куда удобней под эмулем спековкий асм юзать. |
|
| Вернуться к началу |
|
 |
Rob F.
Зарегистрирован: 22.05.2005 Сообщения: 3 Откуда: Kiev, Ukraine
|
Добавлено: 22.05.2005 03:43:28 Заголовок сообщения: ASAM Compiler v.001.023B By Rob F. / Entire Group |
|
|
Может вам этот асм понравится ??? Кстати, он велеколепно создаёт вяческие TAP или TRD, и может свободно в них писать данные, файлы ... Велеколепно создаются любые BASIC лоадеры, если, конечно автор программы имеет голову ... Так же можно не отходя от кассы любую вашу работу запаковать ...
http://www.entire.nm.ru/coding/asam.zip
Хочу вставить описание ... Срау извеняюсь за плохой английский, но, думаю, что Spectrum'исты без проблем разберутся ...
| Код: |
Там ещё с кодировкой проблемы, ну хоть так ...
--- ASAM Compiler ---
Version .................................... 001.023B
DATE .................................... 18 sep 2004
Written By .................... Rob F. / Entire Group
Use Info #1:
asam.exe demo.az8 z80.cmd
+------+ +------+ +-----+
¦ ¦ +---> Файл списка комманд для Z80
¦ +------------> То что будем компилировать
+---------------------> Загадочное название компилятора
z80.cmd .................. Тут лежат наши родные команды Z-ника
Use Info #2:
asam.exe demo.ac5 c51.cmd
+------+ +------+ +-----+
¦ ¦ +---> Файл списка комманд для Intel-51
¦ +------------> То что будем компилировать
+---------------------> Загадочное название компилятора
c51.cmd .................. Тут лежат конченные команды Intel-ки
Use Info #3:
asam.exe demo.az8
+------+ +------+
¦ +------------> То что будем компилировать
+---------------------> Загадочное название компилятора
! Если не указывать список команд, то работает только "LoadCMD" !
--- Описание ASAM-команд для "z80.cmd" ---
ORG nn
... nn = Адрес компиляции (0..65535)
ORG nn,mm
... nn = Адрес компиляции (0..65535)
... mm = Адрес будет делиться на это число (ALIGN)
ORG nn:mm
... nn = Адрес компиляции (0..65535)
... mm = Страница (0..63)
PAGE nn
... mm = Страница (0..63)
IntMode.ON
... Включение отбрасывания запятой, - для совместимости с TASM by RST 7
IntMode.OFF
... Все операции будут проводиться с учётом плавоющей точки
Include
... Откомпилировать файл, количество вложений зависит от памяти в ПиЦи
... = Имя файла
IncBIN
... Загрузить файл данных (BIN)
... = Имя файла
SaveBIN ,nn,mm
... Сохранить файл данных (BIN)
... = Имя файла
... nn = Адрес данных
... mm = Размер
IncBIN ,
... Загрузить файл данных (BIN) из модуля TRD или ZX
... 1 = Имя файла
... 2 = TRD или ZX имя внутри модуля
IncTRD ,
... Загрузить файл данных (BIN) из модуля TRD
... 1 = Имя файла
... 2 = Имя внутри модуля TRD
IncZX$
... Загрузить файл данных (BIN) из модуля ZX
... 1 = Имя файла
EquSize
... Присвоить последней метке размер файла
... = Имя файла
EquSizeZX$
... Присвоить последней метке размер файла из ZX модуля
... = Имя файла
EquStartZX$
... Присвоить последней метке начало файла из ZX модуля
... = Имя файла
EquSizeTRD ,
... Присвоить последней метке размер файла из TRD модуля
... 1 = Имя файла на ПиЦи
... 2 = Имя файла в TRD модуле
EquStartTRD ,
... Присвоить последней метке начало файла из TRD модуля
... 1 = Имя файла на ПиЦи
... 2 = Имя файла в TRD модуле
EquLastSize
... Присвоить последней метке размер последнего загружаемого файла
EquLastStart
... Присвоить последней метке начало последнего загружаемого файла
LoadTRD ,
... Загрузить файл в адрес указанный в файле TRD модуля
... 1 = Имя файла на ПиЦи
... 2 = Имя файла в TRD модуле
LoadZX$
... Загрузить файл в адрес указанный в файле ZX модуля
... = Имя файла на ПиЦи
Load ,nn
... Загрузить файл данных
... = Имя файла на ПиЦи
... nn = Адрес
SaveTRD ,,nn,mm
... Сохранить или перезаписать данные в файл TRD модуля
... 1 = Имя файла на ПиЦи
... 2 = Имя файла в TRD модуле
... nn = Адрес
... mm = Размер
SaveAddTRD ,,nn,mm
... Сохранить или дописать данные в файл TRD модуля
... Данные дописываются в конец файла по секторам
... 1 = Имя файла на ПиЦи
... 2 = Имя файла в TRD модуле
... nn = Адрес
... mm = Размер
DB "
... Через зяапятую лепите числа не больше чем BYTE
EXAM:
>> ORG 0
>> DB 'Data'+1,2
MEM 00000000: 044 061 074 062 002
DW "
... Через зяапятую лепите числа не больше чем WORD
EXAM:
>> ORG 0
>> DW 'Data'+1,2
MEM 00000000: 044 000 061 000 074 000 062 000 002 000
DD "
... Через зяапятую лепите числа не больше чем DWORD
EXAM:
Ну думаю вы сами догадались ...
DS nn
... Заполнит нулями память, не лепите размер меньше нуля, - на вас обидятся
... nn = Размер
EXAM:
>> ORG 0
>> DS 3
MEM 00000000: 000 000 000
DT nn
... Перевести DWORD или метку в STRING, то есть пропишет его в памяти
... nn = DWORD Data
EXAM:
>> ORG 0
>> DT 3345 ;-3345 Будет обижаться на такое !!!
MEM 00000000: 033 033 034 035
EQU nn
... Присвоить последней метке значение nn
... nn = Значение
EXAM:
>> ORG 0
>> M1 EQU $
>> DB M1
>> EQU 33
>> DB M1
>> EQU 213H
>> DW M1
>> EQU -110010100101100101B
>> DD M1
MEM 00000000: 000 021 013 002 09B 0D6 0FC 0FF
EQU (nn)
... То же самое, только синтаксис записи в скобках, сделано из-за
... команд имеющие синтаксис в скобках, например: LD (IX+(2+88)),44
DATA n
... Битовая адресация для Intel-ов из данных, если попадает в это поле
... n = 000H..0FFH
EXAM:
>> M1 DATA 20H ;M1=20H
>> ;M1.0=$20000H First Byte the BIT ADDRESES
>> ;M1.1=$20001H First Byte the BIT ADDRESES
>> ;M1.2=$20002H First Byte the BIT ADDRESES
>> ;M1.3=$20003H First Byte the BIT ADDRESES
>> ;M1.4=$20004H First Byte the BIT ADDRESES
>> ;M1.5=$20005H First Byte the BIT ADDRESES
>> ;M1.6=$20006H First Byte the BIT ADDRESES
>> ;M1.7=$20007H First Byte the BIT ADDRESES
BIT n
... Битовая адресация для Intel-ов из данных
... n = 000..0FF
M1 BIT 20H ;M1=$20020H First Byte the BIT ADDRESES
SetTextXOR "
... Всякая информация в кавычках будет XOR-иться по таблице, которую вы
... можете задать этой командой. Эта комана создана для совмещения различных
... кодировок удобных для вас. Например у вас есть шрифт, где код буквы "A"
... не 65 а 32, вы можете без труда создать таблицу или пару его элементов
... записав на место 65-ой ячейки таблицы 32, тем самым заставите компилятор
... заменять все буквы "A"-65 на " "-32, вот и все примудрости.
EXAM:
>> SetTextXOR '0',0,1,2,3,4,5,6,7,8,9 ;'0'=48 В будущем "0" будет 0
>> DB ' 0123456789'
>> SetTextXOR '0',0,1,2,3,4,5,6,7,8,9 ;'0'=0 Ничего не даст, поскольку
>> ; ноль в кавычка уже ноль, но
>> ; как будут мучаться другие
>> DB ' 012'
MEM 00000000: 020 000 001 002 003 004 005 006 007 008 009 020 000 001 002
ResetTextXOR
... Збросить состояние таблицы в исходное положение
LoadTextXOR
... Загрузить таблицу из файла (Размер должен быть 256 Bytes)
... = Имя файла на ПиЦи
LoadCMD
... Загрузить список команд, я свойт Wild Speccy так пишу, прыгая из ZX-а в
... систему Intel-а
... = Имя файла на ПиЦи
EXAM:
>> LoadCMD 'c51.cmd'
>> MOV A,#3 ;Intel Instruction !!!
>> LoadCMD 'z80.cmd'
>> LD A,3 ;Z80 Instruction !!!
MEM 00000000: 074 003 03E 003
SaveLabels
... Сохранить в файл все метки собранные на данный момент, а так же макросы
... = Имя файла на ПиЦи
SaveAllMEM ,
... Сохранить в два файла данные и маску на всё что вы компилировали. В
... первом файле будут храниться данные, во втором битовая маска.
... 1 = Имя файла на ПиЦи Binary DATA ......... 4194304 Bytes (64*65536)
... 2 = Имя файла на ПиЦи Mask For DATA ....... 524288 Bytes (64*65536/8)
SaveHEX
... Сохранить в HEX вормате всю текущую страницу с адреса 0 по 65535
... = Имя файла на ПиЦи
SaveHEX ,nn,mm
... Сохранить в HEX вормате
... = Имя файла на ПиЦи
... nn = Адрес
... mm = Размер
SaveHEX ,nn,mm,ss
... Сохранить в HEX вормате
... = Имя файла на ПиЦи
... nn = Адрес
... mm = Размер
... ss = Количество байт в линии HEX-а ;See Stupid Intel
Align nn
... Текущий адрес будет делиться на nn без остатка, до адреса заполнет нулями
... nn = Allign Data
OrgALI nn
... Текущий адрес будет делиться на nn без остатка
... nn = Allign Data
PUSHA
... Сохранить все регистры Z80, - редко, но метко
POPA
... Восстановить все регистры Z80, - редко, но метко
CreateImage
... Создать модуль TRD или TAP
... = Имя файла на ПиЦи (IF "*.TRD"=ImageTRD ELSE "*.TAP"=ImageTAP)
CreateImage ,
... Создать модуль TRD или TAP
... 1 = Имя файла на ПиЦи
... 2 = Написать слово "TRD" или "TAP", для определения ваших потребностей
SaveAddTAP ,,nn,mm
... Сохранить файл в TAP модуль
... 1 = Имя файла на ПиЦи
... 2 = Имя файла в TAP модуле
"*.P" Basic Data "*"=FileName
"*.N" Number Data "*"=FileName
"*.C" Code Data "*"=FileName
"*.B" Base Data "*"=FileName
"*.D" Block "*"=[0..255] Type
... nn = Адрес
... mm = Размер
SaveAddTAP ,ss,nn,mm
... Сохранить файл в TAP модуль
... = Имя файла на ПиЦи
... nn = Адрес
... mm = Размер
... ss = Тип блока [0..255]
ORGOF nn,mm
... Виртуальный адрес, компилироваться будет в прежнее место, а метки смещены
... Если nn=mm, то виртуальность отменяется
... nn = Virtual Address ;$=Current Virtaul Address
... mm = Real Address ;$$=Current Real Address
JMP s
... if (-128 >= s >= +127) then JR else JP
JZ s
... if (-128 >= s >= +127) then JR Z else JP Z
JNZ s
... if (-128 >= s >= +127) then JR NZ else JP NZ
JC s
... if (-128 >= s >= +127) then JR C else JP C
JNC s
... if (-128 >= s >= +127) then JR NC else JP NC
DSQ.Pack ,,,,,,_ ;Packing DSQ Method
... Запаковать данные методом DSQ с текущего адреса
... 1 = StartAddr For Depacker
... 2 = Buffer For Depacker
... 3 = Decrunch To This ADDR
... 4 = AutoStart Execute
... 5 = Size For Packing
... 6 = "Y"/"N"-DePacker
... 7 = PackMode [1..7] Else Crash !!!
DSQ.Pack _ ;Packing DATA
... Запаковать данные методом DSQ с текущего адреса без депакера
... Команда для сумасшедших !!!
... Текущий адрес будет сразу после последнего запакованного байта
... 1 = Размер пакуемых данных
DSQ.DePacker
... Распаковщик в виде макроса написанный на ассемблере для распаковки
... запакованных данных методом DSQ
... HL = (End Of Packed Data)-1
... DE = Start ADDR For Decrunch
MoveMemAA ,:,
... Move Memory Block From ASAM To ASAM
... 1 = From ADDR
... 2 = To ADDR
... 3 = Page To ADDR
... 4 = Size
MoveMemAA ,,
... Move Memory Block From ASAM To ASAM Page=Current
... 1 = From ADDR
... 2 = To ADDR
... 3 = Size
EmlZX.LoadTRD ,n
... Загрузить во втроенный эмулятор TRD модуль
... = Имя файла на ПиЦи
... n = [0..3] Drive
EmlZX.Key
... Добавить очередную инструкцию для эмуляции нажатия клавиш в эмуляторе
... = Data
... Смотри примеры, и прозревай !!!
EmlZX.KeyCLR
... Убрать все инструкции о нажтий клавиш в эмуляторе
EmlZX.KeyAdd
... EmlZX.KeyAdd = EmlZX.Key
MoveMemZA :,,
... Move Memory Block From ZX To ASAM
... 1 = From ZX ADDR
... 2 = From ZX Page
... 3 = To ASAM ADDR
... 4 = Size
MoveMemAZ ,:,
... Move Memory Block From ASAM To ZX
... 1 = From ASAM ADDR
... 2 = To ZX ADDR
... 3 = To ZX Page
... 4 = Size
PeekZB =(:)
... Get BYTE From ZX Memory
... 1 = Label
... 2 = From ZX ADDR
... 3 = From ZX Page
PeekZ2 =(:)
... Get WORD From ZX Memory
... 1 = Label
... 2 = From ZX ADDR
... 3 = From ZX Page
PeekAB =()
... Get BYTE From ASAM Memory
... 1 = Label
... 2 = From ASAM ADDR
PeekAW =()
... Get WORD From ASAM Memory
... 1 = Label
... 2 = From ASAM ADDR
PokeZB (:)=
... Put BYTE To ZX Memory
... 1 = From ZX ADDR
... 2 = From ZX Page
... 3 = Label
PokeZW (:)=
... Put WORD To ZX Memory
... 1 = From ZX ADDR
... 2 = From ZX Page
... 3 = Label
PokeAB ()=
... Put BYTE To ASAM Memory
... 1 = From ASAM ADDR
... 2 = Label
PokeAW ()=
... Put WORD To ASAM Memory
... 1 = From ASAM ADDR
... 2 = Label
RunEmulZX
... Запустить эмулятор Speccy
RunEmulZXne
... Запустить эмулятор Speccy только если нет ошибок до данного момента
--- Simple Mcros ---
;--- EXAM 001 ... -----------------------------------------
.Fill ;"Fill" - Macros Name
LD HL,@.0 ;First Parametr
LD DE,@.0+1 ;First Parametr + 1
LD BC,@.1-1 ;Second Parametr - 1
LD (HL),@.2 ;Third Parametr
LDIR
..
ORG 32768
XOR A
Fill 16384,6144,A
;--- EXAM 002 ... -----------------------------------------
.33 ;Repeat
DB 'Hello World '
DD @.C*2 ;Counter 1..33
..
;--- EXAM 003 ... -----------------------------------------
.3 ;Repeat
LD HL,@. ;HL = START Macro Address
LD DE,@.. ;HL = END Macro Address
..
;--- EXAM 004 ... -----------------------------------------
.Somthing
ADD A,@.0 ;ADD First Parametr
JZ @.. ;Exit From Macro
SUB @.1 ;SUB Second Parametr
DJNZ @. ;Go To Start Macro
..
ORG 32768
XOR A
LD B,10
LD C,0001010B
Somthing C,3
;--- EXAM 005 ... -----------------------------------------
.FOR = TO ;Create Macro FOR ?=? TO ?
LD (@M1+1),HL
LD HL,@.1
LD @.0,HL
LD HL,@.2
PUSH HL
LD HL,@..
PUSH HL
@M1
LD HL,0
..
.NEXT ;Create NEXT ?
LD (@HL+1),HL
LD (@DE+1),DE
POP HL
LD (@JUMP+1),HL
POP DE
LD (@SP+1),SP
PUSH HL
PUSH DE
LD HL,@.0
INC HL
LD @.0,HL
AND A
SBC HL,DE
@HL LD HL,0
@DE LD DE,0
@JUMP JP C,0
@SP LD SP,0
..
ORG 0
LD HL,123
LD (O),HL
FOR (N)=1 TO (O) ;Use FOR
NOP
NOP
NOP
NEXT (N) ;Use NEXT
N: DW 0
M: DW 0
O: DW 0
;--- EXAM 006 ... -----------------------------------------
.Something_ ;"_" Macro WithOut Auto VARs
NOP
..
ORG 0
Something ;Worked
Something 1 ;Generated ERROR
;--- EXAM 007 ... -----------------------------------------
.123
DB @.C*33 ;@.C - Counter [1...123]
..
;--- EXAM 008 ... -----------------------------------------
ORG 32768
EXECUTE EQU 25000
DI
LD HL,PROG.S
LD DE,EXECUTE
LD BC,PROG.E-PROG.S
PUSH DE
LDIR
RET
PROG.S
ORGOF EXECUTE,$$
CALL CLEAR ;CLEAR=25004
HALT ;Only Reset Save Z80 !!!
CLEAR
LD HL,16384
LD DE,16385
LD BC,6144
LD (HL),L
LDIR
LD (HL),7*8+7
LD BC,767
LDIR
RET
ORGOF $$,$$
PROG.E
;--- EXAM 009 ... -----------------------------------------
;Emulator By Rob F. / Entire Group
;Emulated ALL (100%) Z80 Instructions With Secret CMD
;Fasted On The Earth !!!
;Tested On CPU 0133 - 3.7*50 INT Of Speccy Per Second
;Tested On CPU 0266 - 6.3*50 INT Of Speccy Per Second
;Tested On CPU 2400 - 36.9*50 INT Of Speccy Per Second
;Люблю сходить сума, особенно ради великого Speccy
ORG 16384
DI
LD HL,16384
LD DE,16385
LD BC,65536 ;=0 !!!
LDIR
EQU ZX.R.Break=$ ;IF = -1 Then NoBreakPoint
EQU ZX.R.PC=16384
MoveMemAZ 0,0:16,16384
RunEmulZXne ;Run Emulator
;Breaked After LDIR = DI !!!
;Worked And Not Reseted !!!
MoveMemZA 0:16,0,65536 ;Save And Look All Memory =)
;--- EXAM 010 ... -----------------------------------------
ORG 25000
DI
LD HL,DePack1.En-1
LD DE,16384
CALL UNPACK ;UnPack To Screen
XOR A
OUT (254),A
HALT
UNPACK
DSQ.DePacker ;Compile DSQ.Packer
IncBin "pic.trd","6omj.C" ;Load Any Picture
ORG $-ASAM.Load.Size
DSQ.Pack ASAM.Load.Size ;Pack Data
DePack1.En ;=After Packed Data !!!
CreateImage "test.trd" ;Create Image On The Stupid PC
SaveTRD 'test.trd','1.C',25000,$-25000 ;Save Data !!!
;Enjoy !!!
--- ASAM Secrets ---
;--- EXAM 001 ... -----------------------------------------
ORG 65536-(End-Start)
Start: DB 'ZX-Spectrum Is The Best !!!'
End: ;=65536
;--- EXAM 002 ... -----------------------------------------
M1 EQU 24H.4 ;M1=36.400
EQU 010B.31 ;M1=2.310
;--- EXAM 003 ... -----------------------------------------
M1 EQU 24H.4 ;M1=36.400
EQU M2=M1 ;M2=M1 ... =36.400
EQU 22 ;M2=22
;--- EXAM 004 ... -----------------------------------------
PUSH HL DE BC ;No Comments
POP BC DE HL ;No Comments
|
_________________ By Rob F. / Entire Group ... |
|
| Вернуться к началу |
|
 |
aprisobal
Зарегистрирован: 03.10.2004 Сообщения: 14 Откуда: Беларусь, Минск
|
Добавлено: 23.05.2005 16:17:33 Заголовок сообщения: |
|
|
На правах рекламы. SjASMPlus - http://zx.pk.ru/showthread.php?t=447&page=1. Куча всяческих уникальных фич и БЕШЕННАЯ скорость компиляции - 250000 различных строк кода компилируется за 1.15 секунды! Этот асм создан для серьёзных(ёмких) проектов и для серьёзных кодеров! _________________ ATM-Turbo 1/512кб/AY/Turbo(up 88000t)/External floppy(1)/LED R/W of floppy/HW pause/Color monitor |
|
| Вернуться к началу |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
Powered by phpBB © 2001, 2005 phpBB Group
|