nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 03:40



Reply to topic  [ 204 posts ]  Go to page Previous  1 ... 10, 11, 12, 13, 14
Paguo-86PK - XXI BEK 
Author Message
Doomed
User avatar

Joined: 04 Jan 2016 09:15
Posts: 649
Location: Russia, S.- Peterburg
Reply with quote
askfind wrote:
Версия платы Радио-86РК новая.
Есть просьба преобразовать схему и размещение элементов из Altium Designer в PDF файлы.


Знакомый электроник помог и выполнил преобразование в PDF.


Attachments:
File comment: Разводка печатных платы Радио-86РК.
Radio_86rk_prj.pdf [1021.53 KiB]
Downloaded 355 times

_________________
"Ученье свет, а неученье — тьма. Дело мастера боится, и коль крестьянин не умеет сохою владеть — хлеб не родится." (С)
23 May 2020 10:00
Profile WWW
Maniac
User avatar

Joined: 12 Apr 2011 20:43
Posts: 267
Location: Tashkent
Reply with quote
barsik wrote:
#С учётом того, что п/п-мма HEX_A в данном коде неэффективная (на целых 3 байта длиннее, чем моя), то при переделке COUT_A в SCOUTA число байтов увеличивается незначительно. Кстати, имя SCOUTA это акроним от фразы: Saved registers Console OUTput from A.
Code:
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:
HEX_A:  PUSH    AF
        RRCA
        RRCA
        RRCA
        RRCA
        CALL    NIBBLE
        POP     AF
NIBBLE: AND     0FH
        CP      10
        SBC     A,2FH
        DAA
За неделю удалось ещё больше утрамбовать код. В «горячий старт» добавил:
Code:
        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: Лень ковыряться там, хотя эскизы имеются и здесь я показывал.


06 Mar 2021 11:01
Profile WWW
Doomed
User avatar

Joined: 19 Feb 2017 03:46
Posts: 584
Location: Санкт-Петербург, Россия, третья планета от Солнца, галактика Млечный Путь
Reply with quote
Post 
Paguo-86PK wrote:
Удалoсь выиграть ещё 1 байт
Извиняюсь, что посторонний влезает. Но иначе достижение века никто не оценит.

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

Code:
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-ми разрядок не осталось, и ваш вариант не заметят, хотя на мой взгляд на мраморную табличку с золотыми буквами на фасаде вашего дома это открытие потянет. Эх, ваш бы энтузиазм и способности да на благое дело!


07 Mar 2021 02:18
Profile
Maniac

Joined: 15 Jan 2019 15:48
Posts: 326
Location: Украина, Луганская обл.
Reply with quote
barsik, приветствую! Рад вас видеть. Хорошо, что вы вернулись. :wink:


07 Mar 2021 03:47
Profile
Maniac
User avatar

Joined: 12 Apr 2011 20:43
Posts: 267
Location: Tashkent
Reply with quote
barsik!
Рад видеть Вас! :mrgreen:
Вы совсем как-то потерялись… :roll:


07 Mar 2021 07:40
Profile WWW
Maniac
User avatar

Joined: 12 Apr 2011 20:43
Posts: 267
Location: Tashkent
Reply with quote
Дoшли руки до подпрограммы подсчёта контрольной суммы:
Code:
; 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 реагирует моментально (оптически, конечно, так как у него свои паузы и задержки с бордюр-эффектом).
Тем самым, подпрограммы вывода/ввода байта в обмене с лентой планирую давно оборудовать подобной процедурой…


07 Mar 2021 20:02
Profile WWW
Doomed
User avatar

Joined: 19 Feb 2017 03:46
Posts: 584
Location: Санкт-Петербург, Россия, третья планета от Солнца, галактика Млечный Путь
Reply with quote
Post 
Надо же, кто-то ещё помнит меня.
Konstantin18 wrote:
barsik, приветствую! Рад вас видеть. Хорошо, что вы вернулись.
Да нет, не вернулся. Как я могу вернуться, если меня тут жестоко затравили, а потом забанили?

А то, что мой аккаунт остался, так это я специально попросил, чтобы не забанивали реально, т.е физически, а оставили аккаунт для использования в нём лички, пообещав, что писать здесь больше не буду, отчего нужды в удалении аккаунта не было.


09 Mar 2021 05:36
Profile
Junior

Joined: 26 Jul 2021 01:11
Posts: 3
Reply with quote
Post Re:
barsik wrote:
Надо же, кто-то ещё помнит меня.
Konstantin18 wrote:
barsik, приветствую! Рад вас видеть. Хорошо, что вы вернулись.
Да нет, не вернулся. Как я могу вернуться, если меня тут жестоко затравили, а потом забанили?

А то, что мой аккаунт остался, так это я специально попросил, чтобы не забанивали реально, т.е физически, а оставили аккаунт для использования в нём лички, пообещав, что писать здесь больше не буду, отчего нужды в удалении аккаунта не было.


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

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

ЗЗЫ: Добренькие админы, простите за оффтоп, действительно, очень важно найти этого человека!


26 Jul 2021 01:42
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22409
Location: Silicon Valley
Reply with quote
Одобрил сообщение и разрешил пользователя aahzma (защита от спамеров распространяется на всех новичков)

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

_________________
:dj: https://mastodon.social/@Shaos


26 Jul 2021 23:15
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 204 posts ]  Go to page Previous  1 ... 10, 11, 12, 13, 14

Who is online

Users browsing this forum: No registered users and 9 guests


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.