Хелпикс

Главная

Контакты

Случайная статья





СПИСОК ЛИТЕРАТУРЫ



СПИСОК ЛИТЕРАТУРЫ

 

1 Рюмик С. “Dendy” – генератор испытательных телевизионных сигналов. - Радио, 2001, №8, с.26-28.

 

2 Бычик В. Вторгаемся в “Денди”. - Радиолюбитель, 1994, №10, с.9.

 

3 Веремеенко C. Dendy под микроскопом. – Радиолюбитель. Ваш компьютер, 1996, №2, с.24, 25; №3, с.22-24; №4, с.24-26.

 

4 Веремеенко С. Подробнее о видеопроцессоре Dendy. – Радиолюбитель. Ваш компьютер, 1996, №9, с.25-27.

 

5 Рюмик С. Особенности схемотехники восьмибитных видеоприставок. - Радио, 1997, №10, с.27-30; № 12, с.20-23.

 

6 Рюмик С. Подключение DENDY-картриджей к IBM PC. – Радiоаматор, 2000, №4, с.38, 39; №5, с.38, 39; №6, с.44, 45.

 

7 Мымрин М.П. Конструкция, применение, программирование и ремонт ПЭВМ “Агат”. – М.: Машиностроение, 1990. – 370 с.

 

8 Морер У. Язык ассемблера для персонального компьютера Эпл: Пер. с англ. – М.: Мир, 1987. – 430 с.

 

9 Гапличук Л.С. ГИС – помощник телемастера: Справочное пособие – Киев: МП “СЭА”: “Радiоаматор”, 1993. – 160 с.

 

10 Рюмик С. ГИТС-2 на базе “Dendy”. - Радио, 2002, № 10.

 

----------------------------------------------------------------------------------------------------------------

 

ПРИЛОЖЕНИЕ А

 

АССЕМБЛЕРНЫЙ ЛИСТИНГ ПРОГРАММЫ S-ROM (DS1)

(Программа распространяется на условиях “freeware” для использования в личных, но не коммерческих целях. Коды прошивок РПЗУ микросхемы DS1 приведены в [1])

 

0001 0000 n00 .EQU $0300 ; Начало ОЗУ пользователя

0002 0000 n20 .EQU $0320 ; Ячейка опроса джойстика-0

0003 0000 n24 .EQU $0324 ; Общий атрибут пейзажа

0004 0000 n25 .EQU $0325 ; Номер элемента пейзажа

0005 0000 n28 .EQU $0328 ; Ячейка номера теста

0006 0000 n2A .EQU $032A ; Ячейка для кнопки "START"

0007 0000 n2B .EQU $032B ; Ячейка для кнопки "SELECT"

0008 0000 n2C .EQU $032C ; Ячейка насыщенности цвета

0009 0000 n2D .EQU $032D ; Ячейка смены “START-SELECT”

0010 0000 n80 .EQU $0380 ; Буфер для атрибута пейзажа

0011 0000 nF0 .EQU $03F0 ; Буфер для RG03

0012 0000 nF1 .EQU $03F1 ; Буфер для RG07

0013 0000 nF2 .EQU $03F2 ; Буфер для RG0B

0014 0000 nF3 .EQU $03F3 ; Буфер для RG0F

0015 0000 r0 .EQU $2000 ; Регистр состояния 2000h

0016 0000 r1 .EQU $2001 ; Регистр режимов 2001h

0017 0000 r2 .EQU $2002 ; Регистр синхронизации 2002h

0018 0000 r3 .EQU $2003 ; Рег.адреса ОЗУ спрайт. 2003h

0019 0000 r5 .EQU $2005 ; Регистр скроллинга 2005h

0020 0000 r6 .EQU $2006 ; Рег. адреса ОЗУ пейз. 2006h

0021 0000 r7 .EQU $2007 ; Рег. данных ОЗУ пейз. 2007h

0022 0000 ekr24 .EQU $24 ; Начало области видео-ОЗУ

0023 0000 ekr27 .EQU $27 ; Окончание области видео-ОЗУ

0024 0000 ;

0025 83C0 start .ORG $83C0 ; Начало размещения программы

0026 83C0 ; Таблица байтов для вертикальных полос-1, -2

0027 83C0 FF FF AA AA .BYTE $FF,$FF,$AA,$AA

0028 83C4 55 55 00 00 .BYTE $55,$55,$00,$00

0029 83C8 FF FF AA AA .BYTE $FF,$FF,$AA,$AA

0030 83CC 55 55 00 00 .BYTE $55,$55,$00,$00

0031 83D0 FF FF AA AA .BYTE $FF,$FF,$AA,$AA

0032 83D4 55 55 00 00 .BYTE $55,$55,$00,$00

0033 83D8 FF FF AA AA .BYTE $FF,$FF,$AA,$AA

0034 83DC 55 55 00 00 .BYTE $55,$55,$00,$00

0035 83E0 FF FF AA AA .BYTE $FF,$FF,$AA,$AA

0036 83E4 55 55 00 00 .BYTE $55,$55,$00,$00

0037 83E8 FF FF AA AA .BYTE $FF,$FF,$AA,$AA

0038 83EC 55 55 00 00 .BYTE $55,$55,$00,$00

0039 83F0 FF FF AA AA .BYTE $FF,$FF,$AA,$AA

0040 83F4 55 55 00 00 .BYTE $55,$55,$00,$00

0041 83F8 FF FF AA AA .BYTE $FF,$FF,$AA,$AA

0042 83FC 55 55 00 00 .BYTE $55,$55,$00,$00

0043 8400 ; Таблица байтов для горизонтальных полос-1, -2

0044 8400 FF FF FF FF .BYTE $FF,$FF,$FF,$FF

0045 8404 FF FF FF FF .BYTE $FF,$FF,$FF,$FF

0046 8408 FF FF FF FF .BYTE $FF,$FF,$FF,$FF

0047 840C FF FF FF FF .BYTE $FF,$FF,$FF,$FF

0048 8410 AA AA AA AA .BYTE $AA,$AA,$AA,$AA

0049 8414 AA AA AA AA .BYTE $AA,$AA,$AA,$AA

0050 8418 AA AA AA AA .BYTE $AA,$AA,$AA,$AA

0051 841C AA AA AA AA .BYTE $AA,$AA,$AA,$AA

0052 8420 55 55 55 55 .BYTE $55,$55,$55,$55

0053 8424 55 55 55 55 .BYTE $55,$55,$55,$55

0054 8428 55 55 55 55 .BYTE $55,$55,$55,$55

0055 842C 55 55 55 55 .BYTE $55,$55,$55,$55

0056 8430 00 00 00 00 .BYTE $00,$00,$00,$00

0057 8434 00 00 00 00 .BYTE $00,$00,$00,$00

0058 8438 00 00 00 00 .BYTE $00,$00,$00,$00

0059 843C 00 00 00 00 .BYTE $00,$00,$00,$00

0060 8440 ; Таблица байтов, определяющих чередование цветов

0061 8440 3E 00 10 20 .BYTE $3E,$00,$10,$20 ; градации яркости-1

0062 8444 00 10 20 30 .BYTE $00,$10,$20,$30 ; градации яркости-2

0063 8448 02 06 09 00 .BYTE $02,$06,$09,$00 ; верт., гор. полосы-1

0064 844C 04 08 0C 00 .BYTE $04,$08,$0C,$00 ; вертикальн. полосы-2

0065 8450 01 07 0B 00 .BYTE $01,$07,$0B,$00 ; горизонтал. полосы-2

0066 8454 ;

0067 8454 ; Подпрограмма обработки немаскируемых прерываний NMI

0068 8454 ;

0069 8454 48 PHA ; Занесение регистра А в стек

0070 8455 8A TXA

0071 8456 48 PHA ; Занесение регистра Х в стек

0072 8457 98 TYA

0073 8458 48 PHA ; Занесение регистра Y в стек

0074 8459 08 PHP ; Занесение рег. сост. в стек

0075 845A A9 00 LDA # $00 ; Установка адреса начала

0076 845C 8D 03 20 STA r3 ; области размещения ОЗУ

0077 845F A9 02 LDA # $02 ; спрайтов 0200h (стандарт.

0078 8461 8D 14 40 STA $4014 ; прием)

0079 8464 20 6E 84 JSR joy ; Подпрограмма опроса джойст.

0080 8467 28 PLP ; Извлеч. рег. сост. из стека

0081 8468 68 PLA ; Извлеч. регистра Y из стека

0082 8469 A8 TAY

0083 846A 68 PLA ; Извлеч. регистра X из стека

0084 846B AA TAX

0085 846C 68 PLA ; Извлеч. регистра A из стека

0086 846D 40 RTI ; Возврат из прерывания

0087 846E ;

0088 846E ; Подпрограмма опроса состояния джойстиков

0089 846E ; (джойстик-0 - основной, джойстик-1 - дополнительный)

0090 846E A2 01 joy LDX # $01 ; Предварительное

0091 8470 8E 16 40 STX $4016 ; занесение в

0092 8473 A9 00 LDA # $00 ; порт 4016h

0093 8475 8D 16 40 STA $4016 ; кодов "01h", "00h"

0094 8478 9D 20 03 j2 STA n20,X ; Обнуление яч. 0321h (0320h)

0095 847B A0 08 LDY # $08 ; Регистр Y - счетчик байтов

0096 847D BD 16 40 j1 LDA $4016,X ; Опрос сост. джойстика-1 (-0)

0097 8480 29 03 AND # $03 ; Маска от ложных срабатываний

0098 8482 C9 01 CMP # $01 ; Выделение младшего разряда

0099 8484 3E 20 03 ROL n20,X ; Циклический сдвиг влево

0100 8487 88 DEY ; Переход к следующему байту

0101 8488 D0 F3 BNE j1 ; Проверка количества байтов

0102 848A A9 00 LDA # $00 ; Обнуление аккумулятора

0103 848C CA DEX ; Переход к джойстику-0

0104 848D 10 E9 BPL j2 ; Повторение для джойстика-0

0105 848F 60 RTS ; Выход из подпрограммы

0106 8490 ;

0107 8490 ; Начало основной программы ("холодный" старт)

0108 8490 ;

0109 8490 D8 CLD ; Сброс десятичного режима

0110 8491 78 SEI ; Запрет маск. прерываний INT

0111 8492 A9 00 LDA # $00 ; Обнуление аккумулятора

0112 8494 8D 00 20 STA r0 ; Запрет немаск. прерыв. NMI

0113 8497 8D 01 20 STA r1 ; Запрет спрайтов, пейзажа

0114 849A A2 FF LDX # $FF

0115 849C 9A TXS ; Вершина стека - в яч. 01FFh

0116 849D AD 02 20 a1 LDA r2

0117 84A0 10 FB BPL a1 ; Задержка до прерывания NMI

0118 84A2 20 08 85 JSR atest ; Тест ОЗУ, инициализация

0119 84A5 20 31 85 JSR apeiz ; Загрузка пейзажа 960 байт

0120 84A8 20 53 85 JSR aatrp ; Атрибуты пейзажа 64 байт

0121 84AB 20 69 85 JSR arg ; Загрузка регистров цвета

0122 84AE 20 7E 85 JSR azvuk ; Звук "плим"

0123 84B1 20 D7 85 a8027 JSR aopen ; Разрешение прерываний

0124 84B4 20 EA 85 JSR ajst ; Опрос кнопок джойстиков

0125 84B7 20 D9 87 JSR atime ; Звук и задержка

0126 84BA AD 28 03 a8030 LDA n28 ; В рег. А - номер теста

0127 84BD 10 0B BPL a8040 ; Проверка смены тестов

0128 84BF A9 15 LDA # $15 ; Номер старшего теста

0129 84C1 8D 28 03 a8037 STA n28

0130 84C4 20 7E 85 JSR azvuk ; Звук "плим"

0131 84C7 4C BA 84 JMP a8030 ; Возврат в начало опроса

0132 84CA C9 0E a8040 CMP # $0E

0133 84CC 30 1F BMI b0D ; Однотонный цвет экрана

0134 84CE F0 20 BEQ b0E ; Вертикальные полосы-1

0135 84D0 38 SEC

0136 84D1 E9 0F SBC # $0F ; Сокращение длины программы

0137 84D3 AA TAX

0138 84D4 F0 1D BEQ b0F ; Вертикальные полосы-2

0139 84D6 CA DEX

0140 84D7 F0 1D BEQ b10 ; Горизонтальные полосы-1

0141 84D9 CA DEX

0142 84DA F0 1D BEQ b11 ; Горизонтальные полосы-2

0143 84DC CA DEX

0144 84DD F0 1D BEQ b12 ; Градации яркости-1

0145 84DF CA DEX

0146 84E0 F0 1D BEQ b13 ; Градации яркости-2

0147 84E2 CA DEX

0148 84E3 F0 1D BEQ b14 ; Шахматное поле

0149 84E5 CA DEX

0150 84E6 F0 1D BEQ b15 ; Сетчатое поле

0151 84E8 A9 00 LDA # $00

0152 84EA 4C C1 84 JMP a8037

0153 84ED 4C 82 86 b0D JMP c0D ; Однотонный цвет экрана

0154 84F0 4C A9 86 b0E JMP c0E ; Вертикальные полосы-1

0155 84F3 4C B7 86 b0F JMP c0F ; Вертикальные полосы-2

0156 84F6 4C C5 86 b10 JMP c10 ; Горизонтальные полосы-1

0157 84F9 4C DE 86 b11 JMP c11 ; Горизонтальные полосы-2

0158 84FC 4C 8B 86 b12 JMP c12 ; Градации яркости-1

0159 84FF 4C EC 86 b13 JMP c13 ; Градации яркости-2

0160 8502 4C FA 86 b14 JMP c14 ; Шахматное поле

0161 8505 4C 74 87 b15 JMP c15 ; Сетчатое поле

0162 8508 ;

0163 8508 ; Подпрограмма тестирования рабочей области ОЗУ

0164 8508 ; пользователя 0300-03FFh и начальная инициализация

0165 8508 ;

0166 8508 A9 55 atest LDA # $55 ; Занесение во все

0167 850A A0 02 LDY # $02 ; тестируемые ячейки

0168 850C A2 00 LDX # $00 ; памяти 0300-03FFh

0169 850E 9D 00 03 at1 STA n00,X ; кода 55h

0170 8511 DD 00 03 at2 CMP n00,X ; Проверка результата

0171 8514 D0 FB BNE at2 ; Зацикливание при ошибке

0172 8516 E8 INX

0173 8517 D0 F5 BNE at1

0174 8519 A9 AA LDA # $AA ; Смена кода на AAh

0175 851B 88 DEY

0176 851C D0 F0 BNE at1 ; Повтор проверки

0177 851E A9 00 LDA # $00 ; Обнуление аккумулятора

0178 8520 9D 00 03 at3 STA n00,X ; Начальное занесение

0179 8523 E8 INX ; кода 00h

0180 8524 D0 FA BNE at3 ; по адресам 0300-03FFh

0181 8526 A9 FF LDA # $FF

0182 8528 8D 24 03 STA n24 ; Однородные атрибуты пейзажа

0183 852B A9 10 LDA # $10

0184 852D 8D 2C 03 STA n2C ; Насыщенность уменьшена

0185 8530 60 RTS ; Выход из подпрограммы

0186 8531 ;

0187 8531 ; Подпрограмма заполнения области пейзажа 960 байтов

0188 8531 ;

0189 8531 A9 24 apeiz LDA # ekr24 ; Начало ОЗУ пейзажа

0190 8533 8D 06 20 STA r6 ; пейзажа

0191 8536 A9 00 LDA # $00 ; устанавливается

0192 8538 8D 06 20 STA r6 ; равным 2400h

0193 853B AA TAX ; Обнуление регистра Х

0194 853C AD 25 03 LDA n25 ; Номер элемента пейзажа

0195 853F A0 03 LDY # $03 ; Y - счетчик

0196 8541 8D 07 20 ap1 STA r7 ; Заполнение области

0197 8544 CA DEX ; 2400-26FFh

0198 8545 D0 FA BNE ap1 ; байтами с номером

0199 8547 88 DEY ; выбранного элемента

0200 8548 D0 F7 BNE ap1 ; пейзажа

0201 854A 8D 07 20 ap2 STA r7

0202 854D E8 INX

0203 854E E0 C0 CPX # $C0 ; Проверка на достижение

0204 8550 D0 F8 BNE ap2 ; адреса 27С0h

0205 8552 60 RTS ; Выход из подпрограммы

0206 8553 ;

0207 8553 ; Подпрограмма заполнения атрибутов пейзажа 64 байта

0208 8553 ;

0209 8553 A9 27 aatrp LDA # ekr27 ; Начало ОЗУ атрибутов

0210 8555 8D 06 20 STA r6 ; пейзажа

0211 8558 A9 C0 LDA # $C0 ; устанавливается

0212 855A 8D 06 20 STA r6 ; равным 27C0h

0213 855D AD 24 03 LDA n24 ; Код атрибутов пейзажа

0214 8560 A2 40 LDX # $40 ; Количество байтов (64)

0215 8562 8D 07 20 aa1 STA r7

0216 8565 CA DEX

0217 8566 D0 FA BNE aa1 ; Проверка адреса 2800h

0218 8568 60 RTS ; Выход из подпрограммы

0219 8569 ;

0220 8569 ; Подпрограмма групповой загрузки регистров цвета

0221 8569 ;

0222 8569 A9 00 arg LDA # $00 ; Обнуление аккумулятора

0223 856B A2 3F a81C2 LDX # $3F ; Точка входа (А - код цвета)

0224 856D 8E 06 20 STX r6

0225 8570 A2 00 LDX # $00

0226 8572 8E 06 20 STX r6

0227 8575 A0 20 LDY # $20 ; Область 3F00-3F1Fh

0228 8577 8D 07 20 ar1 STA r7 ; заполняется кодом,

0229 857A 88 DEY ; который содержится

0230 857B D0 FA BNE ar1 ; в регистре А

0231 857D 60 RTS ; Выход из подпрограммы

0232 857E ;

0233 857E ; Подпрограммы звука

0234 857E ;

0235 857E A9 02 azvuk LDA # $02 ; Загрузка регистров

0236 8580 8D 15 40 STA $4015 ; 4015h, 4004-4007h

0237 8583 A9 3F LDA # $3F ; для извлечения звука

0238 8585 8D 04 40 STA $4004 ; "плим"

0239 8588 A9 9A LDA # $9A

0240 858A 8D 05 40 STA $4005

0241 858D A9 FF LDA # $FF

0242 858F 8D 06 40 STA $4006

0243 8592 A9 00 LDA # $00

0244 8594 8D 07 40 STA $4007

0245 8597 60 RTS ; Выход из подпрограммы

0246 8598 A9 03 abip1 LDA # $03 ; Вход для звука "бип"

0247 859A 8D 2D 03 STA n2D ; Переключение START-SELECT

0248 859D 8D 15 40 STA $4015 ; Загрузка регистров

0249 85A0 A9 F0 LDA # $F0 ; 4015h, 4000-4003h

0250 85A2 8D 02 40 STA $4002 ; для извлечения звука

0251 85A5 A9 87 LDA # $87 ; "бип"

0252 85A7 8D 00 40 ab1 STA $4000

0253 85AA A9 80 LDA # $80

0254 85AC 8D 01 40 STA $4001

0255 85AF A9 00 LDA # $00

0256 85B1 8D 03 40 STA $4003

0257 85B4 60 RTS ; Возврат из подпрограммы

0258 85B5 20 C5 85 abip2 JSR az1 ; Вход для звука "пила"

0259 85B8 A9 20 LDA # $20

0260 85BA 4C A7 85 JMP ab1

0261 85BD 20 C5 85 abip3 JSR az1 ; Вход для непрерывного звука

0262 85C0 A9 3E LDA # $3E

0263 85C2 4C A7 85 JMP ab1

0264 85C5 ; Общая часть формирования звуков

0265 85C5 A9 03 az1 LDA # $03

0266 85C7 8D 15 40 STA $4015

0267 85CA A9 C0 LDA # $C0 ; Частота 500 Гц



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.