home *** CD-ROM | disk | FTP | other *** search
- ;
- ; USER.ASM vers. 1.2
- ; by Ron Fowler
- ; Westland, Mich.
- ;
- ;
- ; revised 8/7/80
- ;
- ; (FOR USE WITH CP/M-2.x ONLY)
- ; This program is used to restrict access
- ; to the higher user areas while leaving
- ; the lower user areas public. The high-
- ; est available public user area is de-
- ; fined by "MAXUSER".
- ;
- ;08/07/80 CORRECTED TO MAINTAIN REQUESTED
- ; USER NUMBER EVEN AFTER WARM BOOT.
- ; AND TO ALLOW NUMBERS HIGHER THAN
- ; 9. By Keith Petersen, W8SDZ.
- ;
- ;08/07/80 Replaced RAL instructions with RLC to
- ; eliminate drive select error caused by
- ; rotating carry bit into accumulator.
- ; By Dave Hardy and Bruce Levison
- ;
- ;08/08/80 Modified for improved response time
- ; by calling the setusr function after
- ; modifying the drive byte at loc 4,
- ; bypassing the need to warm boot
- ; By Ron Fowler
- ;
- ;
- DFCB EQU 5CH
- MAXUSER EQU 3 ;for example
- SETUSR EQU 32 ;set user in bdos
- DRIVE EQU 4
- BDOS EQU 5
- ;
- ORG 100H
- ;
- LXI H,DFCB+1 ;POINT TO ORIGINATING USER # IN CMD LINE
- MVI E,0
- NUMLUP:
- MOV A,M ;GET CHARACTER
- INX H ;BUMP CHAR POINTER
- SUI '0' ;REMOVE ASCII BIAS
- JC NUMDONE
- CPI 10 ;CHECK IF PAST 9
- JNC NUMDONE ;ANY INVALID CHAR ENDS NUMBER
- MOV D,A
- MOV A,E ;GET ACCUMULATED NUMBER
- ADD A ;TIMES TWO
- ADD A ;TIMES FOUR
- ADD E ;TIMES FIVE
- ADD A ;TIMES TEN
- ADD D ;PLUS NEW DIGIT
- MOV E,A ;SAVE ACCUMULATION
- JMP NUMLUP ;LOOP BACK FOR NEXT CHAR
- ;
- NUMDONE:
- MOV A,E ;GET ACCUMULATED NUMBER
- ORA A ;BELOW ZERO OR ABOVE 127?
- JM HUH ;INVALID CHARACTER ENTERED
- CPI MAXUSER+1
- JNC HUH ;RESTRICT ACCESS
- RLC ! RLC ! RLC ! RLC ;MOVE TO UPPER NIBBLE
- MOV B,A ;SAVE REQUESTED USER NUMBER
- LDA DRIVE ;GET CURRENT USER/DRIVE
- ANI 0FH ;STRIP OFF OLD USER NUMBER
- ORA B ;GET NEW USER NUMBER
- STA DRIVE ;SET NEW USER NUMBER
- MVI C,SETUSR ;SET THE USER FOR NOW
- JMP BDOS ;SET IT AND EXIT
- ;
- HUH: LXI D,MSG
- MVI C,9 ;PRINT STRING FUNCTION
- JMP BDOS ;PRINT & EXIT
- ;
- MSG: DB 'Only USER 0-'
- DB MAXUSER+30H
- DB ' available.$'
- ;
- END
-