home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
rtsi.com
/
2014.01.www.rtsi.com.tar
/
www.rtsi.com
/
UNIFLEX
/
UNIFLEX
/
UniFLEX_Common.tar.Z
/
UniFLEX_Common.tar
/
install
< prev
next >
Wrap
Text File
|
1985-02-14
|
5KB
|
281 lines
opt pag,nol
lib sysdef
ttl Install Utility
opt lis
pag
info UniFLEX Install Utility
ifc &a,"tsc"
info TSC Internal Version - Not for distribution
endif
info Version 1.01; Released September 3, 1982
info Copyright (c) 1982 by
info Technical Systems Consultants, Inc.
info All rights reserved.
* Install Utility
* Equates
ifnc &b,"pennywise"
MAPdate equ $5000 Pointer to Install Date
MAPkey equ $5004 Pointer to Install key
else
MAPdate equ $4000 Pointer to Install Date
MAPkey equ $4004 Pointer to Install key
endif
*
UNIdate equ $9030 Old version date address
UNIkey equ $902B Old version key byte
inst ldd 0,s get arg count
cmpd #2
lbne synerr error?
ldd 4,s get file name
std iopn2 set up open call
sys ind,iopn open uniflex file
lbes err1 error?
std fd save file descriptor
sys read,bhdr,24 read in header record
lbes err2 error?
ldd bhdr get 1st 2 bytes
cmpd #$212 is it binary file?
lbne err3
ifnc &a,"tsc"
* Special code -- just to screw up the hacks!
sys cpint,12,catch funny here!
ldx #$5555
aslb
rora
* ldd 0,x
ldu #$100
tfr u,y
pshs y
ldy $10
puls y
sys gtid get task id
sys spint,12 send interrupt
swi
fcb 3,44,11,199,33,233,11,9,76,88,55,29,86,146,222,76
fcb 44,76,82,34,125,167,23,251,222,76,33,22,11,23,100
cont
endif
*
ldd #2 check UniFLEX type (old vs. configurable)
ldx #MAPdate
jsr findrec
bes 99f jump if error
lda 0,x check for old version UniFLEX
cmpa #$16 used to be a long branch
bne 0f isn't - assume configurable
inc OLD_UniFLEX
ldx #UNIkey go get key byte
bra 1f
0 ldx #MAPkey get pointer to key byte
ldd #2 read key address
jsr findrec
bes 99f
ldx 0,x get pointer
1 ldd #1 read 1 byte
jsr findrec
bes 99f
lda 0,x get key byte
lbne err3 already installed!
ifnc &a,"tsc"
lda #123 set key byte value
else
lda #0 set key byte value
endif
sta 0,x
ldd #1 rewrite 1 byte
jsr putrec
bes 99f
*
tst OLD_UniFLEX Old version of UniFLEX?
beq 0f no - continue
ldx #UNIdate yes - fix up address
bra 1f
0 ldd #2 read 2 bytes
ldx #MAPdate
jsr findrec
bes 99f
ldx 0,x
1 ldd #4 read 4 bytes of time
jsr findrec
bes 99f
sys time,sbuf get current time
ldd sbuf copy date info
std 0,x
ldd sbuf+2
std 2,x
ldd #4 rewrite 4 bytes
jsr putrec rewrite record
bes 99f
*
ldd fd get file desc
sys close close the file
sys update
ldd #0 set status
sys term exit
*
99 lbra err2 go report I/O error
*
* findrec
*
* Locate the data record which contains the
* address (X). Return with (X) pointing into
* the data record for the desired item.
*
findrec pshs d,x,y,u save registers
ldd fd reposition file
sys seek,0,24,0 just past binary header
bes 90f
10 ldd fd read next "record" info
sys read,rechdr,4
bes 90f
cmpd #0 end of file?
beq 90f
ldd rechdr+2 get record address
cmpd 2,s check if record contains desired address
bhi 20f jump if not
addd rechdr compute end of record
cmpd 2,s
bls 20f jump if not found
* Found appropriate record - seek to desired data
ldd 2,s compute relative position
subd rechdr+2
std isk2 set up for seek
ldd fd
sys ind,isk seek to data
bes 90f
ldd 0,s get number of characters desired
std ird2
ldd fd read data
sys ind,ird
bes 90f
ldx #buf set up return parameters
stx 2,s
bra 95f jump - successful exit
* Current record not the one we want - go to next one
20 ldd rechdr set to seek past record
std isk2
ldd fd
sys ind,isk seek past record
bes 90f
bra 10b continue
90 std 0,s set up return value
sec return - failure exit
bra 99f
95 clc return - success exit
99 puls d,x,y,u,pc return
*
* putrec
*
* Rewrite a portion of the file.
* (X) - Buffer address of changed portion
* (D) - Number of bytes altered
*
putrec
pshs d,x,y,u save registers
std iwrt2 set up for write
coma
comb
addd #1 compute -(D)
std sk_back2 set up seek call
ldd fd reposition file
sys ind,sk_back
bes 90f
ldd fd rewrite data
sys ind,iwrt
bes 90f
bra 95f exit
90 std 0,s return error code
sec return - failure
bra 99f
95 clc return - success
99 puls d,x,y,u,pc
ifnc &a,"tsc"
* more junk
fcb 11,22,65,77,55,34,99,87,23,44,56,77,123,43
fcb 44,33,65,77,21,76,87,34,23,87,65,87,123,11
catch ldd #cont
std 10,s reset pc
rti return
fcb 1,33,55,66,88,97,65,123,234,251,218,23,87,108
endif
*
* Error routines
*
synerr ldd #2 set file desc
sys write,E0,S0
ldd #$ff set status
sys term
err1 pshs d
ldd #2
sys write,E1,S1
puls d
sys term
err2 pshs d
ldd #2
sys write,E2,S2
puls d
sys term
err3 ldd #2
sys write,E3,S3
ldd #$ff set status
sys term
* messages
E0 fcc 'Command syntax error.',$d
S0 equ *-E0
E1 fcc "Can't open the specified file.",$d
S1 equ *-E1
E2 fcc 'File read error.',$d
S2 equ *-E2
E3 fcc 'Bad file!',$d
S3 equ *-E3
* storage
iopn fcb open open call
iopn2 fdb 0,2
isk fcb seek seek call
fdb 0
isk2 fdb 0,1
sk_back fcb seek seek backward in file
fdb -1
sk_back2 fdb 0,1
ird fcb read read data
fdb buf buffer address
ird2 fdb 0 buffer size
iwrt fcb write write data
fdb buf
iwrt2 fdb 0 buffer size
fd fdb 0
OLD_UniFLEX fcb 0 Old UniFLEX file being installed
rechdr fdb 0,0 Absolute Load record header
sbuf rzb 32 status buffer
bhdr rzb 32 header record buffer
buf rmb 512 space for data record
end inst