table 33 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299
  1. "$Id$"
  2. #define em_bsize 2 /* must be equal to EM_BSIZE */
  3. #define ND !defined($1)
  4. #define D defined($1)
  5. #define BASE 240
  6. #define MIN (0-BASE)
  7. #define MAX (254-em_bsize-BASE)
  8. #define IN(x) (x>=MIN && x<=MAX)
  9. #define IND(x) (x>=MIN && x<=(MAX-2))
  10. /*****************************************************\
  11. **** ****
  12. **** 6 5 0 0 B A C K E N D T A B L E ****
  13. **** ****
  14. \*****************************************************/
  15. /*
  16. * INTEGER SIZE: 16 bits
  17. * POINTER SIZE: 16 bits
  18. * NO FLOATS
  19. */
  20. EM_WSIZE = 2
  21. EM_PSIZE = 2
  22. EM_BSIZE = 2
  23. /*********************\
  24. * R E G I S T E R S *
  25. \*********************/
  26. REGISTERS:
  27. AA = ("a",1), REG.
  28. XX = ("x",1), REG.
  29. AX = ("<dummy>",2,AA,XX), R16.
  30. /* AX is a registerpair, A contains the highbyte of a word and
  31. * X contains the lowbyte
  32. */
  33. /***************\
  34. * T O K E N S *
  35. \***************/
  36. TOKENS:
  37. IMMEDIATE = {INT off;} 1 "#%[off]" /* a fake token the
  38. * cgg needs one
  39. */
  40. /***********************************\
  41. * T O K E N E X P R E S S I O N S *
  42. \***********************************/
  43. TOKENEXPRESSIONS:
  44. AAA = IMMEDIATE /* a fake tokenexpression
  45. * the cgg needs one
  46. */
  47. /***********\
  48. * C O D E *
  49. \***********/
  50. CODE:
  51. /* GROUP 1 - LOAD */
  52. loc ($1%256)==($1/256) | |
  53. allocate(R16)
  54. "lda #[$1].l"
  55. "tax"
  56. | %[a] | |
  57. loc | |
  58. allocate(R16)
  59. "lda #[$1].h"
  60. "ldx #[$1].l"
  61. | %[a] | |
  62. ldc highw(1)==loww(1) && (loww(1)%256)==(loww(1)/256) | |
  63. allocate(R16)
  64. "lda #[%(loww(1)%)].l"
  65. "tax"
  66. "jsr Push"
  67. | %[a] | |
  68. ldc | |
  69. allocate(R16)
  70. "lda #[%(highw(1)%)].h"
  71. "ldx #[%(highw(1)%)].l"
  72. "jsr Push"
  73. "lda #[%(loww(1)%)].h"
  74. "ldx #[%(loww(1)%)].l"
  75. | %[a] | |
  76. lol IN($1) | |
  77. allocate(R16)
  78. "ldy #BASE+$1"
  79. "lda (LBl),y"
  80. "tax"
  81. "iny"
  82. "lda (LBl),y"
  83. | %[a] | |
  84. lol | |
  85. allocate(R16)
  86. "lda #[$1].h"
  87. "ldx #[$1].l"
  88. "jsr Lol"
  89. | %[a] | |
  90. loe | |
  91. allocate(R16)
  92. "lda $1+1"
  93. "ldx $1"
  94. | %[a] | |
  95. lil IN($1) | |
  96. allocate(R16)
  97. "ldy #BASE+$1"
  98. "lda (LBl),y"
  99. "tax"
  100. "iny"
  101. "lda (LBl),y"
  102. "jsr Loi"
  103. | %[a] | |
  104. lil | |
  105. allocate(R16)
  106. "lda #[$1].h"
  107. "ldx #[$1].l"
  108. "jsr Lol"
  109. "jsr Loi"
  110. | %[a] | |
  111. lof $1==0 | R16 |
  112. "jsr Loi"
  113. | %[1] | |
  114. lof | |
  115. allocate(R16)
  116. "lda #[$1].h"
  117. "ldx #[$1].l"
  118. "jsr Adi2"
  119. "jsr Loi"
  120. | %[a] | |
  121. lal | |
  122. allocate(R16)
  123. "clc"
  124. "lda #[$1].l"
  125. "adc LB"
  126. "tax"
  127. "lda #[$1].h"
  128. "adc LB+1"
  129. | %[a] | |
  130. lae | |
  131. allocate(R16)
  132. "lda #[$1].h"
  133. "ldx #[$1].l"
  134. | %[a] | |
  135. lxl $1==0 | |
  136. allocate(R16)
  137. "lda LB+1"
  138. "ldx LB"
  139. | %[a] | |
  140. lxl $1<=255 | | /* n restricted to a max of 255 */
  141. allocate(R16)
  142. "ldx #[$1].l"
  143. "jsr Lxl"
  144. | %[a] | |
  145. lxa $1==0 | |
  146. allocate(R16)
  147. "jsr Lxa1"
  148. | %[a] | |
  149. lxa $1<=255 | | /* n restricted to a max of 255 */
  150. allocate(R16)
  151. "ldx #[$1].l"
  152. "jsr Lxa2"
  153. | %[a] | |
  154. loi $1==1 | R16 |
  155. "jsr Loi1"
  156. | %[1] | |
  157. loi $1==2 | R16 |
  158. "jsr Loi"
  159. | %[1] | |
  160. loi $1==4 | R16 |
  161. "jsr Ldi"
  162. | | |
  163. loi D | R16 |
  164. "ldy #[$1].h"
  165. "sty NBYTES+1"
  166. "ldy #[$1].l"
  167. "jsr Loil"
  168. | | |
  169. los $1==2 | R16 |
  170. "jsr Los"
  171. | | |
  172. ldl IND($1) | |
  173. allocate(R16)
  174. "ldy #BASE+$1+3"
  175. "lda (LBl),y"
  176. "pha"
  177. "dey"
  178. "lda (LBl),y"
  179. "tax"
  180. "pla"
  181. "jsr Push"
  182. "dey"
  183. "lda (LBl),y"
  184. "pha"
  185. "dey"
  186. "lda (LBl),y"
  187. "tax"
  188. "pla"
  189. | %[a] | |
  190. ldl | |
  191. allocate(R16)
  192. "lda #[$1].h"
  193. "ldx #[$1].l"
  194. "jsr Locaddr"
  195. "jsr Ldo"
  196. | | |
  197. lde | |
  198. allocate(R16)
  199. "lda $1+3"
  200. "ldx $1+2"
  201. "jsr Push"
  202. "lda $1+1"
  203. "ldx $1"
  204. | %[a] | |
  205. ldf $1==0 | R16 |
  206. "jsr Ldi"
  207. | | |
  208. ldf | |
  209. allocate(R16)
  210. "lda #[$1].h"
  211. "ldx #[$1].l"
  212. "jsr Adi2"
  213. "jsr Ldi"
  214. | | |
  215. lpi | |
  216. allocate(R16)
  217. "lda #[$1].h"
  218. "ldx #[$1].l"
  219. | %[a] | |
  220. /* GROUP 2 - STORE */
  221. stl IN($1) | R16 |
  222. "ldy #BASE+1+$1"
  223. "sta (LBl),y"
  224. "txa"
  225. "dey"
  226. "sta (LBl),y"
  227. | | |
  228. stl | |
  229. allocate(R16)
  230. "lda #[$1].h"
  231. "ldx #[$1].l"
  232. "jsr Stl"
  233. | | |
  234. ste | R16 |
  235. "sta $1+1"
  236. "stx $1"
  237. | | |
  238. sil IN($1) | |
  239. allocate(R16)
  240. "ldy #BASE+$1"
  241. "lda (LBl),y"
  242. "tax"
  243. "iny"
  244. "lda (LBl),y"
  245. "jsr Sti"
  246. | | |
  247. sil | |
  248. allocate(R16)
  249. "lda #[$1].h"
  250. "ldx #[$1].l"
  251. "jsr Lol"
  252. "jsr Sti"
  253. | | |
  254. stf $1==0 | R16 |
  255. "jsr Sti"
  256. | | |
  257. stf | |
  258. allocate(R16)
  259. "lda #[$1].h"
  260. "ldx #[$1].l"
  261. "jsr Adi2"
  262. "jsr Sti"
  263. | | |
  264. sti $1==1 | R16 |
  265. "jsr Sti1"
  266. | | |
  267. sti $1==2 | R16 |
  268. "jsr Sti"
  269. | | |
  270. sti $1==4 | R16 |
  271. "jsr Sdi"
  272. | | |
  273. sti D | R16 |
  274. "ldy #[$1].h"
  275. "sty NBYTES+1"
  276. "ldy #[$1].l"
  277. "jsr Stil"
  278. | | |
  279. sts $1==2 | R16 |
  280. "jsr Sts"
  281. | | |
  282. sdl IND($1) | R16 |
  283. "ldy #BASE+$1"
  284. "pha"
  285. "txa"
  286. "sta (LBl),y"
  287. "iny"
  288. "pla"
  289. "sta (LBl),y"
  290. "jsr Pop"
  291. "iny"
  292. "pha"
  293. "txa"
  294. "sta (LBl),y"
  295. "iny"
  296. "pla"
  297. "sta (LBl),y"
  298. | | |
  299. sdl | |
  300. allocate(R16)
  301. "lda #[$1].h"
  302. "ldx #[$1].l"
  303. "jsr Locaddr"
  304. "jsr Sdo"
  305. | | |
  306. sde | R16 |
  307. "sta $1+1"
  308. "stx $1"
  309. "jsr Pop"
  310. "sta $1+3"
  311. "stx $1+2"
  312. | | |
  313. sdf $1==0 | R16 |
  314. "jsr Sdi"
  315. | | |
  316. sdf | |
  317. allocate(R16)
  318. "lda #[$1].h"
  319. "ldx #[$1].l"
  320. "jsr Adi2"
  321. "jsr Sdi"
  322. | | |
  323. /* GROUP 3 - INTEGER ARITHMETIC */
  324. loc lol adi (IN($2) && $3==2) | |
  325. allocate(R16)
  326. "ldy #BASE+$2"
  327. "clc"
  328. "lda #[$1].l"
  329. "adc (LBl),y"
  330. "tax"
  331. "iny"
  332. "lda #[$1].h"
  333. "adc (LBl),y"
  334. | %[a] | |
  335. lol loc adi | | | | loc $2 lol $1 adi $3 |
  336. lol lol adi (IN($1) && IN($2) && $3==2) | |
  337. allocate(R16)
  338. "ldy #BASE+$1+1"
  339. "lda (LBl),y"
  340. "pha"
  341. "dey"
  342. "lda (LBl),y"
  343. "ldy #BASE+$2"
  344. "clc"
  345. "adc (LBl),y"
  346. "tax"
  347. "iny"
  348. "pla"
  349. "adc (LBl),y"
  350. | %[a] | |
  351. lol loe adi (IN($1) && $3==2) | |
  352. allocate(R16)
  353. "ldy #BASE+$1"
  354. "clc"
  355. "lda (LBl),y"
  356. "adc $2"
  357. "tax"
  358. "iny"
  359. "lda (LBl),y"
  360. "adc $2+1"
  361. | %[a] | |
  362. loe lol adi | | | | lol $2 loe $1 adi $3 |
  363. loe loe adi $3==2 | |
  364. allocate(R16)
  365. "clc"
  366. "lda $1"
  367. "adc $2"
  368. "tax"
  369. "lda $1+1"
  370. "adc $2+1"
  371. | %[a] | |
  372. loc loe adi $3==2 | |
  373. allocate(R16)
  374. "clc"
  375. "lda #[$1].l"
  376. "adc $2"
  377. "tax"
  378. "lda #[$1].h"
  379. "adc $2+1"
  380. | %[a] | |
  381. loe loc adi | | | | loc $2 loe $1 adi $3 |
  382. ldl adi IND($1) && $2==2 | |
  383. allocate(R16)
  384. "ldy #BASE+$1"
  385. "clc"
  386. "lda (LBl),y"
  387. "iny"
  388. "iny"
  389. "adc (LBl),y"
  390. "tax"
  391. "dey"
  392. "lda (LBl),y"
  393. "iny"
  394. "iny"
  395. "adc (LBl),y"
  396. | %[a] | |
  397. lde adi $2==2 | |
  398. allocate(R16)
  399. "clc"
  400. "lda $1"
  401. "adc $1+2"
  402. "tax"
  403. "lda $1+1"
  404. "adc $1+3"
  405. | %[a] | |
  406. loc adi $2==2 | R16 |
  407. "pha"
  408. "txa"
  409. "clc"
  410. "adc #[$1].l"
  411. "tax"
  412. "pla"
  413. "adc #[$1].h"
  414. | %[1] | |
  415. lol adi IN($1) && $2==2 | R16 |
  416. "pha"
  417. "ldy #BASE+$1"
  418. "clc"
  419. "txa"
  420. "adc (LBl),y"
  421. "tax"
  422. "iny"
  423. "pla"
  424. "adc (LBl),y"
  425. | %[1] | |
  426. loe adi $2==2 | R16 |
  427. "pha"
  428. "clc"
  429. "txa"
  430. "adc $1"
  431. "tax"
  432. "pla"
  433. "adc $1+1"
  434. | %[1] | |
  435. lol lol adi IN($1) && !IN($2) && $3==2
  436. | | | | lol $2 lol $1 adi $3 |
  437. adi $1==2 | R16 |
  438. "jsr Adi2"
  439. | %[1] | |
  440. adi $1==4 | |
  441. allocate(R16)
  442. "jsr Adi4"
  443. | | |
  444. adi ND | R16 |
  445. "jsr Test2"
  446. "jsr Adi2"
  447. | %[1] | |
  448. loc lol sbi (IN($2) && $3==2) | |
  449. allocate(R16)
  450. "ldy #BASE+$1"
  451. "sec"
  452. "lda #[$1].l"
  453. "sbc (LBl),y"
  454. "tax"
  455. "iny"
  456. "lda #[$1].h"
  457. "sbc (LBl),y"
  458. | %[a] | |
  459. lol loc sbi | | | | lol $1 loc 0-$2 adi $3 |
  460. lol lol sbi (IN($1) && IN($2) && $3==2) | |
  461. allocate(R16)
  462. "ldy #BASE+$1+1"
  463. "lda (LBl),y"
  464. "pha"
  465. "dey"
  466. "lda (LBl),y"
  467. "ldy #BASE+$2"
  468. "sec"
  469. "sbc (LBl),y"
  470. "tax"
  471. "iny"
  472. "pla"
  473. "sbc (LBl),y"
  474. | %[a] | |
  475. lol loe sbi (IN($1) && $3==2) | |
  476. allocate(R16)
  477. "ldy #BASE+$1"
  478. "sec"
  479. "lda (LBl),y"
  480. "sbc $2"
  481. "tax"
  482. "iny"
  483. "lda (LBl),y"
  484. "sbc $2+1"
  485. | %[a] | |
  486. loe lol sbi (IN($2) && $3==2) | |
  487. allocate(R16)
  488. "ldy #BASE+$1"
  489. "sec"
  490. "lda $2"
  491. "sbc (LBl),y"
  492. "tax"
  493. "iny"
  494. "lda $2+1"
  495. "sbc (LBl),y"
  496. | %[a] | |
  497. loe loe sbi $3==2 | |
  498. allocate(R16)
  499. "sec"
  500. "lda $1"
  501. "sbc $2"
  502. "tax"
  503. "lda $1+1"
  504. "sbc $2+1"
  505. | %[a] | |
  506. loc loe sbi $3==2 | |
  507. allocate(R16)
  508. "sec"
  509. "lda #[$1].l"
  510. "sbc $2"
  511. "tax"
  512. "lda #[$1].h"
  513. "sbc $2+1"
  514. | %[a] | |
  515. loe loc sbi | | | | loe $1 loc 0-$2 adi $3 |
  516. ldl sbi IND($1) && $2==2 | |
  517. allocate(R16)
  518. "ldy #BASE+$1+2"
  519. "sec"
  520. "lda (LBl),y"
  521. "dey"
  522. "dey"
  523. "sbc (LBl),y"
  524. "tax"
  525. "ldy #BASE+$1+3"
  526. "lda (LBl),y"
  527. "dey"
  528. "dey"
  529. "sbc (LBl),y"
  530. | %[a] | |
  531. lde sbi $2==2 | |
  532. allocate(R16)
  533. "sec"
  534. "lda $1+2"
  535. "sbc $1"
  536. "tax"
  537. "lda $1+3"
  538. "sbc $1"
  539. | %[a] | |
  540. loc sbi $2==2 | R16 |
  541. "pha"
  542. "txa"
  543. "sec"
  544. "sbc #[$1].l"
  545. "tax"
  546. "pla"
  547. "sbc #[$1].h"
  548. | %[1] | |
  549. lol sbi IN($1) && $2==2 | R16 |
  550. "pha"
  551. "ldy #BASE+$1"
  552. "sec"
  553. "txa"
  554. "sbc (LBl),y"
  555. "tax"
  556. "iny"
  557. "pla"
  558. "sbc #[$1].h"
  559. | %[1] | |
  560. loe sbi $2==2 | R16 |
  561. "pha"
  562. "sec"
  563. "txa"
  564. "sbc $1"
  565. "tax"
  566. "pla"
  567. "sbc $1+1"
  568. | %[1] | |
  569. sbi $1==2 | R16 |
  570. "jsr Sbi2"
  571. | %[1] | |
  572. sbi $1==4 | |
  573. allocate(R16)
  574. "jsr Sbi4"
  575. | | |
  576. sbi ND | R16 |
  577. "jsr Test2"
  578. "jsr Sbi2"
  579. | %[1] | |
  580. loc lol mli (IN($2) && $3==2) | |
  581. allocate(R16)
  582. "lda #[$1].l"
  583. "sta ARTH"
  584. "lda #[$1].h"
  585. "sta ARTH+1"
  586. "ldy #BASE+$2"
  587. "lda (LBl),y"
  588. "sta ARTH+2"
  589. "iny"
  590. "lda (LBl),y"
  591. "sta ARTH+3"
  592. "jsr Mlinp"
  593. | %[a] | |
  594. lol loc mli | | | | loc $2 lol $1 mli $3 |
  595. lol lol mli (IN($1) && IN($2) && $3==2) | |
  596. allocate(R16)
  597. "ldy #BASE+$1"
  598. "lda (LBl),y"
  599. "sta ARTH"
  600. "iny"
  601. "lda (LBl),y"
  602. "sta ARTH+1"
  603. "ldy #BASE+$2"
  604. "lda (LBl),y"
  605. "sta ARTH+2"
  606. "iny"
  607. "lda (LBl),y"
  608. "sta ARTH+3"
  609. "jsr Mlinp"
  610. | %[a] | |
  611. lol loe mli (IN($1) && $3==2) | |
  612. allocate(R16)
  613. "ldy #BASE+$1"
  614. "lda (LBl),y"
  615. "sta ARTH"
  616. "iny"
  617. "lda (LBl),y"
  618. "sta ARTH+1"
  619. "lda $2"
  620. "sta ARTH+2"
  621. "lda $2+1"
  622. "sta ARTH+3"
  623. "jsr Mlinp"
  624. | %[a] | |
  625. loe lol mli (IN($2) && $3==2) | | | | lol $2 loe $1 mli $3 |
  626. loe loe mli $3==2 | |
  627. allocate(R16)
  628. "lda $1"
  629. "sta ARTH"
  630. "lda $1+1"
  631. "sta ARTH+1"
  632. "lda $2"
  633. "sta ARTH+2"
  634. "lda $2+1"
  635. "sta ARTH+3"
  636. "jsr Mlinp"
  637. | %[a] | |
  638. loc loe mli $3==2 | |
  639. allocate(R16)
  640. "lda #[$1].l"
  641. "sta ARTH"
  642. "lda #[$1].h"
  643. "sta ARTH+1"
  644. "lda $2"
  645. "sta ARTH+2"
  646. "lda $2+1"
  647. "sta ARTH+3"
  648. "jsr Mlinp"
  649. | %[a] | |
  650. loe loc mli | | | | loc $2 loe $1 mli $3 |
  651. ldl mli IND($1) && $2==2 | |
  652. allocate(R16)
  653. "ldy #BASE+$1"
  654. "lda (LBl),y"
  655. "sta ARTH"
  656. "iny"
  657. "lda (LBl),y"
  658. "sta ARTH+1"
  659. "iny"
  660. "lda (LBl),y"
  661. "sta ARTH+2"
  662. "iny"
  663. "lda (LBl),y"
  664. "sta ARTH+3"
  665. "jsr Mlinp"
  666. | %[a] | |
  667. lde mli $2==2 | |
  668. allocate(R16)
  669. "lda $1"
  670. "sta ARTH"
  671. "lda $1+1"
  672. "sta ARTH+1"
  673. "lda $1+2"
  674. "sta ARTH+2"
  675. "lda $1+3"
  676. "sta ARTH+3"
  677. "jsr Mlinp"
  678. | %[a] | |
  679. loc mli $2==2 | R16 |
  680. "stx ARTH"
  681. "sta ARTH+1"
  682. "lda #[$1].l"
  683. "sta ARTH+2"
  684. "lda #[$1].h"
  685. "sta ARTH+3"
  686. "jsr Mlinp"
  687. | %[1] | |
  688. lol mli IN($1) && $2==2 | R16 |
  689. "stx ARTH"
  690. "sta ARTH+1"
  691. "ldy #BASE+$1"
  692. "lda (LBl),y"
  693. "sta ARTH+2"
  694. "iny"
  695. "lda (LBl),y"
  696. "sta ARTH+3"
  697. "jsr Mlinp"
  698. | %[1] | |
  699. loe mli $2==2 | R16 |
  700. "stx ARTH"
  701. "sta ARTH+1"
  702. "lda $1"
  703. "sta ARTH+2"
  704. "lda $1+1"
  705. "sta ARTH+3"
  706. "jsr Mlinp"
  707. | %[1] | |
  708. lol lol mli IN($1) && !IN($2) && $3==2
  709. | | | | lol $2 lol $1 mli $3 |
  710. mli $1==2 | R16 |
  711. "jsr Mli2"
  712. | %[1] | |
  713. mli $1==4 | |
  714. allocate(R16)
  715. "jsr Mli4"
  716. | | |
  717. mli ND | R16 |
  718. "jsr Test2"
  719. "jsr Mli2"
  720. | %[1] | |
  721. loc lol dvi (IN($2) && $3==2) | |
  722. allocate(R16)
  723. "ldy #BASE+$2"
  724. "lda (LBl),y"
  725. "sta ARTH"
  726. "iny"
  727. "lda (LBl),y"
  728. "sta ARTH+1"
  729. "lda #[$1].l"
  730. "sta ARTH+2"
  731. "lda #[$1].h"
  732. "sta ARTH+3"
  733. "ldy #1"
  734. "sty UNSIGN"
  735. "jsr Div"
  736. | %[a] | |
  737. lol loc dvi (IN($1) && $3==2) | |
  738. allocate(R16)
  739. "lda #[$2].l"
  740. "sta ARTH"
  741. "lda #[$2].h"
  742. "sta ARTH+1"
  743. "ldy #BASE+$1"
  744. "lda (LBl),y"
  745. "sta ARTH+2"
  746. "iny"
  747. "lda (LBl),y"
  748. "sta ARTH+3"
  749. "ldy #1"
  750. "sty UNSIGN"
  751. "jsr Div"
  752. | %[a] | |
  753. lol lol dvi (IN($1) && IN($2) && $3==2) | |
  754. allocate(R16)
  755. "ldy #BASE+$2"
  756. "lda (LBl),y"
  757. "sta ARTH"
  758. "iny"
  759. "lda (LBl),y"
  760. "sta ARTH+1"
  761. "ldy #BASE+$1"
  762. "lda (LBl),y"
  763. "sta ARTH+2"
  764. "iny"
  765. "lda (LBl),y"
  766. "sta ARTH+3"
  767. "ldy #1"
  768. "sty UNSIGN"
  769. "jsr Div"
  770. | %[a] | |
  771. lol loe dvi (IN($1) && $3==2) | |
  772. allocate(R16)
  773. "ldy #BASE+$1"
  774. "lda (LBl),y"
  775. "sta ARTH+2"
  776. "iny"
  777. "lda (LBl),y"
  778. "sta ARTH+3"
  779. "lda $2"
  780. "sta ARTH"
  781. "lda $2+1"
  782. "sta ARTH+1"
  783. "ldy #1"
  784. "sty UNSIGN"
  785. "jsr Div"
  786. | %[a] | |
  787. loe lol dvi (IN($2) && $3==2) | |
  788. allocate(R16)
  789. "ldy #BASE+$2"
  790. "lda (LBl),y"
  791. "sta ARTH"
  792. "iny"
  793. "lda (LBl),y"
  794. "sta ARTH+1"
  795. "lda $2"
  796. "sta ARTH+2"
  797. "lda $2+1"
  798. "sta ARTH+3"
  799. "ldy #1"
  800. "sty UNSIGN"
  801. "jsr Div"
  802. | %[a] | |
  803. loe loe dvi $3==2 | |
  804. allocate(R16)
  805. "lda $2"
  806. "sta ARTH"
  807. "lda $2+1"
  808. "sta ARTH+1"
  809. "lda $1"
  810. "sta ARTH+2"
  811. "lda $1+1"
  812. "sta ARTH+3"
  813. "ldy #1"
  814. "sty UNSIGN"
  815. "jsr Div"
  816. | %[a] | |
  817. loc loe dvi $3==2 | |
  818. allocate(R16)
  819. "lda #[$1].l"
  820. "sta ARTH+2"
  821. "lda #[$1].h"
  822. "sta ARTH+3"
  823. "lda $2"
  824. "sta ARTH"
  825. "lda $2+1"
  826. "sta ARTH+1"
  827. "ldy #1"
  828. "sty UNSIGN"
  829. "jsr Div"
  830. | %[a] | |
  831. loe loc dvi $3==2 | |
  832. allocate(R16)
  833. "lda #[$2].l"
  834. "sta ARTH"
  835. "lda #[$2].h"
  836. "sta ARTH+1"
  837. "lda $1"
  838. "sta ARTH+2"
  839. "lda $1+1"
  840. "sta ARTH+3"
  841. "ldy #1"
  842. "sty UNSIGN"
  843. "jsr Div"
  844. | %[a] | |
  845. ldl dvi IND($1) && $2==2 | |
  846. allocate(R16)
  847. "ldy #BASE+$1"
  848. "lda (LBl),y"
  849. "sta ARTH"
  850. "iny"
  851. "lda (LBl),y"
  852. "sta ARTH+1"
  853. "iny"
  854. "lda (LBl),y"
  855. "sta ARTH+2"
  856. "iny"
  857. "lda (LBl),y"
  858. "sta ARTH+3"
  859. "ldy #1"
  860. "sty UNSIGN"
  861. "jsr Div"
  862. | %[a] | |
  863. lde dvi $2==2 | |
  864. allocate(R16)
  865. "lda $1"
  866. "sta ARTH"
  867. "lda $1+1"
  868. "sta ARTH+1"
  869. "lda $1+2"
  870. "sta ARTH+2"
  871. "lda $1+3"
  872. "sta ARTH+3"
  873. "ldy #1"
  874. "sty UNSIGN"
  875. "jsr Div"
  876. | %[a] | |
  877. loc dvi $2==2 | R16 |
  878. "stx ARTH+2"
  879. "sta ARTH+3"
  880. "lda #[$1].l"
  881. "sta ARTH"
  882. "lda #[$1].h"
  883. "sta ARTH+1"
  884. "ldy #1"
  885. "sty UNSIGN"
  886. "jsr Div"
  887. | %[1] | |
  888. lol dvi IN($1) && $2==2 | R16 |
  889. "stx ARTH+2"
  890. "sta ARTH+3"
  891. "ldy #BASE+$1"
  892. "lda (LBl),y"
  893. "sta ARTH"
  894. "iny"
  895. "lda (LBl),y"
  896. "sta ARTH+1"
  897. "ldy #1"
  898. "sty UNSIGN"
  899. "jsr Div"
  900. | %[1] | |
  901. loe dvi $2==2 | R16 |
  902. "stx ARTH+2"
  903. "sta ARTH+3"
  904. "lda $1"
  905. "sta ARTH"
  906. "lda $1+1"
  907. "sta ARTH+1"
  908. "ldy #1"
  909. "sty UNSIGN"
  910. "jsr Div"
  911. | %[1] | |
  912. dvi $1==2 | R16 |
  913. "jsr Dvi2"
  914. | %[1] | |
  915. dvi $1==4 | |
  916. allocate(R16)
  917. "jsr Dvi4"
  918. | | |
  919. dvi ND | R16 |
  920. "jsr Test2"
  921. "jsr Dvi2"
  922. | %[1] | |
  923. rmi $1==2 | R16 |
  924. "jsr Rmi2"
  925. | %[1] | |
  926. rmi $1==4 | |
  927. allocate(R16)
  928. "jsr Rmi4"
  929. | | |
  930. rmi ND | R16 |
  931. "jsr Test2"
  932. "jsr Rmi2"
  933. | %[1] | |
  934. ngi $1==2 | R16 |
  935. "jsr Ngi2"
  936. | %[1] | |
  937. ngi $1==4 | |
  938. allocate(R16)
  939. "lda SP+1"
  940. "ldx SP+2"
  941. "jsr Ngi4"
  942. | | |
  943. ngi ND | R16 |
  944. "jsr Test2"
  945. "jsr Ngi2"
  946. | %[1] | |
  947. sli $1==2 | R16 |
  948. "jsr Sli2"
  949. | %[1] | |
  950. sli $1==4 | R16 |
  951. "jsr Sli4"
  952. | | |
  953. sli ND | R16 |
  954. "jsr Test2"
  955. "jsr Sli2"
  956. | %[1] | |
  957. sri $1==2 | R16 |
  958. "jsr Sri2"
  959. | %[1] | |
  960. sri $1==4 | R16 |
  961. "jsr Sri4"
  962. | | |
  963. sri ND | R16 |
  964. "jsr Test2"
  965. "jsr Sri2"
  966. | %[1] | |
  967. /* GROUP 4 - UNSIGNED ARITHMETIC */
  968. loc lol adu | | | | loc $1 lol $2 adi $3 |
  969. lol loc adu | | | | lol $1 loc $2 adi $3 |
  970. lol lol adu | | | | lol $1 lol $2 adi $3 |
  971. lol loe adu | | | | lol $1 loe $2 adi $3 |
  972. loe lol adu | | | | loe $1 lol $2 adi $3 |
  973. loe loe adu | | | | loe $1 loe $2 adi $3 |
  974. loc loe adu | | | | loc $1 loe $2 adi $3 |
  975. loe loc adu | | | | loe $1 loc $2 adi $3 |
  976. ldl adu | | | | ldl $1 adi $2 |
  977. lde adu | | | | lde $1 adi $2 |
  978. loc adu | | | | loc $1 adi $2 |
  979. lol adu | | | | lol $1 adi $2 |
  980. loe adu | | | | loe $1 adi $2 |
  981. adu | | | | adi $1 |
  982. loc lol sbu | | | | loc $1 lol $2 sbi $3 |
  983. lol loc sbu | | | | lol $1 loc $2 sbi $3 |
  984. lol lol sbu | | | | lol $1 lol $2 sbi $3 |
  985. lol loe sbu | | | | lol $1 loe $2 sbi $3 |
  986. loe lol sbu | | | | loe $1 lol $2 sbi $3 |
  987. loe loe sbu | | | | loe $1 loe $2 sbi $3 |
  988. loc loe sbu | | | | loc $1 loe $2 sbi $3 |
  989. loe loc sbu | | | | loe $1 loc $2 sbi $3 |
  990. ldl sbu | | | | ldl $1 sbi $2 |
  991. lde sbu | | | | lde $1 sbi $2 |
  992. loc sbu | | | | loc $1 sbi $2 |
  993. lol sbu | | | | lol $1 sbi $2 |
  994. loe sbu | | | | loe $1 sbi $2 |
  995. sbu | | | | sbi $1 |
  996. loc lol mlu (IN($2) && $3==2) | |
  997. allocate(R16)
  998. "lda #[$1].l"
  999. "sta ARTH"
  1000. "lda #[$1].h"
  1001. "sta ARTH+1"
  1002. "ldy #BASE+$2"
  1003. "lda (LBl),y"
  1004. "sta ARTH+2"
  1005. "iny"
  1006. "lda (LBl),y"
  1007. "sta ARTH+3"
  1008. "ldy #0"
  1009. "sty UNSIGN"
  1010. "jsr Mul"
  1011. | %[a] | |
  1012. lol loc mlu | | | | loc $2 lol $1 mlu $3 |
  1013. lol lol mlu (IN($1) && IN($2) && $3==2) | |
  1014. allocate(R16)
  1015. "ldy #BASE+$1"
  1016. "lda (LBl),y"
  1017. "sta ARTH"
  1018. "iny"
  1019. "lda (LBl),y"
  1020. "sta ARTH+1"
  1021. "ldy #BASE+$2"
  1022. "lda (LBl),y"
  1023. "sta ARTH+2"
  1024. "iny"
  1025. "lda (LBl),y"
  1026. "sta ARTH+3"
  1027. "ldy #0"
  1028. "sty UNSIGN"
  1029. "jsr Mul"
  1030. | %[a] | |
  1031. lol loe mlu (IN($1) && $3==2) | |
  1032. allocate(R16)
  1033. "ldy #BASE+$1"
  1034. "lda (LBl),y"
  1035. "sta ARTH"
  1036. "iny"
  1037. "lda (LBl),y"
  1038. "sta ARTH+1"
  1039. "lda $2"
  1040. "sta ARTH+2"
  1041. "lda $2+1"
  1042. "sta ARTH+3"
  1043. "ldy #0"
  1044. "sty UNSIGN"
  1045. "jsr Mul"
  1046. | %[a] | |
  1047. loe lol mlu (IN($2) && $3==2) | | | | lol $2 loe $1 mlu $3 |
  1048. loe loe mlu $3==2 | |
  1049. allocate(R16)
  1050. "lda $1"
  1051. "sta ARTH"
  1052. "lda $1+1"
  1053. "sta ARTH+1"
  1054. "lda $2"
  1055. "sta ARTH+2"
  1056. "lda $2+1"
  1057. "sta ARTH+3"
  1058. "ldy #0"
  1059. "sty UNSIGN"
  1060. "jsr Mul"
  1061. | %[a] | |
  1062. loc loe mlu $3==2 | |
  1063. allocate(R16)
  1064. "lda #[$1].l"
  1065. "sta ARTH"
  1066. "lda #[$1].h"
  1067. "sta ARTH+1"
  1068. "lda $2"
  1069. "sta ARTH+2"
  1070. "lda $2+1"
  1071. "sta ARTH+3"
  1072. "ldy #0"
  1073. "sty UNSIGN"
  1074. "jsr Mul"
  1075. | %[a] | |
  1076. loe loc mlu | | | | loc $2 loe $1 mlu $3 |
  1077. ldl mlu IND($1) && $2==2 | |
  1078. allocate(R16)
  1079. "ldy #BASE+$1"
  1080. "lda (LBl),y"
  1081. "sta ARTH"
  1082. "iny"
  1083. "lda (LBl),y"
  1084. "sta ARTH+1"
  1085. "iny"
  1086. "lda (LBl),y"
  1087. "sta ARTH+2"
  1088. "iny"
  1089. "lda (LBl),y"
  1090. "sta ARTH+3"
  1091. "ldy #0"
  1092. "sty UNSIGN"
  1093. "jsr Mul"
  1094. | %[a] | |
  1095. lde mlu $2==2 | |
  1096. allocate(R16)
  1097. "lda $1"
  1098. "sta ARTH"
  1099. "lda $1+1"
  1100. "sta ARTH+1"
  1101. "lda $1+2"
  1102. "sta ARTH+2"
  1103. "lda $1+3"
  1104. "sta ARTH+3"
  1105. "ldy #0"
  1106. "sty UNSIGN"
  1107. "jsr Mul"
  1108. | %[a] | |
  1109. loc mlu $2==2 | R16 |
  1110. "stx ARTH"
  1111. "sta ARTH+1"
  1112. "lda #[$1].l"
  1113. "sta ARTH+2"
  1114. "lda #[$1].h"
  1115. "sta ARTH+3"
  1116. "ldy #0"
  1117. "sty UNSIGN"
  1118. "jsr Mul"
  1119. | %[1] | |
  1120. lol mlu IN($1) && $2==2 | R16 |
  1121. "stx ARTH"
  1122. "sta ARTH+1"
  1123. "ldy #BASE+$1"
  1124. "lda (LBl),y"
  1125. "sta ARTH+2"
  1126. "iny"
  1127. "lda (LBl),y"
  1128. "sta ARTH+3"
  1129. "ldy #0"
  1130. "sty UNSIGN"
  1131. "jsr Mul"
  1132. | %[1] | |
  1133. loe mlu $2==2 | R16 |
  1134. "stx ARTH"
  1135. "sta ARTH+1"
  1136. "lda $1"
  1137. "sta ARTH+2"
  1138. "lda $1+1"
  1139. "sta ARTH+3"
  1140. "ldy #0"
  1141. "sty UNSIGN"
  1142. "jsr Mul"
  1143. | %[1] | |
  1144. lol lol mlu IN($1) && !IN($2) && $3==2
  1145. | | | | lol $2 lol $1 mlu $3 |
  1146. mlu $1==2 | R16 |
  1147. "jsr Mlu2"
  1148. | %[1] | |
  1149. mlu $1==4 | |
  1150. allocate(R16)
  1151. "jsr Mlu4"
  1152. | | |
  1153. mlu ND | R16 |
  1154. "jsr Test2"
  1155. "jsr Mlu2"
  1156. | %[1] | |
  1157. loc lol dvu (IN($2) && $3==2) | |
  1158. allocate(R16)
  1159. "ldy #BASE+$2"
  1160. "lda (LBl),y"
  1161. "sta ARTH"
  1162. "iny"
  1163. "lda (LBl),y"
  1164. "sta ARTH+1"
  1165. "lda #[$1].l"
  1166. "sta ARTH+2"
  1167. "lda #[$1].h"
  1168. "sta ARTH+3"
  1169. "ldy #0"
  1170. "sty UNSIGN"
  1171. "jsr Duv"
  1172. | %[a] | |
  1173. lol loc dvu (IN($1) && $3==2) | |
  1174. allocate(R16)
  1175. "lda #[$2].l"
  1176. "sta ARTH"
  1177. "lda #[$2].h"
  1178. "sta ARTH+1"
  1179. "ldy #BASE+$1"
  1180. "lda (LBl),y"
  1181. "sta ARTH+2"
  1182. "iny"
  1183. "lda (LBl),y"
  1184. "sta ARTH+3"
  1185. "ldy #0"
  1186. "sty UNSIGN"
  1187. "jsr Duv"
  1188. | %[a] | |
  1189. lol lol dvu (IN($1) && IN($2) && $3==2) | |
  1190. allocate(R16)
  1191. "ldy #BASE+$2"
  1192. "lda (LBl),y"
  1193. "sta ARTH"
  1194. "iny"
  1195. "lda (LBl),y"
  1196. "sta ARTH+1"
  1197. "ldy #BASE+$1"
  1198. "lda (LBl),y"
  1199. "sta ARTH+2"
  1200. "iny"
  1201. "lda (LBl),y"
  1202. "sta ARTH+3"
  1203. "ldy #0"
  1204. "sty UNSIGN"
  1205. "jsr Duv"
  1206. | %[a] | |
  1207. lol loe dvu (IN($1) && $3==2) | |
  1208. allocate(R16)
  1209. "ldy #BASE+$1"
  1210. "lda (LBl),y"
  1211. "sta ARTH+2"
  1212. "iny"
  1213. "lda (LBl),y"
  1214. "sta ARTH+3"
  1215. "lda $2"
  1216. "sta ARTH"
  1217. "lda $2+1"
  1218. "sta ARTH+1"
  1219. "ldy #0"
  1220. "sty UNSIGN"
  1221. "jsr Duv"
  1222. | %[a] | |
  1223. loe lol dvu (IN($2) && $3==2) | |
  1224. allocate(R16)
  1225. "ldy #BASE+$2"
  1226. "lda (LBl),y"
  1227. "sta ARTH"
  1228. "iny"
  1229. "lda (LBl),y"
  1230. "sta ARTH+1"
  1231. "lda $2"
  1232. "sta ARTH+2"
  1233. "lda $2+1"
  1234. "sta ARTH+3"
  1235. "ldy #0"
  1236. "sty UNSIGN"
  1237. "jsr Duv"
  1238. | %[a] | |
  1239. loe loe dvu $3==2 | |
  1240. allocate(R16)
  1241. "lda $2"
  1242. "sta ARTH"
  1243. "lda $2+1"
  1244. "sta ARTH+1"
  1245. "lda $1"
  1246. "sta ARTH+2"
  1247. "lda $1+1"
  1248. "sta ARTH+3"
  1249. "ldy #0"
  1250. "sty UNSIGN"
  1251. "jsr Duv"
  1252. | %[a] | |
  1253. loc loe dvu $3==2 | |
  1254. allocate(R16)
  1255. "lda #[$1].l"
  1256. "sta ARTH+2"
  1257. "lda #[$1].h"
  1258. "sta ARTH+3"
  1259. "lda $2"
  1260. "sta ARTH"
  1261. "lda $2+1"
  1262. "sta ARTH+1"
  1263. "ldy #0"
  1264. "sty UNSIGN"
  1265. "jsr Duv"
  1266. | %[a] | |
  1267. loe loc dvu $3==2 | |
  1268. allocate(R16)
  1269. "lda #[$2].l"
  1270. "sta ARTH"
  1271. "lda #[$2].h"
  1272. "sta ARTH+1"
  1273. "lda $1"
  1274. "sta ARTH+2"
  1275. "lda $1+1"
  1276. "sta ARTH+3"
  1277. "ldy #0"
  1278. "sty UNSIGN"
  1279. "jsr Duv"
  1280. | %[a] | |
  1281. ldl dvu IND($1) && $2==2 | |
  1282. allocate(R16)
  1283. "ldy #BASE+$1"
  1284. "lda (LBl),y"
  1285. "sta ARTH"
  1286. "iny"
  1287. "lda (LBl),y"
  1288. "sta ARTH+1"
  1289. "iny"
  1290. "lda (LBl),y"
  1291. "sta ARTH+2"
  1292. "iny"
  1293. "lda (LBl),y"
  1294. "sta ARTH+3"
  1295. "ldy #0"
  1296. "sty UNSIGN"
  1297. "jsr Duv"
  1298. | %[a] | |
  1299. lde dvu $2==2 | |
  1300. allocate(R16)
  1301. "lda $1"
  1302. "sta ARTH"
  1303. "lda $1+1"
  1304. "sta ARTH+1"
  1305. "lda $1+2"
  1306. "sta ARTH+2"
  1307. "lda $1+3"
  1308. "sta ARTH+3"
  1309. "ldy #0"
  1310. "sty UNSIGN"
  1311. "jsr Duv"
  1312. | %[a] | |
  1313. loc dvu $2==2 | R16 |
  1314. "stx ARTH+2"
  1315. "sta ARTH+3"
  1316. "lda #[$1].l"
  1317. "sta ARTH"
  1318. "lda #[$1].h"
  1319. "sta ARTH+1"
  1320. "ldy #0"
  1321. "sty UNSIGN"
  1322. "jsr Duv"
  1323. | %[1] | |
  1324. lol dvu IN($1) && $2==2 | R16 |
  1325. "stx ARTH+2"
  1326. "sta ARTH+3"
  1327. "ldy #BASE+$1"
  1328. "lda (LBl),y"
  1329. "sta ARTH"
  1330. "iny"
  1331. "lda (LBl),y"
  1332. "sta ARTH+1"
  1333. "ldy #0"
  1334. "sty UNSIGN"
  1335. "jsr Duv"
  1336. | %[1] | |
  1337. loe dvu $2==2 | R16 |
  1338. "stx ARTH+2"
  1339. "sta ARTH+3"
  1340. "lda $1"
  1341. "sta ARTH"
  1342. "lda $1+1"
  1343. "sta ARTH+1"
  1344. "ldy #0"
  1345. "sty UNSIGN"
  1346. "jsr Duv"
  1347. | %[1] | |
  1348. dvu $1==2 | R16 |
  1349. "jsr Dvu2"
  1350. | %[1] | |
  1351. dvu $1==4 | |
  1352. allocate(R16)
  1353. "jsr Dvu4"
  1354. | | |
  1355. dvu ND | R16 |
  1356. "jsr Test2"
  1357. "jsr Dvu2"
  1358. | %[1] | |
  1359. rmu $1==2 | R16 |
  1360. "jsr Rmu2"
  1361. | %[1] | |
  1362. rmu $1==4 | |
  1363. allocate(R16)
  1364. "jsr Rmu4"
  1365. | | |
  1366. slu | | | | sli $1 |
  1367. sru $1==2 | R16 |
  1368. "jsr Sru2"
  1369. | %[1] | |
  1370. sru $1==4 | R16 |
  1371. "jsr Sru4"
  1372. | | |
  1373. sru ND | R16 |
  1374. "jsr Test2"
  1375. "jsr Sru2"
  1376. | %[1] | |
  1377. /* GROUP 6 - POINTER ARITHMETIC */
  1378. adp $1==0 | | | | |
  1379. adp | | | | loc $1 adi 2 |
  1380. ads $1==2 | R16 |
  1381. "jsr Adi2"
  1382. | %[1] | |
  1383. ads ND | R16 |
  1384. "jsr Test2"
  1385. "jsr Adi2"
  1386. | %[1] | |
  1387. sbs $1==2 | R16 |
  1388. "jsr Sbi2"
  1389. | %[1] | |
  1390. sbs ND | R16 |
  1391. "jsr Test2"
  1392. "jsr Sbi2"
  1393. | %[1] | |
  1394. /* GROUP 7 INCREMENT/DECREMENT/ZERO */
  1395. inc | R16 |
  1396. "inx"
  1397. "bne 1f"
  1398. "clc"
  1399. "adc #1\n1:"
  1400. | %[1] | |
  1401. inl IN($1) | |
  1402. allocate(R16)
  1403. "ldy #BASE+$1"
  1404. "clc"
  1405. "lda (LBl),y"
  1406. "adc #1"
  1407. "sta (LBl),y"
  1408. "bcc 1f"
  1409. "iny"
  1410. "lda (LBl),y"
  1411. "adc #0"
  1412. "sta (LBl),y\n1:"
  1413. | | |
  1414. inl D | |
  1415. allocate(R16)
  1416. "lda #[$1].h"
  1417. "ldx #[$1].l"
  1418. "jsr Lol"
  1419. "inx"
  1420. "bne 1f"
  1421. "clc"
  1422. "adc #1"
  1423. "1: jsr Stii"
  1424. | | |
  1425. ine | |
  1426. "inc $1"
  1427. "bne 1f"
  1428. "inc $1+1\n1:"
  1429. | | |
  1430. dec | R16 |
  1431. "cpx #0"
  1432. "bne 1f"
  1433. "sec"
  1434. "sbc #1"
  1435. "1: dex"
  1436. | %[1] | |
  1437. del IN($1) | |
  1438. allocate(R16)
  1439. "ldy #BASE+$1"
  1440. "sec"
  1441. "lda (LBl),y"
  1442. "sbc #1"
  1443. "sta (LBl),y"
  1444. "bcs 1f"
  1445. "iny"
  1446. "lda (LBl),y"
  1447. "sbc #0"
  1448. "sta (LBl),y\n1:"
  1449. | | |
  1450. del | |
  1451. allocate(R16)
  1452. "lda #[$1].h"
  1453. "ldx #[$1].l"
  1454. "jsr Lol"
  1455. "cpx #0"
  1456. "bne 1f"
  1457. "sec"
  1458. "sbc #1"
  1459. "1: dex"
  1460. "jsr Stii"
  1461. | | |
  1462. dee | |
  1463. "ldy $1"
  1464. "bne 1f"
  1465. "dec $1+1"
  1466. "1: dey"
  1467. "sty $1"
  1468. | | |
  1469. zrl IN($1) | |
  1470. allocate(R16)
  1471. "ldy #BASE+$1"
  1472. "lda #0"
  1473. "sta (LBl),y"
  1474. "iny"
  1475. "sta (LBl),y"
  1476. | | |
  1477. zrl | |
  1478. allocate(R16)
  1479. "lda #[$1].h"
  1480. "ldx #[$1].l"
  1481. "jsr Zrl"
  1482. | | |
  1483. zre | |
  1484. "ldy #0"
  1485. "sty $1"
  1486. "sty $1+1"
  1487. | | |
  1488. zer $1==2 | |
  1489. allocate(R16)
  1490. "lda #0"
  1491. "tax"
  1492. | %[a] | |
  1493. zer $1==4 | |
  1494. allocate(R16)
  1495. "lda #0"
  1496. "tax"
  1497. "jsr Push"
  1498. | %[a] | |
  1499. zer $1>0 && $1<=256 | |
  1500. allocate(R16)
  1501. "ldy #$1-1"
  1502. "jsr Zer"
  1503. | | |
  1504. /* GROUP 8 - CONVERT (stack: source, source size, dest. size (top)) */
  1505. loc loc cii $1==1 && $2==2 | R16 |
  1506. "txa"
  1507. "bpl 1f"
  1508. "lda #0xff"
  1509. "bne 2f"
  1510. "1: lda #0\n2:"
  1511. | %[1] | |
  1512. cii | R16 |
  1513. "jsr Cii"
  1514. | | |
  1515. cui | | | | cii |
  1516. ciu | | | | cii |
  1517. cuu | | | | cii |
  1518. loc loc cui $1==$2 | | | | |
  1519. loc loc ciu $1==$2 | | | | |
  1520. loc loc cuu $1==2 && $2==4 | | | | loc 0 |
  1521. /* GROUP 9 - LOGICAL */
  1522. and $1==2 | R16 |
  1523. "sta ARTH+1"
  1524. "stx ARTH"
  1525. "jsr Pop"
  1526. "and ARTH+1"
  1527. "pha"
  1528. "txa"
  1529. "and ARTH"
  1530. "tax"
  1531. "pla"
  1532. | %[1] | |
  1533. and $1<=254 | |
  1534. allocate(R16)
  1535. "ldy #[$1].l"
  1536. "jsr And"
  1537. | | |
  1538. and ND | R16 |
  1539. "jsr TestFFh"
  1540. "jsr Pop"
  1541. "iny"
  1542. "jsr And"
  1543. | | |
  1544. ior $1==2 | R16 |
  1545. "sta ARTH+1"
  1546. "stx ARTH"
  1547. "jsr Pop"
  1548. "ora ARTH+1"
  1549. "pha"
  1550. "txa"
  1551. "ora ARTH"
  1552. "tax"
  1553. "pla"
  1554. | %[1] | |
  1555. ior $1<=254 | |
  1556. allocate(R16)
  1557. "ldy #[$1].l"
  1558. "jsr Ior"
  1559. | | |
  1560. ior ND | R16 |
  1561. "jsr TestFFh"
  1562. "jsr Pop"
  1563. "iny"
  1564. "jsr Ior"
  1565. | | |
  1566. xor $1==2 | R16 |
  1567. "sta ARTH+1"
  1568. "stx ARTH"
  1569. "jsr Pop"
  1570. "eor ARTH+1"
  1571. "pha"
  1572. "txa"
  1573. "eor ARTH"
  1574. "tax"
  1575. "pla"
  1576. | %[1] | |
  1577. xor $1<=254 | |
  1578. allocate(R16)
  1579. "ldy #[$1].l"
  1580. "jsr Xor"
  1581. | | |
  1582. xor ND | R16 |
  1583. "jsr TestFFh"
  1584. "jsr Pop"
  1585. "iny"
  1586. "jsr Xor"
  1587. | | |
  1588. com $1==2 | R16 |
  1589. "eor #0xff"
  1590. "pha"
  1591. "txa"
  1592. "eor #0xff"
  1593. "tax"
  1594. "pla"
  1595. | %[1] | |
  1596. com $1<=254 | |
  1597. allocate(R16)
  1598. "ldy #[$1].l"
  1599. "jsr Com"
  1600. | | |
  1601. com ND | R16 |
  1602. "jsr TestFFh"
  1603. "jsr Pop"
  1604. "iny"
  1605. "jsr Com"
  1606. | | |
  1607. rol $1==2 | R16 |
  1608. "jsr Rol"
  1609. | %[1] | |
  1610. rol $1==4 | R16 |
  1611. "jsr Rol4"
  1612. | | |
  1613. rol ND | R16 |
  1614. "jsr Test2"
  1615. "jsr Rolw"
  1616. | %[1] | |
  1617. ror $1==2 | R16 |
  1618. "jsr Ror"
  1619. | %[1] | |
  1620. ror $1==4 | R16 |
  1621. "jsr Ror4"
  1622. | | |
  1623. ror ND | R16 |
  1624. "jsr Test2"
  1625. "jsr Rorw"
  1626. | %[1] | |
  1627. /* GROUP 10 - SETS */
  1628. loc inn $1<0 && $2==2 | R16 |
  1629. "lda #0"
  1630. "tax"
  1631. | %[1] | |
  1632. loc inn $2==2 && $1==0 | R16 |
  1633. "txa"
  1634. "and #1"
  1635. "tax"
  1636. "lda #0"
  1637. | %[1] | |
  1638. loc inn $2==2 && $1>0 && $1<16 | R16 |
  1639. "ldy #$1"
  1640. "stx ARTH"
  1641. "1: lsr a"
  1642. "ror ARTH"
  1643. "dey"
  1644. "bne 1b"
  1645. "lda ARTH"
  1646. "and #1"
  1647. "tax"
  1648. "lda #0"
  1649. | %[1] | |
  1650. loc inn zeq $1>0 && $1<16 && $2==2 | R16 |
  1651. "ldy #$1+1"
  1652. "stx ARTH"
  1653. "1: lsr a"
  1654. "ror ARTH"
  1655. "dey"
  1656. "bne 1b"
  1657. "bcc $1"
  1658. | | |
  1659. loc inn zne $1>0 && $1<16 && $2==2 | R16 |
  1660. "ldy #$1+1"
  1661. "stx ARTH"
  1662. "1: lsr a"
  1663. "ror ARTH"
  1664. "dey"
  1665. "bne 1b"
  1666. "bcs $1"
  1667. | | |
  1668. inn $1==2 | R16 |
  1669. "txa"
  1670. "tay"
  1671. "jsr Pop"
  1672. "stx ARTH"
  1673. "1: lsr a"
  1674. "ror ARTH"
  1675. "dey"
  1676. "bne 1b"
  1677. "lda ARTH"
  1678. "and #1"
  1679. "tax"
  1680. "lda #0"
  1681. | %[1] | |
  1682. inn zeq $1==2 | R16 |
  1683. "txa"
  1684. "tay"
  1685. "jsr Pop"
  1686. "stx ARTH"
  1687. "1: lsr a"
  1688. "ror ARTH"
  1689. "dey"
  1690. "bpl 1b"
  1691. "lda ARTH"
  1692. "bcc $2"
  1693. | %[1] | |
  1694. inn zne $1==2 | R16 |
  1695. "txa"
  1696. "tay"
  1697. "jsr Pop"
  1698. "stx ARTH"
  1699. "1: lsr a"
  1700. "ror ARTH"
  1701. "dey"
  1702. "bpl 1b"
  1703. "bcs $2"
  1704. | %[1] | |
  1705. inn $1<=256 | R16 |
  1706. "ldy #$1-1"
  1707. "jsr Inn"
  1708. | %[1] | |
  1709. inn ND | R16 |
  1710. "jsr TestFFh"
  1711. "jsr Pop"
  1712. "jsr Inn"
  1713. | %[1] | |
  1714. loc set $2==2 && $1>=0 && $1<16 | |
  1715. allocate(R16)
  1716. "ldy #$1"
  1717. "lda #0"
  1718. "sta ARTH"
  1719. "sec"
  1720. "1: rol ARTH"
  1721. "rol a"
  1722. "dey"
  1723. "bpl 1b"
  1724. "ldx ARTH"
  1725. | %[a] | |
  1726. set $1==2 | R16 |
  1727. "txa"
  1728. "tay"
  1729. "lda #0"
  1730. "sta ARTH"
  1731. "sec"
  1732. "1: rol ARTH"
  1733. "rol a"
  1734. "bpl 1b"
  1735. "ldx ARTH"
  1736. | %[1] | |
  1737. set $1<=256 | R16 |
  1738. "ldy #$1-1"
  1739. "jsr Set"
  1740. | | |
  1741. set ND | R16 |
  1742. "jsr TestFFh"
  1743. "jsr Pop"
  1744. "jsr Set"
  1745. | | |
  1746. /* GROUP 11 - ARRAY */
  1747. lae lar defined(rom(1,3)) | | | | lae $1 aar $2 loi rom(1,3) |
  1748. lar $1==2 | R16 |
  1749. "jsr Lar"
  1750. | | |
  1751. lar ND | R16 |
  1752. "jsr Test2"
  1753. "jsr Lar"
  1754. | | |
  1755. lae sar defined(rom(1,3)) | | | | lae $1 aar $2 sti rom(1,3) |
  1756. sar $1==2 | R16 |
  1757. "jsr Sar"
  1758. | | |
  1759. sar ND | R16 |
  1760. "jsr Test2"
  1761. "jsr Sar"
  1762. | | |
  1763. lae aar $2==2 && rom(1,3)==1 && rom(1,1)==0 | | | | adi 2 |
  1764. lae aar $2==2 && rom(1,3)==1 && rom(1,1)!=0 | |
  1765. | | adi 2 adp 0-rom(1,1) |
  1766. lae aar $2==2 && rom(1,3)==2 && rom(1,1)==0 | R16 |
  1767. "pha"
  1768. "txa"
  1769. "asl a"
  1770. "tax"
  1771. "pla"
  1772. "rol a"
  1773. | %[1] | adi 2 |
  1774. lae aar $2==2 && rom(1,3)==2 && rom(1,1)!=0 | R16 |
  1775. "pha"
  1776. "txa"
  1777. "asl a"
  1778. "tax"
  1779. "pla"
  1780. "rol a"
  1781. | %[1] | adi 2 adp (0-rom(1,1))*2 |
  1782. lae aar $2==2 && rom(1,3)>2 && rom(1,1)==0 | |
  1783. | | loc rom(1,3) mli 2 adi 2 |
  1784. lae aar $2==2 && rom(1,3)>2 && rom(1,1)!=0 | |
  1785. | | loc rom(1,3) mli 2 adi 2 adp (0-rom(1,1))*rom(1,3) |
  1786. aar $1==2 | R16 |
  1787. "jsr Aar"
  1788. | %[1] | |
  1789. aar ND | R16 |
  1790. "jsr Test2"
  1791. "jsr Aar"
  1792. | %[1] | |
  1793. /* GROUP 12 - COMPARE */
  1794. cmi $1==2 | R16 |
  1795. "jsr Cmi"
  1796. | %[1] | |
  1797. cmi $1==4 | |
  1798. allocate(R16)
  1799. "jsr Cmi4"
  1800. | %[a] | |
  1801. cmi ND | R16 |
  1802. "jsr Test2"
  1803. "jsr Cmi"
  1804. | %[1] | |
  1805. cmu $1==2 | R16 |
  1806. "jsr Cmu2"
  1807. | %[1] | |
  1808. cmu $1==4 | |
  1809. allocate(R16)
  1810. "jsr Cmu4"
  1811. | %[a] | |
  1812. cmu ND | R16 |
  1813. "jsr Test2"
  1814. "jsr Cmu"
  1815. | | |
  1816. cmp | |
  1817. | | cmu 2 |
  1818. cms $1==2 | |
  1819. allocate(R16)
  1820. "ldy #2"
  1821. "jsr Cms"
  1822. | %[a] | |
  1823. cms $1==4 | |
  1824. allocate(R16)
  1825. "ldy #4"
  1826. "jsr Cms"
  1827. | %[a] | |
  1828. cms ND | R16 |
  1829. "jsr TestFFh"
  1830. "iny"
  1831. "jsr Cms"
  1832. | %[1] | |
  1833. tlt | R16 |
  1834. "jsr Tlt"
  1835. | %[1] | |
  1836. tle | R16 |
  1837. "jsr Tle"
  1838. | %[1] | |
  1839. teq | R16 |
  1840. "jsr Teq"
  1841. | %[1] | |
  1842. tne | R16 |
  1843. "jsr Tne"
  1844. | %[1] | |
  1845. tge | R16 |
  1846. "jsr Tge"
  1847. | %[1] | |
  1848. tgt | R16 |
  1849. "jsr Tgt"
  1850. | %[1] | |
  1851. /* GROUP 13 - BRANCH */
  1852. bra | |
  1853. remove(ALL)
  1854. "jmp $1"
  1855. | | |
  1856. blt | R16 |
  1857. "jsr Sbi2"
  1858. "bmi $1"
  1859. | | |
  1860. ble | R16 |
  1861. "jsr Sbi2"
  1862. "bmi $1"
  1863. "bne 1f"
  1864. "txa"
  1865. "beq $1\n1:"
  1866. | | |
  1867. beq | R16 |
  1868. "sta BRANCH+1"
  1869. "stx BRANCH"
  1870. "jsr Pop"
  1871. "cmp BRANCH+1"
  1872. "bne 1f"
  1873. "cpx BRANCH"
  1874. "beq $1\n1:"
  1875. | | |
  1876. bne | R16 |
  1877. "sta BRANCH+1"
  1878. "stx BRANCH"
  1879. "jsr Pop"
  1880. "cmp BRANCH+1"
  1881. "bne $1"
  1882. "cpx BRANCH"
  1883. "bne $1"
  1884. | | |
  1885. bge | R16 |
  1886. "jsr Sbi2"
  1887. "bpl $1"
  1888. | | |
  1889. bgt | R16 |
  1890. "jsr Sbi2"
  1891. "bmi 1f"
  1892. "bne $1"
  1893. "txa"
  1894. "bne $1\n1:"
  1895. | | |
  1896. cmi zlt $1==2 | | | | blt $2 |
  1897. cmp zlt | | | | blt $2 |
  1898. zlt | R16 |
  1899. "tay"
  1900. "bmi $1"
  1901. | | |
  1902. cmi zle $1==2 | | | | ble $2 |
  1903. cmp zle | | | | ble $2 |
  1904. zle | R16 |
  1905. "tay"
  1906. "bmi $1"
  1907. "bne 1f"
  1908. "txa"
  1909. "beq $1\n1:"
  1910. | | |
  1911. cmi zeq $1==2 | | | | beq $2 |
  1912. cmp zeq | | | | beq $2 |
  1913. cms zeq $1==2 | | | | beq $2 |
  1914. zeq | R16 |
  1915. "tay"
  1916. "bne 1f"
  1917. "txa"
  1918. "beq $1\n1:"
  1919. | | |
  1920. cmi zne $1==2 | | | | bne $2 |
  1921. cmp zne | | | | bne $2 |
  1922. cms zne $1==2 | | | | bne $2 |
  1923. zne | R16 |
  1924. "tay"
  1925. "bne $1"
  1926. "txa"
  1927. "bne $1"
  1928. | | |
  1929. cmi zge $1==2 | | | | bge $2 |
  1930. cmp zge | | | | bge $2 |
  1931. zge | R16 |
  1932. "tay"
  1933. "bpl $1"
  1934. | | |
  1935. cmi zgt $1==2 | | | | bgt $2 |
  1936. cmp zgt | | | | bgt $2 |
  1937. zgt | R16 |
  1938. "tay"
  1939. "bmi 1f"
  1940. "bne $1"
  1941. "txa"
  1942. "bne $1\n1:"
  1943. | | |
  1944. /* GROUP 14 - PROCEDURE CALL */
  1945. cai | R16 |
  1946. "stx ADDR"
  1947. "sta ADDR+1"
  1948. "jsr Indir"
  1949. | | |
  1950. cal | |
  1951. remove(ALL)
  1952. "jsr $1"
  1953. | | |
  1954. lfr $1==2 | |
  1955. allocate(R16)
  1956. "lda #0"
  1957. "ldx #RETURN"
  1958. "jsr Loi"
  1959. | %[a] | |
  1960. lfr $1==4 | |
  1961. allocate(R16)
  1962. "lda #0"
  1963. "ldx #RETURN"
  1964. "jsr Ldi"
  1965. | | |
  1966. lfr ret $1==$2 | | | | ret 0 |
  1967. asp lfr ret $2==$3 | | | | ret 0 |
  1968. ret $1==0 || $1==2 || $1==4 | |
  1969. allocate(R16)
  1970. "ldy #$1"
  1971. "jmp Ret"
  1972. | | |
  1973. /* GROUP 15 - MISCELLANOUS */
  1974. asp | |
  1975. allocate(R16)
  1976. "lda #[$1].h"
  1977. "ldx #[$1].l"
  1978. "jsr Asp"
  1979. | | |
  1980. ass $1==2 | R16 |
  1981. "jsr Asp"
  1982. | | |
  1983. ass ND | R16 |
  1984. "jsr Test2"
  1985. "jsr Pop"
  1986. "jsr Asp"
  1987. | | |
  1988. blm $1==0 | | | | asp 4 |
  1989. blm D | R16 |
  1990. "ldy #[[$1].h+1]"
  1991. "sty NBYTES+1"
  1992. "ldy #[$1].l"
  1993. "jsr Blm"
  1994. | | |
  1995. bls $1==2 | R16 |
  1996. "sta NBYTES+1"
  1997. "inc NBYTES+1"
  1998. "txa"
  1999. "tay"
  2000. "jsr Pop"
  2001. "jsr Blm"
  2002. | | |
  2003. bls ND | R16 |
  2004. "jsr Test2"
  2005. "sta NBYTES+1"
  2006. "inc NBYTES+1"
  2007. "txa"
  2008. "tay"
  2009. "jsr Pop"
  2010. "jsr Blm"
  2011. | | |
  2012. csa | R16 |
  2013. "jmp Csa"
  2014. | | |
  2015. csb | R16 |
  2016. "jmp Csb"
  2017. | | |
  2018. dch | | | | loi 2 |
  2019. dup $1==2 | R16 |
  2020. "jsr Push"
  2021. | %[1] | |
  2022. dup $1<=256 | |
  2023. allocate(R16)
  2024. "ldy #[$1].l"
  2025. "jsr Dup"
  2026. | | |
  2027. dus $1==2 | R16 |
  2028. "jsr TestFFh"
  2029. "iny"
  2030. "jsr Dup"
  2031. | | |
  2032. exg $1==2 | R16 |
  2033. "jsr Exg2"
  2034. | %[1] | |
  2035. exg $1<=255 | |
  2036. allocate(R16)
  2037. "ldy #$1"
  2038. "jsr Exg"
  2039. | | |
  2040. fil | |
  2041. "ldy #[$1].l"
  2042. "sty hol0+4"
  2043. "ldy #[$1].h"
  2044. "sty hol0+5"
  2045. | | |
  2046. gto | |
  2047. allocate(R16)
  2048. "lda #[$1].h"
  2049. "ldx #[$1].l"
  2050. "jmp Gto"
  2051. | | |
  2052. lim | |
  2053. allocate(R16)
  2054. "ldx IGNMASK"
  2055. "lda IGNMASK+1"
  2056. | %[a] | |
  2057. lin | |
  2058. "ldy #[$1].l"
  2059. "sty hol0"
  2060. "ldy #[$1].h"
  2061. "sty hol0+1"
  2062. | | |
  2063. lni | |
  2064. "inc hol0"
  2065. "bne 1f"
  2066. "inc hol0+1\n1:"
  2067. | | |
  2068. lor $1==0 | |
  2069. allocate(R16)
  2070. "ldx LB"
  2071. "lda LB+1"
  2072. | %[a] | |
  2073. lor $1==1 | |
  2074. allocate(R16)
  2075. "ldx SP+2"
  2076. "lda SP+1"
  2077. | %[a] | |
  2078. lor $1==2 | |
  2079. allocate(R16)
  2080. "ldx HP"
  2081. "lda HP+1"
  2082. | %[a] | |
  2083. lpb | | | | adp 2 |
  2084. mon | R16 |
  2085. "jsr Mon"
  2086. | %[1] | |
  2087. nop | STACK |
  2088. #ifdef DEBUG
  2089. allocate(R16)
  2090. "jsr Printstack"
  2091. #endif
  2092. | | |
  2093. rck | R16 | | | |
  2094. rtt | |
  2095. remove(ALL)
  2096. "jmp Rtt"
  2097. | | |
  2098. sig | R16 |
  2099. "pha"
  2100. "txa"
  2101. "pha"
  2102. "ldx ERRPROC"
  2103. "lda ERRPROC+1"
  2104. "jsr Push"
  2105. "pla"
  2106. "sta ERRPROC"
  2107. "pla"
  2108. "sta ERRPROC+1"
  2109. | | |
  2110. sim | R16 |
  2111. "stx IGNMASK"
  2112. "sta IGNMASK+1"
  2113. | | |
  2114. str $1==0 | R16 |
  2115. "stx LB"
  2116. "sta LB+1"
  2117. "tay"
  2118. "sec"
  2119. "txa"
  2120. "sbc #BASE"
  2121. "sta LBl"
  2122. "tya"
  2123. "sbc #0"
  2124. "sta LBl+1"
  2125. | | |
  2126. str $1==1 | R16 |
  2127. "stx SP+2"
  2128. "sta SP+1"
  2129. | | |
  2130. str $1==2 | R16 |
  2131. "stx HP"
  2132. "sta HP+1"
  2133. | | |
  2134. trp | R16 |
  2135. "jsr Trap"
  2136. | | |
  2137. lol lal sti $1==$2 && $3==1 | | | | | /* throw away funny C-proc-prolog */
  2138. | STACK |
  2139. allocate(R16)
  2140. "jsr Pop"
  2141. | %[a] | |
  2142. /* FLOATING POINT
  2143. * Every EM floating point instruction is translated
  2144. * into a library call. At present, these library
  2145. * routines generate an 'Illegal EM instruction' trap.
  2146. */
  2147. adf $1==4 | STACK |
  2148. "jsr Adf4"
  2149. | | |
  2150. adf $1==8 | STACK |
  2151. "jsr Adf8" | | |
  2152. sbf $1==4 | STACK |
  2153. "jsr Sbf4"
  2154. | | |
  2155. sbf $1==8 | STACK |
  2156. "jsr Sbf8" | | |
  2157. mlf $1==4 | STACK |
  2158. "jsr Mlf4"
  2159. | | |
  2160. mlf $1==8 | STACK |
  2161. "jsr Mlf8" | | |
  2162. dvf $1==4 | STACK |
  2163. "jsr Dvf4"
  2164. | | |
  2165. dvf $1==8 | STACK |
  2166. "jsr Dvf8" | | |
  2167. ngf $1==4 | STACK |
  2168. "jsr Ngf4"
  2169. | | |
  2170. ngf $1==8 | STACK |
  2171. "jsr Ngf8" | | |
  2172. zrf $1==4 | STACK |
  2173. "jsr Zrf4"
  2174. | | |
  2175. zrf $1==8 | STACK |
  2176. "jsr Zrf8" | | |
  2177. cmf $1==4 | STACK |
  2178. "jsr Cmf4"
  2179. | | |
  2180. cmf $1==8 | STACK |
  2181. "jsr Cmf8" | | |
  2182. fef $1==4 | STACK |
  2183. "jsr Fef4"
  2184. | | |
  2185. fef $1==8 | STACK |
  2186. "jsr Fef8" | | |
  2187. fif $1==4 | STACK |
  2188. "jsr Fif4"
  2189. | | |
  2190. fif $1==8 | STACK |
  2191. "jsr Fif8" | | |
  2192. cfi | STACK |
  2193. "jsr Cfi" | | |
  2194. cif | STACK |
  2195. "jsr Cif" | | |
  2196. cuf | STACK |
  2197. "jsr Cuf" | | |
  2198. cff | STACK |
  2199. "jsr Cff" | | |
  2200. cfu | STACK |
  2201. "jsr Cfu" | | |
  2202. lfr $1==8 | STACK |
  2203. "jsr Lfr8" | | |
  2204. ret $1==8 | STACK |
  2205. "jmp Ret8" | | |
  2206. /*************\
  2207. * M O V E S *
  2208. \*************/
  2209. MOVES: (AAA,AAA,"nop")
  2210. STACKS: (R16, , "jsr Push")