From 4a58354e010533c37c1f55072d4f3b6c7ef5919a Mon Sep 17 00:00:00 2001 From: Anatoliy Belyanskiy Date: Sat, 15 Jun 2024 04:52:37 +1000 Subject: [PATCH] bugfixes --- src/bios/exp/EXP.asm | 305 ++++++++++++++++---------------- src/bios/rom/SETUP/messages.z80 | 4 +- src/bios/shared/RECOVERY.IMG | Bin 98304 -> 98304 bytes 3 files changed, 158 insertions(+), 151 deletions(-) diff --git a/src/bios/exp/EXP.asm b/src/bios/exp/EXP.asm index 80e0a9b..fe1669c 100644 --- a/src/bios/exp/EXP.asm +++ b/src/bios/exp/EXP.asm @@ -251,22 +251,22 @@ BoardID: ; any adress < #C0 with mask %xxxx0000 ; таблица для Sprinter POST-Tester-a TABLE_X: ; таблица для Sprinter POST-Tester-a -.v0: DB 00101000b ; "0" -.v1: DB 10111101b ; "1" -.v2: DB 00110010b ; "2" -.v3: DB 00110100b ; "3" -.v4: DB 10100101b ; "4" -.v5: DB 01100100b ; "5" -.v6: DB 01100000b ; "6" -.v7: DB 00111101b ; "7" -.v8: DB 00100000b ; "8" -.v9: DB 00100100b ; "9" -.vA: DB 00100001b ; "A" -.vB: DB 11100000b ; "B" -.vC: DB 01101010b ; "C" -.vD: DB 10110000b ; "D" -.vE: DB 01100010b ; "E" -.vF: DB 01100011b ; "F" +.v0: DB %00101000 ; "0" a +.v1: DB %10111101 ; "1" ___ +.v2: DB %00110010 ; "2" f | g | b +.v3: DB %00110100 ; "3" |___| +.v4: DB %10100101 ; "4" e | | c +.v5: DB %01100100 ; "5" |___| +.v6: DB %01100000 ; "6" d +.v7: DB %00111101 ; "7" +.v8: DB %00100000 ; "8" a - 7 +.v9: DB %00100100 ; "9" b - 6 +.vA: DB %00100001 ; "A" f - 4 +.vB: DB %11100000 ; "B" g - 3 +.vC: DB %01101010 ; "C" e - 2 +.vD: DB %10110000 ; "D" c - 1 +.vE: DB %01100010 ; "E" d - 0 +.vF: DB %01100011 ; "F" ENDIF ;======================================= ; @@ -953,140 +953,147 @@ Setup_to_RAM: ;*********************************** ; Инициализация портов PORTS_INIT: -; включить TURBO - LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON - OUT (SYS_PORT.ROM),A - -; RESET to ISA - LD BC,PORT_ISA - LD A,#FF - OUT (C),A -.isa_reset: - DEC A ;!FIXIT может убрать цикл ожидания и запулить 0 в ису после инита клавы? - JR NZ,.isa_reset - OUT (C),A -; Инициализация последовательного порта клавиатуры - ; reg 0 - XOR A ;LD A,0 - OUT (Z84.SIO.Ch_A.Ctrl),A - ; reg 4 - LD A,4 - OUT (Z84.SIO.Ch_A.Ctrl),A - ;INC A ;LD A,5 - OUT (Z84.SIO.Ch_A.Ctrl),A - ; reg 3 - LD A,3 - OUT (Z84.SIO.Ch_A.Ctrl),A - LD A,#C1 - OUT (Z84.SIO.Ch_A.Ctrl),A - ; reg 5 - LD A,5 - OUT (Z84.SIO.Ch_A.Ctrl),A - LD A,#62 ;60, 61 - OUT (Z84.SIO.Ch_A.Ctrl),A - ; reg 1 - LD A,1 - OUT (Z84.SIO.Ch_A.Ctrl),A - DEC A ;LD A,0 ; #18 включение прерываний - OUT (Z84.SIO.Ch_A.Ctrl),A -; Инициализация мыши -.mouse: ; Инициализация таймера мыши - LD A,#55 - OUT (Z84.CTC.Ch_0),A - LD A,#2D - OUT (Z84.CTC.Ch_0),A - ; reg 0 - XOR A ;LD A,0 - OUT (Z84.SIO.Ch_B.Ctrl),A - ; reg 4 - LD A,4 - OUT (Z84.SIO.Ch_B.Ctrl),A - ;LD A,#45 - LD A,#40 - OUT (Z84.SIO.Ch_B.Ctrl),A - ; reg 3 - LD A,3 - OUT (Z84.SIO.Ch_B.Ctrl),A - LD A,#41 - OUT (Z84.SIO.Ch_B.Ctrl),A - ; reg 5 - LD A,5 - OUT (Z84.SIO.Ch_B.Ctrl),A - LD A,#E0 - OUT (Z84.SIO.Ch_B.Ctrl),A - ; reg 1 - LD A,1 - OUT (Z84.SIO.Ch_B.Ctrl),A - DEC A ;LD A,0 - OUT (Z84.SIO.Ch_B.Ctrl),A -; Инициализация параллельного порта 1 (принтер) - ; для POST-Tester-а - LD A,#CF ; BITS I/O - OUT (Z84.PIO.Port_A.Command),A - XOR A - OUT (Z84.PIO.Port_A.Command),A ; ALL - out - OUT (Z84.PIO.Port_A.Data),A ; DATA - all zeros - ; для printer-a - LD A,#0F ; OUT - OUT (Z84.PIO.Port_A.Command),A - OUT (Z84.PIO.Port_A.Command),A -; Инициализация параллельного порта 2 (INT/DMA ISA) - LD BC,Z84.PIO.Port_B.Command ;только через регистр BC, иначе Альтера перехватит - LD A,#CF ; BITS I/O - OUT (C),A - LD A,#3F - OUT (C),A - LD A,#C0 - OUT (Z84.PIO.Port_B.Data),A -; "Заглушение" ковокса - XOR A - OUT (CBL.SYS_PORT),A - LD BC,CBL.OUT - LD A,#80 -.CBL_MUTE: - OUT (C),A - DJNZ .CBL_MUTE -; Сброс контроллера дисковода - ; Включить доступ к контроллеру диска (третья конфа) - LD A,CNF_PORT.CNF_3 + ROM.BIOS - OUT (SYS_PORT.ROM),A - OUT (FDC_93.DrvCTRL),A - push hl - pop hl - LD A,#3C ;!HARDCODE команда для ВГ93 - OUT (FDC_93.DrvCTRL),A - push hl - pop hl - XOR A - OUT (FDC_93.Command),A - ; Выключить доступ к контроллеру диска - LD A,CNF_PORT.CNF_0 + ROM.BIOS - OUT (SYS_PORT.ROM),A - ; set HDD1/not-HDD2 - LD A,IDE.Chanel.Primary - OUT (IDE.Chanel.Set),A - LD BC,#7FFD - LD A,#10 - OUT (C),A ; BASIC_48 mode - LD B,#1F - LD A,01 - OUT (C),A ; RAM-0 mode !!! + ; включить TURBO + LD A,CNF_PORT.CNF_0 + CNF_PORT.TURBO.ON + OUT (SYS_PORT.ROM),A + ; ; RESET to ISA + ; LD BC,PORT_ISA + ; LD A,#FF + ; OUT (C),A + ; .isa_reset: + ; DEC A ;!FIXIT может убрать цикл ожидания и запулить 0 в ису после инита клавы? + ; JR NZ,.isa_reset + ; OUT (C),A ; - CALL .clean_kbd_buf - JR .clean_mouse_buf -;Clearing the keyboard buffer -.clean_kbd_buf: - IN A,(Z84.SIO.Ch_A.Ctrl) - RRCA - RET NC - IN A,(Z84.SIO.Ch_A.Data) - JR .clean_kbd_buf -.clean_mouse_buf: - IN A,(Z84.SIO.Ch_B.Ctrl) - RRCA - RET NC - IN A,(Z84.SIO.Ch_B.Data) - JR .clean_kbd_buf + ; Инициализация последовательного порта клавиатуры + ; reg 0 + XOR A ;LD A,0 + OUT (Z84.SIO.Ch_A.Ctrl),A + ; reg 4 + LD A,4 + OUT (Z84.SIO.Ch_A.Ctrl),A + ;INC A ;LD A,5 + OUT (Z84.SIO.Ch_A.Ctrl),A + ; reg 3 + LD A,3 + OUT (Z84.SIO.Ch_A.Ctrl),A + LD A,#C1 + OUT (Z84.SIO.Ch_A.Ctrl),A + ; reg 5 + LD A,5 + OUT (Z84.SIO.Ch_A.Ctrl),A + LD A,#62 ;60, 61 + OUT (Z84.SIO.Ch_A.Ctrl),A + ; reg 1 + LD A,1 + OUT (Z84.SIO.Ch_A.Ctrl),A + DEC A ;LD A,0 ; #18 включение прерываний + OUT (Z84.SIO.Ch_A.Ctrl),A +.mouse: ; Инициализация мыши + ; Инициализация таймера мыши + LD A,#55 + OUT (Z84.CTC.Ch_0),A + LD A,#2D + OUT (Z84.CTC.Ch_0),A + ; reg 0 + XOR A ;LD A,0 + OUT (Z84.SIO.Ch_B.Ctrl),A + ; reg 4 + LD A,4 + OUT (Z84.SIO.Ch_B.Ctrl),A + ;LD A,#45 + LD A,#40 + OUT (Z84.SIO.Ch_B.Ctrl),A + ; reg 3 + LD A,3 + OUT (Z84.SIO.Ch_B.Ctrl),A + LD A,#41 + OUT (Z84.SIO.Ch_B.Ctrl),A + ; reg 5 + LD A,5 + OUT (Z84.SIO.Ch_B.Ctrl),A + LD A,#E0 + OUT (Z84.SIO.Ch_B.Ctrl),A + ; reg 1 + LD A,1 + OUT (Z84.SIO.Ch_B.Ctrl),A + DEC A ;LD A,0 + OUT (Z84.SIO.Ch_B.Ctrl),A + ; Инициализация параллельного порта 1 (принтер) + ; для POST-Tester-а + LD A,#CF ; BITS I/O + OUT (Z84.PIO.Port_A.Command),A + XOR A + OUT (Z84.PIO.Port_A.Command),A ; ALL - out + OUT (Z84.PIO.Port_A.Data),A ; DATA - all zeros + ; для printer-a + LD A,#0F ; OUT + OUT (Z84.PIO.Port_A.Command),A + OUT (Z84.PIO.Port_A.Command),A + ; Инициализация параллельного порта 2 (INT/DMA ISA) + LD BC,Z84.PIO.Port_B.Command ;только через регистр BC, иначе Альтера перехватит + LD A,#CF ; BITS I/O + OUT (C),A + LD A,#3F + OUT (C),A + LD A,#C0 + OUT (Z84.PIO.Port_B.Data),A + ; "Заглушение" ковокса и ресет ISA + ; ресет ISA часть 1 + LD BC,PORT_ISA + LD A,#FF + OUT (C),A + ; глушим ковокс + XOR A + OUT (CBL.SYS_PORT),A + LD BC,CBL.OUT + LD A,#80 +.CBL_MUTE: OUT (C),A + DJNZ .CBL_MUTE + ; ресет ISA часть 2 после небольшой паузы + LD BC,PORT_ISA + XOR A + OUT (C),A + ; Сброс контроллера дисковода + ; Включить доступ к контроллеру диска (третья конфа) + LD A,CNF_PORT.CNF_3 + ROM.BIOS + OUT (SYS_PORT.ROM),A + OUT (FDC_93.DrvCTRL),A + push hl + pop hl + LD A,#3C ;!HARDCODE команда для ВГ93 + OUT (FDC_93.DrvCTRL),A + push hl + pop hl + XOR A + OUT (FDC_93.Command),A + ; Выключить доступ к контроллеру диска + LD A,CNF_PORT.CNF_0 + ROM.BIOS + OUT (SYS_PORT.ROM),A + ; set HDD1/not-HDD2 + LD A,IDE.Chanel.Primary + OUT (IDE.Chanel.Set),A + LD BC,#7FFD + LD A,#10 + OUT (C),A ; BASIC_48 mode + LD B,#1F + LD A,01 + OUT (C),A ; RAM-0 mode !!! + ; очистка буферов клавиатуры и мыши в SIO + CALL .clean_kbd_buf + JR .clean_mouse_buf +.clean_kbd_buf: ; Clearing the keyboard buffer + IN A,(Z84.SIO.Ch_A.Ctrl) + RRCA + RET NC + IN A,(Z84.SIO.Ch_A.Data) + JR .clean_kbd_buf +.clean_mouse_buf:; Clearing the mouse buffer + IN A,(Z84.SIO.Ch_B.Ctrl) + RRCA + RET NC + IN A,(Z84.SIO.Ch_B.Data) + JR .clean_mouse_buf ;--------------------------------------- ;-----------------------------------------------------------------------; diff --git a/src/bios/rom/SETUP/messages.z80 b/src/bios/rom/SETUP/messages.z80 index 32e1de7..0a27ed0 100644 --- a/src/bios/rom/SETUP/messages.z80 +++ b/src/bios/rom/SETUP/messages.z80 @@ -526,7 +526,7 @@ msgStrings: _mSetStr ideSkiped, tmp_Counter : DZ 'Skipped ' _mSetStr ideFail, tmp_Counter : DZ 'Fail ' ; !FIXIT strFail _mSetStr spModel, tmp_Counter : DZ 'Model : ' -.str_ACEX_MODEL EQU $$$+2 ; указатель на строку ниже для патча апдейтером +.str_ACEX_MODEL EQU $$$+7 ; указатель на строку ниже для патча апдейтером _mSetStr spCNFver, tmp_Counter : DZ 'Core 1K30 : v' _mSetStr spMemory, tmp_Counter : DZ 'Memory : ' _mSetStr cmosFound, tmp_Counter : DZ 'CMOS : Found' @@ -677,7 +677,7 @@ msgRusStrings: _mSetStrRus ideSkiped, tmp_Counter : DZ 'Пропущен ' _mSetStrRus ideFail, tmp_Counter : DZ 'Не определён ' _mSetStrRus spModel, tmp_Counter : DZ 'Модель : ' -.str_ACEX_MODEL EQU $$$+2 ; указатель на строку ниже для патча апдейтером ; !FIXIT ? вытягивать через FN_CRIPT.Acex_ver ? +.str_ACEX_MODEL EQU $$$+7 ; указатель на строку ниже для патча апдейтером ; !FIXIT ? вытягивать через FN_CRIPT.Acex_ver ? _mSetStrRus spCNFver, tmp_Counter : DZ 'Ядро 1K30 : v' _mSetStrRus spMemory, tmp_Counter : DZ 'Память : ' _mSetStrRus cmosFound, tmp_Counter : DZ 'CMOS : Найден' diff --git a/src/bios/shared/RECOVERY.IMG b/src/bios/shared/RECOVERY.IMG index bb92284f03e0b2492eeddab5250ce240651374ae..b43d0d6176f9e1067733c4bb6d1d47782c56cf2e 100755 GIT binary patch delta 14351 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 delta 15382 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 z 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 fz5N`zn4dD