home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
CPM
/
GENASM
/
U.ASM
< prev
next >
Wrap
Assembly Source File
|
2000-06-30
|
3KB
|
132 lines
; U.COM - VERSION 1.0
; BY ROBERT FISHER
; November 27, 1981
;
;Select drive and user area with one command.
;
;Usage:
; U B4
;will select drive B:, user area 4.
;
;The drive may be any valid drive letter in upper or lower case,
;and the user area may be any user area in the range 0-31.
;(But see the customization area below.)
;Either may be omitted. If both are omitted, a usage message is printed.
;
;To be useful, this program must be accessable from all drives and
;all user areas.
;This is no problem if you are using one of the modified CCP's, but
;requires some other mechanism for a standare CCP.
;
;Check the public programs: DUPUSR21.ASM and CCPPATCH.ASM or the
;various versions of CCPZ.ASM
;
;One further note. Your BIOS must be correctly written for this
;program to work. Specifically, it must not reset the user area
;to zero on warm boot. (The California Computer System BIOS
;fails in this respect.)
;
org 100h
fcb equ 5ch
bdos equ 5
cdrive equ 04
warmbt equ 0
;
prstr equ 9
;
tab equ 9
lf equ 0ah
cr equ 0dh
;
;USER customization parameters
maxuser equ 15 ;maximum user area (may be in range 0-31)
numdrvs equ 4 ;number of drives in your system
;
;set selected drive
lxi h,fcb+1
mov a,m
cpi ' '
jz usage ;no parameters
cpi '9'+1
jc digit ;no drive was specified
ani 5fh ;make it upper case
sui 'A'
jc usage ;illegal character
cpi numdrvs
jnc usage ;too high a drive specified
mov e,a
lda cdrive ;put new drive into lower nibble of cdrive
ani 0f0h ;zero out old drive number
ora e ;slip the new drive in
sta cdrive ;this sets the drive
;
;set selected user area
inx h
mov a,m
cpi ' '
jz warmbt ;no user area specified
digit sui '0'
jc usage ;non-digit
cpi 10
jnc usage ;non-digit
mov e,a ;move it to e to preserve it
inx h
mov a,m
cpi ' '
jz setusr ;one-digit user
sui '0'
jc usage ;non-digit
cpi 10
jnc usage ;non-digit
mov c,a
xra a ;clear the carry bit
mov a,e ;get first digit back
ral ;x2
mov e,a
ral ;x4
ral ;x8
add e ;x10
add c ;add in second digit
mov e,a
;
setusr: mov a,e ;get it back if it's not there already
cpi maxuser+1
jnc usage
cmc ;clear the carry bit
;
;User area goes in upper nibble of cdrive.
ral
ral
ral
ral
mov c,a
lda cdrive
ani 0fh ;zero out old user number
ora c ;slip in new user number
sta cdrive
;
;
jmp warmbt
;Print USAGE message if no parameters provided, or if parameters
;are illegal.
usage: lxi d,message
mvi c,prstr
call bdos
ret
message db 'Drive and user selector: U.COM - Version 1.0',cr,lf
db tab,tab,tab,tab,'by Robert Fisher - November 27, 1981',cr,lf,lf
db 'Sample usage:',cr,lf,lf
db tab,tab,'U B4',cr,lf,lf
db 'selects drive B, user area 4.',cr,lf,lf
db tab,tab,'U 13',cr,lf,lf
db 'selects user area 13 of the current drive.',cr,lf,lf
db tab,tab,'U B',cr,lf,lf
db 'selects drive B, current user area.',cr,lf,lf
db 'Lower case is acceptable for the drive letter.',cr,lf
db 'The drive or the user area may be omitted.',cr,lf,lf
db '$'
end