mirror of
https://github.com/Tolik-Trek/CDX.git
synced 2026-06-15 09:21:38 +03:00
106 lines
1.5 KiB
NASM
106 lines
1.5 KiB
NASM
|
|
; HL - exe-prefix
|
|
; IX - pointers at work buffers
|
|
EX_COMMAND_LINE:
|
|
INC HL
|
|
.NEXTPR: LD DE,ARGCBUF
|
|
LD BC,Dss.EX_Path.GSWITCH
|
|
RST ToDSS
|
|
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,MSG_UNK_DEVICE_NUMBER
|
|
CALL MESSAGE
|
|
LD A,1
|
|
LD (STOPMODE),A
|
|
JR .EOCL
|
|
;
|
|
.number: SUB '1'
|
|
OR #C0
|
|
;
|
|
PUSH IX
|
|
PUSH AF
|
|
CALL RESTORE_STATE
|
|
XOR A
|
|
LD (RESTORE_STATE.set_par),A
|
|
POP AF
|
|
LD (CDDRIVE),A
|
|
LD C,BIOS.DRV_DETECT
|
|
RST ToBIOS
|
|
POP IX
|
|
JR NC,.EOCL
|
|
;
|
|
CP BIOS.Error.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,MSG_NO_CDROM
|
|
CALL MESSAGE
|
|
LD A,1
|
|
LD (STOPMODE),A
|
|
SCF
|
|
JR .CL_FAILURE
|
|
;
|
|
.HELP: LD A,MSG_USAGE
|
|
CALL MESSAGE
|
|
LD A,1
|
|
LD (STOPMODE),A
|
|
JR .EOCL
|
|
|
|
|
|
|
|
; MAS_CD:
|
|
; ;LD A,MASTER
|
|
; ;LD (CDDRIVE),A
|
|
; JR EOCL
|
|
|
|
; SLA_CD:
|
|
; ;LD A,SLAVE
|
|
; ;LD (CDDRIVE),A
|
|
; JR EOCL
|