Places where LLVM will provide no benefit, and may reduce performance:
The Z80 has no CPU cache, accessing memory directly instead. Any optimizations based around increasing cache efficiency (eg. aligning sequentially-accessed data to fit in a single cache line, or re-ordering instructions to group common execution paths together) will have, at best, no ...
You need to use OpenMSX, and get the system ROMs for the machine in question. Then run OpenMSX, set the machine to the FS-A1WSX. There's a little menu button at the top left of the OpenMSX window. In there, set your tape to the WAV file. Then:
10 M$ = "E4E8O3G16G32R32G2G4R4O4C8D8E8F8G2G8F8E8F4E8D8E4D8C4"
20 PLAY M$+M$
The listing above is the content of ...
Seemingly there is an entire page dedicated to this (by the MSX wiki).
Most of the time, programmers programmed code like how they usually did with the Commodore 64 and ZX-Spectrum and completely ignored the standards made by MSX computers at the time due to the brand new concept of "home computer standard":
The main reason why we see compatibility ...
The famous poke -1,x depends on each computer's slot configuration. The general formula is poke -1,((peek(-1)xor&hff)and&hf0)*1.0625. This is copying the high nibble of the secondary slot selection register into the low nibble. And why is this necessary? Sit down and relax.
Slots in MSX1
The original 1983 specification of the MSX system allowed for ...
The first MSX, the Mitsubishi "ML-8000", was released on October 21st, 1983. Four days later, the second MSX, the Sanyo "MPC-10", was released.
As you mentioned, the earlier SpectreVideo claimed to be MSX, but wasn't:
The system most similar to the MSX was the Spectravideo SV-328 home computer (Spectravideo even claimed to be MSX compatible in ...
Z88DK is a suite of development tools for Z80 targets that includes a couple of different C compilers (one a variant of Small C and one a patched version of SDCC) and an assembly-level optimizer that is run as a post-filter on the output of these compilers. It also has a highly hand-optimized library.
They've published a set of benchmarks versus some ...
I'm not familiar with the C64, and didn't do much with the Apple ][ back in the day, but I did spend a lot of time under the hood of my TRS-80.
There wasn't a lot of room for plugin accelerators in the TRS-80 Model I. I did put in a CP/M daughtercard, which remapped system memory to get ROM out of the low address space, but didn't replace the processor.
Here are some useful resources for MSX development (disclaimer: all created by me)
MSX2 Technical Handbook: A must to learn how the internals of MSX computers work, and also a reference of MSX BIOS and MSX BASIC commands. Originally published by ASCII Corporation in paper, I converted it to text files back in the 90s and then to a GitHub repository in 2019)....
The good news is the next few steps are easy.
Most (all?) of the MSX emulators include a "virtual tape" that can open a WAV file. openMSX does for sure. It's right in the instructions for the emulator.
I don't know enough about MSX to know if it stored programs as text or in tokenized format, but in either case, once it is loaded you can use the "virtual ...
I answer myself:
At address 0xf87f (FNKSTR), at the system variables memory, there are 160 bytes where you can change the values of the 10 function keys (16 bytes each).
The strings are in ASCIIZ (zero terminated string).
; Sample code (compiled with sjasmplus)
dw start, newtext_end, start
; Change ...
i can't get an impression on how much benefit one could get on using
this approach, over what is already on old compilers.
If that were true, then old games would be developed using those old compilers, instead of hand-coded assembly. Old compilers were, mostly, very naive in terms of code optimization due to they being executing in the very same system ...
16 KB cartridge does not require any additional components, you connect OE to the /CS1, and CE to the /SLTSL signal.
32KB cartridge also does not require any additional components, you connect OE to the /CS12 signal, and CE to /SLTSL signal.
And of course all address and data pins must be connected to the bus.
All above mentioned signals are present on ...
Artemisa is a very interesting open project: creating a first-generation MSX computer from scratch.
As the author say in the repository:
"This repository contains documentation and designs for a MSX computer that can be build using discrete components and original integrated circuits, codenamed Artemisa.
This is still work in progress, but you may find ...
The main TRS-80 line (Model I, III and 4) had several third party Z-80 accelerator boards.
The Archbold board could bring the Model I up to 5.3 MHz from 1.77 MHz.
The Holmes Sprinter boosted the Model I up to 5.32 MHz. It came in a Model III version to boost it from 2.027 MHz to 5.07 MHz.
The Model 4 had several speedup board options. Incidentally, the ...
For the Amstrad PCW, there was the Sprinter card - containing an 8MHz Z80 CPU that replaced the 4MHz original, a memory expansion, and cache RAM so that the processor wasn't restricted to the speed of motherboard memory. PCWs were largely used for word processing and DTP rather than gaming; in these applications it's useful to have more memory and a faster ...
Yes, accelerators did exist - but they were usually niche products, or handled completely differently (see below).
It's more of a market-driven issue than ability to speed up.
Home computers never really had a big need for speed improvement. After all, any speed up would not only break games, but also be rather expensive, as the host system wasn't really ...
regular user of the MSX-C compiler here. MSX-C is a rebranded version of the LSI-C 80 compiler bundled with an MSX-specific library. It comes with the same limitations and benefits:
PRO: When calling functions, MSX-C passes arguments on the CPU registers instead of the stack (as SDCC or Hitech-C do). This results in a big performance improvement in programs ...
Here's a small Hello, World! in Z80 Assembly, built entirely through cross-assembly and emulation:
;; hello-msx.asm - hello world for msx - scruss
CHPUT: equ $00A2
ld hl, msg
puts: ; print 0-terminated string in HL
call CHPUT ; displays one character in A
I've found that the MSX Assembly Page has some great resources. I think their Z80 instruction set overview page and code samples are just what you're looking for.
The noob guide on MSX.org may also help you.
(I realize that this is pretty much a link-only answer. If I can, I will try to elaborate on this answer and provide additional resources.)
The 501 series only came with the bundled productivity software on tape, unlike earlier models like the HB-101P and HB-201P that had it in firmware.
The provided English software on tape is the same as the built-in
firmware on HB-101P and HB-201P. HB-501F
If you look at this description for the 101 series, for example, it states that
The firmware ...
So my question is what is the simplest circuit for building an MSX-1 16K ROM cartridge or 32K ROM cartridge (using modern easy to get components)?.
As described in this answer, there is no need for any additional circuitry (*1). This is true for up to 64 KiB (512 KiBit) in size. Only such larger as 64 KiB (often dubbed as Megabit cartridges) do need mapper ...
There were a handful of Konami games on the Famicom that had additional sound chips (VRC6, VRC7, etc.)
To start with, they weren't sound chips in first place, but mappers. And they where available as their standard version, as well as with additional sound functionality. A mapper handles various aspects of memory access from the console and maps them on ROM/...
I read through the thread pointed by a comment.
It looks like:
It doesn't use HW sprites cause of their limits. Biggest one is just one color per line.
It uses a bitmap 256*212 with 16 colors CLUT.
Software sprites are drawn with a sort of multiprocessing
The VDP cleans the background at the same time
the z80 draws the not transparent pixels
No background ...
I haven't looked at the code, but here's how I think it works: the Yamaha V9938 video chip supports 8 sprites of 16x16 full-color pixels per scanline. That's 128 pixels which is half of the screen width. But each fighter can be >64 pixels (4 sprites) wide, plus there might be a fireball on the same scanline, so you can't simply assign 3 sprites to each ...
I would reply in a more cagey fashion. It would certainly be useful to have a better C compiler for Z80 - the existing ones are not producing very good code. It is also clear that a number of people are experimenting, even with these not very good compilers, and end up creating new and useful software. Some of these software are definitely not bad. My real ...