From eeaab481e69cb3e2f1136010f6375d329fffc9e2 Mon Sep 17 00:00:00 2001 From: Anatoliy Belyanskiy Date: Sat, 16 Sep 2023 05:03:50 +1000 Subject: [PATCH] -bug: display incorrect disk and channel number on boot --- Shared_Includes | 2 +- src/bios/exp/EXP.asm | 33 ++++++++++++-------------- src/bios/loader/loader.asm | 41 ++++++++++++++++----------------- src/bios/rom/SETUP/MAIN.asm | 2 +- src/bios/rom/SETUP/messages.z80 | 12 +++++----- src/doc/перехваты ресета.txt | 28 +++++++++++----------- 6 files changed, 57 insertions(+), 61 deletions(-) diff --git a/Shared_Includes b/Shared_Includes index cf19a28..b593cb6 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit cf19a287a2cfe1946de5c1d50a255c43ae4fc390 +Subproject commit b593cb606636c961e49597b9b1e5b6ee72d191c9 diff --git a/src/bios/exp/EXP.asm b/src/bios/exp/EXP.asm index 7b2a10d..774ca17 100644 --- a/src/bios/exp/EXP.asm +++ b/src/bios/exp/EXP.asm @@ -302,25 +302,22 @@ NO_RESTART: OUT (Z84.PIO.Port_A.Command),A OUT (Z84.PIO.Port_A.Data),A ; PRINTER - PORT - all zeros - ; -樠 ⥬ ⮢ Z84C15- - LD BC,#FF*256 + Z84.SYS.Control - XOR A - OUT (C),A ; 0 register - waits - INC C - OUT (C),A ; set 0 Waits - - DEC C - - LD A,3 ; 3-rd register - Misc.Control Register - OUT (C),A - INC C - XOR A ; !FIXIT Z84, 祭 A - LD A,1 ; !FIXIT Z84, 祭 A - OUT (C),A ; enable CS0, disable CS1 - JP POST_TEST.START -; no boundary set! -; + ; -樠 ⥬ ⮢ Z84C15- + LD BC,#FF*256 + Z84.SYS.Control + XOR A ; Z84.REG.WaitState_Ctrl + OUT (C),A ; Z84.SYS.Control + INC C ; Z84.REG.WaitState_MemBound + OUT (C),A ; Z84.SYS.Data ; set 0 Waits + DEC C + LD A,3 ; Z84.REG.Misc_Ctrl + OUT (C),A ; Z84.SYS.Control + INC C + ;LD A,1 ; enable CS0, disable CS1 + ; no boundary set! + XOR A ; disable CS0, disable CS1 + OUT (C),A ; Z84.SYS.Data + JP POST_TEST.START ;--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--== IF TEST_INT ;----------------[int]------------------ diff --git a/src/bios/loader/loader.asm b/src/bios/loader/loader.asm index e85272a..97f34cd 100644 --- a/src/bios/loader/loader.asm +++ b/src/bios/loader/loader.asm @@ -4,26 +4,25 @@ ;**********************************; MACRO Conf_loader altera_chip .START: DI - LD BC,#FFEE ; !HARDCODE - XOR A ; Z84.REG.WaitState_Ctrl - register - waits - OUT (C),A ; Z84.SYS.Control - INC C ; LD BC,#FFEF - LD A,4 ; !HARDCODE Memory waits set to 1 - OUT (C),A ; Z84.SYS.Data + LD BC,#FF*256 + Z84.SYS.Control + XOR A ; Z84.REG.WaitState_Ctrl - register - waits + OUT (C),A ; Z84.SYS.Control + INC C ; LD BC,#FFEF + LD A,4 ; Memory waits set to 1 + OUT (C),A ; Z84.SYS.Data - DEC C ; Z84.SYS.Control - DEC A ; LD A,3 3-nd register - boundaries - OUT (C),A ; Z84.REG.Misc_Ctrl - INC C ; cs0 enable, cs1 enable, 32-Bit CRC disable, reset output enable, Clock Divide-by-two - OUT (C),A ; Z84.SYS.Data + DEC C ; Z84.SYS.Control + DEC A ; LD A,3 - 3-nd register - boundaries + OUT (C),A ; Z84.REG.Misc_Ctrl + INC C ; cs0 enable, cs1 enable, 32-Bit CRC disable, reset output enable, Clock Divide-by-two + OUT (C),A ; Z84.SYS.Data - DEC C ; Z84.SYS.Control - DEC A ; LD A,2 Z84.REG..CS_Boundary 2-nd register - boundaries - OUT (C),A ; Z84.SYS.Data + DEC C ; Z84.SYS.Control + DEC A ; LD A,2 - Z84.REG..CS_Boundary 2-nd register - boundaries + OUT (C),A ; Z84.SYS.Data INC C - LD A,#FE ; !HARDCODE - OUT (C),A ; boundaries FFFF..F000 - CS1 -; EFFF..0000 - CS0 + LD A,#FE ; boundaries FFFF..F000 - CS1 + OUT (C),A ; EFFF..0000 - CS0 JR .LOOP_S1 ;************************************** @@ -43,8 +42,8 @@ JR NZ,.LOOP_S ; !!!!! ਢ離 HL ; !TODO ? - LD BC,#FFEE ; !HARDCODE - LD A,2 ; !HARDCODE + LD BC,#FF*256 + Z84.SYS.Control + LD A,Z84.REG.CS_Boundary ; !HARDCODE OUT (C),A ; 0 register - waits INC C LD A,#F0 @@ -90,7 +89,7 @@ EXX ;--------------------------------------- - LD DE,#FE00 ; !!!!! Check flag "don't erase fast-ram bitstream" - "IM" + LD DE,#FE00 ;!HARDCODE ; !!!!! Check flag "don't erase fast-ram bitstream" - "IM" LD A,(#FEE0) CP "I" JR NZ,.ONES_CONFIG @@ -101,7 +100,7 @@ DEC D ; multiple config! .ONES_CONFIG: - LD IY,#0107 ;!!!!! 㬠))) + LD IY,#0107 ;!HARDCODE ;!!!!! 㬠))) ;!TEST ;LD IX,#FFFD LD IX,SP2000_ConfID ;!!!!! 㬠))) diff --git a/src/bios/rom/SETUP/MAIN.asm b/src/bios/rom/SETUP/MAIN.asm index 7a78adb..672d6ba 100644 --- a/src/bios/rom/SETUP/MAIN.asm +++ b/src/bios/rom/SETUP/MAIN.asm @@ -1539,11 +1539,11 @@ SETLAND: ; print boot drive number PRINT_CHANEL: AND #0F + LD C,A ; LD A,msgStrings.parPriIdeMA JR Z,.print_chanel ; - LD C,A LD A,msgStrings.parPriIdeSl DEC C JR Z,.print_chanel diff --git a/src/bios/rom/SETUP/messages.z80 b/src/bios/rom/SETUP/messages.z80 index c19d86e..fabf316 100644 --- a/src/bios/rom/SETUP/messages.z80 +++ b/src/bios/rom/SETUP/messages.z80 @@ -542,11 +542,11 @@ msgStrings: ; _mSetStr unknownSTR1, tmp_Counter : DZ "7" ; _mSetStr unknownSTR2, tmp_Counter : DZ "8" _mSetStr boardID, tmp_Counter : DZ 'Board ID : ' - _mSetStr bootFdd, tmp_Counter : DZ 'Start from Diskette... ' -; _mSetStr bootHdd, tmp_Counter : DZ 'Start from Hard disk... ' - _mSetStr bootHdd, tmp_Counter : DZ 'Start from Hard disk at ' - _mSetStr bootCd, tmp_Counter : DZ 'Start from CD-ROM at ' - _mSetStr bootRamDrv, tmp_Counter : DZ 'Start from RAM disk... ' + _mSetStr bootFdd, tmp_Counter : DZ 'Boot from Diskette... ' +; _mSetStr bootHdd, tmp_Counter : DZ 'Boot from Hard disk... ' + _mSetStr bootHdd, tmp_Counter : DZ 'Boot from HDD at ' + _mSetStr bootCd, tmp_Counter : DZ 'Boot from CD-ROM at ' + _mSetStr bootRamDrv, tmp_Counter : DZ 'Boot from RAM disk... ' _mSetStr bootRecovery, tmp_Counter : DZ 'Starting recovery...' _mSetStr bootAltDrv, tmp_Counter : DZ 'Alternative ' _mSetStr bootFail, tmp_Counter : DZ 'fail' ; !FIXIT strFail @@ -692,7 +692,7 @@ msgRusStrings: ; _mSetStrRus unknownSTR2, tmp_Counter : DZ '8" _mSetStrRus boardID, tmp_Counter : DZ 'ID : ' _mSetStrRus bootFdd, tmp_Counter : DZ ' ᪥... ' - _mSetStrRus bootHdd, tmp_Counter : DZ ' ⪮ ᪠ ' + _mSetStrRus bootHdd, tmp_Counter : DZ ' HDD ' _mSetStrRus bootCd, tmp_Counter : DZ ' CD-ROM ' _mSetStrRus bootRamDrv, tmp_Counter : DZ ' RAM ᪠... ' _mSetStrRus bootRecovery, tmp_Counter : DZ ' ⠭... ' diff --git a/src/doc/перехваты ресета.txt b/src/doc/перехваты ресета.txt index b69c7a0..7cf0991 100644 --- a/src/doc/перехваты ресета.txt +++ b/src/doc/перехваты ресета.txt @@ -1,9 +1,9 @@ -Сейчас при старте BIOS обрабатываются три варианта перехвата Reset: + BIOS ࠡ뢠 ਠ 墠 Reset: --------------------------------[Вариант 1]------------------------------ -Почти сразу после ресета специальная процедура проверяет в странице #40 -в банке 3 по смещению #FFE0 (RESTARTS) наличие программы перехватчика. -Первые 12 байт программы должны быть такими для перехвата: +-------------------------------[ਠ 1]------------------------------ + ࠧ ᫥ ᯥ樠쭠 楤 ஢ ࠭ #40 + 3 ᬥ饭 #FFE0 (RESTARTS) 稥 ணࠬ 墠稪. + 12 ணࠬ ⠪ 墠: ORG #FFE0 RESTARTS_PROG: LD HL,RESTARTS ; 3 @@ -14,24 +14,24 @@ RESTARTS_PROG: DJNZ .loop ; 2 NOP ; 1 NOP ; 1 -; ORG #FFEC тут размещается программа перехватчик пользователя -; остаётся 20 байтов на программу. +; ORG #FFEC ࠧ頥 ணࠬ 墠稪 짮⥫ +; 20 ⮢ ணࠬ. -При данном варианте загрузки железо Спринтера не проинициализировано, -не работает ещё даже карта портов. Скорее всего, такой вариант -перехвата - это наследие Sp97. Как вариант, его можно использовать в случае -запуска конфы сильно отличающейся от той, что ожидает BIOS. Для этого нужно, -чтоб при старте альтеры конфа подключала следующие страницы по банкам: + ਠ 㧪 ਭ ந樠஢, + ࠡ⠥ ⮢. ॥ ᥣ, ⠪ ਠ +墠 - ᫥ Sp97. ਠ, ᯮ짮 砥 +᪠ ᨫ쭮 ⫨饩 ⮩, BIOS. ⮣ 㦭, +⮡ 砫 ᫥騥 ࠭ : BANK0 - ROM #08 BANK1 - RAM #05 BANK2 - RAM #02 BANK3 - RAM #40 ------------------------------------------------------------------------ --------------------------------[Вариант 2]------------------------------ +-------------------------------[ਠ 2]------------------------------ ------------------------------------------------------------------------ --------------------------------[Вариант 3]------------------------------ +-------------------------------[ਠ 3]------------------------------ ------------------------------------------------------------------------ \ No newline at end of file