711 lines
12 KiB
Plaintext
711 lines
12 KiB
Plaintext
|
||
; LAST UPDATE: 28.05.2025 savelij
|
||
|
||
;[]==========================================================[]
|
||
DOSline SUB A
|
||
LD (HistCurrent),A
|
||
SPDSS DSSF.TESTKEY
|
||
BIT KEYBSTAT.B_ALT,B
|
||
JR Z,DOSln0
|
||
LD A,D
|
||
AND 0x7F
|
||
CP SC.1 ; 0x02
|
||
JR C,DOSlnEx
|
||
CP SC.BKSP ; 0x0E
|
||
JP C,RESIDENT.QSearch
|
||
CP SC.Q ; 0x10
|
||
JR C,DOSlnEx
|
||
CP SC.QSKOBKAL ; 0x1A
|
||
JP C,RESIDENT.QSearch
|
||
CP SC.A ; 0x1D
|
||
JR C,DOSlnEx
|
||
CP SC.DOTZAP ; 0x26
|
||
JP C,RESIDENT.QSearch
|
||
CP SC.Z ; 0x2A
|
||
JR C,DOSlnEx
|
||
CP SC.ZAP ; 0x31
|
||
JP C,RESIDENT.QSearch
|
||
JR DOSlnEx
|
||
|
||
DOSln0 LD A,E
|
||
CP 0x0D
|
||
JP Z,RunDOSline
|
||
CP 0x1B
|
||
JP Z,ClrDOSln1
|
||
CP '!' ; 0x21
|
||
JR NC,DOSloop
|
||
CP ' ' ; 0x20
|
||
JR NZ,DOSln1
|
||
LD A,(DOSstr.slen)
|
||
OR A
|
||
JR NZ,DOSloop
|
||
; ¯®¬¥âª ä ©« ¯® SPACE
|
||
SPDSS DSSF.SCANKEY
|
||
JP RESIDENT.MarkFile
|
||
|
||
DOSln1 LD A,D
|
||
CP SC.ENTER | SC.RUS ; 0xA8
|
||
JR Z,DOSloop
|
||
CP SC.QSKOBKAL | SC.RUS ; 0x9A
|
||
JR Z,DOSloop
|
||
CP SC.QSKOBKAR | SC.RUS ; 0x9B
|
||
JR Z,DOSloop
|
||
CP SC.E | SC.RUS ; 0x92
|
||
JR Z,DOSloop
|
||
DOSlnEx
|
||
SPDSS DSSF.SCANKEY
|
||
RET
|
||
|
||
DOSloop SUB A
|
||
LD (HistCurrent),A
|
||
LD IX,DOSstr
|
||
LD HL,DOSTab
|
||
CALL DOSInputLine
|
||
RET C
|
||
JR Z,RunDOSline
|
||
SPDSS DSSF.TESTKEY
|
||
LD A,E
|
||
CP 0x1B
|
||
RET NZ
|
||
LD A,(DOSstr.slen)
|
||
OR A
|
||
RET Z
|
||
CALL ClearDOSline
|
||
SPDSS DSSF.SCANKEY
|
||
JR DOSloop
|
||
|
||
;[]----------------------------------------------------------[]
|
||
ClrDOSln1
|
||
SPDSS DSSF.SCANKEY
|
||
LD A,(DOSstr.slen)
|
||
OR A
|
||
JP Z,ShowDOSscreen
|
||
ClearDOSline SUB A
|
||
LD (HistCurrent),A
|
||
LD A,(DOSstr.slen)
|
||
OR A
|
||
RET Z
|
||
LD HL,DOSinp
|
||
SUB A
|
||
LD B,0x80
|
||
.L1 LD (HL),A
|
||
INC HL
|
||
DJNZ .L1
|
||
LD (DOSstr.slen),A
|
||
LD (DOSstr.posX),A
|
||
LD (DOSstr.addX),A
|
||
MAKEWINDOW WINSUBOBJ.WOBIND
|
||
W_FILL 254,229,380,10,COLORI.PANEL
|
||
W_END
|
||
RET
|
||
|
||
;[]----------------------------------------------------------[]
|
||
RunDOSline
|
||
SPDSS DSSF.SCANKEY
|
||
LD A,(DOSstr.slen)
|
||
OR A
|
||
JP Z,OpenFile
|
||
CALL SaveDOSline
|
||
LD HL,DOSinp
|
||
LD A,(HL)
|
||
CP 0x20
|
||
JP Z,ClearDOSline
|
||
LD A,(DOSstr.slen)
|
||
LD B,A
|
||
LD C,0x00
|
||
LD A,0x20
|
||
RunDLn0 CP (HL)
|
||
JR Z,RunDLine
|
||
INC HL
|
||
INC C
|
||
DJNZ RunDLn0
|
||
RunDLine DEC HL
|
||
LD A,'\\'
|
||
CP (HL)
|
||
JP NZ,RunDOSexe
|
||
LD HL,DOSinp
|
||
LD DE,WorkBuffer
|
||
PUSH DE
|
||
LD B,0x00
|
||
LDIR
|
||
SUB A
|
||
LD (DE),A
|
||
CALL ClearDOSline
|
||
POP HL
|
||
LD A,(DOSinp + 1)
|
||
CP ':'
|
||
JR NZ,.L1
|
||
LD (IY + PANEL.CURRPATH),0x00
|
||
.L1 CALL NewDIRECTORY
|
||
LD A,(TreeFlag)
|
||
OR A
|
||
RET Z
|
||
BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
|
||
RET NZ
|
||
PUSH IY
|
||
BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
|
||
LD IY,LeftPanel
|
||
LD HL,RightPanel
|
||
JR NZ,.L2
|
||
LD IY,RightPanel
|
||
LD HL,LeftPanel
|
||
.L2 LD DE,PANEL.CURRPATH
|
||
ADD HL,DE
|
||
INC HL
|
||
INC HL
|
||
IF TREE_REZID
|
||
CALL RESIDENT.FindTreeDIR
|
||
ELSE
|
||
CALL FindTreeDIRR
|
||
ENDIF
|
||
CALL PrintDIR
|
||
CALL PrnFileInfo
|
||
PUSH IY
|
||
POP IX
|
||
LD DE,PANEL.BARXL
|
||
ADD IX,DE
|
||
CALL PrnVScrBar
|
||
POP IY
|
||
RET
|
||
|
||
RunDOSexe LD HL,DOSinp - 1
|
||
RunDE1 INC HL
|
||
LD A,(HL)
|
||
CP '!'
|
||
JR C,RunDOSexe1
|
||
CP '.'
|
||
JR NZ,RunDE1
|
||
INC HL
|
||
LD A,(HL)
|
||
RES 5,A
|
||
CP 'F'
|
||
JR NZ,RunDOSexe1
|
||
INC HL
|
||
LD A,(HL)
|
||
RES 5,A
|
||
CP 'L'
|
||
JR NZ,RunDOSexe1
|
||
INC HL
|
||
LD A,(HL)
|
||
RES 5,A
|
||
CP 'X'
|
||
JR NZ,RunDOSexe1
|
||
LD HL,DOSinp
|
||
LD DE,WorkBuffer
|
||
SUB A
|
||
.L1 LDI
|
||
CP (HL)
|
||
JR NZ,.L1
|
||
LD (DE),A
|
||
CALL ClearDOSline
|
||
CALL RunFLX
|
||
JP C,DOSError
|
||
RET
|
||
|
||
RunDOSexe1 ld hl,WorkBuffer
|
||
ld de,WorkBuffer + 1
|
||
ld bc,0x0100
|
||
ld (hl),0
|
||
ldir
|
||
LD DE,WorkBuffer
|
||
call GetFileName
|
||
jp c,.error
|
||
ld hl,DOSinp
|
||
call SkipWord
|
||
ld a,(hl)
|
||
and a
|
||
jr z,.endOfLine
|
||
dec hl
|
||
ld de,WorkBuffer
|
||
call ConcatString
|
||
.endOfLine: ld hl,WorkBuffer
|
||
ld de,WorkBuffer + 0x0100
|
||
SPDSS DSSF.EX_PATH,4
|
||
jr c,.error
|
||
and 2
|
||
jr z,.unknown
|
||
ld hl,(WorkBuffer + 0x0100)
|
||
ld de,'XE' ;0x5845 - 'EX'
|
||
sbc hl,de
|
||
jr nz,.noExe
|
||
ld a,(WorkBuffer + 0x0102)
|
||
cp 'E'
|
||
jr nz,.noExe
|
||
;!TODO ¬¥áâ® ¤«ï ᯥæ¨ä¨ç®£® § ¯ã᪠exe?
|
||
; ... ... ...
|
||
;
|
||
.unknown: ld hl,WorkBuffer
|
||
ld de,WorkBuffer + 0x0100
|
||
ld bc,0x0100
|
||
ldir
|
||
jr .noBatch
|
||
|
||
.noExe: ld hl,ShellFile ;ª®¯¨à㥬 ¯ãâì ª 襫«ã
|
||
ld de,WorkBuffer + 0x0100
|
||
call CopyString
|
||
ld hl,WorkBuffer
|
||
call ConcatString
|
||
.noBatch: CALL ResDrivers
|
||
SUB A
|
||
CALL ClearScreen
|
||
CALL ResVideoMode
|
||
LD HL,ReStartPoint
|
||
EX (SP),HL
|
||
LD HL,WorkBuffer + 0x0100
|
||
SPDSS DSSF.EXEC,0
|
||
RET NC
|
||
PUSH AF
|
||
SETPORT BORDER,0
|
||
CALL InitVideoMode
|
||
CALL InitDrivers
|
||
CALL InitScreen
|
||
CALL ClearDOSline
|
||
SUB A
|
||
CALL InitPanels
|
||
POP AF
|
||
.error: CALL DOSError
|
||
LD HL,MainLoop
|
||
EX (SP),HL
|
||
RET
|
||
|
||
; ¢áâ ¢ª ¨§ ¡ãä¥à ¢¢®¤ ª®¬.áâப¨ ¨¬¥¨ ¨á¯®«ï¥¬®£® ä ©«
|
||
; ¥á«¨ 㪠§ ¡á®«îâë© ¯ãâì ª ä ©«ã á ¨¬¥¥¬ ¤¨áª , â® ® ª®¯¨àã¥âáï æ¥«¨ª®¬
|
||
; ¥á«¨ ¯à®áâ® ¨¬ï ä ©« , â® ¯à®¨§¢®¤¨âáï ¯®¯ë⪠¯®¨áª ä ©« ¢
|
||
; ª â «®£¥ ⥪ã饩 ¯ ¥«¨ ¨ ¯®¤áâ ¢«ï¥âáï ¥£® ¡á®«îâë© ¯ãâì, ¥á«¨ ¥â, â® ¯à®áâ® ¨¬ï ä ©«
|
||
; DE - ¡ãä¥à ¤«ï ¨¬¥¨ ä ©«
|
||
GetFileName: LD A,(DOSinp + 1) ; ¢ ª®¬.áâப¥ 㪠§ ¡á®«îâë© ¯ãâì ª ä ©«ã (á ¤¨áª®¬)
|
||
CP ':'
|
||
JR nz,.panelSearch
|
||
.notFound: ld hl,DOSinp ;ª®¯¨à㥬 ¡ãä¥à ª®¬.áâப¨ ¢ ¡ãä¥à
|
||
jp CopyWord
|
||
|
||
.panelSearch: ex hl,de
|
||
ld (.str),hl
|
||
bit PANELFLAG.B_SIDE,(iy + PANEL.PANELFLAG)
|
||
ld hl,RightPanel + PANEL.CURRPATH
|
||
jr nz,.next
|
||
ld hl,LeftPanel + PANEL.CURRPATH
|
||
.next: ld de,WorkBuffer + 0x0100
|
||
call CopyString
|
||
ld a,'\\'
|
||
ld (de),a
|
||
inc de
|
||
; ‚뤥«¨âì ¨¬ï ä ©« ¨§ áâப¨
|
||
ld hl,DOSinp ; ®âªã¤
|
||
SPDSS DSSF.EX_PATH,3
|
||
ret c ; ¨¬ï ä ©« ¥ ©¤¥®
|
||
bit 1,a
|
||
jr z,.noExt ; ¨¬ï ¨á¯®«ï¥¬®£® ä ©« 㪠§ ® á à áè¨à¥¨¥¬, ¨áª âì ¥ 㦮
|
||
ld hl,EndOfString
|
||
jr .found1
|
||
|
||
.noExt: ld hl,BATExtension
|
||
call PrepareFilename
|
||
call SearchFilename
|
||
jr nc,.found
|
||
ld hl,EXEExtension
|
||
.found1: call PrepareFilename
|
||
call SearchFilename
|
||
.found: ld de,0
|
||
.str EQU $-2
|
||
jr c,.notFound
|
||
ld hl,WorkBuffer + 0200h
|
||
jp CopyString
|
||
|
||
;<3B>®¤£®â®¢ª ¨¬¥¨ ä ©« ¤«ï ¯®¨áª
|
||
PrepareFilename:
|
||
ld de,WorkBuffer + 0200h
|
||
push hl
|
||
ld hl,WorkBuffer + 0x0100
|
||
call CopyString
|
||
pop hl
|
||
jp ConcatString
|
||
|
||
;¯®¨áª ä ©«
|
||
SearchFilename: ld hl,WorkBuffer + 0200h ;¯®¨áª ä ©« ¢ ª â «®£¥ ⥪ã饩 ¯ ¥«¨
|
||
ld de,WorkBuffer + 0300h
|
||
SPDSS DSSF.F_FIRST,1,DIR.M_Archive + DIR.M_ReadOnly
|
||
ret
|
||
|
||
;[]----------------------------------------------------------[]
|
||
SaveDOSline
|
||
GETPORT WINSP.CPU1
|
||
PUSH AF
|
||
LD A,(RAMPAGES.FNHELP)
|
||
SETPORT WINSP.CPU1,,0
|
||
SETPORT WINSP.Y_PORT,0xC0
|
||
LD IX,DOSstr
|
||
LD HL,(HistSpace)
|
||
LD C,(IX + DOSstr.slen - DOSstr)
|
||
LD B,0x00
|
||
.L4 OR A
|
||
SBC HL,BC
|
||
JR C,.L1
|
||
JR NZ,.L3
|
||
.L1 LD A,(HistCount)
|
||
DEC A
|
||
LD (HistCount),A
|
||
PUSH BC
|
||
CALL FindHistory
|
||
POP BC
|
||
LD DE,DOShistory + DOShistory_Size
|
||
OR A
|
||
EX DE,HL
|
||
SBC HL,DE
|
||
JR .L4
|
||
|
||
.L3 DEC HL
|
||
LD (HistSpace),HL
|
||
PUSH BC
|
||
LD A,(HistCount)
|
||
CALL FindHistory
|
||
LD E,L
|
||
LD D,H
|
||
ADD HL,BC
|
||
INC HL
|
||
EX DE,HL
|
||
PUSH HL
|
||
LD BC,DOShistory
|
||
OR A
|
||
SBC HL,BC
|
||
LD C,L
|
||
LD B,H
|
||
POP HL
|
||
LD A,B
|
||
OR C
|
||
JR Z,.L2
|
||
DEC HL
|
||
DEC DE
|
||
LDDR
|
||
.L2 POP BC
|
||
LD HL,DOSinp
|
||
LD DE,DOShistory
|
||
LD A,C
|
||
INC A
|
||
LD (DE),A
|
||
INC DE
|
||
LDIR
|
||
SUB A
|
||
LD (HistCurrent),A
|
||
POP AF
|
||
SETPORT WINSP.CPU1,,0
|
||
LD HL,HistCount
|
||
INC (HL)
|
||
RET
|
||
|
||
GetDOShistory LD IX,DOSstr
|
||
LD HL,HistCount
|
||
LD A,(HistCurrent)
|
||
INC (HL)
|
||
DEC (HL)
|
||
JP Z,ClearDOSline
|
||
CP (HL)
|
||
RET Z
|
||
EX AF,AF'
|
||
GETPORT WINSP.CPU1
|
||
PUSH AF
|
||
LD A,(RAMPAGES.FNHELP)
|
||
SETPORT WINSP.CPU1,,0
|
||
EX AF,AF'
|
||
PUSH AF
|
||
CALL FindHistory
|
||
LD DE,DOSinp
|
||
LD A,(HL)
|
||
INC HL
|
||
DEC A
|
||
LD (IX + DOSstr.slen - DOSstr),A
|
||
LD (IX + DOSstr.posX - DOSstr),A
|
||
LD C,A
|
||
LD B,0x00
|
||
LDIR
|
||
SUB A
|
||
LD (IX + DOSstr.addX - DOSstr),A
|
||
POP AF
|
||
INC A
|
||
LD (HistCurrent),A
|
||
POP AF
|
||
SETPORT WINSP.CPU1,,0
|
||
RET
|
||
|
||
FindHistory LD HL,DOShistory
|
||
OR A
|
||
RET Z
|
||
LD B,A
|
||
LD D,0x00
|
||
.L1 LD E,(HL)
|
||
ADD HL,DE
|
||
DJNZ .L1
|
||
RET
|
||
|
||
;[]----------------------------------------------------------[]
|
||
DOSInputLine LD (InpLnData),IX
|
||
LD (InputLine.InpMous),HL
|
||
RES 7,(IX + 0x01)
|
||
SET 6,(IX + 0x01)
|
||
SPDSS DSSF.TESTKEY
|
||
JR NZ,.L1
|
||
RES 6,(IX + 0x01)
|
||
.L1 CALL InsInpLnCol
|
||
PUSH IX
|
||
POP HL
|
||
LD DE,LenInpData
|
||
ADD HL,DE
|
||
LD E,(IX + 0x04)
|
||
ADD HL,DE
|
||
LD (HL),D
|
||
CALL PrintInpLn + 3
|
||
DOSLineLp HALT
|
||
CALL ChCursor
|
||
LD IX,(InputLine.InpMous)
|
||
CALL TestCoords
|
||
SPDSS DSSF.TESTKEY
|
||
JR Z,DOSLineLp
|
||
RES 7,D
|
||
BIT KEYBSTAT.B_ALT,B
|
||
JR NZ,DOSLineLp1;DOSLineLp ; ¢ë室, §¤¥áì ¥â ª®¬¡¨ 権 á ALT
|
||
LD IX,DOSTable2 ; ª®¬¡¨ æ¨ï á CTRL
|
||
BIT KEYBSTAT.B_CTRL,B
|
||
JR NZ,DOSKeys
|
||
LD IX,DOSTable1 ; ¢¢®¤ ¡¥§ ¬®¤¨ä¨ª â®à®¢
|
||
DOSKeys LD L,(IX + 0x00) ; ASCII code
|
||
INC IX
|
||
INC L
|
||
JR Z,DOSLineLp1
|
||
DEC L
|
||
LD H,(IX + 0x00) ; position code
|
||
INC IX
|
||
LD C,(IX + 0x00) ; adr LOW
|
||
INC IX
|
||
LD B,(IX + 0x00) ; adr HIGH
|
||
INC IX
|
||
OR A
|
||
SBC HL,DE
|
||
JR NZ,DOSKeys
|
||
LD IX,(InpLnData)
|
||
RES 6,(IX + 0x01)
|
||
LD A,E
|
||
CP 0x1B
|
||
JR NZ,DOSLnNx
|
||
CALL ResCursor
|
||
LD A,0x01
|
||
OR A
|
||
RET
|
||
|
||
DOSLnNx LD HL,DOSLineLp
|
||
PUSH HL
|
||
PUSH BC
|
||
PUSH IX
|
||
SPDSS DSSF.SCANKEY
|
||
POP IX
|
||
RET
|
||
|
||
DOSLineLp1 LD IX,(InpLnData)
|
||
LD A,E
|
||
CP 0x20
|
||
JR NC,DOSLineLp2
|
||
BIT 6,(IX + 0x01)
|
||
JR Z,DOSLnE0
|
||
PUSH IX
|
||
SPDSS DSSF.SCANKEY
|
||
POP IX
|
||
DOSLnE0 CALL ResCursor
|
||
LD A,0x01
|
||
OR A
|
||
RET
|
||
|
||
DOSLineLp2 RES 6,(IX + 0x01)
|
||
LD HL,DOSLineLp
|
||
PUSH HL
|
||
PUSH IX
|
||
SPDSS DSSF.SCANKEY
|
||
POP IX
|
||
LD A,E
|
||
JP InsertSymbol
|
||
|
||
DOSLnExtN POP HL
|
||
LD IX,(InpLnData)
|
||
CALL ResCursor
|
||
XOR A
|
||
RET
|
||
|
||
DOSLnExtC POP HL
|
||
LD IX,(InpLnData)
|
||
CALL ResCursor
|
||
SCF
|
||
RET
|
||
|
||
DOSTable1 DW SC.ESC << 8 | 0x1B, InputLine.InpLnExtC ; 0x011B,InpLnExtC
|
||
DW SC.ENTER << 8 | 0x0D,InputLine.InpLnExtN ; 0x280D,InpLnExtN
|
||
DW SC.X4 << 8, ILleft ; 0x5400,ILleft
|
||
DW SC.X6 << 8, ILright ; 0x5600,ILright
|
||
DW SC.BKSP << 8 | 8, ILdelet ; 0x0E08,ILdelet
|
||
DW SC.XDEL << 8, IL_del_ ; 0x4F00,IL_del_
|
||
DW SC.X7 << 8, ILhome ; 0x5700,ILhome
|
||
DW SC.X1 << 8, ILend ; 0x5100,ILend
|
||
DB 0xFF
|
||
|
||
DOSTable2 DW SC.X4 << 8, ILwordL ; 0x5400,ILwordL
|
||
DW SC.X6 << 8, ILwordR ; 0x5600,ILwordR
|
||
DW SC.BKSP << 8, ILdelWR ; 0x0E00,ILdelWR
|
||
DW SC.ENTER << 8, InsFileName ; 0x2800,InsFileName
|
||
DW SC.QSKOBKAL << 8, InsLeftPath ; 0x1A00,InsLeftPath
|
||
DW SC.QSKOBKAR << 8, InsRightPath ; 0x1B00,InsRightPath
|
||
DW SC.E << 8, InsHistory ; 0x1200,InsHistory
|
||
DB 0xFF
|
||
|
||
InsFileName
|
||
GETPORT WINSP.CPU1
|
||
PUSH AF
|
||
BIT PANELFLAG.B_SIDE,(IY + PANEL.PANELFLAG)
|
||
LD A,(RAMPAGES.LEFTPANEL)
|
||
JR Z,.L1
|
||
LD A,(RAMPAGES.RIGHTPANEL)
|
||
.L1
|
||
SETPORT WINSP.CPU1,,0
|
||
LD L,(IY + PANEL.FFL)
|
||
LD H,(IY + PANEL.FFH)
|
||
LD E,(IY + PANEL.CFL)
|
||
LD D,(IY + PANEL.CFH)
|
||
ADD HL,DE
|
||
BIT VIEWFLAG.B_TREE,(IY + PANEL.VIEWFLAG)
|
||
JR Z,InsFN1
|
||
ADD HL,HL
|
||
ADD HL,HL
|
||
ADD HL,HL
|
||
ADD HL,HL
|
||
SET 6,H
|
||
INC HL
|
||
INC HL
|
||
LD DE,TempName
|
||
LD BC,0x000D
|
||
LDIR
|
||
JR InsFN2
|
||
|
||
InsFN1 ADD HL,HL
|
||
ADD HL,HL
|
||
ADD HL,HL
|
||
LD E,L
|
||
LD D,H
|
||
ADD HL,HL
|
||
ADD HL,DE
|
||
SET 6,H
|
||
INC HL
|
||
LD DE,TempName
|
||
CALL MakeDOSname
|
||
InsFN2 POP AF
|
||
SETPORT WINSP.CPU1,,0
|
||
LD HL,TempName
|
||
LD A,(HL)
|
||
CP '.'
|
||
RET Z
|
||
CP '\\'
|
||
RET Z
|
||
PUSH HL
|
||
SUB A
|
||
LD C,A
|
||
.L1 INC C
|
||
INC HL
|
||
CP (HL)
|
||
JR NZ,.L1
|
||
LD (HL),0x20
|
||
INC HL
|
||
LD (HL),A
|
||
INC C
|
||
POP HL
|
||
JP InsertWord
|
||
|
||
TempName DB 14 DUP 0
|
||
|
||
InsLeftPath LD HL,LeftPanel + PANEL.CURRPATH
|
||
JR InsPath
|
||
|
||
InsRightPath LD HL,RightPanel + PANEL.CURRPATH
|
||
InsPath LD DE,WorkBuffer + 0x100
|
||
PUSH DE
|
||
SUB A
|
||
LD C,A
|
||
.L1 LDI
|
||
CP (HL)
|
||
JR NZ,.L1
|
||
DEC HL
|
||
LD A,'\\'
|
||
CP (HL)
|
||
JR Z,.L2
|
||
LD (DE),A
|
||
INC DE
|
||
DEC C
|
||
.L2 SUB A
|
||
SUB C
|
||
LD C,A
|
||
POP HL
|
||
JP InsertWord
|
||
|
||
InsertWord LD A,(IX + 0x04) ;InpytSymb
|
||
ADD A,C
|
||
RET C
|
||
SUB (IX + 0x00) ;Max len
|
||
RET NC
|
||
PUSH HL
|
||
LD A,(IX + 0x04)
|
||
SUB (IX + 0x02)
|
||
JR Z,NotInsWord
|
||
; ‚¢®¤ ¢ á¥à¥¤¨ã ⥪áâ
|
||
PUSH IX
|
||
POP HL
|
||
LD DE,LenInpData
|
||
ADD HL,DE
|
||
LD E,(IX + 0x04)
|
||
ADD HL,DE
|
||
LD E,L
|
||
LD D,H
|
||
LD B,0x00
|
||
ADD HL,BC
|
||
EX DE,HL
|
||
DEC HL
|
||
DEC DE
|
||
PUSH BC
|
||
LD C,A
|
||
LDDR
|
||
POP BC
|
||
NotInsWord PUSH IX
|
||
POP HL
|
||
LD DE,LenInpData
|
||
ADD HL,DE
|
||
LD E,(IX + 0x02)
|
||
ADD HL,DE
|
||
EX DE,HL
|
||
POP HL
|
||
PUSH BC
|
||
LD B,0x00
|
||
LDIR
|
||
POP BC
|
||
LD A,(IX + 0x04)
|
||
ADD A,C
|
||
LD (IX + 0x04),A
|
||
LD A,(IX + 0x02)
|
||
ADD A,C
|
||
LD (IX + 0x02),A
|
||
JP PrintInpLn
|
||
|
||
InsHistory CALL GetDOShistory
|
||
JP PrintInpLn
|
||
|
||
;[]----------------------------------------------------------[]
|
||
ShellFile: db "X:\\SYSTEM.EXE /C ",0 ; 襫«
|
||
BATExtension: db ".BAT",0
|
||
EXEExtension: db ".EXE"
|
||
EndOfString: db 0
|
||
DOSstr DB 0x80,0x00
|
||
.posX DB 0x00
|
||
.addX DB 0x00
|
||
.slen DB 0x00
|
||
DW 256,231,376
|
||
DB COLORP.PANEL + COLORI.FILES
|
||
|
||
DOSinp DB 0x81 DUP 0
|
||
|
||
HistSpace DEFW 0x200
|
||
HistCount DEFB 0x00
|
||
HistCurrent DEFB 0x00
|
||
;[]----------------------------------------------------------[]
|