Subversion Repositories pentevo

Rev

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

  1.                 cpu     6301
  2.  
  3. ; first, we define a structure.  This one contains three fields, occupying 1, 2, and 12 bytes:
  4.  
  5. Record          STRUCT
  6. val8            rmb     1
  7. val16           rmb     2
  8. val96           rmb     12
  9.                 ENDSTRUCT
  10.  
  11. ; this macro allows to define an array of structures.  They will have the names
  12. ; <name>_0 to <name>_<cnt-1>.  Note however that the indices are written in hex!
  13.  
  14. NStruct         macro   name,cnt,{GLOBALSYMBOLS}
  15. z               set     0
  16.                 rept    cnt,{GLOBALSYMBOLS}
  17. z_str           set     "\{z}"
  18. name_{z_str}    Record
  19. z               set     z+1
  20.                 endm
  21.                 endm
  22.  
  23.                 org     $1000
  24.  
  25. ; define the structures Array_0 to Array_4
  26.  
  27.                 NStruct Array,5
  28.  
  29. ; another way to define a list of structures
  30.  
  31.                 irp     name,{GLOBALSYMBOLS},Rec1,Rec2,Rec3
  32. name            Record
  33.                 endm
  34.  
  35. ; defines Rec_a to Rec_c
  36.  
  37.                 irpc    name,{GLOBALSYMBOLS},"abc"
  38. Rec_name        Record
  39.                 endm
  40.  
  41. ; an alternative way to define an array of structures, using the WHILE construct
  42.  
  43. z               set     1
  44.                 while   z<5,{GLOBALSYMBOLS}
  45. z_str           set     "\{z}"
  46. Array2_{z_str}  Record
  47. z               set     z+1
  48.                 endm
  49.  
  50. ; and now let's access the records, just to generate a bit of code...
  51.  
  52.                 ldaa    Array_0_val8
  53.                 staa    Array_4_val8
  54.                 ldx     Rec1_val16
  55.                 stx     Rec2_val16
  56.