abc80sim - ABC80 emulator

project: abc80sim

Links

git.zytor.com abc80/abc80sim.git, abc80.org, pub/abc80sim,

local links

c1, e1,

back to emulators page.

History

2021-11-15: I re-created this page on my self-hosted web server.

2018-09-25: e1 - abc80sim - let me try out the diskdir info. By default, it is './abcdisk', so link stuff in there

[tingo@kg-elitebook abc80sim]$ ll ./abcdisk
total 121988
drwxr-xr-x.  2 tingo tingo      4096 Sep 25 11:00 ./
drwxrwxr-x. 11 tingo tingo      4096 Sep 24 13:25 ../
-rw-rw-r--.  1 tingo tingo 124780544 Sep 24 13:22 abcdisk.200812b
lrwxrwxrwx.  1 tingo tingo        15 Sep 25 10:59 hd0 -> abcdisk.200812b

and start the emulator like so

$ ./abc80 --abc80

yes, it boots from the "hard drive", and I can do 'BYE' and 'LIB' and it shows the content from "HD0". Cool.

2018-09-24: e1 - abc80sim - from the mailing list: "The diskdir directory should contain files named moN, mfN, sfN, or hdN depending on format (abc830, abc832, abc838 i.e. 8", or hard disk.) It doesn't need all files -- if a file isn't present that device isn't online." So

mo0, mo1 - abc830
mf0, mf1 - abc832
sf0, sf1 - abc838
hd0, hd1 - hard disk

good to know.

2018-09-24: e1 - abc80sim - testing - "run pra:prlib" load and runs the prlib.bas file from ./abcdir which lists the files in that directory. "load prb:sinus" loads sinus.bac from ./abcdir ok. Now, how do I access / use the '--diskdir' (default ./abcdisk) directory?

2018-09-24: e1 - abc80sim - I checkout out a new clone from the repository. New directory:

[tingo@kg-elitebook abc80sim]$ pwd
/home/tingo/data/emul/abc80/abc80sim

Try to build it autogen

[tingo@kg-elitebook abc80sim]$ ./autogen.sh
+ mkdir -p autoconf autoconf/aux config
++ automake --print-libdir
+ autolib=/usr/share/automake-1.15
+ for prg in install-sh compile config.guess config.sub
+ cp -u /usr/share/automake-1.15/install-sh autoconf/aux
+ for prg in install-sh compile config.guess config.sub
+ cp -u /usr/share/automake-1.15/compile autoconf/aux
+ for prg in install-sh compile config.guess config.sub
+ cp -u /usr/share/automake-1.15/config.guess autoconf/aux
+ for prg in install-sh compile config.guess config.sub
+ cp -u /usr/share/automake-1.15/config.sub autoconf/aux
+ rm -f autoconf/aclocal.m4
+ mkdir -p autoconf/m4.old autoconf/m4
+ mv -f autoconf/m4/pa_add_cflags.m4 autoconf/m4/pa_add_cppflags.m4 autoconf/m4/pa_add_flags.m4 autoconf/m4/pa_add_headers.m4 autoconf/m4/pa_arg_bool.m4 autoconf/m4/pa_arg_enabled.m4 autoconf/m4/pa_check_bad_stdc_inline.m4 autoconf/m4/pa_func_attribute_error.m4 autoconf/m4/pa_func_attribute.m4 autoconf/m4/pa_have_func.m4 autoconf/m4/pa_sym.m4 autoconf/m4.old/
++ pwd
+ ACLOCAL_PATH=/home/tingo/data/emul/abc80/abc80sim/autoconf/m4.old
+ export ACLOCAL_PATH
+ aclocal --install --output=autoconf/aclocal.m4 -I autoconf/m4
aclocal: installing 'autoconf/m4/pa_add_cflags.m4' from '/home/tingo/data/emul/abc80/abc80sim/autoconf/m4.old/pa_add_cflags.m4'
aclocal: installing 'autoconf/m4/pa_add_cppflags.m4' from '/home/tingo/data/emul/abc80/abc80sim/autoconf/m4.old/pa_add_cppflags.m4'
aclocal: installing 'autoconf/m4/pa_add_flags.m4' from '/home/tingo/data/emul/abc80/abc80sim/autoconf/m4.old/pa_add_flags.m4'
aclocal: installing 'autoconf/m4/pa_add_headers.m4' from '/home/tingo/data/emul/abc80/abc80sim/autoconf/m4.old/pa_add_headers.m4'
aclocal: installing 'autoconf/m4/pa_arg_bool.m4' from '/home/tingo/data/emul/abc80/abc80sim/autoconf/m4.old/pa_arg_bool.m4'
aclocal: installing 'autoconf/m4/pa_arg_enabled.m4' from '/home/tingo/data/emul/abc80/abc80sim/autoconf/m4.old/pa_arg_enabled.m4'
aclocal: installing 'autoconf/m4/pa_check_bad_stdc_inline.m4' from '/home/tingo/data/emul/abc80/abc80sim/autoconf/m4.old/pa_check_bad_stdc_inline.m4'
aclocal: installing 'autoconf/m4/pa_func_attribute.m4' from '/home/tingo/data/emul/abc80/abc80sim/autoconf/m4.old/pa_func_attribute.m4'
aclocal: installing 'autoconf/m4/pa_func_attribute_error.m4' from '/home/tingo/data/emul/abc80/abc80sim/autoconf/m4.old/pa_func_attribute_error.m4'
aclocal: installing 'autoconf/m4/pa_have_func.m4' from '/home/tingo/data/emul/abc80/abc80sim/autoconf/m4.old/pa_have_func.m4'
aclocal: installing 'autoconf/m4/pa_sym.m4' from '/home/tingo/data/emul/abc80/abc80sim/autoconf/m4.old/pa_sym.m4'
+ test -f autoconf/aclocal.m4
+ rm -rf autoconf/m4.old
+ autoheader -B autoconf
+ autoconf -B autoconf
+ rm -rf autom4te.cache config.log config.status config/config.h Makefile

configure

tingo@kg-elitebook abc80sim]$ ./configure
[..]
config.status: creating Makefile
config.status: creating config/config.h

make

[tingo@kg-elitebook abc80sim]$ make
gcc -U__STRICT_ANSI__ -Werror=attributes -W -Wall -pedantic -Wno-stringop-truncation -Werror=implicit -Werror=missing-braces -Werror=return-type -Werror=trigraphs -Werror=pointer-arith -Werror=missing-prototypes -Werror=missing-declarations -Werror=comment -Werror=vla -DHAVE_CONFIG_H -I. -g -O2 -fwrapv -fno-common -fvisibility=hidden -c -o abc80.o abc80.c
In file included from abc80.c:1:
compiler.h:66:10: fatal error: SDL.h: No such file or directory
 #include <SDL.h>  /* This includes endian definitions */
          ^~~~~~~
compilation terminated.
make: *** [Makefile:58: abc80.o] Error 1

it needs SDL devel, hmm. Installed SDL-devel, retry - re-ran configure - re-ran make. and I have abc80

[tingo@kg-elitebook abc80sim]$ ./abc80 --help
Usage: ./abc80 [options] [ihex_files...]
Simulate a microcomputer from the Luxor ABC series.

      --abc80          simulate an ABC80 (default)
      --abc802         simulate an ABC802
  -4, --40             start in 40-column mode
  -8, --80             start in 80-column mode
  -b, --no-basic       no BASIC ROM (uninitialized RAM instead)
  -B, --basic          reverts the --no-basic option
  -d, --no-device      no device driver ROMs
  -D, --device         reverts the --no-device option
      --old-basic      ABC80 only: run BASIC 1.0 (checksum 11273)
      --11273          same as --old-basic
      --new-basic      ABC80 only: run BASIC 1.2 (checksum 9913)
      --9913           same as --new-basic
  -t, --trace ...      trace various events (see "--trace help")
  -T, --tracefile ...  redirect trace output to a file
  -v, --version        print the version string
  -h, --help           print this help message
  -k, --kb #           set the memory size in K (ABC80: 1-32 or 64)
      --diskdir ...    set directory for disk images (default abcdisk)
      --filedir ...    set directory for file sharing (default abcdir)
      --scrndir ...    set directory for screen shots (default .)
      --dumpdir ...    set directory for memory dumps (default .)
      --printcmd ...   set command to launch a print job (* = filename)
      --memfile ...    load a file into the ABC802 MEM: device
      --detach         detach from console if run from a command line

The simulator supports the following hotkeys:
  Alt-q                quit the simulator
  Alt-s                take a screenshot
  Alt-r                CPU reset
  Alt-n                send NMI
  Alt-m                dump memory as currently seen from the CPU
  Alt-u                dump underlying RAM only (even nonexistent)

ok.

2018-09-22: c1 - let me see if I can do anything to abc80sim on FreeBSD. My workstation runs

tingo@kg-core1$ uname -a
FreeBSD kg-core1.kg4.no 10.4-STABLE FreeBSD 10.4-STABLE #1 r329982: Sun Feb 25 20:35:06 CET 2018     root@kg-core1.kg4.no:/usr/obj/usr/src/sys/GENERIC  amd64

ok.

tingo@kg-core1$ pwd
/home/tingo/data/emul

clone the repository, then try it out

tingo@kg-core1$ cd abc80sim/
tingo@kg-core1$ ./autogen.sh
+ mkdir -p autoconf autoconf/aux config
+ automake --print-libdir
+ autolib=/usr/local/share/automake-1.16
+ cp -u /usr/local/share/automake-1.16/install-sh autoconf/aux
cp: illegal option -- u
usage: cp [-R [-H | -L | -P]] [-f | -i | -n] [-alpsvx] source_file target_file
       cp [-R [-H | -L | -P]] [-f | -i | -n] [-alpsvx] source_file ... target_directory

ok, so FreeBSD doesn't understand 'cp -u'. Change it to 'cp -v' then (it doesn't do the same thing!) and live with the consequences.

tingo@kg-core1$ ./autogen.sh
+ mkdir -p autoconf autoconf/aux config
+ automake --print-libdir
+ autolib=/usr/local/share/automake-1.16
+ cp -v /usr/local/share/automake-1.16/install-sh autoconf/aux
/usr/local/share/automake-1.16/install-sh -> autoconf/aux/install-sh
+ cp -v /usr/local/share/automake-1.16/compile autoconf/aux
/usr/local/share/automake-1.16/compile -> autoconf/aux/compile
+ cp -v /usr/local/share/automake-1.16/config.guess autoconf/aux
/usr/local/share/automake-1.16/config.guess -> autoconf/aux/config.guess
+ cp -v /usr/local/share/automake-1.16/config.sub autoconf/aux
/usr/local/share/automake-1.16/config.sub -> autoconf/aux/config.sub
+ rm -f autoconf/aclocal.m4
+ mkdir -p autoconf/m4.old autoconf/m4
+ mv -f autoconf/m4/pa_add_cflags.m4 autoconf/m4/pa_add_cppflags.m4 autoconf/m4/pa_add_flags.m4 autoconf/m4/pa_add_headers.m4 autoconf/m4/pa_arg_bool.m4 autoconf/m4/pa_arg_enabled.m4 autoconf/m4/pa_check_bad_stdc_inline.m4 autoconf/m4/pa_func_attribute.m4 autoconf/m4/pa_func_attribute_error.m4 autoconf/m4/pa_have_func.m4 autoconf/m4/pa_sym.m4 autoconf/m4.old/
+ pwd
+ ACLOCAL_PATH=/home/tingo/data/emul/abc80sim/autoconf/m4.old
+ export ACLOCAL_PATH
+ aclocal --install --output=autoconf/aclocal.m4 -I autoconf/m4
aclocal: installing 'autoconf/m4/pa_add_cflags.m4' from '/home/tingo/data/emul/abc80sim/autoconf/m4.old/pa_add_cflags.m4'
aclocal: installing 'autoconf/m4/pa_add_cppflags.m4' from '/home/tingo/data/emul/abc80sim/autoconf/m4.old/pa_add_cppflags.m4'
aclocal: installing 'autoconf/m4/pa_add_flags.m4' from '/home/tingo/data/emul/abc80sim/autoconf/m4.old/pa_add_flags.m4'
aclocal: installing 'autoconf/m4/pa_add_headers.m4' from '/home/tingo/data/emul/abc80sim/autoconf/m4.old/pa_add_headers.m4'
aclocal: installing 'autoconf/m4/pa_arg_bool.m4' from '/home/tingo/data/emul/abc80sim/autoconf/m4.old/pa_arg_bool.m4'
aclocal: installing 'autoconf/m4/pa_arg_enabled.m4' from '/home/tingo/data/emul/abc80sim/autoconf/m4.old/pa_arg_enabled.m4'
aclocal: installing 'autoconf/m4/pa_check_bad_stdc_inline.m4' from '/home/tingo/data/emul/abc80sim/autoconf/m4.old/pa_check_bad_stdc_inline.m4'
aclocal: installing 'autoconf/m4/pa_func_attribute.m4' from '/home/tingo/data/emul/abc80sim/autoconf/m4.old/pa_func_attribute.m4'
aclocal: installing 'autoconf/m4/pa_func_attribute_error.m4' from '/home/tingo/data/emul/abc80sim/autoconf/m4.old/pa_func_attribute_error.m4'
aclocal: installing 'autoconf/m4/pa_have_func.m4' from '/home/tingo/data/emul/abc80sim/autoconf/m4.old/pa_have_func.m4'
aclocal: installing 'autoconf/m4/pa_sym.m4' from '/home/tingo/data/emul/abc80sim/autoconf/m4.old/pa_sym.m4'
+ test -f autoconf/aclocal.m4
+ rm -rf autoconf/m4.old
+ autoheader -B autoconf
+ autoconf -B autoconf
+ rm -rf autom4te.cache config.log config.status config/config.h Makefile

Next, run ./configure - worked without problems Then it is 'make'

tingo@kg-core1$ make
cc -U__STRICT_ANSI__ -I/usr/local/include/SDL -I/usr/local/include -D_REENTRANT -D_THREAD_SAFE -Werror=attributes -W -Wall -pedantic -Werror=unknown-warning-option -Werror=implicit -Werror=missing-braces -Werror=return-type -Werror=trigraphs -Werror=pointer-arith -Werror=strict-prototypes -Werror=missing-prototypes -Werror=missing-declarations -Werror=comment -Werror=vla -DHAVE_CONFIG_H -I. -g -O2 -fwrapv -fno-common -fvisibility=hidden -o abc80  -lpng -lz  -L/usr/local/lib -Wl,-rpath,/usr/local/lib -lSDL -pthread
/usr/lib/crt1.o: In function `_start':
/usr/src/lib/csu/amd64/crt1.c:(.text+0x16b): undefined reference to `main'
cc: error: linker command failed with exit code 1 (use -v to see invocation)
*** Error code 1

Stop.
make: stopped in /zs/tingo/data/emul/abc80sim

ok, not that easy.

2018-09-21: e1 - abc80sim 2.1 - let me try the abc80sim 2.1 from 2013. Downloaded the file, go to

[tingo@kg-elitebook abc80sim]$ pwd
/home/tingo/data/emul/abc80sim

and unpack. Then go into the directory

[tingo@kg-elitebook abc80sim]$ cd abc80sim-2.1/

try to configure

[tingo@kg-elitebook abc80sim-2.1]$ ./configure
[..]
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h

build

[tingo@kg-elitebook abc80sim-2.1]$ make
gcc -g -O2 -W -Wall -std=c99 -pedantic   -c -o abc80.o abc80.c
In file included from abc80.c:6:
screen.h:28:1: error: unknown type name ‘Uint32’; did you mean ‘int’?
 Uint32 post_periodic(Uint32 interval, void *param);
 ^~~~~~
 int
screen.h:28:22: error: unknown type name ‘Uint32’; did you mean ‘int’?
 Uint32 post_periodic(Uint32 interval, void *param);
                      ^~~~~~
                      int
abc80.c: In function ‘load_sysfile’:
abc80.c:46:13: warning: implicit declaration of function ‘exit’ [-Wimplicit-function-declaration]
             exit(1);
             ^~~~
abc80.c:46:13: warning: incompatible implicit declaration of built-in function ‘exit’
abc80.c:46:13: note: include ‘<stdlib.h>’ or provide a declaration of ‘exit’
abc80.c:10:1:
+#include <stdlib.h>

abc80.c:46:13:
             exit(1);
             ^~~~
abc80.c: In function ‘usage’:
abc80.c:92:5: warning: incompatible implicit declaration of built-in function ‘exit’
     exit(1);
     ^~~~
abc80.c:92:5: note: include ‘<stdlib.h>’ or provide a declaration of ‘exit’
abc80.c: In function ‘main’:
abc80.c:112:13: warning: incompatible implicit declaration of built-in function ‘exit’
             exit(0);
             ^~~~
abc80.c:112:13: note: include ‘<stdlib.h>’ or provide a declaration of ‘exit’
abc80.c:151:13: warning: incompatible implicit declaration of built-in function ‘exit’
             exit(1);
             ^~~~
abc80.c:151:13: note: include ‘<stdlib.h>’ or provide a declaration of ‘exit’
abc80.c:167:5: warning: incompatible implicit declaration of built-in function ‘exit’
     exit(0);
     ^~~~
abc80.c:167:5: note: include ‘<stdlib.h>’ or provide a declaration of ‘exit’
make: *** [<builtin>: abc80.o] Error 1

aha, it fails too.

2018-09-21: e1 - I cloned the git repository, and tried getting the build environment configured, like so:

[tingo@kg-elitebook abc80sim]$ ./autogen.sh
+ mkdir -p autoconf autoconf/aux
++ automake --print-libdir
+ autolib=/usr/share/automake-1.15
+ for prg in install-sh compile config.guess config.sub
+ cp -u /usr/share/automake-1.15/install-sh autoconf/aux
+ for prg in install-sh compile config.guess config.sub
+ cp -u /usr/share/automake-1.15/compile autoconf/aux
+ for prg in install-sh compile config.guess config.sub
+ cp -u /usr/share/automake-1.15/config.guess autoconf/aux
+ for prg in install-sh compile config.guess config.sub
+ cp -u /usr/share/automake-1.15/config.sub autoconf/aux
+ rm -f autoconf/aclocal.m4
+ mkdir -p autoconf/m4.old autoconf/m4
+ mv -f autoconf/m4/pa_add_cflags.m4 autoconf/m4/pa_add_cppflags.m4 autoconf/m4/pa_add_flags.m4 autoconf/m4/pa_add_headers.m4 autoconf/m4/pa_arg_bool.m4 autoconf/m4/pa_arg_enabled.m4 autoconf/m4/pa_check_bad_stdc_inline.m4 autoconf/m4/pa_func_attribute_error.m4 autoconf/m4/pa_func_attribute.m4 autoconf/m4/pa_have_func.m4 autoconf/m4/pa_sym.m4 autoconf/m4.old/
++ pwd
+ ACLOCAL_PATH=/zs/tingo/data/emul/abc80sim/autoconf/m4.old
+ export ACLOCAL_PATH
+ aclocal --install --output=autoconf/aclocal.m4 -I autoconf/m4
aclocal: installing 'autoconf/m4/pa_add_cflags.m4' from '/zs/tingo/data/emul/abc80sim/autoconf/m4.old/pa_add_cflags.m4'
aclocal: installing 'autoconf/m4/pa_add_cppflags.m4' from '/zs/tingo/data/emul/abc80sim/autoconf/m4.old/pa_add_cppflags.m4'
aclocal: installing 'autoconf/m4/pa_add_flags.m4' from '/zs/tingo/data/emul/abc80sim/autoconf/m4.old/pa_add_flags.m4'
aclocal: installing 'autoconf/m4/pa_add_headers.m4' from '/zs/tingo/data/emul/abc80sim/autoconf/m4.old/pa_add_headers.m4'
aclocal: installing 'autoconf/m4/pa_arg_bool.m4' from '/zs/tingo/data/emul/abc80sim/autoconf/m4.old/pa_arg_bool.m4'
aclocal: installing 'autoconf/m4/pa_arg_enabled.m4' from '/zs/tingo/data/emul/abc80sim/autoconf/m4.old/pa_arg_enabled.m4'
aclocal: installing 'autoconf/m4/pa_check_bad_stdc_inline.m4' from '/zs/tingo/data/emul/abc80sim/autoconf/m4.old/pa_check_bad_stdc_inline.m4'
aclocal: installing 'autoconf/m4/pa_func_attribute.m4' from '/zs/tingo/data/emul/abc80sim/autoconf/m4.old/pa_func_attribute.m4'
aclocal: installing 'autoconf/m4/pa_func_attribute_error.m4' from '/zs/tingo/data/emul/abc80sim/autoconf/m4.old/pa_func_attribute_error.m4'
aclocal: installing 'autoconf/m4/pa_have_func.m4' from '/zs/tingo/data/emul/abc80sim/autoconf/m4.old/pa_have_func.m4'
aclocal: installing 'autoconf/m4/pa_sym.m4' from '/zs/tingo/data/emul/abc80sim/autoconf/m4.old/pa_sym.m4'
+ test -f autoconf/aclocal.m4
+ rm -rf autoconf/m4.old
+ autoheader -B autoconf
autoheader: cannot rename /tmp/ah83z3gw/config.hin as config/config.h.in: No such file or directory

and it bombs out here.

2018-09-21: e1 - I am using my Fedora 298 laptop for this test:

[tingo@kg-elitebook ~]$ cat /etc/fedora-release
Fedora release 28 (Twenty Eight)
[tingo@kg-elitebook ~]$ uname -a
Linux kg-elitebook.kg4.no 4.18.5-200.fc28.x86_64 #1 SMP Tue Sep 4 15:56:14 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

ok