diff --git a/SHELL/Commands/DATE.ASM b/SHELL/Commands/DATE.ASM index 105a276..7392470 100644 --- a/SHELL/Commands/DATE.ASM +++ b/SHELL/Commands/DATE.ASM @@ -52,7 +52,7 @@ cmd_date: push ix push de ld a,d ; число - ld hl,PRM1 ; куда + ld hl,Buffers.bat_params.PRM1; куда call PUTB ; десят. вывод в буфер ld a,"." ld (hl),a @@ -78,7 +78,7 @@ cmd_date: LD BC,.days.size CALL LCPIR ; - LD DE,PRM2 + LD DE,Buffers.bat_params.PRM2 CALL ncopy_string ; ld de,MAIN_MSG.DATE ; индекс "Current date: %1" @@ -156,7 +156,7 @@ cmd_tm1:ld c,Dss.SysTime push bc push hl ld a,h ; число - ld hl,PRM1 ; куда + ld hl,Buffers.bat_params.PRM1; куда call PUTB ; десят. вывод в буфер ld a,":" ld (hl),a diff --git a/SHELL/Commands/DIR.ASM b/SHELL/Commands/DIR.ASM index 3115533..cd4c2ff 100644 --- a/SHELL/Commands/DIR.ASM +++ b/SHELL/Commands/DIR.ASM @@ -81,18 +81,20 @@ cmd_dir: push de inc hl ld (hl),0 inc hl - ld de,PRM1 + ld de,Buffers.bat_params.PRM1 call ncopy_string ; сохраняем маску файла ; ld hl,Buffers.work.buffer1 ld c,Dss.ChDir rst ToDSS - ; - ld hl,PRM1 + ;ld a,DSS_Error.sys.NOT_READY + jp c,print_err_message +.no_error: ; + ld hl,Buffers.bat_params.PRM1 ld de,Buffers.work.free call ncopy_string ; восстанавливаем маску файла ; - ld a,(PRM1) + ld a,(Buffers.bat_params.PRM1) or a jr nz,.SkipMask ; @@ -197,7 +199,7 @@ cmd_dir: push de pop af ; баланс стека ; Десятичный вывод .print: ld hl,(FILES) - ld ix,PRM3 ; количество файлов + ld ix,Buffers.bat_params.PRM3; количество файлов call PDIGIT ; ld a,(S_HIGH) @@ -212,13 +214,13 @@ cmd_dir: push de ; [x] вывод количества папок ; [x] вывод общего количества свободного места ld hl,SIZE_BUFFER.high ; "000 000 000 000" - ld de,PRM1; + PRM2 ; размер файлов в каталоге + ld de,Buffers.bat_params.PRM1; + PRM2. размер файлов в каталоге ld bc,SIZE_BUFFER.bytes call ncopy_string.start ; скопир. строку (с нулем), макс. SIZE_BUFFER.bytes симв. ; ; Десятичный вывод ld hl,(dir_number) - ld ix,PRM4 ; кол-во каталогов в каталоге + ld ix,Buffers.bat_params.PRM4; кол-во каталогов в каталоге call PDIGIT ; full capacity ld a,(full_space_high) @@ -258,12 +260,12 @@ cmd_dir: push de PRN_DISK_SIZE: call PRINT_5BYTES ld hl,SIZE_BUFFER.high ; "000 000 000 000" - ld de,PRM5 ; and PRM6 ; куда + ld de,Buffers.bat_params.PRM5; and PRM6. куда ld bc,SIZE_BUFFER.bytes jp ncopy_string.start ; скопир. строку (с нулем), макс. SIZE_BUFFER.bytes симв. ; Print_Header: ; %1 - ld hl,PRM1 + ld hl,Buffers.bat_params.PRM1 ld a,'"' ld (hl),a inc hl @@ -283,27 +285,27 @@ Print_Header: ; %1 ld (hl),0 ; %2 ld hl,serial_string ; строка серийного номера диска - ld de,PRM2 ; куда + ld de,Buffers.bat_params.PRM2; куда call ncopy_string ; скопир. строку (с нулем) ; %3..5 ;push hl ld hl,Buffers.work.free + 256 + 128 ; 128 - на всякий случай ld c,Dss.CurDir rst ToDSS - ld hl,PRM3 - ld a,(PRM1 + 1) + ld hl,Buffers.bat_params.PRM3 + ld a,(Buffers.bat_params.PRM1 + 1) ld (hl),a inc hl ld (hl),':' ; - ld hl,PRM3+2 - ld de,PRM3+2+1 + ld hl,Buffers.bat_params.PRM3 +2 + ld de,Buffers.bat_params.PRM3 +2 + 1 ld (hl),0 ld bc,16+16+16-1-2 ldir ; ld hl,Buffers.work.free + 256 + 128 ; сист. путь - ld de,PRM3 + 2 ;+PRM4..5 ; 2 + 48 байтов буфер + ld de,Buffers.bat_params.PRM3 + 2 ;+PRM4..5. 2 + 48 байтов буфер call make_short_path ;pop hl @@ -323,11 +325,11 @@ PRNNAME: dec hl inc hl ; ld bc,8 - ld de,PRM1 ; буфер + ld de,Buffers.bat_params.PRM1 ldir xor a ld (de),a - ld de,PRM2 ; куда + ld de,Buffers.bat_params.PRM2; куда ldi ldi ldi @@ -395,7 +397,7 @@ PRNSIZE: ld a,(ix+32) ldi ld hl,SIZE_BUFFER.low ; "0 000 000 000" pop ix -.PRZ: ld de,PRM3 ; 16 буфер +.PRZ: ld de,Buffers.bat_params.PRM3; 16 буфер jp ncopy_string ; скопир. строку (с нулем), макс.15 симв. ; Скопировать в буфер дату файла/папки @@ -405,7 +407,7 @@ PRNDATE: ld c,(ix+FAT_DIRECTORY_RECORD.DATE) call MAKE_DATE ; вывод в буфер даты ld (hl),0 ld hl,SIZE_BUFFER.low ; "0 000 000 000" - ld de,PRM4 ; 16 куда + ld de,Buffers.bat_params.PRM4; 16 куда jp ncopy_string ; скопир. строку (с нулем), макс.15 симв. ; Скопировать в буфер время файла/папки @@ -415,7 +417,7 @@ PRNTIME: ld b,(ix+22) call MAKE_TIME ; скопир. в буфер время файла/папки ld (hl),0 ld hl,SIZE_BUFFER.low ; "0 000 000 000" - ld de,PRM5 ; 80 буфер строки + ld de,Buffers.bat_params.PRM5; 80 буфер строки jp ncopy_string ; скопир. строку (с нулем), макс.15 симв. ; в буфер время файла/папки @@ -738,24 +740,24 @@ read_disk_info: OR #80 ; нет метки .no_volume_label:; %6 ld hl,volume_string_no ; строка - ld de,PRM6 ; куда + ld de,Buffers.bat_params.PRM6; куда call ncopy_string ; скопир. строку (с нулем) XOR A - LD (PRM7),A + LD (Buffers.bat_params.PRM7),A ret .good_label: POP HL PUSH HL ; толкаем лишнее ; есть метка volume_label: POP DE ; снимаем лишнее ; %7 - ld de,PRM7 + ld de,Buffers.bat_params.PRM7 ld bc,11 ;!HARDCODE длина метки ldir xor a ld (de),a ; %6 ld hl,volume_string_yes ; строка - ld de,PRM6 ; куда + ld de,Buffers.bat_params.PRM6; куда call ncopy_string ; скопир. строку (с нулем) ret ; diff --git a/SHELL/Commands/ECHO.ASM b/SHELL/Commands/ECHO.ASM index a893a48..183a51f 100644 --- a/SHELL/Commands/ECHO.ASM +++ b/SHELL/Commands/ECHO.ASM @@ -36,7 +36,7 @@ A862E: ld a,(echo_mode) ; фла jr nz,$+5 ; false ;!FIXIT $ ld de,MAIN_MSG.OFF ; индекс "off" call FMESAGE ; найти строку по индексу - ld de,PRM1 ; куда (аргумент %1) + ld de,Buffers.bat_params.PRM1; куда (аргумент %1) call ncopy_string ; скопир. строку (с нулем), макс.15 симв. ld de,MAIN_MSG.ECHO ; индекс "Echo is %1" jp ECHO_MESSAGE diff --git a/SHELL/Commands/VER.ASM b/SHELL/Commands/VER.ASM index 19ef652..443154d 100644 --- a/SHELL/Commands/VER.ASM +++ b/SHELL/Commands/VER.ASM @@ -8,12 +8,12 @@ cmd_version: RST ToDSS LD L,D LD H,E - LD DE,PRM1 + LD DE,Buffers.bat_params.PRM1 CALL .Set_Ver_to_PRM ; set DSS version ;R13 LD HL,256*CONSOLE_MODF + CONSOLE_VERS LD BC,CONSOLE_BUILD - LD DE,PRM2 + LD DE,Buffers.bat_params.PRM2 CALL .Set_Ver_to_PRM ; set Shell version ;R13 LD DE,MAIN_MSG.VERSION diff --git a/SHELL/Procedures/Print.ASM b/SHELL/Procedures/Print.ASM index 100ca94..fc1d8a2 100644 --- a/SHELL/Procedures/Print.ASM +++ b/SHELL/Procedures/Print.ASM @@ -24,7 +24,7 @@ invalid_param: ;------------------------------------------------- -; Вывод сообщения ошибки по индексу +; Вывод сообщения по индексу ; вход: de=индекс строки ;------------------------------------------------- ECHO_MESSAGE: @@ -94,7 +94,7 @@ PRINTZ: ld a,(hl) LD L,A LD H,0 ; - ld bc,PRM1 ; буфер + ld bc,Buffers.bat_params.PRM1 add hl,bc ld c,Dss.PChars ; вывод строки RST ToDSS @@ -102,17 +102,14 @@ PRINTZ: ld a,(hl) jp PRINTZ - - -;!FIXIT перенести к общим буферам как у меня ; буферы аргументов командной строки -PRM1: BLOCK 16,0 ; аргумент %1 -PRM2: BLOCK 16,0 ; аргумент %2 -PRM3: BLOCK 16,0 ; аргумент %3 -PRM4: BLOCK 16,0 ; аргумент %4 -PRM5: BLOCK 16,0 ; аргумент %5 -PRM6: BLOCK 16,0 ; аргумент %6 -PRM7: BLOCK 16,0 ; аргумент %7 -PRM8: BLOCK 16,0 ; аргумент %8 -PRM9: BLOCK 16,0 ; аргумент %9 +; PRM1: BLOCK 16,0 ; аргумент %1 +; PRM2: BLOCK 16,0 ; аргумент %2 +; PRM3: BLOCK 16,0 ; аргумент %3 +; PRM4: BLOCK 16,0 ; аргумент %4 +; PRM5: BLOCK 16,0 ; аргумент %5 +; PRM6: BLOCK 16,0 ; аргумент %6 +; PRM7: BLOCK 16,0 ; аргумент %7 +; PRM8: BLOCK 16,0 ; аргумент %8 +; PRM9: BLOCK 16,0 ; аргумент %9 ; \ No newline at end of file diff --git a/SHELL/build.txt b/SHELL/build.txt index 50b04df..cdf1f34 100644 --- a/SHELL/build.txt +++ b/SHELL/build.txt @@ -1 +1 @@ -402 \ No newline at end of file +403 \ No newline at end of file diff --git a/SHELL/structures.inc b/SHELL/structures.inc index 1826213..db0218f 100644 --- a/SHELL/structures.inc +++ b/SHELL/structures.inc @@ -14,7 +14,21 @@ .free BLOCK 3840,0 ENDS +; буферы аргументов командной строки + STRUCT BAT_PARAMS +.PRM1: BLOCK 16,0 ; аргумент %1 +.PRM2: BLOCK 16,0 ; аргумент %2 +.PRM3: BLOCK 16,0 ; аргумент %3 +.PRM4: BLOCK 16,0 ; аргумент %4 +.PRM5: BLOCK 16,0 ; аргумент %5 +.PRM6: BLOCK 16,0 ; аргумент %6 +.PRM7: BLOCK 16,0 ; аргумент %7 +.PRM8: BLOCK 16,0 ; аргумент %8 +.PRM9: BLOCK 16,0 ; аргумент %9 Buffers.bat_params. + ENDS + STRUCT Struc_Buffers +.bat_params BAT_PARAMS .screen_path BLOCK 2 + max_screen_path + 1, 0 ; db "A:" : BLOCK max_screen_path+1,0 .sys_path BLOCK 256,0 .input_line Input_Line