mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 09:21:47 +03:00
205 lines
4.2 KiB
NASM
205 lines
4.2 KiB
NASM
; à ¡. ï祩ª
|
||
D8374: dw 0
|
||
|
||
|
||
|
||
;-------------------------------------------------------------
|
||
; <20> §¡®à ¨ ¢ë¯®«¥¨¥ ¢¢¥¤¥ëå ª®¬ ¤ ¨ ¨¬¥ ä ©«®¢
|
||
;-------------------------------------------------------------
|
||
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
|
||
inc hl
|
||
dec c
|
||
jr nz,.loop
|
||
ret
|
||
;
|
||
COMP01: ld d,h
|
||
ld e,l
|
||
add hl,bc
|
||
ld (hl),0
|
||
sbc hl,bc
|
||
ld a,c
|
||
ex af,af'
|
||
ld a," "
|
||
cpir
|
||
jr nz,COMP005
|
||
inc c
|
||
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 h,d
|
||
ld l,e
|
||
; hl=struct_input_line+5
|
||
ld b,(hl) ;+0 1-© ᨬ¢®«
|
||
inc hl
|
||
ld c,(hl) ;+1 2-© ᨬ¢®«
|
||
inc hl
|
||
ld a,(hl) ;+2 3-© ᨬ¢®«
|
||
or a ; § ¤ ¤¨áª ⨯ "x:" ?
|
||
jr nz,RUN_EXT ; ¥â, ¨¬¥¥¬ ¡®«ìè¥ 2-å ᨬ¢®«®¢
|
||
ld a,":" ; ¯®áâä¨ªá ¡ãª¢ë ¤¨áª
|
||
cp c ; 2-© ᨬ¢®«
|
||
jr nz,RUN_EXT ; § ¤ ¥ ¤¨áª
|
||
ld a,b ; 1-© ᨬ¢®«
|
||
cp "a"
|
||
jr c,NOUP
|
||
cp "z"+1
|
||
jr nc,NOUP
|
||
and #5F ; a..z -> A..Z
|
||
;!!!!! âãâ ¢®ááâ ¢«¨¢ ¥âáï ¤¨à¥ªâ®à¨ï ¨ ¬®£ãâ ¡ëâì £«îª¨ ®¢®¬ ï¤à¥
|
||
NOUP: sub "A" ; ®¬¥à ¤¨áª
|
||
ld c,Dss.ChDisk ; ᬥ¨âì ⥪. ¤¨áª
|
||
RST ToDSS
|
||
jp c,print_err_message ; ¢ë¢®¤ á®®¡é¥¨ï
|
||
|
||
;!TODO ¤®áâ ¢ âì system_path ®â¤¥«ì® ¤«ï ª ¦¤®£® ¤¨áª (¨«¨ ¢ ï¤à¥ ᤥ« âì?)
|
||
; â¥áâ áãé¥á⢮¢ ¨¥ ¯ ¯ª¨ 楫¥¢®¬ ¤¨áª¥
|
||
IFDEF MANY_SYS_PATHES
|
||
ld hl,system_path ; ¡ãä¥à á¨áâ. ¯ãâ¨
|
||
ld c,Dss.ChDir ; ãáâ. ⥪. ¯ãâì
|
||
RST ToDSS
|
||
jp nc,save_disk_path ; Ok
|
||
ENDIF
|
||
;
|
||
|
||
; ãáâ. ª®à¥ì, ¥â â ª®© ¯ ¯ª¨ ®¢®¬ ¤¨áª¥
|
||
ld hl,system_path+1 ; ¡ãä¥à á¨áâ. ¯ãâ¨
|
||
ld (hl),0
|
||
dec hl
|
||
ld (hl),'\'
|
||
;!TODO ¤®áâ ¢ âì system_path ®â¤¥«ì® ¤«ï ª ¦¤®£® ¤¨áª (¨«¨ ¢ ï¤à¥ ᤥ« âì?)
|
||
IFDEF MANY_SYS_PATHES
|
||
ld c,Dss.ChDir ; ãáâ. ⥪. ¯ãâì
|
||
RST ToDSS
|
||
jp c,print_err_message ; ¢ë¢®¤ á®®¡é¥¨ï
|
||
ENDIF
|
||
;
|
||
jp save_disk_path ; Ok
|
||
|
||
; § ¤ ¥ ¤¨áª
|
||
RUN_EXT: ex de,hl ; ¢®ááâ. ¤à¥á ç « áâப¨
|
||
ld (D8374),hl ; struct_input_line+5
|
||
ld de,T8C1A ; ¡ãä¥à
|
||
ld bc,4*256 + Dss.EX_Path ; ¢ë¤¥«¨âì à áè. ä ©«
|
||
RST ToDSS
|
||
ld hl,(D8374) ; ¨¬ï ä ©«
|
||
jr c,A83D7 ; ¢ë¯®«¨âì exe-ä ©«
|
||
bit 1,a ; ¥áâì à áè. ?
|
||
jr z,A839D ; ¥â
|
||
; ¥áâì à áè. ä ©«
|
||
ld de,T8C1A ; ¡ãä¥à à áè. ä ©«
|
||
ld hl,T8C1E ; "BAT"
|
||
ld b,3 ; ¤«¨ áà ¢¥¨ï
|
||
call A874E ; áà ¢¨âì áâப¨
|
||
ld hl,(D8374)
|
||
jp z,A83E8 ; ¢ë¯®«¨âì bat-ä ©« (batch.asm)
|
||
jr A83D7 ; ¢ë¯®«¨âì exe-ä ©«
|
||
|
||
A839D: ld bc,0*256 + Dss.Exec ; § £à. ¨ ¢ë¯®«¨âì ¯à®£à ¬¬ã
|
||
RST ToDSS
|
||
;R10
|
||
CALL Restore_Screen
|
||
;R10
|
||
ret nc ; Ok
|
||
ld hl,(D8374)
|
||
cp 3 ; ª®¤ ®è¨¡ª¨ "ä ©« ¥ ®¡ à㦥"
|
||
jr nz,A83DD
|
||
push hl
|
||
;ld a,(D96AD) ;; ¤«¨ áâப¨ (inline.asm)
|
||
ld a,(struct_input_line+4) ; ¤«¨ áâப¨
|
||
ld b,a
|
||
A83AF: ld a,(hl)
|
||
cp " "+1
|
||
jr c,A83B7
|
||
inc hl
|
||
djnz A83AF
|
||
A83B7: ld e,b
|
||
ld d,0
|
||
add hl,de
|
||
push hl
|
||
ld e,4
|
||
add hl,de
|
||
pop de
|
||
ex de,hl
|
||
ld c,b
|
||
ld b,0
|
||
inc c
|
||
lddr
|
||
inc hl
|
||
ld (hl),"."
|
||
inc hl
|
||
ld (hl),"B"
|
||
inc hl
|
||
ld (hl),"A"
|
||
inc hl
|
||
ld (hl),"T"
|
||
pop hl
|
||
jp A83E8 ; ¢ë¯®«¨âì bat-ä ©« (batch.asm)
|
||
|
||
|
||
; ‚믮«¨âì exe-ä ©«
|
||
; hl=¨¬ï ä ©«
|
||
A83D7: ld bc,0*256 + Dss.Exec ; § £à㧨âì ¯à®£à ¬¬ã, ¢ë¯®«¨âì ä ©«
|
||
RST ToDSS
|
||
;R10
|
||
CALL Restore_Screen
|
||
;R10
|
||
ret nc
|
||
A83DD: cp DSS_Error.sys.INVALID_HANDLE ; ª®¤ ®è¨¡ª¨ "¥â ¤¥áªà¨¯â®à "
|
||
jp nc,print_err_message ; ¢ë¢®¤ á®®¡é¥¨ï
|
||
xor a ; ¨¤¥ªá "Bad command or file name"
|
||
jp print_err_message
|