;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ; SYSROUT20 - Get Server Module ; IN: AL = 20D (?H) ; AH = Index ; EDI = Pointer to ServerType ; ESI = Pointer to ModID ;OUT: AL = 0 IF OK, > 0 If Failed... ;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ SYSROUT20_TMP_SERVERNAME DB '0123456789ABCDEF',0 SYSROUT20_MATCHES DB 0 SYSROUT20_SEARCHMATCH DB 0 SYSROUT20_ModID_PTR DD 0 SYSROUT20_SRVSTART DD 0 SYSROUT20: POP EAX PUSHAD XOR AL, AL MOV [SYSROUT20_SEARCHMATCH], AH MOV [SYSROUT20_MATCHES], AL MOV [SYSROUT20_ModID_PTR], ESI MOV ESI, [GS:600H+124] ;SERVERLIST-OFFSET SYSROUT20_TESTNEXTSRVENTRY: MOV EAX, [GS:ESI] CMP EAX, 0 JE SYSROUT20_SRVLISTDONE PUSH ESI PUSH EDI MOV [SYSROUT20_SRVSTART], ESI ADD ESI, 8 MOV ECX, 15 SYSROUT20_COPYSERVERNAME: MOV AL, [GS:ESI] MOV AH, [FS:EDI] INC EDI INC ESI CMP AL, AH JNE SYSROUT20_NOTASERVERMATCH CMP AL, 0 JNE SYSROUT20_LOOPREADSERVERMATCH ;*** MATCH! *** MOV AL, [SYSROUT20_MATCHES] MOV AH, [SYSROUT20_SEARCHMATCH] CMP AL, AH JNE SEARCHINGOTHERSERVER PUSH EDI PUSH ESI MOV EDI, [SYSROUT20_ModID_PTR] MOV ESI, [SYSROUT20_SRVSTART] MOV EAX, [GS:ESI] MOV [FS:EDI], EAX ;* DEST MOV EAX, [GS:ESI+4] MOV [FS:EDI+4], EAX ;* SOURCE POP ESI POP EDI MOV AL, [SYSROUT20_MATCHES] INC AL MOV [SYSROUT20_MATCHES], AL SEARCHINGOTHERSERVER: JMP SYSROUT20_NOTASERVERMATCH SYSROUT20_LOOPREADSERVERMATCH: LOOP SYSROUT20_COPYSERVERNAME SYSROUT20_NOTASERVERMATCH: POP EDI POP ESI ADD ESI, 64 JMP SYSROUT20_TESTNEXTSRVENTRY SYSROUT20_SRVLISTDONE: POPAD MOV AL, [SYSROUT20_MATCHES] POP DS POP FS IRETD