From 206421998bac9fa16fc54ad5aea889adfed94174 Mon Sep 17 00:00:00 2001 From: Tommy Thorn Date: Mon, 29 Jun 2009 18:22:20 -0700 Subject: [PATCH] Cleaned up a bit --- Makefile | 38 +- README | 20 +- basic | Bin 12739 -> 0 bytes chars.xpm | 4101 ---------------------------------------------------------- nascom.h | 16 +- sdl-nascom.c | 50 +- 6 files changed, 59 insertions(+), 4166 deletions(-) rewrite Makefile (74%) delete mode 100644 basic delete mode 100644 chars.xpm diff --git a/Makefile b/Makefile dissimilarity index 74% index 071f5b8..21f3673 100644 --- a/Makefile +++ b/Makefile @@ -1,21 +1,17 @@ -# Makefile for VirtualNascom - -# CC must be an ANSI-C compiler -CC = gcc - -# full speed or debugging to taste -#OPTIMIZE = -O2 -OPTIMIZE = -g -WARN = -Wmost -Werror -CFLAGS = $(OPTIMIZE) $(WARN) $(shell sdl-config --cflags) - -LIBS =-lXpm -lXt -lX -lm - -###### you should not need to change anything below this line ###### -CWARN = -ansi -pedantic -Wall -Wshadow \ - -Wpointer-arith -Wnested-externs -Winline - -sdl-nascom: sdl-nascom.o font.o simz80.o - $(CC) $(shell sdl-config --libs) $^ -o $@ - -clean:; rm -f *.o *~ core +# Makefile for VirtualNascom + +# CC must be an ANSI-C compiler +CC=gcc + +# full speed or debugging to taste +OPTIMIZE=-O2 +#OPTIMIZE=-g +#WARN=-Wmost -Werror +WARN=-Wall +CFLAGS=$(OPTIMIZE) $(WARN) $(shell sdl-config --cflags) + +sdl-nascom: sdl-nascom.o font.o simz80.o + $(CC) $(CWARN) $(shell sdl-config --libs) $^ -o $@ + +clean: + rm -f *.o *~ core diff --git a/README b/README index 62333d8..80ddb64 100644 --- a/README +++ b/README @@ -1,26 +1,32 @@ -VirtualNascom, a Nascom II emulator/simulator version 1.0 -This is a version 1.0.1, which although not finished is already very + + Virtual Nascom + + A Nascom II emulator/simulator + + Version 2.0 + +This is a version 2.0, which although not finished is already very useful (runs every program I've tried). -A very crucial part of VirtualNascom is the excellent z80 emulator +A very crucial part of Virtual Nascom is the excellent Z80 emulator from Yaze, which is also copylefted. INSTALLATION -VirtualNascom should run under all resonable Unicies with X11 support. +Virtual Nascom should compile on all platform with SDL support, but +has only been tested on Mac OS X 10.5.7 and Open SUSE 11.1/AMD64. + To compile you may have to adapt the Makefile with the libraries you need and their path. -VirtualNascom has been tested under Solaris 2.6/SPARC and Redhat ?/ix86. - USAGE I should improve the interface, but for now to run, use: - ./xvirtualnascom [-m monitor.nal] [-v] [app.nal] + ./virtualnascom [-m monitor.nal] [-v] [app.nal] VirtualNascom expects to find `nassys.nal' (unless you changed the monitor using the `-m' option) and `basic.nal' upon startup. You can diff --git a/basic b/basic deleted file mode 100644 index 8eb31a0e4c6a2eb657e87cefabd46d8737c7729e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcwPel00001 literal 12739 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 10) == 2) -BYTE ram[MEMSIZE*1024]; /* Z80 memory space */ +BYTE ram[MEMSIZE*1024]; /* Z80 memory space */ #ifdef MMU -BYTE *pagetable[MEMSIZE/4]; /* MMU page table */ +BYTE *pagetable[MEMSIZE/4]; /* MMU page table */ #endif #ifndef LIBDIR diff --git a/sdl-nascom.c b/sdl-nascom.c index 389154b..e8982a9 100644 --- a/sdl-nascom.c +++ b/sdl-nascom.c @@ -1,4 +1,4 @@ -/* VirtualNascom, a Nascom II emulator. +/* Virtual Nascom, a Nascom II emulator. Copyright (C) 2000,2009 Tommy Thorn @@ -50,6 +50,8 @@ #define FONT_H 15 #define FONT_W 8 +extern uint8_t nascom_font_raw[]; + static SDL_Surface *screen; static struct font { SDL_Surface *surf; @@ -62,10 +64,10 @@ int serial_input_available = 0; static unsigned framebuffer_generation; -static void RenderItem(struct font *font, int index, int x, int y) +static void RenderItem(struct font *font, int idx, int x, int y) { - SDL_Rect dest = { x, y, font->w, font->h }; - SDL_Rect clip = { 0, index * font->h_pitch, font->w, font->h }; + auto SDL_Rect dest = { x, y, font->w, font->h }; + SDL_Rect clip = { 0, idx * font->h_pitch, font->w, font->h }; SDL_BlitSurface(font->surf, &clip, screen, &dest); } @@ -113,9 +115,6 @@ int mysetup(int argc, char **argv) #endif /* Load font */ - extern uint8_t nascom_font_raw[]; - - // Unsuccessful :-( nascom_font.surf = SDL_CreateRGBSurfaceFrom( nascom_font_raw, @@ -132,7 +131,7 @@ int mysetup(int argc, char **argv) nascom_font.h_pitch = FONT_H_PITCH; if (!nascom_font.surf) { - fprintf(stderr, "no font :-( \n"); + perror("Couldn't load the font\n"); return 1; } @@ -160,17 +159,6 @@ unsigned char keym[9] = { unsigned char keyp = 0; unsigned char port0; -static void -usage(void) -{ - fprintf(stderr, - "Usage: %s {flags} {commands}\n" - " -m use as monitor (default is nassys3.nal)\n" - " -v verbose\n" - ,progname); - exit (1); -} - void load_nascom(const char *file) { FILE *f = fopen(file, "r"); @@ -268,13 +256,10 @@ void mainloop(void) for (i = 0; i < 9; ++i) for (bit = 0; bit < 8; ++bit) if (kbd_translation[i][7-bit] == ch) { - //printf(" -> %d/%d", i, bit); goto found; } i = -1; - //printf("%d?\n", event.key.keysym.sym); found:; - //printf("\n"); } else { switch (event.key.keysym.sym) { case SDLK_LCTRL: i = 0, bit = 3; break; @@ -363,6 +348,18 @@ void simulate(void *dummy) simz80(pc, 900, sim_delay); } +static void +usage(void) +{ + fprintf(stderr, + "Usage: %s {flags} {commands}\n" + " -i take serial port input from file (when tape led is on)\n" + " -m use as monitor (default is nassys3.nal)\n" + " -v verbose\n" + ,progname); + exit (1); +} + int main(int argc, char **argv) { int c; @@ -401,7 +398,7 @@ int main(int argc, char **argv) } if (vflag) - puts("VirtualNascom, a Nascom 2 emulator version " VERSION "\n" + puts("Virtual Nascom, a Nascom 2 emulator version " VERSION "\n" "Copyright 2000,2009 Tommy Thorn.\n" "Uses software from \n" "Yet Another Z80 Emulator version " YAZEVERSION @@ -417,12 +414,8 @@ int main(int argc, char **argv) SDL_CreateThread((int (*)(void *))simulate, NULL); mainloop(); - exit(0); - fprintf(stderr,"HALT\n"); - fprintf(stderr,"PC SP IR IX IY AF BC DE HL AF' BC' DE' HL'\n"); - fprintf(stderr,"%04x %04x %04x %04x %04x %04x %04x %04x %04x %04x %04x %04x %04x\n", - pc,sp,ir,ix,iy,af[af_sel],regs[regs_sel].bc,regs[regs_sel].de,regs[regs_sel].hl,af[1-af_sel],regs[1-regs_sel].bc,regs[1-regs_sel].de,regs[1-regs_sel].hl); + exit(0); } /* @@ -557,4 +550,3 @@ void slow_write(unsigned int a, unsigned char v) if (0x800 <= a && a <= 0xE000) RAM(a) = v; } - -- 2.11.4.GIT