Nice done Dmitriy! 

I hardened your inc routine a bit so as not to change the variables in the mac routine:

ROUTINE menu [Type=INC]

 #Execute set menuLineNum=0
  do myMenu()
myMenu(){
    Set menu = $$^menu($zname)
    Write !,"--------Menu---------"
    write ##Expression($$asLine^menu(menu,$Increment(menuLineNum)))
    write ##Expression($$asLine^menu(menu,$Increment(menuLineNum)))
    write ##Expression($$asLine^menu(menu,$Increment(menuLineNum)))
    write ##Expression($$asLine^menu(menu,$Increment(menuLineNum)))
    write ##Expression($$asLine^menu(menu,$Increment(menuLineNum)))
    write ##Expression($$asLine^menu(menu,$Increment(menuLineNum)))
    write ##Expression($$asLine^menu(menu,$Increment(menuLineNum)))
    write ##Expression($$asLine^menu(menu,$Increment(menuLineNum)))
    write ##Expression($$asLine^menu(menu,$Increment(menuLineNum)))
    write ##Expression($$asLine^menu(menu,$Increment(menuLineNum)))
    write ##Expression($$asLine^menu(menu,$Increment(menuLineNum)))
    write ##Expression($$asLine^menu(menu,$Increment(menuLineNum)))
    write ##Expression($$asLine^menu(menu,$Increment(menuLineNum)))
    write ##Expression($$asLine^menu(menu,$Increment(menuLineNum)))
    write ##Expression($$asLine^menu(menu,$Increment(menuLineNum)))
    write ##Expression($$asLine^menu(menu,$Increment(menuLineNum)))
    write ##Expression($$asLine^menu(menu,$Increment(menuLineNum)))
    write ##Expression($$asLine^menu(menu,$Increment(menuLineNum)))
    Write !!
    do {
      Write $Char(13),"Option? ",*27,"[0K"
      Read menuOption
      Quit:menuOption=""
      Quit:"qQ"[$Extract(menuOption)
      Quit:$Listget(menu,+menuOption)'=""
    while 1
    Write !
    if (+menuOption) {
      Set label = $Listget($Listget(menu, menuOption))
      Do @label
    }
  }