mirror of
https://github.com/Tolik-Trek/File-Manager.git
synced 2026-06-15 01:11:36 +03:00
261 lines
6.4 KiB
NASM
Executable File
261 lines
6.4 KiB
NASM
Executable File
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 0
|
||
EXE_HEADER:
|
||
.START: DB "EXE" ; exe ID
|
||
DB 0 ; exe ¢¥àá¨ï
|
||
DWORD EXE_HEADER.SIZE ; ᬥé. ª®¤
|
||
DW end_loader-entry ; end-beg, ¯¥à¢¨çë© § £àã§ç¨ª
|
||
DW 0,0,0 ; १¥à¢
|
||
DW entry ; ¤à¥á § £à㧪¨ ª®¤
|
||
DW start ; ¤à¥á ¯¥à¥¤ ç¨ ã¯à ¢«¥¨ï
|
||
DW start ; ¤à¥á á⥪
|
||
;
|
||
BLOCK 10,' ' ; ‚ëà ¢¨¢ ¨¥ ¤«ï ªà ᨢ®£® ®â®¡à ¦¥¨ï ¢ HEX
|
||
BYTE 'The File Manager'
|
||
BYTE ' v ',str_version,' '
|
||
BYTE 'by Vasil Ivanov '
|
||
BYTE '(c) 2005-2007. '
|
||
BYTE ' Modified by '
|
||
BYTE ' Anatoliy '
|
||
BYTE ' Belyanskiy, '
|
||
BYTE ' Sprinter Team '
|
||
BYTE ' 2025. '
|
||
.END: ;
|
||
.SIZE EQU .END - .START
|
||
|
||
;
|
||
ORG #4100
|
||
entry: include "fview/viewer.asm"
|
||
|
||
tmp_sp_buffer: BLOCK 64 ; ¤«ï á⥪
|
||
|
||
; ‡ £àã§ç¨ª ”Œ
|
||
start: ; ®ç¨áâ¨âì ¡ãä¥à ª« ¢ë
|
||
LD BC,Dss.ScanKey*256+Dss.K_CLEAR
|
||
RST ToDSS
|
||
DI
|
||
; á®åà. § 票¥ ¯®à⮢
|
||
IN A,(SLOT0)
|
||
LD (DSS_PAGE__),A
|
||
IN A,(SLOT3)
|
||
LD (port_E2__),A
|
||
IN A,(PORT_Y)
|
||
LD (port_89__),A
|
||
; á®åà. ¤¥áªà¨¯â®à ¬¥¥¤¦¥à
|
||
LD A,(ix-3)
|
||
LD (hFile),A
|
||
; § ªàëâì ᯥª. íªà
|
||
LD A,#C0
|
||
OUT (PORT_Y),A
|
||
; ¢ë¤¥«¨âì 9 áâà. ¯ ¬ïâ¨
|
||
LD BC,9*256+Dss.GetMem
|
||
RST ToDSS
|
||
JR NC,ok_malloc ; Ok
|
||
LD A,(hFile) ; ⥪. ¤¥áªà¨¯â®à
|
||
LD C,Dss.Close ; § ªàëâì exe-ä ©«
|
||
RST ToDSS
|
||
LD HL,no_space ; ¥â ¯ ¬ïâ¨
|
||
LD BC,DSS_Error.sys.NOT_ENOUGH_MEMORY*256 + Dss.Exit
|
||
abort: EI
|
||
PUSH BC
|
||
LD C,Dss.PChars
|
||
RST ToDSS
|
||
POP BC
|
||
.loop: RST ToDSS ; ¢ë室 ¢ „Ž‘
|
||
DI
|
||
HALT
|
||
;
|
||
ok_malloc: LD (id_block__),A ; åí¤« ¢ë¤¥«. ¡«®ª ¯ ¬ïâ¨
|
||
; ¯®«ãç¨âì ᯨ᮪ áâà ¨æ
|
||
LD HL,page_sys_screen__
|
||
LD C,BIOS.GetMemBlkPages
|
||
RST ToBIOS
|
||
; ã§ âì ¢¥àá¨î „Ž‘
|
||
LD C,Dss.Version
|
||
RST ToDSS
|
||
LD HL,1*256 + 71 - 1 ; 1.71
|
||
AND A
|
||
SBC HL,DE
|
||
LD HL,old_dss ; ¥â ¯ ¬ïâ¨
|
||
LD BC,DSS_Error.sys.COMMON_ERROR*256 + Dss.Exit
|
||
JR NC,abort ; =< 1.71 - ®è¨¡ª
|
||
; à ᯠª®¢ âì ¬®¤ã«ì 1
|
||
;...
|
||
; § £à㧨âì ®á. ª®¤ ¬¥¥¤¦¥à
|
||
LD A,(page_manager__) ; à ¡®â ¥â ¢ #8000
|
||
OUT (SLOT3),A
|
||
LD HL,SLOT3.MEM_ADDR
|
||
LD DE,FM_CORE_BLK.Size ; à §¬¥à ¬®¤ã«ï 1
|
||
LD A,(hFile)
|
||
LD C,Dss.Read
|
||
RST ToDSS
|
||
JP C,read_error
|
||
; à ᯠª®¢ âì ¬®¤ã«ì 2
|
||
;...
|
||
; § £à. ¤à ©¢¥àë ª« ¢ë/¬ë誨, ®¡à ¡®â稪¨ ®¡ê¥ªâ®¢ ¨ ¤¨ «. ®ª®
|
||
LD A,(page_module0__) ; à ¡®â ¥â ¢ #0000
|
||
OUT (SLOT3),A
|
||
LD HL,SLOT3.MEM_ADDR
|
||
LD DE,FM_MOD_0_BLK.Size ; à §¬¥à ¬®¤ã«ï 2
|
||
LD A,(hFile)
|
||
LD C,Dss.Read
|
||
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,SLOT3.MEM_ADDR
|
||
LD DE,FM_MOD_1_BLK.Size ; à §¬¥à ¬®¤ã«ï 3
|
||
LD A,(hFile)
|
||
LD C,Dss.Read
|
||
RST ToDSS
|
||
JP C,read_error
|
||
; à ᯠª®¢ âì ¬®¤ã«ì 4
|
||
;...
|
||
; § £à㧨âì ᯥª-ª®¤
|
||
LD A,(page_spec__)
|
||
OUT (SLOT3),A
|
||
LD HL,SLOT3.MEM_ADDR
|
||
LD DE,FM_SPEC_BLK.Size ; à §¬¥à ¬®¤ã«ï 4
|
||
LD A,(hFile)
|
||
LD C,Dss.Read
|
||
RST ToDSS
|
||
JP C,read_error
|
||
LD A,(page_module0__)
|
||
LD (VECT.rst28.page+SLOT3.MEM_ADDR),A ; á®åà. ä¬-áâà ¨æã (vect.asm)
|
||
; à ᯠª®¢ âì ¬®¤ã«ì 5
|
||
;...
|
||
; § £à㧨âì ¢ìî¥à
|
||
; LD A,(page_viewer__)
|
||
; OUT (SLOT3),A
|
||
; LD HL,SLOT3.MEM_ADDR
|
||
; LD DE,FM_FVIEW_BLK.Size ; à §¬¥à ¢ìî¥à
|
||
; LD A,(hFile)
|
||
; LD C,Dss.Read
|
||
; RST ToDSS
|
||
; JP C,read_error
|
||
IN A,(SLOT1)
|
||
LD (page_viewer__),A
|
||
;
|
||
; § ªàëâì exe-ä ©« ¬¥¥¤¦¥à
|
||
hFile+1: LD A,0 ; á®åà. ¤¥áªà¨¯â®à ¬¥¥¤¦¥à
|
||
LD C,Dss.Close
|
||
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,Dss.Mouse.ReadState ; ã§ âì áâ âãá ¬ë誨
|
||
RST ToDSS.Mouse
|
||
LD (Xcoord),HL ; ª®®à¤¨ â X (0..639)
|
||
LD (Ycoord),DE ; ª®®à¤¨ â Y (0..255)
|
||
JP begin ; ¯¥à¥©â¨ ¯à®£à ¬¬ã
|
||
|
||
|
||
|
||
|
||
|
||
; •í¤«ë áâà ¨æ ¬¥¥¤¦¥à
|
||
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 ; á⮯-¡ ©â
|
||
;
|
||
DSS_PAGE__: DB -1 ; á®åà. ¯®àâ 82h
|
||
port_E2__: DB -1 ; á®åà. ¯®àâ 0E2h
|
||
port_89__: DB -1 ; á®åà. ¯®àâ 89h
|
||
pages_end:
|
||
|
||
|
||
|
||
; ®è¨¡ª § £à㧪¨ ¬¥¥¤¦¥à
|
||
read_error: LD (.number),A
|
||
LD A,(id_block__)
|
||
LD C,Dss.FreeMem ; ®á¢®¡. ¢ë¤¥«. ¡«®ª ¯ ¬ïâ¨
|
||
RST ToDSS
|
||
LD A,(hFile)
|
||
LD C,Dss.Close ; § ªàëâì ä ©«
|
||
RST ToDSS
|
||
LD HL,load_err
|
||
.number+1: LD B,0
|
||
LD C,Dss.Exit
|
||
JP abort
|
||
|
||
no_space: DZ "Not enough memory to run FM!\r\n"
|
||
load_err: DZ "Disk loading error!\r\n"
|
||
old_dss: DZ "FM requires DSS version 1.71 or higher!\r\n"
|
||
|
||
|
||
; ; <20>®¤£®â®¢¨âì § ª®£¥. ¤«ï á®äâ. ªãàá®à
|
||
; setup_znak: LD A,(page_manager__) ; ¢à¥¬. ¡ãä¥à
|
||
; OUT (SLOT2),A
|
||
; ; ¯®«ãç¨âì á¨áâ. § ª®£¥.
|
||
; LD DE,SLOT2.MEM_ADDR ; ¡ãä¥à ¤«ï 2048 ¡ ©â ¤ ëå
|
||
; PUSH DE
|
||
; LD C,BIOS.WIN_GET_ZG ; ¯®«ãç¨âì § ª®£¥.
|
||
; RST ToBIOS
|
||
; ; § ¯®«¨âì ª®¤®¬ 0FFh 2 ¨¦¨¥ «¨¨¨
|
||
; LD HL,SLOT2.MEM_ADDR+(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,SLOT2.MEM_ADDR ; § ª®£¥.
|
||
; LD C,BIOS.WIN_SET_ZG ; ãáâ. § ª®£¥.
|
||
; RST ToBIOS
|
||
; RET
|
||
;-------------------------------------------------
|
||
|
||
|
||
|
||
|
||
; Š®¥æ § £àã§ç¨ª
|
||
end_loader:
|
||
|
||
|
||
|
||
;-------------------------------------------------
|
||
; Š®¤ ¬¥¥¤¦¥à
|
||
;-------------------------------------------------
|
||
; incbin 'Build/fm.bin'
|
||
INCLUDE 'main.asm'
|