User Tag List

Страница 4 из 31 ПерваяПервая 12345678 ... ПоследняяПоследняя
Показано с 31 по 40 из 305

Тема: Программирование

  1. #31

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,393
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Есть у меня старый потоковый распаковщик для zx7, у которого настраивается размер буфера (от 256 байт и больше). Но у него 2 недостатка - он очень медленный и это zx7, который резко потерял актуальность после появления zx0/zx1/zx2/zx5. Поэтому я его не выкладывал и теперь оптимизировать и выкладывать смысла нет. На базе zx0 можно сделать подобную штуку (при условии упаковки salvadorом), надо будет заняться, если кто-нибудь не сделает раньше.
    zx7mini хорошая для своего времени штука, но там есть недостатки. Если устраивает небольшая степень сжатия, зато будет маленький буфер и сравнительно простой распаковщик (т.е. все чем был интересен zx7mini), то рекомендую взять здесь saukav.exe, это обобщенный zx7, который опциями можно превратить в подобие zx7mini, только лучше.

  2. #31
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #32

    Регистрация
    29.06.2022
    Адрес
    г. Ирвайн, США
    Сообщений
    408
    Спасибо Благодарностей отдано 
    590
    Спасибо Благодарностей получено 
    340
    Поблагодарили
    109 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Время подождать есть. А zx7mini умеет писать в буфер экрана на нужные для картинки адреса?

  4. #33

    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,307
    Спасибо Благодарностей отдано 
    1,033
    Спасибо Благодарностей получено 
    818
    Поблагодарили
    489 сообщений
    Mentioned
    26 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от parallelno Посмотреть сообщение
    Время подождать есть. А zx7mini умеет писать в буфер экрана на нужные для картинки адреса?
    Думаю, что если картинка не расположена в памяти без разрывов, то есть например занимает только часть экрана, потребуются модификации. Но там распаковщик очень простой. Кстати, я его переводил на Си однажды. С другой стороны, если это заставка и можно потерпеть, что неиспользуемая часть экрана затирается нулями, может быть лучше так прямо и упаковать монолитом -- упакованные нули не займут очень много места, а проще -- это всегда проще.
    Больше игр нет

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

    parallelno(17.08.2022)

  5. #34

    Регистрация
    29.06.2022
    Адрес
    г. Ирвайн, США
    Сообщений
    408
    Спасибо Благодарностей отдано 
    590
    Спасибо Благодарностей получено 
    340
    Поблагодарили
    109 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    О, отлично! Когда напишу свой rle с разрывами сравню скорость распаковки и сжатие и напишу сравнение.

  6. #35

    Регистрация
    29.06.2022
    Адрес
    г. Ирвайн, США
    Сообщений
    408
    Спасибо Благодарностей отдано 
    590
    Спасибо Благодарностей получено 
    340
    Поблагодарили
    109 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Почему когда я опрашиваю клавиши после установки цвета бордюра и вертикального скролинга кодом ниже, цвет бордюра не устанавливается корректно?

    Код:
    	LXI H,palette_sprites+15	; ЗАПИСЬ ПАЛИТРЫ.
    	LXI D,$100F
    INIT1:	MOV A,E
    	OUT 02
    	MOV A,M
    	OUT $0c
    	OUT $0c
    	OUT $0c
    	OUT $0c
    	OUT $0c
    	DCX H
    	OUT $0c
    	DCR E
    	OUT $0c
    	DCR D
    	OUT $0c
    	JNZ INIT1
    NWRPAL:	
    	MVI A,$88
    	OUT 00
    	mvi a, 1	; УСТАНОВКА ЦВЕТА БОРДЮРА.
    	ANI $0F
    	OUT 02
    	mvi a, 255	; УСТАНОВКА ВЕРТИКАЛЬНОГО ПОЛОЖЕНИЯ ЭКРАНА.
    	OUT 03	
    
    	MVI A,$8A	; ПРОВЕРКА НАЖАТИЯ НА ЛЮБУЮ КЛАВИШУ 
    	OUT 00		; МАТРИЦЫ КЛАВИАТУРЫ 8*8 (КРОМЕ УС,СС,РУС/ЛАТ).
    	XRA A
    	OUT 03
    	IN 2
    	STA anyKeyPressed
    	MVI A,$FE	; ПРОВЕРКА НАЖАТИЯ НА КЛАВИШИ ИГРОВОГО РЯДА.
    	OUT 03
    	IN 02
    	STA keyCode
    но когда я опращиваю клавиши до бордюра и скроллинга, то все равботает как нужно?

    Код:
    	LXI H,palette_sprites+15	; ЗАПИСЬ ПАЛИТРЫ.
    	LXI D,$100F
    INIT1:	MOV A,E
    	OUT 02
    	MOV A,M
    	OUT $0c
    	OUT $0c
    	OUT $0c
    	OUT $0c
    	OUT $0c
    	DCX H
    	OUT $0c
    	DCR E
    	OUT $0c
    	DCR D
    	OUT $0c
    	JNZ INIT1
    NWRPAL:	
    	MVI A,$8A	; ПРОВЕРКА НАЖАТИЯ НА ЛЮБУЮ КЛАВИШУ 
    	OUT 00		; МАТРИЦЫ КЛАВИАТУРЫ 8*8 (КРОМЕ УС,СС,РУС/ЛАТ).
    	XRA A
    	OUT 03
    	IN 2
    	STA anyKeyPressed
    	MVI A,$FE	; ПРОВЕРКА НАЖАТИЯ НА КЛАВИШИ ИГРОВОГО РЯДА.
    	OUT 03
    	IN 02
    	STA keyCode
    	
    	MVI A,$88
    	OUT 00
    	mvi a, 1	; УСТАНОВКА ЦВЕТА БОРДЮРА.
    	ANI $0F
    	OUT 02
    	mvi a, 255	; УСТАНОВКА ВЕРТИКАЛЬНОГО ПОЛОЖЕНИЯ ЭКРАНА.
    	OUT 03
    проверял в Emu80 и VV

    - - - Добавлено - - -

    Вот тестовая программа для Pretty Asm
    Код:
        .project helv06c.rom
        .tape v06c-rom
    
    			.org	$100
    StartInit:
    	DI
    	; dismount a quasi-disk
    	XRA		A
    	out		$10
    	; set entry points of a restart, and an interruption
    	MVI		A, 0C3h
    	STA		0
    	STA		38h
    	LXI		H, StartInit
    	SHLD 	        1
    	LXI		H, Interruption1
    	SHLD	        38h + 1
    	; stack init
    	LXI		SP, 8000h
    	EI
    	HLT
    	; clear the screen
    	CALL	CLEAR
    Start:  JMP     Start
    
    
    CLEAR:	DI
    	PUSH H		; СОХРАНИТЬ ИСПОЛЬЗУЕМЫЕ РЕГИСТРЫ.
    	PUSH B
    	PUSH D
    	PUSH PSW
    	LXI H,0000H	; ПОДГОТОВИТЬ HL ДЛЯ ВЗЯТИЯ ЗНАЧЕНИЯ SP.
    	DAD SP		; ВЗЯТЬ ЗНАЧЕНИЕ SP ПУТЕМ СЛОЖЕНИЯ С HL.
    	LXI SP,0000H	; НАЧАТЬ СТИРАНИЕ С АДРЕСА 0FFFFH.
    	LXI D,0000H	; В DE - ЗНАЧЕНИЕ, КОТОРЫМ БУДЕТ СТЕРТ ЭКРАН.
    	LXI B,0800H	; В BC - СЧЕТЧИК.
    CLEAR1:	PUSH D		; НАЧАТЬ СТИРАТЬ ЭКРАН ПУТЕМ "ОПУСКАНИЯ" СТЕКА.
    	PUSH D		; ВЫПОЛНИТЬ 8 ОПЕРАЦИЙ "В ЛОБ" ДЛЯ СКОРОСТИ.
    	PUSH D
    	PUSH D
    	PUSH D
    	PUSH D
    	PUSH D
    	PUSH D
    	DCX B		; УМЕНЬШИТЬ СЧЕТЧИК И 
    	MOV A,B		; ПРОВЕРИТЬ ЕГО.
    	ORA C		; КОНЕЦ СЧЕТА?
    	JNZ CLEAR1	; ЕСЛИ НЕТ - ПРОДОЛЖАТЬ СТИРАНИЕ.
    	SPHL		; ВЕРНУТЬ ПРЕЖНЕЕ ЗНАЧЕНИЕ SP И
    	POP PSW		; ВСЕХ РЕГИСТРОВ.
    	POP D
    	POP B
    	POP H
    	EI
    	RET
    	
    anyKeyPressed:          .db 0
    keyCode:          .db 0
    
    palette_sprites:
    			.DB 01001010b, 00000001b, 01011100b, 00011010b, 
    			.DB 11100100b, 11111101b, 01110111b, 01011111b, 
    			.DB 01000010b, 01001011b, 01001100b, 11111111b, 
    			.DB 11111111b, 11101011b, 00001010b, 01011011b, 
    ;----------------------------------------------------------------
    ; Common interruption sub
    
    Interruption1:
    	PUSH	PSW
    	PUSH	B
    	PUSH	D
    	PUSH	H
    
    			; common interruption logic
    	LXI H,palette_sprites+15	; ЗАПИСЬ ПАЛИТРЫ.
    	LXI D,$100F
    INIT1:	MOV A,E
    	OUT 02
    	MOV A,M
    	OUT $0c
    	OUT $0c
    	OUT $0c
    	OUT $0c
    	OUT $0c
    	DCX H
    	OUT $0c
    	DCR E
    	OUT $0c
    	DCR D
    	OUT $0c
    	JNZ INIT1
    
    
    	MVI A,$88
    	OUT 00
    	mvi a, 1	; УСТАНОВКА ЦВЕТА БОРДЮРА.
    	ANI $0F
    	OUT 02
    	mvi a, 255	; УСТАНОВКА ВЕРТИКАЛЬНОГО ПОЛОЖЕНИЯ ЭКРАНА.
    	OUT 03		
    
    	MVI A,$8A	; ПРОВЕРКА НАЖАТИЯ НА ЛЮБУЮ КЛАВИШУ 
    	OUT 00		; МАТРИЦЫ КЛАВИАТУРЫ 8*8 (КРОМЕ УС,СС,РУС/ЛАТ).
    	XRA A
    	OUT 03
    	IN 2
    	STA anyKeyPressed
    	MVI A,$FE	; ПРОВЕРКА НАЖАТИЯ НА КЛАВИШИ ИГРОВОГО РЯДА.
    	OUT 03
    	IN 02
    	STA keyCode
    
    			; end common interruption logic
    	POP		H
    	POP		D
    	POP		B
    	POP		PSW
    	EI
    	RET	
        end

  7. #36

    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,307
    Спасибо Благодарностей отдано 
    1,033
    Спасибо Благодарностей получено 
    818
    Поблагодарили
    489 сообщений
    Mentioned
    26 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Из даташита 8255:
    "All of the output registers, including the status flip-flops, will be reset whenever the mode is changed"

    Код цвета бордюра -- это не отдельный регистр, а прямо выход 8255. Поэтому бордюр надо записывать после опроса клавиатуры.
    Больше игр нет

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

    parallelno(25.07.2022)

  8. #37

    Регистрация
    29.06.2022
    Адрес
    г. Ирвайн, США
    Сообщений
    408
    Спасибо Благодарностей отдано 
    590
    Спасибо Благодарностей получено 
    340
    Поблагодарили
    109 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Прикольно. Спасибо. А есть подробная информация по работе с портами?

  9. #38

    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,307
    Спасибо Благодарностей отдано 
    1,033
    Спасибо Благодарностей получено 
    818
    Поблагодарили
    489 сообщений
    Mentioned
    26 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я обычно заглядываю в Техническое описание и в даташиты. Но чаще всего можно списать домашку откуда-нибудь.
    Больше игр нет

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

    parallelno(25.07.2022)

  10. #39

    Регистрация
    29.06.2022
    Адрес
    г. Ирвайн, США
    Сообщений
    408
    Спасибо Благодарностей отдано 
    590
    Спасибо Благодарностей получено 
    340
    Поблагодарили
    109 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    О, спасибо большое. Добавлю в первый пост

    - - - Добавлено - - -

    Списать то можно, но иногда получается как у меня. Несколько часов поиска несуществующего бага )

    - - - Добавлено - - -

    Нашел вот такую инфу в технической документации:
    https://github.com/svofski/vector06c...al_Description

    Программа, работающая по прерыванию, производит программирование ВВ55
    на режим, позволяющий опросить клавиатуру. Поэтому перед возвратом из
    подпрограммы необходимо обратно восстановить дисплейный режим и значения
    портов, определяющих номер верхней строки, цвет рамки, режим 256*256 или
    512*256 и т.п. Также необходимо разрешить прерывание,

    но в секретах не востанавливается дисплейный режим.
    Код:
    ...
            LDA  IndRus      ;взять признак включения индикатора "РУС/LAT"
            MOV  B,A         ;временно поместить в регистр "B"
            LDA  Rele        ;взять признак включения реле из ячейки "Rele" и
            ORA  B           ;об'единить с признаком включения индикатора "РУС/LAT"
            OUT  01          ;вывести сигналы управления индикатором и реле в порт 01
            POP  PSW         ;вернуть все регистры из стека
    ...
    Насколько это критично? и нужно ли всегда программировать порт 01 как в примере выше?

  11. #40

    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    8,393
    Спасибо Благодарностей отдано 
    763
    Спасибо Благодарностей получено 
    2,367
    Поблагодарили
    1,317 сообщений
    Mentioned
    39 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от parallelno Посмотреть сообщение
    но в секретах не востанавливается дисплейный режим.
    Код:
            MVI  A,88h       ;установить режимы портов 02-вывод, 03-вывод
            OUT  00          ;мл. 4 бита порта 01 - вывод, старшие 4 бита - ввод
            LDA  Border      ;взять цвет бордюра ячейки "Border" (матем. код) и
            OUT  02          ;установить цвет бордюра на 4-х младших битах порта 02
            LDA  Scroll      ;взять из ячейки "Scroll"вертикальное положение экрана
            OUT  03          ;и установить в порт 03
            LDA  IndRus      ;взять признак включения индикатора "РУС/LAT"
            MOV  B,A         ;временно поместить в регистр "B"
            LDA  Rele        ;взять признак включения реле из ячейки "Rele" и
            ORA  B           ;об'единить с признаком включения индикатора "РУС/LAT"
            OUT  01          ;вывести сигналы управления индикатором и реле в порт 01
            POP  PSW         ;вернуть все регистры из стека

Страница 4 из 31 ПерваяПервая 12345678 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Программирование на ассемблере
    от shuran33 в разделе Вектор
    Ответов: 341
    Последнее: 05.11.2025, 20:00
  2. Программирование на ассемблере
    от tnt23 в разделе Океан-240
    Ответов: 6
    Последнее: 30.10.2025, 12:56
  3. Программирование графики MSX
    от CityAceE в разделе MSX
    Ответов: 57
    Последнее: 23.10.2025, 08:53
  4. Программирование NES
    от Tronix в разделе Nintendo
    Ответов: 6
    Последнее: 08.07.2015, 21:21
  5. Программирование на пентеве.
    от Kakos_nonos в разделе Программирование
    Ответов: 2
    Последнее: 23.03.2013, 14:08

Ваши права

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