From 31c23144df4d923cf3b8e2f00394f9f6411fbc20 Mon Sep 17 00:00:00 2001 From: Tolik <85737314+Tolik-Trek@users.noreply.github.com> Date: Fri, 17 Apr 2026 22:33:11 +1000 Subject: [PATCH] label works --- ddf_build.txt | 2 +- format.asm | 86 +++++++++++++++++---------------------------------- 2 files changed, 30 insertions(+), 58 deletions(-) diff --git a/ddf_build.txt b/ddf_build.txt index b74e882..72f523f 100644 --- a/ddf_build.txt +++ b/ddf_build.txt @@ -1 +1 @@ -31 \ No newline at end of file +39 \ No newline at end of file diff --git a/format.asm b/format.asm index 5a8110d..098746c 100644 --- a/format.asm +++ b/format.asm @@ -1020,41 +1020,40 @@ PARSE_CMD: LD A,(HL) 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 +.MAIN: LD A,(HL) + INC HL + AND %1101'1111 SUB 'A' JP C,STOP_ERROR - CALL .get_drv ; - + LD (VARIABLES.CurrentDrive),A + LD D,A + LD A,(HL) + INC HL + LD E,A + LD A,(HL) + AND ~' ' + ADD A,E + SUB ':' + JP NZ,STOP_ERROR + ; только для того, чтоб обновить параметры драйва (вдруг дискету сменили?) + PUSH HL + LD A,D + LD C,Dss.ChDisk + RST ToDSS + POP HL + JR NC,.loop + ; + CP DSS_Error.drv.UNKNOWN_FORMAT + JP NZ,STOP_ERROR ; перебираем ключи "/" .loop: CALL .skip_space RET Z ; - CP '/' ; + 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 +.SET_KEY: ;INC HL LD A,(HL) EX AF,AF' INC HL @@ -1090,34 +1089,6 @@ PARSE_CMD: LD A,(HL) 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 @@ -1129,7 +1100,8 @@ PARSE_CMD: LD A,(HL) ;----------------------------------------------------------------------- -JP_HL: JP (HL) +JP_HL: EX DE,HL + JP (HL) ;----------------------------------------------------------------------- @@ -1270,7 +1242,7 @@ SET_LABEL: POP HL INC HL JR .skip_label */ -SET_LABEL: LD HL,SECTOR_BUFFER +SET_LABEL: LD HL,SECTOR_BUFFER ; создаём метку тут, если символы в порядке EX DE,HL ; LD A,(HL) @@ -1283,7 +1255,7 @@ SET_LABEL: LD HL,SECTOR_BUFFER CP '"' JR NZ,.skip_label ; метка начинается не с кавычки ; - LD DE,SECTOR_BUFFER ; создаём метку тут, если символы в порядке + ;LD DE,SECTOR_BUFFER ; создаём метку тут, если символы в порядке LD C,FAT_PARAMETERS.LABEL.Size LD B,C LD A,(HL)