diff --git a/Makefile b/Makefile index 4e70c2c..84f5f42 100644 --- a/Makefile +++ b/Makefile @@ -48,7 +48,8 @@ DOTOS = src/cpu.o \ src/romram.o \ src/romram49.o \ src/serial.o \ - src/x_func.o + src/x_func.o \ + src/chf_messages.o DOTOS_UI4x = src/ui4x_config.o \ src/ui4x_common.o \ @@ -57,18 +58,6 @@ DOTOS_UI4x = src/ui4x_config.o \ src/ui4x_emulator.o \ src/main.o -MSFS = src/MSFs/cpu.msf \ - src/MSFs/debug.msf \ - src/MSFs/disk_io.msf \ - src/MSFs/flash49.msf \ - src/MSFs/modules.msf \ - src/MSFs/saturn.msf \ - src/MSFs/serial.msf \ - src/MSFs/util.msf \ - src/MSFs/x11.msf \ - src/MSFs/x_func.msf \ - libChf/src/chf.msf - MAKEFLAGS +=-j$(NUM_CORES) -l$(NUM_CORES) cc-option = $(shell if $(CC) $(1) -c -x c /dev/null -o /dev/null > /dev/null 2>&1; \ @@ -114,7 +103,7 @@ override CPPFLAGS := -I./src/ -D_GNU_SOURCE=1 \ .PHONY: all clean clean-all pretty-code install mrproper get-roms install -all: libChf/libChf.a dist/saturn dist/saturn.cat docs +all: libChf/libChf.a dist/saturn docs # Building libChf/libChf.a: @@ -127,11 +116,6 @@ dist/pack: src/pack.o src/disk_io.o src/debug.o libChf/libChf.a # UNUSED $(CC) $^ -o $@ $(CFLAGS) $(LIBS) -dist/saturn.cat: $(MSFS) - for msf in $? ; \ - do gencat $@ $$msf ; \ - done - doc: make -C docs make -C libChf doc @@ -143,7 +127,7 @@ clean: make -C docs clean mrproper: clean - rm -f dist/saturn dist/saturn.cat dist/pack + rm -f dist/saturn dist/pack make -C dist/ROMs mrproper make -C libChf mrproper make -C docs mrproper @@ -160,7 +144,7 @@ get-roms: make -C dist/ROMs get-roms # Installation -install: dist/saturn dist/saturn.cat dist/Saturn.ad doc +install: dist/saturn doc install -m 755 -d -- $(DESTDIR)$(PREFIX)/bin install -c -m 755 dist/saturn $(DESTDIR)$(PREFIX)/bin/saturn install -c -m 755 dist/saturn48gx $(DESTDIR)$(PREFIX)/bin/saturn48gx @@ -168,18 +152,10 @@ install: dist/saturn dist/saturn.cat dist/Saturn.ad doc install -c -m 755 dist/saturn40g $(DESTDIR)$(PREFIX)/bin/saturn40g install -c -m 755 dist/saturn49g $(DESTDIR)$(PREFIX)/bin/saturn49g - install -c -m 644 dist/saturn.cat $(DESTDIR)$(PREFIX)/bin/saturn.cat #FIXME - install -m 755 -d -- $(DESTDIR)$(PREFIX)/share/locale/C/LC_MESSAGES - install -c -m 644 dist/saturn.cat $(DESTDIR)$(PREFIX)/share/locale/C/LC_MESSAGES/saturn.cat - install -m 755 -d -- $(DESTDIR)$(PREFIX)/share/saturn - install -c -m 644 dist/saturn.cat $(DESTDIR)$(PREFIX)/share/saturn.cat #FIXME install -c -m 644 dist/hplogo.png $(DESTDIR)$(PREFIX)/share/saturn/hplogo.png cp -R dist/ROMs/ $(DESTDIR)$(PREFIX)/share/saturn/ - install -m 755 -d -- $(DESTDIR)/etc/X11/app-defaults - install -c -m 644 dist/Saturn.ad $(DESTDIR)/etc/X11/app-defaults/Saturn - install -m 755 -d -- $(DESTDIR)$(DOCDIR) cp -R COPYING LICENSE README* docs-4.1.1.1 docs/*.{info,dvi,ps,pdf} libChf/docs/*.{info,dvi,ps,pdf} $(DESTDIR)$(DOCDIR) @@ -195,10 +171,7 @@ uninstall: rm -f $(DESTDIR)$(PREFIX)/bin/saturn48sx rm -f $(DESTDIR)$(PREFIX)/bin/saturn40g rm -f $(DESTDIR)$(PREFIX)/bin/saturn49g - rm -f $(DESTDIR)$(PREFIX)/bin/saturn.cat - rm -f $(DESTDIR)$(PREFIX)/share/locale/C/LC_MESSAGES/saturn.cat rm -fr $(DESTDIR)$(PREFIX)/share/saturn - rm -f $(DESTDIR)/etc/X11/app-defaults/Saturn rm -fr $(DESTDIR)$(DOCDIR) rm -f $(DESTDIR)$(PREFIX)/share/applications/saturn48gx.desktop rm -f $(DESTDIR)$(PREFIX)/share/applications/saturn48sx.desktop diff --git a/libChf/src/Chf.h b/libChf/src/Chf.h index 22b1603..8d97029 100644 --- a/libChf/src/Chf.h +++ b/libChf/src/Chf.h @@ -1,3 +1,6 @@ +#ifndef _CHF_H +#define _CHF_H 1 + /* .+ .identifier : $Id: Chf.h,v 2.2 2001/01/25 11:56:44 cibrario Exp $ @@ -51,6 +54,8 @@ .- */ +#include + /* ------------------------------------------------------------------------- Win32 & UNICODE support ------------------------------------------------------------------------- */ @@ -269,3 +274,5 @@ void ChfGenerate( const int module_id, const ChfChar* file_name, const int line_ const ChfChar* ChfGetMessage( const int module_id, const int condition_code, const ChfChar* default_message ); /* Retrieve top condition */ const ChfDescriptor* ChfGetTopCondition( void ); + +#endif /*!_CHF_H*/ diff --git a/libChf/src/ChfPriv.h b/libChf/src/ChfPriv.h index b1ab421..fe0a37e 100644 --- a/libChf/src/ChfPriv.h +++ b/libChf/src/ChfPriv.h @@ -1,3 +1,6 @@ +#ifndef _CHF_PRIV_H +#define _CHF_PRIV_H 1 + /* .+ .identifier : $Id: ChfPriv.h,v 2.2 2001/01/25 11:57:57 cibrario Exp $ @@ -37,6 +40,8 @@ .- */ +#include "Chf.h" + /* ------------------------------------------------------------------------- Macros ------------------------------------------------------------------------- */ @@ -132,3 +137,5 @@ ChfContext* _ChfGetContext( void ); #define ChfStrncpy strncpy #define ChfSprintf sprintf #define ChfVsprintf vsprintf + +#endif /*!_CHF_PRIV_H*/ diff --git a/libChf/src/resource.h b/libChf/src/resource.h deleted file mode 100644 index e0a81cc..0000000 --- a/libChf/src/resource.h +++ /dev/null @@ -1,15 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Developer Studio generated include file. -// Used by chf.rc -// - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -# ifndef APSTUDIO_READONLY_SYMBOLS -# define _APS_NEXT_RESOURCE_VALUE 101 -# define _APS_NEXT_COMMAND_VALUE 40001 -# define _APS_NEXT_CONTROL_VALUE 1000 -# define _APS_NEXT_SYMED_VALUE 101 -# endif -#endif diff --git a/src/MSFs/cpu.msf b/src/MSFs/cpu.msf deleted file mode 100644 index d6135b5..0000000 --- a/src/MSFs/cpu.msf +++ /dev/null @@ -1,64 +0,0 @@ -$ .+ -$ .identifier : $Id: cpu.msf,v 4.1 2000/12/11 09:54:19 cibrario Rel $ -$ .context : SATURN, Saturn CPU / HP48 emulator -$ .title : $RCSfile: cpu.msf,v $ -$ .kind : Message catalog source -$ .author : Ivan Cibrario B. -$ .site : CSTV-CNR -$ .creation : 13-Feb-1998 -$ .keywords : * -$ .description : -$ Message catalog source file for the CPU emulation modules. -$ .notes : -$ . $Log: cpu.msf,v $ -$ . Revision 4.1 2000/12/11 09:54:19 cibrario -$ . Public release. -$ . -$ . Revision 3.13 2000/11/09 11:27:48 cibrario -$ . Revised to add file selection box GUI element, CPU halt/run -$ . requests and emulator's extended functions: -$ . -$ . - New messages: 118, 119, 303 -$ . -$ . Revision 3.8 2000/10/19 14:56:52 cibrario -$ . Bug fix: -$ . Removed lines with empty directives -$ . -$ Revision 3.1 2000/09/20 13:44:30 cibrario -$ Revised to implement passive CPU shutdown: -$ - new messages 114, 115, 116, 117 -$ . -$ Revision 1.1 1998/02/18 11:50:36 cibrario -$ Initial revision -$ .- - -$set 1 -11 Cpu - -$set 11 -101 Function [%s] called -102 Executing @ PC[%05X] -103 CPU shutdown executed -104 CPU wake-up executed -105 %s request accepted -106 %s request pending -107 RTI loop to service %s -108 RTI returning -109 INTON servicing %s -110 CPU emulator [%s] -111 Timer1 expired CTRL[%01X] -112 Timer2 expired CTRL[%01X] -113 Emulator interrupt request detected -114 Timer[%s] Ctrl[%01X] Val[%08X] -115 Timer[%s] expires in [%d]d ms -116 Starting idle loop, timeout [%d]d ms -117 Spooling up after [%d]d us in idle loop -118 CPU halted by CpuHaltRequest() -119 CPU awoken by CpuRunRequest() -201 Can't restore CPU status from disk; resetting CPU -202 Monitor command syntax error [%s] -301 Bad opcode @ PC[%05X], N[%01X] -302 Can't save CPU status to disk -303 Halt/Run requests not allowed; #undef CPU_SPIN_SHUTDN -401 Internal error [%s] -402 Unexpected CPU shutdown diff --git a/src/MSFs/debug.msf b/src/MSFs/debug.msf deleted file mode 100644 index f590e7e..0000000 --- a/src/MSFs/debug.msf +++ /dev/null @@ -1,29 +0,0 @@ -$ .+ -$ .identifier : $Id: debug.msf,v 4.1 2000/12/11 09:54:19 cibrario Rel $ -$ .context : SATURN, Saturn CPU / HP48 emulator -$ .title : $RCSfile: debug.msf,v $ -$ .kind : Message catalog source -$ .author : Ivan Cibrario B. -$ .site : CSTV-CNR -$ .creation : 13-Feb-1998 -$ .keywords : * -$ .description : -$ Message catalog source file for the debugging support modules. -$ .notes : -$ . $Log: debug.msf,v $ -$ . Revision 4.1 2000/12/11 09:54:19 cibrario -$ . Public release. -$ . -$ . Revision 3.8 2000/10/19 14:55:10 cibrario -$ . Bug fix: -$ . Removed lines with empty directives -$ . -$ Revision 1.1 1998/02/18 11:54:02 cibrario -$ Initial revision -$ .- - -$set 1 -30 Debug - -$set 30 -201 Debug not supported; Rebuild with -DDEBUG diff --git a/src/MSFs/disk_io.msf b/src/MSFs/disk_io.msf deleted file mode 100644 index 73d59a0..0000000 --- a/src/MSFs/disk_io.msf +++ /dev/null @@ -1,44 +0,0 @@ -$ .+ -$ .identifier : $Id: disk_io.msf,v 4.1 2000/12/11 09:54:19 cibrario Rel $ -$ .context : SATURN, Saturn CPU / HP48 emulator -$ .title : $RCSfile: disk_io.msf,v $ -$ .kind : Message catalog source -$ .author : Ivan Cibrario B. -$ .site : CSTV-CNR -$ .creation : 13-Feb-1998 -$ .keywords : * -$ .description : -$ Message catalog source file for the disk I/O functions. -$ .notes : -$ . $Log: disk_io.msf,v $ -$ . Revision 4.1 2000/12/11 09:54:19 cibrario -$ . Public release. -$ . -$ . Revision 3.14 2000/11/13 10:32:24 cibrario -$ . Implemented fast load/save; improved keyboard interface emulation at -$ . high emulated CPU speed: -$ . -$ . - Fixed spelling error in message 405 -$ . - Added new messages: 407, 408 -$ . -$ . Revision 3.8 2000/10/19 14:58:41 cibrario -$ . Bug fix: -$ . Removed lines with empty directives -$ . -$ Revision 1.1 1998/02/17 11:54:49 cibrario -$ Initial revision -$ .- - -$set 1 -13 Disk_IO - -$set 13 -101 Function [%s] called -401 Can't open file [%s] -402 getc() failed reading file [%s] -403 putc() failed writing file [%s] -404 fread() failed reading file [%s] -405 fwrite() failed writing file [%s] -406 Close file [%s] failed -407 File [%s] has a bad header -408 File [%s] is too large diff --git a/src/MSFs/flash49.msf b/src/MSFs/flash49.msf deleted file mode 100644 index c57c0cc..0000000 --- a/src/MSFs/flash49.msf +++ /dev/null @@ -1,38 +0,0 @@ -$ .+ -$ .identifier : $Id: flash49.msf,v 4.1 2000/12/11 09:54:19 cibrario Rel $ -$ .context : SATURN, Saturn CPU / HPxx emulator -$ .title : $RCSfile: flash49.msf,v $ -$ .kind : Message catalog source -$ .author : Ivan Cibrario B. -$ .site : CSTV-CNR -$ .creation : 25-Sep-2000 -$ .keywords : * -$ .description : -$ Message catalog source file for the flash rom emulator. -$ .notes : -$ . $Log: flash49.msf,v $ -$ . Revision 4.1 2000/12/11 09:54:19 cibrario -$ . Public release. -$ . -$ . Revision 3.8 2000/10/19 15:00:41 cibrario -$ . Bug fix: -$ . Removed lines with empty directives -$ . -$ Revision 3.3 2000/09/26 15:30:28 cibrario -$ *** empty log message *** -$ .- - -$set 1 -16 Flash - -$set 16 -101 Read (Nibble) A[%08X] D[%01X] -102 Write (Nibble) A[%08X] D[%01X] -103 FSM STATE[%d] CYCLE[%d] -104 \tFSM Args: (Byte)A[%08X] D[%02X] -105 \tFSM Next: STATE[%d] RESULT[%02X] -106 \tFSM Operation: [%s] -201 Command unknown/not implemented - FSM Info:\n\ -\tSTATE[%d] CYCLE[%d] A[%08X] D[%02X] -202 Invalid address in Write to Buffer - FSM Info:\n\ -\tSTATE[%d] CYCLE[%d] A[%08X] D[%02X] diff --git a/src/MSFs/modules.msf b/src/MSFs/modules.msf deleted file mode 100644 index 3d84032..0000000 --- a/src/MSFs/modules.msf +++ /dev/null @@ -1,103 +0,0 @@ -$ .+ -$ .identifier : $Id: modules.msf,v 4.1 2000/12/11 09:54:19 cibrario Rel $ -$ .context : SATURN, Saturn CPU / HP48 emulator -$ .title : $RCSfile: modules.msf,v $ -$ .kind : Message catalog source -$ .author : Ivan Cibrario B. -$ .site : CSTV-CNR -$ .creation : 13-Feb-1998 -$ .keywords : * -$ .description : -$ Message catalog source file for the peripheral modules emulator. -$ .notes : -$ . $Log: modules.msf,v $ -$ . Revision 4.1 2000/12/11 09:54:19 cibrario -$ . Public release. -$ . -$ . Revision 3.8 2000/10/19 14:58:01 cibrario -$ . Bug fix: -$ . Removed lines with empty directives -$ . -$ Revision 3.3 2000/09/26 15:05:33 cibrario -$ Revised to implement Flash ROM write access: -$ - Added message 312 -$ . -$ Revision 3.2 2000/09/22 14:07:04 cibrario -$ Implemented preliminary support of HP49 hw architecture: -$ - added new messages: 311, 407, 408 -$ . -$ Revision 2.7 2000/09/19 11:13:12 cibrario -$ Deeply revised to implement config/unconfig cache. -$ . -$ Revision 2.4 2000/09/12 15:48:57 cibrario -$ Added messages 112, 113, 114, 211, 212, 306, 307, 308, 309, 310 -$ . -$ Revision 2.1 2000/09/08 15:22:17 cibrario -$ Updated message 209; added message 210. Both updates reflect the -$ changes made to the keyboard emulation module in order to -$ accommodate the new GUI. -$ . -$ Revision 1.1 1998/02/17 14:53:53 cibrario -$ Initial revision -$ .- - -$set 1 -12 Modules - -$set 12 -101 Function [%s] called -102 Initializing module [%s] -103 Resetting module [%s] -106 ModGetID -> [%05X] -107 CONFIG M[%s] A[%05X] S[%05X] -108 UNCNFG M[%s] A[%05X] S[%05X] -109 Saving module [%s] -110 Function [%s] not implemented -111 Modules emulator: [%s] -112 Bank Switcher F/F set to A[%05X] -113 Port 1 has been write-protected -114 Port 2 has been write-protected -115 >>> PerfCtr [%s]=[%d] -116 Cached UNCNFG completed -117 Cached CONFIG A[%05X] completed -118 Late UNCNFG cache hit -119 Late UNCNFG cache miss -202 Bad ModConfig [%05X] ignored -203 Bad ModUnconfig [%05X] ignored -204 Bad HdwWrite A[%05X] N[%01X] -205 Bad HdwRead A[%05X] -206 Resetting all modules -207 Can't initialize internal RAM from disk -208 Can't initialize HDW from disk -209 Bad key [%s] ignored -210 Bad out_bit [%x] ignored -211 Can't initialize Port 1 from disk -212 Can't initialize Port 2 from disk -213 Unable to find CONFIG cache victim; flushing cache -301 Read from unmapped A[%05X] -302 Write to unmapped A[%05X] N[%01X] -303 Write into ROM A[%05X] D[%01X] -304 Can't save internal RAM status to disk -305 Can't save HDW status to disk -306 Can't save Port 1 status to disk -307 Write into CE1 A[%05X] D[%01X] -308 Can't save Port 1 status to disk -309 Read from NCE3 A[%05X] when Port 2 is not present -310 Write into NCE3 A[%05X] D[%01X] when Port 2 is not present -311 Hardware configuration [%s] not supported -312 Can't save Flash ROM status to disk -401 Can't save module mapping info -402 Can't initialize internal ROM -403 Dynamic allocation of ModMap failed -404 Bad alloc_c [%d] after FlushCache() -405 Cached struct ModMap chain corrupted; freeing unlinked entry -406 Unable to find CONFIG cache victim after cache flush -407 Allocation of ModStatus_xx failed ([%d]d bytes needed) -408 ModInit() invoked without registering a ModDescription first -501 A[%05X] -> *Not Mapped* -502 A[%05X] -> M[%s] R[%05X] -503 Device\t\t\tAddress\tSize\tStatus -504 %s\t%05X\t%05X\t%s -505 Configured -506 Size_configured -507 *Unconfigured* diff --git a/src/MSFs/saturn.msf b/src/MSFs/saturn.msf deleted file mode 100644 index 427aad7..0000000 --- a/src/MSFs/saturn.msf +++ /dev/null @@ -1,33 +0,0 @@ -$ .+ -$ .identifier : $Id: saturn.msf,v 4.1 2000/12/11 09:54:19 cibrario Rel $ -$ .context : SATURN, Saturn CPU / HP48 emulator -$ .title : $RCSfile: saturn.msf,v $ -$ .kind : Message catalog source -$ .author : Ivan Cibrario B. -$ .site : CSTV-CNR -$ .creation : 8-Sep-2000 -$ .keywords : * -$ .description : -$ Message catalog source file for the main program. -$ .notes : -$ . $Log: saturn.msf,v $ -$ . Revision 4.1 2000/12/11 09:54:19 cibrario -$ . Public release. -$ . -$ . Revision 3.9 2000/10/24 16:11:48 cibrario -$ . Added messages 10/501 and 10/502 as suggested by GPL -$ . -$ . Revision 3.8 2000/10/19 15:01:20 cibrario -$ . Bug fix: -$ . Removed lines with empty directives -$ . -$ Revision 2.1 2000/09/08 15:35:43 cibrario -$ *** empty log message *** -$ .- - -$set 1 -10 Main - -$set 10 -501 saturn %s - A poor-man's emulator of HP48GX, HP49, HP39/40\nCopyright (C) 1998-2000 Ivan Cibrario Bertolotti\n -502 This program is free software, and comes with ABSOLUTELY NO WARRANTY;\nfor details see the accompanying documentation.\n\n diff --git a/src/MSFs/serial.msf b/src/MSFs/serial.msf deleted file mode 100644 index 6eac359..0000000 --- a/src/MSFs/serial.msf +++ /dev/null @@ -1,62 +0,0 @@ -$ .+ -$ .identifier : $Id: serial.msf,v 4.1 2000/12/11 09:54:19 cibrario Rel $ -$ .context : SATURN, Saturn CPU / HP48 emulator -$ .title : $RCSfile: serial.msf,v $ -$ .kind : Message catalog source -$ .author : Ivan Cibrario B. -$ .site : CSTV-CNR -$ .creation : 13-Sep-2000 -$ .keywords : * -$ .description : -$ Message catalog source file for the serial port emulator. -$ .notes : -$ . $Log: serial.msf,v $ -$ . Revision 4.1 2000/12/11 09:54:19 cibrario -$ . Public release. -$ . -$ . Revision 3.16 2000/11/21 16:42:18 cibrario -$ . Ultrix/IRIX support: -$ . - New message: 203 -$ . -$ . Revision 3.8 2000/10/19 15:00:10 cibrario -$ . Bug fix: -$ . Removed lines with empty directives -$ . -$ Revision 3.2 2000/09/22 14:38:08 cibrario -$ Implemented preliminary support of HP49 hw architecture: -$ - New messages: 408, 409 -$ . -$ Revision 2.6 2000/09/15 09:26:18 cibrario -$ Added new messages: 403, 404, 405, 406, 407, -$ needed by the implementation of USE_STREAMSPTY -$ . -$ Revision 2.5 2000/09/14 15:44:49 cibrario -$ *** empty log message *** -$ .- - -$set 1 -15 Serial - -$set 15 -101 Function [%s] called -102 Serial port emulator: [%s] -103 Read [%s]; value [%01X] -104 Write [%s]; value [%01X](old) -> [%01X](new) -105 Read RBR; value [%02X] -106 Write TBR; value [%02X] -107 Pseudo-terminal name is [%s] -201 Read from empty receiver buffer, rcs [%01X] -202 Write into full transmitter buffer, tcs [%01X] -203 Pseudo-terminals not supported -301 Error draining transmitter buffer -302 Error charging receiver buffer -303 Error shutting down pseudo-terminal -401 openpty() failed on master pty -402 fcntl() failed on master pty -403 Can't open() pty master [%s] -404 grantpt() failed on master pty -405 unlockpt() failed on master pty -406 Can't open() pty slave [%s] -407 ioctl(I_PUSH,[%s]) failed on slave pty -408 tcgetattr() failed on master pty -409 tcsetattr() failed on master pty diff --git a/src/MSFs/util.msf b/src/MSFs/util.msf deleted file mode 100644 index 8e21129..0000000 --- a/src/MSFs/util.msf +++ /dev/null @@ -1,38 +0,0 @@ -$ .+ -$ .identifier : $Id: util.msf,v 4.1 2000/12/11 09:54:19 cibrario Rel $ -$ .context : SATURN, Saturn CPU / HPxx emulator -$ .title : $RCSfile: util.msf,v $ -$ .kind : Message catalog source -$ .author : Ivan Cibrario B. -$ .site : CSTV-CNR -$ .creation : 2-Oct-2000 -$ .keywords : * -$ .description : -$ Message catalog source file for the utility programs. -$ .notes : -$ . $Log: util.msf,v $ -$ . Revision 4.1 2000/12/11 09:54:19 cibrario -$ . Public release. -$ . -$ . Revision 3.8 2000/10/19 15:01:43 cibrario -$ . Bug fix: -$ . Removed lines with empty directives -$ . -$ Revision 3.6 2000/10/02 13:59:02 cibrario -$ *** empty log message *** -$ .- - -$set 1 -17 Utilities - -$set 17 -1 Usage:\n\ - pack - -2 Command line syntax error -3 stat(%s) failed -4 Invalid source file size: %d -5 malloc(%d) failed -6 open(%s) failed -7 read(%s) failed -8 WriteNibblesToFile() failed diff --git a/src/MSFs/x11.msf b/src/MSFs/x11.msf deleted file mode 100644 index a111008..0000000 --- a/src/MSFs/x11.msf +++ /dev/null @@ -1,77 +0,0 @@ -$ .+ -$ .identifier : $Id: x11.msf,v 4.1 2000/12/11 09:54:19 cibrario Rel $ -$ .context : SATURN, Saturn CPU / HP48 emulator -$ .title : $RCSfile: x11.msf,v $ -$ .kind : Message catalog source -$ .author : Ivan Cibrario B. -$ .site : CSTV-CNR -$ .creation : 13-Feb-1998 -$ .keywords : * -$ .description : -$ Message catalog source file for the X11 interface modules and main program. -$ .notes : -$ . $Log: x11.msf,v $ -$ . Revision 4.1 2000/12/11 09:54:19 cibrario -$ . Public release. -$ . -$ . Revision 3.17 2000/11/23 17:03:52 cibrario -$ . Implemented sutil library and assorted bug fixes: -$ . - Added ending newline -$ . -$ . Revision 3.16 2000/11/21 16:43:40 cibrario -$ . Ultrix/IRIX support: -$ . - Removed single quote from message 402 -$ . -$ . Revision 3.15 2000/11/15 14:16:14 cibrario -$ . GUI enhancements and assorted bug fixes: -$ . - Revised message 108 to list the new command-line option -batchXfer -$ . - Added new messages 204 and 402 -$ . -$ . Revision 3.13 2000/11/09 11:39:18 cibrario -$ . Revised to add file selection box GUI element, CPU halt/run -$ . requests and emulator's extended functions: -$ . -$ . - New messages: 113, 114, 203, 303 -$ . -$ . Revision 3.9 2000/10/24 16:12:25 cibrario -$ . Revised messages 108 (updated command-line options) and 301 -$ . -$ . Revision 3.8 2000/10/19 14:59:23 cibrario -$ . Bug fix: -$ . Removed lines with empty directives -$ . -$ Revision 2.1 2000/09/08 15:31:18 cibrario -$ - Updated messages 104, 105, 108 -$ - Removed message 106 -$ - New messages 109, 110, 111, 112, 201, 202, 302 -$ . -$ Revision 1.1 1998/02/19 12:01:14 cibrario -$ Initial revision -$ .- - -$set 1 -14 X11 - -$set 14 -101 Function [%s] called -102 LCD Parameter [%s]: [%05X] -103 X Expose event LCD window, count=%d -104 Pressed key [%s] -105 Released key [%s] -107 X11 Interface [%s] -108 Usage:\n\t%s [-reset] [-monitor] [-batchXfer] [-stateDir <>]\n\t\t[-face <>] [-hw <>]\n\t\t[-cpu <>] [-mod <>] [-hdw <>]\n\t\t[-rom <>] [-ram <>] [-port1 <>] [-port2 <>] -109 Selected GUI face [%s] -110 Active GUI face has [%d] keys -111 Created key [%d], inOut [%s] -112 Found compoundString for widget [%s], value [%s] -113 Traversing widget [%s] -114 Current widget has [%d] children -201 Xt action called with wrong argc: [%d] -202 X Atom [%s] unknown -203 FSB continuation procedure not set -204 Too many messages not yet acknowledged (> [%d]).\n\tGUI logging temporarily suspended -301 Invalid option [%s] ignored -302 WM_COMMAND property bad or not set -303 No text segment found in a FSB XmString -401 X Window System fatal error -402 Face [%s] has no keys; the application resource\n\tfile probably is missing, corrupt, or unreachable diff --git a/src/MSFs/x_func.msf b/src/MSFs/x_func.msf deleted file mode 100644 index 41fe8d4..0000000 --- a/src/MSFs/x_func.msf +++ /dev/null @@ -1,46 +0,0 @@ -$ .+ -$ .identifier : $Id: x_func.msf,v 4.1 2000/12/11 09:54:19 cibrario Rel $ -$ .context : SATURN, Saturn CPU / HPxx emulator -$ .title : $RCSfile: x_func.msf,v $ -$ .kind : Message catalog source -$ .author : Ivan Cibrario B. -$ .site : CSTV-CNR -$ .creation : 3-Nov-2000 -$ .keywords : * -$ .description : -$ Message catalog source file for the emulator's extended functions. -$ .notes : -$ . $Log: x_func.msf,v $ -$ . Revision 4.1 2000/12/11 09:54:19 cibrario -$ . Public release. -$ . -$ . Revision 3.14 2000/11/13 11:14:19 cibrario -$ . Implemented fast load/save; improved keyboard interface emulation at -$ . high emulated CPU speed: -$ . -$ . - Added new messages: 105, 106, 107, 202, 203, 303, 501, 502 -$ . -$ . Revision 3.13 2000/11/09 11:42:22 cibrario -$ . *** empty log message *** -$ . -$ .- - -$set 1 -18 X_Func - -$set 18 -101 Function [%s] called -102 Emulator's extended function #[%01X] -103 Emulator speed set to [%d]MHz -104 Emulator at maximum speed -105 Transferring [%s] -106 Kget START[%05X] END[%05X] HDR[%s] -107 Send START[%05X] END[%05X] HDR[%s] -201 Invalid function code #[%01X] ignored -202 Operation aborted by user -203 Operation failed -301 Cpu Halt requests not allowed.\n\tRebuild with CPU_SPIN_SHUTDN undefined in config.h -302 Cpu speed control not available.\n\tRebuild with REAL_CPU_SPEED defined in config.h -303 Can't determine binary header for hw [%s] -501 Load object from disk... -502 Save object to disk... diff --git a/src/chf_messages.c b/src/chf_messages.c new file mode 100644 index 0000000..a28888b --- /dev/null +++ b/src/chf_messages.c @@ -0,0 +1,159 @@ +#include "chf_messages.h" + +ChfTable message_table[] = { + {CPU_CHF_MODULE_ID, CPU_I_CALLED, "Function [%s] called" }, + {CPU_CHF_MODULE_ID, CPU_I_EXECUTING, "Executing @ PC[%05X]" }, + {CPU_CHF_MODULE_ID, CPU_I_SHUTDN, "CPU shutdown executed" }, + {CPU_CHF_MODULE_ID, CPU_I_WAKE, "CPU wake-up executed" }, + {CPU_CHF_MODULE_ID, CPU_I_INT, "%s request accepted" }, + {CPU_CHF_MODULE_ID, CPU_I_INT_PENDING, "%s request pending" }, + {CPU_CHF_MODULE_ID, CPU_I_RTI_LOOP, "RTI loop to service %s" }, + {CPU_CHF_MODULE_ID, CPU_I_RTI_END, "RTI returning" }, + {CPU_CHF_MODULE_ID, CPU_I_INTON, "INTON servicing %s" }, + {CPU_CHF_MODULE_ID, CPU_I_REVISION, "CPU emulator [%s]" }, + {CPU_CHF_MODULE_ID, CPU_I_TIMER1_EX, "Timer1 expired CTRL[%01X]" }, + {CPU_CHF_MODULE_ID, CPU_I_TIMER2_EX, "Timer2 expired CTRL[%01X]" }, + {CPU_CHF_MODULE_ID, CPU_I_EMULATOR_INT, "Emulator interrupt request detected" }, + {CPU_CHF_MODULE_ID, CPU_I_TIMER_ST, "Timer[%s] Ctrl[%01X] Val[%08X]" }, + {CPU_CHF_MODULE_ID, CPU_I_TIMER_EXP, "Timer[%s] expires in [%d]d ms" }, + {CPU_CHF_MODULE_ID, CPU_I_IDLE_X_LOOP, "Starting idle loop, timeout [%d]d ms" }, + {CPU_CHF_MODULE_ID, CPU_I_ELAPSED, "Spooling up after [%d]d us in idle loop" }, + {CPU_CHF_MODULE_ID, CPU_I_HALT, "CPU halted by CpuHaltRequest()" }, + {CPU_CHF_MODULE_ID, CPU_I_RUN, "CPU awoken by CpuRunRequest()" }, + {CPU_CHF_MODULE_ID, CPU_W_RESETTING, "Can't restore CPU status from disk; resetting CPU" }, + {CPU_CHF_MODULE_ID, CPU_W_BAD_MONITOR_CMD, "Monitor command syntax error [%s]" }, + {CPU_CHF_MODULE_ID, CPU_E_BAD_OPCODE, "Bad opcode @ PC[%05X], N[%01X]" }, + {CPU_CHF_MODULE_ID, CPU_E_SAVE, "Can't save CPU status to disk" }, + {CPU_CHF_MODULE_ID, CPU_E_NO_HALT, "Halt/Run requests not allowed; #undef CPU_SPIN_SHUTDN" }, + {CPU_CHF_MODULE_ID, CPU_F_INTERR, "Internal error [%s]" }, + {CPU_CHF_MODULE_ID, CPU_F_BAD_SHUTDN, "Unexpected CPU shutdown" }, + + {DEBUG_CHF_MODULE_ID, DEBUG_W_NOT_SUPPORTED, "Debug not supported; Rebuild with -DDEBUG" }, + {DEBUG_CHF_MODULE_ID, DEBUG_W_BAD_CMD, "Debug: Invalid command" }, + + {DISK_IO_CHF_MODULE_ID, DISK_IO_S_OK, "Disk IO: OK" }, + {DISK_IO_CHF_MODULE_ID, DISK_IO_I_CALLED, "Function [%s] called" }, + {DISK_IO_CHF_MODULE_ID, DISK_IO_E_OPEN, "Can't open file [%s]" }, + {DISK_IO_CHF_MODULE_ID, DISK_IO_E_GETC, "getc() failed reading file [%s]" }, + {DISK_IO_CHF_MODULE_ID, DISK_IO_E_PUTC, "putc() failed writing file [%s]" }, + {DISK_IO_CHF_MODULE_ID, DISK_IO_E_READ, "fread() failed reading file [%s]" }, + {DISK_IO_CHF_MODULE_ID, DISK_IO_E_WRITE, "fwrite() failed writing file [%s]" }, + {DISK_IO_CHF_MODULE_ID, DISK_IO_E_CLOSE, "Close file [%s] failed" }, + {DISK_IO_CHF_MODULE_ID, DISK_IO_E_BAD_HDR, "File [%s] has a bad header" }, + {DISK_IO_CHF_MODULE_ID, DISK_IO_E_SIZE, "File [%s] is too large" }, + + {FLASH_CHF_MODULE_ID, FLASH_I_READ, "Read (Nibble) A[%08X] D[%01X]" }, + {FLASH_CHF_MODULE_ID, FLASH_I_WRITE, "Write (Nibble) A[%08X] D[%01X]" }, + {FLASH_CHF_MODULE_ID, FLASH_I_FSM, "FSM STATE[%d] CYCLE[%d]" }, + {FLASH_CHF_MODULE_ID, FLASH_I_FSM_AD, "\tFSM Args: (Byte)A[%08X] D[%02X]" }, + {FLASH_CHF_MODULE_ID, FLASH_I_FSM_RESULT, "\tFSM Next: STATE[%d] RESULT[%02X]" }, + {FLASH_CHF_MODULE_ID, FLASH_I_FSM_OP, "\tFSM Operation: [%s]" }, + {FLASH_CHF_MODULE_ID, FLASH_W_BAD_CMD, "Command unknown/not implemented - FSM Info:\n\\tSTATE[%d] CYCLE[%d] A[%08X] D[%02X]" }, + {FLASH_CHF_MODULE_ID, FLASH_W_BAD_ADDRESS, "Invalid address in Write to Buffer - FSM Info:\n\\tSTATE[%d] CYCLE[%d] A[%08X] D[%02X]"}, + {FLASH_CHF_MODULE_ID, FLASH_E_xxx, "FLASH_E_xxx" }, + {FLASH_CHF_MODULE_ID, FLASH_F_xxx, "FLASH_F_xxx" }, + + {MOD_CHF_MODULE_ID, MOD_I_CALLED, "Function [%s] called" }, + {MOD_CHF_MODULE_ID, MOD_I_INITIALIZING, "Initializing module [%s]" }, + {MOD_CHF_MODULE_ID, MOD_I_RESETTING, "Resetting module [%s]" }, + {MOD_CHF_MODULE_ID, MOD_I_GET_ID, "ModGetID -> [%05X]" }, + {MOD_CHF_MODULE_ID, MOD_I_CONFIG, "CONFIG M[%s] A[%05X] S[%05X]" }, + {MOD_CHF_MODULE_ID, MOD_I_UNCONFIG, "UNCNFG M[%s] A[%05X] S[%05X]" }, + {MOD_CHF_MODULE_ID, MOD_I_SAVING, "Saving module [%s]" }, + {MOD_CHF_MODULE_ID, MOD_I_NOT_IMPLEMENTED, "Function [%s] not implemented" }, + {MOD_CHF_MODULE_ID, MOD_I_REVISION, "Modules emulator: [%s]" }, + {MOD_CHF_MODULE_ID, MOD_I_BS_ADDRESS, "Bank Switcher F/F set to A[%05X]" }, + {MOD_CHF_MODULE_ID, MOD_I_PORT_1_WP, "Port 1 has been write-protected" }, + {MOD_CHF_MODULE_ID, MOD_I_PORT_2_WP, "Port 2 has been write-protected" }, + {MOD_CHF_MODULE_ID, MOD_I_PERF_CTR, ">>> PerfCtr [%s]=[%d]" }, + {MOD_CHF_MODULE_ID, MOD_I_CACHED_UNCONFIG, "Cached UNCNFG completed" }, + {MOD_CHF_MODULE_ID, MOD_I_CACHED_CONFIG, "Cached CONFIG A[%05X] completed" }, + {MOD_CHF_MODULE_ID, MOD_I_UNCONFIG_L_HIT, "Late UNCNFG cache hit" }, + {MOD_CHF_MODULE_ID, MOD_I_UNCONFIG_L_MISS, "Late UNCNFG cache miss" }, + {MOD_CHF_MODULE_ID, MOD_W_BAD_CONFIG, "Bad ModConfig [%05X] ignored" }, + {MOD_CHF_MODULE_ID, MOD_W_BAD_UNCONFIG, "Bad ModUnconfig [%05X] ignored" }, + {MOD_CHF_MODULE_ID, MOD_W_HDW_WRITE, "Bad HdwWrite A[%05X] N[%01X]" }, + {MOD_CHF_MODULE_ID, MOD_W_HDW_READ, "Bad HdwRead A[%05X]" }, + {MOD_CHF_MODULE_ID, MOD_W_RESETTING_ALL, "Resetting all modules" }, + {MOD_CHF_MODULE_ID, MOD_W_RAM_INIT, "Can't initialize internal RAM from disk" }, + {MOD_CHF_MODULE_ID, MOD_W_HDW_INIT, "Can't initialize HDW from disk" }, + {MOD_CHF_MODULE_ID, MOD_W_BAD_KEY, "Bad key [%s] ignored" }, + {MOD_CHF_MODULE_ID, MOD_W_BAD_OUT_BIT, "Bad out_bit [%x] ignored" }, + {MOD_CHF_MODULE_ID, MOD_W_PORT_1_INIT, "Can't initialize Port 1 from disk" }, + {MOD_CHF_MODULE_ID, MOD_W_PORT_2_INIT, "Can't initialize Port 2 from disk" }, + {MOD_CHF_MODULE_ID, MOD_W_NO_VICTIM, "Unable to find CONFIG cache victim; flushing cache" }, + {MOD_CHF_MODULE_ID, MOD_E_BAD_READ, "Read from unmapped A[%05X]" }, + {MOD_CHF_MODULE_ID, MOD_E_BAD_WRITE, "Write to unmapped A[%05X] N[%01X]" }, + {MOD_CHF_MODULE_ID, MOD_E_ROM_WRITE, "Write into ROM A[%05X] D[%01X]" }, + {MOD_CHF_MODULE_ID, MOD_E_RAM_SAVE, "Can't save internal RAM status to disk" }, + {MOD_CHF_MODULE_ID, MOD_E_HDW_SAVE, "Can't save HDW status to disk" }, + {MOD_CHF_MODULE_ID, MOD_E_PORT_1_SAVE, "Can't save Port 1 status to disk" }, + {MOD_CHF_MODULE_ID, MOD_E_CE1_WRITE, "Write into CE1 A[%05X] D[%01X]" }, + {MOD_CHF_MODULE_ID, MOD_E_PORT_2_SAVE, "Can't save Port 1 status to disk" }, + {MOD_CHF_MODULE_ID, MOD_E_NCE3_READ, "Read from NCE3 A[%05X] when Port 2 is not present" }, + {MOD_CHF_MODULE_ID, MOD_E_NCE3_WRITE, "Write into NCE3 A[%05X] D[%01X] when Port 2 is not present" }, + {MOD_CHF_MODULE_ID, MOD_E_NO_MATCH, "Hardware configuration [%s] not supported" }, + {MOD_CHF_MODULE_ID, MOD_E_ROM_SAVE, "Can't save Flash ROM status to disk" }, + {MOD_CHF_MODULE_ID, MOD_F_MAP_SAVE, "Can't save module mapping info" }, + {MOD_CHF_MODULE_ID, MOD_F_ROM_INIT, "Can't initialize internal ROM" }, + {MOD_CHF_MODULE_ID, MOD_F_MAP_ALLOC, "Dynamic allocation of ModMap failed" }, + {MOD_CHF_MODULE_ID, MOD_F_BAD_ALLOC_C, "Bad alloc_c [%d] after FlushCache()" }, + {MOD_CHF_MODULE_ID, MOD_F_CHAIN_CORRUPTED, "Cached struct ModMap chain corrupted; freeing unlinked entry" }, + {MOD_CHF_MODULE_ID, MOD_F_NO_VICTIM, "Unable to find CONFIG cache victim after cache flush" }, + {MOD_CHF_MODULE_ID, MOD_F_MOD_STATUS_ALLOC, "Allocation of ModStatus_xx failed ([%d]d bytes needed)" }, + {MOD_CHF_MODULE_ID, MOD_F_NO_DESCRIPTION, "ModInit() invoked without registering a ModDescription first" }, + {MOD_CHF_MODULE_ID, MOD_M_NOT_MAPPED, "A[%05X] -> *Not Mapped*" }, + {MOD_CHF_MODULE_ID, MOD_M_MAPPED, "A[%05X] -> M[%s] R[%05X]" }, + {MOD_CHF_MODULE_ID, MOD_M_MAP_TABLE_TITLE, "Device\t\t\tAddress\tSize\tStatus" }, + {MOD_CHF_MODULE_ID, MOD_M_MAP_TABLE_ROW, "%s\t%05X\t%05X\t%s" }, + {MOD_CHF_MODULE_ID, MOD_M_MAP_CONFIGURED, "Configured" }, + {MOD_CHF_MODULE_ID, MOD_M_MAP_SZ_CONFIGURED, "Size_configured" }, + {MOD_CHF_MODULE_ID, MOD_M_MAP_UNCONFIGURED, "*Unconfigured*" }, + + {MAIN_CHF_MODULE_ID, MAIN_M_COPYRIGHT, + "saturn %s - A poor-man's emulator of HP48GX, HP49, HP39/40\nCopyright (C) 1998-2000 Ivan Cibrario Bertolotti\n" }, + {MAIN_CHF_MODULE_ID, MAIN_M_LICENSE, + "This program is free software, and comes with ABSOLUTELY NO WARRANTY;\nfor details see the accompanying documentation.\n\n" }, + + {SERIAL_CHF_MODULE_ID, SERIAL_I_CALLED, "Function [%s] called" }, + {SERIAL_CHF_MODULE_ID, SERIAL_I_REVISION, "Serial port emulator: [%s]" }, + {SERIAL_CHF_MODULE_ID, SERIAL_I_READ, "Read [%s]; value [%01X]" }, + {SERIAL_CHF_MODULE_ID, SERIAL_I_WRITE, "Write [%s]; value [%01X](old) -> [%01X](new)" }, + {SERIAL_CHF_MODULE_ID, SERIAL_I_RBR, "Read RBR; value [%02X]" }, + {SERIAL_CHF_MODULE_ID, SERIAL_I_TBR, "Write TBR; value [%02X]" }, + {SERIAL_CHF_MODULE_ID, SERIAL_I_PTY_NAME, "Pseudo-terminal name is [%s]" }, + {SERIAL_CHF_MODULE_ID, SERIAL_W_EMPTY_RRB, "Read from empty receiver buffer, rcs [%01X]" }, + {SERIAL_CHF_MODULE_ID, SERIAL_W_FULL_TRB, "Write into full transmitter buffer, tcs [%01X]" }, + {SERIAL_CHF_MODULE_ID, SERIAL_W_NOPTY, "Pseudo-terminals not supported" }, + {SERIAL_CHF_MODULE_ID, SERIAL_E_TRB_DRAIN, "Error draining transmitter buffer" }, + {SERIAL_CHF_MODULE_ID, SERIAL_E_RRB_CHARGE, "Error charging receiver buffer" }, + {SERIAL_CHF_MODULE_ID, SERIAL_E_PTY_CLOSE, "Error shutting down pseudo-terminal" }, + {SERIAL_CHF_MODULE_ID, SERIAL_F_OPENPTY, "openpty() failed on master pty" }, + {SERIAL_CHF_MODULE_ID, SERIAL_F_FCNTL, "fcntl() failed on master pty" }, + {SERIAL_CHF_MODULE_ID, SERIAL_F_OPEN_MASTER, "Can't open() pty master [%s]" }, + {SERIAL_CHF_MODULE_ID, SERIAL_F_GRANTPT, "grantpt() failed on master pty" }, + {SERIAL_CHF_MODULE_ID, SERIAL_F_UNLOCKPT, "unlockpt() failed on master pty" }, + {SERIAL_CHF_MODULE_ID, SERIAL_F_OPEN_SLAVE, "Can't open() pty slave [%s]" }, + {SERIAL_CHF_MODULE_ID, SERIAL_F_PUSH, "ioctl(I_PUSH,[%s]) failed on slave pty" }, + {SERIAL_CHF_MODULE_ID, SERIAL_F_TCGETATTR, "tcgetattr() failed on master pty" }, + {SERIAL_CHF_MODULE_ID, SERIAL_F_TCSETATTR, "tcsetattr() failed on master pty" }, + + {X_FUNC_CHF_MODULE_ID, X_FUNC_I_CALLED, "Function [%s] called" }, + {X_FUNC_CHF_MODULE_ID, X_FUNC_I_CODE, "Emulator's extended function #[%01X]" }, + {X_FUNC_CHF_MODULE_ID, X_FUNC_I_SET_SPEED, "Emulator speed set to [%d]MHz" }, + {X_FUNC_CHF_MODULE_ID, X_FUNC_I_MAX_SPEED, "Emulator at maximum speed" }, + {X_FUNC_CHF_MODULE_ID, X_FUNC_I_FILE_NAME, "Transferring [%s]" }, + {X_FUNC_CHF_MODULE_ID, X_FUNC_I_KGET, "Kget START[%05X] END[%05X] HDR[%s]" }, + {X_FUNC_CHF_MODULE_ID, X_FUNC_I_SEND, "Send START[%05X] END[%05X] HDR[%s]" }, + {X_FUNC_CHF_MODULE_ID, X_FUNC_W_BAD_CODE, "Invalid function code #[%01X] ignored" }, + {X_FUNC_CHF_MODULE_ID, X_FUNC_W_ABORTED, "Operation aborted by user" }, + {X_FUNC_CHF_MODULE_ID, X_FUNC_W_FAILED, "Operation failed" }, + {X_FUNC_CHF_MODULE_ID, X_FUNC_E_NO_HALT, "Cpu Halt requests not allowed.\n\tRebuild with CPU_SPIN_SHUTDN undefined in config.h" }, + {X_FUNC_CHF_MODULE_ID, X_FUNC_E_NO_SPEED, "Cpu speed control not available.\n\tRebuild with REAL_CPU_SPEED defined in config.h" }, + {X_FUNC_CHF_MODULE_ID, X_FUNC_E_NO_BIN_HDR, "Can't determine binary header for hw [%s]" }, + {X_FUNC_CHF_MODULE_ID, X_FUNC_F_xxx, "X_FUNC_F_xxx" }, + {X_FUNC_CHF_MODULE_ID, X_FUNC_M_KGET, "Load object from disk..." }, + {X_FUNC_CHF_MODULE_ID, X_FUNC_M_SEND, "Save object to disk..." }, +}; + +size_t message_table_size = sizeof( message_table ) / sizeof( message_table[ 0 ] ); diff --git a/src/chf_messages.h b/src/chf_messages.h new file mode 100644 index 0000000..5503cb1 --- /dev/null +++ b/src/chf_messages.h @@ -0,0 +1,188 @@ +#ifndef _CHF_MESSAGES_H +#define _CHF_MESSAGES_H 1 + +#include + +#include +// #include "../libChf/src/Chf.h" + +/* Chf Module Identifiers: + Each main module of the emulator has its own Chf Module Identifier; the + values defined here must match those actually used in the message catalogs. +*/ +#define CPU_CHF_MODULE_ID 11 +#define DEBUG_CHF_MODULE_ID 30 +#define DISK_IO_CHF_MODULE_ID 13 +#define FLASH_CHF_MODULE_ID 16 /* 3.3 */ +#define MOD_CHF_MODULE_ID 12 +#define MAIN_CHF_MODULE_ID 10 +#define SERIAL_CHF_MODULE_ID 15 /* 2.5 */ +#define X_FUNC_CHF_MODULE_ID 18 /* 3.13 */ + +/*--------------------------------------------------------------------------- + Chf condition codes + ---------------------------------------------------------------------------*/ +// cpu.h +#define CPU_I_CALLED 101 /* Function %s called */ +#define CPU_I_EXECUTING 102 /* Executing @PC %X */ +#define CPU_I_SHUTDN 103 /* Shutdown */ +#define CPU_I_WAKE 104 /* Wake */ +#define CPU_I_INT 105 /* %s request accepted */ +#define CPU_I_INT_PENDING 106 /* %s request pending */ +#define CPU_I_RTI_LOOP 107 /* RTI loop to service %s */ +#define CPU_I_RTI_END 108 /* RTI returning */ +#define CPU_I_INTON 109 /* INTON servicing %s */ +#define CPU_I_REVISION 110 /* CPU emulation revision: %s */ +#define CPU_I_TIMER1_EX 111 /* Timer 1 expired; ctrl=%x */ +#define CPU_I_TIMER2_EX 112 /* Timer 1 expired; ctrl=%x */ +#define CPU_I_EMULATOR_INT 113 /* Emulator interrupt req. detected */ +#define CPU_I_TIMER_ST 114 /* 3.1: Timer %s st: ctrl %x, val %x */ +#define CPU_I_TIMER_EXP 115 /* 3.1: Timer %s expiration %d ms */ +#define CPU_I_IDLE_X_LOOP 116 /* 3.1: Start idle loop, t/out %d ms */ +#define CPU_I_ELAPSED 117 /* 3.1: Spent %d us in idle loop */ +#define CPU_I_HALT 118 /* 3.13: CPU halted */ +#define CPU_I_RUN 119 /* 3.13: CPU running */ +#define CPU_W_RESETTING 201 /* Resetting CPU */ +#define CPU_W_BAD_MONITOR_CMD 202 /* Bad monitor command: %s */ +#define CPU_E_BAD_OPCODE 301 /* Bad opc. pc=%x, value=%x */ +#define CPU_E_SAVE 302 /* Can't save CPU status */ +#define CPU_E_NO_HALT 303 /* 3.13: Halt/Run not allowed */ +#define CPU_F_INTERR 401 /* Internal error %s */ +#define CPU_F_BAD_SHUTDN 402 /* Unexpected CPU shutdown */ + +// debug.h +#define DEBUG_W_NOT_SUPPORTED 201 /* Debug not supported */ +#define DEBUG_W_BAD_CMD 202 /* Invalid command */ + +// disk_io.h +#define DISK_IO_S_OK 0 /* Function completed succesfully */ +#define DISK_IO_I_CALLED 101 /* Function %s called */ +#define DISK_IO_E_OPEN 401 /* Open file %s failed */ +#define DISK_IO_E_GETC 402 /* getc() from file %s failed */ +#define DISK_IO_E_PUTC 403 /* putc() to file %s failed */ +#define DISK_IO_E_READ 404 /* fread() from file %s failed */ +#define DISK_IO_E_WRITE 405 /* fwrite() to file %s failed */ +#define DISK_IO_E_CLOSE 406 /* Close file %s failed */ +#define DISK_IO_E_BAD_HDR 407 /* File %s has a bad header */ +#define DISK_IO_E_SIZE 408 /* File %s too large */ + +// flash49.h +#define FLASH_I_READ 101 /* Read from address %x: %d */ +#define FLASH_I_WRITE 102 /* Write address %x, datum %x */ +#define FLASH_I_FSM 103 /* FSM from state %d, cycle %d */ +#define FLASH_I_FSM_AD 104 /* FSM address %x, data %x */ +#define FLASH_I_FSM_RESULT 105 /* FSM next state %d, result %x */ +#define FLASH_I_FSM_OP 106 /* FSM operation %s */ +#define FLASH_W_BAD_CMD 201 /* Bad cmd st%d, cycle%d, a%x, d%d */ +#define FLASH_W_BAD_ADDRESS 202 /* Bad addr st%d, cycle%d, a%x, d%d */ +#define FLASH_E_xxx 301 +#define FLASH_F_xxx 401 + +// modules.h +#define MOD_I_CALLED 101 /* Function %s called */ +#define MOD_I_INITIALIZING 102 /* Initializing module %s */ +#define MOD_I_RESETTING 103 /* Resetting module %s */ +#define MOD_I_GET_ID 106 /* ModGetID returning %x */ +#define MOD_I_CONFIG 107 /* ModConfig %s %x %x completed */ +#define MOD_I_UNCONFIG 108 /* ModUnconfig %s %x %x completed */ +#define MOD_I_SAVING 109 /* Saving status of module %s */ +#define MOD_I_NOT_IMPLEMENTED 110 /* Function %s not implemented */ +#define MOD_I_REVISION 111 /* Modules revision: %s */ +#define MOD_I_BS_ADDRESS 112 /* 2.4: Bank Switcher address: %x */ +#define MOD_I_PORT_1_WP 113 /* 2.4: Port 1 is write protected */ +#define MOD_I_PORT_2_WP 114 /* 2.4: Port 2 is write protected */ +#define MOD_I_PERF_CTR 115 /* 2.7: Value of PerfCtr %s is %d */ +#define MOD_I_CACHED_UNCONFIG 116 /* 2.7: Cached ModUnconfig completed */ +#define MOD_I_CACHED_CONFIG 117 /* 2.7: Cached ModConfig %x comp. */ +#define MOD_I_UNCONFIG_L_HIT 118 /* 2.7: Late unconfig hit */ +#define MOD_I_UNCONFIG_L_MISS 119 /* 2.7: Late unconfig miss */ +#define MOD_W_BAD_CONFIG 202 /* Bad ModConfig %x ignored */ +#define MOD_W_BAD_UNCONFIG 203 /* Bad ModUnconfig %x ignored */ +#define MOD_W_HDW_WRITE 204 /* Bad HdwWrite %x, %x */ +#define MOD_W_HDW_READ 205 /* Bad HdwRead %x */ +#define MOD_W_RESETTING_ALL 206 /* Resetting all modules */ +#define MOD_W_RAM_INIT 207 /* Can't initialize internal RAM */ +#define MOD_W_HDW_INIT 208 /* Can't initialize HDW */ +#define MOD_W_BAD_KEY 209 /* 2.1: Bad key %s ignored */ +#define MOD_W_BAD_OUT_BIT 210 /* 2.1: Bad out_bit %x ignored */ +#define MOD_W_PORT_1_INIT 211 /* 2.4: Can't initialize Port 1 */ +#define MOD_W_PORT_2_INIT 212 /* 2.4: Can't initialize Port 2 */ +#define MOD_W_NO_VICTIM 213 /* 2.7: No cache victim; flush/retry */ +#define MOD_E_BAD_READ 301 /* Read unmapped addr %x */ +#define MOD_E_BAD_WRITE 302 /* Write unmapped addr %x datum %x */ +#define MOD_E_ROM_WRITE 303 /* Write into ROM addr %x datum %x */ +#define MOD_E_RAM_SAVE 304 /* Can't save internal RAM status */ +#define MOD_E_HDW_SAVE 305 /* Can't save HDW status */ +#define MOD_E_PORT_1_SAVE 306 /* 2.4: Can't save Port 1 status */ +#define MOD_E_CE1_WRITE 307 /* 2.4: Ce1Write addr %x datum %x */ +#define MOD_E_PORT_2_SAVE 308 /* 2.4: Can't save Port 2 status */ +#define MOD_E_NCE3_READ 309 /* 2.4: Read from NCE3 addr %x */ +#define MOD_E_NCE3_WRITE 310 /* 2.4: Wr. to NCE3 addr %x datum %x */ +#define MOD_E_NO_MATCH 311 /* 3.2: Hw desription %s not found */ +#define MOD_E_ROM_SAVE 312 /* 3.3: Can't save Flash ROM */ +#define MOD_F_MAP_SAVE 401 /* Can't save mod_map information */ +#define MOD_F_ROM_INIT 402 /* Can't initialize internal ROM */ +#define MOD_F_MAP_ALLOC 403 /* Dynamic map allocation failed */ +#define MOD_F_BAD_ALLOC_C 404 /* 2.7: Bad alloc_c %d aft FlushCache*/ +#define MOD_F_CHAIN_CORRUPTED 405 /* 2.7: ModMap chain corrupted */ +#define MOD_F_NO_VICTIM 406 /* 2.7: No cache victim after flush */ +#define MOD_F_MOD_STATUS_ALLOC 407 /* 3.2: ModStatus_xx alloc failed %d */ +#define MOD_F_NO_DESCRIPTION 408 /* 3.2: No module description */ +#define MOD_M_NOT_MAPPED 501 /* Address %x not mapped */ +#define MOD_M_MAPPED 502 /* Address %x mapped to %s:%x */ +#define MOD_M_MAP_TABLE_TITLE 503 /* */ +#define MOD_M_MAP_TABLE_ROW 504 /* %s %x %x %s */ +#define MOD_M_MAP_CONFIGURED 505 /* Configured */ +#define MOD_M_MAP_SZ_CONFIGURED 506 /* Size configured */ +#define MOD_M_MAP_UNCONFIGURED 507 /* Unconfigured */ + +// main.c +#define MAIN_M_COPYRIGHT 501 +#define MAIN_M_LICENSE 502 + +// serial.h +#define SERIAL_I_CALLED 101 /* Function %s called */ +#define SERIAL_I_REVISION 102 /* Serial port emulation rev. %s */ +#define SERIAL_I_READ 103 /* Read %s -> %x */ +#define SERIAL_I_WRITE 104 /* Write %s %x -> %x */ +#define SERIAL_I_RBR 105 /* Read RBR -> %x */ +#define SERIAL_I_TBR 106 /* Write TBR <- %x */ +#define SERIAL_I_PTY_NAME 107 /* pty name is %s */ +#define SERIAL_W_EMPTY_RRB 201 /* Read from empty RX buffer, rcs=%x */ +#define SERIAL_W_FULL_TRB 202 /* Write into full TX buffer, tcs=%x */ +#define SERIAL_W_NOPTY 203 /* 3.16: Pty support not available */ +#define SERIAL_E_TRB_DRAIN 301 /* Error draining TX buffer */ +#define SERIAL_E_RRB_CHARGE 302 /* Error charging RX buffer */ +#define SERIAL_E_PTY_CLOSE 303 /* Error closing pty */ +#define SERIAL_F_OPENPTY 401 /* openpty() failed on master pty */ +#define SERIAL_F_FCNTL 402 /* fcntl() failed on master pty */ +#define SERIAL_F_OPEN_MASTER 403 /* Can't open pty master %s */ +#define SERIAL_F_GRANTPT 404 /* grantpt() failed on master pty */ +#define SERIAL_F_UNLOCKPT 405 /* unlockpt() failed on master pty */ +#define SERIAL_F_OPEN_SLAVE 406 /* Can't open pty slave %s */ +#define SERIAL_F_PUSH 407 /* ioctl(I_PUSH,%s) failed on slave */ +#define SERIAL_F_TCGETATTR 408 /* tcgetattr() failed on master */ +#define SERIAL_F_TCSETATTR 409 /* tcsetattr() failed on master */ + +// x_func.h +#define X_FUNC_I_CALLED 101 /* Function %s called */ +#define X_FUNC_I_CODE 102 /* Function code %d */ +#define X_FUNC_I_SET_SPEED 103 /* Speed set to %dMhz (%d mult.) */ +#define X_FUNC_I_MAX_SPEED 104 /* Emulator at max speed */ +#define X_FUNC_I_FILE_NAME 105 /* Transferring file name %s */ +#define X_FUNC_I_KGET 106 /* Kget start:%x end:%x hdr:%s */ +#define X_FUNC_I_SEND 107 /* Send start:%x end:%x hdr:%s */ +#define X_FUNC_W_BAD_CODE 201 /* Bad function code %d ignored */ +#define X_FUNC_W_ABORTED 202 /* Aborted by user */ +#define X_FUNC_W_FAILED 203 /* Operation failed */ +#define X_FUNC_E_NO_HALT 301 /* Cpu halt not allowed */ +#define X_FUNC_E_NO_SPEED 302 /* No speed control available */ +#define X_FUNC_E_NO_BIN_HDR 303 /* Can't determine hdr for hw %s */ +#define X_FUNC_F_xxx 401 +#define X_FUNC_M_KGET 501 /* FSB title for Kget function */ +#define X_FUNC_M_SEND 502 /* FSB title for Send function */ + +extern ChfTable message_table[]; +extern size_t message_table_size; + +#endif /*!_CHF_MESSAGES_H*/ diff --git a/src/main.c b/src/main.c index 9614cdb..a234433 100644 --- a/src/main.c +++ b/src/main.c @@ -13,47 +13,13 @@ #include "config.h" #include "cpu.h" #include "monitor.h" +#include "chf_messages.h" #define UI_REFRESH_RATE_Hz 64 -/* Chf condition codes (main program only) */ - -#define CHF_MODULE_ID MAIN_CHF_MODULE_ID -#include - -#define MAIN_M_COPYRIGHT 501 -#define MAIN_M_LICENSE 502 - -/*--------------------------------------------------------------------------- - Chf parameters - Do not change. - ---------------------------------------------------------------------------*/ - #define CONDITION_STACK_SIZE 16 #define HANDLER_STACK_SIZE 8 -/* Conditional prefix and mandatory suffix to make a message catalog - name from argv[0] -*/ -static const char cat_prefix[] = "./"; -static const char cat_suffix[] = ".cat"; - -#define CAT_PREFIX_LEN ( sizeof( cat_prefix ) + 1 ) -#define CAT_SUFFIX_LEN ( sizeof( cat_suffix ) + 1 ) - -static void adjust_setlocale( void ) -{ - fprintf( stderr, "saturn-W-locale probably bad; reverting to C locale\n" ); - - putenv( "LC_ALL=C" ); - putenv( "LC_COLLATE=C" ); - putenv( "LC_CTYPE=C" ); - putenv( "LC_MESSAGES=C" ); - putenv( "LC_MONETARY=C" ); - putenv( "LC_NUMERIC=C" ); - putenv( "LC_TIME=C" ); - putenv( "LANG=C" ); -} - void signal_handler( int sig ) { switch ( sig ) { @@ -76,93 +42,26 @@ void signal_handler( int sig ) int main( int argc, char** argv ) { config = *config_init( argc, argv ); - char* cat_name; - int st; - int retry = 0; - if ( ( cat_name = malloc( strlen( argv[ 0 ] ) + CAT_PREFIX_LEN + CAT_SUFFIX_LEN + 1 ) ) == NULL ) { - fprintf( stderr, "saturn-E-cat_name initialization failed\n" ); - exit( EXIT_FAILURE ); - } - - /* Generate catalog name, without optional prefix */ - strcpy( cat_name, argv[ 0 ] ); - strcat( cat_name, cat_suffix ); - - /* 3.15: Retry the initialization steps below two times; before trying - the second time, adjust the setlocale() environment variables - with adjust_setlocale() - */ - while ( retry < 2 ) { - /* Chf initialization with msgcat subsystem; notice that on + /* Chf initialization with msgcat subsystem; notice that on some systems (e.g. Digital UNIX) catopen() can succeed even if it was not able to open the right message catalog; better try it now. */ - if ( ( st = ChfMsgcatInit( argv[ 0 ], /* Application's name */ - CHF_DEFAULT, /* Options */ - cat_name, /* Name of the message catalog */ - CONDITION_STACK_SIZE, /* Size of the condition stack */ - HANDLER_STACK_SIZE, /* Size of the handler stack */ - EXIT_FAILURE /* Abnormal exit code */ - ) ) != CHF_S_OK || - ChfGetMessage( CHF_MODULE_ID, MAIN_M_COPYRIGHT, NULL ) == NULL ) - fprintf( stderr, "saturn-E-Primary Chf initialization failed (%d)\n", st ); - else - break; - - /* if ( ( st = ChfStaticInit( argv[ 0 ], /\* Application's name *\/ */ - /* CHF_DEFAULT, /\* Options *\/ */ - /* [], /\* Name of the message catalog *\/ */ - /* CONDITION_STACK_SIZE, /\* Size of the condition stack *\/ */ - /* HANDLER_STACK_SIZE, /\* Size of the handler stack *\/ */ - /* EXIT_FAILURE /\* Abnormal exit code *\/ */ - /* ) ) != CHF_S_OK || */ - /* ChfGetMessage( CHF_MODULE_ID, MAIN_M_COPYRIGHT, NULL ) == NULL ) */ - /* fprintf( stderr, "saturn-E-Primary Chf initialization failed (%d)\n", st ); */ - /* else */ - /* break; */ - - /* Bring down Chf before initializing it again */ - if ( st == CHF_S_OK ) - ChfExit(); - - /* Try alternate message catalog name (with prefix) */ - strcpy( cat_name, cat_prefix ); - strcat( cat_name, argv[ 0 ] ); - strcat( cat_name, cat_suffix ); - - if ( ( st = ChfMsgcatInit( argv[ 0 ], /* Application's name */ - CHF_DEFAULT, /* Options */ - cat_name, /* Name of the message catalog */ - CONDITION_STACK_SIZE, /* Size of the condition stack */ - HANDLER_STACK_SIZE, /* Size of the handler stack */ - EXIT_FAILURE /* Abnormal exit code */ - ) ) != CHF_S_OK || - ChfGetMessage( CHF_MODULE_ID, MAIN_M_COPYRIGHT, NULL ) == NULL ) - fprintf( stderr, "saturn-E-Alternate Chf initialization failed (%d)\n", st ); - else - break; - - /* Bring down Chf before initializing it again */ - if ( st == CHF_S_OK ) - ChfExit(); - - /* Attempt to adjust setlocale() environment variables */ - if ( retry++ == 0 ) - adjust_setlocale(); - } - - if ( retry == 2 ) { - fprintf( stderr, "saturn-F-Application aborted\n" ); + if ( ( ChfStaticInit( argv[ 0 ], /* Application's name */ + CHF_DEFAULT, /* Options */ + message_table, /* Name of the message catalog */ + message_table_size, /* message catalog size */ + CONDITION_STACK_SIZE, /* Size of the condition stack */ + HANDLER_STACK_SIZE, /* Size of the handler stack */ + EXIT_FAILURE /* Abnormal exit code */ + ) ) != CHF_S_OK ) { + fprintf( stderr, "saturn-E-Primary Chf initialization failed\n" ); exit( EXIT_FAILURE ); } - /* cat_name no longer needed */ - free( cat_name ); - /* 3.9: Print out MAIN_M_COPYRIGHT and MAIN_M_LICENSE on stdout now */ - fprintf( stdout, ChfGetMessage( CHF_MODULE_ID, MAIN_M_COPYRIGHT, "" ), "$Revision: 4.1 $" ); + fprintf( stdout, ChfGetMessage( MAIN_CHF_MODULE_ID, MAIN_M_COPYRIGHT, "" ), "$Revision: 4.1 $" ); /* fprintf( stdout, ChfGetMessage( CHF_MODULE_ID, MAIN_M_LICENSE, "" ) ); */ init_emulator( &config ); diff --git a/src/pack.c b/src/pack.c index a75c70a..8a235ed 100644 --- a/src/pack.c +++ b/src/pack.c @@ -113,16 +113,17 @@ static char rcs_id[] = "$Id"; /* Conditional prefix and mandatory suffix to make a message catalog name from cat_base_name. */ -static const char cat_prefix[] = "./"; -static const char cat_suffix[] = ".cat"; - -#define CAT_PREFIX_LEN ( sizeof( cat_prefix ) + 1 ) -#define CAT_SUFFIX_LEN ( sizeof( cat_suffix ) + 1 ) - -/* Message catalog base_name */ +/* Message catalog */ static const char cat_base_name[] = "saturn"; ChfTable message_table[] = { - { UTIL_CHF_MODULE_ID, UTIL_I_PACK_USAGE, "Usage:\n pack " }, + {UTIL_CHF_MODULE_ID, UTIL_I_PACK_USAGE, "Usage:\n pack "}, + {UTIL_CHF_MODULE_ID, UTIL_F_PACK_CMD_LINE, "Command line syntax error" }, + {UTIL_CHF_MODULE_ID, UTIL_F_PACK_STAT, "stat(%s) failed" }, + {UTIL_CHF_MODULE_ID, UTIL_F_PACK_SRC_SIZE, "Invalid source file size: %d" }, + {UTIL_CHF_MODULE_ID, UTIL_F_PACK_MALLOC, "malloc(%d) failed" }, + {UTIL_CHF_MODULE_ID, UTIL_F_PACK_OPEN, "open(%s) failed" }, + {UTIL_CHF_MODULE_ID, UTIL_F_PACK_READ, "read(%s) failed" }, + {UTIL_CHF_MODULE_ID, UTIL_F_PACK_WRITE_NIBBLES, "WriteNibblesToFile() failed" }, }; size_t message_table_size = sizeof( message_table ) / sizeof( message_table[ 0 ] ); @@ -163,8 +164,7 @@ int main( int argc, char* argv[] ) CONDITION_STACK_SIZE, /* Size of the condition stack */ HANDLER_STACK_SIZE, /* Size of the handler stack */ EXIT_FAILURE /* Abnormal exit code */ - ) != CHF_S_OK || - ChfGetMessage( CHF_MODULE_ID, UTIL_I_PACK_USAGE, NULL ) == NULL ) { + ) != CHF_S_OK ) { fprintf( stderr, "Chf initialization failed\n" ); exit( EXIT_FAILURE ); }