What the hell is this?

So, I wanted to be able to do stuff with BASIC, but there’s no BASIC compilter working out of the box (despite the website saying it’s supported, hmm). I installed VS Code and persuaded fbc to install from a tarball, and then found some unmet dependencies. No problem, I’ll just apt install them.

After a minute, the bugger dropped the GUI. No problem, I’ll just go to another tty and reboot.

When I rebooted, I was greeted with this:

Obviously not great. So I rebooted through a tty and tried again, same thing. Won’t let me log in.

So I tried to log in through a tty and then startx from there, and got this:

So… what’s the deal? Quite apart from BASIC obviously not being supported (really CPI should edit the front page and stop claiming the DevTerm supports software it doesn’t), I’m now looking at having to rewrite my SD card again to get a working system.

Many wrong things added together…

  1. Check your /etc/X11/xorg.conf.d directory. The stock OS has proper rotation settings. But since you “persuaded” some tarballs to install, you may need to check what they actually did.
  2. If you want to startx, at least stop the display manager (in your case, systemctl stop lightdm) – I don’t recommend this though. That you cannot login may be related to picking the wrong session (cut off in the rotated view so you aren’t seeing it…)
  3. I’m on ArchLinux but I think Armbian is similar, and it’s got a ton of different BASIC environments – yabasic, bas, clibasic, lowres-nx (https://lowresnx.inutilis.com/ , looks interesting, and the author @Timo is also on this forum ) to name a few. Some may require compiling, but always check if there are pre-packaged binaries, if not, then check if there are build scripts tailored for your distribution, and then resort to compiling a tarball.
  4. Not sure how you even got it installed with unmet dependencies but anyway. During your apt install transactions, do you notice significant changes? Like some packages conflict with system default ones so installing them will force the stock OS packages to be removed.

Yatli wrote up an excellent explanation of how you trashed your system. But the most important thing he said is that basic is a binary that interprets the basic script you write. It’s like python. Yatli mentioned a couple packages that you can install via apt that provide a basic interpreter. I know the standard yabasic package is available.

Here’s a simple yabasic session:

cpi@clockworkpi-a06:~$ sudo apt -y install yabasic
[...]
cpi@clockworkpi-a06:~$ yabasic 

This is yabasic version 2.89.1,
configured for aarch64-unknown-linux-gnu at Fri Feb  5 10:22:26 UTC 2021

   Copyright 1995-2021 by Marc Ihm, according to the MIT License

Enter your program and type RETURN twice when done.

Your program will execute immediately and cannot be saved;
create your program with an external editor, to avoid this.
Type 'man yabasic' or see the file yabasic.htm for more information,
or go to www.yabasic.de for online resources.

10 print "Devterm"

Devterm
cpi@clockworkpi-a06:~$

Also, you mentioned VSCode. VSCode is just a [very fancy] text editor. You don’t need it for basic, and it doesn’t provide a interpreter. It’s also very resource intensive for DevTerm.

Now, trying to repair your existing system…

You can try to issue the command, from a devterm terminal to temporarily correct the screen:
$ xrander -o right

For a more permanent solution, you can try to recreate the file that ClockworkPi uses to set the monitor rotation. That file is /etc/X11/xorg.conf.d/10-monitor.conf

# set monitor
Section "Monitor"
        Identifier "DSI-1"
        Option "Rotate" "right"
        Option "DPMS" "false"
EndSection

Section "ServerLayout"
        Identifier "ServerLayout0"
        Option "BlankTime"  "0"
        Option "StandbyTime" "0"
        Option "SuspendTime" "0"
        Option "OffTime" "0"
EndSection

Finally, if that doesn’t work, you’ll need to re-image.

If you want to go true old-school basic, you can install my fork of VirtualT. It’s a favorite of Bill Gates… :wink:

devterm-basic

1 Like

I know what BASIC is, I’ve been using it for a long time. I just specifically wanted freebasic because it’s a compiler I use on my Windows boxes, one I know my way around. And I like being able to produce binaries.

Similarly, I know what VS Code is. Again, I wanted that because… well, I wanted it. And it worked fine, VS Code isn’t the issue. I only mentioned it because it was part of the setup routine I’d done.

I might just reflash, it’ll be simpler - and not try and install that again. Be better to just keep to using it for writing and emailing and such.

  1. I’ll have a look, but the tarball I installed shouldn’t have touched the display. It was just the freebasic binaries.
  2. Not being able to login was it refusing to accept my password. Except just logging in on a tty was fine.
  3. I know, I just wanted to have the same compiler I use on my other machines. Uniformity within my ecosystem.
  4. The freebasic install for Linux on arm is distributed as a bag of files with an install shellscript that just copies files to your /usr directory. The program threw an error when I tried to compile a tiny test program, and I looked the error up, looked to be some library missing. The machine borked when I was trying to install that library.
  • Not being able to login was it refusing to accept my password. Except just logging in on a tty was fine.

Hmm yeah I had a similar issue on my desktop, with lightdm. I thought I forgot the password, ssh’ed in with pubkey, chpasswd, and a few days later got blocked again. Maybe try another display manager like sddm:

sudo apt install sddm
sudo systemctl disable lightdm
sudo systemctl enable sddm
sudo systemctl stop lightdm
sudo systemctl start sddm

btw the stock OS image has configured auto-login – looks like your /etc/X11 directory really took a hit.

The machine borked when I was trying to install that library.

This. Look up which package did you install. /var/log/apt/history.log etc.

yatli@yatao-nas ~ % pacman -Ss freebasic
community/freebasic 1.09.0-2
    A free BASIC compiler

yatli@devterm ~ % pacman -Ss freebasic
1 yatli@devterm ~ %                      :(

Desktop yes, DevTerm no? OK then:

1 yatli@devterm ~/git % asp checkout freebasic
remote: Enumerating objects: 132, done.
remote: Counting objects: 100% (27/27), done.
remote: Compressing objects: 100% (27/27), done.
remote: Total 132 (delta 13), reused 0 (delta 0), pack-reused 105
Receiving objects: 100% (132/132), 21.79 KiB | 301.00 KiB/s, done.
Resolving deltas: 100% (19/19), done.
From https://github.com/archlinux/svntogit-community
 * branch            packages/freebasic -> FETCH_HEAD
 * [new branch]      packages/freebasic -> community/packages/freebasic
Cloning into 'freebasic'...
done.
yatli@devterm ~/git % cd freebasic
yatli@devterm ~/git/freebasic (git)-[community/packages/freebasic] % ls
repos  trunk
yatli@devterm ~/git/freebasic (git)-[community/packages/freebasic] % cd trunk
yatli@devterm ~/git/freebasic/trunk (git)-[community/packages/freebasic] % ls
PKGBUILD
yatli@devterm ~/git/freebasic/trunk (git)-[community/packages/freebasic] % cat PKGBUILD
# Maintainer: Felix Yan <felixonmars@archlinux.org>
# Contributor: Jesse Jaara <gmail.com: jesse.jaara>
# Contributor: rabyte <gmail.com: rabyte>

pkgname=freebasic
pkgver=1.09.0
pkgrel=2
pkgdesc="A free BASIC compiler"
arch=('x86_64')
url="https://www.freebasic.net/"
license=('GPL2' 'LGPL')
options=('!lto')
depends=('ncurses')
makedepends=('freebasic' 'libxpm' 'gpm' 'libffi' 'libxrandr' 'mesa')
#source=("https://downloads.sourceforge.net/fbc/FreeBASIC-$pkgver-source-bootstrap.tar.xz")
source=("https://downloads.sourceforge.net/fbc/FreeBASIC-$pkgver-source.tar.xz")
sha512sums=('3a572e3366181fd800a029d6e031bef8d5d16de481a286191f3f0d647e57cff54dc65f7e1904abeb23d4aaffb5a401e22725556c59bd40c59ab23d026eeecc27')

build() {
  cd FreeBASIC-$pkgver-source # -bootstrap
  make CFLAGS="$CFLAGS $(pkg-config --cflags libffi)" # bootstrap
}

package() {
  cd FreeBASIC-$pkgver-source # -bootstrap
  # PATH="$PWD/bin:$PATH" make install prefix="$pkgdir/usr" FBCFLAGS="-i inc"
  make install prefix="$pkgdir/usr"
}
yatli@devterm ~/git/freebasic/trunk (git)-[community/packages/freebasic] %

There’s got to be a similar way for Armbian to lookup package build scripts.
Some of the deps ( 'libxpm' 'gpm' 'libffi' 'libxrandr' 'mesa') may have clockwork special treatments under Armbian. Cross-check your installation history.

Thanks for this - but I can’t get network access to install another dm if I can’t login to the gui. I’ve not got the inclination to try and remember how to get on wifi through bash. I’m just going to reflash the thing (third time’s the charm?) and not try again to put programming stuff on it. The DevTerm just isn’t made for programming, I can see that now. It’s just a novelty that’s not capable of running anything more than a web browser and basic office utilities, so I’ll just use it for writing. At least LibreOffice works.

HA! um, welcome to FOSS?

1 Like