터미널에서 BASIC 코드를 어떻게 실행할 수 있습니까?


20

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

어떤 옵션이 있습니까? (데비안 기반 및 아치 기반)


2
기본 버전에는 (실제로 호환되지 않는) 많은 버전이 있습니다.
Thomas Dickey

2
@ThomasDickey 데비안 태그가 있거나 있었기 때문에 데비안을 질문에 넣었습니다.
Rui F Ribeiro

답변:


24

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에 사용 된 기본입니다.

  • 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에서 자동화 작업을 수행 할 수 있습니다. 그래도 시도하지 않았습니다.


9

내 데비안 시스템과 다른 Linux 배포판은 패키지 관리자를 통해 직접 사용할 수있는 여러 가지 옵션이 있습니다. 그들 중 :

  • bwbasic:

ByBASIC (Bywater BASIC Interpreter)는 최소 BASIC (X3.60-1978)에 대한 ANSI 표준의 대규모 수퍼 세트와 C의 Full BASIC에 대한 ANSI 표준 (X3.113-1987)의 상당 부분을 구현합니다. BASIC의 확장으로서 프로그래밍 기능. bwBASIC은 가능한 한 휴대 성을 추구합니다.

  • sdlbasic:

sdlBasic은 SDL 라이브러리의 힘을 사용하여 게임을 만들기위한 작고 효율적이며 다중 플랫폼 BASIC 인터프리터입니다. 오래되고 영광스러운 AMOS에서 영감을 얻었습니다.

홈페이지 (참고 가이드)

위키 백과


8

모든 사람들이 "오래된 컴퓨터"가 "IBM 이전 PC"를 의미한다고 가정하기 때문에 다른 경로로 가서 "이전 컴퓨터"를 "Windows 9x 이전의 IBM 호환"으로 해석하는 대답을 제공 할 것입니다.

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

  1. 여전히 QBASIC.EXE킥 복사본 이 있으면 DOSBox 또는 DOSEMU 를 사용 하여 가상화 된 DOS 환경에서 실행할 수 있습니다. (모두 데비안의 저장소에서 사용할 수있는 및 설정할 수 있습니다. 다만이로 마운트 할 폴더 설정 간단 C:, 드롭 QBASIC.EXE그것으로, 그리고 넌 좋은 이동합니다.)

    이전 소스 코드와 완벽하게 호환되지만 " C:실제로는 디스크 이미지가 아닌 폴더 "라는 호스트 OS와의 통합이 없습니다 .

    그러나이 둘 사이에는 상충 관계가 있음을 분명히해야합니다. DOSEMU는 원하는 터미널에서 실행되지만 일부 QBasic 항목 (예 : 특수 그래픽 모드)에 사용되는 멋진 저수준 트릭을 지원하지 않습니다. 단지 그것을 지원하는 방법은 도스 박스와 같은 전체 에뮬레이터입니다 ...하지만 도스 박스는 별도의 창을 팝업보다는 터미널을 사용하는 것입니다.

  2. FreeBASIC 에는 방대한qb 모드가 있으며 QuickBASIC 의 많은 하위 집합과 완벽하게 호환됩니다 . 지원되지 않는 항목은 대부분 QuickBASIC이 16 비트 리얼 모드 시스템이고 FreeBASIC이 32 비트 보호 모드 시스템이라는 사실과 관련된 저수준 항목입니다.

    FreeBASIC은 Linux 바이너리를 제공하지만 실제로 "Debian"이 아닌 "Debian-family distros"를 의미하고 Ubuntu 또는 Mint와 같은 Ubuntu 파생 제품을 실행하는 경우에만 패키지 저장소에서 찾을 수 있습니다.

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


8

당신이 쓴 코멘트푼의 대답

"오래된 컴퓨터처럼"이란 말은

다른 사람들은 Linux 시스템에 설치할 수있는 BASIC 인터프리터에 대한 여러 가지 제안을 제공 했으므로 거기에 가지 않겠습니다. 최신 PC에는 일반적으로 내장 BASIC 인터프리터가 제공되지 않으므로 설치된 BASIC 인터프리터를 실행할 수있는 부팅 장치가 붙어 있습니다.

오히려 위의 내용을 사용하여 초기 마이크로 컴퓨터 (예 : Apple II, Commodore C-64, Zinclair ZX-81 및 ilk와 같은)와 비슷하지만 자동으로 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 편집은 다소 복잡하고 위험하므로주의하십시오. 루트 계정에서 자신을 잠그면 구성을 복구하기가 매우 어려워집니다.

기본 인터프리터를 init로 사용

이 방법은 가장 침습적이지만 BASIC 인터프리터로 직접 부팅하여 초기 마이크로 컴퓨터의 작동 방식에 가장 가깝습니다. 나는 이것을 권장하지 않으며, 중요한 작업 없이는 작동 하지 않을 것이라고 생각 하지만 완전성을 위해 포함하고 있습니다.

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

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

커널 커맨드 라인 ro quiet init=/usr/bin/bwbasic은 아마도 예전의 모습과 매우 비슷할 것입니다.



당신이 사용하는 sudo echo것은 당신이 의미하는 것을하지 않으며 -bash: /etc/shells: Permission denied어쨌든 >>명령의 나머지 부분이 평가되기 전에 bash에 의해 리디렉션이 설정되기 때문에 어쨌든 발생할 수 있습니다. type -P bwbasic | sudo tee -a /etc/shells대신 사용하는 것이 가장 좋습니다. " 권한
-sudo를

@shalomb 언급 해 주셔서 감사합니다. 나는 그것을 고쳤지만 다소 다른 방식으로 수정했다.
CVn

1
@ MichaelKjörling 기본 시스템 인터프리터를 사용하는 것보다 덜 과감한 대안 init은 init 시스템을 X11 디스플레이 관리자 bwbasic대신 사용하도록 설정 agetty하거나 X11 디스플레이 관리자를 시작하지 않도록 구성하는 것입니다 . (내가 말하는 것을 모르는 다른 사람들을 위해 커널은 Ctrl + Alt + F1을 통해 액세스 할 수있는 다양한 "가상 콘솔"을 제공하며 기본적으로 init 시스템 agetty은 1에서 6까지 시작합니다 . 7의 X11 디스플레이 관리자 (로그인 대화 상자를 제공함) Upstart 및 systemd 전에 /etc/inittab. 를 통해 제어 getty되었으며 하위 항목은 콘솔 로그인 프롬프트를 처리합니다.
ssokolow

@ssokolow 완전성에 대한 좋은 아이디어이지만, 그 시점에서 bwbasic 쉘이있는 전용 사용자 계정보다 한 발짝 앞서 있기 때문에 전체 다양성 측면에서 실제로 많은 것을 추가한다고는 생각하지 않습니다.
CVn

4

대안을 버리기 위해 : 기존 컴퓨터를 실행할 수있는 Linux 용 다중 에뮬레이터가 있습니다 . 예를 들어, xkegs를 사용하여 부팅하면 applesoft 기본 프롬프트가 표시됩니다. 기술적으로, 당신이 xkegs은 다음 예를 사용할 수있는 네트워크 소켓으로 노출됩니다 에뮬레이션 프린터로 에뮬레이트 사과에 출력을 리디렉션 할 수 있다고 생각 : 다른 리눅스 재료와 통신하는 것은 독자 (힌트 왼쪽 운동입니다 노스 캐롤라이나 에 피드 다른 파이프 응용 프로그램 등. 다른 길을 갈 방법이 있는지 확실하지 않지만 비슷한 것을 할 수있을 것으로 기대하십시오). 나는 commodore 64 에뮬레이터가 비슷하게 commodore의 기본 등을 실행할 수있는 방법을 가질 것으로 기대합니다.


예, 데비안에는 쉽게 설치할 수있는 에뮬레이터가 많이 있지만 kegs그중 하나가 아닙니다 ( apt-cache search결과 없음 ). 그리고 일부 / 대부분의 에뮬레이터의 경우 어딘가에서 원래 ROM을 가져와야 할 것입니다.
Alex Stragies

터미널에서 실행할 수있는 에뮬레이터를 참조하도록 답변을 편집 할 수도 있습니다 (OP는 과거에 Q를 편집 한 적이 있음)
Alex Stragies


"오래된 컴퓨터처럼"이란 말은 바로 거기에 있다는 것입니다.
DiamondCoderMan

1
@DiamondCoderMan bash 대신 bwbasic, brandy 또는 sdlbasic과 같은 것을 셸로 사용하는 사용자 계정을 설정할 수 있습니다. Linux에서는 아마도 BASIC 인터프리터로 부팅 된 오래된 마이크로 컴퓨터처럼 작동하는 시스템에 실제로 접근 할 수있는 가장 가까운 시스템 일 것입니다. 당신은 또한 같은 통과 init=/usr/bin/sdlbasic리눅스 커널에 작동하는지 당신에게 더 가까이를 얻을 것이다,하지만 그것은 수도조차 일 수도 있고.
CVn

1

많은 대안이 있습니다. 내 제안은 ssokolow의 답변과 비슷합니다. "현대적인"BASIC을 원하지만 구 BASIC 인터프리터와 유사한 구문을 원한다면 BaCon 에 시도해 보아야 합니다. 네이티브 코드를 생성하는 BASIC 트랜스 파일러입니다. 이 프로젝트에는 꽤 좋은 매뉴얼, 많은 라이브러리 및 예제, 심지어 BaCon으로 작성된 IDE도 있습니다.

여기에 이미지 설명을 입력하십시오


그러나 이것은 터미널을위한 것이 아닙니다
DiamondCoderMan

트랜스 파일러는 터미널에서 작동합니다. 작고 C 컴파일러를 사용하여 실행 파일을 빌드합니다. IDE는 프로젝트가 얼마나 강력한 지 보여주는 예일뿐입니다.
Rufo El Magufo

-2

브라우저에서 C64를 실행하고 BASIC을 그런 식으로 사용할 수 있습니다.

http://codeazur.com.br/stuff/fc64_final/

키보드 레이아웃이 다릅니다 (예 Shift-2: 따옴표).

http://jilltxt.net/wp-content/uploads/C64-keyboard-layout.png

원하는 경우 Applesoft BASIC- http://calormen.com/jsbasic/

온라인에는 다른 머신의 에뮬레이터가
있지만 대부분은
거기에 도달하는 데 필요한 초기 키보드 입력을 에뮬레이션하지 않고 로드하는 모든 프로그램으로 바로 이동 합니다.


1
자바 스크립트 기반 웹 브라우저 에뮬레이터에서 실행중인 경우 어떻게 "터미널에"있습니까?
Wyatt8740

3
"터미널에서"부분은 질문의 제목에 있습니다
roaima

1
@ Doyousketch2 제목을 조금 더주의 깊게보십시오. i.imgur.com/jDBZVEO.png
Wyatt8740

1
그것은 BASH 터미널에서 BASIC 코드를 실행하는 방법을
CVn

2
그것이 C64 나 다른 8 비트 시스템을위한 소프트웨어라면, 전체 머신을 에뮬레이트하는 것이 실제로 가장 좋은 아이디어입니다.
rackandboneman
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.