home *** CD-ROM | disk | FTP | other *** search
/ PCDisk Magazine Disks / PCDisk Magazine - Disk 3.img / BOOT1.BAS (.txt) next >
Encoding:
GW-BASIC  |  1984-08-01  |  14.9 KB  |  429 lines

  1. 20  ' BOOTSTRAPS: CHARACTER GRAPHICS
  2. 30  ' Copyright (C) 1983 ,1984  Stan W. Merrill -- All Rights Reserved
  3. 60  ' -- Declare Global Constants
  4. 80   DEFINT A-Z
  5. 90   NO     = -1      :  YES       =  1     :  ESC$   = CHR$(27)
  6. 100  BLACK  =  0      :  BLUE      =  1     :  CYAN   =  3
  7. 110  GRAY   =  8      :  LT.BLUE   =  9     :  GREEN  = 10
  8. 120  RED    = 12      :  YELLOW    = 14     :  WHITE  = 15   :   BROWN = 6
  9. 130  BUTTON$   = "o"  :  MONO.SEG  = &HB000 :  COLOR.SEG = &HB800
  10. 140  BLINK     =  16  :  NO.CURSOR =  0     :  MONO   = &H30
  11. 190  ' -- Main Control Section
  12. 210  GOSUB 1210     ' -- reset function keys
  13. 220  GOSUB 1380     ' -- get display type
  14. 240  WIDTH 80       ' -- set screen width
  15. 250  SCREEN 0,0,0   ' -- set text mode
  16. 260  GOSUB 3540     ' -- title screen
  17. 270  COLOR WHITE, BLACK
  18. 280  WHILE (YES)
  19. 290    CLS
  20. 300    GOSUB 460    ' -- Menu title
  21. 310    GOSUB 630    ' -- Show menu
  22. 320    GOSUB 1050    ' -- Get choice (FKEY)
  23. 330    IF FKEY = 1 THEN GOSUB 1460   ' -- Character set
  24. 340    IF FKEY = 2 THEN GOSUB 2030   ' -- Mondrian art
  25. 350    IF FKEY = 3 THEN GOSUB 2300   ' -- Graph paper
  26. 360    IF FKEY = 4 THEN GOSUB 2560   ' -- Mug shot
  27. 370    IF FKEY = 5 THEN GOSUB 2950   ' -- Color swatches
  28. 380    IF FKEY = 6 THEN GOSUB 3230   ' -- Math/Non-English
  29. 390    ' -- Wait for acknowledgement
  30. 400    LOCATE 25,24 : COLOR YELLOW,BLACK
  31. 410    PRINT "Press any key to return to menu...";
  32. 420    IF INKEY$ = "" THEN 420
  33. 430  WEND
  34. 460  ' -- Subroutine: MENU TITLE   REQUIRES: (NOTHING) RETURNS: (NOTHING)
  35. 470  CLS
  36. 490  TITLE$     = "> > >    BOOTSTRAPS: CHARACTER GRAPHICS    < < <"
  37. 500  AUTHOR$ = "Copyright (C) 1984 by Stan W. Merrill -- All Rights Reserved"
  38. 510  '-- Draw a box
  39. 520  COLOR WHITE,BLACK,BLACK
  40. 530  TOP.OF.BOX = 1 : BOTTOM.OF.BOX = 6
  41. 540  LEFT.OF.BOX = 1 : RIGHT.OF.BOX = 80
  42. 550  GOSUB 1740  ' -- Draw box
  43. 560  ' -- Print title
  44. 570  LOCATE TOP.OF.BOX + 2,(40 - (LEN(TITLE$)/2))  : COLOR GREEN,BLACK
  45. 580  PRINT TITLE$;
  46. 590  LOCATE TOP.OF.BOX + 3,(40 - (LEN(AUTHOR$)/2)) : COLOR CYAN,BLACK
  47. 600  PRINT AUTHOR$;
  48. 610  RETURN
  49. 630  ' -- Subroutine: SELECTION MENU  REQUIRES: (NOTHING)  RETURNS: (NOTHING)
  50. 660  COLOR WHITE,BLACK
  51. 670  TOP.OF.BOX = 9 : BOTTOM.OF.BOX = 11
  52. 680  LEFT.OF.BOX = 10 : RIGHT.OF.BOX = 70
  53. 690  GOSUB 1740  ' -- Draw box
  54. 700  RESTORE 930
  55. 710  READ MENU.NAME$
  56. 720  LOCATE TOP.OF.BOX - 1,(40 - (LEN(MENU.NAME$)/2))
  57. 730  PRINT MENU.NAME$;
  58. 740  READ COLUMN.TITLE$
  59. 750  LOCATE TOP.OF.BOX + 1,(40 - (LEN(COLUMN.TITLE$)/2))
  60. 760  PRINT COLUMN.TITLE$;
  61. 770  READ NUMBER.OF.ENTRIES
  62. 780  LOCATE BOTTOM.OF.BOX + 2
  63. 790  FOR ENTRY = 1 TO NUMBER.OF.ENTRIES
  64. 800    READ FKEY$,DESCRIPTION$,STARTING.LINE$
  65. 810    COLOR WHITE,BLACK
  66. 820    PRINT TAB(17); FKEY$; "  -  ";
  67. 830    COLOR GREEN,BLACK
  68. 840    PRINT DESCRIPTION$;
  69. 850    COLOR WHITE,BLACK
  70. 860    PRINT TAB(60); STARTING.LINE$
  71. 870  NEXT 'ENTRY
  72. 880  COLOR WHITE,BLACK
  73. 890  TOP.OF.BOX = BOTTOM.OF.BOX + 1
  74. 900  BOTTOM.OF.BOX = BOTTOM.OF.BOX + NUMBER.OF.ENTRIES + 3
  75. 910  GOSUB 1740   ' -- Draw box
  76. 920  PRINT TAB(LEFT.OF.BOX); "CHOOSE:";
  77. 930  DATA "SUBROUTINE MENU"
  78. 940  DATA "  Fkey    Description                        Line #"
  79. 950  DATA 7   :   ' -- Number of lines in menu
  80. 960  DATA "F1 ","Characters I have met . . . . . .","1460"
  81. 970  DATA "F2 ","Boxes . . . . . . . . . . . . . .","1740"
  82. 980  DATA "F3 ","Make your own graph paper . . . .","2290"
  83. 990  DATA "F4 ","Mug Shot  . . . . . . . . . . . .","2550"
  84. 1000  DATA "F5 ","Color Swatches  . . . . . . . . .","2950"
  85. 1010  DATA "F6 ","Mathematics/Non-English . . . . .","3230"
  86. 1020  DATA "ESC","Stop!  (Back to BASIC...)"," "
  87. 1030  RETURN
  88. 1050  ' -- Subroutine: GET USER'S CHOICE (using Function keys)
  89. 1060  ' -- Requires: (nothing)         Returns: FKEY
  90. 1080  VALID.KEY = NO
  91. 1090  CHOICE$ = INKEY$
  92. 1100  WHILE ((LEN(CHOICE$) < 2) AND (VALID.KEY = NO))
  93. 1110    CHOICE$ = INKEY$
  94. 1120    IF CHOICE$ = ESC$ THEN  GOTO 11250
  95. 1130    WHILE (LEN(CHOICE$) >= 2)
  96. 1140      CHOICE$ = RIGHT$(CHOICE$,1)
  97. 1150      FKEY = ASC(CHOICE$) - 58     ' -- See BASIC manual, App. G
  98. 1160      IF (FKEY >= 1 AND FKEY <= NUMBER.OF.ENTRIES - 1) THEN VALID.KEY = YES
  99. 1170    WEND
  100. 1180  WEND
  101. 1190  RETURN
  102. 1210  ' -- Subroutine: FUNCTION KEYS  REQUIRES: (NOTHING)  RETURNS: (NOTHING)
  103. 1240  KEY OFF              ' -- turn off function key menu
  104. 1250  FOR FKEY = 1 TO 10   ' -- reset function keys so they
  105. 1260    KEY FKEY,""        ' --   can be used as regular keys
  106. 1270  NEXT 'FKEY           ' --   (See BASIC manual, App. G)
  107. 1280  RETURN
  108. 1380  ' -- Subroutine: DISPLAY TYPE  REQUIRES: (NOTHING)  RETURNS: DISPLAY.TYPE
  109. 1410  EQUIP.FLAG = &H410
  110. 1420  DEF SEG = 0
  111. 1430  DISPLAY.TYPE = (PEEK(EQUIP.FLAG) AND &H30)
  112. 1440  DEF SEG
  113. 1450  RETURN
  114. 1460  ' -- Subroutine: CHARACTER SET  REQUIRES: DISPLAY.TYPE  RETURNS: (NOTHING)
  115. 1500  CLS
  116. 1510  COLOR YELLOW,BLACK
  117. 1520  PRINT TAB(22); "IBM Personal Computer Character Set"
  118. 1530  PRINT TAB(14); "(Numbers are for use with PRINT and POKE statements.)";
  119. 1540  IF DISPLAY.TYPE = MONO THEN DEF SEG = MONO.SEG ELSE DEF SEG = COLOR.SEG
  120. 1550  ' -- Show the characters
  121. 1560  OFFSET = 480 + 6  ' -- Skip first three lines and indent 6 cells
  122. 1570  FOR CHARACTER% = 0 TO 255
  123. 1580    IF (CHARACTER% MOD 13) = 0 THEN OFFSET = OFFSET + 4
  124. 1590    POKE (CHARACTER% * 12) + OFFSET + 1, RED    ' -- set attribute to red
  125. 1600    POKE (CHARACTER% * 12) + OFFSET,CHARACTER%  ' -- show character
  126. 1610  NEXT 'CHARACTER%
  127. 1620  DEF SEG
  128. 1630  ' -- Show their numbers
  129. 1640  CHARACTER% = 0
  130. 1650  COLOR WHITE,BLACK
  131. 1660  FOR ROW = 4 TO 23
  132. 1670    FOR COL = 1 TO 78 STEP 6
  133. 1680      LOCATE ROW,COL
  134. 1690      IF (CHARACTER% < 256) THEN PRINT CHARACTER%;
  135. 1700      CHARACTER% = CHARACTER% + 1
  136. 1710    NEXT 'COL
  137. 1720  NEXT 'ROW
  138. 1730  RETURN
  139. 1740  ' -- Subroutine: DRAW A BOX
  140. 1760  ' -- Requires: TOP.OF.BOX, BOTTOM.OF.BOX, LEFT.OF.BOX, RIGHT.OF.BOX
  141. 1770  ' --           Returns: (nothing)
  142. 1790  LEFT.TOP$    = CHR$(218) : RIGHT.TOP$    = CHR$(191)
  143. 1800  LEFT.BOTTOM$ = CHR$(192) : RIGHT.BOTTOM$ = CHR$(217)
  144. 1810  HORIZONTAL$  = CHR$(196) : VERTICAL$     = CHR$(179) 
  145. 1820  LOCATE BOTTOM.OF.BOX,LEFT.OF.BOX
  146. 1830  PRINT LEFT.BOTTOM$;
  147. 1840  LOCATE TOP.OF.BOX,LEFT.OF.BOX
  148. 1850  PRINT LEFT.TOP$;
  149. 1860  FOR ROW = TOP.OF.BOX + 1 TO BOTTOM.OF.BOX - 1
  150. 1870    LOCATE ROW,LEFT.OF.BOX,NO.CURSOR
  151. 1880    PRINT VERTICAL$;
  152. 1890    LOCATE ROW,RIGHT.OF.BOX,NO.CURSOR
  153. 1900    PRINT VERTICAL$;
  154. 1910  NEXT 'ROW
  155. 1920  LOCATE BOTTOM.OF.BOX,RIGHT.OF.BOX
  156. 1930  PRINT RIGHT.BOTTOM$;
  157. 1940  LOCATE TOP.OF.BOX,RIGHT.OF.BOX
  158. 1950  PRINT RIGHT.TOP$;
  159. 1960  FOR COL = LEFT.OF.BOX + 1 TO RIGHT.OF.BOX - 1
  160. 1970    LOCATE TOP.OF.BOX,COL,NO.CURSOR
  161. 1980    PRINT HORIZONTAL$;
  162. 1990    LOCATE BOTTOM.OF.BOX,COL,NO.CURSOR
  163. 2000    PRINT HORIZONTAL$;
  164. 2010  NEXT 'COL
  165. 2020  RETURN
  166. 2030  ' -- Subroutine: MONDRIAN ART  REQUIRES: (NOTHING)  RETURNS:(NOTHING)
  167. 2070  CLS
  168. 2080  BOXES = INT(RND(1) * 15) + 10    ' -- Decide how many boxes
  169. 2090  FOR BOX = 1 TO BOXES
  170. 2100    TOP.OF.BOX = INT(RND(1) * 21) + 1
  171. 2110    BOTTOM.OF.BOX = INT(RND(1) * 22) + 1
  172. 2120    WHILE (BOTTOM.OF.BOX <= TOP.OF.BOX)
  173. 2130      BOTTOM.OF.BOX = INT(RND(1) * 22) + 1
  174. 2140    WEND
  175. 2150    LEFT.OF.BOX = INT(RND(1) * 78) + 1
  176. 2160    RIGHT.OF.BOX = INT(RND(1) * 79) + 1
  177. 2170    WHILE (RIGHT.OF.BOX <= LEFT.OF.BOX)
  178. 2180      RIGHT.OF.BOX = INT(RND(1) * 79) + 1
  179. 2190    WEND
  180. 2200    FORE = INT(RND(1) * 16)        ' -- Choose a color
  181. 2210    IF (FORE = BLACK OR FORE = GRAY) THEN FORE = WHITE
  182. 2220    IF (FORE = BLUE OR FORE = LT.BLUE) THEN FORE = WHITE
  183. 2230    COLOR FORE,BLACK
  184. 2240    GOSUB 1740                     ' -- Draw a box
  185. 2250  NEXT 'BOX
  186. 2260  LOCATE 23,30
  187. 2270  PRINT "I.B.Mondrian [-- in appreciation of Piet Mondrian]";
  188. 2280  RETURN
  189. 2300  ' -- Subroutine: GRAPH PAPER  REQUIRES: (NOTHING)  RETURNS:(NOTHING)
  190. 2330  ' -- Set symbols for graph pattern
  191. 2340  MARK1$ = "#"  :  MARK2$ = "+"
  192. 2350  ' -- Give User a chance to get ready
  193. 2360  CLS
  194. 2370  LOCATE 10,15  :  COLOR GREEN,BLACK
  195. 2380  PRINT "Make SURE the printer is ready.  Then press a key."
  196. 2390  LOCATE 11,21
  197. 2400  PRINT "(Press <ESC> to interrupt printing.)";
  198. 2410  CHOICE$ = INKEY$
  199. 2420  IF CHOICE$ = "" THEN 2410 ELSE IF CHOICE$ = ESC$ THEN RETURN
  200. 2430  ' -- Print the pattern
  201. 2435  ON ERROR GOTO 10000
  202. 2440  LPRINT : LPRINT
  203. 2450  FOR ROW = 1 TO 25
  204. 2460    IF INKEY$ = ESC$ THEN RETURN
  205. 2470    LOCATE 15,32,NO.CURSOR
  206. 2480    PRINT "Printing row "; ROW;
  207. 2490    IF (ROW MOD 5) = 0 THEN MARK$ = MARK2$ ELSE MARK$ = MARK1$
  208. 2500    FOR COL = 1 TO 80
  209. 2510      IF (COL MOD 5) = 0 THEN LPRINT MARK2$; ELSE LPRINT MARK$;
  210. 2520    NEXT 'COL
  211. 2530  NEXT 'ROW
  212. 2540  RETURN
  213. 2560  ' -- Subroutine: MUG  REQUIRES: DISPLAY.TYPE  RETURNS: (NOTHING)
  214. 2590  CLS
  215. 2600  IF DISPLAY.TYPE = MONO THEN DEF SEG = MONO.SEG ELSE DEF SEG = COLOR.SEG
  216. 2610  CELL = 1
  217. 2620  RESTORE 2720
  218. 2630  READ COUNT,LETTER,ATTRIBUTE
  219. 2640  WHILE (COUNT > 0)
  220. 2650    FOR R = 1 TO COUNT
  221. 2660      POKE CELL,ATTRIBUTE
  222. 2670      POKE CELL - 1,LETTER
  223. 2680      CELL = CELL + 2
  224. 2690    NEXT 'R
  225. 2700    READ COUNT,LETTER,ATTRIBUTE
  226. 2710  WEND
  227. 2720  DATA 99, 176,7, 22, 178,6,  7, 219,6,  50, 176,7, 23, 178,6,  8, 219,6
  228. 2730  DATA 49, 176,7, 19, 178,6,  9, 219,6,   1, 178,6, 11, 219,6, 41, 176,7
  229. 2740  DATA 15, 178,6, 11, 219,6,  2, 178,6,   4, 219,6,  5, 176,7,  4, 219,6
  230. 2750  DATA 39, 176,7, 13, 178,6, 12, 219,6,   4, 178,6,  2, 219,6,  7, 176,7
  231. 2760  DATA  4, 219,6, 38, 176,7, 13, 178,6,  12, 219,6,  4, 178,6,  2, 219,6
  232. 2770  DATA  8, 176,7,  4, 219,6, 37, 176,7,  15, 178,6,  9, 219,6,  4, 178,6
  233. 2780  DATA  2, 219,6, 10, 176,7,  3, 219,6,  37, 176,7, 14, 178,6, 10, 219,6
  234. 2790  DATA  3, 178,6,  3, 219,6, 10, 176,7,   4, 219,6, 36, 176,7, 15, 178,6
  235. 2800  DATA 11, 219,6,  2, 178,6,  3, 219,6,   9, 176,7,  4, 219,6, 36, 176,7
  236. 2810  DATA 12, 178,6, 13, 219,6,  2, 178,6,   4, 219,6,  9, 176,7,  4, 219,6
  237. 2820  DATA 36, 176,7, 11, 178,6, 14, 219,6,   3, 178,6,  3, 219,6,  8, 176,7
  238. 2830  DATA  4, 219,6, 37, 176,7, 11, 178,6,  14, 219,6,  3, 178,6,  3, 219,6
  239. 2840  DATA  8, 176,7,  4, 219,6, 37, 176,7,  12, 178,6, 13, 219,6,  3, 178,6
  240. 2850  DATA  3, 219,6,  7, 176,7,  4, 219,6,  38, 176,7, 12, 178,6, 13, 219,6
  241. 2860  DATA  3, 178,6,  4, 219,6,  5, 176,7,   4, 219,6, 38, 176,7, 10, 178,6
  242. 2870  DATA 17, 219,6,  2, 178,6,  4, 219,6,   4, 176,7,  4, 219,6, 39, 176,7
  243. 2880  DATA 10, 178,6, 17, 219,6,  2, 178,6,   4, 219,6,  2, 176,7,  5, 219,6
  244. 2890  DATA 40, 176,7,  8, 178,6, 18, 219,6,   3, 178,6, 10, 219,6, 41, 176,7
  245. 2900  DATA  8, 178,6, 18, 219,6,  3, 178,6,   8, 219,6, 43, 176,7,  7, 178,6
  246. 2910  DATA 20, 219,6,  2, 178,6,  6, 219,6,  45, 176,7,  7, 178,6, 20, 219,6
  247. 2920  DATA  2, 178,6,  3, 219,6, 51, 176,7,   4, 178,6, 24, 219,6, 57, 176,7
  248. 2930  DATA 19, 219,6,115, 176,7,  0,   0,0
  249. 2940  RETURN
  250. 2950  ' -- Subroutine: COLOR SWATCHES  REQUIRES: (NOTHING)  RETURNS: (NOTHING)
  251. 2990  COLOR WHITE, BLACK
  252. 3000  CLS
  253. 3010  LENGTH = 8
  254. 3020  START.COL = 10
  255. 3030  LOCATE 1,30   :  PRINT "COLORS FOR THE IBM PC"
  256. 3040  LOCATE 4,1    :  PRINT "Foreground"
  257. 3050  LOCATE 3,35   :  PRINT "Background"
  258. 3060  FOR BACK = 0 TO 7
  259. 3070    COLOR BACK, 0
  260. 3080    LOCATE 4, START.COL + (LENGTH * BACK) + INT(LENGTH/2)
  261. 3090    PRINT BACK;
  262. 3100    FOR FORE = 0 TO 15
  263. 3110      COLOR FORE, 0
  264. 3120      LOCATE FORE + 5, 1
  265. 3130      PRINT FORE;
  266. 3140      COLOR FORE, BACK
  267. 3150      LOCATE FORE + 5, START.COL + (LENGTH * BACK)
  268. 3160      FOR L = 1 TO LENGTH
  269. 3170        PRINT CHR$(177);
  270. 3180      NEXT 'L
  271. 3190      PRINT 
  272. 3200    NEXT 'FORE
  273. 3210  NEXT 'BACK
  274. 3220  RETURN
  275. 3230  ' -- Subroutine: MATH/NON-ENGLISH CHARACTERS  REQUIRES: (NOTHING)  RETURNS:(NOTHING)
  276. 3270  PRINT "MATH CHARACTERS"
  277. 3280  COLOR WHITE, CYAN
  278. 3290  CLS
  279. 3300  LOCATE 3, 23
  280. 3310  PRINT "MATHEMATICS AND NON-ENGLISH LANGUAGES"
  281. 3320  PRINT
  282. 3330  PRINT "     MATHEMATICS:"
  283. 3340  PRINT
  284. 3350  PRINT "            \<UNK! {00FC}>"
  285. 3360  PRINT "          <0xE3!> <UNK! {00F5}>c [f(y)]<UNK! {FD64}>y"
  286. 3370  PRINT
  287. 3380  PRINT "     FINNISH:"
  288. 3390  PRINT
  289. 3400  PRINT "          RETURNlykDATAs ja sNEWpNEW tyttNEW, hDATAn vastasi rehellisesti."
  290. 3410  PRINT "          (A bright and pretty girl, he answered honestly.)"
  291. 3420  PRINT
  292. 3430  PRINT "     SPANISH:"
  293. 3440  PRINT
  294. 3450  PRINT "          RESUMEComo estINPUT Usted?"
  295. 3460  PRINT "          (How are you?)"
  296. 3470  PRINT
  297. 3480  PRINT "     NEW TESTAMENT GREEK:"
  298. 3490  PRINT
  299. 3500  PRINT "          <0xE0!><0xE2!><0xE0!>+o<0xE3!>oios"
  300. 3510  PRINT "          (a well-doer)"
  301. 3520  RETURN
  302. 3540  ' -- Subroutine: TITLE  REQUIRES:(NOTHING)  RETURNS:(NOTHING)
  303. 3570  COLOR YELLOW, BLACK, NO.CURSOR
  304. 3580  CLS
  305. 3590  GOSUB 4080    ' -- Draw Computer
  306. 3600  START.COL =  7
  307. 3610  START.ROW =  8
  308. 3620  COLOR BROWN, BLACK, NO.CURSOR
  309. 3630  RESTORE 4920  ' -- Boot data
  310. 3640  GOSUB 3890    ' -- Draw boot
  311. 3650  GOSUB 3690    ' -- Explode and beep
  312. 3660  GOSUB 4580    ' -- Label everything
  313. 3662  FOR I = 1 TO 2500 :NEXT I
  314. 3670  RETURN
  315. 3690  ' -- Subroutine: EXPLODE AND BEEP  REQUIRES: (NOTHING)  RETURNS:(NOTHING)
  316. 3720  COLOR RED, BLACK, NO.CURSOR
  317. 3730  SOUND   800, 2  ' -- Beep
  318. 3740  SOUND 32767, 3  ' -- Rest
  319. 3750  LOCATE 17, 27   :  PRINT "\";
  320. 3760  LOCATE 18, 27   :  PRINT "-";
  321. 3770  LOCATE 19, 27   :  PRINT "-";
  322. 3780  LOCATE 20, 27   :  PRINT "/";
  323. 3790  GOSUB 4830     ' -- Delay
  324. 3800  DELAYLENGTH = 500
  325. 3810  FOR ROW = 17 TO 20  ' -- Erase explosion
  326. 3820    LOCATE ROW, 27
  327. 3830    PRINT SPC(1);
  328. 3840  NEXT 'ROW
  329. 3850  SOUND 800, 4    ' -- Beep
  330. 3860  LOCATE 18, 39   : PRINT ".";
  331. 3870  RETURN
  332. 3890  ' -- Subroutine: DRAW OBJECT  REQUIRES: START.ROW, START.COL  RETURNS: (NOTHING)
  333. 3920  J = 1
  334. 3930  ROW = START.ROW
  335. 3940  COL = START.COL
  336. 3950  WHILE (J > 0)
  337. 3960    READ J
  338. 3970    WHILE ((J <> 36) AND (J > 0))
  339. 3980     COL = COL + 1
  340. 3990     LOCATE ROW, COL, NO.CURSOR
  341. 4000      PRINT CHR$(J);
  342. 4010      READ J
  343. 4020    WEND
  344. 4030    ROW = ROW + 1
  345. 4040    COL = START.COL
  346. 4050  WEND
  347. 4060  RETURN
  348. 4080  ' -- Subroutine: DRAW COMPUTER  REQUIRES: (NOTHING)  RETURNS: (NOTHING)
  349. 4130  ' -- Outer screen
  350. 4140  TOP.OF.BOX =  2  :  LEFT.OF.BOX = 30
  351. 4150  BOTTOM.OF.BOX = 16  :  RIGHT.OF.BOX = 77
  352. 4160  GOSUB 1740          ' -- Draw a box
  353. 4170  ' -- Inner screen
  354. 4180  TOP.OF.BOX =  3  :  LEFT.OF.BOX = 31
  355. 4190  BOTTOM.OF.BOX = 15  :  RIGHT.OF.BOX = 75
  356. 4200  GOSUB 1740          ' -- Draw a box
  357. 4220  ' -- System unit
  358. 4230  TOP.OF.BOX = 16  :  LEFT.OF.BOX = 28
  359. 4240  BOTTOM.OF.BOX = 20  :  RIGHT.OF.BOX = 79
  360. 4250  GOSUB 1740          ' -- Draw a box
  361. 4260  ' -- Left drive
  362. 4270  TOP.OF.BOX = 17  :  LEFT.OF.BOX = 37
  363. 4280  BOTTOM.OF.BOX = 19  :  RIGHT.OF.BOX = 57
  364. 4290  GOSUB 1740          ' -- Draw a box
  365. 4310  ' -- Right drive
  366. 4320  TOP.OF.BOX = 17  :  LEFT.OF.BOX = 57
  367. 4330  BOTTOM.OF.BOX = 19  :  RIGHT.OF.BOX = 77
  368. 4340  GOSUB 1740          ' -- Draw a box
  369. 4350  ' -- Keyboard
  370. 4360  TOP.OF.BOX = 20  :  LEFT.OF.BOX = 29
  371. 4370  BOTTOM.OF.BOX = 24  :  RIGHT.OF.BOX = 78
  372. 4380  GOSUB 1740          ' -- Draw a box
  373. 4390  ' -- Function keys
  374. 4400  TOP.OF.BOX = 21  :  LEFT.OF.BOX = 30
  375. 4410  BOTTOM.OF.BOX = 23  :  RIGHT.OF.BOX = 32
  376. 4420  GOSUB 1740          ' -- Draw a box
  377. 4430  ' -- Typewriter keypad
  378. 4440  TOP.OF.BOX = 21  :  LEFT.OF.BOX = 33
  379. 4450  BOTTOM.OF.BOX = 23  :  RIGHT.OF.BOX = 67
  380. 4460  GOSUB 1740          ' -- Draw a box
  381. 4480  ' -- Numeric keypad
  382. 4490  TOP.OF.BOX = 21  :  LEFT.OF.BOX = 68
  383. 4500  BOTTOM.OF.BOX = 23  :  RIGHT.OF.BOX = 77
  384. 4510  GOSUB 1740          ' -- Draw a box
  385. 4520  ' -- Display buttons
  386. 4530  LOCATE 8, 76        :  PRINT BUTTON$;
  387. 4540  LOCATE 10, 76       :  PRINT BUTTON$;
  388. 4550  LOCATE 12, 76       :  PRINT BUTTON$;
  389. 4560  RETURN
  390. 4580  ' -- Subroutine: LABEL EVERYTHING  REQUIRES: (NOTHING)  RETURNS: (NOTHING)
  391. 4610  COLOR BLACK, BROWN
  392. 4620  LOCATE 12, 9     :  PRINT " System ";
  393. 4630  LOCATE 13, 9     :  PRINT "  Boot  ";
  394. 4640  DELAYLENGTH = 1000
  395. 4650  GOSUB 4830       ' -- Delay
  396. 4660  COLOR RED, BLACK
  397. 4680  LOCATE 5, 46     :  PRINT "PC Disk Magazine";
  398. 4690  LOCATE 6, 50     :  PRINT "Presents";
  399. 4700  GOSUB 4830       ' -- Delay
  400. 4720  LOCATE 8, 49     :  PRINT "BOOTSTRAPS";
  401. 4730  LOCATE 9, 35     :  PRINT "Copyright (C) 1984 by Stan W. Merrill";
  402. 4740  LOCATE 10, 45    :  PRINT "All Rights Reserved";
  403. 4750  GOSUB 4830       ' -- Delay
  404. 4770  LOCATE 13, 41    :  PRINT "Topic: Character Graphics";
  405. 4780  DELAYLENGTH = 2500
  406. 4810  RETURN
  407. 4830  ' -- Subroutine: DELAY  REQUIRES: DELAYLENGTH  RETURNS: (NOTHING)
  408. 4860  FOR I = 1 TO DELAYLENGTH
  409. 4870  NEXT I
  410. 4880  RETURN
  411. 4900  ' -- Data: BOOT DATA
  412. 4920  DATA 032, 032, 032, 176, 176, 036
  413. 4930  DATA 178, 178, 178, 176, 176, 178, 178, 178, 178, 178, 036
  414. 4940  DATA 178, 178, 178, 176, 176, 178, 178, 178, 178, 178, 036
  415. 4950  DATA 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 036
  416. 4960  DATA 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 036
  417. 4970  DATA 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 036
  418. 4980  DATA 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 036
  419. 4990  DATA 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 036
  420. 5000  DATA 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 036
  421. 5010  DATA 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 036
  422. 5020  DATA 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 176, 036
  423. 5030  DATA 032, 176, 176, 176, 176, 176, 032, 032, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 036
  424. 5040  DATA 0, 0, 0, 0
  425. 5060  COLOR 7,0
  426. 10000  IF ERR = 25 THEN RESUME 10010
  427. 10010  LOCATE 15,10: PRINT ">>>>>>>>>> PROBLEM WITH PRINTER.  RETURNING TO MAIN MENU. <<<<<<<<<<" : FOR X = 1 TO 3000 : NEXT X :GOTO 300
  428. 11250  CLS:KEY ON:KEY 1,"LIST":KEY 2,"RUN"+CHR$(13):KEY 3,"LOAD"+CHR$(34):KEY 4,"SAVE"+CHR$(34):KEY 5,"CONT"+CHR$(13):KEY 6,",LPT1:"+CHR$(13):KEY 7,"TRON"+CHR$(13):KEY 8,"TROFF"+CHR$(13):KEY 9,"KEY ":KEY 10,"SCREEN 0,0,0"+CHR$(13) :COLOR 7,0:END
  429.