mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-18 19:00:38 +03:00
...
This commit is contained in:
parent
497344d117
commit
55e6b9b07d
@ -1,4 +1,8 @@
|
|||||||
;!TODO ®¯à¥¤¥«¥¨¥ ¯®¯ë⪨ ᤥ« âì § £àã§®çë¬ ¥ ¯¥à¢ë© à §¤¥«
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
; CHANGELOG
|
||||||
|
; [ ] - ®¯à¥¤¥«¥¨¥ ¯®¯ë⪨ ᤥ« âì § £àã§®çë¬ ¥ ¯¥à¢ë© à §¤¥«
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
; <20>à®£à ¬¬ § ¯¨á¨ FDD/HDD boot-§ £àã§ç¨ª ¨ ä ©«®¢ á¨á⥬ë.
|
; <20>à®£à ¬¬ § ¯¨á¨ FDD/HDD boot-§ £àã§ç¨ª ¨ ä ©«®¢ á¨á⥬ë.
|
||||||
;
|
;
|
||||||
|
|||||||
130
DSS/DOS_X.ASM
130
DSS/DOS_X.ASM
@ -153,48 +153,116 @@ CURRDSK: LD A,(FatBuffer.DRIVE)
|
|||||||
|
|
||||||
|
|
||||||
;/////////////////////////////////////////////////////////////////////
|
;/////////////////////////////////////////////////////////////////////
|
||||||
; ”ãªæ¨ï #03. ˆä®à¬ æ¨ï ® ¤¨áª¥.
|
; [ ] ®¢ ï ¯®¤äãªæ¨ï á ¡¨â®¬ 7 ¢ ॣ. €
|
||||||
; ‚®§¢à é ¥â ¨ä®à¬ æ¨î ®¡ ®¡é¥¬ ¨ ᢮¡®¤®¬ ¯à®áâà á⢥ ¤¨áª®¢®£®
|
; ‚®§¢à é ¥â ¨ä®à¬ æ¨î ®¡ ®¡é¥¬ ¨ ᢮¡®¤®¬ ¯à®áâà á⢥ ¤¨áª®¢®£®
|
||||||
; ãáâனá⢠.
|
; ãáâனá⢠.
|
||||||
;
|
;
|
||||||
; ¢å®¤: A - ®¬¥à ¤¨áª (0=A,1=B,..#FF-⥪ã騩)
|
; ¢å®¤: A - ®¬¥à ¤¨áª (0=A,1=B .. 25=Z. #FF-⥪ã騩)
|
||||||
|
; <09>ਠA bit7 = 1:
|
||||||
|
; HL - ¡ãä¥à (256 ¡ ©â®¢) ¤«ï à áè¨à¥ëå ¤ ëå:
|
||||||
|
; B != 0 - áç¨â âì ᢮¡®¤®¥ ¬¥áâ®
|
||||||
|
; ;
|
||||||
|
; à §¬¥à ¯®«ï - 1 ¡ ©â
|
||||||
|
; ” ©«®¢ ï á¨á⥬
|
||||||
|
; ;
|
||||||
|
; à §¬¥à ¯®«ï - 1 ¡ ©â
|
||||||
|
; ‘¥à¨©ë© ®¬¥à ¤¨áª
|
||||||
|
; ;
|
||||||
|
; à §¬¥à ¯®«ï - 1 ¡ ©â
|
||||||
|
; Œ¥âª ¤¨áª
|
||||||
|
; ;
|
||||||
|
; à §¬¥à ¯®«ï - 1 ¡ ©â
|
||||||
|
; ‡ १¥à¢¨à®¢ ®...
|
||||||
|
; ;
|
||||||
|
; A xor #80 - ®¬¥à ¤¨áª
|
||||||
|
;
|
||||||
; ¢ë室: A - à §¬¥à ª« áâ¥à ¢ ᥪâ®à å, ¥á«¨ CF=0
|
; ¢ë室: A - à §¬¥à ª« áâ¥à ¢ ᥪâ®à å, ¥á«¨ CF=0
|
||||||
; HL - ®¡é¥¥ ª®«-¢® ª« áâ¥à®¢
|
; HL - ®¡é¥¥ ª®«-¢® ª« áâ¥à®¢
|
||||||
; DE - ᢮¡®¤ëå ª« áâ¥à®¢
|
; DE - ᢮¡®¤ëå ª« áâ¥à®¢
|
||||||
; BC - à §¬¥à ᥪâ®à ¢ ¡ ©â å
|
; BC - à §¬¥à ᥪâ®à ¢ ¡ ©â å
|
||||||
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
; A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
|
||||||
;/////////////////////////////////////////////////////////////////////
|
;/////////////////////////////////////////////////////////////////////
|
||||||
DISKINF:
|
; [ ] 22/11/23 ¯®¤äãªæ¨ï á ¤®¯.¨ä®©
|
||||||
CP #FF ; !FIXIT WorkDirectory
|
MACRO _mCOPY_LOOP
|
||||||
|
LD C,A
|
||||||
|
LD B,0
|
||||||
|
LD (DE),A
|
||||||
|
INC DE
|
||||||
|
LDIR
|
||||||
|
; .loop:
|
||||||
|
; LD (HL),A
|
||||||
|
; INC DE
|
||||||
|
; INC HL
|
||||||
|
; LD A,(DE)
|
||||||
|
; DJNZ .loop
|
||||||
|
ENDM
|
||||||
|
;
|
||||||
|
DISKINF:; [ ] 22/11/23 ¯®¤äãªæ¨ï á ¤®¯.¨ä®©
|
||||||
|
CP #80
|
||||||
|
JR C,.CustomDisk
|
||||||
|
CP #FF
|
||||||
|
JR Z,.CurrentDisk
|
||||||
|
; more info
|
||||||
|
PUSH HL
|
||||||
|
AND %0111'1111
|
||||||
|
CALL .CustomDisk
|
||||||
|
JR C,.error
|
||||||
|
;
|
||||||
|
EX (SP),HL
|
||||||
|
PUSH AF
|
||||||
|
PUSH DE
|
||||||
|
PUSH BC
|
||||||
|
;;;;
|
||||||
|
;
|
||||||
|
EX DE,HL
|
||||||
|
LD HL,CORE_BUFFERS.BootSector.ID_FAT
|
||||||
|
LD A,8 ;!HARDCODE _sBOOT_SEC.ID_FAT.length
|
||||||
|
_mCOPY_LOOP
|
||||||
|
;
|
||||||
|
LD HL,CORE_BUFFERS.BootSector.BPB_SERIAL_NUMBER
|
||||||
|
LD A,4 ;!HARDCODE _sBOOT_SEC.BPB_SERIAL_NUMBER
|
||||||
|
_mCOPY_LOOP
|
||||||
|
;
|
||||||
|
LD HL,CORE_BUFFERS.BootSector.BPB_LABEL
|
||||||
|
LD A,11 ;!HARDCODE _sBOOT_SEC.BPB_LABEL
|
||||||
|
_mCOPY_LOOP
|
||||||
|
;
|
||||||
|
|
||||||
|
XOR A
|
||||||
|
LD (DE),A
|
||||||
|
;;;;
|
||||||
|
POP BC
|
||||||
|
POP DE
|
||||||
|
POP AF
|
||||||
|
.error: POP HL
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
|
||||||
|
;CP #FF ; !FIXIT WorkDirectory
|
||||||
;!TEST Current Dir
|
;!TEST Current Dir
|
||||||
;JR Z,CURRDS ;R06
|
;JR Z,CURRDS ;R06
|
||||||
JR NZ,.CustomDisk
|
.CurrentDisk:
|
||||||
LD A,(CurrentPath)
|
LD A,(CurrentPath)
|
||||||
SUB 'A'
|
SUB 'A'
|
||||||
LD HL,FatBuffer.DRIVE
|
LD HL,FatBuffer.DRIVE
|
||||||
CP (HL)
|
CP (HL)
|
||||||
JR Z,CURRDS
|
JR Z,.CheckFreeSpace
|
||||||
;
|
;
|
||||||
.CustomDisk:
|
.CustomDisk:
|
||||||
|
PUSH BC
|
||||||
CALL CHNDISK ;R06
|
CALL CHNDISK ;R06
|
||||||
RET C ;R06
|
|
||||||
CURRDS:
|
|
||||||
LD HL,2
|
|
||||||
LD BC,0
|
|
||||||
FRESP: PUSH BC
|
|
||||||
CALL R_F_FAT
|
|
||||||
POP BC
|
POP BC
|
||||||
CP DSS_Error.sys.DISK_FULL
|
RET C ;R06
|
||||||
JR Z,FRESP2
|
|
||||||
|
|
||||||
LD A,E
|
.CheckFreeSpace:
|
||||||
OR D
|
;
|
||||||
JR NZ,SKIC
|
XOR A
|
||||||
INC BC
|
OR B
|
||||||
SKIC: INC HL
|
CALL NZ,.CURRDS
|
||||||
JP FRESP
|
;
|
||||||
|
;
|
||||||
FRESP2: LD D,B
|
.FRESP2:
|
||||||
|
LD D,B
|
||||||
LD E,C
|
LD E,C
|
||||||
LD HL,(MAX_CLU)
|
LD HL,(MAX_CLU)
|
||||||
DEC HL
|
DEC HL
|
||||||
@ -202,6 +270,24 @@ FRESP2: LD D,B
|
|||||||
LD A,(CORE_BUFFERS.BootSector.S_P_C)
|
LD A,(CORE_BUFFERS.BootSector.S_P_C)
|
||||||
AND A
|
AND A
|
||||||
RET
|
RET
|
||||||
|
;
|
||||||
|
.CURRDS:
|
||||||
|
LD HL,2
|
||||||
|
LD BC,0
|
||||||
|
.FRESP: PUSH BC
|
||||||
|
CALL R_F_FAT
|
||||||
|
POP BC
|
||||||
|
CP DSS_Error.sys.DISK_FULL
|
||||||
|
RET Z
|
||||||
|
|
||||||
|
LD A,E
|
||||||
|
OR D
|
||||||
|
JR NZ,.SKIC
|
||||||
|
INC BC
|
||||||
|
.SKIC: INC HL
|
||||||
|
JP .FRESP
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
; <20>®¬¥à ¯®á«¥¤¥£® ¤¨áª ¢ á¨á⥬¥
|
; <20>®¬¥à ¯®á«¥¤¥£® ¤¨áª ¢ á¨á⥬¥
|
||||||
LDRIVE: DB DSS_MAX_DRIVES_AMOUNT
|
LDRIVE: DB DSS_MAX_DRIVES_AMOUNT
|
||||||
|
|||||||
@ -446,7 +446,7 @@ GBPB_H: PUSH IY
|
|||||||
POP IY
|
POP IY
|
||||||
LD BC,1*256 + BIOS.DRV_READ
|
LD BC,1*256 + BIOS.DRV_READ
|
||||||
JP ToBIOS
|
JP ToBIOS
|
||||||
;RET
|
|
||||||
|
|
||||||
;HL:IX - SECTOR
|
;HL:IX - SECTOR
|
||||||
; DE - ADDRESS
|
; DE - ADDRESS
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
607
|
620
|
||||||
@ -3,10 +3,13 @@
|
|||||||
; DIR. ‚뢮¤ á¯¨áª ä ©«®¢ ¨ ¯ ¯®ª
|
; DIR. ‚뢮¤ á¯¨áª ä ©«®¢ ¨ ¯ ¯®ª
|
||||||
;
|
;
|
||||||
;///////////////////////////////////////////////////
|
;///////////////////////////////////////////////////
|
||||||
cmd_dir: push de
|
cmd_dir:
|
||||||
|
push de
|
||||||
ld c,Dss.CurDisk ; ã§ âì ⥪. ¤¨áª
|
ld c,Dss.CurDisk ; ã§ âì ⥪. ¤¨áª
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
ld (disk+1),a ; ®¬¥à ¤¨áª
|
ADD A,"A"
|
||||||
|
ld (root_path),a ; ®¬¥à ¤¨áª
|
||||||
|
SUB "A"
|
||||||
call read_disk_info ; ¯à®ç¨â âì ¬¥âªã ¨ á¥à¨©ë© ®¬¥à ¤¨áª
|
call read_disk_info ; ¯à®ç¨â âì ¬¥âªã ¨ á¥à¨©ë© ®¬¥à ¤¨áª
|
||||||
pop de
|
pop de
|
||||||
ld hl,0
|
ld hl,0
|
||||||
@ -51,9 +54,15 @@ cmd_dir: push de
|
|||||||
;ld ix,T9186
|
;ld ix,T9186
|
||||||
ld ix,work_buffer1 ; 80
|
ld ix,work_buffer1 ; 80
|
||||||
ld a,(ix+32) ; âਡãâ ⥪. § ¯¨á¨
|
ld a,(ix+32) ; âਡãâ ⥪. § ¯¨á¨
|
||||||
and 10h ; ¯ ¯ª ?
|
and FAT_ATTR.DIRECTORY ; ¯ ¯ª ?
|
||||||
jr nz,.next ; ¤
|
jr z,.calc_size ; ¥â
|
||||||
|
; 㢥«¨ç¨¢ ¥¬ áçñâ稪 ¯ ¯®ª
|
||||||
|
ld hl,(dir_number)
|
||||||
|
inc hl
|
||||||
|
ld (dir_number),hl
|
||||||
|
jr .next
|
||||||
; ¯à¨¡ ¢¨âì à §¬¥à ⥪. ä ©«
|
; ¯à¨¡ ¢¨âì à §¬¥à ⥪. ä ©«
|
||||||
|
.calc_size:
|
||||||
ld hl,(D88DC)
|
ld hl,(D88DC)
|
||||||
inc hl
|
inc hl
|
||||||
ld (D88DC),hl
|
ld (D88DC),hl
|
||||||
@ -71,8 +80,7 @@ cmd_dir: push de
|
|||||||
ld (D88DE),hl
|
ld (D88DE),hl
|
||||||
exx
|
exx
|
||||||
ld (D88E0),hl
|
ld (D88E0),hl
|
||||||
.next: ;ld de,T9186 ; à ¡. ¡ãä¥à
|
.next: ld de,work_buffer1 ; 80 ¡ãä¥à
|
||||||
ld de,work_buffer1 ; 80 ¡ãä¥à
|
|
||||||
ld c,Dss.F_Next ; ¯®¨áª á«¥¤.
|
ld c,Dss.F_Next ; ¯®¨áª á«¥¤.
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
jr nc,.loop ; § ¤ ¢ 横«, ¥á«¨ ¥ ª®¥æ ᯨáª
|
jr nc,.loop ; § ¤ ¢ 横«, ¥á«¨ ¥ ª®¥æ ᯨáª
|
||||||
@ -123,6 +131,7 @@ cmd_dir: push de
|
|||||||
ldi
|
ldi
|
||||||
ldi
|
ldi
|
||||||
ldi
|
ldi
|
||||||
|
¥¤®¤¥« ®
|
||||||
ld hl,T8B46 ; "0 000 000 000"
|
ld hl,T8B46 ; "0 000 000 000"
|
||||||
ld de,PRM2 ; ªã¤
|
ld de,PRM2 ; ªã¤
|
||||||
call ncopy_string ; ᪮¯¨à. áâபã (á ã«¥¬), ¬ ªá.15 ᨬ¢.
|
call ncopy_string ; ᪮¯¨à. áâபã (á ã«¥¬), ¬ ªá.15 ᨬ¢.
|
||||||
@ -163,7 +172,7 @@ cmd_dir: push de
|
|||||||
ld de,0 ; ¨¤¥ªá "Volume in drive %1 has no label..." ;!HARDCODE ®¬¥à áâப¨ MSG0
|
ld de,0 ; ¨¤¥ªá "Volume in drive %1 has no label..." ;!HARDCODE ®¬¥à áâப¨ MSG0
|
||||||
JP MESSAGE ; ¢ë¢¥á⨠áâபã
|
JP MESSAGE ; ¢ë¢¥á⨠áâபã
|
||||||
|
|
||||||
.str: DZ 'X:\ is empty' ;R14
|
.str: DZ 'X:\ is empty' ;R14 ;!FIXIT
|
||||||
;
|
;
|
||||||
|
|
||||||
; <20>®¤£®â®¢¨âì áâபã á¯¨áª ä ©«®¢/¯ ¯®ª
|
; <20>®¤£®â®¢¨âì áâபã á¯¨áª ä ©«®¢/¯ ¯®ª
|
||||||
@ -402,127 +411,151 @@ A8B16: inc a
|
|||||||
ld (ix+0),a
|
ld (ix+0),a
|
||||||
inc ix
|
inc ix
|
||||||
ret
|
ret
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
D88DC: dw 0
|
D88DC: dw 0
|
||||||
D88DE: dw 0
|
D88DE: dw 0
|
||||||
D88E0: dw 0
|
D88E0: dw 0
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
T8B2E: db "000000000"
|
T8B2E: db "000000000"
|
||||||
T8B37: db "0"
|
T8B37: db "0"
|
||||||
T8B38: db "<DIR> ",0
|
T8B38: db "<DIR> ",0
|
||||||
T8B46: db "0 000 000 000",0
|
T8B46: db "0 000 000 000",0
|
||||||
db 0
|
db 0
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;!FIXIT ¯¥à¥¥á⨠¢ DSS - FN #04: GET_BPB
|
;!FIXIT ¯¥à¥¥á⨠¢ DSS - FN #04: GET_BPB
|
||||||
; ¯à®ç¨â âì BPB ¤¨áª
|
; ¯à®ç¨â âì BPB ¤¨áª
|
||||||
read_disk_info:
|
read_disk_info:
|
||||||
disk: ld a,0 ; á®åà. ®¬¥à ¤¨áª
|
OR #80
|
||||||
ld c,1 ; open device
|
LD HL,work_buffer
|
||||||
rst 18h
|
LD BC,Dss.DskInfo
|
||||||
jr c,get_inf_data_err ;!FIXIT ¥â ®¡à ¡®â稪 ®è¨¡ª
|
RST ToDSS
|
||||||
ld a,(disk+1)
|
; ” ©«®¢ ï á¨á⥬
|
||||||
ld de,work_buffer ; ¡ãä¥à
|
; ‘¥à¨©ë© ®¬¥à ¤¨áª
|
||||||
ld c,4 ; get BPB
|
; Œ¥âª ¤¨áª ¢ BPB
|
||||||
rst 18h
|
|
||||||
push af
|
|
||||||
ld a,(disk+1) ; ®¬¥à ¤¨áª
|
|
||||||
ld c,2 ; close device
|
|
||||||
rst 18h
|
|
||||||
pop af
|
|
||||||
jr c,get_inf_data_err ;!FIXIT ¥â ®¡à ¡®â稪 ®è¨¡ª¨
|
|
||||||
;
|
|
||||||
get_inf_data_err:
|
|
||||||
;
|
|
||||||
|
|
||||||
; ‘¥à¨©ë© ®¬¥à «®£. ¤¨áª
|
; parse
|
||||||
ld hl,(work_buffer+41) ; áâ.ç áâì
|
LD D,0
|
||||||
|
LD HL,work_buffer
|
||||||
|
; âãâ ¢ HL ¤«¨ ¯®«ï "” ©«®¢ ï á¨á⥬ "
|
||||||
|
LD E,(HL)
|
||||||
|
ADD HL,DE
|
||||||
|
INC HL
|
||||||
|
; ¤«¨ ¯®«ï "‘¥à¨©ë© ®¬¥à ¤¨áª "
|
||||||
|
LD A,(HL)
|
||||||
|
LD E,A
|
||||||
|
ADD HL,DE
|
||||||
|
INC HL
|
||||||
|
PUSH HL ; 㪠§ â¥«ì ¤«¨ã ¯®«ï "Œ¥âª ¤¨áª "
|
||||||
|
CP 4 ;!HARDCODE ¤«¨ ¯®«ï á¥à¨©®£® ®¬¥à
|
||||||
|
JR NZ,unknown_serial
|
||||||
|
DEC HL
|
||||||
|
; áâ à襥 á«®¢® á¥à¨©¨ª
|
||||||
|
LD D,(HL)
|
||||||
|
DEC HL
|
||||||
|
LD E,(HL)
|
||||||
|
DEC HL
|
||||||
|
PUSH HL
|
||||||
|
EX DE,HL
|
||||||
ld de,serial_string ; xxxx-xxxx
|
ld de,serial_string ; xxxx-xxxx
|
||||||
call hex16
|
call hex16
|
||||||
|
POP HL
|
||||||
|
;
|
||||||
ld a,"-"
|
ld a,"-"
|
||||||
ld (de),a
|
ld (de),a
|
||||||
inc de
|
INC DE
|
||||||
ld hl,(work_buffer+39) ; ¬«.ç áâì
|
; ¬« ¤è¥¥ á«®¢® á¥à¨©¨ª
|
||||||
|
LD A,(HL)
|
||||||
|
DEC HL
|
||||||
|
LD L,(HL)
|
||||||
|
LD H,A
|
||||||
call hex16
|
call hex16
|
||||||
;
|
;
|
||||||
|
|
||||||
; Œ¥âª ¤¨áª
|
; Œ¥âª ¤¨áª
|
||||||
ld a,(disk+1) ; ®¬¥à ¤¨áª
|
; ld a,(disk) ; ®¬¥à ¤¨áª
|
||||||
cp 2 ; ¬¥ìè¥ "C:" ?
|
; cp 2 ; ¬¥ìè¥ "C:" ?
|
||||||
jr nc,get_inf_data1 ; ¬¥âª ¢ BPB
|
; jr nc,get_inf_data1 ; ¬¥âª ¢ BPB
|
||||||
; floppy, ¬¥âª - ª ª § ¯¨áì ä ©«
|
|
||||||
ld c,Dss.ChDisk ; ãáâ. ¤¨áª
|
.get_label:
|
||||||
RST ToDSS
|
; ¨é¥¬ ¬¥âªã ¢ ª®à¥ ”‘ à §¤¥«
|
||||||
; ãáâ. ª®à¥ì ¤¨áª
|
; ãáâ. ª®à¥ì ¤¨áª
|
||||||
ld hl,root_path ; "\",0
|
ld hl,root_path ; "x:\",0
|
||||||
ld c,Dss.ChDir
|
ld c,Dss.ChDir
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
; ¯®¨áª ¬¥âª¨
|
; ¯®¨áª ¬¥âª¨
|
||||||
ld hl,mask_fname ; "*.*" ¨¬ï ¬¥âª¨
|
ld hl,mask_fname ; "*.*" ¨¬ï ¬¥âª¨
|
||||||
ld de,work_buffer1 ; ªã¤
|
ld de,work_buffer1 ; ªã¤
|
||||||
ld a,8 ; âਡãâ ¬¥âª¨ ⮬
|
ld a,FAT_ATTR.VOLUME_ID ; âਡãâ ¬¥âª¨ ⮬
|
||||||
ld bc,0*256 + Dss.F_First ; f_first, ä®à¬ â 11
|
ld bc,0*256 + Dss.F_First ; f_first, ä®à¬ â 11
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
push af
|
push af
|
||||||
call restore_path ; ¢®ááâ. ⥪. ¯ãâì
|
call restore_path ; ¢®ááâ. ⥪. ¯ãâì
|
||||||
pop af
|
pop af
|
||||||
jr c,no_volume_label ; ¬¥âª¨ ¥â
|
;jr c,no_volume_label ; ¬¥âª¨ ¥â ¤¨à४â®à¨¨
|
||||||
ld hl,work_buffer1+33 ; ç «® ¬¥âª¨ ¢ ¡ãä¥à¥ f_first
|
ld hl,work_buffer1+33 ; ç «® ¬¥âª¨ ¢ ¡ãä¥à¥ f_first
|
||||||
jr volume_label
|
jr nc,volume_label ; ¬¥âª ¢ ª®à¥¢®¬ ª â «®£¥
|
||||||
|
; ¡¥àñ¬ ¬¥âªã ¨§ BPB
|
||||||
|
; âãâ ¢ HL ¤«¨ ¯®«ï "Œ¥âª ¤¨áª "
|
||||||
|
POP hl
|
||||||
|
LD A,(HL)
|
||||||
|
INC HL
|
||||||
|
AND A
|
||||||
|
jr z,.no_volume_label ; ¤
|
||||||
|
PUSH HL
|
||||||
|
LD B,A
|
||||||
|
LD A,' '
|
||||||
;
|
;
|
||||||
get_inf_data1: ;!FIXIT â ª â ¬ ¯à®¡¥«ë áâ®ïâì ¬®£ãâ, ¥á«¨ ¬¥âª ª®à®ç¥ 11 ᨬ¢®«®¢
|
.loop: CP (HL)
|
||||||
ld hl,work_buffer+53 ; ª®¥æ ¬¥âª¨ ¢ BPB
|
JR NZ,.good_label
|
||||||
ld a,(hl)
|
INC HL
|
||||||
cp " " ; ¥áâì ¬¥âª ?
|
DJNZ .loop
|
||||||
ld hl,work_buffer+43 ; ç «® ¬¥âª¨ ¢ BPB
|
POP HL ; ᨬ ¥¬ «¨è¥¥
|
||||||
jr nz,volume_label ; ¤
|
|
||||||
;!FIXIT ᤥ« âì ç¥à¥§ à£ã¬¥âë %1-%9
|
|
||||||
; ¥â ¬¥âª¨
|
; ¥â ¬¥âª¨
|
||||||
no_volume_label: ;!FIXIT ᤥ« âì ç¥à¥§ PRM %4
|
.no_volume_label:
|
||||||
ld hl,volume_string1 ; "has no label "
|
; %4
|
||||||
ld de,MSG0.volume_string ; ªã¤
|
ld hl,volume_string_no ; áâப
|
||||||
ld bc,14
|
ld de,PRM4 ; ªã¤
|
||||||
ldir
|
call ncopy_string ; ᪮¯¨à. áâபã (á ã«¥¬)
|
||||||
|
XOR A
|
||||||
|
LD (PRM5),A
|
||||||
ret
|
ret
|
||||||
|
.good_label:
|
||||||
|
POP HL
|
||||||
|
PUSH HL ; «¨è¥¥
|
||||||
;!FIXIT ᤥ« âì ç¥à¥§ à£ã¬¥âë %1-%9
|
;!FIXIT ᤥ« âì ç¥à¥§ à£ã¬¥âë %1-%9
|
||||||
; ¥áâì ¬¥âª
|
; ¥áâì ¬¥âª
|
||||||
volume_label:
|
volume_label:
|
||||||
ex de,hl
|
pop DE ; «¨è¥¥
|
||||||
ld hl,MSG0.volume_string ; ªã¤
|
; %5
|
||||||
ld (hl),"i"
|
ld de,PRM5
|
||||||
inc hl
|
ld bc,11 ;!HARDCODE ¤«¨ ¬¥âª¨
|
||||||
ld (hl),"s"
|
|
||||||
inc hl
|
|
||||||
ld (hl)," "
|
|
||||||
inc hl
|
|
||||||
ex de,hl
|
|
||||||
; ᪮¯¨à. ¨¬ï ¬¥âª¨
|
|
||||||
ld bc,11 ; ¬ ªá. ¤«¨ ¬¥âª¨
|
|
||||||
ld a,(hl)
|
|
||||||
cp " "+1
|
|
||||||
jr nc,$+6
|
|
||||||
inc hl
|
|
||||||
dec c
|
|
||||||
jr $-7
|
|
||||||
ld a,11
|
|
||||||
sub c
|
|
||||||
ldir
|
ldir
|
||||||
ld b,a
|
xor a
|
||||||
or a ; ¤«¨ ¬¥âª¨ 11 ᨬ¢. ?
|
|
||||||
ret z ; ¤
|
|
||||||
; ¤®¯®«¨âì 墮áâ. ¯à®¡¥« ¬¨
|
|
||||||
ld (de),a
|
ld (de),a
|
||||||
inc de
|
; %4
|
||||||
djnz $-2
|
ld hl,volume_string_yes ; áâப
|
||||||
|
ld de,PRM4 ; ªã¤
|
||||||
|
call ncopy_string ; ᪮¯¨à. áâபã (á ã«¥¬)
|
||||||
ret
|
ret
|
||||||
|
;
|
||||||
|
|
||||||
|
; ¥á«¨ ¥ 㤠«®áì ¯à®ç¨â âì á¥à¨©ë© ®¬¥à ¤¨áª ¨«¨ ä®à¬ â ¥¨§¢¥áâ¥
|
||||||
|
unknown_serial:
|
||||||
|
; á¥à¨©ë© ®¬¥à ¤¨áª - ¥¨§¢¥á⥠;!HARDCODE ¨¦¥
|
||||||
|
LD HL,serial_string
|
||||||
|
LD A,'?'
|
||||||
|
LD B,serial_string.Size
|
||||||
|
.loop: LD (HL),A
|
||||||
|
INC HL
|
||||||
|
DJNZ .loop
|
||||||
|
LD HL,serial_string+4
|
||||||
|
LD (HL),'-'
|
||||||
|
;POP HL ; «¨è¥¥
|
||||||
|
JP read_disk_info.get_label
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -538,33 +571,34 @@ hex8: push af
|
|||||||
rrca
|
rrca
|
||||||
rrca
|
rrca
|
||||||
rrca
|
rrca
|
||||||
call $+4
|
call .num
|
||||||
pop af
|
pop af
|
||||||
and 0Fh
|
;
|
||||||
add a,90h
|
.num: and %0000'1111
|
||||||
|
add a,#90
|
||||||
daa
|
daa
|
||||||
adc a,40h
|
adc a,#40
|
||||||
daa
|
daa
|
||||||
ld (de),a
|
ld (de),a
|
||||||
inc de
|
inc de
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; ¬ áª ä ©«®¢
|
; ¬ áª ä ©«®¢
|
||||||
mask_fname:
|
mask_fname:
|
||||||
db "*.*",0
|
db "*.*",0
|
||||||
|
|
||||||
; ª®à¥ì ¤¨áª
|
; ª®à¥ì ¤¨áª
|
||||||
root_path:
|
root_path:
|
||||||
db '\',0
|
db 'X:\',0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; ‘¥à¨©ë© ®¬¥à ¤¨áª
|
; ‘¥à¨©ë© ®¬¥à ¤¨áª
|
||||||
serial_string:
|
serial_string:
|
||||||
db "xxxx-xxxx",0
|
db "xxxx-xxxx"
|
||||||
|
.Size equ $-serial_string
|
||||||
|
db 0 ; § ªàë¢ èª
|
||||||
|
|
||||||
volume_string1: ;!FIXIT ᤥ« âì ç¥à¥§ PRM
|
volume_string_no: ;!FIXIT ᤥ« âì ç¥à¥§ PRM
|
||||||
db "has no label " ; 14
|
db "has no label",0
|
||||||
|
volume_string_yes:
|
||||||
|
db "has label",0
|
||||||
@ -226,7 +226,9 @@ prne1__:ld (cursor_position),a ; X
|
|||||||
; —⥨¥ ᮡë⨩
|
; —⥨¥ ᮡë⨩
|
||||||
;-------------------------------------------------
|
;-------------------------------------------------
|
||||||
handle_event:
|
handle_event:
|
||||||
ld de,(cursor_position)
|
cursor_position+1:
|
||||||
|
ld de,0
|
||||||
|
;
|
||||||
ld c,Dss.Locate
|
ld c,Dss.Locate
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
ld c,Dss.EchoKey ; ®¯à®á ª« ¢ë
|
ld c,Dss.EchoKey ; ®¯à®á ª« ¢ë
|
||||||
@ -956,36 +958,37 @@ not_move_to_end:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;!FIXIT ª ¡ãä¥à ¬ ¯®ç⨠¢áñ
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
; 1 0
|
||||||
|
;cursor_position:
|
||||||
|
; dw 0 ; Y/X ¯®«®¦. ªãàá®à
|
||||||
|
|
||||||
|
; 2 0
|
||||||
cursor_position:
|
|
||||||
dw 0 ; Y/X ¯®«®¦. ªãàá®à
|
|
||||||
|
|
||||||
width_inpline:
|
width_inpline:
|
||||||
.MAX EQU 80
|
.MAX EQU 80
|
||||||
db width_inpline.MAX-4 ; ⥪. è¨à¨ ¯®«ï ¢¢®¤
|
db width_inpline.MAX-4 ; ⥪. è¨à¨ ¯®«ï ¢¢®¤
|
||||||
|
|
||||||
|
; 3 0
|
||||||
YXpos: dw 0 ; Y/X ç «® ª®¬-áâப¨
|
YXpos: dw 0 ; Y/X ç «® ª®¬-áâப¨
|
||||||
|
|
||||||
|
; 4 0
|
||||||
; ०¨¬ ¢¢®¤
|
; ०¨¬ ¢¢®¤
|
||||||
insert_mode:
|
insert_mode:
|
||||||
db 1 ; 01/00 inser/overwrite
|
db 1 ; 01/00 inser/overwrite
|
||||||
|
|
||||||
|
; 5 0
|
||||||
|
|
||||||
; íªà ë© ¯ãâì
|
; íªà ë© ¯ãâì
|
||||||
screen_path:
|
screen_path:
|
||||||
db "A:"
|
db "A:"
|
||||||
ds max_screen_path+1 ; 32+1
|
BLOCK max_screen_path+1,0 ; 32+1
|
||||||
|
|
||||||
|
; 6 0
|
||||||
; á¨áâ¥¬ë© ¯ãâì
|
; á¨áâ¥¬ë© ¯ãâì
|
||||||
system_path:
|
system_path:
|
||||||
;db "\BORLAND\LMDTOOLS\TESTING\PROGRAM\SOURCES\TURBO\PR",0
|
BLOCK 256,0 ;!HARDCODE
|
||||||
ds 256
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; 7 0
|
||||||
; ‘âàãªâãà áâப¨ ¢¢®¤ ~input line~
|
; ‘âàãªâãà áâப¨ ¢¢®¤ ~input line~
|
||||||
struct_input_line:
|
struct_input_line:
|
||||||
db max_len_comline ;+0 254 ¬ ªá. ç¨á«® ¢¢®¤. ᨬ¢®«®¢
|
db max_len_comline ;+0 254 ¬ ªá. ç¨á«® ¢¢®¤. ᨬ¢®«®¢
|
||||||
@ -995,12 +998,14 @@ struct_input_line:
|
|||||||
db 0 ;+4 ç¨á«® ¢¢¥¤¥ëå ᨬ¢®«®¢
|
db 0 ;+4 ç¨á«® ¢¢¥¤¥ëå ᨬ¢®«®¢
|
||||||
ds max_len_comline+1 ;+5 áâப ¢¢®¤
|
ds max_len_comline+1 ;+5 áâப ¢¢®¤
|
||||||
|
|
||||||
|
; 8 0
|
||||||
; <20>ãä¥à ¨áâ®à¨¨
|
; <20>ãä¥à ¨áâ®à¨¨
|
||||||
history_buff:
|
history_buff:
|
||||||
ds history_size ; 256
|
BLOCK history_size,0 ; 256
|
||||||
|
|
||||||
|
|
||||||
|
; 9 0
|
||||||
; <20> ¡®ç¨© ¡ãä¥à
|
; <20> ¡®ç¨© ¡ãä¥à
|
||||||
work_buffer:
|
work_buffer:
|
||||||
ds 512
|
BLOCK 512,0
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
;
|
||||||
@ -131,35 +131,29 @@ DIR2MSG EQU 9
|
|||||||
DIR3MSG EQU 10
|
DIR3MSG EQU 10
|
||||||
HELPMSG EQU 11
|
HELPMSG EQU 11
|
||||||
|
|
||||||
MSG0: db 0
|
MSG0: db 0
|
||||||
; 0
|
/* 0 */ db "Volume in drive %1 %4 %5",CR,LF
|
||||||
db "Volume on drive %1 "
|
db "Volume Serial Number is %2",CR,LF
|
||||||
.volume_string: ;!FIXIT ᤥ« âì ç¥à¥§ PRM
|
db CR,LF,"Directory of %3",CR,LF,LF,0
|
||||||
db "has no label ",CR,LF ;0
|
/* 1 */ db "Estex DSS version %1. Shell version %2.",CR,LF,0 ;R13
|
||||||
db "The volume serial number is %2",CR,LF
|
/* 2 */ db "Current date: %1",CR,LF,0
|
||||||
db CR,LF,"Directory of %3",CR,LF,LF,0
|
/* 3 */ db "Current time: %1",CR,LF,0
|
||||||
; 1
|
/* 4 */ db "Press any key to continue . . .",CR,LF,LF,0
|
||||||
db "Estex DSS version %1. Shell version %2.",CR,LF,0 ;R13
|
/* 5 */ db "Invalid parametr",CR,LF,0
|
||||||
; 2
|
/* 6 */ db "Echo is %1",CR,LF,0
|
||||||
db "Current date: %1",CR,LF,0 ;2
|
/* 7 */ db "on",0
|
||||||
db "Current time: %1",CR,LF,0 ;3
|
/* 8 */ db "off",0
|
||||||
db "Press any key to continue . . .",CR,LF,LF,0 ;4
|
/* 9 */ db " %1 File(s) %2 bytes",CR,LF
|
||||||
db "Invalid parametr",CR,LF,0 ;5
|
db " %3 Dir(s) %4 bytes",CR,LF,LF,0
|
||||||
db "Echo is %1",CR,LF,0 ;6
|
/* 10 */ db "%1 %2 %3 %4 %5",CR,LF,0 ;FILENAME EXT SIZE DATE TIME
|
||||||
db "on",0 ;7
|
/* 11 */ DB "COMMANDS:",CR,LF,CR,LF
|
||||||
db "off",0 ;8
|
DB "DIR REN | RENAME PATH HELP ",CR,LF
|
||||||
db " %1 file(s) %2 bytes",CR,LF,LF,0 ;9
|
DB "CD | CHDIR DEL | ERASE SET VER | VERSION ",CR,LF
|
||||||
; 10 FILENAME EXT SIZE DATE TIME
|
DB "MD | MKDIR TIME ECHO EXIT ",CR,LF
|
||||||
db "%1 %2 %3 %4 %5",CR,LF,0 ;10
|
DB "RD | RMDIR DATE CLS REBOOT ",CR,LF,0
|
||||||
; 11
|
|
||||||
DB "COMMANDS:",CR,LF,CR,LF
|
|
||||||
DB "DIR REN | RENAME PATH HELP ",CR,LF
|
|
||||||
DB "CD | CHDIR DEL | ERASE SET VER | VERSION ",CR,LF
|
|
||||||
DB "MD | MKDIR TIME ECHO EXIT ",CR,LF
|
|
||||||
DB "RD | RMDIR DATE CLS REBOOT ",CR,LF,0
|
|
||||||
;R11
|
;R11
|
||||||
BYTE 0
|
DB 0
|
||||||
DZ "Unknown command"
|
DZ "Unknown command"
|
||||||
;
|
;
|
||||||
.Size EQU $-MSG0
|
.Size EQU $-MSG0
|
||||||
|
|
||||||
|
|||||||
@ -316,6 +316,7 @@ save_disk:
|
|||||||
ld (screen_path),a ; 33 áâப íªà ®£® ¯ãâ¨
|
ld (screen_path),a ; 33 áâப íªà ®£® ¯ãâ¨
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
;!FIXIT 耤<>碪 咧霅言 c妙c
|
||||||
; ‚®ááâ ®¢¨âì ⥪. ¤¨áª ¨ ¯ãâì (¯®á«¥ ®è¨¡ª¨)
|
; ‚®ááâ ®¢¨âì ⥪. ¤¨áª ¨ ¯ãâì (¯®á«¥ ®è¨¡ª¨)
|
||||||
restore_disk_path:
|
restore_disk_path:
|
||||||
; ãáâ. ⥪. ¤¨áª
|
; ãáâ. ⥪. ¤¨áª
|
||||||
@ -323,6 +324,8 @@ restore_disk_path:
|
|||||||
sub "A"
|
sub "A"
|
||||||
ld c,Dss.ChDir
|
ld c,Dss.ChDir
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
|
|
||||||
|
;!FIXIT 耤<>碪 咧霅言 c妙c
|
||||||
restore_path:
|
restore_path:
|
||||||
; ãáâ. ⥪. ª â «®£
|
; ãáâ. ⥪. ª â «®£
|
||||||
ld hl,system_path ; 256 ¡ãä¥à á¨áâ. ¯ãâ¨
|
ld hl,system_path ; 256 ¡ãä¥à á¨áâ. ¯ãâ¨
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
96
|
127
|
||||||
@ -1 +1 @@
|
|||||||
Subproject commit 18269745815d90e76686f5693e0cb45f8f31741c
|
Subproject commit 349ba286106d21a77cf3f8a25b6f7c952eccb046
|
||||||
Loading…
Reference in New Issue
Block a user