Làm thế nào tôi có thể chạy mã BASIC trong một thiết bị đầu cuối?


20

Tôi muốn chạy mã BASIC, giống như bạn đã từng làm trên các máy tính cũ hơn, trong Linux. (Tôi đang tìm kiếm một bộ ngắt BASIC có thể chạy các chức năng của hệ điều hành một cách tự nhiên)

Tôi có những lựa chọn nào? (Tốt nhất cho dựa trên Debian và dựa trên Arch)


2
Có nhiều phiên bản (không thực sự tương thích) của cơ bản.
Thomas Dickey

2
@ThomasDickey Tôi đặt Debian vào câu hỏi, vì nó có / có thẻ Debian.
Rui F Ribeiro

Câu trả lời:


24

Nếu bạn muốn chạy tự nhiên trong Linux BASIC, bạn có một số gói trong Debian để chọn:

  • BBC Micro BASIC tương thích hoàn toàn - hoạt động trong giao diện đồ họa X11, hỗ trợ âm thanh và đồ họa;

Brandy là một thông dịch viên cho BBC BASIC V, phương ngữ của BASIC mà Acorn Computer cung cấp với các loại máy tính để bàn sử dụng bộ xử lý ARM như Archimedes và Risc PC, và vẫn được sử dụng trên các máy tính và đồng bộ này.

   BASIC V is a much extended version of BBC BASIC. 

Đây là BASIC được sử dụng trên BBC Micro dựa trên 6502 mà Acorn đã tạo ra trong những năm 1980.

  • bwbasic - byWater BASIC - chế độ văn bản, tuyên bố là tương thích ANSI, có các phần mở rộng nhận biết vỏ và tuyên bố có khả năng mô phỏng / có khả năng tương thích tốt với một số loại phương ngữ BASIC "cũ" - bao gồm IBM BASICA, Microsoft BASIC và gwBASIC.

bwBASIC có thể được cấu hình để mô phỏng các tính năng, lệnh và chức năng có sẵn trên các loại trình thông dịch BASIC khác nhau;

bwBASIC triển khai một tính năng không có sẵn trong các trình thông dịch BASIC trước đó: một lệnh shell có thể được nhập tương tác tại dấu nhắc bwBASIC và trình thông dịch sẽ thực thi nó dưới vỏ lệnh.
Ví dụ, lệnh "dir * .bas" có thể được nhập vào bwBASIC (trong DOS hoặc "ls -l * .bas" trong UNIX) và nó sẽ được thực thi như từ dòng lệnh của hệ điều hành.

Các lệnh Shell cũng có thể được đưa ra trên các dòng được đánh số trong chương trình bwBASIC, do đó bwBASIC có thể được sử dụng làm ngôn ngữ lập trình shell. bwBASIC thực hiện các lệnh và chức năng của RMDIR, CHDIR, MKDIR, NAME, KILL, ENVIRON và ENVIRON $ () cung cấp khả năng xử lý shell hơn nữa.

Để cài đặt chúng:

sudo apt-get install brandy bwbasic

Đối với kinh nghiệm cá nhân của tôi, tôi thích bwbasicvì nó cho phép có sức mạnh của BASIC trong một dòng lệnh văn bản hoặc tập lệnh shell.

Thay vào đó, bạn cũng có một số gói mô phỏng máy tính cũ, rõ ràng bên cạnh cú pháp BASIC thực hiện tất cả môi trường của một số máy tính cũ mà bạn có thể muốn sống lại.

Thật thú vị, bwbasictrên lý thuyết có thể cho phép tự động hóa các hoạt động trong Unix, ví dụ: xây dựng các tập lệnh bằng ngôn ngữ BASIC. Không bao giờ thử nó mặc dù.


9

Các hệ thống Debian của tôi và có lẽ hầu hết các bản phân phối Linux khác đều có sẵn một số lựa chọn trực tiếp thông qua trình quản lý gói. Trong số đó:

  • bwbasic:

Trình thông dịch BASIC Bywater (bwBASIC) thực hiện một siêu bộ lớn của Tiêu chuẩn ANSI cho BASIC tối thiểu (X3.60-1978) và một tập hợp con đáng kể của Tiêu chuẩn ANSI cho BASIC đầy đủ (X3.113-1987) trong C. Nó cũng cung cấp vỏ các cơ sở lập trình như một phần mở rộng của BASIC. bwBASIC tìm cách di động nhất có thể.

  • sdlbasic:

sdlBasic là một trình thông dịch BASIC nhỏ, hiệu quả và đa nền tảng để tạo các trò chơi sử dụng sức mạnh của thư viện SDL. Nó được lấy cảm hứng từ AMOS cũ và vinh quang.

Trang chủ (Hướng dẫn tham khảo)

Wikipedia


8

Vì mọi người dường như cho rằng bạn có nghĩa là "PC trước IBM" bởi "máy tính cũ", tôi sẽ đi theo con đường khác và đưa ra câu trả lời diễn giải "máy tính cũ" có nghĩa là "IBM tương thích trước Windows 9x".

Nếu, có nghĩa là máy tính chạy các phiên bản MS-DOS đi kèm QBASIC.EXE, bạn có ba tùy chọn, tùy thuộc vào mức độ bạn xác định chạy chúng "trên Linux":

  1. Nếu bạn vẫn còn một bản sao của QBASIC.EXExung quanh, bạn có thể sử dụng DOSBox hoặc DOSEMU để chạy nó trong môi trường DOS ảo hóa. (Cả hai đều có sẵn trong kho của Debian và rất đơn giản để thiết lập. Chỉ cần đặt một thư mục sẽ được gắn kết C:, thả QBASIC.EXEvào đó và bạn sẽ thấy ổn.)

    Điều đó sẽ cung cấp cho bạn khả năng tương thích hoàn hảo với mã nguồn cũ, nhưng không tích hợp với HĐH máy chủ ngoài " C:thực sự là một thư mục, chứ không phải là hình ảnh đĩa".

    Tôi nên làm rõ, tuy nhiên, có một sự đánh đổi giữa hai người. DOSEMU sẽ chạy trong bất kỳ thiết bị đầu cuối nào bạn muốn, nhưng sẽ không hỗ trợ các thủ thuật cấp thấp ưa thích một số nội dung QBasic được sử dụng (ví dụ: đối với các chế độ đồ họa chuyên dụng). Cách duy nhất để hỗ trợ đó là một trình giả lập đầy đủ như DOSBox ... nhưng DOSBox sẽ bật lên cửa sổ của chính nó thay vì sử dụng thiết bị đầu cuối của bạn.

  2. FreeBASIC có một qbphương ngữ / chế độ nhằm mục đích tương thích hoàn hảo với một tập hợp con QuickBASIC lớn. (Nội dung không được hỗ trợ chủ yếu là các công cụ cấp thấp liên quan đến thực tế rằng QuickBASIC là hệ thống chế độ thực 16 bit trong khi FreeBASIC là hệ thống chế độ được bảo vệ 32 bit.)

    FreeBASIC cung cấp các tệp nhị phân Linux, nhưng bạn sẽ chỉ tìm thấy nó trong kho lưu trữ gói của bạn nếu bạn thực sự có nghĩa là "bản phân phối gia đình Debian" chứ không phải "Debian" và đang chạy Ubuntu hoặc một dẫn xuất Ubuntu như Mint.

  3. Các bản dựng QB64 của Linux thậm chí không có trong kho Ubuntu, nhưng nó đặc biệt nhắm đến là hậu duệ QuickBASIC được bảo vệ ở chế độ tương thích nhất và thậm chí cung cấp một IDE cố gắng sao chép IDE QBasic / QuickBasic.


8

Bạn đã viết trong một bình luận cho câu trả lời của Foon rằng

Ý tôi là "giống như máy tính cũ" là nó chỉ ở đó

Những người khác đã cung cấp một số đề xuất khác nhau cho các trình thông dịch BASIC mà bạn có thể cài đặt trên hệ thống Linux, vì vậy tôi sẽ không đến đó. Các PC hiện đại thường không đi kèm với các trình thông dịch BASIC tích hợp, do đó bạn bị kẹt khi khởi động một cái gì đó có thể chạy trình thông dịch BASIC được cài đặt.

Thay vào đó, tôi sẽ nói ở trên có nghĩa là bạn muốn một cái gì đó tự động khởi động trình thông dịch BASIC, tương tự nhưng không hoàn toàn giống như các máy vi tính ban đầu (như Apple II, Commodore C-64, Zinclair ZX-81 và ilk của họ ) khởi động vào một trình thông dịch BASIC bản địa.

Về cơ bản có ba cách để làm điều này mà tôi có thể nghĩ ra:

Tạo một trình khởi chạy máy tính để bàn mở một thiết bị đầu cuối

Đây là ít xâm lấn nhất, bởi vì nó hoạt động hoàn toàn trong hệ thống và môi trường mà bạn đã quen.

Về cơ bản, thông qua bất cứ điều gì có nghĩa là môi trường máy tính để bàn của bạn cung cấp, bạn tạo một trình khởi chạy chương trình và thiết lập nó để khởi chạy trình thông dịch BASIC mà bạn chọn trong một thiết bị đầu cuối. Để có thêm hiệu ứng, bạn có thể đặt phông chữ, màu sắc cụ thể, v.v., để mô phỏng môi trường của những ngày đã qua. Chính xác cách bạn sẽ làm điều này phụ thuộc vào môi trường máy tính để bàn bạn đang sử dụng, mà bạn chưa chỉ định, nhưng nhấp chuột phải vào nơi bạn hiện đang nhấp để khởi chạy ứng dụng và tìm kiếm một lựa chọn để tạo một trình khởi chạy mới sẽ là một khởi đầu tốt .

Tạo một tài khoản người dùng riêng với trình thông dịch BASIC làm trình bao

Đây là một chút liên quan nhiều hơn một trình khởi chạy máy tính để bàn đơn giản, nhưng các nhà cung cấp cách ly tốt hơn để bạn không có nguy cơ làm hỏng các tập tin của riêng bạn. Đầu tiên, cài đặt một trình thông dịch BASIC; Tôi sẽ sử dụng bwbasicví dụ, nhưng thực sự mọi thứ đều được, miễn là nó chạy tự nhiên trong một thiết bị đầu cuối. Sau đó thêm một người dùng và đặt shell của nó là trình thông dịch bwbasic. Điều này có thể được thực hiện thông qua GUI, nhưng điều đó phụ thuộc vào môi trường máy tính để bàn bạn đang sử dụng; phương pháp di động là làm như vậy trong một thiết bị đầu cuối bằng cách sử dụng useradd. Đây sẽ là một cái gì đó tương tự như

$ 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

Sau đó, bạn sẽ có thể vào một môi trường BASIC sạch thông qua sudo:

$ sudo -i -u basic

Bạn có thể tạo một launcher (như trên) để thực thi lệnh này trong terminal, nếu bạn muốn.

Cung cấp mật khẩu bình thường của bạn khi được nhắc bởi sudo. Bạn có thể chỉnh sửa cấu hình sudoers để tránh lời nhắc mật khẩu nếu muốn, nhưng lưu ý rằng chỉnh sửa sudoers có phần phức tạp và thậm chí còn nhiều hơn, rất rủi ro; bạn có thể tự khóa tài khoản root, khiến việc sửa cấu hình trở nên khá khó khăn.

Sử dụng trình thông dịch BASIC làm init

Đây là cách tiếp cận xâm lấn nhất, nhưng cũng giúp bạn hiểu rõ nhất về cách thức hoạt động của các máy vi tính ban đầu, bằng cách khởi động trực tiếp vào trình thông dịch BASIC. Tôi không khuyến nghị điều này và sẽ xem xét nó không có khả năng hoạt động nếu không có công việc quan trọng, nhưng bao gồm nó để hoàn thiện.

Hạt nhân Linux chấp nhận một tham số dòng lệnh (vâng, nhân Linux có các tham số dòng lệnh; bạn có thể thấy dòng lệnh hiện được khởi động bằng cách đọc từ / Proc / cmdline) init, chỉ định chương trình nào sẽ thực thi khi quá trình khởi tạo hạt nhân hoàn tất. Bạn có thể định cấu hình bộ tải khởi động (rất có thể là GRUB) để cho phép bạn khởi động một mục nhân có nghĩa init/usr/bin/bwbasic(hoặc bất kỳ trình thông dịch BASIC nào khác mà bạn đã cài đặt).

Để làm việc này, trình thông dịch BASIC, cũng như tất cả các tệp mà nó yêu cầu, phải được đặt trên /hệ thống tệp gốc ( ). Điều này là do một trong những nhiệm vụ của init là gắn kết tất cả các hệ thống tệp và vì bạn đang cung cấp một chương trình không phải là init, nên các hệ thống tệp không phải root sẽ không được gắn kết. (Tôi tin rằng một nhiệm vụ khác của init là kết nối lại hệ thống tệp gốc ở chế độ đọc, do đó, bằng cách tiếp cận tầm thường, bạn sẽ không thể lưu bất cứ điều gì. Tuy nhiên, tùy thuộc vào chi tiết triển khai chính xác, có thể hệ thống thực hiện một cái gì đó nhưmount -o remount,rw / để ghi lại hệ thống tập tin gốc đọc-ghi.) Trình thông dịch BASIC được chọn của bạn cũng không được phụ thuộc vào bất cứ điều gì khác mà init chịu trách nhiệm và bạn sẽ không có quyền truy cập vào bất kỳ cơ sở nào được xử lý bởi init hoặc bởi bất kỳ quy trình nào được sinh ra bởi init (ví dụ , hỗ trợ mạng hoặc nhiều người dùng).

Một dòng lệnh kernel của một cái gì đó giống như ro quiet init=/usr/bin/bwbasiccó thể sẽ giúp bạn khá gần với giao diện của nó ngày xưa.



Việc sử dụng của sudo echobạn không làm những gì bạn muốn nói và bạn có thể gặp phải -bash: /etc/shells: Permission deniedbất cứ điều gì vì >>chuyển hướng được thiết lập bằng bash trước khi phần còn lại của lệnh được ước tính. Có lẽ tốt nhất để sử dụng type -P bwbasic | sudo tee -a /etc/shellsthay thế. Xem " quyền - Cách chèn văn bản vào tệp sở hữu gốc bằng sudo? - Unix & Linux Stack Exchange
shalomb

@shalomb Điểm tốt, cảm ơn vì đã đề cập đến nó. Tôi đã sửa nó, nhưng theo một cách khác.
một CVn

1
@ MichaelKjorling Một sự thay thế ít quyết liệt hơn cho việc sử dụng trình thông dịch BASIC như initlà cấu hình hệ thống init để sử dụng bwbasicthay vì agettyvà không khởi động trình quản lý hiển thị X11. (Đối với những người khác không biết tôi đang nói về điều gì, kernel cung cấp nhiều "bàn giao tiếp ảo" khác nhau có thể truy cập thông qua Ctrl + Alt + F1 thông qua Ctrl + Alt + F12 và hệ thống init, theo mặc định, bắt đầu agettytừ 1 đến 6 và Trình quản lý hiển thị X11 (cung cấp hộp thoại đăng nhập) vào 7. Trước khi khởi động và systemd, điều này đã được kiểm soát thông qua /etc/inittab.) gettyvà hậu duệ của nó xử lý các lời nhắc đăng nhập bảng điều khiển.
ssokolow

@ssokolow Ý tưởng tốt cho sự hoàn chỉnh, nhưng tại thời điểm đó, bạn chỉ đi trước một bước so với tài khoản người dùng chuyên dụng với vỏ bwbasic, vì vậy tôi không nghĩ rằng nó thực sự bổ sung nhiều về sự đa dạng.
một CVn

4

Chỉ cần đưa ra một giải pháp thay thế: có nhiều trình giả lập cho Linux có thể chạy các máy tính cũ của bạn. Ví dụ, với xkess, nếu bạn khởi động nó, bạn sẽ có một dấu nhắc cơ bản của applesoft đang chờ bạn. Giao tiếp với các công cụ linux khác là một bài tập để lại cho người đọc (gợi ý: về mặt kỹ thuật, tôi tin rằng bạn có thể chuyển hướng đầu ra trong quả táo giả lập của mình sang máy in giả lập, sau đó xkess sẽ hiển thị dưới dạng ổ cắm mạng mà bạn có thể sử dụng, ví dụ như nc để nạp vào một số ứng dụng đường ống khác, v.v. Không chắc có cách nào để đi theo cách khác hay không, nhưng mong đợi điều gì đó tương tự có thể được thực hiện). Tôi hy vọng các trình giả lập của Vendore 64 cũng có cách để chạy cơ bản của Vendore, v.v.


Có, có rất nhiều trình giả lập có thể dễ dàng cài đặt trong Debian, nhưng kegsdường như không phải là một trong số chúng (không có apt-cache searchkết quả). Và đối với một số / hầu hết các trình giả lập, có lẽ bạn sẽ cần lấy ROM gốc từ một nơi nào đó.
Alex Stragies

Bạn cũng có thể muốn chỉnh sửa câu trả lời của mình để tham khảo trình giả lập, có thể chạy trong thiết bị đầu cuối (OP đã chỉnh sửa Q đôi khi trong quá khứ)
Alex Stragies


Ý tôi là "giống như máy tính cũ" là nó ở đó
DiamondCoderMan

1
@DiamondCoderMan Bạn có thể thiết lập một tài khoản người dùng sử dụng một cái gì đó như bwbasic, brandy hoặc sdlbasic làm vỏ, thay vì bash. Trên Linux, đó có lẽ là thiết bị gần nhất mà bạn có thể thực sự có được với một hệ thống hoạt động giống như các máy vi tính cũ đã khởi động vào trình thông dịch BASIC. Bạn cũng có thể chuyển một cái gì đó giống như init=/usr/bin/sdlbasicnhân Linux, nếu nó hoạt động sẽ giúp bạn tiến gần hơn, nhưng nó có thể hoặc thậm chí không hoạt động.
một CVn

1

Có rất nhiều lựa chọn thay thế. Đề nghị của tôi tương tự như câu trả lời của ssokolow. Nếu bạn muốn một BASIC "hiện đại" nhưng có cú pháp tương tự như các trình thông dịch BASIC cũ, thì bạn nên thử với BaCon . Đó là một bộ chuyển mã BASIC tạo mã gốc. Dự án có một hướng dẫn khá tốt, rất nhiều thư viện và ví dụ, và thậm chí một IDE được viết bằng BaCon.

nhập mô tả hình ảnh ở đây


Nhưng điều này không dành cho thiết bị đầu cuối
DiamondCoderMan

Transpiler hoạt động trong thiết bị đầu cuối. Nó nhỏ và sử dụng trình biên dịch C để xây dựng tệp thực thi. IDE chỉ là một ví dụ về sức mạnh của dự án.
Rufo El Magufo

-2

Bạn có thể chạy C64 trong trình duyệt của mình và sử dụng BASIC theo cách đó.

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

Hãy nhận biết bố trí bàn phím là khác nhau, tức là Shift-2cho dấu ngoặc kép.

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

Applesoft BASIC nếu bạn thích- http://calormen.com/jsbasic/

Có các trình giả lập của các máy khác trực tuyến,
nhưng nhiều trong số chúng đi thẳng vào bất kỳ chương trình nào bạn tải,
mà không cần mô phỏng đầu vào bàn phím ban đầu cần thiết để đạt được điều đó.


1
Làm thế nào là "trong một thiết bị đầu cuối" nếu bạn đang chạy nó trong trình giả lập trình duyệt web dựa trên javascript?
Wyatt8740

3
Phần "trong một thiết bị đầu cuối" nằm trong tiêu đề của câu hỏi
roaima

1
@ Doyousketch2 Nhìn vào tiêu đề cẩn thận hơn một chút. i.imgur.com/jDBZVEO.png
Wyatt8740

1
Nó thậm chí còn ở tiêu đề sửa đổi đầu tiên, có nội dung Cách chạy mã BASIC trong thiết bị đầu cuối BASH?
CVn

2
Nếu đó là phần mềm dành cho hệ thống C64 hoặc 8 bit khác, thì việc mô phỏng toàn bộ máy thực sự là ý tưởng tốt nhất - rất ít chương trình cơ bản không tầm thường từ thời đó thậm chí còn giả vờ độc lập với phần cứng!
rackandboneman
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.