00:00:00 --- log: started forth/17.02.12 00:04:05 --- join: wa5qjh (~Thunderbi@121.54.90.151) joined #forth 00:18:31 --- join: mnemnion (~mnemnion@71.198.73.193) joined #forth 00:23:14 --- quit: mnemnion (Ping timeout: 255 seconds) 00:35:30 --- quit: rgrinberg (Remote host closed the connection) 00:37:37 --- quit: impomatic_ (Quit: http://corewar.co.uk/colorrobotbattle.htm) 00:39:08 --- join: mnemnion (~mnemnion@2601:643:8102:7c95:e18f:14f7:2f0a:a51c) joined #forth 00:43:47 --- quit: mnemnion (Ping timeout: 255 seconds) 01:05:57 --- join: gravicappa (~gravicapp@ppp83-237-165-7.pppoe.mtu-net.ru) joined #forth 01:07:32 --- join: neceve (~ncv@unaffiliated/neceve) joined #forth 02:12:10 --- join: John[Lisbeth] (~user@52.176.46.58) joined #forth 02:29:58 --- quit: wa5qjh (Read error: Connection reset by peer) 02:58:30 --- join: mnemnion (~mnemnion@2601:643:8102:7c95:f009:d59f:e08f:62f3) joined #forth 03:03:17 --- quit: mnemnion (Ping timeout: 255 seconds) 03:17:56 --- join: john_cephalopoda (~john@unaffiliated/john-minetest/x-5335115) joined #forth 03:21:39 --- join: GeDaMo (~GeDaMo@212.225.112.221) joined #forth 04:28:21 --- join: FiveBroDeepBook (~gk.1wm.su@46.148.182.82) joined #forth 04:28:22 --- part: FiveBroDeepBook left #forth 05:19:06 --- quit: impomatic (Quit: http://corewar.co.uk) 05:59:43 hello 06:00:07 Hi 06:27:50 --- join: impomatic_ (~digital_w@host81-136-80-177.range81-136.btcentralplus.com) joined #forth 06:55:29 --- quit: DocPlatypus (Ping timeout: 255 seconds) 07:10:21 --- join: DocPlatypus (~skquinn@2601:2c2:c300:ff70:2934:f0b3:f487:abd8) joined #forth 07:30:38 --- join: ACE_Recliner (~ACE_Recli@c-50-165-178-74.hsd1.in.comcast.net) joined #forth 08:25:25 --- join: Zarutian (~zarutian@168-110-22-46.fiber.hringdu.is) joined #forth 08:29:57 --- quit: neceve (Quit: Konversation terminated!) 08:49:51 --- quit: DocPlatypus (Quit: Ex-Chat) 09:00:55 --- quit: DGASAU (Read error: Connection reset by peer) 09:01:05 --- join: DGASAU (~user@lmpc.drb.insel.de) joined #forth 09:11:56 --- quit: gravicappa (Ping timeout: 240 seconds) 09:32:28 --- join: karswell` (~user@205.226.90.146.dyn.plus.net) joined #forth 09:36:44 --- quit: M-jimt (Ping timeout: 255 seconds) 09:45:23 --- nick: karswell` -> karswell 09:57:53 --- join: rgrinberg (~rgrinberg@24-246-56-85.cable.teksavvy.com) joined #forth 10:04:11 --- join: mnemnion (~mnemnion@2601:643:8102:7c95:b465:f22c:9ff8:3534) joined #forth 10:08:32 --- quit: mnemnion (Ping timeout: 255 seconds) 10:16:36 --- quit: GeDaMo (Ping timeout: 240 seconds) 10:19:46 --- quit: Keshl_ (Quit: Konversation terminated!) 10:33:29 --- join: Keshl (~Purple@24.115.181.94.res-cmts.gld.ptd.net) joined #forth 11:08:03 --- join: gravicappa (~gravicapp@ppp83-237-163-141.pppoe.mtu-net.ru) joined #forth 11:16:52 --- join: M-jimt (jimtmatrix@gateway/shell/matrix.org/x-lcfmcouhqpfmwqvq) joined #forth 11:19:50 --- quit: true-grue (Read error: Connection reset by peer) 11:37:21 --- join: GeDaMo (~GeDaMo@212.225.112.221) joined #forth 12:14:55 --- quit: ACE_Recliner (Remote host closed the connection) 12:32:39 --- join: wa5qjh (~Thunderbi@121.54.90.132) joined #forth 12:47:05 --- quit: gravicappa (Remote host closed the connection) 13:30:13 --- quit: GeDaMo (Remote host closed the connection) 13:33:38 --- quit: wa5qjh (Read error: Connection reset by peer) 14:01:04 --- join: wa5qjh (~Thunderbi@121.54.90.142) joined #forth 14:25:01 --- quit: rgrinberg (Remote host closed the connection) 14:28:36 --- join: rgrinberg (~rgrinberg@24-246-56-85.cable.teksavvy.com) joined #forth 15:01:11 --- join: mnemnion (~mnemnion@2601:643:8102:7c95:b465:f22c:9ff8:3534) joined #forth 15:01:56 --- quit: mnemnion (Remote host closed the connection) 15:14:53 --- quit: karswell (Remote host closed the connection) 15:15:00 --- join: karswell` (~user@205.226.90.146.dyn.plus.net) joined #forth 15:18:21 --- join: mnemnion (~mnemnion@2601:643:8102:7c95:b465:f22c:9ff8:3534) joined #forth 15:21:10 --- quit: mnemnion (Remote host closed the connection) 15:21:25 --- join: mnemnion (~mnemnion@71.198.73.193) joined #forth 15:42:02 --- quit: nighty (Quit: Disappears in a puff of smoke) 15:51:02 --- quit: irsol (Ping timeout: 240 seconds) 15:52:20 --- join: irsol (~irsol@unaffiliated/contempt) joined #forth 15:54:21 When I wrote this, https://www.reddit.com/r/Forth/comments/5sidmq/when_designing_for_forth_systems_consider/ I was writing about how Forth expressions are written from specific to broad, left-to-right (bottom-up programming) and, conversely, definitions and factoring are designed right-to-left (top-down)... 15:55:25 This has implications for how stuff on the stack should be consumed or not consumed... 15:56:30 Typically, words consume the parameters passed to them. 15:57:08 I think forth words are consuming too much... 16:00:46 Forth words should only consume what they use and leave the rest for another word to process once and consequently consume. 16:02:01 Too much parameter consumption can be seen wherever DUP is seen. Too little parameter consumption can be seen wherever the stack jugglers can be seen (SWAP ROT etc.) 16:02:41 --- join: ACE_Recliner (~ACE_Recli@c-50-165-178-74.hsd1.in.comcast.net) joined #forth 16:05:13 ...and yes, I am talking about only consuming a few bits of a parameter and leaving the rest to be whittled down by the more general words further to the right side of a string of words. 16:09:06 I may also be talking about having finer granularity in how we think of literals on the stack. That is, finer granularity than just bytes and cells on the stack. 16:26:29 --- join: Uniju (~frog_styl@cpe-74-78-4-232.mass.res.rr.com) joined #forth 16:29:18 --- quit: Uniju_ (Ping timeout: 240 seconds) 16:30:47 --- join: nighty (~nighty@d246113.ppp.asahi-net.or.jp) joined #forth 16:37:53 pointfree: is this the reason why for instance RTX2010 has an branch if zero that does only look at TOS but does not consume it? 16:42:39 Zarutian: Machine Forth and onward have some destructive and non-destructive versions of words like IF and -IF for instance. The instruction sets of typical CPU's such as x86 and ARM make it easy as well (not only RTX2010) especially with machine forths where you pretend that your register machine is a stack machine. 16:43:26 well, I think this is also one of the inspiration of the Mill belt Architecture 16:45:15 I think that with a much finer, even 1-to-1 granularity of consumption, the destructive/non-destructive duality (e.g, IF/-IF) would be needed much less. 16:45:36 IF and -IF still consume at byte or cell granularity. 16:46:48 ...and words need only process a datum once in many cases. 16:47:20 Non-destructive IF would take more space. 16:47:48 One char ;) 16:48:06 When you got non-destructive and want destructive, you'd need to DROP every time. 16:48:30 When you got destructive and want non-destructive, you just have to DUP. 16:49:10 --- quit: coelebs (Ping timeout: 260 seconds) 16:51:14 I don't actually use IF except to print out informational messages at the edges of an application. 16:52:23 --- quit: john_cephalopoda (Remote host closed the connection) 16:53:47 --- join: vsg1990 (~vsg1990@static-72-88-80-103.bflony.fios.verizon.net) joined #forth 17:00:16 Zarutian: Yeah, the Mill belt machine is motivated by the fact that ~80% of values are accessed only once. This also justifies destructive forth words. Forth words consume way more than what they use, however, which leads to stack juggling and stack traffic. 17:01:58 --- join: neceve (~ncv@84.232.162.68) joined #forth 17:01:58 --- quit: neceve (Changing host) 17:01:58 --- join: neceve (~ncv@unaffiliated/neceve) joined #forth 17:06:35 This all came up while writing device-tree-like functionality over a flat register map. openfirmware-style vocabulary-based device trees are too complicated. 17:07:59 Basically I search the regmap with two bitmasks (constraint and variance) using the following as my comparison: i|variance==constraint|variance (where i is the current register address being compared in the list). 17:08:52 pointfree: could you give an example of a word that consumes more than it uses? 17:12:26 --- quit: groovy2shoes (Ping timeout: 255 seconds) 17:13:00 pointfree: what openfirmware-style enables is boot time discovery of what devices are actually connected. It is indeed overkill when you have flat register map that doesnt change between Power Ons 17:15:54 --- join: groovy2shoes (~groovy2sh@unaffiliated/groovebot) joined #forth 17:17:07 Zarutian: also, navigation through the on or off-chip peripherals and their functionality. 17:18:02 --- join: vsg1990_ (~vsg1990@static-72-88-80-103.bflony.fios.verizon.net) joined #forth 17:21:39 pointfree: you mean your constrain and variance method of the openfirmware? 17:21:51 --- quit: vsg1990 (Ping timeout: 260 seconds) 17:24:15 reepca: Sometimes when people think they need to access a value twice they use a variable to avoid stack traffic. In fact they may be accessing a different part of that value so each access could just take what it needs and leave the rest on the stack for the next word to process the part it needs. 17:24:16 Excerpt from the devtree search loop: i reg. ( print reg addr) i reg$. ( print reg name) could instead be written as: i reg. reg$. 17:26:57 Zarutian: I can get subsets of registers for user-friendly on or off-chip peripheral regmap navigation or to do stuff with those subsets of registers. 17:29:42 The variance mask when OR'd with the currently-being-compared registers makes the matching registers look the same as the variance mask OR'd with the constraint mask. 17:29:58 I havent looked in detail into how S-BUS worked or PCI bus worked. 17:31:27 so I am not sure that register maps work always as some MCUs and such have used memory mapped IO to control an bus master peripherial to talk to devices on the bus 17:31:59 pointfree: wouldn't it then be written: i reg. reg$ DROP ? 17:34:00 --- quit: karswell` (Remote host closed the connection) 17:36:03 So yeah, the variance and constraint masks are created by series of words that look like they make up a path but they just manipulate the bitmasks. 17:36:03 reepca: There is nothing left to consume, so there is nothing left to DROP 17:36:32 So the register name and address are part of the same cell then? 17:37:17 reepca: My regmap has only: REGADDRESS , REGNAME s, ( on each row) 17:38:43 ...once both of those are stripped away there's nothing left. 17:39:15 I'm confused what exactly is on the stack that's put there by i - is it an address? 17:39:56 reepca: yeah it's an address to that row. So yes, it's a cell. 17:40:52 how would you "consume" parts of a row? 17:41:03 ohhh 17:41:05 I think I get it 17:41:14 it would just move the address to point to the next place 17:41:32 (the name) 17:43:35 reepca: Yup, in the case of the regmap rows that's how it would work. In the case of a bitmask, you would clear those bits you just consumed. 17:44:32 --- join: roboguy` (~roboguy_@cpe-98-156-12-59.kc.res.rr.com) joined #forth 18:00:09 --- quit: roboguy` (Remote host closed the connection) 18:00:37 --- join: roboguy` (~roboguy_@cpe-98-156-12-59.kc.res.rr.com) joined #forth 18:00:50 --- quit: roboguy` (Remote host closed the connection) 18:00:57 --- join: roboguy` (~roboguy_@cpe-98-156-12-59.kc.res.rr.com) joined #forth 18:00:58 --- quit: roboguy` (Remote host closed the connection) 18:01:25 --- join: roboguy` (~roboguy_@cpe-98-156-12-59.kc.res.rr.com) joined #forth 18:02:24 --- quit: roboguy` (Read error: Connection reset by peer) 18:06:07 --- join: ChatSharp (~ChatSharp@stc.66.70.188.95.dsl.krasnet.ru) joined #forth 18:09:08 --- part: ChatSharp left #forth 18:44:00 --- join: karswell` (~user@205.226.90.146.dyn.plus.net) joined #forth 18:45:22 --- quit: Zarutian (Quit: Zarutian) 18:46:38 --- join: dual (~bonafide@cpe-74-75-153-119.maine.res.rr.com) joined #forth 19:10:54 --- quit: ACE_Recliner (Ping timeout: 252 seconds) 19:22:00 --- nick: vsg1990_ -> vsg1990 19:43:55 --- quit: rgrinberg (Remote host closed the connection) 19:46:59 --- join: rgrinberg (~rgrinberg@24-246-56-85.cable.teksavvy.com) joined #forth 19:50:56 --- quit: rgrinberg (Remote host closed the connection) 19:55:21 --- join: ACE_Recliner (~ACE_Recli@c-50-165-178-74.hsd1.in.comcast.net) joined #forth 20:08:56 --- quit: neceve (Quit: Konversation terminated!) 21:21:21 --- quit: ACE_Recliner (Remote host closed the connection) 21:38:41 --- quit: wa5qjh (Remote host closed the connection) 21:42:27 --- join: wa5qjh (~Thunderbi@121.54.90.142) joined #forth 22:23:55 --- join: wdfwefewvfgew (~gk.1wm.su@2001:590:1405:2e4:2e4:762d:9e59:405b) joined #forth 22:23:59 --- part: wdfwefewvfgew left #forth 22:53:01 --- quit: vsg1990 (Quit: Leaving) 23:00:16 --- join: true-grue (~true-grue@176.14.222.10) joined #forth 23:07:30 --- nick: impomatic_ -> impomatic 23:11:10 --- join: mtsd (4d6e3d64@gateway/web/freenode/ip.77.110.61.100) joined #forth 23:53:37 --- quit: MrBusiness (Ping timeout: 245 seconds) 23:59:59 --- log: ended forth/17.02.12