mirror of
https://github.com/Tolik-Trek/Spectrum.EXE.git
synced 2026-06-15 00:51:36 +03:00
current dir for zx mode
This commit is contained in:
parent
e7a42481ab
commit
12447a147b
213
For_4x.asm
Normal file
213
For_4x.asm
Normal file
@ -0,0 +1,213 @@
|
|||||||
|
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-;
|
||||||
|
|
||||||
|
; in: HL - CLUSTER
|
||||||
|
; out: HL:IX - SECTOR
|
||||||
|
; ‚ ç «¥ ¤®«¦ ¡ëâì ¢ë¯®«¥ ¨¨æ¨ «¨§ æ¨ï BPB 4x
|
||||||
|
CLUSTER_TO_SECTOR:
|
||||||
|
IN A,(SLOT3)
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (SLOT3),A
|
||||||
|
LD A,(SYS_PAGE.MS_BPB+CLAST_SIZE)
|
||||||
|
EX DE,HL
|
||||||
|
LD HL,(SYS_PAGE.MSD_DAT_SEC)
|
||||||
|
LD (.MSD_DAT_SEC),HL
|
||||||
|
LD HL,(SYS_PAGE.MSD_DAT_SEC2)
|
||||||
|
LD (.MSD_DAT_SEC2),HL
|
||||||
|
EX DE,HL
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (SLOT3),A
|
||||||
|
EX AF,AF'
|
||||||
|
;
|
||||||
|
LD DE,0 ;!FIXIT for FAT32
|
||||||
|
DEC HL
|
||||||
|
DEC HL
|
||||||
|
XOR 1
|
||||||
|
JR Z,.skip
|
||||||
|
;
|
||||||
|
RRA
|
||||||
|
.loop: ADD HL,HL
|
||||||
|
RL E
|
||||||
|
RL D
|
||||||
|
;
|
||||||
|
RRA
|
||||||
|
JP NC,.loop
|
||||||
|
;
|
||||||
|
.skip: EX DE,HL
|
||||||
|
LD XL,E
|
||||||
|
LD XH,D
|
||||||
|
.MSD_DAT_SEC+1: LD DE,0 ;first data sector ;!FIXIT ¥á«¨ ç «ìë© á¥ªâ®à > #FFFF
|
||||||
|
XOR A
|
||||||
|
ADD IX,DE
|
||||||
|
.MSD_DAT_SEC2+1:
|
||||||
|
LD DE,0
|
||||||
|
ADC HL,DE
|
||||||
|
;!TODO ¤® «¨ ¯à®¢¥àïâì ¯¥à¥¯®«¥¨¥ HL:IX?
|
||||||
|
RET
|
||||||
|
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-;
|
||||||
|
|
||||||
|
|
||||||
|
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-;
|
||||||
|
SET_IMAGE_DIR_SECTOR:
|
||||||
|
LD HL,ONE_FILE
|
||||||
|
LD DE,TMP_BUFF
|
||||||
|
LD A,FAT_ATTR.DIRECTORY
|
||||||
|
LD BC,Dss.F_First.FATname
|
||||||
|
RST ToDSS
|
||||||
|
RET C
|
||||||
|
;
|
||||||
|
LD HL,(TMP_BUFF+26) ; ;!HARDCODE first dir cluster
|
||||||
|
CALL CLUSTER_TO_SECTOR
|
||||||
|
LD (RESET_TO_ZX.DIR_SEC_L),IX
|
||||||
|
LD (RESET_TO_ZX.DIR_SEC_H),HL
|
||||||
|
RET
|
||||||
|
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-;
|
||||||
|
|
||||||
|
|
||||||
|
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-;
|
||||||
|
SET_CURRENT_HDD:
|
||||||
|
.NUMBER+1: LD A,#FF
|
||||||
|
CP #FF
|
||||||
|
LD C,BIOS.HDD_INIT
|
||||||
|
JP Z,ToBIOS_18
|
||||||
|
LD C,BIOS.HDD_PART ; IDE-1/IDE-2
|
||||||
|
JP ToBIOS_18
|
||||||
|
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-;
|
||||||
|
|
||||||
|
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-;
|
||||||
|
BPB_SetUp: LD A,SYS_PAGE
|
||||||
|
LD HL,SYS_PAGE.MS_BPB
|
||||||
|
LD C,BIOS.HDD_READ_BPB
|
||||||
|
RST ToBIOS
|
||||||
|
.PARAMS: IN A,(SLOT3)
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (SLOT3),A
|
||||||
|
;
|
||||||
|
LD A,(SYS_PAGE.MS_BPB+FORM_CODE)
|
||||||
|
CP #F0
|
||||||
|
JP C,.ERROR_BPB
|
||||||
|
|
||||||
|
LD DE,SYS_PAGE.MS_BPB+FAT_ID
|
||||||
|
LD HL,.FAT1_MSG
|
||||||
|
LD B,4
|
||||||
|
.L1: LD A,(DE)
|
||||||
|
CP ' '
|
||||||
|
JR NZ,.L11
|
||||||
|
INC DE
|
||||||
|
JR .L1
|
||||||
|
.L11: CP (HL)
|
||||||
|
JR NZ,.PC_DOS
|
||||||
|
|
||||||
|
INC HL
|
||||||
|
INC DE
|
||||||
|
DJNZ .L1
|
||||||
|
LD A,(DE)
|
||||||
|
CP '6'
|
||||||
|
LD HL,#81FF ; FAT16 ä« £
|
||||||
|
JR Z,.FAT
|
||||||
|
CP '2'
|
||||||
|
JP NZ,.ERROR_BPB
|
||||||
|
|
||||||
|
.PC_DOS: LD HL,#01FF ; FAT12 ä« £
|
||||||
|
.FAT: LD (SYS_PAGE.FAT_FLAG),HL
|
||||||
|
|
||||||
|
LD A,(SYS_PAGE.MS_BPB+S_P_T) ; Š®«¨ç¥á⢮ ᥪâ®à®¢ â४
|
||||||
|
LD (SYS_PAGE.MSD_SECS),A
|
||||||
|
|
||||||
|
LD IX,(SYS_PAGE.MS_BPB+SPECIAL_SECS)
|
||||||
|
LD HL,(SYS_PAGE.MS_BPB+SPECIAL_SECS+2)
|
||||||
|
.NO_LD_SPECIAL: LD BC,0
|
||||||
|
LD DE,(SYS_PAGE.MS_BPB+RESERV_SECS)
|
||||||
|
|
||||||
|
ADD IX,DE
|
||||||
|
ADC HL,BC
|
||||||
|
|
||||||
|
LD (SYS_PAGE.MSD_FAT_SEC),IX ; ç «ìë© á¥ªâ®à FAT
|
||||||
|
LD (SYS_PAGE.MSD_FAT_SEC2),HL ; ç «ìë© á¥ªâ®à FAT
|
||||||
|
|
||||||
|
LD DE,(SYS_PAGE.MS_BPB+S_P_F) ; ç¨á«® ᥪâ®à®¢ ¢ FAT
|
||||||
|
LD A,(SYS_PAGE.MS_BPB+FATS_NUM) ; ª®«¨ç¥á⢮ FATs
|
||||||
|
.NEXT_ADD:
|
||||||
|
ADD IX,DE
|
||||||
|
ADC HL,BC
|
||||||
|
DEC A
|
||||||
|
JR NZ,.NEXT_ADD
|
||||||
|
LD (SYS_PAGE.MSD_CAT_SEC),IX ; ç «ìë© á¥ªâ®à DIR
|
||||||
|
LD (SYS_PAGE.MSD_CAT_SEC2),HL ; ç «ìë© á¥ªâ®à DIR
|
||||||
|
LD BC,(SYS_PAGE.MS_BPB+SEC_SIZE) ; <20> §¬¥à ᥪâ®à
|
||||||
|
LD A,B
|
||||||
|
RL C
|
||||||
|
RLA
|
||||||
|
RL C
|
||||||
|
RLA
|
||||||
|
RL C
|
||||||
|
RLA
|
||||||
|
LD C,A
|
||||||
|
LD B,0 ; BC - ç¨á«® ä ©«®¢ëå § ¯¨á¥© ¢ ᥪâ®à¥
|
||||||
|
LD (SYS_PAGE.FilesPerSector),A
|
||||||
|
LD DE,(SYS_PAGE.MS_BPB+FLS_NUM) ; —¨á«® ä ©«®¢ëå § ¯¨á¥©
|
||||||
|
|
||||||
|
EX DE,HL
|
||||||
|
DEC HL
|
||||||
|
XOR A
|
||||||
|
.NEXT_ADD2:
|
||||||
|
INC A
|
||||||
|
JR Z,.ERROR_BPB
|
||||||
|
SBC HL,BC
|
||||||
|
JR NC,.NEXT_ADD2
|
||||||
|
EX DE,HL
|
||||||
|
|
||||||
|
LD E,A ; A - ç¨á«® ᥪâ®à®¢ ¢ DIR
|
||||||
|
LD BC,0
|
||||||
|
LD D,B
|
||||||
|
LD (SYS_PAGE.SectorsPerCluster),A
|
||||||
|
|
||||||
|
ADD IX,DE ; <20> ç «® DATA area
|
||||||
|
ADC HL,BC
|
||||||
|
|
||||||
|
LD (SYS_PAGE.MSD_DAT_SEC),IX
|
||||||
|
LD (SYS_PAGE.MSD_DAT_SEC2),HL
|
||||||
|
|
||||||
|
LD BC,(SYS_PAGE.MS_BPB+SEC_SIZE) ; <20> §¬¥à ᥪâ®à
|
||||||
|
; D = 0
|
||||||
|
LD H,D
|
||||||
|
LD L,D
|
||||||
|
LD E,D
|
||||||
|
LD A,(SYS_PAGE.MS_BPB+CLAST_SIZE)
|
||||||
|
LD D,A
|
||||||
|
XOR A
|
||||||
|
.NEXT_ADD3:
|
||||||
|
ADD HL,BC ; ‚ëç¨á«¥¨¥ ¤«¨ë ª« áâ¥à
|
||||||
|
ADC A,E
|
||||||
|
DEC D
|
||||||
|
JR NZ,.NEXT_ADD3
|
||||||
|
|
||||||
|
LD (SYS_PAGE.CLASTER_LEN),HL
|
||||||
|
LD B,E
|
||||||
|
LD C,A
|
||||||
|
LD (SYS_PAGE.CLASTER_LEN2),BC
|
||||||
|
;
|
||||||
|
; DE=0
|
||||||
|
EX DE,HL ;LD HL,0
|
||||||
|
LD BC,(SYS_PAGE.MS_BPB+S_P_T)
|
||||||
|
LD A,(SYS_PAGE.MS_BPB+H_P_S)
|
||||||
|
.BPB_L1: ; ‚›—ˆ‘‹ˆ’œ ŠŽ‹ˆ—…‘’‚Ž ‘…Š’Ž<E28099>Ž‚ <20>€ –ˆ‹ˆ<E280B9>„<EFBFBD>
|
||||||
|
ADD HL,BC
|
||||||
|
DEC A
|
||||||
|
JR NZ,.BPB_L1
|
||||||
|
LD (SYS_PAGE.S_X_H),HL
|
||||||
|
;
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (SLOT3),A
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
.ERROR_BPB:
|
||||||
|
EX AF,AF'
|
||||||
|
OUT (SLOT3),A
|
||||||
|
SCF
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
.FAT1_MSG: DB "FAT1"
|
||||||
|
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-;
|
||||||
@ -1 +1 @@
|
|||||||
Subproject commit 4f546cb1d2cd8eeb1aec0de2c3e9902d1bb52fee
|
Subproject commit 7e812bc0267db168c5a5b17780e567a7a01cd927
|
||||||
239
spectrum.asm
239
spectrum.asm
@ -690,6 +690,7 @@ SET_ROM: DI
|
|||||||
;********************************************
|
;********************************************
|
||||||
|
|
||||||
;********************************************
|
;********************************************
|
||||||
|
; —⥨¥ ®¡à § TRD/SCL ¢ à ¬¤à ©¢
|
||||||
READ_IMAGE: LD DE,ONE_FILE
|
READ_IMAGE: LD DE,ONE_FILE
|
||||||
LD BC,FULL_FILE_NAME_LENGTH
|
LD BC,FULL_FILE_NAME_LENGTH
|
||||||
LDIR
|
LDIR
|
||||||
@ -701,7 +702,7 @@ READ_IMAGE: LD DE,ONE_FILE
|
|||||||
RET C
|
RET C
|
||||||
|
|
||||||
LD (IMAGE_HANDLER),A
|
LD (IMAGE_HANDLER),A
|
||||||
; [ ] 31/01/2024 ¯®¤¤¥à¦ª ¯¥à¥ª«îç¥¨ï ¤¨áª /à §¤¥« ¢ TR-DOS
|
; [x] 31/01/2024 ¯®¤¤¥à¦ª ¯¥à¥ª«îç¥¨ï ¤¨áª /à §¤¥« ¢ TR-DOS
|
||||||
LD HL,ONE_FILE
|
LD HL,ONE_FILE
|
||||||
LD BC,Dss.EX_Path.GET_ALL
|
LD BC,Dss.EX_Path.GET_ALL
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
@ -713,11 +714,11 @@ READ_IMAGE: LD DE,ONE_FILE
|
|||||||
RST ToDSS
|
RST ToDSS
|
||||||
JR C,.no_change_Disk
|
JR C,.no_change_Disk
|
||||||
JR .getInfoDRV
|
JR .getInfoDRV
|
||||||
.currentDisk: ;
|
;
|
||||||
LD A,(ONE_FILE)
|
.currentDisk: LD A,(ONE_FILE)
|
||||||
SUB "A"
|
SUB "A"
|
||||||
;
|
;
|
||||||
.getInfoDRV: ;
|
.getInfoDRV: ; <20> áâà ¨¢ ¥¬ HDD
|
||||||
OR #80
|
OR #80
|
||||||
LD HL,TMP_BUFF
|
LD HL,TMP_BUFF
|
||||||
LD BC,Dss.DskInfo
|
LD BC,Dss.DskInfo
|
||||||
@ -730,13 +731,14 @@ READ_IMAGE: LD DE,ONE_FILE
|
|||||||
LD E,(HL)
|
LD E,(HL)
|
||||||
INC HL
|
INC HL
|
||||||
DJNZ .loop_param
|
DJNZ .loop_param
|
||||||
|
; check HDD
|
||||||
LD A,(HL)
|
LD A,(HL)
|
||||||
AND #80
|
CP DRIVE_CODES.SPRINTER.HDD
|
||||||
JR Z,.no_change_Disk
|
JR C,.no_change_Disk
|
||||||
CP #90
|
CP DRIVE_CODES.SPRINTER.HDD + 4 + 1
|
||||||
JR NC,.no_change_Disk
|
JR NC,.no_change_Disk
|
||||||
;
|
;
|
||||||
LD A,3
|
LD A,%0000'0011
|
||||||
AND (HL)
|
AND (HL)
|
||||||
LD D,A
|
LD D,A
|
||||||
INC HL
|
INC HL
|
||||||
@ -747,23 +749,46 @@ READ_IMAGE: LD DE,ONE_FILE
|
|||||||
OR D
|
OR D
|
||||||
AND #0F
|
AND #0F
|
||||||
;
|
;
|
||||||
;LD C,SLOT3
|
LD (SET_CURRENT_HDD.NUMBER),A
|
||||||
;IN B,(C)
|
OR DRIVE_CODES.TRDOS.HDD
|
||||||
;EX AF,AF'
|
LD (RESET_TO_ZX.CURRENT_DIR_DRIVE),A
|
||||||
;LD A,SYS_PAGE
|
|
||||||
;OUT (C),A
|
|
||||||
;EX AF,AF'
|
|
||||||
;
|
|
||||||
LD (RESET_TO_ZX.hdd),A
|
|
||||||
;OUT (C),B
|
|
||||||
;
|
;
|
||||||
|
; [x] ¯®¤¤¥à¦ª ¯¥à¥ª«îç¥¨ï ¯ ¯ª¨ ®¡à § ¤«ï ०¨¬ ZX
|
||||||
|
; ‚뤥«ï¥¬ ¯ãâì ¤® ¯ ¯ª¨ á ®¡à §®¬
|
||||||
|
LD HL,ONE_FILE
|
||||||
|
LD BC,ONE_FILE.Size
|
||||||
|
XOR A
|
||||||
|
CPIR
|
||||||
|
DEC HL
|
||||||
|
DEC HL
|
||||||
|
PUSH HL
|
||||||
|
LD HL,ONE_FILE.Size - 2
|
||||||
|
SBC HL,BC
|
||||||
|
LD B,H
|
||||||
|
LD C,L
|
||||||
|
POP HL
|
||||||
|
LD A,'\' ;
|
||||||
|
CPDR
|
||||||
|
INC HL
|
||||||
|
LD (HL),0
|
||||||
|
; ãáâ ¢«¨¢ ¥¬ ¨ ¨¨â¨¬ ¢¨â
|
||||||
|
LD A,SYS_PORT.BIOS
|
||||||
|
OUT (SYS_PORT.ROM),A
|
||||||
|
CALL SET_CURRENT_HDD
|
||||||
|
LD A,SYS_PORT.BIOS
|
||||||
|
OUT (SYS_PORT.RAM),A
|
||||||
|
; ¯ àᨬ ¤«ï à áçñ⮢ BPB
|
||||||
|
CALL BPB_SetUp
|
||||||
|
; § ¯®¬¨ ¥¬ ᥪâ®à ¤¨à¥ªâ®à¨¨
|
||||||
|
CALL SET_IMAGE_DIR_SECTOR
|
||||||
|
;;;;;;;;;
|
||||||
;
|
;
|
||||||
.no_change_Disk:;
|
.no_change_Disk:;
|
||||||
LD A,(IMAGE_FLAG)
|
LD A,(IMAGE_FLAG)
|
||||||
AND A
|
AND A
|
||||||
JR Z,.Load_TRD
|
JR Z,.Load_TRD
|
||||||
|
|
||||||
CP 1 ; check if SCL
|
DEC A ; check if SCL
|
||||||
JP Z,Load_SCL
|
JP Z,Load_SCL
|
||||||
;jp Error_Flag ;!!!!!!!!!!!!!!!!
|
;jp Error_Flag ;!!!!!!!!!!!!!!!!
|
||||||
|
|
||||||
@ -822,7 +847,6 @@ Get_RAM_Disk_E: LD A,D
|
|||||||
RET
|
RET
|
||||||
;---------------------------------------
|
;---------------------------------------
|
||||||
|
|
||||||
|
|
||||||
;********************************************
|
;********************************************
|
||||||
Load_IMAGE_File:
|
Load_IMAGE_File:
|
||||||
LD A,(IMAGE_HANDLER)
|
LD A,(IMAGE_HANDLER)
|
||||||
@ -936,7 +960,7 @@ RESTORE_PORT_HOLD:
|
|||||||
JP ToBIOS
|
JP ToBIOS
|
||||||
; ; ;
|
; ; ;
|
||||||
FIRST_PREPARE: LD A,CNF_PORT.CNF_0
|
FIRST_PREPARE: LD A,CNF_PORT.CNF_0
|
||||||
OUT (SYS_PORT.OFF),A
|
OUT (SYS_PORT.RAM),A
|
||||||
CALL RESTORE_PORT_HOLD
|
CALL RESTORE_PORT_HOLD
|
||||||
|
|
||||||
LD A,high ZXKeys.Line_7
|
LD A,high ZXKeys.Line_7
|
||||||
@ -1102,7 +1126,6 @@ NO_RET_FN: LD (#FFF4),DE ;
|
|||||||
LD (#FFF1),A
|
LD (#FFF1),A
|
||||||
IN A,(SLOT2) ; á®åà ¨âì áâà ¨æã
|
IN A,(SLOT2) ; á®åà ¨âì áâà ¨æã
|
||||||
LD (#FFF2),A ; ¯à®£à ¬¬ë ¤«ï ¢®§¢à â
|
LD (#FFF2),A ; ¯à®£à ¬¬ë ¤«ï ¢®§¢à â
|
||||||
;IN A,(SLOT3)
|
|
||||||
LD A,(SAVE_SLOT3)
|
LD A,(SAVE_SLOT3)
|
||||||
LD (#FFF3),A ;
|
LD (#FFF3),A ;
|
||||||
;********************************************
|
;********************************************
|
||||||
@ -1113,14 +1136,14 @@ RESET_TO_ZX: DI
|
|||||||
CALL FIRST_PREPARE
|
CALL FIRST_PREPARE
|
||||||
JP Z,EXIT_TO_DSS.cont
|
JP Z,EXIT_TO_DSS.cont
|
||||||
|
|
||||||
; ä¨ªá ¥¯®«®© ¤¥è¨äà æ¨¨ ¯®àâ #FFFD (¯¨èãâ ¢ #C0FD)
|
; [x] ä¨ªá ¥¯®«®© ¤¥è¨äà æ¨¨ ¯®àâ #FFFD (¯¨èãâ ¢ #C0FD)
|
||||||
.cont: LD A,#FF
|
.cont: LD A,#FF
|
||||||
LD HL,%00'010'1'1110'1101
|
LD HL,%00'010'1'1110'1101
|
||||||
LD DE,%10'111'1'1111'1111 ; CNF_0, CNF_1
|
LD DE,%10'111'1'1111'1111 ; CNF_0, CNF_1
|
||||||
LD BC,ACEX.AY_FFFD_WRITE*256 + BIOS.DCP_CONFIG
|
LD BC,ACEX.AY_FFFD_WRITE*256 + BIOS.DCP_CONFIG
|
||||||
RST ToBIOS
|
RST ToBIOS
|
||||||
;
|
;
|
||||||
;[x] 04/11/2023 Žâ¤¥«ìë¥ à ¬¤¨áª¨ ¤«ï ०¨¬ ᯥªâà㬠¨ DSS. BLK_TO_RAMD
|
; [x] 04/11/2023 Žâ¤¥«ìë¥ à ¬¤¨áª¨ ¤«ï ०¨¬ ᯥªâà㬠¨ DSS. BLK_TO_RAMD
|
||||||
LD BC,BIOS.SWAP_RAM_DRIVES.ZX
|
LD BC,BIOS.SWAP_RAM_DRIVES.ZX
|
||||||
RST ToBIOS
|
RST ToBIOS
|
||||||
;
|
;
|
||||||
@ -1132,8 +1155,20 @@ RESET_TO_ZX: DI
|
|||||||
LD A,ACEX.RET_PORT
|
LD A,ACEX.RET_PORT
|
||||||
CALL SET_ROM ; ¢ª«îç¨âì ¢®§¢à â
|
CALL SET_ROM ; ¢ª«îç¨âì ¢®§¢à â
|
||||||
|
|
||||||
|
; [ ]
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (SLOT3),A
|
||||||
|
.DIR_SEC_L+1: LD HL,0
|
||||||
|
LD (SYS_PAGE.CURRENT_DIR_SEC_L),HL
|
||||||
|
.DIR_SEC_H+1: LD HL,0
|
||||||
|
LD (SYS_PAGE.CURRENT_DIR_SEC_H),HL
|
||||||
|
.CURRENT_DIR_DRIVE+1:
|
||||||
|
LD A,#FF
|
||||||
|
LD (SYS_PAGE.CURRENT_DIR_DRIVE),A
|
||||||
|
;;;;;;;;
|
||||||
|
|
||||||
LD A,CNF_PORT.CNF_3
|
LD A,CNF_PORT.CNF_3
|
||||||
OUT (SYS_PORT.ON),A ; System-page on & CNF = 3
|
OUT (SYS_PORT.ROM),A ; System-page on & CNF = 3
|
||||||
|
|
||||||
XOR A
|
XOR A
|
||||||
OUT (BorderColor),A ; border-0
|
OUT (BorderColor),A ; border-0
|
||||||
@ -1162,10 +1197,7 @@ RESET_TO_ZX: DI
|
|||||||
|
|
||||||
;---------------[test!!!!!]-------------
|
;---------------[test!!!!!]-------------
|
||||||
;[ ] 1/02/2024 ०¨¬ ᯥªâàã¬ à ¡®â ¥â á «î¡ë¬¨ ª « ¬¨ ¨ ®á®¢ë¬¨ à §¤¥« ¬¨
|
;[ ] 1/02/2024 ०¨¬ ᯥªâàã¬ à ¡®â ¥â á «î¡ë¬¨ ª « ¬¨ ¨ ®á®¢ë¬¨ à §¤¥« ¬¨
|
||||||
; XOR A ; --> IDE-1
|
CALL SET_CURRENT_HDD
|
||||||
.hdd+1: LD A,#FF
|
|
||||||
LD C,BIOS.HDD_PART ; IDE-1/IDE-2
|
|
||||||
RST ToBIOS_18
|
|
||||||
;---------------------------------------
|
;---------------------------------------
|
||||||
|
|
||||||
;******************************
|
;******************************
|
||||||
@ -1309,7 +1341,7 @@ PROG_STARTS:
|
|||||||
LD A,2
|
LD A,2
|
||||||
OUT (SLOT2),A
|
OUT (SLOT2),A
|
||||||
LD A,E
|
LD A,E
|
||||||
OUT (SYS_PORT.OFF),A
|
OUT (SYS_PORT.RAM),A
|
||||||
LD A,D
|
LD A,D
|
||||||
AND A
|
AND A
|
||||||
JP Z,0
|
JP Z,0
|
||||||
@ -1402,6 +1434,9 @@ NO_ZX_FLAG DB 0
|
|||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
;
|
;
|
||||||
|
|
||||||
|
INCLUDE 'For_4X.asm'
|
||||||
|
|
||||||
|
|
||||||
; …᫨ ¯ à ¬¥âà § ¤ , â® ¢ë¡¨à ¥âáï § 票¥ Y
|
; …᫨ ¯ à ¬¥âà § ¤ , â® ¢ë¡¨à ¥âáï § 票¥ Y
|
||||||
PARAMS:; Y / N ; âãâ § ç¥¨ï ¤«ï ª«î祩 § ¯¨áë¢ îâáï ª ª 16 ¡¨â § 票¥, § ç¨â ®¡à âë© ¯®à冷ª ¡ ©â®¢
|
PARAMS:; Y / N ; âãâ § ç¥¨ï ¤«ï ª«î祩 § ¯¨áë¢ îâáï ª ª 16 ¡¨â § 票¥, § ç¨â ®¡à âë© ¯®à冷ª ¡ ©â®¢
|
||||||
Turbo__: DW Turbo_, #0302 ; ¢ª«îç¨âì TURBO
|
Turbo__: DW Turbo_, #0302 ; ¢ª«îç¨âì TURBO
|
||||||
@ -1455,9 +1490,11 @@ CNF_FILE: DB "SPECTRUM.CFG",0
|
|||||||
;SPECTRUM_HOME_DIR EQU USER_CURRENT_DIR + 256
|
;SPECTRUM_HOME_DIR EQU USER_CURRENT_DIR + 256
|
||||||
;
|
;
|
||||||
ONE_FILE: WORD 0
|
ONE_FILE: WORD 0
|
||||||
TMP_BUFF EQU ONE_FILE+256
|
.Size EQU 256
|
||||||
|
TMP_BUFF EQU ONE_FILE + ONE_FILE.Size
|
||||||
|
.Size EQU 256
|
||||||
;
|
;
|
||||||
PlaceForPalette EQU TMP_BUFF+256 ;#A000
|
PlaceForPalette EQU TMP_BUFF + TMP_BUFF.Size ;#A000
|
||||||
PlaceForTXTscreen EQU PlaceForPalette + 1024*4 ;!HARDCODE
|
PlaceForTXTscreen EQU PlaceForPalette + 1024*4 ;!HARDCODE
|
||||||
|
|
||||||
|
|
||||||
@ -1467,3 +1504,143 @@ PlaceForTXTscreen EQU PlaceForPalette + 1024*4 ;!HARDCODE
|
|||||||
;[]-------------------------------------------------------------------[]
|
;[]-------------------------------------------------------------------[]
|
||||||
; Code end section
|
; Code end section
|
||||||
;
|
;
|
||||||
|
|
||||||
|
; [x] new tr-hdd
|
||||||
|
; TO INIT by SPECTRUM.EXE:
|
||||||
|
; .CURRENT_DIR_SEC_L EQU #C196 ; word
|
||||||
|
; .CURRENT_DIR_SEC_H EQU #C198 ; word
|
||||||
|
; .CURRENT_DIR_DRIVE EQU #C19A
|
||||||
|
; .CURRENT_HDD EQU #C12D
|
||||||
|
|
||||||
|
; CORRECT_CUR_DIR:
|
||||||
|
; DI
|
||||||
|
; IN A,(SLOT3)
|
||||||
|
; LD C,A
|
||||||
|
; LD A,SYS_PAGE
|
||||||
|
; OUT (SLOT3),A
|
||||||
|
; LD A,#FF
|
||||||
|
; JR C,.skip
|
||||||
|
; LD (SYS_PAGE.CURRENT_HDD),A
|
||||||
|
; .skip: INC A
|
||||||
|
; LD H,A
|
||||||
|
; LD L,A
|
||||||
|
; LD (SYS_PAGE.CURRENT_DIR_SEC_L),HL
|
||||||
|
; LD (SYS_PAGE.CURRENT_DIR_SEC_H),HL
|
||||||
|
; LD A,C
|
||||||
|
; OUT (SLOT3),A
|
||||||
|
; RET
|
||||||
|
/*
|
||||||
|
INIT_HDD_WORK:
|
||||||
|
LD A,(RESET_TO_ZX.hdd)
|
||||||
|
CP #FF
|
||||||
|
JR Z,.skip_hdd
|
||||||
|
;
|
||||||
|
OR #80
|
||||||
|
LD HL,Temp_Buffer
|
||||||
|
LD BC,Dss.DskInfo
|
||||||
|
RST ToDSS
|
||||||
|
;
|
||||||
|
LD B,4 ;!HARDCODE ®¬¥à 㦮£® ¯ à ¬¥âà
|
||||||
|
LD DE,0
|
||||||
|
LD HL,Temp_Buffer
|
||||||
|
.loop_param: ADD HL,DE
|
||||||
|
LD E,(HL)
|
||||||
|
INC HL
|
||||||
|
DJNZ .loop_param
|
||||||
|
LD A,(HL)
|
||||||
|
AND #80
|
||||||
|
JR Z,.no_change_Disk
|
||||||
|
CP #90
|
||||||
|
JR NC,.no_change_Disk
|
||||||
|
;
|
||||||
|
LD A,3
|
||||||
|
AND (HL)
|
||||||
|
LD D,A
|
||||||
|
INC HL
|
||||||
|
LD A,(HL)
|
||||||
|
RLCA
|
||||||
|
RLCA
|
||||||
|
;
|
||||||
|
OR D
|
||||||
|
AND #0F
|
||||||
|
JR .start
|
||||||
|
;
|
||||||
|
.no_change_Disk:;
|
||||||
|
XOR A
|
||||||
|
.start: LD C,BIOS.HDD_PART ; IDE-1/IDE-2
|
||||||
|
RST ToBIOS
|
||||||
|
;
|
||||||
|
.loop: LD C,BIOS.HDD_INIT
|
||||||
|
RST ToBIOS
|
||||||
|
JR C,.loop
|
||||||
|
;
|
||||||
|
|
||||||
|
CALL BPB_SetUp
|
||||||
|
|
||||||
|
|
||||||
|
;[x] music and dirs
|
||||||
|
LD HL,SND_DIR
|
||||||
|
LD DE,Temp_Buffer
|
||||||
|
LD A,FAT_ATTR.DIRECTORY
|
||||||
|
LD BC,Dss.F_First.FATname
|
||||||
|
RST ToDSS
|
||||||
|
JR NC,.start_setup
|
||||||
|
;
|
||||||
|
LD A,#C9 ; RET opcode - disable music
|
||||||
|
LD (SoundOnOff2),A
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
.start_setup:
|
||||||
|
;-=-=-=-=-=-=-=-
|
||||||
|
LD HL,(Temp_Buffer+26) ; first dir cluster
|
||||||
|
CALL NSECTOR
|
||||||
|
LD (MSD_DATS.MSD_CAT_SEC2),HL
|
||||||
|
LD (MSD_DATS.MSD_CAT_SEC),IX
|
||||||
|
;JP READ_DIR
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.RESTORE_DIR:
|
||||||
|
PUSH AF
|
||||||
|
;
|
||||||
|
IN A,(SLOT3)
|
||||||
|
EX AF,AF'
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (SLOT3),A
|
||||||
|
;
|
||||||
|
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
|
||||||
|
|
||||||
|
CORRECT_CUR_DIR:
|
||||||
|
DI
|
||||||
|
IN A,(SLOT3)
|
||||||
|
LD C,A
|
||||||
|
LD A,SYS_PAGE
|
||||||
|
OUT (SLOT3),A
|
||||||
|
LD A,#FF
|
||||||
|
JR C,.skip
|
||||||
|
LD (SYS_PAGE.CURRENT_HDD),A
|
||||||
|
.skip: INC A
|
||||||
|
LD H,A
|
||||||
|
LD L,A
|
||||||
|
LD (SYS_PAGE.CURRENT_DIR_SEC_L),HL
|
||||||
|
LD (SYS_PAGE.CURRENT_DIR_SEC_H),HL
|
||||||
|
LD A,C
|
||||||
|
OUT (SLOT3),A
|
||||||
|
RET
|
||||||
|
|
||||||
|
*/
|
||||||
Loading…
Reference in New Issue
Block a user