mirror of
https://github.com/Tolik-Trek/CDX.git
synced 2026-06-15 01:11:38 +03:00
какая-то из уже перепиленных версий
This commit is contained in:
commit
3a5f267f9a
524
CDX.ASM
Normal file
524
CDX.ASM
Normal file
@ -0,0 +1,524 @@
|
||||
;[BEGIN]
|
||||
;
|
||||
; CDX.EXE [command] [-switches] [directory]
|
||||
;
|
||||
;commands:
|
||||
; OPEN
|
||||
; EJECT
|
||||
; CLOSE
|
||||
; COPY
|
||||
; LIST
|
||||
; DUMP
|
||||
; COMMAND
|
||||
; -h,? Help page
|
||||
|
||||
DEFINE _MAME 1
|
||||
|
||||
|
||||
CR EQU 13
|
||||
LF EQU 10
|
||||
|
||||
INCLUDE "Shared_Includes/constants/BIOS_equ.inc"
|
||||
INCLUDE "Shared_Includes/constants/dss_equ.inc"
|
||||
INCLUDE "Shared_Includes/constants/Sp2000.inc"
|
||||
|
||||
|
||||
ORG #8100-22
|
||||
|
||||
DB "EXE" ;EXE ID
|
||||
DB #00 ;EXE VERSION
|
||||
DW #0016 ;CODE OFFSET LOW
|
||||
DW #0000 ;CODE OFFSET HIGH
|
||||
DW #0000 ;END-BEG ;PRIMARY LOADER
|
||||
DW #0000 ;
|
||||
DW #0000 ;RESERVED
|
||||
DW #0000 ;
|
||||
DW START ;LOAD ADDRESS
|
||||
DW START ;START ADDRESS
|
||||
DW #BFFF ;STACK ADDRESS
|
||||
;DS 490
|
||||
|
||||
START: PUSH IX
|
||||
;
|
||||
XOR A
|
||||
;
|
||||
; LD HL,BUF1
|
||||
; LD (HL),A
|
||||
; LD DE,BUF1+1
|
||||
; LD BC,BUFFERS_END-1
|
||||
; LDIR
|
||||
;
|
||||
LD HL,'\' ;
|
||||
LD (DIRSPEC),HL
|
||||
;
|
||||
LD HL,BUF1
|
||||
LD B,BUFERS_NUMBER
|
||||
.initBuffersLoop:
|
||||
LD (HL),A
|
||||
INC H
|
||||
DJNZ .initBuffersLoop
|
||||
;
|
||||
|
||||
LD A,MSG_HELLO
|
||||
CALL MESSAGE
|
||||
;
|
||||
CALL INIT
|
||||
JR NC,.next
|
||||
;
|
||||
LD HL,PRM1
|
||||
LD (HL),0
|
||||
LD A,MSG_NO_CDROM
|
||||
CALL MESSAGE
|
||||
LD A,1
|
||||
LD (STOPMODE),A
|
||||
;
|
||||
.next: LD C,Dss.Version
|
||||
RST ToDSS ;GET DSS VERSION
|
||||
EX DE,HL
|
||||
AND A
|
||||
LD DE,#0146 ;1.70
|
||||
SBC HL,DE ;CHECK DSS VERSION
|
||||
POP HL
|
||||
;
|
||||
JP C,OLD_DSS
|
||||
LD IX,BUF_PTRS
|
||||
CALL EX_COMMAND_LINE
|
||||
|
||||
CALL MALLOC
|
||||
JR C,QUIT
|
||||
|
||||
;CALL FIND_CDROM
|
||||
LD A,(STOPMODE)
|
||||
OR A
|
||||
CALL Z,COMMAND
|
||||
|
||||
CALL MDEALLOC
|
||||
QUIT: CALL CRLF
|
||||
.loop: LD BC,Dss.Exit
|
||||
RST ToDSS
|
||||
JP .loop
|
||||
|
||||
OLD_DSS
|
||||
LD A,MSG_OLD_DSS
|
||||
CALL MESSAGE
|
||||
JR QUIT
|
||||
|
||||
HNDMEM DB #FF
|
||||
|
||||
MALLOC
|
||||
LD BC,2*256 + Dss.GetMem
|
||||
RST ToDSS
|
||||
JR NC,M_ALLOK
|
||||
LD A,MSG_MEMERROR
|
||||
CALL MESSAGE
|
||||
SCF
|
||||
RET
|
||||
M_ALLOK
|
||||
LD (HNDMEM),A
|
||||
LD BC,1*256 + Dss.SetWin3
|
||||
RST ToDSS
|
||||
LD HL,BANKTBL
|
||||
LD C,BIOS.GetMemBlkPages
|
||||
LD A,(HNDMEM)
|
||||
JP ToBIOS
|
||||
|
||||
MDEALLOC
|
||||
LD A,(HNDMEM)
|
||||
LD C,Dss.FreeMem
|
||||
JP ToDSS
|
||||
|
||||
; FIND_CDROM
|
||||
; LD IX,DEV_CFG
|
||||
; LD C,BIOS.DRV_LIST
|
||||
; RST ToBIOS
|
||||
; LD A,(IX+3) ;CDROM
|
||||
; OR A
|
||||
; JR Z,W_O_CD
|
||||
; LD A,(CDDRIVE)
|
||||
; INC A
|
||||
; RET NZ
|
||||
; LD A,SLAVE ;DEFAULT
|
||||
; LD (CDDRIVE),A
|
||||
; RET
|
||||
; W_O_CD LD A,MSG_NO_CDROM
|
||||
; CALL MESSAGE
|
||||
; LD A,1
|
||||
; LD (STOPMODE),A
|
||||
; SCF
|
||||
; RET
|
||||
|
||||
;BUF_PRINT
|
||||
; LD HL,BUF_PTRS
|
||||
;BUF_PL LD E,(HL)
|
||||
; INC HL
|
||||
; LD D,(HL)
|
||||
; INC HL
|
||||
; LD A,D
|
||||
; OR E
|
||||
; RET Z
|
||||
; PUSH HL
|
||||
; EX DE,HL
|
||||
; LD C,Dss.PCHARS
|
||||
; RST ToDSS
|
||||
; CALL CRLF
|
||||
; POP HL
|
||||
; JR BUF_PL
|
||||
|
||||
;OPEN_FILE
|
||||
; LD HL,FILENAME
|
||||
; XOR A
|
||||
; LD C,Dss.OPEN
|
||||
; RST ToDSS
|
||||
; LD (FILEHND),A
|
||||
; RET NC
|
||||
; LD HL,FILENAME
|
||||
; CALL PUTVAR
|
||||
; LD A,MSG_CANT_OPEN
|
||||
; CALL MESSAGE
|
||||
; SCF
|
||||
; RET
|
||||
|
||||
;CLOSE_FILE
|
||||
; LD A,(FILEHND)
|
||||
; LD C,Dss.CLOSE
|
||||
; 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
|
||||
|
||||
;VARIABLES
|
||||
|
||||
; FILENAME DS 256
|
||||
; FILEHND DB #FF
|
||||
|
||||
STOPMODE DB #00
|
||||
|
||||
INCLUDE "cmdparse.asm"
|
||||
INCLUDE "command.asm"
|
||||
INCLUDE "cd_dos.asm"
|
||||
|
||||
CRLF: PUSH HL
|
||||
LD HL,MSG0.crlf
|
||||
LD C,Dss.PChars
|
||||
; LD A,#0D
|
||||
; LD C,Dss.PutChar
|
||||
; RST #10
|
||||
; LD A,#0A
|
||||
; LD C,Dss.PutChar
|
||||
RST ToDSS
|
||||
POP HL
|
||||
RET
|
||||
;
|
||||
|
||||
ERROR: CP MAX_DSS_ERR
|
||||
LD E,A
|
||||
LD D,0
|
||||
JR C,.ERR_MSG
|
||||
LD E,D
|
||||
;JP .ERR_MSG
|
||||
;
|
||||
.ERR_MSG: PUSH DE
|
||||
LD HL,ERRCDX
|
||||
CALL PRINTZ
|
||||
POP DE
|
||||
CALL FMESAGE
|
||||
CALL PRINTZ
|
||||
CALL CRLF
|
||||
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
|
||||
|
||||
MAX_DSS_ERR EQU 33
|
||||
|
||||
ERRCDX DB "CDX: ",0
|
||||
|
||||
include 'Shared_includes/constants/dss_errors.z80'
|
||||
; ERR0 DB #00
|
||||
; DB "Unknown error",0
|
||||
; DB "Invalid function",0
|
||||
; DB "Invalid drive number",0
|
||||
; DB "File not found",0
|
||||
; DB "Path not found",0
|
||||
; DB "Invalid handle",0
|
||||
; DB "Extended error 6",0
|
||||
; DB "File exist",0
|
||||
; DB "File read only",0
|
||||
; DB "Root overflow",0
|
||||
; DB "No free space",0
|
||||
; DB "Directory not empty",0
|
||||
; DB "Can't delete current directory",0
|
||||
; DB "Invalid media",0
|
||||
; DB "Unknown operation",0 ;R02
|
||||
; DB "Directory exist",0
|
||||
; DB "Invalid filename",0
|
||||
; DB "Invalid EXE-file",0
|
||||
; DB "Not supported EXE-file",0
|
||||
; DB "Access denied",0
|
||||
; DB "Not ready",0
|
||||
; DB "Seek error",0
|
||||
; DB "Sector not found",0
|
||||
; DB "CRC error",0
|
||||
; DB "Write protect",0
|
||||
; DB "Read error",0
|
||||
; DB "Write error",0
|
||||
; DB "Drive failure",0
|
||||
; DB "Extended error 28",0
|
||||
; DB "Extended error 29",0
|
||||
; DB "No free memory",0
|
||||
; DB "Invalid memory block",0
|
||||
; DB "Extended error 32",0
|
||||
; DB "Extended error 33",0
|
||||
; DB "Extended error 34",0
|
||||
; DB "35",0
|
||||
; DB "36",0
|
||||
; DB "37",0
|
||||
; DB "38",0
|
||||
; DB "39",0
|
||||
; DB "40",0
|
||||
; DB "41",0
|
||||
; DB "42",0
|
||||
; DB "43",0
|
||||
; DB "44",0
|
||||
; DB "45",0
|
||||
; DB "46",0
|
||||
; DB "47",0
|
||||
; DB "48",0
|
||||
; DB "49",0
|
||||
; DB "50"
|
||||
; DB 0
|
||||
; ERR1
|
||||
|
||||
;FIND_MESSAGE
|
||||
; LD E,A
|
||||
; LD D,0
|
||||
; CALL MESAGE
|
||||
; RET
|
||||
MESSAGE LD E,A
|
||||
LD D,0
|
||||
CALL MESAGE
|
||||
JP PRINTZ
|
||||
;
|
||||
|
||||
MESAGE INC DE
|
||||
LD HL,MSG0
|
||||
LD BC,MSG1-MSG0
|
||||
LCPIR2 XOR A
|
||||
CPIR
|
||||
RET PO
|
||||
RET NZ
|
||||
DEC DE
|
||||
LD A,D
|
||||
OR E
|
||||
JP NZ,LCPIR2
|
||||
RET
|
||||
|
||||
PRINTZ LD A,(HL)
|
||||
INC HL
|
||||
OR A
|
||||
RET Z
|
||||
CP "%"
|
||||
JR NZ,PRINTZ2
|
||||
LD A,(HL)
|
||||
INC HL
|
||||
SUB "1"
|
||||
PUSH HL
|
||||
LD L,A
|
||||
LD H,0
|
||||
ADD HL,HL
|
||||
ADD HL,HL
|
||||
ADD HL,HL
|
||||
ADD HL,HL
|
||||
LD BC,PRM1
|
||||
ADD HL,BC
|
||||
LD C,Dss.PChars
|
||||
RST ToDSS
|
||||
POP HL
|
||||
JR PRINTZ
|
||||
PRINTZ2 LD C,Dss.PutChar
|
||||
RST ToDSS
|
||||
JP PRINTZ
|
||||
|
||||
PRINT_ LD BC,1*256 + BIOS.LP_PRINT_SYM
|
||||
JP ToBIOS
|
||||
|
||||
PUTVAR LD DE,PRM1
|
||||
PUTPRM LD BC,15
|
||||
PUTPRMA LD A,(HL)
|
||||
LDI
|
||||
RET PO
|
||||
OR A
|
||||
JR NZ,PUTPRMA
|
||||
RET
|
||||
|
||||
CDDRIVE DB #FF
|
||||
|
||||
PRM1 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
PRM2 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
PRM3 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
PRM4 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
PRM5 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
PRM6 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
PRM7 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
PRM8 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
PRM9 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
|
||||
|
||||
MSG_HELLO EQU 0
|
||||
MSG_TRAY_OPEN EQU 1
|
||||
MSG_TRAY_CLOSE EQU 2
|
||||
MSG_USAGE EQU 3
|
||||
MSG_UNK_DEVICE_NUMBER EQU 4
|
||||
MSG_UNK_COMMAND EQU 5
|
||||
;MSG_DISABLED EQU 6
|
||||
;MSG_ENABLED EQU 7
|
||||
MSG_DONE EQU 6 ;8
|
||||
MSG_NO_CDROM EQU 7 ;9
|
||||
MSG_IO_ERROR EQU 8 ;10
|
||||
MSG_OLD_DSS EQU 9 ;11
|
||||
MSG_COPYFILE EQU 10 ;12
|
||||
MSG_DIRHEAD EQU 11 ;13
|
||||
MSG_DIRENTRY EQU 12 ;14
|
||||
MSG_MEMERROR EQU 13 ;15
|
||||
MSG_COPYTO EQU 14 ;16
|
||||
MSG_CD_READ_ERR EQU 15 ;17
|
||||
MSG_F_WRITE_ERR EQU 16 ;18
|
||||
MSG_FAILURE EQU 17 ;19
|
||||
MSG_ERR_DEST EQU 18 ;20
|
||||
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
|
||||
;1
|
||||
DZ "Opening tray..."
|
||||
;2
|
||||
DZ "Closing tray..."
|
||||
; 01234567890123456789012345678901234567890123456789012345678901234567890123456789
|
||||
;3
|
||||
BYTE ' Usage: CDX.EXE [-switches] [command] [param1] [param2]',CR,LF,CR,LF
|
||||
BYTE 'Commands:',CR,LF
|
||||
BYTE ' CDX.EXE OPEN - Open tray',CR,LF
|
||||
BYTE ' CDX.EXE CLOSE - Close tray',CR,LF
|
||||
BYTE ' CDX.EXE LIST [\cd_path\][pattern] - Show CDROM filelist',CR,LF
|
||||
BYTE ' CDX.EXE COPY \source d:\destination\ - Copy file(s) from CDROM to another disk',CR,LF
|
||||
BYTE ' CDX.EXE DUMP sector [offset] - Show sector dump from CDROM',CR,LF
|
||||
BYTE CR,LF
|
||||
BYTE 'Switches:',CR,LF
|
||||
BYTE ' -1 CDROM installed as Primary IDE Master device',CR,LF
|
||||
BYTE ' -2 CDROM installed as Primary IDE Slave device',CR,LF
|
||||
BYTE ' -3 CDROM installed as Secondary IDE Master device',CR,LF
|
||||
BYTE ' -4 CDROM installed as Secondary IDE Slave device',CR,LF
|
||||
DZ ' -h,? Help page',CR,LF
|
||||
;4
|
||||
DZ " Error: Unknown device number %1",CR,LF
|
||||
;5
|
||||
DZ " Error: Unknown command: %1",CR,LF
|
||||
;6
|
||||
;DZ "Disabled"
|
||||
;7
|
||||
;DZ "Enabled"
|
||||
;6
|
||||
DZ "Done!",CR,LF
|
||||
;7
|
||||
DZ " Error: Can't find CDROM device %1",CR,LF
|
||||
;8
|
||||
DZ " Error: I/O Error",CR,LF
|
||||
;9
|
||||
DZ " Error: Need DSS version 1.70 or higher",CR,LF
|
||||
;10
|
||||
DZ "Copying "
|
||||
;11
|
||||
DZ "Directory of CDROM:"
|
||||
;12 FILENAME EXT SIZE DATE TIME
|
||||
DZ "%1 %2 %3 %4 %5",CR,LF
|
||||
;13
|
||||
DZ " Error: Memory allocation error",CR,LF
|
||||
;14
|
||||
DZ " to "
|
||||
;15
|
||||
DZ " Error: Reading failure",CR,LF
|
||||
;16
|
||||
DZ " Error: Writing failure",CR,LF
|
||||
;17
|
||||
DZ "Failure!",CR,LF
|
||||
;18
|
||||
DZ " Error: Can't open destination file",CR,LF
|
||||
;19
|
||||
DZ "Copying aborted",CR,LF
|
||||
;20
|
||||
.crlf: DZ CR,LF
|
||||
;21
|
||||
BYTE 0
|
||||
MSG1
|
||||
|
||||
BUF_PTRS
|
||||
DW BUF1,BUF2,BUF3,BUF4,0
|
||||
|
||||
;-------------------------------/BUFFERS\-------------------------------;
|
||||
FF_STRUCT:
|
||||
DB "12345678"
|
||||
DB "123"
|
||||
DB #00
|
||||
DW 0,0,0,0
|
||||
CDFPOSH DW 0 ;CLUSTER HIGH
|
||||
CDFTIME DW 0 ;TIME
|
||||
CDFDATE DW 0 ;DATE
|
||||
CDFPOSL DW 0 ;CLUSTER
|
||||
CDFSIZE DW 0,0 ;SIZE
|
||||
CDFATTR DB #00 ;ATTR
|
||||
CDFNAME DB "12345678123",0
|
||||
;
|
||||
BUFFERS_START EQU $
|
||||
;DS 256-($-FF_STRUCT)
|
||||
|
||||
DIRSPEC: EQU FF_STRUCT+256
|
||||
;DB '\',0
|
||||
;DS 254
|
||||
BUF1 EQU DIRSPEC+256
|
||||
BUF2 EQU DIRSPEC+256+256
|
||||
BUF3 EQU DIRSPEC+256+256+256
|
||||
BUF4 EQU DIRSPEC+256+256+256+256
|
||||
ARGCBUF EQU DIRSPEC+256+256+256+256+256
|
||||
DUMPBUF EQU DIRSPEC+256+256+256+256+256+256
|
||||
BUFFERS_END EQU DUMPBUF+2048-BUFFERS_START
|
||||
;
|
||||
BUFERS_NUMBER EQU 6
|
||||
;
|
||||
ASSERT (DUMPBUF+2048 < #C000), "NO FREE SPACE FOR BUFFERS"
|
||||
;-----------------------------------------------------------------------;
|
||||
DEV_CFG
|
||||
;[END]
|
||||
7
CDX.TXT
Normal file
7
CDX.TXT
Normal file
@ -0,0 +1,7 @@
|
||||
|
||||
CDROM eXtension utility version 1.01
|
||||
------------------------------------------------
|
||||
|
||||
It's utility came for solving the problem with support CDROM in DSS ver 1.x.
|
||||
It's allow browse and copy files that stored on your CD. Also utility has commands
|
||||
for tray control.
|
||||
89
CMDPARSE.ASM
Normal file
89
CMDPARSE.ASM
Normal file
@ -0,0 +1,89 @@
|
||||
|
||||
; 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
|
||||
|
||||
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
|
||||
|
||||
|
||||
|
||||
; MAS_CD:
|
||||
; ;LD A,MASTER
|
||||
; ;LD (CDDRIVE),A
|
||||
; JR EOCL
|
||||
|
||||
; SLA_CD:
|
||||
; ;LD A,SLAVE
|
||||
; ;LD (CDDRIVE),A
|
||||
; JR EOCL
|
||||
942
COMMAND.ASM
Normal file
942
COMMAND.ASM
Normal file
@ -0,0 +1,942 @@
|
||||
|
||||
COMMAND LD HL,BUF1
|
||||
LD A,(HL)
|
||||
OR A
|
||||
RET Z
|
||||
DEC HL
|
||||
SKIPSP INC HL
|
||||
LD A,(HL)
|
||||
CP 9
|
||||
JR Z,SKIPSP
|
||||
CP " "
|
||||
JR Z,SKIPSP
|
||||
COMP01 LD D,H
|
||||
LD E,L
|
||||
XOR A
|
||||
LD BC,255
|
||||
CPIR
|
||||
LD A,254
|
||||
SUB C
|
||||
LD C,A
|
||||
LD HL,CMDLIST
|
||||
COMP004 PUSH BC
|
||||
PUSH DE
|
||||
COMP000 LD A,(DE)
|
||||
CP #61
|
||||
JP C,COMP001
|
||||
CP #7B
|
||||
JP NC,COMP001
|
||||
SUB #20
|
||||
COMP001 CP (HL)
|
||||
JP NZ,COMP002
|
||||
INC HL
|
||||
INC DE
|
||||
DEC C
|
||||
JP NZ,COMP000
|
||||
XOR A
|
||||
CP (HL)
|
||||
JP NZ,COMP002
|
||||
POP BC
|
||||
POP BC
|
||||
LD A,(DE)
|
||||
CP " "
|
||||
JR NZ,NOSPC
|
||||
INC DE
|
||||
NOSPC INC HL
|
||||
LD A,(HL)
|
||||
INC HL
|
||||
LD H,(HL)
|
||||
LD L,A
|
||||
JP (HL)
|
||||
|
||||
COMP002 XOR A
|
||||
LD C,#FF
|
||||
CPI
|
||||
JP NZ,$-2
|
||||
INC HL
|
||||
INC HL
|
||||
POP DE
|
||||
POP BC
|
||||
LD A,(HL)
|
||||
OR A
|
||||
JP NZ,COMP004
|
||||
LD HL,BUF1
|
||||
CALL PUTVAR
|
||||
LD A,MSG_UNK_COMMAND
|
||||
CALL MESSAGE
|
||||
SCF
|
||||
RET
|
||||
|
||||
CMDLIST DB "CLOSE",0
|
||||
DW CCLOSE
|
||||
DB "COPY",0
|
||||
DW CCOPY
|
||||
DB "DUMP",0
|
||||
DW CDUMP
|
||||
DB "EJECT",0
|
||||
DW COPEN
|
||||
DB "HELP",0
|
||||
DW CHELP
|
||||
DB "LIST",0
|
||||
DW CDIR
|
||||
DB "OPEN",0
|
||||
DW COPEN
|
||||
DB "SECTORDUMP",0
|
||||
DW CDUMP
|
||||
DB 0
|
||||
|
||||
CHELP: LD A,MSG_USAGE
|
||||
JP MESSAGE
|
||||
|
||||
CCLOSE: LD A,MSG_TRAY_CLOSE
|
||||
CALL MESSAGE
|
||||
LD A,(CDDRIVE)
|
||||
LD BC,BIOS.DRV_EXTENDED.CD_Close
|
||||
RST ToBIOS
|
||||
LD A,MSG_DONE
|
||||
JP MESSAGE
|
||||
|
||||
COPEN: LD A,MSG_TRAY_OPEN
|
||||
CALL MESSAGE
|
||||
LD A,(CDDRIVE)
|
||||
LD BC,BIOS.DRV_EXTENDED.CD_Eject
|
||||
RST ToBIOS
|
||||
LD A,MSG_DONE
|
||||
JP MESSAGE
|
||||
|
||||
|
||||
CCOPY: CALL CHANGEDISK
|
||||
JR NC,.CH2OK
|
||||
JP ERROR
|
||||
.CH2OK: CALL EX_COPY_PARAM
|
||||
LD HL,BUF2
|
||||
LD DE,FF_STRUCT
|
||||
LD A,FAT_ATTR.NoDIRnoVolID
|
||||
LD B,1
|
||||
CALL F_FIRST
|
||||
JP C,ERROR
|
||||
.COPIER:
|
||||
CALL MAKECOPY
|
||||
RET C
|
||||
LD A,(COPYMODE)
|
||||
BIT DSTFILE,A
|
||||
RET NZ
|
||||
;
|
||||
LD C,Dss.ScanKey
|
||||
RST ToDSS
|
||||
JR Z,.NONSTOP
|
||||
LD HL,#011B ;ESC
|
||||
AND A
|
||||
SBC HL,DE
|
||||
JR NZ,.NONSTOP
|
||||
LD A,MSG_COPYABORTED
|
||||
CALL MESSAGE
|
||||
SCF
|
||||
RET
|
||||
.NONSTOP:
|
||||
LD DE,FF_STRUCT
|
||||
CALL F_NEXT
|
||||
JR NC,.COPIER
|
||||
XOR A
|
||||
RET
|
||||
|
||||
; IFNOTFOUND
|
||||
; CALL ERROR
|
||||
; RET
|
||||
|
||||
;IFOK
|
||||
MAKECOPY:
|
||||
LD A,(COPYMODE)
|
||||
BIT SRCPATT,A
|
||||
JR NZ,.WITH_SRC_PATT
|
||||
BIT DSTFILE,A
|
||||
JR NZ,.WITH_DST_FILE
|
||||
.WITH_SRC_PATT:
|
||||
LD HL,CDFNAME
|
||||
.YCR1: LD A,(HL)
|
||||
CP "A"
|
||||
JR C,.NCR1
|
||||
CP "Z"+1
|
||||
JR NC,.NCR1
|
||||
ADD A,#20
|
||||
LD (HL),A
|
||||
.NCR1: OR A
|
||||
INC HL
|
||||
JR NZ,.YCR1
|
||||
;
|
||||
LD HL,CDFNAME
|
||||
LD DE,(SRC_PUT_ADR)
|
||||
.CZSL2: LD A,(HL)
|
||||
LDI
|
||||
OR A
|
||||
JR NZ,.CZSL2
|
||||
;
|
||||
LD A,(COPYMODE)
|
||||
BIT DSTFILE,A
|
||||
JR NZ,.WITH_DST_FILE
|
||||
;
|
||||
LD HL,CDFNAME
|
||||
LD DE,(DST_PUT_ADR)
|
||||
.CZSL1: LD A,(HL)
|
||||
LDI
|
||||
OR A
|
||||
JR NZ,.CZSL1
|
||||
;
|
||||
.WITH_DST_FILE:
|
||||
LD HL,BUF3
|
||||
LD A,(CDFATTR)
|
||||
LD C,Dss.Create
|
||||
RST ToDSS
|
||||
JR NC,.OFOK
|
||||
LD A,MSG_ERR_DEST
|
||||
CALL MESSAGE
|
||||
SCF
|
||||
RET
|
||||
;
|
||||
.OFOK: LD (FHND),A
|
||||
LD A,MSG_COPYFILE
|
||||
CALL MESSAGE
|
||||
LD HL,BUF2
|
||||
LD C,Dss.PChars
|
||||
RST ToDSS
|
||||
LD A,MSG_COPYTO
|
||||
CALL MESSAGE
|
||||
LD HL,BUF3
|
||||
LD C,Dss.PChars
|
||||
RST ToDSS
|
||||
LD A," "
|
||||
LD C,Dss.PutChar
|
||||
RST ToDSS
|
||||
LD IX,FF_STRUCT
|
||||
|
||||
LD E,(IX+LEN1)
|
||||
LD D,(IX+LEN2)
|
||||
LD (CL_SIZE),DE
|
||||
LD E,(IX+LEN3)
|
||||
LD D,(IX+LEN4)
|
||||
LD (CH_SIZE),DE
|
||||
|
||||
LD E,(IX+CLU1)
|
||||
LD D,(IX+CLU2)
|
||||
LD (CL_OFFSET),DE
|
||||
LD E,(IX+CLU3)
|
||||
LD D,(IX+CLU4)
|
||||
LD (CH_OFFSET),DE
|
||||
.CDCOPY_LOOP:
|
||||
CALL RCDFSB ;!!!!!
|
||||
JR C,.COPY_FAULT
|
||||
CALL WDATAB
|
||||
JR C,.COPY_FAULT
|
||||
JR NZ,.CDCOPY_LOOP
|
||||
;
|
||||
LD DE,(CDFTIME)
|
||||
LD BC,(CDFDATE)
|
||||
CALL RMKTIME
|
||||
LD A,(FHND)
|
||||
LD C,Dss.Put_D_T ;COPY DATE AND TIME
|
||||
RST ToDSS
|
||||
;
|
||||
LD A,(FHND)
|
||||
LD C,Dss.Close
|
||||
RST ToDSS
|
||||
LD A,MSG_DONE
|
||||
CALL MESSAGE
|
||||
AND A
|
||||
RET
|
||||
.COPY_FAULT:
|
||||
LD A,(FHND)
|
||||
LD C,Dss.Close
|
||||
RST ToDSS
|
||||
SCF
|
||||
RET
|
||||
|
||||
EX_COPY_PARAM
|
||||
LD HL,BUF2 ;SOURCE
|
||||
LD BC,255
|
||||
XOR A
|
||||
CPIR
|
||||
DEC HL
|
||||
EX DE,HL
|
||||
LD HL,256
|
||||
AND A
|
||||
SBC HL,BC
|
||||
LD B,H
|
||||
LD C,L
|
||||
EX DE,HL
|
||||
LD A,'\' ;
|
||||
CPDR
|
||||
INC HL
|
||||
INC HL
|
||||
LD (SRC_PUT_ADR),HL
|
||||
;
|
||||
LD HL,BUF2
|
||||
LD BC,Dss.EX_Path.GET_ALL
|
||||
RST ToDSS
|
||||
AND #80
|
||||
LD A,(COPYMODE)
|
||||
SET SRCPATT,A
|
||||
JR NZ,.NOPATSR
|
||||
RES SRCPATT,A
|
||||
.NOPATSR:
|
||||
LD (COPYMODE),A
|
||||
LD HL,BUF3 ;DESTINATION
|
||||
LD BC,Dss.EX_Path.GET_ALL
|
||||
RST ToDSS
|
||||
AND #81 ;PATTERN & FILENAME
|
||||
CP #01 ;IF FILENAME=1 AND PATTERN=0
|
||||
LD A,(COPYMODE)
|
||||
SET DSTFILE,A
|
||||
JR Z,.SINGC1
|
||||
RES DSTFILE,A
|
||||
.SINGC1:
|
||||
LD (COPYMODE),A
|
||||
RET Z
|
||||
LD HL,BUF3
|
||||
LD BC,255
|
||||
XOR A
|
||||
CPIR ;MOVE TO END OF STRING
|
||||
DEC HL ;MOVE TO ZERO-CHAR
|
||||
DEC HL ;MOVE TO LAST CHAR
|
||||
LD A,(HL) ;GET LAST CHAR
|
||||
INC HL ;MOVE TO ZERO-CHAR
|
||||
CP '\' ;IS IT BACKSLASH?
|
||||
LD (DST_PUT_ADR),HL ;SAVE END ADDRESS
|
||||
RET Z
|
||||
LD A,'\' ;
|
||||
LD (HL),A ;PUT BACKSLASH TO THE END OF STRING
|
||||
INC HL ;MOVE TO THE NEW END OF STRING
|
||||
LD (DST_PUT_ADR),HL ;SAVE END ADDRESS
|
||||
LD (HL),0 ;PUT ZERO CHAR
|
||||
RET
|
||||
|
||||
DSTFILE EQU 0 ;SPECIFIED DESTINATION FILENAME
|
||||
SRCPATT EQU 3 ;SPECIFIED SOURCE PATTERN A??.*
|
||||
|
||||
COPYMODE DB 0
|
||||
|
||||
SRC_PUT_ADR DW BUF2
|
||||
DST_PUT_ADR DW BUF3
|
||||
|
||||
CL_OFFSET DW 0
|
||||
CH_OFFSET DW 0
|
||||
CL_SIZE DW 0
|
||||
CH_SIZE DW 0
|
||||
BYTECOUNTER DW 0
|
||||
|
||||
WDATAB: LD DE,(BYTECOUNTER)
|
||||
LD A,D
|
||||
OR E
|
||||
RET Z
|
||||
LD HL,#C000
|
||||
LD A,(FHND)
|
||||
LD C,Dss.Write
|
||||
RST ToDSS
|
||||
JR C,.WRDERR
|
||||
XOR A
|
||||
INC A
|
||||
RET
|
||||
.WRDERR:
|
||||
LD A,MSG_FAILURE
|
||||
CALL MESSAGE
|
||||
CALL CRLF
|
||||
LD A,MSG_F_WRITE_ERR
|
||||
CALL MESSAGE
|
||||
XOR A
|
||||
SCF
|
||||
RET
|
||||
|
||||
RCDFSB: LD HL,(CL_SIZE)
|
||||
LD DE,(CH_SIZE)
|
||||
LD A,H
|
||||
OR L
|
||||
OR D
|
||||
OR E
|
||||
LD BC,0
|
||||
LD (BYTECOUNTER),BC
|
||||
RET Z ;SIZE = 0
|
||||
AND A
|
||||
LD BC,#4000 ;BLOCKSIZE
|
||||
SBC HL,BC
|
||||
LD B,C
|
||||
EX DE,HL
|
||||
SBC HL,BC
|
||||
EX DE,HL
|
||||
LD BC,#4000
|
||||
JR NC,.RC_NOCAR
|
||||
;CORRECT RESULT
|
||||
ADD HL,BC
|
||||
LD B,C
|
||||
EX DE,HL
|
||||
ADC HL,BC
|
||||
EX DE,HL
|
||||
LD B,H
|
||||
LD C,L
|
||||
LD HL,0
|
||||
LD DE,0
|
||||
.RC_NOCAR:
|
||||
LD (CL_SIZE),HL
|
||||
LD (CH_SIZE),DE
|
||||
LD (BYTECOUNTER),BC
|
||||
;
|
||||
LD A,B
|
||||
SRL B
|
||||
SRL B
|
||||
SRL B
|
||||
AND #07
|
||||
OR C
|
||||
JR Z,.RC_EVEN_NUM
|
||||
INC B
|
||||
.RC_EVEN_NUM:
|
||||
LD A,B
|
||||
LD C,B
|
||||
LD B,0
|
||||
;
|
||||
LD IX,(CL_OFFSET)
|
||||
LD HL,(CH_OFFSET)
|
||||
PUSH IX
|
||||
PUSH HL
|
||||
ADD IX,BC
|
||||
LD C,B
|
||||
ADC HL,BC
|
||||
LD (CL_OFFSET),IX
|
||||
LD (CH_OFFSET),HL
|
||||
POP HL
|
||||
POP IX
|
||||
LD B,A
|
||||
LD A,(CDDRIVE)
|
||||
LD DE,#C000
|
||||
LD C,BIOS.DRV_READ
|
||||
RST ToBIOS
|
||||
LD BC,(BYTECOUNTER)
|
||||
RET NC
|
||||
LD A,MSG_FAILURE
|
||||
CALL MESSAGE
|
||||
CALL CRLF
|
||||
LD A,MSG_CD_READ_ERR
|
||||
CALL MESSAGE
|
||||
SCF
|
||||
RET
|
||||
|
||||
|
||||
FHND DB #FF
|
||||
|
||||
;----------------------
|
||||
CDIR: CALL CHANGEDISK
|
||||
JP C,ERROR
|
||||
LD HL,BUF2
|
||||
LD A,(HL)
|
||||
OR A
|
||||
JR NZ,.NODEFD
|
||||
LD HL,DEFDIR
|
||||
JR .PATPRESNT
|
||||
.NODEFD:
|
||||
LD BC,Dss.EX_Path.GET_ALL
|
||||
RST ToDSS
|
||||
BIT 7,A ;PATTERN
|
||||
LD HL,BUF2
|
||||
JR NZ,.PATPRESNT
|
||||
;
|
||||
LD BC,255
|
||||
XOR A
|
||||
CPIR ;MOVE TO END OF STRING
|
||||
DEC HL ;MOVE TO ZERO-CHAR
|
||||
DEC HL ;MOVE TO LAST CHAR
|
||||
LD A,(HL) ;GET LAST CHAR
|
||||
INC HL ;MOVE TO ZERO-CHAR
|
||||
CP '\' ;IS IT BACKSLASH?
|
||||
JR Z,.WITHSL9
|
||||
LD A,'\' ;
|
||||
LD (HL),A ;PUT BACKSLASH TO THE END OF STRING
|
||||
INC HL ;MOVE TO THE NEW END OF STRING
|
||||
.WITHSL9:
|
||||
LD A,"*"
|
||||
LD (HL),A
|
||||
INC HL
|
||||
LD (HL),"."
|
||||
INC HL
|
||||
LD (HL),A
|
||||
INC HL
|
||||
LD (HL),0
|
||||
LD HL,BUF2
|
||||
.PATPRESNT
|
||||
LD DE,FF_STRUCT
|
||||
LD A,FAT_ATTR.NoVolID
|
||||
LD B,0
|
||||
CALL F_FIRST
|
||||
JP C,ERROR
|
||||
.CDIR_HEAD:
|
||||
LD A,MSG_DIRHEAD
|
||||
CALL MESSAGE
|
||||
LD HL,DIRSPEC
|
||||
LD C,Dss.PChars
|
||||
RST ToDSS
|
||||
CALL CRLF
|
||||
CALL CRLF
|
||||
.CDIR_LOOP:
|
||||
LD HL,CDFNAME
|
||||
CALL PNAME
|
||||
LD DE,FF_STRUCT
|
||||
CALL F_NEXT
|
||||
JR NC,.CDIR_LOOP
|
||||
RET
|
||||
|
||||
; FF_STRUCT
|
||||
; DB "12345678"
|
||||
; DB "123"
|
||||
; DB #00
|
||||
; DW 0,0,0,0
|
||||
; CDFPOSH DW 0 ;CLUSTER HIGH
|
||||
; CDFTIME DW 0 ;TIME
|
||||
; CDFDATE DW 0 ;DATE
|
||||
; CDFPOSL DW 0 ;CLUSTER
|
||||
; CDFSIZE DW 0,0 ;SIZE
|
||||
; CDFATTR DB #00 ;ATTR
|
||||
; CDFNAME DB "12345678123",0
|
||||
; ; DS 44
|
||||
; DS 256-($-FF_STRUCT)
|
||||
|
||||
PNAME LD BC,8
|
||||
LD DE,PRM1
|
||||
LDIR
|
||||
XOR A
|
||||
LD (DE),A
|
||||
LD DE,PRM2
|
||||
LDI
|
||||
LDI
|
||||
LDI
|
||||
LD (DE),A
|
||||
LD IX,FF_STRUCT
|
||||
CALL PRNSIZE
|
||||
CALL PRNDATE
|
||||
CALL PRNTIME
|
||||
LD A,MSG_DIRENTRY
|
||||
JP MESSAGE
|
||||
|
||||
PRNDATE LD B,(IX+25)
|
||||
LD C,(IX+24)
|
||||
LD HL,SIZEBFF
|
||||
CALL DATE
|
||||
LD (HL),0
|
||||
LD HL,SIZEBFF
|
||||
LD DE,PRM4
|
||||
LD A,(HL)
|
||||
CP "0"
|
||||
JP NZ,PUTPRM
|
||||
LD (HL),#20
|
||||
JP PUTPRM
|
||||
|
||||
PRNTIME LD B,(IX+22)
|
||||
LD C,(IX+23)
|
||||
LD HL,SIZEBFF
|
||||
CALL TIME
|
||||
LD (HL),0
|
||||
LD HL,SIZEBFF
|
||||
LD DE,PRM5
|
||||
LD A,(HL)
|
||||
CP "0"
|
||||
JP NZ,PUTPRM
|
||||
LD (HL),#20
|
||||
JP PUTPRM
|
||||
|
||||
TIME: SRL C
|
||||
RR B
|
||||
SRL C
|
||||
RR B
|
||||
SRL C
|
||||
RR B
|
||||
SRL B
|
||||
SRL B
|
||||
LD A,C
|
||||
CALL NUMB
|
||||
LD (HL),":"
|
||||
INC HL
|
||||
LD A,B
|
||||
JP NUMB
|
||||
|
||||
DATE: LD A,C
|
||||
AND #1F
|
||||
PUSH BC
|
||||
CALL NUMB
|
||||
LD (HL),"."
|
||||
INC HL
|
||||
POP BC
|
||||
LD A,C
|
||||
SRL B
|
||||
RLA
|
||||
RLA
|
||||
RLA
|
||||
RLA
|
||||
AND #0F
|
||||
CALL NUMB
|
||||
LD (HL),"."
|
||||
INC HL
|
||||
LD A,B
|
||||
ADD A,#50
|
||||
CP 100
|
||||
JP C,NUMB
|
||||
.SUB100:
|
||||
SUB 100
|
||||
CP 100
|
||||
JP C,NUMB
|
||||
JR .SUB100
|
||||
|
||||
NUMB: LD C,#2F
|
||||
.NUMB1: INC C
|
||||
SUB 10
|
||||
JP NC,.NUMB1
|
||||
ADD A,10
|
||||
ADD A,#30
|
||||
LD (HL),C
|
||||
INC HL
|
||||
LD (HL),A
|
||||
INC HL
|
||||
RET
|
||||
|
||||
PRNSIZE LD A,(IX+32)
|
||||
LD HL,DIRIDD
|
||||
AND #10
|
||||
JP NZ,.PRZ
|
||||
LD L,(IX+28)
|
||||
LD H,(IX+29)
|
||||
EXX
|
||||
LD L,(IX+30)
|
||||
LD H,(IX+31)
|
||||
EXX
|
||||
PUSH IX
|
||||
CALL MAKE_LN
|
||||
LD HL,L32BIT_+9
|
||||
LD A,(HL)
|
||||
CP #20
|
||||
JR NZ,.ALR
|
||||
LD A,#30
|
||||
LD (HL),A
|
||||
.ALR: LD DE,SIZEBFF
|
||||
LD HL,L32BIT_;; +1
|
||||
LDI
|
||||
LD A," "
|
||||
LD (DE),A
|
||||
INC DE
|
||||
LDI
|
||||
LDI
|
||||
LDI
|
||||
LD (DE),A
|
||||
INC DE
|
||||
LDI
|
||||
LDI
|
||||
LDI
|
||||
LD (DE),A
|
||||
INC DE
|
||||
LDI
|
||||
LDI
|
||||
LDI
|
||||
LD HL,SIZEBFF
|
||||
POP IX
|
||||
.PRZ: LD DE,PRM3
|
||||
JP PUTPRM
|
||||
|
||||
MAKE_LN:
|
||||
LD IX,L32BIT_
|
||||
EXX
|
||||
LD DE,#3B9A ; 1000000000
|
||||
EXX
|
||||
LD DE,#CA00
|
||||
CALL GET_DIG
|
||||
EXX
|
||||
LD DE,#05F5 ; 100000000
|
||||
EXX
|
||||
LD DE,#E100
|
||||
CALL GET_DIG
|
||||
EXX
|
||||
LD DE,#0098 ; 10000000
|
||||
EXX
|
||||
LD DE,#9680
|
||||
CALL GET_DIG
|
||||
EXX
|
||||
LD DE,#000F ; 1000000
|
||||
EXX
|
||||
LD DE,#4240
|
||||
CALL GET_DIG
|
||||
EXX
|
||||
LD DE,#0001 ; 100000
|
||||
EXX
|
||||
LD DE,#86A0
|
||||
CALL GET_DIG
|
||||
EXX
|
||||
LD DE,#0000 ; 10000
|
||||
EXX
|
||||
LD DE,#2710
|
||||
CALL GET_DIG
|
||||
EXX
|
||||
LD DE,#0000 ; 1000
|
||||
EXX
|
||||
LD DE,#03E8
|
||||
CALL GET_DIG
|
||||
EXX
|
||||
LD DE,#0000 ; 100
|
||||
EXX
|
||||
LD DE,#0064
|
||||
CALL GET_DIG
|
||||
EXX
|
||||
LD DE,#0000 ; 10
|
||||
EXX
|
||||
LD DE,#000A
|
||||
CALL GET_DIG
|
||||
LD A,L ; 1
|
||||
ADD A,#30
|
||||
LD (IX+0),A
|
||||
INC IX
|
||||
LD HL,L32BIT_
|
||||
LD DE,#2030
|
||||
;
|
||||
.KILLZ: LD A,(HL)
|
||||
CP E
|
||||
JR NZ,.KILLZ2
|
||||
LD (HL),D
|
||||
INC HL
|
||||
JP .KILLZ
|
||||
.KILLZ2:
|
||||
LD HL,L32BIT_+9
|
||||
LD A,(HL)
|
||||
CP D
|
||||
RET NZ
|
||||
LD (HL),E
|
||||
RET
|
||||
|
||||
; HL:HL - DE:DE
|
||||
|
||||
GET_DIG:
|
||||
XOR A
|
||||
.INC_DG:
|
||||
INC A
|
||||
SBC HL,DE
|
||||
EXX
|
||||
SBC HL,DE
|
||||
EXX
|
||||
JP NC,.INC_DG
|
||||
ADD HL,DE
|
||||
EXX
|
||||
ADC HL,DE
|
||||
EXX
|
||||
DEC A
|
||||
ADD A,#30
|
||||
LD (IX+0),A
|
||||
INC IX
|
||||
RET
|
||||
|
||||
L32BIT_ DB "0000000000"
|
||||
|
||||
DIRIDD DB "<DIR> ",0
|
||||
|
||||
SIZEBFF DB "0 000 000 000",0,0
|
||||
|
||||
DEFDIR DB #5C,"*.*",0
|
||||
|
||||
;------------------------
|
||||
|
||||
CDUMP: LD HL,BUF2
|
||||
LD BC,#0000
|
||||
CALL GETNUM
|
||||
; LD XL,C
|
||||
; LD XH,0
|
||||
; LD HL,0
|
||||
LD A,(CDDRIVE)
|
||||
LD DE,DUMPBUF
|
||||
LD BC,1*256 + BIOS.DRV_READ
|
||||
RST ToBIOS
|
||||
JR C,.DMPERR
|
||||
;
|
||||
LD HL,BUF3
|
||||
CALL GETNUM
|
||||
PUSH IX
|
||||
POP BC
|
||||
LD A,B
|
||||
AND #07
|
||||
LD B,A
|
||||
LD HL,2048-#01C0
|
||||
AND A
|
||||
SBC HL,BC
|
||||
JR NC,.GOODOFFS
|
||||
LD BC,2048-#01C0
|
||||
.GOODOFFS:
|
||||
LD HL,DUMPBUF
|
||||
ADD HL,BC
|
||||
;
|
||||
CALL DUMP
|
||||
JP CRLF
|
||||
.DMPERR:
|
||||
LD A,MSG_IO_ERROR
|
||||
JP MESSAGE
|
||||
;
|
||||
|
||||
GETNUM: EXX
|
||||
LD IX,0
|
||||
LD HL,0
|
||||
EXX
|
||||
.GETNUM0:
|
||||
LD A,(HL)
|
||||
OR A
|
||||
JR Z,.EGETN
|
||||
INC HL
|
||||
CP "0"
|
||||
JR C,.GETNUM0
|
||||
CP "9"+1
|
||||
JR NC,.GETNUM0
|
||||
SUB "0"
|
||||
;
|
||||
EXX
|
||||
PUSH IX ;
|
||||
PUSH HL
|
||||
POP DE
|
||||
POP BC ;LD DE:BC,HL:IX
|
||||
;
|
||||
ADD IX,IX
|
||||
ADC HL,HL ;x2
|
||||
ADD IX,IX
|
||||
ADC HL,HL ;x4
|
||||
ADD IX,BC
|
||||
ADC HL,DE ;x5
|
||||
ADD IX,IX
|
||||
ADC HL,HL ;x10
|
||||
;
|
||||
LD C,A
|
||||
LD B,0
|
||||
ADD IX,BC
|
||||
LD C,B
|
||||
ADC HL,BC
|
||||
EXX
|
||||
JR .GETNUM0
|
||||
.EGETN: EXX
|
||||
;PUSH IX
|
||||
PUSH HL
|
||||
EXX
|
||||
POP HL
|
||||
;POP IX
|
||||
RET
|
||||
;;;;;;;;;;;;;;;
|
||||
; LD A,(HL)
|
||||
; OR A
|
||||
; RET Z
|
||||
; INC HL
|
||||
; CP "0"
|
||||
; JR C,GETNUM
|
||||
; CP "9"+1
|
||||
; JR NC,GETNUM
|
||||
; SUB "0"
|
||||
; LD B,A
|
||||
;
|
||||
; LD A,C
|
||||
; ADD A,A
|
||||
; ADD A,A
|
||||
; ADD A,C
|
||||
; ADD A,A
|
||||
;
|
||||
; ADD A,B
|
||||
; LD C,A
|
||||
; JR GETNUM
|
||||
;;;;;;;;;;;;;;;;
|
||||
|
||||
UPDUMP: BYTE " +00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 0123456789ABCDEF ",CR,LF
|
||||
DZ " -------------------------------------------------- +----------------+"
|
||||
|
||||
|
||||
DUMP: PUSH HL
|
||||
LD HL,UPDUMP
|
||||
LD C,Dss.PChars
|
||||
RST ToDSS
|
||||
POP HL
|
||||
LD BC,#1C00
|
||||
.L1: PUSH BC
|
||||
PUSH BC
|
||||
CALL CRLF
|
||||
;
|
||||
LD DE,DUMPBUF
|
||||
AND A
|
||||
SBC HL,DE
|
||||
LD A,L
|
||||
PUSH AF
|
||||
LD A,H
|
||||
ADD HL,DE
|
||||
;
|
||||
CALL PHEX
|
||||
POP AF
|
||||
CALL PHEX
|
||||
LD A,":"
|
||||
CALL PRNCHAR
|
||||
LD A," "
|
||||
CALL PRNCHAR
|
||||
LD A," "
|
||||
CALL PRNCHAR
|
||||
POP BC
|
||||
PUSH HL
|
||||
;
|
||||
LD B,#08
|
||||
.L2: PUSH BC
|
||||
LD A,(HL)
|
||||
INC HL
|
||||
CALL PHEX
|
||||
LD A," "
|
||||
CALL PRNCHAR
|
||||
POP BC
|
||||
INC C
|
||||
DJNZ .L2
|
||||
;
|
||||
LD A," "
|
||||
CALL PRNCHAR
|
||||
;
|
||||
LD B,#08
|
||||
.L2_00: PUSH BC
|
||||
LD A,(HL)
|
||||
INC HL
|
||||
CALL PHEX
|
||||
LD A," "
|
||||
CALL PRNCHAR
|
||||
POP BC
|
||||
INC C
|
||||
DJNZ .L2_00
|
||||
;
|
||||
LD A," "
|
||||
CALL PRNCHAR
|
||||
;
|
||||
LD A,"|"
|
||||
CALL PRNCHAR
|
||||
POP HL
|
||||
LD B,#10
|
||||
.LLL: LD A,(HL)
|
||||
INC HL
|
||||
PUSH BC
|
||||
CALL PRINT_
|
||||
POP BC
|
||||
DJNZ .LLL
|
||||
LD A,"|"
|
||||
CALL PRNCHAR
|
||||
;
|
||||
LD A,C
|
||||
POP BC
|
||||
LD C,A
|
||||
DJNZ .L1
|
||||
RET
|
||||
|
||||
PHEX: LD E,A
|
||||
RRCA
|
||||
RRCA
|
||||
RRCA
|
||||
RRCA
|
||||
AND #0F
|
||||
ADD A,#30
|
||||
CP #3A
|
||||
JR C,.PHEX2
|
||||
ADD A,7
|
||||
.PHEX2: CALL PRINT_
|
||||
LD A,E
|
||||
AND #0F
|
||||
ADD A,#30
|
||||
CP #3A
|
||||
JR C,.PHEX3
|
||||
ADD A,7
|
||||
.PHEX3: CALL PRINT_
|
||||
RET
|
||||
|
||||
PRNCHAR:
|
||||
LD C,Dss.PutChar
|
||||
JP ToDSS
|
||||
;
|
||||
1220
Cd_dos.asm
Normal file
1220
Cd_dos.asm
Normal file
File diff suppressed because it is too large
Load Diff
1
Shared_Includes
Submodule
1
Shared_Includes
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 857938d1dbf3b332a5e9e8ccabfee531eb3848fa
|
||||
Loading…
Reference in New Issue
Block a user