From 2e57e31da3c5e60a3590f6c7779c09e7cf74621c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C2=A8Rene=20Richarz?= <¨rene.richarz@bluewin.ch¨> Date: Thu, 11 Apr 2019 09:22:14 +0200 Subject: [PATCH] version 1.0.3, see versions.txt --- ards.c | 160 +++++++++++++++++++++++++++++++++++++++++++++++++++ main.c | 11 +++- main.h | 2 + makefile | 8 +-- tek4010 | Bin 34756 -> 34936 bytes tek4010.c | 24 +++++--- tek4010.h | 3 +- versions.txt | 9 +++ 8 files changed, 201 insertions(+), 16 deletions(-) create mode 100755 ards.c diff --git a/ards.c b/ards.c new file mode 100755 index 0000000..1c418ec --- /dev/null +++ b/ards.c @@ -0,0 +1,160 @@ +/* + * ards.c + * + * ARDS option for tek4010 graphics emulator + * + * Copyright 2019 Lars Brinkhoff + * + * https://github.com/rricharz/Tek4010 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + * + */ + +#define WRITE_TROUGH_INTENSITY 0.5 // green only +#define NORMAL_INTENSITY 0.8 +#define CURSOR_INTENSITY 0.8 +#define BRIGHT_SPOT_COLOR 1.0,1.0,1.0 +#define BRIGHT_SPOT_COLOR_HALF 0.3,0.6,0.3 +#define BLACK_COLOR 0.0,0.08,0.0 // effect of flood gun + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "main.h" +#include "tek4010.h" + +extern void gtk_main_quit(); +extern int globalClearPersistent; +extern int windowWidth; +extern int windowHeight; + +extern int argFull; + +extern int hDotsPerChar; +extern int vDotsPerChar; + +extern int refresh_interval; // after this time in msec next refresh is done +extern long refreshCount; + +extern int showCursor; // set of cursor is shown (not set in graphics mode) +extern int isBrightSpot; // set if there is currently a bright spot on the screen + +extern double efactor; +extern int eoffx; + +static long startPaintTime; + +extern long mSeconds(); +extern void doCursor(cairo_t *cr2); +extern void clearPersistent(cairo_t *cr, cairo_t *cr2); +extern void clearSecond(cairo_t *cr2); +extern void clearPersistent(cairo_t *cr, cairo_t *cr2); +extern int isInput(); +extern int getInputChar(); + +void ards_draw(cairo_t *cr, cairo_t *cr2, int first) +// draw onto the main window using cairo +// cr is used for persistent drawing, cr2 for temporary drawing + +{ + int ch; + char s[2]; + + refreshCount++; // to calculate the average refresh rate + + int xlast = 0; + int ylast = 0; + + if (first) { + first = 0; + int actualWidth; + if (argFull) { + efactor = windowHeight / 780.0; + actualWidth = (int)(efactor * 1024.0); + eoffx = (windowWidth - actualWidth) / 2; + refresh_interval = (int)(30.0 * efactor * efactor); + } + else { + efactor = 1.0; + actualWidth = windowWidth; + eoffx = 0; + refresh_interval = 30; + } + hDotsPerChar = actualWidth / 74; + vDotsPerChar = windowHeight / 35; + windowWidth = actualWidth; + // printf("Scaling: %0.2f\n", efactor); + // printf("Offset: %d\n",eoffx); + // printf("Refresh interval: %d\n",refresh_interval); + } + + startPaintTime = mSeconds(); // start to measure time for this draw operation + + showCursor = 1; + isBrightSpot = 0; + + // clear the second surface + clearSecond(cr2); + + // clear persistent surface, if necessary + if (globalClearPersistent) { + clearPersistent(cr,cr2); + } + + cairo_set_antialias(cr, CAIRO_ANTIALIAS_BEST); + cairo_set_line_width (cr, 1); + cairo_set_source_rgb(cr, 0, NORMAL_INTENSITY, 0); + + cairo_select_font_face(cr, "Monospace", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL); + cairo_select_font_face(cr2, "Monospace", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD); + + if (argFull > 0.0) { + cairo_set_font_size(cr, (int)(efactor * 18)); + cairo_set_font_size(cr2,(int)(efactor * 18)); + } + else { + cairo_set_font_size(cr, 18); + cairo_set_font_size(cr2, 18); + } + + do { + ch = getInputChar(); + + + + + // decode and act here + printf("-ARDS mode not yet implemented\n"); + exit(1); + + + } + while (((mSeconds() - startPaintTime) < refresh_interval)); + + // display cursor + + if (showCursor && (isInput() == 0)) doCursor(cr2); + +} diff --git a/main.c b/main.c index 1f2b6af..55220dc 100644 --- a/main.c +++ b/main.c @@ -47,8 +47,12 @@ extern FILE *putKeys; +char *windowName; + static int global_firstcall; + extern int argFull; +extern int argARDS; int windowWidth; int windowHeight; @@ -102,7 +106,10 @@ static void do_drawing(cairo_t *cr, GtkWidget *widget) printf("Cannot create drawing surfaces\n"); exit(1); } - tek4010_draw(permanent_cr, temporary_cr, global_firstcall); + if (argARDS) + ards_draw(permanent_cr, temporary_cr, global_firstcall); + else + tek4010_draw(permanent_cr, temporary_cr, global_firstcall); global_firstcall = FALSE; cairo_set_source_surface(cr, permanent_surface, 0, 0); @@ -225,7 +232,7 @@ int main (int argc, char *argv[]) g_timeout_add(TIME_INTERVAL, (GSourceFunc) on_timer_event, (gpointer) window); } - gtk_window_set_title(GTK_WINDOW(window), WINDOW_NAME); + gtk_window_set_title(GTK_WINDOW(window), windowName); if (strlen(ICON_NAME) > 0) { gtk_window_set_icon_from_file(GTK_WINDOW(window), ICON_NAME, NULL); diff --git a/main.h b/main.h index 5782132..d04f01f 100644 --- a/main.h +++ b/main.h @@ -7,4 +7,6 @@ int tek4010_on_timer_event(); int tek4010_clicked(int button, int x, int y); void tek4010_quit(); +void ards_draw(cairo_t *cr, cairo_t *cr2, int first); + diff --git a/makefile b/makefile index b052f12..6174c88 100644 --- a/makefile +++ b/makefile @@ -4,8 +4,8 @@ CFLAGS = `pkg-config --cflags gtk+-3.0` all: tek4010 -tek4010: main.c tek4010.c tek4010.h main.h - gcc -o tek4010 main.c tek4010.c tek4010.h main.h $(LIBS) $(CFLAGS) +tek4010: main.c main.h tek4010.c tek4010.h ards.c + gcc -o tek4010 main.c tek4010.c ards.c $(LIBS) $(CFLAGS) -install: - ./install \ No newline at end of file +install: tek4010 + ./install diff --git a/tek4010 b/tek4010 index 51da3741601d9d4bcd93c4208e0975114beba3fd..7c30fcc99e8afa349f7ae216c910e5a9552baf59 100755 GIT binary patch delta 10508 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 delta 9348 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 zV19)) { printf("Error:number of arguments\n"); exit(1); @@ -229,6 +235,10 @@ void tek4010_init(int argc, char* argv[]) argTab1 = 1; else if (strcmp(argv[firstArg],"-full") == 0) argFull = 1; + else if (strcmp(argv[firstArg],"-ARDS") == 0) { + argARDS = 1; + windowName = "ARDS emulator"; + } else { printf("tek4010: unknown argument %s\n", argv[firstArg]); exit(1); @@ -633,8 +643,6 @@ void emulateDeflectionTime() void tek4010_draw(cairo_t *cr, cairo_t *cr2, int first) // draw onto the main window using cairo -// width is the actual width of the main window -// height is the actual height of the main window // cr is used for persistent drawing, cr2 for temporary drawing { diff --git a/tek4010.h b/tek4010.h index a0fa6c4..c70058f 100644 --- a/tek4010.h +++ b/tek4010.h @@ -1,8 +1,7 @@ #define A_WINDOW_WIDTH 1024 // proposed width of main window #define A_WINDOW_HEIGHT 780 // proposed height of main window -#define WINDOW_NAME "Tektronix 4010/4014" // name of main window #define ICON_NAME "" // path to icon for window -#define TIME_INTERVAL 30 // time interval for timer function in msec +#define TIME_INTERVAL 10 // time interval for timer function in msec // 0 means no timer function diff --git a/versions.txt b/versions.txt index ad60dd9..04b0ba8 100644 --- a/versions.txt +++ b/versions.txt @@ -1,3 +1,12 @@ +Version 1.0.3 April 11, 2019 +============================ +Phase: beta test +New features: +- added skeleton for ARDS emulation +Bug fixes: +- fixed make install +Appearance: + Version 1.0.2 April 10, 2019 ============================ Phase: beta test