From 382e5a8bdbdf7c908226985b536b7497d6b887fa Mon Sep 17 00:00:00 2001 From: Tolik <85737314+Tolik-Trek@users.noreply.github.com> Date: Thu, 20 Feb 2025 04:05:36 +1000 Subject: [PATCH] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B=20=D0=B1=D0=B0=D0=B3=D0=B8=20=D1=81=20=D0=B2?= =?UTF-8?q?=D1=8B=D0=B1=D0=BE=D1=80=D0=BE=D0=BC=20=D0=BA=D0=B0=D0=BD=D0=B0?= =?UTF-8?q?=D0=BB=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CDX.ASM | 22 +++---- CMDPARSE.ASM | 162 ++++++++++++++++++++++++++++----------------------- 2 files changed, 101 insertions(+), 83 deletions(-) diff --git a/CDX.ASM b/CDX.ASM index a2f970c..78aac70 100644 --- a/CDX.ASM +++ b/CDX.ASM @@ -94,19 +94,21 @@ START: PUSH IX ;CALL MDEALLOC QUIT: CALL CRLF -.set_par+1: LD B,1 - LD C,BIOS.DRV_SET_PAR - LD A,(CDDRIVE) - RST ToBIOS + CALL RESTORE_STATE ; .loop: LD BC,Dss.Exit RST ToDSS JP .loop -OLD_DSS - LD A,MSG_OLD_DSS - CALL MESSAGE - JR QUIT +OLD_DSS: LD A,MSG_OLD_DSS + CALL MESSAGE + JR QUIT + +RESTORE_STATE: +.set_par+1: LD B,1 + LD C,BIOS.DRV_SET_PAR + LD A,(CDDRIVE) + JP ToBIOS ;HNDMEM DB #FF @@ -226,9 +228,9 @@ SAVE_MEDIA_CHANGED: RST ToBIOS OR %0000'0010 LD B,A - LD A,(QUIT.set_par) + LD A,(RESTORE_STATE.set_par) OR B - LD (QUIT.set_par),A + LD (RESTORE_STATE.set_par),A RET diff --git a/CMDPARSE.ASM b/CMDPARSE.ASM index 0b23d08..461e978 100644 --- a/CMDPARSE.ASM +++ b/CMDPARSE.ASM @@ -1,80 +1,96 @@ ; 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 +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 -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 A,'1' - OR #C0 - LD (CDDRIVE),A - LD C,BIOS.DRV_RESET - RST ToBIOS - JR NC,EOCL - ; - 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 +.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