home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64Educational / GRT-CIR.V1.ARC / ITINERARY (.txt) < prev    next >
Commodore BASIC  |  2019-04-13  |  6KB  |  211 lines

  1. 100 REM ITINERARY PRINTER
  2. 110 REM WRITTEN BY KURT BRANDON
  3. 120 DIMIN$(60):POKE53281,1:POKE53280,13:POKE646,0
  4. 130 DN=PEEK(186):REM DRIVE ADDRESS
  5. 140 PN=4:REM PRINTER DEVICE NUMBER
  6. 150 OA=5:REM OPEN ADDRESS FOR TRANSPARENT MODE
  7. 160 Z$=CHR$(0)
  8. 170 ES$=CHR$(27):REM PRINTER ESCAPE CODE
  9. 180 UL=223:REM ASCII VALUE OF UNDERLINE SYMBOL
  10. 190 FF$=CHR$(12):REM PAGE EJECT COMMAND
  11. 200 QT$=CHR$(34):REM QUOTE MARK
  12. 210 SE$=CHR$(68)+CHR$(10)+CHR$(17)+CHR$(29)+CHR$(45)+CHR$(51)+CHR$(63)+Z$
  13. 220 REM TABS: COL 10,17,19,45,51,63
  14. 230 LS$=CHR$(65)+CHR$(9):REM SET LINE SPACING TO 9/72 (1/8) INCH
  15. 240 TA$=CHR$(9):REM TAB COMMAND
  16. 250 RS$=CHR$(64):REM PRINTER RESET COMMAND
  17. 260 LF$=CHR$(10):REM LINEFEED COMMAND
  18. 270 DS$=ES$+CHR$(83)+CHR$(48)+"O"+ES$+CHR$(84)
  19. 280 REM DS$ IS A SUPERSCRIPT "O" AND IS USED FOR THE DEGREE SYMBOL
  20. 290 BS$=CHR$(8):REM BACKSPACE CHARACTER
  21. 300 :
  22. 310 :
  23. 320 :
  24. 330 PRINT"[147][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210][210]"
  25. 340 PRINT"        ITINERARY PRINTER"
  26. 350 PRINT"[197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197]"
  27. 360 FORI=1TO30:EB$=EB$+CHR$(UL):NEXT
  28. 370 NP$="                               "
  29. 380 POKE650,255
  30. 390 DEFFNDS(R)=(R-INT(R))
  31. 400 D=1:K=111.11:M=57.2957795:N=60:S=69.041
  32. 410 PRINT"       PLACE NAMES (60 NAMES MAX)"
  33. 420 PRINT""QT$"PLACE NAME"QT$" RETURN[146] TO ENTER"
  34. 430 PRINTSPC(13)"RETURN[146] ALONE TO START"
  35. 440 INPUTIN$(KK)
  36. 450 IFIN$(KK)=""THEN470
  37. 460 KK=KK+1:GOTO440
  38. 470 OPEN15,DN,15,"I0"
  39. 480 PRINT"VERIFYING PRESENCE OF ALL LOCATIONS"
  40. 490 NE=0:FORI=1TO10:EE(I)=0:NEXT
  41. 500 FORI=0TOKK-1
  42. 510 SA$=IN$(I):HX$=SA$
  43. 520 GOSUB2010:GOSUB1870
  44. 530 IFNR=1THENNE=NE+1:EE(NE)=I:MF=1:PRINT""HX$"[144] IS NOT IN FILE"
  45. 540 NEXT
  46. 550 IFMF<>1THEN600
  47. 560 INPUT" ARE THESE SPELLING ERRORS (Y/N)";G$
  48. 570 IFG$<>"Y"ANDG$<>"N"THENPRINT"[145][145][145][145]":GOTO560
  49. 580 IFG$="N"THENFORI=1TO15:CLOSEI:NEXT:END
  50. 590 GOSUB2110:GOTO480
  51. 600 PRINT"[145]                                     "
  52. 610 PRINT"ALL ABOARD!  STARTING WORK"
  53. 620 OPEN1,PN,OA:PRINT#1,ES$LS$:PRINT#1,ES$SE$
  54. 630 SA$=IN$(0):GOSUB2010
  55. 640 GOSUB1870
  56. 650 N4$=SA$:F6=LA:F6$="N":IFLA<0THENF6$="S"
  57. 660 RV=LA:GOSUB1730:D6$=RV$
  58. 670 F7=LO:F7$="W":IFLO<0THENF7$="E"
  59. 680 RV=LO:GOSUB1730:D7$=RV$
  60. 690 FORI=1TOKK-1STEP2
  61. 700 A=F6/M:L1=F7:N1$=N4$:F0=F6:F0$=F6$:D0$=D6$:F1=F7:F1$=F7$:D1$=D7$
  62. 710 SA$=IN$(I):GOSUB2010:GOSUB1870
  63. 720 N2$=SA$:F2=LA:F2$="N":IFLA<0THENF2$="S"
  64. 730 RV=LA:GOSUB1730:D2$=RV$
  65. 740 F3=LO:F3$="W":IFLO<0THENF3$="E"
  66. 750 RV=LO:GOSUB1730:D3$=RV$
  67. 760 B=LA/M:L2=LO:GOSUB970
  68. 770 B1=C:GOSUB1090:BO$=D9$:W1=D
  69. 780 IFI=>KK-1THENGOSUB1280:GOTO2070
  70. 790 A=B:L1=L2:N3$=N2$:F4=F2:F4$=F2$:D4$=D2$:F5=F3:F5$=F3$:D5$=D3$
  71. 800 SA$=IN$(I+1):GOSUB2010:GOSUB1870
  72. 810 N4$=SA$:F6=LA:F6$="N":IFLA<0THENF6$="S"
  73. 820 RV=LA:GOSUB1730:D6$=RV$
  74. 830 F7=LO:F7$="W":IFLO<0THENF7$="E"
  75. 840 RV=LO:GOSUB1730:D7$=RV$
  76. 850 B=LA/M:L2=LO:GOSUB970:B2=C
  77. 860 GOSUB1090:BT$=D9$:W2=D
  78. 870 GOSUB1460
  79. 880 NP=NP+2:IFNP<8THEN920
  80. 890 PRINT"PUT A NEW SHEET IN THE PRINTER"
  81. 900 PRINT"AND HIT ANY KEY"
  82. 910 POKE198,0:WAIT198,1:NP=0
  83. 920 NEXT
  84. 930 GOTO2070
  85. 940 :
  86. 950 :
  87. 960 :
  88. 970 REM\ CALCULATIONS
  89. 980 L=(L1-L2)/M:E=SIN(A)*SIN(B)+COS(A)*COS(B)*COS(L)
  90. 990 D=-ATN(E/SQR(1-E*E))+1.57079:C=(SIN(B)-SIN(A)*E)/(COS(A)*SIN(D))
  91. 1000 IFC>=1THENC=0:GOTO1030
  92. 1010 IFC<=-1THENC=180/M:GOTO1030
  93. 1020 C=-ATN(C/SQR(1-C*C))+1.57079
  94. 1030 C=C*M
  95. 1040 IFSIN(L)<0THENC=360-C
  96. 1050 RETURN
  97. 1060 :
  98. 1070 :
  99. 1080 :
  100. 1090 REM\  CONVERT NUMBER BEARING TO STRING WITH SYMBOLS
  101. 1100 DG=INT(C):MZ=60*FNDS(C):SC=60*FNDS(MZ)
  102. 1110 IFSC=>30THENMZ=MZ+1
  103. 1120 IFMZ=>60THENMZ=MZ-60:DG=DG+1
  104. 1130 MZ=INT(MZ):D9$=STR$(DG)+DS$+STR$(MZ)+"'"
  105. 1140 RETURN
  106. 1150 :
  107. 1160 :
  108. 1170 :
  109. 1180 REM\     POSITION & ERROR SUB
  110. 1190 RH=INT(RN/256):RL=RN-(256*RH)
  111. 1200 PRINT#15,"P"+CHR$(96+8)+CHR$(RL)+CHR$(RH)+CHR$(1)
  112. 1210 INPUT#15,E,E$,AA,B
  113. 1220 IF E=0ORE=50THENRETURN
  114. 1230 PRINTE;E$;AA;B
  115. 1240 CLOSE8:CLOSE15:STOP
  116. 1250 :
  117. 1260 :
  118. 1270 :
  119. 1280 REM\ 1-COLUMN PRINTER OUTPUT SUB
  120. 1290 PRINT#1,TA$N1$:PRINT#1,LF$
  121. 1300 PRINT#1,TA$TA$ABS(INT(1000*F0))/1000F0$TA$D0$:PRINT#1,LF$
  122. 1310 PRINT#1,TA$TA$ABS(INT(1000*F1))/1000F1$TA$D1$:PRINT#1,LF$
  123. 1320 PRINT#1,TA$N2$:PRINT#1,LF$
  124. 1330 PRINT#1,TA$TA$ABS(INT(1000*F2))/1000F2$TA$D2$:PRINT#1,LF$
  125. 1340 PRINT#1,TA$TA$ABS(INT(1000*F3))/1000F3$TA$D3$:PRINT#1,LF$
  126. 1350 PRINT#1,TA$"BEARING":PRINT#1,LF$
  127. 1360 PRINT#1,TA$TA$INT(1000*B1)/1000BS$DS$:PRINT#1,LF$
  128. 1370 PRINT#1,TA$TA$BO$:PRINT#1,LF$:PRINT#1,TA$"DISTANCES":PRINT#1,LF$
  129. 1380 PRINT#1,TA$TA$INT(K*D*M)"KILOMETERS":PRINT#1,LF$
  130. 1390 PRINT#1,TA$TA$INT(S*D*M)"STATUTE MILES":PRINT#1,LF$
  131. 1400 PRINT#1,TA$TA$INT(N*D*M)"NAUTICAL MILES":PRINT#1,LF$
  132. 1410 PRINT#1,TA$EB$:PRINT#1,LF$:PRINT#1:PRINT#1,LF$
  133. 1420 RETURN
  134. 1430 :
  135. 1440 :
  136. 1450 :
  137. 1460 REM\  2-COLUMN PRINTER OUTPUT SUB
  138. 1470 PRINT#1,TA$N1$TA$N3$:PRINT#1,LF$
  139. 1480 PRINT#1,TA$TA$ABS(INT(1000*F0))/1000F0$TA$D0$TA$TA$;
  140. 1490 PRINT#1,ABS(INT(1000*F4))/1000F4$TA$D4$:PRINT#1,LF$
  141. 1500 PRINT#1,TA$TA$ABS(INT(1000*F1))/1000F1$TA$D1$TA$TA$;
  142. 1510 PRINT#1,ABS(INT(1000*F5))/1000F5$TA$D5$:PRINT#1,LF$
  143. 1520 PRINT#1,TA$N2$TA$N4$:PRINT#1,LF$
  144. 1530 PRINT#1,TA$TA$ABS(INT(1000*F2))/1000F2$TA$D2$TA$TA$;
  145. 1540 PRINT#1,ABS(INT(1000*F6))/1000F6$TA$D6$:PRINT#1,LF$
  146. 1550 PRINT#1,TA$TA$ABS(INT(1000*F3))/1000F3$TA$D3$TA$TA$;
  147. 1560 PRINT#1,ABS(INT(1000*F7))/1000F7$TA$D7$:PRINT#1,LF$
  148. 1570 PRINT#1,TA$"BEARING"TA$TA$"BEARING":PRINT#1,LF$
  149. 1580 PRINT#1,TA$TA$INT(1000*B1)/1000BS$DS$TA$TA$TA$;
  150. 1590 PRINT#1,INT(1000*B2)/1000BS$DS$:PRINT#1,LF$
  151. 1600 PRINT#1,TA$TA$BO$TA$TA$TA$BT$:PRINT#1,LF$
  152. 1610 PRINT#1,TA$"DISTANCES"TA$TA$"DISTANCES":PRINT#1,LF$
  153. 1620 PRINT#1,TA$TA$INT(K*W1*M)" KILOMETERS"TA$TA$;
  154. 1630 PRINT#1,INT(K*W2*M)"KILOMETERS":PRINT#1,LF$
  155. 1640 PRINT#1,TA$TA$INT(S*W1*M)" STATUTE MILES"TA$TA$;
  156. 1650 PRINT#1,INT(S*W2*M)"STATUTE MILES":PRINT#1,LF$
  157. 1660 PRINT#1,TA$TA$INT(N*W1*M)" NAUTICAL MILES"TA$TA$;
  158. 1670 PRINT#1,INT(N*W2*M)"NAUTICAL MILES":PRINT#1,LF$
  159. 1680 PRINT#1,TA$EB$TA$EB$:PRINT#1,LF$:PRINT#1,LF$
  160. 1690 RETURN
  161. 1700 :
  162. 1710 :
  163. 1720 :
  164. 1730 REM\  DEGREES-MINUTES-SECONDS SUB
  165. 1740 RV=ABS(RV)
  166. 1750 DP=INT(RV):MP=60*FNDS(RV):SP=60*FNDS(MP):MP=INT(MP+.5):DM=1
  167. 1760 RV$=STR$(DP)+DS$+STR$(MP)+"'":RETURN
  168. 1770 :
  169. 1780 :
  170. 1790 :
  171. 1800 REM\     INVERT PLACE NAMES SUB
  172. 1810 TV=A1:A1=A2:A2=TV:TV$=H1$:H1$=H2$:H2$=TV$:TV$=AD$:AD$=A2$:A2$=TV$
  173. 1820 TV=L1:L1=L2:L2=TV:TV$=L1$:L1$=L2$:L2$=TV$:TV$=T2$:T2$=LT$:LT$=TV$
  174. 1830 TV$=N1$:N1$=N2$:N2$=TV$:TV=A:A=B:B=TV:RETURN
  175. 1840 :
  176. 1850 :
  177. 1860 :
  178. 1870 REM\    BINARY SEARCH SUB
  179. 1880 NR=0:OPEN8,DN,8,LEFT$(SA$,1):RN=1:GOSUB1180:GOSUB1200
  180. 1890 INPUT#8,MN:XI=LOG(MN)/LOG(2):XI=INT(XI)+1
  181. 1900 XM=XI-1:XI=2^XI:XX=XI/2
  182. 1910 IFXM<0THENNR=1:CLOSE8:RETURN
  183. 1920 XM=XM-1:RN=XX:GOSUB1180:GOSUB1200:INPUT#8,PL$,LA$,LO$
  184. 1930 IFSA$=PL$THENLA=VAL(LA$):LO=VAL(LO$):CLOSE8:RETURN
  185. 1940 IFSA$<PL$THENXX=XX-2^XM:GOTO1910
  186. 1950 XX=XX+2^XM
  187. 1960 IFXX>MNTHENXX=MN
  188. 1970 GOTO1910
  189. 1980 :
  190. 1990 :
  191. 2000 :
  192. 2010 REM\  FORMAT PLACE NAME SUB
  193. 2020 K2$="":FORII=1TOLEN(SA$):K2=ASC(MID$(SA$,II,1)):K2=K2AND127
  194. 2030 K2$=K2$+CHR$(K2):NEXT:SA$=K2$
  195. 2040 IFLEFT$(SA$,1)=" "THENSA$=RIGHT$(SA$,LEN(SA$)-1):GOTO2040
  196. 2050 IFLEN(SA$)<30THENSA$=SA$+LEFT$(NP$,30-LEN(SA$)):RETURN
  197. 2060 RETURN
  198. 2070 PRINT#1,ES$RS$:FORI=1TO15:CLOSEI:NEXT:END
  199. 2080 :
  200. 2090 :
  201. 2100 :
  202. 2110 REM\   CORRECT SPELLING ERRORS SUB
  203. 2120 PRINT"[147]THE MISPELLED NAME WILL BE GIVEN."
  204. 2130 PRINT"MAKE THE CORRECTION AND PRESS RETURN."
  205. 2140 FORJJ=1TONE
  206. 2150 PRINT""IN$(EE(JJ))
  207. 2160 INPUTIN$(EE(JJ))
  208. 2170 NEXT
  209. 2180 FORJJ=1TO10:EE(JJ)=0:NEXT:NE=0:NR=0:MF=0
  210. 2190 RETURN
  211.