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
|
||||
237
spectrum.asm
237
spectrum.asm
@ -690,6 +690,7 @@ SET_ROM: DI
|
||||
;********************************************
|
||||
|
||||
;********************************************
|
||||
; —⥨¥ ®¡à § TRD/SCL ¢ à ¬¤à ©¢
|
||||
READ_IMAGE: LD DE,ONE_FILE
|
||||
LD BC,FULL_FILE_NAME_LENGTH
|
||||
LDIR
|
||||
@ -701,7 +702,7 @@ READ_IMAGE: LD DE,ONE_FILE
|
||||
RET C
|
||||
|
||||
LD (IMAGE_HANDLER),A
|
||||
; [ ] 31/01/2024 ¯®¤¤¥à¦ª ¯¥à¥ª«îç¥¨ï ¤¨áª /à §¤¥« ¢ TR-DOS
|
||||
; [x] 31/01/2024 ¯®¤¤¥à¦ª ¯¥à¥ª«îç¥¨ï ¤¨áª /à §¤¥« ¢ TR-DOS
|
||||
LD HL,ONE_FILE
|
||||
LD BC,Dss.EX_Path.GET_ALL
|
||||
RST ToDSS
|
||||
@ -713,11 +714,11 @@ READ_IMAGE: LD DE,ONE_FILE
|
||||
RST ToDSS
|
||||
JR C,.no_change_Disk
|
||||
JR .getInfoDRV
|
||||
.currentDisk: ;
|
||||
LD A,(ONE_FILE)
|
||||
;
|
||||
.currentDisk: LD A,(ONE_FILE)
|
||||
SUB "A"
|
||||
;
|
||||
.getInfoDRV: ;
|
||||
.getInfoDRV: ; <20> áâà ¨¢ ¥¬ HDD
|
||||
OR #80
|
||||
LD HL,TMP_BUFF
|
||||
LD BC,Dss.DskInfo
|
||||
@ -730,13 +731,14 @@ READ_IMAGE: LD DE,ONE_FILE
|
||||
LD E,(HL)
|
||||
INC HL
|
||||
DJNZ .loop_param
|
||||
; check HDD
|
||||
LD A,(HL)
|
||||
AND #80
|
||||
JR Z,.no_change_Disk
|
||||
CP #90
|
||||
CP DRIVE_CODES.SPRINTER.HDD
|
||||
JR C,.no_change_Disk
|
||||
CP DRIVE_CODES.SPRINTER.HDD + 4 + 1
|
||||
JR NC,.no_change_Disk
|
||||
;
|
||||
LD A,3
|
||||
LD A,%0000'0011
|
||||
AND (HL)
|
||||
LD D,A
|
||||
INC HL
|
||||
@ -747,23 +749,46 @@ READ_IMAGE: LD DE,ONE_FILE
|
||||
OR D
|
||||
AND #0F
|
||||
;
|
||||
;LD C,SLOT3
|
||||
;IN B,(C)
|
||||
;EX AF,AF'
|
||||
;LD A,SYS_PAGE
|
||||
;OUT (C),A
|
||||
;EX AF,AF'
|
||||
;
|
||||
LD (RESET_TO_ZX.hdd),A
|
||||
;OUT (C),B
|
||||
LD (SET_CURRENT_HDD.NUMBER),A
|
||||
OR DRIVE_CODES.TRDOS.HDD
|
||||
LD (RESET_TO_ZX.CURRENT_DIR_DRIVE),A
|
||||
;
|
||||
; [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:;
|
||||
LD A,(IMAGE_FLAG)
|
||||
AND A
|
||||
JR Z,.Load_TRD
|
||||
|
||||
CP 1 ; check if SCL
|
||||
DEC A ; check if SCL
|
||||
JP Z,Load_SCL
|
||||
;jp Error_Flag ;!!!!!!!!!!!!!!!!
|
||||
|
||||
@ -822,7 +847,6 @@ Get_RAM_Disk_E: LD A,D
|
||||
RET
|
||||
;---------------------------------------
|
||||
|
||||
|
||||
;********************************************
|
||||
Load_IMAGE_File:
|
||||
LD A,(IMAGE_HANDLER)
|
||||
@ -936,7 +960,7 @@ RESTORE_PORT_HOLD:
|
||||
JP ToBIOS
|
||||
; ; ;
|
||||
FIRST_PREPARE: LD A,CNF_PORT.CNF_0
|
||||
OUT (SYS_PORT.OFF),A
|
||||
OUT (SYS_PORT.RAM),A
|
||||
CALL RESTORE_PORT_HOLD
|
||||
|
||||
LD A,high ZXKeys.Line_7
|
||||
@ -1102,7 +1126,6 @@ NO_RET_FN: LD (#FFF4),DE ;
|
||||
LD (#FFF1),A
|
||||
IN A,(SLOT2) ; á®åà ¨âì áâà ¨æã
|
||||
LD (#FFF2),A ; ¯à®£à ¬¬ë ¤«ï ¢®§¢à â
|
||||
;IN A,(SLOT3)
|
||||
LD A,(SAVE_SLOT3)
|
||||
LD (#FFF3),A ;
|
||||
;********************************************
|
||||
@ -1113,7 +1136,7 @@ RESET_TO_ZX: DI
|
||||
CALL FIRST_PREPARE
|
||||
JP Z,EXIT_TO_DSS.cont
|
||||
|
||||
; ä¨ªá ¥¯®«®© ¤¥è¨äà æ¨¨ ¯®àâ #FFFD (¯¨èãâ ¢ #C0FD)
|
||||
; [x] ä¨ªá ¥¯®«®© ¤¥è¨äà æ¨¨ ¯®àâ #FFFD (¯¨èãâ ¢ #C0FD)
|
||||
.cont: LD A,#FF
|
||||
LD HL,%00'010'1'1110'1101
|
||||
LD DE,%10'111'1'1111'1111 ; CNF_0, CNF_1
|
||||
@ -1132,8 +1155,20 @@ RESET_TO_ZX: DI
|
||||
LD A,ACEX.RET_PORT
|
||||
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
|
||||
OUT (SYS_PORT.ON),A ; System-page on & CNF = 3
|
||||
OUT (SYS_PORT.ROM),A ; System-page on & CNF = 3
|
||||
|
||||
XOR A
|
||||
OUT (BorderColor),A ; border-0
|
||||
@ -1162,10 +1197,7 @@ RESET_TO_ZX: DI
|
||||
|
||||
;---------------[test!!!!!]-------------
|
||||
;[ ] 1/02/2024 ०¨¬ ᯥªâàã¬ à ¡®â ¥â á «î¡ë¬¨ ª « ¬¨ ¨ ®á®¢ë¬¨ à §¤¥« ¬¨
|
||||
; XOR A ; --> IDE-1
|
||||
.hdd+1: LD A,#FF
|
||||
LD C,BIOS.HDD_PART ; IDE-1/IDE-2
|
||||
RST ToBIOS_18
|
||||
CALL SET_CURRENT_HDD
|
||||
;---------------------------------------
|
||||
|
||||
;******************************
|
||||
@ -1309,7 +1341,7 @@ PROG_STARTS:
|
||||
LD A,2
|
||||
OUT (SLOT2),A
|
||||
LD A,E
|
||||
OUT (SYS_PORT.OFF),A
|
||||
OUT (SYS_PORT.RAM),A
|
||||
LD A,D
|
||||
AND A
|
||||
JP Z,0
|
||||
@ -1402,6 +1434,9 @@ NO_ZX_FLAG DB 0
|
||||
;----------------------------------------------------------------------;
|
||||
;
|
||||
|
||||
INCLUDE 'For_4X.asm'
|
||||
|
||||
|
||||
; …᫨ ¯ à ¬¥âà § ¤ , â® ¢ë¡¨à ¥âáï § 票¥ Y
|
||||
PARAMS:; Y / N ; âãâ § ç¥¨ï ¤«ï ª«î祩 § ¯¨áë¢ îâáï ª ª 16 ¡¨â § 票¥, § ç¨â ®¡à âë© ¯®à冷ª ¡ ©â®¢
|
||||
Turbo__: DW Turbo_, #0302 ; ¢ª«îç¨âì TURBO
|
||||
@ -1455,9 +1490,11 @@ CNF_FILE: DB "SPECTRUM.CFG",0
|
||||
;SPECTRUM_HOME_DIR EQU USER_CURRENT_DIR + 256
|
||||
;
|
||||
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
|
||||
|
||||
|
||||
@ -1467,3 +1504,143 @@ PlaceForTXTscreen EQU PlaceForPalette + 1024*4 ;!HARDCODE
|
||||
;[]-------------------------------------------------------------------[]
|
||||
; 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