home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
enterprs
/
c128
/
text
/
examples.arc
/
REN.A
< prev
next >
Wrap
Text File
|
1989-12-01
|
4KB
|
99 lines
;ren.asm
;=========================================
; Command: ren d:oldfilename newfilename
;=========================================
fnadr = $00bb
int00 = $1700 ; set default drive. letter in .a
int01 = $1701 ; get default drive letter into .a
int02 = $1702 ; get default drive (.a) unit (.x)
int12 = $1712 ; move parameter .x to (fnadr),y
int0e = $170e ; close all files and exit to READY.
listen = $ffb1
second = $ff93
ciout = $ffa8
unlsn = $ffae
primm = $ff7d
star = $0b00
.wor star
* = star
jmp ren
dw Date
ren ldx #<old ; get newname
ldy #>old
lda #1
jsr getit
ldx #<new ; get d:oldname
ldy #>new
lda #2
jsr getit
jsr int01 ; save default drive
sta savdef
ldx old+1 ; check for d:
cpx #":"
bne ren0 ; not there...use default drive letter
lda old
jsr int00 ; set new default drive letter temporarily
ren0 jsr int02 ; get default drive,unit
pha ; save drive
txa ; device
jsr listen ; send r0:newname=oldname
lda #$6f
jsr second
lda #"r"
jsr ciout
pla
jsr ciout
lda #":"
jsr ciout
ldy #0
ren1 lda new,y
beq ren2
jsr ciout
iny
bne ren1
ren2 lda #"="
jsr ciout
lda old+1
cmp #":"
beq ren3
ldy #0
.byt $2c
ren3 ldy #2
ren4 lda old,y
beq ren5
jsr ciout
iny
bne ren4
ren5 jsr unlsn
lda savdef ; restore default drive
jsr int00
jmp int0e ; and exit to READY.
getit stx fnadr
sty fnadr+1
tax
ldy #0
jsr int12
bcs prterr ; parameter wasn't there
cpy #20
bcs prterr ; parameter was too long
lda #0 ; make it asciiz
sta (fnadr),y
rts ; ok return
prterr jsr primm
.asc 13,"syntax: ren [d:]oldfilename newfilename",13,0
jmp int0e
savdef *=*+1
old *=*+20
new *=*+20
.end