Шынни, вопрос - вскользь проштудировал POKEY.
Обнаружил входа обозначенные POT. Там что ADC и можно считывать аналог?
Вид для печати
Шынни, вопрос - вскользь проштудировал POKEY.
Обнаружил входа обозначенные POT. Там что ADC и можно считывать аналог?
Блин, что с форумом происходит? Второй день отваливается на несколько часов...
с POKEY незнаком(
Название микросхемы составлено из начальных слогов английских слов POtentiometer и KEYboard, так как эта микросхема использовалась для опроса клавиатуры и аналоговых устройств управления
https://upload.wikimedia.org/wikiped...220px-Cx78.jpg
Привет, atariki.
Вот код, который либо поможет, либо всё испортит.
Его ПРАВДА в том, что он работает!
Где-то ранее (ищите!) я писал о том, что если ВЕРНЫЙ!!! код, написанный Вами будет РАНЕЕ исполнения стандартного кода Атари, то результата ПРОСТО не будет.Код:
; Resident COLORizer program
; Bump-Up the MEMLO pointer
.ou colorize.com
; Included LIBS
.in macro.mae
; --------------------------------
; equates
DOSINI = $0c ; standard DOS init
COLOR1 = $02c5 ; brightness
COLOR2 = $02c6 ; bgCOLOR
RUNAD = $02e0 ; Run address
MEMLO = $02e7 ; Word, - first free byte
LMARGIN = $52 ; Left Margin
;
; constants
brwhite = $0e
dkblue = $92
; Resident part:
.or $1900
start jmp init
;
newmlo .ds 2
dummy
;
trojan jsr dummy
maw newmlo MEMLO ; bumps up
;
mib dkblue COLOR2
mib brwhite COLOR1
rts
finish = *
;
; Executed ones:
; (then can be deleted)
init
miw finish newmlo ; fill newmlo with finish
maw newmlo MEMLO ; fill MEMLO as newmlo
;
maw DOSINI 1+trojan ; save DOSINI into trojan
miw trojan DOSINI ; set DOSINI as trojan
;
mib dkblue COLOR2
mib brwhite COLOR1
rts
;
.or RUNAD
.wo start
.en
Стандартный код ЗАМЕСТИТ ВСЁ, а в случае наличия конфликтов памяти выгонит Атарьку в висняк.
То есть, Совет Шинни - ЗАЦИКЛИТЬ, просто означает, что Вы исполняете только Ваш ВЕРНЫЙ!!! код и БОЛЬШЕ НИЧЕГО!
Вышеуказанная программа является на самом деле иллюстрацией к защите памяти от ОС.
Цвета там - не Главное!
Но, если заметить, что:
1. Новые цвета задаются инициализацией!
2. Новые цвета переустанавливаются при софтресете.
И добавить конструкционную целостность программы, (Где нужен выход из прерывания - предоставляем RTI, Где нужен Выход из подпрограммы - проедоставляем RTS и пр.)
Добавлю:
Наличие или отсутствие Бейсика - для ассемблирования -НЕ СУЩЕСТВЕННО!
Хватило бы памяти... Например, для самого Ассемблера! Или, для самой Программы!
И, ВАЩЕ, к вопросу о выходах из подпрограмм...
Наконец примите ОДНО решение! Если Вы его
не примите, будет чёрный экранчик
(у Атари бывает ещё и DMA вывод необновляемого состояния - зависание, при работающих системах вывода графики.)
zen
Здравствуйте, дорогие Форумчане.
Мы знаем, что байтом можно адресовать 256 значений. А кто собственно, задумывался в чём эти значения?
Какова их сущность?!! Identity?!!
Я уже сотню лет не писал ничего об ассемблере (был занят Паскалем и совершенно не разочарован), но кажется есть ещё темка, которая Вам может пригодится...
Это - использование identity table (IDT) на русский сложно перевести, но смысл прост, - Из неё мы получаем байт, определяемый собственным индексом, то есть сущность этого байта. (Подумайте над этим, это занятно!)
Итак, создаём таблицу, длиной в страницу и выровненную по странице (то есть адрес: $xx00).
Так вот, дело в том, что такая таблица может помочь нам с созданием новых несуществующих опкодов ассемблера для 6502.Код:IDT
.by $00,$01,$02,$03, ... $0f
...
.by $f0,$f1,$f2,$f3, ... $ff; Identity Table
(Например тех, которые изначально запрограммированы для 65816.)
Но не только...
На её основе можно создавать макросы для повторяющихся действий или другие, необычные вещи... Создав её один раз можно ей пользоваться для ЛЮБЫХ целей!
Просто сама таблица является отображением ПОНЯТИЯ <байт> в понятие <число>;
По русски: сущность БАЙТА - ЭТО ЧИСЛО! (То есть мы ПРОНУМЕРОВАЛИ числа БАЙТА!)
Теперь - фантастика!
Вы знакомы с TAX,TXA,TAY,TYA...
А где же здесь TXY или TYX?! А, НЕТУ!
Я всегда говорил, что процессор не умеет считать, зато байты двигать умеет!!!
Короче, ВОТ недостающие опкоды ассемблера:
(Их можно сделать как макросы ...)
Однако, это - не всё...Код:Calling OPCODE
ldx IDT,y -> TYX
ldy IDT,x -> TXY
and IDT,x -> ANX
and IDT,y -> ANY
ora IDT,x -> ORX
ora IDT,y -> ORY
eor IDT,x -> EOX
eor IDT,y -> EOY
adc IDT,x -> ACX
adc IDT,y -> ACY
sbc IDT,x -> SCX
sbc IDT,y -> SCY
Вот пример кода:
А у меня уже стотыщь переменных!..Код:ldx val
lda num
stx tmp
clc
adc tmp ; A=val+num
Ассемблер не отрабатывает!!!
Тогда, делаем так:
Во-о-от. Так-то, Друзья, В этом-то всё и дело!Код:ldx val
lda num
clc
adc IDT,X ; A=val+num
zen
2denpopov
НИКОГДА!
При установке DLI существенно важно сохранение задействованных в DLI регистров !!!
Это и есть отличие от VBI, где в ОС существуют заранее установленные подпрограммы для выхода как из Непосредственоого, так и Отложенного VBI. (Они разные.)
zen
спасибо всем кто принимал участие в теме, было интересно почитать.
сам я занялся разработкой для атари недавно, хотя с платформой начал общение еще в 1987 году, но тогда был Бейсик и вырванные куски подпрограмм из демок (например у меня не было информации по маппингу памяти и нашел я её в одной из демок по замене шрифтов, тем и пользовался).
из прочитанного всё же не совсем понял зачем заниматься разработкой на самом оригинальном железе, возможно это и интересно, но всё же мне больше понравилось решение с канала "https://www.youtube.com/watch?v=whhTuBpkcrY". Там разработка идёт в VS Code, компиляция через PowerShell консоль, там же посредством запуска команды для MADS, а после компиляции запуск Altirra так же через командную строку для собранного файла.