User Tag List

Страница 3 из 9 ПерваяПервая 1234567 ... ПоследняяПоследняя
Показано с 21 по 30 из 82

Тема: Вопрос по ассемблеру Z80

  1. #21

    Регистрация
    23.10.2012
    Адрес
    г. Красноярск
    Сообщений
    206
    Спасибо Благодарностей отдано 
    47
    Спасибо Благодарностей получено 
    63
    Поблагодарили
    29 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от goodboy Посмотреть сообщение
    128ой бейсик это скорее надстройка к 48ому.
    когда ты работаешь в 128ом редакторе практически всегда включена 7ая страница (там находятся всякие служебные буфера),
    а твой шрифт грузится в нулевую.
    при выполнении программы всё встаёт на свои места.



    и размер шрифта у тебя странный. обычно 96*8=768
    А как его загрузить то в 128? Ну любопытно просто. Да и шрифт не мой - взял из книжки как написать игру для ZX Spectrum на бейсик. Только косяки исправил и в 16-ричный вид перевел. Просто чтобы в GENS удобнее выглядело. Там, в разрешении 51 символ в строке, после DEFB как раз до края строки 8 однобайтовых значений влезает. Правда для комментария места уже не остается. Но это так, лирика. К слову с размером шрифта я действительно мог напортачить, но вроде работает все как задумано....

  2. #22

    Регистрация
    03.07.2021
    Адрес
    г. Кировск
    Сообщений
    922
    Спасибо Благодарностей отдано 
    87
    Спасибо Благодарностей получено 
    211
    Поблагодарили
    156 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Zidane Посмотреть сообщение
    А как его загрузить то в 128?
    Попробовать грузить ниже страничек (#C000), ну и CLEAR переставить соответственно. Хотя он, вроде, и так внизу.

  3. #23

    Регистрация
    23.10.2012
    Адрес
    г. Красноярск
    Сообщений
    206
    Спасибо Благодарностей отдано 
    47
    Спасибо Благодарностей получено 
    63
    Поблагодарили
    29 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от reddie Посмотреть сообщение
    Попробовать грузить ниже страничек (#C000), ну и CLEAR переставить соответственно. Хотя он, вроде, и так внизу.
    И соответственно смещение пересчитать для POKE. Понял, спасибо, буду пробовать/

    Пасяба, все запустилось.
    CLEAR 29999
    LOAD "" CODE 30000
    10 POKE 23606,0: POKE 23607,60: REM LAT
    20 POKE 23606,48: POKE 23607,116 :REM RUS.
    Последний раз редактировалось Zidane; 07.01.2022 в 22:48.

  4. #24

    Регистрация
    23.10.2012
    Адрес
    г. Красноярск
    Сообщений
    206
    Спасибо Благодарностей отдано 
    47
    Спасибо Благодарностей получено 
    63
    Поблагодарили
    29 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Еще вопрос - где достать карту памяти Specrum128? Ну или хотя бы внятное описание, как он переключает страницы и что при этом происходит. Я и сам ищу, но что-то пока никак.

  5. #25

    Регистрация
    05.09.2007
    Адрес
    Орск
    Сообщений
    1,071
    Спасибо Благодарностей отдано 
    269
    Спасибо Благодарностей получено 
    1,245
    Поблагодарили
    370 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Хотябы тут с 80й страницы.
    И вообще на vtrd.in много полезной литературы. Почитайте.

    Этот пользователь поблагодарил LW за это полезное сообщение:

    Zidane(08.01.2022)

  6. #26

    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    14,287
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    202
    Спасибо Благодарностей получено 
    1,456
    Поблагодарили
    946 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    поскольку для 8бит #FFFF физ.предел на спеке128 через запись в порт подменяется часть памяти в диапазоне #C000-#FFFF.
    на разных клонах память можно менять и более гибко #0000,#4000,#8000,#C000

    Этот пользователь поблагодарил goodboy за это полезное сообщение:

    Zidane(08.01.2022)

  7. #27

    Регистрация
    03.07.2021
    Адрес
    г. Кировск
    Сообщений
    922
    Спасибо Благодарностей отдано 
    87
    Спасибо Благодарностей получено 
    211
    Поблагодарили
    156 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Zidane Посмотреть сообщение
    Еще вопрос - где достать карту памяти Specrum128? Ну или хотя бы внятное описание, как он переключает страницы и что при этом происходит. Я и сам ищу, но что-то пока никак.
    Всё изменения через порт #7FFD. Переключается верхний банк ОЗУ (16КБ) #C000-#FFFF, а также банк ПЗУ (с 0 и до экрана) между 48 (#10) и 128 (0), то бишь 4-й бит это номер ПЗУ. Также можно переключать отображаемый экран: 5-я банка либо 7-я, физически в карте ничего не меняется, но видеоконтроллер отображает одну из них как экран. Задаётся битом 3 в том же порту. Соответственно, Бейсик-48 и "стандартный" экран это число #10, а Бейсик-128 и второй экран - число 8 (хотя в реальности так никогда не делают).
    Блок порта производится установкой бита 5 (#20), после чего изменения невозможны до сброса компа. Разумеется, одновременно можно записать и номера нужных страниц ОЗУ-ПЗУ-экрана, но это будет последняя запись, и работа системы будет нарушена после такого приема, если работал Бейсик-128, либо 48-й со стеком (Clear) #C000 и выше. Ну, и смена экрана на 7-ю банку означает работу вслепую, т. к. Бейсики понятия не имеют о втором экране - он используется только запускаемыми программами.
    И ещё один момент: каждое прерывание Бейсик-128 щёлкает страницами. Вот отсюда и идут все проблемы с загрузкой данных выше #C000, а также с попытками управлять портом, пока жив этот 128-й Бейсик. Проще сразу делать USR 0, получая режим "48К с открытым портом", ни на какие игры и софт это не повлияет. Наоборот, некоторые даже заработают, хотя в "чистом" 128-м режиме не запускаются.

    Этот пользователь поблагодарил reddie за это полезное сообщение:

    Zidane(08.01.2022)

  8. #28

    Регистрация
    23.10.2012
    Адрес
    г. Красноярск
    Сообщений
    206
    Спасибо Благодарностей отдано 
    47
    Спасибо Благодарностей получено 
    63
    Поблагодарили
    29 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Здравствуйте. Нуб в очередной раз в тупике. Суть вот в чем: Есть набор значений адресов (не подряд но с постоянным смещением) в которые нужно загрузить число. Если проще - распихать байты цветности по местам. Так вот, как бы мне этот набор адресов последовательно перебрать? Или практичнее будет использовать цикл, увеличивая значение адреса на величину смещения? В последнем случае программа обещает быть поменьше (начальный адрес ведь всего один), но и первый вариант интересует - вдруг пригодится.

  9. #29

    Регистрация
    03.07.2021
    Адрес
    г. Кировск
    Сообщений
    922
    Спасибо Благодарностей отдано 
    87
    Спасибо Благодарностей получено 
    211
    Поблагодарили
    156 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Zidane Посмотреть сообщение
    Или практичнее будет использовать цикл, увеличивая значение адреса на величину смещения?
    Все зависит от предпочтений: или цикл, но помедленней, или развертываем код, занимая память, но выигрываем в скорости.
    Более-менее универсальный вариант с переменным смещением:

    Код:
    А=записываемое число, HL=нач. адрес записи, DE=приращение (шаг)
    если повторов 256 или меньше:
    
    MET	LD	(HL),A	; байт
    	ADD	HL,DE
    	DJNZ	MET
    	
    если больше 256 значений:
    
    	LD	BC,256*.SUM+'SUM ; счетчик "наоборот"
    MET	LD	(HL),A
    	ADD	HL,DE
    	DJNZ	MET
    	DEC	C
    	JR	NZ,MET

    Этот пользователь поблагодарил reddie за это полезное сообщение:

    Zidane(12.07.2022)

  10. #30

    Регистрация
    23.10.2012
    Адрес
    г. Красноярск
    Сообщений
    206
    Спасибо Благодарностей отдано 
    47
    Спасибо Благодарностей получено 
    63
    Поблагодарили
    29 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от reddie Посмотреть сообщение
    Все зависит от предпочтений: или цикл, но помедленней, или развертываем код, занимая память, но выигрываем в скорости.
    Более-менее универсальный вариант с переменным смещением:

    Код:
    А=записываемое число, HL=нач. адрес записи, DE=приращение (шаг)
    если повторов 256 или меньше:
    
    MET	LD	(HL),A	; байт
    	ADD	HL,DE
    	DJNZ	MET
    	
    если больше 256 значений:
    
    	LD	BC,256*.SUM+'SUM ; счетчик "наоборот"
    MET	LD	(HL),A
    	ADD	HL,DE
    	DJNZ	MET
    	DEC	C
    	JR	NZ,MET
    Спасибо за развернутый ответ. Скорость в данном случае вторична. Программа носит самообразовательный характер

Страница 3 из 9 ПерваяПервая 1234567 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Книга по ассемблеру Z80
    от Shwartz в разделе Пресса
    Ответов: 11
    Последнее: 06.07.2018, 14:29
  2. Книги по бейсику и Ассемблеру Z80
    от stepmotor в разделе Программирование
    Ответов: 3
    Последнее: 30.01.2018, 19:53
  3. вопрос по z80 stealh
    от scl^mc в разделе Эмуляторы
    Ответов: 11
    Последнее: 17.08.2007, 15:32
  4. ламерский вопрос о временных диаграммах шин Z80
    от boo_boo в разделе Несортированное железо
    Ответов: 3
    Последнее: 30.01.2006, 13:14

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •