Advertisement
lilo_booter

GFORTH Terminal Stuff

Nov 17th, 2024 (edited)
31
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.47 KB | Source Code | 0 0
  1. \ TERMINAL CONTROL
  2.  
  3.     \ Standard ASCII Codes (not comprehensive)
  4.  
  5.         \ Emits a bell
  6.         : t-bel 7 emit ;
  7.  
  8.         \ Emits a backspace
  9.         : t-bs 8 emit ;
  10.  
  11.         \ Emits a tab
  12.         : t-tab 9 emit ;
  13.  
  14.         \ Emits a line feed
  15.         : t-lf 10 emit ;
  16.  
  17.         \ Emits a vertical tab
  18.         : t-tab-v 11 emit ;
  19.  
  20.         \ Emits a form feed
  21.         : t-ff 12 emit ;
  22.  
  23.         \ Emits a carriage return
  24.         : t-cr 13 emit ;
  25.  
  26.         \ Emits an escape
  27.         : t-esc 27 emit ;
  28.  
  29.         \ Emits a delete
  30.         : t-del 127 emit ;
  31.  
  32.     \ Control Sequence Introducer (CSI) commands (not comprehensive)
  33.  
  34.         \ Emit CSI
  35.         : t-csi ( -- ) t-esc '[' emit ;
  36.  
  37.         \ Returns cursor to top left
  38.         : t-home ( -- ) t-csi 'H' emit ;
  39.  
  40.         \ Places cursor at the requested column and row
  41.         : t-at ( col row -- ) t-csi .nb ';' emit .nb 'H' emit ;
  42.  
  43.         \ Erase from cursor until end of screen
  44.         : t-cleol ( -- ) t-csi ." J" ;
  45.  
  46.         \ Clear the entire screen and move cursor to top left
  47.         : t-cls ( -- ) t-csi ." 2J" t-home ;
  48.  
  49.         \ Sets cursor to default foreground
  50.         : t-default t-csi ." 0;0m" ;
  51.  
  52.         \ Sets foreground color to red
  53.         : t-red t-csi ." 0;31m" ;
  54.  
  55.         \ Sets foreground color to green
  56.         : t-green t-csi ." 0;32m" ;
  57.  
  58.         \ Sets foreground color to yellow
  59.         : t-yellow t-csi ." 0;33m" ;
  60.  
  61.         \ Sets foreground color to blue
  62.         : t-blue t-csi ." 0;34m" ;
  63.  
  64.         \ Sets foreground color to magenta
  65.         : t-magenta t-csi ." 0;35m" ;
  66.  
  67.         \ Sets foreground color to cyan
  68.         : t-cyan t-csi ." 0;36m" ;
  69.  
  70.         \ Sets foreground color to white
  71.         : t-white t-csi ." 0;37m" ;
  72.  
  73.         \ Set custom foreground
  74.         : t-rgb-fg ( r g b -- ) t-csi ." 38;2;" rot .nb ';' emit swap .nb ';' emit .nb 'm' emit ;
  75.  
  76.         \ Set custom background
  77.         : t-rgb-bg ( r g b -- ) t-csi ." 48;2;" rot .nb ';' emit swap .nb ';' emit .nb 'm' emit ;
  78.  
  79.         \ Provides the terminal width
  80.         : t-width ( -- cols ) cols ;
  81.  
  82.         \ Provides the terminal height
  83.         : t-height ( -- rows ) rows ;
  84.  
  85.         \ Save the terminal position
  86.         : t-save ( -- ) t-csi ." s" ;
  87.  
  88.         \ Returns position to previously saved
  89.         : t-restore ( -- ) t-csi ." u" ;
  90.  
  91.  
  92. \ GENERAL PURPOSE WORDS
  93.  
  94.     \ Negative pi for convencience
  95.     : -pi ( -- F: -pi ) pi fnegate ;
  96.  
  97.     \ Order the top 2 ints on the stack such that the lowest value is tos
  98.     : max-min ( a b -- max min ) 2dup > if swap endif ;
  99.  
  100.     \ Duplicate the top two floats on the float stack
  101.     : f2dup ( F: a F: b -- F: a F: b F: a F: b ) fover fover ;
  102.  
  103.     \ Order the top 2 floats on the stack such that the lowest value is tos
  104.     : fmax-min ( F: a F: b -- F: max-ab F: min-ab ) f2dup f> if fswap endif ;
  105.  
  106.  
Tags: Forth
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement