00:00:00 --- log: started forth/19.01.28 00:06:27 --- quit: dne (Remote host closed the connection) 00:08:41 --- join: dne (~dne@jaune.mayonnaise.net) joined #forth 00:17:18 --- quit: smokeink (Ping timeout: 240 seconds) 00:22:11 --- join: smokeink (~smokeink@42-200-117-45.static.imsbiz.com) joined #forth 00:39:46 --- quit: smokeink (Ping timeout: 250 seconds) 00:41:03 --- join: smokeink (~smokeink@42-200-117-45.static.imsbiz.com) joined #forth 01:15:39 --- join: xek (~xek@apn-31-0-23-82.dynamic.gprs.plus.pl) joined #forth 01:15:42 back 01:24:49 wb 01:35:37 thx! 02:04:16 --- quit: ashirase (Ping timeout: 250 seconds) 03:12:07 never liked catch/throw in forth. never once used it. 03:14:10 I've only ever used it to implement some backtracking/coroutine experiments, hehe 03:15:08 to me catch/throw means "try a different approach" 03:15:59 I don't have time for error handling 03:16:11 kekeke 03:16:56 * proteusguy doesn't make errors. He makes interesting results. 03:17:16 Although I plan on implementing some sort of exception handling for my REPL once it's complete 03:17:31 I don't want the entire system to go down if a word isn't found 03:17:43 Just reset the data and return stacks and go back to interpret mode 03:17:49 I'm probably being a bit hyperbolic 03:18:02 And maybe a backtrace, should nested errors occur 03:18:04 siraben, that's what happens if a word isn't found already isn't it? 03:18:20 proteusguy: Depends on how QUIT is implemented, I suppose. 03:18:29 I just think a whole "catch throw" exception system is extra complication 03:18:33 For me the system warns the user then prompty shuts down 03:18:56 siraben, ah... yeah just clear the stack, print a message + ok, and let them try again. 03:18:57 That's needed for the bootstrap files, I wouldn't want a buggy live system 03:19:17 But for a REPL where mistakes are common, I need something that just warns them 03:19:41 * proteusguy has to run to dinner now. Don't break anything while I'm gone... 03:20:00 Of course the downside is that if the user is in compile mode, and makes a mistake, then the space isn't recovered. e.g. : FOO 3 6 * + SDKS ; , upon reading SDKS the stacks are cleared and the mode is set to INTERPRET 03:20:13 --- quit: proteusguy (Remote host closed the connection) 03:20:17 But the space already taken up by FOO + header and the compiled words isn't recovered. 03:20:28 Having some type of exception handling is useful for keep error handling code clean. I have a problem with people who use it for non-execptional situations. 03:20:32 Still better than just crashing, though. 03:20:58 Right, I prefer exception handling when things might go wrong 03:21:36 But for me it usually makes sense in the context of processes and signals and so on, which are OS-level things. 03:21:52 If you're reading a file and reach the end of it that's not an exception it's normal. 03:22:58 If you're reading a communication channel and it comes down, that's an exception. 03:23:07 My sentiments exactly. 03:23:40 If I ever get around to implementing the link port code for the calculator, I'll use exceptions. 03:25:27 It has to be unexpected in normal circumstances to be an exception. 03:25:52 Or I should say "to warrant an exception" 03:27:21 Once you start using an exception handling mechanism as some kind of fancy flow control you've jumped the shark. 03:27:47 * control flow (not flow control) 03:28:14 I agree. Fancy control flow constructs make code harder to reason about 03:28:22 In any language that I've seen. 03:29:38 It's as if one used a lot of unconditional jumps 03:29:56 Right, and it's a heavy weight mechanism, kind of like longjump in C. 03:35:17 Although in the outer interpreter (repl) it's not really much of an issue to use exceptions for things such as ticking an non-existing word, etc... 03:36:24 Keeps the logic clean. 03:43:34 Returning to the file example, if you're reading a fixed format file that should be a prticular size, and it runs out in the middle that would also warrant an exception, but reaching the end of file where you expect it to be does not. 03:49:20 Exception handling is all about punting from a lower level that does not have sufficient context to deal with a problem locally. 03:50:01 --- join: Slith (~sean@61.68.117.134) joined #forth 03:52:26 Anyway sorry about the diatribe, just my 2 cents. :) 03:53:59 --- join: ashirase (~ashirase@modemcable098.166-22-96.mc.videotron.ca) joined #forth 04:08:37 --- join: dddddd (~dddddd@unaffiliated/dddddd) joined #forth 05:16:35 I only have a handful of words that return some sort of flag on the stack 05:17:16 For instance, setting the ROM page that is loaded into RAM page 2 is one of them, if the user asked for an invalid page (not from 0-7), then I indicate that on the stack. 05:26:02 hi 05:26:21 my forth cpu is chubby 05:31:07 --- quit: nighty- (Remote host closed the connection) 05:54:22 --- quit: rdrop-exit (Quit: Lost terminal) 05:55:34 --- join: pierpal (~pierpal@host53-189-dynamic.17-79-r.retail.telecomitalia.it) joined #forth 06:28:59 --- quit: pierpal (Ping timeout: 244 seconds) 06:30:50 --- join: pierpal (~pierpal@host53-189-dynamic.17-79-r.retail.telecomitalia.it) joined #forth 06:32:13 --- quit: pierpal (Read error: Connection reset by peer) 06:32:31 --- join: pierpal (~pierpal@host53-189-dynamic.17-79-r.retail.telecomitalia.it) joined #forth 06:35:56 --- quit: pierpal (Read error: Connection reset by peer) 06:38:16 --- join: pierpal (~pierpal@host53-189-dynamic.17-79-r.retail.telecomitalia.it) joined #forth 06:50:43 --- join: proteusguy (~proteusgu@cm-58-10-154-147.revip7.asianet.co.th) joined #forth 06:50:43 --- mode: ChanServ set +v proteusguy 07:00:14 --- quit: pierpal (Ping timeout: 250 seconds) 07:02:27 --- quit: dave0 (Quit: dave's not here) 07:06:38 --- join: pierpal (~pierpal@host53-189-dynamic.17-79-r.retail.telecomitalia.it) joined #forth 07:10:49 --- quit: pierpal (Ping timeout: 240 seconds) 07:20:00 --- quit: Slith (Ping timeout: 245 seconds) 07:21:15 --- quit: smokeink (Ping timeout: 245 seconds) 07:39:49 lars brinkhoff/you is/are in here somewhere, I know it but I think I've forgotten his/your nick 07:41:36 or (is he)/(are you) 07:42:44 them/they 07:42:47 WilhelmVonWeiner: I think he's normally using larsb as a nick 07:43:54 I'll have to keep an eye out 07:43:56 thanks 07:43:58 though by my logs, he's been away from the channel for a long time now: 07:44:02 17.12.27:06:47:58 --- quit: larsb (Quit: Leaving) 07:45:24 I'll have to hunt him down on another platform 07:45:47 Unless the secret NSA agent deployed to this channel can ping me his coordinates 07:46:19 --- join: pierpal (~pierpal@host53-189-dynamic.17-79-r.retail.telecomitalia.it) joined #forth 07:50:06 larsbrinkhoff on reddit, @larsbrinkhoff on twitter, or lars at nocrew.org 07:53:40 argiato gozaimasu 09:16:14 --- quit: pierpal (Quit: Poof) 09:16:32 --- join: pierpal (~pierpal@host53-189-dynamic.17-79-r.retail.telecomitalia.it) joined #forth 09:51:28 Shot off an email to Chuck a couple days ago, got a reply of which part was "ColorForth was unnecessarily complicated; but it was fun." 09:51:48 this guy! Love this guy 09:58:53 --- join: dys (~dys@tmo-100-189.customers.d1-online.com) joined #forth 10:36:57 --- quit: pierpal (Quit: Poof) 10:37:16 --- join: pierpal (~pierpal@host53-189-dynamic.17-79-r.retail.telecomitalia.it) joined #forth 11:16:44 heh 11:37:54 --- quit: xek (Remote host closed the connection) 11:38:21 --- join: xek (~xek@apn-31-0-23-82.dynamic.gprs.plus.pl) joined #forth 11:43:18 --- quit: gravicappa (Ping timeout: 240 seconds) 11:55:45 --- join: mtsd (~mtsd@94-137-100-130.customers.ownit.se) joined #forth 13:00:59 Just punting: anyone gotta' link to something that typifies the Zilog Super8 threaded-language use? 13:16:18 I could be confused, but it looks like it's ITC threaded. 13:17:17 --- join: learning (~learning@4.35.154.131) joined #forth 13:17:31 --- quit: learning (Read error: Connection reset by peer) 13:18:36 --- join: learning (~learning@4.35.154.131) joined #forth 13:21:13 --- quit: learning (Remote host closed the connection) 13:26:01 oups, my cpu fails at SWAP 13:26:57 corecode: wanted to ask. Are you going the microcoded path or the hardwired path? 13:27:08 hardwired 13:27:37 have a look, i appreciate comments 13:27:48 https://github.com/corecode/forth-cpu/blob/master/rtl/forth.v 13:30:16 never got quite the hang of verilog or vhdl (BLIFF is something I grok better) 13:31:02 PoppaVic: Super8 has hardware support for DTC according to https://www.bradrodriguez.com/papers/moving1.htm 13:31:30 "on the Zilog Super8, which has machine instructions for DTC Forth, the 2-byte address is replaced by a 1-byte ENTER instruction, making a DTC Forth smaller on the Super8!" 13:31:43 crc: ah, it's DTC then. Thanks.. I was squinting at the datasheet and wondering what they were specifying 13:32:35 They could have as easily gone with ITC, and I was afraid I'd spend a day wondering where the rabbithole lead - since I was NOT finding even one example of asm for it. 13:33:36 crc: I decided to add those three codes to my token-threaded table. Can be used or ignored, of course. 13:35:07 corecode: it is a bit tricky to handle immediates, isnt it? 13:36:06 you mean for literals? 13:36:30 yea without literals you could maybe compress the whole instruction set to 8 bits? 13:42:14 literals, branches, and calls 13:42:43 Zarutian: br and call and jmp can work off the stack 13:42:59 --- quit: mtsd (Quit: WeeChat 1.6) 13:43:45 although, I can admit that that gets expensive.. I've been noodling a do/loop/leave trio of opcodes, and they suffer the same issues as lit/nlit 13:44:48 i might remove EXECUTE in favor of >R RET 13:44:56 yes 13:45:02 hm no 13:45:02 lesse, I (as I have stated some moons ago here) have about 16 instructions in the instructionset of the VM which my heavily modified eForth runs ontop of 13:45:06 that doesn't work 13:45:45 corecode: you CAN get there with screw-around for ret/>r/r>/inc, etc 13:46:17 What I been doing is faking ops and glaring at the resultant mess and sizes. 13:47:14 * Zarutian wont spoil corecode exploration of the design phase space by revealing them now. 13:47:46 well, a VM is different from a cpu 13:48:01 Zarutian: that's NAI... He needs to walk the walk and kick the tires and pull the hair to reach the AH-HA!/Eureka!s 13:48:10 I can probably write an verilog file for that VM 13:48:11 corecode: not entirely 13:48:39 a CPU is a major investment - anywhere - a VM is a "wtf" 13:49:06 i don't understand 13:50:10 a VM allows you to see if the ideas work, and your later VDHL (or whatever) and FPGA allow you to test "well, this should have damned-well worked". Investment in producing chips wants all that shit. 13:50:19 PoppaVic: depends. If you just want to run that cpu in logic simulation then it isnt that expensive. Oh you mean in design think-time? probably 13:50:45 that's why i say it is different 13:50:56 Zarutian: sorta'/kinda' - I would never invest, and - not being an EE - I don't give a shit about "timings" - I just want shit to RUN. 13:51:00 in a VM you can write a big dispatch switch/case 13:51:13 corecode: of course. So what? 13:51:25 but with a cpu you need to think about control lines doing things 13:51:35 so the instruction encoding is much more important 13:51:38 ah, yer back to the EE view 13:51:41 and the functionality set 13:51:50 PoppaVic: hmm... I see. 13:51:54 well of course, if you contrast cpu and vm 13:51:58 the actual bitset is an EE issue, I just want shit to RUN 13:53:01 Zarutian: this is where the CISC and RISC and MISC and even OISC shit all comes in. I'm old. I want it DONE. 13:53:03 corecode: yeah, I sketched out a microcoded cpu implementation for the VM. Went with fields that selects which inputs of which muxes should go where. 13:53:32 PoppaVic: sure. 13:53:58 yea, that's what i did too 13:54:06 one can look at the fetch-execute cycle of an cpu as a Mealy Machine from functional programming paradigm. 13:54:09 I absolutely cheer for folks that can take the VM idea, hardwire it, and make it 10-100x faster. 13:54:10 what do you mean with microcoded vs hardcoded? 13:54:40 i don't have opcodes, i just have mux select bits 13:54:49 and enable/disable, etc. 13:54:49 corecode: you know how to implement an finite state machine with rom logic, yes? 13:55:08 hardcode is solder/gates; microcodes is: "I see this pattern, but I may execute 1000 things behind the scenes" - intel. 13:55:12 i don't know what you say 13:55:28 i feel this is a terminology impasse 13:55:34 read more 13:56:10 Zarutian: the instructions are basically microcode instructions 13:56:11 "microcode" is the language the users can't reach or use. It's behind the VM and user-interface. 13:56:12 PoppaVic: I dont do intel shit. Most I do is microop words that feed mux select lines and control lines. 13:56:20 yes 13:56:36 Zarutian: intel blows, meanwhile what I said holds true. 13:56:47 as opposed to having a big decoder that turns a 0x90 into a huge set of control signals 13:57:11 PoppaVic: i think Zarutian and I are talking on an implementation level, not a conceptual level 13:57:25 corecode: aah, basically you are going the J1/RTX2010 unencoded route, yes? 13:57:44 i guess, i didn't study their design too deeply 13:58:15 basically an instruction bits feed directly into the control lines 13:58:20 yes 13:59:03 s/an// 14:00:42 brb 14:01:16 --- quit: PoppaVic (Remote host closed the connection) 14:01:58 a bit about ROM logic: you need one ROM and an J/K or D flipflop based register. Take the input lines you have into your thing plus the output lines from the register and feed it into the address port of the ROM. Take the data output lines of the ROM, feed some of the back into the register while using the others as outputs from your thing. Voila! You can now implement an finitate state machine by puting suitable data bit patterns at 14:01:58 correct addresses in the ROM. 14:02:48 yes 14:04:16 designed an electronic combination lock using that. No MCU or such in sight. 14:05:21 it was too damn easily bruteforcable though 14:08:13 --- join: PoppaVic (~PoppaVic@unaffiliated/poppavic) joined #forth 14:11:59 A happy Ubuntu tends to be irksome. 14:15:47 --- quit: pierpal (Read error: Connection reset by peer) 14:16:01 --- join: pierpal (~pierpal@host53-189-dynamic.17-79-r.retail.telecomitalia.it) joined #forth 14:30:06 Zarutian: cute, but probably tedious to design the FSM 14:33:45 OK, so... Where we at? Ubuntu needed a restart, and my mind is in my VM 14:43:36 we were talking about my cpu failing at swap 14:43:42 and it has too many muxes 14:43:59 ahh 14:44:00 i will try to make an 8 bit derivative 14:44:03 later 14:44:11 So, the wire mentality fails. 14:46:42 --- quit: xek (Remote host closed the connection) 15:00:00 --- quit: pierpal (Ping timeout: 245 seconds) 15:12:36 --- join: pierpal (~pierpal@host53-189-dynamic.17-79-r.retail.telecomitalia.it) joined #forth 15:16:25 --- join: dave0 (~dave0@193.060.dsl.syd.iprimus.net.au) joined #forth 15:16:42 hi 15:22:53 --- quit: pierpal (Read error: Connection reset by peer) 15:23:06 --- join: pierpal (~pierpal@host53-189-dynamic.17-79-r.retail.telecomitalia.it) joined #forth 15:32:08 --- join: Kumool (Elite21911@gateway/shell/elitebnc/x-aqgaqmcgakacvigw) joined #forth 15:57:33 corecode: maybe take it to ##fpgaforth 15:58:42 I only say this as: 99% of us code to EXISTING - and opcode is just a define/pattern; your gates and shit are applicable to fpga - not asm or VM 16:02:22 PoppaVic: you're telling me to shut up about a forth cpu design here? 16:02:36 no 16:03:28 corecode: I am saying 99% of folks think of VM/logic, rather than GATES - I know an EE, and I can talk wu=ith him, but his headspace is ...STRANGE 16:04:00 and, sheesh. the poor guy created a channel for it 16:04:44 (aka. "It's not out fault you seem to speak in Tongues" ;-) 16:07:50 i'm an EE 16:08:00 also this is computer architecture, less EE stuff 16:08:27 i'm just doing this to learn more about cpu architecture 16:13:28 ha, found a bit to make it work quite nicely 16:15:59 --- join: smokeink (~smokeink@42-200-117-45.static.imsbiz.com) joined #forth 16:51:26 --- quit: proteusguy (Ping timeout: 272 seconds) 16:56:29 --- quit: ashirase (Quit: ZNC - http://znc.in) 17:26:33 --- quit: Croran (Remote host closed the connection) 17:30:06 --- join: ashirase (~ashirase@modemcable098.166-22-96.mc.videotron.ca) joined #forth 17:32:47 hey guys 17:33:39 --- join: Croran (~quassel@2601:601:1801:6dde::4276) joined #forth 17:37:23 --- quit: ashirase (Quit: ZNC - http://znc.in) 17:38:11 --- join: ashirase (~ashirase@modemcable098.166-22-96.mc.videotron.ca) joined #forth 17:38:30 --- quit: tabemann (Remote host closed the connection) 17:39:03 --- quit: ashirase (Client Quit) 17:39:16 --- join: tabemann (~tabemann@2600:1700:7990:24e0:a810:bece:738f:6808) joined #forth 17:39:50 --- join: ashirase (~ashirase@modemcable098.166-22-96.mc.videotron.ca) joined #forth 17:44:18 --- quit: tabemann (Ping timeout: 240 seconds) 17:52:39 --- join: tabemann (~tabemann@2600:1700:7990:24e0:1911:446f:51c:ef65) joined #forth 17:53:21 --- quit: PoppaVic (Remote host closed the connection) 17:56:57 --- join: PoppaVic (~PoppaVic@unaffiliated/poppavic) joined #forth 18:13:19 good evening 18:13:55 hey 18:21:31 * PoppaVic sighs 18:26:00 you sigh without any provocation 18:36:28 I stab-in-the-face similarly. Care to push it? 18:38:20 --- mode: ChanServ set +o crc 18:40:48 corecode: Guestion about FPGAs since you seem more familiar with that space than I am. What's the noise on AGM's kit, like the AG1K? I can get some decently cheap AGM kit, see, so was interested if it was worthwhile. 18:40:48 cool. then a nap is apropos 18:46:16 put a cap on it, it'll be fine 18:57:44 --- quit: dave0 (Quit: dave's not here) 19:04:51 oh blunder blunder 19:04:56 my call doesn't work 19:10:50 corecode: ^^ 19:11:16 The other one I can get cheaply is Anlogic. Any noise on that either? 19:27:28 --- quit: dddddd (Remote host closed the connection) 19:40:34 --- quit: smokeink (Ping timeout: 268 seconds) 19:43:01 --- join: smokeink (~smokeink@42-200-117-45.static.imsbiz.com) joined #forth 19:50:43 --- quit: APic (Ping timeout: 250 seconds) 19:58:00 --- join: APic (apic@apic.name) joined #forth 20:07:56 --- join: [1]MrMobius (~default@c-73-134-82-217.hsd1.va.comcast.net) joined #forth 20:11:34 --- quit: MrMobius (Ping timeout: 272 seconds) 20:11:35 --- nick: [1]MrMobius -> MrMobius 20:26:09 --- quit: pierpal (Quit: Poof) 20:26:27 --- join: pierpal (~pierpal@host53-189-dynamic.17-79-r.retail.telecomitalia.it) joined #forth 20:31:20 --- join: proteusguy (~proteusgu@mx-ll-14.207.4-86.dynamic.3bb.co.th) joined #forth 20:31:27 --- mode: ChanServ set +v proteusguy 20:43:02 --- join: gravicappa (~gravicapp@h109-187-37-22.dyn.bashtel.ru) joined #forth 20:57:11 --- quit: cratuki (Read error: Connection reset by peer) 21:16:50 --- join: darithorn (~darithorn@75.174.229.103) joined #forth 21:51:53 --- quit: darithorn (Quit: Leaving) 22:07:30 --- quit: proteusguy (Ping timeout: 245 seconds) 22:39:03 --- join: proteusguy (~proteusgu@mx-ll-14.207.4-86.dynamic.3bb.co.th) joined #forth 22:39:03 --- mode: ChanServ set +v proteusguy 23:00:15 is it possible to create a MARKER that can be executed any number of times ? (so after it's 1st execution it doesn't forget itself) 23:05:10 that's sorta' it's reason for existing 23:11:44 marker a1 a1 a1 \ the last one gives "undefined word" 23:20:06 --- join: rdrop-exit (~markwilli@112.201.168.172) joined #forth 23:27:58 PoppaVic: that's what I've also thought but how to fix this marker a1 a1 a1 so that the 3rd call to a1 doesn't complain it forgot what this word is ? 23:28:39 iirc, Marker forgets itself deliberately. So you can reload the screens/file that mark itself 23:30:28 ok got it 23:39:49 --- quit: dys (Ping timeout: 240 seconds) 23:42:29 I came across this article via HN, reminds me a lot about Forth. http://www.textfiles.com/100/taoprogram.pro 23:43:48 "There once was a master programmer who wrote unstructured programs. A novice programmer, seeking to imitate him, also began to write unstructured programs. When the novice asked the master to evaluate his progress, the master criticized him for writing unstructured programs, saying "What is appropriate for the master is not appropriate for the novice. You must understand Tao before transcending structure." 23:44:00 " 23:46:37 * siraben sent a long message: < https://matrix.org/_matrix/media/v1/download/matrix.org/UhNrdWbKgodiwjJPyqBdnRRQ > 23:48:37 --- join: [1]MrMobius (~default@c-73-134-82-217.hsd1.va.comcast.net) joined #forth 23:52:05 --- quit: MrMobius (Ping timeout: 245 seconds) 23:52:05 --- nick: [1]MrMobius -> MrMobius 23:59:59 --- log: ended forth/19.01.28