Also two pointers when working with dialogs:

to load your settings, you could do
on *:DIALOG:first:init:0:{ systems }
as suggested and then create an alias called that. Simpler might be to actually do your stuff between those brackets.

Also, you use
did -r first 3
did -a first 3 $ip
As with any alias, you can combine flags, so doing
did -ra first 3 $ip
would save you a lot of space.