Closed ftoledo closed 2 years ago
Thanks for reporting this! Did it produce a crash log or does it just freeze up?
yes! sorry i miss paste the log:
2021-10-25 09:43:20.0640 Debug MBBSEmu.HostProcess.ExportedModules.Majorbbs.ptrblok (SFASEA) Retrieved Big Memory block FFFF:0000, returned pointer to index 0: 1000:BC24
2021-10-25 09:43:20.0640 Debug MBBSEmu.HostProcess.ExportedModules.Majorbbs.ptrblok (SFASEA) Retrieved Big Memory block FFFF:0000, returned pointer to index 0: 1000:BC24
2021-10-25 09:43:20.0640 Debug MBBSEmu.HostProcess.ExportedModules.Majorbbs.ptrblok (SFASEA) Retrieved Big Memory block FFFF:0000, returned pointer to index 1: 1000:BF8C
2021-10-25 09:43:20.0640 Debug MBBSEmu.HostProcess.ExportedModules.Majorbbs.ptrblok (SFASEA) Retrieved Big Memory block FFFF:0000, returned pointer to index 2: 1000:C2F4
2021-10-25 09:43:20.0640 Debug MBBSEmu.HostProcess.ExportedModules.Majorbbs.ptrblok (SFASEA) Retrieved Big Memory block FFFF:0000, returned pointer to index 3: 1000:C65C
2021-10-25 09:43:20.0640 Debug MBBSEmu.HostProcess.ExportedModules.Majorbbs.ptrblok (SFASEA) Retrieved Big Memory block FFFF:0000, returned pointer to index 4: 1000:C9C4
2021-10-25 09:43:20.0640 Debug MBBSEmu.HostProcess.ExportedModules.Majorbbs.ptrblok (SFASEA) Retrieved Big Memory block FFFF:0000, returned pointer to index 5: 1000:CD2C
2021-10-25 09:43:20.0640 Debug MBBSEmu.HostProcess.ExportedModules.Majorbbs.ptrblok (SFASEA) Retrieved Big Memory block FFFF:0000, returned pointer to index 6: 1000:D094
2021-10-25 09:43:20.0640 Debug MBBSEmu.HostProcess.ExportedModules.Majorbbs.ptrblok (SFASEA) Retrieved Big Memory block FFFF:0000, returned pointer to index 7: 1000:D3FC
2021-10-25 09:43:20.0640 Debug MBBSEmu.HostProcess.ExportedModules.Majorbbs.ptrblok (SFASEA) Retrieved Big Memory block FFFF:0000, returned pointer to index 8: 1000:D764
2021-10-25 09:43:20.0640 Debug MBBSEmu.HostProcess.ExportedModules.Majorbbs.ptrblok (SFASEA) Retrieved Big Memory block FFFF:0000, returned pointer to index 9: 1000:DACC
2021-10-25 09:43:20.0640 Debug MBBSEmu.HostProcess.ExportedModules.Majorbbs.ptrblok (SFASEA) Retrieved Big Memory block FFFF:0000, returned pointer to index 10: 1000:DE34
2021-10-25 09:43:20.0640 Debug MBBSEmu.HostProcess.ExportedModules.Majorbbs.setmbk (SFASEA) Enqueue Previous MCV File: SFASEA.MCV (Pointer: FFFF:0000)
2021-10-25 09:43:20.0640 Debug MBBSEmu.HostProcess.ExportedModules.Majorbbs.setmbk (SFASEA) Set Current MCV File: SFASEA.MCV (Pointer: FFFF:0000)
2021-10-25 09:43:20.0640 Debug MBBSEmu.HostProcess.ExportedModules.Majorbbs.clrprf (SFASEA) Reset Output Buffer
2021-10-25 09:43:20.0652 Debug MBBSEmu.HostProcess.ExportedModules.Majorbbs.cncchr (SFASEA) Returned char: P
2021-10-25 09:43:20.0652 Debug MBBSEmu.HostProcess.ExportedModules.Majorbbs.ptrblok (SFASEA) Retrieved Big Memory block FFFF:0000, returned pointer to index 1: 1000:BF8C
2021-10-25 09:43:20.0652 Debug MBBSEmu.HostProcess.ExportedModules.Majorbbs.ptrblok (SFASEA) Retrieved Big Memory block FFFF:0000, returned pointer to index 2: 1000:C2F4
2021-10-25 09:43:20.0652 Debug MBBSEmu.HostProcess.ExportedModules.Majorbbs.ptrblok (SFASEA) Retrieved Big Memory block FFFF:0000, returned pointer to index 3: 1000:C65C
2021-10-25 09:43:20.0652 Debug MBBSEmu.HostProcess.ExportedModules.Majorbbs.ptrblok (SFASEA) Retrieved Big Memory block FFFF:0000, returned pointer to index 4: 1000:C9C4
2021-10-25 09:43:20.0652 Debug MBBSEmu.HostProcess.ExportedModules.Majorbbs.ptrblok (SFASEA) Retrieved Big Memory block FFFF:0000, returned pointer to index 5: 1000:CD2C
2021-10-25 09:43:20.0652 Debug MBBSEmu.HostProcess.ExportedModules.Majorbbs.ptrblok (SFASEA) Retrieved Big Memory block FFFF:0000, returned pointer to index 6: 1000:D094
2021-10-25 09:43:20.0652 Debug MBBSEmu.HostProcess.ExportedModules.Majorbbs.ptrblok (SFASEA) Retrieved Big Memory block FFFF:0000, returned pointer to index 7: 1000:D3FC
2021-10-25 09:43:20.0652 Debug MBBSEmu.HostProcess.ExportedModules.Majorbbs.ptrblok (SFASEA) Retrieved Big Memory block FFFF:0000, returned pointer to index 8: 1000:D764
2021-10-25 09:43:20.0652 Debug MBBSEmu.HostProcess.ExportedModules.Majorbbs.ptrblok (SFASEA) Retrieved Big Memory block FFFF:0000, returned pointer to index 9: 1000:DACC
2021-10-25 09:43:20.0652 Debug MBBSEmu.HostProcess.ExportedModules.Majorbbs.ptrblok (SFASEA) Retrieved Big Memory block FFFF:0000, returned pointer to index 10: 1000:DE34
2021-10-25 09:43:20.0652 Debug MBBSEmu.HostProcess.ExportedModules.Majorbbs.prfmsg (SFASEA) Added 121 bytes to the buffer from message number 12
2021-10-25 09:43:20.0652 Debug MBBSEmu.HostProcess.ExportedModules.Majorbbs.clrprf (SFASEA) Reset Output Buffer
2021-10-25 09:43:20.0754 Error MBBSEmu.HostProcess.ExportedModules.Majorbbs.Invoke Unknown Exported Function Ordinal in MAJORBBS: 129:CNCUID
Unhandled exception. System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. (Parameter 'Unknown Exported Function Ordinal in MAJORBBS: 129:CNCUID')
at MBBSEmu.HostProcess.ExportedModules.Majorbbs.Invoke(UInt16 ordinal, Boolean offsetsOnly)
at MBBSEmu.HostProcess.ExecutionUnits.ExecutionUnit.ExternalFunctionDelegate(UInt16 ordinal, UInt16 functionOrdinal)
at MBBSEmu.CPU.CpuCore.Op_Call()
at MBBSEmu.CPU.CpuCore.Tick()
at MBBSEmu.HostProcess.ExecutionUnits.ExecutionUnit.Execute(FarPtr entryPoint, UInt16 channelNumber, Boolean simulateCallFar, Boolean bypassState, Queue`1 initialStackValues, UInt16 initialStackPointer)
at MBBSEmu.Module.MbbsModule.Execute(FarPtr entryPoint, UInt16 channelNumber, Boolean simulateCallFar, Boolean bypassSetState, Queue`1 initialStackValues, UInt16 initialStackPointer)
at MBBSEmu.HostProcess.MbbsHost.Run(String moduleName, FarPtr routine, UInt16 channelNumber, Boolean simulateCallFar, Queue`1 initialStackValues)
at MBBSEmu.HostProcess.MbbsHost.WorkerThread()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
Abortado
Thanks!
Looks like we're missing this API:
We might need to write a test module to see how a real system handles this, but my assumption based on the documentation is that it takes in a char*
from the input string and validates the value that is passed in is a valid user name on the system.
This API most likely operates in the same manner was uidkey
:
Where it looks up the registered user by the User ID supplied -- if an invalid username is entered, it probably returns a pointer to a empty char* (0x0
)
if found the cncuid() at wg3 source:
CHAR *
cncuid(VOID) /* grab a userid; prepares for Btrieve too */
{
CHAR *rp;
static CHAR retval[UIDSIZ];
if (*nxtcmd == SIGIDC) {
return(cncsig());
}
setmem(retval,UIDSIZ,0);
for (rp=retval ; isuidc(*nxtcmd) && rp-retval < UIDSIZ-1 ; nxtcmd++,rp++) {
*rp=*nxtcmd;
}
return(retval);
}
also found uses at:
root@scarlet:/tmp/3/SRC# grep -r cncuid |grep "\.C"
apps/galrsy/REMSYS.C: else if (onsysn(cncuid(),1)) {
apps/galreg/REGISTRY.C: if (dfaAcqEQ(vdatmp,cncuid(),0)) {
apps/galreg/REGISTRY.C: if (dfaAcqEQ(vdatmp,cncuid(),0)) {
apps/galreg/REGISTRY.C: if (dfaQueryGE(cncuid(),0)) {
server/wgserver/CNCUTL.C:cncuid(VOID) /* grab a userid; prepares for Btrieve too */
server/wgserver/MAJORBBS.C: uid=cncuid();
i add the cncuid() case to great swtich at ExportedModules/Majorbbs.cs and try to implement this api
/// <summary>
/// return user
///
/// Signature: int cncuid (char *uid);
/// </summary>
private void cncuid()
{
//Get Input
var inputPointer = Module.Memory.GetVariablePointer("INPUT");
var nxtcmdPointer = Module.Memory.GetPointer("NXTCMD");
var inputLength = Module.Memory.GetWord("INPLEN");
var userName = GetParameterString(0, true);
_logger.Info($"({Module.ModuleIdentifier}) cncuid({userName})");
if (string.IsNullOrEmpty(userName))
{
Registers.AX = 1;
return;
}
#if DEBUG
_logger.Debug($"({Module.ModuleIdentifier}) Returning {Registers.AX} for cncuid({userName})");
#endif
}
remember: i no skill here! and missing lot of concepts, I would like to know how to continue with the process :)
Module Information
play with computer at demo mode just works
Software Information: