00:00:00 --- log: started forth/18.10.18 00:44:52 --- quit: wa5qjh (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.) 00:49:23 --- join: ncv (~neceve@2a02:c7d:c5c9:a900:6eaf:6ef7:3b81:d5f6) joined #forth 00:49:23 --- quit: ncv (Changing host) 00:49:23 --- join: ncv (~neceve@unaffiliated/neceve) joined #forth 01:51:36 --- join: dave9 (~dave@90.20.215.218.dyn.iprimus.net.au) joined #forth 02:03:11 --- quit: ashirase (Ping timeout: 268 seconds) 02:08:05 --- join: ashirase (~ashirase@modemcable098.166-22-96.mc.videotron.ca) joined #forth 02:20:44 --- join: wa5qjh (~quassel@freebsd/user/wa5qjh) joined #forth 03:05:28 --- quit: rpcope (Ping timeout: 268 seconds) 03:06:24 --- join: rpcope (~GOTZNC@muon.copesystems.com) joined #forth 03:12:39 --- quit: wa5qjh (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.) 03:27:14 --- quit: nighty- (Quit: Disappears in a puff of smoke) 04:23:59 --- join: dddddd (~dddddd@unaffiliated/dddddd) joined #forth 05:27:26 KipIngram: Bad news. My target is beginning to break. 05:27:45 Something's faulty with the ROM, I did a system check and it said "ROM failed", perhaps mechanical shock at some point during handling? 05:27:59 Who knows. I'll try to get it fixed. 05:28:21 Ah, BUMMER. That calculator is still available, though, isn't it? 05:28:31 If not officially, likely on eBay. 05:28:44 Yeah 05:28:49 I'm about to drive - back in a bit. 05:28:50 I found out because I was doing some calculations today, as I have done a million types 05:28:53 times* 05:29:20 Typed -3/-5 and it crashed! Did it on a friend's calculator and they handled it fine. 05:29:22 siraben: which product id is it? TI- something right? 05:29:30 Ti-84 05:29:34 TI-84 Plus 05:29:50 you handle it roughly sometimes? 05:29:50 (which is weird because there was no original TI-84) 05:30:02 Well it's in my bag. 05:30:18 and it has an slide cover right? 05:30:38 Been working great for the past, what, 6 years? 05:30:39 Yes. 05:30:42 So could be internal. 05:30:45 I'll try to see if re-flashing the OS would fix it. 05:30:47 hmm.. do you know of any electronics technicians or repair shops? 05:31:02 oh, you can reflash it? the 'ROM'? 05:31:32 That's what I'm wondering, it's "ROM" but I'm not sure exactly what that means, in TI terms. 05:31:50 There's a tech repair department at my school, so I'll try to ask them first. 05:31:53 it is probably a flash chip of some kind 05:32:04 But they service computers, not calculators AFAIK. 05:32:22 I'm interested to know what this "ROM" is. The OS can be reflashed 05:32:26 ask them anyway, they can probably point someone out 05:32:29 Even with a third-party one, like KnightOS 05:32:31 Right 05:33:56 btw, have you been writing on this TI-84 Plus a lot to non-volatile storage? 05:34:37 No. I do that only when I have a "good" version of my interpreter and do something called a GROUP which backs up variable contents (like programs) 05:34:47 And writes to the archive, i.e. non-volatile memory. 05:34:52 it could simply be that the flash chip is 'worn out' and needs replacement 05:35:48 the going about replacing it might cost much more than the calculator in terms of cost. 05:36:23 Right. If I do need to buy a new calculator I'll get the newer TI-84 CE ones. 05:36:28 Which are much faster. 05:36:42 And I'd have to rewrite my interpreter, so that would be fun. 05:36:59 but try reflashing the 'ROM' before you go and do anything drastic 05:37:24 In fact, my younger brother recently had to get a calculator for school as well, and it's the CE model. I downloaded an assembly Pacman clone and it blew me away. 05:37:31 Higher resolution, color, fast sprites. 05:37:47 From what I've skimmed the assembly language is nicer too. 05:38:18 if you buy a new one then dont throw the old one away, write a short note of what is wrong with it tape that to the calculator and give it to a competent hackerspace. 05:38:58 Yeah. Sounds good. 05:39:05 then someone might have some fun repairing it. I hate indiscriminate e-waste. 05:40:41 talking about targets 05:42:09 I see that ATMEGA32-16PU (the one used in Arduino and is in PDIP package) has features that supports subroutine call thread forths nicely 05:42:26 threaded* 05:43:02 https://education.ti.com/en/products/calculators/graphing-calculators/ti-84-plus-ce?category=specifications#specifications 05:43:12 "154KB of available RAM memory", wow! 05:43:35 Ah there is the "ROM" "3 MB FLASH ROM memory for data archive and storage of Apps" 05:43:38 It's not really ROM, then. 05:43:44 Just non-volatile storage. 05:44:01 ^that's the newer model 05:44:02 I am using registers r26&r27 which is also indirect register X for datastack pointer 05:44:24 noice 05:45:36 There's also an emulator for this model for Macs, so debugging would be faster 05:45:37 https://github.com/CE-Programming/CEmu 05:45:55 In fact, this is not such a bad idea after all. I'd expect rewriting it to take around half as long as the first time because I know what I'm doing. 05:48:16 Just did a full reset "RAM + ROM" on my TI-84, let's see. 05:48:19 Zarutian: i have used a small atmel mcu before, does your ATMEGA have 3 address registers X,Y,Z ? 05:48:30 Nope. It still crashes :( 05:48:32 dave9: yeah 05:49:05 siraben: then most likely some memory cell in the flash might become unusable. 05:49:58 Zarutian: i found Y best for variables 05:50:00 siraben: but look at the bright side! You can get that newer one and donate the old one to a hackerspace. (They might repair it, the might steal the lcd for some other project) 05:50:41 Could be a fun disassembly project, right? 05:51:09 dave9: what do you mean variable? Like pointing to user variables (which DOUSE or equiv do indexing into)? 05:51:47 Zarutian: nah this was before i knew of forth, i used atmel long ago in assembly 05:52:11 siraben: if you have the correct tools and know how to take the thing apart without breaking anythting. 05:52:42 * siraben has never disassembled anything before 05:53:24 Well, successfully or putting it back together again 05:53:30 Zarutian: forth is very different to any code i used to write, in assembly or C 05:53:43 dave9: yeah, I am programming it in assembly but in such a way to use a datastack and returnstack (X and SP registers as their pointers) 05:53:54 dave9: It's wonderful :) 05:54:06 dave9: What do you normally write? ASM and C? 05:54:25 not having to keep track of which temp registers get clobbered is real nice 05:54:26 siraben: C 05:54:48 I found C compilers for MCUs generally produce crappy code 05:55:10 Ah, so you're new to the idea of programs writing programs, meta-compilation and a language that can change its own semantics? 05:55:20 too big, too slow and not all or majority of the instruction set is utilized 05:55:24 I love how IF is defined in Forth itself, most languages can't do that. 05:55:58 siraben: yep, and i like that it is interactive... C is definitely not and i see that as a weakness of C 05:56:17 Most definitely. Interactive languages make learning great. 05:56:38 Also, implementations support the SEE word which is a good way to see how the language is defined in terms of itself. 05:57:51 siraben: well you can use the SK calculus to fake it in Scheme and in Tcl: proc if_ {cond conseq altern} { uplevel 1 [lindex [list $altern $conseq] [uplevel 1 [list expr $cond]]] } 05:58:19 (the uplevel is pretty much 'eval in the callers variable scope') 05:59:09 Tcl? Never heard of it before. 05:59:23 Zarutian: Right. All you need are lambda expressions. 05:59:37 But that's a very abstract model of computation, Forth makes it dead imperative. 05:59:42 Tool Command Language, with Tk it is quite handy to use to throw together some GUI for some small utilities 06:00:16 also many design tools I use are scriptable with it 06:01:22 I like Forth for how small and minimalistic its requirements are 06:01:57 I like Tcl as a more consistient shell than bash 06:02:09 So do you use it? 06:02:51 yeah but then again I am rather multilingual programming language wise 06:03:19 Are you much of a Haskeller? 06:03:35 I've been learning that too, mind-bending. 06:03:40 nope, to me Haskel looks like Overly Extended Backus Noir notion 06:04:06 Wait tell you see Coq ;) 06:04:07 Till* 06:04:28 I grok pure functions, immutability and Meely machines but monads in general elude me 06:05:03 Syntax is a touchy topic. Forth gets around that by having none at all 06:05:06 Meely machines? 06:05:26 Monads are a general concept. I finally "understood" them when I was reading papers on monadic parsing 06:05:32 Tcl doesnt have syntax, just a few quoting rules. 06:05:59 could be Mealy machines. I never recall how the guys name is spelled. 06:06:31 In the same way that functors represent a "lifting" of elements (i.e. mappings between categories in category theory), monads do some lifting as well 06:06:42 basically a Meely machine is a function that takes two arguments, inputs and old_state, and returns outputs and new_state 06:06:43 The best way to get it is to read some papers, I think 06:06:56 Ah, so it makes a monad 06:07:34 Run :: (Data, State) → (Data, State) 06:07:46 could be? do not know. Anywhat that is how one can model and think of one cpu fetch&execute cycle. 06:08:06 What if you have a function that takes data and returns data and state? 06:08:31 f :: Data → (Data, State) 06:08:37 that is some other machine related but I dont recall the name of the guy 06:09:05 So the bind operator (>>=) can compose these thing s 06:09:23 and there is one other that takes in (Data, State) and returns just (Data) 06:10:00 (>>=) :: Data a → (a → Data b) → Data b 06:10:02 siraben: heard about evolutionary/genetic cartesian programming or even just ROM logic? 06:10:17 Where Data is some sort of type constructor 06:10:29 the latter basically implements a Mealy machine cheaply in hardware. 06:10:46 It's pretty interesting what State monads can do, model mutation in a pure manner. 06:11:05 I've heard about and done some genetic programming 06:11:10 siraben: sorry, but I have heard the word type used in so many conflicting ways in the real of computer science that the word has lost all saliency for me 06:11:11 In Mathematica. 06:11:54 Basically, Data Integer may represent that the machine is holding an Integer with some state 06:12:05 Data is a functor 06:12:25 Do you write Scheme? 06:15:20 By the way, the State and Parser monads are somewhat simple. What is really mind-melting (and I fail to understand this completely) is the Continuation monad. M 06:15:58 Zarutian: ROM logic? 06:16:31 ROM logic: you have a register (a series of D flipflops or JK flipflops) to keep state. You feed the output of that plus any external inputs to the address port of a ROM. You feed some of the data lines into the register and some are the outputs. 06:17:43 Functional programming is my go-to for quick hacking on things/new concepts. I go imperative for performance or because I just want to "do" things without needing extra abstraction. 06:18:04 Zarutian: Ah, so like a state machien. 06:18:06 machine* 06:18:20 yes, a very simple one. 06:18:35 Add the ability to perform read/write to memory and some branching and voilá you have a Turing complete model. 06:18:59 heck, many old keypad locks were implemented in this way. 06:20:19 (three by four 'phonepad' was used. # was used as an 'code-ender' to prevent attacks via De Bruin sequences) 06:21:02 and the rom? well, it was an EPROM iirc. 06:24:03 recently I thought of a way to hand make a ROM cheaply from newspaper paper, aluminum foil, conductive glue (mix kid safe hobby glue with metal filings dust) and a pick'n'place tape-roll of cheapest rectifier diodes avialable. 06:24:39 Would that work? 06:24:53 Why not just buy a chip? Seems cheaper. 06:25:04 (the diodes are needed to go from the selector lines to data lines) 06:25:32 well, depends. For a long while I was trying to eliminate the need for the diodes 06:26:48 this is usefull for when you want to be sure that some programmer-device didnt put something else in your flash than you thought 06:26:51 siraben, dave9: As a fun exercise, you might try writing your uown SEE. 06:26:57 It's straightforward. 06:27:12 dave9: Try to read jonesforth, it's a good place to start 06:27:19 KipIngram: I have! 06:27:29 dave9: I also recommend eForth 06:27:29 It's great. And best of all when you type "SEE SEE" 06:27:45 Reflashing the OS, 36% done. 06:27:53 Fingers crossed. 06:27:59 siraben: Moore and Mealy machines (not our Moore) are terms you encounter primarily in digital hardware design. 06:28:23 :-) Sometimes a couple of you guys get more computer-sciency than I do re: Forth. 06:28:25 i've been looking at this.. bare metal forth for 6502... https://github.com/scotws/TaliForth2 06:28:26 Looking at the wikipedia article for Mealy machines right now. 06:28:34 Forth: Telling the computer what to do. :-) 06:28:42 Pretty much end of story for me. 06:29:05 Oh wow, reflashing is failing. I can't even turn on the target anymore :((( 06:29:10 Well I can but it says "Please install operating system" 06:29:15 Moore machines have output a function of state only - inputs don't directly affect outputs. 06:29:21 They affect output indirectly via causing state changes. 06:29:25 *"Please install operating system now." 06:29:28 Ah, right. 06:29:36 So a finite state transducer. 06:29:42 There's a formal procedure for converting between Moore and Mealy. 06:29:57 Which is probably rarely used - generally you design one or the other from the ump. 06:29:59 jump 06:30:07 I love these theory of computation ideas, very concise definitions. 06:30:35 Zarutian: Yeah I think the flash has had its time. 06:31:09 siraben: yeah also, that arts-and-crafts ROM is handy for when you have quite a small rom like in that keypad lock. 06:31:24 Right. 06:31:45 Hm. I doubt this machine could be repaired. I really have to get a new one. 06:32:13 Argh, sad day. 06:33:33 I think one of the nicest things about Forth is that you're not locked in to any of these "formal concepts." You can just do anything you want. 06:33:52 heck I even seen pictures of these kind of keypad locks were to rom is a piece of punched paper card 06:34:24 And package it as nicely as you want. 06:35:09 it gets clamped between a 'ball-grid' and a 'circle-grid'. 06:35:54 Neat. 06:36:02 Simple. 06:37:23 (the circles are connected in rows and are the data lines, while the balls are the kathode-ends of the diodes connected to the 'word' select lines) 06:38:41 that keypad thing was quite handy for semi-publicly-accessible places where the code needed to change every two weeks 06:39:09 btw, does bi-weekly mean every two weeks or twice a week? ;-Þ 06:41:41 this was from way before eeproms, MCUs or such were cheap enough to take over 06:47:12 twice a week 06:47:27 every two weeks is semi-weekly 06:47:54 Which is very similar to bi-monthly 06:48:06 but not quite 07:06:02 --- join: nighty- (~nighty@s229123.ppp.asahi-net.or.jp) joined #forth 07:14:18 --- quit: tabemann (Ping timeout: 260 seconds) 07:22:31 Looks like I stumbled upon a community of TI hackers. They're writing their own operating system "KnightOS". 07:22:35 There hasn't been any Forths for it, so I think I should attempt to port mine 07:22:40 Just the system calls will need to be replaced. 07:26:27 I'm waiting for you to decide to go for bare metal. :-) 07:26:32 Your Forth could *be* the OS. 07:27:19 Ah, right of course. 07:27:44 I'll stick around that community as well and see how they do their OS development and glean a thing or two 07:28:16 Funnily enough, they said that they don't use their calculators for numerical computation, just for hacking 07:28:37 This also means that if I am to continue development on this I should just get another same model TI-84 and not worry about the new-fangled CE 07:28:47 Because they already have quite a bit of experience with this black and white display one. 07:29:02 Can't wait to go bare metal :) 07:48:50 --- join: moony (moony@unaffiliated/moonythedwarf) joined #forth 07:49:07 thing this is cool 07:51:54 moony is a Forth enthusiast I found in #powder-subframe :) 07:52:07 Hi moony. Welcome. 07:52:09 "enthusiast" is a overstatement 07:52:41 i'm just someone who loves challanges, like codegolf. Forth is a fun thing to do that in sometimes :P 07:53:06 that, and its easy to implement on obscure hardware 07:53:24 I'm porting to a calculator 07:54:04 I'm working on a emulator for the MC88100 so i can probably do things with it. FORTH likely included :P 07:54:35 glad i got the manual in paperback, it'd be a pain to navigate in PDF form 07:55:32 i can see why this CPU failed tho >_> Integer and Floating Point registers are in the same file 07:55:32 so it can't do them simultaniously 07:56:10 the 31 registers + zero ro register design is nice tho 08:04:17 ...i wonder 08:04:31 would it be possible to make a FORTH interpreter in Dwarf Fortress? 08:04:44 I mean, it is, the game's turing complete, but could you do it with only a 16x16 world space 08:05:10 if it has something like controllable 0 and 1 than yes I guess ) 08:05:44 it does. Someone made a space invaders clone in DF, so it certainly can do that 08:06:00 https://www.youtube.com/watch?v=j2cMHwo3nAU 08:06:42 Has someone made a Forth interpreter for the Turing Machine? 08:06:44 The ultimate computer, no? 08:07:01 siraben, too much math 08:07:11 Has interesting technical challenges such as not being addressable directly (it's an infinite tape) 08:07:38 I've written programs for the turing machine, for instance, palindrome and multiplying numbers. 08:13:50 You'd need a lot of states 08:14:21 siraben: I wouldn't use the word "ultimate." 08:14:31 It's more the "logically simplest" computer. 08:14:48 Then again, I suppose the lambda calculus is simpler. 08:14:54 It's really an academic device more than anything else. 08:14:58 There's a lot of "turing equivalent models", they're all the same. 08:15:12 Right. Real machines don't work that way. 08:15:15 Right - mathematically equivalent. 08:15:52 That's why I prefer the lambda calculus, it's a lot like Lisp. 08:15:58 The latter is inspired by the former. 08:16:08 Much easier to reason about programs in it than the Turing machine 08:16:32 There's also typed variants so you want prove type-checking algorithms, like the Hindley-Milner system used in Standard ML. 08:17:15 I'm not terribly familiar with any of those thing. 08:17:27 Processor is a functional block - I can tell it what to do and so solve problems. 08:17:41 I'm a hardware guy at heart. 08:18:02 siraben: Hindley-Milner? Wasnt it prooven that type systems written with that are interminable? 08:18:30 What do you mean? 08:18:53 I think it was that programs checked by that type system _cannot_ give type errors at runtime. 08:25:41 very active channel today 08:28:21 This channel seems to have been more so in the past month or two, right? 08:29:06 Yep 08:30:09 Good, good. 08:30:15 quick! we need a web3.0 website! 08:36:02 siraben: I mean that determining if a program giving a type system that follows Hindley-Miler is equiv to trying to solve the halting problem. 08:38:09 Of course. You're talking about equivalences of type systems. 08:38:20 That's undecidable. 08:38:38 It's like saying "are these two programs the same?" impossible to say in general 08:38:59 Hindley-Milner is a good start, but it doesn't allow for much abstraction. 08:39:12 I'm not sure what Haskell's type system is based on, but I like the idea of typeclasses 08:39:24 And, more recently, dependent types. 08:39:31 (which I still have yet to learn) 08:39:46 you know one of my programming pet peeves? variables named "creat" or "strng" or "cnt". This isn't 1980. You can spare the 1,2 extra characters 08:40:21 Yeah. 08:40:30 There are languages that do that? 08:40:37 Plus, it shouldn't even matter because it gets tokenized anyway. 08:40:45 There are people who do that. 08:41:00 * siraben wonders if he is one of those people 08:41:10 I hope I'm not. 08:41:17 what I have come to realize it is much better to forget about the whole compile-time/run-time type checking distinction and distinction of types from say guards. One is better of starting with a interpreter and then do Futamura transformations and partial evaluation to get an increasingly specialized program. 08:41:36 Ken Thompson said it best: 08:41:41 "Ken Thompson was once asked what he would do differently if he were redesigning the UNIX system. His reply: "I'd spell creat with an e." " 08:41:55 Especially so for the definition of words themselves. For internal program usage in assembly, my naming practice can vary quite a bit. 08:42:20 if I have to name something parse_incoming_data(), I damn well will 08:42:54 I just named a theorem in Coq recently this: "a_and_b_implies_a_implies_b" 08:43:00 some uber-coder might name that prs_datai() 08:43:06 Verbose? Yes. Unambigious? Rightly so. 08:43:13 Naming is hard. 08:43:26 siraben: that would be "ab_im_a_im_b" 08:43:58 Yeah, I need to get better at naming in Coq. 08:44:09 Reading Coq source code is so intimidating. 08:44:11 or to save space abimaimb 08:44:55 I suppose, but theorem names don't affect anything but how they read. 08:45:27 exactly, and reading is GOOD! Code was designed to be read! 08:46:17 Personally, "a_and_b_implies_a_implies_b" is a good name 08:48:46 Other names: demorgan1 demorgan2 08:51:34 in forth you could call it a/\b->a->b except in unicode for the proper math symbols! 08:52:21 Do you guys do theorem proving? 08:54:29 dave9: never thought about that 08:54:44 just use unicode to use real mathematic and logic symbols 08:57:11 WilhelmVonWeiner: yes! 08:57:40 you could use proper × and ÷ 08:58:10 a language that can use ÷ for divide... who would have thunk it? :-) 09:56:40 I think ISO ÷ divides the left half of the equation by the right half. 10:57:11 --- quit: ncv (Remote host closed the connection) 12:12:52 --- join: dys (~dys@tmo-080-79.customers.d1-online.com) joined #forth 12:34:57 --- quit: groovy2shoes (Ping timeout: 276 seconds) 12:45:07 --- quit: dddddd (Ping timeout: 244 seconds) 12:47:08 --- quit: dave9 (Quit: dave's not here) 13:53:49 --- join: dddddd (~dddddd@unaffiliated/dddddd) joined #forth 14:41:25 --- join: wa5qjh (~quassel@175.158.225.202) joined #forth 14:41:25 --- quit: wa5qjh (Changing host) 14:41:25 --- join: wa5qjh (~quassel@freebsd/user/wa5qjh) joined #forth 15:08:06 18<dave918> in forth you could call it a/\b->a->b except in unicode for the proper math symbols! 15:08:21 1 × 2 ÷ 3 → 4 Compose key ftw 15:38:33 --- join: olopierpa (4f12eaf7@gateway/web/freenode/ip.79.18.234.247) joined #forth 15:41:57 --- join: dlyund (~marksmith@ip-62-235-65-225.dsl.scarlet.be) joined #forth 15:42:28 Does anyone know if it's possible to silence gforth warnings e.g. "redefined word"? 16:01:22 --- quit: wa5qjh (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.) 16:10:57 run it with "gforth 2> /dev/null" maybe? 16:11:21 redirect stderr to null usually works. It works on Lina 16:11:41 Yes, I just tried that and it works. 16:12:09 I've always found GForth errors/warnings excessively verbose. 16:12:27 "warnings off" at the start of your session probably does it, too 16:16:05 Oh, that's better, because it retains actual ERRORS. 16:16:24 Unfortunately, "backtrace off" doesn't seem to work. 16:16:29 That's the part that really bugs me. 16:19:49 the best debugging for errors is a segfault. You should be counting the number of times you executed ." ERRROR!!!!!" and backtracking through your code from that. 16:20:17 or forward-tracking(?) through the number of calls to `." Working here just fine" CR` 16:22:10 WilhelmVonWeiner: curiously enough I use this method sometimes with MCUs and use a led instead of ." " CR 16:23:28 I think it was Brian Kernighan who said something along the lines of: "The best debugging tool is careful thought, and judiciously placed print statements." 16:23:51 ...emphasis on the latter. 16:34:31 --- quit: Zarutian (Ping timeout: 244 seconds) 16:35:58 After switching to Lina forth I feel like my Forth code has improved 16:36:44 it has less words than gforth, but it means I am not constantly searching for things to do X 16:37:09 I mean, look at the glossary: http://home.hccnet.nl/a.w.m.van.der.horst/ci86.lina.html 16:37:49 This is what Chuck means when he means Forth, 100-200 words that let you build your program, or build a vocabulary with which you write your one-liner program 16:40:58 --- join: Zarutian (~zarutian@173-133-17-89.fiber.hringdu.is) joined #forth 17:08:57 --- quit: nighty- (Quit: Disappears in a puff of smoke) 17:50:30 WilhelmVonWeiner: "warnings off" was exactly what I was looking for :-) thanks for all the suggestions guys. 18:15:39 --- join: [1]MrMobius (~default@c-73-134-82-217.hsd1.va.comcast.net) joined #forth 18:18:11 WilhelmVonWeiner, my screen is too big for that site. First world problems 18:18:39 +240% zoom™ 18:19:10 --- quit: MrMobius (Ping timeout: 272 seconds) 18:19:10 --- nick: [1]MrMobius -> MrMobius 18:32:30 --- quit: dlyund (Ping timeout: 245 seconds) 19:45:27 --- join: teach_me_x86 (18e4a485@gateway/web/freenode/ip.24.228.164.133) joined #forth 19:45:41 Hello all. 19:47:09 Just finishing up the "starting forth" book and am on chapter 11 (extending the compiler); I am confused about its explanation of postpone. 19:49:38 I understand that when the word to the right of postpone is immediate, its address is compiled into the dictionary entry instead of being executed. But what about when the word is not immediate? From the explanation it seems to be a no op. 19:54:17 --- quit: olopierpa (Quit: Page closed) 19:54:25 what do you guys call those binaries that could be run on different cpu? 19:55:22 polyglots 19:59:15 I've been staring at the postpone word explanation on and off for 2 days and am not sure what to conclude. 20:00:42 --- quit: dddddd (Remote host closed the connection) 20:09:20 --- join: dave9 (~dave@90.20.215.218.dyn.iprimus.net.au) joined #forth 20:10:00 hi 20:12:24 --- join: tabemann (~tabemann@172-13-49-137.lightspeed.milwwi.sbcglobal.net) joined #forth 20:23:31 --- join: rdrop-exit (~markwilli@112.201.162.180) joined #forth 20:28:04 Hello Forthwrights 20:28:15 :) 20:31:23 --- nick: dave0 -> dave42 20:31:36 --- nick: dave9 -> dave0 20:31:54 --- nick: dave42 -> dave9 20:33:31 I think I understand postpone now. 20:33:44 Excellent 20:34:06 :] 20:36:41 I've written down some topics to ask the room over the week since I'm hyped on trying to implement a dtc forth on x86 as soon as I finish the book this weekend. 20:36:54 Which book? 20:37:30 starting forth 20:38:04 Read it a few times in passing but didn't do a deep dive until now 20:38:45 Is this a revised online version of Starting Forth, POSTPONE didn’t exist when SF was written, just COMPILE and [COMPILE]. 20:39:27 The online version was revised some time ago, and the site seems to have been updated a year or 2 ago (looks great now) 20:41:20 They must have ANS-ified it. The last edition of SF I read was the 2nd edition, which was based mostly on the Forth-83 standard. 20:41:40 Great book. 20:41:51 Superb book imo 20:41:52 Thinking Forth is even better. 20:42:00 Same author. 20:42:08 As concise and short as the language itself 20:44:15 I’ll have to check out the ANS-ified version, see what they changed. 20:45:55 I have here written "ask #forth about the issue of register renaming, out of order execution, maintaining pipelining. Ask if 'caching TOS' means storing TOS value or pointer to TOS' " 20:48:05 Caching TOS means caching the TOS value in a register. 20:48:56 This is a common optmization when running Forth on register machines. 20:50:07 Thanks, I wasn't sure if I were to store the value itself in eax or have esi hold its address. 20:51:34 You’re implementing on x86. It’s been ages since I’ve done any x86 assembly. 20:53:10 I'm open to using another architecture like ARM since I have not begun implementation just yet. It's vaporware 20:54:00 If you’re running on an FPGA-based stack machine, you can put the stacks in SRAM, effectively making the whole stack register equivalent. 20:59:42 Unfortunately I've never programmed an FPGA 21:04:29 Not sure where to even start with that, purchase one, learn verilog would seem proper 21:10:27 There’s an old FPGA tutorial book that uses a Forth processor as one its examples, unfortunately the board it uses is probably no longer made, and the Verilog is from before System Verilog. 21:17:04 How did you begin learning fpga programming; I presume you had relatively high low-level knowledge prior? I ask that I may perhaps emulate the steps you took so I do not get lost. 21:24:27 --- quit: dave0 (Quit: dave's not here) 21:26:39 My previous digital design knowledge was acquired from university courses in the 80’s, most of it was long forgotten. I basically read a pile of books on digital design with FPGAs, chip design, and Verilog/System-Verilog. 21:29:51 You’re best starting point would depend on whether you already know the basics of digital design and are learning FPGAs and Verilog, or if you’re starting from scratch. 21:32:16 Almost from scratch, I could read very simple toy schematics, such as a few SRAM cells and such, but even that requires me to strain my eyes and furrow my brow. 21:35:01 In that case the best starting point is probably a digital design textbook that uses Verilog as the HDL for the examples, or an FPGA primer that covers the basics of digital design as well. 21:37:35 I think some digital design textbooks come in two versions, one using VHDL for the examples, the other using Verilog for the examples. 21:41:43 Some of the Verilog specific books on my shelf are: 21:42:18 - RTL Modeling with SystemVerilog for Siimulation and Synthesis by Stuart Sutherland 21:42:47 - Advanced Chip Design with Practical Examples in Verilog by Kishore Mishra 21:43:09 - Logic Design and Verification using SystemVerilog 21:44:28 - Advanced FPGA Design, Architecture, Implementation, and Optimization by Steve Kilts 21:46:29 From name alone, it seems I should begin with the third 21:47:54 This one is not Verilog specific: Sequential Logic Analysis and Synthesis by Joseph Cavanagh 21:51:49 Aha, here’s the most general and textbooky one I have: Digital Design by Morris Mano 21:52:17 That sounds perfect hahaha. 21:53:21 IIRC it was an older edition of that book that was used at university in the 80s 21:53:47 In terms of hardware, what should a beginner acquire (including peripherals like wires, display, chipset of some sort, etc.) 21:53:55 There are probably better general textbooks out there 21:55:03 If possible include a time machine to the 80's so I may follow along with the old book 21:55:16 :) 21:55:59 A FPGA demo board is the place to start 21:58:39 A search for "fpga demo board" returned an advertisement reading "Buy Fpga Programmer at amazon." 21:59:24 Try Evaluation Board, gor example Terasic makes boards with Altera FPGAs 21:59:33 *for 22:01:45 … or Development Kit 22:02:26 My Google-fu sucks 22:03:41 The various FPGA manufacturer sites will have links to eval board suppliers 22:04:29 Gotta break for lunch, see you around. 22:05:44 Thanks for the discussion/help 22:08:03 I'll drop by the room with various names (don't like the idea of registering, I have enough accounts to remember). Anyways I'm off to sleep; thanks again and see you around 22:08:17 Take care :) 22:08:33 --- quit: teach_me_x86 () 22:49:25 --- join: dave0 (~dave@90.20.215.218.dyn.iprimus.net.au) joined #forth 22:49:45 re 23:27:05 --- quit: nerfur (Ping timeout: 245 seconds) 23:28:25 --- join: nerfur (~nerfur@broadband-95-84-184-13.ip.moscow.rt.ru) joined #forth 23:52:58 --- quit: dys (Ping timeout: 260 seconds) 23:59:59 --- log: ended forth/18.10.18