Skip to main content

Indeed they were intended for fast interrupt reaction. In a simple, general way, this saved the time to push the main process'process's registers onto the stack and restore them again. They seveneven went so far to spend one of the very few available single byte-byte opcodes to get the absolute minimum execution time - likeas the Z80 Technical Manual states on p.26:

OP code 08H allows the programmer to switch between the two pairs of 
accumulator flag registers while D9H allows the programmer to switch between 
the duplicate set of six general purpose registers. These OP codes are only one 
byte in length to absolutely minimize the time necessary to perform the 
exchange so that the duplicate banks can be used to effect very fast interrupt 
response times.

OP code 08H allows the programmer to switch between the two pairs of accumulator flag registers while D9H allows the programmer to switch between the duplicate set of six general purpose registers. These OP codes are only one byte in length to absolutely minimize the time necessary to perform the exchange so that the duplicate banks can be used to effect very fast interrupt response times.

EX and EXX only take 4 T-cycles, while even just pushing a simple 16-bit register would take 11 cycles, plus another 15 to load it again. 8 T-cycles instead of 25 or more cycles is a considerably faster reaction, isn't it?

That's also why there are two EX* instructioninstructions, as very simple routines may only (use and) need to preserve the flags and A. This leaves the whole second set (except AF) for other purposes. Like, such as being used in normal software, or for even more speedup in I/O.

If these values are placed in the second register set before the high speed interrupt driven-driven routine gets active, no loads and stores are to be executed. Interrupt service time gets reduced to the absolute minimum, not only causing less interruption of the main process but also working up to higher speeds.

It was quite common to use them either for interruptinterrupts (mostly in embedded systems) or 'dead end' routines.

Indeed they were intended for fast interrupt reaction. In a simple, general way, this saved the time to push the main process' registers onto the stack and restore them again. They seven went so far to spend one of the very few available single byte opcodes to get the absolute minimum execution time - like the Z80 Technical Manual states on p.26:

OP code 08H allows the programmer to switch between the two pairs of 
accumulator flag registers while D9H allows the programmer to switch between 
the duplicate set of six general purpose registers. These OP codes are only one 
byte in length to absolutely minimize the time necessary to perform the 
exchange so that the duplicate banks can be used to effect very fast interrupt 
response times.

EX and EXX only take 4 T-cycles, while even just pushing a simple 16-bit register would take 11 cycles plus another 15 to load it again. 8 T-cycles instead of 25 or more cycles is a considerably faster reaction, isn't it?

That's also why there are two EX* instruction, as very simple routines may only (use and) need to preserve the flags and A. This leaves the whole second set (except AF) for other purposes. Like being used in normal software, or for even more speedup in I/O.

If these values are placed in the second register set before the high speed interrupt driven routine gets active, no loads and stores are to be executed. Interrupt service time gets reduced to the absolute minimum, not only causing less interruption of the main process but also working up to higher speeds.

It was quite common to use them either for interrupt (mostly in embedded systems) or 'dead end' routines.

Indeed they were intended for fast interrupt reaction. In a simple, general way, this saved the time to push the main process's registers onto the stack and restore them again. They even went so far to spend one of the very few available single-byte opcodes to get the absolute minimum execution time - as the Z80 Technical Manual states on p.26:

OP code 08H allows the programmer to switch between the two pairs of accumulator flag registers while D9H allows the programmer to switch between the duplicate set of six general purpose registers. These OP codes are only one byte in length to absolutely minimize the time necessary to perform the exchange so that the duplicate banks can be used to effect very fast interrupt response times.

EX and EXX only take 4 T-cycles, while even just pushing a simple 16-bit register would take 11 cycles, plus another 15 to load it again. 8 T-cycles instead of 25 or more cycles is a considerably faster reaction, isn't it?

That's also why there are two EX* instructions, as very simple routines may only (use and) need to preserve the flags and A. This leaves the whole second set (except AF) for other purposes, such as being used in normal software, or for even more speedup in I/O.

If these values are placed in the second register set before the high speed interrupt-driven routine gets active, no loads and stores are to be executed. Interrupt service time gets reduced to the absolute minimum, not only causing less interruption of the main process but also working up to higher speeds.

It was quite common to use them either for interrupts (mostly in embedded systems) or 'dead end' routines.

added 44 characters in body
Source Link
Raffzahn
  • 236.1k
  • 23
  • 682
  • 976

Indeed they were intended for fast interrupt reaction. In a simple, general way, this saved the time to push the main process' registers onto the stack and restore them again. theyThey seven went so far to spend one of the very few available single byte opcodes to do so to get the absolute minimum execution time - like the Z80 Technical Manual states on p.26:

After all, theThe Z80 design was mainlyquite focused on a more flexible, configurable and faster interrupt handling than the 8080.

Indeed they were intended for fast interrupt reaction. In a simple, general way, this saved the time to push the main process' registers onto the stack and restore them again. they spend single byte opcodes to do so to get the absolute minimum execution time - like the Z80 Technical Manual states on p.26:

After all, the Z80 design was mainly focused on a more flexible, configurable and faster interrupt handling.

Indeed they were intended for fast interrupt reaction. In a simple, general way, this saved the time to push the main process' registers onto the stack and restore them again. They seven went so far to spend one of the very few available single byte opcodes to get the absolute minimum execution time - like the Z80 Technical Manual states on p.26:

The Z80 design was quite focused on a more flexible, configurable and faster interrupt handling than the 8080.

Quoting isused for OP text, so citation must be done by code.
Source Link
Raffzahn
  • 236.1k
  • 23
  • 682
  • 976

OP code 08H allows the programmer to switch between the two pairs of accumulator flag registers while D9H allows the programmer to switch between the duplicate set of six general purpose registers. These OP codes are only one byte in length to absolutely minimize the time necessary to perform the exchange so that the duplicate banks can be used to effect very fast interrupt response times.

OP code 08H allows the programmer to switch between the two pairs of 
accumulator flag registers while D9H allows the programmer to switch between 
the duplicate set of six general purpose registers. These OP codes are only one 
byte in length to absolutely minimize the time necessary to perform the 
exchange so that the duplicate banks can be used to effect very fast interrupt 
response times.

OP code 08H allows the programmer to switch between the two pairs of accumulator flag registers while D9H allows the programmer to switch between the duplicate set of six general purpose registers. These OP codes are only one byte in length to absolutely minimize the time necessary to perform the exchange so that the duplicate banks can be used to effect very fast interrupt response times.

OP code 08H allows the programmer to switch between the two pairs of 
accumulator flag registers while D9H allows the programmer to switch between 
the duplicate set of six general purpose registers. These OP codes are only one 
byte in length to absolutely minimize the time necessary to perform the 
exchange so that the duplicate banks can be used to effect very fast interrupt 
response times.
deleted 18 characters in body
Source Link
tofro
  • 37k
  • 4
  • 94
  • 183
Loading
Source Link
Raffzahn
  • 236.1k
  • 23
  • 682
  • 976
Loading