mirror of
https://github.com/Tolik-Trek/FORMAT.git
synced 2026-06-15 09:21:40 +03:00
...
This commit is contained in:
parent
5bf7bd2b68
commit
fa0375aad3
2
data.z80
2
data.z80
@ -50,7 +50,7 @@ FAT_TYPES: FAT_TYPES_LINE #0800, 32768, CONSTANTS.FAT32 ; > 32768
|
||||
;-----------------------------------------------------------------------
|
||||
VARIABLES EQU $
|
||||
.FAT_TYPE BYTE CONSTANTS.FAT12 ; [x]
|
||||
.CurrentDrive DB 0 ; [x]
|
||||
.CurrentDrive DB #FF ; [x]
|
||||
.VOLUME_SIZE_BYTES BLOCK 5,0 ; [ ]
|
||||
;.FatFDD_ReservedSectors WORD 1
|
||||
;.FatHDD_ReservedSectors WORD 8
|
||||
|
||||
@ -1 +1 @@
|
||||
9
|
||||
31
|
||||
406
format.asm
406
format.asm
@ -83,7 +83,7 @@ reserved_sectors = ( ((.HIDDEN + min_last_sector) & #0F)>0 ) * #10) - .HIDDEN
|
||||
INCLUDE 'shared_includes/constants/bios_equ.inc'
|
||||
INCLUDE 'shared_includes/constants/dss_equ.inc'
|
||||
INCLUDE 'shared_includes/structures/FileSystem.inc'
|
||||
INCLUDE 'version.ini'
|
||||
INCLUDE 'version.inc'
|
||||
|
||||
; Standart EQU section
|
||||
;---------------------------------------------------------------------[]
|
||||
@ -909,65 +909,56 @@ MAKE_LABEL_IN_DIR:
|
||||
|
||||
|
||||
;-----------------------------------------------------------------------
|
||||
/*
|
||||
|
||||
PARSE_CMD: LD A,(HL)
|
||||
INC HL
|
||||
INC HL
|
||||
AND A
|
||||
JP Z,SHOW_VERSION
|
||||
;
|
||||
CALL .MAIN
|
||||
JP C,STOP_ERROR
|
||||
RET
|
||||
RET NC
|
||||
JP STOP_ERROR
|
||||
;
|
||||
.MAIN: PUSH HL
|
||||
LD BC,Dss.EX_Path.GET_ALL
|
||||
RST ToDSS
|
||||
RET C
|
||||
JP C,STOP_ERROR
|
||||
; ¬ 㦠áâப ¢ ª®â®à®© ¥áâì ¤à ©¢, ® ¥â ¯ãâ¨
|
||||
AND %0000'1100
|
||||
XOR %0000'1000
|
||||
RET NZ
|
||||
; ¤®áâ ñ¬ ¨¬ï ¤à ©¢ (®® ¡¥§ ª«îç "/")
|
||||
POP HL
|
||||
PUSH HL
|
||||
LD DE,SECTOR_BUFFER
|
||||
LD BC,Dss.EX_Path.GET_DRIVE
|
||||
RST ToDSS
|
||||
RET C
|
||||
;
|
||||
LD (VARIABLES.CurrentDrive),A
|
||||
; ⮫쪮 ¤«ï ⮣®, ç⮡ ®¡®¢¨âì ¯ à ¬¥âàë ¤à ©¢ (¢¤à㣠¤¨áª¥âã ᬥ¨«¨?)
|
||||
LD C,Dss.ChDisk
|
||||
RST ToDSS
|
||||
JR NC,.no_err_drv
|
||||
;
|
||||
CP DSS_Error.sys.MEDIA_CHANGED
|
||||
JP NZ,STOP_ERROR
|
||||
|
||||
; ¯¥à¥¡¨à ¥¬ ª«îç¨ "/"
|
||||
.no_err_drv: POP HL
|
||||
.loop: LD A,(HL)
|
||||
INC HL
|
||||
AND A
|
||||
RET Z
|
||||
.loop: POP HL
|
||||
LD DE,SECTOR_BUFFER
|
||||
LD C,Dss.GSwitch
|
||||
RST ToDSS
|
||||
PUSH HL
|
||||
;
|
||||
LD A,(SECTOR_BUFFER)
|
||||
CP '/' ;
|
||||
JR Z,.SET_KEY
|
||||
;
|
||||
CP ' '
|
||||
JR Z,.loop
|
||||
AND A
|
||||
EX DE,HL
|
||||
LD HL,(SECTOR_BUFFER + 1)
|
||||
LD BC,-':'
|
||||
ADC HL,BC
|
||||
EX DE,HL
|
||||
JR Z,.get_drv
|
||||
JP STOP_ERROR
|
||||
;
|
||||
;
|
||||
.SET_KEY: LD A,(HL)
|
||||
.SET_KEY: LD HL,SECTOR_BUFFER+1
|
||||
LD A,(HL)
|
||||
EX AF,AF'
|
||||
INC HL
|
||||
LD A,(HL)
|
||||
INC HL
|
||||
AND A
|
||||
JR Z,.cont_set
|
||||
;
|
||||
CP ' '
|
||||
JR Z,.cont_set
|
||||
JP STOP_ERROR ; ¥¯à ¢¨«ìë© ª«îç
|
||||
JP NZ,STOP_ERROR ; ¥¯à ¢¨«ìë© ª«îç
|
||||
;
|
||||
.cont_set: EX AF,AF'
|
||||
LD IX,KEYS_PARAMETERS.TABLE
|
||||
@ -994,6 +985,146 @@ PARSE_CMD: LD A,(HL)
|
||||
.next: ADD IX,DE
|
||||
DJNZ .loop_key
|
||||
JP STOP_ERROR ; ¥¯à ¢¨«ìë© ª«îç
|
||||
;
|
||||
.get_drv: ; ¤®áâ ñ¬ ¨¬ï ¤à ©¢ (®® ¡¥§ ª«îç "/")
|
||||
LD A,(VARIABLES.CurrentDrive)
|
||||
INC A
|
||||
JP NZ,STOP_ERROR ; ¥¯à ¢¨«ìë© ª«îç
|
||||
;
|
||||
;PUSH HL
|
||||
LD HL,SECTOR_BUFFER
|
||||
LD DE,SECTOR_BUFFER + 3
|
||||
LD BC,Dss.EX_Path.GET_DRIVE
|
||||
RST ToDSS
|
||||
JP C,STOP_ERROR ; ¥¯à ¢¨«ìë© ¤à ©¢
|
||||
;
|
||||
LD (VARIABLES.CurrentDrive),A
|
||||
; ⮫쪮 ¤«ï ⮣®, ç⮡ ®¡®¢¨âì ¯ à ¬¥âàë ¤à ©¢ (¢¤à㣠¤¨áª¥âã ᬥ¨«¨?)
|
||||
LD C,Dss.ChDisk
|
||||
RST ToDSS
|
||||
JR NC,.loop
|
||||
;
|
||||
CP DSS_Error.drv.UNKNOWN_FORMAT
|
||||
JR Z,.loop
|
||||
JP STOP_ERROR ; ¥¯à ¢¨«ìë© ¤à ©¢
|
||||
; .no_err_drv: POP HL
|
||||
; RET
|
||||
*/
|
||||
PARSE_CMD: LD A,(HL)
|
||||
AND A
|
||||
JP Z,SHOW_VERSION ; ¤«¨ CMD áâப¨ ã«¥¢ ï
|
||||
;
|
||||
INC HL
|
||||
INC HL
|
||||
CALL .MAIN
|
||||
RET NC
|
||||
JP STOP_ERROR
|
||||
;
|
||||
.MAIN: PUSH HL
|
||||
LD BC,Dss.EX_Path.GET_ALL
|
||||
RST ToDSS
|
||||
JP C,STOP_ERROR
|
||||
; ¬ 㦠áâப ¢ ª®â®à®© ¥áâì ¤à ©¢, ® ¥â ¯ãâ¨
|
||||
AND %0000'1100
|
||||
XOR %0000'1000
|
||||
JP NZ,STOP_ERROR
|
||||
;
|
||||
POP HL
|
||||
LD A,(HL)
|
||||
AND #1101'1111
|
||||
SUB 'A'
|
||||
JP C,STOP_ERROR
|
||||
CALL .get_drv
|
||||
;
|
||||
|
||||
; ¯¥à¥¡¨à ¥¬ ª«îç¨ "/"
|
||||
.loop: CALL .skip_space
|
||||
RET Z
|
||||
;
|
||||
CP '/' ;
|
||||
JP NZ,STOP_ERROR
|
||||
;
|
||||
; AND A
|
||||
; EX DE,HL
|
||||
; LD HL,(SECTOR_BUFFER + 1)
|
||||
; LD BC,-':'
|
||||
; ADC HL,BC
|
||||
; EX DE,HL
|
||||
; JR Z,.get_drv
|
||||
; JP STOP_ERROR
|
||||
;
|
||||
;
|
||||
.SET_KEY: INC HL
|
||||
LD A,(HL)
|
||||
EX AF,AF'
|
||||
INC HL
|
||||
LD A,(HL)
|
||||
AND A
|
||||
JR Z,.cont_set
|
||||
CP ' '
|
||||
JP NZ,STOP_ERROR
|
||||
;
|
||||
.cont_set: EX AF,AF'
|
||||
LD IX,KEYS_PARAMETERS.TABLE
|
||||
LD B,KEYS_PARAMETERS.TABLE.Elements
|
||||
LD DE,KEYS_PARAMETERS.KEYS_STR
|
||||
;
|
||||
.loop_key: CP (IX + KEYS_PARAMETERS.KEYS_STR.Key)
|
||||
JR NZ,.next
|
||||
;
|
||||
;EX DE,HL
|
||||
LD E,(IX + KEYS_PARAMETERS.KEYS_STR.Procedure)
|
||||
LD D,(IX + KEYS_PARAMETERS.KEYS_STR.Procedure + 1)
|
||||
LD A,E
|
||||
OR D
|
||||
CALL NZ,JP_HL
|
||||
;EX DE,HL
|
||||
LD A,KEYS_PARAMETERS.Status.On
|
||||
JR NC,.set_stat
|
||||
;
|
||||
LD A,KEYS_PARAMETERS.Status.Ignored
|
||||
.set_stat: LD (IX + KEYS_PARAMETERS.KEYS_STR.Status),A
|
||||
JR .loop
|
||||
;
|
||||
.next: ADD IX,DE
|
||||
DJNZ .loop_key
|
||||
JP STOP_ERROR ; ¥¯à ¢¨«ìë© ª«îç
|
||||
;
|
||||
.get_drv: ; ¤®áâ ñ¬ ¨¬ï ¤à ©¢ (®® ¡¥§ ª«îç "/")
|
||||
;LD A,(VARIABLES.CurrentDrive)
|
||||
;INC A
|
||||
;JP NZ,STOP_ERROR ; ¥¯à ¢¨«ìë© ª«îç
|
||||
;
|
||||
;PUSH HL
|
||||
;LD HL,SECTOR_BUFFER
|
||||
;LD DE,SECTOR_BUFFER + 3
|
||||
;LD BC,Dss.EX_Path.GET_DRIVE
|
||||
;RST ToDSS
|
||||
;JP C,STOP_ERROR ; ¥¯à ¢¨«ìë© ¤à ©¢
|
||||
;
|
||||
PUSH HL
|
||||
LD (VARIABLES.CurrentDrive),A
|
||||
;!TODO § ¯®¬¨ âì ⥪ã騩 ¯ãâì ¨ ¢®ááâ ¢«¨¢ âì ¯®á«¥ ¢ë室
|
||||
;
|
||||
; ⮫쪮 ¤«ï ⮣®, ç⮡ ®¡®¢¨âì ¯ à ¬¥âàë ¤à ©¢ (¢¤à㣠¤¨áª¥âã ᬥ¨«¨?)
|
||||
LD C,Dss.ChDisk
|
||||
RST ToDSS
|
||||
POP HL
|
||||
INC HL
|
||||
INC HL
|
||||
RET NC
|
||||
;
|
||||
CP DSS_Error.drv.UNKNOWN_FORMAT
|
||||
RET Z
|
||||
JP STOP_ERROR ; ¥¯à ¢¨«ìë© ¤à ©¢
|
||||
;
|
||||
.skip_space: LD A,(HL)
|
||||
AND A
|
||||
RET Z
|
||||
INC HL
|
||||
CP ' '
|
||||
RET NZ
|
||||
JR .skip_space
|
||||
;-----------------------------------------------------------------------
|
||||
|
||||
|
||||
@ -1009,7 +1140,7 @@ SHOW_VERSION: LD SP,(STOP_ERROR.Save_SP)
|
||||
LD C,Dss.PChars
|
||||
RST ToDSS
|
||||
;
|
||||
LD BC, 256*DSS_Error.sys.INVALID_DRIVE + Dss.Exit
|
||||
LD BC,Dss.Exit ; + 256*DSS_Error.sys.INVALID_DRIVE
|
||||
RST ToDSS
|
||||
;-----------------------------------------------------------------------
|
||||
|
||||
@ -1031,8 +1162,207 @@ GET_KEY_FAT: DI
|
||||
|
||||
;-----------------------------------------------------------------------
|
||||
;!FIXIT
|
||||
SET_LABEL: DI
|
||||
HALT
|
||||
/*
|
||||
SET_LABEL: POP HL
|
||||
EX (SP),HL
|
||||
; LD DE,SECTOR_BUFFER
|
||||
; LD C,Dss.GSwitch
|
||||
; RST ToDSS
|
||||
; EX (SP),HL
|
||||
; PUSH HL
|
||||
;
|
||||
;LD HL,SECTOR_BUFFER
|
||||
; LD A,(HL)
|
||||
; INC HL
|
||||
; OR A
|
||||
; SCF
|
||||
; RET C ; ª«îç ¡¥§ ¬¥âª¨
|
||||
;
|
||||
LD A,(HL)
|
||||
INC HL
|
||||
CP '"'
|
||||
SCF
|
||||
RET NZ ; ¬¥âª ç¨ ¥âáï ¥ á ª ¢ë窨
|
||||
;
|
||||
LD DE,SECTOR_BUFFER ; á®§¤ ñ¬ ¬¥âªã âãâ, ¥á«¨ ᨬ¢®«ë ¢ ¯®à浪¥
|
||||
LD C,FAT_PARAMETERS.LABEL.Size
|
||||
LD B,C
|
||||
LD A,(HL)
|
||||
CP ' '+1
|
||||
RET C ; no_name
|
||||
;
|
||||
CALL .loop1
|
||||
CALL C,.skip_label
|
||||
EX (SP),HL
|
||||
JP (HL)
|
||||
|
||||
;
|
||||
.loop1: LD A,(HL)
|
||||
AND A
|
||||
SCF
|
||||
RET Z
|
||||
;
|
||||
;
|
||||
CP #80
|
||||
JR NC,.sym_ok
|
||||
;
|
||||
CP #22
|
||||
JR Z,.end_label
|
||||
CP #7C
|
||||
SCF
|
||||
RET Z ; no_name
|
||||
CP #2A
|
||||
JR C,.check_3A
|
||||
CP #30
|
||||
JR NC,.check_3A
|
||||
CP #2D
|
||||
JR Z,.sym_ok
|
||||
SCF
|
||||
RET ; no_name
|
||||
;
|
||||
.check_3A: CP #3A
|
||||
JR C,.check_5B
|
||||
CP #40
|
||||
JR NC,.check_5B
|
||||
RET ; no_name
|
||||
|
||||
.check_5B: CP #5B
|
||||
JR C,.sym_ok
|
||||
CP #5E
|
||||
RET C ; no_name
|
||||
.sym_ok: LD (DE),A
|
||||
INC HL
|
||||
INC DE
|
||||
DJNZ .loop1
|
||||
LD A,(HL)
|
||||
CP '"'
|
||||
SCF
|
||||
RET NZ
|
||||
;
|
||||
.end_label: LD A,B
|
||||
CP C
|
||||
SCF
|
||||
RET Z ; áâ ¤ àâ ï ¬¥âª
|
||||
;
|
||||
INC B ; ç⮡ ¥ âà â¨âì ¡ ©âë ¯à®¢¥àªã ®«ì
|
||||
EX DE,HL
|
||||
.loop2: LD (HL)," "
|
||||
INC HL
|
||||
DJNZ .loop2
|
||||
INC DE
|
||||
PUSH DE
|
||||
; B=0, C=FAT_PARAMETERS.LABEL.Size
|
||||
LD HL,SECTOR_BUFFER
|
||||
LD DE,FAT_PARAMETERS.LABEL
|
||||
LDIR
|
||||
POP HL
|
||||
AND A
|
||||
RET
|
||||
;
|
||||
.skip_label: LD A,(HL)
|
||||
AND A
|
||||
SCF
|
||||
RET Z
|
||||
;
|
||||
CP '/'
|
||||
SCF
|
||||
RET Z
|
||||
INC HL
|
||||
JR .skip_label
|
||||
*/
|
||||
SET_LABEL: LD HL,SECTOR_BUFFER
|
||||
EX DE,HL
|
||||
;
|
||||
LD A,(HL)
|
||||
INC HL
|
||||
CP ' '
|
||||
JR NZ,.skip_label ; ¥â ¯à®¡¥« ¬¥¦¤ã ª«î箬 ¨ ¬¥âª®©
|
||||
;
|
||||
LD A,(HL)
|
||||
INC HL
|
||||
CP '"'
|
||||
JR NZ,.skip_label ; ¬¥âª ç¨ ¥âáï ¥ á ª ¢ë窨
|
||||
;
|
||||
LD DE,SECTOR_BUFFER ; á®§¤ ñ¬ ¬¥âªã âãâ, ¥á«¨ ᨬ¢®«ë ¢ ¯®à浪¥
|
||||
LD C,FAT_PARAMETERS.LABEL.Size
|
||||
LD B,C
|
||||
LD A,(HL)
|
||||
CP ' '
|
||||
JR Z,.skip_label ; no_name
|
||||
;
|
||||
CALL .loop1
|
||||
RET NC
|
||||
JR .skip_label
|
||||
;
|
||||
.loop1: LD A,(HL)
|
||||
AND A
|
||||
JR Z,.skip_label ; no_name
|
||||
;
|
||||
CP #80
|
||||
JR NC,.sym_ok
|
||||
;
|
||||
CP #22
|
||||
JR Z,.end_label
|
||||
CP #7C
|
||||
JR Z,.skip_label ; no_name
|
||||
;
|
||||
CP #2A
|
||||
JR C,.check_3A
|
||||
CP #30
|
||||
JR NC,.check_3A
|
||||
CP #2D
|
||||
JR Z,.sym_ok
|
||||
JR .skip_label ; no_name
|
||||
;
|
||||
.check_3A: CP #3A
|
||||
JR C,.check_5B
|
||||
CP #40
|
||||
JR C,.skip_label ; no_name
|
||||
;
|
||||
.check_5B: CP #5B
|
||||
JR C,.sym_ok
|
||||
CP #5E
|
||||
JR C,.skip_label ; no_name
|
||||
;
|
||||
.sym_ok: LD (DE),A
|
||||
INC HL
|
||||
INC DE
|
||||
DJNZ .loop1
|
||||
LD A,(HL)
|
||||
CP '"'
|
||||
SCF
|
||||
RET NZ
|
||||
;
|
||||
.end_label: LD A,B
|
||||
CP C
|
||||
SCF
|
||||
RET Z ; áâ ¤ àâ ï ¬¥âª
|
||||
;
|
||||
INC B ; ç⮡ ¥ âà â¨âì ¡ ©âë ¯à®¢¥àªã ®«ì
|
||||
EX DE,HL
|
||||
.loop2: LD (HL)," "
|
||||
INC HL
|
||||
DJNZ .loop2
|
||||
INC DE
|
||||
PUSH DE
|
||||
; B=0, C=FAT_PARAMETERS.LABEL.Size
|
||||
LD HL,SECTOR_BUFFER
|
||||
LD DE,FAT_PARAMETERS.LABEL
|
||||
LDIR
|
||||
POP HL
|
||||
AND A
|
||||
RET
|
||||
;
|
||||
.skip_label: LD A,(HL)
|
||||
AND A
|
||||
SCF
|
||||
RET Z
|
||||
;
|
||||
INC HL
|
||||
CP '"'
|
||||
SCF
|
||||
RET Z
|
||||
JR .skip_label
|
||||
;-----------------------------------------------------------------------
|
||||
|
||||
|
||||
@ -1059,7 +1389,6 @@ STRING_TO_WORD: CALL STR_TO_WORD
|
||||
; DE - addr next after string decimal
|
||||
;!FIXIT ¯à®¢¥àª ¯ãáâãî áâபã
|
||||
STR_TO_WORD: LD HL,0
|
||||
|
||||
.loop: LD B,H
|
||||
LD C,L
|
||||
;
|
||||
@ -1103,8 +1432,7 @@ STR_TO_WORD: LD HL,0
|
||||
;<3B> ¢ë室:
|
||||
; ¡ãä¥à á ⥪áâ.ç¨á«®¬
|
||||
IFUSED PutHexNumb
|
||||
PutHexNumb
|
||||
PUSH AF
|
||||
PutHexNumb: PUSH AF
|
||||
RRCA
|
||||
RRCA
|
||||
RRCA
|
||||
|
||||
Loading…
Reference in New Issue
Block a user