From 6a7e798f465afb0f188b85664dee5ae2cda93a4a Mon Sep 17 00:00:00 2001 From: D G Turner Date: Mon, 26 Dec 2011 21:23:38 +0000 Subject: DREAMWEB: Ported 'dirfile' to C++ Needs some checking of es:di usage and work to remove _operand1 to dreambase.h --- engines/dreamweb/monitor.cpp | 55 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) (limited to 'engines/dreamweb/monitor.cpp') diff --git a/engines/dreamweb/monitor.cpp b/engines/dreamweb/monitor.cpp index f1b870d9c0..7e88838a7d 100644 --- a/engines/dreamweb/monitor.cpp +++ b/engines/dreamweb/monitor.cpp @@ -453,6 +453,61 @@ void DreamGenContext::getKeyAndLogo() { } } +void DreamGenContext::dirFile() { + bool foundFile = false; + + es.byte(di) = 34; + + ds = data.word(kTextfile1); + si = kTextstart; + searchForString(); + if (al == 0) { + foundFile = true; + } else { + ds = data.word(kTextfile2); + si = kTextstart; + searchForString(); + if (al == 0) { + foundFile = true; + } else { + ds = data.word(kTextfile3); + si = kTextstart; + searchForString(); + if (al == 0) + foundFile = true; + } + } + + if (!foundFile) { + monMessage(7); + return; + } + + // "foundfile" + getKeyAndLogo(); + if (al != 0) + return; + + // "keyok2" + memcpy(data.ptr(kCurrentfile+1, 0), data.ptr(offset_operand1+1, 0), 12); + monitorLogo(); + scrollMonitor(); + monMessage(10); + + while (true) { + al = es.byte(bx); + bx++; + if (al == 34 || al == '*') { + // "endofdir2" + scrollMonitor(); + return; + } + + if (al == '=') + monPrint(); + } +} + void DreamGenContext::dirCom() { randomAccess(30); -- cgit v1.2.3