mirror of
https://github.com/Tolik-Trek/CDX.git
synced 2026-06-15 01:11: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
|
||||
; -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
|
||||
QUIT: CALL CRLF
|
||||
.loop: LD BC,Dss.Exit
|
||||
RST ToDSS
|
||||
JP .loop
|
||||
;CALL MDEALLOC
|
||||
QUIT: CALL CRLF
|
||||
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
|
||||
|
||||
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
|
||||
@ -184,28 +190,47 @@ MDEALLOC
|
||||
; RST ToDSS
|
||||
; RET
|
||||
|
||||
INIT: XOR A
|
||||
LD (STOPMODE),A
|
||||
DEC A
|
||||
LD (CDDRIVE),A
|
||||
;
|
||||
LD BC,+(#C0-1)*256 + BIOS.DRV_DETECT
|
||||
.loop: INC B
|
||||
LD A,B
|
||||
CP #C4
|
||||
SCF
|
||||
RET Z
|
||||
PUSH BC
|
||||
RST ToBIOS
|
||||
POP BC
|
||||
JR C,.loop
|
||||
LD A,B
|
||||
LD (CDDRIVE),A
|
||||
RET
|
||||
;
|
||||
; LD C,BIOS.DRV_RESET
|
||||
; JP ToBIOS
|
||||
; RET
|
||||
INIT: XOR A
|
||||
LD (STOPMODE),A
|
||||
DEC A
|
||||
LD (CDDRIVE),A
|
||||
;
|
||||
LD BC,+(#C0-1)*256 + BIOS.DRV_DETECT
|
||||
.loop: INC B
|
||||
LD A,B
|
||||
CP #C4
|
||||
SCF
|
||||
RET Z
|
||||
PUSH BC
|
||||
RST ToBIOS
|
||||
POP BC
|
||||
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
|
||||
|
||||
|
||||
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
|
||||
CPIR
|
||||
RET PO
|
||||
RET NZ
|
||||
DEC DE
|
||||
LD A,D
|
||||
OR E
|
||||
JP NZ,LCPIR
|
||||
RET
|
||||
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]
|
||||
|
||||
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.
|
||||
|
||||
162
CMDPARSE.ASM
162
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
|
||||
|
||||
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
17
Cd_dos.asm
17
Cd_dos.asm
@ -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
|
||||
Loading…
Reference in New Issue
Block a user