исправлены баги с выбором канала

This commit is contained in:
Tolik 2025-02-20 04:05:36 +10:00
parent 14a85b850f
commit 382e5a8bdb
2 changed files with 101 additions and 83 deletions

18
CDX.ASM
View File

@ -94,20 +94,22 @@ START: PUSH IX
;CALL MDEALLOC ;CALL MDEALLOC
QUIT: CALL CRLF QUIT: CALL CRLF
.set_par+1: LD B,1 CALL RESTORE_STATE
LD C,BIOS.DRV_SET_PAR
LD A,(CDDRIVE)
RST ToBIOS
; ;
.loop: LD BC,Dss.Exit .loop: LD BC,Dss.Exit
RST ToDSS RST ToDSS
JP .loop JP .loop
OLD_DSS OLD_DSS: LD A,MSG_OLD_DSS
LD A,MSG_OLD_DSS
CALL MESSAGE CALL MESSAGE
JR QUIT JR QUIT
RESTORE_STATE:
.set_par+1: LD B,1
LD C,BIOS.DRV_SET_PAR
LD A,(CDDRIVE)
JP ToBIOS
;HNDMEM DB #FF ;HNDMEM DB #FF
MALLOC: MALLOC:
@ -226,9 +228,9 @@ SAVE_MEDIA_CHANGED:
RST ToBIOS RST ToBIOS
OR %0000'0010 OR %0000'0010
LD B,A LD B,A
LD A,(QUIT.set_par) LD A,(RESTORE_STATE.set_par)
OR B OR B
LD (QUIT.set_par),A LD (RESTORE_STATE.set_par),A
RET RET

View File

@ -1,20 +1,20 @@
; HL - exe-prefix ; HL - exe-prefix
; IX - pointers at work buffers ; IX - pointers at work buffers
EX_COMMAND_LINE EX_COMMAND_LINE:
INC HL INC HL
NEXTPR LD DE,ARGCBUF .NEXTPR: LD DE,ARGCBUF
LD BC,Dss.EX_Path.GSWITCH LD BC,Dss.EX_Path.GSWITCH
RST ToDSS RST ToDSS
PUSH AF PUSH AF
PUSH HL PUSH HL
LD A,(ARGCBUF) LD A,(ARGCBUF)
OR A OR A
JR Z,EOCL ;end of command line JR Z,.EOCL ;end of command line
CP "-" CP "-"
JR Z,ITCKEY JR Z,.ITCKEY
CP "/" CP "/"
JR Z,ITCKEY JR Z,.ITCKEY
LD HL,ARGCBUF LD HL,ARGCBUF
LD E,(IX+0) LD E,(IX+0)
LD D,(IX+1) LD D,(IX+1)
@ -22,24 +22,24 @@ NEXTPR LD DE,ARGCBUF
INC IX INC IX
LD A,D LD A,D
OR E OR E
JR Z,CL_FAILURE JR Z,.CL_FAILURE
;LD A,1 ;LD A,1
;LD (NAME_FLG),A ;LD (NAME_FLG),A
MOVNAME LD A,(HL) .MOVNAME: LD A,(HL)
LDI LDI
OR A OR A
JR NZ,MOVNAME JR NZ,.MOVNAME
EOCL POP HL ;
.EOCL: POP HL
POP AF POP AF
JR NC,NEXTPR JR NC,.NEXTPR
RET RET
;
CL_FAILURE .CL_FAILURE: POP HL
POP HL
POP AF POP AF
RET RET
ITCKEY: LD A,(ARGCBUF+1) .ITCKEY: LD A,(ARGCBUF+1)
CP "5" CP "5"
JR NC,.HELP JR NC,.HELP
CP "1" CP "1"
@ -51,30 +51,46 @@ ITCKEY: LD A,(ARGCBUF+1)
CALL MESSAGE CALL MESSAGE
LD A,1 LD A,1
LD (STOPMODE),A LD (STOPMODE),A
JR EOCL JR .EOCL
; ;
.number:; .number: SUB '1'
SUB A,'1'
OR #C0 OR #C0
LD (CDDRIVE),A
LD C,BIOS.DRV_RESET
RST ToBIOS
JR NC,EOCL
; ;
LD HL,ARGCBUF+1 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 CALL PUTVAR
LD A,MSG_NO_CDROM LD A,MSG_NO_CDROM
CALL MESSAGE CALL MESSAGE
LD A,1 LD A,1
LD (STOPMODE),A LD (STOPMODE),A
SCF SCF
JR CL_FAILURE JR .CL_FAILURE
; ;
.HELP: LD A,MSG_USAGE .HELP: LD A,MSG_USAGE
CALL MESSAGE CALL MESSAGE
LD A,1 LD A,1
LD (STOPMODE),A LD (STOPMODE),A
JR EOCL JR .EOCL