[Core] DISKINF: Метка диска проверяется сначала в корневом каталоге и если там нет, то берётся метка из BPB.

[Shell] Метка берётся только из функции DISKINF.
This commit is contained in:
Anatoliy Belyanskiy 2024-05-29 01:10:05 +10:00
parent 9ad718d6b3
commit 4b564101d1
10 changed files with 49 additions and 85 deletions

View File

@ -31,6 +31,10 @@
; BC - à §¬¥à ᥪâ®à  ¢ ¡ ©â å
; CF=1:
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Œ¥âª  ¤¨áª  ¯à®¢¥àï¥âáï á­ ç «  ¢ ª®à­¥¢®¬ ª â «®£¥ ¨ ¥á«¨ â ¬ ;
; ­¥â, â® ¡¥àñâáï ¬¥âª  ¨§ BPB ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;/////////////////////////////////////////////////////////////////////
DISKINF: LD C,B
LD B,1
@ -76,8 +80,9 @@ DISKINF: LD C,B
.next_prm: LD HL,CORE_BUFFERS.FatBuffer.BPB_SERIAL_NUMBER
LD C,4 ;!HARDCODE _sBOOT_SECTOR_PARAMS.BPB_SERIAL_NUMBER
CALL .mCOPY_LOOP
; !FIXIT ¥á«¨ ¬¥âª  ¢ BPB "NO NAME" ¨«¨ ¯à®¡¥«ë, â® ¯à®¢¥àïâì ¬¥âªã ¢ ª®à­¥¢®¬ ª â «®£¥.
LD HL,CORE_BUFFERS.FatBuffer.BPB_LABEL
;
;LD HL,CORE_BUFFERS.FatBuffer.BPB_LABEL
CALL GET_LABEL
LD C,11 ;!HARDCODE _sBOOT_SECTOR_PARAMS.BPB_LABEL
CALL .mCOPY_LOOP
; fat32
@ -226,6 +231,18 @@ GetFreeSpace: LD A,1
EXX
JP .loop_free_space
;
FAT_STRING: DB 'FAT12'
;
;
; DE - ¡ãä¥à
GET_LABEL: PUSH DE
LD HL,.LABEL_MASK ; "\*.*" ¨¬ï ¬¥âª¨
LD A,FAT_ATTR.VOLUME_ID ;  âਡãâ ¬¥âª¨ ⮬ 
LD BC,Dss.F_First.FATname ; f_first, ä®à¬ â 11
RST ToDSS
POP DE
LD HL,CORE_BUFFERS.FatBuffer.BPB_LABEL
RET C
LD HL,BUFFER_FIND.REC_Name
ADD HL,DE
RET
.LABEL_MASK: DB '\*.*',0

View File

@ -134,11 +134,6 @@ BATCH:
ld de,Buffers.input_line.Path + .shell.size - 1
call copy_string
;
; ld c,Dss.CurDisk
; rst ToDSS
; add a,'A'
; ld (.shell),a
;
ld hl,Buffers.input_line.Path
ld bc,Dss.Exec
RST ToDSS
@ -161,10 +156,10 @@ BATCH:
.shell.size EQU $ - .shell
;!TODO
.ErrorEnv: DB 'ERRORLEVEL='
.ErrorEnv.Code: DB 'xxx',0
.ErrorEnv.Size EQU $ - .ErrorEnv
;
; .ErrorEnv: DB 'ERRORLEVEL='
; .ErrorEnv.Code: DB 'xxx',0
; .ErrorEnv.Size EQU $ - .ErrorEnv
;
;---------------------------------------------------
; ‚믮«­¥­¨¥ ª®¬ ­¤ BAT-ä ©« 

View File

@ -1,9 +1,5 @@
; [x] 11/12/23
cmd_break:
; pop hl ; ¢®ááâ ­®¢«¥­¨¥ ¡ « ­á  á⥪ 
; pop hl ; ¢®ááâ ­®¢«¥­¨¥ ¡ « ­á  á⥪ 
; XOR A
; ld (MOVWORD.count),a
.sp+1: LD SP,0
;!TODO ¢«®¦¥­­ë¥ bat. ¯¥à¥¤ ¢ âì ®è¨¡ªã ®¡à â­® ¢ ¢ë§ë¢ î騩 bat
.exit: ld a,(BAT_FM) ; ¤¥áªà. bat-ä ©« 

View File

@ -54,7 +54,7 @@ ascii2byte:
cp "0"
ret c
cp "9"+1
jr c,$+10
jr c,$+10 ;!FIXIT $
and 5Fh
cp "F"+1
ccf

View File

@ -1,7 +1,6 @@
;///////////////////////////////////////////////////
;
; DIR. ‚뢮¤ ᯨ᪠ ä ©«®¢ ¨ ¯ ¯®ª
; !TODO ã¡à âì ¡ £ ¥á«¨ ¢ ¯ à ¬¥âॠ¬ áª¨ 㪠§ ­ ¯ãâì ¤® ¯ ¯ª¨ ¨«¨ ¤ ¦¥ ¤® ¤à㣮£® ¤¨áª 
;///////////////////////////////////////////////////
cmd_dir: push de
;;;; [ ] ¯®¤¤¥à¦ª  ¯ à ¬¥â஢
@ -22,7 +21,7 @@ cmd_dir: push de
jr z,.skip
LD DE,MAIN_MSG.CALCULATING
CALL MESSAGE
;!TEST 23/05/24
; 23/05/24
.skip: ;LD C,Dss.CurDisk ; ã§­ âì ⥪. ¤¨áª
;RST ToDSS
;CALL read_disk_info ; ¯à®ç¨â âì ¬¥âªã ¨ á¥à¨©­ë© ­®¬¥à ¤¨áª 
@ -41,21 +40,11 @@ cmd_dir: push de
ld de,Buffers.work.buffer1
ld c,Dss.GSwitch ; ¢ë¤¥«¨âì ¯ à ¬¥âà ª®¬-áâப¨
RST ToDSS
;!TODO âãâ ¢ Buffers.work.buffer1 «¥¦¨â ¯ãâì ¨/¨«¨/«¨¡® ¬ áª  ä ©« 
; ­ ¤® à §®¡à âì ¥ñ Dss.EX_Path ¢ë¤¥«¨âì ¥á«¨ ¥áâì ¤¨áª, ¯ãâì ¨ ¬ áªã, ¯®á«¥ 祣® 㦥
; ®â¯¥ç â뢠âì ¯ãâì ¢ è ¯ª¥, ã§­ ¢ âì CurDisk ª ª ¢ .skip ¢ëè¥. „¥« âì íâ® ¤® ¢ë§®¢ 
; ¯à®æ¥¤ãàë read_disk_info. ‹ãçè¥ ¤¥« âì íâ® ¯®á«¥ ¬¥âª¨ .skip
;
ld a,(Buffers.work.buffer1)
or a
;jr nz,.SkipMask ; § ¤ ­  ¬ áª  ¨¬ñ­
jr z,.NoSkipMask ; ­¥ § ¤ ­  ¬ áª  ¨¬ñ­
; á®åà ­¨âì ⥪ã騩 ¯ãâì ¢ Buffers.work.buffer2
; ˆ§ ¡ãä¥à  DE § ¯®¬­¨âì ¬ áªã (¯¥à¢ë¥ á¯à ¢  ᨬ¢®«ë ¯®á«¥ ¯¥à¢®£® á¯à ¢  '\') ¨ ã¡à âì ¥ñ
; ¥á«¨ ¬ áª¨ ­¥â ¨ ¯®á«¥¤­¨© ¢ áâப¥ '\', â® ¯®â®¬ ¤®¡ ¢¨âì ¬ áªã ª ª ¢ "; ¤®¡ ¢«¥­¨¥ ¬ áª¨"
; ᤥ« âì CD ¢ ¤¨à¥ªâ®à¨î ¨§ ¡ãä¥à  DE
; make_short_path
;
ld hl,Buffers.work.buffer1
ld bc,Dss.EX_Path.GET_ALL
rst ToDSS
@ -111,7 +100,7 @@ cmd_dir: push de
.NoSkipMask: ld hl,mask_fname ; "*.*"
ld de,Buffers.work.free
call copy_string
; !TEST 23/05/24
; 23/05/24
.SkipMask: LD C,Dss.CurDisk ; ã§­ âì ⥪. ¤¨áª
RST ToDSS
CALL read_disk_info ; ¯à®ç¨â âì ¬¥âªã ¨ á¥à¨©­ë© ­®¬¥à ¤¨áª 
@ -409,8 +398,6 @@ PRNSIZE: ld a,(ix+32)
.PRZ: ld de,PRM3 ; 16 ¡ãä¥à
jp ncopy_string ; ᪮¯¨à. áâபã (á ­ã«¥¬), ¬ ªá.15 ᨬ¢.
; ‘ª®¯¨à®¢ âì ¢ ¡ãä¥à ¤ âã ä ©« /¯ ¯ª¨
PRNDATE: ld c,(ix+FAT_DIRECTORY_RECORD.DATE)
ld b,(ix+FAT_DIRECTORY_RECORD.DATE+1)
@ -419,10 +406,6 @@ PRNDATE: ld c,(ix+FAT_DIRECTORY_RECORD.DATE)
ld (hl),0
ld hl,SIZE_BUFFER.low ; "0 000 000 000"
ld de,PRM4 ; 16 ªã¤ 
; ld a,(hl)
; cp "0"
; jr nz,$+4
; ld (hl)," "
jp ncopy_string ; ᪮¯¨à. áâபã (á ­ã«¥¬), ¬ ªá.15 ᨬ¢.
; ‘ª®¯¨à®¢ âì ¢ ¡ãä¥à ¢à¥¬ï ä ©« /¯ ¯ª¨
@ -433,10 +416,6 @@ PRNTIME: ld b,(ix+22)
ld (hl),0
ld hl,SIZE_BUFFER.low ; "0 000 000 000"
ld de,PRM5 ; 80 ¡ãä¥à áâப¨
; ld a,(hl)
; cp "0"
; jr nz,$+4
; ld (hl)," "
jp ncopy_string ; ᪮¯¨à. áâபã (á ­ã«¥¬), ¬ ªá.15 ᨬ¢.
; ¢ ¡ãä¥à ¢à¥¬ï ä ©« /¯ ¯ª¨
@ -740,26 +719,9 @@ read_disk_info: OR #80
LD L,(HL)
LD H,A
call hex16
.get_label: ; ¨é¥¬ ¬¥âªã ¢ ª®à­¥ ”‘ à §¤¥« 
; ãáâ. ª®à¥­ì ¤¨áª 
; ld hl,root_path ; "x:\",0
; ld c,Dss.ChDir
; RST ToDSS
; ¯®¨áª ¬¥âª¨
;ld hl,mask_fname ; "*.*" ¨¬ï ¬¥âª¨
ld hl,SlashMaskFname ; "\*.*" ¨¬ï ¬¥âª¨
ld de,Buffers.work.buffer1 ; ªã¤ 
ld a,FAT_ATTR.VOLUME_ID ;  âਡãâ ¬¥âª¨ ⮬ 
ld bc,Dss.F_First.FATname ; f_first, ä®à¬ â 11
RST ToDSS
;push af
;call restore_path ; ¢®ááâ. ⥪. ¯ãâì
;pop af
ld hl,Buffers.work.buffer1 + BUFFER_FIND.REC_Name ; ­ ç «® ¬¥âª¨ ¢ ¡ãä¥à¥ f_first
jr nc,volume_label ; ¬¥âª  ¢ ª®à­¥¢®¬ ª â «®£¥
; ¡¥àñ¬ ¬¥âªã ¨§ BPB
; âãâ ¢ HL ¤«¨­  ¯®«ï "Œ¥âª  ¤¨áª "
POP hl
;
.get_label: ; âãâ ¢ HL ¤«¨­  ¯®«ï "Œ¥âª  ¤¨áª "
POP HL
LD A,(HL)
INC HL
AND A

View File

@ -33,7 +33,7 @@ A8623: ld c,Dss.PChars
A862E: ld a,(echo_mode) ; ä« £ echo-०¨¬ 
or a
ld de,7 ; ¨­¤¥ªá "on"
jr nz,$+5 ; false
jr nz,$+5 ; false ;!FIXIT $
ld de,MAIN_MSG.OFF ; ¨­¤¥ªá "off"
call FMESAGE ; ­ ©â¨ áâப㠯® ¨­¤¥ªáã
ld de,PRM1 ; ªã¤  ( à£ã¬¥­â %1)

View File

@ -295,10 +295,10 @@ Enter: pop hl ;
; ã¡à âì ª®­æ. ¯à®¡¥«ë ª®¬-áâப¨
ld a,(hl)
cp c
jr nz,$+8
jr nz,$+8 ;!FIXIT $
dec hl
dec (iy+4) ; --ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
djnz $-8
djnz $-8 ;!FIXIT $
inc hl
ld (hl),d ; ¢ ª®­¥æ ª®¬-áâப¨
ld a,b
@ -894,7 +894,7 @@ hist_comp_loop:
hist_comp_notequal:
inc hl
dec c
jr nz,$-2 ; 、ョ ェョュ譬 矮牋ェィ
jr nz,$-2 ; ¤® ª®­æ  áâப¨ ;!FIXIT $
hist_comp_next:
pop de
ex af,af'

View File

@ -60,10 +60,10 @@ hex2dec_ascii_16bit:
and a
inc a
sbc hl,bc
jr nc,$-3
jr nc,$-3 ;!FIXIT $
add hl,bc
cp "0"
jr z,$+6
jr z,$+6 ;!FIXIT $
set 7,(ix+0)
bit 7,(ix+0)
ret z

View File

@ -290,8 +290,8 @@ set_option_flag:
cp "a"
jr c,setopt1
cp "z"+1
jr nc,$+4
and 5Fh ; a..z -> A..Z
jr nc,$+4 ;!FIXIT $
and #5F ; a..z -> A..Z
setopt1: cp "P" ; § ¯ã᪠襫«  á ®âà ¡. autoexec.bat
jr nz,setopt2
set 7,c
@ -310,10 +310,6 @@ setopt4: ld a,c
ret
;!TODO ¯à®¢¥à¨âì 4 ­¨¦¥¨¤ã騥 ¯à®æ¥¤ãàë ª®£¤  ¢ DSS ¡ã¤ãâ ­®à¬ «ì­® ¯ã⨠§ ¯®¬¨­ âìáï
; ‘®åà ­¨âì ⥪. ¤¨áª ¨ ¯ãâì
;GETPATH:
Get_Path:
@ -328,31 +324,29 @@ Get_Path:
ld (Buffers.screen_path),a ; 33 áâப  íªà ­­®£® ¯ãâ¨
ret
;!FIXIT ã¡à âì «¨è­¨¥ ¢ë§®¢ë
; ‚®ááâ ­®¢¨âì ⥪. ¤¨áª ¨ ¯ãâì (¯®á«¥ ®è¨¡ª¨)
IFUSED restore_disk_path
ASSERT restore_path
restore_disk_path:
; ãáâ. ⥪. ¤¨áª
ld a,(Buffers.screen_path) ; 33 áâப  íªà ­­®£® ¯ãâ¨
sub "A"
ld c,Dss.ChDisk
RST ToDSS
ENDIF
;!FIXIT ã¡à âì «¨è­¨¥ ¢ë§®¢ë
IFUSED restore_path
restore_path:
; ãáâ. ⥪. ª â «®£
ld hl,Buffers.sys_path ; 256 ¡ãä¥à á¨áâ. ¯ãâ¨
ld c,Dss.ChDir
RST ToDSS
JP ToDSS
ret
ENDIF
;
; ­  ­®¢ãî áâபã ;!FIXIT ᤥ« âì ç¥à¥§ .PChars
; newline: ld a,_cc.cr
; ld c,Dss.PutChar
; rst ToDSS
; ld a,_cc.lf
; ld c,Dss.PutChar
; jp ToDSS
newline: push hl
ld hl,MAIN_MSG.TABLE+1 ; "CR,LF,0"
ld c,Dss.PChars
@ -387,7 +381,7 @@ ncopy_string:
ldi
ret po
or a
jr nz,$-5
jr nz,$-5 ;!FIXIT $
ret
; ‘ª®¯¨à. áâபã (á ­ã«¥¬)

View File

@ -1 +1 @@
393
402