mirror of
https://github.com/Tolik-Trek/CDX.git
synced 2026-06-15 09:21:38 +03:00
Release 25/06/2025
This commit is contained in:
commit
052252df3c
222
CDX.ASM
222
CDX.ASM
@ -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
|
||||||
.loop: LD BC,Dss.Exit
|
CALL RESTORE_STATE
|
||||||
RST ToDSS
|
;
|
||||||
JP .loop
|
.loop: LD BC,Dss.Exit
|
||||||
|
RST ToDSS
|
||||||
|
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
|
||||||
@ -184,28 +190,47 @@ MDEALLOC
|
|||||||
; RST ToDSS
|
; RST ToDSS
|
||||||
; RET
|
; RET
|
||||||
|
|
||||||
INIT: XOR A
|
INIT: XOR A
|
||||||
LD (STOPMODE),A
|
LD (STOPMODE),A
|
||||||
DEC A
|
DEC A
|
||||||
LD (CDDRIVE),A
|
LD (CDDRIVE),A
|
||||||
;
|
;
|
||||||
LD BC,+(#C0-1)*256 + BIOS.DRV_DETECT
|
LD BC,+(#C0-1)*256 + BIOS.DRV_DETECT
|
||||||
.loop: INC B
|
.loop: INC B
|
||||||
LD A,B
|
LD A,B
|
||||||
CP #C4
|
CP #C4
|
||||||
SCF
|
SCF
|
||||||
RET Z
|
RET Z
|
||||||
PUSH BC
|
PUSH BC
|
||||||
RST ToBIOS
|
RST ToBIOS
|
||||||
POP BC
|
POP BC
|
||||||
JR C,.loop
|
JR NC,.found
|
||||||
LD A,B
|
;
|
||||||
LD (CDDRIVE),A
|
CP BIOS.Error.ATAPI.MediumError
|
||||||
RET
|
JR Z,.media_changed
|
||||||
;
|
CP BIOS.Error.ATAPI.UnitAttention
|
||||||
; LD C,BIOS.DRV_RESET
|
JR NZ,.loop
|
||||||
; JP ToBIOS
|
;
|
||||||
; RET
|
.media_changed: PUSH BC
|
||||||
|
LD A,B
|
||||||
|
CALL SAVE_MEDIA_CHANGED
|
||||||
|
POP BC
|
||||||
|
;
|
||||||
|
.found: LD A,B
|
||||||
|
LD (CDDRIVE),A
|
||||||
|
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
|
;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
|
||||||
CPIR
|
jr nc,.set_de
|
||||||
RET PO
|
ld hl,DRV_ERRORS ; ¬ áᨢ áâப
|
||||||
RET NZ
|
ld bc,DRV_ERRORS.Size ; à §¬¥à ¬ áᨢ
|
||||||
DEC DE
|
.set_de: SRL A
|
||||||
LD A,D
|
LD E,A
|
||||||
OR E
|
INC DE
|
||||||
JP NZ,LCPIR
|
LCPIR: XOR A
|
||||||
RET
|
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
|
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]
|
||||||
|
|||||||
2
CDX.TXT
2
CDX.TXT
@ -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.
|
||||||
|
|||||||
162
CMDPARSE.ASM
162
CMDPARSE.ASM
@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
17
Cd_dos.asm
17
Cd_dos.asm
@ -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
|
||||||
Loading…
Reference in New Issue
Block a user