mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 01:11:48 +03:00
CORE: -bug in LOADDIR for fat32
SHELL: small optimize
This commit is contained in:
parent
f135083519
commit
cc435bef7d
@ -581,7 +581,7 @@ LEAVE: LD A,B
|
||||
; ¢å®¤: ¥â
|
||||
; ¢ë室: A - ª®¤ § ¢¥à襨ï
|
||||
;/////////////////////////////////////////////////////////////////////
|
||||
WAIT: LD A,(ErrorLevel)
|
||||
GET_ERR: LD A,(ErrorLevel)
|
||||
AND A
|
||||
RET
|
||||
;/////////////////////////////////////////////////////////////////////
|
||||
|
||||
@ -48,7 +48,7 @@ F_FIRST:
|
||||
LD HL,HANDBUF+12 ;!HARDCODE
|
||||
LD BC,HANDBUF.SIZE-12 ;????? ¬¥âªã ¢¬¥áâ® ç¨á« ?
|
||||
LDIR
|
||||
LD A,(HANDBUF+11)
|
||||
LD A,(HANDBUF + FAT_DIRECTORY_RECORD.ATTRIBUT)
|
||||
LD (DE),A
|
||||
INC DE
|
||||
LD HL,HANDBUF
|
||||
@ -58,16 +58,18 @@ F_FIRST:
|
||||
JR NZ,.FIND_M2
|
||||
LD BC,11 ;!HARDCODE
|
||||
LDIR
|
||||
LD A,F_NEXT.NO_NEXT.NO
|
||||
.exit: LD A,F_NEXT.NO_NEXT.NO
|
||||
LD (F_NEXT.NO_NEXT),A
|
||||
XOR A
|
||||
RET
|
||||
.FIND_M2:
|
||||
;!TODO LFN
|
||||
;CP 2
|
||||
;CALL NC,GetName_LFN
|
||||
;CALL C,GetName
|
||||
;
|
||||
CALL GetName
|
||||
LD A,F_NEXT.NO_NEXT.NO
|
||||
LD (F_NEXT.NO_NEXT),A
|
||||
XOR A
|
||||
RET
|
||||
JR .exit
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
;
|
||||
|
||||
@ -76,7 +76,7 @@ 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 C,11 ;!HARDCODE _sBOOT_SECTOR_PARAMS.BPB_LABEL
|
||||
CALL .mCOPY_LOOP
|
||||
|
||||
@ -52,6 +52,7 @@
|
||||
; DJNZ .GETN6
|
||||
; RET
|
||||
;---------------;---------------;---------------
|
||||
;!TODO LFN
|
||||
GetName: LD BC,#08FF ;!HARDCODE ¤«¨ ¨¬¥¨ + áçñâ稪
|
||||
LD A,' '
|
||||
.loop: CP (HL)
|
||||
|
||||
@ -317,7 +317,7 @@ ADRST10: ;DS 512 ;,0
|
||||
DB low CURRDIR_FN,low NOPS, low NOPS, low SYSTIME, low SETTIME, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS ; 3 1E..27
|
||||
DB low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low WAITKEY, low SCANKEY ; 4 28..31
|
||||
DB low ECHOKEY, low CTRLKEY, low NOPS, low K_CLEAR, low K_SETUP, low TESTKEY, low SETWIN, low SETWIN1, low SETWIN2, low SETWIN3 ; 5 32..3B
|
||||
DB low FREEMEM, low GETMEM, low RETMEM, low SETMEM, low EXEC, low LEAVE, low WAIT, low GSWITCH, low DOSNAME, low EX_PATH ; 6 3C..45
|
||||
DB low FREEMEM, low GETMEM, low RETMEM, low SETMEM, low EXEC, low LEAVE, low GET_ERR, low GSWITCH, low DOSNAME, low EX_PATH ; 6 3C..45
|
||||
DB low ENVIRON, low APPINFO, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS, low NOPS ; 7 46..4F
|
||||
DB low SETVMOD, low GETVMOD, low LOCATE, low CURSOR, low SELPAGE, low SCROLL, low CLEAR, low RDCHAR, low WRCHAR, low WINCOPY ; 8 50..59
|
||||
DB low WINREST, low PUTCHAR, low PCHARS, low LIB_SUB, low NOPS, low PRINT ; 9 5A..5F
|
||||
@ -344,7 +344,7 @@ ADRST10: ;DS 512 ;,0
|
||||
DB high CURRDIR_FN,high NOPS, high NOPS, high SYSTIME,high SETTIME,high NOPS, high NOPS, high NOPS, high NOPS, high NOPS
|
||||
DB high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high WAITKEY, high SCANKEY
|
||||
DB high ECHOKEY, high CTRLKEY, high NOPS, high K_CLEAR,high K_SETUP,high TESTKEY,high SETWIN, high SETWIN1,high SETWIN2, high SETWIN3
|
||||
DB high FREEMEM, high GETMEM, high RETMEM, high SETMEM, high EXEC, high LEAVE, high WAIT, high GSWITCH,high DOSNAME, high EX_PATH
|
||||
DB high FREEMEM, high GETMEM, high RETMEM, high SETMEM, high EXEC, high LEAVE, high GET_ERR,high GSWITCH,high DOSNAME, high EX_PATH
|
||||
DB high ENVIRON, high APPINFO, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS, high NOPS
|
||||
DB high SETVMOD, high GETVMOD, high LOCATE, high CURSOR, high SELPAGE,high SCROLL, high CLEAR, high RDCHAR, high WRCHAR, high WINCOPY
|
||||
DB high WINREST, high PUTCHAR, high PCHARS, high LIB_SUB,high NOPS, high PRINT
|
||||
|
||||
@ -519,6 +519,8 @@ LOADDIR: ;!TODO optimize
|
||||
LD (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_L),HL
|
||||
LD HL,(CORE_BUFFERS.FatBuffer.RootDirStartCluster_H)
|
||||
LD (CORE_BUFFERS.FM_BUF.FS_REC.FIRST_CLUSTER_H),HL
|
||||
LD HL,#4000 ;!HARDCODE à §¬¥à ¤¨à¥ªâ®à¨¨
|
||||
LD (CORE_BUFFERS.FM_BUF.FS_REC.F_SIZE),HL
|
||||
;
|
||||
.read_dir: LD HL,DIRPAGE.buffer ; ªã¤
|
||||
LD DE,#4000 ; ᪮«ìª®
|
||||
|
||||
@ -647,7 +647,7 @@ WRITE_FAT_TABLE:
|
||||
;FAT_BLOCK * Sectors_in_Block = SECTOR_OF_FAT
|
||||
CALL GET_SECTOR_OF_FAT
|
||||
; B=0, C:HL - ᬥ饨¥ ¢ ᥪâ®à å ¢ãâਠ⠡«¨æë FAT ç «® ¡«®ª
|
||||
LD (.save_offset_HL),HL
|
||||
LD (.pop_offset_HL),HL
|
||||
LD DE,FAT_CACHE.Sectors_32
|
||||
LD A,(CORE_BUFFERS.FatBuffer.FAT_TYPE)
|
||||
CP FAT_TYPE.x32
|
||||
|
||||
@ -554,11 +554,11 @@ KEYSCAN: LD IX,KEYFLAG
|
||||
; SBC HL,DE
|
||||
; CALL Z,RST_X
|
||||
;
|
||||
; [x] ®¯ á ï åà¥ì
|
||||
LD HL,BREAK_PROCESS_CODE
|
||||
AND A
|
||||
SBC HL,DE
|
||||
CALL Z,Break_Process
|
||||
;; [ ] ®¯ á ï åà¥ì
|
||||
;LD HL,BREAK_PROCESS_CODE
|
||||
;AND A
|
||||
;SBC HL,DE
|
||||
;CALL Z,Break_Process
|
||||
;
|
||||
LD BC,(KEYFLAG)
|
||||
CALL PUTSYM
|
||||
@ -1154,12 +1154,13 @@ KBD_Receiver_Overrun:
|
||||
LD (KEY_FLG),A
|
||||
;LD (UNCODE),A
|
||||
RET
|
||||
; [x] ®¯ á ï åà¥ì
|
||||
Break_Process: LD A,(TASK)
|
||||
XOR 2 ; 2 - task of primary shell
|
||||
RET Z
|
||||
LD B,DSS_Error.sys.USER_ABORT
|
||||
JP LEAVE
|
||||
;
|
||||
; [ ] ®¯ á ï åà¥ì
|
||||
; Break_Process: LD A,(TASK)
|
||||
; XOR 2 ; 2 - task of primary shell
|
||||
; RET Z
|
||||
; LD B,DSS_Error.sys.USER_ABORT
|
||||
; JP LEAVE
|
||||
|
||||
; `
|
||||
; 0
|
||||
|
||||
@ -52,6 +52,7 @@
|
||||
.KnownOffset_L WORD #0000 ;+ #32 +50 Œ« ¤è¥¥ á«®¢® ᬥ饨ï (¢ ª« áâ¥à å) ®â®á¨â¥«ì® ç « ä ©« ¤«ï á®åà ¥®£® ®¬¥à ª« áâ¥à .
|
||||
.KnownOffset_H WORD #0000 ;+ #34 +52 ‘â à襥 á«®¢® ᬥ饨ï (¢ ª« áâ¥à å) ®â®á¨â¥«ì® ç « ä ©« ¤«ï á®åà ¥®£® ®¬¥à ª« áâ¥à .
|
||||
ENDS
|
||||
|
||||
;ACCESS MODE: A=0 ç⥨¥/§ ¯¨áì
|
||||
; A=1 ç⥨¥
|
||||
; A=2 § ¯¨áì
|
||||
|
||||
@ -1 +1 @@
|
||||
983
|
||||
984
|
||||
@ -289,13 +289,7 @@ PRNSIZE: ld a,(ix+32)
|
||||
ld h,(ix+FAT_DIRECTORY_RECORD.F_SIZE+3)
|
||||
exx
|
||||
push ix
|
||||
call MAKE_LN_32 ; ¤¥áïâ¨çë© 32-å à §àï¤ë© ¢ë¢®¤
|
||||
ld hl,L32BIT_.end
|
||||
ld a,(hl)
|
||||
cp " "
|
||||
jr nz,.not_zero
|
||||
ld a,"0"
|
||||
ld (hl),a
|
||||
call MAKE_LN ; ¤¥áïâ¨çë© 32-å à §àï¤ë© ¢ë¢®¤
|
||||
.not_zero: ld de,SIZE_BUFFER.low ; "0 000 000 000"
|
||||
ld hl,L32BIT_ ; "0000000000"
|
||||
ldi
|
||||
@ -403,33 +397,12 @@ toNumber: ld c,#2F
|
||||
ld (hl),a
|
||||
inc hl
|
||||
ret
|
||||
;
|
||||
|
||||
;!TODO ¯¥à¥â é¨âì ¢ procedures/math.asm
|
||||
; „¥áïâ¨çë© 32-å à §àï¤ë© ¢ë¢®¤
|
||||
; HL':HL - ç¨á«® ¤«ï ¯¥à¥¢®¤
|
||||
; !FIXIT ¬®¦® ®¡ê¥¤¥¨âì á PDIGIT
|
||||
MAKE_LN_32: CALL MAKE_LN
|
||||
ld hl,L32BIT_ ; "0000000000"
|
||||
JR MAKE_LN_Clean
|
||||
; ¤¥áïâ¨çë© 40- à §àï¤ë© ¢ë¢®¤
|
||||
MAKE_LN_40: CALL MAKE_LN.skip_1
|
||||
ld hl,L40BIT_ ; "0000000000"
|
||||
;
|
||||
MAKE_LN_Clean: ld de,#2030 ; " ","0"
|
||||
.KILLZ: ld a,(hl)
|
||||
cp e
|
||||
jr nz,.KILLZ2
|
||||
ld (hl),d
|
||||
inc hl
|
||||
jr .KILLZ
|
||||
;
|
||||
.KILLZ2: ld hl,L32BIT_.end ; "0"
|
||||
ld a,(hl)
|
||||
cp d
|
||||
ret nz
|
||||
ld (hl),e
|
||||
ret
|
||||
; ¤¥áïâ¨çë© 32-å à §àï¤ë© ¢ë¢®¤
|
||||
MAKE_LN: ld ix,L32BIT_ ; "0000000000"
|
||||
exx
|
||||
ld de,#3B9A
|
||||
@ -491,7 +464,8 @@ MAKE_LN: ld ix,L32BIT_ ; "0000000000"
|
||||
inc ix
|
||||
ret
|
||||
;
|
||||
GET_DIG: xor a
|
||||
GET_DIG: ld a,"0"-1
|
||||
AND A
|
||||
.loop: inc a
|
||||
sbc hl,de
|
||||
exx
|
||||
@ -503,9 +477,16 @@ GET_DIG: xor a
|
||||
exx
|
||||
adc hl,de
|
||||
exx
|
||||
dec a
|
||||
add a,"0"
|
||||
ld (ix+0),a
|
||||
;dec a
|
||||
cp "0"
|
||||
jr nz,.putChar
|
||||
ld b,a
|
||||
ld a,(ix-1)
|
||||
cp " "
|
||||
jr z,.putChar
|
||||
ld a,b
|
||||
;
|
||||
.putChar: ld (ix+0),a
|
||||
inc ix
|
||||
ret
|
||||
;
|
||||
@ -524,16 +505,18 @@ full_space_medium: WORD 0
|
||||
full_space_high: BYTE 0
|
||||
;
|
||||
|
||||
L40BIT_ db "00"
|
||||
L32BIT_: db "000000000"
|
||||
; !TODO ¬®¦¥â ®¡®©â¨áì ®¤¨¬ ¡ãä¥à®¬ 00 ¢¬¥áâ® ¤¢ãå?
|
||||
L40BIT: db " " ; ¬ àª¥à ¤«ï ix-1
|
||||
.Str: db " " ; 00
|
||||
L32BIT_: db " " ; 000000000
|
||||
.end: db "0"
|
||||
;
|
||||
DIRIDD: db "<DIR> ",0
|
||||
;
|
||||
SIZE_BUFFER:
|
||||
.high db "00"
|
||||
.low: db "0 000 000 000",0,0
|
||||
.bytes equ SIZE_BUFFER - $
|
||||
SIZE_BUFFER: db " " ; ¬ àª¥à ¤«ï ix-1
|
||||
.high db " " ; "00"
|
||||
.low: db " ",0,0 ; "0 000 000 000",0,0
|
||||
.bytes equ SIZE_BUFFER - $
|
||||
;
|
||||
|
||||
; [x] ⥯¥àì ¥ «¥§¥â ¯àï¬ãî, ¤¥« ¥â ç¥à¥§ ®¢ë© ¯ à ¬¥âà äãªæ¨¨ DskInfo
|
||||
@ -562,12 +545,7 @@ read_disk_info: OR #80
|
||||
AND E
|
||||
EXX
|
||||
INC A
|
||||
;JR Z,.no_full_space_option
|
||||
LD (.full),A
|
||||
; ;
|
||||
; LD A,(.full)
|
||||
; OR A
|
||||
; JR Z,.no_full_space_option
|
||||
EX AF,AF'
|
||||
;
|
||||
; --> (HL':HL)*BC*A, (DE':DE)*BC*A = B':HL'HL, C':DE':DE
|
||||
@ -618,7 +596,6 @@ read_disk_info: OR #80
|
||||
RR C
|
||||
JP NC,.loop2
|
||||
; <-- B':HL'HL, C':DE':DE
|
||||
;!TODO ¢ë¢®¤¨âì ¯®«ë© à §¬¥à ¤¨áª
|
||||
EXX
|
||||
LD A,C
|
||||
LD (free_space_high),A
|
||||
@ -674,17 +651,16 @@ read_disk_info: OR #80
|
||||
ld c,Dss.ChDir
|
||||
RST ToDSS
|
||||
; ¯®¨áª ¬¥âª¨
|
||||
ld hl,mask_fname ; "*.*" ¨¬ï ¬¥âª¨
|
||||
ld de,work_buffer1 ; ªã¤
|
||||
ld a,FAT_ATTR.VOLUME_ID ; âਡãâ ¬¥âª¨ ⮬
|
||||
ld bc,Dss.F_First.FATname ; f_first, ä®à¬ â 11
|
||||
ld hl,mask_fname ; "*.*" ¨¬ï ¬¥âª¨
|
||||
ld de,work_buffer1 ; ªã¤
|
||||
ld a,FAT_ATTR.VOLUME_ID ; âਡãâ ¬¥âª¨ ⮬
|
||||
ld bc,Dss.F_First.FATname ; f_first, ä®à¬ â 11
|
||||
RST ToDSS
|
||||
push af
|
||||
call restore_path ; ¢®ááâ. ⥪. ¯ãâì
|
||||
call restore_path ; ¢®ááâ. ⥪. ¯ãâì
|
||||
pop af
|
||||
;jr c,no_volume_label ; ¬¥âª¨ ¥â ¤¨à४â®à¨¨
|
||||
ld hl,work_buffer1+33 ; ç «® ¬¥âª¨ ¢ ¡ãä¥à¥ f_first
|
||||
jr nc,volume_label ; ¬¥âª ¢ ª®à¥¢®¬ ª â «®£¥
|
||||
ld hl,work_buffer1 + BUFFER_FIND.REC_Name ; ç «® ¬¥âª¨ ¢ ¡ãä¥à¥ f_first
|
||||
jr nc,volume_label ; ¬¥âª ¢ ª®à¥¢®¬ ª â «®£¥
|
||||
; ¡¥àñ¬ ¬¥âªã ¨§ BPB
|
||||
; âãâ ¢ HL ¤«¨ ¯®«ï "Œ¥âª ¤¨áª "
|
||||
POP hl
|
||||
@ -710,12 +686,12 @@ read_disk_info: OR #80
|
||||
LD (PRM5),A
|
||||
ret
|
||||
.good_label: POP HL
|
||||
PUSH HL ; «¨è¥¥
|
||||
PUSH HL ; ⮫ª ¥¬ «¨è¥¥
|
||||
; ¥áâì ¬¥âª
|
||||
volume_label: pop DE ; «¨è¥¥
|
||||
volume_label: POP DE ; ᨬ ¥¬ «¨è¥¥
|
||||
; %5
|
||||
ld de,PRM5
|
||||
ld bc,11 ;!HARDCODE ¤«¨ ¬¥âª¨
|
||||
ld bc,11 ;!HARDCODE ¤«¨ ¬¥âª¨
|
||||
ldir
|
||||
xor a
|
||||
ld (de),a
|
||||
@ -758,11 +734,11 @@ volume_string_yes:
|
||||
; has_not_full_info:
|
||||
; db ' (?)',0
|
||||
;
|
||||
cmd_dir_options:; [ ] ¯ à ¬¥âà /F - ¢ë¢®¤ ª®«¨ç¥á⢠᢮¡®¤®£® ¬¥áâ ¤¨áª¥ (â®à¬®§¨â, ¯®í⮬㠯 à ¬¥â஬)
|
||||
cmd_dir_options:; [x] ¯ à ¬¥âà /F - ¢ë¢®¤ ª®«¨ç¥á⢠᢮¡®¤®£® ¬¥áâ ¤¨áª¥ (â®à¬®§¨â, ¯®í⮬㠯 à ¬¥â஬)
|
||||
DB 'f' : DW cmd_dir_freeSpace
|
||||
DB 'p' : DW cmd_dir_pause
|
||||
.Size EQU ($-cmd_dir_options)/3
|
||||
.paramLength equ 3
|
||||
.paramLength EQU 3
|
||||
;
|
||||
|
||||
;
|
||||
@ -776,7 +752,7 @@ cmd_dir_pause: ld a,#ff
|
||||
ld (cmd_dir.key_p),a
|
||||
jp cmd_dir.parse
|
||||
///////////////////////////////////////////////////////////////////////////////////////
|
||||
GET_BIG_DIG: ld b,0
|
||||
GET_BIG_DIG: ld b,"0"-1
|
||||
and a
|
||||
.loop: inc b
|
||||
sbc hl,de
|
||||
@ -794,15 +770,21 @@ GET_BIG_DIG: ld b,0
|
||||
adc a,c
|
||||
;
|
||||
ex af,af'
|
||||
dec b
|
||||
;dec b
|
||||
ld a,b
|
||||
add a,"0"
|
||||
ld (ix+0),a
|
||||
cp "0"
|
||||
jr nz,.putChar
|
||||
ld a,(ix-1)
|
||||
cp " "
|
||||
jr z,.putChar
|
||||
ld a,b
|
||||
;
|
||||
.putChar: ld (ix+0),a
|
||||
ex af,af'
|
||||
inc ix
|
||||
ret
|
||||
; stop
|
||||
PRINT_5BYTES: ld ix,L40BIT_ ; "00"
|
||||
PRINT_5BYTES: ld ix,L40BIT.Str ; "00"
|
||||
ld c,#17
|
||||
exx
|
||||
ld de,#4876
|
||||
@ -828,16 +810,9 @@ PRINT_5BYTES: ld ix,L40BIT_ ; "00"
|
||||
CALL GET_BIG_DIG
|
||||
;
|
||||
; DE':DE = 100,000,000
|
||||
CALL MAKE_LN_40
|
||||
ld hl,L32BIT_.end ; "0"
|
||||
ld a,(hl)
|
||||
cp " "
|
||||
jr nz,.not_zero
|
||||
ld a,"0"
|
||||
ld (hl),a
|
||||
.not_zero: ;
|
||||
CALL MAKE_LN.skip_1
|
||||
.exit_clean: ld de,SIZE_BUFFER.high ; "0 000 000 000"
|
||||
ld hl,L40BIT_ ; "0000000000"
|
||||
ld hl,L40BIT.Str ; "0000000000"
|
||||
ldi
|
||||
ldi
|
||||
ld a,(hl)
|
||||
|
||||
@ -1 +1 @@
|
||||
357
|
||||
365
|
||||
@ -1 +1 @@
|
||||
Subproject commit 62170ee7bc7dabe6fd55b94e89826ca510a60097
|
||||
Subproject commit 5797b0c5804320f86d263997f624cb8b6bb69385
|
||||
Loading…
Reference in New Issue
Block a user