Advertisement
linesguy

Logo

Sep 19th, 2017
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.75 KB | None | 0 0
  1. 0 rem First three characters of an instruction are the line number (1-999)
  2.  
  3. 0 rem Numbers must include 0's if less than 3 digits long.
  4. 0 rem *The above statement applies to all numbers in all code*
  5.  
  6. 0 rem Instructions:
  7. 0 rem FDnnn / Move forward nnn pixels
  8. 0 rem BKnnn / move backward nnn pixels
  9. 0 rem RTnnn / rotate right nnn degrees
  10. 0 rem LTnnn / rotate left nnn degrees
  11. 0 rem PU / Pen up (stop drawing)
  12. 0 rem PD / Pen down (start drawing)
  13. 0 rem END / End program cleanly
  14. 0 rem GOTOnnn / Goto line number nnn
  15.  
  16. 0 rem Unimplemented instructions:
  17. 0 rem RPTnnn / Start repeat loop nnn times
  18. 0 rem ERPT / End repeat loop
  19.  
  20. 0 rem Setup:
  21. 1 goto 10000
  22. 10000
  23. 10001 hgr : hcolor = 3
  24. 10002 P = 1
  25. 10003 tr = 0
  26. 10004 dim in$(1000)
  27. 10005 tx = 140 : ty = 96
  28. 10099 goto 20000
  29.  
  30. 0 rem Onerr / end:
  31. 10100 home : vtab 23 : print "END OF PROGRAM" : hcolor = 5 : hplot tx-1,ty to tx+1,ty : hplot tx,ty-1 to tx,ty+1 : end
  32.  
  33. 0 rem parser:
  34. 20000 onerr goto 20020
  35. 20010 read in$ : in$(val(left$(in$,3))) = mid$(in$,4,255) : goto 20010
  36. 20020 goto 30000
  37.  
  38. 0 rem instructions:
  39. 30000 in = in + 1 : home : vtab 23 : print "IN ";in
  40.  
  41. 31000 if left$(in$(in),2) = "FD" then ox = tx : oy = ty : tx = tx - sin(td/57.29)*val(mid$(in$(in),4,255)) : ty = ty - cos(td/57.29)*val(mid$(in$(in),4,255)) : if p = 1 then hplot ox,oy to tx,ty
  42. 31001 if left$(in$(in),2) = "FD" then goto 40000
  43. 31010 if left$(in$(in),2) = "BK" then ox = tx : oy = ty : tx = tx + sin(td/57.29)*val(mid$(in$(in),4,255)) : ty = ty + cos(td/57.29)*val(mid$(in$(in),4,255)) : if p = 1 then hplot ox,oy to tx,ty
  44. 31011 if left$(in$(in),2) = "BK" then goto 40000
  45. 31020 if left$(in$(in),2) = "LT" then td = td + val(mid$(in$(in),3,255)) : goto 40000
  46. 31030 if left$(in$(in),2) = "RT" then td = td - val(mid$(in$(in),3,255)) : goto 40000
  47. 31040 if left$(in$(in),2) = "PU" then p = 0 : goto 40000
  48. 31050 if left$(in$(in),2) = "PD" then p = 1 : goto 40000
  49. 31060 if left$(in$(in),3) = "END" then goto 10100
  50. 31070 if left$(in$(in),3) = "RPT" then gosub 50000 : goto 40000
  51. 31080 if left$(in$(in),3) = "ERPT" then gosub 50000 : goto 40000
  52. 31090 if left$(in$(in),4) = "GOTO" then in = val(mid$(in$(in),5,255))-1 : goto 40000
  53. 40000 goto 30000
  54.  
  55. 50000 return
  56.  
  57. 0 rem code (1-999):
  58.  
  59. 010 data "010"
  60. 020 data "020"
  61. 030 data "030"
  62. 040 data "040"
  63. 050 data "050"
  64. 060 data "060"
  65. 070 data "070"
  66. 080 data "080"
  67. 090 data "090"
  68. 100 data "100"
  69. 110 data "110"
  70. 120 data "120"
  71. 130 data "130"
  72. 140 data "140"
  73. 150 data "150"
  74. 160 data "160"
  75. 170 data "170"
  76. 180 data "180"
  77. 190 data "190"
  78. 200 data "200"
  79. 210 data "210"
  80. 220 data "220"
  81. 230 data "230"
  82. 240 data "240"
  83. 250 data "250"
  84. 260 data "260"
  85. 270 data "270"
  86. 280 data "280"
  87. 290 data "290"
  88. 310 data "310"
  89. 320 data "320"
  90. 330 data "330"
  91. 340 data "340"
  92. 350 data "350"
  93. 360 data "360"
  94. 370 data "370"
  95. 380 data "380"
  96. 390 data "390"
  97. 400 data "400"
  98. 410 data "410"
  99. 420 data "420"
  100. 430 data "430"
  101. 440 data "440"
  102. 450 data "450"
  103. 460 data "460"
  104. 470 data "470"
  105. 480 data "480"
  106. 490 data "490"
  107. 500 data "500"
  108. 510 data "510"
  109. 520 data "520"
  110. 530 data "530"
  111. 540 data "540"
  112. 550 data "550"
  113. 560 data "560"
  114. 570 data "570"
  115. 580 data "580"
  116. 590 data "590"
  117. 600 data "600"
  118. 610 data "610"
  119. 620 data "620"
  120. 630 data "630"
  121. 640 data "640"
  122. 650 data "650"
  123. 660 data "660"
  124. 670 data "670"
  125. 680 data "680"
  126. 690 data "690"
  127. 700 data "700"
  128. 710 data "710"
  129. 720 data "720"
  130. 730 data "730"
  131. 740 data "740"
  132. 750 data "750"
  133. 760 data "760"
  134. 770 data "770"
  135. 780 data "780"
  136. 790 data "790"
  137. 800 data "800"
  138. 810 data "810"
  139. 820 data "820"
  140. 830 data "830"
  141. 840 data "840"
  142. 850 data "850"
  143. 860 data "860"
  144. 870 data "870"
  145. 880 data "880"
  146. 890 data "890"
  147. 900 data "900"
  148. 910 data "910"
  149. 920 data "920"
  150. 930 data "930"
  151. 940 data "940"
  152. 950 data "950"
  153. 960 data "960"
  154. 970 data "970"
  155. 980 data "980"
  156. 990 data "990"
  157. 999 data "999END"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement