Не стоит так сразу рубить концы, патчи такого рода просто наводят порядок.
Не стоит так сразу рубить концы, патчи такого рода просто наводят порядок.
psb, исходники из Аласм на 90% компилятся в сжасм
но вот 10% огорчают
как то
- вложенная условная компиляция
- конструирование имен меток в макросах
Скрытый текст
Код:;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[свернуть]
- плотная запись данных (необязательно но просто приятно)
Скрытый текст
Код:DD 3f4041424445467f ;превращается в db #3f,#40,#41,#42,#44,#45,#46,#7f[свернуть]
Последний раз редактировалось jerri; 30.09.2013 в 15:17.
С уважением,
Jerri / Red Triangle.
С уважением,
Jerri / Red Triangle.
зрение никуда не годится... я просто не пишу такой страшный *****код, который потом хрен распарсишь или поддержишь. исходник не смотрел, только мельком. стиль алоне-кодера известен и узнается сразу, больше так никто не пишет и не хочет писать, и не хочет это выкуривать. и это о чем-то да говорит.
кроме того, я обнаглею и рискну предположить, что подобное можно переложить на ужасм не так уж и сложно, было бы желание. не без костылей, но все же.
В моих примерах, кстати, не должно быть ничего экстраординарного. Я бы порекомендовал добыть еще всяких разных проектов для SjAsm.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)