From 6224d9fcb64b7c236aa248eaf0875fae0849f02b Mon Sep 17 00:00:00 2001 From: Anatoliy Belyanskiy Date: Fri, 8 Sep 2023 22:40:45 +1000 Subject: [PATCH] ... --- Console/build.txt | 2 +- DSS/EXECUTE.ASM | 2 +- DSS/build.txt | 2 +- SHELL/BATCH.ASM | 4 ++-- SHELL/ERROR.ASM | 2 +- SHELL/SHELL.ASM | 52 ++++++++++++++++++++++---------------------- SHELL/SHELL_EXEC.ASM | 47 +++++++++++++++++++-------------------- SHELL/build.txt | 2 +- Shared_Includes | 2 +- 9 files changed, 58 insertions(+), 57 deletions(-) diff --git a/Console/build.txt b/Console/build.txt index 31ff414..2e66562 100644 --- a/Console/build.txt +++ b/Console/build.txt @@ -1 +1 @@ -48 \ No newline at end of file +49 \ No newline at end of file diff --git a/DSS/EXECUTE.ASM b/DSS/EXECUTE.ASM index 93fa16d..9147251 100644 --- a/DSS/EXECUTE.ASM +++ b/DSS/EXECUTE.ASM @@ -259,7 +259,7 @@ EX_PAT1: LD A,(HL) JR Z,PATH_YEP CP ":" JR Z,DRIVE_YEP - CP #21 + CP "!" JR C,NAME_YEP CP "?" JR Z,GLOBP1 diff --git a/DSS/build.txt b/DSS/build.txt index dd4a900..b8e817d 100644 --- a/DSS/build.txt +++ b/DSS/build.txt @@ -1 +1 @@ -254 \ No newline at end of file +255 \ No newline at end of file diff --git a/SHELL/BATCH.ASM b/SHELL/BATCH.ASM index 2781906..3495241 100644 --- a/SHELL/BATCH.ASM +++ b/SHELL/BATCH.ASM @@ -303,7 +303,7 @@ A8286: ex af,af' ld hl,BATLIST ; команды "pause","rem" + dos-команды ; de=struct_input_line+5, c=длина строки (без конц. пробелов) ; выполн. команду или запустить файл - jp A8312 + jp COMP004 @@ -354,7 +354,7 @@ EVALSTR: ld a,(hl) ld (.TVAR_PNT),de jr nz,.TVAR1 inc hl - ld a,(hl) + ld a,(hl) ;!FIXIT я в console.asm исправлял баг с параметром %A например. Тут мои правки или Василя? cp "9"+1 jr c,.TVAR0 .TVAR2: ld a,"%" ; > "9" diff --git a/SHELL/ERROR.ASM b/SHELL/ERROR.ASM index 2796e94..9b3fe64 100644 --- a/SHELL/ERROR.ASM +++ b/SHELL/ERROR.ASM @@ -139,7 +139,7 @@ MSG0: db 0 db "Volume Serial Number is %2",0Dh,0Ah db 0Dh,0Ah,"Directory of %3",0Dh,0Ah,0Ah,0 ; 1 - db "Estex DSS version %1. Console version %2.",CR,LF,0 ;R13 + db "Estex DSS version %1. Shell version %2.",CR,LF,0 ;R13 ; 2 db "Current date: %1",0Dh,0Ah,0 ;2 db "Current time: %1",0Dh,0Ah,0 ;3 diff --git a/SHELL/SHELL.ASM b/SHELL/SHELL.ASM index 499b364..766e994 100644 --- a/SHELL/SHELL.ASM +++ b/SHELL/SHELL.ASM @@ -26,42 +26,42 @@ LF EQU 10 true EQU 1 false EQU 0 -; Loader_length EQU 0 -; code_addr EQU shell -; program_start EQU shell -; stack_point EQU #BFFE -; org_addr EQU #8000 + CLP_Buffer +Loader_length EQU 0 +code_addr EQU shell +program_start EQU shell +stack_point EQU #BFFE +org_addr EQU #8000 + CLP_Buffer ;---------------------------------------------------------------------[] ; -work_buffer1 equ entry - (256+128) ; 2-й раб. буфер ; 128 bytes -work_buffer2 equ entry - 256 ; 3-й раб. буфер ; 256 bytes +;work_buffer1 equ entry - (256+128) ; 2-й раб. буфер ; 128 bytes +;work_buffer2 equ entry - 256 ; 3-й раб. буфер ; 256 bytes - org 7F00h + ; org 7F00h - db "EX" ; exe ID - db 45h ; exe тип - db 0 ; exe версия - dw 512 ; 512, мл. смещ. кода - dw 0 ; ст. смещ. кода - dw 0 ; end-beg, первичный загрузчик - dw 0,0,0 ; резерв - dw entry ; адрес загрузки кода - dw shell ; адрес передачи управления - dw #BFFE ; адрес стека - ds 490 ; резерв + ; db "EX" ; exe ID + ; db 45h ; exe тип + ; db 0 ; exe версия + ; dw 512 ; 512, мл. смещ. кода + ; dw 0 ; ст. смещ. кода + ; dw 0 ; end-beg, первичный загрузчик + ; dw 0,0,0 ; резерв + ; dw entry ; адрес загрузки кода + ; dw shell ; адрес передачи управления + ; dw #BFFE ; адрес стека + ; ds 490 ; резерв ; Версия/Модификация/Билд шелла -entry: db "0.01.003" ;!FIXIT перенести в конец +;entry: db "0.01.003" ;!FIXIT перенести в конец -; INCLUDE 'Shared_Includes/constants/EXE_Header.z80' -; ORG org_addr + INCLUDE 'Shared_Includes/constants/EXE_Header.z80' + ORG org_addr ;============================================================== ; Точка входа в Шелл ;============================================================== @@ -158,7 +158,7 @@ run_shell_loop1: or a jr z,run_shell_loop1 ; пустая ; Парсинг и выполнение команд - call A82E7 + call COMP jr run_shell_loop ; назад в цикл @@ -519,7 +519,7 @@ T8C24: db "OFF",0 include "Commands/set.asm" ; задать переменную окружения include "Commands/reboot.asm" ; софт ресет ; - -;work_buffer1 equ $ ; 2-й раб. буфер ; 128 bytes -;work_buffer2 equ work_buffer1+128 ; 3-й раб. буфер ; 256 bytes + DISPLAY "Empty space for buffers from ",/H,$ +work_buffer1 equ $ ; 2-й раб. буфер ; 128 bytes +work_buffer2 equ work_buffer1+128 ; 3-й раб. буфер ; 256 bytes ; \ No newline at end of file diff --git a/SHELL/SHELL_EXEC.ASM b/SHELL/SHELL_EXEC.ASM index de9b2d9..15b5da7 100644 --- a/SHELL/SHELL_EXEC.ASM +++ b/SHELL/SHELL_EXEC.ASM @@ -6,7 +6,7 @@ D8374: dw 0 ;------------------------------------------------------------- ; Разбор и выполнение введенных команд и имен файлов ;------------------------------------------------------------- -A82E7: call EVALCMD ; (batch.asm) +COMP: call EVALCMD ; (batch.asm) ld hl,struct_input_line+5 dec hl ;ld hl,struct_input_line+4;; @@ -14,15 +14,15 @@ A82E7: call EVALCMD ; (batch.asm) ld b,0 inc hl ; struct_input_line+5 ;ld hl,work_buffer+256;; -A82F2: ld a,(hl) +.loop: ld a,(hl) cp " " - jr nz,A82FC + jr nz,COMP01 inc hl dec c - jr nz,A82F2 + jr nz,.loop ret ; -A82FC: ld d,h +COMP01: ld d,h ld e,l add hl,bc ld (hl),0 @@ -31,28 +31,28 @@ A82FC: ld d,h ex af,af' ld a," " cpir - jr nz,A830C + jr nz,COMP005 inc c -A830C: ex af,af' +COMP005: ex af,af' sub c ld c,a ld hl,CMDLIST ; список команд ДОС-а ; de=struct_input_line+5, c=длина строки ; от bat-отработки -A8312: push bc +COMP004: push bc push de -A8314: ld a,(de) +COMP000: ld a,(de) cp "a" - jr c,A8321 + jr c,COMP001 cp "z"+1 - jr nc,A8321 - and 5Fh ; a..z -> A..Z -A8321: cp (hl) + jr nc,COMP001 + and #5F ; a..z -> A..Z +COMP001: cp (hl) jr nz,COMP002 ; не дос-команды inc hl inc de dec c - jr nz,A8314 + jr nz,COMP000 xor a cp (hl) jr nz,COMP002 @@ -60,9 +60,9 @@ A8321: cp (hl) pop bc ld a,(de) cp " " - jr nz,A8338 + jr nz,NOSPC inc de -A8338: inc hl +NOSPC: inc hl ld a,(hl) inc hl ld h,(hl) @@ -79,7 +79,7 @@ COMP002: xor a pop bc ld a,(hl) or a - jr nz,A8312 ; назад в цикл, еще не дошли конца списка дос-команд + jr nz,COMP004 ; назад в цикл, еще не дошли конца списка дос-команд ld h,d ld l,e ; hl=struct_input_line+5 @@ -89,17 +89,18 @@ COMP002: xor a inc hl ld a,(hl) ;+2 3-й символ or a ; задан диск типа "x:" ? - jr nz,A8376 ; нет, имеем больше 2-х символов + jr nz,RUN_EXT ; нет, имеем больше 2-х символов ld a,":" ; постфикс буквы диска cp c ; 2-й символ - jr nz,A8376 ; задан не диск + jr nz,RUN_EXT ; задан не диск ld a,b ; 1-й символ cp "a" - jr c,A8369 + jr c,NOUP cp "z"+1 - jr nc,A8369 + jr nc,NOUP and 5Fh ; a..z -> A..Z -A8369: sub "A" ; номер диска +;!!!!! тут восстанавливается директория и могут быть глюки на новом ядре +NOUP: sub "A" ; номер диска ld c,Dss.ChDisk ; сменить тек. диск RST ToDSS jp c,print_err_message ; вывод сообщения @@ -119,7 +120,7 @@ A8369: sub "A" ; jp save_disk_path ; Ok ; задан не диск -A8376: ex de,hl ; восст. адрес начала строки +RUN_EXT: ex de,hl ; восст. адрес начала строки ld (D8374),hl ; struct_input_line+5 ld de,T8C1A ; буфер ld bc,4*256 + Dss.EX_Path ; выделить расш. файла diff --git a/SHELL/build.txt b/SHELL/build.txt index 4e9e288..8323328 100644 --- a/SHELL/build.txt +++ b/SHELL/build.txt @@ -1 +1 @@ -63 \ No newline at end of file +67 \ No newline at end of file diff --git a/Shared_Includes b/Shared_Includes index 517e3de..7f4046e 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 517e3de074aab733f683abb328a4ffc8e0a2b284 +Subproject commit 7f4046e7fabff85738efcf2a7aa1dbbeca7af906