mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 17:31:47 +03:00
DSS: +new options for Dss.DskInfo. SHELL: keys for cmd_dir in progress...
This commit is contained in:
parent
55e6b9b07d
commit
1533b89738
@ -1460,7 +1460,7 @@ SEARCH:
|
||||
CPL
|
||||
LD C,A
|
||||
LD IX,DIRPAGE.buffer
|
||||
;TEST 9/11/23
|
||||
;!TEST 9/11/23
|
||||
; EXX
|
||||
; LD DE,0
|
||||
; EXX
|
||||
|
||||
@ -1 +1 @@
|
||||
620
|
||||
621
|
||||
@ -307,7 +307,7 @@ A8286: ex af,af'
|
||||
ld hl,BATLIST ; ª®¬ ¤ë "pause","rem" + dos-ª®¬ ¤ë
|
||||
; de=struct_input_line+5, c=¤«¨ áâப¨ (¡¥§ ª®æ. ¯à®¡¥«®¢)
|
||||
; ¢ë¯®«. ª®¬ ¤ã ¨«¨ § ¯ãáâ¨âì ä ©«
|
||||
jp COMP004
|
||||
jp COMP005.start
|
||||
|
||||
|
||||
|
||||
|
||||
@ -67,7 +67,7 @@ cmd_dt1:ld c,Dss.SysTime
|
||||
pop ix
|
||||
pop hl
|
||||
call A8964
|
||||
ld de,2 ; 身丰花 "Current date: %1"
|
||||
ld de,MAIN_MSG.DATE ; 身丰花 "Current date: %1"
|
||||
jp MESSAGE ; ¢ë¢¥á⨠áâபã
|
||||
|
||||
|
||||
@ -148,5 +148,5 @@ cmd_tm1:ld c,Dss.SysTime
|
||||
call A8913 ; ¤¥áïâ. ¢ë¢®¤ ¢ ¡ãä¥à
|
||||
xor a
|
||||
ld (hl),a ; ¢ ª®¥æ áâப¨
|
||||
ld de,3 ; 身丰花 "Current time: %1"
|
||||
ld de,MAIN_MSG.TIME ; 身丰花 "Current time: %1"
|
||||
jp MESSAGE ; ¢ë¢¥á⨠áâபã
|
||||
|
||||
@ -5,17 +5,32 @@
|
||||
;///////////////////////////////////////////////////
|
||||
cmd_dir:
|
||||
push de
|
||||
ld c,Dss.CurDisk ; ã§ âì ⥪. ¤¨áª
|
||||
;;;; [ ] ¯®¤¤¥à¦ª ¯ à ¬¥â஢
|
||||
; § ã«ï¥¬ ¢á¥ ¯ à ¬¥âàë áâ àâ¥
|
||||
xor a
|
||||
ld (read_disk_info.full),a
|
||||
|
||||
|
||||
; ¢ë¯®«ï¥¬/ áâà ¨¢ ¥¬ ¢á¥ ©¤¥ë¥ ¯ à ¬¥âàë ¢ áâப¥
|
||||
ld hl,cmd_dir_options
|
||||
LD C,256-3 ;!HARDCODE ¤«¨ áâப¨ á ª®¬ ¤®©
|
||||
.parse: call RUN_OPTION
|
||||
jr nc,.skip
|
||||
jp (hl)
|
||||
;
|
||||
.skip: ld c,Dss.CurDisk ; ã§ âì ⥪. ¤¨áª
|
||||
RST ToDSS
|
||||
ADD A,"A"
|
||||
ld (root_path),a ; ®¬¥à ¤¨áª
|
||||
SUB "A"
|
||||
call read_disk_info ; ¯à®ç¨â âì ¬¥âªã ¨ á¥à¨©ë© ®¬¥à ¤¨áª
|
||||
;
|
||||
pop de
|
||||
ld hl,0
|
||||
ld (D88DC),hl
|
||||
ld (D88DE),hl
|
||||
ld (D88E0),hl
|
||||
ld (dir_number),hl
|
||||
ex de,hl
|
||||
ld a,(hl)
|
||||
or a
|
||||
@ -26,41 +41,51 @@ cmd_dir:
|
||||
ld c,Dss.GSwitch ; ¢ë¤¥«¨âì ¯ à ¬¥âà ª®¬-áâப¨
|
||||
RST ToDSS
|
||||
; [ ] 1/10/23
|
||||
|
||||
;
|
||||
;ld hl,T9186 ; ¨¬ï ä ©«
|
||||
;ld de,T9186 ; ¡ãä¥à
|
||||
ld hl,work_buffer1 ; ¨¬ï ä ©«
|
||||
ld de,work_buffer1 ; 80 ¡ãä¥à
|
||||
ld a,#37 ; âਡãâ (¢á¥, ªà®¬¥ ¬¥âª¨ ⮬ )
|
||||
ld bc,0*256 + Dss.F_First ; f_first (ä®à¬ â 11)
|
||||
RST ToDSS
|
||||
;R14
|
||||
;jp c,print_err_message ; ¢ë¢®¤ á®®¡é¥¨ï DSS_Error.sys.FILE_NOT_FOUND
|
||||
JR NC,.not_empty
|
||||
CP DSS_Error.sys.FILE_NOT_FOUND
|
||||
JP NZ,print_err_message
|
||||
SCF
|
||||
JP .Print_Header
|
||||
.not_empty:
|
||||
CALL .Print_Header
|
||||
;
|
||||
JR C,.dir_empty ;R14
|
||||
CALL .Print_Header
|
||||
; 横« ¢ë¢®¤ á¯¨áª ä ©«®¢/¯ ¯®ª
|
||||
.loop: ;ld hl,T9186 ; à ¡. ¡ãä¥à
|
||||
ld hl,work_buffer1 ; 80
|
||||
.loop: ld hl,work_buffer1 ; 80
|
||||
ld de,33
|
||||
add hl,de
|
||||
call A88E2
|
||||
;ld ix,T9186
|
||||
ld ix,work_buffer1 ; 80
|
||||
ld a,(ix+32) ; âਡãâ ⥪. § ¯¨á¨
|
||||
and FAT_ATTR.DIRECTORY ; ¯ ¯ª ?
|
||||
jr z,.calc_size ; ¥â
|
||||
; áç¨â ¥¬ ¯ ¯ª¨
|
||||
; ¥ áç¨â ¥¬ ¯ ¯ª®© á«ã¦¥¡ë¥ "." ¨ ".."
|
||||
ld d,(ix+33)
|
||||
ld e,(ix+34)
|
||||
ld hl,-('..')
|
||||
add hl,de
|
||||
ld a,h
|
||||
or l
|
||||
jr z,.next
|
||||
ld hl,-('. ')
|
||||
add hl,de
|
||||
ld a,h
|
||||
or l
|
||||
jr z,.next
|
||||
; 㢥«¨ç¨¢ ¥¬ áçñâ稪 ¯ ¯®ª
|
||||
ld hl,(dir_number)
|
||||
inc hl
|
||||
ld (dir_number),hl
|
||||
jr .next
|
||||
|
||||
;;R14
|
||||
.dir_empty:
|
||||
push af
|
||||
CALL .Print_Header
|
||||
pop af
|
||||
CALL print_err_message
|
||||
jr .print
|
||||
;;R14
|
||||
|
||||
; ¯à¨¡ ¢¨âì à §¬¥à ⥪. ä ©«
|
||||
.calc_size:
|
||||
ld hl,(D88DC)
|
||||
@ -131,17 +156,27 @@ cmd_dir:
|
||||
ldi
|
||||
ldi
|
||||
ldi
|
||||
¥¤®¤¥« ®
|
||||
; [ ] ¢ë¢®¤ ª®«¨ç¥á⢠¯ ¯®ª
|
||||
; [ ] ¢ë¢®¤ ®¡é¥£® ª®«¨ç¥á⢠᢮¡®¤®£® ¬¥áâ
|
||||
ld hl,T8B46 ; "0 000 000 000"
|
||||
ld de,PRM2 ; ªã¤
|
||||
call ncopy_string ; ᪮¯¨à. áâபã (á ã«¥¬), ¬ ªá.15 ᨬ¢.
|
||||
ld de,9 ; ¨¤¥ªá " %1 file(s) %2 bytes"
|
||||
;
|
||||
;!TEST
|
||||
;ld hl,(dir_number)
|
||||
;ld de,PRM3
|
||||
;call hex2dec_ascii_16bit.n10000
|
||||
; „¥áïâ¨çë© ¢ë¢®¤
|
||||
ld hl,(dir_number)
|
||||
ld ix,PRM3 ; ¡ãä¥à
|
||||
call A8964
|
||||
;xor a
|
||||
;ld (de),a
|
||||
;
|
||||
ld de,MAIN_MSG.DIR_2 ; ¨¤¥ªá " %1 file(s) %2 bytes"
|
||||
jp MESSAGE ; ¢ë¢¥á⨠áâபã
|
||||
|
||||
;R14
|
||||
.Print_Header:
|
||||
PUSH AF
|
||||
;
|
||||
; %1
|
||||
ld a,(screen_path) ; ¤¨áª
|
||||
ld hl,PRM1
|
||||
@ -154,27 +189,16 @@ cmd_dir:
|
||||
ld hl,serial_string ; áâப á¥à¨©®£® ®¬¥à ¤¨áª
|
||||
ld de,PRM2 ; ªã¤
|
||||
call ncopy_string ; ᪮¯¨à. áâபã (á ã«¥¬)
|
||||
;
|
||||
;R14
|
||||
POP AF
|
||||
ld hl,screen_path
|
||||
JR NC,.not_empty_2
|
||||
;
|
||||
ld a,(screen_path)
|
||||
LD (.str),A
|
||||
ld hl,.str ; íªà . ¯ãâì
|
||||
; %3
|
||||
.not_empty_2:
|
||||
;
|
||||
; %3
|
||||
ld hl,screen_path
|
||||
ld de,PRM3 ; 16 ¡ãä¥à
|
||||
CALL copy_string ; ᪮¯¨à. áâபã (á ã«¥¬)
|
||||
;
|
||||
ld de,0 ; ¨¤¥ªá "Volume in drive %1 has no label..." ;!HARDCODE ®¬¥à áâப¨ MSG0
|
||||
ld de,MAIN_MSG.DIR_1 ; ¨¤¥ªá "Volume in drive %1..." ;!HARDCODE ®¬¥à áâப¨ MSG0
|
||||
JP MESSAGE ; ¢ë¢¥á⨠áâபã
|
||||
|
||||
.str: DZ 'X:\ is empty' ;R14 ;!FIXIT
|
||||
;
|
||||
|
||||
|
||||
; <20>®¤£®â®¢¨âì áâபã á¯¨áª ä ©«®¢/¯ ¯®ª
|
||||
A88E2: ld bc,8
|
||||
ld de,PRM1 ; ¡ãä¥à
|
||||
@ -186,12 +210,11 @@ A88E2: ld bc,8
|
||||
ldi
|
||||
ldi
|
||||
ld (de),a
|
||||
;ld ix,T9186
|
||||
ld ix,work_buffer1
|
||||
call A89A4 ; ¢ë¢¥á⨠¢ ¡ãä¥à ¨¬ï ä ©« ¨ ¥£® à §¬¥à (ã ¯ ¯ª¨ <DIR>)
|
||||
call A89FA ; ¢ë¢¥á⨠¢ ¡ãä¥à ¤ âã ä ©« /¯ ¯ª¨
|
||||
call A8A19 ; ¢ë¢¥á⨠¢ ¡ãä¥à ¢à¥¬ï ä ©« /¯ ¯ª¨
|
||||
ld de,10 ; ¨¤¥ªá "%1 %2 %3 %4 %5"
|
||||
ld de,MAIN_MSG.DIR_3 ; ¨¤¥ªá "%1 %2 %3 %4 %5"
|
||||
jp MESSAGE ; ¢ë¢®¤ áâப¨
|
||||
|
||||
|
||||
@ -326,7 +349,7 @@ A8A7E: ld c,2Fh
|
||||
inc hl
|
||||
ret
|
||||
|
||||
|
||||
;!TODO ¯¥à¥â é¨âì ¢ procedures/math.asm
|
||||
; „¥áïâ¨çë© 32-å à §àï¤ë© ¢ë¢®¤
|
||||
A8A8F: ld ix,T8B2E ; "0000000000"
|
||||
exx
|
||||
@ -413,9 +436,10 @@ A8B16: inc a
|
||||
ret
|
||||
;
|
||||
|
||||
D88DC: dw 0
|
||||
D88DE: dw 0
|
||||
D88E0: dw 0
|
||||
D88DC: dw 0
|
||||
D88DE: dw 0
|
||||
D88E0: dw 0
|
||||
dir_number: dw 0
|
||||
;
|
||||
|
||||
T8B2E: db "000000000"
|
||||
@ -425,12 +449,14 @@ T8B46: db "0 000 000 000",0
|
||||
db 0
|
||||
;
|
||||
|
||||
;!FIXIT ¯¥à¥¥á⨠¢ DSS - FN #04: GET_BPB
|
||||
; ¯à®ç¨â âì BPB ¤¨áª
|
||||
; [ ] ⥯¥àì ¥ «¥§¥â ¯àï¬ãî, ¤¥« ¥â ç¥à¥§ ®¢ë© ¯ à ¬¥âà äãªæ¨¨ DskInfo
|
||||
; ¨ ï «®£¨ª ¯®«ãç¥¨ï ¬¥âª¨ ⮬ - á ç « ¨é¥âáï ¢ ª®à¥¢®© ¤¨à¥ªâ®à¨¨,
|
||||
; ¥á«¨ â ¬ ¥â, â® ¡¥àñâáï ¨§ BPB
|
||||
read_disk_info:
|
||||
OR #80
|
||||
LD HL,work_buffer
|
||||
LD BC,Dss.DskInfo
|
||||
.full+1: LD B,0
|
||||
LD C,Dss.DskInfo
|
||||
RST ToDSS
|
||||
; ” ©«®¢ ï á¨á⥬
|
||||
; ‘¥à¨©ë© ®¬¥à ¤¨áª
|
||||
@ -558,32 +584,6 @@ unknown_serial:
|
||||
;
|
||||
|
||||
|
||||
|
||||
; ‚뢮¤ HL ¢ hex-ä®à¬ â¥
|
||||
; de=¡ãä¥à
|
||||
; hl=ç¨á«®
|
||||
hex16: ld a,h
|
||||
call hex8
|
||||
ld a,l
|
||||
; ¢ë¢®¤ "a"
|
||||
hex8: push af
|
||||
rrca
|
||||
rrca
|
||||
rrca
|
||||
rrca
|
||||
call .num
|
||||
pop af
|
||||
;
|
||||
.num: and %0000'1111
|
||||
add a,#90
|
||||
daa
|
||||
adc a,#40
|
||||
daa
|
||||
ld (de),a
|
||||
inc de
|
||||
ret
|
||||
|
||||
|
||||
; ¬ áª ä ©«®¢
|
||||
mask_fname:
|
||||
db "*.*",0
|
||||
@ -598,7 +598,41 @@ serial_string:
|
||||
.Size equ $-serial_string
|
||||
db 0 ; § ªàë¢ èª
|
||||
|
||||
volume_string_no: ;!FIXIT ᤥ« âì ç¥à¥§ PRM
|
||||
volume_string_no:
|
||||
db "has no label",0
|
||||
volume_string_yes:
|
||||
db "has label",0
|
||||
|
||||
;
|
||||
cmd_dir_options:
|
||||
; [ ] ¯ à ¬¥âà /F - ¢ë¢®¤ ª®«¨ç¥á⢠᢮¡®¤®£® ¬¥áâ ¤¨áª¥ (â®à¬®§¨â, ¯®í⮬㠯 à ¬¥â஬)
|
||||
DB 'f' : DW cmd_dir_freeSpace
|
||||
.Size EQU ($-cmd_dir_options)/3
|
||||
.paramLength equ 3
|
||||
;
|
||||
|
||||
;
|
||||
cmd_dir_freeSpace:
|
||||
PUSH DE
|
||||
PUSH BC
|
||||
; § â¨à ¥¬ ©¤¥ë© ª«îç
|
||||
ld A,'/'
|
||||
ex de,hl
|
||||
ld bc,4
|
||||
CPDR
|
||||
inc hl
|
||||
ld (hl),' '
|
||||
inc hl
|
||||
ld (hl),' '
|
||||
|
||||
; áâ ¢¨¬ ®¯æ¨î ¤«ï API DSS DskInfo
|
||||
ld a,1
|
||||
ld (read_disk_info.full),a
|
||||
; ¢ë¢®¤¨¬ áâப㠮 à áçñ⥠᢮¡®¤®£® ¬¥áâ â ª, ç⮡ ® § âñà« áì
|
||||
LD DE,MAIN_MSG.CALCULATING
|
||||
CALL MESSAGE
|
||||
; ¢®§¢à é ¥¬áï ¢ 横«
|
||||
POP BC
|
||||
POP DE
|
||||
jp cmd_dir.parse
|
||||
;
|
||||
@ -38,7 +38,7 @@ A862E: ld a,(echo_mode) ; 䫠
|
||||
call FMESAGE ; ©â¨ áâப㠯® ¨¤¥ªáã
|
||||
ld de,PRM1 ; ªã¤ ( à£ã¬¥â %1)
|
||||
call ncopy_string ; ᪮¯¨à. áâபã (á ã«¥¬), ¬ ªá.15 ᨬ¢.
|
||||
ld de,6 ; 身丰花 "Echo is %1"
|
||||
ld de,MAIN_MSG.ECHO ; 身丰花 "Echo is %1"
|
||||
jp MESSAGE
|
||||
;
|
||||
A864B: ld (echo_mode),a ; ä« £ echo-०¨¬
|
||||
|
||||
@ -4,5 +4,5 @@
|
||||
;
|
||||
;///////////////////////////////////////////////////
|
||||
cmd_help:
|
||||
ld de,11 ; 身丰花 "COMMANDS: ..."
|
||||
ld de,MAIN_MSG.HELP ; 身丰花 "COMMANDS: ..."
|
||||
jp MESSAGE
|
||||
|
||||
@ -4,8 +4,8 @@
|
||||
;
|
||||
;///////////////////////////////////////////////////
|
||||
cmd_pause:
|
||||
ld de,4 ; 身丰花 "Press any key to continue ..."
|
||||
ld de,MAIN_MSG.PAUSE ; 身丰花 "Press any key to continue ..."
|
||||
call MESSAGE ; ¢ë¢®¤ áâப¨
|
||||
ld c,Dss.WaitKey ; ¦¤¥¬ ¦ â¨ï ª« ¢¨è¨
|
||||
RST ToDSS
|
||||
ret
|
||||
JP ToDSS
|
||||
;ret
|
||||
|
||||
@ -16,46 +16,9 @@ cmd_version:
|
||||
LD DE,PRM2
|
||||
CALL .Set_Ver_to_PRM ; set Shell version
|
||||
;R13
|
||||
LD DE,VERSMSG
|
||||
LD DE,MAIN_MSG.VERSION
|
||||
JP MESSAGE
|
||||
; ¢å®¤: hl=ç¨á«®, de=¡ãä¥à
|
||||
.num_ver:
|
||||
.num_mod:
|
||||
ld ix,.tmp1__
|
||||
res 7,(ix+0)
|
||||
jr .decim
|
||||
|
||||
; ¢å®¤: hl=ç¨á«®, de=¡ãä¥à
|
||||
.num_build:
|
||||
ld ix,.tmp1__
|
||||
res 7,(ix+0)
|
||||
ld bc,100 ; 100
|
||||
call .num16
|
||||
|
||||
.decim: ld bc,10 ; 10
|
||||
call .num16
|
||||
ld a,l
|
||||
add a,"0"
|
||||
jr .num16_exit
|
||||
|
||||
.tmp1__: BYTE 0
|
||||
|
||||
.num16: ld a,'0'-1
|
||||
and a
|
||||
inc a
|
||||
sbc hl,bc
|
||||
jr nc,$-3
|
||||
add hl,bc
|
||||
cp "0"
|
||||
jr z,$+6
|
||||
set 7,(ix+0)
|
||||
bit 7,(ix+0)
|
||||
ret z
|
||||
.num16_exit:
|
||||
ld (de),a ; á®åà. ¢ ¡ãä¥à¥
|
||||
inc de
|
||||
ret
|
||||
;
|
||||
; ‚室:
|
||||
; L - ®¬¥à ¢¥àᨨ (0..9)
|
||||
; H - ®¬¥à ¬®¤¨ä¨ª 樨 (0..99)
|
||||
@ -65,19 +28,19 @@ cmd_version:
|
||||
PUSH BC
|
||||
PUSH HL
|
||||
LD H,0
|
||||
CALL .num_ver ;decim2 ®¬¥à ¢¥àᨨ (0..9)
|
||||
CALL hex2dec_ascii_16bit.n10 ;decim2 ®¬¥à ¢¥àᨨ (0..9)
|
||||
LD A,'.'
|
||||
LD (DE),A
|
||||
INC DE
|
||||
POP HL
|
||||
LD L,H
|
||||
LD H,0
|
||||
CALL .num_mod ;decim2 ®¬¥à ¬®¤¨ä¨ª 樨 (0..99)
|
||||
CALL hex2dec_ascii_16bit.n10 ;decim2 ®¬¥à ¬®¤¨ä¨ª 樨 (0..99)
|
||||
POP HL
|
||||
LD A,'.'
|
||||
LD (DE),A
|
||||
INC DE
|
||||
CALL .num_build ;decim3 ®¬¥à ¡¨«¤ (0..999)
|
||||
CALL hex2dec_ascii_16bit.n100 ;decim3 ®¬¥à ¡¨«¤ (0..999)
|
||||
XOR A
|
||||
LD (DE),A
|
||||
RET
|
||||
|
||||
303
SHELL/ERROR.ASM
303
SHELL/ERROR.ASM
@ -1,303 +0,0 @@
|
||||
;-------------------------------------------------
|
||||
; ‚뢮¤ á®®¡é¥¨ï ®è¨¡ª¨ ¯® ¨¤¥ªáã
|
||||
; ¢å®¤: a=®¬¥à ®è¨¡ª¨
|
||||
;-------------------------------------------------
|
||||
print_err_message:
|
||||
ld e,a
|
||||
ld d,0
|
||||
inc de
|
||||
ld hl,ERR0 ; ¬ áᨢ áâப
|
||||
ld bc,ERR0.Size ; à §¬¥à ¬ áᨢ
|
||||
call LCPIR ; ©â¨ áâபã
|
||||
call PRINTZ ; ä®à¬ â. ¢ë¢®¤ áâப¨
|
||||
call newline
|
||||
jp newline
|
||||
|
||||
|
||||
|
||||
; ‚뢮¤ áâப¨ ®è¨¡ª¨
|
||||
;A850D:
|
||||
invalid_param:
|
||||
ld de,5 ; ¨¤¥ªá "Invalid parametr"
|
||||
jr MESSAGE
|
||||
|
||||
|
||||
|
||||
;-------------------------------------------------
|
||||
; ‚뢮¤ á®®¡é¥¨ï ®è¨¡ª¨ ¯® ¨¤¥ªáã
|
||||
; ¢å®¤: de=¨¤¥ªá áâப¨
|
||||
;-------------------------------------------------
|
||||
MESSAGE:
|
||||
call FMESAGE ; ©â¨ áâப㠯® ¨¤¥ªáã
|
||||
jp PRINTZ ; ä®à¬ â. ¢ë¢®¤ áâப¨
|
||||
;jp A82CC ; ã§ âì ¨ ãáâ. ¯®«®¦. ªãàá®à
|
||||
|
||||
|
||||
; <20> ©â¨ áâப㠯® ¨¤¥ªáã
|
||||
; ¢å®¤: de=¨¤¥ªá áâப¨
|
||||
; ¢ë室: hl=áâப
|
||||
FMESAGE: inc de
|
||||
ld hl,MSG0 ; ç «® ¬ áᨢ áâப
|
||||
ld bc,MSG0.Size ; à §¬¥à ¬ áᨢ
|
||||
LCPIR: xor a
|
||||
cpir
|
||||
ret po
|
||||
ret nz
|
||||
;R11
|
||||
XOR A
|
||||
CP (HL)
|
||||
JR Z,.no_mess
|
||||
;
|
||||
dec de
|
||||
ld a,d
|
||||
or e
|
||||
jr nz,LCPIR
|
||||
ret
|
||||
.no_mess: INC HL
|
||||
RET
|
||||
|
||||
;[x] ¨á¯à ¢«¥ ¡ £ á ¢ë室®¬ § ¯à¥¤¥«ë ¡ãä¥à PRM. —ãâì ®¯â¨¬¨§¨à®¢
|
||||
;----------------------------------------------------------------------;
|
||||
; ”®à¬ â¨à®¢ ë© ¢ë¢®¤ áâப¨ á ¯®¤áâ ®¢ª®© à£ã¬¥â®¢ ¢¬¥áâ® %1-%9
|
||||
; ¢å®¤: hl=¡ãä¥à áâப¨
|
||||
;----------------------------------------------------------------------;
|
||||
PRINTZ: ld a,(hl)
|
||||
inc hl
|
||||
or a
|
||||
ret z
|
||||
cp '%'
|
||||
jr z,.check_PRM
|
||||
.char: ld c,Dss.PutChar
|
||||
RST ToDSS
|
||||
jp PRINTZ
|
||||
.bad_PRM:
|
||||
ld a,'%'
|
||||
jp .char
|
||||
.check_PRM:
|
||||
ld a,(hl)
|
||||
cp '9'+1
|
||||
jr nc,.bad_PRM
|
||||
inc hl
|
||||
sub '1'
|
||||
push hl
|
||||
;!TEST
|
||||
;ld l,a
|
||||
;ld h,0
|
||||
;add hl,hl ;1+1=2
|
||||
;add hl,hl ;2+2=4
|
||||
;add hl,hl ;4+4=8
|
||||
;add hl,hl ;8+8=16 à §¬¥à ®â¤¥«ì®£® ¯®¤¡ãä¥à
|
||||
ADD A
|
||||
ADD A
|
||||
ADD A
|
||||
ADD A
|
||||
LD L,A
|
||||
LD H,0
|
||||
;
|
||||
ld bc,PRM1 ; ¡ãä¥à
|
||||
add hl,bc
|
||||
ld c,Dss.PChars ; ¢ë¢®¤ áâப¨
|
||||
RST ToDSS
|
||||
pop 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
|
||||
|
||||
|
||||
|
||||
;!TODO ¥ § ¡ëâì § ¬¥¨âì æ¨äàë í⨠¬¥âª¨
|
||||
DIR1MSG EQU 0
|
||||
VERSMSG EQU 1
|
||||
DATEMSG EQU 2
|
||||
TIMEMSG EQU 3
|
||||
PAUSMSG EQU 4
|
||||
ILLGMSG EQU 5
|
||||
ECHOMSG EQU 6
|
||||
ON__MSG EQU 7
|
||||
OFF_MSG EQU 8
|
||||
DIR2MSG EQU 9
|
||||
DIR3MSG EQU 10
|
||||
HELPMSG EQU 11
|
||||
|
||||
MSG0: db 0
|
||||
/* 0 */ db "Volume in drive %1 %4 %5",CR,LF
|
||||
db "Volume Serial Number is %2",CR,LF
|
||||
db CR,LF,"Directory of %3",CR,LF,LF,0
|
||||
/* 1 */ db "Estex DSS version %1. Shell version %2.",CR,LF,0 ;R13
|
||||
/* 2 */ db "Current date: %1",CR,LF,0
|
||||
/* 3 */ db "Current time: %1",CR,LF,0
|
||||
/* 4 */ db "Press any key to continue . . .",CR,LF,LF,0
|
||||
/* 5 */ db "Invalid parametr",CR,LF,0
|
||||
/* 6 */ db "Echo is %1",CR,LF,0
|
||||
/* 7 */ db "on",0
|
||||
/* 8 */ db "off",0
|
||||
/* 9 */ db " %1 File(s) %2 bytes",CR,LF
|
||||
db " %3 Dir(s) %4 bytes",CR,LF,LF,0
|
||||
/* 10 */ db "%1 %2 %3 %4 %5",CR,LF,0 ;FILENAME EXT SIZE DATE TIME
|
||||
/* 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
|
||||
DB 0
|
||||
DZ "Unknown command"
|
||||
;
|
||||
.Size EQU $-MSG0
|
||||
|
||||
/*
|
||||
MSG0: DB 0
|
||||
DB "Volume in drive %1 has no label",CR,LF ; !FIXIT
|
||||
DB "Volume Serial number is %2",CR,LF
|
||||
DB "Directory of %3",CR,LF,CR,LF,0
|
||||
DB "Estex DSS: Version %1",CR,LF,0 ;R02
|
||||
DB "Current date: %1",CR,LF,0
|
||||
DB "Current time: %1",CR,LF,0
|
||||
DB "Press any key to continue . . .",CR,LF,0
|
||||
DB "Invalid parametr",CR,LF,0
|
||||
DB "Echo is %1",CR,LF,0
|
||||
DB "on",0
|
||||
DB "off",0
|
||||
DB " %1 file(s) %2 bytes",CR,LF,CR,LF,0
|
||||
; FILENAME EXT SIZE DATE TIME
|
||||
DB "%1 %2 %3 %4 %5",CR,LF,0
|
||||
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
|
||||
BYTE 0
|
||||
DZ "Unknown command"
|
||||
;
|
||||
.Size EQU $-MSG0
|
||||
|
||||
*/
|
||||
;-----------------------------------------------------------------------
|
||||
;!FIXIT äãªæ¨ï ¢ë§ë¢ îé ï ¢ë¢®¤ ®è¨¡ª¨ ¤¥« ¥â ¢ ç «¥ 䨫ìâà ¯® ®¬¥à ¬ ¨ ¥áª®«ìª® ¯¥à¢ëå ®â訢 îâáï
|
||||
ERR0: DB #00
|
||||
DZ "Bad command or file name"
|
||||
DZ "Invalid function" ; 01 - ¥¢¥àë© ®¬¥à äãªæ¨¨
|
||||
DZ "Invalid drive number" ; 02 - ¥¯à ¢¨«ìë© ®¬¥à ãáâனáâ¢
|
||||
DZ "File not found" ; 03 - ä ©« ¥ ®¡ à㦥
|
||||
DZ "Path not found" ; 04 - ¥¢¥àë© ¯ãâì
|
||||
DZ "Invalid handle" ; 05 - ¥áãé¥áâ¢ãî騩 ä ©«®¢ë© ¬ ¨¯ã«ïâ®à
|
||||
DZ "Too many open files" ; 06 - ¥â ᢮¡®¤®£® ä ©«®¢®£® ¬ ¨¯ã«ïâ®à
|
||||
DZ "File already exist" ; 07 - ä ©« áãé¥áâ¢ã¥â
|
||||
DZ "File read only" ; 08 - ä ©« ⮫쪮 ¤«ï ç⥨ï
|
||||
DZ "Root overflow" ; 09 - ¯¥à¥¯®«¥¨¥ ROOT (ª®à¥¢®£® ª â «®£ )
|
||||
DZ "No free space" ; 10 - ¥â ᢮¡®¤®£® ¬¥áâ ¤¨áª¥
|
||||
DZ "Directory not empty" ; 11 - ª â «®£ ¥ ¯ãáâ
|
||||
DZ "Can't delete current directory" ; 12 - ¥ã¤ ç ï ¯®¯ë⪠㤠«¨âì ⥪ã騩 ª â «®£
|
||||
DZ "Invalid media" ; 13 - ¥¨§¢¥áâë© ä®à¬ â
|
||||
DZ "Unknown operation" ;R02 ; 14 - ¥¢®§¬®¦ ï ®¯¥à æ¨ï
|
||||
DZ "Directory exist" ; 15 - ª â «®£ 㦥 ¥áâì
|
||||
DZ "Invalid filename" ; 16 - ¥¢¥à®¥ ¨¬ï
|
||||
DZ "Invalid EXE-file" ; 17 - ¥¯à ¢¨«ìë© EXE-ä ©«
|
||||
DZ "Not supported EXE-file" ; 18 - ¥ ¯®¤¤¥à¦¨¢ ¥¬ ï ¢¥àá¨ï EXE-ä ©«
|
||||
DZ "Access denied" ; 19 - à¥áãàá ¥ ¤®áâ㯥
|
||||
DZ "Not ready" ; 20 - ¥â £®â®¢®áâ¨
|
||||
DZ "Seek error" ; 21 - ®è¨¡ª ¯®§¨æ¨®¨à®¢ ¨ï
|
||||
DZ "Sector not found" ; 22 - ᥪâ®à ¥ ©¤¥
|
||||
DZ "CRC error" ; 23 - ®è¨¡ª CRC
|
||||
DZ "Write protect" ; 24 - § é¨â § ¯¨á¨
|
||||
DZ "Read error" ; 25 - ®è¨¡ª ç⥨ï
|
||||
DZ "Write error" ; 26 - ®è¨¡ª § ¯¨á¨
|
||||
DZ "Drive failure" ; 27 - á¡®© ¤¨áª
|
||||
DZ "Extended error 28"
|
||||
DZ "Extended error 29"
|
||||
DZ "Not enough memory" ; 30 - ¥¤®áâ â®ç® ¯ ¬ïâ¨
|
||||
DZ "Invalid memory block" ; 31 - ¥áãé¥áâ¢ãî騩 ¡«®ª ¯ ¬ïâ¨
|
||||
DZ "Extended error 32"
|
||||
DZ "Maximum PATH size exceeded" ; 33 - ¯à¥¢ëè¥ ¬ ªá¨¬ «ìë© à §¬¥à ¯¥à¥¬¥®©
|
||||
DZ "Extended error 34"
|
||||
DZ "Too many files in directory" ; 35 - ᫨誮¬ ¬®£® ä ©«®¢ ¢ ¤¨à¥ªâ®à¨¨
|
||||
DZ "Directory nesting too large or number of folders > 1023" ; 36 - ᫨誮¬ ¡®«ìè ï ¢«®¦¥®áâì ª â «®£®¢ ¨«¨ ª®«¨ç¥á⢮ ¯ ¯®ª > 1023
|
||||
DZ "Operation aborted by user" ; 37 - ®¯¥à æ¨ï ¯à¥à¢ ¯®«ì§®¢ ⥫¥¬
|
||||
DZ "Common error" ; 38 - ®¡é ï ®è¨¡ª
|
||||
DZ "Unexpected application termination" ; 39 - unexpected application termination / ¥®¦¨¤ ®¥ § ¢¥à襨¥ ¯à¨«®¦¥¨ï
|
||||
DZ "40"
|
||||
DZ "41"
|
||||
DZ "42"
|
||||
DZ "43"
|
||||
DZ "44"
|
||||
DZ "45"
|
||||
DZ "46"
|
||||
DZ "Wrong video mode" ; 48 - ¥¯à ¢¨«ìë© ¢¨¤¥®à¥¦¨¬
|
||||
DZ "48"
|
||||
DZ "49"
|
||||
DZ "50"
|
||||
;R11
|
||||
DB 0 ; ®£à ¨ç¨â¥«ì, ç⮡ ¯à¨ ®è¨¡ª¥ ¡®«ìè¥, 祬 ¥áâì á®®¡é¥¨© ¢ë¤ ¢ «®áì ®¡é¥¥:
|
||||
DZ "Unknown error"
|
||||
;
|
||||
.Size EQU $-ERR0
|
||||
;-----------------------------------------------------------------------
|
||||
/*
|
||||
; ‘®®¡é¥¨ï ®è¨¡®ª „Ž‘
|
||||
ERR0: db 0
|
||||
db "Bad command or file name",0 ;0
|
||||
db "Invalid function",0 ;1
|
||||
db "Invalid drive number",0 ;2
|
||||
db "File not found",0 ;3
|
||||
db "Path not found",0 ;4
|
||||
db "Invalid handle",0 ;5
|
||||
db "Too many open files",0 ;6
|
||||
db "File already exist",0 ;7
|
||||
db "File read only",0 ;8
|
||||
db "Root overflow",0 ;9
|
||||
db "No free space",0 ;10
|
||||
db "Directory not empty",0 ;11
|
||||
db "Can't delete current directory",0 ;12
|
||||
db "Invalid media",0 ;13
|
||||
db "Unknown operation",0 ;14
|
||||
db "Directory exist",0 ;15
|
||||
db "Invalid filename",0 ;16
|
||||
db "Invalid EXE-file",0 ;17
|
||||
db "Not supported EXE-file",0 ;18
|
||||
db "Access denied",0 ;19
|
||||
db "Not ready",0 ;20
|
||||
db "Seek error",0 ;21
|
||||
db "Sector not found",0 ;22
|
||||
db "CRC error",0 ;23
|
||||
db "Write protect",0 ;24
|
||||
db "Read error",0 ;25
|
||||
db "Write error",0 ;26
|
||||
db "Drive failure",0 ;27
|
||||
db "Extended error 28",0 ;28
|
||||
db "Extended error 29",0 ;29
|
||||
db "Not enough memory",0 ;30
|
||||
db "Invalid memory block",0 ;31
|
||||
db "Extended error 32",0 ;32
|
||||
db "Extended error 33",0 ;33
|
||||
db "Extended error 34",0 ;34
|
||||
db "Too many files in directory",0 ;35 ᯨ᮪ ä ©«®¢
|
||||
db "36",0 ;36 (᫨誮¬ ¡®«ìè ï ¢«®¦. ¯ ¯®ª ¨«¨ >= 1024 ¯ ¯®ª)
|
||||
db "User abort",0 ;37 User abort (®¯¥à æ¨ï ¯à¥à¢ ¯®«ì§®¢ ⥫¥¬)
|
||||
db "38",0 ;38
|
||||
db "39",0 ;39
|
||||
db "40",0 ;40
|
||||
db "41",0 ;41
|
||||
db "42",0 ;42
|
||||
db "43",0 ;43
|
||||
db "44",0 ;44
|
||||
db "45",0 ;45
|
||||
db "46",0 ;46
|
||||
db "47",0 ;47
|
||||
db "48",0 ;48
|
||||
db "49",0 ;49
|
||||
db "50",0 ;50
|
||||
.Size EQU $-ERR0
|
||||
*/
|
||||
@ -9,11 +9,9 @@ D8374: dw 0
|
||||
COMP: call EVALCMD ; (batch.asm)
|
||||
ld hl,struct_input_line+5
|
||||
dec hl
|
||||
;ld hl,struct_input_line+4;;
|
||||
ld c,(hl) ; ¤«¨ áâப¨
|
||||
ld b,0
|
||||
inc hl ; struct_input_line+5
|
||||
;ld hl,work_buffer+256;;
|
||||
.loop: ld a,(hl)
|
||||
cp " "
|
||||
jr nz,COMP01
|
||||
@ -36,50 +34,11 @@ COMP01: ld d,h
|
||||
COMP005: ex af,af'
|
||||
sub c
|
||||
ld c,a
|
||||
ld hl,CMDLIST ; ᯨ᮪ ª®¬ ¤ „Ž‘-
|
||||
; de=struct_input_line+5, c=¤«¨ áâப¨
|
||||
; ®â bat-®âà ¡®âª¨
|
||||
COMP004: push bc
|
||||
push de
|
||||
COMP000: ld a,(de)
|
||||
cp "a"
|
||||
jr c,COMP001
|
||||
cp "z"+1
|
||||
jr nc,COMP001
|
||||
and #5F ; a..z -> A..Z
|
||||
COMP001: cp (hl)
|
||||
jr nz,COMP002 ; ¥ ¤®á-ª®¬ ¤ë
|
||||
inc hl
|
||||
inc de
|
||||
dec c
|
||||
jr nz,COMP000
|
||||
xor a
|
||||
cp (hl)
|
||||
jr nz,COMP002
|
||||
pop bc
|
||||
pop bc
|
||||
ld a,(de)
|
||||
cp " "
|
||||
jr nz,NOSPC
|
||||
inc de
|
||||
NOSPC: inc hl
|
||||
ld a,(hl)
|
||||
inc hl
|
||||
ld h,(hl)
|
||||
ld l,a
|
||||
jp (hl) ; á®®â¢. ®¡à ¡®â稪 ¤®á-ª®¬ ¤ë
|
||||
|
||||
; <20>¥ ¤®á-ª®¬ ¤ë. ’¥áâ § ¤ ¨¥ ¤¨áª ¨ § ¯ãáª ä ©«
|
||||
COMP002: xor a
|
||||
LD C,A
|
||||
CPIR
|
||||
inc hl
|
||||
inc hl
|
||||
pop de
|
||||
pop bc
|
||||
ld a,(hl)
|
||||
or a
|
||||
jr nz,COMP004 ; § ¤ ¢ 横«, ¥é¥ ¥ ¤®è«¨ ª®æ ᯨ᪠¤®á-ª®¬ ¤
|
||||
ld hl,CMDLIST ; ᯨ᮪ ª®¬ ¤ „Ž‘-
|
||||
.start: call RUN_COMMAND
|
||||
jr nc,.skip ; NC ¥á«¨ ¥ ©¤¥ ª®¬ ¤
|
||||
jp (hl)
|
||||
.skip: ; <20>¥ ¤®á-ª®¬ ¤ë. ’¥áâ § ¤` ¨¥ ¤¨áª ¨ § ¯ãáª ä ©«
|
||||
ld h,d
|
||||
ld l,e
|
||||
; hl=struct_input_line+5
|
||||
@ -99,7 +58,7 @@ COMP002: xor a
|
||||
cp "z"+1
|
||||
jr nc,NOUP
|
||||
and #5F ; a..z -> A..Z
|
||||
;!!!!! âãâ ¢®ááâ ¢«¨¢ ¥âáï ¤¨à¥ªâ®à¨ï ¨ ¬®£ãâ ¡ëâì £«îª¨ ®¢®¬ ï¤à¥
|
||||
;!FIXIT âãâ ¢®ááâ ¢«¨¢ ¥âáï ¤¨à¥ªâ®à¨ï ¨ ¬®£ãâ ¡ëâì £«îª¨ ®¢®¬ ï¤à¥
|
||||
NOUP: sub "A" ; ®¬¥à ¤¨áª
|
||||
ld c,Dss.ChDisk ; ᬥ¨âì ⥪. ¤¨áª
|
||||
RST ToDSS
|
||||
@ -242,3 +201,4 @@ RESTORE_ALL:
|
||||
;R10
|
||||
;
|
||||
RET
|
||||
;
|
||||
60
SHELL/Messages/errors.asm
Normal file
60
SHELL/Messages/errors.asm
Normal file
@ -0,0 +1,60 @@
|
||||
;-----------------------------------------------------------------------
|
||||
;!FIXIT äãªæ¨ï ¢ë§ë¢ îé ï ¢ë¢®¤ ®è¨¡ª¨ ¤¥« ¥â ¢ ç «¥ 䨫ìâà ¯® ®¬¥à ¬ ¨ ¥áª®«ìª® ¯¥à¢ëå ®â訢 îâáï
|
||||
ERR0: DB #00
|
||||
DZ "Bad command or file name"
|
||||
DZ "Invalid function" ; 01 - ¥¢¥àë© ®¬¥à äãªæ¨¨
|
||||
DZ "Invalid drive number" ; 02 - ¥¯à ¢¨«ìë© ®¬¥à ãáâனáâ¢
|
||||
DZ "File not found" ; 03 - ä ©« ¥ ®¡ à㦥
|
||||
DZ "Path not found" ; 04 - ¥¢¥àë© ¯ãâì
|
||||
DZ "Invalid handle" ; 05 - ¥áãé¥áâ¢ãî騩 ä ©«®¢ë© ¬ ¨¯ã«ïâ®à
|
||||
DZ "Too many open files" ; 06 - ¥â ᢮¡®¤®£® ä ©«®¢®£® ¬ ¨¯ã«ïâ®à
|
||||
DZ "File already exist" ; 07 - ä ©« áãé¥áâ¢ã¥â
|
||||
DZ "File read only" ; 08 - ä ©« ⮫쪮 ¤«ï ç⥨ï
|
||||
DZ "Root overflow" ; 09 - ¯¥à¥¯®«¥¨¥ ROOT (ª®à¥¢®£® ª â «®£ )
|
||||
DZ "No free space" ; 10 - ¥â ᢮¡®¤®£® ¬¥áâ ¤¨áª¥
|
||||
DZ "Directory not empty" ; 11 - ª â «®£ ¥ ¯ãáâ
|
||||
DZ "Can't delete current directory" ; 12 - ¥ã¤ ç ï ¯®¯ë⪠㤠«¨âì ⥪ã騩 ª â «®£
|
||||
DZ "Invalid media" ; 13 - ¥¨§¢¥áâë© ä®à¬ â
|
||||
DZ "Unknown operation" ;R02 ; 14 - ¥¢®§¬®¦ ï ®¯¥à æ¨ï
|
||||
DZ "Directory exist" ; 15 - ª â «®£ 㦥 ¥áâì
|
||||
DZ "Invalid filename" ; 16 - ¥¢¥à®¥ ¨¬ï
|
||||
DZ "Invalid EXE-file" ; 17 - ¥¯à ¢¨«ìë© EXE-ä ©«
|
||||
DZ "Not supported EXE-file" ; 18 - ¥ ¯®¤¤¥à¦¨¢ ¥¬ ï ¢¥àá¨ï EXE-ä ©«
|
||||
DZ "Access denied" ; 19 - à¥áãàá ¥ ¤®áâ㯥
|
||||
DZ "Not ready" ; 20 - ¥â £®â®¢®áâ¨
|
||||
DZ "Seek error" ; 21 - ®è¨¡ª ¯®§¨æ¨®¨à®¢ ¨ï
|
||||
DZ "Sector not found" ; 22 - ᥪâ®à ¥ ©¤¥
|
||||
DZ "CRC error" ; 23 - ®è¨¡ª CRC
|
||||
DZ "Write protect" ; 24 - § é¨â § ¯¨á¨
|
||||
DZ "Read error" ; 25 - ®è¨¡ª ç⥨ï
|
||||
DZ "Write error" ; 26 - ®è¨¡ª § ¯¨á¨
|
||||
DZ "Drive failure" ; 27 - á¡®© ¤¨áª
|
||||
DZ "Extended error 28"
|
||||
DZ "Extended error 29"
|
||||
DZ "Not enough memory" ; 30 - ¥¤®áâ â®ç® ¯ ¬ïâ¨
|
||||
DZ "Invalid memory block" ; 31 - ¥áãé¥áâ¢ãî騩 ¡«®ª ¯ ¬ïâ¨
|
||||
DZ "Extended error 32"
|
||||
DZ "Maximum PATH size exceeded" ; 33 - ¯à¥¢ëè¥ ¬ ªá¨¬ «ìë© à §¬¥à ¯¥à¥¬¥®©
|
||||
DZ "Extended error 34"
|
||||
DZ "Too many files in directory" ; 35 - ᫨誮¬ ¬®£® ä ©«®¢ ¢ ¤¨à¥ªâ®à¨¨
|
||||
DZ "Directory nesting too large or number of folders > 1023" ; 36 - ᫨誮¬ ¡®«ìè ï ¢«®¦¥®áâì ª â «®£®¢ ¨«¨ ª®«¨ç¥á⢮ ¯ ¯®ª > 1023
|
||||
DZ "Operation aborted by user" ; 37 - ®¯¥à æ¨ï ¯à¥à¢ ¯®«ì§®¢ ⥫¥¬
|
||||
DZ "Common error" ; 38 - ®¡é ï ®è¨¡ª
|
||||
DZ "Unexpected application termination" ; 39 - unexpected application termination / ¥®¦¨¤ ®¥ § ¢¥à襨¥ ¯à¨«®¦¥¨ï
|
||||
DZ "40"
|
||||
DZ "41"
|
||||
DZ "42"
|
||||
DZ "43"
|
||||
DZ "44"
|
||||
DZ "45"
|
||||
DZ "46"
|
||||
DZ "Wrong video mode" ; 48 - ¥¯à ¢¨«ìë© ¢¨¤¥®à¥¦¨¬
|
||||
DZ "48"
|
||||
DZ "49"
|
||||
DZ "50"
|
||||
;R11
|
||||
DB 0 ; ®£à ¨ç¨â¥«ì, ç⮡ ¯à¨ ®è¨¡ª¥ ¡®«ìè¥, 祬 ¥áâì á®®¡é¥¨© ¢ë¤ ¢ «®áì ®¡é¥¥:
|
||||
DZ "Unknown error"
|
||||
;
|
||||
.Size EQU $-ERR0
|
||||
;-----------------------------------------------------------------------
|
||||
44
SHELL/Messages/main.asm
Normal file
44
SHELL/Messages/main.asm
Normal file
@ -0,0 +1,44 @@
|
||||
;!TODO ¥ § ¡ëâì § ¬¥¨âì æ¨äàë í⨠¬¥âª¨
|
||||
MAIN_MSG:
|
||||
.DIR_1 EQU 0
|
||||
.VERSION EQU 1
|
||||
.DATE EQU 2
|
||||
.TIME EQU 3
|
||||
.PAUSE EQU 4
|
||||
.INVALID EQU 5
|
||||
.ECHO EQU 6
|
||||
.ON EQU 7
|
||||
.OFF EQU 8
|
||||
.DIR_2 EQU 9
|
||||
.DIR_3 EQU 10
|
||||
.HELP EQU 11
|
||||
.CALCULATING EQU 12
|
||||
|
||||
.TABLE: db 0
|
||||
/* 0 */ db "Volume in drive %1 %4 %5",CR,LF
|
||||
db "Volume Serial Number is %2",CR,LF
|
||||
db CR,LF,"Directory of %3",CR,LF,LF,0
|
||||
/* 1 */ db "Estex DSS version %1. Shell version %2.",CR,LF,0 ;R13
|
||||
/* 2 */ db "Current date: %1",CR,LF,0
|
||||
/* 3 */ db "Current time: %1",CR,LF,0
|
||||
/* 4 */ db "Press any key to continue . . .",CR,LF,LF,0
|
||||
/* 5 */ db "Invalid parametr",CR,LF,0
|
||||
/* 6 */ db "Echo is %1",CR,LF,0
|
||||
/* 7 */ db "on",0
|
||||
/* 8 */ db "off",0
|
||||
/* 9 */ db " %1 File(s) %2 bytes",CR,LF
|
||||
db " %3 Dir(s)",CR,LF,LF,0
|
||||
; db " %3 Dir(s) %4 bytes free",CR,LF,LF,0
|
||||
/* 10 */ db "%1 %2 %3 %4 - %5",CR,LF,0 ;FILENAME EXT SIZE DATE TIME
|
||||
/* 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,LF,0
|
||||
/* 12 */ DB "Calculating free space...",CR,0
|
||||
;R11
|
||||
DB 0
|
||||
DZ "Unknown command"
|
||||
;
|
||||
.TABLE.Size EQU $-.TABLE
|
||||
;
|
||||
118
SHELL/Procedures/Print.ASM
Normal file
118
SHELL/Procedures/Print.ASM
Normal file
@ -0,0 +1,118 @@
|
||||
;-------------------------------------------------
|
||||
; ‚뢮¤ á®®¡é¥¨ï ®è¨¡ª¨ ¯® ¨¤¥ªáã
|
||||
; ¢å®¤: a=®¬¥à ®è¨¡ª¨
|
||||
;-------------------------------------------------
|
||||
print_err_message:
|
||||
ld e,a
|
||||
ld d,0
|
||||
inc de
|
||||
ld hl,ERR0 ; ¬ áᨢ áâப
|
||||
ld bc,ERR0.Size ; à §¬¥à ¬ áᨢ
|
||||
call LCPIR ; ©â¨ áâபã
|
||||
call PRINTZ ; ä®à¬ â. ¢ë¢®¤ áâப¨
|
||||
call newline
|
||||
jp newline
|
||||
|
||||
|
||||
|
||||
; ‚뢮¤ áâப¨ ®è¨¡ª¨
|
||||
;A850D:
|
||||
invalid_param:
|
||||
ld de,MAIN_MSG.INVALID ; ¨¤¥ªá "Invalid parametr"
|
||||
jr MESSAGE
|
||||
|
||||
|
||||
|
||||
;-------------------------------------------------
|
||||
; ‚뢮¤ á®®¡é¥¨ï ®è¨¡ª¨ ¯® ¨¤¥ªáã
|
||||
; ¢å®¤: de=¨¤¥ªá áâப¨
|
||||
;-------------------------------------------------
|
||||
MESSAGE:
|
||||
call FMESAGE ; ©â¨ áâப㠯® ¨¤¥ªáã
|
||||
jp PRINTZ ; ä®à¬ â. ¢ë¢®¤ áâப¨
|
||||
;jp A82CC ; ã§ âì ¨ ãáâ. ¯®«®¦. ªãàá®à
|
||||
|
||||
|
||||
; <20> ©â¨ áâப㠯® ¨¤¥ªáã
|
||||
; ¢å®¤: de=¨¤¥ªá áâப¨
|
||||
; ¢ë室: hl=áâப
|
||||
FMESAGE: inc de
|
||||
ld hl,MAIN_MSG.TABLE ; ç «® ¬ áᨢ áâப
|
||||
ld bc,MAIN_MSG.TABLE.Size ; à §¬¥à ¬ áᨢ
|
||||
LCPIR: xor a
|
||||
cpir
|
||||
ret po
|
||||
ret nz
|
||||
;R11
|
||||
XOR A
|
||||
CP (HL)
|
||||
JR Z,.no_mess
|
||||
;
|
||||
dec de
|
||||
ld a,d
|
||||
or e
|
||||
jr nz,LCPIR
|
||||
ret
|
||||
.no_mess: INC HL
|
||||
RET
|
||||
|
||||
;[x] ¨á¯à ¢«¥ ¡ £ á ¢ë室®¬ § ¯à¥¤¥«ë ¡ãä¥à PRM. —ãâì ®¯â¨¬¨§¨à®¢
|
||||
;----------------------------------------------------------------------;
|
||||
; ”®à¬ â¨à®¢ ë© ¢ë¢®¤ áâப¨ á ¯®¤áâ ®¢ª®© à£ã¬¥â®¢ ¢¬¥áâ® %1-%9
|
||||
; ¢å®¤: hl=¡ãä¥à áâப¨
|
||||
;----------------------------------------------------------------------;
|
||||
PRINTZ: ld a,(hl)
|
||||
inc hl
|
||||
or a
|
||||
ret z
|
||||
cp '%'
|
||||
jr z,.check_PRM
|
||||
.char: ld c,Dss.PutChar
|
||||
RST ToDSS
|
||||
jp PRINTZ
|
||||
.bad_PRM:
|
||||
ld a,'%'
|
||||
jp .char
|
||||
.check_PRM:
|
||||
ld a,(hl)
|
||||
cp '9'+1
|
||||
jr nc,.bad_PRM
|
||||
inc hl
|
||||
sub '1'
|
||||
push hl
|
||||
;!TEST
|
||||
;ld l,a
|
||||
;ld h,0
|
||||
;add hl,hl ;1+1=2
|
||||
;add hl,hl ;2+2=4
|
||||
;add hl,hl ;4+4=8
|
||||
;add hl,hl ;8+8=16 à §¬¥à ®â¤¥«ì®£® ¯®¤¡ãä¥à
|
||||
ADD A
|
||||
ADD A
|
||||
ADD A
|
||||
ADD A
|
||||
LD L,A
|
||||
LD H,0
|
||||
;
|
||||
ld bc,PRM1 ; ¡ãä¥à
|
||||
add hl,bc
|
||||
ld c,Dss.PChars ; ¢ë¢®¤ áâப¨
|
||||
RST ToDSS
|
||||
pop 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
|
||||
;
|
||||
76
SHELL/Procedures/math.asm
Normal file
76
SHELL/Procedures/math.asm
Normal file
@ -0,0 +1,76 @@
|
||||
;----------------------------------------------------------------------;
|
||||
; ‚뢮¤ HL ¢ hex-ä®à¬ â¥
|
||||
; de=¡ãä¥à
|
||||
; hl=ç¨á«®
|
||||
hex16: ld a,h
|
||||
call hex8
|
||||
ld a,l
|
||||
; ¢ë¢®¤ "a"
|
||||
hex8: push af
|
||||
rrca
|
||||
rrca
|
||||
rrca
|
||||
rrca
|
||||
call .num
|
||||
pop af
|
||||
;
|
||||
.num: and %0000'1111
|
||||
add a,#90
|
||||
daa
|
||||
adc a,#40
|
||||
daa
|
||||
ld (de),a
|
||||
inc de
|
||||
ret
|
||||
;----------------------------------------------------------------------;
|
||||
|
||||
|
||||
;----------------------------------------------------------------------;
|
||||
;!FIXIT ¥áâì ¤ã¡«ì hex2dec_ascii_16bit
|
||||
; ¢å®¤: hl=ç¨á«®, de=¡ãä¥à
|
||||
hex2dec_ascii_16bit:
|
||||
.n10: ld ix,.tmp1
|
||||
res 7,(ix+0)
|
||||
jr .decim
|
||||
;
|
||||
.n10000: ld ix,.tmp1
|
||||
res 7,(ix+0)
|
||||
ld bc,100
|
||||
call .num16
|
||||
jr .skip1
|
||||
;
|
||||
.n1000: ld ix,.tmp1
|
||||
res 7,(ix+0)
|
||||
.skip1: ld bc,100
|
||||
call .num16
|
||||
jr .skip2
|
||||
;
|
||||
.n100: ld ix,.tmp1
|
||||
res 7,(ix+0)
|
||||
.skip2: ld bc,100
|
||||
call .num16
|
||||
;
|
||||
.decim: ld bc,10
|
||||
call .num16
|
||||
ld a,l
|
||||
add a,"0"
|
||||
jr .num16_exit
|
||||
;
|
||||
.num16: ld a,'0'-1
|
||||
and a
|
||||
inc a
|
||||
sbc hl,bc
|
||||
jr nc,$-3
|
||||
add hl,bc
|
||||
cp "0"
|
||||
jr z,$+6
|
||||
set 7,(ix+0)
|
||||
bit 7,(ix+0)
|
||||
ret z
|
||||
.num16_exit:
|
||||
ld (de),a ; á®åà. ¢ ¡ãä¥à¥
|
||||
inc de
|
||||
ret
|
||||
;
|
||||
.tmp1: BYTE 0
|
||||
;----------------------------------------------------------------------;
|
||||
113
SHELL/Procedures/parsers.asm
Normal file
113
SHELL/Procedures/parsers.asm
Normal file
@ -0,0 +1,113 @@
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
; ‚室: hl - ᯨ᮪ ª®¬ ¤ ä®à¬ â : "áâப ",0,cmd_addr
|
||||
; de - áâப á ª®¬ ¤®©
|
||||
; c - ¤«¨ áâப¨
|
||||
; ‚ë室: CF=1 - ¢ HL ¤à¥á ª®¬ ¤ë ¨á¯®«¥¨¥
|
||||
; CF=0 - ¥â ®¯®§ ®© ª®¬ ¤ë
|
||||
RUN_COMMAND:
|
||||
push bc
|
||||
push de
|
||||
;
|
||||
.loop: ld a,(de)
|
||||
cp "a"
|
||||
jr c,.skip
|
||||
cp "z"+1
|
||||
jr nc,.skip
|
||||
and %0101'1111 ; a..z -> A..Z
|
||||
.skip: cp (hl)
|
||||
jr nz,.not_cmd ; ¥ ª®¬ ¤
|
||||
inc hl
|
||||
inc de
|
||||
dec c
|
||||
jr nz,.loop
|
||||
;
|
||||
xor a
|
||||
cp (hl)
|
||||
jr nz,.not_cmd
|
||||
pop bc
|
||||
pop bc
|
||||
ld a,(de)
|
||||
cp " "
|
||||
jr nz,.no_sp
|
||||
inc de
|
||||
.no_sp: inc hl
|
||||
ld a,(hl)
|
||||
inc hl
|
||||
ld h,(hl)
|
||||
ld l,a
|
||||
scf ; ¬ àª¥à ®¯®§ ®© ª®¬ ¤ë
|
||||
ret
|
||||
;jp (hl) ; á®®â¢. ®¡à ¡®â稪 ª®¬ ¤ë
|
||||
.not_cmd:
|
||||
xor a
|
||||
LD C,A
|
||||
CPIR
|
||||
inc hl
|
||||
inc hl
|
||||
pop de
|
||||
pop bc
|
||||
ld a,(hl)
|
||||
or a
|
||||
jr nz,RUN_COMMAND ; § ¤ ¢ 横«, ¥é¥ ¥ ¤®è«¨ ª®æ ᯨ᪠¤ª®¬ ¤
|
||||
ret
|
||||
;
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
; ‚室: hl - ᯨ᮪ ª«î祩 ä®à¬ â : "áâப ",cmd_addr
|
||||
; de - áâப á ª®¬ ¤®©
|
||||
; c - ¤«¨ áâப¨ á ª®¬ ¤®©
|
||||
; ‚ë室: CF=1 - ¢ HL ¤à¥á ª«îç ¨á¯®«¥¨¥
|
||||
; CF=0 - ¥â ®¯®§ ®£® ª«îç
|
||||
RUN_OPTION:
|
||||
.cont: EX DE,HL
|
||||
LD B,C
|
||||
.loop: LD A,(HL)
|
||||
CP '/' ;
|
||||
INC HL
|
||||
JR Z,.got
|
||||
AND A
|
||||
RET Z
|
||||
DJNZ .loop
|
||||
; not found key
|
||||
AND A
|
||||
RET
|
||||
;
|
||||
.got: LD C,B
|
||||
INC HL
|
||||
LD A,(HL)
|
||||
DEC C
|
||||
CP ' '
|
||||
JR Z,.good
|
||||
AND A
|
||||
JR NZ,RUN_OPTION.loop
|
||||
LD C,1
|
||||
;
|
||||
.good: push hl
|
||||
dec hl
|
||||
ld b,cmd_dir_options.Size ;!HARDCODE
|
||||
ex de,hl
|
||||
ld a,(de)
|
||||
OR %0010'0000
|
||||
ld de,cmd_dir_options.paramLength ;!HARDCODE
|
||||
;
|
||||
.find: cp (hl)
|
||||
jr z,.found
|
||||
add hl,de
|
||||
djnz .find
|
||||
; not found
|
||||
pop hl
|
||||
jr RUN_OPTION
|
||||
; found
|
||||
.found: pop de
|
||||
LD B,C
|
||||
inc hl
|
||||
ld a,(hl)
|
||||
inc hl
|
||||
ld h,(hl)
|
||||
ld l,a
|
||||
scf ; ¬ àª¥à ®¯®§ ®© ®¯æ¨¨
|
||||
ret
|
||||
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
@ -443,9 +443,9 @@ A895A: cp "0"
|
||||
sub "0"
|
||||
ret
|
||||
|
||||
|
||||
;!FIXIT ¥áâì ¤ã¡«
|
||||
A8964: ld de,10000
|
||||
ld a,0C8h ; ret z
|
||||
ld a,#C8 ; ret z
|
||||
ld (D8996),a
|
||||
call A898E
|
||||
ld de,1000
|
||||
@ -521,28 +521,33 @@ T8C21: db "ON",0
|
||||
T8C24: db "OFF",0
|
||||
|
||||
|
||||
include "edline.asm" ; áâப । ªâ¨à®¢ ¨ï
|
||||
include "batch.asm" ; ¯ àᨣ bat-ä ©«®¢
|
||||
include "shell_exec.asm" ; ¢ë¯®«. ¢¢¥¤. ª®¬ ¤ á ª®á®«¨
|
||||
include "error.asm" ; äãªæ¨¨ ¢ë¢®¤ á®®¡é¥¨© ®è¨¡®ª
|
||||
include 'edline.asm' ; áâப । ªâ¨à®¢ ¨ï
|
||||
include 'batch.asm' ; ¯ àᨣ bat-ä ©«®¢
|
||||
include 'exec.asm' ; ¢ë¯®«. ¢¢¥¤. ª®¬ ¤ á ª®á®«¨
|
||||
include 'procedures/print.asm' ; äãªæ¨¨ ¢ë¢®¤ á®®¡é¥¨©
|
||||
include 'messages/errors.asm' ; á®®¡é¥¨ï ®¡ ®è¨¡ª å
|
||||
include 'messages/main.asm' ; á®®¡é¥¨ï
|
||||
include 'procedures/parsers.asm' ; äãªæ¨¨ ¯à®ç¥áë¢ ¨ï ¨ ¢ë¡®à
|
||||
include 'procedures/math.asm' ; äãªæ¨¨ ¬ ⥬ â¨ç¥áª¨¥
|
||||
|
||||
;
|
||||
include "Commands/exit.asm" ; ¢ë室 ¢ த¨â. ¯à®æ¥áá
|
||||
include "Commands/pause.asm" ; ¯ ã§
|
||||
include "Commands/rem.asm" ; ª®¬¬¥â ਩
|
||||
include "Commands/ver.asm" ; ¢ë¢®¤ ¢¥àᨨ „Ž‘
|
||||
include "Commands/cls.asm" ; ®ç¨á⪠íªà
|
||||
include "Commands/date.asm" ; ¢ë¢®¤ ¨«¨ ãáâ ®¢ª ¤ âë/¢à¥¬¥¨
|
||||
include "Commands/dir.asm" ; ¢ë¢®¤ ᯨ᪠¤¨à¥ªâ®à¨¨
|
||||
include "Commands/chdir.asm" ; ᬥ ⥪. ª â «®£
|
||||
include "Commands/mkdir.asm" ; á®§¤ ¨¥ ª â «®£
|
||||
include "Commands/rmdir.asm" ; 㤠«¥¨¥ ª â «®£
|
||||
include "Commands/del.asm" ; 㤠«¥¨¥ ä ©«
|
||||
include "Commands/ren.asm" ; ¯¥à¥¨¬¥®¢ ¨¥ ä ©« ¨«¨ ª â «®£
|
||||
include "Commands/echo.asm" ; íå®-०¨¬
|
||||
include "Commands/help.asm" ; ¢ë¢®¤ íªà ¯®¬®é¨
|
||||
include "Commands/path.asm" ; § ¤ âì á¨áâ. ¯ãâì
|
||||
include "Commands/set.asm" ; § ¤ âì ¯¥à¥¬¥ãî ®ªà㦥¨ï
|
||||
include "Commands/reboot.asm" ; á®äâ à¥á¥â
|
||||
include 'Commands/exit.asm' ; ¢ë室 ¢ த¨â. ¯à®æ¥áá
|
||||
include 'Commands/pause.asm' ; ¯ ã§
|
||||
include 'Commands/rem.asm' ; ª®¬¬¥â ਩
|
||||
include 'Commands/ver.asm' ; ¢ë¢®¤ ¢¥àᨨ „Ž‘
|
||||
include 'Commands/cls.asm' ; ®ç¨á⪠íªà
|
||||
include 'Commands/date.asm' ; ¢ë¢®¤ ¨«¨ ãáâ ®¢ª ¤ âë/¢à¥¬¥¨
|
||||
include 'Commands/dir.asm' ; ¢ë¢®¤ ᯨ᪠¤¨à¥ªâ®à¨¨
|
||||
include 'Commands/chdir.asm' ; ᬥ ⥪. ª â «®£
|
||||
include 'Commands/mkdir.asm' ; á®§¤ ¨¥ ª â «®£
|
||||
include 'Commands/rmdir.asm' ; 㤠«¥¨¥ ª â «®£
|
||||
include 'Commands/del.asm' ; 㤠«¥¨¥ ä ©«
|
||||
include 'Commands/ren.asm' ; ¯¥à¥¨¬¥®¢ ¨¥ ä ©« ¨«¨ ª â «®£
|
||||
include 'Commands/echo.asm' ; íå®-०¨¬
|
||||
include 'Commands/help.asm' ; ¢ë¢®¤ íªà ¯®¬®é¨
|
||||
include 'Commands/path.asm' ; § ¤ âì á¨áâ. ¯ãâì
|
||||
include 'Commands/set.asm' ; § ¤ âì ¯¥à¥¬¥ãî ®ªà㦥¨ï
|
||||
include 'Commands/reboot.asm' ; á®äâ à¥á¥â
|
||||
;
|
||||
DISPLAY "Empty space for buffers from ",/H,$
|
||||
work_buffer1 equ $ ; 2-© à ¡. ¡ãä¥à ; 128 bytes
|
||||
|
||||
@ -1 +1 @@
|
||||
127
|
||||
175
|
||||
Loading…
Reference in New Issue
Block a user