User Tag List

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

Тема: Ищу желающих выступить в роли программиста

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

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

    Регистрация
    31.12.2017
    Адрес
    г. Реж
    Сообщений
    156
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    34
    Поблагодарили
    17 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ALKO Посмотреть сообщение
    Жалко конечно, что 128к формат такой геморный, и из-за него откусываются аж 16кб линейной памяти.
    Так ведь можно весь код, который не относится к работе с экранами, раскидать по нужным банкам и вызывать. К примеру вот так

    Скрытый текст


    Код:
    ;--------этот кусок всегда в основной банке
    FUNCTION
    		LD	B,1		;это номер банки с функцией
    		LD	HL,FUNCTION_PG1	;адрес тела функции
    		CALL	PAGE_PROC	;вызов функции
    		RET
    ;...........
    		PAGE	1
    ;--------этот кусок будет уже банке 1
    FUNCTION_PG1	
    		;тут основной код функции
    		ret
    ;---------------------------
    		PAGE	2
    ;эта функция в основной памяти
    ;временно подключает нужную банку и запускает в ней функцию
    PAGE_PROC
    		LD	(PROC_ADDR+1),HL	;запишем адрес в CALL
    		LD	A,(PORT_COPY)		;текущая конфигурация порта
    		PUSH	AF			;сохраним её
    		LD	A,B
    		CALL	BIND_BUF_A		;подключим банку с функцией
    PROC_ADDR	CALL	0			;вызовем её
    		POP	AF			;восстановим состояние порта
    		CALL	BIND_BUF_A
    		RET
    ;---------------------------
    		PAGE	2
    ;эта функция в основной памяти
    ;Бинд буффера A
    BIND_BUF_A
    	DI
    	LD	B,A
    	LD      A,(PORT_COPY)
    	AND	248
    	OR	B
    	LD	(PORT_COPY),A
    	LD	BC,#7FFD
            OUT	(C),A
    	EI
            RET
    [свернуть]


    или я чего-то не понял насчёт откусывания памяти?
    пс: я вчера бухой писал, так что если чего не обращайте внимания

    чуть чуть по тактам побыстрее(можно придумать что-то ещё быстрее) можно так, вместо call использовать jp

    Скрытый текст


    Код:
    ;--------в основной банке
    FUNCTION
    		LD	B,1		;это номер банки с функцией
    		LD	HL,FUNCTION_INPG;указатель на адрес тела функции
    		CALL	PAGE_PROC	;вызов функции
    		RET
    FUNCTION_INPG	DEFW	FUNCTION_PG1
    ;...........
    		PAGE	1
    FUNCTION_PG1	
    		;тут основной код функции
    		JP	RET_ADDR
    ;---------------------------
    		PAGE	2
    PAGE_PROC
    		LD	A,(PORT_COPY)		;текущая конфигурация порта
    		PUSH	AF			;сохраним её
    		LD	A,B
    		CALL	BIND_BUF_A		;подключим банку с функцией
    		JP	(HL)			;вызовем её
    RET_ADDR	POP	AF			;восстановим состояние порта
    		CALL	BIND_BUF_A
    		RET
    [свернуть]
    Последний раз редактировалось Dwa83; 22.08.2020 в 17:15.

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

    dimidus(31.08.2020)

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

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

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

Похожие темы

  1. с Днем Программиста!
    от goblinish в разделе Поздравления
    Ответов: 17
    Последнее: 16.09.2015, 02:04
  2. С Днём компьютерщика и программиста !
    от Хорошист в разделе Поздравления
    Ответов: 4
    Последнее: 17.02.2013, 05:54
  3. С Днём компьютерщика и программиста !
    от Хорошист в разделе Новости
    Ответов: 5
    Последнее: 17.02.2013, 05:54
  4. Ищу желающих написать программу для ВИДЕО-игры
    от ALKO в разделе Программирование
    Ответов: 26
    Последнее: 17.02.2012, 15:07

Ваши права

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