00:00:00 --- log: started forth/21.06.11 00:01:08 --- nick: proteus-guy -> proteusguy 00:01:23 --- mode: ChanServ set +v proteusguy 00:19:51 KipIngram, wow that's a cool article. 00:20:05 er.. crab I mean! ;-) 02:46:04 --- join: Glider_IRC__ joined #forth 02:49:27 --- quit: Glider_IRC_ (Ping timeout: 272 seconds) 02:53:10 --- quit: gravicappa (Ping timeout: 240 seconds) 02:55:47 --- join: gravicappa joined #forth 03:06:58 --- quit: Glider_IRC__ (Remote host closed the connection) 03:10:08 --- join: Glider_IRC joined #forth 05:02:03 --- nick: proteusguy-out -> proteus-guy 05:02:14 --- mode: ChanServ set -v proteus-guy 05:33:02 --- quit: crab1 (Quit: WeeChat 3.0.1) 06:16:04 --- join: neuro_ joined #forth 06:16:53 --- nick: neuro_ -> neuro_sys 06:16:58 --- quit: neuro_sys (Changing host) 06:16:58 --- join: neuro_sys joined #forth 06:17:15 KipIngram: Do you write code in a block editor? 06:17:52 I tried gforth's blocks.fb, it's just 3 screenful of code, and pretty neat. 06:18:05 Kind of like ED, but better. 06:46:57 --- quit: Glider_IRC (Remote host closed the connection) 06:47:43 --- join: Glider_IRC joined #forth 06:54:20 Yes, I use a block editor that I wrote. The source code for mine fills one 4kB source block pretty completely. 06:54:47 Is it an interactive one where you can move the cursor and type in? 06:54:50 It has good cursor navigation functionality, and can yank and restore lines (across blocks if I wish) and has the usual character functions. 06:55:00 It does not implement line wrap, though. 06:55:25 If you insert text in the middle of the line, it will just stop letting you do that as soon as the 64th char of the line contains non-space. 06:55:33 I.e., it won't let you push anything out. 06:56:01 It has emacs style cursor control and other control functions, but using the key assignments you'd expect on vim. 06:56:48 As far as basic operation goes I was fully happy with it, but I want to extend it to support that "wiki-like commenting" I've discussed a few times. 06:57:06 And probably other things like search, replace, and so on over time. 06:57:27 I intend to put a lot of effort into it, because I want it to become my primary programming editor for all my future hobby work. 07:00:08 I want to tie in debugging features and so forth. 07:00:24 I'm sure with all that it will become several 4kB blocks at least. 07:00:53 Which will make it the most extensive single Forth application I'e ever done. 07:01:56 I'll be needing to bring the basic part of that up fairly soon - I'm almost ready to start coding within the system itself. 07:13:08 --- quit: neuro_sys (Remote host closed the connection) 07:13:13 neuro_sys: Here is the source for that editor: 07:13:15 https://imgur.com/a/CGQMqac 07:14:28 .: marks a definition as temporary. I use those to compile later words, but eventually, when the API words are compiled I issue .wipe and the headers for the temporary words are removed from the system. 07:14:35 The bodies of course remain. 07:14:49 Other than that .: is just like : 07:15:46 --- quit: Glider_IRC (Remote host closed the connection) 07:16:19 That system had a 4kB block size heap manager that gets used for various purposes. 07:16:33 --- join: Glider_IRC joined #forth 07:16:45 .: places the headers for those temporary words in a heap page, for example. 07:17:00 .wipe unties them from the dictonary and deallocates the page. 07:19:06 --- quit: cbridge_ (Remote host closed the connection) 07:19:20 --- join: cbridge_ joined #forth 07:25:06 My new system doesn't have that heap manager - at least not at the foundation level like it was in the previous system. So this time the headers of temporary words will be in the same place they'd be otherwise and will not be deleted. .wipe will just unlink them. 07:34:18 Oh, if your window is less than 64 lines tall then that editor will scroll up and down as required. 07:54:22 --- join: neuro_ joined #forth 07:54:43 KipIngram: Do you use ANSI control characters to interface with the terminal? 07:55:04 Or call into some C API? 07:55:17 Like termios 07:55:45 One thing about ANSI control characters I was curious if it's possible to query the dimensions of the display (columns, rows). 07:56:00 Or in general, can you read any data from the terminal by sending it control characters. 08:01:14 neuro: Some things /can/ be read; such as terminal emulator window dimensions, see, e. g., http://manpages.debian.org/sid/resize . Generally, you'd query Terminfo database (libterminfo) to find out which control sequence the terminal has. 08:02:57 I see, thanks. I don't want to couple into calling some C ABI. Only communicating via escape sequences would be very simple. 08:03:35 As for "termios", it's more related to things like setting the 'baud rate' of the serial port the terminal is connected to. See, e. g., http://linusakesson.net/programming/tty/ for details. 08:05:39 --- quit: cbridge_ (Remote host closed the connection) 08:05:49 --- join: cbridge_ joined #forth 08:07:49 neuro: That would very much depend on your target audience. Some computer users use several terminal emulators and (or) actual hardware terminals of different types; they would expect your software to handle all of their respective differences. 08:07:49 Some, me included, prefer to have control over what terminal features (such as color and other attributes) the software has access to. They will be very much disappointed to see that your software uses control sequences outside of those listed in the Terminfo database for their configured terminal type. 08:09:01 And of course, or at least unless I be mistaken, there's the matter that the format of the database is documented, so you don't need to use any specific library to read it. 08:09:51 "The memory models that underlie programming languages" http://canonical.org/~kragen/memory-models/ 08:10:37 iv4nshm4k0v: I see, thanks for the explanation. 08:13:01 I suppose initially I wouldn't want to support fancy functionality other than the basics that allows text editing (as far as an interactive text editor is concerned). But ultimately if it gets serious, I'd draw into a bitmap video buffer for a GUI application (much like Emacs does). 08:13:27 siraben: Good one, I'll read it. 08:20:11 --- join: Kumool joined #forth 08:23:20 neuro_: i googled "xterm terminal control sequences" and it led to this page: https://www.xfree86.org/current/ctlseqs.html 08:26:02 neuro_: it has a lot of escape codes that xterm supports... if you search for "window manipulation" it has an interesting escape sequence: P s = 1 8 → Report the size of the text area in characters as CSI 8 ; height ; width t 08:31:08 neuro_: this page too: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html 08:37:33 neuro_: Note that non-alphanumerical keys (such as arrows, page up / down, etc.) also emit control sequences listed in terminfo. 08:40:17 --- part: Kumool left #forth 08:42:55 there is even this page for windows: https://stackoverflow.com/questions/31619962/vt100-ansi-escape-sequences-getting-screen-size-conditional-ansi 08:49:11 oh very interesting 08:50:20 Nice 08:50:46 if you send a set cursor position with (no spaces) ESC [ 999 ; 999 H it puts the cursor at the bottom right of your terminal, then you can send ESC [ 6 n which sends back the cursor position, then a following ESC [ 1 ; 1 H to put the cursor at the top left 08:51:27 the ESC [ 6 n makes the terminal send the cursor position as ESC [ ; R 08:52:13 so if you write ESC[6n you can then read ESC[h;wR where h and w are height and width as a decimal number 08:52:22 i am doing this on windows terminal and it works! 08:55:28 i opened up a cmd.exe on windows 10, then type size.txt which contains ESC[999;999HESC[6nESC[1;1H and it prints back ESC[30;120R 08:55:43 nice that it works on windows 08:56:12 i had to construct the size.txt file by hand with notepad++ by inserting the escape character 08:57:02 Escape character inserts ^[ isn't it? 08:57:20 it's ascii 27 08:57:44 i don't know how to insert a raw escape with notepad or wordpad... i had to use notepad++ 08:58:08 but yes, windows displays it as ^[ 08:59:25 in C it would be printf("\033[999;999H\033[6n\033[H"); 09:00:43 that's a pretty handy trick 09:01:13 if it works on windows and xterm and the linux text mode, you're pretty right to go 09:01:37 don't know about macos.. sorry KipIngram ;-) 09:03:16 oh wow 09:03:41 press ctrl [ in windows command prompt 09:04:02 escape key doesn't work but control [ does 09:05:46 How do you enter numeric value and not ASCII? 09:06:06 ah no, the numbers are ascii 09:06:58 the only tricky character to insert is ctrl [ 09:07:32 Ah right I see that in the C string. 09:11:44 i think that's a relatively portable way to find the size of the terminal 09:12:38 much easier than going deep into terminfo (which afaik is unix specific) 09:29:15 terminfo is sort of unix specific, 09:29:22 ish :) 09:29:44 but parsing terminfo format strings into terminal escape sqeuences might not be what you want to do anyway 09:29:56 even if there was a windows terminal terminfo file... not sure if there is or not 09:30:34 I on the other hand, being a complete heretic wrote my own terminfo parser lol 09:34:09 --- quit: xek (Ping timeout: 272 seconds) 10:18:10 mark4: I think the Windows (or perhaps more likely "DOS, but still supported in Windows"; as in, ANSI.SYS) Terminfo entry is 'pcansi-25' (see, e. g., $ infocmp -- pcansi-25 .) 10:18:28 aha yea 10:21:03 Another thing is, of course, that one still encounters a rare enthusiast who makes his own 'ANSI-compatible' terminal. Where Terminfo is available, there's considerable choice as to which control sequences to support: you can make your own selection and just supply a corresponding Terminfo file and it will 'just work.' 10:34:34 --- quit: mark4 (Ping timeout: 245 seconds) 10:38:19 --- join: mark4 joined #forth 12:23:13 neuro_ Yes, I use ANSI. 12:23:31 It has always worked on every system I've tried it on. 12:23:48 There's a lot of it in my QUERY/EXPECT code. 12:24:30 And it seems to work even when I use direct system calls to do my output. 12:24:41 I.e., it doesn't require some particular library. 12:42:07 That's all slightly frustrating to me, because it means I'm relying on quite a lot of software underneath those system calls. On the other hand, any mechanism the OS gave me for controlling the cursor and such things would represent that sort of software investment. 12:42:44 It's probably ok, because even when I talk to one of my future "to be built" gadgets, I'll be doing so via a terminal on a computer with an OS. 12:42:55 And it's THAT TERMINAL'S cursor I'll be wanting to control. 12:43:08 So having my gadget send out ANSI control codes may just continue to work. 12:43:36 The cursor won't live on my gadget. 12:52:19 --- quit: gravicappa (Read error: Connection reset by peer) 12:52:38 --- join: gravicappa joined #forth 13:15:18 --- quit: gravicappa (Ping timeout: 240 seconds) 13:28:37 --- quit: neuro_ (Ping timeout: 250 seconds) 14:54:09 --- join: Glider_IRC_ joined #forth 14:54:42 --- quit: Glider_IRC (Disconnected by services) 14:54:48 --- nick: Glider_IRC_ -> Glider_IRC 15:54:34 --- join: rtdos joined #forth 15:54:34 --- join: proteanthread joined #forth 16:16:14 --- quit: rtdos (Ping timeout: 245 seconds) 16:16:14 --- quit: proteanthread (Ping timeout: 245 seconds) 20:00:00 --- join: crab joined #forth 20:00:17 Hello forth friends 20:01:38 how can I have the bridge ignore me. 20:09:28 --- join: gravicappa joined #forth 20:15:26 Other than that, it relays all messages 20:44:46 imode: I can manually configure the bridge to ignore certain users. I'll add you to this if you'd like. 21:26:37 crc: that'd be wonderful, sorry for the slow response. 21:28:21 --- quit: cbridge_ (Remote host closed the connection) 21:28:33 --- join: cbridge_ joined #forth 21:29:19 it should be working now. Can you just write 'test',or similar somI can verify? 21:29:24 *so I 21:40:56 Nothing appeared in #forth, so you should be good 21:41:10 No problem 22:23:34 --- quit: proteusguy (Ping timeout: 258 seconds) 23:48:57 Reading ARM architecture reference manual, and cant figure out what it means when an instruction has an opcode containing 'x' instead of a specific bit value. For example, LSL instruction has opcode '000xx' 23:49:14 Does it mean that it does not matter what the value of those bits are? 23:59:59 --- log: ended forth/21.06.11