Bit one of the Intel 8080's Flags registerLCD Displays with the Intel 8080How did the Z80 instruction set differ from the 8080?Why did Pokémon Red have so many overflow bugs?Carry flag in 8080/8085 subtractionWhy was the 8080's JumP immediate instruction placed where it was?Intel 8080 - Behaviour of the carry bit when comparing a value with 0The start of x86: Intel 8080 vs Intel 8086?Intel 8080-based home computers
Ambiguity in notation resolved by +
Why is the T-1000 humanoid?
Planar regular languages
Which is the current decimal separator?
The Planck constant for mathematicians
I asked for a graduate student position from a professor. He replied "welcome". What does that mean?
Make 2019 with single digits
What is my breathable atmosphere composed of?
What does a Light weapon mean mechanically?
How can I discourage sharing internal API keys within a company?
What is this gigantic dish at Ben Gurion airport?
How would you control supersoldiers in a late iron-age society?
Difference in using Lightning Component <lighting:badge/> and Normal DOM with slds <span class="slds-badge"></span>? Which is Better and Why?
How do certain apps show new notifications when internet access is restricted to them?
What was the ultimate objective of The Party in 1984?
Double it your way
Can I conceal an antihero's insanity - and should I?
How major are these paintwork & rust problems?
Why did it become so much more expensive to start a university?
How to stabilise the bicycle seatpost and saddle when it is all the way up?
What is the CR of a Metallic Dragon that used Change Shape?
Should you only use colons and periods in dialogues?
Why is the Digital 0 not 0V in computer systems?
Is low emotional intelligence associated with right-wing and prejudiced attitudes?
Bit one of the Intel 8080's Flags register
LCD Displays with the Intel 8080How did the Z80 instruction set differ from the 8080?Why did Pokémon Red have so many overflow bugs?Carry flag in 8080/8085 subtractionWhy was the 8080's JumP immediate instruction placed where it was?Intel 8080 - Behaviour of the carry bit when comparing a value with 0The start of x86: Intel 8080 vs Intel 8086?Intel 8080-based home computers
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
Did bit one of the Intel 8080's Flags register, the bit between the carry and parity flags, get set to one on startup? If so what was the reason for this, and was this inherited from the 8008 Flags register?
8080
New contributor
add a comment
|
Did bit one of the Intel 8080's Flags register, the bit between the carry and parity flags, get set to one on startup? If so what was the reason for this, and was this inherited from the 8008 Flags register?
8080
New contributor
add a comment
|
Did bit one of the Intel 8080's Flags register, the bit between the carry and parity flags, get set to one on startup? If so what was the reason for this, and was this inherited from the 8008 Flags register?
8080
New contributor
Did bit one of the Intel 8080's Flags register, the bit between the carry and parity flags, get set to one on startup? If so what was the reason for this, and was this inherited from the 8008 Flags register?
8080
8080
New contributor
New contributor
edited 9 hours ago
Single Malt
New contributor
asked 10 hours ago
Single MaltSingle Malt
262 bronze badges
262 bronze badges
New contributor
New contributor
add a comment
|
add a comment
|
3 Answers
3
active
oldest
votes
Did bit one of the Intel 8080's Flags register, the bit between the carry and parity flags, get set to one on startup?
TL;DR:
No, as there is no flag register on the 8080. Only separate flags. The 'filler' bits (1, 3, 5) only get their value when PUSH PSW
is executed.
Long Read:
The 8080 does not have a flag register, but like it's predecessor the 8008 separate flags. Which are, like other answers describe correct, at random state after power-up/reset.
The 8080 has no access in register form for the programmer. Only testing due conditioned instructions was possible. Setting could only be done via instructions with implied result stored in any of them. The only access as byte data was when pushed onto the stack.
When storing the flags to the stack (PUSH PSW
) the second byte is synthesized from the flag bits and completed by 'filler' values for position 1, 3, 5 (1, 0, 0). This guarantees that in memory bit 1 always will be 1.
(From "8080 Assembly Language Programming Manual", "Rev B", p.22/23)
During store (PUSH PSW
)
If register pair PSW is specified, the first byte of information
saved holds the contents of the A register; the
second byte holds the settings of the five condition bits,
i.e., Carry, Zero, Sign, Parity, and Auxiliary Carry. The format
of this byte is:
| | | |A| | | | |
|S|Z|0|C|0|P|1|C|
S State of Sign bit
Z State of Zero bit
0 always 0
AC State of auxiliary Carry bit
0 always 0
P State of Parity bit
1 always 1
C State of Carry bit
For retrieval (POP PSW
):
[...] If register pair
PSW is specified, the byte of data indicated by the contents
of the stack pointer plus one is used to restore the values of
the five condition bits (Carry, Zero, Sign, Parity, and Auxiliary
Carry) using the format described in the last section.
If so what was the reason for this, and was this inherited from the 8008 Flags register?
In part, as they were separate single bit entities. Except the 8008 did not allow any access to the flags beside testing them in conditional instructions. There was no instruction to store or retrieve them at all.
Follow Up Tidbits:
The follow up 8085 did introduce a real flag register (*1), still not in the register file, but kept separate, like the A register as well (*2). Now bit 1 was used as V flag. That's one of the incompatibilities with 8080 code - and one way to detect a 8085, by pushing a cleared HL, poping PSW, pushing PSW again and then checking L. If bit 1 is still cleared, it's an 8085.
The Z80 in contrast made the flag register (or better both, as there's one for every register set) part of its huge register file, but now, at the begin of every instruction, copied the content of the flag register in use into seperate flag flip-flops, only to be copied back at the end. Beside simplifying the storage structure a must to support two register sets, including flags.
*1 - Well, almost, as only 7 storage bits are implemented. Bit 3 was replaced by a circuitry to always drive 0 when read.
*2 - On the 8008 the A register was a normal member of the register file.
1
I voted +1 as this all sounds correct; who voted -1? "It's not set at startup because it doesn't exist" sounds like a good contribution to me.
– Tommy
8 hours ago
What is the reason bit one in memory (from PUSH PSW) was set to one? Bit one of the 8086 Flags register is also set to one.
– Single Malt
6 hours ago
@SingleMalt Well, for a definitive Answer one may have to go thru the circuitry. It may as well be due the way the data lines are layouted. Ken Shirriff might be a good source to ask here. The 8086 flag register was on purpose made to work similar to the 8080 to ease automatic program conversion.
– Raffzahn
6 hours ago
@Raffzahn definitely seems plausible to do with the circuitry. Appreciate the additional information that 8085 was the first of these to introduce a real register flag, and the link about its V flag.
– Single Malt
5 hours ago
1
So, this seems to be a Heisenberg thing: Once you start looking at it (PUSH PSW), it suddenly is different ;)
– tofro
4 hours ago
|
show 1 more comment
According to the Intel 8080 microcomputer systems user’s manual, the contents of registers are indeterminate on startup:
The contents of its
program counter, stack pointer, and the other working regis-
ters are naturally subject to random factors and cannot be
specified.
and further on
Note, however, that
the RESET has no effect on status flags, or on any of the
processor's working registers (accumulator, registers, or
stack pointer). The contents of these registers remain inde-
terminate, until initialized explicitly by the program.
2
beat me to it, and you cite the same manual ;)
– tofro
9 hours ago
add a comment
|
According to the manual, the only thing that is explicitly set after RESET in the 8080 is the program counter. Everything else is indeterminate:
Note, however,that the RESET has no effect on status flags, or on any of the processor's working registers (accumulator, registers, or stackpointer). The contents of these registers remain indeterminate, until initialized explicitly by the program.
If they don't initialize anything at all, it is very unlikely they'd initialize something that isn't even used.
I like the 'unlikely' part :)) Except, for all ever visible to programmers, they will look like initialized. Cool, isn't it?
– Raffzahn
8 hours ago
add a comment
|
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "648"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/4.0/"u003ecc by-sa 4.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
noCode: true, onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Single Malt is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fretrocomputing.stackexchange.com%2fquestions%2f12300%2fbit-one-of-the-intel-8080s-flags-register%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
Did bit one of the Intel 8080's Flags register, the bit between the carry and parity flags, get set to one on startup?
TL;DR:
No, as there is no flag register on the 8080. Only separate flags. The 'filler' bits (1, 3, 5) only get their value when PUSH PSW
is executed.
Long Read:
The 8080 does not have a flag register, but like it's predecessor the 8008 separate flags. Which are, like other answers describe correct, at random state after power-up/reset.
The 8080 has no access in register form for the programmer. Only testing due conditioned instructions was possible. Setting could only be done via instructions with implied result stored in any of them. The only access as byte data was when pushed onto the stack.
When storing the flags to the stack (PUSH PSW
) the second byte is synthesized from the flag bits and completed by 'filler' values for position 1, 3, 5 (1, 0, 0). This guarantees that in memory bit 1 always will be 1.
(From "8080 Assembly Language Programming Manual", "Rev B", p.22/23)
During store (PUSH PSW
)
If register pair PSW is specified, the first byte of information
saved holds the contents of the A register; the
second byte holds the settings of the five condition bits,
i.e., Carry, Zero, Sign, Parity, and Auxiliary Carry. The format
of this byte is:
| | | |A| | | | |
|S|Z|0|C|0|P|1|C|
S State of Sign bit
Z State of Zero bit
0 always 0
AC State of auxiliary Carry bit
0 always 0
P State of Parity bit
1 always 1
C State of Carry bit
For retrieval (POP PSW
):
[...] If register pair
PSW is specified, the byte of data indicated by the contents
of the stack pointer plus one is used to restore the values of
the five condition bits (Carry, Zero, Sign, Parity, and Auxiliary
Carry) using the format described in the last section.
If so what was the reason for this, and was this inherited from the 8008 Flags register?
In part, as they were separate single bit entities. Except the 8008 did not allow any access to the flags beside testing them in conditional instructions. There was no instruction to store or retrieve them at all.
Follow Up Tidbits:
The follow up 8085 did introduce a real flag register (*1), still not in the register file, but kept separate, like the A register as well (*2). Now bit 1 was used as V flag. That's one of the incompatibilities with 8080 code - and one way to detect a 8085, by pushing a cleared HL, poping PSW, pushing PSW again and then checking L. If bit 1 is still cleared, it's an 8085.
The Z80 in contrast made the flag register (or better both, as there's one for every register set) part of its huge register file, but now, at the begin of every instruction, copied the content of the flag register in use into seperate flag flip-flops, only to be copied back at the end. Beside simplifying the storage structure a must to support two register sets, including flags.
*1 - Well, almost, as only 7 storage bits are implemented. Bit 3 was replaced by a circuitry to always drive 0 when read.
*2 - On the 8008 the A register was a normal member of the register file.
1
I voted +1 as this all sounds correct; who voted -1? "It's not set at startup because it doesn't exist" sounds like a good contribution to me.
– Tommy
8 hours ago
What is the reason bit one in memory (from PUSH PSW) was set to one? Bit one of the 8086 Flags register is also set to one.
– Single Malt
6 hours ago
@SingleMalt Well, for a definitive Answer one may have to go thru the circuitry. It may as well be due the way the data lines are layouted. Ken Shirriff might be a good source to ask here. The 8086 flag register was on purpose made to work similar to the 8080 to ease automatic program conversion.
– Raffzahn
6 hours ago
@Raffzahn definitely seems plausible to do with the circuitry. Appreciate the additional information that 8085 was the first of these to introduce a real register flag, and the link about its V flag.
– Single Malt
5 hours ago
1
So, this seems to be a Heisenberg thing: Once you start looking at it (PUSH PSW), it suddenly is different ;)
– tofro
4 hours ago
|
show 1 more comment
Did bit one of the Intel 8080's Flags register, the bit between the carry and parity flags, get set to one on startup?
TL;DR:
No, as there is no flag register on the 8080. Only separate flags. The 'filler' bits (1, 3, 5) only get their value when PUSH PSW
is executed.
Long Read:
The 8080 does not have a flag register, but like it's predecessor the 8008 separate flags. Which are, like other answers describe correct, at random state after power-up/reset.
The 8080 has no access in register form for the programmer. Only testing due conditioned instructions was possible. Setting could only be done via instructions with implied result stored in any of them. The only access as byte data was when pushed onto the stack.
When storing the flags to the stack (PUSH PSW
) the second byte is synthesized from the flag bits and completed by 'filler' values for position 1, 3, 5 (1, 0, 0). This guarantees that in memory bit 1 always will be 1.
(From "8080 Assembly Language Programming Manual", "Rev B", p.22/23)
During store (PUSH PSW
)
If register pair PSW is specified, the first byte of information
saved holds the contents of the A register; the
second byte holds the settings of the five condition bits,
i.e., Carry, Zero, Sign, Parity, and Auxiliary Carry. The format
of this byte is:
| | | |A| | | | |
|S|Z|0|C|0|P|1|C|
S State of Sign bit
Z State of Zero bit
0 always 0
AC State of auxiliary Carry bit
0 always 0
P State of Parity bit
1 always 1
C State of Carry bit
For retrieval (POP PSW
):
[...] If register pair
PSW is specified, the byte of data indicated by the contents
of the stack pointer plus one is used to restore the values of
the five condition bits (Carry, Zero, Sign, Parity, and Auxiliary
Carry) using the format described in the last section.
If so what was the reason for this, and was this inherited from the 8008 Flags register?
In part, as they were separate single bit entities. Except the 8008 did not allow any access to the flags beside testing them in conditional instructions. There was no instruction to store or retrieve them at all.
Follow Up Tidbits:
The follow up 8085 did introduce a real flag register (*1), still not in the register file, but kept separate, like the A register as well (*2). Now bit 1 was used as V flag. That's one of the incompatibilities with 8080 code - and one way to detect a 8085, by pushing a cleared HL, poping PSW, pushing PSW again and then checking L. If bit 1 is still cleared, it's an 8085.
The Z80 in contrast made the flag register (or better both, as there's one for every register set) part of its huge register file, but now, at the begin of every instruction, copied the content of the flag register in use into seperate flag flip-flops, only to be copied back at the end. Beside simplifying the storage structure a must to support two register sets, including flags.
*1 - Well, almost, as only 7 storage bits are implemented. Bit 3 was replaced by a circuitry to always drive 0 when read.
*2 - On the 8008 the A register was a normal member of the register file.
1
I voted +1 as this all sounds correct; who voted -1? "It's not set at startup because it doesn't exist" sounds like a good contribution to me.
– Tommy
8 hours ago
What is the reason bit one in memory (from PUSH PSW) was set to one? Bit one of the 8086 Flags register is also set to one.
– Single Malt
6 hours ago
@SingleMalt Well, for a definitive Answer one may have to go thru the circuitry. It may as well be due the way the data lines are layouted. Ken Shirriff might be a good source to ask here. The 8086 flag register was on purpose made to work similar to the 8080 to ease automatic program conversion.
– Raffzahn
6 hours ago
@Raffzahn definitely seems plausible to do with the circuitry. Appreciate the additional information that 8085 was the first of these to introduce a real register flag, and the link about its V flag.
– Single Malt
5 hours ago
1
So, this seems to be a Heisenberg thing: Once you start looking at it (PUSH PSW), it suddenly is different ;)
– tofro
4 hours ago
|
show 1 more comment
Did bit one of the Intel 8080's Flags register, the bit between the carry and parity flags, get set to one on startup?
TL;DR:
No, as there is no flag register on the 8080. Only separate flags. The 'filler' bits (1, 3, 5) only get their value when PUSH PSW
is executed.
Long Read:
The 8080 does not have a flag register, but like it's predecessor the 8008 separate flags. Which are, like other answers describe correct, at random state after power-up/reset.
The 8080 has no access in register form for the programmer. Only testing due conditioned instructions was possible. Setting could only be done via instructions with implied result stored in any of them. The only access as byte data was when pushed onto the stack.
When storing the flags to the stack (PUSH PSW
) the second byte is synthesized from the flag bits and completed by 'filler' values for position 1, 3, 5 (1, 0, 0). This guarantees that in memory bit 1 always will be 1.
(From "8080 Assembly Language Programming Manual", "Rev B", p.22/23)
During store (PUSH PSW
)
If register pair PSW is specified, the first byte of information
saved holds the contents of the A register; the
second byte holds the settings of the five condition bits,
i.e., Carry, Zero, Sign, Parity, and Auxiliary Carry. The format
of this byte is:
| | | |A| | | | |
|S|Z|0|C|0|P|1|C|
S State of Sign bit
Z State of Zero bit
0 always 0
AC State of auxiliary Carry bit
0 always 0
P State of Parity bit
1 always 1
C State of Carry bit
For retrieval (POP PSW
):
[...] If register pair
PSW is specified, the byte of data indicated by the contents
of the stack pointer plus one is used to restore the values of
the five condition bits (Carry, Zero, Sign, Parity, and Auxiliary
Carry) using the format described in the last section.
If so what was the reason for this, and was this inherited from the 8008 Flags register?
In part, as they were separate single bit entities. Except the 8008 did not allow any access to the flags beside testing them in conditional instructions. There was no instruction to store or retrieve them at all.
Follow Up Tidbits:
The follow up 8085 did introduce a real flag register (*1), still not in the register file, but kept separate, like the A register as well (*2). Now bit 1 was used as V flag. That's one of the incompatibilities with 8080 code - and one way to detect a 8085, by pushing a cleared HL, poping PSW, pushing PSW again and then checking L. If bit 1 is still cleared, it's an 8085.
The Z80 in contrast made the flag register (or better both, as there's one for every register set) part of its huge register file, but now, at the begin of every instruction, copied the content of the flag register in use into seperate flag flip-flops, only to be copied back at the end. Beside simplifying the storage structure a must to support two register sets, including flags.
*1 - Well, almost, as only 7 storage bits are implemented. Bit 3 was replaced by a circuitry to always drive 0 when read.
*2 - On the 8008 the A register was a normal member of the register file.
Did bit one of the Intel 8080's Flags register, the bit between the carry and parity flags, get set to one on startup?
TL;DR:
No, as there is no flag register on the 8080. Only separate flags. The 'filler' bits (1, 3, 5) only get their value when PUSH PSW
is executed.
Long Read:
The 8080 does not have a flag register, but like it's predecessor the 8008 separate flags. Which are, like other answers describe correct, at random state after power-up/reset.
The 8080 has no access in register form for the programmer. Only testing due conditioned instructions was possible. Setting could only be done via instructions with implied result stored in any of them. The only access as byte data was when pushed onto the stack.
When storing the flags to the stack (PUSH PSW
) the second byte is synthesized from the flag bits and completed by 'filler' values for position 1, 3, 5 (1, 0, 0). This guarantees that in memory bit 1 always will be 1.
(From "8080 Assembly Language Programming Manual", "Rev B", p.22/23)
During store (PUSH PSW
)
If register pair PSW is specified, the first byte of information
saved holds the contents of the A register; the
second byte holds the settings of the five condition bits,
i.e., Carry, Zero, Sign, Parity, and Auxiliary Carry. The format
of this byte is:
| | | |A| | | | |
|S|Z|0|C|0|P|1|C|
S State of Sign bit
Z State of Zero bit
0 always 0
AC State of auxiliary Carry bit
0 always 0
P State of Parity bit
1 always 1
C State of Carry bit
For retrieval (POP PSW
):
[...] If register pair
PSW is specified, the byte of data indicated by the contents
of the stack pointer plus one is used to restore the values of
the five condition bits (Carry, Zero, Sign, Parity, and Auxiliary
Carry) using the format described in the last section.
If so what was the reason for this, and was this inherited from the 8008 Flags register?
In part, as they were separate single bit entities. Except the 8008 did not allow any access to the flags beside testing them in conditional instructions. There was no instruction to store or retrieve them at all.
Follow Up Tidbits:
The follow up 8085 did introduce a real flag register (*1), still not in the register file, but kept separate, like the A register as well (*2). Now bit 1 was used as V flag. That's one of the incompatibilities with 8080 code - and one way to detect a 8085, by pushing a cleared HL, poping PSW, pushing PSW again and then checking L. If bit 1 is still cleared, it's an 8085.
The Z80 in contrast made the flag register (or better both, as there's one for every register set) part of its huge register file, but now, at the begin of every instruction, copied the content of the flag register in use into seperate flag flip-flops, only to be copied back at the end. Beside simplifying the storage structure a must to support two register sets, including flags.
*1 - Well, almost, as only 7 storage bits are implemented. Bit 3 was replaced by a circuitry to always drive 0 when read.
*2 - On the 8008 the A register was a normal member of the register file.
edited 5 hours ago
answered 8 hours ago
RaffzahnRaffzahn
70.1k7 gold badges176 silver badges292 bronze badges
70.1k7 gold badges176 silver badges292 bronze badges
1
I voted +1 as this all sounds correct; who voted -1? "It's not set at startup because it doesn't exist" sounds like a good contribution to me.
– Tommy
8 hours ago
What is the reason bit one in memory (from PUSH PSW) was set to one? Bit one of the 8086 Flags register is also set to one.
– Single Malt
6 hours ago
@SingleMalt Well, for a definitive Answer one may have to go thru the circuitry. It may as well be due the way the data lines are layouted. Ken Shirriff might be a good source to ask here. The 8086 flag register was on purpose made to work similar to the 8080 to ease automatic program conversion.
– Raffzahn
6 hours ago
@Raffzahn definitely seems plausible to do with the circuitry. Appreciate the additional information that 8085 was the first of these to introduce a real register flag, and the link about its V flag.
– Single Malt
5 hours ago
1
So, this seems to be a Heisenberg thing: Once you start looking at it (PUSH PSW), it suddenly is different ;)
– tofro
4 hours ago
|
show 1 more comment
1
I voted +1 as this all sounds correct; who voted -1? "It's not set at startup because it doesn't exist" sounds like a good contribution to me.
– Tommy
8 hours ago
What is the reason bit one in memory (from PUSH PSW) was set to one? Bit one of the 8086 Flags register is also set to one.
– Single Malt
6 hours ago
@SingleMalt Well, for a definitive Answer one may have to go thru the circuitry. It may as well be due the way the data lines are layouted. Ken Shirriff might be a good source to ask here. The 8086 flag register was on purpose made to work similar to the 8080 to ease automatic program conversion.
– Raffzahn
6 hours ago
@Raffzahn definitely seems plausible to do with the circuitry. Appreciate the additional information that 8085 was the first of these to introduce a real register flag, and the link about its V flag.
– Single Malt
5 hours ago
1
So, this seems to be a Heisenberg thing: Once you start looking at it (PUSH PSW), it suddenly is different ;)
– tofro
4 hours ago
1
1
I voted +1 as this all sounds correct; who voted -1? "It's not set at startup because it doesn't exist" sounds like a good contribution to me.
– Tommy
8 hours ago
I voted +1 as this all sounds correct; who voted -1? "It's not set at startup because it doesn't exist" sounds like a good contribution to me.
– Tommy
8 hours ago
What is the reason bit one in memory (from PUSH PSW) was set to one? Bit one of the 8086 Flags register is also set to one.
– Single Malt
6 hours ago
What is the reason bit one in memory (from PUSH PSW) was set to one? Bit one of the 8086 Flags register is also set to one.
– Single Malt
6 hours ago
@SingleMalt Well, for a definitive Answer one may have to go thru the circuitry. It may as well be due the way the data lines are layouted. Ken Shirriff might be a good source to ask here. The 8086 flag register was on purpose made to work similar to the 8080 to ease automatic program conversion.
– Raffzahn
6 hours ago
@SingleMalt Well, for a definitive Answer one may have to go thru the circuitry. It may as well be due the way the data lines are layouted. Ken Shirriff might be a good source to ask here. The 8086 flag register was on purpose made to work similar to the 8080 to ease automatic program conversion.
– Raffzahn
6 hours ago
@Raffzahn definitely seems plausible to do with the circuitry. Appreciate the additional information that 8085 was the first of these to introduce a real register flag, and the link about its V flag.
– Single Malt
5 hours ago
@Raffzahn definitely seems plausible to do with the circuitry. Appreciate the additional information that 8085 was the first of these to introduce a real register flag, and the link about its V flag.
– Single Malt
5 hours ago
1
1
So, this seems to be a Heisenberg thing: Once you start looking at it (PUSH PSW), it suddenly is different ;)
– tofro
4 hours ago
So, this seems to be a Heisenberg thing: Once you start looking at it (PUSH PSW), it suddenly is different ;)
– tofro
4 hours ago
|
show 1 more comment
According to the Intel 8080 microcomputer systems user’s manual, the contents of registers are indeterminate on startup:
The contents of its
program counter, stack pointer, and the other working regis-
ters are naturally subject to random factors and cannot be
specified.
and further on
Note, however, that
the RESET has no effect on status flags, or on any of the
processor's working registers (accumulator, registers, or
stack pointer). The contents of these registers remain inde-
terminate, until initialized explicitly by the program.
2
beat me to it, and you cite the same manual ;)
– tofro
9 hours ago
add a comment
|
According to the Intel 8080 microcomputer systems user’s manual, the contents of registers are indeterminate on startup:
The contents of its
program counter, stack pointer, and the other working regis-
ters are naturally subject to random factors and cannot be
specified.
and further on
Note, however, that
the RESET has no effect on status flags, or on any of the
processor's working registers (accumulator, registers, or
stack pointer). The contents of these registers remain inde-
terminate, until initialized explicitly by the program.
2
beat me to it, and you cite the same manual ;)
– tofro
9 hours ago
add a comment
|
According to the Intel 8080 microcomputer systems user’s manual, the contents of registers are indeterminate on startup:
The contents of its
program counter, stack pointer, and the other working regis-
ters are naturally subject to random factors and cannot be
specified.
and further on
Note, however, that
the RESET has no effect on status flags, or on any of the
processor's working registers (accumulator, registers, or
stack pointer). The contents of these registers remain inde-
terminate, until initialized explicitly by the program.
According to the Intel 8080 microcomputer systems user’s manual, the contents of registers are indeterminate on startup:
The contents of its
program counter, stack pointer, and the other working regis-
ters are naturally subject to random factors and cannot be
specified.
and further on
Note, however, that
the RESET has no effect on status flags, or on any of the
processor's working registers (accumulator, registers, or
stack pointer). The contents of these registers remain inde-
terminate, until initialized explicitly by the program.
answered 9 hours ago
Stephen KittStephen Kitt
50.1k9 gold badges206 silver badges208 bronze badges
50.1k9 gold badges206 silver badges208 bronze badges
2
beat me to it, and you cite the same manual ;)
– tofro
9 hours ago
add a comment
|
2
beat me to it, and you cite the same manual ;)
– tofro
9 hours ago
2
2
beat me to it, and you cite the same manual ;)
– tofro
9 hours ago
beat me to it, and you cite the same manual ;)
– tofro
9 hours ago
add a comment
|
According to the manual, the only thing that is explicitly set after RESET in the 8080 is the program counter. Everything else is indeterminate:
Note, however,that the RESET has no effect on status flags, or on any of the processor's working registers (accumulator, registers, or stackpointer). The contents of these registers remain indeterminate, until initialized explicitly by the program.
If they don't initialize anything at all, it is very unlikely they'd initialize something that isn't even used.
I like the 'unlikely' part :)) Except, for all ever visible to programmers, they will look like initialized. Cool, isn't it?
– Raffzahn
8 hours ago
add a comment
|
According to the manual, the only thing that is explicitly set after RESET in the 8080 is the program counter. Everything else is indeterminate:
Note, however,that the RESET has no effect on status flags, or on any of the processor's working registers (accumulator, registers, or stackpointer). The contents of these registers remain indeterminate, until initialized explicitly by the program.
If they don't initialize anything at all, it is very unlikely they'd initialize something that isn't even used.
I like the 'unlikely' part :)) Except, for all ever visible to programmers, they will look like initialized. Cool, isn't it?
– Raffzahn
8 hours ago
add a comment
|
According to the manual, the only thing that is explicitly set after RESET in the 8080 is the program counter. Everything else is indeterminate:
Note, however,that the RESET has no effect on status flags, or on any of the processor's working registers (accumulator, registers, or stackpointer). The contents of these registers remain indeterminate, until initialized explicitly by the program.
If they don't initialize anything at all, it is very unlikely they'd initialize something that isn't even used.
According to the manual, the only thing that is explicitly set after RESET in the 8080 is the program counter. Everything else is indeterminate:
Note, however,that the RESET has no effect on status flags, or on any of the processor's working registers (accumulator, registers, or stackpointer). The contents of these registers remain indeterminate, until initialized explicitly by the program.
If they don't initialize anything at all, it is very unlikely they'd initialize something that isn't even used.
edited 1 hour ago
Cody Gray
1,1866 silver badges21 bronze badges
1,1866 silver badges21 bronze badges
answered 9 hours ago
tofrotofro
18.2k3 gold badges38 silver badges101 bronze badges
18.2k3 gold badges38 silver badges101 bronze badges
I like the 'unlikely' part :)) Except, for all ever visible to programmers, they will look like initialized. Cool, isn't it?
– Raffzahn
8 hours ago
add a comment
|
I like the 'unlikely' part :)) Except, for all ever visible to programmers, they will look like initialized. Cool, isn't it?
– Raffzahn
8 hours ago
I like the 'unlikely' part :)) Except, for all ever visible to programmers, they will look like initialized. Cool, isn't it?
– Raffzahn
8 hours ago
I like the 'unlikely' part :)) Except, for all ever visible to programmers, they will look like initialized. Cool, isn't it?
– Raffzahn
8 hours ago
add a comment
|
Single Malt is a new contributor. Be nice, and check out our Code of Conduct.
Single Malt is a new contributor. Be nice, and check out our Code of Conduct.
Single Malt is a new contributor. Be nice, and check out our Code of Conduct.
Single Malt is a new contributor. Be nice, and check out our Code of Conduct.
Thanks for contributing an answer to Retrocomputing Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fretrocomputing.stackexchange.com%2fquestions%2f12300%2fbit-one-of-the-intel-8080s-flags-register%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown