
이전 컴퓨터에서 했던 것처럼 Linux에서 BASIC 코드를 실행하고 싶습니다. (기본적으로 운영 체제 기능을 실행할 수 있는 BASIC 인터프리터를 찾고 있습니다)
내 옵션은 무엇입니까? (바람직하게는 Debian 및 Arch 기반)
답변1
Linux BASIC에서 기본적으로 실행하려면 데비안에서 사용할 수 있는 여러 패키지가 있습니다:
- Brandy - BBC Micro BASIC과 호환 가능 - X11 그래픽 인터페이스에서 작동하며 사운드와 그래픽을 지원하는 것으로 보입니다.
Brandy는 Acorn Computers가 Archimedes 및 Risc PC와 같은 ARM 프로세서를 사용하는 다양한 데스크톱 컴퓨터에 제공하는 BASIC의 방언인 BBC BASIC V의 통역사이며 여전히 이러한 컴퓨터와 호환되는 컴퓨터에서 사용됩니다.
BASIC V is a much extended version of BBC BASIC.
이는 1980년대 Acorn이 제작한 6502 기반 BBC Micro에 사용된 BASIC이었습니다.
- bwbasic - byWater BASIC - ANSI와 호환되고 쉘 인식 확장 기능이 있으며 IBM BASICA, Microsoft BASIC 및 gwBASIC을 포함한 여러 유형의 "오래된" BASIC 방언과 우수한 호환성을 에뮬레이션/가질 수 있다고 주장하는 텍스트 모드입니다.
bwBASIC은 다양한 유형의 BASIC 인터프리터에서 사용할 수 있는 기능, 명령 및 기능을 에뮬레이트하도록 구성할 수 있습니다.
bwBASIC은 이전 BASIC 인터프리터에는 없었던 기능을 구현합니다. 즉, bwBASIC 프롬프트에서 대화식으로 쉘 명령을 입력할 수 있으며 인터프리터는 명령 쉘에서 이를 실행합니다.
예를 들어, bwBASIC(DOS에서는 "dir *.bas", UNIX에서는 "ls -l *.bas")에 "dir *.bas" 명령을 입력하면 운영 체제 명령줄에서처럼 실행됩니다.쉘 명령은 bwBASIC 프로그램의 번호가 매겨진 줄에 주어질 수도 있으므로 bwBASIC을 쉘 프로그래밍 언어로 사용할 수 있습니다. bwBASIC은 RMDIR, CHDIR, MKDIR, NAME, KILL, ENVIRON 및 ENVIRON$() 명령 및 기능 구현을 통해 추가 쉘 처리 기능을 제공합니다.
설치하려면:
sudo apt-get install brandy bwbasic
bwbasic
내 개인적인 경험으로는 텍스트 명령줄이나 쉘 스크립트에서 BASIC의 강력한 기능을 사용할 수 있기 때문에 선호합니다 .
대안으로, BASIC 구문을 제외하고 다시 방문하고 싶은 오래된 컴퓨터에 대한 모든 환경을 분명히 구현하는 여러 가지 오래된 컴퓨터용 에뮬레이션 패키지도 있습니다.
흥미롭게도 bwbasic
BASIC 언어를 사용하여 스크립트를 작성하는 것과 같이 Unix에서 자동화를 허용하는 것은 이론적으로 가능합니다. 그러나 결코 그것을 시도하지 않았습니다.
답변2
그리고 "오래된 컴퓨터처럼"이라는 말은 그것이 거기에 있다는 뜻입니다
다른 사람들은 Linux 시스템에 설치할 수 있는 BASIC 인터프리터에 대해 여러 가지 제안을 제공했기 때문에 여기서는 다루지 않겠습니다. 최신 PC에는 일반적으로 BASIC 인터프리터가 내장되어 있지 않으므로 설치된 BASIC 인터프리터를 실행할 수 있는 프로그램을 실행해야 합니다.
대신, 위의 내용은 기본으로 부팅되는 초기 마이크로컴퓨터(예: Apple II, Commodore C-64, Zinclair ZX-81 및 해당 ilk)와 비슷하지만 완전히 같지는 않은 BASIC 인터프리터를 자동으로 시작하는 것을 원한다는 것을 의미한다고 생각합니다. 기본 통역사.
기본적으로 이 작업을 수행할 수 있는 세 가지 방법이 있습니다.
터미널을 여는 데스크탑 실행 프로그램 만들기
이는 익숙한 시스템과 환경 내에서 완전히 작동하므로 방해가 가장 적습니다.
기본적으로 데스크톱 환경에서 제공하는 모든 수단을 통해 프로그램 실행기를 만들고 터미널에서 선택한 BASIC 인터프리터를 실행하도록 설정할 수 있습니다. 추가 효과를 위해 특정 글꼴, 색상 등을 설정하여 과거 환경을 시뮬레이션할 수 있습니다. 정확한 방법은 사용 중인 데스크탑 환경(아직 지정하지 않음)에 따라 다르지만, 현재 애플리케이션을 실행하기 위해 클릭하고 있는 위치를 마우스 오른쪽 버튼으로 클릭하고 새 실행 프로그램을 생성하는 옵션을 찾으세요. 좋은 시작이 될 것입니다.
BASIC 인터프리터를 셸로 사용하여 별도의 사용자 계정 만들기
이는 단순한 데스크톱 실행 프로그램보다 약간 더 복잡하지만 더 나은 격리 기능을 제공하므로 자신의 파일을 망칠 위험이 없습니다. 먼저 BASIC 인터프리터를 설치합니다. 이 예를 사용하겠지만 bwbasic
실제로 터미널에서 로컬로 실행되는 한 모든 일이 발생합니다. 그런 다음 사용자를 추가하고 해당 쉘을 bwbasic 인터프리터로 설정하십시오. 이는 GUI를 통해 수행할 수 있지만 사용 중인 데스크탑 환경에 따라 다릅니다. 이식 가능한 방법은 Terminal 에서 사용하는 것입니다 useradd
.
$ sudo -i
# grep -q "$(type -pP bwbasic)" /etc/shells || echo "$(type -pP bwbasic)" >>/etc/shells
# useradd --home /home/basic --create-home --shell "$(type -pP bwbasic)" basic
그러면 깨끗한 BASIC 환경으로 sudo를 실행할 수 있습니다.
$ sudo -i -u basic
필요한 경우 위에서 언급한 대로 터미널에서 이 명령을 실행하는 실행 프로그램을 만들 수 있습니다.
sudo가 메시지를 표시하면 일반 비밀번호를 입력하세요. 필요한 경우 sudoers 구성을 편집하여 비밀번호 프롬프트를 피할 수 있지만 sudoers 편집은 루트 계정에서 자신을 잠가서 구성을 수정하는 것이 매우 어려울 수 있다는 점에 유의하세요.
BASIC 인터프리터를 init로 사용
이는 가장 침입적인 방법이지만 BASIC 인터프리터로 직접 부팅하여 초기 마이크로컴퓨터가 작동하는 방식에 가장 가까이 다가갈 수도 있습니다.나는 이 작업을 권장하지 않으며 작동하지 않을 것 같습니다.중요한 작업은 아니지만 완전성을 위해 포함시켰습니다.
init
Linux 커널은 커널 초기화가 완료된 후 실행될 프로그램을 지정하는 명령줄 매개변수(예, Linux 커널에는 명령줄 매개변수가 있습니다. /proc/cmdline을 읽으면 현재 부팅된 명령줄을 볼 수 있습니다)를 허용합니다 . 부팅해야 하는 커널 항목 init
( /usr/bin/bwbasic
또는 설치한 다른 BASIC 인터프리터)을 부팅 할 수 있도록 부트 로더(대부분 GRUB)를 구성할 수 있습니다 .
이를 수행하려면 BASIC 인터프리터와 필요한 모든 파일이 루트( /
) 파일 시스템에 있어야 합니다. 이는 init의 작업 중 하나가 모든 파일 시스템을 마운트하는 것이고, init가 아닌 프로그램을 init로 제공하기 때문에 루트가 아닌 파일 시스템은 마운트되지 않기 때문입니다. (init의 또 다른 작업은 루트 파일 시스템을 읽기-쓰기 모드로 다시 마운트하는 것이라고 생각하므로 이 간단한 접근 방식으로는 아무 것도 저장할 수 없습니다. 그러나 구현 세부 사항에 따라 시스템을 가져올 수도 있습니다. 읽기 및 쓰기 작업을 위해 루트 파일 시스템을 다시 마운트하는 것과 같은 작업을 수행합니다 mount -o remount,rw /
.) 선택한 BASIC 인터프리터는 init가 담당하는 다른 어떤 것에도 의존해서는 안 되며 init가 처리하는 기능이나 생성된 프로세스에 액세스할 수 없습니다. 초기화(예: 네트워크 또는 다중 사용자 지원)
비슷한 커널 명령줄을 사용 ro quiet init=/usr/bin/bwbasic
하면 예전과 매우 비슷해질 수 있습니다.
답변3
모든 사람들이 "오래된 컴퓨터"가 "IBM 이전 PC"를 의미한다고 생각하는 것 같기 때문에 저는 다른 경로를 선택하여 "오래된 컴퓨터"가 "Windows 9x 이전 IBM 호환 PC" 시스템을 의미한다고 설명하는 답변을 제공하겠습니다. .
포함된 MS-DOS 버전을 실행하는 시스템을 의미하는 경우 QBASIC.EXE
"Linux에서 실행"을 얼마나 엄격하게 정의하는지에 따라 세 가지 옵션이 있습니다.
QBASIC.EXE
아직 Kickball 사본이 있다면 다음을 사용할 수 있습니다.도스 상자또는도르셈가상화된 DOS 환경에서 실행하세요. (두 가지 모두 데비안 저장소에서 사용할 수 있으며 설정이 간단합니다. 설치하려는 폴더를 에 설정C:
하고 끌어넣기 만 하면 됩니다QBASIC.EXE
.)C:
이렇게 하면 이전 소스 코드와 완벽한 호환성을 제공하지만 "디스크 이미지가 아닌 실제로 폴더"가 되는 것 외에는 호스트 운영 체제와 통합되지 않습니다.그러나 둘 사이에는 트레이드오프가 있다는 점을 분명히 해야 합니다. DOSEMU는 원하는 모든 터미널에서 실행되지만 QBasic에서 사용하는 멋진 저수준 트릭(예: 특수 그래픽 모드)을 지원하지 않습니다. 이것오직이를 지원하는 방법은 DOSBox와 같은 전체 에뮬레이터를 사용하는 것입니다. 하지만 DOSBox는 터미널을 사용하는 대신 자체 창을 표시합니다.
무료 기본
qb
함께 작동하도록 설계된 방언/모드 가 있습니다 .대규모 하위 집합퀵베이직. (지원되지 않는 콘텐츠는 주로 QuickBASIC이 16비트 리얼 모드 시스템이고 FreeBASIC이 32비트 보호 모드 시스템이라는 사실과 관련된 하위 수준 콘텐츠입니다.)FreeBASIC은 Linux 바이너리를 제공하지만 실제로 "Debian"이 아닌 "Debian 제품군 배포판"을 의미하고 Ubuntu 또는 Mint와 같은 Ubuntu 파생 버전을 실행하는 경우 패키지 저장소에서 이를 찾을 수 있습니다.
리눅스 버전은QB64Ubuntu 리포지토리에도 없지만 가장 호환 가능한 보호 모드 QuickBASIC 자손이 되는 구체적인 목표가 있으며 QBasic/QuickBasic IDE 복제를 시도하는 IDE도 제공합니다.
답변4
대안을 제시하자면 다음과 같은 여러 Linux 에뮬레이터가 있습니다.달리기오래된 컴퓨터. 예를 들어, xkegs를 실행하면 applesoft 기본 프롬프트가 나타나야 합니다. 다른 Linux와 통신하는 것은 독자에게 맡겨진 연습입니다(힌트: 기술적으로는 시뮬레이션된 Mac의 출력을 시뮬레이션된 프린터로 리디렉션할 수 있고 xkegs는 이를 네트워크 소켓으로 노출할 것이라고 믿습니다.CNC다른 파이프라인 애플리케이션 등에 적용됩니다. 다른 방향으로 갈 수 있는 방법이 있는지는 확실하지 않지만 비슷한 일이 이루어질 수 있을 것으로 기대합니다.) Commodore 64 에뮬레이터가 Commodore의 기본 등을 실행하는 것과 비슷한 방식을 갖기를 바랍니다.