터미널을 여는 데스크톱 실행 프로그램 만들기

터미널을 여는 데스크톱 실행 프로그램 만들기

이전 컴퓨터에서 했던 것처럼 Linux에서도 BASIC 코드를 실행하고 싶습니다. (기본적으로 OS 기능을 실행할 수 있는 BASIC 인터프리터를 찾고 있습니다)

어떤 옵션이 있나요? (Debian 기반 및 Arch 기반에 적합)

답변1

Linux BASIC에서 기본적으로 실행하려면 데비안에 선택할 수 있는 여러 패키지가 있습니다:

  • 브랜디 - 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. 

이것은 Acorn이 1980년대에 만든 6502 기반 BBC Micro에 사용된 BASIC이었습니다.

  • bwbasic - byWater BASIC - 텍스트 모드, ANSI 호환 가능, 쉘 인식 확장 기능, IBM BASICA, Microsoft BASIC 및 gwBASIC을 포함한 여러 유형의 "오래된" BASIC 방언과 에뮬레이트할 수 있거나 호환성이 양호하다고 주장합니다.

bwBASIC은 다양한 유형의 BASIC 인터프리터에서 사용할 수 있는 기능, 명령 및 기능을 에뮬레이트하도록 구성할 수 있습니다.

bwBASIC은 이전 BASIC 인터프리터에서는 사용할 수 없었던 한 가지 기능을 구현합니다. 쉘 명령은 bwBASIC 프롬프트에서 대화식으로 입력할 수 있으며 인터프리터는 명령 쉘에서 이를 실행합니다.
예를 들어, "dir *.bas" 명령은 bwBASIC(DOS에서는, UNIX에서는 "ls -l *.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 및 이와 유사한 제품)와 비슷하지만 완전히 같지는 않은 BASIC 인터프리터를 자동으로 시작하는 것을 원한다는 의미로 받아들입니다. ) 기본 BASIC 인터프리터로 부팅되었습니다.

기본적으로 내가 생각할 수 있는 세 가지 방법이 있습니다.

터미널을 여는 데스크톱 실행 프로그램 만들기

이는 익숙한 시스템과 환경 내에서 완벽하게 작동하기 때문에 가장 덜 침해적입니다.

기본적으로 데스크탑 환경이 제공하는 모든 수단을 통해 프로그램 실행기를 만들고 터미널에서 선택한 BASIC 인터프리터를 실행하도록 설정합니다. 추가 효과를 위해 특정 글꼴, 색상 등을 설정하여 과거의 환경을 시뮬레이션할 수 있습니다. 이 작업을 수행하는 정확한 방법은 지정하지 않은 사용 중인 데스크톱 환경에 따라 다르지만 현재 응용 프로그램을 실행하기 위해 클릭하고 있는 위치를 마우스 오른쪽 버튼으로 클릭하고 새 실행 프로그램을 생성하기 위한 선택 항목을 찾는 것이 좋은 시작이 될 것입니다. .

BASIC 인터프리터를 셸로 사용하여 별도의 사용자 계정을 만듭니다.

이는 단순한 데스크톱 실행 프로그램보다 조금 더 복잡하지만 더 나은 격리 기능을 제공하므로 자신의 파일을 망칠 위험이 없습니다. 먼저 BASIC 인터프리터를 설치하십시오. 예제로 사용하겠지만 bwbasic터미널에서 기본적으로 실행되는 한 실제로는 무엇이든 가능합니다. 그런 다음 사용자를 추가하고 해당 쉘을 bwbasic 인터프리터로 설정하십시오. 이는 GUI를 통해 수행할 수 있지만 사용 중인 데스크탑 환경에 따라 다릅니다. 이식 가능한 접근 방식은 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

그러면 sudo를 통해 깨끗한 BASIC 환경으로 들어갈 수 있습니다.

$ sudo -i -u basic

원하는 경우 터미널에서 이 명령을 실행하는 실행 프로그램(위와 같이)을 만들 수 있습니다.

sudo에서 메시지가 표시되면 일반 비밀번호를 입력하세요. 원하는 경우 sudoers 구성을 편집하여 비밀번호 프롬프트를 피할 수 있지만 sudoers 편집은 다소 복잡하고 훨씬 더 위험하다는 점에 유의하세요. 루트 계정에서 자신을 잠그면 구성을 복구하기가 매우 어려워질 수 있습니다.

BASIC 인터프리터를 초기화로 사용

이는 가장 침입적인 접근 방식이지만 BASIC 인터프리터로 직접 부팅하여 초기 마이크로컴퓨터가 작동하는 방식에 가장 가까이 다가갈 수도 있습니다.나는 이것을 권장하지 않으며 작동하지 않을 것이라고 생각합니다.별다른 작업은 없지만 완전성을 위해 포함시켰습니다.

initLinux 커널은 커널 초기화가 완료되면 실행할 프로그램을 지정하는 명령줄 매개변수(예, Linux 커널에는 명령줄 매개변수가 있습니다. /proc/cmdline에서 읽으면 현재 부팅된 명령줄을 볼 수 있습니다)를 허용합니다 . 부트 로더(대부분 GRUB)를 구성하여 커널 항목 (또는 설치한 다른 BASIC 인터프리터) init을 부팅할 수 있도록 할 수 있습니다./usr/bin/bwbasic

이것이 작동하려면 BASIC 인터프리터와 이에 필요한 모든 파일이 루트( /) 파일 시스템에 있어야 합니다. 이는 init의 작업 중 하나가 모든 파일 시스템을 마운트하는 것이고, init가 아닌 프로그램을 init로 제공하므로 루트가 아닌 파일 시스템은 마운트되지 않기 때문입니다. (init의 또 다른 작업은 읽기-쓰기 모드에서 루트 파일 시스템을 다시 마운트하는 것이라고 생각합니다. 따라서 간단한 접근 방식으로는 아무 것도 저장할 수 없습니다. 그러나 정확한 구현 세부 사항에 따라 다음이 가능할 수도 있습니다. 시스템이 mount -o remount,rw /루트 파일 시스템 읽기-쓰기를 다시 마운트하는 것과 같은 작업을 실행하도록 합니다.) 선택한 BASIC 인터프리터는 또한 init가 담당하는 다른 어떤 것에도 의존해서는 안 되며 init 또는 프로세스에서 처리하는 기능에 액세스할 수 없습니다. init에 의해 생성됩니다(예: 네트워킹 또는 다중 사용자 지원).

다음과 같은 커널 명령줄을 사용하면 ro quiet init=/usr/bin/bwbasic예전의 모습과 매우 유사할 것입니다.

답변3

모든 사람들이 "이전 컴퓨터"가 "IBM 이전 PC"를 의미한다고 가정하는 것 같으므로 저는 다른 경로로 가서 "오래된 컴퓨터"를 "Windows 9x 이전의 IBM 호환 제품"을 의미하는 것으로 해석하는 답변을 제공하겠습니다.

가 포함된 MS-DOS 버전을 실행하는 컴퓨터를 의미하는 경우 QBASIC.EXE"Linux에서" 실행을 얼마나 엄격하게 정의하는지에 따라 세 가지 옵션이 있습니다.

  1. Kicking around 의 사본이 아직 남아 있다면 QBASIC.EXE다음을 사용할 수 있습니다.도스박스또는도세무가상화된 DOS 환경에서 실행하려면 (두 가지 모두 데비안 저장소에서 사용할 수 있으며 설정이 간단합니다. 마운트할 폴더를 으로 설정하고 해당 폴더에 C:끌어다 놓으면 QBASIC.EXE모든 준비가 완료됩니다.)

    이는 이전 소스 코드와의 완벽한 호환성을 제공하지만 " C:실제로는 디스크 이미지가 아니라 폴더입니다" 이외의 호스트 OS와의 통합은 없습니다.

    그러나 둘 사이에는 절충안이 있다는 점을 분명히 해야 합니다. DOSEMU는 원하는 모든 터미널에서 실행되지만 일부 QBasic에서 사용되는 멋진 저수준 트릭(예: 특수 그래픽 모드)을 지원하지 않습니다. 그만큼오직이를 지원하는 방법은 DOSBox와 같은 전체 에뮬레이터입니다. 하지만 DOSBox는 터미널을 사용하지 않고 자체 창을 팝업합니다.

  2. 프리베이직qb완벽한 호환성을 목표로 하는 방언/모드를 가지고 있습니다 .대규모 하위 집합QuickBASIC의. (지원되지 않는 사항은 대부분 QuickBASIC이 16비트 리얼 모드 시스템인 반면 FreeBASIC은 32비트 보호 모드 시스템이라는 사실과 관련된 저수준 항목입니다.)

    FreeBASIC은 Linux 바이너리를 제공하지만 실제로 "Debian"이 아닌 "Debian 계열 배포판"을 의미하고 Ubuntu 또는 Mint와 같은 Ubuntu 파생 버전을 실행 중인 경우에만 패키지 저장소에서 찾을 수 있습니다.

  3. Linux 빌드QB64Ubuntu 리포지토리에도 없지만 가장 호환 가능한 보호 모드 QuickBASIC 자손이 되는 것을 목표로 하며 QBasic/QuickBasic IDE 복제를 시도하는 IDE도 제공합니다.

답변4

대안을 제시하자면 다음과 같은 Linux용 에뮬레이터가 여러 개 있습니다.달리다당신의 오래된 컴퓨터. 예를 들어, xkegs를 사용하여 부팅하면 applesoft 기본 프롬프트가 나타나야 합니다. 다른 Linux와 통신하는 것은 독자에게 맡겨진 연습입니다. (힌트: 기술적으로는 에뮬레이트된 사과의 출력을 에뮬레이트된 프린터로 리디렉션할 수 있다고 생각합니다. 그런 다음 xkegs는 사용할 수 있는 네트워크 소켓으로 노출됩니다.체크 안함다른 파이프 애플리케이션 등에 공급합니다. 다른 방향으로 갈 수 있는 방법이 있는지는 확실하지 않지만 비슷한 작업이 수행될 수 있을 것으로 예상합니다. 나는 commodore 64 에뮬레이터가 비슷하게 commodore의 기본 등을 실행하는 방법을 가질 것이라고 기대합니다.

관련 정보