home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #31 / NN_1992_31.iso / spool / comp / lang / scheme / 2812 < prev    next >
Encoding:
Text File  |  1992-12-22  |  12.8 KB  |  340 lines

  1. Newsgroups: comp.lang.scheme
  2. Path: sparky!uunet!usc!zaphod.mps.ohio-state.edu!saimiri.primate.wisc.edu!usenet.coe.montana.edu!news.u.washington.edu!serval!ocelot.csc.wsu.edu!rnelson
  3. From: rnelson@ocelot.csc.wsu.edu (Roger Nelson)
  4. Subject: Re: standards
  5. Message-ID: <1992Dec22.082411.9732@serval.net.wsu.edu>
  6. Sender: news@serval.net.wsu.edu (USENET News System)
  7. Reply-To: rnelson@ocelot.csc.wsu.edu.UUCP ()
  8. Organization: Washington State University
  9. Date: Tue, 22 Dec 92 08:24:11 GMT
  10. Lines: 328
  11.  
  12. In article <1h5llbINNk8p@agate.berkeley.edu> bh@anarres.CS.Berkeley.EDU (Brian Harvey) writes:
  13. >* positioned text.  (SETCURSOR x y) in character coordinates.
  14.  
  15. I have included what I use for terminal control at the end of this post.
  16. Note that these functions have not be fully tested yet! I am posting them
  17. only for expository purposes.
  18.  
  19. These functions are named after the corresponing ANSI escape sequences,
  20. although I use the full name, the three character function name would be
  21. acceptable, It would be nice if Scheme provided an aliasing feature:
  22.  
  23. Ie  (alias T_BS  TERM:BACKSPACE)
  24.  
  25.  
  26. I thought I someone had done a curses like library as well as a VAX/VMS
  27. SMG library.
  28.  
  29. >* graphics.  Simple.  (DRAW-LINE x1 y1 x2 y2) is almost enough for me.
  30.  
  31. Creating a set of functions based on an existing graphics standard
  32. could be set up similarly.
  33.  
  34. >[Yes, I'm handwaving about this window business.  
  35.  
  36. I am currently working on a set of simple 
  37. user interface functions that provides:
  38.  
  39. - Menus
  40. - Windows
  41. - Dialog boxes with the gadgets:  input text, input integer, input float,
  42.   input s-expression, buttons, toggles, cycles, selection lists etc..
  43.  
  44. I am intending the function prototypes to be independent of text or
  45. graphics base UI.
  46.  
  47. To define responsive user interface functions, it requires the ability to
  48. read characters in a raw, unbuffer mode,  it would be nice if Scheme
  49. provided an appropriate read-char function;  I.e.  (READ-CHAR-UNBUFFERED).
  50.  
  51. ; terminal/ansi.scm
  52.  
  53. (define (term:BELL)              (write-char #\bel))
  54. (define (term:BACKSPACE)         (write-char #\bs))
  55. (define (term:HORIZONTAL_TAB)    (write-char #\ht))
  56. (define (term:LINE_FEED)         (write-char #\nl))
  57. (define (term:VERTICAL_TAB)      (write-char #\vt))
  58. (define (term:FORM_FEED)         (write-char #\np))
  59. (define (term:CARRIAGE_RETURN)   (write-char #\cr))
  60. (define (term:SHIFT_IN)          (write-char #\si))
  61. (define (term:SHIFT_OUT)         (write-char #\so))
  62. (define (term:DLE)               (write-char #\dle))
  63.  
  64. (define (term:INDEX)             (write-char #\esc) (write-char #\D))
  65. (define (term:NEXT_LINE)         (write-char #\esc) (write-char #\E))
  66. (define (term:HORIZ_TAB_SET)     (write-char #\esc) (write-char #\H))
  67. (define (term:REVERSE_INDEX)     (write-char #\esc) (write-char #\M))
  68.                                               
  69. (define (term:RESET)             (write-char #\esc) (write-char #\c))
  70.  
  71. ;Control Sequences, with the number of indicated parameters.
  72. ;i.e. <CSI><parameters><control sequence letter(s)>.  Note the
  73. ;last entries consist of a space and a letter.  CSI is either
  74. ;9B or Esc[.  A minus after the number of parameters (#p)
  75. ;indicates less is valid.  Parameters are seperated by
  76. ;semicolins, e.g. Esc[14;80H sets the cursor position to row
  77. ;14, column 80.
  78.  
  79. (define (term:INSERT_CHAR count)         
  80.      (write-char #\esc) (write-char #\[)  (display count) (write-char #@))
  81. (define (term:CURSOR_UP count)          
  82.      (write-char #\esc) (write-char #\[)  (display count) (write-char #\A))
  83. (define (term:CURSOR_DOWN count)         
  84.      (write-char #\esc) (write-char #\[)  (display count) (write-char #\B))
  85. (define (term:CURSOR_FORWARD count)      
  86.      (write-char #\esc) (write-char #\[)  (display count) (write-char #\C))
  87. (define (term:CURSOR_BACKWARD count)     
  88.      (write-char #\esc) (write-char #\[)  (display count) (write-char #\D))
  89. (define (term:CURSOR_NEXT_LINE count)
  90.      (write-char #\esc) (write-char #\[)  (display count) (write-char #\E))
  91. (define (term:CURSOR_PREV_LINE count)
  92.      (write-char #\esc) (write-char #\[)  (display count) (write-char #\F))
  93. (define (term:CURSOR_POSITION row col)
  94.      (write-char #\esc) (write-char #\[)  (display row)   
  95.      (write-char #\;) (display col) (write-char #\H))
  96. (define (term:CURSOR_HORIZ_TAB count)
  97.      (write-char #\esc) (write-char #\[)  (display count) (write-char #\I))
  98.  
  99. (define term:ERASE_TO_END     0)
  100. (define term:ERASE_TO_CURSOR  1)
  101. (define term:ERASE_COMPLETELY 2)
  102. (define (term:ERASE_IN_DISPLAY erase_mode)  
  103.     (write-char #\esc) (write-char #\[) (display erase_mode) (write-char #\J))
  104. (define (term:ERASE_DISPLAY)                 
  105.     (write-char #\esc) (write-char #\[) (write-char #\f) (write-char #\esc) 
  106.     (write-char #\[) (write-char #\J))
  107. (define (term:ERASE_IN_LINE erase_mode)     
  108.     (write-char #\esc) (write-char #\[) (display erase_mode) (write-char #\K))
  109.  
  110. (define (term:INSERT_LINE count)
  111.      (write-char #\esc) (write-char #\[) (display count) (write-char #\L))
  112. (define (term:DELETE_LINE count)
  113.      (write-char #\esc) (write-char #\[) (display count) (write-char #\M))
  114. (define (term:DELETE_CHAR count)
  115.      (write-char #\esc) (write-char #\[) (display count) (write-char #\P))
  116.  
  117. (define (term:CURSOR_POSITION_REPORT arg1 arg2)
  118.      (write-char #\esc) (write-char #\[)  (display arg1)   
  119.      (write-char #\;) (display arg2) (write-char #\R))
  120.  
  121. ; Replys with
  122. ;   Esc [ Pl ; Pc R
  123.  
  124. (define (term:SCROLL_UP count)
  125.      (write-char #\esc) (write-char #\[) (display count) (write-char #\S))
  126. (define (term:SCROLL_DOWN count)
  127.      (write-char #\esc) (write-char #\[) (display count) (write-char #\T))
  128. (define (term:CURSOR_TAB_CONTROL arg)
  129.      (write-char #\esc) (write-char #\[) (display count) (write-char #\W))
  130. (define (term:CURSOR_HORIZ_VERT_POSITION row col)
  131.      (write-char #\esc) (write-char #\[) (display row) 
  132.      (write-char #\;) (display col) (write-char #\f))
  133. (define (term:CURSOR_BACKWARD_TAB count)
  134.      (write-char #\esc) (write-char #\[) (display count) (write-char #\Z))
  135. (define (term:TAB_CLEAR count)
  136.      (write-char #\esc) (write-char #\[) (display count) (write-char #\g))
  137.  
  138. (define term:INSERT_REPLACE_MODE   "4")
  139.  
  140. (define term:KEYBOARD_ACTION_MODE  "2")
  141. (define term:LF_NL_MODE            "20")
  142. (define term:SCROLL_MODE           ">1")
  143. (define term:CURSOR_KEY_MODE       "?1")
  144.  
  145. ; The following are not available on the amiga console device
  146. (define term:SEND_RECEIVE_MODE     "12")
  147. (define term:COLUMN_MODE           "?3")
  148. (define term:SCREEN_MODE           "?5")
  149. (define term:WRAP_MODE             "?7")
  150. (define term:AUTO_REPEAT_MODE      "?8")
  151.  
  152. (define (term:SET_MODE mode)
  153.      (write-char #\esc) (write-char #\[) (display mode) (write-char #\h))
  154. (define (term:RESET_MODE mode)
  155.      (write-char #\esc) (write-char #\[) (display mode) (write-char #\l))
  156.  
  157. (define (term:SET_APPLICATION_KEYPAD_MODE)
  158.      (write-char #\esc) (write-char #\=))
  159. (define (term:SET_NUMERIC_KEYPAD_MODE)
  160.      (write-char #\esc) (write-char #\>))
  161.  
  162. (define term:NORMAL        0)
  163. (define term:BOLD          1)
  164. (define term:ITALICS       3)
  165. (define term:UNDERLINE     4)
  166.  
  167. ; not available on amiga console as well as some other terminals
  168. (define term:BLINK         5)
  169.  
  170. (define term:INVERSE       7)
  171. (define term:NO_BOLD      21) 
  172. (define    term:NO_ATTRIBUTE 22) ; default foreground color, not bold 
  173. (define    term:NO_ITALICS   23)
  174. (define    term:NO_UNDERLINE 24)
  175. (define    term:NO_INVERSE   27)
  176.  
  177. ; these names refer to the ANSI standard, not the implementation 
  178. (define term:BLACK   30)
  179. (define term:RED     31)
  180. (define term:GREEN   32)
  181. (define term:YELLOW  33)
  182. (define term:BLUE    34)
  183. (define term:MAGENTA 35)
  184. (define term:CYAN    36)
  185. (define term:WHITE   37)
  186. (define term:DEFAULT 39)
  187.  
  188. (define term:BLACKBG     40)
  189. (define term:REDBG       41)
  190. (define term:GREENBG     42)
  191. (define term:YELLOWBG    43)
  192. (define term:BLUEBG      44)
  193. (define term:MAGENTABG   45)
  194. (define term:CYANBG      46)
  195. (define term:WHITEBG     47)
  196. (define term:DEFAULTBG   49) 
  197.                          
  198. ;  these names refer to the implementation, they are the preferred 
  199. ;  names for use with the Amiga console device. 
  200. (define term:CLR0 30)
  201. (define term:CLR1 31)
  202. (define term:CLR2 32)
  203. (define term:CLR3 33)
  204. (define term:CLR4 34)
  205. (define term:CLR5 35)
  206. (define term:CLR6 36)
  207. (define term:CLR7 37)
  208.  
  209. (define term:CLR0BG 40)
  210. (define term:CLR1BG 41)
  211. (define term:CLR2BG 42)
  212. (define term:CLR3BG 43)
  213. (define term:CLR4BG 44)
  214. (define term:CLR5BG 45)
  215. (define term:CLR6BG 46)
  216. (define term:CLR7BG 47)
  217.  
  218. (define (term:SELECT_GRAPHIC_RENDITION rendition)
  219.      (write-char #\esc) (write-char #\[) (display rendition) (write-char #\m))
  220.  
  221. (define term:GENERAL_STATUS  "5")
  222. (define term:PRINTER_STATUS  "?15")
  223. (define (term:DEVICE_STATUS_REPORT status)
  224.      (write-char #\esc) (write-char #\[) (display status) (write-char #\n))
  225.  
  226. ;   Replys with :
  227. ;
  228. ;    Esc [ 0 n        Ready, no malfunction.
  229. ;
  230. ;    For term terminals
  231. ;
  232. ;    Esc [ ? 1 3 n    Printer not connected (Hasn't signaled ready).
  233. ;    Esc [ ? 1 1 n    Printer not ready to print.
  234. ;    Esc [ ? 1 0 n    Printer ready signal on.
  235.  
  236. ;#ifdef AMIGA
  237. (define (term:SET_PAGE_LENGTH length)
  238.      (write-char #\esc) (write-char #\[) (display length) (write-char #\t))
  239. (define (term:SET_LINE_LENGTH length)
  240.      (write-char #\esc) (write-char #\[) (display length) (write-char #\u))
  241. (define (term:SET_LEFT_OFFSET offset)
  242.      (write-char #\esc) (write-char #\[) (display offset) (write-char #\x))
  243. (define (term:SET_TOP_OFFSET offset)
  244.      (write-char #\esc) (write-char #\[) (display offset) (write-char #\y))
  245. (define (term:SET_RAW_EVENTS events)
  246.      (write-char #\esc) (write-char #\[) (display events) (write-char #\{))
  247. (define (term:RESET_RAW_EVENTS events)
  248.      (write-char #\esc) (write-char #\[) (display events) (write-char #\}))
  249.  
  250. (define term:CURSOR_RENDITION_ON  " ")
  251. (define term:CURSOR_RENDITION_OFF "0 ")
  252. (define (term:SET_CURSOR_RENDITION rendition)
  253.      (write-char #\esc) (write-char #\[) (display rendition) (write-char #\p))
  254.  
  255. (define (term:WINDOW_STATUS_REQUEST)
  256.      (write-char #\esc) (write-char #\[) (write-char #\q))
  257.  
  258. ;    ~   1     aSKR SPECIAL KEY REPORT (private Amiga Read sequence)
  259. ;    |   8     aIER INPUT EVENT REPORT (private Amiga Read sequence)
  260. ;    r   4     aWBR WINDOW BOUNDS REPORT (private Amiga Read sequence)
  261.  
  262. ; /****** DSR parameters ******
  263. ;
  264. ;(define DSR_CPR    6)
  265. ;
  266. ;****** CTC parameters ******
  267. ;(define CTC_HSETTAB     0)
  268. ;(define CTC_HCLRTAB     2)
  269. ;(define CTC_HCLRTABSALL 5)
  270. ;
  271. ;******    TBC parameters ******
  272. ;(define TBC_HCLRTAB    0
  273. ;(define TBC_HCLRTABSALL    3
  274. ;
  275.  
  276. (define term:KEY_UP                400)
  277. (define term:KEY_DOWN              401)
  278. (define term:KEY_RIGHT             402)
  279. (define term:KEY_LEFT              403)
  280. (define term:KP_ENTER              404)
  281. (define term:KP_PF1                405)
  282. (define term:KP_PF2                406)
  283. (define term:KP_PF3                407)
  284. (define term:KEY_SHIFT_DOWN        408)
  285. (define term:KP_PF4                409)
  286. (define term:KEY_SHIFT_UP          410)
  287. (define term:KP_COMMA              411)
  288. (define term:KP_MINUS              412)
  289. (define term:KP_PERIOD             413)
  290. (define term:KP_0                  414)
  291. (define term:KP_1                  415)
  292. (define term:KP_2                  416)
  293. (define term:KP_3                  417)
  294. (define term:KP_4                  418)
  295. (define term:KP_5                  419)
  296. (define term:KP_6                  420)
  297. (define term:KP_7                  421)
  298. (define term:KP_8                  422)
  299. (define term:KP_9                  423)
  300. (define term:KEY_SHIFT_LEFT        424)
  301. (define term:KEY_SHIFT_RIGHT       425)
  302. (define term:KEY_SHIFT_F1          427)
  303. (define term:KEY_SHIFT_F2          428)
  304. (define term:KEY_SHIFT_F3          429)
  305. (define term:KEY_SHIFT_F4          430)
  306. (define term:KEY_SHIFT_F5          431)
  307. (define term:KEY_SHIFT_F6          432)
  308. (define term:KEY_SHIFT_F7          433)
  309. (define term:KEY_SHIFT_F8          434)
  310. (define term:KEY_SHIFT_F9          435)
  311. (define term:KEY_SHIFT_F10         436)
  312. (define term:KEY_F1                426)
  313. (define term:KEY_F2                437)
  314. (define term:KEY_F3                438)
  315. (define term:KEY_F4                439)
  316. (define term:KEY_F5                440)
  317. (define term:KEY_F6                441)
  318. (define term:KEY_F7                442)
  319. (define term:KEY_F8                443)
  320. (define term:KEY_F9                444)
  321. (define term:KEY_F10               445)
  322. (define term:KEY_HELP              446)
  323. (define term:KEY_APPL_UP           447)
  324. (define term:KEY_APPL_DOWN         448)
  325. (define term:KEY_APPL_RIGHT        449)
  326. (define term:KEY_APPL_LEFT         450)
  327. (define term:KEY_SHIFT_APPL_DOWN   451)
  328. (define term:KEY_SHIFT_APPL_UP     452)
  329.  
  330.  
  331.  
  332. _____________________________________________________________________
  333.       ______________
  334. ____  | ^          |    Roger Nelson          rnelson@wsuaix.csc.wsu.edu
  335. \^^ |*| ^          |    Agricultural Engineering Department     ///
  336.  |^^//  ^^         |                                           ///
  337.  |  '  ^          +|    Washington State University        \\\///
  338.  \_  ^    _________|    Pullman, WA 99164                   \XX/
  339.    `-----'              Work: (509)335-4714  Home: (509)332-8387
  340.