From 5e1e67de2c79726b2152e83469c7a8b3f7bfe780 Mon Sep 17 00:00:00 2001 From: Wolfgang Thaller Date: Mon, 7 May 2018 23:51:47 +0200 Subject: [PATCH] LaunchAPPLServer: support printer port --- LaunchAPPL/Server/LaunchAPPLServer.cc | 33 +++++++++++++++++++-------- LaunchAPPL/Server/LaunchAPPLServer.r | 5 +++- LaunchAPPL/Server/MacSerialStream.cc | 8 +++---- LaunchAPPL/Server/MacSerialStream.h | 4 ++-- 4 files changed, 34 insertions(+), 16 deletions(-) diff --git a/LaunchAPPL/Server/LaunchAPPLServer.cc b/LaunchAPPL/Server/LaunchAPPLServer.cc index 1589a1e3cf..5f5e330edb 100644 --- a/LaunchAPPL/Server/LaunchAPPLServer.cc +++ b/LaunchAPPL/Server/LaunchAPPLServer.cc @@ -48,7 +48,7 @@ enum kMenuApple = 128, kMenuFile, kMenuEdit, - kMenuSpeed + kMenuConnection }; enum @@ -60,6 +60,9 @@ enum struct Prefs { + const static int currentVersion = 1; + int version = currentVersion; + int port = 0; long baud = 19200; bool inSubLaunch = false; }; @@ -135,8 +138,10 @@ void UpdateMenus() DisableItem(m,6); } - m = GetMenu(kMenuSpeed); - for(int i = 1; i <= CountMenuItems(m); i++) + m = GetMenu(kMenuConnection); + CheckMenuItem(m, 1, gPrefs.port == 0); + CheckMenuItem(m, 2, gPrefs.port == 1); + for(int i = 3; i <= CountMenuItems(m); i++) { Str255 str; long baud; @@ -182,11 +187,18 @@ void DoMenuCommand(long menuCommand) // edit command not handled by desk accessory } } - else if(menuID == kMenuSpeed) + else if(menuID == kMenuConnection) { - GetMenuItemText(GetMenu(menuID), menuItem, str); - StringToNum(str, &gPrefs.baud); - SetBaud(gPrefs.baud); + if(menuItem <= 2) + { + gPrefs.port = menuItem - 1; + } + if(menuItem >= 3) + { + GetMenuItemText(GetMenu(menuID), menuItem, str); + StringToNum(str, &gPrefs.baud); + SetBaud(gPrefs.baud); + } } HiliteMenu(0); } @@ -433,12 +445,15 @@ int main() if(OpenDF("\pLaunchAPPLServer Preferences", 0, &refNum) == noErr) { long count = sizeof(gPrefs); + gPrefs.version = -1; FSRead(refNum, &count, &gPrefs); + if(gPrefs.version != Prefs::currentVersion) + gPrefs = Prefs(); FSClose(refNum); } } - MacSerialStream stream(gPrefs.baud); + MacSerialStream stream(gPrefs.port, gPrefs.baud); gSerialStream = &stream; //#define SIMULATE_ERRORS @@ -474,7 +489,7 @@ int main() else #endif { - hadEvent = WaitNextEvent(everyEvent, &e, 10, NULL); + hadEvent = WaitNextEvent(everyEvent, &e, 1, NULL); } if(hadEvent) diff --git a/LaunchAPPL/Server/LaunchAPPLServer.r b/LaunchAPPL/Server/LaunchAPPLServer.r index 9b591d2157..f5e0ecb60b 100644 --- a/LaunchAPPL/Server/LaunchAPPLServer.r +++ b/LaunchAPPL/Server/LaunchAPPLServer.r @@ -59,8 +59,11 @@ resource 'MENU' (130) { resource 'MENU' (131) { 131, textMenuProc; allEnabled, enabled; - "Speed"; + "Connection"; { + "Modem Port", noIcon, noKey, noMark, plain; + "Printer Port", noIcon, noKey, noMark, plain; + "-", noIcon, noKey, noMark, plain; "9600", noIcon, noKey, noMark, plain; "19200", noIcon, noKey, check, plain; "38400", noIcon, noKey, noMark, plain; diff --git a/LaunchAPPL/Server/MacSerialStream.cc b/LaunchAPPL/Server/MacSerialStream.cc index 0dec27d7f2..1252aae2bf 100644 --- a/LaunchAPPL/Server/MacSerialStream.cc +++ b/LaunchAPPL/Server/MacSerialStream.cc @@ -5,8 +5,8 @@ #include -MacSerialStream::MacSerialStream(int baud) - : curBaud(baud) +MacSerialStream::MacSerialStream(int port, int baud) + : port(port), curBaud(baud) { open(); } @@ -25,8 +25,8 @@ void MacSerialStream::close() void MacSerialStream::open() { OSErr err; - err = OpenDriver("\p.AOut", &outRefNum); - err = OpenDriver("\p.AIn", &inRefNum); + err = OpenDriver(port ? "\p.BOut" : "\p.AOut", &outRefNum); + err = OpenDriver(port ? "\p.BIn" : "\p.AIn", &inRefNum); SerSetBuf(inRefNum, inputBuffer, kInputBufferSize); diff --git a/LaunchAPPL/Server/MacSerialStream.h b/LaunchAPPL/Server/MacSerialStream.h index 9ffd2fded1..3f87bcbbde 100644 --- a/LaunchAPPL/Server/MacSerialStream.h +++ b/LaunchAPPL/Server/MacSerialStream.h @@ -11,13 +11,13 @@ class MacSerialStream : public Stream char readBuffer[kReadBufferSize]; short outRefNum, inRefNum; - int curBaud; + int port, curBaud; public: virtual void write(const void* p, size_t n) override; void idle(); - MacSerialStream(int baud = 19200); + MacSerialStream(int port = 0, int baud = 19200); ~MacSerialStream(); void close();