mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-24 08:54:17 +00:00
1815 lines
34 KiB
Plaintext
1815 lines
34 KiB
Plaintext
; NETWORK DISK OPERATING SYSTEM FOR CP/NET-86
|
||
;
|
||
; 1983.9.1. VER.1.00
|
||
;
|
||
TITLE 'NETWORK DISK OPERATING SYSTEM FOR CP/NET-86 SLAVE'
|
||
;
|
||
;
|
||
BASE EQU 100H ;FOR RELOCATION
|
||
;
|
||
; EQUATIONS OF DATA
|
||
;
|
||
LF EQU 0AH ;LINE FEED
|
||
CR EQU 0DH ;CARRIAGE RETURN
|
||
EOF EQU 0FFH ;0FFH IS END OF FILE
|
||
;
|
||
FSEND EQU 0 ;SEND FORMAT CODE
|
||
FRECV EQU 1 ;RECEIVE FORMAT CODE
|
||
;
|
||
BDOS EQU 224 ;BDOS FUNCTION CALL INTERRUPT
|
||
VBDOS EQU BDOS*4 ;BDOS VECTOR POINT
|
||
BIOSTP EQU 2500H ;BIOS TOP OFFSET
|
||
COMBUF EQU 9 ;BIAS TO COMMENT BUFFER OF CCP
|
||
BDCUDK EQU 5 ;BIAS TO BDOS CURRENT DISK
|
||
BDCUDR EQU 23 ;BIAS TO BODS CURRENT DRIVE
|
||
;
|
||
SCTLNG EQU 128 ;ONE SECTOR LENGTH
|
||
;
|
||
NOFUNC EQU 8000H ;NO FUNCTION CODE IN CP/NET
|
||
;
|
||
; EQUATIONS OF DOS FUNCTION
|
||
;
|
||
CRESET EQU 0 ;RESET SYSTEM
|
||
CCNDIN EQU 3 ;CONSOLE INPUT WITH DEVICE CODE
|
||
CCNDOT EQU 4 ;CONSOLE OUTPUT WITH DEVICE CODE
|
||
CBUFPR EQU 9 ;BUFFER PRINT
|
||
CRDCBF EQU 10 ;READ CONSOLE BUFFER
|
||
CCONST EQU 11 ;GET CONSOLE STATUS
|
||
CGETVR EQU 12 ;GET VERSION NUMBER
|
||
CRSDSK EQU 13 ;RESET DISK
|
||
CSELDK EQU 14 ;SELECT DISK
|
||
COPEN EQU 15 ;OPEN FILE
|
||
CCLOSE EQU 16 ;CLOSE FILE
|
||
CSRFST EQU 17 ;SEARCH FIRST
|
||
CSRNXT EQU 18 ;SEARCH NEXT DIRECTORY
|
||
CREAD EQU 20 ;READ FILE
|
||
CSTDMA EQU 26 ;SET DMA ADDRESS
|
||
CGTALC EQU 27 ;GET ALLOCATION VECTOR ADDRESS
|
||
CGTDPA EQU 31 ;GET DISK PARAMETER BLOCK ADDRESS
|
||
CSTUSC EQU 32 ;SET USER CODE
|
||
CRSDSN EQU 37 ;RESET DISK BY DISK VERCTOR
|
||
CACCES EQU 38 ;ACCESS DRIVE
|
||
CFREE EQU 39 ;FREE DRIVE
|
||
CGTSYA EQU 49 ;GET SYSTEM ADDRESS
|
||
;
|
||
CLOGIN EQU 64 ;LOGIN
|
||
CLOGOF EQU 65 ;LOGOFF
|
||
CNMAX EQU 71 ;MAX OF NDOS FUNCTION
|
||
CSTDPS EQU 106 ;SET DEFAULT PASSWORD
|
||
;
|
||
; SLAVE CONFIGRATION TABLE
|
||
;
|
||
; -1 NETWORK STATUS
|
||
; 0 SLAVE PROCESSOR ID
|
||
; 1-32 A - P DISK DEVICE CODE
|
||
; 33-34 CONSOLE DEVICE
|
||
; 35-36 LIST DEVICE
|
||
; 37 LIST BUFFER COUNTER
|
||
; 38-42 MESSAGE HEADER FOR LIST OUT
|
||
; 43 LISTER DEVICE NUMBER
|
||
; 44-171 LIST OUT DATA BUFFER
|
||
;
|
||
; EACH DEVICE DATA USED 2 BYTES
|
||
; IN 1-36
|
||
; 1B:BIT 7 H ON NETWORK
|
||
; BIT 6 H SET UP IN DISK
|
||
; BIT 0-3 DEVICE NUMBER IN MASTER
|
||
; 2B:MASTER ID
|
||
;
|
||
;
|
||
; BIAS TO DATA IN CONFIGRATION TABLE
|
||
;
|
||
BSCONS EQU 33 ;BIAS TO CONSOLE DATA
|
||
BSLIST EQU 35 ;BIAS TO LISTER DATA
|
||
;
|
||
;
|
||
CSEG
|
||
ORG BASE
|
||
;
|
||
; ENTRY POINTS
|
||
;
|
||
NDOSTP: ;NDOS TOP
|
||
;
|
||
;
|
||
CPMIDC: ;CP/M ID CODE AREA 6 BYTES
|
||
;
|
||
JMP NDOSE ;DOS ENTRY
|
||
JMP COLDST ;COLD START ENTRY
|
||
;
|
||
NDOS: ;NDOS ENTRY
|
||
JMP NDOSE ;DOS ENTRY MAIN
|
||
JMP COLDST ;COLD START POINTER
|
||
;
|
||
; LINKED PARAMETERS
|
||
;
|
||
MDPROT DB 0 ;PRINTER OUT MODE FLG
|
||
MDPREC DB 0 ;CONTROL-P ECHO MODE
|
||
MRDCBF DB 0 ;READ CONSOLE BUFFER MODE
|
||
;
|
||
;
|
||
DB 'COPYRIGHT (C) 1983, XYZ (DIGITAL RESEARCH) '
|
||
;
|
||
; COLD START ROUTINE
|
||
;
|
||
COLDST:
|
||
MOV AX,CS
|
||
MOV SS,AX ;SET STACK SEGMENT
|
||
MOV SP,OFFSET STACK
|
||
MOV ES,AX
|
||
MOV DS,AX ;INITIALIZE ALL SEGMENT REGISTER
|
||
CALL NTWKIN ;INITIALIZE NETWORK
|
||
OR AL,AL
|
||
JNZ COLDSE ;INITIALIZE ERROR
|
||
CALL CNFTBL ;GET CONFIGRATION TABLE
|
||
INC BX
|
||
MOV CONTAD,BX ;SAVE CONFIGRATION TABLE POINT
|
||
MOV CL,CGTSYA
|
||
INT BDOS ;GET SYSTEM ADDRESS
|
||
MOV BDSYSA,BX ;SAVE SYSTEM ADDRESS
|
||
CALL STBITP ;SET BIOS TRAPS
|
||
CALL BGTMRT ;GET MEMORY REGION TABLE POINT
|
||
MOV AX,1[BX] ;GET FIRST REGION START
|
||
MOV DX,CS
|
||
SUB AX,DX
|
||
ADD AX,15
|
||
AND AX,0FFF0H
|
||
MOV CL,4
|
||
SHL AX,CL ;GET CCP TOP
|
||
MOV CCPTOP,AX ;SAVE TOP
|
||
MOV CL,CGETVR
|
||
INT BDOS ;GET VERSION NUMBER
|
||
MOV VERSION,BX ;SAVE VERSION NUMBER
|
||
XOR AX,AX
|
||
MOV ES,AX
|
||
MOV AX,ES:WORD PTR .VBDOS ;GET BDOS OFFSET
|
||
MOV BDOSE,AX ;SAVE BDOS ENTRY
|
||
MOV BX,OFFSET NDOS
|
||
MOV ES:WORD PTR .VBDOS,BX ;SET VECTOR TO NDOS
|
||
MOV CX,6 ;ID CODE LENGTH
|
||
SUB AX,CX ;TO ID TOP
|
||
MOV SI,AX
|
||
MOV DI,OFFSET CPMIDC
|
||
MOV AX,DS
|
||
MOV ES,AX ;RESTORE ES
|
||
CLD
|
||
REP MOVSB ;SET ID CODE
|
||
CALL NWBOTB ;DO BOOT PROCESS
|
||
XOR CX,CX ;USER 0 DRIVE A
|
||
JMP CCPTOP ;TO CCP
|
||
;
|
||
COLDSE: ;INITIALIZE ERROR
|
||
MOV CL,CBUFPR
|
||
MOV DX,(OFFSET CSTFIL)
|
||
INT BDOS ;START UP FAILURE
|
||
MOV CL,CRESET ;RETURN TO CP/M SYSTEM
|
||
XOR DX,DX
|
||
INT BDOS
|
||
;
|
||
; NDOS FUNCTION DECODING BODDY
|
||
;
|
||
NDOSE:
|
||
MOV BL,CL
|
||
CMP CL,CNMAX+1
|
||
JC NDOSEF ;IN RANGE
|
||
CMP CL,CSTDPS
|
||
JZ NDOSED ;OK SET DEFAULT PASSWORD
|
||
NDOSEN: ;NO FUNCTION IN DOS
|
||
MOV AX,-1
|
||
MOV BX,AX
|
||
IRET
|
||
;
|
||
NDOSED: ;SET DEFAULT PASS WORD
|
||
MOV BL,CNMAX+1
|
||
NDOSEF:
|
||
XOR AL,AL
|
||
CMP CL,CRDCBF
|
||
JNZ $+4
|
||
INC AL ;READ CONSOLE BUFFER
|
||
MOV CS:MRDCBF,AL ;SET MODE FOR COPNTROL-P
|
||
XOR BH,BH
|
||
MOV AL,CS:(OFFSET IXFUNC)[BX] ;GET CODE OF FUNCTION
|
||
OR AL,AL
|
||
JNZ NDOSEG ;GET SOME FUNCTION
|
||
JMP CS:BDOSE ;NO FUNCTION IN NDOS TO BDOS
|
||
;
|
||
NDOSEG:
|
||
INC AL
|
||
JZ NDOSEN ;NO FUNCTION IN DOS
|
||
MOV CS:INDSEG,DS ;SAVE DSEG
|
||
MOV BX,CS
|
||
MOV DS,BX ;SET SEGMENT REGISTERS
|
||
MOV ES,BX
|
||
MOV USTKSG,SS ;SAVE STACK SEGMENT
|
||
MOV USTACK,SP ;SAVE STACK OFFSET
|
||
MOV SS,BX
|
||
MOV SP,OFFSET STACK ;TO NDOS STACK
|
||
PUSH BP
|
||
PUSH DI
|
||
PUSH SI
|
||
MOV CURSEG,BX ;SET CURRENT SEGMENT TO OUTPUT SEGMENT
|
||
MOV ENTSTK,SP ;SAVE NDOS PROCESS ENTRY STACK
|
||
MOV PARAMT,DX ;SET INPUT PARAMETER
|
||
MOV FUNCOD,CL
|
||
MOV MSGFUN,CL ;SET FUNCTION CODE
|
||
MOV BX,OFFSET MSGSIZ
|
||
MOV BYTE PTR [BX],0 ;CLEAR SIZE
|
||
INC BX
|
||
MOV MCRPNT,BX ;INITIALIZE POINTER
|
||
MOV BX,OFFSET NDENDP
|
||
PUSH BX ;SET RETURN ADDRESS
|
||
MOV BX,OFFSET IXMACR-2
|
||
XOR AH,AH
|
||
ADD BX,AX
|
||
PUSH BX ;SAVE MACRO POINTER
|
||
NDOSLP: ;LOOP OF MACRO PROCESS
|
||
POP SI ;GET INDEX
|
||
CLD
|
||
LODSB
|
||
MOV DL,AL
|
||
AND DX,07FH ;OFF END BIT & GET BIAS
|
||
MOV BX,OFFSET IXMAIN ;INDEX OF ROUTINE
|
||
ADD BX,DX
|
||
MOV DX,[BX] ;GET ROUTINE ADDRESS
|
||
RCL AL,1
|
||
JC $+7 ;END OF MACRO
|
||
PUSH SI
|
||
MOV BX,OFFSET NDOSLP
|
||
PUSH BX ;SAVE RETURN POINT
|
||
JMP DX ;TO EACH ROUTINE
|
||
;
|
||
; 1:SEND MESSAGE WITH HEADER SET UP
|
||
;
|
||
; 23:RENAME
|
||
; 27:GET ALLOCATION VECTOR
|
||
; 28:WRITE PROTECT DISK
|
||
; 31:GET DISK PARAMETER BLOCK
|
||
;
|
||
SNDHDR:
|
||
MOV SI,CONTAD
|
||
MOV BX,OFFSET MSGTOP
|
||
MOV BYTE PTR [BX],FSEND ;FORMAT CODE TO SEND MODE
|
||
MOV AL,[SI] ;GET SLAVE ID
|
||
MOV 2[BX],AL ;SET SLAVE ID
|
||
MOV DX,MCRPNT ;GET CURRENT POINT OF MESSAGE
|
||
SUB DX,OFFSET MSGDAT ;GET LENGTH OF MESSAGE
|
||
JZ $+3 ;NO DATA
|
||
DEC DX
|
||
MOV 4[BX],DL ;SET SIZE
|
||
MOV CX,OFFSET MSGTOP
|
||
;
|
||
; SEND MESSAGE WITH ERROR PROCESS
|
||
; INPUT
|
||
; CX:MESSAGE ADDRESS DS:SEGMENT
|
||
;
|
||
SDMSGE:
|
||
CALL SNDMSG ;SEND IN SNIOS
|
||
MOV BX,CS
|
||
MOV DS,BX
|
||
MOV ES,BX ;RESTORE SEGMENT REGISTERS
|
||
INC AL
|
||
JZ NERROR ;ERROR
|
||
RET ;NOT ERROR
|
||
;
|
||
; RECEIVE MESSAGE WITH ERROR PROCESS
|
||
; INPUT
|
||
; CX:MESSAGE ADDRESS DS:SEGMENT
|
||
;
|
||
RVMSGE:
|
||
CALL RCVMSG ;RECEIVE IN SNIOS
|
||
MOV BX,CS
|
||
MOV DS,BX
|
||
MOV ES,BX
|
||
INC AL
|
||
JZ NERROR ;ERROR
|
||
RET ;NOT ERROR
|
||
;
|
||
; ERROR END OF NDOS FUNCTION
|
||
;
|
||
NERROR:
|
||
MOV BH,0FFH
|
||
MOV AL,BH
|
||
JMPS NDEND ;END OF NDOS
|
||
;
|
||
; END OF DOS FUNCTION
|
||
; INPUT
|
||
; BH:RETURN PARAMETER
|
||
;
|
||
NDENDP:
|
||
MOV AL,OTPARA
|
||
NDEND:
|
||
MOV SP,ENTSTK ;NDOS PROCESS ENTRY STACK
|
||
POP SI
|
||
POP DI
|
||
POP BP
|
||
MOV ES,CURSEG ;SET OUTPUT SEGMENT
|
||
MOV SS,USTKSG
|
||
MOV SP,USTACK ;RESTORE STACK
|
||
MOV DS,INDSEG ;RESTORE DATA SEGMENT
|
||
MOV BL,AL
|
||
MOV AH,BH
|
||
IRET
|
||
;
|
||
; 2:RECEIVE MESSAGE WITH INITIALIZATION OF MESSAGE POINTER
|
||
;
|
||
; NOT DIRECTLY USED
|
||
;
|
||
RCVPAR:
|
||
MOV CX,OFFSET MSGTOP
|
||
CALL RVMSGE ;RECEIVE
|
||
MOV BX,OFFSET MSGDAT
|
||
MOV MCRPNT,BX ;INITIALIZE POINTER
|
||
RET
|
||
;
|
||
; TO BDOS WITH PARAMETER
|
||
;
|
||
TBDOSP:
|
||
MOV DX,PARAMT ;GET PARAMETER
|
||
MOV CL,FUNCOD ;GET FUNCTION CODE
|
||
;
|
||
; TO BDOS
|
||
;
|
||
TOBDOS:
|
||
PUSH DS
|
||
MOV DS,INDSEG ;SET ENTER SEGMENT
|
||
PUSHF ;SET FLAG
|
||
PUSH CS ;SET SEGMENT FOR IRET
|
||
CALL CS:BDOSE ;TO BDOS
|
||
POP DS
|
||
MOV CURSEG,ES ;SAVE RESULT SEGMENT
|
||
MOV DX,DS
|
||
MOV ES,DX ;RESTORE SEGMENT
|
||
RET
|
||
;
|
||
; TO BDOS & END
|
||
;
|
||
TBDOSE:
|
||
CALL TBDOSP
|
||
JMP NDEND
|
||
;
|
||
; CHECK & SET UP DISK & OVERRIDING GOTO BDOS, IF LOCAL
|
||
; OUTPUT
|
||
; AL:MASTER ID
|
||
; CL:DISK ENTRY
|
||
;
|
||
CHKDSK:
|
||
MOV BX,PARAMT ;GET FCB POINT
|
||
MOV ES,INDSEG ;GET SEGMENT
|
||
MOV DL,ES:[BX] ;GET ENTRY TYPE
|
||
DEC DL
|
||
JNS CHKDSS ;HAS ENTRY TYPE
|
||
MOV DL,CURDSK
|
||
CHKDSS:
|
||
MOV BP,CS
|
||
MOV ES,BP ;RESTORE SEGMENT
|
||
CALL GETDPT
|
||
CMP AL,0FFH
|
||
JZ TBDOSE ;LOCAL & END
|
||
RET ;NETWORK DRIVE
|
||
;
|
||
; GET DISK PARAMETER POINT
|
||
; INPUT
|
||
; DL:DISK NUMBER
|
||
; OUTPUT
|
||
; AL:MASTER ID -1 LOCAL
|
||
; CL:MASTER DRIVE ENTRY
|
||
; OUTPUT
|
||
; BX:CODE POINT-1
|
||
;
|
||
GETDPT:
|
||
XOR DH,DH
|
||
MOV BX,CONTAD
|
||
ADD BX,DX
|
||
ADD BX,DX
|
||
MOV AL,-1
|
||
MOV CL,1[BX] ;GET DRIVE CODE
|
||
TEST CL,80H
|
||
JZ GETDPE ;LOCAL
|
||
AND CL,0FH ;NETWORK GET DISK
|
||
INC CL
|
||
MOV AL,2[BX] ;GET MASTER ID
|
||
MOV MSGID,AL ;SET MASTER ID
|
||
GETDPE:
|
||
RET
|
||
;
|
||
; WARM BOOT
|
||
;
|
||
NWBOOT:
|
||
MOV AX,CS
|
||
MOV ES,AX
|
||
MOV DS,AX
|
||
CALL NWBOTB ;WARM BOOT BODY
|
||
MOV BX,CCPTOP
|
||
ADD BX,6
|
||
JMP BX ;TO CCP WARM START
|
||
;
|
||
; WARM BOOT BODY
|
||
;
|
||
NWBOTB:
|
||
MOV AL,CFREE
|
||
MOV FUNCOD,AL ;SET FUNCTION CODE
|
||
MOV INDSEG,DS ;SET ENTRY SEGMENT
|
||
MOV MSGFUN,AL
|
||
MOV PARAMT,-1 ;ALL DRIVE
|
||
CALL DSKACC ;FREE ALL DRIVE
|
||
CALL NTWKBT ;WARM BOOT OF SNIOS
|
||
MOV DL,USRCOD ;CURRENT USER CODE
|
||
MOV CL,CSTUSC
|
||
JMP TOBDOS ;SET USER CODE
|
||
;
|
||
; 3:SET FCB & SEND
|
||
;
|
||
; 19:DELETE FILE
|
||
; 20:READ SEQUENTIAL
|
||
; 30:SET FILE ATTRIBUTE
|
||
; 33:READ RANDOM
|
||
; 35:COMPUTE FILE SIZE
|
||
; 36:SET RANDOM RECORD
|
||
;
|
||
STFCBS:
|
||
CALL SETFCB ;SET FCB DATA
|
||
JMP SNDHDR ;SEND
|
||
;
|
||
; 4:SET FCB DATA
|
||
;
|
||
; 15:OPEN FILE
|
||
; 16:CLOSE FILE
|
||
; 21:WRITE SEQUENTIAL
|
||
; 22:MAKE FILE
|
||
; 23:RENAME FILE
|
||
; 30:SET FILE ATTRIBUTE
|
||
; 34:WRITE RANDOM
|
||
; 42:LOCK RECORD
|
||
; 43:UNLOCK RECORD
|
||
;
|
||
SETFCB:
|
||
CALL CHKDSK ;CHECK DISK
|
||
SETFCS:
|
||
MOV BX,MCRPNT ;GET POINTER
|
||
MOV AL,USRCOD
|
||
MOV [BX],AL ;SET USER CODE
|
||
INC BX
|
||
MOV [BX],CL ;ENTRY TYPE DRIVE CODE
|
||
INC BX ;TO FCB NAME TOP
|
||
MOV DX,PARAMT
|
||
MOV DS,INDSEG ;SOURCE FCB POINT
|
||
INC DX
|
||
MOV CX,35
|
||
CALL MSCOPY ;SET FCB DATA
|
||
XOR AL,AL
|
||
MOV MMODIF,AL ;CLEAR NAME MODIFY BITS
|
||
MOV MUNLRW,AL ;CLEAR UNLOCK R/W MODE
|
||
;
|
||
; CHECK & SET UP SUBMIT OR TEMPORARY FILE NAME
|
||
; INPUT
|
||
; BX:NAME TOP
|
||
;
|
||
CHKFCB:
|
||
CALL CHKFNM ;CHECK SUBMIT FILE
|
||
ADD BX,CX
|
||
INC BX
|
||
INC BX
|
||
TEST BYTE PTR 0FFFFH[BX],80H
|
||
JZ CHKFCS ;LOCKED FILE
|
||
TEST BYTE PTR [BX],80H ;UNLOCKED MODE
|
||
JNZ CHKFCS ;UNLOCKED R/O
|
||
MOV MUNLRW,-1 ;SET UNLOCKED R/W MODE
|
||
CHKFCS:
|
||
SHL MMODIF,1 ;UP MODIFIED BIT TO MODIFY POSITION
|
||
INC BX
|
||
INC BX
|
||
INC BX ;TO SET UP TEMPORARY FILE MODE
|
||
;
|
||
; CHECK & SET UP TEMPORARY OR SUBMIT
|
||
; INPUT
|
||
; BX:DATA POINT
|
||
; OUTPUT
|
||
; BX+CX:NETX POINT BX+3
|
||
;
|
||
CHKFNM:
|
||
MOV CX,3
|
||
MOV DI,BX
|
||
MOV AL,'$'
|
||
CLD
|
||
REPZ SCASB
|
||
MOV BX,DI ;SET END POINT
|
||
JCXZ $+3
|
||
RET ;NOT MODIFIED MODE
|
||
;
|
||
INC MMODIF ;SET MODIFIED BIT
|
||
MOV SI,BX
|
||
DEC SI
|
||
MOV BX,CONTAD
|
||
MOV AL,[BX] ;GET SLAVE ID
|
||
MOV AH,AL
|
||
CALL SETNIB ;SET LOWER NIBBLE
|
||
DEC SI
|
||
MOV AL,AH
|
||
RCR AL,1
|
||
RCR AL,1
|
||
RCR AL,1
|
||
RCR AL,1 ;GET HIGHER NIBBLE
|
||
;
|
||
; SET NIBBLE
|
||
; INPUT
|
||
; SI:DATA POINT
|
||
; AL:DATA
|
||
;
|
||
SETNIB:
|
||
AND AL,0FH
|
||
ADD AL,'0'
|
||
CMP AL,'9'+1
|
||
JC $+4 ;0 TO 9
|
||
ADD AL,7 ;A TO F
|
||
MOV [SI],AL
|
||
RET
|
||
;
|
||
; 5:CHECK & SET UP NAME OF SECOND PART
|
||
;
|
||
; 23:RENAME
|
||
;
|
||
CHKSFC:
|
||
MOV BX,MCRPNT
|
||
SUB BX,19
|
||
JMP CHKFCB
|
||
;
|
||
; COPY TO MESSAGE DATA AREA
|
||
; INPUT
|
||
; CX:COUNT
|
||
; BX:DESTINATION POINTER ES:SEGMENT
|
||
; DX:SOURCE POINTER DS:SEGMENT
|
||
; OUTPUT
|
||
; BX:BX
|
||
; DX:DX
|
||
; DS:CS
|
||
;
|
||
MSCOPY:
|
||
MOV SI,DX
|
||
MOV DI,BX
|
||
CLD
|
||
REP MOVSB ;COPY DATA
|
||
MOV SI,CS
|
||
MOV DS,SI ;RESTORE DATA SEGMENT
|
||
MOV MCRPNT,DI ;SET NET MESSAGE POINT
|
||
RET
|
||
;
|
||
; 6:SET LOCK/UNLOCK RECORD & SEND
|
||
;
|
||
; 42:LOCK RECORD
|
||
; 43:UNLOCK RECORD
|
||
;
|
||
STLKRN:
|
||
MOV CX,2
|
||
JMPS WTDTCS
|
||
;
|
||
; 7:SET FILE PASSWORD & SEND
|
||
;
|
||
; 15:OPEN FILE
|
||
; 16:CLOSE FILE
|
||
; 22:MAKE FILE
|
||
;
|
||
STPWRD:
|
||
MOV CX,8
|
||
JMPS WTDTCS
|
||
;
|
||
; 8:SET ONE SECTOR DATA TO MESSAGE BUFFER
|
||
;
|
||
; 21:WRITE SEQUENTIAL
|
||
; 34:WRITE RANDOM
|
||
; 40 WRITE RANDOM WITH ZERO FILL
|
||
;
|
||
WTDTCP:
|
||
MOV CX,SCTLNG ;ONE SECTOR LENGTH
|
||
WTDTCS:
|
||
MOV DX,DMAADD ;SOURCE
|
||
MOV BX,MCRPNT ;DESTINATION
|
||
MOV DS,DMASEG ;SOURCE SEGMENT
|
||
CALL MSCOPY ;COPY DATA
|
||
JMP SNDHDR ;SEND
|
||
;
|
||
; 9:SET DRIVE CODE
|
||
;
|
||
; 27:GET ALLOCATION VECTOR
|
||
; 28:WRITE PROTECT DISK
|
||
; 31:GET DISK PARAMETER BLOCK
|
||
;
|
||
SETDRC:
|
||
MOV DL,CURDSK
|
||
CALL GETDPT ;GET DISK MODE
|
||
CMP AL,0FFH
|
||
JNZ $+5 ;NETWORK DISK
|
||
JMP TBDOSE ;LOCAL DISK
|
||
;
|
||
MOV BX,MCRPNT
|
||
DEC CL
|
||
MOV [BX],CL ;SET DRIVE NUMBER
|
||
INC BX
|
||
MOV MCRPNT,BX ;UP DATA POINTER
|
||
RET
|
||
;
|
||
; A:SET FCB EXTENDED DATA
|
||
;
|
||
; 70:SET COMPATIBILITY ATTRIBUTE
|
||
; 106:SET DEFAULT PASSWORD
|
||
;
|
||
STXFCB:
|
||
MOV DX,0
|
||
CALL GTDMAP ;GET SELECTED NETWORK DISK
|
||
MOV AL,CL
|
||
INC CL
|
||
JNZ $+5
|
||
JMP CLDMAP ;NO NETWORK DISK LEFT
|
||
;
|
||
MOV MSGID,AL ;SET MASTER ID OF NETWORK DISK
|
||
MOV DX,PARAMT
|
||
MOV BX,MCRPNT
|
||
CMP FUNCOD,CSTDPS
|
||
JZ STXFCD ;SET DEFAULT PASSWORD
|
||
MOV [BX],DL ;SET COMPATIBILITY ATTRIBUTE
|
||
JMPS STXFCS ;SO ONE BYTE DATA
|
||
;
|
||
STXFCD: ;DEFAULT PASS WORD
|
||
MOV CX,8 ;SET DEFAULT PASSWORD
|
||
MOV DS,INDSEG
|
||
CALL MSCOPY ;SET PASSWORD
|
||
STXFCS:
|
||
CALL SNDHDR ;SEND
|
||
CALL RCVPAR ;RECEIVE
|
||
JMPS STXFCB ;TO NEXT MASTER
|
||
;
|
||
; B:DISK ACCESS CONTROL
|
||
;
|
||
; 37:RESET DRIVE
|
||
; 38:ACCESS DRIVE
|
||
; 39:FREE DRIVE
|
||
;
|
||
DSKACC:
|
||
MOV DX,PARAMT ;GET DISK VECTOR
|
||
DSKACL: ;ONE MASTER LOOP
|
||
CALL GTDMAP ;GET NETWORK DISK
|
||
PUSH BX
|
||
MOV AL,CL
|
||
INC CL
|
||
JNZ DSKACD ;SET SOME MASTER
|
||
CALL CLDMAP ;END OF ALL NETWORK DISK, SO CLEAR FLAG
|
||
POP DX ;GET LEFT DRIVE BIT
|
||
CMP FUNCOD,CRSDSN
|
||
JNZ DSKACE ;NOT RESET DRIVE
|
||
MOV CL,AL ;RESET DRIVE, SO RESET LOCAL DISK
|
||
CALL TOBDOS
|
||
MOV OTPARA,AL
|
||
DSKACE:
|
||
RET
|
||
;
|
||
DSKACD: ;GET SOME NETWORK MASTER
|
||
MOV MSGID,AL ;SAVE MASTER ID
|
||
MOV BX,OFFSET MSGDAT+2
|
||
MOV -2[BX],DX ;SET DRIVE BIT MAP
|
||
MOV MCRPNT,BX
|
||
CALL SNDHDR ;SEND
|
||
MOV AL,FUNCOD
|
||
SUB AL,CACCES
|
||
JZ DSKACS ;ACCESS DISK
|
||
PUSH AX
|
||
CALL RCVPAR ;SIMPLE RECEIVE
|
||
POP AX
|
||
POP DX
|
||
DEC AL
|
||
JZ DSKACL ;FREEE DISK MODE
|
||
MOV AL,MSGDAT ;RESET DISK MODE
|
||
MOV OTPARA,AL
|
||
INC AL
|
||
JNZ DSKACL ;TO NEXT MASTER
|
||
JMP CLDMAP ;ERROR END
|
||
;
|
||
DSKACS: ;ACCESS DISK
|
||
CALL RPROCC ;RECEIVE AS *EE* MODE
|
||
POP DX
|
||
JMPS DSKACL ;TO NEXT MASTER
|
||
;
|
||
; GET NETWORK DISK MAP
|
||
; INPUT
|
||
; DX:TARGET DISK BIT MAP
|
||
; OUTPUT
|
||
; BX:LEFT BIT MAP
|
||
; CL:MASTER ID -1 NOT NETWORK DISK LEFT
|
||
; DX:DISK BIT MAP OF MASTER
|
||
;
|
||
GTDMAP:
|
||
MOV BX,CONTAD
|
||
INC BX
|
||
PUSH DX
|
||
MOV DI,0 ;CLEAR MASTER ID BIT MAP
|
||
MOV DX,10FFH ;DH COUNT DL MASTER ID
|
||
GTDMAL: ;ONE DRIVE LOOP
|
||
MOV AL,[BX]
|
||
RCL AL,1
|
||
JNC GTDMAN ;LOCAL
|
||
RCL AL,1
|
||
JC GTDMAN ;ALREADY PROCESSED DRIVE
|
||
CMP DL,0FFH
|
||
JZ GTDMAM ;FIRST MASTER
|
||
CMP DL,1[BX] ;CHECK WITH LAST MASTER
|
||
JNZ GTDMAN ;DEFFERNT MASTER SO PASS
|
||
GTDMAM: ;GET DRIVE
|
||
MOV DL,1[BX] ;SET MASTER ID
|
||
OR BYTE PTR [BX],40H ;SET PROCESSED BIT
|
||
POP AX
|
||
SHR AX,1 ;GET INPUT BIT MAP MODE
|
||
PUSH AX
|
||
JNC GTDMAE ;NOT TARGET DRIVE
|
||
MOV CL,[BX]
|
||
AND CL,0FH ;GET MASTER DRIVE NUMBER
|
||
INC CL
|
||
MOV SI,8000H
|
||
ROL SI,CL ;GET MASTER DRIVE BIT
|
||
OR DI,SI ;SET UP MASTER DRIVE BIT MAP
|
||
JMPS GTDMAE
|
||
;
|
||
GTDMAN:
|
||
POP AX
|
||
ROR AX,1 ;ROTATE ONE BIT
|
||
PUSH AX
|
||
GTDMAE:
|
||
INC BX
|
||
INC BX
|
||
DEC DH
|
||
JNZ GTDMAL ;TO NEXT DRIVE
|
||
MOV CL,DL
|
||
MOV DX,DI
|
||
POP BX
|
||
RET
|
||
;
|
||
; RESET PROCESSED MODE BIT OF DISK
|
||
;
|
||
CLDMAP:
|
||
MOV BX,CONTAD
|
||
INC BX
|
||
MOV CX,16
|
||
CLDMAL: ;ONE DISK LOOP
|
||
AND BYTE PTR [BX],08FH ;OF PROCESSED BIT
|
||
INC BX
|
||
INC BX
|
||
LOOP CLDMAL
|
||
RET
|
||
;
|
||
; 20:SEARCH FIRST DATA SET UP
|
||
;
|
||
; 17:SEARCH FIRST
|
||
;
|
||
SERCHF:
|
||
MOV FLSRCH,-1 ;SET SEARCH MODE TO LOCAL
|
||
MOV BX,PARAMT ;GET FCB POINT
|
||
PUSH DS
|
||
MOV DS,INDSEG ;GET SEGMENT
|
||
CMP BYTE PTR [BX],'?'
|
||
POP DS
|
||
JNZ SERCHA ;NOT ALL DISK
|
||
CALL SETDRC ;SET DRIVE CODE
|
||
MOV CL,'?'
|
||
CALL SETFCS ;SET FCB
|
||
JMPS SERCHE
|
||
;
|
||
SERCHA:
|
||
INC MCRPNT
|
||
CALL SETFCB ;SET FCB
|
||
SERCHE:
|
||
MOV AL,MSGID
|
||
MOV FLSRCH,AL ;SET SEARCH MODE
|
||
JMP SNDHDR
|
||
;
|
||
; 21:SEARCH NEXT SET UP
|
||
;
|
||
; 18:SEARCH NEXT
|
||
;
|
||
SERCHN:
|
||
MOV AL,FLSRCH ;GET SEARCH MODE
|
||
CMP AL,0FFH
|
||
JNZ SERCHS ;NETWORK
|
||
JMP TBDOSE ;LOCAL
|
||
;
|
||
SERCHS:
|
||
MOV MSGID,AL ;SET MASTER ID
|
||
MOV AL,USRCOD
|
||
MOV BX,MCRPNT
|
||
INC BX
|
||
MOV [BX],AL ;SET USER CODE
|
||
INC BX
|
||
MOV MCRPNT,BX
|
||
JMP SNDHDR ;SEND
|
||
;
|
||
; C:RECEIVE PROCESS FOR *EE* MODE FUNCTIONS
|
||
;
|
||
; FOR MANY FUNCTION RECEIVE PROCESS
|
||
;
|
||
RPROCC:
|
||
CALL RCVPAR ;RECEIVE
|
||
MOV BX,OFFSET MSGDAT+1
|
||
MOV MCRPNT,BX
|
||
MOV DX,-1[BX] ;GET RETURN CODE
|
||
MOV OTPARA,DL ;SAVE AS OUTPUT PARAMETER
|
||
MOV AL,-2[BX] ;GET SIZE
|
||
DEC AL
|
||
JNZ RPROCE ;NOT *EE* MODE
|
||
XCHG BX,DX
|
||
CMP ERRMOD,-1 ;GET BDOS ERROR MODE
|
||
JZ RPROCN ;SIMPLE RETURN MODE
|
||
PUSH BX ;OUT ERROR COMMENT
|
||
MOV DX,OFFSET CNDOSE
|
||
CALL PMSGLC ;'NDOS ERROR'
|
||
POP AX
|
||
CALL PRNUMB ;PRINT ERROR NUMBER
|
||
MOV DX,OFFSET CNDSER
|
||
CALL PMSGLC ;', FUNC '
|
||
MOV AL,FUNCOD
|
||
CALL PRNUMB ;PRINT FUNCTION
|
||
CMP ERRMOD,-2
|
||
JNZ RPROCW ;WARM BOOT
|
||
RPROCN:
|
||
JMP NDENDP ;MESSAGE OUT & RETURN MODE
|
||
;
|
||
RPROCW:
|
||
JMP NWBOOT ;WARM BOOT MODE
|
||
;
|
||
RPROCE:
|
||
RET
|
||
;
|
||
; PRINT NUMBER BY HEXADECIMAL
|
||
; INPUT
|
||
; AL:DATA
|
||
;
|
||
PRNUMB:
|
||
MOV SI,OFFSET ERRPBF+1
|
||
MOV AH,AL ;SAVE DATA
|
||
CALL SETNIB ;SET LOWER NIBBLE
|
||
MOV AL,AH
|
||
RCR AL,1
|
||
RCR AL,1
|
||
RCR AL,1
|
||
RCR AL,1
|
||
DEC SI
|
||
CALL SETNIB ;SET HIGHER NIBBLE
|
||
MOV DX,SI
|
||
;
|
||
; PRINT MESSAGE
|
||
; INPUT
|
||
; DX:MESSAGE ADDRESS
|
||
;
|
||
PMSGLC:
|
||
MOV CL,CBUFPR
|
||
JMP TOBDOS
|
||
;
|
||
; D:RESTORE FCB FOR OPEN/CLOSE
|
||
;
|
||
; 15:OPEN FILE
|
||
; 16:CLOSE FILE
|
||
;
|
||
RSTFCO:
|
||
CMP MUNLRW,-1 ;GET UNLOCKED R/W MODE
|
||
JNZ RSTFCB ;NORMAL READ/WRITE
|
||
;
|
||
; F:RESTORE FCB FOR RANDOM ACCRESS
|
||
;
|
||
; 33:READ RANDOM
|
||
; 34:WRITE RANDOM
|
||
; 35:COMPUTE FILE SIZE
|
||
; 36:SET RANDOM RECORD
|
||
; 42:LOCK RECORD
|
||
; 43:UNLOCK RECORD
|
||
;
|
||
RSTFCR:
|
||
MOV CX,35 ;WITH RECORD DATA
|
||
JMPS RSTFCS
|
||
;
|
||
; E:RESTORE FCB DATA
|
||
;
|
||
; 20:READ SEQUENTIAL
|
||
; 21:WRITE SEQUENTIAL
|
||
; 30:SET FILE ATTRIBUTE
|
||
;
|
||
RSTFCB:
|
||
MOV CX,32
|
||
RSTFCS:
|
||
CALL RSTNAM ;RESTORE NAME
|
||
MOV SI,BX
|
||
INC SI
|
||
MOV DI,PARAMT ;FCB TOP
|
||
INC DI
|
||
MOV ES,INDSEG ;FCB SEGMENT
|
||
;
|
||
; RESTORE DATA FROM MESSAGE AREA TO USER AREA
|
||
; INPUT
|
||
; SI:SOURCE AREA DS:SEGMENT
|
||
; DI:DESTINATION AREA ES:SEGMENT
|
||
; CX:COUNT
|
||
; OUTPUT
|
||
; ES:CS
|
||
;
|
||
RSTDAT:
|
||
CLD
|
||
REP MOVSB
|
||
MOV MCRPNT,SI ;SAVE NEXT POINT
|
||
MOV SI,CS
|
||
MOV ES,SI ;RESTORE SEGMENT
|
||
RET
|
||
;
|
||
; RESTORE FILE NAME OF TEMPORARY OR SUBMIT
|
||
; OUTPUT
|
||
; BX:MESSAGE POINT FCB TOP
|
||
;
|
||
RSTNAM:
|
||
MOV BX,MCRPNT ;FCB DATA TOP
|
||
MOV AL,MMODIF ;GET MODIFIED MODE
|
||
RCR AL,1
|
||
RCR AL,1
|
||
JNC RSTNAT
|
||
MOV WORD PTR 2[BX],'$$'
|
||
RSTNAT:
|
||
RCL AL,1
|
||
JNC RSTNAE ;NO TYPE MODIFIED
|
||
MOV WORD PTR 10[BX],'$$' ;RESTORE TYPE
|
||
RSTNAE:
|
||
RET
|
||
;
|
||
; 10:GET DIRECTORY DATA TO DMA BUFFER
|
||
;
|
||
; 17:SEARCH FIRST
|
||
; 18:SEARCH NEXT
|
||
;
|
||
GTDRDT:
|
||
MOV AL,OTPARA
|
||
INC AL
|
||
JZ RSTNAE ;NOT FOUND
|
||
DEC AL
|
||
MOV CL,5
|
||
SHL AL,CL ;*32
|
||
MOV DI,DMAADD ;DESTNATION OFFSET
|
||
ADD DI,AX ;GET DESTINATION POINT
|
||
MOV SI,MCRPNT
|
||
MOV ES,DMASEG ;DESTINATION SEGMENT
|
||
MOV CX,32
|
||
JMP RSTDAT ;RESTORE DATA
|
||
;
|
||
; 11:GET READ DATA
|
||
;
|
||
; 20:EAD SEQUENTIAL
|
||
; 33:READ RANDOM
|
||
;
|
||
GTRDDT:
|
||
TEST OTPARA,-1
|
||
JNZ RSTNAE ;ERROR
|
||
MOV SI,OFFSET MSGDAT+37
|
||
MOV DI,DMAADD ;DESTINATION OFFSET
|
||
MOV CX,SCTLNG ;SECTOR LENGTH
|
||
MOV ES,DMASEG ;DESTINATION SEGMENT
|
||
JMP RSTDAT ;COPY READ DATA
|
||
;
|
||
; 12:GET VECTOR DATA
|
||
;
|
||
; 27:GET ALLOCATION VECTOR
|
||
; 31:GET DISK PARAMETER ADDRESS
|
||
; 71:GET SERVER CONFIGRATION TABLE
|
||
;
|
||
GTVCDT:
|
||
MOV BX,MCRPNT
|
||
DEC BX
|
||
MOV AL,FUNCOD
|
||
CMP AL,CGTALC
|
||
JZ GTVCSE ;GET ALLOCATION VECTOR ADDRESS
|
||
CMP AL,CGTDPA
|
||
JNZ GTVCSV ;GET SERVER CONFIGRATION TABLE
|
||
MOV DI,OFFSET BFDPBK ;GET DISK PARAMETER ADDRESS
|
||
MOV CX,16
|
||
JMPS GTVCSS ;COPY DISK PARAMETER TO BUFFER
|
||
;
|
||
GTVCSV: ;SERVER CONFIGRATION TABLE
|
||
MOV DI,OFFSET BFSVCT
|
||
MOV CX,23 ;MOVE CONFIGRATION DATA TO BUFFER
|
||
GTVCSS:
|
||
PUSH DI
|
||
MOV SI,BX
|
||
CALL RSTDAT ;MOVE DATA
|
||
POP BX ;RESTORE BUFFER TOP
|
||
GTVCSE:
|
||
MOV OTPARA,BL ;SAVE VECTOR
|
||
RET
|
||
;
|
||
; 13:MAKE UP DRIVE VECTOR
|
||
;
|
||
; 24:RETURN LOGIN VECTOR
|
||
; 29:GET R/O VECTOR
|
||
;
|
||
MKDRVC:
|
||
MOV SI,CONTAD
|
||
ADD SI,31 ;GET BOTTOM POINT OF DRIVE DATA
|
||
MOV CX,16 ;DRIVE COUNT
|
||
MKDRVL: ;ONE DRIVE LOOP
|
||
STD
|
||
LODSW ;GET MASTER ID & DRIVE CODE
|
||
SHL BX,1 ;UP DRIVE VECTOR
|
||
CALL MKDRON ;CHECK ONE DRIVE
|
||
LOOP MKDRVL ;TO NEXT DRIVE
|
||
MOV OTPARA,BL ;SET LOWER BYTE
|
||
RET
|
||
;
|
||
; CHECK ONE DRIVE MODE
|
||
; INPUT
|
||
; AL:DRIVE CODE
|
||
; AH:MASTER ID
|
||
; BX:VECTOR
|
||
; OUTPUT
|
||
; BX:NEW VECTOR
|
||
;
|
||
MKDRON:
|
||
PUSH SI
|
||
PUSH CX
|
||
PUSH BX
|
||
RCL AL,1
|
||
JC MKDROT ;NET DRIVE
|
||
PUSH CX ;LOCAL DRIVE
|
||
CALL TBDOSP ;SO CHECK LOCAL
|
||
POP CX
|
||
DEC CX
|
||
XCHG BX,DX
|
||
JMPS MKDROS
|
||
;
|
||
MKDROT: ;NET DRIVE
|
||
RCR AL,1
|
||
AND AL,0FH ;GET DRIVE IN MASTER
|
||
MOV CL,AL
|
||
MOV MSGID,AH ;SET MASTER ID
|
||
MOV BX,OFFSET MSGDAT
|
||
MOV MCRPNT,BX
|
||
PUSH CX
|
||
CALL SNDHDR ;SEND REQUEST
|
||
CALL RCVPAR ;GET DATA
|
||
POP CX
|
||
MOV BX,MCRPNT
|
||
MOV DX,[BX] ;GET VECTOR
|
||
MKDROS:
|
||
JCXZ MKDROE
|
||
ROR DX,CL ;TO CURRENT DRIVE BIT POINT
|
||
MKDROE:
|
||
AND DX,1 ;GET TARGET DRIVE BIT
|
||
POP BX
|
||
OR BX,DX ;SET CURRENT BIT
|
||
POP CX
|
||
POP SI
|
||
RET
|
||
;
|
||
; 14:SET DMA ADDRESS
|
||
;
|
||
; 26:SET DMA ADDRESS
|
||
;
|
||
SETDMA:
|
||
MOV BX,PARAMT
|
||
MOV DMAADD,BX
|
||
SETDMB:
|
||
JMP TBDOSP
|
||
;
|
||
; 15:SELECT DISK
|
||
;
|
||
; 14:SELECT DISK
|
||
;
|
||
SELDSK:
|
||
MOV DL,PARAMB
|
||
MOV CURDSK,DL
|
||
CALL GETDPT ;GET DISK PARAMETER POINT
|
||
CMP AL,0FFH
|
||
JZ SETDMB ;LOCAL
|
||
MOV BX,MCRPNT ;NETWORK DRIVE
|
||
DEC CL
|
||
MOV [BX],CL ;SET DRIVE
|
||
INC BX
|
||
MOV MCRPNT,BX
|
||
CALL SNDHDR ;SEND
|
||
JMP RPROCC ;RECEIVE
|
||
;
|
||
; 19:RESET DISK
|
||
;
|
||
; 13:RESET DISK
|
||
;
|
||
RSTDSK:
|
||
MOV PARAMB,0
|
||
MOV AL,CSELDK
|
||
MOV FUNCOD,AL
|
||
MOV MSGFUN,AL ;SET SELECT DISK FUNCTION
|
||
MOV MCRPNT,OFFSET MSGDAT
|
||
CALL SELDSK
|
||
MOV BX,CONTAD
|
||
TEST BYTE PTR 1[BX],80H ;GET HOME DISK MODE
|
||
JNZ RSTDSS ;HOME DISK IS NEWORK
|
||
MOV CL,CRSDSK ;HOME DISK IS LOCAL
|
||
CALL TOBDOS ;RESET LOCAL DRIVE
|
||
MOV OTPARA,AL
|
||
RET
|
||
;
|
||
RSTDSS: ;HOME DISK IS NETWORK
|
||
MOV BX,BDSYSA ;BDOS SYSTEM ADDRESS
|
||
MOV BYTE PTR BDCUDK[BX],0 ;CLEAR CURRENT DISK
|
||
MOV BYTE PTR BDCUDR[BX],0 ;CLEAR CURRENT DRIVE
|
||
RSTDSE:
|
||
MOV DX,-1
|
||
MOV CL,CRSDSN
|
||
JMP TOBDOS ;RESET ALL LOCAL DISK
|
||
;
|
||
; 16:SET/GET USER CODE
|
||
;
|
||
; 32:SET/GET USER CODE
|
||
;
|
||
STGTUC:
|
||
MOV DL,PARAMB
|
||
CMP DL,0FFH
|
||
MOV BX,OFFSET USRCOD
|
||
MOV AL,[BX] ;GET CURRENT USER CODE
|
||
MOV OTPARA,AL
|
||
JZ GETVEE ;INTEROGATE MODE
|
||
MOV [BX],DL ;SET USER CODE
|
||
JMP TBDOSP ;SET USER CODE OF LOCAL
|
||
;
|
||
; 17:GET VERSION NUMBER
|
||
;
|
||
; 12:RETURN VERSION NUMBER
|
||
;
|
||
GETVER:
|
||
MOV BX,VERSION
|
||
OR BH,2 ;MAKE TO CP/NET VERSION
|
||
MOV OTPARA,BL
|
||
GETVEE:
|
||
RET
|
||
;
|
||
; 18:GET CURRENT DISK
|
||
;
|
||
; 25:GET CURRENT DISK
|
||
;
|
||
GETCDK:
|
||
MOV AL,CURDSK
|
||
MOV OTPARA,AL
|
||
RET
|
||
;
|
||
; 1A:GET NETWORK STATUS
|
||
;
|
||
; 68:GET NETWORK STATUS
|
||
;
|
||
GNTWKS:
|
||
CALL NTWKST ;GET STATUS BY SNIOS ROUTINE
|
||
MOV OTPARA,AL
|
||
RET
|
||
;
|
||
; 1B:GET CONFIGURATION TABLE
|
||
;
|
||
; 69:GET CONFIGURATION TABLE
|
||
;
|
||
GCNFTB:
|
||
CALL CNFTBL ;GET CONFIGRATION TABLE POINT
|
||
MOV OTPARA,BL
|
||
RET
|
||
;
|
||
; 1E:LOGIN
|
||
;
|
||
; 64:LOGIN
|
||
;
|
||
LOGIN:
|
||
MOV DX,MCRPNT ;MESSAGE POINT
|
||
MOV BX,PARAMT
|
||
MOV DS,INDSEG ;PASSWORD SEGMENT
|
||
MOV AL,[BX]
|
||
MOV CS:MSGID,AL ;SET MASTER ID
|
||
INC BX
|
||
XCHG BX,DX
|
||
MOV CX,8
|
||
CALL MSCOPY ;SET PASSWORD
|
||
JMP SNDHDR
|
||
;
|
||
; 1F:LOGOFF
|
||
;
|
||
; 65:LOGOFF
|
||
; 71:SET SERVER CONFIGURATION
|
||
;
|
||
LOGOFF:
|
||
MOV AL,PARAMB
|
||
MOV MSGID,AL
|
||
JMP SNDHDR
|
||
;
|
||
; 1C:SEND MESSAGE
|
||
;
|
||
; 66:SEND MESSAGE
|
||
;
|
||
SENDMS:
|
||
MOV CX,PARAMT ;OFFSET
|
||
MOV DS,INDSEG ;SEGMENT
|
||
JMP SDMSGE
|
||
;
|
||
; 1D:RECEIVE MESSAGE
|
||
;
|
||
; 67:RECEIVE MESSAGE
|
||
;
|
||
RECVMS:
|
||
MOV CX,PARAMT ;OFFSET
|
||
MOV DS,INDSEG ;SEGMENT
|
||
JMP RVMSGE
|
||
;
|
||
; 22:SET BDOS ERROR MODE
|
||
;
|
||
; 45:SET BDOS ERROR MODE
|
||
;
|
||
STBDEM:
|
||
MOV AL,PARAMB
|
||
MOV ERRMOD,AL
|
||
RET
|
||
;
|
||
; 23:CHAIN TO PROGRAM
|
||
;
|
||
; 47:CHAIN TO PORGRAM
|
||
;
|
||
CHAIN:
|
||
PUSH DS
|
||
MOV CX,128
|
||
MOV DI,CCPTOP ;GET CCP TOP
|
||
ADD DI,COMBUF+2
|
||
MOV BX,DI ;SAVE PONT
|
||
MOV SI,DMAADD
|
||
MOV DS,DMASEG ;SOURCE SEGMENT
|
||
CLD
|
||
CHAINL: ;MOVE LOOP
|
||
LODSB
|
||
STOSB ;MOVE
|
||
OR AL,AL
|
||
LOOPNZ CHAINL ;TO NEXT
|
||
MOV AL,127
|
||
SUB AL,CL ;GET LENGTH
|
||
POP DS ;RESTORE SEGMENT
|
||
MOV -1[BX],AL ;SET LENGTH
|
||
XOR DX,DX
|
||
MOV CL,CRESET
|
||
JMP BDOSE ;DIRECT RETURN TO WARM BOOT ROUTINE
|
||
;
|
||
; 24:SET DMA SEGMENT
|
||
;
|
||
; 51:SET DMA SEGMENT
|
||
;
|
||
SETDMS:
|
||
MOV BX,PARAMT
|
||
MOV DMASEG,BX ;SET SEGMENT
|
||
JMP TBDOSP ;TO BDOS
|
||
;
|
||
; BIOS TRAP ROUTINES
|
||
;
|
||
; CONSOLE STATUS
|
||
;
|
||
NCONST:
|
||
MOV BX,BCONST
|
||
MOV DX,CCONST ;CONSOLE STATUS FUNCTION CODE
|
||
JMP NCONCM
|
||
;
|
||
; CONSOLE INPUT
|
||
;
|
||
NCONIN:
|
||
MOV BX,(OFFSET NCONIE)
|
||
PUSH BX ;CHECK CONTROL-P
|
||
MOV BX,BCONIN
|
||
MOV DX,CCNDIN ;CONSOLE INPUT WITH DEVICE CODE
|
||
JMP NCONCM
|
||
;
|
||
; CHECK CONTROL-P MODE IN CONSOLE INPUT
|
||
;
|
||
NCONIE:
|
||
PUSH AX
|
||
CMP AL,'P'-40H
|
||
JNZ NCONIF ;NOT CONTROL-P SO END
|
||
MOV AL,MRDCBF
|
||
OR AL,AL
|
||
JZ NCONIF ;NOT READ CONSOLE BUFFER MODE
|
||
MOV BX,CONTAD
|
||
DEC BX
|
||
TEST MDPREC,-1 ;GET CURRENT MODE
|
||
JZ NCONIO ;TO ON
|
||
MOV MDPREC,0 ;TO OFF
|
||
AND BYTE PTR [BX],0FBH ;OFF CONTROL-P MODE IN NETWORK STATUS
|
||
ADD BX,BLIST+1
|
||
MOV CL,-1
|
||
TEST BYTE PTR [BX],80H ;GET LSITER MODE
|
||
JNC $+5 ;LOCAL LIST
|
||
CALL NLIST ;CLOSE IF NETWORK LIST
|
||
MOV MDPROT,0 ;CLEAR LIST BUFFER MODE
|
||
MOV BX,'FF'
|
||
MOV WORD PTR CCNTRS,BX
|
||
JMPS NCONIP ;'CTL-P OFF'
|
||
;
|
||
NCONIO: ;TO ON
|
||
NOT MDPREC ;SET ON MODE
|
||
OR BYTE PTR [BX],4 ;SET STATUS BIT
|
||
MOV BX,'N'
|
||
MOV WORD PTR CCNTRS,BX ;'CTL-P ON'
|
||
NCONIP:
|
||
MOV BX,OFFSET CCNTRP
|
||
NCONIL:
|
||
MOV CL,[BX]
|
||
PUSH BX
|
||
CALL NCONOT
|
||
POP BX
|
||
INC BX
|
||
TEST BYTE PTR [BX],-1
|
||
JNZ NCONIL ;TO NEXT
|
||
NCONIF: ;END OF CONTROL-P CHECKING
|
||
POP AX
|
||
RET
|
||
;
|
||
; CONSOLE OUTPUT
|
||
; INPUT
|
||
; C:DATA
|
||
;
|
||
NCONOT:
|
||
MOV BX,BCONOT
|
||
MOV DX,100H+CCNDOT ;COUNT & CODE
|
||
;
|
||
; CONSOLE I/O COMMON ROUTINE
|
||
; INPUT
|
||
; BX:BIOS ROUTINE ADDRESS
|
||
; DL:FUNCTION CODE OF NETWORK
|
||
; DH:SIZE
|
||
;
|
||
NCONCM:
|
||
PUSH BX ;SET BIOS ROUTINE VECTOR
|
||
MOV BX,CONTAD
|
||
ADD BX,BSCONS
|
||
MOV AL,[BX] ;GET CONSOLE MODE
|
||
TEST AL,80H
|
||
JZ NCONCE ;LOCAL SO TO BIOS ROUTINE
|
||
AND AL,00FH ;GET CONSOLE NUMBER
|
||
MOV CH,AL ;SAVE CONSOLE NUMBER
|
||
INC BX
|
||
MOV AL,[BX] ;GET MASTER ID
|
||
MOV BX,OFFSET MSGTOP
|
||
MOV BYTE PTR [BX],FSEND ;FORMAT CODE TO SEND
|
||
INC BX
|
||
MOV [BX],AL ;DESTINATION ID
|
||
POP SI ;OFF BIOS VECTOR
|
||
MOV SI,CONTAD
|
||
MOV AL,[SI] ;GET SLAVE ID
|
||
INC BX
|
||
MOV [BX],AL ;SET SLAVE ID
|
||
INC BX
|
||
MOV [BX],DX ;SET FUNCTION & SIZE
|
||
INC BX
|
||
INC BX
|
||
MOV [BX],CH ;SET MASTER CONSOLE NUMBER
|
||
INC BX
|
||
MOV [BX],CL ;SET DATA
|
||
MOV CX,OFFSET MSGTOP
|
||
CALL SDMSGE ;SEND
|
||
MOV CX,OFFSET MSGTOP
|
||
CALL RVMSGE ;RECEIVE
|
||
MOV AL,MSGDAT ;GET RETUNR PARAMETER
|
||
NCONCE:
|
||
RET
|
||
;
|
||
; LIST OUT
|
||
;
|
||
NLIST:
|
||
MOV MDPROT,-1 ;SET PRINT OUT MODE
|
||
MOV BX,CONTAD
|
||
ADD BX,BSLIST
|
||
MOV AL,[BX] ;GET LISTER MODE
|
||
TEST AL,80H
|
||
JNZ NLISTN ;NETWORK
|
||
JMP BLIST ;LOCAL
|
||
;
|
||
NLISTN: ;ON NETWORK
|
||
AND AL,00FH
|
||
MOV LSTUNT,AL ;SAVE UNIT CODE
|
||
PUSH CX
|
||
MOV AL,CL
|
||
INC BX
|
||
INC BX
|
||
MOV CL,[BX] ;GET COUNT
|
||
INC BYTE PTR [BX] ;COUNT UP
|
||
CMP CL,SCTLNG-1 ;ONE SECTOR LENGTH
|
||
JZ NLISTB ;SECTOR BOUNDARY
|
||
CMP AL,EOF
|
||
JNZ NLISTS ;NOT END OF FILE
|
||
NLISTB:
|
||
XOR AL,AL
|
||
MOV [BX],AL ;CLEAR COUNT FOR SEND
|
||
MOV MDPROT,AL ;CLEAR PRINT OUT MODE
|
||
NLISTS:
|
||
LAHF
|
||
ADD BX,7
|
||
MOV CH,0
|
||
ADD BX,CX
|
||
SAHF
|
||
POP DX
|
||
MOV [BX],DL ;SET DATA
|
||
JNZ NCONCE ;NOT TRANSFER MODE
|
||
MOV BX,CONTAD ;TRANSFER ONE BLOCK
|
||
ADD BX,BSLIST+3 ;LISTER OUT MESSAGE TOP
|
||
MOV AL,-2[BX] ;GET LISTER MASTER ID
|
||
MOV 1[BX],AL ;SET MASTER ID
|
||
INC CL
|
||
MOV 4[BX],CL ;SET SIZE
|
||
MOV AL,LSTUNT
|
||
MOV 5[BX],AL ;SET UNIT CODE
|
||
MOV CX,BX
|
||
CALL SDMSGE ;SEND
|
||
MOV CX,OFFSET MSGTOP
|
||
JMP RVMSGE ;RECEIVE
|
||
;
|
||
; LIST STATUS
|
||
;
|
||
NLSTST:
|
||
MOV BX,CONTAD
|
||
ADD BX,BSLIST
|
||
MOV AL,[BX]
|
||
RCL AL,1
|
||
JC NGTMRE ;ON NETWORK
|
||
JMP BLSTST ;LOCAL
|
||
;
|
||
; GET MEMORY REGION TABLE
|
||
;
|
||
NGTMRT:
|
||
CALL BGTMRT ;GET BY BIOS ROUTINE
|
||
MOV CL,[BX] ;GET COUNT
|
||
MOV CH,0
|
||
SHL CX,1
|
||
SHL CX,1 ;*4
|
||
INC CX ;GET MAP LENGTH
|
||
MOV AX,CS
|
||
MOV ES,AX
|
||
MOV DI,OFFSET MRTBL
|
||
MOV SI,BX ;SOURCE POINTER
|
||
CLD
|
||
REP MOVSB ;GET IN BUFFER
|
||
CALL NTWKEN ;GET SNIOS END POINT
|
||
ADD BX,255
|
||
AND BX,0FF00H
|
||
MOV CL,4
|
||
SHR BX,CL ;GET SIZE BY PARAGRAPH
|
||
MOV AX,CS
|
||
ADD AX,BX ;GET END PARAGRAPH
|
||
MOV BX,OFFSET MRTBL+1
|
||
MOV DX,[BX]
|
||
MOV [BX],AX ;SET LEFT REGION TOP
|
||
SUB AX,DX
|
||
MOV DX,2[BX]
|
||
SUB DX,AX ;GET LEFT SIZE
|
||
MOV 2[BX],DX ;SET LENGTH
|
||
DEC BX
|
||
NGTMRE:
|
||
RET
|
||
;
|
||
; SET BIOS TRAP
|
||
;
|
||
STBITP:
|
||
MOV BX,BIOSTP ;BIOS TRAP OFFSET
|
||
MOV CX,19 ;ROUTINE COUNT
|
||
MOV SI,OFFSET TLBIOS ;TRAP POINTER TABLE
|
||
STBITL: ;ONE BLOCK LOOP
|
||
ADD BX,3
|
||
MOV DX,[SI] ;GET TRAP ROUTINE POINTER
|
||
OR DX,DX
|
||
JZ STBITS ;NO TRAP
|
||
MOV AX,-2[BX] ;GET DISPLACEMENT
|
||
ADD AX,BX ;GET OFFSET
|
||
MOV [SI],AX ;SAVE ADDRESS OF ORIGINAL ROUTINE
|
||
SUB DX,BX ;MAKE DISPLACEMENT
|
||
MOV -2[BX],DX ;SAVE TRAP ROUTINE DISPLACEMENT
|
||
STBITS:
|
||
ADD SI,2
|
||
LOOP STBITL ;TO NEXT ROUTINE
|
||
RET
|
||
;
|
||
;
|
||
DTAREA EQU $
|
||
DSEG
|
||
ORG OFFSET DTAREA
|
||
;
|
||
; MAIN ROUTINE INDEX OF MACRO
|
||
;
|
||
IXMAIN:
|
||
DW NWBOOT ; 0 WARM BOOT NOT USED
|
||
DW SNDHDR ; 1 SEND MESSAGE WITH HEADER SET UP
|
||
DW RCVPAR ; 2 RECEIVE MESSAGE WITH POINTER INIT
|
||
DW STFCBS ; 3 SET FCB & SEND
|
||
DW SETFCB ; 4 SET FCB DATA
|
||
DW CHKSFC ; 5 CHECK SECOND FCB
|
||
DW STLKRN ; 6 SET LOCK/UNLOCK RECORD
|
||
DW STPWRD ; 7 SET FILE PASSWORD & SEND
|
||
DW WTDTCP ; 8 SET ONE SECTOR DATA & SEND
|
||
DW SETDRC ; 9 SET DRIVE CODE
|
||
DW STXFCB ; A SET FCB EXTENDED DATA
|
||
DW DSKACC ; B DISK ACCESS CONTROL
|
||
DW RPROCC ; C RECEIVE PROCESS
|
||
DW RSTFCO ; D RESTORE FCB FOR OPEN/CLOSE
|
||
DW RSTFCB ; E RESTORE FCB
|
||
DW RSTFCR ; F RESTORE FCB FOR RANDOM
|
||
DW GTDRDT ;10 GET DIRECTORY DATA TO DMA BUFFER
|
||
DW GTRDDT ;11 GET READ DATA
|
||
DW GTVCDT ;12 GET VECTOR DATA
|
||
DW MKDRVC ;13 MAKE UP DRIVE VECTOR
|
||
DW SETDMA ;14 SET DMA ADDRESS
|
||
DW SELDSK ;15 SELECT DISK
|
||
DW STGTUC ;16 SET/GET USER CODE
|
||
DW GETVER ;17 GET VERSION NUMBER
|
||
DW GETCDK ;18 GET CURRENT DISK
|
||
DW RSTDSK ;19 RESET DISK
|
||
DW GNTWKS ;1A GET NETWORK STATUS
|
||
DW GCNFTB ;1B GET CONFIGURATION TABLE POINT
|
||
DW SENDMS ;1C SEND MESSAGE
|
||
DW RECVMS ;1D RECEIVE MESSAGE
|
||
DW LOGIN ;1E LOGIN
|
||
DW LOGOFF ;1F LOGOFF
|
||
DW SERCHF ;20 SEARCH FIRST
|
||
DW SERCHN ;21 SEARCH NEXT
|
||
DW STBDEM ;22 SET BDOS ERROR MODE
|
||
DW CHAIN ;23 CHAIN TO PROGRAM
|
||
DW SETDMS ;24 SET DMA SEGMENT
|
||
;
|
||
; ROUTINE MACRO TABLE
|
||
;
|
||
IXMACR:
|
||
DB 17H*2+80H ; 1 RETURN VERSION NUMBER
|
||
;
|
||
DB 19H*2+80H ; 2 RESET DISK
|
||
;
|
||
DB 0BH*2+80H ; 3 RESET, ACCESS, FREE DISK
|
||
;
|
||
DB 15H*2+80H ; 4 SELECT DISK
|
||
;
|
||
DB 4H*2 ; 5 OPEN, CLOSE, MAKE
|
||
DB 7H*2
|
||
DB 0CH*2
|
||
DB 0DH*2+80H
|
||
;
|
||
DB 03H*2 ; 9 DELETE
|
||
DB 0CH*2+80H
|
||
;
|
||
DB 20H*2 ; B SEARCH FIRST
|
||
DB 0CH*2
|
||
DB 10H*2+80H
|
||
;
|
||
DB 21H*2 ; E SEARCH NEXT
|
||
DB 0CH*2
|
||
DB 10H*2+80H
|
||
;
|
||
DB 03H*2 ;11 READ SEQUENTIAL
|
||
DB 0CH*2
|
||
DB 0EH*2
|
||
DB 11H*2+80H
|
||
;
|
||
DB 04H*2 ;15 WRITE SEQUENTIAL
|
||
DB 08H*2
|
||
DB 0CH*2
|
||
DB 0EH*2+80H
|
||
;
|
||
DB 04H*2 ;19 RENAME
|
||
DB 05H*2
|
||
DB 01H*2
|
||
DB 0CH*2+80H
|
||
;
|
||
DB 13H*2+80H ;1D LOGIN, R/O VECTOR
|
||
;
|
||
DB 18H*2+80H ;1E GET CURRENT DISK
|
||
;
|
||
DB 14H*2+80H ;1F SET DMA
|
||
;
|
||
DB 9H*2 ;20 GET ALL MAP, DISK PBLK
|
||
DB 1H*2
|
||
DB 0CH*2
|
||
DB 12H*2+80H
|
||
;
|
||
DB 09H*2 ;24 WRITE PROTECT DISK
|
||
DB 1H*2
|
||
DB 0CH*2+80H
|
||
;
|
||
DB 03H*2 ;27 SET FILE ATTRIBUTE
|
||
DB 0CH*2
|
||
DB 0EH*2+80H
|
||
;
|
||
DB 16H*2+80H ;2A SET/GET USER CODE
|
||
;
|
||
DB 03H*2 ;2B READ RANDOM
|
||
DB 0CH*2
|
||
DB 0FH*2
|
||
DB 11H*2+80H
|
||
;
|
||
DB 04H*2 ;2F WRITE RANDOM, WRITE RANDOM WITH ZERO FILL
|
||
DB 08H*2
|
||
DB 0CH*2
|
||
DB 0FH*2+80H
|
||
;
|
||
DB 3H*2 ;33 COMPUTE FILE SIZE, SET RANDOM RECORD
|
||
DB 0CH*2
|
||
DB 0FH*2+80H
|
||
;
|
||
DB 4H*2 ;36 LOCK, UNLOCK RECORD
|
||
DB 06H*2
|
||
DB 0CH*2
|
||
DB 0FH*2+80H
|
||
;
|
||
DB 22H*2+80H ;3A SET BDOS ERROR MODE
|
||
;
|
||
DB 0AH*2+80H ;3B SET DEFAULT PASSWORD
|
||
;
|
||
DB 1EH*2 ;3C LOGIN
|
||
DB 0CH*2+80H
|
||
;
|
||
DB 1FH*2 ;3E LOGOFF
|
||
DB 0CH*2+80H
|
||
;
|
||
DB 1CH*2+80H ;40 SEND MESSAGE
|
||
;
|
||
DB 1DH*2+80H ;41 RECEIVE MESSAGE
|
||
;
|
||
DB 1AH*2+80H ;42 GET NETWORK STATUS
|
||
;
|
||
DB 1BH*2+80H ;43 GET CONFIGURATION TABLE
|
||
;
|
||
DB 0AH*2+80H ;44 SET COMPATIBILITY ATTRIBUTE
|
||
;
|
||
DB 1FH*2 ;45 GET SERVER CONFIGURATION
|
||
DB 0CH*2
|
||
DB 12H*2+80H
|
||
;
|
||
DB 23H*2+80H ;48 CHAIN TO PROGRAM
|
||
;
|
||
DB 24H*2+80H ;49 SET DMA SEGMENT
|
||
;
|
||
; FUNCTION INDEX
|
||
; 0:NO PROCESS IN NDOS
|
||
; -1:NOT IMPLEMENTED
|
||
; XX:MACRO INDEX ENTRY
|
||
;
|
||
IXFUNC:
|
||
DB 0 ; 0 SYSTEM RESET
|
||
DB 0 ; 1 CONSOLE INPUT
|
||
DB 0 ; 2 CONSOLE OUTPUT
|
||
DB 0 ; 3 READER INPUT
|
||
DB 0 ; 4 PUNCHER OUTPUT
|
||
DB 0 ; 5 LIST OUTPUT
|
||
DB 0 ; 6 DIRECT CONSOLE I/O
|
||
DB 0 ; 7 GET I/O BYTE
|
||
DB 0 ; 8 SET I/O BYTE
|
||
DB 0 ; 9 PRINT STRING
|
||
DB 0 ;10 READ CONSOLE BUFFER
|
||
DB 0 ;11 GET CONSOLE STATUS
|
||
DB 1 ;12 RETURN VERSION NUMBER
|
||
DB 2 ;13 RESET DISK
|
||
DB 4 ;14 SELECT DISK
|
||
DB 5 ;15 OPEN FILE
|
||
DB 5 ;16 CLOSE FILE
|
||
DB 0BH ;17 SEARCH FIRST
|
||
DB 0EH ;18 SEARCH NEXT
|
||
DB 9 ;19 DELETE FILE
|
||
DB 11H ;20 READ SEQUENTIAL
|
||
DB 15H ;21 WRITE SEQUENTIAL
|
||
DB 5 ;22 MAKE FILE
|
||
DB 19H ;23 RENAME
|
||
DB 1DH ;24 RETURN LOGIN VECTOR
|
||
DB 1EH ;25 RETURN CURRENT DISK
|
||
DB 1FH ;26 SET DMA ADDRESS
|
||
DB 20H ;27 GET ALLOCATION VECTOR
|
||
DB 24H ;28 WRITE PROTECT DISK
|
||
DB 1DH ;29 GET R/O VECTOR
|
||
DB 27H ;30 SET FILE ATTRIBUTE
|
||
DB 20H ;31 GET DISK PARAMETER BLOCK
|
||
DB 2AH ;32 SET/GET USER CODE
|
||
DB 2BH ;33 READ RANDOM
|
||
DB 2FH ;34 WRITE RANDOM
|
||
DB 33H ;35 COMPUTE FILE SIZE
|
||
DB 33H ;36 SET RANDOM RECORD
|
||
DB 3 ;37 RESET DRIVE
|
||
DB 3 ;38 ACCESS DRIVE
|
||
DB 3 ;39 FREE DRIVE
|
||
DB 2FH ;40 WRITE RANDOM WITH ZERO FILL
|
||
DB 0FFH ;41 TEST & WRITE RECORD
|
||
DB 36H ;42 LOCK RECORD
|
||
DB 36H ;43 UNLOCK RECORD
|
||
DB 0FFH ;44 SET MULT-SECTOR COUNT
|
||
DB 3AH ;45 SET BDOS ERROR MODE
|
||
DB 0FFH ;46 GET DISK FREE SPACE
|
||
DB 48H ;47 CHAIN TO PROGRAM
|
||
DB 0 ;48 FLUSH BUFFER
|
||
DB 0 ;49 GET SYSTEM ADDRESS
|
||
DB 0 ;50 DIRECT BIOS CALL
|
||
DB 49H ;51 SET DMA SEGMENT
|
||
DB 0 ;52 GET DMA SEGMENT
|
||
DB 0 ;53 GET MAXIMUM MEMORY
|
||
DB 0 ;54 GET ABSOLUTE MEMORY
|
||
DB 0 ;55 ALLOCATE MEMORY
|
||
DB 0 ;56 ALLOCATE ABSOLUTE MEMORY
|
||
DB 0 ;57 FREE SPECIFIED MEMORY
|
||
DB 0 ;58 FREE ALL MEMORY
|
||
DB 0 ;59 LOAD PROGRAM
|
||
DB -1 ;60 ------------
|
||
DB -1 ;61 ------------
|
||
DB -1 ;62 ------------
|
||
DB -1 ;63 ------------
|
||
DB 3CH ;64 LOGIN
|
||
DB 3EH ;65 LOGOFF
|
||
DB 40H ;66 SEND MESSAGE
|
||
DB 41H ;67 RECEIVE MESSAGE
|
||
DB 42H ;68 NETWORK STATUS
|
||
DB 43H ;69 GET CONFIGURATION TABLE
|
||
DB 44H ;70 SET COMPATIBILITY ATTRIBUTE
|
||
DB 45H ;71 GET SERVER CONFIGURATION
|
||
DB 3BH ;106 SET DEFAULT PASSWORD
|
||
;
|
||
; COMMENTS
|
||
;
|
||
CSTFIL DB 'INITIALIZE ERROR$' ;SNIOS INITIALIZE ERROR
|
||
CCNTRP DB 'CTL-P O' ;COMMENT FOR CONTROL-P
|
||
CCNTRS DB 'FF',0
|
||
CNDOSE DB CR,LF,'NDOS ERR $' ;NDOS FUNCTION ERROR
|
||
CNDSER DB ', FUNC $'
|
||
ERRPBF DB 0,0,'$' ;ERROR NUMBER PRINT BUFFER
|
||
ERRMOD DB 0 ;BDOS ERROR MODE -1 RETURN
|
||
;
|
||
; BIOS ROUTINE TABLE 0 NOT TRAP IN NDOS
|
||
;
|
||
TLBIOS:
|
||
DW 0 ;COLD BOOT
|
||
DW NWBOOT ;WARM BOOT
|
||
BCONST DW NCONST ;CONSOLE STATUS
|
||
BCONIN DW NCONIN ;C_NSOLE INPUT
|
||
BCONOT DW NCONOT ;CONSOLE OUTPUT
|
||
BLIST DW NLIST ;LIST OUT
|
||
DW 0,0,0,0,0,0,0,0,0
|
||
BLSTST DW NLSTST ;LIST STATUS
|
||
DW 0,0
|
||
BGTMRT DW NGTMRT ;GET MEMORY REGION TABLE
|
||
;
|
||
; PARAMETER AREA
|
||
;
|
||
CONTAD DW 0 ;CONFIGURATION TABLE ADDRESS
|
||
CCPTOP DW 0 ;CCP TOP ADDRESS
|
||
BDOSE DW 0 ;BDOS ENTRY ADDRESS
|
||
BDSYSA DW 0 ;BDOS SYSTEM AREA
|
||
VERSION DW 0 ;VERSION NUMBER
|
||
FLSRCH DB 0 ;SEARCH MODE -1 LOCAL OTHER MASTER ID
|
||
DW 0
|
||
;
|
||
; DOS WORKING
|
||
;
|
||
USTACK DW 0 ;USER STACK OFFSET
|
||
USTKSG DW 0 ;USER STACK SEGMENT
|
||
ENTSTK DW 0 ;NDOS PROCESS ENTRY STACK
|
||
FUNCOD DB 0 ;FUNCTION CODE
|
||
PARAMT DW 0 ;INPUT PARAMETER
|
||
PARAMB EQU BYTE PTR PARAMT
|
||
OTPARA DB 0 ;OUTPUT PARAMETER
|
||
INDSEG DW 0 ;INPUT DATA SEGMENT
|
||
CURSEG DW 0 ;OUTPUT SEGMENT
|
||
;
|
||
MCRPNT DW 0 ;MESSAGE DATA POINTER
|
||
LSTUNT DB 0 ;LISTER UNIT IN MASTER
|
||
MUNLRW DB 0 ;UNLOCKED R/W MODE
|
||
MMODIF DB 0 ;FILE NAME MODIFY MODE B0 TYPE B1 NAME
|
||
BIOSEN DW 0 ;BIOS ENTRY POINT
|
||
CURDSK DB 1 ;CURRENT DISK BY ENTRY TYPE
|
||
DMAADD DW 0 ;DMA OFFSET
|
||
DMASEG DW 0 ;DMA SEGMENT
|
||
USRCOD DB 0 ;USER CODE
|
||
;
|
||
; MESSAGE DATA AREA
|
||
;
|
||
MSGTOP: ;MESSAGE AREA TOP
|
||
DB 0 ;MESSAGE FORMAT CODE
|
||
MSGID DB 0 ;DESTINATION DEVICE ID
|
||
DB 0 ;SOURCE DEVICE ID
|
||
MSGFUN DB 0 ;FUNCTION CODE
|
||
MSGSIZ DB 0 ;MESSAGE SIZE -1
|
||
MSGDAT RB 256 ;DATA BUFFER
|
||
;
|
||
;
|
||
BFDPBK RS 15 ;DISK PARAMETER READ BUFFER
|
||
BFSVCT RS 23 ;SERVER CONFIGRATION TABLE
|
||
MRTBL RS 65 ;MEMORY REGION TABLE
|
||
;
|
||
; STACK AREA
|
||
;
|
||
RS 64
|
||
STACK:
|
||
;
|
||
;
|
||
ORG ((OFFSET $+255) AND 0FF00H)-1
|
||
DB 0 ;END OF NDOS
|
||
;
|
||
;
|
||
NIOS EQU $
|
||
CSEG
|
||
ORG OFFSET NIOS
|
||
SNIOS:
|
||
;
|
||
; SINOS ROUTINES
|
||
;
|
||
NTWKIN EQU SNIOS ;INITIALIZE NETWORK INTERFACE
|
||
NTWKST EQU SNIOS+3 ;GET NETWORK STATUS
|
||
CNFTBL EQU SNIOS+6 ;GET CONFIGRATION TABLE POINT
|
||
SNDMSG EQU SNIOS+9 ;SEND MESSAGE CX,DS:MESSAGE BUFFER
|
||
RCVMSG EQU SNIOS+12 ;RECEIVE MESSAGE CX,DS:MESSAGE BUFFER
|
||
NTWKER EQU SNIOS+15 ;ERROR
|
||
NTWKBT EQU SNIOS+18 ;BOOT
|
||
NTWKEN EQU SNIOS+21 ;GET END ADDRESS OF SNIOS
|
||
;
|
||
;
|
||
END
|
||
|