home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib35b.dsk / DUBL.WINDO.MENU.bas < prev    next >
BASIC Source File  |  2023-02-26  |  4KB  |  106 lines

  1. 10  REM  ************************
  2. 20  REM  * DUBL.WINDO.MENU      *
  3. 30  REM  * BY FRED V. AMUNDSEN  *
  4. 40  REM  * COPYRIGHT (C) 1988   *
  5. 50  REM  * BY MICROSPARC, INC.  *
  6. 60  REM  * CONCORD, MA 01742    *
  7. 70  REM  ************************
  8. 80  TEXT : HOME : GOSUB 560: GOTO 480
  9. 90  REM  SHOW CHOICES
  10. 100  GOSUB 450: HOME : FOR KK = 1 TO C(K): PRINT OPTN$(K,KK): NEXT KK: GOSUB 460: RETURN 
  11. 110  REM  GET CHOICE
  12. 120 V = VT +2: NORMAL 
  13. 130  LET K = 1
  14. 140  HTAB 1: VTAB V: INVERSE : PRINT OPTN$(CL,K): NORMAL : IF CL = 0  THEN  GOSUB 100
  15. 150  LET C =  PEEK(KYBD): IF C <128  THEN 150
  16. 160  POKE STROBE,0
  17. 170  IF (C = 141  AND CL = 0  AND K = MAX)  THEN  TEXT : HOME : END 
  18. 180  IF C = 141  AND CL = 0  THEN : VTAB (21): CALL  -958: PRINT "PRESS 'ESC' TO": PRINT "RETURN TO": PRINT "THE LEFT WINDOW": RETURN 
  19. 190  IF C = 155  AND CL >0  THEN  POP :CL = 0:MAX = C(0): GOTO 490
  20. 200  IF C = 141  THEN  RETURN 
  21. 210  IF C = 149  OR C = 138  OR C = 136  OR C = 139  THEN 230
  22. 220  GOTO 150
  23. 230  VTAB V: HTAB HT: PRINT OPTN$(CL,K)
  24. 240  IF C = 149  OR C = 138  THEN V = V +1:K = K +1: IF K >MAX  THEN V = VT +2:K = 1
  25. 250  IF C = 136  OR C = 139  THEN V = V -1:K = K -1: IF K = 0  THEN V = VT +2 +MAX -1:K = MAX
  26. 260  GOTO 140
  27. 270  REM  SHOW HEADINGS
  28. 280  HOME : PRINT  TAB( 20 - LEN(L1$)/2);L1$: PRINT  TAB( 20 - LEN(L2$)/2);L2$: PRINT  TAB( 20 - LEN(L3$)/2);L3$: FOR K = 1 TO 40: PRINT "-";: NEXT 
  29. 290  PRINT 
  30. 300  PRINT  TAB( 4);"USE ARROW KEYS TO SELECT CHOICE": PRINT  TAB( 4);"AND PRESS RETURN FOR RIGHT MENU."
  31. 310 BL$ = " ": INVERSE : REM  BLANK SPACE
  32. 320  VTAB 9
  33. 330  FOR K = 1 TO 40: PRINT BL$;: NEXT 
  34. 340  FOR K = 1 TO 14
  35. 350  HTAB 21: PRINT BL$
  36. 360  NEXT K
  37. 370  VTAB 1
  38. 380  NORMAL 
  39. 390  RETURN 
  40. 400  REM  SHOW MENU
  41. 410 V = 11
  42. 420  FOR K = 1 TO MAX
  43. 430  HTAB HT: VTAB V: PRINT OPTN$(CL,K);:V = V +1: NEXT K
  44. 440  RETURN 
  45. 450  POKE 32,22: POKE 33,18: POKE 34,10: RETURN : REM  SETUP RIGHT WINDOW
  46. 460  POKE 32,2: POKE 33,17: POKE 34,10: RETURN : REM  SETUP LEFT WINDOW
  47. 470  REM  MAINLINE
  48. 480  GOSUB 280
  49. 490 CL = 0:VT = 9:HT = 1: GOSUB 460: HOME : GOSUB 410: GOSUB 120
  50. 500  GOSUB 450:CL = K:MAX = C(K): HOME : FOR KK = 1 TO MAX: PRINT OPTN$(CL,KK): NEXT 
  51. 510  GOSUB 120: REM  GET CHOICE
  52. 520  TEXT : HOME : PRINT OPTN$(CL,K): VTAB 23: PRINT "IN A REAL APPLICATION,": PRINT "YOU WOULD NOW BE": PRINT "RUNNING '";OPTN$(CL,K);"'": PRINT : PRINT "PRESS RETURN TO RESTART/ESCAPE TO QUIT ";: POKE  -16368,0: GET A$
  53. 530  IF A$ < > CHR$(27)  THEN  RUN 
  54. 540  END 
  55. 550  REM  INITIALIZATION
  56. 560  PRINT  CHR$(21): TEXT : HOME 
  57. 570 D$ =  CHR$(4)
  58. 580 L1$ = "MONTHLY FINANCIAL STATEMENTS"
  59. 590 L2$ = "FOR"
  60. 600 L3$ = "ABC COMPANY, INC."
  61. 610  REM  CHANGE NEXT LINE FOR YOUR MENU
  62. 620 NC = 5:NR = 20: REM  NUMBER OF COLUMNS AND ROWS
  63. 630  LET KYBD =  -16384: LET STROBE =  -16368:HT = 3
  64. 640  DIM OPTN$(NC,NR)
  65. 650  DIM C(NC)
  66. 660  FOR J = 0 TO NC
  67. 670  READ C(J)
  68. 680  FOR K = 1 TO C(J)
  69. 690  READ OPTN$(J,K)
  70. 700  NEXT K: NEXT J
  71. 710  LET MAX = C(0)
  72. 720  RETURN 
  73. 730  REM  DATA STATEMENTS FOR FILES ON DISK
  74. 740  DATA  5: REM  COLUMN ZERO
  75. 750  DATA "PREPARE.ENTRIES"
  76. 760  DATA "POST.ENTRIES   "
  77. 770  DATA "PRINT.STMTS    "
  78. 780  DATA "UTILITIES      "
  79. 790  DATA "EXIT           "
  80. 800  DATA  2: REM  COLUMN.ONE
  81. 810  DATA "STANDARD.ENTRIES"
  82. 820  DATA "SPECIAL.ENTRIES "
  83. 830  DATA  2: REM  REM COLUMN.TWO
  84. 840  DATA "INITIAL.POSTING "
  85. 850  DATA "ADD'L.POSTING   "
  86. 860  DATA  4: REM  COLUMN.THREE
  87. 870  DATA "ONE.PAGE.STMT    "
  88. 880  DATA "PRINT.LEDGER     "
  89. 890  DATA "PRINT.ENTRIES    "
  90. 900  DATA "DIVISION.ANALYSIS"
  91. 910  DATA  13: REM  COLUMN.FOUR
  92. 920  DATA "ADD.ACCOUNTS    "
  93. 930  DATA "NEW.ENTRIES     "
  94. 940  DATA "CLEAR.ACCOUNTS  "
  95. 950  DATA "DIRECTORY.ADJUST"
  96. 960  DATA "RESTART         "
  97. 970  DATA "GENERAL.LEDGER  "
  98. 980  DATA "MERGE.ENTRIES   "
  99. 990  DATA "TRANSFER.DATA   "
  100. 1000  DATA "COPY.FILES      "
  101. 1010  DATA "COPY.DISK       "
  102. 1020  DATA "DOS.UP          "
  103. 1030  DATA "INITIALIZE.DISK "
  104. 1040  DATA "INSTRUCTIONS    "
  105. 1050  DATA  1: REM  COLUMN.FIVE
  106. 1060  DATA  "EXIT.TO.BASIC": REM  REQUIRED LAST STATEMENT