home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols000 / vol078 / bigtime.bas < prev    next >
BASIC Source File  |  1984-04-29  |  15KB  |  486 lines

  1. 1    '    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2. 2    '    ADM-31 ONSCREEN EDITING AND CURSOR CONTROL UTILITY PROGRAM.
  3. 3    '    
  4. 4    '    Version : 1.0
  5. 5    '    Composed: R. Berthet. C/O Channel 0/28 SYDNEY. Ph. 02-923-4801.
  6. 6    '    Date    : 14/03/82
  7. 7    '       Language: BASIC
  8. 8    '
  9. 9    '    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  10. 10    '
  11. 11    '    This program is designed to be added to the top of a BASIC     
  12. 12    '    program. Its aim is to save the agony of writing tedious
  13. 13    '    ESCAPE sequences for the terminals video attributes.      
  14. 14    '
  15. 15    '    Following is a list of abbreviations of common words associated
  16. 16    '    with these attributes. The abbreviations are then used to form
  17. 17    '    STRING variable names for the ESCAPE sequences.               
  18. 18    '                                      
  19. 19    '    It is advisable to read the appropriate section of the ADM   
  20. 20    '    Terminal Operators Manual to familiarise yourself with the 
  21. 21    '    operation of the video attributes.                            
  22. 22    '
  23. 23    '    ABBREVIATIONS
  24. 24    '
  25. 25    '    ALL    ALL                       LIN    LINE          
  26. 26    '    ALT    ALTERNATE                 LD    LOAD          
  27. 27    '    B    BOTTOM                    MOD    MODE          
  28. 28    '    BS    BACKSPACE                 NL    NEWLINE       
  29. 29    '    BEL    BELL                      NUL    NULL          
  30. 30    '    BLA    BLANK                     OFF    OFF          
  31. 31    '    BLI    BLINK                     ON    ON          
  32. 32    '    BOT    BOTTOM                    PGM    PROGRAM       
  33. 33    '    CHR    CHARACTER                 PRT    PROTECT(ED)   
  34. 34    '    CLR    CLEAR                     RD    READ          
  35. 35    '    CSR    CURSOR                    RES    RESET         
  36. 36    '    DEL    DELETE                    RET    RETURN        
  37. 37    '    ERA    ERASE                     REV    REVERSE          
  38. 38    '    ESC    ESCAPE                    R    RIGHT         
  39. 39    '    FF    FORMFEED                  SCR    SCREEN        
  40. 40    '    GRF    GRAPH                     SPC    SPACE(S)      
  41. 41    '    HT    HORIZONTAL TAB            STD    STANDARD      
  42. 42    '    HOME    HOME                      TP    TOP          
  43. 43    '    INS    INSERT                    VT    VERTICAL TAB  
  44. 44    '    L    LEFT                      VID    VIDEO         
  45. 45    '    LF    LINEFEED                  WRT    WRITE                  
  46. 46    '    
  47. 47    '
  48. 48    '         ------ ADM-31 ASCII CONTROL CODES ------
  49. 49    '
  50. 50    '    ***************************************************************
  51. 51    '    FUNCTION NAME        STRING NAME        ASCII CODE
  52. 52    '    ***************************************************************
  53. 53    '
  54. 54    '    Bell
  55. 55                    BEL$        =    CHR$(7)
  56. 56    '
  57. 57    '    Back Space
  58. 58                    BS$        =    CHR$(8)
  59. 59    '
  60. 60    '    Horizontal Tab
  61. 61                    HT$         =    CHR$(9)
  62. 62    '
  63. 63    '    Line Feed
  64. 64                    LF$        =    CHR$(10)
  65. 65    '
  66. 66    '    Vertical Tab
  67. 67                    VT$        =    CHR$(11)
  68. 68    '
  69. 69    '    Form Feed
  70. 70                    FF$        =    CHR$(12)
  71. 71    '
  72. 72    '    Return
  73. 73                    RET$        =    CHR$(13)
  74. 74    '
  75. 75    '    Escape
  76. 76                    ESC$        =    CHR$(27)
  77. 77    '
  78. 78    '    Home
  79. 79                    HOME$        =    CHR$(30)
  80. 80    '
  81. 81    '    New Line
  82. 82                    NL$        =    CHR$(31)
  83. 83    '    Space
  84. 84                    SP$        =    CHR$(32)
  85. 85    '
  86. 86    '
  87. 87    '    ------ DYNAMIC VIDEO ATTRIBUTE CONTROL STRINGS ------
  88. 88    '    
  89. 89    '    ***************************************************************
  90. 90    '        FUNCTION NAME        STANDARD CHAR. GEN.     ALT. CHAR. GEN.
  91. 91    '    ***************************************************************
  92. 92    '    
  93. 93    '    Reset to Normal Video                          
  94. 94        RESSTDVID$    =    ESC$+"G"+"0"                          
  95. 95        RESALTVID$    =                ESC$+"G"+"0"
  96. 96    '                                      
  97. 97    '    Limited Grahics Mode Enable                      
  98. 98        ALTGRF$        =                ESC$+"G"+"8"
  99. 99    '
  100. 100    '    Blanking or Underlining of Area                           
  101. 101        BLASTD$        =    ESC$+"G"+"1"                  
  102. 102        BLAALT$        =                ESC$+"G"+"9"   
  103. 103    '                                      
  104. 104    '    Blinking of Area                          
  105. 105        BLISTD$        =    ESC$+"G"+"2"
  106. 106        BLIALT$        =                ESC$+"G"+"A"
  107. 107    '
  108. 108    '    Blanking or Underlining and Blinking of Area
  109. 109        BLABISTD$    =    ESC$+"G"+"3"
  110. 110        BLABIALT$    =                ESC$+"G"+"B"
  111. 111    '
  112. 112    '    Reversing of Area
  113. 113        REVSTD$        =    ESC$+"G"+"4"
  114. 114        REVALT$        =                ESC$+"G"+"C"
  115. 115    '
  116. 116    '    Blanking or Underlining and Reversing of Area
  117. 117        BLAREVSTD$    =    ESC$+"G"+"5"
  118. 118        BLAREVALT$    =                ESC$+"G"+"D"
  119. 119    '
  120. 120    '    Blinking and Reversing of Area
  121. 121        BLIREVSTD$    =    ESC$+"G"+"6"
  122. 122        BLIREVALT$    =                ESC$+"G"+"E"
  123. 123    '
  124. 124    '    Blanking or Underlining and Reversing of Area
  125. 125        BLAREVSTD$    =    ESC$+"G"+"7"
  126. 126        BLAREVALT$    =                ESC$+"G"+"F"
  127. 127    '
  128. 128    '    ------ DYNAMIC EDITING CONTROL STRINGS ------
  129. 129    '
  130. 130    '    ***************************************************************
  131. 131    '    OPERATION        HOW TO EXECUTE        DESCRIPTION
  132. 132    '    ***************************************************************
  133. 133    '    
  134. 134    '    Clear Screen                     Clears to SPACES
  135. 135        CLRSCRN$    =    ESC$+"+"
  136. 136    '    
  137. 137    '    Clear all to NULL
  138. 138        CLRNUL$        =    ESC$+"*"
  139. 139    '
  140. 140    '    Clear all to PROTECTED SPACES
  141. 141        CLRPRT$        =    ESC$+","
  142. 142    '
  143. 143    '    Set Insert Mode(ON/OFF)                 See page 4-18
  144. 144        INSMODON$    =    ESC$+"q"
  145. 145        INSMODOFF$    =    ESC$+"r"
  146. 146    '
  147. 147    '    Character Insert(SPACE)
  148. 148        CHRINS$        =    ESC$+"Q"
  149. 149    '
  150. 150    '    Character Delete
  151. 151        CHRDEL$        =    ESC$+"W"
  152. 152    '
  153. 153    '    Line Insert    
  154. 154        LININS$        =    ESC$+"E"
  155. 155    '
  156. 156    '    Line Delete
  157. 157        LINDEL$        =     ESC$+"R"
  158. 158    '
  159. 159    '    Line Erase
  160. 160        LINERA$        =    ESC$+"T"
  161. 161    '
  162. 162    '    Line Erase to NULLS
  163. 163        LINERANUL$    =    ESC$+"t"
  164. 164    '
  165. 165    '    Page Erase
  166. 166        PAGERA$        =    ESC$+"Y"
  167. 167    '
  168. 168    '    Page Erase to NULLS
  169. 169        PAGERANUL$    =    ESC$+"y"
  170. 170    '
  171. 171    '    Set Auto Page
  172. 172        SETAUTPAG$    =    ESC$+"v"
  173. 173    '    
  174. 174    '    Clear Auto Page
  175. 175        CLRAUTPAG$    =    ESC$+"w"
  176. 176    '
  177. 177    '    Page Back
  178. 178        PAGBAK$        =    ESC$+"J"
  179. 179    '
  180. 180    '    Page Forward
  181. 181        PAGFOR$        =    ESC$+"K"
  182. 182    '
  183. 183    '**********************************************************************
  184. 184    '
  185. 185    '    ------------- SCREEN ADDRESSES -------------
  186. 186    '
  187. 187    LHS%    =    1
  188. 188    RHS%    =    80
  189. 189    TOP%    =    1
  190. 190    BOTTOM%    =    24
  191. 191    '
  192. 192    '**********************************************************************
  193. 193    '
  194. 194    '    Definition of CURSOR LOAD Function. i.e. Pushing the Cursor
  195.                              Around Onscreen.
  196. 195        DEF FNCSRLD$(ROW%,COLUMN%) = ESC$+"="+CHR$(ROW%+31)
  197.                         +CHR$(COLUMN%+31)
  198. 196    '
  199. 197    '    Definition of CURSOR READ Function. i.e. Finding Where the
  200.         Cursor is On the Screen.
  201. 198        DEF FNCSRRD$(ROW%,COLUMN%) = ESC$+"?"+CHR$(ROW%+31)
  202.                            +CHR$(COLUMN%+31)
  203. 199    '
  204. 200    '            
  205. 201    '    ------  FORMAT CONTROL OPERATION STRINGS ------
  206. 202    '
  207. 203    '    ***************************************************************
  208. 204    '
  209. 205    '    ***************************************************************
  210. 206    '
  211. 207    '    Program Mode On
  212. 208        PGMON$    =    ESC$+"U"
  213. 209    '
  214. 210    '    Program Mode Off
  215. 211        PGMOFF$    =    ESC$+"X"
  216. 212    '
  217. 213    '    Write Protect Mode On
  218. 214        WRTPRTON$    =    ESC$+")"
  219. 215    '
  220. 216    '    Write Protect Mode Off
  221. 217        WRTPRTOFF$    =    ESC$+"("
  222. 218    '
  223. 219    '    Protect Mode On
  224. 220        PRTON$    =    ESC$+"&"
  225. 221    '
  226. 222    '    Protect Mode Off
  227. 223        PRTOFF$    =    ESC$+"'"
  228. 224    '
  229. 225    '    Terminal Reset
  230. 226        TERMRESET$    =    ESC$+"o"+"!"
  231. 1000    '**********************************************************************
  232. 1001    '
  233. 1002    '            THE CLOCK PROGRAM
  234. 1003    '            -----------------
  235. 1004    '    BY: Richard Berthet
  236. 1005    '         15/5 Cottonwood Cr.
  237. 1006    '        North Ryde. 2113.
  238. 1007    '        W:(02)-923-4801    H:(02)-88-1640.
  239. 1008    '    Thanks to Bill Bolton for the SYSTEM SUPPORT 1 CLOCK ROUTINES.
  240. 1009    '
  241. 1010    DIM DIGIT$(10,6),TOD(5),DOY(5),LASTIME%(5),COLOFFSET%(6)
  242. 1020    '
  243. 1030    FOR DIGIT% = 0 TO 9
  244. 1040        FOR SEG% = 1 TO 6
  245. 1050            READ DIGIT$(DIGIT%,SEG%) 
  246. 1060        NEXT SEG%
  247. 1070    NEXT DIGIT%
  248. 1080    '
  249. 1090    '----------------------------------------------------------------------
  250. 1100    PRINT CLRSCRN$
  251. 1110    PRINTLINE$    = "------- THE CLOCK PROGRAM -------"
  252. 1120    GOSUB 2450    '[2] CENTRE LINE
  253. 1130    PRINT FNCSRLD$(TOP%,LINECOL%);
  254.     PRINTLINE$
  255. 1150    PRINT FNCSRLD$(TOP%+9,LHS%);
  256. 1160    INPUT "Do you want the BELL on(Y/N)?. Just remember it'll probably drive you mad.";BEEP$
  257. 1170    '----------------------------------------------------------------------
  258. 1180    '
  259. 1190    '        Column Offsets for the Digits.
  260. 1200    '
  261. 1210    COLOFFSET%(0)    =    RHS%-21            'SECONDS UNITS
  262. 1220    COLOFFSET%(1)    =    COLOFFSET%(0)-7        'SECONDS TENS
  263. 1230    COLOFFSET%(2)    =    COLOFFSET%(0)-18    'MINUTES UNITS
  264. 1240    COLOFFSET%(3)    =    COLOFFSET%(0)-25    'MINUTES TENS
  265. 1250    COLOFFSET%(4)    =    COLOFFSET%(0)-36    'HOURS   UNITS
  266. 1260    COLOFFSET%(5)    =    COLOFFSET%(0)-43    'HOURS   TENS
  267. 1270    '
  268. 1280    STARTROW%    = TOP%+8            '1st  of DIGIT ROWS
  269. 1290    '
  270. 1300    '----------------------------------------------------------------------
  271. 1310    IF BEEP$ <> "Y" THEN BEL$ = CHR$(0)
  272. 1320    PRINT CLRSCRN$
  273. 1330    PRINT FNCSRLD$(TOP%,10);"THE 0/28 ENGINEERING TIME IS............."
  274. 1340    PRINTLINE$    = "CONTROL C to ESCAPE"
  275. 1350    GOSUB 2450    '[2] CENTRE LINE
  276. 1360    PRINT FNCSRLD$(BOTTOM%-1,LINECOL%)
  277.     PRINTLINE$
  278. 1370    GOSUB 1890
  279. 1380    '----------------------------------------------------------------------
  280. 1390    '        DRAW THE SURROUND BOX
  281. 1400    PRINT WRTPRTON$;
  282. 1410    START%    = COLOFFSET%(5)-1
  283. 1420    FINISH%    = COLOFFSET%(0)+6
  284. 1430    FOR LOOP%    = START% TO FINISH%
  285. 1440        PRINT FNCSRLD$(STARTROW%-1,LOOP%);
  286.         "-";
  287. 1450        PRINT FNCSRLD$(STARTROW%+8,LOOP%);
  288.         "-";
  289. 1460    NEXT LOOP%
  290. 1470    FOR LOOP%    = (STARTROW%+1) TO (STARTROW%+6)
  291. 1480        COUNTER%    = COLOFFSET%(5)-3
  292. 1490        FOR LOOP2%    = 1 TO 4
  293. 1500            PRINT FNCSRLD$(LOOP%,COUNTER%);
  294.             "|";
  295. 1510            COUNTER%    = COUNTER%+18
  296. 1520        NEXT LOOP2%
  297. 1530    NEXT LOOP%
  298. 1540    PRINT WRTPRTOFF$
  299. 1550    '----------------------------------------------------------------------
  300. 1560    CHANGE%    = 0
  301. 1570    FOR DISPLAY%    = 1 TO 6
  302. 1580        GOSUB 2530    '[3] PRINT DIGIT  
  303. 1590        CHANGE%    = CHANGE%+1
  304. 1600        '
  305. 1610    NEXT DISPLAY%
  306. 1620    FOREVER = 1
  307. 1630    WHILE FOREVER
  308. 1640        K$ = INKEY$
  309. 1650        IF K$ = CHR$(3)
  310.              THEN
  311.                  FOREVER = 0
  312. 1660        GOSUB 1890
  313. 1670        '
  314. 1680        CHANGE%    = 0
  315. 1690        GOSUB 2530    '[3] PRINT DIGIT
  316. 1700        FOR LOOP%    = 1 TO 5
  317. 1710            '
  318. 1720            IF TOD(LOOP%)    = LASTIME%(LOOP%)
  319.                 THEN
  320.                     1750
  321. 1730            CHANGE%    = LOOP%
  322. 1740            GOSUB 2530    '[3] PRINT DIGIT
  323. 1750        NEXT LOOP%
  324. 1760        PRINT BEL$+HOME$
  325. 1770        OUT CMDPORT,(&H10)    'SET UP FOR CLOCK READ OF SECONDS
  326. 1780        WHILE TOD(0) = INP(DATAPORT)
  327. 1790        WEND            'LOOP UNTIL SECONDS CHANGE
  328. 1800        FOR LOOP%    = 1 TO 5
  329. 1810            LASTIME%(LOOP%)    = TOD(LOOP%)
  330. 1820        NEXT LOOP%
  331. 1830    WEND
  332. 1840    PRINTLINE$    = "Exiting to CP/M"
  333. 1850    GOSUB 2450    '[2] CENTRE LINE
  334. 1860    PRINT FNCSRLD$(BOTTOM%-1,LHS%);
  335.     LINERA$
  336. 1870    PRINT FNCSRLD$(BOTTOM%-1,LINECOL%);
  337.     PRINTLINE$
  338. 1880    END
  339. 1890 '******************************************************************
  340. 1900 '*                                *
  341. 1910 '*    SYSTEM SUPPORT 1 BOARD CLOCK SUBROUTINES        *
  342. 1920 '*    BY BILL BOLTON                        *
  343. 1930 '*    VERSION 1.0    JAN 17,1982    INITIAL RELEASE        *
  344. 1940 '*                                *
  345. 1950 '*        VARIABLES USED IN THESE ROUTINES        *
  346. 1960 '*        IN APPROXIMATE ORDER OF APPEARANCE        *
  347. 1970 '*                                *
  348. 1980 '*TOD        STORAGE ARRAY FOR TIME OF DAY (TOD) DIGITS    *
  349. 1990 '*DOY        STORAGE ARRAY FOR DAY OF YEAR (DOY) DIGITS    *
  350. 2000 '*BASEPORT    SYSTEM SUPPORT 1 BOARD BASE PORT ADDRESS    *
  351. 2010 '*CMDPORT        SS1 CLOCK COMMAND PORT ADDRESS            *
  352. 2020 '*DATAPORT    SS1 CLOCK DATA PORT ADDRESS            *
  353. 2030 '*HOURS10        TENS OF HOURS DIGIT                *
  354. 2040 '*HOURS1        UNIT HOURS DIGIT                *
  355. 2050 '*MINUTES10    TENS OF MINUTES DIGIT                *
  356. 2060 '*MINUTES1    UNIT MINUTES DIGIT                *
  357. 2070 '*SECONDS10    TENS OF SECONDS DIGIT                *
  358. 2080 '*SECONDS1    UNIT SECONDS DIGIT                *
  359. 2090 '*TIME$        TIME OF DAY STRING IN HH:MM:SS FORMAT        *
  360. 2100 '*WEEKDAY        DAY OF WEEK DIGIT                *
  361. 2110 '*WDAY$        DAY OF WEEK NAME STRING                *
  362. 2120 '*YEAR        YEAR INTEGER                    *
  363. 2130 '*MONTH10        TENS OF MONTHS DIGIT                *
  364. 2140 '*MONTH1        UNIT MONTHS DIGIT                *
  365. 2150 '*DAY10        TENS OF DAYS DIGIT                *
  366. 2160 '*DAY1        UNIT DAYS DIGIT                    *
  367. 2170 '*DATE1$        DATE STRING IN DD/MM/YY FORMAT            *
  368. 2180 '*MONTH        MONTH INTEGER                    *
  369. 2190 '*DATE2$        DATE STRING IN MONTH DD,19YY FORMAT        *
  370. 2200 '*TDAY$        TEMPORARY DAY STRING                *
  371. 2210 '*                                *
  372. 2220 '*        ###### NOTE ######                *
  373. 2230 '*                                *
  374. 2240 '* THE FOLLOWING ARRAYS MUST BE DIMENSIONED IN THE MAIN BODY    *
  375. 2250 '* THE PROGRAM CALLING THESE SUBROUTINES                *
  376. 2260 '*                                *
  377. 2270 '* DIM TOD(5)                            *
  378. 2280 '* DIM DOY(5)                            *
  379. 2290 '*                                *
  380. 2300 '******************************************************************
  381. 2310 BASEPORT = &H50
  382. 2320 CMDPORT = BASEPORT + 10
  383. 2330 DATAPORT = CMDPORT + 1
  384. 2340 '**********************************************************
  385. 2350 '*        READ THE TIME DIGITS            *
  386. 2360 '**********************************************************
  387. 2370 FOR DIGIT = 5 TO 0 STEP -1
  388. 2380    OUT CMDPORT,(&H10 + DIGIT)
  389. 2390    TOD(DIGIT) = INP(DATAPORT)
  390. 2400    IF DIGIT = 5 THEN TOD(DIGIT) = TOD(DIGIT) AND 3
  391. 2410 NEXT DIGIT
  392. 2420 RETURN
  393. 2430    '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  394. 2440    '
  395. 2450    '    Subroutine [2]: LINE CENTERING
  396. 2460    '
  397. 2470    NUMOFCHAR%    = LEN(PRINTLINE$)
  398. 2480    LINECOL%    = (RHS%-NUMOFCHAR%)/2
  399. 2490    RETURN
  400. 2500    '
  401. 2510    '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  402. 2520    '
  403. 2530    '    Subroutine [3]: PRINT DIGIT
  404. 2540    '
  405. 2550    '
  406. 2560    FOR SEG%    = 1 TO 6
  407. 2570        PRINT FNCSRLD$(STARTROW%+SEG%,COLOFFSET%(CHANGE%));
  408.             DIGIT$(TOD(CHANGE%),SEG%);
  409. 2580    NEXT SEG%
  410. 2590    PRINT HOME$
  411. 2600    RETURN
  412. 2610    '
  413. 2620    '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  414. 2630    DATA " ***  "
  415. 2640    DATA "*   * "
  416. 2650    DATA "*   * "
  417. 2660    DATA "*   * "
  418. 2670    DATA "*   * "
  419. 2680    DATA " ***  "
  420. 2690    '
  421. 2700    DATA "   *  "
  422. 2710    DATA "  **  "
  423. 2720    DATA "   *  "
  424. 2730    DATA "   *  "
  425. 2740    DATA "   *  "
  426. 2750    DATA "  *** "
  427. 2760    '
  428. 2770    DATA " ***  "
  429. 2780    DATA "*   * "
  430. 2790    DATA "   *  "
  431. 2800    DATA "  *   "
  432. 2810    DATA " *    "
  433. 2820    DATA "***** "
  434. 2830    '
  435. 2840    DATA "****  "
  436. 2850    DATA "    * "
  437. 2860    DATA "  **  "
  438. 2870    DATA "    * "
  439. 2880    DATA "*   * "
  440. 2890    DATA " ***  "
  441. 2900    '
  442. 2910    DATA "   *  "
  443. 2920    DATA "  **  "
  444. 2930    DATA " * *  "
  445. 2940    DATA "*  *  "
  446. 2950    DATA "***** "
  447. 2960    DATA "   *  "
  448. 2970    '
  449. 2980    DATA "***** "
  450. 2990    DATA "*     "
  451. 3000    DATA "****  "
  452. 3010    DATA "    * "
  453. 3020    DATA "    * "
  454. 3030    DATA "****  "
  455. 3040    '            
  456. 3050    DATA " ***  "
  457. 3060    DATA "*     "
  458. 3070    DATA "****  "
  459. 3080    DATA "*   * "
  460. 3090    DATA "*   * "
  461. 3100    DATA " ***  "
  462. 3110    '
  463. 3120    DATA "***** "
  464. 3130    DATA "    * "
  465. 3140    DATA "   *  "
  466. 3150   DATA "  *   "
  467. 3160   DATA " *    "
  468. 3170   DATA " *    "
  469. 3180    '
  470. 3190   DATA " ***  "             
  471. 3200   DATA "*   * "             
  472. 3210   DATA " ***  "             
  473. 3220    DATA "*   * "             
  474. 3230   DATA "*   * "             
  475. 3240   DATA " ***  "
  476. 3250    '             
  477. 3260   DATA " ***  "             
  478. 3270   DATA "*   * "             
  479. 3280   DATA " **** "             
  480. 3290   DATA "    * "             
  481. 3300   DATA "*   * "             
  482. 3310   DATA " ***  "
  483. 3320    '
  484. 3330    '**********************************************************************
  485. 3340    END
  486.