Episode: 4338 Title: HPR4338: 328eforth Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr4338/hpr4338.mp3 Transcribed: 2025-10-25 23:18:23 --- This is Hacker Public Radio Episode 4338 for Wednesday the 19th of March 2025. Today's show is entitled, 328 F-4th. It is hosted by Brian in Ohio and is about 14 minutes long. It carries a clean flag. The summary is a review of the book, Arduino and F-4th. Hello, Hacker Public Radio, Brian in Ohio here. I'm out from my rock. I have recorded another show, HPR. I'm continuing a discussion about F-4th on microcontrollers. This time a review of a book called the Arduino controlled by E-4th, by Dr. Chen Hansen-Ting and was published in 2018. The Dr. Ting was a chemist-turned-engineer. He earned a PhD in chemistry at the University of Chicago in 1965 and he taught chemistry in Taiwan until 1975. He became a firmware engineer until his retirement in 2000. He was a fourth advocate for more than 50 years, especially a fourth called E-4th that had been ported to many devices. I think he and another guy developed it initially for the maybe the 80-51 or something like that. Anyway, that being not so important, it was ported. This E-4th was ported to the Atmell, Atmega-328, well, now it's the microchip, microchip, Atmega-328, which is found on the Arduino Uno board. This book is available, typical, you can buy it at Amazon or wherever you buy books. You can download PDF versions of it in different various stages of readability and enjoy readability, but they're out there. There's some, actually, the source code for E-328, E-4th sometimes has the whole gububudal bundled. The book, the source code, the examples, lessons, etc., everything all at once stopped shopping, as they say. I originally touched this book on an earlier HPR when I talked about choosing fourths and I'll probably give a little more detail about why I rejected it initially, and now I'll talk about why I'm coming back to it. But first, let's talk about the book. I was searching for books that were about putting fourth on Arduino Uno boards. There's, so I first found it looking for books on putting fourth on an Arduino board, and it was this fourth E-4th, 328 E-4th initially, it really interest me because it was easy to assemble. You could assemble it using Avra. Avra is a GNU port of the Atmega-Assembler. It's still out there, it's had some development in the last couple of years, it seems to be work just fine. It's a GNU port of the Atmega-Assembler, and what was nice about the Avra assembler is that it doesn't, if you try to build an assembly program on a Linux box, you have to use, if you're going to use the Atmega-Assemblers at the Atmega-Assemblers, the only way to run them is to using a line, and at the time, being a Slackware user, running a line required me to go multi-lib, which is where you get 32-bit binaries to run on your 64-bit machine, and it's pretty easy to do, but it's just a hassle, and then updating it takes a little updating your box and keeping it up to date is a little bit harder. That's all actually now down, gone by the wayside, wine runs under a 64-bit Slackware, no 32-bit multi-lib required. That being said, I still would rather use Avra than some Atmega-Assemblers products, necessarily, although I think they're new X, I'm not even sure what it's called, whatever their design studio that they have is pretty amazing, there's a lot of stuff, and that's what Flashforth, the gentleman who develops Flashforth uses that assembler and design studio to really optimize his fourth. For me, this isn't about optimization, it's about learning, so I kind of like the idea of just using a simple assembler, and it doesn't take long to assemble, it ends up as a 5K, a little bit over 5K in size, and then it assembles just fine on a Linux box without using wine, so that's kind of nice. Well, initially, when I played with 328E4, I became frustrated because I could create new words in the dictionary, and if you don't know what that means, then go back and listen to what's worth is all about, I'll give you a quick one-liner. Fourth is an operating system, it's a programming tool, and you build what are functions, but they're called words, because that's what they're called, and you put it into a dictionary to make a problem-oriented language, and so basically, each fourth is that you develop is to solve a particular problem, and you start with some base fourth, and for what I'm talking about here, that's 328E4. The problem with the original, when I first played with 328E4, like I was saying, is that you could build, you could make new words, you could run the lessons and the examples that are in the book, you could do all that stuff, but it wasn't persistent across rebuts. In other words, you would do all this work, and when you respired off the board or reset the board, your work would be gone, and that's frustrating, because what you really wanted to be able to build on a dictionary and develop something, maybe very complex over time, work a little bit at a time, and so that turned me off to the whole 328E4th initially. There also didn't seem to be anybody who talked about this problem, and there was no discussion with solutions, and I think it's just because maybe the AVR 328 people have moved on from at U4th, and that's fine, so in the end, I switched a flashforth, and if you're new to fourth and want to run fourth on Arduino board, I would still highly recommend flash forth, it's robust and it's full-featured, it's a very solid program, it's got a great website, lots of good documentation, and second choice would be AM fourth, which is now also able to be assembled under AVR, but the source file for that thing is just, it is a problem, it's scattered over hundreds and hundreds of files, the idea is that each file is one word that's assembled, but it's super, when you look at all the includes and how the assembler gets all the stuff that it needs to build, it leaves, it makes my head just kind of, it makes my head twist around, and I'm trying to learn more about how the fourth actually works, AM fourth is a no-go for me, so that, so the end of last year, 2024, I thought it would be fun to write my own fourth, I was reading a guy who did it for a, he ported up a version of Jonesforth to some 386 or something like that, doing, using this, and it was not ratfactor.org as his website, and he thought it would be interesting to maybe write my own fourth for an at-mega 328, that's a chip that I tend to use, but after looking into it and thinking about it, I revisited 328E4, and I thought, how about I fix the problems with the E4, so maybe try to figure out why it's not saving words across reboots, why, and is it fixable, is it something that can be fixed, and so I dug out my book, which I bought a physical copy of, which is nice to have, and began reading, and that led me to the idea that maybe an HBR episode giving a short review of the book would be something to do, so the book, the Arduino controlled by E4 book, is basically comes in five, six parts, the first part is Dr. Ting's musings on how he ended up creating 328E4, part two explains installing E4, using at-mell studio 4 on a Windows box, and you can do all that stuff, if you're into Windows, you can still get those old tools from the microchip website, they have a great archive, you can download and install ABR Studio 4, and run it under Winapp or whatever it's called, and do that to your heart's content, I'm not into that, but there's enough information there to be able to figure out how to install it using simple tools like Avra and ABR, dude. The third part of the book begins, so is Dr. Ting exercising the Arduino boards different functions, you are blinking an LED, making a tone, things like that, and it's done interactively, which is the cool part about fourth is that you can play with the device without running into that age-old compile, what is the right compile upload test, you can do it, you can test while you're in the machine and then save things that you want to save and discard things that you want to discard, and that's what makes fourth so cool. Part four explains the 328E4th infotaination and design decisions, which is actually an important section to read, and part five is the full common source code of 328E4th, and this is the best part, it's Dr. Ting's explanation of what's going on in the code, broken down functional sections, it's a gold mine of information, it is really cool because it's more than just comments, it builds on the comments found in the book. The last part of the book is his conclusions and examples on how to learn fourth. Dr. Ting's project here is I think a great free software project, and he doesn't really use, it doesn't seem to be licensed, maybe there isn't license in there, but it's, you know, this isn't a free software, free software, a zealot book, this is a learning tool, this is what free software is all about, it's accessible to anyone who wants to take the time to read the book and dig into the code, it makes assembly language much less of a dark art and for a boating place to be, although I will recommend that you, if you're really going to do this, you probably would want to do at least some basic assembly stuff tutorial on, for the AVR328, there's a couple good books out there and a couple websites, if you're interested in doing that, that would be helpful, but it's not, not completely necessary, it's easy to, with all the commenting and explanations, it's easy to know what's going on in the code. So I highly recommend the book, if nothing else, it's a, it's a good illustration of how, how a open source project could be documented and, and really made accessible to people, but in the end I'll just finish by reading a couple of paragraphs from his books, from his book, it's at the very end, if Dr. King, Dr. King concludes, people using computers are trained to be slaves, you're taught to push certain buttons and you're taught to push certain keys, then you get employed to push buttons and keys to work as slaves. Computers programming languages and operating systems are made complicated to enslave people, computers are not complicated beyond comprehension, programming languages, languages and operating systems do not have to be complicated, if you get a sharp knife, you can be the master of your destination, 328E4th is a sharp knife, go use it, that is the hacker ethos. So the next podcast I'll produce, I'll cover installing E4th on an Arduino board and solving that pesky loss of words between boots problem. So with that, this is Brian and Ohio signing off, reminding everybody that the only mistakes you won't learn from are your own fatal mistakes. Bye bye. You have been listening to Hacker Public Radio, as Hacker Public Radio doesn't work. Today's show was contributed by a HBR listener like yourself. If you ever thought of recording podcast, you click on our contribute link to find out how easy it really is. Hosting for HBR has been kindly provided by an onsthost.com, the internet archive and our sims.net. On this otherwise status, today's show is released on their creative comments, attribution 4.0 International License.