;  AUTHOR:- STEPHEN MENDES                                FILE "SCRNDISP.ASM"
;
;    void usrins (void)
;    void mainscr (void)
;    void paswscr (void)
;    void lastscr (void)
;
;  DRAWS 4 DISPLAY SCREENS.

CLRSCR		MACRO			;CLEAR THE SCREEN
		MOV	AX,0600H	;SCROLL(06) & FULL SCREEN(00)
		XOR	CX,CX		;UPPER LEFT ROW - COLUMN
		MOV	DX,184FH	;LOWER RIGHT ROW - COLUMN
		INT	10H		;CLEAR THE SCREEN
		ENDM
		.MODEL SMALL
		.DATA
INSCRL1		DB	'WELCOME TO THE SECRET NOTEBOOK$'
INSCRL2		DB	'You need to enter a password to protect your data.$'
INSCRL3		DB	'-  Your password must not be less than 4 characters.$'
INSCRL4		DB	'-  Random characters with mixed upper & lower case$'
INSCRL5		DB	'make the most secure passwords. But they are the$'
INSCRL6		DB	'most difficult to remember.$'
INSCRL7		DB	'-  If you forget your password you will lose all your$'
INSCRL8		DB	'data because you will have to delete SECRET.DAT$'
INSCRL9		DB	'and run the program to create it again.$'
MNSCRL1		DB	'THE$'
MNSCRL1A	DB	'NOTEBOOK$'
MNSCRL2		DB	'PAGE   1$'
MNSCRL3		DB	79 DUP('-'),'$'
MNSCRL4		DB	'F1 - CHANGE PASSWORD         PAGE UP   - PREVIOUS PAGE$'
MNSCRL5		DB	'F2 - SAVE & EXIT             PAGE DOWN - NEXT PAGE$'
LASCRL1		DB	'A C C E S S   D E N I E D$'
		.CODE
		PUBLIC	_usrins, _mainscr, _paswscr, _lastscr
		EXTRN	_writeln:near
_usrins		PROC	NEAR
		MOV	BH,3		;COLOR OF TEXT - CYAN ON BLACK
		CLRSCR
		LEA	BX,INSCRL1
		MOV	DX,0219H
		CALL	_writeln
		LEA	BX,INSCRL2
		MOV	DX,050FH
		CALL	_writeln
		LEA	BX,INSCRL3
		MOV	DX,080DH
		CALL	_writeln
		LEA	BX,INSCRL4
		MOV	DX,0A0DH
		CALL	_writeln
		LEA	BX,INSCRL5
		MOV	DX,0B10H
		CALL	_writeln
		LEA	BX,INSCRL6
		MOV	DX,0C10H
		CALL	_writeln
		LEA	BX,INSCRL7
		MOV	DX,0E0DH
		CALL	_writeln
		LEA	BX,INSCRL8
		MOV	DX,0F10H
		CALL	_writeln
		LEA	BX,INSCRL9
		MOV	DX,1010H
		CALL	_writeln
		RET
_usrins		ENDP
_mainscr	PROC	NEAR
		MOV	BH,4		;COLOR OF TEXT - RED
		CLRSCR
		LEA	BX,MNSCRL1
		MOV	DX,011BH
		CALL	_writeln
		MOV	DX,0120H
		CALL	RBOWHEAD
		LEA	BX,MNSCRL1A
		MOV	DX,012DH
		CALL	_writeln
		LEA	BX,MNSCRL2
		MOV	DX,0224H
		CALL	_writeln
		LEA	BX,MNSCRL3
		MOV	DX,0300H
		CALL	_writeln
		LEA	BX,MNSCRL3
		MOV	DX,1400H
		CALL	_writeln
		LEA	BX,MNSCRL4
		MOV	DX,160DH
		CALL	_writeln
		LEA	BX,MNSCRL5
		MOV	DX,170DH
		CALL	_writeln
		RET
_mainscr	ENDP

_paswscr	PROC	NEAR
		MOV	BH,4		;COLOR OF TEXT - RED
		CLRSCR
		LEA	BX,MNSCRL1
		MOV	DX,011BH
		CALL	_writeln
		MOV	DX,0120H
		CALL	RBOWHEAD
		LEA	BX,MNSCRL1A
		MOV	DX,012DH
		CALL	_writeln
		RET
_paswscr	ENDP

_lastscr	PROC	NEAR
		MOV	BH,8EH		;COLOR OF TEXT - BLINKING YELLOW
		CLRSCR
		LEA	BX,LASCRL1
		MOV	DX,0C1AH
		CALL	_writeln
; THE FOLLOWING CODE TURNS OFF THE CURSOR DURING PASSWORD STATUS DISPLAY

		MOV	DX,3D4H		;6845 CRT CONTROLLER PORT ADDR REGISTER
		MOV	AL,10		;REQUEST ACCESS TO REGISTER 10
		OUT	DX,AL		;THIS IS CURSOR IMAGE START REGISTER
		MOV	DX,3D5H		;6845 CONNECTS REQ REG TO THIS I/O PORT
		MOV	AL,20H		;SET BIT 5 TO TURN OFF THE CURSOR IMAGE
		OUT	DX,AL		;SEND IT TO THE PORT

; NOTE: BITS 0-4 SPECIFY THE STARTING SCAN LINE, MUST BE SET APPROPRIATE FOR
;       MONITOR TYPE WHEN CURSOR IS TURNED BACK ON
		MOV	CX,0030H
	INNL:	MOV	DX,CX
		MOV	CX,0FFFFH
	INNNL:	LOOP	INNNL
		MOV	CX,DX
		LOOP	INNL
; THIS CODE TURNS BACK ON THE CURSOR IMAGE AND SETS STARTING SCAN LINE
; TO DEFAULT FOR VGA SYSTEMS

		MOV	DX,3D4H		;ADDRESS SELECTION PORT
		MOV	AL,10		;REQUEST REGISTER 10
		OUT	DX,AL		;SEND REQUEST
		MOV	DX,3D5H		;6845 DATA I/O PORT
		MOV	AL,0DH		;RESET BIT 5 AND SET STARTING SCAN LINE
		OUT	DX,AL		;SEND IT TO THE PORT

		MOV	BH,7		;COLOR OF TEXT - WHITE
		CLRSCR
		MOV	AH,2
		XOR	BH,BH
		XOR	DX,DX
		INT	10H
		RET
_lastscr	ENDP

RBOWHEAD	PROC	NEAR
		MOV	CX,1
		XOR	BH,BH

		MOV	AH,2
		INT	10H
		ADD	DX,2
		MOV	BL,0DH
		MOV	AL,'S'
		MOV	AH,9
		INT	10H

		MOV	AH,2
		INT	10H
		ADD	DX,2
		MOV	BL,0CH
		MOV	AL,'E'
		MOV	AH,9
		INT	10H

		MOV	AH,2
		INT	10H
		ADD	DX,2
		MOV	BL,0EH
		MOV	AL,'C'
		MOV	AH,9
		INT	10H

		MOV	AH,2
		INT	10H
		ADD	DX,2
		MOV	BL,0AH
		MOV	AL,'R'
		MOV	AH,9
		INT	10H

		MOV	AH,2
		INT	10H
		ADD	DX,2
		MOV	BL,0BH
		MOV	AL,'E'
		MOV	AH,9
		INT	10H

		MOV	AH,2
		INT	10H
		ADD	DX,2
		MOV	BL,09H
		MOV	AL,'T'
		MOV	AH,9
		INT	10H
		RET
RBOWHEAD	ENDP
		END
