Subversion Repositories pentevo

Rev

Blame | Last modification | View Log | Download | RSS feed | ?url?

  1.  
  2. ;LAST UPDATE: 12.09.2019 savelij
  3.  
  4. ; создание таблицы смещений для автонастройки на адреса запуска
  5.  
  6. ; инициализация переменной для генерации таблицы смещений
  7. INIT_GETADR     MACRO NAME
  8. NAME_DIGIT := 0
  9.         IF MOMPASS = 1
  10. NAME_DIGITMAX := NAME_DIGIT
  11.         ENDIF
  12.                 ENDM
  13.  
  14. ; генерация имени переменной для таблицы смещений
  15. GETADR          MACRO NAME
  16. $$dIgIt1 := CHARFROMSTR("\{NAME_DIGIT >> 12}",0)
  17. $$dIgIt2 := CHARFROMSTR("\{NAME_DIGIT >> 8}",0)
  18. $$dIgIt3 := CHARFROMSTR("\{NAME_DIGIT >> 4}",0)
  19. $$dIgIt4 := CHARFROMSTR("\{NAME_DIGIT & 0X0F}",0)
  20. $$dIgIt0 := "\{$$dIgIt1}\{$$dIgIt2}\{$$dIgIt3}\{$$dIgIt4}"
  21. NAME_{$$dIgIt0} EQU $-2
  22. NAME_DIGIT := NAME_DIGIT+1
  23.         IF NAME_DIGITMAX < NAME_DIGIT
  24. NAME_DIGITMAX := NAME_DIGITMAX + 1
  25.         ENDIF
  26.                 ENDM
  27.  
  28. ; генерация таблицы смещений
  29. PUTADR          MACRO NAME
  30. NAME_TMPDIGIT := 0
  31.                 REPT NAME_DIGITMAX
  32. $$dIgIt1 := CHARFROMSTR("\{NAME_TMPDIGIT >> 12}",0)
  33. $$dIgIt2 := CHARFROMSTR("\{NAME_TMPDIGIT >> 8}",0)
  34. $$dIgIt3 := CHARFROMSTR("\{NAME_TMPDIGIT >> 4}",0)
  35. $$dIgIt4 := CHARFROMSTR("\{NAME_TMPDIGIT & 0X0F}",0)
  36. $$dIgIt0 := "\{$$dIgIt1}\{$$dIgIt2}\{$$dIgIt3}\{$$dIgIt4}"
  37.                 DW NAME_{$$dIgIt0}
  38. NAME_TMPDIGIT := NAME_TMPDIGIT+1
  39.                 ENDM
  40.                 ENDM