home *** CD-ROM | disk | FTP | other *** search
- ; 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
-