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
/
makdev
< prev
next >
Wrap
Text File
|
1981-09-01
|
2KB
|
132 lines
opt pag,nol
ttl Make a new device
pag
lib sysdef
opt lis
pag
info UniFLEX makdev
info Version 1, Released August 25, 1980
info Copyright, (C) 1980, by
info Technical Systems Consultants, Inc.
info All rights reserved.
* constants
FSCHR equ $4
FSBLK equ $2
* program starts here
org 0
makdev ldd 0,s get arg count
cmpd #5 is it 4?
lbne synerr
ldd 4,s get name pointer
std icrt2
lda [6,s] get type
anda #$5F make upper case
cmpa #'B is it block?
beq makde3
cmpa #'C is it character
lbne synerr
lda #FSCHR set character type
bra makde4
makde3 lda #FSBLK set block type
makde4 ldb #$0B set perms (rw-r--)
std icrt3 set in ind call
ldx 8,s point to major number
bsr decvt convert to binary
lbne synerr
stb icrt4 save as arg
ldx 10,s get minor number
bsr decvt convert
lbne synerr
stb icrt5 save as arg
sys ind,icrt do ind call
lbes prter
ldd #0 set status
sys term exit
pag
*
* decvt
*
* Decimal convert routine. Convert ascii string
* pointed at by x and null terminated.
* Return number in D and ne if error.
*
decvt ldd #0 set up zero
pshs d
decvt2 lda 0,x+ get character
beq decvt4 end of list?
cmpa #'0 check for valid number
blo decvt3 error?
cmpa #'9
bhi decvt3
anda #$F mask character
pshs a save digit
ldd 1,s get number
aslb multiply by 8
rola
aslb
rola
aslb
rola
addd 1,s add in original twice
addd 1,s
addb 0,s+ add in new digit
adca #0
std 0,s save result
bra decvt2 repeat
decvt3 clz set error
decvt4 puls d,pc return
pag
*
* prter
*
* Print error message.
*
prter pshs d save error
ldd #2 set file desc
sys write,erms,ERSZ output error
puls d get status
sys term exit
*
* synerr
*
* Report syntax error.
*
synerr ldd #2 set file desc
sys write,synmsg,SYSZ output message
ldd #$ff set status
sys term term task
pag
* strings and data
synmsg fcc 'Command syntax error.',$d
SYSZ equ *-synmsg
erms fcc "Can't make device.",$d
ERSZ equ *-erms
* indirect call
icrt fcb maksd
icrt2 fdb 0
icrt3 fdb 0
icrt4 fcb 0
icrt5 fcb 0
end makdev