Git Product home page Git Product logo

ld's People

Contributors

ams avatar bictorv avatar btdixon avatar dseagrav avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ld's Issues

"File doesn't start with LMFL" when restoring Bitsavers system tape

When restoring the system tape one gets the following,

File is "Exp 130.0, 11/11"; 22453 blocks.
Default partition to load into is LOD1
reading 22453 blocks into LOD1.
copying 22453 blocks from "bigtape" to "LOD1"
copy done
band did not end with an EOF mark.
Skipping to next file ...

Next file ...

File doesn't start with LMFL

Skip to next file? (y/n)

Skipping forward in the tape ends with,

tape error 0x9 (end of tape)
command=2C control=8000 asked=6000 transferred=400 actual=1
bufaddr=59710000 drivestat=58 cmdstat=C9
End of tape.
Writing unit 0 label

The resulting disk manages to get SDU via the console, but "config" is not available.

Full log follows:

$ telnet localhost 3637
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.

SDU Monitor version 8
>> init

SDU Monitor version 8
>> /tar/setup clear eagle sp shell
setup version 25
> /tar/load
using 220K in slot 9
load version 307
(creating block-22 mini-label)
(creating mini-label)
Disk is eagle
Loading "/tar/bigtape"
Loading "/tar/st2181"
Disk unit 0 needs to be initialized:
Disk has no label, or mini-label is wrong.
Create new unit 0 label from scratch? (y/n) y

Creating lisp label from scratch.

How many LAMBDA processors: 1
Type "?" for command list.
load > install
*****************************************************
The new backup label track number is 16340.
Record this number and keep it with the machine.
*****************************************************
Writing unit 0 label
Using half-inch tape
Installing track-0 disk driver ...
copying 10 blocks from "/tar/disk" to "disk"
copy done

Tape-ID = "FRED gm 7/23/86 12:33:34 522520414 "
File is "SDU5 3.0 rev 14"; 1500 blocks.
"SDU5 3.0 rev 14" wants to be loaded into UNX6.
reading 1500 blocks into UNX6.
copying 1500 blocks from "bigtape" to "UNX6"
copy done
band did not end with an EOF mark.
Skipping to next file ...

Next file ...

Tape-ID = "FRED gm 7/23/86 12:33:35 522520415 "
File is "ulambda ver 1762"; 256 blocks.
"ulambda ver 1762" wants to be loaded into LMC1.
reading 256 blocks into LMC1.
copying 256 blocks from "bigtape" to "LMC1"
copy done
band did not end with an EOF mark.
Skipping to next file ...

Next file ...

Tape-ID = "FRED gm 7/23/86 12:33:36 522520416 "
File is "ulambda ver 1762"; 256 blocks.
"ulambda ver 1762" wants to be loaded into LMC2.
reading 256 blocks into LMC2.
copying 256 blocks from "bigtape" to "LMC2"
copy done
band did not end with an EOF mark.
Skipping to next file ...

Next file ...

File is "Exp 130.0, 11/11"; 22453 blocks.
Default partition to load into is LOD1
reading 22453 blocks into LOD1.
copying 22453 blocks from "bigtape" to "LOD1"
copy done
band did not end with an EOF mark.
Skipping to next file ...

Next file ...

File doesn't start with LMFL

Skip to next file? (y/n)

config.status: error: cannot find input file: `tools/Makefile.in'

On MacOS 10.14.4, after "autoconf -f", the following seems to indicate a missing file in the repo:

$ ./configure 
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
....
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
config.status: error: cannot find input file: `tools/Makefile.in'

%BEEP instruction doesn't really do what it's supposed to

Beeping is currently done by my old hack which looks at writes on the keyboard serial port and occasionally outputs a Ctrl-G to make a beep.

A cooler way is to capture calls to the XBEEP routine in the microcode, and instead call some SDL Audio code and then jumping to XFALSE. The attached code implements this, and now SYS:DEMO;BEEPS (mostly) works.

It REQUIRES the RIGHT VERSION of the ulambda.lmc-sym file to be installed, in order to find the XBEEP and XFALSE symbols. (OK, the most recent one in the dj_full archive has the right addresses, matching the more recent microcode in release 5.)

Caveat: not tried with SDL1, but "should work".

ld-sdl-beep.patch.txt

Bitsavers install tape doesn’t work with current version

When trying to restore the 00_install.tap (http://bitsavers.org/bits/LMI/lambda/00_install.tap) from Bitsavers in the current master of ld, it fails to to restore the LOD partition and LMC partition. It works if one tries using 0.98.1.

According to http://bitsavers.org/bits/LMI/lambda/0x_tap.txt:

It differs from a real tools tape in that there is a double EOF after the band images. The SDU expects some kind of indication of end-of-file that I don't know about yet, so this makes it proceed in the right order anyway (albeit with complaints)

Might have something to do with that?

Separate config file support from config values

Right now the config file support directly integrates the configuration variables and their types. The config file/variable handling should be independent, so:

  • variables could have default values when unset
  • subsystems could specify their variables & default values in the subsystem initialization
  • config values could be provided via multiple files overriding each other (e.g. /opt/ld/share/ld.conf for site-wide config and ~/ld.conf for per-user config)
  • config values could be overridden on the command line in a standard way

Assertion '!e->dead' failed at pulse/mainloop.c:254, function mainloop_defer_enable(). Aborting.

While trying to list a tape, I got this strange segfault:

Assertion '!e->dead' failed at pulse/mainloop.c:254, function mainloop_defer_enable(). Aborting.

Thread 4 "SDLAudioP1" received signal SIGABRT, Aborted.
[Switching to Thread 0x7ffff2966700 (LWP 29033)]
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
50	../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) bt full
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
        set = {__val = {234975239, 140737336089633, 0, 13897781614037987840, 4, 93825024178528, 0, 140737336097593, 93825024270272, 93825024178528, 93825024258656, 140737336170286, 93825024270272, 140737336098616, 93824992331216, 93825024178528}}
        pid = <optimized out>
        tid = <optimized out>
        ret = <optimized out>
#1  0x00007ffff7b4c535 in __GI_abort () at abort.c:79
        save_stage = 1
        act = {__sigaction_handler = {sa_handler = 0x1, sa_sigaction = 0x1}, sa_mask = {__val = {13897781614037987840, 0, 36, 93825027829216, 93825027807144, 93825027806688, 140737350027145, 0, 8, 93825027794400, 8, 140737263328400, 140737336553409, 1, 93825027794400, 140737263328400}}, sa_flags = -140592660, sa_restorer = 0x7ffff7a07237}
        sigs = {__val = {32, 0 <repeats 15 times>}}
#2  0x00007ffff79eb9f5 in ?? () from /lib/x86_64-linux-gnu/libpulse.so.0
No symbol table info available.
#3  0x00007ffff6f597f1 in ?? () from /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-12.2.so
No symbol table info available.
#4  0x00007ffff6f59bb9 in ?? () from /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-12.2.so
No symbol table info available.
#5  0x00007ffff6f5a40a in ?? () from /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-12.2.so
No symbol table info available.
#6  0x00007ffff79eccb8 in pa_mainloop_dispatch () from /lib/x86_64-linux-gnu/libpulse.so.0
No symbol table info available.
#7  0x00007ffff79ecf8c in pa_mainloop_iterate () from /lib/x86_64-linux-gnu/libpulse.so.0
No symbol table info available.
#8  0x00007ffff7f34cc7 in ?? () from /lib/x86_64-linux-gnu/libSDL2-2.0.so.0
No symbol table info available.
#9  0x00007ffff7e9195b in ?? () from /lib/x86_64-linux-gnu/libSDL2-2.0.so.0
No symbol table info available.
#10 0x00007ffff7edae8c in ?? () from /lib/x86_64-linux-gnu/libSDL2-2.0.so.0
No symbol table info available.
#11 0x00007ffff7f4e119 in ?? () from /lib/x86_64-linux-gnu/libSDL2-2.0.so.0
No symbol table info available.
#12 0x00007ffff6faafa3 in start_thread (arg=<optimized out>) at pthread_create.c:486
        ret = <optimized out>
        pd = <optimized out>
        now = <optimized out>
        unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140737263331072, 2301452079668870344, 140737488347614, 140737488347615, 140737263331072, 93825027788256, -2301476480502252344, -2301467449764266808}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
        not_first_call = <optimized out>
#13 0x00007ffff7c2380f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
No locals.
(gdb) 

Is there a way to set the width of the SDL window?

As the title asks, is there a way to change the SDL window width?

I've read that the original monitor was 800x1024 (portrait) and would like to set it to that. (I tile my windows to half the screen and it's slightly oversized for a standard HD display.)

RTC drift (over sleep)

Symptom: When the Lambda system is up while the host system goes to sleep, the RTC time falls behind.
Diagnosis: the RTC is based on counting cycles (see sdu_clock_pulse in sdu.c), not elapsed time.
Solution: use gettimeofday() to see how many seconds actually elapsed between calls to sdu_clock_pulse (when rtc_cycle_count >= 5000000) rather than assuming one second. A call to gettimeofday takes about 3.8e-8 s on my system.

Perhaps I see this only because I tell SDL to allow the screensaver to run, but I think this should be handled. (Will produce a patch.)

SDL1 and %BEEP

%BEEP support is non-existant when linking against SDL1 causing a undefined reference to xbeep(). Requiring the use of --disbale-no-xbeep.

README.md instructions correction for bogodyne

It looks like the initial name of the machine when using the new tape images should be "LISPM-A" rather than "LAMBDA-A". If you use the latter, the machine gets no chaosnet address and refers to itself as AMNESIAC.

Edit: since these and other details of installation may become increasingly more dependent on the system releases themselves, perhaps those notes should move to that distribution. I didn't want to propose a PR for this until there was a public repository for it, though.

Redeclaration of IFF_??? macros

The headers <linux/if.h> and <net/if.h> both define IFF_??? macros on GNU/Linux.

In file included from 3com.c:40:0:
/usr/include/net/if.h:44:5: error: redeclaration of enumerator ‘IFF_UP’
     IFF_UP = 0x1,  /* Interface is up.  */
     ^
/usr/include/linux/if.h:79:2: note: previous definition of ‘IFF_UP’ was here
  IFF_UP    = 1<<0,  /* sysfs */
  ^~~~~~
/usr/include/net/if.h:46:5: error: redeclaration of enumerator ‘IFF_BROADCAST’
     IFF_BROADCAST = 0x2, /* Broadcast address valid.  */
     ^
/usr/include/linux/if.h:80:2: note: previous definition of ‘IFF_BROADCAST’ was here
  IFF_BROADCAST   = 1<<1,  /* __volatile__ */
  ^~~~~~~~~~~~~
/usr/include/net/if.h:48:5: error: redeclaration of enumerator ‘IFF_DEBUG’
     IFF_DEBUG = 0x4,  /* Turn on debugging.  */
     ^
/usr/include/linux/if.h:81:2: note: previous definition of ‘IFF_DEBUG’ was here
  IFF_DEBUG   = 1<<2,  /* sysfs */
  ^~~~~~~~~
/usr/include/net/if.h:50:5: error: redeclaration of enumerator ‘IFF_LOOPBACK’
     IFF_LOOPBACK = 0x8,  /* Is a loopback net.  */
     ^
/usr/include/linux/if.h:82:2: note: previous definition of ‘IFF_LOOPBACK’ was here
  IFF_LOOPBACK   = 1<<3,  /* __volatile__ */
  ^~~~~~~~~~~~
/usr/include/net/if.h:52:5: error: redeclaration of enumerator ‘IFF_POINTOPOINT’
     IFF_POINTOPOINT = 0x10, /* Interface is point-to-point link.  */
     ^
/usr/include/linux/if.h:83:2: note: previous definition of ‘IFF_POINTOPOINT’ was here
  IFF_POINTOPOINT   = 1<<4,  /* __volatile__ */
  ^~~~~~~~~~~~~~~
/usr/include/net/if.h:54:5: error: redeclaration of enumerator ‘IFF_NOTRAILERS’
     IFF_NOTRAILERS = 0x20, /* Avoid use of trailers.  */
     ^
/usr/include/linux/if.h:84:2: note: previous definition of ‘IFF_NOTRAILERS’ was here
  IFF_NOTRAILERS   = 1<<5,  /* sysfs */
  ^~~~~~~~~~~~~~
/usr/include/net/if.h:56:5: error: redeclaration of enumerator ‘IFF_RUNNING’
     IFF_RUNNING = 0x40,  /* Resources allocated.  */
     ^
/usr/include/linux/if.h:85:2: note: previous definition of ‘IFF_RUNNING’ was here
  IFF_RUNNING   = 1<<6,  /* __volatile__ */
  ^~~~~~~~~~~
/usr/include/net/if.h:58:5: error: redeclaration of enumerator ‘IFF_NOARP’
     IFF_NOARP = 0x80,  /* No address resolution protocol.  */
     ^
/usr/include/linux/if.h:86:2: note: previous definition of ‘IFF_NOARP’ was here
  IFF_NOARP   = 1<<7,  /* sysfs */
  ^~~~~~~~~
/usr/include/net/if.h:60:5: error: redeclaration of enumerator ‘IFF_PROMISC’
     IFF_PROMISC = 0x100, /* Receive all packets.  */
     ^
/usr/include/linux/if.h:87:2: note: previous definition of ‘IFF_PROMISC’ was here
  IFF_PROMISC   = 1<<8,  /* sysfs */
  ^~~~~~~~~~~
/usr/include/net/if.h:64:5: error: redeclaration of enumerator ‘IFF_ALLMULTI’
     IFF_ALLMULTI = 0x200, /* Receive all multicast packets.  */
     ^
/usr/include/linux/if.h:88:2: note: previous definition of ‘IFF_ALLMULTI’ was here
  IFF_ALLMULTI   = 1<<9,  /* sysfs */
  ^~~~~~~~~~~~
/usr/include/net/if.h:67:5: error: redeclaration of enumerator ‘IFF_MASTER’
     IFF_MASTER = 0x400,  /* Master of a load balancer.  */
     ^
/usr/include/linux/if.h:89:2: note: previous definition of ‘IFF_MASTER’ was here
  IFF_MASTER   = 1<<10, /* __volatile__ */
  ^~~~~~~~~~
/usr/include/net/if.h:69:5: error: redeclaration of enumerator ‘IFF_SLAVE’
     IFF_SLAVE = 0x800,  /* Slave of a load balancer.  */
     ^
/usr/include/linux/if.h:90:2: note: previous definition of ‘IFF_SLAVE’ was here
  IFF_SLAVE   = 1<<11, /* __volatile__ */
  ^~~~~~~~~
/usr/include/net/if.h:72:5: error: redeclaration of enumerator ‘IFF_MULTICAST’
     IFF_MULTICAST = 0x1000, /* Supports multicast.  */
     ^
/usr/include/linux/if.h:91:2: note: previous definition of ‘IFF_MULTICAST’ was here
  IFF_MULTICAST   = 1<<12, /* sysfs */
  ^~~~~~~~~~~~~
/usr/include/net/if.h:75:5: error: redeclaration of enumerator ‘IFF_PORTSEL’
     IFF_PORTSEL = 0x2000, /* Can set media type.  */
     ^
/usr/include/linux/if.h:92:2: note: previous definition of ‘IFF_PORTSEL’ was here
  IFF_PORTSEL   = 1<<13, /* sysfs */
  ^~~~~~~~~~~
/usr/include/net/if.h:77:5: error: redeclaration of enumerator ‘IFF_AUTOMEDIA’
     IFF_AUTOMEDIA = 0x4000, /* Auto media select active.  */
     ^
/usr/include/linux/if.h:93:2: note: previous definition of ‘IFF_AUTOMEDIA’ was here
  IFF_AUTOMEDIA   = 1<<14, /* sysfs */
  ^~~~~~~~~~~~~
/usr/include/net/if.h:79:5: error: redeclaration of enumerator ‘IFF_DYNAMIC’
     IFF_DYNAMIC = 0x8000 /* Dialup device with changing addresses.  */
     ^
/usr/include/linux/if.h:94:2: note: previous definition of ‘IFF_DYNAMIC’ was here
  IFF_DYNAMIC   = 1<<15, /* sysfs */
  ^~~~~~~~~~~
In file included from 3com.c:48:0:
/usr/include/net/if.h:111:8: error: redefinition of ‘struct ifmap’
 struct ifmap
        ^~~~~
In file included from 3com.c:40:0:
/usr/include/linux/if.h:189:8: note: originally defined here
 struct ifmap {
        ^~~~~
In file included from 3com.c:48:0:
/usr/include/net/if.h:126:8: error: redefinition of ‘struct ifreq’
 struct ifreq
        ^~~~~
In file included from 3com.c:40:0:
/usr/include/linux/if.h:226:8: note: originally defined here
 struct ifreq {
        ^~~~~
In file included from 3com.c:48:0:
/usr/include/net/if.h:176:8: error: redefinition of ‘struct ifconf’
 struct ifconf
        ^~~~~~
In file included from 3com.c:40:0:
/usr/include/linux/if.h:278:8: note: originally defined here
 struct ifconf  {
        ^~~~~~

Autoconf/automake issues?

Apparently only the newest versions of autotools actually work. If you have issues with autothings, download the latest tar.gz release instead of cloning the git repository. The tar.gz releases have the autotools-generated stuff. The git repository doesn't because git is not a release, it's what is used to make releases.

Add multi-subsystem logging

Rather than use printf directly for logging, there should be some logging API used that supports a concept of log levels and subsystems, where levels can be set per-subsystem either on the command line or via the config file. (Or in the future even possibly changed at runtime via a config menu.)

SDU switch not 1 for YAML config?

When not having a YAML config, it seems that ld doesn't boot into the SDU ... but explicitly setting SDU in the YAML config to one makes it work.

Sorry for vague report, I'll see about getting a few more details and fill in.

Keyboard input flakey

The keyboard input for me is quite haphazard, entering one key results more often than not in two simultaneous key presses. Same behavior is with SDL1 and SDL2.

Can't get networking working

When running the emulator I get the following output when the lispm tries to use DHCP, in addition to time out errors on the console.
(I set logging to 10.)

This is with cap_net_admin enabled (or root)

3COM: TBSW given to interface: Packet offset 1974, length 74
3COM: Sending 78 bytes
ether:write(): Input/output error
3COM: TBSW given to interface: Packet offset 1974, length 74
3COM: Sending 78 bytes
ether:write(): Input/output error
3COM: TBSW given to interface: Packet offset 1974, length 74
3COM: Sending 78 bytes
ether:write(): Input/output error
3COM: TBSW given to interface: Packet offset 1974, length 74
3COM: Sending 78 bytes
ether:write(): Input/output error
3COM: TBSW given to interface: Packet offset 1974, length 74
3COM: Sending 78 bytes
ether:write(): Input/output error

Without cap_net_admin, it fails to access the tun device with the following

3COM: TBSW given to interface: Packet offset 1974, length 74
3COM: TBSW given to interface: Packet offset 1974, length 74
3COM: TBSW given to interface: Packet offset 1974, length 74
3COM: TBSW given to interface: Packet offset 1974, length 74
3COM: TBSW given to interface: Packet offset 1974, length 74
VCMEM: Memory Control Reg Read
VCMEM: Memory Control Reg Write: 0x28
VC 0 BLACK-ON-WHITE MODE now 1
VCMEM: Memory Control Reg Read
VCMEM: Memory Control Reg Write: 0x38
VC 0 BLACK-ON-WHITE MODE now 0
3COM: RESET
ether_init(): Operation not permitted
3COM: AMSW given to interface: Our address is 00:02:9C:55:89:C6
3COM: TBSW given to interface: Packet offset 546, length 1502
3COM: TBSW given to interface: Packet offset 546, length 1502

Booting On OpenBSD does not enter SDU on console

Even with a properly configured disk and ROMs, ld doesn't enter the SDU on the console.

But if one copies the exact same disks, ROMs and configuration files to a GNU/Linux system everything runs as expected.

  • Attach logs from OpenBSD
  • Attach logs from GNU/Linux

Screen is not high enough!

The Lambda screen was huge at its time, but with a virtual screen it could be even larger. For address space reasons it seems only up to 1024 in height could work (without microcode changes).

Build failure on Kubuntu 20.04

I get the following error when trying to build on Kubuntu 20.04

gcc -std=gnu99 -Wall -Wextra -ggdb -g -O2 -DXBEEP -D_REENTRANT -I/usr/include/SDL2 -DSDL2 -Wno-packed-bitfield-compat -Og -DSYSCONFDIR=/usr/local/etc -lm  -o lam 3com.o lambda_cpu.o mem.o sdu.o smd.o tapemaster.o kernel.o nubus.o sdu_hw.o syms.o vcmem.o  -lSDL2 -lyaml
/usr/bin/ld: kernel.o: undefined reference to symbol 'sin@@GLIBC_2.2.5'
/usr/bin/ld: /lib/x86_64-linux-gnu/libm.so.6: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.