diff --git a/Shared_Includes b/Shared_Includes index 42dfec0..68681fb 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 42dfec072030351eb386205ead32983bbc1c4909 +Subproject commit 68681fbc50da463f1debae860e6db64603886d39 diff --git a/src/bios/exp/EXP.asm b/src/bios/exp/EXP.asm index d3d0aad..b2c41a3 100644 --- a/src/bios/exp/EXP.asm +++ b/src/bios/exp/EXP.asm @@ -71,8 +71,7 @@ RST_30: ;======================================= BLOCK #38-$,0 ; INTERUPT Point -RST38: - IF TEST_INT +RST38: IF TEST_INT ;INT: PUSH BC PUSH AF @@ -966,78 +965,71 @@ PORTS_INIT: 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 - - INC A ;LD A,1 + ; reg 4 + LD A,4 OUT (Z84.SIO.Ch_A.Ctrl),A - DEC A ;LD A,0 ; #18 включение прерываний + ;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 - - LD A,4 - OUT (Z84.SIO.Ch_A.Ctrl),A - -; ????? 5/7 паритет? -; LD A,5 - LD A,7 - 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: XOR A ;LD A,0 - OUT (Z84.SIO.Ch_B.Ctrl),A - - INC A ;LD A,1 - OUT (Z84.SIO.Ch_B.Ctrl),A - DEC A ;LD A,0 - OUT (Z84.SIO.Ch_B.Ctrl),A - - LD A,3 - OUT (Z84.SIO.Ch_B.Ctrl),A - LD A,#41 - OUT (Z84.SIO.Ch_B.Ctrl),A - - LD A,4 - OUT (Z84.SIO.Ch_B.Ctrl),A - //LD A,#44 - LD A,#47 - OUT (Z84.SIO.Ch_B.Ctrl),A - - LD A,5 - OUT (Z84.SIO.Ch_B.Ctrl),A - LD A,#E0 - OUT (Z84.SIO.Ch_B.Ctrl),A - -; Инициализация таймера мыши +.mouse: ; Инициализация таймера мыши LD A,#55 OUT (Z84.CTC.Ch_0),A LD A,#2D OUT (Z84.CTC.Ch_0),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 + ; 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 @@ -1046,7 +1038,6 @@ PORTS_INIT: OUT (C),A LD A,#C0 OUT (Z84.PIO.Port_B.Data),A - ; "Заглушение" ковокса XOR A OUT (CBL.SYS_PORT),A @@ -1055,11 +1046,10 @@ PORTS_INIT: .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 @@ -1073,22 +1063,30 @@ PORTS_INIT: LD A,CNF_PORT.CNF_0 + ROM.BIOS OUT (SYS_PORT.ROM),A ; set HDD1/not-HDD2 - LD A,IDE.Chanel.Primary ;!HARDCODE сделать через метку + 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 !!! - ;Clearing the keyboard buffer + ; + CALL .clean_kbd_buf + JR .clean_mouse_buf +;Clearing the keyboard buffer .clean_kbd_buf: IN A,(Z84.SIO.Ch_A.Ctrl) - AND 1 - RET Z + 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 ;--------------------------------------- ;-----------------------------------------------------------------------; diff --git a/src/bios/rom/SETUP/MAIN.asm b/src/bios/rom/SETUP/MAIN.asm index d2814c9..358a655 100644 --- a/src/bios/rom/SETUP/MAIN.asm +++ b/src/bios/rom/SETUP/MAIN.asm @@ -491,7 +491,7 @@ START: ;LD A,#1C ;CALL READCMS ;PUSH AF - ;LD A,#1B ;!TODO CMOS + ;LD A,CMOS_CELL.HardwareConfiguration ;CALL READCMS ;POP DE ;LD E,A @@ -503,9 +503,9 @@ START: LD A,SYS_PAGE OUT (C),A -; LD (#C13A),DE CONFIG_DE +; LD (SYS_PAGE.CONFIG_DE),DE - LD HL,SYS_PAGE.INT_ADRESS ;EXTENDED INTERRUPT + LD HL,SYS_PAGE.INT_ADRESS ;EXTENDED INTERRUPT XOR A LD (HL),A INC L @@ -891,10 +891,11 @@ RECOVERYstart: PrepareToBOOT: - CALL INT_ON - HALT ; без него не срабатывает зажимание шифта при старте доса для отмены старта system.exe - CALL INT_OFF + ;CALL INT_ON + HALT CALL PORTS_INIT.clean_kbd_buf ;Clearing the keyboard buffer + CALL PORTS_INIT.clean_mouse_buf ;Clearing the mouse buffer + CALL INT_OFF ; тут не должно быть испорчено значение BC CALL G_VALUE LD B,0 diff --git a/src/bios/shared/RECOVERY.IMG b/src/bios/shared/RECOVERY.IMG index 095f337..f5332a9 100755 Binary files a/src/bios/shared/RECOVERY.IMG and b/src/bios/shared/RECOVERY.IMG differ