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
/
ZSYS
/
SIMTEL20
/
ZCPR3
/
WHEEL.MAC
< prev
next >
Wrap
Text File
|
2000-06-30
|
4KB
|
218 lines
;
; PROGRAM: WHEEL
; VERSION: 3.0
; AUTHOR: RICHARD CONN
; DATE: 8 MAR 84
; PREVIOUS VERSIONS: 1.1 (24 JAN 83), 1.0 (14 Jan 83)
;
vers equ 30
;
; WHEEL is used to set and clear the WHEEL byte. It is invoked by
; one of the following forms:
;
; WHEEL // <-- Print Help
; WHEEL <-- Print Wheel Status
; WHEEL password SET <-- Set Wheel Byte
; WHEEL password <-- Set Wheel Byte
; WHEEL password RESET <-- Reset (Clear) Wheel Byte
; WHEEL /S or WHEEL /R <-- Set or Reset Wheel Byte
; (Type Password Later Sans Echo)
;
;
; CP/M Constants
;
cpm equ 0
z3env SET 0f400h ; Environment Descriptor
bdose equ cpm+5
pass equ cpm+5dh ; 1st FCB is password
cmnd equ cpm+6dh ; 2nd FCB is command
tbuff equ cpm+80h
ctrlz equ 'Z'-'@'
cr equ 0dh
lf equ 0ah
;
; SYSLIB Routines
;
ext print,caps,codend,inline,z3init,getwhl,putwhl,qprint
;
; Environment Definition
;
if z3env ne 0
;
; External ZCPR3 Environment Descriptor
;
jmp start
db 'Z3ENV' ;This is a ZCPR3 Utility
db 1 ;External Environment Descriptor
z3eadr:
dw z3env
start:
lhld z3eadr ;pt to ZCPR3 environment
;
else
;
; Internal ZCPR3 Environment Descriptor
;
MACLIB Z3BASE.LIB
MACLIB SYSENV.LIB
z3eadr:
jmp start
SYSENV
start:
lxi h,z3eadr ;pt to ZCPR3 environment
endif
;
; Start of Program -- Initialize ZCPR3 Environment
;
call z3init ;initialize the ZCPR3 Env and the VLIB Env
jmp start0
;
; ** Wheel Password **
;
db ctrlz ;prevents reading via TYPE
ppass:
db 'SYSTEM ' ;Wheel Password (8 Chars)
;
; Print Banner
;
start0:
call qprint
db 'WHEEL, Version '
db vers/10+'0','.',(vers mod 10)+'0',cr,lf,0
;
; Begin Processing
;
lda pass ; get password
cpi ' ' ; help?
jz pwhlstat
cpi '/'
jnz start1
lda pass+1 ; get option
sta cmnd ; store command
cpi 'R' ; reset?
jz inpass
cpi 'S' ; Set?
jz inpass
;
; Print Help Message
;
help:
call print
db cr,lf,' WHEEL is used to Set and Reset (Clear) the Wheel'
db cr,lf,'Byte in order to enable (Wheel Byte is Set) or disable'
db cr,lf,'(Wheel Byte is Reset) certain commands within ZCPR2.'
db cr,lf
db cr,lf,'The forms of the WHEEL command are:'
db cr,lf,' WHEEL // <-- Print Help'
db cr,lf,' WHEEL <-- Print Wheel Byte Setting'
db cr,lf,' WHEEL password SET <-- Set Wheel Byte'
db cr,lf,' WHEEL password <-- Set Wheel Byte'
db cr,lf,' WHEEL password RESET <-- Reset (Clear) Wheel Byte'
db cr,lf,' WHEEL /S or WHEEL /R <-- Set or Reset Wheel Byte'
db cr,lf,' but allow user to type'
db ' in password'
db cr,lf,' without echo'
db cr,lf,0
ret
;
; Print Wheel Byte Setting
;
pwhlstat:
call print
db ' Wheel Byte is ',0
call getwhl ;get wheel byte
pronoff:
ora a ;0=off
jz proff
call print
db 'ON',0
ret
proff:
call print
db 'OFF',0
ret
;
; Input Password without echo and then process it
;
inpass:
call print
db ' Wheel Password? ',0
call codend ; pt to scratch area
xra a ; no echo
call inline ; get line from user
push h ; save ptr to first char
mvi b,8 ; 8 chars
inp1:
mov a,m ; capitalize input
call caps
mov m,a
inx h ; pt to next
ora a ; done?
jz inp2
dcr b ;count down
jnz inp1
jmp inp4
inp2:
dcx h ;pt to null
mvi a,' ' ;space fill
inp3:
mov m,a ;store space
inx h
dcr b
jnz inp3
inp4:
pop h ; get ptr to first char
jmp start2
;
; Process Password
;
start1:
lxi h,pass ; pt to user password
start2:
lxi d,ppass ; pt to WHEEL password
mvi b,8 ; 8 chars max
passlp:
ldax d ; get WHEEL password
cmp m ; match?
jnz nopass
inx h ; pt to next
inx d
dcr b ; count down
jnz passlp
;
; Password Approved
;
lda cmnd ; check command
cpi 'R' ; reset?
jz reset
;
; Set Wheel Byte
;
mvi a,0ffh ;set wheel byte
call putwhl
jmp pwhlstat ;print status
;
; Reset Wheel Byte
;
reset:
xra a ;reset wheel byte
call putwhl
jmp pwhlstat ;print status
;
; Password Not Approved
;
nopass:
call print
db cr,lf,' Invalid Password',0
ret
end