abc80sim - ABC80 emulator
project: abc80sim
Links
git.zytor.com abc80/abc80sim.git, abc80.org, pub/abc80sim,
local links
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