File_Start DEFL $ DISPLAY "====================================================" ;ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл HDD_PROG: ;!TEST 06/01/2024 уЁЈр ЅЌ ЋЈш­ЈЅ тЅЋЎЄЂЈІЅ­Јя ;LD C,BIOS.HDD_INIT and #BF ;CALL HD_CMD LD C,BIOS.HDD_INIT CALL EXP_FNS ; JP C,HDD_PROG_E LD HL,SYS_PAGE.HD_IDF_ADR.ModelNum LD B,32 HDD_PROG_L: DI IN A,(SLOT3) LD D,A LD A,SYS_PAGE OUT (SLOT3),A LD A,L XOR 1 LD L,A LD C,(HL) LD A,L XOR 1 LD L,A INC HL LD A,D OUT (SLOT3),A ; RET_PAGE3 EI LD A,C PUSH BC RST #10 POP BC DJNZ HDD_PROG_L ;!TEST 06/01/2024 уЁЈр ЅЌ ЋЈш­ЈЅ тЅЋЎЄЂЈІЅ­Јя ;LD C,BIOS.HDD_RECAL and #BF ;CALL HD_CMD LD C,BIOS.HDD_RECAL CALL EXP_FNS ; JP NC,AUTO_03E1 HDD_ERROR: CALL PRINT_HEX_A LD HL,HD_TX JP AUTO_03E4 ; JP AUTO_03E1 HDD_PROG_E: LD HL,HD_TX2 JP AUTO_03E4 ; HDD_SET: .loop: LD A,(DE) INC DE CP " " JR Z,.loop CP "\r" JR Z,.check ; DEC DE DEC DE JP CHOOSE_HDD ; ; [x] new tr-hdd .check: DI LD C,SLOT3 IN B,(C) LD A,SYS_PAGE OUT (SLOT3),A ; LD E,DRIVE_CODES.TRDOS.HDD LD A,(SYS_PAGE.CURRENT_DIR_DRIVE_COPY) CP #FF JR Z,.init CP E JR C,.init ; LD (SYS_PAGE.CURRENT_DIR_DRIVE),A LD E,A OUT (C),B PUSH DE AND #0F LD C,BIOS.HDD_PART CALL EXP_FNS POP DE JR C,CHOOSE_HDD.error JR .exit ; .init: OUT (C),B PUSH DE LD C,BIOS.HDD_INIT CALL EXP_FNS POP DE JR C,HDD_PROG_E ; .exit: LD C,BIOS.SET_DISK_REDIR JP EXP_FNS ;[x] 29/01/2024 ;ЂыхЎЄ: A: bit1 - Primary/Secondary, bit0 - master/slave, bit2..3: ЈсЏЎЋьЇующЈЉся р ЇЄЅЋ Ђ MBR CHOOSE_HDD: .loop: LD A,(DE) INC DE CP " " JR Z,.loop LD A,(DE) CP "\r" JR Z,.error ; ­ЎЌЅр р ЇЄЅЋ  LD A,(DE) CP "4" JR NC,.error CP "0" JR C,.error SUB "0" RLA RLA LD C,A ; Primary/Secondary, master/slave DEC DE LD A,(DE) CP "4" JR NC,.error CP "0" JR C,.error SUB "0" OR C ; .part: PUSH AF LD C,BIOS.HDD_PART CALL EXP_FNS POP BC JR C,.error ; ; ;CALL RESTORE_CURRENT_DIR IN A,(SLOT3) EX AF,AF' LD A,SYS_PAGE OUT (SLOT3),A LD A,(SYS_PAGE.CURRENT_DIR_DRIVE) CP #FF JR Z,.skip LD (SYS_PAGE.CURRENT_DIR_DRIVE_COPY),A XOR A DEC A LD (SYS_PAGE.CURRENT_DIR_DRIVE),A .skip: EX AF,AF' OUT (SLOT3),A ; ; ;XOR A LD C,0 ; ЎЁ­уЋЈть C LD A,B ;OR #40 ;LD B,A ; ; PUSH AF ; LD A,(ZX_VARS.OPER_DISK) ; LD C,BIOS.GET_DRV_ST ; CALL EXP_FNS ; POP BC ; JR C,.error ; ; ; AND #40 ;!HARDCODE HDD ; LD C,A ; ЎЁ­уЋЈть C ; LD A,B ; RET NZ ; PUSH BC LD BC,(ZX_VARS.OPER_DISK - 1) ; LD B,A ; XOR A LD C,BIOS.HDD_TO_DRV CALL EXP_FNS POP AF RET ; .error: ;AND %1101'1111 ;CP "*" ;JR Z,.set_from_sys_page LD HL,MSG_3 JP ERR_EXIT ; ; .setUp_HDD: ; PUSH BC ; LD A,(ZX_VARS.OPER_DISK) ; LD B,A ; XOR A ; LD C,BIOS.HDD_TO_DRV ; CALL EXP_FNS ; POP BC ; RET ; ;.set_from_sys_page: ; !!! ; [x] new tr-hdd RESTORE_CURRENT_DIR: PUSH AF ; LD C,BIOS.GET_DISK_REDIR CALL EXP_FNS ;CP #40 ;JR C,.exit_Res_Dir ;AND #0F LD H,A ; IN A,(SLOT3) EX AF,AF' LD A,SYS_PAGE OUT (SLOT3),A ; LD A,(SYS_PAGE.CURRENT_DIR_DRIVE) CP H JR NZ,.exit_Res_Dir LD HL,(SYS_PAGE.CURRENT_DIR_SEC_L) LD DE,(SYS_PAGE.CURRENT_DIR_SEC_H) LD A,H OR L OR D OR E JR Z,.exit_Res_Dir ; LD (SYS_PAGE.MSD_CAT_SEC),HL LD (SYS_PAGE.MSD_CAT_SEC2),DE .exit_Res_Dir: EX AF,AF' OUT (SLOT3),A POP AF RET ; ;ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл BOOT_PART_2: IF DEFtrd_boot_small INCBIN 'build/boot.bin',248 ELSE INCBIN 'build/boot.bin',248,181 ENDIF .SIZE EQU $-BOOT_PART_2 ;ллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллллл DISPLAY "TR_HDD_4.ASZ size: ",/A,$-File_Start DISPLAY "===================================================="