User Tag List

Показано с 1 по 10 из 342

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

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #11

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

    По умолчанию

    Цитата Сообщение от Improver Посмотреть сообщение
    Если глянуть исходники МДОС Т-72, то там палитру тоже устанавливали за два раза, но между ними была небольшая задержка:
    Код:
    	...
    L_F613:	OUT     00Ch	; палитра -- установка физического цвета
    	PUSH PSW
    	POP  PSW
    	PUSH PSW
    	POP  PSW
    	DCR  E
    	DCR  D		; (счётчик -1)
    	OUT     00Ch	; палитра -- установка физического цвета, ещё раз
    	...
    Думаю, такой вариант можно считать оптимальным и по скорости, и по объёму.

    Все ПЗУ на Векторах, как правило, имели при запуске команду отключения КД. Кроме того, квази-диск отключает БЛК-СБР -- там это сделано аппаратно, таким образом, если демку будут запускать, например, загрузкой "с ленты", или из загрузочной записи дискеты, то можно этот момент пропустить, а если из под МДОСа -- то эти команды обязательны.
    Спасибо за этот сниппет. Очень класный.
    Вот мой вариант который может тищить данные с квазидиска и сетить палитру без отключения прерываний. За основу был взят приведенный тобой код.
    Код:
    ; Set palette copied from the ram-disk no blocking interruptions
    ; input: 
    ; de - the addr of the first item in the palette
    ; use: 
    ; hl, bc, a
    PALETTE_COLORS = 16
    
    SetPaletteFromRamDisk:
    			hlt
    			; store sp
    			lxi h, $0000
    			dad sp
    			shld @restoreSp+1
    			; copy unpacked data into the ram_disk
    			xchg
    			RAM_DISK_ON()
    			sphl
    
    			mvi	a, PORT0_OUT_OUT
    			out	0
    			mvi e, $00
    @loop:		
    			pop b
    			; even color
    			mov	a, e
    			out	2
    			mov a, c
    			out $0c
    			xthl ; delay 24
    			xthl ; delay 24
    			inr e ; counter plus delay 8
    			inr h ; delay 8
    			dcr h ; delay 8
    			out $0c
    			; odd color
    			mov	a, e
    			out	2
    			mov a, b
    			out $0c
    			xthl ; delay 24
    			xthl ; delay 24
    			inr e ; counter plus delay 8
    			inr h ; delay 8
    			dcr h ; delay 8		
    			out $0c
    			mov a, e
    			cpi PALETTE_COLORS
    			jnz	@loop
    
    @restoreSp: lxi sp, TEMP_ADDR
    			RAM_DISK_OFF()
    			ret
    			.closelabels
    
    ; mount the ram-disk
    .macro RAM_DISK_ON(_command = RAM_DISK0_B0_STACK)
    			mvi a, _command
    			out $10
    .endmacro
    
    ; dismount the ram-disk
    .macro RAM_DISK_OFF()
    			xra a
    			out $10
    .endmacro
    Последний раз редактировалось parallelno; 17.08.2022 в 06:04.

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

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

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

Похожие темы

  1. Вычисление числа Пи на ассемблере
    от perestoronin в разделе Разное
    Ответов: 330
    Последнее: 06.08.2025, 15:04
  2. Ответов: 275
    Последнее: 16.12.2018, 23:01
  3. try-catch на ассемблере z80
    от siril в разделе Программирование
    Ответов: 22
    Последнее: 30.10.2012, 21:17
  4. Продам книгу- AMIGA: программирование на ассемблере
    от Doctor Max в разделе Барахолка (архив)
    Ответов: 11
    Последнее: 01.03.2012, 00:35
  5. Подпрограмма на ассемблере в памяти?
    от jimled в разделе Программирование
    Ответов: 1
    Последнее: 29.11.2009, 06:46

Ваши права

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