mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 01:11:48 +03:00
2075 lines
27 KiB
Plaintext
2075 lines
27 KiB
Plaintext
|
|
;[BEGIN]
|
|
;
|
|
; SYSTEM.EXE /S /P
|
|
;
|
|
; /P Primary command processor
|
|
; /S Secondary command processor
|
|
; /C Execute batch file
|
|
|
|
;--------------------------------------------------------------
|
|
;Rev. Date Name Description
|
|
;--------------------------------------------------------------
|
|
;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
|
|
;
|
|
|
|
ORG #8100-512
|
|
INCLUDE "dss.inc"
|
|
INCLUDE "dos_equ.asm"
|
|
CR EQU 13
|
|
LF EQU 10
|
|
DB "EXE" ;EXE ID
|
|
DB #00 ;EXE VERSION
|
|
DW #0200 ;CODE OFFSET LOW
|
|
DW #0000 ;CODE OFFSET HIGH
|
|
DW #0000 ;END-BEG ;PRIMARY LOADER
|
|
DW #0000 ;
|
|
DW #0000 ;RESERVED
|
|
DW #0000 ;
|
|
DW #8100 ;LOAD ADDRESS
|
|
DW #8100 ;START ADDRESS
|
|
DW #BFFF ;STACK ADDRESS
|
|
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DB 0,0,0,0,0,0,0,0,0,0
|
|
|
|
; DEFS 490,0
|
|
|
|
; LD SP,#BFFF
|
|
START CALL INIT
|
|
CALL GET_CMD
|
|
EI
|
|
LD A,(RUNMODE)
|
|
AND #80 ;TEST PRIMARY
|
|
JP NZ,FPRIMAR
|
|
LD A,(RUNMODE)
|
|
AND #20 ;TEST SECONDARY
|
|
JP NZ,FSECOND
|
|
LD A,(RUNMODE)
|
|
AND #10 ;TEST BATCH FILE
|
|
JP NZ,FBATCHS
|
|
LD A,(RUNMODE)
|
|
AND #40 ;TEST PROCESS
|
|
JP NZ,FBATCH
|
|
JP QUIT
|
|
|
|
FSECOND CALL VERS
|
|
JP CONSOLE
|
|
|
|
FBATCHS
|
|
LD HL,CMDLINE
|
|
CALL BATCH
|
|
JP QUIT
|
|
|
|
FBATCH
|
|
CALL CMDMODE
|
|
JP QUIT
|
|
|
|
FPRIMAR LD C,CTRLKEY
|
|
RST #10
|
|
LD A,B
|
|
AND #C0
|
|
JP NZ,CONSOLE
|
|
LD HL,BATNAME
|
|
CALL BATCH
|
|
JP CONSOLE
|
|
|
|
BATCH XOR A
|
|
LD C,OPEN
|
|
RST #10
|
|
RET C
|
|
LD (BAT_FM),A
|
|
CALL NEWLINE
|
|
XOR A
|
|
RET
|
|
|
|
NEWLINE LD DE,CMDLINE
|
|
ADDBAT PUSH DE
|
|
CALL READBAT
|
|
POP DE
|
|
OR A
|
|
JR NZ,BATLINE
|
|
EX DE,HL
|
|
LD DE,CMDLINE
|
|
AND A
|
|
SBC HL,DE
|
|
RET Z
|
|
LD A,L
|
|
LD (CMDLINE-1),A
|
|
CALL CMDMODE
|
|
LD C,CLOSE
|
|
LD A,(BAT_FM)
|
|
RST #10
|
|
RET
|
|
|
|
BATLINE LD HL,BATBUFF
|
|
NBLINE CALL MOVWORD
|
|
JP C,ADDBAT
|
|
LD A,B
|
|
LD (BAT_LEN),A
|
|
PUSH HL
|
|
EX DE,HL
|
|
LD DE,CMDLINE
|
|
AND A
|
|
SBC HL,DE
|
|
LD A,L
|
|
LD (CMDLINE-1),A
|
|
CALL CMDMODE
|
|
LD DE,CMDLINE
|
|
POP HL
|
|
JP NBLINE
|
|
|
|
MOVWORD LD A,(BAT_LEN)
|
|
LD B,A
|
|
M00WORD LD A,(HL)
|
|
LD (DE),A
|
|
CP #20
|
|
JR C,M01WORD
|
|
INC HL
|
|
INC DE
|
|
DJNZ M00WORD
|
|
SCF
|
|
RET
|
|
|
|
M01WORD LD A,(HL)
|
|
CP #20
|
|
RET NC
|
|
INC HL
|
|
DJNZ M01WORD
|
|
RET
|
|
|
|
READBAT LD HL,BATBUFF
|
|
LD DE,128
|
|
LD C,READ
|
|
LD A,(BAT_FM)
|
|
RST #10
|
|
LD A,E
|
|
LD (BAT_LEN),A
|
|
RET
|
|
|
|
CMDMODE XOR A
|
|
LD (POSIT),A
|
|
CALL EVALCMD ;R05
|
|
LD IX,CMDLINE-2
|
|
LD HL,CMDLINE
|
|
LD A,(HL)
|
|
CP "@"
|
|
JR NZ,NOALPHA
|
|
DEC HL
|
|
DEC (HL)
|
|
JR Z,NOEC
|
|
LD C,(HL)
|
|
INC HL
|
|
LD B,0
|
|
LD D,H
|
|
LD E,L
|
|
INC HL
|
|
LDIR
|
|
JR NOEC
|
|
NOALPHA LD A,(ECHOFLG)
|
|
OR A
|
|
JR NZ,NOEC
|
|
LD DE,CMDLINE
|
|
CALL PRINT_S
|
|
CALL CRLF
|
|
LD A,(CMDLINE-1)
|
|
OR A
|
|
RET Z
|
|
CALL CRLF
|
|
CALL COMPBAT
|
|
RET
|
|
|
|
NOEC LD A,(CMDLINE-1)
|
|
OR A
|
|
RET Z
|
|
CALL COMPBAT
|
|
RET
|
|
|
|
COMPBAT LD HL,CMDLINE
|
|
DEC HL
|
|
LD C,(HL)
|
|
LD B,0
|
|
INC HL
|
|
COMP00B LD A,(HL)
|
|
CP " "
|
|
JR NZ,COMP01B
|
|
INC HL
|
|
DEC C
|
|
JR NZ,COMP00B
|
|
RET
|
|
COMP01B LD D,H
|
|
LD E,L
|
|
ADD HL,BC
|
|
LD (HL),0
|
|
SBC HL,BC
|
|
LD A,C
|
|
EX AF,AF'
|
|
LD A,#20
|
|
CPIR
|
|
JR NZ,COMPB05
|
|
INC C
|
|
COMPB05 EX AF,AF'
|
|
SUB C
|
|
LD C,A
|
|
LD HL,BATLIST
|
|
JP COMP004
|
|
|
|
INIT LD A,(IX-1)
|
|
LD (TASKX),A
|
|
PUSH IX
|
|
CALL CRLF
|
|
CALL GETPATH
|
|
POP IX
|
|
RET
|
|
|
|
CONSOLE CALL CRLF
|
|
RE_ CALL GETXY
|
|
CALL GETPATH
|
|
; CALL VERS
|
|
LD HL,CMDLINE
|
|
LD DE,CMDLINE+1
|
|
LD (HL),0
|
|
LD BC,#7F
|
|
LDIR
|
|
CALL INPUT
|
|
CALL CRLF
|
|
LD A,(CMDLINE-1)
|
|
OR A
|
|
JP Z,RE_
|
|
CALL CRLF
|
|
CALL COMP
|
|
JP RE_
|
|
|
|
GETXY LD C,CURSOR
|
|
RST #10
|
|
JP LOCAT
|
|
|
|
INPUT XOR A
|
|
LD (POSIT),A
|
|
LD (SHIFT),A
|
|
LD (LEN_NEW),A
|
|
LD IX,CMDLINE-2
|
|
CALL CEDIT
|
|
CALL RES_CUR
|
|
RET
|
|
|
|
COMP
|
|
CALL EVALCMD ;R05
|
|
LD HL,CMDLINE
|
|
DEC HL
|
|
LD C,(HL)
|
|
LD B,0
|
|
INC HL
|
|
COMP00 LD A,(HL)
|
|
CP " "
|
|
JR NZ,COMP01
|
|
INC HL
|
|
DEC C
|
|
JR NZ,COMP00
|
|
RET
|
|
COMP01 LD D,H
|
|
LD E,L
|
|
ADD HL,BC
|
|
LD (HL),0
|
|
SBC HL,BC
|
|
LD A,C
|
|
EX AF,AF'
|
|
LD A,#20
|
|
CPIR
|
|
JR NZ,COMP005
|
|
INC C
|
|
COMP005 EX AF,AF'
|
|
SUB C
|
|
LD C,A
|
|
LD HL,CMDLIST
|
|
COMP004 PUSH BC
|
|
PUSH DE
|
|
COMP000 LD A,(DE)
|
|
CP #61
|
|
JP C,COMP001
|
|
CP #7B
|
|
JP NC,COMP001
|
|
SUB #20
|
|
COMP001 CP (HL)
|
|
JP NZ,COMP002
|
|
INC HL
|
|
INC DE
|
|
DEC C
|
|
JP NZ,COMP000
|
|
XOR A
|
|
CP (HL)
|
|
JP NZ,COMP002
|
|
POP BC
|
|
POP BC
|
|
LD A,(DE)
|
|
CP " "
|
|
JR NZ,NOSPC
|
|
INC DE
|
|
NOSPC INC HL
|
|
LD A,(HL)
|
|
INC HL
|
|
LD H,(HL)
|
|
LD L,A
|
|
JP (HL)
|
|
|
|
COMP002 XOR A
|
|
LD C,#FF
|
|
CPI
|
|
JP NZ,$-2
|
|
INC HL
|
|
INC HL
|
|
POP DE
|
|
POP BC
|
|
LD A,(HL)
|
|
OR A
|
|
JP NZ,COMP004
|
|
LD H,D ;CMDLINE
|
|
LD L,E
|
|
LD B,(HL)
|
|
INC HL
|
|
LD C,(HL)
|
|
INC HL
|
|
LD A,(HL)
|
|
OR A
|
|
JR NZ,RUN_EXT
|
|
LD A,":"
|
|
CP C
|
|
JR NZ,RUN_EXT
|
|
LD A,B
|
|
CP "a"
|
|
JR C,NOUP
|
|
CP "{"
|
|
JR NC,NOUP
|
|
AND #5F
|
|
NOUP SUB "A"
|
|
LD C,CHDISK
|
|
RST #10
|
|
JP C,ERROR
|
|
JP GETPATH
|
|
|
|
SAVEHL DW 0
|
|
|
|
RUN_EXT EX DE,HL
|
|
LD (SAVEHL),HL
|
|
LD BC,#0445
|
|
LD DE,EXTBF
|
|
RST #10
|
|
LD HL,(SAVEHL)
|
|
JR C,RUN_EXE
|
|
BIT 1,A
|
|
JR Z,NON_EXT
|
|
LD DE,EXTBF
|
|
LD HL,BATBF
|
|
LD B,3
|
|
CALL COMPARE
|
|
LD HL,(SAVEHL)
|
|
JR Z,RUN_BAT
|
|
JP RUN_EXE
|
|
|
|
NON_EXT LD BC,0+EXEC
|
|
RST #10
|
|
RET NC
|
|
LD HL,(SAVEHL)
|
|
CP 3
|
|
JP NZ,EXEERR
|
|
PUSH HL
|
|
LD A,(CMDLINE-1)
|
|
LD B,A
|
|
EXF000 LD A,(HL)
|
|
CP "!"
|
|
JR C,EXF001
|
|
INC HL
|
|
DJNZ EXF000
|
|
|
|
EXF001
|
|
LD E,B
|
|
LD D,0
|
|
ADD HL,DE
|
|
PUSH HL
|
|
LD E,4
|
|
ADD HL,DE
|
|
POP DE
|
|
EX DE,HL
|
|
LD C,B
|
|
LD B,0
|
|
INC C
|
|
LDDR
|
|
INC HL
|
|
LD (HL),"."
|
|
INC HL
|
|
LD (HL),"B"
|
|
INC HL
|
|
LD (HL),"A"
|
|
INC HL
|
|
LD (HL),"T"
|
|
; LD HL,(SAVEHL)
|
|
POP HL
|
|
JP RUN_BAT
|
|
|
|
RUN_EXE LD B,0
|
|
LD C,EXEC
|
|
RST #10
|
|
RET NC
|
|
EXEERR CP 5
|
|
JP NC,ERROR
|
|
LD DE,0 ;BAD COMMAND OR FILENAME
|
|
JP ERR_MSG
|
|
|
|
RUN_BAT CALL BATCH
|
|
JP C,EXEERR
|
|
RET
|
|
|
|
BATLIST DB "PAUSE",0
|
|
DW CPAUSE
|
|
DB "REM",0
|
|
DW CREM
|
|
CMDLIST DB "CD",0
|
|
DW CCHDIR
|
|
DB "CHDIR",0
|
|
DW CCHDIR
|
|
DB "CLS",0
|
|
DW CLS
|
|
DB "DATE",0
|
|
DW CDATE
|
|
DB "DEL",0
|
|
DW CDELET
|
|
DB "DIR",0
|
|
DW DIR
|
|
DB "ECHO",0
|
|
DW CECHO
|
|
DB "ERASE",0
|
|
DW CDELET
|
|
DB "EXIT",0
|
|
DW CEXIT
|
|
DB "HELP",0
|
|
DW HELP
|
|
DB "MD",0
|
|
DW CMKDIR
|
|
DB "MKDIR",0
|
|
DW CMKDIR
|
|
DB "REN",0
|
|
DW CRENAM
|
|
DB "RENAME",0
|
|
DW CRENAM
|
|
DB "RD",0
|
|
DW CRMDIR
|
|
DB "RMDIR",0
|
|
DW CRMDIR
|
|
DB "SET",0
|
|
DW CSET
|
|
DB "TIME",0
|
|
DW CTIME
|
|
DB "VERSION",0
|
|
DW VERS
|
|
DB "VER",0
|
|
DW VERS
|
|
DB #00
|
|
|
|
CLS LD DE,#0000
|
|
LD HL,#2050
|
|
LD BC,#0700+CLEAR
|
|
LD A," "
|
|
RST #10
|
|
LD DE,#0000
|
|
JP LOCAT
|
|
|
|
CRLF LD A,#0D
|
|
CALL PRINTX
|
|
LD A,#0A
|
|
JP PRINTX
|
|
|
|
CDATE EX DE,HL
|
|
LD DE,DTA
|
|
LD C,GSWITCH
|
|
RST #10
|
|
LD DE,DTA
|
|
LD A,(DE)
|
|
OR A
|
|
JR Z,NOSETD
|
|
CALL STR2DEC
|
|
JR C,ILLEG
|
|
XOR A
|
|
CP H
|
|
JR NZ,ILLEG
|
|
LD A,31
|
|
CP L
|
|
JR C,ILLEG
|
|
LD B,L
|
|
PUSH BC
|
|
CALL STR2DEC
|
|
POP BC
|
|
JR C,ILLEG
|
|
XOR A
|
|
CP H
|
|
JR NZ,ILLEG
|
|
LD A,12
|
|
CP L
|
|
JR C,ILLEG
|
|
LD C,L
|
|
PUSH BC
|
|
CALL STR2DEC
|
|
PUSH HL
|
|
LD C,SYSTIME
|
|
RST #10
|
|
POP IX
|
|
POP DE
|
|
LD C,SETTIME
|
|
RST #10
|
|
NOSETD LD C,SYSTIME
|
|
RST #10
|
|
PUSH IX
|
|
PUSH DE
|
|
LD A,D
|
|
LD HL,PRM1
|
|
CALL PUTB
|
|
LD A,"-"
|
|
LD (HL),A
|
|
INC HL
|
|
POP DE
|
|
LD A,E
|
|
CALL PUTB
|
|
LD A,"-"
|
|
LD (HL),A
|
|
INC HL
|
|
PUSH HL
|
|
POP IX
|
|
POP HL
|
|
CALL PDIGIT
|
|
LD DE,DATEMSG
|
|
JP MESSAGE
|
|
|
|
ILLEG LD DE,ILLGMSG
|
|
CALL MESSAGE
|
|
RET
|
|
|
|
CTIME EX DE,HL
|
|
LD DE,DTA
|
|
LD C,GSWITCH
|
|
RST #10
|
|
LD DE,DTA
|
|
LD A,(DE)
|
|
OR A
|
|
JR Z,NOSETT
|
|
CALL STR2DEC
|
|
JR C,ILLEG
|
|
XOR A
|
|
CP H
|
|
JR NZ,ILLEG
|
|
LD A,23
|
|
CP L
|
|
JR C,ILLEG
|
|
LD B,L
|
|
PUSH BC
|
|
CALL STR2DEC
|
|
POP BC
|
|
JR C,ILLEG
|
|
XOR A
|
|
CP H
|
|
JR NZ,ILLEG
|
|
LD A,59
|
|
CP L
|
|
JR C,ILLEG
|
|
LD C,L
|
|
PUSH BC
|
|
CALL STR2DEC
|
|
POP BC
|
|
JR C,ILLEG
|
|
XOR A
|
|
CP H
|
|
JR NZ,ILLEG
|
|
LD A,59
|
|
CP L
|
|
JR C,ILLEG
|
|
PUSH BC
|
|
LD A,L
|
|
PUSH AF
|
|
LD C,SYSTIME
|
|
RST #10
|
|
POP BC
|
|
POP HL
|
|
LD C,SETTIME
|
|
RST #10
|
|
NOSETT LD C,SYSTIME
|
|
RST #10
|
|
PUSH BC
|
|
PUSH HL
|
|
LD A,H
|
|
LD HL,PRM1
|
|
CALL PUTB
|
|
LD A,":"
|
|
LD (HL),A
|
|
INC HL
|
|
POP DE
|
|
LD A,E
|
|
CALL PUTB
|
|
LD A,":"
|
|
LD (HL),A
|
|
INC HL
|
|
POP AF
|
|
CALL PUTB
|
|
XOR A
|
|
LD (HL),A
|
|
LD DE,TIMEMSG
|
|
JP MESSAGE
|
|
|
|
CPAUSE LD DE,PAUSMSG
|
|
CALL MESSAGE
|
|
LD C,WAITKEY
|
|
RST #10
|
|
RET
|
|
|
|
|
|
CSET LD A,(DE)
|
|
OR A
|
|
JP Z,PRNENVIR
|
|
EX DE,HL
|
|
LD BC,#0200+DSS_ENVIRON
|
|
RST #10
|
|
CALL C,ERROR
|
|
RET
|
|
|
|
PRNENVIR
|
|
LD HL,DTA
|
|
LD BC,#0000+DSS_ENVIRON
|
|
RST #10
|
|
LD HL,DTA
|
|
PRNENVX LD C,DSS_PCHARS
|
|
RST #10
|
|
LD A,CR
|
|
LD C,DSS_PUTCHAR
|
|
RST #10
|
|
LD A,LF
|
|
LD C,DSS_PUTCHAR
|
|
RST #10
|
|
LD A,(HL)
|
|
OR A
|
|
JR NZ,PRNENVX
|
|
RET
|
|
|
|
|
|
CECHO EX DE,HL
|
|
LD A,(HL)
|
|
OR A
|
|
JR Z,ECHO_F
|
|
EX DE,HL
|
|
PUSH DE
|
|
LD B,3
|
|
LD HL,ECHOON
|
|
CALL COMPARE
|
|
POP DE
|
|
JR Z,ECHO_FS
|
|
PUSH DE
|
|
LD B,4
|
|
LD HL,ECHOOFF
|
|
CALL COMPARE
|
|
POP HL
|
|
JR Z,ECHO_FR
|
|
|
|
;R03 REMOVE R01
|
|
|
|
LD C,PCHARS
|
|
RST #10
|
|
JP CRLF
|
|
|
|
ECHO_F LD A,(ECHOFLG)
|
|
OR A
|
|
LD DE,ON__MSG
|
|
JR Z,ECHON
|
|
LD DE,OFF_MSG
|
|
ECHON CALL FMESAGE
|
|
LD DE,PRM1
|
|
CALL PUTPRM
|
|
LD DE,ECHOMSG
|
|
CALL MESSAGE
|
|
RET
|
|
|
|
ECHO_FS XOR A
|
|
LD (ECHOFLG),A
|
|
RET
|
|
|
|
ECHO_FR LD A,#FF
|
|
LD (ECHOFLG),A
|
|
RET
|
|
|
|
;R04
|
|
|
|
EVALCMD
|
|
XOR A
|
|
LD HL,CMDLINE-1
|
|
LD C,(HL)
|
|
LD B,A
|
|
INC HL
|
|
ADD HL,BC
|
|
LD (HL),A
|
|
SBC HL,BC
|
|
LD DE,TMPLINE
|
|
CALL EVALSTR
|
|
LD HL,TMPLINE
|
|
LD DE,CMDLINE
|
|
LD BC,#00FF
|
|
MOVLBAK LD A,(HL)
|
|
LDI
|
|
INC B
|
|
OR A
|
|
JR NZ,MOVLBAK
|
|
DEC B
|
|
LD A,B
|
|
LD (CMDLINE-1),A
|
|
AND A
|
|
RET
|
|
|
|
; HL - STRING WITH %VAR%
|
|
|
|
EVALSTR
|
|
;R04 LD DE,DTA
|
|
VARLOOP
|
|
LD A,(HL)
|
|
CP "%"
|
|
JR Z,TVARIABLE
|
|
VARL1 LDI
|
|
OR A
|
|
JR NZ,VARLOOP
|
|
LD BC,0
|
|
LD (TVAR_PNT),BC
|
|
;R04 LD HL,DTA
|
|
;R04
|
|
RET
|
|
|
|
|
|
;R01
|
|
TVAR_PNT
|
|
DW 0
|
|
|
|
TVARIABLE
|
|
LD BC,(TVAR_PNT)
|
|
LD A,B
|
|
OR C
|
|
LD A,"%"
|
|
LD (TVAR_PNT),DE
|
|
JR Z,VARL1
|
|
PUSH HL
|
|
LD H,D
|
|
LD L,E
|
|
DEC HL
|
|
AND A
|
|
SBC HL,BC
|
|
JR Z,TNOVAR
|
|
LD A,"="
|
|
LD (DE),A
|
|
INC DE
|
|
XOR A
|
|
LD (DE),A
|
|
LD D,B
|
|
LD E,C
|
|
LD H,B
|
|
LD L,C
|
|
INC HL
|
|
LD BC,#0100+DSS_ENVIRON
|
|
RST #10
|
|
TNOVAR POP HL
|
|
INC HL
|
|
LD BC,0
|
|
LD (TVAR_PNT),BC
|
|
JP VARLOOP
|
|
;R01
|
|
|
|
COMPARE LD A,(DE)
|
|
CP #61
|
|
JP C,COM001
|
|
CP #7B
|
|
JP NC,COM001
|
|
SUB #20
|
|
COM001 CP (HL)
|
|
RET NZ
|
|
INC HL
|
|
INC DE
|
|
DJNZ COMPARE
|
|
RET
|
|
|
|
CREM RET
|
|
|
|
CCHDIR EX DE,HL
|
|
LD DE,DTA
|
|
LD C,GSWITCH
|
|
RST #10
|
|
XOR A
|
|
LD HL,DTA
|
|
CP (HL)
|
|
JR NZ,YP
|
|
LD (HL),"."
|
|
INC HL
|
|
LD (HL),"."
|
|
INC HL
|
|
LD (HL),0
|
|
DEC HL
|
|
DEC HL
|
|
YP LD C,CHDIR
|
|
RST #10
|
|
CALL C,ERROR
|
|
CALL GETPATH
|
|
RET
|
|
|
|
CMKDIR EX DE,HL
|
|
LD DE,DTA
|
|
LD C,GSWITCH
|
|
RST #10
|
|
LD HL,DTA
|
|
LD C,MKDIR
|
|
RST #10
|
|
CALL C,ERROR
|
|
RET
|
|
|
|
CRMDIR EX DE,HL
|
|
LD DE,DTA
|
|
LD C,GSWITCH
|
|
RST #10
|
|
LD HL,DTA
|
|
LD C,RMDIR
|
|
RST #10
|
|
CALL C,ERROR
|
|
RET
|
|
|
|
CDELET EX DE,HL
|
|
LD DE,DTA
|
|
LD C,GSWITCH
|
|
RST #10
|
|
LD HL,DTA
|
|
LD C,DELETE
|
|
RST #10
|
|
CALL C,ERROR
|
|
RET
|
|
|
|
CRENAM EX DE,HL
|
|
LD DE,DTA
|
|
LD C,GSWITCH
|
|
RST #10
|
|
LD DE,DTA+128
|
|
LD C,GSWITCH
|
|
RST #10
|
|
LD HL,DTA
|
|
LD DE,DTA+128
|
|
LD C,RENAME
|
|
RST #10
|
|
CALL C,ERROR
|
|
RET
|
|
|
|
ERROR LD E,A
|
|
LD D,0
|
|
JP ERR_MSG
|
|
|
|
DIR LD HL,0
|
|
LD (FILES),HL
|
|
LD (S_LOW),HL
|
|
LD (S_HIGH),HL
|
|
EX DE,HL
|
|
LD A,(HL)
|
|
OR A
|
|
JR NZ,YPS
|
|
LD HL,ALLFS
|
|
YPS LD DE,DTA
|
|
LD C,GSWITCH
|
|
RST #10
|
|
LD HL,DTA
|
|
LD DE,DTA
|
|
LD A,#37
|
|
LD BC,#0000+F_FIRST
|
|
RST #10
|
|
JP C,ERROR
|
|
LD A,(PATHF)
|
|
LD (PRM1+0),A
|
|
LD A,":"
|
|
LD (PRM1+1),A
|
|
LD A,0
|
|
LD (PRM1+2),A
|
|
LD HL,SER_NUM
|
|
LD DE,PRM2
|
|
CALL PUTPRM
|
|
CALL GETPATH
|
|
LD HL,PATHF
|
|
LD DE,PRM3
|
|
CALL PUTPRM
|
|
LD DE,DIR1MSG
|
|
CALL MESSAGE
|
|
; CALL CRLF
|
|
; CALL CRLF
|
|
DIRNEX LD HL,DTA
|
|
LD DE,33
|
|
ADD HL,DE
|
|
CALL PNAME
|
|
LD IX,DTA
|
|
LD A,(IX+32)
|
|
AND #10
|
|
JP NZ,NODADD
|
|
LD HL,(FILES)
|
|
INC HL
|
|
LD (FILES),HL
|
|
LD E,(IX+30)
|
|
LD D,(IX+31)
|
|
LD HL,(S_HIGH)
|
|
EXX
|
|
LD E,(IX+28)
|
|
LD D,(IX+29)
|
|
LD HL,(S_LOW)
|
|
CALL ADDXXX
|
|
LD (S_LOW),HL
|
|
EXX
|
|
LD (S_HIGH),HL
|
|
NODADD LD DE,DTA
|
|
LD C,F_NEXT
|
|
RST #10
|
|
JR NC,DIRNEX
|
|
CALL ORDERS
|
|
RET
|
|
|
|
ORDERS LD HL,(FILES)
|
|
LD IX,PRM1
|
|
CALL PDIGIT
|
|
LD HL,(S_LOW)
|
|
EXX
|
|
LD HL,(S_HIGH)
|
|
EXX
|
|
CALL MAKE_LN
|
|
LD HL,L32BIT_+9
|
|
LD A,(HL)
|
|
CP #20
|
|
JR NZ,ALR2
|
|
LD A,#30
|
|
LD (HL),A
|
|
ALR2 LD DE,SIZEBFF
|
|
LD HL,L32BIT_;; +1
|
|
LD A,(HL)
|
|
LDI
|
|
CP " "
|
|
JR Z,NOPO1
|
|
LD A,"."
|
|
NOPO1 LD (DE),A
|
|
INC DE
|
|
LDI
|
|
LDI
|
|
LD A,(HL)
|
|
LDI
|
|
CP " "
|
|
JR Z,NOPO2
|
|
LD A,"."
|
|
NOPO2 LD (DE),A
|
|
INC DE
|
|
LDI
|
|
LDI
|
|
LD A,(HL)
|
|
LDI
|
|
CP " "
|
|
JR Z,NOPO3
|
|
LD A,"."
|
|
NOPO3 LD (DE),A
|
|
INC DE
|
|
LDI
|
|
LDI
|
|
LDI
|
|
LD HL,SIZEBFF
|
|
LD DE,PRM2
|
|
CALL PUTPRM
|
|
LD DE,DIR2MSG
|
|
JP MESSAGE
|
|
|
|
;HL':HL + DE':DE
|
|
|
|
ADDXXX ADD HL,DE
|
|
EXX
|
|
ADC HL,DE
|
|
EXX
|
|
RET
|
|
|
|
FILES DW 0
|
|
|
|
S_LOW DW 0
|
|
S_HIGH DW 0
|
|
|
|
;12345678 123 1 234 567 890 "
|
|
; SIZE
|
|
|
|
PNAME LD BC,8
|
|
LD DE,PRM1
|
|
LDIR
|
|
XOR A
|
|
LD (DE),A
|
|
LD DE,PRM2
|
|
LDI
|
|
LDI
|
|
LDI
|
|
LD (DE),A
|
|
LD IX,DTA
|
|
CALL PRNSIZE
|
|
CALL PRNDATE
|
|
CALL PRNTIME
|
|
LD DE,DIR3MSG
|
|
JP MESSAGE
|
|
|
|
PRINTB LD A,(HL)
|
|
PUSH BC
|
|
CALL PRINTX
|
|
POP BC
|
|
INC HL
|
|
DJNZ PRINTB
|
|
RET
|
|
;------------------
|
|
|
|
PUTB LD C,#2F
|
|
PUTB1 INC C
|
|
SUB 10
|
|
JP NC,PUTB1
|
|
ADD A,10
|
|
ADD A,#30
|
|
PUSH AF
|
|
LD A,C
|
|
LD (HL),A
|
|
INC HL
|
|
POP AF
|
|
LD (HL),A
|
|
INC HL
|
|
RET
|
|
|
|
|
|
PRNB LD C,#2F
|
|
PRNB1 INC C
|
|
SUB 10
|
|
JP NC,PRNB1
|
|
ADD A,10
|
|
ADD A,#30
|
|
PUSH AF
|
|
LD A,C
|
|
CALL PRINTX
|
|
POP AF
|
|
JP PRINTX
|
|
|
|
STR2DEC LD HL,0
|
|
STRLOOP LD A,(DE)
|
|
INC DE
|
|
OR A
|
|
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,STRLOOP
|
|
INC H
|
|
JR STRLOOP
|
|
|
|
ATODEC CP "0"
|
|
RET C
|
|
CP ":"
|
|
CCF
|
|
RET C
|
|
SUB "0"
|
|
RET
|
|
|
|
PDIGIT LD DE,10000
|
|
LD A,#C8
|
|
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,#30
|
|
LD (IX+0),A
|
|
INC IX
|
|
LD (IX+0),0
|
|
RET
|
|
|
|
DIG XOR A
|
|
DIG1 INC A
|
|
SBC HL,DE
|
|
JR NC,DIG1
|
|
ADD HL,DE
|
|
DEC A
|
|
RET_Z RET Z
|
|
ADD A,#30
|
|
LD (IX+0),A
|
|
INC IX
|
|
LD A,0
|
|
LD (RET_Z),A
|
|
RET
|
|
|
|
PRNSIZE LD A,(IX+32)
|
|
LD HL,DIRIDD
|
|
AND #10
|
|
JP NZ,PRZ
|
|
LD L,(IX+28)
|
|
LD H,(IX+29)
|
|
EXX
|
|
LD L,(IX+30)
|
|
LD H,(IX+31)
|
|
EXX
|
|
PUSH IX
|
|
CALL MAKE_LN
|
|
LD HL,L32BIT_+9
|
|
LD A,(HL)
|
|
CP #20
|
|
JR NZ,ALR
|
|
LD A,#30
|
|
LD (HL),A
|
|
ALR LD DE,SIZEBFF
|
|
LD HL,L32BIT_;; +1
|
|
LDI
|
|
LD A," "
|
|
LD (DE),A
|
|
INC DE
|
|
LDI
|
|
LDI
|
|
LDI
|
|
LD (DE),A
|
|
INC DE
|
|
LDI
|
|
LDI
|
|
LDI
|
|
LD (DE),A
|
|
INC DE
|
|
LDI
|
|
LDI
|
|
LDI
|
|
LD HL,SIZEBFF
|
|
POP IX
|
|
PRZ LD DE,PRM3
|
|
JP PUTPRM
|
|
|
|
PRNDATE LD B,(IX+25)
|
|
LD C,(IX+24)
|
|
LD HL,SIZEBFF
|
|
CALL DATE
|
|
LD (HL),0
|
|
LD HL,SIZEBFF
|
|
LD DE,PRM4
|
|
LD A,(HL)
|
|
CP "0"
|
|
JP NZ,PUTPRM
|
|
LD (HL),#20
|
|
JP PUTPRM
|
|
|
|
PRNTIME LD B,(IX+22)
|
|
LD C,(IX+23)
|
|
LD HL,SIZEBFF
|
|
CALL TIME
|
|
LD (HL),0
|
|
LD HL,SIZEBFF
|
|
LD DE,PRM5
|
|
LD A,(HL)
|
|
CP "0"
|
|
JP NZ,PUTPRM
|
|
LD (HL),#20
|
|
JP PUTPRM
|
|
|
|
TIME
|
|
SRL C
|
|
RR B
|
|
SRL C
|
|
RR B
|
|
SRL C
|
|
RR B
|
|
SRL B
|
|
SRL B
|
|
LD A,C
|
|
CALL NUMB
|
|
LD (HL),":"
|
|
INC HL
|
|
LD A,B
|
|
JP NUMB
|
|
|
|
DATE
|
|
LD A,C
|
|
AND #1F
|
|
PUSH BC
|
|
CALL NUMB
|
|
LD (HL),"."
|
|
INC HL
|
|
POP BC
|
|
LD A,C
|
|
SRL B
|
|
RLA
|
|
RLA
|
|
RLA
|
|
RLA
|
|
AND #0F
|
|
CALL NUMB
|
|
LD (HL),"."
|
|
INC HL
|
|
LD A,B
|
|
ADD A,#50
|
|
CP 100
|
|
JP C,NUMB
|
|
SUB100 SUB 100
|
|
CP 100
|
|
JP C,NUMB
|
|
JR SUB100
|
|
|
|
NUMB LD C,#2F
|
|
NUMB1 INC C
|
|
SUB 10
|
|
JP NC,NUMB1
|
|
ADD A,10
|
|
ADD A,#30
|
|
LD (HL),C
|
|
INC HL
|
|
LD (HL),A
|
|
INC HL
|
|
RET
|
|
|
|
MAKE_LN LD IX,L32BIT_
|
|
EXX
|
|
LD DE,#3B9A ; 1000000000
|
|
EXX
|
|
LD DE,#CA00
|
|
CALL GET_DIG
|
|
EXX
|
|
LD DE,#05F5 ; 100000000
|
|
EXX
|
|
LD DE,#E100
|
|
CALL GET_DIG
|
|
EXX
|
|
LD DE,#0098 ; 10000000
|
|
EXX
|
|
LD DE,#9680
|
|
CALL GET_DIG
|
|
EXX
|
|
LD DE,#000F ; 1000000
|
|
EXX
|
|
LD DE,#4240
|
|
CALL GET_DIG
|
|
EXX
|
|
LD DE,#0001 ; 100000
|
|
EXX
|
|
LD DE,#86A0
|
|
CALL GET_DIG
|
|
EXX
|
|
LD DE,#0000 ; 10000
|
|
EXX
|
|
LD DE,#2710
|
|
CALL GET_DIG
|
|
EXX
|
|
LD DE,#0000 ; 1000
|
|
EXX
|
|
LD DE,#03E8
|
|
CALL GET_DIG
|
|
EXX
|
|
LD DE,#0000 ; 100
|
|
EXX
|
|
LD DE,#0064
|
|
CALL GET_DIG
|
|
EXX
|
|
LD DE,#0000 ; 10
|
|
EXX
|
|
LD DE,#000A
|
|
CALL GET_DIG
|
|
LD A,L ; 1
|
|
ADD A,#30
|
|
LD (IX+0),A
|
|
INC IX
|
|
LD HL,L32BIT_
|
|
LD DE,#2030
|
|
KILLZ LD A,(HL)
|
|
CP E
|
|
JR NZ,KILLZ2
|
|
LD (HL),D
|
|
INC HL
|
|
JP KILLZ
|
|
KILLZ2 LD HL,L32BIT_+9
|
|
LD A,(HL)
|
|
CP D
|
|
RET NZ
|
|
LD (HL),E
|
|
RET
|
|
|
|
; HL:HL - DE:DE
|
|
|
|
GET_DIG XOR A
|
|
INC_DG INC A
|
|
SBC HL,DE
|
|
EXX
|
|
SBC HL,DE
|
|
EXX
|
|
JP NC,INC_DG
|
|
ADD HL,DE
|
|
EXX
|
|
ADC HL,DE
|
|
EXX
|
|
DEC A
|
|
ADD A,#30
|
|
LD (IX+0),A
|
|
INC IX
|
|
RET
|
|
|
|
L32BIT_ DB "0000000000"
|
|
|
|
DIRIDD DB "<DIR> ",0
|
|
|
|
SIZEBFF DB "0 000 000 000",0,0
|
|
|
|
;-------------------
|
|
|
|
VERS LD C,VERSION
|
|
RST #10
|
|
LD A,D
|
|
LD HL,PRM1
|
|
CALL GETDC
|
|
LD A,"."
|
|
LD (HL),A
|
|
INC HL
|
|
LD A,E
|
|
CALL GETDD
|
|
XOR A
|
|
LD (HL),A
|
|
LD DE,VERSMSG
|
|
JP MESSAGE
|
|
|
|
GETDC LD B,#2F
|
|
GETDA INC B
|
|
SUB 10
|
|
JR NC,GETDA
|
|
ADD A,10+"0"
|
|
LD C,A
|
|
LD A,"0"
|
|
CP B
|
|
LD A,C
|
|
JR Z,MDEC
|
|
LD (HL),B
|
|
INC HL
|
|
MDEC LD (HL),A
|
|
INC HL
|
|
RET
|
|
|
|
GETDD LD B,#2F
|
|
GETDB INC B
|
|
SUB 10
|
|
JR NC,GETDB
|
|
ADD A,10
|
|
LD (HL),B
|
|
INC HL
|
|
RET Z
|
|
ADD A,"0"
|
|
LD (HL),A
|
|
INC HL
|
|
RET
|
|
|
|
HELP LD DE,HELPMSG
|
|
CALL MESSAGE
|
|
RET
|
|
|
|
CEXIT LD A,(TASKX)
|
|
DEC A
|
|
DEC A
|
|
RET Z
|
|
POP HL
|
|
QUIT LD B,0
|
|
LD C,EXIT
|
|
RST #10
|
|
RET
|
|
|
|
ERR_MSG INC DE
|
|
LD HL,ERR0
|
|
LD BC,ERR1-ERR0
|
|
CALL LCPIR
|
|
CALL PRINTZ
|
|
CALL CRLF
|
|
JP CRLF
|
|
|
|
MESSAGE CALL FMESAGE
|
|
CALL PRINTZ
|
|
CALL GETXY
|
|
RET
|
|
|
|
FMESAGE INC DE
|
|
LD HL,MSG0
|
|
LD BC,MSG1-MSG0
|
|
LCPIR XOR A
|
|
CPIR
|
|
RET PO
|
|
RET NZ
|
|
DEC DE
|
|
LD A,D
|
|
OR E
|
|
JP NZ,LCPIR
|
|
RET
|
|
|
|
PUTPRM LD BC,15
|
|
PUTPRMA LD A,(HL)
|
|
LDI
|
|
RET PO
|
|
OR A
|
|
JR NZ,PUTPRMA
|
|
RET
|
|
|
|
PRINTZ LD A,(HL)
|
|
INC HL
|
|
OR A
|
|
RET Z
|
|
CP "%"
|
|
JR NZ,PRINTZ2
|
|
LD A,(HL)
|
|
INC HL
|
|
SUB "1"
|
|
PUSH HL
|
|
LD L,A
|
|
LD H,0
|
|
ADD HL,HL
|
|
ADD HL,HL
|
|
ADD HL,HL
|
|
ADD HL,HL
|
|
LD BC,PRM1
|
|
ADD HL,BC
|
|
LD C,PCHARS
|
|
RST #10
|
|
POP HL
|
|
JR PRINTZ
|
|
PRINTZ2 LD C,PUTCHAR
|
|
RST #10
|
|
JP PRINTZ
|
|
|
|
ROOT DB "C:",#5C,0
|
|
|
|
ALLFS DB "*.*",0
|
|
|
|
SER_NUM DB "C37F-73AB",0
|
|
|
|
EXTBF DS 4
|
|
|
|
BATBF DB "BAT"
|
|
|
|
ECHOON DB "ON",0
|
|
ECHOOFF DB "OFF",0
|
|
|
|
|
|
DIR1MSG EQU 0
|
|
VERSMSG EQU 1
|
|
DATEMSG EQU 2
|
|
TIMEMSG EQU 3
|
|
PAUSMSG EQU 4
|
|
ILLGMSG EQU 5
|
|
ECHOMSG EQU 6
|
|
ON__MSG EQU 7
|
|
OFF_MSG EQU 8
|
|
DIR2MSG EQU 9
|
|
DIR3MSG EQU 10
|
|
HELPMSG EQU 11
|
|
|
|
MSG0 DB 0
|
|
DB "Volume in drive %1 has no label",CR,LF
|
|
DB "Volume Serial number is %2",CR,LF
|
|
DB "Directory of %3",CR,LF,CR,LF,0
|
|
DB "Estex DSS: Version %1",CR,LF,0 ;R02
|
|
DB "Current date: %1",CR,LF,0
|
|
DB "Current time: %1",CR,LF,0
|
|
DB "Press any key to continue . . .",CR,LF,0
|
|
DB "Invalid parametr",CR,LF,0
|
|
DB "Echo is %1",CR,LF,0
|
|
DB "on",0
|
|
DB "off",0
|
|
DB " %1 file(s) %2 bytes",CR,LF,CR,LF,0
|
|
; FILENAME EXT SIZE DATE TIME
|
|
DB "%1 %2 %3 %4 %5",CR,LF,0
|
|
DB "COMMANDS:",CR,LF,CR,LF
|
|
DB "CD DEL HELP REN TIME "
|
|
DB " ",CR,LF
|
|
DB "CHDIR DIR MD RENAME VER "
|
|
DB " ",CR,LF
|
|
DB "CLS ERASE MKDIR RMDIR VERSION "
|
|
DB " ",CR,LF
|
|
DB "DATE EXIT RD SET "
|
|
DB " ",CR,LF
|
|
DB 0
|
|
MSG1
|
|
|
|
ERR0 DB #00
|
|
DB "Bad command or file name",0
|
|
DB "Invalid function",0
|
|
DB "Invalid drive number",0
|
|
DB "File not found",0
|
|
DB "Path not found",0
|
|
DB "Invalid handle",0
|
|
DB "Extended error 6",0
|
|
DB "File exist",0
|
|
DB "File read only",0
|
|
DB "Root overflow",0
|
|
DB "No free space",0
|
|
DB "Directory not empty",0
|
|
DB "Can't delete current directory",0
|
|
DB "Invalid media",0
|
|
DB "Unknown operation",0 ;R02
|
|
DB "Directory exist",0
|
|
DB "Invalid filename",0
|
|
DB "Invalid EXE-file",0
|
|
DB "Not supported EXE-file",0
|
|
DB "Access denied",0
|
|
DB "Not ready",0
|
|
DB "Seek error",0
|
|
DB "Sector not found",0
|
|
DB "CRC error",0
|
|
DB "Write protect",0
|
|
DB "Read error",0
|
|
DB "Write error",0
|
|
DB "Drive failure",0
|
|
DB "Extended error 28",0
|
|
DB "Extended error 29",0
|
|
DB "No free memory",0
|
|
DB "Invalid memory block",0
|
|
DB "Extended error 32",0
|
|
DB "Extended error 33",0
|
|
DB "Extended error 34",0
|
|
DB "35",0
|
|
DB "36",0
|
|
DB "37",0
|
|
DB "38",0
|
|
DB "39",0
|
|
DB "40",0
|
|
DB "41",0
|
|
DB "42",0
|
|
DB "43",0
|
|
DB "44",0
|
|
DB "45",0
|
|
DB "46",0
|
|
DB "47",0
|
|
DB "48",0
|
|
DB "49",0
|
|
DB "50"
|
|
DB 0
|
|
ERR1
|
|
|
|
PRM1 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
PRM2 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
PRM3 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
PRM4 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
PRM5 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
PRM6 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
PRM7 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
PRM8 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
PRM9 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
|
|
DTA ;DEFS 256,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
|
|
PATHF ;DEFS 256,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
|
|
BAT_FM DB 0
|
|
BAT_LEN DB 0
|
|
|
|
ECHOFLG DB 0
|
|
|
|
PATHLEN DB 0
|
|
PATH ;DEFS 40,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DB 0,0,0,0,0,0,0,0
|
|
|
|
GETPATH LD C,2
|
|
RST #10
|
|
LD HL,PATHF
|
|
ADD A,"A"
|
|
LD (HL),A
|
|
INC HL
|
|
LD (HL),":"
|
|
INC HL
|
|
LD C,30
|
|
RST #10
|
|
LD HL,PATHF
|
|
LD DE,PATH
|
|
LDI
|
|
LDI
|
|
LDI
|
|
PUSH HL
|
|
XOR A
|
|
LD BC,34
|
|
CPIR
|
|
JP NZ,LONGP
|
|
LD A,34
|
|
SUB C
|
|
LD C,A
|
|
POP HL
|
|
LDIR
|
|
JR PHLEN
|
|
|
|
LONGP CPIR
|
|
LD A,"."
|
|
LD (DE),A
|
|
INC DE
|
|
LD (DE),A
|
|
INC DE
|
|
LD (DE),A
|
|
INC DE
|
|
LD BC,31
|
|
AND A
|
|
SBC HL,BC
|
|
LDIR
|
|
POP HL
|
|
PHLEN LD HL,PATH
|
|
LD BC,40
|
|
XOR A
|
|
CPIR
|
|
LD A,39
|
|
SUB C
|
|
LD (PATHLEN),A
|
|
LD C,A
|
|
INC C
|
|
INC C
|
|
LD A,80
|
|
SUB C
|
|
LD (WINDOW),A
|
|
RET
|
|
PRINT_B LD C,A
|
|
PRINTBB PUSH BC
|
|
CALL PRINTX
|
|
POP BC
|
|
LD A,C
|
|
DJNZ PRINTBB
|
|
RET
|
|
|
|
TEMPXY DW 0
|
|
|
|
CR_ LD C,CURSOR
|
|
RST #10
|
|
LD E,0
|
|
JP LOCAT
|
|
|
|
LF_ LD C,CURSOR
|
|
RST #10
|
|
LD A,D
|
|
CP #1F
|
|
JP Z,LFF
|
|
INC D
|
|
JP LOCAT
|
|
|
|
LFF PUSH HL
|
|
PUSH DE
|
|
LD BC,#018A
|
|
LD DE,#0020
|
|
EI
|
|
HALT
|
|
DI
|
|
RST ToBIOS
|
|
LD DE,#1F00
|
|
CALL LOCAT
|
|
LD A,#20
|
|
LD BC,#5082
|
|
RST ToBIOS
|
|
EI
|
|
POP DE
|
|
CALL LOCAT
|
|
POP HL
|
|
RET
|
|
|
|
PRINTX CP #20
|
|
JP NC,CHAR
|
|
CP #0D
|
|
JP Z,CR_
|
|
CP #0A
|
|
JP Z,LF_
|
|
CHAR PUSH BC
|
|
LD BC,#0182
|
|
RST ToBIOS
|
|
POP BC
|
|
RET
|
|
|
|
LOCAT LD (TEMPXY),DE
|
|
LD C,LOCATE
|
|
RST #10
|
|
RET
|
|
|
|
;PRINTX LD C,PUTCHAR
|
|
; RST #10
|
|
; RET
|
|
|
|
CEDIT PUSH IX
|
|
POP HL
|
|
INC HL
|
|
INC HL
|
|
LD (ETXS),HL
|
|
XOR A
|
|
LD (POSIT),A
|
|
LD (SHIFT),A
|
|
EDIT1 LD DE,(ETXS)
|
|
CALL PRINT_S
|
|
CALL KEY
|
|
CP 13
|
|
RET Z
|
|
LD HL,EDIT1
|
|
PUSH HL
|
|
AND A
|
|
LD HL,#5400
|
|
SBC HL,DE
|
|
JP Z,BACK
|
|
AND A
|
|
LD HL,#5600
|
|
SBC HL,DE
|
|
JP Z,FORW
|
|
CP #08
|
|
JP Z,DELET
|
|
CP #20
|
|
RET C
|
|
EX AF,AF'
|
|
LD A,(IX+1)
|
|
CP (IX+0)
|
|
CCF
|
|
RET C
|
|
LD A,(IX+1)
|
|
LD E,A
|
|
LD D,0
|
|
LD HL,(ETXS)
|
|
ADD HL,DE
|
|
LD A,(POSIT)
|
|
LD E,A
|
|
LD A,(IX+1)
|
|
SUB E
|
|
JR Z,ADD_SM
|
|
LD B,D
|
|
LD C,A
|
|
LD D,H
|
|
LD E,L
|
|
DEC HL
|
|
LDDR
|
|
EX DE,HL
|
|
ADD_SM EX AF,AF'
|
|
LD (HL),A
|
|
LD A,(POSIT)
|
|
INC A
|
|
LD (POSIT),A
|
|
LD (MAIN_X),A
|
|
INC (IX+1)
|
|
LD HL,(ETXE)
|
|
INC HL
|
|
LD (ETXE),HL
|
|
LD HL,SHIFT
|
|
SUB (HL)
|
|
CP (IX-1)
|
|
RET C
|
|
LD A,(STEP)
|
|
ADD A,(HL)
|
|
LD (HL),A
|
|
; CALL PAGE
|
|
RET
|
|
|
|
BACK LD A,(POSIT)
|
|
OR A
|
|
RET Z ;JP Z,BCK
|
|
DEC A
|
|
LD (POSIT),A
|
|
LD (MAIN_X),A
|
|
INC A
|
|
LD HL,SHIFT
|
|
SUB (HL)
|
|
RET NZ
|
|
LD A,(STEP)
|
|
LD E,A
|
|
LD A,(HL)
|
|
SUB E
|
|
LD (HL),A
|
|
; CALL PAGE
|
|
RET
|
|
|
|
FORW LD A,(POSIT)
|
|
CP (IX+1)
|
|
RET Z ; JP Z,FRD
|
|
INC A
|
|
LD (POSIT),A
|
|
LD (MAIN_X),A
|
|
LD HL,SHIFT
|
|
SUB (HL)
|
|
CP (IX-1)
|
|
RET C
|
|
LD A,(STEP)
|
|
ADD A,(HL)
|
|
LD (HL),A
|
|
; CALL PAGE
|
|
RET
|
|
|
|
DELET LD A,(POSIT)
|
|
OR A
|
|
RET Z ; JP Z,LINKSTR
|
|
LD HL,(ETXS)
|
|
LD E,A
|
|
LD D,0
|
|
ADD HL,DE
|
|
LD A,(IX+1)
|
|
SUB E
|
|
JR Z,SUB_SM
|
|
LD B,D
|
|
LD C,A
|
|
LD D,H
|
|
LD E,L
|
|
DEC DE
|
|
LDIR
|
|
SUB_SM XOR A
|
|
DEC HL
|
|
LD (HL),A
|
|
LD A,(POSIT)
|
|
DEC A
|
|
LD (POSIT),A
|
|
LD (MAIN_X),A
|
|
DEC (IX+1)
|
|
LD HL,(ETXE)
|
|
DEC HL
|
|
LD (ETXE),HL
|
|
LD HL,SHIFT
|
|
INC A
|
|
SUB (HL)
|
|
RET NZ
|
|
LD A,(STEP)
|
|
LD E,A
|
|
LD A,(HL)
|
|
SUB E
|
|
LD (HL),A
|
|
; CALL PAGE
|
|
RET
|
|
|
|
KEY ;RES 5,(IY+1)
|
|
LD A,(SHIFT)
|
|
LD E,A
|
|
LD A,(POSIT)
|
|
SUB E
|
|
INC A
|
|
LD HL,PATHLEN
|
|
ADD A,(HL)
|
|
LD (_X+1),A
|
|
LD A,(POSIT)
|
|
CP (IX+1)
|
|
JP C,KEY0
|
|
LD A,#20
|
|
LD (_A+1),A
|
|
JP KEY1
|
|
KEY0 LD E,A
|
|
LD D,0
|
|
LD HL,(ETXS)
|
|
ADD HL,DE
|
|
LD A,(HL)
|
|
LD (_A+1),A
|
|
KEY1 CALL CURSORF
|
|
EI
|
|
HALT
|
|
LD C,SCANKEY
|
|
RST #10
|
|
JP Z,KEY1
|
|
RET
|
|
|
|
CURSORX DB #00
|
|
|
|
CURSORF LD A,05
|
|
DEC A
|
|
LD (CURSORF+1),A
|
|
RET NZ
|
|
LD A,05
|
|
LD (CURSORF+1),A
|
|
LD DE,(TEMPXY)
|
|
_X LD E,#00
|
|
CALL LOCAT
|
|
LD A,(CURSORX)
|
|
XOR #FF
|
|
LD (CURSORX),A
|
|
LD A,"_"
|
|
JR NZ,YEPCUR
|
|
_A LD A,#20
|
|
YEPCUR CALL PRINTX
|
|
EI
|
|
RET
|
|
|
|
RES_CUR LD A,(CURSORX)
|
|
OR A
|
|
RET Z
|
|
XOR #FF
|
|
LD (CURSORX),A
|
|
LD DE,(TEMPXY)
|
|
LD A,(_X+1)
|
|
LD E,A
|
|
CALL LOCAT
|
|
LD A,(_A+1)
|
|
JP PRINTX
|
|
|
|
PRINT_S PUSH DE
|
|
CALL GETXY ;;;
|
|
LD DE,(TEMPXY)
|
|
LD E,0
|
|
CALL LOCAT
|
|
LD HL,PATH
|
|
CALL PRINTZ
|
|
LD A,">"
|
|
CALL PRINTX
|
|
POP DE
|
|
EX DE,HL
|
|
SH LD BC,#0000
|
|
ADD HL,BC
|
|
LD A,(SHIFT)
|
|
LD C,A
|
|
LD A,(IX+1)
|
|
SUB C
|
|
JP Z,EMT_STR
|
|
LD B,A
|
|
LD A,(IX-1)
|
|
SUB B
|
|
JR NC,PR_S
|
|
LD B,(IX-1)
|
|
PR_S PUSH BC
|
|
LD C,#86
|
|
RST ToBIOS
|
|
POP BC
|
|
EMT_STR LD A,(IX-1)
|
|
SUB B
|
|
EI
|
|
RET Z
|
|
LD B,A
|
|
LD C,#82
|
|
LD A,#20
|
|
RST ToBIOS
|
|
EI
|
|
RET
|
|
|
|
SHIFT EQU SH+1
|
|
|
|
GET_CMD LD D,XH
|
|
LD E,XL
|
|
EX DE,HL
|
|
LD E,(HL)
|
|
INC HL
|
|
LD D,0
|
|
EX DE,HL
|
|
ADD HL,DE
|
|
LD (HL),0
|
|
NEXTPRM EX DE,HL
|
|
SKIPSP LD A,(HL)
|
|
INC HL
|
|
CP " "
|
|
RET C
|
|
JR Z,SKIPSP
|
|
DEC HL
|
|
CP "/"
|
|
JR NZ,PROCESS
|
|
LD DE,BUFFER
|
|
LD C,GSWITCH
|
|
RST #10
|
|
PUSH AF
|
|
EX DE,HL ;SAVE HL IN DE
|
|
LD HL,BUFFER
|
|
INC HL
|
|
CALL ISWITCH
|
|
POP AF
|
|
JP NC,NEXTPRM
|
|
XOR A
|
|
RET
|
|
|
|
PROCESS LD DE,CMDLINE
|
|
LD BC,#00FF
|
|
NLDI LD A,(HL)
|
|
LDI
|
|
INC B
|
|
CP " "
|
|
JR NC,NLDI
|
|
DEC B
|
|
LD A,B
|
|
LD (CMDLINE-1),A
|
|
LD A,(RUNMODE)
|
|
OR #40 ;PROCESS
|
|
LD (RUNMODE),A
|
|
XOR A
|
|
RET
|
|
|
|
ISWITCH LD A,(HL)
|
|
CP "a"
|
|
JR C,NUP
|
|
CP "{"
|
|
JR NC,NUP
|
|
SUB #20
|
|
NUP
|
|
PR000 CP "P"
|
|
JR NZ,PR001
|
|
LD A,(RUNMODE)
|
|
OR #80 ;PRIMARY CONSOLE
|
|
LD (RUNMODE),A
|
|
RET
|
|
PR001 CP "S"
|
|
JR NZ,PR002
|
|
LD A,(RUNMODE)
|
|
OR #20 ;SECONDARY CONSOLE
|
|
LD (RUNMODE),A
|
|
PR002 CP "C"
|
|
JR NZ,PR003
|
|
LD A,(RUNMODE)
|
|
OR #10 ;RUN BATCH FILE
|
|
LD (RUNMODE),A
|
|
PR003 RET
|
|
|
|
TASKX DB 0
|
|
RUNMODE DB 0
|
|
STEP DB 8
|
|
MAIN_X DB 0
|
|
|
|
LEN_OLD DB #00
|
|
POSIT DB #00
|
|
ETXS DW 0
|
|
ETXE DW 0
|
|
; +0 - Size buffer
|
|
; +1 - Amount simbols
|
|
; -1 - Scroll Window
|
|
WINDOW DB #50
|
|
BUFFERC DB #FF
|
|
LEN_NEW DB #00
|
|
CMDLINE ;DEFS #100,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
|
|
TMPLINE DS 256
|
|
|
|
BATNAME DB "system.bat",0
|
|
|
|
BUFFER
|
|
BATBUFF ;DEFS 129,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
DB 0
|