home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
rtsi.com
/
2014.01.www.rtsi.com.tar
/
www.rtsi.com
/
UNIFLEX
/
UNIFLEX
/
UniFLEX_Std.Utils1.tar.Z
/
UniFLEX_Std.Utils1.tar
/
utils1
/
uplow
< prev
next >
Wrap
Text File
|
1981-09-01
|
3KB
|
172 lines
ttl Convert file to lower case
opt pag
*** Convert file to lower case.
lib sysdef
lib syserrors
sttl Main program.
pag
** Main program.
org 0
rem ldx 2,s get address of program name
stx aptr save argument address
lda #write initialize write block
sta wblk
ldx #wbuf
stx wblk+1
rem1 jsr onf open next file
beq exit if end of arguments
jsr osf open scratch file
jsr cpy copy file
jsr ren rename files
bra rem1 loop for next file
exit clra terminate
clrb
sys term
sttl Subroutines
pag
** Subroutines.
spc 2
** cpy - copy file, converting case
spc 2
cpy ldd rfd read data
sys read,rbuf,1024
bes cpyerr if error during read
std rcc save character count
beq cpyxit if end of data
clra clear "write character count"
clrb
std wcc
ldy #rbuf
ldu #wbuf
cpy1 lda 0,y+ get a character
cmpa #'A
blo cpy2 if not upper case
cmpa #'Z
bhi cpy2 if not upper case
ora #$20 convert to lower case
cpy2 sta 0,u+
ldx wcc
leax 1,x count character
stx wcc
ldx rcc
leax -1,x count character
stx rcc
bne cpy1 loop through buffer
ldx wcc set write count
stx wblk+3
beq cpy if no data
ldx #wblk dump buffer
ldd wfd
sys indx
bra cpy loop through file
cpyxit rts return
cpyerr pshs d
ldd #1
sys write,cpya,cpyal
puls d
sys term
cpya fcc 'Error during copy',$d
cpyal equ *-cpya
spc 4
** onf - open next file.
* exit eq set if no more names
spc 2
onf ldx aptr skip current file name
onf1 lda 0,x+
bne onf1
stx aptr update pointer
lda 0,x check character
beq onfxit if no more files
ldy #0
lda #open
pshs a,x,y build function block
leax 0,s
sys indx
leas 5,s
bes onf2 if error during open
std rfd save descriptor
onfxit rts return
onf2 pshs d
ldd #1
sys write,onfa,onfal
puls d
sys term
onfa fcc 'Error opening data file',$d
onfal equ *-onfa
spc 4
** osf - open scratch file.
spc 2
osf sys create,osfa,%011011
bes osf1 if error
std wfd store descriptor
rts return
osf1 pshs d
ldd #1
sys write,osfb,osfbl
puls d
sys term
osfa fcc 'scratch',0
osfb fcc 'Error opening scratch file',$d
osfbl equ *-osfb
spc 4
** ren - rename files.
spc 2
ren leas -5,s reserve function block space
ldx aptr build unlink call
stx 1,s
lda #unlink
sta 0,s
leax 0,s
sys indx unlink old file
bes ren1 if error
ldy 1,s build link block
sty 3,s
ldy #osfa store new name
sty 1,x
lda #link link new name
sta 0,x
sys indx
bes ren1 if error
lda #unlink unlink scratch file
sta 0,x
sys indx
bes ren1 if error
ldd rfd close files
sys close
ldd wfd
sys close
leas 5,s
rts return
ren1 pshs d
ldd #1
sys write,rena,renal
puls d
sys term
rena fcc 'Error renaming files',$d
renal equ *-rena
** Variable definitions.
spc 2
aptr rmb 2 argument pointer
rfd rmb 2 read file descriptor
wfd rmb 2 write file descriptor
wblk rmb 5 "write" function block
rcc rmb 2 read buffer character count
wcc rmb 2 write buffer character count
rbuf rmb 1024 read buffer
wbuf rmb 1024 write buffer
end rem