MenuGram

This software was written for a medical dispensary to display menus on large screen televisions. The idea is the store would change a text file and the signage would automatically update. Source code is below:

' Program developed by Jason Page of Page Telegram May of 2022
' V1.00 is not fault tolerant: text file needs consistently 5 columns and
' the last line EOF must not be an empty carraige return.
' This software is not yet ready for release for production, yet until
' Fault torelant measures are made.

' This software is released privately and folks are welcome to improve
' Upon it. If you have such interest you may contact me:
' jsp@pagetelegram.com

' MenuGram copyright Jason Page 2022

' This software is developed for easily updatable text based menu display
' and can be implimented in different merchant environments.
' Press "F" to toggle full screen and +/- for incrementing rotation in
' seconds. This software is designed to be compiled in qb64 compiler.
' See qb64.net for details or google for it.

Dim Shared a$(255), b$(255), c$(255), d$(255), e$(255)

declare sub  menu(tis) as dynamic
declare sub disp(tis) as dynamic
_Title "MenuGram V1.00 by Page Telegram, May 2022"
Timer On

f = 0
tis = 5

Call menu(tis)

five:
p = p + 1
Cls


Color 15, 2
Cls
Locate 1, 1
Print "                        MENU AS OF: "; Date$; "  "; Time$; "              sec:"; tis
Color 12, 1
tmp$ = "    \           \ \             \ \                            \ \     \ \   \ "
Print Using tmp$; a$(0); b$(0); c$(0); d$(0); e$(0)
Color 15, 0
Timer Stop
Timer On
Return

Sub menu (tis)
    Do

        1:
        If f = 1 Then
            _FullScreen
        Else
            _FullScreen Off
        End If
        p = 1
        c = 0: i = 0
        Cls
        If _FileExists("menugram.txt") Then
            Open "menugram.txt" For Input As #1
            Do
                If Not (EOF(1)) Then
                    Input #1, a$(c), b$(c), c$(c), d$(c), e$(c)
                    c = c + 1
                End If
            Loop Until EOF(1)
            Close #1
            Call disp(tis)
            Color 12, 1
            tmp$ = "    \           \ \             \ \                            \ \     \ \   \ "
            Print Using tmp$; a$(0); b$(0); c$(0); d$(0); e$(0)


            For i = 1 To c
                If i Mod 2 = 1 Then
                    Color 0, 15

                Else
                    Color 15, 0

                End If

                tmp$ = "##  \           \ \             \ \                            \ \     \ \   \ "
                Print Using tmp$; i; a$(i); b$(i); c$(i); d$(i); e$(i)

                If i Mod 17 = 0 Then
                    Select Case tis
                        Case 1: On Timer(1) GoSub five
                        Case 2: On Timer(2) GoSub five
                        Case 3: On Timer(3) GoSub five
                        Case 4: On Timer(4) GoSub five
                        Case 5: On Timer(5) GoSub five
                        Case 6: On Timer(6) GoSub five
                        Case 7: On Timer(7) GoSub five
                        Case 8: On Timer(8) GoSub five
                        Case 9: On Timer(9) GoSub five
                        Case 10: On Timer(10) GoSub five
                        Case 11: On Timer(11) GoSub five
                        Case 12: On Timer(12) GoSub five
                        Case 13: On Timer(13) GoSub five
                        Case 14: On Timer(14) GoSub five
                        Case 15: On Timer(15) GoSub five
                        Case 16: On Timer(16) GoSub five
                        Case 17: On Timer(17) GoSub five
                        Case 18: On Timer(18) GoSub five
                        Case 19: On Timer(19) GoSub five
                        Case 20: On Timer(20) GoSub five
                    End Select

                    Sleep
                End If

                Select Case LCase$(InKey$)
                    Case Chr$(27): System
                    Case "f": If f = 0 Then f = 1 Else f = 0: GoTo 1
                    Case "-", "_":
                        If tis > 1 Then
                            tis = tis - 1
                            GoTo 1
                        Else
                            Beep
                        End If
                    Case "+", "=":
                        If tis < 20 Then
                            tis = tis + 1
                            GoTo 1
                        Else
                            Beep
                        End If
                End Select

            Next i

        Else
            Print "Creating file 'menugram.txt' as did not already exist. Please open this file in a text editor such as notepad with 5 columns seperated by a comma."
            Print "Hit any key..."
            Sleep
            Open "menugram.txt" For Output As #2
            Print #2, "Type, Brand, Name/Description, Weight, Price"
            Print "File created. Please open 'menugram.txt' and add essential display items. Program restarts in 10 seconds."
            Print "[ESC]ape to exit or toggle full screen mode using [F] key..."
            Sleep 10
            Close #2
        End If
    Loop
End Sub

Sub disp (tis)

    Color 15, 2
    Cls
    Locate 1, 1
    Print "                        MENU AS OF: "; Date$; "  "; Time$; "              sec:"; tis
    Color 12, 1
    
End Sub