mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-25 01:14:21 +00:00
450 lines
7.2 KiB
Plaintext
450 lines
7.2 KiB
Plaintext
|
||
; C P N E T S T S - FOR CP/NET-86
|
||
;--------------------------------------------
|
||
; CP/NET NETWORK STATUS DISPLAY PROGRAM
|
||
;
|
||
TITLE 'NETWORK STATUS DISPLAY FOR CP/NET-86'
|
||
;
|
||
; AUG-31-1983 BASE
|
||
;
|
||
; EQUATION OF FIXED ADDRESS
|
||
;
|
||
BDOS EQU 224 ;BDOS ENTRY POINT
|
||
;
|
||
; EQUATION OF BDOS FUNCTION CODE
|
||
;
|
||
FGETV EQU 12 ;GET VERSION NUMBER
|
||
FGETNS EQU 68 ;GET NETWORK STATUS
|
||
FGETCT EQU 69 ;GET CONFIGURATION TABLE ADDRESS
|
||
;
|
||
; EQUATION OF OTHER DATA
|
||
;
|
||
M EQU BYTE PTR 0[BX]
|
||
LF EQU 0AH ;LINE FEED CODE
|
||
CR EQU 0DH ;CARRIAGE RETURN CODE
|
||
ETX EQU '$' ;TERMINATION CHARACTER
|
||
;
|
||
; PROGRAM START
|
||
;
|
||
ORG 100H
|
||
;
|
||
JMP START
|
||
L_1 EQU $
|
||
DSEG
|
||
ORG OFFSET L_1
|
||
;
|
||
; DISPLAY MESSAGE AREA
|
||
;
|
||
MSG1 RS 0
|
||
DB CR,LF,'CP/NET-86 1.0 Status'
|
||
DB CR,LF,'===================='
|
||
DB CR,LF,ETX
|
||
MSG2 RS 0
|
||
DB 'Requester ID = '
|
||
DB ETX
|
||
MSG3 RS 0
|
||
DB CR,LF,'Network Status Byte = '
|
||
DB ETX
|
||
MSG4 RS 0
|
||
DB CR,LF,'Disk device status:'
|
||
DB CR,LF,ETX
|
||
MSG5 RS 0
|
||
DB ' Drive '
|
||
DB ETX
|
||
MSG6 RS 0
|
||
DB ' = Drive '
|
||
DB ETX
|
||
MSG7 RS 0
|
||
DB ' on Network Server ID = '
|
||
DB ETX
|
||
MSG8 RS 0
|
||
DB ' = LOCAL'
|
||
DB ETX
|
||
MSG9 RS 0
|
||
DB 'Console Device = '
|
||
DB ETX
|
||
MSG10 RS 0
|
||
DB 'Console #'
|
||
DB ETX
|
||
MSG11 RS 0
|
||
DB ' on Network Server ID = '
|
||
DB ETX
|
||
MSG12 RS 0
|
||
DB 'LOCAL'
|
||
DB ETX
|
||
MSG13 RS 0
|
||
DB 'List Device = '
|
||
DB ETX
|
||
MSG14 RS 0
|
||
DB 'List #'
|
||
DB ETX
|
||
MSG15 RS 0
|
||
DB ' on Network Server ID = '
|
||
DB ETX
|
||
MSG16 RS 0
|
||
DB 'LOCAL'
|
||
DB ETX
|
||
MSG17 RS 0
|
||
DB CR,LF,'CP/NET-86 has not been loaded.'
|
||
DB ETX
|
||
L_2 EQU $
|
||
CSEG
|
||
ORG OFFSET L_2
|
||
;
|
||
; START OF PROGRAM
|
||
;
|
||
START:
|
||
MOV BX,0
|
||
LAHF
|
||
ADD BX,SP
|
||
RCR SI,1
|
||
SAHF
|
||
RCL SI,1
|
||
MOV Word Ptr OLDSP,BX ;SAVE SYSTEM STACK
|
||
MOV SP,(OFFSET NEWSP)
|
||
CALL GETVER ;GET CP/M VERSION NUBMER
|
||
MOV DX,0200H
|
||
CALL ANDHD
|
||
MOV AL,0
|
||
CALL SUBHD
|
||
OR AL,BL ;CHECK CP/NET LOADED
|
||
JNZ L_3
|
||
JMP NOTNET ;CP/NET UNLOADED
|
||
L_3:
|
||
MOV CX,(OFFSET MSG1) ;TITLE DISPLAY
|
||
CALL MSGOUT
|
||
CALL GETCTA ;GET CONFIGURATION TABLE ADDRESS
|
||
MOV WORD PTR CTBADR,BX ;SAVE TABLE ADDRESS
|
||
MOV CX,(OFFSET MSG2) ;'REQUESTER ID = '
|
||
CALL MSGOUT
|
||
MOV BX,WORD PTR CTBADR ;GET CONFIG TABLE ADDRESS
|
||
LAHF
|
||
INC BX
|
||
SAHF
|
||
MOV CL,ES:M ;GET REQUESTER ID CODE
|
||
CALL DSPBCD ;DISPLAY ID NUMBER
|
||
MOV CX,(OFFSET MSG3) ;'NETWORK STATUS BYTE = '
|
||
CALL MSGOUT
|
||
CALL GETNST ;GET NETWORK STATUS
|
||
MOV CL,AL
|
||
CALL DSPBCD ;DISPLAY NETWORK STATUS BYTE
|
||
MOV CX,(OFFSET MSG4) ;'DISK DEVICE STATUS: '
|
||
CALL MSGOUT
|
||
MOV BX,(OFFSET DEVCNT)
|
||
MOV M,0
|
||
;
|
||
DRVDSP:
|
||
MOV AL,15
|
||
MOV BX,(OFFSET DEVCNT) ;SET DEVICE COUNT
|
||
CMP AL,M
|
||
JNB L_4
|
||
JMP CONDSP ;CONSOLE DEVICE DISPLAY
|
||
L_4:
|
||
MOV CX,(OFFSET MSG5) ;'DRIVE '
|
||
CALL MSGOUT
|
||
MOV AL,BYTE PTR DEVCNT ;GET DEVICE COUNT
|
||
ADD AL,'A' ;ADJUST TO A-P
|
||
MOV CL,AL
|
||
CALL CONOUT ;DISPLAY DRIVE NUMBER
|
||
MOV CL,':'
|
||
CALL CONOUT ;DISPLAY ':'
|
||
MOV BX,WORD PTR DEVCNT
|
||
MOV BH,0
|
||
MOV CX,2
|
||
SHL BX,1
|
||
ADD BX,CX
|
||
XCHG BX,DX
|
||
MOV BX,WORD PTR CTBADR ;GET CONFIG TABLE ADDRESS
|
||
ADD BX,DX
|
||
MOV BL,ES:M
|
||
MOV AL,BL
|
||
MOV BYTE PTR WCDFLG,AL
|
||
AND AL,80H
|
||
CMP AL,0
|
||
JZ DLOCAL ;DISPLAY 'LOCAL'
|
||
MOV CX,(OFFSET MSG6) ;' = DRIVE '
|
||
CALL MSGOUT
|
||
MOV AL,BYTE PTR WCDFLG
|
||
AND AL,0FH
|
||
ADD AL,'A'
|
||
MOV CL,AL
|
||
CALL CONOUT ;DISPLAY DRIVE NUMBER
|
||
MOV CL,':'
|
||
CALL CONOUT ;DISPLAY ':'
|
||
MOV CX,(OFFSET MSG7) ;' ON NETWORK SERVER ID = '
|
||
CALL MSGOUT
|
||
MOV BX,WORD PTR DEVCNT
|
||
MOV BH,0
|
||
MOV CX,2
|
||
SHL BX,1
|
||
LAHF
|
||
ADD BX,CX
|
||
SAHF
|
||
XCHG BX,DX
|
||
MOV BX,WORD PTR CTBADR ;GET CONFIG TABLE ADDRESS
|
||
LAHF
|
||
ADD BX,DX
|
||
RCR SI,1
|
||
SAHF
|
||
RCL SI,1
|
||
LAHF
|
||
INC BX
|
||
SAHF
|
||
MOV AL,ES:M
|
||
MOV CL,AL
|
||
CALL DSPBCD
|
||
JMPS DSKEND
|
||
;
|
||
; DISPLAY 'LOCAL' FOR DISK DRIVE
|
||
;
|
||
DLOCAL:
|
||
MOV CX,(OFFSET MSG8) ;' = LOCAL'
|
||
CALL MSGOUT
|
||
DSKEND:
|
||
CALL CRLF ;CR,LF
|
||
MOV BX,(OFFSET DEVCNT)
|
||
INC M
|
||
JZ L_5
|
||
JMP DRVDSP
|
||
L_5:
|
||
;
|
||
CONDSP:
|
||
MOV CX,(OFFSET MSG9) ;'CONSOLE DEVICE = '
|
||
CALL MSGOUT
|
||
MOV CX,34
|
||
MOV BX,WORD PTR CTBADR ;GET CONFIG TABLE ADDRESS
|
||
ADD BX,CX
|
||
MOV BL,ES:M ;GET CONSOLE DEVICE CONDITION FLAG
|
||
MOV AL,BL
|
||
MOV BYTE PTR WCDFLG,AL ;STORE CONDITION BYTE
|
||
AND AL,80H ;MSB CHECK
|
||
CMP AL,0
|
||
JZ CLOCAL ;DISPLAY 'LOCAL'
|
||
MOV CX,(OFFSET MSG10) ;'CONSOLE #'
|
||
CALL MSGOUT
|
||
MOV AL,BYTE PTR WCDFLG ;GET CONDITION BYTE
|
||
AND AL,0FH ;CLEAR UPPER NIBBLE
|
||
MOV CL,AL
|
||
CALL HEXDSP
|
||
MOV CX,(OFFSET MSG11) ;'ON NETWORK SERVER ID = '
|
||
CALL MSGOUT
|
||
MOV CX,34
|
||
MOV BX,WORD PTR CTBADR ;GET COFING TABLE ADDRESS
|
||
LAHF
|
||
ADD BX,CX
|
||
RCR SI,1
|
||
SAHF
|
||
RCL SI,1
|
||
LAHF
|
||
INC BX
|
||
SAHF
|
||
MOV AL,ES:M ;GET CONSOLE DEVICE (SERVER ID)
|
||
MOV CL,AL
|
||
CALL DSPBCD
|
||
JMPS LSTDSP ;LIST DEVICE DISPLAY
|
||
;
|
||
CLOCAL:
|
||
MOV CX,(OFFSET MSG12) ;'LOCAL'
|
||
CALL MSGOUT
|
||
;
|
||
LSTDSP:
|
||
CALL CRLF
|
||
MOV CX,(OFFSET MSG13) ;'LIST DEVICE = '
|
||
CALL MSGOUT
|
||
MOV CX,36
|
||
MOV BX,WORD PTR CTBADR ;GET COFIG TABLE ADDRESS
|
||
ADD BX,CX
|
||
MOV BL,ES:M ;GET LIST DEVICE CONDITION FLAG
|
||
MOV AL,BL
|
||
MOV BYTE PTR WCDFLG,AL
|
||
AND AL,80H ;MSB CHECK
|
||
CMP AL,0
|
||
JZ LLOCAL ;DISPLAY 'LOCAL'
|
||
MOV CX,(OFFSET MSG14) ;'LIST # '
|
||
CALL MSGOUT
|
||
MOV AL,BYTE PTR WCDFLG
|
||
AND AL,0FH
|
||
MOV CL,AL
|
||
CALL HEXDSP
|
||
MOV CX,(OFFSET MSG15) ;' ON NETWORK SERVER ID = '
|
||
CALL MSGOUT
|
||
MOV CX,36
|
||
MOV BX,WORD PTR CTBADR ;GET CONFIG TABLE ADDRESS
|
||
LAHF
|
||
ADD BX,CX
|
||
RCR SI,1
|
||
SAHF
|
||
RCL SI,1
|
||
LAHF
|
||
INC BX
|
||
SAHF
|
||
MOV AL,ES:M ;GET LIST DEVICE
|
||
MOV CL,AL
|
||
CALL DSPBCD ;DISPLAY LIST DEVICE NUMBER (SERVER ID)
|
||
JMPS ENDSTS
|
||
;
|
||
LLOCAL:
|
||
MOV CX,(OFFSET MSG16) ;'LOCAL'
|
||
CALL MSGOUT
|
||
JMPS ENDSTS
|
||
;
|
||
; PROGRAM ABORT FOR CP/NET UNLOADED
|
||
;
|
||
NOTNET:
|
||
MOV CX,(OFFSET MSG17) ;'CP/NET 1.2 HAS NOT BEEN LOADED.'
|
||
CALL MSGOUT
|
||
;
|
||
; RETURN TO SYSTEM
|
||
;
|
||
ENDSTS: ;END OF CPNETSTS
|
||
CALL RETSYS ;RETURN TO SYSTEM
|
||
STI
|
||
HLT ;ERROR STOP
|
||
;
|
||
; SET SYSTEM STACK
|
||
;
|
||
RETSYS:
|
||
MOV BX,WORD PTR OLDSP ;GET SYSTEM STACK
|
||
MOV SP,BX
|
||
IRET ;RETURN TO SYSTEM
|
||
;
|
||
; CONSOLE OUT
|
||
;
|
||
CONOUT:
|
||
MOV DL,CL
|
||
MOV CL,2
|
||
INT BDOS
|
||
RET
|
||
;
|
||
; MESSAGE STRING OUT
|
||
; INPUT
|
||
; BC:TEXT ADDRESS
|
||
;
|
||
MSGOUT:
|
||
MOV DH,CH ;SET MESSAGE TEXT ADDRESS
|
||
MOV DL,CL
|
||
MOV CL,9
|
||
INT BDOS
|
||
RET
|
||
;
|
||
; GET CP/M VERSION NUMBER
|
||
; OUTPUT
|
||
; H:CP/M OR MP/M
|
||
; L:VERSION NUMBER
|
||
;
|
||
GETVER:
|
||
MOV DX,0
|
||
MOV CL,FGETV
|
||
INT BDOS
|
||
RET
|
||
;
|
||
; GET NETWORK STATUS
|
||
; OUTPUT
|
||
; A:NET WORK STATUS BYTE
|
||
;
|
||
GETNST:
|
||
MOV DX,0
|
||
MOV CL,FGETNS
|
||
INT BDOS
|
||
RET
|
||
;
|
||
; GET REQUESTER CONFIGURATION TABLE ADDRESS
|
||
; OUTPUT
|
||
; HL:TABLE ADDRESS
|
||
;
|
||
GETCTA:
|
||
MOV DX,0
|
||
MOV CL,FGETCT
|
||
INT BDOS
|
||
RET
|
||
;
|
||
; PUT CR,LF TO CONSOLE
|
||
;
|
||
CRLF:
|
||
MOV CL,CR ;SET CR CODE
|
||
CALL CONOUT
|
||
MOV CL,LF ;SET LF CODE
|
||
CALL CONOUT
|
||
RET
|
||
;
|
||
; DISPLAY HEXA DECIMAL
|
||
;
|
||
HEXDSP:
|
||
MOV BX,(OFFSET WHEXVA)
|
||
MOV M,CL
|
||
MOV AL,9
|
||
MOV BX,(OFFSET WHEXVA)
|
||
CMP AL,M
|
||
JNB HEXOVR
|
||
MOV AL,BYTE PTR WHEXVA
|
||
ADD AL,'A' ;ADJUST TO ASCII CODE
|
||
SUB AL,10
|
||
MOV CL,AL
|
||
CALL CONOUT
|
||
RET
|
||
;
|
||
HEXOVR:
|
||
MOV AL,BYTE PTR WHEXVA
|
||
ADD AL,'0' ;ADJUST TO ASCII CODE
|
||
MOV CL,AL
|
||
CALL CONOUT
|
||
RET
|
||
;
|
||
; DISPLAY BCD VALUE
|
||
;
|
||
DSPBCD:
|
||
MOV BX,(OFFSET WACONV)
|
||
MOV M,CL
|
||
MOV AL,BYTE PTR WACONV
|
||
AND AL,0F8H
|
||
RCR AL,1
|
||
RCR AL,1
|
||
RCR AL,1
|
||
RCR AL,1
|
||
MOV CL,AL
|
||
CALL HEXDSP
|
||
MOV AL,BYTE PTR WACONV
|
||
AND AL,00FH
|
||
MOV CL,AL
|
||
CALL HEXDSP
|
||
MOV CL,48H
|
||
CALL CONOUT
|
||
RET
|
||
;
|
||
ANDHD:
|
||
MOV AL,DL
|
||
AND AL,BL
|
||
MOV BL,AL
|
||
MOV AL,DH
|
||
AND AL,BH
|
||
MOV BH,AL
|
||
RET
|
||
;
|
||
SUBHD:
|
||
MOV DL,AL
|
||
MOV DH,0
|
||
MOV AL,DL
|
||
SUB AL,BL
|
||
MOV BL,AL
|
||
MOV AL,DH
|
||
SBB AL,BH
|
||
MOV BH,AL
|
||
RET
|
||
L_6 EQU $
|
||
DSEG
|
||
ORG OFFSET L_6
|
||
;
|
||
; WORKING STRAGE AREA
|
||
;
|
||
RS 40 ;LOCAL STACK AREA
|
||
NEWSP RS 0 ;LOCAL STACK POINT
|
||
OLDSP RS 2 ;SYSTEM STACK SAVE
|
||
OUTCHR RS 1 ;OUTPUT CHARACTER
|
||
WHEXVA RS 1 ;WORK FOR HEX CONVERT
|
||
WACONV RS 1 ;FOR ASCII CONVERT
|
||
DEVCNT RS 1 ;DEVICE COUNTER
|
||
WCDFLG RS 1 ;CONDITION BYTE SAVE AREA
|
||
CTBADR RS 2 ;COFIGURATION TABLE ADDRESS SAVE AREA
|
||
;
|
||
END
|
||
|