home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / DATABASE / KEEPTRAK.LBR / K-TMAKE.BZS / K-TMAKE.BAS
BASIC Source File  |  2000-06-30  |  15KB  |  345 lines

  1. 10  ' **********************************************
  2. 20  ' **********************************************
  3. 30  ' ***               K-TMAKE                  ***
  4. 40  ' ***  PART OF A CLUB MEMBERSHIP FILING     ***
  5. 50  ' ***       SYSTEM CALLED KEEP-TRAK         ***
  6. 60  ' ***                     ***
  7. 70  ' ***                                        ***
  8. 80  ' *** WRITTEN IN MICROSOFT BASIC-80 REV.5.21 ***
  9. 90  ' ***                                        ***
  10. 100 ' *** (C) COPYRIGHT 1983 BY HARVEY G. LORD   ***
  11. 110 ' ***                                        ***
  12. 120 ' ***  DO NOT ATTEMPT TO RUN THIS PROGRAM    ***
  13. 130 ' ***  ALONE. IT IS CHAINED FROM K-T MENU.   ***
  14. 140 ' **********************************************
  15. 150 ' **********************************************
  16. 160 '
  17. 170 ON ERROR GOTO 20000                ' Error traps (Ch. 10)
  18. 180 COMMON CL$,RECORDTOTAL            ' Pass variables to programs (Ch. 11)
  19. 190 DIM MEMBER$(8)                ' Dimension MEMBER$ array (Ch. 12)
  20. 200 ' Define cursor control (Ch. 8)
  21. 210 DEF FNCUR$(V,H) = CHR$(27)+CHR$(61)+CHR$(32+V)+CHR$(32+H)
  22. 220 DEF FNBIN$ = CHR$(27)+CHR$(41)         ' Define begin lowered intensity (Ch. 8)
  23. 230 DEF FNNIN$ = CHR$(27)+CHR$(40)         ' Define end lowered intensity   (Ch. 8)
  24. 240 DEF FNCLLN$ = CHR$(27) + CHR$(84)         ' Define clear line from cursor (Ch. 8)
  25. 250 '
  26. 260 '
  27. 270 '
  28. 280 '
  29. 290 '
  30. 300 ' Check for B:K-T.LST's existence.  If it's not there, to error trap;
  31. 310 OPEN "I",#1,"B:K-T.LST"            '  if it is there, give opportunity
  32. 320 '                             to add to it or erase it. (Ch. 10)
  33. 330 '
  34. 340 '
  35. 350 '
  36. 360 '
  37. 370 ' Lines 380-670 are executed ONLY if B:K-T.LST already exists.
  38. 380 CLOSE#1
  39. 390 PRINT CL$                    ' Clear screen (Ch. 7)
  40. 400 PRINT TAB(15);"***     NOTE     ***"
  41. 410 PRINT
  42. 420 PRINT "The club list on the B: disk includes";RECORDTOTAL;"members."
  43. 430 PRINT
  44. 440 PRINT "WARNING: creating a new membership list erases the"
  45. 450 PRINT "old one.   Be *SURE* you don't need the list on B:"
  46. 460 PRINT "before wiping it out."
  47. 470 PRINT
  48. 480 PRINT TAB(10);"A - Add  to  existing  club list"
  49. 490 PRINT TAB(10);"K - Kill old list & make new one"
  50. 500 PRINT TAB(10);"R - Return to MAIN MENU"
  51. 510 PRINT:PRINT                    ' 2 blank lines
  52. 520 PRINT TAB(5);"Please choose A(dd), K(ill), or R(eturn)."
  53. 530 CHOICE$ = INKEY$:IF CHOICE$ = "" THEN 530    ' Wait for keypress (Ch 7)
  54. 540 IF CHOICE$ = "A" OR CHOICE$ = "a" THEN PRINT:PRINT TAB(7);"Saving membership list.  Please wait.":GOTO 1000        ' Add new members
  55. 550 IF CHOICE$ = "K" OR CHOICE$ = "k" THEN 2000        ' Make new list
  56. 560 IF CHOICE$ = "R" OR CHOICE$ = "r" THEN 1270        ' To K-TMENU, line 270 (Ch. 11)
  57. 570 '
  58. 580 ' Catch illegal menu choices
  59. 590 '
  60. 600 PRINT CHR$(7)                ' Beeper (Ch. 10)
  61. 610 FOR COUNT = 1 TO 3                ' Blink "Please choose" (Ch. 8)
  62. 620    PRINT FNCUR$(14,4);FNCLLN$        ' Clear line (line indentation Ch. 11)
  63. 630    FOR PAUSE = 1 TO 100:NEXT PAUSE        ' Count to 100 silently (Ch. 8)
  64. 640    PRINT FNCUR$(14,9);"Please choose 'A', 'K', or 'R'."
  65. 650    FOR PAUSE = 1 TO 100:NEXT PAUSE        ' Count to 100 silently (Ch. 8)
  66. 660 NEXT COUNT                
  67. 670 GOTO 530                    ' Try for correct choice
  68. 680 '
  69. 690 '
  70. 700 '
  71. 710 '
  72. 720 '
  73. 1000 ' Add new records to existing list (Ch. 4)
  74. 1010 '
  75. 1020 OPEN "I",#1,"B:K-T.LST"            ' OPEN B:K-T.LST for reading (Ch. 4)
  76. 1030 OPEN "O",#2,"B:COPY"            ' OPEN B:COPY for writing (Ch. 4)
  77. 1040 IF EOF(1) THEN CLOSE#1:GOTO 1140        ' Check for end-of-file
  78. 1050 ' ENTRY is the MEMBER$ array subscript (Ch. 12)
  79. 1060 FOR ENTRY = 1 TO 8                ' Get next record from the file (Ch. 12)
  80. 1070    INPUT#1,MEMBER$(ENTRY)
  81. 1080 NEXT ENTRY
  82. 1090 FOR ENTRY = 1 TO 7                ' Place record in file (Ch. 12)
  83. 1100    PRINT#2,MEMBER$(ENTRY);",";
  84. 1110 NEXT ENTRY
  85. 1120 PRINT#2,MEMBER$(8)                ' Last field is NOT followed by a comma (Ch. 12)
  86. 1130 GOTO 1040                    ' Loop back for next record
  87. 1140 KILL "B:K-T.LST"                ' Erase B:K-T.LST (Ch. 4)
  88. 1150 PRINT CL$                    ' Clear screen (Ch. 7)
  89. 1160 PRINT TAB(5);"**  Adding to existing membership list  **"
  90. 1170 GOSUB 3000                    ' Display entry screen prompts
  91. 1180 GOSUB 4000                    ' INPUTs & corrections
  92. 1190 FOR ENTRY = 1 TO 7                ' Place record in file (Ch. 12)
  93. 1200    PRINT#2,MEMBER$(ENTRY);",";
  94. 1210 NEXT ENTRY
  95. 1220 PRINT#2,MEMBER$(8)                ' Last field is NOT followed by a comma (Ch. 12)
  96. 1230 IF CORRECTIONS$ = "X" OR CORRECTIONS$ = "x" THEN 1250
  97. 1240 GOTO 1150                    ' Loop back for next record
  98. 1250 CLOSE#2                    ' CLOSE B:COPY
  99. 1260 NAME "B:COPY" AS "B:K-T.LST"        ' Rename B:COPY to B:K-T.LST
  100. 1270 PRINT:PRINT                ' 2 blank lines
  101. 1280 PRINT TAB(8);"Please wait.  Returning to MAIN MENU."
  102. 1290 CHAIN "K-TMENU",250            ' To K-TMENU, line 270 (Ch. 11)
  103. 1300 '
  104. 1310 '
  105. 1320 '
  106. 1330 '
  107. 1340 '
  108. 2000 ' Create new membership list file (Ch. 2)
  109. 2010 '
  110. 2020 OPEN "O",#1,"B:K-T.LST"            ' OPEN B:K-T.LST for writing
  111. 2030 PRINT CL$                    ' Clear screen (Ch. 7)
  112. 2040 PRINT TAB(9);"**  Creating new membership list  **"
  113. 2050 GOSUB 3000                    ' Display entry screen prompts
  114. 2060 GOSUB 4000                    ' INPUTs & corrections
  115. 2070 FOR ENTRY = 1 TO 7                ' Place record in file (Ch. 12)
  116. 2080    PRINT#1,MEMBER$(ENTRY);",";
  117. 2090 NEXT ENTRY
  118. 2100 PRINT#1,MEMBER$(8)                ' Last field is NOT followed by a comma (Ch. 12)
  119. 2110 IF CORRECTIONS$ = "X" OR CORRECTIONS$ = "x" THEN 2130
  120. 2120 GOTO 2030                    ' Loop back for next record
  121. 2130 CLOSE#1
  122. 2140 GOTO 1270                    ' To K-TMENU, line 270 (Ch. 11)
  123. 2150 '
  124. 2160 '
  125. 2170 '
  126. 2180 '
  127. 2190 '
  128. 3000 ' SUBROUTINE ** KEEP-TRAK Entry Screen (Ch. 8)
  129. 3010 '
  130. 3020 PRINT
  131. 3030 PRINT "* Enter information as requested, then press RETURN."
  132. 3040 PRINT "* At the end,  opportunity  exists  for corrections."
  133. 3050 PRINT "* If information is not available, press RETURN."
  134. 3060 PRINT
  135. 3070 PRINT "   WARNING:  NEVER USE COMMAS OR QUOTATION MARKS."
  136. 3080 PRINT "           IF NECESSARY, USE DASHES (-)."
  137. 3090 PRINT
  138. 3100 PRINT "****************************************************"
  139. 3110 PRINT FNBIN$;                ' Begin Lowered Intensity (Ch. 8)
  140. 3120 PRINT "1 - First Name"
  141. 3130 PRINT "2 - Last Name"
  142. 3140 PRINT "3 - Street Address"
  143. 3150 PRINT "4 - City"
  144. 3160 PRINT "5 - State"
  145. 3170 PRINT "6 - Zip Code"
  146. 3180 PRINT "7 - Telephone No."
  147. 3190 PRINT "8 - Amount Paid    $"
  148. 3200 PRINT FNNIN$                ' End Lowered Intensity (Ch. 8)
  149. 3210 RETURN                    ' End of subroutine (Ch. 5)
  150. 3220 '
  151. 3230 '
  152. 3240 '
  153. 3250 '
  154. 3260 '
  155. 4000 ' SUBROUTINE ** Editing INPUTs (Ch. 12 for array version)
  156. 4010 '
  157. 4020 CORRECTIONS$ = "0"                ' Set variable to 0 to start
  158. 4030 FOR ENTRY = 1 TO 8                ' Loop through all INPUTS (Ch. 12)
  159. 4040    PRINT FNCUR$(10+ENTRY,20);FNCLLN$    ' Clear line (Ch. 8 & 10)
  160. 4050    PRINT FNCUR$(10+ENTRY,20);:LINE INPUT;MEMBER$(ENTRY)
  161. 4060    ON ENTRY GOSUB 5000,5000,6000,5000,5000,7000,7000,8000:IF ILLEGAL = 1 THEN 4040 ' Catch illegal entry (Ch. 10)
  162. 4070    IF VAL(CORRECTIONS$) > 0 THEN 4230     ' If correction, ignore other INPUTs
  163. 4080 NEXT ENTRY
  164. 4090 '
  165. 4100 ' Opportunity for correcting erroneous entries
  166. 4110 '
  167. 4120 PRINT FNCUR$(20,3);"1-8 = Edit      9 = Save entries & continue"
  168. 4130 PRINT FNCUR$(21,3);"X = No further entries, return to MAIN MENU
  169. 4140 PRINT FNCUR$(22,9);"Please choose by number or X."
  170. 4150 CORRECTIONS$ = INKEY$:IF CORRECTIONS$ = "" THEN 4150
  171. 4160 IF CORRECTIONS$ = "X" OR CORRECTIONS$ = "x" OR VAL(CORRECTIONS$) = 9 THEN RETURN
  172. 4170 IF VAL(CORRECTIONS$) > 0 AND VAL(CORRECTIONS$) < 9 THEN ENTRY = VAL(CORRECTIONS$):GOTO 4040 ' Ch. 12
  173. 4180 '
  174. 4190 '
  175. 4200 ' Catch illegal choices
  176. 4210 '
  177. 4220 PRINT CHR$(7);                ' Beeper (Ch. 10)
  178. 4230 FOR COUNT = 1 TO 3                ' Blink "Please choose" (Ch. 8)
  179. 4240    PRINT FNCUR$(22,9);FNCLLN$        ' Clear line (line indentation Ch. 11)
  180. 4250    FOR PAUSE = 1 TO 100:NEXT PAUSE        ' Count to 100 silently (Ch. 7)
  181. 4260    PRINT FNCUR$(22,9);"Please choose by number or X."
  182. 4270    FOR PAUSE = 1 TO 100:NEXT PAUSE        ' Count to 100 silently (Ch. 7)
  183. 4280 NEXT COUNT
  184. 4290 GOTO 4150                    ' Try for correct choice
  185. 4300 '
  186. 4310 '
  187. 4320 '
  188. 4330 '
  189. 4340 '
  190. 5000 ' SUBROUTINE ** Prevent illegal first name, last name, city, & state entries (Chs. 10 & 12)
  191. 5010 '
  192. 5020 ILLEGAL = 0                ' No illegal entries yet, checking
  193. 5030 IF MEMBER$(ENTRY) = "" THEN MEMBER$(ENTRY) = "N/A":GOTO 5220
  194. 5040 FOR CHECK = 1 TO LEN(MEMBER$(ENTRY))    ' Legal entries on next line
  195. 5050    IF ASC(MID$(MEMBER$(ENTRY),CHECK,1)) >= 65 AND ASC(MID$(MEMBER$(ENTRY),CHECK,1)) <= 90 THEN 5210 ' A through Z
  196. 5060    IF ASC(MID$(MEMBER$(ENTRY),CHECK,1)) >= 97 AND ASC(MID$(MEMBER$(ENTRY),CHECK,1)) <= 122 THEN 5210 ' a through z
  197. 5070    IF ASC(MID$(MEMBER$(ENTRY),CHECK,1)) = 32 OR ASC(MID$(MEMBER$(ENTRY),CHECK,1)) = 38 OR ASC(MID$(MEMBER$(ENTRY),CHECK,1)) = 39 THEN 5210 ' Space, apostrophe, & ampersand
  198. 5080    IF ASC(MID$(MEMBER$(ENTRY),CHECK,1)) >= 45 AND ASC(MID$(MEMBER$(ENTRY),CHECK,1)) <= 46 THEN 5210 ' Dash & period
  199. 5090    ILLEGAL = 1                ' Illegal entry found
  200. 5100    PRINT CHR$(7)                ' Beep (Ch. 10)
  201. 5110    PRINT FNCUR$(3,0);FNCLLN$        ' Clear third line from top
  202. 5120    PRINT FNCUR$(5,0);FNCLLN$        ' Clear fifth line from top
  203. 5130    FOR COUNT = 1 TO 3            ' Blink error message
  204. 5140       PRINT FNCUR$(4,0);FNCLLN$        ' Clear fourth line from top
  205. 5150       FOR PAUSE = 1 TO 100:NEXT PAUSE     ' Count to 100 silently (Ch. 7)
  206. 5160       PRINT FNCUR$(4,20);"Illegal Entry!"
  207. 5170       FOR PAUSE = 1 TO 100:NEXT PAUSE     ' Count to 100 silently (Ch. 7)
  208. 5180    NEXT COUNT
  209. 5190    PRINT FNCUR$(5,8);"Please re-enter without punctuation."
  210. 5200    RETURN
  211. 5210 NEXT CHECK
  212. 5220 GOSUB 9000                    ' Replace INPUT instructions
  213. 5230 RETURN
  214. 5240 '
  215. 5250 '
  216. 5260 '
  217. 5270 '
  218. 5280 '
  219. 6000 ' SUBROUTINE ** Prevent illegal street address entries (Chs. 10 & 12)
  220. 6010 '
  221. 6020 ILLEGAL = 0                ' No illegal entries yet, checking
  222. 6030 IF MEMBER$(ENTRY) = "" THEN MEMBER$(ENTRY) = "N/A":GOTO 6200
  223. 6040 FOR CHECK = 1 TO LEN(MEMBER$(ENTRY))    ' Legal entries on next line
  224. 6050    IF ASC(MID$(MEMBER$(ENTRY),CHECK,1)) >= 45 AND ASC(MID$(MEMBER$(ENTRY),CHECK,1)) <= 122 THEN 6190 ' All numbers, letters, period, & dash
  225. 6060    IF ASC(MID$(MEMBER$(ENTRY),CHECK,1)) = 32 OR ASC(MID$(MEMBER$(ENTRY),CHECK,1)) = 35 OR ASC(MID$(MEMBER$(ENTRY),CHECK,1)) = 39 THEN 6190 ' Space, hash mark, & apostrophe
  226. 6070    ILLEGAL = 1                ' Illegal entry found
  227. 6080    PRINT CHR$(7)                ' Beep (Ch. 10)
  228. 6090    PRINT FNCUR$(3,0);FNCLLN$        ' Clear third line from top
  229. 6100    PRINT FNCUR$(5,0);FNCLLN$        ' Clear fifth line from top
  230. 6110    FOR COUNT = 1 TO 3            ' Blink error message
  231. 6120       PRINT FNCUR$(4,0);FNCLLN$        ' Clear fourth line from top
  232. 6130       FOR PAUSE = 1 TO 100:NEXT PAUSE     ' Count to 100 silently (Ch. 7)
  233. 6140       PRINT FNCUR$(4,20);"Illegal Entry!"
  234. 6150       FOR PAUSE = 1 TO 100:NEXT PAUSE     ' Count to 100 silently (Ch. 7)
  235. 6160    NEXT COUNT
  236. 6170    PRINT FNCUR$(5,8);"Please re-enter without punctuation."
  237. 6180    RETURN
  238. 6190 NEXT CHECK
  239. 6200 GOSUB 9000                    ' Replace INPUT instructions
  240. 6210 RETURN
  241. 6220 '
  242. 6230 '
  243. 6240 '
  244. 6250 '
  245. 6260 '
  246. 7000 ' SUBROUTINE ** Prevent illegal phone # & ZIP code entries (Chs. 10 & 12)
  247. 7010 '
  248. 7020 ILLEGAL = 0                ' No illegal entries yet, checking
  249. 7030 IF MEMBER$(ENTRY) = "" THEN MEMBER$(ENTRY) = "N/A":GOTO 7190
  250. 7040 FOR CHECK = 1 TO LEN(MEMBER$(ENTRY))    ' Legal entries on next line
  251. 7050    IF ASC(MID$(MEMBER$(ENTRY),CHECK,1)) >= 48 AND ASC(MID$(MEMBER$(ENTRY),CHECK,1)) <= 57 OR ASC(MID$(MEMBER$(ENTRY),CHECK,1)) = 45 THEN 7180 ' Digits & dash
  252. 7060    ILLEGAL = 1                ' Illegal entry found
  253. 7070    PRINT CHR$(7)                ' Beep (Ch. 10)
  254. 7080    PRINT FNCUR$(3,0);FNCLLN$        ' Clear third line from top
  255. 7090    PRINT FNCUR$(5,0);FNCLLN$        ' Clear fifth line from top
  256. 7100    FOR COUNT = 1 TO 3            ' Blink error message
  257. 7110       PRINT FNCUR$(4,0);FNCLLN$        ' Clear fourth line from top
  258. 7120       FOR PAUSE = 1 TO 100:NEXT PAUSE     ' Count to 100 silently (Ch. 7)
  259. 7130       PRINT FNCUR$(4,20);"Illegal Entry!"
  260. 7140       FOR PAUSE = 1 TO 100:NEXT PAUSE     ' Count to 100 silently (Ch. 7)
  261. 7150    NEXT COUNT
  262. 7160    PRINT FNCUR$(5,4);"Please re-enter with digits and dashes only."
  263. 7170    RETURN
  264. 7180 NEXT CHECK
  265. 7190 GOSUB 9000                    ' Replace INPUT instructions
  266. 7200 RETURN
  267. 7210 '
  268. 7220 '
  269. 7230 '
  270. 7240 '
  271. 7250 '
  272. 8000 ' SUBROUTINE ** Prevent illegal dues payment entries (Chs. 10 & 12)
  273. 8010 '
  274. 8020 ILLEGAL = 0                ' No illegal entries yet, checking
  275. 8030 IF MEMBER$(ENTRY) = "" THEN MEMBER$(ENTRY) = "0":GOTO 8190
  276. 8040 FOR CHECK = 1 TO LEN(MEMBER$(ENTRY))    ' Legal entries on next line
  277. 8050    IF ASC(MID$(MEMBER$(ENTRY),CHECK,1)) >= 48 AND ASC(MID$(MEMBER$(ENTRY),CHECK,1)) <= 57 OR ASC(MID$(MEMBER$(ENTRY),CHECK,1)) = 46 THEN 8180 ' Digits & period (decimal pt.)
  278. 8060    ILLEGAL = 1                ' Illegal entry found
  279. 8070    PRINT CHR$(7)                ' Beep (Ch. 10)
  280. 8080    PRINT FNCUR$(3,0);FNCLLN$        ' Clear third line from top
  281. 8090    PRINT FNCUR$(5,0);FNCLLN$        ' Clear fifth line from top
  282. 8100    FOR COUNT = 1 TO 3            ' Blink error message
  283. 8110       PRINT FNCUR$(4,0);FNCLLN$        ' Clear fourth line from top
  284. 8120       FOR PAUSE = 1 TO 100:NEXT PAUSE     ' Count to 100 silently (Ch. 7)
  285. 8130       PRINT FNCUR$(4,20);"Illegal Entry!"
  286. 8140       FOR PAUSE = 1 TO 100:NEXT PAUSE     ' Count to 100 silently (Ch. 7)
  287. 8150    NEXT COUNT
  288. 8160       PRINT FNCUR$(5,2);"Please re-enter:  Digits (& decimal pt) only."
  289. 8170    RETURN
  290. 8180 NEXT CHECK
  291. 8190 GOSUB 9000                    ' Replace INPUT instructions
  292. 8200 RETURN
  293. 8210 '
  294. 8220 '
  295. 8230 '
  296. 8240 '
  297. 8250 '
  298. 9000 ' SUBROUTINE ** Replace INPUT instructions if correct INPUT
  299. 9010 '
  300. 9020 PRINT FNCUR$(3,0);"* Enter information as requested, then press RETURN."
  301. 9030 PRINT "* At the end,  opportunity  exists  for corrections."
  302. 9040 PRINT "* If information is not available, press RETURN."
  303. 9050 RETURN
  304. 9060 '
  305. 9070 '
  306. 9080 '
  307. 9090 '
  308. 9100 '
  309. 20000 ' **  Error Traps ** (Ch. 10)
  310. 20010 '
  311. 20020 ' Trap "File not found" in line 310 (Ch. 10)
  312. 20030 '
  313. 20040 IF ERR <> 53 AND ERL <> 310 THEN 20170
  314. 20050 ' Line 20110 executes only if "File not found" in line 260.
  315. 20060 '
  316. 20070 ' Since there's no B:K-T.LST file, the only
  317. 20080 ' thing to do is create one.   The code for
  318. 20090 ' that begins on line 2000.  Therefore,  go
  319. 20100 ' to line 2000 and create a new file.
  320. 20110 RESUME 2000
  321. 20120 '
  322. 20130 '
  323. 20140 '
  324. 20150 '
  325. 20160 '
  326. 20170 ' Catch-all error trap (Ch. 10)
  327. 20180 '
  328. 20190 PRINT CHR$(7)                ' Beep (Ch. 10)
  329. 20200 PRINT CL$                    ' Clear screen (Ch. 7)
  330. 20210 PRINT:PRINT                ' 2 blank lines
  331. 20220 PRINT "You have generated error number";ERR
  332. 20230 PRINT "on line number";ERL;"."
  333. 20240 PRINT
  334. 20250 PRINT "Please write this fact down.  Also write down ex-"
  335. 20260 PRINT "actly what you did before this error took place."
  336. 20270 PRINT
  337. 20280 PRINT "Ask a BASIC  programmer what the error means and" 
  338. 20290 PRINT "how to correct it."
  339. 20300 PRINT:PRINT                ' 2 blank lines
  340. 20310 PRINT "Press any key to return to the MAIN MENU."
  341. 20320 IF INKEY$ = "" THEN 20320            ' Waiting for keypress (Ch. 7)
  342. 20330 RESUME 1270                ' Return to MAIN MENU
  343. the MAIN MENU."
  344. 20320 IF INKEY$ = "" THEN 20320            ' Waiting for keypress (Ch. 7)
  345. 20330 RESUME 1270                ' Return to MA