This commit is contained in:
Tolik 2025-04-03 20:29:32 +10:00
commit 9c17418f43
92 changed files with 28614 additions and 0 deletions

3
.gitmodules vendored Normal file
View File

@ -0,0 +1,3 @@
[submodule "Shared_Includes"]
path = Shared_Includes
url = https://github.com/Tolik-Trek/Shared_Includes.git

253
FM.ASM Executable file
View File

@ -0,0 +1,253 @@
; ‡ £àã§ç¨ª ”Œ
include 'shared_includes/constants/Sp2000.inc'
include 'shared_includes/constants/bios_equ.inc'
include 'shared_includes/constants/dss_equ.inc'
include 'version.inc' ; ¢¥àá¨ï ¬¥­¥¤¦¥à 
; include 'fm.exp' ; ᮤ¥à¦¨â "@label" ¬¥âª¨
org 4100h
db "EXE" ; exe ID
db 0 ; exe ¢¥àá¨ï
dw 512 ; 512, ¬«. ᬥé. ª®¤ 
dw 0 ; áâ. ᬥé. ª®¤ 
dw end_loader - entry ; end-beg, ¯¥à¢¨ç­ë© § £àã§ç¨ª
dw 0,0,0 ; १¥à¢
dw entry ;  ¤à¥á § £à㧪¨ ª®¤ 
dw start ;  ¤à¥á ¯¥à¥¤ ç¨ ã¯à ¢«¥­¨ï
dw start ;  ¤à¥á á⥪ 
ds 490
entry: db "The File Manager, Version "
db major_version + "0"
db "."
db (minor_version / 10) + "0"
db (minor_version % 10) + "0"
db " Copyright (c) 2005-2007 by Vasil Ivanov."
start:
; ®ç¨áâ¨âì ¡ãä¥à ª« ¢ë
ld bc,3135h
rst ToDSS
di
; á®åà. §­ ç¥­¨¥ ¯®à⮢
in a,(SLOT0)
ld (port_82__),a
in a,(SLOT3)
ld (port_E2__),a
in a,(89h)
ld (port_89__),a
; á®åà. ¤¥áªà¨¯â®à ¬¥­¥¤¦¥à 
ld a,(ix-3)
ld (hFile),a
; § ªàëâì ᯥª. íªà ­
ld a,0C0h
out (89h),a
; ¢ë¤¥«¨âì 10 áâà. ¯ ¬ïâ¨
ld bc,0A3Dh
rst ToDSS
jr nc,ok_malloc ; Ok
ld a,(hFile) ; ⥪. ¤¥áªà¨¯â®à
ld c,12h ; § ªàëâì exe-ä ©«
rst ToDSS
ld hl,no_space ; ­¥â ¯ ¬ïâ¨
abort: ei
ld c,5Ch
rst ToDSS
ld bc,0FF41h ; ¢ë室 ¢ „Ž‘
rst ToDSS
ret
ok_malloc: ld (id_block__),a ; åí­¤« ¢ë¤¥«. ¡«®ª  ¯ ¬ïâ¨
; ¯®«ãç¨âì ᯨ᮪ áâà ­¨æ
ld hl,page_sys_screen__
ld c,0C5h
rst 08h
; ã§­ âì ¢¥àá¨î „Ž‘
ld c,0
rst ToDSS
ld hl,013Ch ; 1.60
and a
sbc hl,de
call nc,setup_znak ; =< 1.60 ãáâ. §­ ª®£¥­. 19h/1Ah
; à á¯ ª®¢ âì ¬®¤ã«ì 1
;...
; § £à㧨âì ®á­. ª®¤ ¬¥­¥¤¦¥à 
ld a,(page_manager__) ; à ¡®â ¥â ¢ #8000
out (SLOT3),a
ld hl,0C000h
ld de,len_modul1 ; à §¬¥à ¬®¤ã«ï 1
ld a,(hFile)
ld c,13h
rst ToDSS
jp c,read_error
; à á¯ ª®¢ âì ¬®¤ã«ì 2
;...
; § £à. ¤à ©¢¥àë ª« ¢ë/¬ë誨, ®¡à ¡®â稪¨ ®¡ê¥ªâ®¢ ¨ ¤¨ «. ®ª®­
ld a,(page_module0__) ; à ¡®â ¥â ¢ #0000
out (SLOT3),a
ld hl,0C000h
ld de,len_modul2 ; à §¬¥à ¬®¤ã«ï 2
ld a,(hFile)
ld c,13h
rst ToDSS
jp c,read_error
ld a,(page_spec__)
ld (0C02Ah),a ; á®åà. ᯥª-áâà ­¨æã (vectors.asm)
; à á¯ ª®¢ âì ¬®¤ã«ì 3
;...
; § £à㧨âì ®¯¨á â¥«¨ ¯ ­¥«¥©
ld a,(page_module1__)
out (SLOT3),a
ld hl,0C000h
ld de,len_modul3 ; à §¬¥à ¬®¤ã«ï 3
ld a,(hFile)
ld c,13h
rst ToDSS
jp c,read_error
; à á¯ ª®¢ âì ¬®¤ã«ì 4
;...
; § £à㧨âì ᯥª-ª®¤
ld a,(page_spec__)
out (SLOT3),a
ld hl,0C000h
ld de,len_modul4 ; à §¬¥à ¬®¤ã«ï 4
ld a,(hFile)
ld c,13h
rst ToDSS
jp c,read_error
ld a,(page_module0__)
ld (0C02Ah),a ; á®åà. ä¬-áâà ­¨æã (vect.asm)
; à á¯ ª®¢ âì ¬®¤ã«ì 5
;...
; § £à㧨âì ¢ìî¥à
ld a,(page_viewer__)
out (SLOT3),a
ld hl,0C000h
ld de,len_modul5 ; à §¬¥à ¢ìî¥à 
ld a,(hFile)
ld c,13h
rst ToDSS
jp c,read_error
;
; § ªàëâì exe-ä ©« ¬¥­¥¤¦¥à 
hFile+1: ld a,0 ; á®åà. ¤¥áªà¨¯â®à ¬¥­¥¤¦¥à 
ld c,12h
rst ToDSS
; ¢ª«. ¢ #8000 ®á­. ª®¤ ”Œ
ld a,(page_manager__)
out (SLOT2),a
; ¯¥à¥ª ç âì åí­¤«ë áâà ­¨æ
ld hl,id_block__ ; ®âªã¤ 
ld de,id_block ; ªã¤ 
ld bc,pages_end - id_block__
ldir
;
ld sp,stack ; á⥪ ”Œ
; ­¥ ¬¥­ïâì ¯®«®¦. ¬ë誨 ”Œ
ld c,3 ; ã§­ âì áâ âãá ¬ë誨
rst 30h
ld (Xcoord),hl ; ª®®à¤¨­ â  X (0..639)
ld (Ycoord),de ; ª®®à¤¨­ â  Y (0..255)
jp 8000h ; ¯¥à¥©â¨ ­  ¯à®£à ¬¬ã
; •í­¤«ë áâà ­¨æ ¬¥­¥¤¦¥à 
id_block__: db -1 ; ¤¥áªà¨¯â®à ¢ë¤¥«. ¡«®ª  ¯ ¬ïâ¨
;
page_sys_screen__:
db -1 ; +#0000 á¨áâ.íªà ­, +#1400 íªà ­ ”Œ
page_dial_screen__:
db -1 ; ¡ãä¥à á®åà. ¤¨ «. ®ª®­ ¨ ¢¥àâ. ¬¥­î
page_left_dir__:
db -1 ; ᯨ᮪ «¥¢®© ¯ ­¥«¨
page_right_dir__:
db -1 ; ᯨ᮪ ¯à ¢®© ¯ ­¥«¨
page_manager__:
db -1 ; ®á­. ª®¤ ¬¥­¥¤¦¥à 
page_module0__: db -1 ; ¤à ©¢¥àë ª« ¢ë, ¬ë誨, ¤¨ «. ª®¤ á ®¡à ¡.
page_module1__: db -1 ; ®¯¨á â¥«¨ ¯ ­¥«¥©
page_spec__: db -1 ; áâà ­¨æ  à §¡®à  ᯥª-ä㭪権
page_viewer__: db -1 ; áâà ­¨æ  ¢ìî¥à 
db -1
db 0 ; á⮯-¡ ©â
;
port_82__: db -1 ; á®åà. ¯®àâ 82h
port_E2__: db -1 ; á®åà. ¯®àâ 0E2h
port_89__: db -1 ; á®åà. ¯®àâ 89h
pages_end:
; ®è¨¡ª  § £à㧪¨ ¬¥­¥¤¦¥à 
read_error: ld a,(id_block__)
ld c,3Eh ; ®á¢®¡. ¢ë¤¥«. ¡«®ª ¯ ¬ïâ¨
rst ToDSS
ld a,(hFile)
ld c,12h ; § ªàëâì ä ©«
rst ToDSS
ld hl,load_err
jp abort
no_space: db "Not enough memory to run program !",0Dh,0Ah,0
load_err: db "Disk loading error !",0Dh,0Ah,0
; <20>®¤£®â®¢¨âì §­ ª®£¥­. ¤«ï á®äâ. ªãàá®à 
setup_znak: ld a,(page_manager__) ; ¢à¥¬. ¡ãä¥à
out (SLOT2),a
; ¯®«ãç¨âì á¨áâ. §­ ª®£¥­.
ld de,8000h ; ¡ãä¥à ¤«ï 2048 ¡ ©â ¤ ­­ëå
push de
ld c,0B8h ; ¯®«ãç¨âì §­ ª®£¥­.
rst 08h
; § ¯®«­¨âì ª®¤®¬ 0FFh 2 ­¨¦­¨¥ «¨­¨¨
ld hl,8000h+(2048-(2*256)) ; ¯®á«¥¤­¨¥ 512 ¡ ©â
ld bc,511
ld a,1Ah ; ­®¬¥à §­ ª®£¥­.
call fill_data_font
pop hl
; § ¯®«­¨âì ®áâ «ì­ë¥ 6 «¨­¨© (¯®«­ë© ¡«®ª)
ld bc,2048-513
ld a,19h ; ­®¬¥à §­ ª®£¥­.
; <20> áâனª  §­ ª®£¥­. ¨ ¥£® ॣ¨áâà æ¨ï
; ¢å®¤: a=­®¬¥à §­ ª®£¥­.
; hl=¤ ­­ë¥
; bc=à §¬¥à ¤ ­­ëå
fill_data_font: ld e,l
ld d,h
ld (hl),-1
inc de
ldir
ld de,8000h ; §­ ª®£¥­.
ld c,0B6h ; ãáâ. §­ ª®£¥­.
rst 08h
ret
; ¤¥¯ ª¥à
;...
; Š®­¥æ § £àã§ç¨ª 
end_loader:
;-------------------------------------------------
; Š®¤ ¬¥­¥¤¦¥à 
;-------------------------------------------------
; incbin 'Build/fm.bin'
include 'main.asm'

133
FVIEW/CHFONT.ASM Executable file
View File

@ -0,0 +1,133 @@
; ¢ë§®¢ ¨§ hex-®ª­ 
change_code_page1:
ld hl,ABB87 ; ¢ë¢¥á⨠áâà ­¨æã hex-¤ ¬¯ 
jr $+5
; ¢ë§®¢ ¨§ ascii-®ª­ 
change_code_page:
ld hl,AB390 ; ¢ë¢¥á⨠áâà ­¨æã ⥪áâ 
push hl ; ¢¥ªâ®à ¢ á⥪
ld hl,code_page ; 0/1/2 (Dos/Win/Koi)
ld a,(hl)
inc a
cp 3
jr nz,$+3
xor a
ld (hl),a
push af
ld c,a
add a,a
add a,c
ld c,a
ld b,0
ld a,(viewer_mode) ; 0/1 ०¨¬ ¢ìî¥à  (­®à¬./¯ ­¥«ì­ë©)
or a
jr nz,ch_code_pg1
ld hl,TAE00 ; "WinKoiDos"
ld de,TAE02 ; "DOSWINKOI"
add hl,bc
ex de,hl
add hl,bc
ex de,hl
push de
push hl
push hl
ld de,TA29D+1 ; F8-¯ã­ªâ ASCII key-¡ à 
call ch_code_pg
pop hl
ld de,TA33D+1 ; F8-¯ã­ªâ HEX key-¡ à 
call ch_code_pg
; key-¡ à
ld de,1F39h ; Y/X ¯®«®¦.
ld c,84h ; ãáâ. ªãàá®à
rst 08h
pop hl ; ®âªã¤ 
ld bc,0386h ; ¢ë¢¥á⨠áâப㠢 3 ᨬ¢®« 
rst 08h
; áâ â. áâப 
ld de,0023h ; Y/X ¯®«®¦.
ld c,84h ; ãáâ. ªãàá®à
rst 08h
pop hl ; ®âªã¤ 
ld bc,0386h ; ¢ë¢¥á⨠áâப㠢 3 ᨬ¢®« 
rst 08h
ch_code_pg1:
pop af ; ⥪. ª®¤¨à®¢ª 
; ª®¤®¢ ï â ¡«¨æ 
ld hl,code_tables ; win-1251
dec a
jr z,$+5
ld hl,code_tables+128 ; koi8-r
ld (addr_code_table+1),hl
ret
ch_code_pg:
ld bc,3
ldir
ret
;-------------------------------------------------
; ‚§ïâì ᨬ¢®« ¨§ ª®¤®¢®© â ¡«¨æë
;-------------------------------------------------
char_code_page:
cp 80h ; "€"
ret c
db 0Eh ; ld c,..
code_page:
db 0
dec c
inc c
ret z
exx
and 7Fh
ld l,a
ld h,0
addr_code_table:
ld bc,code_tables ; win-1251
add hl,bc
ld a,(hl)
exx
ret
;-------------------------------------------------
; Š®¤ë 2-© ¯®«®¢¨­ë ascii-â ¡«¨æë
;-------------------------------------------------
code_tables:
; windows-1251
db 3Fh,3Fh,27h,3Fh,22h,3Ah,0C5h,0D8h
db 3Fh,25h,3Fh,3Ch,3Fh,3Fh,3Fh,3Fh
db 3Fh,27h,27h,22h,22h,07h,2Dh,2Dh
db 3Fh,54h,3Fh,3Eh,3Fh,3Fh,3Fh,3Fh
db 0FFh,0F6h,0F7h,3Fh,0FDh,3Fh,0B3h,15h
db 0F0h,63h,0F2h,3Ch,0BFh,2Dh,52h,0F4h
db 0F8h,2Bh,49h,69h,3Fh,0E7h,14h,0FAh
db 0F1h,0FCh,0F3h,3Eh,3Fh,3Fh,3Fh,0F5h
db 80h,81h,82h,83h,84h,85h,86h,87h
db 88h,89h,8Ah,8Bh,8Ch,8Dh,8Eh,8Fh
db 90h,91h,92h,93h,94h,95h,96h,97h
db 98h,99h,9Ah,9Bh,9Ch,9Dh,9Eh,9Fh
db 0A0h,0A1h,0A2h,0A3h,0A4h,0A5h,0A6h,0A7h
db 0A8h,0A9h,0AAh,0ABh,0ACh,0ADh,0AEh,0AFh
db 0E0h,0E1h,0E2h,0E3h,0E4h,0E5h,0E6h,0E7h
db 0E8h,0E9h,0EAh,0EBh,0ECh,0EDh,0EEh,0EFh
; koi8-r
db 0C4h,0B3h,0DAh,0BFh,0C0h,0D9h,0C3h,0B4h
db 0C2h,0C1h,0C5h,0DFh,0DCh,0DBh,0DDh,0DEh
db 0B0h,0B1h,0B2h,0F4h,0FEh,0F9h,0FBh,0F7h
db 0F3h,0F2h,0FFh,0F5h,0F8h,0FDh,0FAh,0F6h
db 0CDh,0BAh,0D5h,0F1h,0D6h,0C9h,0B8h,0B7h
db 0BBh,0D4h,0D3h,0C8h,0BEh,0BDh,0BCh,0C6h
db 0C7h,0CCh,0B5h,0F0h,0B6h,0B9h,0D1h,0D2h
db 0CBh,0CFh,0D0h,0CAh,0D8h,0D7h,0CEh,0FCh
db 0EEh,0A0h,0A1h,0E6h,0A4h,0A5h,0E4h,0A3h
db 0E5h,0A8h,0A9h,0AAh,0ABh,0ACh,0ADh,0AEh
db 0AFh,0EFh,0E0h,0E1h,0E2h,0E3h,0A6h,0A2h
db 0ECh,0EBh,0A7h,0E8h,0EDh,0E9h,0E7h,0EAh
db 9Eh,80h,81h,96h,84h,85h,94h,83h
db 95h,88h,89h,8Ah,8Bh,8Ch,8Dh,8Eh
db 8Fh,9Fh,90h,91h,92h,93h,86h,82h
db 9Ch,9Bh,87h,98h,9Dh,99h,97h,9Ah

2879
FVIEW/FVIEW.ASM Executable file

File diff suppressed because it is too large Load Diff

195
FVIEW/FVIEW.INC Executable file
View File

@ -0,0 +1,195 @@
; <20>à®æ¥¤ãàë, à á¯®«®¦¥­­ë¥ ¢ ®á­. áâà ­¨æ¥ ”Œ.
; ‚ë§ë¢ îâáï ¨§ áâà ­¨æë £«ï¤¥«ª¨.
;
; ä« £ ¢ë室  ¨§ £«ï¤¥«ª¨ ¯®á«¥ ¢ë¢®¤  ᮤ¥à¦¨¬®£® ä ©« 
half_mode_fview:
db false ; 0/1 ­¥ ¢ë室¨âì/¢ë©â¨
;-------------------------------------------------
; ‚ë§®¢ ¢ìî¥à  ­  ¨á¯®«­¥­¨¥
; ¢ë室: CF - ¯à¨ ®è¨¡ª¥, A=ª®¤ ®è¨¡ª¨
;-------------------------------------------------
; <20> ­¥«ì­ë© ०¨¬
;alt_file_viewer:
; ld a,true ; ¢ë¢¥á⨠¤ ­­ë¥ ¨ ¢ë©â¨ ¨§ fview
; ld (half_mode_fview),a ; ãáâ. ä« £
; ld c,true ; ¯ ­¥«ì­ë© ०¨¬ à ¡®âë ¢ìî¥à 
; jr $+4
; Ž¡ëç­ë© ०¨¬
file_viewer:
ld c,false ; ­®à¬. ०¨¬ à ¡®âë ¢ìî¥à 
call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
ret z
ld a,(format_mode) ; ä®à¬ â  ªâ. ¯ ­¥«¨
and form_info
ret nz
ld hl,(all_files)
ld a,l
or h
ret z ; ¯ãáâ ï ¯ ­¥«ì
ld a,c
ld (viewer_mode),a ; 0/1 ०¨¬ à ¡®âë ¢ìî¥à 
call get_record ; hl=­ ç «® § ¯¨á¨, a= âਡãâ ä ©« 
and 10h
ret nz ; ¯ ¯ª 
push hl
call set_path_from_activ_panel ; ãáâ. á¨áâ. ¤¨áª ¨ ¯ãâì ®â  ªâ. ¯ ­¥«¨
pop hl
ret c
ld de,temp_fname ; ªã¤ 
ld bc,0044h ; 11 -> 8.3
rst 10h
ret c
;ld (evcomb_stack+1),sp ; á®åà. á⥪
ld a,(page_viewer) ; áâà. ¢ìî¥à 
out (SLOT1),a
call viewer ; ¢ìî¥à
ex af,af' ; ª®¤ ¢®§¢à â 
ld a,(page_module1)
out (SLOT1),a ; ¢®ááâ. áâà.
ex af,af'
ret
;-----------------------------------------------------------
; ‚ë§®¢ ¨§ fview. Ž¡à ¡®âª  ª« ¢¨è ¡¥§ ª®¬¡¨­ æ¨©
; ¢å®¤: e=ascii-ª®¤
; d=᪥­-ª®¤
; b=¡¨âë á«ã¦. ª« ¢¨è
;-----------------------------------------------------------
;fm_event:
; ld a,(viewer_mode) ; ०¨¬ à ¡®âë ¢ìî¥à 
; or a
; ret z ; ­®à¬. ०¨¬
; ; fview ¢ ¯ ­¥«ì­®¬ ०¨¬¥
; push iy
; push ix
; ld a,(page_module1)
; out (SLOT1),a ; ¢®ááâ. áâà.
; call main_event ; ®¡à ¡®â稪 ”Œ
; ld a,(page_viewer) ; áâà. ¢ìî¥à 
; out (SLOT1),a
; pop ix
; pop iy
; ret
;-------------------------------------------------
; Tab. ‚ë§®¢ ¨§ fview
;-------------------------------------------------
;fm_event_tab:
; ld a,(page_module1)
; out (SLOT1),a ; ¢®ááâ. áâà.
; pop de ; ã¡à âì "call viewer"
; jp tab ; ᬥ­¨âì  ªâ. ¯ ­¥«ì
; â®çª  ¢ë室  ¢ fview
;event_comb_return:
; ld a,(page_viewer) ; áâà. ¢ìî¥à 
; out (SLOT1),a
; ; ­ áâநâì ¯®«®¦. ¤ ¬¯ 
; ld hl,panel_left ; ¯®«®¦.  ªâ. ¯ ­¥«¨
; ld d,(hl) ; Y ¯®«®¦. ¯ ­¥«¨
; inc hl
; ld e,(hl) ; X ¯®«®¦. ¯ ­¥«¨
; inc d
; inc e
; ld (coord),de ; ¯®«®¦. ªãàá®à 
; ld (winpos),de ; ¯®«®¦. ®ª­ 
; ret
;-----------------------------------------------------------
; ‚ë§®¢ ¨§ fview. Ž¡à ¡®âª  ª®¬¡¨­ æ¨© ª« ¢¨è
; ¢å®¤: e=ascii-ª®¤
; d=᪥­-ª®¤
; b=¡¨âë á«ã¦. ª« ¢¨è
;-----------------------------------------------------------
;fm_event_comb:
; ld hl,event_comb_return ; â®çª  ¢ë室 
; push hl
; ld a,(page_module1)
; out (SLOT1),a ; ¢®ááâ. áâà. ä¬
; ld a,d
; ; á ¢®§¢à â®¬ ¢ fview qview-¯ ­¥«¨
; cp 18h ; Ctrl+O ã¡à âì/¯®ª § âì ¯ ­¥«¨
; jp z,hidd;en_panels
; cp 16h ; Ctrl+U ®¡¬¥­ ¯ ­¥«¥©
; jp z,swap;_panels
; cp 12h ; Ctrl+E ¯à¥¤. áâப  ¨áâ®à¨¨
; jp z,prev_history
; cp 2Bh ; Ctrl+X á«¥¤. áâப  ¨áâ®à¨¨
; jp z,next_history
; cp 4Fh ; Ctrl+Del, ®ç¨áâ¨âì ¨áâ®à¨î ª®¬ ­¤
; jp z,clear_history
; ; ¡¥§ ¢®§¢à â  ¢ fview qview-¯ ­¥«¨
; cp 2 ; "1" ªà âª¨©  ªâ. ¯ ­¥«¨
; jr z,event_comb_done
; cp 3 ; "2" á।­¨©  ªâ. ¯ ­¥«¨
; jr z,event_comb_done
; cp 4 ; "3" ¯®«­ë©  ªâ. ¯ ­¥«¨
; jr z,event_comb_done
; cp 10h ; Ctrl+Q áªàëâì/¯®ª § âì ¯ ­¥«¨
; jr z,event_comb_done
; cp 25h ; Ctrl+L ¯ ­¥«ì ¨­ä®à¬ æ¨¨
; jr z,event_comb_done
; ret
;event_comb_done:
;evcomb_stack:
; ld sp,0 ; ¢®ááâ. á⥪ ¤® ¢å®¤  ¢ fview
; jp keybar_options ; ®âà ¡®â âì Ctrl,Alt,Shift ª®¬¡¨­ æ¨¨
;hidd: push iy
; push ix
; ld a,true
; ld (set_qview_fl),a ; ãáâ. ä« £ "­¥ § å®¤¨âì á­®¢  ¢ fview"
; call hidden_panels
; pop ix
; pop iy
; call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
; ret z ; ¢ëª«.
; pop hl ; ¢®ááâ. ¡ « ­á á⥪ 
; call event_comb_return ; ¢ª«. áâà. £«ï¤¥«ª¨
; ; ¢ë¢¥á⨠ᮤ¥à¦. ä ©«  ¢ ¯ ­¥«¨
; ld hl,AB317 ; ascii-®ª­®
; ld a,(cur_mode_dump) ; 0/1 ä« £ ⥪. ®ª­  (ascii/hex)
; or a
; jr z,$+5
; ld hl,ABB1C ; hex-®ª­®
; jp (hl)
;swap: push iy
; push ix
; call swap_panels
; pop ix
; pop iy
; ret
;-------------------------------------------------
; Ctrl+Q. ‚ë§®¢ ¨§ fview
;-------------------------------------------------
;qv_panel:
; ld a,(page_module1)
; out (SLOT1),a ; ¢®ááâ. áâà.
; jp alt_qview_panel

14
FVIEW/FVIEW.Z80 Executable file
View File

@ -0,0 +1,14 @@
;ÉÍÍÍÍÍÍÍ fview ÍÍÍÍÍÍÍ»
;º º
;º Reading file... º
;º º
;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
; ޝ¨á â¥«ì ®ª­  ä㭪樨 "fview"
win_fview_load_file:
dw 0A1Ch,0517h ; Yo,Xo,lenY,lenX
db "fview",0 ; â¨â« ®ª­ 
;
db TextLine
dw 0205h ; Yo,Xo
db "Reading file...",0
db -1 ; ª®­¥æ ®¯¨á â¥«ï

216
FVIEW/MSFVIEW.ASM Executable file
View File

@ -0,0 +1,216 @@
;-----------------------------------------------------------
; Ž¡à ¡®âª  ¬ë誨 ¢ ASCII ®ª­¥
;
; ¢å®¤: hl=Y/X ⥪áâ. ª®®à¤¨­ âë ¬ë誨
; d=¡¨âë ­ ¦ â¨ï ¡ãâ®­®¢
;-----------------------------------------------------------
fview_mouse_ascii:
ld a,(viewer_mode) ; ०¨¬ à ¡®âë ¢ìî¥à 
or a
jp nz,get_fire ; ¯ ­¥«ì­ë© ०¨¬
ld bc,AB33F ; â®çª  ¢ë室 
push bc
ld a,h
or a ; 0-ï áâப 
jp z,get_fire ; ¢¥àå­ïï áâ âãá. «¨­¨ï
cp 31 ; key-¡ à
jr c,fv_ms_ascii ; ᮡëâ¨ï ¢ ®ª­¥
; ᮡëâ¨ï key-¡ à 
bit 0,d ; ¯à ¢ë© ¡ãâ®­ ?
jp nz,get_fire ; ¤ 
push hl
call get_fire ; § é¨â  ®â "§ «¨¯ ­¨ï"
pop hl
ld a,l ; X ª®®à¤¨­ â 
cp 8
ret c; ; F1 ¯ã­ªâ
cp 16
jp c,AB5C8 ; F2 ¯ã­ªâ Wrap/UnWrap
cp 24
ret c; ; F3 ¯ã­ªâ
pop bc ; ¢®ááâ. ¡ « ­á á⥪  (¤«ï ¯ã­ªâ  F4)
cp 32
jp c,ABB1C ; F4 ¯ã­ªâ HEX-०¨¬
push bc ; â®çªã ¢ë室  ¢ á⥪
cp 40
ret c; ; F5 ¯ã­ªâ
cp 48
ret c; ; F6 ¯ã­ªâ
cp 56
ret c; ; F7 ¯ã­ªâ
cp 64
jp c,change_code_page ; F8 ¯ã­ªâ ‘¬¥­  ª®¤. áâà ­¨æë
cp 72
ret c; ; F9 ¯ã­ªâ
; F10 ¯ã­ªâ
pop bc ; ¢®ááâ. ¡ « ­á á⥪ 
ret ; F10 ¯ã­ªâ
; ‘®¡ëâ¨ï ®ª­ 
; ¢å®¤: hl=Y/X ª®®à¤. ¬ë誨 (Y=1..30, X=0..79)
; d=¡¨âë ­ ¦ â¨ï ¡ãâ®­®¢
fv_ms_ascii:
bit 0,d ; ¯à ¢ë© ¡ãâ®­ ?
jr nz,fv_ms_ascii_right ; ¤ 
ld a,h ; X ª®®à¤¨­ â 
cp 16 ; ­ ç «® ­¨¦­¥© ¯®«®¢¨­ë ®ª­ 
jp c,fv_ms_ascii1
; ­  áâப㠢­¨§
call AB987
halt
call get_mouse_info
and 3
jr nz,$-9 ; ¡ãâ®­ë ­ ¦ âë
ld a,evNothing
ld (what),a ; ᯨ᮪ ᮡë⨩
ret
; ­  áâப㠢¢¥àå
fv_ms_ascii1:
call AB81D
halt
call get_mouse_info
and 3
jr nz,$-9 ; ¡ãâ®­ë ­ ¦ âë
ld a,evNothing
ld (what),a ; ᯨ᮪ ᮡë⨩
ret
; <20>à ¢ë© ¡ãâ®­
fv_ms_ascii_right:
ld a,l ; Y ª®®à¤¨­ â 
cp 40 ; ­ ç «® ¯à ¢®© ¯®«®¢¨­ë ®ª­ 
jr c,fv_ms_ascii_right1
; ªãàá®à ¢¯à ¢®
call AB610
halt
call get_mouse_info
and 3
jr nz,$-9 ; ¡ãâ®­ë ­ ¦ âë
ld a,evNothing
ld (what),a ; ᯨ᮪ ᮡë⨩
ret
; ªãàá®à ¢«¥¢®
fv_ms_ascii_right1:
call AB5FE
halt
call get_mouse_info
and 3
jr nz,$-9 ; ¡ãâ®­ë ­ ¦ âë
ld a,evNothing
ld (what),a ; ᯨ᮪ ᮡë⨩
ret
;-----------------------------------------------------------
; Ž¡à ¡®âª  ¬ë誨 ¢ HEX ®ª­¥
;
; ¢å®¤: hl=Y/X ⥪áâ. ª®®à¤¨­ âë ¬ë誨.
; d=¡¨âë ­ ¦ â¨ï ¡ãâ®­®¢
;-----------------------------------------------------------
fview_mouse_hex:
ld a,(viewer_mode) ; ०¨¬ à ¡®âë ¢ìî¥à 
or a
jp nz,get_fire ; ¯ ­¥«ì­ë© ०¨¬
ld bc,ABB4A ; â®çª  ¢ë室 
push bc
ld a,h
or a ; 0-ï áâப 
jp z,get_fire ; ¢¥àå­ïï áâ âãá. «¨­¨ï
cp 31 ; key-¡ à
jr c,fv_ms_hex ; ᮡëâ¨ï ¢ ®ª­¥
; ᮡëâ¨ï key-¡ à 
bit 0,d ; ¯à ¢ë© ¡ãâ®­ ?
jp nz,get_fire ; ¤ 
push hl
call get_fire ; § é¨â  ®â "§ «¨¯ ­¨ï"
pop hl
ld a,l ; X ª®®à¤¨­ â 
cp 8
ret c; ; F1 ¯ã­ªâ
cp 16
ret c; ; F2 ¯ã­ªâ
cp 24
ret c; ; F3 ¯ã­ªâ
pop bc ; ¢®ááâ. ¡ « ­á á⥪  (¤«ï ¯ã­ªâ  F4)
cp 32
jp c,AB317 ; F4 ¯ã­ªâ ASCII-०¨¬
push bc ; â®çªã ¢ë室  ¢ á⥪
cp 40
jp c,ABDF3 ; F5 ¯ã­ªâ Goto...
cp 48
ret c; ; F6 ¯ã­ªâ
cp 56
ret c; ; F7 ¯ã­ªâ
cp 64
jp c,change_code_page1 ; F8 ¯ã­ªâ ‘¬¥­  ª®¤. áâà ­¨æë
cp 72
ret c; ; F9 ¯ã­ªâ
; F10 ¯ã­ªâ
pop bc ; ¢®ááâ. ¡ « ­á á⥪ 
ret ; F10 ¯ã­ªâ
; ‘®¡ëâ¨ï ®ª­ 
; ¢å®¤: hl=Y/X ª®®à¤. ¬ë誨 (Y=1..30, X=0..79)
; d=¡¨âë ­ ¦ â¨ï ¡ãâ®­®¢
fv_ms_hex:
bit 0,d ; ¯à ¢ë© ¡ãâ®­ ?
ret nz ; ¤ 
ld a,h ; X ª®®à¤¨­ â 
cp 1
jr nz,$+9
ld a,l ; X ª®®à¤¨­ â 
cp 9 ; ­  ¯®«¥ ¢¢®¤   ¤à¥á  ?
jp c,ABDF3 ; ¤ , Goto...
ld a,h
cp 16 ; ­ ç «® ­¨¦­¥© ¯®«®¢¨­ë ®ª­ 
jp c,fv_ms_hex1
; ­  áâப㠢­¨§
call ABCDB
halt
call get_mouse_info
and 3
jr nz,$-9 ; ¡ãâ®­ë ­ ¦ âë
ld a,evNothing
ld (what),a ; ᯨ᮪ ᮡë⨩
ret
; ­  áâப㠢¢¥àå
fv_ms_hex1:
call ABC9A
halt
call get_mouse_info
and 3
jr nz,$-9 ; ¡ãâ®­ë ­ ¦ âë
ld a,evNothing
ld (what),a ; ᯨ᮪ ᮡë⨩
ret
;-----------------------------------------------------------
; Ž¡à ¡®âª  ¬ë誨 ¢ ¯®«¥ ¢¢®¤   ¤à¥á  Goto...
;
; ¢å®¤: hl=Y/X ⥪áâ. ª®®à¤¨­ âë ¬ë誨.
; a=¡¨âë ­ ¦ â¨ï ¡ãâ®­®¢
;-----------------------------------------------------------
fview_mouse_goto:
ld a,(viewer_mode) ; ०¨¬ à ¡®âë ¢ìî¥à 
or a
jp nz,get_fire ; ¯ ­¥«ì­ë© ०¨¬
ld bc,ABE29 ; â®çª  ¢ë室 
push bc
ld a,h
dec a ; 1-ï áâப 
jr nz,$+6
ld a,l ; X ª®®à¤¨­ â 
cp 9
ret c ; ®áâ âìáï ¢ ¯®«¥ ¢¢®¤ 
pop bc ; ¢®ááâ. ¡ « ­á á⥪ 
call get_fire ; ¯ ­¥«ì­ë© ०¨¬
jp ABF5C ; Esc

151
FVIEW/SETVIEW.ASM Executable file
View File

@ -0,0 +1,151 @@
; normal: 80 - ¤«¨­  áâப¨
; 30 - ç¨á«® áâப
; qview: 38 - ¤«¨­  áâப¨
; 28 - ç¨á«® áâப
;
len_string equ 80 ; ¤«¨­  áâப¨
num_strings equ 30 ; ç¨á«® áâப
; <20>®«®¦. ªãàá®à 
coord: dw 0100h ; Y/X
; <20>®«®¦. ®ª­ 
winpos: dw 0 ; Y/X
; <20> §¬¥àë ®ª­ 
winsize:dw 0 ; Y/X 1C26h=28/38, 1E50h=30/80
cur_mode_dump:
db 0 ; 0/1 ä« £ ⥪. ®ª­  (ascii/hex)
; <20> áâநâì ª®­áâ ­âë ¢ìî¥à 
setup_fview:
ld de,0100h ; Y/X
ld a,(viewer_mode) ; 0/1 ०¨¬ ¢ìî¥à  (­®à¬./¯ ­¥«ì­ë©)
ld c,a
or a
jr z,setp__ ; ®¡®©â¨ ¯à¨ ­®à¬. ०¨¬¥
ld hl,panel_right ; ª®®à¤¨­ âë ¯ áá. ¯ ­¥«¨
ld d,(hl) ; Y ¯®«®¦. ¯ ­¥«¨
inc hl
ld e,(hl) ; X ¯®«®¦. ¯ ­¥«¨
inc d
inc e
setp__: ld (coord),de ; ¯®«®¦. ªãàá®à 
ld (winpos),de ; ¯®«®¦. ®ª­ 
;xor true
;ld (UnWrap),a ; 0/1 ०¨¬ ¯¥à¥­®á  áâப
;
ld hl,1E50h ; 30/80 ­®à¬. ०¨¬
dec c
inc c
jr z,$+5
ld hl,1C26h ; 28/38 ¯ ­¥«ì­ë© ०¨¬
ld (winsize),hl ; à §¬¥àë ®ª­ 
;
; Š®­áâ ­â  1
ld hl,82*30 ; ­®à¬. ०¨¬ (len_string * num_strings)
dec c
inc c
jr z,$+5
ld hl,40*28 ; ¯ ­¥«ì­ë© ०¨¬
ld (const01+1),hl
ld (const02+1),hl
ld (const03+1),hl
ld (const04+1),hl
; Š®­áâ ­â  2
ld hl,16*30 ; ­®à¬. ०¨¬ (16 * num_strings)
dec c
inc c
jr z,$+5
ld hl,16*28 ; ¯ ­¥«ì­ë©
ld (const20+1),hl
ld (const21+1),hl
ld (const22+1),hl
ld (const23+1),hl
ld (ABD79+1),hl
ld (const25+1),hl
ld (const26+1),hl
; —¨á«® áâப
; -1
ld a,29 ; ­®à¬. ०¨¬
dec c
inc c
jr z,$+4
ld a,27 ; ¯ ­¥«ì­ë©
ld (mt01+1),a
inc a ; +0
ld (met03+1),a
ld (met07+1),a
ld (met09+1),a
ld (met12+1),a
ld (AB6C7+1),a
ld (AB75C+1),a
ld (AB7E5+1),a
inc a ; +1
ld (metk04+1),a
ld (metk05+1),a
ld (metk06+1),a
ld (metk07+1),a
ld (metk08+1),a
ld (metk09+1),a
ld (metk10+1),a
ld (metk11+1),a
ld (metk12+1),a
ld (metk13+1),a
; „«¨­  áâப¨
; -2
ld hl,78 ; ­®à¬. ०¨¬
dec c
inc c
jr z,$+5
ld hl,36 ; ¯ ­¥«ì­ë©
ld a,l
ld (loc20+1),a
ld (loc22+1),a
ld (loc21+1),hl
ld (loc23+1),hl
add a,2 ; +0
ld (loc04+1),a
ld (loc06+1),a
ld (loc07+1),a
ld (loc08+1),a
ld (loc09+1),a
ld (loc10+1),a
ld (loc11+1),a
ld (loc12+1),a
ld (loc13+1),a
ld (loc14+1),a
ld (loc15+1),a
ld (loc16+1),a
ld (loc17+1),a
ld (loc18+1),a
ld (loc19+1),a
ld (AB450+1),a
inc a ; +1
ld (loc30+1),a
inc a ; +2
ld l,a
ld h,0
ld (loc43+1),a
ld (loc40+1),hl
ld (loc41+1),hl
ld (loc42+1),hl
ld (loc44+1),hl
ld (loc45+1),hl
ld (AB8B5+1),hl
; Šà ©­¥¥ X «¥¢®¥ ¯®«®¦. ®ª­  ¯à¨ áªà®««¨­£¥ ¢¯à ¢®
ld a,255-80 ; 175 ­®à¬. ०¨¬
dec c
inc c
jr z,$+4
ld a,255-38 ; ¯ ­¥«ì­ë©
ld (AB618+1),a
ld (AB63A+1),a
ret

521
MAIN.ASM Executable file
View File

@ -0,0 +1,521 @@
; <20>®á«¥¤­¥¥ । ªâ¨à®¢ ­¨¥: 4.01.2006
;
; áâà ­¨æ¥ (page_sys_screen) á®åà ­¥­¨ï á¨áâ. íªà ­  ¨ ¢à¥¬¥­­®£®
; á®åà ­¥­¨ï íªà ­  ¬¥­¥¤¦¥à , ¯®  ¤à¥áã #E800 ­ å®¤ïâáï ¡ãä¥àë
; ¤ ­­ëå User-¬¥­î. Žáâ â®ª áâà ­¨æë ¯®á«¥ ¢á¥£® ¬ áᨢ  #0944 ¡ ©â.
;
; <20>ਠ᪠­¨à®¢ ­¨¨ ¯ ¯ª¨ (¯à®æ¥¤ãà  ScanTree), ¤«ï ¢à¥¬. ¡ãä¥à  ¢ë¤¥«ï¥âáï
; 1 áâà ­¨æ  ¯ ¬ïâ¨. <20>®á«¥ ®âà ¡®âª¨ ¯à®æ¥¤ãàë, áâà ­¨æ  ®á¢®¡®¦¤ ¥âáï.
;
;
; include 'shared_includes/constants/Sp2000.inc'
EDEPTH equ 36 ; ᫨誮¬ ¡®«ìè ï ¢«®¦. ¯ ¯®ª ¨«¨ >= 1024 ¯ ¯®ª
EUABORT equ 37 ; User abort (®¯¥à æ¨ï ¯à¥à¢ ­  ¯®«ì§®¢ â¥«¥¬)
max_len_comline equ 126;254 ; ¬ ªá. ¤«¨­  ª®¬-áâப¨ (¡®«ìè¥ ­¥ ¤¥« âì)
history_size equ 128;256 ; à §¬¥à history-¡ãä¥à 
; €¤à¥á  ᥪ権 ¢à¥¬. ¬ áᨢ  梥⮢ ¢ ¡ãä¥à¥
;tmp_color_list equ work_buffer + 511 - len_color_array ; ­ ç «® ¢à¥¬. ¬ áᨢ 
;color_list2 equ tmp_color_list + col_lst1
;color_list3 equ color_list2 + col_lst2
;color_list4 equ color_list3 + col_lst3
;color_list5 equ color_list4 + col_lst4
;color_list6 equ color_list5 + col_lst5
;color_list7 equ color_list6 + col_lst6
;color_list8 equ color_list7 + col_lst7
;color_list9 equ color_list8 + col_lst8
;color_list10 equ color_list9 + col_lst9
;color_list11 equ color_list10 + col_lst10
;---- –¢¥â  ¬¥­¥¤¦¥à  ----
; <20> ­¥«ì
color_pointer equ 3Fh ; 㪠§ â¥«ì
color_markpoint equ 3Eh ; ¢ë¤¥«. 㪠§ â¥«ì
color_panel equ 1Bh ; ¯ ­¥«ì/ᯨ᮪ ä ©«®¢
color_markfile equ 1Eh ; ¯®¬¥ç. ä ©«ë ᯨ᪠
color_seltitle equ 3Fh ; ¢ë¤¥«. â¨â« ¯ ­¥«¨
color_title equ 1Eh ; â¨â« ª®«®­®ª ¯ ­¥«¨
color_markline equ 3Eh ; ¨­ä®à¬. áâப  ®â¬¥ç. ä ©«®¢
color_highlighted_info equ 1Eh ; ¤ ­­ë¥ ¢ info/qview ¯ ­¥«ïå
color_info_names equ 1Fh ; ä ©«ë/¯ãâì ¢ info/qview ¯ ­¥«ïå
; ƒ®à¨§. ¬¥­î
color_hmenu equ 30h ; ¬¥­î
color_hmenu_pointer equ 0Fh ; 㪠§ â¥«ì
color_hmenu_hotkey equ 0Eh ; hot-¡ãª¢ë
; Pull-¬¥­î
color_vmenu equ 3Fh ; popup-¬¥­î
color_vmenu_pointer equ 0Fh ; 㪠§ â¥«¨ ¬¥­î
color_vmenu_hotkey equ 0Eh ; hot-¡ãª¢ë ¬¥­î (¬«.­¨¡¡«)
; Key-¡ à
kb_f equ 30h ; ¯ã­ªâë
kb_b equ 0Eh ; hot-ç¨á« 
; Š®¬ ­¤­ ï áâப 
color_comline equ 07h
; „¨ «. ®ª­ 
color_dial_win equ 70h ; ¤¨ «. ®ª­ 
color_dial_hotkey equ 0Eh ; hot-¡ãª¢ ¤¨ «. ®ª®­
color_sel_dial_title equ 30h ; Selected title ®¡ê¥ªâ  ¤¨ «. ®ª­ 
color_info_win equ 70h ; info-®ª­ 
color_warn_win equ 4Fh ; warning/errors ®ª­ 
color_listbox equ 17h ; ListBox
color_list_point equ 2Fh ; 㪠§ â¥«ï ListBox- 
color_list_hpoint equ 1Eh ; ¯®á«¥ 㪠§ â¥«ï
color_vscrl_bar equ 13h ; áªà®««-¡ à  ListBox- 
color_inputline equ 30h ; áâப  ¢¢®¤ 
color_selbuttons equ 30h ; ¢ë¤¥«. ¡ãâ®­
color_selbuttons_err equ 70h ; ¢ë¤¥«. ¡ãâ®­ Warning/Errors ®ª®­
color_shadow equ 03h ; â¥­ì ®ª®­ (­¥ ­ áâà ¨¢ ¥âáï)
; ‚ìî¥à
color_viewer equ 1Bh ; Normal text
color_viewer_seltext equ 30h ; Selected text
color_viewer_status equ 30h ; Status line
color_viewer_scrl_arrow equ 1Eh ; Scrolling arrows
; <20>¥¤ ªâ®à
color_editor equ 1Bh ; Normal text
color_edit_seltext equ 30h ; Selected text
color_edit_status equ 30h ; Status line
; Žª­® ¯®¬®é¨
color_help equ 30h ; Normal text
color_help_seltext equ 3Eh ; Highlighted text
color_help_title equ 3Fh ; Title
color_help_scrl_bar equ 30h ; Scrollbar
; Žáâ «ì­®¥
color_process_line equ 30h ; «¨­¥©ª  ¯à®æ¥áá 
color_clock equ 30h ; ç áë
; <20> áªà áª  ä ©«®¢
color_folder equ 1Fh ; ¯ ¯ª¨
color_exe equ 1Ah ; ¨á¯®«­ï¥¬ë¥ ä ©«ë (exe,bat)
color_archive equ 1Dh ;  à娢ë
color_ro equ 17h ; ä ©«ë r/o, system
color_hidden equ 13h ; áªàëâë¥ ä ©«ë
color_spec equ 1Ch ; ᯥª-ä ©«ë (trd, scl)
; include 'version.inc' ; ¢¥àá¨ï ¬¥­¥¤¦¥à 
; export id_block
; export len_modul1
; export len_modul2
; export len_modul3
; export len_modul4
; export len_modul5
; export stack
; export Xcoord
; export Ycoord
org 8000h
mod0: ; ¬¥âª  ¤«ï ¢ëç¨á«. à §¬¥à 
;////////////////////////////////////////////////////////////////////////
;
; ’®çª  ¢å®¤  ¢ ¬¥­¥¤¦¥à
;
;////////////////////////////////////////////////////////////////////////
jp begin
; •í­¤«ë áâà ­¨æ ¬¥­¥¤¦¥à 
id_block: db -1 ; ¤¥áªà¨¯â®à ¢ë¤¥«. ¡«®ª  ¯ ¬ïâ¨
;
page_sys_screen:db -1 ; +0 á¨áâ. íªà ­, +2800h ¤ ­­ë¥ user-menu
page_dial_screen:
db -1 ; ¡ãä¥à á®åà. ¤¨ «. ®ª®­ ¨ ¢¥àâ. ¬¥­î
page_left_dir: db -1 ; ᯨ᮪ «¥¢®© ¯ ­¥«¨
page_right_dir: db -1 ; ᯨ᮪ ¯à ¢®© ¯ ­¥«¨
page_manager: db -1 ; ®á­. ª®¤ ¬¥­¥¤¦¥à 
page_module0: db -1 ; ¤à ©¢¥àë ª« ¢ë, ¬ë誨, ¤¨ «. ª®¤ á ®¡à ¡.
page_module1: db -1 ; ®¯¨á â¥«¨ ¯ ­¥«¥©
page_spec: db -1 ; áâà ­¨æ  à §¡®à  ᯥª-ä㭪権
page_viewer: db -1 ; áâà ­¨æ  ¢ìî¥à 
db -1
db 0 ; á⮯-¡ ©â
;
port_82: db -1 ; á®åà. ¯®àâ 82h
port_E2: db -1 ; á®åà. ¯®àâ 0E2h
port_89: db -1 ; á®åà. ¯®àâ 89h
lastdrive: db 'B'-'A' ; ¯®á«¥¤­¨© ¤¨áª ¢ á¨á⥬¥ (0..25)
;-------------------------------------------------
; ‚ë§®¢ „Ž‘-à¥áâ àâ 
;-------------------------------------------------
int10: ex af,af'
di
ld a,(port_82) ; ¤®á-áâà ­¨æ 
out (SLOT0),a
ei
ex af,af'
rst 10h
int__: ex af,af'
di
ld a,(page_module0)
out (SLOT0),a ; ¢®ááâ. áâà. ¤à ©¢¥à®¢ ª« ¢ë, ¬ë誨
ei
ex af,af'
ret
;-------------------------------------------------
; ‚ë§®¢ RST 18h
;-------------------------------------------------
int18: ex af,af'
di
ld a,(port_82) ; ¤®á-áâà ­¨æ 
out (SLOT0),a
ei
ex af,af'
rst 18h
jr int__
;-------------------------------------------------
; ‚ë§®¢ RST 10h ¨§ ᯥª-áâà ­¨æë
;-------------------------------------------------
alt10: ex af,af'
di
ld a,(port_82) ; ¤®á-áâà ­¨æ 
out (SLOT0),a
ei
ex af,af'
rst 10h
alt__: ex af,af'
di
ld a,(page_spec)
out (SLOT0),a ; ¢®ááâ. áâà.
ei
ex af,af'
ret
;-------------------------------------------------
; ‚ë§®¢ RST 18h ¨§ ᯥª-áâà ­¨æë
;-------------------------------------------------
alt18: ex af,af'
di
ld a,(port_82) ; ¤®á-áâà ­¨æ 
out (SLOT0),a
ei
ex af,af'
rst 18h
jr alt__
include 'fview/fview.inc' ; ¯à®æ¥¤ãàë ¢ë室  ¨§ £«ï¤¥«ª¨
; à ¡®ç¨© ¡ãä¥à ”Œ
work_buffer: ds 512
ds 80
stack: ; á⥪ ”Œ
begin:
; ã§­ âì boot-¤¨áª á¨á⥬ë
ld bc,0009h
rst 10h
add a,"A"
ld (ccp_name),a ; launch.asm
; ¨­¨æ. ­®¬¥à  áâà ­¨æ ¢ áâàãªâãà å ¯ ­¥«¥©
ld a,(page_left_dir)
ld (cash_left_dir),a
ld a,(page_right_dir)
ld (cash_right_dir),a
; ¢ª«. ¢ #4000 áâà. ”Œ
ld a,(page_module1)
out (SLOT1),a
; á®åà. ⥪. ¤¨áª
ld c,2
rst 10h
ld (save_disk),a
; á®åà. ⥪ã騩 ¯ãâì
ld hl,save_path
ld c,1Eh
rst 10h
include 'shell.asm' ; ä ©«¥à
include 'mod2/fillstr.asm' ; § ¯®«­¥­¨¥ áâப¨ ä ©«¥à 
include 'mod2/event.asm' ; ç⥭¨¥ ᮡë⨩
include 'mod2/mouse.asm' ; ¬ë誠
include 'mod2/keybar.asm' ; key-¡ à
include 'mod2/clock.asm' ; ç áë ¯ ­¥«¥©
include 'mod2/setup.asm' ; ç⥭¨¥/§ ¯¨áì ini-ä ©« , mnu-ä ©«
include 'mod2/space.asm' ; ᢮¡. ®¡ê¥¬ ¤¨áª 
include 'mod2/hilight.asm' ; ¯®¤á¢¥âª  ä ©«®¢
include 'mod2/readdsk.asm' ; ç⥭¨¥ ­®¢®© ¯ ¯ª¨
include 'mod2/enter.asm' ; ®¡à ¡®âª  ­ ¦ â¨ï <Enter>
include 'mod2/launch.asm' ; § ¯ã᪠䠩«®¢
include 'mod2/pos.asm' ; ¯®§¨æ. 㪠§ â¥«ï ¯®á«¥ ᬥ­ë ᯨ᪠
include 'mod2/utils.asm' ; ¢á¯®¬. ¯à®æ¥¤ãàë
include 'mod2/copy.asm' ; ª®¯¨à®¢ ­¨¥ ä ©«®¢
include 'mod2/info.asm' ; info-०¨¬ ¯ ­¥«¨
include 'mod2/qview.asm' ; qview-०¨¬ ¯ ­¥«¨
include 'mod2/mkdir.asm' ; á®§¤ ­¨¥ ¯ ¯ª¨ (F7)
include 'mod2/delete.asm' ; 㤠«¥­¨¥ ä ©« /¯ ¯ª¨ (F8)
include 'mod2/rename.asm' ; ¯¥à¥¨¬¥­®¢ ­¨¥ ä ©«  (F6)
include 'mod2/debug.asm'
; <20>¥¦¨¬ à ¡®âë ¢ìî¥à 
viewer_mode: db 0 ; 0=®¡ëç­ë©, 1=¯ ­¥«ì­ë©
attr_record: db 0 ;  âਡãâ ⥪. § ¯¨á¨ ᯨ᪠ ª â «®£ 
del_confirm: db true ; ä« £ ¯®¤â¢. 㤠«¥­¨ï ä ©«®¢/¯ ¯®ª
flag_del_non_empty:
db true ; ä« £ ¯®¤â¢. 㤠«¥­¨ï ­¥ ¯ãáâëå ¯ ¯®ª
move_home_end: db false ; ä« £ ®âà ¡®âª¨ Home/End ¯à¨ ®âªà. ¯ ­¥«ïå
enable_mnu_file:db false ; ä« £ ­ «¨ç¨ï mnu-ä ©« 
;-------------------------------------------------
; ‘â ­¤ àâ­ë© ¢ë室 ¢ „Ž‘
;-------------------------------------------------
exit: ld a,b
ld (return_code+1),a ; á®åà. ª®¤ ¢®§¢à â 
; ¢®ááâ. „Ž‘-áâà ­¨æã
di
ld a,(port_82)
out (SLOT0),a
ei
; ¯®«®¦. á¨áâ. ¬ë誨 ¯® ¬¥áâ­®¬ã ¤à ©¢¥àã
Xcoord+1: ld hl,0 ; ª®®à¤¨­ â  X (0..639)
Ycoord+1: ld de,0 ; ª®®à¤¨­ â  Y (0..255)
ld c,4 ; ãáâ. ¯®«®¦. ¬ë誨
rst 30h
; ãáâ. á¨áâ. ¤¨áª ¨ ¯ãâì  ªâ. ¯ ­¥«¨
call set_path_from_activ_panel
; ¢®ááâ. §­ ç¥­¨¥ ¯®àâ 
ld a,(port_89)
out (89h),a
; ¢®ááâ. á¨áâ. íªà ­
ld c,0B3h
ld a,(page_sys_screen) ; áâà ­¨æ  ¡ãä¥à 
call screen__
; ¢®ááâ. §­ ç¥­¨¥ ¯®àâ 
ld a,(port_E2)
out (SLOT3),a
; ¢®ááâ. ¯®«®¦. ªãàá®à  á¨áâ. íªà ­ 
sys_cursor_coords:
ld de,0
ld c,84h
rst 08h
; ®á¢®¡. ¢ë¤¥«¥­­ë© ¡«®ª ¯ ¬ïâ¨
ld a,(id_block)
ld c,3Eh
rst 10h
; ®ç¨áâ¨âì ¡ãä¥à á¨áâ. ª« ¢ë
ld bc,3135h
rst 10h
return_code: ld b,0 ; ª®¤ ¢®§¢à â 
ld c,41h
rst 10h
ret
;-----------------------------------------------------------
; ‘®åà ­¨âì/¢®ááâ. ¯®«­ë© á¨á⥬­ë© íªà ­
;-----------------------------------------------------------
; ¢å®¤: C = #B2/#B3 á®åà./¢®ááâ. íªà ­
; A = ­®¬¥à áâà ­¨æë ¡ãä¥à  ®ª­ 
screen__: ld hl,2050h ; ¢ëá®â /è¨à¨­  íªà ­ 
scrn1__: ld ix,0C000h ;  ¤à¥á ¡ãä¥à  ¤«ï ¤ ­­ëå
scrn2__: ld b,a
xor a ; ¨¤¥­â¨ä. £«®¡. ®ª­ 
ld e,a ; X ¯®«®¦.
ld d,a ; Y ¯®«®¦.
di
rst 08h
ei
ret
;-----------------------------------------------------------
; ‘®åà ­¨âì/¢®ááâ. á¨á⥬­ë© íªà ­ ¤® ª®¬. áâப¨
;-----------------------------------------------------------
; ¢å®¤: C = #B2/#B3 á®åà./¢®ááâ. íªà ­
; A = ­®¬¥à áâà ­¨æë ¡ãä¥à  ®ª­  (page_sys_screen)
screen1__: ld hl,1E50h ; ¢ëá®â /è¨à¨­  íªà ­ 
jr scrn1__
;-----------------------------------------------------------
; ‘®åà ­¨âì/¢®ááâ. ¯®«­ë© íªà ­ ¬¥­¥¤¦¥à 
;-----------------------------------------------------------
; in: c=#B2/#B3 á®åà./¢®ááâ. íªà ­
; a=­®¬¥à áâà ­¨æë ¡ãä¥à  ®ª­  (page_sys_screen)
screen2__: ld hl,2050h ; ¢ëá®â /è¨à¨­  íªà ­ 
ld ix,0C000h+1400h ; ­ ç «® íªà ­  ¬¥­¥¤¦¥à 
jr scrn2__
;-----------------------------------------------------------
; <20>¥áâ àâ ¤«ï Œ¥­î ¨ ¤¨ «. ®ª®­
;-----------------------------------------------------------
scrn4__: ld b,a
scrn5__: xor a ; ¨¤¥­â¨ä. £«®¡. ®ª­ 
di
rst 08h
ei
ret
mod1: ; ¬¥âª  ¤«ï ¢ëç¨á«. à §¬¥à 
;===========================================================
; <09>®¤£à㦠¥¬ë© Œ®¤ã«ì 1
; „à ©¢¥àë ª« ¢ë, ¬ë誨, ®¡à ¡®â稪 ¤¨ «. ®ª®­, tv-®¡ê¥ªâë
;===========================================================
; ¢á¥£¤  ¯®¤ª«î祭 (ªà®¬¥ ¢ë§®¢®¢ rst 10h, rst 18h)
phase 0000h
include 'mod0/vectors.asm' ; ¢¥ªâ®àë ¯à¥à뢠­¨©
include 'mod0/keybdrv.asm' ; ¤à ©¢¥à ª« ¢ë
include 'mod0/cursor.asm' ; ¯à®£à ¬¬­ë© ªãàá®à
include 'mod0/mousedrv.asm' ; ¤à ©¢¥à ¬ë誨
include 'objs/dialog.asm' ; ®¡à ¡®â稪 ¤¨ «. ®ª®­
include 'objs/button.asm' ; ®¡ê¥ªâ ~Button~
include 'objs/inline.asm' ; ®¡ê¥ªâë ~Input Line~, ~Inp Line~
include 'objs/listbox.asm' ; ®¡ê¥ªâ ~List Box~
include 'objs/radio.asm' ; ®¡ê¥ªâë ~Radio Button~, ~Check Box~
include 'objs/process.asm' ; ®¡ê¥ªâ ~Process Line~
include 'objs/pallete.asm' ; ®¡ê¥ªâ ~Pallete~
include 'objs/dialog1.asm' ; ®¡ê¥ªâë ~Text Line~, ~Horiz. Line~
include 'objs/hmenu.asm' ; Œ¥­î: "Horizontal", "Pull", "Select disk"
include 'objs/umenu.asm' ; ¢ë§®¢ User-Menu
include 'mod0/chdisk.asm' ; ¢ë§®¢ ¬¥­î Select Disk
include 'mod0/listdrv.asm' ; ¨­¨æ. ᯨ᮪ ⨯®¢ ¤¨áª®¢
include 'mod0/usermenu.asm' ; ¯®¤£®â®¢ª  Œ¥­î <20>®«ì§®¢ â¥«ï
dephase
mod2:
;===========================================================
; <09>®¤£à㦠¥¬ë© Œ®¤ã«ì 2
;===========================================================
; ¯®áâ®ï­­® ¢ª«î祭
phase 4000h
include 'mod1/buffers.asm' ; à ¡. ¡ãä¥àë ®¡ê¥ªâ®¢
include 'mod1/comline.asm' ; ª®¬-áâப 
include 'mod1/width.asm' ; ®£à ­. ¤«¨­ë ¯ã⨠¯ ­¥«¨
include 'mod1/sort.asm' ; á®àâ¨à®¢ª  ᯨ᪠
include 'mod1/tree.asm' ; ᪠­¨à®¢ ­¨¥ ¯ ¯ª¨
include 'mod1/pullcmnd.asm' ; ¯¥à¥å®¤ë ­  ¢ë¯®«­. pull-¯ã­ªâ®¢
include 'mod1/seldrv.asm' ; ¢ë¡®à «¥¢®£®/¯à ¢®£® ¤¨áª®¢ ¯ ­¥«¥©
include 'mod1/intrface.asm' ; ­ áâனª  "Interface settings"
include 'mod1/confirm.asm' ; ­ áâனª  "Confirmations"
include 'mod1/color.asm' ; ­ áâனª  "Colors"
include 'mod1/setcolor.asm' ; ­ áâனª  梥⮢ ”Œ
include 'mod1/panels.z80' ; ®¯¨á â¥«¨ ä®à¬ â®¢ ¯ ­¥«¥©
include 'mod1/info.z80' ; ®¯¨á â¥«ì info-¯ ­¥«¨
include 'mod1/info2.z80' ; ®¯¨á â¥«ì info-¯ ­¥«¨ ᯥª-ä®à¬ â 
include 'mod1/qview.z80' ; ®¯¨á â¥«ì qview-¯ ­¥«¨
include 'mod1/hmenu.z80' ; ®¯¨á â¥«¨ £®à¨§/pull ¬¥­î
include 'mod1/chdisk.z80' ; ®¯¨á â¥«ì ®ª­  Select Disk
include 'mod1/umenu.z80' ; ®¯¨á â¥«ì ®ª­  User Menu
include 'mod1/intrface.z80' ; ®¯¨á â¥«ì ®ª­  "Interface settings"
include 'mod1/confirm.z80' ; ®¯¨á â¥«ì ®ª­  "Confirmations"
include 'mod1/color.z80' ; ®¯¨á â¥«ì ®ª­  "Colors"
include 'mod1/quit.z80' ; ®¯¨á â¥«ì ®ª­  ¢ë室  ¨§ ”Œ
include 'mod1/space.z80' ; ®¯¨á â¥«ì ®ª­  "Calc. free space disk"
include 'mod1/abort.z80' ; ®¯¨á â¥«ì ®ª­  "Operation has been interrupted"
include 'mod1/dialerr.z80' ; ®¯¨á â¥«¨ ®ª®­ ®è¨¡®ª
include 'mod1/copy.z80' ; ®¯¨á â¥«¨ ®ª®­ ª®¯¨à®¢ ­¨ï
include 'mod1/mkdir.z80' ; ®¯¨á â¥«ì ®ª­  á®§¤ ­¨ï ¯ ¯ª¨
include 'mod1/delete.z80' ; ®¯¨á â¥«ì ®ª­  㤠«¥­¨¥ ä ©« /¯ ¯ª¨
include 'mod1/rename.z80' ; ®¯¨á â¥«ì ®ª­  ¯¥à¥¨¬¥­. ä ©« 
dephase
mod3:
;===========================================================
; <09>®¤£à㦠¥¬ë© Œ®¤ã«ì 3. ‘¯¥ª-ª®¤
;===========================================================
; ¯®¤ª«. ­  ¢à¥¬ï ¢ë§®¢  ᯥª-ä㭪権
phase 0000h
include 'spec/vect.asm' ; ¢¥ªâ®àë
include 'spec/funcs.asm' ; ᯥª-ä㭪樨
dephase
mod4:
;===========================================================
; <09>®¤£à㦠¥¬ë© Œ®¤ã«ì 4. ‚ìî¥à
;===========================================================
; ¯®¤ª«. ­  ¢à¥¬ï ¢ë§®¢  ¢ìî¥à 
phase 4000h
include 'fview/fview.asm' ; ¢ìî¥à
include 'fview/msfview.asm' ; ᮡëâ¨ï ¬ë誨
include 'fview/setview.asm' ; ­ áâனª  ¢ìî¥à 
include 'fview/chfont.asm' ; win-1251, koi8-r ª®¤®¢ë¥ â ¡«¨æë
include 'fview/fview.z80' ; ®¯¨á â¥«ì ®ª­  "Reading file..."
dephase
; €¤à¥á  ᥪ権 ¢à¥¬. ¬ áᨢ  梥⮢ ¢ ¡ãä¥à¥
tmp_color_list equ work_buffer + 511 - len_color_array ; ­ ç «® ¢à¥¬. ¬ áᨢ 
color_list2 equ tmp_color_list + col_lst1
color_list3 equ color_list2 + col_lst2
color_list4 equ color_list3 + col_lst3
color_list5 equ color_list4 + col_lst4
color_list6 equ color_list5 + col_lst5
color_list7 equ color_list6 + col_lst6
color_list8 equ color_list7 + col_lst7
color_list9 equ color_list8 + col_lst8
color_list10 equ color_list9 + col_lst9
color_list11 equ color_list10 + col_lst10
addr_id_block equ id_block ;  ¤à¥á ï祩ª¨ id_block
len_modul1 equ mod1 - mod0 ; à §¬¥à ®á­. ª®¤  (#8000)
len_modul2 equ mod2 - mod1 ; à §¬¥à ¬®¤ã«ï (#0000)
len_modul3 equ mod3 - mod2 ; à §¬¥à ¬®¤ã«ï (#4000)
len_modul4 equ mod4 - mod3 ; à §¬¥à ᯥª-¬®¤ã«ï (#0000)
len_modul5 equ $ - mod4 ; à §¬¥à ¢ìî¥à  (#4000)

51
MOD0/CHDISK.ASM Executable file
View File

@ -0,0 +1,51 @@
;/////////////////////////////////////////////////
; ‹¥¢®¥ ¬¥­î ¢ë¡®à  ¤¨áª®¢
;/////////////////////////////////////////////////
select_left_drive:
call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
ret z
call make_struct_drives ; á®§¤ âì ®¯¨á â¥«ì ¬¥­î ¢ë¡®à  ¤¨áª®¢
ld hl,disk ; ¤¨áª  ªâ. ¯ ­¥«¨
ld de,format_mode ; ä®à¬ â  ªâ. ¯ ­¥«¨
ld a,(cur_panel) ; ⥪. ¯ ­¥«ì
or a
jr z,$+8 ;  ªâ. «¥¢ ï
ld hl,disk1 ; ¤¨áª ¯ áá. ¯ ­¥«¨
ld de,format_mode1 ; ä®à¬ â ¯ áá. ¯ ­¥«¨
ld (set_ldrive_dsk+1),hl
ld (set_ldrive_frm+1),de
ld a,(hl) ; ­®¬¥à ¤¨áª  (¯®«®¦. ¯ã­ªâ  ¬¥­î)
inc a
ld hl,table_left_drive ; â ¡«¨æ  ¬¥­î ¢ë¡®à 
call put_menu_select ; ®âà¨á®¢ª  ¬¥­î
call get_fire ; § é¨â  ®â "§ «¨¯ ­¨ï" ¡ãâ®­®¢
call event_menu_select ; ®¡à ¡®â稪 ᮡë⨩ ¬¥­î
; ãáâ. ¤¨áª ¯ ­¥«¨
jp set_left_drive ; seldrv.asm
;/////////////////////////////////////////////////
; <20>à ¢®¥ ¬¥­î ¢ë¡®à  ¤¨áª®¢
;/////////////////////////////////////////////////
select_right_drive:
call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
ret z
call make_struct_drives ; á®§¤ âì ®¯¨á â¥«ì ¬¥­î ¢ë¡®à  ¤¨áª®¢
ld hl,disk ; ¤¨áª  ªâ. ¯ ­¥«¨
ld de,format_mode ; ä®à¬ â  ªâ. ¯ ­¥«¨
ld a,(cur_panel) ; ⥪. ¯ ­¥«ì
or a
jr nz,$+8 ;  ªâ. ¯à ¢ ï
ld hl,disk1 ; ¤¨áª ¯ áá. ¯ ­¥«¨
ld de,format_mode1 ; ä®à¬ â ¯ áá. ¯ ­¥«¨
ld (set_rdrive_dsk+1),hl
ld (set_rdrive_frm+1),de
ld a,(hl) ; ­®¬¥à ¤¨áª  (¯®«®¦. ¯ã­ªâ  ¬¥­î)
inc a
ld hl,table_right_drive ; â ¡«¨æ  ¬¥­î ¢ë¡®à 
call put_menu_select ; ®âà¨á®¢ª  ¬¥­î
call get_fire ; § é¨â  ®â "§ «¨¯ ­¨ï" ¡ãâ®­®¢
call event_menu_select ; ®¡à ¡®â稪 ᮡë⨩ ¬¥­î
; ãáâ. ¤¨áª ¯ ­¥«¨
jp set_right_drive ; seldrv.asm

62
MOD0/CURSOR.ASM Executable file
View File

@ -0,0 +1,62 @@
CursorPos:
dw 1E00h ; Y/X ¯®§¨æ¨ï ªãàá®à  (íªà ­. ª®®à¤.)
;-----------------------------------------------------------
; Šãàá®à ®¡ê¥ªâ  "Input Line" ¨ ä㭪樨 "Command Line"
;-----------------------------------------------------------
PrnILCr:db 3Eh ; ld a,..
Timer: db 1 ; ¯ ã§  ¬¨£ ­¨ï
dec a
call z,PutILCr
ld (Timer),a
ret
PutILCr:db 3Eh ; ld a,..
Flag: db 0 ; ä« £ ªãàá®à  00-­¥â/01-¥áâì
cpl
ld (Flag),a
PILCurs:ld de,(CursorPos) ; Y/X ¯®§¨æ¨ï ªãàá®à 
ld (CursPos1+1),de
xor a
ld c,0B4h ; ¯®«ãç¨âì ᨬ¢®«
rst 08h
ld bc,1BB5h ; b=§­ ª®£¥­., á=ᨬ¢®« ­  íªà ­
ld a,(Flag)
or a
jr z,curs__
ld b,1Ah ; ç¥àâ 
ld a,(D0642) ; ä« £¨ ª« ¢ë
bit 1,a ; ¡¨â Ins
jr nz,$+4
ld b,19h ; ¡«®ª
curs__: xor a ; ­®¬¥à ®ª­ 
rst 08h
ld a,1
ld (CurILFl),a ; a=1
ld a,11
ret
; ‚몫îç¨âì ªãàá®à
ResILCr:db 3Eh ; ld a,..
CurILFl:db 0 ; ä« £ ªãàá®à  00-¢ëª«/01-¢ª«
or a
ret z
ld a,-1
ld (Flag),a
inc a
ld (CurILFl),a
ld a,11
ld (Timer),a
CursPos1:
ld de,0 ; Y/X ¯®«®¦.
bit 7,e
ret nz
ld c,0B4h ; ¯®«ãç¨âì ᨬ¢®«
xor a
rst 08h
xor a
ld bc,1BB5h ; ᨬ¢®« ­  íªà ­
rst 08h
ret

649
MOD0/KEYBDRV.ASM Executable file
View File

@ -0,0 +1,649 @@
; Œ¥âª¨ T0600 ¨ A0900 ¢ëà ¢­¨¢ îâáï ­  £à ­¨æã xx00h!
;
; RST 20h. „à ©¢¥à ª« ¢¨ âãàë
KeybDrv:or a ; a=0 ¨­¨æ. ª« ¢ã
jp z,init_keyb
dec a ; a=1 ®ç¨áâ¨âì ¡ãä¥à ª« ¢ë
jr z,func_35
dec a ; a=2 ®¯à®á ¡¥§ ®¦¨¤ ­¨ï
jr z,func_31
;dec a ; a=3 â¥áâ ­ ¦ â¨ï ª« ¢¨è¨ (NZ-¤ , Z-­¥â)
jr func_33
;ret
;/////////////////////////////////////////////////////////////////////
; ”ã­ªæ¨ï #31. ޝà®á ª« ¢¨ âãàë ¡¥§ ®¦¨¤ ­¨ï.
;
; ¢ë室: A=ª®¤ ᨬ¢®« 
; D=᪥­-ª®¤, …=ª®¤ ᨬ¢®« 
; B=¡¨âë Ctrl,Alt,Shift
; Z - ­¥â ª« ¢¨è
;/////////////////////////////////////////////////////////////////////
func_31:;ld hl,D0641
;ld a,(D0640)
;cp (hl)
;ret z ; ­¥â ª« ¢¨è¨
call A06FC
ld a,e
ret
;/////////////////////////////////////////////////////////////////////
; ”ã­ªæ¨ï #33. <20>®«ãç¨âì á®áâ®ï­¨¥ ª« ¢¨ âãàë.
; ‚®§¢à é ¥â á®áâ®ï­¨¥ ª« ¢¨ âãàë ­  ¤ ­­ë© ¬®¬¥­â.
;
; ¢ë室: Z - ­¥â ᨬ¢®«®¢ ¢ ¡ãä¥à¥
; B=¡¨âë Ctrl,Alt,Shift
;/////////////////////////////////////////////////////////////////////
func_33:ld hl,D0641
ld a,(D0640)
cp (hl)
ld bc,(D0642) ; ä« £¨ ª« ¢ë
ld a,0
ret z ; z - ­¥ ­ ¦ â 
dec a ; nz - ­ ¦ â 
ret
;/////////////////////////////////////////////////////////////////////
; ”ã­ªæ¨ï #35. Žç¨áâ¨âì ¡ãä¥à ª« ¢¨ âãàë
;/////////////////////////////////////////////////////////////////////
func_35:ld a,(D0641)
ld (D0640),a
ret
ds 0100h-$ ; ¢ë஢­¨âì ­  £à ­¨æã xx00h
; à ¡. ï祩ª¨ ª« ¢ë
T0600: ds 64
;
D0640: db 0 ; ⥪.  ¤à¥á ª®­æ  ª®«ìæ. ¡ãä¥à ?
D0641: db 0 ;  ¤à¥á ­ ç «  ª®«ìæ. ¡ãä¥à ?
; ä« £¨ ª« ¢ë
D0642: db 2
db 0
db 0
db 3
;
D0646: dw 0
A06DD: ld hl,D0640
ld a,(D0641)
sub 4
and 3Fh ; ®£à ­¨ç¨âì  ¤à¥á ª®­æ  ª®«ìæ. ¡ãä¥à 
cp (hl)
jr z,A0716 ; ª®­¥æ ª®«ìæ. ¡ãä¥à 
ld a,(hl)
inc (hl) ; ï祩ª  D0640
inc (hl)
inc (hl)
inc (hl)
res 6,(hl) ; §­ ç¥­¨¥ 40h -> 00h (á¡à. ª®­¥æ ª®«ìæ. ¡ãä¥à ?)
ld l,a
ld h,T0600 / 256 ; 06h áâ. ¡ ©â  ¤à¥á 
ld (hl),e
inc l
ld (hl),d
inc l
ld (hl),b
inc l
ld (hl),c
ret
A06FC: ld hl,D0641
ld a,(D0640)
cp (hl)
ret z ; ­¥â ª« ¢¨è¨
ld a,(hl)
inc (hl)
inc (hl)
inc (hl)
inc (hl)
res 6,(hl) ; §­ ç¥­¨¥ 40h -> 00h (á¡à. ª®­¥æ ª®«ìæ. ¡ãä¥à ?)
ld l,a
ld h,T0600 / 256 ; 06h áâ. ¡ ©â  ¤à¥á 
ld e,(hl)
inc l
ld d,(hl)
inc l
ld b,(hl)
inc l
ld c,(hl)
ret
; ¡¨¯
A0716: ex af,af'
bit 0,(ix+3)
jr z,A0728
exx
ld de,230 ; § ¤¥à¦ª  ¢­ãâà. 横« 
ld hl,50 ; § ¤¥à¦ª  ¢­¥è. 横« 
call beep ; §¢ãª
exx
A0728: ex af,af'
ret
A072A: set 7,(ix+2)
jr A0740
A0730: set 6,(ix+2) ; ãáâ. ¡¨â "®â¦ â "
jr A0740
A0736: set 5,(ix+2)
jr A0740
; ᪠­¨à®¢ ­¨¥ ª« ¢ë
keyb_scan:
ld ix,D0642 ; ä« £¨ ª« ¢ë
A0740: in a,(19h) ; ¯®àâ áâ âãá 
bit 0,a ; 0-bit, ¡ ©â ¯à¨è¥« ?
ret z ; ­¥â
ld a,1
ld (KeyPres+1),a ; ¤à ©¢¥à ¬ë誨
in a,(18h)
cp 0F0h ; ª« ¢¨è  ®â¦ â  ?
jr z,A0730 ; ¤ 
cp 0E0h
jr z,A072A ;7bit
cp 0E1h ; Pause
jr z,A0736 ;5bit
bit 6,(ix+2)
jr nz,A07B3
ld l,a
call A0990
call A0892
res 7,(ix+2)
res 5,(ix+2)
ret z
call A09B4
;
ld hl,1C00h ; Caps Lock
and a
sbc hl,de
call z,A07C8
ld hl,0B800h ; Space + Ctrl, Alt
and a
sbc hl,de
call z,A07D1
ld hl,5000h ; Ins
and a
sbc hl,de
call z,A07EF
ld hl,4900h ; Num Lock
and a
sbc hl,de
call z,A07F8 ; ¨­¢. 3-© ¡¨â (¡¨â Num Lock)
ld hl,0C900h ; Pause ¨«¨ Num Lock+80h (Num Lock+Ctrl/Atl/Shift)
and a
sbc hl,de
call z,A0801
ld hl,4800h ; Scroll Lock
and a
sbc hl,de
call z,A081E ; ¨­¢. 2-© ¡¨â (¡¨â Scroll Lock)
ld hl,0CF00h ; Del+80h (á Shift)
and a
sbc hl,de
call z,reboot_system ; â¥áâ ­  Ctrl+Alt
ld bc,(D0642) ; ä« £¨ ª« ¢ë
jp A06DD
;call A06DD ; á®åà. de,bc ¢ ª®«ìæ. ¡ãä¥à¥ ª« ¢ë
;ret ; ­¥ ®¯â¨¬¨§¨âì
A07B3: res 6,(ix+2)
ld l,a
call A0990
call A0837
res 7,(ix+2)
ld h,0
ld (D0646),hl
ret
A07C8: ld a,(ix+0)
xor 1
ld (ix+0),a
ret
A07D1: bit 5,(ix+1) ; ¡¨â Ctrl
ret z
ld a,(ix+0)
xor 80h ; 7-© ¡¨â (1=RUS,0=LAT)
ld (ix+0),a
bit 1,(ix+3)
ret z
exx
ld de,190 ; § ¤¥à¦ª  ¢­ãâà. 横« 
ld hl,20 ; § ¤¥à¦ª  ¢­¥è. 横« 
call beep ; §¢ãª
exx
ret
A07EF: ld a,(ix+0)
xor 2 ; 1-© ¡¨â (Ins)
ld (ix+0),a
ret
A07F8: ld a,(ix+0)
xor 8 ; 3-© ¡¨â
ld (ix+0),a
ret
; Pause ¨«¨ Num Lock + Ctrl, Atl, Shift
A0801: bit 5,(ix+1) ; ¡¨â Ctrl ?
ret z ; ­¥â
; pop hl ; ??
ld a,(ix+0)
xor 40h ; 6-© ¡¨â
ld (ix+0),a
bit 6,(ix+0)
ret z
ei
A0815: halt
bit 6,(ix+0)
jr nz,A0815
di
ret
A081E: ld a,(ix+0)
xor 4
ld (ix+0),a
ret
; ª« ¢¨è  Del
reboot_system:
;bit 5,(ix+1) ; ¡¨â Ctrl
;ret z
;bit 4,(ix+1) ; ¡¨â Alt
;ret z
ld c,00110000b ; ¡¨âë Ctrl, Alt
ld a,(ix+1)
and c
cp c
ret nz
; á®äâ®¢ë© à¥¡ãâ
xor a
ld bc,01FDh
rst 08h
ret
;db 0,0;
A0837: ld a,l
cp 37h
jr nz,A084A
res 2,(ix+1)
bit 0,(ix+1)
ret nz
res 4,(ix+1)
ret
;
A084A: cp 39h
jr nz,A085C
res 0,(ix+1)
bit 2,(ix+1)
ret nz
res 4,(ix+1)
ret
;
A085C: cp 36h
jr nz,A086E
res 3,(ix+1)
bit 1,(ix+1)
ret nz
res 5,(ix+1)
ret
;
A086E: cp 3Ah
jr nz,A0880
res 1,(ix+1)
bit 3,(ix+1)
ret nz
res 5,(ix+1)
ret
;
A0880: cp 29h
jr nz,A0889
res 7,(ix+1)
ret
;
A0889: cp 34h
;jr nz,A0891
ret nz
res 6,(ix+1)
ret
;A0891: ret
A0892: ld a,l
cp 37h
jr nz,A08A0
set 2,(ix+1)
set 4,(ix+1)
ret
;
A08A0: cp 39h
jr nz,A08AD
set 0,(ix+1)
set 4,(ix+1)
ret
;
A08AD: cp 36h
jr nz,A08BA
set 3,(ix+1)
set 5,(ix+1)
ret
;
A08BA: cp 3Ah
jr nz,A08C7
set 1,(ix+1)
set 5,(ix+1)
ret
;
A08C7: cp 29h
jr nz,A08D0
set 7,(ix+1)
ret
;
A08D0: cp 34h
;jr nz,A08D8
ret nz
set 6,(ix+1)
ret
;A08D8: ret
A0990: bit 7,(ix+2)
jr z,A09B0
cp 11h
ld l,39h
ret z
cp 14h
ld l,3Ah
ret z
cp 5Ah
ld l,4Eh
ret z
cp 4Ah
ld l,4Ah
ret z
cp 7Ch
ld l,47h
ret z
ld l,a
A09B0: ld h,A0900 / 256 ; 09h áâ. ¡ ©â  ¤à¥á 
ld l,(hl)
ret
A09B4: ld d,l
ld e,0
bit 7,(ix+0)
jp nz,A09F6
ld a,(ix+1)
and 0C0h
jr nz,A09E3
set 7,d
bit 4,(ix+1)
ret nz
bit 5,(ix+1)
ret nz
ld d,l
bit 0,(ix+0)
ld bc,T0B75
jr nz,A09DE
ld bc,T0AC1
A09DE: ld h,0
add hl,bc
ld e,(hl)
ret
;
A09E3: ld bc,T0B1B
bit 0,(ix+0)
jr z,A09EF
ld bc,T0BCF
A09EF: ld h,0
add hl,bc
ld e,(hl)
set 7,d
ret
;
A09F6: ld a,(ix+1)
and 0C0h
jr nz,A0A1B
set 7,d
bit 4,(ix+1)
ret nz
bit 5,(ix+1)
ret nz
ld d,l
bit 0,(ix+0)
ld bc,T0CDD
jr nz,A0A16
ld bc,T0C29
A0A16: ld h,0
add hl,bc
ld e,(hl)
ret
;
A0A1B: ld bc,T0C83
bit 0,(ix+0)
jr z,A0A27
ld bc,T0D37
A0A27: ld h,0
add hl,bc
ld e,(hl)
set 7,d
ret
ds 0400h-$ ; ¢ë஢­¨âì ­  £à ­¨æã xx00h
; „®«¦­® ­ ç¨­ âìáï á £à ­¨æë xx00h!
; 144 ¡ ©â .
A0900: db 0,43h,0,3Fh,3Dh,3Bh,3Ch,46h
db 0,44h,42h,40h,3Eh,0Fh,0,0
db 0
db 37h,29h,0
db 36h,10h,2,0
db 0,0,2Ah,1Eh,1Dh,11h,3,0
db 0,2Ch,2Bh,1Fh,12h,5,4,0
db 0,38h,2Dh,20h,14h,13h,6,0
db 0,2Fh,2Eh,22h,21h,15h,7,0
db 0
A0939: db 0
A093A: db 30h,23h,16h,8,9,0,0,31h
db 24h,17h,18h,0Bh,0Ah
A0947: db 0,0,32h
A094A: db 33h,25h,26h,19h
A094E: db 0Ch,0,0,0,27h,0,1Ah,0Dh
db 0,0,1Ch,34h
db 28h,1Bh,0,35h
db 0,0,0,0,0,0,0,0
db 0Eh,0,0,51h,0,54h,57h,0
db 0,0,50h,4Fh,52h,55h,56h,58h
db 1,49h,45h,4Dh,53h,4Ch
db 4Bh,59h
db 48h,0,0,0,0,41h,0,0
db 0,0,0,0,0,0,0,0
db 0,0
; ’ ¡«¨æ  ª®¤®¢ ª« ¢¨è (8 ᥪ権 ¯® 90 ¡ ©â)
T0AC1: db "`",1Bh,"1","2","3","4","5","6","7","8","9","0","-","=",8
db 9,"q","w","e","r","t","y","u","i","o","p","[","]"
db 0 ; CapsLock
db "a","s","d","f","g","h","j","k","l",";","'",0Dh
db 0 ; Left Shift
db "z","x","c","v","b","n","m",",",".","/"
db 0 ; Right Shift
db '\'
db 0 ; Ctrl
db 0 ; Alt
db 20h ; Space
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
; ¤®¯. ¯®«¥
db 0 ; NumLock
db "/","*","-","+",0Dh
db 0,0,0,0,0,0,0,0,0,0,0
;
;
T0B1B: db "~",1Bh,"!","@","#","$","%","^","&","*","(",")","_","+",8
db 9,"Q","W","E","R","T","Y","U","I","O","P","{","}"
db 0 ; CapsLock
db "A","S","D","F","G","H","J","K","L",":",'"',0Dh
db 0 ; Left Shift
db "Z","X","C","V","B","N","M","<",">","?"
db 0 ; Right Shift
db "|",0,0
db 20h ; Space
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
; ¤®¯. ¯®«¥
db 0 ; NumLock
db "/","*","-","+",0Dh
db 0,0,0,0,0,0,0,0,0,0,0
;
;
T0B75: db "`",1Bh,"1","2","3","4","5","6","7","8","9","0","-","=",8
db 9,"Q","W","E","R","T","Y","U","I","O","P","[","]",0
db "A","S","D","F","G","H","J","K","L",";","'",0Dh,0
db "Z","X","C","V","B","N","M",",",".","/",0
db '\',0,0
db 20h ; Space
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
; ¤®¯. ¯®«¥
db 0 ; NumLock
db "/","*","-","+",0Dh
db 0,0,0,0,0,0,0,0,0,0,0
;
;
T0BCF: db "~",1Bh,"!","@","#","$","%","^","&","*","(",")","_","+",8
db 9,"q","w","e","r","t","y","u","i","o","p","{","}",0
db "a","s","d","f","g","h","j","k","l",":",'"',0Dh,0
db "z","x","c","v","b","n","m","<",">","?",0
db "|",0,0
db 20h ; Space
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
; ¤®¯. ¯®«¥
db 0 ; NumLock
db "/","*","-","+",0Dh
db 0,0,0,0,0,0,0,0,0,0,0
;
;
T0C29: db "ñ",1Bh,"1","2","3","4","5","6","7","8","9","0","-","=",8
db 9,"©","æ","ã","ª","¥","­","£","è","é","§","å","ê",0
db "ä","ë","¢"," ","¯","à","®","«","¤","¦","í",0Dh,0
db "ï","ç","á","¬","¨","â","ì","¡","î",".",0
db '\',0,0
db 20h ; Space
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
; ¤®¯. ¯®«¥
db 0 ; NumLock
db "/","*","-","+",0Dh
db 0,0,0,0,0,0,0,0,0,0,0
;
;
T0C83: db "ð",1Bh,"!",'"',"#","$",":",",",".",";","?","%","_","+",8
db 9,"‰","","“","Š","…","<22>","ƒ","˜","™","‡","•","š",0
db "”","","","€","<22>","<22>","Ž","","„","†","<22>",0Dh,0
db "Ÿ","—","","Œ","ˆ","","œ","<22>","ž",",",0
db "|",0,0
db 20h ; Space
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
; ¤®¯. ¯®«¥
db 0 ; NumLock
db "/","*","-","+",0Dh
db 0,0,0,0,0,0,0,0,0,0,0
;
;
T0CDD: db "ð",1Bh,"1","2","3","4","5","6","7","8","9","0","-","=",8
db 9,"‰","","“","Š","…","<22>","ƒ","˜","™","‡","•","š",0
db "”","","","€","<22>","<22>","Ž","","„","†","<22>",0Dh,0
db "Ÿ","—","","Œ","ˆ","","œ","<22>","ž",".",0
db '\',0,0
db 20h ; Space
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
; ¤®¯. ¯®«¥
db 0 ; NumLock
db "/","*","-","+",0Dh
db 0,0,0,0,0,0,0,0,0,0,0
;
;
T0D37: db "ñ",1Bh,"!",'"',"#","$",":",",",".",";","?","%","_","+",8
db 9,"©","æ","ã","ª","¥","­","£","è","é","§","å","ê",0
db "ä","ë","¢"," ","¯","à","®","«","¤","¦","í",0Dh,0
db "ï","ç","á","¬","¨","â","ì","¡","î",",",0
db "|",0,0
db 20h ; Space
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
; ¤®¯. ¯®«¥
db 0
db "/","*","-","+",0Dh
db 0,0,0,0,0,0,0,0,0,0,0
;-------------------------------------------------
; ˆ­¨æ. LPT-¯®à⮢ ¤«ï ª« ¢ë
;-------------------------------------------------
init_keyb:
ld a,0
out (19h),a
ld a,1
out (19h),a
ld a,0
out (19h),a
ld a,3
out (19h),a
ld a,0C1h
out (19h),a
ld a,4
out (19h),a
ld a,7
out (19h),a
ld a,5
out (19h),a
ld a,62h
out (19h),a
ret
; ‡¢ãª.
; ¢å®¤: hl=§ ¤¥à¦ª  ¢­¥è. 横« 
; de=§ ¤¥à¦ª  ¢­ãâà. 横« 
beep: ld a,10h
out (0FEh),a ; ¯®àâ
ld b,d
ld c,e
dec bc
ld a,b
or c
jr nz,$-3
ld a,0
out (0FEh),a ; ¯®àâ
ld b,d
ld c,e
dec bc
ld a,b
or c
jr nz,$-3
dec hl
ld a,h
or l
jr nz,beep
ret

207
MOD0/LISTDRV.ASM Executable file
View File

@ -0,0 +1,207 @@
;-------------------------------------------------
; ˆ­¨æ. ᯨ᮪ ⨯®¢ ¤¨áª®¢ á¨á⥬ë
; (¯®á«¥¤. ç¨â ¥â BPB ª ¦¤®£® ¤¨áª )
;-------------------------------------------------
init_list_types_drives:
ld a,(disk) ; ¤¨áª  ªâ. ¯ ­¥«¨
ld c,1 ; ãáâ. ¤¨áª
rst 10h
jr nc,init_list_types_drv1
; ¨á¯. ­®¬¥à boot-¤¨áª 
ld bc,0009h
rst 10h
ld (disk),a
; ã§­ âì ­®¬¥à ¯®á«. ¤¨áª  ¢ á¨á⥬¥
ld c,1 ; ãáâ. ¤¨áª
rst 10h
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 18h
pop bc
jr c,make_dlist_err
push bc
ld a,c
ld de,work_buffer ; ¡ãä¥à
ld c,4 ; get BPB
rst 18h
pop bc
jr c,make_dlist_err
ld a,c ; ­®¬¥à ¤¨áª 
ld c,2 ; close device
rst 18h
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

373
MOD0/MOUSEDRV.ASM Executable file
View File

@ -0,0 +1,373 @@
Cmouse equ 1Bh
Dmouse equ 1Ah
; RST 30h. Mouse Driver (⥪áâ®¢ë© íªà ­)
; <20>  ¢å®¤ ­®¬¥à ä㭪樨:
; A=00h ˆ­¨æ¨ «¨§ æ¨ï ¬ëè¨
; A=01h ‚뢥á⨠¬ëè¨­ë© ªãàá®à ­  íªà ­
; A=02h “¡à âì ¬ëè¨­ë© ªãàá®à á íªà ­ 
; A=03h <20>®«ãç¨âì ª®®à¤¨­ âë ¬ë誨 ¨ á®áâ®ï­¨¥ ª­®¯®ª
; A=04h <20>®«ãç¨âì ª®®à¤¨­ âë ¬ë誨 ¨ á®áâ®ï­¨¥ ª­®¯®ª
; ¯®á«¥ ¨å ®â¯ã᪠­¨ï
MouseDrv:
or a ; a=0
jr z,Init_MS
dec a ; a=1
jr z,SetMouse
dec a ; a=2
jp z,ResMouse
dec a ; a=3
jp z,ExmFire
dec a ; a=4
jp z,GetFire
ret
; Initialization LPT port & Mouse
Init_MS:di
ld a,55h
out (10h),a
ld a,2Dh
out (10h),a
ld a,0
out (1Bh),a
ld a,1
out (1Bh),a
ld a,0
out (1Bh),a
ld a,3
out (1Bh),a
ld a,41h
out (1Bh),a
ld a,4
out (1Bh),a
ld a,47h
out (1Bh),a
ld a,5
out (1Bh),a
ld a,0E0h
out (1Bh),a
ei
xor a
ld (MSbutt),a
ret
; Set Mouse & Print Cursor Mouse on Screen
SetMouse:
di
push ix
push hl
push de
push bc
call Refresh
pop bc
pop de
pop hl
pop ix
ld a,1
ld (MouseFlg),a
ei
ret
; Res Mouse & Clear Cursor Mouse from Screen
ResMouse:
ld a,(MouseFlg)
or a
ret z
di
xor a
ld (MouseFlg),a
ld (MSbutt),a
push ix
push hl
push de
push bc
call RestorM
pop bc
pop de
pop hl
pop ix
ei
ret
; Examination on Fire
; Input: None
; OutPut: Z-Not Fire
; NZ-Yes Fire:
; HL=Y,X (in Znak)
; A=0-bit Right Button
; A=1-bit Left Button
ExmFire:ld hl,(Tcoords)
ld a,(MSbutt)
and 3
ret
; Get Fire (Wait Not Fire)
; Input: None
; OutPut: Z-Not Fire
; NZ-Yes Fire:
; HL=Y,X (in Znak)
; A=0-bit Right Button
; A=1-bit Left Button
GetFire:ld hl,(Tcoords)
ld a,(MSbutt)
and 3
ret z
push af
ld a,(MSbutt)
and 3
jr nz,$-5
pop af
ret
; Refresh Mouse on Screen
Refresh:call GetMousInfo
db 3Eh ; ld a,..
hidden_mouse:
db true ; true - ¯àïâ âì ¬ëèì ¯à¨ à ¡®â¥ á ª« ¢®©
or a
jr z,RefrMs
ld hl,(Xcoord)
srl h
rr l
srl h
rr l
srl l
ld a,(Ycoord)
rra
rra
rra
and 1Fh
ld h,a
ld de,(TempXY)
sbc hl,de
jr nz,RefrMs
KeyPres:ld a,0
or a
jr z,RefrMs1
jp RestorM
;
RefrMs: xor a
ld (KeyPres+1),a
RefrMs1:call RestorM
jp MousWrt
; Restore Screen from Mouse
RestorM:ld de,(TempXY)
in a,(89h)
ld c,a
in a,(0E2h)
ld b,a
push bc
ld a,5Ch ; 54h ¢¨¤¥®-áâà ­¨æ 
out (0E2h),a
ld a,d
add a,a
add a,a
ld l,a
ld h,0C3h
in a,(0C9h)
rrca
and 80h
or 1
add a,e
out (89h),a
inc l
inc l
ld a,(hl)
ld (hl),a
pop bc
ld a,b
out (0E2h),a
ld a,c
out (89h),a
ret
; Put Text Mouse Cursor On Screen
MousWrt:ld de,(Xcoord)
srl d
rr e
srl d
rr e
srl e
ld a,(Ycoord)
rra
rra
rra
and 1Fh
ld d,a
ld (TempXY),de
in a,(89h)
ld c,a
in a,(0E2h)
ld b,a
push bc
ld a,5Ch ; 54h ¢¨¤¥®-áâà ­¨æ 
out (0E2h),a
ld a,d
add a,a
add a,a
ld l,a
ld h,0C3h
in a,(0C9h)
rrca
and 80h
or 1
add a,e
out (89h),a
inc l
inc l
ld a,(hl)
xor 77h
ld (hl),a
pop bc
ld a,b
out (0E2h),a
ld a,c
out (89h),a
ret
; <20>®«ãç¨âì ­®¢ãî ¨­ä®à¬ æ¨î ® ¬ë誥
GetMousInfo:
call Read_MS
ret c
ld de,(Xcoord)
srl d
rr e
srl d
rr e
srl e
ld a,(Ycoord)
rra
rra
rra
and 1Fh
ld d,a
ld (Tcoords),de
ret
; Input Mouse Data from LPT ports
Read_MS:scf
in a,(Cmouse)
bit 0,a
ret z
in a,(Dmouse)
ld l,a
bit 6,a
ret z
Read_L1:in a,(Cmouse)
rrca
jr nc,Read_L1
in a,(Dmouse)
ld e,a
bit 6,a
ret nz
Read_L2:in a,(Cmouse)
rrca
jr nc,Read_L2
in a,(Dmouse)
ld d,a
bit 6,a
ret nz
ld a,e
and 3Fh
ld e,a
ld a,l
and 3
rrca
rrca
or e
ld c,a ; X addition
ld a,d
and 3Fh
ld d,a
ld a,l
and 0Ch
rrca
rrca
rrca
rrca
or d
ld b,a ; Y addition
ld a,l
and 30h
rrca
rrca
rrca
rrca
ld (MSbutt),a ; Button Pressed
; Corrected Mouse Place
ld hl,(Xcoord)
bit 7,c
ld e,c
jr nz,subX
ld d,0
add hl,de
ld de,027Fh
ex de,hl
sbc hl,de
add hl,de
jr c,$+3
ex de,hl
ld (Xcoord),hl
jr NxtCoord
;
subX: ld d,0FFh
add hl,de
jr c,$+5
ld hl,0
ld (Xcoord),hl
NxtCoord:
ld hl,(Ycoord)
bit 7,b
ld a,l
jr nz,subY
add a,b
jr nc,$+4
ld a,0FFh
ld l,a
ld (Ycoord),hl
and a
ret
;
subY: add a,b
jr c,$+3
xor a
ld l,a
ld (Ycoord),hl
and a
ret
; ”« £ ¬ë誨
MouseFlg:
db 0 ; 00 - ¬ë誨 ­¥â
; 01 - ¬ë誠 ¥áâì
; Š®®à¤¨­ âë ¬ë誨 ¢ â®çª å
;Coords:
;Xcoord: dw 320 ; ª®®à¤¨­ â  X (0..639)
;Ycoord: dw 128 ; ª®®à¤¨­ â  Y (0..255)
; ‚६¥­­ë¥ ª®®à¤¨­ âë ¢ §­ ª®¬¥áâ å
TempXY: dw 0000h ; X (0..79), Y (0..31)
; ‘®áâ®ï­¨¥ ª­®¯®ª
MSbutt: db 0 ; 0-bit ¯à ¢ ï ª­®¯ª 
; 1-bit «¥¢ ï ª­®¯ª 
; Š®®à¤¨­ âë ¬ë誨 ¢ §­ ª®¬¥áâ å
Tcoords:
TcoordX:db 40 ; ª®®à¤¨­ â  X (0..79)
TcoordY:db 16 ; ª®®à¤¨­ â  Y (0..31)
; <20>ãä¥à ¤«ï åà ­¥­¨ï ¨­ä®à¬ æ¨¨ ¨§ ¯®¤ ¬ë誨
MouseBuff:
db 0

548
MOD0/USERMENU.ASM Executable file
View File

@ -0,0 +1,548 @@
; Œ¥­î <20>®«ì§®¢ â¥«ï
;
;
; …᫨ ä ©« "FM.MNU" ­¥ ­ ©¤¥­, â® ¢ë§®¢ Œ¥­î <20>®«ì§®¢ â¥«ï ¡ã¤¥â ­¥ ¤®á-
; â㯥­. <20>ਠí⮬ ­¨ª ª¨å ¯à¥¤ã¯à¥¦¤ îé¨å á®®¡é¥­¨© ¢ë¢®¤¨âìáï ­¥ ¡ã¤¥â.
; …᫨ ¯¥à¥¬¥­­ ï ®ªà㦥­¨ï ä ©«-¬¥­¥¤¦¥à  ®¯à¥¤¥«¥­ , â® mnu-ä ©« ç¨â ¥âáï
; ¨ § ¯¨á뢠¥âáï ⮫쪮 ¢ ­¥©. …᫨ ¯¥à¥¬¥­­®© ®ªà㦥­¨ï ­¥â, mnu-ä ©« ç¨â -
; ¥âáï ¨ § ¯¨á뢠¥âáï ¢ ⥪ã饬 ¯ã⨠¬¥­¥¤¦¥à .
;
; ‘âப¨ ­ §¢ ­¨© ¯ã­ªâ®¢ ¨ ª®¬ ­¤­ëå áâப ¬®£ãâ ­ ç¨­ âìáï á ¯à®¡¥«®¢ ¨«¨
; â ¡ã«ï権. <20>ã­ªâë ¨ ¨å ª®¬-áâப¨ ¬®£ãâ à §¤¥«ïâìáï ¯ãáâ묨 áâப ¬¨ (¨«¨ á®-
; ¤¥à¦ é¨¬¨ ®¤­¨ ¯à®¡¥«ë ¨«¨ â ¡ã«ï樨).
; Š ¦¤®© áâப¥ ¯ã­ªâ  ¤®«¦­  ᮮ⢥âá⢮¢ âì ª®¬ ­¤­ ï áâப , ¢ë¯®«­ï¥¬ ï
; ¯® í⮬㠯㭪âã.
;
; …᫨ ¯¥à¢ë© ᨬ¢®« ¢ áâப¥ "-", â® áâப  áç¨â ¥âáï à §¤¥«¨â¥«¥¬ ¯ã­ªâ®¢
; ¬¥­î ¨ ¯®á«¥¤ãî騥 ᨬ¢®«ë áâப¨ ¨£­®à¨àãîâáï.
; …᫨ áâப  ­ ç¨­ ¥âáï á ᨬ¢®«  ";", â® ¤ ­­ ï áâப  ¢®á¯à¨­¨¬ ¥âáï ª ª
; ª®¬¬¥­â à¨© ¨ â ª¦¥ ¯à®¯ã᪠¥âáï.
;
; ¨¬¥­ å ¯ã­ªâ®¢ ¬®¦­® § ¤ ¢ âì hot-ᨬ¢®«ë ¢ë§®¢  íâ¨å ¯ã­ªâ®¢. ª ç¥áâ-
; ¢¥ hot-ᨬ¢®«®¢ ¬®¦­® ¨á¯®«ì§®¢ âì  «ä ¢¨â­®-æ¨äà®¢ë¥ á¨¬¢®«ë ®á­®¢­®£® ¯®«ï
; ª« ¢¨ âãàë. <20>ਠ®¯à¥¤¥«¥­¨¨ hot-ᨬ¢®«®¢ « â¨­áª¨å ¨ àãááª¨å ¯ã­ªâ®¢, ¬®¦¥â
; ¢®§­¨ª­ãâì á¨âã æ¨ï, ª®£¤  hot-ᨬ¢®«ë « â¨­áª¨å ¨ àãááª¨å ¯ã­ªâ®¢ ᮢ¯ ¤ãâ.
; <20>¨ç¥£® áâà è­®£® ¢ í⮬ ­¥â, ¯à®áâ® ¯® ¤ ­­®¬ã hot-ᨬ¢®«ã ¡ã¤¥â ¢ë§ë¢ âìáï
; ¯ã­ªâ, áâ®ï騩 ¯¥à¢ë¬ ®â ­ ç «  ¬¥­î.
;
; Œ ªá¨¬ «ì­®¥ ç¨á«® ®¡à ¡ â뢠¥¬ëå ¯ã­ªâ®¢ à ¢­® 26. <20>ਠí⮬ ãç¨â뢠îâáï
; â ª¦¥ à §¤¥«¨â¥«¨ ¯ã­ªâ®¢. Œ ªá¨¬ «ì­ ï ¤«¨­  ¨¬¥­ ¯ã­ªâ®¢ ¨ ª®¬-áâப à ¢­ 
; 70 ᨬ¢®« ¬.
;
; <20>ã¤ì⥠¢­¨¬ â¥«ì­ë - ¢ ª®­æ¥ ª®¬-áâப ­¥ ¤®«¦­® ¡ëâì «¨è­¨å ¯à®¡¥«®¢ ¨«¨
; â ¡ã«ï権!.
;
; ’¨¯¨ç­ë© ¯à¨¬¥à § ¯¨á¨ ä ©«  "FM.MNU" (®âáâã¯ë ¤«ï ª®¬-áâப ᤥ« ­ë ¤«ï
; ­ £«ï¤­®áâ¨):
;
; ; íâ® ª®¬¬¥­â à¨©
; &GoldED
; c:\mail\golded\gedw32.exe -f
; ; ¥é¥ ®¤¨­ ª®¬¬¥­â à¨©
; ’®áá&¨âì ¯®çâã
; c:\mail\utils\inar.bat
; &T-Mail
; c:\mail\t-mail\t-mailnt.exe
; <20>&ãনâì ¯®çâã
; c:\mail\utils\purge.bat
; - <20>â® à §¤¥«¨â¥«ì ¯ã­ªâ®¢
; &FFormat
; c:\nc\fformat.exe
; &Rar 2.50
; c:\nc\rar.exe
;
; ”®à¬ â ®¯¨á â¥«ï ¯ã­ªâ®¢ Œ¥­î <20>®«ì§®¢ â¥«ï
; <¨¬ï ¯ã­ªâ ,0>, <᪥­-ª®¤ hot-¡ãª¢ë>
;-----------------------------------------------------------
;list1: db "&GoldED",0
;db 21h ; ᪥­-ª®¤
;db "&®áá¨âì ¯®çâã",0
;db 23h
;db "&T-Mail",0
;db 14h
;db "<22>&ãনâì ¯®çâã",0
;db 12h
;db -2 ; à §¤¥«¨â¥«ì
;db "&FFormat",0
;db 20h
;db "&Rar 2.50",0
;db 13h
;
;db -1 ; ª®­¥æ ®¯¨á â¥«ï
max_user_len equ 70 ; ¬ ªá. ¤«¨­  áâப («¨è­¥¥ ®¡à¥§ ¥âáï)
max_user_puncts equ 26 ; ¬ ªá. ç¨á«® ¯ã­ªâ®¢ («¨è­¨¥ ¨£­®à¨àãîâáï)
;-------------------------------------------------
; <20>à®ç¨â âì MNU-ä ©« ¨ ¯®¤£®â®¢¨âì ®¯¨á â¥«ì
; Œ¥­î <20>®«ì§®¢ â¥«ï.
;
; ¬ ªá. 26 ¯ã­ªâ®¢ (26*2 áâப)
; ¬ ªá. 70 ᨬ¢®«®¢ ¢ ¯ã­ªâ¥/ª®¬-áâப¥
;-------------------------------------------------
make_user_menu:
in a,(SLOT3)
push af
;ld a,(page_dial_screen) ; ¢ ª ç¥á⢥ ¢à¥¬. ¡ãä¥à 
ld a,(page_sys_screen) ; ¢ ª ç¥á⢥ ¢à¥¬. ¡ãä¥à 
out (SLOT3),a
call make_user_menu__ ; ç⥭¨¥ ä ©«  Œ¥­î <20>®«ì§®¢ â¥«ï
pop af
out (SLOT3),a
ret
make_user_menu__:
call read_mnu_file ; ç⥭¨¥ mnu-ä ©« 
ld a,(enable_mnu_file) ; ä« £ ­ «¨ç¨ï mnu-ä ©« 
or a
ret z
ld de,array_read ; ­ ç «® mnu-ä ©« 
ld iy,array_user1 ; ¬ áᨢ 㪠§ â¥«¥© ­  ª®¬-áâப¨
ld hl,array_user2 ; ¬ áᨢ ¯ã­ªâ®¢ ¬¥­î
ld ix,array_user3 ; ¬ áᨢ ª®¬-áâப
ld b,0 ; áç¥â稪 ç¨á«  ¯ã­ªâ®¢
make_user_newline:
xor a
ld c,a ; á¡à. áç¥â稪 ¤«¨­ë ¯ã­ªâ 
dec a
ld (make_user_hot+1),a ; á¡à. ᪥­-ª®¤ ¡ãª¢ë
make_user_skip:
; ¯à®©â¨ ¯à®¡¥«ë ¢ ­ ç «¥ áâப¨
ld a,(de)
inc de
cp " "
jr z,make_user_skip
cp 9 ; Tab
jr z,make_user_skip
or a
jr nz,$+10
make_user_done:
ld (hl),-1 ; ª®­¥æ ®¯¨á â¥«ï
ret
make_user_done1:
xor a
ld (hl),a ; ª®­¥æ ¯ã­ªâ  ¢ ®¯¨á â¥«ì
inc hl
jr make_user_done
;
cp 0Dh ; ¯ãáâ ï áâப 
jr nz,$+5
inc de ; ¯à®©â¨ 0Ah
jr make_user_newline
;
cp ";" ; ª®¬¬¥­â à¨©
jr z,make_user_to_end ; ¯à®©â¨ ¤® ª®­æ  áâப¨
cp "-" ; à §¤¥«¨â¥«ì
jr nz,make_user_loc1
ld (hl),-2 ; à §¤¥«¨â¥«ì ¯ã­ªâ®¢
inc hl
inc b ; ++ç¨á«® ¯ã­ªâ®¢
ld a,b
cp max_user_puncts ; 26
jr nc,make_user_done
; ¯à®©â¨ ¤® ª®­æ  áâப¨
make_user_to_end:
ld a,(de)
inc de
or a ; ª®­¥æ ä ©« 
jr z,make_user_done
cp 0Dh ; ª®­¥æ áâப¨
jr nz,make_user_to_end
inc de ; ¯à®©â¨ 0Ah
jr make_user_newline ; ­  ­®¢ãî áâபã
;
make_user_loc1:
dec de
make_user_loc2:
ld a,(de)
inc de
cp "&" ; hot-¡ãª¢ 
jr nz,make_user_loc3
ld (hl),a
inc hl
inc c ; ++¤«¨­  ¯ã­ªâ 
ld a,(de)
ld (hl),a ; ¢ ®¯¨á â¥«ì
inc hl
inc c ; ++¤«¨­  ¯ã­ªâ 
push bc
call get_key_scancode ; ã§­ âì ᪥­-ª®¤ hot-¡ãª¢ë
ld a,c
pop bc
ld (make_user_hot+1),a ; ᪥­-ª®¤ ¡ãª¢ë
inc de
jr make_user_loc2
make_user_loc3:
or a ; ª®­¥æ ä ©« 
jr z,make_user_done1
cp 0Dh ; ª®­¥æ áâப¨
jr z,make_user_loc4
ld (hl),a ; ¢ ®¯¨á â¥«ì
inc hl
inc c ; ++¤«¨­  ¯ã­ªâ 
ld a,c
cp max_user_len ; 70
jr c,make_user_loc2
; ¯à®©â¨ ¤® ª®­æ  áâப¨
ld a,(de)
inc de
or a ; ª®­¥æ ä ©« 
jr z,make_user_done1
cp 0Dh ; ª®­¥æ áâப¨
jr z,make_user_loc4
jr $-9
make_user_loc4:
ld (hl),0 ; ª®­¥æ ¯ã­ªâ  ¢ ®¯¨á â¥«ì
inc hl
make_user_hot:
ld (hl),-1 ; ᪥­-ª®¤ ¢ ®¯¨á â¥«ì
inc hl
inc de ; ¯à®©â¨ 0Ah
push bc
call copy_user_string ; ᪮¯¨à. ª®¬-áâபã
pop bc
inc b ; ++ç¨á«® ¯ã­ªâ®¢
ld a,b
cp max_user_puncts ; 26
jr nc,make_user_done
jp make_user_newline ; ­  à §¡®à ­®¢®© áâப¨
;-----------------------------------------------------------
; ‘ª®¯¨à. ª®¬-áâபã á ¯¥à¥å. ­  á«¥¤. ­®¢ãî áâபã
; ix=¬ áᨢ ª®¬-áâப
; iy=¬ áᨢ 㪠§ â¥«¥© ­  ª®¬-áâப¨
;-----------------------------------------------------------
copy_user_string:
push ix
pop bc
ld (iy+0),c ; á®åà.  ¤à¥á áâப¨
inc iy
ld (iy+0),b
inc iy
ld c,0 ; áç¥â稪 ¤«¨­ë áâப¨
copy_usr_loop:
; ¯à®©â¨ ¢¥¤. ¯à®¡¥«ë
ld a,(de)
inc de
cp " "
jr z,copy_usr_loop
cp 9 ; Tab
jr z,copy_usr_loop
cp 0Dh ; ¯ãáâ ï áâப 
jr nz,copy_usr_loop1
inc de ; ¯à®©â¨ 0Ah
jr copy_usr_loop
;
copy_usr_loop1:
or a ; ª®­¥æ ä ©« 
jr z,copy_usr_done1
cp 0Dh ; ª®­¥æ áâப¨
jr nz,copy_usr_nxt
copy_usr_done:
inc de ; ¯à®©â¨ 0Ah
jr $+3
copy_usr_done1:
dec de
xor a
ld (ix+0),a ; ¢ ª®­¥æ ª®¬-áâப¨
inc ix
ret
copy_usr_nxt:
ld (ix+0),a
inc ix
inc c ; ++¤«¨­  ª®¬-áâப¨
ld a,c
cp max_user_len ; 70
jr nc,copy_usr_nxt1 ; ¯à®©â¨ ¤® ª®­æ  áâப¨
ld a,(de)
inc de
jr copy_usr_loop1
;
copy_usr_nxt1:
ld a,(de)
inc de
or a ; ª®­¥æ ä ©« 
jr z,copy_usr_done1
cp 0Dh ; ª®­¥æ áâப¨
jr nz,copy_usr_nxt1
jr copy_usr_done
;-------------------------------------------------
; ‘¨¬¢®«ì­ë¥ ª« ¢¨è¨ ®á­. ¯®«ï ª« ¢¨ âãàë
; ¢å®¤: a=hot-ª« ¢¨è 
; ¢ë室: c=᪥­-ª®¤ ª« ¢¨è¨
;-------------------------------------------------
get_key_scancode:
ld c,0 ; áç¥â稪 ᪥­-ª®¤ 
cp "ñ"
ret z
cp "ð"
ret z
cp "`"
ret z
cp "~"
ret z
cp "_"
jr z,get_key_scancod1+2
cp "à"
jr c,get_key_scancod1
cp "ï"+1
jp nc,get_key_scancod2
sub 50h
get_key_scancod1:
res 5,a
ld c,2
cp "1"
ret z
cp "!"
ret z
inc c
cp "2"
ret z
cp "@"
ret z
inc c
cp "3"
ret z
cp "#"
ret z
inc c
cp "4"
ret z
cp "$"
ret z
inc c
cp "5"
ret z
cp "%"
ret z
inc c
cp "6"
ret z
cp "^"
ret z
inc c
cp "7"
ret z
cp "&"
ret z
inc c
cp "8"
ret z
cp "*"
ret z
inc c
cp "9"
ret z
cp "("
ret z
inc c
cp "0"
ret z
cp ")"
ret z
inc c
cp "-"
ret z
cp "_"
ret z
inc c
cp "="
ret z
cp "+"
ret z
ld c,10h
cp "Q"
ret z
cp "‰"
ret z
inc c
cp "W"
ret z
cp ""
ret z
inc c
cp "E"
ret z
cp "“"
ret z
inc c
cp "R"
ret z
cp "Š"
ret z
inc c
cp "T"
ret z
cp "…"
ret z
inc c
cp "Y"
ret z
cp "<22>"
ret z
inc c
cp "U"
ret z
cp "ƒ"
ret z
inc c
cp "I"
ret z
cp "˜"
ret z
inc c
cp "O"
ret z
cp "™"
ret z
inc c
cp "P"
ret z
cp "‡"
ret z
inc c
cp "["
ret z
cp "{"
ret z
cp "•"
ret z
inc c
cp "]"
ret z
cp "}"
ret z
cp "š"
ret z
ld c,1Dh
cp "A"
ret z
cp "”"
ret z
inc c
cp "S"
ret z
cp ""
ret z
inc c
cp "D"
ret z
cp ""
ret z
inc c
cp "F"
ret z
cp "€"
ret z
inc c
cp "G"
ret z
cp "<22>"
ret z
inc c
cp "H"
ret z
cp "<22>"
ret z
inc c
cp "J"
ret z
cp "Ž"
ret z
inc c
cp "K"
ret z
cp ""
ret z
inc c
cp "L"
ret z
cp "„"
ret z
ld c,27h
cp "'"
ret z
cp "<22>"
ret z
ld c,2Ah
cp "Z"
ret z
cp "Ÿ"
ret z
inc c
cp "X"
ret z
cp "—"
ret z
inc c
cp "C"
ret z
cp ""
ret z
inc c
cp "V"
ret z
cp "Œ"
ret z
inc c
cp "B"
ret z
cp "ˆ"
ret z
inc c
cp "N"
ret z
cp ""
ret z
inc c
cp "M"
ret z
cp "œ"
ret z
inc c
cp ","
ret z
cp "<22>"
ret z
cp "<"
ret z
inc c
cp "."
ret z
cp "ž"
ret z
cp ">"
ret z
inc c
cp "/"
ret z
cp "."
ret z
cp "?"
ret z
ld c,35h
cp '\' ;
ret z
cp "|"
ret z
ld c,38h
cp " "
ret z
get_key_scancod2:
ld c,-1
ret

104
MOD0/VECTORS.ASM Executable file
View File

@ -0,0 +1,104 @@
; rst 00h
jp $+3
db -1
db -1
db -1
db -1
db -1
; RST 08h. ‚ë§®¢ <20>¨®á 
push af
ld a,0 ; ¢ª«. <20>‡“ <20>¨®á  ¢ 0-¥ ®ª­®
out (7Ch),a
pop af
ret
db -1
; RST 10h. ‚ë§®¢ „Ž‘- 
jp int10 ; fm.asm
db -1
db -1
db -1
db -1
db -1
; RST 18h. ‚ë§®¢ ¢¥ªâ®à®¢ ¤¥¢ ©á®¢
jp int18
db -1
db -1
db -1
db -1
db -1
; RST 20h. „à ©¢¥à ª« ¢ë ”Œ
jp KeybDrv
db -1
db -1
db -1
db -1
db -1
; RST 28h. ‚ë§®¢ ᯥª-ª®¤ 
push af
ld a,0 ; á®åà. page_spec
out (82h),a
pop af
ret
db -1
; RST 30h. „à ©¢¥à ¬ë誨 ”Œ
jp MouseDrv
db -1
db -1
db -1
db -1
db -1
;
; RST 38h. Main Interrupt
jp $+3
di
push iy
push ix
push hl
push de
push bc
push af
ex af,af'
exx
push hl
push de
push bc
push af
call main_interrupt
pop af
pop bc
pop de
pop hl
exx
ex af,af'
pop af
pop bc
pop de
pop hl
pop ix
pop iy
ei
reti
db -1,-1,-1,-1,-1,-1 ; ­  £à ­¨æã 0064h
;0064h
retn
db 0 ; 0066h (®â ­¥¬ áª. ¯à¥à뢠­¨ï ¢ IM0)
db 0
db 0
jp $-5
main_interrupt:
ld a,(CurILFl)
or a
call nz,PrnILCr ; á®äâ®¢ë© ªãàá®à
call show_clock ; ®â®¡à ¦¥­¨¥ ç á®¢ ¯ ­¥«¥©
di
ld a,(MouseFlg)
or a
call nz,Refresh ; ®¯à®á ¤à ©¢¥à  ¬ë誨
jp keyb_scan ; ®¯à®á ¤à ©¢¥à  ª« ¢ë
;================ Š®­¥æ ¡«®ª  ‚¥ªâ®à®¢ à¥áâ à⮢ =====================

30
MOD1/ABORT.Z80 Executable file
View File

@ -0,0 +1,30 @@
;ÉÍÍ Operation has been interrupted ÍÍ»
;º º
;º Do you really want to cancel it? º
;º º
;º Yes No º
;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
; ޝ¨á â¥«ì ®ª­  "<22>à¥à뢠­¨¥ ®¯¥à æ¨¨"
dial_abort:
dw 0D15h,0626h ; Yo,Xo,lenY,lenX
db "Operation has been interrupted",0 ; â¨â« ®ª­ 
;
db TextLine
dw 0203h ; Yo,Xo
db "Do you really want to cancel it?",0
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 0414h ; Yo,Xo
db " &No ",0 ; ¨¬ï ¡ãâ®­ 
db 2Fh ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmCancel ; ­®¬¥à ª®¬ ­¤ë
db 1 ; ª®­â¥ªáâ
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 040Eh ; Yo,Xo
db " &Yes ",0 ; ¨¬ï ¡ãâ®­ 
db 15h ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmOkey ; ­®¬¥à ª®¬ ­¤ë
db 0 ; ª®­â¥ªáâ
;
db -1 ; ª®­¥æ ®¯¨á â¥«ï

183
MOD1/BUFFERS.ASM Executable file
View File

@ -0,0 +1,183 @@
; <20> ¡®ç¨¥ ¡ãä¥àë
; Œ áª  ¨¬¥­ «¥¢®© ¯ ­¥«¨
mask_left_fname:
db "*.*",0,0,0,0,0,0,0,0,0
db 0
; Œ áª  ¨¬¥­ ¯à ¢®© ¯ ­¥«¨
mask_right_fname:
db "*.*",0,0,0,0,0,0,0,0,0
db 0
; <20>ãä¥àë ­¥ ࠧꥤ¨­ïâì, ¨á¯®«ì§ãîâáï ª ª ¡«®ª 512 ¡ ©â (§ ¯¨áì ini-ä ©« )
;
; ¡ãä¥à ¯ã⨠«¥¢®© ¯ ­¥«¨
buff_left:
db '\'
ds 255
; ¡ãä¥à ¯ã⨠¯à ¢®© ¯ ­¥«¨
buff_right:
db '\'
ds 255
; ⥪. á¨á⥬­ë© ¯ãâì
save_disk:
db 0
save_path:
ds 256
;-------------------------------------------------
; Œ áᨢ 㪠§ â¥«¥© ­  § ¯¨á¨ «¥¢®£® ª â «®£ 
;-------------------------------------------------
left_pointers:
ds 512*2 ; ¬ ªá. 512 § ¯¨á¥© ¯ ¯ª¨
;-------------------------------------------------
; Œ áᨢ 㪠§ â¥«¥© ­  § ¯¨á¨ ¯à ¢®£® ª â «®£ 
;-------------------------------------------------
right_pointers:
ds 512*2
; <20>ãä¥à ¨áâ®à¨¨ ª®¬ ­¤ ª®¬-áâப¨
history_buff:
ds history_size ; 128 ;256
; "¯¥à¥¢ «®ç­ë©" ¡ãä¥à 梥⮢
temp_colors:
ds len_color_array
; ‘âàãªâãà  ª®¬ ­¤­®© áâப¨
ComLineBuff:
db max_len_comline ;+0 254 ¬ ªá. ç¨á«® ¢¢®¤. ᨬ¢®«®¢
db 0 ;+1 ä« £ ReadyString
db 0 ;+2 X ⥪. ¯®«®¦. ªãàá®à  ¢ ¯à¥¤¥« å áâப¨
db 0 ;+3 X ᬥé. áâப¨ §  «¥¢ë© ªà © (¢ ᨬ¢®« å)
db 0 ;+4 ç¨á«® ¢¢¥¤¥­­ëå ᨬ¢®«®¢
ds max_len_comline+1 ;+5 áâப  ¢¢®¤ 
; ‘âàãªâãà  áâப¨ ¢¢®¤  "Copy"
input_line_copy:
db max_len_comline ;+0 ¬ ªá. ç¨á«® ¢¢®¤. ᨬ¢®«®¢
db 0 ;+1 ä« £ ReadyString
db 0 ;+2 X ⥪. ¯®«®¦. ªãàá®à  ¢ ¯à¥¤¥« å áâப¨
db 0 ;+3 X ᬥé. áâப¨ §  «¥¢ë© ªà © (¢ ᨬ¢®« å)
db 0 ;+4 ç¨á«® ¢¢¥¤¥­­ëå ᨬ¢®«®¢ (Inp.Symb)
ds max_len_comline+1 ;+5 áâப  ¢¢®¤ 
; ‘âàãªâãà  áâப¨ ¢¢®¤  "Make directory"
input_line_makedir:
db max_len_comline ;+0 ¬ ªá. ç¨á«® ¢¢®¤. ᨬ¢®«®¢
db 0 ;+1 ä« £ ReadyString
db 0 ;+2 X ⥪. ¯®«®¦. ªãàá®à  ¢ ¯à¥¤¥« å áâப¨
db 0 ;+3 X ᬥé. áâப¨ §  «¥¢ë© ªà © (¢ ᨬ¢®« å)
db 0 ;+4 ç¨á«® ¢¢¥¤¥­­ëå ᨬ¢®«®¢ (Inp.Symb)
ds max_len_comline+1 ;+5 áâப  ¢¢®¤ 
; ‘âàãªâãà  áâப¨ ¢¢®¤  "Rename/Remove"
input_line_rename:
db max_len_comline ;+0 ¬ ªá. ç¨á«® ¢¢®¤. ᨬ¢®«®¢
db 0 ;+1 ä« £ ReadyString
db 0 ;+2 X ⥪. ¯®«®¦. ªãàá®à  ¢ ¯à¥¤¥« å áâப¨
db 0 ;+3 X ᬥé. áâப¨ §  «¥¢ë© ªà © (¢ ᨬ¢®« å)
db 0 ;+4 ç¨á«® ¢¢¥¤¥­­ëå ᨬ¢®«®¢ (Inp.Symb)
ds max_len_comline+1 ;+5 áâப  ¢¢®¤ 
; ‘âàãªâãà  áâப¨ ¢¢®¤  ¤ âë
InpDateStr:
db 10 ;+0 ¬ ªá. ç¨á«® ¢¢®¤. ᨬ¢®«®¢
db 0 ;+1 ä« £ ReadyString
db 0 ;+2 X ⥪. ¯®«®¦. ªãàá®à  ¢ ¯à¥¤¥« å áâப¨
db 0 ;+3 X ᬥé. áâப¨ §  «¥¢ë© ªà © (¢ ᨬ¢®« å)
db 0 ;+4 ç¨á«® ¢¢¥¤¥­­ëå ᨬ¢®«®¢ (Inp.Symb)
db " ",0 ;+5 áâப  ¢¢®¤ 
; ‘âàãªâãà  áâப¨ ¢¢®¤  ¢à¥¬¥­¨
InpTimeStr:
db 8 ;+0 ¬ ªá. ç¨á«® ¢¢®¤. ᨬ¢®«®¢
db 0 ;+1 ä« £ ReadyString
db 0 ;+2 X ⥪. ¯®«®¦. ªãàá®à  ¢ ¯à¥¤¥« å áâப¨
db 0 ;+3 X ᬥé. áâப¨ §  «¥¢ë© ªà © (¢ ᨬ¢®« å)
db 0 ;+4 ç¨á«® ¢¢¥¤¥­­ëå ᨬ¢®«®¢ (Inp.Symb)
db " ",0 ;+5 áâப  ¢¢®¤ 
;-----------------------------------------------------------
; Œ áᨢ ï祥ª CheckBox ®ª­  "Interface settings"
;-----------------------------------------------------------
interface_ceil0:
db false ; Highlight files
interface_ceil1:
db false ; Mouse
interface_ceil2:
db true ; Clock in panels
interface_ceil3:
db false ; Select folders
interface_ceil4:
db false ; Show line summary information
interface_ceil5:
db false ; Show sort mode letter
interface_ceil6:
db false ; Ins moves down
interface_ceil7:
db false ; Show system screen
interface_ceil8:
db false ; Enable Home/End in comline
;-----------------------------------------------------------
; Œ áᨢ ï祥ª CheckBox ®ª­  "Confirmations"
;-----------------------------------------------------------
confirm_ceil0:
db true ; Copy (¯¥à¥§ ¯¨áì)
confirm_ceil1:
db true ; Move (¯¥à¥§ ¯¨áì)
confirm_ceil2:
db true ; Delete
confirm_ceil3:
db true ; Delete non-empty folders
confirm_ceil4:
db true ; Exit
;-----------------------------------------------------------
; Œ á¨¢ ï祥ª CheckBox ®ª­  "Attributes"
;-----------------------------------------------------------
attrib_ceil0:
db false ; Read only
attrib_ceil1:
db false ; Archives
attrib_ceil2:
db false ; Hidden
attrib_ceil3:
db false ; System
;
attrib_ceil4:
db false ; Process subfolders

27
MOD1/CHDISK.Z80 Executable file
View File

@ -0,0 +1,27 @@
; â ¡«¨æ  «¥¢®£® ¬¥­î ¢ë¡®à  ¤¨áª®¢
table_left_drive:
dw 0504h ; Y/X ¯®«®¦. ¬¥­î
dw title_menu_drive ;  ¤à¥á § £®«®¢ª  ®ª­ 
dw work_buffer ;  ¤à¥á ®¯¨á â¥«ï ¬¥­î
; â ¡«¨æ  ¯à ¢®£® ¬¥­î ¢ë¡®à  ¤¨áª®¢
table_right_drive:
dw 052Ch ; Y/X ¯®«®¦. ¬¥­î
dw title_menu_drive ;  ¤à¥á § £®«®¢ª  ®ª­ 
dw work_buffer ;  ¤à¥á ®¯¨á â¥«ï ¬¥­î
; ‡ £®«®¢®ª ¬¥­î ¢ë¡®à  ¤¨áª®¢
; <¤«¨­  áâப¨>, <áâப >
title_menu_drive:
db 5,"Drive"
; â¨¯ë ¤¨áª®¢
rem_drive:
db "removable",0
fix_drive:
db "fixed",0
cd_drive:
db "cd-rom",0
ram_drive:
db "ram-disk",0

55
MOD1/COLOR.ASM Executable file
View File

@ -0,0 +1,55 @@
;////////////////////////////////////////////////////////////////////////
;
; ‚ë§®¢ ®ª­  ­ áâனª¨ 梥⮢ (Options->Colors)
;
;////////////////////////////////////////////////////////////////////////
setup_colors:
; ¬ áᨢ 梥⮢ ¢® ¢à¥¬. ¡ãä¥à
ld hl,color_array ; ®âªã¤ 
ld de,tmp_color_list ; ªã¤  (¢à¥¬. ¡ãä¥à)
ld bc,len_color_array ; à §¬¥à ¬ áᨢ 
ldir
; ¢ë¢®¤ ®ª­ 
ld hl,dial_colors ; ®¯¨á â¥«ì ®ª­ 
call DialogW
cp evCommand ; ᮡë⨥ "ª®¬ ­¤ "
jr nz,set_colors_done
ld a,(hl) ;+1 what
cp cmOkey ; "Set"
jr nz,set_colors_done
; 梥â. ­ áâனª¨ ¢ ¯à®¬¥¦. ¡ãä¥à
ld hl,tmp_color_list ; ®âªã¤ 
ld de,temp_colors ; ªã¤  (¢à¥¬. ¡ãä¥à)
ld bc,len_color_array ; à §¬¥à ¬ áᨢ 
ldir
set_colors_done:
; <20>ਬ¥­¨âì ­ áâனª¨ "Colors"
call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
ret z
ld hl,what ; ¯®«¥ ᮡë⨩
ld a,(hl)
cp evCommand
ret nz
inc hl
ld a,(hl)
cp cmDefault
jr nz,$+7
ld hl,default_colors ; ¬ áᨢ 梥⮢ ¯®-㬮«ç ­¨î
jr $+8
cp cmOkey
ret nz
; ¯à¨¬¥­¨âì æ¢¥â. ­ áâனª¨
ld hl,temp_colors ; ®âªã¤ 
ld de,color_array ; ªã¤ 
ld bc,len_color_array ; à §¬¥à ¬ áᨢ 
ldir
call set_colors ; ­ áâனª  梥⮢ ®¡®«®çª¨
; ®¡­®¢¨âì æ¢¥â  ¯ ­¥«¥©
;apply_colors__: ; <- ¨§ set_attrib
call change_panel ; ᬥ­¨âì ¯ ­¥«ì
call A20FC ; ®¡­®¢¨âì ¯ ­¥«ì
call change_panel
call A20FC
call print_compath ; ®¡­®¢¨âì ª®¬-áâபã
call print_keybar ; ®¡­®¢¨âì key-¡ à
jp show_pointer ; ®¡­®¢¨âì 㪠§ â¥«ì

187
MOD1/COLOR.Z80 Executable file
View File

@ -0,0 +1,187 @@
;/////////////////////////////////////////////////////////////////////
;
; ޝ¨á â¥«ì ®ª­  ­ áâனª¨ 梥⮢
;
;/////////////////////////////////////////////////////////////////////
dial_colors:
dw 0309h,153Eh ; Yo,Xo,lenY,lenX
db "Colors",0
;
db PResident1
;
db ListBox
dw 0219h,0B10h ; Yo,Xo,lenY,lenX
db "Group &items",0
db 17h ; ᪥­-ª®¤ hot-¡ãª¢ë
db 1 ; ª®­â¥ªáâ
dw ItemList1 ;  ¤à¥á ᯨ᪠
;
db PResident2
dw tmp_color_list
;
db TestColor
dw 0F1Ah ; Yo,Xo
dw tmp_color_list
db "Text Text Text Text",0
;
db PalleteBox
dw 022Eh,0404h ; Yo,Xo,lenY,lenX
db "&Foreground",0
db 20h ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db 2 ; ª®­â¥ªáâ
db 0Fh ; ¬ áª  梥â 
dw tmp_color_list ; ï祩ª  ⥪. 梥â 
;
db PalleteBox
dw 0C2Eh,0204h ; Yo,Xo,lenY,lenX
db "&Background",0
db 2Eh ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db 3 ; ª®­â¥ªáâ
db 0F0h ; ¬ áª  ä®­ 
dw tmp_color_list ; ï祩ª  ⥪. 梥â 
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 1315h ; Yo,Xo
db "[ S&et ]",0 ; ¨¬ï ¡ãâ®­ 
db 12h ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmOkey ; ­®¬¥à ª®¬ ­¤ë
db 4 ; ª®­â¥ªáâ
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 131Fh ; Yo,Xo
db "[ Ca&ncel ]",0 ; ¨¬ï ¡ãâ®­ 
db 2Fh ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmCancel ; ­®¬¥à ª®¬ ­¤ë
db 5 ; ª®­â¥ªáâ
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 1004h ; Yo,Xo
db "[ &Default colors ]",0 ; ¨¬ï ¡ãâ®­ 
db 1Fh ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmDefault ; ­®¬¥à ª®¬ ­¤ë
db 6 ; ª®­â¥ªáâ
;
db ListBox
dw 0202h,0C12h ; Yo,Xo,lenY,lenX
db "Color &groups",0
db 21h ; ᪥­-ª®¤ hot-¡ãª¢ë
db 0 ; ª®­â¥ªáâ
dw GroupList ;  ¤à¥á ᯨ᪠
;
db -1 ; ª®­¥æ ®¯¨á â¥«ï
; ‘¯¨á®ª ListBox-  "Color groups"
GroupList:
db "Panel",0Dh
db "Horizontal menu",0Dh
db "Menu",0Dh
db "Key bar",0Dh
db "Command line",0Dh
db "Dialog",0Dh
db "Viewer",0Dh
db "Editor",0Dh
db "Help",0Dh
db "Miscelions",0Dh
db "Files highlighting",0Dh
db 0
ItemTab:dw ItemList1, tmp_color_list ; Panel
dw ItemList2, color_list2 ; Horizontal menu
dw ItemList3, color_list3 ; Menu
dw ItemList4, color_list4 ; Key bar
dw ItemList5, color_list5 ; Command line
dw ItemList6, color_list6 ; Dialog
dw ItemList7, color_list7 ; Viewer
dw ItemList8, color_list8 ; Editor
dw ItemList9, color_list9 ; Help
dw ItemList10, color_list10 ; Miscelions
dw ItemList11, color_list11 ; Files highlighting
; <Panel>
ItemList1:
db "Normal cursor",0Dh ;+0
db "Selected cursor",0Dh ;+1
db "Normal text",0Dh ;+2
db "Selected text",0Dh ;+3
db "Selected title",0Dh ;+4
db "Column title",0Dh ;+5
db "Selected info",0Dh ;+6
db "Highlighted info",0Dh ;+7
db "Info names",0Dh ;+8
db 0
; <Horizontal menu>
ItemList2:
db "Normal text",0Dh ;+12
db "Highlighted text",0Dh ;+13
db "Hot keys",0Dh ;+14
db 0
; <Menu>
ItemList3:
db "Normal text",0Dh ;+15
db "Highlighted text",0Dh ;+16
db "Hot keys",0Dh ;+17
db 0
; <Key bar>
ItemList4:
db "Key names",0Dh ;+20
db "Key numbers",0Dh ;+21
db 0
; <Command line>
ItemList5:
db "Normal text",0Dh ;+22
db 0
; <Dialog>
ItemList6:
db "Normal text",0Dh ;+24
db "Hot keys",0Dh ;+25
db "Selected title",0Dh ;+26
db "Info message",0Dh ;+27
db "Warning message",0Dh ;+28
db "ListBox",0Dh ;+29
db "LB highlight",0Dh ;+30
db "LB highlight hd",0Dh ;+31
db "LB scroll bar",0Dh ;+32
db "Text input",0Dh ;+33
db "Selected buttons",0Dh ;+34
db "Sel.butt.Wrn/Err",0Dh ;+35
db 0
; <Viewer>
ItemList7:
db "Normal text",0Dh ;+39
db "Selected text",0Dh ;+40
db "Status line",0Dh ;+41
db "Scrolling arrows",0Dh ;+42
db 0
; <Edit>
ItemList8:
db "Normal text",0Dh ;+43
db "Selected text",0Dh ;+44
db "Status line",0Dh ;+45
db 0
; <Help>
ItemList9:
db "Normal text",0Dh ;+46
db "Highlighted text",0Dh ;+47
db "Title",0Dh ;+48
db "Scrollbar",0Dh ;+49
db 0
; <Miscelions>
ItemList10:
db "Process line",0Dh ;+50
db "Clock",0Dh ;+51
db 0
; <Files highlighting>
ItemList11:
db "Folder",0Dh ;+
db "Execution",0Dh ;+
db "Archive",0Dh ;+
db "R/o, system",0Dh ;+
db "Hidden",0Dh ;+
db "Spectrum",0Dh ;+
db 0

1225
MOD1/COMLINE.ASM Executable file

File diff suppressed because it is too large Load Diff

54
MOD1/CONFIRM.ASM Executable file
View File

@ -0,0 +1,54 @@
;////////////////////////////////////////////////////////////////////////
;
; ‚ë§®¢ ®ª­  ­ áâனª¨ ¯®¤â¢¥à¦¤¥­¨© (Options->Confirmations)
;
;////////////////////////////////////////////////////////////////////////
set_confirm:
; ­ áâநâì ¬ áᨢ ï祥ª CheckBox- 
call prep_confirm_ceils
; ¢ë¢®¤ ®ª­ 
ld hl,win_dial_confirm ; ®¯¨á â¥«ì ®ª­ 
call DialogW
cp evCommand ; ᮡë⨥ "ª®¬ ­¤ "
ret nz
ld a,(hl) ;+1 what
cp cmOkey ; "Yes"
ret nz
; ‘®åà ­¨âì ­ áâனª¨
ld hl,confirm_ceil0 ; ­ ç «® ¬ áᨢ  ï祥ª
ld a,(hl)
ld (copy_overwrite),a ; copy
inc hl
ld a,(hl)
;ld (),a ; move
inc hl
ld a,(hl)
ld (del_confirm),a ; delete
inc hl
ld a,(hl)
ld (flag_del_non_empty),a ; delete non-empty folders
inc hl
ld a,(hl)
ld (confirm_quit),a ; exit
ret
; <20>®¤£®â®¢ª  ¬ áᨢ  ï祥ª CheckBox- 
prep_confirm_ceils:
ld hl,confirm_ceil0 ; ­ ç «® ¬ áᨢ  ï祥ª
ld a,false
ld a,(copy_overwrite) ; copy
ld (hl),a
inc hl
;ld a,() ; move
ld (hl),a
inc hl
ld a,(del_confirm) ; delete
ld (hl),a
inc hl
ld a,(flag_del_non_empty) ; delete non-empty folders
ld (hl),a
inc hl
ld a,(confirm_quit) ; exit
ld (hl),a
ret

55
MOD1/CONFIRM.Z80 Executable file
View File

@ -0,0 +1,55 @@
;ÉÍÍÍÍÍÍÍÍ Confirmations ÍÍÍÍÍÍÍÍÍ»
;º º
;º [x] Copy º
;º [x] Move º
;º [x] Delete º
;º [x] Delete non-empty folders º
;º [x] Exit º
;º º
;ºÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĺ
;º [ Ok ] [ Cancel ] º
;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
; ޝ¨á â¥«ì ®ª­  ­ áâனª¨ ¯®¤â¢¥à¦¤¥­¨©
win_dial_confirm:
dw 0617h,0B22h ; Yo,Xo,lenY,lenX
db "Confirmations",0 ; â¨â« ®ª­ 
;
db HLine
dw 0801h ; Yo,Xo
db 32 ; ¤«¨­  «¨­¨¨
db "Ä" ; ᨬ¢®« § ¯®«­¥­¨ï
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 0908h ; Yo,Xo
db "[ &Ok ]",0 ; ¨¬ï ¡ãâ®­ 
db 18h ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmOkey ; ­®¬¥à ª®¬ ­¤ë
db 5 ; ª®­â¥ªáâ
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 0910h ; Yo,Xo
db "[ Ca&ncel ]",0 ; ¨¬ï ¡ãâ®­ 
db 2Fh ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmCancel ; ­®¬¥à ª®¬ ­¤ë
db 6 ; ª®­â¥ªáâ
;
db ClsCheckBox ; ­®¬¥à ®¡ê¥ªâ 
dw 0202h,051Ch ; Yo,Xo,lenY,lenX (á "[x] ")
db "&Copy",0 ; ¨¬ï í«¥¬¥­â 
db 2Ch ; ᪥­-ª®¤ hot-¡ãª¢ë
dw confirm_ceil0 ;  ¤à¥á ï祩ª¨
db "&Move",0 ; ¨¬ï í«¥¬¥­â 
db 30h ; ᪥­-ª®¤ hot-¡ãª¢ë
dw confirm_ceil1 ;  ¤à¥á ï祩ª¨
db "&Delete",0 ; ¨¬ï í«¥¬¥­â 
db 1Fh ; ᪥­-ª®¤ hot-¡ãª¢ë
dw confirm_ceil2 ;  ¤à¥á ï祩ª¨
db "Delete non-empty &folders",0 ; ¨¬ï í«¥¬¥­â 
db 20h ; ᪥­-ª®¤ hot-¡ãª¢ë
dw confirm_ceil3 ;  ¤à¥á ï祩ª¨
db "E&xit",0 ; ¨¬ï í«¥¬¥­â 
db 2Bh ; ᪥­-ª®¤ hot-¡ãª¢ë
dw confirm_ceil4 ;  ¤à¥á ï祩ª¨
db 0 ; ª®­¥æ ª« áâ¥à 
;
db -1 ; ª®­¥æ ®¯¨á â¥«ï

103
MOD1/COPY.Z80 Executable file
View File

@ -0,0 +1,103 @@
;ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ Copy ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
;º º
;º Copy FILENAME.EXT to: º
;º °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° º
;ºÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĺ
;º [ Copy ] [ Cancel ] º
;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
; ޝ¨á â¥«ì ­ ç «ì­®£® ®ª­  ª®¯¨à®¢ ­¨ï
dial_copy:
dw 0902h,074Ch ; Yo,Xo,lenY,lenX
db "Copy",0 ; â¨â« ®ª­ 
;
db TextLine
dw 0202h ; Yo,Xo
db "Copy "
copy_name:
db "FILENAME.EXT"," to:",0 ; ¨¬ï ä ©«  (®áâ â®ª § ¯. ¯à®¡¥« ¬¨)
;
db HLine
dw 0401h ; Yo,Xo
db 74 ; ¤«¨­  «¨­¨¨
db "Ä" ; ᨬ¢®« § ¯®«­¥­¨ï
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 051Bh ; Yo,Xo
db "[ &Copy ]",0 ; ¨¬ï ¡ãâ®­ 
db 2Ch ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmOkey ; ­®¬¥à ª®¬ ­¤ë
db 1 ; ª®­â¥ªáâ
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 0527h ; Yo,Xo
db "[ Ca&ncel ]",0 ; ¨¬ï ¡ãâ®­ 
db 2Fh ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmCancel ; ­®¬¥à ª®¬ ­¤ë
db 2 ; ª®­â¥ªáâ
;
db InputLine ; å à ªâ¥à ®¡ê¥ªâ 
dw 0302h ; Yo,Xo
db 72 ; ¤«¨­  áâப¨
db 0 ; ª®­â¥ªáâ
dw input_line_copy ; ¡ãä¥à áâப¨ ¢¢®¤ 
;
db -1 ; ª®­¥æ ®¯¨á â¥«ï
;ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ Copy ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
;º º
;º Copying the file º
;º FILENAME.EXT to: º
;º A:\FILENAME.EXT º
;º °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° º
;ºÄÄÄÄÄÄÄÄÄÄ Total: 0,000,000,000 ÄÄÄÄÄÄÄÄÄĺ
;º °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° º
;º º
;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
; ޝ¨á â¥«ì ®ª­  ¯à®æ¥áá  ª®¯¨à®¢ ­¨ï
dial_copy_total_process:
dw 0912h,0A2Ch ; Yo,Xo,lenY,lenX
db "Copy",0 ; â¨â« ®ª­ 
;
db TextLine
dw 0202h ; Yo,Xo
db "Copying the file",0
;
db TextLine
dw 0302h ; Yo,Xo
copy_name1:
db "FILENAME.EXT"," to:",0 ; ¨¬ï ä ©«  (®áâ â®ª § ¯. ¯à®¡¥« ¬¨)
;
db TextLine
dw 0402h ; Yo,Xo
copy_name2:
db 'A:\FILENAME.EXT ',0 ; 34 ¡ ©â 
;
db HLine
dw 0601h ; Yo,Xo
db 42 ; ¤«¨­  «¨­¨¨
db "Ä" ; ᨬ¢®« § ¯®«­¥­¨ï
;
db TextLine
dw 060Bh ; Yo,Xo
db " Total: "
db "0,000,000,000 ",0
; 2-ï «¨­¥©ª  (®¡é ï)
db ProcesLine
dw 0702h ; Y,X ¯®«®¦.
db 40 ; ¤«¨­  «¨­¥©ª¨
dw max_file_bytes1 ;  ¤à¥á ï祩ª¨ á MAX ç¨á«®¬
dw curr_bytes1 ;  ¤à¥á ï祩ª¨ á ⥪. ç¨á«®¬
subrout_process1:
dw copy_file ; á®åà.  ¤à¥á ¯/¯à®£à ¬¬ë ¯à®æ¥áá 
; 1-ï «¨­¥©ª 
db ProcesLine
dw 0502h ; Y,X ¯®«®¦.
db 40 ; ¤«¨­  «¨­¥©ª¨
dw max_file_bytes ;  ¤à¥á ï祩ª¨ á MAX ç¨á«®¬
dw curr_bytes ;  ¤à¥á ï祩ª¨ á ⥪. ç¨á«®¬
subrout_process:
dw copy_file ; á®åà.  ¤à¥á ¯/¯à®£à ¬¬ë ¯à®æ¥áá 
;
db -1 ; ª®­¥æ ®¯¨á â¥«ï

57
MOD1/DELETE.Z80 Executable file
View File

@ -0,0 +1,57 @@
;ÉÍÍÍÍÍÍÍÍÍÍ Delete ÍÍÍÍÍÍÍÍÍ»
;º º
;º Do you wish to delete º
;º º
;º XXXXXXXXXXXX º
;º º
;º Delete Cancel º
;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
dial_delete:
dw 091Ah,081Dh ; Yo,Xo,lenY,lenX
db "Delete",0 ; â¨â« ®ª­ 
;
db TextLine
dw 0204h ; Yo,Xo
db "Do you wish to delete",0
;
db TextLine
dw 0408h ; Yo,Xo
delete_name:
db "FILENAME.EXT",0 ; ¨¬ï ä ©« /¯ ¯ª¨
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 060Fh ; Yo,Xo
db " Ca&ncel ",0 ; ¨¬ï ¡ãâ®­ 
db 2Fh ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmCancel ; ­®¬¥à ª®¬ ­¤ë
db 1 ; ª®­â¥ªáâ
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 0606h ; Yo,Xo
db " &Delete ",0 ; ¨¬ï ¡ãâ®­ 
db 1Fh ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmOkey ; ­®¬¥à ª®¬ ­¤ë
db 2 ; ª®­â¥ªáâ
;
db -1 ; ª®­¥æ ®¯¨á â¥«ï
;ÉÍÍÍÍÍÍÍÍÍÍÍÍÍ Delete ÍÍÍÍÍÍÍÍÍÍÍÍÍ»
;º Deleting the file or folder º
;º XXXXXXXXXXXX º
;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
dial_delete_current:
dw 0B16h,0424h ; Yo,Xo,lenY,lenX
db "Delete",0 ; â¨â« ®ª­ 
;
db TextLine
dw 0105h ; Yo,Xo
db "Deleting the file or folder",0
;
db TextLine
dw 020Ch ; Yo,Xo
delete_name1:
db "FILENAME.EXT",0 ; ¨¬ï ä ©« /¯ ¯ª¨
;
db -1 ; ª®­¥æ ®¯¨á â¥«ï

449
MOD1/DIALERR.Z80 Executable file
View File

@ -0,0 +1,449 @@
; ޝ¨á â¥«¨ ®ª®­ ®è¨¡®ª ®¯¥à æ¨© á ä ©« ¬¨/¯ ¯ª ¬¨
;ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ Error ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
;º º
;º Cannot copy FILENAME.EXT to: º
;º | A:\FILENAME.EXT | º
;º º
;º Retry Skip Skip all Cancel º
;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
; ޝ¨á â¥«ì ®ª­  "Žè¨¡ª  ª®¯¨à®¢ ­¨ï"
dial_error_copy:
dw 0A12h,072Bh ; Yo,Xo,lenY,lenX
db "Error",0 ; â¨â« ®ª­ 
;
db TextLine
dw 0208h ; Yo,Xo
db "Cannot "
dial_error_op:
db "copy "
copy_name3:
db "FILENAME.EXT"," to:",0 ; ¨¬ï ä ©«  (®áâ â®ª § ¯. ¯à®¡¥« ¬¨)
;
db TextLine
dw 0305h ; Yo,Xo
copy_name4:
db 'A:\FILENAME.EXT ',0 ; 34 ¡ ©â 
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 050Dh ; Yo,Xo
db " &Skip ",0 ; ¨¬ï ¡ãâ®­ 
db 1Eh ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmSkip ; ­®¬¥à ª®¬ ­¤ë
db 1 ; ª®­â¥ªáâ
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 0513h ; Yo,Xo
db " S&kip all ",0 ; ¨¬ï ¡ãâ®­ 
db 24h ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmSkipAll ; ­®¬¥à ª®¬ ­¤ë
db 2 ; ª®­â¥ªáâ
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 051Dh ; Yo,Xo
db " Ca&ncel ",0 ; ¨¬ï ¡ãâ®­ 
db 2Fh ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmCancel ; ­®¬¥à ª®¬ ­¤ë
db 3 ; ª®­â¥ªáâ
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 0506h ; Yo,Xo
db " &Retry ",0 ; ¨¬ï ¡ãâ®­ 
db 13h ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmOkey ; ­®¬¥à ª®¬ ­¤ë
db 0 ; ª®­â¥ªáâ
;
db -1 ; ª®­¥æ ®¯¨á â¥«ï
;ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ Warning ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
;º º
;º File already exists º
;º | A:\TEMP\BP.EXE | º
;ºÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĺ
;º New 496978 01.10.92 18:00:00 º
;º Existing 27921 21.06.04 11:23:34 º
;ºÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĺ
;º º
;º Overwrite All Skip Skip all Append Cancel º
;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
; ޝ¨á â¥«ì ®ª­  "” ©« 㦥 áãé¥áâ¢ã¥â"
dial_existing:
dw 090Eh,0B34h ; Yo,Xo,lenY,lenX
db "Warning",0 ; â¨â« ®ª­ 
;
db TextLine
dw 0210h ; Yo,Xo
db "File already exists",0
;
db TextLine
dw 0308h ; Yo,Xo
exists_name:
db 'A:\TEMP\BP.EXE ',0 ; 34 ¡ ©â 
;
db TextLine
dw 0502h ; Yo,Xo
db "New "
exists_size:
db " 496978" ; à §¬¥à ä ©« 
db " "
exists_date:
db "01.10.92" ; ¤ â 
db " "
exists_time:
db "18:00:00",0 ; ¢à¥¬ï
;
db TextLine
dw 0602h ; Yo,Xo
db "Existing "
exists_size1:
db " 27921" ; à §¬¥à ä ©« 
db " "
exists_date1:
db "21.06.04" ; ¤ â 
db " "
exists_time1:
db "11:23:34",0 ; ¢à¥¬ï
;
db HLine
dw 0401h ; Yo,Xo
db 50 ; ¤«¨­  «¨­¨¨
db "Ä" ; ᨬ¢®« § ¯®«­¥­¨ï
;
db HLine
dw 0701h ; Yo,Xo
db 50 ; ¤«¨­  «¨­¨¨
db "Ä" ; ᨬ¢®« § ¯®«­¥­¨ï
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 090Dh ; Yo,Xo
db " &All ",0 ; ¨¬ï ¡ãâ®­ 
db 1Dh ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmAll ; ­®¬¥à ª®¬ ­¤ë
db 0 ; ª®­â¥ªáâ
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 0912h ; Yo,Xo
db " &Skip ",0 ; ¨¬ï ¡ãâ®­ 
db 1Eh ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmSkip ; ­®¬¥à ª®¬ ­¤ë
db 1 ; ª®­â¥ªáâ
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 0918h ; Yo,Xo
db " S&kip all ",0 ; ¨¬ï ¡ãâ®­ 
db 24h ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmSkipAll ; ­®¬¥à ª®¬ ­¤ë
db 2 ; ª®­â¥ªáâ
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 0922h ; Yo,Xo
db " A&ppend ",0 ; ¨¬ï ¡ãâ®­ 
db 19h ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmAppend ; ­®¬¥à ª®¬ ­¤ë
db 0 ; ª®­â¥ªáâ
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 092Ah ; Yo,Xo
db " Ca&ncel ",0 ; ¨¬ï ¡ãâ®­ 
db 2Fh ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmCancel ; ­®¬¥à ª®¬ ­¤ë
db 3 ; ª®­â¥ªáâ
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 0902h ; Yo,Xo
db " &Overwrite ",0 ; ¨¬ï ¡ãâ®­ 
db 18h ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmOkey ; ­®¬¥à ª®¬ ­¤ë
db 0 ; ª®­â¥ªáâ
;
db -1 ; ª®­¥æ ®¯¨á â¥«ï
;ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ Error ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
;º º
;º Cannot create the folder º
;º | FILENAME.EXT | º
;º º
;º Retry Cancel º
;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
; ޝ¨á â¥«ì ®ª­  "Žè¨¡ª  á®§¤ ­¨ï ¯ ¯ª¨"
dial_error_make_folder:
dw 0A17h,0728h ; Yo,Xo,lenY,lenX
db "Error",0 ; â¨â« ®ª­ 
;
db TextLine
dw 0207h ; Yo,Xo
db "Cannot create the folder",0
;
db TextLine
dw 0302h ; Yo,Xo
create_name:
db 'A:\..TVISION\SOURCES\LMDTOOLS\TEMP',0 ; 34 ¡ ©â 
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 0514h ; Yo,Xo
db " Ca&ncel ",0 ; ¨¬ï ¡ãâ®­ 
db 2Fh ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmCancel ; ­®¬¥à ª®¬ ­¤ë
db 1 ; ª®­â¥ªáâ
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 050Ch ; Yo,Xo
db " &Retry ",0 ; ¨¬ï ¡ãâ®­ 
db 13h ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmOkey ; ­®¬¥à ª®¬ ­¤ë
db 0 ; ª®­â¥ªáâ
;
db -1 ; ª®­¥æ ®¯¨á â¥«ï
;ÉÍÍÍÍÍÍÍÍÍÍÍÍÍ Delete ÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
;º º
;º Cannot delete the file º
;º FILENAME.EXT º
;º º
;º Retry Skip Skip all Cancel º
;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
; ޝ¨á â¥«ì ®ª­  Žè¨¡ª¨ 㤠«¥­¨ï
dial_error_delete:
dw 0A15h,0725h ; Yo,Xo,lenY,lenX
db "Delete",0 ; â¨â« ®ª­ 
;
db TextLine
dw 0207h ; Yo,Xo
db "Cannot delete the file",0
;
db TextLine
dw 030Ch ; Yo,Xo
delete_name2:
db "FILENAME.EXT",0
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 050Ah ; Yo,Xo
db " &Skip ",0 ; ¨¬ï ¡ãâ®­ 
db 1Eh ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmSkip ; ­®¬¥à ª®¬ ­¤ë
db 1 ; ª®­â¥ªáâ
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 0510h ; Yo,Xo
db " S&kip all ",0 ; ¨¬ï ¡ãâ®­ 
db 24h ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmSkipAll ; ­®¬¥à ª®¬ ­¤ë
db 2 ; ª®­â¥ªáâ
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 051Ah ; Yo,Xo
db " Ca&ncel ",0 ; ¨¬ï ¡ãâ®­ 
db 2Fh ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmCancel ; ­®¬¥à ª®¬ ­¤ë
db 3 ; ª®­â¥ªáâ
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 0503h ; Yo,Xo
db " &Retry ",0 ; ¨¬ï ¡ãâ®­ 
db 13h ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmOkey ; ­®¬¥à ª®¬ ­¤ë
db 0 ; ª®­â¥ªáâ
;
db -1 ; ª®­¥æ ®¯¨á â¥«ï
;ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ Warning ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
;º º
;º The file is read only º
;º FILENAME.EXT º
;º Do you wish to delete it? º
;º º
;º Delete All Skip Skip all Cancel º
;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
; ޝ¨á â¥«ì ®ª­  Žè¨¡ª¨ 㤠«¥­¨ï
dial_delete_ro:
dw 0A14h,0829h ; Yo,Xo,lenY,lenX
db "Warning",0 ; â¨â« ®ª­ 
;
db TextLine
dw 020Ah ; Yo,Xo
db "The file is read only",0
;
db TextLine
dw 030Eh ; Yo,Xo
delete_name3:
db "FILENAME.EXT",0
;
db TextLine
dw 0408h ; Yo,Xo
db "Do you wish to delete it?",0
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 060Ah ; Yo,Xo
db " &All ",0 ; ¨¬ï ¡ãâ®­ 
db 1Dh ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmAll ; ­®¬¥à ª®¬ ­¤ë
db 0 ; ª®­â¥ªáâ
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 060Fh ; Yo,Xo
db " &Skip ",0 ; ¨¬ï ¡ãâ®­ 
db 1Eh ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmSkip ; ­®¬¥à ª®¬ ­¤ë
db 1 ; ª®­â¥ªáâ
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 0615h ; Yo,Xo
db " S&kip all ",0 ; ¨¬ï ¡ãâ®­ 
db 24h ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmSkipAll ; ­®¬¥à ª®¬ ­¤ë
db 2 ; ª®­â¥ªáâ
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 061Fh ; Yo,Xo
db " Ca&ncel ",0 ; ¨¬ï ¡ãâ®­ 
db 2Fh ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmCancel ; ­®¬¥à ª®¬ ­¤ë
db 3 ; ª®­â¥ªáâ
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 0602h ; Yo,Xo
db " &Delete ",0 ; ¨¬ï ¡ãâ®­ 
db 1Fh ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmOkey ; ­®¬¥à ª®¬ ­¤ë
db 0 ; ª®­â¥ªáâ
;
db -1 ; ª®­¥æ ®¯¨á â¥«ï
;ÉÍÍÍÍÍÍÍÍÍÍÍÍ Delete folder ÍÍÍÍÍÍÍÍÍÍÍÍ»
;º º
;º The following folder will be deleted: º
;º | A:\FILENAME.EXT | º
;º º
;º Delete All Skip Cancel º
;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
; ޝ¨á â¥«ì ®ª­  <20>।ã¯à¥¦¤¥­¨ï 㤠«¥­¨ï ­¥ ¯ãá⮩ ¯ ¯ª¨
;dial_nonempty_delete_folder:
; dw 0A14h,0729h ; Yo,Xo,lenY,lenX
; db "Delete folder",0 ; â¨â« ®ª­ 
; ;
; db TextLine
; dw 0202h ; Yo,Xo
; db "The following folder will be deleted:",0
; ;
; db TextLine
; ;dw 0303h ; Yo,Xo
; dw 030Eh
;delete_name4:
; ;db 'A:\FILENAME.EXT ',0 ; 34 ¡ ©â 
; db "FILENAME.EXT",0
; ;
; db Button ; ­®¬¥à ®¡ê¥ªâ 
; dw 050Fh ; Yo,Xo
; db " &All ",0 ; ¨¬ï ¡ãâ®­ 
; db 1Dh ; ᪥­-ª®¤ hot-ª« ¢¨è¨
; db cmAll ; ­®¬¥à ª®¬ ­¤ë
; db 1 ; ª®­â¥ªáâ
; ;
; db Button ; ­®¬¥à ®¡ê¥ªâ 
; dw 0514h ; Yo,Xo
; db " &Skip ",0 ; ¨¬ï ¡ãâ®­ 
; db 1Eh ; ᪥­-ª®¤ hot-ª« ¢¨è¨
; db cmSkip ; ­®¬¥à ª®¬ ­¤ë
; db 2 ; ª®­â¥ªáâ
; ;
; db Button ; ­®¬¥à ®¡ê¥ªâ 
; dw 051Ah ; Yo,Xo
; db " Ca&ncel ",0 ; ¨¬ï ¡ãâ®­ 
; db 2Fh ; ᪥­-ª®¤ hot-ª« ¢¨è¨
; db cmCancel ; ­®¬¥à ª®¬ ­¤ë
; db 3 ; ª®­â¥ªáâ
; ;
; db Button ; ­®¬¥à ®¡ê¥ªâ 
; dw 0507h ; Yo,Xo
; db " &Delete ",0 ; ¨¬ï ¡ãâ®­ 
; db 1Fh ; ᪥­-ª®¤ hot-ª« ¢¨è¨
; db cmOkey ; ­®¬¥à ª®¬ ­¤ë
; db 0 ; ª®­â¥ªáâ
; ;
; db -1 ; ª®­¥æ ®¯¨á â¥«ï
;ÉÍÍÍÍÍÍÍÍÍÍÍÍ Delete folder ÍÍÍÍÍÍÍÍÍÍÍÍ»
;º º
;º The following folder will be deleted: º
;º FILENAME.EXT º
;º º
;º Delete Cancel º
;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
; ޝ¨á â¥«ì ®ª­  <20>।ã¯à¥¦¤¥­¨ï 㤠«¥­¨ï ­¥ ¯ãá⮩ ¯ ¯ª¨
dial_nonempty_delete_folder:
dw 0914h,0729h ; Yo,Xo,lenY,lenX
db "Delete folder",0 ; â¨â« ®ª­ 
;
db TextLine
dw 0202h ; Yo,Xo
db "The following folder will be deleted:",0
;
db TextLine
dw 030Eh ; Yo,Xo
delete_name4:
db "FILENAME.EXT",0
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 0515h ; Yo,Xo
db " Ca&ncel ",0 ; ¨¬ï ¡ãâ®­ 
db 2Fh ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmCancel ; ­®¬¥à ª®¬ ­¤ë
db 1 ; ª®­â¥ªáâ
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 050Ch ; Yo,Xo
db " &Delete ",0 ; ¨¬ï ¡ãâ®­ 
db 1Fh ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmOkey ; ­®¬¥à ª®¬ ­¤ë
db 0 ; ª®­â¥ªáâ
;
db -1 ; ª®­¥æ ®¯¨á â¥«ï
;ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍ Delete ÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
;º º
;º Cannot delete the file or folder º
;º FILENAME.EXT º
;º º
;º Ok º
;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
; ޝ¨á â¥«ì ®ª­  Žè¨¡ª¨ 㤠«¥­¨ï
dial_error_delete_tiny:
dw 0915h,0726h ; Yo,Xo,lenY,lenX
db "Delete",0 ; â¨â« ®ª­ 
;
db TextLine
dw 0203h ; Yo,Xo
db "Cannot delete the file or folder",0
;
db TextLine
dw 030Dh ; Yo,Xo
delete_name5:
db "FILENAME.EXT",0
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 0510h ; Yo,Xo
db " &Ok ",0 ; ¨¬ï ¡ãâ®­ 
db 13h ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmOkey ; ­®¬¥à ª®¬ ­¤ë
db 0 ; ª®­â¥ªáâ
;
db -1 ; ª®­¥æ ®¯¨á â¥«ï

128
MOD1/HMENU.Z80 Executable file
View File

@ -0,0 +1,128 @@
; ޝ¨á â¥«¨ £®à¨§. Œ¥­î ¨ Pull-¬¥­î
;
;---------------------------------------------------------------------------
; ޝ¨á â¥«ì ƒ®à¨§®­â «ì­®£® Œ¥­î
;
; <­ §¢ ­¨¥ ¯ã­ªâ ,0>, <᪥­-ª®¤ hot-ª« ¢¨è¨>, < ¤à¥á ®¯¨á â¥«ï ¢¥àâ. ¬¥­î>
;---------------------------------------------------------------------------
MenuTab:db "&Left",0,25h+80h
dw PullMenu_Left ; ®¯¨á â¥«ì ¢¥àâ. ¬¥­î "Left"
db "&Files",0,20h+80h
dw PullMenu_Files
db "&Commands",0,2Ch+80h
dw PullMenu_Commands
db "&Options",0,18h+80h
dw PullMenu_Options
db "&Right",0,13h+80h
dw PullMenu_Right
db 0 ; ª®­¥æ ®¯¨á â¥«ï
;----------------------------------------------------------------------------
; ޝ¨á â¥«¨ ¢¥à⨪ «ì­ëå Œ¥­î
;
; <­®¬¥à ¯ã­ªâ >, <¨¬ï ¯ã­ªâ ,0>, <᪥­-ª®¤ hot-ª« ¢¨è¨>, <­®¬¥à ª®­â¥ªáâ >
;----------------------------------------------------------------------------
PullMenu_Left:
db cmLBrief,"&Brief Ctrl+1",0,2Eh
LBrief: db CTnodef ; ª®­â¥ªáâ "brief"
db cmLMed,"&Medium Ctrl+2",0,30h
LMed: db CTnodef
db cmLFull,"&Full Ctrl+3",0,20h
LFull: db CTdef
db -2 ; à §¤¥«¨â¥«ì
db cmLInfo,"&Info panel Ctrl+L",0,17h
LInfo: db CTnodef
db cmLQview,"&Qview panel Ctrl+Q",0,10h
LQview: db CTnodef
db -2
db cmLName,"&Name Ctrl+F3",0,2Fh
LName: db CTdef
db cmLExt,"E&xtension Ctrl+F4",0,2Bh
LExt: db CTnodef
db cmLDate,"&Date Ctrl+F5",0,1Fh
LDate: db CTnodef
db cmLSize,"&Size Ctrl+F6",0,1Eh
LSize: db CTnodef
db cmLUnsort,"&Unsorted Ctrl+F7",0,16h
LUnsort:db CTnodef
db -2
db cmLFilter,"Fi&lter...",0,25h,CTnodef
db cmLChangeDrv,"&Change drive Alt+F1",0,2Ch,CTnodef
db -1 ; ª®­¥æ ®¯¨á â¥«ï
;
PullMenu_Files:
db cmHelp,"&Help F1",0,22h,CTnodef
db cmUsrMenu,"&User menu F2",0,16h,CTnodef
db cmView,"&View F3",0,2Dh,CTnodef
db cmEdit,"&Edit F4",0,12h,CTnodef
db cmCopy,"&Copy F5",0,2Ch,CTnodef
db cmRename,"&Rename or move F6",0,13h,CTnodef
db cmMkFolder,"&Make folder F7",0,30h,CTnodef
db cmDelete,"&Delete F8",0,1Fh,CTnodef
db -2
db cmAttrib,"File &attributes Ctrl+A",0,1Dh,CTnodef
db -2
db cmSelGroup,"Select &group Gray +",0,21h,CTnodef
db cmUSelGroup,"U&nselect group Gray -",0,2Fh,CTnodef
db -2
db cmQuit,"&Quit F10",0,10h,CTnodef
db -1
;
PullMenu_Commands:
db cmFind, "&Find file Alt+F7",0,20h,CTnodef
db cmVolume, "&Volume label Ctrl+F8",0,2Dh,CTnodef
db -2
db cmSwap, "&Swap panels Ctrl+U",0,1Eh,CTnodef
db cmPanelsOn,"&Panels On/Off Ctrl+O",0,19h,CTnodef
db -2
db cmNullTRD,"&Create TRD-image",0,2Ch,CTnodef
db cmCopyTRD,"TRD-&image -> Disk",0,17h,CTnodef
db cmSaveTRD,"&Disk -> TRD-image",0,1Fh,CTnodef
db -1
;
PullMenu_Options:
db cmInterface,"&Interface settings",0,17h,CTnodef
db cmConfirm,"Co&nfirmations",0,2Fh,CTnodef
db -2
db cmColors,"Co&lors",0,25h,CTnodef
db cmHighlight,"Files &highlighting",0,22h,CTnodef
db -2
db cmViewSet,"&Viewer settings",0,2Dh,CTnodef
db cmEditSet,"&Editor settings",0,12h,CTnodef
db -2
db cmSaveSetup,"&Save setup Shift+F9",0,1Eh,CTnodef
db -1
;
PullMenu_Right:
db cmRBrief,"&Brief Ctrl+1",0,2Eh
RBrief: db CTnodef ; ª®­â¥ªáâ "brief"
db cmRMed,"&Medium Ctrl+2",0,30h
RMed: db CTnodef
db cmRFull,"&Full Ctrl+3",0,20h
RFull: db CTnodef
db -2
db cmRInfo,"&Info panel Ctrl+L",0,17h
RInfo: db CTdef
db cmRQview,"&Qview panel Ctrl+Q",0,10h
RQview: db CTnodef
db -2
db cmRName,"&Name Ctrl+F3",0,2Fh
RName: db CTnodef
db cmRExt, "E&xtension Ctrl+F4",0,2Bh
RExt: db CTdef
db cmRDate,"&Date Ctrl+F5",0,1Fh
RDate: db CTnodef
db cmRSize,"&Size Ctrl+F6",0,1Eh
RSize: db CTnodef
db cmRUnsort,"&Unsorted Ctrl+F7",0,16h
RUnsort:db CTnodef
db -2
db cmRFilter,"Fi&lter...",0,25h,CTnodef
db cmRChangeDrv,"&Change drive Alt+F2",0,2Ch,CTnodef
db -1

208
MOD1/INFO.Z80 Executable file
View File

@ -0,0 +1,208 @@
;ÉÍÍÍÍÍÍÍÍÍÍ Information ÍÍÍÍÍÍÍÍÍÍ»
;º º
;º Calculating disk space... º
;º º
;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
; ޝ¨á â¥«ì ®ª­ 
win_info_panel:
dw 0A16h,0523h ; Yo,Xo,lenY,lenX
db "Information",0 ; â¨â« ®ª­ 
;
db TextLine
dw 0205h ; Yo,Xo
db "Calculating disk space...",0
db -1 ; ª®­¥æ ®¯¨á â¥«ï
;-------------------------------------------------
; â¨â«-®¯¨á â¥«ì info-ä®à¬ â 
;-------------------------------------------------
title_info:
db 13 ; ¤«¨­  áâப¨
info_color1__:
db color_pointer ; 3Fh 梥â
dw 0D00h ; X/Y ¯®«®¦.
db " Information "
;
db 30 ; ¤«¨­  áâப¨
info_color2__:
db color_panel ; 1Bh 梥â
dw 0502h ; X/Y ¯®«®¦.
db "The File Manager, Version "
db major_version + "0"
db "."
db (minor_version / 10) + "0"
db (minor_version % 10) + "0"
;
db 40 ; ¤«¨­  áâப¨
info_color4__:
db color_panel ; 梥â
dw 0005h ; X/Y ¯®«®¦.
db "ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ"
;
db 8 ; ¤«¨­  áâப¨
info_color23__:
db color_panel ; 1Bh 梥â
dw 0206h ; X/Y ¯®«®¦.
db "Board ID"
;
db 15 ; ¤«¨­  áâப¨
info_color24__:
db color_folder ; 梥â
dw 1706h ; X/Y ¯®«®¦.
info_board_id:
db "xx-xx-xxxxxxxxx"
;
db 12 ; ¤«¨­  áâப¨
info_color25__:
db color_panel ; 梥â
dw 0207h ; X/Y ¯®«®¦.
db "BIOS Version"
;
db 9 ; ¤«¨­  áâப¨
info_color26__:
db color_folder ; 梥â
dw 1D07h ; X/Y ¯®«®¦.
info_bios_version:
db "00.00.000"
;
db 4 ; ¤«¨­  áâப¨
info_color27__:
db color_panel ; 梥â
dw 0208h ; X/Y ¯®«®¦.
db "CMOS"
;
db 3 ; ¤«¨­  áâப¨
info_color28__:
db color_folder ; 梥â
dw 2308h ; X/Y ¯®«®¦.
info_cmos_string:
db " No"
;
db 40 ; ¤«¨­  áâப¨
info_color29__:
db color_panel ; 梥â
dw 0009h ; X/Y ¯®«®¦.
db "ÇÄÄÄÄÄÄÄÄÄ"
info_type_device:
db " Removable disk A: ÄÄÄÄÄÄÄÄÄĶ"
;
db 11 ; ¤«¨­  áâப¨
info_color5__:
db color_panel ; 梥â
dw 020Ah ; X/Y ¯®«®¦.
db "Total bytes"
;
db 13 ; ¤«¨­  áâப¨
info_color6__:
db color_title ; 梥â
dw 190Ah ; X/Y ¯®«®¦.
info_total_bytes:
db "0,000,000,000"
;
db 10 ; ¤«¨­  áâப¨
info_color7__:
db color_panel ; 梥â
dw 020Bh ; X/Y ¯®«®¦.
db "Free bytes"
;
db 13 ; ¤«¨­  áâப¨
info_color8__:
db color_title ; 梥â
dw 190Bh ; X/Y ¯®«®¦.
info_free_bytes:
db "0,000,000,000"
;
db 12 ; ¤«¨­  áâப¨
info_color9__:
db color_panel ; 梥â
dw 020Ch ; X/Y ¯®«®¦.
db "Volume label"
;
db 11 ; ¤«¨­  áâப¨
info_color10__:
db color_title ; 梥â
dw 1B0Ch ; X/Y ¯®«®¦.
info_volume:
db " "
;
db 13 ; ¤«¨­  áâப¨
info_color11__:
db color_panel ; 梥â
dw 020Dh ; X/Y ¯®«®¦.
db "Serial number"
;
db 9 ; ¤«¨­  áâப¨
info_color12__:
db color_title ; 梥â
dw 1D0Dh ; X/Y ¯®«®¦.
info_serial:
db "xxxx-xxxx"
;
db 40 ; ¤«¨­  áâப¨
info_color13__:
db color_panel ; 梥â
dw 000Eh ; X/Y ¯®«®¦.
db "ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄ Memory ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ"
;
db 12 ; ¤«¨­  áâப¨
info_color15__:
db color_panel ; 梥â
dw 020Fh ; X/Y ¯®«®¦.
db "Total memory"
;
db 9 ; ¤«¨­  áâப¨
info_color16__:
db color_title ; 梥â
dw 1D0Fh ; X/Y ¯®«®¦.
info_total_memory:
db "0,000,000"
;
db 11 ; ¤«¨­  áâப¨
info_color17__:
db color_panel ; 梥â
dw 0210h ; X/Y ¯®«®¦.
db "Free memory"
;
db 9 ; ¤«¨­  áâப¨
info_color18__:
db color_title ; 梥â
dw 1D10h ; X/Y ¯®«®¦.
info_free_memory:
db "0,000,000"
;
db 40 ; ¤«¨­  áâப¨
info_color19__:
db color_panel ; 梥â
dw 0011h ; X/Y ¯®«®¦.
db "ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ"
;
info_date:
db 17 ; ¤«¨­  áâப¨
info_color3__:
db color_panel ; 梥â
dw 0B03h ; X/Y ¯®«®¦.
info_date_string:
db " 4 September 2004" ; ⥪. ¤ â 
;
db 0 ; ª®­¥æ ®¯¨á â¥«ï
; â¨¯ë «®£. ¤¨áª®¢
info_hdd:
db "ÄÄ Fixed disk C: ÄÄ"
info_cdrom:
db "ÄÄ CD-ROM disk D: Ä"
info_fdd:
db " Removable disk A: "
info_ram:
db "ÄÄÄ RAM-disk D: ÄÄÄ"
cmos_yes:
db "Yes" ; ¬/á CMOS ¥áâì
cmos_no:db " No" ; ¬/á CMOS ­¥â

139
MOD1/INFO2.Z80 Executable file
View File

@ -0,0 +1,139 @@
;-------------------------------------------------
; „®¯®«­¨â¥«ì­ë© info-®¯¨á â¥«ì ᯥª-ä®à¬ â 
;-------------------------------------------------
title_info_trd:
db 40 ; ¤«¨­  áâப¨
info_color33__:
db color_panel ; 梥â
dw 0011h ; X/Y ¯®«®¦.
db "ÇÄÄÄÄÄÄ TRD-DOS disk image info ÄÄÄÄÄÄĶ"
;
db 10 ; ¤«¨­  áâப¨
info_color34__:
db color_panel ; 1Bh 梥â
dw 0212h ; X/Y ¯®«®¦.
db "Image type"
;
db 3 ; ¤«¨­  áâப¨
info_color35__:
db color_title ; 1Eh 梥â
dw 2312h ; X/Y ¯®«®¦.
img_type:
db "TRD"
;
db 10 ; ¤«¨­  áâப¨
info_color36__:
db color_panel ; 1Bh 梥â
dw 0213h ; X/Y ¯®«®¦.
db "Disk title"
;
db 11 ; ¤«¨­  áâப¨
info_color37__:
db color_title ; 1Eh 梥â
dw 1B13h ; X/Y ¯®«®¦.
trd_vol:db "ADVENT#12/2"
;
db 9 ; ¤«¨­  áâப¨
info_color38__:
db color_panel ; 1Bh 梥â
dw 0214h ; X/Y ¯®«®¦.
db "Disk type"
;
db 5 ; ¤«¨­  áâப¨
info_color39__:
db color_title ; 1Eh 梥â
dw 2114h ; X/Y ¯®«®¦.
trd_type:
db "??/??"
;
db 16 ; ¤«¨­  áâப¨
info_color40__:
db color_panel ; 1Bh 梥â
dw 0215h ; X/Y ¯®«®¦.
db "Write protection"
;
db 7 ; ¤«¨­  áâப¨
info_color41__:
db color_title ; 1Eh 梥â
dw 1F15h ; X/Y ¯®«®¦.
trd_protect:
db " absent" ; " absent", "present"
;
db 40 ; ¤«¨­  áâப¨
info_color42__:
db color_panel ; 梥â
dw 0016h ; X/Y ¯®«®¦.
db "ÇÄÄÄÄÄÄÄÄÄÄÄÄ Files info ÄÄÄÄÄÄÄÄÄÄÄÄÄĶ"
;
db 15 ; ¤«¨­  áâப¨
info_color43__:
db color_panel ; 1Bh 梥â
dw 0217h ; X/Y ¯®«®¦.
db "Number of files"
;
db 3 ; ¤«¨­  áâப¨
info_color44__:
db color_title ; 1Eh 梥â
dw 2317h ; X/Y ¯®«®¦.
trd_files:
db " 0"
;
db 19 ; ¤«¨­  áâப¨
info_color45__:
db color_panel ; 1Bh 梥â
dw 0218h ; X/Y ¯®«®¦.
db "Number of del files"
;
db 3 ; ¤«¨­  áâப¨
info_color46__:
db color_title ; 1Eh 梥â
dw 2318h ; X/Y ¯®«®¦.
trd_delfiles:
db " 0"
;
db 40 ; ¤«¨­  áâப¨
info_color47__:
db color_panel ; 梥â
dw 0019h ; X/Y ¯®«®¦.
db "ÇÄÄÄÄÄÄÄÄÄÄ Free area info ÄÄÄÄÄÄÄÄÄÄÄĶ"
;
db 14 ; ¤«¨­  áâப¨
info_color48__:
db color_panel ; 1Bh 梥â
dw 021Ah ; X/Y ¯®«®¦.
db "First free trk"
;
db 5 ; ¤«¨­  áâப¨
info_color49__:
db color_title ; 1Eh 梥â
dw 211Ah ; X/Y ¯®«®¦.
ffree_trk:
db " 0"
;
db 14 ; ¤«¨­  áâப¨
info_color50__:
db color_panel ; 1Bh 梥â
dw 021Bh ; X/Y ¯®«®¦.
db "First free sec"
;
db 5 ; ¤«¨­  áâப¨
info_color51__:
db color_title ; 1Eh 梥â
dw 211Bh ; X/Y ¯®«®¦.
ffree_sec:
db " 0"
;
db 22 ; ¤«¨­  áâப¨
info_color52__:
db color_panel ; 1Bh 梥â
dw 021Ch ; X/Y ¯®«®¦.
db "Number of free sectors"
;
db 5 ; ¤«¨­  áâப¨
info_color53__:
db color_title ; 1Eh 梥â
dw 211Ch ; X/Y ¯®«®¦.
free_sec:
db " 0"
;
db 0 ; ª®­¥æ ®¯¨á â¥«ï

105
MOD1/INTRFACE.ASM Executable file
View File

@ -0,0 +1,105 @@
;////////////////////////////////////////////////////////////////////////
;
; ‚ë§®¢ ®ª­  ­ áâனª¨ ¨­â¥àä¥©á  (Options->Interface settings)
;
;////////////////////////////////////////////////////////////////////////
set_interface:
; ­ áâநâì ¬ áᨢ ï祥ª CheckBox- 
call prep_interface_ceils
; ¢ë¢®¤ ®ª­ 
ld hl,win_dial_interface ; ®¯¨á â¥«ì ®ª­ 
call DialogW
cp evCommand ; ᮡë⨥ "ª®¬ ­¤ "
ret nz
ld a,(hl) ;+1 what
cp cmOkey ; "Yes"
ret nz
; <20>ਬ¥­¨âì ­ áâனª¨
call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
ret z
; á®åà ­¨âì ­ áâனª¨
call save_interface_settings
; ®¡­®¢¨âì ¯ ­¥«¨ ᮣ« á­® ­ áâனª ¬
call fresh_show_summary_line ; Show line summary information
call change_panel ; ᬥ­¨âì ¯ ­¥«ì
call A20FC ; ®¡­®¢¨âì ¯ ­¥«ì
call change_panel
call A20FC
jp show_pointer ; ¯®ª § âì 㪠§ â¥«ì
; <20>®¤£®â®¢ª  ¬ áᨢ  ï祥ª CheckBox- 
prep_interface_ceils:
ld a,(hilight_enable) ; à áªà áª  ä ©«®¢
ld hl,interface_ceil0 ; ­ ç «® ¬ áᨢ  ï祥ª
ld (hl),a
inc hl
ld a,(hidden_mouse) ; ¯àïâ âì ¬ëèªã ¯à¨ à ¡®â¥ á ª« ¢®©
ld (hl),a
inc hl
ld a,(enable_clock) ; ¢ë¢®¤ ç á®¢ ¢ ¯ ­¥«ïå
ld (hl),a
inc hl
ld a,(mark_folders) ; ®â¬¥âª  ¯ ¯®ª
ld (hl),a
inc hl
ld a,(flag_summary_info) ; ¢ë¢®¤ áâப¨ á㬬 à­®© ¨­ä®à¬ æ¨¨
ld (hl),a
inc hl
ld a,(sort_char_flag) ; ¢ë¢®¤ ¡ãª¢ë ०¨¬  á®àâ¨à®¢ª¨
ld (hl),a
inc hl
ld a,(enable_down_mark) ; ᬥé. ªãàá®à  ¢­¨§ ¯à¨ ¢ë¤¥«. ä ©«®¢
ld (hl),a
inc hl
ld a,(flag_esc) ; ¢à¥¬. ¯à®á¬®âà á¨áâ. íªà ­ 
ld (hl),a
inc hl
ld a,(move_home_end) ; ®âà ¡®âª  Home/End ¢ ª®¬-áâப¥ ¯à¨ ®âªà. ¯ ­¥«ïå
ld (hl),a
ret
; ‘®åà ­¨âì ­ áâனª¨ ®ª­  "Interface settings"
save_interface_settings:
ld hl,interface_ceil0 ; ­ ç «® ¬ áᨢ  ï祥ª
ld a,(hl)
ld (hilight_enable),a ; à áªà áª  ä ©«®¢
inc hl
ld a,(hl)
ld (hidden_mouse),a ; ¯àïâ âì ¬ëèªã ¯à¨ à ¡®â¥ á ª« ¢®©
inc hl
ld a,(hl)
ld (enable_clock),a ; ¢ë¢®¤ ç á®¢ ¢ ¯ ­¥«ïå
inc hl
ld a,(hl)
ld (mark_folders),a ; ®â¬¥âª  ¯ ¯®ª
inc hl
ld a,(hl)
ld (flag_summary_info),a ; ¢ë¢®¤ áâப¨ á㬬 à­®© ¨­ä®à¬ æ¨¨
inc hl
ld a,(hl)
ld (sort_char_flag),a ; ¢ë¢®¤ ¡ãª¢ë ०¨¬  á®àâ¨à®¢ª¨
inc hl
ld a,(hl)
ld (enable_down_mark),a ; ᬥé. ªãàá®à  ¢­¨§ ¯à¨ ¢ë¤¥«. ä ©«®¢
inc hl
ld a,(hl)
ld (flag_esc),a ; ¢à¥¬. ¯à®á¬®âà á¨áâ. íªà ­ 
inc hl
ld a,(hl)
ld (move_home_end),a ; ®âà ¡®âª  Home/End ¢ ª®¬-áâப¥
ret
;-------------------------------------------------
; <20> áâனª  ¢ë¢®¤  áâப¨ á㬬 à­®© ¨­äë
;-------------------------------------------------
fresh_show_summary_line:
call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
ret z ; ¢ëª«.
ld a,(flag_summary_info) ; ä« £
or a
ret z ; false
jp get_total_free_space ; ã§­ âì ᢮¡. ¬¥áâ® ­  ¤¨áª å ¯ ­¥«¥©

72
MOD1/INTRFACE.Z80 Executable file
View File

@ -0,0 +1,72 @@
;ÉÍÍÍÍÍÍÍÍÍ Interface settings ÍÍÍÍÍÍÍÍÍ»
;º º
;º [x] Highlight files º
;º [x] Hidden mouse º
;º [x] Clock in panels º
;º [x] Select folders º
;º [x] Show line summary information º
;º [x] Show sort mode letter º
;º [x] Ins moves down º
;º [x] Show system screen º
;º [x] Enable Home/End in comline º
;º º
;ºÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĺ
;º [ Ok ] [ Cancel ] º
;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
; ޝ¨á â¥«ì ®ª­  ­ áâனª¨ ¨­â¥à䥩á 
; 42x17=714*2=1428 (0594h)
win_dial_interface:
dw 0614h,0F28h ; Yo,Xo,lenY,lenX
db "Interface settings",0 ; â¨â« ®ª­ 
;
db HLine
dw 0C01h ; Yo,Xo
db 38 ; ¤«¨­  «¨­¨¨
db "Ä" ; ᨬ¢®« § ¯®«­¥­¨ï
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 0D0Bh ; Yo,Xo
db "[ &Ok ]",0 ; ¨¬ï ¡ãâ®­ 
db 18h ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmOkey ; ­®¬¥à ª®¬ ­¤ë
db 7 ; ª®­â¥ªáâ
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 0D13h ; Yo,Xo
db "[ Ca&ncel ]",0 ; ¨¬ï ¡ãâ®­ 
db 2Fh ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmCancel ; ­®¬¥à ª®¬ ­¤ë
db 8 ; ª®­â¥ªáâ
;
db ClsCheckBox ; ­®¬¥à ®¡ê¥ªâ 
dw 0202h,0A21h ; Yo,Xo,lenY,lenX (á "[x] ")
db "Hi&ghlight files",0 ; ¨¬ï í«¥¬¥­â 
db 21h ; ᪥­-ª®¤ hot-¡ãª¢ë
dw interface_ceil0 ;  ¤à¥á ï祩ª¨
db "Hidden &mouse",0 ; ¨¬ï í«¥¬¥­â 
db 30h ; ᪥­-ª®¤ hot-¡ãª¢ë
dw interface_ceil1 ;  ¤à¥á ï祩ª¨
db "&Clock in panels",0 ; ¨¬ï í«¥¬¥­â 
db 2Ch ; ᪥­-ª®¤ hot-¡ãª¢ë
dw interface_ceil2 ;  ¤à¥á ï祩ª¨
db "Select &folders",0 ; ¨¬ï í«¥¬¥­â 
db 20h ; ᪥­-ª®¤ hot-¡ãª¢ë
dw interface_ceil3 ;  ¤à¥á ï祩ª¨
db "Show line &summary information",0 ; ¨¬ï í«¥¬¥­â 
db 1Eh ; ᪥­-ª®¤ hot-¡ãª¢ë
dw interface_ceil4 ;  ¤à¥á ï祩ª¨
db "Show sort mode &letter",0 ; ¨¬ï í«¥¬¥­â 
db 25h ; ᪥­-ª®¤ hot-¡ãª¢ë
dw interface_ceil5 ;  ¤à¥á ï祩ª¨
db "&Ins moves down",0 ; ¨¬ï í«¥¬¥­â 
db 17h ; ᪥­-ª®¤ hot-¡ãª¢ë
dw interface_ceil6 ;  ¤à¥á ï祩ª¨
db "Show s&ystem screen",0 ; ¨¬ï í«¥¬¥­â 
db 15h ; ᪥­-ª®¤ hot-¡ãª¢ë
dw interface_ceil7 ;  ¤à¥á ï祩ª¨
db "&Enable Home/End in comline",0 ; ¨¬ï í«¥¬¥­â 
db 12h ; ᪥­-ª®¤ hot-¡ãª¢ë
dw interface_ceil8 ;  ¤à¥á ï祩ª¨
db 0 ; ª®­¥æ ª« áâ¥à 
;
db -1 ; ª®­¥æ ®¯¨á â¥«ï

42
MOD1/MKDIR.Z80 Executable file
View File

@ -0,0 +1,42 @@
; ‘®§¤ ­¨¥ ¯ ¯ª¨ (72 ᨬ¢®«  ¢ áâப¥)
;ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ Make folder ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
;º Create the folder º
;º °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° º
;ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ
;º [ Ok ] [ Cancel ] º
;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
; ޝ¨á â¥«ì ®ª­  á®§¤ ­¨ï ¯ ¯ª¨
dial_folder:
dw 0902h,064Ch ; Yo,Xo,lenY,lenX
db "Make folder",0 ; â¨â« ®ª­ 
;
db TextLine
dw 0102h ; Yo,Xo
db "Create the folder",0
;
db HLine
dw 0301h ; Yo,Xo
db 74 ; ¤«¨­  «¨­¨¨
db "Ä" ; ᨬ¢®« § ¯®«­¥­¨ï
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 041Dh ; Yo,Xo
db "[ &Ok ]",0 ; ¨¬ï ¡ãâ®­ 
db 18h ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmOkey ; ­®¬¥à ª®¬ ­¤ë
db 1 ; ª®­â¥ªáâ
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 0425h ; Yo,Xo
db "[ Ca&ncel ]",0 ; ¨¬ï ¡ãâ®­ 
db 2Fh ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmCancel ; ­®¬¥à ª®¬ ­¤ë
db 2 ; ª®­â¥ªáâ
;
db InputLine ; å à ªâ¥à ®¡ê¥ªâ 
dw 0202h ; Yo,Xo
db 72 ; ¤«¨­  áâப¨
db 0 ; ª®­â¥ªáâ
dw input_line_makedir ; ¡ãä¥à áâப¨ ¢¢®¤ 
;
db -1 ; ª®­¥æ ®¯¨á â¥«ï

509
MOD1/PANELS.Z80 Executable file
View File

@ -0,0 +1,509 @@
;-------------------------------------------------------------------------
;
; ޝ¨á â¥«¨ ä®à¬ â®¢ ¯ ­¥«¥©
;
;-------------------------------------------------------------------------
;-------------------------------------------------
; ޝ¨á â¥«ì ä®à¬ â®¢ ¯à ¢®© ¯ ­¥«¨
;-------------------------------------------------
deskr_right:
dw deskr_full ; ®¯¨á â¥«ì full-ä®à¬ â 
dw deskr_med ; ®¯¨á â¥«ì medium-ä®à¬ â 
dw deskr_brief ; ®¯¨á â¥«ì brief-ä®à¬ â 
dw deskr_info ; ®¯¨á â¥«ì info ä®à¬ â 
dw deskr_qview ; ®¯¨á â¥«ì qview ä®à¬ â 
dw deskr_spec ; ®¯¨á â¥«ì ᯥª-ä®à¬ â®¢
;-------------------------------------------------
; ޝ¨á â¥«ì ä®à¬ â®¢ «¥¢®© ¯ ­¥«¨
;-------------------------------------------------
deskr_left:
dw deskr_full ; ®¯¨á â¥«ì full-ä®à¬ â 
dw deskr_med ; ®¯¨á â¥«ì medium-ä®à¬ â 
dw deskr_brief ; ®¯¨á â¥«ì brief-ä®à¬ â 
dw deskr_info ; ®¯¨á â¥«ì info ä®à¬ â 
dw deskr_qview ; ®¯¨á â¥«ì qview ä®à¬ â 
dw deskr_spec ; ®¯¨á â¥«ì ᯥª-ä®à¬ â®¢
; ¯®«­ë© ä®à¬ â
deskr_full:
dw title_full ; â¨â« ¯ ­¥«¨
dw up_full ; «¨­¨ï "ÉÍÍÍÍÍÑÍÍÑÍÍÍÑÍ»"
dw footer_full ; «¨­¨ï "ÇÄÄÄÄÄÁÄÄÁÄÄÄÁĶ"
dw botline ; «¨­¨ï "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍͼ"
db files_per_colon ; 1 ª®«®­ª  ¢ 25 ä ©«®¢
db 0
; á।­¨© ä®à¬ â
deskr_med:
dw title_medium ; â¨â« ¯ ­¥«¨
dw up_med ; «¨­¨ï "ÉÍÍÍÍÍÍÑÍÍÍÍÍÍÍ»"
dw footer_med ; «¨­¨ï "ÇÄÄÄÄÄÄÁÄÄÄÄÄÄĶ"
dw botline ; «¨­¨ï "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍͼ"
db files_per_colon*2 ; 2 ª®«®­ª¨ ¯® 25 ä ©«®¢
db 0
; ªà âª¨© ä®à¬ â
deskr_brief:
dw title_brief ; â¨â« ¯ ­¥«¨
dw up_brief ; «¨­¨ï "ÉÍÍÍÍÑÍÍÍÍÑÍÍÍÍ»"
dw footer_brief ; «¨­¨ï "ÇÄÄÄÄÁÄÄÄÄÁÄÄÄĶ"
dw botline ; «¨­¨ï "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍͼ"
db files_per_colon*3 ; 3 ª®«®­ª¨ ¯® 25 ä ©«®¢
db 0
; info ä®à¬ â
deskr_info:
dw title_info ; â¨â« ¯ ­¥«¨
dw up_info ; «¨­¨ï "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»"
dw footer_info ; «¨­¨ï "º º"
dw botline ; «¨­¨ï "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ"
db files_per_colon ; 1 ª®«®­ª  ¢ 25 ä ©«®¢
db 0
; qview ä®à¬ â
deskr_qview:
dw title_qview ; â¨â« ¯ ­¥«¨
dw up_info ; «¨­¨ï "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»"
dw footer_info ; «¨­¨ï "º º"
dw botline ; «¨­¨ï "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ"
db files_per_colon ; 1 ª®«®­ª  ¢ 25 ä ©«®¢
db 0
; ᯥª-ä®à¬ â
deskr_spec:
dw title_spec ; â¨â« ¯ ­¥«¨
dw up_spec ; «¨­¨ï "ÉÍÍÍÍÍÑÍÍÑÍÍÑÍÑÍÑÍ»"
dw footer_spec ; «¨­¨ï "ÇÄÄÄÄÄÁÄÄÁÄÄÁÄÁÄÁĶ"
dw botline ; «¨­¨ï "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ"
db files_per_colon ; 1 ª®«®­ª  ¢ 25 ä ©«®¢
db 0
;-------------------------------------------------
; ®¯¨á â¥«ì ¢¥àå­¥© áâப¨ ¯ ­¥«¨
;-------------------------------------------------
; ¯®«­ë© ä®à¬ â
up_full:
db 40 ; ¤«¨­  áâப¨
up_color1__:
db color_panel ; 1Bh 梥â
dw 0000h ; X/Y ¯®«®¦.
db "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÑÍÍÍÍÍ»"
db 0
; á।­¨© ä®à¬ â
up_med:
db 40 ; ¤«¨­  áâப¨
up_color2__:
db color_panel ; 梥â
dw 0000h ; X/Y ¯®«®¦.
db "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»"
db 0
; ªà âª¨© ä®à¬ â
up_brief:
db 40 ; ¤«¨­  áâப¨
up_color3__:
db color_panel ; 梥â
dw 0000h ; X/Y ¯®«®¦.
db "ÉÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍ»"
db 0
; info, qview ä®à¬ âë
up_info:
db 40 ; ¤«¨­  áâப¨
up_color31__:
db color_panel ; 3Fh 梥â
dw 0000h ; X/Y ¯®«®¦.
db "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»"
db 0 ; ª®­¥æ ®¯¨á â¥«ï
; ᯥª-ä®à¬ â
up_spec:
db 40 ; ¤«¨­  áâப¨
up_color4__:
db color_panel ; 梥â
dw 0000h ; X/Y ¯®«®¦.
db "ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÑÍÍÍÍÍÑÍÍÍÑÍÍÍÑÍÍÍ»"
db 0
;-------------------------------------------------
; ®¯¨á â¥«ì footer-áâப¨ ¯ ­¥«¨
;-------------------------------------------------
; ¯®«­ë© ä®à¬ â
footer_full:
db 40 ; ¤«¨­  áâப¨
footer_color1__:
db color_panel ; 1Bh 梥â
dw 001Bh ; X/Y ¯®«®¦.
db "ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÁÄÄÄÄĶ"
db 0
; á।­¨© ä®à¬ â
footer_med:
db 40 ; ¤«¨­  áâப¨
footer_color2__:
db color_panel ; 梥â
dw 001Bh ; X/Y ¯®«®¦.
db "ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ"
db 0
; ªà âª¨© ä®à¬ â
footer_brief:
db 40 ; ¤«¨­  áâப¨
footer_color3__:
db color_panel ; 梥â
dw 001Bh ; X/Y ¯®«®¦.
db "ÇÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄĶ"
db 0
; info, qview ä®à¬ âë
footer_info:
db 40 ; ¤«¨­  áâப¨
footer_color41__:
db color_panel ; 梥â
dw 001Bh ; X/Y ¯®«®¦.
midline4:
db "º º"
db 0
; ᯥª-ä®à¬ â
footer_spec:
db 40 ; ¤«¨­  áâப¨
footer_color4__:
db color_panel ; 梥â
dw 001Bh ; X/Y ¯®«®¦.
db "ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÁÄÄÄÁÄÄĶ"
db 0
;-------------------------------------------------
; ®¯¨á â¥«ì botline-áâப¨ ¯ ­¥«¨
;-------------------------------------------------
botline:
db 40 ; ¤«¨­  áâப¨
botline_color_:
db color_panel ; 梥â
dw 001Dh ; X/Y ¯®«®¦.
botline1:
db "ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ"
db 0
;-----------------------------------------------------------
; ®¯¨á â¥«ì áâப¨ ®â¬¥ç¥­­ëå ä ©«®¢ «¥¢®© ¯ ­¥«¨
;-----------------------------------------------------------
markline_left:
db 1 ; ¤«¨­  áâப¨
markline_color_:
db color_markline ; 3Eh 梥â
dw 021Bh ; X/Y ¯®«®¦.
db " 0,000,000,000 bytes in 00000 files "
;-----------------------------------------------------------
; ®¯¨á â¥«ì áâப¨ ®â¬¥ç¥­­ëå ä ©«®¢ ¯à ¢®© ¯ ­¥«¨
;-----------------------------------------------------------
markline_right:
db 1 ; ¤«¨­  áâப¨
markline_color1_:
db color_markline ; 3Eh 梥â
dw 021Bh ; X/Y ¯®«®¦.
db " 0,000,000,000 bytes in 00000 files "
mark_string1__:
db " bytes in " ; 10 ¡ ©â
mark_string2__:
db " files" ; 6 ¡ ©â
folder_string:
db " Folder"
up_string:
db " Up "
;-------------------------------------------------
; ®¯¨á â¥«ì áâ âãá. áâப¨ ¯ ­¥«¨
;-------------------------------------------------
status_string:
db 38 ; ¤«¨­  áâப¨
status_color__:
db color_panel ; 梥â
dw 011Ch ; X/Y ¯®«®¦.
; "Filenamm.Ext 0005940 21.06.04 18:50"
db " "
db 0
; á।­ïï ç áâì à ¬ª¨ ¯ ­¥«¨
midline1:
db "º ³ ³ ³ º" ; full
midline2:
db "º ³ º" ; medium
midline3:
db "º ³ ³ º" ; brief
midline_spec:
db "º ³ ³ ³ ³ ³ º" ; full-spectrum
;-------------------------------------------------
; â¨â« full-ä®à¬ â 
;-------------------------------------------------
title_full:
db 4 ; ¤«¨­  áâப¨
full_color1__:
db color_title ; 1Eh 梥â
dw 0701h ; X/Y ¯®«®¦.
db "Name"
;
db 1 ; ¤«¨­  áâப¨
full_color2__:
db color_panel ; 1Bh 梥â
dw 1001h ; X/Y ¯®«®¦.
db "³"
;
db 4 ; ¤«¨­  áâப¨
full_color3__:
db color_title ; 梥â
dw 1301h ; X/Y ¯®«®¦.
db "Size"
;
db 1 ; ¤«¨­  áâப¨
full_color4__:
db color_panel ; 梥â
dw 1801h ; X/Y ¯®«®¦.
db "³"
;
db 4 ; ¤«¨­  áâப¨
full_color5__:
db color_title ; 梥â
dw 1B01h ; X/Y ¯®«®¦.
db "Date"
;
db 1 ; ¤«¨­  áâப¨
full_color6__:
db color_panel ; 梥â
dw 2101h ; X/Y ¯®«®¦.
db "³"
;
db 4 ; ¤«¨­  áâப¨
full_color7__:
db color_title ; 梥â
dw 2201h ; X/Y ¯®«®¦.
db "Time"
db 0 ; ª®­¥æ ®¯¨á â¥«ï
;-------------------------------------------------
; â¨â« medium-ä®à¬ â 
;-------------------------------------------------
title_medium:
db 4 ; ¤«¨­  áâப¨
med_color1__:
db color_title ; 1Eh 梥â
dw 0801h ; X/Y ¯®«®¦.
db "Name"
;
db 1 ; ¤«¨­  áâப¨
med_color2__:
db color_panel ; 1Bh 梥â
dw 1301h ; X/Y ¯®«®¦.
db "³"
;
db 4 ; ¤«¨­  áâப¨
med_color3__:
db color_title ; 梥â
dw 1B01h ; X/Y ¯®«®¦.
db "Name"
db 0 ; ª®­¥æ ®¯¨á â¥«ï
;-------------------------------------------------
; â¨â« brief-ä®à¬ â 
;-------------------------------------------------
title_brief:
db 4 ; ¤«¨­  áâப¨
brief_color1__:
db color_title ; 1Eh 梥â
dw 0501h ; X/Y ¯®«®¦.
db "Name"
;
db 1 ; ¤«¨­  áâப¨
brief_color2__:
db color_panel ; 1Bh 梥â
dw 0D01h ; X/Y ¯®«®¦.
db "³"
;
db 4 ; ¤«¨­  áâப¨
brief_color3__:
db color_title ; 梥â
dw 1201h ; X/Y ¯®«®¦.
db "Name"
;
db 1 ; ¤«¨­  áâப¨
brief_color4__:
db color_panel ; 1Bh 梥â
dw 1A01h ; X/Y ¯®«®¦.
db "³"
;
db 4 ; ¤«¨­  áâப¨
brief_color5__:
db color_title ; 梥â
dw 1F01h ; X/Y ¯®«®¦.
db "Name"
db 0 ; ª®­¥æ ®¯¨á â¥«ï
;-------------------------------------------------
; â¨â« ᯥª-ä®à¬ â 
;-------------------------------------------------
title_spec:
db 4 ; ¤«¨­  áâப¨
spec_color1__:
db color_title ; 1Eh 梥â
dw 0601h ; X/Y ¯®«®¦.
db "Name"
;
db 1 ; ¤«¨­  áâப¨
spec_color2__:
db color_panel ; 1Bh 梥â
dw 0F01h ; X/Y ¯®«®¦.
db "³"
;
db 4 ; ¤«¨­  áâப¨
spec_color3__:
db color_title ; 梥â
dw 1101h ; X/Y ¯®«®¦.
db "Size"
;
db 1 ; ¤«¨­  áâப¨
spec_color4__:
db color_panel ; 1Bh 梥â
dw 1501h ; X/Y ¯®«®¦.
db "³"
;
db 5 ; ¤«¨­  áâப¨
spec_color5__:
db color_title ; 梥â
dw 1601h ; X/Y ¯®«®¦.
db "Start"
;
db 1 ; ¤«¨­  áâப¨
spec_color6__:
db color_panel ; 1Bh 梥â
dw 1B01h ; X/Y ¯®«®¦.
db "³"
;
db 3 ; ¤«¨­  áâப¨
spec_color7__:
db color_title ; 梥â
dw 1C01h ; X/Y ¯®«®¦.
db "SSz"
;
db 1 ; ¤«¨­  áâப¨
spec_color8__:
db color_panel ; 1Bh 梥â
dw 1F01h ; X/Y ¯®«®¦.
db "³"
;
db 3 ; ¤«¨­  áâப¨
spec_color9__:
db color_title ; 梥â
dw 2001h ; X/Y ¯®«®¦.
db "Trk"
;
db 1 ; ¤«¨­  áâப¨
spec_color10__:
db color_panel ; 1Bh 梥â
dw 2301h ; X/Y ¯®«®¦.
db "³"
;
db 3 ; ¤«¨­  áâப¨
spec_color11__:
db color_title ; 梥â
dw 2401h ; X/Y ¯®«®¦.
db "Sec"
;
db 0 ; ª®­¥æ ®¯¨á â¥«ï
;-------------------------------------------------
; ®¯¨á â¥«ì ¡ãª¢ë á®àâ¨à®¢ª¨
;-------------------------------------------------
sort_char:
db 2 ; ¤«¨­  áâப¨
sort_color__:
db color_title ; 梥â
dw 0101h ; X/Y ¯®«®¦.
sort_char__:
db "n" ; n/e/d/s/u
db 0
;-------------------------------------------------
; ®¯¨á â¥«ì á㬬 à­®© ¨­ä®à¬ æ¨¨ (¢­¨§ã ¯ ­¥«¨)
;-------------------------------------------------
deskr_summary:
db 38 ; ¤«¨­  áâப¨
summary_color__:
db color_panel ; 梥â
dw 011Dh ; X/Y ¯®«®¦.
summary_string:
db " 0,000,000,000 (0000) Í 0,000,000,000 "
db 0
;-------------------------------------------------
; ®¯¨á â¥«ì path-áâப¨ «¥¢®© ¯ ­¥«¨
;-------------------------------------------------
path_left:
db 5 ; ¤«¨­  áâப¨
path_color1__:
db color_pointer ; 30h 梥â
dw 0200h ; X/Y ¯®«®¦. áâப¨ ®â ­ ç «  ¯ ­¥«¨
db " " ; ­ ç «® áâப¨
disk_left:
db "X:"
ds width_max+2 ; 33+1 ¡ãä¥à ¯ãâ¨
;-------------------------------------------------
; ®¯¨á â¥«ì path-áâப¨ ¯à ¢®© ¯ ­¥«¨
;-------------------------------------------------
path_right:
db 5 ; ¤«¨­  áâப¨
path_color2__:
db color_pointer ; 30h 梥â
dw 0200h ; X/Y ¯®«®¦. áâப¨ ®â ­ ç «  ¯ ­¥«¨
db " " ; ­ ç «® áâப¨
disk_right:
db "X:"
ds width_max+2 ; 33+1 ¡ãä¥à ¯ãâ¨

239
MOD1/PULLCMND.ASM Executable file
View File

@ -0,0 +1,239 @@
;///////////////////////////////////////////////////////////
;
; ‚믮«­¥­¨¥ ¯ã­ªâ®¢ pull-¬¥­î
;
;///////////////////////////////////////////////////////////
pull_commands:
ld hl,what ; ¯®«¥ ᮡë⨩
ld a,(hl)
cp evCommand ; ᮡë⨥ "ª®¬ ­¤ " ?
ret nz ; ­¥â
inc hl
ld a,(hl) ;+1 ­®¬¥à ª®¬ ­¤ë (¯ã­ªâ )
ld c,a ; á®åà. ­®¬¥à
add a,a
ld e,a
ld d,0
ld hl,pull_array ; ᯨ᮪ ®¡à ¡®â稪®¢
add hl,de
ld e,(hl)
inc hl
ld d,(hl)
ex de,hl
ld a,c ; ¢®ááâ. ­®¬¥à ª®¬ ­¤ë
jp (hl) ; a=¢å®¤­. ¯ à ¬¥âà
; ᯨ᮪ ®¡à ¡®â稪®¢ pull-¬¥­î
pull_array:
; Left
dw left_right ; brief-ä®à¬ â
dw left_right ; medium-ä®à¬ â
dw left_right ; full-ä®à¬ â
dw left_info ; info-ä®à¬ â
dw left_qview ; qview-ä®à¬ â
dw left_right ; sort "Name"
dw left_right ; sort "Ext"
dw left_right ; sort "Date"
dw left_right ; sort "Size"
dw left_right ; "Unsort"
dw pull_empty ;LFilter
dw select_left_drive ; ¬¥­î ¢ë¡®à  ¤¨áª®¢
; Files
dw pull_empty ;Help
dw user_menu ; ¢ë§®¢ Œ¥­î <20>®«ì§®¢ â¥«ï
dw pull_empty ;View
dw pull_empty ;Edit
dw copy ; Copy
dw rename ; Rename
dw make_folder ; Make folder
dw delete ; Delete
dw pull_empty;set_attrib2 ; ¢ë¢®¤ ®ª­   âਡã⮢ ä ©« /¯ ¯ª¨
dw pull_empty ;SelGroup
dw pull_empty ;USelGroup
dw quit ; ¢ë室 ¢ „Ž‘
; Commands
dw pull_empty ;Find
dw pull_empty ;Volume
dw swap_panels ; ®¡¬¥­ ¯ ­¥«¥©
dw hidden_panels ; ã¡à âì/¯®ª § âì ¯ ­¥«¨
dw pull_empty ;Create TRD-image
dw pull_empty ;TRD-image -> Disk
dw pull_empty ;Disk -> TRD-image
; Options
dw set_interface ; ®ª­® ­ áâனª¨ ¨­â¥à䥩á 
dw set_confirm ; ®ª­® ­ áâனª¨ ¯®¤â¢¥à¦¤¥­¨©
dw setup_colors ; ­ áâனª  梥⮢ ¬¥­¥¤¦¥à 
dw pull_empty ;Highlight
dw pull_empty ;ViewSet
dw pull_empty ;EditSet
dw write_ini_file ; § ¯¨á âì ini-ä ©«
; Right
dw left_right ; brief-ä®à¬ â
dw left_right ; medium-ä®à¬ â
dw left_right ; full-ä®à¬ â
dw right_info ; info-ä®à¬ â
dw right_qview ; qview-ä®à¬ â
dw left_right ; sort "Name"
dw left_right ; sort "Ext"
dw left_right ; sort "Date"
dw left_right ; sort "Size"
dw left_right ; "Unsort"
dw pull_empty ;RFilter
dw select_right_drive ; ¬¥­î ¢ë¡®à  ¤¨áª®¢
; § £«ã誠
pull_empty:
ret
;///////////////////////////////////////////////////////////
; <20>ã­ªâë ¬¥­î Left/Right (¤® "Filter...")
; ¢å®¤: a=­®¬¥à pull-¯ã­ªâ 
;///////////////////////////////////////////////////////////
left_right:
ld (punct_left_right),a
ld hl,show_pointer ; â®çª  ¢ë室 
push hl
cp cmLUnsort+1
ld a,(cur_panel) ; 0/#80 «¥¢ ï/¯à ¢ ï  ªâ. ¯ ­¥«ì
jr c,punct_left
; Right-¯ã­ªâ ¬¥­î
rlca
jr c,pars_left_right ;  ªâ. ¯à ¢ ï
lft_right1:
call change_panel
call pars_left_right
jp change_panel
; Left-¯ã­ªâ ¬¥­î
punct_left:
rlca
jr c,lft_right1 ;  ªâ. ¯à ¢ ï
;
pars_left_right:
db 3Eh ; ld a,..
punct_left_right:
db 0 ; ­®¬¥à pull-¯ã­ªâ 
; ä®à¬ âë ᯨ᪠
cp cmLBrief
jp z,set_format_brief
cp cmRBrief
jp z,set_format_brief
cp cmLMed
jp z,set_format_medium
cp cmRMed
jp z,set_format_medium
cp cmLFull
jp z,set_format_full
cp cmRFull
jp z,set_format_full
; á®àâ¨à®¢ª¨ ᯨ᪠
ld c,"n" ; name
cp cmLName
jr z,punct_sort
cp cmRName
jr z,punct_sort
ld c,"x" ; ext
cp cmLExt
jr z,punct_sort
cp cmRExt
jr z,punct_sort
ld c,"d" ; date
cp cmLDate
jr z,punct_sort
cp cmRDate
jr z,punct_sort
ld c,"s" ; size
cp cmLSize
jr z,punct_sort
cp cmRSize
jr z,punct_sort
ld c,"u" ; unsorted
cp cmLUnsort
jr z,punct_sort
cp cmRUnsort
jr z,punct_sort
ret
;///////////////////////////////////////////////////////////
; <20>  á®àâ¨à®¢ªã ᯨ᪠
;///////////////////////////////////////////////////////////
punct_sort:
jp sorting_list
;///////////////////////////////////////////////////////////
; ‚ë§®¢ info-¯ ­¥«¨
;///////////////////////////////////////////////////////////
; Left-¯ã­ªâ
;left_info:
; ld hl,show_pointer
; push hl
; ld a,(cur_panel) ; 0/#80 «¥¢ ï/¯à ¢ ï  ªâ. ¯ ­¥«ì
; rlca
; jp c,alt_info_panel ;  ªâ. ¯à ¢ ï (¤ ­­ë¥  ªâ. ¯ ­¥«¨ -> ¢ ¯ áá. ¯ ­¥«ì)
; jp set_info_actpanel ; ¤ ­­ë¥ ¯ áá. ¯ ­¥«¨ -> ¢  ªâ. ¯ ­¥«ì
;
;
; Right-¯ã­ªâ
;right_info:
; ld hl,show_pointer
; push hl
; ld a,(cur_panel) ; 0/#80 «¥¢ ï/¯à ¢ ï  ªâ. ¯ ­¥«ì
; rlca
; jp nc,alt_info_panel ;  ªâ. «¥¢ ï (¤ ­­ë¥  ªâ. ¯ ­¥«¨ -> ¢ ¯ áá. ¯ ­¥«ì)
; jp set_info_actpanel ; ¤ ­­ë¥ ¯ áá. ¯ ­¥«¨ -> ¢  ªâ. ¯ ­¥«ì
left_info:
ld hl,show_pointer
push hl
ld a,(cur_panel) ; 0/#80 «¥¢ ï/¯à ¢ ï  ªâ. ¯ ­¥«ì
rlca
jp c,alt_info_panel ;  ªâ. ¯à ¢ ï
lft_info1:
call change_panel
call alt_info_panel
jp change_panel
; Right-¯ã­ªâ
right_info:
ld hl,show_pointer
push hl
ld a,(cur_panel) ; 0/#80 «¥¢ ï/¯à ¢ ï  ªâ. ¯ ­¥«ì
rlca
jp nc,alt_info_panel ;  ªâ. «¥¢ ï
jr lft_info1
;///////////////////////////////////////////////////////////
; ‚ë§®¢ qview-¯ ­¥«¨
;///////////////////////////////////////////////////////////
; Left-¯ã­ªâ
left_qview:
ld hl,show_pointer
push hl
ld a,(cur_panel) ; 0/#80 «¥¢ ï/¯à ¢ ï  ªâ. ¯ ­¥«ì
rlca
jp c,alt_qview_panel ;  ªâ. ¯à ¢ ï
lft_qview1:
call change_panel
call alt_qview_panel
jp change_panel
; Right-¯ã­ªâ
right_qview:
ld hl,show_pointer
push hl
ld a,(cur_panel) ; 0/#80 «¥¢ ï/¯à ¢ ï  ªâ. ¯ ­¥«ì
rlca
jp nc,alt_qview_panel ;  ªâ. «¥¢ ï
jr lft_qview1

30
MOD1/QUIT.Z80 Executable file
View File

@ -0,0 +1,30 @@
;ÉÍÍÍÍÍÍÍÍÍÍ Quit ÍÍÍÍÍÍÍÍÍÍ»
;º º
;º Do you want to quit FM ? º
;º Yes No º
;º º
;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
; ޝ¨á â¥«ì ®ª­  ¯®¤â¢¥à¦¤¥­¨ï ¢ë室  ¨§ ¬¥­¥¤¦¥à 
win_dial_quit:
dw 0A1Ah,061Ch ; Yo,Xo,lenY,lenX
db "Quit",0 ; â¨â« ®ª­ 
;
db TextLine
dw 0202h ; Yo,Xo
db "Do you want to quit FM ?",0
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 030Eh ; Yo,Xo
db " &No ",0 ; ¨¬ï ¡ãâ®­ 
db 2Fh ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmCancel ; ­®¬¥à ª®¬ ­¤ë
db 1 ; ª®­â¥ªáâ
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 0309h ; Yo,Xo
db " &Yes ",0 ; ¨¬ï ¡ãâ®­ 
db 15h ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmOkey ; ­®¬¥à ª®¬ ­¤ë
db 0 ; ª®­â¥ªáâ
;
db -1 ; ª®­¥æ ®¯¨á â¥«ï

90
MOD1/QVIEW.Z80 Executable file
View File

@ -0,0 +1,90 @@
;ÉÍÍÍÍÍÍÍÍÍÍ Information ÍÍÍÍÍÍÍÍÍÍ»
;º º
;º Scanning the folder... º
;º º
;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
; ޝ¨á â¥«ì ®ª­ 
win_scan_folder:
dw 0A16h,0523h ; Yo,Xo,lenY,lenX
db "Information",0 ; â¨â« ®ª­ 
;
db TextLine
dw 0207h ; Yo,Xo
db "Scanning the folder...",0
db -1 ; ª®­¥æ ®¯¨á â¥«ï
;-------------------------------------------------
; â¨â«-®¯¨á â¥«ì qview-ä®à¬ â  ¤«ï ¯ ¯®ª
;-------------------------------------------------
qview_folder_panel:
db 6 ; ¤«¨­  áâப¨
qview_color2__:
db color_panel ; 1Bh 梥â
dw 0203h ; X/Y ¯®«®¦.
db "Folder"
;
db 29 ; ¤«¨­  áâப¨
qview_color3__:
db color_folder ; 1Fh 梥â
dw 0903h ; X/Y ¯®«®¦.
qview_name_folder:
db " " ; ¬ ªá. 29 ᨬ¢®«®¢
;
db 9 ; ¤«¨­  áâப¨
qview_color4__:
db color_panel ; 梥â
dw 0205h ; X/Y ¯®«®¦.
db "Contains:"
;
db 7 ; ¤«¨­  áâப¨
qview_color5__:
db color_panel ; 梥â
dw 0207h ; X/Y ¯®«®¦.
db "Folders"
;
db 6 ; ¤«¨­  áâப¨
qview_color6__:
db color_title ; 梥â
dw 1707h ; X/Y ¯®«®¦.
qview_total_folders:
db "00,000"
;
db 5 ; ¤«¨­  áâப¨
qview_color7__:
db color_panel ; 梥â
dw 0208h ; X/Y ¯®«®¦.
db "Files"
;
db 6 ; ¤«¨­  áâப¨
qview_color8__:
db color_title ; 梥â
dw 1708h ; X/Y ¯®«®¦.
qview_total_files:
db "00,000"
;
db 10 ; ¤«¨­  áâப¨
qview_color9__:
db color_panel ; 梥â
dw 0209h ; X/Y ¯®«®¦.
db "Files size"
;
db 13 ; ¤«¨­  áâப¨
qview_color10__:
db color_title ; 梥â
dw 1009h ; X/Y ¯®«®¦.
qview_total_bytes:
db "0,000,000,000"
;
; â¨â« qview-ä®à¬ â 
title_qview:
db 12 ; ¤«¨­  áâப¨
qview_color1__:
db color_pointer ; 3Fh 梥â
dw 0E00h ; X/Y ¯®«®¦.
db " Quick view "
;
db 0 ; ª®­¥æ ®¯¨á â¥«ï

69
MOD1/RENAME.Z80 Executable file
View File

@ -0,0 +1,69 @@
;ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ Rename ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
;º º
;º °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° º
;ºÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĺ
;º [ Ok ] [ Cancel ] º
;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
; ޝ¨á â¥«ì ­ ç «ì­®£® ®ª­  ª®¯¨à®¢ ­¨ï
dial_rename:
dw 0902h,064Ch ; Yo,Xo,lenY,lenX
db "Rename",0 ; â¨â« ®ª­ 
;
db HLine
dw 0301h ; Yo,Xo
db 74 ; ¤«¨­  «¨­¨¨
db "Ä" ; ᨬ¢®« § ¯®«­¥­¨ï
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 041Dh ; Yo,Xo
db "[ &Ok ]",0 ; ¨¬ï ¡ãâ®­ 
db 18h ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmOkey ; ­®¬¥à ª®¬ ­¤ë
db 1 ; ª®­â¥ªáâ
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 0425h ; Yo,Xo
db "[ Ca&ncel ]",0 ; ¨¬ï ¡ãâ®­ 
db 2Fh ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmCancel ; ­®¬¥à ª®¬ ­¤ë
db 2 ; ª®­â¥ªáâ
;
db InputLine ; å à ªâ¥à ®¡ê¥ªâ 
dw 0202h ; Yo,Xo
db 72 ; ¤«¨­  áâப¨
db 0 ; ª®­â¥ªáâ
dw input_line_rename ; ¡ãä¥à áâப¨ ¢¢®¤ 
;
db -1 ; ª®­¥æ ®¯¨á â¥«ï
;ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍ Rename ÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
;º º
;º Cannot rename the file or folder º
;º FILENAME.EXT º
;º º
;º Ok º
;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
; ޝ¨á â¥«ì ®ª­  Žè¨¡ª¨ 㤠«¥­¨ï
dial_error_rename:
dw 0915h,0726h ; Yo,Xo,lenY,lenX
db "Rename",0 ; â¨â« ®ª­ 
;
db TextLine
dw 0203h ; Yo,Xo
db "Cannot rename the file or folder",0
;
db TextLine
dw 030Dh ; Yo,Xo
rename_name1:
db "FILENAME.EXT",0
;
db Button ; ­®¬¥à ®¡ê¥ªâ 
dw 0510h ; Yo,Xo
db " &Ok ",0 ; ¨¬ï ¡ãâ®­ 
db 13h ; ᪥­-ª®¤ hot-ª« ¢¨è¨
db cmOkey ; ­®¬¥à ª®¬ ­¤ë
db 0 ; ª®­â¥ªáâ
;
db -1 ; ª®­¥æ ®¯¨á â¥«ï

110
MOD1/SELDRV.ASM Executable file
View File

@ -0,0 +1,110 @@
;/////////////////////////////////////////////////
;
; <20>ਬ¥­¥­¨¥ ¯ã­ªâ  "Left->Change disk"
;
;/////////////////////////////////////////////////
set_left_drive:
ld hl,what
ld a,(hl) ;+0
cp evCommand ; ᮡë⨥ "ª®¬ ­¤ "
ret nz
call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
ret z ; ¢ëª«.
inc hl ;+1
set_ldrive_frm:
ld de,format_mode ; ä®à¬ â ¯ ­¥«¨
ld a,(de)
and form_info+form_qview ; info, qview
ret nz
set_ldrive_dsk:
ld de,disk ; ï祩ª  ¤¨áª   ªâ. ¯ ­¥«¨
ld a,(de)
ld (set_ldrive_altdsk+1),a ; á®åà. ¤¨áª
ld a,(hl) ;+1 ­®¬¥à ¤¨áª 
ld (de),a ; ­®¬¥à ¤¨áª   ªâ. ¯ ­¥«¨
; ®¡­®¢«¥­¨¥ ¯ ­¥«¥© ¯à¨ ᬥ­¥ ¤¨áª 
ld a,(cur_panel) ; ⥪. ¯ ­¥«ì
or a
jr nz,set_ldrive_next
call get_new_flist ;  ªâ. «¥¢ ï
jr set_ldrive_next1
; ¯ áá. ¯ ­¥«ì
set_ldrive_next:
call change_panel
call get_new_flist ;  ªâ. ¯à ¢ ï
push af
call change_panel
pop af
set_ldrive_next1:
ld a,true
ld (enter_done3+1),a ; ãáâ. ä« £ ®¡­®¢«¥­¨ï info-¯ ­¥«¨
jp nc,enter_done1 ; Ok, â¥áâ ­  qview-ä®à¬ â ¤à.¯ ­¥«¨ (enter.asm)
; ®è¨¡ª  ç⥭¨ï ¤¨áª 
; § ­®¢® ¢ë§¢ âì Žª­® ‚ë¡®à  ¤¨áª®¢
ld hl,(set_ldrive_dsk+1)
set_ldrive_altdsk:
ld a,0
ld (hl),a ; ¢®ááâ. ¤¨áª ¯ ­¥«¨
jp select_left_drive ;  ªâ. «¥¢ ï ¯ ­¥«ì
;/////////////////////////////////////////////////
;
; <20>ਬ¥­¥­¨¥ ¯ã­ªâ  "Right->Change disk"
;
;/////////////////////////////////////////////////
set_right_drive:
ld hl,what
ld a,(hl) ;+0
cp evCommand ; ᮡë⨥ "ª®¬ ­¤ "
ret nz
call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
ret z ; ¢ëª«.
inc hl ;+1
set_rdrive_frm:
ld de,format_mode ; ä®à¬ â ¯ ­¥«¨
ld a,(de)
and form_info+form_qview ; info, qview
ret nz
set_rdrive_dsk:
ld de,disk ; ï祩ª  ¤¨áª   ªâ. ¯ ­¥«¨
ld a,(de)
ld (set_rdrive_altdsk+1),a ; á®åà. ¤¨áª
ld a,(hl) ;+1 ­®¬¥à ¤¨áª 
ld (de),a ; ­®¬¥à ¤¨áª   ªâ. ¯ ­¥«¨
ld a,(cur_panel) ; ⥪. ¯ ­¥«ì
or a
jr z,set_rdrive_next ; ¢ë¢®¤ ¯ áá. ¯ ­¥«¨
call get_new_flist ;  ªâ. «¥¢ ï
jr set_rdrive_next1
; ¯ áá. ¯ ­¥«ì
set_rdrive_next:
call change_panel
call get_new_flist ;  ªâ. ¯à ¢ ï
push af
call change_panel
pop af
set_rdrive_next1:
ld a,true
ld (enter_done3+1),a ; ãáâ. ä« £ ®¡­®¢«¥­¨ï info-¯ ­¥«¨
jp nc,enter_done1 ; Ok, â¥áâ ­  qview-ä®à¬ â ¤à.¯ ­¥«¨ (enter.asm)
; ®è¨¡ª  ç⥭¨ï ¤¨áª 
; § ­®¢® ¢ë§¢ âì Žª­® ‚ë¡®à  ¤¨áª®¢
ld hl,(set_rdrive_dsk+1)
set_rdrive_altdsk:
ld a,0
ld (hl),a ; ¢®ááâ. ¤¨áª ¯ ­¥«¨
jp select_right_drive
;-------------------------------------------------
; <20>à®ç¨â âì ­®¢ë© ᯨ᮪ ¯ ­¥«¨ (¤¨áª/¯ ¯ª )
;-------------------------------------------------
get_new_flist:
call read_new_folder ; ­®¢ë© ᯨ᮪ ª â «®£  + à §¬¥à ¯ ¯ª¨
ret c
call dinqview_set_flag ; ãáâ. ä« £ "®âà ¡®â âì dinamqview"
call sorting ; à §¤¥«ì­ë© ᯨ᮪ 㪠§ â¥«¥© + á®àâ. ᯨ᪠
jp A20FC ; ¢ë¢®¤  ªâ. ¯ ­¥«¨

209
MOD1/SETCOLOR.ASM Executable file
View File

@ -0,0 +1,209 @@
;-----------------------------------------------------------
; <20> áâனª  梥⮢ ¬¥­¥¤¦¥à 
;-----------------------------------------------------------
set_colors:
call set_keybar_colors ; ­ áâனª  æ¢¥â  key-¡ à 
call set_qview_colors ; ­ áâனª  æ¢¥â  qview-¯ ­¥«¨
call set_info_colors ; ­ áâனª  æ¢¥â  info-¯ ­¥«¨
call set_info_trd_colors ; ­ áâனª  æ¢¥â  info-®¯¨á â¥«ï ᯥª-ä®à¬ â 
; Normal text
ld a,(color_array+2) ; 1Bh
ld (full_color2__),a
ld (full_color4__),a
ld (full_color6__),a
ld (med_color2__),a
ld (brief_color2__),a
ld (brief_color4__),a
ld (spec_color2__),a
ld (spec_color4__),a
ld (spec_color6__),a
ld (spec_color8__),a
ld (spec_color10__),a
ld (botline_color_),a
ld (footer_color1__),a
ld (footer_color2__),a
ld (footer_color3__),a
ld (footer_color4__),a
ld (footer_color41__),a
ld (up_color1__),a
ld (up_color2__),a
ld (up_color3__),a
ld (up_color31__),a
ld (up_color4__),a
ld (status_color__),a
ld (summary_color__),a
; Column title
ld a,(color_array+5) ; 1Eh
ld (full_color1__),a
ld (full_color3__),a
ld (full_color5__),a
ld (full_color7__),a
ld (med_color1__),a
ld (med_color3__),a
ld (brief_color1__),a
ld (brief_color3__),a
ld (brief_color5__),a
ld (spec_color1__),a
ld (spec_color3__),a
ld (spec_color5__),a
ld (spec_color7__),a
ld (spec_color9__),a
ld (spec_color11__),a
ld (sort_color__),a
; Selected info
ld a,(color_array+6) ; 3Eh
ld (markline_color_),a
ld (markline_color1_),a
; Selected title
ld a,(color_array+4) ; 30h
ld (path_color1__),a ; path-áâப  «¥¢®© ¯ ­¥«¨
ld (path_color2__),a ; path-áâப  ¯à ¢®© ¯ ­¥«¨
; — áë ¢ ¯ ­¥«ïå
ld b,5 ; ç¨á«® ï祥ª
ld hl,clock_attr
ld a,(color_array+53)
ld (hl),a
inc hl
djnz $-2
; 梥â áâப ¢¢®¤  (InputLine, InpLine)
ld a,(color_array+33)
ld (ColorInLn+1),a
ret
;-------------------------------------------------
; ˆ­¨æ¨ «¨§ æ¨ï æ¢¥â  key-¡ à 
;-------------------------------------------------
; f 30h (color_array+20)
; b 0Eh (color_array+21)
;
; b ffffff b
; 0 123456 7 - 9 áâப
;
; bb ffffff
; 01 234567 - 1 áâப 
;
set_keybar_colors:
ld hl,keybar_attr ; ¬ áᨢ  âਡã⮢
ld c,9 ; ç¨á«® ¯ã­ªâ®¢ á ®¤¨­ ª®¢ë¬¨  âਡãâ ¬¨
ld de,(color_array+20) ; 0Eh/30h b/f
set_keybar__:
ld b,1 ; ç¨á«® ¡ ©â
ld a,d
call set_keybar1__ ; 梥â hot-ç¨á« 
ld b,6
ld a,e
call set_keybar1__ ; 梥⠯㭪â 
ld b,1
ld a,d
call set_keybar1__
dec c
jr nz,set_keybar__
; ¯®á«¥¤­¨© ¯ã­ªâ
ld b,2
call set_keybar1__
ld b,6
ld a,e
set_keybar1__:
ld (hl),a
inc hl
djnz $-2
ret
;-------------------------------------------------
; <20> áâனª  梥⮢ ¯ ­¥«¨ ¡ëáâண® ¯à®á¬®âà 
;-------------------------------------------------
; qview.z80
set_qview_colors:
; Normal text
ld a,(color_array+2) ; 1Bh
ld (qview_color2__),a
ld (qview_color4__),a
ld (qview_color5__),a
ld (qview_color7__),a
ld (qview_color9__),a
; Highlighted info
ld a,(color_array+7) ; 1Eh
ld (qview_color6__),a
ld (qview_color8__),a
ld (qview_color10__),a
; Info names
ld a,(color_array+8) ; 1Fh
ld (qview_color3__),a
ret
;-------------------------------------------------
; <20> áâனª  梥⮢ ¨­ä®à¬ æ¨®­­®© ¯ ­¥«¨
;-------------------------------------------------
; info.z80
set_info_colors:
; Normal text
ld a,(color_array+2) ; 1Bh
ld (info_color2__),a
ld (info_color3__),a
ld (info_color4__),a
ld (info_color5__),a
ld (info_color7__),a
ld (info_color9__),a
ld (info_color11__),a
ld (info_color13__),a
ld (info_color15__),a
ld (info_color17__),a
ld (info_color19__),a
;ld (info_color20__),a
;ld (info_color21__),a
;ld (info_color22__),a
ld (info_color23__),a
ld (info_color25__),a
ld (info_color27__),a
ld (info_color29__),a
;ld (info_color30__),a
; Highlighted info
ld a,(color_array+7) ; 1Eh
ld (info_color6__),a
ld (info_color8__),a
ld (info_color10__),a
ld (info_color12__),a
ld (info_color16__),a
ld (info_color18__),a
; Info names
ld a,(color_array+8) ; 1Fh
ld (info_color24__),a
ld (info_color26__),a
ld (info_color28__),a
ret
;-------------------------------------------------
; <20> áâனª  梥⮢ ¨­ä®-¯ ­¥«¨ ᯥª-ä®à¬ â 
;-------------------------------------------------
; info2.z80
set_info_trd_colors:
; Normal text
ld a,(color_array+2) ; 1Bh
ld (info_color33__),a
ld (info_color34__),a
ld (info_color36__),a
ld (info_color38__),a
ld (info_color40__),a
ld (info_color42__),a
ld (info_color43__),a
ld (info_color45__),a
ld (info_color47__),a
ld (info_color48__),a
ld (info_color50__),a
ld (info_color52__),a
; Color_title
ld a,(color_array+5) ; 1Eh
ld (info_color35__),a
ld (info_color37__),a
ld (info_color39__),a
ld (info_color41__),a
ld (info_color44__),a
ld (info_color46__),a
ld (info_color49__),a
ld (info_color51__),a
ld (info_color53__),a
ret

447
MOD1/SORT.ASM Executable file
View File

@ -0,0 +1,447 @@
;
; Shell-Metzner  «£®à¨â¬ á®àâ¨à®¢ª¨
;
;-------------------------------------------------
; ‘®àâ¨à®¢ª  ᯨ᪠ ¯ ­¥«¨ (¢ë§®¢ ¨§ ®¡®«®çª¨)
; ¢å®¤: c = ¡ãª¢  á®àâ¨à®¢ª¨ (n/x/d/s/u)
;-------------------------------------------------
sorting_list:
call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
ret z ; ¢ëª«.
ld hl,(all_files) ; ç¨á«® ä ©«®¢ ¨ ¯ ¯®ª
ld a,l
or h
ret z
ld a,(format_mode) ; 䮬 â  ªâ. ¯ ­¥«¨
and form_trd ; trd/scl spectrum
ret nz
ld hl,(sort_type) ; ⨯ á®àâ.  ªâ. ¯ ­¥«¨
ld a,h
xor 1 ; ¨­¢¥àá¨ï á®àâ¨à®¢ª¨
ld h,a
ld a,l
cp c ; ­®¢ë© = áâ à®¬ã ?
jr z,$+4 ; ¨­¢¥àá¨ï ०¨¬  á®àâ¨à®¢ª¨
ld h,0 ; á¡à. á®àâ¨à®¢ªã ¢ ""
ld l,c
ld (sort_type),hl
call sorting ; à §¤¥«ì­ë© ᯨ᮪ 㪠§ â¥«¥© + á®àâ. ᯨ᪠
jp A20FC ; ®¡­®¢¨âì ᯨ᮪
;-----------------------------------------------------------
; ‘®§¤ ­¨¥ à §¤¥«ì­®£® ᯨ᪠ 㪠§ â¥«¥© ¨ á®àâ¨à®¢ª 
; ᯨ᪮¢ ¯ ¯®ª ¨ ä ©«®¢.
;
; ¢å®¤: de=ª®«-¢® § ¯¨á¥© ᯨ᪠
;-----------------------------------------------------------
sorting:ld de,(all_files) ; ç¨á«® ä ©«®¢ ¨ ¯ ¯®ª
ld a,e
or d
ret z
call make_array_pointer ; á®§¤ âì à §¤¥«ì­ë© ᯨ᮪ 㪠§ â¥«¥©
ld hl,sort_type+1
ld a,(hl) ; 00/01 /
or a
ld a,0D2h ; "jp nc,.."
jr z,$+4
ld a,0DAh ; "jp c,.."
ld (sort_mode),a ; / á®àâ¨à®¢ª 
dec hl
ld a,(hl) ; hl=sort_type
cp "n" ; name
jr z,sort_name
cp "x" ; extension
jr z,sort_ext
cp "d" ; date
jr z,sort_date
cp "s" ; size
jr z,sort_size
jr unsorted_list ; á®§¤ âì ®¡é¨© ᯨ᮪ 㪠§ â¥«¥©
; ‘®àâ¨à®¢ª  ¯ ¯®ª
sort_folders:
ld de,(all_folders) ; ç¨á«® ¯ ¯®ª ¢ ᯨ᪥
ld hl,(directory) ; ­ ç «® ᯨ᪠ 㪠§ â¥«¥© ¯ ¯®ª
ld c,(hl)
inc hl
ld b,(hl)
dec hl
ld a,(bc) ;+0 ¨¬ï ä ©« 
cp "." ; ".." ¯¥à¢ ï § ¯¨áì ?
jr nz,$+5 ; ­¥â
dec de ; --ç¨á«® ¯ ¯®ª
inc hl ; ­  á«¥¤. 㪠§ â¥«ì
inc hl
jp metzner_sort
; Ctrl+F3. ‘®àâ¨à®¢ª  ¯® ¨¬¥­¨
sort_name:
ld hl,cmp_names ; ¯à®æ¥¤ãà  áà ¢­¥­¨ï
sort__: ld (sort_func+1),hl
call sort_folders ; á®àâ¨à®¢ª  ¯ ¯®ª
ld hl,(all_files) ; ç¨á«® § ¯¨á¥© ᯨ᪠
ld de,(all_folders) ; ç¨á«® ¯ ¯®ª ᯨ᪠
and a
sbc hl,de
ex de,hl ; de=ç¨á«® ä ©«®¢ ¢ ᯨ᪥
ld hl,(directory+2) ; ­ ç «® ᯨ᪠ 㪠§ â¥«¥© ä ©«®¢
jp metzner_sort ; á®àâ¨à®¢ª 
; Ctrl+F4. ‘®àâ¨à®¢ª  ¯® à áè¨à¥­¨î
sort_ext:
ld hl,cmp_extensions ; ¯à®æ¥¤ãà  áà ¢­¥­¨ï
jr sort__
; Ctrl+F5. ‘®àâ¨à®¢ª  ¯® ¤ â¥
sort_date:
ld hl,cmp_date ; ¯à®æ¥¤ãà  áà ¢­¥­¨ï
jr sort__
; Ctrl+F6. ‘®àâ¨à®¢ª  ¯® à §¬¥àã
sort_size:
ld hl,cmp_size ; ¯à®æ¥¤ãà  áà ¢­¥­¨ï
jr sort__
; Ctrl+F7. <20>¥§ á®àâ¨à®¢ª¨.
unsorted_list:
ld a,(cash_left_dir) ; ¡ ­ª  ª â «®£   ªâ. ¯ ­¥«¨
out (SLOT3),a ; ¯®¤ª«. áâà ­¨æã ª â «®£ 
ld iy,0C000h ; ­ ç «® ᪠­¨à㥬®© ¯ ¯ª¨
ld hl,(directory) ; ­ ç «® ¡ãä¥à  ᯨ᪠  ¤à¥á®¢
ld bc,32 ; ms-dos § ¯¨áì
ld a,(format_mode) ; ä®à¬ â  ªâ. ¯ ­¥«¨
and form_trd ; trd/scl spectrum
jr z,$+5
unsorted_spec: ; <- ¯¥à¥å®¤ ¨§ "make_array_pointer"
ld bc,16 ; spec-§ ¯¨áì
; á®§¤ âì ®¡é. ᯨ᮪ 㪠§ â¥«¥©
ld de,(all_files) ; ç¨á«® ä ©«®¢ ¨ ¯ ¯®ª ¢ ᯨ᪥
unsorted_loop:
db 0FDh
ld a,l
ld (hl),a
inc hl
db 0FDh
ld a,h
ld (hl),a
inc hl
add iy,bc ; ­  á«¥¤. § ¯¨áì
dec de
ld a,e
or d
jp nz,unsorted_loop
ret
;-----------------------------------------------------------
; ‘®§¤ ­¨¥ ¬ áᨢ  㪠§ â¥«¥© ­  § ¯¨á¨ ᯨ᪠
;
; ¢å®¤: de = ª®«-¢® § ¯¨á¥© ᯨ᪠
; ¢ë室: directory+2 - ᮤ¥à¦¨â ­ ç «® ᯨ᪠ ä ©«®¢
; all_folders - ᮤ¥à¦¨â ç¨á«® ¯ ¯®ª ¢ ᯨ᪥
; NZ - ᯥª-ᯨ᮪
;-----------------------------------------------------------
make_array_pointer:
ld iy,0C000h ; ­ ç «® ᪠­¨à㥬®£® ª â «®£ 
ld a,(cash_left_dir) ; ¡ ­ª  ª â «®£   ªâ. ¯ ­¥«¨
out (SLOT3),a ; ¯®¤ª«. áâà ­¨æã ª â «®£ 
ld hl,(directory) ; ­ ç «® ᯨ᪠ 㪠§ â¥«¥©
ld a,(format_mode) ; ä®à¬ â  ªâ. ¯ ­¥«¨
and form_trd ; trd/scl spectrum
jr z,make_msdos_list
; ᯥª-ᯨ᮪
ld a,"u"
ld (sort_type),a ; ãáâ. ०¨¬ "unsort"
ld bc,0
ld (all_folders),bc ; ç¨á«® ¯ ¯®ª ¢ ᯨ᪥
ld (directory+2),hl ; ­ ç «® ᯨ᪠ ä ©«®¢
jr unsorted_spec ; á®§¤ âì ®¡é. ᯨ᮪ 㪠§ â¥«¥©
; á®§¤ âì à §¤¥«ì­ë© ᯨ᮪ 㪠§ â¥«¥©
make_msdos_list:
exx
ld bc,32 ; ms-dos § ¯¨áì
exx
; á®§¤ âì 㪠§ â¥«¨ ­  ¯ ¯ª¨
ld a,0CAh ; "jp z,"
call make_flist1__ ; á®§¤ âì ᯨ᮪ ¯ ¯®ª
ld (all_folders),bc ; ç¨á«® ¯ ¯®ª ¢ ᯨ᪥
ld (directory+2),hl ; ­ ç «® ᯨ᪠ ä ©«®¢
; á®§¤ âì 㪠§ â¥«¨ ­  ä ©«ë
ld iy,0C000h ; ­ ç «® ᪠­¨à㥬®£® ª â «®£ 
ld de,(all_files) ; ç¨á«® ä ©«®¢ ¨ ¯ ¯®ª
ld a,0C2h ; "jp nz,"
;
make_flist1__:
ld (make_flist_code),a
ld bc,0 ; áç¥â稪 ç¨á«  ¯ ¯®ª/ä ©«®¢
make_flist_loop:
bit 4,(iy+11) ;+11  âਡãâ ä ©« 
make_flist_code:
jp z,make_flist_next
db 0FDh
ld a,l
ld (hl),a
inc hl
db 0FDh
ld a,h
ld (hl),a
inc hl
inc bc ; ++ç¨á«® ¯ ¯®ª/ä ©«®¢
make_flist_next:
exx
add iy,bc ; ­  á«¥¤. ms-dos § ¯¨áì
exx
dec de
ld a,e
or d
jp nz,make_flist_loop
ret
;-------------------------------------------------
; ‘®àâ¨à®¢ª  ᯨ᪠. Shell-Metzner  «£®à¨â¬.
; <20> ¡®â ¥â á 㪠§ â¥«ï¬¨ ­  § ¯¨á¨.
;
; ¢å®¤: hl= ¤à¥á ¬ áᨢ  㪠§ â¥«¥©
; de=ª®«-¢® § ¯¨á¥© ¢ ᯨ᪥
;-------------------------------------------------
metzner_sort:
ld (sort_base+1),hl ;  ¤à¥á ¬ áᨢ 
ld (sort_count+1),de ; ª®«-¢® í«¥¬¥­â®¢ (­¥ ¨§¬.)
ld (sort_count1),de ; (áç¥â稪)
; à §¤¥«¨âì ⥪. ç¨á«® í«¥¬¥­â®¢ ­  2
sort_divide:
db 21h ; ld hl,..
sort_count1:
dw 0 ; ⥪. ª®«-¢® í«¥¬¥­â®¢ / 2
and a
ld a,h
rra
ld h,a
ld a,l
rra
ld l,a
ld a,l
or h
ret z ; ¢á¥ í«¥¬¥­âë ®âá®àâ¨à®¢ ­ë
ld (sort_count1),hl ;6,3,1,0 ⥪. ª®«-¢® í«¥¬¥­â®¢ / 2
ex de,hl
sort_count:
ld hl,0 ;12 (count) ª®«-¢® í«¥¬¥­â®¢
and a
sbc hl,de ; sreclen = sort_count - sort_count1
ld (sreclen+1),hl ;6,9,11
ld hl,1
ld (sortv1),hl
ld (sstadr),hl
dec l
add hl,de
add hl,de
ld (sortv2),hl ;+42,+21,+0B ᬥé. ¤® á¥à¥¤¨­ë ⥪. ¬ áᨢ 
ex de,hl
sort_base:
ld hl,0 ; ­ ç «® ¬ áᨢ 
;
sort_ndone:
ld (sortv4),hl ;  ¤à¥á á«¥¤. § ¯¨á¨ 1-© ¯®«®¢¨­ë ¬ áᨢ  
ld (sortv3),hl
ex de,hl
add hl,de ; ᬥé.¤® á¥à¥¤¨­ë ¬ áᨢ  +  ¤à¥á á«¥¤. § ¯¨á¨
ex de,hl ; de= ¤à¥á á«¥¤. § ¯¨á¨ 2-© ¯®«®¢¨­ë ¬ áᨢ  
sort_compre:
ld (srtptr2+1),de
ld (srtptr1+1),hl
; à § ¤à¥á æ¨ï de ¨ hl
ld a,(de)
ld c,a
inc de
ld a,(de)
ld d,a
ld e,c
ld a,(hl)
inc hl
ld h,(hl)
ld l,a
ld (srtptr3+1),hl
ld (srtptr4+1),de
;
sort_func:
call cmp_extensions ; ⥪. ¯/¯ á®àâ¨à®¢ª¨
jp z,noswap_items ; í«¥¬¥­âë à ¢­ë
sort_mode:
jp nc,noswap_items ; nc/c ⨯ / á®àâ¨à®¢ª¨
; ®¡¬¥­ïâì  ¤à¥á  㪠§ â¥«¥©
srtptr2:ld de,0 ;  ¤à¥á § ¯¨á¨ 2-© ¯®«®¢¨­ë ᯨ᪠
srtptr1:ld hl,0 ;  ¤à¥á § ¯¨á¨ 1-© ¯®«®¢¨­ë ᯨ᪠
ld a,(de)
ld c,a
ld a,(hl)
ld (de),a
ld (hl),c
inc de
inc hl
ld a,(de)
ld c,a
ld a,(hl)
ld (de),a
ld (hl),c
;
ld hl,(sort_count1) ;6,3,1 ⥪. ª®«-¢® í«¥¬¥­â®¢ / 2
ld a,h
cpl
ld d,a
ld a,l
cpl
ld e,a
db 21h ; ld hl,..
sortv1: dw 0
add hl,de ;-7, -4, -2
jp nc,noswap_items
inc hl
ld (sortv1),hl ; ¯®à浪. ­®¬¥à  § ¯¨á¥©
db 11h ; ld de,..
sortv3: dw 0 ; ⥪. § ¯¨áì 1-© ¯®«®¢¨­ë ¬ áᨢ 
ld hl,(sortv2) ;+42,+21,+0B ᬥé. ¤® á¥à¥¤¨­ë ⥪. ¬ áᨢ 
ld a,e
sub l
ld l,a
ld a,d
sbc a,h
ld h,a
ld (sortv3),hl ;  ¤à¥á  § ¯¨á¥©
jp sort_compre ; áà ¢­¨âì í«¥¬¥­âë (de ¨ hl)
;
noswap_items:
db 21h ; ld hl,..
sstadr: dw 0 ; ®â 1
inc hl ; ++incr
ld (sstadr),hl ;
ld (sortv1),hl
ex de,hl
sreclen:ld hl,0 ;6,9,11 (sreclen) ¤«¨­  í«¥¬¥­â 
and a
sbc hl,de ; cmp sreclen ¨ incr
jp c,sort_divide
db 21h
sortv4: dw 0 ;  ¤à¥á á«¥¤. § ¯¨á¨ 1-© ¯®«®¢¨­ë ¬ áᨢ 
inc hl ; ­  á«¥¤. 㪠§ â¥«ì
inc hl
db 11h ; ld de,..
sortv2: dw 0 ;+42,+21,+0B ᬥé. ¤® á¥à¥¤¨­ë ⥪. ¬ áᨢ 
jp sort_ndone
;-------------------------------------------------
; ‘à ¢­¨âì ¨¬¥­ 
;
; in: hl= ¤à¥á § ¯¨á¨ 1-© ¯®«®¢¨­ë ¬ áᨢ 
; de= ¤à¥á § ¯¨á¨ 2-© ¯®«®¢¨­ë ¬ áᨢ 
; out: z - à ¢­ë
; nz - ­¥ à ¢­ë
;-------------------------------------------------
cmp_names:
ld b,11 ; ¯®«­®¥ ¨¬ï
srtptr3:ld hl,0
srtptr4:ld de,0
cmp__: ld a,(de) ; 2-ï ¯®«®¢¨­  ¬ áᨢ 
cp "_"
jp z,cmp1__
or 00100000b
cp "ð" ; 240
jp nz,cmp1__
inc a ; 241 = "ñ"
cmp1__: ld c,(hl) ; 1-ï ¯®«®¢¨­  ¬ áᨢ 
cp "_"
jp z,cmp2__
set 5,c
cp "ð" ; 240
jp nz,cmp2__
inc c ; 241 = "ñ"
cmp2__: sub c
ret nz ; í«¥¬¥­âë ­¥ à ¢­ë
inc hl
inc de
djnz cmp__
ret
;-------------------------------------------------
; ‘à ¢­¨âì à áè¨à¥­¨ï
;
; in: hl= ¤à¥á § ¯¨á¨ 1-© ¯®«®¢¨­ë ¬ áᨢ 
; de= ¤à¥á § ¯¨á¨ 2-© ¯®«®¢¨­ë ¬ áᨢ 
; out: z - à ¢­ë
; nz - ­¥ à ¢­ë
;-------------------------------------------------
cmp_extensions:
ld bc,8 ; ᬥé. ¤® í«¥¬. áà ¢­¥­¨ï
ex de,hl
add hl,bc ; ᬥé. ¤® ï祥ª áà ¢­¥­¨ï
ex de,hl
add hl,bc ; ᬥé. ¤® ï祥ª áà ¢­¥­¨ï
ld b,3 ; ¤«¨­  í«¥¬. áà ¢­¥­¨ï
ecmp__: ld a,(de) ; 2-ï ¯®«®¢¨­  ¬ áᨢ 
cp "_"
jp z,ecmp1__
or 00100000b
cp "ð" ; 240
jp nz,ecmp1__
inc a ; 241 = "ñ"
ecmp1__:ld c,(hl) ; 1-ï ¯®«®¢¨­  ¬ áᨢ 
cp "_"
jp z,ecmp2__
set 5,c
cp "ð" ; 240
jp nz,ecmp2__
inc c ; 241 = "ñ"
ecmp2__:sub c
ret nz ; í«¥¬¥­âë ­¥ à ¢­ë
inc hl
inc de
djnz ecmp__
; í«¥¬¥­âë ᮢ¯ ¤ îâ
ld b,8 ; ¤«¨­  í«¥¬. áà ¢­¥­¨ï
jp srtptr3 ; áà ¢­¨âì ¨¬¥­ 
;-------------------------------------------------
; ‘à ¢­¨âì ¤ âë/à §¬¥àë
;
; in: hl= ¤à¥á ª®­æ  § ¯¨á¨ (1-ï ¯®«®¢¨­  ¬ áᨢ )
; de= ¤à¥á ª®­æ  § ¯¨á¨ (2-ï ¯®«®¢¨­  ¬ áᨢ )
; out: z - à ¢­ë
; nz - ­¥ à ¢­ë
;-------------------------------------------------
cmp_date:
ld bc,25 ; ᬥé. ­  ª®­¥æ ¤ âë
jp $+6
cmp_size:
ld bc,31 ; ᬥé. ­  ª®­¥æ à §¬¥à 
ex de,hl
add hl,bc ; + ᬥé. ¤® ï祥ª áà ¢­¥­¨ï
ex de,hl
add hl,bc ; + ᬥé. ¤® ï祥ª áà ¢­¥­¨ï
ld b,4 ; ¤«¨­  í«¥¬. áà ¢­¥­¨ï
ld a,(de) ; 2-ï ¯®«®¢¨­  ¬ áᨢ 
sub (hl) ; 1-ï ¯®«®¢¨­  ¬ áᨢ 
ret nz ; í«¥¬¥­âë ­¥ à ¢­ë
dec hl
dec de
djnz $-5
; í«¥¬¥­âë ᮢ¯ ¤ îâ
jp cmp_names ; áà ¢­¨âì ¨¬¥­ 

14
MOD1/SPACE.Z80 Executable file
View File

@ -0,0 +1,14 @@
;ÉÍÍÍÍÍÍÍÍÍÍ Information ÍÍÍÍÍÍÍÍÍÍ»
;º º
;º Calculating free space... º
;º º
;ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
; ޝ¨á â¥«ì ®ª­  ä㭪樨 "get_free_disk"
win_free_disk:
dw 0A16h,0523h ; Yo,Xo,lenY,lenX
db "Information",0 ; â¨â« ®ª­ 
;
db TextLine
dw 0205h ; Yo,Xo
db "Calculating free space...",0
db -1 ; ª®­¥æ ®¯¨á â¥«ï

339
MOD1/TREE.ASM Executable file
View File

@ -0,0 +1,339 @@
; ‘ª ­¨à®¢ ­¨¥ ¯ ¯ª¨
;
; „«ï ¢à¥¬. ¡ãä¥à  ¢ë¤¥«ï¥âáï 1 áâà ­¨æ  ¯ ¬ïâ¨. <20>®á«¥ ®âà ¡®âª¨ ¯à®æ¥¤ãàë,
; áâà ­¨æ  ®á¢®¡®¦¤ ¥âáï.
; Œ ªá. £«ã¡¨­  ¢«®¦¥­­®á⨠¯ ¯®ª à ¢­  20-⨠(¬®¦­® ¯®áâ ¢¨âì ¤à㣮¥).
; „«ï ¬ áᨢ  í«¥¬¥­â®¢ ¨á¯®«ì§ã¥âáï æ¥« ï ¡ ­ª , ¢¬¥é îé ï 1024
; (16*1024=4000h) í«¥¬¥­â®¢. ޡ饥 ç¨á«® ¯ ¯®ª, ®âá«¥¦¨¢ ¥¬®¥ ¯à®æ¥¤ãன,
; ®à£ ­¨ç¨¢ ¥âáï à §¬¥à®¬ í⮣® ¬ áᨢ .
;
; <20>¥à¥¤ ¢ë§®¢®¬ ¯à®æ¥¤ãàë, ­¥®¡å®¤¨¬® ãáâ ­®¢¨âì ¤¨áª ¨ ¯ãâì.
;
max_depth equ 20+1 ; ¬ ªá. ç¨á«® ¢«®¦¥­­®á⨠¯ ¯®ª
;-----------------------------------------------------------
; ‘ª ­¨à®¢ ­¨¥ ¯ ¯ª¨
; ¢ë室: NC - ­®à¬ «ì­®¥ § ¢¥à襭¨¥
; C - ®¯¥à æ¨ï ¯à¥à¢ ­  ¯®«ì§®¢ â¥«¥¬ (A=0FFh)
;-----------------------------------------------------------
ScanTree:
ld (tree_stack),sp
ld bc,3135h ; ®ç¨áâ¨âì ¡ãä¥à á¨áâ. ª« ¢ë
rst 10h
ld sp,work_buffer+512 ; á⥪ ¯à®æ¥¤ãàë
in a,(SLOT3)
ld (tree_page),a ; á®åà. ¯®àâ
; ¢ë¤¥«¨âì 1 áâà. ¯®¤ ¢à¥¬. ¡ãä¥à
ld bc,01C2h
rst 08h
ld (tmppage+1),a ; á®åà. ¤¥áªà. áâà.
jr nc,$+9 ; ¡¥§ ®è¨¡®ª
xor a
ld (tmppage+1),a
ld a,(page_dial_screen) ; ¨á¯. ¤«ï ¢à¥¬. ¡ãä¥à 
out (SLOT3),a
xor a
ld l,a
ld h,a
ld (depth_tree),a ; á¡à. ­®¬¥à ã஢­ï ¢«®¦¥­¨©
ld (count_dirs),hl ; á¡à. ç¨á«® ¯ ¯®ª
ld (count_files),hl ; á¡à. ç¨á«® ä ©«®¢
ld (size_files),hl ; á¡à. à §¬¥à ä ©«®¢
ld (size_files+2),hl
push hl ; ⥪. í«¥¬¥­â (ª®à¥­ì) ¢ á⥪
ld (cur_tree_adr+1),hl ; ¨­¨â. ï祩ªã
ld hl,LC000+16 ; ­ ç «® ¡ãä¥à  í«¥¬¥­â®¢ ¢«®¦¥­¨©
ld (end_tree),hl ; ­ ç «® á«¥¤. 16-⨠¡ ©â­®£® í«¥¬¥­â 
ld b,16 ; à §¬¥à í«¥¬¥­â  ¢«®¦¥­¨©
ld (hl),a ; a=0
inc hl
djnz $-2
call scan_cur_level ; ᪠­¨à. ®¤­®£® ã஢­ï + á⮯ª  í«¥¬.
jr nc,tree_exit ; ­¥â ¯ ¯®ª
; ¢®©â¨ ¢ ¯ ¯ªã á«¥¤. ã஢­ï
tree_loop:
push hl ;  ¤à¥á áâ à®£® í«¥¬¥­â  (¯®á«¥ LoadDIR)
ld c,31h ; ®¯à®á á¨áâ. ª« ¢ë
rst 10h
call nz,abort_tree_scan ; ¢ë¢¥á⨠®ª­® "¯à¥àë¢. ®¯¥à æ¨¨"
pop hl
ld a,(depth_tree) ; ­®¬¥à ⥪. ã஢­ï ¢«®¦¥­¨©
inc a
cp max_depth+1 ; 20+1 ¬ ªá. ç¨á«® ¢«®¦¥­¨© ¯ ¯®ª
jr c,tree_depth_ok
tree_depth_err:
ld a,EDEPTH ; 36 ª®¤ "᫨誮¬ ¡®«ìè ï ¢«®¦¥­­®áâì ¯ ¯®ª"
jr tree_abort1
;
tree_depth_ok:
ld (depth_tree),a
ld de,(count_dirs) ; ⥪. ç¨á«® ¯ ¯®ª
bit 2,d ; >= 1024 ¯ ¯®ª (> 1 ¡ ­ª¨ í«¥¬¥­â®¢)
jr nz,tree_depth_err ; ®è¨¡ª , ¢ë©â¨
push hl ; ⥪. ¨¬ï ¯ ¯ª¨ ¢ á⥪
ld a,(hl)
or a
jr z,dirs_end ; ­¥â ¢«®¦¥­¨©, ¢¥à­ãâìáï ¢ ­ ç. ã஢¥­ì
ld (cur_tree_adr+1),hl ; ¨¬ï ¯ ¯ª¨ ⥪. ã஢­ï
ld c,1Dh ; ãáâ. ¯ãâì ­  ¯ ¯ªã ⥪. ã஢­ï
rst 10h
call scan_cur_level ; ᪠­¨à. ®¤­®£® ã஢­ï + á⮯ª  í«¥¬.
jr c,tree_loop ; ¥áâì ¯ ¯ª¨
; ¢¥à­ãâìáï ­  ¯à¥¤. ã஢¥­ì
dirs_end:
ld c,31h ; ®¯à®á á¨áâ. ª« ¢ë
rst 10h
call nz,abort_tree_scan ; ¢ë¢¥á⨠®ª­® "¯à¥àë¢. ®¯¥à æ¨¨"
pop hl ; ⥪. í«¥¬¥­â ¨§ á⥪ 
ld a,h
or l
jr z,tree_exit ; ¢ áâ à⮢®© ¯ ¯ª¥
push hl ; hl= ¤à¥á ¨¬¥­¨ ¯ ¯ª¨
ld a,(scan_mode) ; ०¨¬ à ¡®âë ¯à®æ¥¤ãàë
cp 2 ; ãáâ.  âਡã⮢ ¯ ¯ª¨
jr nz,dirs_end1
;call attrib_folder;
ds 3;
jr dirs_end2
dirs_end1:
cp 3 ; 㤠«¥­¨¥ ¯ ¯ª¨
jr c,dirs_end2
call delete_folder; ; a=3,4 㤠«¥­¨¥/¯¥à¥­®á ¯ ¯ª¨
jr dirs_end3
dirs_end2:
ld hl,parent_level ; ".."
ld c,1Dh ; ãáâ. ¯ãâì
rst 10h
dirs_end3:
ld hl,depth_tree ; ­®¬¥à ⥪. ã஢­ï ¢«®¦¥­¨©
dec (hl)
pop hl
ld de,16-1 ; à §¬¥à í«¥¬¥­â  ¢«®¦¥­¨© - 1
add hl,de
ld a,(hl)
inc hl
inc a
jr nz,tree_loop
jr dirs_end ; ­ § ¤ ¢ 横«
;
tree_abort:
ld a,EUABORT ; 37 ª®¤ "®¯¥à æ¨ï ¯à¥à¢ ­  ¯®«ì§®¢ â¥«¥¬"
tree_abort1:
scf
jr $+3
tree_exit:
xor a ; a=Ok ¨ á¡à. CF
push af
tmppage:ld a,0 ; ¤¥áªà. áâà.
or a
ld bc,01C3h ; ®á¢®¡. 1 áâà. ¯ ¬ïâ¨
call nz,0008h
db 3Eh ; ld a,..
tree_page:
db 0
out (SLOT3),a ; ¢®ááâ. ¯®àâ
pop af ; ¢®§¢à. ª®¤ ¯à®æ¥¤ãàë
db 31h ; ld sp,..
tree_stack:
dw 0 ; á®åà. á⥪
ret
;-------------------------------------------------
; ‘ª ­¨à®¢ âì ®¤¨­ ã஢¥­ì
; ¢ë室: C - ¥áâì ¯ ¯ª¨
; NC - ­¥â ¯ ¯®ª
; hl= ¤à¥á áâ à®£® í«¥¬¥­â 
;-------------------------------------------------
scan_cur_level:
ld de,(end_tree)
push de ; á®åà.  ¤à¥á áâ à®£® í«¥¬¥­â 
ld ix,0 ; áç¥â稪 ¯ ¯®ª
ld hl,scan_mask ; ¨¬ï ä ©«  (è ¡«®­ ¯®¨áª )
ld de,work_buffer ; à ¡. ¡ãä¥à
push ix
push de
ld a,37h ; ¢á¥, ªà®¬¥ ¬¥âª¨ ⮬ 
ld bc,0119h ; f_first 8.3
rst 10h
pop hl
pop ix
jr c,scan_level_exit ; ­¥ ­ ©¤¥­®
scan_level_loop:
call tree_record ; ¤«ï ¯ ¯®ª á®§¤. á⮯ªã í«¥¬¥­â®¢
jr c,scan_level_exit ; ®è¨¡ª , ¢ë室 §  £à ­¨æã ¡ ­ª¨
push ix
ld de,work_buffer ; à ¡. ¡ãä¥à
push de
ld c,1Ah ; f_next
rst 10h
pop hl
pop ix
jr nc,scan_level_loop ; ­ § ¤ ¢ 横«
scan_level_exit:
ld hl,(end_tree) ; ­ ç «® á«¥¤. í«¥¬¥­â 
dec hl
ld (hl),-1 ; +xF ¢ ª®­¥æ ¯à¥¤.
db 0DDh
ld c,l ; ld bc,ix
db 0DDh
ld b,h
ld hl,(count_dirs) ; ⥪. ç¨á«® ¯ ¯®ª
add hl,bc ; + ç¨á«® ¯ ¯®ª ¯à®áª ­¨à. ã஢­ï
ld (count_dirs),hl
pop hl ; ¢®ááâ.  ¤à¥á áâ à®£® í«¥¬¥­â 
ld a,c
or b
ret z ; ­¥â ¯ ¯®ª
; á®åà. ¢ ¯¥à¢®¬ í«¥¬¥­â¥ ¢ +0D..0E  ¤à¥á ¯®á«. í«¥¬¥­â 
cur_tree_adr:
ld de,0 ;  ¤à¥á ⥪. ¨¬¥­¨ ¯ ¯ª¨
ld a,e
or d
jr z,scan_level_exit1
ex de,hl
ld bc,0Dh ; ᬥé. ï祩ª¨  ¤à¥á  ¯®á«. í«¥¬¥­â 
add hl,bc
ld (hl),e ; á®åà.  ¤à¥á ¯®á«. í«¥¬¥­â 
inc hl
ld (hl),d
ex de,hl
scan_level_exit1:
scf ; ¥áâì á«¥¤. ã஢¥­ì
ret
;-------------------------------------------------
; Ž¡à ¡®âª  ­ ©¤¥­­®© § ¯¨á¨.
; „«ï ¯ ¯®ª - á®§¤ ¥â á⮯ªã í«¥¬¥­â®¢.
; ¢å®¤: hl=à ¡. ¡ãä¥à § ¯¨á¨
; ¢ë室: ¯à¨ ®è¨¡ª¥ CF, ¢ë室 §  £à ­¨æã ¡ ­ª¨
;-------------------------------------------------
; í«¥¬¥­â: +00..0C - ¨¬ï ¯ ¯ª¨ (á ­ã«¥¬)
; +0D..0E -  ¤à¥á ¯®á«. í«¥¬¥­â  (¢ § ¯¨á¨ ¯¥à¢®£® í«¥¬¥­â )
;-------------------------------------------------
tree_record:
ld a,(work_buffer+32) ;  âਡãâ ­ ©¤. § ¯¨á¨
bit 4,a ; ¯ ¯ª  ?
jr nz,ins_tree_item ; ¤ 
; ­ ©¤¥­ ä ©«
ld a,(scan_mode) ; ०¨¬ à ¡®âë ¯à®æ¥¤ãàë
or a ; a=0 ᪠­¨à. ¯ ¯ªã
jr z,tree_record_next
dec a ; a=1 ª®¯¨à. ¯ ¯ªã
;jp z,copy_file
dec a ; a=2 ãáâ.  âਡ. ä ©«®¢ ¯ ¯ª¨
;jp z,attrib_file
dec a ; a=3 㤠«¥­¨¥ ¯ ¯ª¨
jp z,delete_file
dec a ; a=4 ¯¥à¥­®á ¯ ¯ª¨
;jp z,move_file
or a ; á¡à. CF
ret
; ++®¡ê¥¬ ä ©«®¢
tree_record_next:
ld de,(work_buffer+28) ; ¬«. à §àï¤
ld hl,(size_files)
add hl,de
ld (size_files),hl
ld de,(work_buffer+30) ; áâ. à §àï¤
ld hl,(size_files+2)
adc hl,de
ld (size_files+2),hl
; ++ç¨á«® ä ©«®¢
ld hl,(count_files)
inc hl
ld (count_files),hl
or a ; á¡à. CF
ret
; ­ ©¤¥­  ¯ ¯ª 
ins_tree_item:
ex de,hl
ld hl,(end_tree) ; ­ ç «® ­®¢®£® í«¥¬¥­â 
ld bc,16 ; à §¬¥à í«¥¬¥­â 
add hl,bc
sbc hl,bc
ex de,hl
ret c ; §  ¯à¥¤¥«®¬ ¡ ­ª¨ (> 0FFFFh)
ld bc,33
add hl,bc
ld a,(hl) ;+33 ¨¬ï ä ©« 
cp "." ; ".", ".."
ret z
inc ix ; ++ç¨á«® ¯ ¯®ª
ld c,16 ; à §¬¥à í«¥¬¥­â  ¢«®¦¥­¨©
xor a
ldi
cp (hl)
jr nz,$-3 ; ᪮¯¨à. ¢ í«¥¬¥­â ¨¬ï ¯ ¯ª¨
ld b,c ; ®¡­ã«¨âì ®áâ â®ª í«¥¬¥­â 
ld (de),a
inc de
djnz $-2
ld (end_tree),de ; ­ ç «® á«¥¤. 16-⨠¡ ©â­®£® í«¥¬¥­â 
ld a,(scan_mode) ; ०¨¬ à ¡®âë ¯à®æ¥¤ãàë
cp 1 ; ª®¯¨à. ¯ ¯ª¨
;jp z,create_folder
cp 4 ; move ¯ ¯ª¨
;jp z,create_folder;
or a ; á¡à. CF
ret
;-------------------------------------------------
; ‚뢮¤ ®ª­  ¯à¥à뢠­¨ï ®¯¥à æ¨¨
;-------------------------------------------------
abort_tree_scan:
ld bc,3135h ; ®ç¨áâ¨âì ¡ãä¥à á¨áâ. ª« ¢ë
rst 10h
ld hl,dial_abort ; ®¯¨á â¥«ì ®ª­ 
call DialogEr
cp evCommand ; ᮡë⨥ "ª®¬ ­¤ "
ret nz
ld a,(hl) ;+1 what
cp cmOkey ; Yes
jp z,tree_abort ; ¢ë©â¨ ¨§ ¯à®æ¥¤ãàë
ret
; <20>¥¦¨¬ à ¡®âë ¯à®æ¥¤ãàë:
; 0 - ᪠­¨à®¢ ­¨¥ ¯ ¯ª¨
; 1 - ª®¯¨à®¢ ­¨¥ ¯ ¯ª¨
; 2 - ãáâ.  âਡã⮢ ä ©«®¢ ¯ ¯ª¨
; 3 - 㤠«¥­¨¥ ¯ ¯ª¨
; 4 - ¯¥à¥­®á ¯ ¯ª¨
scan_mode:
db 0
; è ¡«®­ ¯®¨áª  (â ª¦¥ ¨á¯. ¤«ï ¯®¨áª  ¬¥âª¨ ⮬ )
scan_mask:
db "*.*",0
; ¢¥àå­¨© ã஢¥­ì
parent_level:
db "..",0
; ­®¬¥à ⥪. ã஢­ï ¢«®¦¥­¨©
depth_tree:
db 0
; ­ ç «® á«¥¤. 16-⨠¡ ©â­®£® í«¥¬¥­â 
end_tree:
dw 0
; ç¨á«® ¯ ¯®ª
count_dirs:
dw 0
; ç¨á«® ä ©«®¢ ¯ ¯ª¨
count_files:
dw 0
; ®¡é. à §¬¥à ä ©«®¢ ¯ ¯ª¨
size_files:
dw 0 ; ¬«. à §àï¤
dw 0 ; áâ. à §àï¤

9
MOD1/UMENU.Z80 Executable file
View File

@ -0,0 +1,9 @@
; ’ ¡«¨æ  ¬¥­î ¯®«ì§®¢ â¥«ï
user_table:
dw title_user_menu ;  ¤à¥á § £®«®¢ª  ®ª­ 
dw array_user2 ;  ¤à¥á ®¯¨á â¥«ï ¬¥­î
; ‡ £®«®¢®ª ¬¥­î ¯®«ì§®¢ â¥«ï
; <¤«¨­  áâப¨>, <áâப >
title_user_menu:
db 9,"User menu"

71
MOD1/WIDTH.ASM Executable file
View File

@ -0,0 +1,71 @@
width_max equ 32 ; ¬ ªá. ¤«¨­  ¯ã⨠¯ ­¥«¨
;-------------------------------------------------
; Ž£à ­¨ç¥­¨¥ áâப¨ ¯ã⨠(¬ ªá. 32 ᨬ¢®« )
;-------------------------------------------------
width_path:
xor a
ld (width1__),a ; á¡à. ä« £ ¯¥à¥¯®«­. áâப¨
; ã§­ âì ¤«¨­ã ¯ãâ¨
ld iy,(__path) ; ®¯¨á â¥«ì ¯ã⨠ ªâ. ¯ ­¥«¨
ld hl,(__buff) ; ¡ãä¥à ¯ã⨠ ªâ. ¯ ­¥«¨
ld e,l
ld d,h
ld bc,127;255 ; ¬ ªá. ¤«¨­  ¯ã⨠;!HARDCODE cmd len
cpir
dec hl
push hl ; á®åà. ª®­¥æ ¯ã⨠¢ ¡ãä¥à¥
sbc hl,de
ld a,l
cp width_max+1 ; 33
jr c,width__
; ¤«¨­  ¯ã⨠> 32
ld a,width_max ; 32
ld (width1__),a ; ãáâ. ä« £
width__:
ld c,a ; ¤«¨­  áâப¨ ¯ãâ¨
ld b,0
add a,3+1 ; + ¨¬ï ¤¨áª  ¨ ª®­æ¥¢®© ¯à®¡¥«
ld (iy+0),a ; ¯®«­ ï ¤«¨­  áâப¨
ex af,af'
push iy
pop hl
ld de,7
add hl,de
ex de,hl ; de=¯à¨¥¬­ë© ¡ãä¥à
pop hl ; ¢®ááâ. ª®­¥æ ¯ã⨠¢ ¡ãä¥à¥
; ᪮¯¨à®¢ âì áâபã
and a
sbc hl,bc ; hl=­ ç «® ¯¥à¥ª çª¨
push de
ldir
ld a," "
ld (de),a ; ª®­æ¥¢®© ¯à®¡¥«
inc de
xor a
ld (de),a ; ª®­¥æ ®¯¨á â¥«ï
pop de
width1__+1:
ld a,0 ; 0/32 ­¥â/¤  ä« £ ¯¥à¥¯®«­. áâப¨
or a
jr z,width2__
ld a,'\'
ld (de),a
inc de
ld a,"."
ld (de),a
inc de
ld (de),a
; 業âà¨à®¢ âì áâபã
width2__:
ex af,af' ; ¯®«­ ï ¤«¨­  áâப¨
srl a ; / 2
ld c,a
ld a,20 ; è¨à¨­  ¯ ­¥«¨ / 2
sub c
ld (iy+3),a ; X ¯®«®¦. áâப¨
ld a,(disk) ; ­®¬¥à ¤¨áª   ªâ. ¯ ­¥«¨
add a,"A"
ld (iy+5),a
ret

104
MOD2/CLOCK.ASM Executable file
View File

@ -0,0 +1,104 @@
;-------------------------------------------------
; ‚뢮¤ ç á®¢ ¢¢¥àåã ¯ ­¥«¨
;-------------------------------------------------
show_clock:
db 3Eh ; ld a,..
enable_clock:
db false ; ä« £ ¢ë¢®¤  ç á®¢
or a
ret z
call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
ret z ; ¢ëª«.
call get_systime ; ã§­ âì á¨áâ. ¢à¥¬ï
ld de,clock_string ; ¡ãä¥à ç á®¢
ld hl,0301h ; á 0-© áâப¨
in a,(89h)
ld b,a ; á®åà. ¯®àâ
in a,(SLOT0)
ld c,a ; á®åà.¯®àâ
di
ld a,50h ; ¢¨¤¥®-áâà ­¨æ 
out (SLOT0),a
ld a,75+81h ; +0 (ᬥé. á«¥¢ )
out (89h),a ; ª®«®­ª 
; ¢ë¢®¤ ⥪áâ 
ld d,d ; ãáâ. à §¬¥à ¡«®ª 
ld a,5 ; ¤«¨­  áâப¨
ld b,b ; ¢ëª«.  ªá¥«ì
ld l,l ; ª®¯¨à®¢ âì ¡«®ª
ld a,(de)
ld b,b ; ¢ëª«.  ªá¥«ì
ld a,a ; ª®¯¨à®¢ ­¨¥ ¡«®ª  (¢¥àâ. «¨­¨¨)
ld (hl),a
ld b,b ; ¢ëª«.  ªá¥«ì
; ¢ë¢®¤  âਡã⮢
ld de,clock_attr ; áâப   âਡã⮢
ld a,75+81h ; +0 (ᬥé. á«¥¢ )
out (89h),a
inc hl ; ¯¥à¥©â¨ ­   âਡãâë
ld d,d ; ãáâ. à §¬¥à ¡«®ª 
ld a,5 ; ¤«¨­  áâப¨
ld b,b ; ¢ëª«.  ªá¥«ì
ld l,l ; ª®¯¨à®¢ âì ¡«®ª
ld a,(de)
ld b,b ; ¢ëª«.  ªá¥«ì
ld a,a ; ª®¯¨à®¢ ­¨¥ ¡«®ª  (¢¥àâ. «¨­¨¨)
ld (hl),a
ld b,b ; ¢ëª«.  ªá¥«ì
ld a,b
out (89h),a ; ¢®ááâ. ¯®àâ
ld a,c
out (SLOT0),a ; ¢®ááâ. ¯®àâ
ei
ret
;-------------------------------------------------
; “¡à âì ç áë
;-------------------------------------------------
hidden_clock:
ld a,(cur_panel) ;  ªâ. ¯ ­¥«ì 0/80h - «¥¢ ï/¯à ¢ ï
or a
push af
call z,change_panel ; ¯¥à¥©â¨ ­  ¯à ¢ãî
call print_up_path ; § â¥à¥âì ç áë
pop af
call z,change_panel ; ¢¥à­ãâì  ªâ. ¯ ­¥«ì
ret
; <20>à®ç¨â âì á¨áâ. ¢à¥¬ï ¨§ ॣ¨áâà  "A" CMOS
get_systime:
ld hl,clock_string ; ¡ãä¥à áâப¨
ld d,04h ; ॣ¨áâà ç á®¢ (0=ॣ.A,  ¤à¥á = +4)
call get_systime__
inc hl
ld d,02h ; ॣ¨áâà ¬¨­ãâ
; —⥭¨¥ cmos-ॣ¨áâà 
; ¢å®¤: d=­®¬¥à ॣ¨áâà  ¨  ¤à¥á
get_systime__:
ld bc,0DFBDh ; ¯®àâ § ¯¨á¨  ¤à¥á  CMOS
out (c),d
ld bc,0FFBDh ; ¯®àâ ç⥭¨ï ¤ ­­ëå CMOS
in a,(c)
; hex-ä®à¬ â
ld c,a
rra
rra
rra
rra
call $+4
ld a,c
and 0Fh
cp 9+1
sbc a,69h
daa
ld (hl),a
inc hl
ret
clock_string:
db "00:00" ; áâப  ç á®¢
clock_attr:
db 30h,30h,30h,30h,30h ; 梥â ç á®¢

302
MOD2/COPY.ASM Executable file
View File

@ -0,0 +1,302 @@
;===========================================================
;
; <20>à®æ¥áá ª®¯¨à®¢ ­¨ï ä ©«®¢
;
;===========================================================
copy: call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
ret z
call get_fire ; § é¨â  ®â "§ «¨¯ ­¨ï" ¡ãâ®­®¢
ld a,(format_mode) ; ⥪. ä®à¬ â ¯ ­¥«¨
and form_info+form_qview ; info, qview
ret nz
; ᪮¯¨à. ¨¬ï ä ©« /¯ ¯ª¨ (¥á«¨ ­¥â ¢ë¤¥«.)
call prep_copy_name ; ­ áâநâì ¨¬ï ª®¯¨à. ä ©«  ¢ ®¯¨á â. ®ª®­ ¨ ¤à.
ret c ; ⥪ã騩 ".." ¨ ­¥â ®â¬¥ç. ä ©«®¢
; ¢ë¢®¤ ­ ç «ì­®£® ®ª­ 
ld hl,dial_copy ; ®¯¨á â¥«ì ®ª­ 
call DialogW
cp evCommand ; ᮡë⨥ "ª®¬ ­¤ "
ret nz
ld a,(hl) ;+1 what
cp cmOkey ; "Copy"
ret nz
; ¢ë¢®¤ ­ ç «ì­®£® ®ª­  ¯à®æ¥áá 
ld hl,copy_file ; ®¡à ¡®â稪 ¯à®æ¥áá  ~Process Line~
ld (subrout_process),hl
ld (subrout_process1),hl;
ld hl,dial_copy_total_process ; ®¯¨á â¥«ì ®ª­  á 2-¬ï «¨­¥©ª ¬¨
call DialogW
cp evCommand; ; ᮡë⨥ "ª®¬ ­¤ "
ret nz;
ld a,(hl); ;+1 what
cp cmOkey; ; "Yes"
ret nz;
;
;
; ¢ë¢®¤ ®ª­  ®è¨¡ª¨ ª®¯¨à®¢ ­¨ï
ld hl,dial_error_copy
call DialogEr
cp evCommand ; ᮡë⨥ "ª®¬ ­¤ "
ret nz
ld a,(hl) ;+1 what
cp cmSkip ; "Skip"
cp cmSkipAll ; "Skip all"
cp cmOkey ; "Retry"
ret nz
;
; ¢ë¢¥á⨠®ª­® ¯à¥à뢠­¨ï ®¯¥à æ¨¨
ld hl,dial_abort ; ®¯¨á â¥«ì ®ª­ 
call DialogEr
cp evCommand ; ᮡë⨥ "ª®¬ ­¤ "
ret nz
ld a,(hl) ;+1 what
cp cmOkey ; "Yes"
ret nz
;
; ¢ë¢®¤ ®ª­  "ä ©« 㦥 áãé¥áâ¢ã¥â"
; § ¯®«­¨âì ï祩ª¨
ld hl,dial_existing
call DialogEr
cp evCommand ; ᮡë⨥ "ª®¬ ­¤ "
ret nz
ld a,(hl) ;+1 what
cp cmOkey ; "Overwrite"
cp cmAll ; "All"
cp cmSkip ; "Skip"
cp cmSkipAll ; "Skip all"
cp cmAppend ; "Append"
ret nz
;..
ret
; ˆ¬ï ª®¯¨à. ä ©«  ¢ ®¯¨á â¥«¨ ®ª®­ ¨ ¡ãä¥à áâப¨ "Copy"
prep_copy_name:
; ld hl,input_line_copy ; áâàãªâãà 
; call clear_struct_inline ; ®ç¨áâ¨âì áâàãªâãàã ~input line~
; ld hl,(__buff1) ; ¯ãâì ¯ áá. ¯ ­¥«¨
; ld de,input_line_copy+5 ; áâப  ~input line~
; ld b,2 ; áç¥â稪 ¤«¨­ë áâப¨
; ld a,(disk1)
; add a,"A"
; ld (de),a
; inc de
; ld a,":"
; ld (de),a
; inc de
; ld a,(hl)
; ld (de),a
; or a
; jr z,$+7
; inc hl
; inc de
; inc b
; jr $-8
; dec hl
; ld a,'\'
; cp (hl)
; jr z,$+7
; inc b
; ld (de),a
; inc de
; xor a
; ld (de),a
; ld a,b
; ld (input_line_copy+4),a ; áâàãªâãà  áâப¨ ~input line~
;
ld bc,copy_name ; ªã¤ 
call copyname
ret c ; ⥪ã騩 ".." ¨ ­¥â ®â¬¥ç. ä ©«®¢
;
ld iy,input_line_copy ; áâàãªâãà 
; ®ç¨áâ¨âì áâàãªâãàã ¡ãä¥à 
ld hl,input_line_copy ; áâàãªâãà 
call clear_struct_inline
; ¢áâ ¢¨âì ¤¨áª
ld hl,input_line_copy+5 ; ªã¤ 
ld a,(disk1)
add a,"A"
call put_char1 ; ¢áâ ¢¨âì ᨬ¢®«
inc hl
ld a,":"
call put_char1
inc hl
; ¢áâ ¢¨âì ¯ãâì
ld de,(__buff1) ; ¯ãâì ¯ áá. ¯ ­¥«¨
prep_copy_loop:
ld a,(de)
or a
jr z,prep_copy_next
call put_char1 ; ¢áâ ¢¨âì ᨬ¢®«
inc de
inc hl
jr prep_copy_loop
;
prep_copy_next:
dec hl
ld a,'\'
cp (hl)
jr z,$+6
inc hl
call put_char1
inc hl
; ¢áâ ¢¨âì ¨¬ï
ld de,work_buffer ; ®âªã¤ 
prep_copy_loop1:
ld a,(de)
or a
jr z,prep_copy_next1
call put_char1 ; ¢áâ ¢¨âì ᨬ¢®«
inc de
inc hl
jr prep_copy_loop1
;
prep_copy_next1:
ld (hl),a
;
; ­ ç «ì­®¥ ®ª­® ª®¯¨à®¢ ­¨ï
;ld bc,copy_name ; ªã¤ 
;call copyname
;ret c ; ⥪ã騩 ".." ¨ ­¥â ®â¬¥ç. ä ©«®¢
;
; ®ª­® ¯à®æ¥áá  ª®¯¨à®¢ ­¨ï á 2-¬ï «¨­¥©ª ¬¨
ld hl,copy_name ; ®âªã¤ 
ld de,copy_name1 ; ªã¤ 
call copy_string ; (hl) -> (de)
; ᪮¯¨à. ¯ãâì
ld hl,input_line_copy+5 ; áâàãªâãà  áâப¨ ~input line~
ld de,copy_name2 ; ªã¤ 
call copy_dstname ; ᪮¯¨à. ¯ãâì+¨¬ï ä ©« /¯ ¯ª¨
;
; ®ª­® "®è¨¡ª  ª®¯¨à®¢ ­¨ï ¢:"
ld hl,copy_name ; ®âªã¤ 
ld de,copy_name3 ; ªã¤ 
call copy_string ; (hl) -> (de)
; á æ¥­â஢ª®© ¨¬¥­¨
; ¯ãâì ­ §­ ç¥­¨ï ®ª­  "®è¨¡ª  ª®¯¨à®¢ ­¨ï"
ld hl,input_line_copy+5 ; áâàãªâãà  áâப¨ ~input line~
ld de,copy_name4 ; ªã¤ 
call copy_dest_name ; ᪮¯¨à. ¯ãâì+¨¬ï ä ©« /¯ ¯ª¨
;
; ¯ãâì ­ §­ ç¥­¨ï ®ª­  "ä ©« 㦥 áãé¥áâ¢ã¥â"
ld hl,copy_name4 ; ®âªã¤ 
ld de,exists_name ; ªã¤ 
call copy_string ; (hl) -> (de)
; ¨¬ï ä ©« 
;ld hl,work_buffer+33;
;dec de;
;call copy_string; ; (hl) -> (de)
ret
;-----------------------------------------------------------
; ‘®§¤ âì ¯ ¯ªã ¯® ⥪. ¯ã⨠­  ¤¨áª¥ ­ §­ ç¥­¨ï
;-----------------------------------------------------------
create_folder:
; á®§¤ âì ⥪. â à£¥â-¯ãâì ¢ work_buffer+128 ;256
; ®á­®¢ë¢ ïáì ­  ¡ §®¢®¬ ¯ã⨠work_buffer (â®çª  ®âáç¥â )
or a;
ret
;-----------------------------------------------------------
; ‘ª®¯¨à®¢ âì ä ©« ⥪. ¯ã⨠­  ¤¨áª ­ §­ ç¥­¨ï.
; <20>à®æ¥¤ãà  «¨­¥©ª¨ ¯à®æ¥áá  ª®¯¨à®¢ ­¨ï.
; <20>ਠ§ ¢¥à襭¨¨ (¨«¨ ¯à¥à뢠­¨¨) ª®¯¨à®¢ ­¨ï
; ¢ë¤ ¥â ä« £ "Carry".
;-----------------------------------------------------------
copy_file:
; á®§¤ âì ä ©« ¯® ⥪. â à£¥â-¯ã⨠(¢ work_buffer+128 ;256)
;...
scf;
or a;
ret
; Ÿç¥©ª¨ 1-© «¨­¥©ª¨ ¯à®æ¥áá 
max_file_bytes:
dw 0 ; à §¬¥à ä ©«  (¯ ¯ª¨)
dw 0 ; áâ. à §àï¤
;
curr_bytes:
dw 0 ; ⥪. ç¨á«® ®¡à ¡. ¡ ©â®¢
dw 0 ; áâ. à §àï¤
; Ÿç¥©ª¨ 2-© «¨­¥©ª¨ ¯à®æ¥áá  (®¡é¥©)
max_file_bytes1:
dw 0 ; à §¬¥à ä ©«  (¯ ¯ª¨)
dw 0 ; áâ. à §àï¤
;
curr_bytes1:
dw 0 ; ⥪. ç¨á«® ®¡à ¡. ¡ ©â®¢
dw 0 ; áâ. à §àï¤
copy_overwrite:
db false ; ä« £ ¯®¤â¢. ¯¥à¥§ ¯¨á¨ ¯à¨ ª®¯¨à®¢ ­¨¨
; Š®­¢¥àâ¨à®¢ âì à §¬¥à ä ©«  ¢ ç¨á«® ¡ ­®ª
; ¢å®¤: de=áâ. à §àï¤
; hl=¬«. à §àï¤
; ¢ë室: de=áâ. à §àï¤?
; hl=¬«. à §àï¤?
ConvLenToBank:
ld a,h
ld h,l
ld l,0
sla a
rl e
rl d
rl l
sla a
rl e
rl d
rl l
or h
ld h,0
ex de,hl
jr z,$+3
inc hl
ld a,h
or l
ret nz
inc de
ret

182
MOD2/DEBUG.ASM Executable file
View File

@ -0,0 +1,182 @@
PR: push iy
push ix
push hl
push de
push bc
push af
;push hl;
ld de,1D31h
ld c,84h
rst 08h
ld hl,work_buffer+33;256
ld c,1Eh
rst 10h
;ld hl,work_buffer+256
;xor a
;ld c,a
;ld b,a
;cpir
;dec hl
;ex de,hl
;pop hl;
;call copy_string
;
ld hl,work_buffer+33;256
ld c,5Ch
rst 10h
ld a," "
call symb
ld a," "
call symb
ld a," "
call symb
call wait
pop af
pop bc
pop de
pop hl
pop ix
pop iy
ret
PR1: push af
ld de,1D30h
ld c,84h
rst 08h
pop af
jp HEX1
;ld a," "
;call symb
;ld a,(type_title_qview)
;jp HEX1
PR2: push iy
push ix
push hl
push de
push bc
push af
push af;
push hl;
ld de,1D01h
ld c,84h
rst 08h
pop hl;
;ld c,5Ch
;rst 10h
;ld a," "
;call symb
;ld a," "
;call symb
;ld a," "
;call symb
pop af;
ld hl,input_line_copy+4 ; áâàãªâãà  áâப¨ ~input line~
ld a,(hl)
call HEX1
ld a," "
call symb
;call wait
pop af
pop bc
pop de
pop hl
pop ix
pop iy
ret
PR3: push iy
push ix
push hl
push de
push bc
push af
ld de,1D01h
ld c,84h
rst 08h
ld a,(depth_tree) ; ­®¬¥à ⥪. ã஢­ï ¢«®¦¥­¨©
call HEX1
pop af
pop bc
pop de
pop hl
pop ix
pop iy
ret
HEXHL: ld a,h
push hl
call HEX1
pop hl
ld a,l
HEX1: push af
rra
rra
rra
rra
call HEX2
pop af
HEX2: and 0Fh
add a,90h
daa
adc a,40h
daa
symb: ld c,5Bh ; ¢ë¢®¤ ᨬ¢®«  ­  íªà ­
jp int10
newline:ld a,0Dh
call symb ; ¢ë¢®¤ "a" ­  íªà ­
ld a,0Ah
jp symb
wait: ld a,2
rst 20h
jr z,$-3 ; ¦¤¥¬ ­ ¦ â¨ï ª« ¢¨è¨
ret
wait1s: ld b,49
halt
djnz $-1
ret
delay: push iy
push ix
push hl
push de
push bc
push af
call wait
pop af
pop bc
pop de
pop hl
pop ix
pop iy
ret
HEXAF: push iy
push ix
push hl
push de
push bc
push af
push af
ld de,1D17h
ld c,84h
rst 08h
pop af
call HEX1
pop af
pop bc
pop de
pop hl
pop ix
pop iy
ret

334
MOD2/DELETE.ASM Executable file
View File

@ -0,0 +1,334 @@
;===========================================================
;
; <20>à®æ¥áá 㤠«¥­¨ï ä ©« /¯ ¯ª¨
;
;===========================================================
delete: call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
ret z
call get_fire ; § é¨â  ®â "§ «¨¯ ­¨ï" ¡ãâ®­®¢
ld a,(format_mode) ; ⥪. ä®à¬ â ¯ ­¥«¨
and form_info+form_qview ; info, qview
ret nz
xor a
ld (show_dial_ro_all+1),a ; á¡à. ä« £ ­¥ ¢ë¢®¤  ¤¨ «®£  "ä ©« r/o"
ld de,(mark_files) ; ç¨á«® ¢ë¤¥«. ä ©«®¢
ld hl,1
sbc hl,de
jp c,delete_group_files ; >= 2 ¢ë¤¥«. ä ©«®¢
call prep_delete_name ; ¨¬ï ä ©«  ¢ ®¯¨á â¥«ì ®ª­ 
ret c ; ".." § ¯¨áì
call set_path_from_activ_panel ; ãáâ. ¤¨áª ¨ ¯ãâì  ªâ. ¯ ­¥«¨
ret c
; ®ç¨áâ¨âì ¡ãä¥à ª« ¢ë
ld a,1
rst 20h
;
ld a,(del_confirm) ; ä« £ ¯®¤â¢¥à¦¤¥­¨ï
or a
jr z,delete_ok
; ¢ë¢®¤ ­ ç «ì­®£® ®ª­ 
ld hl,dial_delete ; ®¯¨á â¥«ì ®ª­ 
call DialogW
cp evCommand ; ᮡë⨥ "ª®¬ ­¤ "
ret nz
ld a,(hl) ;+1 what
cp cmOkey ; "Ok"
ret nz
delete_ok:
call deleting_files
ret c ; ®è¨¡ª¨ ¨«¨ ¯à¥à뢠­¨¥ ®¯¥à æ¨¨
jp fresh_two_panels ; ¡¥§ ®è¨¡®ª, ®¡­®¢¨âì ¯ ­¥«¨
; “„€<E280B9>ˆ… ”€‰‹€/<2F><EFBFBD>Šˆ
; ¢ë室: NC - Ok
; CF - ¯à¥à뢠­¨¥ ®¯¥à æ¨¨ ¨«¨ ®è¨¡ª 
; a= -1 ®â¬¥­  ®¯¥à æ¨¨
; a= -2 ®â¬¥­  㤠«¥­¨ï ⥪. ­¥ ¯ãá⮩ ¯ ¯ª¨
; a=­®¬¥à ª®¬ ­¤ë (cmCancel, cmSkip, cmSkipAll)
deleting_files:
;
ld a,(attr_record) ;  âਡãâ ä ©«  (£«®¡. ï祩ª )
bit 4,a ; ¯ ¯ª  ?
jr nz,delete1 ; ¤ 
bit 0,a ; Read-Only ?
jr z,delete1 ; ­¥â
show_dial_ro_all:
ld a,false ; ä« £ ­¥ ¢ë¢®¤  ¤¨ «®£  "ä ©« r/o"
or a
jr nz,delete_yes1
; ¢ë¢®¤ ®ª­  "ä ©« r/o"
ld hl,delete_name ; ®âªã¤ 
ld de,delete_name3 ; ªã¤  (¡ãä¥à 12 ¡ ©â)
call copy_string ; (hl) -> (de) á ­ã«¥¬
ld hl,dial_delete_ro ; "The file is read only"
call DialogEr
cp evCommand ; ᮡë⨥ "ª®¬ ­¤ "
ld a,-1 ; ª®¤ "®â¬¥­  ®¯¥à æ¨¨"
scf
ret nz
ld a,(hl) ;+1 what
cp cmOkey ; "Delete"
jr z,delete_yes1
cp cmAll ; "All"
scf
ret nz ; Cancel, Skip, Skip all
ld (show_dial_ro_all+1),a ; ãáâ. ä« £
delete_yes1:
; á­ïâì "r/o"  âਡãâ
ld hl,attr_record ;  âਡãâ ä ©«  (£«®¡. ï祩ª )
res 0,(hl) ; ®¡­®¢¨âì  âਡãâ
ld a,(hl)
ld hl,temp_fname ; ¨¬ï ä ©« /¯ ¯ª¨
ld bc,0116h ; ãáâ.  âਡãâ ä ©« 
rst 10h
delete1:
; ᪮¯¨à. ¨¬ï ä ©« /¯ ¯ª¨ ¢ ®¯¨á â¥«ì ¨­ä®-®ª­ 
ld hl,delete_name ; ®âªã¤ 
ld de,delete_name1 ; ªã¤ 
call copy_string
delete_try:
; ¢ë¢®¤ ¨­ä®-®ª­  ¨¬¥­¨ ä ©« /¯ ¯ª¨
ld hl,dial_delete_current
call WinSimple ; ®âªàëâì ®ª­®
; 㤠«¥­¨¥ ä ©« /¯ ¯ª¨
ld c,1Ch ; 㤠«¨âì ¯ ¯ªã
ld a,(attr_record) ;  âਡãâ ä ©«  (£«®¡. ï祩ª )
bit 4,a ; ¯ ¯ª  ?
jr nz,$+4 ; ¤ 
ld c,0Eh ; 㤠«¨âì ä ©«
ld hl,temp_fname ; ¨¬ï ä ©« /¯ ¯ª¨
rst 10h
; § ªàëâì ¨­ä®-®ª­®
push af
call CloseWinSimple
pop af
ret nc ; ä ©« (¯ ¯ª ) 㤠«¥­ ¡¥§ ®è¨¡®ª
; ®è¨¡ª¨
cp 0Bh ; ­¥ ¯ãáâ ï ¯ ¯ª  ?
jr z,folder_not_empty ; ¤ 
; ¢ë¢®¤ ®ª­  ®è¨¡ª¨ 㤠«¥­¨ï
ld hl,delete_name ; ®âªã¤ 
ld de,delete_name2 ; ªã¤  (¡ãä¥à 12 ¡ ©â)
call copy_string ; (hl) -> (de) á ­ã«¥¬
ld hl,dial_error_delete ; "Cannot delete the file"
call DialogEr
cp evCommand ; ᮡë⨥ "ª®¬ ­¤ "
ld a,-1 ; ª®¤ "®â¬¥­  ®¯¥à æ¨¨"
scf
ret nz
ld a,(hl) ;+1 what
cp cmOkey ; "Retry"
jr z,delete_try
scf
ret ; Cancel, Skip, Skip all
; “¤ «ï¥¬ ï ¯ ¯ª  ­¥ ¯ãáâ ï
folder_not_empty:
ld a,(flag_del_non_empty) ; ä« £ ¯®¤â¢¥à¦¤¥­¨ï
or a
jr z,delete_full_folder
; ¢ë¢®¤ ®ª­  ¯à¥¤ã¯à¥¦¤¥­¨ï
ld hl,delete_name ; ®âªã¤ 
ld de,delete_name4 ; ªã¤ 
call copy_string
ld hl,dial_nonempty_delete_folder ; "The following folder will be deleted"
call DialogEr
cp evCommand ; ᮡë⨥ "ª®¬ ­¤ "
ld a,-2 ; ®â¬¥­  㤠«¥­¨ï ⥪. ­¥ ¯ãá⮩ ¯ ¯ª¨
scf
ret nz
ld a,(hl) ;+1 what
cp cmOkey ; Delete
ld a,-2 ; ®â¬¥­  㤠«¥­¨ï ⥪. ­¥ ¯ãá⮩ ¯ ¯ª¨
scf
ret nz ; Cancel
; 㤠«¨âì ­¥ ¯ãáâãî ¯ ¯ªã
delete_full_folder:
ld a,3 ; ०¨¬ 㤠«¥­¨ï
del_full_fold_rec:
ld hl,0 ; á®åà.  ¤à¥á § ¯¨á¨ (¨§ ¯/¯ "prep_delete_name")
call scan_folder_alt ; ãáâ. ¯ãâì + ᪠­¨à. ¯ ¯ª¨ (qview.asm)
jr c,delete_full_folder_err
; <20>¥â ®è¨¡®ª, 㤠«¨âì áâ à⮢ãî ¯ ¯ªã
; ᪮¯¨à. ¨¬ï ä ©«  ¢ ®¯¨á â¥«ì ¨­ä®-®ª­ 
ld hl,temp_fname ; ®âªã¤ 
ld de,delete_name1 ; ªã¤ 
call copy_cur_fname_alt ; ᪮¯¨à. ¨¬ï ä ©«  ¨ ®â業â஢ âì
; ¢ë¢®¤ ¨­ä®-®ª­ 
ld hl,dial_delete_current
call WinSimple ; ®âªàëâì ®ª­®
; á®áâ ¢¨âì ¯ãâì áâ à⮢®© ¯ ¯ª¨
ld hl,(__buff) ; ¯ãâì  ªâ. ¯ ­¥«¨
ld de,work_buffer ; ªã¤  (¢ ª®­¥æ áâப¨)
call copy_string
ex de,hl
dec hl
dec hl
ld a,'\'
cp (hl)
jr z,$+3
inc hl
ld (hl),a
inc hl
ex de,hl ; de=ªã¤ 
ld hl,temp_fname ; ®âªã¤  (¨¬ï ¯ ¯ª¨)
call copy_string
; 㤠«¨âì ¯ ¯ªã
ld hl,work_buffer ; ªã¤  (¢ ª®­¥æ áâப¨)
ld c,1Ch ; 㤠«¨âì ¯ ¯ªã
rst 10h
; § ªàëâì ¨­ä®-®ª­®
call CloseWinSimple
or a
ret
delete_full_folder_err:
; ¢ë室 ¨§ ᪠­¨à. ¯® ®è¨¡ª¥
cp EUABORT ; 37 ª®¤ "®¯¥à æ¨ï ¯à¥à¢ ­  ¯®«ì§®¢ â¥«¥¬"
scf
ret z
; Žª­® ®è¨¡ª¨ 㤠«¥­¨ï
; ¢ë¢®¤ ¨¬¥­¨ ⥪. ¯ ¯ª¨
;ld hl,work_buffer+33; ; ®âªã¤ 
;ld de,delete_name5; ; ªã¤  (¡ãä¥à 12 ¡ ©â)
;call copy_cur_fname_alt; ; ᪮¯¨à. ¨¬ï ä ©«  ¨ ®â業â஢ âì
; ¢ë¢®¤ ¨¬¥­¨ áâ à⮢®© ¯ ¯ª¨
ld hl,delete_name ; ®âªã¤ 
ld de,delete_name5 ; ªã¤ 
call copy_string
ld hl,dial_error_delete_tiny ; "Cannot delete the file or folder"
call DialogEr
ld a,-1 ; ª®¤ "®â¬¥­  ®¯¥à æ¨¨"
scf
ret
; ‘ª®¯¨à®¢ âì ⥪. ¨¬ï 㤠«ï¥¬®£® ä ©« /¯ ¯ª¨ ¢ ®¯¨á â¥«ì ®ª­ .
; Ž¡à ¡®âª  ¬ ªá. ®¤­®© ¢ë¤¥«. § ¯¨á¨
prep_delete_name:
ld de,(mark_files) ; ç¨á«® ¢ë¤¥«. ä ©«®¢
ld a,d
or e
jr nz,prep_del_name1 ; ¥áâì ®¤¨­ ¢ë¤¥«. ä ©«
; ­¥â ¢ë¤¥«. ä ©«®¢
call get_record ; § ¯¨áì ¢ ⥪. ¯®«®¦¥­¨¨ 㪠§ â¥«ï
ld (attr_record),a ;  âਡãâ ä ©«  (£«®¡. ï祩ª )
ld (del_full_fold_rec+1),hl
ld a,(hl)
cp "." ; ".."
scf
ret z
jr $+5
prep_del_name1:
call scan_mark_records ; ¯®¨áª ®â¬¥ç. ä ©«  (á ­ ç «  ᯨ᪠)
prep_del_name2:
ld (del_full_fold_rec+1),hl
; ¢å®¤: hl=§ ¯¨áì ä ©« 
ld bc,delete_name ; ªã¤  (¡ãä¥à 12 ¡ ©â)
jp copy_cur_fname ; ᪮¯¨à. ¨¬ï ä ©«  ¨ ®â業â஢ âì
;======== <20>«®ª à ¡®â ¥â ¢ á®áâ ¢¥ ScanTree ===============
; “¤ «¥­¨¥ ⥪ã饣® ä ©« 
delete_file:
push ix
; ᪮¯¨à. ¨¬ï ä ©«  ¢ ®¯¨á â¥«ì ¨­ä®-®ª­ 
ld hl,work_buffer+33 ; ®âªã¤ 
ld de,delete_name1 ; ªã¤ 
call copy_cur_fname_alt ; ᪮¯¨à. ¨¬ï ä ©«  ¨ ®â業â஢ âì
; ¢ë¢®¤ ¨­ä®-®ª­ 
ld hl,dial_delete_current
call WinSimple ; ®âªàëâì ®ª­®
;
ld hl,work_buffer+32 ;  âਡãâ ­ ©¤. § ¯¨á¨
ld a,(hl)
bit 0,a ; Read-Only ?
jr z,delete_file_next ; ­¥â
; á­ïâì "r/o"  âਡãâ
res 0,(hl) ; ®¡­®¢¨âì  âਡãâ
ld a,(hl)
inc hl ; +33 (¨¬ï ä ©« )
ld bc,0116h ; ãáâ.  âਡãâ ä ©« 
push af
rst 10h
pop af
delete_file_next:
ld c,0Eh ; 㤠«¨âì ä ©«
delete_file_next1:
ld hl,work_buffer+33 ; ¨¬ï ä ©« 
rst 10h
push af
; § ªàëâì ¨­ä®-®ª­®
call CloseWinSimple
pop af
pop ix
ret
; “¤ «¥­¨¥ ⥪ã饩 ¯ ¯ª¨
; ¢å: hl= ¤à¥á ¨¬¥­¨ ⥪. ¯ ¯ª¨
delete_folder:
push ix
; ᪮¯¨à. ¨¬ï ¯ ¯ª¨ ¢ ®¯¨á â¥«ì ¨­ä®-®ª­ 
ld de,delete_name1 ; ªã¤ 
call copy_cur_fname_alt ; ᪮¯¨à. ¨¬ï ä ©«  ¨ ®â業â஢ âì
;
ld hl,work_buffer+33
ld c,1Eh ; ã§­ âì ¯ãâì
rst 10h
; ¢ë¢®¤ ¨­ä®-®ª­ 
ld hl,dial_delete_current
call WinSimple ; ®âªàëâì ®ª­®
ld c,1Ch ; 㤠«¨âì ¯ ¯ªã
jr delete_file_next1
;========================================================
;--------------------------------------------------------------
; ƒà㯯®¢®¥ 㤠«¥­¨¥ ä ©«®¢/¯ ¯®ª
;--------------------------------------------------------------
delete_group_files:
call set_path_from_activ_panel ; ãáâ. ¤¨áª ¨ ¯ãâì  ªâ. ¯ ­¥«¨
ret c
; ­ ©â¨ ®â¬¥ç. ä ©« (á ­ ç «  ᯨ᪠) + ª®¯¨à. ¨ 業â஢ª  ¨¬¥­¨
call prep_del_name1 ; ­ ©â¨ ®â¬¥ç. ä ©« + 業â஢ª  ¨¬¥­¨
;
ld a,(del_confirm) ; ä« £ ¯®¤â¢¥à¦¤¥­¨ï
or a
jr z,delete_group_loop
; ¢ë¢®¤ ­ ç «ì­®£® ®ª­ 
ld hl,dial_delete ; ®¯¨á â¥«ì ®ª­ 
call DialogW
cp evCommand ; ᮡë⨥ "ª®¬ ­¤ "
ret nz
ld a,(hl) ;+1 what
cp cmOkey ; "Ok"
ret nz
delete_group_loop:
call deleting_files ; 㤠«¨âì ⥪. ä ©«/¯ ¯ªã
jr nc,delete_group_next ; ¯à®æ¥áá Ok
; ®â¬¥­  ®¯¥à æ¨¨ ¨«¨ ®è¨¡ª 
cp -1 ; ®â¬¥­  ®¯¥à æ¨¨ ?
jp z,fresh_two_panels ; ¤ , ®¡­®¢¨âì ¯ ­¥«¨
cp -2 ; ®â¬¥­  㤠«¥­¨ï ⥪. ­¥ ¯ãá⮩ ¯ ¯ª¨
jr z,delete_group_next
cp cmSkipAll ; Skip all
jp z,fresh_two_panels
cp cmSkip ; Skip
jr z,delete_group_next
cp EUABORT ; 37 ª®¤ "®¯¥à æ¨ï ¯à¥à¢ ­  ¯®«ì§®¢ â¥«¥¬"
jp nz,fresh_two_panels ; Cancel
call set_path_from_activ_panel ; ãáâ. áâ àâ®¢ë© ¯ãâì
jp c,fresh_two_panels ; ®è¨¡ª , ®¡­®¢¨âì ¯ ­¥«¨
delete_group_next:
call scan_mark_loop ; ¯®¨áª ®â¬¥ç. ä ©«  (á«¥¤. ¯® ᯨáªã)
jp c,fresh_two_panels ; ­¥â ®â¬¥ç. § ¯¨á¥©, ®¡­®¢¨âì ¯ ­¥«¨
call prep_del_name2 ; ­ ©â¨ á«¥¤. ®â¬¥ç. § ¯¨áì + 業â஢ª  ¨¬¥­¨
jr delete_group_loop

228
MOD2/ENTER.ASM Executable file
View File

@ -0,0 +1,228 @@
;===========================================================
; ‚믮«­¥­¨¥ ª®¬ ­¤ë <Enter> ­  ⥪. § ¯¨á¨
;===========================================================
Press_Enter:
ld hl,(all_files)
ld a,l
or h
ret z ; ¯ãáâ ï ¯ ­¥«ì
call get_record ; hl=­ ç «® § ¯¨á¨, a= âਡãâ ä ©« 
; ᪮¯¨à. ¨¬ï ä ©« /¯ ¯ª¨ ¢ ¡ãä¥à
push af
ld de,work_buffer ; ªã¤ 
ld bc,0044h ; 11 -> 8.3
rst 10h
pop af
and 10h
jp z,Launch_File ; ¢ë¯®«­¨âì ä ©« (launch.asm)
;-----------------------------------------
; <20> ¢¨£ æ¨ï ¯® ¯ ¯ª ¬
;-----------------------------------------
ld a,true
ld (enter_to_folder),a ; ãáâ. ä« £ "­ ¢¨£ æ¨ï ¯® ¯ ¯ª ¬"
ld de,work_buffer ; ¨¬ï ¯ ¯ª¨ "file.ext" ä®à¬ â 
ld hl,(__buff) ;  ¤à¥á  ¡á. ¯ã⨠ ªâ. ¯ ­¥«¨
ld bc,127;255 ; ¬ ªá. ¤«¨­  ¨¬¥­¨
ld a,(de)
cp "." ; ".." ?
jr z,return_to_parent ; ­ § ¤ ¢ த¨â. ¯ ¯ªã
; á®§¤ âì ­®¢ë© ¯ãâì
xor a
cpir ; ­  ª®­¥æ ¯ã⨠¯ ­¥«¨
dec hl
dec hl
ld a,'\'
cp (hl)
jr z,$+3
inc hl
ld (hl),a
inc hl
ex de,hl
call copy_string ; (hl) -> (de) ¤® ­ã«ï
; ¢®©â¨ ¢ ¯ ¯ªã
call fresh_list_panel ; ®¡­®¢¨âì ᯨ᮪ ¯ ­¥«¨ (space.asm)
enter_done:
xor a
ld l,a
ld h,a
ld (enter_to_folder),a ; ä« £ "­ ¢¨£ æ¨ï ¯® ¯ ¯ª ¬"
ld (fresh_list_point),hl ; á¡à. ¯®«®¦. 㪠§ â¥«ï (space.asm)
ld (fresh_list_offset),hl ; á¡à. ᬥé. ᯨ᪠ (space.asm)
enter_done1: ; <- ¢ë§®¢ ¨§ "seldrv.asm"
call tab1 ; ®¡­. ¯ãâì ª®¬-áâப¨ + ¢ë¢¥á⨠㪠§ â¥«ì
; â¥áâ ¢ª«. qview-०¨¬  ­  ¤à. ¯ ­¥«¨
ld a,(format_mode1) ; ä®à¬ â ¯ áá. ¯ ­¥«¨
bit 3,a ; info
jr nz,enter_done3
ret
;bit 4,a ; qview
;ret z
;ld a,true
;ld (dinqview_flag),a
;jp dinam_qview_panel ; ®¡­®¢¨âì qview-¯ ­¥«ì
;
enter_done3:
ld a,0 ; ä« £  ®¡­®¢«¥­¨ï info-¯ ­¥«¨
or a
ret z ; ­¥ ®âà ¡. ¯à¨ ­ ¢¨£ æ¨¨ ¯® ¯ ¯ª ¬
xor a
ld (enter_done3+1),a ; á¡à. ä« £
jp set_info_noactpanel ; ®¡­®¢¨âì info-¯ ­¥«ì
;-------------------------------------------------
; <20> § ¤ ¢ த¨â. ¯ ¯ªã
;-------------------------------------------------
return_to_parent:
; á®§¤ âì ­®¢ë© ¯ãâì
call cut_path_to_prev_dir ; ®£à ­¨ç¨âì ¯ãâì த¨â. ¯ ¯ª®©
; ¢®©â¨ ¢ த¨â. ¯ ¯ªã
push af
push hl
call read_new_folder ; ­®¢ë© ᯨ᮪ ª â «®£  + à §¬¥à ¯ ¯ª¨
call sorting ; à §¤¥«ì­ë© ᯨ᮪ 㪠§ â¥«¥© + á®àâ. ᯨ᪠
pop hl
pop af
; ᪮¯¨à. ¨¬ï த¨â. ¯ ¯ª¨
ld de,work_buffer+127;255 ; ªã¤ 
cp '\' ; ª®à¥­ì ¯ã⨠?
jr z,$+4
ld (de),a ; ¢®ááâ. ¨¬ï ¤®ç¥à­¥© ¯ ¯ª¨
inc de
inc hl
call copy_string
; 8.3 -> 11 ä®à¬ â ¨¬¥­¨
ld hl,work_buffer+127;255 ; ®âªã¤ 
ld de,temp_fname ; ªã¤  (launch.asm)
ld bc,0144h
rst 10h
; ¯®§¨æ. 㪠§ â¥«ì ­  ¨¬ï ¯ ¯ª¨
call calc_index_name ; ¢ëç¨á«¨âì ¨­¤¥ªá ¨¬¥­¨
call set_pointer ; à áç. ¯®«®¦. 㪠§ â¥«ï/ᯨ᪠
ld (fresh_list_offset),hl ; ᬥé. ᯨ᪠ (space.asm)
ld (fresh_list_point),bc ; ¯®«®¦. 㪠§ â¥«ï (space.asm)
call fresh_list_pan ; ®¡­®¢¨âì ᯨ᮪ ¯ ­¥«¨ (space.asm)
jr enter_done ; ®¡­®¢¨âì ¯ãâì ª®¬-áâப¨
; ‚ëç¨á«¨âì ¯®«®¦. ¨¬¥­¨ ¯ ¯ª¨ ¢ ᯨ᪥ ¯ ­¥«¨
; ¢å®¤: bc=¨­¤¥ªá ¯®«®¦. ¨¬¥­¨ ¯ ¯ª¨
; ¢ë室: bc=¯®«®¦. 㪠§ â¥«ï
; hl=ᬥé. ᯨ᪠
set_pointer:
ld hl,(all_files)
ld de,(_0D01+1) ; à §¬¥à áâà ­¨æë - 1
call cmphlde
jr nc,setpnt2
; ç¨á«® ä ©«®¢ ¬¥­ìè¥ á¯¨áª  ¯ ­¥«¨
setpnt1:ld hl,0
ret
;
; …᫨ ¨­¤¥ªá ¨¬¥­¨ ­¥ 㬥頥âáï ­  ¯¥à¢®© áâà ­¨æ¥,
; â® ¨¬ï ãáâ ­®¢¨âì ¢ ª®­¥æ áâà ­¨æë ¨ ­ áâநâì
; á®®â¢. ®¡à §®¬ ᬥé. ᯨ᪠.
setpnt2:ld a,c
sub e
ld a,b
sbc a,d
jr c,setpnt1 ; 㪠§. ¢ ¯à¥¤¥« å ¯¥à¢®© áâà ­¨æë ᯨ᪠
; bc=¨­¤¥ªá ¨¬¥­¨
; de=à §¬¥à áâà ­¨æë-1
ld l,c
ld h,b
ld bc,-1 ; áç¥â稪 ᬥé. ᯨ᪠
dec hl
inc bc
call cmphlde ; hl ¨ "à §¬¥à áâà ­¨æë - 1"
jr nc,$-5
ld hl,(offset_list) ; ᬥé. ᯨ᪠
ld a,l
sub c ; offset_list - áç¥â稪
ld a,h
sbc a,b
jr nc,$+4
ld l,c ; hl=ᬥé. ᯨ᪠
ld h,b
; 㪠§ â¥«ì ¢ ¯à¥¤¥« å ¯®á«¥¤. áâà ­¨æë ᯨ᪠
ld c,e ; bc=¯®«®¦. 㪠§ â¥«ï
ld b,d
ret
; ‚ëç¨á«¨âì ¨­¤¥ªá ¯®«®¦. ¨¬¥­¨ ¯ ¯ª¨ ¢ ᯨ᪥
; ¢å®¤: temp_fname - ¨¬ï ¯ ¯ª¨
; ¢ë室: bc=¨­¤¥ªá ¨¬¥­¨
calc_index_name:
ld bc,0 ; ¨­¤¥ªá ¯®«®¦¥­¨ï
exx
ld hl,(all_folders) ; ç¨á«® ¯ ¯®ª
ld a,(sort_type) ; ०¨¬ á®àâ¨à®¢ª¨
cp "u" ; unsorted
jr nz,$+5
ld hl,(all_files) ; ç¨á«® ¯ ¯®ª+ä ©«®¢
ld a,l
or h
exx
ret z
ld hl,(directory) ; ¬ áᨢ 㪠§ â¥«¥© ­  ¯ ¯ª¨
calc_index__:
ld e,(hl)
inc hl
ld d,(hl)
inc hl
push hl
ex de,hl ; ¨¬ï ᯨ᪠
ld de,temp_fname ; ¨¬ï ¯ã⨠(launch.asm)
call compare_fnames ; áà ¢­¨âì ¨¬¥­ 
pop hl
ret z
inc bc ; ++¨­¤¥ªá ¯®«®¦¥­¨ï
exx
dec hl
ld a,l
or h
exx
jp nz,calc_index__
ret
; ‘à ¢­¨âì áâப¨
; ¢å®¤: hl=string1
; de=string2
; ¢ë室: "z" - ᮢ¯ ¤ îâ
; "nz" - ­¥ ᮢ¯ ¤ îâ
compare_fnames:
ld a,11 ; ¤«¨­  áà ¢­¥­¨ï
ex af,af'
ld a,(de)
cp (hl)
ret nz
inc hl
inc de
ex af,af'
dec a
jr nz,$-8
ret
; Ž£à ­¨ç¨âì ¯ãâì ¯à¥¤ë¤ã饩 ¯ ¯ª®©
; ¢å®¤: hl=áâப  ¯ãâ¨
; ¢ë室: hl=­ ç «® ¨¬¥­¨ § â¥à⮩ ¯ ¯ª¨
; a=§ â¥àâë© á¨¬¢®« ¨¬¥­¨ ¯ ¯ª¨
cut_path_to_prev_dir:
ld e,l
ld d,h
xor a
cpir ; ­  ª®­¥æ áâப¨
dec hl
ld bc,127;255
ld a,'\'
cpdr
inc hl
ex de,hl
sbc hl,de ; ª®à¥­ì ¯ã⨠?
ex de,hl
jr nz,$+3 ; ­¥â
inc hl
ld a,(hl) ; á®åà. § â¨à. ᨬ¢®«
ld (hl),0 ; ®âª¨­ãâì ¯®á«¥¤. ¯ ¯ªã
ret

57
MOD2/EVENT.ASM Executable file
View File

@ -0,0 +1,57 @@
;-------------------------------------------------
; ˆ­¨æ¨ «¨§ æ¨ï ®¡à ¡®â稪  ᮡë⨩
;-------------------------------------------------
InitEvent:
ld hl,what
ld b,8
xor a
ld (hl),a
inc hl
djnz $-2
ld a,1 ; ®ç¨áâ¨âì ¡ãä¥à ª« ¢ë
rst 20h
ld a,4 ; Get Mouse coord and buttons
rst 30h
ret
;-------------------------------------------------
; —⥭¨¥ ᮡë⨩
;-------------------------------------------------
handle_event:
ld ix,what ; ¯®«¥ ᮡë⨩
ld (ix+0),evNothing
call get_mouse_info ; Get mouse coords & buttons
jr nz,ButtPress ; Button Press
ld a,2 ; ®¯à®á ª« ¢ë ¡¥§ ®¦¨¤ ­¨ï
rst 20h
ret z ; no keys
or a
jr z,CursKey
bit 7,d
jr z,CodeKey ; no press combination
cp 9 ; Tab + CombKeys
jr z,CursKey
CodeKey:
ld (ix+0),evKeyboard
ld (ix+1),e ; code key
ld (ix+2),d ; scan code
ret
CursKey:ld (ix+0),evCombKey ; Keyboard combination
ld (ix+1),b ; keyboard flag
ld (ix+2),d ; ª®¤ ªãàá. ª« ¢¨è
ret
ButtPress:
ld d,a
;bit 0,a ; ¯à ¢ë© ¡ãâ®­ ?
;jr nz,RgtButt ; ¤ 
ld (ix+0),evMouseFr ; Mouse buttons press
ld (ix+1),l ; coord X
ld (ix+2),h ; coord Y
ret
;RgtButt:ld (ix+0),evCommand
;ld (ix+1),cmLocMenuM
;ret
; ¯®«¥ ᮡë⨩
what: ds 8

560
MOD2/FILLSTR.ASM Executable file
View File

@ -0,0 +1,560 @@
;-------------------------------------------------
; ‡ ¯®«­¥­¨¥ áâப¨ ᯨ᪠ ¯® ä®à¬ âã ¯ ­¥«¨
;-------------------------------------------------
; ¢å®¤: b=ä®à¬ â ¯ ­¥«¨
; hl=­ ç «® § ¯¨á¨ ª â «®£ 
; de=ï祩ª   âਡã⮢ ä ©« 
fill_string:
ld ix,string_of_list ; ¡ãä¥à áâப¨
bit 1,b ; Medium
jp nz,fill_med
bit 2,b ; Brief
jp nz,fill_brief
; Full
bit 6,b
jp nz,fill_full_spec ; full-spec
; ms-dos
ld a,(de) ; ¡ ©â  âਡã⮢
bit 4,a ; ¯ ¯ª  ?
jp nz,dir_name_full ; ¤ , ¢ë¢®¤ ¨¬¥­¨
; ä®à¬ â "file ext"
ld b,8
call L22BD ; ¨¬ï ä ©« 
ld b,4 ; ç¨á«® ¯à®¡¥«®¢
call spaces ; ¢áâ ¢¨âì ¯à®¡¥«ë
ld b,3
call L22BD ; à áè. ä ©« 
fill_string1__:
call separator ; "³" (¨«¨ " ") à §¤¥«¨â¥«ì ª®«®­®ª
; 2 ª®«®­ª  (à §¬¥à ä ©« )
push hl
ld de,17 ; ᬥé. ­  à §¬¥à ä ©« 
add hl,de
call L0020 ; de = à §¬¥à ä ©« 
ld c,(hl)
inc hl
ld b,(hl)
push bc
exx
pop hl
exx
ex de,hl
ld a,1
ld (put_mega),a ; ãáâ. ä« £
ld bc,0120h ; ¢¥¤ã騥 ¯à®¡¥«ë
call dec32 ; ¢ë¢®¤ à §¬¥à  ä ©«  (¢ ¯ ­¥«¨)
ld hl,put_mega
ld (hl),0 ; á¡à. ä« £
pop hl
A2290: call separator ; "³" (¨«¨ " ") à §¤¥«¨â¥«ì ª®«®­®ª
; 3 ª®«®­ª  (¤ â )
ld de,13
add hl,de ;+24 ¯¥à¥©â¨ ­  ¤ âã
ex de,hl
ld a,(de)
and 1Fh
call dec8 ; ¢ë¢®¤ ¤­ï
ld (ix+0),"." ; à §¤¥«¨â¥«ì "¤¥­ì.¬¥áïæ"
inc ix
ld a,(de)
and 0E0h
ld b,a
inc de
ld a,(de)
and 1
or b
rlca
rlca
rlca
call dec8 ; ¢ë¢®¤ ¬¥áïæ 
ld (ix+0),"." ; à §¤¥«¨â¥«ì "¬¥áïæ.£®¤"
inc ix
ld a,(de)
and 0FEh
rrca
add a,80
cp 100
jr c,$+4
sub 100
call dec8 ; ¢ë¢®¤ £®¤ 
call separator ; "³" (¨«¨ " ") à §¤¥«¨â¥«ì ª®«®­®ª
; 4 ª®«®­ª  (¢à¥¬ï)
dec de
dec de
ld a,(de) ;+22 ï祩ª  ¢à¥¬¥­¨
and 0F8h
rrca
rrca
rrca
call dec8 ; ¢ë¢®¤ ç á®¢
ld (ix+0),":" ; à §¤¥«¨â¥«ì "ç áë:¬¨­ãâë"
inc ix
ld a,(de) ;+22
and 7
ld b,a
dec de
ld a,(de) ;+21
and 0E0h
or b
rlca
rlca
rlca
jp dec8 ; ¢ë¢®¤ ¬¨­ãâ
;
; ¢ë¢®¤ ¨¬¥­¨ ¯ ¯ª¨
; in: hl= ¤à¥á ¨¬¥­¨
dir_name_full:
ld a,(hl)
push af
call dir_name ; ¢áâ ¢¨âì ¨¬ï ¯ ¯ª¨
ld b,3 ; ç¨á«® ¯à®¡¥«®¢
call spaces ; ¢áâ ¢¨âì ¯à®¡¥«ë
call separator ; "³" (¨«¨ " ") à §¤¥«¨â¥«ì ª®«®­®ª
pop af
; 2 ª®«®­ª 
ld de,folder_string ; "Folder "
cp "." ; த¨â. ¯ ¯ª  ?
jr nz,A2304_
ld de,up_string ; " Up "
A2304_: ex de,hl
ld b,7 ; ¤«¨­  áâப¨
A2307_: ld a,(hl)
ld (ix+0),a ; ᨬ¢®« ¢ áâபã
inc hl
inc ix
djnz A2307_
ex de,hl
jp A2290 ; ¢ë¢®¤ ¤ âë ¨ ¢à¥¬¥­¨
;-------------------------------------------------
; ¢ë¢®¤ ¨¬¥­¨ ¯ ¯ª¨
;-------------------------------------------------
; in: hl=­ ç «® § ¯¨á¨ ª â «®£ 
; ix=¡ãä¥à
dir_name:
; ä®à¬ â "dir.ext" (¢á¥£¤  ¢ë¢®¤¨â 12 ᨬ¢®«®¢)
call directory1__
dec e
inc e
ret z
ld b,e
jp spaces ; ¤®¡ ¢¨âì ª®­æ¥¢ë¥ ¯à®¡¥«ë
;
directory1__:
ld e,1 ; áç¥â稪 ¤®¯®«­. ¯à®¡¥«®¢
ld b,8 ; ¨¬ï ¯ ¯ª¨
call directory3__
ld a,(hl)
cp " "
jr z,directory2__
dec e
ld (ix+0),"." ; ᨬ¢®« ¢ áâபã
inc ix
directory2__:
ld b,3 ; à áè. ¯ ¯ª¨
directory3__:
ld a,(hl)
cp " "
jr z,directory4__
; ¢ë¢®¤ ᨬ¢®« 
ld (ix+0),a ; ᨬ¢®« ¢ áâபã
inc ix
inc hl
djnz directory3__
ret
directory4__:
inc hl
inc e
djnz directory4__
ret
;-------------------------------------------------
; Medium
;-------------------------------------------------
fill_med:
bit 6,b
jp nz,fill_med_spec ; med-spec
; ms-dos
ld a,(de) ;+11 ᬥé. ¤® ¡ ©â   âਡã⮢
bit 4,a ; ¯ ¯ª  ?
jp nz,dir_name_med ; ¤ , ¢ë¢®¤ ¨¬¥­¨
; ä®à¬ â "file.ext" (¢á¥£¤  ¢ë¢®¤¨â 15 ᨬ¢®«®¢)
ld d,0 ; ¬ «¥­ìª¨¥ ¡ãª¢ë
fill_med1:
call fill_med1__
fill_med__:
ld a,(string_len)
sub 15 ; 15=¤«¨­  áâப¨ ¨¬¥­¨
ld b,a
jp spaces
;
fill_med1__:
call fill_med2__
fill_med11__:
ld b,e
jp spaces ; ¤®¡ ¢¨âì ª®­æ¥¢ë¥ ¯à®¡¥«ë
;
fill_med2__:
ld b,8 ; ¨¬ï ä ©« 
ld e,1+3 ; áç¥â稪 ¤®¯®«­. ¯à®¡¥«®¢
call fill_med4__
ld a,(hl)
cp " "
jr z,fill_med3__
dec e
ld (ix+0),"." ; ᨬ¢®« ¢ áâபã
inc ix
fill_med3__:
ld b,3 ; à áè.
fill_med4__:
ld a,(hl)
cp " "+1
jr c,fill_med7__
; ¢ë¢®¤ ᨬ¢®« 
bit 0,d
jr nz,fill_med6__ ; ­¥ ¬¥­ïâì ॣ¨áâà ¡ãª¢
cp "_"
jr z,fill_med6__
set 5,a
cp "ð" ; 240
jr nz,fill_med6__
inc a ; 241 = "ñ"
fill_med6__:
ld (ix+0),a ; ᨬ¢®« ¢ áâபã
inc ix
inc hl
djnz fill_med4__
ret
fill_med7__:
inc hl
inc e
djnz fill_med7__
ret
;
dir_name_med:
call dir_name ; ¢áâ ¢¨âì ¨¬ï ¯ ¯ª¨
ld a,(string_len)
sub 12 ; ¤«¨­  ¨¬¥­¨ ¯ ¯ª¨
ld b,a ; ç¨á«® ¯à®¡¥«®¢
jp spaces ; ¢áâ ¢¨âì ¯à®¡¥«ë
; ¢áâ ¢¨âì ᯥª-¨¬ï "file.ext" ä®à¬ â 
;--------------------------------------
fill_med_spec:
call fill_med_spec_name
jr fill_med__
;
fill_med_spec_name:
ld b,8-1 ; ¨¬ï ä ©« 
ld e,1+3 ; áç¥â稪 ¤®¯®«­. ¯à®¡¥«®¢
call fill_med_spec2
ld a,(hl)
cp " "
jr z,fill_med_spec1
dec e
ld (ix+0),"." ; ᨬ¢®« ¢ áâபã
inc ix
fill_med_spec1:
call fill_spec_ext1 ; ᪮¯¨à. à áè.
jr fill_med11__ ; ¤®¡ ¢¨âì ª®­æ. ¯à®¡¥«ë
;
fill_med_spec2:
ld a,(hl)
and 7Fh ; á¡à.7-© ¡¨â (¬ àª.ä ©« )
ld (ix+0),a
inc ix
inc hl
fill_med_spec3:
ld a,(hl)
cp " "
jr nz,fill_med_spec4
inc hl
ld a,(hl)
dec hl
cp " "
jr z,fill_med_spec5
ld a,b
dec a
jr z,fill_med_spec5
ld a,"_" ;" " ; ᨬ¢®« ¢­ãâਠ¨¬¥­¨
fill_med_spec4:
ld (ix+0),a
inc ix
inc hl
djnz fill_med_spec3
ret
;
fill_med_spec5:
inc hl
inc e
djnz fill_med_spec5
ret
;-------------------------------------------------
; Brief
;-------------------------------------------------
fill_brief:
bit 6,b
jr nz,fill_brief_spec ; brief-spec
; ms-dos
ld a,(de) ;+11 ᬥé. ¤® ¡ ©â   âਡã⮢
bit 4,a ; ¯ ¯ª  ?
jp nz,dir_name ; ¤ , ¢ë¢®¤ ¨¬¥­¨
; ä®à¬ â "filename ext"
ld b,8
call L22BD ; ¨¬ï ä ©« 
ld (ix+0)," "
inc ix
ld b,3
jp L22BD ; à áè. ä ©« 
;
; ä®à¬ â "filename ext"
fill_brief_spec:
ld b,1 ; ç¨á«® ¯à®¡¥«®¢ ¬¥¦¤ã "Filename" ¨ "Ext"
jp fill_spec_name
;-------------------------------------------------
; Full-Spec
;-------------------------------------------------
;º Name ³ Size³Start³SSz³Trk³Secº
;ºFilename Ext³00000³00000³000³000³000º
;
fill_full_spec:
ld b,3 ; ç¨á«® ¯à®¡¥«®¢ ¬¥¦¤ã "Filename" ¨ "Ext"
call fill_spec_name ; ¢ë¢®¤ "Filename Ext"
fill_full_spec1:
inc hl ; ­  áâ àâ.  ¤à¥á ä ©«  (2-ï ¡ãª¢  à áè.)
push hl
; ª®«®­ª  "Size"
inc hl
inc hl
call L0020 ; ¢ de à §¬¥à ä ©«  ¢ ¡ ©â å
call dec16s ; 16-bit ç¨á«® á ¢¥¤. ¯à®¡¥« ¬¨
call separator ; "³"
pop hl
; ª®«®­ª  "Start"
call L0020 ; ¢ de áâ àâ.  ¤à¥á
call dec16s
call separator
inc hl
inc hl
; ª®«®­ª  "SSz"
ld a,(hl) ; à §¬¥à ä ©«  ¢ ᥪâ®à å
inc hl
call dec9 ; 0..999 ç¨á«® á ¢¥¤. ¯à®¡¥« ¬¨
call separator
db 3Eh ; ld a,..
trd_records:
db true ; ä« £ trd-ᯨ᪠ ä ©«®¢
or a
jr z,fill_spec_scl
; ª®«®­ª  "Trk" (­®¬¥à ¤®à®¦ª¨ ä ©« )
inc hl
ld a,(hl)
call dec9
call separator
dec hl
; ª®«®­ª  "Sec" (­®¬¥à ¯¥à¢®£® ᥪâ®à  ä ©« )
ld a,(hl)
jp dec9
;
; SCL-ᯨ᮪ ä ©«®¢
fill_spec_scl:
ld b,3
call spaces ; ®ç¨áâ¨âì ª®«®­ªã "Trk"
call separator
ld b,3
jp spaces ; ®ç¨áâ¨âì ª®«®­ªã "Sec"
; ˆ¬ï ᯥª-ä ©«  ä®à¬ â  "Filename Ext"
; ¢å®¤: b=ç¨á«® ¯à®¡¥«®¢ ¬¥¦¤ã "Filename" ¨ "Ext"
fill_spec_name:
push bc
ld a,(hl)
and 7Fh ; á¡à.7-© ¡¨â (¬ àª.ä ©« )
ld (ix+0),a
inc ix
inc hl
ld b,7
call A0E90 ; ᪮¯¨à. ¨¬ï ä ©« 
pop bc
call spaces
push hl
call fill_spec_ext1 ; ᪮¯¨à. à áè.
call separator ; "³"
pop hl
ret
;
; Š®¯¨à®¢ ­¨¥ ᯥª-à áè¨à¥­¨ï ä ©« 
fill_spec_ext1:
; § ¯à¥é¥­ë ¢ ms-dos
; " + , . / : ; < = > [ \ ] |
; 22 2B 2C 2E 2F 3A 3B 3C 3D 3E 5B 5C 5D 7C
;
ld bc,0320h ; à áè./¯à®¡¥«
ld a,(hl)
cp "B" ; (B)asic-ä ©«
jr nz,fill_spec_ext__+1
ld (ix+0),a ; ᨬ¢®« ¢ áâபã
inc ix
inc hl
dec b
jr fill_spec_ext2__
fill_spec_ext__:
ld a,(hl)
cp " "+1
jr c,fill_spec_ext2__ ; ­¥â à áè.
cp "z"+1
jr nc,fill_spec_ext2__
cp '"'
jr z,fill_spec_ext2__
cp "-"
jr z,fill_spec_ext1__
cp "," ; 2Ch
jr c,fill_spec_ext1__
cp "/"+1 ; 2Fh+1
jr c,fill_spec_ext2__
cp ":" ; 3Ah
jr c,fill_spec_ext1__
cp ">" ; 3Eh
jr c,fill_spec_ext2__
cp "["
jr c,fill_spec_ext1__
cp "_"+1
jr c,fill_spec_ext2__
cp "`"
jr z,fill_spec_ext2__
fill_spec_ext1__:
ld (ix+0),a ; ᨬ¢®« ¢ áâபã
inc ix
inc hl
djnz fill_spec_ext__
ret
;
fill_spec_ext2__:
ld (ix+0),c ; ᨬ¢®« ¢ áâபã
inc ix
inc hl
djnz fill_spec_ext2__
ret
;-------------------------------------------------
; ‚áâ ¢ª  áâப¨ ¢ ¡ãä¥à (¬ «¥­ìª¨¬¨ ¡ãª¢ ¬¨)
;-------------------------------------------------
; in: hl=áâப 
; ix=¡ãä¥à
; b=¤«¨­  ¢å®¤. áâப¨
;
L22BD: ld a,(hl)
inc hl
cp "_"
jr z,A22D0_
set 5,a
cp "ð" ; 240
jr nz,A22D0_
inc a ; 241 = "ñ"
A22D0_: ld (ix+0),a ; ᨬ¢®« ¢ áâபã
inc ix
djnz L22BD
ret
;-----------------------------------------------------------
; ‚뢮¤ ¨­ä®à¬. áâப¨ ¢­¨§ã ¯ ­¥«¨
;-----------------------------------------------------------
print_status:
call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
ret z ; ¢ëª«.
ld a,(format_mode)
and form_info+form_qview
ret nz
call get_record ;  ¤à¥á ⥪. § ¯¨á¨ ¢ ¯ ¯ª¥
ld b,a ;+11  âਡãâ ä ©« 
jr print_status6__
;
print_status1:
db 21h ; ld hl,..
print_status1__:
dw 0 ; á®åà. ­ ç «® § ¯¨á¨ (¨§ ª â «®£ )
db 6 ; ld b,..
print_status2__:
db 0 ;  âਡãâ ä ©« 
print_status6__:
; ®ç¨áâ¨âì áâ â. áâபã
di
ld (print_stat_stack),sp ; á®åà. á⥪
ld de,2020h ; ¯à®¡¥«ë
ld sp,status_string+42 ; ª®­¥æ áâப¨ - 1
ld a,19 ; 38/2
print_stat_loop:
push de
dec a
jr nz,print_stat_loop
db 31h ; ld sp,..
print_stat_stack:
dw 0
ei
ld ix,status_string+4 ; ¡ãä¥à áâப¨
ld a," "
ld (separ__),a
ld a,(format_mode) ; ä®à¬ â  ªâ. ¯ ­¥«¨
bit 6,a ; spec
jr nz,print_status_spec
bit 4,b ; ¯ ¯ª  ?
jr z,print_status4__ ; ­¥â
bit 0,a ; full
jr z,print_status3__ ; ­¥â
call dir_name ; ¢áâ ¢¨âì ⮫쪮 ¨¬ï ¯ ¯ª¨
jr print_status5__
;
print_status3__:
call dir_name_full ; ¢áâ ¢¨âì ¨¬ï+¤ â +¢à¥¬ï ¯ ¯ª¨
jr print_status5__
;
; ¨¬ï ä ©« 
print_status4__:
ld d,1 ; ­¥ ¬¥­ïâì ॣ¨áâà ¡ãª¢
call fill_med1__ ; ä®à¬ â "file.ext" (¢ë¢®¤¨â 15 ᨬ¢.)
ld a,(format_mode) ; ä®à¬ â  ªâ. ¯ ­¥«¨
bit 0,a ; full
call z,fill_string1__ ; ¢áâ ¢¨âì à §¬¥à+¤ â +¢à¥¬ï
print_status5__:
ld a,"³"
ld (separ__),a ; ¢®ááâ. à §¤¥«¨â¥«ì
ld (ix+0),0 ; ª®­¥æ ®¯¨á â¥«ï
; ¢ë¢®¤ £®â®¢®© áâப¨
ld hl,status_string ; ®¯¨á â¥«ì áâப¨
jp draw_text ; ¯®§¨æ. ¢ë¢®¤ áâப¨
;
;
; § ¯®«­¥­¨¥ ᯥª-áâப¨
print_status_spec:
; ä®à¬ â "file.ext"
push hl
call fill_med_spec_name ; ¢áâ ¢¨âì ᯥª. ¨¬ï
pop hl
ld bc,8 ; ᬥé. ­  1-î ¡ãª¢ã à áè.
add hl,bc ; ¤«ï ¯/¯ fill_full_spec1
ld a,(format_mode) ; ä®à¬ â  ªâ. ¯ ­¥«¨
bit 0,a ; full
call z,fill_full_spec1 ; ¢áâ ¢¨âì "Size-Start-SSz-Trk-Sec"
jr print_status5__ ; ¢ë¢®¤ £®â®¢®© áâப¨

170
MOD2/HILIGHT.ASM Executable file
View File

@ -0,0 +1,170 @@
;-------------------------------------------------
; <20>®¤á¢¥âª  ä ©«®¢
;
; ¢å®¤: de= ¤à¥á  âਡãâ  ä ©«  (+11)
; b=ä®à¬ â  ªâ. ¯ ­¥«¨
; ¢ë室: c=¨­¤¥ªá 梥â 
;-------------------------------------------------
hilight_types:
ld c,index_markfile; ; 3 ¨­¤¥ªá æ¢¥â  ¬ àª. ä ©« 
ex de,hl
inc hl
ld a,(hl) ;+12 ï祩ª  ¬ àª¨à®¢ª¨ ä ©« 
rlca ; ®â¬¥ç¥­ ?
ret c ; ¤ 
dec c; ; c=2
db 3Eh ; ld a,..
hilight_enable:
db true ; ä« £ à áªà áª¨ ä ©«®¢
or a
ret z
bit 6,b ; spec-ä®à¬ â ?
ret nz ; ¤ 
dec hl
bit 4,(hl) ;+11 ¯ ¯ª  ?
ld c,60; ; ¨­¤¥ªá æ¢¥â  ¯ ¯ª¨
ret nz ; ¤ 
ld c,62; ; c=62 ¨­¤¥ªá æ¢¥â   à娢®¢
dec hl ;+10 hl=ª®­¥æ à áè.
ld a,(hl) ; J
dec hl
ld d,(hl) ; R
dec hl
ld e,(hl) ; A
res 5,d
res 5,e
cp " "
jp nz,hilight
; 2-å ¡ãª¢. à áè¨à¥­¨¥  à娢®¢
ld hl,"AH" ; ha
and a
sbc hl,de
ret z
ld hl,"ZG" ; gz
and a
sbc hl,de
ret z
jp hilight_normal
;
hilight:and 11011111b ; á¡à. 5-bit
dec c; ; c=61 ¨­¤¥ªá æ¢¥â  ¨á¯®«­ï¥¬ëå ä ©«®¢
; ¨á¯®«­ï¥¬ë¥ ä ©«ë
ld hl,"XE" ; exe
and a
sbc hl,de
jp nz,hilight1
cp "E"
ret z
jp hilight_normal
hilight1:
ld hl,"AB" ; bat
and a
sbc hl,de
jp nz,hilight_spec
cp "T"
ret z
jp hilight_normal
; à áè. scl,trd ᯥª-ä ©«®¢
hilight_spec:
ld c,65; ; ¨­¤¥ªá æ¢¥â  á¯¥ª-ä ©«®¢
ld hl,"CS" ; scl
and a
sbc hl,de
jp nz,hilight2
cp "L"
ret z
jp hilight_normal
hilight2:
ld hl,"RT" ; trd
and a
sbc hl,de
jp nz,hilight_arc
cp "D"
ret z
jp hilight_normal
;  à娢ë
hilight_arc:
ld c,62; ; ¨­¤¥ªá æ¢¥â   à娢®¢
ld hl,"IZ" ; zip
and a
sbc hl,de
jp nz,hilight3
cp "P"
ret z
jp hilight_normal
hilight3:
ld hl,"RH" ; hrp (hrip)
and a
sbc hl,de
jp nz,hilight4
cp "P"
ret z
jp hilight_normal
hilight4:
ld hl,"AR" ; rar
and a
sbc hl,de
jp nz,hilight5
cp "R"
ret z
jp hilight_normal
hilight5:
ld hl,"AC" ; cab
and a
sbc hl,de
jp nz,hilight6
cp "B"
ret z
jp hilight_normal
hilight6:
ld hl,"RA" ; arj
and a
sbc hl,de
jp nz,hilight7
cp "J"
ret z
cp "C" ; ar(c)
ret z
jp hilight_normal
hilight7:
ld hl,"CA" ; ace
and a
sbc hl,de
jp nz,hilight8
cp "E"
ret z
jp hilight_normal
hilight8:
ld hl,"ZL" ; lzh
and a
sbc hl,de
jp nz,hilight9
cp "H"
ret z
jp hilight_normal
hilight9:
ld hl,"CI" ; ice
and a
sbc hl,de
jp nz,hilight10
cp "E"
ret z
jp hilight_normal
hilight10:
ld hl,"GT" ; tgz
and a
sbc hl,de
jp nz,hilight11
cp "Z"
ret z
jp hilight_normal
hilight11:
ld hl,"OZ" ; zoo
and a
sbc hl,de
jp nz,hilight_normal
cp "O"
ret z
hilight_normal:
ld c,2; ; ¨­¤¥ªá æ¢¥â  ¯ ­¥«¨
ret

611
MOD2/INFO.ASM Executable file
View File

@ -0,0 +1,611 @@
;/////////////////////////////////////////////////////////////////////
; ‚뢮¤ ¤ ­­ëå  ªâ. ¯ ­¥«¨ -> ¢ ¯ áá. ¯ ­¥«ì (¢ë§ë¢ ¥âáï ¨§ ä ©«¥à )
; <âਣ£¥à­ ï ä¨âç >
;/////////////////////////////////////////////////////////////////////
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";

344
MOD2/KEYBAR.ASM Executable file
View File

@ -0,0 +1,344 @@
;-----------------------------------------------------------
; ‚뢮¤ à §­ëå á®áâ®ï­¨© key-¡ à  ¨ ®¡à ¡®â稪¨ ¥£® ®¯æ¨©
;-----------------------------------------------------------
; ­®à¬ «ì­ ï áâப  key-¡ à 
keybar_norm:
db "1Help "
db "2UserMn "
db "3View "
db "4Edit "
db "5Copy "
db "6RenMov "
db "7MkFold "
db "8Delete "
db "9ConfMn "
db "10Quit "
; áâப  key-¡ à  á Ctrl+..
keybar_ctrl:
db "1 "
db "2 "
db "3Name "
db "4Extens "
db "5Date "
db "6Size "
db "7Unsort "
db "8 "
db "9 "
db "10 "
; áâப  key-¡ à  á Alt+..
keybar_alt:
db "1Left "
db "2Right "
db "3 " ; "3View.. "
db "4 " ; "4Edit.. "
db "5 " ; "5Print "
db "6 "
db "7 " ; "7Find "
db "8 "
db "9 "
db "10 "
; áâப  key-¡ à  á Shift+..
keybar_shift:
db "1 "
db "2 "
db "3 "
db "4 "
db "5 "
db "6 "
db "7 "
db "8 "
db "9 "
db "10 "
;  âਡãâë áâப¨ key-¡ à 
keybar_attr:
db kb_b,kb_f,kb_f,kb_f,kb_f,kb_f,kb_f,kb_b ; 1
db kb_b,kb_f,kb_f,kb_f,kb_f,kb_f,kb_f,kb_b ; 2
db kb_b,kb_f,kb_f,kb_f,kb_f,kb_f,kb_f,kb_b ; 3
db kb_b,kb_f,kb_f,kb_f,kb_f,kb_f,kb_f,kb_b ; 4
db kb_b,kb_f,kb_f,kb_f,kb_f,kb_f,kb_f,kb_b ; 5
db kb_b,kb_f,kb_f,kb_f,kb_f,kb_f,kb_f,kb_b ; 6
db kb_b,kb_f,kb_f,kb_f,kb_f,kb_f,kb_f,kb_b ; 7
db kb_b,kb_f,kb_f,kb_f,kb_f,kb_f,kb_f,kb_b ; 8
db kb_b,kb_f,kb_f,kb_f,kb_f,kb_f,kb_f,kb_b ; 9
db kb_b,kb_b,kb_f,kb_f,kb_f,kb_f,kb_f,kb_f ; 10
__pointer:
call show_pointer ; ¢ë¢¥á⨠㪠§ â¥«ì (¥á«¨ ¯ ­¥«¨ ¢ª«.)
;-----------------------------------------------------------
; <20> ç «ì­ë© ¢ë¢®¤ áâப¨ key-¡ à  (áâப  á  âਡãâ ¬¨)
;-----------------------------------------------------------
print_keybar:
ld de,keybar_norm ; ⥪áâ
print_keybar1:
ld hl,037Dh ; 0301h + (4*31)
in a,(89h)
ld b,a ; á®åà. ¯®àâ
in a,(SLOT0)
ld c,a ; á®åà.¯®àâ
di
ld a,50h ; ¢¨¤¥®-áâà ­¨æ 
out (SLOT0),a
ld a,81h ; +0 (ᬥé. á«¥¢ )
out (89h),a ; ª®«®­ª 
; ¢ë¢®¤ ⥪áâ 
ld d,d ; ãáâ. à §¬¥à ¡«®ª 
ld a,80 ; ¤«¨­  áâப¨
ld b,b ; ¢ëª«.  ªá¥«ì
ld l,l ; ª®¯¨à®¢ âì ¡«®ª
ld a,(de)
ld b,b ; ¢ëª«.  ªá¥«ì
ld a,a ; ª®¯¨à®¢ ­¨¥ ¡«®ª  (¢¥àâ. «¨­¨¨)
ld (hl),a
ld b,b ; ¢ëª«.  ªá¥«ì
; ¢ë¢®¤  âਡã⮢
ld de,keybar_attr ; áâப   âਡã⮢
ld a,81h ; +0 (ᬥé. á«¥¢ )
out (89h),a
inc hl ; ¯¥à¥©â¨ ­   âਡãâë
ld d,d ; ãáâ. à §¬¥à ¡«®ª 
ld a,80 ; ¤«¨­  áâப¨
ld b,b ; ¢ëª«.  ªá¥«ì
ld l,l ; ª®¯¨à®¢ âì ¡«®ª
ld a,(de)
ld b,b ; ¢ëª«.  ªá¥«ì
ld a,a ; ª®¯¨à®¢ ­¨¥ ¡«®ª  (¢¥àâ. «¨­¨¨)
ld (hl),a
ld b,b ; ¢ëª«.  ªá¥«ì
ld a,b
out (89h),a ; ¢®ááâ. ¯®àâ
ld a,c
out (SLOT0),a ; ¢®ááâ. ¯®àâ
ei
ret
;-----------------------------------------------------------
; ‚뢮¤ áâப¨ key-¡ à  ¤«ï ᯥæ-ª« ¢¨è (Ctrl,Alt,Shift)
; ¨ ¯¥à¥å®¤ ­  ®¡à ¡®â稪¨ ®¯æ¨© key-¡ à .
; (áâப  key-¡ à  ¤«ï ᯥæ-ª« ¢¨è ¢ë¢®¤¨âáï ¡¥§  âਡã⮢)
;-----------------------------------------------------------
; ¢å®¤: a = ¯à¨§­ ª ­ ¦ â¨ï Ctrl,Alt,Shift
;
change_keybar:
ld (keybar2__+1),a
ld de,keybar_ctrl ; áâப 
bit 5,a ; Ctrl+
jr nz,keybar__
ld de,keybar_alt ; áâப 
bit 4,a ; Alt+
jr nz,keybar__
ld de,keybar_shift ; áâப 
keybar__:
ld hl,037Dh ; 0301h + (4*31)
in a,(89h)
ld b,a ; á®åà. ¯®àâ
in a,(SLOT0)
ld c,a ; á®åà.¯®àâ
di
ld a,50h ; ¢¨¤¥®-áâà ­¨æ 
out (SLOT0),a
ld a,81h ; +0 (ᬥé. á«¥¢ )
out (89h),a ; ª®«®­ª 
; ¢ë¢®¤ ⥪áâ 
ld d,d ; ãáâ. à §¬¥à ¡«®ª 
ld a,80 ; ¤«¨­  áâப¨
ld b,b ; ¢ëª«.  ªá¥«ì
ld l,l ; ª®¯¨à®¢ âì ¡«®ª
ld a,(de)
ld b,b ; ¢ëª«.  ªá¥«ì
ld a,a ; ª®¯¨à®¢ ­¨¥ ¡«®ª  (¢¥àâ. «¨­¨¨)
ld (hl),a
ld b,b ; ¢ëª«.  ªá¥«ì
ld a,b
out (89h),a ; ¢®ááâ. ¯®àâ
ld a,c
out (SLOT0),a ; ¢®ááâ. ¯®àâ
ei
ld hl,__pointer ; â®çª  ¢ë室 
push hl
; â¥áâ ­  "§ «¨¯ ­¨¥" ª« ¢¨è
keybar1__:
ld a,3 ; â¥áâ ­ ¦ â¨ï ª« ¢¨è
rst 20h
ld a,b
and 11110000b ; test Ctrl,Alt,Shift
jr nz,keybar1__ ; ¯®ª  ­ ¦ âë
ld a,2 ; ®¯à®á ª« ¢ë
rst 20h
ret z ; ¡ë«¨ ⮫쪮 Crtl,Alt,Shift
keybar2__:
ld b,0 ; á®åà. ¡¨âë ª« ¢¨è Ctrl,Alt,Shift
keybar_options:
res 7,d ; á¡à. 7-© ¡¨â
ld a,d
; b=¡¨â ª« ¢¨è Ctrl, Alt, Shift
; a=᪥­-ª®¤ ª« ¢¨è¨
;////////////////////////////////////////////////////////////////////////
;
; Ž¡à ¡®âª  ®¯æ¨© key-¡ à 
;
;////////////////////////////////////////////////////////////////////////
bit 5,b ; Ctrl+..
jr nz,options_ctrl
bit 4,b ; Alt+..
jr nz,_option_alt
;=====================================================================
;
; Shift-®¯æ¨¨
;
; ¢å®¤: a=᪥­-ª®¤
;=====================================================================
cp 43h ; F9
jp z,write_ini_file ; § ¯¨á âì ini-ä ©«
ret
;=====================================================================
;
; Ctrl-®¯æ¨¨
;
; ¢å®¤: a=᪥­-ª®¤
;=====================================================================
options_ctrl:
cp 2 ; "1" ªà âª¨©  ªâ. ¯ ­¥«¨
jp z,set_format_brief
cp 3 ; "2" á।­¨©  ªâ. ¯ ­¥«¨
jp z,set_format_medium
cp 4 ; "3" ¯®«­ë©  ªâ. ¯ ­¥«¨
jp z,set_format_full
cp 16h ; Ctrl+U ®¡¬¥­ ¯ ­¥«¥©
jp z,swap_panels
cp 25h ; Ctrl+L ¯ ­¥«ì ¨­ä®à¬ æ¨¨
jp z,alt_info_panel
cp 10h ; Ctrl+Q ¯ ­¥«ì ¡ëáâண® ¯à®á¬®âà 
jp z,alt_qview_panel
cp 18h ; Ctrl+O ã¡à âì/¯®ª § âì ¯ ­¥«¨
jp z,hidden_panels
cp 12h ; Ctrl+E ¯à¥¤. áâப  ¨áâ®à¨¨
jp z,prev_history
cp 2Bh ; Ctrl+X á«¥¤. áâப  ¨áâ®à¨¨
jp z,next_history
cp 4Fh ; Ctrl+Del, ®ç¨áâ¨âì ¨áâ®à¨î ª®¬ ­¤
jp z,clear_history
;
ld c,"n" ; name
cp 3Dh ; Ctrl+F3 á®àâ. ¯® ¨¬¥­¨
jp z,sorting_list
ld c,"x" ; ext
cp 3Eh ; Ctrl+F4 á®àâ. ¯® à áè.
jp z,sorting_list
ld c,"d" ; date
cp 3Fh ; Ctrl+F5 á®àâ. ¯® ¤ â¥
jp z,sorting_list
ld c,"s" ; size
cp 40h ; Ctrl+F6 á®àâ. ¯® à §¬¥àã
jp z,sorting_list
ld c,"u" ; unsorted
cp 41h ; Ctrl+F7 ¡¥§ á®àâ¨à®¢ª¨
jp z,sorting_list
;
cp 1Dh ; Ctrl+A ¢ë¢®¤ ®ª­   âਡ. ä ©« /¯ ¯ª¨
;jp z,set_attrib2
cp 28h ; Enter
jp z,put_name_to_comline ; ᪮¯¨à®¢ âì ¨¬ï/¯ãâì ¢ ª®¬-áâபã
cp 4Eh ; Enter æ¨äà. ¯®«ï
jp z,put_name_to_comline
;
cp 1Ah ; Ctrl+[ ¯ãâì «¥¢®© ¯ ­¥«¨ ¢ ª®¬-áâபã
jp z,copy_left_path_panel_to_comline
cp 1Bh ; Ctrl+] ¯ãâì ¯à ¢®© ¯ ­¥«¨ ¢ ª®¬-áâபã
jp z,copy_right_path_panel_to_comline
ret
;=====================================================================
;
; Alt-®¯æ¨¨
;
; ¢å®¤: a=᪥­-ª®¤
;=====================================================================
_option_alt:
cp 3Bh ; F1
jp z,select_left_drive
cp 3Ch ; F2
jp z,select_right_drive
ret
;-------------------------------------------------
; Ctrl+E. ‚áâ ¢¨âì ¯à¥¤. áâப㠨áâ®à¨¨
; ¨ ¢®©â¨ ¢ ª®¬-áâபã
;-------------------------------------------------
prev_history:
call print_keybar ; ¢®ááâ. ­®à¬. key-¡ à
jp up1
;-------------------------------------------------
; Ctrl+X. ‚áâ ¢¨âì á«¥¤. áâப㠨áâ®à¨¨
; ¨ ¢®©â¨ ¢ ª®¬-áâபã
;-------------------------------------------------
next_history:
call print_keybar ; ¢®ááâ. ­®à¬. key-¡ à
jp down1
;-------------------------------------------------
; Ctrl+O. “¡à âì/¯®ª § âì ¯ ­¥«¨
;-------------------------------------------------
hidden_panels:
ld hl,enable_panels
ld a,(hl)
xor 1
ld (hl),a
jr nz,hidden_off
; ‘ªàëâì ¯ ­¥«¨
; ¢ëª«. ¢ë¢®¤ ç á®¢
ld hl,enable_clock ; ä« £
ld a,(hl)
ld (clock__+1),a ; á®åà. ä« £
ld (hl),false
; ¢®ááâ. á¨áâ. íªà ­ ¤® ª®¬-áâப¨
ld c,0B3h
ld a,(page_sys_screen) ; áâà ­¨æ  ¡ãä¥à 
jp screen1__
; <20>®ª § âì ¯ ­¥«¨
hidden_off:
; á®åà. á¨áâ. íªà ­ ¤® ª®¬-áâப¨
ld c,0B2h
ld a,(page_sys_screen) ; áâà ­¨æ  ¡ãä¥à 
call screen1__
; ¢®ááâ. íªà ­ ¬¥­¥¤¦¥à 
call A20FC ; ¢ë¢¥á⨠ áâ. ¯ ­¥«ì
call change_panel ; ᬥ­¨âì ¯ ­¥«ì
call A20FC ; ¢ë¢¥á⨠¯ áá. ¯ ­¥«ì
call change_panel
call show_pointer ; ¢ë¢®¤ 㪠§ â¥«ï
; ¢ª«. ¢ë¢®¤ ç á®¢
ld a,(clock__+1)
ld (enable_clock),a
ret

364
MOD2/LAUNCH.ASM Executable file
View File

@ -0,0 +1,364 @@
; ¬¥âª¨ ­¥ à §¤¥«ïâì!
ccp_name:
db 'X:\SYSTEM.EXE ' ; 襫«
temp_fname:
ds 13 ; ¡ãä¥à ¯®¤ ¨¬ï § ¯ãáª. ä ©« 
; ç¨á«® ¤®á-ª®¬ ­¤
count_dos_commands equ 23 ; ¨­¤¥ªá
; Š®¬ ­¤ë „Ž‘
array_dos_commands:
db "CD"," " ;23 ¨­¤¥ªá (áç¥â稪  "b")
db "CHDIR"," " ;22
; ¨§¬¥­ïîâ ᯨ᮪ ä ©«®¢
db "DEL"," " ;21
db "ERASE"," " ;20
db "MD"," " ;19
db "MKDIR"," " ;18
db "RD"," " ;17
db "RMDIR"," " ;16
db "REN"," " ;15
db "RENAME"," " ;14
; ­¥ ¨§¬¥­ïîâ ᯨ᮪ ä ©«®¢
db "CLS"," "
db "DATE"," "
db "DIR"," "
db "ECHO"," "
db "EXIT"," "
db "HELP"," "
db "PATH"," "
db "PAUSE"," "
db "REM"," "
db "SET"," "
db "TIME"," "
db "VER"," "
db "VERSION"," "
count_extentions equ 4 ; ª®«-¢® à áè¨à¥­¨©
; § à¥§. à áè¨à¥­¨ï ä ©«®¢
array_extensions:
db "EXE"," "
db "BAT"," "
db "TRD"," "
db "SCL"," "
;-------------------------------------------------
; ‘à ¢­¨âì áâப¨ ¡¥§ ãç¥â  ॣ¨áâà .
; Ž¡à §¥æ ¤®«¦¥­ ¡ëâì ¢ ¢¥àå­¥¬ ॣ¨áâà¥
; ¨ § ª ­ç¨¢ âìáï ¯à®¡¥«®¬.
; ¢å®¤: de - string1
; hl - string2 (®¡à §¥æ)
; ¢ë室: Z - à ¢­ë
; NZ - ­¥ à ¢­ë
;-------------------------------------------------
stricmp:ld a,(de)
cp "a"
jr c,$+4
and 11011111b ; á¡à. 5-bit
cp (hl)
jr z,stricmp1
; ­  á«¥¤. ®¡à §¥æ
ld a,(hl) ; ®¡à §¥æ
inc hl
cp " "
jr nz,$-4
dec a
ret
; ᮢ¯ ¤ ¥â
stricmp1:
inc hl
inc de
ld a,(hl) ; ®¡à §¥æ
cp " "+1
jr nc,stricmp ; ®¡à §¥æ ­¥ § ª®­ç¥­
inc hl ; ­  á«¥¤. ®¡à §¥æ
ld a,(de)
cp " "
ret z
or a
ret
; ‚뤥«¨âì ¨ ãáâ ­®¢¨âì ¤¨áª
cut_disk:
ld hl,work_buffer ; ®âªã¤ 
ld de,ComLineBuff+5 ; ªã¤ 
ld bc,0145h
rst 10h
ld c,1 ; ãáâ. ¤¨áª
rst 10h
ret
; ‚뤥«¨âì ¨ ãáâ ­®¢¨âì ¯ãâì
cut_path:
ld hl,work_buffer ; ®âªã¤ 
ld de,ComLineBuff+5+2 ; ªã¤ 
push de
ld bc,0245h
rst 10h
pop hl
ld c,1Dh ; ãáâ. ¯ãâì
rst 10h
ret
; ‚뤥«¨âì ¨¬ï ä ©«  ¨§ áâப¨
cut_filename:
ld hl,work_buffer ; ®âªã¤ 
ld de,temp_fname ; ªã¤ 
ld bc,0345h ; ä®à¬ â "file.ext"
rst 10h
ret
;-------------------------------------------------
; ‚믮«­¨âì ä ©«
; ¢å®¤: work_buffer - ­ ¡à ­­ ï áâப 
;-------------------------------------------------
Launch_File:
xor a ; false
ld (present_doscmnd),a ; á¡à. ä« £ ¯à¨§­ ª  ¤®á-ª®¬ ­¤
call set_path_from_activ_panel ; ãáâ. á¨áâ. ¤¨áª ¨ ¯ãâì ®â  ªâ. ¯ ­¥«¨
ret c
ld hl,ComLineBuff+5
xor a
ld (hl),a ; á¡à. ï祩ªã
inc hl
inc hl
ld (hl),a ; +257 á¡à. ï祩ªã
; ¢ë¤¥«¨âì à áè. ä ©«  ¨§ ª®¬-áâப¨
ld hl,work_buffer ; ®âªã¤ 
ld de,temp_fname ; ªã¤ 
ld bc,0445h
rst 10h
bit 3,a ; 㪠§ ­ ¤¨áª ?
push af
call nz,cut_disk ; ¢ë¤¥«¨âì ¨ ãáâ. ¤¨áª
pop af
bit 2,a ; 㪠§ ­ ¯ãâì ?
push af
call nz,cut_path ; ¢ë¤¥«¨âì ¨ ãáâ. ¯ãâì
pop af
bit 1,a ; 㪠§ ­® à áè¨à¥­¨¥ ?
jr z,no_file_extension ; ­¥â
; â¥áâ ­  à áè¨à¥­¨ï ä ©« 
ld b,count_extentions ; 4 ª®«-¢® à áè¨à¥­¨©
ld hl,array_extensions ; à áè¨à¥­¨ï
ld de,temp_fname ; áâப 1
call stricmp ; áà ¢­¨âì áâப¨
jr z,ext_parsing ; § à¥§. à áè¨à¥­¨ï
djnz $-8
jr ext_execute
;
ext_parsing:
ld a,b
cp count_extentions ; "exe"
jr z,ext_execute
cp count_extentions-1 ; "bat"
jr z,ext_execute
cp count_extentions-2 ; "trd"
;jp z,ext_trd
cp count_extentions-3 ; "scl"
;jp z,ext_scl
; ®¡à ¡. ¤à. à áè¨à¥­¨©
;...
ret
ext_execute:
no_file_extension:
call cut_filename ; ¢ë¤¥«¨âì ¨¬ï ä ©«  ¨§ áâப¨
pop bc ; ¢®ááâ. ¡ « ­á á⥪ 
ld hl,ccp_name ; "system.exe "
ld de,work_buffer+127;255 ; ªã¤ 
ld bc,temp_fname - ccp_name ; ¤«¨­  ¨¬¥­¨
ldir
; ¢áâ ¢¨âì ¡ãª¢ã ¤¨áª 
ld hl,ComLineBuff+5
ld a,(hl) ; ¤¨áª § ¤ ­ ?
or a
jr nz,$+7 ; ¤ 
ld a,(disk) ; ¤¨áª  ªâ. ¯ ­¥«¨
add a,"A"
ld (de),a
inc de
ld a,":"
ld (de),a
inc de
; ¢áâ ¢¨âì ¯ãâì
ld hl,ComLineBuff+5+2
ld a,(hl) ; ¯ãâì § ¤ ­ ?
or a
jr nz,$+5 ; ¤ 
ld hl,(__buff) ; ¯ãâì  ªâ. ¯ ­¥«¨
call copy_string ; (hl) -> (de) ¤® ­ã«ï
dec de
dec de
ld a,(de)
cp '\'
jr z,$+6
inc de
ld a,'\'
ld (de),a
inc de
; ¢áâ ¢¨âì ¨¬ï ä ©« 
ld hl,temp_fname ; ®âªã¤ 
call copy_string ; (hl) -> (de) ¤® ­ã«ï
; ¢áâ ¢¨âì 墮áâ ª®¬ ­¤ë
ld hl,work_buffer
ld bc,2000h ; ¯à®¡¥«/­ã«ì
ld a,(hl)
inc hl
cp c
jr z,$+10 ; ­¥â 墮áâ 
cp b
jr nz,$-6
dec hl
dec de
call copy_string ; (hl) -> (de) ¤® ­ã«ï
run_dos_command:
; ®âà ¡®â âì exe/bat ä ©«ë ¨ ¤®á-ª®¬ ­¤ë
call call_shell ; ¢ë§®¢ 襫«  á¨á⥬ë
ld sp,stack ; á⥪ ”Œ
; "¯®¤­ïâì" ¯®á«¥¤. áâப㠢뢮¤  íªà ­ 
ld c,8Eh ; ã§­ âì ¯®«®¦. ªãàá®à 
rst 08h
cp 30 ; ­®¬¥à ª®¬-áâப¨
jr c,$+10
jr z,$+5
call new_line
call new_line
di
ld a,(page_module0) ; ¤à ©¢¥àë ª« ¢ë, ¬ë誨, ®¡ê¥ªâë
out (SLOT0),a
ei
ld a,(page_module1) ; ®¯¨á â¥«¨ ¯ ­¥«¥©, à ¡. ¡ãä¥àë
out (SLOT1),a
db 3Eh ; ld a,..
present_doscmnd:
db false ; 01/00 ¤ /­¥â ä« £ ¤®á-ª®¬ ­¤
or a
jp z,cold_entry ; 宫®¤­ë© ¢å®¤ ¢ ”Œ
; ¡ë«  ¤®á-ª®¬ ­¤ 
db 3Eh ; ld a,..
this_cd:db false ; ¯à¨§­ ª "cd","chdir" ª®¬ ­¤
or a
call nz,set_path_to_activ_panel ; ãáâ. ­®¢ë© ¯ãâì  ªâ. ¯ ­¥«¨
jp warm_entry ; ⥯«ë© ¢å®¤ ¢ ”Œ
; ­®¢ ï áâப 
new_line:
ld a,0Dh
call $+5
ld a,0Ah
ld c,5Bh ; ¢ë¢®¤ ᨬ¢®«  ­  íªà ­
rst 10h
ret
;---------------------------------------------------
; ‚ë§®¢ 襫«  á¨áâ¥¬ë ¤«ï ®âà ¡®âª¨ ä ©«®¢/ª®¬ ­¤
;---------------------------------------------------
call_shell:
; áªàëâì ¬ëèªã ”Œ
call hide_mouse
; ¢ëª«. ¢ë¢®¤ ç á®¢ ¯ ­¥«¥©
ld hl,enable_clock ; ä« £
ld a,(hl)
or a
jr z,$+7 ; 㦥 ¢ëª«.
ld (clock__+1),a ; á®åà. ä« £ (shell.asm)
ld (hl),false
; ¢®ááâ. ¤®á-áâà ­¨æã
di
ld a,(port_82)
out (SLOT0),a
ei
; ¢®ááâ. á¨á⥬­ë© íªà ­
ld c,0B3h
ld a,(page_sys_screen) ; áâà ­¨æ  ¡ãä¥à 
call screen__
; ¢®ááâ. ¯®«®¦. ªãàá®à  á¨áâ. íªà ­ 
ld de,(sys_cursor_coords+1) ; Y/X
ld c,84h
rst 08h
; ¢®ááâ. §­ ç¥­¨¥ ¯®àâ 
ld a,(port_89)
out (89h),a
; ¢ë¯®«­¨âì ä ©«
ld (stack1+1),sp
ld hl,work_buffer+127;255 ; ¨¬ï ä ©« 
ld bc,0040h
rst 10h
; áªàëâì á¨áâ. ¬ëèªã
ld c,2
rst 30h
stack1: ld sp,0
ret
;-----------------------------------------------------------
; <20> §¡®à ª®¬ ­¤­®© áâப¨
;-----------------------------------------------------------
parsing_command_line:
ld hl,what ; ¯®«¥ ᮡë⨩
ld (hl),evNothing ; ᮡë⨥
xor a
ld hl,work_buffer+127;255 ; ­ ¡à ­­ ï áâப 
cp (hl)
ret z ; ¯ãáâ ï ª®¬-áâப 
; ¯®¨áª ¤®á-ª®¬ ­¤
ld b,count_dos_commands ; ç¨á«® ¤®á-ª®¬ ­¤
ld hl,array_dos_commands ; ¬ áᨢ ¤®á-ª®¬ ­¤
ld de,work_buffer+127;255 ; ­ ¡à ­­ ï áâப 
call stricmp ; áà ¢­¨âì áâப¨
jr z,found_dos_command ; ­ è«¨
djnz $-8
; ­¥ ¤®á-ª®¬ ­¤ 
ld hl,work_buffer+127;255 ; ®âªã¤ 
ld de,work_buffer ; ªã¤ 
call copy_string ; (hl) -> (de) ¤® ­ã«ï
jp Launch_File ; ®âà ¡®â âì ä ©«
; „Ž‘-ª®¬ ­¤  ­ ©¤¥­ 
found_dos_command:
ld a,true
ld (present_doscmnd),a ; ãáâ. ¯à¨§­ ª ¤®á-ª®¬ ­¤
ld a,b
ld (number_command),a ; ­®¬¥à ª®¬ ­¤ë (shell.asm)
cp 23 ; "cd" ?
jr z,$+6
cp 22 ; "chdir" ?
jr nz,dos_cmnd
ld (this_cd),a ; ãáâ. ¯à¨§­ ª "cd","chdir" ª®¬ ­¤
ld (change),a ; ãáâ. ä« £ ᬥ­ë ⥪. ¤¨áª  ¨«¨ ¯ãâ¨
dos_cmnd:
call set_path_from_activ_panel ; ãáâ. á¨áâ. ¤¨áª ¨ ¯ãâì ®â  ªâ. ¯ ­¥«¨
ld hl,ccp_name ; "system.exe "
ld de,work_buffer ; ªã¤ 
ld bc,temp_fname - ccp_name ; ¤«¨­  ¨¬¥­¨
ldir
ld hl,work_buffer+127;255 ; ®âªã¤ 
call copy_string ; (hl) -> (de) ¤® ­ã«ï
ld hl,work_buffer ; £®â®¢ ï áâப 
ld de,work_buffer+127;255 ; ªã¤ 
call copy_string ; (hl) -> (de) ¤® ­ã«ï
pop bc ; ¢®ááâ. ¡ « ­á á⥪ 
jp run_dos_command ; ®âà ¡®â âì ¤®á-ª®¬ ­¤ã

104
MOD2/MKDIR.ASM Executable file
View File

@ -0,0 +1,104 @@
;===========================================================
;
; <20>à®æ¥áá á®§¤ ­¨ï ¯ ¯ª¨
;
;===========================================================
make_folder:
call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
ret z
call get_fire ; § é¨â  ®â "§ «¨¯ ­¨ï" ¡ãâ®­®¢
ld a,(format_mode) ; ⥪. ä®à¬ â ¯ ­¥«¨
and form_info+form_qview ; info, qview
ret nz
; ¢ë¢®¤ ­ ç «ì­®£® ®ª­ 
ld hl,dial_folder ; ®¯¨á â¥«ì ®ª­ 
call DialogW
cp evCommand ; ᮡë⨥ "ª®¬ ­¤ "
ret nz
ld a,(hl) ;+1 what
cp cmOkey ; "Ok"
ret nz
; ‘®§¤ ­¨¥ ¯ ¯ª¨
ld a,(input_line_makedir+4); ¤«¨­  ¢¢¥¤. áâப¨
or a
ret z ; ¯ãáâ ï áâப 
;
call set_path_from_activ_panel ; ãáâ. ¤¨áª ¨ ¯ãâì  ªâ. ¯ ­¥«¨
ret c
;
; ¢ë¤¥«¨âì ¨¬ï ¯ ¯ª¨
ld hl,input_line_makedir+5 ; ®âªã¤ 
ld de,temp_fname ; ªã¤  (13 ¡ ©â)
ld bc,0345h
rst 10h
push af
push af
or a
bit 3,a ; 㪠§ ­ ¤¨áª ?
call nz,cut_disk ; ¢ë¤¥«¨âì ¨ ãáâ. ¤¨áª
jr c,make_fold_err1
pop af
or a
bit 2,a ; 㪠§ ­ ¯ãâì ?
call nz,cut_path ; ¢ë¤¥«¨âì ¨ ãáâ. ¯ãâì
jr c,make_fold_err2
pop af
and 00001100b ; ¤¨áª ¨ ¯ãâì § ¤ ¢ «¨áì ?
jr z,try_make_fold ; ­¥â
ld (fresh_two_panels_flag+1),a ; ãáâ. ä« £ ®¡­®¢«. ¤¢ãå ¯ ­¥«¥©
jr try_make_folder
;
try_make_fold:
; call set_path_from_activ_panel ; ­¥â, ãáâ. ¤¨áª ¨ ¯ãâì  ªâ. ¯ ­¥«¨
; ret c
; á®§¤ âì ¯ ¯ªã
try_make_folder:
ld hl,temp_fname ; ¨¬ï ¯ ¯ª¨
ld c,1Bh ; á®§¤ âì ¯ ¯ªã
rst 10h
jr c,make_fold_err
; ®¡­®¢¨âì ᯨ᮪ ¯ ­¥«¥©
fresh_two_panels: ;<- ®¡à é¥­¨¥ ¨§ delete.asm
;  ªâ. ¯ ­¥«ì
call read_new_list ; § ¯®«­¨âì ¡ ­ªã ­®¢ë¬ ᯨ᪮¬ + à §¬¥à ä ©«®¢
jr c,make_fold_err
call sorting ; à §¤¥«ì­ë© ᯨ᮪ 㪠§ â¥«¥© + á®àâ. ᯨ᪠
call A20FC ; ®¡­®¢¨âì ¯ ­¥«ì
fresh_two_panels_flag:
ld a,0 ; ¯à¨§­ ª ®¡­®¢«¥­¨ï ¤¢ãå ¯ ­¥«¥©
or a
jr nz,$+8
; áà ¢­¨âì ¯ã⨠¯ ­¥«¥© (¯à¨ ᮢ¯ ¤. ®¡­®¢¨âì ¢â®àãî)
call compare_path_two_panels
jp nz,show_pointer ; ­¥ à ¢­ë, ¯®ª § âì 㪠§ â¥«ì
xor a
ld (fresh_two_panels_flag+1),a ; á¡à. ä« £
; ¯ áá. ¯ ­¥«ì
call change_panel
call read_new_list ; § ¯®«­¨âì ¡ ­ªã ­®¢ë¬ ᯨ᪮¬ + à §¬¥à ä ©«®¢
jr c,make_fold_err
call sorting ; à §¤¥«ì­ë© ᯨ᮪ 㪠§ â¥«¥© + á®àâ. ᯨ᪠
call A20FC
call change_panel ; ᬥ­¨âì ¯ ­¥«ì
jp show_pointer ; ¯®ª § âì 㪠§ â¥«ì
make_fold_err1:
pop af
make_fold_err2:
pop af
; Žè¨¡ª 
make_fold_err:
; 業â஢ª  ¨¬¥­¨ ¯ ¯ª¨
ld hl,input_line_makedir+5 ; áâàãªâãà  áâப¨ ~input line~
ld de,create_name ; ªã¤ 
call copy_dest_name ; ᪮¯¨à. ¯ãâì+¨¬ï ä ©« /¯ ¯ª¨
; ¢ë¢®¤ ®ª­  ®è¨¡ª¨ á®§¤ ­¨ï ¯ ¯ª¨
ld hl,dial_error_make_folder
call DialogEr
cp evCommand ; ᮡë⨥ "ª®¬ ­¤ "
ret nz
ld a,(hl) ;+1 what
cp cmOkey ; "Retry"
jr z,try_make_folder
ret

362
MOD2/MOUSE.ASM Executable file
View File

@ -0,0 +1,362 @@
;-------------------------------------------------
; ˆ­¨æ¨ «¨§ æ¨ï ¬ë誨 ¨ ¢ë¢®¤ ¥¥ ­  íªà ­
;-------------------------------------------------
init_mouse:
xor a
rst 30h
jr show_mouse
;-------------------------------------------------
; ‚뢥á⨠ªãàá®à ¬ë誨
;-------------------------------------------------
show_mouse:
ld a,1
rst 30h
ret
;-------------------------------------------------
; ‘ªàëâì ªãàá®à ¬ë誨
;-------------------------------------------------
hide_mouse:
ld a,2
rst 30h
ret
;-------------------------------------------------
; <20>®«ãç¨âì ­®¢ãî ¨­ä®à¬ æ¨î ® ¬ë誥
;-------------------------------------------------
get_mouse_info:
ld a,3 ; ¯®«ãç¨âì ª®®à¤. ¬ë誨
rst 30h
ret
;-------------------------------------------------
; †¤¥¬, ¯®ª  ­ ¦ âë ¡ãâ®­ë ¬ë誨
;-------------------------------------------------
get_fire:
call get_mouse_info
and 3
jr nz,$-5 ; ¡ãâ®­ë ­ ¦ âë
ret
;---------------------------------------------------------------------
; Ž¡à ¡®âª  ­ ¦ â¨ï ¡ãâ®­®¢ ¬ë誨 ­  ¯ ­¥«ïå ¬¥­¥¤¦¥à 
;
; ¢å®¤: hl=Y/X ⥪áâ. ª®®à¤¨­ âë ¬ë誨.
; d=¡¨âë ­ ¦ â¨ï ¡ãâ®­®¢
;---------------------------------------------------------------------
buttons_press:
ld a,d
ld (buttons_bits),a ; á®åà. ¡¨âë ­ ¦ â¨ï ¡ãâ®­®¢
ld a,h
cp 27 ; ­¨¦­ïï £à ­¨æ  ᯨ᪠
jp nc,event_keybar ; â¥áâ ­  comline ¨ key-¡ à
or a ; 0-ï áâப 
jp z,main_menu ; £®à¨§. Œ¥­î
call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
ret z
call mouse_set_active_panel ; ãáâ. ¬ë誮©  ªâ. ¯ ­¥«ì
ld a,(format_mode) ; ä®à¬ â  ªâ. ¯ ­¥«¨
and form_info+form_qview
ret nz ; info, qviev
ld a,h ; Y ª®®à¤¨­ â  ¬ë誨
cp 2 ; ¢¥àå­ïï £à ­¨æ  ᯨ᪠
jp c,event_title ; â¥áâ ­  § £®«®¢®ª ¯ ­¥«¨
sub 2
ld b,l ; á®åà. X ª®®à¤¨­ âã
ld l,a ; Y ª®®à¤¨­ â  ¬ë誨
ld h,0
;
ld de,(all_files) ; ç¨á«® ä ©«®¢ ¨ ¯ ¯®ª
ld a,e
or d
jp z,get_fire ; § é¨â  ®â "§ «¨¯ ­¨ï" ¡ãâ®­®¢
ld a,(cur_panel) ; ⥪.  ªâ. ¯ ­¥«ì
ld c,a ; 0=«¥¢ ï, 80h=¯à ¢ ï
ld a,(format_mode) ; ä®à¬ â  ªâ. ¯ ­¥«¨
bit 0,a ; full, full-ᯥª
jr nz,event_set__ ; ­¨ç¥£® ­¥ ¬¥­ïâì
push de
call event_calc_pointer ; ¢ëç¨á«¨âì ¯®«®¦. 㪠§ â¥«ï
pop de
event_set__:
; hl=¯®«®¦. 㪠§ â¥«ï ¯® ª®®à¤. ¬ë誨
; de=all_files
call cmphlde ; áà ¢­¨âì hl á de
jr nc,event_set_end ; 㪠§ â¥«ì ¢ ª®­¥æ ᯨ᪠
; ¬ë誠 ¢ ¯à¥¤¥« å ᯨ᪠ (­¥ ¢ ¯ãá⮬ ¬¥á⥠ª®«®­ª¨)
call A0E12_ ; ®¡­®¢¨âì ¯®«®¦. 㪠§ â¥«ï
ld a,(buttons_bits) ; ¡¨âë ­ ¦ â¨ï ¡ãâ®­®¢
bit 1,a ; «¥¢ë© ?
jr nz,button_left ; ¤ 
; ¯®áâ ¢¨âì/á­ïâì ¢ë¤¥«¥­¨¥ ä ©« 
call A0E13
jp get_fire ; § é¨â  ®â "§ «¨¯ ­¨ï" ¡ãâ®­®¢
;
; 㪠§ â¥«ì ¢ ª®­¥æ ᯨ᪠
event_set_end:
dec de
ex de,hl ; hl = all_files-1
call A0E12_ ; ®¡­®¢¨âì ¯®«®¦. 㪠§ â¥«ï
jp get_fire ; § é¨â  ®â "§ «¨¯ ­¨ï" ¡ãâ®­®¢
;
button_left:
call get_fire
ei
ld b,9 ; ®¦¨¤ ­¨¥
push bc
call get_mouse_info ; ç⥭¨¥ á®áâ®ï­¨ï ¬ë誨
pop bc
jr nz,double_press ; ª­®¯ª¨ ­ ¦ âë
halt
djnz $-8
ret
; ¤¢®©­®© ª«¨ª
double_press:
xor a
ld (MSbutt),a ; á¡à. áâ âãá ¡ãâ®­®¢
jp Press_Enter ; enter.asm
;-----------------------------------------------------------
; ‚ëç¨á«¥­¨¥ ¯®«®¦¥­¨ï 㪠§ â¥«ï ¯® ª®®à¤¨­ â ¬ ¬ë誨
; ¤«ï "ªà âª®£®" ¨ "á।­¥£®" ä®à¬ â®¢ ¯ ­¥«¥©.
;
; ¢å®¤: a=ä®à¬ â ¯ ­¥«¨
; hl=Y ª®®à¤¨­ â  ¬ë誨
; b=X ª®®à¤¨­ â  ¬ë誨
; c=⥪.  ªâ. ¯ ­¥«ì (0=«¥¢ ï, 80h=¯à ¢ ï)
; ¢ë室: hl=¯®«®¦. 㪠§ â¥«ï
;-----------------------------------------------------------
event_calc_pointer:
ld de,files_per_colon ; 25 ä ©«®¢ ­  ª®«®­ªã
and form_brief
ld a,b ; X ª®®à¤¨­ â 
jr z,event_medium__
; "ªà âª¨©" ä®à¬ â
dec c ;  ªâ. «¥¢ ï ¯ ­¥«ì ?
inc c
; «¥¢ ï ¯ ­¥«ì
ld c,14 ; ­ ç «® á।­¥© ª®«®­ª¨
ld b,27 ; ­ ç «® ¯à ¢®© ª®«®­ª¨
jr z,event_calc__ ; ¤ , «¥¢ ï
; ¯à ¢ ï ¯ ­¥«ì
ld c,54 ; ­ ç «® á।­¥© ª®«®­ª¨
ld b,67 ; ­ ç «® ¯à ¢®© ª®«®­ª¨
event_calc__:
cp c ; ­ ç «® á।­¥© ª®«®­ª¨
ret c
add hl,de ; ª®®à¤.¬ë誨 + ä ©«®¢ ­  ª®«®­ªã
event_calc1__:
cp b ; ­ ç «® ¯à ¢®© ª®«®­ª¨
ret c
add hl,de
ret
;
; "á।­¨©" ä®à¬ â
event_medium__:
dec c ;  ªâ. «¥¢ ï ¯ ­¥«ì ?
inc c
; «¥¢ ï ¯ ­¥«ì
ld b,20 ; ­ ç «® á।­¥© ª®«®­ª¨
jr z,event_calc1__ ; ¤ , «¥¢ ï
; ¯à ¢ ï ¯ ­¥«ì
ld b,60 ; ­ ç «® á।­¥© ª®«®­ª¨
jr event_calc1__
;-----------------------------------------------------------
; “áâ ­®¢ª  ¬ë誮©  ªâ¨¢­®© ¯ ­¥«¨
;
; ¢å®¤: hl=Y/X ª®®à¤¨­ âë
; ¢ë室: h=Y ª®à४â. ª®®à¤¨­ â 
;-----------------------------------------------------------
mouse_set_active_panel:
ld a,(cur_panel) ; 0=«¥¢ ï, 80h=¯à ¢ ï
or a
ld a,l
jr nz,mouse_set__ ;  ªâ. ¯à ¢ ï
cp 40 ; ­ ç «® ¯à ¢®© ¯ ­¥«¨
call nc,mouse_set_panel ; ãáâ.  ªâ. ¯ ­¥«ì
ret
mouse_set__:
cp 40 ; ­ ç «® ¯à ¢®© ¯ ­¥«¨
call c,mouse_set_panel ; ãáâ.  ªâ. ¯ ­¥«ì
ret
;
mouse_set_panel:
push hl ; á®åà. ª®®à¤¨­ âë ¬ë誨
ld hl,D48B1 ; ä« £ ¨­¢¥àᨨ
ld (hl),false ; á¡à. ¨­¢¥àá¨î path-áâப¨
push hl
call clear_pointer ; ã¡à âì 㪠§ â¥«ì
call prn_up_path ; ¢ë¢®¤ ¯ã⨠⥪. ¯ ­¥«¨ ¡¥§ ¨­¢¥àᨨ
call change_panel ; ᬥ­¨âì  ªâ. ¯ ­¥«ì
pop hl
ld (hl),true ; ¨­¢¥àá¨ï path-áâப¨
call prn_up_path ; ¢ë¢®¤ ¯ã⨠⥪. ¯ ­¥«¨ á ¨­¢¥àᨥ©
call print_compath ; ¢ë¢®¤ ¯ã⨠¢ ª®¬-áâப¥
pop hl
ret
;-----------------------------------------------------------
; Ž¡à ¡®âª  ¬ë誨 ­  â¨â«¥ ¯ ­¥«¨
;
; ¢å®¤: hl=Y/X ⥪áâ. ª®®à¤¨­ âë ¬ë誨
;-----------------------------------------------------------
event_title:
ld a,(buttons_bits) ; ¡¨âë ­ ¦ â¨ï ¡ãâ®­®¢
bit 0,a ; ¯à ¢ë© ¡ãâ®­ ?
jr nz,event_title_right ; ¤ 
ld a,l ; X ª®®à¤¨­ â 
cp 1 ; ¡ãª¢  á®àâ¨à®¢ª¨
jp z,select_left_drive ; ¬¥­î ¢ë¡®à  ¤¨áª®¢
cp 41 ; ¡ãª¢  á®àâ¨à®¢ª¨
jp z,select_right_drive ; ¬¥­î ¢ë¡®à  ¤¨áª®¢
cp 2 ;  «¥¢®© ¯ ­¥«¨
jr z,event_title_sort
cp 42 ;  ¯à ¢®© ¯ ­¥«¨
jr z,event_title_sort
; “ª § â¥«ì ­  áâப㠢¢¥àå
call up ; 㪠§ â¥«ì ­  áâப㠢¢¥àå
jr event_title_wait ; § ¤¥à¦ª  ¯¥à¥¬¥é. 㪠§ â¥«ï
;
; ‹¨áâ ­¨¥ áâà ­¨æ¥©
event_title_right:
call page_up ; PageUp
call get_fire
jr event_title_wait
;-----------------------------------------------------------
; <20>  áâப㠢­¨§, ¥á«¨ ¬ë誠 ­  27-© áâப¥
;-----------------------------------------------------------
event_footerline:
call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
ret z
push bc
call mouse_set_active_panel ; ãáâ. ¬ë誮©  ªâ. ¯ ­¥«ì
pop bc
bit 0,c ; ¯à ¢ë© ¡ãâ®­ ?
jr nz,event_foot_right ; ¤ 
; “ª § â¥«ì ­  áâப㠢­¨§
call down
event_title_wait:
call show_pointer ; ¢ë¢¥á⨠㪠§ â¥«ì (ª®£¤  ­¥ ¢ë¢®¤ïâ up/down)
ei
halt
halt
halt
ret
;
; ‹¨áâ ­¨¥ áâà ­¨æ¥©
event_foot_right:
call page_down ; PageDown
call get_fire
jr event_title_wait
;-----------------------------------------------------------
; Ž¡à ¡®âª  ᨬ¢®«  "áâ५ª " á®àâ¨à®¢ª¨ ¯ ­¥«¥©
;-----------------------------------------------------------
event_title_sort:
ld hl,sort_type
ld c,(hl) ; n/x/.. ¡ãª¢  á®àâ¨à®¢ª¨
ld a,"u"
cp c ; unsort ?
call nz,sorting_list ; ®¡­®¢¨âì ¯ ­¥«ì á ­®¢®© á®àâ¨à®¢ª®©
call show_pointer ; ¢ë¢¥á⨠㪠§ â¥«ì
jp get_fire ; § é¨â  ®â "§ «¨¯ ­¨ï" ¡ãâ®­®¢
;---------------------------------------------------------------------
; Ž¡à ¡®âª  ¬ë誨 ­  key-¡ à¥
;
; ¢å®¤: hl=Y/X ⥪áâ. ª®®à¤¨­ âë ¬ë誨
;---------------------------------------------------------------------
event_keybar:
db 3Eh ; ld a,..
buttons_bits:
db 0 ; ¡¨âë ­ ¦ â¨ï ¡ãâ®­®¢
ld c,a
ld a,h
cp 27 ; Y ª®®à¤¨­ â 
jr z,event_footerline
bit 0,c ; ¯à ¢ë© ¡ãâ®­ ?
ret nz ; ¤ 
ld a,h
cp 31 ; Y ª®®à¤¨­ â 
jp nz,event_comline ; â¥áâ ­  ª®¬. áâபã
ld a,l ; X ª®®à¤¨­ â 
push af
call get_fire ; § é¨â  ®â "§ «¨¯ ­¨ï"
pop af
cp 8
ret c; ; F1 ¯ã­ªâ
cp 16
jp c,user_menu ; F2 ¯ã­ªâ
cp 24
jp c,file_viewer ; F3 ¯ã­ªâ
cp 32
ret c; ; F4 ¯ã­ªâ
cp 40
jp c,copy ; F5 ¯ã­ªâ
cp 48
jp c,rename ; F6 ¯ã­ªâ
cp 56
jp c,make_folder ; F7 ¯ã­ªâ
cp 64
jp c,delete ; F8 ¯ã­ªâ
cp 72
jp nc,quit ; F10 ¯ã­ªâ
; F9 ¯ã­ªâ
jp main_menu
;---------------------------------------------------------------------
; Ž¡à ¡®âª  ¬ë誨 ­  ª®¬ ­¤­®© áâப¥
;---------------------------------------------------------------------
event_comline:
cp 30 ; Y ¯®«®¦. ª®¬-áâப¨
ret nz
ld a,(EvComMouse1+1) ; X ­ ç «® ¯®«ï ¢¢®¤  ª®¬-áâப¨
ld h,a
push hl ; l=X ª®®à¤¨­ â 
call get_fire ; § é¨â  ®â "§ «¨¯ ­¨ï"
pop hl
ld a,l
sub h
ret c ; ¬ë誠 «¥¢¥¥ áâப¨ ¢¢®¤ 
ld de,(YXpos+1) ; ­ ç «® ¯®«ï ¢¢®¤  ª®¬-áâப¨
ld (CursorPos),de
ld iy,ComLineBuff ; áâàãªâãà  ¡ãä¥à  ª®¬-áâப¨
jp enter_to_comline

100
MOD2/POS.ASM Executable file
View File

@ -0,0 +1,100 @@
old1: dw 0 ; ¯®«®¦. 㪠§ â¥«ï
old2: dw 0 ; ᬥé. ᯨ᪠
old3: dw 0 ; ç¨á«® § ¯¨á¥©
; ä« £ ᬥ­ë ⥪. ¤¨áª  ¨«¨ ¯ãâ¨
change: db false ; 01/00 ¬¥­ï«áï/­¥â
; ‘®åà ­¨âì ¯®«®¦. 㪠§ â¥«ï ¨ ᯨ᪠
save_pos_list:
ld hl,(cur_pointer) ; áâ à®¥ ¯®«®¦. 㪠§ â¥«ï
ld (old1),hl
ld hl,(offset_list) ; áâ à®¥ ᬥé. ᯨ᪠
ld (old2),hl
ld hl,(all_files) ; áâ à®¥ ç¨á«® § ¯¨á¥©
ld (old3),hl
ret
; “áâ ­®¢¨âì ¯®«®¦. 㪠§ â¥«ï ¨ ᯨ᪠
; ¯®á«¥ ­®¢®£® ç⥭¨ï ᯨ᪠.
set_newpos_list:
ld a,(change) ; ä« £ ᬥ­ë ⥪. ¤¨áª  ¨«¨ ¯ãâ¨
or a
jr nz,set_zero_pos ; ¬¥­ï«áï, á¡à. ¯®«®¦. 㪠§ â¥«ï
ld de,(all_files) ; ­®¢®¥ ç¨á«® § ¯¨á¥©
ld hl,(old3) ; ¯à¥¦­¥¥ ç¨á«® § ¯¨á¥©
and a
sbc hl,de ; ç¨á«® § ¯¨á¥© ¨§¬¥­¨«®áì ?
jr nz,set_new_pos ; ¤ 
set_old_pos:
ld hl,(old1) ; ¯à¥¦­¥¥ ¯®«®¦. 㪠§ â¥«ï
ld (cur_pointer),hl
ld hl,(old2) ; ¯à¥¦­¥¥ ᬥé. ᯨ᪠
ld (offset_list),hl
ret
set_new_pos:
ld hl,(old1) ; ¯à¥¦­¥¥ ¯®«®¦. 㪠§ â¥«ï
ld bc,(old2) ; ¯à¥¦­¥¥ ᬥé. ᯨ᪠
add hl,bc
and a
sbc hl,de
jr c,set_old_pos
; ¯à¥¦­¥¥ ¯®«®¦. 㪠§ â¥«ï > ­®¢®£® ç¨á«  § ¯¨á¥©
jr set_to_end_list ; ¢ ª®­¥æ ᯨ᪠
; á¡à®á¨âì ¯®«®¦. 㪠§ â¥«ï ¨ ᯨ᪠
; ¤¨áª ¨«¨ ¯ãâì ¬¥­ï«áï.
set_zero_pos:
xor a
ld l,a
ld h,a
ld (change),a ; á¡à. ä« £ ᬥ­ë ⥪. ¤¨áª  ¨«¨ ¯ãâ¨
ld (offset_list),hl ; ᬥé. ᯨ᪠
set_zr: ld (cur_pointer),hl ; ⥪. ¯®«®¦. 㪠§ â¥«ï
ret
; ãáâ. 㪠§ â¥«ì ­  ª®­¥æ ᯨ᪠
set_to_end_list:
ld bc,(all_files) ; ç¨á«® § ¯¨á¥©
ld hl,(cur_pointer)
ld de,(offset_list) ; ᬥé. ᯨ᪠
add hl,de
inc hl
ld a,l
sub c
ld a,h
sbc a,b
ret z ; 㪠§ â¥«ì ¢ ª®­æ¥ ᯨ᪠
ld de,(_0D01+1) ; à §¬¥à áâà ­¨æë - 1
ld l,c ; hl=all_files
ld h,b
call cmphlde
jr nc,set_end_lst2
; ç¨á«® ä ©«®¢ ¬¥­ìè¥ á¯¨áª  ¯ ­¥«¨
set_end_lst1:
dec hl
jr set_zr ; ãáâ. ⥪. ¯®«®¦. 㪠§ â¥«ï
;
set_end_lst2:
ld bc,-1 ; áç¥â稪
dec hl ; --all_files
inc bc
call cmphlde ; hl ¨ "à §¬¥à áâà ­¨æë - 1"
jr nc,$-5
ld hl,(offset_list) ; ᬥé. ᯨ᪠
and a
sbc hl,bc
jr c,set_end_lst3
; 㪠§ â¥«ì ¢ ¯à¥¤¥« å ¯®á«¥¤. áâà ­¨æë ᯨ᪠
ex de,hl
jr set_end_lst1
;
set_end_lst3:
dec bc
ld (offset_list),bc
inc de
ld (cur_pointer),de
ret

487
MOD2/QVIEW.ASM Executable file
View File

@ -0,0 +1,487 @@
;/////////////////////////////////////////////////////////////////////
; ‚뢮¤ ¤ ­­ëå  ªâ. ¯ ­¥«¨ -> ¢ ¯ áá. ¯ ­¥«ì (¢ë§ë¢ ¥âáï ¨§ ä ©«¥à )
; <âਣ£¥à­ ï ä¨âç >
;/////////////////////////////////////////////////////////////////////
alt_qview_panel:
call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
ret z ; ¢ëª«.
; â¥áâ ­ «¨ç¨ï qview-ä®à¬ â  ­   ªâ. ¯ ­¥«¨
ld a,(format_mode) ; ä®à¬ â  ªâ. ¯ ­¥«¨
and form_qview
jr nz,set_norm_actpanel ; ¢ë¢¥á⨠­®à¬.  ªâ¨¢­ãî ¯ ­¥«ì
ld hl,qview1_ ; âਣ£¥à ¯ áá. ¯ ­¥«¨
ld a,(hl)
or a
jr nz,set_norm_noactpanel ; ¢ë¢¥á⨠­®à¬. ¯ áᨢ­ãî ¯ ­¥«ì
jr set_qview_noactpanel ; qview-¯ ­¥«ì ¢ ¯ áá. ¯ ­¥«¨ ( ªâ. ¤ ­­ë¥)
;--------------------------------------------------
; ‚뢥á⨠­®à¬ «ì­®©  ªâ. ¯ ­¥«ì
;--------------------------------------------------
set_norm_actpanel:
ld hl,qview_ ; âਣ£¥à  ªâ. ¯ ­¥«¨
ld (hl),0 ; á¡à. âਣ£¥à
inc hl
ld a,(hl) ; ï祩ª  form_under_qview
ld (format_mode),a ; ä®à¬ â  ªâ. ¯ ­¥«¨
jp A20FC ; ¢ë¢¥á⨠¯ ­¥«ì
;--------------------------------------------------
; ‚뢥á⨠­®à¬ «ì­®© ¯ áá. ¯ ­¥«ì
;--------------------------------------------------
set_norm_noactpanel:
call change_panel
call set_norm_actpanel
jp change_panel
;----------------------------------------------------
; ‚뢥á⨠qview-¯ ­¥«ì ¢  ªâ. ¯ ­¥«¨ (¯ áá. ¤ ­­ë¥)
; (¢ë§ë¢ ¥âáï ¨§ Œ¥­î)
;----------------------------------------------------
set_qview_actpanel:
; § ¯®«­¨âì ¤ ­­ë¬¨ â¨â«-®¯¨á â¥«ì + ãáâ. ¥£® ⨯
call change_panel
call get_qview_data ; ¯ áá. ¤ ­­ë¥
; push af
call change_panel
jr set_qview_actpanel1
; pop af
; ret nc ; ¯ ¯ª 
; ¢ë¢®¤ ᮤ¥à¦. ä ©« 
; call draw_half_frame ; ®ç¨áâ¨âì ¯ ­¥«ì
;set_qview_file:
; ld hl,up_info ; ®¯¨á â¥«ì "ÉÍÍÍÍÍÍÍÍÍÍ»"
; call draw_text
; ld hl,title_qview ; ®¯¨á â¥«ì ®¤­®£® â¨â« 
; call draw_text
; db 3Eh;-
;set_qview_fl:
; db false ; ä« £
; or a
; ld a,0
; ld (set_qview_fl),a ; á¡à. ä« £
; jr nz,$+11;-
; call change_panel
; call alt_file_viewer ; ¢ë¢¥á⨠ᮤ¥à¦. ä ©« 
; call change_panel
; scf
; ret
; ­ áâà. ä®à¬ â
set_qview_actpanel1:
call dinqview_res_flag ; "dinamqview" 㦥 ®âà ¡®â «
ld de,format_mode ; ä®à¬ â  ªâ. ¯ ­¥«¨
ld a,(de)
bit 4,a ; qview
ret nz ; ­¥ ®âà ¡. ¯®¢â®à­®
bit 3,a ; info
jr z,$+5
ld a,(form_under_info) ; ä®à¬ â ¯®¤ info-¯ ­¥«ìî
ld hl,qview_ ; âਣ£¥à  ªâ. ¯ ­¥«¨
ld (hl),1 ; ãáâ. âਣ£¥à
inc hl
ld (hl),a ; form_under_qview
and form_trd ; ãç¥áâì 6-© ¡¨â ᯥª-ä®à¬ â 
or form_qview
ld (de),a ; ãáâ. qview-ä®à¬ â
xor a
ld (info_),a ; á¡à. info-âਣ£¥à
ret
;----------------------------------------------------
; ‚뢥á⨠qview-¯ ­¥«ì ¢ ¯ áá. ¯ ­¥«¨ ( ªâ. ¤ ­­ë¥)
;----------------------------------------------------
set_qview_noactpanel:
; § ¯®«­¨âì ¤ ­­ë¬¨ â¨â«-®¯¨á â¥«ì + ãáâ. ¥£® ⨯
call get_qview_data
; push af
xor a
ld (D48B1),a ; á¡à. ¨­¢¥àá¨î â¨â« 
call change_panel
call set_qview_actpanel1 ; ­ áâà. ä®à¬ â
call draw_half_frame ; ®ç¨áâ¨âì ¯ ­¥«ì
; pop af
; jr c,set_qview_noactp2 ; ä ©«
call prn_up_path ; ¢ë¢¥á⨠§ ¯®«­. ®¯¨á â¥«ì ¯ ¯ª¨
;set_qview_noactp1:
call change_panel
ld a,true
ld (D48B1),a ; ãáâ. ¨­¢¥àá¨î â¨â« 
ret
; ­ áâநâì æ¢¥â qview-â¨â« 
;set_qview_noactp2:
; ld a,(D48B1) ; ä« £ ¨­¢¥àᨨ path-áâப¨  ªâ. ¯ ­¥«¨
; or a
; ld a,(color_array+4) ; 30h 梥â "Selected title"
; jr nz,$+5
; ld a,(color_array+2) ; 1Bh 梥â "Normal text"
; ld (qview_color1__),a ; 梥â
; call set_qview_file
; jr set_qview_noactp1
type_title_qview:
db 0 ; ä« £ 00/01 - ¯ ¯ª /ä ©«
;-----------------------------------------------------------
; ‡ ¯®«­¨âì â¨â«-®¯¨á â¥«ì ¤ ­­ë¬¨ ¤¨áª   ªâ. ¯ ­¥«¨
; ¨ ãáâ ­®¢¨âì ⨯ ¢ë¢®¤¨¬®£® â¨â« -®¯¨á â¥«ï.
;-----------------------------------------------------------
get_qview_data:
; ¢áâ ¢¨âì ¨¬ï ⥪. ¯ ¯ª¨ ¨«¨ ¯ãâì + ᪠­¨à®¢ ­¨¥
call print_qview_name
ret c ; 㪠§ â¥«ì ­  ä ©«¥
; ç¨á«® ¯ ¯®ª
exx
ld hl,0 ; áâ.à §àï¤
exx
ld hl,(count_dirs) ; ç¨á«® ¯ ¯®ª
ld iy,tmp2__
res 7,(iy+0)
ld ix,qview_total_folders ; "00,000"
call decimal16
; ç¨á«® ä ©«®¢
exx
ld hl,0 ; áâ.à §àï¤
exx
ld hl,(count_files) ; ç¨á«® ä ©«®¢ ¢ ¯ ¯ª¥
ld iy,tmp2__
res 7,(iy+0)
ld ix,qview_total_files ; "00,000"
call decimal16
; ®¡é. à §¬¥à ä ©«®¢
exx
ld hl,(size_files+2) ; áâ.à §àï¤
exx
ld hl,(size_files) ; ¬«.à §àï¤
ld ix,qview_total_bytes ; "0,000,000,000"
jp decimal32
qview_max_name equ 29 ; ¬ ªá. ¤«¨­  áâப¨ ¯ã⨠¤«ï ".."
;------------------------------------------------------------------------
; ‚뢮¤ ¨¬¥­¨ ¯ ¯ª¨ (¨«¨ ¯ã⨠".." ¯ ¯ª¨) ¨ ¢ëç¨á«¥­¨¥ ¥¥ ¯ à ¬¥â஢.
; …᫨ 㪠§ â¥«ì ­  ".." ¯ ¯ª¥, â® ¢ëç¨á«ïîâáï ¥¥ ¯ à ¬¥âàë.
; …᫨ 㪠§ â¥«ì ­  ¨¬¥­¨ ä ©« , â® ¢ë©â¨.
;
; ¢ë室: CF - 㪠§ â¥«ì ­  ä ©«¥
;------------------------------------------------------------------------
print_qview_name:
; ®ç¨áâ¨âì ¯à¥¦­¥¥ ¨¬ï ¯ ¯ª¨
ld hl,qview_name_folder ; ¡ãä¥à ¨¬¥­¨
ld b,qview_max_name ; 29 áç¥â稪
ld a," "
ld (hl),a
inc hl
djnz $-2
;
call get_record
ld a,(de) ;+11  âਡãâ ä ©« 
and 10h ; ¯ ¯ª  ?
ld a,true ; ä ©«
ld (type_title_qview),a ; ä« £ ⨯  qview-®¯¨á â¥«ï
scf
ret z
xor a ; ¯ ¯ª 
ld (type_title_qview),a ; ä« £ ⨯  qview-®¯¨á â¥«ï
call qview_scan_folder ; ¢ëç¨á«¨âì à §¬¥à ¯ ¯ª¨
ld a,(hl) ; ­ ç «® ¨¬¥­¨ ¯ ¯ª¨
cp "."
jr z,qview_parent_name ; ".." ¯ ¯ª 
ld ix,qview_name_folder ; ¡ãä¥à ¨¬¥­¨
jp dir_name ; ¢áâ ¢¨âì ¨¬ï ¯ ¯ª¨
;-----------------------------------------------------------
; ‚áâ ¢¨âì ¯ãâì ¤«ï ".." ¯ ¯ª¨. „«¨­­ë© ¯ãâì ®¡à¥§ ¥âáï
; ;¢å®¤: de=ªã¤  ª®¯¨à®¢ âì
;-----------------------------------------------------------
qview_parent_name:
ld de,qview_name_folder ; ªã¤ 
ld hl,(__path) ; ®¯¨á â¥«ï ¯ã⨠ ªâ. ¯ ­¥«¨
ld a,(hl) ; ¤«¨­  áâப¨
sub 2 ; ¬¨­ãá ¯à®¡¥«ë ­ ç « -ª®­æ  áâப¨
ld bc,5 ; ᬥé. ¤® ¡ãª¢ë ¤¨áª 
add hl,bc ; hl=­ ç «® ¡ãª¢ë ¤¨áª  áâப¨
ld bc,qview_max_name ; 29 ¬ ªá. ¤«¨­  ¯ãâ¨
cp qview_max_name+1
jr c,qview_parent_loop
; ®¡à¥§ âì ¤«¨­­ãî áâபã
ldi ; ᪮¯¨à®¢ âì "X:\"
ldi
ldi
sub (qview_max_name-5)+3 ; ¤«¨­  ®áâ âª  ¯ã⨠+ ¤«¨­  "X:\"
ld c,a
add hl,bc ; ­  ­ ç «® ¬ ªá. ¤«¨­­®© áâப¨
ld a,"." ; ..
ld (de),a
inc de
ld (de),a
inc de
ld bc,qview_max_name-5 ; ¬¨­ãá ¤«¨­ã áâப¨ "X:\.."
qview_parent_loop:
ld a,(hl)
ldi
ret po ; ¢¥áì ¯ãâì ᪮¯¨à®¢ ­
or a
jr nz,qview_parent_loop
push de
pop ix ; ¡ãä¥à
ld b,c
jp spaces ; ¤®¯¨á âì 墮áâ®¢ë¥ ¯à®¡¥«ë
;---------------------------------------------------------------------
; ‚뢮¤ 32-å ¡¨â­ëå ç¨á¥« ¢ ¡ãä¥à, ¢ ¤¥áïâ¨ç­®¬ ä®à¬ â¥ á
; à §¤¥«¥­¨¥¬ à §à冷¢ § ¯ï⮩ ¨ ¢¥¤ã騬¨ ¯à®¡¥« ¬¨
;---------------------------------------------------------------------
; in: hl' = áâ. à §àï¤
; hl = ¬«. à §àï¤
; ix = ¡ãä¥à
;---------------------------------------------------------------------
decimal32:
ld de,0CA00h
exx
ld de,3B9Ah ; 1.000.000.000
exx
ld iy,tmp2__
res 7,(iy+0)
call GetN32
call print_comma1
ld de,0E100h
exx
ld de,05F5h ; 100.000.000
exx
call GetN32
ld de,9680h
exx
ld de,98h ; 10.000.000
exx
call GetN32
decimal24:
ld de,4240h
exx
ld de,0Fh ; 1.000.000
exx
call GetN32
call print_comma1
ld de,86A0h
exx
ld de,1 ; 100.000
exx
call GetN32
decimal16:
ld de,10000
exx
ld de,0 ; 10.000
exx
call GetN32
ld de,1000 ; 1.000
call GetN16
call print_comma1
ld de,100 ; 100
call GetN16
ld de,10 ; 10
call GetN16
ld a,l
add a,"0"
jr GetN163
tmp2__: db 0
GetN32: ld a,2Fh
and a
GetN321:inc a
sbc hl,de
exx
sbc hl,de
exx
jp nc,GetN321
add hl,de
exx
adc hl,de
exx
jr GetN160
;
GetN16: ld a,2Fh
and a
GetN161:inc a
sbc hl,de
jp nc,GetN161
add hl,de
GetN160:cp "0"
jr z,GetN162
set 7,(iy+0)
GetN162:bit 7,(iy+0)
jr nz,GetN163
ld a," " ; ¢¥¤ã騩 ¯à®¡¥«
GetN163:ld (ix+0),a ; á®åà. ¢ ¡ãä¥à¥
inc ix
ret
; à §¤¥«¨â¥«ì à §à冷¢
print_comma1:
ld a,","
jr nz,prn_com__
ld a," "
prn_com__:
ld (ix+0),a
inc ix
ret
;-----------------------------------------------------------
; „¨­ ¬¨ç¥áª¨© ¢ë¢®¤  ªâ. ¯ ­¥«¨ ¢ ¯ áᨢ­®©
; ¢ë室: NZ - ᬥ­¨âì á®áâ. key-¡ à 
;-----------------------------------------------------------
dinam_qview_panel:
call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
ret z ; ¢ëª«.
ld a,(format_mode1) ; ä®à¬ â ¯ áá. ¯ ­¥«¨
and form_qview
ret z ; ०¨¬ ¢ëª«.
; § ¤¥à¦ª  ¯¥à¥¤ ®âà ¡®âª®©
ld b,60 ; 0,6 ᥪ.
dinqview_loop:
push bc
call get_mouse_info ; ç⥭¨¥ á®áâ®ï­¨ï ¬ë誨
pop bc
jr z,dinqview_next ; ª­®¯ª¨ ­¥ ­ ¦ âë
ld a,h
cp 28 ; Y ª®®à¤. ¬ë誨
jr nc,dinqview_res_flag
jr dinqview_set_flag
dinqview_next:
push bc
ld a,3 ; ®¯à®á ª« ¢ë
rst 20h
ex af,af'
ld a,b
pop bc
and 11110000b ; ­ ¦ âë Ctrl,Alt,Shift ?
ret nz ; ¤ 
ex af,af'
jr nz,dinqview_exit ; ¥áâì ᨬ¢®«
halt
djnz dinqview_loop
db 3Eh ; ld a,..
dinqview_flag:
db true ; ä« £ ­¥®¡å. ®âà ¡®âª¨ "dinam_qview_panel"
or a
ret z ; ­¥ ®âà ¡ â뢠âì
call get_qview_data ; § ¯®«­¨âì ®¯¨á â¥«ì
; jr c,dinqview_file ; 㪠§ â¥«ì ­  ä ©«¥
call change_panel
call draw_half_frame ; ®ç¨áâ¨âì ¯ ­¥«ì
call upath6_ ; ¢ë¢¥á⨠§ ¯®«­. ®¯¨á â¥«ì
call change_panel
dinqview_res_flag:
xor a ; false
jr $+4
dinqview_set_flag:
ld a,true
ld (dinqview_flag),a
dinqview_exit:
xor a ; Z-ä« £
ret
; ‚뢥á⨠ᮤ¥à¦¨¬®¥ ä ©«  ¢ ¯ áá. ¯ ­¥«¨
;dinqview_file:
; call change_panel
; call draw_half_frame ; ®ç¨áâ¨âì ¯ ­¥«ì
; ld hl,title_qview ; ®¯¨á â¥«ì ®¤­®£® â¨â« 
; call draw_text
; call change_panel
; call alt_file_viewer ; ¢ë¢¥á⨠ᮤ¥à¦. ä ©« 
; jr dinqview_res_flag ; á¡à. ä« £ ®âà ¡®âª¨ "dinqview"
;-------------------------------------------------
; <20>®¤áç¨â âì à §¬¥à ¯ ¯ª¨
; ¢å®¤: hl=­ ç «® § ¯¨á¨
;-------------------------------------------------
qview_scan_folder:
push hl
push hl
ld hl,win_scan_folder ; ®¯¨á â¥«ì "Scanning the folder..."
call WinSimple ; ®âªàëâì ®ª­®
pop hl
call scan_folder ; ᪠­¨à. ¯ ¯ªã
call CloseWinSimple ; § ªàëâì ®ª­®
ld a,1 ; ®ç¨áâ¨âì ¡ãä¥à ª« ¢ë
rst 20h
pop hl
ret
;-------------------------------------------------
; ‘ª ­¨à®¢ ­¨¥ ¯ ¯ª¨  ªâ. ¯ ­¥«¨
; ¢å®¤: hl=­ ç «® § ¯¨á¨
;-------------------------------------------------
scan_folder:
xor a ; ०¨¬ "¯à®á⮥ ᪠­¨à. ¯ ¯ª¨"
scan_folder_alt:
ld (scan_mode),a ; ०¨¬ à ¡®âë ¯à®æ¥¤ãàë
; ᪮¯¨à. ¯ãâì ¯ ­¥«¨ ¢® ¢à¥¬. ¡ãä¥à
push hl
ld hl,(__buff) ; ®âªã¤ ,  ¤à¥á ¯ã⨠ ªâ. ¯ ­¥«¨
ld de,work_buffer ; ªã¤ 
ld a,(disk) ; ¤¨áª ¯ ­¥«¨
add a,"A"
ld (de),a
inc de
ld a,":"
ld (de),a
inc de
call copy_string ; (hl) -> (de) ¤® ­ã«ï
pop hl
ld a,(hl)
cp "." ; ".." ?
jr z,scan_fold1 ; ⮫쪮 ¯ãâì த¨â. ¯ ¯ª¨
; á®§¤ âì ­®¢ë© ¯ãâì
push hl
ex de,hl
dec hl
dec hl
ld a,'\'
cp (hl)
jr z,$+3
inc hl
ld (hl),a
inc hl
ex de,hl ; de=ªã¤ 
pop hl ; ®âªã¤ 
ld bc,0044h ; 11 -> 8.3
rst 10h
scan_fold1:
ld hl,work_buffer
ld c,1Dh ; ãáâ. ¯ãâì
rst 10h
jp ScanTree ; ᪠­¨à. ¯ ¯ªã

157
MOD2/READDSK.ASM Executable file
View File

@ -0,0 +1,157 @@
;-----------------------------------------------------------
; ‡ ¯®«­¨âì ¡ ­ªã ª â «®£  + à §¬¥à ä ©«®¢ ᯨ᪠
; ¢ë室: CF - ®è¨¡ª  ç⥭¨ï ¤¨áª 
;-----------------------------------------------------------
read_new_folder:
call read_new_list ; § ¯®«­¨âì ¡ ­ªã ­®¢ë¬ ᯨ᪮¬ + à §¬¥à ä ©«®¢
ret c
ld a,(format_mode) ; ä®à¬ â  ªâ. ¯ ­¥«¨
and form_trd
;jp z,msdos_scan_folder ; ᪠­¨à. ¯ ¯ªã -> scan_folder ?
ret z
;-------------------------------------------------------------
; ‚ëç¨á«¨âì ®¡ê¥¬ ä ©«®¢ ᯥª-¨¬¨¤¦  (¨­ä  ¨§ 9-£® ᥪâ®à )
;-------------------------------------------------------------
ld a,(cash_left_dir) ; ­®¬¥à ¡ ­ª¨ ª â «®£   ªâ. ¯ ­¥«¨
out (SLOT3),a ; ¯®¤ª«. áâà ­¨æã ª â «®£ 
; ¢¥áì ®¡ê¥¬ ¤¨áª 
ld hl,0Ah ; 655,360 (000A:0000)
ld (total_space_disk+2),hl ; áâ. à §àï¤
ld hl,0
ld (total_space_disk),hl ; ¬«. à §àï¤
; à áç¨â âì ®¡é. à §¬¥à ä ©«®¢
exx
ld bc,16 ; à §¬¥à trd-§ ¯¨á¨
ld hl,0 ; áâ. à §àï¤
exx
ld hl,0 ; ¬«. à §àï¤
ld ix,0C000h+11 ; ï祩ª  à §¬¥à  ä ©« 
ld bc,(all_files) ; ç¨á«® ä ©«®¢ ¤¨áª 
spec_scan_loop:
ld e,(ix+0)
ld d,(ix+1)
add hl,de ; ¬«.à §àï¤
exx
ld de,0
adc hl,de ; áâ.à §àï¤
add ix,bc ; ­  á«¥¤. § ¯¨áì
exx
dec bc ; --ç¨á«® ä ©«®¢
ld a,c
or b
jr nz,spec_scan_loop
exx
ld (files_size+2),hl ; áâ.à §àï¤
exx
ld (files_size),hl ; ¬«. à §àï¤
; à áç¨â âì ᢮¡. ¬¥áâ® ­  ¤¨áª¥
ld de,(total_space_disk) ; ¬«.à §àï¤
ex de,hl
sbc hl,de
ld (free_space_disk),hl
exx
ld de,(total_space_disk+2) ; áâ.à §àï¤
ex de,hl
sbc hl,de
ld (free_space_disk+2),hl
exx
ret
;-------------------------------------------------
; ‘ª ­¨à®¢ ­¨¥ ¯ ¯ª¨ ¨ ¯®¤áç¥â ¥¥ à §¬¥à 
;-------------------------------------------------
;msdos_scan_folder: ; <- § ¬¥­¨âì ­  scan_folder ?
;call get_record
;jp scan_folder
;ret
;-------------------------------------------------
; ‡ ¯®«­¨âì ¡ ­ªã ᯨ᪮¬ ­®¢®£® ª â «®£ 
; ¢ë室: CF - ®è¨¡ª  ãáâ. ¤¨áª /¯ãâ¨
;-------------------------------------------------
read_new_list:
call set_path_from_activ_panel ; ãáâ. ¤¨áª ¨ ¯ãâì ®â  ªâ. ¯ ­¥«¨
jr nc,read_nlist
inc a
scf
ret z ; ­¥â ¤¨áª 
; ­¥â ¤ ­­®£® ¯ãâ¨
ld hl,(__buff) ;  ¤à¥á ¯ã⨠ ªâ. ¯ ­¥«¨
ld (hl),'\' ; ª®à¥­ì ¢ ¯ãâì  ªâ. ¯ ­¥«¨
inc hl
ld (hl),0
dec hl
ld c,1Dh ; ᬥ­  ⥪. ª â «®£ 
rst 10h
ret c ; ®è¨¡ª 
read_nlist:
xor a
ld l,a
ld h,a
; á¡à. ï祩ª¨
ld (files_size),hl ; ®¡é. à §¬¥à ä ©«®¢ ¢ ᯨ᪥
ld (files_size+2),hl
ld (all_folders),hl ; ç¨á«® ¯ ¯®ª ¢ ᯨ᪥
ld (all_files),hl ; ç¨á«® § ¯¨á¥© ¢ ᯨ᪥  ªâ. ¯ ­¥«¨
ld (cur_pointer),hl ; ⥪. ¯®«®¦. 㪠§ â¥«ï
ld (offset_list),hl ; ᬥé. ᯨ᪠
ld (mark_files),hl ; ç¨á«® ¢ë¤¥«. ä ©«®¢
ld (low_size),hl ; ¬«. à §àï¤ à §¬¥à  ¢ë¤¥«. ä ©«®¢
ld (high_size),hl ; áâ. à §àï¤
ld h,0C0h ; hl=0C000h
ld (copy_rec_addr),hl
;
ld hl,(__mask) ; "*.*" ¬ áª  ¨¬ñ­ ä ©«®¢
ld bc,0019h ; ­ ©¤¥­­®¥ ¨¬ï ¢ 11 ᨬ¢. ä®à¬ â¥
read_nlist_loop:
ld de,work_buffer ; ªã¤ 
ld a,37h ; ¢á¥, ªà®¬¥ ¬¥âª¨ ⮬ 
rst 10h
ccf
ret nc ; ¡®«ìè¥ ­¥â § ¯¨á¥©
call copy_record ; ᪮¯¨à. § ¯¨áì ¢ ¡ ­ªã ª â «®£ 
ld c,1Ah ; ¯®¨áª á«¥¤.
jr read_nlist_loop
; ‘ª®¯¨à. § ¯¨áì ¢ ¡ ­ªã ª â «®£ 
copy_record:
ld a,(cash_left_dir) ; ­®¬¥à ¡ ­ª¨ ª â «®£   ªâ. ¯ ­¥«¨
out (SLOT3),a ; ¯®¤ª«. áâà. ª â «®£ 
ld hl,work_buffer+33 ; ®âªã¤ 
ld a,"."
cp (hl)
jr nz,copy_record1
inc hl
cp (hl)
ret nz ; "." ⥪. § ¯¨áì
dec hl
copy_record1:
db 11h ; ld de,..
copy_rec_addr:
dw 0C000h ; ªã¤  (⥪.  ¤à¥á)
ld bc,11
ldir ; ¨¬ï ä ©« 
ld hl,work_buffer+32 ; ®âªã¤ 
ldi ;  âਡãâ § ¯¨á¨
ld hl,work_buffer+12 ; ®âªã¤ 
ld bc,20
ldir
ld (copy_rec_addr),de
ld hl,(all_files)
inc hl ; ++ç¨á«® § ¯¨á¥© ¢ ᯨ᪥
ld (all_files),hl
; ­®¢ë© ®¡é¨© à §¬¥à ä ©«®¢ (total_file_size + found file_size)
ld hl,(work_buffer+28) ; ¬«. à §àï¤
ld de,(files_size)
add hl,de
ld (files_size),hl
ld hl,(work_buffer+30) ; áâ. à §àï¤
ld de,(files_size+2)
adc hl,de
ld (files_size+2),hl
ret

106
MOD2/RENAME.ASM Executable file
View File

@ -0,0 +1,106 @@
;===========================================================
;
; <20>à®æ¥áá ¯¥à¥¨¬¥­®¢ ­¨ï ä ©« /¯ ¯ª¨
;
;===========================================================
rename: call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
ret z
call get_fire ; § é¨â  ®â "§ «¨¯ ­¨ï" ¡ãâ®­®¢
ld a,(format_mode) ; ⥪. ä®à¬ â ¯ ­¥«¨
and form_info+form_qview ; info, qview
ret nz
call set_path_from_activ_panel ; ãáâ. ¤¨áª ¨ ¯ãâì  ªâ. ¯ ­¥«¨
ret c
call prep_rename_name ; ¨¬ï ä ©«  ¢ ®¯¨á â¥«ì ®ª­ 
ret c ; ".." § ¯¨áì
; ¢ë¢®¤ ­ ç «ì­®£® ®ª­ 
ld hl,dial_rename ; ®¯¨á â¥«ì ®ª­ 
call DialogW
cp evCommand ; ᮡë⨥ "ª®¬ ­¤ "
ret nz
ld a,(hl) ;+1 what
cp cmOkey ; "Ok"
ret nz
; ¯¥à¥¨¬¥­®¢ ­¨¥ ä ©« 
ld hl,temp_fname ; áâ à®¥ ¨¬ï
ld de,input_line_rename+5 ; ­®¢®¥ ¨¬ï
ld c,10h ; ¯¥à¥¨¬¥­. ä ©«
rst 10h
jp nc,fresh_two_panels ; ¡¥§ ®è¨¡®ª, ®¡­®¢¨âì ¯ ­¥«¨
;
; ¢ë¢®¤ ®ª­  ®è¨¡ª¨ ¯¥à¥¨¬¥­®¢ ­¨ï
ld hl,dial_error_rename ; "Cannot rename the file or folder"
jp DialogEr
; ‘ª®¯¨à®¢ âì ⥪. ¨¬ï ¯¥à¥¨¬¥­. ä ©« /¯ ¯ª¨ ¢ ®¯¨á â¥«ì ®ª­ .
; Ž¡à ¡®âª  ¬ ªá. ®¤­®© ¢ë¤¥«. § ¯¨á¨
; ¢ë室: hl= ¤à¥á § ¯¨á¨
prep_rename_name:
ld de,(mark_files) ; ç¨á«® ¢ë¤¥«. ä ©«®¢
ld hl,1
sbc hl,de
ret c ; >= 2 ¢ë¤¥«. ä ©«®¢
jr z,prep_ren_name1 ; ¥áâì ®¤¨­ ¢ë¤¥«. ä ©«
; ­¥â ¢ë¤¥«. ä ©«®¢
call get_record ; § ¯¨áì ¢ ⥪. ¯®«®¦¥­¨¨ 㪠§ â¥«ï
ld a,(hl)
cp "." ; ".."
scf
ret z
jr $+5
prep_ren_name1:
call scan_mark_records ; ¯®¨áª ®â¬¥ç. ä ©«  (á ­ ç «  ᯨ᪠)
; ¢å®¤: hl=§ ¯¨áì ä ©« 
ld bc,rename_name1 ; ªã¤  (¡ãä¥à 12 ¡ ©â)
push hl
call copy_cur_fname ; ᪮¯¨à. ¨¬ï ä ©«  ¨ ®â業â஢ âì
pop hl
; hl=®âªã¤ 
ld de,temp_fname ; ªã¤ 
ld bc,0044h ; 11 -> 8.3
rst 10h
; ®ç¨áâ¨âì áâàãªâãàã ¡ãä¥à 
ld hl,input_line_rename ; áâàãªâãà  ¡ãä¥à 
call clear_struct_inline
; ¢áâ ¢¨âì ¨¬ï ¢ áâàãªâãàã ¡ãä¥à 
ld iy,input_line_rename ; áâàãªâãà  ¡ãä¥à 
ld de,temp_fname ; ®âªã¤ 
ld hl,input_line_rename+5 ; ªã¤ 
prep_ren_loop:
ld a,(de)
or a
ret z
call put_char1 ; ¢áâ ¢¨âì ᨬ¢®«
inc de
inc hl
jr prep_ren_loop
; ‚áâ ¢¨âì ᨬ¢®« ¢ ¡ãä¥à áâàãªâãàë
; ¢å®¤: iy=áâàãªâãà  ¡ãä¥à 
; hl=ªã¤ 
; a=ᨬ¢®«
put_char1:
push hl
push iy
pop hl ; áâàãªâãà  ¡ãä¥à 
ex af,af' ; á®åà. ᨬ¢®«
ld a,(iy+2) ; X ⥪. ¯®«®¦. ªãàá®à  ¢ áâப¥
add a,(iy+3)
add a,l
ld l,a
jr nc,$+3
inc h
inc hl
inc hl
inc hl
inc hl
inc hl
ex af,af'
ld (hl),a ; ᨬ¢®« ¢ ª®¬-áâபã
pop hl
inc (iy+4) ; ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
inc (iy+2) ; X ⥪. ¯®«®¦. ªãàá®à  ¢ áâப¥
ret

523
MOD2/SETUP.ASM Executable file
View File

@ -0,0 +1,523 @@
; …᫨ ¯¥à¥¬¥­­ ï ®ªà㦥­¨ï ­ ©¤¥­ , ini-ä ©« ç¨â ¥âáï/§ ¯¨á뢠¥âáï
; ⮫쪮 ¢ ­¥©.
; …᫨ ¯¥à¥¬¥­­®© ®ªà㦥­¨ï ­¥â, ini-ä ©« ç¨â ¥âáï/§ ¯¨á뢠¥âáï ¯®
; ⥪ã饬㠯ã⨠¬¥­¥¤¦¥à .
;
; …᫨ ini-ä ©« ­¥ ­ ©¤¥­ - ¢ ¯ ­¥«ïå ãáâ ­ ¢«¨¢ ¥âáï ¤¨áª ¨ ⥪ã騩
; ¯ãâì ¬¥­¥¤¦¥à . …᫨ ini-ä ©« ­ ©¤¥­, ¤¨áª¨ ¨ ¯ã⨠¯ ­¥«¥© ãáâ ­ ¢-
; «¨¢ îâáï ᮣ« á­® ¤ ­­ëå ini-ä ©« .
;
;
; ‘âàãªâãà  ini-ä ©« :
;
; +0 - ”« £  ªâ¨¢­®© ¯ ­¥«¨ (0=«¥¢ ï, 80h=¯à ¢ ï)
; +1 - <20>®¬¥à ¤¨áª  «¥¢®© ¯ ­¥«¨ (0=A,1=B,..)
; +2 - <20>®¬¥à ¤¨áª  ¯à ¢®© ¯ ­¥«¨ (0=A,1=B,..)
; +3 - <20> áªà áª  ä ©«®¢ (true/false)
; +4 - ”« £ áªàëâ¨ï ¬ë誨 ¯à¨ à ¡®â¥ á ª« ¢®© (true/false)
; <20>¥¦¨¬ á®àâ¨à®¢ª¨ «¥¢®© ¯ ­¥«¨:
; +5 - n/x/d/s/u (name/ext/date/size/unsort)
; +6 - 0=, 1= (¢®á室ïé ï/­¨á室ïé ï)
; <20>¥¦¨¬ á®àâ¨à®¢ª¨ ¯à ¢®© ¯ ­¥«¨:
; +7 - n/x/d/s/u (name/ext/date/size/unsort)
; +8 - 0=, 1= (¢®á室ïé ï/­¨á室ïé ï)
; +9 - ”®à¬ â «¥¢®© ¯ ­¥«¨: full/med/brief/info/qview
; +10 - ”®à¬ â ¯à ¢®© ¯ ­¥«¨: full/med/brief/info/qview
; +11 - ”« £ ¢ë¢®¤  ¡ãª¢ ०¨¬  á®àâ¨à®¢ª¨ (true/false)
; +12 - ”« £ ¢ë¢®¤  áâப¨ á㬬 à­®© ¨­ä®à¬ æ¨¨ (true/false)
; +13 - ‘¬¥é¥­¨¥ ªãàá®à  ¢­¨§ ¯à¨ ¢ë¤¥«¥­¨¨ ä ©«®¢ (true/false)
; +14 - ”« £ ¢ë¢®¤  ç á®¢ ¢¢¥àå㠯ࠢ®© ¯ ­¥«¨ (true/false)
; +15 - ”« £ ¯®¤â¢¥à¦¤¥­¨ï ¢ë室  ¨§ ¬¥­¥¤¦¥à  (true/false)
; +16 - ”« £ ®â¬¥âª¨ ¯ ¯®ª (true/false)
; +17 - ”« £ ¢à¥¬¥­­®£® ¯à®á¬®âà  á¨áâ. íªà ­  ¯® Esc (true/false)
; +18 - ”« £ ®âà ¡®âª¨ Home/End ¢ ª®¬-áâப¥ ¯à¨ ®âªàëâëå ¯ ­¥«ïå (false/true)
; ;+19 - ”« £ ¢ë¢®¤  ®¡é¥© «¨­¥©ª¨ ¯à®æ¥áá  ª®¯¨à®¢ ­¨ï (false/true)
; +20 - १¥à¢
; +21 - १¥à¢
; +22 - १¥à¢
;
; +23 - Œ áᨢ 梥⮢ ¬¥­¥¤¦¥à  (color_array), 66 ¡ ©â
;
; +88 - ”« £ ¯®¤â¢¥à¦¤¥­¨ï ¯¥à¥§ ¯¨á¨ ¯à¨ ª®¯¨à®¢ ­¨¨ (Copy)
; +89 - ”« £ ¯®¤â¢¥à¦¤¥­¨ï ¯¥à¥§ ¯¨á¨ ¯à¨ ¯¥à¥¬¥é¥­¨¨ (Move)
; +90 - ”« £ ¯®¤â¢¥à¦¤¥­¨ï ¯à¨ 㤠«¥­¨¨ (Delete)
; +91 - ”« £ ¯®¤â¢¥à¦¤¥­¨ï 㤠«¥­¨ï ­¥ ¯ãáâëå ¯ ¯®ª (Delete non-empty folders)
; +92 - १¥à¢
; +93 - १¥à¢
; +94 - १¥à¢
; +95 - १¥à¢
;
; +96 - <20>ãâì «¥¢®© ¯ ­¥«¨ (256 ¡ ©â)
; +353 - <20>ãâì ¯à ¢®© ¯ ­¥«¨ (256 ¡ ©â)
;
block1 equ 23 ; ï祩ª¨ 1-£® ¡«®ª  ­ áâ஥ª
block2 equ 8 ; ï祩ª¨ 2-£® ¡«®ª 
size_ini_part1 equ block1+len_color_array+block2 ;97 ¡ ©â (­ áâனª¨ FM)
;-----------------------------------------------------------
; <20> áâநâì ®¯æ¨®­ «ì­ë¥ ï祩ª¨ ¬¥­¥¤¦¥à 
; ¨ ãáâ ­®¢¨âì ¤¨áª¨ ¨ ¯ã⨠¯ ­¥«¥©.
; ¢å®¤: § ¯®«­¥­­ë© work_buffer, ¯à¨ ­ «¨ç¨¨ ini-ä ©« 
;-----------------------------------------------------------
init_option_cells:
; ä« £ ­ «¨ç¨ï ini-ä ©« 
db 3Eh ; ld a,..
enable_ini_file:
db false
or a
jr nz,yes_ini__
;--------------------------------
; ­¥â ini-ä ©« 
;--------------------------------
; ¨á¯®«ì§®¢ âì æ¢¥â  ¯®-㬮«ç ­¨î
ld hl,default_colors ; ®âªã¤ 
ld de,color_array ; ªã¤ 
ld bc,len_color_array
ldir
; ãáâ. ®¤¨­ ª®¢ë¥ ¤¨áª¨ ¢ ¯ ­¥«ïå
ld c,2 ; ¯®«ãç¨âì ­®¬¥à ⥪. ¤¨áª 
rst 10h
ld (disk),a ; ­®¬¥à ¤¨áª   ªâ. ¯ ­¥«¨
ld (disk1),a ; ­®¬¥à ¤¨áª  ¯ áá. ¯ ­¥«¨
; ãáâ. ®¤¨­ ª®¢ë¥ ¯ã⨠¢ ¯ ­¥«ïå
ld hl,buff_left ; ¡ãä¥à ¯ã⨠«¥¢®© ¯ ­¥«¨
ld c,1Eh ; ¯®«ãç¨âì ⥪. ¯ãâì
rst 10h
ld hl,buff_left ; ¯ãâì «¥¢®© ¯ ­¥«¨
ld de,buff_right ; ¯ãâì ¯à ¢®© ¯ ­¥«¨
jp copy_string ; ᪮¯¨à. áâப㠤® ­ã«ï (á ­ã«¥¬)
yes_ini__:
;----------------------------------------
; ˆá¯®«ì§®¢ âì ­ áâனª¨ ¨§ ini-ä ©« 
;----------------------------------------
; “áâ.  ªâ¨¢­ãî ¯ ­¥«ì
ld de,panel_left+1
ld hl,panel_right+1
ld a,(work_buffer) ;+0 ¨§ ini-ä ©«  (0=«¥¢ ï, 80h=¯à ¢ ï)
or a
ld a,0
jr z,$+3
ex de,hl
ld (de),a ; X ¯®«®¦. ®¤­®© ¯ ­¥«¨
ld (hl),40 ; X ¯®«®¦. ¤à㣮© ¯ ­¥«¨
inc de
inc hl
ld (de),a ; cur_panel
ld (hl),80h ; cur_panel ¤à.¯ ­¥«¨
; “áâ. ¤¨áª¨ ¯ ­¥«¥©
ld a,(work_buffer+1)
ld (disk),a ; ¤¨áª  ªâ. ¯ ­¥«¨
ld a,(work_buffer+2)
ld (disk1),a ; ¤¨áª ¯ áá. ¯ ­¥«¨
; <20> áªà áª  ä ©«®¢
ld a,(work_buffer+3)
ld (hilight_enable),a
; <20>àïâ âì ¬ëèªã ¯à¨ à ¡®â¥ á ª« ¢®©
ld a,(work_buffer+4)
ld (hidden_mouse),a ; ä« £ (¢ 0-© áâà. ”Œ, 㦥 ¢ª«î祭 )
; <20>¥¦¨¬ë á®àâ¨à®¢®ª ¯ ­¥«¥©
; l=n/x/d/s/u (name/ext/date/size/unsort)
; h=0/1 (00=, 01=)
ld hl,(work_buffer+5)
ld (sort_type),hl ;  ªâ.
ld hl,(work_buffer+7)
ld (sort_type1),hl ; ¯ áá.
; ”®à¬ âë ¯ ­¥«¥©
ld a,(work_buffer+9) ; full/med/...
ld (format_mode),a ;  ªâ.
ld a,(work_buffer+10)
ld (format_mode1),a ; ¯ áá.
; ”« £ ¢ë¢®¤  ¡ãª¢ë ०¨¬  á®àâ¨à®¢ª¨
ld a,(work_buffer+11) ; true/false
ld (sort_char_flag),a ; ä« £
; ”« £ ¢ë¢®¤  á㬬 à­®© ¨­ä®à¬ æ¨¨ (¢­¨§ã ¯ ­¥«¥©)
ld a,(work_buffer+12) ; false/true
ld (flag_summary_info),a ; ä« £
; ‘¬¥é¥­¨¥ ªãàá®à  ¢­¨§ ¯à¨ ¢ë¤¥«¥­¨¨ ä ©«®¢
ld a,(work_buffer+13)
ld (enable_down_mark),a ; ä« £
; ”« £ ¢ë¢®¤  ç á®¢
ld a,(work_buffer+14)
ld (clock__+1),a ; ⥪. á®áâ. ०¨¬  ¢ë¢®¤ 
ld (enable_clock),a ; ä« £
; ”« £ ¯®¤â¢¥à¦¤¥­¨ï ¢ë室  ¨§ ¬¥­¥¤¦¥à 
ld a,(work_buffer+15)
ld (confirm_quit),a
; ”« £ ®â¬¥âª¨ ¯ ¯®ª
ld a,(work_buffer+16)
ld (mark_folders),a
; ”« £ ¢à¥¬. ¯à®á¬®âà  á¨áâ. íªà ­  ¯® Esc
ld a,(work_buffer+17)
ld (flag_esc),a
; ”« £ ®âà ¡®âª¨ Home/End ¢ ª®¬-áâப¥ ¯à¨ ®âªà. ¯ ­¥«ïå
ld a,(work_buffer+18)
ld (move_home_end),a
; ”« £ ¯®¤â¢¥à¦¤¥­¨ï ¯¥à¥§ ¯¨á¨ ¯à¨ ª®¯¨à®¢ ­¨¨ (Copy)
ld a,(work_buffer+88)
;ld (),a
;ld (confirm_ceil0),a
; ”« £ ¯®¤â¢¥à¦¤¥­¨ï ¯¥à¥§ ¯¨á¨ ¯à¨ ¯¥à¥¬¥é¥­¨¨ (Move)
ld a,(work_buffer+89)
;ld (),a
;ld (confirm_ceil1),a
; ”« £ ¯®¤â¢¥à¦¤¥­¨ï ¯à¨ 㤠«¥­¨¨ (Delete)
ld a,(work_buffer+90)
ld (del_confirm),a
ld (confirm_ceil2),a
; ”« £ ¯®¤â¢¥à¦¤¥­¨ï 㤠«¥­¨ï ­¥ ¯ãáâëå ¯ ¯®ª (Delete non-empty folders)
ld a,(work_buffer+91)
ld (flag_del_non_empty),a
ld (confirm_ceil3),a
; <20> áâநâì æ¢¥â  ¬¥­¥¤¦¥à 
ld hl,work_buffer+23 ; ­ ç «® 梥â. ¬ áᨢ  ¢ ini-ä ©«¥
ld de,color_array ; ¬ áᨢ 梥⮢ ¬¥­¥¤¦¥à 
ld bc,len_color_array
ldir
ret
;-------------------------------------------------
; —⥭¨¥ ini-ä ©« 
;-------------------------------------------------
read_ini_file:
; ¯à®¢¥à¨âì ¯¥à¥¬¥­­ãî ®ªà㦥­¨ï Far- 
ld bc,0146h ; ¯®«ãç¨âì ¯¥à¥¬¥­­ãî ®ªà㦥­¨ï
ld hl,env_name ; ¨¬ï ¯¥à¥¬¥­­®©
ld de,work_buffer ; ¡ãä¥à ¤«ï §­ ç¥­¨ï ¯¥à¥¬¥­­®©
rst 10h
jr c,no_ini_string ; ®è¨¡ª 
or a
jr nz,read_ini_file__ ; ¯¥à¥¬¥­­ ï ­ ©¤¥­ 
; ¨á¯. ⥪ã騩 á¨áâ. ¯ãâì
ld hl,save_path ; ®âªã¤ 
ld de,work_buffer ; ªã¤ 
call copy_string ; ᪮¯¨à. áâபã
dec de
dec de
ld a,(de)
cp '\'
jr z,$+3
inc de
read_ini_file__:
push de ; ª®­¥æ áâப¨ ¯¥à¥¬¥­­®© ®ªà㦥­¨ï
ld hl,name_ini_file ; ¨¬ï ini-ä ©« 
ld bc,len_ini_name
ldir ; ª ¤¨áª+¯ãâì + ¨¬ï ini-ä ©« 
; ­ ©â¨ ä ©«
ld hl,work_buffer ; ¨¬ï ä ©«  (¤¨áª+¯ãâì)
ld de,work_buffer+127;255 ; ¡ãä¥à
ld bc,0119h
ld a,20h ; " à娢­ë©"
rst 10h
pop de ; ª®­¥æ áâப¨ ¯¥à¥¬¥­­®© ®ªà㦥­¨ï
jr nc,found_ini_file ; ä ©« ­ ©¤¥­
no_ini_string:
xor a ; false
ld (enable_ini_file),a ; ä« £ ­ «¨ç¨ï ini-ä ©« 
jr ini_done
;
found_ini_file:
ld hl,work_buffer ; ¯®«­®¥ ¨¬ï ä ©«  (¤¨áª+¯ãâì+¨¬ï)
ld a,1 ; ­  ç⥭¨¥
ld c,11h ; ®âªàëâì ä ©«
rst 10h
jr c,no_ini_string ; ®è¨¡ª  ®âªàëâ¨ï
ld (handle_ini_file),a ; á®åà. ¤¥áªà¨¯â®à
; ¯à®ç¨â âì ­ áâனª¨ ¬¥­¥¤¦¥à 
ld hl,work_buffer ; ¡ãä¥à ¯®¤ ¤ ­­ë¥
ld de,size_ini_part1 ; ç¨á«® ç¨â ¥¬ëå ¡ ©â
ld c,13h ; ç⥭¨¥ ä ©« 
rst 10h
jr c,read_ini_error
; ¯à®ç¨â âì ¯ã⨠«¥¢®© ¨ ¯à ¢®© ¯ ­¥«¥©
ld hl,buff_left ; ¡ãä¥à ¯®¤ ¤ ­­ë¥
ld de,256+256 ; 512 ç¨á«® ç¨â ¥¬ëå ¡ ©â
ld a,(handle_ini_file) ; ¤¥áªà¨¯â®à
ld c,13h ; ç⥭¨¥ ä ©« 
rst 10h
ld a,true
jr nc,read_ini_ok ; ¡¥§ ®è¨¡®ª
read_ini_error:
xor a
read_ini_ok:
ld (enable_ini_file),a ; ä« £ ­ «¨ç¨ï ini-ä ©« 
close_ini_file:
db 3Eh
handle_ini_file:
db -1
ld c,12h ; § ªàëâì ä ©«
rst 10h
ini_done:
restore_sys_path:
ld a,(save_disk)
ld c,1 ; ãáâ. ¤¨áª
rst 10h
ret c
ld hl,save_path
ld c,1Dh ; ãáâ. ª â «®£
rst 10h
ret
env_name:
db "FM",0 ; ¨¬ï ¯¥à¥¬¥­­®© ®ªà㦥­¨ï
name_ini_file:
db '\FM.INI',0 ; ¨¬ï ini-ä ©« 
len_ini_name equ $ - name_ini_file
name_mnu_file:
db '\FM.MNU',0 ; ä ©« Œ¥­î <20>®«ì§®¢ â¥«ï
len_mnu_name equ $ - name_mnu_file
;------------------------------------------------------------------
; ‡ ¯¨áì ­ áâ஥ª ¢ ini-ä ©« (97+256+256=609 ¡ ©â).
; …᫨ ¯¥à¥¬¥­­ ï ®ªà㦥­¨ï ­¥ ­ ©¤¥­  - § ¯¨áì ¯à®¨§¢®¤¨âáï
; ¢ ⥪ã饬 ¯ãâ¨.
;------------------------------------------------------------------
write_ini_file:
ld hl,show_pointer ; ­ ç «ì­ë© ¢ë¢®¤ 㪠§ â¥«ï
push hl
call clear_pointer ; áªàëâì 㪠§ â¥«ì
; ¯à®¢¥à¨âì ¯¥à¥¬¥­­ãî ®ªà㦥­¨ï Far` 
ld bc,0146h ; ¯®«ãç¨âì ¯¥à¥¬¥­­ãî ®ªà㦥­¨ï
ld hl,env_name ; ¨¬ï ¯¥à¥¬¥­­®©
ld de,work_buffer ; ¡ãä¥à ¤«ï §­ ç¥­¨ï ¯¥à¥¬¥­­®©
rst 10h
ret c ; ®è¨¡ª 
or a
jr nz,write_ini_file__ ; ¯¥à¥¬¥­­ ï ­ ©¤¥­ 
; ¨á¯. ⥪ã騩 á¨áâ. ¯ãâì
ld hl,save_path ; ®âªã¤ 
ld de,work_buffer ; ªã¤ 
call copy_string ; ᪮¯¨à. áâபã
dec de
dec de
ld a,(de)
cp '\'
jr z,$+3
inc de
write_ini_file__:
ld hl,name_ini_file ; ¨¬ï ini-ä ©« 
ld bc,len_ini_name
ldir ; ¤¨áª+¯ãâì + ¨¬ï ini-ä ©« 
ld hl,work_buffer ; ¯®«­®¥ ¨¬ï ä ©«  (¤¨áª+¯ãâì+¨¬ï)
ld a,20h ; " à娢­ë©"
ld c,0Ah ; á®§¤ âì ä ©«
rst 10h
jr c,ini_done ; ®è¨¡ª  á®§¤ ­¨ï
ld (handle_ini_file),a ; á®åà. ¤¥áªà¨¯â®à
;
call prep_ini_buffer ; § ¯®«­¨âì ini-¡ãä¥à
;
; § ¯¨á âì ­ áâனª¨ ¬¥­¥¤¦¥à 
ld hl,work_buffer ; ¡ãä¥à ¤ ­­ëå
ld de,size_ini_part1 ; 97 ç¨á«® § ¯¨á. ¡ ©â
ld a,(handle_ini_file) ; ¤¥áªà¨¯â®à
ld c,14h ; § ¯¨áì ä ©« 
rst 10h
jr c,close_ini_file ; § ªàëâì ä ©«
; § ¯¨á âì ¯ãâì «¥¢®© ¯ ­¥«¨
ld hl,(__buff) ;  ¤à¥á áâப¨ «¥¢®© ¯ ­¥«¨
ld de,256 ; ç¨á«® § ¯¨á. ¡ ©â
ld a,(handle_ini_file) ; ¤¥áªà¨¯â®à
ld c,14h ; § ¯¨áì ä ©« 
rst 10h
jr c,close_ini_file ; § ªàëâì ä ©«
; § ¯¨á âì ¯ãâì ¯à ¢®© ¯ ­¥«¨
ld hl,(__buff1) ;  ¤à¥á áâப¨ ¯à ¢®© ¯ ­¥«¨
ld de,256 ; ç¨á«® § ¯¨á. ¡ ©â
ld a,(handle_ini_file) ; ¤¥áªà¨¯â®à
ld c,14h ; § ¯¨áì ä ©« 
rst 10h
jp close_ini_file ; § ªàëâì ä ©«
;-------------------------------------------------
; <20>®¤£®â®¢¨âì ¡ãä¥à ¤«ï § ¯¨á¨ ¢ ini-ä ©«
;-------------------------------------------------
prep_ini_buffer:
; €ªâ¨¢­ ï ¯ ­¥«ì
ld a,(cur_panel) ; 0=«¥¢ ï, 80h=¯à ¢ ï
ld (work_buffer),a ;+0
;or a
; ª®à४⭮ ᪮¯¨à®¢ âì ¯ ­¥«¥-§ ¢¨á¨¬ë¥ ï祩ª¨
;push af
;call nz,change_panel
call prep_ini_buffer1
;pop af
;call nz,change_panel
;
; <20> áªà áª  ä ©«®¢
ld a,(hilight_enable)
ld (work_buffer+3),a
; <20>àïâ âì ¬ëèªã ¯à¨ à ¡®â¥ á ª« ¢®©
ld a,(hidden_mouse) ; ä« £ (¢ 0-© áâà. ”Œ)
ld (work_buffer+4),a
; ”« £ ¢ë¢®¤  ¡ãª¢ë ०¨¬  á®àâ¨à®¢ª¨
ld a,(sort_char_flag)
ld (work_buffer+11),a
; ”« £ ¢ë¢®¤  á㬬 à­®© ¨­ä®à¬ æ¨¨ (¢­¨§ã ¯ ­¥«¥©)
ld a,(flag_summary_info)
ld (work_buffer+12),a
; ‘¬¥é¥­¨¥ ªãàá®à  ¢­¨§ ¯à¨ ¢ë¤¥«¥­¨¨ ä ©«®¢
ld a,(enable_down_mark)
ld (work_buffer+13),a
; ”« £ ¢ë¢®¤  ç á®¢
ld a,(enable_clock)
ld (work_buffer+14),a
; ”« £ ¯®¤â¢¥à¦¤¥­¨ï ¢ë室  ¨§ ¬¥­¥¤¦¥à 
ld a,(confirm_quit)
ld (work_buffer+15),a
; ”« £ ®â¬¥âª¨ ¯ ¯®ª
ld a,(mark_folders)
ld (work_buffer+16),a
; ”« £ ¢à¥¬. ¯à®á¬®âà  á¨áâ. íªà ­  ¯® Esc
ld a,(flag_esc)
ld (work_buffer+17),a
; ”« £ ®âà ¡®âª¨ Home/End ¢ ª®¬-áâப¥ ¯à¨ ®âªà. ¯ ­¥«ïå
ld a,(move_home_end)
ld (work_buffer+18),a
; ”« £ ¯®¤â¢¥à¦¤¥­¨ï ¯¥à¥§ ¯¨á¨ ¯à¨ ª®¯¨à®¢ ­¨¨ (Copy)
;ld a,()
ld (work_buffer+88),a
; ”« £ ¯®¤â¢¥à¦¤¥­¨ï ¯¥à¥§ ¯¨á¨ ¯à¨ ¯¥à¥¬¥é¥­¨¨ (Move)
;ld a,()
ld (work_buffer+89),a
; ”« £ ¯®¤â¢¥à¦¤¥­¨ï ¯à¨ 㤠«¥­¨¨ (Delete)
ld a,(del_confirm)
ld (work_buffer+90),a
; ”« £ ¯®¤â¢¥à¦¤¥­¨ï 㤠«¥­¨ï ­¥ ¯ãáâëå ¯ ¯®ª (Delete non-empty folders)
ld a,(flag_del_non_empty)
ld (work_buffer+91),a
; <20>¥à¥ª ç âì ¬ áᨢ 梥⮢ ¬¥­¥¤¦¥à 
ld hl,color_array
ld de,work_buffer+23 ; ­ ç «® 梥â. ¬ áᨢ  ¢ ini-ä ©«¥
ld bc,len_color_array
ldir
ret
; Š®¯¨à®¢ ­¨¥ ¢ ini-¡ãä¥à ¯ ­¥«¥-§ ¢¨á¨¬ëå ï祥ª
prep_ini_buffer1:
; <20>®¬¥à ¤¨áª   ªâ. ¯ ­¥«¨
ld a,(disk)
ld (work_buffer+1),a
; <20>®¬¥à ¤¨áª  ¯ áá. ¯ ­¥«¨
ld a,(disk1)
ld (work_buffer+2),a
; <20>¥¦¨¬ë á®àâ¨à®¢®ª ¯ ­¥«¥©
ld hl,(sort_type) ;  ªâ.
ld (work_buffer+5),hl
ld hl,(sort_type1) ; ¯ áá.
ld (work_buffer+7),hl
; ”®à¬ âë ¯ ­¥«¥©
ld a,(format_mode) ;  ªâ.
ld (work_buffer+9),a
ld a,(format_mode1) ; ¯ áá.
ld (work_buffer+10),a
ret
array_read equ 0C000h ; ¡ãä¥à mnu-ä ©« 
;-------------------------------------------------
; —⥭¨¥ ä ©«  fm.mnu
;-------------------------------------------------
read_mnu_file:
; ¯à®¢¥à¨âì ¯¥à¥¬¥­­ãî ®ªà㦥­¨ï Far- 
ld bc,0146h ; ¯®«ãç¨âì ¯¥à¥¬¥­­ãî ®ªà㦥­¨ï
ld hl,env_name ; ¨¬ï ¯¥à¥¬¥­­®©
ld de,work_buffer ; ¡ãä¥à ¤«ï §­ ç¥­¨ï ¯¥à¥¬¥­­®©
rst 10h
jr c,no_mnu_string ; ®è¨¡ª 
or a
jr nz,read_mnu_file__ ; ¯¥à¥¬¥­­ ï ­ ©¤¥­ 
; ¨á¯. ⥪ã騩 á¨áâ. ¯ãâì
ld hl,save_path ; ®âªã¤ 
ld de,work_buffer ; ªã¤ 
call copy_string ; ᪮¯¨à. áâபã
dec de
dec de
ld a,(de)
cp '\'
jr z,$+3
inc de
read_mnu_file__:
push de ; ª®­¥æ áâப¨ ¯¥à¥¬¥­­®© ®ªà㦥­¨ï
ld hl,name_mnu_file ; ¨¬ï mnu-ä ©« 
ld bc,len_mnu_name
ldir ; ª ¤¨áª+¯ãâì + ¨¬ï mnu-ä ©« 
; ­ ©â¨ ä ©«
ld hl,work_buffer ; ¨¬ï ä ©«  (¤¨áª+¯ãâì)
ld de,work_buffer+127;255 ; ¡ãä¥à
ld bc,0119h
ld a,20h ; " à娢­ë©"
rst 10h
pop de ; ª®­¥æ áâப¨ ¯¥à¥¬¥­­®© ®ªà㦥­¨ï
jr nc,found_mnu_file ; ä ©« ­ ©¤¥­
no_mnu_string:
xor a ; false
ld (enable_mnu_file),a ; ä« £ ­ «¨ç¨ï mnu-ä ©« 
jr mnu_done
;
found_mnu_file:
ld hl,work_buffer ; ¯®«­®¥ ¨¬ï ä ©«  (¤¨áª+¯ãâì+¨¬ï)
ld a,1 ; ­  ç⥭¨¥
ld c,11h ; ®âªàëâì ä ©«
rst 10h
jr c,no_mnu_string ; ®è¨¡ª  ®âªàëâ¨ï
ld (handle_mnu_file),a ; á®åà. ¤¥áªà¨¯â®à
; ¯à®ç¨â âì ä ©«
ld hl,array_read ; 0C000h ¡ãä¥à ¯®¤ ¤ ­­ë¥
ld de,73*52 ; 3796 ¬ ªá. ç¨á«® ç¨â ¥¬ëå ¡ ©â
ld c,13h ; ç⥭¨¥ ä ©« 
rst 10h
ld a,true
jr nc,read_mnu_ok ; ¡¥§ ®è¨¡®ª
xor a
read_mnu_ok:
ld (enable_mnu_file),a ; ä« £ ­ «¨ç¨ï mnu-ä ©« 
ld hl,array_read
add hl,de
ld (hl),0 ; ¢ ª®­¥æ ä ©« 
db 3Eh ; ld a,..
handle_mnu_file:
db -1
ld c,12h ; § ªàëâì ä ©«
rst 10h
mnu_done:
jp restore_sys_path ; ¢®ááâ. ⥪. ¯ãâì

141
MOD2/SPACE.ASM Executable file
View File

@ -0,0 +1,141 @@
;-----------------------------------------------------------
; ‚ëç¨á«¨âì ᢮¡®¤­®¥ ¬¥áâ® ­  2 ¤¨áª å ¯ ­¥«¥©
;-----------------------------------------------------------
get_total_free_space:
;  ªâ. ¯ ­¥«ì
ld hl,free_space_disk ; ï祩ª¨  ªâ. ¯ ­¥«¨
ld a,(format_mode) ; ä®à¬ â  ªâ. ¯ ­¥«¨
ld b,a
ld a,(disk) ; ¤¨áª  ªâ. ¯ ­¥«¨
ld c,a
push bc
call get_free_space ; ᢮¡. ¬¥áâ® ­  ¤¨áª¥
pop bc
ld a,(disk1) ; ¤¨áª ¯ áá. ¯ ­¥«¨
cp c ; ¤¨áª¨ ­  ¯ ­¥«ïå à ¢­ë ?
jr nz,get_free_noact ; ­¥â
ld hl,free_space_disk ; ï祩ª¨  ªâ. ¯ ­¥«¨
ld de,free_space_disk1 ; ï祩ª¨ ¯ áá. ¯ ­¥«¨
ld bc,4
ldir
ret
;
get_free_noact:
; ¯ áá. ¯ ­¥«ì
ld c,a ; ­®¬¥à ¤¨áª 
ld a,(format_mode1) ; ä®à¬ â ¯ áá. ¯ ­¥«¨
ld b,a
ld hl,free_space_disk1 ; ï祩ª¨ ¯ áá. ¯ ­¥«¨
;-------------------------------------------------
; ‚ëç¨á«¨âì ᢮¡®¤­®¥ ¬¥áâ® ­  ¤¨áª¥
; ¢å®¤: c=­®¬¥à ¤¨áª  (A=0, B=1,...)
; b=ä®à¬ â ¯ ­¥«¨
; hl=ï祩ª¨ "free_space_disk" ¯ ­¥«¨
;-------------------------------------------------
get_free_space:
ld a,(flag_summary_info) ; ä« £ ¢ë¢®¤  á㬬 à­®© ¨­äë
or a
ret z ; false
bit 6,b ; ᯥª-ä®à¬ â
ret nz
; ¢ë¢¥á⨠®ª­® "Calculating free space..."
push bc
push hl
ld hl,win_free_disk ; ®¯¨á â¥«ì ®ª­ 
call WinSimple ; ¢ë¢¥á⨠®ª­®
pop hl
pop bc
ld a,c
push hl
bit 6,b ; ᯥª-ä®à¬ â
jr nz,get_free_spec
;----------------------------------------------------
; ‚ëç¨á«¨âì ᢮¡. ¬¥áâ® ­  MS-DOS ¤¨áª¥
;----------------------------------------------------
ld c,3 ; ¨­ä  ® ¤¨áª¥
rst 10h
jr nc,get_free_ok
ld bc,0
ld e,c
ld d,c
jr get_free__
;
get_free_ok:
; a=à §¬¥à ª« áâ¥à  ¢ ᥪâ®à å
; bc=à §¬¥à ᥪâ®à  ¢ ¡ ©â å
; de=᢮¡. ª« áâ¥à®¢
push de
ld hl,0
add hl,bc ; ¢ëç¨á«¨âì à §¬¥à ª« áâ¥à 
dec a
jr nz,$-2
ex de,hl ; de=à §¬¥à ª« áâ¥à 
pop bc ; ᢮¡. ª« áâ¥à®¢
call mul_bcde ; bc*de=hlbc ᢮¡. ¬¥áâ®
ex de,hl
get_free__:
pop hl
; ¬«.à §àï¤
ld (hl),c ; hl=free_space_disk (free_space_disk1)
inc hl
ld (hl),b
inc hl
; áâ.à §àï¤
ld (hl),e
inc hl
ld (hl),d
; § ªàëâì ®ª­® "Calculating free space..."
jp CloseWinSimple
;----------------------------------------------------
; ‚ëç¨á«¨âì ᢮¡. ¬¥áâ® ­  ᯥªâà㬮¢áª®¬ ¤¨áª¥
; (®â¤¥«¨âì trd-ä®à¬ â ®â scl-ä®à¬ â )
; (655,360 ¡ ©â trd-¤¨áª )
; ¢å®¤: hl 㦥 ¢ á⥪¥
; a=­®¬¥à ¤¨áª 
;----------------------------------------------------
get_free_spec:
; ¢ëç¨á«¨âì ç¨á«® ᢮¡. ª« áâ¥à®¢
; ...
;
ld de,640; ; ᢮¡. ª« áâ¥à®¢
;
ld a,1 ; à §¬¥à ª« áâ¥à  ¢ ᥪâ®à å
ld bc,1024 ; à §¬¥à ᥪâ®à  ¢ ¡ ©â å
jr get_free_ok ; § ¯®«­¨âì áâபã
;-----------------------------------------------------------
; Ž¡­®¢«¥­¨¥ ᯨ᪠ ¯ ­¥«¨ ¯à¨ ­ ¢¨£ æ¨¨ ¯® ¯ ¯ª ¬
;-----------------------------------------------------------
fresh_list_panel:
call read_new_folder ; ­®¢ë© ᯨ᮪ ª â «®£  + à §¬¥à ¯ ¯ª¨
ret c
call sorting ; à §¤¥«ì­ë© ᯨ᮪ 㪠§ â¥«¥© + á®àâ. ᯨ᪠
fresh_list_pan:
; ¢ëç¨á«¨âì ᢮¡. ¬¥áâ® ¤¨áª 
ld hl,free_space_disk ; ï祩ª¨  ªâ. ¯ ­¥«¨
ld a,(format_mode)
ld b,a
ld a,(disk)
ld c,a
db 3Eh ; ld a,..
enter_to_folder:
db false ; ä« £ "­ ¢¨£ æ¨ï ¯® ¯ ¯ª ¬"
or a
call z,get_free_space
db 21h ; ld hl,..
fresh_list_point:
dw 0 ; á®åà. ¯®«®¦. 㪠§ â¥«ï
ld (cur_pointer),hl ; ⥪. ¯®«®¦. 㪠§ â¥«ï
db 21h ; ld hl,..
fresh_list_offset:
dw 0 ; á®åà. ᬥé. ᯨ᪠
ld (offset_list),hl ; ᬥ饭¨¥ ᯨ᪠
jp A20FC ; ¢ë¢®¤ ¯ ­¥«¨

360
MOD2/UTILS.ASM Executable file
View File

@ -0,0 +1,360 @@
max_width_dest equ 34 ; à §¬¥à ¡ãä¥à  áâப¨ ®¯¨á â¥«¥©
;--------------------------------------------------------------
; ‘à ¢­¥­¨¥ ¯ã⥩ (¨ ¤¨áª®¢) ¤¢ãå ¯ ­¥«¥©
; ¢ë室: Z - à ¢­ë
; NZ - ­¥ à ¢­ë
;--------------------------------------------------------------
compare_path_two_panels:
; áà ¢­¨âì ¤¨áª¨
ld a,(disk) ; ¤¨áª  ªâ. ¯ ­¥«¨
ld hl,disk1 ; ¤¨áª ¯ áá. ¯ ­¥«¨
cp (hl)
ret nz
; áà ¢­¨âì ¯ãâ¨
ld hl,(__buff) ; ¯ãâì  ªâ. ¯ ­¥«¨
ld de,(__buff1) ; ¯ãâì ¯ áá. ¯ ­¥«¨
comp_path_two_pan:
ld a,(de)
cp (hl)
ret nz
inc de
inc hl
ld a,(de)
or a
jr nz,comp_path_two_pan
cp (hl)
ret
;--------------------------------------------------------------
; <20>®¨áª ®â¬¥ç¥­­®© § ¯¨á¨ ¢ ᯨ᪥ ¯ ­¥«¨
; (¯®¨áª ¨¤¥â á ­ ç «  ᯨ᪠)
; ¢ë室: hl=­ ©¤¥­­ ï § ¯¨áì
; de=ï祩ª   âਡãâ  § ¯¨á¨
; a= âਡãâ § ¯¨á¨
; "Carry" - ­¥ ­ è«¨ § ¯¨áì
;--------------------------------------------------------------
scan_mark_records:
ld bc,(all_files) ; ç¨á«® § ¯¨á¥© ᯨ᪠
inc bc
ld hl,0 ; ­ ç âì á ­ ç «  ᯨ᪠
ld (scan_mark_numb+1),bc
ld (scan_mark_loop+1),hl
scan_mark_loop:
ld hl,0 ; á«¥¤. ¯®«®¦¥­¨¥ ¢ ᯨ᪥
scan_mark_numb:
ld bc,0 ; ç¨á«® ®áâ ¢è¨åáï § ¯¨á¥© ¢ ᯨ᪥
push hl
call get_record1 ; ᪠­¨à. ᯨ᮪ ¯ ­¥«¨
ld (scan_mark_rec+1),hl
ld (attr_record),a ;  âਡãâ ä ©«  (£«®¡. ï祩ª )
inc de
pop hl
inc hl ; ­  á«¥¤. § ¯¨áì
dec bc
ld (scan_mark_loop+1),hl
ld (scan_mark_numb+1),bc
ld a,c
or b
scf
ret z ; ª®­¥æ ᯨ᪠
ld a,(de) ;+12 ï祩ª  ®â¬¥âª¨
and 80h
jr z,scan_mark_loop ; § ¯¨áì ­¥ ®â¬¥ç¥­ 
; ­ è«¨ § ¯¨áì
scan_mark_rec:
ld hl,0 ;  ¤à¥á § ¯¨á¨
dec de
ld a,(de) ;+11  âਡãâ ä ©« 
or a ; á¡à. "Carry"
ret
;-----------------------------------------------------------
; Ž£à ­¨ç¥­¨¥ ­ ¡à ­­®© áâப¨ ¯¥à¢ë¬¨ 34-¬ï ᨬ¢®« ¬¨
; á æ¥­â஢ª®©.
; ¢å®¤: hl=¡ãä¥à ¢¢®¤  ~input line~
; de=ªã¤ 
;-----------------------------------------------------------
copy_dest_name:
push hl
push de
; ®ç¨áâ¨âì áâப㠮¯¨á â¥«ï
ld b,max_width_dest ; 34 à §¬¥à ¡ãä¥à 
ld a," "
ld (de),a
inc de
djnz $-2
xor a
ld (width_dest1__),a ; á¡à. ä« £ ¯¥à¥¯®«­. áâப¨
dec hl
ld a,(hl) ;+4 ¤«¨­  ¢¢¥¤. áâப¨
cp max_width_dest+1 ; 34+1
jr c,$+7 ; ¤«¨­  ¯ã⨠=< 32
ld a,max_width_dest ; 34
ld (width_dest1__),a ; ãáâ. ä« £ ¯¥à¥¯®«­. áâப¨
width_dest__:
ld c,a
; 業â஢ª  ¨¬¥­¨
ld a,max_width_dest ; 34 è¨à¨­  ¡ãä¥à  áâப¨
sub c
srl a ; /2
ld e,a
ld d,0
ld b,d
pop hl ; ªã¤ 
add hl,de
ex de,hl ; de=­ ç «® áâப¨ ¢ ®¯¨á â¥«¥
pop hl ; ®âªã¤ 
; ᪮¯¨à. áâபã
ld a,(hl)
cp "a"
jr c,$+4
res 5,a ; a..z -> A..Z
ld (de),a
inc hl
inc de
dec bc
ld a,c
or b
jr nz,$-13
db 3Eh ; ld a,..
width_dest1__:
db false
or a
ret z
; § ¯¨á âì ª®­æ¥¢ë¥ ".."
dec de
dec de
ld a,"."
ld (de),a
inc de
ld (de),a
ret
;-------------------------------------------------
; ‘ª®¯¨à®¢ âì ¨á室­®¥ ¨¬ï ä ©« /¯ ¯ª¨ "file.ext"
; ¢ áâப㠮¯¨á â¥«ï ®ª­ .
; ¢å®¤: bc=ªã¤ 
; ¢ë室: CF - ".." ⥪ãé ï § ¯¨áì
;-------------------------------------------------
copy_source_name:
ld hl,(mark_files) ; ç¨á«® ¢ë¤¥«. ä ©«®¢
ld a,l
or h
ret nz
call get_record ; ⥪. § ¯¨áì
ld (attr_record),a ;  âਡãâ ä ©«  (£«®¡. ï祩ª )
ld a,(hl) ; ¨¬ï ä ©« 
cp "."
scf
ret z ; ⥪ã騩 ".."
;-----------------------------------------------------------
; ‘ª®¯¨à®¢ âì ¨¬ï ä ©«  "file.ext" ¨ ®â業â஢ âì ¢ áâப¥
; ¢å®¤: hl=§ ¯¨áì ä ©« 
; bc=áâப  ®¯¨á â¥«ï ®ª­ 
; ¢ë室: § ¯®«­¥­­ë© ¡ãä¥à temp_fname
;-----------------------------------------------------------
copy_cur_fname:
call copyfname
; 業â஢ª  ¨¬¥­¨
ld a,12 ; ¡ãä¥à áâப¨
sub c
srl a ; /2
ld l,a
ld h,0
ld b,h
add hl,de
ex de,hl ; de=­ ç «® áâப¨ ¢ ®¯¨á â¥«¥
push bc
ld hl,work_buffer ; ®âªã¤ 
ldir
pop bc
ld hl,work_buffer ; ®âªã¤ 
ld de,temp_fname ; ªã¤ 
ldir
xor a
ld (de),a
ret
; ¢å®¤: bc=ªã¤ 
; ¢ë室: CF - ".." ⥪ãé ï § ¯¨áì
copyname:
ld hl,(mark_files) ; ç¨á«® ¢ë¤¥«. ä ©«®¢
ld a,l
or h
ret nz
call get_record ; ⥪. § ¯¨áì
ld (attr_record),a ;  âਡãâ ä ©«  (£«®¡. ï祩ª )
ld a,(hl) ; ¨¬ï ä ©« 
cp "."
scf
ret z ; ⥪ã騩 ".."
call copyfname
ld hl,work_buffer ; ®âªã¤ 
xor a
ld b,a
push bc
ldir
;inc hl
ld (hl),a
ex de,hl
ld (hl)," "
inc hl
ld (hl),"t"
inc hl
ld (hl),"o"
inc hl
ld (hl),":"
inc hl
pop bc
ld a,12
sub c
ret z
; ¤®¯¨á âì ¯à®¡¥«ë
ld (hl)," "
inc hl
dec a
jr nz,$-4
ret
; ᪮¯¨à. ¨¬ï ä ©« 
; ¢å®¤: bc=ªã¤  (¡ãä¥à 12 ¡ ©â)
; hl=¨¬ï ä ©« 
; ¢ë室: c=¤«¨­  ¨¬¥­¨
copyfname:
; ®ç¨áâ¨âì áâப㠮¯¨á â¥«ï
push bc
ld a," "
ld d,12
ld (bc),a
inc bc
dec d
jr nz,$-3
; ¨¬ï ¢ ä®à¬ â file.ext
ld ix,work_buffer ; ¢à¥¬. ¡ãä¥à
ld d,1 ; ­¥ ¬¥­ïâì ॣ¨áâà ¡ãª¢
bit 4,a ;  âਡãâ ä ©« 
jr nz,$+19 ; ¯ ¯ª 
ld a,(format_mode) ; ä®à¬ â  ªâ. ¯ ­¥«¨
and form_trd ; 6-© ¡¨â ᯥª-ä®à¬ â 
jr z,$+7
call fill_med_spec_name ; ᯥª-¨¬ï
jr $+10
call fill_med1__ ; "Filename.Ext" (¢á¥£¤  ¢ë¢®¤¨â 12 ᨬ¢.)
jr $+5
call dir_name_med ; ¢ë¢®¤ ¯ ¯ª¨ (¢á¥£¤  ¢ë¢®¤¨â 12 ᨬ¢.)
; ã§­ âì ¤«¨­ã ¨¬¥­¨
ld a,15 ; ª®­áâ ­â 
sub e
ld c,a
pop de ; ªã¤ 
ret
;-----------------------------------------------------------
; Ž£à ­¨ç¥­¨¥ ­ ¡à ­­®© áâப¨ ¯¥à¢ë¬¨ 34-¬ï ᨬ¢®« ¬¨
; ¢å®¤: hl=¡ãä¥à ¢¢®¤  ~input line~
; de=ªã¤ 
;-----------------------------------------------------------
copy_dstname:
push hl
push de
; ®ç¨áâ¨âì áâப㠮¯¨á â¥«ï
ld b,max_width_dest ; 34 à §¬¥à ¡ãä¥à 
ld a," "
ld (de),a
inc de
djnz $-2
xor a
ld (width_dst1__),a ; á¡à. ä« £ ¯¥à¥¯®«­. áâப¨
dec hl
ld a,(hl) ;+4 ¤«¨­  ¢¢¥¤. áâப¨
cp max_width_dest+1 ; 34+1
jr c,$+7 ; ¤«¨­  ¯ã⨠=< 32
ld a,max_width_dest ; 34
ld (width_dst1__),a ; ãáâ. ä« £ ¯¥à¥¯®«­. áâப¨
ld c,a
ld b,0
pop de ; ªã¤ 
pop hl ; ®âªã¤ 
; ᪮¯¨à. áâபã
ld a,(hl)
cp "a"
jr c,$+4
res 5,a ; a..z -> A..Z
ld (de),a
inc hl
inc de
dec bc
ld a,c
or b
jr nz,$-13
db 3Eh ; ld a,..
width_dst1__:
db false
or a
ret z
; § ¯¨á âì ª®­æ¥¢ë¥ ".."
dec de
dec de
ld a,"."
ld (de),a
inc de
ld (de),a
ret
;-----------------------------------------------------------
; ‘ª®¯¨à®¢ âì ¨¬ï ä ©«  "file.ext" ¨ ®â業â஢ âì ¢ áâப¥
; ¯à¨ ᪠­¨à®¢ ­¨¨ ¯ ¯ª¨.
; ¢å®¤: hl=¨¬ï ä ©«  ¢ ä®à¬ â¥ file.ext
; de=áâப  ®¯¨á â¥«ï ®ª­ 
;-----------------------------------------------------------
copy_cur_fname_alt:
; ®ç¨áâ¨âì áâப㠮¯¨á â¥«ï
push de
ld a," "
ld bc,0C00h ; áç¥â稪¨
ld (de),a
inc de
djnz $-2
pop de
push hl
; ã§­ âì ¤«¨­ã ¨¬¥­¨
ld a,(hl)
or a
jr z,$+6
inc c ; ++¤«¨­  ¨¬¥­¨
inc hl
jr $-6
; 業â஢ª  ¨¬¥­¨
ld a,12 ; ¡ãä¥à áâப¨
sub c
srl a ; /2
ld l,a
ld h,0
ld b,h
add hl,de
ex de,hl ; de=­ ç «® áâப¨ ¢ ®¯¨á â¥«¥
pop hl ; ®âªã¤ 
ldir
ret

271
MOD2/__COPY1.ASM Executable file
View File

@ -0,0 +1,271 @@
;===========================================================
;
; <20>à®æ¥áá ª®¯¨à®¢ ­¨ï ä ©«®¢
;
;===========================================================
copy: call test_show_panels ; â¥áâ ­  ०¨¬ ¢ª«. ¯ ­¥«¥©
ret z
call get_fire ; § é¨â  ®â "§ «¨¯ ­¨ï" ¡ãâ®­®¢
ld a,(format_mode) ; ⥪. ä®à¬ â ¯ ­¥«¨
and form_info+form_qview ; info, qview
ret nz
; ᪮¯¨à. ¨¬ï ä ©« /¯ ¯ª¨ (¥á«¨ ­¥â ¢ë¤¥«.)
call prep_copy_name ; ­ áâநâì ¨¬ï ª®¯¨à. ä ©«  ¢ ®¯¨á â. ®ª®­ ¨ ¤à.
ret c ; ⥪ã騩 ".." ¨ ­¥â ®â¬¥ç. ä ©«®¢
ld a,1 ; ª®¯¨à®¢ ­¨¥
ld (scan_mode),a ; ०¨¬ à ¡®âë tree-¯à®æ¥¤ãàë
jp __tree;
;
; ¢ë¢®¤ ­ ç «ì­®£® ®ª­ 
ld hl,dial_copy ; ®¯¨á â¥«ì ®ª­ 
call DialogW
cp evCommand ; ᮡë⨥ "ª®¬ ­¤ "
ret nz
ld a,(hl) ;+1 what
cp cmOkey ; "Copy"
ret nz
; ¢ë¢®¤ ®ª­  ¯à®æ¥áá 
ld hl,copy_file ; ®¡à ¡®â稪 ¯à®æ¥áá  ~Process Line~
ld (subrout_process),hl
ld hl,dial_copy_total_process ; ®¯¨á â¥«ì ®ª­  á 2-¬ï «¨­¥©ª ¬¨
call DialogW
cp evCommand; ; ᮡë⨥ "ª®¬ ­¤ "
ret nz;
ld a,(hl); ;+1 what
cp cmOkey; ; "Yes"
ret nz;
;
; ¢ë¢®¤ ®ª­  ®è¨¡ª¨ ª®¯¨à®¢ ­¨ï
ld hl,dial_error_copy
call DialogEr
cp evCommand ; ᮡë⨥ "ª®¬ ­¤ "
ret nz
ld a,(hl) ;+1 what
cp cmSkip ; "Skip"
cp cmSkipAll ; "Skip all"
cp cmOkey ; "Retry"
ret nz
; ¢ë¢¥á⨠®ª­® ¯à¥à뢠­¨ï ®¯¥à æ¨¨
ld hl,dial_abort ; ®¯¨á â¥«ì ®ª­ 
call DialogEr
cp evCommand ; ᮡë⨥ "ª®¬ ­¤ "
ret nz
ld a,(hl) ;+1 what
cp cmOkey ; "Yes"
ret nz
; ¢ë¢®¤ ®ª­  "ä ©« 㦥 áãé¥áâ¢ã¥â"
; § ¯®«­¨âì ï祩ª¨:
ld hl,dial_existing
call DialogEr
cp evCommand ; ᮡë⨥ "ª®¬ ­¤ "
ret nz
ld a,(hl) ;+1 what
cp cmOkey ; "Overwrite"
cp cmAll ; "All"
cp cmSkip ; "Skip"
cp cmSkipAll ; "Skip all"
cp cmAppend ; "Append"
ret nz
;..
ret
; ˆ¬ï ª®¯¨à. ä ©«  ¢ ®¯¨á â¥«¨ ®ª®­ ¨ ¡ãä¥à áâப¨ "Copy"
prep_copy_name:
ld hl,input_line_copy ; áâàãªâãà 
call clear_struct_inline ; ®ç¨áâ¨âì áâàãªâãàã ~input line~
ld hl,(__buff1) ; ¯ãâì ¯ áá. ¯ ­¥«¨
ld de,input_line_copy+5 ; áâப  ~input line~
ld b,2 ; áç¥â稪 ¤«¨­ë áâப¨
ld a,(disk1)
add a,"A"
ld (de),a
inc de
ld a,":"
ld (de),a
inc de
ld a,(hl)
ld (de),a
or a
jr z,$+7
inc hl
inc de
inc b
jr $-8
dec hl
ld a,'\'
cp (hl)
jr z,$+7
inc b
ld (de),a
inc de
xor a
ld (de),a
ld a,b
ld (input_line_copy+4),a ; áâàãªâãà  áâப¨ ~input line~
; ­ ç «ì­®¥ ®ª­® ª®¯¨à®¢ ­¨ï
ld bc,copy_name ; ªã¤ 
call copyname
ret c ; ⥪ã騩 ".." ¨ ­¥â ®â¬¥ç. ä ©«®¢
; ®ª­® ¯à®æ¥áá  ª®¯¨à®¢ ­¨ï á 1-© «¨­¥©ª®©
ld hl,copy_name-1 ; ®âªã¤ 
ld de,copy_name1 ; ªã¤ 
call copy_string ; (hl) -> (de)
ld hl,input_line_copy+5 ; áâàãªâãà  áâப¨ ~input line~
ld de,copy_name2 ; ªã¤ 
call copy_dstname ; ᪮¯¨à. ¯ãâì+¨¬ï ä ©« /¯ ¯ª¨
; ®ª­® ¯à®æ¥áá  ª®¯¨à®¢ ­¨ï á 2-¬ï «¨­¥©ª ¬¨
ld hl,copy_name-1 ; ®âªã¤ 
ld de,copy_name3 ; ªã¤ 
call copy_string ; (hl) -> (de)
ld hl,copy_name2 ; ®âªã¤ 
ld de,copy_name4 ; ªã¤ 
call copy_string ; (hl) -> (de)
;
; ®ª­® "®è¨¡ª  ª®¯¨à®¢ ­¨ï"
ld hl,copy_name-1 ; ®âªã¤ 
ld de,copy_name5 ; ªã¤ 
call copy_string ; (hl) -> (de)
; á æ¥­â஢ª®© ¨¬¥­¨
; ¯ãâì ­ §­ ç¥­¨ï ®ª­  "®è¨¡ª  ª®¯¨à®¢ ­¨ï"
ld hl,input_line_copy+5 ; áâàãªâãà  áâப¨ ~input line~
ld de,copy_name6 ; ªã¤ 
call copy_dest_name ; ᪮¯¨à. ¯ãâì+¨¬ï ä ©« /¯ ¯ª¨
; ¯ãâì ­ §­ ç¥­¨ï ®ª­  "ä ©« 㦥 áãé¥áâ¢ã¥â"
ld hl,copy_name6 ; ®âªã¤ 
ld de,exists_name ; ªã¤ 
call copy_string ; (hl) -> (de)
; ¨¬ï ä ©« 
ld hl,work_buffer+33;
dec de;
call copy_string; ; (hl) -> (de)
ret
;-----------------------------------------------------------
; ‘®§¤ âì ¯ ¯ªã ¯® ⥪. ¯ã⨠­  ¤¨áª¥ ­ §­ ç¥­¨ï
;-----------------------------------------------------------
create_folder:
; á®§¤ âì ⥪. â à£¥â-¯ãâì ¢ work_buffer+128 ;256
; ®á­®¢ë¢ ïáì ­  ¡ §®¢®¬ ¯ã⨠work_buffer (â®çª  ®âáç¥â )
or a;
ret
;-----------------------------------------------------------
; ‘ª®¯¨à®¢ âì ä ©« ⥪. ¯ã⨠­  ¤¨áª ­ §­ ç¥­¨ï.
; <20>à®æ¥¤ãà  «¨­¥©ª¨ ¯à®æ¥áá  ª®¯¨à®¢ ­¨ï.
; <20>ਠ§ ¢¥à襭¨¨ (¨«¨ ¯à¥à뢠­¨¨) ª®¯¨à®¢ ­¨ï
; ¢ë¤ ¥â ä« £ "Carry".
;-----------------------------------------------------------
copy_file:
; á®§¤ âì ä ©« ¯® ⥪. â à£¥â-¯ã⨠(¢ work_buffer+128 ;256)
;...
scf
or a;
ret
;__tree:
; ; ᪮¯¨à. ¯ãâì  ªâ. ¯ ­¥«¨ ¢® ¢à¥¬. ¡ãä¥à (á®§¤ âì ¡ §®¢ë© ¯ãâì á®àæ )
; push hl
; ld hl,(__buff) ; ®âªã¤ ,  ¤à¥á ¯ã⨠ ªâ. ¯ ­¥«¨
; ld de,work_buffer ; ªã¤ 
; ld a,(disk) ; ¤¨áª ¯ ­¥«¨
; add a,"A"
; ld (de),a
; inc de
; ld a,":"
; ld (de),a
; inc de
; call copy_string ; (hl) -> (de) ¤® ­ã«ï
; pop hl
; ld a,(hl)
; cp "." ; ".." ?
; ret z ; ¢ë©â¨, த¨â. ¯ ¯ª 
; ;
; push de
; ;ld a,(format_mode) ; ⥪. 䮬 â ¯ ­¥«¨
; ;ld b,a
; call get_record ; hl=­ ç «® § ¯¨á¨, a= âਡãâ ä ©« 
; pop de
; and 10h
; jr z,__tr1 ; ä ©«, ­¥ ¤®¡ ¢«ïâì ¨¬ï ¯ ¯ª¨
; ; â¥áâ ­  ª®­æ¥¢®© á«¥è
; push hl
; ex de,hl
; dec hl
; dec hl
; ld a,'\'
; cp (hl)
; jr z,$+3
; inc hl
; ld (hl),a
; inc hl
; ex de,hl ; de=ªã¤ 
; pop hl ; ®âªã¤ 
; ; ¤®¡ ¢¨âì ¨¬ï ¯ ¯ª¨
; ; de=ªã¤ 
; ld bc,0044h ; 11 -> 8.3
; rst 10h
;__tr1: ;
; ;call PR;
; ld hl,work_buffer
; ld c,1Dh ; ãáâ. ⥪. ¯ãâì
; rst 10h
; ;xor a ; ᪠­¨à. ¯ ¯ª¨
; ;ld (scan_mode),a ; ०¨¬ à ¡®âë ¯à®æ¥¤ãàë
; jp ScanTree ; ᪠­¨à. ¯ ¯ªã
; ;ret;
; Ÿç¥©ª¨ 1-© «¨­¥©ª¨ ¯à®æ¥áá 
max_file_bytes:
dw 0 ; à §¬¥à ä ©«  (¯ ¯ª¨)
dw 0 ; áâ. à §àï¤
;
curr_bytes:
dw 0 ; ⥪. ç¨á«® ®¡à ¡. ¡ ©â®¢
dw 0 ; áâ. à §àï¤
; Ÿç¥©ª¨ 2-© «¨­¥©ª¨ ¯à®æ¥áá 
max_file_bytes1:
dw 0 ; à §¬¥à ä ©«  (¯ ¯ª¨)
dw 0 ; áâ. à §àï¤
;
curr_bytes1:
dw 0 ; ⥪. ç¨á«® ®¡à ¡. ¡ ©â®¢
dw 0 ; áâ. à §àï¤
copy_overwrite:
db false ; ä« £ ¯®¤â¢. ¯¥à¥§ ¯¨á¨ ¯à¨ ª®¯¨à®¢ ­¨¨

229
OBJS/BUTTON.ASM Executable file
View File

@ -0,0 +1,229 @@
;=====================================================================
; <20>à®à¨á®¢ª  ®¡ê¥ªâ 
; object ~Button~ (¨¬¥¥â 䮪ãá)
; Input: HL=®¯¨á â¥«ì ®¡ê¥ªâ 
; Format table:
; +0 - ­®¬¥à ®¡ê¥ªâ  ~Claster check buttons"
; +1 - Xo «¥¢ ï ¯®§¨æ¨ï ®¡ê¥ªâ 
; +2 - Xi ¯à ¢ ï ¯®§¨æ¨ï ®¡ê¥ªâ 
; +3 - Y ¯®§¨æ¨ï ®¡ê¥ªâ 
; +4 - ­®¬¥à ª®¬ ­¤ë
; +5 - ᪥­-ª®¤ hot-ª« ¢¨è¨
; +6 - ª®­â¥ªáâ
;---------------------------------------------------------------------
; ”®à¬ â ®¯¨á â¥«ï:
; db Button ; ­®¬¥à ®¡ê¥ªâ 
; dw 0205h ; Yo,Xo
; db " ~O~k ",0 ; ¨¬ï ¡ãâ®­ 
; db 18h ; ᪥­-ª®¤ hot-ª« ¢¨è¨
; db cmOkey ; ­®¬¥à ª®¬ ­¤ë
; db 5 ; ª®­â¥ªáâ
;=====================================================================
PutButton:
push iy
inc iy ; ¯à®©â¨ ï祩ªã à §¬¥à  â ¡«¨æë
ld (iy+0),a ; +0 ­®¬¥à ®¡ê¥ªâ 
ld a,(hl) ; X pos
inc hl
ld c,a
add a,(ix+0) ; Pos X from begin screen
ld (iy+1),a ; +1 Xo left
ld a,(hl) ; Y pos
inc hl
ld b,a
add a,(ix+1) ; Pos Y from begin screen
ld (iy+3),a ;+3 Yo
call GetPutA
ex de,hl
ld a,(color_array+24) ; 梥⠤¨ «. ®ª­ 
ld c,a
ld b,0 ; áç¥â稪 è¨à¨­ë ¡ãâ®­ 
ld (iy+5),b ; hot-key
; ¢áâ ¢¨âì ¨¬ï ¡ãâ®­ 
ld a,(de)
PButLp1:inc de
cp "&"
jr nz,PButN0
; ¢áâ ¢¨âì hot-¡ãª¢ã
ld a,(de)
ld (hl),a ; hot-¡ãª¢ã ¢ ¡ãä¥à
inc hl
inc de
push bc
ld a,(color_array+25) ; 梥â hot-¡ãª¢ë ¤¨ «. ®ª­ 
ld b,a
ld a,c ; 梥⠡ãâ®­ 
and 0F0h
or b
ld (hl),a ;  âਡãâ
pop bc
inc hl
inc b
ld a,(de)
inc de
PButN0: ld (hl),a
inc hl
ld (hl),c
inc hl
inc b
ld a,(de)
or a
jr nz,PButLp1 ; ­¥ ª®­¥æ ¨¬¥­¨
inc de
ld a,(de) ; ᪥­-ª®¤ hot-ª« ¢¨è¨
inc de
ld (iy+5),a ; hot-ª« ¢¨è 
ld a,(iy+1) ; Xi left
add a,b ; + è¨à¨­  ¡ãâ®­ 
ld (iy+2),a ; Xi right
ex de,hl
ld a,(hl) ; ®¯¨á â¥«ì ®¡ê¥ªâ 
inc hl
ld (iy+4),a ; ­®¬¥à ª®¬ ­¤ë
ld a,(hl)
inc hl
ld (iy+6),a ; ª®­â¥ªáâ
ld bc,7 ; à §¬¥à â ¡«¨æë ®¡ê¥ªâ  "Button"
add iy,bc
push iy
exx
pop hl
pop de ; de=iy
and a
sbc hl,de ; de=DialTab+5
ld a,l
ld (de),a ; à §¬¥à â ¡«¨æë ®¡ê¥ªâ  "Button"
exx
ret
;-------------------------------------------------
; ”®ªãá ­  ®¡ê¥ªâ "Button"
;-------------------------------------------------
ButtonI:ld de,color_array+34 ; 梥â Selected buttons
ld (set_dial_tmp_inv+1),de
ld e,(ix+2) ; Xo left
ld d,(ix+4) ; Y
ld a,(ix+3) ; Xi right
sub e
ld c,a
call SetDialInv ; ¢ë¤¥«¨âì æ¢¥â®¬
ld hl,color_array+26 ; Selected title (®¡ê¥ªâ )
ld (set_dial_tmp_inv+1),hl ; ¢®ááâ. ï祩ªã
ret
;=====================================================================
;
; Ž¡à ¡®â稪 ᮡë⨩ ®¡ê¥ªâ®¢ "Button"
;
;=====================================================================
EvButton:
ld hl,what ; ¯®«¥ ᮡë⨩
ld a,(hl) ;+0
inc hl
cp evMouseFr
jr z,EBmouse
cp evKeyboard
jp z,EBkeys
cp evCombKey
ret nz
bit 7,(ix+1) ; sel or nosel
ret nz ; ®¡ê¥ªâ 㦥 ¢ë¤¥«¥­
ld b,(hl) ;+1 what
inc hl
ld a,(hl) ;+2 what
cp 56h ; ªãàá®à ¢¯à ¢®
jr z,tb__
push ix
ld e,(ix+0) ; à §¬¥à â ¡«¨æë "Button"
ld d,0
add ix,de
bit 7,(ix+0)
pop ix
ret z ; ¥é¥ ­¥ ª®­¥æ ®¡ê¥ªâ®¢
cp 54h ; ªãàá®à ¢«¥¢®
jr z,tb__
ld a,b
and 00111111b ; ¡¨âë Ctrl, Alt
ret nz
ld a,(hl) ;+2 what
cp 15+80h ; Tab ᪥­-ª®¤+80h
ret nz
; Shift+Tab
tb__: xor a
ld (_Push+1),a ; Push flag
jp SetButton ; select my
; ‘®¡ë⨥ - ¬ë誠
EBmouse:ld e,(hl) ;+1 X coord
inc hl
ld d,(hl) ;+2 Y coord
ld a,d
cp (ix+4) ; Y pos button
jr nz,get_fr ; if <> exit
ld a,e
bit 7,(ix+2)
jr nz,$+6
cp (ix+2) ; Xo pos
jr c,get_fr ; <
bit 7,(ix+3)
jr nz,get_fr
cp (ix+3) ; Xi pos
jr nc,get_fr ; >
xor a
inc a
ld (_Push+1),a ; Push flag
bit 7,(ix+1)
jr nz,_Push
jr SetButton
; ‘®¡ë⨥ - ®¡ëç­ ï ª« ¢¨è 
EBkeys: xor a
ld (_Push+1),a ; Push flag
ld a,(hl) ;+1 what ª®¤ ª« ¢¨è¨
bit 7,(ix+1) ; Sel or nosel
jr nz,EBkeyN
cp 9 ; Tab
jr z,SetButton ; if tab then set button
jr EBkeyN1
;
EBkeyN: cp 0Dh ; Enter
jr z,EBent
EBkeyN1:inc hl
ld a,(hl) ;+2 what ᪥­-ª®¤
cp (ix+6) ; hot-¡ãª¢ 
ret nz
EBent: ld a,1
ld (_Push+1),a
SetButton:
call MoveObj ; Select Button
call ResDialInv ; Reset previos invert
ld ix,DialTab+5
ld de,color_array+34 ; 梥â Selected buttons
ld (set_dial_tmp_inv+1),de
ld e,(ix+2) ; Xo
ld d,(ix+4) ; Y
ld a,(ix+3) ; Xi
sub e
ld c,a
call SetDialInv ; ¢ë¤¥«¨âì ¡ãâ®­ 梥⮬
ld de,color_array+26 ; 梥â Selected title (®¡ê¥ªâ )
ld (set_dial_tmp_inv+1),de
_Push: ld a,0
or a
jr z,BTexit
call PushBut ; § á¢¥â¨âì ªãàá®à
ld hl,what
ld (hl),evCommand
inc hl
ld a,(ix+5) ; ­®¬¥à ª®¬ ­¤ë
ld (hl),a
get_fr: jp get_fire
;
; Button exit
BTexit: ld hl,what
ld (hl),evNothing
ret

1408
OBJS/DIALOG.ASM Executable file

File diff suppressed because it is too large Load Diff

64
OBJS/DIALOG1.ASM Executable file
View File

@ -0,0 +1,64 @@
; Ž¡ê¥ªâë, ­¥ ¨¬¥î騥 䮪ãá 
;
;=====================================================================
; <20>à®à¨á®¢ª  ®¡ê¥ªâ 
; Object ~Text Line~ (­¥ ¬®¦¥â ¨¬¥âì 䮪ãá)
; Input: HL-®¯¨á â¥«ì ®¡ê¥ªâ 
; Format table: ­¥â
;---------------------------------------------------------------------
; ”®à¬ â ®¯¨á â¥«ï:
; db TextLine
; dw 0205h ; Yo,Xo
; db "Calculating free space...",0
;=====================================================================
PutTextLine:
ld c,(hl) ; X pos
inc hl
ld b,(hl) ; Y pos
inc hl
call GetPutA
ldi
inc de ; ¯à®©â¨  âਡãâ
ld a,(hl)
cp -1 ; ª®­¥æ ®¯¨á â¥«ï ®ª­ 
ret z
or a ; ª®­¥æ ®¯¨á â¥«ï TextLine
jr nz,$-8
inc hl
ret
;=====================================================================
; <20>à®à¨á®¢ª  ®¡ê¥ªâ 
; Object ~Horizontal Line~ (­¥ ¬®¦¥â ¨¬¥âì 䮪ãá)
; Input: HL-®¯¨á â¥«ì ®¡ê¥ªâ 
; Format table: ­¥â
;---------------------------------------------------------------------
; ”®à¬ â ®¯¨á â¥«ï:
; db HLine
; dw 0801h ; Yo,Xo
; db 40 ; ¤«¨­  «¨­¨¨
; db "Ä" ; ᨬ¢®« § ¯®«­¥­¨ï
;=====================================================================
PutHLine:
ld c,(hl) ; X pos
inc hl
ld b,(hl) ; Y pos
inc hl
call GetPutA
ld b,(hl) ; ¤«¨­  «¨­¨¨
inc hl
ld a,(hl) ; ᨬ¢®« § ¯®«­¥­¨ï
inc hl
ld (de),a
inc de
inc de ; ¯à®©â¨  âਡãâ
djnz $-3
ret

1737
OBJS/HMENU.ASM Executable file

File diff suppressed because it is too large Load Diff

1207
OBJS/INLINE.ASM Executable file

File diff suppressed because it is too large Load Diff

1072
OBJS/LISTBOX.ASM Executable file

File diff suppressed because it is too large Load Diff

1046
OBJS/PALLETE.ASM Executable file

File diff suppressed because it is too large Load Diff

262
OBJS/PROCESS.ASM Executable file
View File

@ -0,0 +1,262 @@
;-----------------------------------------------------------
; <20>à®à¨á®¢ª  ®¡ê¥ªâ  ~Process Line~.
; <20>ਠ¬ ªá. ç¨á«¥ ¬¥­ì襬, 祬 è¨à¨­  «¨­¥©ª¨ ¯à®æ¥áá ,
; ¯®£à¥è­®áâì ¡®«ìè ï (­¥ § ªà è¨¢ ¥âáï ¢áï «¨­¥©ª ).
;
; Object ~Process Line~
; Input: HL-label
; Format mouse table:
; +0 - Object ~Process line~
; +1 - Xo position object
; +2 - Xi position object
; +3 - Y position object
; +4 - ¯®§. ¯¥ç â¨
; +5,6 - ª®«-¢® ¥¤¨­¨æ ­  1 ¤¥«¥­¨¥ ¯à®æ¥áá 
; +7,8 - ï祩ª , £¤¥ ⥪. ç¨á«® ¥¤¨­¨æ
; +9,10 - ¯®¤¯à®£à ¬¬  ¯à®æ¥áá 
;-----------------------------------------------------------
; db ProcesLine
; dw 0504h ; Y,X ¯®«®¦.
; db 72 ; ¤«¨­  «¨­¥©ª¨
; dw FileBytes ;  ¤à¥á ï祩ª¨ á MAX ç¨á«®¬
; dw CurrBytes ;  ¤à¥á ï祩ª¨ á ⥪. ç¨á«®¬
;ConCall:dw 0 ;  ¤à¥á ¯®¤¯à®£à ¬¬ë ¯à®æ¥áá 
;-----------------------------------------------------------
;FileBytes:
; dw 0,0 ; à §¬¥à ä ©« 
;CurrBytes:
; dw 0,0 ; ⥪. ᬥ饭¨¥ ¢ ä ©«¥
;-----------------------------------------------------------
PProcess:
ld (iy+1),a ;+0 object
ld a,(hl) ; X pos
inc hl
ld c,a
add a,(ix+0) ; Pos X from begin screen
ld (iy+2),a ;+1 Xo
ld a,(hl) ; Y pos
inc hl
ld b,a
add a,(ix+1) ; Pos Y from begin screen
ld (iy+4),a ;+3 Yo
ld a,(hl)
inc hl
add a,(iy+2)
ld (iy+3),a
ld (iy+5),0 ; ¯®§. ¢ë¢®¤ 
ld e,(hl) ; £¤¥ ¬ ªá.
inc hl
ld d,(hl)
inc hl
push ix
push hl
push bc
ex de,hl
ld e,(hl) ; HL,IX - max. ¥¤¨­¨æ
inc hl
ld d,(hl)
inc hl
push de
pop ix ; ¬«. à §àï¤
ld a,(hl)
inc hl
ld h,(hl) ; áâ. àï§àï¤
ld l,a
ld a,(iy+3)
sub (iy+2)
ld c,a ; ª®«-¢® ¤¥«¥­¨© ¯à®æ¥áá  (è¨à¨­  «¨­¥©ª¨)
ld b,0
call Divis32
db 0DDh
ld a,l
ld (iy+6),a ; +6,+7 ª®íä䍿¨¥­â
db 0DDh
ld a,h
ld (iy+7),a
pop bc
pop hl
pop ix
ld a,(hl)
inc hl
ld (iy+8),a
ld a,(hl)
inc hl
ld (iy+9),a
ld a,(hl)
inc hl
ld (iy+10),a
ld a,(hl)
inc hl
ld (iy+11),a
call GetPutA
ex de,hl
ld a,(color_array+52) ; 30h 梥⠫¨­¥©ª¨ ¯à®æ¥áá 
ld c,a
ld a,(iy+3)
sub (iy+2)
ld b,a
ld (hl),"°"
inc hl
ld (hl),c
inc hl
djnz $-5
ex de,hl
ld de,12
ld (IY+0),e
add iy,de
ret
;-----------------------------------------------------------
;
; Ž¡à ¡®â稪 ᮡë⨩ ®¡ê¥ªâ®¢ ~Process Line~
;
;-----------------------------------------------------------
; ¯/¯ ¯à®æ¥áá  ¤®«¦­  ¢®§¢à é âì "Carry", ¥á«¨
; ¯à®æ¥áá § ª®­ç¥­.
EProcess:
push ix
ld de,EProcNx ;  ¤à¥á ¢ë室 
push de
ld l,(ix+10) ; <20>®¤¯à®£à ¬¬ 
ld h,(ix+11) ; ¯à®æ¥áá 
jp (hl)
;
EProcNx:pop ix
push af
push ix
ld l,(ix+8) ; ⥪. ¯®«®¦¥­¨¥
ld h,(ix+9)
ld c,(ix+6) ; bc=ª®íä䍿¨¥­â
ld b,(ix+7)
ld e,(hl) ; hl,ix = cur. ¥¤¨­¨æ
inc hl
ld d,(hl)
inc hl
push de
pop ix
ld a,(hl) ; áâ. à §àï¤
inc hl
ld h,(hl)
ld l,a
call Divis32 ; hl,ix / bc
db 0DDh
ld a,l
pop ix
ld b,a
ld a,(ix+3)
sub (ix+2)
ld c,a
cp b
ld a,b
jr nc,$+3
ld a,c
sub (ix+5) ; ¯à¥¤. ¯®§¨æ¨ï ¢ë¢®¤ 
jp z,ProcEx1
ld b,a ; à §­¨æ  ¬¥¦¤ã ¯®«®¦¥­¨ï¬¨
ld c,(ix+5)
add a,c
ld (ix+5),a ; § ¯®¬. ⥪. ¯®«®¦¥­¨¥
ld a,(ix+2) ; Xo
add a,c ; ⥪. ¯®«®¦¥­¨¥
ld e,a
ld d,(ix+4) ; Yo
push de
push bc
bit 7,(ix+3) ; Xi
jr nz,ProcExt
bit 7,e
jr z,proc1
ld a,e
neg
sub b
neg
jr z,ProcExt
jp m,ProcExt
ld b,a
ld e,0
proc1: ld a,e
cp 80
jr nc,ProcExt
add a,b
cp 80
jr c,proc2
ld a,80
sub e
ld b,a
proc2: ld a,d
cp 31
jr nc,ProcExt
push ix
push bc
ld c,84h ; ãáâ. ªãàá®à
rst 08h
pop bc ; b=ç¨á«® ᨬ¢®«®¢
ld a,"Û"
ld c,82h
rst 08h
pop ix
ProcExt:pop hl ; h=ç¨á«® ¥¤¨­¨æ
pop bc ; ¯®§¨æ¨ï ­  íªà ­¥
push ix
in a,(SLOT3)
push af
ld a,(page_dial_screen) ; áâà. ¡ãä¥à 
out (SLOT3),a
ld ix,DialData ; â ¡«¨æ  ®á­. ¤¨ «. ®ª­ 
ld a,c
sub (ix+0)
ld c,a
ld a,b
sub (ix+1)
ld b,a
call GetPutA
ld b,h
ld a,"Û"
ld (de),a
inc de
inc de
djnz $-3
pop af
out (SLOT3),a
pop ix
ProcEx1:pop af ; ä« £ ®â ¯/¯ ¯à®æ¥áá 
ret nc ; ¯à®æ¥áá ­¥ § ª®­ç¨«áï
ld hl,what ; ¯®«¥ ᮡë⨩
ld (hl),evCommand
inc hl
ld (hl),cmOkey
ret
;-------------------------------------------------
; <20>à®æ¥¤ãà  ¤¥«¥­¨ï (32bit)
; ¢å®¤: hl,de / bc
; ¢ë室: de=楫®¥, hl=®áâ â®ª
;-------------------------------------------------
Divis32:ld a,b
or c
ret z
ex de,hl
ld hl,0
ld a,32
div32b1:add ix,ix
ex de,hl
adc hl,hl
ex de,hl
adc hl,hl
sbc hl,bc
jr nc,div32b2
add hl,bc
dec a
jr nz,div32b1
ret
div32b2:inc ix
dec a
jr nz,div32b1
ret

789
OBJS/RADIO.ASM Executable file
View File

@ -0,0 +1,789 @@
; ‚ª«î砥⠮¡ê¥ªâë ~Radio Button~ ¨ ~Check Box~
;
;=====================================================================
; <20>à®à¨á®¢ª  ®¡ê¥ªâ  "Radio Button"
; object ~Claster radio buttons~ (¨¬¥¥â 䮪ãá)
; Input: HL-®¯¨á â¥«ì ®¡ê¥ªâ 
; Format table:
; +0 - ­®¬¥à ®¡ê¥ªâ  ~Radio Button"
; +1 - Xo «¥¢®¥ ¯®«®¦. ®¡ê¥ªâ 
; +2 - Xi ¯à ¢®¥ ¯®«®¦. ®¡ê¥ªâ 
; +3 - Yo «¥¢®¥ ¯®«®¦. ®¡ê¥ªâ 
; +4 - Yi ¯à ¢®¥ ¯®«®¦. ®¡ê¥ªâ 
; +5 - Xi ¯à ¢®¥ ¯®«®¦. ¨¬¥­¨
; from: +0 - Y ¯®«®¦. radio-ª­®¯ª¨
; +1 - ᪥­-ª®¤ hot-¡ãª¢ë
; +2 - âਣ. ï祩ª 
; +3,4 -  ¤à¥á ï祩ª¨
; 80h - ª®­¥æ â ¡«¨æë ®¡ê¥ªâ 
;---------------------------------------------------------------------
; db ClsRadioBut ; ­®¬¥à ®¡ê¥ªâ 
; dw 0202h,0112h ; Yo,Xo,lenY,lenX (á "() ")
; db "&Viewer command",0 ; ¨¬ï í«¥¬¥­â 
; db 2Dh ; ᪥­-ª®¤ hot-¡ãª¢ë
; dw Mode1 ; ï祩ª  ¯ ¬ïâ¨
; db "&Editor command",0 ; ¨¬ï í«¥¬¥­â 
; db 12h ; ᪥­-ª®¤ hot-¡ãª¢ë
; dw Mode2 ; ï祩ª  ¯ ¬ïâ¨
; db 0 ; ª®­¥æ ª« áâ¥à 
;=====================================================================
PutClsRadioBut:
push iy
inc iy
ld (iy+0),a ; ­®¬¥à ®¡ê¥ªâ 
ld a,(hl) ; X pos
inc hl
ld c,a
ld (ix+4),a ; Save X pos
add a,(ix+0) ; Pos X from begin screen
ld (iy+1),a ;+1 Xo
ld a,(hl) ; Y pos
inc hl
ld b,a
ld (ix+5),a ; Save Y pos
add a,(ix+1) ; Pos Y from begin screen
ld (iy+3),a ;+3 Yo
call GetPutA
ld a,(hl)
inc hl
ld (ix+6),a
add a,(iy+1)
ld (iy+2),a ; Xi pos
ld a,(hl)
inc hl
add a,(iy+3)
ld (iy+4),a
ld a,(ix+6)
add a,(iy+1)
ld (iy+5),a ; Xi pos name
ld bc,6 ; next element claster
add iy,bc
; Next element
ClChkLp:ld c,(ix+4) ; pos element
ld b,(ix+5)
call GetPutA
ld b,0
ex de,hl
ld (hl),"("
inc hl
inc hl
inc b
push hl
inc hl
inc hl
inc b
ld (hl),")"
inc hl
inc hl
inc b
inc hl
inc hl
inc b
; ¨¬ï í«¥¬¥­â  ®¡ê¥ªâ 
ld a,(color_array+24) ; 梥⠤¨ «. ®ª­ 
ld c,a
ld a,(de)
ClChkL1:inc de
cp "&"
jr nz,ClChkN0
ld a,(color_array+25) ; 梥â hot-¡ãª¢ë ¤¨ «. ®ª­ 
ld c,a
ld a,(de)
inc de
ld (hl),a
inc hl
ld a,(hl)
and 0F0h
or c
ld (hl),a
inc hl
ld a,(color_array+24) ; 梥⠤¨ «. ®ª­ 
ld c,a
inc b
ld a,(de)
inc de
ClChkN0:ld (hl),a
inc hl
ld (hl),c
inc hl
inc b
ld a,(de)
or a
jr nz,ClChkL1
inc de
ld a,(ix+5) ; Current Y pos
add a,(ix+1) ; from begin screen
ld (iy+0),a
inc iy
ex de,hl
ld a,(hl)
inc hl
ld (iy+0),a ; ᪥­-ª®¤ hot-¡ãª¢ë
inc iy
ld c,(hl)
inc hl
ld b,(hl)
inc hl
ld a,(bc)
ld (iy+0),a ; ï祩ª 
inc iy
ld (iy+0),c ; bc= ¤à¥á ï祩ª¨
inc iy
ld (iy+0),b
inc iy
pop bc
or a
ld a," "
jr z,$+4
ld a,""
ld (bc),a
inc (ix+5)
ld a,(hl)
or a
jp nz,ClChkLp
ld (iy+0),80h ; End tab claster
inc iy
inc hl
; á®åà. à §¬¥à â ¡«¨æë ¢ ’ ¡«¨æ¥ ®¡ê¥ªâ®¢
push iy
exx
pop hl
pop de
or a
sbc hl,de
ld a,l
ld (de),a
exx
ld a,1
ld (SavElem+1),a ; ¯¥à¢ë© í«¥¬¥­â
ret
;=====================================================================
; <20>à®à¨á®¢ª  ®¡ê¥ªâ  "Check Box"
; object ~Claster check buttons~ (¨¬¥¥â 䮪ãá)
; Input: HL-®¯¨á â¥«ì ®¡ê¥ªâ 
; Format table:
; +0 - ­®¬¥à ®¡ê¥ªâ  "CheckBox"
; +1 - Xo «¥¢®¥ ¯®«®¦. ®¡ê¥ªâ 
; +2 - Xi ¯à ¢®¥ ¯®«®¦. ®¡ê¥ªâ 
; +3 - Yo «¥¢®¥ ¯®«®¦. ®¡ê¥ªâ 
; +4 - Yi ¯à ¢®¥ ¯®«®¦. ®¡ê¥ªâ 
; +5 - Xi ¯à ¢®¥ ¯®«®¦. ¨¬¥­¨ ®¡ê¥ªâ 
; from: +0 - Y ¯®«®¦. 祪-¡®ªá 
; +1 - ᪥­-ª®¤ hot-¡ãª¢ë
; +2 - âਣ. ï祩ª 
; +3,4 -  ¤à¥á ï祩ª¨
; 80h - ª®­¥æ â ¡«¨æë ®¡ê¥ªâ 
;---------------------------------------------------------------------
; db ClsCheckBox ; ­®¬¥à ®¡ê¥ªâ 
; dw 0202h,0225h ; Yo,Xo,lenY,lenX (á "[x] ")
; db "&Clear r/o attribute",0 ; ¨¬ï í«¥¬¥­â 
; db 2Ch ; ᪥­-ª®¤ hot-¡ãª¢ë
; dw cSystem1 ;  ¤à¥á ï祩ª¨
; db "Clear &attribute",0 ; ¨¬ï í«¥¬¥­â 
; db 1Dh ; ᪥­-ª®¤ hot-¡ãª¢ë
; dw cSystem2 ;  ¤à¥á ï祩ª¨
; db 0 ; ª®­¥æ ª« áâ¥à 
;=====================================================================
PutClsCheckBox:
PUSH IY
INC IY
LD (IY+0),A ; ­®¬¥à ®¡ê¥ªâ 
LD A,(HL) ; Xo pos
INC HL
LD C,A
LD (IX+4),A ; Save X pos ##
ADD A,(IX+0) ; Pos X from begin screen
LD (IY+1),A ;+1 Xo
LD A,(HL) ; Yo pos
INC HL
LD B,A
LD (IX+5),A ; Save Yo pos
ADD A,(IX+1) ; Pos Yo from begin screen
LD (IY+3),A ;+3 Yo
CALL GetPutA
LD A,(HL) ; X Len
INC HL
LD (IX+6),A ; è¨à¨­  ®¡ê¥ªâ 
;
ADD A,(IY+1) ;+1 Xo «¥¢ ï ¯®§¨æ¨ï ®¡ê¥ªâ 
LD (IY+2),A ;+2 Xi pos
LD A,(HL) ; Y Len
INC HL
ADD A,(IY+3) ;+3 Yo pos object
LD (IY+4),A ;+4 Yi pos object
LD A,(IX+6)
ADD A,(IY+1)
LD (IY+5),A ; Xi pos name
LD BC,6 ; next element claster
ADD IY,BC
; Next element
ClRadLp:LD C,(IX+4) ; pos element
LD B,(IX+5)
CALL GetPutA
LD B,0
EX DE,HL
LD (HL),"["
INC HL
INC HL
INC B
PUSH HL
INC HL
INC HL
INC B
LD (HL),"]"
INC HL
INC HL
INC B
INC HL
INC HL
INC B
; ¨¬ï í«¥¬¥­â  ®¡ê¥ªâ 
LD A,(color_array+24) ; 梥⠤¨ «. ®ª­ 
LD C,A
LD A,(DE)
ClRadL1:INC DE
CP "&"
JR NZ,ClRadN0
LD A,(color_array+25) ; 梥â hot-¡ãª¢ë ¤¨ «. ®ª­ 
LD C,A
LD A,(DE)
INC DE
LD (HL),A
INC HL
LD A,(HL)
AND 0F0h
OR C
LD (HL),A
INC HL
LD A,(color_array+24) ; 梥⠤¨ «. ®ª­ 
LD C,A
INC B
LD A,(DE)
INC DE
ClRadN0:LD (HL),A
INC HL
LD (HL),C
INC HL
INC B
LD A,(DE)
OR A
JR NZ,ClRadL1
INC DE
LD A,(IX+5) ; Current Y pos
ADD A,(IX+1) ; from begin screen
LD (IY+0),A
INC IY
EX DE,HL
ld a,(hl)
ld (iy+0),a ; ᪥­-ª®¤ hot-¡ãª¢ë
inc hl
inc iy
LD C,(HL)
INC HL
LD B,(HL)
INC HL
LD A,(BC)
LD (IY+0),A ; ï祩ª 
INC IY
LD (IY+0),C ; bc= ¤à¥á ï祩ª¨
INC IY
LD (IY+0),B
INC IY
POP BC
OR A
LD A," "
JR Z,$+4
LD A,"x"
LD (BC),A
INC (IX+5)
LD A,(HL)
OR A
JP NZ,ClRadLp
LD (IY+0),80h ; End tab claster
INC IY
INC HL
; á®åà. à §¬¥à â ¡«¨æë ¢ ’ ¡«¨æ¥ ®¡ê¥ªâ®¢
push iy
exx
pop hl
pop de
or a
sbc hl,de ; ¤«¨­  â ¡«¨æë "Check Box"
ld a,l
ld (de),a ; DialTab+5
exx
ld a,1
ld (SavElem+1),a ; ¯¥à¢ë© í«¥¬¥­â
ret
;-----------------------------------------------------------
; <20> ç «ì­ë© 䮪ãá ­  ®¡ê¥ªâ "Check Box" ¨«¨ "Radio Button"
;-----------------------------------------------------------
ClastI: ld de,color_array+24 ; 70h 梥⠤¨ «. ®ª®­
ld (set_dial_tmp_inv+1),de ; ­¥ "¢ë¤¥«ïâì" 梥⮬ 祪-¡®ªáë
ld e,(ix+2) ; Xo
inc e
ld d,(ix+4) ; Y
ld a,(ix+6) ; Xi name
sub e
ld c,a
call SetDialInv
ld hl,color_array+26
ld (set_dial_tmp_inv+1),hl ; ¢®ááâ. ï祩ªã
push ix
pop hl
ld de,7
add hl,de
ld a,(ix+7) ; Y ¯®«®¦. 1-£® í«¥¬¥­â  ª« áâ¥à 
ld (hl),a ; Y pos check button
jp SetClasInv ; ¢ë¤¥«¨âì í«¥¬¥­â ®¡ê¥ªâ 
;-------------------------------------------------
; “§­ âì á®áâ®ï­¨¥ ï祩ª¨ ª« áâ¥à 
;-------------------------------------------------
GetClsData:
push ix
pop hl
ld bc,7
add hl,bc ; Begin claster elements
GetDtLp:inc hl ; Y pos
inc hl ; ᪥­-ª®¤ hot-¡ãª¢ë
ld a,(hl) ; ï祩ª 
inc hl
ld e,(hl) ; de=¤à¥á ï祩ª¨
inc hl
ld d,(hl)
inc hl
ld (de),a
bit 7,(hl) ; 7bit-End claster
jr z,GetDtLp
ret
;=====================================================================
;
; Ž¡à ¡®â稪 ᮡë⨩ ®¡ê¥ªâ®¢ "Check Box" ¨ "Radio Button"
;
;=====================================================================
EvClasterBut:
ld hl,what
ld a,(hl)
inc hl
cp evMouseFr
jr z,ECmouse ; Mouse fire
cp evKeyboard
jr z,ECkeys ; Key press
cp evCombKey
jp z,ECcombK ; Key press
ret
; ‘®¡ë⨥ - Œë誠
ECmouse:LD E,(HL) ; X pos
INC HL
LD D,(HL) ; Y pos
LD A,E
BIT 7,(IX+2)
JR NZ,$+6
CP (IX+2) ; Xo left pos
RET C ; <
BIT 7,(IX+3)
RET NZ
CP (IX+3) ; Xi right pos
RET NC ; >
LD A,D
CP (IX+4) ; Yo left pos
RET C ; <
CP (IX+5) ; Yi right pos
RET NC ; >
xor a
LD (ECnext+1),a
DEC A
LD (SaveA1+1),a ; Begin element claster
PUSH IX
POP HL
INC HL
inc hl
ld bc,5 ; len element claster
LD E,B ; number element
LD A,D
EClsLp1:ADD HL,BC
BIT 7,(HL)
JP NZ,SelClas ; Elem not found
INC E
CP (HL) ; Compare with Y pos elem
JR NZ,EClsLp1
JR CSelNxt
; ‘®¡ë⨥ - ®¡ëç­ ï ª« ¢¨è 
ECkeys: xor a
ld (ECnext+1),a
dec a
ld (SaveA1+1),a ; Begin element claster
ld a,(hl) ;+1 what
cp 20h ; ¯à®¡¥«
jr z,ECspace
bit 7,(ix+1)
jr nz,ECkeyN ; ®¡ê¥ªâ 㦥 ¢ë¤¥«¥­
cp 9 ; Tab
jp z,SelCls0 ; If tab then select my
ECkeyN: inc hl
ld a,(hl) ;+2 what ᪥­-ª®¤
push ix
pop hl
inc hl
inc hl
ld bc,5 ; Len elements
ld e,b
ECkeyLp:add hl,bc
bit 7,(hl)
ret nz
inc e
inc hl
cp (hl) ; hot-key element
dec hl
jr nz,ECkeyLp
CSelNxt:bit 7,(ix+1)
jp nz,CSelect ; ®¡ê¥ªâ 㦥 ¢ë¤¥«¥­
jp SelCls1
; Ž¡à ¡®âª  ¯à®¡¥« 
ECspace:BIT 7,(IX+1)
RET Z ; not select
LD A,(SavElem+1)
OR A
JR NZ,ECspc1
INC A
LD (SavElem+1),A
ECspc1: LD (ECnext+1),A
PUSH IX
POP HL
INC HL
inc hl
ld de,5
LD B,A
ADD HL,DE ; find elem.label
DJNZ $-1
JP ECnext ; change
; Šãàá®à­ë¥ ª« ¢¨è¨
ECcombK:bit 7,(ix+1)
jr nz,ECcombn ; ®¡ê¥ªâ 㦥 ¢ë¤¥«¥­
ld b,(hl) ;+1 what
inc hl
ld a,(hl) ;+2 what
cp 56h ; ªãàá®à ¢¯à ¢®
jp z,SelCls0
push ix
ld e,(ix+0) ; à §¬¥à â ¡«¨æë "Input Line"
ld d,0
add ix,de
bit 7,(ix+0)
pop ix
ret z ; ¥é¥ ­¥ ª®­¥æ ®¡ê¥ªâ®¢
cp 54h ; ªãàá®à ¢«¥¢®
jp z,SelCls0
ld a,b
and 00111111b ; ¡¨âë Ctrl, Alt
ret nz
ld a,(hl) ;+2 what
cp 15+80h ; Tab ᪥­-ª®¤+80h
ret nz
jp SelCls0 ; If tab then select my
;
ECcombn:xor a
ld (ECnext+1),a ; Flag change buttons
inc hl
ld a,(hl) ;+2 what
cp 58h ; ¢¢¥àå
jr z,ECup
cp 54h ; ¢«¥¢®
jr z,ECup
cp 52h ; ¢­¨§
jr z,ECdown
cp 56h ; ¢¯à ¢®
ret nz
; ªãàá®à ¢­¨§
ECdown: PUSH IX
POP HL
INC HL
inc hl
ld e,l
ld d,h
ld bc,5
LD A,(SavElem+1)
OR A
JR NZ,$+3
INC A
INC A ; increment element
LD (SavElem+1),A
ECcmlp: ADD HL,BC ; find label
BIT 7,(HL)
CALL NZ,EndClst ; table is over
DEC A
JR NZ,ECcmlp
CALL ResClasInv ; Res inver elem
JP Pcurs ; next invert
; Get begin table elem
EndClst:EX DE,HL
ADD HL,BC ; table is begin
LD A,1
LD (SavElem+1),A ; first elem.
RET
; Šãàá®à ¢¢¥àå
ECup: PUSH IX
POP HL
INC HL
inc hl
ld de,5
LD A,(SavElem+1)
OR A
JR NZ,$+3
INC A
DEC A ; decrement cur.elem.
CALL Z,BegClst
LD (SavElem+1),A
LD B,A
ADD HL,DE ; find label
DJNZ $-1
CALL ResClasInv ; Res inver elem
JR Pcurs ; next invert
; Get end table elem
BegClst:PUSH HL
SUB A
DEC A
INC A
ADD HL,DE ; find nember end element
BIT 7,(HL)
JR Z,$-4
POP HL
RET ; A=end element
; selected claster
SelClas:BIT 7,(IX+1)
JR NZ,SaveA1 ; NZ-is select
SelCls0:ld e,0
SelCls1:LD A,E
LD (SaveA1+1),A
call MoveObj
call ResDialInv ; Res orevios invert
LD IX,DialTab+5
SaveA1: LD A,0
INC A
JR Z,EClexit ; Element not found
DEC A
LD (SavElem+1),A
LD (ECnext+1),A
JR CButton ; Change buttons
; ‘®¡ë⨥ - Œë誠 (¢ ¢ë¡à ­­®¬ ª« áâ¥à¥)
CSelect:LD A,1
LD (ECnext+1),A
LD A,(SavElem+1)
CP E
JR Z,ECnext
LD A,E
LD (SavElem+1),A
CALL ResClasInv ; Res inver elem
CButton:PUSH IX
POP HL
INC HL
inc hl
ld de,5
SavElem:LD A,0
OR A
JR NZ,$+3
INC A
LD B,A
ADD HL,DE
DJNZ $-1
Pcurs: CALL SetClasInv ; Set inver elem
ECnext: ld a,0
or a
call nz,ChangeB
EClexit:ld hl,what ; Event claster exit
ld (hl),evNothing
jp get_fire
;---------------------------------------------------------------------
; ˆ§¬¥­¥­¨¥ í«¥¬¥­â®¢ CheckBox-  ¨«¨ Radio-ª­®¯®ª
;
; ¢å®¤: HL-Address claster element label
;---------------------------------------------------------------------
ChangeB:LD A,(IX+1)
RES 7,A
CP ClsCheckBox
JP Z,ChangeR ; ¨§¬¥­¨âì CheckBox
; ˆ§¬¥­¨âì Radio-ª­®¯ªã
LD E,L
LD D,H
PUSH IX
POP HL
LD BC,7
ADD HL,BC
PUSH HL ; Save cur.elem
ChangL1:INC HL ; Begin elements claster
INC HL
;INC HL
LD (HL),B ; (Ceil)=0
INC HL
INC HL
INC HL
BIT 7,(HL)
JR Z,ChangL1
EX DE,HL ; HL=Current element claster
INC B
INC HL
INC HL
INC HL
LD (HL),B ; Cur.elem=1
INC HL
INC HL
INC HL
POP HL ; Reset begin elem table
IN A,(SLOT3)
PUSH AF
LD A,(page_dial_screen)
OUT (SLOT3),A
ChangL2:LD D,(HL) ; Y pos
INC HL
INC HL
;INC HL ;?
LD A,(HL) ; Address ceil
INC HL
INC HL
INC HL
LD E,(IX+2) ; X ¯®«®¦. ""
INC E
PUSH IX
PUSH DE
LD IX,DialData
EX AF,AF'
LD A,E
SUB (IX+0)
LD C,A
LD A,D
SUB (IX+1)
LD B,A
CALL GetPutA
EX AF,AF'
LD C,A
OR A
LD A," "
JR Z,$+4
LD A,""
LD (DE),A
POP DE
POP IX
LD A,D
CP 31
JR NC,cl1
BIT 7,E
JR NZ,cl1
LD A,E
CP 80
JR NC,cl1
PUSH HL
LD A,C
PUSH AF
LD C,84h ; Set position print
RST 08h
POP AF
OR A
LD A," "
JR Z,$+4
LD A,""
LD BC,0182h
RST 08h ; Print on/off
POP HL
cl1: BIT 7,(HL)
JR Z,ChangL2
CALL ResILCr ; Res cursor
CALL PILCurs ; Set cursor
EI
POP AF
OUT (SLOT3),A
RET
;-------------------------------------------------
; ˆ§¬¥­¥­¨¥ í«¥¬¥­â  CheckBox- 
;-------------------------------------------------
ChangeR:
IN A,(SLOT3)
PUSH AF
LD A,(page_dial_screen)
OUT (SLOT3),A
LD D,(HL) ; Y pos
INC HL
INC HL
LD A,(HL) ; ï祩ª 
XOR 1
LD (HL),A
INC HL
INC HL
INC HL
LD E,(IX+2) ; X ¯®«®¦. "x"
INC E
PUSH IX
PUSH DE
LD IX,DialData
EX AF,AF'
LD A,E
SUB (IX+0)
LD C,A
LD A,D
SUB (IX+1)
LD B,A
CALL GetPutA
EX AF,AF'
LD C,A
OR A
LD A," "
JR Z,$+4
LD A,"x"
LD (DE),A
POP DE
POP IX
LD A,D
CP 31
JR NC,cl2
BIT 7,E
JR NZ,cl2
LD A,E
CP 80
JR NC,cl2
LD A,C
PUSH AF
LD C,84h ; Set position print
RST 08h
POP AF
OR A
LD A," "
JR Z,$+4
LD A,"x"
LD BC,0182h
RST 08h ; Print
cl2: CALL ResILCr
CALL PILCurs
EI
POP AF
OUT (SLOT3),A
RET

614
OBJS/UMENU.ASM Executable file
View File

@ -0,0 +1,614 @@
; #C000+#2800=#E800
; <20>ãä¥àë User-¤ ­­ëå
array_user1 equ 0E800h ; 26*2 ¬ áᨢ 㪠§. ­  ª®¬-áâப¨
array_user2 equ array_user1+(26*2) ; 72*56 ®¯¨á â¥«ì ¯ã­ªâ®¢ ¬¥­î
; + 1 ¡ ©â ¯®¤ ª®­¥æ ®¯¨á â¥«ï
array_user3 equ array_user2+(72*26)+1 ; 71*26 ¬ áᨢ ª®¬-áâப
; ®áâ â®ª ¡ ­ª¨ ¯®á«¥ ¢á¥£® ¬ áᨢ  #0944 ¡ ©â.
;-----------------------------------------------------------
; ‚ë§®¢ Œ¥­î <20>®«ì§®¢ â¥«ï
;-----------------------------------------------------------
user_menu:
ld a,(enable_mnu_file) ; ä« £ ­ «¨ç¨ï mnu-ä ©« 
or a
ret z ; ­¥â
ld hl,user_table ; ®¯¨á â¥«ì ¬¥­î (mod1)
call put_user_menu ; ®âà¨á®¢ª  ¬¥­î
call get_fire ; § é¨â  ®â "§ «¨¯ ­¨ï" ¡ãâ®­®¢
call event_user_menu ; ®¡à ¡®â稪 ᮡë⨩ ¬¥­î
;
ld hl,what
ld a,(hl)
cp evCommand
ret nz
ld (hl),evRunComLine ; ᮡë⨥ "®âà ¡®â âì ª®¬-áâபã"
jp get_fire
;-----------------------------------------------------------
; <20>à®à¨á®¢ª  ¬¥­î ¯®«ì§®¢ â¥«ï.
; <20>®«®¦¥­¨¥ ¬¥­î ®¯à¥¤¥«ï¥âáï è¨à¨­®© ¨ ç¨á«®¬ ¯ã­ªâ®¢.
; ’ ¡«¨æ  ¬¥­î:
; <20>®«®¦¥­¨¥ ®ª­  ¬¥­î:
; +0 - Xo «¥¢ë© ªà ©
; +1 - Xi ¯à ¢ë© ªà ©
; +2 - Yo «¥¢ë© 㣮«
; +3 - Yi ¯à ¢ë© 㣮«
; +4 - <20>®«®¦¥­¨¥ ¯ã­ªâ  ¬¥­î:
; +0 - Xo «¥¢®¥
; +1 - Xi ¯à ¢®¥
; +2 - Y ¯®«®¦.
; +3 - hot-¡ãª¢ 
;-----------------------------------------------------------
; ¢å®¤: hl=®¯¨á â¥«ì ¬¥­î
;-----------------------------------------------------------
put_user_menu:
ld a,1
ld (CurMBox),a ; ­®¬¥à ¯ã­ªâ  ¬¥­î
push iy
ld iy,BoxTabl ; Generes MenuBox mouse table
ld ix,BoxData
ld a,(page_sys_screen) ; áâà. user-¤ ­­ëå
out (SLOT3),a
ld e,(hl)
inc hl
ld d,(hl)
inc hl
ld (usermenu_title+1),de ;  ¤à¥á § £®«®¢ª  ®ª­ 
ld a,(hl) ;  ¤à¥á ®¯¨á â¥«ï ⥪. ¬¥­î
ld (ix+0),a ; á®åà.  ¤à¥á ®¯¨á â¥«ï
inc hl
ld h,(hl)
ld (ix+1),h ;
ld l,a
call GetLenB1 ; get in DE len Y,X MenuBox
; X 業â஢ª  ¬¥­î
ld a,80 ; è¨à¨­  ®ª­ 
sub e
srl a ; /2
ld (iy+0),a ; Xo ¯®«®¦. ®ª­  ¬¥­î
ld b,a
inc a
ld (ix+2),a ; Xo ¯®«®¦. ¯ã­ªâ  ¬¥­î
ld a,e ; è¨à¨­  ®ª­  (¡¥§ ⥭¨)
sub 2
ld (ix+5),a ; è¨à¨­  ®ª­  ¡¥§ à ¬ª¨
ld a,e
add a,b ; + Xo ¯®«®¦. ®ª­  ¬¥­î
ld (iy+1),a ; X ¯à ¢ë© ªà © ®ª­  ¬¥­î
dec a
ld (ix+3),a ; Xi ¯à ¢ë© ªà © ¯ã­ªâ  ¬¥­î
; Y 業â஢ª  ¬¥­î
ld a,30 ; ¢ëá®â  ®ª­ 
sub d
srl a ; /2
ld (iy+2),a ; Yo ¯®«®¦. ®ª­  ¬¥­î
ld (ix+4),a ; Temp Y posit for element box
ld b,a
ld a,d ; ¢ëá®â  ®ª­  (¡¥§ ⥭¨)
add a,b ; Yi (+ Y ¯®«®¦. ®ª­  ¬¥­î)
ld (iy+3),a
call SaveBox ; á®åà. íªà ­ ¯®¤ ¡ã¤ã騬 ®ª­®¬
in a,(SLOT3)
push af
ld a,(page_dial_screen) ; Page buffer
out (SLOT3),a
; ­ ç «® ¢áâ ¢ª¨ ®ª­  á ⥭ìî ¢ ¡ãä¥à
ld hl,LC000+MaxDialWin
ld bc,4
add iy,bc ;  ¤à¥á ®¯¨á â¥«ï ¬¥­î
exx
ld hl,LC000
ld a,(ix+5) ; è¨à¨­  ®ª­ 
inc a
inc a
add a,a
ld e,a
ld d,0
add hl,de
exx
ld a,(color_array+15) ; 梥⠢¥àâ. ¬¥­î
ld c,a
; 業â஢ª  § £®«®¢ª 
push hl
ld de,(usermenu_title+1) ;  ¤à¥á § £®«®¢ª  ®ª­ 
ld a,(de) ; ¤«¨­  § £®«®¢ª 
ld b,a
ld a,(ix+5) ; è¨à¨­  ®ª­ 
sub b
srl a ; /2
add a,a ; ãç¥áâì  âਡãâë (१ã«ìâ â ¢á¥£¤  ç¥â­ë©)
ld e,a
ld d,0
add hl,de
ld (usermenu_addr+1),hl ;  ¤à¥á ¢áâ ¢ª¨
pop hl
; à ¬ª  ®ª­ 
ld (hl),"É" ; «¥¢ë© ¢¥àå. 㣮«
inc hl
ld (hl),c ; 梥â
inc hl
ld b,(ix+5) ; è¨à¨­  ®ª­ 
ld a,"Í"
ld (hl),a
inc hl
ld (hl),c
inc hl
djnz $-4
ld (hl),"»" ; ¯à ¢ë© ¢¥àå. 㣮«
inc hl
ld (hl),c
inc hl
;
push hl
usermenu_title:
ld de,0 ;  ¤à¥á â¨â«  ®ª­ 
usermenu_addr:
ld hl,0 ;  ¤à¥á ¢áâ ¢ª¨
ld a,(de)
ld b,a ; ¤«¨­  áâப¨
inc de
ld (hl)," "
inc hl
inc hl
ld a,(de)
ld (hl),a
inc hl
inc hl ;  âਡãâ
inc de
djnz $-5
ld (hl)," "
pop hl
;
ld b,3
call copy_cell
exx
ld a,(hl)
inc hl
add hl,de
exx
ld (hl),a
inc hl
ld e,(ix+0) ;; de= ¤à¥á ᯨ᪠ ¯ã­ªâ®¢
ld d,(ix+1)
; 横« ¢ë¢®¤  ¯ã­ªâ®¢ ¬¥­î
usermenu_loop:
inc (ix+4) ; 㢥«¨ç¨âì Y-¯®«®¦. ¯ã­ªâ  ¬¥­î
call get_user_byte ; ¢§ïâì ¡ ©â ¨§ áâà. user-¤ ­­ëå
cp -2 ; à §¤¥«¨â¥«ì
jr nz,usermenu1__
; ¢áâ ¢¨âì à §¤¥«¨â¥«ì ¯ã­ªâ®¢
inc de
ld (hl),"Ç"
inc hl
ld (hl),c
inc hl
ld b,(ix+5) ; è¨à¨­  ¯ã­ªâ 
ld a,"Ä"
ld (hl),a
inc hl
ld (hl),c
inc hl
djnz $-4
ld (hl),"¶"
jr usermenu3__
usermenu1__:
cp -1 ; ª®­¥æ ®¯¨á â¥«ï ?
jp z,usermenu4__ ; ¤ 
ld a,(ix+2)
ld (iy+0),a ;+0 Xo coord
inc iy
ld a,(ix+3)
ld (iy+0),a ;+1 Xi coords
inc iy
ld a,(ix+4)
ld (iy+0),a ;+2 Y coords
inc iy
ld (hl),"º"
inc hl
ld (hl),c
inc hl
ld b,2 ; 2 ¯à®¡¥«  ¢ ­ ç «¥ ¯ã­ªâ 
ld (hl)," "
inc hl
ld (hl),c
inc hl
djnz $-5
inc b ; b=1
call get_user_byte ; ¢§ïâì ¡ ©â ¨§ áâà. user-¤ ­­ëå
usermenu2__:
inc de
cp "&"
call z,Bhotkey2__ ; ¢áâ ¢¨âì hot-¡ãª¢ã
ld (hl),a ; Put name element
inc hl
ld (hl),c
inc hl
inc b
call get_user_byte ; ¢§ïâì ¡ ©â ¨§ áâà. user-¤ ­­ëå
or a ; ª®­¥æ ¨¬¥­¨ ?
jr nz,usermenu2__
inc de ; de=ï祩ª  ᪥­-ª®¤  ¯ã­ªâ 
call get_user_byte ; ¢§ïâì ¡ ©â ¨§ áâà. user-¤ ­­ëå
ld (iy+0),a ;+3 ᪥­-ª®¤ hot-ª« ¢¨è¨
inc iy
inc de
ld a,(ix+5) ; è¨à¨­  ⥪. ¯ã­ªâ 
dec a
sub b
ld b,a
ld (hl)," " ; § ¯®«­¨âì ®áâ â®ª ¯ã­ªâ 
inc hl
ld (hl),c
inc hl
djnz $-5
ld (hl),"º"
usermenu3__:
inc hl
ld (hl),c
inc hl
exx
ld a,(hl)
inc hl
inc hl
exx
ld (hl),a
inc hl
ld (hl),color_shadow ; 梥â ⥭¨
inc hl
exx
ld a,(hl)
inc hl
inc hl
add hl,de
exx
ld (hl),a
inc hl
ld (hl),color_shadow ; 梥â ⥭¨
inc hl
jp usermenu_loop ; ­ § ¤ ¢ 横«
;
usermenu4__:
ld (iy+0),80h ; ª®­¥æ â ¡«¨æë ¯ã­ªâ®¢
ld (hl),"È"
inc hl
ld (hl),c
inc hl
ld b,(ix+5)
ld a,"Í"
ld (hl),a
inc hl
ld (hl),c
inc hl
djnz $-4
ld (hl),"¼"
inc hl
ld (hl),c
inc hl
; ¢áâ ¢¨âì 2 ⥭¨ 㣫  "Ù"
ld b,2
call print_shadow
; ¢áâ ¢¨âì ­¨¦­îî ⥭ì
ld b,4
call copy_cell ; ᪮¯¨à. ï祩ª¨
ld b,(ix+5) ; Full Len box
inc b
inc b
call print_shadow
pop af
out (SLOT3),a
call PutBox
pop iy
jp USetBoxI ; Set box invert
;-------------------------------------------------
; “áâ ­®¢¨âì æ¢¥â hot-¡ãª¢ë ¯ã­ªâ  user-¬¥­î
;-------------------------------------------------
Bhotkey2__:
call get_user_byte ; ¢§ïâì ¡ ©â ¨§ áâà. user-¤ ­­ëå
ld (hl),a ; hot-¡ãª¢ã ¢ ¡ãä¥à
inc hl
inc de
push de
ld a,(color_array+17) ; 梥â hot-¡ãª¢ë ¬¥­î
and 0Fh
ld e,a
ld a,(color_array+15) ; 梥⠢¥àâ. ¬¥­î
and 0F0h
or e
ld (hl),a ;  âਡãâ
pop de
inc hl
call get_user_byte ; ¢§ïâì ¡ ©â ¨§ áâà. user-¤ ­­ëå
inc de
inc b
ret
;-----------------------------------------------------------
; ‚ëç¨á«¨âì è¨à¨­ã ⥪ã饣® ®ª­  ¢¥àâ. ¬¥­î
;
; ¢å®¤: hl=®¯¨á â¥«ì ¬¥­î
; ¢ë室: de=¢ëá®â /è¨à¨­  ®ª­ 
;----------------------------------------------------------
GetLenB1:
ld de,0207h ; Y/X à §¬¥àë
ld b,e
dec b
GetL1: ld a,(hl)
inc hl
cp -1 ; ª®­¥æ ®¯¨á â¥«ï ?
ret z
cp -2 ; à §¤¥«¨â¥«ì ¯ã­ªâ®¢ ?
jr z,AddLn
GetL2: inc b
GetL3: ld a,(hl)
inc hl
cp "&" ; hot-¡ãª¢ 
jr z,GetL3
or a ; ª®­¥æ ­ §¢ ­¨ï ¯ã­ªâ  ?
jr nz,GetL2 ; ­¥â
inc hl ; ¯à®©â¨ ᪥­-ª®¤
ld a,b
cp e
jr c,AddLn
ld e,b
AddLn: inc d
ld b,6 ; b=e-1
jr GetL1
; ‚§ïâì ¡ ©â ¨§ áâà ­¨æë user-¤ ­­ëå
; ¢å®¤: de= ¤à¥á ¤ ­­ëå
get_user_byte:
in a,(SLOT3)
push af
ld a,(page_sys_screen) ; áâà. user-¤ ­­ëå
out (SLOT3),a
ld a,(de)
ex af,af'
pop af
out (SLOT3),a ; ¢®ááâ. áâà.
ex af,af'
ret
;-----------------------------------------------------------
;
; Ž¡à ¡®â稪 ᮡë⨩ Œ¥­î <20>®«ì§®¢ â¥«ï
;
;-----------------------------------------------------------
event_user_menu:
call handle_event ; ç¨â ¥¬ ᮡë⨥
ld hl,what
ld de,event_user_menu
push de
ld a,(hl) ;+0 ã§­ âì ᮡë⨥
inc hl
cp evMouseFr ; ­ ¦ âë ¡ãâ®­ë ¬ë誨
jp z,user_menu_mouse
cp evKeyboard ; ­ ¦ âë ®¡ëç­ë¥ ª« ¢¨è¨
jr z,user_menu_keys
cp evCombKey ; ­ ¦ âë ªãàá. ª« ¢¨è¨ ¨ á«ã¦.
jr z,user_menu_ckeys
ret
;
user_menu_exit:
call CloseBx ; § ªàëâì ¬¥­î
pop de ; ¢®ááâ. ¡ « ­á á⥪ 
ld hl,what
ld (hl),evNothing ; "­¥â ᮡë⨩"
ret
;-------------------------------------------------
; Ž¡ëç­ë¥ ª« ¢¨è¨
;-------------------------------------------------
user_menu_keys:
ld a,(hl) ;+1 ª®¤ ª« ¢¨è¨
cp 1Bh ; Esc
jr z,user_menu_exit
cp 0Dh ; Enter
jr nz,user_menu_keys1
ld a,(CurMBox)
ld b,a
ld ix,BoxTabl ; ¯®¨áª ¯ã­ªâ  ¬¥­î
ld de,4
add ix,de
djnz $-2
jp UBxEnt
;
user_menu_keys1:
inc hl
ld a,(hl) ;+2 ᪥­-ª®¤ ª« ¢¨è¨
ld ix,BoxTabl ; à ¡®ç ï â ¡«¨æ  ¬¥­î
ld bc,4
ld h,b
user_menu_keys2:
inc h
add ix,bc
bit 7,(ix+0)
ret nz ; ª®­¥æ â ¡«¨æë ¯ã­ªâ®¢
cp (ix+3) ; ᪥­-ª®¤ hot-ª« ¢¨è¨
jr nz,user_menu_keys2
jp UBxHotEx
;-------------------------------------------------
; Šãàá®à­ë¥ ª« ¢¨è¨ ¨ F10
;-------------------------------------------------
user_menu_ckeys:
inc hl
ld a,(hl) ;+2 what
cp 44h ; F10
jr z,user_menu_exit
cp 58h ; ¢¢¥àå
jr z,UMBup
cp 52h ; ¢­¨§
jr z,UMBdown
cp 54h ; ¢«¥¢®
jr z,UMBhome
cp 56h ; ¢¯à ¢®
jr z,UMBend
cp 59h ; PageUp
jr z,UMBhome
cp 53h ; PageDown
jr z,UMBend
cp 57h ; Home
jr z,UMBhome
cp 51h ; End
jr z,UMBend
ret
; Šãàá®à ¢¢¥àå
UMBup: ld a,(CurMBox)
dec a
jr nz,UMBupNxt
ld ix,BoxTabl ; à ¡®ç ï â ¡«¨æ  ¬¥­î
ld bc,4
ld a,b
dec a
UMBupLp:inc a ; ¯®¨áª ¯®á«¥¤­¥£® í«¥¬¥­â 
add ix,bc
bit 7,(ix+0)
jr z,UMBupLp
UMBupNxt:
ld (CurMBox),a
ld b,a
ld ix,BoxTabl ; à ¡®ç ï â ¡«¨æ  ¬¥­î
ld de,4
add ix,de
djnz $-2
push ix
call ResBoxI
call USetBoxI
pop ix
ret
; Šãàá®à ¢­¨§
UMBdown:ld a,(CurMBox)
inc a
ld ix,BoxTabl ; à ¡®ç ï â ¡«¨æ  ¬¥­î
ld bc,4
ld h,b ; â¥áâ ­  ¯®á«¥¤­¨© í«¥¬¥­â
UMBdnLp:inc h
add ix,bc
bit 7,(ix+0)
jr z,UMBdnLp
cp h
jr nz,$+4
; Home ¢ ­ ç «® ᯨ᪠
UMBhome:ld a,1
jr UMBupNxt
; End ¢ ª®­¥æ ᯨ᪠
UMBend: ld a,(CurMBox)
ld h,a
ld ix,BoxTabl ; à ¡®ç ï â ¡«¨æ  ¬¥­î
ld bc,4
ld a,b
dec a
UMBendLp:
inc a ; ¯®¨áª ¯®á«¥¤­¥£® í«¥¬¥­â 
add ix,bc
bit 7,(ix+0)
jr z,UMBendLp
cp h
jr nz,UMBupNxt
ret
;-------------------------------------------------
; ‘®¡ëâ¨ï ¬ë誨
;-------------------------------------------------
user_menu_mouse:
ld e,(hl) ;+1 X coord
inc hl
ld d,(hl) ;+2 Y coord
; ¯à®¢¥àª  ­  ª®®à¤. ¬ë誨 ¨ ®ª­ 
ld ix,BoxTabl ; à ¡®ç ï â ¡«¨æ 
ld a,e
cp (ix+0)
jp c,user_menu_exit ; < Xo
cp (ix+1)
jp nc,user_menu_exit ; > Xi
ld a,d
cp (ix+2)
jp c,user_menu_exit ; < Yo
cp (ix+3)
jp nc,user_menu_exit ; > Yi
ld bc,4
ld h,b
usermenu_mouse_loop:
inc h
add ix,bc
bit 7,(ix+0) ; ª®­¥æ ®¯¨á â¥«ï ¬¥­î ?
ret nz ; ¤ 
ld a,d
cp (ix+2)
jr nz,usermenu_mouse_loop
ld a,e ; ¯®¨áª ¯ã­ªâ  ¬¥­î
cp (ix+0)
jr c,usermenu_mouse_loop ; < Xo
cp (ix+1)
jr nc,usermenu_mouse_loop ; > Xi
UBxHotEx:
ld a,(CurMBox)
cp h
jr z,UBxEnt ; ãáâ. ¯ã­ªâ ¬¥­î
ld a,h
ld (CurMBox),a
push af
call ResBoxI
call USetBoxI
pop af
halt
halt
halt
halt
; ¢ë¯®«­. ¯ã­ªâ  ¯® <Enter> ¨«¨ ¬ë誥
UBxEnt: dec a
ld hl,what
ld (hl),evCommand ; ãáâ. ᮡë⨥ "ª®¬ ­¤ "
; ᪮¯¨à. ª®¬-áâப㠢 ¡ãä¥à
add a,a
ld e,a
ld d,0
ld a,(page_sys_screen);; ; áâà. user-¤ ­­ëå
out (SLOT3),a;;
ld hl,array_user1 ; â ¡«¨æ  㪠§ â¥«¥© ­  ª®¬-áâப¨
add hl,de
ld e,(hl)
inc hl
ld d,(hl)
ex de,hl ; hl=®âªã¤ 
ld de,work_buffer+127;255 ; ªã¤ 
call copy_string ; ᪮¯¨à. áâபã (á ­ã«¥¬)
; § ªàëâì ¬¥­î
call CloseBx
pop de
ret ; ¢ë©â¨ ¨§ ¬¥­î
;-------------------------------------------------
; ˆ­¢¥àâ¨à®¢ ­¨¥ ¯ã­ªâ  ¬¥­î
;-------------------------------------------------
USetBoxI:
ld c,0
ld a,(CurMBox)
dec a
add a,a ;1+1=2
jp SetBoxI1

2417
SHELL.ASM Executable file

File diff suppressed because it is too large Load Diff

159
SPEC/FUNCS.ASM Executable file
View File

@ -0,0 +1,159 @@
;=====================================================================
; <20> §¡®à ­®¬¥à®¢ ᯥª-ä㭪権
; ¢å®¤: c=­®¬¥à ä㭪樨
; ¢ë室: a=­®¬¥à ¡ ­ª¨ ¯à®æ¥¤ãàë (áâàãªâãàë) ¬¥­¥¤¦¥à 
; hl= ¤à¥á ¯à®æ¥¤ãàë ¬¥­¥¤¦¥à 
; CF - ¯à¨ ®è¨¡ª¥ (­¥¢¥à­ë© ­®¬¥à ä㭪樨)
;=====================================================================
spec_funcs:
push hl
ld l,c ; ­®¬¥à ª®¬ ­¤ë
ld h,SPEC_FUNC / 256 ; 256 ¬«. ¡ ©â  ¤à¥á®¢
ld c,(hl)
inc h ; 256 áâ. ¡ ©â  ¤à¥á®¢
ld h,(hl)
ld l,c ; £®â®¢ë©  ¤à¥á
ex (sp),hl ; ¢ á⥪ ¨
ret ; ¯¥à¥©â¨ ­  ­¥£®
; § £«ã誠
empty__:scf ; ­¥¢¥à­ë© ­®¬¥à ä㭪樨
ret
ds 100h - $ ; ¢ë஢­¨âì ­  £à ­¨æã 0100h
; ’ ¡«¨æ   ¤à¥á®¢ ä㭪権
; ¬«. ¡ ©âë  ¤à¥á®¢
SPEC_FUNC:
db empty__%256, empty__%256, empty__%256, empty__%256 ; 00..03
db empty__%256, empty__%256, empty__%256, empty__%256 ; 04..07
db empty__%256, empty__%256, empty__%256, empty__%256 ; 08..0B
db empty__%256, empty__%256, empty__%256, empty__%256 ; 0C..0F
db empty__%256, empty__%256, empty__%256, empty__%256 ; 10..13
db empty__%256, empty__%256, empty__%256, empty__%256 ; 14..17
db empty__%256, empty__%256, empty__%256, empty__%256 ; 18..1B
db empty__%256, empty__%256, empty__%256, empty__%256 ; 1C..1F
db empty__%256, empty__%256, empty__%256, empty__%256 ; 20..23
db empty__%256, empty__%256, empty__%256, empty__%256 ; 24..27
db empty__%256, empty__%256, empty__%256, empty__%256 ; 28..2B
db empty__%256, empty__%256, empty__%256, empty__%256 ; 2C..2F
db empty__%256, empty__%256, empty__%256, empty__%256 ; 30..33
db empty__%256, empty__%256, empty__%256, empty__%256 ; 34..37
db empty__%256, empty__%256, empty__%256, empty__%256 ; 38..3B
db empty__%256, empty__%256, empty__%256, empty__%256 ; 3C..3F
db empty__%256, empty__%256, empty__%256, empty__%256 ; 40..43
db empty__%256, empty__%256, empty__%256, empty__%256 ; 44..47
db empty__%256, empty__%256, empty__%256, empty__%256 ; 48..4B
db empty__%256, empty__%256, empty__%256, empty__%256 ; 4C..4F
db empty__%256, empty__%256, empty__%256, empty__%256 ; 50..53
db empty__%256, empty__%256, empty__%256, empty__%256 ; 54..57
db empty__%256, empty__%256, empty__%256, empty__%256 ; 58..5B
db empty__%256, empty__%256, empty__%256, empty__%256 ; 5C..5F
db empty__%256, empty__%256, empty__%256, empty__%256 ; 60..63
db empty__%256, empty__%256, empty__%256, empty__%256 ; 64..67
db empty__%256, empty__%256, empty__%256, empty__%256 ; 68..6B
db empty__%256, empty__%256, empty__%256, empty__%256 ; 6C..6F
db empty__%256, empty__%256, empty__%256, empty__%256 ; 70..73
db empty__%256, empty__%256, empty__%256, empty__%256 ; 74..77
db empty__%256, empty__%256, empty__%256, empty__%256 ; 78..7B
db empty__%256, empty__%256, empty__%256, empty__%256 ; 7C..7F
db empty__%256, empty__%256, empty__%256, empty__%256 ; 80..83
db empty__%256, empty__%256, empty__%256, empty__%256 ; 84..87
db empty__%256, empty__%256, empty__%256, empty__%256 ; 88..8B
db empty__%256, empty__%256, empty__%256, empty__%256 ; 8C..8F
db empty__%256, empty__%256, empty__%256, empty__%256 ; 90..93
db empty__%256, empty__%256, empty__%256, empty__%256 ; 94..97
db empty__%256, empty__%256, empty__%256, empty__%256 ; 98..9B
db empty__%256, empty__%256, empty__%256, empty__%256 ; 9C..9F
db empty__%256, empty__%256, empty__%256, empty__%256 ; A0..A3
db empty__%256, empty__%256, empty__%256, empty__%256 ; A4..A7
db empty__%256, empty__%256, empty__%256, empty__%256 ; A8..AB
db empty__%256, empty__%256, empty__%256, empty__%256 ; AC..AF
db empty__%256, empty__%256, empty__%256, empty__%256 ; B0..B3
db empty__%256, empty__%256, empty__%256, empty__%256 ; B4..B7
db empty__%256, empty__%256, empty__%256, empty__%256 ; B8..BB
db empty__%256, empty__%256, empty__%256, empty__%256 ; BC..BF
db empty__%256, empty__%256, empty__%256, empty__%256 ; C0..C3
db empty__%256, empty__%256, empty__%256, empty__%256 ; C4..C7
db empty__%256, empty__%256, empty__%256, empty__%256 ; C8..CB
db empty__%256, empty__%256, empty__%256, empty__%256 ; CC..CF
db empty__%256, empty__%256, empty__%256, empty__%256 ; D0..D3
db empty__%256, empty__%256, empty__%256, empty__%256 ; D4..D7
db empty__%256, empty__%256, empty__%256, empty__%256 ; D8..DB
db empty__%256, empty__%256, empty__%256, empty__%256 ; DC..DF
db empty__%256, empty__%256, empty__%256, empty__%256 ; E0..E3
db empty__%256, empty__%256, empty__%256, empty__%256 ; E4..E7
db empty__%256, empty__%256, empty__%256, empty__%256 ; E8..EB
db empty__%256, empty__%256, empty__%256, empty__%256 ; EC..EF
db empty__%256, empty__%256, empty__%256, empty__%256 ; F0..F3
db empty__%256, empty__%256, empty__%256, empty__%256 ; F4..F7
db empty__%256, empty__%256, empty__%256, empty__%256 ; F8..FB
db empty__%256, empty__%256, empty__%256, empty__%256 ; FC..FF
;
;0300h áâ. ¡ ©âë  ¤à¥á®¢
db empty__/256, empty__/256, empty__/256, empty__/256 ; 00..03
db empty__/256, empty__/256, empty__/256, empty__/256 ; 04..07
db empty__/256, empty__/256, empty__/256, empty__/256 ; 08..0B
db empty__/256, empty__/256, empty__/256, empty__/256 ; 0C..0F
db empty__/256, empty__/256, empty__/256, empty__/256 ; 10..13
db empty__/256, empty__/256, empty__/256, empty__/256 ; 14..17
db empty__/256, empty__/256, empty__/256, empty__/256 ; 18..1B
db empty__/256, empty__/256, empty__/256, empty__/256 ; 1C..1F
db empty__/256, empty__/256, empty__/256, empty__/256 ; 20..23
db empty__/256, empty__/256, empty__/256, empty__/256 ; 24..27
db empty__/256, empty__/256, empty__/256, empty__/256 ; 28..2B
db empty__/256, empty__/256, empty__/256, empty__/256 ; 2C..2F
db empty__/256, empty__/256, empty__/256, empty__/256 ; 30..33
db empty__/256, empty__/256, empty__/256, empty__/256 ; 34..37
db empty__/256, empty__/256, empty__/256, empty__/256 ; 38..3B
db empty__/256, empty__/256, empty__/256, empty__/256 ; 3C..3F
db empty__/256, empty__/256, empty__/256, empty__/256 ; 40..43
db empty__/256, empty__/256, empty__/256, empty__/256 ; 44..47
db empty__/256, empty__/256, empty__/256, empty__/256 ; 48..4B
db empty__/256, empty__/256, empty__/256, empty__/256 ; 4C..4F
db empty__/256, empty__/256, empty__/256, empty__/256 ; 50..53
db empty__/256, empty__/256, empty__/256, empty__/256 ; 54..57
db empty__/256, empty__/256, empty__/256, empty__/256 ; 58..5B
db empty__/256, empty__/256, empty__/256, empty__/256 ; 5C..5F
db empty__/256, empty__/256, empty__/256, empty__/256 ; 60..63
db empty__/256, empty__/256, empty__/256, empty__/256 ; 64..67
db empty__/256, empty__/256, empty__/256, empty__/256 ; 68..6B
db empty__/256, empty__/256, empty__/256, empty__/256 ; 6C..6F
db empty__/256, empty__/256, empty__/256, empty__/256 ; 70..73
db empty__/256, empty__/256, empty__/256, empty__/256 ; 74..77
db empty__/256, empty__/256, empty__/256, empty__/256 ; 78..7B
db empty__/256, empty__/256, empty__/256, empty__/256 ; 7C..7F
db empty__/256, empty__/256, empty__/256, empty__/256 ; 80..83
db empty__/256, empty__/256, empty__/256, empty__/256 ; 84..87
db empty__/256, empty__/256, empty__/256, empty__/256 ; 88..8B
db empty__/256, empty__/256, empty__/256, empty__/256 ; 8C..8F
db empty__/256, empty__/256, empty__/256, empty__/256 ; 90..93
db empty__/256, empty__/256, empty__/256, empty__/256 ; 94..97
db empty__/256, empty__/256, empty__/256, empty__/256 ; 98..9B
db empty__/256, empty__/256, empty__/256, empty__/256 ; 9C..9F
db empty__/256, empty__/256, empty__/256, empty__/256 ; A0..A3
db empty__/256, empty__/256, empty__/256, empty__/256 ; A4..A7
db empty__/256, empty__/256, empty__/256, empty__/256 ; A8..AB
db empty__/256, empty__/256, empty__/256, empty__/256 ; AC..AF
db empty__/256, empty__/256, empty__/256, empty__/256 ; B0..B3
db empty__/256, empty__/256, empty__/256, empty__/256 ; B4..B7
db empty__/256, empty__/256, empty__/256, empty__/256 ; B8..BB
db empty__/256, empty__/256, empty__/256, empty__/256 ; BC..BF
db empty__/256, empty__/256, empty__/256, empty__/256 ; C0..C3
db empty__/256, empty__/256, empty__/256, empty__/256 ; C4..C7
db empty__/256, empty__/256, empty__/256, empty__/256 ; C8..CB
db empty__/256, empty__/256, empty__/256, empty__/256 ; CC..CF
db empty__/256, empty__/256, empty__/256, empty__/256 ; D0..D3
db empty__/256, empty__/256, empty__/256, empty__/256 ; D4..D7
db empty__/256, empty__/256, empty__/256, empty__/256 ; D8..DB
db empty__/256, empty__/256, empty__/256, empty__/256 ; DC..DF
db empty__/256, empty__/256, empty__/256, empty__/256 ; E0..E3
db empty__/256, empty__/256, empty__/256, empty__/256 ; E4..E7
db empty__/256, empty__/256, empty__/256, empty__/256 ; E8..EB
db empty__/256, empty__/256, empty__/256, empty__/256 ; EC..EF
db empty__/256, empty__/256, empty__/256, empty__/256 ; F0..F3
db empty__/256, empty__/256, empty__/256, empty__/256 ; F4..F7
db empty__/256, empty__/256, empty__/256, empty__/256 ; F8..FB
db empty__/256, empty__/256, empty__/256, empty__/256 ; FC..FF

111
SPEC/VECT.ASM Executable file
View File

@ -0,0 +1,111 @@
; rst 00h
jp $+3
db -1
db -1
db -1
db -1
db -1
; RST 08h. BIOS calls
push af
ld a,0 ; ¢ª«. <20>‡“ <20>¨®á  ¢ 0-¥ ®ª­®
out (7Ch),a
pop af
ret
db 0C9h
; RST 10h. DOS calls
jp alt10 ; fm.asm
db -1
db -1
db -1
db -1
db -1
; RST 18h
jp alt18 ; fm.asm
db -1
db -1
db -1
db -1
db -1
; rst 20h
jp $+3
db -1
db -1
db -1
db -1
db -1
; rst 28h
rst28: push af
ld a,0 ; á®åà. page_module0
out (82h),a
pop af
jr spec_interrupt
; rst 30h
jp $+3
db -1
db -1
db -1
db -1
db -1
;
; RST 38h. Main Interrupt
jp $+3
di
push iy
push ix
push hl
push de
push bc
push af
ex af,af'
exx
push hl
push de
push bc
push af
;call show_clock ; ®â®¡à ¦¥­¨¥ ç á®¢
;di
ds 4;
pop af
pop bc
pop de
pop hl
exx
ex af,af'
pop af
pop bc
pop de
pop hl
pop ix
pop iy
ei
reti
db -1,-1,-1,-1,-1 ; ­  £à ­¨æã 0064h
;0064h
retn
db 0 ; 0066h (®â ­¥¬ áª. ¯à¥à뢠­¨ï ¢ IM0)
db 0
db 0
jp $-5
;================ Š®­¥æ ¡«®ª  ‚¥ªâ®à®¢ à¥áâ à⮢ =====================
;-------------------------------------------------
; ‚ë§®¢ ®¡à ¡®â稪  #28 à¥áâ àâ .
; ˆá¯®«ì§®¢ âì ᢮© á⥪.
;-------------------------------------------------
spec_interrupt:
ld (spc_stk+1),sp
ld sp,spec_stack
call spec_funcs ; ®âà ¡®âª  ä㭪樨
spc_stk:ld sp,0
jp rst28 ; ¢ª«. 0-î áâà. ä¬
ds 64
spec_stack: ; á⥪ ¡ ­ª¨

1
Shared_Includes Submodule

@ -0,0 +1 @@
Subproject commit a9f5915a3275f5ffbafa0994bb97c5846aab826c

3
VERSION.INC Executable file
View File

@ -0,0 +1,3 @@
; ‚¥àá¨ï ¬¥­¥¤¦¥à 
major_version equ 0 ; áâ. æ¨äà 
minor_version equ 8 ; ¬«. æ¨äà 

1
fix.! Executable file
View File

@ -0,0 +1 @@
<EFBFBD>ਠᬥ­¥ ¤¨áª  ­¥ ®¡­®¢«ï¥âáï ᢮¡. ¬¥áâ® ¤¨áª  ¢ á㬬 à­®© áâப¥.

13
readme.txt Executable file
View File

@ -0,0 +1,13 @@
„«ï ª®¬¯¨«ï樨 FM.EXE § ¯ãáâ¨âì ¡ â­¨ª "make.bat".
<EFBFBD>ਠ­¥®¡å®¤¨¬®áâ¨, ¢ ¡ â­¨ª å (load.bat, make.bat) ¯®¯à ¢¨âì
¯ãâì ª "asmplus.exe".
‘®àæë ¯®¯à ¢«¥­ë ¤«ï ᡮન ¢ ASMPlus.
- “¡à ­ (§ ª®¬¬¥­â à¥­) ¢¥áì ª®¤, ®â­®áï騩áï ª ¢ë¢®¤ã ᮤ¥à¦¨¬®£® ä ©« 
¢ ¯ ­¥«ì (Ctrl+Q).
- <20>ਪàã祭  ¢áâ ¢ª  ¯ã⥩ «¥¢®© ¨ ¯à ¢®© ¯ ­¥«¥© á®®â¢. ¯® Ctrl+[, Ctrl+].
- <20>ਪàã祭® ¯à®á⮥ ¨ £à㯯®¢®¥ 㤠«¥­¨¥ ä ©«®¢/¯ ¯®ª.
- <20>ਪàã祭® ¯¥à¥¨¬¥­®¢ ­¨¥ ä ©« /¯ ¯ª¨.

BIN
screens/screen01.gif Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
screens/screen02.gif Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
screens/screen03.gif Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

BIN
screens/screen04.gif Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
screens/screen05.gif Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
screens/screen06.gif Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

BIN
screens/screen07.gif Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

BIN
screens/screen08.gif Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
screens/screen09.gif Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB