User Tag List

Страница 12 из 43 ПерваяПервая ... 8910111213141516 ... ПоследняяПоследняя
Показано с 111 по 120 из 429

Тема: Апогей-БК01 и Апогей-БК01Ц: Внешний ROM диск

  1. #111

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,926
    Спасибо Благодарностей отдано 
    105
    Спасибо Благодарностей получено 
    291
    Поблагодарили
    217 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от vinxru Посмотреть сообщение
    Теперь будет так:
    Единственный недостаток этого загрузчика (как, впрочем, и предыдущей его версии) - слишком длинный
    При 11-битной адресации размер одного ряда будет 2Кб, а загрузчик потребует 107 байт по диагонали, т.е. эта диагональ растянется на 214Кб.

    Нужно как можно меньше записать по диагонали, например так:
    Код:
    	org 1h
    	LXI H, 21h    ; 21 21 00
    	NOP           ; 00
    	SPHL          ; F9
    	SPHL          ; F9
    	DCX H         ; 2B
    L0008:	DCX H         ; 2B
    	POP PSW       ; F1
    	POP PSW       ; F1
    	MOV M,A       ; 77
    	MOV M,A       ; 77
    	RST 1         ; CF
    	RST 1         ; CF
    	DS 14h        ; 20 любых байт
    L0023:    DATA-DATA-DATA
    Данный загрузчик преобразует DATA в нормальный код с адреса 000Dh и запустит его. Правда, размер его может быть всего 19 байт, и располагать его в DATA нужно задом наперёд. Но эти 19 байт могут грузить уже нормально, а не по диагонали.

    Вот пример:
    Код:
    	org 0Dh
    	LXI H, 0EE01h  ; 21 01 EE
    	POP B          ; C1          берём из DATA адрес, куда загружать, например 8080h
    	POP D          ; D1          инициализируем регистр E из DATA, должно быть 0000h
    L0012:	MOV M,E        ; 73          row = E/2
    	MVI M,1        ; 36 01       col = 0
    	LDA 0EE00h     ; 3A 00 EE    читаем байт
    	STAX B         ; 02          сохраняем
    	INX B          ; 03
    	INR E          ; 1C          E=E+2
    	INR E          ; 1C
    	RZ             ; C8          если ноль (загрузили 128 байт), то переходим по адресу из DATA, должно совпадать с началом вторичного загрузчика, например 8080h
    	JMP L0012      ; C3 12 00    на начало цикла
    L0020:
    Итого, по диагонали будет записано всего 39 байт, т.е. в пределах 80Кб

    Недостатки:
    - нужно запускать по адресу 0001
    - грузит только 128 байт, т.е. нужно догружать остаток
    Последний раз редактировалось b2m; 24.11.2011 в 13:17.

  2. #112

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,389
    Спасибо Благодарностей отдано 
    1,701
    Спасибо Благодарностей получено 
    2,217
    Поблагодарили
    871 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от b2m Посмотреть сообщение
    Единственный недостаток этого загрузчика (как, впрочем, и предыдущей его версии) - слишком длинный
    При 11-битной адресации размер одного ряда будет 2Кб, а загрузчик потребует 107 байт по диагонали, т.е. эта диагональ растянется на 214Кб.
    Не будет. Загрузчик займет именно столько байт, сколько для него требуется. А при загрузки самих игр данные байты с адресом строки равным адресу колонки, будут пропускаться. Таким образом, теряем только 2кб.

    ---------- Post added at 14:07 ---------- Previous post was at 13:58 ----------

    Нужно как можно меньше записать по диагонали, например так:
    Код:
    	org 1h
    	LXI H, 21h    ; 21 21 00
    	NOP           ; 00
    	SPHL          ; F9
    	SPHL          ; F9
    	DCX H         ; 2B
    L0008:	DCX H         ; 2B
    	POP PSW       ; F1
    	POP PSW       ; F1
    	MOV M,A       ; 77
    	MOV M,A       ; 77
    	RST 1         ; CF
    	RST 1         ; CF
    	DS 14h        ; 20 любых байт
    L0023:    DATA-DATA-DATA
    Хороший загрузчик, хитрый)

  3. #113

    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Программа последовательно читает ПЗУ, пропускает 128 байтный загрузчик расположенный по диагонали. Пропускается 1 байт из 2048. В ПЗУ 256 Кб теряется 128 байт, в ПЗУ 512 Кб теряется 256 байт.

    Инициализация:

    V_BANKL1 = банк * 2
    V_BANKL2 = банк * 2 + 1
    V_BANKH1 = (банк * 2) >> 8
    DE = (смещение * 2) | 0xF000

    Код:
    ; Чтение байта из ПЗУ
    ; Вызывающая программа хранит и не изменяет DE.
    ; DE - это смещение от F000 до FFFF c шагом 2.
    
    READBYTE:	LD A, D
    		LD (0EE02h), A 
    		LD A, E
    V_BANKL1:	CP 0                  ; тут находятся 7 бит банка (*2)
    		JP Z, IGNOREBYTE      ; Пропускаем диагональные байты
    NOIGNOREBYTE:	LD (0EE01h), A 
    V_BANKH1:	LD A, 0               ; тут находится старший бит банка
    		LD (0EE02h), A 
    V_BANKL2:	LD A, 1               ; тут находится 7 бит банка (*2+1)
    		LD (0EE01h), A 
    		LD A, (0EE00h) 		
    		INC E
    		INC E
    		RET NZ                  
    
    ;----------------------------------------------------------------------------
    ; Пересекли границу 128 байт
    
    INCBANK:        INC D
    		RET NZ
    
    		; Пересекли границу 2048 байт
    
    		; Выводим прогресс
    		PUSH DE
    		PUSH BC
    		ld c, '.'
    		call 0F809h
    		POP BC
    		POP DE
    
    		; Увеличиваем счетчики банков
    		PUSH AF
    		LD A, (V_BANKL2+1)
    		INC A
    		JP Z, INCBANK1
    INCBANK2:       LD (V_BANKL1+1), A
    		INC A
    		LD (V_BANKL2+1), A
    		POP AF
    
    		; Адрес чтения
    		LD DE, 0F000h
    
    		RET
    
    ;----------------------------------------------------------------------------
    ; Пересекли границу 256 Кб
    
    INCBANK1:       PUSH HL
    	        LD HL, V_BANKH1+1
     	        INC (HL)
    	        POP HL
    		JP INCBANK2
    
    ;----------------------------------------------------------------------------
    ; Пропускаем диагональные байты
    
    IGNOREBYTE:     LD A, D          ; Пропускаем только адреса 0-128
    		AND 0Fh		 
    		LD A, E
    		JP NZ, NOIGNOREBYTE		
                    INC E
    		INC E
    		CALL Z, INCBANK
    		JP READBYTE
    Последний раз редактировалось vinxru; 23.11.2011 в 16:56.

  4. #114

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,389
    Спасибо Благодарностей отдано 
    1,701
    Спасибо Благодарностей получено 
    2,217
    Поблагодарили
    871 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Киньте кто-нить пару-тройку ромов от апогея, и скажите, сколько они занимают ужатые. Хочу со своим пакером сравнить.

  5. #115

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,926
    Спасибо Благодарностей отдано 
    105
    Спасибо Благодарностей получено 
    291
    Поблагодарили
    217 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Скачай MegaLZ, да возьми любые файлы, хоть от РК, хоть от Апогея. Запакуй и сравни.

  6. #116

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,389
    Спасибо Благодарностей отдано 
    1,701
    Спасибо Благодарностей получено 
    2,217
    Поблагодарили
    871 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от b2m Посмотреть сообщение
    Скачай MegaLZ, да возьми любые файлы, хоть от РК, хоть от Апогея. Запакуй и сравни.
    Вы MegaLZ хотите тут использовать?

  7. #117

    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Вы MegaLZ хотите тут использовать?
    Используем. Нет у меня на работе ROM-ов.

  8. #118

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,389
    Спасибо Благодарностей отдано 
    1,701
    Спасибо Благодарностей получено 
    2,217
    Поблагодарили
    871 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от vinxru Посмотреть сообщение
    Используем. Нет у меня на работе ROM-ов.
    Судя по депакеру, он должен быть не очень быстрый.

  9. #119

    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Судя по депакеру, он должен быть не очень быстрый.
    Распаковка игры гонки, которая занимает 29 Кб, длится 3 518 299 тактов или ~2 секунды.

  10. #120

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,926
    Спасибо Благодарностей отдано 
    105
    Спасибо Благодарностей получено 
    291
    Поблагодарили
    217 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Судя по депакеру, он должен быть не очень быстрый.
    Я оптимизировал депакер для ВМ80.

    Вот, сбацал конфиг, для демонстрации вышеизложенного "хитрого" загрузчика. Незнаю, насколько точно эмулируется 49LF004, но загрузчик работает. Единственное, что не нравится, при загрузке из монитора конечный адрес должен быть нечётный, т.е. типа так:
    R0,4F
    G1
    Вложения Вложения
    Последний раз редактировалось b2m; 24.11.2011 в 13:08.

Страница 12 из 43 ПерваяПервая ... 8910111213141516 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Апогей-БК01 и Апогей-БК01Ц: Обсуждение
    от Mick в разделе Радио-86РК
    Ответов: 370
    Последнее: 24.03.2025, 11:20
  2. Апогей-БК01 и Апогей-БК01Ц: Ремонт
    от ROMка в разделе Радио-86РК
    Ответов: 193
    Последнее: 15.11.2023, 15:09
  3. Продам Апогей БК 01
    от PicNov76 в разделе Барахолка (архив)
    Ответов: 27
    Последнее: 15.07.2010, 07:20
  4. Кому Апогей БК-01 в СПб?
    от spoonlite в разделе Барахолка (архив)
    Ответов: 9
    Последнее: 06.10.2009, 22:57
  5. Корпус от Апогей БК01Ц
    от Mick в разделе Барахолка (архив)
    Ответов: 26
    Последнее: 13.12.2007, 12:16

Ваши права

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