Keeper, не знаю :)
допиливание обычно имеет побочным эффектом забаговывание
Вид для печати
Keeper, не знаю :)
допиливание обычно имеет побочным эффектом забаговывание
esl, это детский лепет
вот это пример :)
sjasm скукоживается сразуКод:;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
от такого я тоже скукоживаюсь... :)))
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, я тут наброски делал на PB и не увидел особых проблем с макросами :(
Кошмарный пример, зачем я его на ночь глядел...
Неужели после сборки всех вариантов в один параметризированный макрос объём кода сократился и стал понятнее?
И кстати вот всплывает велосипедистость sjasm+, где в одну кучу кода навалены разные тулзы. А макры... ну m4 и прочие никто не отменял.
NovaStorm, если ты про методы товарища Алоне то это к нему обратись:)
но прелесть Аласма в том что он это понимает и интерпретирует нормально