Estex-DSS/SHELL/Changes.txt

91 lines
6.3 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

—⮠ᤥ« ­®:
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).
ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ