% % limit tabs change for machines % false newedits? { 'StayAt(2);' Help.! } { edits? { 'StayAt(1);' Help.! } { % % are we at the top machine tree % fork@)? { % % sub-tree, if at root, may not select Upload % root? { wired( < |Upload zerotab > not { % % have passed basic tabbing rules for sub-tree % pop true } if } { % % sub-tree, not at root % pop true } ifelse } { % % top machine tree % root? { % % at root of machine top tree % wired( < |Portal |Partner |New |Options > { pop true } { % % may only select new, portal, partner % "Can only select New, Portal, or Partner tab." *enterinf zerotab& Help.! } ifelse } { % % at non-root of machine top tree % wired( < |Portal |Partner |New |Change |Options > { pop true } { % % at machine top tree, may only select change, new, portal, partner % "Can only select Change, New, Portal, or Partner tab." *enterinf zerotab& Help.! } ifelse } ifelse } ifelse } ifelse } ifelse "decision" log)( dup { _Msys.HasMachine _Msys.HasDevice and "machdevc" log)( { _Mach.Mode "machtaba" log)( exch { second "Listening" eq$ { pop false 'StayAt(5);' Help.! true ? } if second "Uploading" eq$ { pop false 'StayAt(3);' Help.! true ? } if second "UpFinish" eq$ { pop false 'StayAt(3);' Help.! true ? } if second "Siphoning" eq$ { pop false 'StayAt(3);' Help.! true ? } if second "Draining" eq$ { pop false 'StayAt(4);' Help.! true ? } if second "Pulling" eq$ { pop false 'StayAt(4);' Help.! true ? } if true ? } loop pop2nd % % stack: can-change % } { % % no device or no machine, must be allowed tab % } ifelse } { % % failed basic tests % } ifelse "machtab" log)( % % stack: can-change % dup { wired( < |Change "Change the allowed fields highlighted in blue." |New fork@)? { "Create a new program entry." } { "Create a new machine launch entry." } ifelse |Portal "Database operations performed here." |Partner "Partner operations performed here." |Upload "Upload operations." |Download "Download operations." |Listen "Machine monitoring operations." |Options fork@)? { "Machine and Program operations." } { "Machine launch operations." } ifelse > not { empty } if *enterinf Help.! } if