1 [*] DP=TEMP, which can be used instead of DP
3 [.] replace "ERROR" with "THROW", and setup either high-level CATCH, or
4 make "THROW" to do what "ERROR" does now if there is no exception frame
6 [.] vectorize (CREATE) and other low-level word creation words,
7 so they can be changed for metacompiler.
14 and others in "urforth0_w_wordlist.asm"
16 if we will ever change the word header format/vocabulary layout, more words
17 should be changed, i guess
19 switch (VOC-LINK) in metacompiling mode
21 [*] add "OVERRIDE" word to override Forth words. it should work like this:
22 : newname ( ... old-xtoken )
23 check-some-condition if
29 OVERRIDE oldname newname
31 ' oldname ' newname (OVERRIDE)
32 i.e. new word gets some execution token for the previous word, which can be
33 called with OVERRIDE-EXECUTE (note that simple EXECUTE will not work!)
35 this can be used to override necessary words in metacompiler
37 [.] MARKER ( -- ) \ name
38 creater word-marker with the current state of vocabularies and search
39 order (as it was before creating a marekr).
40 on execution, this word will restore everything (effectively kills itself).
42 [*] U>D, D>S, D>U, C>S, C>U, S>C, U>C
43 [*] ROL, ROR -- named LROTATE and RROTATE
44 [*] SHL -> LSHIFT, SHR -> RSHIFT
47 [.] port spf_floatkern.f
49 [*] use CDQ in div and mod
52 [.] extra return stack words
53 CODE DRMOVE ( x1 ... xn n*4 -- )
54 \ ÐÅÒÅÎÅÓÔÉ n ÞÉÓÅÌ ÓÏ ÓÔÅËÁ ÄÁÎÎÙÈ ÎÁ ÓÔÅË ×ÏÚ×ÒÁÔÏ×
55 POP EDX \ ÁÄÒÅÓ ×ÏÚ×ÒÁÔÁ
67 CODE NR> ( R: x1 ... xn n -- D: x1 ... xn n )
68 \ ðÅÒÅÎÅÓÔÉ n ÞÉÓÅÌ ÓÏ ÓÔÅËÁ ×ÏÚ×ÒÁÔÏ× ÎÁ ÓÔÅË ÄÁÎÎÙÈ
69 \ åÓÌÉ n=0 ×ÏÚ×ÒÁÔÉÔØ 0
70 POP EDX \ ÁÄÒÅÓ ×ÏÚ×ÒÁÔÁ
91 CODE N>R ( D: x1 ... xn n -- R: x1 ... xn n )
92 \ ÐÅÒÅÎÅÓÔÉ n ÞÉÓÅÌ ÓÏ ÓÔÅËÁ ÄÁÎÎÙÈ ÎÁ ÓÔÅË ×ÏÚ×ÒÁÔÏ×
97 POP EDX \ ÁÄÒÅÓ ×ÏÚ×ÒÁÔÁ
109 CODE NRCOPY ( D: i*x i -- D: i*x i R: i*x i )
110 \ ÓËÏÐÉÒÏ×ÁÔØ n ÞÉÓÅÌ ÓÏ ÓÔÅËÁ ÄÁÎÎÙÈ ÎÁ ÓÔÅË ×ÏÚ×ÒÁÔÏ×
114 POP EDX \ ÁÄÒÅÓ ×ÏÚ×ÒÁÔÁ
126 CODE RP+@ ( offs -- x )
127 \ ×ÚÑÔØ ÞÉÓÌÏ ÓÏ ÓÍÅÝÅÎÉÅÍ offs ÂÁÊÔ ÏÔ ×ÅÒÛÉÎÙ ÓÔÅËÁ ×ÏÚ×ÒÁÔÏ× (0 RP+@ == RP@ @)
128 8B C, 44 C, 04 C, 04 C, \ MOV EAX, 4 [ESP] [EAX]
132 CODE RP+ ( offs -- addr )
133 \ ×ÚÑÔØ ÁÄÒÅÓ ÓÏ ÓÍÅÝÅÎÉÅÍ offs ÂÁÊÔ ÏÔ ×ÅÒÛÉÎÙ ÓÔÅËÁ ×ÏÚ×ÒÁÔÏ×
134 8D C, 44 C, 04 C, 04 C, \ LEA EAX, 4 [ESP] [EAX]
138 CODE RP+! ( x offs -- )
139 \ ÚÁÐÉÓÁÔØ ÞÉÓÌÏ x ÐÏ ÓÍÅÝÅÎÉÀ offs ÂÁÊÔ ÏÔ ×ÅÒÛÉÎÙ ÓÔÅËÁ ×ÏÚ×ÒÁÔÏ×
141 89 C, 5C C, 04 C, 04 C, \ MOV 4 [ESP] [EAX], EBX
147 CODE RALLOT ( n -- addr )
148 \ ÚÁÒÅÚÅÒ×ÉÒÏ×ÁÔØ n ÑÞÅÅË ÎÁ ÓÔÅËÅ ×ÏÚ×ÒÁÔÏ×,
149 \ ÓÄÅÌÁÅÍ Ó ÉÎÉÃÉÁÌÉÚÁÃÉÅÊ (Á ÔÏ ÅÓÌÉ ÂÏÌØÛÅ 8ë ×ÙÄÅÌÉÍ, exception ÍÏÖÅÔ)
160 CODE (RALLOT) ( n -- )
161 \ ÚÁÒÅÚÅÒ×ÉÒÏ×ÁÔØ n ÑÞÅÅË ÎÁ ÓÔÅËÅ ×ÏÚ×ÒÁÔÏ×
174 \ ×ÅÒÎÕÔØ n ÑÞÅÅË ÓÔÅËÁ ×ÏÚ×ÒÁÔÏ×
176 LEA ESP, [ESP] [EAX*4]
182 CODE (LocalsExit) ( -- )
183 \ ×ÅÒÎÕÔØ ÐÁÍÑÔØ × ÓÔÅË ×Ï×ÒÁÔÏ×, ÞÉÓÌÏ ÂÁÊÔ ÌÅÖÉÔ ÎÁ ÓÔÅËÅ