00:00:00 --- log: started forth/17.02.04 00:29:54 --- join: John[Lisbeth] (~user@173-160-167-234-Washington.hfc.comcastbusiness.net) joined #forth 00:37:21 --- join: meff` (~meff@c-73-92-200-55.hsd1.ca.comcast.net) joined #forth 00:41:57 --- quit: John[Lisbeth] (Ping timeout: 276 seconds) 01:30:44 --- quit: dys (Ping timeout: 255 seconds) 01:39:31 --- join: dys (~dys@ip-109-40-0-171.web.vodafone.de) joined #forth 02:05:55 --- quit: mnemnion_ (Remote host closed the connection) 03:12:29 --- join: GeDaMo (~GeDaMo@212.225.112.221) joined #forth 05:15:27 --- join: proteusguy (~proteus-g@i118-21-151-37.s30.a048.ap.plala.or.jp) joined #forth 05:15:27 --- mode: ChanServ set +v proteusguy 07:06:49 --- join: impomatic (~impomatic@host86-186-214-39.range86-186.btcentralplus.com) joined #forth 07:16:39 --- join: Zarutian (~zarutian@168-110-22-46.fiber.hringdu.is) joined #forth 07:35:39 --- join: vsg1990 (~vsg1990@static-72-88-80-103.bflony.fios.verizon.net) joined #forth 07:53:58 --- quit: josh5tone (Ping timeout: 248 seconds) 08:41:02 --- quit: impomatic (Ping timeout: 240 seconds) 09:12:48 --- quit: true-grue (Read error: Connection reset by peer) 10:14:13 --- join: john_cephalopoda (~john@unaffiliated/john-minetest/x-5335115) joined #forth 10:14:15 Hey. 10:17:54 When I do ": FORGET 1 2 + . ;", I can't forget any dictionary entries any more, including the new one for "forget". Is there a way out of this deadlock? 10:24:07 `WordList's, `marker's? 10:29:14 I mean it more general. Let's assume that some part of the code overwrote all dictionary entries. Is there any way to restore the old state? Or any protected words that can't be overwritten? 10:31:32 --- quit: karswell` (Ping timeout: 240 seconds) 10:33:32 Your example does not overwrite anything. It is just ``Shadowed''. 10:34:17 a solution presents itself doesnt it? (would involve FIND and HERE in some way) 10:35:02 --- join: karswell` (~user@229.226.90.146.dyn.plus.net) joined #forth 10:45:54 --- join: forthshell (4d6d6745@gateway/web/freenode/ip.77.109.103.69) joined #forth 10:46:28 is there a forth shell for linux? i.e. as an alternative to bash,dash,etc... ? 10:48:16 CORDIC: Yes, it's just shadowed. But there is no way to unshadow it because the function for unshadowing is also shadowed. 10:48:24 alternatively is there a forth operating system suitable for desktops/laptops? 10:48:47 forthshell: wouldn't be hard to create one, at least for older machines 10:49:46 gordonjcp: I assume thats an answer for the second question, how old are we talking about? old in which sense? processor architecture like x86, arm,... ? 10:49:52 Zarutian: Those two can also be overwritten. A code fragment could thus overwrite anything. 10:50:44 --- join: gravicappa (~gravicapp@ppp83-237-169-138.pppoe.mtu-net.ru) joined #forth 10:50:48 forthshell: Writing a small OS mainly in forth shouldn't be too difficult. 10:52:36 You could write a small forth parser in assembly and then write the higher-level stuff completely in forth. 10:53:10 john_cephalopoda: if a small OS in forth would not be too difficult for popular architectures like x86, arm etc, I assume they can be found already? 10:53:13 --- join: impomatic (~impomatic@host86-187-161-94.range86-187.btcentralplus.com) joined #forth 10:54:11 would the hardest part be interfacing with firmware to display things to screen, get inputs, etc i.e. what BIOS used to do in the past? 10:55:24 https://sites.google.com/site/forthoperatingsystem/ <- Apparently 10:59:32 Displaying characters on the screen is dead simple. 11:00:22 john_cephalopoda: thanks, I should have been able to find that... 11:00:31 https://bpaste.net/raw/22bd50ef5e2a 11:00:45 now Im also looking for an ARM one to run on recent singleboard computers 11:00:47 This is assembly code to write "READ THIS!" in green letters on the screen. 11:02:01 forthshell: the BIOS is actually on a chip in the machine 11:02:17 forthshell: Actually I am currently trying to write an OS that consists of a forth interpreter and some forth code. 11:02:26 forthshell: you could call it to handle normal character printing, keyboard decoding and stuff 11:02:59 yes, BIOS as I learned it in machine language years ago was accessed through interrupts 11:03:23 but I am unsure how things work nowadays with BIOS-less things like ARM boards 11:03:49 just BIOS-like firmware? do they follow a standard? 11:05:15 ARM does things a bit different from x8 11:05:23 *x86 11:05:42 http://wiki.osdev.org/ARM_Overview 11:05:48 john_cephalopoda: in your bpase link, what is the address B8000 ? is it a special adress? on what architecture? 11:06:19 b8000 is the screen on PCs 11:06:22 forthshell: In x86, this is a fixed address that you can use to write characters to the console. 11:06:55 so this was/is a BIOS convention? 11:07:37 it's baked into the hardware 11:07:55 it's where the RAM contained on the CGA card lives 11:08:03 modern cards emulate it 11:11:07 could it be possible to partially automate translation of GNU linux hardware support written in C to forth? 11:12:54 I suppose you could write a Forth backend to a C compiler 11:13:21 translating gimple to forth? 11:15:14 I don't understand why forth has such a relatively small following? especially in OS design, since it can be simultaneously highlevel and low level... 11:17:44 because for stuff that has enough resources to have a full-blown OS, C is usually a better fit 11:20:24 I understand that forth can lower development time, and c may run somewhat faster, but in the future most users will also be programmers, since programming is becoming a standard skill across disciplines 11:21:11 i.e. no matter what scientific discipline, most people are getting in contact with programming, much like reading and writing in the past was only a minority alphabetized 11:24:24 If users learn to program, it will be with languages where you don't have to care about memory management or pointers or stack underflow, etc. 11:24:34 right, but developing at bare metal level is pretty specialised 11:24:37 GeDaMo: exactly 11:25:09 forthshell: people who aren't programming stuff that actually directly drives GPIO pins will use a much higher-level language like Python 11:25:29 you'd be fucking insane to write something like a window manager in Forth 11:25:35 perhaps 11:25:44 gordonjcp: actually, for that many people are using python on for example a raspberry pi... 11:26:03 reepca: no, they're calling out to existing libraries from Python 11:28:00 ok, I understand that most users (even if most of them are some day programmers) might not care about low-level-ness, ... but with centralized mass surveillance, and cryptocurrencies emerging, people will want to study and verify the bare-metal to userland boundary 11:28:19 Most people don't care 11:28:45 more generally, people will want the bare-metal to userland boundary to have been studied by people they trust. Few actually want to do it themselves. 11:29:49 (of course, that's an assumption I'm making - I don't have data to back it up) 11:29:53 sure, but then those who studied it will prefer studying systems that can be most minimalistically bootstrapped 11:30:19 and they will not like redoing the exercise on every source, compiler, target combination 11:31:49 so when asked what to trust, I imagine someday the majority will respond with a forthlike system 11:32:12 because it was easier to verify? 11:32:35 maybe, maybe not 11:32:58 I suspect most people won't aspire to that level of tinfoil hattery 11:33:48 asking proof or evidence hardly constitutes tinfoil hattery imho 11:35:35 "Reflections on Trusting Trust" https://www.win.tue.nl/~aeb/linux/hh/thompson/trust.html 11:36:19 parts of the tinfoil hattery are simply confirmed in documentation like ARM's TrustZone SW (secure world) bit, which allows the core to be time multiplexed into a user core running the users OS of choice, and a priviliged core running a Trusted Platform 11:37:23 where the TP can simply read, and modify RAM allocated to the user OS, use peripherals etc 11:40:37 --- join: mnemnion (~mnemnion@71.198.73.193) joined #forth 11:57:57 forthshell: I don't think that more users will learn programming. 11:58:37 The systems actually abstract more and more from the low-level things. 11:58:44 Android doesn't even have a console by default. 12:00:12 To get full trust, we first of all need trusted hardware. And trusted hardware doesn't usually exist. 12:01:27 Of course there are some small open-source projects that attempt that, but they lag far behind the state-of-the-art. 12:21:17 I think that a forth OS would be doable. 12:39:12 --- quit: vsg1990 (Quit: Leaving) 12:39:36 --- join: vsg1990 (~vsg1990@static-72-88-80-103.bflony.fios.verizon.net) joined #forth 12:41:50 --- quit: gravicappa (Ping timeout: 240 seconds) 12:42:08 GeDaMo: are you aware of reports that more than 2/3 of human population seems to be unable to learn programming? 12:42:31 GeDaMo: if you are not, now you may learn that such reports exist. 12:42:44 Are you talking about this? https://blog.codinghorror.com/separating-programming-sheep-from-non-programming-goats/ 12:42:46 But I don't have reference handy, so you have to find it yourself. 12:43:07 That report was retracted by the author 12:43:45 http://retractionwatch.com/2014/07/18/the-camel-doesnt-have-two-humps-programming-aptitude-test-canned-for-overzealous-conclusion/ 12:43:58 Maybe. I'm not going to check it for now. 12:44:07 I'll make a note to check it though. 12:44:09 "Bornat has published a retraction, stating that he wrote the article during an antidepressant-driven mania that also earned him a suspension from his university." 12:45:41 Given the general attitude to silence down anything that isn't politically correct, I have to put his words under suspicion too. 12:47:31 If I didn't know how to program, I would be confused by "int" and I'd expect that a=b would not work at all because a is not b. 12:48:33 This is one of the most horrible mistakes of Fortran. 12:50:30 In any case "a=b" thing has nothing to do with reality. 12:50:42 Consider that Algol would win over Fortran. 12:51:22 In that case, it would be "a:=b" or "a<-b" and "=" would be used for comparison only. 12:55:02 Imagine forth would have won over, then it would be a @ b ! and comparisons would look like a @ b @ = 12:56:24 :D 13:06:06 Forth would have never won. 13:20:16 --- quit: neceve (Quit: Konversation terminated!) 13:22:50 Yeah :þ 13:24:13 --- quit: impomatic (Quit: http://corewar.co.uk/bloodlust.htm) 13:24:16 I am currently thinking about how to best approach making a Forth-based OS. 13:26:36 I'd have to write an interpreter in asm, then implement the basic functionality in Forth. I'm not quite sure how several concurrent programs would work out, they would probably need their seperate stacks. 13:28:40 john_cephalopoda: you'd write it the way you'd write any other forth, I guess 13:28:49 write some primitives in assembler, then build it up 13:30:37 It would be interpreted. 13:33:25 you could write a compiler 13:33:34 Yeah. 13:33:56 In theory, I could actually write the whole OS in forth. 13:34:05 essentially all you'd be doing is walking the list and copying the codefield into a word 13:35:12 Compiling forth is simple. Also there are already existing compilers. 13:36:27 But it would also be cool to be able to read and change the source of the OS during runtime. 13:40:46 yes I would also prefer to be able to read and change the source at runtime 13:41:34 but I would want the dictionary to maintain a history of definitions, and possibly access rights for words, so that some users can read and execute words but not rewrite them 13:42:43 That's exactly what I said with my first question in this channel. 13:42:49 And the solution is simple. 13:43:13 Local words. 13:43:40 Every program has an own dictionary with the standard definitions and its own definitions in it. 13:44:16 A program may go crazy and just overwrite all words. But it can't overwrite things in the kernel. 13:44:34 Because the kernel has its own dictionary with the standard definitions and its own definitions. 13:54:25 --- quit: GeDaMo (Remote host closed the connection) 13:55:15 you could use an mmu to map the kernel dictionary into userspace but only as EXEC and READONLY and then have the first defined word in userspace point to the last kernel word header. 13:56:15 that way userspace dictionary can shadow the words it wants to implement diffrently yet share the rest with kernel and other processes 14:13:04 --- join: Keshl (~Purple@24.115.181.94.res-cmts.gld.ptd.net) joined #forth 14:28:38 Or it could just be copied. 14:29:11 Because when it is READONLY, the first definition can never be forgotten. 14:30:54 actually it can. It only involves not linking the first word in the userspace dictionary to the last one in the kernel one. 14:35:49 --- join: impomatic (~impomatic@host86-187-173-20.range86-187.btcentralplus.com) joined #forth 15:27:44 --- join: wa5qjh (~Thunderbi@121.54.90.131) joined #forth 16:11:06 --- join: beretta (~beretta@cpe-184-58-116-76.columbus.res.rr.com) joined #forth 16:24:28 --- quit: proteusguy (Remote host closed the connection) 16:30:42 Zarutian: I'll have to look at the dictionary handling a bit more. 17:00:11 --- part: john_cephalopoda left #forth 17:29:35 --- quit: forthshell (Quit: sleep) 17:55:27 --- quit: impomatic (Ping timeout: 276 seconds) 18:50:58 --- quit: fiddlerwoaroof (Read error: Connection reset by peer) 18:52:00 --- quit: meff` (Ping timeout: 276 seconds) 19:01:00 --- quit: karswell` (Remote host closed the connection) 19:02:05 --- join: karswell` (~user@229.226.90.146.dyn.plus.net) joined #forth 19:04:31 --- join: John[Lisbeth] (~user@2601:601:8f01:a6a0:3873:195:9b44:dcdb) joined #forth 19:04:41 how do you guys deal with words that take more than two arguments 19:05:06 moore says that words like over and things like that are not very useful and that you should design words that take no more than two arguments 19:05:31 but if I am to follow that style then I am having trouble redesigning this word so it takes only two 19:05:56 --- join: skaria (~skaria@host-24-52-9-247.beyondbb.com) joined #forth 19:06:09 and if you are to make functions that do take more than two arguments then there must be a better solution than making words like over and 2over and3over and so forth 19:08:12 this problem comes to me mainly when I have a very long word which adds alot to the stack but then in the middle of the word I happen to need my original arguments again 19:10:34 well actually where it arises is that I have a counter 19:11:06 I guess my real question is how should counters be done in forth 19:23:31 --- join: true-grue (~true-grue@176.14.222.10) joined #forth 19:25:49 counters typically go on the return stack. The problem arises when you need to access multiple counters at once in a random order. 19:32:47 --- quit: wa5qjh (Read error: Connection reset by peer) 19:34:35 --- join: wa5qjh (~Thunderbi@121.54.90.131) joined #forth 19:48:36 well it's just that by the time I need to add to my counter it is already a couple items deep into the stack 20:00:32 --- quit: Zarutian (Quit: Zarutian) 20:19:59 --- join: ACE_Recliner (~ACE_Recli@c-50-165-178-74.hsd1.in.comcast.net) joined #forth 20:35:50 --- quit: John[Lisbeth] (Ping timeout: 255 seconds) 20:38:45 --- join: fiddlerwoaroof (~fiddlerwo@unaffiliated/fiddlerwoaroof) joined #forth 21:02:11 --- quit: skaria (Ping timeout: 240 seconds) 21:11:25 --- join: meff` (~meff@c-24-5-192-223.hsd1.ca.comcast.net) joined #forth 21:26:22 --- quit: wa5qjh (Remote host closed the connection) 22:26:30 --- quit: vsg1990 (Quit: Leaving) 22:33:17 --- quit: reepca (Read error: No route to host) 22:33:29 --- join: reepca (~user@std-001.cune.edu) joined #forth 22:37:57 --- quit: ACE_Recliner (Ping timeout: 252 seconds) 22:38:24 --- join: ACE_Recliner (~ACE_Recli@c-50-165-178-74.hsd1.in.comcast.net) joined #forth 22:45:13 --- join: tahr250951 (~puppy@r74-192-123-99.tyrdcmta01.tylrtx.tl.dh.suddenlink.net) joined #forth 22:47:50 --- nick: tahr250951 -> operator1 22:55:56 i am not defined as "noob"...but in this language i am only beginning...i will seek much more data online. i have thus far developed a "multi-layered menu navigation" type of program using bigforth. this is great i feel amazing of course lol. what i want is... i wanna be able to plug my fridge or coffee maker machine into my pc and make it do my will....whether that be to serve via web or what-have-you.... and tips a 22:55:56 re great! i am puppylinux user and developer for more than a generation now.ive written bootloaders,kernels,drivers,etc...but i want more now tham ever. where do i start really? thank you :) (any tips for how to store permanently a user's input or changing variable value dynamically....or am using crap? is there a better than bigforth? ,) ; much appriciation and many thank to you dear friends sorry for the lengthy in 22:55:57 tro....likely not the best for impressions :) but i spake 23:00:59 hi (*) 23:20:57 --- quit: ACE_Recliner (Ping timeout: 240 seconds) 23:54:26 --- join: neceve (~ncv@84.232.162.68) joined #forth 23:54:26 --- quit: neceve (Changing host) 23:54:26 --- join: neceve (~ncv@unaffiliated/neceve) joined #forth 23:59:59 --- log: ended forth/17.02.04