mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 09:21:47 +03:00
594 lines
14 KiB
NASM
594 lines
14 KiB
NASM
; <20>®á«¥¤ïï । ªæ¨ï: 22.10.2006
|
||
;
|
||
|
||
|
||
; - ˆá¯à ¢«¥ ä¨à¬. ¡ £, ¯à¨ ª®â®à®¬ áâப ¢ bat-ä ©«¥, ¤«¨¥¥ è¨à¨ë
|
||
; íªà , ®¡à¥§ « áì ¯® è¨à¨¥ íªà ¨ ®áâ ⮪ áâப¨ ¥ ¢ë¢®¤¨«áï.
|
||
; - ˆá¯à ¢«¥ ä¨à¬. ¡ £, ¯à¨ ª®â®à®¬ ¢ ª®¬ ¤¥ "dir" áâப ¢ë¢®¤¨¬®£®
|
||
; ¯ã⨠¨¬¥« ¬ ªá. 15 ᨬ¢®«®¢.
|
||
; - <20>®ä¨ªá¥® ¥¢¥à®¥ ¨§¬¥¥¨¥ ¤¨áª /¯ã⨠¯®á«¥ ®è¨¡®ª ¢ë¯®«¥¨ï ª®¬ ¤.
|
||
; - „®¡ ¢«¥ ª®¬ ¤ "ECHO." ¤«ï ¢áâ ¢ª¨ ¯ãá⮩ áâப¨.
|
||
; - Š®¬ ¤ DIR ¢ë¢®¤¨â ¬¥âªã ¨ á¥à¨©ë© ®¬¥à ¤¨áª®¢.
|
||
;
|
||
;
|
||
|
||
; SYSTEM.EXE /S /P
|
||
;
|
||
; /P Primary command processor
|
||
; /S Secondary command processor
|
||
; /C Execute batch file
|
||
|
||
;=====================================================================[]
|
||
;Rev. Date Name Description
|
||
;---------------------------------------------------------------------[]
|
||
;R14 22-09-2023 BAO ˆá¯à ¢«¥ ¡ £ "File not found" ¢ ª®¬ ¤¥ DIR ¯ãá⮬ à §¤¥«¥
|
||
;R13 03-08-2023 BAO „®¡ ¢«¥ ¢ë¢®¤ ®¬¥à ¢¥àᨨ Š®á®«¨ ¤«ï ª®¬ ¤ë VERSION
|
||
;R12 23-07-2023 BAO „®¡ ¢«¥ ª®¬ ¤ REBOOT - ¯¥à¥§ £à㧪 á ¯®«®© ®ç¨á⪮© ¯ ¬ïâ¨
|
||
;R11 20-07-2023 BAO <09>®¯à ¢«¥ äãªæ¨ï LCPIR ¤«ï ª®à४⮣® ¢ë¡®à á®®¡é¥¨ï ®¡ ®è¨¡ª¥ ¯à¨ ®¬¥à¥ ®è¨¡ª¨ > § £®â®¢«¥ëå á®®¡é¥¨©
|
||
;R10 16-05-2023 BAO TE•T MODE AND TEXT ARE RESTORED AFTER RETURNING FROM THE APP
|
||
;R08 21-02-2003 DNS FIX BUG IN BAT-PARSER, IT SPLIT STRINGS WHEN LINE BEGAN AT #xx00 OFFSET
|
||
;R07 14-12-2002 DNS PARSING BATCH LINE
|
||
;R06 12-12-2002 DNS ADD %0, %1, %2 ...
|
||
;R05 11-12-2002 DNS IMPLEMENTED %VAR%
|
||
;R04 11-12-2002 DNS ADD 'EVALSTRING' ROUTINE
|
||
;R03 11-12-2002 DNS NEW VERSION
|
||
;R02 19-11-2002 DNS CORRECT SOME ERROR MESSAGES
|
||
;R01 19-11-2002 DNS ADD ENVIRONMENT %VARIABLE% IN ECHO
|
||
;=====================================================================[]
|
||
DEFINE SHELL_COMPILATION 1
|
||
DEFINE App_EXE_Version 1
|
||
|
||
includelua 'Shared_includes/lua/Functions.lua'
|
||
include 'shared_includes/constants/bios_equ.inc'
|
||
include 'shared_includes/constants/dss_equ.inc'
|
||
include 'SHELL/version.inc'
|
||
include 'shared_includes/structures/FileSystem.inc'
|
||
include 'SHELL/structures.inc'
|
||
;
|
||
; Program EQU section
|
||
;---------------------------------------------------------------------[]
|
||
CR EQU 13
|
||
LF EQU 10
|
||
true EQU 1
|
||
false EQU 0
|
||
|
||
Loader_length EQU 0
|
||
code_addr EQU shell
|
||
program_start EQU shell
|
||
stack_point EQU #C000
|
||
stack_size EQU #100
|
||
org_addr EQU #8000 + CLP_Buffer
|
||
;---------------------------------------------------------------------[]
|
||
;
|
||
|
||
|
||
|
||
;work_buffer1 equ entry - (256+128) ; 2-© à ¡. ¡ãä¥à ; 128 bytes
|
||
;work_buffer2 equ entry - 256 ; 3-© à ¡. ¡ãä¥à ; 256 bytes
|
||
|
||
|
||
|
||
|
||
; org 7F00h
|
||
|
||
; db "EX" ; exe ID
|
||
; db 45h ; exe ⨯
|
||
; db 0 ; exe ¢¥àá¨ï
|
||
; dw 512 ; 512, ¬«. ᬥé. ª®¤
|
||
; dw 0 ; áâ. ᬥé. ª®¤
|
||
; dw 0 ; end-beg, ¯¥à¢¨çë© § £àã§ç¨ª
|
||
; dw 0,0,0 ; १¥à¢
|
||
; dw entry ; ¤à¥á § £à㧪¨ ª®¤
|
||
; dw shell ; ¤à¥á ¯¥à¥¤ ç¨ ã¯à ¢«¥¨ï
|
||
; dw #BFFE ; ¤à¥á á⥪
|
||
; ds 490 ; १¥à¢
|
||
|
||
|
||
; ‚¥àá¨ï/Œ®¤¨ä¨ª æ¨ï/<2F>¨«¤ 襫«
|
||
;entry: db "0.01.003" ;!FIXIT ¯¥à¥¥á⨠¢ ª®¥æ
|
||
|
||
INCLUDE 'Shared_Includes/constants/EXE_Header.z80'
|
||
ORG org_addr
|
||
;==============================================================
|
||
; ’®çª ¢å®¤ ¢ ˜¥««
|
||
;==============================================================
|
||
shell: ld hl,Buffers
|
||
ld de,Buffers+1
|
||
ld (hl),0
|
||
ld bc,Struc_Buffers-1
|
||
ldir
|
||
;
|
||
ld hl,":A"
|
||
ld (Buffers.screen_path),hl
|
||
ld a,max_len_comline
|
||
ld (Buffers.input_line),a
|
||
;
|
||
; á®åà. ã஢¥ì ⥪. 襫«
|
||
ld a,(ix-1)
|
||
ld (cmd_exit.TASKX),a
|
||
push ix
|
||
call Get_Path ; á®åà. ⥪. ¤¨áª ¨ ¯ãâì
|
||
pop hl ; hl=ix
|
||
;
|
||
; ’¥áâ ®¯æ¨¨ § ¯ãáª á ¬®£® 襫«
|
||
call GET_CMD
|
||
ld a,(RUNMODE) ; ¡¨â-ä« £¨ ®¯æ¨©
|
||
bit 7,a ; "P" 7-© ¡¨â (¨¤¥â ¢ë§®¢ ¨§ boot-§ £àã§ç¨ª )
|
||
jr nz,FPRIMAR
|
||
bit 5,a ; "S" 5-© ¡¨â (§ ¯ã᪠2-© ª®¯¨¨ 襫« )
|
||
;jp nz,option_s
|
||
jr nz,run_shell
|
||
bit 4,a ; "C" 4-© ¡¨â (¢ë¯®«¨âì bat-ä ©«)
|
||
jr nz,option_c
|
||
bit 6,a ; 6-© ¡¨â (¢¢®¤¨«¨áì ¤®¯®«. ¯ à ¬¥âàë)
|
||
jr z,back_to_parent_process
|
||
; ¢¢®¤¨«¨áì ¤®¯®«. ¯ à ¬¥âàë
|
||
call CMDMODE ; (batch.asm) ¢ë¯®«. ª®¬ ¤ã ¨«¨ § ¯ãáâ¨âì ä ©«
|
||
; ^^^^^^^
|
||
;!TODO ¢«®¦¥ë¥ bat. ¯¥à¥¤ ¢ âì ®è¨¡ªã ®¡à â® ¢ ¢ë§ë¢ î騩 bat
|
||
call Get_Path ; ã§ âì ¨ á®åà. ⥪. ¤¨áª ¨ ¯ãâì
|
||
;
|
||
; ‚¥àãâìáï ¢ த¨â. ¯à®æ¥áá
|
||
back_to_parent_process:
|
||
; [x] 11/12/23 ¢«®¦¥ë¥ bat
|
||
and a
|
||
.saveA: LD B,0
|
||
JR NC,.exit
|
||
LD B,A
|
||
.exit: ld c,Dss.Exit
|
||
;ld bc,0*256 + Dss.Exit
|
||
;
|
||
JP ToDSS
|
||
|
||
|
||
|
||
;---------------------------------------------------------------
|
||
; ޝæ¨ï "S". ‡ ¯ã᪠2-© ª®¯¨¨ 襫« . <20>¥§ ®âà ¡®âª¨ AUTOEXEC.BAT.
|
||
; Œ®¦® ¢ë©â¨ ¯® EXIT.
|
||
;---------------------------------------------------------------
|
||
; option_s:
|
||
; call cmd_version ; ¢¥àá¨ï „Ž‘
|
||
; jr run_shell
|
||
|
||
|
||
|
||
;---------------------------------------------------------------
|
||
; ޝæ¨ï "C". ‚믮«¨âì BAT-ä ©«.
|
||
; <20>®á«¥ ¢ë¯®«¥¨ï ä ©« , ¢®§¢à é ¥âáï ¢ த¨â¥«ì᪨© ¯à®æ¥áá.
|
||
;---------------------------------------------------------------
|
||
option_c:
|
||
;ld hl,T96AE ; ¨¬ï bat-ä ©« , 256 ¡ãä¥à (inline.asm)
|
||
;ld hl,Buffers.work.buffer+256;;
|
||
ld hl,Buffers.input_line.Path ; ¨¬ï bat-ä ©«
|
||
call BATCH ; ®¡à ¡®âª bat-ä ©« (batch.asm)
|
||
;!TODO ¢«®¦¥ë¥ bat. ¯¥à¥¤ ¢ âì ®è¨¡ªã ®¡à â® ¢ ¢ë§ë¢ î騩 bat
|
||
jr back_to_parent_process.saveA ; ¢¥àãâìáï ¢ த¨â. ¯à®æ¥áá
|
||
|
||
|
||
|
||
;---------------------------------------------------------------
|
||
; ޝæ¨ï "P". ‡ ¯ã᪠ª®¯¨¨ 襫« . ‘ ®âà ¡®âª®© AUTOEXEC.BAT.
|
||
; ‘ ¥© ¨¤¥â ¢ë§®¢ 襫« ¨§ boot-§ £àã§ç¨ª .
|
||
; Œ®¦® ¢ë©â¨ ¯® EXIT, ® ¥ ¨§ § ¯ã饮£® boot-§ £àã§ç¨ª®¬.
|
||
;---------------------------------------------------------------
|
||
FPRIMAR:
|
||
halt
|
||
ld c,Dss.CTRLKey ; ã§ âì á®áâ. ª« ¢ë ¢ ¤ ë© ¬®¬¥â
|
||
RST ToDSS
|
||
ld hl,autoexec_fname ; ¨¬ï ä ©« "system.bat"
|
||
ld a,b
|
||
and #C0 ; ¦ âë Shift-ë ?
|
||
call z,BATCH ; ¥â, ¢ë¯®«¨âì bat-ä ©« (batch.asm)
|
||
;==============================================================
|
||
; ‡ ¯ã᪠ª®¯¨¨ 襫«
|
||
;==============================================================
|
||
run_shell:
|
||
call newline
|
||
run_shell_loop:
|
||
;call A82CC ; ã§ âì ¨ ãáâ. ¯®«®¦. ªãàá®à
|
||
; ¢ë¢¥á⨠⥪.á¨áâ. ¯ãâì ¨ ¢®©â¨ ¢ áâபã । ªâ¨à®¢ ¨ï
|
||
call Get_Path ; ã§ âì ¨ á®åà. ⥪. ¤¨áª ¨ ¯ãâì
|
||
run_shell_loop1:
|
||
call input_line
|
||
call newline ; ®¢ãî áâபã
|
||
ld a,(Buffers.input_line.Symbols_Num) ; ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
|
||
or a
|
||
jr z,run_shell_loop1 ; ¯ãáâ ï
|
||
; <20> àᨣ ¨ ¢ë¯®«¥¨¥ ª®¬ ¤
|
||
call COMP
|
||
jr run_shell_loop ; § ¤ ¢ 横«
|
||
|
||
|
||
|
||
|
||
|
||
|
||
; ’¥áâ ®¯æ¨© 襫«
|
||
; ¢å®¤: hl= ¤à¥á ª®¬-áâப¨
|
||
GET_CMD:
|
||
ld e,(hl) ; ¤«¨ áâப¨
|
||
inc hl
|
||
ld d,0
|
||
ex de,hl ; hl=¤«¨ áâப¨, de=áâப
|
||
add hl,de
|
||
; ã¡à âì ª®æ¥¢ë¥ ¯à®¡¥«ë
|
||
.loop1: dec hl
|
||
ld a,(hl)
|
||
cp " "
|
||
jr z,.loop1
|
||
inc hl
|
||
ld (hl),0 ; ¢ ª®¥æ ª®¬-áâப¨
|
||
.NEXTPRM:
|
||
ex de,hl ; hl=⥪. ¤à¥á ¢ áâப¥
|
||
.SKIPSP:
|
||
ld a,(hl)
|
||
inc hl
|
||
cp " "
|
||
ret c
|
||
jr z,.SKIPSP
|
||
dec hl
|
||
cp '/' ; ®¯æ¨ï
|
||
jr nz,.PROCESS
|
||
ld de,Buffers.work.buffer1 ; 128 ¡ãä¥à ¤«ï ¯ à ¬¥âà
|
||
ld c,Dss.GSwitch ; ¢ë¤¥«. ¯ à ¬¥âà ª®¬-áâப¨
|
||
RST ToDSS
|
||
push af
|
||
ex de,hl
|
||
ld hl,Buffers.work.buffer1 ; 128 ¡ãä¥à ¤«ï ¯ à ¬¥âà
|
||
inc hl
|
||
call set_option_flag ; ãáâ. ¡¨âë ä« £®¢
|
||
pop af
|
||
jr nc,.NEXTPRM
|
||
ret
|
||
; ãáâ. ¡¨â-ä« £
|
||
.PROCESS:
|
||
ld a,(RUNMODE)
|
||
set 6,a ; 6-© ¡¨â (¢¢®¤¨«¨áì ¤®¯®«. ¯ à ¬¥âàë) ;!HARDCODE
|
||
ld (RUNMODE),a
|
||
; ᪮¯¨à. ¯ à ¬¥âà ¨§ ª®¬-áâப¨
|
||
; ¢ ¡ãä¥à áâப¨ । ªâ¨à®¢ ¨ï
|
||
;copy_to_input_line:
|
||
ld iy,Buffers.input_line ; áâàãªâãà ¡ãä¥à ~input line~
|
||
push hl
|
||
call clear_inpline ; ®¡ã«¨âì áâàãªâãàã "input line"
|
||
pop de ; de=墮áâ áâப¨
|
||
.loop: ld hl,Buffers.input_line ; áâàãªâãà ¡ãä¥à ~input line~
|
||
ld a,(iy + Input_Line.Cur_X) ; X ⥪. ¯®«®¦. ªãàá®à ¢ áâப¥
|
||
add a,(iy + Input_Line.Left_Shift)
|
||
add a,l
|
||
ld l,a
|
||
jr nc,1F
|
||
inc h
|
||
1: inc hl
|
||
inc hl
|
||
inc hl
|
||
inc hl
|
||
inc hl
|
||
ld a,(de) ; ᨬ¢®« ¨§ áâப¨
|
||
ld (hl),a
|
||
or a
|
||
ret z ; ª®¥æ áâப¨
|
||
inc (iy + Input_Line.Symbols_Num) ; ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
|
||
inc (iy + Input_Line.Cur_X) ; X ⥪. ¯®«®¦. ªãàá®à ¢ áâப¥
|
||
ld a,(width_inpline) ; è¨à¨ ¯®«ï ¢¢®¤
|
||
cp (iy + Input_Line.Cur_X) ; X ⥪. ¯®«®¦. ªãàá®à ¢ ¯à¥¤¥« å áâப¨
|
||
jr nz,2F
|
||
; ªãàá®à § ¯à ¢ë¬ ªà ¥¬ ¯®«ï ¢¢®¤
|
||
inc (iy + Input_Line.Left_Shift) ; ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||
dec (iy + Input_Line.Cur_X) ; X ⥪. ¯®«®¦. ªãàá®à ¢ ¯à¥¤¥« å áâப¨
|
||
2: ld a,(de) ; ᨬ¢®« ¨§ áâப¨
|
||
inc de ; ¯à®¤¢. ¯®â®ª
|
||
cp " "
|
||
jr nc,.loop
|
||
ret
|
||
|
||
; ’¥áâ ®¯æ¨¨ 襫« ¨ ãáâ. ¡¨â-ä« £®¢
|
||
; ¢å®¤: hl=áâப ®¯æ¨©
|
||
set_option_flag:
|
||
ld a,(RUNMODE) ; ï祩ª ¡¨â-ä« £®¢
|
||
ld c,a
|
||
ld a,(hl)
|
||
call COMPARE.cmp_AZ
|
||
.setopt1: cp "P" ; § ¯ã᪠襫« á ®âà ¡. autoexec.bat
|
||
jr nz,.setopt2
|
||
set 7,c
|
||
jr .setopt4
|
||
;
|
||
.setopt2: cp "S" ; § ¯ã᪠2-© ª®¯¨¨ 襫« (¡¥§ ®âà ¡. autoexec.bat)
|
||
jr nz,.setopt3
|
||
set 5,c
|
||
jr .setopt4
|
||
;
|
||
.setopt3: cp "C" ; ¢ë¯®«. bat-ä ©« ¨ ¢¥àãâìáï ¢ த¨â. ¯à®æ¥áá
|
||
ret nz
|
||
set 4,c
|
||
.setopt4: ld a,c
|
||
ld (RUNMODE),a
|
||
ret
|
||
|
||
|
||
; ‘®åà ¨âì ⥪. ¤¨áª ¨ ¯ãâì
|
||
;GETPATH:
|
||
Get_Path:
|
||
; ã§ âì ⥪. ª â «®£
|
||
ld hl,Buffers.sys_path ; 256 ¡ãä¥à á¨áâ. ¯ãâ¨
|
||
ld c,Dss.CurDir
|
||
RST ToDSS
|
||
.disk: ; ã§ âì ⥪. ¤¨áª
|
||
ld c,Dss.CurDisk
|
||
RST ToDSS
|
||
add a,"A"
|
||
ld (Buffers.screen_path),a ; 33 áâப íªà ®£® ¯ãâ¨
|
||
ret
|
||
|
||
|
||
; ‚®ááâ ®¢¨âì ⥪. ¤¨áª ¨ ¯ãâì (¯®á«¥ ®è¨¡ª¨)
|
||
IFUSED restore_disk_path
|
||
ASSERT restore_path
|
||
restore_disk_path:
|
||
; ãáâ. ⥪. ¤¨áª
|
||
ld a,(Buffers.screen_path) ; 33 áâப íªà ®£® ¯ãâ¨
|
||
sub "A"
|
||
ld c,Dss.ChDisk
|
||
RST ToDSS
|
||
ENDIF
|
||
|
||
IFUSED restore_path
|
||
restore_path:
|
||
; ãáâ. ⥪. ª â «®£
|
||
ld hl,Buffers.sys_path ; 256 ¡ãä¥à á¨áâ. ¯ãâ¨
|
||
ld c,Dss.ChDir
|
||
JP ToDSS
|
||
ret
|
||
ENDIF
|
||
;
|
||
|
||
|
||
newline: push hl
|
||
ld hl,MAIN_MSG.TABLE+1 ; "CR,LF,0"
|
||
ld c,Dss.PChars
|
||
rst ToDSS
|
||
pop hl
|
||
ret
|
||
|
||
; ‘à ¢¥¨¥ áâப (€£«¨©áª¨©)
|
||
; in: de=string1
|
||
; hl=string2
|
||
; b=¤«¨ áâப¨
|
||
COMPARE: ld a,(de)
|
||
call .cmp_AZ
|
||
.next: cp (hl)
|
||
ret nz
|
||
inc hl
|
||
inc de
|
||
djnz COMPARE
|
||
ret
|
||
;
|
||
.cmp_AZ: cp "a"
|
||
ret c
|
||
cp "z"+1
|
||
ret nc
|
||
and %0101'1111 ; a..z -> A..Z
|
||
ret
|
||
|
||
|
||
; ‘ª®¯¨à. áâபã (á ã«¥¬), ¬ ªá. 15 ᨬ¢®«®¢
|
||
; (hl) -> (de)
|
||
ncopy_string:
|
||
ld bc,15 ; ¬ ªá. ¤«¨ áâப¨
|
||
.start: ld a,(hl)
|
||
ldi
|
||
ret po
|
||
or a
|
||
jr nz,.start
|
||
ret
|
||
|
||
; ‘ª®¯¨à. áâபã (á ã«¥¬)
|
||
; (hl) -> (de)
|
||
copy_string:
|
||
ld a,(hl)
|
||
ldi
|
||
or a
|
||
jr nz,copy_string
|
||
ret
|
||
|
||
|
||
|
||
|
||
|
||
|
||
; „¥áïâ¨çë© ¢ë¢®¤ ¢ ¡ãä¥à
|
||
; ¢å®¤: a=ç¨á«®
|
||
; hl=¡ãä¥à
|
||
PUTB: ld c,2Fh
|
||
.loop: inc c
|
||
sub 10
|
||
jr nc,.loop
|
||
add a,10
|
||
add a,"0"
|
||
push af
|
||
ld a,c
|
||
ld (hl),a
|
||
inc hl
|
||
pop af
|
||
ld (hl),a
|
||
inc hl
|
||
ret
|
||
|
||
|
||
|
||
STR2DEC:
|
||
ld hl,0
|
||
.loop: ld a,(de)
|
||
inc de
|
||
or a
|
||
ret z
|
||
cp "." ; à §¤¥«. ¤ âë
|
||
ret z
|
||
cp "-" ; à §¤¥«. ¤ âë
|
||
ret z
|
||
cp ":" ; à §¤¥«. ¢à¥¬¥¨
|
||
ret z
|
||
ld b,h
|
||
ld c,l
|
||
add hl,hl
|
||
add hl,hl
|
||
add hl,bc
|
||
add hl,hl
|
||
call .ATODEC
|
||
ret c
|
||
add a,l
|
||
ld l,a
|
||
jr nc,.loop
|
||
inc h
|
||
jr .loop
|
||
.ATODEC:; char -> int
|
||
cp "0"
|
||
ret c
|
||
cp "9"+1
|
||
ccf
|
||
ret c
|
||
sub "0"
|
||
ret
|
||
|
||
;!FIXIT ¥áâì ¤ã¡« hex2dec_ascii_16bit
|
||
PDIGIT: ld de,10000
|
||
ld a,#C8 ; ret z
|
||
ld (.RET_Z),a
|
||
call .DIG
|
||
ld de,1000
|
||
call .DIG
|
||
ld de,100
|
||
call .DIG
|
||
ld de,10
|
||
call .DIG
|
||
ld a,l
|
||
add a,"0"
|
||
;!TEST ¯®ª ¥ âॡã¥âáï ¯¥à¥¤ ¢ âì á«¥¤ãî騩 IX ¤ «ìè¥
|
||
;ld (ix+0),a
|
||
;inc ix
|
||
;ld (ix+0),0
|
||
LD (IX+0),A
|
||
LD (IX+1),0
|
||
;
|
||
ret
|
||
.DIG: xor a
|
||
.loop: inc a
|
||
sbc hl,de
|
||
jr nc,.loop
|
||
add hl,de
|
||
dec a
|
||
.RET_Z: ret z
|
||
add a,"0"
|
||
ld (ix+0),a
|
||
inc ix
|
||
xor a ; nop
|
||
ld (.RET_Z),a
|
||
ret
|
||
|
||
Restore_Screen:
|
||
PUSH AF
|
||
LD C,Dss.GetVMod
|
||
RST ToDSS
|
||
CP #80
|
||
JR C,.exit
|
||
LD BC,1 * 256 + Dss.SetVMod
|
||
LD A,Dss.SetVMod.txt80x32
|
||
RST ToDSS
|
||
.exit: POP AF
|
||
RET
|
||
|
||
|
||
|
||
; 梥â íªà 襫«
|
||
color_screen:
|
||
db 07h
|
||
|
||
|
||
; ˆ¬ï ä ©« "autoexec.bat"
|
||
autoexec_fname:
|
||
db "system.bat",0
|
||
|
||
|
||
; ¡¨â-ä« £¨ ®¯æ¨© á ¬®£® 襫«
|
||
RUNMODE: db 0
|
||
|
||
|
||
|
||
; ¡ãä¥à à áè. ä ©« á ®£à ¨ç¨â¥«¥¬ 0
|
||
EXTBF: BLOCK 4,0
|
||
|
||
BATBF: db "BAT" ; à áè. bat-ä ©«
|
||
T8C21: db "ON",0
|
||
T8C24: db "OFF",0
|
||
|
||
|
||
include 'edline.asm' ; áâப । ªâ¨à®¢ ¨ï
|
||
include 'batch.asm' ; ¯ àᨣ bat-ä ©«®¢
|
||
include 'exec.asm' ; ¢ë¯®«. ¢¢¥¤. ª®¬ ¤ á ª®á®«¨
|
||
include 'procedures/print.asm' ; äãªæ¨¨ ¢ë¢®¤ á®®¡é¥¨©
|
||
include '../Shared_includes/constants/dss_errors.z80' ; á®®¡é¥¨ï ®¡ ®è¨¡ª å
|
||
include 'messages/main_txt.asm' ; á®®¡é¥¨ï
|
||
include 'procedures/parsers.asm' ; äãªæ¨¨ ¯à®ç¥áë¢ ¨ï ¨ ¢ë¡®à
|
||
include 'procedures/math.asm' ; äãªæ¨¨ ¬ ⥬ â¨ç¥áª¨¥
|
||
include 'procedures/shared.asm' ; äãªæ¨¨ à §ë¥
|
||
;
|
||
include 'Commands/exit.asm' ; ¢ë室 ¢ த¨â. ¯à®æ¥áá
|
||
include 'Commands/break.asm' ; ¢ë室 ¨§ ¯ àá¥à bat
|
||
include 'Commands/pause.asm' ; ¯ ã§
|
||
include 'Commands/rem.asm' ; ª®¬¬¥â ਩
|
||
include 'Commands/ver.asm' ; ¢ë¢®¤ ¢¥àᨨ „Ž‘
|
||
include 'Commands/cls.asm' ; ®ç¨á⪠íªà
|
||
include 'Commands/date.asm' ; ¢ë¢®¤ ¨«¨ ãáâ ®¢ª ¤ âë/¢à¥¬¥¨
|
||
include 'Commands/dir.asm' ; ¢ë¢®¤ ᯨ᪠¤¨à¥ªâ®à¨¨
|
||
include 'Commands/info.asm' ; ¢ë¢®¤ ¨ä®à¬ 樨 ® ¤¨áª å
|
||
include 'Commands/chdir.asm' ; ᬥ ⥪. ª â «®£
|
||
include 'Commands/mkdir.asm' ; á®§¤ ¨¥ ª â «®£
|
||
include 'Commands/rmdir.asm' ; 㤠«¥¨¥ ª â «®£
|
||
include 'Commands/del.asm' ; 㤠«¥¨¥ ä ©«
|
||
include 'Commands/ren.asm' ; ¯¥à¥¨¬¥®¢ ¨¥ ä ©« ¨«¨ ª â «®£
|
||
include 'Commands/echo.asm' ; íå®-०¨¬
|
||
include 'Commands/help.asm' ; ¢ë¢®¤ íªà ¯®¬®é¨
|
||
include 'Commands/path.asm' ; § ¤ âì á¨áâ. ¯ãâì
|
||
include 'Commands/set.asm' ; § ¤ âì ¯¥à¥¬¥ãî ®ªà㦥¨ï
|
||
include 'Commands/reboot.asm' ; á®äâ à¥á¥â
|
||
;
|
||
DISPLAY "Empty space for buffers from ",/H,$
|
||
DISPLAY "Free space from ",/H,$ + Struc_Buffers
|
||
assert ($ + Struc_Buffers) < (stack_point - stack_size), "Buffers can leack to stack!"
|
||
|
||
Buffers Struc_Buffers = $
|
||
|
||
; 5 0
|
||
; íªà ë© ¯ãâì
|
||
;screen_path:
|
||
; db "A:"
|
||
; BLOCK max_screen_path+1,0 ; 32+1
|
||
; 6 0
|
||
; á¨áâ¥¬ë© ¯ãâì
|
||
; system_path:
|
||
; BLOCK 256,0 ;!HARDCODE
|
||
; 7 0
|
||
; ‘âàãªâãà áâப¨ ¢¢®¤ ~input line~
|
||
; struct_input_line:
|
||
; db max_len_comline ;+0 254 ¬ ªá. ç¨á«® ¢¢®¤. ᨬ¢®«®¢
|
||
; db 0 ;+1 ä« £ ReadyString
|
||
; db 0 ;+2 X ⥪. ¯®«®¦. ªãàá®à ¢ ¯à¥¤¥« å áâப¨
|
||
; db 0 ;+3 X ᬥé. áâப¨ § «¥¢ë© ªà © (¢ ᨬ¢®« å)
|
||
; db 0 ;+4 ç¨á«® ¢¢¥¤¥ëå ᨬ¢®«®¢
|
||
; BLOCK max_len_comline+1,0 ;+5 áâப ¢¢®¤
|
||
|
||
; 8 0
|
||
; <20>ãä¥à ¨áâ®à¨¨
|
||
; history_buff:
|
||
; BLOCK history_size,0 ; 256
|
||
|
||
; 9 0
|
||
; <20> ¡®ç¨© ¡ãä¥à
|
||
; work_buffer:
|
||
; BLOCK 512,0
|
||
|
||
; work_buffer1 equ $ ; 2-© à ¡. ¡ãä¥à ; 128 bytes
|
||
; work_buffer2 equ work_buffer1+128 ; 3-© à ¡. ¡ãä¥à ; 256 bytes
|
||
;
|