mirror of
https://github.com/Tolik-Trek/File-Manager.git
synced 2026-06-15 01:11:36 +03:00
254 lines
5.5 KiB
NASM
Executable File
254 lines
5.5 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 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'
|