home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64Demos / RPL&UNO.SDA / COMPILER (.txt) < prev    next >
Commodore BASIC  |  2019-04-13  |  4KB  |  152 lines

  1. 0 REM RPL PROGRAM COMPILER (C)1989
  2. 5 OPEN15,8,15:INPUT#15,A$:CLOSE15
  3. 10 REM * TITLE SCREEN *
  4. 15 POKE53280,12:POKE53281,12
  5. 20 PRINT "[147][144]    RASTER PROGRAMMING LANGUAGE V1.0"
  6. 25 PRINT " PROGRAM COMPILER  (C)1989 BY SHAWN ORT"
  7. 30 REM * SET UP VARIABLES *
  8. 40 SA = 49475 : REM * MUST BE CHANGED *
  9. 50 B = 1 : REM * CURRENT BREAK *
  10. 60 POKE 49183,0:POKE49184,0
  11. 100 REM * GET FILENAME AND OPEN FILE *
  12. 110 PRINT "ENTER THE NAME OF THE FILE YOU WISH"
  13. 115 PRINT "TO COMPILE."
  14. 120 PRINT "ENTER [155]@[144] TO RETURN TO THE MAIN MENU."
  15. 130 F$="":PRINT:OPEN1,0:INPUT#1,F$:CLOSE1:IF F$ = ""THEN 20
  16. 135 IF F$ = "@" THENCLR:LOAD"RPL.BOOT",8:END
  17. 140 PRINT:PRINT "LOADING..."
  18. 150 OPEN2,8,2,F$+".S,S,R"
  19. 160 INPUT#2,TL
  20. 170 DIM L$(TL)
  21. 180 FORX=1TOTL:INPUT#2,L$(X):NEXTX
  22. 190 CLOSE2:IFST<>64 THEN CLR:RUN
  23. 200 PRINT""
  24. 210 FOR X = 1 TO TL
  25. 220 PRINT "[145]COMPILING LINE: ";X
  26. 230 A$ = L$(X): AS = SA
  27. 240 IF LEFT$(A$,1) = "*" THEN 360
  28. 250 AA$ = LEFT$(A$,8)
  29. 260 IF AA$ = "INCREASE" THEN GOSUB 2000
  30. 270 IF AA$ = "DECREASE" THEN GOSUB 2100
  31. 280 IF MID$(A$,13,2)<>"AT"AND LEFT$(A$,5)="STORE"THEN GOSUB 2200
  32. 290 IF LEFT$(A$,3) = "SYS" THEN GOSUB 2300
  33. 300 IF MID$(A$,11,4) = "WITH" AND LEN(A$) < 19 THEN GOSUB 2400
  34. 310 IF MID$(A$,11,4) = "WITH" AND LEN(A$) = 20 THEN GOSUB 2500
  35. 320 IF MID$(A$,13,2) = "AT" THEN GOSUB 2700
  36. 330 IF A$ = "END" THEN GOSUB 3100:GOTO380
  37. 340 IF LEFT$(A$,5) = "BREAK" THEN GOSUB 2800
  38. 350 IF SA = AS THEN PRINT "UNRECOGNIZED COMMAND IN LINE:";X;""
  39. 360 NEXTX
  40. 370 GOSUB 3100
  41. 380 PRINT "COMPILING DONE."
  42. 390 PRINT "PROGRAM SIZE -";SA-49152;" BYTES."
  43. 400 PRINT "ENTER THE NAME UNDER WHICH YOU WISH TO  SAVE YOUR COMPILED PROGRAM"
  44. 420 PRINT:OPEN1,0:INPUT#1,F$:CLOSE1:IFF$=""THEN420
  45. 440 PRINT:PRINT "SAVING..."
  46. 445 OPEN15,8,15,"I0":CLOSE15
  47. 450 SYS57812F$,8,1
  48. 460 POKE193,0:POKE194,192
  49. 470 A=SA+1:GOSUB3000
  50. 480 POKE174,LO:POKE175,HI
  51. 485 CLR
  52. 490 SYS 62957
  53. 500 PRINT "PROGRAM SAVED."
  54. 510 PRINT "PRESS ANY KEY TO CONTINUE."
  55. 520 GETA$:IFA$=""THEN520
  56. 530 RUN
  57. 2000 REM * INCREASE $$$$$
  58. 2010 A = VAL(MID$(A$,9,LEN(A$)))
  59. 2020 POKE SA,238:SA = SA + 1
  60. 2030 GOSUB 3000
  61. 2040 POKE SA,LO:SA = SA + 1
  62. 2050 POKE SA,HI:SA = SA + 1
  63. 2060 RETURN
  64. 2100 REM * DECREASE $$$$$
  65. 2110 A = VAL(MID$(A$,9,LEN(A$)))
  66. 2120 POKE SA,206:SA = SA + 1
  67. 2130 GOSUB 3000
  68. 2140 POKE SA,LO:SA = SA + 1
  69. 2150 POKE SA,HI:SA = SA + 1
  70. 2160 RETURN
  71. 2200 REM * STORE ### AT $$$$$
  72. 2210 POKE SA,169:SA = SA + 1
  73. 2220 A = VAL(MID$(A$,7,3))
  74. 2230 POKE SA,A:SA = SA + 1
  75. 2240 POKE SA,141:SA = SA + 1
  76. 2250 A = VAL(MID$(A$,13,LEN(A$)))
  77. 2260 GOSUB 3000
  78. 2270 POKE SA,LO:SA = SA + 1
  79. 2280 POKE SA,HI:SA = SA + 1
  80. 2290 RETURN
  81. 2300 REM * SYS $$$$$
  82. 2310 A = VAL(MID$(A$,4,LEN(A$)))
  83. 2320 POKE SA,32:SA = SA + 1
  84. 2330 GOSUB 3000
  85. 2340 POKE SA,LO:SA = SA + 1
  86. 2350 POKE SA,HI:SA = SA + 1
  87. 2360 RETURN
  88. 2400 REM * AND $$$$$ WITH ###
  89. 2410 A = VAL(MID$(A$,5,5))
  90. 2420 GOSUB 3000
  91. 2430 POKE SA,173:SA = SA + 1
  92. 2440 POKE SA,LO:SA = SA + 1
  93. 2450 POKE SA,HI:SA = SA + 1
  94. 2460 POKE SA,41:SA = SA + 1
  95. 2470 POKE SA,VAL(MID$(A$,16,LEN(A$))):SA = SA + 1
  96. 2480 POKE SA,141:SA = SA + 1
  97. 2485 POKE SA,LO:SA = SA + 1
  98. 2490 POKE SA,HI:SA = SA + 1
  99. 2495 RETURN
  100. 2500 REM * AND $$$$$ WITH $$$$$
  101. 2510 A = VAL(MID$(A$,5,5))
  102. 2520 GOSUB 3000
  103. 2530 POKE SA,173:SA = SA + 1
  104. 2540 POKE SA,LO:SA = SA + 1
  105. 2550 POKE SA,HI:SA = SA + 1
  106. 2560 POKE SA,45:SA = SA + 1
  107. 2570 A = VAL(MID$(A$,16,LEN(A$)))
  108. 2580 GOSUB 3000
  109. 2585 POKE SA,LO:SA = SA + 1
  110. 2590 POKE SA,HI:SA = SA + 1
  111. 2600 POKE SA,141:SA = SA + 1
  112. 2610 A = VAL(MID$(A$,5,5))
  113. 2620 GOSUB 3000
  114. 2630 POKE SA,LO:SA = SA + 1
  115. 2640 POKE SA,HI:SA = SA + 1
  116. 2650 RETURN
  117. 2700 REM * STORE $$$$$ AT $$$$$
  118. 2710 A = VAL(MID$(A$,7,5))
  119. 2720 GOSUB 3000
  120. 2730 POKE SA,173:SA = SA + 1
  121. 2740 POKE SA,LO:SA = SA + 1
  122. 2750 POKE SA,HI:SA = SA + 1
  123. 2760 A = VAL(MID$(A$,16,5))
  124. 2770 GOSUB 3000
  125. 2780 POKE SA,141:SA = SA + 1
  126. 2785 POKE SA,LO:SA = SA + 1
  127. 2790 POKE SA,HI:SA = SA + 1
  128. 2795 RETURN
  129. 2800 REM * BREAK AT ###
  130. 2810 REM * END LAST BREAK
  131. 2820 POKE SA,76:SA = SA + 1
  132. 2830 POKE SA,20:SA = SA + 1
  133. 2840 POKE SA,193:SA = SA + 1
  134. 2850 POKE 49184,PEEK(49184)+1
  135. 2860 A = VAL(MID$(A$,9,LEN(A$)))
  136. 2870 POKE 49184+B,A
  137. 2880 A = SA:GOSUB 3000
  138. 2890 POKE 49366 + (B*3),LO
  139. 2900 POKE 49367 + (B*3),HI
  140. 2910 B = B + 1
  141. 2920 RETURN
  142. 3000 REM * RETURN HI AND LO BYTES OF
  143. 3010 REM * LOCATION FOUND IN 'A'
  144. 3020 HI=INT(A/256)
  145. 3030 LO=A-(HI*256)
  146. 3040 RETURN
  147. 3100 REM * END
  148. 3110 POKE SA,76:SA = SA + 1
  149. 3120 POKE SA,180:SA = SA + 1
  150. 3130 POKE SA,192:SA = SA + 1
  151. 3140 RETURN
  152.