หน้าต่าง Terminal จำลองการรันภาษา BASIC แบบสุดคลาสสิก
สวัสดีชาว Maker และนักพัฒนาทุกท่านครับ! ใครยังจำได้บ้าง หรือเคยได้ยินตำนานยุคที่คอมพิวเตอร์สุดคลาสสิกยังใช้ภาษา BASIC ในการเขียนโปรแกรม หรือเคยเขียนซอฟต์แวร์สมองกลฝังตัวด้วย Basic Stamp กันบ้าง?
ถ้าคุณเป็นคนหนึ่งที่คิดถึงวันวานเหล่านั้น วันนี้เรามีโปรเจกต์สนุกๆ มาป้ายยากันครับ ลองไปปัดฝุ่นบอร์ด Arduino UNO หรือบอร์ดตระกูล AVR รุ่นคล้ายๆ กันที่คุณมี แล้วมาลองติดตั้ง nanoBASIC_UNO จากผลงานของ [shachi-lab] กันดูครับ รับรองว่าได้ฟีลลิ่งยุค 90s กลับมาเต็มๆ!
nanoBASIC_UNO คืออะไร?
จริงๆ แล้วโค้ดต้นฉบับของตัวภาษา BASIC นี้ถูกออกแบบมาสำหรับไมโครคอนโทรลเลอร์รุ่น STM8S ครับ แต่เวอร์ชันพอร์ต (Port) ตัวล่าสุดนี้ ถูกปรับแต่งมาเพื่อเจาะจงให้รันบนชิป ATmega328P ซึ่งเป็นหัวใจหลักของบอร์ด Arduino UNO โดยเฉพาะ
หน้าตาและรูปแบบของมันก็คือภาษา BASIC ที่พวกเราคุ้นเคยกันดีนี่แหละ แต่ผู้พัฒนาได้ทำการอัปเกรดให้มีส่วนเสริม (Extensions) มากพอที่จะสามารถสื่อสารและจัดการกับขา GPIO, ระบบ Analog และฟังก์ชันฮาร์ดแวร์พื้นฐานอื่นๆ บนบอร์ดได้ครบถ้วน แถมตอนที่คุณจะสั่ง Build โค้ดลงบอร์ด ยังสามารถเลือกตั้งค่าได้ด้วยนะว่าอยากใช้ตัวเลขจำนวนเต็ม (Integers) แบบ 16-bit หรือ 32-bit
💡 Maker's Tip: ถึงแม้ภาษา BASIC จะดูเก่า แต่มันก็เป็นจุดเริ่มต้นของการเรียนรู้ตรรกะโปรแกรมมิ่งที่ยอดเยี่ยมมากครับ!
หากเพื่อนๆ คนไหนยังไม่มีบอร์ดติดโต๊ะช่าง หรืออยากได้ บอร์ด Arduino UNO แท้ และอุปกรณ์อิเล็กทรอนิกส์ต่างๆ ไปลองเล่นโปรเจกต์ย้อนยุคแบบนี้ แวะมาเลือกช้อปสินค้าพร้อมส่งได้ที่ Globalbyte เลยครับ รับรองว่ามีของเล่นให้ลุยเพียบ!
ทริคการเขียนโค้ดที่แปลกแหวกแนว (Direct Mode)
สิ่งหนึ่งที่แอบแปลกนิดหน่อยสำหรับ nanoBASIC_UNO คือ วิธีการจัดการกับ Direct Mode ครับ ย้อนกลับไปในภาษา BASIC ยุคดั้งเดิม ปกติแล้วอะไรก็ตามที่เราพิมพ์ลงไปบนหน้าจอโดยไม่มีเลขบรรทัด (Line number) มันจะถูกรันให้ทำงานทันที ส่วนเลขบรรทัดมีไว้สำหรับเก็บคำสั่งบรรทัดนั้นไว้ในโปรแกรม จนกว่าเราจะพิมพ์คำสั่งรัน
แต่สำหรับโปรเจกต์นี้ เขาไม่ได้บังคับให้คุณต้องใช้เลขบรรทัดเสมอไปครับ! หากคุณต้องการจะบอกบอร์ดว่า "นี่ฉันกำลังเขียนโปรแกรมอยู่นะ" คุณจะต้องเริ่มต้นประโยคด้วยคีย์เวิร์ดคำว่า PROG จากนั้นคุณก็สามารถป้อนคำสั่งแบบบรรทัดต่อบรรทัดเข้าไปเก็บไว้ในหน่วยความจำชั่วคราว (RAM buffer) ได้เลย จนกว่าจะพิมพ์ตัวอักษร # เพื่อเป็นสัญลักษณ์ว่าจบการพิมพ์โปรแกรม
โดยค่าเริ่มต้น โปรแกรมทั้งหมดของคุณจะถูกเก็บไว้ใน RAM ครับ แต่ถ้ากลัวไฟดับแล้วโค้ดหาย เขาก็มีคำสั่งและวิธีการที่จะบันทึกโปรแกรมนั้นลงใน Flash memory ของบอร์ดให้ด้วยนะ
PROG
PRINT "HELLO FROM GLOBALBYTE!"
DELAY 1000
PRINT "RUNNING BASIC ON ARDUINO UNO"
#
RUN
ทดลองเล่นบนแพลตฟอร์มอื่นได้ด้วย
ถ้าคุณแค่อยากลองสัมผัสบรรยากาศการพิมพ์โค้ดเก่าๆ แต่ดันไม่มีบอร์ด Arduino อยู่ในมือ ก็ไม่ต้องกังวลไปครับ เพราะตัว Source Code นี้สามารถนำไป Build เพื่อรันเล่นเป็นโปรแกรมบนระบบปฏิบัติการ Windows หรือ Linux ได้ด้วยนะ บอกเลยว่าสนุกและหายคิดถึงแน่นอน!
ส่วนใครที่เกิดไม่ทันยุครุ่งเรืองของ Basic Stamp ถือว่าพลาดความสนุกในยุคนั้นไปเยอะเลยล่ะครับ แต่ถ้าคุณแค่อยากลองลิ้มรสชาติของภาษา BASIC แบบไวๆ โดยไม่ต้องลงโปรแกรมอะไรให้วุ่นวาย ลองไปเล่นผ่านหน้า browser. ตามลิงก์นี้ดูได้เลยครับ!
อ้างอิงและเรียบเรียงข้อมูลจาก: Globalbyteshop Blog
แหล่งที่มาบทความต้นฉบับ: Hackaday - The Arduino UNO, BASICally
ดาวน์โหลด Source Code ของโปรเจกต์: GitHub - shachi-lab/nanoBASIC_UNO
*คำเตือน: เนื้อหานี้เป็นการสรุปและเรียบเรียงแนวคิดจากบทความข่าวเทคโนโลยีต้นฉบับภาษาอังกฤษ โปรเจกต์ nanoBASIC_UNO เป็นซอฟต์แวร์ทางเลือกสำหรับการรันคำสั่งพื้นฐาน การนำไปประยุกต์ใช้เพื่อควบคุมฮาร์ดแวร์ภายนอกควรตรวจสอบขีดจำกัดของโค้ดและไลบรารี ผู้สนใจทดลองสามารถดูวิธีการตั้งค่าและคำสั่งทั้งหมดได้ที่หน้า
GitHub Repository ต้นฉบับ ก่อนดำเนินการ