Annotation of gforth/arch/misc/prim.fs, revision 1.14
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:
1.12 pazsan 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.12 pazsan 323: accu , t0 ,
1.1 pazsan 324: #1 , add ,
325: accu , add ,
1.12 pazsan 326: accu , IP ,
327:
1.1 pazsan 328: RP , accu ,
1.2 pazsan 329: *accu , t2 ,
1.1 pazsan 330: #1 , add ,
1.2 pazsan 331: *accu , t3 ,
332: t2 , accu ,
1.1 pazsan 333: #1 , add ,
1.2 pazsan 334: accu , t1 ,
335: RP , accu ,
336: t1 , *accu ,
337: t1 , accu ,
338: t3 , sub ,
1.1 pazsan 339: "Next" , jz ,
1.2 pazsan 340: t0 , accu ,
1.11 pazsan 341: *accu , IP ,
342: "Next" , jmp ,
1.1 pazsan 343: end-code
344:
1.8 jwilke 345: Code xor
346: 'x dout
1.1 pazsan 347: SP , accu ,
1.2 pazsan 348: *accu , t0 ,
1.1 pazsan 349: #1 , add ,
350: accu , SP ,
1.2 pazsan 351: *accu , accu ,
352: t0 , xor ,
353: accu , t0 ,
354: SP , accu ,
355: t0 , *accu ,
1.1 pazsan 356: "Next" , jmp ,
357: end-code
358:
1.8 jwilke 359: Code or
360: 'o dout
1.1 pazsan 361: SP , accu ,
1.2 pazsan 362: *accu , t0 ,
1.1 pazsan 363: #1 , add ,
364: accu , SP ,
1.2 pazsan 365: *accu , accu ,
366: t0 , or ,
367: accu , t0 ,
368: SP , accu ,
369: t0 , *accu ,
1.1 pazsan 370: "Next" , jmp ,
371: end-code
372:
1.8 jwilke 373: Code and
374: 'a dout
1.1 pazsan 375: SP , accu ,
1.2 pazsan 376: *accu , t0 ,
1.1 pazsan 377: #1 , add ,
378: accu , SP ,
1.2 pazsan 379: *accu , accu ,
380: t0 , and ,
381: accu , t0 ,
382: SP , accu ,
383: t0 , *accu ,
1.1 pazsan 384: "Next" , jmp ,
385: end-code
386:
1.8 jwilke 387: Code +
388: '+ dout
1.1 pazsan 389: SP , accu ,
1.2 pazsan 390: *accu , t0 ,
1.1 pazsan 391: #1 , add ,
392: accu , SP ,
1.2 pazsan 393: *accu , accu ,
394: t0 , add ,
395: accu , t0 ,
396: SP , accu ,
397: t0 , *accu ,
1.1 pazsan 398: "Next" , jmp ,
399: end-code
400:
1.8 jwilke 401: Code -
402: '- dout
1.1 pazsan 403: SP , accu ,
1.2 pazsan 404: *accu , t0 ,
1.1 pazsan 405: #1 , add ,
406: accu , SP ,
1.2 pazsan 407: *accu , accu ,
408: t0 , sub ,
409: accu , t0 ,
410: SP , accu ,
411: t0 , *accu ,
1.1 pazsan 412: "Next" , jmp ,
413: end-code
414:
1.8 jwilke 415: Code 2/
416: '/ dout
1.1 pazsan 417: #0 , add ,
1.2 pazsan 418: SP , accu ,
419: *accu , accu ,
1.1 pazsan 420: PC+6 , js ,
421: accu , shr ,
422: PC+6 , jmp ,
423: accu , shr ,
424: #$8000 , or ,
1.2 pazsan 425: accu , t0 ,
426: SP , accu ,
427: t0 , *accu ,
1.1 pazsan 428: "Next" , jmp ,
429: end-code
430:
1.8 jwilke 431: Code 0=
432: '° dout
1.2 pazsan 433: SP , accu ,
434: *accu , accu ,
1.1 pazsan 435: ZF , accu ,
1.2 pazsan 436: #1 , xor ,
437: #1 , sub ,
438: accu , t0 ,
439: SP , accu ,
440: t0 , *accu ,
1.1 pazsan 441: "Next" , jmp ,
442: end-code
443:
1.8 jwilke 444: Code 0<>
445: '% dout
1.2 pazsan 446: SP , accu ,
447: *accu , accu ,
1.1 pazsan 448: ZF , accu ,
1.2 pazsan 449: #1 , sub ,
450: accu , t0 ,
451: SP , accu ,
452: t0 , *accu ,
1.1 pazsan 453: "Next" , jmp ,
454: end-code
455:
1.8 jwilke 456: Code =
457: '= dout
1.1 pazsan 458: SP , accu ,
1.2 pazsan 459: *accu , t0 ,
1.1 pazsan 460: #1 , add ,
461: accu , SP ,
1.2 pazsan 462: *accu , accu ,
463: t0 , sub ,
1.1 pazsan 464: ZF , accu ,
1.2 pazsan 465: #1 , xor ,
466: #1 , sub ,
467: accu , t0 ,
468: SP , accu ,
469: t0 , *accu ,
1.1 pazsan 470: "Next" , jmp ,
471: end-code
472:
1.8 jwilke 473: Code u<
474: '< dout
1.1 pazsan 475: SP , accu ,
1.2 pazsan 476: *accu , t0 ,
1.1 pazsan 477: #1 , add ,
478: accu , SP ,
1.2 pazsan 479: *accu , accu ,
480: t0 , sub ,
1.1 pazsan 481: CF , accu ,
1.2 pazsan 482: #1 , xor ,
483: #1 , sub ,
484: accu , t0 ,
485: SP , accu ,
486: t0 , *accu ,
1.1 pazsan 487: "Next" , jmp ,
488: end-code
489:
1.8 jwilke 490: Code 1+
491: 'p dout
1.2 pazsan 492: SP , accu ,
493: *accu , accu ,
1.1 pazsan 494: #1 , add ,
1.2 pazsan 495: accu , t0 ,
496: SP , accu ,
497: t0 , *accu ,
1.1 pazsan 498: "Next" , jmp ,
499: end-code
500:
1.8 jwilke 501: Code cell+
502: 'P dout
1.2 pazsan 503: SP , accu ,
504: *accu , accu ,
1.1 pazsan 505: #2 , add ,
1.2 pazsan 506: accu , t0 ,
507: SP , accu ,
508: t0 , *accu ,
1.1 pazsan 509: "Next" , jmp ,
510: end-code
511:
1.8 jwilke 512: Code 8<<
513: '{ dout
1.1 pazsan 514: #0 , add ,
515: SP , accu ,
1.2 pazsan 516: *accu , accu ,
1.1 pazsan 517: accu , add ,
518: accu , add ,
519: accu , add ,
520: accu , add ,
521: accu , add ,
522: accu , add ,
523: accu , add ,
524: accu , add ,
1.2 pazsan 525: accu , t0 ,
526: SP , accu ,
527: t0 , *accu ,
1.1 pazsan 528: "Next" , jmp ,
529: end-code
530:
1.8 jwilke 531: Code 8>>
532: '{ dout
1.1 pazsan 533: #0 , add ,
534: SP , accu ,
1.2 pazsan 535: Label c-even@ *accu , shr ,
1.1 pazsan 536: accu , shr ,
537: accu , shr ,
538: accu , shr ,
539: accu , shr ,
540: accu , shr ,
541: accu , shr ,
542: accu , shr ,
543: #FF , and ,
1.2 pazsan 544: accu , t0 ,
545: SP , accu ,
546: t0 , *accu ,
1.1 pazsan 547: "Next" , jmp ,
548: Label "c-even@" c-even@ ,
549: end-code
550:
1.8 jwilke 551: Code c@
552: 'c dout
1.1 pazsan 553: #0 , add ,
1.2 pazsan 554: SP , accu ,
555: *accu , shr ,
1.1 pazsan 556: PC+4 , jc ,
557: "c-even@" , jmp ,
1.2 pazsan 558: *accu , accu ,
1.1 pazsan 559: #FF , and ,
1.2 pazsan 560: accu , t0 ,
561: SP , accu ,
562: t0 , *accu ,
1.1 pazsan 563: "Next" , jmp ,
1.10 jwilke 564: end-code
1.1 pazsan 565:
1.8 jwilke 566: Code 2*
567: '* dout
1.2 pazsan 568: SP , accu ,
569: *accu , accu ,
1.1 pazsan 570: accu , add ,
1.2 pazsan 571: accu , t0 ,
572: SP , accu ,
573: t0 , *accu ,
1.1 pazsan 574: "Next" , jmp ,
575: end-code
576:
1.8 jwilke 577: Code >r
578: 'R dout
1.2 pazsan 579: SP , accu ,
580: *accu , t0 ,
581: #1 , add ,
582: accu , SP ,
1.1 pazsan 583: RP , accu ,
584: #1 , sub ,
585: accu , RP ,
1.2 pazsan 586: t0 , *accu ,
1.1 pazsan 587: "Next" , jmp ,
588: end-code
589:
1.8 jwilke 590: Code r>
591: 'r dout
1.1 pazsan 592: RP , accu ,
1.2 pazsan 593: *accu , t0 ,
1.1 pazsan 594: #1 , add ,
595: accu , RP ,
596: SP , accu ,
597: #1 , sub ,
598: accu , SP ,
1.2 pazsan 599: t0 , *accu ,
1.1 pazsan 600: "Next" , jmp ,
601: end-code
602:
1.8 jwilke 603: Code sp@
604: 's dout
1.1 pazsan 605: SP , accu ,
1.2 pazsan 606: accu , add ,
607: accu , t0 ,
608: SP , accu ,
1.1 pazsan 609: #1 , sub ,
610: accu , SP ,
1.2 pazsan 611: t0 , *accu ,
1.1 pazsan 612: "Next" , jmp ,
613: end-code
614:
1.8 jwilke 615: Code sp!
616: 'S dout
1.1 pazsan 617: #0 , add ,
1.2 pazsan 618: SP , accu ,
619: *accu , shr ,
1.1 pazsan 620: accu , SP ,
621: "Next" , jmp ,
622: end-code
623:
1.8 jwilke 624: Code rp@
1.2 pazsan 625: RP , accu ,
626: accu , add ,
627: accu , t0 ,
1.1 pazsan 628: SP , accu ,
629: #1 , sub ,
630: accu , SP ,
1.2 pazsan 631: t0 , *accu ,
1.1 pazsan 632: "Next" , jmp ,
633: end-code
634:
635: Code rp! sym rp!
636: SP , accu ,
1.2 pazsan 637: *accu , t0 ,
1.1 pazsan 638: #1 , add ,
639: accu , SP ,
640: #0 , add ,
1.2 pazsan 641: t0 , shr ,
1.1 pazsan 642: accu , RP ,
643: "Next" , jmp ,
644: end-code
645:
1.8 jwilke 646: Code drop
647: 'd dout
1.1 pazsan 648: SP , accu ,
649: #1 , add ,
650: accu , SP ,
651: "Next" , jmp ,
652: end-code
653:
1.8 jwilke 654: Code lit
655: '# dout
1.1 pazsan 656: IP , shr ,
1.2 pazsan 657: *accu , t0 ,
1.1 pazsan 658: #1 , add ,
659: accu , add ,
660: accu , IP ,
1.2 pazsan 661: SP , accu ,
662: #1 , sub ,
663: accu , SP ,
664: t0 , *accu ,
1.1 pazsan 665: "Next" , jmp ,
666: end-code
667:
1.8 jwilke 668: Code dup
669: 'u dout
1.1 pazsan 670: SP , accu ,
1.2 pazsan 671: *accu , t0 ,
1.1 pazsan 672: #1 , sub ,
673: accu , SP ,
1.2 pazsan 674: t0 , *accu ,
1.1 pazsan 675: "Next" , jmp ,
676: end-code
677:
1.8 jwilke 678: Code r@
679: 'I dout
1.2 pazsan 680: RP , accu ,
681: *accu , t0 ,
1.1 pazsan 682: SP , accu ,
683: #1 , sub ,
684: accu , SP ,
1.2 pazsan 685: t0 , *accu ,
1.1 pazsan 686: "Next" , jmp ,
687: end-code
688:
1.8 jwilke 689: Code over
690: 'v dout
1.1 pazsan 691: SP , accu ,
692: #1 , add ,
1.2 pazsan 693: *accu , t0 ,
1.1 pazsan 694: #2 , sub ,
695: accu , SP ,
1.2 pazsan 696: t0 , *accu ,
1.1 pazsan 697: "Next" , jmp ,
698: end-code
699:
1.8 jwilke 700: Code swap
701: 'w dout
1.1 pazsan 702: SP , accu ,
1.2 pazsan 703: *accu , t0 ,
1.1 pazsan 704: #1 , add ,
1.2 pazsan 705: *accu , t1 ,
706: t0 , *accu ,
707: #1 , sub ,
708: t1 , *accu ,
1.1 pazsan 709: "Next" , jmp ,
710: end-code
711:
1.8 jwilke 712: Code d+
1.1 pazsan 713: SP , accu ,
1.2 pazsan 714: *accu , t0 ,
1.1 pazsan 715: #1 , add ,
1.2 pazsan 716: *accu , t1 ,
1.1 pazsan 717: #1 , add ,
1.2 pazsan 718: *accu , t2 ,
1.1 pazsan 719: accu , SP ,
720: #1 , add ,
1.2 pazsan 721: *accu , accu ,
722: t1 , add ,
723: accu , t1 ,
1.1 pazsan 724: CF , accu ,
1.2 pazsan 725: t2 , add ,
726: t0 , add ,
727: accu , t0 ,
728: SP , accu ,
729: t0 , *accu ,
730: #1 , add ,
731: t1 , *accu ,
1.1 pazsan 732: "Next" , jmp ,
733: end-code
734:
735: Label cf1 0 ,
1.10 jwilke 736: End-Label
1.1 pazsan 737: Code d2*+ sym d2*+
1.2 pazsan 738: SP , accu ,
739: Label >d2*+ *accu , t0 ,
740: #1 , add ,
741: *accu , t1 ,
1.1 pazsan 742: #1 , add ,
1.2 pazsan 743: *accu , t2 ,
744: accu , t3 ,
745: t0 , accu ,
746: t2 , add ,
747: t2 , add ,
748: accu , t2 ,
749: CF , accu ,
750: t1 , add ,
751: t1 , add ,
752: accu , t0 ,
753: t1 , accu ,
1.1 pazsan 754: #$8000 , and ,
1.2 pazsan 755: accu , t1 ,
756: t3 , accu ,
757: t2 , *accu ,
758: #1 , sub ,
759: t0 , *accu ,
760: #1 , sub ,
761: t1 , *accu ,
1.1 pazsan 762: "Next" , jmp ,
763: end-code
764:
765: Label "d2*+" >d2*+ ,
1.10 jwilke 766: End-Label
1.1 pazsan 767: Code /modstep ( ud c R: u -- ud-?u 0/1 )
768: sym /modstep
769: SP , accu ,
1.2 pazsan 770: *accu , t0 ,
771: #1 , add ,
772: *accu , t1 ,
1.1 pazsan 773: #1 , add ,
1.2 pazsan 774: *accu , t2 ,
775: t2 , accu ,
776: t0 , sub ,
777: accu , t0 ,
1.1 pazsan 778: CF , accu ,
1.2 pazsan 779: t1 , or ,
1.1 pazsan 780: PC+6 , JZ ,
781: #0 , accu ,
782: PC+6 , jmp ,
1.2 pazsan 783: t0 , t2 ,
1.1 pazsan 784: #1 , accu ,
1.2 pazsan 785: accu , t0 ,
786: SP , accu ,
787: #1 , add ,
788: t0 , *accu ,
789: #1 , add ,
790: t2 , *accu ,
791: #1 , sub ,
1.1 pazsan 792: "d2*+" , jmp ,
793: end-code
1.8 jwilke 794:
795: Code (key)
796: SP , accu ,
797: #1 , sub ,
798: accu , SP ,
799: rxd , *accu ,
800: "Next" , jmp ,
801: end-code
802:
803: Code (key?)
804: rx? , accu ,
805: ZF , accu ,
806: #1 , sub ,
807: accu , t0 ,
808: SP , accu ,
809: #1 , sub ,
810: accu , SP ,
811: t0 , *accu ,
812: "Next" , jmp ,
813: end-code
814:
815: Code (emit)
816: SP , accu ,
817: *accu , txd ,
818: #1 , add ,
819: accu , SP ,
820: "Next" , jmp ,
821: end-code
1.1 pazsan 822:
823: UP 2* Constant UP
824:
1.5 pazsan 825: : up@ up @ ;
826: : up! up ! ;
1.1 pazsan 827:
1.8 jwilke 828: \ include ./key.fs
829: include ./optcmove.fs
1.12 pazsan 830:
831: : (bye) 0 execute ;
832: : float+ 8 + ;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>