diff --git a/Shared_Includes b/Shared_Includes index a6c50f5..68e156a 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit a6c50f572424e88f6199d639fa8109d53b71142c +Subproject commit 68e156a69e848e7b01656cdf67122022999d75ee diff --git a/src/ZX_ROMS/new/SP_TRDOS.bin b/src/ZX_ROMS/new/SP_TRDOS.bin index b287645..a52623c 100644 Binary files a/src/ZX_ROMS/new/SP_TRDOS.bin and b/src/ZX_ROMS/new/SP_TRDOS.bin differ diff --git a/src/bios/exp/EXP.asm b/src/bios/exp/EXP.asm index db1c28b..406f2c1 100644 --- a/src/bios/exp/EXP.asm +++ b/src/bios/exp/EXP.asm @@ -1249,6 +1249,9 @@ GOTO_SPEC: PUSH HL LD HL,RET_TO_BIOS EX (SP),HL PUSH HL + PUSH AF + CALL FN_TURBO.SET_FDD_720 + POP AF LD HL,GOTO_SPECTRUM EX (SP),HL JP EXTENSION_FNs @@ -1293,36 +1296,47 @@ PROG_NO_ROM: OUT (SLOT1),A LD SP,#BF00 ; + LD BC,BIOS.SET_PAL_INIT.CGA + RST ToBIOS + ; LD E,0 LD BC,BIOS.LP_OPEN_S.TXT_80x32_Default RST ToBIOS ; LD DE,0 + LD B,E LD HL,#2050 LD C,BIOS.LP_CLS_WIN RST ToBIOS - ; set scr-2 - LD A,1 - OUT (SCREEN_SWITCH),A ; LD HL,MESSAGE_NR LD DE,#A000 + PUSH DE LD BC,MESSAGE_NR.size - LD A,C LDIR - ; - LD HL,#A000 - LD D,0 ; delimiter - LD E,COLORS.CGA.FLASH + COLORS.CGA.INK.RED - LD B,A - LD C,BIOS.LP_PRINT_LINE3 + ; BC=0 + POP HL + SCF + EX AF,AF' + SCF + LD A,COLORS.CGA.FLASH + COLORS.CGA.INK.RED + PUSH BC + POP IY + LD DE,#0F00 + ; B=0 delimiter + LD C,BIOS.LP_PR_LINE_DIR RST ToBIOS ; + ; set scr-2 + LD A,1 + OUT (SCREEN_SWITCH),A .loop: DI HALT JR .loop - ; -MESSAGE_NR: DZ " Spectrum ROM not installed. Use spectrum.exe Press Ctrl+Alt+Del or RESET" + ;Spectrum ROM configuration error + ; 10 20 30 40 50 60 70 80 + ; "123456789|123456789|123456789|123456789|123456789|123456789|123456789|123456789|" +MESSAGE_NR: DZ "\t\t\tSpectrum ROM configuration error\r\n\t\t\t Press Ctrl+Alt+Del or RESET." .size EQU $-MESSAGE_NR ENT PROG_NO_ROM.size EQU $-PROG_NO_ROM diff --git a/src/bios/exp/EXTENDED/IDE/ATAPI_DRV.ASM b/src/bios/exp/EXTENDED/IDE/ATAPI_DRV.ASM index b037341..637e810 100644 --- a/src/bios/exp/EXTENDED/IDE/ATAPI_DRV.ASM +++ b/src/bios/exp/EXTENDED/IDE/ATAPI_DRV.ASM @@ -32,6 +32,7 @@ ATAPI_5x_RESET: LD C,IDE.Device.ATAPI ;!FIXIT ;[ ] sector size. сделать реинит HDD_INIT_TABLE POP BC RET NC + LD C,A ; ;CALL ATAPI_CHECK_MEDIA_CHANGED.noWait ;RET C @@ -53,6 +54,10 @@ ATAPI_5x_RESET: LD C,IDE.Device.ATAPI JR NZ,.pause_loop EXX DJNZ .loop + LD A,C + AND A + SCF + RET NZ RET /* HL = 1e00 @@ -99,11 +104,15 @@ ATAPI_5x_GET_PAR: ; CP BIOS.Error.ATAPI.MediumError JR NZ,.unknown_error - ; + ;!FIXIT костыль LD A,BIOS.Error.ATAPI.UnitAttention ;!FIXIT костыль + RES 1,(IY + IDE.HDD_INIT_TABLE.MediaParameters) ; [ ] removable media + ; .unknown_error: LD HL,#FFFF LD D,H LD E,L + PUSH HL + POP IX SCF EX AF,AF' ; тут маскируем ошибку, изначально CF=1 только если устройство отсутствует OUT (SLOT3),A @@ -412,17 +421,6 @@ ATAPI_REQUEST_SENSE: ATAPI_CHECK_MEDIA_CHANGED: CALL EXEC_TEST_CMD ;!FIXIT а может и не надо RET C - ; JR NC,.next_check - ; ; - ; CP BIOS.Error.ATAPI.UnitAttention - ; SCF - ; RET Z - ; ; - ; CP BIOS.Error.ATAPI.MediumError - ; JR Z,.next_check - ; ; - ; SCF - ; RET ; .next_check: EXX LD C,SLOT3 @@ -439,19 +437,19 @@ ATAPI_CHECK_MEDIA_CHANGED: RET ;----------------------------------------------------------------------; -;[ ] media changed + ;----------------------------------------------------------------------; -ATAPI_CHECK_ERROR: - CALL ATAPI_GET_ERROR_REG - ;CP BIOS.Error.ATAPI.NoSence - ;JP Z,ATAPI_MEDIA_ERROR - CP BIOS.Error.ATAPI.NotReady - JP Z,ATAPI_MEDIA_ERROR - CP BIOS.Error.ATAPI.UnitAttention - JP Z,ATAPI_MEDIA_ERROR - ; - SCF - RET +; ATAPI_CHECK_ERROR: +; CALL ATAPI_GET_ERROR_REG +; ;CP BIOS.Error.ATAPI.NoSence +; ;JP Z,ATAPI_MEDIA_ERROR +; CP BIOS.Error.ATAPI.NotReady +; JP Z,ATAPI_MEDIA_ERROR +; CP BIOS.Error.ATAPI.UnitAttention +; JP Z,ATAPI_MEDIA_ERROR +; ; +; SCF +; RET ;----------------------------------------------------------------------; @@ -493,27 +491,35 @@ TRAY_FN: LD HL,ATAPI_CMD_PACKET.CLOSE EXEC_PACKET_COMMAND: ; .error_APLOOP: LD A,BIOS.Error.ATAPI.UnitAttention ; RET - ; + ;CALL ATAPI_GET_ERROR_REG + .error_ex: EX DE,HL .error: CP #FF .error_fail: SCF - LD C,A + RET NZ LD A,BIOS.Error.Failure - RET Z - ; - LD A,BIOS.Error.ATAPI.UnitAttention - CP C - SCF - RET Z - ; - LD A,BIOS.Error.ATAPI.MediumError - CP C - SCF - RET Z - ; - LD A,BIOS.Error.Busy RET - ; +; +; .error_ex: EX DE,HL +; .error: CP #FF +; .error_fail: SCF +; LD C,A +; LD A,BIOS.Error.Failure +; RET Z +; ; +; LD A,BIOS.Error.ATAPI.UnitAttention +; CP C +; SCF +; RET Z +; ; +; LD A,BIOS.Error.ATAPI.MediumError +; CP C +; SCF +; RET Z +; ; +; LD A,BIOS.Error.Busy +; RET +; .error_TimeOut: CP #FF EX DE,HL JR Z,.error_fail @@ -734,7 +740,6 @@ ATAPI_CHECK_DRV: CALL ATAPI_WAITPRT EXX ; ZF=1 - ;JP C,.error RET C ; ; [ ] media change. а надо ли тут? ;!FIXIT лучше блокировать носитель @@ -744,14 +749,23 @@ ATAPI_CHECK_DRV: AND IDE.CtrlByte.DataRequest + IDE.CtrlByte.Error RET Z ;NO DATA REQUEST. A = 0: BIOS.Error.NoErrors RRA ; Checking IDE.CtrlByte.CheckCondition - ;JR NC,.data_request - RET NC - ; признак того, что ошибка смены носителя должна обрабатываться в EXEC_PACKET_COMMAND - EXX - DEC C ; признак того, что ошибка смены носителя должна обрабатываться в EXEC_PACKET_COMMAND - EXX - RET Z ; выход, если ошибка обрабатывается не в EXEC_PACKET_COMMAND - JP ATAPI_CHECK_ERROR + RET NC ; DataRequest CF=0, ZF=0 + ; + CALL ATAPI_GET_ERROR_REG + EXX + DEC C ; признак того, что ошибка смены носителя должна обрабатываться в EXEC_PACKET_COMMAND + EXX + SCF + RET Z ; выход, если ошибка обрабатывается не в EXEC_PACKET_COMMAND + ; + ; CP BIOS.Error.ATAPI.NoSence + ; JP Z,ATAPI_MEDIA_ERROR + CP BIOS.Error.ATAPI.NotReady + JP Z,ATAPI_MEDIA_ERROR + CP BIOS.Error.ATAPI.UnitAttention + JP Z,ATAPI_MEDIA_ERROR + SCF + RET ; ATAPI_PREPARE_RW: @@ -829,17 +843,17 @@ ATAPI_WAITPRT: LD DE,256*IDE.CtrlByte.Busy + 0 IN A,(low IDE.Read.Status) CP #FF JR Z,.error + ; AND D CP E - ; RET Z ; -.NEXT_TRY: DEC L - JR NZ,.LOOP - DEC H - ; 15615 + DEC HL + LD A,H + OR L JR NZ,.LOOP DJNZ .LOOP + LD A,BIOS.Error.Busy .error: SCF RET ;----------------------------------------------------------------------; diff --git a/src/bios/rom/SETUP/messages.z80 b/src/bios/rom/SETUP/messages.z80 index 5c45849..4df0262 100644 --- a/src/bios/rom/SETUP/messages.z80 +++ b/src/bios/rom/SETUP/messages.z80 @@ -695,15 +695,15 @@ msgStrings: _mSetStr valLoadZXromsCAD, tmp_Counter : DZ 'On restart' ; _mSetStr parQS_SetUpHardware, tmp_Counter : DZ 'ZX Mode : ' - _mSetStr valSprinterZX, tmp_Counter : DZ 'SprinterZX' - _mSetStr valPentagon48, tmp_Counter : DZ 'Pent. 48 ' - _mSetStr valPentagon128, tmp_Counter : DZ 'Pent. 128 ' - _mSetStr valPentagon512, tmp_Counter : DZ 'Pent. 512 ' - _mSetStr valScorpion256, tmp_Counter : DZ 'Scorp 256 ' - _mSetStr valZXSpectrum48, tmp_Counter : DZ 'Speccy 48 ' - _mSetStr valZXSpectrum128, tmp_Counter : DZ 'Speccy 128' + _mSetStr valSprinterZX, tmp_Counter : DZ 'Sprinter ZX ' + _mSetStr valPentagon48, tmp_Counter : DZ 'Pentagon 48 ' + _mSetStr valPentagon128, tmp_Counter : DZ 'Pentagon 128' + _mSetStr valPentagon512, tmp_Counter : DZ 'Pentagon 512' + _mSetStr valScorpion256, tmp_Counter : DZ 'Scorpion 256' + _mSetStr valZXSpectrum48, tmp_Counter : DZ 'Spectrum 48 ' + _mSetStr valZXSpectrum128, tmp_Counter : DZ 'Spectrum 128' ; - _mSetStr parQS_SetUpZxRom, tmp_Counter : DZ 'Start in ZX mode : ' + _mSetStr parQS_SetUpZxRom, tmp_Counter : DZ 'ZX Mode start in : ' _mSetStr valQS_SetUpBasic128, tmp_Counter : DZ 'Basic 128 ' _mSetStr valQS_SetUpBasic48p, tmp_Counter : DZ 'Basic 48+ ' _mSetStr valQS_SetUpTrDos, tmp_Counter : DZ 'TR-DOS ' diff --git a/src/bios/rom/ZX/ZX_FUNC.ASM b/src/bios/rom/ZX/ZX_FUNC.ASM index 5238c9d..eb57b64 100644 --- a/src/bios/rom/ZX/ZX_FUNC.ASM +++ b/src/bios/rom/ZX/ZX_FUNC.ASM @@ -517,6 +517,7 @@ GET_SCORP_RAM: CALL FREE_vRAM GOTO_SPECTRUM: DI LD C,A ; + ; ; set shared pages XOR A OUT (SLOT2),A ; ZERO_PAGE