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

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

22
CDX.ASM
View File

@ -94,19 +94,21 @@ 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
@ -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,80 +1,96 @@
; 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)
INC IX INC IX
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 ;
POP AF .EOCL: POP HL
JR NC,NEXTPR POP AF
RET JR NC,.NEXTPR
RET
;
.CL_FAILURE: POP HL
POP AF
RET
CL_FAILURE .ITCKEY: LD A,(ARGCBUF+1)
POP HL CP "5"
POP AF JR NC,.HELP
RET CP "1"
JR NC,.number
ITCKEY: LD A,(ARGCBUF+1) ; ERROR
CP "5" LD HL,ARGCBUF+1
JR NC,.HELP CALL PUTVAR
CP "1" LD A,MSG_UNK_DEVICE_NUMBER
JR NC,.number CALL MESSAGE
; ERROR LD A,1
LD HL,ARGCBUF+1 LD (STOPMODE),A
CALL PUTVAR JR .EOCL
LD A,MSG_UNK_DEVICE_NUMBER ;
CALL MESSAGE .number: SUB '1'
LD A,1 OR #C0
LD (STOPMODE),A ;
JR EOCL PUSH IX
; PUSH AF
.number:; CALL RESTORE_STATE
SUB A,'1' XOR A
OR #C0 LD (RESTORE_STATE.set_par),A
LD (CDDRIVE),A POP AF
LD C,BIOS.DRV_RESET LD (CDDRIVE),A
RST ToBIOS LD C,BIOS.DRV_DETECT
JR NC,EOCL RST ToBIOS
; POP IX
LD HL,ARGCBUF+1 JR NC,.EOCL
CALL PUTVAR ;
LD A,MSG_NO_CDROM CP BIOS.Error.ATAPI.UnitAttention
CALL MESSAGE JR NZ,.error
LD A,1 ;
LD (STOPMODE),A LD A,(CDDRIVE)
SCF PUSH IX
JR CL_FAILURE CALL SAVE_MEDIA_CHANGED
; POP IX
.HELP: LD A,MSG_USAGE JR NC,.EOCL
CALL MESSAGE ;
LD A,1 .error: LD HL,ARGCBUF+1
LD (STOPMODE),A CALL PUTVAR
JR EOCL 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