оптимизируем

This commit is contained in:
Tolik 2025-05-02 04:07:57 +10:00
parent a2b7e9b470
commit 6d775da44b
9 changed files with 248 additions and 243 deletions

View File

@ -296,10 +296,10 @@ PutDial: PUSH IX
CALL GetMousInfo
EXX
DI
kk2: LD A,(Win2) ;Page buffer
kk2: LD A,(hPages.Win2) ;Page buffer
LD B,A
XOR A
LD C,BIOS.WIN_RESTORE ; ¨§ ¡ãä¥à  ¢ ⥪áâ. ®ª­®
LD C,BIOS.WIN_RESTORE ; ¨§ ¡ãä¥à  ¢ ⥪áâ. ®ª­®
RST ToBIOS
EI
CALL GetMousInfo
@ -310,15 +310,14 @@ kk2: LD A,(Win2) ;Page buffer
; Close Dialog window and restore box place
ClsDial:
CALL ResILCr ; á¡à®á¨âì ªãàá®à
ClsDial: CALL ResILCr ; á¡à®á¨âì ªãàá®à
LD IX,DialData
LD A,(IX+2) ;with shadow
LD A,(IX+2) ;with shadow
ADD A,2
LD L,A
LD A,(IX+3)
INC A
LD H,A ;Wind len
LD H,A ;Wind len
LD E,(IX+0)
LD D,(IX+1)
EXX
@ -326,10 +325,10 @@ ClsDial:
EXX
DI
LD IX,WinBoxBuff ;Address Box buffers
kk3: LD A,(Win2) ;Page buffer
kk3: LD A,(hPages.Win2) ;Page buffer
LD B,A
XOR A
LD C,BIOS.WIN_RESTORE ; ¨§ ¡ãä¥à  ¢ ⥪áâ. ®ª­®
LD C,BIOS.WIN_RESTORE ; ¨§ ¡ãä¥à  ¢ ⥪áâ. ®ª­®
RST ToBIOS
EI
CALL GetMousInfo
@ -349,7 +348,7 @@ PutDialWn:
LD IX,DialData
IN A,(Page3)
PUSH AF
kk4: LD A,(Win2) ;Page buffer
kk4: LD A,(hPages.Win2) ;Page buffer
OUT (Page3),A
LD A,(HL) ;X position
LD (IX+0),A ;Xpos
@ -829,7 +828,7 @@ BTexit: LD HL,what
; <20> ¦ âì/®â¦ âì ¡ãâ®­
PushBut: IN A,(Page3)
PUSH AF
kk5: LD A,(Win2)
kk5: LD A,(hPages.Win2)
OUT (Page3),A
PUSH IX
LD E,(IX+2) ;Xo
@ -1104,7 +1103,7 @@ SetDialInv:
LD IX,DialData
IN A,(Page3)
PUSH AF ;á®åà.page4
kk6: LD A,(Win2)
kk6: LD A,(hPages.Win2)
OUT (Page3),A ;¢ª«.¡ãä¥à
LD L,C
LD H,1
@ -1154,7 +1153,7 @@ ResDialInv:
PUSH IX
IN A,(Page3)
PUSH AF ;á®åà.page4
kk7: LD A,(Win2)
kk7: LD A,(hPages.Win2)
OUT (Page3),A ;¢ª«.¡ãä¥à
LD HL,(RDlIbuf+2)
LD A,(RDlIlen+1)
@ -1201,7 +1200,7 @@ ResClasInv:
PUSH IX
IN A,(Page3)
PUSH AF ;á®åà.page4
kk8: LD A,(Win2)
kk8: LD A,(hPages.Win2)
OUT (Page3),A ;¢ª«.¡ãä¥à
PUSH HL
LD HL,(RClIbuf+2)
@ -1270,7 +1269,7 @@ pdln: LD A,E
SUB E
LD L,A
DI
kk9: LD A,(Win2)
kk9: LD A,(hPages.Win2)
LD B,A
XOR A
LD C,BIOS.WIN_RESTORE
@ -1317,7 +1316,6 @@ ColLstBxHI: EQU 1Eh ; 梥
ColScrlBar: EQU 0Fh ; 梥â áªà®««-¡ à 
ColInpLine: EQU 0Eh ; 梥â । ªâ. ¯®«ï ¬¥âª¨ ¤¨áª¥âë
ColDialWn: DB 17h ; 梥⠮ª­ 
ColDialInv: EQU 0Fh ; color dialog window invert
ColDialInv1: EQU 07h ; color dialog window invert
@ -1326,6 +1324,7 @@ ColFormNumber: EQU 3Eh ; 梥
ColorFrame: EQU ColFormText ; 梥â à ¬ª¨ ®¡ê¥ªâ  Frame
ColDialWn: DB 17h ; 梥⠮ª­ 
FramDSl: DB "ɻȼͺºº" ; à ¬ª  ®ª­ 
@ -1345,7 +1344,7 @@ SavDial: PUSH IX
EXX
DI
LD IX,WinBoxBuff ;Address Box buffers
kk1: LD A,(Win2) ;Page buffer
kk1: LD A,(hPages.Win2) ;Page buffer
LD B,A
XOR A
LD C,BIOS.WIN_COPY ; ª®¯¨à. ¨§ ®ª­  ¢ ¡ãä¥à

View File

@ -37,7 +37,7 @@ CopySysFiles: xor a
; ¯à®ç¨â âì ä ©«
in a,(Page3)
push af
ld a,(SBuff0)
ld a,(hPages.SBuff0)
out (Page3),a ; ¯®¤ª«. ¡ãä¥à
ld a,(hFile1)
call ReadFile
@ -91,7 +91,7 @@ tinRead: ld (Number2),ix ;
; ¯à®ç¨â âì ä ©«
in a,(Page3)
push af
ld a,(SBuff1)
ld a,(hPages.SBuff1)
out (Page3),a ; ¯®¤ª«. 1-î áâà ­¨æã
ld a,(hFile2)
call ReadFile
@ -101,7 +101,7 @@ tinRead: ld (Number2),ix ;
jr z,endRead ; ¯à®ç¨â ­ ¢¥áì ä ©«
; ç¨â ¥¬ ®áâ â®ª ä ©« 
ost: ld de,0
ld a,(SBuff2)
ld a,(hPages.SBuff2)
out (Page3),a ; ¯®¤ª«. 2-î áâà ­¨æã
ld hl,WinBoxBuff ; ¡ãä¥à ¯®¤ ¤ ­­ë¥
ld a,(hFile2)
@ -154,7 +154,7 @@ WriteSysFiles: ld a,(sFlag)
; § ¯¨á âì ä ©«
in a,(Page3)
push af
ld a,(SBuff0)
ld a,(hPages.SBuff0)
out (Page3),a ; ¯®¤ª«. ¡ãä¥à
ld de,(Number1) ; ç¨á«® § ¯¨á. ¡ ©â
ld a,(hFile1) ; åí­¤«
@ -177,7 +177,7 @@ WriteSysFiles: ld a,(sFlag)
; § ¯¨á âì ä ©«
in a,(Page3)
push af
ld a,(SBuff1)
ld a,(hPages.SBuff1)
out (Page3),a ; ¯®¤ª«. 1-î áâà ­¨æã
ld de,(Number2) ; à §¬¥à "system.dos"
ld hl,4000h ; 1-­  áâà ­¨æ 
@ -191,7 +191,7 @@ WriteSysFiles: ld a,(sFlag)
call WriteFile
pop de
jr c,err1 ; ®è¨¡ª  § ¯¨á¨ ä ©« 
ld a,(SBuff2)
ld a,(hPages.SBuff2)
out (Page3),a ; ¯®¤ª«. 2-î áâà ­¨æã
;
tinFile: ld a,(hFile2) ; åí­¤«
@ -323,7 +323,7 @@ RootDir: db '\',0 ;
;
CurPath:
CurDisk: db 0,':\' ; á®åà. ⥪. ¤¨áª
CurDir: ds 256 ; á®åà. ⥪ã騩 ¯ãâì (ª â «®£)
;
TmpColor: db 0 ; ¢à¥¬. á®åà. æ¢¥â  ®ª­ 
@ -331,7 +331,6 @@ TmpColor: db 0 ;
IniName: db "FFORMAT.INI",0
hFile3: db 0 ; ¤¥áªà¨¯â®à ä ©« 
;Number3:dw 0 ; à §¬¥à ä ©«  "fformat.ini"
BuffName: ds 45 ; ¡ãä¥à ¤«ï ä㭪樨 ¯®¨áª  ä ©« 
TrdName: db "BOOT.$B",0 ; ¨¬ï trd-boot ä ©« 
hFile4: db 0 ; ¤¥áªà¨¯â®à ä ©« 
@ -570,7 +569,7 @@ CopyBootTRD: xor a
; ¯à®ç¨â âì ä ©«
in a,(Page3)
push af
ld a,(TRBoot)
ld a,(hPages.TRBoot)
out (Page3),a ; ¯®¤ª«. ¡ãä¥à
; ç¨â ¥¬ § £®«®¢®ª ¡ãâ 
ld hl,NameBt ; ¡ãä¥à ¯®¤ ¤ ­­ë¥

View File

@ -26,24 +26,20 @@ sys_cursor_coords+1:
ld bc,3135h
rst 0x10
; ®á¢®¡. ¢ë¤¥«¥­­ë© ¡«®ª ¯ ¬ïâ¨
ld a,(hBlock)
ld c,3Eh
rst 0x10
jr nc,quit
ld hl,NoFree
call Print
ld b,-1 ; ª®¤ ®è¨¡ª¨
jr quit1
; ld a,(hBlock)
; ld c,3Eh
; rst 0x10
; jr nc,quit
; ld hl,NoFree
; call Print
; ld b,-1 ; ª®¤ ®è¨¡ª¨
; jr quit1
quit: ld b,0
quit1: ld c,41h ; ¢ë©â¨ ¢ Estex
rst 0x10
ret
NoFree: db "Error free block memory !",0Dh,0Ah,0
; ‚뢮¤ áâப¨ ­  íªà ­
Print: ld c,5Ch
@ -62,7 +58,7 @@ _skrn: di
ld ix,WinBoxBuff ; Address Box buffers
ld hl,2050h ; Y/X à §¬¥à ®ª­ 
ld de,0000h ; Y/X ¯®«®¦. ®ª­ 
ld a,(Win1) ; Page buffer
ld a,(hPages.Win1) ; Page buffer
ld b,a
xor a
RST ToBIOS

118
FMAIN.ASM
View File

@ -29,7 +29,7 @@ WinBoxBuff equ 0xC000 ;
db 'EX' ; exe ID
db 'E' ; exe ⨯
db 0 ; exe ¢¥àá¨ï
db 1 ; exe ¢¥àá¨ï
dw 512 ; ¬«. ᬥé. ª®¤ 
dw 0 ; áâ. ᬥé. ª®¤ 
dw 0 ; end-beg, ¯¥à¢¨ç­ë© § £àã§ç¨ª
@ -49,17 +49,17 @@ Start: ld sp,Stack
RST ToBIOS
; áà ¢­¨âì ¨á¯. ­®¬¥à  ¯®à⮢ áâà ­¨æ á ­®¬¥à ¬¨ ¯®à⮢ <20>¨®á 
;call compare_page
; ¢ë¤¥«ï¥¬ ¡«®ª ¢ 8 áâà ­¨æ
ld bc,8*256 + Dss.GetMem ;!HARDCODE
; ¢ë¤¥«ï¥¬ ¡«®ª ¢ hPages.Size áâà ­¨æ
ld bc,hPages.Size*256 + Dss.GetMem
RST ToDSS
jr c,err_mem ; ­¥â ¯ ¬ïâ¨
ld (hBlock),a ; åí­¤« ¡«®ª 
;ld (hBlock),a ; åí­¤« ¡«®ª 
; á®§¤ âì ᯨ᮪ ¢ë¤¥«. áâà ­¨æ
ld hl,hPages
ld c,0C5h
RST ToBIOS
; ¢ª«. à ¡®çãî áâà ­¨æã ¢ Page3 (¨á¯. ¤«ï ¡ãä¥à  á¨áâ. ®¡« á⨠¤¨áª¥âë)
ld a,(BuffSys)
ld a,(hPages.BuffSys2)
out (Page3),a
; ®ç¨áâ¨âì ¡ãä¥à ª« ¢ë
ld bc,Dss.ScanKey*256 + Dss.K_CLEAR
@ -96,22 +96,6 @@ err_mem: ld hl,NoMem
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> ç «® ¯à®£à ¬¬ë =========================[]
@ -132,47 +116,60 @@ Begin: ;
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)
;[]==============================================================[]
; ¢¥ªâ®à ¤«ï ®â®¡à ¦¥­¨ï ªãàá®à 
; 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+1: jp 0x0000 ;  ¤à¥á á¨áâ. ¢¥ªâ®à 
;[]==============================================================[]
;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:
; _1:
DialData: ds 16
; <20>ãä¥à § £®«®¢ª  ¢ë¢®¤. ®ª­ 
@ -182,28 +179,23 @@ 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-2025 "
;
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
;[]==============================================================[]
;[]==============================================================[]
ES_BPB equ $
ES_Boot equ ES_BPB + 512
; incbin "estex.bs" ; § £àã§ç¨ª Estex
;[]==============================================================[]
;[]==============================================================[]
; <20>ãä¥à á¨á⥬­®© ®¡« á⨠¤¨áª¥âë
L2400:
L2400 equ ES_BPB+512*4 ;!HARDCODE 4 - bootloader size
;[]==============================================================[]

View File

@ -96,6 +96,7 @@ FFORM1: call ClearMap ;
ld a,(_OS)
or a
jp nz,okno1 ; ¯à¨ tr-dos, cp/m-80
;
ld a,(cSystem) ; ä« £ ª®¯¨à. á¨á⥬­ëå ä ©«®¢
or a
call nz,WriteSysFiles ; § ¯¨áì á¨áâ. ä ©«®¢ ­  ¤¨áª¥âã
@ -354,7 +355,9 @@ L09D9: ld a,(density)
;jp _cpm80
; Š®¯¨àã¥â 2-î FAT ¨ § ¯¨á뢠¥â á¨áâ. ®¡« áâì ¤¨áª¥âë,
; ¯à¨ ¢ª«. ®¯æ¨¨ ª®¯¨àã¥â § £àã§ç¨ª Estex ¢ ᥪâ®àë 2..4.
_msdos: ld a,(media5) ; ç¨á«® ᥪâ®à®¢ ­  FAT
_msdos: ld a,(MS_Boot.media5) ; ç¨á«® ᥪâ®à®¢ ­  FAT
ld e,a
ld hl,0
ld bc,512
@ -372,6 +375,8 @@ _msdos: ld a,(media5) ;
add hl,de
ex de,hl
ldir
;
; bpb boot loader
ld a,(cSystem) ; ä« £ á®§¤ ­¨ï á¨áâ. ¤¨áª¥âë
or a
jr z,.loc2
@ -381,12 +386,13 @@ _msdos: ld a,(media5) ;
ld bc,1536 ; 512*3 ᥪâ. = à §¬¥à § £àã§ç¨ª 
ldir
; ᪮à४â. BPB ¢ ¡ãä¥à¥
ld a,(media5)
ld a,(MS_Boot.media5)
inc a
ld (L2400+14),a
ld a,1 ; ç¨á«® ª®¯¨© FAT
ld (L2400+16),a ; ᬥé. ­  ç¨á«® ª®¯¨©
;
;
.loc2: call L07AF ; ®¦¨¤ ­¨¥ £®â®¢­®á⨠­£¬¤
; § ¯¨áì 0-© áâ®à®­ë
ld a,1
@ -411,6 +417,13 @@ L08F6: call L0906 ;
ld (sect),a
loc03: cp 18+1 ; § ¯à¥¤. ᥪâ®à ?
jr nz,L08F6
; § ¯¨áì § £àã§ç¨ª  ç¥à¥§ sys
ld a,(cSystem) ; ä« £ á®§¤ ­¨ï á¨áâ. ¤¨áª¥âë
or a
ret z
;
;
ret
; ‡ ¯¨áì á¨áâ. ®¡« á⨠TR-DOS.
@ -506,7 +519,7 @@ _trdos: xor a ;
copy1: exx
in a,(Page1)
ex af,af'
ld a,(TRBoot)
ld a,(hPages.TRBoot)
out (Page1),a ; ¯®¤ª«. ¡ãä¥à
ld hl,4000h ; ­ ç «® Page1
ld de,L2400+1000h
@ -575,7 +588,7 @@ A0875: push de
; ‡ ¯¨áì ¤®à®¦ª¨
L091B: in a,(Page3)
push af
ld a,(BuffTrk)
ld a,(hPages.BuffTrk)
out (Page3),a ; ¯®¤ª«. ¡ãä¥à áâàãªâãàë ¤®à®¦ª¨
ld hl,L4000 ; ­ ç «® ¤ ­­ëå
ld (L0AC8),hl
@ -728,7 +741,7 @@ _done2: xor a
;[]==============================================================[]
; ¢ëç¨á«¨âì ï祩ªã bad-ᥪâ®à  ¢ FAT-¥
L0ACF: ld hl,(media6) ; ᥪâ®à®¢ ­  áâ®à®­ã
L0ACF: ld hl,(MS_Boot.media6) ; ᥪâ®à®¢ ­  áâ®à®­ã
add hl,hl ; *2 (ᥪâ®à®¢ ­  ¢áî ¤®à®¦ªã)
ex de,hl
ld hl,0
@ -739,7 +752,7 @@ L0AD8: add hl,de
ld a,(side) ; ⥪. áâ®à®­ 
or a
jr z,L0AE8
ld de,(media6) ; ᥪâ®à®¢ ­  áâ®à®­ã
ld de,(MS_Boot.media6) ; ᥪâ®à®¢ ­  áâ®à®­ã
add hl,de
L0AE8: ld a,(sect) ; ⥪. ᥪâ®à
ld e,a
@ -757,7 +770,7 @@ L0AE8: ld a,(sect) ; ⥪. ᥪ
ld a,l
rra
ld l,a
ld a,(media1) ; ᥪâ®à®¢ ­  ª« áâ¥à
ld a,(MS_Boot.media1) ; ᥪâ®à®¢ ­  ª« áâ¥à
ld e,a
ld d,0
add hl,de
@ -808,7 +821,7 @@ L0A2C: push hl
; ᥪâ®à®¢ ­  +2 («ãç訩 ¢ à¨ ­â).
;
add_offset:
ld hl,(media6) ; ç¨á«® ᥪâ®à®¢ ¢ ⥪. ä®à¬ â¥
ld hl,(MS_Boot.media6) ; ç¨á«® ᥪâ®à®¢ ¢ ⥪. ä®à¬ â¥
ld a,(_OS) ; ⨯ Ž‘-¨
or a
jr z,.loc0 ; ms-dos
@ -923,7 +936,7 @@ GAP3 dw 108 ;
; <20>®¤£®â®¢¨âì § £®«®¢ª¨ ᥪâ®à®¢ ¤®à®¦ª¨ (®¤­®© áâ®à®­ë)
L0BAA: in a,(Page3)
push af
ld a,(BuffTrk)
ld a,(hPages.BuffTrk)
out (Page3),a ; ¯®¤ª«. ¡ãä¥à ¤®à®¦ª¨
xor a
ld (L0BA9),a ; ®¡­ã«¨âì áç¥â稪 ᥪâ®à®¢
@ -978,7 +991,7 @@ loc05: cp 18 ;
; <20>ãä¥à: 0xC000..0xFFFF
L0B21: in a,(Page3)
push af
ld a,(BuffTrk)
ld a,(hPages.BuffTrk)
out (Page3),a ; ¯®¤ª«. ¡ãä¥à ¤®à®¦ª¨
call CLEAR ; § ¯®«­¨âì ¡ãä¥à ª®¤®¬ 0x4E
ld hl,L4000 ; ­ ç «® ¡ãä¥à  ¤ ­­ëå ¤®à®¦ª¨
@ -1090,7 +1103,7 @@ L09A8: ld de,L2400 ;
loc07: ld bc,16896 ; 6656/16896 ¤«¨­  FAT-®¢ + Root dir
ld e,0 ; ¡ ©â § ¯®«­¥­¨ï
call L0994 ; ¯¥à¥ª çª  ¥ -> (hl)
ld a,(media4) ; ¡ ©â-®¯¨á â¥«ì ä®à¬ â  ¤¨áª 
ld a,(MS_Boot.media4) ; ¡ ©â-®¯¨á â¥«ì ä®à¬ â  ¤¨áª 
ld hl,L2400+512
ld (hl),a ; § ­¥á⨠¯¥à¢ë¬ ¡ ©â®¬ ¢ FAT
inc hl
@ -1118,7 +1131,7 @@ frm1: ld a,18 ;
ld (loc05+1),a
ld (loc08+1),a
SSect: ld hl,18 ; ᥪâ®à®¢ ­  áâ®à®­ã
ld (media6),hl ;;
ld (MS_Boot.media6),hl
inc a ; § ¯à¥¤. ᥪâ®à
ld (loc02+1),a
ld (loc03+1),a
@ -1126,17 +1139,17 @@ SSect: ld hl,18 ; ᥪ
frm2: ld a,34 ; ¯®á«. á«ã¦. ᥪâ®à ¤¨áª¥âë
ld (LastSect),a
frm3: ld a,1 ; ᥪâ®à®¢ ­  ª« áâ¥à
ld (media1),a
ld (MS_Boot.media1),a
frm4: ld a,0xF0 ; ¡ ©â ä®à¬ â 
ld (media4),a
ld (MS_Boot.media4),a
frm5: ld hl,16896 ; à §¬¥à FAT-®¢ + Root dir
ld (loc07+1),hl
frm6: ld hl,224 ; § ¯¨á¥© ¢ ª®à­¥
ld (media2),hl
ld (MS_Boot.media2),hl
ASect: ld hl,2880 ; ᥪâ®à®¢ ­  ¤¨áª¥
ld (media3),hl ;;
ld (MS_Boot.media3),hl
FSect: ld hl,9 ; ᥪâ®à®¢ ­  FAT
ld (media5),hl ;;
ld (MS_Boot.media5),hl
ret
;
noMSDOS:dec a
@ -1254,7 +1267,7 @@ L0BFF: ld a,(density)
call InitElapsedTime ; á®åà. ¨ á¡à®á¨âì ¢à¥¬ï
call L07AF ; ®¦¨¤ ­¨¥ £®â®¢­®á⨠­£¬¤
; 横« ä®à¬ â. ¤®à®¦¥ª
L0C14: call L0BDA ; ä®à¬ â¨à®¢ ­¨¥
L0C14: call FORMAT_TRK ; ä®à¬ â¨à®¢ ­¨¥
ret c ; ä®à¬ â. ¯à¥à¢ ­®
ret nz ; ¥áâì ®è¨¡ª¨ ç⥭¨ï
; ­¥â ®è¨¡®ª
@ -1271,30 +1284,30 @@ TRACKS: ld a,82
; ”®à¬ â¨à. ®¤­®© ¤®à®¦ª¨
L0BDA: xor a
ld (side),a ; ⥪. áâ®à®­ 
ld (RetCode),a ; á¡à. ¢®§¢à. ª®¤
L0BDE: ;ld a,2
;ld (L0C64),a ; ç¨á«® 3-å à §®¢ëå ¯®¯ë⮪
call L0BAA ; ¨­¨æ. § £®«®¢ª®¢ ᥪâ®à®¢ ¤®à®¦ª¨
call L0759 ; ãáâ. £®«®¢ªã ­  ⥪. ¤®à®¦ªã
call L091B ; § ¯¨áì æ¥«®© ¤®à®¦ª¨
call L0C87 ; â¥áâ ­  ç⥭¨¥ ᥪâ®à®¢ ®¤­®© áâ®à®­ë
ret c ; ¢ë室 - ¯à®æ¥áá ¯à¥à¢ ­
ret nz ; ¥áâì ®è¨¡ª¨ ç⥭¨ï
call Map ; ¢ë¢®¤ ª àâë
call L0D93 ; ¢ë¢®¤ "Side: X"
call L0D92 ; ¢ë¢®¤ "Cylinder: XX"
call ElapsedTime ; ¢ë¢®¤ ¢à¥¬¥­¨ à ¡®âë
call L0D25 ; ¯à¨§­ ª ­ ¦ â¨ï ª« ¢¨è¨
ret c ; ¯à®æ¥áá ¯à¥à¢ ­
ld hl,side
inc (hl) ; ᬥ­  áâ®à®­ë
ld a,(hl) ; ⥪. áâ®à®­ 
cp 1+1 ; § ¯à¥¤¥«ì­ ï ?
jr nz,L0BDE
xor a
ret
FORMAT_TRK: xor a
ld (side),a ; ⥪. áâ®à®­ 
ld (RetCode),a ; á¡à. ¢®§¢à. ª®¤
.loop: ;ld a,2
;ld (L0C64),a ; ç¨á«® 3-å à §®¢ëå ¯®¯ë⮪
call L0BAA ; ¨­¨æ. § £®«®¢ª®¢ ᥪâ®à®¢ ¤®à®¦ª¨
call L0759 ; ãáâ. £®«®¢ªã ­  ⥪. ¤®à®¦ªã
call L091B ; § ¯¨áì æ¥«®© ¤®à®¦ª¨
call L0C87 ; â¥áâ ­  ç⥭¨¥ ᥪâ®à®¢ ®¤­®© áâ®à®­ë
ret c ; ¢ë室 - ¯à®æ¥áá ¯à¥à¢ ­
ret nz ; ¥áâì ®è¨¡ª¨ ç⥭¨ï
call Map ; ¢ë¢®¤ ª àâë
call L0D93 ; ¢ë¢®¤ "Side: X"
call L0D92 ; ¢ë¢®¤ "Cylinder: XX"
call ElapsedTime ; ¢ë¢®¤ ¢à¥¬¥­¨ à ¡®âë
call L0D25 ; ¯à¨§­ ª ­ ¦ â¨ï ª« ¢¨è¨
ret c ; ¯à®æ¥áá ¯à¥à¢ ­
ld hl,side
inc (hl) ; ᬥ­  áâ®à®­ë
ld a,(hl) ; ⥪. áâ®à®­ 
cp 1+1 ; § ¯à¥¤¥«ì­ ï ?
jr nz,.loop
xor a
ret
@ -1483,99 +1496,97 @@ CalcTime:
;-------------------------------------------------+
; MS-DOS § £àã§ç¨ª ¤¨áª¥â (¨§ fformat), 512 ¡ ©â. |
; ä®à¬ â 1.44Mb. |
; ¤«ï 720kB á¬. ¬¥âªã '#' |
;-------------------------------------------------+
MS_Boot:
db 0xEB,0x3C,0x90 ; 3 ¡ ©â , ª®¤ ¯¥à¥å®¤  ­  § £àã§ç¨ª
db "DSS 1.60" ; 8 ¡ ©â, OEM ID
;BPB, 17 ¡ ©â
BPB: dw 512 ; ¡ ©â ­  ᥪâ®à
media1: db 1 ; # 2, ᥪâ®à®¢ ­  ª« áâ¥à
dw 1 ; § à¥§¥à¢. ᥪâ®à®¢
db 2 ; ç¨á«® FAT-®¢
media2: dw 224 ; # 112, § ¯¨á¥© ¢ ª®à­¥
media3: dw 2880 ; # 1440, ¢á¥å ᥪâ®à®¢ ­  ¤¨áª¥
media4: db 0xF0 ; # 0xF9, ¡ ©â ä®à¬ â 
media5: dw 9 ; # 3, ᥪâ®à®¢ ­  FAT
media6: dw 18 ; # 9, ᥪâ®à®¢ ­  áâ®à®­ã
dw 2 ; ª®«-¢® áâ®à®­ ¤¨áª 
;extended boot-record
dw 0,0 ; áªàëâëå ᥪâ®à®¢
dw 0,0 ; ¢á¥å ᥪâ®à®¢ ­  ¤¨áª¥
dw 0 ; 䨧. ­®¬¥à ¤¨áª 
db 0x29 ; ᨣ­ âãà  à áè. boot-§ ¯¨á¨
dw 96C2h,2D3Ah ; á¥à¨©­ë© ­®¬¥à ¤¨áª¥âë 2D3A:96C2
db "NO NAME " ; 11 ¡ ©â, ¬¥âª  ¤¨áª¥âë
db "FAT12 " ; 8 ¡ ©â, ID ä ©«®¢®© á¨á⥬ë
;---------------------------------------------------------------------
db 0xFA,0x33,0xD2,0x8E,0xD2,0xBC,0xF0,0x7B
db 0xFB,0xB8,0xC0,0x07,0x8E,0xD8,0xE8,0x89
db 0x00,0xBE,0xFE,0x00,0xFC,0xBB,0x70,0x00
db 0xE8,0x25,0x00,0x32,0xE4,0xCD,0x16,0x3C
db 0x1B,0x74,0x18,0x3C,0x0D,0x74,0x08,0x3C
db 0x20,0x74,0x04,0x3C,0x6F,0x75,0xEC,0xBE
db 0xDF,0x01,0xE8,0x0B,0x00,0xBE,0xC1,0x01
db 0xE8,0x05,0x00,0xE8,0x5C,0x00,0xCD,0x19
db 0xAC,0x0A,0xC0,0x74,0x46,0x3C,0x01,0x75
db 0x05,0xAC,0x8A,0xD8,0xEB,0xF2,0x3C,0x02
db 0x75,0x0A,0xAD,0x8B,0xD0,0x56,0xE8,0x62
db 0x00,0x5E,0xEB,0xE4,0x3C,0x03,0x75,0x0A
db 0xAC,0xA2,0x00,0x00,0x89,0x36,0x01,0x00
db 0xEB,0xD6,0x3C,0x04,0x75,0x0C,0xFE,0x0E
db 0x00,0x00,0x74,0x04,0x8B,0x36,0x01,0x00
db 0xEB,0xC6,0x33,0xC9,0xA8,0x80,0x74,0x05
db 0x24,0x7F,0x8A,0xC8,0xAC,0x41,0xE8,0x17
db 0x00,0xEB,0xB5,0x36,0xA1,0x6C,0x04,0x05
db 0x04,0x00,0x36,0x39,0x06,0x6C,0x04,0x72
db 0xF9,0xC3,0xB8,0x03,0x00,0xCD,0x10,0xC3
db 0x56,0x3C,0x0A,0x74,0x10,0xB4,0x09,0xCD
db 0x10,0x02,0xD1,0x80,0xFA,0x50,0x73,0x05
db 0xE8,0x08,0x00,0x5E,0xC3,0xFE,0xC6,0x32
db 0xD2,0xEB,0xF5,0xB4,0x02,0xCD,0x10,0xC3
.pc_code: db 0xEB,0x3C,0x90 ; 3 ¡ ©â , ª®¤ ¯¥à¥å®¤  ­  § £àã§ç¨ª
; 8 ¡ ©â, OEM ID
db "DSS "
.dss_major_ver: db "1."
.dss_minor_ver: db "71"
;BPB, 17 ¡ ©â
.BPB: dw 512 ; ¡ ©â ­  ᥪâ®à
.media1: db 1 ; # 2, ᥪâ®à®¢ ­  ª« áâ¥à
.reserved: dw 1 ; § à¥§¥à¢. ᥪâ®à®¢
.fat_num: db 2 ; ç¨á«® FAT-®¢
.media2: dw 224 ; # 112, § ¯¨á¥© ¢ ª®à­¥
.media3: dw 2880 ; # 1440, ¢á¥å ᥪâ®à®¢ ­  ¤¨áª¥
.media4: db 0xF0 ; # 0xF9, ¡ ©â ä®à¬ â 
.media5: dw 9 ; # 3, ᥪâ®à®¢ ­  FAT
.media6: dw 18 ; # 9, ᥪâ®à®¢ ­  áâ®à®­ã
dw 2 ; ª®«-¢® áâ®à®­ ¤¨áª 
;extended boot-record
dw 0,0 ; áªàëâëå ᥪâ®à®¢
dw 0,0 ; ¢á¥å ᥪâ®à®¢ ­  ¤¨áª¥
dw 0 ; 䨧. ­®¬¥à ¤¨áª 
db 0x29 ; ᨣ­ âãà  à áè. boot-§ ¯¨á¨
.serial: dw 0000,0000 ; á¥à¨©­ë© ­®¬¥à ¤¨áª¥âë 2D3A:96C2
.label: db "NO NAME " ; 11 ¡ ©â, ¬¥âª  ¤¨áª¥âë
db "FAT12 " ; 8 ¡ ©â, ID ä ©«®¢®© á¨á⥬ë
;--------------;
/*
db 0xFA,0x33,0xD2,0x8E,0xD2,0xBC,0xF0,0x7B
db 0xFB,0xB8,0xC0,0x07,0x8E,0xD8,0xE8,0x89
db 0x00,0xBE,0xFE,0x00,0xFC,0xBB,0x70,0x00
db 0xE8,0x25,0x00,0x32,0xE4,0xCD,0x16,0x3C
db 0x1B,0x74,0x18,0x3C,0x0D,0x74,0x08,0x3C
db 0x20,0x74,0x04,0x3C,0x6F,0x75,0xEC,0xBE
db 0xDF,0x01,0xE8,0x0B,0x00,0xBE,0xC1,0x01
db 0xE8,0x05,0x00,0xE8,0x5C,0x00,0xCD,0x19
db 0xAC,0x0A,0xC0,0x74,0x46,0x3C,0x01,0x75
db 0x05,0xAC,0x8A,0xD8,0xEB,0xF2,0x3C,0x02
db 0x75,0x0A,0xAD,0x8B,0xD0,0x56,0xE8,0x62
db 0x00,0x5E,0xEB,0xE4,0x3C,0x03,0x75,0x0A
db 0xAC,0xA2,0x00,0x00,0x89,0x36,0x01,0x00
db 0xEB,0xD6,0x3C,0x04,0x75,0x0C,0xFE,0x0E
db 0x00,0x00,0x74,0x04,0x8B,0x36,0x01,0x00
db 0xEB,0xC6,0x33,0xC9,0xA8,0x80,0x74,0x05
db 0x24,0x7F,0x8A,0xC8,0xAC,0x41,0xE8,0x17
db 0x00,0xEB,0xB5,0x36,0xA1,0x6C,0x04,0x05
db 0x04,0x00,0x36,0x39,0x06,0x6C,0x04,0x72
db 0xF9,0xC3,0xB8,0x03,0x00,0xCD,0x10,0xC3
db 0x56,0x3C,0x0A,0x74,0x10,0xB4,0x09,0xCD
db 0x10,0x02,0xD1,0x80,0xFA,0x50,0x73,0x05
db 0xE8,0x08,0x00,0x5E,0xC3,0xFE,0xC6,0x32
db 0xD2,0xEB,0xF5,0xB4,0x02,0xCD,0x10,0xC3
; 21 ¡ ©â
db " FFORMAT Version "
db major_version + "0","."
db (minor_version / 10) + "0",(minor_version % 10) + "0"
;
db 0xBA,0x20,0x01,0x1F,0x03,0x07,0xCF,0xB0
db 0x04,0x91,0xB0,0x01,0x4E,0x80,0xC9,0xA7
db 0xCD,0x80,0xBB,0x01,0x1F,0x93,0xB0,0x03
db 0x06,0x91,0xB0,0x01,0x4E,0x80,0xBA,0xA7
db 0x20,0x80,0xBA,0x01,0x07,0x81,0xB0,0x01
db 0x1F,0x91,0xB0,0x04,0x91,0xB0,0x01,0x4E
db 0x80,0xC8,0xA7,0xCD,0x80,0xBC,0x01,0x07
db 0x81,0xB0,0x01,0x1F,0x91,0xB0,0x93,0xB0
db 0x01,0x07,0xA9,0xB0,0x01,0x1F,0x91,0xB0
db 0x03,0x07,0xCF,0xB0,0x04,0x01,0x70
db " FFORMAT Version "
db major_version + "0","."
db (minor_version / 10) + "0",(minor_version % 10) + "0"
;
db 0xBA,0x20,0x01,0x1F,0x03,0x07,0xCF,0xB0
db 0x04,0x91,0xB0,0x01,0x4E,0x80,0xC9,0xA7
db 0xCD,0x80,0xBB,0x01,0x1F,0x93,0xB0,0x03
db 0x06,0x91,0xB0,0x01,0x4E,0x80,0xBA,0xA7
db 0x20,0x80,0xBA,0x01,0x07,0x81,0xB0,0x01
db 0x1F,0x91,0xB0,0x04,0x91,0xB0,0x01,0x4E
db 0x80,0xC8,0xA7,0xCD,0x80,0xBC,0x01,0x07
db 0x81,0xB0,0x01,0x1F,0x91,0xB0,0x93,0xB0
db 0x01,0x07,0xA9,0xB0,0x01,0x1F,0x91,0xB0
db 0x03,0x07,0xCF,0xB0,0x04,0x01,0x70
; 16 ¡ ©â
db " RLE Boot record"
db 0xC6,0x20,0x01,0x4F,0x02,0x15,0x0A
db " RLE Boot record"
db 0xC6,0x20,0x01,0x4F,0x02,0x15,0x0A
; 36 ¡ ©â
db "Sorry, but this disk is not bootable"
db 0x02,0x16,0x0B
db "Sorry, but this disk is not bootable"
db 0x02,0x16,0x0B
; 33 ¡ ©â 
db "Insert SYSTEM disk into the drive"
db 0x01,0x7F,0x02,0x22,0x0D
db "Insert SYSTEM disk into the drive"
db 0x01,0x7F,0x02,0x22,0x0D
; ­¥ ­ ¦ âë© ¡ãâ®­
db "",82h,20h,01h,7Ch,"O",01h,7Fh,"k",82h,20h,""
db 0x01,0x40,0x80,0xDC,0x02,0x23,0x0E,0x89
db 0xDF,0x02,0x00,0x19,0x00,0x01,0x4E,0x02
db 0x22,0x0D,0x20,0x01,0x7F
db "",82h,20h,01h,7Ch,"O",01h,7Fh,"k",82h,20h,""
db 0x01,0x40,0x80,0xDC,0x02,0x23,0x0E,0x89
db 0xDF,0x02,0x00,0x19,0x00,0x01,0x4E,0x02
db 0x22,0x0D,0x20,0x01,0x7F
; ­ ¦ âë© ¡ãâ®­
db "",82h,20h,01h,7Ch,"O",01h,7Fh,"k",82h,20h,""
db 0x01,0x4E,0x02,0x23,0x0E,0x89,0x20,0x02
db 0x00,0x19,0x00
dw 0xAA55
db "",82h,20h,01h,7Ch,"O",01h,7Fh,"k",82h,20h,""
db 0x01,0x4E,0x02,0x23,0x0E,0x89,0x20,0x02
db 0x00,0x19,0x00
dw 0xAA55
*/

View File

@ -816,7 +816,7 @@ LstBoxInv:
PUSH DE
IN A,(Page3)
PUSH AF
LD A,(Win2)
LD A,(hPages.Win2)
OUT (Page3),A
LD A,(IY+3)
SUB (IY+2)
@ -862,7 +862,7 @@ PrnLstBox:
PUSH IX
IN A,(Page3)
PUSH AF
LD A,(Win2)
LD A,(hPages.Win2)
OUT (Page3),A
PUSH IX
POP IY
@ -1007,7 +1007,7 @@ LBB1: ld a,l
CALL GetPutA
IN A,(Page3)
PUSH AF
LD A,(Win2)
LD A,(hPages.Win2)
OUT (Page3),A
LD A,"±"
LD (DE),A
@ -1048,7 +1048,7 @@ LBe1: POP DE
CALL GetPutA
IN A,(Page3)
PUSH AF
LD A,(Win2)
LD A,(hPages.Win2)
OUT (Page3),A
LD A,"þ"
LD (DE),A

View File

@ -32,22 +32,30 @@ Packed: incbin 'build/format.hrs'
Start: ld c,0 ; ã§­ âì ¢¥àá¨î „Ž‘
RST ToDSS
ld hl,0145h ; 1.69
and a
sbc hl,de
jr c,ok ; > 1.69
ld hl,-#0147 ; 1.71
add hl,de
jr c,dss_ver_ok ; >= 1.71
;
ld hl,ver_err
ld c,5Ch
.error_exit: ld c,Dss.PChars
RST ToDSS
ld bc,#2641
.loop: ld bc,DSS_Error.sys.COMMON_ERROR*256 + Dss.Exit
RST ToDSS
ret
jr .loop
ver_err: db "Invalid DSS version, DSS 1.70 or higher is required.",0Dh,0Ah,0
ver_err: db "Invalid DSS version, DSS 1.71 or higher is required.",0Dh,0Ah,0
no_mem_err: db "Error: no free memory!",0Dh,0Ah,0
ok: LD HL,#6200 ;!HARDCODE
dss_ver_ok: ; ¢ë¤¥«ï¥¬ áâà ­¨æã ¯®¤ à á¯ ª®¢ ­­ë© ª®¤
ld bc,1*256 + Dss.GetMem
RST ToDSS
jr nc,.mem_ok
;
ld hl,no_mem_err
jr Start.error_exit
;
.mem_ok: ld (SLOT1),a
LD HL,#6200 ;!HARDCODE
LD BC,Dss.AppInfo.EXE_HomeDir
RST ToDSS
;

View File

@ -1329,7 +1329,7 @@ prne: LD A,(IY+2)
LD B,0
IN A,(Page3)
PUSH AF
LD A,(Win2)
LD A,(hPages.Win2)
OUT (Page3),A
LDI
INC DE
@ -1473,7 +1473,7 @@ SetClasInv:
LD IX,DialData
IN A,(Page3)
PUSH AF ;á®åà.page4
LD A,(Win2)
LD A,(hPages.Win2)
OUT (Page3),A ;¢ª«.¡ãä¥à
PUSH HL
LD L,C ;Len X
@ -1839,7 +1839,7 @@ ChangL1: INC HL ;Begin elements claster
POP HL ;Reset begin elem table
IN A,(Page3)
PUSH AF
LD A,(Win2)
LD A,(hPages.Win2)
OUT (Page3),A
ChangL2: LD D,(HL) ;Ypos
INC HL
@ -1906,7 +1906,7 @@ cl1: BIT 7,(HL)
;Change radio button ([x])
ChangeR: IN A,(Page3)
PUSH AF
LD A,(Win2)
LD A,(hPages.Win2)
OUT (Page3),A
LD D,(HL) ;Ypos
INC HL

@ -1 +1 @@
Subproject commit cc0a75f6bc7b141622c1c904a2db4e91d54aaf8d
Subproject commit 68e156a69e848e7b01656cdf67122022999d75ee