Annotation of gforth/arch/misc/prim.fs, revision 1.11
1.6 jwilke 1:
2:
1.8 jwilke 3: 0 [IF]
4: Ideas/Todo
5:
6:
7: [THEN]
8:
1.6 jwilke 9: UNLOCK
10: >ENVIRON
11: \ true SetValue PrimTrace
12:
13: LOCK
14:
1.8 jwilke 15: UNLOCK
16: also assembler definitions
17:
18: X has? PrimTrace [IF]
19: : dout PC+6 X , accu X ,
20: *accu X , txd X ,
21: PC+4 X , jmp X ,
22: X , 0 X , ;
23: [ELSE]
24: : dout drop ;
25: [THEN]
26:
27: LOCK
28:
1.1 pazsan 29: \ pie primitives
30:
31: $20 allot
32:
1.6 jwilke 33: Label start ahere 2 + , jmp ,
34: Label "IntoForth" 4711 ,
35:
36: Label RP' 0 ,
37: Label SP' 0 ,
38: Label UP' 0 ,
39: Label IP' 0 ,
1.1 pazsan 40:
41: Label #0 0 ,
42: Label #1 1 ,
1.6 jwilke 43: Label #2 2 ,
44: Label #4 4 ,
45: Label #FF $FF ,
46: Label #$8000 $8000 ,
47: Label #-1 -1 ,
48: Label "Next" 1802 ,
49: Label "Next1" 1802 ,
50: Label ""Next"" "Next" ,
51: End-Label
52:
53: \ The virtual machine registers an data (stacks) go
54: \ to a seperate memory region (hopefully ram)
55:
1.11 ! pazsan 56: \ UNLOCK
! 57: \ current-region vm-memory activate ( saved-region )
! 58: \ LOCK
1.6 jwilke 59:
1.1 pazsan 60: Label RP 0 ,
61: Label SP 0 ,
62: Label UP 0 ,
63: Label IP 0 ,
64: Label W 0 ,
1.2 pazsan 65: Label t0 0 ,
66: Label t1 0 ,
67: Label t2 0 ,
68: Label t3 0 ,
69: Label srcx 0 ,
70: Label dstx 0 ,
1.6 jwilke 71: "Next" , jmp ,
72: Label data-stack 50 cells allot
73: Label data-stack-top 2 cells allot
74: Label return-stack 50 cells allot
75: Label return-stack-top 2 cells allot
76:
77: End-Label
78:
79: UNLOCK
80: ( saved-region ) activate
81: LOCK
1.2 pazsan 82:
83: \ Up to here it's self modified
1.6 jwilke 84: Label IntoForth
85: \ Transfer VM registers initial values
86: RP' , RP ,
87: SP' , SP ,
88: IP' , IP ,
89: UP' , UP , \ useless since UP is initialized by gforth boot
90: ""Next"" , dstx 1 + ,
91: #0 , dstx 2 + ,
1.2 pazsan 92:
1.6 jwilke 93: Label Next #0 , add , \ clear carry
1.1 pazsan 94: IP , shr ,
95: sym Next
1.2 pazsan 96: *accu , W ,
1.1 pazsan 97: #1 , add ,
98: accu , add ,
99: accu , IP ,
1.2 pazsan 100: Label Next1 W , shr ,
101: *accu , shr ,
1.1 pazsan 102: accu , jmp ,
1.6 jwilke 103:
1.2 pazsan 104: Label "xmov" srcx ,
1.6 jwilke 105: End-Label
1.2 pazsan 106:
1.6 jwilke 107: IntoForth "IntoForth" 2* !
108: Next "Next" 2* !
109: Next1 "Next1" 2* !
1.1 pazsan 110:
1.6 jwilke 111: has? PrimTrace [IF]
1.1 pazsan 112: Label "0" '< ,
113: Label "1" '1 ,
114: Label "2" '2 ,
115: Label "3" '3 ,
116: Label "4" '4 ,
117: Label "5" '5 ,
118: Label "6" '6 ,
119: Label "A" 'A ,
120: Label "B" 'B ,
121: Label "C" 'C ,
122: Label "D" 'D ,
123: Label "E" 'E ,
124: Label "F" '> ,
125: Label "?" '? ,
126: Label "+" '+ ,
127: Label "/" '/ ,
128: Label "H" 'H ,
129: Label "I" 'I ,
130: Label "J" 'J ,
131: Label "K" 'K ,
132: Label "L" 'L ,
133: Label "M" 'M ,
134: Label "N" 'N ,
135: Label "O" 'O ,
136: Label "P" 'P ,
137: Label "Q" 'Q ,
138: Label "R" 'R ,
139: Label "S" 'S ,
140: Label "T" 'T ,
141: Label "#" '# ,
1.6 jwilke 142: End-Label
143: [THEN]
1.1 pazsan 144:
145:
1.8 jwilke 146: Code: :docol
147: ': dout
1.1 pazsan 148: RP , accu ,
149: #1 , sub ,
150: accu , RP ,
1.2 pazsan 151: IP , *accu ,
1.1 pazsan 152: W , accu ,
153: #4 , add ,
154: accu , IP ,
155: "Next" , jmp ,
156: end-code
157:
1.8 jwilke 158: Code: :docon
159: '1 dout
1.2 pazsan 160: #0 , add ,
161: W , shr ,
162: #2 , add ,
163: *accu , t0 ,
1.1 pazsan 164: SP , accu ,
165: #1 , sub ,
166: accu , SP ,
1.2 pazsan 167: t0 , *accu ,
1.1 pazsan 168: "Next" , jmp ,
169: end-code
170:
1.8 jwilke 171: Code: :dovar
172: '2 dout
1.2 pazsan 173: W , accu ,
174: #4 , add ,
175: accu , t0 ,
1.1 pazsan 176: SP , accu ,
177: #1 , sub ,
178: accu , SP ,
1.2 pazsan 179: t0 , *accu ,
1.1 pazsan 180: "Next" , jmp ,
181: end-code
182:
1.8 jwilke 183: Code: :douser
184: '3 dout
1.1 pazsan 185: #0 , add ,
186: W , shr ,
187: #2 , add ,
1.2 pazsan 188: *accu , accu ,
1.1 pazsan 189: UP , add ,
1.2 pazsan 190: accu , t0 ,
191: SP , accu ,
192: #1 , sub ,
193: accu , SP ,
194: t0 , *accu ,
1.1 pazsan 195: "Next" , jmp ,
196: end-code
197:
1.8 jwilke 198: Code: :dodefer
199: '4 dout
1.1 pazsan 200: #0 , add ,
201: W , shr ,
202: #2 , add ,
1.2 pazsan 203: *accu , W ,
1.1 pazsan 204: "Next1" , jmp ,
205: end-code
206:
1.8 jwilke 207: Code: :dofield
208: '5 dout
1.1 pazsan 209: #0 , add ,
210: W , shr ,
211: #2 , add ,
1.2 pazsan 212: *accu , accu ,
213: accu , t0 ,
214: SP , accu ,
215: *accu , accu ,
216: t0 , add ,
217: accu , t0 ,
218: SP , accu ,
219: t0 , *accu ,
1.1 pazsan 220: "Next" , jmp ,
221: end-code
222:
1.8 jwilke 223: Code: :dodoes
224: '6 dout
1.1 pazsan 225: RP , accu ,
226: #1 , sub ,
227: accu , RP ,
1.2 pazsan 228: IP , *accu ,
229: W , accu ,
230: #4 , add ,
231: accu , t0 ,
1.1 pazsan 232: SP , accu ,
233: #1 , sub ,
234: accu , SP ,
1.2 pazsan 235: t0 , *accu ,
236: t0 , accu ,
1.1 pazsan 237: #2 , sub ,
238: #0 , add ,
239: accu , shr ,
1.2 pazsan 240: *accu , IP ,
1.1 pazsan 241: "Next" , jmp ,
242: end-code
243:
1.4 jwilke 244: Code: :doesjump
245: end-code
246:
1.8 jwilke 247: Code execute
248: 'E dout
249: SP , accu ,
250: *accu , W ,
251: #1 , add ,
252: accu , SP ,
253: "Next1" , jmp ,
254: end-code
255:
256: Code ;s
257: '; dout
258: RP , accu ,
259: #1 , add ,
260: accu , RP ,
261: #1 , sub ,
262: *accu , IP ,
263: "Next" , jmp ,
264: end-code
265:
266: Code !
267: '! dout
1.1 pazsan 268: SP , accu ,
1.2 pazsan 269: *accu , t0 ,
1.1 pazsan 270: #1 , add ,
1.2 pazsan 271: *accu , t1 ,
1.1 pazsan 272: #1 , add ,
273: accu , SP ,
1.2 pazsan 274: t0 , shr ,
275: t1 , *accu ,
1.1 pazsan 276: "Next" , jmp ,
277: end-code
278:
1.8 jwilke 279: Code @
280: '@ dout
1.1 pazsan 281: #0 , add ,
1.2 pazsan 282: SP , accu ,
283: *accu , shr ,
284: *accu , t0 ,
285: SP , accu ,
286: t0 , *accu ,
1.1 pazsan 287: "Next" , jmp ,
288: end-code
289:
1.8 jwilke 290: Code ?branch
291: '? dout
1.1 pazsan 292: #0 , add ,
293: IP , shr ,
1.2 pazsan 294: accu , t0 ,
1.1 pazsan 295: #1 , add ,
296: accu , add ,
297: accu , IP ,
1.8 jwilke 298: SP , accu ,
299: *accu , t1 ,
1.1 pazsan 300: #1 , add ,
301: accu , SP ,
1.8 jwilke 302: t1 , accu ,
1.1 pazsan 303: pc+4 , jz ,
304: "Next" , jmp ,
1.8 jwilke 305: '~ dout
1.2 pazsan 306: t0 , accu ,
1.11 ! pazsan 307: *accu , IP ,
1.1 pazsan 308: "Next" , jmp ,
309: end-code
310:
1.8 jwilke 311: Code branch
312: 'b dout
1.1 pazsan 313: #0 , add ,
314: IP , shr ,
1.11 ! pazsan 315: *accu , IP ,
1.1 pazsan 316: "Next" , jmp ,
317: end-code
318:
1.8 jwilke 319: Code (loop)
320: 'l dout
1.1 pazsan 321: #0 , add ,
322: IP , shr ,
1.2 pazsan 323: *accu , t0 ,
1.1 pazsan 324: #1 , add ,
325: accu , add ,
326: accu , IP ,
327: RP , accu ,
1.2 pazsan 328: *accu , t2 ,
1.1 pazsan 329: #1 , add ,
1.2 pazsan 330: *accu , t3 ,
331: t2 , accu ,
1.1 pazsan 332: #1 , add ,
1.2 pazsan 333: accu , t1 ,
334: RP , accu ,
335: t1 , *accu ,
336: t1 , accu ,
337: t3 , sub ,
1.1 pazsan 338: "Next" , jz ,
1.2 pazsan 339: t0 , accu ,
1.11 ! pazsan 340: *accu , IP ,
! 341: "Next" , jmp ,
1.1 pazsan 342: end-code
343:
1.8 jwilke 344: Code xor
345: 'x dout
1.1 pazsan 346: SP , accu ,
1.2 pazsan 347: *accu , t0 ,
1.1 pazsan 348: #1 , add ,
349: accu , SP ,
1.2 pazsan 350: *accu , accu ,
351: t0 , xor ,
352: accu , t0 ,
353: SP , accu ,
354: t0 , *accu ,
1.1 pazsan 355: "Next" , jmp ,
356: end-code
357:
1.8 jwilke 358: Code or
359: 'o dout
1.1 pazsan 360: SP , accu ,
1.2 pazsan 361: *accu , t0 ,
1.1 pazsan 362: #1 , add ,
363: accu , SP ,
1.2 pazsan 364: *accu , accu ,
365: t0 , or ,
366: accu , t0 ,
367: SP , accu ,
368: t0 , *accu ,
1.1 pazsan 369: "Next" , jmp ,
370: end-code
371:
1.8 jwilke 372: Code and
373: 'a dout
1.1 pazsan 374: SP , accu ,
1.2 pazsan 375: *accu , t0 ,
1.1 pazsan 376: #1 , add ,
377: accu , SP ,
1.2 pazsan 378: *accu , accu ,
379: t0 , and ,
380: accu , t0 ,
381: SP , accu ,
382: t0 , *accu ,
1.1 pazsan 383: "Next" , jmp ,
384: end-code
385:
1.8 jwilke 386: Code +
387: '+ dout
1.1 pazsan 388: SP , accu ,
1.2 pazsan 389: *accu , t0 ,
1.1 pazsan 390: #1 , add ,
391: accu , SP ,
1.2 pazsan 392: *accu , accu ,
393: t0 , add ,
394: accu , t0 ,
395: SP , accu ,
396: t0 , *accu ,
1.1 pazsan 397: "Next" , jmp ,
398: end-code
399:
1.8 jwilke 400: Code -
401: '- dout
1.1 pazsan 402: SP , accu ,
1.2 pazsan 403: *accu , t0 ,
1.1 pazsan 404: #1 , add ,
405: accu , SP ,
1.2 pazsan 406: *accu , accu ,
407: t0 , sub ,
408: accu , t0 ,
409: SP , accu ,
410: t0 , *accu ,
1.1 pazsan 411: "Next" , jmp ,
412: end-code
413:
1.8 jwilke 414: Code 2/
415: '/ dout
1.1 pazsan 416: #0 , add ,
1.2 pazsan 417: SP , accu ,
418: *accu , accu ,
1.1 pazsan 419: PC+6 , js ,
420: accu , shr ,
421: PC+6 , jmp ,
422: accu , shr ,
423: #$8000 , or ,
1.2 pazsan 424: accu , t0 ,
425: SP , accu ,
426: t0 , *accu ,
1.1 pazsan 427: "Next" , jmp ,
428: end-code
429:
1.8 jwilke 430: Code 0=
431: '° dout
1.2 pazsan 432: SP , accu ,
433: *accu , accu ,
1.1 pazsan 434: ZF , accu ,
1.2 pazsan 435: #1 , xor ,
436: #1 , sub ,
437: accu , t0 ,
438: SP , accu ,
439: t0 , *accu ,
1.1 pazsan 440: "Next" , jmp ,
441: end-code
442:
1.8 jwilke 443: Code 0<>
444: '% dout
1.2 pazsan 445: SP , accu ,
446: *accu , accu ,
1.1 pazsan 447: ZF , accu ,
1.2 pazsan 448: #1 , sub ,
449: accu , t0 ,
450: SP , accu ,
451: t0 , *accu ,
1.1 pazsan 452: "Next" , jmp ,
453: end-code
454:
1.8 jwilke 455: Code =
456: '= dout
1.1 pazsan 457: SP , accu ,
1.2 pazsan 458: *accu , t0 ,
1.1 pazsan 459: #1 , add ,
460: accu , SP ,
1.2 pazsan 461: *accu , accu ,
462: t0 , sub ,
1.1 pazsan 463: ZF , accu ,
1.2 pazsan 464: #1 , xor ,
465: #1 , sub ,
466: accu , t0 ,
467: SP , accu ,
468: t0 , *accu ,
1.1 pazsan 469: "Next" , jmp ,
470: end-code
471:
1.8 jwilke 472: Code u<
473: '< dout
1.1 pazsan 474: SP , accu ,
1.2 pazsan 475: *accu , t0 ,
1.1 pazsan 476: #1 , add ,
477: accu , SP ,
1.2 pazsan 478: *accu , accu ,
479: t0 , sub ,
1.1 pazsan 480: CF , accu ,
1.2 pazsan 481: #1 , xor ,
482: #1 , sub ,
483: accu , t0 ,
484: SP , accu ,
485: t0 , *accu ,
1.1 pazsan 486: "Next" , jmp ,
487: end-code
488:
1.8 jwilke 489: Code 1+
490: 'p dout
1.2 pazsan 491: SP , accu ,
492: *accu , accu ,
1.1 pazsan 493: #1 , add ,
1.2 pazsan 494: accu , t0 ,
495: SP , accu ,
496: t0 , *accu ,
1.1 pazsan 497: "Next" , jmp ,
498: end-code
499:
1.8 jwilke 500: Code cell+
501: 'P dout
1.2 pazsan 502: SP , accu ,
503: *accu , accu ,
1.1 pazsan 504: #2 , add ,
1.2 pazsan 505: accu , t0 ,
506: SP , accu ,
507: t0 , *accu ,
1.1 pazsan 508: "Next" , jmp ,
509: end-code
510:
1.8 jwilke 511: Code 8<<
512: '{ dout
1.1 pazsan 513: #0 , add ,
514: SP , accu ,
1.2 pazsan 515: *accu , accu ,
1.1 pazsan 516: accu , add ,
517: accu , add ,
518: accu , add ,
519: accu , add ,
520: accu , add ,
521: accu , add ,
522: accu , add ,
523: accu , add ,
1.2 pazsan 524: accu , t0 ,
525: SP , accu ,
526: t0 , *accu ,
1.1 pazsan 527: "Next" , jmp ,
528: end-code
529:
1.8 jwilke 530: Code 8>>
531: '{ dout
1.1 pazsan 532: #0 , add ,
533: SP , accu ,
1.2 pazsan 534: Label c-even@ *accu , shr ,
1.1 pazsan 535: accu , shr ,
536: accu , shr ,
537: accu , shr ,
538: accu , shr ,
539: accu , shr ,
540: accu , shr ,
541: accu , shr ,
542: #FF , and ,
1.2 pazsan 543: accu , t0 ,
544: SP , accu ,
545: t0 , *accu ,
1.1 pazsan 546: "Next" , jmp ,
547: Label "c-even@" c-even@ ,
548: end-code
549:
1.8 jwilke 550: Code c@
551: 'c dout
1.1 pazsan 552: #0 , add ,
1.2 pazsan 553: SP , accu ,
554: *accu , shr ,
1.1 pazsan 555: PC+4 , jc ,
556: "c-even@" , jmp ,
1.2 pazsan 557: *accu , accu ,
1.1 pazsan 558: #FF , and ,
1.2 pazsan 559: accu , t0 ,
560: SP , accu ,
561: t0 , *accu ,
1.1 pazsan 562: "Next" , jmp ,
1.10 jwilke 563: end-code
1.1 pazsan 564:
1.8 jwilke 565: Code 2*
566: '* dout
1.2 pazsan 567: SP , accu ,
568: *accu , accu ,
1.1 pazsan 569: accu , add ,
1.2 pazsan 570: accu , t0 ,
571: SP , accu ,
572: t0 , *accu ,
1.1 pazsan 573: "Next" , jmp ,
574: end-code
575:
1.8 jwilke 576: Code >r
577: 'R dout
1.2 pazsan 578: SP , accu ,
579: *accu , t0 ,
580: #1 , add ,
581: accu , SP ,
1.1 pazsan 582: RP , accu ,
583: #1 , sub ,
584: accu , RP ,
1.2 pazsan 585: t0 , *accu ,
1.1 pazsan 586: "Next" , jmp ,
587: end-code
588:
1.8 jwilke 589: Code r>
590: 'r dout
1.1 pazsan 591: RP , accu ,
1.2 pazsan 592: *accu , t0 ,
1.1 pazsan 593: #1 , add ,
594: accu , RP ,
595: SP , accu ,
596: #1 , sub ,
597: accu , SP ,
1.2 pazsan 598: t0 , *accu ,
1.1 pazsan 599: "Next" , jmp ,
600: end-code
601:
1.8 jwilke 602: Code sp@
603: 's dout
1.1 pazsan 604: SP , accu ,
1.2 pazsan 605: accu , add ,
606: accu , t0 ,
607: SP , accu ,
1.1 pazsan 608: #1 , sub ,
609: accu , SP ,
1.2 pazsan 610: t0 , *accu ,
1.1 pazsan 611: "Next" , jmp ,
612: end-code
613:
1.8 jwilke 614: Code sp!
615: 'S dout
1.1 pazsan 616: #0 , add ,
1.2 pazsan 617: SP , accu ,
618: *accu , shr ,
1.1 pazsan 619: accu , SP ,
620: "Next" , jmp ,
621: end-code
622:
1.8 jwilke 623: Code rp@
1.2 pazsan 624: RP , accu ,
625: accu , add ,
626: accu , t0 ,
1.1 pazsan 627: SP , accu ,
628: #1 , sub ,
629: accu , SP ,
1.2 pazsan 630: t0 , *accu ,
1.1 pazsan 631: "Next" , jmp ,
632: end-code
633:
634: Code rp! sym rp!
635: SP , accu ,
1.2 pazsan 636: *accu , t0 ,
1.1 pazsan 637: #1 , add ,
638: accu , SP ,
639: #0 , add ,
1.2 pazsan 640: t0 , shr ,
1.1 pazsan 641: accu , RP ,
642: "Next" , jmp ,
643: end-code
644:
1.8 jwilke 645: Code drop
646: 'd dout
1.1 pazsan 647: SP , accu ,
648: #1 , add ,
649: accu , SP ,
650: "Next" , jmp ,
651: end-code
652:
1.8 jwilke 653: Code lit
654: '# dout
1.1 pazsan 655: IP , shr ,
1.2 pazsan 656: *accu , t0 ,
1.1 pazsan 657: #1 , add ,
658: accu , add ,
659: accu , IP ,
1.2 pazsan 660: SP , accu ,
661: #1 , sub ,
662: accu , SP ,
663: t0 , *accu ,
1.1 pazsan 664: "Next" , jmp ,
665: end-code
666:
1.8 jwilke 667: Code dup
668: 'u dout
1.1 pazsan 669: SP , accu ,
1.2 pazsan 670: *accu , t0 ,
1.1 pazsan 671: #1 , sub ,
672: accu , SP ,
1.2 pazsan 673: t0 , *accu ,
1.1 pazsan 674: "Next" , jmp ,
675: end-code
676:
1.8 jwilke 677: Code r@
678: 'I dout
1.2 pazsan 679: RP , accu ,
680: *accu , t0 ,
1.1 pazsan 681: SP , accu ,
682: #1 , sub ,
683: accu , SP ,
1.2 pazsan 684: t0 , *accu ,
1.1 pazsan 685: "Next" , jmp ,
686: end-code
687:
1.8 jwilke 688: Code over
689: 'v dout
1.1 pazsan 690: SP , accu ,
691: #1 , add ,
1.2 pazsan 692: *accu , t0 ,
1.1 pazsan 693: #2 , sub ,
694: accu , SP ,
1.2 pazsan 695: t0 , *accu ,
1.1 pazsan 696: "Next" , jmp ,
697: end-code
698:
1.8 jwilke 699: Code swap
700: 'w dout
1.1 pazsan 701: SP , accu ,
1.2 pazsan 702: *accu , t0 ,
1.1 pazsan 703: #1 , add ,
1.2 pazsan 704: *accu , t1 ,
705: t0 , *accu ,
706: #1 , sub ,
707: t1 , *accu ,
1.1 pazsan 708: "Next" , jmp ,
709: end-code
710:
1.8 jwilke 711: Code d+
1.1 pazsan 712: SP , accu ,
1.2 pazsan 713: *accu , t0 ,
1.1 pazsan 714: #1 , add ,
1.2 pazsan 715: *accu , t1 ,
1.1 pazsan 716: #1 , add ,
1.2 pazsan 717: *accu , t2 ,
1.1 pazsan 718: accu , SP ,
719: #1 , add ,
1.2 pazsan 720: *accu , accu ,
721: t1 , add ,
722: accu , t1 ,
1.1 pazsan 723: CF , accu ,
1.2 pazsan 724: t2 , add ,
725: t0 , add ,
726: accu , t0 ,
727: SP , accu ,
728: t0 , *accu ,
729: #1 , add ,
730: t1 , *accu ,
1.1 pazsan 731: "Next" , jmp ,
732: end-code
733:
734: Label cf1 0 ,
1.10 jwilke 735: End-Label
1.1 pazsan 736: Code d2*+ sym d2*+
1.2 pazsan 737: SP , accu ,
738: Label >d2*+ *accu , t0 ,
739: #1 , add ,
740: *accu , t1 ,
1.1 pazsan 741: #1 , add ,
1.2 pazsan 742: *accu , t2 ,
743: accu , t3 ,
744: t0 , accu ,
745: t2 , add ,
746: t2 , add ,
747: accu , t2 ,
748: CF , accu ,
749: t1 , add ,
750: t1 , add ,
751: accu , t0 ,
752: t1 , accu ,
1.1 pazsan 753: #$8000 , and ,
1.2 pazsan 754: accu , t1 ,
755: t3 , accu ,
756: t2 , *accu ,
757: #1 , sub ,
758: t0 , *accu ,
759: #1 , sub ,
760: t1 , *accu ,
1.1 pazsan 761: "Next" , jmp ,
762: end-code
763:
764: Label "d2*+" >d2*+ ,
1.10 jwilke 765: End-Label
1.1 pazsan 766: Code /modstep ( ud c R: u -- ud-?u 0/1 )
767: sym /modstep
768: SP , accu ,
1.2 pazsan 769: *accu , t0 ,
770: #1 , add ,
771: *accu , t1 ,
1.1 pazsan 772: #1 , add ,
1.2 pazsan 773: *accu , t2 ,
774: t2 , accu ,
775: t0 , sub ,
776: accu , t0 ,
1.1 pazsan 777: CF , accu ,
1.2 pazsan 778: t1 , or ,
1.1 pazsan 779: PC+6 , JZ ,
780: #0 , accu ,
781: PC+6 , jmp ,
1.2 pazsan 782: t0 , t2 ,
1.1 pazsan 783: #1 , accu ,
1.2 pazsan 784: accu , t0 ,
785: SP , accu ,
786: #1 , add ,
787: t0 , *accu ,
788: #1 , add ,
789: t2 , *accu ,
790: #1 , sub ,
1.1 pazsan 791: "d2*+" , jmp ,
792: end-code
1.8 jwilke 793:
794: Code (key)
795: SP , accu ,
796: #1 , sub ,
797: accu , SP ,
798: rxd , *accu ,
799: "Next" , jmp ,
800: end-code
801:
802: Code (key?)
803: rx? , accu ,
804: ZF , accu ,
805: #1 , sub ,
806: accu , t0 ,
807: SP , accu ,
808: #1 , sub ,
809: accu , SP ,
810: t0 , *accu ,
811: "Next" , jmp ,
812: end-code
813:
814: Code (emit)
815: SP , accu ,
816: *accu , txd ,
817: #1 , add ,
818: accu , SP ,
819: "Next" , jmp ,
820: end-code
1.1 pazsan 821:
822: UP 2* Constant UP
823:
1.5 pazsan 824: : up@ up @ ;
825: : up! up ! ;
1.1 pazsan 826:
1.8 jwilke 827: \ include ./key.fs
828: include ./optcmove.fs
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>