Subversion Repositories NedoOS

Rev

Rev 126 | Rev 539 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download

  1.     ;; classic syntax (name is after MACRO directive)
  2.     MACRO   classicNameNoArg
  3.         dz  "classic-no-arg\n"
  4.     ENDM
  5.     MACRO   classicNameOneArg arg1?
  6.         db  "classic-1-arg: ", arg1?, "\n", 0
  7.     ENDM
  8.     MACRO   classicNameTwoArg arg1?, arg2?
  9.         db  "classic-2-arg: ", arg1?, arg2?, "\n", 0
  10.     ENDM
  11.  
  12.     ;; new optional syntax (label on MACRO line is used as macro name)
  13. newNameNoArg    MACRO
  14.                     dz  "new-no-arg\n"
  15.                 ENDM
  16. newNameOneArg   MACRO  arg1?
  17.                     db  "new-1-arg: ", arg1?, "\n", 0
  18.                 ENDM
  19. newNameTwoArg   MACRO  arg1?, arg2?
  20.                     db  "new-1-arg: ", arg1?, arg2?, "\n", 0
  21.                 ENDM
  22.  
  23.     ;; but label doesn't work over colon separator
  24. Label       :   MACRO nameOrArg?
  25.                     dz  "name-or-arg as name\n"
  26.                 ENDM
  27.  
  28.     ;; DEFL labels also don't work, even without colon
  29. Babel = 2       MACRO nameOrArg2?
  30.                     dz  "name-or-arg2 as name\n"
  31.                 ENDM
  32.  
  33.     OUTPUT "label_as_name.bin"      ; verify defined macros (by checking bin output)
  34.     classicNameNoArg : classicNameOneArg 'a' : classicNameTwoArg 'b', 'c'
  35.     newNameNoArg : newNameOneArg 'a' : newNameTwoArg 'b', 'c'
  36.     nameOrArg? : nameOrArg2?
  37.