+ bat in bat in bat...

This commit is contained in:
Anatoliy Belyanskiy 2023-12-13 04:32:38 +10:00
parent 6ef97092ad
commit 76825603e1
8 changed files with 109 additions and 89 deletions

View File

@ -126,7 +126,7 @@ ECHOKEY: ;R01
LD A," "
JR Z,.CURSKI
LD A,"_"
.CURSKI: CALL PUTCHAR.NO_SCROLL ;R03
.CURSKI: CALL PUTCHAR.NO_SCROLL ;R03; [x] -bug with Vasil's version of cursor
POP DE
CALL LOCATE
@ -142,7 +142,7 @@ ECHOKEY: ;R01
PUSH DE
LD A," "
CALL PUTCHAR.NO_SCROLL ;R03
CALL PUTCHAR.NO_SCROLL ;R03; [x] -bug with Vasil's version of cursor
;LD A,8 ; BACKSPACE
;CALL PUTCHAR
@ -150,7 +150,7 @@ ECHOKEY: ;R01
POP AF
PUSH DE
;R01 [v]
CALL PUTCHAR.NO_SCROLL
CALL PUTCHAR.NO_SCROLL ; [x] -bug with Vasil's version of cursor
POP DE
CALL LOCATE

View File

@ -29,8 +29,8 @@ CLEAR: LD C,BIOS.LP_CLS_WIN2
;/////////////////////////////////////////////////////////////////////
; ”ã­ªæ¨ï #5C. ‚뢮¤ áâப¨ ­  íªà ­.
;
; ¢å®¤: HL - 㪠§ â¥«ì ­  áâபã ᨬ¢®«®¢
; ¢ë室: ­¥â
; ¢å®¤: HL - 㪠§ â¥«ì ­  áâபã ᨬ¢®«®¢
; ¢ë室: HL - 㪠§ â¥«ì ­  á«¥¤ãîéãî áâபã ᨬ¢®«®¢
; PRINT NULL-TERMINATED CHARS STRING
;/////////////////////////////////////////////////////////////////////
PCHARS: LD A,(HL)
@ -56,7 +56,7 @@ PUTCHAR:
CP #08
JR Z,.BK_
CP #07
JR Z,.BELL
JR Z,.BELL ; [x] Beep in PChars/PUTCHAR
;
.CHAR: LD BC,1*256 + BIOS.LP_PRINT_SYM
;[x] CR+LF+SCROLL
@ -67,7 +67,7 @@ PUTCHAR:
OR E
RET NZ
;
.LFF: PUSH HL ;!FIXIT á®åà ­ïâì ⥪ã騥 ¯à¥à뢠­¨ï
.LFF: PUSH HL
LD BC,1*256 + BIOS.LP_SCROLL_UD
LD DE,#0020
RST ToBIOS
@ -110,7 +110,7 @@ PUTCHAR:
RST ToBIOS
LD A,D
CP #1F
JR NC,.LFF ;!FIXIT áà ¡ â뢠¥â ª ª CRLF ­ ¤® áªà®««¨âì á á®åà ­¥­¨¥¬ Y
JR NC,.LFF
INC D
IFN EnoughtOnly_LF
JP LOCATE
@ -122,9 +122,15 @@ PUTCHAR:
RST ToBIOS
LD E,0
JP LOCATE
.BELL: LD DE,1200
LD HL,4
JP BEEP
; [x] Beep in PChars/PUTCHAR
.BELL: LD DE,1200
PUSH HL
LD HL,4
CALL BEEP
POP HL
RET
;
; [x] -bug with Vasil's version of cursor
.NO_SCROLL:
CP #0D
JR Z,.CR_
@ -135,7 +141,7 @@ PUTCHAR:
CP #08
JR Z,.BK_
CP #07
JR Z,.BELL
JR Z,.BELL ; [x] Beep in PChars/PUTCHAR
._CHAR: LD BC,1*256 + BIOS.LP_PRINT_SYM
JP ToBIOS
;-----[]

View File

@ -13,7 +13,15 @@ echo_mode:
;T98B9: ds 256
IF 0
CALL RUN_BAT
CALL BATCH
CALL MAKE_BATCH_PRM_ARRAY
CALL NEWLINE
CALL CMDMODE
CALL EVALCMD
CALL RUN_BAT
ENDIF
;-------------------------------------------------
; ‡ ¯ã᪠bat-ä ©« 
@ -65,7 +73,14 @@ MAKE_BATCH_PRM_ARRAY:
; ¢å®¤: hl=¨¬ï ä ©« 
; ¢ë室: "CF" - ®è¨¡ª  ®âªà. ä ©« 
;-------------------------------------------------
BATCH: push hl ; á®åà. ¨¬ï bat-ä ©« 
BATCH:
; [ ] 11/12/23 ¢«®¦¥­­ë¥ bat
ld a,(BAT_FM)
or a
jr nz,.new_process
;
push hl ; á®åà. ¨¬ï bat-ä ©« 
ld de,work_buffer ; 512 ¬¥áâ­ë© ¡ãä¥à
call copy_string ; ᪮¯¨à. áâபã (á ­ã«¥¬)
ld hl,work_buffer ; 512 ¬¥áâ­ë© ¡ãä¥à
@ -82,42 +97,40 @@ BATCH: push hl ;
inc hl
djnz .B_CLR_P
ex de,hl
.B_ALL_P:
.B_ALL_P:;-
pop hl ; ¢®ááâ. ¨¬ï bat-ä ©« 
; [ ] 11/12/23 ¢«®¦¥­­ë¥ bat
ld a,(BAT_FM)
or a
jr z,1F
CALL .new_process
xor a
ret
1: ;
ld a,Dss.Open.R ; ­  ç⥭¨¥
ld c,Dss.Open ; ®âªàëâì ä ©«
RST ToDSS
push af ; á®åà. ª®¤ ®è¨¡ª¨
call c,restore_disk_path ; ¢®ááâ. ⥪. ¤¨áª ¨ ¯ãâì
;push af ; á®åà. ª®¤ ®è¨¡ª¨
;call c,restore_disk_path ; ¢®ááâ. ⥪. ¤¨áª ¨ ¯ãâì
;R10
CALL Restore_Screen
;CALL Restore_Screen
;R10
pop af
;pop af
ret c
ld (BAT_FM),a ; ¤¥áªà. bat-ä ©« 
; ¢ë¯®«­. ª®¬ ­¤ bat-ä ©« 
call NEWLINE
;!TODO ¢«®¦¥­­ë¥ bat. ¯¥à¥¤ ¢ âì ®è¨¡ªã ®¡à â­® ¢ ¢ë§ë¢ î騩 bat
xor a
;R10
push af
CALL Restore_Screen
pop af
;R10
xor a ;!FIXIT
ret
; [ ] 11/12/23 ¢«®¦¥­­ë¥ bat
.new_process:
ld de,work_buffer
ld de,work_buffer2
call copy_string
;
ld hl,.shell
ld de,struct_input_line+5
call copy_string
;
ld hl,work_buffer
ld hl,work_buffer2
ld de,struct_input_line+5 + .shell.size - 1
call copy_string
;
@ -127,21 +140,27 @@ BATCH: push hl ;
; ld (.shell),a
;
ld hl,struct_input_line+5
ld bc,Dss.Exec;.Here
rst ToDSS
ld bc,Dss.Exec
RST ToDSS
;!TODO ¢«®¦¥­­ë¥ bat. ¯¥à¥¤ ¢ âì ®è¨¡ªã ®¡à â­® ¢ ¢ë§ë¢ î騩 bat
xor a
ret
;
; PUSH AF
; LD A
ret nc
CP DSS_Error.sys.FILE_NOT_FOUND
jp z,A83DD ; ®è¨¡ª  ®âªà. ä ©«  (cpp.asm)
ret
;rst ToDSS
;
; ret nc
; CP DSS_Error.sys.FILE_NOT_FOUND
; ret nz
; jp z,A83DD ; ®è¨¡ª  ®âªà. ä ©«  (cpp.asm)
; ret
;.shell: DB '?:\SYSTEM.EXE /C ',0
.shell: DB 'SYSTEM.EXE /C ',0
.shell.size EQU $ - .shell
;
;!TODO
.ErrorEnv: DB 'ERRORLEVEL='
.ErrorEnv.Code: DB 'xxx',0
.ErrorEnv.Size EQU $ - .ErrorEnv
@ -164,11 +183,9 @@ NEWLINE:
ld a,l
ld (struct_input_line+4),a ; ¤«¨­  áâப¨
PUSH HL ; [ ] 11/12/23 ¤«ï ¡ « ­á  á⥪  ¢ cmd_break
; [ ] 11/12/23 ¢«®¦¥­­ë¥ bat
; ld a,#FF
; ld (RUN_BAT.level),a
;
call CMDMODE ; â¥áâ ­  bat-ª®¬ ­¤ë "rem","pause"
; ^^^^^^^
;!TODO ¢«®¦¥­­ë¥ bat. ¯¥à¥¤ ¢ âì ®è¨¡ªã ®¡à â­® ¢ ¢ë§ë¢ î騩 bat
POP HL ; [ ] 11/12/23 ¤«ï ¡ « ­á  á⥪  ¢ cmd_break
.exit: ld a,(BAT_FM) ; ¤¥áªà. bat-ä ©« 
ld c,Dss.Close ; § ªàëâì ä ©«
@ -190,11 +207,9 @@ NEWLINE:
sbc hl,de
ld a,l
ld (struct_input_line+4),a ; ¤«¨­  áâப¨
; [ ] 11/12/23 ¢«®¦¥­­ë¥ bat
; ld a,#FF
; ld (RUN_BAT.level),a
;
call CMDMODE ; â¥áâ ­  bat-ª®¬ ­¤ë "rem","pause"
; ^^^^^^^
;!TODO ¢«®¦¥­­ë¥ bat. ¯¥à¥¤ ¢ âì ®è¨¡ªã ®¡à â­® ¢ ¢ë§ë¢ î騩 bat
ld de,struct_input_line+5
pop hl
jr .loop
@ -306,7 +321,7 @@ CMDMODE:
pop bc ; b=¤«¨­  áâப¨
ld a,(width_inpline) ; è¨à¨­  ¯®«ï ¢¢®¤  (76..48)
sub b
ei
;ei
ret z ; ¯à ¢ë© ªà © íªà ­ 
jr c,.A8250; ; áâப  ¡®«ìè¥ è¨à¨­ë íªà ­ 
; § ¯®«­¨âì áâப㠤® ª®­æ  íªà ­ 
@ -315,7 +330,7 @@ CMDMODE:
ld a," " ; ᨬ¢®«
ld c,BIOS.LP_PRINT_SYM ; ¢ë¢®¤ ᨬ¢®«  ¡¥§  âਡãâ 
RST ToBIOS
ei
;ei
;!TEST
.A8250: call newline
;
@ -365,17 +380,9 @@ CMDMODE:
ld hl,BATLIST ; ª®¬ ­¤ë "pause","rem" + dos-ª®¬ ­¤ë
; de=struct_input_line+5, c=¤«¨­  áâப¨ (¡¥§ ª®­æ. ¯à®¡¥«®¢)
; ¢ë¯®«­. ª®¬ ­¤ã ¨«¨ § ¯ãáâ¨âì ä ©«
; [ ] 11/12/23 ¢«®¦¥­­ë¥ bat
; ld a,#FF
; ld (RUN_BAT.level),a
;
jp COMP005.start
; ¤®«¦­  ã¡à âì ª®­æ. ¯à®¡¥«ë ¨ ãáâ. ¤«¨­ã áâப¨, ¥á«¨ ã१ « áì
EVALCMD: xor a
ld hl,struct_input_line+4 ;!HARDCODE
@ -408,7 +415,9 @@ EVALSTR: ld a,(hl)
.VARL1: ldi
or a
jr nz,EVALSTR
ld bc,0
; A=0
ld b,a
ld c,a
ld (.TVAR_PNT),bc
ret
;

View File

@ -26,7 +26,7 @@ A877B: ld c,Dss.ChDir ; ᬥ
;call c,print_err_message
jp c,print_err_message ; ¢ë¢®¤ á®®¡é¥­¨ï
; call newline
jp save_disk_path ; á®åà. ⥪. ¤¨áª ¨ ¯ãâì
jp Get_Path ; á®åà. ⥪. ¤¨áª ¨ ¯ãâì
; ; ¢ë¢®¤ á¨áâ. ¯ã⨠­  íªà ­
; ld c,8Eh ; ã§­ âì ¯®«®¦. ªãàá®à 
; RST ToBIOS

View File

@ -58,19 +58,19 @@ COMP005: ex af,af'
cp "z"+1
jr nc,NOUP
and #5F ; a..z -> A..Z
;!FIXIT âãâ ¢®ááâ ­ ¢«¨¢ ¥âáï ¤¨à¥ªâ®à¨ï ¨ ¬®£ãâ ¡ëâì £«îª¨ ­  ­®¢®¬ ï¤à¥
NOUP: sub "A" ; ­®¬¥à ¤¨áª 
ld c,Dss.ChDisk ; ᬥ­¨âì ⥪. ¤¨áª
RST ToDSS
jp c,print_err_message ; ¢ë¢®¤ á®®¡é¥­¨ï
;!FIXIT âãâ ¢®ááâ ­ ¢«¨¢ ¥âáï ¤¨à¥ªâ®à¨ï ¨ ¬®£ãâ ¡ëâì £«îª¨ ­  ­®¢®¬ ï¤à¥
;!TODO ¤®áâ ¢ âì system_path ®â¤¥«ì­® ¤«ï ª ¦¤®£® ¤¨áª  (¨«¨ ¢ ï¤à¥ ᤥ« âì?)
; â¥áâ ­  áãé¥á⢮¢ ­¨¥ ¯ ¯ª¨ ­  楫¥¢®¬ ¤¨áª¥
IFDEF MANY_SYS_PATHES
ld hl,system_path ; ¡ãä¥à á¨áâ. ¯ãâ¨
ld c,Dss.ChDir ; ãáâ. ⥪. ¯ãâì
RST ToDSS
jp nc,save_disk_path ; Ok
jp nc,Get_Path ; Ok
ENDIF
;
@ -87,7 +87,7 @@ NOUP: sub "A" ;
jp c,print_err_message ; ¢ë¢®¤ á®®¡é¥­¨ï
ENDIF
;
jp save_disk_path ; Ok
jp Get_Path ; Ok
; § ¤ ­ ­¥ ¤¨áª
RUN_EXT: ex de,hl ; ¢®ááâ.  ¤à¥á ­ ç «  áâப¨
@ -185,7 +185,7 @@ Ret_New_Line:
RESTORE_ALL:
;[x] 01/11/23 ;!TEST
CALL save_disk_path
CALL Get_Path
;
LD A,(screen_path)
SUB 'A'

View File

@ -23,8 +23,11 @@ MAIN_MSG:
.CRLF EQU .CRLF_
;
!txtCounter DEFL 0
;
.TABLE: : db 0
; ; ­¥ ᤢ¨£ âì____
.TABLE: : db 0; |
stN .CRLF_ : db CR,LF,0; |
;________________/
;
stN .DIR_1_ : 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
@ -48,7 +51,6 @@ MAIN_MSG:
db "MD | MKDIR TIME ECHO EXIT ",CR,LF
db "RD | RMDIR DATE CLS REBOOT ",CR,LF,LF,0
stN .CALC_ : db "Calculating free space...",CR,0
stN .CRLF_ : db CR,LF,0
; ;R11
db 0
DZ "Unknown command"

View File

@ -101,7 +101,7 @@ shell:
ld a,(ix-1)
ld (cmd_exit.TASKX),a
push ix
call save_disk_path ; á®åà. ⥪. ¤¨áª ¨ ¯ãâì
call Get_Path ; á®åà. ⥪. ¤¨áª ¨ ¯ãâì
pop hl ; hl=ix
;
; ’¥áâ ­  ®¯æ¨¨ § ¯ã᪠ á ¬®£® 襫« 
@ -118,13 +118,11 @@ shell:
jr z,back_to_parent_process
; ¢¢®¤¨«¨áì ¤®¯®«­. ¯ à ¬¥âàë
PUSH HL ; [ ] 11/12/23 ¤«ï ¡ « ­á  á⥪  ¢ cmd_break
; [ ] 11/12/23 ¢«®¦¥­­ë¥ bat
; xor a
; ld (RUN_BAT.level),a
;
call CMDMODE ; (batch.asm) ¢ë¯®«­. ª®¬ ­¤ã ¨«¨ § ¯ãáâ¨âì ä ©«
; ^^^^^^^
;!TODO ¢«®¦¥­­ë¥ bat. ¯¥à¥¤ ¢ âì ®è¨¡ªã ®¡à â­® ¢ ¢ë§ë¢ î騩 bat
POP HL ; [ ] 11/12/23 ¤«ï ¡ « ­á  á⥪  ¢ cmd_break
call save_disk_path ; ã§­ âì ¨ á®åà. ⥪. ¤¨áª ¨ ¯ãâì
call Get_Path ; ã§­ âì ¨ á®åà. ⥪. ¤¨áª ¨ ¯ãâì
;
; ‚¥à­ãâìáï ¢ த¨â. ¯à®æ¥áá
back_to_parent_process:
@ -160,9 +158,12 @@ option_c:
;ld hl,work_buffer+256;;
ld hl,struct_input_line+5 ; ¨¬ï bat-ä ©« 
call BATCH ; ®¡à ¡®âª  bat-ä ©«  (batch.asm)
PUSH AF ; [ ] 11/12/23 ¢«®¦¥­­ë¥ bat, á®å࠭塞 ª®¤ ¢®§¢à â 
call save_disk_path ; ã§­ âì ¨ á®åà. ⥪. ¤¨áª ¨ ¯ãâì
POP AF ; [ ] 11/12/23 ¢«®¦¥­­ë¥ bat, á®å࠭塞 ª®¤ ¢®§¢à â 
;PUSH AF ; [ ] 11/12/23 ¢«®¦¥­­ë¥ bat, á®å࠭塞 ª®¤ ¢®§¢à â 
;call save_disk_path ; ã§­ âì ¨ á®åà. ⥪. ¤¨áª ¨ ¯ãâì
;POP AF ; [ ] 11/12/23 ¢«®¦¥­­ë¥ bat, á®å࠭塞 ª®¤ ¢®§¢à â 
;!TODO ¢«®¦¥­­ë¥ bat. ¯¥à¥¤ ¢ âì ®è¨¡ªã ®¡à â­® ¢ ¢ë§ë¢ î騩 bat
jr back_to_parent_process ; ¢¥à­ãâìáï ¢ த¨â. ¯à®æ¥áá
@ -187,7 +188,7 @@ run_shell:
run_shell_loop:
;call A82CC ; ã§­ âì ¨ ãáâ. ¯®«®¦. ªãàá®à 
; ¢ë¢¥á⨠⥪.á¨áâ. ¯ãâì ¨ ¢®©â¨ ¢ áâபã । ªâ¨à®¢ ­¨ï
call save_disk_path ; ã§­ âì ¨ á®åà. ⥪. ¤¨áª ¨ ¯ãâì
call Get_Path ; ã§­ âì ¨ á®åà. ⥪. ¤¨áª ¨ ¯ãâì
run_shell_loop1:
call input_line
call newline ; ­  ­®¢ãî áâபã
@ -317,13 +318,12 @@ setopt4: ld a,c
;!TODO ¯à®¢¥à¨âì 4 ­¨¦¥¨¤ã騥 ¯à®æ¥¤ãàë ª®£¤  ¢ DSS ¡ã¤ãâ ­®à¬ «ì­® ¯ã⨠§ ¯®¬¨­ âìáï
; ‘®åà ­¨âì ⥪. ¤¨áª ¨ ¯ãâì
;GETPATH:
save_disk_path:
Get_Path:
; ã§­ âì ⥪. ª â «®£
ld hl,system_path ; 256 ¡ãä¥à á¨áâ. ¯ãâ¨
ld c,Dss.CurDir
RST ToDSS
save_disk:
; ã§­ âì ⥪. ¤¨áª
.disk: ; ã§­ âì ⥪. ¤¨áª
ld c,Dss.CurDisk
RST ToDSS
add a,"A"
@ -336,7 +336,7 @@ restore_disk_path:
; ãáâ. ⥪. ¤¨áª
ld a,(screen_path) ; 33 áâப  íªà ­­®£® ¯ãâ¨
sub "A"
ld c,Dss.ChDir
ld c,Dss.ChDisk
RST ToDSS
;!FIXIT ã¡à âì «¨è­¨¥ ¢ë§®¢ë
@ -348,16 +348,19 @@ restore_path:
ret
; ­  ­®¢ãî áâபã ;!FIXIT ᤥ« âì ç¥à¥§ .PChars
newline: ld a,_cc.cr
ld c,Dss.PutChar
; newline: ld a,_cc.cr
; ld c,Dss.PutChar
; rst ToDSS
; ld a,_cc.lf
; ld c,Dss.PutChar
; jp ToDSS
newline: push hl
ld hl,MAIN_MSG.TABLE+1 ; "CR,LF,0"
ld c,Dss.PChars
rst ToDSS
ld a,_cc.lf
ld c,Dss.PutChar
jp ToDSS
pop hl
ret
; ‘à ¢­¥­¨¥ áâப
; in: de=string1

View File

@ -1 +1 @@
281
285