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]
|
; ATTRIB.EXE [+R|-R] [+A|-A] [+S|-S] [+H|-H][[drive:][path]filename] [/S]
|
||||||
;
|
;
|
||||||
ORG #8100-512
|
;
|
||||||
INCLUDE "dos_equ.asm"
|
; Defines section
|
||||||
DB "EXE" ;EXE ID
|
;---------------------------------------------------------------------[]
|
||||||
DB #00 ;EXE VERSION
|
DEFINE DEBUG 0
|
||||||
DW #0200 ;CODE OFFSET LOW
|
DEFINE EMULATOR 0
|
||||||
DW #0000 ;CODE OFFSET HIGH
|
DEFINE EXE_HEADER 1
|
||||||
DW #0000 ;END-BEG ;PRIMARY LOADER
|
DEFINE App_EXE_Version 1
|
||||||
DW #0000 ;
|
; define NEED_LOADER 1
|
||||||
DW #0000 ;RESERVED
|
; define NeedSafePort_Y 0
|
||||||
DW #0000 ;
|
;---------------------------------------------------------------------[]
|
||||||
DW #8100 ;LOAD ADDRESS
|
;
|
||||||
DW #8100 ;START ADDRESS
|
|
||||||
DW #BFFF ;STACK ADDRESS
|
|
||||||
DS 490
|
;
|
||||||
|
; 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
|
;SYSTEM ATTRIBUTES
|
||||||
READONLY_ATR EQU %00000001
|
READONLY_ATR: EQU %0000'0001
|
||||||
HIDDEN_ATR EQU %00000010
|
HIDDEN_ATR: EQU %0000'0010
|
||||||
SYSTEM_ATR EQU %00000100
|
SYSTEM_ATR: EQU %0000'0100
|
||||||
ARCHIVE_ATR EQU %00100000
|
ARCHIVE_ATR: EQU %0010'0000
|
||||||
|
|
||||||
USAGE_MSG EQU 1
|
USAGE_MSG: EQU 1
|
||||||
ERRATR_MSG EQU 2
|
ERRATR_MSG: EQU 2
|
||||||
ERRKEY_MSG EQU 3
|
ERRKEY_MSG: EQU 3
|
||||||
|
|
||||||
START PUSH IX
|
START: PUSH IX
|
||||||
CALL INITDATA
|
CALL INITDATA
|
||||||
POP HL
|
POP HL
|
||||||
INC HL
|
INC HL
|
||||||
CALL GET_KEY
|
CALL GET_KEY
|
||||||
LD B,1
|
LD B,1
|
||||||
LD A,(STOPMODE)
|
LD A,(VARS.STOPMODE)
|
||||||
OR A
|
OR A
|
||||||
JR NZ,QUIT
|
JR NZ,QUIT
|
||||||
LD A,(MODIFY)
|
LD A,(VARS.MODIFY)
|
||||||
BIT 7,A
|
BIT 7,A
|
||||||
JR NZ,NAME_OK
|
JR NZ,NAME_OK
|
||||||
SET 7,A
|
SET 7,A
|
||||||
LD (MODIFY),A
|
LD (VARS.MODIFY),A
|
||||||
LD HL,ANYNAME
|
LD HL,ANYNAME
|
||||||
LD DE,FILE_PRM
|
LD DE,VARS.FILE_PRM
|
||||||
LD BC,EANYNAME-ANYNAME
|
LD BC,ANYNAME.Size
|
||||||
LDIR
|
LDIR
|
||||||
NAME_OK
|
NAME_OK:
|
||||||
LD HL,FILE_PRM
|
LD HL,VARS.FILE_PRM
|
||||||
CHEKNM
|
CHEKNM:
|
||||||
LD A,(HL)
|
LD A,(HL)
|
||||||
INC HL
|
INC HL
|
||||||
CP "*"
|
CP "*"
|
||||||
@ -60,108 +130,107 @@ CHEKNM
|
|||||||
LD A,#37
|
LD A,#37
|
||||||
LD (ATTR+1),A
|
LD (ATTR+1),A
|
||||||
|
|
||||||
CHEKEN
|
CHEKEN:
|
||||||
LD HL,FILE_PRM
|
LD HL,VARS.FILE_PRM
|
||||||
LD DE,FSTRUCT
|
LD DE,VARS.FSTRUCT
|
||||||
LD BC,#0119 ;FIND FIRST
|
LD BC,Dss.F_First.DOSname ;FIND FIRST
|
||||||
ATTR LD A,#27 ;%00100111
|
ATTR: LD A,#27 ;%00100111
|
||||||
RST #10
|
RST ToDSS
|
||||||
CALL C,DOSERROR
|
CALL C,DOSERROR
|
||||||
JR C,ENDOFDIR
|
JR C,ENDOFDIR
|
||||||
LOOP_ATTR
|
LOOP_ATTR:
|
||||||
CALL CHANGE_ATTRIB
|
CALL CHANGE_ATTRIB
|
||||||
LD DE,FSTRUCT
|
LD DE,VARS.FSTRUCT
|
||||||
LD C,#1A
|
LD C,Dss.F_Next
|
||||||
RST #10
|
RST ToDSS
|
||||||
JR NC,LOOP_ATTR
|
JR NC,LOOP_ATTR
|
||||||
ENDOFDIR
|
ENDOFDIR:
|
||||||
CALL CRLF
|
CALL CRLF
|
||||||
LD B,0
|
LD B,0
|
||||||
QUIT LD C,EXIT
|
QUIT: LD C,Dss.Exit
|
||||||
RST #10
|
RST ToDSS
|
||||||
RET
|
RET
|
||||||
|
|
||||||
INITDATA
|
INITDATA:
|
||||||
XOR A
|
LD HL,VARS
|
||||||
LD (RESMASK),A
|
LD DE,VARS+1
|
||||||
LD (SETMASK),A
|
LD (HL),0
|
||||||
LD (MODIFY),A
|
LD BC,Variables-1
|
||||||
LD (STOPMODE),A
|
LDIR
|
||||||
|
|
||||||
RET
|
RET
|
||||||
|
|
||||||
CHANGE_ATTRIB
|
CHANGE_ATTRIB:
|
||||||
LD A,(MODIFY)
|
LD A,(VARS.MODIFY)
|
||||||
OR A
|
OR A
|
||||||
RET Z
|
RET Z
|
||||||
CP #80
|
CP #80
|
||||||
JR Z,SHOW_ATTRIBS
|
JR Z,SHOW_ATTRIBS
|
||||||
LD A,(RESMASK)
|
LD A,(VARS.RESMASK)
|
||||||
CPL
|
CPL
|
||||||
LD C,A
|
LD C,A
|
||||||
LD A,(SETMASK)
|
LD A,(VARS.SETMASK)
|
||||||
LD B,A
|
LD B,A
|
||||||
PUSH BC
|
PUSH BC
|
||||||
LD HL,FILENAME
|
LD HL,VARS.FILENAME
|
||||||
LD BC,#0016
|
LD BC,Dss.Attrib.Get
|
||||||
RST #10
|
RST ToDSS
|
||||||
CALL C,DOSERROR
|
CALL C,DOSERROR
|
||||||
POP BC
|
POP BC
|
||||||
RET C
|
RET C
|
||||||
AND C
|
AND C
|
||||||
OR B
|
OR B
|
||||||
LD HL,FILENAME
|
LD HL,VARS.FILENAME
|
||||||
LD BC,#0116
|
LD BC,Dss.Attrib.Set
|
||||||
RST #10
|
RST ToDSS
|
||||||
CALL C,DOSERROR
|
CALL C,DOSERROR
|
||||||
RET
|
RET
|
||||||
|
|
||||||
SHOW_ATTRIBS
|
SHOW_ATTRIBS:
|
||||||
LD HL,FILENAME
|
LD HL,VARS.FILENAME
|
||||||
LD BC,#0016
|
LD BC,Dss.Attrib.Get
|
||||||
RST #10
|
RST ToDSS
|
||||||
CALL C,DOSERROR
|
CALL C,DOSERROR
|
||||||
RET C
|
RET C
|
||||||
PRINT_ATTR_STR
|
PRINT_ATTR_STR:
|
||||||
LD C,A
|
LD C,A
|
||||||
LD B,8
|
LD B,8
|
||||||
LD HL,ATTR_STR
|
LD HL,ATTR_STR
|
||||||
ATTR_LP RL C
|
ATTR_LP: RL C
|
||||||
LD A,(HL)
|
LD A,(HL)
|
||||||
INC HL
|
INC HL
|
||||||
JR C,PSGN_OK
|
JR C,PSGN_OK
|
||||||
LD A," "
|
LD A," "
|
||||||
PSGN_OK PUSH BC
|
PSGN_OK: PUSH BC
|
||||||
LD C,PUTCHAR
|
LD C,Dss.PutChar
|
||||||
RST #10
|
RST ToDSS
|
||||||
POP BC
|
POP BC
|
||||||
DJNZ ATTR_LP
|
DJNZ ATTR_LP
|
||||||
LD A,9
|
LD A,9
|
||||||
LD C,PUTCHAR
|
LD C,Dss.PutChar
|
||||||
RST #10
|
RST ToDSS
|
||||||
LD HL,FILENAME
|
LD HL,VARS.FILENAME
|
||||||
LD C,PCHARS
|
LD C,Dss.PChars
|
||||||
RST #10
|
RST ToDSS
|
||||||
CALL CRLF
|
JP CRLF
|
||||||
RET
|
;RET
|
||||||
|
|
||||||
ATTR_STR
|
ATTR_STR:
|
||||||
DB " A SHR"
|
DB " A SHR"
|
||||||
|
|
||||||
PRINT_USAGE
|
PRINT_USAGE:
|
||||||
LD A,USAGE_MSG
|
LD A,USAGE_MSG
|
||||||
CALL MESSAGE
|
CALL MESSAGE
|
||||||
LD A,1
|
LD A,1
|
||||||
LD (STOPMODE),A
|
LD (VARS.STOPMODE),A
|
||||||
POP HL
|
POP HL
|
||||||
RET
|
RET
|
||||||
|
|
||||||
GET_KEY
|
GET_KEY:
|
||||||
LD DE,BUFFER
|
LD DE,VARS.BUFFER
|
||||||
LD C,#43 ;GSWITCH
|
LD C,Dss.GSwitch
|
||||||
RST #10
|
RST ToDSS
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
LD A,(BUFFER)
|
LD A,(VARS.BUFFER)
|
||||||
OR A
|
OR A
|
||||||
RET Z
|
RET Z
|
||||||
CP "+"
|
CP "+"
|
||||||
@ -174,26 +243,26 @@ GET_KEY
|
|||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
PUSH AF
|
PUSH AF
|
||||||
PUSH HL
|
PUSH HL
|
||||||
LD HL,BUFFER
|
LD HL,VARS.BUFFER
|
||||||
LD DE,FILE_PRM
|
LD DE,VARS.FILE_PRM
|
||||||
LD C,#43
|
LD C,Dss.GSwitch
|
||||||
RST #10
|
RST ToDSS
|
||||||
POP HL
|
POP HL
|
||||||
POP AF
|
POP AF
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
LD A,(MODIFY)
|
LD A,(VARS.MODIFY)
|
||||||
OR 80h
|
OR 80h
|
||||||
LD (MODIFY),A
|
LD (VARS.MODIFY),A
|
||||||
;
|
;
|
||||||
GKLOOP EX AF,AF'
|
GKLOOP: EX AF,AF'
|
||||||
JR NC,GET_KEY
|
JR NC,GET_KEY
|
||||||
XOR A
|
XOR A
|
||||||
DEC A ;A=FF, ZF=0 (NO FILENAME)
|
DEC A ;A=FF, ZF=0 (NO FILENAME)
|
||||||
RET
|
RET
|
||||||
|
|
||||||
SWITCH_KEY
|
SWITCH_KEY:
|
||||||
PUSH HL
|
PUSH HL
|
||||||
LD DE,(BUFFER+1)
|
LD DE,(VARS.BUFFER+1)
|
||||||
AND A
|
AND A
|
||||||
LD HL,"?"
|
LD HL,"?"
|
||||||
SBC HL,DE
|
SBC HL,DE
|
||||||
@ -207,18 +276,18 @@ SWITCH_KEY
|
|||||||
LD A,ERRKEY_MSG
|
LD A,ERRKEY_MSG
|
||||||
CALL MESSAGE
|
CALL MESSAGE
|
||||||
LD A,1
|
LD A,1
|
||||||
LD (STOPMODE),A
|
LD (VARS.STOPMODE),A
|
||||||
POP HL
|
POP HL
|
||||||
RET
|
RET
|
||||||
|
|
||||||
RESATR
|
RESATR:
|
||||||
LD B,0
|
LD B,0
|
||||||
JR RES_SET_ATR
|
JR RES_SET_ATR
|
||||||
SETATR
|
SETATR:
|
||||||
LD B,1
|
LD B,1
|
||||||
RES_SET_ATR
|
RES_SET_ATR:
|
||||||
PUSH HL
|
PUSH HL
|
||||||
LD DE,(BUFFER+1)
|
LD DE,(VARS.BUFFER+1)
|
||||||
AND A
|
AND A
|
||||||
LD HL,"?"
|
LD HL,"?"
|
||||||
SBC HL,DE
|
SBC HL,DE
|
||||||
@ -250,277 +319,217 @@ RES_SET_ATR
|
|||||||
POP HL
|
POP HL
|
||||||
RET
|
RET
|
||||||
|
|
||||||
ADD_IT
|
ADD_IT:
|
||||||
INC B
|
INC B
|
||||||
DJNZ SET_MET
|
DJNZ SET_MET
|
||||||
LD C,A
|
LD C,A
|
||||||
LD A,(RESMASK)
|
LD A,(VARS.RESMASK)
|
||||||
OR C
|
OR C
|
||||||
LD (RESMASK),A
|
LD (VARS.RESMASK),A
|
||||||
LD A,(MODIFY)
|
LD A,(VARS.MODIFY)
|
||||||
OR #01
|
OR #01
|
||||||
LD (MODIFY),A
|
LD (VARS.MODIFY),A
|
||||||
POP HL
|
POP HL
|
||||||
JP GKLOOP
|
JP GKLOOP
|
||||||
|
|
||||||
SET_MET
|
SET_MET: LD C,A
|
||||||
LD C,A
|
LD A,(VARS.SETMASK)
|
||||||
LD A,(SETMASK)
|
|
||||||
OR C
|
OR C
|
||||||
LD (SETMASK),A
|
LD (VARS.SETMASK),A
|
||||||
LD A,(MODIFY)
|
LD A,(VARS.MODIFY)
|
||||||
OR #02
|
OR #02
|
||||||
LD (MODIFY),A
|
LD (VARS.MODIFY),A
|
||||||
POP HL
|
POP HL
|
||||||
JP GKLOOP
|
JP GKLOOP
|
||||||
|
|
||||||
CR EQU 13
|
CR: EQU 13
|
||||||
LF EQU 10
|
LF: EQU 10
|
||||||
|
|
||||||
CRLF LD A,#0D
|
CRLF: LD HL,.crlf
|
||||||
LD C,PUTCHAR
|
LD C,Dss.PChars
|
||||||
RST #10
|
RST ToDSS
|
||||||
LD A,#0A
|
|
||||||
LD C,PUTCHAR
|
|
||||||
RST #10
|
|
||||||
RET
|
RET
|
||||||
|
;
|
||||||
|
.crlf: DZ "\r\n"
|
||||||
|
|
||||||
DOSERROR
|
DOSERROR: LD E,A
|
||||||
LD E,A
|
|
||||||
LD D,0
|
LD D,0
|
||||||
JP ERR_MSG
|
CALL FMESAGE
|
||||||
|
|
||||||
ERR_MSG CALL FMESAGE
|
|
||||||
CALL PRINTZ
|
CALL PRINTZ
|
||||||
CALL CRLF
|
CALL CRLF
|
||||||
CALL CRLF
|
CALL CRLF
|
||||||
SCF
|
SCF
|
||||||
RET
|
RET
|
||||||
|
|
||||||
MESSAGE LD E,A
|
MESSAGE: LD E,A
|
||||||
LD D,0
|
LD D,0
|
||||||
CALL MESAGE
|
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
|
JR PRINTZ
|
||||||
PRINTZ2 LD C,PUTCHAR
|
;RET
|
||||||
RST #10
|
|
||||||
JP PRINTZ
|
|
||||||
|
|
||||||
PRINT_ LD C,PUTCHAR
|
MESAGE: INC DE
|
||||||
RST #10
|
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
|
RET
|
||||||
|
|
||||||
UPPER CP "a"
|
FMESAGE: INC DE
|
||||||
RET C
|
LD HL,ERR0
|
||||||
CP "{"
|
LD BC,ERR0.Size
|
||||||
RET NC
|
LCPIR: XOR A
|
||||||
SUB #20
|
CPIR
|
||||||
|
RET PO
|
||||||
|
RET NZ
|
||||||
|
DEC DE
|
||||||
|
LD A,D
|
||||||
|
OR E
|
||||||
|
JR NZ,LCPIR
|
||||||
RET
|
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
|
PRINTZ: ;LD A,(HL)
|
||||||
DB "ATTRIB",CR,LF,CR,LF,0
|
;INC HL
|
||||||
DB " Usage: ATTRIB.EXE [+R|-R] [+A|-A] [+S|-S] [+H|-H][[drive:][path]filename]",CR,LF,CR,LF
|
;OR A
|
||||||
DB " Displays or changes file attributes.",CR,LF
|
;RET Z
|
||||||
DB "This command displays, sets, or removes the Read-Only, Archive, System, and",CR,LF
|
LD C,Dss.PChars
|
||||||
DB "Hidden attributes assigned to files or directories.",CR,LF,CR,LF
|
RST ToDSS
|
||||||
DB "Parameter",CR,LF,CR,LF
|
;JR PRINTZ
|
||||||
DB "[drive:][path]filename",CR,LF
|
RET
|
||||||
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
|
|
||||||
|
|
||||||
ERR0 DB #00
|
MSG0: DB #00
|
||||||
DB "Unknown error",0
|
DZ "ATTRIB\r\n\r\n"
|
||||||
DB "Invalid function",0
|
DB " Usage: ATTRIB.EXE [+R|-R] [+A|-A] [+S|-S] [+H|-H][[drive:][path]filename]\r\n\r\n"
|
||||||
DB "Invalid drive letter",0
|
DB " Displays or changes file attributes.\r\n"
|
||||||
DB "File not found",0
|
DB "This command displays, sets, or removes the Read-Only, Archive, System, and\r\n"
|
||||||
DB "Path not found",0
|
DB "Hidden attributes assigned to files or directories.\r\n\r\n"
|
||||||
DB "Invalid handle",0
|
DB "Parameter\r\n\r\n"
|
||||||
DB "Extended error 6",0
|
DB "[drive:][path]filename\r\n"
|
||||||
DB "File exist",0
|
DB " Specifies the location and name of the file(s) you want to process.\r\n\r\n"
|
||||||
DB "File read only",0
|
DB "Switches\r\n\r\n"
|
||||||
DB "Root overflow",0
|
DB "+R Sets the Read-Only file attribute.\r\n"
|
||||||
DB "No free space",0
|
DB "-R Clears the Read-Only file attribute.\r\n"
|
||||||
DB "Directory not empty",0
|
DB "+A Sets the Archive file attribute.\r\n"
|
||||||
DB "Can't delete current directory",0
|
DB "-A Clears the Archive file attribute.\r\n"
|
||||||
DB "Invalid media",0
|
DB "+S Sets the file as a System file.\r\n"
|
||||||
DB "Unknown operation",0
|
DB "-S Clears the System file attribute.\r\n"
|
||||||
DB "Directory exist",0
|
DB "+H Sets the file as a Hidden file.\r\n"
|
||||||
DB "Invalid filename",0
|
DZ "-H Clears the Hidden file attribute.\r\n"
|
||||||
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
|
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
|
; PRINT MODULE
|
||||||
|
|
||||||
DUMP LD B,2
|
DUMP: LD B,2
|
||||||
DUMPLP1 PUSH BC
|
DUMPLP1: PUSH BC
|
||||||
PUSH HL
|
PUSH HL
|
||||||
CALL CRLF
|
CALL CRLF
|
||||||
POP HL
|
POP HL
|
||||||
CALL PHEXSTR
|
CALL PHEXSTR
|
||||||
POP BC
|
POP BC
|
||||||
DJNZ DUMPLP1
|
DJNZ DUMPLP1
|
||||||
CALL CRLF
|
JP CRLF
|
||||||
RET
|
;RET
|
||||||
|
|
||||||
PHEX LD E,A
|
PHEX: LD E,A
|
||||||
RRCA
|
RRCA
|
||||||
RRCA
|
RRCA
|
||||||
RRCA
|
RRCA
|
||||||
RRCA
|
RRCA
|
||||||
AND #0F
|
AND #0F
|
||||||
ADD A,#30
|
ADD A,'0'
|
||||||
CP #3A
|
CP '9'+1
|
||||||
JR C,PHEX2
|
JR C,PHEX2
|
||||||
ADD A,7
|
ADD A,7
|
||||||
PHEX2 CALL PRINT_
|
PHEX2: LD C,Dss.PutChar
|
||||||
|
RST ToDSS
|
||||||
|
;
|
||||||
LD A,E
|
LD A,E
|
||||||
AND #0F
|
AND #0F
|
||||||
ADD A,#30
|
ADD A,'0'
|
||||||
CP #3A
|
CP '9'+1
|
||||||
JR C,PHEX3
|
JR C,PHEX3
|
||||||
ADD A,7
|
ADD A,7
|
||||||
PHEX3 CALL PRINT_
|
PHEX3: LD C,Dss.PutChar
|
||||||
|
RST ToDSS
|
||||||
RET
|
RET
|
||||||
|
|
||||||
PHEXSTR LD B,#10
|
PHEXSTR: LD B,#10
|
||||||
PHS1 PUSH BC
|
PHS1: PUSH BC
|
||||||
LD A,(HL)
|
LD A,(HL)
|
||||||
CALL PHEX
|
CALL PHEX
|
||||||
LD A,#20
|
LD A,' '
|
||||||
CALL PRINT_
|
LD C,Dss.PutChar
|
||||||
|
RST ToDSS
|
||||||
|
;
|
||||||
POP BC
|
POP BC
|
||||||
INC HL
|
INC HL
|
||||||
DJNZ PHS1
|
DJNZ PHS1
|
||||||
RET
|
RET
|
||||||
|
|
||||||
; .DATA
|
; .DATA
|
||||||
STOPMODE
|
ANYNAME: DB "*.*",0
|
||||||
DB #00
|
.Size: EQU $-ANYNAME
|
||||||
RESMASK DB #00
|
|
||||||
SETMASK DB #00
|
|
||||||
MODIFY DB #00
|
|
||||||
|
|
||||||
ANYNAME DB "*.*",0
|
; .Clear zone
|
||||||
EANYNAME
|
VARS: Variables = $
|
||||||
|
|
||||||
FSTRUCT DS 256
|
|
||||||
FILENAME EQU FSTRUCT+33
|
|
||||||
|
|
||||||
BUFFER DS 256
|
|
||||||
|
|
||||||
FILE_PRM EQU FILENAME+256
|
|
||||||
|
|
||||||
CUR_DIRECTORY EQU FILE_PRM+256
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user