mirror of
https://github.com/Tolik-Trek/File-Manager.git
synced 2026-06-15 01:11:36 +03:00
612 lines
13 KiB
NASM
Executable File
612 lines
13 KiB
NASM
Executable File
;/////////////////////////////////////////////////////////////////////
|
||
; ‚뢮¤ ¤ ëå ªâ. ¯ ¥«¨ -> ¢ ¯ áá. ¯ ¥«ì (¢ë§ë¢ ¥âáï ¨§ ä ©«¥à )
|
||
; <âਣ£¥à ï ä¨âç >
|
||
;/////////////////////////////////////////////////////////////////////
|
||
alt_info_panel:
|
||
call test_show_panels ; â¥áâ ०¨¬ ¢ª«. ¯ ¥«¥©
|
||
ret z ; ¢ëª«.
|
||
; â¥áâ «¨ç¨ï qview-ä®à¬ â ªâ. ¯ ¥«¨
|
||
ld a,(format_mode) ; ä®à¬ â ªâ. ¯ ¥«¨
|
||
and form_info
|
||
jr nz,set_norm_actpanel2 ; ¢ë¢¥á⨠®à¬. ªâ¨¢ãî ¯ ¥«ì
|
||
ld hl,info1_ ; âਣ£¥à ¯ áá. ¯ ¥«¨
|
||
ld a,(hl)
|
||
or a
|
||
jr nz,set_norm_noactpanel2 ; ¢ë¢¥á⨠®à¬. ¯ áᨢãî ¯ ¥«ì
|
||
jr set_info_noactpanel ; info-¯ ¥«ì ¢ ¯ áá. ¯ ¥«¨ ( ªâ. ¤ ë¥)
|
||
|
||
|
||
|
||
;--------------------------------------------------
|
||
; ‚뢥á⨠®à¬ «ì®© ªâ. ¯ ¥«ì
|
||
;--------------------------------------------------
|
||
set_norm_actpanel2:
|
||
ld hl,info_ ; âਣ£¥à ªâ. ¯ ¥«¨
|
||
ld (hl),0 ; á¡à. âਣ£¥à
|
||
inc hl
|
||
ld a,(hl) ; ï祩ª form_under_info
|
||
ld (format_mode),a ; ä®à¬ â ªâ. ¯ ¥«¨
|
||
jp A20FC ; ¢ë¢¥á⨠¯ ¥«ì
|
||
|
||
;--------------------------------------------------
|
||
; ‚뢥á⨠®à¬ «ì®© ¯ áá. ¯ ¥«ì
|
||
;--------------------------------------------------
|
||
set_norm_noactpanel2:
|
||
call change_panel
|
||
call set_norm_actpanel2
|
||
jp change_panel
|
||
|
||
|
||
|
||
;----------------------------------------------------
|
||
; ‚뢥á⨠info-¯ ¥«ì ¢ ªâ. ¯ ¥«¨ (¯ áá. ¤ ë¥)
|
||
; (¢ë§ë¢ ¥âáï ¨§ Œ¥î)
|
||
;----------------------------------------------------
|
||
set_info_actpanel:
|
||
; § ¯®«¨âì ¤ 묨 â¨â«-®¯¨á ⥫ì + ãáâ. ¥£® ⨯
|
||
call change_panel
|
||
call get_info_data
|
||
call change_panel
|
||
set_info_actpanel1:
|
||
ld de,format_mode ; ä®à¬ â ªâ. ¯ ¥«¨
|
||
ld a,(de)
|
||
bit 3,a ; info
|
||
ret nz ; ¥ ®âà ¡. ¯®¢â®à®
|
||
bit 4,a ; qview
|
||
jr z,$+5
|
||
ld a,(form_under_qview) ; ä®à¬ â ¯®¤ qview-¯ ¥«ìî
|
||
ld hl,info_ ; âਣ£¥à ªâ. ¯ ¥«¨
|
||
ld (hl),1 ; ãáâ. âਣ£¥à
|
||
inc hl
|
||
ld (hl),a ; form_under_info
|
||
and form_trd ; ãç¥áâì 6-© ¡¨â ᯥª-ä®à¬ â
|
||
or form_info
|
||
ld (de),a ; ãáâ. info-ä®à¬ â
|
||
xor a
|
||
ld (qview_),a ; á¡à. qview-âਣ£¥à
|
||
ld (enter_done3+1),a ; á¡à. ä« £ ®¡®¢«¥¨ï info-¯ ¥«¨
|
||
ret
|
||
|
||
;----------------------------------------------------
|
||
; ‚뢥á⨠qview-¯ ¥«ì ¢ ¯ áá. ¯ ¥«¨ ( ªâ. ¤ ë¥)
|
||
;----------------------------------------------------
|
||
set_info_noactpanel:
|
||
; § ¯®«¨âì ¤ 묨 â¨â«-®¯¨á ⥫ì + ãáâ. ¥£® ⨯
|
||
call get_info_data
|
||
xor a
|
||
ld (D48B1),a ; á¡à. ¨¢¥àá¨î â¨â«
|
||
call change_panel
|
||
call set_info_actpanel1 ; ¢ë¢®¤ ªâ. ¯ ¥«¨
|
||
call draw_half_frame ; ®ç¨áâ¨âì ¯ ¥«ì
|
||
call prn_up_path ; ¢ë¢¥á⨠§ ¯®«. ®¯¨á ⥫ì
|
||
call change_panel
|
||
ld a,true
|
||
ld (D48B1),a ; ãáâ. ¨¢¥àá¨î â¨â«
|
||
ret
|
||
|
||
|
||
|
||
|
||
;-----------------------------------------------------------
|
||
; ‡ ¯®«¨âì â¨â«-®¯¨á â¥«ì ¤ 묨 ¤¨áª ( ªâ. ¤ ë¥)
|
||
;-----------------------------------------------------------
|
||
get_info_data:
|
||
ld hl,win_info_panel ; ®¯¨á ⥫ì "Calculating disk space..."
|
||
call WinSimple ; ®âªàëâì ®ª®
|
||
;
|
||
; áâநâì áâபã ⥪. ¤ âë
|
||
call info_get_date
|
||
;
|
||
; ’¥áâ «¨ç¨¥ ¬/á CMOS
|
||
ld c,0F5h
|
||
rst 08h
|
||
ld hl,cmos_yes ; "Yes"
|
||
jr nc,$+5
|
||
ld hl,cmos_no ; " No"
|
||
ld b,3 ; ¤«¨ áâப¨
|
||
ld ix,info_cmos_string
|
||
call A0E90 ; ᪮¯¨à®¢ âì áâபã
|
||
;
|
||
; ‚¥àá¨ï BIOS
|
||
ld hl,work_buffer ; ¢à¥¬. ¡ãä¥à
|
||
ld c,0EFh ; ¨ä ® ¢¥àᨨ <20>¨®á ¨ ¦¥«¥§
|
||
rst 08h
|
||
push bc
|
||
push de
|
||
xor a
|
||
ld l,d
|
||
ld h,a
|
||
ld ix,info_bios_version ; ¡ãä¥à
|
||
exx
|
||
ld l,a ; áâ. à §àï¤
|
||
ld h,a
|
||
exx
|
||
ld bc,0120h ; á ¢¥¤ãé. ¯à®¡¥«®¬
|
||
ld iy,tmp1__
|
||
res 7,(iy+0)
|
||
call dec2
|
||
pop hl
|
||
ld a,l
|
||
ld (ix+0),"."
|
||
inc ix
|
||
call dec8
|
||
pop hl
|
||
ld h,0
|
||
ld (ix+0),"."
|
||
inc ix
|
||
call dec16
|
||
;
|
||
; Board ID
|
||
ld bc,01EDh
|
||
rst 08h
|
||
ld ix,info_board_id ; ¡ãä¥à
|
||
push de
|
||
push hl
|
||
ld a,b
|
||
call hex8 ; hex
|
||
ld (ix+0),"-"
|
||
inc ix
|
||
ld a,c
|
||
call hex8 ; hex
|
||
ld (ix+0),"-"
|
||
inc ix
|
||
pop hl ; ¬«. à §àï¤
|
||
exx
|
||
ld hl,0 ; áâ. à §àï¤
|
||
exx
|
||
ld bc,0130h ; á ¢¥¤ãé. ã«ï¬¨
|
||
ld iy,tmp1__
|
||
res 7,(iy+0)
|
||
call dec5 ; 16-bit ¤¥áïâ. ¢ë¢®¤ (á ¢¥¤. ã«ï¬¨)
|
||
pop hl
|
||
call hex16 ; hex
|
||
;
|
||
; ’¥ªã騩 ¤¨áª
|
||
ld a,(disk)
|
||
add a,"A"
|
||
ld (info_hdd+14),a ; ï祩ª ¡ãª¢ë ¤¨áª
|
||
ld (info_cdrom+15),a
|
||
ld (info_fdd+16),a
|
||
ld (info_ram+13),a
|
||
; ¯à®ç¨â âì BPB ¤¨áª
|
||
ld a,(disk) ; ®¬¥à ¤¨áª
|
||
ld c,1 ; open device
|
||
rst 18h
|
||
jr c,get_inf_data_err
|
||
ld a,(disk)
|
||
ld de,work_buffer ; ¡ãä¥à
|
||
ld c,4 ; get BPB
|
||
rst 18h
|
||
push af
|
||
ld a,(disk) ; ®¬¥à ¤¨áª
|
||
ld c,2 ; close device
|
||
rst 18h
|
||
pop af
|
||
jr c,get_inf_data_err
|
||
; ¡ ©â ä®à¬ â ®á¨â¥«ï
|
||
ld a,(work_buffer+21)
|
||
ld (media_byte),a
|
||
get_inf_data_err:
|
||
; ‘¥à¨©ë© ®¬¥à «®£. ¤¨áª
|
||
ld ix,info_serial ; xxxx-xxxx
|
||
ld hl,(work_buffer+41) ; áâ.ç áâì
|
||
call hex16
|
||
ld (ix+0),"-"
|
||
inc ix
|
||
ld hl,(work_buffer+39) ; ¬«.ç áâì
|
||
call hex16
|
||
;
|
||
; Œ¥âª ¤¨áª
|
||
ld a,(disk) ; ®¬¥à ¤¨áª
|
||
cp 2 ; ¬¥ìè¥ "C:" ?
|
||
jr nc,get_inf_data1 ; ¬¥âª ¢ BPB
|
||
; floppy, ¬¥âª - § ¯¨áì ä ©«
|
||
ld c,1 ; ãáâ. ¤¨áª
|
||
rst 10h
|
||
ld hl,scan_mask ; "*.*" ¨¬ï ¯®¨áª ¬¥âª¨ ⮬
|
||
ld de,work_buffer+127;255
|
||
ld a,8 ; âਡãâ ¬¥âª¨ ⮬
|
||
ld bc,0019h ; F_FIRST, ä®à¬ â "FilenameExt"
|
||
rst 10h
|
||
jr c,get_inf_data1 ; ¬¥âª¨ ¥â
|
||
ld hl,work_buffer+127+43 ;+255+43 ®âªã¤ (ª®¥æ ¬¥âª¨)
|
||
jr $+5
|
||
get_inf_data1:
|
||
ld hl,work_buffer+53 ; ®âªã¤ (ª®¥æ ¬¥âª¨)
|
||
ld de,info_volume+10 ; ªã¤ (ª®¥æ áâப¨)
|
||
ld ix,info_volume
|
||
call copy_volume ; ᪮¯¨à. ¬¥âªã
|
||
;
|
||
; Ž¡ê¥¬ ¤¨áª
|
||
ld a,(disk) ; ®¬¥à ¤¨áª
|
||
ld c,3 ; ¨ä ® ¤¨áª¥
|
||
rst 10h
|
||
jr nc,get_inf_data_ok
|
||
xor a
|
||
ld l,a
|
||
ld h,a
|
||
ld e,a
|
||
ld d,a
|
||
ld c,a
|
||
ld b,a
|
||
inc a
|
||
get_inf_data_ok:
|
||
; a=à §¬¥à ª« áâ¥à ¢ ᥪâ®à å
|
||
; bc=à §¬¥à ᥪâ®à ¢ ¡ ©â å
|
||
; hl=®¡é¥¥ ª®«-¢® ª« áâ¥à®¢
|
||
; de=᢮¡. ª« áâ¥à®¢
|
||
push de
|
||
push hl
|
||
ld hl,0
|
||
add hl,bc ; ¢ëç¨á«¨âì à §¬¥à ª« áâ¥à
|
||
dec a
|
||
jr nz,$-2
|
||
ex de,hl ; de=à §¬¥à ª« áâ¥à
|
||
pop bc ; ®¡é.ª®«-¢® ª« áâ¥à®¢
|
||
call mul_bcde ; bc*de=hlbc ®¡é¨© ®¡ê¥¬ ¤¨áª
|
||
push hl
|
||
exx
|
||
pop hl ; áâ.à §àï¤
|
||
exx
|
||
ld l,c ; ¬«.à §àï¤
|
||
ld h,b
|
||
push de
|
||
ld ix,info_total_bytes ; 0,000,000,000
|
||
call decimal32
|
||
; ᢮¡®¤®¥ ¬¥áâ®
|
||
pop de ; à §¬¥à ª« áâ¥à
|
||
pop bc ; ᢮¡. ª« áâ¥à®¢
|
||
call mul_bcde ; bc*de=hlbc ᢮¡. ¬¥áâ®
|
||
push hl
|
||
exx
|
||
pop hl ; áâ.à §àï¤
|
||
exx
|
||
ld l,c ; ¬«.à §àï¤
|
||
ld h,b
|
||
ld ix,info_free_bytes ; 0,000,000,000
|
||
call decimal32
|
||
; ‚ᥣ® ¯ ¬ïâ¨
|
||
ld c,3Ch ; ¨ä®à¬ æ¨ï ® ¯ ¬ïâ¨
|
||
rst 10h
|
||
push bc
|
||
ld ix,info_total_memory ; 0,000,000
|
||
call conv_kbytes ; kbytes -> bytes ¨ ¢ë¢®¤ ¢ ¡ãä¥à
|
||
pop hl
|
||
; ‘¢®¡®¤ ï ¯ ¬ïâì
|
||
ld ix,info_free_memory ; 0,000,000
|
||
call conv_kbytes ; kbytes -> bytes ¨ ¢ë¢®¤ ¢ ¡ãä¥à
|
||
;
|
||
; ¢ë¢®¤ áâப¨ ¤¨áª ªâ. ¯ ¥«¨
|
||
db 3Eh ; ld a,..
|
||
media_byte:
|
||
db 0 ; ¡ ©â ä®à¬ â ¨§ BPB
|
||
ld hl,info_hdd ; fixed disk
|
||
cp 0F8h
|
||
jr z,get_inf_data2
|
||
ld hl,info_fdd ; removable disk
|
||
cp 0F0h ; 1.44Mb
|
||
jr z,get_inf_data3
|
||
cp 0F9h ; 720kB
|
||
jr z,get_inf_data3
|
||
ld hl,info_ram ; ram-disk
|
||
cp 0FAh
|
||
jr z,$+5
|
||
ld hl,info_cdrom ; cd-rom
|
||
get_inf_data2:
|
||
ld de,info_type_device ; ªã¤
|
||
ld bc,19 ; ¤«¨ áâப¨
|
||
ldir
|
||
; â¥áâ ᯥª-ä®à¬ â
|
||
ld a,(format_mode)
|
||
and form_trd
|
||
call nz,get_spec_info ; § ¯®«¨âì ᯥª-®¯¨á ⥫ì
|
||
; ®ç¨áâ¨âì ¡ãä¥à ª« ¢ë
|
||
ld a,1
|
||
rst 20h
|
||
; § ªàëâì ®ª® "Calculating disk space..."
|
||
jp CloseWinSimple
|
||
|
||
get_inf_data3:
|
||
ld a,(disk) ; ®¬¥à ¤¨áª
|
||
cp 2 ; ¬¥ìè¥ "C:" ?
|
||
jr c,$+5
|
||
ld hl,info_ram ; ram-¤¨áª
|
||
jr get_inf_data2
|
||
|
||
|
||
|
||
; ‘ª®¯¨à®¢ âì ¢ ¡ãä¥à ¨¬ï ¬¥âª¨ ¤¨áª .
|
||
; ¢å®¤: hl=®âªã¤ (ª®¥æ ¬¥âª¨)
|
||
; de=ªã¤ (ª®¥æ áâப¨ ¬¥âª¨)
|
||
; ix= ç «® áâப¨ ¬¥âª¨
|
||
copy_volume:
|
||
ld bc,11 ; ¤«¨ ¬¥âª¨
|
||
ld a,(hl)
|
||
cp " "+1
|
||
jr nc,$+10
|
||
dec hl
|
||
dec c
|
||
jr nz,$-7
|
||
ld a,11
|
||
jr $+7
|
||
;
|
||
ld a,11
|
||
sub c
|
||
lddr
|
||
ld b,a
|
||
or a ; ¤«¨ ¬¥âª¨ 11 ᨬ¢. ?
|
||
call nz,spaces ; ¤®¯®«¨âì ¢¥¤. ¯à®¡¥«ë
|
||
ret
|
||
|
||
|
||
; <20>¥à¥¢®¤ ç¨á« áâà ¨æ ¢ ¡ ©âë ¨ ¢ë¢®¤ ç¨á« ¢ ¡ãä¥à
|
||
; ¢å®¤: hl=ç¨á«® áâà ¨æ
|
||
; ix=¡ãä¥à
|
||
conv_kbytes:
|
||
add hl,hl ; à §¬¥à ¯ ¬ï⨠¢ kB
|
||
add hl,hl ; x4
|
||
add hl,hl ; x8
|
||
add hl,hl ; x16
|
||
; ¯¥à¥¢®¤¨¬ ¢ ¡ ©âë
|
||
ex de,hl
|
||
ld bc,1024 ; 1 ª¨«®¡ ©â
|
||
call mul_bcde ; bc*de=hlbc ¢á¥£® ¯ ¬ïâ¨
|
||
push hl
|
||
exx
|
||
pop hl ; áâ.à §àï¤
|
||
exx
|
||
ld l,c ; ¬«.à §àï¤
|
||
ld h,b
|
||
ld iy,tmp2__
|
||
res 7,(iy+0)
|
||
jp decimal24
|
||
|
||
|
||
|
||
|
||
;-------------------------------------------------
|
||
; <20> áâநâì ¢ info-®¯¨á ⥫¥ áâபã ⥪. ¤ âë
|
||
;-------------------------------------------------
|
||
info_get_date:
|
||
ld c,21h ; á¨áâ. ¤ â
|
||
rst 10h
|
||
push ix ; £®¤
|
||
push de ; ¤¥ì/¬¥áïæ
|
||
ld ix,info_date_string ; ¡ãä¥à
|
||
ld bc,0120h ; á ¢¥¤ãé. ¯à®¡¥«®¬
|
||
ld iy,tmp1__
|
||
res 7,(iy+0)
|
||
ld l,d ; ¤¥ì
|
||
ld h,0
|
||
call dec2 ; 0..99 ç¨á«®
|
||
pop hl
|
||
ld c,l ; ¬¥áïæ
|
||
ld h,0
|
||
add hl,hl
|
||
ld de,info_array_months-2
|
||
add hl,de
|
||
ld e,(hl)
|
||
inc hl
|
||
ld d,(hl)
|
||
ex de,hl
|
||
ld de,info_date_string+3 ; ¡ãä¥à
|
||
; ᪮¯¨à. ¨¬ï ¬¥áïæ
|
||
info_get_date_loop:
|
||
ld a,(hl)
|
||
ld (de),a
|
||
inc hl
|
||
inc de
|
||
or a
|
||
jr nz,info_get_date_loop
|
||
dec de
|
||
ld a," "
|
||
ld (de),a
|
||
inc de
|
||
push de
|
||
pop ix ; ¡ãä¥à
|
||
pop hl ; £®¤
|
||
push bc
|
||
ld b,0 ; ¥ ¢áâ ¢«ïâì ¢¥¤ãé. ᨬ¢®«
|
||
ld iy,tmp1__
|
||
res 7,(iy+0)
|
||
call dec4 ; 0..9999 ç¨á«®
|
||
ld (ix+0),0 ; ª®¥æ ®¯¨á ⥫ï
|
||
pop bc ; c=¬¥áïæ
|
||
; áâநâì ï祩ª¨ ®¯¨á ⥫ï
|
||
ld a,c
|
||
ld c,7+8 ; ¯®« ï ¤«¨ áâப¨
|
||
ld b,0Ch
|
||
dec a ; a=1
|
||
jr z,info_get_date1
|
||
inc c
|
||
dec a ; a=2
|
||
jr z,info_get_date1
|
||
ld c,5+8
|
||
inc b ; b=0Dh
|
||
dec a ; a=3
|
||
jr z,info_get_date1
|
||
dec a ; a=4
|
||
jr z,info_get_date1
|
||
inc b ; b=0Eh
|
||
ld c,3+8
|
||
dec a ; a=5
|
||
jr z,info_get_date1
|
||
inc c
|
||
dec a ; a=6
|
||
jr z,info_get_date1
|
||
dec a ; a=7
|
||
jr z,info_get_date1
|
||
dec b ; b=0Dh
|
||
ld c,6+8
|
||
dec a ; a=8
|
||
jr z,info_get_date1
|
||
dec b
|
||
dec b ; b=0Bh
|
||
ld c,9+8
|
||
dec a ; a=9
|
||
jr z,info_get_date1
|
||
inc b ; b=0Ch
|
||
ld c,7+8
|
||
dec a ; a=10
|
||
jr z,info_get_date1
|
||
inc c
|
||
info_get_date1:
|
||
ld hl,info_date_string-1
|
||
ld (hl),b ; X ¯®«®¦. áâப¨
|
||
ld hl,info_date
|
||
ld (hl),c ; ¤«¨ áâப¨
|
||
ret
|
||
|
||
|
||
info_array_months:
|
||
dw inf_jan
|
||
dw inf_feb
|
||
dw inf_mar
|
||
dw inf_apr
|
||
dw inf_may
|
||
dw inf_jun
|
||
dw inf_jul
|
||
dw inf_aug
|
||
dw inf_sep
|
||
dw inf_oct
|
||
dw inf_nov
|
||
dw inf_dec
|
||
|
||
inf_jan:db "January",0
|
||
inf_feb:db "February",0
|
||
inf_mar:db "March",0
|
||
inf_apr:db "April",0
|
||
inf_may:db "May",0
|
||
inf_jun:db "June",0
|
||
inf_jul:db "July",0
|
||
inf_aug:db "August",0
|
||
inf_sep:db "September",0
|
||
inf_oct:db "October",0
|
||
inf_nov:db "November",0
|
||
inf_dec:db "December",0
|
||
|
||
|
||
|
||
|
||
;-------------------------------------------------
|
||
; ‡ ¯®«¨âì ᯥª-®¯¨á â¥«ì ¤ 묨 ᯥª-¨¬¨¤¦
|
||
; ¢å®¤: § ¯®«. ¡ãä¥à ¤ 묨 ᯥª-¨¬¨¤¦
|
||
;-------------------------------------------------
|
||
get_spec_info:
|
||
; ’¨¯ ®¡à §
|
||
ld a,(image_type); ; ¨¤¥ªá ⨯
|
||
ld c,a
|
||
add a,a ;1+1=2
|
||
add a,c ;2+1=3
|
||
ld c,a
|
||
ld b,0
|
||
ld hl,list_image_types ; ᯨ᮪ ⨯®¢ ®¡à §
|
||
add hl,bc ; ®âªã¤
|
||
ld de,img_type ; ªã¤
|
||
ld bc,3
|
||
ldir
|
||
; Œ¥âª ¤¨áª
|
||
ld hl,test_vol+10; ; ®âªã¤ (ª®¥æ ¬¥âª¨)
|
||
ld de,trd_vol+10 ; ªã¤ (ª®¥æ áâப¨)
|
||
ld ix,trd_vol ; ç «® áâப¨ ¬¥âª¨
|
||
call copy_volume ; ᪮¯¨à. ¬¥âªã
|
||
; ’¨¯ ¤¨áª
|
||
ld a,(spec_type); ; ¨¤¥ªá ⨯
|
||
ld c,a
|
||
add a,a ;1+1=2
|
||
add a,a ;2+2=4
|
||
add a,c ;4+1=5
|
||
ld c,a
|
||
ld b,0
|
||
ld hl,list_disk_types ; ᯨ᮪ ⨯®¢ ᯥª-¤¨áª
|
||
add hl,bc ; ®âªã¤
|
||
ld de,trd_type ; ªã¤
|
||
ld bc,5
|
||
ldir
|
||
; ‡ é¨â ®â § ¯¨á¨
|
||
ld a,0; ; ä« £ § é¨âë 0=¥â, 1=¥áâì
|
||
or a
|
||
ld hl,"a " ; " absent"
|
||
ld a,"b"
|
||
jr z,$+7
|
||
ld hl,"rp" ; "present"
|
||
ld a,"e"
|
||
ld (trd_protect),hl ; ¯¥à¥¯¨á âì âà¨
|
||
ld (trd_protect+2),a ; ¯¥à¢ë¥ ᨬ¢®«ë
|
||
; ‚ᥣ® ä ©«®¢
|
||
ld a,255; ; ç¨á«®
|
||
ld ix,trd_files ; ¡ãä¥à
|
||
call dec9 ; ¢ë¢®¤ ç¨á¥« 0..999 á ¢¥¤ãé. ¯à®¡¥«®¬
|
||
; “¤ «¥ëå ä ©«®¢
|
||
ld a,0; ; ç¨á«®
|
||
ld ix,trd_delfiles ; ¡ãä¥à
|
||
call dec9
|
||
; ¤«ï SCL-¨¬¨¤¦ ¤ «ìè¥ ®¡ã«¨âì
|
||
ld a,(image_type) ; ⨯ ¨¬¨¤¦
|
||
or a
|
||
jr nz,get_spec_inf_scl ; scl, ®¡ã«¨âì
|
||
; <20>¥à¢ ï ᢮¡®¤ ï ¤®à®¦ª
|
||
ld de,1; ; ç¨á«®
|
||
ld ix,ffree_trk ; ¡ãä¥à
|
||
call dec16s ; ¢ë¢®¤ ç¨á¥« 0..65535 á ¢¥¤. ¯à®¡¥«®¬
|
||
; <20>¥à¢ë© ᢮¡®¤ë© ᥪâ®à
|
||
ld de,0; ; ç¨á«®
|
||
ld ix,ffree_sec ; ¡ãä¥à
|
||
call dec16s
|
||
; ‘¢®¡®¤ëå ᥪâ®à®¢
|
||
ld de,2544; ; ç¨á«®
|
||
ld ix,free_sec ; ¡ãä¥à
|
||
jp dec16s
|
||
|
||
|
||
; ®¡ã«¨âì 3 § 票ï
|
||
get_spec_inf_scl:
|
||
ld bc,5
|
||
ld a,c
|
||
ld hl,spec_null ; ®âªã¤
|
||
ld de,ffree_trk ; ¡ãä¥à "First free trk"
|
||
ldir
|
||
ld hl,spec_null
|
||
ld de,ffree_sec ; ¡ãä¥à "First free sec"
|
||
ld c,a
|
||
ldir
|
||
ld hl,spec_null
|
||
ld de,free_sec ; ¡ãä¥à "Number of free sectors"
|
||
ld c,a
|
||
ldir
|
||
ret
|
||
|
||
spec_null:
|
||
db " 0" ; ®¡ã«ï«ª
|
||
|
||
|
||
; ’¨¯ ᯥª-¨¬¨¤¦ (0=TRD, 1=SCL)
|
||
image_type:
|
||
db 0 ; ¨¤¥ªá
|
||
|
||
; ’¨¯ ᯥª-¤¨áª (0=2S/DD, 1=2S/SD, 2=1S/DD, 3=1S/SD, 4=??/??)
|
||
spec_type:
|
||
db 0 ; ¨¤¥ªá
|
||
|
||
|
||
; ᯨ᮪ ⨯®¢ ¨¬¨¤¦¥©
|
||
list_image_types:
|
||
db "TRD" ; 0
|
||
db "SCL" ; 1
|
||
|
||
; ᯨ᮪ ⨯®¢ ᯥª-¤¨áª®¢
|
||
list_disk_types:
|
||
db "2S/DD" ; 0
|
||
db "2S/SD" ; 1
|
||
db "1S/DD" ; 2
|
||
db "1S/SD" ; 3
|
||
db "??/??" ; 4
|
||
|
||
|
||
|
||
|
||
|
||
; â¥á⮢ ï áâப . ã¡à âì
|
||
test_vol:;
|
||
db "ADVENT#10/2";
|