cdx/cmdparse.a80
savelij13 194e7a1fca Версия 1.03
- поправлен cdx.txt
- добалена возможность послать ATAPI пакет.
- если нет диска в приводе, то не пишет ошибку, что нет привода
2025-07-07 19:49:39 +03:00

91 lines
1.3 KiB
Plaintext

; LAST UPDATE: 07.07.2025 savelij
; HL - exe-prefix
; IX - pointers at work buffers
EX_COMMAND_LINE:
INC HL
.NEXTPR: LD DE,ARGCBUF
SPDSS DSSF.EX_PATH,EX_PATH.GSWITCH
PUSH AF
PUSH HL
LD A,(ARGCBUF)
OR A
JR Z,.EOCL ;end of command line
CP "-"
JR Z,.ITCKEY
CP "/"
JR Z,.ITCKEY
LD HL,ARGCBUF
LD E,(IX+0)
LD D,(IX+1)
INC IX
INC IX
LD A,D
OR E
JR Z,.CL_FAILURE
;LD A,1
;LD (NAME_FLG),A
.MOVNAME: LD A,(HL)
LDI
OR A
JR NZ,.MOVNAME
.EOCL: POP HL
POP AF
JR NC,.NEXTPR
RET
.CL_FAILURE: POP HL
POP AF
RET
.ITCKEY: LD A,(ARGCBUF+1)
CP "5"
JR NC,.HELP
CP "1"
JR NC,.number
; ERROR
LD HL,ARGCBUF+1
CALL PUTVAR
LD A,MSG0.MSG_UNK_DEVICE_NUMBER
CALL MESSAGE
LD A,1
LD (STOPMODE),A
JR .EOCL
.number: SUB '1'
OR 0xC0
PUSH IX
PUSH AF
CALL RESTORE_STATE
XOR A
LD (RESTORE_STATE.set_par),A
POP AF
LD (CDDRIVE),A
SPBIOS BIOSF.DRV_DETECT
POP IX
JR NC,.EOCL
CP ERR_DRV.ATAPI_MediumError
JR Z,.EOCL
CP ERR_DRV.ATAPI_UnitAttention
JR NZ,.error
LD A,(CDDRIVE)
PUSH IX
CALL SAVE_MEDIA_CHANGED
POP IX
JR NC,.EOCL
.error: LD HL,ARGCBUF+1
CALL PUTVAR
LD A,MSG0.MSG_NO_CDROM
CALL MESSAGE
LD A,1
LD (STOPMODE),A
SCF
JR .CL_FAILURE
.HELP: LD A,MSG0.MSG_USAGE
CALL MESSAGE
LD A,1
LD (STOPMODE),A
JR .EOCL