SteelGolem

BASIC ASM 6

Jan 1st, 2022 (edited)
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.93 KB | None | 0 0
  1. 100 PRINT:PRINT "ASSEMBLING...";
  2. 110 READ M0$
  3. 120 READ M0:M=M0
  4. 130 READ DN
  5. 140 FOR D=1 TO DN
  6. 150 :READ D$
  7. 160 :OP$=LEFT$(D$,3)
  8. 170 :IF OP$="INC" THEN GOSUB 1000
  9. 180 :IF OP$="RTS" THEN GOSUB 1100
  10. 190 :IF OP$="JMP" THEN GOSUB 1200
  11. 200 :IF OP$="DEC" THEN GOSUB 1300
  12. 210 :IF OP$="LDA" THEN GOSUB 1400
  13. 220 :IF OP$="JSR" THEN GOSUB 1500
  14. 230 :IF OP$="STA" THEN GOSUB 1600
  15. 240 :IF OP$="CMP" THEN GOSUB 1700
  16. 250 :IF OP$="BNE" THEN GOSUB 1800
  17. 260 :IF OP$="LDX" THEN GOSUB 1900
  18. 270 :IF OP$="INX" THEN GOSUB 2000
  19. 280 :IF OP$="CLC" THEN GOSUB 2100
  20. 290 :IF OP$="ADC" THEN GOSUB 2200
  21. 300 :IF OP$="SED" THEN GOSUB 2300
  22. 310 :IF OP$="SBC" THEN GOSUB 2400
  23. 320 :IF OP$="CLD" THEN GOSUB 2500
  24. 330 NEXT D
  25. 340 PRINT "DONE."
  26. 350 PRINT "EXECUTE!"
  27. 360 SYS M0 :REM EXECUTE!
  28. 370 END
  29. 1000 REM ---- INC $XXXX ----
  30. 1010 POKE M,238:M=M+1
  31. 1020 GOSUB 4000
  32. 1030 RETURN
  33. 1100 REM ---- RTS ----
  34. 1110 POKE M,96:M=M+1
  35. 1120 RETURN
  36. 1200 REM ---- JMP $XXXX ----
  37. 1210 POKE M,76:M=M+1
  38. 1220 GOSUB 4000
  39. 1230 RETURN
  40. 1300 REM ---- DEC $XXXX ----
  41. 1310 POKE M,206:M=M+1
  42. 1320 GOSUB 4000
  43. 1330 RETURN
  44. 1400 REM ---- LDA $XX ----
  45. 1410 POKE M,169:M=M+1
  46. 1420 GOSUB 4100
  47. 1430 RETURN
  48. 1500 REM ---- JSR $XXXX ----
  49. 1510 POKE M,32:M=M+1
  50. 1520 GOSUB 4000
  51. 1530 RETURN
  52. 1600 REM ---- STA $XXXX ----
  53. 1610 POKE M,141:M=M+1
  54. 1620 GOSUB 4000
  55. 1630 RETURN
  56. 1700 REM ---- CMP $XXXX ----
  57. 1710 POKE M,205:M=M+1
  58. 1720 GOSUB 4000
  59. 1730 RETURN
  60. 1800 REM ---- BNE $XX ----
  61. 1810 POKE M,208:M=M+1
  62. 1820 GOSUB 4100
  63. 1830 RETURN
  64. 1900 REM ---- LDX $XX ----
  65. 1910 POKE M,162:M=M+1
  66. 1920 GOSUB 4100
  67. 1930 RETURN
  68. 2000 REM ---- INX ----
  69. 2010 POKE M,232:M=M+1
  70. 2020 RETURN
  71. 2100 REM ---- CLC ----
  72. 2110 POKE M,24:M=M+1
  73. 2120 RETURN
  74. 2200 REM ---- ADC $XX ----
  75. 2210 POKE M,105:M=M+1
  76. 2220 GOSUB 4100
  77. 2230 RETURN
  78. 2300 REM ---- SED ----
  79. 2310 POKE M,248:M=M+1
  80. 2320 RETURN
  81. 2400 REM ---- SBC $XX ----
  82. 2410 POKE M,233:M=M+1
  83. 2420 GOSUB 4100
  84. 2430 RETURN
  85. 2500 REM ---- CLD ----
  86. 2510 POKE M,216:M=M+1
  87. 2520 RETURN
  88. 4000 REM -- POKE 2 BYTES @ END OF D$ --
  89. 4010 L=LEN(D$)
  90. 4020 HX$=MID$(D$,L-1,2)
  91. 4030 GOSUB 6000
  92. 4040 POKE M,HX:M=M+1
  93. 4050 HX$=MID$(D$,L-3,2)
  94. 4060 GOSUB 6000
  95. 4070 POKE M,HX:M=M+1
  96. 4080 RETURN
  97. 4100 REM -- POKE 1 BYTE @ END OF D$ --
  98. 4110 L=LEN(D$)
  99. 4120 HX$=MID$(D$,L-1,2)
  100. 4130 GOSUB 6000
  101. 4140 POKE M,HX:M=M+1
  102. 4150 RETURN
  103. 6000 REM -- 1 BYTE STR TO INT --
  104. 6010 REM IN:HX$ OUT:HX
  105. 6020 C0=ASC("0"):CA=ASC("A")
  106. 6030 C$=RIGHT$(HX$,1):C=ASC(C$)
  107. 6040 IF C$<"A" THEN HX=C-C0
  108. 6050 IF C$>="A" THEN HX=10+C-CA
  109. 6060 C$=LEFT$(HX$,1):C=ASC(C$)
  110. 6070 IF C$<"A" THEN HX=HX+16*(C-C0)
  111. 6080 IF C$>="A" THEN HX=HX+16*(10+C-CA)
  112. 6090 RETURN
  113. 8000 REM ---- ASM ----
  114. 8010 DATA "$8000",32768 :REM MEM START
  115. 8020 DATA 8 :REM LINE COUNT
  116. 8030 DATA "LDA $41" :REM +00
  117. 8040 DATA "JSR $FFD2" :REM +02
  118. 8050 DATA "LDA $42" :REM +05
  119. 8060 DATA "JSR $FFD2" :REM +07
  120. 8070 DATA "LDA $43" :REM +0A
  121. 8080 DATA "JSR $FFD2" :REM +0C
  122. 8090 DATA "INC $D020" :REM +0F
  123. 8100 DATA "JMP $800F" :REM +12
Add Comment
Please, Sign In to add comment