From 73f90700832b69750b01f350f00395dbe04c42eb Mon Sep 17 00:00:00 2001 From: Tolik <85737314+Tolik-Trek@users.noreply.github.com> Date: Wed, 18 Dec 2024 00:17:38 +1000 Subject: [PATCH] ... --- src/bios/BIOS.asm | 1 + src/bios/exp/EXP.asm | 29 +++++----- src/bios/exp/EXTENDED/IDE/CD_DRV.ASM | 82 ++++++++++++++-------------- src/bios/exp/FUNC_CMOS.ASM | 2 +- src/bios/shared/DEFINES.INC | 3 +- src/bios/shared/VERSION.inc | 6 +- 6 files changed, 66 insertions(+), 57 deletions(-) diff --git a/src/bios/BIOS.asm b/src/bios/BIOS.asm index 47a6533..d5897a3 100644 --- a/src/bios/BIOS.asm +++ b/src/bios/BIOS.asm @@ -158,6 +158,7 @@ EXPORT msgStrings.str_ACEX_MODEL EXPORT msgRusStrings.str_ACEX_MODEL EXPORT BETA_BUILD + EXPORT BETA_RC ; LUA ALLPASS ; print ("DEPACKER", sj.get_label("DEPACKER.PackedMAIN")) ; print ("UnPacker", sj.get_label("UnPacker.PackedMAIN")) diff --git a/src/bios/exp/EXP.asm b/src/bios/exp/EXP.asm index e7e7b4d..1438afc 100644 --- a/src/bios/exp/EXP.asm +++ b/src/bios/exp/EXP.asm @@ -928,7 +928,7 @@ PORTS_INIT: ; ; Инициализация последовательного порта клавиатуры ; reg 0 - XOR A ;LD A,0 + XOR A ;LD A,0 OUT (Z84.SIO.Ch_A.Ctrl),A ; reg 4 LD A,4 @@ -938,7 +938,7 @@ PORTS_INIT: ; reg 3 LD A,3 OUT (Z84.SIO.Ch_A.Ctrl),A - LD A,#C1 + LD A,#C1 OUT (Z84.SIO.Ch_A.Ctrl),A ; reg 5 LD A,5 @@ -948,13 +948,13 @@ PORTS_INIT: ; reg 1 LD A,1 OUT (Z84.SIO.Ch_A.Ctrl),A - DEC A ;LD A,0 ; #18 включение прерываний + 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 + LD A,#2D ; скорость порта - второй множитель OUT (Z84.CTC.Ch_0),A ; reg 0 XOR A ;LD A,0 @@ -962,8 +962,11 @@ PORTS_INIT: ; reg 4 LD A,4 OUT (Z84.SIO.Ch_B.Ctrl),A - ;LD A,#45 - LD A,#40 + ;!TODO вспомнить + ;LD A,#45 + ;LD A,#44 + ; + LD A,#40 ; скорость порта - первый множитель = 16 OUT (Z84.SIO.Ch_B.Ctrl),A ; reg 3 LD A,3 @@ -978,22 +981,22 @@ PORTS_INIT: ; reg 1 LD A,1 OUT (Z84.SIO.Ch_B.Ctrl),A - DEC A ;LD A,0 + 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 ; ALL - out + OUT (Z84.PIO.Port_A.Data),A ; DATA - all zeros + ; для принтера + 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 + LD BC,Z84.PIO.Port_B.Command ;только через регистр BC, иначе Альтера перехватит + LD A,#CF ; BITS I/O OUT (C),A LD A,#3F OUT (C),A diff --git a/src/bios/exp/EXTENDED/IDE/CD_DRV.ASM b/src/bios/exp/EXTENDED/IDE/CD_DRV.ASM index c2ed409..f0a8c9c 100644 --- a/src/bios/exp/EXTENDED/IDE/CD_DRV.ASM +++ b/src/bios/exp/EXTENDED/IDE/CD_DRV.ASM @@ -161,7 +161,7 @@ TRAY_FN: ; #0B - ABORTED COMMAND ; #80 - TIME OUT AP_COM: EXX - LD DE,#8000 + ;LD DE,#8000 CALL CD_WAITPRT EXX JR NC,.READY @@ -173,7 +173,7 @@ AP_COM: EXX .pause: DJNZ .pause EXX - LD DE,#8000 + ;LD DE,#8000 CALL CD_WAITPRT EXX RET C @@ -186,7 +186,6 @@ AP_COM: EXX LD A,SYS_PAGE OUT (C),A - LD A,B LD DE,RAM_ATAPI_PK ;!FIXIT может на стеке выделять место? LD BC,PKTSIZE LDIR @@ -209,19 +208,20 @@ AP_COM: EXX LD BC,IDE.Write.Command LD A,IDE.ATAPI.Packet OUT (C),A - LD DE,#8000 + ;LD DE,#8000 CALL CD_WAITPRT EXX RET C EXX LD DE,#0908 - CALL CD_WAITPRT + CALL CD_WAITPRT.Custom EXX BIT IDE.ControlBit.Error,A JR NZ,.CDERROR JR NC,.YEP_DRQ - LD A,#80 ; TIME OUT ;!HARDCODE - RET + LD A,#80 ; ERROR TIME OUT ;!HARDCODE + RET + ; .YEP_DRQ: LD C,SLOT3 IN B,(C) @@ -236,16 +236,16 @@ AP_COM: EXX OUTI DEC A JR NZ,.OUTPKT - + ; POP BC OUT (C),B - + ; LD B,#80 .pause2: DJNZ .pause2 - + ; .AP_LOOP: EXX - LD DE,#8000 + ;LD DE,#8000 CALL CD_WAITPRT EXX RET C @@ -279,7 +279,6 @@ AP_COM: EXX LD BC,IDE.Read.Counter IN A,(C) AND #02 - ;CP #02 JR NZ,.FROM_CD ;.TO_CD: LD BC,IDE.Read.Data @@ -293,7 +292,9 @@ AP_COM: EXX JR NZ,.WR_T_CD EX DE,HL JR .AP_LOOP + ; .FROM_CD: + ; проверка на переполнение адреса буфера LD A,H OR L JR Z,.NULL @@ -308,6 +309,7 @@ AP_COM: EXX JR NZ,.RD_F_CD EX DE,HL JR .AP_LOOP + ; .NULL: LD BC,IDE.Read.Data .RD_N_CD: IN A,(C) @@ -325,35 +327,33 @@ AP_COM: EXX ;----------------------------------------------------------------------; -; D - MASK -; E - PATTERN -CD_WAITPRT: - LD BC,IDE.Read.Status - LD A,100 - LD HL,#0000 -.CWAITPX: - EX AF,AF' -.CWAITP0: - IN A,(C) - CP #FF - JR Z,.CWAITP1 - AND D - CP E - JR NZ,.CWAITP2 - AND A - RET -.CWAITP2: - DEC L - JR NZ,.CWAITP0 - DEC H - JR NZ,.CWAITP0 - EX AF,AF' - DEC A - JR NZ,.CWAITPX - EX AF,AF' -.CWAITP1: - SCF - RET +CD_WAITPRT: LD DE,#8000 ; D - MASK, E - PATTERN +.Custom: LD BC,IDE.Read.Status + LD A,100 + LD HL,#0000 +.LOOP_A: EX AF,AF' +.LOOP_HL: IN A,(C) + CP #FF + JR Z,.error + AND D + CP E + ; + ; JR NZ,.NEXT_TRY + ; AND A + ; RET + RET Z + ; +.NEXT_TRY: DEC L + JR NZ,.LOOP_HL + DEC H + JR NZ,.LOOP_HL + EX AF,AF' + DEC A + JR NZ,.LOOP_A + ; + EX AF,AF' +.error: SCF + RET ;----------------------------------------------------------------------; diff --git a/src/bios/exp/FUNC_CMOS.ASM b/src/bios/exp/FUNC_CMOS.ASM index a9e4f0a..34e7635 100644 --- a/src/bios/exp/FUNC_CMOS.ASM +++ b/src/bios/exp/FUNC_CMOS.ASM @@ -7,7 +7,6 @@ ENDM ; - ;!FIXIT по доке на функцию должен перед выходом CF ставиться CMOS_EMU_WR: PUSH DE @@ -26,6 +25,7 @@ CMOS_EMU_WR: ; ; запись в CMOS +;!FIXIT переделать по доке на Даллас и запись в ячейки часов CMOS_WR: ; [x] _mCMOS_MAX_TEST ; diff --git a/src/bios/shared/DEFINES.INC b/src/bios/shared/DEFINES.INC index edfd03e..59cf65b 100644 --- a/src/bios/shared/DEFINES.INC +++ b/src/bios/shared/DEFINES.INC @@ -1,5 +1,6 @@ ;=======================[All shared EQUs]=======================; -BETA_BUILD EQU 17 ; добавляет строку и сообщение о тестовой сборке на стартовом экране +BETA_BUILD EQU 10 ; добавляет строку и сообщение о тестовой сборке на стартовом экране +BETA_RC EQU 1 ; ;======================[All shared defines]=====================; DEFINE PACKED_MAIN 0 ; паковать MAIN или влезает без этого? DEFINE SP2000_Loader_Flag #0107 ; diff --git a/src/bios/shared/VERSION.inc b/src/bios/shared/VERSION.inc index 1fda053..fad742a 100644 --- a/src/bios/shared/VERSION.inc +++ b/src/bios/shared/VERSION.inc @@ -8,7 +8,11 @@ BIOS_ver_hex EQU EXP_ID.VER*256+EXP_ID.MOD DEFINE BIOS_ver_string '0'+EXP_ID.VER, '.', '0'+EXP_ID.MOD/10, '0'+EXP_ID.MOD-(EXP_ID.MOD/10)*10 IF BETA_BUILD > 0 - DEFINE BETA_str_ver "BETA ","0"+BETA_BUILD + IF BETA_RC > 0 + DEFINE BETA_str_ver "RC","0"+BETA_RC + ELSE + DEFINE BETA_str_ver "BETA ","0"+BETA_BUILD + ENDIF ENDIF ;--------------------------------------- DEFINE BoardID_start #5283