FFORMAT/FMAIN.ASM
Anatoliy Belyanskiy 6ddb8e2890 Build.sh
2025-02-28 02:15:14 +10:00

210 lines
4.3 KiB
NASM
Executable File
Raw 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> ¡®â ¥â ç¥à¥§ ¯®àâë ƒ93.
; ‚뤥«ï¥â 8 áâà ­¨æ ¯ ¬ïâ¨.
;
; <20>ਠᮧ¤ ­¨¨ § £à㧮筮© ¤¨áª¥âë, ª®¯¨àã¥â § £àã§ç¨ª Estex
; ¢ ᥪâ®àë 2..4 ¨ ª®à४â¨àã¥â BPB boot-ᥪâ®à , ãáâ ­ ¢«¨¢ ï
; 10 § à¥§¥à¢. ᥪâ®à®¢ (4 ¤«ï 720kB) ¨ 1 ª®¯¨î FAT. á¨á⥬-
; ­®£® ¤¨áª  ª®¯¨àã¥â ­  ¤¨áª¥âã á¨á⥬­ë¥ ä ©«ë.
;
;
; !TODO ¡à âì § £àã§®ç­ë© ᥪâ®à á á¨á⥬­®£® ¤¨áª ,   ­¥ â áª âì ¢ ᥡ¥
; !TODO ¯¥à¥¤¥« âì ¯®¤ § ¯¨áì § £àã§ç¨ª  ­®¢®£® ¤®á , ª®â®àë© ¡®«ìè¥ 3-å ᥪâ®à®¢
include './shared_includes/constants/dss_equ.inc'
include './shared_includes/constants/bios_equ.inc'
include 'version.inc'
SysPort equ 0x3C ; á¨áâ. ¯®àâ (¡¥§ ¯®¤ª«. <20>‡“ ¡¨®á )
Page1 equ 0xA2 ; ¯®àâ 1-© áâà ­¨æë
Page3 equ 0xE2 ; ¯®àâ 3-© áâà ­¨æë
WinBoxBuff equ 0xC000 ; ­ ç «® ¡ãä¥à 
if release
org 0x6400
else
org 0x6200
db 'EX' ; exe ID
db 'E' ; exe ⨯
db 0 ; exe ¢¥àá¨ï
dw 512 ; ¬«. ᬥé. ª®¤ 
dw 0 ; áâ. ᬥé. ª®¤ 
dw 0 ; end-beg, ¯¥à¢¨ç­ë© § £àã§ç¨ª
dw 0,0 ; १¥à¢
dw 0 ;
dw Start ;  ¤à¥á § £à㧪¨ ª®¤ 
dw Start ;  ¤à¥á ¯¥à¥¤ ç¨ ã¯à ¢«¥­¨ï
dw Stack ;  ¤à¥á á⥪ 
ds 490 ; १¥à¢
endif
Start: ld sp,Stack
; ०¨¬ âãà¡® - 1.44Mb
ld a,13h
ld c,8Fh
RST ToBIOS
; áà ¢­¨âì ¨á¯. ­®¬¥à  ¯®à⮢ áâà ­¨æ á ­®¬¥à ¬¨ ¯®à⮢ <20>¨®á 
;call compare_page
; ¢ë¤¥«ï¥¬ ¡«®ª ¢ 8 áâà ­¨æ
ld bc,8*256 + Dss.GetMem ;!HARDCODE
RST ToDSS
jr c,err_mem ; ­¥â ¯ ¬ïâ¨
ld (hBlock),a ; åí­¤« ¡«®ª 
; á®§¤ âì ᯨ᮪ ¢ë¤¥«. áâà ­¨æ
ld hl,hPages
ld c,0C5h
RST ToBIOS
; ¢ª«. à ¡®çãî áâà ­¨æã ¢ Page3 (¨á¯. ¤«ï ¡ãä¥à  á¨áâ. ®¡« á⨠¤¨áª¥âë)
ld a,(BuffSys)
out (Page3),a
; ®ç¨áâ¨âì ¡ãä¥à ª« ¢ë
ld bc,Dss.ScanKey*256 + Dss.K_CLEAR
RST ToDSS
; ¯®«ãç¨âì ᢮© ª â «®£
LD HL,#6200
LD DE,CurPath
LD BC,256
LDIR
; á®åà. ⥪ã騩 ¤¨áª
ld c,2
RST ToDSS
ADD A,"A"
ld (#6200),a ;!HARDCODE
; á®åà. ⥪ã騩 ¯ãâì
ld c,Dss.CurDir
ld hl,#6200+3 ; ¡ãä¥à ⥪. ¯ã⨠;!HARDCODE
RST ToDSS
; ¯¥à¥©â¨ ¢ ᢮© ª â «®£
ld hl,CurPath
ld c,#1D ; Dss.ChDir
RST ToDSS
;
jp Begin
err_mem: ld hl,NoMem
ld a,30
ld (quit+1),a
call Print
; ¢ë室 ¢ „Ž‘
jp quit
NoMem: db "Not enough memory !",0Dh,0Ah,0
hBlock: db 0 ; åí­¤« ¢ë¤¥«. ¡«®ª 
hPages:
BuffSys: db 0 ; åí­¤« à ¡®ç¥© áâà ­¨æë (+¤«ï á¨áâ. ®¡« áâ¨)
BuffTrk: db 0 ; åí­¤« áâà. ¡ãä¥à  áâàãªâãàë ¤®à®¦ª¨ (¨ "system.exe")
Win1: db 0 ; åí­¤« áâà. á®åà. íªà ­ 
Win2: db 0 ; åí­¤« áâà. á®åà. £«. ®ª®­ ä®à¬ â¨«ª¨
TRBoot: db 0 ; åí­¤« ¡ãä¥à  § £àã§ç¨ª  TR-DOS
SBuff0: db 0 ; åí­¤« ¡ãä¥à  "system.exe"
SBuff1: db 0 ; åí­¤«ë ¡ãä¥à  ¯®¤
SBuff2: db 0 ; ä ©« "system.dos"
db 0xFF ; á⮯-¡ ©â ᯨ᪠
;[]=================== <20> ç «® ¯à®£à ¬¬ë =========================[]
Begin: ; á®åà. íªà ­
call SaveScreen
; á®åà. ¯®«®¦. ªãàá®à  á¨áâ. íªà ­ 
ld c,8Eh
RST ToBIOS
ld (sys_cursor_coords),de
; ¨­¨æ. ¤à ©¢¥à ¬ë誨
ld c,0
RST ToDSS.Mouse
jr nc,continue
ld hl,NoMouse ; ¤à ©¢¥à ¬ëè¨ ­¥ ãáâ ­®¢«¥­
call Print
; ¦¤¥¬ ­ ¦ â¨ï ª« ¢¨è¨
ld c,30h
RST ToDSS
continue: call ReadInit ; ç⥭¨¥ "fformat.ini" ¨ ­ áâனª 
call CopyBootTRD ; ᪮¯¨à. ¡ãâ ¨§ "boot.$b" (¥á«¨ ¥áâì)
call CopySysFiles ; ᪮¯¨à. á¨áâ. ä ©«ë ¢ ¡ãä¥àë
include "dialog.asm"
include "listbox.asm"
include "radio.asm"
include "mouse.asm"
include "map.asm"
; ¢¥ªâ®à ¤«ï ®â®¡à ¦¥­¨ï ªãàá®à 
rst38: di
push iy
push ix
push hl
push de
push bc
push af
ld a,(CurILFl)
or a
call nz,PrnILCr
pop af
pop bc
pop de
pop hl
pop ix
pop iy
vect: jp 0x0000 ;  ¤à¥á á¨áâ. ¢¥ªâ®à 
; <20> ¡®ç¨© ¡ãä¥à Input Line
CompBuff: ds 16
_1:
DialData: ds 16
; <20>ãä¥à § £®«®¢ª  ¢ë¢®¤. ®ª­ 
DialName: ds 16
DialTab: ds 128
; <20>ãä¥à ¯®¤ ®¡ê¥ªâë
ReCompBuff: ds 512
_2:
NoMouse: db "Driver mouse not installed",0Dh,0Ah,0
Title: db " Floppy disk formatting utility Version "
db major_version + "0","."
db (minor_version / 10) + "0",(minor_version % 10) + "0"
db " (c) 2005-2007 "
;
ds 562 ; 565 + start2 = 672 (_2 -_1)
include "exit.asm"
include "estex.asm"
include "form.asm"
ds 80
Stack: db 0 ; ¡ãä¥à ¯®¤ á⥪ ¯à®£à ¬¬ë
ES_Boot: incbin "estex.bs" ; § £àã§ç¨ª Estex
; <20>ãä¥à á¨á⥬­®© ®¡« á⨠¤¨áª¥âë
L2400: