ฉันต้องการเรียกใช้รหัส BASIC เช่นเดียวกับที่คุณเคยทำบนคอมพิวเตอร์รุ่นเก่าใน Linux (ฉันกำลังมองหาผู้ขัดขวางพื้นฐานที่สามารถเรียกใช้ฟังก์ชั่นระบบปฏิบัติการได้)
ฉันมีตัวเลือกอะไรบ้าง (ควรเป็นแบบ Debian-based และ Arch-based)
ฉันต้องการเรียกใช้รหัส BASIC เช่นเดียวกับที่คุณเคยทำบนคอมพิวเตอร์รุ่นเก่าใน Linux (ฉันกำลังมองหาผู้ขัดขวางพื้นฐานที่สามารถเรียกใช้ฟังก์ชั่นระบบปฏิบัติการได้)
ฉันมีตัวเลือกอะไรบ้าง (ควรเป็นแบบ Debian-based และ Arch-based)
คำตอบ:
ถ้าคุณต้องการที่จะรันโดยพื้นฐานใน Linux BASIC คุณมีหลายแพ็คเกจใน Debian ให้เลือก:
บรั่นดีเป็นล่ามสำหรับ BBC BASIC V ภาษาถิ่นของ BASIC ที่ Acorn Computers จัดมาให้พร้อมกับคอมพิวเตอร์เดสก์ท็อปที่ใช้โปรเซสเซอร์ ARM เช่น Archimedes และ Risc PC และยังคงใช้งานได้กับเหล่านี้
BASIC V is a much extended version of BBC BASIC.
นี่เป็นพื้นฐานที่ใช้กับ BBC Micro 6502 ซึ่งผลิตโดย Acorn ในช่วงทศวรรษ 1980
bwBASIC สามารถกำหนดค่าเพื่อจำลองคุณลักษณะคำสั่งและฟังก์ชั่นที่มีอยู่ในล่ามพื้นฐานประเภทต่างๆ
bwBASIC ใช้หนึ่งคุณลักษณะที่ไม่มีในล่าม BASIC ก่อนหน้า: คำสั่งเชลล์สามารถป้อนแบบโต้ตอบได้ที่พร้อมต์ bwBASIC และล่ามจะดำเนินการภายใต้เชลล์คำสั่ง
ตัวอย่างเช่นคำสั่ง "dir * .bas" สามารถป้อนใน bwBASIC (ภายใต้ DOS หรือ "ls -l * .bas" ภายใต้ UNIX) และจะถูกเรียกใช้งานจากบรรทัดคำสั่งของระบบปฏิบัติการคำสั่งเชลล์ยังสามารถให้กับบรรทัดที่มีหมายเลขในโปรแกรม bwBASIC เพื่อให้สามารถใช้ bwBASIC เป็นภาษาการเขียนโปรแกรมเชลล์ การนำไปใช้ของ bwBASIC สำหรับคำสั่ง RMDIR, CHDIR, MKDIR, NAME, KILL, ENVIRON และ ENVIRON $ () มอบความสามารถในการประมวลผลเชลล์เพิ่มเติม
วิธีติดตั้ง:
sudo apt-get install brandy bwbasic
สำหรับประสบการณ์ส่วนตัวของฉันฉันชอบbwbasic
ที่มันมีอำนาจของ BASIC ในบรรทัดคำสั่งข้อความหรือสคริปต์เชลล์
เป็นอีกทางเลือกหนึ่งคุณยังมีชุดจำลองคอมพิวเตอร์หลายเครื่องที่เก่าซึ่งเห็นได้ชัดว่านอกเหนือจากไวยากรณ์พื้นฐานแล้วยังใช้สภาพแวดล้อมทั้งหมดของคอมพิวเตอร์เก่าบางเครื่องที่คุณอาจต้องการมีชีวิตอีก
ที่น่าสนใจมากbwbasic
ในทางทฤษฎีอาจอนุญาตให้การดำเนินการอัตโนมัติใน Unix เช่นการสร้างสคริปต์โดยใช้ภาษาพื้นฐาน ไม่เคยลองเลย
ระบบ Debian ของฉันและการกระจาย Linux อื่น ๆ ส่วนใหญ่มีตัวเลือกหลายตัวให้เลือกโดยตรงผ่านตัวจัดการแพคเกจ ในหมู่พวกเขา:
bwbasic
:Bywater BASIC Interpreter (bwBASIC) ใช้ superset ขนาดใหญ่ของมาตรฐาน ANSI สำหรับ Minimal พื้นฐาน (X3.60-1978) และเซตย่อยที่สำคัญของมาตรฐาน ANSI สำหรับ Full BASIC (X3.113-1987) ใน C สิ่งอำนวยความสะดวกการเขียนโปรแกรมเป็นส่วนขยายของพื้นฐาน bwBASIC พยายามที่จะพกพาได้มากที่สุด
sdlbasic
:sdlBasic เป็นล่ามพื้นฐานขนาดเล็กที่มีประสิทธิภาพและหลากหลายสำหรับการสร้างเกมโดยใช้พลังของห้องสมุด SDL มันเป็นแรงบันดาลใจจาก AMOS เก่าและรุ่งโรจน์
เนื่องจากทุกคนดูเหมือนจะสมมติว่าคุณหมายถึง "pre-IBM PC" โดย "คอมพิวเตอร์เก่า" ฉันจะไปเส้นทางอื่นและเสนอคำตอบที่ตีความ "คอมพิวเตอร์รุ่นเก่า" ให้หมายถึง "IBM-compatibles ก่อน Windows 9x"
หากคุณหมายถึงคอมพิวเตอร์ที่ใช้ MS-DOS เวอร์ชันที่รวมอยู่QBASIC.EXE
คุณมีสามตัวเลือกขึ้นอยู่กับว่าคุณให้คำจำกัดความการรัน "บน Linux" อย่างเคร่งครัด:
หากคุณยังมีสำเนาQBASIC.EXE
เตะอยู่รอบ ๆ คุณสามารถใช้DOSBoxหรือDOSEMUเพื่อเรียกใช้ในสภาพแวดล้อม DOS เสมือนจริง (ทั้งสองมีอยู่ในที่เก็บของ Debian และติดตั้งง่ายเพียงแค่ตั้งโฟลเดอร์ที่จะติดตั้งC:
วางQBASIC.EXE
ลงและคุณจะไปได้)
นั่นจะให้ความเข้ากันได้อย่างสมบูรณ์แบบกับซอร์สโค้ดเก่า ๆ แต่ไม่มีการรวมกับโฮสต์ระบบปฏิบัติการที่เกิน " C:
เป็นโฟลเดอร์จริง ๆ ไม่ใช่ภาพดิสก์"
ฉันควรชี้แจงว่ามีการแลกเปลี่ยนระหว่างสอง DOSEMU จะทำงานในเทอร์มินัลใดก็ตามที่คุณต้องการ แต่จะไม่รองรับเทคนิคระดับต่ำสุดแฟนซีบางอย่างที่ใช้ใน QBasic (เช่นสำหรับโหมดกราฟิกพิเศษ) เพียงวิธีการที่จะสนับสนุนว่าเป็นโปรแกรมจำลองเต็มรูปแบบเช่น DOSBox DOSBox ... แต่จะปรากฏขึ้นหน้าต่างของตัวเองมากกว่าการใช้ terminal ของคุณ
FreeBASICมีqb
ภาษา / โหมดที่มีจุดมุ่งหมายเพื่อความเข้ากันได้อย่างสมบูรณ์แบบกับชุดย่อยขนาดใหญ่ของ QuickBASIC (สิ่งที่ไม่ได้รับการสนับสนุนส่วนใหญ่เป็นสิ่งระดับต่ำที่เกี่ยวข้องกับความจริงที่ว่า QuickBASIC เป็นระบบจริงโหมด 16 บิตในขณะที่ FreeBASIC เป็นระบบโหมดป้องกัน 32 บิต)
FreeBASIC ให้บริการลินุกซ์ไบนารี แต่คุณจะพบได้ในที่เก็บแพคเกจของคุณหากคุณหมายถึง "Debian-distros ครอบครัว" มากกว่า "Debian" และใช้ Ubuntu หรืออนุพันธ์ของ Ubuntu อย่าง Mint
ลินุกซ์บิวด์ของQB64ไม่ได้อยู่ในที่เก็บของ Ubuntu แต่มันมีจุดประสงค์เพื่อเป็นลูกหลานของ QuickBASIC โหมดป้องกันที่เข้ากันได้มากที่สุดและยังให้ IDE ที่พยายามโคลน QBasic / QuickBasic IDE
คุณเขียนความคิดเห็นถึงคำตอบของฟูนว่า
สิ่งที่ฉันหมายถึงโดย "เหมือนคอมพิวเตอร์เก่า" นั่นคือที่นั่น
คนอื่น ๆ ได้ให้คำแนะนำที่หลากหลายสำหรับล่ามพื้นฐานที่คุณสามารถติดตั้งบนระบบ Linux ดังนั้นฉันจะไม่ไปที่นั่น พีซีสมัยใหม่มักไม่มีตัวแปลภาษาพื้นฐานในตัวดังนั้นคุณจึงต้องบูตเครื่องบางอย่างที่สามารถเรียกใช้ตัวแปลภาษาพื้นฐานที่ติดตั้งไว้ได้
แต่ฉันจะเอาไปใช้ข้างต้นเพื่อหมายความว่าคุณต้องการบางสิ่งที่เริ่มต้นตัวแปลพื้นฐานโดยอัตโนมัติคล้ายกับ แต่ไม่เหมือนกับไมโครคอมพิวเตอร์ยุคแรก ๆ (เช่น Apple II, Commodore C-64, Zinclair ZX-81 และ ilk ของพวกเขา ) booted ไปเป็นล่ามภาษาเบสิก
โดยทั่วไปมีสามวิธีในการทำสิ่งนี้ที่ฉันสามารถนึกถึง:
นี่คือการบุกรุกน้อยที่สุดเพราะทำงานได้อย่างสมบูรณ์ภายในระบบและสภาพแวดล้อมที่คุณคุ้นเคย
โดยพื้นฐานไม่ว่าสภาพแวดล้อมเดสก์ท็อปของคุณจะเป็นอย่างไรคุณสร้างตัวเรียกใช้งานโปรแกรมและตั้งค่าเพื่อเปิดตัวล่ามพื้นฐานที่คุณเลือกในเทอร์มินัล สำหรับเอฟเฟกต์พิเศษคุณสามารถตั้งค่าแบบอักษรสีและอื่น ๆ เพื่อจำลองสภาพแวดล้อมของวันที่ผ่านไป วิธีที่คุณจะทำสิ่งนี้ขึ้นอยู่กับสภาพแวดล้อมเดสก์ท็อปที่คุณใช้ซึ่งคุณไม่ได้ระบุ แต่คลิกขวาที่ที่คุณกำลังคลิกเพื่อเปิดใช้งานแอปพลิเคชันและมองหาทางเลือกในการสร้างตัวเรียกใช้ใหม่ .
นี่เป็นสิ่งที่เกี่ยวข้องมากกว่าตัวเรียกใช้งานเดสก์ท็อปธรรมดา แต่ผู้ให้บริการแยกกันได้ดีกว่าดังนั้นคุณจึงไม่เสี่ยงที่จะทำไฟล์ของคุณเอง ก่อนอื่นให้ติดตั้งตัวแปลภาษาเบสิก ฉันจะใช้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:
$ sudo -i -u basic
คุณสามารถสร้างตัวเรียกใช้งาน (ตามด้านบน) ที่ดำเนินการคำสั่งนี้ในเทอร์มินัลหากคุณต้องการ
ให้รหัสผ่านปกติของคุณเมื่อได้รับแจ้งจาก sudo คุณสามารถแก้ไขการกำหนดค่า sudoers เพื่อหลีกเลี่ยงการถามรหัสผ่านได้ แต่ต้องระวังว่าการแก้ไข sudoers นั้นค่อนข้างซับซ้อนและมีความเสี่ยง คุณสามารถล็อคตัวเองออกจากบัญชีรูททำให้การซ่อมแซมการกำหนดค่าค่อนข้างยาก
นี่เป็นวิธีการบุกรุกที่มากที่สุด แต่ยังทำให้คุณใกล้เคียงกับการทำงานของไมโครคอมพิวเตอร์ในช่วงต้นโดยการบูตเข้าสู่ล่ามพื้นฐาน ฉันไม่แนะนำสิ่งนี้และจะถือว่าไม่น่าจะทำงานได้หากไม่มีงานที่สำคัญ แต่รวมถึงเพื่อความสมบูรณ์ด้วย
เคอร์เนล Linux ยอมรับพารามิเตอร์บรรทัดคำสั่ง (ใช่เคอร์เนล Linux มีพารามิเตอร์บรรทัดคำสั่งคุณสามารถดูบรรทัดคำสั่งที่ถูกบู๊ตในปัจจุบันโดยการอ่านจาก / proc / cmdline) ชื่อinit
ซึ่งระบุโปรแกรมที่จะดำเนินการเมื่อการเริ่มต้นเคอร์เนลเสร็จสมบูรณ์ คุณสามารถกำหนดค่าบูตโหลดเดอร์ (เป็นด้วงส่วนใหญ่) เพื่อให้คุณสามารถบูตรายการเคอร์เนลที่ระบุว่าinit
ควรเป็น/usr/bin/bwbasic
(หรือตัวแปลพื้นฐานอื่นที่คุณติดตั้ง)
เพื่อให้สามารถใช้งานได้ล่าม BASIC รวมถึงไฟล์ทั้งหมดที่ต้องการจะต้องอยู่ใน/
ระบบไฟล์root ( ) นี่เป็นเพราะหนึ่งในภารกิจของ init คือการเมานต์ระบบไฟล์ทั้งหมดและเนื่องจากคุณกำลังจัดเตรียมโปรแกรมที่ไม่ใช่ init ในฐานะ init ระบบไฟล์ที่ไม่ใช่รูทจะไม่ถูกเมาท์ (ฉันเชื่อว่างานของ init อื่นคือการติดตั้งระบบไฟล์รูทใหม่ในโหมดอ่าน - เขียนดังนั้นโดยวิธีการที่ไม่สำคัญคุณจะไม่สามารถบันทึกสิ่งใดได้อย่างไรก็ตามคุณอาจขึ้นอยู่กับรายละเอียดการใช้งานที่แน่นอน ให้ระบบดำเนินการบางอย่างเช่นmount -o remount,rw /
เพื่อติดตั้งระบบไฟล์รูทใหม่อ่าน - เขียน) ล่าม BASIC ที่คุณเลือกจะต้องไม่พึ่งพาสิ่งอื่นใดที่ init รับผิดชอบและคุณจะไม่สามารถเข้าถึงสิ่งอำนวยความสะดวกใด ๆ ที่จัดการโดย init หรือกระบวนการใด ๆ ที่เกิดจาก init (เช่น การสนับสนุนเครือข่ายหรือผู้ใช้หลายคน)
บรรทัดคำสั่งเคอร์เนลของบางอย่างเช่นro quiet init=/usr/bin/bwbasic
อาจจะทำให้คุณใกล้เคียงกับที่ดูในสมัยก่อน
sudo echo
ไม่ได้ทำในสิ่งที่คุณหมายถึงและคุณมีแนวโน้มที่จะพบกับสิ่ง-bash: /etc/shells: Permission denied
ต่อไปเนื่องจากการ>>
เปลี่ยนเส้นทางถูกตั้งค่าโดยการทุบตีก่อนที่คำสั่งที่เหลือจะถูกประเมิน มันอาจจะดีที่สุดที่จะใช้type -P bwbasic | sudo tee -a /etc/shells
แทน ดูที่ "การอนุญาต
init
กับการกำหนดค่าระบบ init ให้ใช้bwbasic
แทนagetty
และเพื่อไม่เริ่มตัวจัดการการแสดงผล X11 (สำหรับคนอื่น ๆ ที่ไม่ทราบว่าฉันกำลังพูดถึงอะไรเคอร์เนลจะสามารถเข้าถึง "คอนโซลเสมือน" ต่างๆได้ผ่าน Ctrl + Alt + F1 ผ่าน Ctrl + Alt + F12 และระบบเริ่มต้นโดยเริ่มต้นagetty
ที่ 1 ถึง 6 และ X11 Display Manager (ซึ่งจัดเตรียมไดอะล็อกล็อกอิน) เมื่อวันที่ 7 ก่อนหน้า Upstart และ systemd สิ่งนี้ถูกควบคุมผ่าน/etc/inittab
) getty
และลูกหลานของมันจะจัดการพร้อมต์ล็อกอินคอนโซล
เพียงเพื่อทิ้งทางเลือก: มีอีมูเลเตอร์หลายตัวสำหรับ Linux ที่สามารถเรียกใช้คอมพิวเตอร์เครื่องเก่าของคุณได้ ตัวอย่างเช่นด้วย xkegs หากคุณบูตเครื่องขึ้นมาคุณควรมีพรอมต์พื้นฐานของ applesoft ที่รอคุณอยู่ การสื่อสารกับสิ่งที่ลินุกซ์อื่น ๆ คือการออกกำลังกายที่เหลือต่อผู้อ่าน (คำแนะนำ: ในทางเทคนิคผมเชื่อว่าคุณสามารถเปลี่ยนเส้นทางการส่งออกในแอปเปิ้ลเทิดทูนของคุณไปยังเครื่องพิมพ์เทิดทูนซึ่ง xkegs แล้วจะเปิดเผยเป็นซ็อกเก็ตเครือข่ายซึ่งคุณสามารถใช้เช่นNCฟีดเข้าไป แอปพลิเคชั่นอื่น ๆ แบบ piped เป็นต้นไม่แน่ใจว่ามีวิธีอื่นหรือไม่ แต่คาดว่าจะมีบางสิ่งที่คล้ายกัน) ฉันคาดหวังว่าผู้เลียนแบบสินค้าโภคภัณฑ์ 64 คนในทำนองเดียวกันจะมีวิธีในการดำเนินการขั้นพื้นฐานของสินค้าโภคภัณฑ์ ฯลฯ
kegs
ดูเหมือนจะไม่เป็นหนึ่งในนั้น (ไม่มีapt-cache search
ผลลัพธ์) และสำหรับตัวเลียนแบบส่วนใหญ่คุณอาจต้องได้รับ ROM ดั้งเดิมจากที่อื่น
init=/usr/bin/sdlbasic
ไปยังเคอร์เนล Linux ซึ่งหากการทำงานจะทำให้คุณเข้าใกล้ได้มากขึ้น แต่อาจทำงานได้หรือไม่ก็ได้
มีทางเลือกมากมาย คำแนะนำของฉันคล้ายกับคำตอบของ ssokolow หากคุณต้องการ BASIC "ทันสมัย" แต่มีไวยากรณ์คล้ายกับล่าม BASIC เก่าคุณควรลองใช้BaCon มันเป็น transpiler พื้นฐานที่สร้างรหัสเนทิฟ โครงการมีคู่มือที่ดีมากมีห้องสมุดและตัวอย่างมากมายและแม้แต่ IDE ที่เขียนใน BaCon
คุณสามารถเรียกใช้ C64 ในเบราว์เซอร์ของคุณและใช้วิธีพื้นฐานนั้น
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/
มีอีมูเลเตอร์ของเครื่องอื่น ๆ ออนไลน์
แต่ส่วนมากจะตรงไปที่โปรแกรมที่คุณโหลด
โดยไม่ต้องจำลองอินพุตคีย์บอร์ดเริ่มต้นที่ต้องการ