Paguo-86PK - XXI BEK

Советский компьютер Радио-86РК (1986) и его клоны

Moderator: Shaos

User avatar
askfind
Devil
Posts: 798
Joined: 04 Jan 2016 09:15
Location: Russia, S.- Peterburg

Re: Paguo-86PK - XXI BEK

Post by askfind »

askfind wrote:Версия платы Радио-86РК новая.
Есть просьба преобразовать схему и размещение элементов из Altium Designer в PDF файлы.
Знакомый электроник помог и выполнил преобразование в PDF.
You do not have the required permissions to view the files attached to this post.
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)
User avatar
Paguo-86PK
Maniac
Posts: 267
Joined: 12 Apr 2011 20:43
Location: Tashkent

Радио-86РК - XXI век

Post by Paguo-86PK »

barsik wrote:#С учётом того, что п/п-мма HEX_A в данном коде неэффективная (на целых 3 байта длиннее, чем моя), то при переделке COUT_A в SCOUTA число байтов увеличивается незначительно. Кстати, имя SCOUTA это акроним от фразы: Saved registers Console OUTput from A.

Code: Select all

HEX_A:  PUSH    AF
        RRCA
        RRCA
        RRCA
        RRCA
        CALL    NIBBLE
        POP     AF
NIBBLE: AND     0FH
        CP      10
        CCF
        ADC     A,30H
        DAA
Удалoсь выиграть ещё 1 байт, выбросив CCF:

Code: Select all

HEX_A:  PUSH    AF
        RRCA
        RRCA
        RRCA
        RRCA
        CALL    NIBBLE
        POP     AF
NIBBLE: AND     0FH
        CP      10
        SBC     A,2FH
        DAA
За неделю удалось ещё больше утрамбовать код. В «горячий старт» добавил:

Code: Select all

        LD      (07616H),HL
        LD      SP,0761EH
        LD      HL,(0F86DH)
        PUSH    HL
        PUSH    DE
        PUSH    BC
        LD      SP,HL
Тем самым, при «холодном старте» Монитор сохраняет состояние регистров, которые сразу можно просмотреть через «X», что может быть полезным при исследовании контролируемых зацикливаний.
Доработал цикл сканирования директив и сократил его на 2 байта.

В общем, за неделю байтов 10 в разных местах выиграл. И вернул в директиву «X» строку с «PC-XXXX».
Однако, утром удалось около 12 байтов ещё освободить, но Монитор отказался работать из-за смещения подпрограммы проверки прерывания по «УС+C»…
  • F836 - MSG_PC (печать текста непосредственно в коде) - (36 в адресе как 3×6 даёт 18, чем косвенно ссылает на F818)
  • F839 - ABORT (переход по «УС+C» или по ошибке на 76CD, где обычно F86C) - (39 в адресе как 3×9 даёт 27, что косвенно ссылает на код клавиши ESC/АР2)
Таким образом, мой вариант программы Монитор полностью имеет функционал оригинала, но с излишками. Соответственно, если все излишества опционально повыбрасывать («G» со вторым параметром, «X», трюкачества «холодного старта»), выиграем до 176 байтов.
(Увы, эмулятор своего процессора пока не влезает…)

P.S.: До сих пор не доходят руки до последних подпрограмм - F803/F812/F81B: Лень ковыряться там, хотя эскизы имеются и здесь я показывал.
User avatar
barsik
Doomed
Posts: 585
Joined: 19 Feb 2017 03:46
Location: Санкт-Петербург, Россия, третья планета от Солнца, галактика Млечный Путь

Post by barsik »

Paguo-86PK wrote:Удалoсь выиграть ещё 1 байт
Извиняюсь, что посторонний влезает. Но иначе достижение века никто не оценит.

Выиграть 1 байт в HEX_A (теперь всего 19 байтов) это достойно в книгу рекордов Гинесса. 50 лет сотни тысяч программистов для 8080, Z80, 8085, 8086 использовали и оптимизировали десятки вариантов HEX-A. У нас в стране с этим было совсем плохо. Встречал варианты с числом команд аж в 2-3 раза большим. Но у грамотных программистов были распространены лишь вот эти два передовых варианта:

Code: Select all

HEX_A:  PUSH    AF              ; 23 bytes
        RRCA
        RRCA
        RRCA
        RRCA
        CALL    NIBLE
        POP     AF
NIBLE:  AND     0FH
        CP      10
        JP      M, NBL_1
        ADD     A, 7
NBL_1:  ADD     A, 30H
        JP      SCOUTA

; -------------------------------------------------

HEX_A:  PUSH    AF              ; 26 bytes
        RRA
        RRA
        RRA
        RRA
        CALL    NIBBLE
        POP     AF
NIBBLE: AND     0FH
        CP      10
        JP      NC,NBL_1
        ADD     A,30H
        JP      SCOUTA
        
NBL_1:  ADD     A,37H
        JP      SCOUTA
Но в 1992 я встроил в ПЗУ ОРИОНА для Z80 вышеприведённый HEX_A (не я изобрел, это импорт), что выигрывало против родного варианта ПЗУ ОРИОНА аж три байта. Но было уже поздно, никто и не заметил. Увы, т.к. программистов 8-ми разрядок не осталось, и ваш вариант не заметят, хотя на мой взгляд на мраморную табличку с золотыми буквами на фасаде вашего дома это открытие потянет. Эх, ваш бы энтузиазм и способности да на благое дело!
Konstantin18
Maniac
Posts: 325
Joined: 15 Jan 2019 15:48
Location: Украина, Луганская обл.

Re: Paguo-86PK - XXI BEK

Post by Konstantin18 »

barsik, приветствую! Рад вас видеть. Хорошо, что вы вернулись. :wink:
User avatar
Paguo-86PK
Maniac
Posts: 267
Joined: 12 Apr 2011 20:43
Location: Tashkent

8 Марта - XXI BEK

Post by Paguo-86PK »

barsik!
Рад видеть Вас! :mrgreen:
Вы совсем как-то потерялись… :roll:
User avatar
Paguo-86PK
Maniac
Posts: 267
Joined: 12 Apr 2011 20:43
Location: Tashkent

Paguo-86PK - XXI BEK - CRC

Post by Paguo-86PK »

Дoшли руки до подпрограммы подсчёта контрольной суммы:

Code: Select all

; CHKSMM   - Альтернативная подпрограмма подсчёта CRC
; [CHKDAT] - Подсчитанная на данный момент сумма
; [CHKBAK] - Предыдущий байт
; A        - Очередной байт
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CHKSMM: PUSH    HL              ; 11
        PUSH    AF              ; 11
        LD      HL,(CHKDAT)     ; 16
        LD      A,(CHKBAK)      ; 13
        ADD     A,H             ;  4
        LD      H,A             ;  5
        POP     AF              ; 10
        PUSH    AF              ; 11
        ADD     A,L             ;  4
        LD      L,A             ;  5
        LD      (CHKDAT),HL     ; 16
        SBC     A,A             ;  4
        LD      H,A             ;  5
        POP     AF              ; 10
        SUB     H               ;  4
        LD      (CHKBAK),A      ; 13
        POP     HL              ; 10
        RET                     ; 10 = 162
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Пример использования
        LD      A,000H
        LD      (CHKDAT),A
        LD      (CHKDAT+1),A
        LD      (CHKBAK),A
LOOP:   LD      A,(HL)
        CALL    CHKSMM
        INC     HL
        LD      A,H
        CP      D
        JP      NZ,LOOP
        LD      A,L
        CP      E
        JP      NZ,LOOP
        LD      HL,(CHKDAT)
        LD      B,H
        LD      C,L
        RET
Как известно, при выгрузке/загрузке больших файлов РАДИО-86РК несколько секунд тратит на подсчёт контрольной суммы. Тогда как тот же ZX-Spectrum реагирует моментально (оптически, конечно, так как у него свои паузы и задержки с бордюр-эффектом).
Тем самым, подпрограммы вывода/ввода байта в обмене с лентой планирую давно оборудовать подобной процедурой…
User avatar
barsik
Doomed
Posts: 585
Joined: 19 Feb 2017 03:46
Location: Санкт-Петербург, Россия, третья планета от Солнца, галактика Млечный Путь

Post by barsik »

Надо же, кто-то ещё помнит меня.
Konstantin18 wrote:barsik, приветствую! Рад вас видеть. Хорошо, что вы вернулись.
Да нет, не вернулся. Как я могу вернуться, если меня тут жестоко затравили, а потом забанили?

А то, что мой аккаунт остался, так это я специально попросил, чтобы не забанивали реально, т.е физически, а оставили аккаунт для использования в нём лички, пообещав, что писать здесь больше не буду, отчего нужды в удалении аккаунта не было.
User avatar
aahzma
Junior
Posts: 5
Joined: 26 Jul 2021 01:11

Re:

Post by aahzma »

barsik wrote:Надо же, кто-то ещё помнит меня.
Konstantin18 wrote:barsik, приветствую! Рад вас видеть. Хорошо, что вы вернулись.
Да нет, не вернулся. Как я могу вернуться, если меня тут жестоко затравили, а потом забанили?

А то, что мой аккаунт остался, так это я специально попросил, чтобы не забанивали реально, т.е физически, а оставили аккаунт для использования в нём лички, пообещав, что писать здесь больше не буду, отчего нужды в удалении аккаунта не было.
Уважаемый Барсик!
Вас не только помнят, вас очень ждут в Telegram, в группе поклонников компьютеров Радио-86РК -- ПК на 8080|8085 — hardware (https://t.me/vm80a)
По мотивам ваших предложений уже создан и работает ПК "Северная Пальмира"!
Среди нас есть программисты и электронщики, мы не диванные теоретики, мы -- инженеры и проектировщики, программисты и любители, проект развивается и находит новых приверженцев.
Пожалуйста, объявитесь среди нас, нам очень недостает ваших идей!!!

ЗЫ: Не уверен, что барсик сие прочитает, он давно не реагирует ни на какие взывания, но если кто-то имеет с ним связь, передайте, что его ищут и ждут!

ЗЗЫ: Добренькие админы, простите за оффтоп, действительно, очень важно найти этого человека!
Никогда не поздно что-то изменить. Поздно лишь сожалеть...
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Paguo-86PK - XXI BEK

Post by Shaos »

Одобрил сообщение и разрешил пользователя aahzma (защита от спамеров распространяется на всех новичков)

Также можете попробовать Барсику в личку написать - он сам выше пишет, что личка открыта
Я тут за главного - если что шлите мыло на me собака shaos точка net