nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 11 Dec 2019 06:52



Reply to topic  [ 8 posts ] 
Радио-86РК - XXI век 
Author Message
Fanat
User avatar

Joined: 12 Apr 2011 21:43
Posts: 97
Location: Tashkent
Reply with quote
Тaк уж получилось, что 3 месяца я не мог пользоваться ни ПК, ни интернетом: Из системника в декабре начал издаваться стабильный гироскопический звук. Так как он нарастал очень медленно в течении недели, никто этого не заметил. Только мне стало как-то не уютно находиться сначала рядом, потом в комнате, а затем - в квартире вообще. И только через несколько дней я стал подозревать наихудшее - дохнет хард! Ведь мой компьютер - дежурный DVR с режимом 24/7/365. Пришлось наплевать на камеры и всё отключить. Настроение было разбитое…
Стал копить на новый хард. В день покупки оказалось, что на 3Тб нет в наличии у них и купил на 2Тб за $150. Воткнул его и обнаружил, что он так же звенит! Что делать?
Снял БП и тестером проверил напряжения. Оказалось, все напряжения плавают с размахом в 2В и периодичностью раз 10 в минуту. Стал копить на новый БП, а пока поставил из компа сестры, мощностью чуть меньше. Он хоть и старее, но не так износился и выдаёт стабильные напряжения. Но, всё равно, оба винта звенят и всё!
В результате, отключил комп и только вчера купил на 850W за $90. Хотел было киловаттники, но они все брендовые под майнинг и стоят от $170-210 и выше…
Вставил его, включил - снова звон! Испугался, неужели винты оба загубились плавающим напряжением??? Жесть!
Стал основательнее прислушиваться. Но, почему-то в кейсе такой звуковой эффект, что ухом к кулеру даже толку нет: Всё звенит!
Ну, начал пальцем все кулера притормаживать: Оказалось, звенит кулер с радиатором на GeForce 8500. Вот этот гад три месяца не позволял мне включить компьютер!!!
Все три месяца родня пилила меня, мол, купи себе уже всё, что надо! Ведь, пока дома никого не бывало, я от скуки взломал Smart-телевизор, изучая инженерное меню. Подключил 4 тюнера и организовал тем самым мини кабельное ТВ во все комнаты. Понакидал несколько кабелей на крышу к СТВ и поставил полускрытую камеру на кухню (она на видном месте, но всем лень поднять голову на градус выше). В сети, через свой мобильник сидел и долго выгугливал разные автоматические прелести: трансмиттеры, Smart-розетки и дверные видеоглазки: После двух краж со взломом я без камер чувствую себя кротом! :-?
Жутко хотелось программировать, а Мобиль-Бейсик с моим экранчиком на сотке - жуть!

Итaк, мобильник мой имеет разрешение экрана почти такое же, как и у РЛК - 128x128. Только вот 65536 цветов на пиксел. А так, когда гуглишь и выходят обравки из сайтов чёрным на белом, начинаешь задумываться, что с таким же успехом можно было бы гуглить и на РК с его псевдографикой! Тем более, если пользоваться стандартным шрифтом, то 64x25 у РК - огромная фора, против 24x7 на моём мобильнике. Бр-ррр!
И я подумал, что если бы лет 30 тому назад в СССР были бы развиты информационные сети, то даже 16кб памяти хватило бы, чтобы облачно загружать любые файлы, не имея даже НГМД в распоряжении. А я всё завидовал, дурачок, графике Специалиста и Ориона! :roll:

Появилась идея снова изобрести РАДИО-86РК под новые реалии.
А именно:
  • Несколько ВГ75: Три, каждый со своим знакогенератором и в связке с LM1881 для наложения текста прямо на сигнал СТВ-тюнера и выводом на экран телевизора
  • Все 64Кб памяти без классического страничного переключения
  • И т.д.

P.S.: Подробности ниже…


18 Mar 2018 11:30
Profile WWW
Fanat
User avatar

Joined: 12 Apr 2011 21:43
Posts: 97
Location: Tashkent
Reply with quote
Память
В отличии от классического РЛК или ZX, механизмы памяти работают несколько иначе.
Так как у Z80 имеется сигнал M1 и у i8080 он стробируется через D5, можно легко организовать переключение верхних 32кб, аналогично, как верхние 2Гб Windows.
Если процессор пытается прочитать инструкцию по диапазону 8000..FFFF, значит прикладной код обращается к API ПЗУ и триггер переключает адреса 0000..FFFF на ПЗУ. Тем самым, прикладная программа в своём распоряжении абсолютно все 64кб для чтения/записи, но при прыжке программы на любой верхний адрес, память переключается на 64Кб ПЗУ. В этом режиме само API может читать данные из ОЗУ либо через стек (стробируемый D2), либо через ПДП. Когда функция API в ПЗУ завершила свои действия, она выполняет инструкцию RET по адресу FFFF, чем сбрасывает триггер и включаются снова 64кб ОЗУ…

При старте системы включается режим «S» и конфигурация адресного пространства принимает следующий вид:
Code:
┌───────────────────────┐ ┌───────────────────────┐    ┌───────────────────────┐ ┌───────────────────────┐
│Чтение команды M1-цикла│ │Чтение данных из памяти│    │ Стековые R/W-операции │ │Запись данных в память │
╞═══════════════════════╡ ╞═══════════════════════╡FFFF╞═══════════════════════╡ ╞═══════════════════════╡
│                       │ │                       │    │                       │ │                       │
│                       │ │                       │    │                       │ │                       │
│       Страница        │ │       Страница        │    │       Страница        │ │       Страница        │
│          ROM          │ │          ROM          │    │          RAM          │ │          RAM          │
│          «A»          │ │          «A»          │    │          «H»          │ │          «U»          │
│                       │ │                       │    │                       │ │                       │
│                       │ │                       │    │                       │ │                       │
│                       │ │                       │    │                       │ │                       │
├───────────────────────┤ ├───────────────────────┤8000├───────────────────────┤ ├───────────────────────┤
│                       │ │                       │    │                       │ │                       │
│                       │ │                       │    │                       │ │                       │
│       Страница        │ │       Страница        │    │       Страница        │ │       Страница        │
│          ROM          │ │        RAM/ROM        │    │        RAM/ROM        │ │          RAM          │
│          «B»          │ │          «C»          │    │          «L»          │ │          «D»          │
│                       │ │                       │    │                       │ │                       │
│                       │ │                       │    │                       │ │                       │
│                       │ │                       │    │                       │ │                       │
└───────────────────────┘ └───────────────────────┘0000└───────────────────────┘ └───────────────────────┘

Если управление получил прикладной код, конфигурация адресного пространства в режиме «U» имеет следующий вид:
Code:
┌───────────────────────┐ ┌───────────────────────┐    ┌───────────────────────┐ ┌───────────────────────┐
│Чтение команды M1-цикла│ │Чтение данных из памяти│    │ Стековые R/W-операции │ │Запись данных в память │
╞═══════════════════════╡ ╞═══════════════════════╡FFFF╞═══════════════════════╡ ╞═══════════════════════╡
│                       │ │                       │    │                       │ │                       │
│                       │ │                       │    │                       │ │                       │
│       Страница        │ │       Страница        │    │       Страница        │ │       Страница        │
│          ROM          │ │          RAM          │    │          RAM          │ │          RAM          │
│          «A»          │ │          «U»          │    │          «H»          │ │          «U»          │
│                       │ │                       │    │                       │ │                       │
│                       │ │                       │    │                       │ │                       │
│                       │ │                       │    │                       │ │                       │
├───────────────────────┤ ├───────────────────────┤8000├───────────────────────┤ ├───────────────────────┤
│                       │ │                       │    │                       │ │                       │
│                       │ │                       │    │                       │ │                       │
│       Страница        │ │       Страница        │    │       Страница        │ │       Страница        │
│          RAM          │ │          RAM          │    │          RAM          │ │          RAM          │
│          «C»          │ │          «C»          │    │          «L»          │ │          «D»          │
│                       │ │                       │    │                       │ │                       │
│                       │ │                       │    │                       │ │                       │
│                       │ │                       │    │                       │ │                       │
└───────────────────────┘ └───────────────────────┘0000└───────────────────────┘ └───────────────────────┘


Last edited by Paguo-86PK on 20 Mar 2018 05:15, edited 5 times in total.



18 Mar 2018 11:31
Profile WWW
Fanat
User avatar

Joined: 12 Apr 2011 21:43
Posts: 97
Location: Tashkent
Reply with quote
Все три канала ПДП используются тремя ВГ75.

Основной ВГ75 выводит текст с аппаратным переключением между строчными и заглавными символами.
Коды 00..1F графически дублируют символы 20..2F, но переключают флаг ЗАГЛАВНЫЕ/строчные символы. Тем самым, таким простым приёмом легко формировать абсолютно нормальный текст. Так как старшие биты знакогенератора не участвуют в формировании графического символа, на кодах 00..1F они установлены так, чтобы переключать тот флаг.
Управляющие коды для управления атрибутами тоже используются, но они переключают стили начертания символов (курсив, жир и т.д.)

Второй ВГ75 выводит символы псевдографики. Здесь ПЗУ имеет 64 псевдографических символов Кода Брайля для рисования псевдографики 128x75, а также 64 дополнительных иконок.

Третий ВГ75 не имеет знакогенератора, а формирует лишь 128 различных атрибутов. Где 3 бита под RGB точек символа/графики двух первых ВГ75, ещё 3 бита под цвет фона…

Тем самым, программируя каждый из ВГ75 можно достаточно гибко управлять всеми слоями видео или организовывать скроллинг, программируя каналы ПДП.


Last edited by Paguo-86PK on 18 Mar 2018 12:51, edited 1 time in total.



18 Mar 2018 11:32
Profile WWW
Fanat
User avatar

Joined: 12 Apr 2011 21:43
Posts: 97
Location: Tashkent
Reply with quote
Пробные наброски:
  1. Запустите ЭМУЛЯТОР
  2. Скопируйте листинг отсюда в «Intel 8080 assembler» и загрузите в память…
  3. Используйте директиву «G1»-МОНИТОРа для запуска тест-кода…
Code:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; API - альфа-версия пробных набросков. Тестируется в
; эмуляторе http://rk86.ru
; Из-за существенных различий концепций архитектур, не
; всё из задуманного так легко решить
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
JMR     EQU     0D7h    ; JuMp Relative: $- label ^255
DBG     EQU     0DFh    ; Debug Function
CFN     EQU     0F7h    ; Call FuNction relative
RFN     EQU     0FFh    ; Return fron FuNction
BCC     EQU     0C7h    ; Branch on Carry Clear
BCS     EQU     0CFh    ; Branch on Carry Set
BNE     EQU     0E7h    ; Branch on Not Equal
BEQ     EQU     0EFh    ; Branch on EQual (ZF set)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        ORG     00000h
ROMem:  DB      255,255,255,255,255,255,255,255 ; BCC
        DB      255,255,255,255,255,255,255,255 ; BCS
        DB      255,255,255,255,255,255,255,255 ; JMR
        DB      255,255,255,255,255,255,255,255 ; DBG
        DB      255,255,255,255,255,255,255,255 ; BNE
        DB      255,255,255,255,255,255,255,255 ; BEQ
        DB      255,255,255,255,255,255,255,255 ; CFN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        ORG     00038h
        XTHL
        DCX     HL
        PUSH    PSW
        PUSH    DE
        MOV     A,H
        XCHG
        LXI     HL,Lower
        ORA     A
        JZ      @API
        LXI     HL,Upper
        INR     A
        JZ      @API
        XCHG
        POP     DE
        POP     PSW
        INX     SP
        INX     SP
        RET
@API:   XCHG
        XRA     A
        MOV     H,A
        DAD     HL
        DAD     DE
        MOV     A,M
        INX     HL
        MOV     H,M
        MOV     L,A
@APIR:  POP     DE
        POP     PSW
        XTHL
        RET
@BCC:   JNC     @JMR
        JMP     @Next
@BCS:   JC      @JMR
        JMP     @Next
@BNE:   JNZ     @JMR
        JMP     @Next
@BEQ:   JZ      @JMR
@Next:  XTHL
        INX     HL
        XTHL
        RET
@JMR:   XTHL
@JMRA:  PUSH    PSW
        MOV     A,M
        CPI     0FFh
        JZ      @RET
        PUSH    DE
        INX     HL
        MOV     E,A
        ADD     A
        SBB     A
        MOV     D,A
        DAD     DE
        JMP     @APIR
@RET:   POP     PSW
        POP     HL
        RET
@CFN:   XTHL
        INX     HL
        PUSH    HL
        POP     HL
        XTHL
        DCX     SP
        DCX     SP
        XTHL
        DCX     HL
        JMP     @JMRA
@DBG:   PUSH    PSW
        PUSH    BC
        PUSH    DE
        PUSH    HL
        LXI     DE,@@pairs
        MVI     B,5
@@loop: POP     HL
        CALL    0FB78h
        LDAX    DE
        INX     DE
        CALL    0FCB9h
        LDAX    DE
        INX     DE
        CALL    0FCB9h
        DCR     B
        JNZ     @@loop
        JMP     0F86Ch
@@pairs:DB      "HLDEBCAFPC"

; Здесь расположена таблица подпрограмм для быстрого
; перехода директивами G1..G7, а также возможного
; вызова различных системных функций из-под БЕЙСИКа
; посредством функции USR(1)..USR(55)
Lower:  DW      @BCC ; C7 - RST 0; USR(1..7)
        DW      1000h,2000h,3000h,4000h,5000h,6000h,7000h
        DW      @BCS ; CF - RST 1; USR(9..15)
        DW      0F809h,0F815h,0F81Bh,0F86Ch,0F82Dh,0F800h,0
        DW      @JMR ; D7 - RST 2; USR(17..23)
        DW      0F86Ch,0F86Ch,0F86Ch,0F86Ch,0F86Ch,0F86Ch,0F86Ch
        DW      @DBG ; DF - RST 3; USR(25..31)
        DW      0F86Ch,0F86Ch,0F86Ch,0F86Ch,0F86Ch,0F86Ch,0F86Ch
        DW      @BNE ; E7 - RST 4; USR(33..39)
        DW      0F86Ch,0F86Ch,0F86Ch,0F86Ch,0F86Ch,0F86Ch,0F86Ch
        DW      @BEQ ; EF - RST 5; USR(41..47)
        DW      0F86Ch,0F86Ch,0F86Ch,0F86Ch,0F86Ch,0F86Ch,0F86Ch
        DW      @CFN ; F7 - RST 6; USR(49..55)
        DW      0F86Ch,0F86Ch,0F86Ch,0F86Ch,0F86Ch,0F86Ch,0F86Ch
Upper:  DW      0

;;;;;;;;;;;;;;;;;;;;
        ORG     1000h
Tester:
        MVI     H,20
LapY:   MVI     L,48
LapX:   MOV     A,H
        XRA     L
        RRC
        SBB     A
        ANI     '*'
        MOV     C,A
        CALL    9
        DCR     L
     DB BNE,$-  LapX ^255
        MVI     C,0Dh
        CALL    9
        MVI     C,0Ah
        CALL    9
        DCR     H
     DB BNE,$-  LapY ^255
        JMP     0Ch


Last edited by Paguo-86PK on 21 Mar 2018 05:25, edited 4 times in total.



18 Mar 2018 11:32
Profile WWW
Maniac

Joined: 18 Nov 2013 16:15
Posts: 202
Location: все оттуда ;)
Reply with quote
Paguo-86PK wrote:
можно легко организовать переключение верхних 32кб, аналогично, как верхние 2Гб Windows.
Кто такие "верхние 2Гб Windows" ???
Не путаешься в архитектуре процессоров x86, у которых стартовый адрес начинается не с 0000h как у 8080 ?


19 Mar 2018 15:49
Profile
Fanat
User avatar

Joined: 12 Apr 2011 21:43
Posts: 97
Location: Tashkent
Reply with quote
VGrad wrote:
Paguo-86PK wrote:
можно легко организовать переключение верхних 32кб, аналогично, как верхние 2Гб Windows.
Кто такие "верхние 2Гб Windows" ???
Не путаешься в архитектуре процессоров x86, у которых стартовый адрес начинается не с 0000h как у 8080 ?
Нeт, не путаюсь. «Процессы и адресные пространства»:
Quote:
В конфигурации Windows по умолчанию 2 гигабайта (ГБ) этого виртуального адресного пространства выделены каждому процессу для частного использования, а другие 2 ГБ совместно применяются всеми процессами и операционной системой. Обычно приложения (например, Блокнот, Word, Excel и Acrobat Reader) используют только часть из 2 ГБ частного адресного пространства. Операционная система назначает рамки страниц ОЗУ только используемым страницам виртуальной памяти.
В «Радио-86РК» схожая организация адресного пространства: Нижние 32кб и верхние 32кб…
Мною лишь рассматривается идея, что все 64кб полностью могут быть как ОЗУ, так и ПЗУ.
Наверное, меня не так поняли?


20 Mar 2018 02:21
Profile WWW
Fanat
User avatar

Joined: 12 Apr 2011 21:43
Posts: 97
Location: Tashkent
Reply with quote
Eсли кому-нибудь ещё интересно.

На досуге немного продвинулся в архитектуре этой «Идеальной Микро-ЭВМ»… :ebiggrin:

HINT
  • «A»: «Application» - Страница ОЗУ приложения
  • «B»: «BIOS» - Страница ОЗУ Операционной Системы
  • «C»: «Code» - Страница кода
  • «D»: «Data» - Страница данных
  • «E»: «Extra» - ПЗУ загрузчика (32 байта)
В режиме «B» конфигурация адресного пространства приобретает следующий вид:
Code:
┌───────────────────────┐    ┌───────────────────────┐ ┌───────────────────────┐
│Чтение команды M1-цикла│    │Чтение данных из памяти│ │Запись данных в память │
╞═══════════════════════╡FFFF╞═══════════════════════╡ ╞═══════════════════════╡
│       Страница        │    │       Страница        │ │       Страница        │
│        RAM «B»        │    │        RAM «C»        │ │        RAM «D»        │
├───────────────────────┤FFF0├───────────────────────┤ ├───────────────────────┤
│        Триггер        │    │       Страница        │ │       Страница        │
│       RAM «B/A»       │    │        RAM «B»        │ │        RAM «D»        │
├───────────────────────┤FF00├───────────────────────┤ ├───────────────────────┤
│       Страница        │    │       Страница        │ │       Страница        │
│        RAM «B»        │    │        RAM «B»        │ │        RAM «D»        │
└───────────────────────┘0000└───────────────────────┘ └───────────────────────┘

Если управление получил прикладной код, конфигурация адресного пространства в режиме «A» имеет следующий вид:
Code:
┌───────────────────────┐    ┌───────────────────────┐ ┌───────────────────────┐
│Чтение команды M1-цикла│    │Чтение данных из памяти│ │Запись данных в память │
╞═══════════════════════╡FFFF╞═══════════════════════╡ ╞═══════════════════════╡
│       Страница        │    │       Страница        │ │       Страница        │
│        RAM «A»        │    │        RAM «C»        │ │        RAM «D»        │
├───────────────────────┤FFF0├───────────────────────┤ ├───────────────────────┤
│        Триггер        │    │       Страница        │ │       Страница        │
│       RAM «A/B»       │    │        RAM «A»        │ │        RAM «D»        │
├───────────────────────┤FF00├───────────────────────┤ ├───────────────────────┤
│       Страница        │    │       Страница        │ │       Страница        │
│        RAM «A»        │    │        RAM «A»        │ │        RAM «D»        │
└───────────────────────┘0000└───────────────────────┘ └───────────────────────┘

Если нужно скопировать данные между страницами, существует маленькое окно однобайтовых команд:
Code:
     .0 .1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F
FFF0 1A 77 13 23 0B 78 B1 C8 E3 2B 2B 2B E3 C9 .. .. ; Копирует данные из «C» в «D»

Тем самым…
Для приложения всё адресное пространство (0000…FFFF) представляет ОЗУ и у пользователя имеется все 64 Кб в распоряжении без исключения.
Самые последние 240 байт пространства (FF00…FFEF) доступны только для чтения/записи данных.
Чтением команды циклом «M1» из области FF00…FFEF процессор всегда считывает код FF инструкции «RST 7», но при этом происходит также переключение страниц памяти триггером «A/B» для переключения между прикладным и базовым кодом.

В качестве иллюстрации прилагаю схему.


Attachments:
File comment: Слева - Сигналы от Z80: A0-A15, MREQ, READ, WRITE, M1
Справа - Селектор страниц памяти

App_BIOS.png
App_BIOS.png [ 47.7 KiB | Viewed 114 times ]
01 Dec 2019 11:35
Profile WWW
Fanat
User avatar

Joined: 12 Apr 2011 21:43
Posts: 97
Location: Tashkent
Reply with quote


07 Dec 2019 15:05
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 8 posts ] 

Who is online

Users browsing this forum: No registered users and 2 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:  
cron
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.