mirror of
https://github.com/Tolik-Trek/File-Manager.git
synced 2026-06-15 01:11:36 +03:00
208 lines
3.9 KiB
NASM
Executable File
208 lines
3.9 KiB
NASM
Executable File
;-------------------------------------------------
|
||
; ˆ¨æ. ᯨ᮪ ⨯®¢ ¤¨áª®¢ á¨á⥬ë
|
||
; (¯®á«¥¤. ç¨â ¥â BPB ª ¦¤®£® ¤¨áª )
|
||
;-------------------------------------------------
|
||
init_list_types_drives:
|
||
ld a,(disk) ; ¤¨áª ªâ. ¯ ¥«¨
|
||
ld c,1 ; ãáâ. ¤¨áª
|
||
rst ToDSS
|
||
jr nc,init_list_types_drv1
|
||
; ¨á¯. ®¬¥à boot-¤¨áª
|
||
ld bc,0009h
|
||
rst ToDSS
|
||
ld (disk),a
|
||
; ã§ âì ®¬¥à ¯®á«. ¤¨áª ¢ á¨á⥬¥
|
||
ld c,1 ; ãáâ. ¤¨áª
|
||
rst ToDSS
|
||
init_list_types_drv1:
|
||
ld (lastdrive),a ; ¯®á«¥¤. ¤¨áª ¢ á¨á⥬¥ (0..25)
|
||
cp 1+1
|
||
jr c,init_list_types_done ; ⮫쪮 A,B ¤¨áª¨
|
||
dec a
|
||
ld b,a
|
||
ld c,2 ; ç âì á "C:"
|
||
ld hl,scan_code_letters+5 ; â ¡«¨æ ¤¨áª®¢ á "C:"
|
||
make_dlist_loop:
|
||
push bc
|
||
push hl
|
||
; ¯à®ç¨â âì BPB ¤¨áª
|
||
push bc
|
||
ld a,c ; ®¬¥à ¤¨áª
|
||
ld c,1 ; open device
|
||
rst ToDSS.DRV
|
||
pop bc
|
||
jr c,make_dlist_err
|
||
push bc
|
||
ld a,c
|
||
ld de,work_buffer ; ¡ãä¥à
|
||
ld c,4 ; get BPB
|
||
rst ToDSS.DRV
|
||
pop bc
|
||
jr c,make_dlist_err
|
||
ld a,c ; ®¬¥à ¤¨áª
|
||
ld c,2 ; close device
|
||
rst ToDSS.DRV
|
||
pop hl
|
||
pop bc
|
||
ld a,(work_buffer+21) ; ¡ ©â ä®à¬ â ®á¨â¥«ï
|
||
ld (hl),a
|
||
inc hl
|
||
inc hl ; á«¥¤. ï祩ª ⨯ ¤¨áª
|
||
inc c ; ++®¬¥à ¤¨áª
|
||
djnz make_dlist_loop
|
||
init_list_types_done:
|
||
; â¥áâ ¤®áâ㯮áâì ¤¨áª ã ¯ áá. ¯ ¥«¨
|
||
ld hl,disk1
|
||
ld a,(lastdrive)
|
||
dec a
|
||
cp (hl)
|
||
ret nc
|
||
ld (hl),a
|
||
ret
|
||
;
|
||
make_dlist_err:
|
||
pop hl
|
||
pop bc
|
||
jr init_list_types_done
|
||
|
||
|
||
|
||
|
||
|
||
;----------------------------------------------------------------------
|
||
; ‘âàãªâãà ᯨ᪠¬¥î ¢ë¡®à ¤¨áª®¢
|
||
; <®¬¥à ¯ãªâ >, <¨¬ï ¯ãªâ ,0>, <᪥-ª®¤ ¡ãª¢ë>, <®¬¥à ª®â¥ªáâ >
|
||
;----------------------------------------------------------------------
|
||
; db 0,"&A: removable",0
|
||
; db 1Dh ; ᪥-ª®¤
|
||
; db CTnodef ; ª®â¥ªáâ (¥ ¨á¯.)
|
||
; ;
|
||
; db 1,"&B: removable",0
|
||
; db 2Eh
|
||
; db CTnodef
|
||
; ;
|
||
; db 2,"&C: fixed",0
|
||
; db 2Ch ; ᪥-ª®¤
|
||
; db CTnodef
|
||
; ;
|
||
; db 3,"&D: CD-ROM",0
|
||
; db 1Fh
|
||
; db CTnodef
|
||
; ;
|
||
; db 4,"&E: RAM-disk",0
|
||
; db 12h
|
||
; db CTnodef
|
||
; ;
|
||
; db -1 ; ª®¥æ ®¯¨á ⥫ï
|
||
|
||
|
||
;-------------------------------------------------
|
||
; ‘®§¤ âì ¢ ¡ãä¥à¥ áâàãªâãàã ᯨ᪠¤¨áª®¢
|
||
;-------------------------------------------------
|
||
make_struct_drives:
|
||
exx
|
||
ld hl,scan_code_letters ; ᯨ᮪ ᪥-ª®¤®¢ ¡ãª¢
|
||
exx
|
||
ld a,(lastdrive)
|
||
ld b,a
|
||
ld c,0 ; A=0
|
||
ld hl,work_buffer
|
||
make_drives_loop:
|
||
ld (hl),c ; ®¬¥à ¤¨áª (ª®¬ ¤ë)
|
||
inc hl
|
||
ld (hl),"&"
|
||
inc hl
|
||
ld a,"A"
|
||
add a,c
|
||
ld (hl),a
|
||
inc hl
|
||
ld (hl),":"
|
||
inc hl
|
||
ld (hl)," "
|
||
inc hl
|
||
exx
|
||
ld a,(hl) ; ᪥-ª®¤
|
||
ex af,af'
|
||
inc hl
|
||
ld a,(hl) ; ⨯ ¤¨áª
|
||
inc hl
|
||
exx
|
||
ld de,fix_drive ; ¢¨â
|
||
cp 0F8h
|
||
jr z,make_drives_type
|
||
ld de,ram_drive ; ram-¤¨áª
|
||
cp 0FAh
|
||
jr z,make_drives_type
|
||
ld de,rem_drive ; ¤¨áª¥â
|
||
cp 0F0h ; 1.44Mb
|
||
jr z,make_drives__
|
||
cp 0F9h ; 720kB
|
||
jr z,make_drives__
|
||
ld de,cd_drive ; cd-rom
|
||
jr make_drives_type
|
||
make_drives__:
|
||
ld a,c
|
||
cp 2 ; ¬¥ìè¥ "C:" ?
|
||
jr c,make_drives_type
|
||
ld de,ram_drive ; ram-¤¨áª
|
||
make_drives_type:
|
||
; ᪮¯¨à. ⨯ ¤¨áª
|
||
ld a,(de)
|
||
ld (hl),a
|
||
inc hl
|
||
inc de
|
||
or a
|
||
jr nz,$-5
|
||
ex af,af'
|
||
ld (hl),a ; ᪥-ª®¤
|
||
inc hl
|
||
inc hl ; ¯à®©â¨ ª®â¥ªáâ
|
||
inc c ; ++®¬¥à ¤¨áª
|
||
djnz make_drives_loop
|
||
ld (hl),-1 ; ª®¥æ ᯨáª
|
||
; áâநâì Y ¯®«®¦. ¬¥î ®â ç¨á« ¤¨áª®¢
|
||
ld c,5 ; Y ¯®«®¦. ¬¥î
|
||
ld a,(lastdrive) ; 0..25
|
||
cp 14+1
|
||
jr c,$+9
|
||
dec c
|
||
cp 18+1
|
||
jr c,$+4
|
||
ld c,2
|
||
ld a,c
|
||
ld (table_left_drive+1),a
|
||
ld (table_right_drive+1),a
|
||
ret
|
||
|
||
|
||
|
||
; ’ ¡«¨æ ¡ãª¢ ¤¨áª®¢
|
||
; <᪥-ª®¤>, <¡ ©â ä®à¬ â ¤¨áª >
|
||
scan_code_letters:
|
||
db 1Dh,0F0h ; A
|
||
db 2Eh,0F0h ; B
|
||
db 2Ch,0F8h ; C
|
||
db 1Fh,0F8h ; D
|
||
db 12h,0F8h ; E
|
||
db 20h,0F8h ; F
|
||
db 21h,0F8h ; G
|
||
db 22h,0F8h ; H
|
||
db 17h,0F8h ; I
|
||
db 23h,0F8h ; J
|
||
db 24h,0F8h ; K
|
||
db 25h,0F8h ; L
|
||
db 30h,0F8h ; M
|
||
db 2Fh,0F8h ; N
|
||
db 18h,0F8h ; O
|
||
db 19h,0F8h ; P
|
||
db 10h,0F8h ; Q
|
||
db 13h,0F8h ; R
|
||
db 1Eh,0F8h ; S
|
||
db 14h,0F8h ; T
|
||
db 16h,0F8h ; U
|
||
db 2Dh,0F8h ; V
|
||
db 11h,0F8h ; W
|
||
db 2Bh,0F8h ; X
|
||
db 15h,0F8h ; Y
|
||
db 2Ah,0F8h ; Z
|