mirror of
https://github.com/Tolik-Trek/FFORMAT.git
synced 2026-06-15 09:21:43 +03:00
1572 lines
31 KiB
NASM
Executable File
1572 lines
31 KiB
NASM
Executable File
; <20>®àâë ‚ƒ93
|
||
REGCOM equ 0x0F ; ¯®àâ ª®¬ ¤ ¨ áâ âãá
|
||
REGTRK equ 0x3F ; ¯®àâ ¤®à®¦ª¨
|
||
REGSEC equ 0x5F ; ¯®àâ ᥪâ®à
|
||
REGDATA equ 0x7F ; ¯®àâ ¤ ëå
|
||
REGCTRL equ 0xFF ; ¯®àâ ã¯à ¢«¥¨ï
|
||
|
||
L4000 equ 0xC000 ; ¡ãä¥à áâàãªâãàë ¤®à®¦ª¨
|
||
|
||
|
||
|
||
|
||
; ”®à¬ ⨫ª
|
||
FFORMAT:ld a,2 ; ç¨á«® ¯®¯ë⮪ ¨¨æ. ‚ƒ93 ¯®á«¥ £«îª®¢
|
||
ld (try_init),a
|
||
FFORM1: call ClearMap ; ®ç¨áâ¨âì ª àâã
|
||
call Fresh ; ®¡®¢¨âì ª®áâ âë ®ª ä®à¬-¨ï
|
||
call HiddenMouse ; áªàëâì ¬ëèªã
|
||
call init_interlive ; ãáâ. ¨â¥à«¨¢ ¤«ï ¢á¥å ä®à¬ ⮢
|
||
call L0B21 ; á®§¤. ¢ áâà. BuffTrk áâàãªâãàã ¤®à®¦ª¨
|
||
ld a,(_OS)
|
||
or a
|
||
jr z,.loc1 ; ms-dos
|
||
dec a
|
||
jr nz,.loc2 ; cpm-80
|
||
; tr-dos
|
||
call SysAreaTRDOS
|
||
jr .loc2
|
||
; ms-dos
|
||
.loc1: call L09A8 ; á®§¤. á L2400.. áâàãªâãàã á¨áâ. ®¡« áâ¨
|
||
; ®âªà. ®ª® ¨¨æ. ¤¨áª®¢®¤
|
||
.loc2: ld a,(ColDialWn) ; á®åà. 梥⠮ª
|
||
ld (TmpColor),a
|
||
ld a,1Fh ; 梥⠮ª
|
||
ld (ColDialWn),a
|
||
ld hl,InitFdd ; "Resetting drive..."
|
||
call PutDialWn
|
||
call HiddenMouse ; áªàëâì ¬ëèªã
|
||
call set_1440
|
||
; Žâªàëâì ¯®àâë ‚ƒ93
|
||
ld a,SYS_PORT.CNF_3
|
||
out (SYS_PORT.RAM),a
|
||
call A0626 ; á¡à®á¨âì ª®â஫«¥à
|
||
; ¤¥àãâì £®«®¢ª®©
|
||
ld a,70
|
||
out (REGDATA),a
|
||
ld a,18h ; ¯¥à¥©â¨ § ¤ . ¤®à®¦ªã
|
||
call FDC_CMD ; § ¥á⨠ª®¬ ¤ã
|
||
call FDC_CMD.zeroTrk ; 0-î ¤®à®¦ªã
|
||
;
|
||
; ¯à®¢¥à¨âì «¨ç¨¥ ¤¨áª¥âë
|
||
call L0C65 ; â¥áâ ç⥨¥ ᥪâ®à
|
||
jr z,.loc3 ; Ok
|
||
call set_720
|
||
call L0C65 ; â¥áâ ç⥨¥ ᥪâ®à
|
||
jr z,.loc3 ; Ok
|
||
cp 0x80 ; ¯à®¢¥à塞 ®âáãâá⢨¥ ¤¨áª¥âë
|
||
jr z,Pars1 ; ¥â ¤¨áª¥âë
|
||
; â¥áâ § é¨â㠮⠧ ¯¨á¨
|
||
.loc3: call L0906 ; â¥áâ § ¯¨áì ᥪâ®à
|
||
bit 6,a
|
||
jr nz,Pars1 ; "§ é¨â § ¯¨á¨"
|
||
;
|
||
call ClsDial ; § ªàëâì ®ª®
|
||
ld a,(TmpColor)
|
||
ld (ColDialWn),a
|
||
call HiddenMouse ; áªàëâì ¬ëèªã
|
||
ld a,(Mode1) ; "Quick format"
|
||
or a
|
||
jr nz,.loc4
|
||
call L0BFF ; ä®à¬ â¨à®¢ ¨¥
|
||
call RestoreTime ; ¢®ááâ. á¨áâ. ¢à¥¬ï
|
||
jp c,Abort ; ¯à¥àë¢ ¨¥ ®¯¥à 樨
|
||
jp nz,Parsing ; ¥áâì ®è¨¡ª¨ § ¯¨á¨/ç⥨ï
|
||
;
|
||
.loc4: xor a
|
||
ld (RetCode),a ; ®ç¨áâ¨âì ª®¤ ¢®§¢à ⠮訡®ª
|
||
ld a,(ColDialWn) ; á®åà. 梥⠮ª
|
||
push af
|
||
ld a,17h ; 梥⠢뢮¤. ®ª
|
||
ld (ColDialWn),a
|
||
ld hl,SystemArea ; "Writing system area..."
|
||
call PutDialWn
|
||
call HiddenMouse ; áªàëâì ¬ëèªã
|
||
call SysWR ; § ¯¨áì á¨áâ. ®¡« áâ¨
|
||
call ClsDial ; § ªàëâì ®ª® ¤¨ «®£
|
||
pop af
|
||
ld (ColDialWn),a
|
||
;
|
||
ld a,(RetCode)
|
||
or a
|
||
jr nz,Parsing ; ¡ë«¨ ®è¨¡ª¨ ¯à¨ § ¯¨á¨ á¨áâ. ®¡« áâ¨
|
||
call FDC_CMD.zeroTrk ; 0-î ¤®à®¦ªã
|
||
; ‡ ªàëâì ¯®àâë ‚ƒ93
|
||
call Abort
|
||
ld a,(_OS)
|
||
or a
|
||
jp nz,okno1 ; ¯à¨ tr-dos, cp/m-80
|
||
;
|
||
ld a,(cSystem) ; ä« £ ª®¯¨à. á¨á⥬ëå ä ©«®¢
|
||
or a
|
||
call nz,WriteSysFiles ; § ¯¨áì á¨áâ. ä ©«®¢ ¤¨áª¥âã
|
||
;call CreateLabel ; á®§¤ âì ¬¥âªã ¤¨áª¥âë, ¥á«¨ § ¤
|
||
jp okno1 ; "”®à¬. § ¢¥à襮", ¢ë室 ¨§ äãªæ¨¨ fformat
|
||
|
||
|
||
Abort: call A0626 ; á¡à®á¨âì ª®â஫«¥à
|
||
; § ªàëâì ¯®àâë ‚ƒ93
|
||
ld a,SYS_PORT.CNF_0
|
||
out (SYS_PORT.RAM),a
|
||
ld c,1 ; ¯®ª § âì ¬ëèªã
|
||
RST ToDSS.Mouse
|
||
ret
|
||
|
||
|
||
|
||
|
||
|
||
; § ªàëâì ®ª® "Resseting drive..."
|
||
Pars1: ;¥â ¤¨áª , R/O
|
||
call ClsDial
|
||
ld a,(TmpColor)
|
||
ld (ColDialWn),a
|
||
;
|
||
; <20> §¡®à ®è¨¡®ª § ¯¨á¨/ç⥨ï
|
||
Parsing:;«î¡ë¥ ®è¨¡ª¨
|
||
call Abort
|
||
ld a,(RetCode)
|
||
bit 6,a ; ¡¨â "§ ¯à¥é¥ § ¯¨áì"
|
||
jr nz,ReadOnly
|
||
and 0x18 ; 4,3 ¡¨âë
|
||
jr z,nodisk
|
||
ld hl,try_init
|
||
dec (hl)
|
||
jp nz,FFORM1
|
||
jp okno2 ; "®è¨¡ª § ¯¨á¨ á¨áâ. ®¡« á⨠¨«¨ ¥ ᮢ¬. ä®à¬ â"
|
||
;
|
||
; ¥â ¤¨áª¥âë (ª®¤ 80h)
|
||
nodisk: call okno3 ; "‚áâ ¢ì⥠¤¨áª¥âã"
|
||
ld a,(hl)
|
||
cp cmOkey
|
||
ret nz
|
||
; ¤¨áª¥â ¢ëãâ (¢ ¯à®æ¥áᥠä®à¬-¨ï)
|
||
jp FFORM1
|
||
|
||
|
||
ReadOnly:
|
||
ld a,(ColDialWn)
|
||
push af
|
||
ld a,4Fh ; 梥⠮ª ä®à¬ â¨à®¢ ¨ï
|
||
ld (ColDialWn),a
|
||
ld hl,Protect ; "‡ é¨â ®â § ¯¨á¨"
|
||
call DialogW
|
||
pop af
|
||
ld (ColDialWn),a
|
||
ret
|
||
|
||
|
||
|
||
; —¨á«® ¯®¯ë⮪ ¨¨æ. ‚ƒ93 ¯®á«¥ ®è¨¡®ª "R/O" ¨ (¨«¨)
|
||
; "®è¨¡ª § ¯¨á¨ á¨áâ. ®¡« á⨠¨«¨ ¥ ᮢ¬. ä®à¬ â"
|
||
try_init:
|
||
db 2
|
||
|
||
|
||
|
||
|
||
|
||
; Ž¡®¢¨âì ª®áâ âë ®ª ¯à®æ¥áá ä®à¬-¨ï
|
||
Fresh: call Reset_Map ; á¡à®á¨âì tracks, side
|
||
call L0D92 ; ¢ë¢®¤ ®¬¥à ¤®à®¦ª¨
|
||
call L0D93 ; ¢ë¢®¤ áâ®à®ë
|
||
; á¡à®á¨âì ç¨á«® bad-ᥪâ®à®¢ ¨ ¤®áâã¯. ¥¬ª®áâì ¤¨áª¥âë
|
||
ld hl,-1 ; ª®à४â. ¤«ï CalcAvail
|
||
ld (BadSect),hl
|
||
ld hl,(avail1) ; ¬«.à §àï¤
|
||
ld bc,(MinusSc+1) ; 512/256/1024
|
||
add hl,bc ; ª®à४â. ¤«ï CalcAvail
|
||
ld (Avail),hl
|
||
ld hl,(avail1+2) ; ¬«.à §àï¤
|
||
ld (Avail+2),hl
|
||
jp CalcAvail ; ¢ë¢¥á⨠ç. ¤ ë¥
|
||
|
||
|
||
|
||
|
||
; ‘ªàëâì ¬ëèªã
|
||
HiddenMouse:
|
||
ld c,2
|
||
RST ToDSS.Mouse
|
||
ret
|
||
|
||
|
||
; ‚ª«. ०¨¬ 1.44Mb
|
||
set_1440:
|
||
ld a,13h ; 1.44Mb
|
||
jr set_hz
|
||
|
||
; ‚ª«. ०¨¬ 720kB
|
||
set_720:
|
||
ld a,12h ; 720kB
|
||
set_hz: ld c,8Fh ; turbo
|
||
RST ToBIOS
|
||
ret
|
||
|
||
|
||
|
||
; ‘¡à®á¨âì ª àâã ¢ ç «ì®¥ á®áâ®ï¨¥
|
||
Reset_Map:
|
||
xor a
|
||
ld (tracks),a
|
||
ld (side),a
|
||
inc a
|
||
ld (sect),a
|
||
ld a,5
|
||
ld (count),a
|
||
ld a,maska ; 05h âਡãâ ®à¬. ᥪâ®à
|
||
ld (bad),a
|
||
ld hl,0D0Fh
|
||
ld (cursor),hl ; ¢®ááâ. ¯®«®¦. ¬¥âª¨
|
||
ret
|
||
|
||
|
||
|
||
|
||
|
||
|
||
;[]======================================================[]
|
||
|
||
; ‡ ¥á⨠¢ ª®â஫«¥à ¤¨áª ¨ áâ®à®ã
|
||
L0870: ld a,(side)
|
||
xor 1 ; 1 = 0-ï áâ®à® , 0 = 1-ï áâ®à®
|
||
add a,a
|
||
add a,a
|
||
add a,a
|
||
add a,a
|
||
ld c,a
|
||
ld a,(DISK)
|
||
or c
|
||
or 00001100b ; 0Ch
|
||
out (REGCTRL),a
|
||
ret
|
||
|
||
|
||
|
||
; ‘¡à®á ‚ƒ93
|
||
; ãáâ ®¢ª ⥪. ¤¨áª ¨ 0-î áâ®à®ã
|
||
A0626: ex af,af'
|
||
ld a,(DISK) ; ¤¨áª
|
||
and 3
|
||
;ld c,a
|
||
;ld a,00011000b ; á¡à®á ‚ƒ93 ã«¥¬ 2-£® ¡¨â
|
||
;or c
|
||
or %0001'1000
|
||
out (REGCTRL),a
|
||
set 2,a ; 1Ch
|
||
out (REGCTRL),a
|
||
call A0929 ; á¡à. ª®â஫«¥à
|
||
ex af,af'
|
||
ret
|
||
|
||
|
||
;----
|
||
; ¯à¥àë¢ ¨¥ FDC
|
||
A0929: ld a,0D0h ; abort (force interrupt)
|
||
out (REGCOM),a
|
||
call delay ; delay 16 usec
|
||
in a,(REGDATA) ; ç⥨¥ ॣ¨áâà ¤ ëå (clear DRQ)
|
||
in a,(REGCOM) ; ç⥨¥ áâ âãá (clear INTRQ)
|
||
ld a,0D0h ; abort again (why?)
|
||
out (REGCOM),a
|
||
call delay ; delay 16 usec
|
||
in a,(REGCOM) ; ¯®«ãç¨âì áâ âãá (ॣ¨áâà ª®¬ ¤)
|
||
ret
|
||
|
||
delay: ; >=16. usec delay
|
||
;ld b,5
|
||
;djnz $ ; 13 T-states each
|
||
ld a,1Fh
|
||
dec a
|
||
jr nz,$-1
|
||
ret
|
||
;----
|
||
|
||
; á¡à®á ª®â஫«¥à
|
||
;A0929: ld a,0D0h
|
||
; jr A092C
|
||
; £®«®¢ªã 0-î ¤®à®¦ªã
|
||
FDC_CMD.zeroTrk:
|
||
ld a,8
|
||
; ¯®á« âì ª®¬ ¤ã
|
||
FDC_CMD: out (REGCOM),a
|
||
exx
|
||
ld b,3+3; ; 3 áç¥â稪
|
||
call delay ; ¬¨ªà®-¯ ã§
|
||
.loc2: ld de,0
|
||
.loc3: in a,(REGCOM)
|
||
;bit 7,a ; ¤¨áª¥â ¬¥ï« áì ? (NZ-¤ )
|
||
;...
|
||
rrca ; â¥áâ 0-© ¡¨â
|
||
jr nc,.loc4 ; £®â®¢
|
||
dec de
|
||
ld a,d
|
||
or e
|
||
jr nz,.loc3
|
||
djnz .loc2
|
||
.loc4: in a,(REGCOM) ; ¯®«ãç¨âì ª®¤ áâ âãá
|
||
exx
|
||
ret
|
||
|
||
|
||
|
||
|
||
; ަ¨¤ ¨¥ £®â®¢®á⨠<20>ƒŒ„
|
||
L07AF: xor a
|
||
ld (side),a ; ⥪. áâ®à®
|
||
L07B3: call L0870 ; ¢ ª®â஫«¥à áâ®à®ã ¨ ¤¨áª
|
||
ld a,3+6; ; 3 ç¨á«® ¯®¯ë⮪ ®¦¨¤ ¨ï
|
||
ld (L0ACB),a
|
||
; 横« ®¦¨¤ ¨ï
|
||
.loc1: ld hl,0
|
||
.loc2: in a,(REGCOM)
|
||
and 0x81 ; 7 ¨ 0 ¡¨âë
|
||
ret z
|
||
dec hl
|
||
ld a,h
|
||
or l
|
||
jr nz,.loc2
|
||
; ¤¥ªà¥¬¥â ¯®¯ë⮪ ®¦¨¤ ¨ï
|
||
ld hl,L0ACB ; ç¨á«® ¯®¯ë⮪
|
||
dec (hl)
|
||
jr nz,.loc1
|
||
; 3 ¯®¯ë⪨ ®¦¨¤ ¨ï § ª®ç¥ë
|
||
call A0929; ;§ ª®¬¬¥â. á¡à®á ª®â஫«¥à
|
||
;call A0626 ; á¡à®á¨âì ®¡à 饨¥ ª ‚ƒ93
|
||
ld a,0x80 ; ª®¤ - ¥â ¤¨áª
|
||
or a
|
||
ret
|
||
|
||
|
||
|
||
; ‡ ¯¨áì á¨áâ. ®¡« á⨠ms-dos ¨«¨ trd-¡ãâ
|
||
SysWR: ld a,(density)
|
||
ld c,8Fh ; turbo on/off
|
||
RST ToBIOS
|
||
xor a
|
||
ld (tracks),a
|
||
call FDC_CMD.zeroTrk ; ¯¥à¥©â¨ 0-î ¤®à®¦ªã
|
||
ld hl,L2400 ; ¡ãä¥à á¨áâ. ®¡« áâ¨
|
||
ld (L0AC8),hl
|
||
ld a,(_OS)
|
||
or a
|
||
jr z,_msdos
|
||
dec a
|
||
jr z,_trdos
|
||
ret
|
||
;jp _cpm80
|
||
; Š®¯¨àã¥â 2-î FAT ¨ § ¯¨áë¢ ¥â á¨áâ. ®¡« áâì ¤¨áª¥âë,
|
||
; ¯à¨ ¢ª«. ®¯æ¨¨ ª®¯¨àã¥â § £àã§ç¨ª Estex ¢ ᥪâ®àë 2..4.
|
||
_msdos: ld a,(MS_Boot.media5) ; ç¨á«® ᥪâ®à®¢ FAT
|
||
ld e,a
|
||
ld hl,0
|
||
ld bc,512
|
||
.loc0: add hl,bc
|
||
dec a
|
||
jr nz,.loc0
|
||
ld a,e
|
||
push hl
|
||
ld hl,0
|
||
ld de,L2400+512 ; ç «® 1-© FAT
|
||
.loc1: add hl,bc
|
||
dec a
|
||
jr nz,.loc1
|
||
pop bc
|
||
add hl,de
|
||
ex de,hl
|
||
ldir
|
||
;
|
||
; bpb boot loader
|
||
;ld a,(cSystem) ; ä« £ á®§¤ ¨ï á¨áâ. ¤¨áª¥âë
|
||
;or a
|
||
;jr z,.loc2
|
||
; ª®¯¨à. § £àã§ç¨ª Estex ¢ á¨áâ. ®¡« áâì
|
||
;ld hl,ES_Boot ; ª®¤ § £àã§ç¨ª
|
||
;ld de,L2400+512 ; ç «® 1-© FAT
|
||
;ld bc,1536 ; 512*3 ᥪâ. = à §¬¥à § £àã§ç¨ª
|
||
;ldir
|
||
; ᪮à४â. BPB ¢ ¡ãä¥à¥
|
||
;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
|
||
ld (sect),a ; 1-© ᥪâ®à (boot)
|
||
call L0870 ; áâ®à®ã ¨ ¤¨áª ¢ ª®â஫«¥à
|
||
.loopWr0: call L0906 ; § ¯¨áì ᥪâ®à
|
||
ret nz ; ®è¨¡ª¨ § ¯¨á¨
|
||
ld a,(sect) ; ⥪. ᥪâ®à
|
||
inc a
|
||
ld (sect),a
|
||
.maxSector0+1: cp 18+1 ; § ¯à¥¤¥«ìë© á¥ªâ®à
|
||
jr nz,.loopWr0
|
||
; § ¯¨áì 1-© áâ®à®ë
|
||
ld a,1
|
||
ld (side),a ; ⥪. áâ®à®
|
||
ld (sect),a ; ⥪. ᥪâ®à
|
||
call L0870 ; áâ®à®ã ¨ ¤¨áª ¢ ª®â஫«¥à
|
||
.loopWr1: call L0906 ; § ¯¨áì ᥪâ®à
|
||
ret nz ; ®è¨¡ª¨ § ¯¨á¨
|
||
ld a,(sect) ; ⥪. ᥪâ®à
|
||
inc a
|
||
ld (sect),a
|
||
.maxSector1+1: cp 18+1 ; § ¯à¥¤. ᥪâ®à ?
|
||
jr nz,.loopWr1
|
||
ret
|
||
|
||
|
||
; ‡ ¯¨áì á¨áâ. ®¡« á⨠TR-DOS.
|
||
; <20>ਠboot-¤¨áª¥ ª®à४â¨àã¥â ç «® ᢮¡. ¬¥áâ ,
|
||
; ç¨á«® ᢮¡. ᥪâ®à®¢ ¨ ç¨á«® § ¯¨á. ä ©«®¢
|
||
_trdos: xor a ; ¢ëç¨á«¨âì ç¨á«® ᢮¡. ᥪâ®à®¢
|
||
ld hl,(BadSect)
|
||
ex de,hl
|
||
ld hl,2544 ; ®¡é¥¥ ç¨á«® ᥪâ®à®¢
|
||
sbc hl,de ; ¬¨ãá bad-ᥪâ®àë
|
||
ld (L2400+2277),hl ; ç¨á«® ᢮¡. ᥪâ®à®¢
|
||
ld e,16 ; ¯à¥¤ãáâ ®¢ª
|
||
;
|
||
ld a,(sFlag1)
|
||
or a
|
||
jr nz,.loc8 ; ®è¨¡ª¨ à ¡®âë á ä ©«®¬ "boot.$b"
|
||
ld a,(cSystem) ; ä« £ á®§¤ ¨ï boot-¤¨áª¥âë
|
||
or a
|
||
jr z,.loc8 ; ¥ § £àã§®ç ï
|
||
;
|
||
call copy1 ; ᪮¯¨à®¢ âì ⥫® ¡ãâ
|
||
ld a,(NameBt+14)
|
||
ld c,a
|
||
add a,e
|
||
ld e,a ; e=1000h+à §¬¥à ¡ãâ
|
||
xor a
|
||
ld b,a
|
||
sbc hl,bc ; ¬¨ãá à §¬¥à ¡ãâ (¢ ᥪâ®à å)
|
||
; ç¨á«® ä ©«®¢, § ¯¨á. ¤¨áª
|
||
inc a
|
||
ld (L2400+2276),a
|
||
; § ¥á⨠ॠ«ì®¥ ç¨á«® ᢮¡. ᥪâ®à®¢
|
||
ld (L2400+2277),hl
|
||
; ¢ëç¨á«. ç «® ᢮¡. ¬¥áâ
|
||
ld a,c
|
||
cp 16
|
||
jr c,.loc6 ; à §¬¥à ¡ãâ ¬¥ìè¥ 16-⨠ᥪâ®à®¢
|
||
add a,10h
|
||
rrca
|
||
rrca
|
||
rrca
|
||
rrca
|
||
ld h,a
|
||
ld l,b
|
||
jr .loc7
|
||
.loc6: ld hl,0100h
|
||
add hl,bc
|
||
.loc7: ld (L2400+2273),hl ; ç «® ᢮¡. ¬¥áâ ¤¨áª¥
|
||
;
|
||
.loc8: call L07AF ; ®¦¨¤ ¨¥ £®â®¢®á⨠£¬¤
|
||
.loc2: ld a,1 ; á 1-£® ᥪâ®à
|
||
ld (sect),a
|
||
call L0870 ; áâ®à®ã ¨ ¤¨áª ¢ ª®â஫«¥à
|
||
.loc3: call L0906 ; § ¯¨áì ᥪâ®à
|
||
ret nz ; ®è¨¡ª¨ § ¯¨á¨
|
||
dec e
|
||
ld a,(sect) ; ⥪. ᥪâ®à
|
||
inc a
|
||
ld (sect),a
|
||
cp 16+1 ; § ¯à¥¤. ᥪâ®à
|
||
jr nz,.loc3
|
||
; á«¥¤. áâ®à®
|
||
ld a,(side)
|
||
xor 1
|
||
ld (side),a
|
||
ld a,e
|
||
or a
|
||
ret z ; § ¯¨á ⮫쪮 á¨áâ. ®¡« áâì
|
||
sub 16
|
||
jr c,.loc4 ; ®áâ ⮪ ¬¥ìè¥ 16-⨠ᥪâ®à®¢
|
||
ld a,(side)
|
||
or a
|
||
call z,NxtTrack
|
||
jr .loc2
|
||
;
|
||
.loc4: add a,16 ; a=®áâ ⮪ ᥪâ®à®¢
|
||
ld b,a
|
||
ld a,1 ; á 1-£® ᥪâ®à
|
||
ld (sect),a
|
||
exx
|
||
call L0870 ; áâ®à®ã ¨ ¤¨áª ¢ ª®â஫«¥à
|
||
exx
|
||
.loc5: push bc
|
||
call L0906 ; § ¯¨áì ᥪâ®à
|
||
pop bc
|
||
ret nz ; ®è¨¡ª¨ § ¯¨á¨
|
||
ld hl,sect ; ⥪. ᥪâ®à
|
||
inc (hl)
|
||
djnz .loc5
|
||
ret
|
||
|
||
; ‘ª®¯¨à®¢ âì ⥫® ¡ãâ ¨§ ¡ãä¥à TRBoot ¢ ¡ãä¥à L2400+1000h
|
||
copy1: exx
|
||
in a,(SLOT1)
|
||
ex af,af'
|
||
ld a,(hPages.TRBoot)
|
||
out (SLOT1),a ; ¯®¤ª«. ¡ãä¥à
|
||
ld hl,4000h ; ç «® SLOT1
|
||
ld de,L2400+1000h
|
||
SizeBt: ld bc,4000h
|
||
ldir
|
||
ex af,af'
|
||
out (SLOT1),a ; ¯®¤ª«. ¡ãä¥à
|
||
exx
|
||
ret
|
||
|
||
; § £®«®¢®ª ¡ãâ "boot.$b"
|
||
NameBt: ds 17
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
L0906: ld a,(sect) ; ⥪. ᥪâ®à
|
||
out (REGSEC),a ; ॣ¨áâà ᥪâ®à
|
||
ld a,0xA0 ; § ¯¨áì ᥪâ®à
|
||
; ‡€<E280A1>ˆ‘œ ‘…Š’Ž<E28099>€ (¤®à®¦ª¨)
|
||
; 0x00 - Ok
|
||
; 0x40 - Read-Only
|
||
; 0x80 - No disk
|
||
; Z - ¡¥§ ®è¨¡®ª, NZ - ®è¨¡ª¨
|
||
; Š®¤ë ¢®§¢à â ¤¥©á⢨⥫ìë ¯à¨ § ¯¨á¨ ᥪâ®à®¢.
|
||
A0875: push de
|
||
ld hl,(L0AC8) ; ¤à¥á ¡ãä¥à
|
||
ld de,0
|
||
ld b,4 ; áç¥â稪
|
||
di
|
||
ld c,REGDATA ; ¯®àâ ¤ ëå
|
||
out (REGCOM),a ; ¯®á« âì ª®¬ ¤ã
|
||
.loc1: in a,(REGCTRL)
|
||
and 0C0h
|
||
jr nz,.loc2
|
||
dec de
|
||
ld a,e
|
||
or d
|
||
jr nz,.loc1
|
||
djnz .loc1
|
||
ld a,0x80
|
||
jr .loc4 ; ¥â ¤¨áª
|
||
.loc2: outi ; (hl) -> ¢ ¯®àâ
|
||
.loc3: in a,(REGCTRL)
|
||
and 0C0h
|
||
jr z,.loc3
|
||
jp p,.loc2
|
||
in a,(REGCOM)
|
||
.loc4: ld (RetCode),a
|
||
ld (L0AC8),hl
|
||
pop de
|
||
ei
|
||
ex af,af'
|
||
call A0929
|
||
ex af,af'
|
||
or a
|
||
ret
|
||
|
||
|
||
|
||
; ‡ ¯¨áì ¤®à®¦ª¨
|
||
L091B: in a,(SLOT3)
|
||
push af
|
||
ld a,(hPages.BuffTrk)
|
||
out (SLOT3),a ; ¯®¤ª«. ¡ãä¥à áâàãªâãàë ¤®à®¦ª¨
|
||
ld hl,L4000 ; ç «® ¤ ëå
|
||
ld (L0AC8),hl
|
||
call L0870 ; ¢ ª®â஫«¥à áâ®à®ã ¨ ¤¨áª
|
||
ld a,(tracks) ;- ⥪. ¤®à®¦ª
|
||
out (REGTRK),a ;- ॣ¨áâà ¤®à®¦ª¨
|
||
ld a,0xF4 ; § ¯¨áì ¤®à®¦ª¨
|
||
call A0875
|
||
pop af
|
||
out (SLOT3),a
|
||
ret
|
||
|
||
|
||
|
||
; “áâ. £®«®¢ªã á«¥¤. ¤®à®¦ªã
|
||
NxtTrack:
|
||
ld hl,tracks
|
||
inc (hl)
|
||
; “áâ. £®«®¢ªã ⥪. ¤®à®¦ªã
|
||
L0759: ld a,(tracks) ; ⥪. ¤®à®¦ª
|
||
out (REGDATA),a ; ॣ¨áâà ¤ ëå
|
||
ld a,18h ; ¯¥à¥©â¨ § ¤ . ¤®à®¦ªã
|
||
jp FDC_CMD ; § ¥á⨠ª®¬ ¤ã
|
||
|
||
|
||
|
||
|
||
|
||
; —’…<E28099>ˆ… ‘…Š’Ž<E28099>€.
|
||
; —⥨¥ ¯à®¨á室¨â ¢ ¨ªã¤ , â.¥. ¢¥à¨ä¨ª æ¨ï.
|
||
; Read-Only ¥ «®¢¨â
|
||
; 0x00 - Ok
|
||
; 0x08 - ®è¨¡ª CRC
|
||
; 0x10 - ¥ ©¤¥ë âà¥¡ã¥¬ë¥ ¤®à®¦ª , ᥪâ®à ¨«¨ áâ®à®
|
||
; 0x80 - No disk
|
||
; Z - ¡¥§ ®è¨¡®ª, NZ - ®è¨¡ª
|
||
L0C65: ld a,(sect) ; ⥪. ᥪâ®à
|
||
out (REGSEC),a ; ¢ ॣ¨áâà ᥪâ®à
|
||
ld a,(side) ; ⥪. áâ®à®
|
||
add a,a
|
||
add a,a
|
||
add a,a
|
||
or 0x80
|
||
; 0-ï áâ®à® : 80h
|
||
; 1-ï áâ®à® : 88h
|
||
call FDC_CMD ; § ¥á⨠ª®¬ ¤ã
|
||
di
|
||
ld c,REGCOM
|
||
ld b,3 ; áç¥â稪 ¯®¯ë⮪
|
||
.loc1: ld de,0 ; áç¥â稪
|
||
.loc2: in a,(c)
|
||
and 0x18 ; 4,3-© ¡¨âë
|
||
jr nz,.loc6 ; ®è¨¡ª
|
||
in a,(REGDATA)
|
||
dec de
|
||
ld a,d
|
||
or e
|
||
jr nz,.loc3
|
||
djnz .loc1
|
||
ld a,0x80 ; ª®¤ "¥â ¤¨áª "
|
||
or a
|
||
jr .loc5
|
||
.loc3: in a,(c)
|
||
and 1 ; 0-© ¡¨â
|
||
jr nz,.loc2 ; ª®âà. § ïâ
|
||
in a,(c)
|
||
and 0x18 ; â¥áâ 4,3-© ¡¨âë
|
||
.loc5: ld (RetCode),a
|
||
ei
|
||
ex af,af'
|
||
call A0929
|
||
ex af,af'
|
||
or a
|
||
ret
|
||
.loc6: djnz .loc1
|
||
jr .loc5
|
||
|
||
|
||
; —⥨¥ (¢¥à¨ä¨ª æ¨ï) ᥪâ®à®¢ ®¤®© áâ®à®ë
|
||
; Z - Ok
|
||
; NZ - ¥áâì ®è¨¡ª¨
|
||
; "CY" - ¯à®æ¥áá ¯à¥à¢
|
||
L0C87: ld a,maska ; 05h
|
||
ld (bad),a ; ¯à¨§ ª ®à¬. ᥪâ®à
|
||
ld (flg_bad+1),a ; á¡à. ä« £ «¨ç¨ï bad-ᥪâ®à®¢
|
||
ld (flg_wrn+1),a ; á¡à. ä« £ «¨ç¨ï warn-ᥪâ®à®¢
|
||
ld a,1
|
||
ld (sect),a ; ⥪. ᥪâ®à
|
||
call L0870 ; áâ®à®ã ¨ ¤¨áª ¢ ª®â஫«¥à
|
||
L0C8C: ld a,3+1 ; 3 ¯®¯ë⪨
|
||
ld (L0C63),a ; ⥪. ¯®¯ë⪨ ç⥨ï ᥪâ®à
|
||
L0C91: call L0D25 ; ¯à¨§ ª ¦ â¨ï ª« ¢¨è¨
|
||
ret c ; ¯à®æ¥áá ¯à¥à¢
|
||
call L0C65 ; â¥áâ ç⥨¥ ᥪâ®à
|
||
jr z,L0CC3 ; ¡¥§ ®è¨¡®ª
|
||
; «¨§ ®è¨¡ª¨
|
||
cp 0x80
|
||
jr z,L0CB7 ; ®âáãâáâ¢ã¥â ¤¨áª
|
||
; ᥪâ®à ¥ ç¨â ¥âáï
|
||
xor a
|
||
ld (flg_wrn+1),a ; ãáâ. ä« £ "¡ë«¨ ¯®¤®§à. ᥪâ®àë"
|
||
ld hl,L0C63 ; ⥪. ¯®¯ë⪨ ç⥨ï ᥪâ®à
|
||
dec (hl) ; 㬥ìè¨âì ç¨á«® ¯®¯ë⮪
|
||
jr nz,L0C91 ; ¯®¢â®à¨âì ç⥨¥
|
||
; ¢á¥ ¯®¯ë⪨ ¨á⥪«¨
|
||
ld a,(tracks) ; ⥪. ¤®à®¦ª
|
||
or a ; ã«¥¢ ï ?
|
||
jr nz,L0CB8
|
||
; ¯«®å ï ã«¥¢ ï ¤®à®¦ª ( ¯ àᨣ ®è¨¡®ª)
|
||
L0CB7: xor a
|
||
dec a
|
||
ret
|
||
; Žâ¬¥â¨âì ᥪâ®à ª ª "BAD"
|
||
L0CB8: xor a
|
||
ld (flg_bad+1),a ; ãáâ. ä« £ "¡ë«¨ bad-ᥪâ®àë"
|
||
ld a,(_OS) ; ⨯ Ž‘-¨ ms-dos ?
|
||
or a
|
||
call z,L0ACF ; ¢ëç¨á«¨âì ï祩ªã bad-ᥪâ®à ¢ FAT-¥
|
||
push bc
|
||
call CalcAvail ; ++bad-ᥪâ. á ¢ë¢®¤®¬ "Available bytes"
|
||
pop bc
|
||
L0CC3: ld hl,sect
|
||
inc (hl) ; ¨ªà¥¬¥â ⥪. ᥪâ®à
|
||
loc06: ld a,18+1
|
||
cp (hl) ; § ¯à¥¤. ᥪâ®à ?
|
||
jr nz,L0C8C ; ç¨â âì á«¥¤. ᥪâ®à
|
||
; ¢á¥ ᥪâ®àë áâ®à®ë ¯à®ç¨â ë
|
||
flg_bad:ld a,1
|
||
or a
|
||
jr z,_done1 ; ¡ë«¨ "bad"
|
||
flg_wrn:ld a,1
|
||
or a
|
||
jr z,_done2 ; ¡ë«¨ "warn"
|
||
xor a
|
||
ret
|
||
;
|
||
_done1: ld a,2
|
||
ld (bad),a
|
||
xor a
|
||
ret
|
||
_done2: xor a
|
||
ld (bad),a
|
||
ret
|
||
|
||
|
||
|
||
|
||
|
||
|
||
;[]==============================================================[]
|
||
|
||
; ¢ëç¨á«¨âì ï祩ªã bad-ᥪâ®à ¢ FAT-¥
|
||
L0ACF: ld hl,(MS_Boot.media6) ; ᥪâ®à®¢ áâ®à®ã
|
||
add hl,hl ; *2 (ᥪâ®à®¢ ¢áî ¤®à®¦ªã)
|
||
ex de,hl
|
||
ld hl,0
|
||
ld a,(tracks) ; ⥪. ¤®à®¦ª
|
||
L0AD8: add hl,de
|
||
dec a
|
||
jr nz,L0AD8
|
||
ld a,(side) ; ⥪. áâ®à®
|
||
or a
|
||
jr z,L0AE8
|
||
ld de,(MS_Boot.media6) ; ᥪâ®à®¢ áâ®à®ã
|
||
add hl,de
|
||
L0AE8: ld a,(sect) ; ⥪. ᥪâ®à
|
||
ld e,a
|
||
add hl,de
|
||
ld a,(LastSect) ; ®¬¥à ¯®á«. á«ã¦. ᥪâ®à ¤¨áª¥âë
|
||
cpl
|
||
inc a
|
||
ld e,a
|
||
ld d,0xFF
|
||
add hl,de
|
||
xor a
|
||
ld a,h
|
||
rra
|
||
ld h,a
|
||
ld a,l
|
||
rra
|
||
ld l,a
|
||
ld a,(MS_Boot.media1) ; ᥪâ®à®¢ ª« áâ¥à
|
||
ld e,a
|
||
ld d,0
|
||
add hl,de
|
||
; <20>®¬¥ç ¥â ¢ ¡ãä¥à¥ FAT- bad-ᥪâ®à
|
||
push hl
|
||
push de
|
||
ld a,l
|
||
rrca ; ç¥âë©/¥ ç¥âë© ?
|
||
jr nc,L0A1C ; ç¥âë© á¥ªâ®à
|
||
call L0A2C
|
||
ld a,(hl)
|
||
and 0x0F
|
||
or 0x70
|
||
ld (hl),a
|
||
inc hl
|
||
ld (hl),0xFF
|
||
jr L0A28
|
||
L0A1C: call L0A2C
|
||
ld (hl),0xF7
|
||
inc hl
|
||
ld a,(hl)
|
||
and 0xF0
|
||
or 0x0F
|
||
ld (hl),a
|
||
L0A28: xor a
|
||
pop de
|
||
pop hl
|
||
ret
|
||
L0A2C: push hl
|
||
xor a
|
||
ld a,h
|
||
rra
|
||
ld h,a
|
||
ld a,l
|
||
rra
|
||
ld l,a
|
||
pop de
|
||
add hl,de
|
||
ld de,L2400+512 ; ç «® 1-© FAT
|
||
add hl,de
|
||
ret
|
||
|
||
|
||
|
||
|
||
;[]============================================[]
|
||
; “áâ ®¢ª á¬¥é¥¨ï ¯®à浪®¢ëå ®¬¥à®¢
|
||
; ᥪâ®à®¢ +2 («ãç訩 ¢ ਠâ).
|
||
;
|
||
add_offset:
|
||
ld hl,(MS_Boot.media6) ; ç¨á«® ᥪâ®à®¢ ¢ ⥪. ä®à¬ â¥
|
||
ld a,(_OS) ; ⨯ Ž‘-¨
|
||
or a
|
||
jr z,.loc0 ; ms-dos
|
||
ld l,16 ; ç¨á«® ᥪâ®à®¢ tr-dos
|
||
dec a
|
||
ret nz ; cpm/80
|
||
.loc0: ld c,l
|
||
ld b,0
|
||
ld hl,(INTERL+1) ; ¬ áᨢ ®¬¥à®¢ ᥪâ®à®¢
|
||
ld d,h
|
||
ld e,l
|
||
add hl,bc ; ¢ ª®¥æ ¬ áᨢ
|
||
ld b,c
|
||
inc b
|
||
.loc1: ld a,(hl)
|
||
push af ; ª®¯¨âì ¢ á⥪¥ ®¬¥à ᥪâ®à®¢
|
||
dec hl
|
||
djnz .loc1
|
||
inc hl
|
||
;
|
||
inc hl ;- ᬥé. 2 ᥪâ®à
|
||
inc hl ;-
|
||
ld b,c
|
||
dec b ;- ç¨á«® ᥪâ®à®¢ - 2
|
||
dec b ;-
|
||
.loc2: pop af
|
||
ld (hl),a
|
||
inc hl
|
||
djnz .loc2
|
||
;
|
||
pop af
|
||
ld (de),a
|
||
inc de
|
||
pop af
|
||
ld (de),a
|
||
pop af ; ¢ë஢ïâì ¡ « á á⥪
|
||
ret
|
||
|
||
|
||
; “áâ ®¢¨âì ¨â¥à«¨¢ ¤«ï ¢á¥å ä®à¬ ⮢
|
||
init_interlive:
|
||
; ¤«ï 720kB, 1.44Mb..1.64Mb
|
||
ld b,20 ; ç¨á«® ᥪâ®à®¢
|
||
ld hl,INTERL1
|
||
ld c,1
|
||
.loc1: ld (hl),c
|
||
inc c
|
||
inc hl
|
||
djnz .loc1
|
||
; ¤«ï 1.68Mb..1.74Mb
|
||
ld b,10
|
||
ld de,010Ch ; c=12
|
||
call .loc2
|
||
ld (hl),d
|
||
inc hl
|
||
; ¤«ï 800kB..830kB
|
||
ld b,5
|
||
ld de,0106h
|
||
call .loc2
|
||
; ¤«ï TR-DOS
|
||
ld b,8
|
||
ld de,0109h
|
||
.loc2: ld (hl),d
|
||
inc hl
|
||
ld (hl),e
|
||
inc d
|
||
inc e
|
||
inc hl
|
||
djnz .loc2
|
||
ret
|
||
|
||
|
||
|
||
; ’ ¡«¨æë ¨â¥à«¨¢®¢ ᥪâ®à®¢
|
||
;
|
||
; 720kB, 1.44Mb..1.64Mb
|
||
INTERL1:ds 20 ; 1,2,3,...20
|
||
|
||
; 1.68Mb..1.74Mb
|
||
INTERL2:ds 21 ; 1,x,2,x,3,x,... (¨â¥à«¨¢ = 2)
|
||
|
||
; 800kB..830kB
|
||
INTERL3:ds 10 ; ¨â¥à«¨¢ = 2
|
||
|
||
; TR-DOS
|
||
INTERL4:ds 16 ; ¨â¥à«¨¢ = 2
|
||
|
||
|
||
|
||
|
||
; <20>®«ãç¨âì ⥪. ®¬¥à ᥪâ®à ¨§ â ¡«¨æë
|
||
; ¨â¥à«¨¢ ¨ áâநâì à ¡. ï祩ªã
|
||
L0B05: push hl
|
||
ld a,(L0BA9) ; áç¥â稪 ᥪâ®à®¢
|
||
ld c,a
|
||
ld b,0
|
||
INTERL: ld hl,INTERL1 ; â ¡«¨æ ¨â¥à«¨¢ ᥪâ®à®¢
|
||
add hl,bc
|
||
ld a,(hl) ; ¯®«ãç¨âì ¨â¥à«¨¢ ᥪâ®à
|
||
ld (sect),a ; ⥪. ᥪâ®à
|
||
pop hl
|
||
ret
|
||
|
||
|
||
|
||
; à §¬¥à GAP1-
|
||
GAP1 equ 50
|
||
|
||
; ¬¥¦á¥ªâ®àë© ¯à®¡¥« (¯¥à¥¬. ¢¥«¨ç¨ , § ¤ ¥âáï ¯à¨ ä®à¬ â¨à®¢ ¨¨)
|
||
GAP3 dw 108 ; ¯®-㬮«ç ¨î ¤«ï 1.44Mb
|
||
|
||
; <20>®¤£®â®¢¨âì § £®«®¢ª¨ ᥪâ®à®¢ ¤®à®¦ª¨ (®¤®© áâ®à®ë)
|
||
L0BAA: in a,(SLOT3)
|
||
push af
|
||
ld a,(hPages.BuffTrk)
|
||
out (SLOT3),a ; ¯®¤ª«. ¡ãä¥à ¤®à®¦ª¨
|
||
xor a
|
||
ld (L0BA9),a ; ®¡ã«¨âì áç¥â稪 ᥪâ®à®¢
|
||
;
|
||
ld hl,GAP1+16
|
||
ld (L0BB5+1),hl
|
||
ld a,GAP1
|
||
ld (GAP+1),a
|
||
ld hl,L4000+96 ; ¯¥à¥©â¨ ç «® ᥪâ®à (®¡®©â¨ GAP4A)
|
||
;
|
||
; 横« ¨¨æ. § £®«®¢ª®¢ ᥪâ®à®¢
|
||
L0BB2: call L0B05 ; ¯®«ãç¨âì ⥪. ®¬¥à ᥪâ®à ¨§ â ¡«¨æë ¨â¥à«¨¢
|
||
L0BB5: ld bc,GAP1+16 ;# ¯¥à¥©â¨ § £®«®¢®ª ᥪâ®à (66=GAP1+12á¨åà®+IDAM)
|
||
add hl,bc ; hl= ¤à¥á § £®«®¢ª
|
||
exx
|
||
ld bc,16 ; 12 á¨åà®-¡ ©â + IDAM
|
||
ld hl,(GAP3)
|
||
add hl,bc
|
||
ld (L0BB5+1),hl ; ãáâ. ¬¥¦á¥ªâ. ¯à®¡¥«
|
||
exx
|
||
; § £®«®¢®ª ᥪâ®à
|
||
ld a,(tracks) ; ⥪. ¤®à®¦ª
|
||
ld (hl),a
|
||
inc hl
|
||
;
|
||
ld a,(_OS)
|
||
or a
|
||
jr z,.loc1
|
||
dec a
|
||
jr z,.loc2 ; ¤«ï TR-DOS ¢á¥£¤ 0-ï áâ®à®
|
||
;
|
||
.loc1: ld a,(side) ; ⥪. áâ®à®
|
||
.loc2: ld (hl),a
|
||
inc hl
|
||
ld a,(sect) ; ⥪. ᥪâ®à
|
||
ld (hl),a
|
||
inc hl
|
||
L0BB6: ld bc,553 ; ¯®á«¥ § £®«®¢ª ᥪâ®à ¤® ª®æ ᥪâ®à
|
||
add hl,bc
|
||
ld a,(L0BA9) ; áç¥â稪 ⥪. ᥪâ®à
|
||
inc a
|
||
ld (L0BA9),a
|
||
loc05: cp 18 ; ¯®á«. ᥪâ®à ?
|
||
jr nz,L0BB2
|
||
pop af
|
||
out (SLOT3),a ; ¢®ááâ. à ¡. áâà ¨æã
|
||
ret
|
||
|
||
|
||
|
||
; ‘®§¤ ¥â ¢ ¡ãä¥à¥ áâàãªâãàã ¤®à®¦ª¨
|
||
; <20>ãä¥à: 0xC000..0xFFFF
|
||
L0B21: in a,(SLOT3)
|
||
push af
|
||
ld a,(hPages.BuffTrk)
|
||
out (SLOT3),a ; ¯®¤ª«. ¡ãä¥à ¤®à®¦ª¨
|
||
call CLEAR ; § ¯®«¨âì ¡ãä¥à ª®¤®¬ 0x4E
|
||
ld hl,L4000 ; ç «® ¡ãä¥à ¤ ëå ¤®à®¦ª¨
|
||
xor a
|
||
ld (L0BA9),a ; ®¡ã«¨âì áç¥â稪 ᥪâ®à®¢
|
||
; <20> ç «® ¤®à®¦ª¨
|
||
; GAP4A, 80 ¡ ©â
|
||
ld bc,504Eh ; 80 ¡ ©â 4Eh
|
||
call FILL ; c -> (hl), dec b
|
||
ld bc,0C00h ; 12 á¨åà®-¡ ©â
|
||
call FILL
|
||
ld bc,03F6h ; 3 ¡ ©â F6 |
|
||
call FILL ; | IAM
|
||
ld (hl),0FCh ; 1 ¡ ©â FC |
|
||
inc hl
|
||
; ç «® ᥪâ®à (+96 ¯¥à¢®£® ᥪâ®à ®â ç. ¤®à®¦ª¨)
|
||
L0B3E: ; GAP1, 50 ¡ ©â
|
||
GAP: ld b,GAP1 ; GAP1/GAP3
|
||
ld c,4Eh
|
||
call FILL ; c -> (hl), dec b
|
||
; á¨åà®-¡ ©âë
|
||
ld bc,0C00h ; 12 á¨åà®-¡ ©â®¢
|
||
call FILL
|
||
;
|
||
ld bc,03F5h ; 3 ¡ ©â F5 ¬ થà |
|
||
call FILL ; | IDAM
|
||
ld (hl),0FEh ; ¨ FE, ¥£® ¨¤¥â¨ä¨ª â®à |
|
||
inc hl
|
||
; ‡ £®«®¢®ª ᥪâ®à
|
||
ld bc,0300h ; 3 ¡ ©â § £®«®¢ª ᥪâ®à
|
||
call FILL
|
||
SecCode:ld (hl),2 ; ª®¤ à §¬¥à ᥪâ®à
|
||
inc hl
|
||
ld (hl),0F7h ; 1 ¡ ©â CRC
|
||
inc hl
|
||
ld bc,164Eh ; 22 ¡ ©â GAP2
|
||
call FILL
|
||
ld bc,0C00h ; 12 á¨åà®-¡ ©â®¢
|
||
call FILL
|
||
; DATA AM
|
||
ld bc,03F5h ; 3 ¡ ©â ¬ થà
|
||
call FILL
|
||
ld (hl),0FBh ; ¨ ¥£® ¨¤¥â¨ä¨ª â®à
|
||
inc hl
|
||
; Ž¡« áâì ¤ ëå
|
||
ld bc,00E5h ; 256 ¡ ©â®¢ § ¯®«¨â¥«ï
|
||
call FILL ; c -> (hl), dec b
|
||
ld a,(_OS) ; ⨯ ⥪ã饩 Ž‘
|
||
or a
|
||
jr z,.loc1 ; ms-dos
|
||
dec a
|
||
jr z,.loc2 ; tr-dos
|
||
; cpm-80
|
||
ld bc,00E5h ; 256
|
||
call FILL
|
||
ld bc,00E5h ; 256
|
||
call FILL
|
||
.loc1: ld bc,00E5h ; 256
|
||
call FILL
|
||
; CRC ®¡« á⨠¤ ëå
|
||
.loc2: ld (hl),0F7h ; 1 ¡ ©â
|
||
; Š®¥æ ᥪâ®à
|
||
inc hl
|
||
ld a,(GAP3)
|
||
ld (GAP+1),a ; ãáâ. ¬¥¦á¥ªâ. ¯à®¡¥«
|
||
ld a,(L0BA9) ; áç¥â稪 ®¬¥à ⥪. ᥪâ®à
|
||
inc a
|
||
ld (L0BA9),a
|
||
loc08: cp 18 ; ¯®á«¥¤¨© ᥪâ®à ?
|
||
jr nz,L0B3E
|
||
; GAP4B, ®áâ ⮪ ¤®à®¦ª¨ (¡ãä¥à 㦥 § ¯®«¥ 0x4E)
|
||
pop af
|
||
out (SLOT3),a ; ¢ª«. à ¡®çãî áâà ¨æã 0xC000
|
||
ret
|
||
|
||
FILL: ld (hl),c
|
||
inc hl
|
||
djnz FILL
|
||
ret
|
||
|
||
|
||
; ‡ ¯®«¥¨¥ ¡ãä¥à áâàãªâãàë ¤®à®¦ª¨ ª®¤®¬ 0x4E
|
||
CLEAR: ld (L0ACD),sp
|
||
ld sp,0 ; § ¯®«¥¨¥ á 0xFFFF
|
||
ld bc,0x4E4E ; ª®¤ § ¯®«¥¨ï
|
||
.loc1: push bc
|
||
ld hl,0
|
||
add hl,sp
|
||
ld a,h
|
||
cp 0xC0 ; áâ. ¡ ©â ¨¦¥© £à ¨æë
|
||
jr nz,.loc1
|
||
ld a,l
|
||
or a
|
||
jr nz,.loc1
|
||
ld sp,(L0ACD)
|
||
ret
|
||
|
||
|
||
|
||
|
||
; ‘®§¤ ¥â ¢ ¡ãä¥à¥ á¨á⥬ãî ®¡« áâì ¤¨áª¥âë (boot-ᥪâ®à, FAT, Root dir).
|
||
; <20>ãä¥à: L2400...
|
||
; ¬ ªá. ¤«¨ ®¡« áâ¨: 0x4C00 ¤«ï 1.74Mb
|
||
L09A8: ld de,L2400 ; ¡ãä¥à Boot-ᥪâ®à
|
||
ld hl,MS_Boot ; ms-dos boot-ᥪâ®à
|
||
ld bc,MS_Boot.SIZE ; ¤«¨ boot-
|
||
ldir ;!TEST
|
||
ex de,hl ; hl = ç «® FAT ¢ ¡ãä¥à¥
|
||
loc07: ld bc,16896 ; 6656/16896 ¤«¨ FAT-®¢ + Root dir
|
||
ld e,0 ; ¡ ©â § ¯®«¥¨ï
|
||
call L0994 ; ¯¥à¥ª çª ¥ -> (hl)
|
||
ld a,(MS_Boot.media4) ; ¡ ©â-®¯¨á ⥫ì ä®à¬ â ¤¨áª
|
||
ld hl,L2400+512
|
||
ld (hl),a ; § ¥á⨠¯¥à¢ë¬ ¡ ©â®¬ ¢ FAT
|
||
inc hl
|
||
ld (hl),0FFh ; 2 ¨ 3-© ¡ ©âë FAT
|
||
inc hl
|
||
ld (hl),0FFh
|
||
call CreateLabel ; á®§¤ âì ¬¥âªã ¤¨áª¥âë, ¥á«¨ § ¤
|
||
call CreateSerialNumber
|
||
ret
|
||
|
||
L0994: ld (hl),e
|
||
inc hl
|
||
dec bc
|
||
ld a,b
|
||
or c
|
||
jr nz,L0994
|
||
ret
|
||
|
||
|
||
|
||
|
||
; <20> áâநâì ä®à¬ ⨫ªã ⥪. ä®à¬ â ¤¨áª¥âë
|
||
FSETUP: ld a,(_OS)
|
||
or a
|
||
jr nz,noMSDOS
|
||
.sectorsAll+1: ld a,18 ; ç¨á«® ᥪâ®à®¢
|
||
ld (loc05+1),a
|
||
ld (loc08+1),a
|
||
.sectorsSide+1: ld hl,18 ; ᥪâ®à®¢ áâ®à®ã
|
||
ld (MS_Boot.media6),hl
|
||
inc a ; § ¯à¥¤. ᥪâ®à
|
||
ld (_msdos.maxSector0),a
|
||
ld (_msdos.maxSector1),a
|
||
ld (loc06+1),a
|
||
.lastSector+1: ld a,34 ; ¯®á«. á«ã¦. ᥪâ®à ¤¨áª¥âë
|
||
ld (LastSect),a
|
||
.sectorsPerCluster+1:
|
||
ld a,1 ; ᥪâ®à®¢ ª« áâ¥à
|
||
ld (MS_Boot.media1),a
|
||
frm4: ld a,0xF0 ; ¡ ©â ä®à¬ â
|
||
ld (MS_Boot.media4),a
|
||
frm5: ld hl,16896 ; à §¬¥à FAT-®¢ + Root dir
|
||
ld (loc07+1),hl
|
||
frm6: ld hl,224 ; § ¯¨á¥© ¢ ª®à¥
|
||
ld (MS_Boot.media2),hl
|
||
ASect: ld hl,2880 ; ᥪâ®à®¢ ¤¨áª¥
|
||
ld (MS_Boot.media3),hl
|
||
FSect: ld hl,9 ; ᥪâ®à®¢ FAT
|
||
ld (MS_Boot.media5),hl
|
||
ret
|
||
;
|
||
noMSDOS: dec a
|
||
jr nz,SetCPM
|
||
; <20> áâநâì ä®à¬ ⨫ªã ä®à¬ â TR-DOS
|
||
ld a,16 ; ç¨á«® ᥪâ®à®¢
|
||
jr setOS
|
||
; <20> áâநâì ä®à¬ ⨫ªã ä®à¬ â CP/M-80
|
||
SetCPM: ld a,5 ; ç¨á«® ᥪâ®à®¢
|
||
setOS: ld (loc05+1),a
|
||
ld (loc08+1),a
|
||
inc a ; § ¯à¥¤. ᥪâ®à
|
||
ld (loc06+1),a
|
||
ret
|
||
|
||
|
||
|
||
; ‘®§¤ ¥â ¢ ¡ãä¥à¥ á¨á⥬ãî ®¡« áâì TR-DOS ¤¨áª¥âë.
|
||
SysAreaTRDOS:
|
||
; ®ç¨áâ¨âì ¬¥áâ® ¤® ¡ãâ
|
||
ld hl,L2400 ; ¡ãä¥à á¨áâ. ®¡« áâ¨
|
||
ld bc,1000h ; 16*256
|
||
ld e,0 ; ¡ ©â § ¯®«¥¨ï
|
||
call L0994 ; ®ç¨áâ¨âì á¨áâ. ®¡« áâì
|
||
ld a,(sFlag1)
|
||
or a
|
||
jr nz,.loc0 ; ®è¨¡ª¨ à ¡®âë á ä ©«®¬ "boot.$b"
|
||
ld a,(cSystem) ; ä« £ á®§¤ ¨ï boot-¤¨áª¥âë
|
||
or a
|
||
jr z,.loc0 ; ¥ § £àã§®ç ï
|
||
;
|
||
ld hl,NameBt
|
||
ld de,L2400
|
||
ld bc,13
|
||
ldir
|
||
inc hl
|
||
ldi
|
||
ex de,hl
|
||
ld (hl),0
|
||
inc hl
|
||
ld (hl),1
|
||
;
|
||
.loc0: ld hl,L2400+2274 ; +226 ®â ç «
|
||
ld (hl),1 ; áâ.¡ ©â ç «® ᢮¡. ¬¥áâ ¤¨áª¥
|
||
inc hl
|
||
ld (hl),22 ; ⨯ à §¬¥âª¨ ¤¨áª
|
||
inc hl ; ç¨á«® ä ©«®¢ ¤¨áª¥
|
||
inc hl
|
||
ld (hl),240 ; ç¨á«® ᢮¡. ᥪâ®à®¢
|
||
inc hl ;
|
||
ld (hl),9 ;
|
||
inc hl
|
||
ld (hl),16 ; +231 ç¨á«® ᥪâ®à®¢ ¤®à®¦ª¥
|
||
;
|
||
ld de,LABEL ; ¡ãä¥à ¨¬¥¨ ¬¥âª¨ ä®à¬ ⨫ª¨
|
||
ld a,(de)
|
||
or a
|
||
jr nz,.loc1 ; ¬¥âª § ¤
|
||
ld de,.loc4 ; ¬¥âª ¯® 㬮«ç ¨î
|
||
.loc1: ld hl,L2400+2293 ; ¯¥à¥©â¨ ¬¥âªã ¢ ¡ãä¥à¥
|
||
ex de,hl
|
||
ld b,11 ; ¤«¨ ¬¥âª¨
|
||
.loc2: ld a,(hl)
|
||
or a
|
||
jr z,.loc3
|
||
ld (de),a
|
||
inc hl
|
||
inc de
|
||
djnz .loc2
|
||
ret
|
||
.loc3: ld a," "
|
||
ld (de),a
|
||
inc de
|
||
djnz .loc3
|
||
ret
|
||
; tr-dos ¬¥âª ¯® 㬮«ç ¨î
|
||
.loc4: db "FFORMAT",0
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
LastSect:
|
||
db 34 ; 34/14, ¯®á«. á«ã¦. ᥪâ®à
|
||
DISK: db 0 ; ¤¨áª (0=A,1=B)
|
||
|
||
L0AC8: dw 0 ; ⥪. ¤à¥á ¢ á¨áâ. ¡ãä¥à¥
|
||
L0ACB: db 0 ; áç¥â稪 ¯®¯ë⮪ ®¦¨¤ ¨ï
|
||
L0ACD: dw 0 ; á®åà. á⥪
|
||
|
||
L0BA9: db 0 ; áç¥â稪 ᥪâ®à®¢
|
||
|
||
L0C63: db 0 ; ⥪. ¯®¯ë⪨ ç⥨ï ᥪâ®à
|
||
;L0C64: db 0 ; ⥪. ç¨á«® 3-å à §®¢ëå ¯®¯ë⮪ ç⥨ï
|
||
BadSect:dw 0 ; ç¨á«® bad-ᥪâ®à®¢
|
||
|
||
sect: db 0 ; ⥪. ᥪâ®à
|
||
side: db 0 ; ⥪. áâ®à®
|
||
tracks: db 0 ; ⥪. ¤®à®¦ª
|
||
RetCode:db 0 ; ª®¤ ¢®§¢à â § ¯¨á¨ ᥪâ®à /¤®à®¦ª¨
|
||
density:db 0 ; 13h/12h ०¨¬ 1.44Mb/720kB
|
||
|
||
|
||
|
||
|
||
|
||
; ƒ« ¢ ï äãªæ¨ï ä®à¬ â¨à®¢ ¨ï
|
||
L0BFF: ld a,(density)
|
||
ld c,8Fh ; turbo on/off
|
||
RST ToBIOS
|
||
ld hl,0
|
||
ld (BadSect),hl ; ç¨á«® bad-ᥪâ®à®¢
|
||
call InitElapsedTime ; á®åà. ¨ á¡à®á¨âì ¢à¥¬ï
|
||
call L07AF ; ®¦¨¤ ¨¥ £®â®¢®á⨠£¬¤
|
||
; 横« ä®à¬ â. ¤®à®¦¥ª
|
||
L0C14: call FORMAT_TRK ; ä®à¬ â¨à®¢ ¨¥
|
||
ret c ; ä®à¬ â. ¯à¥à¢ ®
|
||
ret nz ; ¥áâì ®è¨¡ª¨ ç⥨ï
|
||
; ¥â ®è¨¡®ª
|
||
ld a,(Mode2) ; "Optimize sectors"
|
||
or a
|
||
call nz,add_offset ; ᬥé. +2 ª ¯®à浪. ®¬¥à ¬ ᥪâ®à®¢
|
||
ld hl,tracks
|
||
inc (hl) ; ++⥪. ¤®à®¦ª¨
|
||
TRACKS: ld a,82
|
||
cp (hl)
|
||
jr nc,L0C14
|
||
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
|
||
|
||
|
||
|
||
|
||
; ‚뢮¤ ⥪. ®¬¥à ¤®à®¦ª¨
|
||
L0D92: ld de,1323h ; Y/X ¯®«®¦. ªãàá®à
|
||
LD C,BIOS.LP_SET_PLACE
|
||
RST ToBIOS
|
||
ld a,(tracks) ; ⥪. ¤®à®¦ª
|
||
ld l,a
|
||
ld bc,10 ; ¤¥áï⪨
|
||
ld h,b
|
||
ld de,space4
|
||
ld iy,tmp1
|
||
res 7,(iy+0)
|
||
call GetLenN16
|
||
ld a,l
|
||
add a,"0"
|
||
ld (de),a
|
||
ld hl,space4
|
||
ld bc,0285h ; ¢ë¢®¤ áâப¨
|
||
ld e,ColFormNumber ; âਡãâ
|
||
RST ToBIOS
|
||
ret
|
||
|
||
|
||
; ‚뢮¤ ⥪. áâ®à®ë
|
||
L0D93: ld de,1316h ; Y/X ¯®«®¦. ªãàá®à
|
||
LD C,BIOS.LP_SET_PLACE
|
||
RST ToBIOS
|
||
ld a,(side) ; ⥪. áâ®à®
|
||
add a,"0"
|
||
ld bc,0181h ; ¢ë¢®¤ ᨬ¢®«
|
||
ld e,ColFormNumber ; âਡãâ
|
||
RST ToBIOS
|
||
ret
|
||
|
||
|
||
|
||
|
||
; ‘®åà ¥¨¥ ¨ á¡à®á ⥪. ¢à¥¬¥¨
|
||
InitElapsedTime:
|
||
ld c,0F5h ; ¯à®¢¥à¨âì «¨ç¨¥ ¬/á CMOS
|
||
RST ToBIOS
|
||
jr nc,.loc1 ; ¥áâì ¬/á
|
||
xor a ; false
|
||
ld (cmos),a
|
||
ret
|
||
.loc1: ld a,1 ; true
|
||
ld (cmos),a
|
||
ld de,140Fh ; Y/X ¯®«®¦. ªãàá®à
|
||
LD C,BIOS.LP_SET_PLACE
|
||
RST ToBIOS
|
||
ld hl,.string
|
||
ld bc,0E85h ; ¢ë¢®¤ áâப¨
|
||
ld e,ColFormText ; 梥â áâப¨
|
||
RST ToBIOS
|
||
ld hl,.time
|
||
ld bc,0885h ; ¢ë¢®¤ áâப¨
|
||
ld e,ColFormNumber ; âਡãâ
|
||
RST ToBIOS
|
||
; á®åà. ⥪. ¢à¥¬ï
|
||
ld c,21h
|
||
RST ToDSS
|
||
ld (hours),hl ; ç áë/¬¨ãâë
|
||
ld a,b
|
||
ld (seconds),a ; ᥪã¤ë
|
||
; á¡à®á¨âì ¢à¥¬ï
|
||
ld h,0 ; ç áë
|
||
ld l,h ; ¬¨ãâë
|
||
ld b,h ; ᥪã¤ë
|
||
ld c,22h ; ãáâ. ⥪ã騥 ¤ âã ¨ ¢à¥¬ï
|
||
RST ToDSS
|
||
ret
|
||
|
||
.string:db "Elapsed time: "
|
||
.time: db "00:00:00"
|
||
|
||
|
||
hours: dw 0 ; ç áë/¬¨ãâë
|
||
seconds:db 0 ; ᥪã¤ë
|
||
cmos: db 0 ; ä« £ «¨ç¨ï ¬/á CMOS (false/true)
|
||
|
||
|
||
; ‚뢥á⨠¢à¥¬ï à ¡®âë
|
||
ElapsedTime:
|
||
ld a,(cmos)
|
||
or a
|
||
ret z ; ¥â ¬/á CMOS
|
||
ld de,141Dh ; Y/X ¯®«®¦. ªãàá®à
|
||
LD C,BIOS.LP_SET_PLACE
|
||
RST ToBIOS
|
||
;
|
||
ld c,21h ; ¯®«ãç¨âì ⥪. ¢à¥¬ï
|
||
RST ToDSS
|
||
ex de,hl
|
||
ld a,d
|
||
ld hl,elptime
|
||
call GetData ; ç áë
|
||
ld a,e
|
||
call GetData ; ¬¨ãâë
|
||
ld a,b
|
||
call GetData ; ᥪã¤ë
|
||
;
|
||
ld hl,elptime
|
||
ld bc,0885h ; ¢ë¢®¤ áâப¨
|
||
ld e,ColFormNumber ; âਡãâ
|
||
RST ToBIOS
|
||
ret
|
||
|
||
elptime:db "00:00:00"
|
||
|
||
; ‚뢮¤ ¤¥áï⪮¢ á ¢¥¤ã騬 ã«¥¬
|
||
; ¢å: A=ç¨á«®
|
||
; HL=¡ãä¥à
|
||
GetData:ld c,"0"-1
|
||
.loc1: inc c
|
||
sub 10
|
||
jr nc,.loc1
|
||
ld (hl),c
|
||
inc hl
|
||
add a,58
|
||
ld (hl),a
|
||
inc hl
|
||
inc hl
|
||
ret
|
||
|
||
|
||
|
||
|
||
; ‚®ááâ. á¨á⥬®¥ ¢à¥¬ï
|
||
RestoreTime:
|
||
push af
|
||
ld a,(cmos)
|
||
or a
|
||
jr z,.loc1 ; ¥â ¬/á CMOS
|
||
; ¯®«ãç¨âì ⥪. ¢à¥¬ï (elapsed time)
|
||
ld c,21h
|
||
RST ToDSS
|
||
; d - ¤¥ì
|
||
; e - ¬¥áïæ
|
||
; ix - £®¤
|
||
; h - ç á
|
||
; l - ¬¨ãâë
|
||
; b - ᥪã¤ë
|
||
push de
|
||
ex de,hl ; de = elapsed time
|
||
ld hl,(hours) ; ç áë/¬¨ãâë
|
||
ld a,(seconds) ; ᥪã¤ë
|
||
call CalcTime
|
||
pop de
|
||
; ãáâ. ¢à¥¬ï
|
||
ld c,22h
|
||
RST ToDSS
|
||
.loc1: pop af
|
||
ret
|
||
|
||
|
||
; ª®à४â¨à®¢ª ¢à¥¬¥¨
|
||
CalcTime:
|
||
ld c,60
|
||
; ᥪã¤ë
|
||
add a,b
|
||
cp c
|
||
jr c,.loc1
|
||
inc e ; ++¬¨ãâë
|
||
sub c
|
||
.loc1: ld b,a
|
||
; ¬¨ãâë
|
||
ld a,l
|
||
add a,e
|
||
cp c
|
||
jr c,.loc2
|
||
inc d ; ++ç áë
|
||
sub c
|
||
.loc2: ld l,a
|
||
; ç áë
|
||
ld a,d
|
||
add a,h
|
||
cp 24
|
||
jr c,.loc3
|
||
sub 24
|
||
.loc3: ld h,a
|
||
ret
|
||
|
||
|
||
|
||
|
||
;-------------------------------------------------+
|
||
; MS-DOS § £àã§ç¨ª ¤¨áª¥â (¨§ fformat), 512 ¡ ©â. |
|
||
; ä®à¬ â 1.44Mb. |
|
||
; ¤«ï 720kB á¬. ¬¥âªã '#' |
|
||
;-------------------------------------------------+
|
||
MS_Boot:
|
||
.pc_code: db 0xEB,0xFE,0x00 ; 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 ä ©«®¢®© á¨á⥬ë
|
||
block 510-62,0
|
||
dw #AA55
|
||
.SIZE EQU $-MS_Boot
|
||
|
||
|
||
|
||
;[]========================================================[]
|
||
|
||
|
||
; ޝà®á áâ âãá ¦ â¨ï ª« ¢¨è¨
|
||
; ¢ë室: NZ - ¦ â (¡ãä¥à ¥ ¯ãáâ)
|
||
L0D25: ld c,31h
|
||
RST ToDSS
|
||
ret z
|
||
cp 0Dh ; Enter
|
||
jr z,.loc3
|
||
cp 1Bh ; Esc
|
||
jr z,.loc3
|
||
and 5Fh
|
||
cp "C" ; Hot-key
|
||
jr z,.loc3
|
||
xor a
|
||
ret
|
||
; ®ç¨áâ¨âì ¡ãä¥à ª« ¢ë
|
||
.loc3: ld bc,3135h
|
||
RST ToDSS
|
||
; ®ª® "¯à¥à¢ âì ¯à®æ¥áá ?"
|
||
call okno0
|
||
ld a,(hl)
|
||
cp cmOkey
|
||
jr z,.loc2
|
||
.loc1: call HiddenMouse ; áªàëâì ¬ëèªã
|
||
ld a,(tracks)
|
||
out (REGDATA),a
|
||
ld a,18h ; ¯¥à¥©â¨ § ¤ . ¤®à®¦ªã
|
||
call FDC_CMD ; § ¥á⨠ª®¬ ¤ã
|
||
call L07B3 ; ®¦¨¤ ¨¥ £®â®¢®á⨠<20>ƒŒ„
|
||
ret z ; ¥â ®è¨¡®ª
|
||
call okno3 ; "‚áâ ¢ì⥠¤¨áª¥âã"
|
||
ld a,(hl)
|
||
cp cmOkey
|
||
jr z,.loc1
|
||
.loc2: call Fresh
|
||
xor a
|
||
scf
|
||
ret
|