Advertisement
SteelGolem

BASIC ASM 4

Dec 31st, 2021
40
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.06 KB | None | 0 0
  1. 100 M0$="$8000" :REM MEM START
  2. 110 M0=32768:M=M0
  3. 120 FOR D=1 TO 2
  4. 130 :READ D$
  5. 140 :OP$=LEFT$(D$,3)
  6. 150 :IF OP$="INC" THEN GOSUB 1000
  7. 160 :IF OP$="RTS" THEN GOSUB 1100
  8. 170 :IF OP$="JMP" THEN GOSUB 1200
  9. 180 NEXT D
  10. 190 SYS M0 :REM EXECUTE!
  11. 200 END
  12. 1000 REM ---- INC ----
  13. 1010 POKE M,238:M=M+1
  14. 1020 GOSUB 4000
  15. 1030 RETURN
  16. 1100 REM ---- RTS ----
  17. 1110 POKE M,96:M=M+1
  18. 1120 RETURN
  19. 1200 REM ---- JMP ----
  20. 1201 REM TODO: THERE ARE 2 JMP CODES!
  21. 1210 POKE M,76:M=M+1
  22. 1220 GOSUB 4000
  23. 1230 RETURN
  24. 4000 REM -- POKE 2 BYTE ADDR --
  25. 4010 L=LEN(D$)
  26. 4020 HX$=MID$(D$,L-1,2)
  27. 4030 GOSUB 6000
  28. 4040 POKE M,HX:M=M+1
  29. 4050 HX$=MID$(D$,L-3,2)
  30. 4060 GOSUB 6000
  31. 4070 POKE M,HX:M=M+1
  32. 4080 RETURN
  33. 6000 REM -- 1 BYTE STR TO INT --
  34. 6010 REM IN:HX$ OUT:HX
  35. 6020 C0=ASC("0"):CA=ASC("A")
  36. 6030 C$=RIGHT$(HX$,1):C=ASC(C$)
  37. 6040 IF C$<"A" THEN HX=C-C0
  38. 6050 IF C$>="A" THEN HX=10+C-CA
  39. 6060 C$=LEFT$(HX$,1):C=ASC(C$)
  40. 6070 IF C$<"A" THEN HX=HX+16*(C-C0)
  41. 6080 IF C$>="A" THEN HX=HX+16*(10+C-CA)
  42. 6090 RETURN
  43. 8000 REM ---- ASM ----
  44. 8010 DATA "INC $D020"
  45. 8020 DATA "JMP $8000"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement