mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 01:11:48 +03:00
91 lines
6.3 KiB
Plaintext
91 lines
6.3 KiB
Plaintext
—⮠ᤥ« ®:
|
||
1. ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
GOTO ¤«ï BAT
|
||
<EFBFBD>®¢ë© ä ©« SHELL/Commands/GOTO.ASM ? ᮤ¥à¦¨â:
|
||
|
||
cmd_goto ? ®¡à ¡®â稪 ª®¬ ¤ë: à §¡¨à ¥â ¨¬ï ¬¥âª¨ (á ¯®¤¤¥à¦ª®© GOTO :label ¨ GOTO label, ¡¥§ ãçñâ ॣ¨áâà ),
|
||
¯¥à¥¬ âë¢ ¥â BAT-ä ©« ¢ ç «® (Dss.Move_FP, B=0), á¡à áë¢ ¥â ¡ãä¥à ç⥨ï (MOVWORD.count=0) ¨ ¢ª«îç ¥â ०¨¬ ¯®¨áª ¬¥âª¨.
|
||
BAT_CHECK_LABEL ? ¢ë§ë¢ ¥âáï ¤«ï ª ¦¤®© áâப¨ BAT-ä ©« : ¯à®¯ã᪠¥â áâப¨-¬¥âª¨ :label (¡¥§ íå ¨ ¢ë¯®«¥¨ï, ª ª ¢ MS-DOS)
|
||
¨ ¢ ०¨¬¥ ¯®¨áª ¯à®¯ã᪠¥â ¢á¥ áâப¨, ¯®ª ¥ ©¤ñâ ã¦ãî ¬¥âªã.
|
||
ˆ§¬¥ñë¥ ä ©«ë (¯à ¢ª¨ ¢¥á¥ë ¯®¡ ©â®¢®, ª®¤¨à®¢ª CP866 ¨ ¯¥à¥®áë áâப á®åà ¥ë):
|
||
|
||
SHELL/SHELL.ASM ? include 'Commands/goto.asm'
|
||
SHELL/BATCH.ASM ? DZ 'GOTO' : DW cmd_goto ¢ BATLIST (ª®¬ ¤ ⮫쪮 ¤«ï BAT, ª ª PAUSE/REM); ¢ë§®¢ BAT_CHECK_LABEL ¢ CMDMODE áà §ã ¯®á«¥ EVALCMD
|
||
SHELL/Commands/BREAK.ASM ? ¯à¨ § ¢¥à襨¨ BAT, ¥á«¨ ¯®¨áª ¬¥âª¨ ¥ § ¢¥à訫áï, ¯¥ç â ¥â ?Label not found? ¨ ¯à¥àë¢ ¥â ¢ë¯®«¥¨¥ (¯®¢¥¤¥¨¥ MS-DOS)
|
||
SHELL/Messages/main_txt.asm ? ¤®¡ ¢«¥® á®®¡é¥¨¥ Label not found ¨ «¨ á MAIN_MSG.LABEL_NOT_FOUND
|
||
Š ª à ¡®â ¥â
|
||
|
||
@echo off
|
||
echo Start
|
||
goto skip
|
||
echo <20>â® ¥ ¢ë¯®«¨âáï
|
||
:skip
|
||
echo <20>®á«¥ ¬¥âª¨
|
||
GOTO skip ? ä ©« ¯¥à¥¬ âë¢ ¥âáï ¢ ç «®, áâப¨ ¯à®¯ã᪠îâáï (¡¥§ íå ) ¤® áâப¨ :skip, ¤ «¥¥ ¢ë¯®«¥¨¥ ¯à®¤®«¦ ¥âáï á echo <20>®á«¥ ¬¥âª¨.
|
||
<EFBFBD>®¤¤¥à¦¨¢ îâáï ¯¥à¥å®¤ë ¢¯¥àñ¤ ¨ § ¤ (横«ë), ¡¥§ ãçñâ ॣ¨áâà , ¯®¨áª ¬¥âª¨ ¨¤ñâ ®â ç « ä ©« (¯¥à¢ ï ᮢ¯ ¢è ï ¬¥âª ? ª ª ¢ MS-DOS).
|
||
‘âப¨ :¬¥âª á ¬¨ ¯® ᥡ¥ ¥ ¢ë¯®«ïîâáï ¨ ¥ íå®âáï.
|
||
…᫨ ¬¥âª¨ ¥â ? ¢ë¢®¤¨âáï Label not found ¨ BAT-ä ©« ¯à¥àë¢ ¥âáï.
|
||
ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
|
||
2. ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
’¥¯¥àì TAB ®áâ ñâáï ¢ áâப¥ ª ª ᨬ¢®« 0x09, ® âà ªâã¥âáï ª ª ¯à®¡¥«ìë© à §¤¥«¨â¥«ì ⮫쪮 ¯à¨ à §¡®à¥ ⮪¥ë:
|
||
|
||
MOVWORD (BATCH.ASM) ? TAB ¡®«ìè¥ ¥ § ¢¥àè ¥â áâபã: ¡ ©â á®åà ï¥âáï ¢ ¡ãä¥à ª ª ¥áâì, ª®æ®¬ áâப¨ áç¨â îâáï ⮫쪮 CR/LF (<0x20, ªà®¬¥ 0x09).
|
||
‘âப¨ ¥ à §àë¢ îâáï ¯® â ¡ã«ï樨.
|
||
CMDMODE, .A826C (BATCH.ASM) ? ¢¥¤ã騥 ¯à®¡¥«ë ¨ â ¡ã«ï樨 ®¡à¥§ îâáï (®âáâã¯ë áâப).
|
||
CMDMODE, .A8276 (BATCH.ASM) ? £à ¨æ ?ª®¬ ¤ / à£ã¬¥â? ⥯¥àì ¯® ¯à®¡¥«ã ¨«¨ â ¡ã«ï樨 (¢¬¥áâ® cpir ¯® ¯à®¡¥«ã).
|
||
<09>®í⮬ã GOTO?:PASS1 à ᯮ§ ñâáï ª ª ª®¬ ¤ GOTO á à£ã¬¥â®¬ :PASS1.
|
||
cmd_goto / BAT_CHECK_LABEL (Commands/GOTO.ASM) ? ¯à®¯ã᪠¢¥¤ãé¨å ¯à®¡¥«®¢ ⥯¥àì ¢ª«îç ¥â TAB (¯®á«¥ ¨¬¥¨ ª®¬ ¤ë, ¯®á«¥ :),
|
||
áà ¢¥¨¥ ¬¥âª¨ ? ¡¥§ ãçñâ ॣ¨áâà .
|
||
‚ १ã«ìâ â¥:
|
||
@echo test 1?1234?=- ? ¢ë¢®¤¨âáï test 1?1234?=- á áâ®ï饩 â ¡ã«ï樥© (0x09 ¯¥à¥¤ ñâáï ¢ ª®á®«ì ç¥à¥§ Dss.PChars).
|
||
GOTO?:LABEL ¨ GOTO :LABEL ®¡ à ¡®â îâ; áâப¨-¬¥âª¨ :label ¥ ¢ë¯®«ïîâáï ¨ ¥ íå®âáï; ®âáãâá⢨¥ ¬¥âª¨ ? Label not found ¨ ¯à¥àë¢ ¨¥ BAT.
|
||
ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
|
||
3. ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
GOSUB/RETURN ¤«ï BAT
|
||
Š ª ॠ«¨§®¢ ®
|
||
GOSUB: § ¯à 訢 ¥â ⥪ã騩 㪠§ ⥫ì ä ©« (Dss.Move_FP, B=1 ? ?tell?), ¢ëç¨á«ï¥â ᬥ饨¥ ç « á«¥¤ãî饩 áâப¨ = 㪠§ ⥫ì ? MOVWORD.count
|
||
(¥¯à®ç¨â ë¥ ¡ ©âë ¢ ¡ãä¥à¥), ª« ¤ñâ íâ® 32-¡¨â®¥ ᬥ饨¥ ¢ á⥪ ¢®§¢à ⮢, § ⥬ ¢ë¯®«ï¥â ¯®¨áª ¬¥âª¨ ª ª GOTO.
|
||
RETURN: ᨬ ¥â ᬥ饨¥ á® á⥪ , ¯®§¨æ¨®¨àã¥â ä ©« â㤠(Dss.Move_FP, B=0), á¡à áë¢ ¥â ¡ãä¥à ? NEWLINE ¯à®¤®«¦ ¥â á® áâப¨ ¯®á«¥ GOSUB.
|
||
‘⥪ ¢®§¢à ⮢: gosub_stk (16?4 ¡ ©â ) + gosub_sp, á¡à áë¢ ¥âáï ¢ cmd_break.exit ¯à¨ ª ¦¤®¬ § ¢¥à襨¨ BAT.
|
||
Œ¥âª¨ ¨ ¯®¨áª ? ®¡é¨© ¬¥å ¨§¬ á GOTO (goto_active/goto_label/BAT_CHECK_LABEL), TAB âà ªâã¥âáï ª ª ¯à®¡¥« ¯à¨ à §¡®à¥ (ª ª ¨ ¡ë«® ᤥ« ® ¤«ï GOTO),
|
||
¯®í⮬ã GOSUB?:LABEL ⮦¥ à ¡®â ¥â.
|
||
Žè¨¡ª¨ (á®®¡é¥¨¥ + ¯à¥àë¢ ¨¥ BAT):
|
||
|
||
RETURN without GOSUB ? RETURN ¡¥§ ªâ¨¢®£® GOSUB
|
||
GOSUB nesting too deep ? ¯¥à¥¯®«¥¨¥ á⥪ (>16)
|
||
Label not found ? ¬¥âª GOSUB/GOTO ¥ ©¤¥
|
||
ˆ§¬¥ñë¥ ä ©«ë
|
||
SHELL/Commands/GOTO.ASM ? à¥ä ªâ®à¨£ (®¡é¨¥ GOTO_PARSE/GOTO_START) + cmd_gosub, cmd_return, GOSUB_PUSH, á⥪, gAbort.
|
||
SHELL/BATCH.ASM ? ¢ BATLIST ¤®¡ ¢«¥ë GOSUB/RETURN.
|
||
SHELL/Commands/BREAK.ASM ? á¡à®á á⥪ GOSUB ¯à¨ § ¢¥à襨¨ BAT.
|
||
SHELL/Messages/main_txt.asm ? á®®¡é¥¨ï RETURN without GOSUB, GOSUB nesting too deep.
|
||
ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
|
||
4. ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
||
IF ¤«ï BAT
|
||
<EFBFBD>®¤¤¥à¦¨¢ ¥¬ë© á¨â ªá¨á
|
||
|
||
IF [NOT] ERRORLEVEL ç¨á«® ª®¬ ¤
|
||
IF [NOT] EXIST ä ©« ª®¬ ¤
|
||
IF [NOT] áâப 1==áâப 2 ª®¬ ¤
|
||
…᫨ ãá«®¢¨¥ ¨á⨮ ? ®áâ ⮪ áâப¨ ¢ë¯®«ï¥âáï ª ª ®¡ëç ï ª®¬ ¤ (GOTO, GOSUB, ECHO, § ¯ã᪠¯à®£à ¬¬ë, ¢«®¦¥ë© IF ¨ â.¤.).
|
||
|
||
‘¥¬ ⨪ (ª ª ¢ MS-DOS)
|
||
ERRORLEVEL n ? ¨á⨠, ¥á«¨ ª®¤ § ¢¥àè¥¨ï ¯à¥¤ë¤ã饩 ¯à®£à ¬¬ë >= n (ç¥à¥§ Dss.Get_Err #42). —¨á«® 0..255.
|
||
EXIST ä ©« ? ¨á⨠, ¥á«¨ ä ©«/ª â «®£ áãé¥áâ¢ã¥â (ç¥à¥§ Dss.F_First, âਡãâë ?¢áñ, ªà®¬¥ ¬¥âª¨ ⮬ ?).
|
||
áâப 1==áâப 2 ? ¯®á¨¬¢®«ì®¥ áà ¢¥¨¥ á ãçñ⮬ ॣ¨áâà (ª ª ¢ COMMAND.COM). <20> §¤¥«¨â¥«ì ? ==.
|
||
NOT ? ¨¢¥àá¨ï ãá«®¢¨ï.
|
||
%VAR% / %1 㦥 ¯®¤áâ ¢«¥ë EVALCMD ¤® ¢ë¯®«¥¨ï IF, ¯®í⮬ã à ¡®â ¥â ª« áᨪ IF "%1"=="" GOTO end.
|
||
TAB âà ªâã¥âáï ª ª ¯à®¡¥« (ᮣ« ᮢ ® á à ¥¥ ᤥ« ë¬ ¤«ï GOTO).
|
||
Š ª à ¡®â ¥â ¯®¢â®à ï ¤¨á¯¥âç¥à¨§ æ¨ï
|
||
<EFBFBD>®á«¥ ¯à®¢¥àª¨ ãá«®¢¨ï IF_RUN 室¨â ç «® ª®¬ ¤ë-®áâ ⪠, ¢ëç¨á«ï¥â ¤«¨ã ¥ñ ⮪¥ ¨ ¤¥« ¥â jp COMP.start á hl=BATLIST ? â®â ¦¥ ¯ãâì,
|
||
çâ® ¨ ¤«ï ®¡ë箩 áâப¨. <20>®í⮬ã IF ? GOTO :label, IF ? GOSUB :sub, IF ? program.exe, ¨ ¢«®¦¥ë¥ IF a==b IF c==d ? à ¡®â îâ
|
||
(ç¥à¥§ jp, ¡¥§ à®áâ á⥪ ). …᫨ ãá«®¢¨¥ «®¦® ¨«¨ ª®¬ ¤ ¯ãáâ ? ret (¨ç¥£® ¥ ¤¥« ¥âáï).
|
||
|
||
ˆ§¬¥ñë¥ ä ©«ë
|
||
SHELL/Commands/IF.ASM ? ®¢ë©: cmd_if, IF_KW (ॣ¨áâ஥§ ¢¨á¨¬®¥ à ᯮ§ ¢ ¨¥ ª«î祢ëå á«®¢), IF_ATOI8, IF_SKIPB, IF_RUN.
|
||
SHELL/SHELL.ASM ? include 'Commands/if.asm'.
|
||
SHELL/BATCH.ASM ? IF ¤®¡ ¢«¥ ¢ BATLIST (batch-only, ª ª GOTO/GOSUB).
|
||
ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ |