User Tag List

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

Тема: ROBOTZ! Releases

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

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

    Регистрация
    01.03.2011
    Адрес
    Stamford
    Сообщений
    336
    Спасибо Благодарностей отдано 
    46
    Спасибо Благодарностей получено 
    49
    Поблагодарили
    20 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Код из Robotz 0.65a

    Пояснения:
    Assembler: Microsoft M80

    ISR прерывает выполнение в multi bank mode: спрайты с 2-х байтными gaps в отдельном 64К банке с доступом стековыми операциями, операции память-память происходят в основной RAM

    PGE_OFF - макро, выключающее банкинг и включающее 64K main RAM в адресное пространство 8080 на Векторе
    XTB_SP - стек для ISR в основной памяти (предустановлен при настройке рендерера спрайтов)
    XTB_RDM - слово-состояние порта 10h (банк со спрайтами, куда нужно переключиться по выходу из ISR, также предустановлено заранее)


    Код:
    RamDrv	EQU	10h
    
    PGE_SET	Macro
    	out	RamDrv	
    EndM
    
    PGE_OFF	Macro
    	xra	a
    	PGE_SET
    EndM
    ;===========================================
    ; Tile Renderer Interrupt Service Routine
    ;-------------------------------------------
    ;INPUT: <BC> stack top restore value
    ;OUTPUT:  none                                               
    ;===========================================
    IsrXTB:	shld	XTB_HL
    	pop	h
    	shld	XTB_RET
    	push	PSW
    	lxi	h,0
    	dad	SP	; <CY> is FUBARed
    	shld	XTB_ESP
    	PGE_OFF		; assumption is that XTB_SP is in main RAM bank
    	DB	(lxi	SP)
    XTB_SP:	DW	0
    	push	d
    	push	b
    	call	SndCBH	; call sound/SFX callback hook with assumption
    	;PGE_OFF	; that SndCBH will set STACK access to main RAM
    	pop	b	; bank 0 on return (PgeRDM set satisfies this)
    	pop	d
    	DB	(mvi a)
    XTB_RDM:DB	0
    	PGE_SET
    	DB	(lxi	sp)
    XTB_ESP:DW	0	; entry stack
    	pop	PSW
    	push	b	; restore stack, corrupted by XTB_RET
    	pop	b	; using <BC>
    	DB	(lxi	h)
    XTB_HL:	DW	0
    	ei
    	DB	(jmp)
    XTB_RET:DW	0
    Последний раз редактировалось PPC; 04.07.2021 в 15:43. Причина: Пояснения к значению XTB_RDM

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

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

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

Ваши права

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