На Микроше два.
На Микроше два.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
а еще у РК-шек убогейшее описание
вот ищу счас какой нибудь нормальный programming reference (который можно найти для кучи платформ)
чтоб глянуть де у РК порт для опроса клавиатуры и какие биты за что...
а сходу оно не попадается
ну зато всякие подпрограммы монитора
за упоминание которых надо...
то есть я как бы говорю
а давайте же его напишем
или набьем всю эту инфу в здешнюю вики
- - - Добавлено - - -
а что доказывать
и так ясно что можно
и не такое уж это и...
...есть и поболее...
Вы обплевали программы первых программистов страны, - легендарных программистов для РК86. Эти люди впоследствии стали крутыми программистами для IBM PC и сейчас с интересом нас читают. Теперь, "как честный человек, Вы обязаны жениться". То есть написать для РК-платформы десяток крутых игр уровня, хотя бы раннего ZX-Spectrum. Заодно и докажете свою правоту, что прерывания дико улучшают качество игр для РК86, что Вы умеете программровать, а не только болтать об этом. Итого, с Вас по 10 игр с каждого, всего 30 игр. Будем ждать.
Советую всё-таки воспользоваться PL/M и, чтобы получилось что-то красивое, используйте свой специальный фонт с собственной графикой. Если не будет хватать 28 кб для кода, можно использовать вторую полубанку (здесь у всех ОЗУ на РУ5-тых, так что это не проблема). Это будет и Вам интересно и нам, любителям РК86 полезно. Хоть узнаем как правильно надо программировать. Успехов в программировании.
да прям первых...
- - - Добавлено - - -
ну да
это можно было бы показывать что нибудь от РК
и спрашивать а zx81\zx80 так может?
(тк у рк намного больше памяти и процессор хоть и слабее но не нагруженый отрисовкой экрана на 70%)
но почему то все с точностью да на оборот...
- - - Добавлено - - -
хотя если поднатужиться на zx80 то можно и такое (тут большая проблема именно нарисовать графику)
https://youtu.be/9T6m1IUqCa8
хотя на РК тоже можно выпендриться и выдать подобие псевдо hires
но это не получится так же хорошо как на zx80
Последний раз редактировалось NEO SPECTRUMAN; 10.03.2017 в 21:39.
NEO SPECTRUMAN, это же модификация шрифта?
С уважением,
Jerri / Red Triangle.
какого еще шрифта?
- - - Добавлено - - -
тут я рассказываю как происходит построение изображения на zx80 с точки зрения программиста
если еще не видел
http://zx-pk.ru/threads/27384-vopros...l=1#post902258
у zx80 совсем не текстовый режим
если наскрепти 6К рамы то без проблем можно выдать 256х192 pseudo hires
так же как и 320х200
он может выкинуть на экран все что у него есть в пзу
Последний раз редактировалось NEO SPECTRUMAN; 10.03.2017 в 22:15.
такое на РК возможно ?
и еще
куда же на zx-е без
https://youtu.be/EjA-qlDv5Xw
Последний раз редактировалось NEO SPECTRUMAN; 10.03.2017 в 22:17.
Пример кода для тех, кто не хочет мучиться с подбором констант инициализации ВГ75 и ВТ57, при построении экрана с нестандартными параметрами (правда пока без использования спецкоманд F0..F3).
Программа заполняет невидимую экранную область нулями, а видимую символами. Изменяя константы (в исходнике), можно менять параметры экрана.
Часть отвечающую за заполнение экрана символами можно выкинуть и использовать только процедуры инициализации. Она добавлена для наглядного отображения на ТВ и проверки на срывы синхронизации.
Курсор в данном примере переносится за границы экрана и поэтому не отображается. Кому он нужен, может удалить этот кусок кода.
Работа проверялась на Апогее, а так же в эмуляторах. Для написания кода использовался Прекрасный ассемблер
Код:screen_addr equ 0x1000 ; адрес экранной области (можно переназначить в другое место) ; параметры горизонтальной строки (в символах) h_back equ 8 ; отступ слева h_act equ 64 ; видимых символов в строке h_front equ 6 ; отступ справа h_sync equ 8 ; строчный синхроимпульс (2..32) h_total equ h_back + h_act + h_front ; общее количество символов в строке без учёта синхроимпульса (1..80) ; параметры кадра (в строках) v_back equ 3 ; отступ сверху v_act equ 25 ; видимых строк в кадре v_front equ 2 ; отступ снизу v_sync equ 1 ; кадровый синхроимпульс (1..4) v_total equ v_back + v_act + v_front ; общее количество строк в кадре без учёта синхроимпульса (1..64) line_per_row equ 10 ; линий в строке (1..16) under_line equ 10 ; позиция линии подчёркивания в строке (1..16) если этот параметр больше 8, то верхняя и нижняя линии в строке гасятся spaced_row equ 0 ; пропущенные строки (0..1) если 1, то каждая вторая строка гасится (соответственно и строк в кадре надо указывать в два раза меньше, и память под экран занимает в два раза меньше) offset_line equ 1 ; смещение для первой линии в строке символов (0..1) если 1, то первая линия строки будет отображаться второй (для псевдографики нужно ставить 0) no_trans_attr equ 0 ; отображаемые атрибуты (0..1) если 1, то атрибут отображается как пустой символ и занимает место в видеопамяти (на Радио-86РК стоит по умолчанию 0, поэтому если кинуть атрибутом в экран он начинает уплывать) cursor_type equ 1 ; тип курсора (1..4) ; команды и параметры для инициализации контроллера дисплея disp_ctrl_addr equ 0xC000 ; адрес контроллера дисплея disp_reset_com equ 0 ; команда Сброс disp_param_1 equ spaced_row*128 + h_total - 1 disp_param_2 equ (v_sync - 1)*64 + v_total - 1 disp_param_3 equ (under_line - 1)*16 + line_per_row - 1 disp_param_4 equ offset_line*128 + no_trans_attr*64 + cursor_type*16 + h_sync/2 - 1 disp_cursor_com equ 0x80 ; команда Установка курсора disp_start_com equ 0x27 ; команда Начать отображение disp_ir_flag equ 0x20 ; константа для проверки флага Запрос прерывания ; команды и параметры для инициализации контроллера ПДП dma_ctrl_addr equ 0xE000 ; адрес контроллера ПДП dma_reset_com equ 0x80 ; команда Сброс dma_param_1 equ screen_addr & 0x00FF dma_param_2 equ screen_addr >> 8 dma_param_3 equ (0x4000 + h_total*v_total - 1) & 0x00FF dma_param_4 equ (0x4000 + h_total*v_total - 1) >> 8 dma_start_com equ 0xA4 ; команда Запуск ПДП ; подпрограммы Монитора для выхода из программы wait_any_key equ 0xF803 ; ожидание нажатия клавиши re_init_ctrl equ 0xFACE ; инициализация экранной области Монитора jump_to_cli equ 0xF86C ; возврат управления в командную строку .org 0x0000 StartProgram: lxi h, screen_addr lxi d, 0x2020 lxi b, 0 FillScreen: mvi m, 0 mov a, b cpi v_back jc IncAddr cpi v_back + v_act jnc IncAddr mov a, c cpi h_back jc IncAddr cpi h_back + h_act jnc IncAddr mov m, e inr e IncAddr: inx h inr c mov a, c cpi h_total jc FillScreen inr d mov e, d mvi c, 0 inr b mov a, b cpi v_total jc FillScreen InitDisplay: lxi h, disp_ctrl_addr + 1 mvi m, disp_reset_com dcr l mvi m, disp_param_1 mvi m, disp_param_2 mvi m, disp_param_3 mvi m, disp_param_4 inr l mvi m, disp_cursor_com dcr l mvi m, 0xFF mvi m, 0xFF inr l mvi m, disp_start_com mov a, m WaitFlag: mov a, m ani disp_ir_flag jz WaitFlag InitDma: lxi h, dma_ctrl_addr + 8 mvi m, dma_reset_com mvi l, 4 mvi m, dma_param_1 mvi m, dma_param_2 inr l mvi m, dma_param_3 mvi m, dma_param_4 mvi l, 8 mvi m, dma_start_com EndProgram: call wait_any_key call re_init_ctrl jmp jump_to_cli
Это инициализация ВГ75 на стандартный режим дисплея, экранная область не чистится.Сообщение от SegaBoy
Зачем делать JMP внутрь тела ПЗУ F800, на нестандартную подпрограмму. В одной версии ПЗУ F800 это есть, а в другом нет. В базовом ПЗУ РК86 есть, а в базовом ПЗУ Микроши и других клонов нет. В версии для КР580 есть, а в версии для Z80 или 6502 нет.
Это плохой стиль программирования "лезть внутрь ПЗУ F800". Зачем жестко привязывать программы к коду ПЗУ? Завтра к РК86 будет подключен модуль МЦПГ для добавления цвета и графики и в ПЗУ придётся вставить команды инициализации, отчего все внутренние нестандартные подпрограммы сдвинутся. И тогда все некорректные программы сделаные в стиле, "а мне плевать", лезущие во внутрь ПЗУ, перестанут работать. Такой стиль программирования обрекает использовать только программы РК сделанные до 1991 года и не позволяет сделать никаких совместимых программных улучшений.
Есть стандартная входная точка F82D, в которой в базовом ПЗУ стоит JMP FACE. Потому результат - без разницы, делать стандартный CALL F82D или нагло лезть внутрь ПЗУ F800, делая нестандартный CALL FACE.
Авторы РК86 неоднократно предупреждали, что лезть внутрь ПЗУ нельзя. Но нашлись умельцы, которые, чтобы с'экономить 9 МКСЕК времени и несколько байтов кода, стали лезть внутрь ПЗУ F800. Вероятно, из-за этого, авторы РК86 не смогли опубликовывать обещанную схему реконфигуратора архитектуры, дающего в РК86 две адресации портов - со старыми адресами портов на 8000 и с адресами портов на F000, что даёт 60 кб ОЗУ.
Последний раз редактировалось barsik; 11.03.2017 в 11:43.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)