Release 25/06/2025

This commit is contained in:
Tolik 2025-06-26 19:48:12 +10:00
commit 052252df3c
6 changed files with 257 additions and 152 deletions

160
CDX.ASM
View File

@ -12,8 +12,7 @@
; COMMAND
; -h,? Help page
DEFINE _MAME 1
MAX_DSS_ERR EQU 33
CR EQU 13
LF EQU 10
@ -26,7 +25,7 @@ LF EQU 10
ORG #8100-22
DB "EXE" ;EXE ID
DB #00 ;EXE VERSION
DB #01 ;EXE VERSION
DW #0016 ;CODE OFFSET LOW
DW #0000 ;CODE OFFSET HIGH
DW #0000 ;END-BEG ;PRIMARY LOADER
@ -92,40 +91,47 @@ START: PUSH IX
OR A
CALL Z,COMMAND
CALL MDEALLOC
;CALL MDEALLOC
QUIT: CALL CRLF
CALL RESTORE_STATE
;
.loop: LD BC,Dss.Exit
RST ToDSS
JP .loop
OLD_DSS
LD A,MSG_OLD_DSS
OLD_DSS: LD A,MSG_OLD_DSS
CALL MESSAGE
JR QUIT
HNDMEM DB #FF
RESTORE_STATE:
.set_par+1: LD B,1
LD C,BIOS.DRV_SET_PAR
LD A,(CDDRIVE)
JP ToBIOS
MALLOC
;HNDMEM DB #FF
MALLOC:
LD BC,2*256 + Dss.GetMem
RST ToDSS
JR NC,M_ALLOK
JR NC,.cont
LD A,MSG_MEMERROR
CALL MESSAGE
SCF
RET
M_ALLOK
LD (HNDMEM),A
;
.cont: PUSH AF
LD BC,1*256 + Dss.SetWin3
RST ToDSS
LD HL,BANKTBL
LD C,BIOS.GetMemBlkPages
LD A,(HNDMEM)
POP AF
JP ToBIOS
MDEALLOC
LD A,(HNDMEM)
LD C,Dss.FreeMem
JP ToDSS
; MDEALLOC
; LD A,(HNDMEM)
; LD C,Dss.FreeMem
; JP ToDSS
; FIND_CDROM
; LD IX,DEV_CFG
@ -198,14 +204,33 @@ INIT: XOR A
PUSH BC
RST ToBIOS
POP BC
JR C,.loop
JR NC,.found
;
CP BIOS.Error.ATAPI.MediumError
JR Z,.media_changed
CP BIOS.Error.ATAPI.UnitAttention
JR NZ,.loop
;
.media_changed: PUSH BC
LD A,B
CALL SAVE_MEDIA_CHANGED
POP BC
;
.found: LD A,B
LD (CDDRIVE),A
RET
;
; LD C,BIOS.DRV_RESET
; JP ToBIOS
; RET
SAVE_MEDIA_CHANGED:
LD C,BIOS.DRV_GET_PAR
RST ToBIOS
OR %0000'0010
LD B,A
LD A,(RESTORE_STATE.set_par)
OR B
LD (RESTORE_STATE.set_par),A
RET
;VARIABLES
@ -214,9 +239,23 @@ INIT: XOR A
STOPMODE DB #00
INCLUDE "cmdparse.asm"
INCLUDE "command.asm"
INCLUDE "cd_dos.asm"
CMD_PARSE_ASM.Start: INCLUDE "cmdparse.asm"
CMD_PARSE_ASM.End EQU $
DISPLAY "cmdparse.asm size: ",/D,CMD_PARSE_ASM.End - CMD_PARSE_ASM.Start
;
COMMAND_ASM.Start INCLUDE "command.asm"
COMMAND_ASM.End EQU $
DISPLAY "command.asm size: ",/D,COMMAND_ASM.End - COMMAND_ASM.Start
;
CD_DOS_ASM.Start: INCLUDE "cd_dos.asm"
CD_DOS_ASM.End EQU $
DISPLAY "cd_dos.asm size: ",/D,CD_DOS_ASM.End - CD_DOS_ASM.Start
CRLF: PUSH HL
LD HL,MSG0.crlf
@ -231,11 +270,11 @@ CRLF: PUSH HL
RET
;
ERROR: CP MAX_DSS_ERR
ERROR: ;CP MAX_DSS_ERR
LD E,A
LD D,0
JR C,.ERR_MSG
LD E,D
;JR C,.ERR_MSG
;LD E,D
;JP .ERR_MSG
;
.ERR_MSG: PUSH DE
@ -248,20 +287,70 @@ ERROR: CP MAX_DSS_ERR
JP CRLF
FMESAGE INC DE
LD HL,ERR0
LD BC,ERR0.Size
LCPIR XOR A
FMESAGE: LD A,E
LD HL,SYS_ERRORS ; ¬ áᨢ áâப
LD BC,SYS_ERRORS.Size ; à §¬¥à ¬ áᨢ 
RLA
jr nc,.set_de
ld hl,DRV_ERRORS ; ¬ áᨢ áâப
ld bc,DRV_ERRORS.Size ; à §¬¥à ¬ áᨢ 
.set_de: SRL A
LD E,A
INC DE
LCPIR: XOR A
CPIR
RET PO
RET NZ
;
XOR A
CP (HL)
JR Z,.no_mess
;
DEC DE
LD A,D
OR E
JP NZ,LCPIR
RET
.no_mess: INC HL
RET
/*
LCPIR: xor a
cpir
ret po
ret nz
;R11
XOR A
CP (HL)
JR Z,.no_mess
;
dec de
ld a,d
or e
jr nz,LCPIR
ret
.no_mess: INC HL
RET
MAX_DSS_ERR EQU 33
print_err_message:
ld hl,SYS_ERRORS ; ¬ áᨢ áâப
ld bc,SYS_ERRORS.Size ; à §¬¥à ¬ áᨢ 
;cp %1000'0000
RLA
jr nc,.set_de
;
;and %0111'1111
ld hl,DRV_ERRORS ; ¬ áᨢ áâப
ld bc,DRV_ERRORS.Size ; à §¬¥à ¬ áᨢ 
;
.set_de: SRL A
ld e,a
ld d,0
inc de
call LCPIR ; ­ ©â¨ áâபã
call PRINTZ ; ä®à¬ â. ¢ë¢®¤ áâப¨
jp newline
*/
ERRCDX DB "CDX: ",0
@ -421,8 +510,8 @@ MSG_COPYABORTED EQU 19 ;21
MSG0 BYTE 0
;0
BYTE "CDROM eXtension utility v1.01, 2023 (c) Sprinter Team",CR,LF
DZ "Type CDX.EXE -? for help.",CR,LF,CR,LF
BYTE "CDROM eXtension utility v1.02.1, 2025 (c) Sprinter Team",CR,LF
DZ "Type CDX.EXE -? for help.",CR,LF
;1
DZ "Opening tray..."
;2
@ -520,5 +609,6 @@ BUFERS_NUMBER EQU 6
;
ASSERT (DUMPBUF+2048 < #C000), "NO FREE SPACE FOR BUFFERS"
;-----------------------------------------------------------------------;
DEV_CFG
DEV_CFG:
DISPLAY "\n\tCDX size: ",/D,DEV_CFG - START
;[END]

View File

@ -1,5 +1,5 @@
CDROM eXtension utility version 1.01
CDROM eXtension utility version 1.02.01
------------------------------------------------
It's utility came for solving the problem with support CDROM in DSS ver 1.x.

View File

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

View File

@ -91,7 +91,7 @@ CHELP: LD A,MSG_USAGE
CCLOSE: LD A,MSG_TRAY_CLOSE
CALL MESSAGE
LD A,(CDDRIVE)
LD BC,BIOS.DRV_EXTENDED.CD_Close
LD BC,BIOS.DRV_EXTENDED.ATAPI_Close
RST ToBIOS
LD A,MSG_DONE
JP MESSAGE
@ -99,7 +99,7 @@ CCLOSE: LD A,MSG_TRAY_CLOSE
COPEN: LD A,MSG_TRAY_OPEN
CALL MESSAGE
LD A,(CDDRIVE)
LD BC,BIOS.DRV_EXTENDED.CD_Eject
LD BC,BIOS.DRV_EXTENDED.ATAPI_Eject
RST ToBIOS
LD A,MSG_DONE
JP MESSAGE

View File

@ -63,7 +63,7 @@ FM_BUF DB ". " ;+00 NAME
DB #00 ;+43 EMPTY
END_FM
;End of FM
DS 44*2
; DS 44*2
FM_SIZE EQU END_FM-FM_BUF
@ -159,20 +159,19 @@ CHANGEDISK: LD A,(CDDRIVE)
RET
;
.drv_change: LD A,(CDDRIVE)
LD C,BIOS.DRV_GET_PAR
RST ToBIOS
CALL SAVE_MEDIA_CHANGED
;
.cont: CALL INITDISK
RET C
AND A
RET
NDISK11 CP BIOS.Error.ATAPI.NotReady
SCF
RET NZ
;
LD A,DSS_Error.sys.NOT_READY
RET
; NDISK11 CP BIOS.Error.ATAPI.NotReady
; SCF
; RET NZ
; ;
; LD A,DSS_Error.sys.NOT_READY
; RET
INITDISK:
LD A,DIRPAGE

@ -1 +1 @@
Subproject commit 857938d1dbf3b332a5e9e8ccabfee531eb3848fa
Subproject commit a0e68ce3a19bd47537585e49bfbf5e45fab197a1