26

Re: Поддельные W65C02 на "Али"

Хорошо, что я не делаю так, как "кажется"...

27

Re: Поддельные W65C02 на "Али"

Думаешь они будут вникать в работу агрегата на видео? Им главное, чтобы хоть какую-нибудь "мультимедию" приложили. Когда мне не прислали разъемы, я отослал фото пустого стола и этого было достаточно. А до этого требовали доказательства.

28

Re: Поддельные W65C02 на "Али"

Думаю, что я не первый год делаю заказы на "Али", думаю, что у меня уже прошёл не один десяток споров и думаю, что накопил определённый опыт в этом плане. Фото пустого стола "прокатило" - прекрасно, только стоит подумать, что кто-то это может воспринять, как совет опытного "спорщика" с последующей "благодарностью" к Вам по результатам. И, кроме того, я видео выложил не для того, чтобы критиковать мои методы предоставления доказательств в спорах на "Али" (поверьте, мне от комментариев по ним ни жарко ни холодно), а чтобы показать процесс проверки процессора на стенде - вдруг да кому пригодится.

29

Re: Поддельные W65C02 на "Али"

Это не критика методов ведения споров для али, просто фраза "Снял для спора на "Али", звучала неправдоподобно, а "чтобы показать процесс проверки процессора на стенде - вдруг да кому пригодится" более искренне. "только стоит подумать, что кто-то это может воспринять, как совет опытного "спорщика" с последующей "благодарностью" к Вам по результатам." Эту фразу вообще не понял, ну да ладно, предлагаю флуд прекратить, по теме также заказал процессоры на али, правда по какой-то причине на таможне застряли, первый раз экспресс доставку попробовал и уже месяц висит. Если вдруг дойдут, могу проверить на какой частоте работают, а там вдруг и ваша методика пригодится, с последующей благодарностью:) Судя по отзывам приходят с каких-то разборок и там как повезет.

30

Re: Поддельные W65C02 на "Али"

Получил ещё два заказа по два W65C816. По одному заказу - сразу спор, оба процессора явно перемаркированы. А два других ведут себя странно, как вели себя процессоры, полученные ранее. При питании от 3,3В один процессор работает максимум на 1МГц, второй - на 2МГц. Честный W65C816 при питании 3,3В уверенно работает до 12МГц, т.е. заявленные 8МГц отрабатывает однозначно. Сейчас мне подумалось - может, это перемаркированные 65С02, рассчитанные на 5В, но кое-как работающие на 3.3В? Кто-нибудь пробовал запускать CMOS 65C02 от 3,3В? К сожалению, программа, которую я использую для теста (EHBASIC) не содержит кодов для 816-го, поэтому тестирую в режиме совместимости. Наверное, нужно написать тест, использующий особенности 65С816 и, если он откажется работать, значит, процессор явно другой...

31 Отредактировано LeoN (06-03-2021 00:02)

Re: Поддельные W65C02 на "Али"

AlexBel пишет:

Сейчас мне подумалось - может, это перемаркированные 65С02, рассчитанные на 5В, но кое-как работающие на 3.3В? Кто-нибудь пробовал запускать CMOS 65C02 от 3,3В?

Вполне возможно и так... Только WDC-ишные чипы умеют в широком диапазоне питания. Остальные КМОПы заявлены на питание 5В+-5%.

AlexBel пишет:

Наверное, нужно написать тест, использующий особенности 65С816 и, если он откажется работать, значит, процессор явно другой...

Два варианта:

1. ЦПУ детект.
; ---------------------------------------------------------------------------
; Subroutine to detect an 816. Returns
;
;   - carry clear and 0 in A for a NMOS 6502 CPU
;   - carry set and 1 in A for CMOS 6502 CPUs
;   - carry set and 2 in A for a 65816
;
; This function uses a $1A opcode which is a INA on the 816 and C02, and
; ignored (interpreted as a NOP) on a NMOS 6502. Detection of the 65816 is
; done by the xba instruction which is a NOP on the 65C02s.

GetCPU:    lda    #0
          inc    a              ; .byte $1a
          cmp    #1
           bcc        @L9

; This is at least a 65C02, check for a 65816

          xba                ; .byte $eb, put $01 in B accu
          dec    a             ; .byte $3a, A=$00 if 65C02
           xba                              ; .byte $eb, get $01 back if 65816
           inc        a                     ; .byte $1a, make $01/$02
@L9:    rts

--
Ullrich von Bassewitz                                  uz@musoftware.de
2. Тестилка скорострельности с использованием инструкции блочной пересылки от 816. Объектник для записи в ПЗУ вместо сисмона прилагается.
zp00    =       $00
zp02    =       $02
zp04    =       $04

zp10    =       $10

Tick    =       $80

Pos     =       $90

Screen  =       $4000
SizeOfScreen    = $4000

NMI_On  =       $C040
NMI_Off =       $C020


        .ba     $F800

        .cpu    65816

Reset
        sei
        cld
        ldx     #$FF
        txs
        sta     $C100
        sta     $C111
        sta     $C122
        sta     $C133
        sta     $C144
        sta     $C058
        sta     $C05A


Main
        bit     NMI_Off
        ldx     #0
        lda     #" "
-       sta     $800,x
        sta     $900,x
        sta     $A00,x
        sta     $B00,x
        sta     $C00,x
        sta     $D00,x
        sta     $E00,x
        sta     $F00,x
        inx
        bne     -
        sta     $C786

        stz     zp10
        lda     #$A
        sta     zp10+1
        ldx     #0
        stx     Pos
-       lda     Mes1,x
        beq     +
        jsr     Send
        inx
        bra     -
+

        stz     zp10
        lda     #$C
        sta     zp10+1
        ldx     #0
        stx     Pos
-       lda     Mes2,x
        beq     +
        jsr     Send
        inx
        bra     -
+

        jsr     Delay5s

;       65816 MVN

        sta     $C720
        clc
        xce
        rep     #$30
        .al
        .rl

        lda     #$FFFE
        sta     Tick
-
        lda     Tick
        bne     -

        lda     #64
        sta     zp04
-
        lda     zp04
        and     #3
        tax
        lda     ColorTable,x
        sta     Screen
        ldx     #Screen
        ldy     #Screen+1
        lda     #SizeOfScreen-2
        mvn     0,0
        dec     zp04
        bne     -

        bit     NMI_Off
        sec
        xce
        .as
        .rs

        sta     $C786

        lda     Tick+1
        jsr     PrintTwoDigits
        lda     Tick
        jsr     PrintTwoDigits


        stz     zp10
        lda     #$D
        sta     zp10+1
        ldx     #0
        stx     Pos
-       lda     Mes3,x
        beq     +
        jsr     Send
        inx
        bra     -
+
        jsr     Delay5s


;       6502 MoveMemory

        sta     $C720

        lda     #$FF
        sta     Tick+1
        lda     #$FE
        sta     Tick
-
        lda     Tick
        bne     -

        lda     #64
        sta     zp04
MM01
        lda     zp04
        and     #3
        tax
        lda     ColorTable,x
        sta     Screen
        lda     #1
        sta     zp02
        ldy     #0
        sty     zp00
        lda     #>Screen
        sta     zp00+1
        sta     zp02+1
        lda     #>SizeOfScreen
        sta     zp04+1
-
        lda     (zp00),y
        sta     (zp02),y
        iny
        bne     -
        inc     zp00+1
        inc     zp02+1
        dec     zp04+1
        bne     -
        dec     zp04
        bne     MM01

        bit     NMI_Off

        sta     $C786

        lda     Tick+1
        jsr     PrintTwoDigits
        lda     Tick
        jsr     PrintTwoDigits


        stz     zp10
        lda     #$E
        sta     zp10+1
        ldx     #0
        stx     Pos
-       lda     Mes4,x
        beq     +
        jsr     Send
        inx
        bra     -
+
        jsr     Delay5s

;       6502 FillMemory

        sta     $C720

        lda     #$FF
        sta     Tick+1
        lda     #$FE
        sta     Tick
-
        lda     Tick
        bne     -

        lda     #64
        sta     zp04
FM01
        ldy     #0
        sty     zp00
        lda     #>Screen
        sta     zp00+1
        lda     #>SizeOfScreen
        sta     zp04+1

        lda     zp04
        and     #3
        tax
        lda     ColorTable,x
-
        sta     (zp00),y
        iny
        bne     -
        inc     zp00+1
        dec     zp04+1
        bne     -
        dec     zp04
        bne     FM01

        bit     NMI_Off

        sta     $C786

        lda     Tick+1
        jsr     PrintTwoDigits
        lda     Tick
        jsr     PrintTwoDigits


        jsr     Delay5s
        jsr     Delay5s

        jmp     Main



ColorTable   .by     0, $55, $AA, $FF



Delay2s
        bit     NMI_Off
        stz     Tick
        stz     Tick+1
        bit     NMI_On
-
        lda     Tick
        cmp     #100
        bne     -
        rts


Delay5s
        bit     NMI_Off
        stz     Tick
        stz     Tick+1
        bit     NMI_On
-
        lda     Tick
        cmp     #250
        bne     -
        rts


PrintTwoDigits
        pha
        lsr
        lsr
        lsr
        lsr
        jsr     PrintDigit
        pla
        and     #15
        jsr     PrintDigit
        rts

PrintDigit
        tax
        lda     HexDigit,x
        jsr     Send
        rts


Send
        ldy     Pos
        sta     (zp10),y
        inc     Pos
        rts


;        .PETSCII

HexDigit
;        .tx     "0123456789ABCDEF"
        .db     $B0, $B1, $B2, $B3, $B4, $B5, $B6, $B7
        .db     $B8, $B9, $C1, $C2, $C3, $C4, $C5, $C6

Mes1
;        .tx     "Filling 64 screens 256x256x4colors (1MB) in NMI ticks:"
        .db     $C6, $49, $4C, $4C, $49, $4E, $47, $A0
        .db     $B6, $B4, $A0, $53, $43, $52, $45, $45
        .db     $4E, $53, $A0, $B2, $B5, $B6, $58, $B2
        .db     $B5, $B6, $58, $B4, $43, $4F, $4C, $4F
        .db     $52, $53, $A0, $A8, $B1, $CD, $C2, $A9
        .db     $A0, $49, $4E, $A0, $CE, $CD, $C9, $A0
        .db     $54, $49, $43, $4B, $53, $BA
        .db     0

Mes2
;        .tx     "65816 MVN instruction (7 clocks/byte) - $"
        .db     $B6, $B5, $B8, $B1, $B6, $A0, $CD, $D6
        .db     $CE, $A0, $49, $4E, $53, $54, $52, $55
        .db     $43, $54, $49, $4F, $4E, $A0, $A8, $B7
        .db     $A0, $43, $4C, $4F, $43, $4B, $53, $AF
        .db     $42, $59, $54, $45, $A9, $A0, $AD, $A0
        .db     $A4
        .db     0

Mes3
;        .tx     "6502 MoveMemory Sub  (16 clocks/byte) - $"
        .db     $B6, $B5, $B0, $B2, $A0, $CD, $4F, $56
        .db     $45, $CD, $45, $4D, $4F, $52, $59, $A0
        .db     $D3, $55, $42, $A0, $A0, $A8, $B1, $B6
        .db     $A0, $43, $4C, $4F, $43, $4B, $53, $AF
        .db     $42, $59, $54, $45, $A9, $A0, $AD, $A0
        .db     $A4
        .db     0

Mes4
;        .tx     "6502 FillMemory Sub  (11 clocks/byte) - $"
        .db     $B6, $B5, $B0, $B2, $A0, $C6, $49, $4C
        .db     $4C, $CD, $45, $4D, $4F, $52, $59, $A0
        .db     $D3, $55, $42, $A0, $A0, $A8, $B1, $B1
        .db     $A0, $43, $4C, $4F, $43, $4B, $53, $AF
        .db     $42, $59, $54, $45, $A9, $A0, $AD, $A0
        .db     $A4

        .db     0



NMI_Native
        inc     Tick
        rti


NMI
        inc     Tick
        bne     +
        inc     Tick+1
+
        rti


IRQ
        rti


        .ba     $FFEA
        .wo     NMI_Native
        .wo     0
        .wo     IRQ

        .ba     $FFFA
        .wo     NMI
        .wo     Reset
        .wo     IRQ
Post's attachments

Attachment icon FILLSCRN.OBJ 2 kb, 132 downloads since 2021-03-05 

Турбо АГАТ-9/16 (ЦП 65C802, 5 Махов, dual-port SRAM).

32

Re: Поддельные W65C02 на "Али"

Спасибо, опробую. А под какой ассемблер исходник теста скорострельности?

33

Re: Поддельные W65C02 на "Али"

1. Под ДОСовый MXASS.
2. Там же в нескольких местах используется инструкция STZ, которая есть в C02 и C816, но нет в NMOS.
3. Так как эта тестилка заточена под АГАТ, а не под твою сборку, полагаю, тебе разумнее юзать детект цпу.

Post's attachments

Attachment icon mxass.ZIP 41.11 kb, 134 downloads since 2021-03-06 

Турбо АГАТ-9/16 (ЦП 65C802, 5 Махов, dual-port SRAM).

34

Re: Поддельные W65C02 на "Али"

Сделал тестовую программу для определения типа процессора. Использовал программу с форума http://forum.6502.org/viewtopic.php?f=2&t=2263 , из первого сообщения. Вот как расшифровывается результат определения:

; Detects the CPU in use
; 76543210
; ||||||''-- 0=NMOS 6502 (or 65816 if bit 1 ON), 1=65C02 or variant
; ||||||'--- 0=6502 series, 1=65816 series
; |||||'---- 0=Early 6502 w/bad ROR instruction, 1=ROR is normal
; ||||'----- 0=No decimal mode (Ricoh 2A03), 1=decimal mode OK
; |||'------ 1=Hudson Soft HuC6280 CPU
; ||'------- 1=Rockwell R65C02 series CPU
; |'-------- 1=Mitsubishi/Renesas 740 CPU
; '--------- 1=Renesas 740 with MUL/DIV instructions

W65C816 (проверил две штуки) у меня выдал результат 0x0E, т.е. 0b00001110. Вроде бы, всё нормально. Процессор W65C02 (во всяком случае, проданный мне с такой маркировкой) программу определения выполнял некорректно, постоянно выводя разные данные вперемешку со всякой "кашей". Причину, пока что, не знаю. Но интересно другое - процессоры, купленные мной недавно (я писал про них выше, один работает максимум на 1МГц, второй на 2МГц) тоже выдали стабильный результат 0x0E. Если меня не надули, то почему у них такой низкий предел по частоте?
Завтра постараюсь запустить программу детекта из сообщения http://forum.agatcomp.ru//viewtopic.php?pid=4698#p4698

35

Re: Поддельные W65C02 на "Али"

Ага, видел такую определялку. Renesas/Mitsubishi/Hudson/Ricoh для нас - дичь. Самое ценное в ней - различает Rockwell 65C02 от других 65C02 (хотя это просто). Где на том же форуме попадалась определялка, которая умеет чухать SC02.

Турбо АГАТ-9/16 (ЦП 65C802, 5 Махов, dual-port SRAM).

36 Отредактировано AlexBel (07-03-2021 10:24)

Re: Поддельные W65C02 на "Али"

Доработал программу проверки, добавил алгоритм из сообщения 31, только немного подправил, ассемблер ACME не понимал "inc a":

Spoiler
            lda #0
            inc              ; .byte $1a
            cmp #1
            bcc @L9

; This is at least a 65C02, check for a 65816

            xba                ; .byte $eb, put $01 in B accu
            dec             ; .byte $3a, A=$00 if 65C02
            xba                              ; .byte $eb, get $01 back if 65816
            inc                     ; .byte $1a, make $01/$02
@L9:        rts

При тестировании W65C816 тест из сообщения 31 показывает "02", второй тест показывает "0Е". Оба результата соответствуют 65816. При проверке W65C02 тест из сообщения 31 показывает "01", что, опять-таки, соответствует, второй тест ведёт себя непонятно.
Все проверки производятся при напряжении питания 3,3В, при котором оба типа процессоров должны нормально работать. Но остаётся непонятным - если меня не надули и действительно прислали W65C816, то почему они работают максимум на 2МГц?
И ещё момент, на обоих процессорах написано:
WDC
W65C816S8P-14
SA9540A
Оба процессора - явный демонтаж. Технологические впадины по бокам корпуса имеют чёткие края, на сошлифовку не похоже, ногтем хорошо цепляется. Но диаметры этих впадин разные, отличаются раза в два. Я не очень разбираюсь в технологиях, поэтому вопрос - возможно ли такое при одинаковых маркировках? Как я понял, SA9540A - это дата изготовления и, если она одинаковая, то не должны ли впадины быть одного диаметра?

Посмотрел нижнюю сторону корпуса.
На одном процессоре написано:
L765B
TAIWAN
На втором:
L3602
TAIWAN

Круглые выемки есть и с нижней стороны, края тоже чёткие. Уодного процессора в выемке оттиснуто "TAIWAN G1", у второго в одной выемке "TAIWAN", во второй "I1  L4". Диаметры выемок снизу соответствуют диаметрам сверху.

У процессора, который я использую в качестве образца, диаметры выемок средние, между вышеописанными, т.е. меньше одного и больше другого. Маркировка:
WDC
W65C816S8P-14
SA0331A
На обратной стороне написано:
5B394L
TAIWAN
В одной из выемок оттиснуто "F2"
Этот процессор работает на частоте 10МГц при питании от 3,3В

37

Re: Поддельные W65C02 на "Али"

LeoN пишет:

Где на том же форуме попадалась определялка, которая умеет чухать SC02.

Вот.

Турбо АГАТ-9/16 (ЦП 65C802, 5 Махов, dual-port SRAM).

38

Re: Поддельные W65C02 на "Али"

Спасибо.

39 Отредактировано AlexBel (17-11-2021 08:33)

Re: Поддельные W65C02 на "Али"

Решил провести инвентаризацию имеющихся у меня 6502, купленных на Али. Тестировал на клоне Apple II. Те, что не работали - прямиком в мусорку. Интересные результаты получаются. Оставшиеся процессоры, маркировка:

Верх:                                                     Низ:
R6502P                                                    R6502E
R6502-11                                                  MEXICO
8135 [значок Rockwell]                                    0570
Технологические углубления есть.

У остальных процессоров технологических углублений нет.
Верх:                                                     Низ:
MOS                                                       R6502F
6502AD                                                    PHILIPPINES
4285                                                      1514

Верх:                                                     Низ:
MOS                                                       R6502F
6502AD                                                    MEXICO
4285                                                      1463

Верх:                                                     Низ:
MOS
6502AD                                                    ПУСТО
4285

Вот такие вот процессоры. Не знаю их истинных характеристик, но при 5В и 1МГц они работают. Правда, с первым процессором, тем, что обозначен R6502P, при работе постоянно печатаются символы, самопроизвольно (успел забыть, какие именно). При этом на клавиатуру тоже есть реакция и вводимые с клавиатуры символы печатаются вперемешку с теми, что выводятся самопроизвольно.