diff --git a/Consts.inc b/Consts.inc index c2015e3..ca18d20 100644 --- a/Consts.inc +++ b/Consts.inc @@ -7,7 +7,8 @@ Help_Msg: DB 13,10 DB 'c - после этого ключа должен идти файл конфы',13,10 DB 'e - EXE файл для запуска после ресета в конфу',13,10 DB 'x - не проверять файл конфы на валидность заголовка и размер',13,10 - DB 'l - страшный ключ, залитая конфа останется до перезаливки или выключения ПК',13,10,13,10 + ;DB 'l - страшный ключ, залитая конфа останется до перезаливки или выключения ПК',13,10 + DB 13,10 DB 'Если указано только имя конфы, то: загрузка конфы -> ресет ->',13,10 DB 'восстановление дефолтной конфы -> ресет -> выход. Пока так.',13,10,13,10 DB 'Программа была зачем-то написана Анатолием Белянским. ',13,10 diff --git a/LDCONF.ASM b/LDCONF.ASM index 11ad7c2..2443ee5 100644 --- a/LDCONF.ASM +++ b/LDCONF.ASM @@ -12,7 +12,7 @@ ; |_| |_| ;----------------------------------------------------------------------; ; Версия проги и инфо для понтов: - DEFINE Ver_ID "0.4 alpha" + DEFINE Ver_ID "0.5 beta" DEFINE e_mail "Tolik.Trek@gmail.com" ; Подгрузка файла с константами BIOS и DSS: @@ -25,16 +25,9 @@ LD C,Dss.PChars RST ToDSS ENDM - - MACRO iDontKnow - ;-----------------; - ; LD A,3 ; установка внутр.портов Z84C15 для перезагрузки - ; OUT (#EE),A - ; OUT (#EF),A ; CASH & ROM - ;-----------------; - ENDM ;----------------------------------------------------------------------; -stack_point EQU #BFFE ; адрес стека + DEFINE App_EXE_Version 1 +stack_point EQU #C000 ; адрес стека SP_Win EQU 64 ; мнимый контроль пересечения стека с кодом org_addr EQU #8000 + CLP_Buffer ; адрес компиляции. program_start EQU START @@ -80,7 +73,7 @@ START: ;-----------------; Сохраняем настройки экрана PUSH IX - LD C,51h + LD C,Dss.GetVMod RST ToDSS POP IX JP NC,1f @@ -157,17 +150,6 @@ START: ;-----------------; если норм. завершение Load_conf 1: -; - ;LD DE,ReloadRET ; Адрес ВОЗВРАТА после перезагрузки - ;LD (SP_Save),SP ; сохраняем стек - ;CALL Set_Ret ; установка данных для возврата -; - ;CALL Set_Acex_Data ; перегрузка данных ACEX в FAST-RAM -; После этой процедуры хитрой ^^^^^^ начинаются глюки -; с вызовом процедур DSS. Чёт она там мудрит с портами -; или с памятью, не разобрался. Поэтому после неё лучше -; сразу в ресет с головой и не париться... - LD A,(ram_blk_id) LD B,A LD A,#FE @@ -224,7 +206,7 @@ ReloadRET: DI ;-----------------; ;-----------------; -1: DI +1: ;DI LD A,(a_key) ; Выход без восстановления дефолтной конфы? AND A @@ -302,15 +284,15 @@ NextReloadRET: LD A,CNF_PORT.CNF_0 ; конфигурация и отключение ПЗУ OUT (SYS_PORT.OFF),A - LD A,(page0_save) ; SET PAGE DOS - OUT (SLOT0),A + ;LD A,(page0_save) ; SET PAGE DOS + ;OUT (SLOT0),A LD A,(page1_save) OUT (SLOT1),A ; Глянуть, может не надо возвращать одну из страниц??? LD A,(page3_save) OUT (SLOT3),A - JP NormExit + ;JP NormExit ;******************************************************* ; _____ _ _ ____ _ @@ -324,13 +306,13 @@ NormExit: LD HL,WellDone _PrintStr LD B,0 - CALL Exit + JR Exit ;-----------------; ; В HL строка с ошибкой BadExit: _PrintStr LD B,1 ; код ошибки - CALL Exit + ;JR Exit ;-----------------; ;-----------------; @@ -442,8 +424,9 @@ Set_keys: LD HL,key_buff ; Вычисляем ячейку хранения ключа ADD HL,BC LD A,(HL) ; и проверяем нет ли там уже ключа. - AND A ; если есть, значит ключ введён 2 раза - SCF + ;AND A ; если есть, значит ключ введён 2 раза + ;SCF + NEG RET NZ ; ошибка - повтор ключа. выход ; OR C ; Тут ОЖИДАЕТСЯ, что А=0. Если С=0, то это ключ "A" @@ -725,72 +708,72 @@ Load_conf: LD HL,ram_pages ; (???освобождение памяти недоделанно???) ;-----------------; -Set_Acex_Data: - DI - IN A,(FastRAM.ON) ; Включение кэша +; Set_Acex_Data: +; DI +; IN A,(FastRAM.ON) ; Включение кэша - LD A,(ram_pages) - OUT (SLOT1),A ; страница с данными файла +; LD A,(ram_pages) +; OUT (SLOT1),A ; страница с данными файла - XOR A - OUT (FastRAM.SLOT0),A ; Страница КЭШ = 0 +; XOR A +; OUT (FastRAM.SLOT0),A ; Страница КЭШ = 0 - LD HL,#5000 ; перекидывание данных в страницу КЭШ = 0 - LD DE,#1000 - LD BC,#3000 - LDIR +; LD HL,#5000 ; перекидывание данных в страницу КЭШ = 0 +; LD DE,#1000 +; LD BC,#3000 +; LDIR - INC A - OUT (FastRAM.SLOT0),A ; Страница КЭШ = 1 - LD A,(ram_pages+1) - OUT (SLOT1),A ; следующая страница с данными файла +; INC A +; OUT (FastRAM.SLOT0),A ; Страница КЭШ = 1 +; LD A,(ram_pages+1) +; OUT (SLOT1),A ; следующая страница с данными файла - LD H,D ; LD HL,4000h - LD D,E ; LD DE,0000h - LD B,H ; LD BC,4000h - LDIR +; LD H,D ; LD HL,4000h +; LD D,E ; LD DE,0000h +; LD B,H ; LD BC,4000h +; LDIR - LD A,2 - OUT (FastRAM.SLOT0),A ; Страница КЭШ = 2 - LD A,(ram_pages+2) - OUT (SLOT1),A ; следующая страница с данными файла +; LD A,2 +; OUT (FastRAM.SLOT0),A ; Страница КЭШ = 2 +; LD A,(ram_pages+2) +; OUT (SLOT1),A ; следующая страница с данными файла - EX DE,HL ; LD HL,4000h - LD D,E ; LD DE,0000h - LD B,H ; LD BC,4000h - LDIR +; EX DE,HL ; LD HL,4000h +; LD D,E ; LD DE,0000h +; LD B,H ; LD BC,4000h +; LDIR - LD A,3 - OUT (FastRAM.SLOT0),A ; Страница КЭШ = 3 - LD A,(ram_pages+3) - OUT (SLOT1),A ; следующая страница с данными файла +; LD A,3 +; OUT (FastRAM.SLOT0),A ; Страница КЭШ = 3 +; LD A,(ram_pages+3) +; OUT (SLOT1),A ; следующая страница с данными файла - LD H,D ; LD HL,4000h - LD D,E ; LD DE,0000h - LD BC,#3EDF - LDIR +; LD H,D ; LD HL,4000h +; LD D,E ; LD DE,0000h +; LD BC,#3EDF +; LDIR - LD HL,Reload_String ; флаг перезагрузки из КЭШ-а - LD DE,#3EF0 - LD C,#10 ; LD BC, 16 - LDIR +; LD HL,Reload_String ; флаг перезагрузки из КЭШ-а +; LD DE,#3EF0 +; LD C,#10 ; LD BC, 16 +; LDIR - LD HL,(ConfMultKeys) ; Если тут устанавливаем не 'IM' ключи - LD A,(l_key) ; то "no multiple! перезагрузка только одна", - AND A ; иначе - хз, ещё не пробовал. - JR Z,1F - LD HL,(ConfMultKeys+2) +; LD HL,(ConfMultKeys) ; Если тут устанавливаем не 'IM' ключи +; LD A,(l_key) ; то "no multiple! перезагрузка только одна", +; AND A ; иначе - хз, ещё не пробовал. +; JR Z,1F +; LD HL,(ConfMultKeys+2) -1: LD (#3EE0),HL +; 1: LD (#3EE0),HL - LD A,(page1_save) ; возврат страницы 1 - OUT (SLOT1),A +; LD A,(page1_save) ; возврат страницы 1 +; OUT (SLOT1),A - XOR A ; Отключение кэша - OUT (FastRAM.SLOT0),A ; пишем в FastRAM.SLOT0 ноль, иначе в - IN A,(FastRAM.OFF) ; нулевое окно биос или ДСС не воткнутся +; XOR A ; Отключение кэша +; OUT (FastRAM.SLOT0),A ; пишем в FastRAM.SLOT0 ноль, иначе в +; IN A,(FastRAM.OFF) ; нулевое окно биос или ДСС не воткнутся - RET +; RET ;******************************************************* diff --git a/Shared_Includes b/Shared_Includes index 653e504..f75e257 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 653e504a06665ec95a8ef2a4257d9cfb18f6d6f0 +Subproject commit f75e25771d6c7048f1c43f9494d3890d907ab68f