PDA

View Full Version : Single Board Computer



bbcmicro
June 9th, 2006, 04:05 PM
I'm putting this idea forward rather tentatively, I don't want my head bitten off!

I realise that if I ever want to really understand how a computer works, I'll have to learn to use one with limited input, memory and a low level programming language or whatever, something that interfaces directely with the hardware/processor. I am toying with the idea of getting one of those single board tutor computers, based around a 6502 or 8088 (or less common a z80, apparently) with a hex keypad or maybe even switches. Acorn started off with the Acorn System 1, and sinclair arguabley based its success around the mark 14 (was it the 14? can't remember)

I am a complete n00b at this, and I would like to know if there is a specific, relatively cheap and easy to learn system out there i should keep my eyes peeled for. A book I have mentions the Rockwell AIM 65, John Bell Engineering 6502 Controller PCB, and obviously the KIM-1 and SYM-1. Although, I get the impression that the latter two are rare.

What are your thoughts, Ideas?

atari2600a
June 9th, 2006, 04:11 PM
I, too, am a n00b at Assembly/Machine language & would like to learn.

BBCMicro, there's a good Altair 8800 emulator available freely for download, though the graphics suck... (The executables come w/ the source code, so you could change the crappy graphics if you wanted to)

bbcmicro
June 9th, 2006, 04:19 PM
Yeah, all the manuals I read about Assembly are just too daunting. They are made to improve programmes on machines with at least 32Kb of RAM that run BASIC or other higher level languages as main. I thought that If I start small with a few bytes of RAM, then the programmes would be smaller and easier to digest. It's easier to understand a single board computer instead of an apple II or BBC Micro, or at least I have been led to believe

mbbrutman
June 9th, 2006, 04:19 PM
I wouldn't go so hardcore as to get a single board computer. I would use an older machine based on the 6502, Z80, or even 8088. Something like an Apple, C64, Timex Sinclair 1000/ZX81, or a PC compatible is a great platform for learning ASM.

The problem with the single-board machines is that saving and reloading your programs is a weak point. With a full blown PC you can get to the assembler level, but you still have the luxury of an operating system, disk storage, and other utilities.

atari2600a
June 9th, 2006, 04:31 PM
From what I understand Atari 800's are great for programming games in ASM.

Terry Yager
June 9th, 2006, 09:14 PM
If I understand your username correctly, you already have access to an excellent platform for learning Assembly language, either 6502 or 8080/Z80, if you have the Z80 cartridge for your BBC. If you can run CP/M on the beeb, an 8080 assembler is included with the DR distribution. Even without the CP/M tho, the BBC BASIC includes an in-line assembler, so AL programs can be assembled on-the-fly from within a BASIC program. I'd look into that option before spending $100.00 or more on a trainer.

--T

Terry Yager
June 9th, 2006, 09:40 PM
If you do decide to invest in a trainer, I'm certain you won't regret it (sorry, Mike...I hate to disagree with you on this). Of all the tools/learning aids I've picked up over the years, my trainers have proven the most helpful to me. There's nothing like working with the bare silicon to put you in touch with the software as well as the hardware. It's easier for me to visualize what's happening when I can enter an instruction, and recieve immediate feedback in observing the state of the machine, and the effect the instruction has on it.
As for advice on purchasing one, try to get adequate documentation for the system you aquire, they are all but useless without it, unless you are already experienced enough to figger out the important functions & other details.
Once you've decided which CPU you want to learn, find a trainer that uses it. My personal weapon-of-choice is the Intel SDK-85, which uses 8080 instructions. Another popular trainer is the HeathKit ET-3400, for the 6502 enthusiast. If you'd like to practice Z80 programming, the MicroProfessor MPF-series is a good solid choice (and cute as hell besides).
All three of these types come up on eBay frequently, usually in the $75 - 125.00 price range, although once in a while one will sell a lot cheaper.

--T

carlsson
June 10th, 2006, 05:31 AM
But does a trainer teach you more than machine code? I know how to program 6502 assembly, and understand fairly well how the CPU, RAM and everything else works, but I don't have a strong technical feeling and definitely don't understand the electronics behind it all, although I have taken (but not completed) university courses that briefly discussed the subject.

BBCMicro, if your aim is only to learn machine code programming and from there get an idea how the CPU is working, about any old computer is good to start with. I haven't programmed my BBC in machine code yet, but its Basic has built-in assembler, I think. Otherwise, a Commodore 64 is a very good 6502 system, since it is heavily supported, has a decent system ROM and of course the custom chips for video and sound that are relatively easy to use once you figured out the addressing. I don't know which is the ultimate Z80 system, but perhaps a ZX machine or MSX. CP/M User would perhaps recommend Amstrad or any CP/M based computer, but I don't know which CP/M compatible computes have docs and support on CP/M or native machine code programming. 68000-based systems may be good too, since they have a big repertoaire of instructions and registers.

Terry Yager
June 10th, 2006, 08:14 AM
I usually use a logic probe while playing with my SDK, which is quite educational to me. I can enter an instruction, then check the state of certain lines and observe the effect on the hardware.

--T

Chris2005
June 10th, 2006, 08:38 AM
Personally (and we have to realize we're all different, so it's hard to pin down the specific right methodology for each person), I can't see the merit in a trainer. Maybe I have a little more imagination? or ability to visualize what's going on under the hood? Maybe it was my approach to (or desire for) learning some this stuph that made it easier, ahem doable - that being a liking for computer graphics, which essentially is one of the better ways to envision the inner workings of a system and the interaction between a uP and memory, and other chips, etc.

"But does a trainer teach you more than machine code? I know how to program 6502 assembly, and understand fairly well how the CPU, RAM and everything else works, but I don't have a strong technical feeling and definitely don't understand the electronics behind it all, although I have taken (but not completed) university courses that briefly discussed the subject."

There's different levels at which we can learn. We can build a chip (well not we) from raw silicon and such. Then we can be a board designer. Then we could be a firmware programmer. Then we can be an application programmer. To some degree, though in many case very small, each "level" doesn't have much to do with the others. To do assembly language, you don't need to know how the innards of the chips work. Neither do you have to understand the electronics. It wouldn't hurt, and usually the best understanding comes by doing "it". And in 6 months, if you don't keep doing it, you're going to forget it all anyway...

"BBCMicro, if your aim is only to learn machine code programming and from there get an idea how the CPU is working, about any old computer is good to start with. I haven't programmed my BBC in machine code yet, but its Basic has built-in assembler, I think. Otherwise, a Commodore 64 is a very good 6502 system,"

I agree. The Commie is a great tool for learning assembly. Loads of resources. Machine language monitors on cartridge and whatnot. Good choice.

"since it is heavily supported, has a decent system ROM and of course the custom chips for video and sound that are relatively easy to use once you figured out the addressing."

Yup. Hardware sprites make game programming alot easier. Keep in mind we're talking about primitive stuph. The C64's graphics system, although with certain conveniences, is a little quirky. Make that extra quirky.

"I don't know which is the ultimate Z80 system, but perhaps a ZX machine or MSX."

There was really only one MSX puter sold over here, perhaps a few more in Canada? Not, drifting off topic, if I were across the pond, I would break my back trying to find some of this stuph, posting ads, internet or otherwise. That's human nature - the things that are not easy to come by seem the most (or at least up there) tantalizing. There's a few of those things I want to have. I already have the Yamaha CX5 thing or whatever it's called, but haven't had the time to play with it. Might actually work.

IMHO, the PC is one of the best platforms to learn assembly, and the most applicable to todays environment. I'm working on a tutorial for just that - assembly language on the IBM PC and it's cousins. It's taking a little extra time...
I like the fact that people are asking these questions. And if I can recommend a ready tool for learning this topic - the undisputed ONLY way (of the ways I've looked at) to learn it - IBM PC Assembler Language and Programming, FOIST edition, by Peter Abel. You could probably get it for under $2 on Amazon. You got to start somewhere, and it's reasonably priced. If you get stuck, let me know. I'm more then willing to coach people on the basics of this topic (and lol I really only know the basics, but that's usually the hardest part). And I wrote the review you'll see there.
Sorry for the long winded reply.

carlsson
June 10th, 2006, 09:26 AM
I'm sure there are other video chips of the early/mid 80-ties that are a lot more quirky to access directly from machine code than the VIC-II. Of course, if the goal is to learn machine code in general, you barely need more than a text mode to start with.

X86 assembler.. well, I never tried it beyond a few MOV and INT many years ago. As you say, if there is a great tutorial and other forms of helpful support, it doesn't matter so much which type of computer or trainer system you work in. Most of them consist of the same elements, terminology and philosophy.

A few years ago I downloaded a tutorial for 1802 machine code: A Short Course in Programming, (c) 1980 Tom Pittman:

Chapter 1 - What Is A Computer?
(this is a course in machine code.. one would hope the reader even back then had an idea what is a computer)

plus a cross assembler and a Studio 2 emulator, my goal was to learn this CPU and perhaps make my own games (although I don't own the system in question). I managed to write a very simplistic program, but I didn't pursue it any more, although the docs were quite sufficient.

bbcmicro
June 10th, 2006, 01:57 PM
I suppose I could do it on my BBC, Commodore, or Spectrum, purely for the support reason, but I would also just like a single board puter for my collection. I'm trying to broaden my horizons with more challenging hardware. An argument along the same vien, but moving the technology up a notch, why learn BASIC on a Commodore, Spectrum, BBC etc. etc. when there are emulators knocking about or even commercial products still availiable for your high tech 286/386/486/pentium onwards? many are freeware, so what is the point of programming on a BBC? that little bug we have come to know as nostalgia. I bought my BBC for nostalgia! The first computer I ever used in primary school. If my argument sounds aggressive, I apologise. It's just a point.

BTW I'm listening to Einstein on the Beach, I just needed to tell someone how great it is! my new favourite, 'part from maybe the undefeatable B52's!

dongfeng
June 10th, 2006, 03:57 PM
When I was at University, I did several works around an 8051/8052 microprocessor board, which we had to build. You connected it to a serial port of your computer, and you could download programs in it via telnet. Very interesting to do! I had to build some add-on boards for it.

I still have it, but something in it had broken and it no longer works. One of these days I'll dig it out and try to get it working again.

They are a really good introduction to these things, and really enjoyable too :)

carlsson
June 11th, 2006, 02:47 PM
We had 68K boards connected via serial ports to computer and terminal.

Terry Yager
June 11th, 2006, 03:13 PM
The trainer works well for me because of my learning style which is different than the mainstream. (I've been told that it's Learning Disorder, but I always argue that it's a Teaching Disorder when the teacher is unable to teach a person who is capable of learning). I'm a 'hands-on' learner, and I need something concrete to relate to in order to understand abstract concepts like programming. Sure, I can memorize an instruction set, but I won't really understand what the instructions are doing at the hardware level unless I see it with my own eyes.

--T

Chris2005
June 12th, 2006, 09:17 AM
"When I was at University, I did several works around an 8051/8052 microprocessor board, which we had to build. You connected it to a serial port of your computer, and you could download programs in it via telnet. Very interesting to do!"

My earliest experience at networking computers (except going onto a bbs with a modem) was transferring some files between a HP Vectra 386 tower (loved that piece of crap!) and a Fat Mac (512k). The cable I found at a Salvation Army in LawnGuylind while I still lived there *snifful*. It was actually intended to go between a mac and it's printer IIRC, but read somewhere it was the right stuph to do a Mac-PC transfer. Well, hooked 'em up, fired up telecommunications software on both, set the speed to 19,200 baud (criminal in those days). It was exhilirating to say the least. I didn't know much about Macs at that point (still don't) and I have to admit I felt pretty durn accomplished at achieving that little feat!

Chris2005
June 12th, 2006, 09:25 AM
>"The trainer works well for me because of my learning style which is >different than the mainstream. (I've been told that it's Learning Disorder, >but I always argue that it's a Teaching Disorder when the teacher is unable >to teach a person who is capable of learning)."

It might be simply that you're too aggressive to just sit there and listen to some fool hour after hour lol. I love taking classes now more then ever, and I have alot of respect for the teaching profession, but the reality is some people learn way better by plopping a book in front of them, and letting them work out most of the kinks. Of course all of us get stumped here and there.

>I'm a 'hands-on' learner, and I need something concrete to relate to in order >to understand abstract concepts like programming. Sure, I can memorize an >instruction set, but I won't really understand what the instructions are >doing at the hardware level unless I see it with my own eyes.

My earliest experiences with assembler (and even BASIC way back in high school) were awful. Yet some guys took right to it. Again, when I became interested in graphics, which intrigued me to no end, I started probing and asking questions. Wanting to know how that worked provided (I guess) the visualization impetus (?) that helped me work it all through. And since all of that makes absolutely no sense, I'm going to shut up now.

Chris2005
June 12th, 2006, 09:33 AM
I've been busy, but some time ago, maybe not here, I said I wanted to build the RE Robot Board Brain that appeared in Radio Electronics about 20 years ago. It's based on the 80188, and though it may not be full blown IBM PC, it should run some stuph. It's a big job, but the circuit artwork is there, and I have been successful obtaining some of the rom images for it. If anyone's interested in that, I could try to kick it into high gear. No keypad thingee or anything...not even sure if there was a keyboard connector thingee! Since it was essentially an embedded computer thingee, you'd have to run software from a disk, or make an application rom, and I also believe as an option there was some sort of battery backed static ram for ancillary storage (and in fact, the thing didn't even use dynamic ram at all for it's main memory).

Terry Yager
June 12th, 2006, 12:51 PM
It might be simply that you're too aggressive to just sit there and listen to some fool hour after hour lol.

Well, there is that too.


I have alot of respect for the teaching profession

As do I, for the greater part. They do a pretty good job of teaching to the mainstream, but unfortunately, those who are on the fringes are too often written off as 'acceptable loss' rather than expending the extra time & effort necessary to teach to those learning styles.

--T