FFORMAT/FMAIN.ASM
2025-05-02 04:08:17 +10:00

201 lines
5.1 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 1 ; 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
; ¢ë¤¥«ï¥¬ ¡«®ª ¢ hPages.Size áâà ­¨æ
ld bc,hPages.Size*256 + Dss.GetMem
RST ToDSS
jr c,err_mem ; ­¥â ¯ ¬ïâ¨
;ld (hBlock),a ; åí­¤« ¡«®ª 
; á®§¤ âì ᯨ᮪ ¢ë¤¥«. áâà ­¨æ
ld hl,hPages
ld c,0C5h
RST ToBIOS
; ¢ª«. à ¡®çãî áâà ­¨æã ¢ Page3 (¨á¯. ¤«ï ¡ãä¥à  á¨áâ. ®¡« á⨠¤¨áª¥âë)
ld a,(hPages.BuffSys2)
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
;[]=================== <20> ç «® ¯à®£à ¬¬ë =========================[]
Begin: ; á®åà. íªà ­
call SaveScreen
; á®åà. ¯®«®¦. ªãàá®à  á¨áâ. íªà ­ 
ld c,BIOS.LP_GET_PLACE
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"
include "exit.asm"
include "estex.asm"
include "format.asm"
;[]==============================================================[]
;[]==============================================================[]
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-2025 "
;
;ds 562 ; 565 + start2 = 672 (_2 -_1)
;[]==============================================================[]
;[]==============================================================[]
;hBlock: db 0 ; åí­¤« ¢ë¤¥«. ¡«®ª 
hPages:
.BuffSys2: db #FF ; åí­¤« à ¡®ç¥© áâà ­¨æë (+¤«ï á¨áâ. ®¡« áâ¨)
.BuffTrk: db #FF ; åí­¤« áâà. ¡ãä¥à  áâàãªâãàë ¤®à®¦ª¨ (¨ "system.exe")
.Win1: db #FF ; åí­¤« áâà. á®åà. íªà ­ 
.Win2: db #FF ; åí­¤« áâà. á®åà. £«. ®ª®­ ä®à¬ â¨«ª¨
.TRBoot: db #FF ; åí­¤« ¡ãä¥à  § £àã§ç¨ª  TR-DOS
.SBuff0: db #FF ; åí­¤« ¡ãä¥à  "system.exe"
.SBuff1: db #FF ; åí­¤«ë ¡ãä¥à  ¯®¤
.SBuff2: db #FF ; ä ©« "system.dos"
.Size equ $-hPages
db 0xFF ; á⮯-¡ ©â ᯨ᪠
; ¡ãä¥à ¤«ï ä㭪樨 ¯®¨áª  ä ©« 
BuffName: ds 45
; á®åà. ⥪ã騩 ¯ãâì (ª â «®£)
CurDir: ds 256
; <20> ¡®ç¨© ¡ãä¥à Input Line
CompBuff: ds 16
; _1:
DialData: ds 16
; <20>ãä¥à § £®«®¢ª  ¢ë¢®¤. ®ª­ 
DialName: ds 16
DialTab: ds 128
; <20>ãä¥à ¯®¤ ®¡ê¥ªâë
ReCompBuff: ds 512
;[]==============================================================[]
;[]==============================================================[]
ds 80
Stack: db 0 ; ¡ãä¥à ¯®¤ á⥪ ¯à®£à ¬¬ë
;[]==============================================================[]
;[]==============================================================[]
ES_BPB equ $
ES_Boot equ ES_BPB + 512
; incbin "estex.bs" ; § £àã§ç¨ª Estex
;[]==============================================================[]
;[]==============================================================[]
; <20>ãä¥à á¨á⥬­®© ®¡« á⨠¤¨áª¥âë
L2400 equ ES_BPB+512*4 ;!HARDCODE 4 - bootloader size
;[]==============================================================[]