File-Manager/MOD0/USERMENU.ASM
2025-04-04 00:37:36 +10:00

549 lines
9.2 KiB
NASM
Executable File
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

; Œ¥­î <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