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
|
CPL
|
||||||
LD C,A
|
LD C,A
|
||||||
LD IX,DIRPAGE.buffer
|
LD IX,DIRPAGE.buffer
|
||||||
;TEST 9/11/23
|
;!TEST 9/11/23
|
||||||
; EXX
|
; EXX
|
||||||
; LD DE,0
|
; LD DE,0
|
||||||
; EXX
|
; EXX
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
620
|
621
|
||||||
@ -307,7 +307,7 @@ A8286: ex af,af'
|
|||||||
ld hl,BATLIST ; ª®¬ ¤ë "pause","rem" + dos-ª®¬ ¤ë
|
ld hl,BATLIST ; ª®¬ ¤ë "pause","rem" + dos-ª®¬ ¤ë
|
||||||
; de=struct_input_line+5, c=¤«¨ áâப¨ (¡¥§ ª®æ. ¯à®¡¥«®¢)
|
; de=struct_input_line+5, c=¤«¨ áâப¨ (¡¥§ ª®æ. ¯à®¡¥«®¢)
|
||||||
; ¢ë¯®«. ª®¬ ¤ã ¨«¨ § ¯ãáâ¨âì ä ©«
|
; ¢ë¯®«. ª®¬ ¤ã ¨«¨ § ¯ãáâ¨âì ä ©«
|
||||||
jp COMP004
|
jp COMP005.start
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -67,7 +67,7 @@ cmd_dt1:ld c,Dss.SysTime
|
|||||||
pop ix
|
pop ix
|
||||||
pop hl
|
pop hl
|
||||||
call A8964
|
call A8964
|
||||||
ld de,2 ; 身丰花 "Current date: %1"
|
ld de,MAIN_MSG.DATE ; 身丰花 "Current date: %1"
|
||||||
jp MESSAGE ; ¢ë¢¥á⨠áâபã
|
jp MESSAGE ; ¢ë¢¥á⨠áâபã
|
||||||
|
|
||||||
|
|
||||||
@ -148,5 +148,5 @@ cmd_tm1:ld c,Dss.SysTime
|
|||||||
call A8913 ; ¤¥áïâ. ¢ë¢®¤ ¢ ¡ãä¥à
|
call A8913 ; ¤¥áïâ. ¢ë¢®¤ ¢ ¡ãä¥à
|
||||||
xor a
|
xor a
|
||||||
ld (hl),a ; ¢ ª®¥æ áâப¨
|
ld (hl),a ; ¢ ª®¥æ áâப¨
|
||||||
ld de,3 ; 身丰花 "Current time: %1"
|
ld de,MAIN_MSG.TIME ; 身丰花 "Current time: %1"
|
||||||
jp MESSAGE ; ¢ë¢¥á⨠áâபã
|
jp MESSAGE ; ¢ë¢¥á⨠áâபã
|
||||||
|
|||||||
@ -5,17 +5,32 @@
|
|||||||
;///////////////////////////////////////////////////
|
;///////////////////////////////////////////////////
|
||||||
cmd_dir:
|
cmd_dir:
|
||||||
push de
|
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
|
RST ToDSS
|
||||||
ADD A,"A"
|
ADD A,"A"
|
||||||
ld (root_path),a ; ®¬¥à ¤¨áª
|
ld (root_path),a ; ®¬¥à ¤¨áª
|
||||||
SUB "A"
|
SUB "A"
|
||||||
call read_disk_info ; ¯à®ç¨â âì ¬¥âªã ¨ á¥à¨©ë© ®¬¥à ¤¨áª
|
call read_disk_info ; ¯à®ç¨â âì ¬¥âªã ¨ á¥à¨©ë© ®¬¥à ¤¨áª
|
||||||
|
;
|
||||||
pop de
|
pop de
|
||||||
ld hl,0
|
ld hl,0
|
||||||
ld (D88DC),hl
|
ld (D88DC),hl
|
||||||
ld (D88DE),hl
|
ld (D88DE),hl
|
||||||
ld (D88E0),hl
|
ld (D88E0),hl
|
||||||
|
ld (dir_number),hl
|
||||||
ex de,hl
|
ex de,hl
|
||||||
ld a,(hl)
|
ld a,(hl)
|
||||||
or a
|
or a
|
||||||
@ -26,41 +41,51 @@ cmd_dir:
|
|||||||
ld c,Dss.GSwitch ; ¢ë¤¥«¨âì ¯ à ¬¥âà ª®¬-áâப¨
|
ld c,Dss.GSwitch ; ¢ë¤¥«¨âì ¯ à ¬¥âà ª®¬-áâப¨
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
; [ ] 1/10/23
|
; [ ] 1/10/23
|
||||||
|
|
||||||
;
|
|
||||||
;ld hl,T9186 ; ¨¬ï ä ©«
|
|
||||||
;ld de,T9186 ; ¡ãä¥à
|
|
||||||
ld hl,work_buffer1 ; ¨¬ï ä ©«
|
ld hl,work_buffer1 ; ¨¬ï ä ©«
|
||||||
ld de,work_buffer1 ; 80 ¡ãä¥à
|
ld de,work_buffer1 ; 80 ¡ãä¥à
|
||||||
ld a,#37 ; âਡãâ (¢á¥, ªà®¬¥ ¬¥âª¨ ⮬ )
|
ld a,#37 ; âਡãâ (¢á¥, ªà®¬¥ ¬¥âª¨ ⮬ )
|
||||||
ld bc,0*256 + Dss.F_First ; f_first (ä®à¬ â 11)
|
ld bc,0*256 + Dss.F_First ; f_first (ä®à¬ â 11)
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
;R14
|
JR C,.dir_empty ;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
|
CALL .Print_Header
|
||||||
;
|
|
||||||
; 横« ¢ë¢®¤ á¯¨áª ä ©«®¢/¯ ¯®ª
|
; 横« ¢ë¢®¤ á¯¨áª ä ©«®¢/¯ ¯®ª
|
||||||
.loop: ;ld hl,T9186 ; à ¡. ¡ãä¥à
|
.loop: ld hl,work_buffer1 ; 80
|
||||||
ld hl,work_buffer1 ; 80
|
|
||||||
ld de,33
|
ld de,33
|
||||||
add hl,de
|
add hl,de
|
||||||
call A88E2
|
call A88E2
|
||||||
;ld ix,T9186
|
|
||||||
ld ix,work_buffer1 ; 80
|
ld ix,work_buffer1 ; 80
|
||||||
ld a,(ix+32) ; âਡãâ ⥪. § ¯¨á¨
|
ld a,(ix+32) ; âਡãâ ⥪. § ¯¨á¨
|
||||||
and FAT_ATTR.DIRECTORY ; ¯ ¯ª ?
|
and FAT_ATTR.DIRECTORY ; ¯ ¯ª ?
|
||||||
jr z,.calc_size ; ¥â
|
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)
|
ld hl,(dir_number)
|
||||||
inc hl
|
inc hl
|
||||||
ld (dir_number),hl
|
ld (dir_number),hl
|
||||||
jr .next
|
jr .next
|
||||||
|
|
||||||
|
;;R14
|
||||||
|
.dir_empty:
|
||||||
|
push af
|
||||||
|
CALL .Print_Header
|
||||||
|
pop af
|
||||||
|
CALL print_err_message
|
||||||
|
jr .print
|
||||||
|
;;R14
|
||||||
|
|
||||||
; ¯à¨¡ ¢¨âì à §¬¥à ⥪. ä ©«
|
; ¯à¨¡ ¢¨âì à §¬¥à ⥪. ä ©«
|
||||||
.calc_size:
|
.calc_size:
|
||||||
ld hl,(D88DC)
|
ld hl,(D88DC)
|
||||||
@ -131,17 +156,27 @@ cmd_dir:
|
|||||||
ldi
|
ldi
|
||||||
ldi
|
ldi
|
||||||
ldi
|
ldi
|
||||||
¥¤®¤¥« ®
|
; [ ] ¢ë¢®¤ ª®«¨ç¥á⢠¯ ¯®ª
|
||||||
|
; [ ] ¢ë¢®¤ ®¡é¥£® ª®«¨ç¥á⢠᢮¡®¤®£® ¬¥áâ
|
||||||
ld hl,T8B46 ; "0 000 000 000"
|
ld hl,T8B46 ; "0 000 000 000"
|
||||||
ld de,PRM2 ; ªã¤
|
ld de,PRM2 ; ªã¤
|
||||||
call ncopy_string ; ᪮¯¨à. áâபã (á ã«¥¬), ¬ ªá.15 ᨬ¢.
|
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 ; ¢ë¢¥á⨠áâபã
|
jp MESSAGE ; ¢ë¢¥á⨠áâபã
|
||||||
|
|
||||||
;R14
|
|
||||||
.Print_Header:
|
.Print_Header:
|
||||||
PUSH AF
|
|
||||||
;
|
|
||||||
; %1
|
; %1
|
||||||
ld a,(screen_path) ; ¤¨áª
|
ld a,(screen_path) ; ¤¨áª
|
||||||
ld hl,PRM1
|
ld hl,PRM1
|
||||||
@ -154,27 +189,16 @@ cmd_dir:
|
|||||||
ld hl,serial_string ; áâப á¥à¨©®£® ®¬¥à ¤¨áª
|
ld hl,serial_string ; áâப á¥à¨©®£® ®¬¥à ¤¨áª
|
||||||
ld de,PRM2 ; ªã¤
|
ld de,PRM2 ; ªã¤
|
||||||
call ncopy_string ; ᪮¯¨à. áâபã (á ã«¥¬)
|
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
|
; %3
|
||||||
.not_empty_2:
|
ld hl,screen_path
|
||||||
;
|
|
||||||
ld de,PRM3 ; 16 ¡ãä¥à
|
ld de,PRM3 ; 16 ¡ãä¥à
|
||||||
CALL copy_string ; ᪮¯¨à. áâபã (á ã«¥¬)
|
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 ; ¢ë¢¥á⨠áâபã
|
JP MESSAGE ; ¢ë¢¥á⨠áâபã
|
||||||
|
|
||||||
.str: DZ 'X:\ is empty' ;R14 ;!FIXIT
|
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
; <20>®¤£®â®¢¨âì áâபã á¯¨áª ä ©«®¢/¯ ¯®ª
|
; <20>®¤£®â®¢¨âì áâபã á¯¨áª ä ©«®¢/¯ ¯®ª
|
||||||
A88E2: ld bc,8
|
A88E2: ld bc,8
|
||||||
ld de,PRM1 ; ¡ãä¥à
|
ld de,PRM1 ; ¡ãä¥à
|
||||||
@ -186,12 +210,11 @@ A88E2: ld bc,8
|
|||||||
ldi
|
ldi
|
||||||
ldi
|
ldi
|
||||||
ld (de),a
|
ld (de),a
|
||||||
;ld ix,T9186
|
|
||||||
ld ix,work_buffer1
|
ld ix,work_buffer1
|
||||||
call A89A4 ; ¢ë¢¥á⨠¢ ¡ãä¥à ¨¬ï ä ©« ¨ ¥£® à §¬¥à (ã ¯ ¯ª¨ <DIR>)
|
call A89A4 ; ¢ë¢¥á⨠¢ ¡ãä¥à ¨¬ï ä ©« ¨ ¥£® à §¬¥à (ã ¯ ¯ª¨ <DIR>)
|
||||||
call A89FA ; ¢ë¢¥á⨠¢ ¡ãä¥à ¤ âã ä ©« /¯ ¯ª¨
|
call A89FA ; ¢ë¢¥á⨠¢ ¡ãä¥à ¤ âã ä ©« /¯ ¯ª¨
|
||||||
call A8A19 ; ¢ë¢¥á⨠¢ ¡ãä¥à ¢à¥¬ï ä ©« /¯ ¯ª¨
|
call A8A19 ; ¢ë¢¥á⨠¢ ¡ãä¥à ¢à¥¬ï ä ©« /¯ ¯ª¨
|
||||||
ld de,10 ; ¨¤¥ªá "%1 %2 %3 %4 %5"
|
ld de,MAIN_MSG.DIR_3 ; ¨¤¥ªá "%1 %2 %3 %4 %5"
|
||||||
jp MESSAGE ; ¢ë¢®¤ áâப¨
|
jp MESSAGE ; ¢ë¢®¤ áâப¨
|
||||||
|
|
||||||
|
|
||||||
@ -326,7 +349,7 @@ A8A7E: ld c,2Fh
|
|||||||
inc hl
|
inc hl
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
;!TODO ¯¥à¥â é¨âì ¢ procedures/math.asm
|
||||||
; „¥áïâ¨çë© 32-å à §àï¤ë© ¢ë¢®¤
|
; „¥áïâ¨çë© 32-å à §àï¤ë© ¢ë¢®¤
|
||||||
A8A8F: ld ix,T8B2E ; "0000000000"
|
A8A8F: ld ix,T8B2E ; "0000000000"
|
||||||
exx
|
exx
|
||||||
@ -416,6 +439,7 @@ A8B16: inc a
|
|||||||
D88DC: dw 0
|
D88DC: dw 0
|
||||||
D88DE: dw 0
|
D88DE: dw 0
|
||||||
D88E0: dw 0
|
D88E0: dw 0
|
||||||
|
dir_number: dw 0
|
||||||
;
|
;
|
||||||
|
|
||||||
T8B2E: db "000000000"
|
T8B2E: db "000000000"
|
||||||
@ -425,12 +449,14 @@ T8B46: db "0 000 000 000",0
|
|||||||
db 0
|
db 0
|
||||||
;
|
;
|
||||||
|
|
||||||
;!FIXIT ¯¥à¥¥á⨠¢ DSS - FN #04: GET_BPB
|
; [ ] ⥯¥àì ¥ «¥§¥â ¯àï¬ãî, ¤¥« ¥â ç¥à¥§ ®¢ë© ¯ à ¬¥âà äãªæ¨¨ DskInfo
|
||||||
; ¯à®ç¨â âì BPB ¤¨áª
|
; ¨ ï «®£¨ª ¯®«ãç¥¨ï ¬¥âª¨ ⮬ - á ç « ¨é¥âáï ¢ ª®à¥¢®© ¤¨à¥ªâ®à¨¨,
|
||||||
|
; ¥á«¨ â ¬ ¥â, â® ¡¥àñâáï ¨§ BPB
|
||||||
read_disk_info:
|
read_disk_info:
|
||||||
OR #80
|
OR #80
|
||||||
LD HL,work_buffer
|
LD HL,work_buffer
|
||||||
LD BC,Dss.DskInfo
|
.full+1: LD B,0
|
||||||
|
LD C,Dss.DskInfo
|
||||||
RST ToDSS
|
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:
|
mask_fname:
|
||||||
db "*.*",0
|
db "*.*",0
|
||||||
@ -598,7 +598,41 @@ serial_string:
|
|||||||
.Size equ $-serial_string
|
.Size equ $-serial_string
|
||||||
db 0 ; § ªàë¢ èª
|
db 0 ; § ªàë¢ èª
|
||||||
|
|
||||||
volume_string_no: ;!FIXIT ᤥ« âì ç¥à¥§ PRM
|
volume_string_no:
|
||||||
db "has no label",0
|
db "has no label",0
|
||||||
volume_string_yes:
|
volume_string_yes:
|
||||||
db "has label",0
|
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 ; ©â¨ áâப㠯® ¨¤¥ªáã
|
call FMESAGE ; ©â¨ áâப㠯® ¨¤¥ªáã
|
||||||
ld de,PRM1 ; ªã¤ ( à£ã¬¥â %1)
|
ld de,PRM1 ; ªã¤ ( à£ã¬¥â %1)
|
||||||
call ncopy_string ; ᪮¯¨à. áâபã (á ã«¥¬), ¬ ªá.15 ᨬ¢.
|
call ncopy_string ; ᪮¯¨à. áâபã (á ã«¥¬), ¬ ªá.15 ᨬ¢.
|
||||||
ld de,6 ; 身丰花 "Echo is %1"
|
ld de,MAIN_MSG.ECHO ; 身丰花 "Echo is %1"
|
||||||
jp MESSAGE
|
jp MESSAGE
|
||||||
;
|
;
|
||||||
A864B: ld (echo_mode),a ; ä« £ echo-०¨¬
|
A864B: ld (echo_mode),a ; ä« £ echo-०¨¬
|
||||||
|
|||||||
@ -4,5 +4,5 @@
|
|||||||
;
|
;
|
||||||
;///////////////////////////////////////////////////
|
;///////////////////////////////////////////////////
|
||||||
cmd_help:
|
cmd_help:
|
||||||
ld de,11 ; 身丰花 "COMMANDS: ..."
|
ld de,MAIN_MSG.HELP ; 身丰花 "COMMANDS: ..."
|
||||||
jp MESSAGE
|
jp MESSAGE
|
||||||
|
|||||||
@ -4,8 +4,8 @@
|
|||||||
;
|
;
|
||||||
;///////////////////////////////////////////////////
|
;///////////////////////////////////////////////////
|
||||||
cmd_pause:
|
cmd_pause:
|
||||||
ld de,4 ; 身丰花 "Press any key to continue ..."
|
ld de,MAIN_MSG.PAUSE ; 身丰花 "Press any key to continue ..."
|
||||||
call MESSAGE ; ¢ë¢®¤ áâப¨
|
call MESSAGE ; ¢ë¢®¤ áâப¨
|
||||||
ld c,Dss.WaitKey ; ¦¤¥¬ ¦ â¨ï ª« ¢¨è¨
|
ld c,Dss.WaitKey ; ¦¤¥¬ ¦ â¨ï ª« ¢¨è¨
|
||||||
RST ToDSS
|
JP ToDSS
|
||||||
ret
|
;ret
|
||||||
|
|||||||
@ -16,46 +16,9 @@ cmd_version:
|
|||||||
LD DE,PRM2
|
LD DE,PRM2
|
||||||
CALL .Set_Ver_to_PRM ; set Shell version
|
CALL .Set_Ver_to_PRM ; set Shell version
|
||||||
;R13
|
;R13
|
||||||
LD DE,VERSMSG
|
LD DE,MAIN_MSG.VERSION
|
||||||
JP MESSAGE
|
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)
|
; L - ®¬¥à ¢¥àᨨ (0..9)
|
||||||
; H - ®¬¥à ¬®¤¨ä¨ª 樨 (0..99)
|
; H - ®¬¥à ¬®¤¨ä¨ª 樨 (0..99)
|
||||||
@ -65,19 +28,19 @@ cmd_version:
|
|||||||
PUSH BC
|
PUSH BC
|
||||||
PUSH HL
|
PUSH HL
|
||||||
LD H,0
|
LD H,0
|
||||||
CALL .num_ver ;decim2 ®¬¥à ¢¥àᨨ (0..9)
|
CALL hex2dec_ascii_16bit.n10 ;decim2 ®¬¥à ¢¥àᨨ (0..9)
|
||||||
LD A,'.'
|
LD A,'.'
|
||||||
LD (DE),A
|
LD (DE),A
|
||||||
INC DE
|
INC DE
|
||||||
POP HL
|
POP HL
|
||||||
LD L,H
|
LD L,H
|
||||||
LD H,0
|
LD H,0
|
||||||
CALL .num_mod ;decim2 ®¬¥à ¬®¤¨ä¨ª 樨 (0..99)
|
CALL hex2dec_ascii_16bit.n10 ;decim2 ®¬¥à ¬®¤¨ä¨ª 樨 (0..99)
|
||||||
POP HL
|
POP HL
|
||||||
LD A,'.'
|
LD A,'.'
|
||||||
LD (DE),A
|
LD (DE),A
|
||||||
INC DE
|
INC DE
|
||||||
CALL .num_build ;decim3 ®¬¥à ¡¨«¤ (0..999)
|
CALL hex2dec_ascii_16bit.n100 ;decim3 ®¬¥à ¡¨«¤ (0..999)
|
||||||
XOR A
|
XOR A
|
||||||
LD (DE),A
|
LD (DE),A
|
||||||
RET
|
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)
|
COMP: call EVALCMD ; (batch.asm)
|
||||||
ld hl,struct_input_line+5
|
ld hl,struct_input_line+5
|
||||||
dec hl
|
dec hl
|
||||||
;ld hl,struct_input_line+4;;
|
|
||||||
ld c,(hl) ; ¤«¨ áâப¨
|
ld c,(hl) ; ¤«¨ áâப¨
|
||||||
ld b,0
|
ld b,0
|
||||||
inc hl ; struct_input_line+5
|
inc hl ; struct_input_line+5
|
||||||
;ld hl,work_buffer+256;;
|
|
||||||
.loop: ld a,(hl)
|
.loop: ld a,(hl)
|
||||||
cp " "
|
cp " "
|
||||||
jr nz,COMP01
|
jr nz,COMP01
|
||||||
@ -37,49 +35,10 @@ COMP005: ex af,af'
|
|||||||
sub c
|
sub c
|
||||||
ld c,a
|
ld c,a
|
||||||
ld hl,CMDLIST ; ᯨ᮪ ª®¬ ¤ „Ž‘-
|
ld hl,CMDLIST ; ᯨ᮪ ª®¬ ¤ „Ž‘-
|
||||||
; de=struct_input_line+5, c=¤«¨ áâப¨
|
.start: call RUN_COMMAND
|
||||||
; ®â bat-®âà ¡®âª¨
|
jr nc,.skip ; NC ¥á«¨ ¥ ©¤¥ ª®¬ ¤
|
||||||
COMP004: push bc
|
jp (hl)
|
||||||
push de
|
.skip: ; <20>¥ ¤®á-ª®¬ ¤ë. ’¥áâ § ¤` ¨¥ ¤¨áª ¨ § ¯ãáª ä ©«
|
||||||
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 h,d
|
ld h,d
|
||||||
ld l,e
|
ld l,e
|
||||||
; hl=struct_input_line+5
|
; hl=struct_input_line+5
|
||||||
@ -99,7 +58,7 @@ COMP002: xor a
|
|||||||
cp "z"+1
|
cp "z"+1
|
||||||
jr nc,NOUP
|
jr nc,NOUP
|
||||||
and #5F ; a..z -> A..Z
|
and #5F ; a..z -> A..Z
|
||||||
;!!!!! âãâ ¢®ááâ ¢«¨¢ ¥âáï ¤¨à¥ªâ®à¨ï ¨ ¬®£ãâ ¡ëâì £«îª¨ ®¢®¬ ï¤à¥
|
;!FIXIT âãâ ¢®ááâ ¢«¨¢ ¥âáï ¤¨à¥ªâ®à¨ï ¨ ¬®£ãâ ¡ëâì £«îª¨ ®¢®¬ ï¤à¥
|
||||||
NOUP: sub "A" ; ®¬¥à ¤¨áª
|
NOUP: sub "A" ; ®¬¥à ¤¨áª
|
||||||
ld c,Dss.ChDisk ; ᬥ¨âì ⥪. ¤¨áª
|
ld c,Dss.ChDisk ; ᬥ¨âì ⥪. ¤¨áª
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
@ -242,3 +201,4 @@ RESTORE_ALL:
|
|||||||
;R10
|
;R10
|
||||||
;
|
;
|
||||||
RET
|
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"
|
sub "0"
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
;!FIXIT ¥áâì ¤ã¡«
|
||||||
A8964: ld de,10000
|
A8964: ld de,10000
|
||||||
ld a,0C8h ; ret z
|
ld a,#C8 ; ret z
|
||||||
ld (D8996),a
|
ld (D8996),a
|
||||||
call A898E
|
call A898E
|
||||||
ld de,1000
|
ld de,1000
|
||||||
@ -521,28 +521,33 @@ T8C21: db "ON",0
|
|||||||
T8C24: db "OFF",0
|
T8C24: db "OFF",0
|
||||||
|
|
||||||
|
|
||||||
include "edline.asm" ; áâப । ªâ¨à®¢ ¨ï
|
include 'edline.asm' ; áâப । ªâ¨à®¢ ¨ï
|
||||||
include "batch.asm" ; ¯ àᨣ bat-ä ©«®¢
|
include 'batch.asm' ; ¯ àᨣ bat-ä ©«®¢
|
||||||
include "shell_exec.asm" ; ¢ë¯®«. ¢¢¥¤. ª®¬ ¤ á ª®á®«¨
|
include 'exec.asm' ; ¢ë¯®«. ¢¢¥¤. ª®¬ ¤ á ª®á®«¨
|
||||||
include "error.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/exit.asm' ; ¢ë室 ¢ த¨â. ¯à®æ¥áá
|
||||||
include "Commands/pause.asm" ; ¯ ã§
|
include 'Commands/pause.asm' ; ¯ ã§
|
||||||
include "Commands/rem.asm" ; ª®¬¬¥â ਩
|
include 'Commands/rem.asm' ; ª®¬¬¥â ਩
|
||||||
include "Commands/ver.asm" ; ¢ë¢®¤ ¢¥àᨨ „Ž‘
|
include 'Commands/ver.asm' ; ¢ë¢®¤ ¢¥àᨨ „Ž‘
|
||||||
include "Commands/cls.asm" ; ®ç¨á⪠íªà
|
include 'Commands/cls.asm' ; ®ç¨á⪠íªà
|
||||||
include "Commands/date.asm" ; ¢ë¢®¤ ¨«¨ ãáâ ®¢ª ¤ âë/¢à¥¬¥¨
|
include 'Commands/date.asm' ; ¢ë¢®¤ ¨«¨ ãáâ ®¢ª ¤ âë/¢à¥¬¥¨
|
||||||
include "Commands/dir.asm" ; ¢ë¢®¤ ᯨ᪠¤¨à¥ªâ®à¨¨
|
include 'Commands/dir.asm' ; ¢ë¢®¤ ᯨ᪠¤¨à¥ªâ®à¨¨
|
||||||
include "Commands/chdir.asm" ; ᬥ ⥪. ª â «®£
|
include 'Commands/chdir.asm' ; ᬥ ⥪. ª â «®£
|
||||||
include "Commands/mkdir.asm" ; á®§¤ ¨¥ ª â «®£
|
include 'Commands/mkdir.asm' ; á®§¤ ¨¥ ª â «®£
|
||||||
include "Commands/rmdir.asm" ; 㤠«¥¨¥ ª â «®£
|
include 'Commands/rmdir.asm' ; 㤠«¥¨¥ ª â «®£
|
||||||
include "Commands/del.asm" ; 㤠«¥¨¥ ä ©«
|
include 'Commands/del.asm' ; 㤠«¥¨¥ ä ©«
|
||||||
include "Commands/ren.asm" ; ¯¥à¥¨¬¥®¢ ¨¥ ä ©« ¨«¨ ª â «®£
|
include 'Commands/ren.asm' ; ¯¥à¥¨¬¥®¢ ¨¥ ä ©« ¨«¨ ª â «®£
|
||||||
include "Commands/echo.asm" ; íå®-०¨¬
|
include 'Commands/echo.asm' ; íå®-०¨¬
|
||||||
include "Commands/help.asm" ; ¢ë¢®¤ íªà ¯®¬®é¨
|
include 'Commands/help.asm' ; ¢ë¢®¤ íªà ¯®¬®é¨
|
||||||
include "Commands/path.asm" ; § ¤ âì á¨áâ. ¯ãâì
|
include 'Commands/path.asm' ; § ¤ âì á¨áâ. ¯ãâì
|
||||||
include "Commands/set.asm" ; § ¤ âì ¯¥à¥¬¥ãî ®ªà㦥¨ï
|
include 'Commands/set.asm' ; § ¤ âì ¯¥à¥¬¥ãî ®ªà㦥¨ï
|
||||||
include "Commands/reboot.asm" ; á®äâ à¥á¥â
|
include 'Commands/reboot.asm' ; á®äâ à¥á¥â
|
||||||
;
|
;
|
||||||
DISPLAY "Empty space for buffers from ",/H,$
|
DISPLAY "Empty space for buffers from ",/H,$
|
||||||
work_buffer1 equ $ ; 2-© à ¡. ¡ãä¥à ; 128 bytes
|
work_buffer1 equ $ ; 2-© à ¡. ¡ãä¥à ; 128 bytes
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
127
|
175
|
||||||
Loading…
Reference in New Issue
Block a user