Lines Matching +full:- +full:c
1 \ Copyright (c) 2012 Devin Teske <dteske@FreeBSD.org>
26 marker task-menusets.4th
28 vocabulary menusets-infrastructure
29 only forth also menusets-infrastructure definitions
37 : menuset-loadvar ( -- )
48 s" cmdbuf" getenv swap drop ( -- u1 ) \ get string length
51 ( u1 -- u1 c-addr2 u2 )
54 ( u1 -- u1 c-addr2 u2 )
56 evaluate ( u1 c-addr2 u2 -- u1 )
57 s" cmdbuf" getenv ( u1 -- u1 c-addr2 u2 )
58 rot 2 pick 2 pick over + -rot + tuck -
59 ( u1 c-addr2 u2 -- c-addr2 u2 c-addr1 u1 )
61 getenv dup -1 = if
62 ( c-addr2 u2 c-addr1 u1 -- c-addr2 u2 -1 )
63 \ NOT set -- clean up the stack
64 drop ( c-addr2 u2 -1 -- c-addr2 u2 )
65 2drop ( c-addr2 u2 -- )
67 ( c-addr2 u2 c-addr1 u1 -- c-addr2 u2 c-addr1 u1 )
68 \ SET -- execute cmdbuf (c-addr2/u2) to inherit value
69 2drop ( c-addr2 u2 c-addr1 u1 -- c-addr2 u2 )
70 evaluate ( c-addr2 u2 -- )
76 : menuset-unloadvar ( -- )
96 : menuset-loadmenuvar ( -- )
98 menuset-loadvar
101 : menuset-unloadmenuvar ( -- )
103 menuset-unloadvar
106 : menuset-loadxvar ( -- )
118 s" cmdbuf" getenv swap drop ( -- u1 ) \ get string length
121 ( u1 -- u1 c-addr2 u2 )
124 ( u1 -- u1 c-addr2 u2 )
126 evaluate ( u1 c-addr2 u2 -- u1 )
127 s" cmdbuf" getenv ( u1 -- u1 c-addr2 u2 )
128 rot 2 pick 2 pick over + -rot + tuck -
129 ( u1 c-addr2 u2 -- c-addr2 u2 c-addr1 u1 )
131 getenv dup -1 = if
132 ( c-addr2 u2 c-addr1 u1 -- c-addr2 u2 -1 )
133 \ NOT set -- clean up the stack
134 drop ( c-addr2 u2 -1 -- c-addr2 u2 )
135 2drop ( c-addr2 u2 -- )
137 ( c-addr2 u2 c-addr1 u1 -- c-addr2 u2 c-addr1 u1 )
138 \ SET -- execute cmdbuf (c-addr2/u2) to inherit value
139 2drop ( c-addr2 u2 c-addr1 u1 -- c-addr2 u2 )
140 evaluate ( c-addr2 u2 -- )
146 : menuset-unloadxvar ( -- )
167 : menuset-loadansixvar ( -- )
169 menuset-loadxvar
172 : menuset-unloadansixvar ( -- )
174 menuset-unloadxvar
177 : menuset-loadmenuxvar ( -- )
179 menuset-loadxvar
182 : menuset-unloadmenuxvar ( -- )
184 menuset-unloadxvar
187 : menuset-loadtoggledxvar ( -- )
189 menuset-loadxvar
192 : menuset-unloadtoggledxvar ( -- )
194 menuset-unloadxvar
197 : menuset-loadxyvar ( -- )
210 s" cmdbuf" getenv swap drop ( -- u1 ) \ get string length
213 ( u1 -- u1 c-addr2 u2 )
216 ( u1 -- u1 c-addr2 u2 )
218 evaluate ( u1 c-addr2 u2 -- u1 )
219 s" cmdbuf" getenv ( u1 -- u1 c-addr2 u2 )
220 rot 2 pick 2 pick over + -rot + tuck -
221 ( u1 c-addr2 u2 -- c-addr2 u2 c-addr1 u1 )
223 getenv dup -1 = if
224 ( c-addr2 u2 c-addr1 u1 -- c-addr2 u2 -1 )
225 \ NOT set -- clean up the stack
226 drop ( c-addr2 u2 -1 -- c-addr2 u2 )
227 2drop ( c-addr2 u2 -- )
229 ( c-addr2 u2 c-addr1 u1 -- c-addr2 u2 c-addr1 u1 )
230 \ SET -- execute cmdbuf (c-addr2/u2) to inherit value
231 2drop ( c-addr2 u2 c-addr1 u1 -- c-addr2 u2 )
232 evaluate ( c-addr2 u2 -- )
238 : menuset-unloadxyvar ( -- )
260 : menuset-loadansixyvar ( -- )
262 menuset-loadxyvar
265 : menuset-unloadansixyvar ( -- )
267 menuset-unloadxyvar
270 : menuset-loadmenuxyvar ( -- )
272 menuset-loadxyvar
275 : menuset-unloadmenuxyvar ( -- )
277 menuset-unloadxyvar
280 : menuset-setnum-namevar ( N -- C-Addr/U )
282 s" menuset_nameNNNNN" ( n -- n c-addr1 u1 ) \ variable basename
283 drop 12 ( n c-addr1 u1 -- n c-addr1 12 ) \ remove "NNNNN"
284 rot ( n c-addr1 12 -- c-addr1 12 n ) \ move number on top
287 s>d <# #s #> ( c-addr1 12 n -- c-addr1 12 c-addr2 u2 )
290 begin ( using u2 in c-addr2/u2 pair as countdown to zero )
291 over ( c-addr1 u1 c-addr2 u2 -- continued below )
292 ( c-addr1 u1 c-addr2 u2 c-addr2 ) \ copy src-addr
293 c@ ( c-addr1 u1 c-addr2 u2 c-addr2 -- continued below )
294 ( c-addr1 u1 c-addr2 u2 c ) \ get next src-addr byte
296 ( c-addr1 u1 c-addr2 u2 c -- continued below )
297 ( c-addr1 u1 c-addr2 u2 c c-addr1 u1 )
298 \ get destination c-addr1/u1 pair
299 + ( c-addr1 u1 c-addr2 u2 c c-addr1 u1 -- cont. below )
300 ( c-addr1 u1 c-addr2 u2 c c-addr3 )
301 \ combine dest-c-addr to get dest-addr for byte
302 c! ( c-addr1 u1 c-addr2 u2 c c-addr3 -- continued below )
303 ( c-addr1 u1 c-addr2 u2 )
304 \ store the current src-addr byte into dest-addr
306 2swap 1+ 2swap \ increment u1 in destination c-addr1/u1 pair
307 swap 1+ swap \ increment c-addr2 in source c-addr2/u2 pair
308 1- \ decrement u2 in the source c-addr2/u2 pair
313 2drop ( c-addr1 u1 c-addr2 u2 -- c-addr1 u1 )
314 \ drop temporary number-format conversion c-addr2/u2
317 : menuset-checksetnum ( N -- )
320 \ adjust input to be both positive and no-higher than 65535
322 abs dup 65535 > if drop 65535 then ( n -- n )
326 \ methodology (referencing the original numeric stack-input), or if-
333 menuset-setnum-namevar
338 2dup ( c-addr1 u1 -- c-addr1 u1 c-addr1 u1 ) \ save a copy
339 getenv dup -1 <> if ( c-addr1 u1 c-addr1 u1 -- c-addr1 u1 c-addr2 u2 )
344 2swap 2drop ( c-addr1 u1 c-addr2 u2 -- c-addr2 u2 )
346 else ( c-addr1 u1 c-addr1 u1 -- c-addr1 u1 -1 ) \ no such variable
350 drop ( c-addr1 u1 -1 -- c-addr1 u1 ) \ drop -1 result
351 12 - swap 12 + swap ( c-addr1 u1 -- c-addr2 u2 )
352 \ truncate to original numeric stack-input
358 \ variables or we have a string representing the numeric stack-input
361 \ For example, if the stack-input is 1 and menuset_name1 is NOT set
363 \ ansiset1_caption[x] -> ansi_caption[x]
364 \ ansiset1_caption[x][y] -> ansi_caption[x][y]
365 \ menuset1_acpi -> menu_acpi
366 \ menuset1_caption[x] -> menu_caption[x]
367 \ menuset1_caption[x][y] -> menu_caption[x][y]
368 \ menuset1_command[x] -> menu_command[x]
369 \ menuset1_init -> ``evaluated''
370 \ menuset1_init[x] -> menu_init[x]
371 \ menuset1_kernel -> menu_kernel
372 \ menuset1_keycode[x] -> menu_keycode[x]
373 \ menuset1_options -> menu_options
374 \ menuset1_optionstext -> menu_optionstext
375 \ menuset1_reboot -> menu_reboot
376 \ toggledset1_ansi[x] -> toggled_ansi[x]
377 \ toggledset1_text[x] -> toggled_text[x]
379 \ represents the value of $menuset_name1 (given 1 as stack-input):
380 \ {name}ansi_caption[x] -> ansi_caption[x]
381 \ {name}ansi_caption[x][y] -> ansi_caption[x][y]
382 \ {name}menu_acpi -> menu_acpi
383 \ {name}menu_caption[x] -> menu_caption[x]
384 \ {name}menu_caption[x][y] -> menu_caption[x][y]
385 \ {name}menu_command[x] -> menu_command[x]
386 \ {name}menu_init -> ``evaluated''
387 \ {name}menu_init[x] -> menu_init[x]
388 \ {name}menu_kernel -> menu_kernel
389 \ {name}menu_keycode[x] -> menu_keycode[x]
390 \ {name}menu_options -> menu_options
391 \ {name}menu_optionstext -> menu_optionstext
392 \ {name}menu_reboot -> menu_reboot
393 \ {name}toggled_ansi[x] -> toggled_ansi[x]
394 \ {name}toggled_text[x] -> toggled_text[x]
397 \ for the entire menu (for wholly dynamic menus) opposed to the per-
398 \ menuitem initializers (with [x] afterward). The whole-menu init
401 \ can initialize the menuset before we transfer it to active-duty.
406 \ to our buffer so that we can safely use the s-quote (s") buf again.
408 menuset_affixbuf 0 2swap ( c-addr2 u2 -- c-addr1 0 c-addr2 u2 )
409 begin ( using u2 in c-addr2/u2 pair as countdown to zero )
410 over ( c-addr1 u1 c-addr2 u2 -- c-addr1 u1 c-addr2 u2 c-addr2 )
411 c@ ( c-addr1 u1 c-addr2 u2 -- c-addr1 u1 c-addr2 u2 c )
413 ( c-addr1 u1 c-addr2 u2 c -- continued below )
414 ( c-addr1 u1 c-addr2 u2 c c-addr1 u1 )
415 + ( c-addr1 u1 c-addr2 u2 c c-addr1 u1 -- continued below )
416 ( c-addr1 u1 c-addr2 u2 c c-addr3 )
417 c! ( c-addr1 u1 c-addr2 u2 c c-addr3 -- continued below )
418 ( c-addr1 u1 c-addr2 u2 )
420 swap 1+ swap \ increment strbuf pointer (source c-addr2)
421 1- \ decrement strbuf byte count (source u2)
424 2drop ( c-addr1 u1 c-addr2 u2 -- c-addr1 u1 ) \ drop strbuf c-addr2/u2
431 s" affix" setenv ( c-addr1 u1 -- )
434 : menuset-cleanup ( -- )
442 only forth definitions also menusets-infrastructure
444 : menuset-loadsetnum ( N -- )
446 menuset-checksetnum ( n -- )
450 \ dealing with variable-length strings easier.
458 menuset-loadmenuvar
460 \ If menu_init was set by the above, evaluate it here-and-now
462 s" menu_init" 2dup getenv dup -1 <> if
463 2swap unsetenv \ don't want later menu-create to re-call this
466 drop 2drop ( n c-addr u -1 -- n )
469 [char] 1 ( -- x ) \ Loop range ASCII '1' (49) to '8' (56)
471 dup menuset_x tuck c! 1 s" x" setenv \ set loop iterator and $x
476 menuset-loadmenuxvar
479 menuset-loadansixvar
481 [char] 0 ( x -- x y ) \ Inner Loop ASCII '1' (48) to '9' (57)
483 dup menuset_y tuck c! 1 s" y" setenv
487 menuset-loadmenuxyvar
490 menuset-loadansixyvar
492 1+ dup 57 > ( x y -- y' 0|-1 ) \ increment and test
494 drop ( x y -- x )
498 menuset-loadmenuxvar
502 menuset-loadmenuxvar
506 menuset-loadmenuxvar
510 menuset-loadtoggledxvar
514 menuset-loadtoggledxvar
516 1+ dup 56 > ( x -- x' 0|-1 ) \ increment iterator
519 drop ( x -- ) \ loop iterator
523 menuset-loadmenuvar
527 menuset-loadmenuvar
531 menuset-loadmenuvar
535 menuset-loadmenuvar
539 menuset-loadmenuvar
541 menuset-cleanup
544 : menusets-unset ( -- )
549 dup menuset-checksetnum ( n n -- n )
551 dup menuset-setnum-namevar ( n n -- n )
562 evaluate s" buf" getenv getenv -1 = if
563 drop ( n -- )
565 menuset-cleanup
568 drop ( n c-addr2 -- n ) \ unused
571 [char] 1 ( n -- n x ) \ Loop range ASCII '1' (49) to '8' (56)
573 dup menuset_x tuck c! 1 s" x" setenv \ set $x to x
576 menuset-unloadmenuxvar
577 menuset-unloadmenuxvar
578 menuset-unloadansixvar
579 [char] 0 ( n x -- n x y ) \ Inner loop '0' to '9'
581 dup menuset_y tuck c! 1 s" y" setenv
583 menuset-unloadmenuxyvar
584 menuset-unloadansixyvar
585 1+ dup 57 > ( n x y -- n x y' 0|-1 )
587 drop ( n x y -- n x )
588 s" set var=command" evaluate menuset-unloadmenuxvar
589 s" set var=init" evaluate menuset-unloadmenuxvar
590 s" set var=keycode" evaluate menuset-unloadmenuxvar
591 s" set var=text" evaluate menuset-unloadtoggledxvar
592 s" set var=ansi" evaluate menuset-unloadtoggledxvar
594 1+ dup 56 > ( x -- x' 0|-1 ) \ increment and test
596 drop ( n x -- n ) \ loop iterator
598 s" set var=acpi" evaluate menuset-unloadmenuvar
599 s" set var=init" evaluate menuset-unloadmenuvar
600 s" set var=kernel" evaluate menuset-unloadmenuvar
601 s" set var=options" evaluate menuset-unloadmenuvar
602 s" set var=optionstext" evaluate menuset-unloadmenuvar
603 s" set var=reboot" evaluate menuset-unloadmenuvar
605 1+ dup 65535 > ( n -- n' 0|-1 ) \ increment and test
607 drop ( n' -- ) \ loop iterator
610 menuset-cleanup
615 : menuset-loadinitial ( -- )
616 s" menuset_initial" getenv dup -1 <> if
618 menuset-loadsetnum