Subversion Repositories pentevo

Rev

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

  1.                 cpu     eZ8
  2.                 page    0
  3.  
  4.                 segment data
  5.  
  6.                 ; first a simple structure
  7.                 ; to have something to play with:
  8.  
  9. tPoint          struct
  10. x               db      ?
  11. y               db      ?
  12. z               db      ?
  13. c               db      ?
  14. flags           dw      ?
  15. valid           defbit  flags,0
  16.                 endstruct
  17.  
  18.                 ; the simplest case: instantiate a single structure
  19.  
  20. Point           tPoint
  21.  
  22.                 ; nest structures in structures:
  23.  
  24. tPointPair      struct
  25. p1              tPoint
  26. p2              tPoint
  27.                 endstruct
  28.  
  29. PointPair       tPointPair
  30.  
  31.                 ; REPT can also be used if you are inside a structure
  32.                 ; definition, so you can build arrays by hand - though
  33.                 ; it's a bit tedious:
  34.  
  35. tPointManArray  struct
  36. _IDX            set     0
  37.                 rept    5
  38. _SIDX           set     "\{_IDX}"
  39. POINTS_{_SIDX}  tPoint
  40. _IDX            set     _IDX+1
  41.                 endm
  42.                 endstruct
  43.  
  44. PointManArray   tPointManArray
  45.  
  46.                 ; ...but it's a lot simpler with the new array option:
  47.  
  48. tPointArray     struct
  49. Points          tPoint  [5]
  50.                 endstruct
  51.  
  52. PointArray      tPointArray
  53.  
  54.                 ; Instantiating arrays of structures may of course
  55.                 ; also be done by hand, but it's just as tedious...
  56.  
  57. _IDX            set     0
  58.                 rept    10
  59. _SIDX           set     "\{_IDX}"
  60. POINTS_MAN_{_SIDX}      tPoint
  61. _IDX            set     _IDX+1
  62.                 endm
  63.  
  64.                 ; ...and the new array option also allows multi-dimensional
  65.                 ; arrays:
  66.  
  67. PointVect       tPoint  [5]
  68. PointMatrix     tPoint  [5],[4]
  69. ;PointSpace     tPoint  [5],[4],[12]
  70.  
  71.                 ; don't get greedy ;-)
  72.  
  73.                 expect  2221
  74. PointWhatever   tPoint  [5],[4],[12],[3]
  75.                 endexpect
  76.  
  77.                 segment code
  78.  
  79.                 ld      r0,@Point_x
  80.  
  81.                 ld      r0,@PointPair_p1_y
  82.  
  83.                 ld      r0,@PointArray_Points_1_z
  84.  
  85.                 ld      r0,@PointVect_2_z
  86.  
  87.                 ld      r0,@PointMatrix_3_2_c
  88.  
  89. ;               dw      PointSpace_4_3_10_flags
  90.