nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 15 Aug 2018 12:23



Reply to topic  [ 79 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6
6502 
Author Message
Doomed
User avatar

Joined: 05 Nov 2007 06:08
Posts: 396
Location: Украина
Reply with quote
вот чего я еще узнал:
Quote:
If the processor happens to be in BCD mode when a hardware interrupt occurs it will not revert to binary mode. This characteristic could result in obscure bugs in the interrupt service routine if it fails to clear BCD mode before performing any arithmetic operations, for example, the Commodore 64's KERNAL did not correctly handle this processor characteristic, requiring that IRQs be disabled or re-vectored during BCD math operations. This issue was addressed in the CMOS derivatives as well.

т.е., как я понил, хорошим тоном перед отключением режима BCD было дизейбливание прерываний. про изменение BCD при сбросе там ничё не сказано.
++++++++++++++++++
точнее все не так... короче, тот еще проц! б3-34 со своими тригогами отдыхает :)


14 Jul 2018 14:51
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Ну то есть какая-то неуверенность у программеров присутствует, что по аппаратному RESET
процессор сам запрещает прерывания, поэтому первой командой ставят:
Code:
    SEI          ; disable IRQs

Я, правда, мучаю модель этого проца на логике 74, но заметил, что SEI влияет...

_________________
iLavr


14 Jul 2018 14:58
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Lavr wrote:
Подавляющее большинство программ для NES начинаются вот так:
Code:
        SEI          ; disable IRQs
        CLD          ; disable decimal mode

Ну, с CLD - более менее понятно:
On the 6502, a BRK instruction, an IRQ interrupt, and an NMI interrupt do not affect the D flag, and after a RESET interrupt, the D flag is undefined.
Значит D flag надо "определить"...

А вот насчет I flag - вроде как разночтения для MOS, Synertek, Rockwell, WDC 65C02, etc.
Причем разночтения вносит, как ни странно, документация от MOS: :roll:
ghaytack wrote:
It puzzled me as well not finding any mention of it in the MOS hardware manual (it's labelled Frist Edition, August 1975) as I was fully expecting to find it.
То есть, в ранней документации от MOS поведение I flag вроде как не озвучено... :-?

Поэтому рекомендуется для общности начинать программу по вектору RESET с кода SEI .
ghaytack wrote:
So it would seem that if there is any chance of the code being run on older variants of the 6502 than WDC's, it is prudent to start your reset code with SEI.

_________________
iLavr


05 Aug 2018 22:18
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
shoorick wrote:
... а люди мало того, что часто находятся в плену предрассудков, да еще и имеют свойство навязывать их другим.

Нашел я автора этого "предрассудка":
Code:
        SEI          ; disable IRQs
        CLD          ; disable decimal mode
который ещё и навязал этот "предрассудок" на долгие годы всем другим... :-?

Это был не кто иной, как Стив Возняк! :lol:

Вот стартовый код его Woz Monitor-а:
Code:
;-------------------------------------------------------------------------
;  Let's get started
;
;  Remark the RESET routine is only to be entered by asserting the RESET
;  line of the system. This ensures that the data direction registers
;  are selected.
;-------------------------------------------------------------------------
RESET:
                CLD                    ; Clear decimal arithmetic mode
                CLI
                LDY     #%0111.1111    ; Mask for DSP data direction reg
                STY     DSP            ;  (DDR mode is assumed after reset)
                LDA     #%1010.0111    ; KBD and DSP control register mask
                STA     KBDCR          ; Enable interrupts, set CA1, CB1 for
                STA     DSPCR          ;  positive edge sense/output mode.

Видимо, Стив Возняк имел на это веские причины - как никак у него был
в руках оригинальный MOS 6502 тех лет.

Это потом уже налепили всяких клонов 6502, да и "анекдотов насочиняли"... :mrgreen:

_________________
iLavr


10 Aug 2018 12:31
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 79 posts ]  Go to page Previous  1, 2, 3, 4, 5, 6

Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.