According to this CPCTech entry:
In the CPC the Gate Array generates maskable interrupts, to do this it uses the HSYNC and VSYNC signals from the CRTC, a 6-bit internal counter and monitors the interrupt acknowledge from the Z80.
When [counter conditions are met] the Gate-Array will issue a interrupt request to the Z80, the interrupt request remains ...
but I can't find any explicit documentation.
The documentation for the Z80 behaviour is in its manual. For the way the CPC hardware handles it, you may need to see these circuits. It may, for example hold an IRQ until it is accepted.
but what happens in the case of the prefix? Is the interrupt acknowledged after the next instruction has been executed?
Yes. Speed must be 150ns or faster, technology should be NMOS (CMOS produces too sharp edges that may cause ringing, due to non equalized traces in the PCB, so they may or may not work) and must support 7 bit (128 rows) refresh mode.
Not that I know.
Which are the "standard factory modifications"? The only one I know of is that weird capacitor connected to ...
CPC Machines were powered by 5v DC from monitor to the 2.1mm socket on the machine. Any power supply that meets these requirements with the correct polarity should work. The plug has one outer and one inner contact. The outer contact is 0V, and the inner contact is 5V.
However, disc models also needed a separate 12v for the drive. This is the curly wire ...
As I was expecting, it was an error in my code :) pelrun was very kind and found the bug (see my question on CPCWiki's forum) so props to him.
I'll try to explain the issue:
Notice I'm hooking into the jump entry by setting up a FAR CALL. Notice how that's a FAR CALL and not a JUMP? There's an extra return address there that shouldn't be pushed into the ...
As far as I know, no /INT is remembered as it is purely level-triggered, as @Raffzahn noted. So losing interrupts in your conditions is just expected.
Same design is in ZX Spectrum, with probably a longer pulse. Some ZX clones are even capable of catching interrupt several times when the interrupt routine is as simple as EI:RET.
EI disables interrupt ...
Three jump direct to mind:
Schneider Euro-PC and Euro-PC II
Vendex Headstart Explorer
Laser Compact XT by VTech (thanks mnem)
Not to mention the WEB-IT, a 486 based as an all in one unit, introduced as late as 1998.
Short answer from memory:
At the beginning of a frame the address is set to zero
The address is incremented over a line for R0 (total chars aka horizontal timing) character access cycles.
Only R1 (displayed characters) are visible.
The address is reset after R0 character access cycles.
Then the scan line counter is incremented
When the scan line counter ...
Nemesis' Bonzo Doo Dah and Richard Monteiro's FastForm/BigK in Amstrad Action Issue 16 gave somewhere between 203 – 206 K per side, leaving one or two standard tracks for a small boot stub to load up the custom disk parameters.
Both of these hit all three of your parameters: all they did was modify some settings held in RAM. I was a dedicated user of Bonzo ...
. how do I get in todays infrastructure a *.dsk program on a 3" disk, when the disk drive itself is currently being refurbished.
I sense a basic plot hole: Even if you would get it on a disk (*1), how to start it from that disk if the drive is not operational?
Puting that aside, a proper way would be loading (only) the program needed via cassette port, ...
There was the Schneider Euro PC. Schneider had been selling Amstrad computers (the CPC line, the PC 1512/1640, and the Joyce) in Germany. The Euro PC in 1989 was their first attempt at an own design, doubtless inspired by the success of the Amiga 500 and the Atari 520/1040 ST.
Under CP/M, the program start address in Mallard BASIC differs by version. I'm not aware of any fixed location that can be interrogated to find it; however, it may be possible to determine it by searching for a known piece of code that references the stored program.
In at least versions 1.29-1.48, SAVE writes out a magic number FC 04 at the start of the ...
The Locomotive BASIC is a bit of an oddity as the start of the BASIC area is hardcoded to 0170h (for the CPCs) and no indirection via a pointer is given. Then again, location AE26h (*1) is checked when a program is LOADed, and usually contained $0170.
In general using RAM addresses is model-dependent as they got reshuffled every time. A good primary source ...
With a bit of googling: http://www.cpcwiki.eu/forum/amstrad-cpc-hardware/memory-map/ (information is not very widespread, I could not find any confirmation somewhere else)
Basic starts at &170 and grows up to HIMEM. HIMEM is set around &b0ff for 464, but lower for other systems with extra roms attached because roms can reserve some ram if they ...
I don't remember them having a “name”. Disk interchangeability was less of a thing than it became between 16-bit computers. Amstrads were very much not interchangeable, since they had the Hitachi 3" drives, used by Tatung (UK) and very few others. Even the PCW9512+ with its 720 K 3½" drive used a format derived from the earlier CPC disks.
The format is CP/M*...
It’s just nomenclature for 40-track (‘single’) versus 80-track (‘double’) drives.
It’s not 3”-specific, e.g. here is a reference using the same terminology for 5.25” drives; 3” drives don’t do anything differently from 3.5” or 5.25” drives, and use regular Shugart signalling.
The original PCWs, the CPC and the Spectrum all used 40-track drives; later PCWs ...
In Locomotive Basic the program is stored after the end of the ROM lower reserved area. There is a pointer to that, AE64hex on the 6128, AE81hex in the 464, according to the firmware guide. It's value is usually 016Fhex, so the Basic starts in the next position, at 170hex.
Usually other ROMs initialization don't reserve a lower area, and so the start is ...
I had (though have since sold) a Key-Comp 386 similar to the one pictured at atariage.com. It had two ISA slots (for video and network cards) at the left-hand end of the case, and built-in parallel and serial ports.
I have a "Gotek USB floppy emulator" in my CPC6128 (with ParaDOS and the 3.5" FDD interface mod). It has the same connector as the floppy drive and the USB connector for the USB Flash Drive. You just copy the .dsk file to this USB Flash (under the specific name, see the manual), plug it into the Gotek, and voila, it works like the floppy drive!...
The easiest (and my recommended) way:
Get an M4 board. This expansion allows to push .dsk images to an SD card connected to your CPC via a simple Web browser and Wi-Fi interface. From there, you could easily transfer the contents of the disk to a real 3" disk (if you still want that)
Other ways are
Disk transfer - This obviously needs a 3" floppy ...
This is not yet a complete and verified answer, because I haven't tested it on real hardware.
There is a utility by CNGSoft called '2H' (written in 2013) which claims a capacity of 208K, using 41 tracks of 10 sectors each.
I found this on the CPCWiki forum and a dsk image of the tool on CPC-Power.
The horizontal counter increments continuously with the CRTC clock, and the vertical counter (divided into a pixel row counter and a text line counter) increments continuously with the horizontal sync pulse. The blanking and sync signals are toggled, and the counters are reset, when these counters exactly match values set in configuration registers.
The Amstrad CPC manual (chapter 7 part 12) listed three "disk formats" supported by AMSDOS, which it named "System", "Data only" and "IBM" (CP/M 2.2 only).
All three of these formats had:
64 directory entries
512 bytes per sector, no matter the track.
And the format-specific characteristics:
System had 9 sectors per track, two reserved tracks ...
It seems there is.
There is an open source C library by John Elliot for working with a selection of disks and disk image formats called LibDsk, active as of August 2019. Among the supported formats it includes
.DSK files, as used in CPCEMU, JOYCE and other Sinclair/Amstrad emulators.
The JOYCE emulator mentioned is by the same author.
The author added ...