FAQ (hopefully this addresses some of the main comments/questions): *** You got data bus and address bus backwards! Yes, I did! 🤪 I thought it was only in one part that I put some text, but apparently I messed up earlier too. Sorry! *** LD (C), C is incorrect. No. The way the Z80 works, when you do out (c), XX, it actually sets the IOREQ line, writes the whole BC register on the address bus, and puts XX on the data bus. I know, it should have been called out (BC), XX, right? From my understanding, most Z80 systems only look at the lower 8 bits of the address bus during an IOREQ operation. I'm not sure why. Some kind of semi-standard? Reference implementation? The Amstrad decided to use the TOP 8-bits of the address bus to decide which IO to target. So the bottom 8 are ignored. So loading something on BC and doing out (c), c does put C on the data bus and B on the top half of the address bus. It's one of the Amstrad idioms. I'll keep adding things as they come up.
The 8 bit thing probably comes from the 8080 which only had the IN A,(n) instruction. The INIR/INDR etc opcodes (z80) are like LDIR etc but increment or decrement the B register. They read a block of input data. Another reason for I bit IO addresses. The Amstrad way of doing things makes those instructions unusable on a CPC. The Amstrad firmware keeps BC’ permanently loaded with the gate array address in B and the current video mode and ROM enables in C. It can change ROM enable states just by tweaking the appropriate bit(s) and doing an OUT (C),C wrapped in EXXes which makes calling ROM routines a lot faster than it would otherwise be. One of many clever tricks in the CPC :)
Well, my motherboard supports 64Gb of RAM at this time. Such an upgrade would allow me to have 1088Gb. With this much, I could run Photoshop for an entire day without needing to restart it to clear the memory leak! Really puts things into perspective.
I can do that now with 8Gb in the computer I built 12 years ago. Actually, I could do it for weeks, while at the same time downloading files from newsgroups, listening to music, and browsing the internet with 40 or 50 windows open. I only shut my computer down about once a month to free up the memory. It takes me a half hour just to save all the open browser window URLs so I can revisit them.
@@oliverer3 I had a very fun experience recently with Blender while editing. I had it set to use however much it wants from my 500 gig nvme and while rendering a 12-min video, it decided it needed 460 gigs of virtual ram. It took me three attempts with a corrupted video file and some burned neurons and lost hair follicles on my end to realize it was cucking itself from writing the file. So yeah, a TB of RAM seems par the course. For a piece of free software though, Blender's top-tier!
The fact that the extra memory doesn't get wiped is one of the tricks that was used to ahem, backup software. Ideal in combination with an Instant Replay. Wait for the game to load, break into the process, copy the entire 64Kb to the second 64Kb bank, reset the Amstrad and then copy it back and extract the program. I've used it to extract music from games. :)
Cool. I was always in awe at the cracking groups of the day and literally dreamed about how they did things (especially on the Amiga 😍). I'd love to learn that stuff for myself and become a retro games cracker just to understand it all 😃
Pretty much. The instructions and data are a byte wide (usually - the z80 actually can deal with 16 bit numbers though there's a speed penalty since obviously you have to deal with them eight bits at a time)
This whole "bitness" concept is kind of suspect. For instance, the 68008 (used in the Sinclair QL and many embedded system) had 32-bit registers and instructions, 20/24-bit addresses, a 16-bit internal bus, a 16-bit ALU, and an 8-bit external databus. Some called it 8-bit, others 16-bit, yet others 32-bit. The Z80 had 16-bit registers, addresses and instructions, with an 8-bit databus, and a small 4-bit ALU. But was always called "8-bit". Pretty arbitrary really.
@@herrbonk3635 fwiw the 68008 is basically a cost reduced 68000, which is generally considered to be a 16bit processor. You are not wrong in calling it arbitrary though. "Do the math" as Atari famously claimed in adverts for the Jaguar
@@herrbonk3635 IMO the "bitness" of a computer is how many bits it can process per clock cycle. This is usually the register size, but I suppose some procs might process low bits on one clock and high bits on another or something internally, I don't know enough about CPU specifics to say one way or the other. If the data bus is half the register width however, then it could effectively only handle 8 bits of data per clock realistically so maybe that is why it was called a 8 bit computer.
@@JathraDH Sorry, but that's total recentism, and not how it works generally at all. If it was, the "bitness" would vary among different intructions and the 68008 mentioned above would have a "bitness" of 2.7 (32/12) for its fastest instruction, while the 68000 would be a 4-bit CPU (32/8) for the same instruction... 🙃The 8086 would have a "bitness" of up to 5.3 (16/3), while the 286 would be an 8-bit processor (16/2) and the 386 would be 16-bit (32/2) ... and so on.
Thanks for the CPC love! I still adore my CPCs, and I suspect like most Amstrad users around today, I'm always delighted to see a deep dive into the rather esoteric joys of hardware expansions. I love picking up serial, sound, mouse and speech expansions for it to this day. My favourite hardware expansion that I had was a VIDI video capture card from the folks that made the ROMBO rom expansion box. That was mind-blowing, but I lost mine and I've never seen another. You touched on the CPLD and that's something I would definitely like to learn more about some time..
Atari 8-bitters have been adding 1MB of RAM to their computers for years. A friend used to have an Apple IIc in which he installed 1MB with an upgrade. I helped him get the chips he needed.
Having such massive RAM expansions are cool but only if there's enough software to take advantage of it. I saw a video of a shoot em up for the Atari 8bits that required a memory expansion, it looked pretty cool , very fast.
I did start designing an ATX version of the 6128, but now that I know about this project, I will do what my due diligence to see if it can be baked into my design.
Please do follow the standards. Use mITX form factor a slots spacing. Then it will be possible to use a lot of cool mITX cases and use already made CPC extension cards with 3d printed brackets to be inserted into same way as low profile PCIe cards
Great to have you back. I know you've been setting up your studio and I know this takes time. I've missed your content. You're back and this makes me happy. Nice one Noel.
Great video, I love the way you explain complex topics, like memory mapping, with simple words and diagrams! I considered porting Zeal 8-bit OS to the Amstrad CPC but wasn't sure how the memory was organized, I am happy to see it is also using the 4x16KB virtual pages segmentation, which makes it fully compatible. The first program that comes to my mind that would be able to use a lot of memory (maybe not the whole 1MB) is a C compiler. The compilers I have seen for the Z80 go from parsing to assembly generation in the same pass, which reduces the RAM usage but limits the potential optimizations. With that much RAM, an whole AST can fit in RAM, even if the source file is big, making optimizations possible!
But even with so much RAM I’d recommend not to waste it and combine preprocessor c compiler asm compiler and linker as coroutines. I remember first TurboPascals were blazingly fast, because compiled into RAM - no need to save, just jump to exec. Later versions >=6.0 started to work with files and were in order of magnitude slower! Use the RAM Luke ;)
Yes, the CPC uses 16k banks but what it can patch in where is very limited. You can patch any block into the bank at &4000. There’s also options for the bank at &c000, but beyond that you’re limited to swapping in entire 64k banks in one go. Also video can only use the base 64k.
Great video! I know virtually nothing about the Amstrad line of computers, so this was very educational. It always amazes me how inventive people get when they have very little memory to work with or when they have a system that is very limited in a more general sense. Adding that pressure makes people think more deeply about the choices they make when designing hardware or software for such a platform. One big bonus is, of course, that memory, both DRAM and SRAM are relatively cheap nowadays, especially compared to say, what the costs were in the '80s and '90s. I love SymbOS. I have it running on my MSX2 computer, a Philips NMS-8255, although of course, that system is also expanded with 1MB of memory and more storage than one could even dream of in the '80s. In its current configuration it has more RAM and more storage space than my very first PC had. I think that's pretty awesome.
@@alanclarke4646 I remember paying slightly over £80 to get 4mb of 30-Pin Simms, so I could play GL Quake!! It was not fast, nor cheap realiy but it did allow me to use the 3DFX card in a machine that really wasn't up to the base level spec to take advantage of it ... but ... once I'd seen GLQuake in action, I *had* to have it, come what may!! Not so long after, I did get a 16mb Voodoo Banshee. I know, I know - it wasn't the best in many ways but I much preferred the way it helped 2D acceleration in Windows, without the horrible noise from the passthrough cable at high res (1600x1200 on a 19" CRT) which I convinced myself I needed because I used that machine as a programming workstation as well as a gaming rig. Many fond memories of it also working really well with I-War 2: Edge of Chaos and Wing Commander prophecy, especially after splurging out on a Microsoft Force Feedback sidewinder joystick ... I wish I still had equivalent gear now as I have a digital HD projector and I always wanted the experience of playing a proper space game on such a massive display! I love the immersion of my Oculus Quest 2, but the tunnel vision can be grating and doesn't quite compare to 1080p on a 20 foot wiide screen 😀
Sorry for sounding pedantic, but those are not IDC connectors. Those are (shrouded) pin headers and sockets. IDC stands for insulation displacement connector, and means the kind on connectors that pierce the insulation on e.g. ribbon cables when you install them. The most common IDCs are indeed the pin socket types, but another common type is D-connectors on ribbon cable. Though IDCs don't even always use ribbon cable: you have things like modular connectors and the MTA100 series.
My MSX 8 bit Z80, computer it has 2Mb of bank switching memory, not much use, a massive RAM disk, but, some cartridges use 8k bank switching, the 16k pages can handle those quite nicely
You are so right about a possible huge leap in quality and complexity of CPC software if extra memory was considered as a standard! The Homebrew golden era of the Atari 8bit line is a great example on how some extra memory can push the quality of the software. Of course the good thing with the Atari expansion memory modules is that most of the solutions (internal or PBI) follow the specs of just two main popular "protocols" (Compy and Rambo) guaranteeing the compatibility of almost all expansion "contraptions"...plus the PBI port has its own power supply and zero peripherals to compete for the same port (thus its really practical).
Nice to know that there are cheap opensource expansions for CPC. I've never owned a CPC (Commodore user here) but partially thanks to your videos I can see how underrated it was compared to its true potential. Now I have 3 working pieces (2 464 and one 6128) that are waiting for when I have time for them :) They will probably require belt replacement, though.
I had a 40MB HD for an IBM PC in 1986 at work - HALF HEIGHT!! - and it had the first surface mount components I'd ever seen. The first 1GB drive I saw was in about 1989 for a VAX 8340. They were $25K each and we had 8...think about how much HD space $200K could buy today!!
I did exactly with my CPC6128 what you described in terms of debugging. I rerouted the BIOS to an external ROM where I destroyed the fonts starting at ASCII 240. I put code into there to copy the entire 64K into the expansion RAM. Later I build my own expansion like you showed in the picture using 256K of DRAM and many ROM expansions. The MAXON assembler was the most important one. Since I build the RAM expansion myself I also added a DMA that was able to send a data stream out to a DAC making some real sounds like the AMIGA does. But then I switchted to AMIGA.
Wow, that sounds like some serious hardware hacking! I wish I was able to do stuff like that back in the 80s, but back then I was even afraid to open up the computer! 🤣
@@NoelsRetroLab I had help from the German State Train Company where I had the first internship of my life. A nice guy taught me the basics of LSTTL logic ICs. I started there and went on from that building the first Eurocard. IIRC my 6128 used a 50 pin centronics connector. That was a pain, since it did not fit into the 0.1" matrix board.
If the screen buffer can be relocated to banked ram (like on the C64), then you could use that functionality to play full screen animations really quickly. Edit: looks like you answered the question during the video. Cool!
Unfortunately, due to the way the Gate Array controls memory accesses, Video RAM has to be in the base 64k ☹️, otherwise switching VRAM banks during vertical blanking would be very cool. The Giani Sisters Tribute game uses 32KB from base RAM for the display.
With regards to internal memory expansions, one of the main challenges is that the signal timings in the CPC work when writing to DRAM, but not when writing to SRAM. DRAM samples the data bus when WE transitions low, SRAM does so when WE transitions high. In the CPC the multiplexers have started to change by the time that happens. It’s possible but modify the signals to get it to work but makes the logic more complex. Beyond that you get the challenge of where to patch the expansion into to access the signals it needs - and you’d need to do different boards for each main revision of Amstrad main board. When I looked at doing so I felt like would be simpler to just design a new machine from scratch. Do that and you can also upgrade other areas of the machine such as the ROM.
Interesting about the timings. I didn't think that far, but that could be a challenge. As for fitting it, my naive idea was to fit on 3-4 of the lower 64KB RAM chips and have cables go out to the RAS/CAS of the other chips. But yes, you would definitely need different PCBs for different 464 boards (maybe one will be in common with a 6128)? Alternatively we could plug it in on the Z80 socket directly. Maybe? Lots of possibilities, but I think it may be worth it, and especially, it will definitely be fun 😃
@@NoelsRetroLab When I tried it plugged into the gate array (for signals and data bus) and a signal RAM chip (for address lines IIRC). The downside is that the address is downstream of the address multiplexers. You need to latch the RAS and CAS addresses and then run them through a HAL. It just all gets very ugly. Patching in to the gate array and CPU sockets would be better but they’re not conveniently placed in most motherboard variants. (And my preference is for a single PCB which plugs into the sockets and rehouses the original chips - much nicer than a load of flying wires and soldering). So, yes, it would be lots of fun. I’m just not sure I want to personally devote the time to it :(
I wish other manufacturers realised that the CPC464 had the coolest looking keyboard of all 80s 8bit machines, I love the coloured keys. I had an enormous thing against Amstrad in general (still do!) so never owned one but I always thought it looked like a very cool machine in that sleek black case with that keyboard.
In terms of looks of the keyboard, there's only 1 other computer that I though could even shine a candle to the CPC, and that was the Oric Atmos ... beautiful machine, crap hardware though!! I'd love it someone could make an Atmos inspired case for the Raspberry!
@@rastislavzima That built in Joystick was bananas! In a good way 😀 I remember first seeing it in a computer magazine and lugging the article around all week at school to show anyone who'd listen (and a few who didn't!) how awesome it was! .... Turns out that it looked great but the stick itself was pants! Shame though, If they'd managed to get that machine out a couple of years sooner, I do believe the 8-Bit market in the UK would have gone in a totally different direction. To me, it's almost like how things could have been if the Sharp 68000 had been released and supported world wide! Wish I had a time machine so I could go back and slap some folks upside their heads LOL!
Right?? That's why I liked that RAM test so much since it took several minutes to complete. It's some insane amount of RAM and it was certainly never intended to have that much.
@@NoelsRetroLab but you know if implement fast RAM expansion Amiga way via cpu socket PIStorm, emulated z80 could scan 1mb of fast ram in a blink of an eye ;)
Interesting - I always wondered about the 'extra' 64KB on my CPC 6128 (on which I ran an entire business on using Mini Office II in the 90s!). 16:05 Whoa, that program brought back some memories! My friend got quite annoyed with me when I kept borrowing his mouse to use it...
I love finding videos where the UA-camr makes custom hardware to improve older stuff, like old old stuff. Usually makes me wish that more programs would negotiate a percentage of available resources so they could take advantage of say more ram lol.
I still own my 6128 and I added a ROM board and a 3.5” drive to keep my 3” disks mostly available - they were so expensive! I had always wanted a hard drive for it and I felt that 128k of RAM was enough for me. I did all of my university work on it, text and graphics, as well as relaxing with some pretty good games. Now I have so many computers of different eras and brands, and I’m still creating text and graphics for all my subsequent jobs that I don’t know when I will get back to the Amstrad. Thank you for another great video!
Nice video. We are making a 2MB expension for the Philips P2000T, a Dutch Z80 machine, internally, as it has plenty of room. 2MB is the limit, as the OUT toggle can deliver 256 positions for the upper 8kB of RAM. So you get 2108 kilobytes. Actually back in 1988 someone already made a 2MB expansion for this machine, byt with 256kbit chips (64 of them!): the use was running a BBS over the Viewdata protocol. They needed to upload 5 floppy's with all the user messages and such into the RAM, and they even managed to run it for 5 years without a single power-down. Our modern version has 4x512KB chips and TTL logic. Still it is pretty compact. What is weird though, the C128 does flip the entire RAM. Must have been hard to swap data between the two halves on that machine.
I’m curious when your RAM test finished, it only tested 0x0F banks of 16k ram or 256k total. The screen had enough space for 1024k but it didn’t seem to test it all. Am I missing something?
That screen is designed for 4MB of RAM (yes, it's possible apparently!!!). So each bar was 64KB, not 16KB, which times 0x0F is 1024MB. One of these days I need to get my hands on a 4MB RAM expansion and test it for real.
The comment about the RAM not being reset on a reset also holds true for the 2nd 64K bank in a 6128. I remember one trick for hacking games from tape to disc back in the day was to load the game into the 2nd bank of a 6128 and reset when loaded and just save out the 2nd 64K bank to disc. Figure out the entry address and you've got a disc based version. :) Easier with a multiface, of course!
Noel, you have made me stroll down memory lane. Thank you. I hope my little rant below does not bore you too much. Shortly after the Z80 uP was first released, the company I was working for purchased a 'large' (12" square approximately) SDK PCB (from Zilog I think). To populate the memory, the DRAM chips of the time were 16k BITS and 8 of those gold-plated-pin heroes to make a 16K byte DRAM memory cost around 500 USD. This BEAST with a fancy cassette-tape-drive storage for R&D was set in front of me and I had to make it work. Thankfully, LSI byte-wide SRAM made its appearance a short time later, so that many of the company's wannabe product successfully made it into the market place at a practical price point for large computer-controlled lighting desks. The static RAM with battery backup made the products free of the need for any other type of memory when composing and then repeatedly sequencing through lighting cues every show. The DRAM refresh controller on the Z80 uP WAS used however. My boss at the time who had a propensity for thinking outside the box, asked me to use the phantom Z80 read-refresh cycles of non-existent dram to sequentially export lighting levels directly from SRAM memory to the proprietary analogue serial trundler sent directly to numerous dimmer racks from a single output. IOW, DMA on the cheap. IT WORKED just fine - and still does as far as I know.
Nice. I have similar expericences, albeit starting a little later, early 1980s. But have you seen the internals of the ZX80 and ZX81 designs? I.e regarding "outside the box" usage of the refresh counter and other Z80 traits.
@@herrbonk3635 I have not Sir. I will go on a bit of a tour to see what I can turn up. I did very much appreciate the timely appearance of Hitachi's 64180 device a few years later and designed it into a number of specialized industrial products. I am now retired, but interested in your comments w.r.t. spectrum ZX80/81. I see the schematics are easy to find on the Web, so a bit more touring down memory lane in store for me. Thanks for your reply.
@@jimparr01Utube Thanks! I used the 64180/Z180 too. But it's only the ZX80/81. (Spectrum had other designers and more traditional solutions.) The interesting and challenging aspect of it is that it's almost impossible to understand the ZX80 TTL-schematics without also reading the disassembled machine code, and vice versa. And the ZX81 is even worse, using NMI as well as (non returning!) INT interrupts for picture generation along with the refresh counter and I-register. It took me years to fully understand that thing... It's not beautiful, or even optimal, but still clever. Very british :)
A friend of mine built something similar for the Sinclair ZX Spectrum 48K at the age of 16 back in 1987. As he used the full 8 bits of the output port (220), this would have allowed up to 256x 32KBytes or 8MBytes (including the internal 32KBytes at out 220, 0) of total memory. Including power/battery backup and the ram, if he had tried to do that it would have probably ended up the size of a mini-fridge 😂 but because of the costs back then his ram pack only had 224KBytes (7x 32KBytes) but it was battery backed up. It came in very useful when we were developing software as it could be saved to the expansion memory using the Sinclair Microdrive commands and any time the machine code crashed or got stuck in a loop, the zx could just be reset and then the code could be loaded back from the expansion.
I remember WordStar didn't have enough room in 64K even for it's code... so it would "swap in" chunks of code from overlay files. It'd be great (if I could still remember my 8080 assembly language) to patch it so that it loads all it's overlays into expanded memory and then bank-in it's overlays instead of going out to the floppy all the time.
A Disk copy program on the Sam Coupe with 256 or 512k ram. Completely in basic, first check if 256 kor 512k was available with a Peek-command to determine if you can read 40 tracks or just 20 tracks of the disk, then copy the sectors of those tracks, the only problem was timing, and that was solved with first reading the odd sectors and than the even ones, swap the disc and write the odd and then the even sectors. The Sam Coupe could hold up to 4.5mb, but more likely was 1mb extra and an IDE interface for a harddrive.
Now I want to buy a CPC, just to update it to 1MB... Yes, an internal update would be fun, I'm thinking of an internal memory update for C64 - but that hasn't progressed much beyond initial sketches. Biggest problem is all the different motherboard revisions.
I have about 100 TQFP XC9536XL (4.5 bytes storage) and I have no problems writing the VHDL for these memory expansions. A trick of the trade is to use 3.5999V regulators to increase noise immunity so there are less problems with running a number of additional cards on bus expansion boards. Most CMOS today doesn't draw much current and doesn't cause an unbalanced voltage drop. I also have a Z80 under chip to 40 Pin Dip to 40 pin header adaptor so that I can make RAM expansion internal on my CPC 6128. Note: The TQFP44 has pin 1 close on a corner and the J-lead PLCC 44 pin equivalent has pin one on in the middle of one side. I will be targeting 512kB plus the original 128kB of a CP 6128 which was the original design intention of the CPC 6128.
Back in the day I would always use ram disks for my Amiga 500 with 2 megs external ram and 1 meg internal ram. With games I would load the disks into ram, then there would be no swapping of disks and practically no load times during gameplay. Sounds like this would be an excellent use of the expanded ram for this and other 8bit computers.
I know of at least one project that adds memory internally (1Mb or 4Mb I believe) but these do not use standard I/O ports. The "standard" max memory expansion was meant to be 8*64 including the built in memory so 512k total. It would be totally feasible to upgrade a 6128 to 512k by swapping the memory chips. 4164 and 41256 chips have the same pinouts and most 41256 chips use 8 bits refresh. The A9 address bit is on pin 1 (unused on 4164) so: 1) Remove all memory chips and put sockets 2) Connect pin 1 (A9) of all the memories to one of the free pins of the PAL chip 3) Design a new PAL to implement the 8 banks as 2 things: The bank switching through CAS signal CAS to CAS0 and CAS1 (what the existing PAL does today) Address bit A9 selecting 4 64k "quadrants" in the new bigger memory chips (1 bit for RAS, 1 bit for CAS)
Noel, I love your enthusiasm and way of describing the project and mechanisms involved! Thank you so much for that! I wanted to ask if you've looked at the tech discussed in the "protected mode on the Z80" video you can find on YY? Can't link it because ... YT ... but I'd love to see you do a project based on it! I'm referring to Andy Hu's "The Z80's secret feature discovered after 40 years!" content, which also has an intriguing discussion into the topic! Apart from seeing it work, I'm fascinated to know what one could actually *do* with it 😀
It seems like just yesterday that you started working on the Amstrad diagnostic ROM. When you said 2 years I just about fell out of my chair. It's too bad we didn't have Amstrad in Canada. They seem like fantastic machines. Here it was all Commodore, Apple, Atari, TRS-80 and TI, in that order. I literally never saw any other microcomputer in the '80s. I do not count PCs because they are not what I consider microcomputers, and also they were boring. The fact that they were "boring" was part of the reason they triumphed, but my heart only holds 8 bits at a time. Designing your own memory expansion will be a big project, certainly worthy of several videos. I know you can do it Noel!
Yeah, I want to get more into designing hardware expansions. The first one is probably going to be a simple ROM expansion to run the diagnostics ROM (and maybe a few extra things on the board). So many ideas! :-)
My first hard drive for our 386SX was 80 MB. I remember loading Stacker software to double it and it not working the first time so I had to format the hard drive and start over. My mom wasn't happy that she lost the budgeting files she had just started putting on the new hard drive, but I blamed "I don't know what happened" and that seemed to work. LOL A single 1 MB SIMM of RAM cost $100 at that time too. Perspective can also make you feel old and outdated.
21:42 Hey, a hand scanner on the right! Oh man, document scanning at 400 DPI (if it wasn't less), even in black and white, would require you to move the scanner shower than average continental drift in order to not overload the PC 😊.
CP/M 2.2 didn’t know anything about paged memory, and most CP/M code ran quite happily inside an unexpanded 64K machine. Amstrads ran CP/M 3, which could use paged memory, but didn’t require it. I remember running CP/M on a CPC 464, without expanded memory.
You seemed to be saying that WordStar would only be able to handle files that would fit in RAM -- this is not the case, and I remember being amazed at how smooth the transition was from the amount of text that would fit to much bigger, where it dealt with the rest of it as disk files. This was on my Osborne Executive running CP/M 3.
While most MSX1 computers had 64KB of *main ram*, the total amount of RAM available is 80KB, since, unlike other 8bit computers, it has 16KB of separate VRAM. Even more on the MSX2/2+ (usually 128KB of VRAM). Many MSX software also use the VRAM to store store data.
I may be wrong, it was so long ago, but I think I remember such trick was used by Sharp to swap ROM banks in some 80s pocket computers. It also may have been some kind of protection/
Ok, I just watch to the end. Some very cool things! I wish I still had my Heathkit H-89. TWIN Z-80 processors. 64k, Three soft-sectored floppies….Ah, she was a beauty! And who would have thought 40 years later she could possibly had a Meg of RAM! 😮
0:19 You might have wanted to look at the Commodore 128 before you started this project. It already HAD 128 KB accessable memory, and I think it was expandable to 512k with a plug-in "card". 8502 was nothing more than a faster-clock 6502 with an on-chip parallel port (used at least in part for bank switching), and Z80 as well.
Knife Edge tips work much better for SMD soldering. I switched to a Weller T0054462199N tip after a friend who also does mostly SMD work recommended it to me. Hundreds of boards later, it's the only tip I use for both SMD & THT soldering. Conical tips have been relegated to installing brass threaded inserts in 3D prints.
Yeah, those SMD components were too big for the conical tip. I'm usually a fan of chisel tips for TH. I'll ahve to look into knife edge tip. I'm assuming they're similar just slanted at a different angle?
They are more like a slightly thick and stubby Xacto blade but narrower top to bottom. Easier to navigate past neighboring components and also slide between pins to clear bridges when used with plenty of flux. It's also important to remember that soldering iron tips do wear out, eventually the coating wears away and the core metal can react with solder and corrode. I was surprised when one of mine developed a sizable cavity that couldn't be seen from the outside, when it stopped carrying heat into a joint I took it to the grinder and found a small hole had opened up and half of the tip had eroded away from the inside. I had seen plenty of cheap RadioShack irons do this from the outside, with notches eventually showing up. I hadn't seen one erode from the inside out before.
That comment about how insane it would sound in the 80s to upgrade your CPC to 1MB .... yeah... that hit hard. Not in our wildest dreams we could imagine such things. Also - a HDD for the CPC ? I didn't know such things existed, must be extremely rare. Can you imagine ... a super CPC, like say, ... in the chassis of a 6128, in the place where the FDD is to have a HDD there, and inside a whole 1MB of memory .... hahaha. Incredible. The Frankenamstrad. Or Super Amstrad. Or both.
I remember upgrading from my CPC 464 to an Amiga A500 in late 1987. The move to 512KB of ram seemed unreal at the time. Shortly after, I bought the A501 512KB expansion, and ruled the world with 1MB of memory🙂
The AMS and SuperAMS memory boards for the TI 99/4A use the 74LS612 or 74HCT612 memory mapper to provide up to 1MB. The chip has two modes, map and pass and in pass mode, they appear as a normal 32K card to the TI.
😅😅😅 Oh Noel, shame on you! 😅😅😅 Just joking, mistakes happen. It is NOT the data bus which is 16Bit but the address bus! And to make matters worse, it is not only the physical amount of address pins - there are 8Bit computers with 12 to 20 address pins - it is the internal structure of the address counter which means you have to bend yourself over quite badly to address more than 2^16 Bytes. AMD back then had an interesting Design of Bitshift CPUs which had no fixed internal length for data and address but it was expensive, slow and terrible to program.
I have a Color Computer 3. Officially it was supposed to support up to 512kb. The top 2 bits of the MMU bank registers are supposed to be undefined. But in reality, they are stable and usable. So in reality, the Color Computer 3 can address 2mb natively. It would have been a little bulky back then and would have made the computer overhead a bit, but it was still feasible. The OS/9 operating system was modified to handle that amount of memory.
I don't know why people think bill gates said that. IBM made that decision not microsoft. I still don't understand why intel didn't design the x86 to support 32 addresses internally (since it's using 32 bits already) and then only supply the pinnouts for 20 bits. In retrospect it would be interesting if they did the lower 19 bits and the upper bit. Then you'd have dual 512k (hardware and software). By the time the 286 came out you'd have 24 bit memory support that's fully compatible (it would be dual 8mb). And the headaches I ran into in the 90's with the 640k memory limit would have never happened. And the 386 would support 2gb of ram and 2gb of hardware in real mode.
Would love to see a 1MB RAM Expansion for the Sega Genesis for Z80 Master System homebrew. Maybe get it to read the SegaCD too for adding Redbook audio to 8bit games.
Z80? The old enemy! So here we meet again! Seriously, I'm still a fan of another 8 bit processor from the days when you had to build your computer yourself if you wanted to have one. Banked memory is nothing new, but large and affordable SRAMS are. However, you will also need a faster processor and a faster mass storage device to make reasonable use of all that memory. It wants to be filled with something before it's of much use. Or would you like to have that kind of banked memory on a C64 with its slow floppy drives? Do I have these things? The jury is still out on that one. At least I can easily push my old silicon from 1976 to 7.3 MHz without efford and SD cards as mass storage are relatively easy to interface. And the unique architecture of the old processor allows me to call a subroutine anywhere in that banked code from anywhere else in that expanded memory. The switching of the banks is done exclusively during calls and returns, not all over your code. As another bonus, I can easily detect DMA operations on the bus, so a second page register for DMA allows DMA operations from or into the expanded memory. These two things allow some benefits of having a MMU without actually building one.
Of course, one reason memory expansions weren't popular was the prohibitive cost. The 256K dk'tronics expansion was £99 in 1989, so how much do we think a theoretical 1MB expansion would be priced at the time if it was commerically produced? Around £400 I'd bet! Appreciate how cheap RAM would become in the 90s.
We could always go above 1 MB in DOS. The only problem was that until the industry finally solidified behind Extended Memory Specification and the XMS standard there was really no reason to add more than 640k to a system. Because there was really nothing you could do with anything past 640k other than brag about having it. In the last days of the 808X platform (1991-1993), I built a lot of systems with 8086 processors that allowed 1 MB directly on the main board. Because by that time MS-DOS-5 was the newest version, and it had a memory manager included to allow access to memory past the 640k limit. And programs were also more and more commonly written to take advantage of that and reside in the high memory areas. I built and sold scores of XT class computers with 1MB, that by default I shoved as much into High Mem as possible. It was never really a "hard rule", it is just that before then no two companies were doing it the same way so trying to use anything past 640k was a nightmare. Like trying to use the "Expanded Memory" system (EMS) that came before XMS. Other than some games an a few specific applications that was never really used because it was a kludgy bank switching system that only worked in protected mode.
Back in 1985, I did this with my Apple IIe 8 bit computer. Was as simple as putting in a RAM card, built for the task. I think it was the company, Applied Engineering that made that card. The card did all the heavy lifting. I simply enjoyed having all the extra ram for Appleworks, which showed me having 1184 kb free. The software had to know about it. So if it was a 128k game, then it only saw the 128k. But for the real power apps, it was awesome. I was bragging to a friend of mine, how much RAM I had, he said, "You will never use it all", and I quickly did. I starting making RAM Disks with it. Even had a battery back up for the RAM Card to use so the RAM didn't lose anything during a power off.
I remember working at a place in 1985 where an engineer was hired to develop a 128K expansion board for the TRS-80 Color Computer. I kept wondering if anyone would actually write software for it (I don't think anyone did). Then a little later someone showed a "super coco" board that was much larger and had a 68000 chip. So I then wondered, why not just get a PC that has a more powerful CPU? I never saw that board being used either.
640MB was the maximum RAM limit of the original IBM PC, even though the 8088 could directly access 1MB. "High" RAM usage, for me, personally, came in the late 1980s, and using a Z80. I was working at voice logging recorder company at the time. 25 hours of recording onto 60 channels, on 1 inch tape. All analog. Only computer control. But the project using a "butt load" DRAM, was an "instant playback" SS recorder, with anywhere from 2MB to 32 MB of RAM, to store the audio. Uncompressed and sampled at 8KB/sec that translates to 4 minutes to over an hour of recording. Of course, a Z80 can only access 64KB directly, bank switching the voice data, and also used a DMA controller.
"IDC Connector" is incorrect. IDC stands for "Insulation Displacement Connector". The connectors that clamp onto ribbon cables have little bladed teeth that push through the insulation on the cable to make contact with the conductors inside. The matching connectors mounted to a pcb don't displace insulation, so they aren't insulation displacement connectors. (Or insulation displacement connector connectors)
Whenever I see a video about old computers and memory, I remember saving up over a hundred dollars to buy sixteen 2114 chips to double my computer's RAM to 16K.
@@NoelsRetroLab There's an episode of Adrian's Digital Basement in which he replaced I think four RAM cards in his SWTP 6800 machine with a single 32K RAM chip that cost five dollars. It made me laugh.
Actually I had a friend who died in 1998 and he had a 640K (not 64K) but 640K Amstrad CPC 464 he modified/upgraded it himself, it was quite a computer, it had 6 storage drives and all sorts add on parts he designed it was quite a system matching if not faster than his Amstard PC1640, he was ahead of his time he also had something to do with the Ramdrive on Amstrad but not quite sure what he was involve in)) Rip JAN.. good video! -- if i remember now its was a device he designd which he would swap memory banks.. so far back wish i could tell you more.. I think he spproached amstrad but they were not interested ah well
Although these are fun projects to build and try, they really don't have much use as you've said. Same goes for the GeoRAM expansion for the C64. I have built one, just out of curiosity, and used it a couple of times with games that can use it. By use it, I mean by the help of a 3rd party software (written many years after the games) a multiple disk game can be loaded up into the RAM expansion and can be played without constantly swapping disks. One good thing that the GeoRAM has an internal CR2032 battery backup, so what you have in it stays there as long as the battery has enough juice, which seems to be more than I anticipated, it has been almost 6 months, and it still works. That's the only sensible use of the GeoRAM. It was actually designed to be used in GeoDOS environment, but to be honest I really don't understand what that is good for on a C64.
Why don't these videos ever acknowledge the Radio Shack Color Computer? It had 64K at the same time. It was the most versatile computer I ever owned. I could plug almost anything into it directly and make things happen. I could hook it up to a shortwave radio and decode Weatherfax and Wirefoto images with the same quality as a $10,000 dedicated machine. I could hook it up to a MIDI keyboard and play multiple instruments simultaneously. It was an inexpensive wonderland. Then came the PC for way much more money, and anything you wanted to add required also adding another circuit card inside. That took away some of the fun.
Nothing against it, just that I've had very little experience with it. But you're right, it was very similar to the Dragon and I could have mentioned it there too.
What's not an urban legend is that the last programming Bill Gates personally did was being a co-programmer for the BASIC OS ROM in the TRS-80 model 100. They were the most robust laptops ever made; some are still in use in legacy applications.
Actually it’s possible to use z80 specifics to switch banks. Some home computers used m1 signal to detect code execution and switch banks. So it was possible to give almost 64k to cpm applications and have kinda protected mode.
The only problem there is that /M1 only goes low during the fetch cycle of the first byte of an instruction. If you're using extended instructions, for example, using the IX or IY registers, subsequent bytes DON'T have /M1 asserted.
yep, so there is a FF which latches the pages map when OS code is started to be executed in screen page for example, and the FF is being reset when other page is being executed /*after return to user page*/@@alanclarke4646
The m1 FF can be triggered not only by page access, but also a specific address, like TRDOS entry point in ZXSpectrum /*characters table in ROM address*/@@alanclarke4646
So "sleep" mode was actually invented a long time ago since that keeps a snapshot of the current RAM state and re-loads it on power resume. I never shut down my PC, I perpetually use sleep mode.
Nice video! However, could you explain why a CPLD was necessary? Maybe I misunderstood the IO request, but if it's present in each memory request, the logic should be pure and a PLA should be sufficient
I wonder if it would be possible to sacrifice some RAM speed and do some type of time based multiplexing to address more RAM. So each line could theoretically address 2, 4, 8 based on clock time. You'd lose RAM speed to be able to address more RAM per line. You might need more supporting logic to get it to work. Clock 1 -- 8 lines send out the low order bits and then on clock 2 they send out the high order bits. CLOCK 1 -- 01101101 CLOCK 2 = 11011010 ADDRESSED LOCATION = 1101101001101101 (You've doubled the number of lines by using timing) The problem is that you cut RAM speed in half because you need to use 2 clocks to create the address instead of just 1 clock.
01:20 - "by banking, which is almost the same as cheating" - how to have more than what one should only be able to have Taken out of computing context, it's still true!
I have the U2+ for my C64. It supports 16MB of ram (I can't comprehend that lol) But more importantly it's my disk drive. It's an all in one device. WAY better than a separate ram expansion and disk drive and tape emulator. So it sounds like that's what this computer needs.
What can you do with the extra ram? Maybe we can run a GUI or some operating system on it. Since you have the extra ram, maybe a bigger operating system will justify the use.
The out (c),c should likely be out (c),b if you want to output the bank number in b on port c... This, as c would go onto the address bus, and b onto the data bus.
FAQ (hopefully this addresses some of the main comments/questions):
*** You got data bus and address bus backwards!
Yes, I did! 🤪 I thought it was only in one part that I put some text, but apparently I messed up earlier too. Sorry!
*** LD (C), C is incorrect.
No. The way the Z80 works, when you do out (c), XX, it actually sets the IOREQ line, writes the whole BC register on the address bus, and puts XX on the data bus.
I know, it should have been called out (BC), XX, right?
From my understanding, most Z80 systems only look at the lower 8 bits of the address bus during an IOREQ operation. I'm not sure why. Some kind of semi-standard? Reference implementation?
The Amstrad decided to use the TOP 8-bits of the address bus to decide which IO to target. So the bottom 8 are ignored.
So loading something on BC and doing out (c), c does put C on the data bus and B on the top half of the address bus. It's one of the Amstrad idioms.
I'll keep adding things as they come up.
This does not really address the “discology” question 😂😂😂
The 8 bit thing probably comes from the 8080 which only had the IN A,(n) instruction. The INIR/INDR etc opcodes (z80) are like LDIR etc but increment or decrement the B register. They read a block of input data. Another reason for I bit IO addresses. The Amstrad way of doing things makes those instructions unusable on a CPC.
The Amstrad firmware keeps BC’ permanently loaded with the gate array address in B and the current video mode and ROM enables in C. It can change ROM enable states just by tweaking the appropriate bit(s) and doing an OUT (C),C wrapped in EXXes which makes calling ROM routines a lot faster than it would otherwise be. One of many clever tricks in the CPC :)
@6:26 "this is just a 256MB expansion" from 1986 :-)
You really should cut the component legs to length _before_ soldering in order to avoid bad connections from potential microcracks.
21:47 mini SD was only available up to 32 GB
Well, my motherboard supports 64Gb of RAM at this time. Such an upgrade would allow me to have 1088Gb. With this much, I could run Photoshop for an entire day without needing to restart it to clear the memory leak! Really puts things into perspective.
You can also open half a dozen browser tabs now. 😉
I can do that now with 8Gb in the computer I built 12 years ago. Actually, I could do it for weeks, while at the same time downloading files from newsgroups, listening to music, and browsing the internet with 40 or 50 windows open. I only shut my computer down about once a month to free up the memory. It takes me a half hour just to save all the open browser window URLs so I can revisit them.
Perhaps you should add a /sarc/ tag, as this has to be a joke.
Gosh I wish I had a TB of RAM for running blender without constantly having to worry about running of RAM and usually doing it anyway.
@@oliverer3 I had a very fun experience recently with Blender while editing. I had it set to use however much it wants from my 500 gig nvme and while rendering a 12-min video, it decided it needed 460 gigs of virtual ram. It took me three attempts with a corrupted video file and some burned neurons and lost hair follicles on my end to realize it was cucking itself from writing the file. So yeah, a TB of RAM seems par the course. For a piece of free software though, Blender's top-tier!
The fact that the extra memory doesn't get wiped is one of the tricks that was used to ahem, backup software. Ideal in combination with an Instant Replay. Wait for the game to load, break into the process, copy the entire 64Kb to the second 64Kb bank, reset the Amstrad and then copy it back and extract the program. I've used it to extract music from games. :)
Oh.. those times… I was the king of backups.. cough.. with my C64😊
Do you really own something without a DRM-free digital copy?
Cool. I was always in awe at the cracking groups of the day and literally dreamed about how they did things (especially on the Amiga 😍). I'd love to learn that stuff for myself and become a retro games cracker just to understand it all 😃
@@KopperNeoman games preservation will be done by pirates rather then companies. It's already true.
If my memory serves me correctly, it's the *address bus* that's 16-bits wide, the data bus is what makes it an 8-bit computer. Still a great video.
Pretty much. The instructions and data are a byte wide (usually - the z80 actually can deal with 16 bit numbers though there's a speed penalty since obviously you have to deal with them eight bits at a time)
This whole "bitness" concept is kind of suspect. For instance, the 68008 (used in the Sinclair QL and many embedded system) had 32-bit registers and instructions, 20/24-bit addresses, a 16-bit internal bus, a 16-bit ALU, and an 8-bit external databus. Some called it 8-bit, others 16-bit, yet others 32-bit.
The Z80 had 16-bit registers, addresses and instructions, with an 8-bit databus, and a small 4-bit ALU. But was always called "8-bit". Pretty arbitrary really.
@@herrbonk3635 fwiw the 68008 is basically a cost reduced 68000, which is generally considered to be a 16bit processor.
You are not wrong in calling it arbitrary though. "Do the math" as Atari famously claimed in adverts for the Jaguar
@@herrbonk3635 IMO the "bitness" of a computer is how many bits it can process per clock cycle. This is usually the register size, but I suppose some procs might process low bits on one clock and high bits on another or something internally, I don't know enough about CPU specifics to say one way or the other.
If the data bus is half the register width however, then it could effectively only handle 8 bits of data per clock realistically so maybe that is why it was called a 8 bit computer.
@@JathraDH Sorry, but that's total recentism, and not how it works generally at all. If it was, the "bitness" would vary among different intructions and the 68008 mentioned above would have a "bitness" of 2.7 (32/12) for its fastest instruction, while the 68000 would be a 4-bit CPU (32/8) for the same instruction... 🙃The 8086 would have a "bitness" of up to 5.3 (16/3), while the 286 would be an 8-bit processor (16/2) and the 386 would be 16-bit (32/2) ... and so on.
Thanks for the CPC love! I still adore my CPCs, and I suspect like most Amstrad users around today, I'm always delighted to see a deep dive into the rather esoteric joys of hardware expansions. I love picking up serial, sound, mouse and speech expansions for it to this day. My favourite hardware expansion that I had was a VIDI video capture card from the folks that made the ROMBO rom expansion box. That was mind-blowing, but I lost mine and I've never seen another. You touched on the CPLD and that's something I would definitely like to learn more about some time..
Atari 8-bitters have been adding 1MB of RAM to their computers for years. A friend used to have an Apple IIc in which he installed 1MB with an upgrade. I helped him get the chips he needed.
I have a new-to-me Atari 800XL heading my way soon and I'm going to do that in the future.
True, I've seen those in the late 80's. There were magazines who published some schematics with all kind of upgrades for the 8 bit Atari computers.
And i've got a 16MB ram expansion on the C64
Having such massive RAM expansions are cool but only if there's enough software to take advantage of it. I saw a video of a shoot em up for the Atari 8bits that required a memory expansion, it looked pretty cool , very fast.
yeah but the commander x16 has 2 megs of ram so this would be a downgrade for that system🤣🤣
I did start designing an ATX version of the 6128, but now that I know about this project, I will do what my due diligence to see if it can be baked into my design.
Please do follow the standards. Use mITX form factor a slots spacing. Then it will be possible to use a lot of cool mITX cases and use already made CPC extension cards with 3d printed brackets to be inserted into same way as low profile PCIe cards
I also used Discology and Pyradev back in the '80s, for...... "research" LOL
Great to have you back. I know you've been setting up your studio and I know this takes time. I've missed your content. You're back and this makes me happy. Nice one Noel.
Great video, I love the way you explain complex topics, like memory mapping, with simple words and diagrams!
I considered porting Zeal 8-bit OS to the Amstrad CPC but wasn't sure how the memory was organized, I am happy to see it is also using the 4x16KB virtual pages segmentation, which makes it fully compatible.
The first program that comes to my mind that would be able to use a lot of memory (maybe not the whole 1MB) is a C compiler. The compilers I have seen for the Z80 go from parsing to assembly generation in the same pass, which reduces the RAM usage but limits the potential optimizations. With that much RAM, an whole AST can fit in RAM, even if the source file is big, making optimizations possible!
But even with so much RAM I’d recommend not to waste it and combine preprocessor c compiler asm compiler and linker as coroutines. I remember first TurboPascals were blazingly fast, because compiled into RAM - no need to save, just jump to exec. Later versions >=6.0 started to work with files and were in order of magnitude slower!
Use the RAM Luke ;)
Yes, the CPC uses 16k banks but what it can patch in where is very limited. You can patch any block into the bank at &4000. There’s also options for the bank at &c000, but beyond that you’re limited to swapping in entire 64k banks in one go. Also video can only use the base 64k.
Ooh, I'd not heard of Zeal OS - Thank you for a new rabbit hole for me to get lost in!
Great video! I know virtually nothing about the Amstrad line of computers, so this was very educational. It always amazes me how inventive people get when they have very little memory to work with or when they have a system that is very limited in a more general sense. Adding that pressure makes people think more deeply about the choices they make when designing hardware or software for such a platform.
One big bonus is, of course, that memory, both DRAM and SRAM are relatively cheap nowadays, especially compared to say, what the costs were in the '80s and '90s.
I love SymbOS. I have it running on my MSX2 computer, a Philips NMS-8255, although of course, that system is also expanded with 1MB of memory and more storage than one could even dream of in the '80s. In its current configuration it has more RAM and more storage space than my very first PC had. I think that's pretty awesome.
Very true: back in the 80's, RAM was a little under £1 per KB, so one of today's 4GB DRAM modules would have cost 4 million quid!!
@@alanclarke4646 I remember paying slightly over £80 to get 4mb of 30-Pin Simms, so I could play GL Quake!!
It was not fast, nor cheap realiy but it did allow me to use the 3DFX card in a machine that really wasn't up to the base level spec to take advantage of it ... but ... once I'd seen GLQuake in action, I *had* to have it, come what may!! Not so long after, I did get a 16mb Voodoo Banshee. I know, I know - it wasn't the best in many ways but I much preferred the way it helped 2D acceleration in Windows, without the horrible noise from the passthrough cable at high res (1600x1200 on a 19" CRT) which I convinced myself I needed because I used that machine as a programming workstation as well as a gaming rig.
Many fond memories of it also working really well with I-War 2: Edge of Chaos and Wing Commander prophecy, especially after splurging out on a Microsoft Force Feedback sidewinder joystick ... I wish I still had equivalent gear now as I have a digital HD projector and I always wanted the experience of playing a proper space game on such a massive display! I love the immersion of my Oculus Quest 2, but the tunnel vision can be grating and doesn't quite compare to 1080p on a 20 foot wiide screen 😀
Gotta love the open source hardware community! I develop software, but I like seeing open source go to hardware as well.
Sorry for sounding pedantic, but those are not IDC connectors. Those are (shrouded) pin headers and sockets. IDC stands for insulation displacement connector, and means the kind on connectors that pierce the insulation on e.g. ribbon cables when you install them. The most common IDCs are indeed the pin socket types, but another common type is D-connectors on ribbon cable. Though IDCs don't even always use ribbon cable: you have things like modular connectors and the MTA100 series.
You're right. I'm horrible when it comes to connector names 😃 I stand corrected.
My MSX 8 bit Z80, computer it has 2Mb of bank switching memory, not much use, a massive RAM disk, but, some cartridges use 8k bank switching, the 16k pages can handle those quite nicely
You are so right about a possible huge leap in quality and complexity of CPC software if extra memory was considered as a standard! The Homebrew golden era of the Atari 8bit line is a great example on how some extra memory can push the quality of the software.
Of course the good thing with the Atari expansion memory modules is that most of the solutions (internal or PBI) follow the specs of just two main popular "protocols" (Compy and Rambo) guaranteeing the compatibility of almost all expansion "contraptions"...plus the PBI port has its own power supply and zero peripherals to compete for the same port (thus its really practical).
I'd love to see more of this, there is a UA-camr named Prodatron who demos some great hardware.
Nice to know that there are cheap opensource expansions for CPC. I've never owned a CPC (Commodore user here) but partially thanks to your videos I can see how underrated it was compared to its true potential. Now I have 3 working pieces (2 464 and one 6128) that are waiting for when I have time for them :) They will probably require belt replacement, though.
I had a 40MB HD for an IBM PC in 1986 at work - HALF HEIGHT!! - and it had the first surface mount components I'd ever seen.
The first 1GB drive I saw was in about 1989 for a VAX 8340. They were $25K each and we had 8...think about how much HD space $200K could buy today!!
I did exactly with my CPC6128 what you described in terms of debugging. I rerouted the BIOS to an external ROM where I destroyed the fonts starting at ASCII 240. I put code into there to copy the entire 64K into the expansion RAM. Later I build my own expansion like you showed in the picture using 256K of DRAM and many ROM expansions. The MAXON assembler was the most important one. Since I build the RAM expansion myself I also added a DMA that was able to send a data stream out to a DAC making some real sounds like the AMIGA does.
But then I switchted to AMIGA.
Wow, that sounds like some serious hardware hacking! I wish I was able to do stuff like that back in the 80s, but back then I was even afraid to open up the computer! 🤣
@@NoelsRetroLab I had help from the German State Train Company where I had the first internship of my life. A nice guy taught me the basics of LSTTL logic ICs. I started there and went on from that building the first Eurocard. IIRC my 6128 used a 50 pin centronics connector. That was a pain, since it did not fit into the 0.1" matrix board.
Great video again Noel. Love your enthusiasm for tinkering with retro computers.
If the screen buffer can be relocated to banked ram (like on the C64), then you could use that functionality to play full screen animations really quickly.
Edit: looks like you answered the question during the video. Cool!
Unfortunately, due to the way the Gate Array controls memory accesses, Video RAM has to be in the base 64k ☹️, otherwise switching VRAM banks during vertical blanking would be very cool.
The Giani Sisters Tribute game uses 32KB from base RAM for the display.
That actually was use with the REU in the Commodore 128. Though I don't know if it was the VIC-II or the VDC.
With regards to internal memory expansions, one of the main challenges is that the signal timings in the CPC work when writing to DRAM, but not when writing to SRAM. DRAM samples the data bus when WE transitions low, SRAM does so when WE transitions high. In the CPC the multiplexers have started to change by the time that happens. It’s possible but modify the signals to get it to work but makes the logic more complex.
Beyond that you get the challenge of where to patch the expansion into to access the signals it needs - and you’d need to do different boards for each main revision of Amstrad main board. When I looked at doing so I felt like would be simpler to just design a new machine from scratch. Do that and you can also upgrade other areas of the machine such as the ROM.
Interesting about the timings. I didn't think that far, but that could be a challenge. As for fitting it, my naive idea was to fit on 3-4 of the lower 64KB RAM chips and have cables go out to the RAS/CAS of the other chips. But yes, you would definitely need different PCBs for different 464 boards (maybe one will be in common with a 6128)? Alternatively we could plug it in on the Z80 socket directly. Maybe? Lots of possibilities, but I think it may be worth it, and especially, it will definitely be fun 😃
@@NoelsRetroLab When I tried it plugged into the gate array (for signals and data bus) and a signal RAM chip (for address lines IIRC). The downside is that the address is downstream of the address multiplexers. You need to latch the RAS and CAS addresses and then run them through a HAL. It just all gets very ugly.
Patching in to the gate array and CPU sockets would be better but they’re not conveniently placed in most motherboard variants. (And my preference is for a single PCB which plugs into the sockets and rehouses the original chips - much nicer than a load of flying wires and soldering).
So, yes, it would be lots of fun. I’m just not sure I want to personally devote the time to it :(
I wish other manufacturers realised that the CPC464 had the coolest looking keyboard of all 80s 8bit machines, I love the coloured keys. I had an enormous thing against Amstrad in general (still do!) so never owned one but I always thought it looked like a very cool machine in that sleek black case with that keyboard.
Intelligent Software Enterprise 128 had simmilar keyboard
In terms of looks of the keyboard, there's only 1 other computer that I though could even shine a candle to the CPC, and that was the Oric Atmos ... beautiful machine, crap hardware though!!
I'd love it someone could make an Atmos inspired case for the Raspberry!
@@rastislavzima That built in Joystick was bananas! In a good way 😀 I remember first seeing it in a computer magazine and lugging the article around all week at school to show anyone who'd listen (and a few who didn't!) how awesome it was! .... Turns out that it looked great but the stick itself was pants! Shame though, If they'd managed to get that machine out a couple of years sooner, I do believe the 8-Bit market in the UK would have gone in a totally different direction.
To me, it's almost like how things could have been if the Sharp 68000 had been released and supported world wide! Wish I had a time machine so I could go back and slap some folks upside their heads LOL!
my cpc is looking a bit worried right now lol, its difficult to convey how insane 1mb of ram for a 80s micro is.
Right?? That's why I liked that RAM test so much since it took several minutes to complete. It's some insane amount of RAM and it was certainly never intended to have that much.
@@NoelsRetroLab but you know if implement fast RAM expansion Amiga way via cpu socket PIStorm, emulated z80 could scan 1mb of fast ram in a blink of an eye ;)
Interesting - I always wondered about the 'extra' 64KB on my CPC 6128 (on which I ran an entire business on using Mini Office II in the 90s!). 16:05 Whoa, that program brought back some memories! My friend got quite annoyed with me when I kept borrowing his mouse to use it...
I spent so many hours with that program! I never made anything great with it, but it sure sucked a lot of time! 😃
I love finding videos where the UA-camr makes custom hardware to improve older stuff, like old old stuff. Usually makes me wish that more programs would negotiate a percentage of available resources so they could take advantage of say more ram lol.
I still own my 6128 and I added a ROM board and a 3.5” drive to keep my 3” disks mostly available - they were so expensive!
I had always wanted a hard drive for it and I felt that 128k of RAM was enough for me.
I did all of my university work on it, text and graphics, as well as relaxing with some pretty good games.
Now I have so many computers of different eras and brands, and I’m still creating text and graphics for all my subsequent jobs that I don’t know when I will get back to the Amstrad.
Thank you for another great video!
Nice video. We are making a 2MB expension for the Philips P2000T, a Dutch Z80 machine, internally, as it has plenty of room. 2MB is the limit, as the OUT toggle can deliver 256 positions for the upper 8kB of RAM. So you get 2108 kilobytes. Actually back in 1988 someone already made a 2MB expansion for this machine, byt with 256kbit chips (64 of them!): the use was running a BBS over the Viewdata protocol. They needed to upload 5 floppy's with all the user messages and such into the RAM, and they even managed to run it for 5 years without a single power-down. Our modern version has 4x512KB chips and TTL logic. Still it is pretty compact.
What is weird though, the C128 does flip the entire RAM. Must have been hard to swap data between the two halves on that machine.
Cool. Keeping track of all the blocks of memory while writing software to make use of it would be fun.
Just seeing those CPC 464 colours took me back forty years. Forty years?! Where did all that time go?
It went 40 years forward.
@@JGreen-le8xx Yeah. 🙁 Time has a habit of doing that.
I’m curious when your RAM test finished, it only tested 0x0F banks of 16k ram or 256k total. The screen had enough space for 1024k but it didn’t seem to test it all. Am I missing something?
That screen is designed for 4MB of RAM (yes, it's possible apparently!!!). So each bar was 64KB, not 16KB, which times 0x0F is 1024MB. One of these days I need to get my hands on a 4MB RAM expansion and test it for real.
Noel used a word "bank" for whole 64k of RAM, probably as a reminiscence of CPC6128 which had 128k and other 64k has been called as "second bank"
@@NoelsRetroLab oh confusing as the banks are actually 16k each…
@@rastislavzimayes, "bank" is 64k, "block" is one of the 4 16k sections in a bank.
The comment about the RAM not being reset on a reset also holds true for the 2nd 64K bank in a 6128. I remember one trick for hacking games from tape to disc back in the day was to load the game into the 2nd bank of a 6128 and reset when loaded and just save out the 2nd 64K bank to disc. Figure out the entry address and you've got a disc based version. :) Easier with a multiface, of course!
Noel, you have made me stroll down memory lane. Thank you. I hope my little rant below does not bore you too much.
Shortly after the Z80 uP was first released, the company I was working for purchased a 'large' (12" square approximately) SDK PCB (from Zilog I think). To populate the memory, the DRAM chips of the time were 16k BITS and 8 of those gold-plated-pin heroes to make a 16K byte DRAM memory cost around 500 USD. This BEAST with a fancy cassette-tape-drive storage for R&D was set in front of me and I had to make it work.
Thankfully, LSI byte-wide SRAM made its appearance a short time later, so that many of the company's wannabe product successfully made it into the market place at a practical price point for large computer-controlled lighting desks. The static RAM with battery backup made the products free of the need for any other type of memory when composing and then repeatedly sequencing through lighting cues every show.
The DRAM refresh controller on the Z80 uP WAS used however. My boss at the time who had a propensity for thinking outside the box, asked me to use the phantom Z80 read-refresh cycles of non-existent dram to sequentially export lighting levels directly from SRAM memory to the proprietary analogue serial trundler sent directly to numerous dimmer racks from a single output. IOW, DMA on the cheap. IT WORKED just fine - and still does as far as I know.
Nice. I have similar expericences, albeit starting a little later, early 1980s. But have you seen the internals of the ZX80 and ZX81 designs? I.e regarding "outside the box" usage of the refresh counter and other Z80 traits.
@@herrbonk3635 I have not Sir. I will go on a bit of a tour to see what I can turn up. I did very much appreciate the timely appearance of Hitachi's 64180 device a few years later and designed it into a number of specialized industrial products.
I am now retired, but interested in your comments w.r.t. spectrum ZX80/81. I see the schematics are easy to find on the Web, so a bit more touring down memory lane in store for me.
Thanks for your reply.
@@jimparr01Utube Thanks! I used the 64180/Z180 too. But it's only the ZX80/81. (Spectrum had other designers and more traditional solutions.)
The interesting and challenging aspect of it is that it's almost impossible to understand the ZX80 TTL-schematics without also reading the disassembled machine code, and vice versa. And the ZX81 is even worse, using NMI as well as (non returning!) INT interrupts for picture generation along with the refresh counter and I-register. It took me years to fully understand that thing... It's not beautiful, or even optimal, but still clever. Very british :)
A friend of mine built something similar for the Sinclair ZX Spectrum 48K at the age of 16 back in 1987.
As he used the full 8 bits of the output port (220), this would have allowed up to 256x 32KBytes or 8MBytes (including the internal 32KBytes at out 220, 0) of total memory.
Including power/battery backup and the ram, if he had tried to do that it would have probably ended up the size of a mini-fridge 😂 but because of the costs back then his ram pack only had 224KBytes (7x 32KBytes) but it was battery backed up.
It came in very useful when we were developing software as it could be saved to the expansion memory using the Sinclair Microdrive commands and any time the machine code crashed or got stuck in a loop, the zx could just be reset and then the code could be loaded back from the expansion.
I remember WordStar didn't have enough room in 64K even for it's code... so it would "swap in" chunks of code from overlay files. It'd be great (if I could still remember my 8080 assembly language) to patch it so that it loads all it's overlays into expanded memory and then bank-in it's overlays instead of going out to the floppy all the time.
I like when someone says a word on a foreign language and actually cares to pronounce it properly like you did
A Disk copy program on the Sam Coupe with 256 or 512k ram. Completely in basic, first check if 256 kor 512k was available with a Peek-command to determine if you can read 40 tracks or just 20 tracks of the disk, then copy the sectors of those tracks, the only problem was timing, and that was solved with first reading the odd sectors and than the even ones, swap the disc and write the odd and then the even sectors. The Sam Coupe could hold up to 4.5mb, but more likely was 1mb extra and an IDE interface for a harddrive.
Now I want to buy a CPC, just to update it to 1MB... Yes, an internal update would be fun, I'm thinking of an internal memory update for C64 - but that hasn't progressed much beyond initial sketches. Biggest problem is all the different motherboard revisions.
I have about 100 TQFP XC9536XL (4.5 bytes storage) and I have no problems writing the VHDL for these memory expansions. A trick of the trade is to use 3.5999V regulators to increase noise immunity so there are less problems with running a number of additional cards on bus expansion boards. Most CMOS today doesn't draw much current and doesn't cause an unbalanced voltage drop.
I also have a Z80 under chip to 40 Pin Dip to 40 pin header adaptor so that I can make RAM expansion internal on my CPC 6128.
Note: The TQFP44 has pin 1 close on a corner and the J-lead PLCC 44 pin equivalent has pin one on in the middle of one side.
I will be targeting 512kB plus the original 128kB of a CP 6128 which was the original design intention of the CPC 6128.
1MB is like 1TB back then
1tb was 1tb at those times already. It morefelt like a petabyte
Back in the day I would always use ram disks for my Amiga 500 with 2 megs external ram and 1 meg internal ram.
With games I would load the disks into ram, then there would be no swapping of disks and practically no load times during gameplay.
Sounds like this would be an excellent use of the expanded ram for this and other 8bit computers.
Brilliant video! Easily the best 8bit, especially if you add 128K of Ram.
Feels so good to see Noel in his workshop.
I know of at least one project that adds memory internally (1Mb or 4Mb I believe) but these do not use standard I/O ports.
The "standard" max memory expansion was meant to be 8*64 including the built in memory so 512k total.
It would be totally feasible to upgrade a 6128 to 512k by swapping the memory chips.
4164 and 41256 chips have the same pinouts and most 41256 chips use 8 bits refresh.
The A9 address bit is on pin 1 (unused on 4164) so:
1) Remove all memory chips and put sockets
2) Connect pin 1 (A9) of all the memories to one of the free pins of the PAL chip
3) Design a new PAL to implement the 8 banks as 2 things:
The bank switching through CAS signal CAS to CAS0 and CAS1 (what the existing PAL does today)
Address bit A9 selecting 4 64k "quadrants" in the new bigger memory chips (1 bit for RAS, 1 bit for CAS)
Noel, I love your enthusiasm and way of describing the project and mechanisms involved! Thank you so much for that! I wanted to ask if you've looked at the tech discussed in the "protected mode on the Z80" video you can find on YY? Can't link it because ... YT ... but I'd love to see you do a project based on it!
I'm referring to Andy Hu's "The Z80's secret feature discovered after 40 years!" content, which also has an intriguing discussion into the topic! Apart from seeing it work, I'm fascinated to know what one could actually *do* with it 😀
It seems like just yesterday that you started working on the Amstrad diagnostic ROM. When you said 2 years I just about fell out of my chair.
It's too bad we didn't have Amstrad in Canada. They seem like fantastic machines. Here it was all Commodore, Apple, Atari, TRS-80 and TI, in that order. I literally never saw any other microcomputer in the '80s. I do not count PCs because they are not what I consider microcomputers, and also they were boring. The fact that they were "boring" was part of the reason they triumphed, but my heart only holds 8 bits at a time.
Designing your own memory expansion will be a big project, certainly worthy of several videos. I know you can do it Noel!
Yeah, I want to get more into designing hardware expansions. The first one is probably going to be a simple ROM expansion to run the diagnostics ROM (and maybe a few extra things on the board). So many ideas! :-)
My first hard drive for our 386SX was 80 MB. I remember loading Stacker software to double it and it not working the first time so I had to format the hard drive and start over. My mom wasn't happy that she lost the budgeting files she had just started putting on the new hard drive, but I blamed "I don't know what happened" and that seemed to work. LOL A single 1 MB SIMM of RAM cost $100 at that time too. Perspective can also make you feel old and outdated.
21:42 Hey, a hand scanner on the right! Oh man, document scanning at 400 DPI (if it wasn't less), even in black and white, would require you to move the scanner shower than average continental drift in order to not overload the PC 😊.
CP/M 2.2 didn’t know anything about paged memory, and most CP/M code ran quite happily inside an unexpanded 64K machine. Amstrads ran CP/M 3, which could use paged memory, but didn’t require it. I remember running CP/M on a CPC 464, without expanded memory.
You seemed to be saying that WordStar would only be able to handle files that would fit in RAM -- this is not the case, and I remember being amazed at how smooth the transition was from the amount of text that would fit to much bigger, where it dealt with the rest of it as disk files. This was on my Osborne Executive running CP/M 3.
As a younger dev this video gives me some great broader perspectives. Ty.
While most MSX1 computers had 64KB of *main ram*, the total amount of RAM available is 80KB, since, unlike other 8bit computers, it has 16KB of separate VRAM. Even more on the MSX2/2+ (usually 128KB of VRAM).
Many MSX software also use the VRAM to store store data.
I may be wrong, it was so long ago, but I think I remember such trick was used by Sharp to swap ROM banks in some 80s pocket computers. It also may have been some kind of protection/
Ok, I just watch to the end. Some very cool things! I wish I still had my Heathkit H-89. TWIN Z-80 processors. 64k, Three soft-sectored floppies….Ah, she was a beauty! And who would have thought 40 years later she could possibly had a Meg of RAM! 😮
My first HDD came fairly late: 100MB. (And still barely competed with my Bernoulli drive.)
On my desk are four 1TB µSD cards that together cost less.
0:19
You might have wanted to look at the Commodore 128 before you started this project.
It already HAD 128 KB accessable memory, and I think it was expandable to 512k with a plug-in "card".
8502 was nothing more than a faster-clock 6502 with an on-chip parallel port (used at least in part for bank switching), and Z80 as well.
Yes the REU(ram expansion unit) would add 512K,and also be hacked for 2MB.
Knife Edge tips work much better for SMD soldering. I switched to a Weller T0054462199N tip after a friend who also does mostly SMD work recommended it to me. Hundreds of boards later, it's the only tip I use for both SMD & THT soldering. Conical tips have been relegated to installing brass threaded inserts in 3D prints.
Yeah, those SMD components were too big for the conical tip. I'm usually a fan of chisel tips for TH. I'll ahve to look into knife edge tip. I'm assuming they're similar just slanted at a different angle?
They are more like a slightly thick and stubby Xacto blade but narrower top to bottom. Easier to navigate past neighboring components and also slide between pins to clear bridges when used with plenty of flux. It's also important to remember that soldering iron tips do wear out, eventually the coating wears away and the core metal can react with solder and corrode. I was surprised when one of mine developed a sizable cavity that couldn't be seen from the outside, when it stopped carrying heat into a joint I took it to the grinder and found a small hole had opened up and half of the tip had eroded away from the inside. I had seen plenty of cheap RadioShack irons do this from the outside, with notches eventually showing up. I hadn't seen one erode from the inside out before.
That comment about how insane it would sound in the 80s to upgrade your CPC to 1MB .... yeah... that hit hard. Not in our wildest dreams we could imagine such things. Also - a HDD for the CPC ? I didn't know such things existed, must be extremely rare. Can you imagine ... a super CPC, like say, ... in the chassis of a 6128, in the place where the FDD is to have a HDD there, and inside a whole 1MB of memory .... hahaha. Incredible. The Frankenamstrad. Or Super Amstrad. Or both.
I remember upgrading from my CPC 464 to an Amiga A500 in late 1987. The move to 512KB of ram seemed unreal at the time. Shortly after, I bought the A501 512KB expansion, and ruled the world with 1MB of memory🙂
The AMS and SuperAMS memory boards for the TI 99/4A use the 74LS612 or 74HCT612 memory mapper to provide up to 1MB. The chip has two modes, map and pass and in pass mode, they appear as a normal 32K card to the TI.
😅😅😅 Oh Noel, shame on you! 😅😅😅
Just joking, mistakes happen. It is NOT the data bus which is 16Bit but the address bus!
And to make matters worse, it is not only the physical amount of address pins - there are 8Bit computers with 12 to 20 address pins - it is the internal structure of the address counter which means you have to bend yourself over quite badly to address more than 2^16 Bytes. AMD back then had an interesting Design of Bitshift CPUs which had no fixed internal length for data and address but it was expensive, slow and terrible to program.
I had much prefered a handful 74/40-series ICs than a proprietary single manufacurer CPLD...
I have a Color Computer 3. Officially it was supposed to support up to 512kb. The top 2 bits of the MMU bank registers are supposed to be undefined. But in reality, they are stable and usable. So in reality, the Color Computer 3 can address 2mb natively. It would have been a little bulky back then and would have made the computer overhead a bit, but it was still feasible. The OS/9 operating system was modified to handle that amount of memory.
The two extra bits don't get stored in the GIME so you actually need some extra hardware to support more than 512k. (OS-9)
Wow! Instaling 1MB ram on 8 bit computer is like installing 1MB ram on 8bit computer!! Mazing!
I don't know why people think bill gates said that. IBM made that decision not microsoft. I still don't understand why intel didn't design the x86 to support 32 addresses internally (since it's using 32 bits already) and then only supply the pinnouts for 20 bits. In retrospect it would be interesting if they did the lower 19 bits and the upper bit. Then you'd have dual 512k (hardware and software). By the time the 286 came out you'd have 24 bit memory support that's fully compatible (it would be dual 8mb). And the headaches I ran into in the 90's with the 640k memory limit would have never happened. And the 386 would support 2gb of ram and 2gb of hardware in real mode.
Would love to see a 1MB RAM Expansion for the Sega Genesis for Z80 Master System homebrew. Maybe get it to read the SegaCD too for adding Redbook audio to 8bit games.
Z80? The old enemy! So here we meet again! Seriously, I'm still a fan of another 8 bit processor from the days when you had to build your computer yourself if you wanted to have one. Banked memory is nothing new, but large and affordable SRAMS are. However, you will also need a faster processor and a faster mass storage device to make reasonable use of all that memory. It wants to be filled with something before it's of much use. Or would you like to have that kind of banked memory on a C64 with its slow floppy drives?
Do I have these things? The jury is still out on that one. At least I can easily push my old silicon from 1976 to 7.3 MHz without efford and SD cards as mass storage are relatively easy to interface. And the unique architecture of the old processor allows me to call a subroutine anywhere in that banked code from anywhere else in that expanded memory. The switching of the banks is done exclusively during calls and returns, not all over your code. As another bonus, I can easily detect DMA operations on the bus, so a second page register for DMA allows DMA operations from or into the expanded memory. These two things allow some benefits of having a MMU without actually building one.
Of course, one reason memory expansions weren't popular was the prohibitive cost. The 256K dk'tronics expansion was £99 in 1989, so how much do we think a theoretical 1MB expansion would be priced at the time if it was commerically produced? Around £400 I'd bet! Appreciate how cheap RAM would become in the 90s.
We could always go above 1 MB in DOS. The only problem was that until the industry finally solidified behind Extended Memory Specification and the XMS standard there was really no reason to add more than 640k to a system. Because there was really nothing you could do with anything past 640k other than brag about having it.
In the last days of the 808X platform (1991-1993), I built a lot of systems with 8086 processors that allowed 1 MB directly on the main board. Because by that time MS-DOS-5 was the newest version, and it had a memory manager included to allow access to memory past the 640k limit. And programs were also more and more commonly written to take advantage of that and reside in the high memory areas. I built and sold scores of XT class computers with 1MB, that by default I shoved as much into High Mem as possible.
It was never really a "hard rule", it is just that before then no two companies were doing it the same way so trying to use anything past 640k was a nightmare. Like trying to use the "Expanded Memory" system (EMS) that came before XMS. Other than some games an a few specific applications that was never really used because it was a kludgy bank switching system that only worked in protected mode.
Back in 1985, I did this with my Apple IIe 8 bit computer. Was as simple as putting in a RAM card, built for the task. I think it was the company, Applied Engineering that made that card. The card did all the heavy lifting. I simply enjoyed having all the extra ram for Appleworks, which showed me having 1184 kb free. The software had to know about it. So if it was a 128k game, then it only saw the 128k. But for the real power apps, it was awesome. I was bragging to a friend of mine, how much RAM I had, he said, "You will never use it all", and I quickly did. I starting making RAM Disks with it. Even had a battery back up for the RAM Card to use so the RAM didn't lose anything during a power off.
Awesome Noel! I hope you get a Coleco Adam computer some day!
I remember working at a place in 1985 where an engineer was hired to develop a 128K expansion board for the TRS-80 Color Computer. I kept wondering if anyone would actually write software for it (I don't think anyone did). Then a little later someone showed a "super coco" board that was much larger and had a 68000 chip. So I then wondered, why not just get a PC that has a more powerful CPU? I never saw that board being used either.
640MB was the maximum RAM limit of the original IBM PC, even though the 8088 could directly access 1MB.
"High" RAM usage, for me, personally, came in the late 1980s, and using a Z80. I was working at voice logging recorder company at the time. 25 hours of recording onto 60 channels, on 1 inch tape. All analog. Only computer control. But the project using a "butt load" DRAM, was an "instant playback" SS recorder, with anywhere from 2MB to 32 MB of RAM, to store the audio. Uncompressed and sampled at 8KB/sec that translates to 4 minutes to over an hour of recording. Of course, a Z80 can only access 64KB directly, bank switching the voice data, and also used a DMA controller.
"IDC Connector" is incorrect. IDC stands for "Insulation Displacement Connector". The connectors that clamp onto ribbon cables have little bladed teeth that push through the insulation on the cable to make contact with the conductors inside. The matching connectors mounted to a pcb don't displace insulation, so they aren't insulation displacement connectors. (Or insulation displacement connector connectors)
Whenever I see a video about old computers and memory, I remember saving up over a hundred dollars to buy sixteen 2114 chips to double my computer's RAM to 16K.
Seriously! RAM used to be super expensive back then.
@@NoelsRetroLab There's an episode of Adrian's Digital Basement in which he replaced I think four RAM cards in his SWTP 6800 machine with a single 32K RAM chip that cost five dollars. It made me laugh.
Actually I had a friend who died in 1998 and he had a 640K (not 64K) but 640K Amstrad CPC 464 he modified/upgraded it himself, it was quite a computer, it had 6 storage drives and all sorts add on parts he designed it was quite a system matching if not faster than his Amstard PC1640, he was ahead of his time he also had something to do with the Ramdrive on Amstrad but not quite sure what he was involve in)) Rip JAN.. good video! -- if i remember now its was a device he designd which he would swap memory banks.. so far back wish i could tell you more.. I think he spproached amstrad but they were not interested ah well
Wow! That's seriously hardcore. Do you know what he did with it? He must have been using it for development or running some serious business.
Although these are fun projects to build and try, they really don't have much use as you've said. Same goes for the GeoRAM expansion for the C64. I have built one, just out of curiosity, and used it a couple of times with games that can use it. By use it, I mean by the help of a 3rd party software (written many years after the games) a multiple disk game can be loaded up into the RAM expansion and can be played without constantly swapping disks. One good thing that the GeoRAM has an internal CR2032 battery backup, so what you have in it stays there as long as the battery has enough juice, which seems to be more than I anticipated, it has been almost 6 months, and it still works. That's the only sensible use of the GeoRAM. It was actually designed to be used in GeoDOS environment, but to be honest I really don't understand what that is good for on a C64.
Geos 128 v2 was much better. Georam was good for it. ramdisks are much faster.
Why don't these videos ever acknowledge the Radio Shack Color Computer? It had 64K at the same time. It was the most versatile computer I ever owned. I could plug almost anything into it directly and make things happen. I could hook it up to a shortwave radio and decode Weatherfax and Wirefoto images with the same quality as a $10,000 dedicated machine. I could hook it up to a MIDI keyboard and play multiple instruments simultaneously. It was an inexpensive wonderland. Then came the PC for way much more money, and anything you wanted to add required also adding another circuit card inside. That took away some of the fun.
Nothing against it, just that I've had very little experience with it. But you're right, it was very similar to the Dragon and I could have mentioned it there too.
I had a 6128 back in the day and I never once used the upper bank of RAM. There was simply no need since everything I ever ran on it was fine on 64Kb.
I just bought a ULIFAC II which adds 512kb memory and a USB port allowing fast read and write on any CPC!
Topic suggestion: Double 3,5 "Floppy Adapter for the CPC 464
What's not an urban legend is that the last programming Bill Gates personally did was being a co-programmer for the BASIC OS ROM in the TRS-80 model 100. They were the most robust laptops ever made; some are still in use in legacy applications.
RAM disk!!! this is the thing that makes development possible even on home 8bit computers.
There's probably enough glass in my cupboard to build an undersea aquarium.
How does the diagnostic program know to attempt to read beyond the stock 64k? Did you have to update its code? Overwrite part of the Amstrad rom?
Actually it’s possible to use z80 specifics to switch banks. Some home computers used m1 signal to detect code execution and switch banks. So it was possible to give almost 64k to cpm applications and have kinda protected mode.
The only problem there is that /M1 only goes low during the fetch cycle of the first byte of an instruction. If you're using extended instructions, for example, using the IX or IY registers, subsequent bytes DON'T have /M1 asserted.
yep, so there is a FF which latches the pages map when OS code is started to be executed in screen page for example, and the FF is being reset when other page is being executed /*after return to user page*/@@alanclarke4646
The m1 FF can be triggered not only by page access, but also a specific address, like TRDOS entry point in ZXSpectrum /*characters table in ROM address*/@@alanclarke4646
So "sleep" mode was actually invented a long time ago since that keeps a snapshot of the current RAM state and re-loads it on power resume.
I never shut down my PC, I perpetually use sleep mode.
Nice video! However, could you explain why a CPLD was necessary?
Maybe I misunderstood the IO request, but if it's present in each memory request, the logic should be pure and a PLA should be sufficient
I wonder if it would be possible to sacrifice some RAM speed and do some type of time based multiplexing to address more RAM. So each line could theoretically address 2, 4, 8 based on clock time. You'd lose RAM speed to be able to address more RAM per line. You might need more supporting logic to get it to work.
Clock 1 -- 8 lines send out the low order bits and then on clock 2 they send out the high order bits.
CLOCK 1 -- 01101101
CLOCK 2 = 11011010
ADDRESSED LOCATION = 1101101001101101 (You've doubled the number of lines by using timing)
The problem is that you cut RAM speed in half because you need to use 2 clocks to create the address instead of just 1 clock.
7:57 music is Hybrid Song by Quazar of Sanxion
how did I recognized it ? it's in a tower defense game on mobile ^^
@12:00 "the four megabytes"? Noel, what are you hiding from us? :😁
Haha, that was me mumbling "the FULL megabyte we just added"... But yes, we can go as high as 4MB actually. Some day.
01:20 - "by banking, which is almost the same as cheating" - how to have more than what one should only be able to have
Taken out of computing context, it's still true!
my first computer was a cpc 464 and ❤❤❤
basic on amstrad is a delight
I lived across the road from Datel electronics, remember them well, made some cool stuff.
I feel like that gramps from Smuckers jam saying this, but I remember when 1meg RAM seemed a little crazy.
I have the U2+ for my C64. It supports 16MB of ram (I can't comprehend that lol) But more importantly it's my disk drive. It's an all in one device. WAY better than a separate ram expansion and disk drive and tape emulator. So it sounds like that's what this computer needs.
What can you do with the extra ram? Maybe we can run a GUI or some operating system on it. Since you have the extra ram, maybe a bigger operating system will justify the use.
I have to ask how do you feel about the 7" digital microscope behind you? I'm thinking of buying one.
Absolutely loving it! Highly recommended.
The out (c),c should likely be out (c),b if you want to output the bank number in b on port c...
This, as c would go onto the address bus, and b onto the data bus.
Could you do a similar thing on a 32-bit machine? Like Windows XP machine having 8GB of RAM with the double bus technique for example?
It was actually an IBM PR person who said the 640KB quote. BTW.