mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 01:11:48 +03:00
dir.asm: pause scrolling, full info key '/f'
This commit is contained in:
parent
1533b89738
commit
ce4125e4c6
@ -26,33 +26,56 @@ cmd_dir:
|
||||
call read_disk_info ; ¯à®ç¨â âì ¬¥âªã ¨ á¥à¨©ë© ®¬¥à ¤¨áª
|
||||
;
|
||||
pop de
|
||||
ld a,#ff
|
||||
ld (.key_p),a
|
||||
ld hl,0
|
||||
ld (D88DC),hl
|
||||
ld (D88DE),hl
|
||||
ld (D88E0),hl
|
||||
ld (dir_number),hl
|
||||
|
||||
ex de,hl
|
||||
ld a,(hl)
|
||||
or a
|
||||
jr nz,1F ; § ¤ ¬ ᪠¨¬¥
|
||||
ld hl,mask_fname ; "*.*"
|
||||
;ld de,T9186 ; ¡ãä¥à
|
||||
1: ld de,work_buffer1 ; 80
|
||||
ld de,work_buffer1 ; 80
|
||||
ld c,Dss.GSwitch ; ¢ë¤¥«¨âì ¯ à ¬¥âà ª®¬-áâப¨
|
||||
RST ToDSS
|
||||
;
|
||||
ld a,(work_buffer1)
|
||||
or a
|
||||
jr nz,1F ; § ¤ ¬ ᪠¨¬¥
|
||||
;
|
||||
ld hl,mask_fname ; "*.*"
|
||||
ld de,work_buffer1
|
||||
call copy_string
|
||||
; [ ] 1/10/23
|
||||
ld hl,work_buffer1 ; ¨¬ï ä ©«
|
||||
1: ld hl,work_buffer1 ; ¨¬ï ä ©«
|
||||
ld de,work_buffer1 ; 80 ¡ãä¥à
|
||||
ld a,#37 ; âਡãâ (¢á¥, ªà®¬¥ ¬¥âª¨ ⮬ )
|
||||
ld bc,0*256 + Dss.F_First ; f_first (ä®à¬ â 11)
|
||||
RST ToDSS
|
||||
JR C,.dir_empty ;R14
|
||||
CALL .Print_Header
|
||||
;
|
||||
LD A,32-5 ; ª®«¨ç¥á⢮ áâப ¤® ®¦¨¤ ¨ï ª« ¢¨è¨ (á ¢ëç¥â®¬ § £®«®¢ª ) ;!HARDCODE
|
||||
PUSH AF
|
||||
; 横« ¢ë¢®¤ á¯¨áª ä ©«®¢/¯ ¯®ª
|
||||
.loop: ld hl,work_buffer1 ; 80
|
||||
ld de,33
|
||||
add hl,de
|
||||
.loop: POP AF
|
||||
.key_p+1: and #ff
|
||||
dec a
|
||||
jr nz,.skip_wait
|
||||
ld de,MAIN_MSG.PAUSE
|
||||
call MESSAGE ; ¢ë¢¥á⨠áâபã
|
||||
ld c,Dss.WaitKey
|
||||
rst ToDSS
|
||||
ld a,32-1
|
||||
.skip_wait:
|
||||
PUSH AF
|
||||
;
|
||||
ld hl,work_buffer1+33 ; 80
|
||||
;push af
|
||||
;ld de,33
|
||||
;add hl,de
|
||||
call A88E2
|
||||
;
|
||||
ld ix,work_buffer1 ; 80
|
||||
ld a,(ix+32) ; âਡãâ ⥪. § ¯¨á¨
|
||||
and FAT_ATTR.DIRECTORY ; ¯ ¯ª ?
|
||||
@ -109,53 +132,61 @@ cmd_dir:
|
||||
ld c,Dss.F_Next ; ¯®¨áª á«¥¤.
|
||||
RST ToDSS
|
||||
jr nc,.loop ; § ¤ ¢ 横«, ¥á«¨ ¥ ª®¥æ ᯨáª
|
||||
pop af ; «¨è¥¥
|
||||
|
||||
; „¥áïâ¨çë© ¢ë¢®¤
|
||||
.print: ld hl,(D88DC)
|
||||
ld ix,PRM1 ; ¡ãä¥à
|
||||
call A8964
|
||||
;
|
||||
ld hl,(D88DE) ; ¬«. à §àï¤
|
||||
exx
|
||||
ld hl,(D88E0) ; áâ. à §àï¤
|
||||
exx
|
||||
call A8A8F ; ¤¥áïâ¨çë© 32-å à §àï¤ë© ¢ë¢®¤
|
||||
ld hl,T8B37 ; "0"
|
||||
ld a,(hl)
|
||||
cp " "
|
||||
jr nz,.not_zero
|
||||
ld a,"0"
|
||||
ld (hl),a
|
||||
.not_zero:
|
||||
ld de,T8B46 ; "0 000 000 000"
|
||||
ld hl,T8B2E ; "0000000000"
|
||||
ld a,(hl)
|
||||
ldi
|
||||
cp " "
|
||||
jr z,$+4
|
||||
ld a,"," ; à §¤. à §à冷¢
|
||||
ld (de),a
|
||||
inc de
|
||||
ldi
|
||||
ldi
|
||||
ld a,(hl)
|
||||
ldi
|
||||
cp " "
|
||||
jr z,$+4
|
||||
ld a,"," ; à §¤. à §à冷¢
|
||||
ld (de),a
|
||||
inc de
|
||||
ldi
|
||||
ldi
|
||||
ld a,(hl)
|
||||
ldi
|
||||
cp " "
|
||||
jr z,$+4
|
||||
ld a,"," ; à §¤. à §à冷¢
|
||||
ld (de),a
|
||||
inc de
|
||||
ldi
|
||||
ldi
|
||||
ldi
|
||||
;
|
||||
;;;;;;;;;;;;;
|
||||
; call A8A8F ; ¤¥áïâ¨çë© 32-å à §àï¤ë© ¢ë¢®¤
|
||||
; ld hl,T8B37 ; "0"
|
||||
; ld a,(hl)
|
||||
; cp " "
|
||||
; jr nz,.not_zero
|
||||
; ld a,"0"
|
||||
; ld (hl),a
|
||||
; .not_zero:
|
||||
; ld de,T8B46 ; "0 000 000 000"
|
||||
; ld hl,T8B2E ; "0000000000"
|
||||
; ld a,(hl)
|
||||
; ldi
|
||||
; cp " "
|
||||
; jr z,1F
|
||||
; ld a,"," ; à §¤. à §à冷¢
|
||||
; 1: ld (de),a
|
||||
; inc de
|
||||
; ldi
|
||||
; ldi
|
||||
; ld a,(hl)
|
||||
; ldi
|
||||
; cp " "
|
||||
; jr z,1F
|
||||
; ld a,"," ; à §¤. à §à冷¢
|
||||
; 1: ld (de),a
|
||||
; inc de
|
||||
; ldi
|
||||
; ldi
|
||||
; ld a,(hl)
|
||||
; ldi
|
||||
; cp " "
|
||||
; jr z,1F
|
||||
; ld a,"," ; à §¤. à §à冷¢
|
||||
; 1: ld (de),a
|
||||
; inc de
|
||||
; ldi
|
||||
; ldi
|
||||
; ldi
|
||||
; ret
|
||||
CALL Size2Char
|
||||
;;;;;;;;;;;;;
|
||||
;
|
||||
; [ ] ¢ë¢®¤ ª®«¨ç¥á⢠¯ ¯®ª
|
||||
; [ ] ¢ë¢®¤ ®¡é¥£® ª®«¨ç¥á⢠᢮¡®¤®£® ¬¥áâ
|
||||
ld hl,T8B46 ; "0 000 000 000"
|
||||
@ -173,6 +204,24 @@ cmd_dir:
|
||||
;xor a
|
||||
;ld (de),a
|
||||
;
|
||||
;
|
||||
LD A,(read_disk_info.full)
|
||||
OR A
|
||||
ld hl,has_not_full_info
|
||||
JR Z,.skip_full_space
|
||||
;
|
||||
ld hl,(free_space) ; ¬«. à §àï¤
|
||||
exx
|
||||
ld hl,(free_space+2) ; áâ. à §àï¤
|
||||
exx
|
||||
CALL Size2Char
|
||||
ld hl,T8B46 ; "0 000 000 000"
|
||||
;
|
||||
.skip_full_space:
|
||||
ld de,PRM4 ; ªã¤
|
||||
call ncopy_string ; ᪮¯¨à. áâபã (á ã«¥¬), ¬ ªá.15 ᨬ¢.
|
||||
;
|
||||
;
|
||||
ld de,MAIN_MSG.DIR_2 ; ¨¤¥ªá " %1 file(s) %2 bytes"
|
||||
jp MESSAGE ; ¢ë¢¥á⨠áâபã
|
||||
|
||||
@ -197,7 +246,7 @@ cmd_dir:
|
||||
ld de,MAIN_MSG.DIR_1 ; ¨¤¥ªá "Volume in drive %1..." ;!HARDCODE ®¬¥à áâப¨ MSG0
|
||||
JP MESSAGE ; ¢ë¢¥á⨠áâபã
|
||||
;
|
||||
|
||||
;
|
||||
|
||||
; <20>®¤£®â®¢¨âì áâபã á¯¨áª ä ©«®¢/¯ ¯®ª
|
||||
A88E2: ld bc,8
|
||||
@ -440,6 +489,7 @@ D88DC: dw 0
|
||||
D88DE: dw 0
|
||||
D88E0: dw 0
|
||||
dir_number: dw 0
|
||||
free_space: dword 0
|
||||
;
|
||||
|
||||
T8B2E: db "000000000"
|
||||
@ -461,7 +511,31 @@ read_disk_info:
|
||||
; ” ©«®¢ ï á¨á⥬
|
||||
; ‘¥à¨©ë© ®¬¥à ¤¨áª
|
||||
; Œ¥âª ¤¨áª ¢ BPB
|
||||
|
||||
EX AF,AF'
|
||||
LD A,(.full)
|
||||
OR A
|
||||
JR Z,.no_full_space_option
|
||||
;
|
||||
; (DE*A)*BC
|
||||
;PUSH HL ; ®¡é¥¥ ª®«-¢® ª« áâ¥à®¢
|
||||
;PUSH DE ; ᢮¡®¤ëå ª« áâ¥à®¢
|
||||
PUSH BC ; à §¬¥à ᥪâ®à ¢ ¡ ©â å
|
||||
EX AF,AF'
|
||||
LD C,A ; A - à §¬¥à ª« áâ¥à ¢ ᥪâ®à å
|
||||
CALL Mult16X8
|
||||
; A:HL = DE*A
|
||||
;
|
||||
EX DE,HL
|
||||
LD H,0
|
||||
LD L,A
|
||||
POP BC
|
||||
CALL Mult32
|
||||
LD (free_space+2),HL
|
||||
EX DE,HL
|
||||
LD (free_space),HL
|
||||
;
|
||||
;
|
||||
.no_full_space_option:
|
||||
; parse
|
||||
LD D,0
|
||||
LD HL,work_buffer
|
||||
@ -602,11 +676,13 @@ volume_string_no:
|
||||
db "has no label",0
|
||||
volume_string_yes:
|
||||
db "has label",0
|
||||
|
||||
has_not_full_info:
|
||||
db ' (?)',0
|
||||
;
|
||||
cmd_dir_options:
|
||||
; [ ] ¯ à ¬¥âà /F - ¢ë¢®¤ ª®«¨ç¥á⢠᢮¡®¤®£® ¬¥áâ ¤¨áª¥ (â®à¬®§¨â, ¯®í⮬㠯 à ¬¥â஬)
|
||||
DB 'f' : DW cmd_dir_freeSpace
|
||||
;DB 'p' : DW cmd_dir_pause
|
||||
.Size EQU ($-cmd_dir_options)/3
|
||||
.paramLength equ 3
|
||||
;
|
||||
@ -635,4 +711,105 @@ cmd_dir_freeSpace:
|
||||
POP BC
|
||||
POP DE
|
||||
jp cmd_dir.parse
|
||||
;
|
||||
;
|
||||
; cmd_dir_pause:
|
||||
; xor a
|
||||
; ld (cmd_dir.key_p),a
|
||||
; jp cmd_dir.parse
|
||||
///////////////////////////////////////////////////////////////////////////////////////
|
||||
Size2Char:
|
||||
call A8A8F ; ¤¥áïâ¨çë© 32-å à §àï¤ë© ¢ë¢®¤
|
||||
ld hl,T8B37 ; "0"
|
||||
ld a,(hl)
|
||||
cp " "
|
||||
jr nz,.not_zero
|
||||
ld a,"0"
|
||||
ld (hl),a
|
||||
.not_zero:
|
||||
ld de,T8B46 ; "0 000 000 000"
|
||||
ld hl,T8B2E ; "0000000000"
|
||||
ld a,(hl)
|
||||
ldi
|
||||
cp " "
|
||||
jr z,1F
|
||||
ld a,"," ; à §¤. à §à冷¢
|
||||
1: ld (de),a
|
||||
inc de
|
||||
ldi
|
||||
ldi
|
||||
ld a,(hl)
|
||||
ldi
|
||||
cp " "
|
||||
jr z,1F
|
||||
ld a,"," ; à §¤. à §à冷¢
|
||||
1: ld (de),a
|
||||
inc de
|
||||
ldi
|
||||
ldi
|
||||
ld a,(hl)
|
||||
ldi
|
||||
cp " "
|
||||
jr z,1F
|
||||
ld a,"," ; à §¤. à §à冷¢
|
||||
1: ld (de),a
|
||||
inc de
|
||||
ldi
|
||||
ldi
|
||||
ldi
|
||||
ret
|
||||
///////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////
|
||||
;----------------------------------------------------------------------;
|
||||
;<3B>à®æ¥¤ãà 㬮¦¥¨ï (16*8bit)
|
||||
;<3B> ¢å®¤: DE*C
|
||||
;<3B> ¢ë室:A+HL-१ã«ìâ â
|
||||
Mult16X8:
|
||||
SUB A
|
||||
LD L,A
|
||||
LD H,A
|
||||
CP C
|
||||
RET Z
|
||||
OR D
|
||||
OR E
|
||||
RET Z
|
||||
LD A,C
|
||||
LD C,#00
|
||||
LD B,#08
|
||||
Mlt16x8:
|
||||
ADD HL,HL
|
||||
RLA
|
||||
JR NC,1F
|
||||
ADD HL,DE
|
||||
ADC A,C
|
||||
1: DJNZ Mlt16x8
|
||||
RET
|
||||
;----------------------------------------------------------------------;
|
||||
;----------------------------------------------------------------------;
|
||||
;<3B>à®æ¥¤ãà 㬮¦¥¨ï (32bit)
|
||||
;<3B> ¢å®¤: HL+DE*BC
|
||||
;<3B> ¢ë室:HL+DE-१ã«ìâ â
|
||||
Mult32:
|
||||
PUSH IX
|
||||
LD IX,#0000
|
||||
LD A,#20
|
||||
EX DE,HL
|
||||
mul32b:
|
||||
ADD IX,IX
|
||||
ADC HL,HL
|
||||
RL E
|
||||
RL D
|
||||
JR NC,noadd1
|
||||
ADD IX,BC
|
||||
JR NC,noadd1
|
||||
INC HL
|
||||
noadd1:
|
||||
DEC A
|
||||
JR NZ,mul32b
|
||||
LD E,LX
|
||||
LD D,HX
|
||||
POP IX
|
||||
RET
|
||||
;----------------------------------------------------------------------;
|
||||
///////////////////////////////////////////////////////////////////////////////////////
|
||||
@ -6,6 +6,9 @@
|
||||
cmd_pause:
|
||||
ld de,MAIN_MSG.PAUSE ; ¨¤¥ªá "Press any key to continue ..."
|
||||
call MESSAGE ; ¢ë¢®¤ áâப¨
|
||||
LD A,LF
|
||||
LD C,Dss.PutChar
|
||||
RST ToDSS
|
||||
ld c,Dss.WaitKey ; ¦¤¥¬ ¦ â¨ï ª« ¢¨è¨
|
||||
JP ToDSS
|
||||
;ret
|
||||
|
||||
@ -13,6 +13,7 @@ MAIN_MSG:
|
||||
.DIR_3 EQU 10
|
||||
.HELP EQU 11
|
||||
.CALCULATING EQU 12
|
||||
.CRLF EQU 13
|
||||
|
||||
.TABLE: db 0
|
||||
/* 0 */ db "Volume in drive %1 %4 %5",CR,LF
|
||||
@ -21,21 +22,22 @@ MAIN_MSG:
|
||||
/* 1 */ db "Estex DSS version %1. Shell version %2.",CR,LF,0 ;R13
|
||||
/* 2 */ db "Current date: %1",CR,LF,0
|
||||
/* 3 */ db "Current time: %1",CR,LF,0
|
||||
/* 4 */ db "Press any key to continue . . .",CR,LF,LF,0
|
||||
/* 4 */ db "Press any key to continue . . .",CR,0
|
||||
/* 5 */ db "Invalid parametr",CR,LF,0
|
||||
/* 6 */ db "Echo is %1",CR,LF,0
|
||||
/* 7 */ db "on",0
|
||||
/* 8 */ db "off",0
|
||||
/* 9 */ db " %1 File(s) %2 bytes",CR,LF
|
||||
db " %3 Dir(s)",CR,LF,LF,0
|
||||
; db " %3 Dir(s) %4 bytes free",CR,LF,LF,0
|
||||
/* 10 */ db "%1 %2 %3 %4 - %5",CR,LF,0 ;FILENAME EXT SIZE DATE TIME
|
||||
/* 9 */ db " %1 File(s) %2 bytes",CR,LF
|
||||
db " %3 Dir(s) %4 bytes free",CR,LF,LF,0
|
||||
; db " %3 Dir(s)",CR,LF,LF,0
|
||||
/* 10 */ db "%1 %2 %3 %4 - %5",CR,LF,0 ;FILENAME EXT SIZE DATE TIME
|
||||
/* 11 */ DB "COMMANDS:",CR,LF,CR,LF
|
||||
DB "DIR REN | RENAME PATH HELP ",CR,LF
|
||||
DB "CD | CHDIR DEL | ERASE SET VER | VERSION ",CR,LF
|
||||
DB "MD | MKDIR TIME ECHO EXIT ",CR,LF
|
||||
DB "RD | RMDIR DATE CLS REBOOT ",CR,LF,LF,0
|
||||
/* 12 */ DB "Calculating free space...",CR,0
|
||||
/* 13 */ DB CR,LF,0
|
||||
;R11
|
||||
DB 0
|
||||
DZ "Unknown command"
|
||||
|
||||
@ -1 +1 @@
|
||||
175
|
||||
201
|
||||
Loading…
Reference in New Issue
Block a user