- maxy = maxx / 16 * 9 
-   
- 'loads allowed characters (ac) from file 
- DIM SHARED-  alch  'amount of different allowed characters
 
-   
- 'font 
- DIM SHARED-  maxlines  'maximum amount of columns
 
- fontheight = 16 
- fontfiler$ = "C:\WINDOWS\FONTS\COUR.TTF" 
- r&  = _LOADFONT(- fontfiler$ ,-  fontheight , "MONOSPACE")
- maxrows  = INT(- maxx  /-  fontwidth )
- maxlines  = INT(- maxy  /-  fontheight ) - 4
-   
- 'menu (alphabetically sorted) 
- maxmenuitems = 50 
- maxarraylen = 20 
- mafirstchars = 3000 
- DIM SHARED-  arraydata$ (- maxmenuitems ,-  maxarraylen ) '  used to store the contents of selectors and dropdown elements
 
- DIM SHARED-  backspace (- maxmenuitems ) '                determines whether backspace was pressed during an active input
 
- DIM SHARED-  basex (- maxmenuitems ) '                    represents the very left x value of a menu object
 
- DIM SHARED-  basey (- maxmenuitems ) '                    represents the very top y value of a menu object
 
- DIM SHARED-  borderoffsetx (- maxmenuitems ) '            change this to widen/narrow items with borders
 
- DIM SHARED-  borderoffsety (- maxmenuitems ) '            change this to widen/narrow items with borders
 
- DIM SHARED-  c (- maxmenuitems ) '                        amount of characters in input element
 
- DIM SHARED-  cbf (- maxmenuitems ) '                      amount of characters in input element, but from one loop before
 
- DIM SHARED-  char$ (- maxmenuitems ,-  mafirstchars ) '      single character within element at specific position
 
- DIM SHARED-  defaultstyle (- maxmenuitems ) '             determines the default style of a menu object
 
- DIM SHARED-  destination$ (- maxmenuitems ) '             what should happen if the user interacts with this element
 
- DIM SHARED-  editpos (- maxmenuitems ) '                  current editing position in input
 
- DIM SHARED-  endparameter$  '                          this gives you info about what the user did in the menu, can be used to transfer data (could potentially convert the RunMenu SUB into a Function...)
 
- DIM SHARED-  endx (- maxmenuitems ) '                     represents the very right x value of a menu object
 
- DIM SHARED-  endy (- maxmenuitems ) '                     represents the very bottom y value of a menu object
 
- DIM SHARED-  expanded (- maxmenuitems ) '                 if the dropdown menu is expanded
 
- DIM SHARED-  fill$ (- maxmenuitems ) '                    text to fill the editable part of an input with, good for stuff that is loaded, changed, then saved again
 
- DIM SHARED-  firstprint (- maxmenuitems ) '               equals 0 if the element hasn't been written on screen before, can be used to reinitialize it
 
- DIM SHARED-  kind$ (- maxmenuitems ) '                    defines the button type
 
- DIM SHARED-  inter (- maxmenuitems ) '                    if element is interactable with
 
- DIM SHARED-  m  '                                      could be used to get current element and use it in other SUB's/Functions
 
- DIM SHARED-  maxad (- maxmenuitems ) '                    amount of data in array
 
- DIM SHARED-  maxadlength (- maxmenuitems ) '              maximum length of array data for dropdown element
 
- DIM SHARED-  maxc (- maxmenuitems ) '                     maximum amount of characters in input element
 
- DIM SHARED-  maxmi  '                                  highest interactable element
 
- DIM SHARED-  maxval (- maxmenuitems ) '                   maximum value of slider element
 
- DIM SHARED-  minval (- maxmenuitems ) '                   minimum value of slider element
 
- DIM SHARED-  overlaptrigger (- maxmenuitems ) '           used to deal with overlapping issues of dropdown-elements
 
- DIM SHARED-  selected (- maxmenuitems ) '                 selectd object within array of element
 
- DIM SHARED-  setting$ (- maxmenuitems ) '                 setting that the toggle element changes
 
- DIM SHARED-  state (- maxmenuitems ) '                    state of toggle element
 
- DIM SHARED-  status$ (- maxmenuitems ) '                  used for interactive elements, "finished" if determined done (e.g. for filling out forms)
 
- DIM SHARED-  style (- maxmenuitems ) '                    current style of an element
 
- DIM SHARED-  text$ (- maxmenuitems ) '                    non-editable text in front of input
 
- DIM SHARED-  trigger (- maxmenuitems ) '                  it's used, but idk what it does anymore :'D
 
- DIM SHARED-  UserInput$ (- maxmenuitems ) '               full input text of input element, for usage after menu is run
 
- DIM SHARED-  value (- maxmenuitems ) '                    current value of slider element
 
- DIM SHARED-  xoffset (- maxmenuitems ) '                  positioning on x-axis
 
- DIM SHARED-  yoffset (- maxmenuitems ) '                  positioning on y-axis
 
- 'dropdown triangles :D (ascii chars could work maybe?) 
-   
- 'color definitions 
- maxcolors = 5 
- r(1) = 237: g(1) = r(1): b(1) = r(1): a(1) = 255 '_RGBA(237, 237, 237, 255)     - white 
- r(2) = 15: g(2) = r(2): b(2) = r(2): a(2) = 255 '_RGBA(15, 15, 15, 255)         - black 
- r(3) = 28: g(3) = 166: b(3) = 28: a(3) = 255 '_RGBA(28, 166, 28, 255)           - green 
- r(4) = 244: g(4) = 188: b(4) = 67: a(4) = 255 '_RGBA(244, 188, 67, 255)         - orange/yellow 
- r(5) = 216: g(5) = 33: b(5) = 17: a(5) = 255 ' _RGBA(216, 33, 17, 255)          - red 
-   
- 'load the allowed input characters, feel free to change these :) 
- ac = 0 
-     ac = ac + 1 
- alch = ac 
-   
- 'change these to your liking! 
- firstline = 2 
- firstchar = 5 
-   
- '================================================= PROGRAM AREA ================================================= 
-   
- ClearMenu 
- 'add your elements here 
- NewText 1, 0, "Test", 0 
-   
- NewToggle 2, 0, "ToggleTest", "lmao" 
-   
- NewSlider 3, 0, 0, 100, "Test Value" 
-   
- NewButton 4, 0, "Button!", 0, "redirection", "nowhere" 
-   
- NewSelector 5, 0, "Select" 
- arraydata$(5, 1) = "this" 
- arraydata$(5, 2) = "that" 
- maxad(5) = 2 
-   
- NewDropdown 6, 0, "Select" 
- arraydata$(6, 1) = "dis" 
- arraydata$(6, 2) = "dat" 
- maxad(6) = 2 
-   
- NewInput 7, 0, "Write here:", "actually, don't" 
-   
- RunMenu 
-   
- '=================================================== SUB AREA =================================================== 
-   
- SUB-  NewText  (- yoffset ,-  xoffset ,-  text$ ,-  style )
 
-     m = m + 1 
-     inter(m) = 0 
-     yoffset(m) = yoffset * 2 
-     xoffset(m) = xoffset 
-     text$(m) = text$ 
-     style(m) = style 
-     status$(m) = "" 
-   
- SUB-  NewToggle  (- yoffset ,-  xoffset ,-  text$ ,-  setting$ )
 
-     m = m + 1 
-     setting$(m) = setting$ 
-             state(m) = SETTING_VALUE 'writes the state of the value used into the menu so it displays properly 
-     text$(m) = text$ 
-     yoffset(m) = yoffset * 2 
-     xoffset(m) = xoffset 
-     basex (- m ) = (- firstchar  + (LEN(- text$ )) +-  xoffset (- m ) + 1) *-  fontwidth 
-     basey(m) = (firstline + yoffset(m) - 1) * fontheight - (fontheight / 2) 
-     endx(m) = basex(m) + 2 * fontheight 
-     endy(m) = (firstline + yoffset(m)) * fontheight + (fontheight / 3) 
-   
- SUB-  NewSlider  (- yoffset ,-  xoffset ,-  minval ,-  maxval ,-  text$ )
 
-     m = m + 1 
-     inter(m) = 1 
-     maxmi = m 
-     yoffset(m) = yoffset * 2 
-     minval(m) = minval 
-     maxval(m) = maxval 
-     xoffset(m) = xoffset 
-     text$(m) = text$ 
-     basex (- m ) = (- firstchar  +-  xoffset (- m ) + LEN(- text$ (- m ))) *-  fontwidth  + (- fontwidth  / 2) 'change this to fit your setup
-     value(m) = maxval(m) 
-     endx(m) = basex(m) + (maxx / 4) + 4 
-     status$(m) = "" 
-   
- SUB-  NewButton  (- yoffset ,-  xoffset ,-  text$ ,-  style ,-  kind$ ,-  destination$ )
 
-     m = m + 1 
-     maxmi = m 
-     inter(m) = 1 
-     yoffset(m) = yoffset * 2 
-     xoffset(m) = xoffset 
-     borderoffsetx(m) = 0 
-     borderoffsety(m) = 0 
-     text$(m) = text$ 
-     basex(m) = (firstchar + xoffset(m) - 1) * fontwidth - (fontwidth / 2) + borderoffsetx(m) 
-     endx (- m ) =-  basex (- m ) + (LEN(- text$ (- m )) + 1) *-  fontwidth  + (- fontwidth  / 2)
-     basey(m) = (firstline + yoffset(m) - 1) * fontheight - (fontheight / 2) + borderoffsety(m) 
-     endy(m) = (firstline + yoffset(m)) * fontheight + (fontheight / 3) + borderoffsety(m) 
-     kind$(m) = kind$ 
-     destination$(m) = destination$ 
-     style(m) = style 
-     defaultstyle(m) = style 
-     status$(m) = "" 
-   
- SUB-  NewSelector  (- yoffset ,-  xoffset ,-  text$ )
 
-     m = m + 1 
-     inter(m) = 1 
-     maxmi = m 
-     selected(m) = 1 
-     text$(m) = text$ 
-     yoffset(m) = yoffset * 2 
-     xoffset(m) = xoffset 
-     basex(m) = (firstchar + xoffset(m) - 1) * fontwidth - (fontwidth / 2) 
-     basey(m) = (firstline + yoffset(m) - 1) * fontheight - (fontheight / 2) 
-     endx (- m ) =-  basex (- m ) + (LEN(- text$ ) + 1) *-  fontwidth  + (- fontwidth  / 2)
-     endy(m) = (firstline + yoffset(m)) * fontheight + (fontheight / 3) 
-   
- SUB-  NewDropdown  (- yoffset ,-  xoffset ,-  text$ )
 
-     m = m + 1 
-     inter(m) = 1 
-     maxmi = m 
-     yoffset(m) = yoffset * 2 
-     xoffset(m) = xoffset 
-     borderoffsetx(m) = 0 
-     borderoffsety(m) = -2 
-     text$(m) = text$ 
-     basex (- m ) = (- firstchar  +-  xoffset (- m ) + LEN(- text$ (- m )) + 1) *-  fontwidth  - (- fontwidth  / 2) +-  borderoffsetx (- m ) 'left end of dropdown box
-     basey(m) = (firstline + yoffset(m) - 1) * fontheight - (fontheight / 2) + borderoffsety(m) 
-     endy(m) = (firstline + yoffset(m)) * fontheight + (fontheight / 3) + borderoffsety(m) 
-     status$(m) = "" 
-   
- SUB-  NewInput  (- yoffset ,-  xoffset ,-  text$ ,-  fill$ )
 
-     m = m + 1 
-     inter(m) = 1 
-     maxmi = m 
-         c(m) = 0 
-             c(m) = c(m) + 1 
-             char$(m, c(m)) = "" 
-         c(m) = 0 
-         maxc(m) = 0 
-     yoffset(m) = yoffset * 2 
-     fill$(m) = fill$ 
-     text$(m) = text$ 
-     xoffset(m) = xoffset 
-     status$(m) = "" 
-   
-     m = 0 
-     'ERASE c, cbf, char$, firstprint, type$, UserInput$, status$, destination$, style, defaultstyle, basex, endx, basey, endy 
-     maxm = 0 
-     activem = 1 
-     maxmi = 0 
-   
-     'add more background elements here if you want! you can just add a parameter to RunMenu to get the info which BG should be used 
-     endparameter$ = "" 
-     maxm = m 
-     activem = 1 
-         '_LIMIT 120 
-                 IF-  activem  <-  maxmm  AND-  inter (- activem ) = 1 THEN
 
-                     status$(activem) = "finished" 
-                     activem = activem + 1 
-                     activem = activem + 1 
-                     activem = 1 
-                     activem = activem - 1 
-                     activem = maxm 
-                     activem = activem + 1 
-                     activem = 1 
-                     activem = activem - 1 
-                     activem = maxm 
-                 IF-  selected (- activem ) <-  maxad (- activem ) THEN
 
-                     selected(activem) = selected(activem) + 1 
-                     selected(activem) = 1 
-                     selected(activem) = selected(activem) - 1 
-                     selected(activem) = maxad(activem) 
-         m = 0 
-             m = m + 1 
-                     checkm = 0 
-                         checkm = checkm + 1 
-                         IF-  overlaptrigger (- checkm ) = 1 AND-  checkm  <-  m  THEN
 
-                             overlaptrigger(checkm) = 0 
-                             firstprint(m) = 0 
-                         firstprint(m) = 1 
-                         LOCATE-  firstline  +-  yoffset (- m ),-  firstchar  +-  xoffset (- m )
 
-                                         mouseclicked = 1 
-                                             state(m) = 0 
-                                             state(m) = 1 
-                         mouseclicked = 0 
-                         firstprint(m) = 1 
-                         printtoggle: 
-                                 LINE (- basex (- m ),-  basey (- m ))-(- endx (- m ),-  endy (- m )), _RGBA(- r (1),-  g (1),-  b (1),-  a (1)),-  BF 
 
-                                 LINE (- basex (- m ),-  basey (- m ))-(- endx (- m ),-  endy (- m )), _RGBA(- r (2),-  g (2),-  b (2),-  a (2)),-  B 
 
-                                 LINE (- basex (- m ) + 2,-  basey (- m ) + 2)-(- endx (- m ) - (- endx (- m ) --  basex (- m )) / 2 - 2,-  endy (- m ) - 2), _RGBA(- r (2),-  g (2),-  b (2),-  a (2)),-  BF 
 
-                                 LINE (- basex (- m ),-  basey (- m ))-(- endx (- m ),-  endy (- m )), _RGBA(- r (2),-  g (2),-  b (2),-  a (2)),-  BF 
 
-                                 LINE (- basex (- m ) + (- endx (- m ) --  basex (- m )) / 2 + 2,-  basey (- m ) + 2)-(- endx (- m ) - 2,-  endy (- m ) - 2), _RGBA(- r (4),-  g (4),-  b (4),-  a (4)),-  BF 
 
-                         LOCATE-  firstline  +-  yoffset (- m ),-  firstchar  +-  xoffset (- m )
 
-                     checkm = 0 
-                         checkm = checkm + 1 
-                         IF-  overlaptrigger (- checkm ) = 1 AND-  checkm  <-  m  THEN
 
-                             overlaptrigger(checkm) = 0 
-                             firstprint(m) = 0 
-                         firstprint(m) = 1 
-                                 LINE (- basex (- m ),-  basey (- m ))-(- endx (- m ),-  endy (- m )), _RGBA(- r (1),-  g (1),-  b (1),-  a (1)),-  BF 
 
-                                 LINE (- basex (- m ),-  basey (- m ))-(- endx (- m ),-  endy (- m )), _RGBA(- r (2),-  g (2),-  b (2),-  a (2)),-  B 
 
-                                 LINE (- basex (- m ),-  basey (- m ))-(- endx (- m ),-  endy (- m )), _RGBA(- r (2),-  g (2),-  b (2),-  a (2)),-  BF 
 
-                             CASE IS = 2 'colored (color index 3) 
-                                 LINE (- basex (- m ),-  basey (- m ))-(- endx (- m ),-  endy (- m )), _RGBA(- r (3),-  g (3),-  b (3),-  a (3)),-  BF 
 
-                             CASE IS = 3 'color border (color index 3) 
-                                 LINE (- basex (- m ),-  basey (- m ))-(- endx (- m ),-  endy (- m )), _RGBA(- r (1),-  g (1),-  b (1),-  a (1)),-  B 
 
-                                 LINE (- basex (- m ),-  basey (- m ))-(- endx (- m ),-  endy (- m )), _RGBA(- r (3),-  g (3),-  b (3),-  a (3)),-  B 
 
-                         LOCATE-  firstline  +-  yoffset (- m ),-  firstchar  +-  xoffset (- m )
 
-                                         style(m) = 1 
-                                         style(m) = 0 
-                                         style(m) = 3 
-                                         style(m) = 2 
-                                 IF-  firstprint (- m ) = 1 THEN-  firstprint (- m ) = 0
 
-                                             endparameter$ = "true" 
-                                             status$(maxmi) = "finished" 
-                                         CASE IS = "redirect" 'used for going to another marker, menu or similar 
-                                                     status$(maxmi) = "finished" 
-                                             IF MID$(- destination$ (- m ), LEN(- destination$ (- m )), 1) = ":" THEN 'if destination$ has : at the end, it will end the menu because it interprets it as going to another place
 
-                                                 status$(maxmi) = "finished" 
-                                                 endparameter$ = destination$(m) 
-                                 IF-  defaultstyle (- m ) <>-  style (- m ) THEN-  style (- m ) =-  defaultstyle (- m )- : firstprint (- m ) = 0
 
-                             IF-  defaultstyle (- m ) <>-  style (- m ) THEN-  style (- m ) =-  defaultstyle (- m )- : firstprint (- m ) = 0
 
-                     checkm = 0 
-                         checkm = checkm + 1 
-                         IF-  overlaptrigger (- checkm ) = 1 AND-  checkm  <-  m  THEN
 
-                             overlaptrigger(checkm) = 0 
-                             firstprint(m) = 0 
-                         firstprint(m) = 1 
-                         LOCATE-  firstline  +-  yoffset (- m ),-  firstchar  +-  xoffset (- m )
 
-                         'horizontal 
-                         LINE (- basex (- m ), (- firstline  +-  yoffset (- m ) - 1) *-  fontheight  + (- fontheight  / 2))-(- basex (- m ) + (- maxx  / 4), (- firstline  +-  yoffset (- m ) - 1) *-  fontheight  + (- fontheight  / 2) + 1), _RGBA(- r (2),-  g (2),-  b (2),-  a (2)),-  BF 
 
-                         'vertical 
-                         LINE (- basex (- m ) + (- value (- m ) /-  maxval (- m ) * (- maxx  / 4)), (- firstline  +-  yoffset (- m ) - 1) *-  fontheight  + 1)-(- basex (- m ) + 4 + (- value (- m ) /-  maxval (- m ) * (- maxx  / 4)), (- firstline  +-  yoffset (- m )) *-  fontheight  - 1), _RGBA(- r (2),-  g (2),-  b (2),-  a (2)),-  BF 
 
-                         xvalue  =-  firstchar  +-  xoffset (- m ) + LEN(- text$ (- m )) + ((- maxx  / 4) /-  fontwidth ) + 2
-                         LOCATE-  firstline  +-  yoffset (- m ),-  xvalue 
 
-                             IF _MOUSEY > (- firstline  +-  yoffset (- m ) - 1) *-  fontheight  + 1 AND _MOUSEY < (- firstline  +-  yoffset (- m )) *-  fontheight  - 1 THEN
 
-                                         value (- m ) = INT(- value (- m ) / (- maxx  / 4) * 100)
-                                         printslider: 
-                                         'cleanup 
-                                         LINE (- basex (- m ), (- firstline  +-  yoffset (- m ) - 1) *-  fontheight  + 1)-(- endx (- m ), (- firstline  +-  yoffset (- m )) *-  fontheight  - 1), _RGBA(- r (1),-  g (1),-  b (1),-  a (1)),-  BF 
 
-   
-                                         'horizontal 
-                                         LINE (- basex (- m ), (- firstline  +-  yoffset (- m ) - 1) *-  fontheight  + (- fontheight  / 2))-(- endx (- m ), (- firstline  +-  yoffset (- m ) - 1) *-  fontheight  + (- fontheight  / 2) + 1), _RGBA(- r (2),-  g (2),-  b (2),-  a (2)),-  BF 
 
-                                         'vertical 
-                                         LINE (- basex (- m ) + (- value (- m ) /-  maxval (- m ) * (- maxx  / 4)), (- firstline  +-  yoffset (- m ) - 1) *-  fontheight  + 1)-(- basex (- m ) + 4 + (- value (- m ) /-  maxval (- m ) * (- maxx  / 4)), (- firstline  +-  yoffset (- m )) *-  fontheight  - 1), _RGBA(- r (2),-  g (2),-  b (2),-  a (2)),-  BF 
 
-                                         xvalue  =-  firstchar  +-  xoffset (- m ) + LEN(- text$ (- m )) + ((- maxx  / 4) /-  fontwidth ) + 2
-                                         LOCATE-  firstline  +-  yoffset (- m ),-  xvalue 
 
-                                             value(m) = minval(m) 
-                                             value(m) = maxval(m) 
-                 CASE IS = "selector" 'simpler and in-line version of dropdown 
-                             IF _MOUSEX > (- firstchar  +-  xoffset (- m )) *-  fontwidth  + (- fontwidth  / 2) AND _MOUSEX < (- firstchar  +-  xoffset (- m ) + LEN(- text$ (- m )) + LEN(- arraydata$ (- m ,-  selected (- m ))) + 5) *-  fontwidth  + (- fontwidth  / 2) THEN
 
-                                     checkm = 0: dontgoactive = 0 
-                                         checkm = checkm + 1 
-                                         IF-  expanded (- checkm ) = 1 THEN-  dontgoactive  = 1 ELSE-  dontgoactive  = 0
 
-                                     IF-  dontgoactive  = 0 THEN-  activem  =-  m 
 
-                     'shows non-editable text 
-                     LOCATE-  firstline  +-  yoffset (- m ),-  firstchar  +-  xoffset (- m )
 
-   
-                     'shows editable text 
-                     PRINT-  arraydata$ (- m ,-  selected (- m ))- ; 
 
-                     IF-  activem  =-  m  THEN 'only enables keys if dropdown menu is active
 
-                                     expanded(m) = 0 
-                                     overlaptrigger(m) = 1 
-                                     expanded(m) = 1 
-                                     selected(m) = selected(m) - 1 
-                                     selected(m) = maxad(m) 
-                                 IF-  selected (- m ) <-  maxad (- m ) THEN
 
-                                     selected(m) = selected(m) + 1 
-                                     selected(m) = 1 
-                     IF-  firstprint (- m ) = 0 THEN 'only prints menu once and sets variables, loads menu etc..
 
-                         firstprint(m) = 1 
-                         ad = 0 
-                             ad = ad + 1 
-                             IF-  maxadlength (- m ) < LEN(- arraydata$ (- m ,-  ad )) THEN-  maxadlength (- m ) = LEN(- arraydata$ (- m ,-  ad ))
 
-                         endx (- m ) = (- firstchar  +-  xoffset (- m ) + LEN(- text$ (- m )) +-  maxadlength (- m ) + 3) *-  fontwidth  + (- fontwidth  / 2) +-  borderoffsetx (- m ) 'right end of dropdown box
-                         selected(m) = 1 
-   
-                         reprint: 'triggered when a change occurs 
-                         'prints text in front of dropdown 
-                         LOCATE-  firstline  +-  yoffset (- m ),-  firstchar  +-  xoffset (- m )
 
-   
-                         'activem = m 
-                             LINE (- basex (- m ), (- firstline  +-  yoffset (- m ) - 1) *-  fontheight  - (- fontheight  / 3) +-  borderoffsety (- m ))-(- endx (- m ), (- firstline  +-  yoffset (- m )) *-  fontheight  + (- fontheight  / 2) +-  borderoffsety (- m )), _RGBA(- r (1),-  g (1),-  b (1),-  a (1)),-  BF 
 
-                             LINE (- basex (- m ), (- firstline  +-  yoffset (- m ) - 1) *-  fontheight  - (- fontheight  / 3) +-  borderoffsety (- m ))-(- endx (- m ), (- firstline  +-  yoffset (- m )) *-  fontheight  + (- fontheight  / 2) +-  borderoffsety (- m )), _RGBA(- r (2),-  g (2),-  b (2),-  a (2)),-  B 
 
-                             LOCATE-  firstline  +-  yoffset (- m ),-  firstchar  +-  xoffset (- m ) + LEN(- text$ (- m )) + 2
 
-                             PRINT-  arraydata$ (- m ,-  selected (- m ))
 
-                             LINE (- basex (- m ), (- firstline  +-  yoffset (- m ) - 1) *-  fontheight  - (- fontheight  / 3) +-  borderoffsety (- m ))-(- endx (- m ), (- firstline  +-  yoffset (- m ) + (- maxad (- m ) * 2) - 1) *-  fontheight  + (- fontheight  / 2) +-  borderoffsety (- m )), _RGBA(- r (1),-  g (1),-  b (1),-  a (1)),-  BF 
 
-                             ad = 0 
-                                 ad = ad + 1 
-                                 LOCATE-  firstline  +-  yoffset (- m ) + (- ad  * 2) - 2,-  firstchar  +-  xoffset (- m ) + LEN(- text$ (- m )) + 2
 
-                             LINE (- basex (- m ), (- firstline  +-  yoffset (- m ) - 1) *-  fontheight  - (- fontheight  / 3) +-  borderoffsety (- m ))-(- endx (- m ), (- firstline  +-  yoffset (- m ) + (- maxad (- m ) * 2) - 1) *-  fontheight  + (- fontheight  / 2) +-  borderoffsety (- m )), _RGBA(- r (2),-  g (2),-  b (2),-  a (2)),-  B 
 
-   
-                         'variables for dropdown triangle (right side, you know?) 
-                         p1x (- m ) = (- firstchar  +-  xoffset (- m ) + LEN(- text$ (- m )) +-  maxadlength (- m ) + 2) *-  fontwidth 
-                         p1y(m) = (firstline + yoffset(m) - 1) * fontheight + (fontheight / 3) + borderoffsety - 3 
-                         p2x(m) = p1x(m) + fontwidth 
-                         p2y(m) = p1y(m) 
-                         p3x(m) = p1x(m) + ((p2x(m) - p1x(m)) / 2) 
-                         p3y (- m ) =-  p1y (- m ) + SQR(((- fontwidth  / 2) * (- fontwidth  / 2)) + (- fontwidth  *-  fontwidth )) - (- fontheight  / 4)
-   
-                         'triangle 
-                         LINE (- p1x (- m ),-  p1y (- m ))-(- p2x (- m ),-  p2y (- m )), _RGBA(- r (2),-  g (2),-  b (2),-  a (2))
 
-                         LINE (- p1x (- m ),-  p1y (- m ))-(- p3x (- m ),-  p3y (- m )), _RGBA(- r (2),-  g (2),-  b (2),-  a (2))
 
-                         LINE (- p2x (- m ),-  p2y (- m ))-(- p3x (- m ),-  p3y (- m )), _RGBA(- r (2),-  g (2),-  b (2),-  a (2))
 
-                         PAINT (- p1x (- m ) + ((- p2x (- m ) --  p1x (- m )) / 2),-  p1y (- m ) + ((- p3y (- m ) --  p1y (- m )) / 2)), _RGBA(- r (2),-  g (2),-  b (2),-  a (2)), _RGBA(- r (2),-  g (2),-  b (2),-  a (2))
 
-                         IF-  selline  > (- firstline  +-  yoffset (- m ) - 1) AND-  selline  < (- firstline  +-  yoffset (- m ) + (- maxad (- m ) * 2) - 1) THEN
 
-                             mouseselected  = INT((- selline  - (- firstline  +-  yoffset (- m ) - 1)) / 2) + 1
-                             IF-  mouseselected  <>-  selected (- m ) AND-  expanded (- m ) = 1 THEN
 
-                                 selected(m) = mouseselected 
-                                 mouseclicked = 1 
-                                     endy(m) = (firstline + yoffset(m) + maxad(m)) * fontheight + (fontheight / 3) + borderoffsety(m) 
-                                         expanded(m) = 0 
-                                         LINE (- basex (- m ), (- firstline  +-  yoffset (- m ) - 1) *-  fontheight  - (- fontheight  / 3) +-  borderoffsety (- m ))-(- endx (- m ), (- firstline  +-  yoffset (- m ) + (- maxad (- m ) * 2) - 1) *-  fontheight  + (- fontheight  / 2) +-  borderoffsety (- m )), _RGBA(- r (1),-  g (1),-  b (1),-  a (1)),-  BF 
 
-                                         overlaptrigger(m) = 1 
-                                     endy(m) = (firstline + yoffset(m)) * fontheight + (fontheight / 3) + borderoffsety(m) 
-                                         expanded(m) = 1 
-                             mouseclicked = 0 
-                     checkm = 0 
-                         checkm = checkm + 1 
-                         IF-  overlaptrigger (- checkm ) = 1 AND-  checkm  <-  m  THEN
 
-                             overlaptrigger(checkm) = 0 
-                             firstprint(m) = 0 
-                             selectedall = 0 
-                         firstprint(m) = 1 
-                                 c(m) = c(m) + 1 
-                                 char$ (- m ,-  c (- m )) = MID$(- fill$ (- m ),-  c (- m ), 1)
-                             cbf(m) = c(m) 
-                             LOCATE-  firstline  +-  yoffset (- m ),-  firstchar  +-  xoffset (- m )
 
-                         printback: 
-                             IF TIMER MOD 2 = 0 THEN LINE ((- firstchar  +-  xoffset (- m ) + LEN(- text$ (- m )) +-  editpos (- m )) *-  fontwidth  + (- fontwidth  / 2), (- firstline  +-  yoffset (- m ) - 1) *-  fontheight  + 1)-((- firstchar  +-  xoffset (- m ) + LEN(- text$ (- m )) +-  editpos (- m )) *-  fontwidth  + (- fontwidth  / 2) + 2, (- firstline  +-  yoffset (- m )) *-  fontheight  - 1), _RGBA(- r (1),-  g (1),-  b (1),-  a (1)),-  BF 
 
-                             backspace(m) = 0 
-                             LOCATE-  firstline  +-  yoffset (- m ),-  firstchar  +-  xoffset (- m )
 
-                             cbf(m) = 0 
-                             trigger(m) = 0 
-                                 cbf(m) = cbf(m) + 1 
-                                         char$(m, cbf(m)) = char$(m, cbf(m) + 1) 
-                                     char$(m, cbf(m)) = char$(m, cbf(m) + 1) 
-                                     trigger(m) = 1 
-                             char$(m, c(m)) = "" 
-                             c(m) = c(m) - 1 
-                             IF TIMER MOD 2 = 0 THEN LINE ((- firstchar  +-  xoffset (- m ) + LEN(- text$ (- m )) +-  editpos (- m )) *-  fontwidth  + (- fontwidth  / 2), (- firstline  +-  yoffset (- m ) - 1) *-  fontheight  + 1)-((- firstchar  +-  xoffset (- m ) + LEN(- text$ (- m )) +-  editpos (- m )) *-  fontwidth  + (- fontwidth  / 2) + 2, (- firstline  +-  yoffset (- m )) *-  fontheight  - 1), _RGBA(- r (1),-  g (1),-  b (1),-  a (1)),-  BF 
 
-                             backspace(m) = 0 
-                             LOCATE-  firstline  +-  yoffset (- m ),-  firstchar  +-  xoffset (- m )
 
-                             selectedall = 0 
-                             cbf(m) = 0 
-                                 cbf(m) = cbf(m) + 1 
-                                 char$(m, cbf(m)) = "" ' clears text array 
-                             cbf(m) = c(m) 
-                             c(m) = 0 
-                                     c(m) = c(m) + 1 
-                                     char$ (- m ,-  c (- m )) = MID$(- fill$ (- m ),-  c (- m ), 1)
-                                 cbf(m) = c(m) 
-                             LOCATE-  firstline  +-  yoffset (- m ),-  firstchar  +-  xoffset (- m )
 
-                                 cbf(m) = 0 
-                                     cbf(m) = cbf(m) + 1 
-                         Taste$ = "" 
-                     IF-  activem  =-  m  THEN 'only checks keys if input is active
 
-                         loopback: 
-                             ac = 0 
-                                 ac = ac + 1 
-                                     c(m) = c(m) + 1 
-                                     char$(m, c(m)) = Taste$ 
-                         editpos(m) = c(m) 
-   
-                         'prints the new character if g has changed 
-                         IF-  cbf (- m ) <>-  c (- m ) OR-  selectedall  <>-  colorbf  THEN
 
-                             IF-  cbf (- m ) <-  c (- m ) OR-  selectedall  <>-  colorbf  THEN
 
-                                 LOCATE-  firstline  +-  yoffset (- m ),-  firstchar  +-  xoffset (- m )
 
-                                     cbf(m) = 0 
-                                         cbf(m) = cbf(m) + 1 
-                         cbf(m) = c(m) 
-   
-                         'blinking line after text 
-                             LINE ((- firstchar  +-  xoffset (- m ) + LEN(- text$ (- m )) +-  editpos (- m )) *-  fontwidth  + (- fontwidth  / 2), (- firstline  +-  yoffset (- m ) - 1) *-  fontheight  + 1)-((- firstchar  +-  xoffset (- m ) + LEN(- text$ (- m )) +-  editpos (- m )) *-  fontwidth  + (- fontwidth  / 2) + 2, (- firstline  +-  yoffset (- m )) *-  fontheight  - 1), _RGBA(- r (2),-  g (2),-  b (2),-  a (2)),-  BF 
 
-                             LINE ((- firstchar  +-  xoffset (- m ) + LEN(- text$ (- m )) +-  editpos (- m )) *-  fontwidth  + (- fontwidth  / 2), (- firstline  +-  yoffset (- m ) - 1) *-  fontheight  + 1)-((- firstchar  +-  xoffset (- m ) + LEN(- text$ (- m )) +-  editpos (- m )) *-  fontwidth  + (- fontwidth  / 2) + 2, (- firstline  +-  yoffset (- m )) *-  fontheight  - 1), _RGBA(- r (1),-  g (1),-  b (1),-  a (1)),-  BF 
 
-   
-                         'key cases 
-                                 backspace(m) = 1 
-                                 p = 0 
-                                     p = p + 1 
-                                     p = 0 
-                                         p = p + 1 
-                                         c(m) = c(m) + 1 
-                                     editpos(m) = editpos(m) - 1 
-                                     editpos(m) = editpos(m) + 1 
-                                     status$(activem) = "finished" 
-                                     activem = activem + 1 
-                                 colorbf = selectedall 
-                                     selectedall = 0 
-                                     selectedall = 1 
-                                 firstprint(m) = 1 
-                                 IF _MOUSEX > (- firstchar  +-  xoffset (- m )) *-  fontwidth  + (- fontwidth  / 2) AND _MOUSEX < (- firstchar  +-  xoffset (- m ) + LEN(- text$ (- m )) +-  c (- m )) *-  fontwidth  + (- fontwidth  / 2) THEN
 
-                                     IF _MOUSEY > (- firstline  +-  yoffset (- m ) - 1) *-  fontheight  + 1 AND _MOUSEY < (- firstline  +-  yoffset (- m )) *-  fontheight  - 1 THEN
 
-                                         checkm = 0: dontgoactive = 0 
-                                             checkm = checkm + 1 
-                                             IF-  expanded (- checkm ) = 1 THEN-  dontgoactive  = 1 ELSE-  dontgoactive  = 0
 
-                                         IF-  dontgoactive  = 0 THEN-  activem  =-  m 
 
-                             'deletes blinking line after text 
-                             editpos(m) = c(m) 
-                             IF TIMER MOD 2 = 0 THEN LINE ((- firstchar  +-  xoffset (- m ) + LEN(- text$ (- m )) +-  editpos (- m )) *-  fontwidth  + (- fontwidth  / 2), (- firstline  +-  yoffset (- m ) - 1) *-  fontheight  + 1)-((- firstchar  +-  xoffset (- m ) + LEN(- text$ (- m )) +-  editpos (- m )) *-  fontwidth  + (- fontwidth  / 2) + 2, (- firstline  +-  yoffset (- m )) *-  fontheight  - 1), _RGBA(- r (1),-  g (1),-  b (1),-  a (1)),-  BF 
 
-   
-     IF-  Taste$  = CHR$(27) THEN-  endparameter$  = "aborted"
 
-     m = 0 
-         m = m + 1 
-                     maxg(m) = c(m) 
-                     c(m) = 0 
-                         c(m) = c(m) + 1 
-                         UserInput$(m) = UserInput$(m) + char$(m, c(m)) 
-                     c(m) = 0 
-                     f = 0 
-                         f = f + 1 
-                         char$(m, f) = "" 
-                     UserInput$(m) = ""