mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 17:31:47 +03:00
SHELL: подвигал буферы; комманда DIR теперь работает с путями корректно
This commit is contained in:
parent
6088a447f7
commit
9ad718d6b3
@ -75,9 +75,9 @@ BATCH:
|
||||
;
|
||||
|
||||
push hl ; á®åà. ¨¬ï bat-ä ©«
|
||||
ld de,work_buffer ; 512 ¬¥áâë© ¡ãä¥à
|
||||
ld de,Buffers.work.buffer ; 512 ¬¥áâë© ¡ãä¥à
|
||||
call copy_string ; ᪮¯¨à. áâபã (á ã«¥¬)
|
||||
ld hl,work_buffer ; 512 ¬¥áâë© ¡ãä¥à
|
||||
ld hl,Buffers.work.buffer ; 512 ¬¥áâë© ¡ãä¥à
|
||||
ld de,BAT_PRM_ARRAY ; â ¡«¨æ 㪠§ â. "ZERO".."NINE"
|
||||
ld b,BAT_PRM_ARRAY.TOTAL ; ç¨á«® á«®¢ "ZERO".."NINE"
|
||||
call MAKE_BATCH_PRM_ARRAY
|
||||
@ -123,15 +123,15 @@ BATCH:
|
||||
ret
|
||||
; [x] 11/12/23 ¢«®¦¥ë¥ bat
|
||||
.new_process:
|
||||
ld de,work_buffer2
|
||||
ld de,Buffers.work.buffer2
|
||||
call copy_string
|
||||
;
|
||||
ld hl,.shell
|
||||
ld de,struct_input_line+5
|
||||
ld de,Buffers.input_line.Path
|
||||
call copy_string
|
||||
;
|
||||
ld hl,work_buffer2
|
||||
ld de,struct_input_line+5 + .shell.size - 1
|
||||
ld hl,Buffers.work.buffer2
|
||||
ld de,Buffers.input_line.Path + .shell.size - 1
|
||||
call copy_string
|
||||
;
|
||||
; ld c,Dss.CurDisk
|
||||
@ -139,7 +139,7 @@ BATCH:
|
||||
; add a,'A'
|
||||
; ld (.shell),a
|
||||
;
|
||||
ld hl,struct_input_line+5
|
||||
ld hl,Buffers.input_line.Path
|
||||
ld bc,Dss.Exec
|
||||
RST ToDSS
|
||||
;!TODO ¢«®¦¥ë¥ bat. ¯¥à¥¤ ¢ âì ®è¨¡ªã ®¡à â® ¢ ¢ë§ë¢ î騩 bat
|
||||
@ -172,9 +172,9 @@ BATCH:
|
||||
NEWLINE:
|
||||
LD (cmd_break.sp),SP ; [x] 11/12/23 cmd_break
|
||||
;
|
||||
ld de,struct_input_line+5 ;!HARDCODE
|
||||
ld de,Buffers.input_line.Path
|
||||
.ADDBAT: push de
|
||||
call READBAT ; ¯à®ç¨â âì 128 ¡ ©â ¨§ ä ©« ¢ "work_buffer1"
|
||||
call READBAT ; ¯à®ç¨â âì 128 ¡ ©â ¨§ ä ©« ¢ "Buffers.work.buffer1"
|
||||
pop de
|
||||
;!TODO ¤®¤¥« âì âã⠮ଠ«ìãî ¯à®¢¥àªã ®¡«®¬ á ç⥨¥¬ ä ©« , ¢ë¢®¤¨âì ®è¨¡ªã
|
||||
jp c,cmd_break.exit
|
||||
@ -182,11 +182,11 @@ NEWLINE:
|
||||
jr nz,.BATLINE
|
||||
;
|
||||
ex de,hl
|
||||
ld de,struct_input_line+5
|
||||
ld de,Buffers.input_line.Path
|
||||
sbc hl,de
|
||||
jp z,cmd_break.exit; ;[x] <Vasil> ã¡à ¡ £ á ¥§ ªàëâë¬ BAT-ä ©«®¬
|
||||
ld a,l
|
||||
ld (struct_input_line+4),a ; ¤«¨ áâப¨
|
||||
ld (Buffers.input_line.Symbols_Num),a ; ¤«¨ áâப¨
|
||||
call CMDMODE ; â¥áâ bat-ª®¬ ¤ë
|
||||
; ^^^^^^^
|
||||
;!TODO ¢«®¦¥ë¥ bat. ¯¥à¥¤ ¢ âì ®è¨¡ªã ®¡à â® ¢ ¢ë§ë¢ î騩 bat
|
||||
@ -200,21 +200,21 @@ NEWLINE:
|
||||
; ret
|
||||
;
|
||||
.BATLINE:
|
||||
ld hl,work_buffer1
|
||||
.loop: call MOVWORD ; ᪮¯¨à. work_buffer1 -> struct_input_line+5
|
||||
ld hl,Buffers.work.buffer1
|
||||
.loop: call MOVWORD ; ᪮¯¨à. Buffers.work.buffer1 -> Buffers.input_line.Path
|
||||
jr c,.ADDBAT
|
||||
ld a,b
|
||||
ld (MOVWORD.count),a ; ®áâ «®áì ¯à®¯ àá¨âì ¯à®ç¨â ëå ¡ ©â®¢
|
||||
push hl
|
||||
ex de,hl
|
||||
ld de,struct_input_line+5
|
||||
ld de,Buffers.input_line.Path
|
||||
sbc hl,de
|
||||
ld a,l
|
||||
ld (struct_input_line+4),a ; ¤«¨ áâப¨
|
||||
ld (Buffers.input_line.Symbols_Num),a ; ¤«¨ áâப¨
|
||||
call CMDMODE ; â¥áâ bat-ª®¬ ¤ë
|
||||
; ^^^^^^^
|
||||
;!TODO ¢«®¦¥ë¥ bat. ¯¥à¥¤ ¢ âì ®è¨¡ªã ®¡à â® ¢ ¢ë§ë¢ î騩 bat
|
||||
ld de,struct_input_line+5
|
||||
ld de,Buffers.input_line.Path
|
||||
pop hl
|
||||
jr .loop
|
||||
|
||||
@ -255,7 +255,7 @@ MOVWORD:
|
||||
;!TODO ¤®¤¥« âì âã⠮ଠ«ìãî ¯à®¢¥àªã ®¡«®¬ á ç⥨¥¬ ä ©« , ¢ë¢®¤¨âì ®è¨¡ªã
|
||||
RET C
|
||||
;ld hl,BATBUFF ; 128 ¡ãä¥à (ccp.asm) "work_buffer1"
|
||||
ld hl,work_buffer1
|
||||
ld hl,Buffers.work.buffer1
|
||||
ld b,a ; ç¨á«® ¯à®ç¨â. ¡ ©â
|
||||
or a
|
||||
jr nz,.loop2
|
||||
@ -264,8 +264,7 @@ MOVWORD:
|
||||
|
||||
; ¯à®ç¨â âì 128 ¡ ©â ¨§ ä ©«
|
||||
READBAT:
|
||||
;ld hl,T99B9 ; 128 ¡ãä¥à ¯®¤ ¤ ë¥ (ccp.asm) "work_buffer1"
|
||||
ld hl,work_buffer1
|
||||
ld hl,Buffers.work.buffer1
|
||||
ld de,128 ; ᪮«ìª®
|
||||
ld a,(BAT_FM) ; ¤¥áªà. bat-ä ©«
|
||||
ld c,Dss.Read ; ç⥨¥ ä ©«
|
||||
@ -288,18 +287,18 @@ CMDMODE:
|
||||
call EVALCMD ; (batch.asm)
|
||||
;ld ix,T96AC ; 㦮?? § ª®¬¥â ਫ (inline.asm)
|
||||
;ld hl,T96AE ;;256 ¡ãä¥à (inline.asm)
|
||||
ld hl,struct_input_line+5
|
||||
ld hl,Buffers.input_line.Path
|
||||
ld a,(hl)
|
||||
cp "@" ; 40h
|
||||
jr nz,.A8240
|
||||
dec hl
|
||||
;ld hl,struct_input_line+4;;
|
||||
;ld hl,Buffers.input_line.Symbols_Num;;
|
||||
dec (hl)
|
||||
jr z,.A825B
|
||||
ld c,(hl) ; ¤«¨ áâப¨
|
||||
inc hl
|
||||
ld b,0
|
||||
;ld hl,work_buffer+256;;
|
||||
;ld hl,Buffers.work.buffer+256;;
|
||||
ld d,h
|
||||
ld e,l
|
||||
inc hl
|
||||
@ -311,7 +310,7 @@ CMDMODE:
|
||||
jr z,.A825B ; off
|
||||
; ¢ë¢¥á⨠á¨áâ. ¯ãâì ¨ áâபã ᮤ¥à¦¨¬®£® bat-ä ©«
|
||||
;ld de,T96AE ;;256 ¡ãä¥à (inline.asm)
|
||||
;ld de,struct_input_line+5
|
||||
;ld de,Buffers.input_line.Path
|
||||
;call A95DE ; ¢ë¢®¤ íªà . ¯ã⨠á ">" (inline.asm)
|
||||
; ¢ë¢¥á⨠íªà . ¯ãâì ¨ ¢¢¥¤. ª®¬ ¤ã
|
||||
ld c,BIOS.LP_GET_PLACE ; ã§ âì ¯®«®¦. ªãàá®à
|
||||
@ -322,8 +321,8 @@ CMDMODE:
|
||||
ld de,(YXpos) ; Y/X ç «® ª®¬-áâப¨
|
||||
ld c,Dss.Locate ; ãáâ. ¯®«®¦. ªãàá®à
|
||||
RST ToDSS
|
||||
;ld hl,work_buffer+256;;
|
||||
ld hl,struct_input_line+4 ; ¤«¨ áâப¨
|
||||
;ld hl,Buffers.work.buffer+256;;
|
||||
ld hl,Buffers.input_line.Symbols_Num ; ¤«¨ áâப¨
|
||||
ld a,(hl)
|
||||
ld b,a
|
||||
inc hl ;+5
|
||||
@ -348,25 +347,25 @@ CMDMODE:
|
||||
;
|
||||
;
|
||||
;ld a,(D96AD) ;; ¤«¨ áâப¨ (inline.asm)
|
||||
;ld a,(struct_input_line+4);-
|
||||
;ld a,(Buffers.input_line.Symbols_Num);-
|
||||
;or a
|
||||
;ret z
|
||||
;call newline
|
||||
;jr A8264
|
||||
;
|
||||
.A825B: ;ld a,(D96AD) ;; ¤«¨ áâப¨ (inline.asm)
|
||||
ld a,(struct_input_line+4)
|
||||
ld a,(Buffers.input_line.Symbols_Num)
|
||||
or a
|
||||
ret z
|
||||
;A8264: ld hl,T96AE ;;256 ¡ãä¥à (inline.asm)
|
||||
;ld hl,struct_input_line+5
|
||||
;ld hl,Buffers.input_line.Path
|
||||
;dec hl
|
||||
; ã¡à âì ª®æ¥¢ë¥ ¯à®¡¥«ë áâப¨
|
||||
ld hl,struct_input_line+4
|
||||
ld hl,Buffers.input_line.Symbols_Num
|
||||
ld c,(hl) ; hl=¤«¨ áâப¨ (inline.asm)
|
||||
ld b,0
|
||||
inc hl
|
||||
;ld hl,work_buffer+256;;
|
||||
;ld hl,Buffers.work.buffer+256;;
|
||||
.A826C: ld a,(hl)
|
||||
cp " "
|
||||
jr nz,.A8276
|
||||
@ -391,23 +390,23 @@ CMDMODE:
|
||||
ld c,a ; ¤«¨ á«®¢ ¨«¨ áâப¨ ?
|
||||
ld hl,BATLIST ; ª®¬ ¤ë bat + dos-ª®¬ ¤ë
|
||||
;
|
||||
; de=struct_input_line+5, c=¤«¨ áâப¨ (¡¥§ ª®æ. ¯à®¡¥«®¢)
|
||||
; de=Buffers.input_line.Path, c=¤«¨ áâப¨ (¡¥§ ª®æ. ¯à®¡¥«®¢)
|
||||
; ¢ë¯®«. ª®¬ ¤ã ¨«¨ § ¯ãáâ¨âì ä ©«
|
||||
jp COMP.start
|
||||
|
||||
; ¤®«¦ ã¡à âì ª®æ. ¯à®¡¥«ë ¨ ãáâ. ¤«¨ã áâப¨, ¥á«¨ ã१ « áì
|
||||
EVALCMD: xor a
|
||||
ld hl,struct_input_line+4 ;!HARDCODE
|
||||
ld hl,Buffers.input_line.Symbols_Num ;!HARDCODE
|
||||
ld c,(hl)
|
||||
ld b,a
|
||||
inc hl
|
||||
add hl,bc
|
||||
ld (hl),a ; 0 ¢ ª®¥æ áâப¨
|
||||
sbc hl,bc
|
||||
ld de,work_buffer2 ; 256 ¡ãä¥à
|
||||
ld de,Buffers.work.buffer2 ; 256 ¡ãä¥à
|
||||
call EVALSTR
|
||||
ld hl,work_buffer2 ;work_buffer+256
|
||||
ld de,struct_input_line+5 ; ªã¤
|
||||
ld hl,Buffers.work.buffer2 ;work_buffer+256
|
||||
ld de,Buffers.input_line.Path ; ªã¤
|
||||
ld bc,255 ;!HARDCODE
|
||||
.loop: ld a,(hl)
|
||||
ldi
|
||||
@ -416,7 +415,7 @@ EVALCMD: xor a
|
||||
jr nz,.loop
|
||||
dec b
|
||||
ld a,b
|
||||
ld (struct_input_line+4),a ; ¤«¨ áâப¨ (edline.asm)
|
||||
ld (Buffers.input_line.Symbols_Num),a ; ¤«¨ áâப¨ (edline.asm)
|
||||
and a
|
||||
ret
|
||||
|
||||
|
||||
@ -5,11 +5,11 @@
|
||||
;///////////////////////////////////////////////////
|
||||
cmd_chdir:
|
||||
ex de,hl
|
||||
ld de,work_buffer1;
|
||||
ld de,Buffers.work.buffer1;
|
||||
ld c,Dss.GSwitch ; ¢ë¤¥«¨âì ¯ à ¬¥âà ª®¬-áâப¨
|
||||
RST ToDSS
|
||||
xor a
|
||||
ld hl,work_buffer1;
|
||||
ld hl,Buffers.work.buffer1;
|
||||
cp (hl)
|
||||
jr nz,.chdir
|
||||
ld (hl),"." ; ".." த¨â. ¯ ¯ª
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
;///////////////////////////////////////////////////
|
||||
cmd_cls: ex de,hl ; hl=ª®¬-áâப
|
||||
;ld de,T9186 ; ¡ãä¥à ¯®¤ ¯ à ¬¥âà
|
||||
ld de,work_buffer1;
|
||||
ld de,Buffers.work.buffer1;
|
||||
push de
|
||||
ld c,Dss.GSwitch ; ¢ë¤¥«¨âì ¯ à ¬¥âà ª®¬-áâப¨
|
||||
RST ToDSS
|
||||
|
||||
@ -9,10 +9,10 @@
|
||||
;///////////////////////////////////////////////////
|
||||
cmd_date:
|
||||
ex de,hl ; hl=ª®¬-áâப
|
||||
ld de,work_buffer1;
|
||||
ld de,Buffers.work.buffer1;
|
||||
ld c,Dss.GSwitch ; ¢ë¤¥«¨âì ¯ à ¬¥âà ª®¬-áâப¨
|
||||
RST ToDSS
|
||||
ld de,work_buffer1;
|
||||
ld de,Buffers.work.buffer1;
|
||||
ld a,(de)
|
||||
or a
|
||||
jr z,.cmd_dt1
|
||||
@ -104,11 +104,11 @@ cmd_date:
|
||||
cmd_time:
|
||||
ex de,hl
|
||||
;ld de,T9186
|
||||
ld de,work_buffer1;
|
||||
ld de,Buffers.work.buffer1;
|
||||
ld c,Dss.GSwitch
|
||||
RST ToDSS
|
||||
;ld de,T9186
|
||||
ld de,work_buffer1;
|
||||
ld de,Buffers.work.buffer1;
|
||||
ld a,(de)
|
||||
or a
|
||||
jr z,cmd_tm1
|
||||
|
||||
@ -4,10 +4,10 @@
|
||||
;
|
||||
;///////////////////////////////////////////////////
|
||||
cmd_del: ex de,hl
|
||||
ld de,work_buffer1;
|
||||
ld de,Buffers.work.buffer1;
|
||||
ld c,Dss.GSwitch
|
||||
RST ToDSS
|
||||
ld hl,work_buffer1;
|
||||
ld hl,Buffers.work.buffer1;
|
||||
ld c,Dss.Delete
|
||||
RST ToDSS
|
||||
call c,print_err_message ; ¢ë¢®¤ á®®¡é¥¨ï
|
||||
|
||||
@ -7,7 +7,7 @@ cmd_dir: push de
|
||||
;;;; [ ] ¯®¤¤¥à¦ª ¯ à ¬¥â஢
|
||||
; § ã«ï¥¬ ¢á¥ ¯ à ¬¥âàë áâ àâ¥
|
||||
xor a
|
||||
ld (work_buffer2),a
|
||||
ld (Buffers.work.buffer2),a
|
||||
ld (read_disk_info.full),a
|
||||
ld (.key_p),a
|
||||
; ¢ë¯®«ï¥¬/ áâà ¨¢ ¥¬ ¢á¥ ©¤¥ë¥ ¯ à ¬¥âàë ¢ áâப¥
|
||||
@ -38,43 +38,43 @@ cmd_dir: push de
|
||||
ld (S_HIGH),a
|
||||
;
|
||||
ex de,hl
|
||||
ld de,work_buffer1
|
||||
ld de,Buffers.work.buffer1
|
||||
ld c,Dss.GSwitch ; ¢ë¤¥«¨âì ¯ à ¬¥âà ª®¬-áâப¨
|
||||
RST ToDSS
|
||||
;!TODO âãâ ¢ work_buffer1 «¥¦¨â ¯ãâì ¨/¨«¨/«¨¡® ¬ áª ä ©«
|
||||
;!TODO âãâ ¢ Buffers.work.buffer1 «¥¦¨â ¯ãâì ¨/¨«¨/«¨¡® ¬ áª ä ©«
|
||||
; ¤® à §®¡à âì ¥ñ Dss.EX_Path ¢ë¤¥«¨âì ¥á«¨ ¥áâì ¤¨áª, ¯ãâì ¨ ¬ áªã, ¯®á«¥ 祣® 㦥
|
||||
; ®â¯¥ç âë¢ âì ¯ãâì ¢ è ¯ª¥, ã§ ¢ âì CurDisk ª ª ¢ .skip ¢ëè¥. „¥« âì íâ® ¤® ¢ë§®¢
|
||||
; ¯à®æ¥¤ãàë read_disk_info. ‹ãçè¥ ¤¥« âì íâ® ¯®á«¥ ¬¥âª¨ .skip
|
||||
;
|
||||
ld a,(work_buffer1)
|
||||
ld a,(Buffers.work.buffer1)
|
||||
or a
|
||||
;jr nz,.SkipMask ; § ¤ ¬ ᪠¨¬ñ
|
||||
jr z,.NoSkipMask ; ¥ § ¤ ¬ ᪠¨¬ñ
|
||||
; á®åà ¨âì ⥪ã騩 ¯ãâì ¢ work_buffer2
|
||||
; á®åà ¨âì ⥪ã騩 ¯ãâì ¢ Buffers.work.buffer2
|
||||
; ˆ§ ¡ãä¥à DE § ¯®¬¨âì ¬ áªã (¯¥à¢ë¥ á¯à ¢ ᨬ¢®«ë ¯®á«¥ ¯¥à¢®£® á¯à ¢ '\') ¨ ã¡à âì ¥ñ
|
||||
; ¥á«¨ ¬ ᪨ ¥â ¨ ¯®á«¥¤¨© ¢ áâப¥ '\', â® ¯®â®¬ ¤®¡ ¢¨âì ¬ áªã ª ª ¢ "; ¤®¡ ¢«¥¨¥ ¬ ᪨"
|
||||
; ᤥ« âì CD ¢ ¤¨à¥ªâ®à¨î ¨§ ¡ãä¥à DE
|
||||
; make_short_path
|
||||
;
|
||||
ld hl,work_buffer1
|
||||
ld hl,Buffers.work.buffer1
|
||||
ld bc,Dss.EX_Path.GET_ALL
|
||||
rst ToDSS
|
||||
;
|
||||
and %00001100 ; ¨¬ï ¤¨áª ¨ ¯ãâì
|
||||
jr z,.SkipMask
|
||||
;
|
||||
ld hl,work_buffer2+2
|
||||
ld hl,Buffers.work.buffer2+2
|
||||
ld c,Dss.CurDir
|
||||
rst ToDSS
|
||||
ld c,Dss.CurDisk
|
||||
rst ToDSS
|
||||
add a,"A"
|
||||
ld (work_buffer2),a
|
||||
ld (Buffers.work.buffer2),a
|
||||
ld a,":"
|
||||
ld (work_buffer2+1),a
|
||||
ld (Buffers.work.buffer2+1),a
|
||||
;
|
||||
xor a
|
||||
ld hl,work_buffer1
|
||||
ld hl,Buffers.work.buffer1
|
||||
ld bc,256
|
||||
cpir
|
||||
;!FIXIT ¯à®¢¥àª ®è¨¡ªã ¯® ä« £ã P/V
|
||||
@ -95,12 +95,12 @@ cmd_dir: push de
|
||||
ld de,PRM1
|
||||
call ncopy_string ; á®åà 塞 ¬ áªã ä ©«
|
||||
;
|
||||
ld hl,work_buffer1
|
||||
ld hl,Buffers.work.buffer1
|
||||
ld c,Dss.ChDir
|
||||
rst ToDSS
|
||||
;
|
||||
ld hl,PRM1
|
||||
ld de,work_buffer1
|
||||
ld de,Buffers.work.free
|
||||
call ncopy_string ; ¢®ááâ ¢«¨¢ ¥¬ ¬ áªã ä ©«
|
||||
;
|
||||
ld a,(PRM1)
|
||||
@ -109,7 +109,7 @@ cmd_dir: push de
|
||||
;
|
||||
; ¤®¡ ¢«¥¨¥ ¬ ᪨
|
||||
.NoSkipMask: ld hl,mask_fname ; "*.*"
|
||||
ld de,work_buffer1
|
||||
ld de,Buffers.work.free
|
||||
call copy_string
|
||||
; !TEST 23/05/24
|
||||
.SkipMask: LD C,Dss.CurDisk ; ã§ âì ⥪. ¤¨áª
|
||||
@ -118,8 +118,8 @@ cmd_dir: push de
|
||||
;
|
||||
CALL Print_Header
|
||||
; [ ] 01/10/23
|
||||
ld hl,work_buffer1 ; ¨¬ï ä ©«
|
||||
ld de,work_buffer1 ; 80 ¡ãä¥à
|
||||
ld hl,Buffers.work.free ; ¨¬ï ä ©«
|
||||
ld de,Buffers.work.buffer1 ; 80 ¡ãä¥à
|
||||
ld a,FAT_ATTR.NoVolID ; âਡãâ (¢á¥, ªà®¬¥ ¬¥âª¨ ⮬ )
|
||||
ld bc,Dss.F_First.FATname ; f_first (ä®à¬ â 11)
|
||||
RST ToDSS
|
||||
@ -144,13 +144,13 @@ cmd_dir: push de
|
||||
;ld (.key_p),a ; ®â¬¥ï¥¬ ESC
|
||||
.skip_esc: ld a,32-1
|
||||
.skip_wait: PUSH AF
|
||||
ld hl,work_buffer1+33 ; 80
|
||||
ld hl,Buffers.work.buffer1+33 ; 80
|
||||
;push af
|
||||
;ld de,33
|
||||
;add hl,de
|
||||
call PRNNAME
|
||||
;
|
||||
ld ix,work_buffer1 ; 80
|
||||
ld ix,Buffers.work.buffer1 ; 80
|
||||
ld a,(ix+32) ; âਡãâ ⥪. § ¯¨á¨
|
||||
and FAT_ATTR.DIRECTORY ; ¯ ¯ª ?
|
||||
jr z,.Calc_Size ; ¥â
|
||||
@ -201,7 +201,7 @@ cmd_dir: push de
|
||||
adc a,0
|
||||
ld (S_HIGH),a
|
||||
;exx
|
||||
.next: ld de,work_buffer1 ; 80 ¡ãä¥à
|
||||
.next: ld de,Buffers.work.buffer1 ; 80 ¡ãä¥à
|
||||
ld c,Dss.F_Next ; ¯®¨áª á«¥¤.
|
||||
RST ToDSS
|
||||
jp nc,.loop ; § ¤ ¢ 横«, ¥á«¨ ¥ ª®¥æ ᯨáª
|
||||
@ -242,7 +242,7 @@ cmd_dir: push de
|
||||
CALL MESSAGE ; ¢ë¢¥á⨠áâபã
|
||||
;
|
||||
; [ ] 23/05/2024
|
||||
ld hl,work_buffer2
|
||||
ld hl,Buffers.work.buffer2
|
||||
ld c,Dss.ChDir
|
||||
ld a,(hl)
|
||||
or a
|
||||
@ -278,7 +278,13 @@ Print_Header: ; %1
|
||||
ld a,'"'
|
||||
ld (hl),a
|
||||
inc hl
|
||||
ld a,(screen_path) ; ¤¨áª ; !TODO ¢®â íâ® § ¬¥¨âì ¢ë¢®¤ ç¥á⮣® ¤¨áª
|
||||
push hl
|
||||
;
|
||||
ld c,Dss.CurDisk
|
||||
rst ToDSS
|
||||
add a,"A"
|
||||
;
|
||||
pop hl
|
||||
ld (hl),a
|
||||
inc hl
|
||||
ld a,'"'
|
||||
@ -290,12 +296,31 @@ Print_Header: ; %1
|
||||
ld hl,serial_string ; áâப á¥à¨©®£® ®¬¥à ¤¨áª
|
||||
ld de,PRM2 ; ªã¤
|
||||
call ncopy_string ; ᪮¯¨à. áâபã (á ã«¥¬)
|
||||
; ¤¨áª ; !TODO ¢®â íâ® § ¬¥¨âì ¢ë¢®¤ ç¥á⮣® ¯ãâ¨
|
||||
; ¯à¨¬¥à ¢ë¢®¤ ¤«¨®© áâப¨ ¯ã⨠¥áâì ¢ print_compath:
|
||||
; %3
|
||||
ld hl,screen_path ; !FIXIT ¥á«¨ ¢¢¥á⨠"DIR gamez\*.*", â® ®â®¡à ¦ ¥¬ë© ¯ãâì ¢ § £®«®¢ª¥ ¡ã¤¥â ¥¢¥àë¬
|
||||
ld de,PRM3 ; 16 ¡ãä¥à
|
||||
CALL copy_string ; ᪮¯¨à. áâபã (á ã«¥¬)
|
||||
; %3..5
|
||||
;push hl
|
||||
ld hl,Buffers.work.free + 256 + 128 ; 128 - ¢á直© á«ãç ©
|
||||
ld c,Dss.CurDir
|
||||
rst ToDSS
|
||||
ld hl,PRM3
|
||||
ld a,(PRM1 + 1)
|
||||
ld (hl),a
|
||||
inc hl
|
||||
ld (hl),':'
|
||||
;
|
||||
ld hl,PRM3+2
|
||||
ld de,PRM3+2+1
|
||||
ld (hl),0
|
||||
ld bc,16+16+16-1-2
|
||||
ldir
|
||||
;
|
||||
ld hl,Buffers.work.free + 256 + 128 ; á¨áâ. ¯ãâì
|
||||
ld de,PRM3 + 2 ;+PRM4..5 ; 2 + 48 ¡ ©â®¢ ¡ãä¥à
|
||||
call make_short_path
|
||||
;pop hl
|
||||
|
||||
; ld hl,Buffers.screen_path ; !FIXIT ¥á«¨ ¢¢¥á⨠"DIR gamez\*.*", â® ®â®¡à ¦ ¥¬ë© ¯ãâì ¢ § £®«®¢ª¥ ¡ã¤¥â ¥¢¥àë¬
|
||||
; ld de,PRM3 ;+PRM4 ; 32 ¡ ©â ¡ãä¥à
|
||||
; CALL copy_string ; ᪮¯¨à. áâபã (á ã«¥¬)
|
||||
;
|
||||
ld de,MAIN_MSG.DIR_1 ; ¨¤¥ªá "Volume in drive %1..."
|
||||
JP MESSAGE ; ¢ë¢¥á⨠áâபã
|
||||
@ -318,7 +343,7 @@ PRNNAME: dec hl
|
||||
ldi
|
||||
ldi
|
||||
ld (de),a
|
||||
ld ix,work_buffer1
|
||||
ld ix,Buffers.work.buffer1
|
||||
call PRNSIZE ; ¢ë¢¥á⨠¢ ¡ãä¥à ¨¬ï ä ©« ¨ ¥£® à §¬¥à (ã ¯ ¯ª¨ <DIR>)
|
||||
call PRNDATE ; ¢ë¢¥á⨠¢ ¡ãä¥à ¤ âã ä ©« /¯ ¯ª¨
|
||||
call PRNTIME ; ¢ë¢¥á⨠¢ ¡ãä¥à ¢à¥¬ï ä ©« /¯ ¯ª¨
|
||||
@ -593,7 +618,7 @@ SIZE_BUFFER: db " " ;
|
||||
; ¨ ï «®£¨ª ¯®«ãç¥¨ï ¬¥âª¨ ⮬ - á ç « ¨é¥âáï ¢ ª®à¥¢®© ¤¨à¥ªâ®à¨¨,
|
||||
; ¥á«¨ â ¬ ¥â, â® ¡¥àñâáï ¨§ BPB
|
||||
read_disk_info: OR #80
|
||||
LD HL,work_buffer
|
||||
LD HL,Buffers.work.buffer
|
||||
.full+1: LD B,0
|
||||
LD C,Dss.DskInfo
|
||||
RST ToDSS
|
||||
@ -681,7 +706,7 @@ read_disk_info: OR #80
|
||||
.no_full_space_option:
|
||||
; parse
|
||||
LD D,0
|
||||
LD HL,work_buffer
|
||||
LD HL,Buffers.work.buffer
|
||||
; âãâ ¢ HL ¤«¨ ¯®«ï "” ©«®¢ ï á¨á⥬ "
|
||||
LD E,(HL)
|
||||
ADD HL,DE
|
||||
@ -723,14 +748,14 @@ read_disk_info: OR #80
|
||||
; ¯®¨áª ¬¥âª¨
|
||||
;ld hl,mask_fname ; "*.*" ¨¬ï ¬¥âª¨
|
||||
ld hl,SlashMaskFname ; "\*.*" ¨¬ï ¬¥âª¨
|
||||
ld de,work_buffer1 ; ªã¤
|
||||
ld de,Buffers.work.buffer1 ; ªã¤
|
||||
ld a,FAT_ATTR.VOLUME_ID ; âਡãâ ¬¥âª¨ ⮬
|
||||
ld bc,Dss.F_First.FATname ; f_first, ä®à¬ â 11
|
||||
RST ToDSS
|
||||
;push af
|
||||
;call restore_path ; ¢®ááâ. ⥪. ¯ãâì
|
||||
;pop af
|
||||
ld hl,work_buffer1 + BUFFER_FIND.REC_Name ; ç «® ¬¥âª¨ ¢ ¡ãä¥à¥ f_first
|
||||
ld hl,Buffers.work.buffer1 + BUFFER_FIND.REC_Name ; ç «® ¬¥âª¨ ¢ ¡ãä¥à¥ f_first
|
||||
jr nc,volume_label ; ¬¥âª ¢ ª®à¥¢®¬ ª â «®£¥
|
||||
; ¡¥àñ¬ ¬¥âªã ¨§ BPB
|
||||
; âãâ ¢ HL ¤«¨ ¯®«ï "Œ¥âª ¤¨áª "
|
||||
@ -749,26 +774,26 @@ read_disk_info: OR #80
|
||||
DJNZ .loop
|
||||
POP HL ; ᨬ ¥¬ «¨è¥¥
|
||||
; ¥â ¬¥âª¨
|
||||
.no_volume_label:; %4
|
||||
.no_volume_label:; %6
|
||||
ld hl,volume_string_no ; áâப
|
||||
ld de,PRM4 ; ªã¤
|
||||
ld de,PRM6 ; ªã¤
|
||||
call ncopy_string ; ᪮¯¨à. áâபã (á ã«¥¬)
|
||||
XOR A
|
||||
LD (PRM5),A
|
||||
LD (PRM7),A
|
||||
ret
|
||||
.good_label: POP HL
|
||||
PUSH HL ; ⮫ª ¥¬ «¨è¥¥
|
||||
; ¥áâì ¬¥âª
|
||||
volume_label: POP DE ; ᨬ ¥¬ «¨è¥¥
|
||||
; %5
|
||||
ld de,PRM5
|
||||
; %7
|
||||
ld de,PRM7
|
||||
ld bc,11 ;!HARDCODE ¤«¨ ¬¥âª¨
|
||||
ldir
|
||||
xor a
|
||||
ld (de),a
|
||||
; %4
|
||||
; %6
|
||||
ld hl,volume_string_yes ; áâப
|
||||
ld de,PRM4 ; ªã¤
|
||||
ld de,PRM6 ; ªã¤
|
||||
call ncopy_string ; ᪮¯¨à. áâபã (á ã«¥¬)
|
||||
ret
|
||||
;
|
||||
|
||||
@ -6,11 +6,11 @@
|
||||
cmd_mkdir:
|
||||
ex de,hl
|
||||
;ld de,T9186 ; ¡ãä¥à
|
||||
ld de,work_buffer1;
|
||||
ld de,Buffers.work.buffer1;
|
||||
ld c,Dss.GSwitch ; ¢ë¤¥«¨âì ¯ à ¬¥âà ª®¬-áâப¨
|
||||
RST ToDSS
|
||||
;ld hl,T9186 ; ¨¬ï ¯ ¯ª¨
|
||||
ld hl,work_buffer1;
|
||||
ld hl,Buffers.work.buffer1;
|
||||
ld c,Dss.MkDir ; á®§¤ âì ¯ ¯ªã
|
||||
RST ToDSS
|
||||
call c,print_err_message ; ¢ë¢®¤ á®®¡é¥¨ï
|
||||
|
||||
@ -34,7 +34,7 @@ cmd_path:
|
||||
|
||||
; <20>®ª § âì á¨áâ¥¬ë© ¯ãâì
|
||||
A85B9: ;ld de,T9186 ; ªã¤
|
||||
ld de,work_buffer1;
|
||||
ld de,Buffers.work.buffer1;
|
||||
ld hl,T858C ; ¨¬ï ¯¥à¥¬¥®© "PATH="
|
||||
ld bc,Dss.Environ.Get ; ¯®«ãç¨âì ¯¥à¥¬¥ãî ®ªà㦥¨ï
|
||||
RST ToDSS
|
||||
@ -43,7 +43,7 @@ A85B9: ;ld de,T9186 ;
|
||||
ld c,Dss.PChars
|
||||
RST ToDSS
|
||||
;ld hl,T9186 ; áâப
|
||||
ld hl,work_buffer1;
|
||||
ld hl,Buffers.work.buffer1;
|
||||
ld c,Dss.PChars
|
||||
RST ToDSS
|
||||
jp newline
|
||||
|
||||
@ -6,17 +6,17 @@
|
||||
cmd_rename:
|
||||
ex de,hl
|
||||
;ld de,T9186
|
||||
ld de,work_buffer1;
|
||||
ld de,Buffers.work.buffer1;
|
||||
ld c,Dss.GSwitch
|
||||
RST ToDSS
|
||||
;ld de,T9206
|
||||
ld de,work_buffer+256;
|
||||
ld de,Buffers.work.buffer+256;
|
||||
ld c,Dss.GSwitch
|
||||
RST ToDSS
|
||||
;ld hl,T9186
|
||||
;ld de,T9206
|
||||
ld hl,work_buffer1;
|
||||
ld de,work_buffer+256;
|
||||
ld hl,Buffers.work.buffer1;
|
||||
ld de,Buffers.work.buffer+256;
|
||||
ld c,Dss.Rename
|
||||
RST ToDSS
|
||||
call c,print_err_message ; ¢ë¢®¤ á®®¡é¥¨ï
|
||||
|
||||
@ -6,11 +6,11 @@
|
||||
cmd_rmdir:
|
||||
ex de,hl
|
||||
;ld de,T9186 ; ¡ãä¥à
|
||||
ld de,work_buffer1;
|
||||
ld de,Buffers.work.buffer1;
|
||||
ld c,Dss.GSwitch ; ¢ë¤¥«¨âì ¯ à ¬¥âà ª®¬-áâப¨
|
||||
RST ToDSS
|
||||
;ld hl,T9186 ; ¨¬ï ¯ ¯ª¨
|
||||
ld hl,work_buffer1;
|
||||
ld hl,Buffers.work.buffer1;
|
||||
ld c,Dss.RmDir ; 㤠«¨âì ¯ ¯ªã
|
||||
RST ToDSS
|
||||
call c,print_err_message ; ¢ë¢®¤ á®®¡é¥¨ï
|
||||
|
||||
@ -21,11 +21,11 @@ cmd_set:ld a,(de) ;
|
||||
|
||||
; <20>®ª § âì á¨á⥬®¥ ®ªà㦥¨¥
|
||||
A85EE: ;ld hl,T9186 ; ªã¤
|
||||
ld hl,work_buffer1;
|
||||
ld hl,Buffers.work.buffer1;
|
||||
ld bc,Dss.Environ.Read ; ¯®«ãç¨âì á¨áâ. ®ªà㦥¨¥
|
||||
RST ToDSS
|
||||
;ld hl,T9186
|
||||
ld hl,work_buffer1;
|
||||
ld hl,Buffers.work.buffer1;
|
||||
A85F8: ld c,Dss.PChars
|
||||
RST ToDSS
|
||||
call newline
|
||||
|
||||
461
SHELL/EDLINE.ASM
461
SHELL/EDLINE.ASM
@ -4,12 +4,12 @@
|
||||
; ”ãªæ¨ï áâப¨ । ªâ¨à®¢ ¨ï. ˆ¬¥¥â ¨áâ®à¨î ¢¢®¤¨¬ëå áâப.
|
||||
; ”ãªæ¨ï ¨á¯®«ì§ã¥â ¤«ï ᢮¥© à ¡®âë ¢à¥¬¥ë© ¡ãä¥à:
|
||||
;
|
||||
; work_buffer - íâ®â ¡ãä¥à ¨á¯®«ì§ã¥â ¨áâ®à¨ï
|
||||
; ;work_buffer+256 - ¢®§¢à é ¥âáï ¡à ï áâப
|
||||
; Buffers.work.buffer - íâ®â ¡ãä¥à ¨á¯®«ì§ã¥â ¨áâ®à¨ï
|
||||
; ;Buffers.work.buffer+256 - ¢®§¢à é ¥âáï ¡à ï áâப
|
||||
;
|
||||
; Š« ¢¨è¨:
|
||||
; Esc - á¡à®á¨âì ⥪ãéãî áâபã
|
||||
; Enter - ¢ë室 ¨§ äãªæ¨¨ (¢ work_buffer+256 £®â®¢ ï áâப )
|
||||
; Enter - ¢ë室 ¨§ äãªæ¨¨ (¢ Buffers.work.buffer+256 £®â®¢ ï áâப )
|
||||
; Ins - ᬥ ०¨¬ ¢¢®¤ (¢áâ ¢ª /§ ¬¥ )
|
||||
; , ªãàá®à - ¯à®ªàã⪠¨áâ®à¨¨
|
||||
; PageUp - ¢ ç «® ¨áâ®à¨¨
|
||||
@ -45,7 +45,7 @@ evCombKey equ 2 ;
|
||||
; ‘âப । ªâ¨à®¢ ¨ï
|
||||
;
|
||||
; ‚ë室 ¨§ áâப¨ ¯® ª« ¢¨è¥ <Enter>,
|
||||
; ;¢ work_buffer+256 = ¡à ï áâப (¨«¨ ¯ãáâ ï)
|
||||
; ;¢ Buffers.work.buffer+256 = ¡à ï áâப (¨«¨ ¯ãáâ ï)
|
||||
;===========================================================
|
||||
input_line:
|
||||
ld a,1
|
||||
@ -66,8 +66,8 @@ input_line:
|
||||
; ‚뢮¤ ¯ã⨠¢ ª®¬-áâப¥ íªà + ®¢ ï è¨à¨ ¯®«ï ¢¢®¤
|
||||
;---------------------------------------------------------------
|
||||
print_compath:
|
||||
ld hl,system_path ; á¨áâ. ¯ãâì
|
||||
ld de,screen_path+2 ; ¡ãä¥à ¤«ï ª®à®âª®£® ¯ãâ¨
|
||||
ld hl,Buffers.sys_path ; á¨áâ. ¯ãâì
|
||||
ld de,Buffers.screen_path+2 ; ¡ãä¥à ¤«ï ª®à®âª®£® ¯ãâ¨
|
||||
call make_short_path
|
||||
xor a
|
||||
ld (de),a ; § ã«¥¨¥ áâப¨
|
||||
@ -91,7 +91,7 @@ print_compath:
|
||||
RST ToBIOS
|
||||
pop bc
|
||||
; ¢ë¢¥á⨠íªà . ¯ãâì
|
||||
ld hl,screen_path ; íªà . ¯ãâì
|
||||
ld hl,Buffers.screen_path ; íªà . ¯ãâì
|
||||
;call print_inpchar ; ¢ë¢®¤ áâப¨ ¯® áç¥â稪ã
|
||||
ld c,BIOS.LP_PRINT_LINE2
|
||||
RST ToBIOS;
|
||||
@ -103,68 +103,68 @@ print_compath:
|
||||
; ‚뢮¤ áâப¨ ~input line~ íªà
|
||||
;-------------------------------------------------
|
||||
print_inpline:
|
||||
ld de,(YXpos) ; Y/X ç «® ª®¬-áâப¨
|
||||
ld c,Dss.Locate ; ãáâ. ªãàá®à
|
||||
ld de,(YXpos) ; Y/X ç «® ª®¬-áâப¨
|
||||
ld c,Dss.Locate ; ãáâ. ªãàá®à
|
||||
RST ToDSS
|
||||
ld hl,struct_input_line ; áâàãªâãà ¡ãä¥à ~input line~
|
||||
ld hl,Buffers.input_line ; áâàãªâãà ¡ãä¥à ~input line~
|
||||
push hl
|
||||
pop iy
|
||||
ld a,(iy+3) ;+3 ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||||
ld a,(iy + Input_Line.Left_Shift) ;+3 ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||||
add a,l
|
||||
ld l,a
|
||||
jr nc,$+3
|
||||
jr nc,$+3 ; !FIXIT
|
||||
inc h
|
||||
inc hl
|
||||
inc hl
|
||||
inc hl
|
||||
inc hl
|
||||
inc hl
|
||||
ld a,(width_inpline) ; è¨à¨ ¯®«ï
|
||||
ld a,(width_inpline) ; è¨à¨ ¯®«ï
|
||||
ld c,a
|
||||
ld b,a
|
||||
push bc
|
||||
xor a
|
||||
ld de,work_buffer ; ¢à¥¬. ¡ãä¥à
|
||||
ld de,Buffers.work.buffer ; ¢à¥¬. ¡ãä¥à
|
||||
push de
|
||||
ld (de),a
|
||||
inc de
|
||||
djnz $-2 ; !FIXIT
|
||||
ld a,(iy+0)
|
||||
sub (iy+3)
|
||||
djnz $-2 ; !FIXIT
|
||||
ld a,(iy + Input_Line.max_Len)
|
||||
sub (iy + Input_Line.Left_Shift)
|
||||
cp c
|
||||
jr nc,$+3
|
||||
jr nc,$+3 ; !FIXIT
|
||||
ld c,a
|
||||
ld a,(iy+4) ; ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
|
||||
ld a,(iy + Input_Line.Symbols_Num) ; ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
|
||||
sub c
|
||||
jr nc,$+4
|
||||
jr nc,$+4 ; !FIXIT
|
||||
add a,c
|
||||
ld c,a
|
||||
pop de
|
||||
push de
|
||||
ld a,b
|
||||
or c
|
||||
jr z,$+4
|
||||
jr z,$+4 ; !FIXIT
|
||||
ldir
|
||||
pop hl
|
||||
pop bc
|
||||
ld a,b ; ¤«¨ áâப¨
|
||||
ld a,b ; ¤«¨ áâப¨
|
||||
or a
|
||||
;call nz,print_inpchar ; ¢ë¢®¤ áâப¨ ¯® áç¥â稪ã
|
||||
;call nz,print_inpchar ; ¢ë¢®¤ áâப¨ ¯® áç¥â稪ã
|
||||
ld c,BIOS.LP_PRINT_LINE2
|
||||
call nz,ToBIOS
|
||||
ld a,(YXpos) ; X ç «® ª®¬-áâப¨
|
||||
ld e,(iy+2) ;+2 ⥪. ¯®«®¦. ªãàá®à ¢ áâப¥
|
||||
ld a,(YXpos) ; X ç «® ª®¬-áâப¨
|
||||
ld e,(iy + Input_Line.Cur_X) ;+2 ⥪. ¯®«®¦. ªãàá®à ¢ áâப¥
|
||||
add a,e
|
||||
cp width_inpline.MAX ; è¨à¨ íªà
|
||||
cp width_inpline.MAX ; è¨à¨ íªà
|
||||
jr c,prne1__
|
||||
ld b,width_inpline.MAX-1
|
||||
sub b
|
||||
ld d,a ; " ¥§¤" § ¯à ¢ë© ªà ©
|
||||
ld d,a ; " ¥§¤" § ¯à ¢ë© ªà ©
|
||||
ld a,e
|
||||
sub d
|
||||
ld (iy+2),a ;+2 ®¢®¥ ¯®«®¦. ªãàá®à
|
||||
ld (iy + Input_Line.Cur_X),a ;+2 ®¢®¥ ¯®«®¦. ªãàá®à
|
||||
ld a,b
|
||||
prne1__:ld (cursor_position),a ; X ¯®«®¦. ªãàá®à íªà ¥
|
||||
prne1__:ld (cursor_position),a ; X ¯®«®¦. ªãàá®à íªà ¥
|
||||
ret
|
||||
|
||||
; ¢å®¤: HL - ¯®«ë© ¯ãâì
|
||||
@ -257,11 +257,6 @@ handle_event_comb:
|
||||
; ¯®«¥ ᮡë⨩
|
||||
what: ds 3
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
step_scroll equ 1 ; è £ X áªà®««¨£ áâப¨
|
||||
|
||||
|
||||
@ -269,11 +264,11 @@ step_scroll equ 1 ; 蠣 X
|
||||
; Ž¡à ¡®â稪 ᮡë⨩ ~Input Line~
|
||||
;=================================================
|
||||
event_input_line:
|
||||
call handle_event ; ç¨â ¥¬ ᮡë⨥
|
||||
call handle_event ; ç¨â ¥¬ ᮡë⨥
|
||||
ld hl,event_input_line
|
||||
push hl
|
||||
ld iy,struct_input_line ; áâàãªâãà ¡ãä¥à ~input line~
|
||||
ld hl,what ; ᯨ᮪ ᮡë⨩
|
||||
ld iy,Buffers.input_line ; áâàãªâãà ¡ãä¥à ~input line~
|
||||
ld hl,what ; ᯨ᮪ ᮡë⨩
|
||||
ld a,(hl)
|
||||
inc hl
|
||||
cp evKeyboard
|
||||
@ -285,8 +280,8 @@ event_input_line:
|
||||
; <Enter>
|
||||
Enter: pop hl ; ¢®ááâ. ¡ « á á⥪ (¢ë室 ¨§ ®¡à ¡®â稪 )
|
||||
xor a
|
||||
;ld (work_buffer+256),a ; § ¤ âì ¯ãáâãî áâபã
|
||||
ld hl,struct_input_line+4 ; ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
|
||||
;ld (Buffers.work.buffer+256),a ; § ¤ âì ¯ãáâãî áâபã
|
||||
ld hl,Buffers.input_line.Symbols_Num ; ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
|
||||
ld e,(hl)
|
||||
cp e
|
||||
ret z ; ¯ãáâ ï áâப
|
||||
@ -309,12 +304,12 @@ Enter: pop hl ;
|
||||
ld a,b
|
||||
or a
|
||||
ret z ; ¡ë«¨ ®¤¨ ¯à®¡¥«ë
|
||||
ld de,struct_input_line+4 ; ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
|
||||
ld de,Buffers.input_line.Symbols_Num ; ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
|
||||
ld (de),a ; ®¢®¥ ç¨á«® (¤«ï history_adding)
|
||||
ent1__: call history_adding ; ¤®¡ ¢¨âì áâப㠢 history
|
||||
; ᪮¯¨à. áâப㠢® ¢à¥¬. ¡ãä¥à
|
||||
; ld hl,struct_input_line+4 ; ®âªã¤
|
||||
; ld de,work_buffer+254 ; ªã¤
|
||||
; ld hl,Buffers.input_line.Symbols_Num ; ®âªã¤
|
||||
; ld de,Buffers.work.buffer+254 ; ªã¤
|
||||
; ld a,(hl) ; ᪮¯¨à. áâபã (á ã«¥¬)
|
||||
; ldi
|
||||
; or a
|
||||
@ -327,8 +322,8 @@ ent1__: call history_adding ;
|
||||
; xor a
|
||||
; ld (YXpos+1),a;
|
||||
; ¢®ááâ. ¡ãä¥à
|
||||
; ld hl,work_buffer+254 ; ®âªã¤
|
||||
; ld de,struct_input_line+4 ; ªã¤
|
||||
; ld hl,Buffers.work.buffer+254 ; ®âªã¤
|
||||
; ld de,Buffers.input_line.Symbols_Num ; ªã¤
|
||||
; ld a,(hl) ; ᪮¯¨à. áâபã (á ã«¥¬)
|
||||
; ldi
|
||||
; or a
|
||||
@ -341,57 +336,57 @@ ent1__: call history_adding ;
|
||||
|
||||
; ‘®¡ë⨥ - ®¡ëç ï ª« ¢¨è
|
||||
EvComKeys:
|
||||
ld a,(hl) ;+1 what
|
||||
cp #1B ; Esc
|
||||
jp z,clear_input_line ; ®ç¨áâ¨âì áâப㠢¢®¤
|
||||
cp #0D ; Enter
|
||||
ld a,(hl) ;+1 what
|
||||
cp #1B ; Esc
|
||||
jp z,clear_input_line ; ®ç¨áâ¨âì áâப㠢¢®¤
|
||||
cp #0D ; Enter
|
||||
jr z,Enter
|
||||
cp 8 ; Backspace
|
||||
cp 8 ; Backspace
|
||||
jr z,inpline_work
|
||||
cp " "
|
||||
ret c
|
||||
inpline_work:
|
||||
ld de,input_line_done
|
||||
push de
|
||||
ld hl,struct_input_line ; áâàãªâãà ¡ãä¥à ~input line~
|
||||
ld hl,Buffers.input_line ; áâàãªâãà ¡ãä¥à ~input line~
|
||||
ex af,af'
|
||||
res 7,(iy+1) ;+1 ä« £ ReadyString
|
||||
ld a,(insert_mode) ; ०¨¬ ¢¢®¤ : 1-inser, 0-overwrite
|
||||
res 7,(iy + Input_Line.ReadyString) ;+1 ä« £ ReadyString
|
||||
ld a,(insert_mode) ; ०¨¬ ¢¢®¤ : 1-inser, 0-overwrite
|
||||
and 1
|
||||
rrca ; ¢¯à ¢® (¬«.¡¨â -> ¯¥à¥®á)
|
||||
or (iy+1)
|
||||
ld (iy+1),a ;+1 ä« £ ReadyString
|
||||
rrca ; ¢¯à ¢® (¬«.¡¨â -> ¯¥à¥®á)
|
||||
or (iy + Input_Line.ReadyString)
|
||||
ld (iy + Input_Line.ReadyString),a ;+1 ä« £ ReadyString
|
||||
ex af,af'
|
||||
cp 8 ; Backspace
|
||||
cp 8 ; Backspace
|
||||
jp z,back_space
|
||||
ex af,af'
|
||||
ld a,(iy+4) ; InputSymb
|
||||
cp (iy+0) ; Max len
|
||||
ld a,(iy + Input_Line.Symbols_Num) ; InputSymb
|
||||
cp (iy + Input_Line.max_Len)
|
||||
jr nz,ILn___
|
||||
ld a,(iy+2)
|
||||
add a,(iy+3)
|
||||
cp (iy+0)
|
||||
ld a,(iy + Input_Line.Cur_X)
|
||||
add a,(iy + Input_Line.Left_Shift)
|
||||
cp (iy + Input_Line.max_Len)
|
||||
;ret nc
|
||||
JR NC,LastChar_BEEP
|
||||
bit 7,(iy+1)
|
||||
bit 7,(iy + Input_Line.ReadyString)
|
||||
;ret nz
|
||||
JR NZ,NoMoreChars_BEEP
|
||||
ILn___: ld a,(iy+4)
|
||||
sub (iy+3)
|
||||
sub (iy+2)
|
||||
ILn___: ld a,(iy + Input_Line.Symbols_Num)
|
||||
sub (iy + Input_Line.Left_Shift)
|
||||
sub (iy + Input_Line.Cur_X)
|
||||
jr z,no_insert
|
||||
dec (iy+4)
|
||||
bit 7,(iy+1)
|
||||
dec (iy + Input_Line.Symbols_Num)
|
||||
bit 7,(iy + Input_Line.ReadyString)
|
||||
jr z,no_insert
|
||||
inc (iy+4)
|
||||
inc (iy + Input_Line.Symbols_Num)
|
||||
; ¢¢®¤ ¢ á¥à¥¤¨ã ⥪áâ (¢áâ ¢ª )
|
||||
ld c,a
|
||||
ld b,0
|
||||
ld hl,struct_input_line ; áâàãªâãà ¡ãä¥à ~input line~
|
||||
ld a,(iy+4) ;+4 ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
|
||||
ld hl,Buffers.input_line ; áâàãªâãà ¡ãä¥à ~input line~
|
||||
ld a,(iy + Input_Line.Symbols_Num) ;+4 ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
|
||||
add a,l
|
||||
ld l,a
|
||||
jr nc,$+3
|
||||
jr nc,$+3 ;!FIXIT
|
||||
inc h
|
||||
inc hl
|
||||
inc hl
|
||||
@ -403,12 +398,12 @@ ILn___: ld a,(iy+4)
|
||||
dec hl
|
||||
lddr
|
||||
no_insert:
|
||||
ld hl,struct_input_line ; áâàãªâãà ¡ãä¥à ~input line~
|
||||
ld a,(iy+2) ; X ⥪. ¯®«®¦. ªãàá®à ¢ áâப¥
|
||||
add a,(iy+3)
|
||||
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,$+3
|
||||
jr nc,$+3 ;!FIXIT
|
||||
inc h
|
||||
inc hl
|
||||
inc hl
|
||||
@ -416,17 +411,17 @@ no_insert:
|
||||
inc hl
|
||||
inc hl
|
||||
ex af,af'
|
||||
ld (hl),a ; á®åà. ᨬ¢®« ¢ áâப¥
|
||||
inc (iy+4)
|
||||
inc (iy+2)
|
||||
ld a,(width_inpline) ; è¨à¨ ¯®«ï ¢¢®¤
|
||||
cp (iy+2) ; X ⥪. ¯®«®¦. ªãàá®à ¢ ¯à¥¤¥« å áâப¨
|
||||
jr nz,$+8
|
||||
ld (hl),a ; á®åà. ᨬ¢®« ¢ áâப¥
|
||||
inc (iy + Input_Line.Symbols_Num)
|
||||
inc (iy + Input_Line.Cur_X)
|
||||
ld a,(width_inpline) ; è¨à¨ ¯®«ï ¢¢®¤
|
||||
cp (iy + Input_Line.Cur_X) ; X ⥪. ¯®«®¦. ªãàá®à ¢ ¯à¥¤¥« å áâப¨
|
||||
jr nz,$+8 ;!FIXIT
|
||||
; ªãàá®à § ¯®«¥¬
|
||||
inc (iy+3) ; ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||||
dec (iy+2) ; X ⥪. ¯®«®¦. ªãàá®à ¢ ¯à¥¤¥« å áâப¨
|
||||
call print_inpline ; ¢ë¢¥á⨠áâபã íªà
|
||||
pop de ; ¢®ááâ. ¡ « á á⥪
|
||||
inc (iy + Input_Line.Left_Shift) ; ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||||
dec (iy + Input_Line.Cur_X) ; X ⥪. ¯®«®¦. ªãàá®à ¢ ¯à¥¤¥« å áâப¨
|
||||
call print_inpline ; ¢ë¢¥á⨠áâபã íªà
|
||||
pop de ; ¢®ááâ. ¡ « á á⥪
|
||||
input_line_done:
|
||||
ret
|
||||
LastChar_BEEP:
|
||||
@ -447,35 +442,35 @@ NoMoreChars_BEEP:
|
||||
|
||||
; ‘®¡ë⨥ - ªãàá. ª« ¢¨è¨ ¨«¨ ª®¬¡¨ 樨
|
||||
EvComComb:
|
||||
ld b,(hl) ;+1 what
|
||||
ld b,(hl) ;+1 what
|
||||
inc hl
|
||||
ld a,(hl) ;+2 what
|
||||
ld hl,struct_input_line ; áâàãªâãà ¡ãä¥à ~input line~
|
||||
ld de,input_line_done ; â®çª ¢ë室
|
||||
ld a,(hl) ;+2 what
|
||||
ld hl,Buffers.input_line ; áâàãªâãà ¡ãä¥à ~input line~
|
||||
ld de,input_line_done ; â®çª ¢ë室
|
||||
push de
|
||||
cp #54 ; ªãàá®à ¢«¥¢®
|
||||
cp #54 ; ªãàá®à ¢«¥¢®
|
||||
jr z,Left
|
||||
cp #56 ; ªãàá®à ¢¯à ¢®
|
||||
cp #56 ; ªãàá®à ¢¯à ¢®
|
||||
jr z,Right
|
||||
cp #58 ; ªãàá®à ¢¢¥àå, ¯à¥¤. áâப ¨áâ®à¨¨
|
||||
cp #58 ; ªãàá®à ¢¢¥àå, ¯à¥¤. áâப ¨áâ®à¨¨
|
||||
jp z,history_prev
|
||||
cp #52 ; ªãàá®à ¢¨§, á«¥¤. áâப ¨áâ®à¨¨
|
||||
cp #52 ; ªãàá®à ¢¨§, á«¥¤. áâப ¨áâ®à¨¨
|
||||
jp z,history_next
|
||||
cp #59 ; PageUp, ¢ ç «® ¨áâ®à¨¨
|
||||
cp #59 ; PageUp, ¢ ç «® ¨áâ®à¨¨
|
||||
jp z,history_begin
|
||||
cp #53 ; PageDown, ¢ ª®¥æ ¨áâ®à¨¨
|
||||
cp #53 ; PageDown, ¢ ª®¥æ ¨áâ®à¨¨
|
||||
jp z,history_last
|
||||
cp #4F ; Del, 㤠«¨âì ᨬ¢®« ¢ ⥪. ¯®§¨æ¨¨
|
||||
cp #4F ; Del, 㤠«¨âì ᨬ¢®« ¢ ⥪. ¯®§¨æ¨¨
|
||||
jp z,Delete
|
||||
cp #57 ; Home, ¢ ç «® áâப¨
|
||||
cp #57 ; Home, ¢ ç «® áâப¨
|
||||
jp z,Home
|
||||
cp #51 ; End, ¢ ª®¥æ áâப¨
|
||||
cp #51 ; End, ¢ ª®¥æ áâப¨
|
||||
jp z,End1
|
||||
cp #50 ; Ins, ᬥ ०¨¬ ¢¢®¤
|
||||
cp #50 ; Ins, ᬥ ०¨¬ ¢¢®¤
|
||||
jr z,change_insert_mode
|
||||
bit 5,b ; Ctrl ¡¨â
|
||||
bit 5,b ; Ctrl ¡¨â
|
||||
jr z,.exit
|
||||
cp #4F+#80 ; Ctrl+Del, ®ç¨áâ¨âì ¨áâ®à¨î ª®¬ ¤
|
||||
cp #4F+#80 ; Ctrl+Del, ®ç¨áâ¨âì ¨áâ®à¨î ª®¬ ¤
|
||||
jp z,clear_history
|
||||
.exit: pop de
|
||||
ret
|
||||
@ -488,52 +483,52 @@ change_insert_mode:
|
||||
ret
|
||||
|
||||
; Šãàá®à ¢«¥¢®
|
||||
Left: ld a,(iy+2)
|
||||
Left: ld a,(iy + Input_Line.Cur_X)
|
||||
dec a
|
||||
jp p,ComPrint
|
||||
ld a,(iy+3) ; ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||||
sub step_scroll ; è £ áªà®««¨£
|
||||
ret c ; ªãàá®à ¢ ªà ©¥¬ «¥¢®¬ ¯®«®¦.
|
||||
ld (iy+3),a ; X ᬥé. áâப¨ § «¥¢ë© ªà © (¢ ᨬ¢®« å)
|
||||
ld a,(iy+2) ; X ¯®«®¦. ªãàá®à ¢ ¯à¥¤¥« å áâப¨
|
||||
add a,step_scroll-1 ; è £ áªà®««¨£
|
||||
ld a,(iy + Input_Line.Left_Shift) ; ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||||
sub step_scroll ; è £ áªà®««¨£
|
||||
ret c ; ªãàá®à ¢ ªà ©¥¬ «¥¢®¬ ¯®«®¦.
|
||||
ld (iy + Input_Line.Left_Shift),a ; X ᬥé. áâப¨ § «¥¢ë© ªà © (¢ ᨬ¢®« å)
|
||||
ld a,(iy + Input_Line.Cur_X) ; X ¯®«®¦. ªãàá®à ¢ ¯à¥¤¥« å áâப¨
|
||||
add a,step_scroll-1 ; è £ áªà®««¨£
|
||||
ComPrint:
|
||||
ld (iy+2),a
|
||||
jp print_inpline ; ¢ë¢¥á⨠áâபã íªà
|
||||
ld (iy + Input_Line.Cur_X),a
|
||||
jp print_inpline ; ¢ë¢¥á⨠áâபã íªà
|
||||
|
||||
; Šãàá®à ¢¯à ¢®
|
||||
Right: ld a,(iy+2) ; X ¯®«®¦. ªãàá®à ¢ ¯à¥¤¥« å áâப¨
|
||||
add a,(iy+3) ; ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||||
cp (iy+4) ; ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
|
||||
Right: ld a,(iy + Input_Line.Cur_X) ; X ¯®«®¦. ªãàá®à ¢ ¯à¥¤¥« å áâப¨
|
||||
add a,(iy + Input_Line.Left_Shift) ; ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||||
cp (iy+4) ; ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
|
||||
ret z
|
||||
ld a,(width_inpline) ; è¨à¨ ¯®«ï ¢¢®¤
|
||||
ld a,(width_inpline) ; è¨à¨ ¯®«ï ¢¢®¤
|
||||
ld b,a
|
||||
ld a,(iy+2) ; X ¯®«®¦. ªãàá®à ¢ ¯à¥¤¥« å áâப¨
|
||||
ld a,(iy + Input_Line.Cur_X) ; X ¯®«®¦. ªãàá®à ¢ ¯à¥¤¥« å áâப¨
|
||||
inc a
|
||||
cp b
|
||||
jr nz,ComPrint
|
||||
inc (iy+3) ; ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||||
ld a,(iy+2) ; X ¯®«®¦. ªãàá®à ¢ ¯à¥¤¥« å áâப¨
|
||||
sub step_scroll-1 ; è £ áªà®««¨£
|
||||
inc (iy + Input_Line.Left_Shift) ; ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||||
ld a,(iy + Input_Line.Cur_X) ; X ¯®«®¦. ªãàá®à ¢ ¯à¥¤¥« å áâப¨
|
||||
sub step_scroll-1 ; è £ áªà®««¨£
|
||||
jr ComPrint
|
||||
|
||||
; Backspace - 㤠«¨âì ᨬ¢®« «¥¢¥¥ ªãàá®à
|
||||
back_space:
|
||||
ld a,(iy+2) ; X ⥪. ¯®«®¦. ªãàá®à ¢ áâப¥
|
||||
ld a,(iy + Input_Line.Cur_X) ; X ⥪. ¯®«®¦. ªãàá®à ¢ áâப¥
|
||||
or a
|
||||
jr nz,back_space1
|
||||
ld a,(iy+3) ; ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||||
sub step_scroll ; è £ áªà®««¨£
|
||||
ld a,(iy + Input_Line.Left_Shift) ; ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||||
sub step_scroll ; è £ áªà®««¨£
|
||||
ret c
|
||||
ld (iy+3),a
|
||||
inc (iy+2) ;+2 ⥪. ¯®«®¦. ªãàá®à ¢ áâப¥
|
||||
ld (iy + Input_Line.Left_Shift),a
|
||||
inc (iy + Input_Line.Cur_X) ;+2 ⥪. ¯®«®¦. ªãàá®à ¢ áâப¥
|
||||
back_space1:
|
||||
ld hl,struct_input_line ; áâàãªâãà ¡ãä¥à ~input line~
|
||||
ld a,(iy+2) ;+2 X ⥪. ¯®«®¦. ªãàá®à ¢ áâப¥
|
||||
add a,(iy+3) ;+3 ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||||
ld hl,Buffers.input_line ; áâàãªâãà ¡ãä¥à ~input line~
|
||||
ld a,(iy + Input_Line.Cur_X) ;+2 X ⥪. ¯®«®¦. ªãàá®à ¢ áâப¥
|
||||
add a,(iy + Input_Line.Left_Shift) ;+3 ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||||
add a,l
|
||||
ld l,a
|
||||
jr nc,$+3
|
||||
jr nc,$+3 ;!FIXIT
|
||||
inc h
|
||||
inc hl
|
||||
inc hl
|
||||
@ -543,27 +538,27 @@ back_space1:
|
||||
ld d,h
|
||||
ld e,l
|
||||
dec de
|
||||
ld a,(iy+4) ;+4 ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
|
||||
sub (iy+3) ; ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||||
sub (iy+2) ; X ¯®«®¦. ªãàá®à ¢ ¯à¥¤¥« å áâப¨
|
||||
jr z,$+7 ; ªãàá®à § ª®æ®¬ áâப¨
|
||||
ld a,(iy + Input_Line.Symbols_Num) ;+4 ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
|
||||
sub (iy + Input_Line.Left_Shift) ; ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||||
sub (iy + Input_Line.Cur_X) ; X ¯®«®¦. ªãàá®à ¢ ¯à¥¤¥« å áâப¨
|
||||
jr z,$+7 ; ªãàá®à § ª®æ®¬ áâப¨ ;!FIXIT
|
||||
ld c,a
|
||||
ld b,0
|
||||
ldir ; ®¡®¢¨âì ®áâ ⮪ áâப¨
|
||||
ldir ; ®¡®¢¨âì ®áâ ⮪ áâப¨
|
||||
xor a
|
||||
ld (de),a ; ¢ ª®¥æ áâப¨
|
||||
dec (iy+2) ; X ¯®«®¦. ªãàá®à ¢ ¯à¥¤¥« å áâப¨
|
||||
dec (iy+4) ; ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
|
||||
jp print_inpline ; ¢ë¢¥á⨠áâபã íªà
|
||||
ld (de),a ; ¢ ª®¥æ áâப¨
|
||||
dec (iy + Input_Line.Cur_X) ; X ¯®«®¦. ªãàá®à ¢ ¯à¥¤¥« å áâப¨
|
||||
dec (iy + Input_Line.Symbols_Num) ; ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
|
||||
jp print_inpline ; ¢ë¢¥á⨠áâபã íªà
|
||||
|
||||
; Delete - 㤠«¨âì ᨬ¢®« ¢ ⥪. ¯®§¨æ¨¨
|
||||
Delete: ld hl,struct_input_line ; áâàãªâãà ¡ãä¥à ~input line~
|
||||
ld a,(iy+2) ; X ⥪. ¯®«®¦. ªãàá®à ¢ áâப¥
|
||||
Delete: ld hl,Buffers.input_line ; áâàãªâãà ¡ãä¥à ~input line~
|
||||
ld a,(iy + Input_Line.Cur_X) ; X ⥪. ¯®«®¦. ªãàá®à ¢ áâப¥
|
||||
inc a
|
||||
add a,(iy+3) ; ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||||
add a,(iy + Input_Line.Left_Shift) ; ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||||
add a,l
|
||||
ld l,a
|
||||
jr nc,$+3
|
||||
jr nc,$+3 ;!FIXIT
|
||||
inc h
|
||||
inc hl
|
||||
inc hl
|
||||
@ -573,74 +568,74 @@ Delete: ld hl,struct_input_line ;
|
||||
ld d,h
|
||||
ld e,l
|
||||
dec de
|
||||
ld a,(iy+4) ;+4 ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
|
||||
sub (iy+3) ; ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||||
sub (iy+2) ; X ⥪. ¯®«®¦. ªãàá®à ¢ áâப¥
|
||||
ret z ; ªãàá®à § ª®æ®¬ áâப¨
|
||||
ld a,(iy + Input_Line.Symbols_Num) ;+4 ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
|
||||
sub (iy + Input_Line.Left_Shift) ; ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||||
sub (iy + Input_Line.Cur_X) ; X ⥪. ¯®«®¦. ªãàá®à ¢ áâப¥
|
||||
ret z ; ªãàá®à § ª®æ®¬ áâப¨
|
||||
ld c,a
|
||||
ld b,0
|
||||
ldir ; ®¡®¢¨âì ®áâ ⮪ áâப¨
|
||||
ldir ; ®¡®¢¨âì ®áâ ⮪ áâப¨
|
||||
xor a
|
||||
ld (de),a ; ¢ ª®¥æ áâப¨
|
||||
dec (iy+4) ; ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
|
||||
jp print_inpline ; ¢ë¢¥á⨠áâபã íªà
|
||||
ld (de),a ; ¢ ª®¥æ áâப¨
|
||||
dec (iy + Input_Line.Symbols_Num) ; ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
|
||||
jp print_inpline ; ¢ë¢¥á⨠áâபã íªà
|
||||
|
||||
; Home - ¢ ç «® áâப¨
|
||||
Home: ld a,(iy+2) ; X ⥪. ¯®«®¦. ªãàá®à ¢ áâப¥
|
||||
add a,(iy+3) ; ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||||
Home: ld a,(iy + Input_Line.Cur_X) ; X ⥪. ¯®«®¦. ªãàá®à ¢ áâப¥
|
||||
add a,(iy + Input_Line.Left_Shift) ; ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||||
ret z
|
||||
xor a ; X ¯®«®¦. ªãàá®à
|
||||
ld (iy+2),a ; X ¯®«®¦. ªãàá®à ¢ ¯à¥¤¥« å áâப¨
|
||||
ld (iy+3),a ; ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||||
jp ComPrint ; ¢ë¢¥á⨠áâபã íªà
|
||||
xor a ; X ¯®«®¦. ªãàá®à
|
||||
ld (iy + Input_Line.Cur_X),a ; X ¯®«®¦. ªãàá®à ¢ ¯à¥¤¥« å áâப¨
|
||||
ld (iy + Input_Line.Left_Shift),a ; ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||||
jp ComPrint ; ¢ë¢¥á⨠áâபã íªà
|
||||
|
||||
; End - ¢ ª®¥æ áâப¨
|
||||
End1: ld a,(iy+4) ;+4 ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
|
||||
sub (iy+3) ;+3 ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||||
cp (iy+2) ;+2 X ⥪. ¯®«®¦. ªãàá®à ¢ áâப¥
|
||||
End1: ld a,(iy + Input_Line.Symbols_Num) ;+4 ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
|
||||
sub (iy + Input_Line.Left_Shift) ;+3 ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||||
cp (iy + Input_Line.Cur_X) ;+2 X ⥪. ¯®«®¦. ªãàá®à ¢ áâப¥
|
||||
ret z
|
||||
add a,(iy+3) ; ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||||
add a,(iy + Input_Line.Left_Shift) ; ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||||
ld c,a
|
||||
ld (iy+3),0 ; ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||||
ld a,(width_inpline) ; è¨à¨ ¯®«ï ¢¢®¤
|
||||
ld (iy + Input_Line.Left_Shift),0 ; ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||||
ld a,(width_inpline) ; è¨à¨ ¯®«ï ¢¢®¤
|
||||
sub c
|
||||
jr z,EndLp
|
||||
jr nc,EndNIL
|
||||
neg
|
||||
EndLp: inc (iy+3) ; X ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||||
sub step_scroll ; è £ áªà®««¨£
|
||||
EndLp: inc (iy + Input_Line.Left_Shift) ; X ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||||
sub step_scroll ; è £ áªà®««¨£
|
||||
jr nc,EndLp
|
||||
EndNIL: ld a,(iy+4) ; ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
|
||||
sub (iy+3) ; ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||||
jp ComPrint ; ¢ë¢¥á⨠áâபã íªà
|
||||
EndNIL: ld a,(iy + Input_Line.Symbols_Num) ; ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
|
||||
sub (iy + Input_Line.Left_Shift) ; ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||||
jp ComPrint ; ¢ë¢¥á⨠áâபã íªà
|
||||
|
||||
|
||||
|
||||
|
||||
; Žç¨áâ¨âì ¡ãä¥à áâப¨
|
||||
clear_input_line:
|
||||
call clear_inpline ; ®ç¨áâ¨âì áâàãªâãàã ~input line~
|
||||
jp print_inpline ; ¢ë¢¥á⨠áâபã íªà
|
||||
call clear_inpline ; ®ç¨áâ¨âì áâàãªâãàã ~input line~
|
||||
jp print_inpline ; ¢ë¢¥á⨠áâபã íªà
|
||||
|
||||
|
||||
; ®ç¨áâ¨âì áâàãªâãàã ~input line~
|
||||
clear_inpline:
|
||||
xor a
|
||||
ld hl,struct_input_line ; áâàãªâãà ¡ãä¥à ~input line~
|
||||
ld b,(hl) ;+0 ¬ ªá. ¤«¨ áâப¨
|
||||
inc hl
|
||||
ld (hl),a ;+1 á¡à. ä« £ ReadyString
|
||||
inc hl
|
||||
ld (hl),a ;+2 X ⥪. ¯®«®¦. ªãàá®à ¢ áâப¥
|
||||
inc hl
|
||||
ld (hl),a ;+3 ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||||
inc hl
|
||||
ld (hl),a ;+4 ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
|
||||
cp b
|
||||
ret z
|
||||
inc hl ;+5 ¡ãä¥à । ªâ. áâப¨
|
||||
ld (hl),a
|
||||
djnz $-2
|
||||
ld hl,Buffers.input_line ; áâàãªâãà ¡ãä¥à ~input line~
|
||||
ld b,(hl) ;+0 ¬ ªá. ¤«¨ áâப¨
|
||||
inc hl
|
||||
ld (hl),a ;+1 á¡à. ä« £ ReadyString
|
||||
inc hl
|
||||
ld (hl),a ;+2 X ⥪. ¯®«®¦. ªãàá®à ¢ áâப¥
|
||||
inc hl
|
||||
ld (hl),a ;+3 ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||||
inc hl
|
||||
ld (hl),a ;+4 ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
|
||||
cp b
|
||||
ret z
|
||||
inc hl ;+5 ¡ãä¥à । ªâ. áâப¨
|
||||
ld (hl),a
|
||||
djnz $-2 ;!FIXIT
|
||||
ret
|
||||
|
||||
|
||||
@ -648,17 +643,17 @@ clear_inpline:
|
||||
; ‚áâ ¢¨âì áâப㠨§ history-¡ãä¥à
|
||||
; ¢å®¤: de=áâàãªâãà áâப¨: +0=¤«¨ áâப¨, +1=áâப
|
||||
put_from_history:
|
||||
call clear_inpline ; ®ç¨áâ¨âì áâப㠢¢®¤
|
||||
ld a,(de) ;+0 ¤«¨ áâப¨
|
||||
call clear_inpline ; ®ç¨áâ¨âì áâப㠢¢®¤
|
||||
ld a,(de) ;+0 ¤«¨ áâப¨
|
||||
ld c,a
|
||||
put_history_loop:
|
||||
inc de
|
||||
ld hl,struct_input_line ; áâàãªâãà ¡ãä¥à ~input line~
|
||||
ld a,(iy+2) ; X ⥪. ¯®«®¦. ªãàá®à ¢ áâப¥
|
||||
add a,(iy+3)
|
||||
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,$+3
|
||||
jr nc,$+3 ;!FIXIT
|
||||
inc h
|
||||
inc hl
|
||||
inc hl
|
||||
@ -667,14 +662,14 @@ put_history_loop:
|
||||
inc hl
|
||||
ld a,(de)
|
||||
ld (hl),a
|
||||
inc (iy+4) ; ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
|
||||
inc (iy+2) ; X ⥪. ¯®«®¦. ªãàá®à ¢ áâப¥
|
||||
ld a,(width_inpline) ; è¨à¨ ¯®«ï ¢¢®¤
|
||||
cp (iy+2) ; X ⥪. ¯®«®¦. ªãàá®à ¢ ¯à¥¤¥« å áâப¨
|
||||
jr nz,$+8
|
||||
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,$+8 ;!FIXIT
|
||||
; ªãàá®à § ¯à ¢ë¬ ªà ¥¬ ¯®«ï ¢¢®¤
|
||||
inc (iy+3) ; ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||||
dec (iy+2) ; X ⥪. ¯®«®¦. ªãàá®à ¢ ¯à¥¤¥« å áâப¨
|
||||
inc (iy + Input_Line.Left_Shift) ; ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||||
dec (iy + Input_Line.Cur_X) ; X ⥪. ¯®«®¦. ªãàá®à ¢ ¯à¥¤¥« å áâப¨
|
||||
dec c
|
||||
jr nz,put_history_loop
|
||||
; ¢ë¢¥á⨠áâபã íªà
|
||||
@ -684,11 +679,11 @@ put_history_loop:
|
||||
|
||||
; Žç¨áâ¨âì ¨áâ®à¨î ª®¬ ¤
|
||||
clear_history:
|
||||
call clear_input_line ; ®ç¨áâ¨âì áâபã ~input line~
|
||||
call clear_input_line ; ®ç¨áâ¨âì áâபã ~input line~
|
||||
xor a
|
||||
ld (history_count),a ; ç¨á«® áâப ¢ history
|
||||
ld (history_cur_string),a ; ®¬¥à ⥪. áâப¨ history
|
||||
ld hl,history_buff ; ª®¥æ ¯®á«. áâப¨
|
||||
ld (history_count),a ; ç¨á«® áâப ¢ history
|
||||
ld (history_cur_string),a ; ®¬¥à ⥪. áâப¨ history
|
||||
ld hl,Buffers.history ; ª®¥æ ¯®á«. áâப¨
|
||||
ld (history_end),hl
|
||||
ret
|
||||
|
||||
@ -702,13 +697,13 @@ clear_history:
|
||||
;========================================================================
|
||||
|
||||
history_count:
|
||||
db 0 ; ç¨á«® áâப ¢ ¨áâ®à¨¨
|
||||
db 0 ; ç¨á«® áâப ¢ ¨áâ®à¨¨
|
||||
;
|
||||
history_cur_string:
|
||||
db 0 ; ®¬¥à ⥪. áâப¨ ¨áâ®à¨¨
|
||||
db 0 ; ®¬¥à ⥪. áâப¨ ¨áâ®à¨¨
|
||||
;
|
||||
history_end:
|
||||
dw history_buff ; ª®¥æ ¯®á«¥¤. áâப¨ ¨áâ®à¨¨
|
||||
dw Buffers.history ; ª®¥æ ¯®á«¥¤. áâப¨ ¨áâ®à¨¨
|
||||
|
||||
|
||||
|
||||
@ -718,10 +713,10 @@ history_end:
|
||||
history_begin:
|
||||
ld a,(history_count)
|
||||
or a
|
||||
ret z ; ¥â áâப
|
||||
ret z ; ¥â áâப
|
||||
xor a
|
||||
ld (history_cur_string),a
|
||||
jr history_copy ; ¯¥à¥©â¨ 1-î áâபã
|
||||
jr history_copy ; ¯¥à¥©â¨ 1-î áâபã
|
||||
|
||||
;-------------------------------------------------
|
||||
; ‚ ª®¥æ ¨áâ®à¨¨
|
||||
@ -729,9 +724,9 @@ history_begin:
|
||||
history_last:
|
||||
ld a,(history_count)
|
||||
or a
|
||||
ret z ; ¥â áâப
|
||||
ld (history_cur_string),a ; ãáâ. ¯®á«¥¤. ¯ãáâãî áâபã
|
||||
jp clear_input_line ; ¢¥àãâì ¯ãáâãî áâபã
|
||||
ret z ; ¥â áâப
|
||||
ld (history_cur_string),a ; ãáâ. ¯®á«¥¤. ¯ãáâãî áâபã
|
||||
jp clear_input_line ; ¢¥àãâì ¯ãáâãî áâபã
|
||||
|
||||
;-------------------------------------------------
|
||||
; ‘«¥¤ãîé ï áâப
|
||||
@ -745,7 +740,7 @@ history_next:
|
||||
ld hl,history_cur_string
|
||||
ld a,(hl)
|
||||
cp b
|
||||
jr c,$+7
|
||||
jr c,$+7 ;!FIXIT
|
||||
inc b
|
||||
ld (hl),b
|
||||
jp clear_input_line ; ¢¥àãâì ¯ãáâãî áâபã
|
||||
@ -767,7 +762,7 @@ history_prev:
|
||||
or a
|
||||
jr z,history_copy ; 㯥૨áì ¢ ç «® ¨áâ®à¨¨
|
||||
cp b
|
||||
jr c,$+3
|
||||
jr c,$+3 ;!FIXIT
|
||||
ld a,b
|
||||
dec a
|
||||
ld (hl),a
|
||||
@ -780,14 +775,14 @@ history_copy:
|
||||
; ¢ë室: de=áâப (¥¥ áâàãªâãà ¨§ history-¡ãä¥à )
|
||||
history_index:
|
||||
ld b,0
|
||||
ld hl,history_buff ; ¡ãä¥à ¨áâ®à¨¨
|
||||
ld hl,Buffers.history ; ¡ãä¥à ¨áâ®à¨¨
|
||||
or a ; ¨¤¥ªá áâப¨
|
||||
jr z,hist_index ; 1-ï áâப ¨áâ®à¨¨
|
||||
ld c,(hl) ; à §¬¥à áâப¨
|
||||
inc c
|
||||
add hl,bc ; á«¥¤. áâபã
|
||||
dec a
|
||||
jr nz,$-4
|
||||
jr nz,$-4 ;!FIXIT
|
||||
hist_index:
|
||||
ex de,hl
|
||||
ret
|
||||
@ -799,24 +794,24 @@ hist_index:
|
||||
; â¥å ¯®à, ¯®ª ¯®ï¢¨âáï ¤®áâ â®ç® ¬¥áâ ¤«ï ®¢®© áâப¨.
|
||||
;-----------------------------------------------------------
|
||||
history_adding:
|
||||
ld de,struct_input_line+4 ; áâàãªâãà áâப¨
|
||||
call history_compare ; áà ¢¨âì áâப¨
|
||||
ret z ; 㦥 ¥áâì â ª ï áâப
|
||||
ld bc,(history_end) ; ¤à¥á ª®æ ¯®á«. áâப¨
|
||||
ld hl,history_buff+history_size ; ¤à¥á ª®æ ¡ãä¥à
|
||||
ld de,Buffers.input_line.Symbols_Num ; áâàãªâãà áâப¨
|
||||
call history_compare ; áà ¢¨âì áâப¨
|
||||
ret z ; 㦥 ¥áâì â ª ï áâப
|
||||
ld bc,(history_end) ; ¤à¥á ª®æ ¯®á«. áâப¨
|
||||
ld hl,Buffers.history + history_size ; ¤à¥á ª®æ ¡ãä¥à
|
||||
and a
|
||||
sbc hl,bc ; hl=à §¬¥à ᢮¡. ¬¥áâ
|
||||
ld a,(de) ; ¤«¨ ®¢®© áâப¨
|
||||
sbc hl,bc ; hl=à §¬¥à ᢮¡. ¬¥áâ
|
||||
ld a,(de) ; ¤«¨ ®¢®© áâப¨
|
||||
inc a
|
||||
ld c,a
|
||||
xor a
|
||||
ld b,a
|
||||
sbc hl,bc ; 㬥é. ¢ ᢮¡. ¬¥á⥠¡ãä¥à ¨áâ®à¨¨ ?
|
||||
jr nc,history_add_ok ; ¤
|
||||
sbc hl,bc ; 㬥é. ¢ ᢮¡. ¬¥á⥠¡ãä¥à ¨áâ®à¨¨ ?
|
||||
jr nc,history_add_ok ; ¤
|
||||
; 㤠«¨âì ¯¥à¢ãî (á ¬ãî áâ àãî) áâப㠨§ ¡ãä¥à
|
||||
;push de
|
||||
ld de,history_buff ; ¡ãä¥à ¨áâ®à¨¨
|
||||
ld a,(de) ; ¤«¨ 1-© áâப¨
|
||||
ld de,Buffers.history ; ¡ãä¥à ¨áâ®à¨¨
|
||||
ld a,(de) ; ¤«¨ 1-© áâப¨
|
||||
inc a
|
||||
ld c,a
|
||||
xor a
|
||||
@ -837,7 +832,7 @@ history_adding:
|
||||
ldir
|
||||
ld hl,history_count
|
||||
dec (hl) ; --ç¨á«® áâப ¢ history
|
||||
;pop de ; ¢®ááâ. ¤à¥á struct_input_line+4
|
||||
;pop de ; ¢®ááâ. ¤à¥á Buffers.input_line.Symbols_Num
|
||||
jr history_adding
|
||||
;
|
||||
history_add_ok:
|
||||
@ -866,7 +861,7 @@ history_compare:
|
||||
ex af,af'
|
||||
xor a ; á¡à. ¨¤¥ªá áà ¢. áâப¨
|
||||
ex af,af'
|
||||
ld hl,history_buff ; ¡ãä¥à ¨áâ®à¨¨
|
||||
ld hl,Buffers.history ; ¡ãä¥à ¨áâ®à¨¨
|
||||
history_comp_loop:
|
||||
push de
|
||||
ld (move_cur_str+1),hl ; ⥪. áâப ¨áâ®à¨¨
|
||||
@ -922,7 +917,7 @@ move_to_end_history:
|
||||
; á®åà. áâப㠢® ¢à¥¬. ¡ãä¥à¥
|
||||
move_cur_str:
|
||||
ld hl,0 ; ⥪. áâப ¨áâ®à¨¨
|
||||
ld de,work_buffer ; ¢à¥¬. ¡ãä¥à
|
||||
ld de,Buffers.work.buffer ; ¢à¥¬. ¡ãä¥à
|
||||
ld c,(hl) ;+0 ¤«¨ áâப¨
|
||||
inc c ; ãç¥áâì ï祩ªã ¤«¨ë áâப¨
|
||||
xor a
|
||||
@ -944,7 +939,7 @@ move_cur_str:
|
||||
pop hl ; ®âªã¤
|
||||
ldir
|
||||
; ¢®ááâ. áâப㠨§ ¢à¥¬. ¡ãä¥à ¢ ª®¥æ ¨áâ®à¨¨
|
||||
ld hl,work_buffer ; ¢à¥¬. ¡ãä¥à
|
||||
ld hl,Buffers.work.buffer ; ¢à¥¬. ¡ãä¥à
|
||||
ld c,(hl)
|
||||
inc c
|
||||
ld b,a
|
||||
@ -982,18 +977,18 @@ insert_mode:
|
||||
|
||||
; 5 0
|
||||
; íªà ë© ¯ãâì
|
||||
screen_path:
|
||||
db "A:"
|
||||
BLOCK max_screen_path+1,0 ; 32+1
|
||||
; screen_path:
|
||||
; db "A:"
|
||||
; BLOCK max_screen_path+1,0 ; 32+1
|
||||
|
||||
; 6 0
|
||||
; á¨áâ¥¬ë© ¯ãâì
|
||||
system_path:
|
||||
BLOCK 256,0 ;!HARDCODE
|
||||
; system_path:
|
||||
; BLOCK 256,0 ;!HARDCODE
|
||||
|
||||
; ; 7 0
|
||||
; ; ‘âàãªâãà áâப¨ ¢¢®¤ ~input line~
|
||||
; struct_input_line:
|
||||
; Buffers.input_line.:
|
||||
; db max_len_comline ;+0 254 ¬ ªá. ç¨á«® ¢¢®¤. ᨬ¢®«®¢
|
||||
; db 0 ;+1 ä« £ ReadyString
|
||||
; db 0 ;+2 X ⥪. ¯®«®¦. ªãàá®à ¢ ¯à¥¤¥« å áâப¨
|
||||
@ -1008,7 +1003,7 @@ system_path:
|
||||
|
||||
; ; 9 0
|
||||
; ; <20> ¡®ç¨© ¡ãä¥à
|
||||
; work_buffer:
|
||||
; Buffers.work.buffer:
|
||||
; BLOCK 512,0
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
;
|
||||
@ -7,11 +7,11 @@ SAVEHL: dw 0
|
||||
; <20> §¡®à ¨ ¢ë¯®«¥¨¥ ¢¢¥¤¥ëå ª®¬ ¤ ¨ ¨¬¥ ä ©«®¢
|
||||
;-------------------------------------------------------------
|
||||
COMP: call EVALCMD ; (batch.asm)
|
||||
ld hl,struct_input_line+5
|
||||
ld hl,Buffers.input_line.Path
|
||||
dec hl
|
||||
ld c,(hl) ; ¤«¨ áâப¨
|
||||
ld b,0
|
||||
inc hl ; struct_input_line+5
|
||||
inc hl ; Buffers.input_line.Path
|
||||
.loop: ld a,(hl)
|
||||
cp " "
|
||||
jr nz,.COMP01
|
||||
@ -42,7 +42,7 @@ COMP: call EVALCMD ; (batch.asm)
|
||||
.skip: ; <20>¥ ¤®á-ª®¬ ¤ë. ’¥áâ § ¤ ¨¥ ¤¨áª ¨ § ¯ãáª ä ©«
|
||||
ld h,d
|
||||
ld l,e
|
||||
; hl=struct_input_line+5
|
||||
; hl=Buffers.input_line.Path
|
||||
ld b,(hl) ;+0 1-© ᨬ¢®«
|
||||
inc hl
|
||||
ld c,(hl) ;+1 2-© ᨬ¢®«
|
||||
@ -65,10 +65,10 @@ COMP: call EVALCMD ; (batch.asm)
|
||||
jp c,print_err_message ; ¢ë¢®¤ á®®¡é¥¨ï
|
||||
|
||||
;!FIXIT âãâ ¢®ááâ ¢«¨¢ ¥âáï ¤¨à¥ªâ®à¨ï ¨ ¬®£ãâ ¡ëâì £«îª¨ ®¢®¬ ï¤à¥
|
||||
;!TODO ¤®áâ ¢ âì system_path ®â¤¥«ì® ¤«ï ª ¦¤®£® ¤¨áª (¨«¨ ¢ ï¤à¥ ᤥ« âì?)
|
||||
;!TODO ¤®áâ ¢ âì Buffers.sys_path ®â¤¥«ì® ¤«ï ª ¦¤®£® ¤¨áª (¨«¨ ¢ ï¤à¥ ᤥ« âì?)
|
||||
; â¥áâ áãé¥á⢮¢ ¨¥ ¯ ¯ª¨ 楫¥¢®¬ ¤¨áª¥
|
||||
IFDEF MANY_SYS_PATHES
|
||||
ld hl,system_path ; ¡ãä¥à á¨áâ. ¯ãâ¨
|
||||
ld hl,Buffers.sys_path ; ¡ãä¥à á¨áâ. ¯ãâ¨
|
||||
ld c,Dss.ChDir ; ãáâ. ⥪. ¯ãâì
|
||||
RST ToDSS
|
||||
jp nc,Get_Path ; Ok
|
||||
@ -76,7 +76,7 @@ COMP: call EVALCMD ; (batch.asm)
|
||||
;
|
||||
|
||||
; ãáâ. ª®à¥ì, ¥â â ª®© ¯ ¯ª¨ ®¢®¬ ¤¨áª¥
|
||||
ld hl,system_path+1 ; ¡ãä¥à á¨áâ. ¯ãâ¨
|
||||
ld hl,Buffers.sys_path + 1 ; ¡ãä¥à á¨áâ. ¯ãâ¨
|
||||
ld (hl),0
|
||||
dec hl
|
||||
ld (hl),'\'
|
||||
@ -92,7 +92,7 @@ COMP: call EVALCMD ; (batch.asm)
|
||||
|
||||
; § ¤ ¥ ¤¨áª
|
||||
RUN_EXT: ex de,hl ; ¢®ááâ. ¤à¥á ç « áâப¨
|
||||
ld (SAVEHL),hl ; struct_input_line+5
|
||||
ld (SAVEHL),hl ; Buffers.input_line.Path
|
||||
ld de,EXTBF ; ¡ãä¥à
|
||||
ld bc,4*256 + Dss.EX_Path ; ¢ë¤¥«¨âì à áè. ä ©«
|
||||
RST ToDSS
|
||||
@ -124,7 +124,7 @@ RUN_EXT: ex de,hl ;
|
||||
jr nz,EXEERR
|
||||
push hl
|
||||
;ld a,(D96AD) ; ¤«¨ áâப¨ (inline.asm)
|
||||
ld a,(struct_input_line+4) ; ¤«¨ áâப¨
|
||||
ld a,(Buffers.input_line.Symbols_Num) ; ¤«¨ áâப¨
|
||||
ld b,a
|
||||
.loop: ld a,(hl)
|
||||
cp " "+1
|
||||
@ -187,12 +187,12 @@ RESTORE_ALL:
|
||||
;[x] 01/11/23 ;!TEST
|
||||
CALL Get_Path
|
||||
;
|
||||
LD A,(screen_path)
|
||||
LD A,(Buffers.screen_path)
|
||||
SUB 'A'
|
||||
LD C,Dss.ChDisk
|
||||
RST ToDSS
|
||||
;
|
||||
LD HL,system_path
|
||||
LD HL,Buffers.sys_path
|
||||
LD C,Dss.ChDir
|
||||
RST ToDSS
|
||||
;
|
||||
|
||||
@ -31,7 +31,7 @@ MAIN_MSG:
|
||||
;
|
||||
; 1 2 3 4 5 6 7
|
||||
; 01234567890123456789012345678901234567890123456789012345678901234567890123456789;
|
||||
stN .DIR_1_ : db "Volume in drive %1 %4 %5\r\n"
|
||||
stN .DIR_1_ : db "Volume in drive %1 %6 %7\r\n"
|
||||
db "Volume Serial Number is %2\r\n"
|
||||
DZ "\r\nDirectory of %3\r\n\n"
|
||||
stN .VERS_ : DZ "Estex DSS version %1. Shell version %2.\r\n" ;R13
|
||||
|
||||
112
SHELL/SHELL.ASM
112
SHELL/SHELL.ASM
@ -56,6 +56,7 @@ 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
|
||||
;---------------------------------------------------------------------[]
|
||||
;
|
||||
@ -91,15 +92,17 @@ org_addr EQU #8000 + CLP_Buffer
|
||||
;==============================================================
|
||||
; ’®çª ¢å®¤ ¢ ˜¥««
|
||||
;==============================================================
|
||||
shell:
|
||||
;!TODO merge: ªâ¨¢¨à®¢ âì ª®£¤ ¡ãä¥àë ¡ã¤ãâ ç¥à¥§ áâàãªâãàã, ¥ ã«ï¬¨
|
||||
;LD HL,WORK_BUFFERS
|
||||
;LD DE,WORK_BUFFERS+1
|
||||
;LD BC,BUFFERS_STRUCT-1
|
||||
;LD (HL),0
|
||||
;LDIR
|
||||
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
|
||||
@ -155,8 +158,8 @@ back_to_parent_process:
|
||||
;---------------------------------------------------------------
|
||||
option_c:
|
||||
;ld hl,T96AE ; ¨¬ï bat-ä ©« , 256 ¡ãä¥à (inline.asm)
|
||||
;ld hl,work_buffer+256;;
|
||||
ld hl,struct_input_line+5 ; ¨¬ï bat-ä ©«
|
||||
;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 ; ¢¥àãâìáï ¢ த¨â. ¯à®æ¥áá
|
||||
@ -187,7 +190,7 @@ run_shell_loop:
|
||||
run_shell_loop1:
|
||||
call input_line
|
||||
call newline ; ®¢ãî áâபã
|
||||
ld a,(struct_input_line+4) ; ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
|
||||
ld a,(Buffers.input_line.Symbols_Num) ; ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
|
||||
or a
|
||||
jr z,run_shell_loop1 ; ¯ãáâ ï
|
||||
; <20> àᨣ ¨ ¢ë¯®«¥¨¥ ª®¬ ¤
|
||||
@ -225,12 +228,12 @@ GET_CMD:
|
||||
dec hl
|
||||
cp '/' ; ®¯æ¨ï
|
||||
jr nz,.PROCESS
|
||||
ld de,work_buffer1 ; 128 ¡ãä¥à ¤«ï ¯ à ¬¥âà
|
||||
ld de,Buffers.work.buffer1 ; 128 ¡ãä¥à ¤«ï ¯ à ¬¥âà
|
||||
ld c,Dss.GSwitch ; ¢ë¤¥«. ¯ à ¬¥âà ª®¬-áâப¨
|
||||
RST ToDSS
|
||||
push af
|
||||
ex de,hl
|
||||
ld hl,work_buffer1 ; 128 ¡ãä¥à ¤«ï ¯ à ¬¥âà
|
||||
ld hl,Buffers.work.buffer1 ; 128 ¡ãä¥à ¤«ï ¯ à ¬¥âà
|
||||
inc hl
|
||||
call set_option_flag ; ãáâ. ¡¨âë ä« £®¢
|
||||
pop af
|
||||
@ -239,18 +242,18 @@ GET_CMD:
|
||||
; ãáâ. ¡¨â-ä« £
|
||||
.PROCESS:
|
||||
ld a,(RUNMODE)
|
||||
set 6,a ; 6-© ¡¨â (¢¢®¤¨«¨áì ¤®¯®«. ¯ à ¬¥âàë) ;!HARDCODE
|
||||
set 6,a ; 6-© ¡¨â (¢¢®¤¨«¨áì ¤®¯®«. ¯ à ¬¥âàë) ;!HARDCODE
|
||||
ld (RUNMODE),a
|
||||
; ᪮¯¨à. ¯ à ¬¥âà ¨§ ª®¬-áâப¨
|
||||
; ¢ ¡ãä¥à áâப¨ । ªâ¨à®¢ ¨ï
|
||||
;copy_to_input_line:
|
||||
ld iy,struct_input_line ; áâàãªâãà ¡ãä¥à ~input line~
|
||||
ld iy,Buffers.input_line ; áâàãªâãà ¡ãä¥à ~input line~
|
||||
push hl
|
||||
call clear_inpline ; ®¡ã«¨âì áâàãªâãàã "input line"
|
||||
pop de ; de=墮áâ áâப¨
|
||||
.loop: ld hl,struct_input_line ; áâàãªâãà ¡ãä¥à ~input line~
|
||||
ld a,(iy+2) ; X ⥪. ¯®«®¦. ªãàá®à ¢ áâப¥
|
||||
add a,(iy+3)
|
||||
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
|
||||
@ -260,20 +263,20 @@ GET_CMD:
|
||||
inc hl
|
||||
inc hl
|
||||
inc hl
|
||||
ld a,(de) ; ᨬ¢®« ¨§ áâப¨
|
||||
ld a,(de) ; ᨬ¢®« ¨§ áâப¨
|
||||
ld (hl),a
|
||||
or a
|
||||
ret z ; ª®¥æ áâப¨
|
||||
inc (iy+4) ; ç¨á«® ¢¢¥¤. ᨬ¢®«®¢
|
||||
inc (iy+2) ; X ⥪. ¯®«®¦. ªãàá®à ¢ áâப¥
|
||||
ld a,(width_inpline) ; è¨à¨ ¯®«ï ¢¢®¤
|
||||
cp (iy+2) ; X ⥪. ¯®«®¦. ªãàá®à ¢ ¯à¥¤¥« å áâப¨
|
||||
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+3) ; ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||||
dec (iy+2) ; X ⥪. ¯®«®¦. ªãàá®à ¢ ¯à¥¤¥« å áâப¨
|
||||
2: ld a,(de) ; ᨬ¢®« ¨§ áâப¨
|
||||
inc de ; ¯à®¤¢. ¯®â®ª
|
||||
inc (iy + Input_Line.Left_Shift) ; ᬥé. áâப¨ § «¥¢ë© ªà ©
|
||||
dec (iy + Input_Line.Cur_X) ; X ⥪. ¯®«®¦. ªãàá®à ¢ ¯à¥¤¥« å áâப¨
|
||||
2: ld a,(de) ; ᨬ¢®« ¨§ áâப¨
|
||||
inc de ; ¯à®¤¢. ¯®â®ª
|
||||
cp " "
|
||||
jr nc,.loop
|
||||
ret
|
||||
@ -315,21 +318,21 @@ setopt4: ld a,c
|
||||
;GETPATH:
|
||||
Get_Path:
|
||||
; ã§ âì ⥪. ª â «®£
|
||||
ld hl,system_path ; 256 ¡ãä¥à á¨áâ. ¯ãâ¨
|
||||
ld hl,Buffers.sys_path ; 256 ¡ãä¥à á¨áâ. ¯ãâ¨
|
||||
ld c,Dss.CurDir
|
||||
RST ToDSS
|
||||
.disk: ; ã§ âì ⥪. ¤¨áª
|
||||
ld c,Dss.CurDisk
|
||||
RST ToDSS
|
||||
add a,"A"
|
||||
ld (screen_path),a ; 33 áâப íªà ®£® ¯ãâ¨
|
||||
ld (Buffers.screen_path),a ; 33 áâப íªà ®£® ¯ãâ¨
|
||||
ret
|
||||
|
||||
;!FIXIT ã¡à âì «¨è¨¥ ¢ë§®¢ë
|
||||
; ‚®ááâ ®¢¨âì ⥪. ¤¨áª ¨ ¯ãâì (¯®á«¥ ®è¨¡ª¨)
|
||||
restore_disk_path:
|
||||
; ãáâ. ⥪. ¤¨áª
|
||||
ld a,(screen_path) ; 33 áâப íªà ®£® ¯ãâ¨
|
||||
ld a,(Buffers.screen_path) ; 33 áâப íªà ®£® ¯ãâ¨
|
||||
sub "A"
|
||||
ld c,Dss.ChDisk
|
||||
RST ToDSS
|
||||
@ -337,7 +340,7 @@ restore_disk_path:
|
||||
;!FIXIT ã¡à âì «¨è¨¥ ¢ë§®¢ë
|
||||
restore_path:
|
||||
; ãáâ. ⥪. ª â «®£
|
||||
ld hl,system_path ; 256 ¡ãä¥à á¨áâ. ¯ãâ¨
|
||||
ld hl,Buffers.sys_path ; 256 ¡ãä¥à á¨áâ. ¯ãâ¨
|
||||
ld c,Dss.ChDir
|
||||
RST ToDSS
|
||||
ret
|
||||
@ -556,33 +559,40 @@ T8C24: db "OFF",0
|
||||
include 'Commands/reboot.asm' ; á®äâ à¥á¥â
|
||||
;
|
||||
DISPLAY "Empty space for buffers from ",/H,$
|
||||
|
||||
CLEAR_ZONE:
|
||||
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 áâப ¢¢®¤
|
||||
; 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
|
||||
; history_buff:
|
||||
; BLOCK history_size,0 ; 256
|
||||
|
||||
; 9 0
|
||||
; <20> ¡®ç¨© ¡ãä¥à
|
||||
work_buffer:
|
||||
BLOCK 512,0
|
||||
; work_buffer:
|
||||
; BLOCK 512,0
|
||||
|
||||
work_buffer1 equ $ ; 2-© à ¡. ¡ãä¥à ; 128 bytes
|
||||
work_buffer2 equ work_buffer1+128 ; 3-© à ¡. ¡ãä¥à ; 256 bytes
|
||||
; work_buffer1 equ $ ; 2-© à ¡. ¡ãä¥à ; 128 bytes
|
||||
; work_buffer2 equ work_buffer1+128 ; 3-© à ¡. ¡ãä¥à ; 256 bytes
|
||||
;
|
||||
|
||||
@ -1 +1 @@
|
||||
370
|
||||
393
|
||||
@ -7,19 +7,17 @@
|
||||
.Path BLOCK max_len_comline+1,0 ;+5 áâப ¢¢®¤
|
||||
ENDS
|
||||
|
||||
STRUCT History
|
||||
.cmds BLOCK history_size,0 ; 256
|
||||
ENDS
|
||||
|
||||
STRUCT Work
|
||||
.work_buffer BLOCK 512,0
|
||||
.work_buffer1 BLOCK 128,0
|
||||
.work_buffer2 BLOCK 256,0
|
||||
.free_buffer BLOCK 3840,0
|
||||
.buffer BLOCK 512,0
|
||||
.buffer1 BLOCK 128,0
|
||||
.buffer2 BLOCK 256,0
|
||||
.free BLOCK 3840,0
|
||||
ENDS
|
||||
|
||||
STRUCT Struc_Buffers
|
||||
.screen_path BLOCK 2 + max_screen_path + 1, 0 ; db "A:" : BLOCK max_screen_path+1,0
|
||||
.sys_path BLOCK 256,0
|
||||
.input_line Input_Line
|
||||
.history History
|
||||
.history BLOCK history_size,0 ; 256
|
||||
.work Work
|
||||
ENDS
|
||||
|
||||
Loading…
Reference in New Issue
Block a user