Files
Digital-Research-Source-Code/CP-NET/CPNET-86 SOURCE/LOGIN.A86
Sepp J Morris 31738079c4 Upload
Digital Research
2020-11-06 18:50:37 +01:00

179 lines
3.1 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

TITLE 'LOGIN TRANSIENT PROGRAM FOR CP/NET-86'
;***************************************************************
;***************************************************************
;** **
;** L O G I N T R A N S I E N T P R O G R A M **
;** F O R C P / N E T - 8 6 **
;** **
;***************************************************************
;***************************************************************
;
; EQUATION OF FIXED DATA
;
M EQU BYTE PTR 0[BX]
;
BDOS EQU 224 ;BDOS ENTRY POINT
BUFF EQU 0080H
;
; EQUATION OF BDOS FUNCTION CODE
;
PRINT EQU 9
VERSION EQU 12
LOGIN EQU 64
CFGTBL EQU 69
ACTIVE EQU 00010000B
;
;
CSEG
ORG 100H
;
START:
MOV BX,0
ADD BX,SP
MOV SP,(OFFSET CCPSTACK)+2
PUSH BX ; SAVE CCP STACK POINTER
MOV CL,VERSION
INT BDOS ; GET VERSION NUMBER
MOV AL,BH
AND AL,00000010B
JNZ L_1
JMP VERSIONERR ; JUMP IF CP/NET NOT LOADED
L_1:
MOV DX,(OFFSET PASSWORDMSG)
MOV BX,BUFF
MOV AL,M ; GET # CHARS IN THE COMMAND TAIL
OR AL,AL
JNZ L_2
JMP DOLOGIN ; DEFAULT LOGIN IF EMPTY COMMAND TAIL
L_2:
PUSH DX ; SAVE LOGIN MSG ADDRESS
MOV CL,AL ; A = # CHARS IN COMMAND TAIL
XOR AL,AL
MOV CH,AL ; B WILL ACCUMULATE MASTER ID
SCANBLNKS:
INC BX
MOV AL,M
CMP AL,' '
JNZ PASTBLNKS ; SKIP PAST LEADING BLANKS
DEC CL
JNZ SCANBLNKS
JMPS PRELOGIN ; JUMP IF COMMAND TAIL EXHAUSTED
;
PASTBLNKS:
CMP AL,'['
JZ SCANMSTRID
POP DX ; DISCARD OLD LOGIN MSG ADR
MOV DX,(OFFSET BLANKMSG)
PUSH DX ; PUSH NEW LOGIN MSG ADR
SCANLFTBRKT:
MOV AL,M
CMP AL,'['
JZ SCANMSTRID
LAHF
INC DX
SAHF
MOV SI,DX ;UPDATE THE PASSWORD
MOV [SI],AL
LAHF
INC BX
SAHF
DEC CL
JNZ SCANLFTBRKT
JMPS PRELOGIN
;
SCANMSTRID:
LAHF
INC BX
SAHF
DEC CL
JZ LOGINERR
MOV AL,M
CMP AL,']'
JZ PRELOGIN
SUB AL,'0'
CMP AL,10
JB UPDATEID
ADD AL,('0'-'A'+10) AND 0FFH
CMP AL,16
JNB LOGINERR
UPDATEID:
LAHF
XCHG AL,AH
PUSH AX
MOV AL,CH
ADD AL,AL
ADD AL,AL
ADD AL,AL
ADD AL,AL
MOV CH,AL ; ACCUM * 16
POP AX
XCHG AL,AH
ADD AL,CH
MOV CH,AL
JMPS SCANMSTRID
PRELOGIN:
MOV AL,CH
POP DX
MOV SI,DX
MOV [SI],AL
DOLOGIN:
MOV CL,LOGIN
INT BDOS
INC AL
JNZ LOGINOK
MOV DX,(OFFSET LOGINFAILEDMSG)
JMPS PRINTMSG
;
VERSIONERR:
MOV DX,(OFFSET VERSIONERRMSG)
JMPS PRINTMSG
;
LOGINERR:
MOV DX,(OFFSET LOGINERRMSG)
PRINTMSG:
MOV CL,PRINT
INT BDOS
JMPS EXIT
;
LOGINOK:
MOV CL,CFGTBL
INT BDOS ; GET CONFIGURATION TABLE ADDRESS
MOV AL,ES:M
OR AL,ACTIVE ; SET ACTIVE BIT TRUE
MOV ES:M,AL
EXIT:
POP BX
MOV SP,BX ; RESTORE CCP STACK POINTER
IRET
;
;
;
L_3 EQU $
DSEG
ORG OFFSET L_3
;
; LOCAL DATA SEGMENT
;
PASSWORDMSG RS 0
DB 00H ; MASTER ID #
DB 'PASSWORD' ; PASSWORD
VERSIONERRMSG RS 0
DB 'CP/NET-86 is not loaded.'
DB '$'
LOGINERRMSG RS 0
DB 'Illegal LOGIN Command.'
DB '$'
LOGINFAILEDMSG RS 0
DB 'LOGIN Failed.'
DB '$'
LCLSTACK RS 0
DW 0C7C7H,0C7C7H,0C7C7H,0C7C7H,0C7C7H
DW 0C7C7H,0C7C7H,0C7C7H,0C7C7H,0C7C7H
CCPSTACK RS 0
DW (OFFSET $)-(OFFSET $)
BLANKMSG RS 0
DB 00H ; MASTER ID #
DB ' ' ; PASSWORD
END