I started programming in 1977/78 in CBM/PET Basic on a Commodore PET 2001 with cassette tape drive and 32k upgrade. I loved those days. My parents didn't understand what the deal was with the costly computer I saved up for at age 13, and why I thought it was so important. It also required many late hours on my part on school nights. I moved on to assembler and C and many other languages over the years. I had a renaissance for the low-level and small thanks to you. Oscar, I worked through your, "Programming Boot Sector Games" with much joy. Your books and writing have brought back some of that nostalgia and fun for me, so thank you for that, and keep it going! It's also resharpened some dead areas and gaps I have sustained from the multiple abstraction layers of today's modern software world.
This is so wonderful. I hope I can get your Transputer emulator running to try it. I wish I'd spent my teen years doing something so awesome.
One minor grammar thing: "didn't worked" should be "didn't work", because "do" in English as an auxiliary verb always takes the root form of the verb, just as "will", "may", and "can" do. Similarly "don't exists" should be "doesn't exist".
Thanks for the suggestions! I've updated the article.
I'm delighted to have been of some service.
I'm a native English speaker and the article reads very naturally. I've been learning Spanish over the last two plus years, and I'm jealous of how regular and consistent Spanish is compared to English.
I don't know as much about language as you do, but hear me out. You can pretty much sound everything out. The irregular verbs aren't that bad; they're limited to THE highest frequency verbs that you'd expect, e.g., be, go, have, see, say, do, give, etc., and they're all irregular in fairly unsurprising ways, except for caber and andar. After about 20 irregular preterite verbs, there's three irregular imperfect verbs, and five irregular subjunctive verbs. Future and conditional tenses follow a similar pattern, and have about 20 irregulars between them. Compared to French and English, which borrows Germanic AND Latin patterns, that's NOT BAD.
One more point: my kid is learning to read, and explaining words like "read", "read", "red", "lead", "lead", "led", "cough", "bough", "bow", "bow", "cow", "tow", "toe", etc., gets very old very quickly.
I dunno, it's not that bad. If you focus on learning the subjunctive through a set of rules, then it becomes very intimidating. If you focus on the fact that you use it to discuss wishes, desires, and opinions, then it's a lot simpler. The command form "uses" subjunctive patterns, because you're expressing a very strong desire that someone f-ing does something right now. If you say, "hey do you want me to go to the store later?" then "go to the store later" is in the subjunctive because I'm clarifying what another person wishes to be done. Describing that in a textbook is hard, but seeing it in the wild isn't that bad because you hear the command form all the time.
I realized just this month I miss the days of being able to crash my computer completely with a typo. Such a weird feeling. I was debugging some pcie passthrough issues this week and the feeling that the computer could go dark whenever I started the VM was fantastic. It took sooooo much time, and I loved it. Of course, I hated it at the same time. But I got the same feeling as when I was writing ring0 code at 14.
This text makes me relive it!
One of my favorite pastimes on my TRS-80 and TRS-80 color computer was to type in a simple basic program that would poke random values into random memory addresses and see how long it would take to crash or do something else.
Sometimes the value would wind up in the basic program itself and it would stop. Mostly it just locked up and I had to hit the power button and try again.
Ha! I did that with the first machine I worked with. A TRS-80 Model III.
Not only was finding interesting memory locations fun, it generated interesting ideas for program features.
I found the address for the line length constant 64, used by the screen scrolling loop. I think the screen was 16 lines x 64 characters. By setting the scroll width to less than 64 I could protect the right side of the screen from scrolling.
So my first games had an area on the right for a non-scrolling title, author attribution, and game state info. It seemed to be a unique feature - I didn't come across any other programs that did that.
Some of my first programs were text adventures. Looking back, I should have put a short room description and usable object list on the right, updating in response to actions. That would have been a significant improvement over having to type "look" over and over, as was typical for those games.
Crazy times: 64x16x1 byte = a 1,024 bytes screen. Total memory was only 16k -> Today that is just a 64x64 rgba (4 x 8-bit channel) icon. But we always found a way to create our programs. I had a 4k RAM TRS-80 handheld and was able to create a tiny version of Zork on that, with a few starting and iconic rooms.
Pretty sure I broke a VIC-20 or two doing something like this.
The HCF instruction is a myth... :-)
Get yourself a retro computer and you can appreciate all that joy with renewed vigour! :)
I regularly return to my old 80's 8-bit machine (Oric Atmos, FOREVER!) just so that I can remind myself how great we've got it in this day and age of near-infinite memory, the network-is-the-computer, and endless pixels for days. Nothing sharpens the mind stronger than a misplaced RTS or a failure to budget for room on the stack ..
All that and he has the name Oscar Toledo. I am pretty sure he’s going to be the subject of a Wes Anderson movie within five years.
Why, did Wes Anderson make a movie about his father?
If not, somebody definitely should.
If the author is still reading: did you enjoy programming for "oddball" systems for the time (like the transputer) more than x86 or would you say the fun comes more from enforcing strict limitations (like fitting in a boot sector) more than system uniqueness?
I didn't know it was "oddball". I had brochures, official Inmos datasheets, and reference books about it, along magazines articles citing it as the "faster processor in the world". I believed it was pretty popular until Internet put me down in Earth, and I discovered the transputer was pretty much dead since 1994.
I was already proficient in Z80 and 16-bit x86, so learning another instruction set was pretty welcome. The fun came from developing things for the first time and discovering how to actually do things, a 32-bit operating system, a K&R C compiler, and the assorted utilities.
Enforcing limitations was inspired by the IOCCC, and later by my boot sector programs. The type of things you do after work, just to test yourself and have some fun.
Play his engine here in 3D: http://chess.hulha.net/
Wow I suck at chess.
Submitted title was "Released my full transputer OS, K&R C compiler and utilities (1996)". We've changed that to the title on the page.
(Actually we sometimes make exceptions when the author is the submitter, and I'd be happy to do that here, but the original title is pretty damn cool and will probably attract more readers!)
Wow! Thank you!
Thank you. A ton of work was done, in typing and debugging as well as creating. While some of us were cutting out teeth on nix clones... You made an OS. This is amazing* worthy of praise from Michael Swaine.
Thanks! I love the "Fire in the Valley" book of Michael Swaine. I've read it so many times and always find it very inspiring.
Michael Swaine dreams of being able to do what Oscar Toledo G. can.
That's hilarious
Amazing!
> CD path, creates a directory.
Oh, that will mess with Linux users’ muscle memory, haha.
>It was 1992 when the 32-bit transputer board add-on was built by my father.
It were great times. Like aviation in 192x-193x.
This is amazing. Nice job, I'm going to have to check this out sometime.
Back around 1985 I was 15 years old and very interested in transputer processors, so much that I called up SGS Thompson, as I wanted to get the datasheets for the chip. The guy at the company was so surprised to be getting a call from a 15 year old. He didn't send me the technical info I was seeking but he did send me some brochures. That's as close as I got to a transputer :(
I daydreamed about transputers and how they could be the future of computing, while I was hacking way on assembly language on my Commodore 64. I'd draw all kinds of network topologies between transputer chips in my high school english class. I had dreams of a system where adding more computing power meant just adding some more transputer chips. In my ideas, connecting a printer would also add more computing power, because the printer would also have a transputer chip in it to control print functions, but when it wasn't printing the rest of "the system" could use the CPU. Of course none of that came to pass, but it was great to daydream about the possibilities.
These brochures were amazing. Just like video games, the cover promised a lot!
Lots of hints of Dutch grammar in here:
> if you are using macOS you'll be able to edit easily the files
I find it charming though, to be honest :)
The author is a native Spanish speaker, so that would be unexpected.
I think it maybe points to shared features of European languages that English doesn't follow.
> The author is a native Spanish speaker, so that would be unexpected.
Huh, apologies. I have a Dutch friend who has similar quirks in their English, and the article mentions Dutch by name (in "A Dutch operating system"), so I assumed the author was Dutch or that that quirk came from Dutch influence.
For what it's worth, Dutch is not the only language that does this, I'm pretty sure German does as well, and a bunch more. So you may be correct.
[dead]
CD-ROMs and only 128k of RAM? Sorry, that doesn't pass the smell test. Once CD-ROMs were available, 2-digit megabytes of RAM were standard (and affordable) for home PCs.
It is something you can download and test, and it includes the source code for the emulator, the operating system, the C compiler, and everything else.
Just provide the emulator with an ISO CD image, and once it boots up, type DIR D: this single operation requires just about 28 kb of transputer RAM memory for the operating system, the command-line processor, and the buffers.
There's a file browser embedded in the text editor, so you can navigate using the arrows keys and choosing text files to read.
In fact, we need very little info to read CD-ROM directories. A directory search only requires a 2 kb buffer and some variables to keep track, read until you find the first part of the path, read that block, and repeat recursively until you find the desired file.
Reading a file from the CD-ROM can also be done just keeping a 2 kb. buffer and some position variables. My transputer operating system is inefficient in this because it reads the CD-ROM discs in terms of 512-byte sectors, cached by the host system.
When something doesn't match your expectations you (and others reading along) can often learn a lot more if you start with the assumption you had missing information rather than the assumption it's just incorrect. Even in cases where the story really does have an error by asking about it instead of asserting it you are more likely to hear something additional you didn't know before.
When somebody questions a description that by the face of it violates general sanity checks then you (and others reading along) can often contribute more to the discussion by providing the context in which it makes sense, rather than berating the commenter for being critical and not just buying into any claim posted on the internet.
I'm not recommended you buy every claim made on the internet, just inviting you to open with curious discussion about them! I need a good reminder of that myself every once in a while.
If the other commenters left additional discussions on the table I didn't consider let's chat about them. You've also got the author themselves as the poster and in the comments so they may be able to shed more light than I ever could on that side though. It looks like they've since left a comment about the technical approach in the source.
Bold. In a different timeline they could have been the nvidia.
Absolutely: https://www.transputer.net/tn/46/tn46.html
Too bad the UK gov were so shortsighted, or that Atari, instead of making the ATW (https://en.wikipedia.org/wiki/Atari_Transputer_Workstation)
should have simply used a T212 in the ST blitter socket as a coprocessor. That way people could have slowly gotten familiar with the arch :|
People are building new hardware to run transputers though: https://forums.atariage.com/topic/369254-pre-annoucement-atw... so maybe this amazing code can be resurrected on real hardware!
Edit: Found it. This is the paper on 3d parallel transforms: https://repository.arizona.edu/bitstream/handle/10150/611934...
Later transputers also had DSP instructions built-in.
Later model STs had an expansion connector on the PCB, it wouldn't have needed to be instead of the blitter.
The modern descendant of this stuff (intersecting group of people and ideas) is at https://www.xmos.com/
The target is the embedded space now, though.
“Parallel implementation of backpropagation neural networks on a heterogeneous array of transputers”
I like how it isn't laced with superlatives too. Unlike today's papers that sound like a (well educated) used car salesman.
CD-ROMs were pretty widespread in 1990-91 before RAM prices fell, I had a CD-ROM drive in a 386SX with 1MB RAM.
Sure. Not common, but possible. Still 8x as much as what I responded to, and thereby even as an uncommon case an order of magnitude more. Further contributing to my point.
An Apple IIc with an Apple II SCSI interface card will happily utilise the 1989 AppleCD SC. Apple IIgs maxed out at 8mb RAM or so; with only 128kb out of the box for the IIc for example.
CD-ROMs were outselling all other audio formats in the United States by 1991 for context.
The standard home PC in rural Mexico at the time was a mechanical typewriter—if you were lucky. Oscar Toledo E. designed and built one from electronic components, such as the Zilog Z280 CPU mentioned in the article. As I understand it, he and his son Oscar Toledo G. wrote the operating system for it in assembly.
CD-ROM block sizes were 2048 bytes (2k), so its not entirely unreasonable to design what we now consider low-memory devices around the technology, nor is it a requirement that huge-memory systems be tied to CD-ROM drives...
128k is enough for a lot of things.
CD-ROMs were available long before the mid-90s and even 8086-class machines could be equipped with them. They were just very expensive, and there wasn't a consumer market for them until the "multimedia" craze hit which required a 386 or 486 with at least 4 MiB of RAM (8 or more was better). But public libraries, for instance, had InfoTrac machines as early as the late 80s, which were XT- or AT-class machines that pulled magazine data off a CD-ROM catalog.
That all may be the case. But these two arguments are working against each other.
One is to work on a super low spec machine because things were really expensive and the tech scrap in Mexico at the time just didn't have anything better. Fine, believable.
The other is that CD-ROM drives were available much earlier than the general public believes, just that they were really expensive. Fine, also believable.
But it's much harder to believe that both are true for the same person at the same time and place. Either they couldn't afford the CR-ROM drive or they could afford more RAM. Moving forward on the time axis strengthens one argument (CD-ROM drive availability since those got cheaper over time) at the expense of weakening the other.
Pretty sure the ZX Spectrum (also 128k) had some kind of CDROM adaptor, it worked via the joystick port IIRC.
A quick google didn’t tell me anything so maybe I imagined it.
I think you did imagine it, yes.
The Spectrum did not have 128kB until near the end of its life. It started out with a choice of 16kB or 48kB and that was all you got until 1986.
It also didn't have a joystick port. Nor did it have floppy disks (although 3rd party interfaces existed). Amstrad added joystick ports when it bought the product line and brand from Sinclair Research, soon after Sinclair launched the Spectrum 128, based on a Spanish model.
https://www.computinghistory.org.uk/det/57231/Amstrad-Buys-S...
Yeah, it was definitely in the Amstrad era, not the rubber keyboard. Spectrum +2 / +3 had 128k, and joystick ports. The +3 had a disk drive.
I may still have imagined it.
:-o
Wow! I defer.
A CD not a CD-ROM, but you're right.
Thanks for sharing! Mine was a pretty similar experience in the eighties, because you could learn so much just by reading books and doing experiments. Recently, I got three Commodore 64 (the descendants of the PET) and I just want to type some BASIC games and start learning. I'm very humbled by the experience of writing "Programming Boot Sector Games", because like you, many people have told me about having a nice experience reading and learning with it, and I'm glad the effort was worth it.
I also bought a Vic-20 and later an Amiga 1000. Typing in programs from computer magazines. That's another thing I did working through your book rather than downloading the code. You suggest it in the introduction, and I second that! The only way to embed it into your muscles and brain. I am currently teaching my youngest chess (I'm no great player), and reviewing your code has also been enlightening. Keep it up!