Есть ли способ получить доступ к DHR на Apple 2 из Applesoft Basic - PullRequest
3 голосов
/ 02 августа 2010

При использовании Applesoft Basic на Apple 2 с картой на 80 колонок, есть ли способ создания графики DHR с использованием только POKE?

Я нашел несколько решений с использованием сторонних расширений, таких как Beagle Graphics , но я очень хочу реализовать это сам.Я искал свою коллекцию журналов Nibble и основные книги, но не смог найти никакой подробной информации.

Википедия:

Двойное высокое разрешение Состав Double Hi-Рес экран очень сложный.В дополнение к чередованию 64: 1 пиксели в отдельных строках сохраняются необычным способом: каждый пиксель имеет половину своей обычной ширины, а каждый байт пикселей чередуется между первым и вторым банком памяти объемом 64 КБ.Там, где три пикселя подряд были белыми, шесть теперь требовались в двойном высоком разрешении.По сути, все узоры пикселей, используемые для создания цвета в графических блоках Lo-Res, могут быть воспроизведены в графике Double Hi-Res.Реализация ProDOS своего RAM-диска упростила доступ к экрану Double Hi-Res, поскольку в первом файле размером 8 КБ, сохраненном в / RAM, были сохранены данные с размерами от 0x012000 до 0x013fff.Также возможна вторая страница, и второй файл (или первый файл большего размера) будет хранить свои данные в диапазоне от 0x014000 до 0x015fff.Однако доступ через файловую систему ProDOS был медленным и не очень подходил для анимации перелистывания страниц в Double Hi-Res, помимо требований к памяти.

Википедия говорит, что DHR использует чередование 64: 1, ноне дает ссылки на реализацию.Кроме того, в Википедии сказано, что вы можете использовать диск / RAM для доступа, но опять-таки не дается никаких ссылок на реализацию.

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

1 Ответ

3 голосов
/ 24 сентября 2010

Член comp.sys.apple2.programmer ответил на мой вопрос по адресу: http://groups.google.com/group/comp.sys.apple2.programmer/browse_thread/thread/b0e8ec8911b8723b/78cd953bca521d8f

В основном вы отображаете во вспомогательной памяти с карты 80 столбцов. Затем нарисуйте на экране HR и коснитесь области памяти DHR для пикселя, который вы пытаетесь осветить / затемнить.

Лучший пример полной программы:

  5 HGR : POKE 49237,0 : CALL 62450 : REM clear hires then hires.aux 
  6 POKE 49246,0 : PG = 49236 
  7 SVN = 7 : HCOLOR= SVN : P5 = .5 
  9 GOTO 100 
 10 X2 = X * 4 : CL = CO : TMP = 8 : FOR I = 3 TO 0 STEP -1 : BIT = CL >= TMP: 
    CL = CL - BIT * TMP : TMP = TMP * P5 
 20 X1 = X + I: HCOLOR= SVN * BIT 
 30 XX = INT (X1 / SVN): H = XX * P5: POKE PG + (H= INT (H)),0 
 40 XX = INT (( INT (H) + (( X1 / SVN) - XX)) * SVN + P5) 
 50 HPLOT XX,Y: POKE PG, 0: NEXT : RETURN 
100 FOR CO = 0 TO 15 : C8 = CO * 8 
110 FOR X = C8 TO C8 + SVN: FOR Y = 0 TO 10 : GOSUB 10 : NEXT : NEXT 
120 NEXT 
130 REM color is 0 to 15 
140 REM X coordinate is from 0 to 139 
150 REM Y coordinate is from 0 to 191 
...