-bug: display incorrect disk and channel number on boot

This commit is contained in:
Anatoliy Belyanskiy 2023-09-16 05:03:50 +10:00
parent 94dfe0ed94
commit eeaab481e6
6 changed files with 57 additions and 61 deletions

@ -1 +1 @@
Subproject commit cf19a287a2cfe1946de5c1d50a255c43ae4fc390
Subproject commit b593cb606636c961e49597b9b1e5b6ee72d191c9

View File

@ -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]------------------

View File

@ -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 ;!!!!! ¯®¤ã¬ âì)))

View File

@ -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

View File

@ -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 ' ¯ã᪠¢®ááâ ­®¢«¥­¨ï... '

View File

@ -1,9 +1,9 @@
Сейчас при старте BIOS обрабатываются три варианта перехвата Reset:
‘¥©ç á ¯à¨ áâ à⥠BIOS ®¡à ¡ â뢠îâáï âਠ¢ à¨ ­â  ¯¥à¥å¢ â  Reset:
-------------------------------[Вариант 1]------------------------------
Почти сразу после ресета специальная процедура проверяет в странице #40
в банке 3 по смещению #FFE0 (RESTARTS) наличие программы перехватчика.
Первые 12 байт программы должны быть такими для перехвата:
-------------------------------[‚ à¨ ­â 1]------------------------------
<EFBFBD>®ç⨠áà §ã ¯®á«¥ à¥á¥â  ᯥ樠«ì­ ï ¯à®æ¥¤ãà  ¯à®¢¥àï¥â ¢ áâà ­¨æ¥ #40
¢ ¡ ­ª¥ 3 ¯® ᬥ饭¨î #FFE0 (RESTARTS) ­ «¨ç¨¥ ¯à®£à ¬¬ë ¯¥à¥å¢ â稪 .
<EFBFBD>¥à¢ë¥ 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. Для этого нужно,
чтоб при старте альтеры конфа подключала следующие страницы по банкам:
<EFBFBD>ਠ¤ ­­®¬ ¢ à¨ ­â¥ § £à㧪¨ ¦¥«¥§® ‘¯à¨­â¥à  ­¥ ¯à®¨­¨æ¨ «¨§¨à®¢ ­®,
­¥ à ¡®â ¥â ¥éñ ¤ ¦¥ ª àâ  ¯®à⮢. ‘ª®à¥¥ ¢á¥£®, â ª®© ¢ à¨ ­â
¯¥à¥å¢ â  - íâ® ­ á«¥¤¨¥ Sp97. Š ª ¢ à¨ ­â, ¥£® ¬®¦­® ¨á¯®«ì§®¢ âì ¢ á«ãç ¥
§ ¯ã᪠ ª®­äë ᨫ쭮 ®â«¨ç î饩áï ®â ⮩, çâ® ®¦¨¤ ¥â BIOS. „«ï í⮣® ­ã¦­®,
ç⮡ ¯à¨ áâ à⥠ «ìâ¥àë ª®­ä  ¯®¤ª«îç «  á«¥¤ãî騥 áâà ­¨æë ¯® ¡ ­ª ¬:
BANK0 - ROM #08
BANK1 - RAM #05
BANK2 - RAM #02
BANK3 - RAM #40
------------------------------------------------------------------------
-------------------------------[Вариант 2]------------------------------
-------------------------------[‚ à¨ ­â 2]------------------------------
------------------------------------------------------------------------
-------------------------------[Вариант 3]------------------------------
-------------------------------[‚ à¨ ­â 3]------------------------------
------------------------------------------------------------------------