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 ; COMMAND
; -h,? Help page ; -h,? Help page
DEFINE _MAME 1 MAX_DSS_ERR EQU 33
CR EQU 13 CR EQU 13
LF EQU 10 LF EQU 10
@ -26,7 +25,7 @@ LF EQU 10
ORG #8100-22 ORG #8100-22
DB "EXE" ;EXE ID DB "EXE" ;EXE ID
DB #00 ;EXE VERSION DB #01 ;EXE VERSION
DW #0016 ;CODE OFFSET LOW DW #0016 ;CODE OFFSET LOW
DW #0000 ;CODE OFFSET HIGH DW #0000 ;CODE OFFSET HIGH
DW #0000 ;END-BEG ;PRIMARY LOADER DW #0000 ;END-BEG ;PRIMARY LOADER
@ -92,40 +91,47 @@ START: PUSH IX
OR A OR A
CALL Z,COMMAND CALL Z,COMMAND
CALL MDEALLOC ;CALL MDEALLOC
QUIT: CALL CRLF QUIT: CALL CRLF
CALL RESTORE_STATE
;
.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
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 LD BC,2*256 + Dss.GetMem
RST ToDSS RST ToDSS
JR NC,M_ALLOK JR NC,.cont
LD A,MSG_MEMERROR LD A,MSG_MEMERROR
CALL MESSAGE CALL MESSAGE
SCF SCF
RET RET
M_ALLOK ;
LD (HNDMEM),A .cont: PUSH AF
LD BC,1*256 + Dss.SetWin3 LD BC,1*256 + Dss.SetWin3
RST ToDSS RST ToDSS
LD HL,BANKTBL LD HL,BANKTBL
LD C,BIOS.GetMemBlkPages LD C,BIOS.GetMemBlkPages
LD A,(HNDMEM) POP AF
JP ToBIOS JP ToBIOS
MDEALLOC ; MDEALLOC
LD A,(HNDMEM) ; LD A,(HNDMEM)
LD C,Dss.FreeMem ; LD C,Dss.FreeMem
JP ToDSS ; JP ToDSS
; FIND_CDROM ; FIND_CDROM
; LD IX,DEV_CFG ; LD IX,DEV_CFG
@ -198,14 +204,33 @@ INIT: XOR A
PUSH BC PUSH BC
RST ToBIOS RST ToBIOS
POP BC 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 LD A,B
CALL SAVE_MEDIA_CHANGED
POP BC
;
.found: LD A,B
LD (CDDRIVE),A LD (CDDRIVE),A
RET RET
;
; LD C,BIOS.DRV_RESET
; JP ToBIOS SAVE_MEDIA_CHANGED:
; RET 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 ;VARIABLES
@ -214,9 +239,23 @@ INIT: XOR A
STOPMODE DB #00 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 CRLF: PUSH HL
LD HL,MSG0.crlf LD HL,MSG0.crlf
@ -231,11 +270,11 @@ CRLF: PUSH HL
RET RET
; ;
ERROR: CP MAX_DSS_ERR ERROR: ;CP MAX_DSS_ERR
LD E,A LD E,A
LD D,0 LD D,0
JR C,.ERR_MSG ;JR C,.ERR_MSG
LD E,D ;LD E,D
;JP .ERR_MSG ;JP .ERR_MSG
; ;
.ERR_MSG: PUSH DE .ERR_MSG: PUSH DE
@ -248,20 +287,70 @@ ERROR: CP MAX_DSS_ERR
JP CRLF JP CRLF
FMESAGE INC DE FMESAGE: LD A,E
LD HL,ERR0 LD HL,SYS_ERRORS ; ¬ áᨢ áâப
LD BC,ERR0.Size LD BC,SYS_ERRORS.Size ; à §¬¥à ¬ áᨢ 
LCPIR XOR A 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 CPIR
RET PO RET PO
RET NZ RET NZ
;
XOR A
CP (HL)
JR Z,.no_mess
;
DEC DE DEC DE
LD A,D LD A,D
OR E OR E
JP NZ,LCPIR JP NZ,LCPIR
RET 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 ERRCDX DB "CDX: ",0
@ -421,8 +510,8 @@ MSG_COPYABORTED EQU 19 ;21
MSG0 BYTE 0 MSG0 BYTE 0
;0 ;0
BYTE "CDROM eXtension utility v1.01, 2023 (c) Sprinter Team",CR,LF BYTE "CDROM eXtension utility v1.02.1, 2025 (c) Sprinter Team",CR,LF
DZ "Type CDX.EXE -? for help.",CR,LF,CR,LF DZ "Type CDX.EXE -? for help.",CR,LF
;1 ;1
DZ "Opening tray..." DZ "Opening tray..."
;2 ;2
@ -520,5 +609,6 @@ BUFERS_NUMBER EQU 6
; ;
ASSERT (DUMPBUF+2048 < #C000), "NO FREE SPACE FOR BUFFERS" ASSERT (DUMPBUF+2048 < #C000), "NO FREE SPACE FOR BUFFERS"
;-----------------------------------------------------------------------; ;-----------------------------------------------------------------------;
DEV_CFG DEV_CFG:
DISPLAY "\n\tCDX size: ",/D,DEV_CFG - START
;[END] ;[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. 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 ; 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

View File

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

View File

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

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