Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 10 REM TODO: INTEGER VALUES "#123"
- 100 PRINT:PRINT "ASSEMBLING...";
- 110 READ M0$
- 120 READ M0:M=M0
- 130 READ DN
- 140 FOR D=1 TO DN
- 150 READ D$
- 160 OP$=LEFT$(D$,3)
- 170 OP=-1
- 200 IF OP$="ADC" THEN OP=105
- 210 IF OP$="BNE" THEN OP=208
- 220 IF OP$="CLC" THEN OP=24
- 230 IF OP$="CLD" THEN OP=216
- 240 IF OP$="CMP" THEN OP=205
- 250 IF OP$="DEC" THEN OP=206
- 260 IF OP$="INC" THEN OP=238
- 270 IF OP$="INX" THEN OP=232
- 280 IF OP$="JMP" THEN OP=76
- 290 IF OP$="JSR" THEN OP=32
- 300 IF OP$="LDA" THEN OP=169
- 310 IF OP$="LDX" THEN OP=162
- 320 IF OP$="RTS" THEN OP=96
- 330 IF OP$="SBC" THEN OP=233
- 340 IF OP$="SED" THEN OP=248
- 350 IF OP$="STA" THEN OP=141
- 800 VL$="":LD=LEN(D$)
- 810 IF LD>3 THEN VL$=RIGHT$(D$,LD-4)
- 820 IF VL$="" THEN GOSUB 2000
- 830 IF LEN(VL$)=3 THEN GOSUB 2100
- 840 IF LEN(VL$)=5 THEN GOSUB 2200
- 850 NEXT D
- 860 PRINT "DONE."
- 870 PRINT "EXECUTE!":SYS M0
- 880 END
- 2000 REM -- POKE OP (NO VALUE) --
- 2010 POKE M,OP:M=M+1
- 2020 RETURN
- 2100 REM -- POKE OP $XX --
- 2110 POKE M,OP:M=M+1
- 2120 GOSUB 4100
- 2130 RETURN
- 2200 REM -- POKE OP $XXXX --
- 2210 POKE M,OP:M=M+1
- 2220 GOSUB 4000
- 2230 RETURN
- 4000 REM -- POKE $XXXX VL$ --
- 4010 HX$=MID$(VL$,4,2)
- 4020 GOSUB 6000
- 4030 POKE M,HX:M=M+1
- 4040 REM FALL THROUGH FOR HIGH BYTE
- 4100 REM -- POKE $XX VL$ --
- 4110 HX$=MID$(VL$,2,2)
- 4120 GOSUB 6000
- 4130 POKE M,HX:M=M+1
- 4140 RETURN
- 6000 REM -- 1 BYTE STR TO INT --
- 6010 REM IN:HX$ OUT:HX
- 6020 C0=ASC("0"):CA=ASC("A")
- 6030 C$=RIGHT$(HX$,1):C=ASC(C$)
- 6040 IF C$<"A" THEN HX=C-C0
- 6050 IF C$>="A" THEN HX=10+C-CA
- 6060 C$=LEFT$(HX$,1):C=ASC(C$)
- 6070 IF C$<"A" THEN HX=HX+16*(C-C0)
- 6080 IF C$>="A" THEN HX=HX+16*(10+C-CA)
- 6090 RETURN
- 8000 REM ---- ASM ----
- 8010 DATA "$8000",32768 :REM MEM START
- 8020 DATA 8 :REM LINE COUNT
- 8030 DATA "LDA $41" :REM +00
- 8040 DATA "JSR $FFD2" :REM +02
- 8050 DATA "LDA $42" :REM +05
- 8060 DATA "JSR $FFD2" :REM +07
- 8070 DATA "LDA $43" :REM +0A
- 8080 DATA "JSR $FFD2" :REM +0C
- 8090 DATA "INC $D020" :REM +0F
- 8100 DATA "JMP $800F" :REM +12
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement