home *** CD-ROM | disk | FTP | other *** search
/ 64'er 1986 December / 64er_Magazin_86-12_1986_Markt__Technik_de.d64 / mc68705-assembl. (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  16KB  |  816 lines

  1. 10 data *port-a equ 0000
  2. 20 data *port-b equ 0001
  3. 30 data *port-c equ 0002
  4. 40 data *ddr-a equ 0004
  5. 50 data *ddr-b equ 0005
  6. 60 data *ddr-c equ 0006
  7. 70 data *eoi-flag equ 0011
  8. 80 data *dev-# equ 0012
  9. 90 data *sec.flag equ 0013
  10. 100 data *label14 equ 0014
  11. 110 data *cbm-flag equ 0015
  12. 120 data *lf-flag equ 0016
  13. 130 data *$22-flag equ 0017
  14. 140 data *crsr-flag equ 0018
  15. 150 data *restore equ 0019
  16. 160 data *dot-flag equ 001a
  17. 170 data *asc.flag equ 001b
  18. 175 data *frz-flag equ 001c
  19. 180 data *opcode equ 0020
  20. 190 data *hi-byte equ 0021
  21. 200 data *lo-byte equ 0022
  22. 210 data *label23 equ 0023
  23. 220 data org 07fe
  24. 230 data dat 04
  25. 240 data dat 00
  26. 250 data org 0784
  27. 260 data dat 80
  28. 270 data org 0080
  29. 280 data *get-byte lda@ 18
  30. 290 data *clockl bil clockl
  31. 300 data *lclock bil lclock
  32. 310 data bcl0 port-c
  33. 320 data *bil bil clock1h
  34. 330 data *deca deca
  35. 340 data bne bil
  36. 350 data lda@ 10
  37. 360 data bst0 port-c
  38. 370 data *dec deca
  39. 380 data bne dec
  40. 390 data bst7 eoi-flag
  41. 400 data bcl0 port-c
  42. 410 data *clock1h bih clock1h
  43. 420 data *clock1l bil clock1l
  44. 430 data bbc1 port-c bit-1
  45. 440 data *bit-1 rorx
  46. 450 data *clock2h bih clock2h
  47. 460 data *clock2l bil clock2l
  48. 470 data bbc1 port-c bit-2
  49. 480 data *bit-2 rorx
  50. 490 data *clock3h bih clock3h
  51. 500 data *clock3l bil clock3l
  52. 510 data bbc1 port-c bit-3
  53. 520 data *bit-3 rorx
  54. 530 data *clock4h bih clock4h
  55. 540 data *clock4l bil clock4l
  56. 550 data bbc1 port-c bit-4
  57. 560 data *bit-4 rorx
  58. 570 data *clock5h bih clock5h
  59. 580 data *clock5l bil clock5l
  60. 590 data bbc1 port-c bit-5
  61. 600 data *bit-5 rorx
  62. 610 data *clock6h bih clock6h
  63. 620 data *clock6l bil clock6l
  64. 630 data bbc1 port-c bit-6
  65. 640 data *bit-6 rorx
  66. 650 data *clock7h bih clock7h
  67. 660 data *clock7l bil clock7l
  68. 670 data bbc1 port-c bit-7
  69. 680 data *bit-7 rorx
  70. 690 data *clock8h bih clock8h
  71. 700 data *clock8l bil clock8l
  72. 710 data bbc1 port-c bit-8
  73. 720 data *bit-8 rorx
  74. 730 data *byte bih byte
  75. 740 data bst0 port-c
  76. 750 data rts
  77. 760 data *data jsr check
  78. 770 data *busy bbs0 port-a busy
  79. 780 data sta port-b
  80. 790 data bcl3 port-c
  81. 800 data bst3 port-c
  82. 810 data *jsr80 jsr get-byte
  83. 820 data bbs2 port-c data
  84. 830 data jmp test-dev
  85. 840 data org 0400
  86. 850 data lda@ 00
  87. 860 data sta ddr-a
  88. 870 data lda@ ff
  89. 880 data sta ddr-b
  90. 890 data inca
  91. 900 data sta port-b
  92. 910 data lda@ 09
  93. 920 data sta ddr-c
  94. 930 data deca
  95. 940 data sta port-c
  96. 950 data clr eoi-flag
  97. 960 data clr cbm-flag
  98. 970 data clr dot-flag
  99. 980 data clr lf-flag
  100. 990 data clr asc.flag
  101. 995 data clr frz-flag
  102. 1000 data lda port-a
  103. 1010 data eor@ ff
  104. 1020 data tax
  105. 1030 data asra
  106. 1040 data and@ 03
  107. 1050 data add@ 24
  108. 1060 data sta dev-#
  109. 1070 data lda@ d6
  110. 1080 data sta opcode
  111. 1090 data lda@ 01
  112. 1100 data sta hi-byte
  113. 1110 data clr lo-byte
  114. 1120 data lda@ 81
  115. 1130 data sta label23
  116. 1140 data clc
  117. 1150 data txa
  118. 1160 data asla
  119. 1170 data bcc test-lf
  120. 1180 data bst7 dot-flag
  121. 1190 data *test-lf clc
  122. 1200 data asla
  123. 1210 data bcc atn
  124. 1220 data bst7 lf-flag
  125. 1230 data *atn bbs2 port-c atn
  126. 1240 data *clock bih clock
  127. 1250 data clr sec.flag
  128. 1260 data clr $22-flag
  129. 1270 data clr crsr-flag
  130. 1280 data clr restore
  131. 1290 data clr asc.flag
  132. 1300 data bst0 port-c
  133. 1310 data jsr get-byte
  134. 1320 data *test-dev cpx dev-#
  135. 1330 data beq plus13
  136. 1340 data *unlist cpx@ 3f
  137. 1350 data bne atn2
  138. 1360 data *datal bra release
  139. 1370 data *atn2 bbc7 eoi-flag slr
  140. 1380 data *release lda@ 0e
  141. 1390 data bst0 port-c
  142. 1400 data *tfr deca
  143. 1410 data bne tfr
  144. 1420 data bcl7 eoi-flag
  145. 1430 data *slr bcl0 port-c
  146. 1440 data *wait bbc2 port-c wait
  147. 1450 data bra atn
  148. 1460 data *plus13 jsr get-byte
  149. 1470 data bbc2 port-c sec.adr.
  150. 1480 data jmp data
  151. 1490 data *sec.adr. cpx@ 3f
  152. 1500 data beq release
  153. 1502 data bbs7 frz-flag store
  154. 1510 data txa
  155. 1520 data and@ 0f
  156. 1530 data cmp@ 0e
  157. 1540 data bhs autofeed
  158. 1550 data cmp@ 01
  159. 1560 data beq truth
  160. 1570 data cmp@ 02
  161. 1580 data beq ascii
  162. 1582 data cmp@ 03
  163. 1584 data beq freeze
  164. 1590 data cmp@ 05
  165. 1600 data beq truth
  166. 1610 data cmp@ 06
  167. 1620 data beq truth
  168. 1630 data cmp@ 07
  169. 1640 data beq busin
  170. 1650 data *clr.sec. bcl7 sec.flag
  171. 1660 data *store jmp jsr80
  172. 1670 data *autofeed cmp@ 0f
  173. 1680 data bne off
  174. 1690 data bst7 lf-flag
  175. 1700 data bra store
  176. 1703 data *freeze bst7 frz-flag
  177. 1706 data bra store
  178. 1710 data *off bcl7 lf-flag
  179. 1720 data bra store
  180. 1730 data *truth bst7 cbm-flag
  181. 1740 data bcl7 sec.flag
  182. 1750 data bra store
  183. 1760 data *busin bst7 sec.flag
  184. 1770 data bst7 restore
  185. 1780 data bra store
  186. 1790 data *ascii bcl7 sec.flag
  187. 1800 data bcl7 restore
  188. 1810 data bst7 asc.flag
  189. 1820 data bra store
  190. 1830 data *check txa
  191. 1840 data bbc7 cbm-flag check-2
  192. 1850 data cmp@ 0d
  193. 1860 data bne print
  194. 1870 data bbc7 lf-flag print
  195. 1880 data jsr out
  196. 1890 data lda@ 0a
  197. 1900 data *print rts
  198. 1910 data *check-2 bbs7 asc.flag ascii-1
  199. 1920 data cmp@ 22
  200. 1930 data bne verder
  201. 1940 data inc $22-flag
  202. 1950 data *verder and@ 7f
  203. 1960 data cmp@ 1f
  204. 1970 data bls codes
  205. 1980 data txa
  206. 1990 data bbs7 sec.flag transl.
  207. 2000 data cmp@ 5b
  208. 2010 data bhs graphic
  209. 2020 data rts
  210. 2030 data *ascii-1 jmp ascii-2
  211. 2040 data *graphic cmp@ 60
  212. 2050 data bhs bit-8h
  213. 2060 data lda@ 03
  214. 2070 data sta hi-byte
  215. 2080 data lda@ 40
  216. 2090 data sta lo-byte
  217. 2100 data txa
  218. 2110 data sub@ 5b
  219. 2120 data sta label14
  220. 2130 data asla
  221. 2140 data asla
  222. 2150 data add label14
  223. 2160 data add label14
  224. 2170 data add lo-byte
  225. 2180 data sta lo-byte
  226. 2190 data jmp bit-imm.
  227. 2200 data *bit-8h cmp@ 9f
  228. 2210 data bhi m.adr.
  229. 2220 data add@ 60
  230. 2230 data tax
  231. 2240 data *m.adr. clr lo-byte
  232. 2250 data lda@ 01
  233. 2260 data sta hi-byte
  234. 2270 data jsr multiply
  235. 2280 data jmp bit-imm.
  236. 2290 data *codes jmp codes-1
  237. 2300 data *transl. jmp business
  238. 2310 data *multiply txa
  239. 2320 data sub@ a0
  240. 2330 data sta label14
  241. 2340 data *multi clc
  242. 2350 data asla
  243. 2360 data bcc multi-4
  244. 2370 data inc hi-byte
  245. 2380 data clc
  246. 2390 data *multi-4 asla
  247. 2400 data bcc multi-5
  248. 2410 data inc hi-byte
  249. 2420 data clc
  250. 2430 data *multi-5 adc label14
  251. 2440 data bcc sum
  252. 2450 data inc hi-byte
  253. 2460 data clc
  254. 2470 data *sum adc label14
  255. 2480 data bcc result
  256. 2490 data inc hi-byte
  257. 2500 data clc
  258. 2510 data *result sta lo-byte
  259. 2520 data rts
  260. 2530 data *bit-imm. jsr dottest
  261. 2540 data *nxt jsr opcode
  262. 2550 data jsr out
  263. 2560 data incx
  264. 2570 data cpx@ 06
  265. 2580 data bne nxt
  266. 2590 data clra
  267. 2600 data *return rsp
  268. 2610 data jmp jsr80
  269. 2620 data *out bbs0 port-a out
  270. 2630 data sta port-b
  271. 2640 data bcl3 port-c
  272. 2650 data bst3 port-c
  273. 2660 data rts
  274. 2670 data *business cmp@ 5b
  275. 2680 data bhs upper-1
  276. 2690 data cmp@ 41
  277. 2700 data bhs lower
  278. 2710 data rts
  279. 2720 data *lower ora@ 20
  280. 2730 data rts
  281. 2740 data *upper-1 cmp@ 61
  282. 2750 data bhs upper-2
  283. 2760 data sub@ 5b
  284. 2770 data sta label14
  285. 2780 data lda@ 03
  286. 2790 data sta hi-byte
  287. 2800 data lda label14
  288. 2810 data jsr multi
  289. 2820 data add@ 40
  290. 2830 data sta lo-byte
  291. 2840 data jmp bit-imm.
  292. 2850 data *upper-2 cmp@ 7b
  293. 2860 data bhs graph-2
  294. 2870 data and@ 5f
  295. 2880 data rts
  296. 2890 data *graph-2 cmp@ 80
  297. 2900 data bhs kar-a9
  298. 2910 data sub@ 7b
  299. 2920 data *graph-3 sta label14
  300. 2930 data lda@ 03
  301. 2940 data sta hi-byte
  302. 2950 data lda label14
  303. 2960 data jsr multi
  304. 2970 data add@ 64
  305. 2980 data sta lo-byte
  306. 2990 data jmp bit-imm.
  307. 3000 data *kar-a9 cmp@ a9
  308. 3010 data bne kar-ba
  309. 3020 data lda@ 03
  310. 3030 data sta hi-byte
  311. 3040 data lda@ 82
  312. 3050 data sta lo-byte
  313. 3060 data jmp bit-imm.
  314. 3070 data *kar-ba cmp@ ba
  315. 3080 data bne kar-ff
  316. 3090 data lda@ 03
  317. 3100 data sta hi-byte
  318. 3110 data lda@ 88
  319. 3120 data sta lo-byte
  320. 3130 data jmp bit-imm.
  321. 3140 data *kar-ff cmp@ ff
  322. 3150 data bne kar-c0
  323. 3160 data lda@ 03
  324. 3170 data sta hi-byte
  325. 3180 data lda@ 76
  326. 3190 data sta lo-byte
  327. 3200 data jmp bit-imm.
  328. 3210 data *kar-c0 cmp@ c0
  329. 3220 data bne graph-4
  330. 3230 data lda@ 03
  331. 3240 data sta hi-byte
  332. 3250 data lda@ 5e
  333. 3260 data sta lo-byte
  334. 3270 data jmp bit-imm.
  335. 3280 data *graph-4 cmp@ e0
  336. 3290 data bhs graph-5
  337. 3300 data cmp@ c1
  338. 3310 data bhs upper-3
  339. 3320 data jmp m.adr.
  340. 3330 data *graph-5 and@ bf
  341. 3340 data jmp kar-a9
  342. 3350 data *upper-3 cmp@ db
  343. 3360 data bhs graph-6
  344. 3370 data and@ 7f
  345. 3380 data rts
  346. 3390 data *graph-6 sub@ db
  347. 3400 data jmp graph-3
  348. 3410 data *codes-1 txa
  349. 3420 data cmp@ 0d
  350. 3430 data bne codes-2
  351. 3440 data bbc7 crsr-flag cr-1
  352. 3450 data lda restore
  353. 3460 data sta sec.flag
  354. 3470 data clr crsr-flag
  355. 3480 data *cr-1 bbs7 lf-flag lf
  356. 3490 data clr $22-flag
  357. 3500 data rts
  358. 3510 data *lf jsr out
  359. 3520 data clr $22-flag
  360. 3530 data lda@ 0a
  361. 3540 data rts
  362. 3550 data *codes-2 cmp@ 11
  363. 3560 data beq codes-3
  364. 3570 data cmp@ 91
  365. 3580 data beq codes-4
  366. 3590 data cmp@ 12
  367. 3600 data beq codes-5
  368. 3610 data cmp@ 13
  369. 3620 data beq codes-6
  370. 3630 data cmp@ 0e
  371. 3640 data beq codes-7
  372. 3650 data cmp@ 0f
  373. 3660 data beq codes-8
  374. 3670 data bne codes-9
  375. 3680 data *codes-3 bbs0 $22-flag print-d
  376. 3690 data bst7 sec.flag
  377. 3700 data bst7 crsr-flag
  378. 3710 data jmp return
  379. 3720 data *codes-4 bbs0 $22-flag codes-9
  380. 3730 data bcl7 sec.flag
  381. 3740 data bst7 crsr-flag
  382. 3750 data jmp return
  383. 3760 data *codes-5 bbs0 $22-flag print-r
  384. 3770 data jmp return
  385. 3780 data *codes-6 bbs0 $22-flag print-s
  386. 3790 data jmp return
  387. 3800 data *print-d lda@ 8e
  388. 3810 data sta lo-byte
  389. 3820 data *pr-code lda@ 03
  390. 3830 data sta hi-byte
  391. 3840 data jmp bit-imm.
  392. 3850 data *print-r lda@ 94
  393. 3860 data sta lo-byte
  394. 3870 data bra pr-code
  395. 3880 data *print-s lda@ 9a
  396. 3890 data sta lo-byte
  397. 3900 data bra pr-code
  398. 3910 data *codes-7 bbs0 $22-flag codes-9
  399. 3920 data lda@ 1b
  400. 3930 data jsr out
  401. 3940 data lda@ 57
  402. 3950 data jsr out
  403. 3960 data lda@ 01
  404. 3970 data jsr out
  405. 3980 data jmp return
  406. 3990 data *codes-8 bbs0 $22-flag codes-9
  407. 4000 data lda@ 1b
  408. 4010 data jsr out
  409. 4020 data lda@ 57
  410. 4030 data jsr out
  411. 4040 data lda@ 00
  412. 4050 data jsr out
  413. 4060 data jmp return
  414. 4070 data *codes-9 bbs0 $22-flag end
  415. 4080 data cmp@ 10
  416. 4090 data beq chr$16
  417. 4100 data cmp@ 08
  418. 4110 data beq chr$26
  419. 4120 data rts
  420. 4130 data *chr$26 jsr get-byte
  421. 4140 data txa
  422. 4150 data cmp@ 1a
  423. 4160 data beq repead
  424. 4170 data rts
  425. 4180 data *repead jmp rep-char.
  426. 4190 data *chr$16 jmp set-tap
  427. 4200 data *end add@ 40
  428. 4210 data tax
  429. 4220 data cmp@ 45
  430. 4230 data bne hoger-1
  431. 4240 data lda@ a0
  432. 4250 data sta lo-byte
  433. 4260 data lda@ 03
  434. 4270 data sta hi-byte
  435. 4280 data jmp bit-imm.
  436. 4290 data *hoger-1 cmp@ 80
  437. 4300 data bhs hoger-2
  438. 4310 data lda@ 03
  439. 4320 data sta hi-byte
  440. 4330 data txa
  441. 4340 data sub@ 5b
  442. 4350 data sta label14
  443. 4360 data jsr multi
  444. 4370 data add@ 40
  445. 4380 data sta lo-byte
  446. 4390 data jmp bit-rev.
  447. 4400 data *hoger-2 clr lo-byte
  448. 4410 data lda@ 01
  449. 4420 data sta hi-byte
  450. 4430 data jsr multiply
  451. 4440 data *bit-rev. jsr dottest
  452. 4450 data *go-on jsr opcode
  453. 4460 data eor@ fe
  454. 4470 data jsr out
  455. 4480 data incx
  456. 4490 data cpx@ 06
  457. 4500 data bne go-on
  458. 4510 data clra
  459. 4520 data rsp
  460. 4530 data jmp jsr80
  461. 4540 data *dottest bbs7 dot-flag ibm
  462. 4550 data lda@ 1b
  463. 4560 data jsr out
  464. 4570 data lda@ 4b
  465. 4580 data jsr out
  466. 4590 data lda@ 06
  467. 4600 data jsr out
  468. 4610 data clrx
  469. 4620 data clra
  470. 4630 data jsr out
  471. 4640 data rts
  472. 4650 data *ibm lda@ 1b
  473. 4660 data jsr out
  474. 4670 data lda@ 2a
  475. 4680 data jsr out
  476. 4690 data lda@ 00
  477. 4700 data jsr out
  478. 4710 data lda@ 06
  479. 4720 data jsr out
  480. 4730 data clrx
  481. 4740 data clra
  482. 4750 data jsr out
  483. 4760 data rts
  484. 4770 data org 03a8
  485. 4780 data *set-tap lda@ 1b
  486. 4790 data jsr out
  487. 4800 data lda@ 44
  488. 4810 data jsr out
  489. 4820 data jsr get-byte
  490. 4830 data txa
  491. 4840 data and@ 0f
  492. 4850 data asla
  493. 4860 data sta label14
  494. 4870 data asla
  495. 4880 data asla
  496. 4890 data add label14
  497. 4900 data sta label14
  498. 4910 data jsr get-byte
  499. 4920 data txa
  500. 4930 data and@ 0f
  501. 4940 data add label14
  502. 4950 data jsr out
  503. 4960 data lda@ 00
  504. 4970 data jsr out
  505. 4980 data lda@ 09
  506. 4990 data jsr out
  507. 5000 data jmp return
  508. 5010 data org 03d8
  509. 5020 data *ascii-2 cmp@ 9f
  510. 5023 data bls cmp-0d
  511. 5026 data and@ 7f
  512. 5030 data *cmp-0d cmp@ 0d
  513. 5040 data beq asc-lf
  514. 5050 data cmp@ 60
  515. 5060 data bhs asc.low
  516. 5070 data cmp@ 40
  517. 5080 data bhs asc.up
  518. 5090 data *printen rts
  519. 5100 data *asc.low and@ 5f
  520. 5110 data bra printen
  521. 5120 data *asc.up ora@ 20
  522. 5130 data bra printen
  523. 5140 data *asc-lf bbc7 lf-flag printen
  524. 5150 data jsr out
  525. 5160 data lda@ 0a
  526. 5170 data rts
  527. 5180 data org 0738
  528. 5190 data *rep-char. lda@ 1b
  529. 5200 data jsr out
  530. 5210 data bbs7 dot-flag ibm-2
  531. 5220 data lda@ 4b
  532. 5230 data jsr out
  533. 5240 data bra rep-2
  534. 5250 data *ibm-2 lda@ 2a
  535. 5260 data jsr out
  536. 5270 data lda@ 00
  537. 5280 data jsr out
  538. 5290 data *rep-2 jsr get-byte
  539. 5300 data txa
  540. 5310 data sta label14
  541. 5320 data jsr out
  542. 5330 data lda@ 00
  543. 5340 data jsr out
  544. 5350 data jsr get-byte
  545. 5360 data txa
  546. 5370 data ldx label14
  547. 5380 data *rep-3 jsr out
  548. 5390 data decx
  549. 5400 data bne rep-3
  550. 5410 data jmp return
  551. 5420 rem 550 statements - 148 labels
  552. 10000 print"[147]":print"assembler for motorola mc68705":print
  553. 10010 open4,4:poke56,144:clr
  554. 10020 print"even geduld a.u.b.":print
  555. 10030 for cl=36864 to 38912:pokecl,0:next
  556. 10040 poke38910,4:poke38788,128
  557. 10050 print"base adress of ass. code buffer $9000":p=36864:print
  558. 10060 input"how many lines to be assembled";d:print
  559. 10070 input"how many labels are used";c:print:print
  560. 10080 diml$(c),a(c):z=1
  561. 10090 print"first pass running":print:print
  562. 10100 k=0:q=0
  563. 10110 for x=1 to d:printx;
  564. 10120 if z=3 then print#4,x;
  565. 10130 gosub 12250
  566. 10140 goto 10240
  567. 10150 gosub 12450
  568. 10160 next x
  569. 10170 z=z+1
  570. 10180 if z=4 then 10210
  571. 10190 if z=3 then print"print-out":print:print:restore:goto10100
  572. 10200 print"secund pass running":print:print:restore:goto 10100
  573. 10210 print:print:print"assembly complete":print#4:print#4:print#4,"assembly complete"
  574. 10220 print#4:print#4
  575. 10230 close 4:end
  576. 10240 read s$:p$=s$
  577. 10250 if left$(s$,1)="*" then gosub 10930
  578. 10260 m$=left$(s$,3):s$=right$(s$,(len(s$)-3))
  579. 10270 if m$="adc" then b=169:goto 11050
  580. 10280 if m$="add" then b=171:goto 11050
  581. 10290 if m$="and" then b=164:goto 11050
  582. 10300 if m$="asl" then b=56:goto 10990
  583. 10310 if m$="asr" then b=55:goto 10990
  584. 10320 if m$="bcc" then o=36:goto 11450
  585. 10330 if m$="bcl" then b=17:goto 11610
  586. 10340 if m$="bcs" then o=37:goto 11450
  587. 10350 if m$="beq" then o=39:goto 11450
  588. 10360 if m$="bhc" then o=40:goto 11450
  589. 10370 if m$="bhf" then o=41:goto 11450
  590. 10380 if m$="bhi" then o=34:goto 11450
  591. 10390 if m$="bhs" then o=36:goto 11450
  592. 10400 if m$="bih" then o=47:goto 11450
  593. 10410 if m$="bil" then o=46:goto 11450
  594. 10420 if m$="bit" then b=165:goto 11050
  595. 10430 if m$="blo" then o=37:goto 11450
  596. 10440 if m$="bls" then o=35:goto 11450
  597. 10450 if m$="bmc" then o=44:goto 11450
  598. 10460 if m$="bmi" then o=43:goto 11450
  599. 10470 if m$="bms" then o=45:goto 11450
  600. 10480 if m$="bne" then o=38:goto 11450
  601. 10490 if m$="bpl" then o=42:goto 11450
  602. 10500 if m$="bra" then o=32:goto 11450
  603. 10510 if m$="brn" then o=33:goto 11450
  604. 10520 if m$="bbc" then b=1:goto 11720
  605. 10530 if m$="bbs" then b=0:goto 11720
  606. 10540 if m$="bst" then b=16:goto 11610
  607. 10550 if m$="bsr" then o=173:goto 11450
  608. 10560 if m$="clc" then o=152:goto 11780
  609. 10570 if m$="cli" then o=154:goto 11780
  610. 10580 if m$="clr" then b=63:goto 10990
  611. 10590 if m$="cmp" then b=161:goto 11050
  612. 10600 if m$="com" then b=51:goto 10990
  613. 10610 if m$="cpx" then b=163:goto 11050
  614. 10620 if m$="dat" then 12060
  615. 10630 if m$="dec" then b=58:goto10990
  616. 10640 if m$="eor" then b=168:goto11050
  617. 10650 if m$="equ" then 12160
  618. 10660 if m$="inc" then b=60:goto10990
  619. 10670 if m$="jmp" then b=172:goto11050
  620. 10680 if m$="jsr" then b=173:goto11050
  621. 10690 if m$="lda" then b=166:goto11050
  622. 10700 if m$="ldx" then b=174:goto11050
  623. 10710 if m$="lsl" then b=56:goto10990
  624. 10720 if m$="lsr" then b=52:goto10990
  625. 10730 if m$="neg" then b=48:goto10990
  626. 10740 if m$="nop" then o=157:goto11780
  627. 10750 if m$="ora" then b=170:goto11050
  628. 10760 if m$="org" then 12090
  629. 10770 if m$="rol" then b=57:goto10990
  630. 10780 if m$="ror" then b=54:goto10990
  631. 10790 if m$="rsp" then o=156:goto11780
  632. 10800 if m$="rti" then o=128:goto11780
  633. 10810 if m$="rts" then o=129:goto11780
  634. 10820 if m$="sbc" then b=162:goto11050
  635. 10830 if m$="sec" then o=153:goto11780
  636. 10840 if m$="sei" then o=155:goto11780
  637. 10850 if m$="sta" then b=167:goto11050
  638. 10860 if m$="stx" then b=175:goto11050
  639. 10870 if m$="sub" then b=160:goto11050
  640. 10880 if m$="swi" then o=130:goto11780
  641. 10890 if m$="tax" then o=151:goto11780
  642. 10900 if m$="tst" then b=61:goto10990
  643. 10910 if m$="txa" then o=159:goto11780
  644. 10920 print"mnemonic error in line ";x:close4:end
  645. 10930 l$=mid$(s$,2,1):s$=right$(s$,(len(s$)-2))
  646. 10940 if left$(s$,1)=" " then 10970
  647. 10950 l$=l$+left$(s$,1):gosub 12230
  648. 10960 goto 10940
  649. 10970 gosub 12230:k=k+1:l$(k)=l$
  650. 10980 a(k)=q:return
  651. 10990 t=1:m$=left$(s$,1):gosub 12230
  652. 11000 if m$=" " then m=0:goto11140
  653. 11010 if m$="a" then m=1:goto 11100
  654. 11020 if m$="x" then m=2:goto 11100
  655. 11030 if m$="(" then m=3:goto 11120
  656. 11040 print"adress mode error in line ";x:close4:end
  657. 11050 t=2:m$=left$(s$,1):gosub 12230
  658. 11060 if m$="@" then m=0:goto 11350
  659. 11070 if m$=" " then m=2:goto 11140
  660. 11080 if m$="(" then m=3:goto 11120
  661. 11090 goto 11040
  662. 11100 gosub 11800
  663. 11110 goto 10150
  664. 11120 m$=left$(s$,1)
  665. 11130 if m$=")" then 11210
  666. 11140 gosub 11910
  667. 11150 if f=0 then 11250
  668. 11160 if t=2 then 11300
  669. 11170 ifh>0thenprint"read/modefy/write to page zero only - error in line ";x:close4:end
  670. 11180 gosub 11800
  671. 11190 gosub 11880
  672. 11200 goto 10150
  673. 11210 if t=2 then m=5:goto 11230
  674. 11220 m=4
  675. 11230 gosub 11800
  676. 11240 goto 10150
  677. 11250 if z=2 then print"undefined label in line ";x:close4:end
  678. 11260 if t=1 then 11180
  679. 11270 gosub 11800
  680. 11280 gosub 11840
  681. 11290 goto 10150
  682. 11300 if a(y)>q then 11270
  683. 11310 if h>0 then 11270
  684. 11320 if m=2 then m=1:goto 11340
  685. 11330 m=4
  686. 11340 goto 11180
  687. 11350 gosub 12230
  688. 11360 gosub 11380
  689. 11370 goto 11180
  690. 11380 m$=left$(s$,1)
  691. 11390 if asc(m$)<71 and asc(m$)> 64 then l=(asc(m$)-55)*16:goto 11410
  692. 11400 l=(asc(m$)-48)*16
  693. 11410 m$=mid$(s$,2,1)
  694. 11420 if asc(m$)<71 and asc(m$)>64 then l=l+asc(m$)-55:goto 11440
  695. 11430 l=l+asc(m$)-48
  696. 11440 return
  697. 11450 gosub 11810
  698. 11460 gosub 12230
  699. 11470 gosub 11910
  700. 11480 if f=0 then 11560
  701. 11490 if a(y)>q+1 then 11530
  702. 11500 if (q+1)-a(y)>128 then print"branch out of range in line ";x:close4:end
  703. 11510 l=256-((q+1)-a(y))
  704. 11520 goto 11580
  705. 11530 if a(y)-(q+1)>127 then print"branch out of range in line ";x:close4:end
  706. 11540 l=a(y)-(q+1)
  707. 11550 goto 11580
  708. 11560 if z=2 then print"undefined label in line ";x-1:close4:end
  709. 11570 l=0
  710. 11580 if o<16 then return
  711. 11590 gosub 11880
  712. 11600 goto 10150
  713. 11610 m$=left$(s$,1):gosub 12230
  714. 11620 if val(m$)<0 or val(m$)>7 then print"bit number error in line ";x:close4:end
  715. 11630 m=val(m$)
  716. 11640 gosub 12230:gosub 11910
  717. 11650 if f=0 then print"undefined label in line ";x:close4:end
  718. 11660 if a(y)>127thenprint"target byte not in ram - error in line ";x:close4:end
  719. 11670 o=b+(2*m)
  720. 11680 gosub 11810
  721. 11690 if b<16 then return
  722. 11700 gosub 11880
  723. 11710 goto 10150
  724. 11720 gosub 11610
  725. 11730 j=l
  726. 11740 gosub 11470
  727. 11750 h=j
  728. 11760 gosub 11840
  729. 11770 goto 10150
  730. 11780 gosub 11810
  731. 11790 goto 10150
  732. 11800 o=b+(16*m)
  733. 11810 poke(p+q),o:q=q+1
  734. 11820 gosub 12300
  735. 11830 return
  736. 11840 poke(p+q),h:q=q+1
  737. 11850 gosub 12350
  738. 11860 if b=0 or b=1 then l=l-1
  739. 11870 if l<0 then l=0
  740. 11880 poke(p+q),l:q=q+1
  741. 11890 gosub 12400
  742. 11900 return
  743. 11910 l$=""
  744. 11920 if len(s$)=0 then 11960
  745. 11930 l$=l$+left$(s$,1):gosub 12230
  746. 11940 ifright$(l$,1)=")"orright$(l$,1)=" "thenl$=left$(l$,(len(l$)-1)):goto11960
  747. 11950 goto 11920
  748. 11960 y=0
  749. 11970 y=y+1
  750. 11980 if y>k then 12030
  751. 11990 if l$=l$(y) then 12020
  752. 12000 goto 11970
  753. 12010 f=0:h=255:l=255:return
  754. 12020 f=1:h=int(a(y)/256):l=a(y)-(h*256):return
  755. 12030 if z=1 then 12010
  756. 12040 if y>c then 12010
  757. 12050 goto 11990
  758. 12060 gosub 12230
  759. 12070 gosub 11380
  760. 12080 gosub 11880:goto 10150
  761. 12090 gosub 12230
  762. 12100 gosub 11380
  763. 12110 h=l
  764. 12120 s$=right$(s$,(len(s$)-2))
  765. 12130 gosub 11380
  766. 12140 q=l+(256*h)
  767. 12150 goto 10150
  768. 12160 gosub 12230
  769. 12170 gosub 11380
  770. 12180 a(k)=256*l
  771. 12190 s$=right$(s$,(len(s$)-2))
  772. 12200 gosub 11380
  773. 12210 a(k)=a(k)+l
  774. 12220 goto 10150
  775. 12230 s$=right$(s$,(len(s$)-1))
  776. 12240 return
  777. 12250 if z<3 then return
  778. 12260 r=q:e=3
  779. 12270 gosub 12560
  780. 12280 print#4,tab(6) r$;
  781. 12290 return
  782. 12300 if z<3 then return
  783. 12310 r=o:e=2
  784. 12320 gosub 12560
  785. 12330 print#4,tab(11)r$;
  786. 12340 return
  787. 12350 if z<3 then return
  788. 12360 r=h:e=2
  789. 12370 gosub 12560
  790. 12380 print#4,tab(14)r$;
  791. 12390 return
  792. 12400 if z<3 then return
  793. 12410 r=l:e=2
  794. 12420 gosub 12560
  795. 12430 print#4,tab(17)r$;
  796. 12440 return
  797. 12450 if z<3 then return
  798. 12460 hp$=""
  799. 12470 if left$(p$,1)="*" then 12490
  800. 12480 goto 12530
  801. 12490 hp$=hp$+(left$(p$,1))
  802. 12500 p$=right$(p$,(len(p$)-1))
  803. 12510 if left$(p$,1)<>" " then 12490
  804. 12520 print#4,tab(21)hp$;tab(32)p$:goto 12540
  805. 12530 print#4,tab(33)p$
  806. 12540 :
  807. 12550 return
  808. 12560 r$=""
  809. 12570 for y=e to 1 step-1
  810. 12580 i=int(r/16^(y-1))):r=r-(i*(16^(y-1)))
  811. 12590 if i>9 then i$=chr$(i+55):goto 12610
  812. 12600 i$=chr$(i+48)
  813. 12610 r$=r$+i$
  814. 12620 next y
  815. 12630 return
  816.