Jump to content

Talk:Intel MCS-48

Page contents not supported in other languages.
From Wikipedia, the free encyclopedia

8048 Oral Panel

[edit]

Interview with 8048 designers. Is the link worthwhile enough to be included in the 8048 page? http://www.computerhistory.org/collections/accession/102658328 I leave the decision to wikipedia maintainers (this note added 2010-01-16) http://archive.computerhistory.org/resources/text/Oral_History/Intel_8048/102658328.05.01.pdf

8048 the 1st µC?

[edit]

Was it really _the_first_ microcontroller? Are the ROM and RAM both on-chip?--Anonymous

Thanks for the highly relevant questions. The 8048 was Intel's first µC but the TMS 1000 is reported to have been the first µC as such. And the ROM was in fact external; this is now corrected in the article. --Wernher 16:15, 5 Apr 2004 (UTC)

EPROM??

[edit]
Arnim, are you sure they had EPROM? I am aware of manufacturers selling EPROM ICs as OTP PROM to save packaging costs, but the datasheet I had didn't mention anything about UV lignt, nor EPROM! Of course they _could_ have made enhanced versions since, but this would require us to make note of this fact, wouldn't it? Like the original i8051 had external ROM, but a (much) later clone named AT89C2051 had Flash. -- BKiL 22:03, 26 Dec 2004 (UTC)

Yes, there is one with EPROM. I took a picture of one a put it on the page. - Bryce

Haven't checked back for quite a while, sorry. Just for completeness, now that Bryce posted the picture: Intel (and others) manufactured the 8749 with EPROM in ceramic packages with UV window. I have several of these 8748/8749 (both Intel and NEC) floating around here. Intel also documented this capability in their data sheet(s). Nevertheless, it is possible that there are variants with OTP EPROM or even "real" PROM. I agree that PROM should be mentioned if we have information about such devices. - Arnim
Finally found a datasheet which mentions an 8648 with "One-Time Factory Programmable EPROM". I had a 8648 for years but never had a clue what it might be. Interesting to see that it has a ceramic package with UV window [1]. Unfortunately, the datasheet does not tell anything more about this one, the above description is all I have.
My understanding is that it was used like an 8048 by the customer but Intel programmed the OTP EPROM before delivery. Why this when there's an 8748? Maybe they intended to stock blank chips and quickly provide 8048-like samples. Fabricated 8048 always contain the ROM mask thus being specific for the customer (in contrast to "general purpose" 8648). - Arnim

Synthesisers

[edit]

Regarding this: "The 8048 was used in the Magnavox Odyssey² video game console, the Korg Trident series,[8] and the Korg Poly-61,[9] Roland Jupiter-4 and Roland ProMars[10] analog synthesizers."

Certainly the Jupiter-4, judging by its service notes, used NEC's μPD8048. Judging by the numbers and specs of the μPD8048, μPD8748, and μPD8035L, they're very likely MCS-48 series clones. (NEC's data sheets don't mention Intel by name, but do mention "compatability with the industry standard 8048".) I haven't checked the others, but it wouldn't surprise me if Japanese companies were pretty routinely using the NEC clones rather than the Intel originals.

ZoeB (talk) 14:52, 9 July 2023 (UTC)[reply]

I also just learned the very famous Roland CR-78 drum machine used the 8048, again the NEC clone (μPD8048C-015). That brought me to this wiki page -- so since the synths are mentioned, I am thinking to add the CR-78 to the list. But likely the cloning then needs to be mentioned, which would require a more extensive edit to the Derived Microcontrollers section.
Ref: [2]https://archive.org/details/JL11392/page/n33/mode/2up Dswtan (talk) 19:14, 15 February 2025 (UTC)[reply]

Would be relevant to add the Datamaster?

[edit]

The IBM PC took many things from its predecessor, the IBM System/23 Datamaster and included it. In fact, the Datamaster keyboard is almost the PC/XT Type 2 keyboard. At the same time, the microcontroller is used in other areas of the computer, such as the FDC card. Every single of these 8048s uses a different IBM P/N depending on the code embedded within.

My question is, since the IBM PC took many of the traits and components of the S/23 and the predecessor was some kind of testing grounds for them, would it be relevant to include references to such computer?

Thank you in advance,

Buran Biggest Fan (talk) 09:48, 13 September 2025 (UTC)[reply]

Sure, I have added a mention. ~Kvng (talk) 14:09, 18 September 2025 (UTC)[reply]

MCS-48 assembly program examples

[edit]

@Rastakins You have edited to add example assembly source code examples to the article, which I have reverted and advised discussion here first. Source code examples add nothing of particular value to the article, which is not a programming guide. I suspect they're more because editors enjoy adding them, not recognising that they are of no use (and of detriment) to the readers who the article is for. Anyone wanting to see MCS-48 source code can easily find plenty with a Google search. (As an aside, both the examples you added were for data processing which is a poor example of what made a bit control orientated microprocessor valuable or noteworthy.) I don't see the benefit of them and they make the article clunky and longer.ToaneeM (talk) 15:40, 17 November 2025 (UTC)[reply]

I find the code examples to be very useful for understanding the various architectures. For example, the way the 6502 or 6800 loops through items is quite different than the 8048's method even though they are from the same era. I have no idea how an IBM System/360 or an Intel 4004 would do the same task. Wish there were examples. My 8048 coding example shows how efficiently 8048 assembly translates to machine code. That's why I included the object code. Examples in Wikipedia should be trivial so that a casual reader with just a little programming background can fully understand the concepts immediately. Code examples on the internet seem to be profoundly non-trivial. A casual reader would probably not know how to form a relevant Google query, anyway. My simple example does not violate WP:NOTGUIDE as is a brief sample of the concept, not a how-to or programming guide. "...examples intended to inform rather than instruct may be appropriate for inclusion in Wikipedia articles." (About your aside: strings of data are often handled in microcontroller applications. For example, any microcontroller that operates a display is obligated to handle strings. The 8048 is not bit-control oriented like the 8051; it always operates on bytes, except F0 and F1.)
Why focus on 8048? Would you propose to remove all programming examples from Wikipedia? Is there any objective Wikipedia guidance prohibiting a programming example or are we now debating your personal preferences? If this is just your personal preference, then please reinstate either of the programming examples or write your own. RastaKins (talk) 17:21, 17 November 2025 (UTC)[reply]
@RastaKins Thanks for your reply and I hope it's part of peaceful, co-operative and constructive discussion. I don't think anyone needs more arguments, nor gets as far as fast with them instead of co-operation. The question on one's personal preferences is at odds with your edit note "You do realize that the entire Wikipedia editing process is intended to a fun indulgence". Actually, it's voluntary work but to achieve something worthwhile, same as open-source programming. I earlier made the point that it's about what's good for the reader, not what's the editor's personal preference or what they like writing. Reader first, always.
I come at it from the angle that articles are to be informative, educational and useful to the reader, in accordance with the guidelines/etc. It's good if it's interesting too but that depends on what the subject allows. It's always simply: will this inclusion make the article better (more informative and/or educational and/or useful).
Here: (a) A program appears to add little. The reader doesn't understand the MCU better for it. (b) It breaks the flow of the article. (c) If someone wants example source (and no reader's ever asked for it in Talk in decades), there's plenty of far better examples on the internet.
I say this having written assembly programs for the MCS-48, MCS-51, Z80, 6502, 6800, 8086, 68000 and PIC professionally, obviously yonks ago. The MCS-48 was my first pro one (Z80 first but at home/school) so my personal view is I'd be glad to see MCS-48 assembly - if it notably improved the article and if the example showed what made the CPU different. Of all the control applications it was used for (inc. PC keyboards and main board), copying memory must be the least thing it was used for (by volume of parts sold) and shows little of it's unique features, it's different approach - the thing that made it different.
I won't be adding an example. I think a shorter, more concise article is a better communication than one with an example program that achieves nothing except take the reader down a blind alley. It's not "the more words, the better". Text has to justify its presence.
So if you're going to add an example, do find one that shows what set the MCS-48 apart, gave it advantages that explain the sales and popularity (sure weren't low cost back then). Serial control using jump-on-bit instructions or something. The 'memcopy' one is pretty rubbish and it got added it to other MCU/MPU articles (Z80, 6502) where it's just as poor, I'd always revert that. (I'm guessing you probably added them.) That memory copy thing emphasises similarities between them - it doesn't show what made each architecture notable, show what earned that MCU/MPU an article here. Thanks for your time.ToaneeM (talk) 19:15, 17 November 2025 (UTC)[reply]
I support restoring the example. I think a dozen lines of code give readers a feel for how the processor operates and is programmed. I find RastaKins'sToaneeM's response unnecessarily stubborn. If the short example needs improvement. let's improve it. The arguments for not including it are not getting traction with me. Articles are better when they're not a wall of prose so adding pictures, diagrams and code snippets are all helpful. The suggestion that readers Google MCS-48 code and find something readily digestible isn't as helpful to readers as we could be and doesn't seem to work. ~Kvng (talk) 14:44, 20 November 2025 (UTC)[reply]
@Kvng "...unnecessarily stubborn. If the short example needs improvement. let's improve it..." Hardly, I said all that in my last paragraph above - you're agreeing with me, saying what I said.ToaneeM (talk) 19:17, 20 November 2025 (UTC)[reply]
Sorry all, I'm not doing a good job of keeping track of just two (now three) participants in this discussion.
ToaneeM gave 3 reasons for removing the example and I don't find any of them compelling
  1. Readers can use Google to find code - Didn't work for me. Not an approach that will improve reader satisfaction
  2. Interferes with the flow - A wall of prose is not a good article. Pictures, diagrams, tables, examples, code, etc. all improve the reader experience.
  3. Adds little - If the reader is interested in the MCS-48, they're likely to be interested in programming it and a few lines of code will help satisfy that interest.
There's a proposal for an improved example but we should not be letting perfect get in the way of good or better. Let's restore the example, it's addition is a clear improvement to the article in my view. If someone wants to improve the example, then do that as a second step. ~Kvng (talk) 19:35, 20 November 2025 (UTC)[reply]
@Kvng On keeping track: sure, that's OK :-) On the "unnecessarily stubborn": quite the opposite. I repeatedly asked Rastakins to leave the article as is until first discussed in Talk. Unfortunately, he wouldn't enter into discussion and instead just shoved the same edit out again and again. It was me that opened discussion here. I don't think following the process can be called stubborn, more reasonable (and very polite from me, see above). Rastakins avoided discussion with me and instead went to someone else (yourself). What I got was not an example of co-operation but of stifled discussion, I'm afraid. Surely Rastakins methods here are something not to see repeated in future.
Replying to your comments:
(1) Worked fine for me and got bigger better examples. Memcopy is a poor example for an I/O control MCU.
(2) Good additions are great for an article but this isn't one (I encouraged finding a better program example, suggested content). Just making it longer with any old stuff is not a virtue.
(3) Readers are pretty unlikely to be programming this very old part, might be reading for its role in the PC etc. But see (2).
Thanks.ToaneeM (talk) 19:54, 20 November 2025 (UTC)[reply]
I support restoring the example. Bigger examples are not better. Very simple examples serve the reader the best. Even though it isn’t flashy, a simple block move can demonstrate the following:
  • The 8008 is crippled by its limited instruction addressing modes and 8-bit math. A block move (any address) takes no less than 17 instructions.
  • The 6800 is terribly burdened by only having one index register. It takes four 16-bit memory accesses per iteration to handle the pointers. Takes a lot of code, too.
  • The 6502 is a great improvement with only two 16-bit memory accesses per iteration to handle the pointers. But it gets clumsy if memory objects are over 256 bytes.
  • The 8080 requires no memory accesses to reload the pointers and it is not limited to 256-byte objects.
  • The PDP-11 and 68000 can do the task in only two instructions.
  • A Z80 can do the same in one instruction.
  • A basic PIC device cannot move a block of memory at all! (To compensate, later devices like PIC18 include several indexing peripherals.)
Anyway, the code does not need to be a block move. It could be any other simple example demonstrating looping, indexing, and maybe ALU operations. I offered two code examples in previous revisions. If either of those are found wanting, I already invited ToaneeM to write a third example. Hoping it is efficient and not too tricky.
Not a personal attack but for the record... ToaneeM is being disingenuous when they say "I repeatedly asked Rastakins to leave the article as is until first discussed in Talk." It reality, it was RastaKins who first invited ToaneeM to talk with "Start a discussion if you think so" in his very first counter-revert. Once ToaneeM started a discussion, RastaKins joined within minutes. Also when ToaneeM reverted and characterized RastaKins original example as "valueless, RAM copy for a control MCU", RastaKins, in good faith, wrote and posted a new, non-RAM copy example. RastaKins (talk) 20:22, 20 November 2025 (UTC)[reply]
@RastaKins Actually, the process is to leave the article in its original state and agree a change before making, not try to agree the change after making it. But all that aside, it would be good to make progress on as much as possible from this situation and one area is the process of co-operative discussion. I started my last comment to you with "Thanks for your reply and I hope it's part of peaceful, co-operative and constructive discussion. I don't think anyone needs more arguments, nor gets as far as fast with them instead of co-operation." It's a matter of fair record that you didn't reply and make that happen, which is a pity you felt you couldn't. You have also written "Not a personal attack" and I really believe you, so let's get somewhere and hopefully reach trusting agreement we're on the same page trying to do the same thing and happy to talk constructively. You gotta admit you're a bit of a hard one to reach out to :-) Or we could continue writing what are frankly descending into one-upmanship replies and each walk away with a new opponent each, but that seems very wasteful and a bit tragic really. I think you're probably very experienced in professional engineering and I think I am. We clearly both come here to do what we hope is productive and valuable to others. Look forward to a reply on that.ToaneeM (talk) 20:55, 20 November 2025 (UTC)[reply]
@RastaKins I introduced assembly code examples for various CPUs (the i8080 being one of the first, I think). The intent is to show what actual programs look like for each processor. The examples are not intended for teaching or providing useful code, but simply to showcase some of the capabilities of the CPUs. The actual example is also not that relevant, as any short sample code will do. — Loadmaster (talk) 21:21, 2 December 2025 (UTC)[reply]
We're trying to get to consensus on whether to include the example. @RastaKins and I are in support and @ToaneeM is in opposition. Though the supporters have a majority, it's not a consensus yet. The next step is typically to post something at WP:COMP to invite other editors to weigh in. Does that sound like a good next step? ~Kvng (talk) 21:18, 20 November 2025 (UTC)[reply]
When I first saw this little mini-war start I thought that the sample code didn't add much to the article. Now that I've had a couple of days to think it through, I actually like 32-bit add code.
  • It's short. Uninterested readers can easily skip it.
  • It's neatly laid out, with good comments and even the hex code to see how the opcodes above it translate for real code.
  • Shows that it is a multi-register machine with multiple index registers. As noted above, single index machines or machines like the 6502 with harsh limitations on the indexing make real code more complex.
  • Shows looping, basic arithmetic and use of flags.
Unfortunately it doesn't show subroutine calling (so many machines use link registers and create stack frames) or interrupt handling (where I spend a lot of time with device drivers). But it's hard to come up with small examples that show everything, so I'm not worried much about this.
Similar short examples in all our CPU articles could be an effective way to demonstrate some major advantages/disadvantages of each CPU. A list of opcodes and addressing modes does't really convey the same thing as seeing them in action in some example code.
For what it's worth, my own list is Z80, PDP-11, IBM 360, 6502, 8086, 8051, 68030, ARM, PIC, Infineon TriCore.  Stepho  talk  23:38, 20 November 2025 (UTC)[reply]
@Stepho-wrs Thanks for the comments. I think any example has to be of what that thing is meant for or was used for. The MCS-48 instruction set is tuned for I/O bit control operations (as is the later MCS-51). By parts volume sold, it was pretty well most used for keyboard scanning and bespoke serial communications. In the late 1980's, I used it for bit control of a board test rig for manufacturing and my then-company used them in paper counting machines. The example in Intel's 1980 '8048 Family Applications Handbook' (intended to tempt punters in) is a dot-matrix printer controller.
So examples should show what the microcontroller was aimed at, show some of those typical instructions it executed. For the MCS-48, that's not multi-byte arithmetic or RAM copying. Keyboard scanning or serial transmission would demonstrate its abilities to a reader.
The microprocessors and microcontrollers in those early days of single-IC parts are all quite different and I think that's best reflected by different examples for each, not all having a go at the same one. You wouldn't show the 68000 bit-banging a serial port as it doesn't really show its other distinct aptitudes.ToaneeM (talk) 14:11, 21 November 2025 (UTC)[reply]
ToaneeM said, "Actually, the process is to leave the article in its original state and agree a change before making, not try to agree the change after making it." This is exactly opposite of how it works. Contributors are urged to WP:BEBOLD and research and write new material to create new notable articles and extend existing ones. There are a set of rules, for sure, but if those rules are being adhered to, articles are expected to evolve and the evolution should not be constrained. Wikipedia is a work in progress WP:WIP and is never completed. Nobody needs to seek consensus to extend an article. Having a code example in a CPU article is something that has been done since at least 2013. More than a dozen CPU articles have code examples. Nearly all the high-level language articles also have code samples. The idea that code samples should be removed is a novel initiative. Status quo does not require consensus. Deviation from that might. We already have a long-standing consensus that example code is desirable. There is even a Category:Articles with example code.
As a fun indulgence, let me mention my first 8049 project: the hard disk controller in the Compaq Portable. I designed the card and wrote the code. [3] For some inscrutable reason there was bad blood between IBM and Western Digital. That's why IBM chose NEC's inferior D765 floppy controller for the PC and Xebec for their Z80-based XT HD controller. Xebec ran a "Xebec Controls IBM" ad in violation of IBM's NDA. It made IBM madder at Xebec than WD so IBM tapped WD for the IBM AT controller, which I designed with an 8049. [4] For these projects, I selected the 8049 for its low cost; its bit manipulation is weak and not that compelling. But the 8049 did manipulate strings in all those designs. RastaKins (talk) 18:07, 21 November 2025 (UTC)[reply]
I used in a flow meter and that application required 32-bit arithmetic. ~Kvng (talk) 22:12, 21 November 2025 (UTC)[reply]