Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Программирование (http://zx-pk.ru/forumdisplay.php?f=14)
-   -   SjASMPlus Z80 кросс ассемблер (http://zx-pk.ru/showthread.php?t=447)

jerri 17th September 2012 15:18

Keeper, это но то случаем что реализовано в Alasm?
Quote:

macro macross
label:0
endm

macross l1
дает
Labеll1


macross l2
дает
Labell2
нужно бывает иногда
особенно видно в движке wolf48

jerri 17th September 2012 16:05

Keeper, в доке к Аласм?
это новые фичи

jerri 17th September 2012 16:55

Keeper, а он такого и не умеет
он много чего не умеет, но я например так и не понял почему

LABEL\0 не разворачивается в LABELхх
это идеологически вполне допустимо

---------- Post added at 15:55 ---------- Previous post was at 15:54 ----------

jerri, http://zx.pk.ru/showthread.php?t=17907 я уже поднимал тему
посмотри что понимает аласм и кстати по глюкам sjasm тоже есть :)

jerri 17th September 2012 17:15

Keeper, не знаю :)
допиливание обычно имеет побочным эффектом забаговывание

esl 17th September 2012 18:03

Quote:

Originally Posted by jerri (Post 540375)
Keeper, не знаю :)
допиливание обычно имеет побочным эффектом забаговывание

дык тестами покрывать надо.

---------- Post added at 16:03 ---------- Previous post was at 16:01 ----------

Quote:

Originally Posted by Keeper (Post 540323)
Можно пример использования, может я неправильно понял зачем это нужно :)

ну например
macro _preffix_
ld (store&_preffix_),a
ld hl,(value&_preffix_)
jp label_&_preffix_
endm

jerri 17th September 2012 18:43

esl, это детский лепет
вот это пример :)

Code:

;RAY 1,1,H,L,D,E,y,x
      MACRO RAY
mainplus=\0 ;основное направление положительно
secplus=\1 ;побочное направление положительно
;\2=основное направление для hl
;\3=побочное направление для hl
;\4=основное направление для de
;\5=побочное направление для de
;\6=основное направление
;\7=побочное направление
      ;LD DE,(cur\7\6)
cur\0\1\7\6=$+1
        LD DE,0
        LD A,E ;основное направление
      ;IFN mainplus ;основное направление положительно
      ; CPL ;1-основное направление
      ; LD E,A
      ;ENDIF
        LD LX,A ;IX=dist*cos
        MULPOS
      IFN secplus ;побочное направление положительно
        ADD A,D ;побочное направление
        LD B,A
      ;LD HL,(curYX)
ray\0\1\7\6_YX=$+1
        LD HL,0
      IFN "\6\6"-"xx"
      ;LD D,H,E,L
      ;SET mapdifbit,E
ray\0\1\7\6_YX2=$+1
        LD DE,0
      ELSE
        LD D,H,E,L
      ENDIF
        JNC raynshort\0\1\7\6
        INC \5 ;e/d
        LD A,(DE)
        RLA
        JC raysec\0\1\7\6
        INC \3 ;l/h
raynshort\0\1\7\6
      IFN "\6\6"-"yy"
        SET mapdifbit,L
      ENDIF
      ELSE
        LD L,A
        LD A,D ;побочное направление
        SUB L
        LD B,A
      ;LD HL,(curYX)
ray\0\1\7\6_YX=$+1
        LD HL,0
      IFN "\6\6"-"xx"
      ;LD D,H,E,L
      ;SET mapdifbit,E
ray\0\1\7\6_YX2=$+1
        LD DE,0
      ELSE
        LD D,H,E,L
      ENDIF
        JNC raynshort\0\1\7\6
        LD A,(DE)
        RLA
        JC raysec\0\1\7\6
        DEC \3,\5 ;l/h,e/d
raynshort\0\1\7\6
      IFN "\6\6"-"yy"
        SET mapdifbit,L
      ENDIF
      ENDIF

raynsec\0\1\7\6
        INC HX
      IFN mainplus ;основное направление положительно
        INC \2 ;h/l
      ENDIF
        LD A,(HL)
        RLA
        JP C,rayhlq ;b=texx
      IFN mainplus ;основное направление положительно
        INC \4 ;d/e
      ELSE
        DEC \2,\4 ;h/l,d/e
      ENDIF
        LD A,B
      IFN secplus ;побочное направление положительно
        ADD A,C
      ELSE
        SUB C
      ENDIF
        LD B,A
        JNC raynsec\0\1\7\6
      IFN secplus ;побочное направление положительно
        INC \5 ;e/d
      ENDIF
        LD A,(DE)
        RLA
        JC raysec\0\1\7\6
      IFN secplus ;побочное направление положительно
        INC \3 ;l/h
      ELSE        ;побочное направление отрицательно
        DEC \3,\5 ;l/h,e/d
      ENDIF
        JP raynsec\0\1\7\6

raysec\0\1\7\6
        EXD
        LD A,B
      IFN secplus ;побочное направление положительно
        SUB C
        DIVPOS
      ELSE
        ADD A,C
        DIVNEG
      ENDIF
      IFN mainplus ;основное направление положительно
        CPL
        LD B,A ;b=texx
      ELSE
        LD B,A ;b=texx
        CPL
      ENDIF
        JP raydeq
      ENDM

sjasm скукоживается сразу

psb 17th September 2012 19:10

от такого я тоже скукоживаюсь... :)))

esl 17th September 2012 19:37

Quote:

Originally Posted by jerri (Post 540403)
esl, это детский лепет
вот это пример :)

то был пример, а ЭТО - черная магия ;)

jerri 17th September 2012 21:35

esl, ну следуя логике
я должен получив строчку
"ray\0\1\7\6_YX=$+1"
сначала заменить все \х на данные макроса
и только потом парсить уже готовый набор данных
а не так как сделано сейчас

---------- Post added at 20:33 ---------- Previous post was at 20:32 ----------

esl, ну ты рар не смотрел
вот там реально чорная магия

---------- Post added at 20:35 ---------- Previous post was at 20:33 ----------

Keeper, а что за асм использует савелий?

esl 17th September 2012 22:00

Quote:

Originally Posted by jerri (Post 540472)
esl, ну следуя логике
я должен получив строчку
"ray\0\1\7\6_YX=$+1"
сначала заменить все \х на данные макроса
и только потом парсить уже готовый набор данных
а не так как сделано сейчас

как работает подстановка как раз то легко понять
а вот макроссссссс


All times are GMT +4. The time now is 21:52.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.