mirror of
https://github.com/Tolik-Trek/Attrib.git
synced 2026-06-15 17:31:39 +03:00
Updated for CLP
This commit is contained in:
parent
24dcb0042d
commit
dd6dd7bf0c
@ -1 +1 @@
|
||||
Subproject commit 4c835d305fd5d1bc296039706d5e163c1f2224ca
|
||||
Subproject commit d2ba40c4620459681fdc5eb8d4cadcb50eb79aa8
|
||||
621
attrib.asm
621
attrib.asm
@ -2,52 +2,122 @@
|
||||
;
|
||||
; ATTRIB.EXE [+R|-R] [+A|-A] [+S|-S] [+H|-H][[drive:][path]filename] [/S]
|
||||
;
|
||||
ORG #8100-512
|
||||
INCLUDE "dos_equ.asm"
|
||||
DB "EXE" ;EXE ID
|
||||
DB #00 ;EXE VERSION
|
||||
DW #0200 ;CODE OFFSET LOW
|
||||
DW #0000 ;CODE OFFSET HIGH
|
||||
DW #0000 ;END-BEG ;PRIMARY LOADER
|
||||
DW #0000 ;
|
||||
DW #0000 ;RESERVED
|
||||
DW #0000 ;
|
||||
DW #8100 ;LOAD ADDRESS
|
||||
DW #8100 ;START ADDRESS
|
||||
DW #BFFF ;STACK ADDRESS
|
||||
DS 490
|
||||
;
|
||||
; Defines section
|
||||
;---------------------------------------------------------------------[]
|
||||
DEFINE DEBUG 0
|
||||
DEFINE EMULATOR 0
|
||||
DEFINE EXE_HEADER 1
|
||||
DEFINE App_EXE_Version 1
|
||||
; define NEED_LOADER 1
|
||||
; define NeedSafePort_Y 0
|
||||
;---------------------------------------------------------------------[]
|
||||
;
|
||||
|
||||
|
||||
;
|
||||
; Included LUA section
|
||||
;---------------------------------------------------------------------[]
|
||||
; includelua <Shared_Includes/LUA/Functions.LUA>
|
||||
;---------------------------------------------------------------------[]
|
||||
;
|
||||
|
||||
|
||||
|
||||
;
|
||||
; Included constants section
|
||||
;---------------------------------------------------------------------[]
|
||||
; include 'Shared_Includes/constants/sp2000.inc'
|
||||
include 'Shared_Includes/constants/BIOS_equ.inc'
|
||||
include 'Shared_Includes/constants/dss_equ.inc'
|
||||
; include 'Shared_Includes/constants/standart_colors.inc'
|
||||
; include 'Shared_Includes/constants/ATA.inc'
|
||||
;---------------------------------------------------------------------[]
|
||||
;
|
||||
|
||||
;
|
||||
; Included macroses section
|
||||
;---------------------------------------------------------------------[]
|
||||
; include 'Shared_Includes/macroses/macros.z80'
|
||||
; include 'Shared_Includes/macroses/accelerator.z80'
|
||||
;---------------------------------------------------------------------[]
|
||||
;
|
||||
|
||||
;
|
||||
; Standart EQU section
|
||||
;---------------------------------------------------------------------[]
|
||||
org_addr: EQU #8000+CLP_Buffer
|
||||
code_addr: EQU START
|
||||
stack_point: EQU #BFFE
|
||||
stack_buffer: EQU 64
|
||||
program_start: EQU START
|
||||
Loader_length: EQU 0
|
||||
;---------------------------------------------------------------------[]
|
||||
;
|
||||
|
||||
STRUCT Variables
|
||||
.STOPMODE: BYTE #00
|
||||
.RESMASK: BYTE #00
|
||||
.SETMASK: BYTE #00
|
||||
.MODIFY: BYTE #00
|
||||
.FSTRUCT: BLOCK 33,0
|
||||
.FILENAME: BLOCK 223,0
|
||||
.BUFFER: BLOCK 33,0
|
||||
.FILE_PRM: BLOCK 223,0
|
||||
;CUR_DIRECTORY EQU FILE_PRM+256
|
||||
ENDS
|
||||
|
||||
;
|
||||
; Code start section
|
||||
;[]-------------------------------------------------------------------[]
|
||||
IF EXE_HEADER
|
||||
INCLUDE 'Shared_Includes/constants/EXE_Header.z80'
|
||||
ORG org_addr
|
||||
ELSE
|
||||
ORG org_addr-CLP_Buffer
|
||||
ENDIF
|
||||
IF DEBUG
|
||||
OUTPUT "Build/Debug.bin"
|
||||
ENDIF
|
||||
;
|
||||
;---------------------------------------------------------------------[]
|
||||
|
||||
; RST DSS
|
||||
;EXIT EQU #41
|
||||
PUTCHAR: EQU #5B
|
||||
PCHARS: EQU #5C
|
||||
|
||||
;SYSTEM ATTRIBUTES
|
||||
READONLY_ATR EQU %00000001
|
||||
HIDDEN_ATR EQU %00000010
|
||||
SYSTEM_ATR EQU %00000100
|
||||
ARCHIVE_ATR EQU %00100000
|
||||
READONLY_ATR: EQU %0000'0001
|
||||
HIDDEN_ATR: EQU %0000'0010
|
||||
SYSTEM_ATR: EQU %0000'0100
|
||||
ARCHIVE_ATR: EQU %0010'0000
|
||||
|
||||
USAGE_MSG EQU 1
|
||||
ERRATR_MSG EQU 2
|
||||
ERRKEY_MSG EQU 3
|
||||
USAGE_MSG: EQU 1
|
||||
ERRATR_MSG: EQU 2
|
||||
ERRKEY_MSG: EQU 3
|
||||
|
||||
START PUSH IX
|
||||
START: PUSH IX
|
||||
CALL INITDATA
|
||||
POP HL
|
||||
INC HL
|
||||
CALL GET_KEY
|
||||
LD B,1
|
||||
LD A,(STOPMODE)
|
||||
LD A,(VARS.STOPMODE)
|
||||
OR A
|
||||
JR NZ,QUIT
|
||||
LD A,(MODIFY)
|
||||
LD A,(VARS.MODIFY)
|
||||
BIT 7,A
|
||||
JR NZ,NAME_OK
|
||||
SET 7,A
|
||||
LD (MODIFY),A
|
||||
LD (VARS.MODIFY),A
|
||||
LD HL,ANYNAME
|
||||
LD DE,FILE_PRM
|
||||
LD BC,EANYNAME-ANYNAME
|
||||
LD DE,VARS.FILE_PRM
|
||||
LD BC,ANYNAME.Size
|
||||
LDIR
|
||||
NAME_OK
|
||||
LD HL,FILE_PRM
|
||||
CHEKNM
|
||||
NAME_OK:
|
||||
LD HL,VARS.FILE_PRM
|
||||
CHEKNM:
|
||||
LD A,(HL)
|
||||
INC HL
|
||||
CP "*"
|
||||
@ -60,108 +130,107 @@ CHEKNM
|
||||
LD A,#37
|
||||
LD (ATTR+1),A
|
||||
|
||||
CHEKEN
|
||||
LD HL,FILE_PRM
|
||||
LD DE,FSTRUCT
|
||||
LD BC,#0119 ;FIND FIRST
|
||||
ATTR LD A,#27 ;%00100111
|
||||
RST #10
|
||||
CHEKEN:
|
||||
LD HL,VARS.FILE_PRM
|
||||
LD DE,VARS.FSTRUCT
|
||||
LD BC,Dss.F_First.DOSname ;FIND FIRST
|
||||
ATTR: LD A,#27 ;%00100111
|
||||
RST ToDSS
|
||||
CALL C,DOSERROR
|
||||
JR C,ENDOFDIR
|
||||
LOOP_ATTR
|
||||
LOOP_ATTR:
|
||||
CALL CHANGE_ATTRIB
|
||||
LD DE,FSTRUCT
|
||||
LD C,#1A
|
||||
RST #10
|
||||
LD DE,VARS.FSTRUCT
|
||||
LD C,Dss.F_Next
|
||||
RST ToDSS
|
||||
JR NC,LOOP_ATTR
|
||||
ENDOFDIR
|
||||
ENDOFDIR:
|
||||
CALL CRLF
|
||||
LD B,0
|
||||
QUIT LD C,EXIT
|
||||
RST #10
|
||||
QUIT: LD C,Dss.Exit
|
||||
RST ToDSS
|
||||
RET
|
||||
|
||||
INITDATA
|
||||
XOR A
|
||||
LD (RESMASK),A
|
||||
LD (SETMASK),A
|
||||
LD (MODIFY),A
|
||||
LD (STOPMODE),A
|
||||
|
||||
INITDATA:
|
||||
LD HL,VARS
|
||||
LD DE,VARS+1
|
||||
LD (HL),0
|
||||
LD BC,Variables-1
|
||||
LDIR
|
||||
RET
|
||||
|
||||
CHANGE_ATTRIB
|
||||
LD A,(MODIFY)
|
||||
CHANGE_ATTRIB:
|
||||
LD A,(VARS.MODIFY)
|
||||
OR A
|
||||
RET Z
|
||||
CP #80
|
||||
JR Z,SHOW_ATTRIBS
|
||||
LD A,(RESMASK)
|
||||
LD A,(VARS.RESMASK)
|
||||
CPL
|
||||
LD C,A
|
||||
LD A,(SETMASK)
|
||||
LD A,(VARS.SETMASK)
|
||||
LD B,A
|
||||
PUSH BC
|
||||
LD HL,FILENAME
|
||||
LD BC,#0016
|
||||
RST #10
|
||||
LD HL,VARS.FILENAME
|
||||
LD BC,Dss.Attrib.Get
|
||||
RST ToDSS
|
||||
CALL C,DOSERROR
|
||||
POP BC
|
||||
RET C
|
||||
AND C
|
||||
OR B
|
||||
LD HL,FILENAME
|
||||
LD BC,#0116
|
||||
RST #10
|
||||
LD HL,VARS.FILENAME
|
||||
LD BC,Dss.Attrib.Set
|
||||
RST ToDSS
|
||||
CALL C,DOSERROR
|
||||
RET
|
||||
|
||||
SHOW_ATTRIBS
|
||||
LD HL,FILENAME
|
||||
LD BC,#0016
|
||||
RST #10
|
||||
SHOW_ATTRIBS:
|
||||
LD HL,VARS.FILENAME
|
||||
LD BC,Dss.Attrib.Get
|
||||
RST ToDSS
|
||||
CALL C,DOSERROR
|
||||
RET C
|
||||
PRINT_ATTR_STR
|
||||
PRINT_ATTR_STR:
|
||||
LD C,A
|
||||
LD B,8
|
||||
LD HL,ATTR_STR
|
||||
ATTR_LP RL C
|
||||
ATTR_LP: RL C
|
||||
LD A,(HL)
|
||||
INC HL
|
||||
JR C,PSGN_OK
|
||||
LD A," "
|
||||
PSGN_OK PUSH BC
|
||||
LD C,PUTCHAR
|
||||
RST #10
|
||||
PSGN_OK: PUSH BC
|
||||
LD C,Dss.PutChar
|
||||
RST ToDSS
|
||||
POP BC
|
||||
DJNZ ATTR_LP
|
||||
LD A,9
|
||||
LD C,PUTCHAR
|
||||
RST #10
|
||||
LD HL,FILENAME
|
||||
LD C,PCHARS
|
||||
RST #10
|
||||
CALL CRLF
|
||||
RET
|
||||
LD C,Dss.PutChar
|
||||
RST ToDSS
|
||||
LD HL,VARS.FILENAME
|
||||
LD C,Dss.PChars
|
||||
RST ToDSS
|
||||
JP CRLF
|
||||
;RET
|
||||
|
||||
ATTR_STR
|
||||
ATTR_STR:
|
||||
DB " A SHR"
|
||||
|
||||
PRINT_USAGE
|
||||
PRINT_USAGE:
|
||||
LD A,USAGE_MSG
|
||||
CALL MESSAGE
|
||||
LD A,1
|
||||
LD (STOPMODE),A
|
||||
LD (VARS.STOPMODE),A
|
||||
POP HL
|
||||
RET
|
||||
|
||||
GET_KEY
|
||||
LD DE,BUFFER
|
||||
LD C,#43 ;GSWITCH
|
||||
RST #10
|
||||
GET_KEY:
|
||||
LD DE,VARS.BUFFER
|
||||
LD C,Dss.GSwitch
|
||||
RST ToDSS
|
||||
EX AF,AF'
|
||||
LD A,(BUFFER)
|
||||
LD A,(VARS.BUFFER)
|
||||
OR A
|
||||
RET Z
|
||||
CP "+"
|
||||
@ -174,26 +243,26 @@ GET_KEY
|
||||
EX AF,AF'
|
||||
PUSH AF
|
||||
PUSH HL
|
||||
LD HL,BUFFER
|
||||
LD DE,FILE_PRM
|
||||
LD C,#43
|
||||
RST #10
|
||||
LD HL,VARS.BUFFER
|
||||
LD DE,VARS.FILE_PRM
|
||||
LD C,Dss.GSwitch
|
||||
RST ToDSS
|
||||
POP HL
|
||||
POP AF
|
||||
EX AF,AF'
|
||||
LD A,(MODIFY)
|
||||
LD A,(VARS.MODIFY)
|
||||
OR 80h
|
||||
LD (MODIFY),A
|
||||
LD (VARS.MODIFY),A
|
||||
;
|
||||
GKLOOP EX AF,AF'
|
||||
GKLOOP: EX AF,AF'
|
||||
JR NC,GET_KEY
|
||||
XOR A
|
||||
DEC A ;A=FF, ZF=0 (NO FILENAME)
|
||||
RET
|
||||
|
||||
SWITCH_KEY
|
||||
SWITCH_KEY:
|
||||
PUSH HL
|
||||
LD DE,(BUFFER+1)
|
||||
LD DE,(VARS.BUFFER+1)
|
||||
AND A
|
||||
LD HL,"?"
|
||||
SBC HL,DE
|
||||
@ -207,18 +276,18 @@ SWITCH_KEY
|
||||
LD A,ERRKEY_MSG
|
||||
CALL MESSAGE
|
||||
LD A,1
|
||||
LD (STOPMODE),A
|
||||
LD (VARS.STOPMODE),A
|
||||
POP HL
|
||||
RET
|
||||
|
||||
RESATR
|
||||
RESATR:
|
||||
LD B,0
|
||||
JR RES_SET_ATR
|
||||
SETATR
|
||||
SETATR:
|
||||
LD B,1
|
||||
RES_SET_ATR
|
||||
RES_SET_ATR:
|
||||
PUSH HL
|
||||
LD DE,(BUFFER+1)
|
||||
LD DE,(VARS.BUFFER+1)
|
||||
AND A
|
||||
LD HL,"?"
|
||||
SBC HL,DE
|
||||
@ -250,277 +319,217 @@ RES_SET_ATR
|
||||
POP HL
|
||||
RET
|
||||
|
||||
ADD_IT
|
||||
ADD_IT:
|
||||
INC B
|
||||
DJNZ SET_MET
|
||||
LD C,A
|
||||
LD A,(RESMASK)
|
||||
LD A,(VARS.RESMASK)
|
||||
OR C
|
||||
LD (RESMASK),A
|
||||
LD A,(MODIFY)
|
||||
LD (VARS.RESMASK),A
|
||||
LD A,(VARS.MODIFY)
|
||||
OR #01
|
||||
LD (MODIFY),A
|
||||
LD (VARS.MODIFY),A
|
||||
POP HL
|
||||
JP GKLOOP
|
||||
|
||||
SET_MET
|
||||
LD C,A
|
||||
LD A,(SETMASK)
|
||||
SET_MET: LD C,A
|
||||
LD A,(VARS.SETMASK)
|
||||
OR C
|
||||
LD (SETMASK),A
|
||||
LD A,(MODIFY)
|
||||
LD (VARS.SETMASK),A
|
||||
LD A,(VARS.MODIFY)
|
||||
OR #02
|
||||
LD (MODIFY),A
|
||||
LD (VARS.MODIFY),A
|
||||
POP HL
|
||||
JP GKLOOP
|
||||
|
||||
CR EQU 13
|
||||
LF EQU 10
|
||||
CR: EQU 13
|
||||
LF: EQU 10
|
||||
|
||||
CRLF LD A,#0D
|
||||
LD C,PUTCHAR
|
||||
RST #10
|
||||
LD A,#0A
|
||||
LD C,PUTCHAR
|
||||
RST #10
|
||||
CRLF: LD HL,.crlf
|
||||
LD C,Dss.PChars
|
||||
RST ToDSS
|
||||
RET
|
||||
;
|
||||
.crlf: DZ "\r\n"
|
||||
|
||||
DOSERROR
|
||||
LD E,A
|
||||
DOSERROR: LD E,A
|
||||
LD D,0
|
||||
JP ERR_MSG
|
||||
|
||||
ERR_MSG CALL FMESAGE
|
||||
CALL FMESAGE
|
||||
CALL PRINTZ
|
||||
CALL CRLF
|
||||
CALL CRLF
|
||||
SCF
|
||||
RET
|
||||
|
||||
MESSAGE LD E,A
|
||||
MESSAGE: LD E,A
|
||||
LD D,0
|
||||
CALL MESAGE
|
||||
CALL PRINTZ
|
||||
RET
|
||||
|
||||
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
|
||||
|
||||
FMESAGE INC DE
|
||||
LD HL,ERR0
|
||||
LD BC,ERR1-ERR0
|
||||
LCPIR XOR A
|
||||
CPIR
|
||||
RET PO
|
||||
RET NZ
|
||||
DEC DE
|
||||
LD A,D
|
||||
OR E
|
||||
JP NZ,LCPIR
|
||||
RET
|
||||
|
||||
PUTVAR LD DE,PRM1
|
||||
PUTPRM LD BC,15
|
||||
PUTPRMA LD A,(HL)
|
||||
LDI
|
||||
RET PO
|
||||
OR A
|
||||
JR NZ,PUTPRMA
|
||||
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,PCHARS
|
||||
RST #10
|
||||
POP HL
|
||||
JR PRINTZ
|
||||
PRINTZ2 LD C,PUTCHAR
|
||||
RST #10
|
||||
JP PRINTZ
|
||||
;RET
|
||||
|
||||
PRINT_ LD C,PUTCHAR
|
||||
RST #10
|
||||
MESAGE: INC DE
|
||||
LD HL,MSG0
|
||||
LD BC,MSG0.Size
|
||||
LCPIR2: XOR A
|
||||
CPIR
|
||||
RET PO
|
||||
RET NZ
|
||||
DEC DE
|
||||
LD A,D
|
||||
OR E
|
||||
JR NZ,LCPIR2
|
||||
RET
|
||||
|
||||
UPPER CP "a"
|
||||
RET C
|
||||
CP "{"
|
||||
RET NC
|
||||
SUB #20
|
||||
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
|
||||
JR NZ,LCPIR
|
||||
RET
|
||||
|
||||
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
|
||||
|
||||
MSG0 DB #00
|
||||
DB "ATTRIB",CR,LF,CR,LF,0
|
||||
DB " Usage: ATTRIB.EXE [+R|-R] [+A|-A] [+S|-S] [+H|-H][[drive:][path]filename]",CR,LF,CR,LF
|
||||
DB " Displays or changes file attributes.",CR,LF
|
||||
DB "This command displays, sets, or removes the Read-Only, Archive, System, and",CR,LF
|
||||
DB "Hidden attributes assigned to files or directories.",CR,LF,CR,LF
|
||||
DB "Parameter",CR,LF,CR,LF
|
||||
DB "[drive:][path]filename",CR,LF
|
||||
DB " Specifies the location and name of the file(s) you want to process.",CR,LF,CR,LF
|
||||
DB "Switches",CR,LF,CR,LF
|
||||
DB "+R Sets the Read-Only file attribute.",CR,LF
|
||||
DB "-R Clears the Read-Only file attribute.",CR,LF
|
||||
DB "+A Sets the Archive file attribute.",CR,LF
|
||||
DB "-A Clears the Archive file attribute.",CR,LF
|
||||
DB "+S Sets the file as a System file.",CR,LF
|
||||
DB "-S Clears the System file attribute.",CR,LF
|
||||
DB "+H Sets the file as a Hidden file.",CR,LF
|
||||
DB "-H Clears the Hidden file attribute.",CR,LF
|
||||
DB 0
|
||||
DB 0
|
||||
MSG1
|
||||
PRINTZ: ;LD A,(HL)
|
||||
;INC HL
|
||||
;OR A
|
||||
;RET Z
|
||||
LD C,Dss.PChars
|
||||
RST ToDSS
|
||||
;JR PRINTZ
|
||||
RET
|
||||
|
||||
ERR0 DB #00
|
||||
DB "Unknown error",0
|
||||
DB "Invalid function",0
|
||||
DB "Invalid drive letter",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
|
||||
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"
|
||||
MSG0: DB #00
|
||||
DZ "ATTRIB\r\n\r\n"
|
||||
DB " Usage: ATTRIB.EXE [+R|-R] [+A|-A] [+S|-S] [+H|-H][[drive:][path]filename]\r\n\r\n"
|
||||
DB " Displays or changes file attributes.\r\n"
|
||||
DB "This command displays, sets, or removes the Read-Only, Archive, System, and\r\n"
|
||||
DB "Hidden attributes assigned to files or directories.\r\n\r\n"
|
||||
DB "Parameter\r\n\r\n"
|
||||
DB "[drive:][path]filename\r\n"
|
||||
DB " Specifies the location and name of the file(s) you want to process.\r\n\r\n"
|
||||
DB "Switches\r\n\r\n"
|
||||
DB "+R Sets the Read-Only file attribute.\r\n"
|
||||
DB "-R Clears the Read-Only file attribute.\r\n"
|
||||
DB "+A Sets the Archive file attribute.\r\n"
|
||||
DB "-A Clears the Archive file attribute.\r\n"
|
||||
DB "+S Sets the file as a System file.\r\n"
|
||||
DB "-S Clears the System file attribute.\r\n"
|
||||
DB "+H Sets the file as a Hidden file.\r\n"
|
||||
DZ "-H Clears the Hidden file attribute.\r\n"
|
||||
DB 0
|
||||
ERR1
|
||||
.Size EQU $-MSG0
|
||||
|
||||
ERR0: DB #00
|
||||
DZ "Unknown error"
|
||||
DZ "Invalid function"
|
||||
DZ "Invalid drive letter"
|
||||
DZ "File not found"
|
||||
DZ "Path not found"
|
||||
DZ "Invalid handle"
|
||||
DZ "Extended error 6"
|
||||
DZ "File exist"
|
||||
DZ "File read only"
|
||||
DZ "Root overflow"
|
||||
DZ "No free space"
|
||||
DZ "Directory not empty"
|
||||
DZ "Can't delete current directory"
|
||||
DZ "Invalid media"
|
||||
DZ "Unknown operation"
|
||||
DZ "Directory exist"
|
||||
DZ "Invalid filename"
|
||||
DZ "Invalid EXE-file"
|
||||
DZ "Not supported EXE-file"
|
||||
DZ "Access denied"
|
||||
DZ "Not ready"
|
||||
DZ "Seek error"
|
||||
DZ "Sector not found"
|
||||
DZ "CRC error"
|
||||
DZ "Write protect"
|
||||
DZ "Read error"
|
||||
DZ "Write error"
|
||||
DZ "Drive failure"
|
||||
DZ "Extended error 28"
|
||||
DZ "Extended error 29"
|
||||
DZ "No free memory"
|
||||
DZ "Invalid memory block"
|
||||
DZ "Extended error 32"
|
||||
DZ "Extended error 33"
|
||||
DZ "Extended error 34"
|
||||
DZ "35"
|
||||
DZ "36"
|
||||
DZ "37"
|
||||
DZ "38"
|
||||
DZ "39"
|
||||
DZ "40"
|
||||
DZ "41"
|
||||
DZ "42"
|
||||
DZ "43"
|
||||
DZ "44"
|
||||
DZ "45"
|
||||
DZ "46"
|
||||
DZ "47"
|
||||
DZ "48"
|
||||
DZ "49"
|
||||
DZ "50"
|
||||
.Size EQU $-ERR0
|
||||
|
||||
; PRINT MODULE
|
||||
|
||||
DUMP LD B,2
|
||||
DUMPLP1 PUSH BC
|
||||
DUMP: LD B,2
|
||||
DUMPLP1: PUSH BC
|
||||
PUSH HL
|
||||
CALL CRLF
|
||||
POP HL
|
||||
CALL PHEXSTR
|
||||
POP BC
|
||||
DJNZ DUMPLP1
|
||||
CALL CRLF
|
||||
RET
|
||||
JP CRLF
|
||||
;RET
|
||||
|
||||
PHEX LD E,A
|
||||
PHEX: LD E,A
|
||||
RRCA
|
||||
RRCA
|
||||
RRCA
|
||||
RRCA
|
||||
AND #0F
|
||||
ADD A,#30
|
||||
CP #3A
|
||||
ADD A,'0'
|
||||
CP '9'+1
|
||||
JR C,PHEX2
|
||||
ADD A,7
|
||||
PHEX2 CALL PRINT_
|
||||
PHEX2: LD C,Dss.PutChar
|
||||
RST ToDSS
|
||||
;
|
||||
LD A,E
|
||||
AND #0F
|
||||
ADD A,#30
|
||||
CP #3A
|
||||
ADD A,'0'
|
||||
CP '9'+1
|
||||
JR C,PHEX3
|
||||
ADD A,7
|
||||
PHEX3 CALL PRINT_
|
||||
PHEX3: LD C,Dss.PutChar
|
||||
RST ToDSS
|
||||
RET
|
||||
|
||||
PHEXSTR LD B,#10
|
||||
PHS1 PUSH BC
|
||||
PHEXSTR: LD B,#10
|
||||
PHS1: PUSH BC
|
||||
LD A,(HL)
|
||||
CALL PHEX
|
||||
LD A,#20
|
||||
CALL PRINT_
|
||||
LD A,' '
|
||||
LD C,Dss.PutChar
|
||||
RST ToDSS
|
||||
;
|
||||
POP BC
|
||||
INC HL
|
||||
DJNZ PHS1
|
||||
RET
|
||||
|
||||
; .DATA
|
||||
STOPMODE
|
||||
DB #00
|
||||
RESMASK DB #00
|
||||
SETMASK DB #00
|
||||
MODIFY DB #00
|
||||
ANYNAME: DB "*.*",0
|
||||
.Size: EQU $-ANYNAME
|
||||
|
||||
ANYNAME DB "*.*",0
|
||||
EANYNAME
|
||||
|
||||
FSTRUCT DS 256
|
||||
FILENAME EQU FSTRUCT+33
|
||||
|
||||
BUFFER DS 256
|
||||
|
||||
FILE_PRM EQU FILENAME+256
|
||||
|
||||
CUR_DIRECTORY EQU FILE_PRM+256
|
||||
; .Clear zone
|
||||
VARS: Variables = $
|
||||
|
||||
Loading…
Reference in New Issue
Block a user