Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Программирование (http://zx-pk.ru/forumdisplay.php?f=14)
-   -   Порты памяти - Scorpion и др. (http://zx-pk.ru/showthread.php?t=452)

ASMAN 15th March 2005 00:29

Порты памяти - Scorpion и др.
 
ЛЮДИ!!! У кого есть побитная раскладка портов памяти Scropion, KAY и др. Мне для игры срочно нужно! Желательно раскладка выше 128к! :)
Иначе будет работать торлько на Пнтагонах... :(

Вот я например знаю, что у Пентагона:
Порт - 7FFD: биты
0-2 - ОЗУ 0-7 страницу (версия 128кб)
3 - режим видеостраницы (0/1 экран)
4 - бит 128/48 RAM Basic
5 - режим совместимости с обычным Спекки 48кб (в версии 1мб - переключение верхних 512кб)
6,7 - неиспользуются (в версии Пент256,512 - определяют по 8 страниц высшей памяти)
А как быть с 4мб ? Это мне нужно для БУДУЩЕГО АССЕМЛЕРА который я уже подумываю делать параллельно с ДЮНОЙ! То STORM уже приелся! Ничего толком не сделаешь.. а другие не удобные и в некоторых даже еще хуже!

Vitamin 15th March 2005 00:53

раскладку портов побитово не помню. кидаю драйвера памяти из VS. думаю, разберешься

Code:

FSTPAGE
        XOR A

PAGE    PUSH BC    ;переключатель страниц
PAGES  EQU $+1
        CP 6
        JP NC,ERRORT
        LD (CURPAG),A
        CP 2
        JR C,PP1
        CP 4
        JR C,PP2
        INC A
PP2    INC A
PP1
        IFN ?HIMEMDRV+1
        JP PENT128
        ENDIF

PENT128 AND 7
        OR 16
OUTR    LD      BC,32765
        OUT    (C),A
ERRORT_ POP    BC
        RET

        IFN ?HIMEMDRV+1
SETDRIVER
                        ;HL-ADRESS A-MAX PAGES
        LD (PP1+1),HL
        LD (PAGES),A
        RET


PENT512 LD C,A
        AND 24
        RLA
        RLA
        RLA
        LD B,A
        LD A,C
        AND 7
        OR B
        JR PENT128+2    ;13

SCORP256
        LD (S1+1),A
        AND 8
S3      RLA
        LD BC,#1FFD
S2      OUT (C),A
S1      LD A,0
        AND 7
        OR 16
        LD B,#7F
        JR OUTR+3      ;21

PROFI
        LD (S1+1),A
        AND 56
        RRCA
        RRCA
        RRCA
        LD BC,#DFFD
        JR S2          ;12

ATM    LD (S1+1),A
        AND 24
        RRCA
        RRCA
        RRCA
        LD BC,#FDFD
        JR S2

SCORP1024
        LD (S1+1),A
        LD C,A
        AND 8
        LD B,A
        LD A,C
        AND 16+32
        RLA
        OR B
        JR S3
        ENDIF


Spectre 15th March 2005 01:04

Code:

Вот описание всех получивших распространение стандартов:
 
                                        ----------------------------
                                        ----- Стандарты памяти -----
                                        ----------------------------
 
Для переключения памяти в Scorpion, KAY, Profi и ATM1 используется 2
порта - это #7ffd (0, 1 и 2-ой биты) + биты дополнительного порта.
 
Для Pentagon и ATM2 используется один порт (только #7ffd).
 
                                        --------- Pentagon ---------
 
256K - используется 6-ой бит #7FFD
512K - используются 6 и 7 биты #7FFD
1024K - используются 5, 6 и 7 биты #7FFD
4096K - используются 5, 6, 7 биты #7FFD + 0,1 биты #AFF7
 
Примечание насчет последних двух: 5-ый бит в оригинальном спектруме
служит для отключения порта #7FFD, посему есть вероятность оказаться в
48-ом режиме.
 
                                ------------ Scorpion/KAY ------------
 
256К - используется 4-ый бит #1FFD (Scorpion и KAY)
512K - не бывает
1024K Scorpion - используются 4, 6 и 7-ой биты #1FFD
1024K KAY - используются 4 и 6 биты #1FFD + 6-ой бит #7FFD
 
                                                ----- Profi -----
 
256К-1024К - используются 0, 1 и 2 биты #DFFD
 
Примечание: На Profi физически присутствует 4 линейки памяти (значения
0,1 2,3 4,5 и 6,7 в порту #DFFD). Линейки могут быть запаяны как РУ5
(64Кб), так и РУ7 (256Кб). Если памяти 1Мб, то все просто - стоит 4
линейки по 256Кб. Но большое количество Profi имеет 256К, 512К, 768К и
576К(!) памяти. Например, в Profi 576K используется 0,1,2,3 банки и четверть
7-ой банки памяти.
 
                                                ----- ATM-1 -----
 
256К - не бывает
512K - используются 0 и 1 биты #FDFD
1024К - используются 0, 1 и 2-ой биты #FDFD
 
Насчет 1024K: на оригинальном ATM-1 всегда было только 512Кб. 2-ой бит
порта #FDFD использовался при подключении ПЗУ объемом не 64Кб (27512)
как обычно, а 128Кб (271000). Он выбирал дополнительные 4 странички.
Но этот наворот практически никогда и нигде не использовался, даже в
ATM-2 (хотя сейчас разрабатывается новое ПЗУ на все 128Кб для ATM-2,
но не для ATM-1). Так что этот бит практически являлся неиспользуемым,
что и позволило народным умельцам его задействовать. То есть стандарт
неофициальный.
 
                                                ----- ATM-2 -----
 
256К и 512К - может и были, но я никогда не слышал
1024K: есть 2 способа адресации страниц: с использованием #7ffd+#fff7 и
только через #fff7. В #fff7 биты записываются инвертированные!
Раскладка битов порта #FFF7 такая:
0-5 - номер страницы (0-63).
6 - определяет, что это за страница: 0 - ROM, 1 - RAM
7 - Определяет сочетание #FFF7 и #7FFD. А именно: 0 - определяет
страницы только порт #FFF7, а 1 - инвертированные D0-D2 порта #FFF7
заменяются на неинвертированные D0-D2 из порта #7FFD. Биты старше них
продолжают браться из порта #FFF7.
 
Сам порт #FFF7 доступен только из TR-DOS ПЗУ. Биты в него записываются
инвертированные! Пример работы:
 
        LD BC,#FFF7
        LD A,n
        CPL
        CALL OUTC
        ...
 
OUTC LD HL,#2A53 ;здесь OUT (C),A:RET
        PUSH HL
        JP #3D2F


ASMAN 15th March 2005 21:01

Порты, шморты...
 
Quote:

Originally Posted by Spectre
Code:

Вот описание всех получивших распространение стандартов:
 
                                        ----------------------------
                                        ----- Стандарты памяти -----
                                        ----------------------------
 
Для переключения памяти в Scorpion, KAY, Profi и ATM1 используется 2
порта - это #7ffd (0, 1 и 2-ой биты) + биты дополнительного порта.
 
Для Pentagon и ATM2 используется один порт (только #7ffd).
 
                                        --------- Pentagon ---------
 
256K - используется 6-ой бит #7FFD
512K - используются 6 и 7 биты #7FFD
1024K - используются 5, 6 и 7 биты #7FFD
4096K - используются 5, 6, 7 биты #7FFD + 0,1 биты #AFF7
 
Примечание насчет последних двух: 5-ый бит в оригинальном спектруме
служит для отключения порта #7FFD, посему есть вероятность оказаться в
48-ом режиме.
 
                                ------------ Scorpion/KAY ------------
 
256К - используется 4-ый бит #1FFD (Scorpion и KAY)
512K - не бывает
1024K Scorpion - используются 4, 6 и 7-ой биты #1FFD
1024K KAY - используются 4 и 6 биты #1FFD + 6-ой бит #7FFD
 
                                                ----- Profi -----
 
256К-1024К - используются 0, 1 и 2 биты #DFFD
 
Примечание: На Profi физически присутствует 4 линейки памяти (значения
0,1 2,3 4,5 и 6,7 в порту #DFFD). Линейки могут быть запаяны как РУ5
(64Кб), так и РУ7 (256Кб). Если памяти 1Мб, то все просто - стоит 4
линейки по 256Кб. Но большое количество Profi имеет 256К, 512К, 768К и
576К(!) памяти. Например, в Profi 576K используется 0,1,2,3 банки и четверть
7-ой банки памяти.
 
                                                ----- ATM-1 -----
 
256К - не бывает
512K - используются 0 и 1 биты #FDFD
1024К - используются 0, 1 и 2-ой биты #FDFD
 
Насчет 1024K: на оригинальном ATM-1 всегда было только 512Кб. 2-ой бит
порта #FDFD использовался при подключении ПЗУ объемом не 64Кб (27512)
как обычно, а 128Кб (271000). Он выбирал дополнительные 4 странички.
Но этот наворот практически никогда и нигде не использовался, даже в
ATM-2 (хотя сейчас разрабатывается новое ПЗУ на все 128Кб для ATM-2,
но не для ATM-1). Так что этот бит практически являлся неиспользуемым,
что и позволило народным умельцам его задействовать. То есть стандарт
неофициальный.
 
                                                ----- ATM-2 -----
 
256К и 512К - может и были, но я никогда не слышал
1024K: есть 2 способа адресации страниц: с использованием #7ffd+#fff7 и
только через #fff7. В #fff7 биты записываются инвертированные!
Раскладка битов порта #FFF7 такая:
0-5 - номер страницы (0-63).
6 - определяет, что это за страница: 0 - ROM, 1 - RAM
7 - Определяет сочетание #FFF7 и #7FFD. А именно: 0 - определяет
страницы только порт #FFF7, а 1 - инвертированные D0-D2 порта #FFF7
заменяются на неинвертированные D0-D2 из порта #7FFD. Биты старше них
продолжают браться из порта #FFF7.
 
Сам порт #FFF7 доступен только из TR-DOS ПЗУ. Биты в него записываются
инвертированные! Пример работы:
 
        LD BC,#FFF7
        LD A,n
        CPL
        CALL OUTC
        ...
 
OUTC LD HL,#2A53 ;здесь OUT (C),A:RET
        PUSH HL
        JP #3D2F


Спасибо Spectre!!! С меня бутилька! :eek:

GriV 17th March 2005 10:05

вообще проблемы памяти
 
на себя компилятор (АСьМ то есть) должен брать, уж давно пора универсальный memBANKchanger внедрять во все асмы...

lvd 17th March 2005 10:28

Quote:

Originally Posted by GriV
на себя компилятор (АСьМ то есть) должен брать, уж давно пора универсальный memBANKchanger внедрять во все асмы...

Угу, и главное, ООП не забыть бы внедрить...

ASMAN 18th March 2005 00:41

Непонятненько будет...
 
Quote:

Originally Posted by lvd
Угу, и главное, ООП не забыть бы внедрить...

Что такое ООП ? :confused:

lvd 18th March 2005 00:47

Quote:

Originally Posted by ASMAN
Что такое ООП ? :confused:

Это типа шутка юмора была. В соседнем треде тоже до ООП в альасме договорились =)

ООП - объектно-ориентированное программирование.

Looker 18th March 2005 01:30

Без шюток
 
ООП на асме вполне реально внедрить. Может не в полном объеме, но все-таки. А реально потому, что это совершенно не скажется на скорости работы, а преимуществ куча...Кто шарит в ООП, меня поймет...

ASMAN 18th March 2005 22:59

ООП - штука клевая и реализуемая...
 
Quote:

Originally Posted by Looker
ООП на асме вполне реально внедрить. Может не в полном объеме, но все-таки. А реально потому, что это совершенно не скажется на скорости работы, а преимуществ куча...Кто шарит в ООП, меня поймет...

Я шарю, и я тебя понимаю, но об этом можно более подробно поговить в разделе "DEB - ассемблер нового поколения" в котором я постараюсь это сделать, не сразу, но будет, ввиде макросов наврное, если нет других идей... ответ пишите в разделе "DEB - ..." :cool:


All times are GMT +4. The time now is 18:52.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.